- 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
5.1 KiB
CSS
1 line
5.1 KiB
CSS
/*! 🌼 daisyUI 5.5.17 - MIT License */ @layer utilities{.carousel{@layer daisyui.l1.l2.l3{&{scroll-snap-type:x mandatory;scrollbar-width:none;display:inline-flex;overflow-x:scroll}@media (prefers-reduced-motion:no-preference){&{scroll-behavior:smooth}}&::-webkit-scrollbar{display:none}}}.carousel-vertical{@layer daisyui.l1.l2{&{scroll-snap-type:y mandatory;flex-direction:column;overflow-y:scroll}}}.carousel-horizontal{@layer daisyui.l1.l2{&{scroll-snap-type:x mandatory;flex-direction:row;overflow-x:scroll}}}.carousel-item{@layer daisyui.l1.l2.l3{&{box-sizing:content-box;scroll-snap-align:start;flex:none;display:flex}}}.carousel-start{@layer daisyui.l1.l2{& .carousel-item{scroll-snap-align:start}}}.carousel-center{@layer daisyui.l1.l2{& .carousel-item{scroll-snap-align:center}}}.carousel-end{@layer daisyui.l1.l2{& .carousel-item{scroll-snap-align:end}}}@media (width>=640px){.sm\:carousel{@layer daisyui.l1.l2.l3{&{scroll-snap-type:x mandatory;scrollbar-width:none;display:inline-flex;overflow-x:scroll}@media (prefers-reduced-motion:no-preference){&{scroll-behavior:smooth}}&::-webkit-scrollbar{display:none}}}.sm\:carousel-vertical{@layer daisyui.l1.l2{&{scroll-snap-type:y mandatory;flex-direction:column;overflow-y:scroll}}}.sm\:carousel-horizontal{@layer daisyui.l1.l2{&{scroll-snap-type:x mandatory;flex-direction:row;overflow-x:scroll}}}.sm\:carousel-item{@layer daisyui.l1.l2.l3{&{box-sizing:content-box;scroll-snap-align:start;flex:none;display:flex}}}.sm\:carousel-start{@layer daisyui.l1.l2{& .carousel-item{scroll-snap-align:start}}}.sm\:carousel-center{@layer daisyui.l1.l2{& .carousel-item{scroll-snap-align:center}}}.sm\:carousel-end{@layer daisyui.l1.l2{& .carousel-item{scroll-snap-align:end}}}}@media (width>=768px){.md\:carousel{@layer daisyui.l1.l2.l3{&{scroll-snap-type:x mandatory;scrollbar-width:none;display:inline-flex;overflow-x:scroll}@media (prefers-reduced-motion:no-preference){&{scroll-behavior:smooth}}&::-webkit-scrollbar{display:none}}}.md\:carousel-vertical{@layer daisyui.l1.l2{&{scroll-snap-type:y mandatory;flex-direction:column;overflow-y:scroll}}}.md\:carousel-horizontal{@layer daisyui.l1.l2{&{scroll-snap-type:x mandatory;flex-direction:row;overflow-x:scroll}}}.md\:carousel-item{@layer daisyui.l1.l2.l3{&{box-sizing:content-box;scroll-snap-align:start;flex:none;display:flex}}}.md\:carousel-start{@layer daisyui.l1.l2{& .carousel-item{scroll-snap-align:start}}}.md\:carousel-center{@layer daisyui.l1.l2{& .carousel-item{scroll-snap-align:center}}}.md\:carousel-end{@layer daisyui.l1.l2{& .carousel-item{scroll-snap-align:end}}}}@media (width>=1024px){.lg\:carousel{@layer daisyui.l1.l2.l3{&{scroll-snap-type:x mandatory;scrollbar-width:none;display:inline-flex;overflow-x:scroll}@media (prefers-reduced-motion:no-preference){&{scroll-behavior:smooth}}&::-webkit-scrollbar{display:none}}}.lg\:carousel-vertical{@layer daisyui.l1.l2{&{scroll-snap-type:y mandatory;flex-direction:column;overflow-y:scroll}}}.lg\:carousel-horizontal{@layer daisyui.l1.l2{&{scroll-snap-type:x mandatory;flex-direction:row;overflow-x:scroll}}}.lg\:carousel-item{@layer daisyui.l1.l2.l3{&{box-sizing:content-box;scroll-snap-align:start;flex:none;display:flex}}}.lg\:carousel-start{@layer daisyui.l1.l2{& .carousel-item{scroll-snap-align:start}}}.lg\:carousel-center{@layer daisyui.l1.l2{& .carousel-item{scroll-snap-align:center}}}.lg\:carousel-end{@layer daisyui.l1.l2{& .carousel-item{scroll-snap-align:end}}}}@media (width>=1280px){.xl\:carousel{@layer daisyui.l1.l2.l3{&{scroll-snap-type:x mandatory;scrollbar-width:none;display:inline-flex;overflow-x:scroll}@media (prefers-reduced-motion:no-preference){&{scroll-behavior:smooth}}&::-webkit-scrollbar{display:none}}}.xl\:carousel-vertical{@layer daisyui.l1.l2{&{scroll-snap-type:y mandatory;flex-direction:column;overflow-y:scroll}}}.xl\:carousel-horizontal{@layer daisyui.l1.l2{&{scroll-snap-type:x mandatory;flex-direction:row;overflow-x:scroll}}}.xl\:carousel-item{@layer daisyui.l1.l2.l3{&{box-sizing:content-box;scroll-snap-align:start;flex:none;display:flex}}}.xl\:carousel-start{@layer daisyui.l1.l2{& .carousel-item{scroll-snap-align:start}}}.xl\:carousel-center{@layer daisyui.l1.l2{& .carousel-item{scroll-snap-align:center}}}.xl\:carousel-end{@layer daisyui.l1.l2{& .carousel-item{scroll-snap-align:end}}}}@media (width>=1536px){.\32 xl\:carousel{@layer daisyui.l1.l2.l3{&{scroll-snap-type:x mandatory;scrollbar-width:none;display:inline-flex;overflow-x:scroll}@media (prefers-reduced-motion:no-preference){&{scroll-behavior:smooth}}&::-webkit-scrollbar{display:none}}}.\32 xl\:carousel-vertical{@layer daisyui.l1.l2{&{scroll-snap-type:y mandatory;flex-direction:column;overflow-y:scroll}}}.\32 xl\:carousel-horizontal{@layer daisyui.l1.l2{&{scroll-snap-type:x mandatory;flex-direction:row;overflow-x:scroll}}}.\32 xl\:carousel-item{@layer daisyui.l1.l2.l3{&{box-sizing:content-box;scroll-snap-align:start;flex:none;display:flex}}}.\32 xl\:carousel-start{@layer daisyui.l1.l2{& .carousel-item{scroll-snap-align:start}}}.\32 xl\:carousel-center{@layer daisyui.l1.l2{& .carousel-item{scroll-snap-align:center}}}.\32 xl\:carousel-end{@layer daisyui.l1.l2{& .carousel-item{scroll-snap-align:end}}}}} |