@stacksjs/components 0.2.260 → 0.2.262

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.
@@ -0,0 +1,261 @@
1
+ <script server>
2
+ export const open = $props.open ?? false
3
+ export const position = $props.position || 'right'
4
+ export const title = $props.title || ''
5
+ export const className = $props.className || ''
6
+
7
+ /*
8
+ * The surface, left to the app.
9
+ *
10
+ * The panel painted itself `bg-white dark:bg-blue-gray-800` and offered no way
11
+ * to say otherwise, so a drawer in an app with its own palette arrived as a
12
+ * white rectangle with the app's colours inside it - the one element on the
13
+ * screen that belongs to no theme. `className` did not help: it lands on the
14
+ * positioned wrapper, which is transparent, while the colour is on the
15
+ * scrolling container within.
16
+ *
17
+ * `panelStyle` rather than only a class because an app whose palette lives in
18
+ * CSS variables has nothing to name in a utility class.
19
+ */
20
+ export const panelClass = $props.panelClass || ''
21
+ export const panelStyle = $props.panelStyle || ''
22
+ export const backdropClass = $props.backdropClass || 'bg-gray-500/75 dark:bg-gray-900/75'
23
+
24
+ const positionClasses = {
25
+ right: 'inset-y-0 right-0 pl-10 sm:pl-16',
26
+ left: 'inset-y-0 left-0 pr-10 sm:pr-16',
27
+ top: 'inset-x-0 top-0 pb-10',
28
+ bottom: 'inset-x-0 bottom-0 pt-10',
29
+ }
30
+
31
+ // `size` widens a side drawer without the app having to know that the width
32
+ // lives on the wrapper rather than the panel. Ignored for top/bottom, which
33
+ // are constrained by height instead.
34
+ const width = $props.size ? `max-w-${$props.size}` : 'max-w-md'
35
+
36
+ const sizeClasses = {
37
+ right: `${width} w-screen`,
38
+ left: `${width} w-screen`,
39
+ top: 'max-h-[90vh] w-full',
40
+ bottom: 'max-h-[90vh] w-full',
41
+ }
42
+
43
+ const closeButtonPosition = {
44
+ right: 'left-0 -ml-8 sm:-ml-10',
45
+ left: 'right-0 -mr-8 sm:-mr-10',
46
+ top: 'right-0 -mr-8',
47
+ bottom: 'right-0 -mr-8',
48
+ }
49
+
50
+ export const containerClasses = `pointer-events-none fixed ${positionClasses[position]} flex max-w-full`.trim()
51
+ export const panelClasses = `pointer-events-auto relative ${sizeClasses[position]} ${className}`.trim()
52
+ export const closeButtonClasses = `absolute top-0 ${closeButtonPosition[position]} flex pt-4 pr-2 sm:pr-4`.trim()
53
+ </script>
54
+
55
+ <script client>
56
+ const emit = defineEmits()
57
+ // useReactiveProp lets the parent drive `open` via signals
58
+ // (`:open="drawerOpen()"`) instead of the prop being captured once.
59
+ // See stacksjs/stx#1704.
60
+ const isOpen = useReactiveProp('open', {{ open }})
61
+
62
+ function close() {
63
+ isOpen.set(false)
64
+ emit('close')
65
+ }
66
+
67
+ function onBackdropClick() {
68
+ close()
69
+ }
70
+
71
+ function onPanelKey(event) {
72
+ if (event.key === 'Escape') close()
73
+ }
74
+
75
+ /*
76
+ * Escape closes it from anywhere, not just from inside the panel.
77
+ *
78
+ * The keydown handler on the panel only fires when focus is already in it, and
79
+ * opening a drawer does not move focus - so the very first Escape, pressed
80
+ * while focus is still on whatever opened it, did nothing. Bound on the
81
+ * document instead, and only while open.
82
+ */
83
+ function onDocumentKey(event) {
84
+ if (event.key === 'Escape' && isOpen()) close()
85
+ }
86
+
87
+ /*
88
+ * Hold the page still behind the drawer.
89
+ *
90
+ * Without this the page scrolls under an open drawer, which on a phone means a
91
+ * drag inside the cart scrolls the restaurant behind it and the cart stays
92
+ * put. The scrollbar's width is replaced as padding so the page does not jump
93
+ * sideways when it disappears.
94
+ */
95
+ let restoreScroll = null
96
+
97
+ function lockScroll() {
98
+ if (restoreScroll) return
99
+
100
+ const gap = window.innerWidth - document.documentElement.clientWidth
101
+ const previous = { overflow: document.body.style.overflow, paddingRight: document.body.style.paddingRight }
102
+
103
+ document.body.style.overflow = 'hidden'
104
+ if (gap > 0) document.body.style.paddingRight = `${gap}px`
105
+
106
+ restoreScroll = () => {
107
+ document.body.style.overflow = previous.overflow
108
+ document.body.style.paddingRight = previous.paddingRight
109
+ restoreScroll = null
110
+ }
111
+ }
112
+
113
+ function unlockScroll() {
114
+ if (restoreScroll) restoreScroll()
115
+ }
116
+
117
+ /*
118
+ * Focus moves in on open and back on close.
119
+ *
120
+ * A drawer that leaves focus behind is unreachable by keyboard: Tab walks the
121
+ * page underneath it, and a screen reader never learns anything opened. Focus
122
+ * returns to whatever opened it on the way out, so closing does not dump the
123
+ * user at the top of the document.
124
+ */
125
+ let opener = null
126
+
127
+ /*
128
+ * Retried across frames, because focus is refused before the panel is shown.
129
+ *
130
+ * `:show` toggles the drawer's display, and that has not happened yet on the
131
+ * frame the effect runs: `focus()` on a `display: none` element is a silent
132
+ * no-op, so a single attempt left focus on the body every time. Nothing
133
+ * throws, and the drawer looks right - it is only unreachable by keyboard.
134
+ *
135
+ * So the attempt repeats until `document.activeElement` proves it landed,
136
+ * rather than assuming any one frame is late enough. Bounded, so a panel with
137
+ * nothing focusable in it cannot spin; the panel itself carries `tabindex=-1`
138
+ * and takes focus in that case. It also stops if the drawer closed in the
139
+ * meantime, so a drawer opened and shut inside those few frames does not
140
+ * pull focus back afterwards.
141
+ */
142
+ function focusFirst(attempts) {
143
+ if (!isOpen()) return
144
+
145
+ const panel = document.querySelector('[data-stx-drawer-panel]')
146
+ if (!panel) return
147
+
148
+ const target = panel.querySelector('[autofocus]') || panel.querySelector('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])') || panel
149
+
150
+ target.focus?.()
151
+
152
+ if (document.activeElement === target) return
153
+ if (attempts > 0) requestAnimationFrame(() => focusFirst(attempts - 1))
154
+ }
155
+
156
+ function captureFocus() {
157
+ opener = document.activeElement
158
+
159
+ requestAnimationFrame(() => focusFirst(10))
160
+ }
161
+
162
+ function releaseFocus() {
163
+ const target = opener
164
+ opener = null
165
+ if (target && typeof target.focus === 'function') target.focus()
166
+ }
167
+
168
+ effect(() => {
169
+ if (isOpen()) {
170
+ lockScroll()
171
+ captureFocus()
172
+ document.addEventListener('keydown', onDocumentKey)
173
+ }
174
+ else {
175
+ unlockScroll()
176
+ releaseFocus()
177
+ document.removeEventListener('keydown', onDocumentKey)
178
+ }
179
+ })
180
+
181
+ onDestroy(() => {
182
+ // A drawer removed while open would otherwise leave the page locked, with no
183
+ // drawer left to unlock it.
184
+ unlockScroll()
185
+ document.removeEventListener('keydown', onDocumentKey)
186
+ })
187
+
188
+ defineExpose({
189
+ open: () => isOpen.set(true),
190
+ close,
191
+ isOpen,
192
+ })
193
+ </script>
194
+
195
+ <div :show="isOpen()">
196
+ <div
197
+ class="fixed inset-0 z-50 {{ backdropClass }} transition-opacity duration-500"
198
+ style="animation: fadeIn 0.5s ease-in-out"
199
+ aria-hidden="true"
200
+ @click="onBackdropClick()"
201
+ ></div>
202
+
203
+ <div class="fixed inset-0 z-50 overflow-hidden" @keydown="onPanelKey($event)">
204
+ <div class="absolute inset-0 overflow-hidden">
205
+ <div class="{{ containerClasses }}">
206
+ <div
207
+ class="{{ panelClasses }}"
208
+ style="animation: slideIn 0.5s ease-in-out"
209
+ data-stx-drawer-panel
210
+ role="dialog"
211
+ aria-modal="true"
212
+ {{ title ? 'aria-label="' + title + '"' : '' }}
213
+ tabindex="-1"
214
+ >
215
+ <div class="{{ closeButtonClasses }}">
216
+ <button
217
+ type="button"
218
+ class="relative rounded-md text-gray-300 dark:text-gray-400 hover:text-white dark:hover:text-white focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
219
+ @click="close()"
220
+ >
221
+ <span class="absolute -inset-2.5"></span>
222
+ <span class="sr-only">Close panel</span>
223
+ <svg class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true">
224
+ <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12" />
225
+ </svg>
226
+ </button>
227
+ </div>
228
+
229
+ <div class="relative flex h-full flex-col overflow-y-auto {{ panelClass || 'bg-white dark:bg-blue-gray-800' }} py-6 shadow-xl" style="{{ panelStyle }}">
230
+ @if(title)
231
+ <div class="px-4 sm:px-6">
232
+ <h2 class="text-base font-semibold text-fg">
233
+ {{ title }}
234
+ </h2>
235
+ </div>
236
+ @endif
237
+ <div class="relative mt-6 flex-1 px-4 sm:px-6">
238
+ <slot />
239
+ </div>
240
+ </div>
241
+ </div>
242
+ </div>
243
+ </div>
244
+ </div>
245
+ </div>
246
+
247
+ <style>
248
+ @keyframes fadeIn {
249
+ from { opacity: 0; }
250
+ to { opacity: 1; }
251
+ }
252
+
253
+ @keyframes slideIn {
254
+ from {
255
+ transform: {{ position === 'right' ? 'translateX(100%)' : position === 'left' ? 'translateX(-100%)' : position === 'top' ? 'translateY(-100%)' : 'translateY(100%)' }};
256
+ }
257
+ to {
258
+ transform: translate(0, 0);
259
+ }
260
+ }
261
+ </style>
package/dist/index.js CHANGED
@@ -1,19 +1,19 @@
1
1
  // @bun
2
2
  var be={__stx:!0,src:"./components/CodeBlock.stx"};var ge={__stx:!0,src:"./components/Footer.stx"};var xe={__stx:!0,src:"./components/Hero.stx"};var me={__stx:!0,src:"./components/Installation.stx"};function hi(e){let{code:t,onSuccess:s,onError:a,timeout:o=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},o)}catch(d){let h=d instanceof Error?d:Error("Failed to copy code");a?.(h),console.error("Failed to copy code:",h)}},reset:()=>{if(i=!1,r)clearTimeout(r),r=null}}}async function fi(e){try{return await navigator.clipboard.writeText(e),!0}catch(t){return console.error("Failed to copy to clipboard:",t),!1}}function ve(){if(typeof window>"u")return"light";return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function Q(e){return e==="system"?ve():e}function gi(e={}){let{storageKey:t="theme",defaultTheme:s="system"}=e,a=s;if(typeof window<"u"&&typeof localStorage<"u"){let c=localStorage.getItem(t);if(c)a=c}let o=Q(a)==="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)=>{a=c,i(c)},n=()=>{let d=Q(a)==="dark"?"light":"dark";r(d)};if(i(a),typeof window<"u"&&a==="system")window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",(c)=>{if(a==="system")i("system")});return{isDark:o,theme:a,toggle:n,setTheme:r}}function we(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 a=s?"property":"name",o=document.querySelector(`meta[${a}="${e}"]`);if(!o)o=document.createElement("meta"),o.setAttribute(a,e),document.head.appendChild(o);o.setAttribute("content",t)}function ye(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 mi(e){let{title:t,description:s,author:a,keywords:o,ogImage:i,ogImageWidth:r,ogImageHeight:n,twitterCard:c="summary_large_image",twitterSite:d,twitterCreator:h,canonical:p}=e;if(t)we(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(a)S("author",a);if(o&&o.length>0)S("keywords",o.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(h)S("twitter:creator",h);if(p)ye("canonical",p);if(S("og:type","website",!0),typeof window<"u")S("og:url",window.location.href,!0)}function vi(e){let t=[],{title:s,description:a,author:o,keywords:i,ogImage:r,ogImageWidth:n,ogImageHeight:c,twitterCard:d="summary_large_image",twitterSite:h,twitterCreator:p,canonical:g}=e;if(s)t.push(`<title>${T(s)}</title>`),t.push(`<meta property="og:title" content="${T(s)}" />`),t.push(`<meta name="twitter:title" content="${T(s)}" />`);if(a)t.push(`<meta name="description" content="${T(a)}" />`),t.push(`<meta property="og:description" content="${T(a)}" />`),t.push(`<meta name="twitter:description" content="${T(a)}" />`);if(o)t.push(`<meta name="author" content="${T(o)}" />`);if(i&&i.length>0)t.push(`<meta name="keywords" content="${T(i.join(", "))}" />`);if(r)t.push(`<meta property="og:image" content="${T(r)}" />`),t.push(`<meta name="twitter:image" content="${T(r)}" />`);if(n)t.push(`<meta property="og:image:width" content="${T(n)}" />`);if(c)t.push(`<meta property="og:image:height" content="${T(c)}" />`);if(t.push(`<meta name="twitter:card" content="${T(d)}" />`),h)t.push(`<meta name="twitter:site" content="${T(h)}" />`);if(p)t.push(`<meta name="twitter:creator" content="${T(p)}" />`);if(g)t.push(`<link rel="canonical" href="${T(g)}" />`);return t.push('<meta property="og:type" content="website" />'),t.join(`
3
- `)}function T(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}function yi(e,t,s={}){let{enabled:a=!0,ignore:o=[]}=s,i=(r)=>{if(!a||!e)return;let n=r.target;if(!e.contains(n)){if(!o.some((d)=>{let h=document.querySelectorAll(d);return Array.from(h).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 $i(e,t={}){let{enabled:s=!0,initialFocus:a=null,returnFocus:o=!0,fallbackFocus:i=null}=t,r=null,n=!1;function c(){if(!e)return[];let f=["a[href]","button:not([disabled])","textarea:not([disabled])","input:not([disabled])","select:not([disabled])",'[tabindex]:not([tabindex="-1"])'].join(",");return Array.from(e.querySelectorAll(f))}function d(f){if(!s||!n||!e)return;let w=c();if(w.length===0){f.preventDefault();return}let v=w[0],k=w[w.length-1];if(f.shiftKey){if(document.activeElement===v||document.activeElement===e)f.preventDefault(),k.focus()}else if(document.activeElement===k)f.preventDefault(),v.focus()}function h(f){if(f.key==="Escape"&&s&&n)g()}function p(){if(!s||!e||n)return;if(r=document.activeElement,a)a.focus();else{let f=c();if(f.length>0)f[0].focus();else if(i)i.focus();else e.focus()}document.addEventListener("keydown",d),document.addEventListener("keydown",h),n=!0}function g(){if(!n)return;if(document.removeEventListener("keydown",d),document.removeEventListener("keydown",h),o&&r)r.focus();n=!1}return{activate:p,deactivate:g}}function Si(e,t={}){let{enabled:s=!0,preventDefault:a=!0,stopPropagation:o=!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(a)c.preventDefault();if(o)c.stopPropagation();d.handler(c)})};if(i)i.addEventListener("keydown",n);return()=>{if(i)i.removeEventListener("keydown",n)}}var Ti={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 Ai(e,t,s={}){let{serializer:a=JSON.stringify,deserializer:o=JSON.parse,onError:i=console.error}=s,r=t;try{if(typeof window<"u"){let p=window.localStorage.getItem(e);if(p!==null)r=o(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,a(g));c.forEach((f)=>f(g))}catch(g){i(g)}}function h(){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 f=o(g.newValue);n=f,c.forEach((w)=>w(f))}catch(f){i(f)}else if(g.key===e&&g.newValue===null)n=t,c.forEach((f)=>f(t))};window.addEventListener("storage",p)}return{value:n,setValue:d,removeValue:h}}function R(e,t={}){let{defaultValue:s=!1}=t,a=s,o=null;if(typeof window<"u"&&"matchMedia"in window){o=window.matchMedia(e),a=o.matches;let r=(n)=>{a=n.matches};if(o.addEventListener)o.addEventListener("change",r);else o.addListener(r)}function i(){if(o)a=o.matches}return{matches:a,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 Di(e){return R(q[e])}function Pi(){return R(q.mobile)}function Li(){return R(q.desktop)}function zi(){return R(q.dark)}function Ei(){return R(q.reducedMotion)}var re=["gray","neutral","slate","zinc","red","green","yellow","blue","indigo"],Mi="--stx-color";function Ce(e,t){return t===void 0?`var(${e})`:`var(${e}, ${t})`}function Ri(e={}){let t={};for(let s of re){let a=e[s];if(!a||typeof a==="string")continue;let o={};for(let[i,r]of Object.entries(a))o[i]=Ce(`--stx-color-${s}-${i}`,r);t[s]=o}return t}function qi(e={}){let t=[];for(let s of re){let a=e[s];if(!a||typeof a==="string")continue;for(let o of Object.keys(a))t.push(`--stx-color-${s}-${o}`)}return t}var ke="./Accordion-8tv78bh9.stx";var Te="./AccordionItem-7bd3ga36.stx";var Ae="./Audio-y0sgq50z.stx";var De="./Login-2cp65d41.stx";var Le="./Signup-cbncrtvd.stx";var Ee="./TwoFactorChallenge-y7n4yrk9.stx";var Me="./Avatar-rjvwnskf.stx";var qe="./Badge-k52qmxcm.stx";var je="./Breadcrumb-sy5taqsn.stx";import B from"process";var He="https://stacksjs.com/components";class N extends Error{component;context;constructor(e,t,s={}){let a=N.formatMessage(e,t,s);super(a);if(this.name="ComponentError",this.component=e,this.context={component:e,...s},Error.captureStackTrace)Error.captureStackTrace(this,N)}static formatMessage(e,t,s){let a=`[${e}] ${t}`;if(s.prop)a+=`
3
+ `)}function T(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}function yi(e,t,s={}){let{enabled:a=!0,ignore:o=[]}=s,i=(r)=>{if(!a||!e)return;let n=r.target;if(!e.contains(n)){if(!o.some((d)=>{let h=document.querySelectorAll(d);return Array.from(h).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 $i(e,t={}){let{enabled:s=!0,initialFocus:a=null,returnFocus:o=!0,fallbackFocus:i=null}=t,r=null,n=!1;function c(){if(!e)return[];let f=["a[href]","button:not([disabled])","textarea:not([disabled])","input:not([disabled])","select:not([disabled])",'[tabindex]:not([tabindex="-1"])'].join(",");return Array.from(e.querySelectorAll(f))}function d(f){if(!s||!n||!e)return;let w=c();if(w.length===0){f.preventDefault();return}let v=w[0],k=w[w.length-1];if(f.shiftKey){if(document.activeElement===v||document.activeElement===e)f.preventDefault(),k.focus()}else if(document.activeElement===k)f.preventDefault(),v.focus()}function h(f){if(f.key==="Escape"&&s&&n)g()}function p(){if(!s||!e||n)return;if(r=document.activeElement,a)a.focus();else{let f=c();if(f.length>0)f[0].focus();else if(i)i.focus();else e.focus()}document.addEventListener("keydown",d),document.addEventListener("keydown",h),n=!0}function g(){if(!n)return;if(document.removeEventListener("keydown",d),document.removeEventListener("keydown",h),o&&r)r.focus();n=!1}return{activate:p,deactivate:g}}function Si(e,t={}){let{enabled:s=!0,preventDefault:a=!0,stopPropagation:o=!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(a)c.preventDefault();if(o)c.stopPropagation();d.handler(c)})};if(i)i.addEventListener("keydown",n);return()=>{if(i)i.removeEventListener("keydown",n)}}var Ti={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 Ai(e,t,s={}){let{serializer:a=JSON.stringify,deserializer:o=JSON.parse,onError:i=console.error}=s,r=t;try{if(typeof window<"u"){let p=window.localStorage.getItem(e);if(p!==null)r=o(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,a(g));c.forEach((f)=>f(g))}catch(g){i(g)}}function h(){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 f=o(g.newValue);n=f,c.forEach((w)=>w(f))}catch(f){i(f)}else if(g.key===e&&g.newValue===null)n=t,c.forEach((f)=>f(t))};window.addEventListener("storage",p)}return{value:n,setValue:d,removeValue:h}}function R(e,t={}){let{defaultValue:s=!1}=t,a=s,o=null;if(typeof window<"u"&&"matchMedia"in window){o=window.matchMedia(e),a=o.matches;let r=(n)=>{a=n.matches};if(o.addEventListener)o.addEventListener("change",r);else o.addListener(r)}function i(){if(o)a=o.matches}return{matches:a,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 Di(e){return R(q[e])}function Pi(){return R(q.mobile)}function Li(){return R(q.desktop)}function zi(){return R(q.dark)}function Ei(){return R(q.reducedMotion)}var re=["gray","neutral","slate","zinc","red","green","yellow","blue","indigo"],Mi="--stx-color";function Ce(e,t){return t===void 0?`var(${e})`:`var(${e}, ${t})`}function Ri(e={}){let t={};for(let s of re){let a=e[s];if(!a||typeof a==="string")continue;let o={};for(let[i,r]of Object.entries(a))o[i]=Ce(`--stx-color-${s}-${i}`,r);t[s]=o}return t}function qi(e={}){let t=[];for(let s of re){let a=e[s];if(!a||typeof a==="string")continue;for(let o of Object.keys(a))t.push(`--stx-color-${s}-${o}`)}return t}var ke="./Accordion-8tv78bh9.stx";var Te="./AccordionItem-7bd3ga36.stx";var Ae="./Audio-y0sgq50z.stx";var De="./Login-2cp65d41.stx";var Le="./Signup-cbncrtvd.stx";var Ee="./TwoFactorChallenge-y7n4yrk9.stx";var Me="./Avatar-rjvwnskf.stx";var qe="./Badge-k52qmxcm.stx";var je="./Breadcrumb-sy5taqsn.stx";import B from"process";var We="https://stacksjs.com/components";class N extends Error{component;context;constructor(e,t,s={}){let a=N.formatMessage(e,t,s);super(a);if(this.name="ComponentError",this.component=e,this.context={component:e,...s},Error.captureStackTrace)Error.captureStackTrace(this,N)}static formatMessage(e,t,s){let a=`[${e}] ${t}`;if(s.prop)a+=`
4
4
  Prop: "${s.prop}"`;if(s.received!==void 0)a+=`
5
5
  Received: ${JSON.stringify(s.received)}`;if(s.expected!==void 0){let o=Array.isArray(s.expected)?s.expected.map((i)=>JSON.stringify(i)).join(", "):JSON.stringify(s.expected);a+=`
6
6
  Expected: ${o}`}if(s.details)a+=`
7
7
  Details: ${s.details}`;if(s.docsUrl)a+=`
8
8
  Documentation: ${s.docsUrl}`;else if(e)a+=`
9
- Documentation: ${He}/${e.toLowerCase()}`;return a}toJSON(){return{name:this.name,message:this.message,component:this.component,context:this.context,stack:this.stack}}}var M={invalidProp(e,t,s,a){return new N(e,`Invalid prop value for "${t}"`,{prop:t,received:s,expected:a,details:Array.isArray(a)?`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,a){return new N(e,`Invalid type for prop "${t}"`,{prop:t,received:typeof s,expected:a,details:`Expected "${t}" to be of type ${a}, 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})}},W=null;function pr(e){W=e}function ur(){W=null}function V(e,t={}){let{throwError:s=!0,logError:a=!0}=t;if(a&&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(W)try{W(e)}catch(o){console.error("Error in error handler:",o)}if(s)throw e}function ne(e,t,s){return(...a)=>{try{let o=e(...a);if(o instanceof Promise)return o.catch((i)=>{let r=M.eventHandler(t,s,i);throw V(r,{throwError:!1}),r});return o}catch(o){let i=M.eventHandler(t,s,o);throw V(i,{throwError:!1}),i}}}function We(e,t){if(!e)throw t}function Ve(e,t,s={}){if(B.env.NODE_ENV==="production")return;let a=N.formatMessage(e,t,s);console.warn(`\u26A0\uFE0F ${a}`)}function hr(e,t){if(B.env.NODE_ENV==="production")return;We(e,t)}function fr(e){let t=typeof B<"u"&&B.env.DEBUG==="true";return{log(...s){if(t)console.log(`[${e}]`,...s)},warn(s,a){Ve(e,s,a)},error(s,a){let o=new N(e,s,a);V(o,{throwError:!1})}}}function br(e,t,s){try{return t()}catch(a){let o=M.render(e,a);return V(o,{throwError:!1}),s}}import _e from"process";var _=_e.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,a)=>`Invalid prop \`${s}\` of value \`${t}\` supplied to \`${a}\`, expected one of [${e.map((o)=>JSON.stringify(o)).join(", ")}].`)},oneOfType(e){return new $((t,s,a)=>e.some((o)=>o.validate(t,s,a)),(t,s,a)=>`Invalid prop \`${s}\` supplied to \`${a}\`, expected one of the specified types.`)},arrayOf(e){return new $((t,s,a)=>{if(!Array.isArray(t))return!1;return t.every((o,i)=>e.validate(o,`${s}[${i}]`,a))},(t,s,a)=>`Invalid prop \`${s}\` supplied to \`${a}\`, expected array of specified type.`)},shape(e){return new $((t,s,a)=>{if(typeof t!=="object"||t===null||Array.isArray(t))return!1;for(let[o,i]of Object.entries(e)){if(i.isRequired&&!(o in t))return!1;if(o in t&&!i.validate(t[o],`${s}.${o}`,a))return!1}return!0},(t,s,a)=>`Invalid prop \`${s}\` supplied to \`${a}\`, expected object matching specified shape.`)},instanceOf(e){return new $((t)=>t instanceof e,(t,s,a)=>`Invalid prop \`${s}\` supplied to \`${a}\`, 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,a)=>`Invalid prop \`${s}\` of value \`${t}\` supplied to \`${a}\`, expected value >= ${e}.`)},max(e){return new $((t)=>typeof t==="number"&&t<=e,(t,s,a)=>`Invalid prop \`${s}\` of value \`${t}\` supplied to \`${a}\`, expected value <= ${e}.`)},range(e,t){return new $((s)=>typeof s==="number"&&s>=e&&s<=t,(s,a,o)=>`Invalid prop \`${a}\` of value \`${s}\` supplied to \`${o}\`, expected value between ${e} and ${t}.`)},pattern(e){return new $((t)=>typeof t==="string"&&e.test(t),(t,s,a)=>`Invalid prop \`${s}\` of value \`${t}\` supplied to \`${a}\`, 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 Fe(e,t,s,a={}){let{throwOnError:o=!1,logWarnings:i=_}=a,r=[];if(!_)return{valid:!0,errors:[]};for(let[n,c]of Object.entries(s)){let d=t[n],h=d===void 0;if(c.isRequired&&h){let p=`Required prop \`${n}\` was not specified in \`${e}\`.`;r.push(p);continue}if(h)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(o)throw Error(`Prop validation failed for \`${e}\`:
9
+ Documentation: ${We}/${e.toLowerCase()}`;return a}toJSON(){return{name:this.name,message:this.message,component:this.component,context:this.context,stack:this.stack}}}var M={invalidProp(e,t,s,a){return new N(e,`Invalid prop value for "${t}"`,{prop:t,received:s,expected:a,details:Array.isArray(a)?`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,a){return new N(e,`Invalid type for prop "${t}"`,{prop:t,received:typeof s,expected:a,details:`Expected "${t}" to be of type ${a}, 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})}},H=null;function pr(e){H=e}function ur(){H=null}function V(e,t={}){let{throwError:s=!0,logError:a=!0}=t;if(a&&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(H)try{H(e)}catch(o){console.error("Error in error handler:",o)}if(s)throw e}function ne(e,t,s){return(...a)=>{try{let o=e(...a);if(o instanceof Promise)return o.catch((i)=>{let r=M.eventHandler(t,s,i);throw V(r,{throwError:!1}),r});return o}catch(o){let i=M.eventHandler(t,s,o);throw V(i,{throwError:!1}),i}}}function He(e,t){if(!e)throw t}function Ve(e,t,s={}){if(B.env.NODE_ENV==="production")return;let a=N.formatMessage(e,t,s);console.warn(`\u26A0\uFE0F ${a}`)}function hr(e,t){if(B.env.NODE_ENV==="production")return;He(e,t)}function fr(e){let t=typeof B<"u"&&B.env.DEBUG==="true";return{log(...s){if(t)console.log(`[${e}]`,...s)},warn(s,a){Ve(e,s,a)},error(s,a){let o=new N(e,s,a);V(o,{throwError:!1})}}}function br(e,t,s){try{return t()}catch(a){let o=M.render(e,a);return V(o,{throwError:!1}),s}}import Fe from"process";var F=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,a)=>`Invalid prop \`${s}\` of value \`${t}\` supplied to \`${a}\`, expected one of [${e.map((o)=>JSON.stringify(o)).join(", ")}].`)},oneOfType(e){return new $((t,s,a)=>e.some((o)=>o.validate(t,s,a)),(t,s,a)=>`Invalid prop \`${s}\` supplied to \`${a}\`, expected one of the specified types.`)},arrayOf(e){return new $((t,s,a)=>{if(!Array.isArray(t))return!1;return t.every((o,i)=>e.validate(o,`${s}[${i}]`,a))},(t,s,a)=>`Invalid prop \`${s}\` supplied to \`${a}\`, expected array of specified type.`)},shape(e){return new $((t,s,a)=>{if(typeof t!=="object"||t===null||Array.isArray(t))return!1;for(let[o,i]of Object.entries(e)){if(i.isRequired&&!(o in t))return!1;if(o in t&&!i.validate(t[o],`${s}.${o}`,a))return!1}return!0},(t,s,a)=>`Invalid prop \`${s}\` supplied to \`${a}\`, expected object matching specified shape.`)},instanceOf(e){return new $((t)=>t instanceof e,(t,s,a)=>`Invalid prop \`${s}\` supplied to \`${a}\`, 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,a)=>`Invalid prop \`${s}\` of value \`${t}\` supplied to \`${a}\`, expected value >= ${e}.`)},max(e){return new $((t)=>typeof t==="number"&&t<=e,(t,s,a)=>`Invalid prop \`${s}\` of value \`${t}\` supplied to \`${a}\`, expected value <= ${e}.`)},range(e,t){return new $((s)=>typeof s==="number"&&s>=e&&s<=t,(s,a,o)=>`Invalid prop \`${a}\` of value \`${s}\` supplied to \`${o}\`, expected value between ${e} and ${t}.`)},pattern(e){return new $((t)=>typeof t==="string"&&e.test(t),(t,s,a)=>`Invalid prop \`${s}\` of value \`${t}\` supplied to \`${a}\`, 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 _e(e,t,s,a={}){let{throwOnError:o=!1,logWarnings:i=F}=a,r=[];if(!F)return{valid:!0,errors:[]};for(let[n,c]of Object.entries(s)){let d=t[n],h=d===void 0;if(c.isRequired&&h){let p=`Required prop \`${n}\` was not specified in \`${e}\`.`;r.push(p);continue}if(h)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(o)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(a)=>Fe(e,a,t,s)}function mr(e,t,s="value"){if(!_)return;if(!t.validate(e,s,"assertion"))throw Error(t.message(e,s,"assertion"))}function vr(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},kr=D("Button",Ue);function Sr(e){return ne(e,"Button","onClick")}function Tr(e){if(e&&!["primary","secondary","outline","ghost","danger"].includes(e))throw M.invalidProp("Button","variant",e,["primary","secondary","outline","ghost","danger"])}function Nr(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 ot="./ComboboxButton-g76stp1e.stx";var rt="./ComboboxInput-z1293bbh.stx";var lt="./ComboboxOption-6yh7xk7q.stx";var dt="./ComboboxOptions-sq5360ae.stx";var ut="./CommandPalette-36mxf05w.stx";var ft="./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 Tt="./Drawer-jgepqr9j.stx";var At="./Dropdown-vvhemtc0.stx";var Dt="./DropdownButton-wcz67dxy.stx";var Lt="./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},Nn=D("Form",Rt);var Bt="./Image-4ezne2xj.stx";var Ht="./EmailInput-vak3kkmk.stx";var Vt="./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},Bn=D("TextInput",Xt),jn=D("EmailInput",Jt),Hn=D("PasswordInput",Qt),Wn=D("NumberInput",Zt),Vn=D("SearchInput",es);var ss="./Listbox-q49tnr90.stx";var os="./ListboxButton-keb8gm0q.stx";var rs="./ListboxLabel-7mymt1b8.stx";var ls="./ListboxOption-4j070101.stx";var ds="./ListboxOptions-ejkatcfg.stx";var us="./FilterChip-h896vrxm.stx";var fs="./FilterChips-7pnzycfd.stx";var gs="./ListRow-v45ymhcn.stx";var ms="./NavBar-wcb6f2d3.stx";var ws="./SectionCard-r73hvvbc.stx";var Cs="./TabBar-8143650x.stx";var ks="./TabBarItem-hd2r2ayy.stx";var Ts="./Navigator-smpa7my4.stx";var As="./Notification-03vfh3k6.stx";var Ds="./Pagination-jbcjrfcs.stx";var Ls="./Checkout-22wh3s22.stx";var Es="./DefaultPaymentMethod-6qrem3sg.stx";var Ms="./PaymentMethods-2xy66bwk.stx";var qs="./SubscriptionCheckout-7fdkwf04.stx";var js="./Popover-et2q44m7.stx";var Ws="./PopoverButton-mffzc9pr.stx";var _s="./PopoverPanel-054yh38h.stx";var Ks="./Portal-1vf14s4x.stx";var Us="./Progress-4h7dytq5.stx";var Js="./Radio-ccm07b2m.stx";var Zs="./RadioGroup-eerw9gq7.stx";var ea="./RadioGroupDescription-z34r9avr.stx";var sa="./RadioGroupLabel-7mymt1b8.stx";var oa="./RadioGroupOption-7pq7rw84.stx";var ra="./Select-zt72gg1e.stx";var la="./Sidebar-dbwp6rnk.stx";var da="./SidebarFooter-s7skj92y.stx";var ua="./SidebarHeader-3dppxxjh.stx";var fa="./SidebarItem-5v8atp7p.stx";var ga="./SidebarPinned-48kyk193.stx";var ma="./SidebarSection-sqz49ary.stx";var wa="./SidebarSpace-nmbvgrky.stx";var Ca="./SidebarSpaces-h1564zm6.stx";var ka="./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}},Sa={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}},Ta={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}},Na={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-[16px] 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}},Aa={...O,pane:"bg-stone-100 dark:bg-neutral-900 text-black dark:text-white select-none",layers:{}},Ia={...O,pane:"bg-transparent text-black dark:text-white select-none",layers:{}},Da={...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:Na,workspace:Sa,desktop:Ta,solid:Aa,transparent:Ia,vibrancy:Da};function $c(e){return le[e||"macos"]||le.macos}function kc(e){if(!e)return;return F[e]||e}var Pa=F.gray;function z(e,t,s){return`color-mix(in oklab, ${e} ${t}%, ${s})`}function ce(e){return{light:{from:z(e,35,"#ffffff"),to:z(e,12.5,"#ffffff"),ink:z(e,22,"#17171b"),accent:z(e,88,"#2a2a30")},dark:{from:z(e,27,"#101014"),to:z(e,10,"#08080b"),ink:z(e,12,"#f4f4f7"),accent:z(e,74,"#ffffff")}}}function Nc(e,t){return`linear-gradient(180deg, ${e} 0%, ${t} 100%)`}function La(e){if(!e)return ce(Pa);if(typeof e!=="string")return e;return ce(F[e]||e)}function za(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,a){if(!e||!e.label)return null;return{id:e.id||`${t}-${s}`,label:e.label,icon:e.icon||a}}function Ea(e){let t=La(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:za(t),deferred:e.deferred===!0,showTitle:e.showTitle??!0}}function Ac(e){return(e||[]).map(Ea)}function Ic(e,t){if(!t)return 0;let s=e.findIndex((a)=>a.id===t);return s===-1?0:s}function Dc(e){return e.map((t)=>t.tint)}var Ma="./Skeleton-wtwb97xd.stx";var qa="./Spinner-ypya5tt2.stx";var ja="./Stepper-rgbk76hd.stx";var Wa="./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 a=e.oldValue?JSON.parse(e.oldValue).value:null,o=e.newValue?JSON.parse(e.newValue).value:null;s.forEach((i)=>i(o,a,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 a=0;a<t.length;a++)s+=String.fromCharCode(t.charCodeAt(a)^this.encryptionKey.charCodeAt(a%this.encryptionKey.length));return s}catch{return e}}compress(e){if(e.length<100)return e;let t={},s=256,a=[],o="";for(let i=0;i<e.length;i++){let r=e.charAt(i),n=o+r;if(t[n]!==void 0)o=n;else a.push(o.length>1?t[o]:o.charCodeAt(0)),t[n]=s++,o=r}if(o!=="")a.push(o.length>1?t[o]:o.charCodeAt(0));return JSON.stringify(a)}decompress(e){try{let t=JSON.parse(e);if(!Array.isArray(t))return e;let s={},a=256,o=String.fromCharCode(t[0]),i=o;for(let r=1;r<t.length;r++){let n=t[r],c;if(s[n]!==void 0)c=s[n];else if(n===a)c=o+o.charAt(0);else return e;i+=c,s[a++]=o+c.charAt(0),o=c}return i}catch{return e}}getKey(e){return this.namespace?`${this.namespace}:${e}`:e}set(e,t,s){let a=this.getKey(e),o=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(a,r),this.notifyWatchers(e,t,o)}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 a=JSON.parse(s);if(a.expire&&Date.now()-a.timestamp>a.expire)return this.remove(e),null;return a.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 a=this.watchers.get(e);if(a)a.forEach((o)=>o(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 a=this.storage.key(s);if(a){let o=this.storage.getItem(a)||"";e+=a.length+o.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,a])=>{this.set(s,a,t)})}getMany(e){let t={};return e.forEach((s)=>{t[s]=this.get(s)}),t}removeMany(e){e.forEach((t)=>this.remove(t))}}var sd={local:new K("local"),session:new K("session")};function ad(e="local",t){return new K(e,t)}var _a="./Switch-hdta55a8.stx";var Ka="./Table-0mc3fdek.stx";var Ua="./TableBody-drxyz5jh.stx";var Ja="./TableCell-8swtcq8s.stx";var Za="./TableHead-e9xvjx2j.stx";var eo="./TableHeader-sxc77b4d.stx";var so="./TableRow-xd542nvb.stx";var oo="./TabPanel-5htevsq6.stx";var ro="./Tabs-b4xsba1w.stx";var lo="./Teleport-tsx4bt4n.stx";var po="./Textarea-xcdym703.stx";var ho="./Tooltip-y61h04gp.stx";var bo="./Transition-7smenaz8.stx";var xo="./Video-a0aeyexv.stx";var vo="./VirtualList-fa7v5a3h.stx";var yo="./VirtualTable-jvm1784g.stx";var Co=0;function pe(e="a11y"){return`${e}-${++Co}-${Date.now()}`}function Gd(e,t,s={}){let{visible:a=!1,id:o=pe("label")}=s,i=document.createElement(a?"label":"span");if(i.id=o,i.textContent=e,!a)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",o),t.parentElement)t.parentElement.insertBefore(i,t);else document.body.appendChild(i);return o}function Ud(e,t){let s=pe("desc"),a=document.createElement("span");if(a.id=s,a.textContent=e,Object.assign(a.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(a,t);else document.body.appendChild(a);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 Jd(e,t={}){let{initialFocus:s,returnFocus:a,escapeDeactivates:o=!0,clickOutsideDeactivates:i=!0,allowOutsideClick:r=!1,onActivate:n,onDeactivate:c}=t,d=!1,h=!1,p=null,g=(m)=>{if(h)return;if(o&&m.key==="Escape"){m.preventDefault(),v();return}if(m.key==="Tab"){let C=ee(e);if(C.length===0){m.preventDefault();return}let A=C[0],L=C[C.length-1];if(m.shiftKey){if(document.activeElement===A)m.preventDefault(),L.focus()}else if(document.activeElement===L)m.preventDefault(),A.focus()}},f=(m)=>{if(h)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",f),n?.()}function v(){if(!d)return;d=!1;let m=a||p;if(m&&typeof m.focus==="function")m.focus();document.removeEventListener("keydown",g),document.removeEventListener("click",f),c?.()}function k(){h=!0}function x(){h=!1}return{activate:w,deactivate:v,pause:k,unpause:x}}function Xd(e,t={}){let{selector:s='[role="option"], [role="menuitem"], [role="tab"], button',initialIndex:a=0,orientation:o="both",loop:i=!0,onFocusChange:r}=t,n=a,c=()=>{return Array.from(e.querySelectorAll(s))},d=(p)=>{let g=c();if(p<0||p>=g.length)return;g.forEach((f,w)=>{if(w===p){if(f.setAttribute("tabindex","0"),typeof f.focus==="function")f.focus()}else f.setAttribute("tabindex","-1")}),n=p,r?.(p,g[p])},h=(p)=>{let f=c().length-1,w=!1,v=n;switch(p.key){case"ArrowRight":if(o==="horizontal"||o==="both"){if(v=n+1,v>f)v=i?0:f;w=!0}break;case"ArrowLeft":if(o==="horizontal"||o==="both"){if(v=n-1,v<0)v=i?f:0;w=!0}break;case"ArrowDown":if(o==="vertical"||o==="both"){if(v=n+1,v>f)v=i?0:f;w=!0}break;case"ArrowUp":if(o==="vertical"||o==="both"){if(v=n-1,v<0)v=i?f:0;w=!0}break;case"Home":v=0,w=!0;break;case"End":v=f,w=!0;break}if(w)p.preventDefault(),d(v)};return d(a),e.addEventListener("keydown",h),()=>{e.removeEventListener("keydown",h)}}var Zd={Enter:"Enter",Space:" ",Escape:"Escape",ArrowUp:"ArrowUp",ArrowDown:"ArrowDown",ArrowLeft:"ArrowLeft",ArrowRight:"ArrowRight",Tab:"Tab",Home:"Home",End:"End",PageUp:"PageUp",PageDown:"PageDown"};function Qd(e){return document.activeElement===e}function ep(e,t){let s=t||document.activeElement,a=ee(document.body),o=a.indexOf(s);if(o===-1)return;let i=e==="next"?o+1:o-1,r=a[i];if(r)r.focus()}function tp(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 sp={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 ap(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 op(){if(typeof window.matchMedia==="function")return window.matchMedia("(prefers-reduced-motion: reduce)").matches;return!1}function ip(){if(typeof window.matchMedia==="function")return window.matchMedia("(prefers-contrast: high)").matches;return!1}function rp(){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 np(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 lp(e){let t=[],s=(a)=>{let o=e.getAttribute(a);if(o){let i=o.split(" ");for(let r of i)if(!document.getElementById(r))t.push(`${a} references non-existent ID: ${r}`)}};return s("aria-labelledby"),s("aria-describedby"),s("aria-controls"),s("aria-owns"),s("aria-activedescendant"),t}var $o=(e,t,s,a)=>{return s*e/a+t},ko=(e,t,s,a)=>{return e/=a,s*e*e+t},So=(e,t,s,a)=>{return e/=a,-s*e*(e-2)+t},To=(e,t,s,a)=>{if(e/=a/2,e<1)return s/2*e*e+t;return e--,-s/2*(e*(e-2)-1)+t},No=(e,t,s,a)=>{return e/=a,s*e*e*e+t},Ao=(e,t,s,a)=>{return e/=a,e--,s*(e*e*e+1)+t},Io=(e,t,s,a)=>{if(e/=a/2,e<1)return s/2*e*e*e+t;return e-=2,s/2*(e*e*e+2)+t},Do=(e,t,s,a)=>{return e/=a,s*e*e*e*e+t},Po=(e,t,s,a)=>{return e/=a,e--,-s*(e*e*e*e-1)+t},Lo=(e,t,s,a)=>{if(e/=a/2,e<1)return s/2*e*e*e*e+t;return e-=2,-s/2*(e*e*e*e-2)+t},zo=(e,t,s,a)=>{return e/=a,s*e*e*e*e*e+t},Eo=(e,t,s,a)=>{return e/=a,e--,s*(e*e*e*e*e+1)+t},Oo=(e,t,s,a)=>{if(e/=a/2,e<1)return s/2*e*e*e*e*e+t;return e-=2,s/2*(e*e*e*e*e+2)+t},Mo=(e,t,s,a)=>{return-s*Math.cos(e/a*(Math.PI/2))+s+t},Ro=(e,t,s,a)=>{return s*Math.sin(e/a*(Math.PI/2))+t},qo=(e,t,s,a)=>{return-s/2*(Math.cos(Math.PI*e/a)-1)+t},Bo=(e,t,s,a)=>{return e===0?t:s*2**(10*(e/a-1))+t},jo=(e,t,s,a)=>{return e===a?t+s:s*(-(2**(-10*e/a))+1)+t},Ho=(e,t,s,a)=>{if(e===0)return t;if(e===a)return t+s;if(e/=a/2,e<1)return s/2*2**(10*(e-1))+t;return e--,s/2*(-(2**(-10*e))+2)+t},Wo=(e,t,s,a)=>{return e/=a,-s*(Math.sqrt(1-e*e)-1)+t},Vo=(e,t,s,a)=>{return e/=a,e--,s*Math.sqrt(1-e*e)+t},_o=(e,t,s,a)=>{if(e/=a/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},Fo=(e,t,s,a)=>{let o=1.70158,i=0,r=s;if(e===0)return t;if(e/=a,e===1)return t+s;if(!i)i=a*0.3;if(r<Math.abs(s))r=s,o=i/4;else o=i/(2*Math.PI)*Math.asin(s/r);return e-=1,-(r*2**(10*e)*Math.sin((e*a-o)*(2*Math.PI)/i))+t},Ko=(e,t,s,a)=>{let o=1.70158,i=0,r=s;if(e===0)return t;if(e/=a,e===1)return t+s;if(!i)i=a*0.3;if(r<Math.abs(s))r=s,o=i/4;else o=i/(2*Math.PI)*Math.asin(s/r);return r*2**(-10*e)*Math.sin((e*a-o)*(2*Math.PI)/i)+s+t},Go=(e,t,s,a)=>{let o=1.70158,i=0,r=s;if(e===0)return t;if(e/=a/2,e===2)return t+s;if(!i)i=a*0.44999999999999996;if(r<Math.abs(s))r=s,o=i/4;else o=i/(2*Math.PI)*Math.asin(s/r);if(e<1)return e-=1,-0.5*(r*2**(10*e)*Math.sin((e*a-o)*(2*Math.PI)/i))+t;return e-=1,r*2**(-10*e)*Math.sin((e*a-o)*(2*Math.PI)/i)*0.5+s+t},Uo=(e,t,s,a)=>{return e/=a,s*e*e*(2.70158*e-1.70158)+t},Yo=(e,t,s,a)=>{return e/=a,e--,s*(e*e*(2.70158*e+1.70158)+1)+t},Jo=(e,t,s,a)=>{let o=1.70158;if(e/=a/2,e<1)return o*=1.525,s/2*(e*e*((o+1)*e-o))+t;return e-=2,o*=1.525,s/2*(e*e*((o+1)*e+o)+2)+t},te=(e,t,s,a)=>{if(e/=a,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,a)=>{return s-te(a-e,0,s,a)+t},Xo=(e,t,s,a)=>{if(e<a/2)return ue(e*2,0,s,a)*0.5+t;return te(e*2-a,0,s,a)*0.5+s*0.5+t},dp={linear:$o,easeInQuad:ko,easeOutQuad:So,easeInOutQuad:To,easeInCubic:No,easeOutCubic:Ao,easeInOutCubic:Io,easeInQuart:Do,easeOutQuart:Po,easeInOutQuart:Lo,easeInQuint:zo,easeOutQuint:Eo,easeInOutQuint:Oo,easeInSine:Mo,easeOutSine:Ro,easeInOutSine:qo,easeInExpo:Bo,easeOutExpo:jo,easeInOutExpo:Ho,easeInCirc:Wo,easeOutCirc:Vo,easeInOutCirc:_o,easeInElastic:Fo,easeOutElastic:Ko,easeInOutElastic:Go,easeInBack:Uo,easeOutBack:Yo,easeInOutBack:Jo,easeInBounce:ue,easeOutBounce:te,easeInOutBounce:Xo};function Zo(e,t={}){let{duration:s="1s",timing:a="ease",delay:o="0s",iteration:i="1",direction:r="normal",fill:n="both",playState:c="running"}=t;return`${e} ${s} ${a} ${o} ${i} ${r} ${n} ${c}`}function he(e,t,s={}){e.style.animation=Zo(t,s)}function up(e){e.style.animation=""}function Qo(e){return new Promise((t)=>{let s=()=>{e.removeEventListener("animationend",s),t()};e.addEventListener("animationend",s)})}function hp(e,t,s={}){let{stagger:a=100,...o}=s;e.forEach((i,r)=>{let n=`${r*a}ms`;he(i,t,{...o,delay:n})})}async function fp(e,t){for(let s of t)he(e,s.name,s.options),await Qo(e)}var bp={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 gp(e,t,s=1000){return new Promise((a)=>{e.classList.add(t),setTimeout(()=>{e.classList.remove(t),a()},s)})}function xp(e,t){let s=`
11
+ `)}`)}return{valid:r.length===0,errors:r}}function D(e,t,s){return(a)=>_e(e,a,t,s)}function mr(e,t,s="value"){if(!F)return;if(!t.validate(e,s,"assertion"))throw Error(t.message(e,s,"assertion"))}function vr(e,t,s="value"){if(!F)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},kr=D("Button",Ue);function Sr(e){return ne(e,"Button","onClick")}function Tr(e){if(e&&!["primary","secondary","outline","ghost","danger"].includes(e))throw M.invalidProp("Button","variant",e,["primary","secondary","outline","ghost","danger"])}function Nr(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 ot="./ComboboxButton-g76stp1e.stx";var rt="./ComboboxInput-z1293bbh.stx";var lt="./ComboboxOption-6yh7xk7q.stx";var dt="./ComboboxOptions-sq5360ae.stx";var ut="./CommandPalette-36mxf05w.stx";var ft="./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 Tt="./Drawer-m2cgk6gz.stx";var At="./Dropdown-vvhemtc0.stx";var Dt="./DropdownButton-wcz67dxy.stx";var Lt="./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},Nn=D("Form",Rt);var Bt="./Image-4ezne2xj.stx";var Wt="./EmailInput-vak3kkmk.stx";var Vt="./NumberInput-j9p5bm5y.stx";var _t="./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},Bn=D("TextInput",Xt),jn=D("EmailInput",Jt),Wn=D("PasswordInput",Qt),Hn=D("NumberInput",Zt),Vn=D("SearchInput",es);var ss="./Listbox-q49tnr90.stx";var os="./ListboxButton-keb8gm0q.stx";var rs="./ListboxLabel-7mymt1b8.stx";var ls="./ListboxOption-4j070101.stx";var ds="./ListboxOptions-ejkatcfg.stx";var us="./FilterChip-h896vrxm.stx";var fs="./FilterChips-7pnzycfd.stx";var gs="./ListRow-v45ymhcn.stx";var ms="./NavBar-wcb6f2d3.stx";var ws="./SectionCard-r73hvvbc.stx";var Cs="./TabBar-8143650x.stx";var ks="./TabBarItem-hd2r2ayy.stx";var Ts="./Navigator-smpa7my4.stx";var As="./Notification-03vfh3k6.stx";var Ds="./Pagination-jbcjrfcs.stx";var Ls="./Checkout-22wh3s22.stx";var Es="./DefaultPaymentMethod-6qrem3sg.stx";var Ms="./PaymentMethods-2xy66bwk.stx";var qs="./SubscriptionCheckout-7fdkwf04.stx";var js="./Popover-et2q44m7.stx";var Hs="./PopoverButton-mffzc9pr.stx";var Fs="./PopoverPanel-054yh38h.stx";var Ks="./Portal-1vf14s4x.stx";var Us="./Progress-4h7dytq5.stx";var Js="./Radio-ccm07b2m.stx";var Zs="./RadioGroup-eerw9gq7.stx";var ea="./RadioGroupDescription-z34r9avr.stx";var sa="./RadioGroupLabel-7mymt1b8.stx";var oa="./RadioGroupOption-7pq7rw84.stx";var ra="./Select-zt72gg1e.stx";var la="./Sidebar-dbwp6rnk.stx";var da="./SidebarFooter-s7skj92y.stx";var ua="./SidebarHeader-3dppxxjh.stx";var fa="./SidebarItem-5v8atp7p.stx";var ga="./SidebarPinned-48kyk193.stx";var ma="./SidebarSection-sqz49ary.stx";var wa="./SidebarSpace-nmbvgrky.stx";var Ca="./SidebarSpaces-h1564zm6.stx";var ka="./SidebarSpaceSwitcher-az9wqm87.stx";var _={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}},Sa={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}},Ta={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}},Na={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-[16px] 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}},Aa={...O,pane:"bg-stone-100 dark:bg-neutral-900 text-black dark:text-white select-none",layers:{}},Ia={...O,pane:"bg-transparent text-black dark:text-white select-none",layers:{}},Da={...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:Na,workspace:Sa,desktop:Ta,solid:Aa,transparent:Ia,vibrancy:Da};function $c(e){return le[e||"macos"]||le.macos}function kc(e){if(!e)return;return _[e]||e}var Pa=_.gray;function z(e,t,s){return`color-mix(in oklab, ${e} ${t}%, ${s})`}function ce(e){return{light:{from:z(e,35,"#ffffff"),to:z(e,12.5,"#ffffff"),ink:z(e,22,"#17171b"),accent:z(e,88,"#2a2a30")},dark:{from:z(e,27,"#101014"),to:z(e,10,"#08080b"),ink:z(e,12,"#f4f4f7"),accent:z(e,74,"#ffffff")}}}function Nc(e,t){return`linear-gradient(180deg, ${e} 0%, ${t} 100%)`}function La(e){if(!e)return ce(Pa);if(typeof e!=="string")return e;return ce(_[e]||e)}function za(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,a){if(!e||!e.label)return null;return{id:e.id||`${t}-${s}`,label:e.label,icon:e.icon||a}}function Ea(e){let t=La(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:za(t),deferred:e.deferred===!0,showTitle:e.showTitle??!0}}function Ac(e){return(e||[]).map(Ea)}function Ic(e,t){if(!t)return 0;let s=e.findIndex((a)=>a.id===t);return s===-1?0:s}function Dc(e){return e.map((t)=>t.tint)}var Ma="./Skeleton-wtwb97xd.stx";var qa="./Spinner-ypya5tt2.stx";var ja="./Stepper-rgbk76hd.stx";var Ha="./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 a=e.oldValue?JSON.parse(e.oldValue).value:null,o=e.newValue?JSON.parse(e.newValue).value:null;s.forEach((i)=>i(o,a,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 a=0;a<t.length;a++)s+=String.fromCharCode(t.charCodeAt(a)^this.encryptionKey.charCodeAt(a%this.encryptionKey.length));return s}catch{return e}}compress(e){if(e.length<100)return e;let t={},s=256,a=[],o="";for(let i=0;i<e.length;i++){let r=e.charAt(i),n=o+r;if(t[n]!==void 0)o=n;else a.push(o.length>1?t[o]:o.charCodeAt(0)),t[n]=s++,o=r}if(o!=="")a.push(o.length>1?t[o]:o.charCodeAt(0));return JSON.stringify(a)}decompress(e){try{let t=JSON.parse(e);if(!Array.isArray(t))return e;let s={},a=256,o=String.fromCharCode(t[0]),i=o;for(let r=1;r<t.length;r++){let n=t[r],c;if(s[n]!==void 0)c=s[n];else if(n===a)c=o+o.charAt(0);else return e;i+=c,s[a++]=o+c.charAt(0),o=c}return i}catch{return e}}getKey(e){return this.namespace?`${this.namespace}:${e}`:e}set(e,t,s){let a=this.getKey(e),o=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(a,r),this.notifyWatchers(e,t,o)}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 a=JSON.parse(s);if(a.expire&&Date.now()-a.timestamp>a.expire)return this.remove(e),null;return a.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 a=this.watchers.get(e);if(a)a.forEach((o)=>o(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 a=this.storage.key(s);if(a){let o=this.storage.getItem(a)||"";e+=a.length+o.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,a])=>{this.set(s,a,t)})}getMany(e){let t={};return e.forEach((s)=>{t[s]=this.get(s)}),t}removeMany(e){e.forEach((t)=>this.remove(t))}}var sd={local:new K("local"),session:new K("session")};function ad(e="local",t){return new K(e,t)}var Fa="./Switch-hdta55a8.stx";var Ka="./Table-0mc3fdek.stx";var Ua="./TableBody-drxyz5jh.stx";var Ja="./TableCell-8swtcq8s.stx";var Za="./TableHead-e9xvjx2j.stx";var eo="./TableHeader-sxc77b4d.stx";var so="./TableRow-xd542nvb.stx";var oo="./TabPanel-5htevsq6.stx";var ro="./Tabs-b4xsba1w.stx";var lo="./Teleport-tsx4bt4n.stx";var po="./Textarea-xcdym703.stx";var ho="./Tooltip-y61h04gp.stx";var bo="./Transition-7smenaz8.stx";var xo="./Video-a0aeyexv.stx";var vo="./VirtualList-fa7v5a3h.stx";var yo="./VirtualTable-jvm1784g.stx";var Co=0;function pe(e="a11y"){return`${e}-${++Co}-${Date.now()}`}function Gd(e,t,s={}){let{visible:a=!1,id:o=pe("label")}=s,i=document.createElement(a?"label":"span");if(i.id=o,i.textContent=e,!a)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",o),t.parentElement)t.parentElement.insertBefore(i,t);else document.body.appendChild(i);return o}function Ud(e,t){let s=pe("desc"),a=document.createElement("span");if(a.id=s,a.textContent=e,Object.assign(a.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(a,t);else document.body.appendChild(a);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 Jd(e,t={}){let{initialFocus:s,returnFocus:a,escapeDeactivates:o=!0,clickOutsideDeactivates:i=!0,allowOutsideClick:r=!1,onActivate:n,onDeactivate:c}=t,d=!1,h=!1,p=null,g=(m)=>{if(h)return;if(o&&m.key==="Escape"){m.preventDefault(),v();return}if(m.key==="Tab"){let C=ee(e);if(C.length===0){m.preventDefault();return}let A=C[0],L=C[C.length-1];if(m.shiftKey){if(document.activeElement===A)m.preventDefault(),L.focus()}else if(document.activeElement===L)m.preventDefault(),A.focus()}},f=(m)=>{if(h)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",f),n?.()}function v(){if(!d)return;d=!1;let m=a||p;if(m&&typeof m.focus==="function")m.focus();document.removeEventListener("keydown",g),document.removeEventListener("click",f),c?.()}function k(){h=!0}function x(){h=!1}return{activate:w,deactivate:v,pause:k,unpause:x}}function Xd(e,t={}){let{selector:s='[role="option"], [role="menuitem"], [role="tab"], button',initialIndex:a=0,orientation:o="both",loop:i=!0,onFocusChange:r}=t,n=a,c=()=>{return Array.from(e.querySelectorAll(s))},d=(p)=>{let g=c();if(p<0||p>=g.length)return;g.forEach((f,w)=>{if(w===p){if(f.setAttribute("tabindex","0"),typeof f.focus==="function")f.focus()}else f.setAttribute("tabindex","-1")}),n=p,r?.(p,g[p])},h=(p)=>{let f=c().length-1,w=!1,v=n;switch(p.key){case"ArrowRight":if(o==="horizontal"||o==="both"){if(v=n+1,v>f)v=i?0:f;w=!0}break;case"ArrowLeft":if(o==="horizontal"||o==="both"){if(v=n-1,v<0)v=i?f:0;w=!0}break;case"ArrowDown":if(o==="vertical"||o==="both"){if(v=n+1,v>f)v=i?0:f;w=!0}break;case"ArrowUp":if(o==="vertical"||o==="both"){if(v=n-1,v<0)v=i?f:0;w=!0}break;case"Home":v=0,w=!0;break;case"End":v=f,w=!0;break}if(w)p.preventDefault(),d(v)};return d(a),e.addEventListener("keydown",h),()=>{e.removeEventListener("keydown",h)}}var Zd={Enter:"Enter",Space:" ",Escape:"Escape",ArrowUp:"ArrowUp",ArrowDown:"ArrowDown",ArrowLeft:"ArrowLeft",ArrowRight:"ArrowRight",Tab:"Tab",Home:"Home",End:"End",PageUp:"PageUp",PageDown:"PageDown"};function Qd(e){return document.activeElement===e}function ep(e,t){let s=t||document.activeElement,a=ee(document.body),o=a.indexOf(s);if(o===-1)return;let i=e==="next"?o+1:o-1,r=a[i];if(r)r.focus()}function tp(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 sp={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 ap(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 op(){if(typeof window.matchMedia==="function")return window.matchMedia("(prefers-reduced-motion: reduce)").matches;return!1}function ip(){if(typeof window.matchMedia==="function")return window.matchMedia("(prefers-contrast: high)").matches;return!1}function rp(){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 np(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 lp(e){let t=[],s=(a)=>{let o=e.getAttribute(a);if(o){let i=o.split(" ");for(let r of i)if(!document.getElementById(r))t.push(`${a} references non-existent ID: ${r}`)}};return s("aria-labelledby"),s("aria-describedby"),s("aria-controls"),s("aria-owns"),s("aria-activedescendant"),t}var $o=(e,t,s,a)=>{return s*e/a+t},ko=(e,t,s,a)=>{return e/=a,s*e*e+t},So=(e,t,s,a)=>{return e/=a,-s*e*(e-2)+t},To=(e,t,s,a)=>{if(e/=a/2,e<1)return s/2*e*e+t;return e--,-s/2*(e*(e-2)-1)+t},No=(e,t,s,a)=>{return e/=a,s*e*e*e+t},Ao=(e,t,s,a)=>{return e/=a,e--,s*(e*e*e+1)+t},Io=(e,t,s,a)=>{if(e/=a/2,e<1)return s/2*e*e*e+t;return e-=2,s/2*(e*e*e+2)+t},Do=(e,t,s,a)=>{return e/=a,s*e*e*e*e+t},Po=(e,t,s,a)=>{return e/=a,e--,-s*(e*e*e*e-1)+t},Lo=(e,t,s,a)=>{if(e/=a/2,e<1)return s/2*e*e*e*e+t;return e-=2,-s/2*(e*e*e*e-2)+t},zo=(e,t,s,a)=>{return e/=a,s*e*e*e*e*e+t},Eo=(e,t,s,a)=>{return e/=a,e--,s*(e*e*e*e*e+1)+t},Oo=(e,t,s,a)=>{if(e/=a/2,e<1)return s/2*e*e*e*e*e+t;return e-=2,s/2*(e*e*e*e*e+2)+t},Mo=(e,t,s,a)=>{return-s*Math.cos(e/a*(Math.PI/2))+s+t},Ro=(e,t,s,a)=>{return s*Math.sin(e/a*(Math.PI/2))+t},qo=(e,t,s,a)=>{return-s/2*(Math.cos(Math.PI*e/a)-1)+t},Bo=(e,t,s,a)=>{return e===0?t:s*2**(10*(e/a-1))+t},jo=(e,t,s,a)=>{return e===a?t+s:s*(-(2**(-10*e/a))+1)+t},Wo=(e,t,s,a)=>{if(e===0)return t;if(e===a)return t+s;if(e/=a/2,e<1)return s/2*2**(10*(e-1))+t;return e--,s/2*(-(2**(-10*e))+2)+t},Ho=(e,t,s,a)=>{return e/=a,-s*(Math.sqrt(1-e*e)-1)+t},Vo=(e,t,s,a)=>{return e/=a,e--,s*Math.sqrt(1-e*e)+t},Fo=(e,t,s,a)=>{if(e/=a/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},_o=(e,t,s,a)=>{let o=1.70158,i=0,r=s;if(e===0)return t;if(e/=a,e===1)return t+s;if(!i)i=a*0.3;if(r<Math.abs(s))r=s,o=i/4;else o=i/(2*Math.PI)*Math.asin(s/r);return e-=1,-(r*2**(10*e)*Math.sin((e*a-o)*(2*Math.PI)/i))+t},Ko=(e,t,s,a)=>{let o=1.70158,i=0,r=s;if(e===0)return t;if(e/=a,e===1)return t+s;if(!i)i=a*0.3;if(r<Math.abs(s))r=s,o=i/4;else o=i/(2*Math.PI)*Math.asin(s/r);return r*2**(-10*e)*Math.sin((e*a-o)*(2*Math.PI)/i)+s+t},Go=(e,t,s,a)=>{let o=1.70158,i=0,r=s;if(e===0)return t;if(e/=a/2,e===2)return t+s;if(!i)i=a*0.44999999999999996;if(r<Math.abs(s))r=s,o=i/4;else o=i/(2*Math.PI)*Math.asin(s/r);if(e<1)return e-=1,-0.5*(r*2**(10*e)*Math.sin((e*a-o)*(2*Math.PI)/i))+t;return e-=1,r*2**(-10*e)*Math.sin((e*a-o)*(2*Math.PI)/i)*0.5+s+t},Uo=(e,t,s,a)=>{return e/=a,s*e*e*(2.70158*e-1.70158)+t},Yo=(e,t,s,a)=>{return e/=a,e--,s*(e*e*(2.70158*e+1.70158)+1)+t},Jo=(e,t,s,a)=>{let o=1.70158;if(e/=a/2,e<1)return o*=1.525,s/2*(e*e*((o+1)*e-o))+t;return e-=2,o*=1.525,s/2*(e*e*((o+1)*e+o)+2)+t},te=(e,t,s,a)=>{if(e/=a,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,a)=>{return s-te(a-e,0,s,a)+t},Xo=(e,t,s,a)=>{if(e<a/2)return ue(e*2,0,s,a)*0.5+t;return te(e*2-a,0,s,a)*0.5+s*0.5+t},dp={linear:$o,easeInQuad:ko,easeOutQuad:So,easeInOutQuad:To,easeInCubic:No,easeOutCubic:Ao,easeInOutCubic:Io,easeInQuart:Do,easeOutQuart:Po,easeInOutQuart:Lo,easeInQuint:zo,easeOutQuint:Eo,easeInOutQuint:Oo,easeInSine:Mo,easeOutSine:Ro,easeInOutSine:qo,easeInExpo:Bo,easeOutExpo:jo,easeInOutExpo:Wo,easeInCirc:Ho,easeOutCirc:Vo,easeInOutCirc:Fo,easeInElastic:_o,easeOutElastic:Ko,easeInOutElastic:Go,easeInBack:Uo,easeOutBack:Yo,easeInOutBack:Jo,easeInBounce:ue,easeOutBounce:te,easeInOutBounce:Xo};function Zo(e,t={}){let{duration:s="1s",timing:a="ease",delay:o="0s",iteration:i="1",direction:r="normal",fill:n="both",playState:c="running"}=t;return`${e} ${s} ${a} ${o} ${i} ${r} ${n} ${c}`}function he(e,t,s={}){e.style.animation=Zo(t,s)}function up(e){e.style.animation=""}function Qo(e){return new Promise((t)=>{let s=()=>{e.removeEventListener("animationend",s),t()};e.addEventListener("animationend",s)})}function hp(e,t,s={}){let{stagger:a=100,...o}=s;e.forEach((i,r)=>{let n=`${r*a}ms`;he(i,t,{...o,delay:n})})}async function fp(e,t){for(let s of t)he(e,s.name,s.options),await Qo(e)}var bp={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 gp(e,t,s=1000){return new Promise((a)=>{e.classList.add(t),setTimeout(()=>{e.classList.remove(t),a()},s)})}function xp(e,t){let s=`
12
12
  @keyframes ${e} {
13
13
  ${Object.entries(t).map(([o,i])=>{let r=Object.entries(i).map(([n,c])=>`${n}: ${c};`).join(" ");return`${o} { ${r} }`}).join(`
14
14
  `)}
15
15
  }
16
- `,a=document.createElement("style");a.textContent=s,document.head.appendChild(a)}function ei(e,t,s={}){if(typeof e.animate!=="function")return console.warn("Web Animations API not supported"),null;let{duration:a=1000,easing:o="ease",delay:i=0,iterations:r=1,direction:n="normal",fill:c="both"}=s;return e.animate([...t],{duration:a,easing:o,delay:i,iterations:r,direction:n,fill:c})}var ti={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 vp(e,t,s={}){return ei(e,ti[t],s)}import{createHighlighter as si}from"ts-syntax-highlighter";var se=null;async function ai(){if(!se)se=await si({theme:"github-light"});return se}async function Cp(e,t={}){let{theme:s="auto",language:a="typescript",lineNumbers:o=!1,wrapLines:i=!0}=t,r=await ai(),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,a);return{html:typeof c==="string"?c:String(c),language:a,theme:n}}function $p(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 kp(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 P=null,oi=(e)=>{return e===1?0:1};function G(e,t){return t.split(".").reduce((s,a)=>s?.[a],e)}function ae(e,t={}){return e.replace(/\{(\w+)\}/g,(s,a)=>{return t[a]!==void 0?String(t[a]):s})}function Tp(e){let{locale:t,fallbackLocale:s="en",messages:a,pluralRules:o={},dateTimeFormats:i={},numberFormats:r={},missing:n,warnMissing:c=!0}=e;function d(x,m={}){let C=G(a[t],x);if(C===void 0&&s)C=G(a[s],x);if(C===void 0){if(n){let A=n(t,x);if(A)return ae(A,m)}if(c&&typeof console<"u")console.warn(`[i18n] Missing translation for key "${x}" in locale "${t}"`);return x}if(typeof C==="string")return ae(C,m);return String(C)}function h(x,m,C={}){let A=d(x,{...C,count:m});if(A.includes("|")){let L=A.split("|").map((Z)=>Z.trim()),J=(o[t]||oi)(m,t),X=L[J]||L[L.length-1];return ae(X,{...C,count:m})}return A}function p(x,m="default"){let C=typeof x==="number"?new Date(x):x,A=i[m]||i.default||{};return new Intl.DateTimeFormat(t,A).format(C)}function g(x,m="default"){let C=r[m]||r.default||{};return new Intl.NumberFormat(t,C).format(x)}function f(x){if(G(a[t],x)!==void 0)return!0;if(s)return G(a[s],x)!==void 0;return!1}function w(x){if(!a[x]){console.warn(`[i18n] Locale "${x}" not found. Available locales: ${Object.keys(a).join(", ")}`);return}t=x}function v(x,m){if(!a[x])a[x]={};a[x]={...a[x],...m}}function k(x){delete a[x]}return{get locale(){return t},get availableLocales(){return Object.keys(a)},setLocale:w,t:d,tc:h,d:p,n:g,te:f,addMessages:v,removeLocale:k}}function Np(e){P=e}function Ap(){return P}function Ip(e,t){if(!P)return console.warn("[i18n] No global i18n instance set. Call setI18n() first."),e;return P.t(e,t)}function Dp(e,t,s){if(!P)return console.warn("[i18n] No global i18n instance set. Call setI18n() first."),e;return P.tc(e,t,s)}function Pp(e,t){if(!P)return console.warn("[i18n] No global i18n instance set. Call setI18n() first."),String(e);return P.d(e,t)}function Lp(e,t){if(!P)return console.warn("[i18n] No global i18n instance set. Call setI18n() first."),String(e);return P.n(e,t)}var zp={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},Ep={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"}},Op={decimal:{style:"decimal",minimumFractionDigits:2,maximumFractionDigits:2},currency:{style:"currency",currency:"USD"},percent:{style:"percent",minimumFractionDigits:0,maximumFractionDigits:2},compact:{notation:"compact"}};function Mp(e){let t=["ar","he","fa","ur","yi"],s=e.split("-")[0].toLowerCase();return t.includes(s)}async function Rp(e,t){try{return await t()}catch(s){return console.error(`[i18n] Failed to load messages for locale "${e}":`,s),{}}}var qp={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 jp(e={}){let{max:t=10,ttl:s=0,include:a,exclude:o,hooks:i,debug:r=!1}=e,n=new Map,c=0,d=0;function h(...u){if(r)console.log("[KeepAlive]",...u)}function p(u){if(o){if(o instanceof RegExp&&o.test(u))return!1;if(Array.isArray(o)&&o.includes(u))return!1}if(a){if(a instanceof RegExp&&!a.test(u))return!1;if(Array.isArray(a)&&!a.includes(u))return!1}return!0}function g(u){if(!s||!u.expiresAt)return!1;return Date.now()>u.expiresAt}function f(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),h(`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){h(`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 h(`Type not cacheable: ${b.type}`),b;if(n.size>=t)w();let I=Date.now(),H={instance:{...b,hooks:y||b.hooks,createdAt:b.createdAt||I,lastAccessedAt:I},accessCount:0,createdAt:I,lastAccessedAt:I,expiresAt:s?I+s:void 0};if(n.set(u,H),h(`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++,h(`Miss: ${u}`),null;if(g(b))return h(`Expired: ${u}`),n.delete(u),d++,null;return c++,f(u),h(`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;h(`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(){h("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 A(){let u=0,b=Date.now();for(let[y,I]of n.entries())if(g(I))h(`Pruning expired: ${y}`),m(y),u++;while(n.size>t)if(w())u++;else break;if(u>0)h(`Pruned ${u} entries`);return u}function L(u){let b=k(u);if(!b)return null;h(`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;h(`Deactivating: ${u}`);let y=b.instance,I=y.hooks;if(I?.onSave)y.state=I.onSave(y);if(I?.onDeactivate)I.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:A,activate:L,deactivate:ie,getStats:J,keys:X,size:Z}}function Hp(e){let t=new Map;return{set(s,a){if(t.has(s))t.delete(s);if(t.set(s,a),t.size>e){let o=t.keys().next().value;if(o)t.delete(o)}},get(s){if(!t.has(s))return;let a=t.get(s);return t.delete(s),t.set(s,a),a},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 Wp(){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 Vp(e,t={}){let{maxSize:s=100,reset:a}=t,o=[];return{acquire(){if(o.length>0)return o.pop();return e()},release(i){if(o.length<s){if(a)a(i);o.push(i)}},clear(){o.length=0},get size(){return o.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 a=e();E.set(s,a);try{return await a}catch(o){throw E.delete(s),o}}function Fp(e,t={}){let{retryAttempts:s=3,retryDelay:a=1000,onLoading:o,onLoaded:i,onError:r}=t,n="idle",c,d,h=async(p=0)=>{try{if(n==="loading"||n==="loaded"){if(c)return c}n="loading",o?.();let g=await U(e);return c=g,n="loaded",i?.(g),g}catch(g){let f=g;if(p<s)return await new Promise((w)=>setTimeout(w,a*(p+1))),h(p+1);throw n="error",d=f,r?.(f),f}};return{get state(){return n},get module(){return c},get error(){return d},load:()=>h(),preload:()=>h()}}function ii(e,t,s={}){if(!e)return console.warn("lazyLoad: element is null"),()=>{};let{root:a=null,rootMargin:o="0px",threshold:i=0.01,placeholder:r,errorContent:n,onLoading:c,onLoaded:d,onError:h}=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(h?.(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:a,rootMargin:o,threshold:i}),g.observe(e),()=>{g?.disconnect(),g=null}}function Kp(e,t,s={}){let a=[],o=Array.from(e);for(let i of o){let r=typeof t==="function"&&t.length>0?()=>t(i):t,n=ii(i,r,s);a.push(n)}return()=>{a.forEach((i)=>i())}}function ri(e){return U(e)}function Gp(e){return Promise.all(e.map((t)=>ri(t)))}function Up(e){if(e)E.delete(e);else E.clear()}function Yp(){return{size:E.size,keys:Array.from(E.keys())}}function Jp(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 ni(e,t,s={}){if(!e)return()=>{};let{root:a=null,rootMargin:o="50px",threshold:i=0.01,placeholder:r,onLoading:n,onLoaded:c,onError:d}=s;if(r&&typeof r==="string")e.src=r;let h=!1,p=null;return p=new IntersectionObserver((f)=>{for(let w of f)if(w.isIntersecting&&!h)h=!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:a,rootMargin:o,threshold:i}),p.observe(e),()=>{p?.disconnect(),p=null}}function Xp(e=document,t={}){let s=e.querySelectorAll("img[data-lazy-src]"),a=[];return s.forEach((o)=>{let i=o.getAttribute("data-lazy-src");if(i){let r=ni(o,i,t);a.push(r)}}),()=>{a.forEach((o)=>o())}}var oe={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 fe(e,t){let s={...e};for(let a in t)if(t[a]instanceof Object&&a in e)s[a]=fe(e[a],t[a]);else s[a]=t[a];return s}function j(e){return fe(oe,e)}var Y=oe;function Qp(){return Y}function li(e){let t=[];if(e.colors)Object.entries(e.colors).forEach(([s,a])=>{if(a)t.push(`--color-${s}: ${a};`)});if(e.typography?.fontFamily)Object.entries(e.typography.fontFamily).forEach(([s,a])=>{if(a)t.push(`--font-${s}: ${a};`)});if(e.typography?.fontSize)Object.entries(e.typography.fontSize).forEach(([s,a])=>{if(a)t.push(`--text-${s}: ${a};`)});if(e.typography?.fontWeight)Object.entries(e.typography.fontWeight).forEach(([s,a])=>{if(a)t.push(`--font-weight-${s}: ${a};`)});if(e.typography?.lineHeight)Object.entries(e.typography.lineHeight).forEach(([s,a])=>{if(a)t.push(`--leading-${s}: ${a};`)});if(e.spacing)Object.entries(e.spacing).forEach(([s,a])=>{if(a)t.push(`--spacing-${s}: ${a};`)});if(e.borderRadius)Object.entries(e.borderRadius).forEach(([s,a])=>{if(a)t.push(`--radius-${s}: ${a};`)});if(e.shadows)Object.entries(e.shadows).forEach(([s,a])=>{if(a)t.push(`--shadow-${s}: ${a};`)});if(e.components?.button)Object.entries(e.components.button).forEach(([s,a])=>{if(a)t.push(`--button-${s.replace(/([A-Z])/g,"-$1").toLowerCase()}: ${a};`)});if(e.components?.input)Object.entries(e.components.input).forEach(([s,a])=>{if(a)t.push(`--input-${s.replace(/([A-Z])/g,"-$1").toLowerCase()}: ${a};`)});if(e.components?.card)Object.entries(e.components.card).forEach(([s,a])=>{if(a)t.push(`--card-${s.replace(/([A-Z])/g,"-$1").toLowerCase()}: ${a};`)});return`:root {
16
+ `,a=document.createElement("style");a.textContent=s,document.head.appendChild(a)}function ei(e,t,s={}){if(typeof e.animate!=="function")return console.warn("Web Animations API not supported"),null;let{duration:a=1000,easing:o="ease",delay:i=0,iterations:r=1,direction:n="normal",fill:c="both"}=s;return e.animate([...t],{duration:a,easing:o,delay:i,iterations:r,direction:n,fill:c})}var ti={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 vp(e,t,s={}){return ei(e,ti[t],s)}import{createHighlighter as si}from"ts-syntax-highlighter";var se=null;async function ai(){if(!se)se=await si({theme:"github-light"});return se}async function Cp(e,t={}){let{theme:s="auto",language:a="typescript",lineNumbers:o=!1,wrapLines:i=!0}=t,r=await ai(),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,a);return{html:typeof c==="string"?c:String(c),language:a,theme:n}}function $p(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 kp(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 P=null,oi=(e)=>{return e===1?0:1};function G(e,t){return t.split(".").reduce((s,a)=>s?.[a],e)}function ae(e,t={}){return e.replace(/\{(\w+)\}/g,(s,a)=>{return t[a]!==void 0?String(t[a]):s})}function Tp(e){let{locale:t,fallbackLocale:s="en",messages:a,pluralRules:o={},dateTimeFormats:i={},numberFormats:r={},missing:n,warnMissing:c=!0}=e;function d(x,m={}){let C=G(a[t],x);if(C===void 0&&s)C=G(a[s],x);if(C===void 0){if(n){let A=n(t,x);if(A)return ae(A,m)}if(c&&typeof console<"u")console.warn(`[i18n] Missing translation for key "${x}" in locale "${t}"`);return x}if(typeof C==="string")return ae(C,m);return String(C)}function h(x,m,C={}){let A=d(x,{...C,count:m});if(A.includes("|")){let L=A.split("|").map((Z)=>Z.trim()),J=(o[t]||oi)(m,t),X=L[J]||L[L.length-1];return ae(X,{...C,count:m})}return A}function p(x,m="default"){let C=typeof x==="number"?new Date(x):x,A=i[m]||i.default||{};return new Intl.DateTimeFormat(t,A).format(C)}function g(x,m="default"){let C=r[m]||r.default||{};return new Intl.NumberFormat(t,C).format(x)}function f(x){if(G(a[t],x)!==void 0)return!0;if(s)return G(a[s],x)!==void 0;return!1}function w(x){if(!a[x]){console.warn(`[i18n] Locale "${x}" not found. Available locales: ${Object.keys(a).join(", ")}`);return}t=x}function v(x,m){if(!a[x])a[x]={};a[x]={...a[x],...m}}function k(x){delete a[x]}return{get locale(){return t},get availableLocales(){return Object.keys(a)},setLocale:w,t:d,tc:h,d:p,n:g,te:f,addMessages:v,removeLocale:k}}function Np(e){P=e}function Ap(){return P}function Ip(e,t){if(!P)return console.warn("[i18n] No global i18n instance set. Call setI18n() first."),e;return P.t(e,t)}function Dp(e,t,s){if(!P)return console.warn("[i18n] No global i18n instance set. Call setI18n() first."),e;return P.tc(e,t,s)}function Pp(e,t){if(!P)return console.warn("[i18n] No global i18n instance set. Call setI18n() first."),String(e);return P.d(e,t)}function Lp(e,t){if(!P)return console.warn("[i18n] No global i18n instance set. Call setI18n() first."),String(e);return P.n(e,t)}var zp={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},Ep={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"}},Op={decimal:{style:"decimal",minimumFractionDigits:2,maximumFractionDigits:2},currency:{style:"currency",currency:"USD"},percent:{style:"percent",minimumFractionDigits:0,maximumFractionDigits:2},compact:{notation:"compact"}};function Mp(e){let t=["ar","he","fa","ur","yi"],s=e.split("-")[0].toLowerCase();return t.includes(s)}async function Rp(e,t){try{return await t()}catch(s){return console.error(`[i18n] Failed to load messages for locale "${e}":`,s),{}}}var qp={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 jp(e={}){let{max:t=10,ttl:s=0,include:a,exclude:o,hooks:i,debug:r=!1}=e,n=new Map,c=0,d=0;function h(...u){if(r)console.log("[KeepAlive]",...u)}function p(u){if(o){if(o instanceof RegExp&&o.test(u))return!1;if(Array.isArray(o)&&o.includes(u))return!1}if(a){if(a instanceof RegExp&&!a.test(u))return!1;if(Array.isArray(a)&&!a.includes(u))return!1}return!0}function g(u){if(!s||!u.expiresAt)return!1;return Date.now()>u.expiresAt}function f(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),h(`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){h(`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 h(`Type not cacheable: ${b.type}`),b;if(n.size>=t)w();let I=Date.now(),W={instance:{...b,hooks:y||b.hooks,createdAt:b.createdAt||I,lastAccessedAt:I},accessCount:0,createdAt:I,lastAccessedAt:I,expiresAt:s?I+s:void 0};if(n.set(u,W),h(`Cached: ${u} (size: ${n.size}/${t})`),y?.onMount)y.onMount(W.instance);if(i?.onMount)i.onMount(W.instance);return W.instance}function k(u){let b=n.get(u);if(!b)return d++,h(`Miss: ${u}`),null;if(g(b))return h(`Expired: ${u}`),n.delete(u),d++,null;return c++,f(u),h(`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;h(`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(){h("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 A(){let u=0,b=Date.now();for(let[y,I]of n.entries())if(g(I))h(`Pruning expired: ${y}`),m(y),u++;while(n.size>t)if(w())u++;else break;if(u>0)h(`Pruned ${u} entries`);return u}function L(u){let b=k(u);if(!b)return null;h(`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;h(`Deactivating: ${u}`);let y=b.instance,I=y.hooks;if(I?.onSave)y.state=I.onSave(y);if(I?.onDeactivate)I.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:A,activate:L,deactivate:ie,getStats:J,keys:X,size:Z}}function Wp(e){let t=new Map;return{set(s,a){if(t.has(s))t.delete(s);if(t.set(s,a),t.size>e){let o=t.keys().next().value;if(o)t.delete(o)}},get(s){if(!t.has(s))return;let a=t.get(s);return t.delete(s),t.set(s,a),a},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 Vp(e,t={}){let{maxSize:s=100,reset:a}=t,o=[];return{acquire(){if(o.length>0)return o.pop();return e()},release(i){if(o.length<s){if(a)a(i);o.push(i)}},clear(){o.length=0},get size(){return o.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 a=e();E.set(s,a);try{return await a}catch(o){throw E.delete(s),o}}function _p(e,t={}){let{retryAttempts:s=3,retryDelay:a=1000,onLoading:o,onLoaded:i,onError:r}=t,n="idle",c,d,h=async(p=0)=>{try{if(n==="loading"||n==="loaded"){if(c)return c}n="loading",o?.();let g=await U(e);return c=g,n="loaded",i?.(g),g}catch(g){let f=g;if(p<s)return await new Promise((w)=>setTimeout(w,a*(p+1))),h(p+1);throw n="error",d=f,r?.(f),f}};return{get state(){return n},get module(){return c},get error(){return d},load:()=>h(),preload:()=>h()}}function ii(e,t,s={}){if(!e)return console.warn("lazyLoad: element is null"),()=>{};let{root:a=null,rootMargin:o="0px",threshold:i=0.01,placeholder:r,errorContent:n,onLoading:c,onLoaded:d,onError:h}=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(h?.(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:a,rootMargin:o,threshold:i}),g.observe(e),()=>{g?.disconnect(),g=null}}function Kp(e,t,s={}){let a=[],o=Array.from(e);for(let i of o){let r=typeof t==="function"&&t.length>0?()=>t(i):t,n=ii(i,r,s);a.push(n)}return()=>{a.forEach((i)=>i())}}function ri(e){return U(e)}function Gp(e){return Promise.all(e.map((t)=>ri(t)))}function Up(e){if(e)E.delete(e);else E.clear()}function Yp(){return{size:E.size,keys:Array.from(E.keys())}}function Jp(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 ni(e,t,s={}){if(!e)return()=>{};let{root:a=null,rootMargin:o="50px",threshold:i=0.01,placeholder:r,onLoading:n,onLoaded:c,onError:d}=s;if(r&&typeof r==="string")e.src=r;let h=!1,p=null;return p=new IntersectionObserver((f)=>{for(let w of f)if(w.isIntersecting&&!h)h=!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:a,rootMargin:o,threshold:i}),p.observe(e),()=>{p?.disconnect(),p=null}}function Xp(e=document,t={}){let s=e.querySelectorAll("img[data-lazy-src]"),a=[];return s.forEach((o)=>{let i=o.getAttribute("data-lazy-src");if(i){let r=ni(o,i,t);a.push(r)}}),()=>{a.forEach((o)=>o())}}var oe={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 fe(e,t){let s={...e};for(let a in t)if(t[a]instanceof Object&&a in e)s[a]=fe(e[a],t[a]);else s[a]=t[a];return s}function j(e){return fe(oe,e)}var Y=oe;function Qp(){return Y}function li(e){let t=[];if(e.colors)Object.entries(e.colors).forEach(([s,a])=>{if(a)t.push(`--color-${s}: ${a};`)});if(e.typography?.fontFamily)Object.entries(e.typography.fontFamily).forEach(([s,a])=>{if(a)t.push(`--font-${s}: ${a};`)});if(e.typography?.fontSize)Object.entries(e.typography.fontSize).forEach(([s,a])=>{if(a)t.push(`--text-${s}: ${a};`)});if(e.typography?.fontWeight)Object.entries(e.typography.fontWeight).forEach(([s,a])=>{if(a)t.push(`--font-weight-${s}: ${a};`)});if(e.typography?.lineHeight)Object.entries(e.typography.lineHeight).forEach(([s,a])=>{if(a)t.push(`--leading-${s}: ${a};`)});if(e.spacing)Object.entries(e.spacing).forEach(([s,a])=>{if(a)t.push(`--spacing-${s}: ${a};`)});if(e.borderRadius)Object.entries(e.borderRadius).forEach(([s,a])=>{if(a)t.push(`--radius-${s}: ${a};`)});if(e.shadows)Object.entries(e.shadows).forEach(([s,a])=>{if(a)t.push(`--shadow-${s}: ${a};`)});if(e.components?.button)Object.entries(e.components.button).forEach(([s,a])=>{if(a)t.push(`--button-${s.replace(/([A-Z])/g,"-$1").toLowerCase()}: ${a};`)});if(e.components?.input)Object.entries(e.components.input).forEach(([s,a])=>{if(a)t.push(`--input-${s.replace(/([A-Z])/g,"-$1").toLowerCase()}: ${a};`)});if(e.components?.card)Object.entries(e.components.card).forEach(([s,a])=>{if(a)t.push(`--card-${s.replace(/([A-Z])/g,"-$1").toLowerCase()}: ${a};`)});return`:root {
17
17
  ${t.join(`
18
18
  `)}
19
- }`}function eu(e,t){if(Y=e,typeof document>"u")return;let s=t||document.documentElement;if(e.colors)Object.entries(e.colors).forEach(([a,o])=>{if(o)s.style.setProperty(`--color-${a}`,o)});if(e.typography?.fontFamily)Object.entries(e.typography.fontFamily).forEach(([a,o])=>{if(o)s.style.setProperty(`--font-${a}`,o)});if(e.typography?.fontSize)Object.entries(e.typography.fontSize).forEach(([a,o])=>{if(o)s.style.setProperty(`--text-${a}`,o)});if(e.typography?.fontWeight)Object.entries(e.typography.fontWeight).forEach(([a,o])=>{if(o)s.style.setProperty(`--font-weight-${a}`,o)});if(e.typography?.lineHeight)Object.entries(e.typography.lineHeight).forEach(([a,o])=>{if(o)s.style.setProperty(`--leading-${a}`,o)});if(e.spacing)Object.entries(e.spacing).forEach(([a,o])=>{if(o)s.style.setProperty(`--spacing-${a}`,o)});if(e.borderRadius)Object.entries(e.borderRadius).forEach(([a,o])=>{if(o)s.style.setProperty(`--radius-${a}`,o)});if(e.shadows)Object.entries(e.shadows).forEach(([a,o])=>{if(o)s.style.setProperty(`--shadow-${a}`,o)});if(e.components?.button)Object.entries(e.components.button).forEach(([a,o])=>{if(o)s.style.setProperty(`--button-${a.replace(/([A-Z])/g,"-$1").toLowerCase()}`,o)});if(e.components?.input)Object.entries(e.components.input).forEach(([a,o])=>{if(o)s.style.setProperty(`--input-${a.replace(/([A-Z])/g,"-$1").toLowerCase()}`,o)});if(e.components?.card)Object.entries(e.components.card).forEach(([a,o])=>{if(o)s.style.setProperty(`--card-${a.replace(/([A-Z])/g,"-$1").toLowerCase()}`,o)})}function tu(){return Y}function su(e){let t=e.split("."),s=Y;for(let a of t)if(s&&typeof s==="object"&&a in s)s=s[a];else return;return s}var au={default:oe,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 ou(e){return li(e)}export{ne as wrapErrorHandler,vr as warnProp,Ve as warn,Qo as waitForAnimation,Tr as validateVariant,Bn as validateTextInputProps,Nr as validateSize,Vn as validateSearchInputProps,Fe as validateProps,Hn as validatePasswordInputProps,Wn as validateNumberInputProps,Nn as validateFormProps,jn as validateEmailInputProps,kr as validateButtonProps,lp as validateAriaRelationships,tu as useTheme,mi as useSEO,Ei as usePrefersReducedMotion,R as useMediaQuery,Ai as useLocalStorage,Si as useKeyboard,Pi as useIsMobile,Li as useIsDesktop,zi as useIsDarkMode,$i as useFocusTrap,gi as useDarkMode,hi as useCopyCode,yi as useClickOutside,Di as useBreakpoint,qi as themeVariableNames,li as themeToCSSProperties,au as themePresets,Xt as textInputPropSchema,Dp as tc,Ip as t,Ri as stxThemePreset,sd as storage,hp as staggerAnimation,Nc as spaceWashGradient,za as spaceTintVars,Dc as spaceTintPayload,Ic as spaceIndexOf,le as sidebarThemes,we as setTitle,S as setMeta,ye as setLink,Np as setI18n,pr as setErrorHandler,fp as sequenceAnimations,La as resolveSpaceTint,$c as resolveSidebarTheme,kc as resolveIconColor,up as removeAnimation,Gp as preloadModules,ri as preloadModule,op as prefersReducedMotion,ip as prefersHighContrast,zp as pluralRules,Zt as numberInputPropSchema,Op as numberFormats,Ac as normalizeSpaces,Ea as normalizeSpace,Lp as n,ep as moveFocus,F as macosColors,Rp as loadLocaleMessages,$o as linear,U as lazyLoadModule,Xp as lazyLoadImages,ni as lazyLoadImage,Fp as lazyLoadComponent,Kp as lazyLoadAll,ii as lazyLoad,tp as isVisibleToScreenReader,Mp as isRTL,Cp as highlight,Qd as hasFocus,V as handleError,su as getThemeValue,Qp as getTheme,ve as getSystemTheme,Ap as getI18n,ai as getHighlighter,ee as getFocusableElements,Q as getEffectiveTheme,rp as getColorSchemePreference,Yp as getCacheStats,ou as generateThemeCSS,vi as generateSEOTags,pe as generateId,Rt as formPropSchema,br as errorBoundary,Ro as easeOutSine,Eo as easeOutQuint,Po as easeOutQuart,So as easeOutQuad,jo as easeOutExpo,Ko as easeOutElastic,Ao as easeOutCubic,Vo as easeOutCirc,te as easeOutBounce,Yo as easeOutBack,Mo as easeInSine,zo as easeInQuint,Do as easeInQuart,ko as easeInQuad,qo as easeInOutSine,Oo as easeInOutQuint,Lo as easeInOutQuart,To as easeInOutQuad,Ho as easeInOutExpo,Go as easeInOutElastic,Io as easeInOutCubic,_o as easeInOutCirc,Xo as easeInOutBounce,Jo as easeInOutBack,Bo as easeInExpo,Fo as easeInElastic,No as easeInCubic,Wo as easeInCirc,ue as easeInBounce,Uo as easeInBack,hr as devAssert,$p as detectLanguage,ce as deriveSpaceTint,oe as defaultTheme,Ep as dateTimeFormats,Pp as d,Zo as cssAnimation,j as createTheme,ad as createStorage,Wp as createStateManager,np as createSkipLink,ap as createScreenReaderText,Sr as createSafeClickHandler,Xd as createRovingTabindex,Jp as createRouteLoader,D as createPropValidator,Hp as createLRUCache,xp as createKeyframes,ei as createKeyframeAnimation,jp as createKeepAlive,Tp as createI18n,Jd as createFocusTrap,fr as createDebugger,Vp as createComponentPool,Gd as createAriaLabel,Ud as createAriaDescription,fi as copyToClipboard,qp as componentMessages,Up as clearModuleCache,ur as clearErrorHandler,Ue as buttonPropSchema,mr as assertProp,We as assert,sp as aria,eu as applyTheme,kp as applyHeadwindClasses,he as applyAnimation,Yd as announceToScreenReader,gp as animateWithClass,vp as animate,yo as VirtualTable,vo as VirtualList,xo as Video,Ee as TwoFactorChallenge,bo as Transition,ho as Tooltip,po as Textarea,Yt as TextInput,lo as Teleport,ro as Tabs,so as TableRow,eo as TableHeader,Za as TableHead,Ja as TableCell,Ua as TableBody,Ka as Table,oo as TabPanel,ks as TabBarItem,Cs as TabBar,re as THEMED_FAMILIES,_a as Switch,qs as SubscriptionCheckout,K as StorageManager,Wa as StepperStep,ja as Stepper,qa as Spinner,Ma as Skeleton,Le as Signup,Ca as SidebarSpaces,ka as SidebarSpaceSwitcher,wa as SidebarSpace,ma as SidebarSection,ga as SidebarPinned,fa as SidebarItem,ua as SidebarHeader,da as SidebarFooter,la as Sidebar,ra as Select,ws as SectionCard,Gt as SearchInput,Mi as SHADE_VAR_PREFIX,oa as RadioGroupOption,sa as RadioGroupLabel,ea as RadioGroupDescription,Zs as RadioGroup,Js as Radio,l as PropTypes,Us as Progress,Ks as Portal,_s as PopoverPanel,Ws as PopoverButton,js as Popover,Ms as PaymentMethods,Ft as PasswordInput,Ds as Pagination,Vt as NumberInput,As as Notification,Ts as Navigator,ms as NavBar,De as Login,ds as ListboxOptions,ls as ListboxOption,rs as ListboxLabel,os as ListboxButton,ss as Listbox,gs as ListRow,ti as KeyframeAnimations,Ti as KeyboardShortcuts,Zd as KeyboardKeys,me as Installation,Bt as Image,xe as Hero,Mt as Form,ge as Footer,fs as FilterChips,us as FilterChip,M as ErrorTypes,Ht as EmailInput,dp as Easing,Et as DropdownItems,Lt as DropdownItem,Dt as DropdownButton,At as Dropdown,Tt as Drawer,kt as DialogTitle,Ct as DialogPanel,wt as DialogDescription,mt as DialogBackdrop,gt as Dialog,Es as DefaultPaymentMethod,N as ComponentError,ft as CommandPaletteItem,ut as CommandPalette,dt as ComboboxOptions,lt as ComboboxOption,rt as ComboboxInput,ot as ComboboxButton,st as Combobox,be as CodeBlock,Ls as Checkout,et as Checkbox,Ze as Card,Je as Calendar,Ge as Button,q as Breakpoints,je as Breadcrumb,qe as Badge,Me as Avatar,Ae as Audio,bp as AnimationClasses,Te as AccordionItem,ke as Accordion};
19
+ }`}function eu(e,t){if(Y=e,typeof document>"u")return;let s=t||document.documentElement;if(e.colors)Object.entries(e.colors).forEach(([a,o])=>{if(o)s.style.setProperty(`--color-${a}`,o)});if(e.typography?.fontFamily)Object.entries(e.typography.fontFamily).forEach(([a,o])=>{if(o)s.style.setProperty(`--font-${a}`,o)});if(e.typography?.fontSize)Object.entries(e.typography.fontSize).forEach(([a,o])=>{if(o)s.style.setProperty(`--text-${a}`,o)});if(e.typography?.fontWeight)Object.entries(e.typography.fontWeight).forEach(([a,o])=>{if(o)s.style.setProperty(`--font-weight-${a}`,o)});if(e.typography?.lineHeight)Object.entries(e.typography.lineHeight).forEach(([a,o])=>{if(o)s.style.setProperty(`--leading-${a}`,o)});if(e.spacing)Object.entries(e.spacing).forEach(([a,o])=>{if(o)s.style.setProperty(`--spacing-${a}`,o)});if(e.borderRadius)Object.entries(e.borderRadius).forEach(([a,o])=>{if(o)s.style.setProperty(`--radius-${a}`,o)});if(e.shadows)Object.entries(e.shadows).forEach(([a,o])=>{if(o)s.style.setProperty(`--shadow-${a}`,o)});if(e.components?.button)Object.entries(e.components.button).forEach(([a,o])=>{if(o)s.style.setProperty(`--button-${a.replace(/([A-Z])/g,"-$1").toLowerCase()}`,o)});if(e.components?.input)Object.entries(e.components.input).forEach(([a,o])=>{if(o)s.style.setProperty(`--input-${a.replace(/([A-Z])/g,"-$1").toLowerCase()}`,o)});if(e.components?.card)Object.entries(e.components.card).forEach(([a,o])=>{if(o)s.style.setProperty(`--card-${a.replace(/([A-Z])/g,"-$1").toLowerCase()}`,o)})}function tu(){return Y}function su(e){let t=e.split("."),s=Y;for(let a of t)if(s&&typeof s==="object"&&a in s)s=s[a];else return;return s}var au={default:oe,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 ou(e){return li(e)}export{ne as wrapErrorHandler,vr as warnProp,Ve as warn,Qo as waitForAnimation,Tr as validateVariant,Bn as validateTextInputProps,Nr as validateSize,Vn as validateSearchInputProps,_e as validateProps,Wn as validatePasswordInputProps,Hn as validateNumberInputProps,Nn as validateFormProps,jn as validateEmailInputProps,kr as validateButtonProps,lp as validateAriaRelationships,tu as useTheme,mi as useSEO,Ei as usePrefersReducedMotion,R as useMediaQuery,Ai as useLocalStorage,Si as useKeyboard,Pi as useIsMobile,Li as useIsDesktop,zi as useIsDarkMode,$i as useFocusTrap,gi as useDarkMode,hi as useCopyCode,yi as useClickOutside,Di as useBreakpoint,qi as themeVariableNames,li as themeToCSSProperties,au as themePresets,Xt as textInputPropSchema,Dp as tc,Ip as t,Ri as stxThemePreset,sd as storage,hp as staggerAnimation,Nc as spaceWashGradient,za as spaceTintVars,Dc as spaceTintPayload,Ic as spaceIndexOf,le as sidebarThemes,we as setTitle,S as setMeta,ye as setLink,Np as setI18n,pr as setErrorHandler,fp as sequenceAnimations,La as resolveSpaceTint,$c as resolveSidebarTheme,kc as resolveIconColor,up as removeAnimation,Gp as preloadModules,ri as preloadModule,op as prefersReducedMotion,ip as prefersHighContrast,zp as pluralRules,Zt as numberInputPropSchema,Op as numberFormats,Ac as normalizeSpaces,Ea as normalizeSpace,Lp as n,ep as moveFocus,_ as macosColors,Rp as loadLocaleMessages,$o as linear,U as lazyLoadModule,Xp as lazyLoadImages,ni as lazyLoadImage,_p as lazyLoadComponent,Kp as lazyLoadAll,ii as lazyLoad,tp as isVisibleToScreenReader,Mp as isRTL,Cp as highlight,Qd as hasFocus,V as handleError,su as getThemeValue,Qp as getTheme,ve as getSystemTheme,Ap as getI18n,ai as getHighlighter,ee as getFocusableElements,Q as getEffectiveTheme,rp as getColorSchemePreference,Yp as getCacheStats,ou as generateThemeCSS,vi as generateSEOTags,pe as generateId,Rt as formPropSchema,br as errorBoundary,Ro as easeOutSine,Eo as easeOutQuint,Po as easeOutQuart,So as easeOutQuad,jo as easeOutExpo,Ko as easeOutElastic,Ao as easeOutCubic,Vo as easeOutCirc,te as easeOutBounce,Yo as easeOutBack,Mo as easeInSine,zo as easeInQuint,Do as easeInQuart,ko as easeInQuad,qo as easeInOutSine,Oo as easeInOutQuint,Lo as easeInOutQuart,To as easeInOutQuad,Wo as easeInOutExpo,Go as easeInOutElastic,Io as easeInOutCubic,Fo as easeInOutCirc,Xo as easeInOutBounce,Jo as easeInOutBack,Bo as easeInExpo,_o as easeInElastic,No as easeInCubic,Ho as easeInCirc,ue as easeInBounce,Uo as easeInBack,hr as devAssert,$p as detectLanguage,ce as deriveSpaceTint,oe as defaultTheme,Ep as dateTimeFormats,Pp as d,Zo as cssAnimation,j as createTheme,ad as createStorage,Hp as createStateManager,np as createSkipLink,ap as createScreenReaderText,Sr as createSafeClickHandler,Xd as createRovingTabindex,Jp as createRouteLoader,D as createPropValidator,Wp as createLRUCache,xp as createKeyframes,ei as createKeyframeAnimation,jp as createKeepAlive,Tp as createI18n,Jd as createFocusTrap,fr as createDebugger,Vp as createComponentPool,Gd as createAriaLabel,Ud as createAriaDescription,fi as copyToClipboard,qp as componentMessages,Up as clearModuleCache,ur as clearErrorHandler,Ue as buttonPropSchema,mr as assertProp,He as assert,sp as aria,eu as applyTheme,kp as applyHeadwindClasses,he as applyAnimation,Yd as announceToScreenReader,gp as animateWithClass,vp as animate,yo as VirtualTable,vo as VirtualList,xo as Video,Ee as TwoFactorChallenge,bo as Transition,ho as Tooltip,po as Textarea,Yt as TextInput,lo as Teleport,ro as Tabs,so as TableRow,eo as TableHeader,Za as TableHead,Ja as TableCell,Ua as TableBody,Ka as Table,oo as TabPanel,ks as TabBarItem,Cs as TabBar,re as THEMED_FAMILIES,Fa as Switch,qs as SubscriptionCheckout,K as StorageManager,Ha as StepperStep,ja as Stepper,qa as Spinner,Ma as Skeleton,Le as Signup,Ca as SidebarSpaces,ka as SidebarSpaceSwitcher,wa as SidebarSpace,ma as SidebarSection,ga as SidebarPinned,fa as SidebarItem,ua as SidebarHeader,da as SidebarFooter,la as Sidebar,ra as Select,ws as SectionCard,Gt as SearchInput,Mi as SHADE_VAR_PREFIX,oa as RadioGroupOption,sa as RadioGroupLabel,ea as RadioGroupDescription,Zs as RadioGroup,Js as Radio,l as PropTypes,Us as Progress,Ks as Portal,Fs as PopoverPanel,Hs as PopoverButton,js as Popover,Ms as PaymentMethods,_t as PasswordInput,Ds as Pagination,Vt as NumberInput,As as Notification,Ts as Navigator,ms as NavBar,De as Login,ds as ListboxOptions,ls as ListboxOption,rs as ListboxLabel,os as ListboxButton,ss as Listbox,gs as ListRow,ti as KeyframeAnimations,Ti as KeyboardShortcuts,Zd as KeyboardKeys,me as Installation,Bt as Image,xe as Hero,Mt as Form,ge as Footer,fs as FilterChips,us as FilterChip,M as ErrorTypes,Wt as EmailInput,dp as Easing,Et as DropdownItems,Lt as DropdownItem,Dt as DropdownButton,At as Dropdown,Tt as Drawer,kt as DialogTitle,Ct as DialogPanel,wt as DialogDescription,mt as DialogBackdrop,gt as Dialog,Es as DefaultPaymentMethod,N as ComponentError,ft as CommandPaletteItem,ut as CommandPalette,dt as ComboboxOptions,lt as ComboboxOption,rt as ComboboxInput,ot as ComboboxButton,st as Combobox,be as CodeBlock,Ls as Checkout,et as Checkbox,Ze as Card,Je as Calendar,Ge as Button,q as Breakpoints,je as Breadcrumb,qe as Badge,Me as Avatar,Ae as Audio,bp as AnimationClasses,Te as AccordionItem,ke as Accordion};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@stacksjs/components",
3
3
  "type": "module",
4
- "version": "0.2.260",
4
+ "version": "0.2.262",
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.19",
67
- "@stacksjs/stx": "0.2.260",
68
- "bun-plugin-stx": "0.2.260",
67
+ "@stacksjs/stx": "0.2.262",
68
+ "bun-plugin-stx": "0.2.262",
69
69
  "ts-syntax-highlighter": "^0.2.1"
70
70
  },
71
71
  "devDependencies": {
@@ -4,6 +4,23 @@ export const position = $props.position || 'right'
4
4
  export const title = $props.title || ''
5
5
  export const className = $props.className || ''
6
6
 
7
+ /*
8
+ * The surface, left to the app.
9
+ *
10
+ * The panel painted itself `bg-white dark:bg-blue-gray-800` and offered no way
11
+ * to say otherwise, so a drawer in an app with its own palette arrived as a
12
+ * white rectangle with the app's colours inside it - the one element on the
13
+ * screen that belongs to no theme. `className` did not help: it lands on the
14
+ * positioned wrapper, which is transparent, while the colour is on the
15
+ * scrolling container within.
16
+ *
17
+ * `panelStyle` rather than only a class because an app whose palette lives in
18
+ * CSS variables has nothing to name in a utility class.
19
+ */
20
+ export const panelClass = $props.panelClass || ''
21
+ export const panelStyle = $props.panelStyle || ''
22
+ export const backdropClass = $props.backdropClass || 'bg-gray-500/75 dark:bg-gray-900/75'
23
+
7
24
  const positionClasses = {
8
25
  right: 'inset-y-0 right-0 pl-10 sm:pl-16',
9
26
  left: 'inset-y-0 left-0 pr-10 sm:pr-16',
@@ -11,9 +28,14 @@ const positionClasses = {
11
28
  bottom: 'inset-x-0 bottom-0 pt-10',
12
29
  }
13
30
 
31
+ // `size` widens a side drawer without the app having to know that the width
32
+ // lives on the wrapper rather than the panel. Ignored for top/bottom, which
33
+ // are constrained by height instead.
34
+ const width = $props.size ? `max-w-${$props.size}` : 'max-w-md'
35
+
14
36
  const sizeClasses = {
15
- right: 'max-w-md w-screen',
16
- left: 'max-w-md w-screen',
37
+ right: `${width} w-screen`,
38
+ left: `${width} w-screen`,
17
39
  top: 'max-h-[90vh] w-full',
18
40
  bottom: 'max-h-[90vh] w-full',
19
41
  }
@@ -50,6 +72,119 @@ function onPanelKey(event) {
50
72
  if (event.key === 'Escape') close()
51
73
  }
52
74
 
75
+ /*
76
+ * Escape closes it from anywhere, not just from inside the panel.
77
+ *
78
+ * The keydown handler on the panel only fires when focus is already in it, and
79
+ * opening a drawer does not move focus - so the very first Escape, pressed
80
+ * while focus is still on whatever opened it, did nothing. Bound on the
81
+ * document instead, and only while open.
82
+ */
83
+ function onDocumentKey(event) {
84
+ if (event.key === 'Escape' && isOpen()) close()
85
+ }
86
+
87
+ /*
88
+ * Hold the page still behind the drawer.
89
+ *
90
+ * Without this the page scrolls under an open drawer, which on a phone means a
91
+ * drag inside the cart scrolls the restaurant behind it and the cart stays
92
+ * put. The scrollbar's width is replaced as padding so the page does not jump
93
+ * sideways when it disappears.
94
+ */
95
+ let restoreScroll = null
96
+
97
+ function lockScroll() {
98
+ if (restoreScroll) return
99
+
100
+ const gap = window.innerWidth - document.documentElement.clientWidth
101
+ const previous = { overflow: document.body.style.overflow, paddingRight: document.body.style.paddingRight }
102
+
103
+ document.body.style.overflow = 'hidden'
104
+ if (gap > 0) document.body.style.paddingRight = `${gap}px`
105
+
106
+ restoreScroll = () => {
107
+ document.body.style.overflow = previous.overflow
108
+ document.body.style.paddingRight = previous.paddingRight
109
+ restoreScroll = null
110
+ }
111
+ }
112
+
113
+ function unlockScroll() {
114
+ if (restoreScroll) restoreScroll()
115
+ }
116
+
117
+ /*
118
+ * Focus moves in on open and back on close.
119
+ *
120
+ * A drawer that leaves focus behind is unreachable by keyboard: Tab walks the
121
+ * page underneath it, and a screen reader never learns anything opened. Focus
122
+ * returns to whatever opened it on the way out, so closing does not dump the
123
+ * user at the top of the document.
124
+ */
125
+ let opener = null
126
+
127
+ /*
128
+ * Retried across frames, because focus is refused before the panel is shown.
129
+ *
130
+ * `:show` toggles the drawer's display, and that has not happened yet on the
131
+ * frame the effect runs: `focus()` on a `display: none` element is a silent
132
+ * no-op, so a single attempt left focus on the body every time. Nothing
133
+ * throws, and the drawer looks right - it is only unreachable by keyboard.
134
+ *
135
+ * So the attempt repeats until `document.activeElement` proves it landed,
136
+ * rather than assuming any one frame is late enough. Bounded, so a panel with
137
+ * nothing focusable in it cannot spin; the panel itself carries `tabindex=-1`
138
+ * and takes focus in that case. It also stops if the drawer closed in the
139
+ * meantime, so a drawer opened and shut inside those few frames does not
140
+ * pull focus back afterwards.
141
+ */
142
+ function focusFirst(attempts) {
143
+ if (!isOpen()) return
144
+
145
+ const panel = document.querySelector('[data-stx-drawer-panel]')
146
+ if (!panel) return
147
+
148
+ const target = panel.querySelector('[autofocus]') || panel.querySelector('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])') || panel
149
+
150
+ target.focus?.()
151
+
152
+ if (document.activeElement === target) return
153
+ if (attempts > 0) requestAnimationFrame(() => focusFirst(attempts - 1))
154
+ }
155
+
156
+ function captureFocus() {
157
+ opener = document.activeElement
158
+
159
+ requestAnimationFrame(() => focusFirst(10))
160
+ }
161
+
162
+ function releaseFocus() {
163
+ const target = opener
164
+ opener = null
165
+ if (target && typeof target.focus === 'function') target.focus()
166
+ }
167
+
168
+ effect(() => {
169
+ if (isOpen()) {
170
+ lockScroll()
171
+ captureFocus()
172
+ document.addEventListener('keydown', onDocumentKey)
173
+ }
174
+ else {
175
+ unlockScroll()
176
+ releaseFocus()
177
+ document.removeEventListener('keydown', onDocumentKey)
178
+ }
179
+ })
180
+
181
+ onDestroy(() => {
182
+ // A drawer removed while open would otherwise leave the page locked, with no
183
+ // drawer left to unlock it.
184
+ unlockScroll()
185
+ document.removeEventListener('keydown', onDocumentKey)
186
+ })
187
+
53
188
  defineExpose({
54
189
  open: () => isOpen.set(true),
55
190
  close,
@@ -59,8 +194,9 @@ defineExpose({
59
194
 
60
195
  <div :show="isOpen()">
61
196
  <div
62
- class="fixed inset-0 z-50 bg-gray-500/75 dark:bg-gray-900/75 transition-opacity duration-500"
197
+ class="fixed inset-0 z-50 {{ backdropClass }} transition-opacity duration-500"
63
198
  style="animation: fadeIn 0.5s ease-in-out"
199
+ aria-hidden="true"
64
200
  @click="onBackdropClick()"
65
201
  ></div>
66
202
 
@@ -70,6 +206,11 @@ defineExpose({
70
206
  <div
71
207
  class="{{ panelClasses }}"
72
208
  style="animation: slideIn 0.5s ease-in-out"
209
+ data-stx-drawer-panel
210
+ role="dialog"
211
+ aria-modal="true"
212
+ {{ title ? 'aria-label="' + title + '"' : '' }}
213
+ tabindex="-1"
73
214
  >
74
215
  <div class="{{ closeButtonClasses }}">
75
216
  <button
@@ -85,7 +226,7 @@ defineExpose({
85
226
  </button>
86
227
  </div>
87
228
 
88
- <div class="relative flex h-full flex-col overflow-y-auto bg-white dark:bg-blue-gray-800 py-6 shadow-xl">
229
+ <div class="relative flex h-full flex-col overflow-y-auto {{ panelClass || 'bg-white dark:bg-blue-gray-800' }} py-6 shadow-xl" style="{{ panelStyle }}">
89
230
  @if(title)
90
231
  <div class="px-4 sm:px-6">
91
232
  <h2 class="text-base font-semibold text-fg">
@@ -1,120 +0,0 @@
1
- <script server>
2
- export const open = $props.open ?? false
3
- export const position = $props.position || 'right'
4
- export const title = $props.title || ''
5
- export const className = $props.className || ''
6
-
7
- const positionClasses = {
8
- right: 'inset-y-0 right-0 pl-10 sm:pl-16',
9
- left: 'inset-y-0 left-0 pr-10 sm:pr-16',
10
- top: 'inset-x-0 top-0 pb-10',
11
- bottom: 'inset-x-0 bottom-0 pt-10',
12
- }
13
-
14
- const sizeClasses = {
15
- right: 'max-w-md w-screen',
16
- left: 'max-w-md w-screen',
17
- top: 'max-h-[90vh] w-full',
18
- bottom: 'max-h-[90vh] w-full',
19
- }
20
-
21
- const closeButtonPosition = {
22
- right: 'left-0 -ml-8 sm:-ml-10',
23
- left: 'right-0 -mr-8 sm:-mr-10',
24
- top: 'right-0 -mr-8',
25
- bottom: 'right-0 -mr-8',
26
- }
27
-
28
- export const containerClasses = `pointer-events-none fixed ${positionClasses[position]} flex max-w-full`.trim()
29
- export const panelClasses = `pointer-events-auto relative ${sizeClasses[position]} ${className}`.trim()
30
- export const closeButtonClasses = `absolute top-0 ${closeButtonPosition[position]} flex pt-4 pr-2 sm:pr-4`.trim()
31
- </script>
32
-
33
- <script client>
34
- const emit = defineEmits()
35
- // useReactiveProp lets the parent drive `open` via signals
36
- // (`:open="drawerOpen()"`) instead of the prop being captured once.
37
- // See stacksjs/stx#1704.
38
- const isOpen = useReactiveProp('open', {{ open }})
39
-
40
- function close() {
41
- isOpen.set(false)
42
- emit('close')
43
- }
44
-
45
- function onBackdropClick() {
46
- close()
47
- }
48
-
49
- function onPanelKey(event) {
50
- if (event.key === 'Escape') close()
51
- }
52
-
53
- defineExpose({
54
- open: () => isOpen.set(true),
55
- close,
56
- isOpen,
57
- })
58
- </script>
59
-
60
- <div :show="isOpen()">
61
- <div
62
- class="fixed inset-0 z-50 bg-gray-500/75 dark:bg-gray-900/75 transition-opacity duration-500"
63
- style="animation: fadeIn 0.5s ease-in-out"
64
- @click="onBackdropClick()"
65
- ></div>
66
-
67
- <div class="fixed inset-0 z-50 overflow-hidden" @keydown="onPanelKey($event)">
68
- <div class="absolute inset-0 overflow-hidden">
69
- <div class="{{ containerClasses }}">
70
- <div
71
- class="{{ panelClasses }}"
72
- style="animation: slideIn 0.5s ease-in-out"
73
- >
74
- <div class="{{ closeButtonClasses }}">
75
- <button
76
- type="button"
77
- class="relative rounded-md text-gray-300 dark:text-gray-400 hover:text-white dark:hover:text-white focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"
78
- @click="close()"
79
- >
80
- <span class="absolute -inset-2.5"></span>
81
- <span class="sr-only">Close panel</span>
82
- <svg class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true">
83
- <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12" />
84
- </svg>
85
- </button>
86
- </div>
87
-
88
- <div class="relative flex h-full flex-col overflow-y-auto bg-white dark:bg-blue-gray-800 py-6 shadow-xl">
89
- @if(title)
90
- <div class="px-4 sm:px-6">
91
- <h2 class="text-base font-semibold text-fg">
92
- {{ title }}
93
- </h2>
94
- </div>
95
- @endif
96
- <div class="relative mt-6 flex-1 px-4 sm:px-6">
97
- <slot />
98
- </div>
99
- </div>
100
- </div>
101
- </div>
102
- </div>
103
- </div>
104
- </div>
105
-
106
- <style>
107
- @keyframes fadeIn {
108
- from { opacity: 0; }
109
- to { opacity: 1; }
110
- }
111
-
112
- @keyframes slideIn {
113
- from {
114
- transform: {{ position === 'right' ? 'translateX(100%)' : position === 'left' ? 'translateX(-100%)' : position === 'top' ? 'translateY(-100%)' : 'translateY(100%)' }};
115
- }
116
- to {
117
- transform: translate(0, 0);
118
- }
119
- }
120
- </style>