@auersperg/flare 0.3.9 → 0.3.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/README.md +3 -1
  2. package/dist/cli/{chunk-0s0vrjtw.js → chunk-1yvbecac.js} +97 -11
  3. package/dist/cli/{chunk-5yg1zj5n.js → chunk-7ym0f672.js} +6 -6
  4. package/dist/cli/{chunk-5s6zv1h9.js → chunk-8gzfscca.js} +5 -7
  5. package/dist/cli/chunk-xn3e3gev.js +9 -0
  6. package/dist/cli/{chunk-vx7kmczm.js → chunk-yhvbksrm.js} +32 -7
  7. package/dist/cli/flare.js +5 -5
  8. package/dist/platform/admin.js +35 -24
  9. package/dist/platform/dashboard/_astro/ai-view.DxgwI4OB.js +1 -0
  10. package/dist/platform/dashboard/_astro/{auth-view.EASEF9BN.js → auth-view.C16WPVOx.js} +1 -1
  11. package/dist/platform/dashboard/_astro/{cli-approval.DwZVHdyo.js → cli-approval.emPTVRqn.js} +1 -1
  12. package/dist/platform/dashboard/_astro/client.4z54xJ_z.js +1 -0
  13. package/dist/platform/dashboard/_astro/{common.TAClb6G9.js → common.9pujiaSZ.js} +1 -1
  14. package/dist/platform/dashboard/_astro/{data-view.BaHEU4Xa.js → data-view.BCmdi_cs.js} +1 -1
  15. package/dist/platform/dashboard/_astro/{functions-view.BGOYuDwu.js → functions-view.Cf640vhX.js} +1 -1
  16. package/dist/platform/dashboard/_astro/index.CDrYoVkO.css +2 -0
  17. package/dist/platform/dashboard/_astro/index.astro_astro_type_script_index_0_lang.cFeBPGtv.js +3 -0
  18. package/dist/platform/dashboard/_astro/input-group.Dsc4z0iT.js +1 -0
  19. package/dist/platform/dashboard/_astro/{sdk-view.2ErPn4cO.js → sdk-view.Cs96E0YV.js} +1 -1
  20. package/dist/platform/dashboard/_astro/{services-view.iZujitxl.js → services-view.DhwKE_RK.js} +1 -1
  21. package/dist/platform/dashboard/_astro/{settings-view.CqK-mrlB.js → settings-view.Dsc34AAW.js} +1 -1
  22. package/dist/platform/dashboard/bootstrap/action.js +43 -0
  23. package/dist/platform/dashboard/bootstrap/facet.js +64 -46
  24. package/dist/platform/dashboard/bootstrap/openapi.json +1 -1
  25. package/dist/platform/dashboard/bootstrap/release.json +3 -3
  26. package/dist/platform/dashboard/index.html +1 -1
  27. package/dist/platform/manifest.json +48 -43
  28. package/dist/platform/runtime.js +24267 -865
  29. package/dist/sdk/backup.js +4 -4
  30. package/dist/sdk/client.js +22 -41
  31. package/dist/sdk/cloudflare.d.ts +4 -0
  32. package/dist/sdk/cloudflare.js +14 -11
  33. package/dist/sdk/codex.d.ts +20 -0
  34. package/dist/sdk/codex.js +17 -0
  35. package/dist/sdk/database.js +45 -27
  36. package/dist/sdk/http.d.ts +2 -0
  37. package/dist/sdk/http.js +27 -0
  38. package/dist/sdk/protocol.d.ts +6 -0
  39. package/dist/sdk/protocol.js +12 -0
  40. package/dist/sdk/schema.d.ts +2 -2
  41. package/dist/sdk/schema.js +7 -6
  42. package/dist/sdk/search.d.ts +25 -0
  43. package/dist/sdk/search.js +22 -0
  44. package/dist/sdk/server.d.ts +14 -1
  45. package/dist/sdk/server.js +9 -1
  46. package/package.json +2 -2
  47. package/dist/platform/dashboard/_astro/client.BUUZgEFj.js +0 -1
  48. package/dist/platform/dashboard/_astro/index.BPQdjJ4j.css +0 -2
  49. package/dist/platform/dashboard/_astro/index.astro_astro_type_script_index_0_lang.Blg5hU9g.js +0 -3
  50. package/dist/platform/dashboard/_astro/input-group.DUp-h0xx.js +0 -1
@@ -1,3 +1,7 @@
1
+ import type { CodexContext } from "./codex.js";
2
+ export type { CodexContext, CodexTask, CodexTaskInput } from "./codex.js";
3
+ import type { SearchContext } from "./search.js";
4
+ export type { SearchContext, SearchHit, SearchState } from "./search.js";
1
5
  export { z } from "zod";
2
6
  import type { StandardSchemaV1 } from "@standard-schema/spec";
3
7
  import type { Validator, Schema } from "./schema.js";
@@ -5,7 +9,7 @@ import type { ReadDatabase, WriteDatabase } from "./database.js";
5
9
  export { defineSchema, defineTable, schemaContract } from "./schema.js";
6
10
  export type { Validator, Schema, Doc, Value, Input, SchemaContract, } from "./schema.js";
7
11
  export type { ReadDatabase, WriteDatabase, Page } from "./database.js";
8
- import { type Auth, type FunctionKind, type FunctionRef, type Json, type Manifest } from "./protocol.js";
12
+ import { type McpTool, type Auth, type FunctionKind, type FunctionRef, type Json, type Manifest } from "./protocol.js";
9
13
  export interface QueryContext<S extends Schema = Schema> {
10
14
  readonly db: ReadDatabase<S>;
11
15
  readonly auth: Auth | null;
@@ -21,6 +25,8 @@ export interface MutationContext<S extends Schema = Schema> {
21
25
  };
22
26
  }
23
27
  export interface ActionContext {
28
+ readonly codex: CodexContext;
29
+ readonly search: SearchContext;
24
30
  readonly auth: Auth | null;
25
31
  runQuery<I, O>(ref: FunctionRef<I, O>, args: I): Promise<O>;
26
32
  runMutation<I, O>(ref: FunctionRef<I, O>, args: I): Promise<O>;
@@ -86,6 +92,7 @@ export interface ActionContext {
86
92
  type Context<K extends FunctionKind, S extends Schema = Schema> = K extends "action" ? ActionContext : K extends "mutation" ? MutationContext<S> : QueryContext<S>;
87
93
  export interface Definition<K extends FunctionKind = FunctionKind, I = any, O = any, S extends Schema = Schema> {
88
94
  readonly kind: K;
95
+ readonly mcp?: McpTool;
89
96
  readonly input: Validator<any, I>;
90
97
  readonly output: Validator<O, any>;
91
98
  readonly auth: "required" | "public" | "internal";
@@ -95,18 +102,21 @@ export declare const query: <IV extends Validator, OV extends Validator>(options
95
102
  input: IV;
96
103
  output: OV;
97
104
  auth?: "required" | "public" | "internal";
105
+ mcp?: McpTool;
98
106
  handler: (ctx: QueryContext<Schema>, args: StandardSchemaV1.InferOutput<IV>) => StandardSchemaV1.InferInput<OV> | Promise<StandardSchemaV1.InferInput<OV>>;
99
107
  }) => Definition<"query", StandardSchemaV1.InferOutput<IV>, StandardSchemaV1.InferInput<OV>, Schema>;
100
108
  export declare const mutation: <IV extends Validator, OV extends Validator>(options: {
101
109
  input: IV;
102
110
  output: OV;
103
111
  auth?: "required" | "public" | "internal";
112
+ mcp?: McpTool;
104
113
  handler: (ctx: MutationContext<Schema>, args: StandardSchemaV1.InferOutput<IV>) => StandardSchemaV1.InferInput<OV> | Promise<StandardSchemaV1.InferInput<OV>>;
105
114
  }) => Definition<"mutation", StandardSchemaV1.InferOutput<IV>, StandardSchemaV1.InferInput<OV>, Schema>;
106
115
  export declare const action: <IV extends Validator, OV extends Validator>(options: {
107
116
  input: IV;
108
117
  output: OV;
109
118
  auth?: "required" | "public" | "internal";
119
+ mcp?: McpTool;
110
120
  handler: (ctx: ActionContext, args: StandardSchemaV1.InferOutput<IV>) => StandardSchemaV1.InferInput<OV> | Promise<StandardSchemaV1.InferInput<OV>>;
111
121
  }) => Definition<"action", StandardSchemaV1.InferOutput<IV>, StandardSchemaV1.InferInput<OV>, Schema>;
112
122
  export declare function createFunctions<S extends Schema>(): {
@@ -114,18 +124,21 @@ export declare function createFunctions<S extends Schema>(): {
114
124
  input: IV;
115
125
  output: OV;
116
126
  auth?: "required" | "public" | "internal";
127
+ mcp?: McpTool;
117
128
  handler: (ctx: QueryContext<S>, args: StandardSchemaV1.InferOutput<IV>) => StandardSchemaV1.InferInput<OV> | Promise<StandardSchemaV1.InferInput<OV>>;
118
129
  }) => Definition<"query", StandardSchemaV1.InferOutput<IV>, StandardSchemaV1.InferInput<OV>, S>;
119
130
  mutation: <IV extends Validator, OV extends Validator>(options: {
120
131
  input: IV;
121
132
  output: OV;
122
133
  auth?: "required" | "public" | "internal";
134
+ mcp?: McpTool;
123
135
  handler: (ctx: MutationContext<S>, args: StandardSchemaV1.InferOutput<IV>) => StandardSchemaV1.InferInput<OV> | Promise<StandardSchemaV1.InferInput<OV>>;
124
136
  }) => Definition<"mutation", StandardSchemaV1.InferOutput<IV>, StandardSchemaV1.InferInput<OV>, S>;
125
137
  action: <IV extends Validator, OV extends Validator>(options: {
126
138
  input: IV;
127
139
  output: OV;
128
140
  auth?: "required" | "public" | "internal";
141
+ mcp?: McpTool;
129
142
  handler: (ctx: ActionContext, args: StandardSchemaV1.InferOutput<IV>) => StandardSchemaV1.InferInput<OV> | Promise<StandardSchemaV1.InferInput<OV>>;
130
143
  }) => Definition<"action", StandardSchemaV1.InferOutput<IV>, StandardSchemaV1.InferInput<OV>, Schema>;
131
144
  };
@@ -3,6 +3,7 @@ import { schemaContract } from "./schema.js";
3
3
  export { defineSchema, defineTable, schemaContract } from "./schema.js";
4
4
  import {
5
5
  assertPath,
6
+ assertMcpTools,
6
7
  boundedJson,
7
8
  LIMITS,
8
9
  FlareError
@@ -63,8 +64,15 @@ export function manifest(app) {
63
64
  });
64
65
  if (!input || !output)
65
66
  throw new FlareError("INVALID_CONTRACT", `${path} requires JSON Schema converters`);
66
- functions[path] = { kind: fn.kind, auth: fn.auth, input, output };
67
+ functions[path] = {
68
+ kind: fn.kind,
69
+ auth: fn.auth,
70
+ input,
71
+ output,
72
+ ...fn.mcp !== undefined ? { mcp: fn.mcp } : {}
73
+ };
67
74
  }
75
+ assertMcpTools(functions);
68
76
  boundedJson(functions, 1048576);
69
77
  return { protocol: 1, runtimeAbi: 4, functions };
70
78
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@auersperg/flare",
3
- "version": "0.3.9",
3
+ "version": "0.3.11",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "description": "Flare client, server declarations and development CLI",
@@ -36,7 +36,7 @@
36
36
  },
37
37
  "dependencies": {
38
38
  "@standard-schema/spec": "1.1.0",
39
- "zod": "4.6.5",
39
+ "zod": "4.6.6",
40
40
  "json-schema-to-typescript": "16.0.0"
41
41
  },
42
42
  "engines": {
@@ -1 +0,0 @@
1
- var e=Object.freeze({inputBytes:65536,outputBytes:262144,frameBytes:8192,subscriptions:64,fileBytes:10485760}),t=class extends Error{code;ambiguous;constructor(e,t,n=!1){super(t),this.code=e,this.ambiguous=n,this.name=`FlareError`}};function n(e){if(e.length>256||!/^[A-Za-z][A-Za-z0-9_]*(\/[A-Za-z][A-Za-z0-9_]*)*$/.test(e)||e.split(`/`).some(e=>[`__proto__`,`prototype`,`constructor`].includes(e)))throw new t(`INVALID_PATH`,`Invalid function path`)}function r(e,t){return n(e),Object.freeze({path:e,kind:t})}function i(e){let n=new Set;function r(e,i){if(i>40)throw new t(`INVALID_JSON`,`JSON nesting limit exceeded`);if(e===null||typeof e==`string`||typeof e==`boolean`||typeof e==`number`&&Number.isFinite(e))return e;if(typeof e!=`object`||!e||n.has(e))throw new t(`INVALID_JSON`,`Expected lossless JSON`);if(!Array.isArray(e)&&Object.getPrototypeOf(e)!==Object.prototype&&Object.getPrototypeOf(e)!==null)throw new t(`INVALID_JSON`,`Expected plain JSON object`);if(Object.getOwnPropertySymbols(e).length)throw new t(`INVALID_JSON`,`Symbol keys are unsupported`);n.add(e);let a;if(Array.isArray(e))a=Array.from(e,e=>r(e,i+1));else{let n=Object.create(null);for(let a of Object.keys(e).sort()){let o=Object.getOwnPropertyDescriptor(e,a);if(!(`value`in o))throw new t(`INVALID_JSON`,`Getters are unsupported`);n[a]=r(o.value,i+1)}a=n}return n.delete(e),a}return JSON.stringify(r(e,0))}function a(e,n){let r=i(e);if(new TextEncoder().encode(r).byteLength>n)throw new t(`TOO_LARGE`,`JSON payload exceeds limit`);return r}function o(n){if(n.size>e.fileBytes)throw new t(`TOO_LARGE`,`Maximum file size: 10 MiB`);if(!n.name||n.name.length>120||/[\x00-\x1f\x7f/\\]/.test(n.name))throw new t(`INVALID_INPUT`,`File name must be 1–120 characters, without path separators`);return{name:n.name,size:n.size,type:[`text/plain`,`image/png`,`image/jpeg`,`image/webp`,`application/pdf`].includes(n.type)?n.type:`application/octet-stream`}}async function s(n,r,i={}){if(r.size>e.fileBytes)throw new t(`TOO_LARGE`,`Maximum file size: 10 MiB`);let a=new URL(n.url);if(a.username||a.password||a.protocol!==`https:`&&!(a.protocol===`http:`&&[`localhost`,`127.0.0.1`,`[::1]`].includes(a.hostname)))throw new t(`INVALID_URL`,`Expected secure upload URL`);let o;try{o=await(i.fetch??globalThis.fetch)(a.href,{method:`POST`,body:r,redirect:`error`,credentials:`omit`,signal:i.signal??AbortSignal.timeout(i.timeoutMs??12e4)})}catch{throw new t(`UPLOAD_UNKNOWN`,`Connection interrupted or upload timed out; refresh the file list before trying again`,!0)}let s=await o.json().catch(()=>null);if(!o.ok){let e=s&&typeof s==`object`&&`error`in s&&typeof s.error==`string`?s.error:`HTTP_${o.status}`;throw new t(e,`Upload failed: ${e}`,o.status>=500)}if(!s||typeof s!=`object`||!(`id`in s)||typeof s.id!=`string`)throw new t(`INVALID_RESPONSE`,`Upload outcome is unknown; refresh the file list before uploading again`,!0);return{id:s.id}}var c=new Set([`UNAUTHORIZED`,`AUTH_EXPIRED`,`FORBIDDEN`,`AUTH_DISABLED`,`HTTP_401`,`HTTP_403`]);function l(r){let o=new URL(r.url);if(!/^https?:$/.test(o.protocol)||o.username||o.password||o.search||o.hash)throw new t(`INVALID_URL`,`Expected backend HTTP URL`);if(o.protocol===`http:`&&![`localhost`,`127.0.0.1`,`[::1]`].includes(o.hostname))throw new t(`INVALID_URL`,`Remote backends require HTTPS`);o.pathname=o.pathname.replace(/\/$/,``);let s=r.fetch??globalThis.fetch;if(!s)throw new t(`TRANSPORT_UNAVAILABLE`,`Provide a fetch implementation`);let l=new Map,u=!1,d,f=!1,p=0,m=0,h=0,g,_=new Set,v=e=>`${o.href.replace(/\/$/,``)}${e}`,y=(e,t,n)=>{for(let r of e.observers)try{r[t]?.(t===`next`?JSON.parse(i(n)):n)}catch{}};function b(){if(u)throw new t(`DISPOSED`,`Client is disposed`)}async function x(n,i,o){b();let c=a(i,e.inputBytes),l;try{l=await r.getToken?.()??null}catch{throw new t(`AUTH_UNAVAILABLE`,`Cannot obtain access token`)}b();let u=new AbortController,d=setTimeout(()=>u.abort(),r.requestTimeoutMs??3e4);try{let r=await s(v(n),{method:`POST`,headers:{"Content-Type":`application/json`,...l?{Authorization:`Bearer ${l}`}:{}},body:c,signal:u.signal,redirect:`error`});if(!r.body)throw new t(`INVALID_RESPONSE`,`Missing response body`,o);let i=r.body.getReader(),d=0,f=[];try{for(;;){let{done:n,value:r}=await i.read();if(n)break;if(d+=r.byteLength,d>e.outputBytes)throw new t(`INVALID_RESPONSE`,`Response exceeds limit`,o);f.push(r)}}finally{await i.cancel().catch(()=>{})}let p=new Uint8Array(d),m=0;for(let e of f)p.set(e,m),m+=e.byteLength;let h;try{h=JSON.parse(new TextDecoder(`utf-8`,{fatal:!0}).decode(p))}catch(e){throw r.ok?e:new t(`HTTP_${r.status}`,`Backend request failed`,o&&r.status>=500)}if(!r.ok)throw new t(h&&typeof h==`object`&&`error`in h&&typeof h.error==`string`&&/^[A-Z][A-Z0-9_]{0,63}$/.test(h.error)?h.error:`HTTP_${r.status}`,`Backend request failed`,o&&r.status>=500);if(!h||typeof h!=`object`||!(`result`in h))throw new t(`INVALID_RESPONSE`,`Invalid protocol envelope`,o);return a(h.result,e.outputBytes),h.result}catch(e){throw e instanceof t?e:e instanceof SyntaxError?new t(`INVALID_RESPONSE`,`Invalid JSON response`,o):new t(`TRANSPORT_ERROR`,o?`Write outcome is unknown; do not replay automatically`:`Backend request interrupted`,o)}finally{clearTimeout(d)}}function S(t){d?.send(a(t,e.frameBytes))}function C(e){S({type:`subscribe`,id:e.id,path:e.ref.path,args:e.args})}function w(){if(u||!l.size||g)return;let e=Math.min(3e4,250*2**Math.min(p++,7));g=setTimeout(()=>{g=void 0,T()},e)}async function T(){if(u||f||d||!l.size)return;f=!0;let n=++m;try{let o=await x(`/v1/live/ticket`,{},!1);if(u||n!==m||!l.size)return;if(!o||typeof o.ticket!=`string`||o.ticket.length>1024)throw new t(`INVALID_RESPONSE`,`Invalid live ticket`);let s=new URL(v(`/v1/live`));s.protocol=s.protocol===`https:`?`wss:`:`ws:`,s.searchParams.set(`ticket`,o.ticket);let f=r.createWebSocket?r.createWebSocket(s.href):new globalThis.WebSocket(s.href);d=f;let h=()=>{if(!(d!==f||u)){p=0;for(let e of l.values())e.revision=-1,e.hasValue=!1,e.terminal||C(e)}},g=n=>{if(!(d!==f||u))try{if(typeof n.data!=`string`||new TextEncoder().encode(n.data).byteLength>e.outputBytes+1024)throw Error(`Invalid frame`);let r=JSON.parse(n.data);if(r.type===`ready`)return;let o=[...l.values()].find(e=>e.id===r.id);if(!o||o.terminal)return;if(r.type===`error`){o.terminal=!0,c.has(r.code)&&(o.hasValue=!1,o.value=void 0),y(o,`error`,new t(typeof r.code==`string`?r.code:`LIVE_ERROR`,`Live subscription failed`));return}if(r.type!==`snapshot`||!Number.isSafeInteger(r.revision)||r.revision<0||!(`result`in r))throw Error(`Invalid snapshot`);let s=a(r.result,e.outputBytes);if(r.revision>o.revision){let e=!o.hasValue||i(o.value)!==s;o.revision=r.revision,o.value=r.result,o.hasValue=!0,e&&y(o,`next`,o.value)}S({type:`ack`,id:o.id,revision:o.revision})}catch{f.close(1002,`Invalid protocol frame`)}},b=e=>{if(E(),d===f){d=void 0;for(let n of l.values())e.code===1008&&(n.hasValue=!1,n.value=void 0,n.revision=-1),n.terminal||y(n,`error`,new t(e.code===1008?`AUTH_EXPIRED`:`LIVE_DISCONNECTED`,`Live reconnecting; next snapshot will be current`));w()}},T=()=>f.close(),E=()=>{f.removeEventListener(`open`,h),f.removeEventListener(`message`,g),f.removeEventListener(`close`,b),f.removeEventListener(`error`,T),_.delete(E)};_.add(E),f.addEventListener(`open`,h),f.addEventListener(`message`,g),f.addEventListener(`close`,b),f.addEventListener(`error`,T)}catch(e){if(u||n!==m)return;for(let n of l.values())e instanceof t&&c.has(e.code)&&(n.hasValue=!1,n.value=void 0,n.revision=-1),y(n,`error`,e instanceof t?e:new t(`LIVE_UNAVAILABLE`,`Live connection failed`));w()}finally{f=!1,!u&&n!==m&&!d&&l.size&&w()}}function E(e){return async(r,i)=>{if(n(r.path),r.kind!==e)throw new t(`INVALID_KIND`,`Expected a ${e} function`);return x(`/v1/call`,{path:r.path,kind:r.kind,args:i},r.kind===`mutation`||r.kind===`action`)}}return{query:E(`query`),mutation:E(`mutation`),action:E(`action`),onUpdate(r,o,s,c){let u={next:s,error:c};if(b(),n(r.path),r.kind!==`query`)throw new t(`INVALID_KIND`,`Only queries are subscribable`);a({type:`subscribe`,id:`subscription-9999999999`,path:r.path,args:o},e.frameBytes);let f=i({path:r.path,args:o}),p=l.get(f);if(!p){if(l.size>=e.subscriptions)throw new t(`TOO_MANY_SUBSCRIPTIONS`,`Subscription limit exceeded`);p={id:`subscription-${++h}`,ref:r,args:JSON.parse(i(o)),observers:new Set,revision:-1,hasValue:!1,terminal:!1},l.set(f,p),d?.readyState===1&&C(p)}let v={next:u.next,error:u.error};p.observers.add(v),p.hasValue&&y({...p,observers:new Set([u])},`next`,p.value),T();let x=!1;return()=>{if(!x&&(x=!0,p.observers.delete(v),p.observers.size||(l.delete(f),d?.readyState===1&&S({type:`unsubscribe`,id:p.id})),!l.size)){++m,g&&clearTimeout(g),g=void 0;let e=d;d=void 0;for(let e of[..._])e();e?.close(1e3,`No subscriptions`)}}},refreshAuth(){b(),++m,g&&clearTimeout(g),g=void 0;for(let e of[..._])e();let e=d;d=void 0,e?.close(1e3,`Authorization changed`);for(let e of l.values())e.hasValue=!1,e.value=void 0,e.revision=-1,e.terminal=!1,y(e,`error`,new t(`AUTH_CHANGED`,`Authorization changed; cached value invalidated`));T()},dispose(){if(!u){u=!0,++m,g&&clearTimeout(g),g=void 0;for(let e of[..._])e();l.clear(),d?.close(1e3,`Disposed`),d=void 0}}}}export{r as i,o as n,s as r,l as t};
@@ -1,2 +0,0 @@
1
- /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
2
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){:root,:host{--shimmer-angle:20deg}*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-duration:initial;--tw-content:"";--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0;--scroll-fade-t:0px;--scroll-fade-b:0px;--scroll-fade-s:0px;--scroll-fade-e:0px;--scroll-fade-mask:initial;--shimmer-image:initial;--shimmer-text-fill:initial;--tw-tracking:initial}}}@layer theme{:root,:host{--font-sans:"Geist Variable", sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-amber-100:oklch(96.2% .059 95.617);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-amber-900:oklch(41.4% .112 45.904);--color-yellow-100:oklch(97.3% .071 103.193);--color-yellow-200:oklch(94.5% .129 101.54);--color-yellow-700:oklch(55.4% .135 66.442);--color-yellow-900:oklch(42.1% .095 57.708);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-600:oklch(59.6% .145 163.225);--color-emerald-700:oklch(50.8% .118 165.612);--color-emerald-900:oklch(37.8% .077 168.94);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-900:oklch(37.9% .146 265.522);--color-purple-100:oklch(94.6% .033 307.174);--color-purple-200:oklch(90.2% .063 306.703);--color-purple-700:oklch(49.6% .265 301.924);--color-purple-900:oklch(38.1% .176 304.987);--color-black:#000;--spacing:.25rem;--container-sm:24rem;--container-lg:32rem;--container-xl:36rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--leading-snug:1.375;--leading-normal:1.5;--leading-relaxed:1.625;--blur-xs:4px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:"Geist Variable", sans-serif;--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){*{outline-color:color-mix(in oklab, var(--ring) 50%, transparent)}}body{background-color:var(--background);color:var(--foreground)}html{font-family:Geist Variable,sans-serif}body{margin:0}button,summary{cursor:pointer}}@layer components{.page-title{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.section-title{align-items:center;gap:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);display:flex}.explorer-sidebar{width:calc(var(--spacing) * 40);border-right-style:var(--tw-border-style);background-color:var(--sidebar);border-right-width:1px;flex-shrink:0}@supports (color:color-mix(in lab, red, red)){.explorer-sidebar{background-color:color-mix(in oklab, var(--sidebar) 40%, transparent)}}@media (width>=48rem){.explorer-sidebar{width:calc(var(--spacing) * 60)}}.detail-header{justify-content:space-between;align-items:center;gap:calc(var(--spacing) * 2);border-bottom-style:var(--tw-border-style);padding:calc(var(--spacing) * 4);border-bottom-width:1px;flex-wrap:wrap;display:flex}.code-block{border-style:var(--tw-border-style);background-color:var(--muted);border-width:1px;min-width:0;max-width:100%;overflow:auto}@supports (color:color-mix(in lab, red, red)){.code-block{background-color:color-mix(in oklab, var(--muted) 30%, transparent)}}.code-block{padding:calc(var(--spacing) * 4);font-family:var(--font-mono);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed);white-space:pre}}@layer utilities{.\@container\/card-header{container:card-header/inline-size}.\@container\/field-group{container:field-group/inline-size}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.top-0{top:0}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-\[calc\(--spacing\(1\.25\)\)\]{top:calc(calc(var(--spacing) * 1.25))}.right-2{right:calc(var(--spacing) * 2)}.right-\[calc\(--spacing\(1\.25\)\)\]{right:calc(calc(var(--spacing) * 1.25))}.bottom-0{bottom:0}.left-1\/2{left:50%}.isolate{isolation:isolate}.z-10{z-index:10}.z-50{z-index:50}.order-first{order:-9999}.order-last{order:9999}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mx-auto{margin-inline:auto}.-my-2{margin-block:calc(var(--spacing) * -2)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-auto{margin-top:auto}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-2\.5{margin-bottom:calc(var(--spacing) * 2.5)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.ml-4{margin-left:calc(var(--spacing) * 4)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-row{display:table-row}.field-sizing-content{field-sizing:content}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-14{height:calc(var(--spacing) * 14)}.h-\[calc\(100\%-1px\)\]{height:calc(100% - 1px)}.h-auto{height:auto}.h-dvh{height:100dvh}.h-full{height:100%}.h-px{height:1px}.max-h-\(--available-height\){max-height:var(--available-height)}.max-h-\[80vh\]{max-height:80vh}.max-h-\[85vh\]{max-height:85vh}.min-h-0{min-height:0}.min-h-16{min-height:calc(var(--spacing) * 16)}.min-h-full{min-height:100%}.w-\(--anchor-width\){width:var(--anchor-width)}.w-12{width:calc(var(--spacing) * 12)}.w-32{width:calc(var(--spacing) * 32)}.w-36{width:calc(var(--spacing) * 36)}.w-fit{width:fit-content}.w-full{width:100%}.max-w-48{max-width:calc(var(--spacing) * 48)}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-lg{max-width:var(--container-lg)}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.min-w-0{min-width:0}.min-w-36{min-width:calc(var(--spacing) * 36)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.caption-bottom{caption-side:bottom}.origin-\(--transform-origin\){transform-origin:var(--transform-origin)}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.resize-none{resize:none}.scroll-my-1{scroll-margin-block:var(--spacing)}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-\[minmax\(80px\,auto\)_1fr\]{grid-template-columns:minmax(80px,auto) 1fr}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-start{justify-content:flex-start}.gap-\(--card-spacing\){gap:var(--card-spacing)}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded-full{border-radius:2147483647px}.rounded-lg{border-radius:var(--radius)}.rounded-none{border-radius:0}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-amber-600\/20{border-color:#dd740033}@supports (color:color-mix(in lab, red, red)){.border-amber-600\/20{border-color:color-mix(in oklab, var(--color-amber-600) 20%, transparent)}}.border-blue-600\/20{border-color:#155dfc33}@supports (color:color-mix(in lab, red, red)){.border-blue-600\/20{border-color:color-mix(in oklab, var(--color-blue-600) 20%, transparent)}}.border-border{border-color:var(--border)}.border-emerald-600\/20{border-color:#00976733}@supports (color:color-mix(in lab, red, red)){.border-emerald-600\/20{border-color:color-mix(in oklab, var(--color-emerald-600) 20%, transparent)}}.border-input{border-color:var(--input)}.border-transparent{border-color:#0000}.bg-accent{background-color:var(--accent)}.bg-amber-100\/50{background-color:#fef3c680}@supports (color:color-mix(in lab, red, red)){.bg-amber-100\/50{background-color:color-mix(in oklab, var(--color-amber-100) 50%, transparent)}}.bg-background{background-color:var(--background)}.bg-black\/10{background-color:#0000001a}@supports (color:color-mix(in lab, red, red)){.bg-black\/10{background-color:color-mix(in oklab, var(--color-black) 10%, transparent)}}.bg-blue-100\/50{background-color:#dbeafe80}@supports (color:color-mix(in lab, red, red)){.bg-blue-100\/50{background-color:color-mix(in oklab, var(--color-blue-100) 50%, transparent)}}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-destructive\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/10{background-color:color-mix(in oklab, var(--destructive) 10%, transparent)}}.bg-emerald-100\/50{background-color:#d0fae580}@supports (color:color-mix(in lab, red, red)){.bg-emerald-100\/50{background-color:color-mix(in oklab, var(--color-emerald-100) 50%, transparent)}}.bg-muted,.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/50{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.bg-popover{background-color:var(--popover)}.bg-primary{background-color:var(--primary)}.bg-purple-100\/50{background-color:#f3e8ff80}@supports (color:color-mix(in lab, red, red)){.bg-purple-100\/50{background-color:color-mix(in oklab, var(--color-purple-100) 50%, transparent)}}.bg-secondary{background-color:var(--secondary)}.bg-sidebar{background-color:var(--sidebar)}.bg-sidebar-accent{background-color:var(--sidebar-accent)}.bg-transparent{background-color:#0000}.bg-yellow-100\/50{background-color:#fef9c280}@supports (color:color-mix(in lab, red, red)){.bg-yellow-100\/50{background-color:color-mix(in oklab, var(--color-yellow-100) 50%, transparent)}}.bg-clip-padding{background-clip:padding-box}.p-\(--card-spacing\){padding:var(--card-spacing)}.p-0{padding:0}.p-2{padding:calc(var(--spacing) * 2)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.p-\[3px\]{padding:3px}.px-\(--card-spacing\){padding-inline:var(--card-spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-\(--card-spacing\){padding-block:var(--card-spacing)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.pt-0{padding-top:0}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-2\.5{padding-left:calc(var(--spacing) * 2.5)}.text-center{text-align:center}.text-left{text-align:left}.align-middle{vertical-align:middle}.font-heading{font-family:var(--font-sans)}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-xs\/relaxed{font-size:var(--text-xs);line-height:var(--leading-relaxed)}.leading-none{--tw-leading:1;line-height:1}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-balance{text-wrap:balance}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.text-amber-700{color:var(--color-amber-700)}.text-blue-700{color:var(--color-blue-700)}.text-card-foreground{color:var(--card-foreground)}.text-destructive{color:var(--destructive)}.text-emerald-700{color:var(--color-emerald-700)}.text-foreground,.text-foreground\/60{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.text-foreground\/60{color:color-mix(in oklab, var(--foreground) 60%, transparent)}}.text-muted-foreground{color:var(--muted-foreground)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-purple-700{color:var(--color-purple-700)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-sidebar-accent-foreground{color:var(--sidebar-accent-foreground)}.text-yellow-700{color:var(--color-yellow-700)}.underline-offset-4{text-underline-offset:4px}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-foreground\/10{--tw-ring-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.ring-foreground\/10{--tw-ring-color:color-mix(in oklab, var(--foreground) 10%, transparent)}}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-100{--tw-duration:.1s;transition-duration:.1s}.outline-none{--tw-outline-style:none;outline-style:none}.select-all{-webkit-user-select:all;user-select:all}.select-none{-webkit-user-select:none;user-select:none}.\[--card-spacing\:--spacing\(4\)\]{--card-spacing:calc(var(--spacing) * 4)}.paused{animation-play-state:paused}.running{animation-play-state:running}:is(.\*\:w-full>*){width:100%}.group-has-data-horizontal\/field\:text-balance:is(:where(.group\/field):has(:where([data-orientation=horizontal])) *){text-wrap:balance}.group-has-\[\>input\]\/input-group\:pt-2:is(:where(.group\/input-group):has(>input) *){padding-top:calc(var(--spacing) * 2)}.group-has-\[\>input\]\/input-group\:pb-2:is(:where(.group\/input-group):has(>input) *){padding-bottom:calc(var(--spacing) * 2)}.group-has-\[\>svg\]\/alert\:col-start-2:is(:where(.group\/alert):has(>svg) *){grid-column-start:2}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *),.group-data-\[disabled\=true\]\/field\:opacity-50:is(:where(.group\/field)[data-disabled=true] *),.group-data-\[disabled\=true\]\/input-group\:opacity-50:is(:where(.group\/input-group)[data-disabled=true] *){opacity:.5}.group-data-\[size\=sm\]\/card\:text-sm:is(:where(.group\/card)[data-size=sm] *){font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.group-data-\[variant\=line\]\/tabs-list\:bg-transparent:is(:where(.group\/tabs-list)[data-variant=line] *){background-color:#0000}.group-data-\[variant\=outline\]\/field-group\:-mb-2:is(:where(.group\/field-group)[data-variant=outline] *){margin-bottom:calc(var(--spacing) * -2)}.group-data-horizontal\/tabs\:h-8:is(:where(.group\/tabs):where([data-orientation=horizontal]) *){height:calc(var(--spacing) * 8)}.group-data-vertical\/tabs\:h-fit:is(:where(.group\/tabs):where([data-orientation=vertical]) *){height:fit-content}.group-data-vertical\/tabs\:w-full:is(:where(.group\/tabs):where([data-orientation=vertical]) *){width:100%}.group-data-vertical\/tabs\:flex-col:is(:where(.group\/tabs):where([data-orientation=vertical]) *){flex-direction:column}.group-data-vertical\/tabs\:justify-start:is(:where(.group\/tabs):where([data-orientation=vertical]) *){justify-content:flex-start}.group-data-vertical\/tabs\:py-\[calc\(--spacing\(1\.25\)\)\]:is(:where(.group\/tabs):where([data-orientation=vertical]) *){padding-block:calc(calc(var(--spacing) * 1.25))}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-6::file-selector-button{height:calc(var(--spacing) * 6)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-xs::file-selector-button{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:bg-foreground:after{content:var(--tw-content);background-color:var(--foreground)}.after\:opacity-0:after{content:var(--tw-content);opacity:0}.after\:transition-opacity:after{content:var(--tw-content);transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.group-data-horizontal\/tabs\:after\:inset-x-0:is(:where(.group\/tabs):where([data-orientation=horizontal]) *):after{content:var(--tw-content);inset-inline:0}.group-data-horizontal\/tabs\:after\:bottom-\[-5px\]:is(:where(.group\/tabs):where([data-orientation=horizontal]) *):after{content:var(--tw-content);bottom:-5px}.group-data-horizontal\/tabs\:after\:h-0\.5:is(:where(.group\/tabs):where([data-orientation=horizontal]) *):after{content:var(--tw-content);height:calc(var(--spacing) * .5)}.group-data-vertical\/tabs\:after\:inset-y-0:is(:where(.group\/tabs):where([data-orientation=vertical]) *):after{content:var(--tw-content);inset-block:0}.group-data-vertical\/tabs\:after\:-right-1:is(:where(.group\/tabs):where([data-orientation=vertical]) *):after{content:var(--tw-content);right:calc(var(--spacing) * -1)}.group-data-vertical\/tabs\:after\:w-0\.5:is(:where(.group\/tabs):where([data-orientation=vertical]) *):after{content:var(--tw-content);width:calc(var(--spacing) * .5)}.last\:mt-0:last-child{margin-top:0}@media (hover:hover){.hover\:bg-\[color-mix\(in_oklch\,var\(--secondary\)\,var\(--foreground\)_5\%\)\]:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-\[color-mix\(in_oklch\,var\(--secondary\)\,var\(--foreground\)_5\%\)\]:hover{background-color:color-mix(in oklch,var(--secondary),var(--foreground) 5%)}}.hover\:bg-destructive\/20:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/20:hover{background-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.hover\:bg-muted:hover,.hover\:bg-muted\/50:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.hover\:bg-primary\/80:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/80:hover{background-color:color-mix(in oklab, var(--primary) 80%, transparent)}}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-muted-foreground:hover{color:var(--muted-foreground)}.hover\:underline:hover{text-decoration-line:underline}}.focus\:bg-accent:focus{background-color:var(--accent)}.focus\:text-accent-foreground:focus,:is(.not-data-\[variant\=destructive\]\:focus\:\*\*\:text-accent-foreground:not([data-variant=destructive]):focus *){color:var(--accent-foreground)}.focus-visible\:border-destructive\/40:focus-visible{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:border-destructive\/40:focus-visible{border-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-ring:focus-visible{outline-color:var(--ring)}.active\:not-aria-\[haspopup\]\:translate-y-px:active:not([aria-haspopup]){--tw-translate-y:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-input\/50:disabled{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.disabled\:bg-input\/50:disabled{background-color:color-mix(in oklab, var(--input) 50%, transparent)}}.disabled\:bg-transparent:disabled{background-color:#0000}.disabled\:opacity-50:disabled{opacity:.5}:where([data-slot=combobox-content]) .in-data-\[slot\=combobox-content\]\:focus-within\:border-inherit:focus-within{border-color:inherit}:where([data-slot=combobox-content]) .in-data-\[slot\=combobox-content\]\:focus-within\:ring-0:focus-within{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.has-disabled\:bg-input\/50:has(:disabled){background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.has-disabled\:bg-input\/50:has(:disabled){background-color:color-mix(in oklab, var(--input) 50%, transparent)}}.has-disabled\:opacity-50:has(:disabled){opacity:.5}.has-aria-expanded\:bg-muted\/50:has([aria-expanded=true]){background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.has-aria-expanded\:bg-muted\/50:has([aria-expanded=true]){background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.has-data-\[icon\=inline-end\]\:pr-1:has([data-icon=inline-end]){padding-right:var(--spacing)}.has-data-\[icon\=inline-end\]\:pr-1\.5:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 1.5)}.has-data-\[icon\=inline-end\]\:pr-2:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 2)}.has-data-\[icon\=inline-start\]\:pl-1:has([data-icon=inline-start]){padding-left:var(--spacing)}.has-data-\[icon\=inline-start\]\:pl-1\.5:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 1.5)}.has-data-\[icon\=inline-start\]\:pl-2:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 2)}.has-data-\[slot\=alert-action\]\:relative:has([data-slot=alert-action]){position:relative}.has-data-\[slot\=alert-action\]\:pr-18:has([data-slot=alert-action]){padding-right:calc(var(--spacing) * 18)}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-data-\[slot\=card-description\]\:grid-rows-\[auto_auto\]:has([data-slot=card-description]){grid-template-rows:auto auto}.has-data-\[slot\=card-footer\]\:pb-0:has([data-slot=card-footer]){padding-bottom:0}.has-data-checked\:border-primary\/30:has(:where([data-state=checked]),:where([data-checked]:not([data-checked=false]))){border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.has-data-checked\:border-primary\/30:has(:where([data-state=checked]),:where([data-checked]:not([data-checked=false]))){border-color:color-mix(in oklab, var(--primary) 30%, transparent)}}.has-data-checked\:bg-primary\/5:has(:where([data-state=checked]),:where([data-checked]:not([data-checked=false]))){background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.has-data-checked\:bg-primary\/5:has(:where([data-state=checked]),:where([data-checked]:not([data-checked=false]))){background-color:color-mix(in oklab, var(--primary) 5%, transparent)}}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:border-ring:has([data-slot=input-group-control]:focus-visible){border-color:var(--ring)}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-1:has([data-slot=input-group-control]:focus-visible){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-ring\/50:has([data-slot=input-group-control]:focus-visible){--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-ring\/50:has([data-slot=input-group-control]:focus-visible){--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:border-destructive:has([data-slot][aria-invalid=true]){border-color:var(--destructive)}.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-1:has([data-slot][aria-invalid=true]){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/20:has([data-slot][aria-invalid=true]){--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/20:has([data-slot][aria-invalid=true]){--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.has-\[\>\[data-align\=block-end\]\]\:h-auto:has(>[data-align=block-end]){height:auto}.has-\[\>\[data-align\=block-end\]\]\:flex-col:has(>[data-align=block-end]){flex-direction:column}.has-\[\>\[data-align\=block-start\]\]\:h-auto:has(>[data-align=block-start]){height:auto}.has-\[\>\[data-align\=block-start\]\]\:flex-col:has(>[data-align=block-start]){flex-direction:column}.has-\[\>\[data-slot\=checkbox-group\]\]\:gap-3:has(>[data-slot=checkbox-group]){gap:calc(var(--spacing) * 3)}.has-\[\>\[data-slot\=field-content\]\]\:items-start:has(>[data-slot=field-content]){align-items:flex-start}.has-\[\>\[data-slot\=field\]\]\:w-full:has(>[data-slot=field]){width:100%}.has-\[\>\[data-slot\=field\]\]\:flex-col:has(>[data-slot=field]){flex-direction:column}.has-\[\>\[data-slot\=field\]\]\:rounded-none:has(>[data-slot=field]){border-radius:0}.has-\[\>\[data-slot\=field\]\]\:border:has(>[data-slot=field]){border-style:var(--tw-border-style);border-width:1px}@media (hover:hover){.has-\[\>\[data-slot\=field\]\]\:not-has-\[\:disabled\,\[data-disabled\]\]\:hover\:bg-muted\/50:has(>[data-slot=field]):not(:has(:is(:disabled,[data-disabled]))):hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.has-\[\>\[data-slot\=field\]\]\:not-has-\[\:disabled\,\[data-disabled\]\]\:hover\:bg-muted\/50:has(>[data-slot=field]):not(:has(:is(:disabled,[data-disabled]))):hover{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}}.has-\[\>\[data-slot\=field\]\]\:has-\[\:focus-visible\]\:border-ring:has(>[data-slot=field]):has(:focus-visible){border-color:var(--ring)}.has-\[\>\[data-slot\=field\]\]\:has-\[\:focus-visible\]\:ring-1:has(>[data-slot=field]):has(:focus-visible){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.has-\[\>\[data-slot\=field\]\]\:has-\[\:focus-visible\]\:ring-ring\/50:has(>[data-slot=field]):has(:focus-visible){--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.has-\[\>\[data-slot\=field\]\]\:has-\[\:focus-visible\]\:ring-ring\/50:has(>[data-slot=field]):has(:focus-visible){--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.has-\[\>\[data-slot\=radio-group\]\]\:gap-3:has(>[data-slot=radio-group]){gap:calc(var(--spacing) * 3)}.has-\[\>button\]\:mr-\[-0\.3rem\]:has(>button){margin-right:-.3rem}.has-\[\>button\]\:ml-\[-0\.3rem\]:has(>button){margin-left:-.3rem}.has-\[\>img\:first-child\]\:pt-0:has(>img:first-child){padding-top:0}.has-\[\>kbd\]\:mr-\[-0\.15rem\]:has(>kbd){margin-right:-.15rem}.has-\[\>kbd\]\:ml-\[-0\.15rem\]:has(>kbd){margin-left:-.15rem}.has-\[\>svg\]\:grid-cols-\[auto_1fr\]:has(>svg){grid-template-columns:auto 1fr}.has-\[\>svg\]\:gap-x-2:has(>svg){column-gap:calc(var(--spacing) * 2)}.has-\[\>svg\]\:p-0:has(>svg){padding:0}.has-\[\>textarea\]\:h-auto:has(>textarea){height:auto}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-expanded\:bg-muted[aria-expanded=true]{background-color:var(--muted)}.aria-expanded\:bg-secondary[aria-expanded=true]{background-color:var(--secondary)}.aria-expanded\:text-foreground[aria-expanded=true]{color:var(--foreground)}.aria-expanded\:text-secondary-foreground[aria-expanded=true]{color:var(--secondary-foreground)}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-0[aria-invalid=true]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.aria-invalid\:ring-1[aria-invalid=true]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.data-placeholder\:text-muted-foreground[data-placeholder]{color:var(--muted-foreground)}.data-\[align-trigger\=true\]\:animate-none[data-align-trigger=true]{animation:none}.data-\[invalid\=true\]\:text-destructive[data-invalid=true]{color:var(--destructive)}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.data-\[side\=inline-end\]\:slide-in-from-left-2[data-side=inline-end]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=inline-start\]\:slide-in-from-right-2[data-side=inline-start],.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.data-\[size\=default\]\:h-8[data-size=default]{height:calc(var(--spacing) * 8)}.data-\[size\=sm\]\:h-7[data-size=sm]{height:calc(var(--spacing) * 7)}.data-\[size\=sm\]\:rounded-none[data-size=sm]{border-radius:0}.data-\[size\=sm\]\:\[--card-spacing\:--spacing\(3\)\][data-size=sm]{--card-spacing:calc(var(--spacing) * 3)}.data-\[size\=sm\]\:has-data-\[slot\=card-footer\]\:pb-0[data-size=sm]:has([data-slot=card-footer]){padding-bottom:0}:is(.\*\:data-\[slot\=alert-description\]\:text-destructive\/90>*)[data-slot=alert-description]{color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){:is(.\*\:data-\[slot\=alert-description\]\:text-destructive\/90>*)[data-slot=alert-description]{color:color-mix(in oklab, var(--destructive) 90%, transparent)}}.data-\[slot\=checkbox-group\]\:gap-3[data-slot=checkbox-group]{gap:calc(var(--spacing) * 3)}:is(.\*\:data-\[slot\=field\]\:p-2>*)[data-slot=field]{padding:calc(var(--spacing) * 2)}:is(.\*\:data-\[slot\=field-group\]\:gap-4>*)[data-slot=field-group]{gap:calc(var(--spacing) * 4)}:is(.\*\:data-\[slot\=field-label\]\:flex-auto>*)[data-slot=field-label]{flex:auto}:is(.\*\:data-\[slot\=select-value\]\:line-clamp-1>*)[data-slot=select-value]{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}:is(.\*\:data-\[slot\=select-value\]\:flex>*)[data-slot=select-value]{display:flex}:is(.\*\:data-\[slot\=select-value\]\:items-center>*)[data-slot=select-value]{align-items:center}:is(.\*\:data-\[slot\=select-value\]\:gap-1\.5>*)[data-slot=select-value]{gap:calc(var(--spacing) * 1.5)}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:var(--muted)}.data-\[variant\=label\]\:text-xs[data-variant=label]{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.data-\[variant\=legend\]\:text-sm[data-variant=legend]{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.data-\[variant\=line\]\:rounded-none[data-variant=line]{border-radius:0}.nth-last-2\:-mt-1:nth-last-child(2){margin-top:calc(var(--spacing) * -1)}@supports ((-webkit-backdrop-filter:var(--tw)) or (backdrop-filter:var(--tw))){.supports-backdrop-filter\:backdrop-blur-xs{--tw-backdrop-blur:blur(var(--blur-xs));backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}}@media (width>=40rem){.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}}@media (width>=48rem){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.md\:text-pretty{text-wrap:pretty}}@media (width>=64rem){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.lg\:border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}}@container field-group (width>=28rem){.\@md\/field-group\:flex-row{flex-direction:row}.\@md\/field-group\:items-center{align-items:center}:is(.\@md\/field-group\:\*\:w-auto>*){width:auto}.\@md\/field-group\:has-\[\>\[data-slot\=field-content\]\]\:items-start:has(>[data-slot=field-content]){align-items:flex-start}:is(.\@md\/field-group\:\*\:data-\[slot\=field-label\]\:flex-auto>*)[data-slot=field-label]{flex:auto}}.dark\:border-amber-400\/20:is(.dark *){border-color:#fcbb0033}@supports (color:color-mix(in lab, red, red)){.dark\:border-amber-400\/20:is(.dark *){border-color:color-mix(in oklab, var(--color-amber-400) 20%, transparent)}}.dark\:border-blue-400\/20:is(.dark *){border-color:#54a2ff33}@supports (color:color-mix(in lab, red, red)){.dark\:border-blue-400\/20:is(.dark *){border-color:color-mix(in oklab, var(--color-blue-400) 20%, transparent)}}.dark\:border-emerald-400\/20:is(.dark *){border-color:#00d29433}@supports (color:color-mix(in lab, red, red)){.dark\:border-emerald-400\/20:is(.dark *){border-color:color-mix(in oklab, var(--color-emerald-400) 20%, transparent)}}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:bg-amber-900\/50:is(.dark *){background-color:#7b330680}@supports (color:color-mix(in lab, red, red)){.dark\:bg-amber-900\/50:is(.dark *){background-color:color-mix(in oklab, var(--color-amber-900) 50%, transparent)}}.dark\:bg-blue-900\/50:is(.dark *){background-color:#1c398e80}@supports (color:color-mix(in lab, red, red)){.dark\:bg-blue-900\/50:is(.dark *){background-color:color-mix(in oklab, var(--color-blue-900) 50%, transparent)}}.dark\:bg-destructive\/20:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-destructive\/20:is(.dark *){background-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.dark\:bg-emerald-900\/50:is(.dark *){background-color:#004e3b80}@supports (color:color-mix(in lab, red, red)){.dark\:bg-emerald-900\/50:is(.dark *){background-color:color-mix(in oklab, var(--color-emerald-900) 50%, transparent)}}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab, var(--input) 30%, transparent)}}.dark\:bg-purple-900\/50:is(.dark *){background-color:#59168b80}@supports (color:color-mix(in lab, red, red)){.dark\:bg-purple-900\/50:is(.dark *){background-color:color-mix(in oklab, var(--color-purple-900) 50%, transparent)}}.dark\:bg-transparent:is(.dark *){background-color:#0000}.dark\:bg-yellow-900\/50:is(.dark *){background-color:#733e0a80}@supports (color:color-mix(in lab, red, red)){.dark\:bg-yellow-900\/50:is(.dark *){background-color:color-mix(in oklab, var(--color-yellow-900) 50%, transparent)}}.dark\:text-amber-200:is(.dark *){color:var(--color-amber-200)}.dark\:text-blue-200:is(.dark *){color:var(--color-blue-200)}.dark\:text-emerald-200:is(.dark *){color:var(--color-emerald-200)}.dark\:text-muted-foreground:is(.dark *){color:var(--muted-foreground)}.dark\:text-purple-200:is(.dark *){color:var(--color-purple-200)}.dark\:text-yellow-200:is(.dark *){color:var(--color-yellow-200)}@media (hover:hover){.dark\:hover\:bg-destructive\/30:is(.dark *):hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-destructive\/30:is(.dark *):hover{background-color:color-mix(in oklab, var(--destructive) 30%, transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab, var(--input) 50%, transparent)}}.dark\:hover\:bg-muted\/50:is(.dark *):hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-muted\/50:is(.dark *):hover{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.dark\:hover\:text-foreground:is(.dark *):hover{color:var(--foreground)}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:disabled\:bg-input\/80:is(.dark *):disabled{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:disabled\:bg-input\/80:is(.dark *):disabled{background-color:color-mix(in oklab, var(--input) 80%, transparent)}}.dark\:disabled\:bg-transparent:is(.dark *):disabled{background-color:#0000}.dark\:has-disabled\:bg-input\/80:is(.dark *):has(:disabled){background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:has-disabled\:bg-input\/80:is(.dark *):has(:disabled){background-color:color-mix(in oklab, var(--input) 80%, transparent)}}.dark\:has-data-checked\:border-primary\/20:is(.dark *):has(:where([data-state=checked]),:where([data-checked]:not([data-checked=false]))){border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.dark\:has-data-checked\:border-primary\/20:is(.dark *):has(:where([data-state=checked]),:where([data-checked]:not([data-checked=false]))){border-color:color-mix(in oklab, var(--primary) 20%, transparent)}}.dark\:has-data-checked\:bg-primary\/10:is(.dark *):has(:where([data-state=checked]),:where([data-checked]:not([data-checked=false]))){background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.dark\:has-data-checked\:bg-primary\/10:is(.dark *):has(:where([data-state=checked]),:where([data-checked]:not([data-checked=false]))){background-color:color-mix(in oklab, var(--primary) 10%, transparent)}}.dark\:has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/40:is(.dark *):has([data-slot][aria-invalid=true]){--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/40:is(.dark *):has([data-slot][aria-invalid=true]){--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:aria-invalid\:border-destructive\/50:is(.dark *)[aria-invalid=true]{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:aria-invalid\:border-destructive\/50:is(.dark *)[aria-invalid=true]{border-color:color-mix(in oklab, var(--destructive) 50%, transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.data-open\:animate-in:where([data-state=open]),.data-open\:animate-in:where([data-open]:not([data-open=false])){animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-open\:fade-in-0:where([data-state=open]),.data-open\:fade-in-0:where([data-open]:not([data-open=false])){--tw-enter-opacity:0}.data-open\:zoom-in-95:where([data-state=open]),.data-open\:zoom-in-95:where([data-open]:not([data-open=false])){--tw-enter-scale:.95}.data-closed\:animate-out:where([data-state=closed]),.data-closed\:animate-out:where([data-closed]:not([data-closed=false])){animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-closed\:fade-out-0:where([data-state=closed]),.data-closed\:fade-out-0:where([data-closed]:not([data-closed=false])){--tw-exit-opacity:0}.data-closed\:zoom-out-95:where([data-state=closed]),.data-closed\:zoom-out-95:where([data-closed]:not([data-closed=false])){--tw-exit-scale:.95}.data-disabled\:pointer-events-none:where([data-disabled=true]),.data-disabled\:pointer-events-none:where([data-disabled]:not([data-disabled=false])){pointer-events:none}.data-disabled\:opacity-50:where([data-disabled=true]),.data-disabled\:opacity-50:where([data-disabled]:not([data-disabled=false])){opacity:.5}.data-active\:bg-background:where([data-state=active]),.data-active\:bg-background:where([data-active]:not([data-active=false])){background-color:var(--background)}.data-active\:text-foreground:where([data-state=active]),.data-active\:text-foreground:where([data-active]:not([data-active=false])){color:var(--foreground)}.group-data-\[variant\=line\]\/tabs-list\:data-active\:bg-transparent:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]),.group-data-\[variant\=line\]\/tabs-list\:data-active\:bg-transparent:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])){background-color:#0000}:is(.group-data-\[variant\=line\]\/tabs-list\:data-active\:after\:opacity-100:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]),.group-data-\[variant\=line\]\/tabs-list\:data-active\:after\:opacity-100:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false]))):after{content:var(--tw-content);opacity:1}.dark\:data-active\:border-input:is(.dark *):where([data-state=active]),.dark\:data-active\:border-input:is(.dark *):where([data-active]:not([data-active=false])){border-color:var(--input)}.dark\:data-active\:bg-input\/30:is(.dark *):where([data-state=active]),.dark\:data-active\:bg-input\/30:is(.dark *):where([data-active]:not([data-active=false])){background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:data-active\:bg-input\/30:is(.dark *):where([data-state=active]),.dark\:data-active\:bg-input\/30:is(.dark *):where([data-active]:not([data-active=false])){background-color:color-mix(in oklab, var(--input) 30%, transparent)}}.dark\:data-active\:text-foreground:is(.dark *):where([data-state=active]),.dark\:data-active\:text-foreground:is(.dark *):where([data-active]:not([data-active=false])){color:var(--foreground)}.dark\:group-data-\[variant\=line\]\/tabs-list\:data-active\:border-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]),.dark\:group-data-\[variant\=line\]\/tabs-list\:data-active\:border-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])){border-color:#0000}.dark\:group-data-\[variant\=line\]\/tabs-list\:data-active\:bg-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]),.dark\:group-data-\[variant\=line\]\/tabs-list\:data-active\:bg-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])){background-color:#0000}.data-horizontal\:h-px:where([data-orientation=horizontal]){height:1px}.data-horizontal\:w-full:where([data-orientation=horizontal]){width:100%}.data-horizontal\:flex-col:where([data-orientation=horizontal]){flex-direction:column}.data-vertical\:w-px:where([data-orientation=vertical]){width:1px}.data-vertical\:self-stretch:where([data-orientation=vertical]){align-self:stretch}.\[\&_a\]\:underline a{text-decoration-line:underline}.\[\&_a\]\:underline-offset-3 a{text-underline-offset:3px}@media (hover:hover){.\[\&_a\]\:hover\:text-foreground a:hover{color:var(--foreground)}}.\[\&_p\:not\(\:last-child\)\]\:mb-2 p:not(:last-child){margin-bottom:calc(var(--spacing) * 2)}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3 svg:not([class*=size-]){width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3\.5 svg:not([class*=size-]){width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\.border-b\]\:pb-\(--card-spacing\).border-b{padding-bottom:var(--card-spacing)}.\[\.border-b\]\:pb-2.border-b{padding-bottom:calc(var(--spacing) * 2)}.\[\.border-t\]\:pt-2.border-t{padding-top:calc(var(--spacing) * 2)}:is(.\*\:\[a\]\:underline>*):is(a){text-decoration-line:underline}:is(.\*\:\[a\]\:underline-offset-3>*):is(a){text-underline-offset:3px}@media (hover:hover){.\[a\]\:hover\:bg-destructive\/20:is(a):hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.\[a\]\:hover\:bg-destructive\/20:is(a):hover{background-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.\[a\]\:hover\:bg-muted:is(a):hover{background-color:var(--muted)}.\[a\]\:hover\:bg-primary\/80:is(a):hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.\[a\]\:hover\:bg-primary\/80:is(a):hover{background-color:color-mix(in oklab, var(--primary) 80%, transparent)}}.\[a\]\:hover\:bg-secondary\/80:is(a):hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.\[a\]\:hover\:bg-secondary\/80:is(a):hover{background-color:color-mix(in oklab, var(--secondary) 80%, transparent)}}.\[a\]\:hover\:text-muted-foreground:is(a):hover{color:var(--muted-foreground)}:is(.\*\:\[a\]\:hover\:text-foreground>*):is(a):hover{color:var(--foreground)}}:is(.\*\:\[img\:first-child\]\:rounded-none>*):is(img:first-child),:is(.\*\:\[img\:last-child\]\:rounded-none>*):is(img:last-child){border-radius:0}:is(.\*\:\[span\]\:last\:flex>*):is(span):last-child{display:flex}:is(.\*\:\[span\]\:last\:items-center>*):is(span):last-child{align-items:center}:is(.\*\:\[span\]\:last\:gap-2>*):is(span):last-child{gap:calc(var(--spacing) * 2)}:is(.\*\:\[svg\]\:row-span-2>*):is(svg){grid-row:span 2/span 2}:is(.\*\:\[svg\]\:translate-y-0>*):is(svg){--tw-translate-y:0px;translate:var(--tw-translate-x) var(--tw-translate-y)}:is(.\*\:\[svg\]\:text-current>*):is(svg){color:currentColor}:is(.\*\:\[svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4>*):is(svg:not([class*=size-])){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\>\.sr-only\]\:w-auto>.sr-only{width:auto}.has-\[\>\[data-slot\=field-content\]\]\:\[\&\>\[role\=checkbox\]\,\[role\=radio\]\]\:mt-px:has(>[data-slot=field-content])>[role=checkbox],.has-\[\>\[data-slot\=field-content\]\]\:\[\&\>\[role\=checkbox\]\,\[role\=radio\]\]\:mt-px:has(>[data-slot=field-content]) [role=radio]{margin-top:1px}@container field-group (width>=28rem){.\@md\/field-group\:has-\[\>\[data-slot\=field-content\]\]\:\[\&\>\[role\=checkbox\]\,\[role\=radio\]\]\:mt-px:has(>[data-slot=field-content])>[role=checkbox],.\@md\/field-group\:has-\[\>\[data-slot\=field-content\]\]\:\[\&\>\[role\=checkbox\]\,\[role\=radio\]\]\:mt-px:has(>[data-slot=field-content]) [role=radio]{margin-top:1px}}.\[\&\>a\]\:underline>a{text-decoration-line:underline}.\[\&\>a\]\:underline-offset-4>a{text-underline-offset:4px}.\[\&\>a\:hover\]\:text-primary>a:hover{color:var(--primary)}.has-\[\>\[data-align\=block-end\]\]\:\[\&\>input\]\:pt-3:has(>[data-align=block-end])>input{padding-top:calc(var(--spacing) * 3)}.has-\[\>\[data-align\=block-start\]\]\:\[\&\>input\]\:pb-3:has(>[data-align=block-start])>input{padding-bottom:calc(var(--spacing) * 3)}.has-\[\>\[data-align\=inline-end\]\]\:\[\&\>input\]\:pr-1\.5:has(>[data-align=inline-end])>input{padding-right:calc(var(--spacing) * 1.5)}.has-\[\>\[data-align\=inline-start\]\]\:\[\&\>input\]\:pl-1\.5:has(>[data-align=inline-start])>input{padding-left:calc(var(--spacing) * 1.5)}.\[\&\>kbd\]\:rounded-none>kbd{border-radius:0}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3\!>svg{width:calc(var(--spacing) * 3)!important;height:calc(var(--spacing) * 3)!important}.\[\&\>svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3\.5>svg:not([class*=size-]){width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&\>svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4>svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\>tr\]\:last\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}[data-variant=legend]+.\[\[data-variant\=legend\]\+\&\]\:-mt-1\.5{margin-top:calc(var(--spacing) * -1.5)}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}@property --scroll-fade-t{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --scroll-fade-b{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --scroll-fade-s{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --scroll-fade-e{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --scroll-fade-mask{syntax:"*";inherits:false}@property --shimmer-angle{syntax:"<angle>";inherits:true;initial-value:20deg}@property --shimmer-image{syntax:"*";inherits:false}@property --shimmer-text-fill{syntax:"*";inherits:false}@media (prefers-reduced-motion:reduce){.shimmer{-webkit-text-fill-color:currentColor;background-image:none;animation:none}}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-cyrillic-ext-wght-normal.DjL33-gN.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-cyrillic-wght-normal.BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-vietnamese-wght-normal.6IgcOCM7.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-ext-wght-normal.DC-KSUi6.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-wght-normal.BgDaEnEv.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--background:oklch(100% 0 0);--foreground:oklch(14.7% .004 49.25);--card:oklch(100% 0 0);--card-foreground:oklch(14.7% .004 49.25);--popover:oklch(100% 0 0);--popover-foreground:oklch(14.7% .004 49.25);--primary:oklch(21.6% .006 56.043);--primary-foreground:oklch(98.5% .001 106.423);--secondary:oklch(97% .001 106.424);--secondary-foreground:oklch(21.6% .006 56.043);--muted:oklch(97% .001 106.424);--muted-foreground:oklch(55.3% .013 58.071);--accent:oklch(97% .001 106.424);--accent-foreground:oklch(21.6% .006 56.043);--destructive:oklch(57.7% .245 27.325);--border:oklch(92.3% .003 48.717);--input:oklch(92.3% .003 48.717);--ring:oklch(70.9% .01 56.259);--chart-1:oklch(86.9% .005 56.366);--chart-2:oklch(55.3% .013 58.071);--chart-3:oklch(44.4% .011 73.639);--chart-4:oklch(37.4% .01 67.558);--chart-5:oklch(26.8% .007 34.298);--radius:.625rem;--sidebar:oklch(98.5% .001 106.423);--sidebar-foreground:oklch(14.7% .004 49.25);--sidebar-primary:oklch(21.6% .006 56.043);--sidebar-primary-foreground:oklch(98.5% .001 106.423);--sidebar-accent:oklch(97% .001 106.424);--sidebar-accent-foreground:oklch(21.6% .006 56.043);--sidebar-border:oklch(92.3% .003 48.717);--sidebar-ring:oklch(70.9% .01 56.259)}.dark{--background:#1d1c1a;--foreground:#f3f1ed;--card:#292825;--card-foreground:#f3f1ed;--popover:#292825;--popover-foreground:#f3f1ed;--primary:#e7e5e4;--primary-foreground:#1d1c1a;--secondary:#393835;--secondary-foreground:#f3f1ed;--muted:#393835;--muted-foreground:#b6b1ab;--accent:#393835;--accent-foreground:#f3f1ed;--destructive:oklch(70.4% .191 22.216);--border:#44423f;--input:#44423f;--ring:#928c84;--chart-1:oklch(86.9% .005 56.366);--chart-2:oklch(55.3% .013 58.071);--chart-3:oklch(44.4% .011 73.639);--chart-4:oklch(37.4% .01 67.558);--chart-5:oklch(26.8% .007 34.298);--sidebar:#292825;--sidebar-foreground:#f3f1ed;--sidebar-primary:#e7e5e4;--sidebar-primary-foreground:#1d1c1a;--sidebar-accent:#393835;--sidebar-accent-foreground:#f3f1ed;--sidebar-border:#44423f;--sidebar-ring:#928c84}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-duration{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}
@@ -1,3 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["_astro/services-view.iZujitxl.js","_astro/client.BeKNsjPN.js","_astro/common.TAClb6G9.js","_astro/client.BUUZgEFj.js","_astro/data-view.BaHEU4Xa.js","_astro/input-group.DUp-h0xx.js","_astro/functions-view.BGOYuDwu.js","_astro/auth-view.EASEF9BN.js","_astro/settings-view.CqK-mrlB.js","_astro/sdk-view.2ErPn4cO.js","_astro/cli-approval.DwZVHdyo.js"])))=>i.map(i=>d[i]);
2
- import{a as e,r as t,t as n}from"./client.BeKNsjPN.js";import{$ as r,A as i,At as a,B as o,C as s,Ct as c,D as l,Dt as u,E as d,Et as f,F as p,G as m,H as h,I as g,J as _,K as v,L as y,M as b,N as x,O as S,Ot as C,P as w,Q as T,S as E,St as D,T as O,Tt as k,U as A,V as j,W as M,X as N,Y as ee,Z as P,_ as F,_t as I,a as L,at as R,b as z,bt as te,dt as ne,et as B,ft as re,g as V,gt as H,h as ie,ht as ae,it as U,j as oe,k as se,kt as ce,lt as le,m as ue,mt as W,n as de,nt as fe,o as pe,ot as me,p as G,pt as K,q as he,r as ge,rt as _e,s as q,t as ve,tt as ye,u as J,ut as be,v as xe,vt as Se,w as Ce,wt as we,x as Te,xt as Ee,y as Y,yt as De,z as Oe}from"./common.TAClb6G9.js";var ke={name:`activity`,size:24,node:[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`,key:`169zse`}]]};ke.node;var Ae=C(ke),je={name:`box`,size:24,node:[[`path`,{d:`M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z`,key:`hh9hay`}],[`path`,{d:`m3.3 7 8.7 5 8.7-5`,key:`g66t2b`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}]]};je.node;var Me=C(je),Ne={name:`code`,size:24,node:[[`path`,{d:`m16 18 6-6-6-6`,key:`eg8j8`}],[`path`,{d:`m8 6-6 6 6 6`,key:`ppft3o`}]]};Ne.node;var Pe=C(Ne),Fe={name:`database`,size:24,node:[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`,key:`1wlel7`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`,key:`mv7ke4`}]]};Fe.node;var Ie=C(Fe),Le={name:`file`,size:24,node:[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}]]};Le.node;var Re=C(Le),ze={name:`logs`,size:24,node:[[`path`,{d:`M3 5h1`,key:`1mv5vm`}],[`path`,{d:`M3 12h1`,key:`lp3yf2`}],[`path`,{d:`M3 19h1`,key:`w6f3n9`}],[`path`,{d:`M8 5h1`,key:`1nxr5w`}],[`path`,{d:`M8 12h1`,key:`1con00`}],[`path`,{d:`M8 19h1`,key:`k7p10e`}],[`path`,{d:`M13 5h8`,key:`a7qcls`}],[`path`,{d:`M13 12h8`,key:`h98zly`}],[`path`,{d:`M13 19h8`,key:`c3s6r1`}]]};ze.node;var Be=C(ze),Ve={name:`panel-left-close`,size:24,node:[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`m16 15-3-3 3-3`,key:`14y99z`}]],aliases:[`sidebar-close`]};Ve.node;var He=C(Ve),Ue={name:`panel-left-open`,size:24,node:[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`m14 9 3 3-3 3`,key:`8010ee`}]],aliases:[`sidebar-open`]};Ue.node;var We=C(Ue),Ge={name:`plus`,size:24,node:[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]};Ge.node;var Ke=C(Ge),qe={name:`refresh-cw`,size:24,node:[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]};qe.node;var Je=C(qe),Ye={name:`settings`,size:24,node:[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]};Ye.node;var Xe=C(Ye),Ze={name:`shield`,size:24,node:[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}]]};Ze.node;var Qe=C(Ze),$e={name:`timer`,size:24,node:[[`line`,{x1:`10`,x2:`14`,y1:`2`,y2:`2`,key:`14vaq8`}],[`line`,{x1:`12`,x2:`15`,y1:`14`,y2:`11`,key:`17fdiu`}],[`circle`,{cx:`12`,cy:`14`,r:`8`,key:`1e1u0o`}]]};$e.node;var et=C($e),X=e(t(),1),tt=X.createContext(void 0);function nt(){let e=X.useContext(tt);if(e===void 0)throw Error(we(64));return e}var rt=`data-activation-direction`,it={tabActivationDirection:e=>({[rt]:e})},Z=a(),at=X.forwardRef(function(e,t){let{className:n,defaultValue:r=0,onValueChange:i,orientation:a=`horizontal`,render:o,value:s,style:c,...l}=e,d=e.defaultValue!==void 0,p=X.useRef([]),[h,g]=X.useState(()=>new Map),[y,b]=v({controlled:s,default:r,name:`Tabs`,state:`value`}),x=s!==void 0,[S,C]=X.useState(()=>new Map),w=X.useRef(void 0),E=X.useCallback(e=>ot(S,e),[S]),[D,O]=X.useState(()=>({previousValue:y,tabActivationDirection:`none`})),{previousValue:k,tabActivationDirection:A}=D,j=A,M=!1;k!==y&&(j=st(k,y,a,S),M=k!=null&&y!=null&&E(y)==null);let P=M?k:y,F=k!==P||A!==j;f(()=>{F&&O({previousValue:P,tabActivationDirection:j})},[P,F,j]);let I=u((e,t)=>{t.activationDirection=st(y,e,a,S),i?.(e,t),!t.isCanceled&&b(()=>e)}),L=u((e,t)=>{i?.(e,T(t,void 0,void 0,{activationDirection:`none`}))}),R=u((e,t)=>(g(n=>{let r=new Map(n);return r.set(e,t),r}),()=>{g(n=>{if(n.get(e)!==t)return n;let r=new Map(n);return r.delete(e),r})})),z=X.useCallback(e=>h.get(e),[h]),te=X.useCallback(e=>{for(let t of S.values())if(e===t.value)return t.id},[S]),ne=X.useMemo(()=>({getTabElementBySelectedValue:E,getTabIdByPanelValue:te,getTabPanelIdByValue:z,onValueChange:I,orientation:a,registerMountedTabPanel:R,setTabMap:C,tabActivationDirection:j,value:y}),[E,te,z,I,a,R,C,j,y]),B=X.useMemo(()=>{for(let e of S.values())if(e.value===y)return e},[S,y]),re=X.useMemo(()=>{for(let e of S.values())if(!e.disabled)return e.value},[S]),V=X.useRef(!d),ie=X.useRef(r),ae=X.useRef(d),U=X.useRef(!1);f(()=>{if(x)return;function e(e,t){b(()=>e),O({previousValue:e,tabActivationDirection:`none`}),L(e,t),V.current=!1}if(S.size===0){U.current&&y!==null&&!w.current?.isConnected&&e(null,N);return}U.current=!0,w.current=S.keys().next().value;let t=B?.disabled,n=B==null&&y!==null;if(!t&&y===ie.current&&(ae.current=!1),ae.current&&t&&y===ie.current)return;let r=V.current;if(t||n){let n=re??null;if(y===n){V.current=!1;return}let i=N;r?i=ee:t&&(i=_),e(n,i)}else r&&B!=null&&(L(y,ee),V.current=!1)},[re,x,L,B,b,S,y]);let oe=H(`div`,e,{state:{orientation:a,tabActivationDirection:j},ref:t,props:l,stateAttributesMapping:it});return(0,Z.jsx)(tt.Provider,{value:ne,children:(0,Z.jsx)(m,{elementsRef:p,children:oe})})});function ot(e,t){for(let[n,r]of e.entries())if(t===r.value)return n;return null}function st(e,t,n,r){if(e==null||t==null)return`none`;let[i,a,o]=n===`horizontal`?[`left`,`left`,`right`]:[`top`,`up`,`down`],s=ot(r,e),c=ot(r,t);if(s==null||c==null)return s!==c&&(typeof e==`number`||typeof e==`string`)&&typeof e==typeof t?t>e?o:a:`none`;let l=s.getBoundingClientRect()[i],u=c.getBoundingClientRect()[i];return u<l?a:u>l?o:`none`}var ct=`data-composite-item-active`;function lt(e={}){let{highlightItemOnHover:t,highlightedIndex:n,onHighlightedIndexChange:r}=c(),{ref:i,index:a}=M(e),o=n===a,s=X.useRef(null),l=De(i,s);return{compositeProps:{tabIndex:o?0:-1,onFocus(){r(a)},onMouseMove(){let e=s.current;if(!t||!e)return;let n=e.hasAttribute(`disabled`)||e.ariaDisabled===`true`;!o&&!n&&e.focus()}},compositeRef:l,index:a}}var ut=X.createContext(void 0);function dt(){let e=X.useContext(ut);if(e===void 0)throw Error(we(65));return e}var ft=X.forwardRef(function(e,t){let{className:n,disabled:r=!1,render:i,value:a,id:o,nativeButton:s=!0,style:l,...d}=e,{value:p,getTabPanelIdByValue:m,onValueChange:h,orientation:g,tabActivationDirection:_}=nt(),{activateOnFocus:v,registerTabResizeObserverElement:y,tabsListElement:b}=dt(),{highlightedIndex:x,onHighlightedIndexChange:S}=c(),C=re(o),{compositeProps:w,compositeRef:E,index:D}=lt({metadata:X.useMemo(()=>({disabled:r,id:C,value:a}),[r,C,a])}),O=a===p,k=X.useRef(!1),A=X.useRef(null),j=u(e=>{A.current?.(),A.current=e?y(e):null});f(()=>{if(k.current){k.current=!1;return}if(!(O&&D>-1&&x!==D))return;let e=b;if(e!=null){let t=le(Ee(e));if(t&&be(e,t))return}r||S(D)},[O,D,x,S,r,b]);let{getButtonProps:M,buttonRef:N}=te({disabled:r,native:s,focusableWhenDisabled:!0}),ee=m(a),F=X.useRef(!1),I=X.useRef(!1);function L(e){h(a,T(P,e.nativeEvent,void 0,{activationDirection:`none`}))}function R(e){O||r||L(e)}function z(e){O||r||v&&(!F.current||I.current)&&L(e)}function ne(e){if(O||r)return;F.current=!0,I.current=e.button===0;let t=Ee(e.currentTarget);function n(){F.current=!1,I.current=!1,t.removeEventListener(`pointerup`,n),t.removeEventListener(`pointercancel`,n)}t.addEventListener(`pointerup`,n),t.addEventListener(`pointercancel`,n)}return H(`button`,e,{state:{disabled:r,active:O,orientation:g,tabActivationDirection:_},ref:[t,N,E,j],props:[w,{role:`tab`,"aria-controls":ee,"aria-selected":O,id:C,onClick:R,onFocus:z,onPointerDown:ne,[ct]:O?``:void 0,onKeyDownCapture(){k.current=!0}},d,M],stateAttributesMapping:it})}),pt=`data-index`,mt={...it,...me},ht=X.forwardRef(function(e,t){let{className:n,value:i,render:a,keepMounted:o=!1,style:s,...c}=e,{value:l,getTabIdByPanelValue:u,orientation:d,tabActivationDirection:p,registerMountedTabPanel:m}=nt(),h=re(),{ref:g,index:_}=M(),v=i===l,{mounted:y,transitionStatus:b,setMounted:x}=r(v),S=!y,C=u(i),w={hidden:S,orientation:d,tabActivationDirection:p,transitionStatus:b},T=X.useRef(null),E=H(`div`,e,{state:w,ref:[t,g,T],props:[{"aria-labelledby":C,hidden:S,id:h,role:`tabpanel`,tabIndex:v?0:-1,inert:A(!v),[pt]:_},c],stateAttributesMapping:mt});return B({open:v,ref:T,onComplete(){v||x(!1)}}),f(()=>{if(!(h==null||S&&!o))return m(i,h)},[S,o,i,h,m]),o||y?E:null});function gt(e){let{loopFocus:t=!0,orientation:n=`both`,grid:r,onLoop:i,direction:a,highlightedIndex:s,onHighlightedIndexChange:c,rootRef:l,enableHomeAndEndKeys:d=!1,stopEventPropagation:m,disabledIndices:_,modifierKeys:v=I}=e,[b,S]=X.useState(0),C=r!=null,T=X.useRef(null),E=De(T,l),D=X.useRef([]),O=X.useRef(!1),k=X.useRef(null),A=s??b,M=u((e,t=!1)=>{if(k.current=D.current[e]??null,(c??S)(e),t){let t=D.current[e];j(T.current,t,a,n)}}),N=u(e=>{if(e.size===0)return;if(O.current){let e=D.current,t=e.indexOf(k.current);if(t===-1){let t=e[A];!t||R(e,A,_)?M(_t(e,_)):k.current=t}else t!==A&&M(t);return}O.current=!0;let t=Array.from(e.keys()),r=t.find(e=>e?.hasAttribute(`data-composite-item-active`))??null,i=r?e.get(r)?.index??-1:-1;if(i!==-1)M(i);else if(R(t,A,_)){let e=ye(t,{disabledIndices:_});U(t,e)||M(e)}j(T.current,r,a,n)});f(()=>{if(_==null||s!=null||!O.current)return;let e=D.current;if(R(e,A,_)){let t=ye(e,{disabledIndices:_});U(e,t)||M(t)}},[_,s,A,D,M]);let ee=u((e,t,n)=>i?i(e,t,n,D):n),P=u(e=>{let s=e.key===`Home`||e.key===`End`;if(!y.has(e.key)||!d&&s||vt(e,v)||!T.current)return;let c=a===`rtl`,l=c?w:p,u=c?p:w,f=n===`vertical`?x:l,b=n===`vertical`?g:u,S=ne(e.nativeEvent);if(S!=null&&o(S)&&!h(S)){let t=S.selectionStart,n=S.selectionEnd,r=S.value;if(t==null||e.shiftKey||t!==n||e.key!==b&&t<r.length||e.key!==f&&t>0)return}let E=A,O=_e(D,_),k=fe(D,_);r!=null&&(E=r({disabledIndices:_,elementsRef:D,event:e,highlightedIndex:A,loopFocus:t,maxIndex:k,minIndex:O,onLoop:ee,orientation:n,rtl:c}));let j=n!==`vertical`&&e.key===l||n!==`horizontal`&&e.key===`ArrowDown`,N=n!==`vertical`&&e.key===u||n!==`horizontal`&&e.key===`ArrowUp`;d&&(e.key===`Home`?E=O:e.key===`End`&&(E=k)),E===A&&(j||N)&&(t&&E===k&&j?(E=O,i&&(E=i(e,A,E,D))):t&&E===O&&N?(E=k,i&&(E=i(e,A,E,D))):E=ye(D.current,{startingIndex:E,decrement:N,disabledIndices:_})),E!==A&&!U(D.current,E)&&(m&&e.stopPropagation(),(C||s||j||N)&&e.preventDefault(),M(E,!0),queueMicrotask(()=>{D.current[E]?.focus()}))});return{props:{ref:E,onFocus(e){let t=T.current,n=ne(e.nativeEvent);t&&n!=null&&o(n)&&n.setSelectionRange(0,n.value.length)},onKeyDown:P},highlightedIndex:A,onHighlightedIndexChange:M,elementsRef:D,onMapChange:N,relayKeyboardEvent:P}}function _t(e,t){let n=-1;for(let r=0;r<e.length;r+=1){let i=e[r];if(i&&!R(e,r,t)){if(i.hasAttribute(`data-composite-item-active`))return r;n===-1&&(n=r)}}return Math.max(n,0)}function vt(e,t){for(let n of Oe)if(!t.includes(n)&&e.getModifierState(n))return!0;return!1}function yt(e){let{render:t,className:n,style:r,refs:i=I,props:a=I,state:o=Se,stateAttributesMapping:s,highlightedIndex:c,onHighlightedIndexChange:l,orientation:u,grid:d,loopFocus:f,onLoop:p,enableHomeAndEndKeys:h,onMapChange:g,stopEventPropagation:_=!0,rootRef:v,disabledIndices:y,modifierKeys:x,highlightItemOnHover:S=!1,tag:C=`div`,...w}=e,{props:T,highlightedIndex:E,onHighlightedIndexChange:O,elementsRef:k,onMapChange:A,relayKeyboardEvent:j}=gt({grid:d,loopFocus:f,onLoop:p,orientation:u,highlightedIndex:c,onHighlightedIndexChange:l,rootRef:v,stopEventPropagation:_,enableHomeAndEndKeys:h,direction:b(),disabledIndices:y,modifierKeys:x}),M=H(C,e,{state:o,ref:i,props:[T,...a,w],stateAttributesMapping:s}),N=X.useMemo(()=>({highlightedIndex:E,onHighlightedIndexChange:O,highlightItemOnHover:S,relayKeyboardEvent:j}),[E,O,S,j]);return(0,Z.jsx)(D.Provider,{value:N,children:(0,Z.jsx)(m,{elementsRef:k,onMapChange:e=>{g?.(e),A(e)},children:M})})}var bt=X.forwardRef(function(e,t){let{activateOnFocus:n=!1,className:r,loopFocus:i=!0,render:a,style:o,...s}=e,{orientation:c,setTabMap:l,tabActivationDirection:d}=nt(),[p,m]=X.useState(0),[h,g]=X.useState(null),_=X.useRef(new Set),v=X.useRef(new Set),y=X.useRef(null);f(()=>{if(typeof ResizeObserver>`u`)return;let e=new ResizeObserver(()=>{_.current.forEach(e=>{e()})});return y.current=e,h&&e.observe(h),v.current.forEach(t=>{e.observe(t)}),()=>{e.disconnect(),y.current=null}},[h]);let b=u(e=>(_.current.add(e),()=>{_.current.delete(e)})),x=u(e=>(v.current.add(e),y.current?.observe(e),()=>{v.current.delete(e),y.current?.unobserve(e)})),S={orientation:c,tabActivationDirection:d},C={"aria-orientation":c===`vertical`?`vertical`:void 0,role:`tablist`},w=X.useMemo(()=>({activateOnFocus:n,registerIndicatorUpdateListener:b,registerTabResizeObserverElement:x,tabsListElement:h}),[n,b,x,h]);return(0,Z.jsx)(ut.Provider,{value:w,children:(0,Z.jsx)(yt,{render:a,className:r,style:o,state:S,refs:[t,g],props:[C,s],stateAttributesMapping:it,highlightedIndex:p,enableHomeAndEndKeys:!0,loopFocus:i,orientation:c,onHighlightedIndexChange:m,onMapChange:l,disabledIndices:I})})}),xt=n();function St({className:e,orientation:t=`horizontal`,...n}){return(0,Z.jsx)(at,{"data-slot":`tabs`,"data-orientation":t,className:W(`group/tabs flex gap-2 data-horizontal:flex-col`,e),...n})}var Ct=ae(`group/tabs-list inline-flex w-fit items-center justify-center rounded-none p-[3px] text-muted-foreground group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none`,{variants:{variant:{default:`bg-muted`,line:`gap-1 bg-transparent`}},defaultVariants:{variant:`default`}});function wt({className:e,variant:t=`default`,...n}){return(0,Z.jsx)(bt,{"data-slot":`tabs-list`,"data-variant":t,className:W(Ct({variant:t}),e),...n})}function Tt({className:e,...t}){return(0,Z.jsx)(ft,{"data-slot":`tabs-trigger`,className:W(`relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-none border border-transparent px-1.5 py-0.5 text-xs font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start group-data-vertical/tabs:py-[calc(--spacing(1.25))] hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-1 has-data-[icon=inline-start]:pl-1 aria-disabled:pointer-events-none aria-disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,`group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent`,`data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground`,`after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100`,e),...t})}function Et({className:e,...t}){return(0,Z.jsx)(ht,{"data-slot":`tabs-content`,className:W(`flex-1 text-xs/relaxed outline-none`,e),...t})}function Dt(e){return H(e.defaultTagName??`div`,e,e)}var Ot=ae(`group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-none border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!`,{variants:{variant:{default:`bg-primary text-primary-foreground [a]:hover:bg-primary/80`,secondary:`bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80`,success:`border-emerald-600/20 bg-emerald-100/50 text-emerald-700 dark:border-emerald-400/20 dark:bg-emerald-900/50 dark:text-emerald-200`,warning:`border-amber-600/20 bg-amber-100/50 text-amber-700 dark:border-amber-400/20 dark:bg-amber-900/50 dark:text-amber-200`,info:`border-blue-600/20 bg-blue-100/50 text-blue-700 dark:border-blue-400/20 dark:bg-blue-900/50 dark:text-blue-200`,destructive:`bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20`,outline:`border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground`,ghost:`hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50`,link:`text-primary underline-offset-4 hover:underline`}},defaultVariants:{variant:`default`}});function kt({className:e,variant:t=`default`,render:n,...r}){return Dt({defaultTagName:`span`,props:k({className:W(Ot({variant:t}),e)},r),render:n,state:{slot:`badge`,variant:t}})}var At=new Map([...[`ready`,`active`,`enabled`,`ok`,`completed`,`development`].map(e=>[e,`success`]),...[`pending`,`paused`,`activating`,`restoring`,`incomplete`,`required`].map(e=>[e,`warning`]),...[`uploading`,`running`,`queued`,`enqueued`,`production`,`public registration`,`public`].map(e=>[e,`info`]),...[`error`,`failed`,`blocked`,`unavailable`].map(e=>[e,`destructive`])]);function Q({status:e,children:t}){return(0,Z.jsx)(kt,{variant:At.get(e.toLowerCase())??`secondary`,children:t??e})}var jt={query:`bg-yellow-100/50 text-yellow-700 dark:bg-yellow-900/50 dark:text-yellow-200`,mutation:`bg-blue-100/50 text-blue-700 dark:bg-blue-900/50 dark:text-blue-200`,action:`bg-purple-100/50 text-purple-700 dark:bg-purple-900/50 dark:text-purple-200`};function Mt({kind:e}){return(0,Z.jsx)(kt,{variant:`secondary`,className:jt[e],children:e})}function Nt(e){let[t,n]=(0,X.useState)(!1);return(0,Z.jsxs)(`details`,{className:`rounded-lg border`,onToggle:e=>n(e.currentTarget.open),children:[(0,Z.jsx)(`summary`,{className:`cursor-pointer p-4 font-medium`,children:`Deployment history`}),t&&(0,Z.jsx)(`div`,{className:`p-4 pt-0`,children:(0,Z.jsx)(Pt,{...e})})]})}function Pt(e){let[t,n]=(0,X.useState)(),[r,i]=(0,X.useState)(),a=V(e.project,e.env),o=V(e.project,e.env),s=J(a+`/history`),c=e.session.role!==`viewer`,l=async(t,n)=>{let r=n?V(e.project,`prod`):o,a=await G(r+`/health`);i({title:n?`Promote backend to production`:`Rollback backend`,description:`Activate this exact backend hash after native schema/job validation. Data, files and settings stay unchanged. Frontend is not published by this button; use the CLI release flow for that.`,productionId:n||e.env===`prod`?e.project.id:void 0,submit:async()=>{await G(r+(n?`/release-promote`:`/release-rollback`),{hash:t,expected:a.active,confirm:e.project.id}),s.refresh(),e.refresh()}})},[u,d]=(0,X.useState)();return(0,Z.jsxs)(`div`,{className:`space-y-3`,children:[(0,Z.jsx)(q,{loading:s.loading,error:u||s.error}),(0,Z.jsxs)(F,{children:[(0,Z.jsx)(Te,{children:(0,Z.jsxs)(E,{children:[(0,Z.jsx)(z,{children:`First published`}),(0,Z.jsx)(z,{children:`Backend hash`}),(0,Z.jsx)(z,{children:`Actions`})]})}),(0,Z.jsx)(xe,{children:s.data?.map(t=>(0,Z.jsxs)(E,{children:[(0,Z.jsx)(Y,{children:new Date(t.at).toLocaleString()}),(0,Z.jsxs)(Y,{children:[(0,Z.jsx)(`code`,{className:`text-xs`,children:t.hash.slice(0,12)}),e.active===t.hash&&(0,Z.jsx)(Q,{status:`Active`})]}),(0,Z.jsx)(Y,{children:(0,Z.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,Z.jsx)(K,{variant:`outline`,size:`sm`,onClick:()=>n(t.hash),children:`View contracts`}),c&&e.active!==t.hash&&(0,Z.jsx)(K,{variant:`outline`,size:`sm`,onClick:()=>void l(t.hash,!1).catch(e=>d(e.message)),children:`Rollback backend`}),c&&e.env===`dev`&&(0,Z.jsx)(K,{variant:`outline`,size:`sm`,onClick:()=>void l(t.hash,!0).catch(e=>d(e.message)),children:`Promote backend`})]})})]},t.hash))})]}),t&&(0,Z.jsx)(Ft,{path:a,hash:t,close:()=>n(void 0)}),r&&(0,Z.jsx)(L,{modal:r,onClose:()=>i(void 0)})]})}function Ft({path:e,hash:t,close:n}){let r=J(e+`/release?hash=`+t);return(0,Z.jsx)(s,{open:!0,onOpenChange:e=>{e||n()},children:(0,Z.jsxs)(Ce,{className:`max-h-[80vh] overflow-auto`,children:[(0,Z.jsxs)(d,{children:[(0,Z.jsx)(l,{children:`Backend release`}),(0,Z.jsx)(O,{className:`break-all`,children:t})]}),(0,Z.jsx)(q,{...r}),r.data&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`h3`,{className:`font-medium`,children:`Tables`}),(0,Z.jsxs)(F,{children:[(0,Z.jsx)(Te,{children:(0,Z.jsxs)(E,{children:[(0,Z.jsx)(z,{children:`Table`}),(0,Z.jsx)(z,{children:`Fields`})]})}),(0,Z.jsx)(xe,{children:Object.entries(r.data.schema).map(([e,t])=>(0,Z.jsxs)(E,{children:[(0,Z.jsx)(Y,{children:e}),(0,Z.jsx)(Y,{children:Object.keys(t.document.properties??{}).join(`, `)||`No declared fields`})]},e))})]}),(0,Z.jsx)(`h3`,{className:`font-medium`,children:`Functions`}),(0,Z.jsxs)(F,{children:[(0,Z.jsx)(Te,{children:(0,Z.jsxs)(E,{children:[(0,Z.jsx)(z,{children:`Function`}),(0,Z.jsx)(z,{children:`Kind`}),(0,Z.jsx)(z,{children:`Access`})]})}),(0,Z.jsx)(xe,{children:Object.entries(r.data.manifest.functions).map(([e,t])=>(0,Z.jsxs)(E,{children:[(0,Z.jsx)(Y,{children:e}),(0,Z.jsx)(Y,{children:(0,Z.jsx)(Mt,{kind:t.kind})}),(0,Z.jsx)(Y,{children:(0,Z.jsx)(Q,{status:t.auth})})]},e))})]})]})]})})}function It({className:e,size:t=`default`,...n}){return(0,Z.jsx)(`div`,{"data-slot":`card`,"data-size":t,className:W(`group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-none bg-card py-(--card-spacing) text-xs/relaxed text-card-foreground ring-1 ring-foreground/10 [--card-spacing:--spacing(4)] has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-none *:[img:last-child]:rounded-none`,e),...n})}function Lt({className:e,...t}){return(0,Z.jsx)(`div`,{"data-slot":`card-header`,className:W(`group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-none px-(--card-spacing) has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-(--card-spacing)`,e),...t})}function Rt({className:e,...t}){return(0,Z.jsx)(`div`,{"data-slot":`card-title`,className:W(`font-heading text-sm font-medium group-data-[size=sm]/card:text-sm`,e),...t})}function zt({className:e,...t}){return(0,Z.jsx)(`div`,{"data-slot":`card-content`,className:W(`px-(--card-spacing)`,e),...t})}function Bt({project:e,env:t,session:n,connect:r}){let i=J(V(e,t)+`/health`),a=J(V(e,t)+`/settings`);return(0,Z.jsxs)(`div`,{className:`space-y-4 p-4`,children:[(0,Z.jsx)(`h1`,{className:`page-title`,children:`Health`}),(0,Z.jsx)(q,{loading:i.loading||a.loading,error:i.error||a.error}),i.data&&a.data&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`h2`,{className:`section-title`,children:`Summary`}),(0,Z.jsx)(It,{children:(0,Z.jsxs)(zt,{className:`grid gap-4 md:grid-cols-2`,children:[(0,Z.jsxs)(`div`,{className:`space-y-3`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(Q,{status:t===`dev`?`Development`:`Production`}),(0,Z.jsx)(`strong`,{children:e.name})]}),(0,Z.jsx)(`p`,{className:`text-muted-foreground`,children:`Cloudflare · Durable Objects · SQLite`}),(0,Z.jsxs)(`p`,{className:`font-mono text-xs text-muted-foreground`,children:[`Release `,i.data.active?.slice(0,12)??`not deployed`]})]}),(0,Z.jsxs)(`div`,{className:`space-y-2`,children:[(0,Z.jsx)(`p`,{className:`text-muted-foreground`,children:`Cloud URL`}),(0,Z.jsx)(`code`,{className:`block select-all break-all text-xs`,children:a.data.url}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 text-muted-foreground`,children:[(0,Z.jsx)(Q,{status:i.data.status}),i.data.connections,` connections · `,i.data.subscriptions,` `,`subscriptions`]})]})]})}),(0,Z.jsx)(Nt,{project:e,env:t,session:n,active:i.data.active,refresh:i.refresh}),(0,Z.jsx)(K,{variant:`outline`,onClick:r,children:`Connect SDK`})]})]})}function Vt({project:e,env:t}){let n=J(V(e,t)+`/schema`);return(0,Z.jsxs)(`div`,{className:`space-y-4 p-4`,children:[(0,Z.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,Z.jsx)(`h1`,{className:`page-title`,children:`Schema`}),(0,Z.jsx)(`div`,{className:`flex gap-2`,children:(0,Z.jsx)(K,{variant:`ghost`,size:`icon-sm`,"aria-label":`Reload snapshot`,title:`Reload snapshot`,onClick:n.refresh,disabled:n.loading,children:(0,Z.jsx)(Je,{})})})]}),(0,Z.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Defined in code; validated documents and indexes activate atomically. System tables are hidden.`}),(0,Z.jsx)(q,{...n}),n.data?.tables.map(e=>(0,Z.jsxs)(It,{children:[(0,Z.jsx)(Lt,{children:(0,Z.jsx)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:(0,Z.jsx)(Rt,{className:`font-mono`,children:e.name})})}),(0,Z.jsxs)(zt,{className:`space-y-4`,children:[(0,Z.jsx)(pe,{rows:e.columns.map(e=>({Field:e.name,Type:e.type,Required:!!e.notnull,Primary:!!e.pk,Default:e.dflt_value})),columns:[`Field`,`Type`,`Required`,`Primary`,`Default`]}),(0,Z.jsx)(pe,{rows:Object.entries(e.indexes).map(([e,t])=>({Index:e,Fields:t.join(`, `)})),columns:[`Index`,`Fields`]}),(0,Z.jsxs)(`details`,{children:[(0,Z.jsx)(`summary`,{className:`cursor-pointer text-muted-foreground`,children:`Document contract`}),(0,Z.jsx)(`pre`,{className:`code-block mt-3`,children:JSON.stringify(e.document,null,2)})]})]})]},e.name)),n.data&&!n.data.tables.length&&(0,Z.jsx)(de,{title:`No application tables`})]})}function Ht({project:e,env:t}){let n=J(V(e,t)+`/logs`);return(0,Z.jsxs)(`div`,{className:`space-y-4 p-4`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Z.jsx)(`h1`,{className:`page-title`,children:`Logs`}),(0,Z.jsx)(K,{variant:`ghost`,size:`icon-sm`,"aria-label":`Reload snapshot`,title:`Reload snapshot`,onClick:n.refresh,disabled:n.loading,children:(0,Z.jsx)(Je,{})})]}),(0,Z.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Last 100 invocation summaries. Successful queries are held in memory and disappear on hibernation/restart; writes and failures are persisted. Not Cloudflare Tail logs or billing analytics.`}),(0,Z.jsx)(q,{...n}),n.data&&(n.data.length?(0,Z.jsx)(pe,{rows:n.data,renderCell:(e,t)=>e===`kind`&&[`query`,`mutation`,`action`].includes(String(t))?(0,Z.jsx)(Mt,{kind:t}):e===`status`?(0,Z.jsx)(Q,{status:t===`ok`?`ok`:`error`,children:ie(t)}):e===`at`&&typeof t==`number`?new Date(t).toLocaleString():ie(t),columns:[`at`,`path`,`kind`,`status`,`ms`],labels:{at:`Time`,path:`Function`,kind:`Type`,status:`Status`,ms:`Duration (ms)`}}):(0,Z.jsx)(de,{title:`No recent function calls`}))]})}var Ut=(function(){let e=typeof document<`u`&&document.createElement(`link`).relList;return e&&e.supports&&e.supports(`modulepreload`)?`modulepreload`:`preload`})(),Wt=function(e){return`/`+e},Gt={},Kt=function(e){return e.pathname.endsWith(`.css`)},qt=function(e,t,n){if(t in e)return e[t];let r=n();if(!r){e[t]=void 0;return}let i=r.then(()=>{e[t]=void 0},n=>{throw e[t]=void 0,n});return e[t]=i,i},$=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=function(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))},i=function(e){return import.meta.resolve?new URL(import.meta.resolve(e)):new URL(e,import.meta.url)},a,o=document.querySelector(`meta[property=csp-nonce]`),s=o?.nonce||o?.getAttribute(`nonce`);r=e(t.map(e=>{e=Wt(e,n);let t=i(e),r=Kt(t);return qt(Gt,t.href,()=>{if(a===void 0){a={all:new Set,styles:new Set};let e=document.getElementsByTagName(`link`);for(let t=e.length-1;t>=0;t--){let n=e[t];a.all.add(n.href),n.rel===`stylesheet`&&a.styles.add(n.href)}}if((r?a.styles:a.all).has(t.href))return;let e=document.createElement(`link`);if(e.rel=r?`stylesheet`:Ut,r||(e.as=`script`),e.crossOrigin=``,e.href=t.href,s&&e.setAttribute(`nonce`,s),document.head.appendChild(e),r)return new Promise((n,r)=>{e.addEventListener(`load`,n),e.addEventListener(`error`,()=>r(Error(`Unable to preload CSS for ${t}`)))})})}).filter(e=>e!==void 0))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},Jt=(0,X.lazy)(()=>$(()=>import(`./services-view.iZujitxl.js`).then(e=>({default:e.FilesView})),__vite__mapDeps([0,1,2,3]))),Yt=(0,X.lazy)(()=>$(()=>import(`./services-view.iZujitxl.js`).then(e=>({default:e.SchedulesView})),__vite__mapDeps([0,1,2,3]))),Xt=(0,X.lazy)(()=>$(()=>import(`./data-view.BaHEU4Xa.js`),__vite__mapDeps([4,1,2,5]))),Zt=(0,X.lazy)(()=>$(()=>import(`./functions-view.BGOYuDwu.js`),__vite__mapDeps([6,1,2,5,3]))),Qt=(0,X.lazy)(()=>$(()=>import(`./auth-view.EASEF9BN.js`),__vite__mapDeps([7,1,2]))),$t=(0,X.lazy)(()=>$(()=>import(`./settings-view.CqK-mrlB.js`),__vite__mapDeps([8,1,2]))),en=(0,X.lazy)(()=>$(()=>import(`./sdk-view.2ErPn4cO.js`),__vite__mapDeps([9,1,2]))),tn=[{key:`health`,label:`Health`,icon:Ae},{key:`data`,label:`Data`,icon:Ie},{key:`schema`,label:`Schema`,icon:Me},{key:`functions`,label:`Functions`,icon:Pe},{key:`files`,label:`Files`,icon:Re},{key:`schedules`,label:`Schedules`,icon:et},{key:`auth`,label:`Auth`,icon:Qe},{key:`logs`,label:`Logs`,icon:Be}],nn=(0,X.lazy)(()=>$(()=>import(`./cli-approval.DwZVHdyo.js`),__vite__mapDeps([10,1,2])));function rn(){return new URLSearchParams(location.search).has(`cli`)?(0,Z.jsx)(X.Suspense,{fallback:(0,Z.jsx)(`p`,{children:`Loading…`}),children:(0,Z.jsx)(nn,{})}):(0,Z.jsx)(an,{})}function an(){let[e,t]=(0,X.useState)(),[n,r]=(0,X.useState)([]),[a,o]=(0,X.useState)(),[s,c]=(0,X.useState)(`dev`),[l,u]=(0,X.useState)(`health`),[d,f]=(0,X.useState)(``),[p,m]=(0,X.useState)(!0),[h,g]=(0,X.useState)(),[_,v]=(0,X.useState)(!1);(0,X.useEffect)(()=>{let e=new AbortController;return v(localStorage.getItem(`flare.sidebar`)===`collapsed`),Promise.all([G(`session`,void 0,e.signal),G(`projects`,void 0,e.signal)]).then(([n,i])=>{e.signal.aborted||(t(n),r(i),o(i.find(e=>e.id===localStorage.getItem(`flare.project`))??i[0]),m(!1))}).catch(t=>{e.signal.aborted||(f(ue(t)),m(!1))}),()=>e.abort()},[]);let y=e=>{let t=n.find(t=>t.id===e);t&&(o(t),c(`dev`),u(`health`),g(void 0),localStorage.setItem(`flare.project`,e))},b=()=>g({title:`Create project`,description:`Creates separate development and production environments.`,content:(0,Z.jsxs)(se,{children:[(0,Z.jsxs)(S,{children:[(0,Z.jsx)(i,{htmlFor:`project-name`,children:`Project name`}),(0,Z.jsx)(he,{id:`project-name`,name:`name`,required:!0,maxLength:100,placeholder:`CRM`})]}),(0,Z.jsxs)(S,{children:[(0,Z.jsx)(i,{htmlFor:`project-alias`,children:`Short URL name (optional)`}),(0,Z.jsx)(he,{id:`project-alias`,name:`alias`,maxLength:48,pattern:`[a-z][a-z0-9]*(?:-[a-z0-9]+)*`,placeholder:`crm`})]}),(0,Z.jsxs)(S,{children:[(0,Z.jsx)(i,{htmlFor:`project-origins`,children:`Allowed frontend origins · one per line`}),(0,Z.jsx)(oe,{id:`project-origins`,name:`origins`,placeholder:`http://127.0.0.1:5173`})]})]}),submit:async e=>{let t=new FormData(e),n=await G(`projects`,{name:t.get(`name`),alias:t.get(`alias`)||void 0,origins:[location.origin,...String(t.get(`origins`)).split(`
3
- `).map(e=>e.trim()).filter(Boolean)]}),i=await G(`projects`);r(i),o(i.find(e=>e.id===n.id)??i[0]),c(`dev`),u(`health`)}}),x=a&&e?{project:a,env:s,session:e}:null,C=()=>{let e=n.filter(e=>e.id!==a?.id);r(e),o(e[0]),c(`dev`),u(`health`),e[0]?localStorage.setItem(`flare.project`,e[0].id):localStorage.removeItem(`flare.project`)},w=e=>{g(void 0),u(e)};return(0,Z.jsxs)(`div`,{className:`flex h-dvh min-h-0 flex-col overflow-hidden text-sm`,children:[(0,Z.jsxs)(`header`,{className:`flex h-14 shrink-0 items-center justify-between gap-3 border-b bg-sidebar px-4`,children:[(0,Z.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[(0,Z.jsx)(ve,{label:`Select project`,value:a?.id??``,onChange:y,items:n.map(e=>({value:e.id,label:e.name})),className:`max-w-48`}),x&&(0,Z.jsx)(St,{value:s,onValueChange:e=>{(e===`dev`||e===`prod`)&&(c(e),g(void 0))},"aria-label":`Select environment`,children:(0,Z.jsxs)(wt,{children:[(0,Z.jsx)(Tt,{value:`dev`,children:`Dev`}),(0,Z.jsx)(Tt,{value:`prod`,children:`Production`})]})})]}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[e?.role!==`viewer`&&e&&(0,Z.jsx)(K,{"aria-label":`Create project`,size:`icon-sm`,variant:`ghost`,onClick:b,children:(0,Z.jsx)(Ke,{})}),x&&(0,Z.jsx)(K,{"aria-label":`Project settings`,size:`icon-sm`,variant:`ghost`,onClick:()=>w(`settings`),children:(0,Z.jsx)(Xe,{})}),e&&(0,Z.jsx)(`span`,{className:`flex size-7 items-center justify-center rounded-full bg-muted text-xs font-medium`,title:e.email,"aria-label":`Signed in as ${e.email}`,children:e.email.slice(0,2).toUpperCase()})]})]}),(0,Z.jsxs)(`div`,{className:`flex min-h-0 flex-1`,children:[(0,Z.jsxs)(`aside`,{className:`flex shrink-0 flex-col border-r bg-sidebar px-2 py-3 ${_?`w-12`:`w-36`}`,children:[(0,Z.jsx)(`nav`,{"aria-label":`Deployment`,className:`flex flex-col gap-1`,children:tn.map(({key:e,label:t,icon:n})=>(0,Z.jsxs)(K,{variant:`ghost`,disabled:!x,"aria-current":l===e?`page`:void 0,title:_?t:void 0,"aria-label":_?t:void 0,className:`w-full justify-start ${l===e?`bg-sidebar-accent text-sidebar-accent-foreground`:`text-muted-foreground`}`,onClick:()=>w(e),children:[(0,Z.jsx)(n,{className:`size-4`}),!_&&t]},e))}),(0,Z.jsxs)(K,{"aria-label":_?`Expand sidebar`:`Collapse sidebar`,className:`mt-auto justify-start text-muted-foreground`,variant:`ghost`,onClick:()=>v(e=>(localStorage.setItem(`flare.sidebar`,e?`expanded`:`collapsed`),!e)),children:[_?(0,Z.jsx)(We,{}):(0,Z.jsx)(He,{}),!_&&`Collapse`]})]}),(0,Z.jsxs)(`main`,{className:`min-h-0 min-w-0 flex-1 ${l===`data`?`overflow-hidden`:`overflow-auto`}`,"aria-label":`Deployment content`,children:[d&&(0,Z.jsx)(`div`,{className:`p-4`,children:(0,Z.jsx)(ge,{children:d})}),p?(0,Z.jsx)(q,{loading:!0}):x?(0,Z.jsx)(ce,{scope:`projects/${a.id}/${s}`,children:(0,Z.jsx)(X.Suspense,{fallback:(0,Z.jsx)(q,{loading:!0}),children:(0,Z.jsx)(`div`,{className:l===`data`?`h-full min-h-0`:`min-h-full`,children:l===`health`?(0,Z.jsx)(Bt,{...x,connect:()=>w(`sdk`)}):l===`data`?(0,Z.jsx)(Xt,{...x}):l===`schema`?(0,Z.jsx)(Vt,{...x}):l===`functions`?(0,Z.jsx)(Zt,{...x}):l===`files`?(0,Z.jsx)(Jt,{...x}):l===`schedules`?(0,Z.jsx)(Yt,{...x}):l===`auth`?(0,Z.jsx)(Qt,{...x}):l===`logs`?(0,Z.jsx)(Ht,{...x}):l===`settings`?(0,Z.jsx)($t,{...x,onDeleted:C}):(0,Z.jsx)(en,{...x})},`${a.id}/${s}/${l}`)})},`${a.id}/${s}`):d?null:(0,Z.jsxs)(`div`,{className:`p-4`,children:[(0,Z.jsx)(`h1`,{className:`page-title`,children:`Select a project`}),(0,Z.jsx)(`p`,{className:`mt-2 text-muted-foreground`,children:`Create a project to get started.`}),e?.role!==`viewer`&&(0,Z.jsxs)(K,{className:`mt-4`,onClick:b,children:[(0,Z.jsx)(Ke,{}),`New project`]})]})]})]}),h&&(0,Z.jsx)(L,{modal:h,onClose:()=>g(void 0)})]})}var on=document.getElementById(`flare-dashboard`);if(!on)throw Error(`Dashboard mount missing`);(0,xt.createRoot)(on).render((0,X.createElement)(rn));export{Mt as a,St as c,Tt as d,Je as f,Pe as h,Rt as i,Et as l,Ie as m,zt as n,Q as o,Ke as p,Lt as r,kt as s,It as t,wt as u};
@@ -1 +0,0 @@
1
- import{r as e}from"./client.BeKNsjPN.js";import{At as t,Ot as n,ht as r,mt as i,q as a}from"./common.TAClb6G9.js";var o={name:`search`,size:24,node:[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]};o.node;var s=n(o);e();var c=t();function l({className:e,...t}){return(0,c.jsx)(`div`,{"data-slot":`input-group`,role:`group`,className:i(`group/input-group relative flex h-8 w-full min-w-0 items-center rounded-none border border-input transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:bg-input/50 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-1 has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-1 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:bg-input/30 dark:has-disabled:bg-input/80 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5`,e),...t})}var u=r(`flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-xs font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-none [&>svg:not([class*='size-'])]:size-4`,{variants:{align:{"inline-start":`order-first pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem]`,"inline-end":`order-last pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem]`,"block-start":`order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2`,"block-end":`order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2`}},defaultVariants:{align:`inline-start`}});function d({className:e,align:t=`inline-start`,...n}){return(0,c.jsx)(`div`,{role:`group`,"data-slot":`input-group-addon`,"data-align":t,className:i(u({align:t}),e),onClick:e=>{e.target.closest(`button`)||e.currentTarget.parentElement?.querySelector(`input`)?.focus()},...n})}r(`flex items-center gap-2 text-xs shadow-none`,{variants:{size:{xs:`h-6 gap-1 rounded-none px-1.5 [&>svg:not([class*='size-'])]:size-3.5`,sm:`gap-1`,"icon-xs":`size-6 rounded-none p-0 has-[>svg]:p-0`,"icon-sm":`size-7 p-0 has-[>svg]:p-0`}},defaultVariants:{size:`xs`}});function f({className:e,...t}){return(0,c.jsx)(a,{"data-slot":`input-group-control`,className:i(`flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent`,e),...t})}export{s as i,d as n,f as r,l as t};