Files
headroom/frontend/.svelte-kit/output/client/_app/immutable/nodes/0.qcGNqz4K.js
Santhosh Janardhanan de2d83092e 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
2026-02-17 16:19:59 -05:00

2 lines
2.2 KiB
JavaScript

import{a as m,f as b}from"../chunks/pJd4F_Tq.js";import{i as j}from"../chunks/BgHfHpED.js";import{A as N,J as P,p as k,b as A,s as u,c as r,r as s,t as R,ad as T,ae as U}from"../chunks/CCV2x70u.js";import{u as q,l as z,a as B}from"../chunks/CrZRXG6z.js";import{s as E,e as F}from"../chunks/Bx__7-vK.js";import{i as y}from"../chunks/CC5oASRR.js";import{s as G,a as I}from"../chunks/JkAhLmb1.js";import{g as K}from"../chunks/DBDqKY8A.js";function O(v,o,a,n,d){var c;N&&P();var e=(c=o.$$slots)==null?void 0:c[a],i=!1;e===!0&&(e=o.children,i=!0),e===void 0||e(v,i?()=>n:n)}var Q=b('<li><a href="/team-members">Team Members</a></li> <li><a href="/projects">Projects</a></li>',1),S=b('<div class="dropdown dropdown-end"><label tabindex="0" class="btn btn-ghost btn-circle avatar"><div class="w-10 rounded-full bg-primary"><span class="text-xl"> </span></div></label> <ul tabindex="0" class="mt-3 p-2 shadow menu menu-compact dropdown-content bg-base-100 rounded-box w-52"><li><a href="/dashboard" class="justify-between">Dashboard</a></li> <!> <li><a href="/reports">Reports</a></li> <div class="divider"></div> <li><button class="text-error">Logout</button></li></ul></div>'),V=b('<a href="/login" class="btn btn-primary btn-sm">Login</a>'),W=b('<nav class="navbar bg-base-100 shadow-lg"><div class="flex-1"><a href="/" class="btn btn-ghost normal-case text-xl">Headroom</a></div> <div class="flex-none gap-2"><!></div></nav>');function X(v,o){k(o,!1);const a=()=>I(q,"$user",n),[n,d]=G();async function e(){await z(),K("/login")}j();var i=W(),c=u(r(i),2),L=r(c);{var $=l=>{var f=S(),p=r(f),g=r(p),h=r(g),C=r(h,!0);s(h),s(g),s(p);var x=u(p,2),_=u(r(x),2);{var D=t=>{var J=Q();T(2),m(t,J)};y(_,t=>{(a().role==="superuser"||a().role==="manager")&&t(D)})}var w=u(_,6),H=r(w);s(w),s(x),s(f),R(t=>E(C,t),[()=>{var t;return(t=a().email)==null?void 0:t.charAt(0).toUpperCase()}]),F("click",H,e),m(l,f)},M=l=>{var f=V();m(l,f)};y(L,l=>{a()?l($):l(M,!1)})}s(c),s(i),m(v,i),A(),d()}var Y=b('<div class="min-h-screen bg-base-200"><!> <main class="container mx-auto px-4 py-6"><!></main></div>');function ia(v,o){k(o,!1),U(()=>{B()}),j();var a=Y(),n=r(a);X(n,{});var d=u(n,2),e=r(d);O(e,o,"default",{}),s(d),s(a),m(v,a),A()}export{ia as component};