Add ModeTemplate with Svelte 5 frontend and components
- Create reusable components: auth, api-client, shared-types - ModeTemplate with Hono backend and SvelteKit frontend - Auth store refactored to class-based Svelte 5 pattern - SSR-safe hydrate() pattern for localStorage access - Frontend builds successfully with Svelte 5 runes
This commit is contained in:
@@ -0,0 +1 @@
|
||||
import{d as F,f as c,a as d,s as M}from"../chunks/DZNd3jEa.js";import{o as A}from"../chunks/BtkHyJOA.js";import{L as q,N as C,F as L,T as w,H as p,U as H,V as R,W as g,S as b,R as T,I as B,p as D,a as O,c as l,s as u,r as v,f as S,t as W}from"../chunks/CqqhLxdp.js";import{B as I,i as P}from"../chunks/fsu08h6h.js";import{a as f}from"../chunks/BRRLaaPq.js";function U(i,o,...t){var r=new I(i);q(()=>{const e=o()??null;r.ensure(e,e&&(a=>e(a,...t)))},C)}function V(i,o){let t=null,r=p;var e;if(p){t=B;for(var a=H(document.head);a!==null&&(a.nodeType!==R||a.data!==i);)a=g(a);if(a===null)b(!1);else{var h=g(a);a.remove(),T(h)}}p||(e=document.head.appendChild(L()));try{q(()=>o(e),w)}finally{r&&(b(!0),T(t))}}var j=c('<meta name="description" content="Mode Template"/>'),z=c('<span> </span> <button class="svelte-12qhfyh">Logout</button>',1),G=c('<button class="svelte-12qhfyh">Login</button>'),J=c('<div class="app svelte-12qhfyh"><header class="svelte-12qhfyh"><nav class="svelte-12qhfyh"><a href="/" class="svelte-12qhfyh">Home</a> <!></nav></header> <main class="svelte-12qhfyh"><!></main></div>');function $(i,o){D(o,!0),A(()=>{f.hydrate()});var t=J();V("12qhfyh",s=>{var n=j();d(s,n)});var r=l(t),e=l(r),a=u(l(e),2);{var h=s=>{var n=z(),m=S(n),k=l(m);v(m);var x=u(m,2);x.__click=()=>f.logout(),W(()=>{var y;return M(k,`Welcome, ${((y=f.user)==null?void 0:y.displayName)??""}`)}),d(s,n)},E=s=>{var n=G();n.__click=()=>f.redirectToLogin(),d(s,n)};P(a,s=>{f.isAuthenticated?s(h):s(E,!1)})}v(e),v(r);var _=u(r,2),N=l(_);U(N,()=>o.children),v(_),v(t),d(i,t),O()}F(["click"]);export{$ as component};
|
||||
@@ -0,0 +1 @@
|
||||
import{f as h,a as g,s as e}from"../chunks/DZNd3jEa.js";import{i as l}from"../chunks/974AMC2H.js";import{p as v,f as d,t as _,a as x,c as o,r as p,s as $}from"../chunks/CqqhLxdp.js";import{s as k,p as m}from"../chunks/CuIyQV9Z.js";const b={get error(){return m.error},get status(){return m.status}};k.updated.check;const f=b;var E=h("<h1> </h1> <p> </p>",1);function z(i,c){v(c,!1),l();var t=E(),r=d(t),n=o(r,!0);p(r);var s=$(r,2),u=o(s,!0);p(s),_(()=>{var a;e(n,f.status),e(u,(a=f.error)==null?void 0:a.message)}),g(i,t),x()}export{z as component};
|
||||
@@ -0,0 +1 @@
|
||||
import{d as E,f as m,a as o,c as N,s as _}from"../chunks/DZNd3jEa.js";import{i as P}from"../chunks/974AMC2H.js";import{p as S,s as n,f as p,a as W,c as g,r as d,t as j}from"../chunks/CqqhLxdp.js";import{i as u}from"../chunks/fsu08h6h.js";import{a as i}from"../chunks/BRRLaaPq.js";var q=m("<p>Loading...</p>"),z=m("<p> </p> <p> </p>",1),B=m("<p>Please log in to continue.</p> <button>Sign in with Microsoft</button>",1),C=m("<h1>Mode Template</h1> <!>",1);function J(h,b){S(b,!1),P();var f=C(),x=n(p(f),2);{var k=a=>{var s=q();o(a,s)},L=a=>{var s=N(),M=p(s);{var T=t=>{var r=z(),e=p(r),y=g(e);d(e);var l=n(e,2),A=g(l);d(l),j(()=>{var v,c;_(y,`Welcome, ${((v=i.user)==null?void 0:v.displayName)??""}!`),_(A,`Email: ${((c=i.user)==null?void 0:c.email)??""}`)}),o(t,r)},w=t=>{var r=B(),e=n(p(r),2);e.__click=()=>i.redirectToLogin(),o(t,r)};u(M,t=>{i.isAuthenticated?t(T):t(w,!1)},!0)}o(a,s)};u(x,a=>{i.loading?a(k):a(L,!1)})}o(h,f),W()}E(["click"]);export{J as component};
|
||||
@@ -0,0 +1 @@
|
||||
import{f as p,a as n,s as y}from"../chunks/DZNd3jEa.js";import{o as $}from"../chunks/BtkHyJOA.js";import{p as k,s as x,f as g,a as M,e as l,h as N,g as u,c as P,r as w,y as A,t as I}from"../chunks/CqqhLxdp.js";import{i as R}from"../chunks/fsu08h6h.js";import{s as S,a as T}from"../chunks/hV77cT_P.js";import{s as j,g as q}from"../chunks/CuIyQV9Z.js";import{a as z}from"../chunks/BRRLaaPq.js";const B=()=>{const e=j;return{page:{subscribe:e.page.subscribe},navigating:{subscribe:e.navigating.subscribe},updated:e.updated}},C={subscribe(e){return B().page.subscribe(e)}};var D=p('<p style="color: red;"> </p> <a href="/">Return home</a>',1),E=p("<p>Please wait...</p>"),F=p("<h1>Authenticating...</h1> <!>",1);function U(e,i){k(i,!0);const f=()=>T(C,"$page",b),[b,v]=S();let r=N(null);$(async()=>{const s=f().url.searchParams,a=s.get("email"),t=s.get("displayName"),o=s.get("token"),m=s.get("error");if(m){l(r,m,!0);return}a&&t&&o?(z.login({email:a,displayName:t,pbToken:o}),q("/")):l(r,"Invalid callback parameters")});var c=F(),h=x(g(c),2);{var _=s=>{var a=D(),t=g(a),o=P(t,!0);w(t),A(2),I(()=>y(o,u(r))),n(s,a)},d=s=>{var a=E();n(s,a)};R(h,s=>{u(r)?s(_):s(d,!1)})}n(e,c),M(),v()}export{U as component};
|
||||
Reference in New Issue
Block a user