@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.
- package/CHANGELOG.md +72 -0
- package/README.md +11 -15
- package/dist/auth-layout-AqhdIh5N.d.cts +172 -0
- package/dist/auth-layout-AqhdIh5N.d.ts +172 -0
- package/dist/business.cjs +11 -9
- package/dist/business.d.cts +1015 -939
- package/dist/business.d.ts +1015 -939
- package/dist/business.js +11 -9
- package/dist/card-DY3pk0zA.d.cts +150 -0
- package/dist/card-DY3pk0zA.d.ts +150 -0
- package/dist/hooks.cjs +2 -2
- package/dist/hooks.d.cts +1 -1
- package/dist/hooks.d.ts +1 -1
- package/dist/hooks.js +2 -2
- package/dist/index.cjs +8 -1
- package/dist/index.d.cts +2089 -9
- package/dist/index.d.ts +2089 -9
- package/dist/index.js +8 -1
- package/dist/input-B39p_6ia.d.cts +40 -0
- package/dist/input-B39p_6ia.d.ts +40 -0
- package/dist/layout.cjs +12 -0
- package/dist/layout.d.cts +642 -0
- package/dist/layout.d.ts +642 -0
- package/dist/layout.js +12 -0
- package/dist/lib.d.cts +1 -1
- package/dist/lib.d.ts +1 -1
- package/dist/{message-KJli9tvf.d.cts → message-BoUedza5.d.cts} +1 -1
- package/dist/{message-KJli9tvf.d.ts → message-BoUedza5.d.ts} +1 -1
- package/dist/message-provider-Dt4mVwWP.d.cts +23 -0
- package/dist/message-provider-Dt4mVwWP.d.ts +23 -0
- package/dist/mobile-bottom-nav-Bi6_V5Bu.d.cts +18 -0
- package/dist/mobile-bottom-nav-Bi6_V5Bu.d.ts +18 -0
- package/dist/mobile-qrcode-scanner-BHDncd40.d.cts +327 -0
- package/dist/mobile-qrcode-scanner-a_Cz8tF5.d.ts +327 -0
- package/dist/mobile.cjs +6 -0
- package/dist/mobile.d.cts +101 -0
- package/dist/mobile.d.ts +101 -0
- package/dist/mobile.js +6 -0
- package/dist/next.cjs +1 -1
- package/dist/next.d.cts +5 -102
- package/dist/next.d.ts +5 -102
- package/dist/next.js +1 -1
- package/dist/top-bar-BYXz4LtM.d.cts +74 -0
- package/dist/top-bar-BYXz4LtM.d.ts +74 -0
- package/dist/ui/icons.cjs +1 -1
- package/dist/ui/icons.d.cts +1 -1
- package/dist/ui/icons.d.ts +1 -1
- package/dist/ui/icons.js +1 -1
- package/dist/ui-icons.cjs +1 -1
- package/dist/ui-icons.d.cts +24 -1
- package/dist/ui-icons.d.ts +24 -1
- package/dist/ui-icons.js +1 -1
- package/dist/ui.cjs +8 -1
- package/dist/ui.d.cts +7 -5
- package/dist/ui.d.ts +7 -5
- package/dist/ui.js +8 -1
- package/package.json +15 -5
- package/styles.css +11 -11
- package/dist/message-provider-BI-P3CNq.d.cts +0 -11
- package/dist/message-provider-BI-P3CNq.d.ts +0 -11
- package/dist/time-picker-H1AaecnE.d.cts +0 -452
- package/dist/time-picker-H1AaecnE.d.ts +0 -452
package/dist/hooks.js
CHANGED
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
* Copyright (c) 2026 qxyfoods
|
|
4
4
|
* MIT License
|
|
5
5
|
*/
|
|
6
|
-
"use client";import*as Ke from"react";var ke={xs:0,sm:640,md:768,lg:1024,xl:1280,"2xl":1536};function It(){let[e,t]=Ke.useState(void 0);return Ke.useEffect(()=>{let n=()=>{let o=window.innerWidth;o>=ke["2xl"]?t("2xl"):o>=ke.xl?t("xl"):o>=ke.lg?t("lg"):o>=ke.md?t("md"):o>=ke.sm?t("sm"):t("xs")};return n(),window.addEventListener("resize",n,{passive:!0}),()=>window.removeEventListener("resize",n)},[]),e}function Bt(e){let t=It();if(!t)return!1;let n=["xs","sm","md","lg","xl","2xl"];return n.indexOf(t)>=n.indexOf(e)}import*as ue from"react";function Vt(e,t,n,o){let s=ue.useRef(n),i=ue.useRef(o);ue.useEffect(()=>{s.current=n},[n]),ue.useEffect(()=>{i.current=o},[o]),ue.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])}import*as Ee from"react";function yt(e,t){let n=t.toLowerCase().split("+"),o=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 o===u&&e.ctrlKey===s&&e.metaKey===i&&e.shiftKey===c&&e.altKey===a}function ht(e,t,n={}){let{event:o="keydown",target:s,preventDefault:i=!1,enabled:c=!0}=n,a=Ee.useRef(t);Ee.useEffect(()=>{a.current=t},[t]),Ee.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=yt(d,e):Array.isArray(e)&&(f=e.some(l=>yt(d,l))),f&&(i&&d.preventDefault(),a.current(d))};return u.addEventListener(o,p),()=>u.removeEventListener(o,p)},[e,o,s,i,c])}function zt(e,t,n){ht(e,t,n)}import{useMemo as Ht}from"react";import{toast as Y}from"sonner";function xe(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 wt={duration:3,maxCount:5,placement:"top-right",richColors:!0,expand:!1},re=Object.assign((e,t)=>Y(e,xe(t)),{success:(e,t)=>Y.success(e,xe(t)),error:(e,t)=>Y.error(e,xe(t)),warning:(e,t)=>Y.warning(e,xe(t)),info:(e,t)=>Y.info(e,xe(t)),loading:(e,t)=>{let n=xe({...t,duration:t?.duration??0});return Y.loading(e,n)},promise:(e,t)=>Y.promise(e,{loading:t.loading??"Loading...",success:t.success,error:t.error}),destroy:e=>{e!==void 0?Y.dismiss(e):Y.dismiss()},config:e=>{wt={...wt,...e}}});function st(){return Ht(()=>({success:re.success,error:re.error,warning:re.warning,info:re.info,loading:re.loading,promise:re.promise,destroy:re.destroy}),[])}import*as Tt from"react";import{toast as le}from"sonner";function Kt(){let e=Tt.useCallback(t=>{let{type:n="info",title:o,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 le.success(o,u);case"error":return le.error(o,u);case"warning":return le.warning(o,u);default:return le.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?le.dismiss(t):le.dismiss()},closeAll:()=>le.dismiss()}}import*as M from"react";import"react";import{useTranslation as St}from"react-i18next";import{Dialog as se}from"@base-ui/react/dialog";import{clsx as Wt}from"clsx";import{twMerge as Qt}from"tailwind-merge";function ee(...e){return Qt(Wt(e))}import"react";import{Button as jt}from"@base-ui/react/button";import{cva as Gt}from"class-variance-authority";import{Fragment as Xt,jsx as it,jsxs as qt}from"react/jsx-runtime";var _t=Gt("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 Q({className:e,variant:t="default",size:n="default",icon:o,iconRight:s,children:i,...c}){let a=o!=null||s!=null;return it(jt,{"data-slot":"button",className:ee(_t({variant:t,size:n,className:e})),...c,children:a?qt(Xt,{children:[o!=null&&it("span",{"data-icon":"inline-start",className:"shrink-0",children:o}),i,s!=null&&it("span",{"data-icon":"inline-end",className:"shrink-0",children:s})]}):i})}import*as r from"lucide-react";var at=r.AlertCircleIcon;var Ct=r.XIcon;import{jsx as A,jsxs as We}from"react/jsx-runtime";function Pe({...e}){return A(se.Root,{"data-slot":"dialog",...e})}function $t({...e}){return A(se.Portal,{"data-slot":"dialog-portal",...e})}function Jt({className:e,...t}){return A(se.Backdrop,{"data-slot":"dialog-overlay",className:ee("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 Me({className:e,children:t,showCloseButton:n=!0,...o}){let{t:s}=St("ui");return We($t,{children:[A(Jt,{}),We(se.Popup,{"data-slot":"dialog-content",className:ee("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&&We(se.Close,{"data-slot":"dialog-close",render:A(Q,{variant:"ghost",className:"absolute top-2 right-2",size:"icon-sm"}),children:[A(Ct,{}),A("span",{className:"sr-only",children:s("dialog.close")})]})]})]})}function Oe({className:e,...t}){return A("div",{"data-slot":"dialog-header",className:ee("flex flex-col gap-2",e),...t})}function De({className:e,showCloseButton:t=!1,children:n,...o}){let{t:s}=St("ui");return We("div",{"data-slot":"dialog-footer",className:ee("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&&A(se.Close,{render:A(Q,{variant:"outline"}),children:s("dialog.closeButton")})]})}function Fe({className:e,...t}){return A(se.Title,{"data-slot":"dialog-title",className:ee("font-heading text-base leading-none font-medium",e),...t})}function Ue({className:e,...t}){return A(se.Description,{"data-slot":"dialog-description",className:ee("text-muted-foreground *:[a]:hover:text-foreground text-sm *:[a]:underline *:[a]:underline-offset-3",e),...t})}import{Fragment as en,jsx as ve,jsxs as ct}from"react/jsx-runtime";function Zt(){let[e,t]=M.useState({open:!1,options:{}}),[n,o]=M.useState(!1),s=M.useCallback(g=>{t({open:!0,options:g})},[]),i=M.useCallback(()=>{t(g=>({...g,open:!1})),o(!1)},[]),c=M.useCallback(async()=>{let{onOk:g}=e.options;if(g)try{o(!0),await g()}finally{i()}else i()},[e.options,i]),a=M.useCallback(()=>{e.options.onCancel?.(),i()},[e.options,i]),u=M.useCallback(g=>s(g),[s]),p=M.useCallback(g=>s(g),[s]),m=M.useCallback(g=>s(g),[s]),d=M.useCallback(g=>s(g),[s]),f=M.useCallback(g=>s({...g,okVariant:"destructive"}),[s]),l=ve(Pe,{open:e.open,onOpenChange:g=>{!g&&e.options.maskClosable!==!1&&a()},children:ct(Me,{style:{maxWidth:typeof e.options.width=="number"?`${e.options.width}px`:e.options.width},children:[ct(Oe,{children:[e.options.title&&ve(Fe,{children:e.options.title}),e.options.content&&ve(Ue,{children:e.options.content})]}),ct(De,{children:[e.options.cancelText!==void 0&&ve(Q,{variant:"outline",onClick:a,disabled:n,children:e.options.cancelText??"Cancel"}),ve(Q,{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 Yt({modal:e}){let t=e.confirm.modal;return ve(en,{children:t})}import*as X from"react";function tn(e,t=!0){let[n,o]=X.useState({status:"idle",data:void 0,error:void 0}),s=X.useRef(!0),i=X.useRef(null);X.useEffect(()=>(s.current=!0,()=>{s.current=!1}),[]);let c=X.useCallback(async(...a)=>{i.current=a,o(u=>({status:"pending",data:u.data,error:void 0}));try{let u=await e(...a);return s.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(!s.current)return;throw o({status:"error",data:void 0,error:p}),p}},[e]);return X.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"}}import*as Ne from"react";function nn(e,t,n=!0){let o=Ne.useRef(t);Ne.useEffect(()=>{o.current=t},[t]),Ne.useEffect(()=>{if(!n)return;let s=i=>{let c=e.current;!c||c.contains(i.target)||o.current(i)};return document.addEventListener("mousedown",s),document.addEventListener("touchstart",s),()=>{document.removeEventListener("mousedown",s),document.removeEventListener("touchstart",s)}},[e,n])}import*as te from"react";function on(){let[e,t]=te.useState(!1),n=te.useRef(null),o=te.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=te.useCallback(()=>{n.current&&clearTimeout(n.current),t(!1)},[]);return te.useEffect(()=>()=>{n.current&&clearTimeout(n.current)},[]),[e,o,s]}import*as be from"react";function rn(e){let t=be.useMemo(()=>new Date(e).getTime(),[e]),[n,o]=be.useState(()=>Date.now());be.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 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}}import*as Qe from"react";function sn(e,t=300){let[n,o]=Qe.useState(e);return Qe.useEffect(()=>{let s=setTimeout(()=>o(e),t);return()=>clearTimeout(s)},[e,t]),n}import*as Ae from"react";function an(e){return e.toLowerCase().split("+").map(t=>t.trim()).sort().join("+")}function cn(e){if(!(e instanceof HTMLElement))return!1;let t=e.tagName;return t==="INPUT"||t==="TEXTAREA"||t==="SELECT"||e.isContentEditable}function un(e,t){let n=t.split("+").map(c=>c.trim()),o=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:o===s.key.toLowerCase()}function ln(e,t={}){let{enabled:n=!0,preventDefault:o=!0,allowInInputs:s=!1}=t,i=Ae.useRef(e);Ae.useEffect(()=>{i.current=e},[e]),Ae.useEffect(()=>{if(!n)return;let c=a=>{if(!(!s&&cn(a.target))){for(let[u,p]of Object.entries(i.current))if(un(a,an(u))){o&&a.preventDefault(),p(a);return}}};return document.addEventListener("keydown",c),()=>document.removeEventListener("keydown",c)},[n,o,s])}import*as E from"react";import*as Ie from"react";function Lt(e,t={}){let{enabled:n=!0,triggerOnce:o=!1,root:s,rootMargin:i,threshold:c}=t,[a,u]=Ie.useState(null),p=Ie.useRef(!1);return Ie.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 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,o,s,i,c]),a}function ut(e,t={}){return!!Lt(e,t)?.isIntersecting}function dn(e,t={}){let{enabled:n=!0}=t,[o,s]=E.useState([]),[i,c]=E.useState(!0),[a,u]=E.useState(!1),[p,m]=E.useState(null),d=E.useRef(null),f=ut(d,{rootMargin:t.rootMargin??"100px",threshold:t.threshold??0}),l=E.useRef(e);E.useEffect(()=>{l.current=e},[e]);let g=E.useCallback(async()=>{if(!(a||!i||!n)){u(!0),m(null);try{let x=await l.current();s(v=>[...v,...x.items]),c(x.hasMore)}catch(x){m(x instanceof Error?x:new Error(String(x)))}finally{u(!1)}}},[a,i,n]);E.useEffect(()=>{if(!f)return;let x=window.setTimeout(()=>{g()},0);return()=>window.clearTimeout(x)},[f,g]);let R=E.useCallback(()=>{s([]),c(!0),m(null)},[]);return{items:o,hasMore:i,loading:a,error:p,sentinelRef:d,loadMore:g,reset:R}}import*as ie from"react";function pn(e,t){let n=ie.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,s]=ie.useState(n),i=ie.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=ie.useCallback(()=>{try{window.localStorage.removeItem(e)}catch{}s(t)},[e,t]);return ie.useEffect(()=>{let a=u=>{u.key===e&&s(n())};return window.addEventListener("storage",a),()=>window.removeEventListener("storage",a)},[e,n]),[o,i,c]}import*as je from"react";function lt(e){let[t,n]=je.useState(()=>typeof window>"u"?!1:window.matchMedia(e).matches);return je.useEffect(()=>{if(typeof window>"u")return;let o=window.matchMedia(e),s=()=>n(o.matches);o.addEventListener("change",s);let i=window.setTimeout(()=>n(o.matches),0);return()=>{window.clearTimeout(i),o.removeEventListener("change",s)}},[e]),t}var fn=(e=1024)=>lt(`(min-width: ${e}px)`),mn=(e=768,t=1023)=>lt(`(min-width: ${e}px) and (max-width: ${t}px)`);import*as Ge from"react";var dt=768;function gn(){let[e,t]=Ge.useState(()=>typeof window>"u"?!1:window.innerWidth<dt);return Ge.useEffect(()=>{let n=window.matchMedia(`(max-width: ${dt}px)`),o=()=>{t(window.innerWidth<dt)};return n.addEventListener("change",o),()=>n.removeEventListener("change",o)},[]),e}import*as ye from"react";function pt(e,t={}){let{page:n=1,pageSize:o=10}=t,[s,i]=ye.useState(n),[c,a]=ye.useState(o),u=Math.max(1,Math.ceil(e/c)),p=Math.min(s,u),m=(p-1)*c,d=ye.useCallback(l=>i(Math.min(Math.max(1,l),u)),[u]),f=ye.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)}}import*as _e from"react";function Rn(e){let t=_e.useRef(void 0);return _e.useEffect(()=>{t.current=e},[e]),t.current}import*as de from"react";function xn(e,t=0){let[n,o]=de.useState(t),s=de.useCallback(()=>o(u=>Math.min(u+1,e-1)),[e]),i=de.useCallback(()=>o(u=>Math.max(u-1,0)),[]),c=de.useCallback(u=>o(Math.min(Math.max(0,u),e-1)),[e]),a=de.useCallback(()=>o(t),[t]);return{step:n,next:s,prev:i,goTo:c,reset:a,isFirst:n===0,isLast:n===e-1}}import*as pe from"react";function vn(e,t=300){let[n,o]=pe.useState(e),s=pe.useRef(0),i=pe.useRef(null);return pe.useEffect(()=>{let c=Date.now(),a=c-s.current;return a>=t?(s.current=c,o(e)):(i.current&&clearTimeout(i.current),i.current=setTimeout(()=>{s.current=Date.now(),o(e)},t-a)),()=>{i.current&&clearTimeout(i.current)}},[e,t]),n}import*as Xe from"react";function bn(e=!1){let[t,n]=Xe.useState(e),o=Xe.useCallback(()=>n(s=>!s),[]);return[t,o,n]}import{createContext as In,useCallback as yn,useContext as hn,useEffect as wn,useState as Tn}from"react";import{jsx as Ln}from"react/jsx-runtime";var ft=["zh-CN","en-US"],kt="chaos-ui-locale";function Et(){if(typeof window>"u")return"zh-CN";let e=localStorage.getItem(kt);return e&&ft.includes(e)?e:"zh-CN"}var Pt=In(null);function Cn({initialLocale:e="zh-CN",children:t}){let[n,o]=Tn(()=>typeof window>"u"?e:Et()),s=yn(i=>{o(i),typeof window<"u"&&localStorage.setItem(kt,i)},[]);return wn(()=>{document.documentElement.lang=n},[n]),Ln(Pt.Provider,{value:{locale:n,setLocale:s,supportedLocales:[...ft]},children:t})}function Sn(){let e=hn(Pt);if(!e)throw new Error("useLocale must be used within a LocaleProvider");return e}import*as w from"react";function mt(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 kn(e){let{fetcher:t,onCreate:n,onUpdate:o,onDelete:s,rowKey:i="id",emptyForm:c,defaultPageSize:a=20,onValidate:u,defaultFilters:p={},successMessage:m,deleteConfirmTitle:d}=e,[f,l]=w.useState(p),[g,R]=w.useState([]),[x,v]=w.useState(0),[h,I]=w.useState(!1),[C,H]=w.useState(null),[J,Re]=w.useState(c),[ot,Ve]=w.useState(!1),K=pt(x,{pageSize:a}),P=st(),Se=C!==null,Z=w.useCallback(async()=>{Ve(!0);try{let y=await t(K.page,K.pageSize,f);R(y.list),v(y.total)}finally{Ve(!1)}},[t,K.page,K.pageSize,f]);w.useEffect(()=>{Z()},[Z]);let rt=w.useCallback(y=>{l(ze=>({...ze,...y})),K.setPage(1)},[K.setPage]),b=w.useCallback(y=>{l(y),K.setPage(1)},[K.setPage]),k=w.useCallback(()=>{H(null),Re(c),I(!0)},[c]),W=w.useCallback(y=>{H(y),Re({...y}),I(!0)},[]),_=w.useCallback((y,ze)=>{Re(He=>({...He,[y]:ze}))},[]),ce=w.useCallback(async()=>{if(u){let y=u(J);if(y){P.error(y);return}}try{if(Se&&C&&o){await o(C[i],J);let y=mt(m,"update","Updated successfully");y!==!1&&P.success(y)}else if(n){await n(J);let y=mt(m,"create","Created successfully");y!==!1&&P.success(y)}I(!1),await Z()}catch{P.error("Operation failed")}},[C,J,Se,n,o,u,i,Z,P,m]),Le=w.useCallback(async y=>{if(!(!s||!globalThis.confirm?.(d??"Are you sure you want to delete this item?")))try{await s(y[i]);let He=mt(m,"delete","Deleted successfully");He!==!1&&P.success(He),await Z()}catch{P.error("Delete failed")}},[s,i,Z,P,m,d]);return{data:g,total:x,loading:ot,filters:f,setFilters:rt,resetFilters:b,pagination:K,modalOpen:h,setModalOpen:I,editing:C,form:J,setForm:Re,updateFormField:_,handleAdd:k,handleEdit:W,handleSubmit:ce,handleDelete:Le,refresh:Z,isEdit:Se}}import*as Mt from"react";function En(e,{template:t="{title}",defaultTitle:n=""}={}){Mt.useEffect(()=>{let o=e??n;document.title=o?t.replace("{title}",o):n||t.replace("{title}","")},[e,t,n])}import*as L from"react";import{jsx as S,jsxs as ne}from"react/jsx-runtime";var Ot=L.createContext(null);function Pn(e){if(qe)return qe(e);throw new Error("confirmAsync() called outside <ConfirmProvider>. Either wrap your app with <ConfirmProvider> or use useConfirmAsync() hook.")}var qe=null;function Mn({children:e,defaultOptions:t}){let[n,o]=L.useState({open:!1,options:{},resolve:null}),s=L.useCallback(a=>new Promise(u=>{let p={...t,...a};o({open:!0,options:p,resolve:u})}),[t]);L.useEffect(()=>(qe=s,()=>{qe=null}),[s]);let i=L.useCallback(()=>{n.resolve?.(!0),o(a=>({...a,open:!1}))},[n.resolve]),c=L.useCallback(()=>{n.resolve?.(!1),o(a=>({...a,open:!1}))},[n.resolve]);return ne(Ot.Provider,{value:s,children:[e,S(Pe,{open:n.open,onOpenChange:a=>{a||c()},children:ne(Me,{showCloseButton:!1,className:"sm:max-w-sm",children:[S(Oe,{children:ne("div",{className:"flex items-start gap-3",children:[S("div",{className:"flex size-9 shrink-0 items-center justify-center rounded-full bg-muted",children:n.options.icon??S(at,{className:"size-4"})}),ne("div",{className:"flex flex-col gap-1.5",children:[S(Fe,{children:n.options.title??"Confirm"}),S(Ue,{children:n.options.content??"This action cannot be undone. Continue?"})]})]})}),ne(De,{children:[S(Q,{variant:"outline",onClick:c,children:n.options.cancelText??"Cancel"}),S(Q,{variant:n.options.okVariant==="destructive"?"destructive":"default",onClick:i,children:n.options.okText??"Confirm"})]})]})})]})}function On(){let[e,t]=L.useState({open:!1,options:{},resolve:null}),n=L.useCallback(c=>new Promise(a=>{t({open:!0,options:c,resolve:a})}),[]),o=L.useCallback(()=>{e.resolve?.(!0),t(c=>({...c,open:!1}))},[e.resolve]),s=L.useCallback(()=>{e.resolve?.(!1),t(c=>({...c,open:!1}))},[e.resolve]);return[n,()=>S(Pe,{open:e.open,onOpenChange:c=>{c||s()},children:ne(Me,{showCloseButton:!1,className:"sm:max-w-sm",children:[S(Oe,{children:ne("div",{className:"flex items-start gap-3",children:[S("div",{className:"flex size-9 shrink-0 items-center justify-center rounded-full bg-muted",children:e.options.icon??S(at,{className:"size-4"})}),ne("div",{className:"flex flex-col gap-1.5",children:[S(Fe,{children:e.options.title??"Confirm"}),S(Ue,{children:e.options.content??"This action cannot be undone. Continue?"})]})]})}),ne(De,{children:[S(Q,{variant:"outline",onClick:s,children:e.options.cancelText??"Cancel"}),S(Q,{variant:e.options.okVariant==="destructive"?"destructive":"default",onClick:o,children:e.options.okText??"Confirm"})]})]})})]}function Dn(){let e=L.useContext(Ot);if(!e)throw new Error("useConfirmContext must be used within <ConfirmProvider>");return e}import*as ae from"react";function Fn(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 Un(e={}){let{rules:t=[],externalError:n,validateOnBlur:o=!0,validateOnChange:s=!1}=e,[i,c]=ae.useState(void 0),[a,u]=ae.useState(!1),p=ae.useCallback(g=>{let R=Fn(g,t);return c(R),R},[t]),m=ae.useCallback(g=>{u(!0),o&&p(g.target.value)},[p,o]),d=ae.useCallback(g=>{s&&a&&p(g.target.value)},[p,s,a]),f=ae.useCallback(()=>{c(void 0),u(!1)},[]);return{error:n??i,onBlur:m,onChange:d,validate:p,reset:f,touched:a}}import*as $e from"react";function gt(){if(!(typeof navigator>"u"))return navigator.connection}function Nn(){let[e,t]=$e.useState(()=>{let n=gt();return{online:navigator.onLine,...n?{downlink:n.downlink,effectiveType:n.effectiveType,rtt:n.rtt,saveData:n.saveData}:{}}});return $e.useEffect(()=>{let n=()=>t(c=>({...c,online:!0})),o=()=>t(c=>({...c,online:!1})),s=()=>{let c=gt();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=gt();return i?.addEventListener?.("change",s),()=>{window.removeEventListener("online",n),window.removeEventListener("offline",o),i?.removeEventListener?.("change",s)}},[]),e}import*as Je from"react";function An(e){let[t,n]=Je.useState(typeof document<"u"?!document.hidden:!0);return Je.useEffect(()=>{let o=()=>{let s=!document.hidden;n(s),e?.(s)};return document.addEventListener("visibilitychange",o),()=>document.removeEventListener("visibilitychange",o)},[e]),t}import*as Ze from"react";function Bn(e=100){let[t,n]=Ze.useState({width:typeof window<"u"?window.innerWidth:0,height:typeof window<"u"?window.innerHeight:0});return Ze.useEffect(()=>{let o,s=()=>{clearTimeout(o),o=setTimeout(()=>{n({width:window.innerWidth,height:window.innerHeight})},e)};return window.addEventListener("resize",s),()=>{window.removeEventListener("resize",s),clearTimeout(o)}},[e]),t}import*as fe from"react";function Dt(e=50,t){let[n,o]=fe.useState({x:0,y:0,isScrolled:!1,direction:null}),s=fe.useRef(0),i=fe.useRef(0);return fe.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;o({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 Vn(e=50,t){return Dt(e,t).direction}import*as Ye from"react";function zn(){let[e,t]=Ye.useState(()=>typeof window>"u"?"portrait":window.innerWidth>window.innerHeight?"landscape":"portrait");return Ye.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}import*as j from"react";function Hn(e=2e3){let[t,n]=j.useState(!1),[o,s]=j.useState(!1),[i,c]=j.useState(null),a=j.useRef(void 0),u=j.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=j.useCallback(()=>{s(!1),c(null),n(!1)},[]);return j.useEffect(()=>()=>{a.current&&clearTimeout(a.current)},[]),{copy:u,copying:t,copied:o,value:i,reset:p}}import{useForm as Kn}from"react-hook-form";function Rt(e){return Kn({mode:"onTouched",reValidateMode:"onChange",...e})}import{zodResolver as Ft}from"@hookform/resolvers/zod";function Wn(e={}){let{schema:t,resolver:n,...o}=e,s=n??(t?Ft(t):void 0);return Rt(s?{...o,resolver:s}:o)}function Qn(e){return Ft(e)}import*as he from"react";import{jsx as _n}from"react/jsx-runtime";var xt=he.createContext({permissions:[],hasPermission:()=>!0,hasAny:()=>!0,hasAll:()=>!0});function jn({permissions:e,children:t}){let n=he.useMemo(()=>{let o=new Set(e);return{permissions:e,hasPermission:s=>o.has(s),hasAny:s=>s.some(i=>o.has(i)),hasAll:s=>s.every(i=>o.has(i))}},[e]);return _n(xt.Provider,{value:n,children:t})}function Gn(){return he.useContext(xt)}import*as q from"react";function Xn(e){let[t,n]=q.useState(void 0),[o,s]=q.useState("idle"),[i,c]=q.useState(void 0),a=q.useRef(!0);return q.useEffect(()=>(a.current=!0,()=>{a.current=!1}),[]),{submit:q.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:o,data:t,error:i,isLoading:o==="pending"}}import*as O from"react";function qn(e){let[t,n]=O.useState("idle"),[o,s]=O.useState(void 0),[i,c]=O.useState(void 0),a=O.useRef(null),u=O.useRef(!0);O.useEffect(()=>(u.current=!0,()=>{u.current=!1,a.current?.abort()}),[]);let p=O.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=O.useCallback(()=>{a.current?.abort()},[]),d=O.useCallback(()=>{n("idle"),s(void 0),c(void 0)},[]);return{run:p,status:t,data:o,error:i,isLoading:t==="pending",abort:m,reset:d}}import*as me from"react";var $n={draft:["submitted","void"],submitted:["approved","rejected","void"],approved:["paid","void"],rejected:["submitted","void"],paid:["void"],void:[]};function Jn(e="draft"){let[t,n]=me.useState(e),[o,s]=me.useState([e]),i=me.useCallback(u=>($n[t]??[]).includes(u),[t]),c=me.useCallback(u=>i(u)?(n(u),s(p=>[...p,u]),!0):!1,[i]),a=me.useCallback((u=e)=>{n(u),s([u])},[e]);return{status:t,transition:c,can:i,history:o,reset:a}}import*as $ from"react";function Zn(e,t={}){let{storageKey:n}=t,[o,s]=$.useState(()=>{if(n&&typeof window<"u")try{let d=window.localStorage.getItem(n);if(d)return{...e,...JSON.parse(d)}}catch{}return e}),i=$.useRef(new Set),c=$.useCallback(d=>{if(n&&typeof window<"u")try{window.localStorage.setItem(n,JSON.stringify(d))}catch{}i.current.forEach(f=>f(d))},[n]),a=$.useCallback(d=>{s(f=>{let l=typeof d=="function"?d(f):d;return c(l),l})},[c]),u=$.useCallback(d=>{s(f=>{let l={...f,...d};return c(l),l})},[c]),p=$.useCallback(()=>{s(e),c(e)},[e,c]),m=$.useCallback(d=>(i.current.add(d),()=>{i.current.delete(d)}),[]);return{scope:o,setScope:a,patch:u,reset:p,subscribe:m}}import*as D from"react";var we=new Map;function Yn(e,t){let[n,o]=D.useState(e&&we.has(e)?we.get(e):[]),[s,i]=D.useState(e!==null&&!(e&&we.has(e))),[c,a]=D.useState(void 0),[u,p]=D.useState(0),m=D.useRef(!0);D.useEffect(()=>(m.current=!0,()=>{m.current=!1}),[]),D.useEffect(()=>{if(e){if(we.has(e)&&u===0){o(we.get(e)),i(!1);return}i(!0),t(e).then(l=>{m.current&&(we.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=D.useCallback(l=>n.find(g=>g.value===l)?.label??l,[n]),f=D.useCallback(()=>p(l=>l+1),[]);return{options:n,isLoading:s,error:c,getLabel:d,refresh:f}}import*as B from"react";function vt(){return typeof window<"u"}var bt={text(e,t,n="text/plain"){if(!vt())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(!vt())return;let n=URL.createObjectURL(t);this.url(e,n),setTimeout(()=>URL.revokeObjectURL(n),1e3)},url(e,t){if(!vt())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]),s=[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 client";import*as Ke from"react";var ke={xs:0,sm:640,md:768,lg:1024,xl:1280,"2xl":1536};function ht(){let[e,t]=Ke.useState(void 0);return Ke.useEffect(()=>{let n=()=>{let r=window.innerWidth;r>=ke["2xl"]?t("2xl"):r>=ke.xl?t("xl"):r>=ke.lg?t("lg"):r>=ke.md?t("md"):r>=ke.sm?t("sm"):t("xs")};return n(),window.addEventListener("resize",n,{passive:!0}),()=>window.removeEventListener("resize",n)},[]),e}function Vt(e){let t=ht();if(!t)return!1;let n=["xs","sm","md","lg","xl","2xl"];return n.indexOf(t)>=n.indexOf(e)}import*as ue from"react";function zt(e,t,n,r){let s=ue.useRef(n),i=ue.useRef(r);ue.useEffect(()=>{s.current=n},[n]),ue.useEffect(()=>{i.current=r},[r]),ue.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])}import*as Ee from"react";function yt(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 wt(e,t,n={}){let{event:r="keydown",target:s,preventDefault:i=!1,enabled:c=!0}=n,a=Ee.useRef(t);Ee.useEffect(()=>{a.current=t},[t]),Ee.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=yt(d,e):Array.isArray(e)&&(f=e.some(l=>yt(d,l))),f&&(i&&d.preventDefault(),a.current(d))};return u.addEventListener(r,p),()=>u.removeEventListener(r,p)},[e,r,s,i,c])}function Ht(e,t,n){wt(e,t,n)}import{useMemo as Kt}from"react";import{toast as Y}from"sonner";function Re(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 Tt={duration:3,maxCount:5,placement:"top-right",richColors:!0,expand:!1},re=Object.assign((e,t)=>Y(e,Re(t)),{success:(e,t)=>Y.success(e,Re(t)),error:(e,t)=>Y.error(e,Re(t)),warning:(e,t)=>Y.warning(e,Re(t)),info:(e,t)=>Y.info(e,Re(t)),loading:(e,t)=>{let n=Re({...t,duration:t?.duration??0});return Y.loading(e,n)},promise:(e,t)=>Y.promise(e,{loading:t.loading??"Loading...",success:t.success,error:t.error}),destroy:e=>{e!==void 0?Y.dismiss(e):Y.dismiss()},config:e=>{Tt={...Tt,...e}}});function it(){return Kt(()=>({success:re.success,error:re.error,warning:re.warning,info:re.info,loading:re.loading,promise:re.promise,destroy:re.destroy}),[])}import*as Ct from"react";import{toast as le}from"sonner";function Wt(){let e=Ct.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 le.success(r,u);case"error":return le.error(r,u);case"warning":return le.warning(r,u);default:return le.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?le.dismiss(t):le.dismiss()},closeAll:()=>le.dismiss()}}import*as M from"react";import"react";import{useTranslation as St}from"react-i18next";import{Dialog as se}from"@base-ui/react/dialog";import{clsx as Qt}from"clsx";import{twMerge as jt}from"tailwind-merge";function ee(...e){return jt(Qt(e))}import*as We from"react";import{Button as Gt}from"@base-ui/react/button";import{cva as qt}from"class-variance-authority";import{Fragment as Xt,jsx as at,jsxs as $t}from"react/jsx-runtime";var _t=qt("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 A({className:e,variant:t="default",size:n="default",icon:r,iconRight:s,children:i,...c}){let a=r!=null||s!=null,u=We.useMemo(()=>ee(_t({variant:t,size:n,className:e})),[t,n,e]);return at(Gt,{"data-slot":"button",className:u,...c,children:a?$t(Xt,{children:[r!=null&&at("span",{"data-icon":"inline-start",className:"shrink-0",children:r}),i,s!=null&&at("span",{"data-icon":"inline-end",className:"shrink-0",children:s})]}):i})}var zo=We.memo(A);import*as o from"lucide-react";var ct=o.AlertCircleIcon;var Lt=o.XIcon;import{jsx as B,jsxs as Qe}from"react/jsx-runtime";function Pe({...e}){return B(se.Root,{"data-slot":"dialog",...e})}function Jt({...e}){return B(se.Portal,{"data-slot":"dialog-portal",...e})}function Zt({className:e,...t}){return B(se.Backdrop,{"data-slot":"dialog-overlay",className:ee("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 Me({className:e,children:t,showCloseButton:n=!0,...r}){let{t:s}=St("ui");return Qe(Jt,{children:[B(Zt,{}),Qe(se.Popup,{"data-slot":"dialog-content",className:ee("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&&Qe(se.Close,{"data-slot":"dialog-close",render:B(A,{variant:"ghost",className:"absolute top-2 right-2",size:"icon-sm"}),children:[B(Lt,{}),B("span",{className:"sr-only",children:s("dialog.close")})]})]})]})}function Oe({className:e,...t}){return B("div",{"data-slot":"dialog-header",className:ee("flex flex-col gap-2",e),...t})}function De({className:e,showCloseButton:t=!1,children:n,...r}){let{t:s}=St("ui");return Qe("div",{"data-slot":"dialog-footer",className:ee("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&&B(se.Close,{render:B(A,{variant:"outline"}),children:s("dialog.closeButton")})]})}function Fe({className:e,...t}){return B(se.Title,{"data-slot":"dialog-title",className:ee("font-heading text-base leading-none font-medium",e),...t})}function Ue({className:e,...t}){return B(se.Description,{"data-slot":"dialog-description",className:ee("text-muted-foreground *:[a]:hover:text-foreground text-sm *:[a]:underline *:[a]:underline-offset-3",e),...t})}import{Fragment as tn,jsx as ve,jsxs as ut}from"react/jsx-runtime";function Yt(){let[e,t]=M.useState({open:!1,options:{}}),[n,r]=M.useState(!1),s=M.useCallback(g=>{t({open:!0,options:g})},[]),i=M.useCallback(()=>{t(g=>({...g,open:!1})),r(!1)},[]),c=M.useCallback(async()=>{let{onOk:g}=e.options;if(g)try{r(!0),await g()}finally{i()}else i()},[e.options,i]),a=M.useCallback(()=>{e.options.onCancel?.(),i()},[e.options,i]),u=M.useCallback(g=>s(g),[s]),p=M.useCallback(g=>s(g),[s]),m=M.useCallback(g=>s(g),[s]),d=M.useCallback(g=>s(g),[s]),f=M.useCallback(g=>s({...g,okVariant:"destructive"}),[s]),l=ve(Pe,{open:e.open,onOpenChange:g=>{!g&&e.options.maskClosable!==!1&&a()},children:ut(Me,{style:{maxWidth:typeof e.options.width=="number"?`${e.options.width}px`:e.options.width},children:[ut(Oe,{children:[e.options.title&&ve(Fe,{children:e.options.title}),e.options.content&&ve(Ue,{children:e.options.content})]}),ut(De,{children:[e.options.cancelText!==void 0&&ve(A,{variant:"outline",onClick:a,disabled:n,children:e.options.cancelText??"Cancel"}),ve(A,{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 en({modal:e}){let t=e.confirm.modal;return ve(tn,{children:t})}import*as _ from"react";function nn(e,t=!0){let[n,r]=_.useState({status:"idle",data:void 0,error:void 0}),s=_.useRef(!0),i=_.useRef(null);_.useEffect(()=>(s.current=!0,()=>{s.current=!1}),[]);let c=_.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 _.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"}}import*as Ne from"react";function on(e,t,n=!0){let r=Ne.useRef(t);Ne.useEffect(()=>{r.current=t},[t]),Ne.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])}import*as te from"react";function rn(){let[e,t]=te.useState(!1),n=te.useRef(null),r=te.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=te.useCallback(()=>{n.current&&clearTimeout(n.current),t(!1)},[]);return te.useEffect(()=>()=>{n.current&&clearTimeout(n.current)},[]),[e,r,s]}import*as be from"react";function sn(e){let t=be.useMemo(()=>new Date(e).getTime(),[e]),[n,r]=be.useState(()=>Date.now());be.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}}import*as je from"react";function an(e,t=300){let[n,r]=je.useState(e);return je.useEffect(()=>{let s=setTimeout(()=>r(e),t);return()=>clearTimeout(s)},[e,t]),n}import*as Ae from"react";function cn(e){return e.toLowerCase().split("+").map(t=>t.trim()).sort().join("+")}function un(e){if(!(e instanceof HTMLElement))return!1;let t=e.tagName;return t==="INPUT"||t==="TEXTAREA"||t==="SELECT"||e.isContentEditable}function ln(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 dn(e,t={}){let{enabled:n=!0,preventDefault:r=!0,allowInInputs:s=!1}=t,i=Ae.useRef(e);Ae.useEffect(()=>{i.current=e},[e]),Ae.useEffect(()=>{if(!n)return;let c=a=>{if(!(!s&&un(a.target))){for(let[u,p]of Object.entries(i.current))if(ln(a,cn(u))){r&&a.preventDefault(),p(a);return}}};return document.addEventListener("keydown",c),()=>document.removeEventListener("keydown",c)},[n,r,s])}import*as E from"react";import*as Ie from"react";function kt(e,t={}){let{enabled:n=!0,triggerOnce:r=!1,root:s,rootMargin:i,threshold:c}=t,[a,u]=Ie.useState(null),p=Ie.useRef(!1);return Ie.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 lt(e,t={}){return!!kt(e,t)?.isIntersecting}function pn(e,t={}){let{enabled:n=!0}=t,[r,s]=E.useState([]),[i,c]=E.useState(!0),[a,u]=E.useState(!1),[p,m]=E.useState(null),d=E.useRef(null),f=lt(d,{rootMargin:t.rootMargin??"100px",threshold:t.threshold??0}),l=E.useRef(e);E.useEffect(()=>{l.current=e},[e]);let g=E.useCallback(async()=>{if(!(a||!i||!n)){u(!0),m(null);try{let R=await l.current();s(v=>[...v,...R.items]),c(R.hasMore)}catch(R){m(R instanceof Error?R:new Error(String(R)))}finally{u(!1)}}},[a,i,n]);E.useEffect(()=>{if(!f)return;let R=window.setTimeout(()=>{g()},0);return()=>window.clearTimeout(R)},[f,g]);let x=E.useCallback(()=>{s([]),c(!0),m(null)},[]);return{items:r,hasMore:i,loading:a,error:p,sentinelRef:d,loadMore:g,reset:x}}import*as ie from"react";function fn(e,t){let n=ie.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]=ie.useState(n),i=ie.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=ie.useCallback(()=>{try{window.localStorage.removeItem(e)}catch{}s(t)},[e,t]);return ie.useEffect(()=>{let a=u=>{u.key===e&&s(n())};return window.addEventListener("storage",a),()=>window.removeEventListener("storage",a)},[e,n]),[r,i,c]}import*as Ge from"react";function dt(e){let[t,n]=Ge.useState(()=>typeof window>"u"?!1:window.matchMedia(e).matches);return Ge.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 mn=(e=1024)=>dt(`(min-width: ${e}px)`),gn=(e=768,t=1023)=>dt(`(min-width: ${e}px) and (max-width: ${t}px)`);import*as qe from"react";var pt=768;function xn(){let[e,t]=qe.useState(()=>typeof window>"u"?!1:window.innerWidth<pt);return qe.useEffect(()=>{let n=window.matchMedia(`(max-width: ${pt}px)`),r=()=>{t(window.innerWidth<pt)};return n.addEventListener("change",r),()=>n.removeEventListener("change",r)},[]),e}import*as he from"react";function ft(e,t={}){let{page:n=1,pageSize:r=10}=t,[s,i]=he.useState(n),[c,a]=he.useState(r),u=Math.max(1,Math.ceil(e/c)),p=Math.min(s,u),m=(p-1)*c,d=he.useCallback(l=>i(Math.min(Math.max(1,l),u)),[u]),f=he.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)}}import*as _e from"react";function Rn(e){let t=_e.useRef(void 0);return _e.useEffect(()=>{t.current=e},[e]),t.current}import*as de from"react";function vn(e,t=0){let[n,r]=de.useState(t),s=de.useCallback(()=>r(u=>Math.min(u+1,e-1)),[e]),i=de.useCallback(()=>r(u=>Math.max(u-1,0)),[]),c=de.useCallback(u=>r(Math.min(Math.max(0,u),e-1)),[e]),a=de.useCallback(()=>r(t),[t]);return{step:n,next:s,prev:i,goTo:c,reset:a,isFirst:n===0,isLast:n===e-1}}import*as pe from"react";function bn(e,t=300){let[n,r]=pe.useState(e),s=pe.useRef(0),i=pe.useRef(null);return pe.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}import*as Xe from"react";function In(e=!1){let[t,n]=Xe.useState(e),r=Xe.useCallback(()=>n(s=>!s),[]);return[t,r,n]}import{createContext as hn,useCallback as yn,useContext as wn,useEffect as Tn,useState as Cn}from"react";import{jsx as kn}from"react/jsx-runtime";var mt=["zh-CN","en-US"],Et="chaos-ui-locale";function Pt(){if(typeof window>"u")return"zh-CN";let e=localStorage.getItem(Et);return e&&mt.includes(e)?e:"zh-CN"}var Mt=hn(null);function Ln({initialLocale:e="zh-CN",children:t}){let[n,r]=Cn(()=>typeof window>"u"?e:Pt()),s=yn(i=>{r(i),typeof window<"u"&&localStorage.setItem(Et,i)},[]);return Tn(()=>{document.documentElement.lang=n},[n]),kn(Mt.Provider,{value:{locale:n,setLocale:s,supportedLocales:[...mt]},children:t})}function Sn(){let e=wn(Mt);if(!e)throw new Error("useLocale must be used within a LocaleProvider");return e}import*as w from"react";function gt(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 En(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]=w.useState(p),[g,x]=w.useState([]),[R,v]=w.useState(0),[y,I]=w.useState(!1),[C,K]=w.useState(null),[J,xe]=w.useState(c),[rt,Ve]=w.useState(!1),W=ft(R,{pageSize:a}),P=it(),Le=C!==null,Z=w.useCallback(async()=>{Ve(!0);try{let h=await t(W.page,W.pageSize,f);x(h.list),v(h.total)}finally{Ve(!1)}},[t,W.page,W.pageSize,f]);w.useEffect(()=>{Z()},[Z]);let st=w.useCallback(h=>{l(ze=>({...ze,...h})),W.setPage(1)},[W.setPage]),b=w.useCallback(h=>{l(h),W.setPage(1)},[W.setPage]),k=w.useCallback(()=>{K(null),xe(c),I(!0)},[c]),Q=w.useCallback(h=>{K(h),xe({...h}),I(!0)},[]),q=w.useCallback((h,ze)=>{xe(He=>({...He,[h]:ze}))},[]),ce=w.useCallback(async()=>{if(u){let h=u(J);if(h){P.error(h);return}}try{if(Le&&C&&r){await r(C[i],J);let h=gt(m,"update","Updated successfully");h!==!1&&P.success(h)}else if(n){await n(J);let h=gt(m,"create","Created successfully");h!==!1&&P.success(h)}I(!1),await Z()}catch{P.error("Operation failed")}},[C,J,Le,n,r,u,i,Z,P,m]),Se=w.useCallback(async h=>{if(!(!s||!globalThis.confirm?.(d??"Are you sure you want to delete this item?")))try{await s(h[i]);let He=gt(m,"delete","Deleted successfully");He!==!1&&P.success(He),await Z()}catch{P.error("Delete failed")}},[s,i,Z,P,m,d]);return{data:g,total:R,loading:rt,filters:f,setFilters:st,resetFilters:b,pagination:W,modalOpen:y,setModalOpen:I,editing:C,form:J,setForm:xe,updateFormField:q,handleAdd:k,handleEdit:Q,handleSubmit:ce,handleDelete:Se,refresh:Z,isEdit:Le}}import*as Ot from"react";function Pn(e,{template:t="{title}",defaultTitle:n=""}={}){Ot.useEffect(()=>{let r=e??n;document.title=r?t.replace("{title}",r):n||t.replace("{title}","")},[e,t,n])}import*as S from"react";import{jsx as L,jsxs as ne}from"react/jsx-runtime";var Dt=S.createContext(null);function Mn(e){if($e)return $e(e);throw new Error("confirmAsync() called outside <ConfirmProvider>. Either wrap your app with <ConfirmProvider> or use useConfirmAsync() hook.")}var $e=null;function On({children:e,defaultOptions:t}){let[n,r]=S.useState({open:!1,options:{},resolve:null}),s=S.useCallback(a=>new Promise(u=>{let p={...t,...a};r({open:!0,options:p,resolve:u})}),[t]);S.useEffect(()=>($e=s,()=>{$e=null}),[s]);let i=S.useCallback(()=>{n.resolve?.(!0),r(a=>({...a,open:!1}))},[n.resolve]),c=S.useCallback(()=>{n.resolve?.(!1),r(a=>({...a,open:!1}))},[n.resolve]);return ne(Dt.Provider,{value:s,children:[e,L(Pe,{open:n.open,onOpenChange:a=>{a||c()},children:ne(Me,{showCloseButton:!1,className:"sm:max-w-sm",children:[L(Oe,{children:ne("div",{className:"flex items-start gap-3",children:[L("div",{className:"flex size-9 shrink-0 items-center justify-center rounded-full bg-muted",children:n.options.icon??L(ct,{className:"size-4"})}),ne("div",{className:"flex flex-col gap-1.5",children:[L(Fe,{children:n.options.title??"Confirm"}),L(Ue,{children:n.options.content??"This action cannot be undone. Continue?"})]})]})}),ne(De,{children:[L(A,{variant:"outline",onClick:c,children:n.options.cancelText??"Cancel"}),L(A,{variant:n.options.okVariant==="destructive"?"destructive":"default",onClick:i,children:n.options.okText??"Confirm"})]})]})})]})}function Dn(){let[e,t]=S.useState({open:!1,options:{},resolve:null}),n=S.useCallback(c=>new Promise(a=>{t({open:!0,options:c,resolve:a})}),[]),r=S.useCallback(()=>{e.resolve?.(!0),t(c=>({...c,open:!1}))},[e.resolve]),s=S.useCallback(()=>{e.resolve?.(!1),t(c=>({...c,open:!1}))},[e.resolve]);return[n,()=>L(Pe,{open:e.open,onOpenChange:c=>{c||s()},children:ne(Me,{showCloseButton:!1,className:"sm:max-w-sm",children:[L(Oe,{children:ne("div",{className:"flex items-start gap-3",children:[L("div",{className:"flex size-9 shrink-0 items-center justify-center rounded-full bg-muted",children:e.options.icon??L(ct,{className:"size-4"})}),ne("div",{className:"flex flex-col gap-1.5",children:[L(Fe,{children:e.options.title??"Confirm"}),L(Ue,{children:e.options.content??"This action cannot be undone. Continue?"})]})]})}),ne(De,{children:[L(A,{variant:"outline",onClick:s,children:e.options.cancelText??"Cancel"}),L(A,{variant:e.options.okVariant==="destructive"?"destructive":"default",onClick:r,children:e.options.okText??"Confirm"})]})]})})]}function Fn(){let e=S.useContext(Dt);if(!e)throw new Error("useConfirmContext must be used within <ConfirmProvider>");return e}import*as ae from"react";function Un(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 Nn(e={}){let{rules:t=[],externalError:n,validateOnBlur:r=!0,validateOnChange:s=!1}=e,[i,c]=ae.useState(void 0),[a,u]=ae.useState(!1),p=ae.useCallback(g=>{let x=Un(g,t);return c(x),x},[t]),m=ae.useCallback(g=>{u(!0),r&&p(g.target.value)},[p,r]),d=ae.useCallback(g=>{s&&a&&p(g.target.value)},[p,s,a]),f=ae.useCallback(()=>{c(void 0),u(!1)},[]);return{error:n??i,onBlur:m,onChange:d,validate:p,reset:f,touched:a}}import*as Je from"react";function xt(){if(!(typeof navigator>"u"))return navigator.connection}function An(){let[e,t]=Je.useState(()=>{let n=xt();return{online:navigator.onLine,...n?{downlink:n.downlink,effectiveType:n.effectiveType,rtt:n.rtt,saveData:n.saveData}:{}}});return Je.useEffect(()=>{let n=()=>t(c=>({...c,online:!0})),r=()=>t(c=>({...c,online:!1})),s=()=>{let c=xt();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=xt();return i?.addEventListener?.("change",s),()=>{window.removeEventListener("online",n),window.removeEventListener("offline",r),i?.removeEventListener?.("change",s)}},[]),e}import*as Ze from"react";function Bn(e){let[t,n]=Ze.useState(typeof document<"u"?!document.hidden:!0);return Ze.useEffect(()=>{let r=()=>{let s=!document.hidden;n(s),e?.(s)};return document.addEventListener("visibilitychange",r),()=>document.removeEventListener("visibilitychange",r)},[e]),t}import*as Ye from"react";function Vn(e=100){let[t,n]=Ye.useState({width:typeof window<"u"?window.innerWidth:0,height:typeof window<"u"?window.innerHeight:0});return Ye.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}import*as fe from"react";function Ft(e=50,t){let[n,r]=fe.useState({x:0,y:0,isScrolled:!1,direction:null}),s=fe.useRef(0),i=fe.useRef(0);return fe.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 zn(e=50,t){return Ft(e,t).direction}import*as et from"react";function Hn(){let[e,t]=et.useState(()=>typeof window>"u"?"portrait":window.innerWidth>window.innerHeight?"landscape":"portrait");return et.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}import*as j from"react";function Kn(e=2e3){let[t,n]=j.useState(!1),[r,s]=j.useState(!1),[i,c]=j.useState(null),a=j.useRef(void 0),u=j.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=j.useCallback(()=>{s(!1),c(null),n(!1)},[]);return j.useEffect(()=>()=>{a.current&&clearTimeout(a.current)},[]),{copy:u,copying:t,copied:r,value:i,reset:p}}import{useForm as Wn}from"react-hook-form";function Rt(e){return Wn({mode:"onTouched",reValidateMode:"onChange",...e})}import{zodResolver as Ut}from"@hookform/resolvers/zod";function Qn(e={}){let{schema:t,resolver:n,...r}=e,s=n??(t?Ut(t):void 0);return Rt(s?{...r,resolver:s}:r)}function jn(e){return Ut(e)}import*as ye from"react";import{jsx as _n}from"react/jsx-runtime";var vt=ye.createContext({permissions:[],hasPermission:()=>!0,hasAny:()=>!0,hasAll:()=>!0});function Gn({permissions:e,children:t}){let n=ye.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 _n(vt.Provider,{value:n,children:t})}function qn(){return ye.useContext(vt)}import*as X from"react";function Xn(e){let[t,n]=X.useState(void 0),[r,s]=X.useState("idle"),[i,c]=X.useState(void 0),a=X.useRef(!0);return X.useEffect(()=>(a.current=!0,()=>{a.current=!1}),[]),{submit:X.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"}}import*as O from"react";function $n(e){let[t,n]=O.useState("idle"),[r,s]=O.useState(void 0),[i,c]=O.useState(void 0),a=O.useRef(null),u=O.useRef(!0);O.useEffect(()=>(u.current=!0,()=>{u.current=!1,a.current?.abort()}),[]);let p=O.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=O.useCallback(()=>{a.current?.abort()},[]),d=O.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}}import*as me from"react";var Jn={draft:["submitted","void"],submitted:["approved","rejected","void"],approved:["paid","void"],rejected:["submitted","void"],paid:["void"],void:[]};function Zn(e="draft"){let[t,n]=me.useState(e),[r,s]=me.useState([e]),i=me.useCallback(u=>(Jn[t]??[]).includes(u),[t]),c=me.useCallback(u=>i(u)?(n(u),s(p=>[...p,u]),!0):!1,[i]),a=me.useCallback((u=e)=>{n(u),s([u])},[e]);return{status:t,transition:c,can:i,history:r,reset:a}}import*as $ from"react";function Yn(e,t={}){let{storageKey:n}=t,[r,s]=$.useState(()=>{if(n&&typeof window<"u")try{let d=window.localStorage.getItem(n);if(d)return{...e,...JSON.parse(d)}}catch{}return e}),i=$.useRef(new Set),c=$.useCallback(d=>{if(n&&typeof window<"u")try{window.localStorage.setItem(n,JSON.stringify(d))}catch{}i.current.forEach(f=>f(d))},[n]),a=$.useCallback(d=>{s(f=>{let l=typeof d=="function"?d(f):d;return c(l),l})},[c]),u=$.useCallback(d=>{s(f=>{let l={...f,...d};return c(l),l})},[c]),p=$.useCallback(()=>{s(e),c(e)},[e,c]),m=$.useCallback(d=>(i.current.add(d),()=>{i.current.delete(d)}),[]);return{scope:r,setScope:a,patch:u,reset:p,subscribe:m}}import*as D from"react";var we=new Map;function eo(e,t){let[n,r]=D.useState(e&&we.has(e)?we.get(e):[]),[s,i]=D.useState(e!==null&&!(e&&we.has(e))),[c,a]=D.useState(void 0),[u,p]=D.useState(0),m=D.useRef(!0);D.useEffect(()=>(m.current=!0,()=>{m.current=!1}),[]),D.useEffect(()=>{if(e){if(we.has(e)&&u===0){r(we.get(e)),i(!1);return}i(!0),t(e).then(l=>{m.current&&(we.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=D.useCallback(l=>n.find(g=>g.value===l)?.label??l,[n]),f=D.useCallback(()=>p(l=>l+1),[]);return{options:n,isLoading:s,error:c,getLabel:d,refresh:f}}import*as V from"react";function bt(){return typeof window<"u"}var It={text(e,t,n="text/plain"){if(!bt())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(!bt())return;let n=URL.createObjectURL(t);this.url(e,n),setTimeout(()=>URL.revokeObjectURL(n),1e3)},url(e,t){if(!bt())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"+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 o=await fetch(e,n);if(!o.ok)throw new Error(`Download failed: ${o.status}`);await this.response(t,o)}};function eo(){let[e,t]=B.useState(!1),[n,o]=B.useState(void 0),[s,i]=B.useState(0),c=B.useRef(!1),a=B.useRef(!0);B.useEffect(()=>(a.current=!0,()=>{a.current=!1}),[]);let u=B.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"?bt.text(d,l,f??"text/plain"):bt.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=B.useCallback(()=>{c.current=!0},[]);return{exportFile:u,isLoading:e,error:n,progress:s,abort:p}}import*as G from"react";function to(e,t){let[n,o]=G.useState({data:void 0,error:void 0,isLoading:!0}),s=G.useRef(!0),i=G.useRef(0),[c,a]=G.useState(0);G.useEffect(()=>(s.current=!0,()=>{s.current=!1}),[]);let u=G.useCallback(()=>{a(p=>p+1)},[]);return G.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();s.current&&m===i.current&&o({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));o(l=>({...l,error:f,isLoading:!1}))}}),()=>p.abort()},[e,JSON.stringify(t),c]),{...n,refetch:u}}import*as V from"react";function no(e,t={}){let{validate:n,createId:o=()=>Math.random().toString(36).slice(2)}=t,[s,i]=V.useState(e),[c,a]=V.useState(!1),u=V.useMemo(()=>{if(!n)return{};let R={};return s.forEach((x,v)=>{let h=n(x,v);h&&Object.keys(h).length>0&&(R[v]=h)}),R},[s,n]),p=V.useCallback(()=>a(!0),[]),m=V.useCallback(R=>{i(x=>[...x,{...R,id:R.id||o()}]),p()},[o,p]),d=V.useCallback((R,x)=>{i(v=>v.map((h,I)=>I===R?{...h,...x}:h)),p()},[p]),f=V.useCallback(R=>{i(x=>x.filter((v,h)=>h!==R)),p()},[p]),l=V.useCallback(R=>{i(R),p()},[p]),g=V.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}}import*as Te from"react";function oo(e=6e4,t=["mousedown","keydown","touchstart","scroll","mousemove"]){let[n,o]=Te.useState(!1),s=Te.useRef(void 0);return Te.useEffect(()=>{if(typeof window>"u")return;let i=()=>{o(!1),s.current&&clearTimeout(s.current),s.current=setTimeout(()=>o(!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}import*as z from"react";function ro(){let[e,t]=z.useState([]),[n,o]=z.useState([]),[s,i]=z.useState(!1),[c,a]=z.useState(0),u=z.useRef(!0);z.useEffect(()=>(u.current=!0,()=>{u.current=!1}),[]);let p=z.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=z.useCallback(()=>{t([]),o([]),a(0),i(!1)},[]);return{rows:e,errors:n,isLoading:s,progress:c,importFile:p,reset:m}}import*as F from"react";function so(e,t={}){let{onCommit:n,validate:o}=t,[s,i]=F.useState(e),[c,a]=F.useState(!1),[u,p]=F.useState(null),m=F.useRef(e);m.current=e,F.useEffect(()=>{c||i(e)},[e,c]);let d=F.useCallback(()=>{i(m.current),p(null),a(!0)},[]),f=F.useCallback(R=>{i(R),p(o?o(R):null)},[o]),l=F.useCallback(async()=>{let R=o?o(s):null;if(R){p(R);return}p(null),a(!1),await n?.(s)},[s,o,n]),g=F.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}}import*as et from"react";function Ut(){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 io(){let[e,t]=et.useState(Ut);return et.useEffect(()=>{if(typeof window>"u")return;let n=()=>t(Ut());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}import*as tt from"react";function ao(){let[e,t]=tt.useState(!1);return{print:tt.useCallback(async(o,s={})=>{if(typeof window>"u")return;let{title:i,beforePrint:c,afterPrint:a}=s;t(!0),c?.();try{o?await co(o,s):window.print(),i&&(document.title=i)}finally{a?.(),t(!1)}},[]),isPrinting:e}}function co(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 s=o.contentWindow?.document;if(!s){document.body.removeChild(o),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(o),n()};o.contentWindow?.addEventListener("afterprint",i,{once:!0}),setTimeout(()=>{try{o.contentWindow?.focus(),o.contentWindow?.print()}catch{}setTimeout(i,500)},100)})}import*as ge from"react";function uo(){let[e,t]=ge.useState([]),n=ge.useCallback(c=>{t(a=>[c,...a])},[]),o=ge.useCallback(()=>{let c;return t(a=>a.length===0?a:(c=a[0],a.slice(1))),c},[]),s=ge.useCallback(()=>e[0],[e]),i=ge.useCallback(()=>t([]),[]);return{redoCount:e.length,push:n,pop:o,peek:s,clear:i}}import*as Ce from"react";function lo(e,t={}){let{onMessage:n,event:o,withCredentials:s=!1}=t,[i,c]=Ce.useState({readyState:0,lastEvent:void 0,error:void 0}),a=Ce.useRef(n);return a.current=n,Ce.useEffect(()=>{if(!e||typeof EventSource>"u")return;let u=new EventSource(e,{withCredentials:s});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,s]),i}import{useQuery as po}from"@tanstack/react-query";function fo(e){return po({staleTime:3e4,...e})}import{useMutation as mo}from"@tanstack/react-query";function go(e){return mo(e)}import*as U from"react";var Be=new Map;function Ro(e,t,n={}){let{revalidateOnFocus:o=!0,refreshInterval:s=0,dedupingInterval:i=2e3}=n,[c,a]=U.useState(e&&Be.has(e)?Be.get(e).data:void 0),[u,p]=U.useState(void 0),[m,d]=U.useState(e!==null&&!(e&&Be.has(e))),f=U.useRef(!0),l=U.useRef(0);U.useEffect(()=>(f.current=!0,()=>{f.current=!1}),[]);let g=U.useCallback(()=>{if(!e)return;let x=Date.now();x-l.current<i&&l.current!==0||(l.current=x,d(!0),t(e).then(v=>{f.current&&(Be.set(e,{data:v,ts:x}),a(v),p(void 0),d(!1))}).catch(v=>{f.current&&(p(v instanceof Error?v:new Error(String(v))),d(!1))}))},[e,t,i]);U.useEffect(()=>{if(!e)return;g();let x;s>0&&(x=setInterval(g,s));let v=()=>{o&&g()};return o&&typeof window<"u"&&window.addEventListener("focus",v),()=>{x&&clearInterval(x),typeof window<"u"&&window.removeEventListener("focus",v)}},[e,g,s,o]);let R=U.useCallback(x=>{e&&a(v=>{let h=typeof x=="function"?x(v):x;return h!==void 0&&Be.set(e,{data:h,ts:Date.now()}),h!==void 0?h:v})},[e]);return{data:c,error:u,isLoading:m,mutate:R}}import*as T from"react";function xo(e,t={}){let{pageSize:n=10,initialSort:o={key:null,direction:"asc"},filter:s,getRowId:i=(b,k)=>String(k)}=t,[c,a]=T.useState(1),[u,p]=T.useState(n),[m,d]=T.useState(o),[f,l]=T.useState(""),[g,R]=T.useState(new Set),x=T.useMemo(()=>!f||!s?e:e.filter(b=>s(b,f)),[e,f,s]),v=T.useMemo(()=>{if(!m.key)return x;let b=m.key,k=m.direction==="asc"?1:-1;return[...x].sort((W,_)=>{let ce=W[b],Le=_[b];return ce===Le?0:ce==null?1:Le==null?-1:ce>Le?k:-k})},[x,m]),h=v.length,I=Math.max(1,Math.ceil(h/u)),C=Math.min(c,I),H=(C-1)*u,J=T.useMemo(()=>v.slice(H,H+u),[v,H,u]),Re=T.useCallback(b=>{d(k=>k.key!==b?{key:b,direction:"asc"}:k.direction==="asc"?{key:b,direction:"desc"}:{key:null,direction:"asc"})},[]),ot=T.useCallback(b=>{l(b),a(1)},[]),Ve=T.useCallback(b=>a(Math.min(Math.max(1,b),I)),[I]),K=T.useCallback(b=>{p(b),a(1)},[]),P=T.useMemo(()=>J.map((b,k)=>i(b,H+k)),[J,H,i]),Se=T.useCallback(b=>{R(k=>{let W=new Set(k);return W.has(b)?W.delete(b):W.add(b),W})},[]),Z=T.useCallback(()=>{R(b=>{if(P.every(_=>b.has(_))){let _=new Set(b);return P.forEach(ce=>_.delete(ce)),_}let W=new Set(b);return P.forEach(_=>W.add(_)),W})},[P]),rt=T.useCallback(()=>R(new Set),[]);return{rows:J,page:C,pageSize:u,total:h,totalPages:I,sort:m,setSort:Re,filterTerm:f,setFilter:ot,setPage:Ve,setPageSize:K,selected:g,toggleRow:Se,toggleAll:Z,clearSelected:rt}}import{useCallback as vo,useEffect as At,useRef as bo}from"react";var Nt=null;function nt(e,t){Nt&&Nt.track({name:e,properties:t})}function Io(e){let{event:t,properties:n,trackOnMount:o,trackOnUnmount:s}=e,i=bo(n);i.current=n;let c=vo(a=>{nt(t,{...i.current,...a})},[t]);return At(()=>{o&&nt(t,i.current)},[]),At(()=>()=>{s&&nt(t,{...i.current,unmount:!0})},[]),{trackNow:c}}import*as oe from"react";function yo(e,t=100){let[n,o]=oe.useState([]),[s,i]=oe.useState(e),[c,a]=oe.useState([]),u=oe.useCallback(f=>{let l=typeof f=="function"?f(s):f;o(g=>{let R=[...g,s];return R.length>t?R.slice(R.length-t):R}),i(l),a([])},[s,t]),p=oe.useCallback(()=>{o(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=oe.useCallback(()=>{a(f=>{if(f.length===0)return f;let l=f[0];return i(g=>(o(R=>[...R,g]),l)),f.slice(1)})},[]),d=oe.useCallback(()=>{o([]),a([]),i(e)},[e]);return{value:s,setValue:u,undo:p,redo:m,clear:d,canUndo:n.length>0,canRedo:c.length>0}}import*as N from"react";function ho(e,t={}){let{onOpen:n,onMessage:o,onClose:s,onError:i,protocols:c,retryInterval:a=3e3,autoConnect:u=!0}=t,[p,m]=N.useState(0),[d,f]=N.useState(void 0),l=N.useRef(null),g=N.useRef({onOpen:n,onMessage:o,onClose:s,onError:i});g.current={onOpen:n,onMessage:o,onClose:s,onError:i};let R=N.useRef(void 0),x=N.useCallback(()=>{if(!e||typeof WebSocket>"u")return;let I=new WebSocket(e,c);l.current=I,m(I.readyState),I.onopen=C=>{m(I.readyState),g.current.onOpen?.(C)},I.onmessage=C=>{let H=typeof C.data=="string"?C.data:"";f(H),g.current.onMessage?.(H,C)},I.onclose=C=>{m(I.readyState),g.current.onClose?.(C),u&&a>0&&(R.current=setTimeout(x,a))},I.onerror=C=>{g.current.onError?.(C)}},[e,c,u,a]);N.useEffect(()=>(u&&x(),()=>{R.current&&clearTimeout(R.current),l.current?.close()}),[u,x]);let v=N.useCallback(I=>{l.current?.readyState===WebSocket.OPEN&&l.current.send(I)},[]),h=N.useCallback(()=>{R.current&&clearTimeout(R.current),l.current?.close()},[]);return{readyState:p,lastMessage:d,send:v,close:h}}export{Mn as ConfirmProvider,Cn as LocaleProvider,Yt as ModalRenderer,xt as PermissionContext,jn as PermissionProvider,Pn as confirmAsync,Et as getStoredLocale,ft as supportedLocales,Xn as useApproval,tn as useAsync,qn as useAsyncTask,Jn as useBill,It as useBreakpoint,nn as useClickOutside,Hn as useClipboard,On as useConfirmAsync,Dn as useConfirmContext,on as useCopyToClipboard,rn as useCountdown,kn as useCrud,Zn as useDataScope,sn as useDebounce,Yn as useDict,Vt as useEventListener,eo as useExport,to as useFetch,Un as useFieldValidation,Rt as useForm,Wn as useFormSchema,no as useFormTable,ln as useHotkeys,oo as useIdle,ro as useImport,ut as useInView,dn as useInfiniteScroll,Lt as useIntersectionObserver,Bt as useIsBreakpoint,fn as useIsDesktop,gn as useIsMobile,mn as useIsTablet,ht as useKey,zt as useKeyCombo,so as useLineEditor,pn as useLocalStorage,Sn as useLocale,lt as useMediaQuery,st as useMessage,Zt as useModal,go as useMutation,io as useNetworkQuality,Nn as useNetworkStatus,Kt as useNotification,zn as useOrientation,En as usePageTitle,pt as usePagination,Gn as usePermission,Rn as usePrevious,ao as usePrint,fo as useQuery,uo as useRedo,Dt as useScroll,Vn as useScrollDirection,lo as useSse,xn as useStep,Ro as useSwr,xo as useTable,vn as useThrottle,bn as useToggle,Io as useTrack,yo as useUndo,An as useVisibilityChange,ho as useWebsocket,Bn as useWindowSize,Qn as 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 to(){let[e,t]=V.useState(!1),[n,r]=V.useState(void 0),[s,i]=V.useState(0),c=V.useRef(!1),a=V.useRef(!0);V.useEffect(()=>(a.current=!0,()=>{a.current=!1}),[]);let u=V.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"?It.text(d,l,f??"text/plain"):It.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=V.useCallback(()=>{c.current=!0},[]);return{exportFile:u,isLoading:e,error:n,progress:s,abort:p}}import*as G from"react";function no(e,t){let[n,r]=G.useState({data:void 0,error:void 0,isLoading:!0}),s=G.useRef(!0),i=G.useRef(0),[c,a]=G.useState(0);G.useEffect(()=>(s.current=!0,()=>{s.current=!1}),[]);let u=G.useCallback(()=>{a(p=>p+1)},[]);return G.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}}import*as z from"react";function oo(e,t={}){let{validate:n,createId:r=()=>Math.random().toString(36).slice(2)}=t,[s,i]=z.useState(e),[c,a]=z.useState(!1),u=z.useMemo(()=>{if(!n)return{};let x={};return s.forEach((R,v)=>{let y=n(R,v);y&&Object.keys(y).length>0&&(x[v]=y)}),x},[s,n]),p=z.useCallback(()=>a(!0),[]),m=z.useCallback(x=>{i(R=>[...R,{...x,id:x.id||r()}]),p()},[r,p]),d=z.useCallback((x,R)=>{i(v=>v.map((y,I)=>I===x?{...y,...R}:y)),p()},[p]),f=z.useCallback(x=>{i(R=>R.filter((v,y)=>y!==x)),p()},[p]),l=z.useCallback(x=>{i(x),p()},[p]),g=z.useCallback(x=>{i(x??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}}import*as Te from"react";function ro(e=6e4,t=["mousedown","keydown","touchstart","scroll","mousemove"]){let[n,r]=Te.useState(!1),s=Te.useRef(void 0);return Te.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}import*as H from"react";function so(){let[e,t]=H.useState([]),[n,r]=H.useState([]),[s,i]=H.useState(!1),[c,a]=H.useState(0),u=H.useRef(!0);H.useEffect(()=>(u.current=!0,()=>{u.current=!1}),[]);let p=H.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=H.useCallback(()=>{t([]),r([]),a(0),i(!1)},[]);return{rows:e,errors:n,isLoading:s,progress:c,importFile:p,reset:m}}import*as F from"react";function io(e,t={}){let{onCommit:n,validate:r}=t,[s,i]=F.useState(e),[c,a]=F.useState(!1),[u,p]=F.useState(null),m=F.useRef(e);m.current=e,F.useEffect(()=>{c||i(e)},[e,c]);let d=F.useCallback(()=>{i(m.current),p(null),a(!0)},[]),f=F.useCallback(x=>{i(x),p(r?r(x):null)},[r]),l=F.useCallback(async()=>{let x=r?r(s):null;if(x){p(x);return}p(null),a(!1),await n?.(s)},[s,r,n]),g=F.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}}import*as tt from"react";function Nt(){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 ao(){let[e,t]=tt.useState(Nt);return tt.useEffect(()=>{if(typeof window>"u")return;let n=()=>t(Nt());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}import*as nt from"react";function co(){let[e,t]=nt.useState(!1);return{print:nt.useCallback(async(r,s={})=>{if(typeof window>"u")return;let{title:i,beforePrint:c,afterPrint:a}=s;t(!0),c?.();try{r?await uo(r,s):window.print(),i&&(document.title=i)}finally{a?.(),t(!1)}},[]),isPrinting:e}}function uo(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)})}import*as ge from"react";function lo(){let[e,t]=ge.useState([]),n=ge.useCallback(c=>{t(a=>[c,...a])},[]),r=ge.useCallback(()=>{let c;return t(a=>a.length===0?a:(c=a[0],a.slice(1))),c},[]),s=ge.useCallback(()=>e[0],[e]),i=ge.useCallback(()=>t([]),[]);return{redoCount:e.length,push:n,pop:r,peek:s,clear:i}}import*as Ce from"react";function po(e,t={}){let{onMessage:n,event:r,withCredentials:s=!1}=t,[i,c]=Ce.useState({readyState:0,lastEvent:void 0,error:void 0}),a=Ce.useRef(n);return a.current=n,Ce.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}import{useQuery as fo}from"@tanstack/react-query";function mo(e){return fo({staleTime:3e4,...e})}import{useMutation as go}from"@tanstack/react-query";function xo(e){return go(e)}import*as U from"react";var Be=new Map;function Ro(e,t,n={}){let{revalidateOnFocus:r=!0,refreshInterval:s=0,dedupingInterval:i=2e3}=n,[c,a]=U.useState(e&&Be.has(e)?Be.get(e).data:void 0),[u,p]=U.useState(void 0),[m,d]=U.useState(e!==null&&!(e&&Be.has(e))),f=U.useRef(!0),l=U.useRef(0);U.useEffect(()=>(f.current=!0,()=>{f.current=!1}),[]);let g=U.useCallback(()=>{if(!e)return;let R=Date.now();R-l.current<i&&l.current!==0||(l.current=R,d(!0),t(e).then(v=>{f.current&&(Be.set(e,{data:v,ts:R}),a(v),p(void 0),d(!1))}).catch(v=>{f.current&&(p(v instanceof Error?v:new Error(String(v))),d(!1))}))},[e,t,i]);U.useEffect(()=>{if(!e)return;g();let R;s>0&&(R=setInterval(g,s));let v=()=>{r&&g()};return r&&typeof window<"u"&&window.addEventListener("focus",v),()=>{R&&clearInterval(R),typeof window<"u"&&window.removeEventListener("focus",v)}},[e,g,s,r]);let x=U.useCallback(R=>{e&&a(v=>{let y=typeof R=="function"?R(v):R;return y!==void 0&&Be.set(e,{data:y,ts:Date.now()}),y!==void 0?y:v})},[e]);return{data:c,error:u,isLoading:m,mutate:x}}import*as T from"react";function vo(e,t={}){let{pageSize:n=10,initialSort:r={key:null,direction:"asc"},filter:s,getRowId:i=(b,k)=>String(k)}=t,[c,a]=T.useState(1),[u,p]=T.useState(n),[m,d]=T.useState(r),[f,l]=T.useState(""),[g,x]=T.useState(new Set),R=T.useMemo(()=>!f||!s?e:e.filter(b=>s(b,f)),[e,f,s]),v=T.useMemo(()=>{if(!m.key)return R;let b=m.key,k=m.direction==="asc"?1:-1;return[...R].sort((Q,q)=>{let ce=Q[b],Se=q[b];return ce===Se?0:ce==null?1:Se==null?-1:ce>Se?k:-k})},[R,m]),y=v.length,I=Math.max(1,Math.ceil(y/u)),C=Math.min(c,I),K=(C-1)*u,J=T.useMemo(()=>v.slice(K,K+u),[v,K,u]),xe=T.useCallback(b=>{d(k=>k.key!==b?{key:b,direction:"asc"}:k.direction==="asc"?{key:b,direction:"desc"}:{key:null,direction:"asc"})},[]),rt=T.useCallback(b=>{l(b),a(1)},[]),Ve=T.useCallback(b=>a(Math.min(Math.max(1,b),I)),[I]),W=T.useCallback(b=>{p(b),a(1)},[]),P=T.useMemo(()=>J.map((b,k)=>i(b,K+k)),[J,K,i]),Le=T.useCallback(b=>{x(k=>{let Q=new Set(k);return Q.has(b)?Q.delete(b):Q.add(b),Q})},[]),Z=T.useCallback(()=>{x(b=>{if(P.every(q=>b.has(q))){let q=new Set(b);return P.forEach(ce=>q.delete(ce)),q}let Q=new Set(b);return P.forEach(q=>Q.add(q)),Q})},[P]),st=T.useCallback(()=>x(new Set),[]);return{rows:J,page:C,pageSize:u,total:y,totalPages:I,sort:m,setSort:xe,filterTerm:f,setFilter:rt,setPage:Ve,setPageSize:W,selected:g,toggleRow:Le,toggleAll:Z,clearSelected:st}}import{useCallback as bo,useEffect as Bt,useRef as Io}from"react";var At=null;function ot(e,t){At&&At.track({name:e,properties:t})}function ho(e){let{event:t,properties:n,trackOnMount:r,trackOnUnmount:s}=e,i=Io(n);i.current=n;let c=bo(a=>{ot(t,{...i.current,...a})},[t]);return Bt(()=>{r&&ot(t,i.current)},[]),Bt(()=>()=>{s&&ot(t,{...i.current,unmount:!0})},[]),{trackNow:c}}import*as oe from"react";function yo(e,t=100){let[n,r]=oe.useState([]),[s,i]=oe.useState(e),[c,a]=oe.useState([]),u=oe.useCallback(f=>{let l=typeof f=="function"?f(s):f;r(g=>{let x=[...g,s];return x.length>t?x.slice(x.length-t):x}),i(l),a([])},[s,t]),p=oe.useCallback(()=>{r(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=oe.useCallback(()=>{a(f=>{if(f.length===0)return f;let l=f[0];return i(g=>(r(x=>[...x,g]),l)),f.slice(1)})},[]),d=oe.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}}import*as N from"react";function wo(e,t={}){let{onOpen:n,onMessage:r,onClose:s,onError:i,protocols:c,retryInterval:a=3e3,autoConnect:u=!0}=t,[p,m]=N.useState(0),[d,f]=N.useState(void 0),l=N.useRef(null),g=N.useRef({onOpen:n,onMessage:r,onClose:s,onError:i});g.current={onOpen:n,onMessage:r,onClose:s,onError:i};let x=N.useRef(void 0),R=N.useCallback(()=>{if(!e||typeof WebSocket>"u")return;let I=new WebSocket(e,c);l.current=I,m(I.readyState),I.onopen=C=>{m(I.readyState),g.current.onOpen?.(C)},I.onmessage=C=>{let K=typeof C.data=="string"?C.data:"";f(K),g.current.onMessage?.(K,C)},I.onclose=C=>{m(I.readyState),g.current.onClose?.(C),u&&a>0&&(x.current=setTimeout(R,a))},I.onerror=C=>{g.current.onError?.(C)}},[e,c,u,a]);N.useEffect(()=>(u&&R(),()=>{x.current&&clearTimeout(x.current),l.current?.close()}),[u,R]);let v=N.useCallback(I=>{l.current?.readyState===WebSocket.OPEN&&l.current.send(I)},[]),y=N.useCallback(()=>{x.current&&clearTimeout(x.current),l.current?.close()},[]);return{readyState:p,lastMessage:d,send:v,close:y}}export{On as ConfirmProvider,Ln as LocaleProvider,en as ModalRenderer,vt as PermissionContext,Gn as PermissionProvider,Mn as confirmAsync,Pt as getStoredLocale,mt as supportedLocales,Xn as useApproval,nn as useAsync,$n as useAsyncTask,Zn as useBill,ht as useBreakpoint,on as useClickOutside,Kn as useClipboard,Dn as useConfirmAsync,Fn as useConfirmContext,rn as useCopyToClipboard,sn as useCountdown,En as useCrud,Yn as useDataScope,an as useDebounce,eo as useDict,zt as useEventListener,to as useExport,no as useFetch,Nn as useFieldValidation,Rt as useForm,Qn as useFormSchema,oo as useFormTable,dn as useHotkeys,ro as useIdle,so as useImport,lt as useInView,pn as useInfiniteScroll,kt as useIntersectionObserver,Vt as useIsBreakpoint,mn as useIsDesktop,xn as useIsMobile,gn as useIsTablet,wt as useKey,Ht as useKeyCombo,io as useLineEditor,fn as useLocalStorage,Sn as useLocale,dt as useMediaQuery,it as useMessage,Yt as useModal,xo as useMutation,ao as useNetworkQuality,An as useNetworkStatus,Wt as useNotification,Hn as useOrientation,Pn as usePageTitle,ft as usePagination,qn as usePermission,Rn as usePrevious,co as usePrint,mo as useQuery,lo as useRedo,Ft as useScroll,zn as useScrollDirection,po as useSse,vn as useStep,Ro as useSwr,vo as useTable,bn as useThrottle,In as useToggle,ho as useTrack,yo as useUndo,Bn as useVisibilityChange,wo as useWebsocket,Vn as useWindowSize,jn as zodResolverAdapter};
|