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

View File

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

View File

@@ -0,0 +1 @@
export default {".indicator":{"@layer daisyui.l1.l2.l3":{"position":"relative","display":"inline-flex","width":"max-content",":where(.indicator-item)":{"z-index":1,"position":"absolute","white-space":"nowrap","top":"var(--indicator-t, 0)","bottom":"var(--indicator-b, auto)","left":"var(--indicator-s, auto)","right":"var(--indicator-e, 0)","translate":"var(--indicator-x, 50%) var(--indicator-y, -50%)"}}},".indicator-start":{"@layer daisyui.l1.l2":{"--indicator-s":"0","--indicator-e":"auto","--indicator-x":"-50%","[dir=\"rtl\"] &":{"--indicator-s":"auto","--indicator-e":"0","--indicator-x":"50%"}}},".indicator-center":{"@layer daisyui.l1.l2":{"--indicator-s":"50%","--indicator-e":"50%","--indicator-x":"-50%","[dir=\"rtl\"] &":{"--indicator-x":"50%"}}},".indicator-end":{"@layer daisyui.l1.l2":{"--indicator-s":"auto","--indicator-e":"0","--indicator-x":"50%","[dir=\"rtl\"] &":{"--indicator-s":"0","--indicator-e":"auto","--indicator-x":"-50%"}}},".indicator-bottom":{"@layer daisyui.l1.l2":{"--indicator-t":"auto","--indicator-b":"0","--indicator-y":"50%"}},".indicator-middle":{"@layer daisyui.l1.l2":{"--indicator-t":"50%","--indicator-b":"50%","--indicator-y":"-50%"}},".indicator-top":{"@layer daisyui.l1.l2":{"--indicator-t":"0","--indicator-b":"auto","--indicator-y":"-50%"}}};