refactor: theme from lovable

This commit is contained in:
2026-05-01 13:45:28 -04:00
parent ace21f0467
commit 567d96cd07
316 changed files with 16572 additions and 162 deletions

2
.gitignore vendored
View File

@@ -22,4 +22,4 @@
!/wp-content/themes/
/wp-content/themes/*
!/wp-content/themes/.gitkeep
!/wp-content/themes/cascapedia/
!/wp-content/themes/cascapedia-st-jules/

20
.vscode/launch.json vendored Normal file
View File

@@ -0,0 +1,20 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Xdebug",
"pathMappings": {
"/var/www/html": "${workspaceFolder}/.."
},
"port": 9003,
"request": "launch",
"type": "php",
"xdebugSettings": {
"max_data": 0
}
}
]
}

View File

@@ -32,15 +32,11 @@
"lintfix": "vendor/bin/phpcbf"
},
"require": {
"lewebsimple/bricks-v2": "*",
"lewebsimple/advanced-custom-fields-pro": "*",
"lewebsimple/ithemes-security-pro": "*",
"lewebsimple/kaliroots": "*",
"lewebsimple/wp-offload-ses": "*",
"wpackagist-plugin/acf-extended": "*",
"wpackagist-plugin/clean-image-filenames": "*",
"wpackagist-plugin/disable-comments": "*",
"wpackagist-plugin/media-focus-point": "*",
"wpackagist-plugin/simple-custom-post-order": "*",
"wpackagist-plugin/user-switching": "*"
},
"require-dev": {

108
composer.lock generated
View File

@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "9e7b32f4f1942119dd04d27a6939e8c8",
"content-hash": "5a3da24d8abeb9e99f6f31797787cb3c",
"packages": [
{
"name": "composer/installers",
@@ -169,23 +169,6 @@
"type": "wordpress-plugin",
"time": "2026-04-02T12:52:02+00:00"
},
{
"name": "lewebsimple/bricks-v2",
"version": "v2.3.3",
"source": {
"type": "git",
"url": "ssh://git@gitea.websimple.com:222/wp-themes/bricks-v2.git",
"reference": "b542416d8657e176977bbd4e5538ee29c6b48403"
},
"dist": {
"type": "zip",
"url": "https://satis.ledevsimple.ca/dist/lewebsimple/bricks-v2/lewebsimple-bricks-v2-v2.3.3-97af88.zip",
"reference": "b542416d8657e176977bbd4e5538ee29c6b48403",
"shasum": "66ee1dd508d91230cbfe2da38d11f6d45060dd30"
},
"type": "wordpress-theme",
"time": "2026-04-27T14:36:36+00:00"
},
{
"name": "lewebsimple/ithemes-security-pro",
"version": "v8.5.8",
@@ -203,6 +186,23 @@
"type": "wordpress-plugin",
"time": "2025-07-22T14:11:07+00:00"
},
{
"name": "lewebsimple/kaliroots",
"version": "v0.9.19",
"source": {
"type": "git",
"url": "ssh://git@gitea.websimple.com:222/wp-themes/kaliroots.git",
"reference": "40789468328e126cec9bd2f85a6a9923663a8d91"
},
"dist": {
"type": "zip",
"url": "https://satis.ledevsimple.ca/dist/lewebsimple/kaliroots/lewebsimple-kaliroots-v0.9.19-12b0b3.zip",
"reference": "40789468328e126cec9bd2f85a6a9923663a8d91",
"shasum": "0a4cadbbc7719ee7de94b5cff4b2bb9c436f6416"
},
"type": "wordpress-theme",
"time": "2026-02-09T15:07:56+00:00"
},
{
"name": "lewebsimple/wp-offload-ses",
"version": "v1.6.8",
@@ -220,42 +220,6 @@
"type": "wordpress-plugin",
"time": "2025-01-09T15:43:07+00:00"
},
{
"name": "wpackagist-plugin/acf-extended",
"version": "0.9.2.4",
"source": {
"type": "svn",
"url": "https://plugins.svn.wordpress.org/acf-extended/",
"reference": "tags/0.9.2.4"
},
"dist": {
"type": "zip",
"url": "https://downloads.wordpress.org/plugin/acf-extended.0.9.2.4.zip"
},
"require": {
"composer/installers": "^1.0 || ^2.0"
},
"type": "wordpress-plugin",
"homepage": "https://wordpress.org/plugins/acf-extended/"
},
{
"name": "wpackagist-plugin/clean-image-filenames",
"version": "1.5",
"source": {
"type": "svn",
"url": "https://plugins.svn.wordpress.org/clean-image-filenames/",
"reference": "tags/1.5"
},
"dist": {
"type": "zip",
"url": "https://downloads.wordpress.org/plugin/clean-image-filenames.1.5.zip"
},
"require": {
"composer/installers": "^1.0 || ^2.0"
},
"type": "wordpress-plugin",
"homepage": "https://wordpress.org/plugins/clean-image-filenames/"
},
{
"name": "wpackagist-plugin/disable-comments",
"version": "2.7.0",
@@ -274,42 +238,6 @@
"type": "wordpress-plugin",
"homepage": "https://wordpress.org/plugins/disable-comments/"
},
{
"name": "wpackagist-plugin/media-focus-point",
"version": "2.0.5",
"source": {
"type": "svn",
"url": "https://plugins.svn.wordpress.org/media-focus-point/",
"reference": "tags/2.0.5"
},
"dist": {
"type": "zip",
"url": "https://downloads.wordpress.org/plugin/media-focus-point.2.0.5.zip"
},
"require": {
"composer/installers": "^1.0 || ^2.0"
},
"type": "wordpress-plugin",
"homepage": "https://wordpress.org/plugins/media-focus-point/"
},
{
"name": "wpackagist-plugin/simple-custom-post-order",
"version": "2.6.0",
"source": {
"type": "svn",
"url": "https://plugins.svn.wordpress.org/simple-custom-post-order/",
"reference": "tags/2.6.0"
},
"dist": {
"type": "zip",
"url": "https://downloads.wordpress.org/plugin/simple-custom-post-order.2.6.0.zip"
},
"require": {
"composer/installers": "^1.0 || ^2.0"
},
"type": "wordpress-plugin",
"homepage": "https://wordpress.org/plugins/simple-custom-post-order/"
},
{
"name": "wpackagist-plugin/user-switching",
"version": "1.11.2",

View File

@@ -0,0 +1,3 @@
.env
node_modules
assets/dist

View File

@@ -0,0 +1,42 @@
#root {
max-width: 1280px;
margin: 0 auto;
padding: 2rem;
text-align: center;
}
.logo {
height: 6em;
padding: 1.5em;
will-change: filter;
transition: filter 300ms;
}
.logo:hover {
filter: drop-shadow(0 0 2em #646cffaa);
}
.logo.react:hover {
filter: drop-shadow(0 0 2em #61dafbaa);
}
@keyframes logo-spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
@media (prefers-reduced-motion: no-preference) {
a:nth-of-type(2) .logo {
animation: logo-spin infinite 20s linear;
}
}
.card {
padding: 2em;
}
.read-the-docs {
color: #888;
}

View File

@@ -0,0 +1,84 @@
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { BrowserRouter, Route, Routes } from "react-router-dom";
import { Toaster as Sonner } from "@/components/ui/sonner";
import { Toaster } from "@/components/ui/toaster";
import { TooltipProvider } from "@/components/ui/tooltip";
import { LocaleProvider } from "@/i18n/LocaleContext";
import { ROUTES } from "@/i18n/routes";
import { SiteLayout } from "@/components/layout/SiteLayout";
import Index from "./pages/Index";
import Municipality from "./pages/Municipality";
import Community from "./pages/Community";
import LocalBusinesses from "./pages/LocalBusinesses";
import Events from "./pages/Events";
import Mayor from "./pages/Mayor";
import Council from "./pages/Council";
import Services from "./pages/Services";
import Documents from "./pages/Documents";
import CommunityPhotos from "./pages/CommunityPhotos";
import ActivitiesPhotos from "./pages/ActivitiesPhotos";
import DevelopmentPlan from "./pages/DevelopmentPlan";
import TownMap from "./pages/TownMap";
import PublicNotices from "./pages/PublicNotices";
import Minutes from "./pages/Minutes";
import Newsletters from "./pages/Newsletters";
import NotFound from "./pages/NotFound";
const queryClient = new QueryClient();
const App = () => (
<QueryClientProvider client={queryClient}>
<TooltipProvider>
<Toaster />
<Sonner />
<BrowserRouter>
<LocaleProvider>
<SiteLayout>
<Routes>
{/* French (canonical) */}
<Route path={ROUTES.home.fr} element={<Index />} />
<Route path={ROUTES.municipality.fr} element={<Municipality />} />
<Route path={ROUTES.mayor.fr} element={<Mayor />} />
<Route path={ROUTES.council.fr} element={<Council />} />
<Route path={ROUTES.services.fr} element={<Services />} />
<Route path={ROUTES.documents.fr} element={<Documents />} />
<Route path={ROUTES.community.fr} element={<Community />} />
<Route path={ROUTES.communityPhotos.fr} element={<CommunityPhotos />} />
<Route path={ROUTES.activitiesPhotos.fr} element={<ActivitiesPhotos />} />
<Route path={ROUTES.developmentPlan.fr} element={<DevelopmentPlan />} />
<Route path={ROUTES.townMap.fr} element={<TownMap />} />
<Route path={ROUTES.businesses.fr} element={<LocalBusinesses />} />
<Route path={ROUTES.events.fr} element={<Events />} />
<Route path={ROUTES.publicNotices.fr} element={<PublicNotices />} />
<Route path={ROUTES.minutes.fr} element={<Minutes />} />
<Route path={ROUTES.newsletters.fr} element={<Newsletters />} />
{/* English */}
<Route path={ROUTES.home.en} element={<Index />} />
<Route path={ROUTES.municipality.en} element={<Municipality />} />
<Route path={ROUTES.mayor.en} element={<Mayor />} />
<Route path={ROUTES.council.en} element={<Council />} />
<Route path={ROUTES.services.en} element={<Services />} />
<Route path={ROUTES.documents.en} element={<Documents />} />
<Route path={ROUTES.community.en} element={<Community />} />
<Route path={ROUTES.communityPhotos.en} element={<CommunityPhotos />} />
<Route path={ROUTES.activitiesPhotos.en} element={<ActivitiesPhotos />} />
<Route path={ROUTES.developmentPlan.en} element={<DevelopmentPlan />} />
<Route path={ROUTES.townMap.en} element={<TownMap />} />
<Route path={ROUTES.businesses.en} element={<LocalBusinesses />} />
<Route path={ROUTES.events.en} element={<Events />} />
<Route path={ROUTES.publicNotices.en} element={<PublicNotices />} />
<Route path={ROUTES.minutes.en} element={<Minutes />} />
<Route path={ROUTES.newsletters.en} element={<Newsletters />} />
{/* ADD ALL CUSTOM ROUTES ABOVE THE CATCH-ALL "*" ROUTE */}
<Route path="*" element={<NotFound />} />
</Routes>
</SiteLayout>
</LocaleProvider>
</BrowserRouter>
</TooltipProvider>
</QueryClientProvider>
);
export default App;

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 231 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 279 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 395 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 300 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 521 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 300 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 396 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 549 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Some files were not shown because too many files have changed in this diff Show More