diff --git a/.gitignore b/.gitignore index 81eb070..403aafc 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ test-results public/src eslint-report.txt coverage/ +CLAUDE.md .vite/ uploads/images/collaborators/ uploads/images/events/ diff --git a/content/i18n/en.md b/content/i18n/en.md index daebbd8..7a96f30 100644 --- a/content/i18n/en.md +++ b/content/i18n/en.md @@ -43,8 +43,22 @@ updatedAt: "2026-05-21T03:25:31.940Z" "switch_to_light": "Switch to light mode" }, "a11y": { - "enable": "Enable accessibility mode: higher contrast, larger text and reduced motion", - "disable": "Disable accessibility mode" + "open": "Accessibility preferences", + "title": "Accessibility preferences", + "close": "Close", + "master": "Turn on every option", + "theme_label": "Color theme", + "theme_system": "Use system setting", + "theme_light": "Light", + "theme_dark": "Dark", + "text_size_label": "Text size", + "text_normal": "Normal", + "text_large": "Large", + "text_xlarge": "Extra large", + "high_contrast": "High contrast", + "reduce_motion": "Reduce motion", + "underline_links": "Underline links", + "reset": "Reset preferences" }, "itinerary": { "schedule": "Activity schedule", diff --git a/content/i18n/es.md b/content/i18n/es.md index c0f69ed..390ebc7 100644 --- a/content/i18n/es.md +++ b/content/i18n/es.md @@ -43,8 +43,22 @@ updatedAt: "2026-05-21T03:25:31.942Z" "switch_to_light": "Cambiar a modo claro" }, "a11y": { - "enable": "Activar modo accesibilidad: mas contraste, letra mas grande y menos animaciones", - "disable": "Desactivar modo accesibilidad" + "open": "Preferencias de accesibilidad", + "title": "Preferencias de accesibilidad", + "close": "Cerrar", + "master": "Activar todas las opciones", + "theme_label": "Tema de color", + "theme_system": "Usar ajuste del sistema", + "theme_light": "Claro", + "theme_dark": "Oscuro", + "text_size_label": "Tamaño del texto", + "text_normal": "Normal", + "text_large": "Grande", + "text_xlarge": "Muy grande", + "high_contrast": "Alto contraste", + "reduce_motion": "Reducir animaciones", + "underline_links": "Subrayar enlaces", + "reset": "Restablecer preferencias" }, "itinerary": { "schedule": "Programación de actividades", diff --git a/package-lock.json b/package-lock.json index 71f5a13..36ca959 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1269,9 +1269,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.10.31", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.31.tgz", - "integrity": "sha512-MujYO3eP72uvmSE0i4wltsodRfIpZATP3jvzRNRGGxgzId7aVocVJJV3nf01qnzzKFGxQVC9bpWxl5cjxTr/7Q==", + "version": "2.11.20", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.20.tgz", + "integrity": "sha512-H0ulySigv6icDJ1F7SjtdCD6PrhTpdYCmP0CactWy1+ekh0AFd0o1Wn5T8b+hnTmdBx19u9yhL6wvCylXMY7zw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -1319,9 +1319,9 @@ } }, "node_modules/browserslist": { - "version": "4.28.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", - "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", + "version": "4.28.8", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.8.tgz", + "integrity": "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA==", "dev": true, "funding": [ { @@ -1339,11 +1339,11 @@ ], "license": "MIT", "dependencies": { - "baseline-browser-mapping": "^2.10.12", - "caniuse-lite": "^1.0.30001782", - "electron-to-chromium": "^1.5.328", - "node-releases": "^2.0.36", - "update-browserslist-db": "^1.2.3" + "baseline-browser-mapping": "^2.11.12", + "caniuse-lite": "^1.0.30001809", + "electron-to-chromium": "^1.5.402", + "node-releases": "^2.0.53", + "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" @@ -1423,9 +1423,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001793", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001793.tgz", - "integrity": "sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA==", + "version": "1.0.30001810", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001810.tgz", + "integrity": "sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg==", "dev": true, "funding": [ { @@ -1807,9 +1807,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.360", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.360.tgz", - "integrity": "sha512-GkcBt6YYAw9SxFWn+xVar4cLVGlXVuswwtRLBozi2zp0GjXs4ZnOrqV4zbXzg35n7w81hCkyJNYicgXlVHAmBA==", + "version": "1.5.420", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.420.tgz", + "integrity": "sha512-2yD6XreGusOfNV+dUcvipJEXc3n/n7fgr7996aszTG+YY5E4mqM4tOq/3uhP129cazL9YHbVWSpc79ePotWtPA==", "dev": true, "license": "ISC" }, @@ -3913,11 +3913,14 @@ } }, "node_modules/node-releases": { - "version": "2.0.44", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.44.tgz", - "integrity": "sha512-5WUyunoPMsvvEhS8AxHtRzP+oA8UCkJ7YRxatWKjngndhDGLiqEVAQKWjFAiAiuL8zMRGzGSJxFnLetoa43qGQ==", + "version": "2.0.54", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.54.tgz", + "integrity": "sha512-YHs7BmmcsdAI5Ozuf8JZo6PT0mv2GIWC9vMfvUC3dp65M8hn7Ux8CPL+2oBI7juNuj9d0ndhTcznq2ODBps9cQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=18" + } }, "node_modules/normalize-path": { "version": "3.0.0", @@ -4437,9 +4440,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", - "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.4.tgz", + "integrity": "sha512-bIoJLOmjCO1S9XdY/DcnR5hJxvrDir1PbGChrzXG3vw0/FOliy/fA3dmdhQ441kah4gKv+TwckGzex6wNS5cnQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5627,9 +5630,9 @@ "license": "MIT" }, "node_modules/update-browserslist-db": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", - "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.2.tgz", + "integrity": "sha512-UQ+MSxlhRm1bzjhU+DcuXfjFO1FzNtqhK5+9Yvlp90ItDLk5vT932A0rFu619nf7RVS+Y/VeaUW1jaRDqZ8VJw==", "dev": true, "funding": [ { diff --git a/package.json b/package.json index 9489505..edbd6db 100644 --- a/package.json +++ b/package.json @@ -11,8 +11,9 @@ "dev": "concurrently -n PUB,ADMIN -c \"cyan,magenta\" \"vite\" \"vite --config vite-admin.config.ts --port 5174\"", "dev:admin": "pkill -f 'vite.*5174' 2>/dev/null; npx vite --config vite-admin.config.ts --port 5174", "build": "vite build", + "typecheck": "tsc --noEmit", "test:prepush": "npm run test:drag && npm run build", - "test:drag": "node --test src/utils/theme.test.js src/utils/accessibility.test.js src/pages/adminDragModel.test.js src/pages/eventPageModel.test.js src/utils/mediaEmbeds.test.js src/utils/adminMediaUpload.test.js src/utils/adminAssetApiValidation.test.js src/utils/adminPathSecurity.test.js src/components/itinerary/itineraryModel.test.js src/components/home/homepageRefinements.test.js", + "test:drag": "node --test src/utils/theme.test.js src/utils/accessibility.test.js src/pages/adminDragModel.test.js src/pages/eventPageModel.test.js src/utils/mediaEmbeds.test.js src/utils/adminMediaUpload.test.js src/utils/adminAssetApiValidation.test.js src/utils/adminPathSecurity.test.js src/components/itinerary/itineraryModel.test.js src/components/home/homepageRefinements.test.js src/components/home/heroCanvasBackdrop.test.js", "test:e2e": "npm run generate:content && playwright test", "test:e2e:base-path": "playwright test --config playwright.base-path.config.ts", "setup:hooks": "git config core.hooksPath .githooks", diff --git a/playwright.config.ts b/playwright.config.ts index 25980a5..afce3da 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -2,6 +2,7 @@ import { defineConfig, devices } from 'playwright/test'; export default defineConfig({ testDir: './tests/e2e', + testIgnore: ['homepageBasePath.spec.ts', 'legalBasePath.spec.ts'], fullyParallel: true, reporter: 'line', use: { diff --git a/public/api/i18n/en.json b/public/api/i18n/en.json index d5f3aa3..246170d 100644 --- a/public/api/i18n/en.json +++ b/public/api/i18n/en.json @@ -42,8 +42,22 @@ "switch_to_light": "Switch to light mode" }, "a11y": { - "enable": "Enable accessibility mode: higher contrast, larger text and reduced motion", - "disable": "Disable accessibility mode" + "open": "Accessibility preferences", + "title": "Accessibility preferences", + "close": "Close", + "master": "Turn on every option", + "theme_label": "Color theme", + "theme_system": "Use system setting", + "theme_light": "Light", + "theme_dark": "Dark", + "text_size_label": "Text size", + "text_normal": "Normal", + "text_large": "Large", + "text_xlarge": "Extra large", + "high_contrast": "High contrast", + "reduce_motion": "Reduce motion", + "underline_links": "Underline links", + "reset": "Reset preferences" }, "itinerary": { "schedule": "Activity schedule", diff --git a/public/api/i18n/es.json b/public/api/i18n/es.json index eecf25b..52fa27b 100644 --- a/public/api/i18n/es.json +++ b/public/api/i18n/es.json @@ -42,8 +42,22 @@ "switch_to_light": "Cambiar a modo claro" }, "a11y": { - "enable": "Activar modo accesibilidad: mas contraste, letra mas grande y menos animaciones", - "disable": "Desactivar modo accesibilidad" + "open": "Preferencias de accesibilidad", + "title": "Preferencias de accesibilidad", + "close": "Cerrar", + "master": "Activar todas las opciones", + "theme_label": "Tema de color", + "theme_system": "Usar ajuste del sistema", + "theme_light": "Claro", + "theme_dark": "Oscuro", + "text_size_label": "Tamaño del texto", + "text_normal": "Normal", + "text_large": "Grande", + "text_xlarge": "Muy grande", + "high_contrast": "Alto contraste", + "reduce_motion": "Reducir animaciones", + "underline_links": "Subrayar enlaces", + "reset": "Restablecer preferencias" }, "itinerary": { "schedule": "Programación de actividades", diff --git a/public/index.html b/public/index.html index 7162bcd..76fb71b 100644 --- a/public/index.html +++ b/public/index.html @@ -19,16 +19,6 @@ -