- 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
4.6 KiB
CSS
1 line
4.6 KiB
CSS
/*! 🌼 daisyUI 5.5.17 - MIT License */ @layer utilities{.breadcrumbs{@layer daisyui.l1.l2.l3{&{max-width:100%;padding-block:.5rem;overflow-x:auto}&>menu,&>ul,&>ol{white-space:nowrap;align-items:center;min-height:min-content;display:flex;&>li{align-items:center;display:flex;&>*{cursor:pointer;align-items:center;gap:.5rem;display:flex;&:hover{@media (hover:hover){&{text-decoration-line:underline}}}&:focus{--tw-outline-style:none;outline-style:none;@media (forced-colors:active){&{outline-offset:2px;outline:2px solid #0000}}}&:focus-visible{outline-offset:2px;outline:2px solid}}&+:before{content:"";opacity:.4;background-color:#0000;border-top:1px solid;border-right:1px solid;width:.375rem;height:.375rem;margin-left:.5rem;margin-right:.75rem;display:block;rotate:45deg}[dir=rtl] &+:before{rotate:-135deg}}}}}@media (width>=640px){.sm\:breadcrumbs{@layer daisyui.l1.l2.l3{&{max-width:100%;padding-block:.5rem;overflow-x:auto}&>menu,&>ul,&>ol{white-space:nowrap;align-items:center;min-height:min-content;display:flex;&>li{align-items:center;display:flex;&>*{cursor:pointer;align-items:center;gap:.5rem;display:flex;&:hover{@media (hover:hover){&{text-decoration-line:underline}}}&:focus{--tw-outline-style:none;outline-style:none;@media (forced-colors:active){&{outline-offset:2px;outline:2px solid #0000}}}&:focus-visible{outline-offset:2px;outline:2px solid}}&+:before{content:"";opacity:.4;background-color:#0000;border-top:1px solid;border-right:1px solid;width:.375rem;height:.375rem;margin-left:.5rem;margin-right:.75rem;display:block;rotate:45deg}[dir=rtl] &+:before{rotate:-135deg}}}}}}@media (width>=768px){.md\:breadcrumbs{@layer daisyui.l1.l2.l3{&{max-width:100%;padding-block:.5rem;overflow-x:auto}&>menu,&>ul,&>ol{white-space:nowrap;align-items:center;min-height:min-content;display:flex;&>li{align-items:center;display:flex;&>*{cursor:pointer;align-items:center;gap:.5rem;display:flex;&:hover{@media (hover:hover){&{text-decoration-line:underline}}}&:focus{--tw-outline-style:none;outline-style:none;@media (forced-colors:active){&{outline-offset:2px;outline:2px solid #0000}}}&:focus-visible{outline-offset:2px;outline:2px solid}}&+:before{content:"";opacity:.4;background-color:#0000;border-top:1px solid;border-right:1px solid;width:.375rem;height:.375rem;margin-left:.5rem;margin-right:.75rem;display:block;rotate:45deg}[dir=rtl] &+:before{rotate:-135deg}}}}}}@media (width>=1024px){.lg\:breadcrumbs{@layer daisyui.l1.l2.l3{&{max-width:100%;padding-block:.5rem;overflow-x:auto}&>menu,&>ul,&>ol{white-space:nowrap;align-items:center;min-height:min-content;display:flex;&>li{align-items:center;display:flex;&>*{cursor:pointer;align-items:center;gap:.5rem;display:flex;&:hover{@media (hover:hover){&{text-decoration-line:underline}}}&:focus{--tw-outline-style:none;outline-style:none;@media (forced-colors:active){&{outline-offset:2px;outline:2px solid #0000}}}&:focus-visible{outline-offset:2px;outline:2px solid}}&+:before{content:"";opacity:.4;background-color:#0000;border-top:1px solid;border-right:1px solid;width:.375rem;height:.375rem;margin-left:.5rem;margin-right:.75rem;display:block;rotate:45deg}[dir=rtl] &+:before{rotate:-135deg}}}}}}@media (width>=1280px){.xl\:breadcrumbs{@layer daisyui.l1.l2.l3{&{max-width:100%;padding-block:.5rem;overflow-x:auto}&>menu,&>ul,&>ol{white-space:nowrap;align-items:center;min-height:min-content;display:flex;&>li{align-items:center;display:flex;&>*{cursor:pointer;align-items:center;gap:.5rem;display:flex;&:hover{@media (hover:hover){&{text-decoration-line:underline}}}&:focus{--tw-outline-style:none;outline-style:none;@media (forced-colors:active){&{outline-offset:2px;outline:2px solid #0000}}}&:focus-visible{outline-offset:2px;outline:2px solid}}&+:before{content:"";opacity:.4;background-color:#0000;border-top:1px solid;border-right:1px solid;width:.375rem;height:.375rem;margin-left:.5rem;margin-right:.75rem;display:block;rotate:45deg}[dir=rtl] &+:before{rotate:-135deg}}}}}}@media (width>=1536px){.\32 xl\:breadcrumbs{@layer daisyui.l1.l2.l3{&{max-width:100%;padding-block:.5rem;overflow-x:auto}&>menu,&>ul,&>ol{white-space:nowrap;align-items:center;min-height:min-content;display:flex;&>li{align-items:center;display:flex;&>*{cursor:pointer;align-items:center;gap:.5rem;display:flex;&:hover{@media (hover:hover){&{text-decoration-line:underline}}}&:focus{--tw-outline-style:none;outline-style:none;@media (forced-colors:active){&{outline-offset:2px;outline:2px solid #0000}}}&:focus-visible{outline-offset:2px;outline:2px solid}}&+:before{content:"";opacity:.4;background-color:#0000;border-top:1px solid;border-right:1px solid;width:.375rem;height:.375rem;margin-left:.5rem;margin-right:.75rem;display:block;rotate:45deg}[dir=rtl] &+:before{rotate:-135deg}}}}}}} |