- 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
1 line
3.9 KiB
CSS
1 line
3.9 KiB
CSS
/*! 🌼 daisyUI 5.5.17 - MIT License */ @layer utilities{.footer{@layer daisyui.l1.l2.l3{&{grid-auto-flow:row;place-items:start;gap:2.5rem 1rem;width:100%;font-size:.875rem;line-height:1.25rem;display:grid}&>*{place-items:start;gap:.5rem;display:grid}&.footer-center{text-align:center;grid-auto-flow:column dense;place-items:center;&>*{place-items:center}}}}.footer-title{@layer daisyui.l1.l2.l3{&{text-transform:uppercase;opacity:.6;margin-bottom:.5rem;font-weight:600}}}.footer-horizontal{@layer daisyui.l1.l2{&{grid-auto-flow:column}&.footer-center{grid-auto-flow:dense}}}.footer-vertical{@layer daisyui.l1.l2{&{grid-auto-flow:row}&.footer-center{grid-auto-flow:column dense}}}@media (width>=640px){.sm\:footer{@layer daisyui.l1.l2.l3{&{grid-auto-flow:row;place-items:start;gap:2.5rem 1rem;width:100%;font-size:.875rem;line-height:1.25rem;display:grid}&>*{place-items:start;gap:.5rem;display:grid}&.footer-center{text-align:center;grid-auto-flow:column dense;place-items:center;&>*{place-items:center}}}}.sm\:footer-title{@layer daisyui.l1.l2.l3{&{text-transform:uppercase;opacity:.6;margin-bottom:.5rem;font-weight:600}}}.sm\:footer-horizontal{@layer daisyui.l1.l2{&{grid-auto-flow:column}&.footer-center{grid-auto-flow:dense}}}.sm\:footer-vertical{@layer daisyui.l1.l2{&{grid-auto-flow:row}&.footer-center{grid-auto-flow:column dense}}}}@media (width>=768px){.md\:footer{@layer daisyui.l1.l2.l3{&{grid-auto-flow:row;place-items:start;gap:2.5rem 1rem;width:100%;font-size:.875rem;line-height:1.25rem;display:grid}&>*{place-items:start;gap:.5rem;display:grid}&.footer-center{text-align:center;grid-auto-flow:column dense;place-items:center;&>*{place-items:center}}}}.md\:footer-title{@layer daisyui.l1.l2.l3{&{text-transform:uppercase;opacity:.6;margin-bottom:.5rem;font-weight:600}}}.md\:footer-horizontal{@layer daisyui.l1.l2{&{grid-auto-flow:column}&.footer-center{grid-auto-flow:dense}}}.md\:footer-vertical{@layer daisyui.l1.l2{&{grid-auto-flow:row}&.footer-center{grid-auto-flow:column dense}}}}@media (width>=1024px){.lg\:footer{@layer daisyui.l1.l2.l3{&{grid-auto-flow:row;place-items:start;gap:2.5rem 1rem;width:100%;font-size:.875rem;line-height:1.25rem;display:grid}&>*{place-items:start;gap:.5rem;display:grid}&.footer-center{text-align:center;grid-auto-flow:column dense;place-items:center;&>*{place-items:center}}}}.lg\:footer-title{@layer daisyui.l1.l2.l3{&{text-transform:uppercase;opacity:.6;margin-bottom:.5rem;font-weight:600}}}.lg\:footer-horizontal{@layer daisyui.l1.l2{&{grid-auto-flow:column}&.footer-center{grid-auto-flow:dense}}}.lg\:footer-vertical{@layer daisyui.l1.l2{&{grid-auto-flow:row}&.footer-center{grid-auto-flow:column dense}}}}@media (width>=1280px){.xl\:footer{@layer daisyui.l1.l2.l3{&{grid-auto-flow:row;place-items:start;gap:2.5rem 1rem;width:100%;font-size:.875rem;line-height:1.25rem;display:grid}&>*{place-items:start;gap:.5rem;display:grid}&.footer-center{text-align:center;grid-auto-flow:column dense;place-items:center;&>*{place-items:center}}}}.xl\:footer-title{@layer daisyui.l1.l2.l3{&{text-transform:uppercase;opacity:.6;margin-bottom:.5rem;font-weight:600}}}.xl\:footer-horizontal{@layer daisyui.l1.l2{&{grid-auto-flow:column}&.footer-center{grid-auto-flow:dense}}}.xl\:footer-vertical{@layer daisyui.l1.l2{&{grid-auto-flow:row}&.footer-center{grid-auto-flow:column dense}}}}@media (width>=1536px){.\32 xl\:footer{@layer daisyui.l1.l2.l3{&{grid-auto-flow:row;place-items:start;gap:2.5rem 1rem;width:100%;font-size:.875rem;line-height:1.25rem;display:grid}&>*{place-items:start;gap:.5rem;display:grid}&.footer-center{text-align:center;grid-auto-flow:column dense;place-items:center;&>*{place-items:center}}}}.\32 xl\:footer-title{@layer daisyui.l1.l2.l3{&{text-transform:uppercase;opacity:.6;margin-bottom:.5rem;font-weight:600}}}.\32 xl\:footer-horizontal{@layer daisyui.l1.l2{&{grid-auto-flow:column}&.footer-center{grid-auto-flow:dense}}}.\32 xl\:footer-vertical{@layer daisyui.l1.l2{&{grid-auto-flow:row}&.footer-center{grid-auto-flow:column dense}}}}} |