@stacksjs/components 0.2.205 → 0.2.207
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.
|
@@ -638,10 +638,14 @@ defineExpose({ collapsed, toggle: toggleCollapse, syncRouteSelection })
|
|
|
638
638
|
lightest at the very top, darkest around a third of the way down, then
|
|
639
639
|
lightening again — a bulge rather than a fade.
|
|
640
640
|
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
641
|
+
The stops are not evenly spaced, and that is the point. A two-stop
|
|
642
|
+
gradient fades linearly; Dia's panel reaches half strength 35% of the way
|
|
643
|
+
down and has flattened onto its final value by 85%. `35%` is a colour
|
|
644
|
+
interpolation hint, which exists to say where a transition's midpoint
|
|
645
|
+
falls, and the last stop sits at 85% so the bottom sixth holds steady.
|
|
646
|
+
See `spaceWash` in `spaces.ts` for the measurement these come from — and
|
|
647
|
+
keep the two in step, which `sidebar-space-tint.test.ts` enforces. */
|
|
648
|
+
background: linear-gradient(180deg, var(--stx-space-from) 0%, 35%, var(--stx-space-to) 85%);
|
|
645
649
|
color: var(--stx-space-ink);
|
|
646
650
|
/* Width is listed here because this rule outranks the pane's
|
|
647
651
|
`transition-[width]` utility class and would otherwise drop it. */
|
|
@@ -661,10 +665,12 @@ defineExpose({ collapsed, toggle: toggleCollapse, syncRouteSelection })
|
|
|
661
665
|
--stx-space-to: var(--stx-space-dark-to, #0e0e11);
|
|
662
666
|
--stx-space-ink: var(--stx-space-dark-ink, #ededf0);
|
|
663
667
|
--stx-space-accent: var(--stx-space-dark-accent, #b9b9c2);
|
|
664
|
-
/* Same reasoning as the light rule above: dark already
|
|
665
|
-
at the top, so its sheen was fighting the tint even
|
|
666
|
-
palette was flipped to agree with it.
|
|
667
|
-
|
|
668
|
+
/* Same reasoning, and the same curve, as the light rule above: dark already
|
|
669
|
+
carried its colour at the top, so its sheen was fighting the tint even
|
|
670
|
+
before the light palette was flipped to agree with it. The two
|
|
671
|
+
appearances share the wash shape for the same reason they share its
|
|
672
|
+
strength — a space that fades differently by appearance is two designs. */
|
|
673
|
+
background: linear-gradient(180deg, var(--stx-space-from) 0%, 35%, var(--stx-space-to) 85%);
|
|
668
674
|
}
|
|
669
675
|
}
|
|
670
676
|
|
package/dist/index.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var
|
|
3
|
-
`)}function I(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function
|
|
2
|
+
var ge={__stx:!0,src:"./components/CodeBlock.stx"};var xe={__stx:!0,src:"./components/Footer.stx"};var me={__stx:!0,src:"./components/Hero.stx"};var ve={__stx:!0,src:"./components/Installation.stx"};function ei(e){let{code:t,onSuccess:s,onError:o,timeout:a=2000}=e,i=!1,r=null;return{copied:i,copy:async()=>{try{if(!navigator.clipboard)throw Error("Clipboard API not available");await navigator.clipboard.writeText(t),i=!0,s?.(),r=setTimeout(()=>{i=!1,r=null},a)}catch(d){let f=d instanceof Error?d:Error("Failed to copy code");o?.(f),console.error("Failed to copy code:",f)}},reset:()=>{if(i=!1,r)clearTimeout(r),r=null}}}async function ti(e){try{return await navigator.clipboard.writeText(e),!0}catch(t){return console.error("Failed to copy to clipboard:",t),!1}}function we(){if(typeof window>"u")return"light";return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function Q(e){return e==="system"?we():e}function oi(e={}){let{storageKey:t="theme",defaultTheme:s="system"}=e,o=s;if(typeof window<"u"&&typeof localStorage<"u"){let c=localStorage.getItem(t);if(c)o=c}let a=Q(o)==="dark",i=(c)=>{let d=Q(c);if(typeof document<"u")if(d==="dark")document.documentElement.classList.add("dark");else document.documentElement.classList.remove("dark");if(typeof localStorage<"u")localStorage.setItem(t,c)},r=(c)=>{o=c,i(c)},n=()=>{let d=Q(o)==="dark"?"light":"dark";r(d)};if(i(o),typeof window<"u"&&o==="system")window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",(c)=>{if(o==="system")i("system")});return{isDark:a,theme:o,toggle:n,setTheme:r}}function ye(e,t){if(typeof document>"u")return;document.title=t?t.replace("%s",e):e}function S(e,t,s=!1){if(typeof document>"u")return;let o=s?"property":"name",a=document.querySelector(`meta[${o}="${e}"]`);if(!a)a=document.createElement("meta"),a.setAttribute(o,e),document.head.appendChild(a);a.setAttribute("content",t)}function Ce(e,t){if(typeof document>"u")return;let s=document.querySelector(`link[rel="${e}"]`);if(!s)s=document.createElement("link"),s.setAttribute("rel",e),document.head.appendChild(s);s.setAttribute("href",t)}function ii(e){let{title:t,description:s,author:o,keywords:a,ogImage:i,ogImageWidth:r,ogImageHeight:n,twitterCard:c="summary_large_image",twitterSite:d,twitterCreator:f,canonical:p}=e;if(t)ye(t),S("og:title",t,!0),S("twitter:title",t);if(s)S("description",s),S("og:description",s,!0),S("twitter:description",s);if(o)S("author",o);if(a&&a.length>0)S("keywords",a.join(", "));if(i)S("og:image",i,!0),S("twitter:image",i);if(r)S("og:image:width",r,!0);if(n)S("og:image:height",n,!0);if(S("twitter:card",c),d)S("twitter:site",d);if(f)S("twitter:creator",f);if(p)Ce("canonical",p);if(S("og:type","website",!0),typeof window<"u")S("og:url",window.location.href,!0)}function ri(e){let t=[],{title:s,description:o,author:a,keywords:i,ogImage:r,ogImageWidth:n,ogImageHeight:c,twitterCard:d="summary_large_image",twitterSite:f,twitterCreator:p,canonical:g}=e;if(s)t.push(`<title>${I(s)}</title>`),t.push(`<meta property="og:title" content="${I(s)}" />`),t.push(`<meta name="twitter:title" content="${I(s)}" />`);if(o)t.push(`<meta name="description" content="${I(o)}" />`),t.push(`<meta property="og:description" content="${I(o)}" />`),t.push(`<meta name="twitter:description" content="${I(o)}" />`);if(a)t.push(`<meta name="author" content="${I(a)}" />`);if(i&&i.length>0)t.push(`<meta name="keywords" content="${I(i.join(", "))}" />`);if(r)t.push(`<meta property="og:image" content="${I(r)}" />`),t.push(`<meta name="twitter:image" content="${I(r)}" />`);if(n)t.push(`<meta property="og:image:width" content="${I(n)}" />`);if(c)t.push(`<meta property="og:image:height" content="${I(c)}" />`);if(t.push(`<meta name="twitter:card" content="${I(d)}" />`),f)t.push(`<meta name="twitter:site" content="${I(f)}" />`);if(p)t.push(`<meta name="twitter:creator" content="${I(p)}" />`);if(g)t.push(`<link rel="canonical" href="${I(g)}" />`);return t.push('<meta property="og:type" content="website" />'),t.join(`
|
|
3
|
+
`)}function I(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function li(e,t,s={}){let{enabled:o=!0,ignore:a=[]}=s,i=(r)=>{if(!o||!e)return;let n=r.target;if(!e.contains(n)){if(!a.some((d)=>{let f=document.querySelectorAll(d);return Array.from(f).some((p)=>p.contains(n))}))t(r)}};if(typeof document<"u")document.addEventListener("mousedown",i),document.addEventListener("touchstart",i);return()=>{if(typeof document<"u")document.removeEventListener("mousedown",i),document.removeEventListener("touchstart",i)}}function di(e,t={}){let{enabled:s=!0,initialFocus:o=null,returnFocus:a=!0,fallbackFocus:i=null}=t,r=null,n=!1;function c(){if(!e)return[];let h=["a[href]","button:not([disabled])","textarea:not([disabled])","input:not([disabled])","select:not([disabled])",'[tabindex]:not([tabindex="-1"])'].join(",");return Array.from(e.querySelectorAll(h))}function d(h){if(!s||!n||!e)return;let w=c();if(w.length===0){h.preventDefault();return}let v=w[0],k=w[w.length-1];if(h.shiftKey){if(document.activeElement===v||document.activeElement===e)h.preventDefault(),k.focus()}else if(document.activeElement===k)h.preventDefault(),v.focus()}function f(h){if(h.key==="Escape"&&s&&n)g()}function p(){if(!s||!e||n)return;if(r=document.activeElement,o)o.focus();else{let h=c();if(h.length>0)h[0].focus();else if(i)i.focus();else e.focus()}document.addEventListener("keydown",d),document.addEventListener("keydown",f),n=!0}function g(){if(!n)return;if(document.removeEventListener("keydown",d),document.removeEventListener("keydown",f),a&&r)r.focus();n=!1}return{activate:p,deactivate:g}}function ui(e,t={}){let{enabled:s=!0,preventDefault:o=!0,stopPropagation:a=!1,target:i=typeof document<"u"?document:null}=t,r=Array.isArray(e)?e:[e],n=(c)=>{if(!s)return;r.forEach((d)=>{if(!(Array.isArray(d.key)?d.key:[d.key]).some((g)=>g.toLowerCase()===c.key.toLowerCase()))return;if(d.ctrl!==void 0&&d.ctrl!==c.ctrlKey)return;if(d.shift!==void 0&&d.shift!==c.shiftKey)return;if(d.alt!==void 0&&d.alt!==c.altKey)return;if(d.meta!==void 0&&d.meta!==c.metaKey)return;if(o)c.preventDefault();if(a)c.stopPropagation();d.handler(c)})};if(i)i.addEventListener("keydown",n);return()=>{if(i)i.removeEventListener("keydown",n)}}var fi={ESCAPE:"Escape",ENTER:"Enter",SPACE:" ",TAB:"Tab",ARROW_UP:"ArrowUp",ARROW_DOWN:"ArrowDown",ARROW_LEFT:"ArrowLeft",ARROW_RIGHT:"ArrowRight",HOME:"Home",END:"End",PAGE_UP:"PageUp",PAGE_DOWN:"PageDown"};function bi(e,t,s={}){let{serializer:o=JSON.stringify,deserializer:a=JSON.parse,onError:i=console.error}=s,r=t;try{if(typeof window<"u"){let p=window.localStorage.getItem(e);if(p!==null)r=a(p)}}catch(p){i(p)}let n=r,c=new Set;function d(p){try{let g=typeof p==="function"?p(n):p;if(n=g,typeof window<"u")window.localStorage.setItem(e,o(g));c.forEach((h)=>h(g))}catch(g){i(g)}}function f(){try{if(n=t,typeof window<"u")window.localStorage.removeItem(e);c.forEach((p)=>p(t))}catch(p){i(p)}}if(typeof window<"u"){let p=(g)=>{if(g.key===e&&g.newValue!==null)try{let h=a(g.newValue);n=h,c.forEach((w)=>w(h))}catch(h){i(h)}else if(g.key===e&&g.newValue===null)n=t,c.forEach((h)=>h(t))};window.addEventListener("storage",p)}return{value:n,setValue:d,removeValue:f}}function R(e,t={}){let{defaultValue:s=!1}=t,o=s,a=null;if(typeof window<"u"&&"matchMedia"in window){a=window.matchMedia(e),o=a.matches;let r=(n)=>{o=n.matches};if(a.addEventListener)a.addEventListener("change",r);else a.addListener(r)}function i(){if(a)o=a.matches}return{matches:o,updateMatches:i}}var q={xs:"(min-width: 320px)",sm:"(min-width: 640px)",md:"(min-width: 768px)",lg:"(min-width: 1024px)",xl:"(min-width: 1280px)","2xl":"(min-width: 1536px)",mobile:"(max-width: 767px)",tablet:"(min-width: 768px) and (max-width: 1023px)",desktop:"(min-width: 1024px)",dark:"(prefers-color-scheme: dark)",light:"(prefers-color-scheme: light)",reducedMotion:"(prefers-reduced-motion: reduce)",portrait:"(orientation: portrait)",landscape:"(orientation: landscape)"};function xi(e){return R(q[e])}function mi(){return R(q.mobile)}function vi(){return R(q.desktop)}function wi(){return R(q.dark)}function yi(){return R(q.reducedMotion)}var re=["gray","neutral","slate","zinc","red","green","yellow","blue","indigo"],$i="--stx-color";function $e(e,t){return t===void 0?`var(${e})`:`var(${e}, ${t})`}function ki(e={}){let t={};for(let s of re){let o=e[s];if(!o||typeof o==="string")continue;let a={};for(let[i,r]of Object.entries(o))a[i]=$e(`--stx-color-${s}-${i}`,r);t[s]=a}return t}function Si(e={}){let t=[];for(let s of re){let o=e[s];if(!o||typeof o==="string")continue;for(let a of Object.keys(o))t.push(`--stx-color-${s}-${a}`)}return t}var Se="./Accordion-8tv78bh9.stx";var Ne="./AccordionItem-7bd3ga36.stx";var Ae="./Audio-y0sgq50z.stx";var Le="./Login-2cp65d41.stx";var Pe="./Signup-cbncrtvd.stx";var Oe="./TwoFactorChallenge-y7n4yrk9.stx";var Re="./Avatar-rjvwnskf.stx";var Be="./Badge-k52qmxcm.stx";var He="./Breadcrumb-sy5taqsn.stx";import B from"process";var Ve="https://stacksjs.com/components";class N extends Error{component;context;constructor(e,t,s={}){let o=N.formatMessage(e,t,s);super(o);if(this.name="ComponentError",this.component=e,this.context={component:e,...s},Error.captureStackTrace)Error.captureStackTrace(this,N)}static formatMessage(e,t,s){let o=`[${e}] ${t}`;if(s.prop)o+=`
|
|
4
4
|
Prop: "${s.prop}"`;if(s.received!==void 0)o+=`
|
|
5
5
|
Received: ${JSON.stringify(s.received)}`;if(s.expected!==void 0){let a=Array.isArray(s.expected)?s.expected.map((i)=>JSON.stringify(i)).join(", "):JSON.stringify(s.expected);o+=`
|
|
6
6
|
Expected: ${a}`}if(s.details)o+=`
|
|
7
7
|
Details: ${s.details}`;if(s.docsUrl)o+=`
|
|
8
8
|
Documentation: ${s.docsUrl}`;else if(e)o+=`
|
|
9
|
-
Documentation: ${
|
|
9
|
+
Documentation: ${Ve}/${e.toLowerCase()}`;return o}toJSON(){return{name:this.name,message:this.message,component:this.component,context:this.context,stack:this.stack}}}var M={invalidProp(e,t,s,o){return new N(e,`Invalid prop value for "${t}"`,{prop:t,received:s,expected:o,details:Array.isArray(o)?`The "${t}" prop must be one of the allowed values`:`The "${t}" prop does not match the expected type`})},requiredProp(e,t){return new N(e,`Required prop "${t}" is missing`,{prop:t,details:`The "${t}" prop is required for ${e} to function correctly`})},invalidType(e,t,s,o){return new N(e,`Invalid type for prop "${t}"`,{prop:t,received:typeof s,expected:o,details:`Expected "${t}" to be of type ${o}, but received ${typeof s}`})},componentNotFound(e){return new N("ComponentLoader",`Component "${e}" not found`,{component:e,details:"Make sure the component is properly imported and registered"})},invalidChildren(e,t,s){return new N(e,"Invalid children",{received:typeof t,expected:s,details:`${e} expects ${s} as children`})},stateUpdate(e,t,s){return new N(e,`Failed to update state "${t}"`,{details:s.message})},eventHandler(e,t,s){return new N(e,`Error in "${t}" event handler`,{details:s.message})},render(e,t){return new N(e,"Failed to render component",{details:t.message})}},V=null;function Zi(e){V=e}function Qi(){V=null}function W(e,t={}){let{throwError:s=!0,logError:o=!0}=t;if(o&&B.env.NODE_ENV!=="production"){if(console.error("Component Error:",e),e instanceof N)console.group("Error Details"),console.log("Component:",e.component),console.log("Context:",e.context),console.groupEnd()}if(V)try{V(e)}catch(a){console.error("Error in error handler:",a)}if(s)throw e}function ne(e,t,s){return(...o)=>{try{let a=e(...o);if(a instanceof Promise)return a.catch((i)=>{let r=M.eventHandler(t,s,i);throw W(r,{throwError:!1}),r});return a}catch(a){let i=M.eventHandler(t,s,a);throw W(i,{throwError:!1}),i}}}function We(e,t){if(!e)throw t}function _e(e,t,s={}){if(B.env.NODE_ENV==="production")return;let o=N.formatMessage(e,t,s);console.warn(`\u26A0\uFE0F ${o}`)}function er(e,t){if(B.env.NODE_ENV==="production")return;We(e,t)}function tr(e){let t=typeof B<"u"&&B.env.DEBUG==="true";return{log(...s){if(t)console.log(`[${e}]`,...s)},warn(s,o){_e(e,s,o)},error(s,o){let a=new N(e,s,o);W(a,{throwError:!1})}}}function sr(e,t,s){try{return t()}catch(o){let a=M.render(e,o);return W(a,{throwError:!1}),s}}import Fe from"process";var _=Fe.env.NODE_ENV!=="production";class ${validate;message;isRequired;constructor(e,t,s=!1){this.validate=e;this.message=t;this.isRequired=s}get required(){return new $(this.validate,this.message,!0)}}var l={string:new $((e)=>typeof e==="string",(e,t,s)=>`Invalid prop \`${t}\` of type \`${typeof e}\` supplied to \`${s}\`, expected \`string\`.`),number:new $((e)=>typeof e==="number"&&!Number.isNaN(e),(e,t,s)=>`Invalid prop \`${t}\` of type \`${typeof e}\` supplied to \`${s}\`, expected \`number\`.`),boolean:new $((e)=>typeof e==="boolean",(e,t,s)=>`Invalid prop \`${t}\` of type \`${typeof e}\` supplied to \`${s}\`, expected \`boolean\`.`),func:new $((e)=>typeof e==="function",(e,t,s)=>`Invalid prop \`${t}\` of type \`${typeof e}\` supplied to \`${s}\`, expected \`function\`.`),object:new $((e)=>typeof e==="object"&&e!==null&&!Array.isArray(e),(e,t,s)=>`Invalid prop \`${t}\` of type \`${typeof e}\` supplied to \`${s}\`, expected \`object\`.`),array:new $((e)=>Array.isArray(e),(e,t,s)=>`Invalid prop \`${t}\` of type \`${typeof e}\` supplied to \`${s}\`, expected \`array\`.`),any:new $(()=>!0,()=>""),oneOf(e){return new $((t)=>e.includes(t),(t,s,o)=>`Invalid prop \`${s}\` of value \`${t}\` supplied to \`${o}\`, expected one of [${e.map((a)=>JSON.stringify(a)).join(", ")}].`)},oneOfType(e){return new $((t,s,o)=>e.some((a)=>a.validate(t,s,o)),(t,s,o)=>`Invalid prop \`${s}\` supplied to \`${o}\`, expected one of the specified types.`)},arrayOf(e){return new $((t,s,o)=>{if(!Array.isArray(t))return!1;return t.every((a,i)=>e.validate(a,`${s}[${i}]`,o))},(t,s,o)=>`Invalid prop \`${s}\` supplied to \`${o}\`, expected array of specified type.`)},shape(e){return new $((t,s,o)=>{if(typeof t!=="object"||t===null||Array.isArray(t))return!1;for(let[a,i]of Object.entries(e)){if(i.isRequired&&!(a in t))return!1;if(a in t&&!i.validate(t[a],`${s}.${a}`,o))return!1}return!0},(t,s,o)=>`Invalid prop \`${s}\` supplied to \`${o}\`, expected object matching specified shape.`)},instanceOf(e){return new $((t)=>t instanceof e,(t,s,o)=>`Invalid prop \`${s}\` supplied to \`${o}\`, expected instance of \`${e.name}\`.`)},custom(e,t){return new $(e,typeof t==="string"?()=>t:t)},min(e){return new $((t)=>typeof t==="number"&&t>=e,(t,s,o)=>`Invalid prop \`${s}\` of value \`${t}\` supplied to \`${o}\`, expected value >= ${e}.`)},max(e){return new $((t)=>typeof t==="number"&&t<=e,(t,s,o)=>`Invalid prop \`${s}\` of value \`${t}\` supplied to \`${o}\`, expected value <= ${e}.`)},range(e,t){return new $((s)=>typeof s==="number"&&s>=e&&s<=t,(s,o,a)=>`Invalid prop \`${o}\` of value \`${s}\` supplied to \`${a}\`, expected value between ${e} and ${t}.`)},pattern(e){return new $((t)=>typeof t==="string"&&e.test(t),(t,s,o)=>`Invalid prop \`${s}\` of value \`${t}\` supplied to \`${o}\`, expected value matching pattern ${e}.`)},email:new $((e)=>typeof e==="string"&&/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e),(e,t,s)=>`Invalid prop \`${t}\` of value \`${e}\` supplied to \`${s}\`, expected valid email address.`),url:new $((e)=>{if(typeof e!=="string")return!1;try{let t=new URL(e);return!0}catch{return!1}},(e,t,s)=>`Invalid prop \`${t}\` of value \`${e}\` supplied to \`${s}\`, expected valid URL.`)};function Ke(e,t,s,o={}){let{throwOnError:a=!1,logWarnings:i=_}=o,r=[];if(!_)return{valid:!0,errors:[]};for(let[n,c]of Object.entries(s)){let d=t[n],f=d===void 0;if(c.isRequired&&f){let p=`Required prop \`${n}\` was not specified in \`${e}\`.`;r.push(p);continue}if(f)continue;if(!c.validate(d,n,e)){let p=c.message(d,n,e);r.push(p)}}if(r.length>0){if(i)console.group(`\u26A0\uFE0F Prop validation failed for \`${e}\``),r.forEach((n)=>console.warn(n)),console.groupEnd();if(a)throw Error(`Prop validation failed for \`${e}\`:
|
|
10
10
|
${r.join(`
|
|
11
|
-
`)}`)}return{valid:r.length===0,errors:r}}function D(e,t,s){return(o)=>Fe(e,o,t,s)}function ar(e,t,s="value"){if(!_)return;if(!t.validate(e,s,"assertion"))throw Error(t.message(e,s,"assertion"))}function ir(e,t,s="value"){if(!_)return;if(!t.validate(e,s,"warning"))console.warn(t.message(e,s,"warning"))}var Ge="./Button-wrwmnfpf.stx";var Ue={variant:l.oneOf(["primary","secondary","outline","ghost","danger"]),size:l.oneOf(["xs","sm","md","lg","xl"]),disabled:l.boolean,loading:l.boolean,type:l.oneOf(["button","submit","reset"]),fullWidth:l.boolean,leftIcon:l.string,rightIcon:l.string,className:l.string,onClick:l.func},dr=D("Button",Ue);function pr(e){return ne(e,"Button","onClick")}function ur(e){if(e&&!["primary","secondary","outline","ghost","danger"].includes(e))throw M.invalidProp("Button","variant",e,["primary","secondary","outline","ghost","danger"])}function fr(e){if(e&&!["xs","sm","md","lg","xl"].includes(e))throw M.invalidProp("Button","size",e,["xs","sm","md","lg","xl"])}var Je="./Calendar-gjjhhfnt.stx";var Ze="./Card-473a02fy.stx";var et="./Checkbox-2s2a7n4h.stx";var st="./Combobox-fdkr6cdq.stx";var at="./ComboboxButton-g76stp1e.stx";var rt="./ComboboxInput-z1293bbh.stx";var lt="./ComboboxOption-6yh7xk7q.stx";var dt="./ComboboxOptions-sq5360ae.stx";var ut="./CommandPalette-36mxf05w.stx";var ht="./CommandPaletteItem-chdw0070.stx";var gt="./Dialog-y5rz2vrq.stx";var mt="./DialogBackdrop-rxax3sec.stx";var wt="./DialogDescription-gth4c2kx.stx";var Ct="./DialogPanel-44d8jeqy.stx";var kt="./DialogTitle-x0r6k8x9.stx";var It="./Drawer-jgepqr9j.stx";var Tt="./Dropdown-vvhemtc0.stx";var Dt="./DropdownButton-wcz67dxy.stx";var zt="./DropdownItem-d8ht2bp5.stx";var Et="./DropdownItems-1sxnd5qn.stx";var Mt="./Form-vbag14t1.stx";var Rt={action:l.string,method:l.oneOf(["GET","POST","PUT","DELETE","PATCH"]),validationSchema:l.object,initialValues:l.object,validateOnChange:l.boolean,validateOnBlur:l.boolean,onSubmit:l.func,onError:l.func,className:l.string},fn=D("Form",Rt);var Bt="./Image-yhxcvgzs.stx";var Ht="./EmailInput-vak3kkmk.stx";var Wt="./NumberInput-j9p5bm5y.stx";var Ft="./PasswordInput-4qykq1dz.stx";var Gt="./SearchInput-pdx7agn0.stx";var Yt="./TextInput-cefyyprt.stx";var Jt={value:l.string,onChange:l.func,placeholder:l.string,disabled:l.boolean,readonly:l.boolean,size:l.oneOf(["sm","md","lg"]),error:l.boolean,label:l.string,helperText:l.string,required:l.boolean,className:l.string,inputClassName:l.string},Xt={value:l.string,onChange:l.func,placeholder:l.string,disabled:l.boolean,readonly:l.boolean,size:l.oneOf(["sm","md","lg"]),error:l.boolean,label:l.string,helperText:l.string,required:l.boolean,className:l.string,inputClassName:l.string,leftIcon:l.string,rightIcon:l.string,clearable:l.boolean,maxLength:l.number,showCount:l.boolean},Zt={value:l.string,onChange:l.func,placeholder:l.string,disabled:l.boolean,readonly:l.boolean,size:l.oneOf(["sm","md","lg"]),error:l.boolean,label:l.string,helperText:l.string,required:l.boolean,className:l.string,inputClassName:l.string,min:l.number,max:l.number,step:l.number,showControls:l.boolean},Qt={value:l.string,onChange:l.func,placeholder:l.string,disabled:l.boolean,readonly:l.boolean,size:l.oneOf(["sm","md","lg"]),error:l.boolean,label:l.string,helperText:l.string,required:l.boolean,className:l.string,inputClassName:l.string,showStrength:l.boolean},es={value:l.string,onChange:l.func,placeholder:l.string,disabled:l.boolean,readonly:l.boolean,size:l.oneOf(["sm","md","lg"]),error:l.boolean,label:l.string,helperText:l.string,required:l.boolean,className:l.string,inputClassName:l.string,onSearch:l.func,loading:l.boolean},Sn=D("TextInput",Xt),In=D("EmailInput",Jt),Nn=D("PasswordInput",Qt),Tn=D("NumberInput",Zt),An=D("SearchInput",es);var ss="./Listbox-q49tnr90.stx";var as="./ListboxButton-keb8gm0q.stx";var rs="./ListboxLabel-7mymt1b8.stx";var ls="./ListboxOption-4j070101.stx";var ds="./ListboxOptions-ejkatcfg.stx";var us="./Navigator-smpa7my4.stx";var hs="./Notification-03vfh3k6.stx";var gs="./Pagination-jbcjrfcs.stx";var ms="./Checkout-22wh3s22.stx";var ws="./DefaultPaymentMethod-6qrem3sg.stx";var Cs="./PaymentMethods-2xy66bwk.stx";var ks="./SubscriptionCheckout-7fdkwf04.stx";var Is="./Popover-et2q44m7.stx";var Ts="./PopoverButton-mffzc9pr.stx";var Ds="./PopoverPanel-054yh38h.stx";var zs="./Portal-1vf14s4x.stx";var Es="./Progress-4h7dytq5.stx";var Ms="./Radio-ccm07b2m.stx";var qs="./RadioGroup-eerw9gq7.stx";var js="./RadioGroupDescription-z34r9avr.stx";var Vs="./RadioGroupLabel-7mymt1b8.stx";var _s="./RadioGroupOption-7pq7rw84.stx";var Ks="./Select-zt72gg1e.stx";var Us="./Sidebar-jv07dxmk.stx";var Js="./SidebarFooter-s7skj92y.stx";var Zs="./SidebarHeader-vvxsehyn.stx";var eo="./SidebarItem-5v8atp7p.stx";var so="./SidebarPinned-rq05nrtd.stx";var ao="./SidebarSection-zd9z35ch.stx";var ro="./SidebarSpace-nmbvgrky.stx";var lo="./SidebarSpaces-e1m8epd7.stx";var po="./SidebarSpaceSwitcher-az9wqm87.stx";var F={blue:"#0088ff",red:"#ff383c",pink:"#ff2d55",orange:"#ff8d28",yellow:"#ffcc00",green:"#34c759",teal:"#00c3d0",cyan:"#00c0e8",indigo:"#6155f5",purple:"#cb30e0",brown:"#ac7f5e",gray:"#8e8e93"},O={pane:["bg-[#f2f2f4]/90 dark:bg-[#1c1c1e]/88","backdrop-blur-[50px] backdrop-saturate-[180%]","text-black dark:text-white","select-none"].join(" "),selection:"accent",layers:{shimmerRim:!0},scrollArea:"flex-1 overflow-y-auto overflow-x-hidden px-[10px] pb-[10px]",sectionHeader:["group/section flex w-full items-center","pl-[8px] pr-[6px] pt-[16px] pb-[5px]","text-[11px] font-semibold leading-[13px]","text-[#3c3c43]/60 dark:text-[#ebebf5]/60"].join(" "),sectionChevron:["i-f7-chevron-down h-[11px] w-[11px] ml-auto","text-[#3c3c43]/45 dark:text-[#ebebf5]/45","opacity-0 group-hover/section:opacity-100 transition-opacity duration-150","transition-transform duration-200"].join(" "),sectionGroup:"flex flex-col",item:{base:["flex w-full items-center","h-[32px] rounded-[8px] pl-[4px] pr-[8px]","text-[13px] leading-[16px] font-normal","text-black dark:text-white","transition-colors duration-150 ease-out","cursor-default"].join(" "),hover:"hover:bg-black/4 dark:hover:bg-white/6",active:"",pressed:"active:bg-black/10 dark:active:bg-white/18",disabled:"opacity-40 pointer-events-none",disclosure:"flex h-[16px] w-[18px] shrink-0 items-center justify-center",chevron:["i-f7-chevron-right h-[11px] w-[11px]","text-[#3c3c43]/55 dark:text-[#ebebf5]/55","transition-transform duration-200 ease-out"].join(" "),iconSlot:"flex h-[20px] w-[22px] shrink-0 items-center justify-center mr-[7px]",icon:"h-[17px] w-[17px]",image:"h-[20px] w-[20px] rounded-[4px] object-cover shadow-sm",label:"flex-1 truncate text-left",count:["ml-[8px] shrink-0 tabular-nums","text-[13px] leading-[16px]","text-[#3c3c43]/60 dark:text-[#ebebf5]/60"].join(" "),indentPerLevel:16}},uo={selection:"classes",pane:"bg-[#f4f4f3] dark:bg-neutral-950 text-zinc-950 dark:text-white select-none",layers:{},scrollArea:"flex-1 overflow-y-auto overflow-x-hidden px-5 py-5",sectionHeader:"group/section flex w-full items-center gap-2.5 px-4 pb-2 pt-5 text-[13px] font-semibold uppercase tracking-[0.12em] text-zinc-400 dark:text-zinc-500",sectionChevron:"i-f7-chevron-down h-3 w-3 ml-auto opacity-0 group-hover/section:opacity-100 transition-opacity duration-150 transition-transform duration-200",sectionGroup:"flex flex-col space-y-1",item:{base:"flex w-full items-center gap-3 rounded-[16px] px-3.5 py-2 text-[14px] leading-tight transition-colors duration-150",hover:"hover:bg-[#ececea] hover:text-zinc-950 dark:hover:bg-white/10",active:"bg-[#e7e7e5] text-zinc-950 dark:bg-white/12 dark:text-white",pressed:"active:bg-[#e2e2e0] dark:active:bg-white/15",disabled:"opacity-50 pointer-events-none",disclosure:"flex h-4 w-4 shrink-0 items-center justify-center",chevron:"i-f7-chevron-right h-3 w-3 opacity-50 transition-transform duration-200",iconSlot:"flex h-5 w-5 shrink-0 items-center justify-center",icon:"h-[18px] w-[18px] text-zinc-500 dark:text-zinc-500",image:"h-5 w-5 rounded object-cover",label:"flex-1 truncate text-left text-zinc-700 dark:text-zinc-300",count:"ml-auto grid h-5 min-w-5 place-items-center rounded-full bg-white/70 px-1.5 text-[11px] font-medium text-zinc-500 shadow-sm dark:bg-white/10 dark:text-zinc-400",indentPerLevel:12}},fo={selection:"classes",pane:"bg-[#f3f3f1]/48 dark:bg-neutral-950/32 backdrop-blur-3xl backdrop-saturate-150 text-zinc-950 dark:text-white select-none",layers:{tint:"bg-[linear-gradient(112deg,rgba(255,255,255,0.20)_0%,rgba(255,255,255,0.04)_45%,rgba(226,226,222,0.16)_100%)] dark:bg-[linear-gradient(112deg,rgba(255,255,255,0.08)_0%,rgba(255,255,255,0.02)_46%,rgba(255,255,255,0.06)_100%)]"},scrollArea:"flex-1 overflow-y-auto overflow-x-hidden px-5 py-2",sectionHeader:"group/section flex w-full items-center gap-2.5 px-3 pb-1.5 pt-3 rounded-[14px] text-[12px] font-semibold uppercase tracking-[0.10em] text-zinc-500/80 dark:text-zinc-400/80",sectionChevron:"i-f7-chevron-down h-3 w-3 ml-auto opacity-0 group-hover/section:opacity-100 transition-opacity duration-150 transition-transform duration-200",sectionGroup:"flex flex-col space-y-1",item:{base:"flex w-full items-center gap-3 rounded-[14px] px-3 py-1.5 text-[13.5px] leading-tight transition-colors duration-150",hover:"hover:bg-white/38 hover:text-zinc-950 dark:hover:bg-white/10",active:"bg-[#e8e8e6]/90 text-zinc-950 dark:bg-white/12 dark:text-white",pressed:"active:bg-white/50 dark:active:bg-white/15",disabled:"opacity-50 pointer-events-none",disclosure:"flex h-4 w-4 shrink-0 items-center justify-center",chevron:"i-f7-chevron-right h-3 w-3 opacity-50 transition-transform duration-200",iconSlot:"flex h-5 w-5 shrink-0 items-center justify-center",icon:"h-[18px] w-[18px] text-zinc-600 dark:text-zinc-400",image:"h-5 w-5 rounded object-cover",label:"flex-1 truncate text-left text-zinc-700 dark:text-zinc-300",count:"ml-auto grid h-5 min-w-5 place-items-center rounded-full bg-white/72 px-1.5 text-[11px] font-medium text-zinc-500 shadow-sm dark:bg-white/10 dark:text-zinc-400",indentPerLevel:12}},ho={selection:"classes",pane:["bg-[#f7f5f1]/92 dark:bg-[#1a1a1c]/92","backdrop-blur-[40px] backdrop-saturate-[160%]","text-[#2c2a28] dark:text-[#ededf0]","select-none"].join(" "),layers:{tint:["bg-[linear-gradient(180deg,var(--stx-sidebar-tint,rgba(255,251,242,0.55))_0%,rgba(255,255,255,0)_38%)]","dark:bg-[linear-gradient(180deg,var(--stx-sidebar-tint,rgba(255,255,255,0.05))_0%,rgba(255,255,255,0)_42%)]"].join(" ")},scrollArea:"flex-1 overflow-y-auto overflow-x-hidden px-[8px] pb-[8px]",sectionHeader:["group/section flex w-full items-center","px-[8px] pt-[14px] pb-[4px]","text-[11px] font-medium leading-[13px]","opacity-55"].join(" "),sectionChevron:["i-f7-chevron-down h-[10px] w-[10px] ml-auto","opacity-0 group-hover/section:opacity-100 transition-opacity duration-150","transition-transform duration-200"].join(" "),sectionGroup:"flex flex-col space-y-[2px]",item:{base:["flex w-full items-center","h-[30px] rounded-[8px] pl-[6px] pr-[8px]","text-[13px] leading-[16px] font-normal","text-current","transition-[background-color,box-shadow,color] duration-150 ease-out","cursor-default"].join(" "),hover:"hover:bg-white/55 dark:hover:bg-white/8",active:["bg-white dark:bg-white/14","font-medium","shadow-[0_1px_2px_rgba(0,0,0,0.08)] dark:shadow-[0_1px_2px_rgba(0,0,0,0.35)]","ring-1 ring-black/5 dark:ring-white/8"].join(" "),pressed:"active:bg-white/80 dark:active:bg-white/18",disabled:"opacity-40 pointer-events-none",disclosure:"flex h-[16px] w-[16px] shrink-0 items-center justify-center",chevron:["i-f7-chevron-right h-[10px] w-[10px] opacity-45","transition-transform duration-200 ease-out"].join(" "),iconSlot:"flex h-[18px] w-[18px] shrink-0 items-center justify-center mr-[8px]",icon:"h-[16px] w-[16px]",image:"h-[18px] w-[18px] rounded-[5px] object-cover shadow-sm",label:"flex-1 truncate text-left",count:["ml-[8px] shrink-0 tabular-nums","text-[12px] leading-[16px] opacity-45"].join(" "),indentPerLevel:14}},bo={...O,pane:"bg-stone-100 dark:bg-neutral-900 text-black dark:text-white select-none",layers:{}},go={...O,pane:"bg-transparent text-black dark:text-white select-none",layers:{}},xo={...O,pane:"bg-white/50 dark:bg-black/40 backdrop-blur-3xl backdrop-saturate-200 text-black dark:text-white select-none",layers:{}},le={macos:O,tahoe:O,"macos-tahoe":O,"macos-latest":O,arc:ho,workspace:uo,desktop:fo,solid:bo,transparent:go,vibrancy:xo};function Ul(e){return le[e||"macos"]||le.macos}function Yl(e){if(!e)return;return F[e]||e}var mo=F.gray;function P(e,t,s){return`color-mix(in oklab, ${e} ${t}%, ${s})`}function ce(e){return{light:{from:P(e,34,"#ffffff"),to:P(e,16,"#ffffff"),ink:P(e,22,"#17171b"),accent:P(e,88,"#2a2a30")},dark:{from:P(e,26,"#101014"),to:P(e,14,"#08080b"),ink:P(e,12,"#f4f4f7"),accent:P(e,74,"#ffffff")}}}function vo(e){if(!e)return ce(mo);if(typeof e!=="string")return e;return ce(F[e]||e)}function wo(e){return[`--stx-space-light-from: ${e.light.from}`,`--stx-space-light-to: ${e.light.to}`,`--stx-space-light-ink: ${e.light.ink}`,`--stx-space-light-accent: ${e.light.accent}`,`--stx-space-dark-from: ${e.dark.from}`,`--stx-space-dark-to: ${e.dark.to}`,`--stx-space-dark-ink: ${e.dark.ink}`,`--stx-space-dark-accent: ${e.dark.accent}`].join("; ")}function de(e,t,s,o){if(!e||!e.label)return null;return{id:e.id||`${t}-${s}`,label:e.label,icon:e.icon||o}}function yo(e){let t=vo(e.tint);return{id:e.id,label:e.label||"",icon:e.icon||"",pinned:e.pinned||[],sections:e.sections||[],action:de(e.action,e.id,"action","i-f7-plus"),clear:de(e.clear,e.id,"clear","i-f7-arrow-down"),tint:t,style:wo(t),deferred:e.deferred===!0,showTitle:e.showTitle??!0}}function Zl(e){return(e||[]).map(yo)}function Ql(e,t){if(!t)return 0;let s=e.findIndex((o)=>o.id===t);return s===-1?0:s}function ec(e){return e.map((t)=>t.tint)}var $o="./Skeleton-wtwb97xd.stx";var So="./Spinner-ypya5tt2.stx";var No="./Stepper-rgbk76hd.stx";var Ao="./StepperStep-3ahq4d9m.stx";class K{storage;namespace;watchers=new Map;encryptionKey="stx-storage-key";constructor(e="local",t=""){if(this.storage=e==="local"?globalThis.localStorage:globalThis.sessionStorage,this.namespace=t,typeof window<"u")window.addEventListener("storage",this.handleStorageEvent.bind(this))}handleStorageEvent(e){if(!e.key)return;let t=this.namespace&&e.key.startsWith(`${this.namespace}:`)?e.key.slice(this.namespace.length+1):e.key,s=this.watchers.get(t);if(s){let o=e.oldValue?JSON.parse(e.oldValue).value:null,a=e.newValue?JSON.parse(e.newValue).value:null;s.forEach((i)=>i(a,o,t))}}encrypt(e){let t="";for(let s=0;s<e.length;s++)t+=String.fromCharCode(e.charCodeAt(s)^this.encryptionKey.charCodeAt(s%this.encryptionKey.length));return btoa(t)}decrypt(e){try{let t=atob(e),s="";for(let o=0;o<t.length;o++)s+=String.fromCharCode(t.charCodeAt(o)^this.encryptionKey.charCodeAt(o%this.encryptionKey.length));return s}catch{return e}}compress(e){if(e.length<100)return e;let t={},s=256,o=[],a="";for(let i=0;i<e.length;i++){let r=e.charAt(i),n=a+r;if(t[n]!==void 0)a=n;else o.push(a.length>1?t[a]:a.charCodeAt(0)),t[n]=s++,a=r}if(a!=="")o.push(a.length>1?t[a]:a.charCodeAt(0));return JSON.stringify(o)}decompress(e){try{let t=JSON.parse(e);if(!Array.isArray(t))return e;let s={},o=256,a=String.fromCharCode(t[0]),i=a;for(let r=1;r<t.length;r++){let n=t[r],c;if(s[n]!==void 0)c=s[n];else if(n===o)c=a+a.charAt(0);else return e;i+=c,s[o++]=a+c.charAt(0),a=c}return i}catch{return e}}getKey(e){return this.namespace?`${this.namespace}:${e}`:e}set(e,t,s){let o=this.getKey(e),a=this.get(e),i={value:t,timestamp:Date.now(),expire:s?.expire,encrypted:s?.encrypt||!1,compressed:s?.compress||!1};try{let r=JSON.stringify(i);if(s?.compress)r=this.compress(r);if(s?.encrypt)r=this.encrypt(r);this.storage.setItem(o,r),this.notifyWatchers(e,t,a)}catch(r){console.error("Storage set error:",r)}}get(e){let t=this.getKey(e);try{let s=this.storage.getItem(t);if(!s)return null;if(s.match(/^[A-Z0-9+/]+=*$/i))try{s=this.decrypt(s)}catch{}if(s.startsWith("["))try{s=this.decompress(s)}catch{}let o=JSON.parse(s);if(o.expire&&Date.now()-o.timestamp>o.expire)return this.remove(e),null;return o.value}catch(s){return console.error("Storage get error:",s),null}}watch(e,t){if(!this.watchers.has(e))this.watchers.set(e,new Set);return this.watchers.get(e).add(t),()=>{let s=this.watchers.get(e);if(s){if(s.delete(t),s.size===0)this.watchers.delete(e)}}}notifyWatchers(e,t,s){let o=this.watchers.get(e);if(o)o.forEach((a)=>a(t,s,e))}remove(e){let t=this.getKey(e),s=this.get(e);this.storage.removeItem(t),this.notifyWatchers(e,null,s)}clear(){if(this.namespace)this.keys().forEach((t)=>this.remove(t));else this.storage.clear()}has(e){return this.get(e)!==null}keys(){let e=Object.keys(this.storage);if(this.namespace){let t=`${this.namespace}:`;return e.filter((s)=>s.startsWith(t)).map((s)=>s.slice(t.length))}return e}size(){return this.keys().length}getQuota(){if("storage"in navigator&&"estimate"in navigator.storage)return null;try{let e=0;for(let s=0;s<this.storage.length;s++){let o=this.storage.key(s);if(o){let a=this.storage.getItem(o)||"";e+=o.length+a.length}}let t=5242880;return{usage:e*2,quota:t,percentage:e*2/t*100}}catch{return null}}setMany(e,t){Object.entries(e).forEach(([s,o])=>{this.set(s,o,t)})}getMany(e){let t={};return e.forEach((s)=>{t[s]=this.get(s)}),t}removeMany(e){e.forEach((t)=>this.remove(t))}}var Ic={local:new K("local"),session:new K("session")};function Nc(e="local",t){return new K(e,t)}var Lo="./Switch-hdta55a8.stx";var Po="./Table-0mc3fdek.stx";var Oo="./TableBody-drxyz5jh.stx";var Ro="./TableCell-8swtcq8s.stx";var Bo="./TableHead-e9xvjx2j.stx";var Ho="./TableHeader-sxc77b4d.stx";var Wo="./TableRow-xd542nvb.stx";var Fo="./TabPanel-5htevsq6.stx";var Go="./Tabs-b4xsba1w.stx";var Yo="./Teleport-tsx4bt4n.stx";var Xo="./Textarea-xcdym703.stx";var Qo="./Tooltip-y61h04gp.stx";var ta="./Transition-7smenaz8.stx";var oa="./Video-a0aeyexv.stx";var ia="./VirtualList-fa7v5a3h.stx";var na="./VirtualTable-jvm1784g.stx";var la=0;function pe(e="a11y"){return`${e}-${++la}-${Date.now()}`}function xd(e,t,s={}){let{visible:o=!1,id:a=pe("label")}=s,i=document.createElement(o?"label":"span");if(i.id=a,i.textContent=e,!o)Object.assign(i.style,{position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",border:"0"});if(t)if(t.setAttribute("aria-labelledby",a),t.parentElement)t.parentElement.insertBefore(i,t);else document.body.appendChild(i);return a}function md(e,t){let s=pe("desc"),o=document.createElement("span");if(o.id=s,o.textContent=e,Object.assign(o.style,{position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",border:"0"}),t)if(t.setAttribute("aria-describedby",s),t.parentElement)t.parentElement.insertBefore(o,t);else document.body.appendChild(o);return s}function vd(e,t="polite"){let s=document.createElement("div");s.setAttribute("role","status"),s.setAttribute("aria-live",t),s.setAttribute("aria-atomic","true"),Object.assign(s.style,{position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",border:"0"}),document.body.appendChild(s),setTimeout(()=>{s.textContent=e},100),setTimeout(()=>{s.parentNode?.removeChild(s)},1000)}function ee(e){let t=["a[href]","area[href]",'input:not([disabled]):not([type="hidden"])',"select:not([disabled])","textarea:not([disabled])","button:not([disabled])","iframe","object","embed","[contenteditable]",'[tabindex]:not([tabindex="-1"])'].join(",");return Array.from(e.querySelectorAll(t)).filter((s)=>s.offsetParent!==null)}function wd(e,t={}){let{initialFocus:s,returnFocus:o,escapeDeactivates:a=!0,clickOutsideDeactivates:i=!0,allowOutsideClick:r=!1,onActivate:n,onDeactivate:c}=t,d=!1,f=!1,p=null,g=(m)=>{if(f)return;if(a&&m.key==="Escape"){m.preventDefault(),v();return}if(m.key==="Tab"){let C=ee(e);if(C.length===0){m.preventDefault();return}let T=C[0],z=C[C.length-1];if(m.shiftKey){if(document.activeElement===T)m.preventDefault(),z.focus()}else if(document.activeElement===z)m.preventDefault(),T.focus()}},h=(m)=>{if(f)return;if(!e.contains(m.target)){if(typeof r==="function"){if(!r(m)&&i)v()}else if(!r&&i)v()}};function w(){if(d)return;d=!0,p=document.activeElement;let m=s||ee(e)[0];if(m&&typeof m.focus==="function")m.focus();document.addEventListener("keydown",g),document.addEventListener("click",h),n?.()}function v(){if(!d)return;d=!1;let m=o||p;if(m&&typeof m.focus==="function")m.focus();document.removeEventListener("keydown",g),document.removeEventListener("click",h),c?.()}function k(){f=!0}function x(){f=!1}return{activate:w,deactivate:v,pause:k,unpause:x}}function yd(e,t={}){let{selector:s='[role="option"], [role="menuitem"], [role="tab"], button',initialIndex:o=0,orientation:a="both",loop:i=!0,onFocusChange:r}=t,n=o,c=()=>{return Array.from(e.querySelectorAll(s))},d=(p)=>{let g=c();if(p<0||p>=g.length)return;g.forEach((h,w)=>{if(w===p){if(h.setAttribute("tabindex","0"),typeof h.focus==="function")h.focus()}else h.setAttribute("tabindex","-1")}),n=p,r?.(p,g[p])},f=(p)=>{let h=c().length-1,w=!1,v=n;switch(p.key){case"ArrowRight":if(a==="horizontal"||a==="both"){if(v=n+1,v>h)v=i?0:h;w=!0}break;case"ArrowLeft":if(a==="horizontal"||a==="both"){if(v=n-1,v<0)v=i?h:0;w=!0}break;case"ArrowDown":if(a==="vertical"||a==="both"){if(v=n+1,v>h)v=i?0:h;w=!0}break;case"ArrowUp":if(a==="vertical"||a==="both"){if(v=n-1,v<0)v=i?h:0;w=!0}break;case"Home":v=0,w=!0;break;case"End":v=h,w=!0;break}if(w)p.preventDefault(),d(v)};return d(o),e.addEventListener("keydown",f),()=>{e.removeEventListener("keydown",f)}}var Cd={Enter:"Enter",Space:" ",Escape:"Escape",ArrowUp:"ArrowUp",ArrowDown:"ArrowDown",ArrowLeft:"ArrowLeft",ArrowRight:"ArrowRight",Tab:"Tab",Home:"Home",End:"End",PageUp:"PageUp",PageDown:"PageDown"};function $d(e){return document.activeElement===e}function kd(e,t){let s=t||document.activeElement,o=ee(document.body),a=o.indexOf(s);if(a===-1)return;let i=e==="next"?a+1:a-1,r=o[i];if(r)r.focus()}function Sd(e){if(e.getAttribute("aria-hidden")==="true")return!1;let t=window.getComputedStyle(e);if(t.display==="none"||t.visibility==="hidden")return!1;return!0}var Id={setExpanded(e,t){e.setAttribute("aria-expanded",String(t))},setSelected(e,t){e.setAttribute("aria-selected",String(t))},setChecked(e,t){e.setAttribute("aria-checked",String(t))},setDisabled(e,t){if(e.setAttribute("aria-disabled",String(t)),t)e.setAttribute("tabindex","-1");else e.removeAttribute("tabindex")},setHidden(e,t){if(t)e.setAttribute("aria-hidden","true");else e.removeAttribute("aria-hidden")},setPressed(e,t){e.setAttribute("aria-pressed",String(t))},setInvalid(e,t){e.setAttribute("aria-invalid",String(t))},setRequired(e,t){e.setAttribute("aria-required",String(t))},setLive(e,t){e.setAttribute("aria-live",t)},setBusy(e,t){e.setAttribute("aria-busy",String(t))}};function Nd(e){let t=document.createElement("span");return t.textContent=e,t.className="sr-only",Object.assign(t.style,{position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",border:"0"}),t}function Td(){if(typeof window.matchMedia==="function")return window.matchMedia("(prefers-reduced-motion: reduce)").matches;return!1}function Ad(){if(typeof window.matchMedia==="function")return window.matchMedia("(prefers-contrast: high)").matches;return!1}function Dd(){if(typeof window.matchMedia==="function"){if(window.matchMedia("(prefers-color-scheme: dark)").matches)return"dark";if(window.matchMedia("(prefers-color-scheme: light)").matches)return"light"}return null}function Ld(e,t="Skip to main content"){let s=document.createElement("a");return s.href=`#${e}`,s.textContent=t,s.className="skip-link",Object.assign(s.style,{position:"absolute",top:"-40px",left:"0",background:"#000",color:"#fff",padding:"8px",textDecoration:"none",zIndex:"100"}),s.addEventListener("focus",()=>{s.style.top="0"}),s.addEventListener("blur",()=>{s.style.top="-40px"}),s}function zd(e){let t=[],s=(o)=>{let a=e.getAttribute(o);if(a){let i=a.split(" ");for(let r of i)if(!document.getElementById(r))t.push(`${o} references non-existent ID: ${r}`)}};return s("aria-labelledby"),s("aria-describedby"),s("aria-controls"),s("aria-owns"),s("aria-activedescendant"),t}var ca=(e,t,s,o)=>{return s*e/o+t},da=(e,t,s,o)=>{return e/=o,s*e*e+t},pa=(e,t,s,o)=>{return e/=o,-s*e*(e-2)+t},ua=(e,t,s,o)=>{if(e/=o/2,e<1)return s/2*e*e+t;return e--,-s/2*(e*(e-2)-1)+t},fa=(e,t,s,o)=>{return e/=o,s*e*e*e+t},ha=(e,t,s,o)=>{return e/=o,e--,s*(e*e*e+1)+t},ba=(e,t,s,o)=>{if(e/=o/2,e<1)return s/2*e*e*e+t;return e-=2,s/2*(e*e*e+2)+t},ga=(e,t,s,o)=>{return e/=o,s*e*e*e*e+t},xa=(e,t,s,o)=>{return e/=o,e--,-s*(e*e*e*e-1)+t},ma=(e,t,s,o)=>{if(e/=o/2,e<1)return s/2*e*e*e*e+t;return e-=2,-s/2*(e*e*e*e-2)+t},va=(e,t,s,o)=>{return e/=o,s*e*e*e*e*e+t},wa=(e,t,s,o)=>{return e/=o,e--,s*(e*e*e*e*e+1)+t},ya=(e,t,s,o)=>{if(e/=o/2,e<1)return s/2*e*e*e*e*e+t;return e-=2,s/2*(e*e*e*e*e+2)+t},Ca=(e,t,s,o)=>{return-s*Math.cos(e/o*(Math.PI/2))+s+t},$a=(e,t,s,o)=>{return s*Math.sin(e/o*(Math.PI/2))+t},ka=(e,t,s,o)=>{return-s/2*(Math.cos(Math.PI*e/o)-1)+t},Sa=(e,t,s,o)=>{return e===0?t:s*2**(10*(e/o-1))+t},Ia=(e,t,s,o)=>{return e===o?t+s:s*(-(2**(-10*e/o))+1)+t},Na=(e,t,s,o)=>{if(e===0)return t;if(e===o)return t+s;if(e/=o/2,e<1)return s/2*2**(10*(e-1))+t;return e--,s/2*(-(2**(-10*e))+2)+t},Ta=(e,t,s,o)=>{return e/=o,-s*(Math.sqrt(1-e*e)-1)+t},Aa=(e,t,s,o)=>{return e/=o,e--,s*Math.sqrt(1-e*e)+t},Da=(e,t,s,o)=>{if(e/=o/2,e<1)return-s/2*(Math.sqrt(1-e*e)-1)+t;return e-=2,s/2*(Math.sqrt(1-e*e)+1)+t},La=(e,t,s,o)=>{let a=1.70158,i=0,r=s;if(e===0)return t;if(e/=o,e===1)return t+s;if(!i)i=o*0.3;if(r<Math.abs(s))r=s,a=i/4;else a=i/(2*Math.PI)*Math.asin(s/r);return e-=1,-(r*2**(10*e)*Math.sin((e*o-a)*(2*Math.PI)/i))+t},za=(e,t,s,o)=>{let a=1.70158,i=0,r=s;if(e===0)return t;if(e/=o,e===1)return t+s;if(!i)i=o*0.3;if(r<Math.abs(s))r=s,a=i/4;else a=i/(2*Math.PI)*Math.asin(s/r);return r*2**(-10*e)*Math.sin((e*o-a)*(2*Math.PI)/i)+s+t},Pa=(e,t,s,o)=>{let a=1.70158,i=0,r=s;if(e===0)return t;if(e/=o/2,e===2)return t+s;if(!i)i=o*0.44999999999999996;if(r<Math.abs(s))r=s,a=i/4;else a=i/(2*Math.PI)*Math.asin(s/r);if(e<1)return e-=1,-0.5*(r*2**(10*e)*Math.sin((e*o-a)*(2*Math.PI)/i))+t;return e-=1,r*2**(-10*e)*Math.sin((e*o-a)*(2*Math.PI)/i)*0.5+s+t},Ea=(e,t,s,o)=>{return e/=o,s*e*e*(2.70158*e-1.70158)+t},Oa=(e,t,s,o)=>{return e/=o,e--,s*(e*e*(2.70158*e+1.70158)+1)+t},Ma=(e,t,s,o)=>{let a=1.70158;if(e/=o/2,e<1)return a*=1.525,s/2*(e*e*((a+1)*e-a))+t;return e-=2,a*=1.525,s/2*(e*e*((a+1)*e+a)+2)+t},te=(e,t,s,o)=>{if(e/=o,e<0.36363636363636365)return s*(7.5625*e*e)+t;else if(e<0.7272727272727273)return e-=0.5454545454545454,s*(7.5625*e*e+0.75)+t;else if(e<0.9090909090909091)return e-=0.8181818181818182,s*(7.5625*e*e+0.9375)+t;else return e-=0.9545454545454546,s*(7.5625*e*e+0.984375)+t},ue=(e,t,s,o)=>{return s-te(o-e,0,s,o)+t},Ra=(e,t,s,o)=>{if(e<o/2)return ue(e*2,0,s,o)*0.5+t;return te(e*2-o,0,s,o)*0.5+s*0.5+t},Ed={linear:ca,easeInQuad:da,easeOutQuad:pa,easeInOutQuad:ua,easeInCubic:fa,easeOutCubic:ha,easeInOutCubic:ba,easeInQuart:ga,easeOutQuart:xa,easeInOutQuart:ma,easeInQuint:va,easeOutQuint:wa,easeInOutQuint:ya,easeInSine:Ca,easeOutSine:$a,easeInOutSine:ka,easeInExpo:Sa,easeOutExpo:Ia,easeInOutExpo:Na,easeInCirc:Ta,easeOutCirc:Aa,easeInOutCirc:Da,easeInElastic:La,easeOutElastic:za,easeInOutElastic:Pa,easeInBack:Ea,easeOutBack:Oa,easeInOutBack:Ma,easeInBounce:ue,easeOutBounce:te,easeInOutBounce:Ra};function qa(e,t={}){let{duration:s="1s",timing:o="ease",delay:a="0s",iteration:i="1",direction:r="normal",fill:n="both",playState:c="running"}=t;return`${e} ${s} ${o} ${a} ${i} ${r} ${n} ${c}`}function fe(e,t,s={}){e.style.animation=qa(t,s)}function Md(e){e.style.animation=""}function Ba(e){return new Promise((t)=>{let s=()=>{e.removeEventListener("animationend",s),t()};e.addEventListener("animationend",s)})}function Rd(e,t,s={}){let{stagger:o=100,...a}=s;e.forEach((i,r)=>{let n=`${r*o}ms`;fe(i,t,{...a,delay:n})})}async function qd(e,t){for(let s of t)fe(e,s.name,s.options),await Ba(e)}var Bd={fadeIn:"animate-fade-in",fadeOut:"animate-fade-out",slideInUp:"animate-slide-in-up",slideInDown:"animate-slide-in-down",slideInLeft:"animate-slide-in-left",slideInRight:"animate-slide-in-right",zoomIn:"animate-zoom-in",zoomOut:"animate-zoom-out",bounce:"animate-bounce",spin:"animate-spin",ping:"animate-ping",pulse:"animate-pulse"};function jd(e,t,s=1000){return new Promise((o)=>{e.classList.add(t),setTimeout(()=>{e.classList.remove(t),o()},s)})}function Hd(e,t){let s=`
|
|
11
|
+
`)}`)}return{valid:r.length===0,errors:r}}function D(e,t,s){return(o)=>Ke(e,o,t,s)}function ir(e,t,s="value"){if(!_)return;if(!t.validate(e,s,"assertion"))throw Error(t.message(e,s,"assertion"))}function rr(e,t,s="value"){if(!_)return;if(!t.validate(e,s,"warning"))console.warn(t.message(e,s,"warning"))}var Ue="./Button-wrwmnfpf.stx";var Ye={variant:l.oneOf(["primary","secondary","outline","ghost","danger"]),size:l.oneOf(["xs","sm","md","lg","xl"]),disabled:l.boolean,loading:l.boolean,type:l.oneOf(["button","submit","reset"]),fullWidth:l.boolean,leftIcon:l.string,rightIcon:l.string,className:l.string,onClick:l.func},pr=D("Button",Ye);function ur(e){return ne(e,"Button","onClick")}function fr(e){if(e&&!["primary","secondary","outline","ghost","danger"].includes(e))throw M.invalidProp("Button","variant",e,["primary","secondary","outline","ghost","danger"])}function hr(e){if(e&&!["xs","sm","md","lg","xl"].includes(e))throw M.invalidProp("Button","size",e,["xs","sm","md","lg","xl"])}var Xe="./Calendar-gjjhhfnt.stx";var Qe="./Card-473a02fy.stx";var tt="./Checkbox-2s2a7n4h.stx";var ot="./Combobox-fdkr6cdq.stx";var it="./ComboboxButton-g76stp1e.stx";var nt="./ComboboxInput-z1293bbh.stx";var ct="./ComboboxOption-6yh7xk7q.stx";var pt="./ComboboxOptions-sq5360ae.stx";var ft="./CommandPalette-36mxf05w.stx";var bt="./CommandPaletteItem-chdw0070.stx";var xt="./Dialog-y5rz2vrq.stx";var vt="./DialogBackdrop-rxax3sec.stx";var yt="./DialogDescription-gth4c2kx.stx";var $t="./DialogPanel-44d8jeqy.stx";var St="./DialogTitle-x0r6k8x9.stx";var Nt="./Drawer-jgepqr9j.stx";var At="./Dropdown-vvhemtc0.stx";var Lt="./DropdownButton-wcz67dxy.stx";var Pt="./DropdownItem-d8ht2bp5.stx";var Ot="./DropdownItems-1sxnd5qn.stx";var Rt="./Form-vbag14t1.stx";var qt={action:l.string,method:l.oneOf(["GET","POST","PUT","DELETE","PATCH"]),validationSchema:l.object,initialValues:l.object,validateOnChange:l.boolean,validateOnBlur:l.boolean,onSubmit:l.func,onError:l.func,className:l.string},hn=D("Form",qt);var jt="./Image-yhxcvgzs.stx";var Vt="./EmailInput-vak3kkmk.stx";var _t="./NumberInput-j9p5bm5y.stx";var Kt="./PasswordInput-4qykq1dz.stx";var Ut="./SearchInput-pdx7agn0.stx";var Jt="./TextInput-cefyyprt.stx";var Xt={value:l.string,onChange:l.func,placeholder:l.string,disabled:l.boolean,readonly:l.boolean,size:l.oneOf(["sm","md","lg"]),error:l.boolean,label:l.string,helperText:l.string,required:l.boolean,className:l.string,inputClassName:l.string},Zt={value:l.string,onChange:l.func,placeholder:l.string,disabled:l.boolean,readonly:l.boolean,size:l.oneOf(["sm","md","lg"]),error:l.boolean,label:l.string,helperText:l.string,required:l.boolean,className:l.string,inputClassName:l.string,leftIcon:l.string,rightIcon:l.string,clearable:l.boolean,maxLength:l.number,showCount:l.boolean},Qt={value:l.string,onChange:l.func,placeholder:l.string,disabled:l.boolean,readonly:l.boolean,size:l.oneOf(["sm","md","lg"]),error:l.boolean,label:l.string,helperText:l.string,required:l.boolean,className:l.string,inputClassName:l.string,min:l.number,max:l.number,step:l.number,showControls:l.boolean},es={value:l.string,onChange:l.func,placeholder:l.string,disabled:l.boolean,readonly:l.boolean,size:l.oneOf(["sm","md","lg"]),error:l.boolean,label:l.string,helperText:l.string,required:l.boolean,className:l.string,inputClassName:l.string,showStrength:l.boolean},ts={value:l.string,onChange:l.func,placeholder:l.string,disabled:l.boolean,readonly:l.boolean,size:l.oneOf(["sm","md","lg"]),error:l.boolean,label:l.string,helperText:l.string,required:l.boolean,className:l.string,inputClassName:l.string,onSearch:l.func,loading:l.boolean},In=D("TextInput",Zt),Nn=D("EmailInput",Xt),Tn=D("PasswordInput",es),An=D("NumberInput",Qt),Dn=D("SearchInput",ts);var os="./Listbox-q49tnr90.stx";var is="./ListboxButton-keb8gm0q.stx";var ns="./ListboxLabel-7mymt1b8.stx";var cs="./ListboxOption-4j070101.stx";var ps="./ListboxOptions-ejkatcfg.stx";var fs="./Navigator-smpa7my4.stx";var bs="./Notification-03vfh3k6.stx";var xs="./Pagination-jbcjrfcs.stx";var vs="./Checkout-22wh3s22.stx";var ys="./DefaultPaymentMethod-6qrem3sg.stx";var $s="./PaymentMethods-2xy66bwk.stx";var Ss="./SubscriptionCheckout-7fdkwf04.stx";var Ns="./Popover-et2q44m7.stx";var As="./PopoverButton-mffzc9pr.stx";var Ls="./PopoverPanel-054yh38h.stx";var Ps="./Portal-1vf14s4x.stx";var Os="./Progress-4h7dytq5.stx";var Rs="./Radio-ccm07b2m.stx";var Bs="./RadioGroup-eerw9gq7.stx";var Hs="./RadioGroupDescription-z34r9avr.stx";var Ws="./RadioGroupLabel-7mymt1b8.stx";var Fs="./RadioGroupOption-7pq7rw84.stx";var Gs="./Select-zt72gg1e.stx";var Ys="./Sidebar-ncrv4214.stx";var Xs="./SidebarFooter-s7skj92y.stx";var Qs="./SidebarHeader-vvxsehyn.stx";var to="./SidebarItem-5v8atp7p.stx";var oo="./SidebarPinned-rq05nrtd.stx";var io="./SidebarSection-zd9z35ch.stx";var no="./SidebarSpace-nmbvgrky.stx";var co="./SidebarSpaces-e1m8epd7.stx";var uo="./SidebarSpaceSwitcher-az9wqm87.stx";var F={blue:"#0088ff",red:"#ff383c",pink:"#ff2d55",orange:"#ff8d28",yellow:"#ffcc00",green:"#34c759",teal:"#00c3d0",cyan:"#00c0e8",indigo:"#6155f5",purple:"#cb30e0",brown:"#ac7f5e",gray:"#8e8e93"},O={pane:["bg-[#f2f2f4]/90 dark:bg-[#1c1c1e]/88","backdrop-blur-[50px] backdrop-saturate-[180%]","text-black dark:text-white","select-none"].join(" "),selection:"accent",layers:{shimmerRim:!0},scrollArea:"flex-1 overflow-y-auto overflow-x-hidden px-[10px] pb-[10px]",sectionHeader:["group/section flex w-full items-center","pl-[8px] pr-[6px] pt-[16px] pb-[5px]","text-[11px] font-semibold leading-[13px]","text-[#3c3c43]/60 dark:text-[#ebebf5]/60"].join(" "),sectionChevron:["i-f7-chevron-down h-[11px] w-[11px] ml-auto","text-[#3c3c43]/45 dark:text-[#ebebf5]/45","opacity-0 group-hover/section:opacity-100 transition-opacity duration-150","transition-transform duration-200"].join(" "),sectionGroup:"flex flex-col",item:{base:["flex w-full items-center","h-[32px] rounded-[8px] pl-[4px] pr-[8px]","text-[13px] leading-[16px] font-normal","text-black dark:text-white","transition-colors duration-150 ease-out","cursor-default"].join(" "),hover:"hover:bg-black/4 dark:hover:bg-white/6",active:"",pressed:"active:bg-black/10 dark:active:bg-white/18",disabled:"opacity-40 pointer-events-none",disclosure:"flex h-[16px] w-[18px] shrink-0 items-center justify-center",chevron:["i-f7-chevron-right h-[11px] w-[11px]","text-[#3c3c43]/55 dark:text-[#ebebf5]/55","transition-transform duration-200 ease-out"].join(" "),iconSlot:"flex h-[20px] w-[22px] shrink-0 items-center justify-center mr-[7px]",icon:"h-[17px] w-[17px]",image:"h-[20px] w-[20px] rounded-[4px] object-cover shadow-sm",label:"flex-1 truncate text-left",count:["ml-[8px] shrink-0 tabular-nums","text-[13px] leading-[16px]","text-[#3c3c43]/60 dark:text-[#ebebf5]/60"].join(" "),indentPerLevel:16}},fo={selection:"classes",pane:"bg-[#f4f4f3] dark:bg-neutral-950 text-zinc-950 dark:text-white select-none",layers:{},scrollArea:"flex-1 overflow-y-auto overflow-x-hidden px-5 py-5",sectionHeader:"group/section flex w-full items-center gap-2.5 px-4 pb-2 pt-5 text-[13px] font-semibold uppercase tracking-[0.12em] text-zinc-400 dark:text-zinc-500",sectionChevron:"i-f7-chevron-down h-3 w-3 ml-auto opacity-0 group-hover/section:opacity-100 transition-opacity duration-150 transition-transform duration-200",sectionGroup:"flex flex-col space-y-1",item:{base:"flex w-full items-center gap-3 rounded-[16px] px-3.5 py-2 text-[14px] leading-tight transition-colors duration-150",hover:"hover:bg-[#ececea] hover:text-zinc-950 dark:hover:bg-white/10",active:"bg-[#e7e7e5] text-zinc-950 dark:bg-white/12 dark:text-white",pressed:"active:bg-[#e2e2e0] dark:active:bg-white/15",disabled:"opacity-50 pointer-events-none",disclosure:"flex h-4 w-4 shrink-0 items-center justify-center",chevron:"i-f7-chevron-right h-3 w-3 opacity-50 transition-transform duration-200",iconSlot:"flex h-5 w-5 shrink-0 items-center justify-center",icon:"h-[18px] w-[18px] text-zinc-500 dark:text-zinc-500",image:"h-5 w-5 rounded object-cover",label:"flex-1 truncate text-left text-zinc-700 dark:text-zinc-300",count:"ml-auto grid h-5 min-w-5 place-items-center rounded-full bg-white/70 px-1.5 text-[11px] font-medium text-zinc-500 shadow-sm dark:bg-white/10 dark:text-zinc-400",indentPerLevel:12}},ho={selection:"classes",pane:"bg-[#f3f3f1]/48 dark:bg-neutral-950/32 backdrop-blur-3xl backdrop-saturate-150 text-zinc-950 dark:text-white select-none",layers:{tint:"bg-[linear-gradient(112deg,rgba(255,255,255,0.20)_0%,rgba(255,255,255,0.04)_45%,rgba(226,226,222,0.16)_100%)] dark:bg-[linear-gradient(112deg,rgba(255,255,255,0.08)_0%,rgba(255,255,255,0.02)_46%,rgba(255,255,255,0.06)_100%)]"},scrollArea:"flex-1 overflow-y-auto overflow-x-hidden px-5 py-2",sectionHeader:"group/section flex w-full items-center gap-2.5 px-3 pb-1.5 pt-3 rounded-[14px] text-[12px] font-semibold uppercase tracking-[0.10em] text-zinc-500/80 dark:text-zinc-400/80",sectionChevron:"i-f7-chevron-down h-3 w-3 ml-auto opacity-0 group-hover/section:opacity-100 transition-opacity duration-150 transition-transform duration-200",sectionGroup:"flex flex-col space-y-1",item:{base:"flex w-full items-center gap-3 rounded-[14px] px-3 py-1.5 text-[13.5px] leading-tight transition-colors duration-150",hover:"hover:bg-white/38 hover:text-zinc-950 dark:hover:bg-white/10",active:"bg-[#e8e8e6]/90 text-zinc-950 dark:bg-white/12 dark:text-white",pressed:"active:bg-white/50 dark:active:bg-white/15",disabled:"opacity-50 pointer-events-none",disclosure:"flex h-4 w-4 shrink-0 items-center justify-center",chevron:"i-f7-chevron-right h-3 w-3 opacity-50 transition-transform duration-200",iconSlot:"flex h-5 w-5 shrink-0 items-center justify-center",icon:"h-[18px] w-[18px] text-zinc-600 dark:text-zinc-400",image:"h-5 w-5 rounded object-cover",label:"flex-1 truncate text-left text-zinc-700 dark:text-zinc-300",count:"ml-auto grid h-5 min-w-5 place-items-center rounded-full bg-white/72 px-1.5 text-[11px] font-medium text-zinc-500 shadow-sm dark:bg-white/10 dark:text-zinc-400",indentPerLevel:12}},bo={selection:"classes",pane:["bg-[#f7f5f1]/92 dark:bg-[#1a1a1c]/92","backdrop-blur-[40px] backdrop-saturate-[160%]","text-[#2c2a28] dark:text-[#ededf0]","select-none"].join(" "),layers:{tint:["bg-[linear-gradient(180deg,var(--stx-sidebar-tint,rgba(255,251,242,0.55))_0%,rgba(255,255,255,0)_38%)]","dark:bg-[linear-gradient(180deg,var(--stx-sidebar-tint,rgba(255,255,255,0.05))_0%,rgba(255,255,255,0)_42%)]"].join(" ")},scrollArea:"flex-1 overflow-y-auto overflow-x-hidden px-[8px] pb-[8px]",sectionHeader:["group/section flex w-full items-center","px-[8px] pt-[14px] pb-[4px]","text-[11px] font-medium leading-[13px]","opacity-55"].join(" "),sectionChevron:["i-f7-chevron-down h-[10px] w-[10px] ml-auto","opacity-0 group-hover/section:opacity-100 transition-opacity duration-150","transition-transform duration-200"].join(" "),sectionGroup:"flex flex-col space-y-[2px]",item:{base:["flex w-full items-center","h-[30px] rounded-[8px] pl-[6px] pr-[8px]","text-[13px] leading-[16px] font-normal","text-current","transition-[background-color,box-shadow,color] duration-150 ease-out","cursor-default"].join(" "),hover:"hover:bg-white/55 dark:hover:bg-white/8",active:["bg-white dark:bg-white/14","font-medium","shadow-[0_1px_2px_rgba(0,0,0,0.08)] dark:shadow-[0_1px_2px_rgba(0,0,0,0.35)]","ring-1 ring-black/5 dark:ring-white/8"].join(" "),pressed:"active:bg-white/80 dark:active:bg-white/18",disabled:"opacity-40 pointer-events-none",disclosure:"flex h-[16px] w-[16px] shrink-0 items-center justify-center",chevron:["i-f7-chevron-right h-[10px] w-[10px] opacity-45","transition-transform duration-200 ease-out"].join(" "),iconSlot:"flex h-[18px] w-[18px] shrink-0 items-center justify-center mr-[8px]",icon:"h-[16px] w-[16px]",image:"h-[18px] w-[18px] rounded-[5px] object-cover shadow-sm",label:"flex-1 truncate text-left",count:["ml-[8px] shrink-0 tabular-nums","text-[12px] leading-[16px] opacity-45"].join(" "),indentPerLevel:14}},go={...O,pane:"bg-stone-100 dark:bg-neutral-900 text-black dark:text-white select-none",layers:{}},xo={...O,pane:"bg-transparent text-black dark:text-white select-none",layers:{}},mo={...O,pane:"bg-white/50 dark:bg-black/40 backdrop-blur-3xl backdrop-saturate-200 text-black dark:text-white select-none",layers:{}},le={macos:O,tahoe:O,"macos-tahoe":O,"macos-latest":O,arc:bo,workspace:fo,desktop:ho,solid:go,transparent:xo,vibrancy:mo};function Yl(e){return le[e||"macos"]||le.macos}function Jl(e){if(!e)return;return F[e]||e}var vo=F.gray;function P(e,t,s){return`color-mix(in oklab, ${e} ${t}%, ${s})`}function ce(e){return{light:{from:P(e,44,"#ffffff"),to:P(e,15,"#ffffff"),ink:P(e,22,"#17171b"),accent:P(e,88,"#2a2a30")},dark:{from:P(e,34,"#101014"),to:P(e,12,"#08080b"),ink:P(e,12,"#f4f4f7"),accent:P(e,74,"#ffffff")}}}var de={hint:35,end:85};function Ql(e,t){return`linear-gradient(180deg, ${e} 0%, ${de.hint}%, ${t} ${de.end}%)`}function wo(e){if(!e)return ce(vo);if(typeof e!=="string")return e;return ce(F[e]||e)}function yo(e){return[`--stx-space-light-from: ${e.light.from}`,`--stx-space-light-to: ${e.light.to}`,`--stx-space-light-ink: ${e.light.ink}`,`--stx-space-light-accent: ${e.light.accent}`,`--stx-space-dark-from: ${e.dark.from}`,`--stx-space-dark-to: ${e.dark.to}`,`--stx-space-dark-ink: ${e.dark.ink}`,`--stx-space-dark-accent: ${e.dark.accent}`].join("; ")}function pe(e,t,s,o){if(!e||!e.label)return null;return{id:e.id||`${t}-${s}`,label:e.label,icon:e.icon||o}}function Co(e){let t=wo(e.tint);return{id:e.id,label:e.label||"",icon:e.icon||"",pinned:e.pinned||[],sections:e.sections||[],action:pe(e.action,e.id,"action","i-f7-plus"),clear:pe(e.clear,e.id,"clear","i-f7-arrow-down"),tint:t,style:yo(t),deferred:e.deferred===!0,showTitle:e.showTitle??!0}}function ec(e){return(e||[]).map(Co)}function tc(e,t){if(!t)return 0;let s=e.findIndex((o)=>o.id===t);return s===-1?0:s}function sc(e){return e.map((t)=>t.tint)}var ko="./Skeleton-wtwb97xd.stx";var Io="./Spinner-ypya5tt2.stx";var To="./Stepper-rgbk76hd.stx";var Do="./StepperStep-3ahq4d9m.stx";class K{storage;namespace;watchers=new Map;encryptionKey="stx-storage-key";constructor(e="local",t=""){if(this.storage=e==="local"?globalThis.localStorage:globalThis.sessionStorage,this.namespace=t,typeof window<"u")window.addEventListener("storage",this.handleStorageEvent.bind(this))}handleStorageEvent(e){if(!e.key)return;let t=this.namespace&&e.key.startsWith(`${this.namespace}:`)?e.key.slice(this.namespace.length+1):e.key,s=this.watchers.get(t);if(s){let o=e.oldValue?JSON.parse(e.oldValue).value:null,a=e.newValue?JSON.parse(e.newValue).value:null;s.forEach((i)=>i(a,o,t))}}encrypt(e){let t="";for(let s=0;s<e.length;s++)t+=String.fromCharCode(e.charCodeAt(s)^this.encryptionKey.charCodeAt(s%this.encryptionKey.length));return btoa(t)}decrypt(e){try{let t=atob(e),s="";for(let o=0;o<t.length;o++)s+=String.fromCharCode(t.charCodeAt(o)^this.encryptionKey.charCodeAt(o%this.encryptionKey.length));return s}catch{return e}}compress(e){if(e.length<100)return e;let t={},s=256,o=[],a="";for(let i=0;i<e.length;i++){let r=e.charAt(i),n=a+r;if(t[n]!==void 0)a=n;else o.push(a.length>1?t[a]:a.charCodeAt(0)),t[n]=s++,a=r}if(a!=="")o.push(a.length>1?t[a]:a.charCodeAt(0));return JSON.stringify(o)}decompress(e){try{let t=JSON.parse(e);if(!Array.isArray(t))return e;let s={},o=256,a=String.fromCharCode(t[0]),i=a;for(let r=1;r<t.length;r++){let n=t[r],c;if(s[n]!==void 0)c=s[n];else if(n===o)c=a+a.charAt(0);else return e;i+=c,s[o++]=a+c.charAt(0),a=c}return i}catch{return e}}getKey(e){return this.namespace?`${this.namespace}:${e}`:e}set(e,t,s){let o=this.getKey(e),a=this.get(e),i={value:t,timestamp:Date.now(),expire:s?.expire,encrypted:s?.encrypt||!1,compressed:s?.compress||!1};try{let r=JSON.stringify(i);if(s?.compress)r=this.compress(r);if(s?.encrypt)r=this.encrypt(r);this.storage.setItem(o,r),this.notifyWatchers(e,t,a)}catch(r){console.error("Storage set error:",r)}}get(e){let t=this.getKey(e);try{let s=this.storage.getItem(t);if(!s)return null;if(s.match(/^[A-Z0-9+/]+=*$/i))try{s=this.decrypt(s)}catch{}if(s.startsWith("["))try{s=this.decompress(s)}catch{}let o=JSON.parse(s);if(o.expire&&Date.now()-o.timestamp>o.expire)return this.remove(e),null;return o.value}catch(s){return console.error("Storage get error:",s),null}}watch(e,t){if(!this.watchers.has(e))this.watchers.set(e,new Set);return this.watchers.get(e).add(t),()=>{let s=this.watchers.get(e);if(s){if(s.delete(t),s.size===0)this.watchers.delete(e)}}}notifyWatchers(e,t,s){let o=this.watchers.get(e);if(o)o.forEach((a)=>a(t,s,e))}remove(e){let t=this.getKey(e),s=this.get(e);this.storage.removeItem(t),this.notifyWatchers(e,null,s)}clear(){if(this.namespace)this.keys().forEach((t)=>this.remove(t));else this.storage.clear()}has(e){return this.get(e)!==null}keys(){let e=Object.keys(this.storage);if(this.namespace){let t=`${this.namespace}:`;return e.filter((s)=>s.startsWith(t)).map((s)=>s.slice(t.length))}return e}size(){return this.keys().length}getQuota(){if("storage"in navigator&&"estimate"in navigator.storage)return null;try{let e=0;for(let s=0;s<this.storage.length;s++){let o=this.storage.key(s);if(o){let a=this.storage.getItem(o)||"";e+=o.length+a.length}}let t=5242880;return{usage:e*2,quota:t,percentage:e*2/t*100}}catch{return null}}setMany(e,t){Object.entries(e).forEach(([s,o])=>{this.set(s,o,t)})}getMany(e){let t={};return e.forEach((s)=>{t[s]=this.get(s)}),t}removeMany(e){e.forEach((t)=>this.remove(t))}}var Tc={local:new K("local"),session:new K("session")};function Ac(e="local",t){return new K(e,t)}var zo="./Switch-hdta55a8.stx";var Eo="./Table-0mc3fdek.stx";var Mo="./TableBody-drxyz5jh.stx";var qo="./TableCell-8swtcq8s.stx";var jo="./TableHead-e9xvjx2j.stx";var Vo="./TableHeader-sxc77b4d.stx";var _o="./TableRow-xd542nvb.stx";var Ko="./TabPanel-5htevsq6.stx";var Uo="./Tabs-b4xsba1w.stx";var Jo="./Teleport-tsx4bt4n.stx";var Zo="./Textarea-xcdym703.stx";var ea="./Tooltip-y61h04gp.stx";var sa="./Transition-7smenaz8.stx";var aa="./Video-a0aeyexv.stx";var ra="./VirtualList-fa7v5a3h.stx";var la="./VirtualTable-jvm1784g.stx";var ca=0;function ue(e="a11y"){return`${e}-${++ca}-${Date.now()}`}function vd(e,t,s={}){let{visible:o=!1,id:a=ue("label")}=s,i=document.createElement(o?"label":"span");if(i.id=a,i.textContent=e,!o)Object.assign(i.style,{position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",border:"0"});if(t)if(t.setAttribute("aria-labelledby",a),t.parentElement)t.parentElement.insertBefore(i,t);else document.body.appendChild(i);return a}function wd(e,t){let s=ue("desc"),o=document.createElement("span");if(o.id=s,o.textContent=e,Object.assign(o.style,{position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",border:"0"}),t)if(t.setAttribute("aria-describedby",s),t.parentElement)t.parentElement.insertBefore(o,t);else document.body.appendChild(o);return s}function yd(e,t="polite"){let s=document.createElement("div");s.setAttribute("role","status"),s.setAttribute("aria-live",t),s.setAttribute("aria-atomic","true"),Object.assign(s.style,{position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",border:"0"}),document.body.appendChild(s),setTimeout(()=>{s.textContent=e},100),setTimeout(()=>{s.parentNode?.removeChild(s)},1000)}function ee(e){let t=["a[href]","area[href]",'input:not([disabled]):not([type="hidden"])',"select:not([disabled])","textarea:not([disabled])","button:not([disabled])","iframe","object","embed","[contenteditable]",'[tabindex]:not([tabindex="-1"])'].join(",");return Array.from(e.querySelectorAll(t)).filter((s)=>s.offsetParent!==null)}function Cd(e,t={}){let{initialFocus:s,returnFocus:o,escapeDeactivates:a=!0,clickOutsideDeactivates:i=!0,allowOutsideClick:r=!1,onActivate:n,onDeactivate:c}=t,d=!1,f=!1,p=null,g=(m)=>{if(f)return;if(a&&m.key==="Escape"){m.preventDefault(),v();return}if(m.key==="Tab"){let C=ee(e);if(C.length===0){m.preventDefault();return}let T=C[0],z=C[C.length-1];if(m.shiftKey){if(document.activeElement===T)m.preventDefault(),z.focus()}else if(document.activeElement===z)m.preventDefault(),T.focus()}},h=(m)=>{if(f)return;if(!e.contains(m.target)){if(typeof r==="function"){if(!r(m)&&i)v()}else if(!r&&i)v()}};function w(){if(d)return;d=!0,p=document.activeElement;let m=s||ee(e)[0];if(m&&typeof m.focus==="function")m.focus();document.addEventListener("keydown",g),document.addEventListener("click",h),n?.()}function v(){if(!d)return;d=!1;let m=o||p;if(m&&typeof m.focus==="function")m.focus();document.removeEventListener("keydown",g),document.removeEventListener("click",h),c?.()}function k(){f=!0}function x(){f=!1}return{activate:w,deactivate:v,pause:k,unpause:x}}function $d(e,t={}){let{selector:s='[role="option"], [role="menuitem"], [role="tab"], button',initialIndex:o=0,orientation:a="both",loop:i=!0,onFocusChange:r}=t,n=o,c=()=>{return Array.from(e.querySelectorAll(s))},d=(p)=>{let g=c();if(p<0||p>=g.length)return;g.forEach((h,w)=>{if(w===p){if(h.setAttribute("tabindex","0"),typeof h.focus==="function")h.focus()}else h.setAttribute("tabindex","-1")}),n=p,r?.(p,g[p])},f=(p)=>{let h=c().length-1,w=!1,v=n;switch(p.key){case"ArrowRight":if(a==="horizontal"||a==="both"){if(v=n+1,v>h)v=i?0:h;w=!0}break;case"ArrowLeft":if(a==="horizontal"||a==="both"){if(v=n-1,v<0)v=i?h:0;w=!0}break;case"ArrowDown":if(a==="vertical"||a==="both"){if(v=n+1,v>h)v=i?0:h;w=!0}break;case"ArrowUp":if(a==="vertical"||a==="both"){if(v=n-1,v<0)v=i?h:0;w=!0}break;case"Home":v=0,w=!0;break;case"End":v=h,w=!0;break}if(w)p.preventDefault(),d(v)};return d(o),e.addEventListener("keydown",f),()=>{e.removeEventListener("keydown",f)}}var kd={Enter:"Enter",Space:" ",Escape:"Escape",ArrowUp:"ArrowUp",ArrowDown:"ArrowDown",ArrowLeft:"ArrowLeft",ArrowRight:"ArrowRight",Tab:"Tab",Home:"Home",End:"End",PageUp:"PageUp",PageDown:"PageDown"};function Sd(e){return document.activeElement===e}function Id(e,t){let s=t||document.activeElement,o=ee(document.body),a=o.indexOf(s);if(a===-1)return;let i=e==="next"?a+1:a-1,r=o[i];if(r)r.focus()}function Nd(e){if(e.getAttribute("aria-hidden")==="true")return!1;let t=window.getComputedStyle(e);if(t.display==="none"||t.visibility==="hidden")return!1;return!0}var Td={setExpanded(e,t){e.setAttribute("aria-expanded",String(t))},setSelected(e,t){e.setAttribute("aria-selected",String(t))},setChecked(e,t){e.setAttribute("aria-checked",String(t))},setDisabled(e,t){if(e.setAttribute("aria-disabled",String(t)),t)e.setAttribute("tabindex","-1");else e.removeAttribute("tabindex")},setHidden(e,t){if(t)e.setAttribute("aria-hidden","true");else e.removeAttribute("aria-hidden")},setPressed(e,t){e.setAttribute("aria-pressed",String(t))},setInvalid(e,t){e.setAttribute("aria-invalid",String(t))},setRequired(e,t){e.setAttribute("aria-required",String(t))},setLive(e,t){e.setAttribute("aria-live",t)},setBusy(e,t){e.setAttribute("aria-busy",String(t))}};function Ad(e){let t=document.createElement("span");return t.textContent=e,t.className="sr-only",Object.assign(t.style,{position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",border:"0"}),t}function Dd(){if(typeof window.matchMedia==="function")return window.matchMedia("(prefers-reduced-motion: reduce)").matches;return!1}function Ld(){if(typeof window.matchMedia==="function")return window.matchMedia("(prefers-contrast: high)").matches;return!1}function zd(){if(typeof window.matchMedia==="function"){if(window.matchMedia("(prefers-color-scheme: dark)").matches)return"dark";if(window.matchMedia("(prefers-color-scheme: light)").matches)return"light"}return null}function Pd(e,t="Skip to main content"){let s=document.createElement("a");return s.href=`#${e}`,s.textContent=t,s.className="skip-link",Object.assign(s.style,{position:"absolute",top:"-40px",left:"0",background:"#000",color:"#fff",padding:"8px",textDecoration:"none",zIndex:"100"}),s.addEventListener("focus",()=>{s.style.top="0"}),s.addEventListener("blur",()=>{s.style.top="-40px"}),s}function Ed(e){let t=[],s=(o)=>{let a=e.getAttribute(o);if(a){let i=a.split(" ");for(let r of i)if(!document.getElementById(r))t.push(`${o} references non-existent ID: ${r}`)}};return s("aria-labelledby"),s("aria-describedby"),s("aria-controls"),s("aria-owns"),s("aria-activedescendant"),t}var da=(e,t,s,o)=>{return s*e/o+t},pa=(e,t,s,o)=>{return e/=o,s*e*e+t},ua=(e,t,s,o)=>{return e/=o,-s*e*(e-2)+t},fa=(e,t,s,o)=>{if(e/=o/2,e<1)return s/2*e*e+t;return e--,-s/2*(e*(e-2)-1)+t},ha=(e,t,s,o)=>{return e/=o,s*e*e*e+t},ba=(e,t,s,o)=>{return e/=o,e--,s*(e*e*e+1)+t},ga=(e,t,s,o)=>{if(e/=o/2,e<1)return s/2*e*e*e+t;return e-=2,s/2*(e*e*e+2)+t},xa=(e,t,s,o)=>{return e/=o,s*e*e*e*e+t},ma=(e,t,s,o)=>{return e/=o,e--,-s*(e*e*e*e-1)+t},va=(e,t,s,o)=>{if(e/=o/2,e<1)return s/2*e*e*e*e+t;return e-=2,-s/2*(e*e*e*e-2)+t},wa=(e,t,s,o)=>{return e/=o,s*e*e*e*e*e+t},ya=(e,t,s,o)=>{return e/=o,e--,s*(e*e*e*e*e+1)+t},Ca=(e,t,s,o)=>{if(e/=o/2,e<1)return s/2*e*e*e*e*e+t;return e-=2,s/2*(e*e*e*e*e+2)+t},$a=(e,t,s,o)=>{return-s*Math.cos(e/o*(Math.PI/2))+s+t},ka=(e,t,s,o)=>{return s*Math.sin(e/o*(Math.PI/2))+t},Sa=(e,t,s,o)=>{return-s/2*(Math.cos(Math.PI*e/o)-1)+t},Ia=(e,t,s,o)=>{return e===0?t:s*2**(10*(e/o-1))+t},Na=(e,t,s,o)=>{return e===o?t+s:s*(-(2**(-10*e/o))+1)+t},Ta=(e,t,s,o)=>{if(e===0)return t;if(e===o)return t+s;if(e/=o/2,e<1)return s/2*2**(10*(e-1))+t;return e--,s/2*(-(2**(-10*e))+2)+t},Aa=(e,t,s,o)=>{return e/=o,-s*(Math.sqrt(1-e*e)-1)+t},Da=(e,t,s,o)=>{return e/=o,e--,s*Math.sqrt(1-e*e)+t},La=(e,t,s,o)=>{if(e/=o/2,e<1)return-s/2*(Math.sqrt(1-e*e)-1)+t;return e-=2,s/2*(Math.sqrt(1-e*e)+1)+t},za=(e,t,s,o)=>{let a=1.70158,i=0,r=s;if(e===0)return t;if(e/=o,e===1)return t+s;if(!i)i=o*0.3;if(r<Math.abs(s))r=s,a=i/4;else a=i/(2*Math.PI)*Math.asin(s/r);return e-=1,-(r*2**(10*e)*Math.sin((e*o-a)*(2*Math.PI)/i))+t},Pa=(e,t,s,o)=>{let a=1.70158,i=0,r=s;if(e===0)return t;if(e/=o,e===1)return t+s;if(!i)i=o*0.3;if(r<Math.abs(s))r=s,a=i/4;else a=i/(2*Math.PI)*Math.asin(s/r);return r*2**(-10*e)*Math.sin((e*o-a)*(2*Math.PI)/i)+s+t},Ea=(e,t,s,o)=>{let a=1.70158,i=0,r=s;if(e===0)return t;if(e/=o/2,e===2)return t+s;if(!i)i=o*0.44999999999999996;if(r<Math.abs(s))r=s,a=i/4;else a=i/(2*Math.PI)*Math.asin(s/r);if(e<1)return e-=1,-0.5*(r*2**(10*e)*Math.sin((e*o-a)*(2*Math.PI)/i))+t;return e-=1,r*2**(-10*e)*Math.sin((e*o-a)*(2*Math.PI)/i)*0.5+s+t},Oa=(e,t,s,o)=>{return e/=o,s*e*e*(2.70158*e-1.70158)+t},Ma=(e,t,s,o)=>{return e/=o,e--,s*(e*e*(2.70158*e+1.70158)+1)+t},Ra=(e,t,s,o)=>{let a=1.70158;if(e/=o/2,e<1)return a*=1.525,s/2*(e*e*((a+1)*e-a))+t;return e-=2,a*=1.525,s/2*(e*e*((a+1)*e+a)+2)+t},te=(e,t,s,o)=>{if(e/=o,e<0.36363636363636365)return s*(7.5625*e*e)+t;else if(e<0.7272727272727273)return e-=0.5454545454545454,s*(7.5625*e*e+0.75)+t;else if(e<0.9090909090909091)return e-=0.8181818181818182,s*(7.5625*e*e+0.9375)+t;else return e-=0.9545454545454546,s*(7.5625*e*e+0.984375)+t},fe=(e,t,s,o)=>{return s-te(o-e,0,s,o)+t},qa=(e,t,s,o)=>{if(e<o/2)return fe(e*2,0,s,o)*0.5+t;return te(e*2-o,0,s,o)*0.5+s*0.5+t},Md={linear:da,easeInQuad:pa,easeOutQuad:ua,easeInOutQuad:fa,easeInCubic:ha,easeOutCubic:ba,easeInOutCubic:ga,easeInQuart:xa,easeOutQuart:ma,easeInOutQuart:va,easeInQuint:wa,easeOutQuint:ya,easeInOutQuint:Ca,easeInSine:$a,easeOutSine:ka,easeInOutSine:Sa,easeInExpo:Ia,easeOutExpo:Na,easeInOutExpo:Ta,easeInCirc:Aa,easeOutCirc:Da,easeInOutCirc:La,easeInElastic:za,easeOutElastic:Pa,easeInOutElastic:Ea,easeInBack:Oa,easeOutBack:Ma,easeInOutBack:Ra,easeInBounce:fe,easeOutBounce:te,easeInOutBounce:qa};function Ba(e,t={}){let{duration:s="1s",timing:o="ease",delay:a="0s",iteration:i="1",direction:r="normal",fill:n="both",playState:c="running"}=t;return`${e} ${s} ${o} ${a} ${i} ${r} ${n} ${c}`}function he(e,t,s={}){e.style.animation=Ba(t,s)}function qd(e){e.style.animation=""}function ja(e){return new Promise((t)=>{let s=()=>{e.removeEventListener("animationend",s),t()};e.addEventListener("animationend",s)})}function Bd(e,t,s={}){let{stagger:o=100,...a}=s;e.forEach((i,r)=>{let n=`${r*o}ms`;he(i,t,{...a,delay:n})})}async function jd(e,t){for(let s of t)he(e,s.name,s.options),await ja(e)}var Hd={fadeIn:"animate-fade-in",fadeOut:"animate-fade-out",slideInUp:"animate-slide-in-up",slideInDown:"animate-slide-in-down",slideInLeft:"animate-slide-in-left",slideInRight:"animate-slide-in-right",zoomIn:"animate-zoom-in",zoomOut:"animate-zoom-out",bounce:"animate-bounce",spin:"animate-spin",ping:"animate-ping",pulse:"animate-pulse"};function Vd(e,t,s=1000){return new Promise((o)=>{e.classList.add(t),setTimeout(()=>{e.classList.remove(t),o()},s)})}function Wd(e,t){let s=`
|
|
12
12
|
@keyframes ${e} {
|
|
13
13
|
${Object.entries(t).map(([a,i])=>{let r=Object.entries(i).map(([n,c])=>`${n}: ${c};`).join(" ");return`${a} { ${r} }`}).join(`
|
|
14
14
|
`)}
|
|
15
15
|
}
|
|
16
|
-
`,o=document.createElement("style");o.textContent=s,document.head.appendChild(o)}function ja(e,t,s={}){if(typeof e.animate!=="function")return console.warn("Web Animations API not supported"),null;let{duration:o=1000,easing:a="ease",delay:i=0,iterations:r=1,direction:n="normal",fill:c="both"}=s;return e.animate([...t],{duration:o,easing:a,delay:i,iterations:r,direction:n,fill:c})}var Ha={fadeIn:[{offset:0,opacity:0},{offset:1,opacity:1}],fadeOut:[{offset:0,opacity:1},{offset:1,opacity:0}],slideInUp:[{offset:0,transform:"translateY(100%)",opacity:0},{offset:1,transform:"translateY(0)",opacity:1}],slideInDown:[{offset:0,transform:"translateY(-100%)",opacity:0},{offset:1,transform:"translateY(0)",opacity:1}],slideInLeft:[{offset:0,transform:"translateX(-100%)",opacity:0},{offset:1,transform:"translateX(0)",opacity:1}],slideInRight:[{offset:0,transform:"translateX(100%)",opacity:0},{offset:1,transform:"translateX(0)",opacity:1}],slideOutUp:[{offset:0,transform:"translateY(0)",opacity:1},{offset:1,transform:"translateY(-100%)",opacity:0}],slideOutDown:[{offset:0,transform:"translateY(0)",opacity:1},{offset:1,transform:"translateY(100%)",opacity:0}],slideOutLeft:[{offset:0,transform:"translateX(0)",opacity:1},{offset:1,transform:"translateX(-100%)",opacity:0}],slideOutRight:[{offset:0,transform:"translateX(0)",opacity:1},{offset:1,transform:"translateX(100%)",opacity:0}],zoomIn:[{offset:0,transform:"scale(0)",opacity:0},{offset:0.5,opacity:1},{offset:1,transform:"scale(1)"}],zoomOut:[{offset:0,transform:"scale(1)",opacity:1},{offset:0.5,opacity:1},{offset:1,transform:"scale(0)",opacity:0}],rotate:[{offset:0,transform:"rotate(0deg)"},{offset:1,transform:"rotate(360deg)"}],bounce:[{offset:0,transform:"translateY(0)"},{offset:0.2,transform:"translateY(0)"},{offset:0.4,transform:"translateY(-30px)"},{offset:0.43,transform:"translateY(-30px)"},{offset:0.53,transform:"translateY(0)"},{offset:0.7,transform:"translateY(-15px)"},{offset:0.8,transform:"translateY(0)"},{offset:0.9,transform:"translateY(-4px)"},{offset:1,transform:"translateY(0)"}],pulse:[{offset:0,transform:"scale(1)"},{offset:0.5,transform:"scale(1.05)"},{offset:1,transform:"scale(1)"}],shake:[{offset:0,transform:"translateX(0)"},{offset:0.1,transform:"translateX(-10px)"},{offset:0.2,transform:"translateX(10px)"},{offset:0.3,transform:"translateX(-10px)"},{offset:0.4,transform:"translateX(10px)"},{offset:0.5,transform:"translateX(-10px)"},{offset:0.6,transform:"translateX(10px)"},{offset:0.7,transform:"translateX(-10px)"},{offset:0.8,transform:"translateX(10px)"},{offset:0.9,transform:"translateX(-10px)"},{offset:1,transform:"translateX(0)"}],swing:[{offset:0,transform:"rotate(0deg)"},{offset:0.2,transform:"rotate(15deg)"},{offset:0.4,transform:"rotate(-10deg)"},{offset:0.6,transform:"rotate(5deg)"},{offset:0.8,transform:"rotate(-5deg)"},{offset:1,transform:"rotate(0deg)"}],flip:[{offset:0,transform:"perspective(400px) rotateY(0)",animationTimingFunction:"ease-out"},{offset:0.4,transform:"perspective(400px) translateZ(150px) rotateY(170deg)",animationTimingFunction:"ease-out"},{offset:0.5,transform:"perspective(400px) translateZ(150px) rotateY(190deg)",animationTimingFunction:"ease-in"},{offset:0.8,transform:"perspective(400px) rotateY(360deg)",animationTimingFunction:"ease-in"},{offset:1,transform:"perspective(400px)",animationTimingFunction:"ease-in"}],rubberBand:[{offset:0,transform:"scale(1)"},{offset:0.3,transform:"scaleX(1.25) scaleY(0.75)"},{offset:0.4,transform:"scaleX(0.75) scaleY(1.25)"},{offset:0.5,transform:"scaleX(1.15) scaleY(0.85)"},{offset:0.65,transform:"scaleX(0.95) scaleY(1.05)"},{offset:0.75,transform:"scaleX(1.05) scaleY(0.95)"},{offset:1,transform:"scale(1)"}],heartbeat:[{offset:0,transform:"scale(1)"},{offset:0.14,transform:"scale(1.3)"},{offset:0.28,transform:"scale(1)"},{offset:0.42,transform:"scale(1.3)"},{offset:0.7,transform:"scale(1)"}]};function Wd(e,t,s={}){return ja(e,Ha[t],s)}import{createHighlighter as Va}from"ts-syntax-highlighter";var se=null;async function Wa(){if(!se)se=await Va({theme:"github-light"});return se}async function Kd(e,t={}){let{theme:s="auto",language:o="typescript",lineNumbers:a=!1,wrapLines:i=!0}=t,r=await Wa(),n=s==="auto"?globalThis.matchMedia?.("(prefers-color-scheme: dark)").matches?"github-dark":"github-light":s==="dark"?"github-dark":"github-light",c=await r.highlight(e,o);return{html:typeof c==="string"?c:String(c),language:o,theme:n}}function Gd(e){if(e.includes("<!DOCTYPE")||e.includes("<html"))return"html";if(e.includes("<?php"))return"php";if(e.includes("import")&&e.includes("from"))return"typescript";if(e.includes("function")||e.includes("const"))return"javascript";if(e.includes("{")&&e.includes("}"))return"json";if(e.includes("$")&&e.includes("|"))return"bash";if(e.includes("#")&&e.includes("##"))return"markdown";return"typescript"}function Ud(e,t){return`<div class="${t?`rounded-md overflow-auto text-sm leading-relaxed font-mono ${t}`:"rounded-md overflow-auto text-sm leading-relaxed font-mono"}">${e}</div>`}var L=null,_a=(e)=>{return e===1?0:1};function G(e,t){return t.split(".").reduce((s,o)=>s?.[o],e)}function oe(e,t={}){return e.replace(/\{(\w+)\}/g,(s,o)=>{return t[o]!==void 0?String(t[o]):s})}function Jd(e){let{locale:t,fallbackLocale:s="en",messages:o,pluralRules:a={},dateTimeFormats:i={},numberFormats:r={},missing:n,warnMissing:c=!0}=e;function d(x,m={}){let C=G(o[t],x);if(C===void 0&&s)C=G(o[s],x);if(C===void 0){if(n){let T=n(t,x);if(T)return oe(T,m)}if(c&&typeof console<"u")console.warn(`[i18n] Missing translation for key "${x}" in locale "${t}"`);return x}if(typeof C==="string")return oe(C,m);return String(C)}function f(x,m,C={}){let T=d(x,{...C,count:m});if(T.includes("|")){let z=T.split("|").map((Z)=>Z.trim()),J=(a[t]||_a)(m,t),X=z[J]||z[z.length-1];return oe(X,{...C,count:m})}return T}function p(x,m="default"){let C=typeof x==="number"?new Date(x):x,T=i[m]||i.default||{};return new Intl.DateTimeFormat(t,T).format(C)}function g(x,m="default"){let C=r[m]||r.default||{};return new Intl.NumberFormat(t,C).format(x)}function h(x){if(G(o[t],x)!==void 0)return!0;if(s)return G(o[s],x)!==void 0;return!1}function w(x){if(!o[x]){console.warn(`[i18n] Locale "${x}" not found. Available locales: ${Object.keys(o).join(", ")}`);return}t=x}function v(x,m){if(!o[x])o[x]={};o[x]={...o[x],...m}}function k(x){delete o[x]}return{get locale(){return t},get availableLocales(){return Object.keys(o)},setLocale:w,t:d,tc:f,d:p,n:g,te:h,addMessages:v,removeLocale:k}}function Xd(e){L=e}function Zd(){return L}function Qd(e,t){if(!L)return console.warn("[i18n] No global i18n instance set. Call setI18n() first."),e;return L.t(e,t)}function ep(e,t,s){if(!L)return console.warn("[i18n] No global i18n instance set. Call setI18n() first."),e;return L.tc(e,t,s)}function tp(e,t){if(!L)return console.warn("[i18n] No global i18n instance set. Call setI18n() first."),String(e);return L.d(e,t)}function sp(e,t){if(!L)return console.warn("[i18n] No global i18n instance set. Call setI18n() first."),String(e);return L.n(e,t)}var op={en:(e)=>e===1?0:1,de:(e)=>e===1?0:1,nl:(e)=>e===1?0:1,sv:(e)=>e===1?0:1,fr:(e)=>e===0||e===1?0:1,pt_BR:(e)=>e===0||e===1?0:1,ru:(e)=>{if(e%10===1&&e%100!==11)return 0;if(e%10>=2&&e%10<=4&&(e%100<10||e%100>=20))return 1;return 2},pl:(e)=>{if(e===1)return 0;if(e%10>=2&&e%10<=4&&(e%100<10||e%100>=20))return 1;return 2},cs:(e)=>{if(e===1)return 0;if(e>=2&&e<=4)return 1;return 2},ar:(e)=>{if(e===0)return 0;if(e===1)return 1;if(e===2)return 2;if(e%100>=3&&e%100<=10)return 3;if(e%100>=11)return 4;return 5},ja:()=>0,ko:()=>0,zh:()=>0,th:()=>0,vi:()=>0},ap={short:{year:"numeric",month:"numeric",day:"numeric"},long:{year:"numeric",month:"long",day:"numeric"},full:{weekday:"long",year:"numeric",month:"long",day:"numeric"},time:{hour:"numeric",minute:"numeric"},datetime:{year:"numeric",month:"numeric",day:"numeric",hour:"numeric",minute:"numeric"}},ip={decimal:{style:"decimal",minimumFractionDigits:2,maximumFractionDigits:2},currency:{style:"currency",currency:"USD"},percent:{style:"percent",minimumFractionDigits:0,maximumFractionDigits:2},compact:{notation:"compact"}};function rp(e){let t=["ar","he","fa","ur","yi"],s=e.split("-")[0].toLowerCase();return t.includes(s)}async function np(e,t){try{return await t()}catch(s){return console.error(`[i18n] Failed to load messages for locale "${e}":`,s),{}}}var lp={en:{common:{loading:"Loading...",error:"Error",retry:"Retry",cancel:"Cancel",confirm:"Confirm",close:"Close",save:"Save",delete:"Delete",edit:"Edit",search:"Search",clear:"Clear",submit:"Submit",reset:"Reset"},form:{required:"This field is required",invalid:"Invalid value",tooShort:"Value is too short (minimum {min} characters)",tooLong:"Value is too long (maximum {max} characters)",invalidEmail:"Invalid email address",invalidUrl:"Invalid URL"},pagination:{previous:"Previous",next:"Next",page:"Page {page}",of:"of {total}"}},es:{common:{loading:"Cargando...",error:"Error",retry:"Reintentar",cancel:"Cancelar",confirm:"Confirmar",close:"Cerrar",save:"Guardar",delete:"Eliminar",edit:"Editar",search:"Buscar",clear:"Limpiar",submit:"Enviar",reset:"Restablecer"},form:{required:"Este campo es obligatorio",invalid:"Valor inv\xE1lido",tooShort:"El valor es demasiado corto (m\xEDnimo {min} caracteres)",tooLong:"El valor es demasiado largo (m\xE1ximo {max} caracteres)",invalidEmail:"Direcci\xF3n de correo electr\xF3nico inv\xE1lida",invalidUrl:"URL inv\xE1lida"},pagination:{previous:"Anterior",next:"Siguiente",page:"P\xE1gina {page}",of:"de {total}"}},fr:{common:{loading:"Chargement...",error:"Erreur",retry:"R\xE9essayer",cancel:"Annuler",confirm:"Confirmer",close:"Fermer",save:"Enregistrer",delete:"Supprimer",edit:"Modifier",search:"Rechercher",clear:"Effacer",submit:"Soumettre",reset:"R\xE9initialiser"},form:{required:"Ce champ est obligatoire",invalid:"Valeur invalide",tooShort:"La valeur est trop courte (minimum {min} caract\xE8res)",tooLong:"La valeur est trop longue (maximum {max} caract\xE8res)",invalidEmail:"Adresse e-mail invalide",invalidUrl:"URL invalide"},pagination:{previous:"Pr\xE9c\xE9dent",next:"Suivant",page:"Page {page}",of:"sur {total}"}}};function dp(e={}){let{max:t=10,ttl:s=0,include:o,exclude:a,hooks:i,debug:r=!1}=e,n=new Map,c=0,d=0;function f(...u){if(r)console.log("[KeepAlive]",...u)}function p(u){if(a){if(a instanceof RegExp&&a.test(u))return!1;if(Array.isArray(a)&&a.includes(u))return!1}if(o){if(o instanceof RegExp&&!o.test(u))return!1;if(Array.isArray(o)&&!o.includes(u))return!1}return!0}function g(u){if(!s||!u.expiresAt)return!1;return Date.now()>u.expiresAt}function h(u){let b=n.get(u);if(b)b.lastAccessedAt=Date.now(),b.accessCount++,b.instance.lastAccessedAt=b.lastAccessedAt,n.delete(u),n.set(u,b),f(`Touched: ${u} (access count: ${b.accessCount})`)}function w(){if(n.size===0)return!1;let u=n.keys().next().value;if(!u)return!1;let b=n.get(u);if(b){f(`Evicting LRU: ${u}`);let y=b.instance.hooks;if(y?.onDeactivate)y.onDeactivate(b.instance);if(i?.onDeactivate)i.onDeactivate(b.instance);return n.delete(u),!0}return!1}function v(u,b,y){if(!p(b.type))return f(`Type not cacheable: ${b.type}`),b;if(n.size>=t)w();let A=Date.now(),H={instance:{...b,hooks:y||b.hooks,createdAt:b.createdAt||A,lastAccessedAt:A},accessCount:0,createdAt:A,lastAccessedAt:A,expiresAt:s?A+s:void 0};if(n.set(u,H),f(`Cached: ${u} (size: ${n.size}/${t})`),y?.onMount)y.onMount(H.instance);if(i?.onMount)i.onMount(H.instance);return H.instance}function k(u){let b=n.get(u);if(!b)return d++,f(`Miss: ${u}`),null;if(g(b))return f(`Expired: ${u}`),n.delete(u),d++,null;return c++,h(u),f(`Hit: ${u}`),b.instance}function x(u){let b=n.get(u);if(!b)return!1;if(g(b))return n.delete(u),!1;return!0}function m(u){let b=n.get(u);if(!b)return!1;f(`Removing: ${u}`);let y=b.instance.hooks;if(y?.onUnmount)y.onUnmount(b.instance);if(i?.onUnmount)i.onUnmount(b.instance);return n.delete(u)}function C(){f("Clearing cache"),n.forEach((u)=>{let b=u.instance.hooks;if(b?.onUnmount)b.onUnmount(u.instance);if(i?.onUnmount)i.onUnmount(u.instance)}),n.clear(),c=0,d=0}function T(){let u=0,b=Date.now();for(let[y,A]of n.entries())if(g(A))f(`Pruning expired: ${y}`),m(y),u++;while(n.size>t)if(w())u++;else break;if(u>0)f(`Pruned ${u} entries`);return u}function z(u){let b=k(u);if(!b)return null;f(`Activating: ${u}`);let y=b.hooks;if(y?.onActivate)y.onActivate(b);if(i?.onActivate)i.onActivate(b);if(b.state&&y?.onRestore)y.onRestore(b,b.state);return b}function ie(u){let b=n.get(u);if(!b)return!1;f(`Deactivating: ${u}`);let y=b.instance,A=y.hooks;if(A?.onSave)y.state=A.onSave(y);if(A?.onDeactivate)A.onDeactivate(y);if(i?.onDeactivate)i.onDeactivate(y);return!0}function J(){let u=c+d;return{hits:c,misses:d,size:n.size,max:t,hitRate:u>0?c/u:0,keys:Array.from(n.keys())}}function X(){return Array.from(n.keys())}function Z(){return n.size}return{cache:v,get:k,has:x,remove:m,clear:C,prune:T,activate:z,deactivate:ie,getStats:J,keys:X,size:Z}}function pp(e){let t=new Map;return{set(s,o){if(t.has(s))t.delete(s);if(t.set(s,o),t.size>e){let a=t.keys().next().value;if(a)t.delete(a)}},get(s){if(!t.has(s))return;let o=t.get(s);return t.delete(s),t.set(s,o),o},has(s){return t.has(s)},delete(s){return t.delete(s)},clear(){t.clear()},get size(){return t.size},keys(){return Array.from(t.keys())},values(){return Array.from(t.values())},forEach(s){t.forEach(s)}}}function up(){let e=new Map;return{save(t,s){e.set(t,JSON.parse(JSON.stringify(s)))},restore(t){let s=e.get(t);return s?JSON.parse(JSON.stringify(s)):null},has(t){return e.has(t)},remove(t){return e.delete(t)},clear(){e.clear()},keys(){return Array.from(e.keys())},get size(){return e.size}}}function fp(e,t={}){let{maxSize:s=100,reset:o}=t,a=[];return{acquire(){if(a.length>0)return a.pop();return e()},release(i){if(a.length<s){if(o)o(i);a.push(i)}},clear(){a.length=0},get size(){return a.length},get maxSize(){return s}}}var E=new Map;async function U(e,t){let s=t||e.toString();if(E.has(s))return E.get(s);let o=e();E.set(s,o);try{return await o}catch(a){throw E.delete(s),a}}function bp(e,t={}){let{retryAttempts:s=3,retryDelay:o=1000,onLoading:a,onLoaded:i,onError:r}=t,n="idle",c,d,f=async(p=0)=>{try{if(n==="loading"||n==="loaded"){if(c)return c}n="loading",a?.();let g=await U(e);return c=g,n="loaded",i?.(g),g}catch(g){let h=g;if(p<s)return await new Promise((w)=>setTimeout(w,o*(p+1))),f(p+1);throw n="error",d=h,r?.(h),h}};return{get state(){return n},get module(){return c},get error(){return d},load:()=>f(),preload:()=>f()}}function Fa(e,t,s={}){if(!e)return console.warn("lazyLoad: element is null"),()=>{};let{root:o=null,rootMargin:a="0px",threshold:i=0.01,placeholder:r,errorContent:n,onLoading:c,onLoaded:d,onError:f}=s,p=!1,g=null;if(r)if(typeof r==="string")e.innerHTML=r;else e.innerHTML="",e.appendChild(r);return g=new IntersectionObserver(async(w)=>{for(let v of w)if(v.isIntersecting&&!p){p=!0,g?.disconnect();try{c?.();let k=await U(t);if(d?.(k),k&&typeof k.default?.render==="function"){let x=await k.default.render();e.innerHTML=x}}catch(k){let x=k;if(f?.(x),n)if(typeof n==="string")e.innerHTML=n;else e.innerHTML="",e.appendChild(n);else e.innerHTML=`<div style="color: red;">Failed to load component: ${x.message}</div>`}}},{root:o,rootMargin:a,threshold:i}),g.observe(e),()=>{g?.disconnect(),g=null}}function gp(e,t,s={}){let o=[],a=Array.from(e);for(let i of a){let r=typeof t==="function"&&t.length>0?()=>t(i):t,n=Fa(i,r,s);o.push(n)}return()=>{o.forEach((i)=>i())}}function Ka(e){return U(e)}function xp(e){return Promise.all(e.map((t)=>Ka(t)))}function mp(e){if(e)E.delete(e);else E.clear()}function vp(){return{size:E.size,keys:Array.from(E.keys())}}function wp(e){return{async load(t){let s=e[t];if(!s)throw Error(`No route found for path: ${t}`);return U(s,`route:${t}`)},async preload(t){return this.load(t)},async preloadRoutes(t){return Promise.all(t.map((s)=>this.preload(s)))}}}function Ga(e,t,s={}){if(!e)return()=>{};let{root:o=null,rootMargin:a="50px",threshold:i=0.01,placeholder:r,onLoading:n,onLoaded:c,onError:d}=s;if(r&&typeof r==="string")e.src=r;let f=!1,p=null;return p=new IntersectionObserver((h)=>{for(let w of h)if(w.isIntersecting&&!f)f=!0,p?.disconnect(),n?.(),e.src=t,e.addEventListener("load",()=>{c?.(e),e.classList.add("loaded")},{once:!0}),e.addEventListener("error",(v)=>{let k=Error(`Failed to load image: ${t}`);d?.(k),e.classList.add("error")},{once:!0})},{root:o,rootMargin:a,threshold:i}),p.observe(e),()=>{p?.disconnect(),p=null}}function yp(e=document,t={}){let s=e.querySelectorAll("img[data-lazy-src]"),o=[];return s.forEach((a)=>{let i=a.getAttribute("data-lazy-src");if(i){let r=Ga(a,i,t);o.push(r)}}),()=>{o.forEach((a)=>a())}}var ae={colors:{primary:"#3b82f6",secondary:"#8b5cf6",success:"#10b981",warning:"#f59e0b",danger:"#ef4444",info:"#06b6d4",gray:"#6b7280",white:"#ffffff",black:"#000000"},typography:{fontFamily:{sans:'system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',serif:'Georgia, Cambria, "Times New Roman", Times, serif',mono:'Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace'},fontSize:{xs:"0.75rem",sm:"0.875rem",base:"1rem",lg:"1.125rem",xl:"1.25rem","2xl":"1.5rem","3xl":"1.875rem","4xl":"2.25rem"},fontWeight:{light:"300",normal:"400",medium:"500",semibold:"600",bold:"700"},lineHeight:{tight:"1.25",normal:"1.5",relaxed:"1.75"}},spacing:{xs:"0.25rem",sm:"0.5rem",md:"1rem",lg:"1.5rem",xl:"2rem","2xl":"3rem","3xl":"4rem","4xl":"6rem"},borderRadius:{none:"0",sm:"0.125rem",md:"0.375rem",lg:"0.5rem",full:"9999px"},shadows:{sm:"0 1px 2px 0 rgba(0, 0, 0, 0.05)",md:"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)",lg:"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)",xl:"0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)","2xl":"0 25px 50px -12px rgba(0, 0, 0, 0.25)",none:"none"},components:{button:{borderRadius:"0.375rem",padding:"0.5rem 1rem",fontSize:"0.875rem",fontWeight:"500"},input:{borderRadius:"0.375rem",padding:"0.5rem 0.75rem",fontSize:"0.875rem",borderWidth:"1px"},card:{borderRadius:"0.5rem",padding:"1.5rem",shadow:"0 1px 3px 0 rgba(0, 0, 0, 0.1)"}}};function he(e,t){let s={...e};for(let o in t)if(t[o]instanceof Object&&o in e)s[o]=he(e[o],t[o]);else s[o]=t[o];return s}function j(e){return he(ae,e)}var Y=ae;function $p(){return Y}function Ua(e){let t=[];if(e.colors)Object.entries(e.colors).forEach(([s,o])=>{if(o)t.push(`--color-${s}: ${o};`)});if(e.typography?.fontFamily)Object.entries(e.typography.fontFamily).forEach(([s,o])=>{if(o)t.push(`--font-${s}: ${o};`)});if(e.typography?.fontSize)Object.entries(e.typography.fontSize).forEach(([s,o])=>{if(o)t.push(`--text-${s}: ${o};`)});if(e.typography?.fontWeight)Object.entries(e.typography.fontWeight).forEach(([s,o])=>{if(o)t.push(`--font-weight-${s}: ${o};`)});if(e.typography?.lineHeight)Object.entries(e.typography.lineHeight).forEach(([s,o])=>{if(o)t.push(`--leading-${s}: ${o};`)});if(e.spacing)Object.entries(e.spacing).forEach(([s,o])=>{if(o)t.push(`--spacing-${s}: ${o};`)});if(e.borderRadius)Object.entries(e.borderRadius).forEach(([s,o])=>{if(o)t.push(`--radius-${s}: ${o};`)});if(e.shadows)Object.entries(e.shadows).forEach(([s,o])=>{if(o)t.push(`--shadow-${s}: ${o};`)});if(e.components?.button)Object.entries(e.components.button).forEach(([s,o])=>{if(o)t.push(`--button-${s.replace(/([A-Z])/g,"-$1").toLowerCase()}: ${o};`)});if(e.components?.input)Object.entries(e.components.input).forEach(([s,o])=>{if(o)t.push(`--input-${s.replace(/([A-Z])/g,"-$1").toLowerCase()}: ${o};`)});if(e.components?.card)Object.entries(e.components.card).forEach(([s,o])=>{if(o)t.push(`--card-${s.replace(/([A-Z])/g,"-$1").toLowerCase()}: ${o};`)});return`:root {
|
|
16
|
+
`,o=document.createElement("style");o.textContent=s,document.head.appendChild(o)}function Ha(e,t,s={}){if(typeof e.animate!=="function")return console.warn("Web Animations API not supported"),null;let{duration:o=1000,easing:a="ease",delay:i=0,iterations:r=1,direction:n="normal",fill:c="both"}=s;return e.animate([...t],{duration:o,easing:a,delay:i,iterations:r,direction:n,fill:c})}var Va={fadeIn:[{offset:0,opacity:0},{offset:1,opacity:1}],fadeOut:[{offset:0,opacity:1},{offset:1,opacity:0}],slideInUp:[{offset:0,transform:"translateY(100%)",opacity:0},{offset:1,transform:"translateY(0)",opacity:1}],slideInDown:[{offset:0,transform:"translateY(-100%)",opacity:0},{offset:1,transform:"translateY(0)",opacity:1}],slideInLeft:[{offset:0,transform:"translateX(-100%)",opacity:0},{offset:1,transform:"translateX(0)",opacity:1}],slideInRight:[{offset:0,transform:"translateX(100%)",opacity:0},{offset:1,transform:"translateX(0)",opacity:1}],slideOutUp:[{offset:0,transform:"translateY(0)",opacity:1},{offset:1,transform:"translateY(-100%)",opacity:0}],slideOutDown:[{offset:0,transform:"translateY(0)",opacity:1},{offset:1,transform:"translateY(100%)",opacity:0}],slideOutLeft:[{offset:0,transform:"translateX(0)",opacity:1},{offset:1,transform:"translateX(-100%)",opacity:0}],slideOutRight:[{offset:0,transform:"translateX(0)",opacity:1},{offset:1,transform:"translateX(100%)",opacity:0}],zoomIn:[{offset:0,transform:"scale(0)",opacity:0},{offset:0.5,opacity:1},{offset:1,transform:"scale(1)"}],zoomOut:[{offset:0,transform:"scale(1)",opacity:1},{offset:0.5,opacity:1},{offset:1,transform:"scale(0)",opacity:0}],rotate:[{offset:0,transform:"rotate(0deg)"},{offset:1,transform:"rotate(360deg)"}],bounce:[{offset:0,transform:"translateY(0)"},{offset:0.2,transform:"translateY(0)"},{offset:0.4,transform:"translateY(-30px)"},{offset:0.43,transform:"translateY(-30px)"},{offset:0.53,transform:"translateY(0)"},{offset:0.7,transform:"translateY(-15px)"},{offset:0.8,transform:"translateY(0)"},{offset:0.9,transform:"translateY(-4px)"},{offset:1,transform:"translateY(0)"}],pulse:[{offset:0,transform:"scale(1)"},{offset:0.5,transform:"scale(1.05)"},{offset:1,transform:"scale(1)"}],shake:[{offset:0,transform:"translateX(0)"},{offset:0.1,transform:"translateX(-10px)"},{offset:0.2,transform:"translateX(10px)"},{offset:0.3,transform:"translateX(-10px)"},{offset:0.4,transform:"translateX(10px)"},{offset:0.5,transform:"translateX(-10px)"},{offset:0.6,transform:"translateX(10px)"},{offset:0.7,transform:"translateX(-10px)"},{offset:0.8,transform:"translateX(10px)"},{offset:0.9,transform:"translateX(-10px)"},{offset:1,transform:"translateX(0)"}],swing:[{offset:0,transform:"rotate(0deg)"},{offset:0.2,transform:"rotate(15deg)"},{offset:0.4,transform:"rotate(-10deg)"},{offset:0.6,transform:"rotate(5deg)"},{offset:0.8,transform:"rotate(-5deg)"},{offset:1,transform:"rotate(0deg)"}],flip:[{offset:0,transform:"perspective(400px) rotateY(0)",animationTimingFunction:"ease-out"},{offset:0.4,transform:"perspective(400px) translateZ(150px) rotateY(170deg)",animationTimingFunction:"ease-out"},{offset:0.5,transform:"perspective(400px) translateZ(150px) rotateY(190deg)",animationTimingFunction:"ease-in"},{offset:0.8,transform:"perspective(400px) rotateY(360deg)",animationTimingFunction:"ease-in"},{offset:1,transform:"perspective(400px)",animationTimingFunction:"ease-in"}],rubberBand:[{offset:0,transform:"scale(1)"},{offset:0.3,transform:"scaleX(1.25) scaleY(0.75)"},{offset:0.4,transform:"scaleX(0.75) scaleY(1.25)"},{offset:0.5,transform:"scaleX(1.15) scaleY(0.85)"},{offset:0.65,transform:"scaleX(0.95) scaleY(1.05)"},{offset:0.75,transform:"scaleX(1.05) scaleY(0.95)"},{offset:1,transform:"scale(1)"}],heartbeat:[{offset:0,transform:"scale(1)"},{offset:0.14,transform:"scale(1.3)"},{offset:0.28,transform:"scale(1)"},{offset:0.42,transform:"scale(1.3)"},{offset:0.7,transform:"scale(1)"}]};function Fd(e,t,s={}){return Ha(e,Va[t],s)}import{createHighlighter as Wa}from"ts-syntax-highlighter";var se=null;async function _a(){if(!se)se=await Wa({theme:"github-light"});return se}async function Ud(e,t={}){let{theme:s="auto",language:o="typescript",lineNumbers:a=!1,wrapLines:i=!0}=t,r=await _a(),n=s==="auto"?globalThis.matchMedia?.("(prefers-color-scheme: dark)").matches?"github-dark":"github-light":s==="dark"?"github-dark":"github-light",c=await r.highlight(e,o);return{html:typeof c==="string"?c:String(c),language:o,theme:n}}function Yd(e){if(e.includes("<!DOCTYPE")||e.includes("<html"))return"html";if(e.includes("<?php"))return"php";if(e.includes("import")&&e.includes("from"))return"typescript";if(e.includes("function")||e.includes("const"))return"javascript";if(e.includes("{")&&e.includes("}"))return"json";if(e.includes("$")&&e.includes("|"))return"bash";if(e.includes("#")&&e.includes("##"))return"markdown";return"typescript"}function Jd(e,t){return`<div class="${t?`rounded-md overflow-auto text-sm leading-relaxed font-mono ${t}`:"rounded-md overflow-auto text-sm leading-relaxed font-mono"}">${e}</div>`}var L=null,Fa=(e)=>{return e===1?0:1};function G(e,t){return t.split(".").reduce((s,o)=>s?.[o],e)}function oe(e,t={}){return e.replace(/\{(\w+)\}/g,(s,o)=>{return t[o]!==void 0?String(t[o]):s})}function Zd(e){let{locale:t,fallbackLocale:s="en",messages:o,pluralRules:a={},dateTimeFormats:i={},numberFormats:r={},missing:n,warnMissing:c=!0}=e;function d(x,m={}){let C=G(o[t],x);if(C===void 0&&s)C=G(o[s],x);if(C===void 0){if(n){let T=n(t,x);if(T)return oe(T,m)}if(c&&typeof console<"u")console.warn(`[i18n] Missing translation for key "${x}" in locale "${t}"`);return x}if(typeof C==="string")return oe(C,m);return String(C)}function f(x,m,C={}){let T=d(x,{...C,count:m});if(T.includes("|")){let z=T.split("|").map((Z)=>Z.trim()),J=(a[t]||Fa)(m,t),X=z[J]||z[z.length-1];return oe(X,{...C,count:m})}return T}function p(x,m="default"){let C=typeof x==="number"?new Date(x):x,T=i[m]||i.default||{};return new Intl.DateTimeFormat(t,T).format(C)}function g(x,m="default"){let C=r[m]||r.default||{};return new Intl.NumberFormat(t,C).format(x)}function h(x){if(G(o[t],x)!==void 0)return!0;if(s)return G(o[s],x)!==void 0;return!1}function w(x){if(!o[x]){console.warn(`[i18n] Locale "${x}" not found. Available locales: ${Object.keys(o).join(", ")}`);return}t=x}function v(x,m){if(!o[x])o[x]={};o[x]={...o[x],...m}}function k(x){delete o[x]}return{get locale(){return t},get availableLocales(){return Object.keys(o)},setLocale:w,t:d,tc:f,d:p,n:g,te:h,addMessages:v,removeLocale:k}}function Qd(e){L=e}function ep(){return L}function tp(e,t){if(!L)return console.warn("[i18n] No global i18n instance set. Call setI18n() first."),e;return L.t(e,t)}function sp(e,t,s){if(!L)return console.warn("[i18n] No global i18n instance set. Call setI18n() first."),e;return L.tc(e,t,s)}function op(e,t){if(!L)return console.warn("[i18n] No global i18n instance set. Call setI18n() first."),String(e);return L.d(e,t)}function ap(e,t){if(!L)return console.warn("[i18n] No global i18n instance set. Call setI18n() first."),String(e);return L.n(e,t)}var ip={en:(e)=>e===1?0:1,de:(e)=>e===1?0:1,nl:(e)=>e===1?0:1,sv:(e)=>e===1?0:1,fr:(e)=>e===0||e===1?0:1,pt_BR:(e)=>e===0||e===1?0:1,ru:(e)=>{if(e%10===1&&e%100!==11)return 0;if(e%10>=2&&e%10<=4&&(e%100<10||e%100>=20))return 1;return 2},pl:(e)=>{if(e===1)return 0;if(e%10>=2&&e%10<=4&&(e%100<10||e%100>=20))return 1;return 2},cs:(e)=>{if(e===1)return 0;if(e>=2&&e<=4)return 1;return 2},ar:(e)=>{if(e===0)return 0;if(e===1)return 1;if(e===2)return 2;if(e%100>=3&&e%100<=10)return 3;if(e%100>=11)return 4;return 5},ja:()=>0,ko:()=>0,zh:()=>0,th:()=>0,vi:()=>0},rp={short:{year:"numeric",month:"numeric",day:"numeric"},long:{year:"numeric",month:"long",day:"numeric"},full:{weekday:"long",year:"numeric",month:"long",day:"numeric"},time:{hour:"numeric",minute:"numeric"},datetime:{year:"numeric",month:"numeric",day:"numeric",hour:"numeric",minute:"numeric"}},np={decimal:{style:"decimal",minimumFractionDigits:2,maximumFractionDigits:2},currency:{style:"currency",currency:"USD"},percent:{style:"percent",minimumFractionDigits:0,maximumFractionDigits:2},compact:{notation:"compact"}};function lp(e){let t=["ar","he","fa","ur","yi"],s=e.split("-")[0].toLowerCase();return t.includes(s)}async function cp(e,t){try{return await t()}catch(s){return console.error(`[i18n] Failed to load messages for locale "${e}":`,s),{}}}var dp={en:{common:{loading:"Loading...",error:"Error",retry:"Retry",cancel:"Cancel",confirm:"Confirm",close:"Close",save:"Save",delete:"Delete",edit:"Edit",search:"Search",clear:"Clear",submit:"Submit",reset:"Reset"},form:{required:"This field is required",invalid:"Invalid value",tooShort:"Value is too short (minimum {min} characters)",tooLong:"Value is too long (maximum {max} characters)",invalidEmail:"Invalid email address",invalidUrl:"Invalid URL"},pagination:{previous:"Previous",next:"Next",page:"Page {page}",of:"of {total}"}},es:{common:{loading:"Cargando...",error:"Error",retry:"Reintentar",cancel:"Cancelar",confirm:"Confirmar",close:"Cerrar",save:"Guardar",delete:"Eliminar",edit:"Editar",search:"Buscar",clear:"Limpiar",submit:"Enviar",reset:"Restablecer"},form:{required:"Este campo es obligatorio",invalid:"Valor inv\xE1lido",tooShort:"El valor es demasiado corto (m\xEDnimo {min} caracteres)",tooLong:"El valor es demasiado largo (m\xE1ximo {max} caracteres)",invalidEmail:"Direcci\xF3n de correo electr\xF3nico inv\xE1lida",invalidUrl:"URL inv\xE1lida"},pagination:{previous:"Anterior",next:"Siguiente",page:"P\xE1gina {page}",of:"de {total}"}},fr:{common:{loading:"Chargement...",error:"Erreur",retry:"R\xE9essayer",cancel:"Annuler",confirm:"Confirmer",close:"Fermer",save:"Enregistrer",delete:"Supprimer",edit:"Modifier",search:"Rechercher",clear:"Effacer",submit:"Soumettre",reset:"R\xE9initialiser"},form:{required:"Ce champ est obligatoire",invalid:"Valeur invalide",tooShort:"La valeur est trop courte (minimum {min} caract\xE8res)",tooLong:"La valeur est trop longue (maximum {max} caract\xE8res)",invalidEmail:"Adresse e-mail invalide",invalidUrl:"URL invalide"},pagination:{previous:"Pr\xE9c\xE9dent",next:"Suivant",page:"Page {page}",of:"sur {total}"}}};function up(e={}){let{max:t=10,ttl:s=0,include:o,exclude:a,hooks:i,debug:r=!1}=e,n=new Map,c=0,d=0;function f(...u){if(r)console.log("[KeepAlive]",...u)}function p(u){if(a){if(a instanceof RegExp&&a.test(u))return!1;if(Array.isArray(a)&&a.includes(u))return!1}if(o){if(o instanceof RegExp&&!o.test(u))return!1;if(Array.isArray(o)&&!o.includes(u))return!1}return!0}function g(u){if(!s||!u.expiresAt)return!1;return Date.now()>u.expiresAt}function h(u){let b=n.get(u);if(b)b.lastAccessedAt=Date.now(),b.accessCount++,b.instance.lastAccessedAt=b.lastAccessedAt,n.delete(u),n.set(u,b),f(`Touched: ${u} (access count: ${b.accessCount})`)}function w(){if(n.size===0)return!1;let u=n.keys().next().value;if(!u)return!1;let b=n.get(u);if(b){f(`Evicting LRU: ${u}`);let y=b.instance.hooks;if(y?.onDeactivate)y.onDeactivate(b.instance);if(i?.onDeactivate)i.onDeactivate(b.instance);return n.delete(u),!0}return!1}function v(u,b,y){if(!p(b.type))return f(`Type not cacheable: ${b.type}`),b;if(n.size>=t)w();let A=Date.now(),H={instance:{...b,hooks:y||b.hooks,createdAt:b.createdAt||A,lastAccessedAt:A},accessCount:0,createdAt:A,lastAccessedAt:A,expiresAt:s?A+s:void 0};if(n.set(u,H),f(`Cached: ${u} (size: ${n.size}/${t})`),y?.onMount)y.onMount(H.instance);if(i?.onMount)i.onMount(H.instance);return H.instance}function k(u){let b=n.get(u);if(!b)return d++,f(`Miss: ${u}`),null;if(g(b))return f(`Expired: ${u}`),n.delete(u),d++,null;return c++,h(u),f(`Hit: ${u}`),b.instance}function x(u){let b=n.get(u);if(!b)return!1;if(g(b))return n.delete(u),!1;return!0}function m(u){let b=n.get(u);if(!b)return!1;f(`Removing: ${u}`);let y=b.instance.hooks;if(y?.onUnmount)y.onUnmount(b.instance);if(i?.onUnmount)i.onUnmount(b.instance);return n.delete(u)}function C(){f("Clearing cache"),n.forEach((u)=>{let b=u.instance.hooks;if(b?.onUnmount)b.onUnmount(u.instance);if(i?.onUnmount)i.onUnmount(u.instance)}),n.clear(),c=0,d=0}function T(){let u=0,b=Date.now();for(let[y,A]of n.entries())if(g(A))f(`Pruning expired: ${y}`),m(y),u++;while(n.size>t)if(w())u++;else break;if(u>0)f(`Pruned ${u} entries`);return u}function z(u){let b=k(u);if(!b)return null;f(`Activating: ${u}`);let y=b.hooks;if(y?.onActivate)y.onActivate(b);if(i?.onActivate)i.onActivate(b);if(b.state&&y?.onRestore)y.onRestore(b,b.state);return b}function ie(u){let b=n.get(u);if(!b)return!1;f(`Deactivating: ${u}`);let y=b.instance,A=y.hooks;if(A?.onSave)y.state=A.onSave(y);if(A?.onDeactivate)A.onDeactivate(y);if(i?.onDeactivate)i.onDeactivate(y);return!0}function J(){let u=c+d;return{hits:c,misses:d,size:n.size,max:t,hitRate:u>0?c/u:0,keys:Array.from(n.keys())}}function X(){return Array.from(n.keys())}function Z(){return n.size}return{cache:v,get:k,has:x,remove:m,clear:C,prune:T,activate:z,deactivate:ie,getStats:J,keys:X,size:Z}}function fp(e){let t=new Map;return{set(s,o){if(t.has(s))t.delete(s);if(t.set(s,o),t.size>e){let a=t.keys().next().value;if(a)t.delete(a)}},get(s){if(!t.has(s))return;let o=t.get(s);return t.delete(s),t.set(s,o),o},has(s){return t.has(s)},delete(s){return t.delete(s)},clear(){t.clear()},get size(){return t.size},keys(){return Array.from(t.keys())},values(){return Array.from(t.values())},forEach(s){t.forEach(s)}}}function hp(){let e=new Map;return{save(t,s){e.set(t,JSON.parse(JSON.stringify(s)))},restore(t){let s=e.get(t);return s?JSON.parse(JSON.stringify(s)):null},has(t){return e.has(t)},remove(t){return e.delete(t)},clear(){e.clear()},keys(){return Array.from(e.keys())},get size(){return e.size}}}function bp(e,t={}){let{maxSize:s=100,reset:o}=t,a=[];return{acquire(){if(a.length>0)return a.pop();return e()},release(i){if(a.length<s){if(o)o(i);a.push(i)}},clear(){a.length=0},get size(){return a.length},get maxSize(){return s}}}var E=new Map;async function U(e,t){let s=t||e.toString();if(E.has(s))return E.get(s);let o=e();E.set(s,o);try{return await o}catch(a){throw E.delete(s),a}}function xp(e,t={}){let{retryAttempts:s=3,retryDelay:o=1000,onLoading:a,onLoaded:i,onError:r}=t,n="idle",c,d,f=async(p=0)=>{try{if(n==="loading"||n==="loaded"){if(c)return c}n="loading",a?.();let g=await U(e);return c=g,n="loaded",i?.(g),g}catch(g){let h=g;if(p<s)return await new Promise((w)=>setTimeout(w,o*(p+1))),f(p+1);throw n="error",d=h,r?.(h),h}};return{get state(){return n},get module(){return c},get error(){return d},load:()=>f(),preload:()=>f()}}function Ka(e,t,s={}){if(!e)return console.warn("lazyLoad: element is null"),()=>{};let{root:o=null,rootMargin:a="0px",threshold:i=0.01,placeholder:r,errorContent:n,onLoading:c,onLoaded:d,onError:f}=s,p=!1,g=null;if(r)if(typeof r==="string")e.innerHTML=r;else e.innerHTML="",e.appendChild(r);return g=new IntersectionObserver(async(w)=>{for(let v of w)if(v.isIntersecting&&!p){p=!0,g?.disconnect();try{c?.();let k=await U(t);if(d?.(k),k&&typeof k.default?.render==="function"){let x=await k.default.render();e.innerHTML=x}}catch(k){let x=k;if(f?.(x),n)if(typeof n==="string")e.innerHTML=n;else e.innerHTML="",e.appendChild(n);else e.innerHTML=`<div style="color: red;">Failed to load component: ${x.message}</div>`}}},{root:o,rootMargin:a,threshold:i}),g.observe(e),()=>{g?.disconnect(),g=null}}function mp(e,t,s={}){let o=[],a=Array.from(e);for(let i of a){let r=typeof t==="function"&&t.length>0?()=>t(i):t,n=Ka(i,r,s);o.push(n)}return()=>{o.forEach((i)=>i())}}function Ga(e){return U(e)}function vp(e){return Promise.all(e.map((t)=>Ga(t)))}function wp(e){if(e)E.delete(e);else E.clear()}function yp(){return{size:E.size,keys:Array.from(E.keys())}}function Cp(e){return{async load(t){let s=e[t];if(!s)throw Error(`No route found for path: ${t}`);return U(s,`route:${t}`)},async preload(t){return this.load(t)},async preloadRoutes(t){return Promise.all(t.map((s)=>this.preload(s)))}}}function Ua(e,t,s={}){if(!e)return()=>{};let{root:o=null,rootMargin:a="50px",threshold:i=0.01,placeholder:r,onLoading:n,onLoaded:c,onError:d}=s;if(r&&typeof r==="string")e.src=r;let f=!1,p=null;return p=new IntersectionObserver((h)=>{for(let w of h)if(w.isIntersecting&&!f)f=!0,p?.disconnect(),n?.(),e.src=t,e.addEventListener("load",()=>{c?.(e),e.classList.add("loaded")},{once:!0}),e.addEventListener("error",(v)=>{let k=Error(`Failed to load image: ${t}`);d?.(k),e.classList.add("error")},{once:!0})},{root:o,rootMargin:a,threshold:i}),p.observe(e),()=>{p?.disconnect(),p=null}}function $p(e=document,t={}){let s=e.querySelectorAll("img[data-lazy-src]"),o=[];return s.forEach((a)=>{let i=a.getAttribute("data-lazy-src");if(i){let r=Ua(a,i,t);o.push(r)}}),()=>{o.forEach((a)=>a())}}var ae={colors:{primary:"#3b82f6",secondary:"#8b5cf6",success:"#10b981",warning:"#f59e0b",danger:"#ef4444",info:"#06b6d4",gray:"#6b7280",white:"#ffffff",black:"#000000"},typography:{fontFamily:{sans:'system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',serif:'Georgia, Cambria, "Times New Roman", Times, serif',mono:'Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace'},fontSize:{xs:"0.75rem",sm:"0.875rem",base:"1rem",lg:"1.125rem",xl:"1.25rem","2xl":"1.5rem","3xl":"1.875rem","4xl":"2.25rem"},fontWeight:{light:"300",normal:"400",medium:"500",semibold:"600",bold:"700"},lineHeight:{tight:"1.25",normal:"1.5",relaxed:"1.75"}},spacing:{xs:"0.25rem",sm:"0.5rem",md:"1rem",lg:"1.5rem",xl:"2rem","2xl":"3rem","3xl":"4rem","4xl":"6rem"},borderRadius:{none:"0",sm:"0.125rem",md:"0.375rem",lg:"0.5rem",full:"9999px"},shadows:{sm:"0 1px 2px 0 rgba(0, 0, 0, 0.05)",md:"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)",lg:"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)",xl:"0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)","2xl":"0 25px 50px -12px rgba(0, 0, 0, 0.25)",none:"none"},components:{button:{borderRadius:"0.375rem",padding:"0.5rem 1rem",fontSize:"0.875rem",fontWeight:"500"},input:{borderRadius:"0.375rem",padding:"0.5rem 0.75rem",fontSize:"0.875rem",borderWidth:"1px"},card:{borderRadius:"0.5rem",padding:"1.5rem",shadow:"0 1px 3px 0 rgba(0, 0, 0, 0.1)"}}};function be(e,t){let s={...e};for(let o in t)if(t[o]instanceof Object&&o in e)s[o]=be(e[o],t[o]);else s[o]=t[o];return s}function j(e){return be(ae,e)}var Y=ae;function Sp(){return Y}function Ya(e){let t=[];if(e.colors)Object.entries(e.colors).forEach(([s,o])=>{if(o)t.push(`--color-${s}: ${o};`)});if(e.typography?.fontFamily)Object.entries(e.typography.fontFamily).forEach(([s,o])=>{if(o)t.push(`--font-${s}: ${o};`)});if(e.typography?.fontSize)Object.entries(e.typography.fontSize).forEach(([s,o])=>{if(o)t.push(`--text-${s}: ${o};`)});if(e.typography?.fontWeight)Object.entries(e.typography.fontWeight).forEach(([s,o])=>{if(o)t.push(`--font-weight-${s}: ${o};`)});if(e.typography?.lineHeight)Object.entries(e.typography.lineHeight).forEach(([s,o])=>{if(o)t.push(`--leading-${s}: ${o};`)});if(e.spacing)Object.entries(e.spacing).forEach(([s,o])=>{if(o)t.push(`--spacing-${s}: ${o};`)});if(e.borderRadius)Object.entries(e.borderRadius).forEach(([s,o])=>{if(o)t.push(`--radius-${s}: ${o};`)});if(e.shadows)Object.entries(e.shadows).forEach(([s,o])=>{if(o)t.push(`--shadow-${s}: ${o};`)});if(e.components?.button)Object.entries(e.components.button).forEach(([s,o])=>{if(o)t.push(`--button-${s.replace(/([A-Z])/g,"-$1").toLowerCase()}: ${o};`)});if(e.components?.input)Object.entries(e.components.input).forEach(([s,o])=>{if(o)t.push(`--input-${s.replace(/([A-Z])/g,"-$1").toLowerCase()}: ${o};`)});if(e.components?.card)Object.entries(e.components.card).forEach(([s,o])=>{if(o)t.push(`--card-${s.replace(/([A-Z])/g,"-$1").toLowerCase()}: ${o};`)});return`:root {
|
|
17
17
|
${t.join(`
|
|
18
18
|
`)}
|
|
19
|
-
}`}function
|
|
19
|
+
}`}function Ip(e,t){if(Y=e,typeof document>"u")return;let s=t||document.documentElement;if(e.colors)Object.entries(e.colors).forEach(([o,a])=>{if(a)s.style.setProperty(`--color-${o}`,a)});if(e.typography?.fontFamily)Object.entries(e.typography.fontFamily).forEach(([o,a])=>{if(a)s.style.setProperty(`--font-${o}`,a)});if(e.typography?.fontSize)Object.entries(e.typography.fontSize).forEach(([o,a])=>{if(a)s.style.setProperty(`--text-${o}`,a)});if(e.typography?.fontWeight)Object.entries(e.typography.fontWeight).forEach(([o,a])=>{if(a)s.style.setProperty(`--font-weight-${o}`,a)});if(e.typography?.lineHeight)Object.entries(e.typography.lineHeight).forEach(([o,a])=>{if(a)s.style.setProperty(`--leading-${o}`,a)});if(e.spacing)Object.entries(e.spacing).forEach(([o,a])=>{if(a)s.style.setProperty(`--spacing-${o}`,a)});if(e.borderRadius)Object.entries(e.borderRadius).forEach(([o,a])=>{if(a)s.style.setProperty(`--radius-${o}`,a)});if(e.shadows)Object.entries(e.shadows).forEach(([o,a])=>{if(a)s.style.setProperty(`--shadow-${o}`,a)});if(e.components?.button)Object.entries(e.components.button).forEach(([o,a])=>{if(a)s.style.setProperty(`--button-${o.replace(/([A-Z])/g,"-$1").toLowerCase()}`,a)});if(e.components?.input)Object.entries(e.components.input).forEach(([o,a])=>{if(a)s.style.setProperty(`--input-${o.replace(/([A-Z])/g,"-$1").toLowerCase()}`,a)});if(e.components?.card)Object.entries(e.components.card).forEach(([o,a])=>{if(a)s.style.setProperty(`--card-${o.replace(/([A-Z])/g,"-$1").toLowerCase()}`,a)})}function Np(){return Y}function Tp(e){let t=e.split("."),s=Y;for(let o of t)if(s&&typeof s==="object"&&o in s)s=s[o];else return;return s}var Ap={default:ae,purple:j({colors:{primary:"#8b5cf6",secondary:"#a78bfa"}}),green:j({colors:{primary:"#10b981",secondary:"#34d399"}}),orange:j({colors:{primary:"#f97316",secondary:"#fb923c"}}),dark:j({colors:{primary:"#60a5fa",secondary:"#a78bfa",gray:"#9ca3af",white:"#1f2937",black:"#f9fafb"}}),minimal:j({borderRadius:{none:"0",sm:"0",md:"0.125rem",lg:"0.25rem",full:"0.25rem"},shadows:{sm:"none",md:"0 1px 2px 0 rgba(0, 0, 0, 0.05)",lg:"0 1px 3px 0 rgba(0, 0, 0, 0.1)",xl:"0 4px 6px -1px rgba(0, 0, 0, 0.1)","2xl":"0 10px 15px -3px rgba(0, 0, 0, 0.1)",none:"none"}})};function Dp(e){return Ya(e)}export{ne as wrapErrorHandler,rr as warnProp,_e as warn,ja as waitForAnimation,fr as validateVariant,In as validateTextInputProps,hr as validateSize,Dn as validateSearchInputProps,Ke as validateProps,Tn as validatePasswordInputProps,An as validateNumberInputProps,hn as validateFormProps,Nn as validateEmailInputProps,pr as validateButtonProps,Ed as validateAriaRelationships,Np as useTheme,ii as useSEO,yi as usePrefersReducedMotion,R as useMediaQuery,bi as useLocalStorage,ui as useKeyboard,mi as useIsMobile,vi as useIsDesktop,wi as useIsDarkMode,di as useFocusTrap,oi as useDarkMode,ei as useCopyCode,li as useClickOutside,xi as useBreakpoint,Si as themeVariableNames,Ya as themeToCSSProperties,Ap as themePresets,Zt as textInputPropSchema,sp as tc,tp as t,ki as stxThemePreset,Tc as storage,Bd as staggerAnimation,Ql as spaceWashGradient,de as spaceWash,yo as spaceTintVars,sc as spaceTintPayload,tc as spaceIndexOf,le as sidebarThemes,ye as setTitle,S as setMeta,Ce as setLink,Qd as setI18n,Zi as setErrorHandler,jd as sequenceAnimations,wo as resolveSpaceTint,Yl as resolveSidebarTheme,Jl as resolveIconColor,qd as removeAnimation,vp as preloadModules,Ga as preloadModule,Dd as prefersReducedMotion,Ld as prefersHighContrast,ip as pluralRules,Qt as numberInputPropSchema,np as numberFormats,ec as normalizeSpaces,Co as normalizeSpace,ap as n,Id as moveFocus,F as macosColors,cp as loadLocaleMessages,da as linear,U as lazyLoadModule,$p as lazyLoadImages,Ua as lazyLoadImage,xp as lazyLoadComponent,mp as lazyLoadAll,Ka as lazyLoad,Nd as isVisibleToScreenReader,lp as isRTL,Ud as highlight,Sd as hasFocus,W as handleError,Tp as getThemeValue,Sp as getTheme,we as getSystemTheme,ep as getI18n,_a as getHighlighter,ee as getFocusableElements,Q as getEffectiveTheme,zd as getColorSchemePreference,yp as getCacheStats,Dp as generateThemeCSS,ri as generateSEOTags,ue as generateId,qt as formPropSchema,sr as errorBoundary,ka as easeOutSine,ya as easeOutQuint,ma as easeOutQuart,ua as easeOutQuad,Na as easeOutExpo,Pa as easeOutElastic,ba as easeOutCubic,Da as easeOutCirc,te as easeOutBounce,Ma as easeOutBack,$a as easeInSine,wa as easeInQuint,xa as easeInQuart,pa as easeInQuad,Sa as easeInOutSine,Ca as easeInOutQuint,va as easeInOutQuart,fa as easeInOutQuad,Ta as easeInOutExpo,Ea as easeInOutElastic,ga as easeInOutCubic,La as easeInOutCirc,qa as easeInOutBounce,Ra as easeInOutBack,Ia as easeInExpo,za as easeInElastic,ha as easeInCubic,Aa as easeInCirc,fe as easeInBounce,Oa as easeInBack,er as devAssert,Yd as detectLanguage,ce as deriveSpaceTint,ae as defaultTheme,rp as dateTimeFormats,op as d,Ba as cssAnimation,j as createTheme,Ac as createStorage,hp as createStateManager,Pd as createSkipLink,Ad as createScreenReaderText,ur as createSafeClickHandler,$d as createRovingTabindex,Cp as createRouteLoader,D as createPropValidator,fp as createLRUCache,Wd as createKeyframes,Ha as createKeyframeAnimation,up as createKeepAlive,Zd as createI18n,Cd as createFocusTrap,tr as createDebugger,bp as createComponentPool,vd as createAriaLabel,wd as createAriaDescription,ti as copyToClipboard,dp as componentMessages,wp as clearModuleCache,Qi as clearErrorHandler,Ye as buttonPropSchema,ir as assertProp,We as assert,Td as aria,Ip as applyTheme,Jd as applyHeadwindClasses,he as applyAnimation,yd as announceToScreenReader,Vd as animateWithClass,Fd as animate,la as VirtualTable,ra as VirtualList,aa as Video,Oe as TwoFactorChallenge,sa as Transition,ea as Tooltip,Zo as Textarea,Jt as TextInput,Jo as Teleport,Uo as Tabs,_o as TableRow,Vo as TableHeader,jo as TableHead,qo as TableCell,Mo as TableBody,Eo as Table,Ko as TabPanel,re as THEMED_FAMILIES,zo as Switch,Ss as SubscriptionCheckout,K as StorageManager,Do as StepperStep,To as Stepper,Io as Spinner,ko as Skeleton,Pe as Signup,co as SidebarSpaces,uo as SidebarSpaceSwitcher,no as SidebarSpace,io as SidebarSection,oo as SidebarPinned,to as SidebarItem,Qs as SidebarHeader,Xs as SidebarFooter,Ys as Sidebar,Gs as Select,Ut as SearchInput,$i as SHADE_VAR_PREFIX,Fs as RadioGroupOption,Ws as RadioGroupLabel,Hs as RadioGroupDescription,Bs as RadioGroup,Rs as Radio,l as PropTypes,Os as Progress,Ps as Portal,Ls as PopoverPanel,As as PopoverButton,Ns as Popover,$s as PaymentMethods,Kt as PasswordInput,xs as Pagination,_t as NumberInput,bs as Notification,fs as Navigator,Le as Login,ps as ListboxOptions,cs as ListboxOption,ns as ListboxLabel,is as ListboxButton,os as Listbox,Va as KeyframeAnimations,fi as KeyboardShortcuts,kd as KeyboardKeys,ve as Installation,jt as Image,me as Hero,Rt as Form,xe as Footer,M as ErrorTypes,Vt as EmailInput,Md as Easing,Ot as DropdownItems,Pt as DropdownItem,Lt as DropdownButton,At as Dropdown,Nt as Drawer,St as DialogTitle,$t as DialogPanel,yt as DialogDescription,vt as DialogBackdrop,xt as Dialog,ys as DefaultPaymentMethod,N as ComponentError,bt as CommandPaletteItem,ft as CommandPalette,pt as ComboboxOptions,ct as ComboboxOption,nt as ComboboxInput,it as ComboboxButton,ot as Combobox,ge as CodeBlock,vs as Checkout,tt as Checkbox,Qe as Card,Xe as Calendar,Ue as Button,q as Breakpoints,He as Breadcrumb,Be as Badge,Re as Avatar,Ae as Audio,Hd as AnimationClasses,Ne as AccordionItem,Se as Accordion};
|
|
@@ -3,14 +3,31 @@ import type { SidebarSectionData } from './rows';
|
|
|
3
3
|
* Build a full light/dark palette from one seed color.
|
|
4
4
|
*
|
|
5
5
|
* The percentages are the tuning surface of the whole feature, so they are
|
|
6
|
-
* worth stating plainly
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
6
|
+
* worth stating plainly, and they are measured rather than guessed. Sampling
|
|
7
|
+
* Dia's sidebar at @2x, clear of its tiles and rows, the panel reads:
|
|
8
|
+
*
|
|
9
|
+
* near the top #c9ddd5 — 43 from white, averaged over RGB
|
|
10
|
+
* a third down #cee0da — 39
|
|
11
|
+
* two thirds down #e2f1ed — 20
|
|
12
|
+
* near the bottom #e9f4f4 — 15
|
|
13
|
+
*
|
|
14
|
+
* For a mix into white the distance from white tracks the percentage almost
|
|
15
|
+
* one-to-one, so those readings are the percentages: 44% at the top falling to
|
|
16
|
+
* 15% at the bottom, a ratio of ~2.9 against Dia's measured 2.95.
|
|
17
|
+
*
|
|
18
|
+
* This is deliberately stronger than the 34%/16% it replaced, which produced a
|
|
19
|
+
* visibly paler panel than the thing it was imitating — 34 from white at the
|
|
20
|
+
* top where Dia is 43, and a ratio of 2.0 where Dia is 2.9, so it was both too
|
|
21
|
+
* faint and too flat. The old note claimed anything stronger would stop the
|
|
22
|
+
* white selection cards reading as raised; Dia disproves that at 43, and the
|
|
23
|
+
* cards still read here (see the contrast assertion in the tests).
|
|
24
|
+
*
|
|
25
|
+
* The ink is the seed pulled almost to black (22% seed) so text keeps a hint of
|
|
10
26
|
* the space's hue without losing contrast. In dark appearance the relationship
|
|
11
27
|
* inverts: the seed is mixed *into* near-black for the panel and *into* white
|
|
12
28
|
* for the ink and accent, which keeps a dark space recognizably the same color
|
|
13
|
-
* as its light counterpart rather than a different one.
|
|
29
|
+
* as its light counterpart rather than a different one. Dark is scaled by the
|
|
30
|
+
* same factor so the two appearances stay in step.
|
|
14
31
|
*
|
|
15
32
|
* `from` is the TOP of the panel and carries the most seed; the wash fades
|
|
16
33
|
* downward. Both appearances agree on that, which is the point — they used to
|
|
@@ -18,12 +35,16 @@ import type { SidebarSectionData } from './rows';
|
|
|
18
35
|
* dark ran 26% down to 14%, so the same space put its colour at opposite ends
|
|
19
36
|
* of the panel depending on the system appearance, and a design checked in one
|
|
20
37
|
* mode was wrong in the other.
|
|
21
|
-
*
|
|
22
|
-
* Sampled from Dia's sidebar at @2x for the direction and rough ratio: the
|
|
23
|
-
* panel reads #caded6 near the top and #eaf4f4 near the bottom, i.e. about
|
|
24
|
-
* three times as far from white at the top as at the bottom.
|
|
25
38
|
*/
|
|
26
39
|
export declare function deriveSpaceTint(seed: string): SidebarSpaceTint;
|
|
40
|
+
/**
|
|
41
|
+
* Build the panel gradient from two colour values.
|
|
42
|
+
*
|
|
43
|
+
* Exported so anything painting the same surface — a window behind a floating
|
|
44
|
+
* card, say — draws the identical curve rather than approximating it with a
|
|
45
|
+
* second set of stops that drifts the first time either is tuned.
|
|
46
|
+
*/
|
|
47
|
+
export declare function spaceWashGradient(from: string, to: string): string;
|
|
27
48
|
/**
|
|
28
49
|
* Resolve a space's `tint` prop to a palette.
|
|
29
50
|
*
|
|
@@ -58,6 +79,30 @@ export declare function spaceIndexOf(spaces: NormalizedSidebarSpace[], id?: stri
|
|
|
58
79
|
* DOM, so re-serializing them would just bloat the attribute.
|
|
59
80
|
*/
|
|
60
81
|
export declare function spaceTintPayload(spaces: NormalizedSidebarSpace[]): SidebarSpaceTint[];
|
|
82
|
+
/**
|
|
83
|
+
* The shape of the wash down the panel, as opposed to its strength.
|
|
84
|
+
*
|
|
85
|
+
* A plain two-stop gradient fades linearly, and Dia's does not. Sampling its
|
|
86
|
+
* panel down a clean column (no rows, no tiles) and normalising the result to
|
|
87
|
+
* 1 at the top and 0 at the bottom, the wash reaches half strength at 35% of
|
|
88
|
+
* the way down — not 50% — and has flattened onto its final value by 85%,
|
|
89
|
+
* holding it through the last sixth.
|
|
90
|
+
*
|
|
91
|
+
* Both facts are expressible as ordinary gradient syntax. `hint` is a CSS
|
|
92
|
+
* colour interpolation hint, whose whole purpose is to say where the midpoint
|
|
93
|
+
* of a transition falls; `end` is simply where the final stop sits, after
|
|
94
|
+
* which the colour is constant.
|
|
95
|
+
*
|
|
96
|
+
* Fitted against 19 sampled points, this halves the mid-panel error nearly
|
|
97
|
+
* seven times over: RMS 0.020 in normalised units against a straight line's
|
|
98
|
+
* 0.137, worst case 0.046 — about one 8-bit step on the span being measured.
|
|
99
|
+
*/
|
|
100
|
+
export declare const spaceWash: {
|
|
101
|
+
/** Where the wash reaches half strength, in percent down the panel. */
|
|
102
|
+
hint: 35;
|
|
103
|
+
/** Where it flattens onto its final value, in percent. */
|
|
104
|
+
end: 85
|
|
105
|
+
};
|
|
61
106
|
/** The four surfaces a space paints, in one appearance. */
|
|
62
107
|
export declare interface SidebarSpaceTintColors {
|
|
63
108
|
from: string
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stacksjs/components",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.2.
|
|
4
|
+
"version": "0.2.207",
|
|
5
5
|
"description": "A modern component library built with STX, featuring headwind utility classes and TypeScript syntax highlighting.",
|
|
6
6
|
"author": "Chris Breuer <chris@stacksjs.org>",
|
|
7
7
|
"license": "MIT",
|
|
@@ -64,8 +64,8 @@
|
|
|
64
64
|
"dependencies": {
|
|
65
65
|
"@iconify-json/f7": "^1.2.2",
|
|
66
66
|
"@cwcss/crosswind": "^0.2.14",
|
|
67
|
-
"@stacksjs/stx": "0.2.
|
|
68
|
-
"bun-plugin-stx": "0.2.
|
|
67
|
+
"@stacksjs/stx": "0.2.207",
|
|
68
|
+
"bun-plugin-stx": "0.2.207",
|
|
69
69
|
"ts-syntax-highlighter": "^0.2.1"
|
|
70
70
|
},
|
|
71
71
|
"devDependencies": {
|
|
@@ -638,10 +638,14 @@ defineExpose({ collapsed, toggle: toggleCollapse, syncRouteSelection })
|
|
|
638
638
|
lightest at the very top, darkest around a third of the way down, then
|
|
639
639
|
lightening again — a bulge rather than a fade.
|
|
640
640
|
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
641
|
+
The stops are not evenly spaced, and that is the point. A two-stop
|
|
642
|
+
gradient fades linearly; Dia's panel reaches half strength 35% of the way
|
|
643
|
+
down and has flattened onto its final value by 85%. `35%` is a colour
|
|
644
|
+
interpolation hint, which exists to say where a transition's midpoint
|
|
645
|
+
falls, and the last stop sits at 85% so the bottom sixth holds steady.
|
|
646
|
+
See `spaceWash` in `spaces.ts` for the measurement these come from — and
|
|
647
|
+
keep the two in step, which `sidebar-space-tint.test.ts` enforces. */
|
|
648
|
+
background: linear-gradient(180deg, var(--stx-space-from) 0%, 35%, var(--stx-space-to) 85%);
|
|
645
649
|
color: var(--stx-space-ink);
|
|
646
650
|
/* Width is listed here because this rule outranks the pane's
|
|
647
651
|
`transition-[width]` utility class and would otherwise drop it. */
|
|
@@ -661,10 +665,12 @@ defineExpose({ collapsed, toggle: toggleCollapse, syncRouteSelection })
|
|
|
661
665
|
--stx-space-to: var(--stx-space-dark-to, #0e0e11);
|
|
662
666
|
--stx-space-ink: var(--stx-space-dark-ink, #ededf0);
|
|
663
667
|
--stx-space-accent: var(--stx-space-dark-accent, #b9b9c2);
|
|
664
|
-
/* Same reasoning as the light rule above: dark already
|
|
665
|
-
at the top, so its sheen was fighting the tint even
|
|
666
|
-
palette was flipped to agree with it.
|
|
667
|
-
|
|
668
|
+
/* Same reasoning, and the same curve, as the light rule above: dark already
|
|
669
|
+
carried its colour at the top, so its sheen was fighting the tint even
|
|
670
|
+
before the light palette was flipped to agree with it. The two
|
|
671
|
+
appearances share the wash shape for the same reason they share its
|
|
672
|
+
strength — a space that fades differently by appearance is two designs. */
|
|
673
|
+
background: linear-gradient(180deg, var(--stx-space-from) 0%, 35%, var(--stx-space-to) 85%);
|
|
668
674
|
}
|
|
669
675
|
}
|
|
670
676
|
|
package/src/ui/sidebar/spaces.ts
CHANGED
|
@@ -173,14 +173,31 @@ function mix(color: string, percent: number, into: string): string {
|
|
|
173
173
|
* Build a full light/dark palette from one seed color.
|
|
174
174
|
*
|
|
175
175
|
* The percentages are the tuning surface of the whole feature, so they are
|
|
176
|
-
* worth stating plainly
|
|
177
|
-
*
|
|
178
|
-
*
|
|
179
|
-
*
|
|
176
|
+
* worth stating plainly, and they are measured rather than guessed. Sampling
|
|
177
|
+
* Dia's sidebar at @2x, clear of its tiles and rows, the panel reads:
|
|
178
|
+
*
|
|
179
|
+
* near the top #c9ddd5 — 43 from white, averaged over RGB
|
|
180
|
+
* a third down #cee0da — 39
|
|
181
|
+
* two thirds down #e2f1ed — 20
|
|
182
|
+
* near the bottom #e9f4f4 — 15
|
|
183
|
+
*
|
|
184
|
+
* For a mix into white the distance from white tracks the percentage almost
|
|
185
|
+
* one-to-one, so those readings are the percentages: 44% at the top falling to
|
|
186
|
+
* 15% at the bottom, a ratio of ~2.9 against Dia's measured 2.95.
|
|
187
|
+
*
|
|
188
|
+
* This is deliberately stronger than the 34%/16% it replaced, which produced a
|
|
189
|
+
* visibly paler panel than the thing it was imitating — 34 from white at the
|
|
190
|
+
* top where Dia is 43, and a ratio of 2.0 where Dia is 2.9, so it was both too
|
|
191
|
+
* faint and too flat. The old note claimed anything stronger would stop the
|
|
192
|
+
* white selection cards reading as raised; Dia disproves that at 43, and the
|
|
193
|
+
* cards still read here (see the contrast assertion in the tests).
|
|
194
|
+
*
|
|
195
|
+
* The ink is the seed pulled almost to black (22% seed) so text keeps a hint of
|
|
180
196
|
* the space's hue without losing contrast. In dark appearance the relationship
|
|
181
197
|
* inverts: the seed is mixed *into* near-black for the panel and *into* white
|
|
182
198
|
* for the ink and accent, which keeps a dark space recognizably the same color
|
|
183
|
-
* as its light counterpart rather than a different one.
|
|
199
|
+
* as its light counterpart rather than a different one. Dark is scaled by the
|
|
200
|
+
* same factor so the two appearances stay in step.
|
|
184
201
|
*
|
|
185
202
|
* `from` is the TOP of the panel and carries the most seed; the wash fades
|
|
186
203
|
* downward. Both appearances agree on that, which is the point — they used to
|
|
@@ -188,28 +205,60 @@ function mix(color: string, percent: number, into: string): string {
|
|
|
188
205
|
* dark ran 26% down to 14%, so the same space put its colour at opposite ends
|
|
189
206
|
* of the panel depending on the system appearance, and a design checked in one
|
|
190
207
|
* mode was wrong in the other.
|
|
191
|
-
*
|
|
192
|
-
* Sampled from Dia's sidebar at @2x for the direction and rough ratio: the
|
|
193
|
-
* panel reads #caded6 near the top and #eaf4f4 near the bottom, i.e. about
|
|
194
|
-
* three times as far from white at the top as at the bottom.
|
|
195
208
|
*/
|
|
196
209
|
export function deriveSpaceTint(seed: string): SidebarSpaceTint {
|
|
197
210
|
return {
|
|
198
211
|
light: {
|
|
199
|
-
from: mix(seed,
|
|
200
|
-
to: mix(seed,
|
|
212
|
+
from: mix(seed, 44, '#ffffff'),
|
|
213
|
+
to: mix(seed, 15, '#ffffff'),
|
|
201
214
|
ink: mix(seed, 22, '#17171b'),
|
|
202
215
|
accent: mix(seed, 88, '#2a2a30'),
|
|
203
216
|
},
|
|
204
217
|
dark: {
|
|
205
|
-
from: mix(seed,
|
|
206
|
-
to: mix(seed,
|
|
218
|
+
from: mix(seed, 34, '#101014'),
|
|
219
|
+
to: mix(seed, 12, '#08080b'),
|
|
207
220
|
ink: mix(seed, 12, '#f4f4f7'),
|
|
208
221
|
accent: mix(seed, 74, '#ffffff'),
|
|
209
222
|
},
|
|
210
223
|
}
|
|
211
224
|
}
|
|
212
225
|
|
|
226
|
+
/**
|
|
227
|
+
* The shape of the wash down the panel, as opposed to its strength.
|
|
228
|
+
*
|
|
229
|
+
* A plain two-stop gradient fades linearly, and Dia's does not. Sampling its
|
|
230
|
+
* panel down a clean column (no rows, no tiles) and normalising the result to
|
|
231
|
+
* 1 at the top and 0 at the bottom, the wash reaches half strength at 35% of
|
|
232
|
+
* the way down — not 50% — and has flattened onto its final value by 85%,
|
|
233
|
+
* holding it through the last sixth.
|
|
234
|
+
*
|
|
235
|
+
* Both facts are expressible as ordinary gradient syntax. `hint` is a CSS
|
|
236
|
+
* colour interpolation hint, whose whole purpose is to say where the midpoint
|
|
237
|
+
* of a transition falls; `end` is simply where the final stop sits, after
|
|
238
|
+
* which the colour is constant.
|
|
239
|
+
*
|
|
240
|
+
* Fitted against 19 sampled points, this halves the mid-panel error nearly
|
|
241
|
+
* seven times over: RMS 0.020 in normalised units against a straight line's
|
|
242
|
+
* 0.137, worst case 0.046 — about one 8-bit step on the span being measured.
|
|
243
|
+
*/
|
|
244
|
+
export const spaceWash = {
|
|
245
|
+
/** Where the wash reaches half strength, in percent down the panel. */
|
|
246
|
+
hint: 35,
|
|
247
|
+
/** Where it flattens onto its final value, in percent. */
|
|
248
|
+
end: 85,
|
|
249
|
+
} as const
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* Build the panel gradient from two colour values.
|
|
253
|
+
*
|
|
254
|
+
* Exported so anything painting the same surface — a window behind a floating
|
|
255
|
+
* card, say — draws the identical curve rather than approximating it with a
|
|
256
|
+
* second set of stops that drifts the first time either is tuned.
|
|
257
|
+
*/
|
|
258
|
+
export function spaceWashGradient(from: string, to: string): string {
|
|
259
|
+
return `linear-gradient(180deg, ${from} 0%, ${spaceWash.hint}%, ${to} ${spaceWash.end}%)`
|
|
260
|
+
}
|
|
261
|
+
|
|
213
262
|
/**
|
|
214
263
|
* Resolve a space's `tint` prop to a palette.
|
|
215
264
|
*
|