feat: Reinitialize frontend with SvelteKit and TypeScript

- Delete old Vite+Svelte frontend
- Initialize new SvelteKit project with TypeScript
- Configure Tailwind CSS v4 + DaisyUI
- Implement JWT authentication with auto-refresh
- Create login page with form validation (Zod)
- Add protected route guards
- Update Docker configuration for single-stage build
- Add E2E tests with Playwright (6/11 passing)
- Fix Svelte 5 reactivity with $state() runes

Known issues:
- 5 E2E tests failing (timing/async issues)
- Token refresh implementation needs debugging
- Validation error display timing
This commit is contained in:
2026-02-17 16:19:59 -05:00
parent 54df6018f5
commit de2d83092e
28274 changed files with 3816354 additions and 90 deletions

7
frontend/node_modules/daisyui/theme/lofi/index.js generated vendored Normal file
View File

@@ -0,0 +1,7 @@
import lofi from './object.js';
import { addPrefix } from '../../functions/addPrefix.js';
export default ({ addBase, prefix = '' }) => {
const prefixedlofi = addPrefix(lofi, prefix);
addBase({ ...prefixedlofi });
};

1
frontend/node_modules/daisyui/theme/lofi/object.js generated vendored Normal file
View File

@@ -0,0 +1 @@
export default {"color-scheme":"light","--color-base-100":"oklch(100% 0 0)","--color-base-200":"oklch(97% 0 0)","--color-base-300":"oklch(94% 0 0)","--color-base-content":"oklch(0% 0 0)","--color-primary":"oklch(15.906% 0 0)","--color-primary-content":"oklch(100% 0 0)","--color-secondary":"oklch(21.455% 0.001 17.278)","--color-secondary-content":"oklch(100% 0 0)","--color-accent":"oklch(26.861% 0 0)","--color-accent-content":"oklch(100% 0 0)","--color-neutral":"oklch(0% 0 0)","--color-neutral-content":"oklch(100% 0 0)","--color-info":"oklch(79.54% 0.103 205.9)","--color-info-content":"oklch(15.908% 0.02 205.9)","--color-success":"oklch(90.13% 0.153 164.14)","--color-success-content":"oklch(18.026% 0.03 164.14)","--color-warning":"oklch(88.37% 0.135 79.94)","--color-warning-content":"oklch(17.674% 0.027 79.94)","--color-error":"oklch(78.66% 0.15 28.47)","--color-error-content":"oklch(15.732% 0.03 28.47)","--radius-selector":"2rem","--radius-field":"0.25rem","--radius-box":"0.5rem","--size-selector":"0.25rem","--size-field":"0.25rem","--border":"1px","--depth":"0","--noise":"0"};