Frontend: - Replace Next.js with Vite + React + TypeScript - Add new component architecture (app-shell, sidebar, dashboard modules) - Implement product modules: FRAME, safety protocols, walkthrough checkin, campus/staff attendance, personality quiz, sign language, classroom timer - Add shadcn/ui component library with Tailwind CSS - Remove legacy generated components, stores, and pages Backend: - Add product migrations: frame_entries, user_progress, safety_quiz_results, walkthrough_checkins, communication_events, personality_quiz_results, campus_attendance_config/summaries, staff_attendance_records, content_catalog - Add corresponding models, services, and routes - Implement cookie-based auth with refresh token rotation - Add content catalog seeder with product content - Migrate to ESLint flat config - Switch from yarn to npm Infrastructure: - Update .gitignore for new tooling - Add project documentation (CLAUDE.md, docs/) - Remove deprecated config files and yarn.lock Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
56 lines
2.0 KiB
JSON
56 lines
2.0 KiB
JSON
{
|
|
"pages": {
|
|
"dashboard": {
|
|
"pageTitle": "Tablero",
|
|
"overview": "Resumen",
|
|
"loadingWidgets": "Cargando widgets...",
|
|
"loading": "Cargando..."
|
|
},
|
|
"login": {
|
|
"pageTitle": "Inicio de sesión",
|
|
|
|
"sampleCredentialsAdmin": "Use {{email}} / {{password}} para iniciar sesión como Administrador",
|
|
"sampleCredentialsUser": "Use {{email}} / {{password}} para iniciar sesión como Usuario",
|
|
|
|
"form": {
|
|
"loginLabel": "Usuario",
|
|
"loginHelp": "Introduzca su usuario",
|
|
"passwordLabel": "Contraseña",
|
|
"passwordHelp": "Introduzca su contraseña",
|
|
"remember": "Recuérdame",
|
|
"forgotPassword": "¿Olvidó su contraseña?",
|
|
"loginButton": "Acceder",
|
|
"loading": "Cargando...",
|
|
"noAccountYet": "¿Aún no tiene una cuenta?",
|
|
"newAccount": "Crear cuenta"
|
|
},
|
|
|
|
"pexels": {
|
|
"photoCredit": "Foto de {{photographer}} en Pexels",
|
|
"videoCredit": "Vídeo de {{name}} en Pexels",
|
|
"videoUnsupported": "Su navegador no admite la etiqueta de vídeo."
|
|
},
|
|
|
|
"footer": {
|
|
"copyright": "© {{year}} {{title}}. Todos los derechos reservados",
|
|
"privacy": "Política de privacidad"
|
|
}
|
|
}
|
|
},
|
|
"components": {
|
|
"widgetCreator": {
|
|
"title": "Crear gráfico o widget",
|
|
"helpText": "Describe tu nuevo widget o gráfico en lenguaje natural. Por ejemplo: \"Número de usuarios administradores\" O \"gráfico rojo con el número de contratos cerrados agrupados por mes\"",
|
|
"settingsTitle": "Configuración del creador de widgets",
|
|
"settingsDescription": "¿Para qué rol estamos mostrando y creando widgets?",
|
|
"doneButton": "Listo",
|
|
"loading": "Cargando..."
|
|
},
|
|
"search": {
|
|
"placeholder": "Buscar",
|
|
"required": "Obligatorio",
|
|
"minLength": "Longitud mínima: {{count}} caracteres"
|
|
}
|
|
}
|
|
}
|