@chaos_team/chaos-ui 1.0.5
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 +286 -0
- package/LICENSE +21 -0
- package/README.md +295 -0
- package/THIRD_PARTY_NOTICES.md +22 -0
- package/dist/business.cjs +26 -0
- package/dist/business.d.cts +10311 -0
- package/dist/business.d.ts +10311 -0
- package/dist/business.js +26 -0
- package/dist/format-BUpOzeCo.d.cts +8 -0
- package/dist/format-BUpOzeCo.d.ts +8 -0
- package/dist/hooks.cjs +8 -0
- package/dist/hooks.d.cts +1148 -0
- package/dist/hooks.d.ts +1148 -0
- package/dist/hooks.js +8 -0
- package/dist/index.cjs +6 -0
- package/dist/index.d.cts +5616 -0
- package/dist/index.d.ts +5616 -0
- package/dist/index.js +6 -0
- package/dist/lib.cjs +42 -0
- package/dist/lib.d.cts +804 -0
- package/dist/lib.d.ts +804 -0
- package/dist/lib.js +42 -0
- package/dist/message-KJli9tvf.d.cts +71 -0
- package/dist/message-KJli9tvf.d.ts +71 -0
- package/dist/message-provider-BI-P3CNq.d.cts +11 -0
- package/dist/message-provider-BI-P3CNq.d.ts +11 -0
- package/dist/next.cjs +6 -0
- package/dist/next.d.cts +103 -0
- package/dist/next.d.ts +103 -0
- package/dist/next.js +6 -0
- package/dist/theme-toggle-JL_jZE-w.d.cts +81 -0
- package/dist/theme-toggle-JL_jZE-w.d.ts +81 -0
- package/dist/time-picker-H1AaecnE.d.cts +452 -0
- package/dist/time-picker-H1AaecnE.d.ts +452 -0
- package/dist/ui/icons.cjs +6 -0
- package/dist/ui/icons.d.cts +3 -0
- package/dist/ui/icons.d.ts +3 -0
- package/dist/ui/icons.js +6 -0
- package/dist/ui-icons.cjs +6 -0
- package/dist/ui-icons.d.cts +205 -0
- package/dist/ui-icons.d.ts +205 -0
- package/dist/ui-icons.js +6 -0
- package/dist/ui.cjs +6 -0
- package/dist/ui.d.cts +39 -0
- package/dist/ui.d.ts +39 -0
- package/dist/ui.js +6 -0
- package/package.json +265 -0
- package/styles.css +1300 -0
- package/styles.css.d.ts +11 -0
package/dist/hooks.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Chaos UI - Enterprise React Component Library
|
|
3
|
+
* Copyright (c) 2026 qxyfoods
|
|
4
|
+
* MIT License
|
|
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(`
|
|
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};
|