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 halloween from './object.js';
import { addPrefix } from '../../functions/addPrefix.js';
export default ({ addBase, prefix = '' }) => {
const prefixedhalloween = addPrefix(halloween, prefix);
addBase({ ...prefixedhalloween });
};

View File

@@ -0,0 +1 @@
export default {"color-scheme":"dark","--color-base-100":"oklch(21% 0.006 56.043)","--color-base-200":"oklch(14% 0.004 49.25)","--color-base-300":"oklch(0% 0 0)","--color-base-content":"oklch(84.955% 0 0)","--color-primary":"oklch(77.48% 0.204 60.62)","--color-primary-content":"oklch(19.693% 0.004 196.779)","--color-secondary":"oklch(45.98% 0.248 305.03)","--color-secondary-content":"oklch(89.196% 0.049 305.03)","--color-accent":"oklch(64.8% 0.223 136.073)","--color-accent-content":"oklch(0% 0 0)","--color-neutral":"oklch(24.371% 0.046 65.681)","--color-neutral-content":"oklch(84.874% 0.009 65.681)","--color-info":"oklch(54.615% 0.215 262.88)","--color-info-content":"oklch(90.923% 0.043 262.88)","--color-success":"oklch(62.705% 0.169 149.213)","--color-success-content":"oklch(12.541% 0.033 149.213)","--color-warning":"oklch(66.584% 0.157 58.318)","--color-warning-content":"oklch(13.316% 0.031 58.318)","--color-error":"oklch(65.72% 0.199 27.33)","--color-error-content":"oklch(13.144% 0.039 27.33)","--radius-selector":"1rem","--radius-field":"0.5rem","--radius-box":"1rem","--size-selector":"0.25rem","--size-field":"0.25rem","--border":"1px","--depth":"1","--noise":"0"};