@noxickon/onyx 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/chunks/Button-CLMaoxRW.js +11054 -0
  2. package/dist/chunks/Button-CZYAHivj.js +20 -0
  3. package/dist/chunks/Input-BQQT5eZ0.js +138 -0
  4. package/dist/chunks/Input-DJZcvJdP.js +1 -0
  5. package/dist/chunks/_commonjsHelpers-C6fGbg64.js +6 -0
  6. package/dist/chunks/_commonjsHelpers-DwGv2jUC.js +1 -0
  7. package/dist/chunks/constants-B1_n9ezb.js +1 -0
  8. package/dist/chunks/constants-CDXq37n6.js +4 -0
  9. package/dist/chunks/index-1-zQ3RaM.js +601 -0
  10. package/dist/chunks/index-BgUMV1hv.js +2129 -0
  11. package/dist/chunks/index-CjVXr8mh.js +2 -0
  12. package/dist/chunks/index-XTQUUzZ1.js +22 -0
  13. package/dist/chunks/isObject-BDHKUJKN.js +1 -0
  14. package/dist/chunks/isObject-vmP43YLW.js +6 -0
  15. package/dist/chunks/jsx-runtime-C5mzlN2N.js +284 -0
  16. package/dist/chunks/jsx-runtime-DUiatUiq.js +22 -0
  17. package/dist/chunks/useAuth-C-TIgBfr.js +61 -0
  18. package/dist/chunks/useAuth-CfKOZqhG.js +10 -0
  19. package/dist/chunks/useForm-BIKRbGHj.js +3085 -0
  20. package/dist/chunks/useForm-BZEaiRaa.js +26 -0
  21. package/dist/chunks/useQuery-B_ce5e8f.js +2 -0
  22. package/dist/chunks/useQuery-CJdYhuQu.js +1481 -0
  23. package/dist/context/context.cjs.js +1 -0
  24. package/dist/context/context.es.js +6 -0
  25. package/dist/context.d.ts +44 -0
  26. package/dist/hooks/hooks.cjs.js +6 -0
  27. package/dist/hooks/hooks.es.js +1917 -0
  28. package/dist/hooks.d.ts +130 -0
  29. package/dist/index.css +1 -1
  30. package/dist/index.d.ts +148 -110
  31. package/dist/layout/layout.cjs.js +1 -0
  32. package/dist/layout/layout.es.js +264 -0
  33. package/dist/layout.d.ts +89 -0
  34. package/dist/onyx.cjs.js +12 -0
  35. package/dist/onyx.es.js +2523 -9494
  36. package/dist/pages/pages.cjs.js +7 -0
  37. package/dist/pages/pages.es.js +93 -0
  38. package/dist/pages.d.ts +14 -0
  39. package/dist/shared.css +104 -0
  40. package/package.json +41 -16
  41. package/dist/onyx.umd.js +0 -42
@@ -0,0 +1,264 @@
1
+ import { j as e } from "../chunks/jsx-runtime-C5mzlN2N.js";
2
+ import { createContext as w, useMemo as N, useEffect as y, useContext as z } from "react";
3
+ import { t as d, O as h, b as m, a as u } from "../chunks/Button-CLMaoxRW.js";
4
+ import { M as C } from "../chunks/constants-CDXq37n6.js";
5
+ const L = ({
6
+ brand: r,
7
+ children: s,
8
+ className: a,
9
+ hasSidebar: t = !1,
10
+ navClassName: o,
11
+ toggleSidebar: n
12
+ }) => /* @__PURE__ */ e.jsx(
13
+ "header",
14
+ {
15
+ className: d(
16
+ "fixed top-0 z-50 h-15 w-full border-b border-neutral-800 bg-zinc-1000/50 backdrop-blur-xl",
17
+ a
18
+ ),
19
+ children: /* @__PURE__ */ e.jsxs(
20
+ "nav",
21
+ {
22
+ className: d(
23
+ "mx-auto flex max-w-10xl items-center justify-between px-4 py-2.5",
24
+ o
25
+ ),
26
+ children: [
27
+ /* @__PURE__ */ e.jsxs("div", { className: "flex items-center gap-3", children: [
28
+ t ? /* @__PURE__ */ e.jsx(
29
+ h,
30
+ {
31
+ "aria-label": "Open menu",
32
+ icon: "mdiMenu",
33
+ size: "md",
34
+ variant: "ghost",
35
+ onClick: n
36
+ }
37
+ ) : null,
38
+ r ? /* @__PURE__ */ e.jsx("div", { children: r }) : null
39
+ ] }),
40
+ s
41
+ ]
42
+ }
43
+ )
44
+ }
45
+ ), g = w({ collapsed: !1 }), f = "h-15", H = ({
46
+ brand: r,
47
+ children: s,
48
+ className: a,
49
+ collapsed: t = !1,
50
+ onClose: o
51
+ }) => {
52
+ const n = N(() => ({ collapsed: t }), [t]);
53
+ y(() => {
54
+ const l = () => {
55
+ window.innerWidth < C && !t ? document.body.classList.add("overflow-hidden") : document.body.classList.remove("overflow-hidden");
56
+ };
57
+ return l(), window.addEventListener("resize", l), () => {
58
+ document.body.classList.remove("overflow-hidden"), window.removeEventListener("resize", l);
59
+ };
60
+ }, [t]);
61
+ const i = r || o;
62
+ return /* @__PURE__ */ e.jsxs(g.Provider, { value: n, children: [
63
+ /* @__PURE__ */ e.jsxs(
64
+ "nav",
65
+ {
66
+ "aria-label": "Mobile navigation",
67
+ className: d(
68
+ "fixed inset-0 top-0 z-50 flex h-screen flex-col bg-zinc-1000/50 backdrop-blur-xl transition-transform duration-300 md:hidden",
69
+ t ? "-translate-x-full" : "translate-x-0",
70
+ a
71
+ ),
72
+ role: "navigation",
73
+ children: [
74
+ i ? /* @__PURE__ */ e.jsxs(
75
+ "div",
76
+ {
77
+ className: m(
78
+ f,
79
+ "flex h-15 items-center gap-3 border-b border-neutral-800 px-4"
80
+ ),
81
+ children: [
82
+ o ? /* @__PURE__ */ e.jsx(
83
+ h,
84
+ {
85
+ "aria-label": "Close sidebar",
86
+ icon: "mdiClose",
87
+ variant: "ghost",
88
+ onClick: o
89
+ }
90
+ ) : null,
91
+ r || null
92
+ ]
93
+ }
94
+ ) : null,
95
+ s
96
+ ]
97
+ }
98
+ ),
99
+ /* @__PURE__ */ e.jsxs(
100
+ "nav",
101
+ {
102
+ "aria-label": "Desktop navigation",
103
+ className: d(
104
+ "fixed z-40 hidden flex-col border-r border-neutral-800 bg-zinc-1000/50 text-white backdrop-blur-xl md:flex",
105
+ r ? "top-0 h-screen" : "viewport-minus-header",
106
+ t ? "w-16" : "w-64",
107
+ a
108
+ ),
109
+ role: "navigation",
110
+ children: [
111
+ r && !t ? /* @__PURE__ */ e.jsx(
112
+ "div",
113
+ {
114
+ "aria-label": t ? "Navigation collapsed" : "Navigation expanded",
115
+ className: m(f, "flex items-center border-b border-neutral-800 px-4"),
116
+ children: r
117
+ }
118
+ ) : null,
119
+ s
120
+ ]
121
+ }
122
+ )
123
+ ] });
124
+ }, p = () => z(g), I = ({
125
+ children: r,
126
+ className: s,
127
+ disabled: a = !1,
128
+ icon: t,
129
+ isActive: o = !1,
130
+ ...n
131
+ }) => {
132
+ const { collapsed: i } = p(), l = d(
133
+ "flex cursor-pointer items-center rounded-lg text-sm font-medium transition-colors",
134
+ i ? "size-10 justify-center" : "h-10 w-full gap-3 px-3",
135
+ o ? "bg-white/10 text-white" : a ? "cursor-not-allowed text-neutral-500" : "secondary-inset-focus text-neutral-300 hover:bg-white/6 hover:text-white",
136
+ s
137
+ );
138
+ if ("href" in n && n.href) {
139
+ const { href: c, ...v } = n;
140
+ return /* @__PURE__ */ e.jsxs(
141
+ "a",
142
+ {
143
+ "aria-current": o ? "page" : void 0,
144
+ className: l,
145
+ href: a ? void 0 : c,
146
+ onClick: a ? (j) => j.preventDefault() : void 0,
147
+ ...v,
148
+ children: [
149
+ /* @__PURE__ */ e.jsx("span", { className: "flex items-center", children: /* @__PURE__ */ e.jsx(u, { icon: t, size: 0.8 }) }),
150
+ !i && r ? r : null
151
+ ]
152
+ }
153
+ );
154
+ }
155
+ const { onClick: x, ...b } = n;
156
+ return /* @__PURE__ */ e.jsxs(
157
+ "button",
158
+ {
159
+ className: l,
160
+ disabled: a,
161
+ type: "button",
162
+ onClick: a ? void 0 : x,
163
+ ...b,
164
+ children: [
165
+ /* @__PURE__ */ e.jsx("span", { className: "flex items-center", children: /* @__PURE__ */ e.jsx(u, { icon: t, size: 0.8 }) }),
166
+ !i && r ? r : null
167
+ ]
168
+ }
169
+ );
170
+ }, P = ({
171
+ children: r,
172
+ className: s,
173
+ headline: a
174
+ }) => {
175
+ const { collapsed: t } = p();
176
+ return /* @__PURE__ */ e.jsxs("div", { className: d("flex flex-col gap-1", s), children: [
177
+ t ? null : /* @__PURE__ */ e.jsx("h3", { className: "mb-2 cursor-default px-3 text-xs font-medium text-neutral-400", children: a }),
178
+ r
179
+ ] });
180
+ }, B = ({ children: r, className: s }) => /* @__PURE__ */ e.jsx("div", { className: d("flex-1 space-y-1 overflow-y-auto p-4", s), children: r }), D = ({ children: r, className: s }) => /* @__PURE__ */ e.jsx("div", { className: d("border-t border-neutral-800 p-4", s), children: r }), O = {
181
+ purple: {
182
+ border: "border-purple-500/20",
183
+ bg: "bg-purple-500/10",
184
+ text: "text-purple-400"
185
+ },
186
+ blue: {
187
+ border: "border-blue-500/20",
188
+ bg: "bg-blue-500/10",
189
+ text: "text-blue-400"
190
+ },
191
+ emerald: {
192
+ border: "border-emerald-500/20",
193
+ bg: "bg-emerald-500/10",
194
+ text: "text-emerald-400"
195
+ },
196
+ orange: {
197
+ border: "border-orange-500/20",
198
+ bg: "bg-orange-500/10",
199
+ text: "text-orange-400"
200
+ },
201
+ rose: {
202
+ border: "border-rose-500/20",
203
+ bg: "bg-rose-500/10",
204
+ text: "text-rose-400"
205
+ },
206
+ amber: {
207
+ border: "border-amber-500/20",
208
+ bg: "bg-amber-500/10",
209
+ text: "text-amber-400"
210
+ },
211
+ cyan: {
212
+ border: "border-cyan-500/20",
213
+ bg: "bg-cyan-500/10",
214
+ text: "text-cyan-400"
215
+ },
216
+ indigo: {
217
+ border: "border-indigo-500/20",
218
+ bg: "bg-indigo-500/10",
219
+ text: "text-indigo-400"
220
+ }
221
+ }, R = ({
222
+ children: r,
223
+ className: s,
224
+ collapsed: a = !1,
225
+ color: t = "purple",
226
+ hasHeader: o = !1,
227
+ hasSidebar: n = !1,
228
+ icon: i,
229
+ subtitle: l,
230
+ title: x
231
+ }) => {
232
+ const b = x || l || i, c = O[t];
233
+ return /* @__PURE__ */ e.jsxs(
234
+ "main",
235
+ {
236
+ "aria-labelledby": b ? "main-headline" : void 0,
237
+ className: d(
238
+ "m-auto max-w-10xl overflow-y-auto p-6",
239
+ o && "mt-15 h-[calc(100vh-60px)]",
240
+ n && (a ? "md:ml-16" : "md:ml-64"),
241
+ s
242
+ ),
243
+ children: [
244
+ b && /* @__PURE__ */ e.jsx("div", { className: "mb-8 border-b border-neutral-800 pb-6", children: /* @__PURE__ */ e.jsxs("div", { className: "flex items-center gap-4", children: [
245
+ i && /* @__PURE__ */ e.jsx("div", { className: m("rounded-lg border p-3", c.border, c.bg), children: /* @__PURE__ */ e.jsx(u, { className: m(c.text), icon: i, size: 1.41 }) }),
246
+ /* @__PURE__ */ e.jsxs("div", { children: [
247
+ x && /* @__PURE__ */ e.jsx("h1", { id: "main-headline", className: "text-3xl font-bold text-white", children: x }),
248
+ l && /* @__PURE__ */ e.jsx("p", { className: "mt-1 text-sm text-neutral-400", children: l })
249
+ ] })
250
+ ] }) }),
251
+ r
252
+ ]
253
+ }
254
+ );
255
+ };
256
+ export {
257
+ L as OxHeader,
258
+ R as OxMainContent,
259
+ H as OxSidebar,
260
+ B as OxSidebarBody,
261
+ D as OxSidebarFooter,
262
+ P as OxSidebarGroup,
263
+ I as OxSidebarItem
264
+ };
@@ -0,0 +1,89 @@
1
+ import { default as default_2 } from 'react';
2
+
3
+ export declare interface BaseSidebarItemProps {
4
+ 'aria-label'?: string;
5
+ children: React.ReactNode;
6
+ className?: string;
7
+ disabled?: boolean;
8
+ icon: string;
9
+ isActive?: boolean;
10
+ }
11
+
12
+ export declare const OxHeader: default_2.FC<OxHeaderProps>;
13
+
14
+ export declare interface OxHeaderProps {
15
+ brand?: React.ReactNode;
16
+ children: React.ReactNode;
17
+ className?: string;
18
+ hasSidebar?: boolean;
19
+ navClassName?: string;
20
+ toggleSidebar?: () => void;
21
+ }
22
+
23
+ export declare const OxMainContent: React.FC<OxMainContentProps>;
24
+
25
+ declare type OxMainContentColor = 'purple' | 'blue' | 'emerald' | 'orange' | 'rose' | 'amber' | 'cyan' | 'indigo';
26
+
27
+ export declare interface OxMainContentProps {
28
+ children: React.ReactNode;
29
+ className?: string;
30
+ collapsed?: boolean;
31
+ color?: OxMainContentColor;
32
+ hasHeader?: boolean;
33
+ hasSidebar?: boolean;
34
+ icon?: string;
35
+ subtitle?: string;
36
+ title?: string;
37
+ }
38
+
39
+ export declare const OxSidebar: React.FC<OxSidebarProps>;
40
+
41
+ export declare const OxSidebarBody: React.FC<OxSidebarBodyProps>;
42
+
43
+ export declare interface OxSidebarBodyProps {
44
+ children: React.ReactNode;
45
+ className?: string;
46
+ }
47
+
48
+ export declare const OxSidebarFooter: default_2.FC<OxSidebarFooterProps>;
49
+
50
+ export declare interface OxSidebarFooterProps {
51
+ children: React.ReactNode;
52
+ className?: string;
53
+ }
54
+
55
+ export declare const OxSidebarGroup: default_2.FC<OxSidebarGroupProps>;
56
+
57
+ export declare interface OxSidebarGroupProps {
58
+ children: React.ReactNode;
59
+ className?: string;
60
+ headline: string;
61
+ }
62
+
63
+ export declare const OxSidebarItem: default_2.FC<OxSidebarItemProps>;
64
+
65
+ declare type OxSidebarItemProps = SidebarItemLinkProps | SidebarItemActionProps;
66
+
67
+ export declare interface OxSidebarProps {
68
+ brand?: React.ReactNode;
69
+ children: React.ReactNode;
70
+ className?: string;
71
+ collapsed?: boolean;
72
+ onClose?: () => void;
73
+ }
74
+
75
+ export declare interface SidebarItemActionProps extends BaseSidebarItemProps {
76
+ 'aria-controls'?: string;
77
+ 'aria-expanded'?: boolean;
78
+ 'aria-haspopup'?: boolean | 'menu' | 'dialog';
79
+ href?: never;
80
+ onClick: () => void;
81
+ }
82
+
83
+ export declare interface SidebarItemLinkProps extends BaseSidebarItemProps {
84
+ 'aria-describedby'?: string;
85
+ href: string;
86
+ onClick?: never;
87
+ }
88
+
89
+ export { }
@@ -0,0 +1,12 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('./index.css');const i=require("./chunks/jsx-runtime-DUiatUiq.js"),C=require("react"),w=require("./chunks/Button-CZYAHivj.js"),T=require("./chunks/Input-DJZcvJdP.js"),Ie=require("react-dom"),at=require("./chunks/constants-B1_n9ezb.js"),$e=require("./chunks/useAuth-CfKOZqhG.js");function lt(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const s=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,s.get?s:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const m=lt(C),it=({children:e,className:t})=>i.jsxRuntimeExports.jsx("div",{className:w.twMerge("flex items-center gap-3",t),children:e}),ce={rounded:"rounded-full",square:"rounded-lg"},de={sm:"h-6 w-6",md:"h-8 w-8",lg:"h-10 w-10",xl:"h-12 w-12","2xl":"h-16 w-16"},ut={sm:"h-2 w-2",md:"h-2.5 w-2.5",lg:"h-3 w-3",xl:"h-3.5 w-3.5","2xl":"h-4 w-4"},ct={online:"bg-green-500",offline:"bg-neutral-500",away:"bg-yellow-500",busy:"bg-red-500"},dt={sm:"text-xs",md:"text-sm",lg:"text-base",xl:"text-base","2xl":"text-lg"},Me=({alt:e,className:t,fallback:r,showStatus:s=!1,size:n="md",skeleton:o=!1,src:l,status:u,type:a="square"})=>{const[c,d]=C.useState(!1),[x,f]=C.useState(!1),[b,g]=C.useState(!0);C.useEffect(()=>{if(!l){d(!1),f(!0),g(!1);return}g(!0);const E=new Image;E.src=l;const p=()=>{d(!0),f(!1),g(!1)},h=()=>{d(!1),f(!0),g(!1)};return E.addEventListener("load",p),E.addEventListener("error",h),()=>{E.removeEventListener("load",p),E.removeEventListener("error",h)}},[l]);const v=()=>b&&o?i.jsxRuntimeExports.jsx("div",{className:w.twJoin("animate-pulse bg-zinc-800",ce[a],de[n])}):c&&!x?i.jsxRuntimeExports.jsx("img",{alt:e,className:w.twMerge(ce[a],de[n],"object-cover",t),loading:"lazy",src:l}):i.jsxRuntimeExports.jsx("div",{"aria-label":e,className:w.twMerge("flex items-center justify-center bg-zinc-800 font-medium text-white",ce[a],de[n],dt[n],t),role:"img",children:typeof r=="string"&&r.length>2?r.substring(0,2):r});return i.jsxRuntimeExports.jsxs("div",{className:"relative shrink-0",children:[v(),s&&u&&i.jsxRuntimeExports.jsx("span",{"aria-label":`Status: ${u}`,className:w.twJoin("absolute right-0 bottom-0 rounded-full border-2 border-zinc-900",ut[n],ct[u]),role:"status"})]})},mt=({className:e,size:t="md",subtext:r,username:s})=>{const n={sm:"text-xs",md:"text-sm",lg:"text-base",xl:"text-lg","2xl":"text-xl"},o={sm:"text-xs",md:"text-xs",lg:"text-sm",xl:"text-sm","2xl":"text-base"};return i.jsxRuntimeExports.jsxs("div",{className:w.twMerge("flex flex-col justify-center overflow-hidden",e),children:[i.jsxRuntimeExports.jsx("span",{className:w.twJoin("block truncate font-medium text-white",n[t]),children:s}),r&&i.jsxRuntimeExports.jsx("span",{className:w.twJoin("block truncate text-neutral-400",o[t]),children:r})]})},xt={sm:"px-1 py-0.5 text-xs",md:"px-1.5 py-0.5 text-sm",lg:"px-2 py-1 text-base"},ft={purple:"bg-purple-500/25 text-purple-400",lime:"bg-lime-400/10 text-lime-300",red:"bg-red-500/25 text-red-400",yellow:"bg-yellow-500/25 text-yellow-400",green:"bg-green-500/25 text-green-400",blue:"bg-blue-500/25 text-blue-400",indigo:"bg-indigo-500/25 text-indigo-400",pink:"bg-pink-500/25 text-pink-400",amber:"bg-amber-500/25 text-amber-400",emerald:"bg-emerald-500/25 text-emerald-400",teal:"bg-teal-500/25 text-teal-400",cyan:"bg-cyan-500/25 text-cyan-400",sky:"bg-sky-500/25 text-sky-400",violet:"bg-violet-500/25 text-violet-400",fuchsia:"bg-fuchsia-500/25 text-fuchsia-400",gray:"bg-gray-500/25 text-gray-400"};function pt(e){const t=e.startsWith("#")?e.substring(1):e;if(!/^[0-9A-Fa-f]{3,6}$/.test(t))return"#FFFFFF";const s=parseInt(t.length===3?t[0]+t[0]:t.substr(0,2),16),n=parseInt(t.length===3?t[1]+t[1]:t.substr(2,2),16),o=parseInt(t.length===3?t[2]+t[2]:t.substr(4,2),16);return(.299*s+.587*n+.114*o)/255>.5?"#000000":"#FFFFFF"}const Q=({bgColor:e,children:t,className:r,color:s="purple",size:n="md",textColor:o})=>{const l=!e&&!o?ft[s]:"",u={};return e&&(u.backgroundColor=e,o||(u.color=pt(e))),o&&(u.color=o),i.jsxRuntimeExports.jsx("span",{className:w.twMerge("inline-flex items-center rounded-md font-medium",xt[n],l,r),style:Object.keys(u).length?u:void 0,children:t})},ht={default:"bg-zinc-900/90 border border-zinc-800",outline:"bg-transparent border border-zinc-700",gradient:"bg-gradient-to-br from-zinc-900 via-purple-900/20 to-zinc-900 border border-purple-800/30"},gt={none:"p-0",sm:"p-3",md:"p-4",lg:"p-6"},bt={none:"",lift:"hover:scale-[1.01] hover:-translate-y-1",glow:"hover:shadow-lg hover:shadow-purple-500/10",border:"hover:border-purple-500/50"},vt={purple:"hover:border-purple-500/50",blue:"hover:border-blue-500/50",emerald:"hover:border-emerald-500/50",orange:"hover:border-orange-500/50",rose:"hover:border-rose-500/50",amber:"hover:border-amber-500/50",cyan:"hover:border-cyan-500/50",indigo:"hover:border-indigo-500/50"},wt={purple:"from-purple-500/5 to-pink-500/5",blue:"from-blue-500/5 to-cyan-500/5",emerald:"from-emerald-500/5 to-teal-500/5",orange:"from-orange-500/5 to-red-500/5",rose:"from-rose-500/5 to-pink-500/5",amber:"from-amber-500/5 to-orange-500/5",cyan:"from-cyan-500/5 to-blue-500/5",indigo:"from-indigo-500/5 to-purple-500/5"},yt=({backdropBlur:e=!1,children:t,className:r,color:s="purple",equalHeight:n=!1,hoverVariant:o="lift",hoverable:l=!1,padding:u="md",variant:a="default",...c})=>{const d=l?o:"none",x=l&&d!=="none";return i.jsxRuntimeExports.jsxs("div",{className:w.twMerge("relative overflow-hidden rounded-lg transition-all duration-300",ht[a],gt[u],n&&"flex flex-col",e&&"backdrop-blur-sm",x&&bt[d],x&&"group hover:bg-white/5",x&&vt[s],r),...c,children:[x&&i.jsxRuntimeExports.jsx("div",{className:w.twMerge("absolute inset-0 bg-gradient-to-br opacity-0 transition-opacity duration-300 group-hover:opacity-100",wt[s])}),i.jsxRuntimeExports.jsx("div",{className:"relative z-10",children:t})]})},jt={purple:{border:"border-purple-500/20",bg:"bg-purple-500/10",text:"text-purple-400"},blue:{border:"border-blue-500/20",bg:"bg-blue-500/10",text:"text-blue-400"},emerald:{border:"border-emerald-500/20",bg:"bg-emerald-500/10",text:"text-emerald-400"},orange:{border:"border-orange-500/20",bg:"bg-orange-500/10",text:"text-orange-400"},rose:{border:"border-rose-500/20",bg:"bg-rose-500/10",text:"text-rose-400"},amber:{border:"border-amber-500/20",bg:"bg-amber-500/10",text:"text-amber-400"},cyan:{border:"border-cyan-500/20",bg:"bg-cyan-500/10",text:"text-cyan-400"},indigo:{border:"border-indigo-500/20",bg:"bg-indigo-500/10",text:"text-indigo-400"}},Et=({action:e,children:t,className:r,color:s="purple",icon:n,iconColor:o,subtitle:l,title:u,...a})=>{if(t)return i.jsxRuntimeExports.jsx("div",{className:w.twMerge("mb-4",r),...a,children:t});const d=jt[o||s];return i.jsxRuntimeExports.jsxs("div",{className:w.twMerge("mb-4 flex items-start justify-between gap-3",r),...a,children:[i.jsxRuntimeExports.jsxs("div",{className:"flex items-center gap-3",children:[n&&i.jsxRuntimeExports.jsx("div",{className:w.twMerge("rounded-lg border p-2",d.border,d.bg),children:i.jsxRuntimeExports.jsx(w.OxIcon,{className:d.text,icon:n})}),i.jsxRuntimeExports.jsxs("div",{children:[u&&i.jsxRuntimeExports.jsx("h3",{className:"text-base font-semibold text-white",children:u}),l&&i.jsxRuntimeExports.jsx("p",{className:"text-sm text-neutral-400",children:l})]})]}),e&&i.jsxRuntimeExports.jsx("div",{children:e})]})},Rt=({children:e,className:t,flexGrow:r=!0,...s})=>i.jsxRuntimeExports.jsx("div",{className:w.twMerge("py-2",r&&"flex-grow",t),...s,children:e}),Ct=({children:e,className:t,...r})=>i.jsxRuntimeExports.jsx("div",{className:w.twMerge("mt-4 flex items-center justify-end border-t border-neutral-800 pt-4",t),...r,children:e}),Nt={sm:"h-4 w-4",md:"h-5 w-5",lg:"h-6 w-6"},kt={sm:.5,md:.7,lg:.9},Ot=({checked:e,className:t,defaultChecked:r,description:s,disabled:n=!1,error:o=!1,errorMessage:l,id:u,label:a,name:c,onChange:d,required:x=!1,size:f="md",value:b,...g})=>{const v=C.useId(),E=u||v,p=`${E}-checkbox`,h=`${E}-description`,y=`${E}-error`,R=o&&l,O=i.jsxRuntimeExports.jsxs("div",{className:"relative inline-flex shrink-0",children:[i.jsxRuntimeExports.jsx("input",{id:p,"aria-describedby":[s?h:"",R?y:""].filter(Boolean).join(" ")||void 0,"aria-invalid":o,"aria-required":x,checked:e,className:w.twMerge("peer cursor-pointer appearance-none rounded-sm","checked:bg-violet-700","default-outset-focus","disabled:cursor-not-allowed disabled:opacity-50",o?"default-error-border":"default-border",Nt[f],t),defaultChecked:r,disabled:n,name:c,type:"checkbox",value:b,onChange:d,...g}),i.jsxRuntimeExports.jsx(w.OxIcon,{className:"pointer-events-none absolute inset-0 m-auto opacity-0 peer-checked:opacity-80",icon:"mdiCheck",size:kt[f]||.7})]});return i.jsxRuntimeExports.jsxs("div",{className:"flex w-full flex-col gap-1",children:[i.jsxRuntimeExports.jsxs("div",{className:"flex items-start gap-2",children:[O,a&&i.jsxRuntimeExports.jsxs("div",{className:"flex w-full flex-col gap-1",children:[i.jsxRuntimeExports.jsx(T.OxLabel,{htmlFor:p,required:x,children:a}),s?i.jsxRuntimeExports.jsx(T.OxDescription,{id:h,disabled:n,children:s}):null]})]}),R?i.jsxRuntimeExports.jsx(T.OxErrorMessage,{id:y,children:l}):null]})},Fe=({align:e="center",ariaHaspopup:t,children:r,className:s,content:n,contentClassName:o,contentRole:l,contentStyle:u,disabled:a=!1,id:c,offset:d=8,onOpenChange:x,open:f,portal:b=!0,position:g="top",trigger:v="hover",useAriaControls:E=!1})=>{const p=C.useId(),[h,y]=C.useState(!1),R=C.useRef(null),O=C.useRef(null),F=f!==void 0,k=a?!1:F?f:h,D=c||p,S=C.useCallback(j=>{a||(x==null||x(j),F||y(j))},[a,F,x]),M=C.useCallback(()=>{if(!R.current||!O.current||!k)return;const j=R.current.getBoundingClientRect(),N=O.current.getBoundingClientRect(),L={width:window.innerWidth,height:window.innerHeight};let P=g;g==="top"&&j.top<N.height+d?P="bottom":g==="bottom"&&j.bottom+N.height+d>L.height?P="top":g==="left"&&j.left<N.width+d?P="right":g==="right"&&j.right+N.width+d>L.width&&(P="left");const $=A(j,N,P,e,d);O.current&&(O.current.style.left=`${$.x}px`,O.current.style.top=`${$.y}px`)},[k,g,e,d]);C.useEffect(()=>{if(!k||v!=="click")return;const j=N=>{R.current&&!R.current.contains(N.target)&&O.current&&!O.current.contains(N.target)&&S(!1)};return document.addEventListener("mousedown",j),()=>document.removeEventListener("mousedown",j)},[k,S,v]),C.useEffect(()=>{if(k){M();const j=()=>M(),N=()=>M();return window.addEventListener("resize",j),window.addEventListener("scroll",N,!0),()=>{window.removeEventListener("resize",j),window.removeEventListener("scroll",N,!0)}}},[k,g,e,d,M]);const A=(j,N,L,P,$)=>{let J=0,V=0;switch(L){case"top":J=j.left,V=j.top-N.height-$;break;case"bottom":J=j.left,V=j.bottom+$;break;case"left":J=j.left-N.width-$,V=j.top;break;case"right":J=j.right+$,V=j.top;break}if(L==="top"||L==="bottom")switch(P){case"start":break;case"center":J=j.left+(j.width-N.width)/2;break;case"end":J=j.right-N.width;break}else if(L==="left"||L==="right")switch(P){case"start":break;case"center":V=j.top+(j.height-N.height)/2;break;case"end":V=j.bottom-N.height;break}return{x:J,y:V}},K=()=>{v==="hover"&&S(!0)},ie=()=>{v==="hover"&&S(!1)},Y=()=>{v==="click"&&S(!k)},te=()=>{v==="focus"&&S(!0)},ue=()=>{v==="focus"&&S(!1)},G=k?i.jsxRuntimeExports.jsx("div",{id:D,"aria-hidden":!k,className:w.twMerge("fixed z-50 transition-opacity duration-200",k?"opacity-100":"pointer-events-none opacity-0",o),ref:O,role:l,style:{left:-9999,top:-9999,...u},children:i.jsxRuntimeExports.jsx("div",{className:"relative",children:n})}):null;return i.jsxRuntimeExports.jsxs(i.jsxRuntimeExports.Fragment,{children:[i.jsxRuntimeExports.jsx("div",{"aria-controls":E&&k?D:void 0,"aria-describedby":!E&&k?D:void 0,"aria-expanded":E?k:void 0,"aria-haspopup":t,className:w.twMerge("w-full",s),ref:R,onBlur:ue,onClick:Y,onFocus:te,onMouseEnter:K,onMouseLeave:ie,children:r}),b&&typeof document<"u"?Ie.createPortal(G,document.body):G]})},ge=({children:e})=>i.jsxRuntimeExports.jsx(i.jsxRuntimeExports.Fragment,{children:e}),De=({children:e})=>i.jsxRuntimeExports.jsx(i.jsxRuntimeExports.Fragment,{children:e}),be=({children:e,className:t})=>i.jsxRuntimeExports.jsx("div",{className:w.twMerge("sticky top-0 flex-shrink-0 border-b border-neutral-700 bg-zinc-1000/95 px-3 py-2 backdrop-blur-lg",t),children:e}),Te=C.createContext({open:!1,setOpen:()=>{},disabled:!1});function ze(){const e=C.useContext(Te);if(e===void 0)throw new Error("useDropdownContext must be used within a DropdownProvider");return e}const ve=({animateIcon:e=!1,children:t,className:r,disabled:s=!1,icon:n,outline:o=!1,unstyled:l=!1,...u})=>{const{disabled:a,open:c}=ze(),d=s||a;return i.jsxRuntimeExports.jsxs("button",{"aria-expanded":c,"aria-haspopup":"menu",className:w.twMerge(!l&&["flex h-10 items-center justify-between rounded-lg px-3 py-2 text-sm enabled:cursor-pointer enabled:text-white enabled:hover:bg-white/6","default-outset-focus",o?"default-border":"bg-transparent","default-disabled"],r),disabled:d,type:"button",...u,children:[l?t:i.jsxRuntimeExports.jsx("span",{className:"flex items-center gap-2",children:t}),n&&i.jsxRuntimeExports.jsx(w.OxIcon,{className:w.twJoin(!l&&"ml-2",d&&"text-neutral-500",e&&["transition-transform duration-200",c&&"rotate-180"]),icon:n,size:.8})]})},Be=({children:e,className:t,defaultOpen:r=!1,disabled:s=!1,onOpenChange:n,open:o})=>{const[l,u]=C.useState(r),a=o!==void 0,c=a?o:l,d=h=>{s||(a||u(h),n==null||n(h))},x={open:c,setOpen:d,disabled:s};let f=null,b=null;const g={children:null,className:""},v={children:null,className:""};let E={side:"bottom",align:"start",className:""};C.Children.forEach(e,h=>{if(C.isValidElement(h)){if(h.type===ve)f=h;else if(h.type===be){const y=h.props;g.className=y.className,g.children=y.children}else if(h.type===De){const y=h.props;v.className=y.className,v.children=y.children}else if(h.type===ge){const y=h.props;b=y.children,E={side:y.side||"bottom",align:y.align||"start",className:y.className||""}}}});const p=i.jsxRuntimeExports.jsxs("div",{className:w.twMerge("default-border z-50 flex max-h-96 min-w-[8rem] flex-col overflow-hidden rounded-lg bg-zinc-1000/50 p-1 backdrop-blur-xl",E.side==="bottom"&&"animate-dropdown-in-bottom",E.side==="top"&&"animate-dropdown-in-top",E.className),children:[g.children?i.jsxRuntimeExports.jsx("div",{className:w.twMerge("flex-shrink-0 border-b border-neutral-700 bg-zinc-1000/95 px-3 py-2 backdrop-blur-sm",g.className),children:g.children}):null,i.jsxRuntimeExports.jsx("ul",{className:w.twMerge("min-h-0 flex-1 overflow-y-auto"),children:b}),v.children?i.jsxRuntimeExports.jsx("div",{className:w.twMerge("flex-shrink-0 border-t border-neutral-700 bg-zinc-1000/95 px-3 py-2 backdrop-blur-sm",v.className),children:v.children}):null]});return i.jsxRuntimeExports.jsx(Te.Provider,{value:x,children:i.jsxRuntimeExports.jsx("div",{className:w.twMerge("inline-block",t),children:i.jsxRuntimeExports.jsx(Fe,{align:E.align,content:p,contentRole:"menu",disabled:s,open:c,portal:!0,position:E.side,trigger:"click",onOpenChange:d,children:f})})})},We=({children:e,className:t,disabled:r=!1,icon:s,onClick:n,unstyled:o=!1})=>{const{setOpen:l}=ze(),u=a=>{r||(n&&n(a),l(!1))};return i.jsxRuntimeExports.jsx("li",{children:i.jsxRuntimeExports.jsxs("button",{className:w.twMerge(!o&&["group flex w-full items-center rounded-sm px-2 py-1.5 text-left text-sm enabled:text-white","enabled:cursor-pointer enabled:hover:bg-white/6","default-inset-focus","default-disabled"],t),disabled:r,role:"menuitem",onClick:u,children:[s&&i.jsxRuntimeExports.jsx(w.OxIcon,{className:w.twJoin("mr-2",r&&"text-neutral-500"),icon:s,size:.75}),e]})})},St=({className:e})=>i.jsxRuntimeExports.jsx("li",{className:"px-1 py-1",children:i.jsxRuntimeExports.jsx("hr",{className:w.twMerge("border-t-neutral-700",e)})}),Lt=({children:e,className:t})=>i.jsxRuntimeExports.jsx("span",{className:w.twMerge("ml-auto text-xs tracking-widest text-neutral-500",t),"data-part":"dropdown-shortcut",children:e}),Pt=e=>{const r=Math.floor((new Date().getTime()-e.getTime())/(1e3*60));if(r<1)return"just now";if(r<60)return`${r}m ago`;const s=Math.floor(r/60);if(s<24)return`${s}h ago`;const n=Math.floor(s/24);return n<7?`${n}d ago`:e.toLocaleDateString()},It={error:{background:"bg-rose-500/20",iconClass:"text-rose-400",icon:"mdiAlertCircleOutline"},success:{background:"bg-green-500/20",iconClass:"text-green-400",icon:"mdiCheckCircleOutline"},warning:{background:"bg-amber-500/20",iconClass:"text-amber-400",icon:"mdiAlertOutline"},info:{background:"bg-blue-500/20",iconClass:"text-blue-400",icon:"mdiInformationOutline"},default:{background:"bg-neutral-500/20",iconClass:"text-neutral-400",icon:"mdiBellOutline"}},$t=({className:e,disabled:t=!1,emptyMessage:r="No notifications",maxHeight:s="max-h-96",notifications:n,onMarkAllRead:o,onNotificationClick:l,unreadCount:u=0})=>{const[a,c]=C.useState(!1),[d,x]=C.useState(!1),f=u>99?"99+":u.toString(),b=u>0,g=n.length>0;C.useEffect(()=>{const h=()=>{const y=window.innerWidth<at.MOBILE_BREAKPOINT;x(y),y&&a?document.body.classList.add("overflow-hidden"):document.body.classList.remove("overflow-hidden")};return h(),window.addEventListener("resize",h),()=>{document.body.classList.remove("overflow-hidden"),window.removeEventListener("resize",h)}},[a]);const v=h=>{l==null||l(h),d&&c(!1)},E=()=>{o==null||o(),d&&c(!1)},p=()=>i.jsxRuntimeExports.jsx(i.jsxRuntimeExports.Fragment,{children:g?i.jsxRuntimeExports.jsx("div",{className:"divide-y divide-neutral-800/50",children:n.map((h,y)=>{const R=It[h.type||"default"];return i.jsxRuntimeExports.jsxs(We,{className:w.twMerge("secondary-inset-focus flex w-full items-start gap-3 px-3 py-3 text-left hover:bg-white/6",!h.read&&"bg-white/3",y===n.length-1&&"pb-4"),unstyled:!0,onClick:()=>v(h),children:[i.jsxRuntimeExports.jsx("div",{className:w.twMerge("mt-0.5 flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-lg",R.background),children:h.img?i.jsxRuntimeExports.jsx(Me,{alt:"User avatar",fallback:"NA",size:"md",src:h.img}):i.jsxRuntimeExports.jsx(w.OxIcon,{className:R.iconClass,icon:h.icon??R.icon,size:.75})}),i.jsxRuntimeExports.jsxs("div",{className:"min-w-0 flex-1",children:[i.jsxRuntimeExports.jsx("p",{className:"mb-1 text-sm leading-5 text-white",children:h.title}),h.message&&i.jsxRuntimeExports.jsx("p",{className:"mb-1 text-xs leading-4 text-neutral-400",children:h.message}),i.jsxRuntimeExports.jsx("p",{className:"text-xs text-neutral-500",children:Pt(h.timestamp)})]}),!h.read&&i.jsxRuntimeExports.jsx("div",{className:"mt-1.5 h-2 w-2 flex-shrink-0 rounded-full bg-rose-500"})]},h.id)})}):i.jsxRuntimeExports.jsxs("div",{"aria-label":"No notifications available",className:"px-3 py-8 text-center",role:"status",children:[i.jsxRuntimeExports.jsx(w.OxIcon,{className:"mx-auto mb-2 text-neutral-500",icon:"mdiBellOffOutline",size:2}),i.jsxRuntimeExports.jsx("p",{className:"text-sm text-neutral-400",children:r})]})});return i.jsxRuntimeExports.jsx(i.jsxRuntimeExports.Fragment,{children:d?i.jsxRuntimeExports.jsxs("div",{children:[i.jsxRuntimeExports.jsxs("div",{className:"relative",children:[i.jsxRuntimeExports.jsx(w.OxButton,{"aria-expanded":a,"aria-label":`Notifications${b?` (${u} unread)`:""}`,disabled:t,icon:"mdiBellOutline",variant:"ghost",onClick:()=>c(!a)}),b?i.jsxRuntimeExports.jsx(i.jsxRuntimeExports.Fragment,{children:i.jsxRuntimeExports.jsx("div",{className:"absolute -top-2 -right-2",children:i.jsxRuntimeExports.jsx(Q,{className:"min-w-[1.25rem] justify-center px-1",color:"violet",size:"sm",children:f})})}):null]}),Ie.createPortal(i.jsxRuntimeExports.jsxs("div",{"aria-labelledby":"notifications-title-mobile","aria-modal":"true",className:w.twMerge("fixed inset-y-0 z-50 flex w-full flex-col bg-zinc-1000/50 backdrop-blur-xl transition-transform duration-300",a?"translate-x-0":"translate-x-full"),role:"dialog",children:[i.jsxRuntimeExports.jsxs("div",{className:"flex h-15 items-center justify-between border-b border-neutral-800 px-4",children:[d?i.jsxRuntimeExports.jsx(w.OxButton,{"aria-label":"Close sidebar",icon:"mdiClose",variant:"ghost",onClick:()=>c(!1)}):null,i.jsxRuntimeExports.jsx("h3",{id:"notifications-title-mobile",className:"text-sm font-semibold text-white",children:"Notifications"}),i.jsxRuntimeExports.jsx("div",{className:"flex items-center gap-2",children:b&&o&&i.jsxRuntimeExports.jsx("button",{className:"cursor-pointer text-xs text-neutral-400 transition-colors hover:text-white",onClick:E,children:"Mark all read"})})]}),i.jsxRuntimeExports.jsx("ul",{className:"flex-1 overflow-y-auto",children:i.jsxRuntimeExports.jsx(p,{})})]}),document.body)]}):i.jsxRuntimeExports.jsxs(Be,{className:e,disabled:t,children:[i.jsxRuntimeExports.jsx(ve,{"aria-label":`Notifications${b?` (${u} unread)`:""}`,className:w.twJoin("relative flex h-10 w-10 items-center justify-center px-2 text-sm","secondary-outset-focus group rounded-lg border border-transparent bg-transparent text-white enabled:cursor-pointer enabled:hover:bg-white/6"),disabled:t,icon:"mdiBellOutline",unstyled:!0,children:b?i.jsxRuntimeExports.jsx(i.jsxRuntimeExports.Fragment,{children:i.jsxRuntimeExports.jsx("div",{className:"absolute -top-2 -right-2",children:i.jsxRuntimeExports.jsx(Q,{className:"min-w-[1.25rem] justify-center px-1",color:"violet",size:"sm",children:f})})}):null}),i.jsxRuntimeExports.jsx(be,{children:i.jsxRuntimeExports.jsxs("div",{className:"flex items-center justify-between",children:[i.jsxRuntimeExports.jsx("h3",{id:"notifications-title",className:"text-sm font-semibold text-white",children:"Notifications"}),b&&o&&i.jsxRuntimeExports.jsx("button",{className:"secondary-outset-focus cursor-pointer rounded-lg p-1 text-xs text-neutral-400 transition-colors hover:text-white",onClick:o,children:"Mark all read"})]})}),i.jsxRuntimeExports.jsx(ge,{align:"end","aria-labelledby":"notifications-title",className:w.twMerge("flex w-85 flex-col overflow-hidden p-0",s),side:"bottom",children:i.jsxRuntimeExports.jsx(p,{})})]})})},Ae=C.createContext(void 0),Mt=()=>{const e=C.useContext(Ae);if(!e)throw new Error("Select components must be used within an OxSelect");return e},He=({children:e,className:t,disabled:r=!1,id:s,value:n})=>{const{closeDropdown:o,onSelect:l,selectedValue:u}=Mt(),a=()=>{l({value:n,label:e})},c=x=>{(x.key==="Enter"||x.key===" ")&&(x.preventDefault(),l({value:n,label:e})),x.key==="Escape"&&o()},d=u.includes(n);return i.jsxRuntimeExports.jsx("li",{role:"none",children:i.jsxRuntimeExports.jsxs("button",{id:s,"aria-selected":d,className:w.twMerge("group flex w-full items-center justify-between rounded-sm px-2 py-1.5 text-left text-sm enabled:text-white","enabled:cursor-pointer enabled:hover:bg-white/6","default-inset-focus","default-disabled",d&&"bg-white/5",t),disabled:r,role:"option",tabIndex:r?-1:0,onClick:a,onKeyDown:c,children:[e,d&&!r&&i.jsxRuntimeExports.jsx(w.OxIcon,{className:"text-violet-700",icon:"mdiCheck",size:.8})]})})};let me=null,xe=null;const Ft=()=>(me||(me=document.createElement("canvas"),xe=me.getContext("2d"),xe.font="0.875rem system-ui, sans-serif"),xe),Dt=(e,t,r)=>{if(e.length===0)return[];if(!t.current)return e.slice(0,1);const s=t.current.offsetWidth||0,n=12,o=32,l=32;let u=s-n-o;e.length>1&&(u-=l);const a=Ft();if(!a)return e.slice(0,2);const c=r?4:8,d=r?12:0;let x=0,f=0;for(let b=0;b<e.length;b++){const g=e[b],v=String(g.label),p=a.measureText(v).width+(r?d:0),h=b>0?x+p+c:x+p;if(h<=u)x=h,f++;else break}return f=Math.max(1,f),e.slice(0,f)},Tt=e=>e==null?[]:Array.isArray(e)?e:[e],zt=({badgeColor:e="purple",children:t,className:r,defaultValue:s=null,description:n,disabled:o=!1,displayAsBadges:l=!1,error:u=!1,errorMessage:a,id:c,label:d,multiple:x=!1,name:f,onChange:b,placeholder:g="Select an option",required:v=!1})=>{var G;const E=C.useId(),p=C.useRef(null),[h,y]=C.useState(!1),[R,O]=C.useState([]),F=c||E,k=`${F}-select`,D=`${F}-description`,S=`${F}-error`,M=u&&a,A=(j,N)=>{let L=null;return C.Children.forEach(j,P=>{if(C.isValidElement(P)&&P.type===He){const $=P.props;$.value===N&&(L={value:$.value,label:$.children})}}),L},K=j=>{var L;let N;if(x?R.some($=>$.value===j.value)?N=R.filter($=>$.value!==j.value):N=[...R,j]:(N=[j],y(!1)),O(N),b){const P=x?N.map($=>$.value):((L=N[0])==null?void 0:L.value)??null;b(P)}};C.useEffect(()=>{if(s!==void 0){const j=Tt(s),N=[];j.forEach(L=>{const P=A(t,L);P&&N.push(P)}),O(x?N:N.slice(0,1))}},[s,t,x]);const ie=i.jsxRuntimeExports.jsx("ul",{id:`${k}-listbox`,"aria-multiselectable":x,className:"max-h-72 space-y-0.5 overflow-hidden overflow-y-auto",role:"listbox",children:t}),Y=Dt(R,p,l),te=R.length-Y.length,ue=te>0;return i.jsxRuntimeExports.jsx(Ae.Provider,{value:{selectedValue:R.map(j=>j.value),multiple:x,onSelect:K,closeDropdown:()=>y(!1)},children:i.jsxRuntimeExports.jsxs("div",{className:w.twMerge("flex w-full flex-col gap-1",r),children:[d&&i.jsxRuntimeExports.jsx(T.OxLabel,{htmlFor:k,required:v,children:d}),i.jsxRuntimeExports.jsx(Fe,{align:"start",content:ie,contentClassName:"default-border bg-zinc-1000/70 rounded-lg p-1 backdrop-blur-xl animate-dropdown-in-bottom",contentStyle:{minWidth:`${((G=p.current)==null?void 0:G.offsetWidth)||200}px`},disabled:o,open:h,position:"bottom",trigger:"click",onOpenChange:y,children:i.jsxRuntimeExports.jsxs("button",{id:k,"aria-controls":`${k}-listbox`,"aria-describedby":[n?D:"",M?S:""].filter(Boolean).join(" ")||void 0,"aria-disabled":o,"aria-expanded":h,"aria-haspopup":"listbox","aria-invalid":u,"aria-required":v,className:w.twJoin("relative flex h-10 w-full gap-x-2 rounded-lg py-2 ps-3 pe-8 text-start text-sm enabled:cursor-pointer enabled:text-white","default-outset-focus default-disabled",u?"default-error-border":"default-border",h&&"default-active-border"),disabled:o,ref:p,role:"combobox",type:"button",children:[i.jsxRuntimeExports.jsx("span",{className:w.twJoin("w-full overflow-hidden text-ellipsis",l?x&&"flex flex-wrap gap-1":"whitespace-nowrap",o&&l&&"opacity-50"),children:R.length>0?i.jsxRuntimeExports.jsxs(i.jsxRuntimeExports.Fragment,{children:[l&&x?Y.map(j=>i.jsxRuntimeExports.jsx(Q,{color:e,size:"sm",children:j.label},String(j.value))):Y.map((j,N,L)=>i.jsxRuntimeExports.jsxs(C.Fragment,{children:[j.label,N<L.length-1&&", "]},String(j.value))),ue&&i.jsxRuntimeExports.jsxs(i.jsxRuntimeExports.Fragment,{children:[!(l&&x)&&" ",i.jsxRuntimeExports.jsxs(Q,{color:e,size:"sm",children:["+",te]})]})]}):g}),i.jsxRuntimeExports.jsx("div",{className:"absolute end-3 top-1/2 -translate-y-1/2",children:i.jsxRuntimeExports.jsx(w.OxIcon,{className:w.twJoin("transition-transform duration-300 ease-in-out",o&&"text-neutral-500",h&&"rotate-180"),icon:"mdiChevronDown",size:.8})})]})}),f&&i.jsxRuntimeExports.jsx("input",{name:f,type:"hidden",value:R.map(j=>j.value).join(",")}),n&&i.jsxRuntimeExports.jsx(T.OxDescription,{id:D,disabled:o,children:n}),M&&i.jsxRuntimeExports.jsx(T.OxErrorMessage,{id:S,children:a})]})})},Bt=({children:e,className:t})=>i.jsxRuntimeExports.jsx("div",{className:w.twMerge("px-2 py-1 text-xs font-medium text-neutral-400",t),children:e}),Wt={default:"bg-zinc-800/80",purple:"bg-purple-950/50",blue:"bg-blue-950/50",gray:"bg-gray-800/50"},At={rectangle:"rounded-md",circle:"rounded-full"},_e=({animate:e=!0,className:t,color:r="default",fullWidth:s=!1,height:n,shape:o="rectangle",width:l,...u})=>{const a={height:typeof n=="number"?`${n}px`:n,width:typeof l=="number"?`${l}px`:l};return i.jsxRuntimeExports.jsx("div",{"aria-busy":"true","aria-label":"Loading...",className:w.twMerge("relative overflow-hidden",Wt[r],At[o],e&&"animate-pulse",s&&"w-full",t),role:"status",style:a,...u})},Ht=({animate:e=!0,className:t,color:r="default",fullWidth:s=!1,gap:n=8,height:o=20,lines:l=1,width:u,...a})=>{const c=f=>f<=1?`${f*100}%`:`${f}px`,d=f=>{if(!s){if(Array.isArray(u)){const b=u[f%u.length];return b==null?void 0:typeof b=="number"?c(b):b}if(typeof u=="number"){if(l>1&&f===l-1){const b=u<=1?u*.6:Math.max(100,u*.6);return c(b)}return c(u)}return"200px"}},x={4:"space-y-1",8:"space-y-2",12:"space-y-3",16:"space-y-4",20:"space-y-5"}[n]||"space-y-2";return i.jsxRuntimeExports.jsx("div",{className:w.twMerge("flex flex-col",x,t),...a,children:Array.from({length:l}).map((f,b)=>i.jsxRuntimeExports.jsx(_e,{animate:e,color:r,fullWidth:s,height:o,width:d(b)},b))})},_t=({className:e,description:t,disabled:r=!1,error:s=!1,errorMessage:n,id:o,label:l,name:u,onChange:a,placeholder:c="Enter text...",readOnly:d=!1,required:x=!1,rows:f=3,showMaxLength:b=!1,value:g,...v})=>{const E=C.useId(),[p,h]=C.useState(typeof g=="string"?g.length:0),y=o||E,R=`${y}-textarea`,O=`${y}-description`,F=`${y}-error`,k=v.maxLength,D=s&&n;C.useEffect(()=>{typeof g=="string"&&h(g.length)},[g]);const S=A=>{const K=A.target.value.length;h(K),a==null||a(A)},M=i.jsxRuntimeExports.jsx("textarea",{id:R,"aria-describedby":[t?O:"",D?F:""].filter(Boolean).join(" ")||void 0,"aria-invalid":s,"aria-required":x,className:w.twMerge("flex min-h-10 w-full resize-y rounded-lg bg-transparent px-2 py-2 text-sm text-white","placeholder:text-neutral-500","default-outset-focus","default-disabled",s?"default-error-border":"default-border",e),disabled:r,name:u,placeholder:c,readOnly:d,rows:f,value:g,onChange:S,...v});return i.jsxRuntimeExports.jsxs("div",{className:"flex w-full flex-col gap-1",children:[l?i.jsxRuntimeExports.jsx(T.OxLabel,{htmlFor:R,required:x,children:l}):null,M,b&&typeof k=="number"?i.jsxRuntimeExports.jsxs("div",{className:"pointer-events-none mt-1 text-right text-xs text-neutral-400",children:[p,"/",k]}):null,t?i.jsxRuntimeExports.jsx(T.OxDescription,{id:O,disabled:r,children:t}):null,D?i.jsxRuntimeExports.jsx(T.OxErrorMessage,{id:F,children:n}):null]})};/**
2
+ * react-router v7.7.0
3
+ *
4
+ * Copyright (c) Remix Software Inc.
5
+ *
6
+ * This source code is licensed under the MIT license found in the
7
+ * LICENSE.md file in the root directory of this source tree.
8
+ *
9
+ * @license MIT
10
+ */function I(e,t){if(e===!1||e===null||typeof e>"u")throw new Error(t)}function z(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function he({pathname:e="/",search:t="",hash:r=""}){return t&&t!=="?"&&(e+=t.charAt(0)==="?"?t:"?"+t),r&&r!=="#"&&(e+=r.charAt(0)==="#"?r:"#"+r),e}function we(e){let t={};if(e){let r=e.indexOf("#");r>=0&&(t.hash=e.substring(r),e=e.substring(0,r));let s=e.indexOf("?");s>=0&&(t.search=e.substring(s),e=e.substring(0,s)),e&&(t.pathname=e)}return t}function Ue(e,t,r="/"){return Ut(e,t,r,!1)}function Ut(e,t,r,s){let n=typeof t=="string"?we(t):t,o=_(n.pathname||"/",r);if(o==null)return null;let l=Je(e);Jt(l);let u=null;for(let a=0;u==null&&a<l.length;++a){let c=rr(o);u=er(l[a],c,s)}return u}function Je(e,t=[],r=[],s=""){let n=(o,l,u)=>{let a={relativePath:u===void 0?o.path||"":u,caseSensitive:o.caseSensitive===!0,childrenIndex:l,route:o};a.relativePath.startsWith("/")&&(I(a.relativePath.startsWith(s),`Absolute route path "${a.relativePath}" nested under path "${s}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),a.relativePath=a.relativePath.slice(s.length));let c=H([s,a.relativePath]),d=r.concat(a);o.children&&o.children.length>0&&(I(o.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${c}".`),Je(o.children,t,d,c)),!(o.path==null&&!o.index)&&t.push({path:c,score:Qt(c,o.index),routesMeta:d})};return e.forEach((o,l)=>{var u;if(o.path===""||!((u=o.path)!=null&&u.includes("?")))n(o,l);else for(let a of Ve(o.path))n(o,l,a)}),t}function Ve(e){let t=e.split("/");if(t.length===0)return[];let[r,...s]=t,n=r.endsWith("?"),o=r.replace(/\?$/,"");if(s.length===0)return n?[o,""]:[o];let l=Ve(s.join("/")),u=[];return u.push(...l.map(a=>a===""?o:[o,a].join("/"))),n&&u.push(...l),u.map(a=>e.startsWith("/")&&a===""?"/":a)}function Jt(e){e.sort((t,r)=>t.score!==r.score?r.score-t.score:Zt(t.routesMeta.map(s=>s.childrenIndex),r.routesMeta.map(s=>s.childrenIndex)))}var Vt=/^:[\w-]+$/,qt=3,Kt=2,Yt=1,Gt=10,Xt=-2,Se=e=>e==="*";function Qt(e,t){let r=e.split("/"),s=r.length;return r.some(Se)&&(s+=Xt),t&&(s+=Kt),r.filter(n=>!Se(n)).reduce((n,o)=>n+(Vt.test(o)?qt:o===""?Yt:Gt),s)}function Zt(e,t){return e.length===t.length&&e.slice(0,-1).every((s,n)=>s===t[n])?e[e.length-1]-t[t.length-1]:0}function er(e,t,r=!1){let{routesMeta:s}=e,n={},o="/",l=[];for(let u=0;u<s.length;++u){let a=s[u],c=u===s.length-1,d=o==="/"?t:t.slice(o.length)||"/",x=oe({path:a.relativePath,caseSensitive:a.caseSensitive,end:c},d),f=a.route;if(!x&&c&&r&&!s[s.length-1].route.index&&(x=oe({path:a.relativePath,caseSensitive:a.caseSensitive,end:!1},d)),!x)return null;Object.assign(n,x.params),l.push({params:n,pathname:H([o,x.pathname]),pathnameBase:ar(H([o,x.pathnameBase])),route:f}),x.pathnameBase!=="/"&&(o=H([o,x.pathnameBase]))}return l}function oe(e,t){typeof e=="string"&&(e={path:e,caseSensitive:!1,end:!0});let[r,s]=tr(e.path,e.caseSensitive,e.end),n=t.match(r);if(!n)return null;let o=n[0],l=o.replace(/(.)\/+$/,"$1"),u=n.slice(1);return{params:s.reduce((c,{paramName:d,isOptional:x},f)=>{if(d==="*"){let g=u[f]||"";l=o.slice(0,o.length-g.length).replace(/(.)\/+$/,"$1")}const b=u[f];return x&&!b?c[d]=void 0:c[d]=(b||"").replace(/%2F/g,"/"),c},{}),pathname:o,pathnameBase:l,pattern:e}}function tr(e,t=!1,r=!0){z(e==="*"||!e.endsWith("*")||e.endsWith("/*"),`Route path "${e}" will be treated as if it were "${e.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${e.replace(/\*$/,"/*")}".`);let s=[],n="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(l,u,a)=>(s.push({paramName:u,isOptional:a!=null}),a?"/?([^\\/]+)?":"/([^\\/]+)"));return e.endsWith("*")?(s.push({paramName:"*"}),n+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):r?n+="\\/*$":e!==""&&e!=="/"&&(n+="(?:(?=\\/|$))"),[new RegExp(n,t?void 0:"i"),s]}function rr(e){try{return e.split("/").map(t=>decodeURIComponent(t).replace(/\//g,"%2F")).join("/")}catch(t){return z(!1,`The URL path "${e}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${t}).`),e}}function _(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let r=t.endsWith("/")?t.length-1:t.length,s=e.charAt(r);return s&&s!=="/"?null:e.slice(r)||"/"}function nr(e,t="/"){let{pathname:r,search:s="",hash:n=""}=typeof e=="string"?we(e):e;return{pathname:r?r.startsWith("/")?r:sr(r,t):t,search:lr(s),hash:ir(n)}}function sr(e,t){let r=t.replace(/\/+$/,"").split("/");return e.split("/").forEach(n=>{n===".."?r.length>1&&r.pop():n!=="."&&r.push(n)}),r.length>1?r.join("/"):"/"}function fe(e,t,r,s){return`Cannot include a '${e}' character in a manually specified \`to.${t}\` field [${JSON.stringify(s)}]. Please separate it out to the \`to.${r}\` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.`}function or(e){return e.filter((t,r)=>r===0||t.route.path&&t.route.path.length>0)}function ye(e){let t=or(e);return t.map((r,s)=>s===t.length-1?r.pathname:r.pathnameBase)}function je(e,t,r,s=!1){let n;typeof e=="string"?n=we(e):(n={...e},I(!n.pathname||!n.pathname.includes("?"),fe("?","pathname","search",n)),I(!n.pathname||!n.pathname.includes("#"),fe("#","pathname","hash",n)),I(!n.search||!n.search.includes("#"),fe("#","search","hash",n)));let o=e===""||n.pathname==="",l=o?"/":n.pathname,u;if(l==null)u=r;else{let x=t.length-1;if(!s&&l.startsWith("..")){let f=l.split("/");for(;f[0]==="..";)f.shift(),x-=1;n.pathname=f.join("/")}u=x>=0?t[x]:"/"}let a=nr(n,u),c=l&&l!=="/"&&l.endsWith("/"),d=(o||l===".")&&r.endsWith("/");return!a.pathname.endsWith("/")&&(c||d)&&(a.pathname+="/"),a}var H=e=>e.join("/").replace(/\/\/+/g,"/"),ar=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),lr=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,ir=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e;function ur(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}var qe=["POST","PUT","PATCH","DELETE"];new Set(qe);var cr=["GET",...qe];new Set(cr);var q=m.createContext(null);q.displayName="DataRouter";var ae=m.createContext(null);ae.displayName="DataRouterState";m.createContext(!1);var Ke=m.createContext({isTransitioning:!1});Ke.displayName="ViewTransition";var dr=m.createContext(new Map);dr.displayName="Fetchers";var mr=m.createContext(null);mr.displayName="Await";var B=m.createContext(null);B.displayName="Navigation";var Ee=m.createContext(null);Ee.displayName="Location";var W=m.createContext({outlet:null,matches:[],isDataRoute:!1});W.displayName="Route";var Re=m.createContext(null);Re.displayName="RouteError";function xr(e,{relative:t}={}){I(Z(),"useHref() may be used only in the context of a <Router> component.");let{basename:r,navigator:s}=m.useContext(B),{hash:n,pathname:o,search:l}=ee(e,{relative:t}),u=o;return r!=="/"&&(u=o==="/"?r:H([r,o])),s.createHref({pathname:u,search:l,hash:n})}function Z(){return m.useContext(Ee)!=null}function U(){return I(Z(),"useLocation() may be used only in the context of a <Router> component."),m.useContext(Ee).location}var Ye="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function Ge(e){m.useContext(B).static||m.useLayoutEffect(e)}function Xe(){let{isDataRoute:e}=m.useContext(W);return e?Nr():fr()}function fr(){I(Z(),"useNavigate() may be used only in the context of a <Router> component.");let e=m.useContext(q),{basename:t,navigator:r}=m.useContext(B),{matches:s}=m.useContext(W),{pathname:n}=U(),o=JSON.stringify(ye(s)),l=m.useRef(!1);return Ge(()=>{l.current=!0}),m.useCallback((a,c={})=>{if(z(l.current,Ye),!l.current)return;if(typeof a=="number"){r.go(a);return}let d=je(a,JSON.parse(o),n,c.relative==="path");e==null&&t!=="/"&&(d.pathname=d.pathname==="/"?t:H([t,d.pathname])),(c.replace?r.replace:r.push)(d,c.state,c)},[t,r,o,n,e])}m.createContext(null);function ee(e,{relative:t}={}){let{matches:r}=m.useContext(W),{pathname:s}=U(),n=JSON.stringify(ye(r));return m.useMemo(()=>je(e,JSON.parse(n),s,t==="path"),[e,n,s,t])}function pr(e,t,r,s){I(Z(),"useRoutes() may be used only in the context of a <Router> component.");let{navigator:n}=m.useContext(B),{matches:o}=m.useContext(W),l=o[o.length-1],u=l?l.params:{},a=l?l.pathname:"/",c=l?l.pathnameBase:"/",d=l&&l.route;{let p=d&&d.path||"";Qe(a,!d||p.endsWith("*")||p.endsWith("*?"),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${a}" (under <Route path="${p}">) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.
11
+
12
+ Please change the parent <Route path="${p}"> to <Route path="${p==="/"?"*":`${p}/*`}">.`)}let x=U(),f;f=x;let b=f.pathname||"/",g=b;if(c!=="/"){let p=c.replace(/^\//,"").split("/");g="/"+b.replace(/^\//,"").split("/").slice(p.length).join("/")}let v=Ue(e,{pathname:g});return z(d||v!=null,`No routes matched location "${f.pathname}${f.search}${f.hash}" `),z(v==null||v[v.length-1].route.element!==void 0||v[v.length-1].route.Component!==void 0||v[v.length-1].route.lazy!==void 0,`Matched leaf route at location "${f.pathname}${f.search}${f.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`),wr(v&&v.map(p=>Object.assign({},p,{params:Object.assign({},u,p.params),pathname:H([c,n.encodeLocation?n.encodeLocation(p.pathname).pathname:p.pathname]),pathnameBase:p.pathnameBase==="/"?c:H([c,n.encodeLocation?n.encodeLocation(p.pathnameBase).pathname:p.pathnameBase])})),o,r,s)}function hr(){let e=Cr(),t=ur(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),r=e instanceof Error?e.stack:null,s="rgba(200,200,200, 0.5)",n={padding:"0.5rem",backgroundColor:s},o={padding:"2px 4px",backgroundColor:s},l=null;return console.error("Error handled by React Router default ErrorBoundary:",e),l=m.createElement(m.Fragment,null,m.createElement("p",null,"💿 Hey developer 👋"),m.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",m.createElement("code",{style:o},"ErrorBoundary")," or"," ",m.createElement("code",{style:o},"errorElement")," prop on your route.")),m.createElement(m.Fragment,null,m.createElement("h2",null,"Unexpected Application Error!"),m.createElement("h3",{style:{fontStyle:"italic"}},t),r?m.createElement("pre",{style:n},r):null,l)}var gr=m.createElement(hr,null),br=class extends m.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!=="idle"&&e.revalidation==="idle"?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error!==void 0?e.error:t.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){console.error("React Router caught the following error during render",e,t)}render(){return this.state.error!==void 0?m.createElement(W.Provider,{value:this.props.routeContext},m.createElement(Re.Provider,{value:this.state.error,children:this.props.component})):this.props.children}};function vr({routeContext:e,match:t,children:r}){let s=m.useContext(q);return s&&s.static&&s.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(s.staticContext._deepestRenderedBoundaryId=t.route.id),m.createElement(W.Provider,{value:e},r)}function wr(e,t=[],r=null,s=null){if(e==null){if(!r)return null;if(r.errors)e=r.matches;else if(t.length===0&&!r.initialized&&r.matches.length>0)e=r.matches;else return null}let n=e,o=r==null?void 0:r.errors;if(o!=null){let a=n.findIndex(c=>c.route.id&&(o==null?void 0:o[c.route.id])!==void 0);I(a>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(o).join(",")}`),n=n.slice(0,Math.min(n.length,a+1))}let l=!1,u=-1;if(r)for(let a=0;a<n.length;a++){let c=n[a];if((c.route.HydrateFallback||c.route.hydrateFallbackElement)&&(u=a),c.route.id){let{loaderData:d,errors:x}=r,f=c.route.loader&&!d.hasOwnProperty(c.route.id)&&(!x||x[c.route.id]===void 0);if(c.route.lazy||f){l=!0,u>=0?n=n.slice(0,u+1):n=[n[0]];break}}}return n.reduceRight((a,c,d)=>{let x,f=!1,b=null,g=null;r&&(x=o&&c.route.id?o[c.route.id]:void 0,b=c.route.errorElement||gr,l&&(u<0&&d===0?(Qe("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),f=!0,g=null):u===d&&(f=!0,g=c.route.hydrateFallbackElement||null)));let v=t.concat(n.slice(0,d+1)),E=()=>{let p;return x?p=b:f?p=g:c.route.Component?p=m.createElement(c.route.Component,null):c.route.element?p=c.route.element:p=a,m.createElement(vr,{match:c,routeContext:{outlet:a,matches:v,isDataRoute:r!=null},children:p})};return r&&(c.route.ErrorBoundary||c.route.errorElement||d===0)?m.createElement(br,{location:r.location,revalidation:r.revalidation,component:b,error:x,children:E(),routeContext:{outlet:null,matches:v,isDataRoute:!0}}):E()},null)}function Ce(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function yr(e){let t=m.useContext(q);return I(t,Ce(e)),t}function jr(e){let t=m.useContext(ae);return I(t,Ce(e)),t}function Er(e){let t=m.useContext(W);return I(t,Ce(e)),t}function Ne(e){let t=Er(e),r=t.matches[t.matches.length-1];return I(r.route.id,`${e} can only be used on routes that contain a unique "id"`),r.route.id}function Rr(){return Ne("useRouteId")}function Cr(){var s;let e=m.useContext(Re),t=jr("useRouteError"),r=Ne("useRouteError");return e!==void 0?e:(s=t.errors)==null?void 0:s[r]}function Nr(){let{router:e}=yr("useNavigate"),t=Ne("useNavigate"),r=m.useRef(!1);return Ge(()=>{r.current=!0}),m.useCallback(async(n,o={})=>{z(r.current,Ye),r.current&&(typeof n=="number"?e.navigate(n):await e.navigate(n,{fromRouteId:t,...o}))},[e,t])}var Le={};function Qe(e,t,r){!t&&!Le[e]&&(Le[e]=!0,z(!1,r))}m.memo(kr);function kr({routes:e,future:t,state:r}){return pr(e,void 0,r,t)}function Ze({to:e,replace:t,state:r,relative:s}){I(Z(),"<Navigate> may be used only in the context of a <Router> component.");let{static:n}=m.useContext(B);z(!n,"<Navigate> must not be used on the initial render in a <StaticRouter>. This is a no-op, but you should modify your code so the <Navigate> is only ever rendered in response to some user interaction or state change.");let{matches:o}=m.useContext(W),{pathname:l}=U(),u=Xe(),a=je(e,ye(o),l,s==="path"),c=JSON.stringify(a);return m.useEffect(()=>{u(JSON.parse(c),{replace:t,state:r,relative:s})},[u,c,s,t,r]),null}var ne="get",se="application/x-www-form-urlencoded";function le(e){return e!=null&&typeof e.tagName=="string"}function Or(e){return le(e)&&e.tagName.toLowerCase()==="button"}function Sr(e){return le(e)&&e.tagName.toLowerCase()==="form"}function Lr(e){return le(e)&&e.tagName.toLowerCase()==="input"}function Pr(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function Ir(e,t){return e.button===0&&(!t||t==="_self")&&!Pr(e)}var re=null;function $r(){if(re===null)try{new FormData(document.createElement("form"),0),re=!1}catch{re=!0}return re}var Mr=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function pe(e){return e!=null&&!Mr.has(e)?(z(!1,`"${e}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${se}"`),null):e}function Fr(e,t){let r,s,n,o,l;if(Sr(e)){let u=e.getAttribute("action");s=u?_(u,t):null,r=e.getAttribute("method")||ne,n=pe(e.getAttribute("enctype"))||se,o=new FormData(e)}else if(Or(e)||Lr(e)&&(e.type==="submit"||e.type==="image")){let u=e.form;if(u==null)throw new Error('Cannot submit a <button> or <input type="submit"> without a <form>');let a=e.getAttribute("formaction")||u.getAttribute("action");if(s=a?_(a,t):null,r=e.getAttribute("formmethod")||u.getAttribute("method")||ne,n=pe(e.getAttribute("formenctype"))||pe(u.getAttribute("enctype"))||se,o=new FormData(u,e),!$r()){let{name:c,type:d,value:x}=e;if(d==="image"){let f=c?`${c}.`:"";o.append(`${f}x`,"0"),o.append(`${f}y`,"0")}else c&&o.append(c,x)}}else{if(le(e))throw new Error('Cannot submit element that is not <form>, <button>, or <input type="submit|image">');r=ne,s=null,n=se,l=e}return o&&n==="text/plain"&&(l=o,o=void 0),{action:s,method:r.toLowerCase(),encType:n,formData:o,body:l}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function ke(e,t){if(e===!1||e===null||typeof e>"u")throw new Error(t)}function Dr(e,t,r){let s=typeof e=="string"?new URL(e,typeof window>"u"?"server://singlefetch/":window.location.origin):e;return s.pathname==="/"?s.pathname=`_root.${r}`:t&&_(s.pathname,t)==="/"?s.pathname=`${t.replace(/\/$/,"")}/_root.${r}`:s.pathname=`${s.pathname.replace(/\/$/,"")}.${r}`,s}async function Tr(e,t){if(e.id in t)return t[e.id];try{let r=await import(e.module);return t[e.id]=r,r}catch(r){return console.error(`Error loading route module \`${e.module}\`, reloading page...`),console.error(r),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function zr(e){return e==null?!1:e.href==null?e.rel==="preload"&&typeof e.imageSrcSet=="string"&&typeof e.imageSizes=="string":typeof e.rel=="string"&&typeof e.href=="string"}async function Br(e,t,r){let s=await Promise.all(e.map(async n=>{let o=t.routes[n.route.id];if(o){let l=await Tr(o,r);return l.links?l.links():[]}return[]}));return _r(s.flat(1).filter(zr).filter(n=>n.rel==="stylesheet"||n.rel==="preload").map(n=>n.rel==="stylesheet"?{...n,rel:"prefetch",as:"style"}:{...n,rel:"prefetch"}))}function Pe(e,t,r,s,n,o){let l=(a,c)=>r[c]?a.route.id!==r[c].route.id:!0,u=(a,c)=>{var d;return r[c].pathname!==a.pathname||((d=r[c].route.path)==null?void 0:d.endsWith("*"))&&r[c].params["*"]!==a.params["*"]};return o==="assets"?t.filter((a,c)=>l(a,c)||u(a,c)):o==="data"?t.filter((a,c)=>{var x;let d=s.routes[a.route.id];if(!d||!d.hasLoader)return!1;if(l(a,c)||u(a,c))return!0;if(a.route.shouldRevalidate){let f=a.route.shouldRevalidate({currentUrl:new URL(n.pathname+n.search+n.hash,window.origin),currentParams:((x=r[0])==null?void 0:x.params)||{},nextUrl:new URL(e,window.origin),nextParams:a.params,defaultShouldRevalidate:!0});if(typeof f=="boolean")return f}return!0}):[]}function Wr(e,t,{includeHydrateFallback:r}={}){return Ar(e.map(s=>{let n=t.routes[s.route.id];if(!n)return[];let o=[n.module];return n.clientActionModule&&(o=o.concat(n.clientActionModule)),n.clientLoaderModule&&(o=o.concat(n.clientLoaderModule)),r&&n.hydrateFallbackModule&&(o=o.concat(n.hydrateFallbackModule)),n.imports&&(o=o.concat(n.imports)),o}).flat(1))}function Ar(e){return[...new Set(e)]}function Hr(e){let t={},r=Object.keys(e).sort();for(let s of r)t[s]=e[s];return t}function _r(e,t){let r=new Set;return new Set(t),e.reduce((s,n)=>{let o=JSON.stringify(Hr(n));return r.has(o)||(r.add(o),s.push({key:o,link:n})),s},[])}function et(){let e=m.useContext(q);return ke(e,"You must render this element inside a <DataRouterContext.Provider> element"),e}function Ur(){let e=m.useContext(ae);return ke(e,"You must render this element inside a <DataRouterStateContext.Provider> element"),e}var Oe=m.createContext(void 0);Oe.displayName="FrameworkContext";function tt(){let e=m.useContext(Oe);return ke(e,"You must render this element inside a <HydratedRouter> element"),e}function Jr(e,t){let r=m.useContext(Oe),[s,n]=m.useState(!1),[o,l]=m.useState(!1),{onFocus:u,onBlur:a,onMouseEnter:c,onMouseLeave:d,onTouchStart:x}=t,f=m.useRef(null);m.useEffect(()=>{if(e==="render"&&l(!0),e==="viewport"){let v=p=>{p.forEach(h=>{l(h.isIntersecting)})},E=new IntersectionObserver(v,{threshold:.5});return f.current&&E.observe(f.current),()=>{E.disconnect()}}},[e]),m.useEffect(()=>{if(s){let v=setTimeout(()=>{l(!0)},100);return()=>{clearTimeout(v)}}},[s]);let b=()=>{n(!0)},g=()=>{n(!1),l(!1)};return r?e!=="intent"?[o,f,{}]:[o,f,{onFocus:X(u,b),onBlur:X(a,g),onMouseEnter:X(c,b),onMouseLeave:X(d,g),onTouchStart:X(x,b)}]:[!1,f,{}]}function X(e,t){return r=>{e&&e(r),r.defaultPrevented||t(r)}}function Vr({page:e,...t}){let{router:r}=et(),s=m.useMemo(()=>Ue(r.routes,e,r.basename),[r.routes,e,r.basename]);return s?m.createElement(Kr,{page:e,matches:s,...t}):null}function qr(e){let{manifest:t,routeModules:r}=tt(),[s,n]=m.useState([]);return m.useEffect(()=>{let o=!1;return Br(e,t,r).then(l=>{o||n(l)}),()=>{o=!0}},[e,t,r]),s}function Kr({page:e,matches:t,...r}){let s=U(),{manifest:n,routeModules:o}=tt(),{basename:l}=et(),{loaderData:u,matches:a}=Ur(),c=m.useMemo(()=>Pe(e,t,a,n,s,"data"),[e,t,a,n,s]),d=m.useMemo(()=>Pe(e,t,a,n,s,"assets"),[e,t,a,n,s]),x=m.useMemo(()=>{if(e===s.pathname+s.search+s.hash)return[];let g=new Set,v=!1;if(t.forEach(p=>{var y;let h=n.routes[p.route.id];!h||!h.hasLoader||(!c.some(R=>R.route.id===p.route.id)&&p.route.id in u&&((y=o[p.route.id])!=null&&y.shouldRevalidate)||h.hasClientLoader?v=!0:g.add(p.route.id))}),g.size===0)return[];let E=Dr(e,l,"data");return v&&g.size>0&&E.searchParams.set("_routes",t.filter(p=>g.has(p.route.id)).map(p=>p.route.id).join(",")),[E.pathname+E.search]},[l,u,s,n,c,t,e,o]),f=m.useMemo(()=>Wr(d,n),[d,n]),b=qr(d);return m.createElement(m.Fragment,null,x.map(g=>m.createElement("link",{key:g,rel:"prefetch",as:"fetch",href:g,...r})),f.map(g=>m.createElement("link",{key:g,rel:"modulepreload",href:g,...r})),b.map(({key:g,link:v})=>m.createElement("link",{key:g,...v})))}function Yr(...e){return t=>{e.forEach(r=>{typeof r=="function"?r(t):r!=null&&(r.current=t)})}}var rt=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";try{rt&&(window.__reactRouterVersion="7.7.0")}catch{}var nt=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,st=m.forwardRef(function({onClick:t,discover:r="render",prefetch:s="none",relative:n,reloadDocument:o,replace:l,state:u,target:a,to:c,preventScrollReset:d,viewTransition:x,...f},b){let{basename:g}=m.useContext(B),v=typeof c=="string"&&nt.test(c),E,p=!1;if(typeof c=="string"&&v&&(E=c,rt))try{let S=new URL(window.location.href),M=c.startsWith("//")?new URL(S.protocol+c):new URL(c),A=_(M.pathname,g);M.origin===S.origin&&A!=null?c=A+M.search+M.hash:p=!0}catch{z(!1,`<Link to="${c}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}let h=xr(c,{relative:n}),[y,R,O]=Jr(s,f),F=Zr(c,{replace:l,state:u,target:a,preventScrollReset:d,relative:n,viewTransition:x});function k(S){t&&t(S),S.defaultPrevented||F(S)}let D=m.createElement("a",{...f,...O,href:E||h,onClick:p||o?t:k,ref:Yr(b,R),target:a,"data-discover":!v&&r==="render"?"true":void 0});return y&&!v?m.createElement(m.Fragment,null,D,m.createElement(Vr,{page:h})):D});st.displayName="Link";var Gr=m.forwardRef(function({"aria-current":t="page",caseSensitive:r=!1,className:s="",end:n=!1,style:o,to:l,viewTransition:u,children:a,...c},d){let x=ee(l,{relative:c.relative}),f=U(),b=m.useContext(ae),{navigator:g,basename:v}=m.useContext(B),E=b!=null&&sn(x)&&u===!0,p=g.encodeLocation?g.encodeLocation(x).pathname:x.pathname,h=f.pathname,y=b&&b.navigation&&b.navigation.location?b.navigation.location.pathname:null;r||(h=h.toLowerCase(),y=y?y.toLowerCase():null,p=p.toLowerCase()),y&&v&&(y=_(y,v)||y);const R=p!=="/"&&p.endsWith("/")?p.length-1:p.length;let O=h===p||!n&&h.startsWith(p)&&h.charAt(R)==="/",F=y!=null&&(y===p||!n&&y.startsWith(p)&&y.charAt(p.length)==="/"),k={isActive:O,isPending:F,isTransitioning:E},D=O?t:void 0,S;typeof s=="function"?S=s(k):S=[s,O?"active":null,F?"pending":null,E?"transitioning":null].filter(Boolean).join(" ");let M=typeof o=="function"?o(k):o;return m.createElement(st,{...c,"aria-current":D,className:S,ref:d,style:M,to:l,viewTransition:u},typeof a=="function"?a(k):a)});Gr.displayName="NavLink";var Xr=m.forwardRef(({discover:e="render",fetcherKey:t,navigate:r,reloadDocument:s,replace:n,state:o,method:l=ne,action:u,onSubmit:a,relative:c,preventScrollReset:d,viewTransition:x,...f},b)=>{let g=rn(),v=nn(u,{relative:c}),E=l.toLowerCase()==="get"?"get":"post",p=typeof u=="string"&&nt.test(u),h=y=>{if(a&&a(y),y.defaultPrevented)return;y.preventDefault();let R=y.nativeEvent.submitter,O=(R==null?void 0:R.getAttribute("formmethod"))||l;g(R||y.currentTarget,{fetcherKey:t,method:O,navigate:r,replace:n,state:o,relative:c,preventScrollReset:d,viewTransition:x})};return m.createElement("form",{ref:b,method:E,action:v,onSubmit:s?a:h,...f,"data-discover":!p&&e==="render"?"true":void 0})});Xr.displayName="Form";function Qr(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function ot(e){let t=m.useContext(q);return I(t,Qr(e)),t}function Zr(e,{target:t,replace:r,state:s,preventScrollReset:n,relative:o,viewTransition:l}={}){let u=Xe(),a=U(),c=ee(e,{relative:o});return m.useCallback(d=>{if(Ir(d,t)){d.preventDefault();let x=r!==void 0?r:he(a)===he(c);u(e,{replace:x,state:s,preventScrollReset:n,relative:o,viewTransition:l})}},[a,u,c,r,s,t,e,n,o,l])}var en=0,tn=()=>`__${String(++en)}__`;function rn(){let{router:e}=ot("useSubmit"),{basename:t}=m.useContext(B),r=Rr();return m.useCallback(async(s,n={})=>{let{action:o,method:l,encType:u,formData:a,body:c}=Fr(s,t);if(n.navigate===!1){let d=n.fetcherKey||tn();await e.fetch(d,r,n.action||o,{preventScrollReset:n.preventScrollReset,formData:a,body:c,formMethod:n.method||l,formEncType:n.encType||u,flushSync:n.flushSync})}else await e.navigate(n.action||o,{preventScrollReset:n.preventScrollReset,formData:a,body:c,formMethod:n.method||l,formEncType:n.encType||u,replace:n.replace,state:n.state,fromRouteId:r,flushSync:n.flushSync,viewTransition:n.viewTransition})},[e,t,r])}function nn(e,{relative:t}={}){let{basename:r}=m.useContext(B),s=m.useContext(W);I(s,"useFormAction must be used inside a RouteContext");let[n]=s.matches.slice(-1),o={...ee(e||".",{relative:t})},l=U();if(e==null){o.search=l.search;let u=new URLSearchParams(o.search),a=u.getAll("index");if(a.some(d=>d==="")){u.delete("index"),a.filter(x=>x).forEach(x=>u.append("index",x));let d=u.toString();o.search=d?`?${d}`:""}}return(!e||e===".")&&n.route.index&&(o.search=o.search?o.search.replace(/^\?/,"?index&"):"?index"),r!=="/"&&(o.pathname=o.pathname==="/"?r:H([r,o.pathname])),he(o)}function sn(e,t={}){let r=m.useContext(Ke);I(r!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:s}=ot("useViewTransitionState"),n=ee(e,{relative:t.relative});if(!r.isTransitioning)return!1;let o=_(r.currentLocation.pathname,s)||r.currentLocation.pathname,l=_(r.nextLocation.pathname,s)||r.nextLocation.pathname;return oe(n.pathname,l)!=null||oe(n.pathname,o)!=null}const on=({children:e,fallback:t=null,redirectTo:r="/"})=>{const{isLoggedIn:s,loading:n}=$e.useOxAuth();return n?t:s?i.jsxRuntimeExports.jsx(Ze,{replace:!0,to:r}):e},an=({children:e,fallback:t=null,redirectTo:r="/login"})=>{const{isLoggedIn:s,loading:n}=$e.useOxAuth();return n?t:s?e:i.jsxRuntimeExports.jsx(Ze,{replace:!0,to:r})};exports.OxButton=w.OxButton;exports.OxIcon=w.OxIcon;exports.OxDescription=T.OxDescription;exports.OxErrorMessage=T.OxErrorMessage;exports.OxForm=T.OxForm;exports.OxInput=T.OxInput;exports.OxLabel=T.OxLabel;exports.OxAvatar=it;exports.OxAvatarImage=Me;exports.OxAvatarText=mt;exports.OxBadge=Q;exports.OxCard=yt;exports.OxCardContent=Rt;exports.OxCardFooter=Ct;exports.OxCardHeader=Et;exports.OxCheckbox=Ot;exports.OxDropdown=Be;exports.OxDropdownContent=ge;exports.OxDropdownFooter=De;exports.OxDropdownHeader=be;exports.OxDropdownItem=We;exports.OxDropdownSeparator=St;exports.OxDropdownShortcut=Lt;exports.OxDropdownTrigger=ve;exports.OxGuestRoute=on;exports.OxNotificationDropdown=$t;exports.OxProtectedRoute=an;exports.OxSelect=zt;exports.OxSelectLabel=Bt;exports.OxSelectOption=He;exports.OxSkeleton=_e;exports.OxSkeletonText=Ht;exports.OxTextarea=_t;