@chaos_team/chaos-ui 1.0.5 → 1.1.0

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 (62) hide show
  1. package/CHANGELOG.md +72 -0
  2. package/README.md +11 -15
  3. package/dist/auth-layout-AqhdIh5N.d.cts +172 -0
  4. package/dist/auth-layout-AqhdIh5N.d.ts +172 -0
  5. package/dist/business.cjs +11 -9
  6. package/dist/business.d.cts +1015 -939
  7. package/dist/business.d.ts +1015 -939
  8. package/dist/business.js +11 -9
  9. package/dist/card-DY3pk0zA.d.cts +150 -0
  10. package/dist/card-DY3pk0zA.d.ts +150 -0
  11. package/dist/hooks.cjs +2 -2
  12. package/dist/hooks.d.cts +1 -1
  13. package/dist/hooks.d.ts +1 -1
  14. package/dist/hooks.js +2 -2
  15. package/dist/index.cjs +8 -1
  16. package/dist/index.d.cts +2089 -9
  17. package/dist/index.d.ts +2089 -9
  18. package/dist/index.js +8 -1
  19. package/dist/input-B39p_6ia.d.cts +40 -0
  20. package/dist/input-B39p_6ia.d.ts +40 -0
  21. package/dist/layout.cjs +12 -0
  22. package/dist/layout.d.cts +642 -0
  23. package/dist/layout.d.ts +642 -0
  24. package/dist/layout.js +12 -0
  25. package/dist/lib.d.cts +1 -1
  26. package/dist/lib.d.ts +1 -1
  27. package/dist/{message-KJli9tvf.d.cts → message-BoUedza5.d.cts} +1 -1
  28. package/dist/{message-KJli9tvf.d.ts → message-BoUedza5.d.ts} +1 -1
  29. package/dist/message-provider-Dt4mVwWP.d.cts +23 -0
  30. package/dist/message-provider-Dt4mVwWP.d.ts +23 -0
  31. package/dist/mobile-bottom-nav-Bi6_V5Bu.d.cts +18 -0
  32. package/dist/mobile-bottom-nav-Bi6_V5Bu.d.ts +18 -0
  33. package/dist/mobile-qrcode-scanner-BHDncd40.d.cts +327 -0
  34. package/dist/mobile-qrcode-scanner-a_Cz8tF5.d.ts +327 -0
  35. package/dist/mobile.cjs +6 -0
  36. package/dist/mobile.d.cts +101 -0
  37. package/dist/mobile.d.ts +101 -0
  38. package/dist/mobile.js +6 -0
  39. package/dist/next.cjs +1 -1
  40. package/dist/next.d.cts +5 -102
  41. package/dist/next.d.ts +5 -102
  42. package/dist/next.js +1 -1
  43. package/dist/top-bar-BYXz4LtM.d.cts +74 -0
  44. package/dist/top-bar-BYXz4LtM.d.ts +74 -0
  45. package/dist/ui/icons.cjs +1 -1
  46. package/dist/ui/icons.d.cts +1 -1
  47. package/dist/ui/icons.d.ts +1 -1
  48. package/dist/ui/icons.js +1 -1
  49. package/dist/ui-icons.cjs +1 -1
  50. package/dist/ui-icons.d.cts +24 -1
  51. package/dist/ui-icons.d.ts +24 -1
  52. package/dist/ui-icons.js +1 -1
  53. package/dist/ui.cjs +8 -1
  54. package/dist/ui.d.cts +7 -5
  55. package/dist/ui.d.ts +7 -5
  56. package/dist/ui.js +8 -1
  57. package/package.json +15 -5
  58. package/styles.css +11 -11
  59. package/dist/message-provider-BI-P3CNq.d.cts +0 -11
  60. package/dist/message-provider-BI-P3CNq.d.ts +0 -11
  61. package/dist/time-picker-H1AaecnE.d.cts +0 -452
  62. package/dist/time-picker-H1AaecnE.d.ts +0 -452
@@ -0,0 +1,150 @@
1
+ import * as React from 'react';
2
+
3
+ /**
4
+ * @component Transfer
5
+ * @category ui/data-entry
6
+ * @since 0.2.0
7
+ * @description Dual-panel shuttle component for moving items between source and target lists. Supports search, select-all, one-way mode, i18n, disabled state, and custom render functions. / 双栏穿梭框,支持搜索、全选、单向模式、国际化、禁用状态和自定义渲染。
8
+ * @keywords transfer, shuttle, dual-panel, selection, move, assign
9
+ * @example
10
+ * <Transfer
11
+ * dataSource={items}
12
+ * targetKeys={selected}
13
+ * onChange={setSelected}
14
+ * titles={["Available", "Selected"]}
15
+ * />
16
+ */
17
+ interface TransferItem {
18
+ key: string;
19
+ label: string;
20
+ description?: string;
21
+ disabled?: boolean;
22
+ }
23
+ interface TransferProps {
24
+ dataSource: TransferItem[];
25
+ targetKeys?: string[];
26
+ onChange?: (targetKeys: string[]) => void;
27
+ titles?: [string, string];
28
+ searchable?: boolean;
29
+ filterOption?: (input: string, item: TransferItem) => boolean;
30
+ render?: (item: TransferItem) => React.ReactNode;
31
+ disabled?: boolean;
32
+ className?: string;
33
+ oneWay?: boolean;
34
+ }
35
+ declare function Transfer({ dataSource, targetKeys, onChange, titles: titlesProp, searchable, filterOption, render, disabled, className, oneWay, }: TransferProps): React.JSX.Element;
36
+
37
+ /**
38
+ * @component Card
39
+ * @category ui/shell
40
+ * @since 0.2.0
41
+ * @description A container component with header, content, and footer slots for structured content / 带有标题、内容和底部插槽的结构化容器组件
42
+ * @keywords card, container, panel, shell
43
+ * @example
44
+ * <Card>
45
+ * <CardHeader><CardTitle>Title</CardTitle></CardHeader>
46
+ * <CardContent>Content</CardContent>
47
+ * </Card>
48
+ */
49
+ declare function Card({ className, size, flush, ...props }: React.ComponentProps<"div"> & {
50
+ size?: "default" | "sm";
51
+ /** Remove padding on CardContent for edge-to-edge tables / 内容通栏 */
52
+ flush?: boolean;
53
+ }): React.JSX.Element;
54
+ /**
55
+ * @component CardHeader
56
+ * @category ui/shell
57
+ * @since 0.2.0
58
+ * @description Top section of a Card, typically containing title, description, and actions / 卡片顶部区域,通常包含标题、描述和操作按钮
59
+ * @keywords card, header, title
60
+ * @example
61
+ * <CardHeader>
62
+ * <CardTitle>Title</CardTitle>
63
+ * <CardDescription>Description text</CardDescription>
64
+ * </CardHeader>
65
+ */
66
+ declare function CardHeader({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
67
+ /**
68
+ * @component CardTitle
69
+ * @category ui/shell
70
+ * @since 0.2.0
71
+ * @description The heading text inside a CardHeader / 卡片标题文字
72
+ * @keywords card, title, heading
73
+ * @example
74
+ * <CardTitle>Section Title</CardTitle>
75
+ */
76
+ declare function CardTitle({ className, size, ...props }: React.ComponentProps<"div"> & {
77
+ /** Explicit size override independent of Card size / 独立于 Card 的尺寸 */
78
+ size?: "sm" | "default";
79
+ }): React.JSX.Element;
80
+ /**
81
+ * @component CardDescription
82
+ * @category ui/shell
83
+ * @since 0.2.0
84
+ * @description Supplementary text below the CardTitle / 卡片标题下方的补充说明文字
85
+ * @keywords card, description, subtitle
86
+ * @example
87
+ * <CardDescription>Additional context about this card.</CardDescription>
88
+ */
89
+ declare function CardDescription({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
90
+ /**
91
+ * @component CardAction
92
+ * @category ui/shell
93
+ * @since 0.2.0
94
+ * @description An action area placed in the top-right corner of a CardHeader / 卡片头部右上角的操作区域
95
+ * @keywords card, action, button, header
96
+ * @example
97
+ * <CardAction>
98
+ * <Button size="sm">Action</Button>
99
+ * </CardAction>
100
+ */
101
+ declare function CardAction({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
102
+ /**
103
+ * @component CardContent
104
+ * @category ui/shell
105
+ * @since 0.2.0
106
+ * @description The main body area of a Card, with optional flush padding for edge-to-edge content / 卡片主体内容区,支持通栏模式
107
+ * @keywords card, content, body
108
+ * @example
109
+ * <CardContent>Main card content goes here.</CardContent>
110
+ */
111
+ declare function CardContent({ className, flush, ...props }: React.ComponentProps<"div"> & {
112
+ /** Remove horizontal padding for edge-to-edge content like tables / 内容通栏,去掉水平内边距 */
113
+ flush?: boolean;
114
+ }): React.JSX.Element;
115
+ /**
116
+ * @component CardFooter
117
+ * @category ui/shell
118
+ * @since 0.2.0
119
+ * @description Bottom section of a Card, typically for action buttons or summary / 卡片底部区域,通常放置操作按钮或摘要信息
120
+ * @keywords card, footer, actions
121
+ * @example
122
+ * <CardFooter>
123
+ * <Button>Save</Button>
124
+ * </CardFooter>
125
+ */
126
+ declare function CardFooter({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
127
+ /**
128
+ * @component CardSection
129
+ * @category ui/shell
130
+ * @since 0.2.0
131
+ * @description Titled section within a Card with optional header actions / 卡片中的带标题分区,支持可选的头部操作按钮
132
+ * @keywords card, section, divider, partition
133
+ * @example
134
+ * <CardSection title="Details" actions={<Button size="sm">Edit</Button>}>
135
+ * Content here
136
+ * </CardSection>
137
+ *
138
+ * Supports `title` and `actions` props to replace the repeated 3 inline
139
+ * patterns (CardHeader+CardTitle / Tailwind div / Flex+title+Button).
140
+ * Render as a header row when `title` or `actions` is provided;
141
+ * otherwise renders as a plain bordered partition div.
142
+ */
143
+ declare function CardSection({ className, title, actions, children, ...props }: React.ComponentProps<"div"> & {
144
+ /** Section title text / 区块标题 */
145
+ title?: React.ReactNode;
146
+ /** Right-side action area / 右侧操作区 */
147
+ actions?: React.ReactNode;
148
+ }): React.JSX.Element;
149
+
150
+ export { Card as C, Transfer as T, CardAction as a, CardContent as b, CardDescription as c, CardFooter as d, CardHeader as e, CardSection as f, CardTitle as g, type TransferItem as h };
@@ -0,0 +1,150 @@
1
+ import * as React from 'react';
2
+
3
+ /**
4
+ * @component Transfer
5
+ * @category ui/data-entry
6
+ * @since 0.2.0
7
+ * @description Dual-panel shuttle component for moving items between source and target lists. Supports search, select-all, one-way mode, i18n, disabled state, and custom render functions. / 双栏穿梭框,支持搜索、全选、单向模式、国际化、禁用状态和自定义渲染。
8
+ * @keywords transfer, shuttle, dual-panel, selection, move, assign
9
+ * @example
10
+ * <Transfer
11
+ * dataSource={items}
12
+ * targetKeys={selected}
13
+ * onChange={setSelected}
14
+ * titles={["Available", "Selected"]}
15
+ * />
16
+ */
17
+ interface TransferItem {
18
+ key: string;
19
+ label: string;
20
+ description?: string;
21
+ disabled?: boolean;
22
+ }
23
+ interface TransferProps {
24
+ dataSource: TransferItem[];
25
+ targetKeys?: string[];
26
+ onChange?: (targetKeys: string[]) => void;
27
+ titles?: [string, string];
28
+ searchable?: boolean;
29
+ filterOption?: (input: string, item: TransferItem) => boolean;
30
+ render?: (item: TransferItem) => React.ReactNode;
31
+ disabled?: boolean;
32
+ className?: string;
33
+ oneWay?: boolean;
34
+ }
35
+ declare function Transfer({ dataSource, targetKeys, onChange, titles: titlesProp, searchable, filterOption, render, disabled, className, oneWay, }: TransferProps): React.JSX.Element;
36
+
37
+ /**
38
+ * @component Card
39
+ * @category ui/shell
40
+ * @since 0.2.0
41
+ * @description A container component with header, content, and footer slots for structured content / 带有标题、内容和底部插槽的结构化容器组件
42
+ * @keywords card, container, panel, shell
43
+ * @example
44
+ * <Card>
45
+ * <CardHeader><CardTitle>Title</CardTitle></CardHeader>
46
+ * <CardContent>Content</CardContent>
47
+ * </Card>
48
+ */
49
+ declare function Card({ className, size, flush, ...props }: React.ComponentProps<"div"> & {
50
+ size?: "default" | "sm";
51
+ /** Remove padding on CardContent for edge-to-edge tables / 内容通栏 */
52
+ flush?: boolean;
53
+ }): React.JSX.Element;
54
+ /**
55
+ * @component CardHeader
56
+ * @category ui/shell
57
+ * @since 0.2.0
58
+ * @description Top section of a Card, typically containing title, description, and actions / 卡片顶部区域,通常包含标题、描述和操作按钮
59
+ * @keywords card, header, title
60
+ * @example
61
+ * <CardHeader>
62
+ * <CardTitle>Title</CardTitle>
63
+ * <CardDescription>Description text</CardDescription>
64
+ * </CardHeader>
65
+ */
66
+ declare function CardHeader({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
67
+ /**
68
+ * @component CardTitle
69
+ * @category ui/shell
70
+ * @since 0.2.0
71
+ * @description The heading text inside a CardHeader / 卡片标题文字
72
+ * @keywords card, title, heading
73
+ * @example
74
+ * <CardTitle>Section Title</CardTitle>
75
+ */
76
+ declare function CardTitle({ className, size, ...props }: React.ComponentProps<"div"> & {
77
+ /** Explicit size override independent of Card size / 独立于 Card 的尺寸 */
78
+ size?: "sm" | "default";
79
+ }): React.JSX.Element;
80
+ /**
81
+ * @component CardDescription
82
+ * @category ui/shell
83
+ * @since 0.2.0
84
+ * @description Supplementary text below the CardTitle / 卡片标题下方的补充说明文字
85
+ * @keywords card, description, subtitle
86
+ * @example
87
+ * <CardDescription>Additional context about this card.</CardDescription>
88
+ */
89
+ declare function CardDescription({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
90
+ /**
91
+ * @component CardAction
92
+ * @category ui/shell
93
+ * @since 0.2.0
94
+ * @description An action area placed in the top-right corner of a CardHeader / 卡片头部右上角的操作区域
95
+ * @keywords card, action, button, header
96
+ * @example
97
+ * <CardAction>
98
+ * <Button size="sm">Action</Button>
99
+ * </CardAction>
100
+ */
101
+ declare function CardAction({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
102
+ /**
103
+ * @component CardContent
104
+ * @category ui/shell
105
+ * @since 0.2.0
106
+ * @description The main body area of a Card, with optional flush padding for edge-to-edge content / 卡片主体内容区,支持通栏模式
107
+ * @keywords card, content, body
108
+ * @example
109
+ * <CardContent>Main card content goes here.</CardContent>
110
+ */
111
+ declare function CardContent({ className, flush, ...props }: React.ComponentProps<"div"> & {
112
+ /** Remove horizontal padding for edge-to-edge content like tables / 内容通栏,去掉水平内边距 */
113
+ flush?: boolean;
114
+ }): React.JSX.Element;
115
+ /**
116
+ * @component CardFooter
117
+ * @category ui/shell
118
+ * @since 0.2.0
119
+ * @description Bottom section of a Card, typically for action buttons or summary / 卡片底部区域,通常放置操作按钮或摘要信息
120
+ * @keywords card, footer, actions
121
+ * @example
122
+ * <CardFooter>
123
+ * <Button>Save</Button>
124
+ * </CardFooter>
125
+ */
126
+ declare function CardFooter({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
127
+ /**
128
+ * @component CardSection
129
+ * @category ui/shell
130
+ * @since 0.2.0
131
+ * @description Titled section within a Card with optional header actions / 卡片中的带标题分区,支持可选的头部操作按钮
132
+ * @keywords card, section, divider, partition
133
+ * @example
134
+ * <CardSection title="Details" actions={<Button size="sm">Edit</Button>}>
135
+ * Content here
136
+ * </CardSection>
137
+ *
138
+ * Supports `title` and `actions` props to replace the repeated 3 inline
139
+ * patterns (CardHeader+CardTitle / Tailwind div / Flex+title+Button).
140
+ * Render as a header row when `title` or `actions` is provided;
141
+ * otherwise renders as a plain bordered partition div.
142
+ */
143
+ declare function CardSection({ className, title, actions, children, ...props }: React.ComponentProps<"div"> & {
144
+ /** Section title text / 区块标题 */
145
+ title?: React.ReactNode;
146
+ /** Right-side action area / 右侧操作区 */
147
+ actions?: React.ReactNode;
148
+ }): React.JSX.Element;
149
+
150
+ export { Card as C, Transfer as T, CardAction as a, CardContent as b, CardDescription as c, CardFooter as d, CardHeader as e, CardSection as f, CardTitle as g, type TransferItem as h };
package/dist/hooks.cjs CHANGED
@@ -3,6 +3,6 @@
3
3
  * Copyright (c) 2026 qxyfoods
4
4
  * MIT License
5
5
  */
6
- "use strict";"use client";var ro=Object.create;var je=Object.defineProperty;var so=Object.getOwnPropertyDescriptor;var io=Object.getOwnPropertyNames;var ao=Object.getPrototypeOf,co=Object.prototype.hasOwnProperty;var uo=(e,t)=>{for(var n in t)je(e,n,{get:t[n],enumerable:!0})},kt=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of io(t))!co.call(e,r)&&r!==n&&je(e,r,{get:()=>t[r],enumerable:!(o=so(t,r))||o.enumerable});return e};var R=(e,t,n)=>(n=e!=null?ro(ao(e)):{},kt(t||!e||!e.__esModule?je(n,"default",{value:e,enumerable:!0}):n,e)),lo=e=>kt(je({},"__esModule",{value:!0}),e);var yo={};uo(yo,{ConfirmProvider:()=>Rn,LocaleProvider:()=>cn,ModalRenderer:()=>Wt,PermissionContext:()=>ut,PermissionProvider:()=>En,confirmAsync:()=>gn,getStoredLocale:()=>yt,supportedLocales:()=>nt,useApproval:()=>On,useAsync:()=>Qt,useAsyncTask:()=>Dn,useBill:()=>Fn,useBreakpoint:()=>gt,useClickOutside:()=>jt,useClipboard:()=>Cn,useConfirmAsync:()=>xn,useConfirmContext:()=>vn,useCopyToClipboard:()=>Gt,useCountdown:()=>_t,useCrud:()=>dn,useDataScope:()=>Un,useDebounce:()=>Xt,useDict:()=>Nn,useEventListener:()=>Pt,useExport:()=>An,useFetch:()=>Bn,useFieldValidation:()=>bn,useForm:()=>ct,useFormSchema:()=>Ln,useFormTable:()=>Vn,useHotkeys:()=>qt,useIdle:()=>zn,useImport:()=>Hn,useInView:()=>qe,useInfiniteScroll:()=>$t,useIntersectionObserver:()=>bt,useIsBreakpoint:()=>Et,useIsDesktop:()=>Zt,useIsMobile:()=>en,useIsTablet:()=>Yt,useKey:()=>Rt,useKeyCombo:()=>Ot,useLineEditor:()=>Kn,useLocalStorage:()=>Jt,useLocale:()=>un,useMediaQuery:()=>Je,useMessage:()=>_e,useModal:()=>Kt,useMutation:()=>Jn,useNetworkQuality:()=>Qn,useNetworkStatus:()=>In,useNotification:()=>Nt,useOrientation:()=>Tn,usePageTitle:()=>fn,usePagination:()=>Ye,usePermission:()=>Pn,usePrevious:()=>tn,usePrint:()=>jn,useQuery:()=>qn,useRedo:()=>Gn,useScroll:()=>Tt,useScrollDirection:()=>wn,useSse:()=>_n,useStep:()=>nn,useSwr:()=>Zn,useTable:()=>Yn,useThrottle:()=>on,useToggle:()=>rn,useTrack:()=>to,useUndo:()=>no,useVisibilityChange:()=>yn,useWebsocket:()=>oo,useWindowSize:()=>hn,zodResolverAdapter:()=>kn});module.exports=lo(yo);var Ge=R(require("react"),1),Me={xs:0,sm:640,md:768,lg:1024,xl:1280,"2xl":1536};function gt(){let[e,t]=Ge.useState(void 0);return Ge.useEffect(()=>{let n=()=>{let o=window.innerWidth;o>=Me["2xl"]?t("2xl"):o>=Me.xl?t("xl"):o>=Me.lg?t("lg"):o>=Me.md?t("md"):o>=Me.sm?t("sm"):t("xs")};return n(),window.addEventListener("resize",n,{passive:!0}),()=>window.removeEventListener("resize",n)},[]),e}function Et(e){let t=gt();if(!t)return!1;let n=["xs","sm","md","lg","xl","2xl"];return n.indexOf(t)>=n.indexOf(e)}var fe=R(require("react"),1);function Pt(e,t,n,o){let r=fe.useRef(n),i=fe.useRef(o);fe.useEffect(()=>{r.current=n},[n]),fe.useEffect(()=>{i.current=o},[o]),fe.useEffect(()=>{if(!e)return;let c=u=>{r.current(u)},a=i.current;return e.addEventListener(t,c,a),()=>{e.removeEventListener(t,c,a)}},[e,t])}var Oe=R(require("react"),1);function Mt(e,t){let n=t.toLowerCase().split("+"),o=e.key.toLowerCase(),r=n.includes("ctrl")||n.includes("control"),i=n.includes("meta")||n.includes("cmd"),c=n.includes("shift"),a=n.includes("alt"),u=n.filter(p=>!["ctrl","control","meta","cmd","shift","alt"].includes(p))[0];return o===u&&e.ctrlKey===r&&e.metaKey===i&&e.shiftKey===c&&e.altKey===a}function Rt(e,t,n={}){let{event:o="keydown",target:r,preventDefault:i=!1,enabled:c=!0}=n,a=Oe.useRef(t);Oe.useEffect(()=>{a.current=t},[t]),Oe.useEffect(()=>{if(!c)return;let u=r??window,p=m=>{let d=m,f=!1;typeof e=="function"?f=e(d):typeof e=="string"?f=Mt(d,e):Array.isArray(e)&&(f=e.some(l=>Mt(d,l))),f&&(i&&d.preventDefault(),a.current(d))};return u.addEventListener(o,p),()=>u.removeEventListener(o,p)},[e,o,r,i,c])}function Ot(e,t,n){Rt(e,t,n)}var Ft=require("react");var $=require("sonner");function ye(e){let t={};return e?.key!==void 0&&(t.id=e.key),e?.duration!==void 0&&(t.duration=e.duration),e?.description!==void 0&&(t.description=e.description),e?.action&&(t.action={label:e.action.label,onClick:e.action.onClick}),e?.icon!==void 0&&(t.icon=e.icon),e?.className!==void 0&&(t.classNames={toast:e.className}),e?.onClick&&(t.onClick=e.onClick),e?.onDismiss&&(t.onDismiss=e.onDismiss),e?.onAutoClose&&(t.onAutoClose=e.onAutoClose),t}var Dt={duration:3,maxCount:5,placement:"top-right",richColors:!0,expand:!1},ae=Object.assign((e,t)=>(0,$.toast)(e,ye(t)),{success:(e,t)=>$.toast.success(e,ye(t)),error:(e,t)=>$.toast.error(e,ye(t)),warning:(e,t)=>$.toast.warning(e,ye(t)),info:(e,t)=>$.toast.info(e,ye(t)),loading:(e,t)=>{let n=ye({...t,duration:t?.duration??0});return $.toast.loading(e,n)},promise:(e,t)=>$.toast.promise(e,{loading:t.loading??"Loading...",success:t.success,error:t.error}),destroy:e=>{e!==void 0?$.toast.dismiss(e):$.toast.dismiss()},config:e=>{Dt={...Dt,...e}}});function _e(){return(0,Ft.useMemo)(()=>({success:ae.success,error:ae.error,warning:ae.warning,info:ae.info,loading:ae.loading,promise:ae.promise,destroy:ae.destroy}),[])}var Ut=R(require("react"),1),ce=require("sonner");function Nt(){let e=Ut.useCallback(t=>{let{type:n="info",title:o,description:r,duration:i,id:c,action:a}=t,u={};switch(c!==void 0&&(u.id=c),r!==void 0&&(u.description=r),i!==void 0&&(u.duration=i),a&&(u.action={label:a.label,onClick:a.onClick}),n){case"success":return ce.toast.success(o,u);case"error":return ce.toast.error(o,u);case"warning":return ce.toast.warning(o,u);default:return ce.toast.info(o,u)}},[]);return{open:e,success:t=>e({...t,type:"success"}),error:t=>e({...t,type:"error"}),warning:t=>e({...t,type:"warning"}),info:t=>e({...t,type:"info"}),close:t=>{t?ce.toast.dismiss(t):ce.toast.dismiss()},closeAll:()=>ce.toast.dismiss()}}var D=R(require("react"),1);var Uo=require("react"),vt=require("react-i18next"),re=require("@base-ui/react/dialog");var At=require("clsx"),Bt=require("tailwind-merge");function oe(...e){return(0,Bt.twMerge)((0,At.clsx)(e))}var Mo=require("react"),Vt=require("@base-ui/react/button"),zt=require("class-variance-authority");var ue=require("react/jsx-runtime"),po=(0,zt.cva)("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function G({className:e,variant:t="default",size:n="default",icon:o,iconRight:r,children:i,...c}){let a=o!=null||r!=null;return(0,ue.jsx)(Vt.Button,{"data-slot":"button",className:oe(po({variant:t,size:n,className:e})),...c,children:a?(0,ue.jsxs)(ue.Fragment,{children:[o!=null&&(0,ue.jsx)("span",{"data-icon":"inline-start",className:"shrink-0",children:o}),i,r!=null&&(0,ue.jsx)("span",{"data-icon":"inline-end",className:"shrink-0",children:r})]}):i})}var s=R(require("lucide-react"),1),xt=s.AlertCircleIcon;var Ht=s.XIcon;var k=require("react/jsx-runtime");function De({...e}){return(0,k.jsx)(re.Dialog.Root,{"data-slot":"dialog",...e})}function fo({...e}){return(0,k.jsx)(re.Dialog.Portal,{"data-slot":"dialog-portal",...e})}function mo({className:e,...t}){return(0,k.jsx)(re.Dialog.Backdrop,{"data-slot":"dialog-overlay",className:oe("data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0 fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs",e),...t})}function Fe({className:e,children:t,showCloseButton:n=!0,...o}){let{t:r}=(0,vt.useTranslation)("ui");return(0,k.jsxs)(fo,{children:[(0,k.jsx)(mo,{}),(0,k.jsxs)(re.Dialog.Popup,{"data-slot":"dialog-content",className:oe("bg-popover text-popover-foreground ring-foreground/10 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl p-4 text-sm ring-1 duration-100 outline-none sm:max-w-sm",e),...o,children:[t,n&&(0,k.jsxs)(re.Dialog.Close,{"data-slot":"dialog-close",render:(0,k.jsx)(G,{variant:"ghost",className:"absolute top-2 right-2",size:"icon-sm"}),children:[(0,k.jsx)(Ht,{}),(0,k.jsx)("span",{className:"sr-only",children:r("dialog.close")})]})]})]})}function Ue({className:e,...t}){return(0,k.jsx)("div",{"data-slot":"dialog-header",className:oe("flex flex-col gap-2",e),...t})}function Ne({className:e,showCloseButton:t=!1,children:n,...o}){let{t:r}=(0,vt.useTranslation)("ui");return(0,k.jsxs)("div",{"data-slot":"dialog-footer",className:oe("bg-muted/50 -mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t p-4 sm:flex-row sm:justify-end",e),...o,children:[n,t&&(0,k.jsx)(re.Dialog.Close,{render:(0,k.jsx)(G,{variant:"outline"}),children:r("dialog.closeButton")})]})}function Ae({className:e,...t}){return(0,k.jsx)(re.Dialog.Title,{"data-slot":"dialog-title",className:oe("font-heading text-base leading-none font-medium",e),...t})}function Be({className:e,...t}){return(0,k.jsx)(re.Dialog.Description,{"data-slot":"dialog-description",className:oe("text-muted-foreground *:[a]:hover:text-foreground text-sm *:[a]:underline *:[a]:underline-offset-3",e),...t})}var F=require("react/jsx-runtime");function Kt(){let[e,t]=D.useState({open:!1,options:{}}),[n,o]=D.useState(!1),r=D.useCallback(g=>{t({open:!0,options:g})},[]),i=D.useCallback(()=>{t(g=>({...g,open:!1})),o(!1)},[]),c=D.useCallback(async()=>{let{onOk:g}=e.options;if(g)try{o(!0),await g()}finally{i()}else i()},[e.options,i]),a=D.useCallback(()=>{e.options.onCancel?.(),i()},[e.options,i]),u=D.useCallback(g=>r(g),[r]),p=D.useCallback(g=>r(g),[r]),m=D.useCallback(g=>r(g),[r]),d=D.useCallback(g=>r(g),[r]),f=D.useCallback(g=>r({...g,okVariant:"destructive"}),[r]),l=(0,F.jsx)(De,{open:e.open,onOpenChange:g=>{!g&&e.options.maskClosable!==!1&&a()},children:(0,F.jsxs)(Fe,{style:{maxWidth:typeof e.options.width=="number"?`${e.options.width}px`:e.options.width},children:[(0,F.jsxs)(Ue,{children:[e.options.title&&(0,F.jsx)(Ae,{children:e.options.title}),e.options.content&&(0,F.jsx)(Be,{children:e.options.content})]}),(0,F.jsxs)(Ne,{children:[e.options.cancelText!==void 0&&(0,F.jsx)(G,{variant:"outline",onClick:a,disabled:n,children:e.options.cancelText??"Cancel"}),(0,F.jsx)(G,{variant:e.options.okVariant==="destructive"?"destructive":"default",onClick:c,disabled:n,children:n?"Loading...":e.options.okText??"OK"})]})]})});return u.modal=l,p.modal=l,m.modal=l,d.modal=l,f.modal=l,{confirm:u,info:p,warning:m,success:d,error:f}}function Wt({modal:e}){let t=e.confirm.modal;return(0,F.jsx)(F.Fragment,{children:t})}var J=R(require("react"),1);function Qt(e,t=!0){let[n,o]=J.useState({status:"idle",data:void 0,error:void 0}),r=J.useRef(!0),i=J.useRef(null);J.useEffect(()=>(r.current=!0,()=>{r.current=!1}),[]);let c=J.useCallback(async(...a)=>{i.current=a,o(u=>({status:"pending",data:u.data,error:void 0}));try{let u=await e(...a);return r.current?(o({status:"success",data:u,error:void 0}),u):void 0}catch(u){let p=u instanceof Error?u:new Error(String(u));if(!r.current)return;throw o({status:"error",data:void 0,error:p}),p}},[e]);return J.useEffect(()=>{if(!t)return;let a=window.setTimeout(()=>{c(...i.current??[])},0);return()=>window.clearTimeout(a)},[t,c]),{...n,run:c,isLoading:n.status==="pending"}}var Ve=R(require("react"),1);function jt(e,t,n=!0){let o=Ve.useRef(t);Ve.useEffect(()=>{o.current=t},[t]),Ve.useEffect(()=>{if(!n)return;let r=i=>{let c=e.current;!c||c.contains(i.target)||o.current(i)};return document.addEventListener("mousedown",r),document.addEventListener("touchstart",r),()=>{document.removeEventListener("mousedown",r),document.removeEventListener("touchstart",r)}},[e,n])}var se=R(require("react"),1);function Gt(){let[e,t]=se.useState(!1),n=se.useRef(null),o=se.useCallback(async i=>{if(typeof navigator>"u"||!navigator.clipboard)return!1;try{return await navigator.clipboard.writeText(i),t(!0),n.current&&clearTimeout(n.current),n.current=setTimeout(()=>t(!1),2e3),!0}catch{return!1}},[]),r=se.useCallback(()=>{n.current&&clearTimeout(n.current),t(!1)},[]);return se.useEffect(()=>()=>{n.current&&clearTimeout(n.current)},[]),[e,o,r]}var he=R(require("react"),1);function _t(e){let t=he.useMemo(()=>new Date(e).getTime(),[e]),[n,o]=he.useState(()=>Date.now());he.useEffect(()=>{if(Number.isNaN(t)||t<=Date.now())return;let d=setInterval(()=>{let f=Date.now();if(t<=f){o(f),clearInterval(d);return}o(f)},1e3);return()=>clearInterval(d)},[t]);let r=Math.max(0,t-n),i=Math.floor(r/1e3),c=Math.floor(i/86400),a=Math.floor(i%86400/3600),u=Math.floor(i%3600/60),p=i%60,m=r<=0||Number.isNaN(t);return{days:c,hours:a,minutes:u,seconds:p,isFinished:m,totalSeconds:i}}var Xe=R(require("react"),1);function Xt(e,t=300){let[n,o]=Xe.useState(e);return Xe.useEffect(()=>{let r=setTimeout(()=>o(e),t);return()=>clearTimeout(r)},[e,t]),n}var ze=R(require("react"),1);function go(e){return e.toLowerCase().split("+").map(t=>t.trim()).sort().join("+")}function Ro(e){if(!(e instanceof HTMLElement))return!1;let t=e.tagName;return t==="INPUT"||t==="TEXTAREA"||t==="SELECT"||e.isContentEditable}function xo(e,t){let n=t.split("+").map(c=>c.trim()),o=e.key.toLowerCase(),r={mod:n.includes("mod")||n.includes("cmd")||n.includes("ctrl"),shift:n.includes("shift"),alt:n.includes("alt")||n.includes("option"),key:n.filter(c=>!["mod","cmd","ctrl","shift","alt","option","meta"].includes(c))[0]},i=e.metaKey||e.ctrlKey;return r.mod!==i||r.shift!==e.shiftKey||r.alt!==e.altKey||!r.key?!1:o===r.key.toLowerCase()}function qt(e,t={}){let{enabled:n=!0,preventDefault:o=!0,allowInInputs:r=!1}=t,i=ze.useRef(e);ze.useEffect(()=>{i.current=e},[e]),ze.useEffect(()=>{if(!n)return;let c=a=>{if(!(!r&&Ro(a.target))){for(let[u,p]of Object.entries(i.current))if(xo(a,go(u))){o&&a.preventDefault(),p(a);return}}};return document.addEventListener("keydown",c),()=>document.removeEventListener("keydown",c)},[n,o,r])}var M=R(require("react"),1);var we=R(require("react"),1);function bt(e,t={}){let{enabled:n=!0,triggerOnce:o=!1,root:r,rootMargin:i,threshold:c}=t,[a,u]=we.useState(null),p=we.useRef(!1);return we.useEffect(()=>{if(!n||p.current)return;let m=e.current;if(!m)return;if(typeof IntersectionObserver>"u"){u({isIntersecting:!0,target:m,boundingClientRect:m.getBoundingClientRect(),intersectionRatio:1,intersectionRect:m.getBoundingClientRect(),rootBounds:null,time:Date.now()});return}let d=new IntersectionObserver(f=>{let l=f[0];l&&(u(l),o&&l.isIntersecting&&(p.current=!0,d.disconnect()))},(()=>{let f={};return r!==void 0&&(f.root=r),i!==void 0&&(f.rootMargin=i),c!==void 0&&(f.threshold=c),f})());return d.observe(m),()=>d.disconnect()},[e,n,o,r,i,c]),a}function qe(e,t={}){return!!bt(e,t)?.isIntersecting}function $t(e,t={}){let{enabled:n=!0}=t,[o,r]=M.useState([]),[i,c]=M.useState(!0),[a,u]=M.useState(!1),[p,m]=M.useState(null),d=M.useRef(null),f=qe(d,{rootMargin:t.rootMargin??"100px",threshold:t.threshold??0}),l=M.useRef(e);M.useEffect(()=>{l.current=e},[e]);let g=M.useCallback(async()=>{if(!(a||!i||!n)){u(!0),m(null);try{let v=await l.current();r(b=>[...b,...v.items]),c(v.hasMore)}catch(v){m(v instanceof Error?v:new Error(String(v)))}finally{u(!1)}}},[a,i,n]);M.useEffect(()=>{if(!f)return;let v=window.setTimeout(()=>{g()},0);return()=>window.clearTimeout(v)},[f,g]);let x=M.useCallback(()=>{r([]),c(!0),m(null)},[]);return{items:o,hasMore:i,loading:a,error:p,sentinelRef:d,loadMore:g,reset:x}}var le=R(require("react"),1);function Jt(e,t){let n=le.useCallback(()=>{if(typeof window>"u")return t;try{let a=window.localStorage.getItem(e);return a==null?t:JSON.parse(a)}catch{return t}},[e,t]),[o,r]=le.useState(n),i=le.useCallback(a=>{r(u=>{let p=a instanceof Function?a(u):a;try{window.localStorage.setItem(e,JSON.stringify(p))}catch{}return p})},[e]),c=le.useCallback(()=>{try{window.localStorage.removeItem(e)}catch{}r(t)},[e,t]);return le.useEffect(()=>{let a=u=>{u.key===e&&r(n())};return window.addEventListener("storage",a),()=>window.removeEventListener("storage",a)},[e,n]),[o,i,c]}var $e=R(require("react"),1);function Je(e){let[t,n]=$e.useState(()=>typeof window>"u"?!1:window.matchMedia(e).matches);return $e.useEffect(()=>{if(typeof window>"u")return;let o=window.matchMedia(e),r=()=>n(o.matches);o.addEventListener("change",r);let i=window.setTimeout(()=>n(o.matches),0);return()=>{window.clearTimeout(i),o.removeEventListener("change",r)}},[e]),t}var Zt=(e=1024)=>Je(`(min-width: ${e}px)`),Yt=(e=768,t=1023)=>Je(`(min-width: ${e}px) and (max-width: ${t}px)`);var Ze=R(require("react"),1),It=768;function en(){let[e,t]=Ze.useState(()=>typeof window>"u"?!1:window.innerWidth<It);return Ze.useEffect(()=>{let n=window.matchMedia(`(max-width: ${It}px)`),o=()=>{t(window.innerWidth<It)};return n.addEventListener("change",o),()=>n.removeEventListener("change",o)},[]),e}var Te=R(require("react"),1);function Ye(e,t={}){let{page:n=1,pageSize:o=10}=t,[r,i]=Te.useState(n),[c,a]=Te.useState(o),u=Math.max(1,Math.ceil(e/c)),p=Math.min(r,u),m=(p-1)*c,d=Te.useCallback(l=>i(Math.min(Math.max(1,l),u)),[u]),f=Te.useCallback(l=>{a(l),i(1)},[]);return{page:p,pageSize:c,total:e,totalPages:u,offset:m,hasNext:p<u,hasPrev:p>1,setPage:d,setPageSize:f,next:()=>d(p+1),prev:()=>d(p-1),first:()=>i(1),last:()=>d(u)}}var et=R(require("react"),1);function tn(e){let t=et.useRef(void 0);return et.useEffect(()=>{t.current=e},[e]),t.current}var me=R(require("react"),1);function nn(e,t=0){let[n,o]=me.useState(t),r=me.useCallback(()=>o(u=>Math.min(u+1,e-1)),[e]),i=me.useCallback(()=>o(u=>Math.max(u-1,0)),[]),c=me.useCallback(u=>o(Math.min(Math.max(0,u),e-1)),[e]),a=me.useCallback(()=>o(t),[t]);return{step:n,next:r,prev:i,goTo:c,reset:a,isFirst:n===0,isLast:n===e-1}}var ge=R(require("react"),1);function on(e,t=300){let[n,o]=ge.useState(e),r=ge.useRef(0),i=ge.useRef(null);return ge.useEffect(()=>{let c=Date.now(),a=c-r.current;return a>=t?(r.current=c,o(e)):(i.current&&clearTimeout(i.current),i.current=setTimeout(()=>{r.current=Date.now(),o(e)},t-a)),()=>{i.current&&clearTimeout(i.current)}},[e,t]),n}var tt=R(require("react"),1);function rn(e=!1){let[t,n]=tt.useState(e),o=tt.useCallback(()=>n(r=>!r),[]);return[t,o,n]}var Z=require("react"),ln=require("react/jsx-runtime"),nt=["zh-CN","en-US"],sn="chaos-ui-locale";function yt(){if(typeof window>"u")return"zh-CN";let e=localStorage.getItem(sn);return e&&nt.includes(e)?e:"zh-CN"}var an=(0,Z.createContext)(null);function cn({initialLocale:e="zh-CN",children:t}){let[n,o]=(0,Z.useState)(()=>typeof window>"u"?e:yt()),r=(0,Z.useCallback)(i=>{o(i),typeof window<"u"&&localStorage.setItem(sn,i)},[]);return(0,Z.useEffect)(()=>{document.documentElement.lang=n},[n]),(0,ln.jsx)(an.Provider,{value:{locale:n,setLocale:r,supportedLocales:[...nt]},children:t})}function un(){let e=(0,Z.useContext)(an);if(!e)throw new Error("useLocale must be used within a LocaleProvider");return e}var C=R(require("react"),1);function ht(e,t,n){if(e===!1)return!1;if(e===void 0)return n;if(typeof e=="string")return e;let o=e[t];return o!==void 0?o:n}function dn(e){let{fetcher:t,onCreate:n,onUpdate:o,onDelete:r,rowKey:i="id",emptyForm:c,defaultPageSize:a=20,onValidate:u,defaultFilters:p={},successMessage:m,deleteConfirmTitle:d}=e,[f,l]=C.useState(p),[g,x]=C.useState([]),[v,b]=C.useState(0),[T,h]=C.useState(!1),[L,W]=C.useState(null),[te,Ie]=C.useState(c),[ft,Ke]=C.useState(!1),Q=Ye(v,{pageSize:a}),O=_e(),Ee=L!==null,ne=C.useCallback(async()=>{Ke(!0);try{let w=await t(Q.page,Q.pageSize,f);x(w.list),b(w.total)}finally{Ke(!1)}},[t,Q.page,Q.pageSize,f]);C.useEffect(()=>{ne()},[ne]);let mt=C.useCallback(w=>{l(We=>({...We,...w})),Q.setPage(1)},[Q.setPage]),I=C.useCallback(w=>{l(w),Q.setPage(1)},[Q.setPage]),P=C.useCallback(()=>{W(null),Ie(c),h(!0)},[c]),j=C.useCallback(w=>{W(w),Ie({...w}),h(!0)},[]),q=C.useCallback((w,We)=>{Ie(Qe=>({...Qe,[w]:We}))},[]),pe=C.useCallback(async()=>{if(u){let w=u(te);if(w){O.error(w);return}}try{if(Ee&&L&&o){await o(L[i],te);let w=ht(m,"update","Updated successfully");w!==!1&&O.success(w)}else if(n){await n(te);let w=ht(m,"create","Created successfully");w!==!1&&O.success(w)}h(!1),await ne()}catch{O.error("Operation failed")}},[L,te,Ee,n,o,u,i,ne,O,m]),Pe=C.useCallback(async w=>{if(!(!r||!globalThis.confirm?.(d??"Are you sure you want to delete this item?")))try{await r(w[i]);let Qe=ht(m,"delete","Deleted successfully");Qe!==!1&&O.success(Qe),await ne()}catch{O.error("Delete failed")}},[r,i,ne,O,m,d]);return{data:g,total:v,loading:ft,filters:f,setFilters:mt,resetFilters:I,pagination:Q,modalOpen:T,setModalOpen:h,editing:L,form:te,setForm:Ie,updateFormField:q,handleAdd:P,handleEdit:j,handleSubmit:pe,handleDelete:Pe,refresh:ne,isEdit:Ee}}var pn=R(require("react"),1);function fn(e,{template:t="{title}",defaultTitle:n=""}={}){pn.useEffect(()=>{let o=e??n;document.title=o?t.replace("{title}",o):n||t.replace("{title}","")},[e,t,n])}var E=R(require("react"),1);var y=require("react/jsx-runtime"),mn=E.createContext(null);function gn(e){if(ot)return ot(e);throw new Error("confirmAsync() called outside <ConfirmProvider>. Either wrap your app with <ConfirmProvider> or use useConfirmAsync() hook.")}var ot=null;function Rn({children:e,defaultOptions:t}){let[n,o]=E.useState({open:!1,options:{},resolve:null}),r=E.useCallback(a=>new Promise(u=>{let p={...t,...a};o({open:!0,options:p,resolve:u})}),[t]);E.useEffect(()=>(ot=r,()=>{ot=null}),[r]);let i=E.useCallback(()=>{n.resolve?.(!0),o(a=>({...a,open:!1}))},[n.resolve]),c=E.useCallback(()=>{n.resolve?.(!1),o(a=>({...a,open:!1}))},[n.resolve]);return(0,y.jsxs)(mn.Provider,{value:r,children:[e,(0,y.jsx)(De,{open:n.open,onOpenChange:a=>{a||c()},children:(0,y.jsxs)(Fe,{showCloseButton:!1,className:"sm:max-w-sm",children:[(0,y.jsx)(Ue,{children:(0,y.jsxs)("div",{className:"flex items-start gap-3",children:[(0,y.jsx)("div",{className:"flex size-9 shrink-0 items-center justify-center rounded-full bg-muted",children:n.options.icon??(0,y.jsx)(xt,{className:"size-4"})}),(0,y.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,y.jsx)(Ae,{children:n.options.title??"Confirm"}),(0,y.jsx)(Be,{children:n.options.content??"This action cannot be undone. Continue?"})]})]})}),(0,y.jsxs)(Ne,{children:[(0,y.jsx)(G,{variant:"outline",onClick:c,children:n.options.cancelText??"Cancel"}),(0,y.jsx)(G,{variant:n.options.okVariant==="destructive"?"destructive":"default",onClick:i,children:n.options.okText??"Confirm"})]})]})})]})}function xn(){let[e,t]=E.useState({open:!1,options:{},resolve:null}),n=E.useCallback(c=>new Promise(a=>{t({open:!0,options:c,resolve:a})}),[]),o=E.useCallback(()=>{e.resolve?.(!0),t(c=>({...c,open:!1}))},[e.resolve]),r=E.useCallback(()=>{e.resolve?.(!1),t(c=>({...c,open:!1}))},[e.resolve]);return[n,()=>(0,y.jsx)(De,{open:e.open,onOpenChange:c=>{c||r()},children:(0,y.jsxs)(Fe,{showCloseButton:!1,className:"sm:max-w-sm",children:[(0,y.jsx)(Ue,{children:(0,y.jsxs)("div",{className:"flex items-start gap-3",children:[(0,y.jsx)("div",{className:"flex size-9 shrink-0 items-center justify-center rounded-full bg-muted",children:e.options.icon??(0,y.jsx)(xt,{className:"size-4"})}),(0,y.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,y.jsx)(Ae,{children:e.options.title??"Confirm"}),(0,y.jsx)(Be,{children:e.options.content??"This action cannot be undone. Continue?"})]})]})}),(0,y.jsxs)(Ne,{children:[(0,y.jsx)(G,{variant:"outline",onClick:r,children:e.options.cancelText??"Cancel"}),(0,y.jsx)(G,{variant:e.options.okVariant==="destructive"?"destructive":"default",onClick:o,children:e.options.okText??"Confirm"})]})]})})]}function vn(){let e=E.useContext(mn);if(!e)throw new Error("useConfirmContext must be used within <ConfirmProvider>");return e}var de=R(require("react"),1);function vo(e,t){for(let n of t)switch(n.type){case"required":{if(e==null||e===""||Array.isArray(e)&&e.length===0)return n.message;break}case"min":{if(typeof n.value=="number"&&(typeof e=="number"&&e<n.value||typeof e=="string"&&e.length<n.value))return n.message;break}case"max":{if(typeof n.value=="number"&&(typeof e=="number"&&e>n.value||typeof e=="string"&&e.length>n.value))return n.message;break}case"pattern":{if(n.value instanceof RegExp&&typeof e=="string"&&!n.value.test(e))return n.message;break}case"custom":{if(typeof n.value=="function"&&!n.value(e))return n.message;break}}}function bn(e={}){let{rules:t=[],externalError:n,validateOnBlur:o=!0,validateOnChange:r=!1}=e,[i,c]=de.useState(void 0),[a,u]=de.useState(!1),p=de.useCallback(g=>{let x=vo(g,t);return c(x),x},[t]),m=de.useCallback(g=>{u(!0),o&&p(g.target.value)},[p,o]),d=de.useCallback(g=>{r&&a&&p(g.target.value)},[p,r,a]),f=de.useCallback(()=>{c(void 0),u(!1)},[]);return{error:n??i,onBlur:m,onChange:d,validate:p,reset:f,touched:a}}var rt=R(require("react"),1);function wt(){if(!(typeof navigator>"u"))return navigator.connection}function In(){let[e,t]=rt.useState(()=>{let n=wt();return{online:navigator.onLine,...n?{downlink:n.downlink,effectiveType:n.effectiveType,rtt:n.rtt,saveData:n.saveData}:{}}});return rt.useEffect(()=>{let n=()=>t(c=>({...c,online:!0})),o=()=>t(c=>({...c,online:!1})),r=()=>{let c=wt();c&&t(a=>({...a,downlink:c.downlink,effectiveType:c.effectiveType,rtt:c.rtt,saveData:c.saveData}))};window.addEventListener("online",n),window.addEventListener("offline",o);let i=wt();return i?.addEventListener?.("change",r),()=>{window.removeEventListener("online",n),window.removeEventListener("offline",o),i?.removeEventListener?.("change",r)}},[]),e}var st=R(require("react"),1);function yn(e){let[t,n]=st.useState(typeof document<"u"?!document.hidden:!0);return st.useEffect(()=>{let o=()=>{let r=!document.hidden;n(r),e?.(r)};return document.addEventListener("visibilitychange",o),()=>document.removeEventListener("visibilitychange",o)},[e]),t}var it=R(require("react"),1);function hn(e=100){let[t,n]=it.useState({width:typeof window<"u"?window.innerWidth:0,height:typeof window<"u"?window.innerHeight:0});return it.useEffect(()=>{let o,r=()=>{clearTimeout(o),o=setTimeout(()=>{n({width:window.innerWidth,height:window.innerHeight})},e)};return window.addEventListener("resize",r),()=>{window.removeEventListener("resize",r),clearTimeout(o)}},[e]),t}var Re=R(require("react"),1);function Tt(e=50,t){let[n,o]=Re.useState({x:0,y:0,isScrolled:!1,direction:null}),r=Re.useRef(0),i=Re.useRef(0);return Re.useEffect(()=>{let c=t?.current,a=!c,u=()=>({x:a?window.scrollX:c.scrollLeft,y:a?window.scrollY:c.scrollTop}),p=()=>{let d=Date.now();if(d-i.current<e)return;i.current=d;let{x:f,y:l}=u(),g=l-r.current;o({x:f,y:l,isScrolled:l>0,direction:g>0?"down":g<0?"up":null}),r.current=l},m=a?window:c;return m.addEventListener("scroll",p,{passive:!0}),()=>m.removeEventListener("scroll",p)},[e,t]),n}function wn(e=50,t){return Tt(e,t).direction}var at=R(require("react"),1);function Tn(){let[e,t]=at.useState(()=>typeof window>"u"?"portrait":window.innerWidth>window.innerHeight?"landscape":"portrait");return at.useEffect(()=>{let n=()=>{t(window.innerWidth>window.innerHeight?"landscape":"portrait")};return screen.orientation?.addEventListener?.("change",n),window.addEventListener("resize",n),()=>{screen.orientation?.removeEventListener?.("change",n),window.removeEventListener("resize",n)}},[]),e}var _=R(require("react"),1);function Cn(e=2e3){let[t,n]=_.useState(!1),[o,r]=_.useState(!1),[i,c]=_.useState(null),a=_.useRef(void 0),u=_.useCallback(async m=>{n(!0);try{return await navigator.clipboard.writeText(m),r(!0),c(m),a.current&&clearTimeout(a.current),a.current=setTimeout(()=>r(!1),e),!0}catch{try{let d=document.createElement("textarea");d.value=m,d.style.position="fixed",d.style.opacity="0",document.body.appendChild(d),d.select();let f=document.execCommand("copy");return document.body.removeChild(d),f&&(r(!0),c(m),a.current&&clearTimeout(a.current),a.current=setTimeout(()=>r(!1),e)),f}catch{return!1}}finally{n(!1)}},[e]),p=_.useCallback(()=>{r(!1),c(null),n(!1)},[]);return _.useEffect(()=>()=>{a.current&&clearTimeout(a.current)},[]),{copy:u,copying:t,copied:o,value:i,reset:p}}var Sn=require("react-hook-form");function ct(e){return(0,Sn.useForm)({mode:"onTouched",reValidateMode:"onChange",...e})}var Ct=require("@hookform/resolvers/zod");function Ln(e={}){let{schema:t,resolver:n,...o}=e,r=n??(t?(0,Ct.zodResolver)(t):void 0);return ct(r?{...o,resolver:r}:o)}function kn(e){return(0,Ct.zodResolver)(e)}var Ce=R(require("react"),1),Mn=require("react/jsx-runtime"),ut=Ce.createContext({permissions:[],hasPermission:()=>!0,hasAny:()=>!0,hasAll:()=>!0});function En({permissions:e,children:t}){let n=Ce.useMemo(()=>{let o=new Set(e);return{permissions:e,hasPermission:r=>o.has(r),hasAny:r=>r.some(i=>o.has(i)),hasAll:r=>r.every(i=>o.has(i))}},[e]);return(0,Mn.jsx)(ut.Provider,{value:n,children:t})}function Pn(){return Ce.useContext(ut)}var Y=R(require("react"),1);function On(e){let[t,n]=Y.useState(void 0),[o,r]=Y.useState("idle"),[i,c]=Y.useState(void 0),a=Y.useRef(!0);return Y.useEffect(()=>(a.current=!0,()=>{a.current=!1}),[]),{submit:Y.useCallback(async(p,m)=>{r("pending"),c(void 0);try{let d=await e(p,m);return a.current?(n(d),r("success"),d):void 0}catch(d){if(!a.current)return;throw c(d instanceof Error?d:new Error(String(d))),r("error"),d}},[e]),status:o,data:t,error:i,isLoading:o==="pending"}}var U=R(require("react"),1);function Dn(e){let[t,n]=U.useState("idle"),[o,r]=U.useState(void 0),[i,c]=U.useState(void 0),a=U.useRef(null),u=U.useRef(!0);U.useEffect(()=>(u.current=!0,()=>{u.current=!1,a.current?.abort()}),[]);let p=U.useCallback(async()=>{a.current?.abort();let f=new AbortController;a.current=f,n("pending"),c(void 0);try{let l=await e(f.signal);return f.signal.aborted||!u.current?void 0:(r(l),n("success"),l)}catch(l){if(f.signal.aborted||!u.current)return;throw c(l instanceof Error?l:new Error(String(l))),n("error"),l}},[e]),m=U.useCallback(()=>{a.current?.abort()},[]),d=U.useCallback(()=>{n("idle"),r(void 0),c(void 0)},[]);return{run:p,status:t,data:o,error:i,isLoading:t==="pending",abort:m,reset:d}}var xe=R(require("react"),1),bo={draft:["submitted","void"],submitted:["approved","rejected","void"],approved:["paid","void"],rejected:["submitted","void"],paid:["void"],void:[]};function Fn(e="draft"){let[t,n]=xe.useState(e),[o,r]=xe.useState([e]),i=xe.useCallback(u=>(bo[t]??[]).includes(u),[t]),c=xe.useCallback(u=>i(u)?(n(u),r(p=>[...p,u]),!0):!1,[i]),a=xe.useCallback((u=e)=>{n(u),r([u])},[e]);return{status:t,transition:c,can:i,history:o,reset:a}}var ee=R(require("react"),1);function Un(e,t={}){let{storageKey:n}=t,[o,r]=ee.useState(()=>{if(n&&typeof window<"u")try{let d=window.localStorage.getItem(n);if(d)return{...e,...JSON.parse(d)}}catch{}return e}),i=ee.useRef(new Set),c=ee.useCallback(d=>{if(n&&typeof window<"u")try{window.localStorage.setItem(n,JSON.stringify(d))}catch{}i.current.forEach(f=>f(d))},[n]),a=ee.useCallback(d=>{r(f=>{let l=typeof d=="function"?d(f):d;return c(l),l})},[c]),u=ee.useCallback(d=>{r(f=>{let l={...f,...d};return c(l),l})},[c]),p=ee.useCallback(()=>{r(e),c(e)},[e,c]),m=ee.useCallback(d=>(i.current.add(d),()=>{i.current.delete(d)}),[]);return{scope:o,setScope:a,patch:u,reset:p,subscribe:m}}var N=R(require("react"),1),Se=new Map;function Nn(e,t){let[n,o]=N.useState(e&&Se.has(e)?Se.get(e):[]),[r,i]=N.useState(e!==null&&!(e&&Se.has(e))),[c,a]=N.useState(void 0),[u,p]=N.useState(0),m=N.useRef(!0);N.useEffect(()=>(m.current=!0,()=>{m.current=!1}),[]),N.useEffect(()=>{if(e){if(Se.has(e)&&u===0){o(Se.get(e)),i(!1);return}i(!0),t(e).then(l=>{m.current&&(Se.set(e,l),o(l),a(void 0),i(!1))}).catch(l=>{m.current&&(a(l instanceof Error?l:new Error(String(l))),i(!1))})}},[e,u,t]);let d=N.useCallback(l=>n.find(g=>g.value===l)?.label??l,[n]),f=N.useCallback(()=>p(l=>l+1),[]);return{options:n,isLoading:r,error:c,getLabel:d,refresh:f}}var z=R(require("react"),1);function St(){return typeof window<"u"}var Lt={text(e,t,n="text/plain"){if(!St())return;let o=new Blob([t],{type:n});this.blob(e,o)},json(e,t,n=!0){let o=JSON.stringify(t,null,n?2:0);this.text(e,o,"application/json")},blob(e,t){if(!St())return;let n=URL.createObjectURL(t);this.url(e,n),setTimeout(()=>URL.revokeObjectURL(n),1e3)},url(e,t){if(!St())return;let n=document.createElement("a");n.href=t,n.download=e,n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n)},csv(e,t,n){if(t.length===0){this.text(e,"","text/csv");return}let o=n??Object.keys(t[0]),r=[o.join(","),...t.map(i=>o.map(c=>{let a=i[c],u=a==null?"":String(a);return u.includes(",")||u.includes('"')||u.includes(`
6
+ "use strict";"use client";var so=Object.create;var je=Object.defineProperty;var io=Object.getOwnPropertyDescriptor;var ao=Object.getOwnPropertyNames;var co=Object.getPrototypeOf,uo=Object.prototype.hasOwnProperty;var lo=(e,t)=>{for(var n in t)je(e,n,{get:t[n],enumerable:!0})},Et=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of ao(t))!uo.call(e,s)&&s!==n&&je(e,s,{get:()=>t[s],enumerable:!(r=io(t,s))||r.enumerable});return e};var x=(e,t,n)=>(n=e!=null?so(co(e)):{},Et(t||!e||!e.__esModule?je(n,"default",{value:e,enumerable:!0}):n,e)),po=e=>Et(je({},"__esModule",{value:!0}),e);var yo={};lo(yo,{ConfirmProvider:()=>Rn,LocaleProvider:()=>un,ModalRenderer:()=>Qt,PermissionContext:()=>lt,PermissionProvider:()=>Pn,confirmAsync:()=>xn,getStoredLocale:()=>yt,supportedLocales:()=>ot,useApproval:()=>Dn,useAsync:()=>jt,useAsyncTask:()=>Fn,useBill:()=>Un,useBreakpoint:()=>xt,useClickOutside:()=>Gt,useClipboard:()=>Ln,useConfirmAsync:()=>vn,useConfirmContext:()=>bn,useCopyToClipboard:()=>qt,useCountdown:()=>_t,useCrud:()=>pn,useDataScope:()=>Nn,useDebounce:()=>Xt,useDict:()=>An,useEventListener:()=>Mt,useExport:()=>Bn,useFetch:()=>Vn,useFieldValidation:()=>In,useForm:()=>ut,useFormSchema:()=>kn,useFormTable:()=>zn,useHotkeys:()=>$t,useIdle:()=>Hn,useImport:()=>Kn,useInView:()=>$e,useInfiniteScroll:()=>Jt,useIntersectionObserver:()=>It,useIsBreakpoint:()=>Pt,useIsDesktop:()=>Yt,useIsMobile:()=>tn,useIsTablet:()=>en,useKey:()=>Rt,useKeyCombo:()=>Dt,useLineEditor:()=>Wn,useLocalStorage:()=>Zt,useLocale:()=>ln,useMediaQuery:()=>Ze,useMessage:()=>qe,useModal:()=>Wt,useMutation:()=>Zn,useNetworkQuality:()=>jn,useNetworkStatus:()=>hn,useNotification:()=>At,useOrientation:()=>Cn,usePageTitle:()=>mn,usePagination:()=>et,usePermission:()=>Mn,usePrevious:()=>nn,usePrint:()=>Gn,useQuery:()=>$n,useRedo:()=>qn,useScroll:()=>Ct,useScrollDirection:()=>Tn,useSse:()=>_n,useStep:()=>on,useSwr:()=>Yn,useTable:()=>eo,useThrottle:()=>rn,useToggle:()=>sn,useTrack:()=>no,useUndo:()=>oo,useVisibilityChange:()=>yn,useWebsocket:()=>ro,useWindowSize:()=>wn,zodResolverAdapter:()=>En});module.exports=po(yo);var Ge=x(require("react"),1),Me={xs:0,sm:640,md:768,lg:1024,xl:1280,"2xl":1536};function xt(){let[e,t]=Ge.useState(void 0);return Ge.useEffect(()=>{let n=()=>{let r=window.innerWidth;r>=Me["2xl"]?t("2xl"):r>=Me.xl?t("xl"):r>=Me.lg?t("lg"):r>=Me.md?t("md"):r>=Me.sm?t("sm"):t("xs")};return n(),window.addEventListener("resize",n,{passive:!0}),()=>window.removeEventListener("resize",n)},[]),e}function Pt(e){let t=xt();if(!t)return!1;let n=["xs","sm","md","lg","xl","2xl"];return n.indexOf(t)>=n.indexOf(e)}var fe=x(require("react"),1);function Mt(e,t,n,r){let s=fe.useRef(n),i=fe.useRef(r);fe.useEffect(()=>{s.current=n},[n]),fe.useEffect(()=>{i.current=r},[r]),fe.useEffect(()=>{if(!e)return;let c=u=>{s.current(u)},a=i.current;return e.addEventListener(t,c,a),()=>{e.removeEventListener(t,c,a)}},[e,t])}var Oe=x(require("react"),1);function Ot(e,t){let n=t.toLowerCase().split("+"),r=e.key.toLowerCase(),s=n.includes("ctrl")||n.includes("control"),i=n.includes("meta")||n.includes("cmd"),c=n.includes("shift"),a=n.includes("alt"),u=n.filter(p=>!["ctrl","control","meta","cmd","shift","alt"].includes(p))[0];return r===u&&e.ctrlKey===s&&e.metaKey===i&&e.shiftKey===c&&e.altKey===a}function Rt(e,t,n={}){let{event:r="keydown",target:s,preventDefault:i=!1,enabled:c=!0}=n,a=Oe.useRef(t);Oe.useEffect(()=>{a.current=t},[t]),Oe.useEffect(()=>{if(!c)return;let u=s??window,p=m=>{let d=m,f=!1;typeof e=="function"?f=e(d):typeof e=="string"?f=Ot(d,e):Array.isArray(e)&&(f=e.some(l=>Ot(d,l))),f&&(i&&d.preventDefault(),a.current(d))};return u.addEventListener(r,p),()=>u.removeEventListener(r,p)},[e,r,s,i,c])}function Dt(e,t,n){Rt(e,t,n)}var Ut=require("react");var $=require("sonner");function he(e){let t={};return e?.key!==void 0&&(t.id=e.key),e?.duration!==void 0&&(t.duration=e.duration),e?.description!==void 0&&(t.description=e.description),e?.action&&(t.action={label:e.action.label,onClick:e.action.onClick}),e?.icon!==void 0&&(t.icon=e.icon),e?.className!==void 0&&(t.classNames={toast:e.className}),e?.onClick&&(t.onClick=e.onClick),e?.onDismiss&&(t.onDismiss=e.onDismiss),e?.onAutoClose&&(t.onAutoClose=e.onAutoClose),t}var Ft={duration:3,maxCount:5,placement:"top-right",richColors:!0,expand:!1},ae=Object.assign((e,t)=>(0,$.toast)(e,he(t)),{success:(e,t)=>$.toast.success(e,he(t)),error:(e,t)=>$.toast.error(e,he(t)),warning:(e,t)=>$.toast.warning(e,he(t)),info:(e,t)=>$.toast.info(e,he(t)),loading:(e,t)=>{let n=he({...t,duration:t?.duration??0});return $.toast.loading(e,n)},promise:(e,t)=>$.toast.promise(e,{loading:t.loading??"Loading...",success:t.success,error:t.error}),destroy:e=>{e!==void 0?$.toast.dismiss(e):$.toast.dismiss()},config:e=>{Ft={...Ft,...e}}});function qe(){return(0,Ut.useMemo)(()=>({success:ae.success,error:ae.error,warning:ae.warning,info:ae.info,loading:ae.loading,promise:ae.promise,destroy:ae.destroy}),[])}var Nt=x(require("react"),1),ce=require("sonner");function At(){let e=Nt.useCallback(t=>{let{type:n="info",title:r,description:s,duration:i,id:c,action:a}=t,u={};switch(c!==void 0&&(u.id=c),s!==void 0&&(u.description=s),i!==void 0&&(u.duration=i),a&&(u.action={label:a.label,onClick:a.onClick}),n){case"success":return ce.toast.success(r,u);case"error":return ce.toast.error(r,u);case"warning":return ce.toast.warning(r,u);default:return ce.toast.info(r,u)}},[]);return{open:e,success:t=>e({...t,type:"success"}),error:t=>e({...t,type:"error"}),warning:t=>e({...t,type:"warning"}),info:t=>e({...t,type:"info"}),close:t=>{t?ce.toast.dismiss(t):ce.toast.dismiss()},closeAll:()=>ce.toast.dismiss()}}var D=x(require("react"),1);var No=require("react"),bt=require("react-i18next"),re=require("@base-ui/react/dialog");var Bt=require("clsx"),Vt=require("tailwind-merge");function oe(...e){return(0,Vt.twMerge)((0,Bt.clsx)(e))}var _e=x(require("react"),1),zt=require("@base-ui/react/button"),Ht=require("class-variance-authority");var ue=require("react/jsx-runtime"),fo=(0,Ht.cva)("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function z({className:e,variant:t="default",size:n="default",icon:r,iconRight:s,children:i,...c}){let a=r!=null||s!=null,u=_e.useMemo(()=>oe(fo({variant:t,size:n,className:e})),[t,n,e]);return(0,ue.jsx)(zt.Button,{"data-slot":"button",className:u,...c,children:a?(0,ue.jsxs)(ue.Fragment,{children:[r!=null&&(0,ue.jsx)("span",{"data-icon":"inline-start",className:"shrink-0",children:r}),i,s!=null&&(0,ue.jsx)("span",{"data-icon":"inline-end",className:"shrink-0",children:s})]}):i})}var Do=_e.memo(z);var o=x(require("lucide-react"),1),vt=o.AlertCircleIcon;var Kt=o.XIcon;var k=require("react/jsx-runtime");function De({...e}){return(0,k.jsx)(re.Dialog.Root,{"data-slot":"dialog",...e})}function mo({...e}){return(0,k.jsx)(re.Dialog.Portal,{"data-slot":"dialog-portal",...e})}function go({className:e,...t}){return(0,k.jsx)(re.Dialog.Backdrop,{"data-slot":"dialog-overlay",className:oe("data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0 fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs",e),...t})}function Fe({className:e,children:t,showCloseButton:n=!0,...r}){let{t:s}=(0,bt.useTranslation)("ui");return(0,k.jsxs)(mo,{children:[(0,k.jsx)(go,{}),(0,k.jsxs)(re.Dialog.Popup,{"data-slot":"dialog-content",className:oe("bg-popover text-popover-foreground ring-foreground/10 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl p-4 text-sm ring-1 duration-100 outline-none sm:max-w-sm",e),...r,children:[t,n&&(0,k.jsxs)(re.Dialog.Close,{"data-slot":"dialog-close",render:(0,k.jsx)(z,{variant:"ghost",className:"absolute top-2 right-2",size:"icon-sm"}),children:[(0,k.jsx)(Kt,{}),(0,k.jsx)("span",{className:"sr-only",children:s("dialog.close")})]})]})]})}function Ue({className:e,...t}){return(0,k.jsx)("div",{"data-slot":"dialog-header",className:oe("flex flex-col gap-2",e),...t})}function Ne({className:e,showCloseButton:t=!1,children:n,...r}){let{t:s}=(0,bt.useTranslation)("ui");return(0,k.jsxs)("div",{"data-slot":"dialog-footer",className:oe("bg-muted/50 -mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t p-4 sm:flex-row sm:justify-end",e),...r,children:[n,t&&(0,k.jsx)(re.Dialog.Close,{render:(0,k.jsx)(z,{variant:"outline"}),children:s("dialog.closeButton")})]})}function Ae({className:e,...t}){return(0,k.jsx)(re.Dialog.Title,{"data-slot":"dialog-title",className:oe("font-heading text-base leading-none font-medium",e),...t})}function Be({className:e,...t}){return(0,k.jsx)(re.Dialog.Description,{"data-slot":"dialog-description",className:oe("text-muted-foreground *:[a]:hover:text-foreground text-sm *:[a]:underline *:[a]:underline-offset-3",e),...t})}var F=require("react/jsx-runtime");function Wt(){let[e,t]=D.useState({open:!1,options:{}}),[n,r]=D.useState(!1),s=D.useCallback(g=>{t({open:!0,options:g})},[]),i=D.useCallback(()=>{t(g=>({...g,open:!1})),r(!1)},[]),c=D.useCallback(async()=>{let{onOk:g}=e.options;if(g)try{r(!0),await g()}finally{i()}else i()},[e.options,i]),a=D.useCallback(()=>{e.options.onCancel?.(),i()},[e.options,i]),u=D.useCallback(g=>s(g),[s]),p=D.useCallback(g=>s(g),[s]),m=D.useCallback(g=>s(g),[s]),d=D.useCallback(g=>s(g),[s]),f=D.useCallback(g=>s({...g,okVariant:"destructive"}),[s]),l=(0,F.jsx)(De,{open:e.open,onOpenChange:g=>{!g&&e.options.maskClosable!==!1&&a()},children:(0,F.jsxs)(Fe,{style:{maxWidth:typeof e.options.width=="number"?`${e.options.width}px`:e.options.width},children:[(0,F.jsxs)(Ue,{children:[e.options.title&&(0,F.jsx)(Ae,{children:e.options.title}),e.options.content&&(0,F.jsx)(Be,{children:e.options.content})]}),(0,F.jsxs)(Ne,{children:[e.options.cancelText!==void 0&&(0,F.jsx)(z,{variant:"outline",onClick:a,disabled:n,children:e.options.cancelText??"Cancel"}),(0,F.jsx)(z,{variant:e.options.okVariant==="destructive"?"destructive":"default",onClick:c,disabled:n,children:n?"Loading...":e.options.okText??"OK"})]})]})});return u.modal=l,p.modal=l,m.modal=l,d.modal=l,f.modal=l,{confirm:u,info:p,warning:m,success:d,error:f}}function Qt({modal:e}){let t=e.confirm.modal;return(0,F.jsx)(F.Fragment,{children:t})}var J=x(require("react"),1);function jt(e,t=!0){let[n,r]=J.useState({status:"idle",data:void 0,error:void 0}),s=J.useRef(!0),i=J.useRef(null);J.useEffect(()=>(s.current=!0,()=>{s.current=!1}),[]);let c=J.useCallback(async(...a)=>{i.current=a,r(u=>({status:"pending",data:u.data,error:void 0}));try{let u=await e(...a);return s.current?(r({status:"success",data:u,error:void 0}),u):void 0}catch(u){let p=u instanceof Error?u:new Error(String(u));if(!s.current)return;throw r({status:"error",data:void 0,error:p}),p}},[e]);return J.useEffect(()=>{if(!t)return;let a=window.setTimeout(()=>{c(...i.current??[])},0);return()=>window.clearTimeout(a)},[t,c]),{...n,run:c,isLoading:n.status==="pending"}}var Ve=x(require("react"),1);function Gt(e,t,n=!0){let r=Ve.useRef(t);Ve.useEffect(()=>{r.current=t},[t]),Ve.useEffect(()=>{if(!n)return;let s=i=>{let c=e.current;!c||c.contains(i.target)||r.current(i)};return document.addEventListener("mousedown",s),document.addEventListener("touchstart",s),()=>{document.removeEventListener("mousedown",s),document.removeEventListener("touchstart",s)}},[e,n])}var se=x(require("react"),1);function qt(){let[e,t]=se.useState(!1),n=se.useRef(null),r=se.useCallback(async i=>{if(typeof navigator>"u"||!navigator.clipboard)return!1;try{return await navigator.clipboard.writeText(i),t(!0),n.current&&clearTimeout(n.current),n.current=setTimeout(()=>t(!1),2e3),!0}catch{return!1}},[]),s=se.useCallback(()=>{n.current&&clearTimeout(n.current),t(!1)},[]);return se.useEffect(()=>()=>{n.current&&clearTimeout(n.current)},[]),[e,r,s]}var ye=x(require("react"),1);function _t(e){let t=ye.useMemo(()=>new Date(e).getTime(),[e]),[n,r]=ye.useState(()=>Date.now());ye.useEffect(()=>{if(Number.isNaN(t)||t<=Date.now())return;let d=setInterval(()=>{let f=Date.now();if(t<=f){r(f),clearInterval(d);return}r(f)},1e3);return()=>clearInterval(d)},[t]);let s=Math.max(0,t-n),i=Math.floor(s/1e3),c=Math.floor(i/86400),a=Math.floor(i%86400/3600),u=Math.floor(i%3600/60),p=i%60,m=s<=0||Number.isNaN(t);return{days:c,hours:a,minutes:u,seconds:p,isFinished:m,totalSeconds:i}}var Xe=x(require("react"),1);function Xt(e,t=300){let[n,r]=Xe.useState(e);return Xe.useEffect(()=>{let s=setTimeout(()=>r(e),t);return()=>clearTimeout(s)},[e,t]),n}var ze=x(require("react"),1);function xo(e){return e.toLowerCase().split("+").map(t=>t.trim()).sort().join("+")}function Ro(e){if(!(e instanceof HTMLElement))return!1;let t=e.tagName;return t==="INPUT"||t==="TEXTAREA"||t==="SELECT"||e.isContentEditable}function vo(e,t){let n=t.split("+").map(c=>c.trim()),r=e.key.toLowerCase(),s={mod:n.includes("mod")||n.includes("cmd")||n.includes("ctrl"),shift:n.includes("shift"),alt:n.includes("alt")||n.includes("option"),key:n.filter(c=>!["mod","cmd","ctrl","shift","alt","option","meta"].includes(c))[0]},i=e.metaKey||e.ctrlKey;return s.mod!==i||s.shift!==e.shiftKey||s.alt!==e.altKey||!s.key?!1:r===s.key.toLowerCase()}function $t(e,t={}){let{enabled:n=!0,preventDefault:r=!0,allowInInputs:s=!1}=t,i=ze.useRef(e);ze.useEffect(()=>{i.current=e},[e]),ze.useEffect(()=>{if(!n)return;let c=a=>{if(!(!s&&Ro(a.target))){for(let[u,p]of Object.entries(i.current))if(vo(a,xo(u))){r&&a.preventDefault(),p(a);return}}};return document.addEventListener("keydown",c),()=>document.removeEventListener("keydown",c)},[n,r,s])}var M=x(require("react"),1);var we=x(require("react"),1);function It(e,t={}){let{enabled:n=!0,triggerOnce:r=!1,root:s,rootMargin:i,threshold:c}=t,[a,u]=we.useState(null),p=we.useRef(!1);return we.useEffect(()=>{if(!n||p.current)return;let m=e.current;if(!m)return;if(typeof IntersectionObserver>"u"){u({isIntersecting:!0,target:m,boundingClientRect:m.getBoundingClientRect(),intersectionRatio:1,intersectionRect:m.getBoundingClientRect(),rootBounds:null,time:Date.now()});return}let d=new IntersectionObserver(f=>{let l=f[0];l&&(u(l),r&&l.isIntersecting&&(p.current=!0,d.disconnect()))},(()=>{let f={};return s!==void 0&&(f.root=s),i!==void 0&&(f.rootMargin=i),c!==void 0&&(f.threshold=c),f})());return d.observe(m),()=>d.disconnect()},[e,n,r,s,i,c]),a}function $e(e,t={}){return!!It(e,t)?.isIntersecting}function Jt(e,t={}){let{enabled:n=!0}=t,[r,s]=M.useState([]),[i,c]=M.useState(!0),[a,u]=M.useState(!1),[p,m]=M.useState(null),d=M.useRef(null),f=$e(d,{rootMargin:t.rootMargin??"100px",threshold:t.threshold??0}),l=M.useRef(e);M.useEffect(()=>{l.current=e},[e]);let g=M.useCallback(async()=>{if(!(a||!i||!n)){u(!0),m(null);try{let v=await l.current();s(b=>[...b,...v.items]),c(v.hasMore)}catch(v){m(v instanceof Error?v:new Error(String(v)))}finally{u(!1)}}},[a,i,n]);M.useEffect(()=>{if(!f)return;let v=window.setTimeout(()=>{g()},0);return()=>window.clearTimeout(v)},[f,g]);let R=M.useCallback(()=>{s([]),c(!0),m(null)},[]);return{items:r,hasMore:i,loading:a,error:p,sentinelRef:d,loadMore:g,reset:R}}var le=x(require("react"),1);function Zt(e,t){let n=le.useCallback(()=>{if(typeof window>"u")return t;try{let a=window.localStorage.getItem(e);return a==null?t:JSON.parse(a)}catch{return t}},[e,t]),[r,s]=le.useState(n),i=le.useCallback(a=>{s(u=>{let p=a instanceof Function?a(u):a;try{window.localStorage.setItem(e,JSON.stringify(p))}catch{}return p})},[e]),c=le.useCallback(()=>{try{window.localStorage.removeItem(e)}catch{}s(t)},[e,t]);return le.useEffect(()=>{let a=u=>{u.key===e&&s(n())};return window.addEventListener("storage",a),()=>window.removeEventListener("storage",a)},[e,n]),[r,i,c]}var Je=x(require("react"),1);function Ze(e){let[t,n]=Je.useState(()=>typeof window>"u"?!1:window.matchMedia(e).matches);return Je.useEffect(()=>{if(typeof window>"u")return;let r=window.matchMedia(e),s=()=>n(r.matches);r.addEventListener("change",s);let i=window.setTimeout(()=>n(r.matches),0);return()=>{window.clearTimeout(i),r.removeEventListener("change",s)}},[e]),t}var Yt=(e=1024)=>Ze(`(min-width: ${e}px)`),en=(e=768,t=1023)=>Ze(`(min-width: ${e}px) and (max-width: ${t}px)`);var Ye=x(require("react"),1),ht=768;function tn(){let[e,t]=Ye.useState(()=>typeof window>"u"?!1:window.innerWidth<ht);return Ye.useEffect(()=>{let n=window.matchMedia(`(max-width: ${ht}px)`),r=()=>{t(window.innerWidth<ht)};return n.addEventListener("change",r),()=>n.removeEventListener("change",r)},[]),e}var Te=x(require("react"),1);function et(e,t={}){let{page:n=1,pageSize:r=10}=t,[s,i]=Te.useState(n),[c,a]=Te.useState(r),u=Math.max(1,Math.ceil(e/c)),p=Math.min(s,u),m=(p-1)*c,d=Te.useCallback(l=>i(Math.min(Math.max(1,l),u)),[u]),f=Te.useCallback(l=>{a(l),i(1)},[]);return{page:p,pageSize:c,total:e,totalPages:u,offset:m,hasNext:p<u,hasPrev:p>1,setPage:d,setPageSize:f,next:()=>d(p+1),prev:()=>d(p-1),first:()=>i(1),last:()=>d(u)}}var tt=x(require("react"),1);function nn(e){let t=tt.useRef(void 0);return tt.useEffect(()=>{t.current=e},[e]),t.current}var me=x(require("react"),1);function on(e,t=0){let[n,r]=me.useState(t),s=me.useCallback(()=>r(u=>Math.min(u+1,e-1)),[e]),i=me.useCallback(()=>r(u=>Math.max(u-1,0)),[]),c=me.useCallback(u=>r(Math.min(Math.max(0,u),e-1)),[e]),a=me.useCallback(()=>r(t),[t]);return{step:n,next:s,prev:i,goTo:c,reset:a,isFirst:n===0,isLast:n===e-1}}var ge=x(require("react"),1);function rn(e,t=300){let[n,r]=ge.useState(e),s=ge.useRef(0),i=ge.useRef(null);return ge.useEffect(()=>{let c=Date.now(),a=c-s.current;return a>=t?(s.current=c,r(e)):(i.current&&clearTimeout(i.current),i.current=setTimeout(()=>{s.current=Date.now(),r(e)},t-a)),()=>{i.current&&clearTimeout(i.current)}},[e,t]),n}var nt=x(require("react"),1);function sn(e=!1){let[t,n]=nt.useState(e),r=nt.useCallback(()=>n(s=>!s),[]);return[t,r,n]}var Z=require("react"),dn=require("react/jsx-runtime"),ot=["zh-CN","en-US"],an="chaos-ui-locale";function yt(){if(typeof window>"u")return"zh-CN";let e=localStorage.getItem(an);return e&&ot.includes(e)?e:"zh-CN"}var cn=(0,Z.createContext)(null);function un({initialLocale:e="zh-CN",children:t}){let[n,r]=(0,Z.useState)(()=>typeof window>"u"?e:yt()),s=(0,Z.useCallback)(i=>{r(i),typeof window<"u"&&localStorage.setItem(an,i)},[]);return(0,Z.useEffect)(()=>{document.documentElement.lang=n},[n]),(0,dn.jsx)(cn.Provider,{value:{locale:n,setLocale:s,supportedLocales:[...ot]},children:t})}function ln(){let e=(0,Z.useContext)(cn);if(!e)throw new Error("useLocale must be used within a LocaleProvider");return e}var C=x(require("react"),1);function wt(e,t,n){if(e===!1)return!1;if(e===void 0)return n;if(typeof e=="string")return e;let r=e[t];return r!==void 0?r:n}function pn(e){let{fetcher:t,onCreate:n,onUpdate:r,onDelete:s,rowKey:i="id",emptyForm:c,defaultPageSize:a=20,onValidate:u,defaultFilters:p={},successMessage:m,deleteConfirmTitle:d}=e,[f,l]=C.useState(p),[g,R]=C.useState([]),[v,b]=C.useState(0),[T,y]=C.useState(!1),[S,Q]=C.useState(null),[te,Ie]=C.useState(c),[mt,Ke]=C.useState(!1),j=et(v,{pageSize:a}),O=qe(),Ee=S!==null,ne=C.useCallback(async()=>{Ke(!0);try{let w=await t(j.page,j.pageSize,f);R(w.list),b(w.total)}finally{Ke(!1)}},[t,j.page,j.pageSize,f]);C.useEffect(()=>{ne()},[ne]);let gt=C.useCallback(w=>{l(We=>({...We,...w})),j.setPage(1)},[j.setPage]),I=C.useCallback(w=>{l(w),j.setPage(1)},[j.setPage]),P=C.useCallback(()=>{Q(null),Ie(c),y(!0)},[c]),G=C.useCallback(w=>{Q(w),Ie({...w}),y(!0)},[]),X=C.useCallback((w,We)=>{Ie(Qe=>({...Qe,[w]:We}))},[]),pe=C.useCallback(async()=>{if(u){let w=u(te);if(w){O.error(w);return}}try{if(Ee&&S&&r){await r(S[i],te);let w=wt(m,"update","Updated successfully");w!==!1&&O.success(w)}else if(n){await n(te);let w=wt(m,"create","Created successfully");w!==!1&&O.success(w)}y(!1),await ne()}catch{O.error("Operation failed")}},[S,te,Ee,n,r,u,i,ne,O,m]),Pe=C.useCallback(async w=>{if(!(!s||!globalThis.confirm?.(d??"Are you sure you want to delete this item?")))try{await s(w[i]);let Qe=wt(m,"delete","Deleted successfully");Qe!==!1&&O.success(Qe),await ne()}catch{O.error("Delete failed")}},[s,i,ne,O,m,d]);return{data:g,total:v,loading:mt,filters:f,setFilters:gt,resetFilters:I,pagination:j,modalOpen:T,setModalOpen:y,editing:S,form:te,setForm:Ie,updateFormField:X,handleAdd:P,handleEdit:G,handleSubmit:pe,handleDelete:Pe,refresh:ne,isEdit:Ee}}var fn=x(require("react"),1);function mn(e,{template:t="{title}",defaultTitle:n=""}={}){fn.useEffect(()=>{let r=e??n;document.title=r?t.replace("{title}",r):n||t.replace("{title}","")},[e,t,n])}var E=x(require("react"),1);var h=require("react/jsx-runtime"),gn=E.createContext(null);function xn(e){if(rt)return rt(e);throw new Error("confirmAsync() called outside <ConfirmProvider>. Either wrap your app with <ConfirmProvider> or use useConfirmAsync() hook.")}var rt=null;function Rn({children:e,defaultOptions:t}){let[n,r]=E.useState({open:!1,options:{},resolve:null}),s=E.useCallback(a=>new Promise(u=>{let p={...t,...a};r({open:!0,options:p,resolve:u})}),[t]);E.useEffect(()=>(rt=s,()=>{rt=null}),[s]);let i=E.useCallback(()=>{n.resolve?.(!0),r(a=>({...a,open:!1}))},[n.resolve]),c=E.useCallback(()=>{n.resolve?.(!1),r(a=>({...a,open:!1}))},[n.resolve]);return(0,h.jsxs)(gn.Provider,{value:s,children:[e,(0,h.jsx)(De,{open:n.open,onOpenChange:a=>{a||c()},children:(0,h.jsxs)(Fe,{showCloseButton:!1,className:"sm:max-w-sm",children:[(0,h.jsx)(Ue,{children:(0,h.jsxs)("div",{className:"flex items-start gap-3",children:[(0,h.jsx)("div",{className:"flex size-9 shrink-0 items-center justify-center rounded-full bg-muted",children:n.options.icon??(0,h.jsx)(vt,{className:"size-4"})}),(0,h.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,h.jsx)(Ae,{children:n.options.title??"Confirm"}),(0,h.jsx)(Be,{children:n.options.content??"This action cannot be undone. Continue?"})]})]})}),(0,h.jsxs)(Ne,{children:[(0,h.jsx)(z,{variant:"outline",onClick:c,children:n.options.cancelText??"Cancel"}),(0,h.jsx)(z,{variant:n.options.okVariant==="destructive"?"destructive":"default",onClick:i,children:n.options.okText??"Confirm"})]})]})})]})}function vn(){let[e,t]=E.useState({open:!1,options:{},resolve:null}),n=E.useCallback(c=>new Promise(a=>{t({open:!0,options:c,resolve:a})}),[]),r=E.useCallback(()=>{e.resolve?.(!0),t(c=>({...c,open:!1}))},[e.resolve]),s=E.useCallback(()=>{e.resolve?.(!1),t(c=>({...c,open:!1}))},[e.resolve]);return[n,()=>(0,h.jsx)(De,{open:e.open,onOpenChange:c=>{c||s()},children:(0,h.jsxs)(Fe,{showCloseButton:!1,className:"sm:max-w-sm",children:[(0,h.jsx)(Ue,{children:(0,h.jsxs)("div",{className:"flex items-start gap-3",children:[(0,h.jsx)("div",{className:"flex size-9 shrink-0 items-center justify-center rounded-full bg-muted",children:e.options.icon??(0,h.jsx)(vt,{className:"size-4"})}),(0,h.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,h.jsx)(Ae,{children:e.options.title??"Confirm"}),(0,h.jsx)(Be,{children:e.options.content??"This action cannot be undone. Continue?"})]})]})}),(0,h.jsxs)(Ne,{children:[(0,h.jsx)(z,{variant:"outline",onClick:s,children:e.options.cancelText??"Cancel"}),(0,h.jsx)(z,{variant:e.options.okVariant==="destructive"?"destructive":"default",onClick:r,children:e.options.okText??"Confirm"})]})]})})]}function bn(){let e=E.useContext(gn);if(!e)throw new Error("useConfirmContext must be used within <ConfirmProvider>");return e}var de=x(require("react"),1);function bo(e,t){for(let n of t)switch(n.type){case"required":{if(e==null||e===""||Array.isArray(e)&&e.length===0)return n.message;break}case"min":{if(typeof n.value=="number"&&(typeof e=="number"&&e<n.value||typeof e=="string"&&e.length<n.value))return n.message;break}case"max":{if(typeof n.value=="number"&&(typeof e=="number"&&e>n.value||typeof e=="string"&&e.length>n.value))return n.message;break}case"pattern":{if(n.value instanceof RegExp&&typeof e=="string"&&!n.value.test(e))return n.message;break}case"custom":{if(typeof n.value=="function"&&!n.value(e))return n.message;break}}}function In(e={}){let{rules:t=[],externalError:n,validateOnBlur:r=!0,validateOnChange:s=!1}=e,[i,c]=de.useState(void 0),[a,u]=de.useState(!1),p=de.useCallback(g=>{let R=bo(g,t);return c(R),R},[t]),m=de.useCallback(g=>{u(!0),r&&p(g.target.value)},[p,r]),d=de.useCallback(g=>{s&&a&&p(g.target.value)},[p,s,a]),f=de.useCallback(()=>{c(void 0),u(!1)},[]);return{error:n??i,onBlur:m,onChange:d,validate:p,reset:f,touched:a}}var st=x(require("react"),1);function Tt(){if(!(typeof navigator>"u"))return navigator.connection}function hn(){let[e,t]=st.useState(()=>{let n=Tt();return{online:navigator.onLine,...n?{downlink:n.downlink,effectiveType:n.effectiveType,rtt:n.rtt,saveData:n.saveData}:{}}});return st.useEffect(()=>{let n=()=>t(c=>({...c,online:!0})),r=()=>t(c=>({...c,online:!1})),s=()=>{let c=Tt();c&&t(a=>({...a,downlink:c.downlink,effectiveType:c.effectiveType,rtt:c.rtt,saveData:c.saveData}))};window.addEventListener("online",n),window.addEventListener("offline",r);let i=Tt();return i?.addEventListener?.("change",s),()=>{window.removeEventListener("online",n),window.removeEventListener("offline",r),i?.removeEventListener?.("change",s)}},[]),e}var it=x(require("react"),1);function yn(e){let[t,n]=it.useState(typeof document<"u"?!document.hidden:!0);return it.useEffect(()=>{let r=()=>{let s=!document.hidden;n(s),e?.(s)};return document.addEventListener("visibilitychange",r),()=>document.removeEventListener("visibilitychange",r)},[e]),t}var at=x(require("react"),1);function wn(e=100){let[t,n]=at.useState({width:typeof window<"u"?window.innerWidth:0,height:typeof window<"u"?window.innerHeight:0});return at.useEffect(()=>{let r,s=()=>{clearTimeout(r),r=setTimeout(()=>{n({width:window.innerWidth,height:window.innerHeight})},e)};return window.addEventListener("resize",s),()=>{window.removeEventListener("resize",s),clearTimeout(r)}},[e]),t}var xe=x(require("react"),1);function Ct(e=50,t){let[n,r]=xe.useState({x:0,y:0,isScrolled:!1,direction:null}),s=xe.useRef(0),i=xe.useRef(0);return xe.useEffect(()=>{let c=t?.current,a=!c,u=()=>({x:a?window.scrollX:c.scrollLeft,y:a?window.scrollY:c.scrollTop}),p=()=>{let d=Date.now();if(d-i.current<e)return;i.current=d;let{x:f,y:l}=u(),g=l-s.current;r({x:f,y:l,isScrolled:l>0,direction:g>0?"down":g<0?"up":null}),s.current=l},m=a?window:c;return m.addEventListener("scroll",p,{passive:!0}),()=>m.removeEventListener("scroll",p)},[e,t]),n}function Tn(e=50,t){return Ct(e,t).direction}var ct=x(require("react"),1);function Cn(){let[e,t]=ct.useState(()=>typeof window>"u"?"portrait":window.innerWidth>window.innerHeight?"landscape":"portrait");return ct.useEffect(()=>{let n=()=>{t(window.innerWidth>window.innerHeight?"landscape":"portrait")};return screen.orientation?.addEventListener?.("change",n),window.addEventListener("resize",n),()=>{screen.orientation?.removeEventListener?.("change",n),window.removeEventListener("resize",n)}},[]),e}var q=x(require("react"),1);function Ln(e=2e3){let[t,n]=q.useState(!1),[r,s]=q.useState(!1),[i,c]=q.useState(null),a=q.useRef(void 0),u=q.useCallback(async m=>{n(!0);try{return await navigator.clipboard.writeText(m),s(!0),c(m),a.current&&clearTimeout(a.current),a.current=setTimeout(()=>s(!1),e),!0}catch{try{let d=document.createElement("textarea");d.value=m,d.style.position="fixed",d.style.opacity="0",document.body.appendChild(d),d.select();let f=document.execCommand("copy");return document.body.removeChild(d),f&&(s(!0),c(m),a.current&&clearTimeout(a.current),a.current=setTimeout(()=>s(!1),e)),f}catch{return!1}}finally{n(!1)}},[e]),p=q.useCallback(()=>{s(!1),c(null),n(!1)},[]);return q.useEffect(()=>()=>{a.current&&clearTimeout(a.current)},[]),{copy:u,copying:t,copied:r,value:i,reset:p}}var Sn=require("react-hook-form");function ut(e){return(0,Sn.useForm)({mode:"onTouched",reValidateMode:"onChange",...e})}var Lt=require("@hookform/resolvers/zod");function kn(e={}){let{schema:t,resolver:n,...r}=e,s=n??(t?(0,Lt.zodResolver)(t):void 0);return ut(s?{...r,resolver:s}:r)}function En(e){return(0,Lt.zodResolver)(e)}var Ce=x(require("react"),1),On=require("react/jsx-runtime"),lt=Ce.createContext({permissions:[],hasPermission:()=>!0,hasAny:()=>!0,hasAll:()=>!0});function Pn({permissions:e,children:t}){let n=Ce.useMemo(()=>{let r=new Set(e);return{permissions:e,hasPermission:s=>r.has(s),hasAny:s=>s.some(i=>r.has(i)),hasAll:s=>s.every(i=>r.has(i))}},[e]);return(0,On.jsx)(lt.Provider,{value:n,children:t})}function Mn(){return Ce.useContext(lt)}var Y=x(require("react"),1);function Dn(e){let[t,n]=Y.useState(void 0),[r,s]=Y.useState("idle"),[i,c]=Y.useState(void 0),a=Y.useRef(!0);return Y.useEffect(()=>(a.current=!0,()=>{a.current=!1}),[]),{submit:Y.useCallback(async(p,m)=>{s("pending"),c(void 0);try{let d=await e(p,m);return a.current?(n(d),s("success"),d):void 0}catch(d){if(!a.current)return;throw c(d instanceof Error?d:new Error(String(d))),s("error"),d}},[e]),status:r,data:t,error:i,isLoading:r==="pending"}}var U=x(require("react"),1);function Fn(e){let[t,n]=U.useState("idle"),[r,s]=U.useState(void 0),[i,c]=U.useState(void 0),a=U.useRef(null),u=U.useRef(!0);U.useEffect(()=>(u.current=!0,()=>{u.current=!1,a.current?.abort()}),[]);let p=U.useCallback(async()=>{a.current?.abort();let f=new AbortController;a.current=f,n("pending"),c(void 0);try{let l=await e(f.signal);return f.signal.aborted||!u.current?void 0:(s(l),n("success"),l)}catch(l){if(f.signal.aborted||!u.current)return;throw c(l instanceof Error?l:new Error(String(l))),n("error"),l}},[e]),m=U.useCallback(()=>{a.current?.abort()},[]),d=U.useCallback(()=>{n("idle"),s(void 0),c(void 0)},[]);return{run:p,status:t,data:r,error:i,isLoading:t==="pending",abort:m,reset:d}}var Re=x(require("react"),1),Io={draft:["submitted","void"],submitted:["approved","rejected","void"],approved:["paid","void"],rejected:["submitted","void"],paid:["void"],void:[]};function Un(e="draft"){let[t,n]=Re.useState(e),[r,s]=Re.useState([e]),i=Re.useCallback(u=>(Io[t]??[]).includes(u),[t]),c=Re.useCallback(u=>i(u)?(n(u),s(p=>[...p,u]),!0):!1,[i]),a=Re.useCallback((u=e)=>{n(u),s([u])},[e]);return{status:t,transition:c,can:i,history:r,reset:a}}var ee=x(require("react"),1);function Nn(e,t={}){let{storageKey:n}=t,[r,s]=ee.useState(()=>{if(n&&typeof window<"u")try{let d=window.localStorage.getItem(n);if(d)return{...e,...JSON.parse(d)}}catch{}return e}),i=ee.useRef(new Set),c=ee.useCallback(d=>{if(n&&typeof window<"u")try{window.localStorage.setItem(n,JSON.stringify(d))}catch{}i.current.forEach(f=>f(d))},[n]),a=ee.useCallback(d=>{s(f=>{let l=typeof d=="function"?d(f):d;return c(l),l})},[c]),u=ee.useCallback(d=>{s(f=>{let l={...f,...d};return c(l),l})},[c]),p=ee.useCallback(()=>{s(e),c(e)},[e,c]),m=ee.useCallback(d=>(i.current.add(d),()=>{i.current.delete(d)}),[]);return{scope:r,setScope:a,patch:u,reset:p,subscribe:m}}var N=x(require("react"),1),Le=new Map;function An(e,t){let[n,r]=N.useState(e&&Le.has(e)?Le.get(e):[]),[s,i]=N.useState(e!==null&&!(e&&Le.has(e))),[c,a]=N.useState(void 0),[u,p]=N.useState(0),m=N.useRef(!0);N.useEffect(()=>(m.current=!0,()=>{m.current=!1}),[]),N.useEffect(()=>{if(e){if(Le.has(e)&&u===0){r(Le.get(e)),i(!1);return}i(!0),t(e).then(l=>{m.current&&(Le.set(e,l),r(l),a(void 0),i(!1))}).catch(l=>{m.current&&(a(l instanceof Error?l:new Error(String(l))),i(!1))})}},[e,u,t]);let d=N.useCallback(l=>n.find(g=>g.value===l)?.label??l,[n]),f=N.useCallback(()=>p(l=>l+1),[]);return{options:n,isLoading:s,error:c,getLabel:d,refresh:f}}var H=x(require("react"),1);function St(){return typeof window<"u"}var kt={text(e,t,n="text/plain"){if(!St())return;let r=new Blob([t],{type:n});this.blob(e,r)},json(e,t,n=!0){let r=JSON.stringify(t,null,n?2:0);this.text(e,r,"application/json")},blob(e,t){if(!St())return;let n=URL.createObjectURL(t);this.url(e,n),setTimeout(()=>URL.revokeObjectURL(n),1e3)},url(e,t){if(!St())return;let n=document.createElement("a");n.href=t,n.download=e,n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n)},csv(e,t,n){if(t.length===0){this.text(e,"","text/csv");return}let r=n??Object.keys(t[0]),s=[r.join(","),...t.map(i=>r.map(c=>{let a=i[c],u=a==null?"":String(a);return u.includes(",")||u.includes('"')||u.includes(`
7
7
  `)?`"${u.replace(/"/g,'""')}"`:u}).join(","))].join(`
8
- `);this.text(e,"\uFEFF"+r,"text/csv;charset=utf-8")},async response(e,t){let n=await t.blob();this.blob(e,n)},async fetch(e,t,n){let o=await fetch(e,n);if(!o.ok)throw new Error(`Download failed: ${o.status}`);await this.response(t,o)}};function An(){let[e,t]=z.useState(!1),[n,o]=z.useState(void 0),[r,i]=z.useState(0),c=z.useRef(!1),a=z.useRef(!0);z.useEffect(()=>(a.current=!0,()=>{a.current=!1}),[]);let u=z.useCallback(async(m,d,f)=>{c.current=!1,t(!0),o(void 0),i(0);try{let l=await m();if(c.current||!a.current)return;i(1),typeof l=="string"?Lt.text(d,l,f??"text/plain"):Lt.blob(d,l)}catch(l){if(c.current||!a.current)return;o(l instanceof Error?l:new Error(String(l)))}finally{a.current&&t(!1)}},[]),p=z.useCallback(()=>{c.current=!0},[]);return{exportFile:u,isLoading:e,error:n,progress:r,abort:p}}var X=R(require("react"),1);function Bn(e,t){let[n,o]=X.useState({data:void 0,error:void 0,isLoading:!0}),r=X.useRef(!0),i=X.useRef(0),[c,a]=X.useState(0);X.useEffect(()=>(r.current=!0,()=>{r.current=!1}),[]);let u=X.useCallback(()=>{a(p=>p+1)},[]);return X.useEffect(()=>{let p=new AbortController;i.current+=1;let m=i.current;return o(d=>({...d,isLoading:!0,error:void 0})),fetch(e,{...t,signal:p.signal}).then(async d=>{if(!d.ok)throw new Error(`HTTP ${d.status}`);let f=await d.json();r.current&&m===i.current&&o({data:f,error:void 0,isLoading:!1})}).catch(d=>{if(!p.signal.aborted&&r.current&&m===i.current){let f=d instanceof Error?d:new Error(String(d));o(l=>({...l,error:f,isLoading:!1}))}}),()=>p.abort()},[e,JSON.stringify(t),c]),{...n,refetch:u}}var H=R(require("react"),1);function Vn(e,t={}){let{validate:n,createId:o=()=>Math.random().toString(36).slice(2)}=t,[r,i]=H.useState(e),[c,a]=H.useState(!1),u=H.useMemo(()=>{if(!n)return{};let x={};return r.forEach((v,b)=>{let T=n(v,b);T&&Object.keys(T).length>0&&(x[b]=T)}),x},[r,n]),p=H.useCallback(()=>a(!0),[]),m=H.useCallback(x=>{i(v=>[...v,{...x,id:x.id||o()}]),p()},[o,p]),d=H.useCallback((x,v)=>{i(b=>b.map((T,h)=>h===x?{...T,...v}:T)),p()},[p]),f=H.useCallback(x=>{i(v=>v.filter((b,T)=>T!==x)),p()},[p]),l=H.useCallback(x=>{i(x),p()},[p]),g=H.useCallback(x=>{i(x??e),a(!1)},[e]);return{rows:r,addRow:m,updateRow:d,removeRow:f,setRows:l,reset:g,errors:u,isValid:Object.keys(u).length===0,dirty:c}}var Le=R(require("react"),1);function zn(e=6e4,t=["mousedown","keydown","touchstart","scroll","mousemove"]){let[n,o]=Le.useState(!1),r=Le.useRef(void 0);return Le.useEffect(()=>{if(typeof window>"u")return;let i=()=>{o(!1),r.current&&clearTimeout(r.current),r.current=setTimeout(()=>o(!0),e)};return i(),t.forEach(c=>window.addEventListener(c,i,{passive:!0})),()=>{r.current&&clearTimeout(r.current),t.forEach(c=>window.removeEventListener(c,i))}},[e]),n}var K=R(require("react"),1);function Hn(){let[e,t]=K.useState([]),[n,o]=K.useState([]),[r,i]=K.useState(!1),[c,a]=K.useState(0),u=K.useRef(!0);K.useEffect(()=>(u.current=!0,()=>{u.current=!1}),[]);let p=K.useCallback(async(d,f)=>{i(!0),a(0),o([]),t([]);try{let l=await d.text();if(!u.current)return[];a(.5);let g=await f(l,d);return u.current?(t(g),a(1),g):[]}catch(l){return u.current?(o([{row:0,message:l instanceof Error?l.message:String(l)}]),[]):[]}finally{u.current&&i(!1)}},[]),m=K.useCallback(()=>{t([]),o([]),a(0),i(!1)},[]);return{rows:e,errors:n,isLoading:r,progress:c,importFile:p,reset:m}}var A=R(require("react"),1);function Kn(e,t={}){let{onCommit:n,validate:o}=t,[r,i]=A.useState(e),[c,a]=A.useState(!1),[u,p]=A.useState(null),m=A.useRef(e);m.current=e,A.useEffect(()=>{c||i(e)},[e,c]);let d=A.useCallback(()=>{i(m.current),p(null),a(!0)},[]),f=A.useCallback(x=>{i(x),p(o?o(x):null)},[o]),l=A.useCallback(async()=>{let x=o?o(r):null;if(x){p(x);return}p(null),a(!1),await n?.(r)},[r,o,n]),g=A.useCallback(()=>{i(m.current),p(null),a(!1)},[]);return{value:e,draft:r,isEditing:c,error:u,isValid:u===null,dirty:r!==e,start:d,setDraft:f,commit:l,cancel:g}}var lt=R(require("react"),1);function Wn(){if(typeof navigator>"u")return{online:!0,effectiveType:void 0,downlink:void 0,rtt:void 0,saveData:void 0};let e=navigator.connection;return{online:navigator.onLine,effectiveType:e?.effectiveType,downlink:e?.downlink,rtt:e?.rtt,saveData:e?.saveData}}function Qn(){let[e,t]=lt.useState(Wn);return lt.useEffect(()=>{if(typeof window>"u")return;let n=()=>t(Wn());window.addEventListener("online",n),window.addEventListener("offline",n);let o=navigator.connection;return o?.addEventListener?.("change",n),()=>{window.removeEventListener("online",n),window.removeEventListener("offline",n),o?.removeEventListener?.("change",n)}},[]),e}var dt=R(require("react"),1);function jn(){let[e,t]=dt.useState(!1);return{print:dt.useCallback(async(o,r={})=>{if(typeof window>"u")return;let{title:i,beforePrint:c,afterPrint:a}=r;t(!0),c?.();try{o?await Io(o,r):window.print(),i&&(document.title=i)}finally{a?.(),t(!1)}},[]),isPrinting:e}}function Io(e,t){return new Promise(n=>{let o=document.createElement("iframe");o.style.position="fixed",o.style.right="0",o.style.bottom="0",o.style.width="0",o.style.height="0",o.style.border="0",document.body.appendChild(o);let r=o.contentWindow?.document;if(!r){document.body.removeChild(o),n();return}r.open(),r.write(`<!doctype html><html><head><title>${t.title??""}</title>`),t.cssText&&r.write(`<style>${t.cssText}</style>`),r.write(`</head><body>${e.outerHTML}</body></html>`),r.close();let i=()=>{document.body.removeChild(o),n()};o.contentWindow?.addEventListener("afterprint",i,{once:!0}),setTimeout(()=>{try{o.contentWindow?.focus(),o.contentWindow?.print()}catch{}setTimeout(i,500)},100)})}var ve=R(require("react"),1);function Gn(){let[e,t]=ve.useState([]),n=ve.useCallback(c=>{t(a=>[c,...a])},[]),o=ve.useCallback(()=>{let c;return t(a=>a.length===0?a:(c=a[0],a.slice(1))),c},[]),r=ve.useCallback(()=>e[0],[e]),i=ve.useCallback(()=>t([]),[]);return{redoCount:e.length,push:n,pop:o,peek:r,clear:i}}var ke=R(require("react"),1);function _n(e,t={}){let{onMessage:n,event:o,withCredentials:r=!1}=t,[i,c]=ke.useState({readyState:0,lastEvent:void 0,error:void 0}),a=ke.useRef(n);return a.current=n,ke.useEffect(()=>{if(!e||typeof EventSource>"u")return;let u=new EventSource(e,{withCredentials:r});c(l=>({...l,readyState:u.readyState}));let p=u,m=o??"message",d=l=>{c(g=>({...g,lastEvent:l.data,readyState:u.readyState})),a.current?.(l.data,l)};p.addEventListener(m,d);let f=l=>{c(g=>({...g,error:l,readyState:u.readyState}))};return u.addEventListener("error",f),()=>{u.removeEventListener(m,d),u.removeEventListener("error",f),u.close()}},[e,o,r]),i}var Xn=require("@tanstack/react-query");function qn(e){return(0,Xn.useQuery)({staleTime:3e4,...e})}var $n=require("@tanstack/react-query");function Jn(e){return(0,$n.useMutation)(e)}var B=R(require("react"),1),He=new Map;function Zn(e,t,n={}){let{revalidateOnFocus:o=!0,refreshInterval:r=0,dedupingInterval:i=2e3}=n,[c,a]=B.useState(e&&He.has(e)?He.get(e).data:void 0),[u,p]=B.useState(void 0),[m,d]=B.useState(e!==null&&!(e&&He.has(e))),f=B.useRef(!0),l=B.useRef(0);B.useEffect(()=>(f.current=!0,()=>{f.current=!1}),[]);let g=B.useCallback(()=>{if(!e)return;let v=Date.now();v-l.current<i&&l.current!==0||(l.current=v,d(!0),t(e).then(b=>{f.current&&(He.set(e,{data:b,ts:v}),a(b),p(void 0),d(!1))}).catch(b=>{f.current&&(p(b instanceof Error?b:new Error(String(b))),d(!1))}))},[e,t,i]);B.useEffect(()=>{if(!e)return;g();let v;r>0&&(v=setInterval(g,r));let b=()=>{o&&g()};return o&&typeof window<"u"&&window.addEventListener("focus",b),()=>{v&&clearInterval(v),typeof window<"u"&&window.removeEventListener("focus",b)}},[e,g,r,o]);let x=B.useCallback(v=>{e&&a(b=>{let T=typeof v=="function"?v(b):v;return T!==void 0&&He.set(e,{data:T,ts:Date.now()}),T!==void 0?T:b})},[e]);return{data:c,error:u,isLoading:m,mutate:x}}var S=R(require("react"),1);function Yn(e,t={}){let{pageSize:n=10,initialSort:o={key:null,direction:"asc"},filter:r,getRowId:i=(I,P)=>String(P)}=t,[c,a]=S.useState(1),[u,p]=S.useState(n),[m,d]=S.useState(o),[f,l]=S.useState(""),[g,x]=S.useState(new Set),v=S.useMemo(()=>!f||!r?e:e.filter(I=>r(I,f)),[e,f,r]),b=S.useMemo(()=>{if(!m.key)return v;let I=m.key,P=m.direction==="asc"?1:-1;return[...v].sort((j,q)=>{let pe=j[I],Pe=q[I];return pe===Pe?0:pe==null?1:Pe==null?-1:pe>Pe?P:-P})},[v,m]),T=b.length,h=Math.max(1,Math.ceil(T/u)),L=Math.min(c,h),W=(L-1)*u,te=S.useMemo(()=>b.slice(W,W+u),[b,W,u]),Ie=S.useCallback(I=>{d(P=>P.key!==I?{key:I,direction:"asc"}:P.direction==="asc"?{key:I,direction:"desc"}:{key:null,direction:"asc"})},[]),ft=S.useCallback(I=>{l(I),a(1)},[]),Ke=S.useCallback(I=>a(Math.min(Math.max(1,I),h)),[h]),Q=S.useCallback(I=>{p(I),a(1)},[]),O=S.useMemo(()=>te.map((I,P)=>i(I,W+P)),[te,W,i]),Ee=S.useCallback(I=>{x(P=>{let j=new Set(P);return j.has(I)?j.delete(I):j.add(I),j})},[]),ne=S.useCallback(()=>{x(I=>{if(O.every(q=>I.has(q))){let q=new Set(I);return O.forEach(pe=>q.delete(pe)),q}let j=new Set(I);return O.forEach(q=>j.add(q)),j})},[O]),mt=S.useCallback(()=>x(new Set),[]);return{rows:te,page:L,pageSize:u,total:T,totalPages:h,sort:m,setSort:Ie,filterTerm:f,setFilter:ft,setPage:Ke,setPageSize:Q,selected:g,toggleRow:Ee,toggleAll:ne,clearSelected:mt}}var be=require("react");var eo=null;function pt(e,t){eo&&eo.track({name:e,properties:t})}function to(e){let{event:t,properties:n,trackOnMount:o,trackOnUnmount:r}=e,i=(0,be.useRef)(n);i.current=n;let c=(0,be.useCallback)(a=>{pt(t,{...i.current,...a})},[t]);return(0,be.useEffect)(()=>{o&&pt(t,i.current)},[]),(0,be.useEffect)(()=>()=>{r&&pt(t,{...i.current,unmount:!0})},[]),{trackNow:c}}var ie=R(require("react"),1);function no(e,t=100){let[n,o]=ie.useState([]),[r,i]=ie.useState(e),[c,a]=ie.useState([]),u=ie.useCallback(f=>{let l=typeof f=="function"?f(r):f;o(g=>{let x=[...g,r];return x.length>t?x.slice(x.length-t):x}),i(l),a([])},[r,t]),p=ie.useCallback(()=>{o(f=>{if(f.length===0)return f;let l=f[f.length-1];return i(g=>(a(x=>[g,...x]),l)),f.slice(0,-1)})},[]),m=ie.useCallback(()=>{a(f=>{if(f.length===0)return f;let l=f[0];return i(g=>(o(x=>[...x,g]),l)),f.slice(1)})},[]),d=ie.useCallback(()=>{o([]),a([]),i(e)},[e]);return{value:r,setValue:u,undo:p,redo:m,clear:d,canUndo:n.length>0,canRedo:c.length>0}}var V=R(require("react"),1);function oo(e,t={}){let{onOpen:n,onMessage:o,onClose:r,onError:i,protocols:c,retryInterval:a=3e3,autoConnect:u=!0}=t,[p,m]=V.useState(0),[d,f]=V.useState(void 0),l=V.useRef(null),g=V.useRef({onOpen:n,onMessage:o,onClose:r,onError:i});g.current={onOpen:n,onMessage:o,onClose:r,onError:i};let x=V.useRef(void 0),v=V.useCallback(()=>{if(!e||typeof WebSocket>"u")return;let h=new WebSocket(e,c);l.current=h,m(h.readyState),h.onopen=L=>{m(h.readyState),g.current.onOpen?.(L)},h.onmessage=L=>{let W=typeof L.data=="string"?L.data:"";f(W),g.current.onMessage?.(W,L)},h.onclose=L=>{m(h.readyState),g.current.onClose?.(L),u&&a>0&&(x.current=setTimeout(v,a))},h.onerror=L=>{g.current.onError?.(L)}},[e,c,u,a]);V.useEffect(()=>(u&&v(),()=>{x.current&&clearTimeout(x.current),l.current?.close()}),[u,v]);let b=V.useCallback(h=>{l.current?.readyState===WebSocket.OPEN&&l.current.send(h)},[]),T=V.useCallback(()=>{x.current&&clearTimeout(x.current),l.current?.close()},[]);return{readyState:p,lastMessage:d,send:b,close:T}}0&&(module.exports={ConfirmProvider,LocaleProvider,ModalRenderer,PermissionContext,PermissionProvider,confirmAsync,getStoredLocale,supportedLocales,useApproval,useAsync,useAsyncTask,useBill,useBreakpoint,useClickOutside,useClipboard,useConfirmAsync,useConfirmContext,useCopyToClipboard,useCountdown,useCrud,useDataScope,useDebounce,useDict,useEventListener,useExport,useFetch,useFieldValidation,useForm,useFormSchema,useFormTable,useHotkeys,useIdle,useImport,useInView,useInfiniteScroll,useIntersectionObserver,useIsBreakpoint,useIsDesktop,useIsMobile,useIsTablet,useKey,useKeyCombo,useLineEditor,useLocalStorage,useLocale,useMediaQuery,useMessage,useModal,useMutation,useNetworkQuality,useNetworkStatus,useNotification,useOrientation,usePageTitle,usePagination,usePermission,usePrevious,usePrint,useQuery,useRedo,useScroll,useScrollDirection,useSse,useStep,useSwr,useTable,useThrottle,useToggle,useTrack,useUndo,useVisibilityChange,useWebsocket,useWindowSize,zodResolverAdapter});
8
+ `);this.text(e,"\uFEFF"+s,"text/csv;charset=utf-8")},async response(e,t){let n=await t.blob();this.blob(e,n)},async fetch(e,t,n){let r=await fetch(e,n);if(!r.ok)throw new Error(`Download failed: ${r.status}`);await this.response(t,r)}};function Bn(){let[e,t]=H.useState(!1),[n,r]=H.useState(void 0),[s,i]=H.useState(0),c=H.useRef(!1),a=H.useRef(!0);H.useEffect(()=>(a.current=!0,()=>{a.current=!1}),[]);let u=H.useCallback(async(m,d,f)=>{c.current=!1,t(!0),r(void 0),i(0);try{let l=await m();if(c.current||!a.current)return;i(1),typeof l=="string"?kt.text(d,l,f??"text/plain"):kt.blob(d,l)}catch(l){if(c.current||!a.current)return;r(l instanceof Error?l:new Error(String(l)))}finally{a.current&&t(!1)}},[]),p=H.useCallback(()=>{c.current=!0},[]);return{exportFile:u,isLoading:e,error:n,progress:s,abort:p}}var _=x(require("react"),1);function Vn(e,t){let[n,r]=_.useState({data:void 0,error:void 0,isLoading:!0}),s=_.useRef(!0),i=_.useRef(0),[c,a]=_.useState(0);_.useEffect(()=>(s.current=!0,()=>{s.current=!1}),[]);let u=_.useCallback(()=>{a(p=>p+1)},[]);return _.useEffect(()=>{let p=new AbortController;i.current+=1;let m=i.current;return r(d=>({...d,isLoading:!0,error:void 0})),fetch(e,{...t,signal:p.signal}).then(async d=>{if(!d.ok)throw new Error(`HTTP ${d.status}`);let f=await d.json();s.current&&m===i.current&&r({data:f,error:void 0,isLoading:!1})}).catch(d=>{if(!p.signal.aborted&&s.current&&m===i.current){let f=d instanceof Error?d:new Error(String(d));r(l=>({...l,error:f,isLoading:!1}))}}),()=>p.abort()},[e,JSON.stringify(t),c]),{...n,refetch:u}}var K=x(require("react"),1);function zn(e,t={}){let{validate:n,createId:r=()=>Math.random().toString(36).slice(2)}=t,[s,i]=K.useState(e),[c,a]=K.useState(!1),u=K.useMemo(()=>{if(!n)return{};let R={};return s.forEach((v,b)=>{let T=n(v,b);T&&Object.keys(T).length>0&&(R[b]=T)}),R},[s,n]),p=K.useCallback(()=>a(!0),[]),m=K.useCallback(R=>{i(v=>[...v,{...R,id:R.id||r()}]),p()},[r,p]),d=K.useCallback((R,v)=>{i(b=>b.map((T,y)=>y===R?{...T,...v}:T)),p()},[p]),f=K.useCallback(R=>{i(v=>v.filter((b,T)=>T!==R)),p()},[p]),l=K.useCallback(R=>{i(R),p()},[p]),g=K.useCallback(R=>{i(R??e),a(!1)},[e]);return{rows:s,addRow:m,updateRow:d,removeRow:f,setRows:l,reset:g,errors:u,isValid:Object.keys(u).length===0,dirty:c}}var Se=x(require("react"),1);function Hn(e=6e4,t=["mousedown","keydown","touchstart","scroll","mousemove"]){let[n,r]=Se.useState(!1),s=Se.useRef(void 0);return Se.useEffect(()=>{if(typeof window>"u")return;let i=()=>{r(!1),s.current&&clearTimeout(s.current),s.current=setTimeout(()=>r(!0),e)};return i(),t.forEach(c=>window.addEventListener(c,i,{passive:!0})),()=>{s.current&&clearTimeout(s.current),t.forEach(c=>window.removeEventListener(c,i))}},[e]),n}var W=x(require("react"),1);function Kn(){let[e,t]=W.useState([]),[n,r]=W.useState([]),[s,i]=W.useState(!1),[c,a]=W.useState(0),u=W.useRef(!0);W.useEffect(()=>(u.current=!0,()=>{u.current=!1}),[]);let p=W.useCallback(async(d,f)=>{i(!0),a(0),r([]),t([]);try{let l=await d.text();if(!u.current)return[];a(.5);let g=await f(l,d);return u.current?(t(g),a(1),g):[]}catch(l){return u.current?(r([{row:0,message:l instanceof Error?l.message:String(l)}]),[]):[]}finally{u.current&&i(!1)}},[]),m=W.useCallback(()=>{t([]),r([]),a(0),i(!1)},[]);return{rows:e,errors:n,isLoading:s,progress:c,importFile:p,reset:m}}var A=x(require("react"),1);function Wn(e,t={}){let{onCommit:n,validate:r}=t,[s,i]=A.useState(e),[c,a]=A.useState(!1),[u,p]=A.useState(null),m=A.useRef(e);m.current=e,A.useEffect(()=>{c||i(e)},[e,c]);let d=A.useCallback(()=>{i(m.current),p(null),a(!0)},[]),f=A.useCallback(R=>{i(R),p(r?r(R):null)},[r]),l=A.useCallback(async()=>{let R=r?r(s):null;if(R){p(R);return}p(null),a(!1),await n?.(s)},[s,r,n]),g=A.useCallback(()=>{i(m.current),p(null),a(!1)},[]);return{value:e,draft:s,isEditing:c,error:u,isValid:u===null,dirty:s!==e,start:d,setDraft:f,commit:l,cancel:g}}var dt=x(require("react"),1);function Qn(){if(typeof navigator>"u")return{online:!0,effectiveType:void 0,downlink:void 0,rtt:void 0,saveData:void 0};let e=navigator.connection;return{online:navigator.onLine,effectiveType:e?.effectiveType,downlink:e?.downlink,rtt:e?.rtt,saveData:e?.saveData}}function jn(){let[e,t]=dt.useState(Qn);return dt.useEffect(()=>{if(typeof window>"u")return;let n=()=>t(Qn());window.addEventListener("online",n),window.addEventListener("offline",n);let r=navigator.connection;return r?.addEventListener?.("change",n),()=>{window.removeEventListener("online",n),window.removeEventListener("offline",n),r?.removeEventListener?.("change",n)}},[]),e}var pt=x(require("react"),1);function Gn(){let[e,t]=pt.useState(!1);return{print:pt.useCallback(async(r,s={})=>{if(typeof window>"u")return;let{title:i,beforePrint:c,afterPrint:a}=s;t(!0),c?.();try{r?await ho(r,s):window.print(),i&&(document.title=i)}finally{a?.(),t(!1)}},[]),isPrinting:e}}function ho(e,t){return new Promise(n=>{let r=document.createElement("iframe");r.style.position="fixed",r.style.right="0",r.style.bottom="0",r.style.width="0",r.style.height="0",r.style.border="0",document.body.appendChild(r);let s=r.contentWindow?.document;if(!s){document.body.removeChild(r),n();return}s.open(),s.write(`<!doctype html><html><head><title>${t.title??""}</title>`),t.cssText&&s.write(`<style>${t.cssText}</style>`),s.write(`</head><body>${e.outerHTML}</body></html>`),s.close();let i=()=>{document.body.removeChild(r),n()};r.contentWindow?.addEventListener("afterprint",i,{once:!0}),setTimeout(()=>{try{r.contentWindow?.focus(),r.contentWindow?.print()}catch{}setTimeout(i,500)},100)})}var ve=x(require("react"),1);function qn(){let[e,t]=ve.useState([]),n=ve.useCallback(c=>{t(a=>[c,...a])},[]),r=ve.useCallback(()=>{let c;return t(a=>a.length===0?a:(c=a[0],a.slice(1))),c},[]),s=ve.useCallback(()=>e[0],[e]),i=ve.useCallback(()=>t([]),[]);return{redoCount:e.length,push:n,pop:r,peek:s,clear:i}}var ke=x(require("react"),1);function _n(e,t={}){let{onMessage:n,event:r,withCredentials:s=!1}=t,[i,c]=ke.useState({readyState:0,lastEvent:void 0,error:void 0}),a=ke.useRef(n);return a.current=n,ke.useEffect(()=>{if(!e||typeof EventSource>"u")return;let u=new EventSource(e,{withCredentials:s});c(l=>({...l,readyState:u.readyState}));let p=u,m=r??"message",d=l=>{c(g=>({...g,lastEvent:l.data,readyState:u.readyState})),a.current?.(l.data,l)};p.addEventListener(m,d);let f=l=>{c(g=>({...g,error:l,readyState:u.readyState}))};return u.addEventListener("error",f),()=>{u.removeEventListener(m,d),u.removeEventListener("error",f),u.close()}},[e,r,s]),i}var Xn=require("@tanstack/react-query");function $n(e){return(0,Xn.useQuery)({staleTime:3e4,...e})}var Jn=require("@tanstack/react-query");function Zn(e){return(0,Jn.useMutation)(e)}var B=x(require("react"),1),He=new Map;function Yn(e,t,n={}){let{revalidateOnFocus:r=!0,refreshInterval:s=0,dedupingInterval:i=2e3}=n,[c,a]=B.useState(e&&He.has(e)?He.get(e).data:void 0),[u,p]=B.useState(void 0),[m,d]=B.useState(e!==null&&!(e&&He.has(e))),f=B.useRef(!0),l=B.useRef(0);B.useEffect(()=>(f.current=!0,()=>{f.current=!1}),[]);let g=B.useCallback(()=>{if(!e)return;let v=Date.now();v-l.current<i&&l.current!==0||(l.current=v,d(!0),t(e).then(b=>{f.current&&(He.set(e,{data:b,ts:v}),a(b),p(void 0),d(!1))}).catch(b=>{f.current&&(p(b instanceof Error?b:new Error(String(b))),d(!1))}))},[e,t,i]);B.useEffect(()=>{if(!e)return;g();let v;s>0&&(v=setInterval(g,s));let b=()=>{r&&g()};return r&&typeof window<"u"&&window.addEventListener("focus",b),()=>{v&&clearInterval(v),typeof window<"u"&&window.removeEventListener("focus",b)}},[e,g,s,r]);let R=B.useCallback(v=>{e&&a(b=>{let T=typeof v=="function"?v(b):v;return T!==void 0&&He.set(e,{data:T,ts:Date.now()}),T!==void 0?T:b})},[e]);return{data:c,error:u,isLoading:m,mutate:R}}var L=x(require("react"),1);function eo(e,t={}){let{pageSize:n=10,initialSort:r={key:null,direction:"asc"},filter:s,getRowId:i=(I,P)=>String(P)}=t,[c,a]=L.useState(1),[u,p]=L.useState(n),[m,d]=L.useState(r),[f,l]=L.useState(""),[g,R]=L.useState(new Set),v=L.useMemo(()=>!f||!s?e:e.filter(I=>s(I,f)),[e,f,s]),b=L.useMemo(()=>{if(!m.key)return v;let I=m.key,P=m.direction==="asc"?1:-1;return[...v].sort((G,X)=>{let pe=G[I],Pe=X[I];return pe===Pe?0:pe==null?1:Pe==null?-1:pe>Pe?P:-P})},[v,m]),T=b.length,y=Math.max(1,Math.ceil(T/u)),S=Math.min(c,y),Q=(S-1)*u,te=L.useMemo(()=>b.slice(Q,Q+u),[b,Q,u]),Ie=L.useCallback(I=>{d(P=>P.key!==I?{key:I,direction:"asc"}:P.direction==="asc"?{key:I,direction:"desc"}:{key:null,direction:"asc"})},[]),mt=L.useCallback(I=>{l(I),a(1)},[]),Ke=L.useCallback(I=>a(Math.min(Math.max(1,I),y)),[y]),j=L.useCallback(I=>{p(I),a(1)},[]),O=L.useMemo(()=>te.map((I,P)=>i(I,Q+P)),[te,Q,i]),Ee=L.useCallback(I=>{R(P=>{let G=new Set(P);return G.has(I)?G.delete(I):G.add(I),G})},[]),ne=L.useCallback(()=>{R(I=>{if(O.every(X=>I.has(X))){let X=new Set(I);return O.forEach(pe=>X.delete(pe)),X}let G=new Set(I);return O.forEach(X=>G.add(X)),G})},[O]),gt=L.useCallback(()=>R(new Set),[]);return{rows:te,page:S,pageSize:u,total:T,totalPages:y,sort:m,setSort:Ie,filterTerm:f,setFilter:mt,setPage:Ke,setPageSize:j,selected:g,toggleRow:Ee,toggleAll:ne,clearSelected:gt}}var be=require("react");var to=null;function ft(e,t){to&&to.track({name:e,properties:t})}function no(e){let{event:t,properties:n,trackOnMount:r,trackOnUnmount:s}=e,i=(0,be.useRef)(n);i.current=n;let c=(0,be.useCallback)(a=>{ft(t,{...i.current,...a})},[t]);return(0,be.useEffect)(()=>{r&&ft(t,i.current)},[]),(0,be.useEffect)(()=>()=>{s&&ft(t,{...i.current,unmount:!0})},[]),{trackNow:c}}var ie=x(require("react"),1);function oo(e,t=100){let[n,r]=ie.useState([]),[s,i]=ie.useState(e),[c,a]=ie.useState([]),u=ie.useCallback(f=>{let l=typeof f=="function"?f(s):f;r(g=>{let R=[...g,s];return R.length>t?R.slice(R.length-t):R}),i(l),a([])},[s,t]),p=ie.useCallback(()=>{r(f=>{if(f.length===0)return f;let l=f[f.length-1];return i(g=>(a(R=>[g,...R]),l)),f.slice(0,-1)})},[]),m=ie.useCallback(()=>{a(f=>{if(f.length===0)return f;let l=f[0];return i(g=>(r(R=>[...R,g]),l)),f.slice(1)})},[]),d=ie.useCallback(()=>{r([]),a([]),i(e)},[e]);return{value:s,setValue:u,undo:p,redo:m,clear:d,canUndo:n.length>0,canRedo:c.length>0}}var V=x(require("react"),1);function ro(e,t={}){let{onOpen:n,onMessage:r,onClose:s,onError:i,protocols:c,retryInterval:a=3e3,autoConnect:u=!0}=t,[p,m]=V.useState(0),[d,f]=V.useState(void 0),l=V.useRef(null),g=V.useRef({onOpen:n,onMessage:r,onClose:s,onError:i});g.current={onOpen:n,onMessage:r,onClose:s,onError:i};let R=V.useRef(void 0),v=V.useCallback(()=>{if(!e||typeof WebSocket>"u")return;let y=new WebSocket(e,c);l.current=y,m(y.readyState),y.onopen=S=>{m(y.readyState),g.current.onOpen?.(S)},y.onmessage=S=>{let Q=typeof S.data=="string"?S.data:"";f(Q),g.current.onMessage?.(Q,S)},y.onclose=S=>{m(y.readyState),g.current.onClose?.(S),u&&a>0&&(R.current=setTimeout(v,a))},y.onerror=S=>{g.current.onError?.(S)}},[e,c,u,a]);V.useEffect(()=>(u&&v(),()=>{R.current&&clearTimeout(R.current),l.current?.close()}),[u,v]);let b=V.useCallback(y=>{l.current?.readyState===WebSocket.OPEN&&l.current.send(y)},[]),T=V.useCallback(()=>{R.current&&clearTimeout(R.current),l.current?.close()},[]);return{readyState:p,lastMessage:d,send:b,close:T}}0&&(module.exports={ConfirmProvider,LocaleProvider,ModalRenderer,PermissionContext,PermissionProvider,confirmAsync,getStoredLocale,supportedLocales,useApproval,useAsync,useAsyncTask,useBill,useBreakpoint,useClickOutside,useClipboard,useConfirmAsync,useConfirmContext,useCopyToClipboard,useCountdown,useCrud,useDataScope,useDebounce,useDict,useEventListener,useExport,useFetch,useFieldValidation,useForm,useFormSchema,useFormTable,useHotkeys,useIdle,useImport,useInView,useInfiniteScroll,useIntersectionObserver,useIsBreakpoint,useIsDesktop,useIsMobile,useIsTablet,useKey,useKeyCombo,useLineEditor,useLocalStorage,useLocale,useMediaQuery,useMessage,useModal,useMutation,useNetworkQuality,useNetworkStatus,useNotification,useOrientation,usePageTitle,usePagination,usePermission,usePrevious,usePrint,useQuery,useRedo,useScroll,useScrollDirection,useSse,useStep,useSwr,useTable,useThrottle,useToggle,useTrack,useUndo,useVisibilityChange,useWebsocket,useWindowSize,zodResolverAdapter});
package/dist/hooks.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import { M as MessageOptions } from './message-KJli9tvf.cjs';
1
+ import { a as MessageOptions } from './message-BoUedza5.cjs';
2
2
  import * as React$1 from 'react';
3
3
  import * as react_hook_form from 'react-hook-form';
4
4
  import { FieldValues, UseFormProps, Resolver } from 'react-hook-form';
package/dist/hooks.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { M as MessageOptions } from './message-KJli9tvf.js';
1
+ import { a as MessageOptions } from './message-BoUedza5.js';
2
2
  import * as React$1 from 'react';
3
3
  import * as react_hook_form from 'react-hook-form';
4
4
  import { FieldValues, UseFormProps, Resolver } from 'react-hook-form';