@coffer-org/web 1.6.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/assets/{ExtendReasonInfo-C9TZgX6o.js → ExtendReasonInfo-Cw042gEq.js} +1 -1
  2. package/dist/assets/{NewRecordView-DqJNxHM0.js → NewRecordView-B6V00NvK.js} +1 -1
  3. package/dist/assets/{PluginSettingsPage-BiBoejjn.js → PluginSettingsPage-BLyv_svI.js} +1 -1
  4. package/dist/assets/{SettingsForm-D9kBgf6H.js → SettingsForm-YHNQLRBn.js} +1 -1
  5. package/dist/assets/{SettingsPage-CSzqxAX9.js → SettingsPage-BVB0OiB8.js} +2 -2
  6. package/dist/assets/{Toolbar-DFtG8IB3.js → Toolbar-C08bdOI6.js} +1 -1
  7. package/dist/assets/{api-j5etRnzW.js → api-V98HaFMa.js} +1 -1
  8. package/dist/assets/{auth-context-zE-2rDEl.js → auth-context-CIGQgBfM.js} +1 -1
  9. package/dist/assets/{data-size-DGgafqIa.js → data-size-DCGcE2iT.js} +1 -1
  10. package/dist/assets/{extend-DrbW8fXY.js → extend-DDZLGxKJ.js} +1 -1
  11. package/dist/assets/{field-frame-9VMMov4O.js → field-frame-UyV2HVbd.js} +1 -1
  12. package/dist/assets/fields-B4fdbc1_.js +64 -0
  13. package/dist/assets/index-D_9GGfvb.js +354 -0
  14. package/dist/assets/{shelf-iRNXQLvo.js → shelf-e7xL1R3N.js} +1 -1
  15. package/dist/assets/{src-BfR4XKOl.js → src-56y8la1R.js} +1 -1
  16. package/dist/assets/{src-BZoeScha.js → src-B5o7YUhY.js} +1 -1
  17. package/dist/assets/{src-Ds0SdDJ_.js → src-BB5pAQoq.js} +1 -1
  18. package/dist/assets/src-BBTJclQ3.js +1 -0
  19. package/dist/assets/{src-DrOECW8l.js → src-BEw_wZX0.js} +1 -1
  20. package/dist/assets/{src-Dh23dKOF.js → src-BKpM04ou.js} +1 -1
  21. package/dist/assets/{src-DBWRsAkM.js → src-BNqZqACY.js} +1 -1
  22. package/dist/assets/src-BYe9NBzz.js +1 -0
  23. package/dist/assets/{src-YSzd3JaE.js → src-Bt8MMPOh.js} +1 -1
  24. package/dist/assets/{src-Coppd4mf.js → src-BylCqt8_.js} +1 -1
  25. package/dist/assets/src-CB26t1uZ.js +1 -0
  26. package/dist/assets/{src-CVrkkuph.js → src-CQcwtQ4u.js} +1 -1
  27. package/dist/assets/{src-C76fLvMo.js → src-CSLTj9M0.js} +1 -1
  28. package/dist/assets/{src-DEDH6rgD.js → src-CVMB8d9V.js} +1 -1
  29. package/dist/assets/{src-AaMeWnPg.js → src-CW-yI1QF.js} +1 -1
  30. package/dist/assets/{src-CwtznTUh.js → src-Cldq12DB.js} +1 -1
  31. package/dist/assets/{src-BBa4IgZu.js → src-D6YMn8QE.js} +1 -1
  32. package/dist/assets/{src-BxsItvRt.js → src-DlE7vhyV.js} +1 -1
  33. package/dist/assets/{src-Cp_tlXaj2.js → src-Dm6EOjlD2.js} +1 -1
  34. package/dist/assets/{src-kp91nAOQ.js → src-EnowVU3i.js} +1 -1
  35. package/dist/assets/{src-DdtX_tOa.js → src-R62BabNC.js} +1 -1
  36. package/dist/assets/{src-BkfNNzHS.js → src-iQwVT5tJ.js} +1 -1
  37. package/dist/assets/{src-P7xgnaCz.js → src-juXm-tHq.js} +1 -1
  38. package/dist/assets/{ui-uxAWrOIV.js → ui-D2hIw4gq.js} +1 -1
  39. package/dist/index.html +10 -10
  40. package/dist-vendor/web-sdk.js +215 -201
  41. package/package.json +1 -1
  42. package/dist/assets/fields-CQxZPdka.js +0 -64
  43. package/dist/assets/index-D5IQ3-ik.js +0 -381
  44. package/dist/assets/src-BGSRFSIw.js +0 -1
  45. package/dist/assets/src-CSK1-7o-.js +0 -1
  46. package/dist/assets/src-GOwr0Acm.js +0 -1
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-n93t21jb.js";import{C as n,S as r,i,w as a,x as o}from"./button-Dlm2GmQs.js";import{t as s}from"./jsx-dev-runtime-CSfA-jUb.js";import{i as c,o as l,s as u,t as d}from"./dist-DkJnaE0X.js";import{t as f}from"./jsx-runtime-JUshM5qe.js";import{a as p,b as ee,c as m,i as h,l as g,n as _,o as v,r as te,s as y,u as b,v as x,x as ne,y as S}from"./json-2IEVhd4i.js";import{C}from"./field-frame-9VMMov4O.js";import{p as re}from"./shelf-iRNXQLvo.js";var w=s(),T=e(t(),1),E=f(),D=`Popover`,[O,ie]=l(D,[b]),k=b(),[ae,A]=O(D),j=e=>{let{__scopePopover:t,children:n,open:r,defaultOpen:i,onOpenChange:a,modal:o=!1}=e,s=k(t),c=T.useRef(null),[l,u]=T.useState(!1),[f,p]=d({prop:r,defaultProp:i??!1,onChange:a,caller:D});return(0,E.jsx)(g,{...s,children:(0,E.jsx)(ae,{scope:t,contentId:x(),triggerRef:c,open:f,onOpenChange:p,onOpenToggle:T.useCallback(()=>p(e=>!e),[p]),hasCustomAnchor:l,onCustomAnchorAdd:T.useCallback(()=>u(!0),[]),onCustomAnchorRemove:T.useCallback(()=>u(!1),[]),modal:o,children:n})})};j.displayName=D;var M=`PopoverAnchor`,N=T.forwardRef((e,t)=>{let{__scopePopover:n,...r}=e,i=A(M,n),a=k(n),{onCustomAnchorAdd:o,onCustomAnchorRemove:s}=i;return T.useEffect(()=>(o(),()=>s()),[o,s]),(0,E.jsx)(v,{...a,...r,ref:t})});N.displayName=M;var P=`PopoverTrigger`,F=T.forwardRef((e,t)=>{let{__scopePopover:n,...i}=e,a=A(P,n),o=k(n),s=r(t,a.triggerRef),l=(0,E.jsx)(c.button,{type:`button`,"aria-haspopup":`dialog`,"aria-expanded":a.open,"aria-controls":a.open?a.contentId:void 0,"data-state":q(a.open),...i,ref:s,onClick:u(e.onClick,a.onOpenToggle)});return a.hasCustomAnchor?l:(0,E.jsx)(v,{asChild:!0,...o,children:l})});F.displayName=P;var I=`PopoverPortal`,[oe,se]=O(I,{forceMount:void 0}),L=e=>{let{__scopePopover:t,forceMount:n,children:r,container:i}=e,a=A(I,t);return(0,E.jsx)(oe,{scope:t,forceMount:n,children:(0,E.jsx)(h,{present:n||a.open,children:(0,E.jsx)(p,{asChild:!0,container:i,children:r})})})};L.displayName=I;var R=`PopoverContent`,z=T.forwardRef((e,t)=>{let n=se(R,e.__scopePopover),{forceMount:r=n.forceMount,...i}=e,a=A(R,e.__scopePopover);return(0,E.jsx)(h,{present:r||a.open,children:a.modal?(0,E.jsx)(V,{...i,ref:t}):(0,E.jsx)(H,{...i,ref:t})})});z.displayName=R;var B=o(`PopoverContent.RemoveScroll`),V=T.forwardRef((e,t)=>{let n=A(R,e.__scopePopover),i=T.useRef(null),a=r(t,i),o=T.useRef(!1);return T.useEffect(()=>{let e=i.current;if(e)return te(e)},[]),(0,E.jsx)(_,{as:B,allowPinchZoom:!0,children:(0,E.jsx)(U,{...e,ref:a,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:u(e.onCloseAutoFocus,e=>{e.preventDefault(),o.current||n.triggerRef.current?.focus()}),onPointerDownOutside:u(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0,r=t.button===2||n;o.current=r},{checkForDefaultPrevented:!1}),onFocusOutside:u(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1})})})}),H=T.forwardRef((e,t)=>{let n=A(R,e.__scopePopover),r=T.useRef(!1),i=T.useRef(!1);return(0,E.jsx)(U,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(r.current||n.triggerRef.current?.focus(),t.preventDefault()),r.current=!1,i.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(r.current=!0,t.detail.originalEvent.type===`pointerdown`&&(i.current=!0));let a=t.target;n.triggerRef.current?.contains(a)&&t.preventDefault(),t.detail.originalEvent.type===`focusin`&&i.current&&t.preventDefault()}})}),U=T.forwardRef((e,t)=>{let{__scopePopover:n,trapFocus:r,onOpenAutoFocus:i,onCloseAutoFocus:a,disableOutsidePointerEvents:o,onEscapeKeyDown:s,onPointerDownOutside:c,onFocusOutside:l,onInteractOutside:u,...d}=e,f=A(R,n),p=k(n);return ee(),(0,E.jsx)(S,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:i,onUnmountAutoFocus:a,children:(0,E.jsx)(ne,{asChild:!0,disableOutsidePointerEvents:o,onInteractOutside:u,onEscapeKeyDown:s,onPointerDownOutside:c,onFocusOutside:l,onDismiss:()=>f.onOpenChange(!1),deferPointerDownOutside:!0,children:(0,E.jsx)(m,{"data-state":q(f.open),role:`dialog`,id:f.contentId,...p,...d,ref:t,style:{...d.style,"--radix-popover-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-popover-content-available-width":`var(--radix-popper-available-width)`,"--radix-popover-content-available-height":`var(--radix-popper-available-height)`,"--radix-popover-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-popover-trigger-height":`var(--radix-popper-anchor-height)`}})})})}),W=`PopoverClose`,G=T.forwardRef((e,t)=>{let{__scopePopover:n,...r}=e,i=A(W,n);return(0,E.jsx)(c.button,{type:`button`,...r,ref:t,onClick:u(e.onClick,()=>i.onOpenChange(!1))})});G.displayName=W;var K=`PopoverArrow`,ce=T.forwardRef((e,t)=>{let{__scopePopover:n,...r}=e,i=k(n);return(0,E.jsx)(y,{...i,...r,ref:t})});ce.displayName=K;function q(e){return e?`open`:`closed`}var le=j,ue=N,de=F,fe=L,pe=z,J=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/components/ui/popover.tsx`;function Y({...e}){return(0,w.jsxDEV)(le,{"data-slot":`popover`,...e},void 0,!1,{fileName:J,lineNumber:7,columnNumber:10},this)}function X({...e}){return(0,w.jsxDEV)(de,{"data-slot":`popover-trigger`,...e},void 0,!1,{fileName:J,lineNumber:11,columnNumber:10},this)}function Z({className:e,align:t=`center`,sideOffset:r=4,...i}){return(0,w.jsxDEV)(fe,{children:(0,w.jsxDEV)(pe,{"data-slot":`popover-content`,align:t,sideOffset:r,className:n(`z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-xl border border-border bg-popover p-4 text-popover-foreground shadow-xl outline-hidden data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95`,e),...i},void 0,!1,{fileName:J,lineNumber:22,columnNumber:7},this)},void 0,!1,{fileName:J,lineNumber:21,columnNumber:5},this)}function me({...e}){return(0,w.jsxDEV)(ue,{"data-slot":`popover-anchor`,...e},void 0,!1,{fileName:J,lineNumber:37,columnNumber:10},this)}function he(e){if(e==null||e===``)return[];if(Array.isArray(e))return e.map(String).filter(Boolean);if(typeof e==`string`){if(e.startsWith(`[`))try{let t=JSON.parse(e);if(Array.isArray(t))return t.map(String).filter(Boolean)}catch{}return e?[e]:[]}return[String(e)]}function ge(e){return e.kind===`tags`||e.hints?.multiple===!0}var Q=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/render/dispatch.tsx`;function _e(e){let t=C(e.field);return t?(0,w.jsxDEV)(t.Page,{...e},void 0,!1,{fileName:Q,lineNumber:15,columnNumber:10},this):(console.warn(`[render] немає рендера для`,e.field.kind),(0,w.jsxDEV)(`span`,{children:String(e.value)},void 0,!1,{fileName:Q,lineNumber:13,columnNumber:12},this))}function ve({field:e,value:t,height:n}){let r=C(e),i=r?.Inline?(0,w.jsxDEV)(r.Inline,{field:e,value:t,height:n},void 0,!1,{fileName:Q,lineNumber:26,columnNumber:5},this):(0,w.jsxDEV)(`span`,{className:`truncate`,children:String(t??``)},void 0,!1,{fileName:Q,lineNumber:28,columnNumber:5},this);return n?(0,w.jsxDEV)(`span`,{className:`inline-flex min-w-0 items-center font-medium`,style:{fontSize:Math.round(n*.7),lineHeight:1.15},children:i},void 0,!1,{fileName:Q,lineNumber:32,columnNumber:5},this):i}function ye(e,t,n){let r=C(e),i=t=>r?.keys?r.keys(t,e,n):t==null||t===``?[]:[{value:String(t),rawValue:t,label:String(t)}],a=ge(e)?he(t):[t],o=new Set,s=[];for(let e of a)for(let t of i(e))o.has(t.value)||(o.add(t.value),s.push(t));return s}var $=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/components/ExtendReasonInfo.tsx`;function be({ext:e,fieldLabel:t,valueLabel:n}){let{t:r}=a(),o=re(e.showWhen,t,n);return o.length===0?null:(0,w.jsxDEV)(Y,{children:[(0,w.jsxDEV)(X,{type:`button`,"aria-label":r(`extend.shownWhen`),className:`inline-flex items-center text-muted hover:text-text`,children:(0,w.jsxDEV)(i,{name:`lucide:info`,size:14},void 0,!1,{fileName:$,lineNumber:30,columnNumber:9},this)},void 0,!1,{fileName:$,lineNumber:25,columnNumber:7},this),(0,w.jsxDEV)(Z,{align:`start`,className:`w-auto max-w-xs text-sm`,children:[(0,w.jsxDEV)(`p`,{className:`text-muted mb-1`,children:r(`extend.shownWhen`)},void 0,!1,{fileName:$,lineNumber:33,columnNumber:9},this),(0,w.jsxDEV)(`p`,{children:o.join(`; `)},void 0,!1,{fileName:$,lineNumber:34,columnNumber:9},this)]},void 0,!0,{fileName:$,lineNumber:32,columnNumber:7},this)]},void 0,!0,{fileName:$,lineNumber:24,columnNumber:5},this)}export{Y as a,X as c,ye as i,ve as n,me as o,_e as r,Z as s,be as t};
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-n93t21jb.js";import{C as n,S as r,i,w as a,x as o}from"./button-Dlm2GmQs.js";import{t as s}from"./jsx-dev-runtime-CSfA-jUb.js";import{i as c,o as l,s as u,t as d}from"./dist-DkJnaE0X.js";import{t as f}from"./jsx-runtime-JUshM5qe.js";import{a as p,b as ee,c as m,i as h,l as g,n as _,o as v,r as te,s as y,u as b,v as x,x as ne,y as S}from"./json-2IEVhd4i.js";import{C}from"./field-frame-UyV2HVbd.js";import{p as re}from"./shelf-e7xL1R3N.js";var w=s(),T=e(t(),1),E=f(),D=`Popover`,[O,ie]=l(D,[b]),k=b(),[ae,A]=O(D),j=e=>{let{__scopePopover:t,children:n,open:r,defaultOpen:i,onOpenChange:a,modal:o=!1}=e,s=k(t),c=T.useRef(null),[l,u]=T.useState(!1),[f,p]=d({prop:r,defaultProp:i??!1,onChange:a,caller:D});return(0,E.jsx)(g,{...s,children:(0,E.jsx)(ae,{scope:t,contentId:x(),triggerRef:c,open:f,onOpenChange:p,onOpenToggle:T.useCallback(()=>p(e=>!e),[p]),hasCustomAnchor:l,onCustomAnchorAdd:T.useCallback(()=>u(!0),[]),onCustomAnchorRemove:T.useCallback(()=>u(!1),[]),modal:o,children:n})})};j.displayName=D;var M=`PopoverAnchor`,N=T.forwardRef((e,t)=>{let{__scopePopover:n,...r}=e,i=A(M,n),a=k(n),{onCustomAnchorAdd:o,onCustomAnchorRemove:s}=i;return T.useEffect(()=>(o(),()=>s()),[o,s]),(0,E.jsx)(v,{...a,...r,ref:t})});N.displayName=M;var P=`PopoverTrigger`,F=T.forwardRef((e,t)=>{let{__scopePopover:n,...i}=e,a=A(P,n),o=k(n),s=r(t,a.triggerRef),l=(0,E.jsx)(c.button,{type:`button`,"aria-haspopup":`dialog`,"aria-expanded":a.open,"aria-controls":a.open?a.contentId:void 0,"data-state":q(a.open),...i,ref:s,onClick:u(e.onClick,a.onOpenToggle)});return a.hasCustomAnchor?l:(0,E.jsx)(v,{asChild:!0,...o,children:l})});F.displayName=P;var I=`PopoverPortal`,[oe,se]=O(I,{forceMount:void 0}),L=e=>{let{__scopePopover:t,forceMount:n,children:r,container:i}=e,a=A(I,t);return(0,E.jsx)(oe,{scope:t,forceMount:n,children:(0,E.jsx)(h,{present:n||a.open,children:(0,E.jsx)(p,{asChild:!0,container:i,children:r})})})};L.displayName=I;var R=`PopoverContent`,z=T.forwardRef((e,t)=>{let n=se(R,e.__scopePopover),{forceMount:r=n.forceMount,...i}=e,a=A(R,e.__scopePopover);return(0,E.jsx)(h,{present:r||a.open,children:a.modal?(0,E.jsx)(V,{...i,ref:t}):(0,E.jsx)(H,{...i,ref:t})})});z.displayName=R;var B=o(`PopoverContent.RemoveScroll`),V=T.forwardRef((e,t)=>{let n=A(R,e.__scopePopover),i=T.useRef(null),a=r(t,i),o=T.useRef(!1);return T.useEffect(()=>{let e=i.current;if(e)return te(e)},[]),(0,E.jsx)(_,{as:B,allowPinchZoom:!0,children:(0,E.jsx)(U,{...e,ref:a,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:u(e.onCloseAutoFocus,e=>{e.preventDefault(),o.current||n.triggerRef.current?.focus()}),onPointerDownOutside:u(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0,r=t.button===2||n;o.current=r},{checkForDefaultPrevented:!1}),onFocusOutside:u(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1})})})}),H=T.forwardRef((e,t)=>{let n=A(R,e.__scopePopover),r=T.useRef(!1),i=T.useRef(!1);return(0,E.jsx)(U,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(r.current||n.triggerRef.current?.focus(),t.preventDefault()),r.current=!1,i.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(r.current=!0,t.detail.originalEvent.type===`pointerdown`&&(i.current=!0));let a=t.target;n.triggerRef.current?.contains(a)&&t.preventDefault(),t.detail.originalEvent.type===`focusin`&&i.current&&t.preventDefault()}})}),U=T.forwardRef((e,t)=>{let{__scopePopover:n,trapFocus:r,onOpenAutoFocus:i,onCloseAutoFocus:a,disableOutsidePointerEvents:o,onEscapeKeyDown:s,onPointerDownOutside:c,onFocusOutside:l,onInteractOutside:u,...d}=e,f=A(R,n),p=k(n);return ee(),(0,E.jsx)(S,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:i,onUnmountAutoFocus:a,children:(0,E.jsx)(ne,{asChild:!0,disableOutsidePointerEvents:o,onInteractOutside:u,onEscapeKeyDown:s,onPointerDownOutside:c,onFocusOutside:l,onDismiss:()=>f.onOpenChange(!1),deferPointerDownOutside:!0,children:(0,E.jsx)(m,{"data-state":q(f.open),role:`dialog`,id:f.contentId,...p,...d,ref:t,style:{...d.style,"--radix-popover-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-popover-content-available-width":`var(--radix-popper-available-width)`,"--radix-popover-content-available-height":`var(--radix-popper-available-height)`,"--radix-popover-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-popover-trigger-height":`var(--radix-popper-anchor-height)`}})})})}),W=`PopoverClose`,G=T.forwardRef((e,t)=>{let{__scopePopover:n,...r}=e,i=A(W,n);return(0,E.jsx)(c.button,{type:`button`,...r,ref:t,onClick:u(e.onClick,()=>i.onOpenChange(!1))})});G.displayName=W;var K=`PopoverArrow`,ce=T.forwardRef((e,t)=>{let{__scopePopover:n,...r}=e,i=k(n);return(0,E.jsx)(y,{...i,...r,ref:t})});ce.displayName=K;function q(e){return e?`open`:`closed`}var le=j,ue=N,de=F,fe=L,pe=z,J=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/components/ui/popover.tsx`;function Y({...e}){return(0,w.jsxDEV)(le,{"data-slot":`popover`,...e},void 0,!1,{fileName:J,lineNumber:7,columnNumber:10},this)}function X({...e}){return(0,w.jsxDEV)(de,{"data-slot":`popover-trigger`,...e},void 0,!1,{fileName:J,lineNumber:11,columnNumber:10},this)}function Z({className:e,align:t=`center`,sideOffset:r=4,...i}){return(0,w.jsxDEV)(fe,{children:(0,w.jsxDEV)(pe,{"data-slot":`popover-content`,align:t,sideOffset:r,className:n(`z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-xl border border-border bg-popover p-4 text-popover-foreground shadow-xl outline-hidden data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95`,e),...i},void 0,!1,{fileName:J,lineNumber:22,columnNumber:7},this)},void 0,!1,{fileName:J,lineNumber:21,columnNumber:5},this)}function me({...e}){return(0,w.jsxDEV)(ue,{"data-slot":`popover-anchor`,...e},void 0,!1,{fileName:J,lineNumber:37,columnNumber:10},this)}function he(e){if(e==null||e===``)return[];if(Array.isArray(e))return e.map(String).filter(Boolean);if(typeof e==`string`){if(e.startsWith(`[`))try{let t=JSON.parse(e);if(Array.isArray(t))return t.map(String).filter(Boolean)}catch{}return e?[e]:[]}return[String(e)]}function ge(e){return e.kind===`tags`||e.hints?.multiple===!0}var Q=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/render/dispatch.tsx`;function _e(e){let t=C(e.field);return t?(0,w.jsxDEV)(t.Page,{...e},void 0,!1,{fileName:Q,lineNumber:15,columnNumber:10},this):(console.warn(`[render] немає рендера для`,e.field.kind),(0,w.jsxDEV)(`span`,{children:String(e.value)},void 0,!1,{fileName:Q,lineNumber:13,columnNumber:12},this))}function ve({field:e,value:t,height:n}){let r=C(e),i=r?.Inline?(0,w.jsxDEV)(r.Inline,{field:e,value:t,height:n},void 0,!1,{fileName:Q,lineNumber:26,columnNumber:5},this):(0,w.jsxDEV)(`span`,{className:`truncate`,children:String(t??``)},void 0,!1,{fileName:Q,lineNumber:28,columnNumber:5},this);return n?(0,w.jsxDEV)(`span`,{className:`inline-flex min-w-0 items-center font-medium`,style:{fontSize:Math.round(n*.7),lineHeight:1.15},children:i},void 0,!1,{fileName:Q,lineNumber:32,columnNumber:5},this):i}function ye(e,t,n){let r=C(e),i=t=>r?.keys?r.keys(t,e,n):t==null||t===``?[]:[{value:String(t),rawValue:t,label:String(t)}],a=ge(e)?he(t):[t],o=new Set,s=[];for(let e of a)for(let t of i(e))o.has(t.value)||(o.add(t.value),s.push(t));return s}var $=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/components/ExtendReasonInfo.tsx`;function be({ext:e,fieldLabel:t,valueLabel:n}){let{t:r}=a(),o=re(e.showWhen,t,n);return o.length===0?null:(0,w.jsxDEV)(Y,{children:[(0,w.jsxDEV)(X,{type:`button`,"aria-label":r(`extend.shownWhen`),className:`inline-flex items-center text-muted hover:text-text`,children:(0,w.jsxDEV)(i,{name:`lucide:info`,size:14},void 0,!1,{fileName:$,lineNumber:30,columnNumber:9},this)},void 0,!1,{fileName:$,lineNumber:25,columnNumber:7},this),(0,w.jsxDEV)(Z,{align:`start`,className:`w-auto max-w-xs text-sm`,children:[(0,w.jsxDEV)(`p`,{className:`text-muted mb-1`,children:r(`extend.shownWhen`)},void 0,!1,{fileName:$,lineNumber:33,columnNumber:9},this),(0,w.jsxDEV)(`p`,{children:o.join(`; `)},void 0,!1,{fileName:$,lineNumber:34,columnNumber:9},this)]},void 0,!0,{fileName:$,lineNumber:32,columnNumber:7},this)]},void 0,!0,{fileName:$,lineNumber:24,columnNumber:5},this)}export{Y as a,X as c,ye as i,ve as n,me as o,_e as r,Z as s,be as t};
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-n93t21jb.js";import{i as n,t as r,w as i}from"./button-Dlm2GmQs.js";import{c as a,l as o}from"./chunk-KS7C4IRE-B1_Zk64s.js";import{t as s}from"./jsx-dev-runtime-CSfA-jUb.js";import{t as c}from"./json-2IEVhd4i.js";import{r as l,t as u}from"./ExtendReasonInfo-C9TZgX6o.js";import{f as d,l as f,m as p,n as m,o as h,r as g,s as _,t as v,u as y,y as b}from"./Toolbar-DFtG8IB3.js";import{S as x,f as S,g as C,m as w}from"./fields-CQxZPdka.js";import{a as T,h as E,m as D,n as O,o as k,t as A}from"./shelf-iRNXQLvo.js";import{S as j,o as M}from"./api-j5etRnzW.js";var N=e(t(),1),P=s(),F=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/fields-form.tsx`;function I({shelf:e,record:t,onSubmit:n,onCancel:a,submitLabel:o,busy:s,children:c,hiddenFields:l,onValuesChange:u,errorSink:d,extraValidate:p}){let{t:h}=i(),v=f(h),y=!!t,b=(0,N.useMemo)(()=>k(e.fields),[e]),{values:S,errors:C,setErrors:w,setTouched:T,bridge:E}=m({fm:b,mode:y?`edit`:`create`,recordCtx:{library:e.library,shelf:e.shelf,recordId:t?String(t.id):null},initial:()=>R(e,t),hiddenFields:l}),[D,j]=(0,N.useState)(),[M,I]=(0,N.useState)(!1);(0,N.useEffect)(()=>{u?.(S)},[S,u]),(0,N.useEffect)(()=>{d?.({setErrors:w,setTouched:T})},[d,w,T]);async function L(t){t.preventDefault(),j(void 0);let r=Object.keys(b),i={};for(let e of r)e in S&&(i[e]=S[e]);let a=z(i),o=(y?O(e):A(e)).safeParse(a),s={};if(!o.success)for(let e of o.error.issues){let t=String(e.path[0]??``);if(!r.includes(t)||s[t])continue;let{code:n,params:i}=x(e.message);s[t]=v(n,i)}if(Object.assign(s,p?.(S)??{}),Object.keys(s).length){w(s),T(new Set(Object.keys(s)));return}I(!0);let c=await n(a);I(!1),c&&j(c)}return(0,P.jsxDEV)(`form`,{onSubmit:L,noValidate:!0,className:`flex flex-col gap-5 min-w-0`,children:[(0,P.jsxDEV)(_.Provider,{value:e=>C[e.join(`.`)],children:(0,P.jsxDEV)(g,{items:e.fields,ctx:{bridge:E}},void 0,!1,{fileName:F,lineNumber:118,columnNumber:9},this)},void 0,!1,{fileName:F,lineNumber:117,columnNumber:7},this),c,D&&(0,P.jsxDEV)(`p`,{className:`text-sm text-danger`,children:D},void 0,!1,{fileName:F,lineNumber:121,columnNumber:21},this),(0,P.jsxDEV)(`div`,{className:`flex gap-3 pt-2 border-t border-border`,children:[(0,P.jsxDEV)(r,{type:`submit`,disabled:s||M,size:`lg`,className:`flex-1`,children:o??h(`actions.save`)},void 0,!1,{fileName:F,lineNumber:123,columnNumber:9},this),a&&(0,P.jsxDEV)(r,{type:`button`,variant:`secondary`,size:`lg`,onClick:a,className:`flex-1`,children:h(`actions.cancel`)},void 0,!1,{fileName:F,lineNumber:127,columnNumber:11},this)]},void 0,!0,{fileName:F,lineNumber:122,columnNumber:7},this)]},void 0,!0,{fileName:F,lineNumber:116,columnNumber:5},this)}var L=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/form.tsx`;function R(e,t){let n={};n.name=t?.name==null?``:String(t.name);for(let[r,i]of T(e.fields))if(!i.virtual)if(t){let e=t[r];e==null?n[r]=i.prim!==`checkbox`&&``:i.prim===`checkbox`?n[r]=e===1||e===!0||e===`1`:w(i)?n[r]=e===``?``:c(e,i.hints.multiple===!0?[]:{}):n[r]=e}else n[r]=i.prim===`checkbox`?!1:w(i)&&i.hints.multiple===!0?[]:``;for(let r of e.fields){if(!S(r)||!C(r))continue;let e=r.key;t?n[e]=t[e]??(r.multiple?[]:{}):n[e]=r.multiple?[]:{}}return n}function z(e){let t={};for(let[n,r]of Object.entries(e))r===``||r===void 0||Array.isArray(r)&&r.length===0||typeof r==`object`&&r&&!Array.isArray(r)&&Object.keys(r).length===0||(t[n]=r);return t}function B({ext:e,values:t,onChange:r,recordId:a,fieldLabel:o}){let{t:s}=i();return(0,P.jsxDEV)(`fieldset`,{className:`border border-accent/30 rounded-xl p-4 pt-2 flex flex-col min-w-0 gap-4`,children:[(0,P.jsxDEV)(`legend`,{className:`px-2 inline-flex items-center gap-1.5 text-sm font-semibold text-accent`,children:[(0,P.jsxDEV)(n,{name:e.icon,size:14,className:`shrink-0`},void 0,!1,{fileName:L,lineNumber:114,columnNumber:9},this),` `,s(e.label),(0,P.jsxDEV)(u,{ext:e,fieldLabel:o},void 0,!1,{fileName:L,lineNumber:115,columnNumber:9},this)]},void 0,!0,{fileName:L,lineNumber:113,columnNumber:7},this),(0,P.jsxDEV)(g,{items:e.fields,ctx:{renderField:(n,i)=>E(i.hidden,t)?null:(0,P.jsxDEV)(l,{mode:`create`,field:i,label:i.label?s(i.label):void 0,required:E(i.required,t),value:t[n]??``,recordCtx:{library:``,shelf:e.id,recordId:a},onChange:t=>r(e.id,n,t)},void 0,!1,{fileName:L,lineNumber:100,columnNumber:9},this)}},void 0,!1,{fileName:L,lineNumber:117,columnNumber:7},this)]},void 0,!0,{fileName:L,lineNumber:112,columnNumber:5},this)}function V(e,t,n){let[r]=(0,N.useState)(()=>{let n={};for(let r of e){let e=t?._extends?.[r.id];n[r.id]={};for(let[t,i]of T(r.fields)){let a=e?.[t];a==null?n[r.id][t]=i.prim===`checkbox`?!1:w(i)&&i.hints.multiple===!0?[]:``:i.prim===`checkbox`?n[r.id][t]=a===1||a===!0||a===`1`:w(i)?n[r.id][t]=a===``?``:c(a,i.hints.multiple===!0?[]:{}):n[r.id][t]=a}}return n}),[i,a]=(0,N.useState)(r),o=(0,N.useMemo)(()=>e.filter(e=>D(e.showWhen,n)),[e,n]);function s(e,t,n){a(r=>({...r,[e]:{...r[e],[t]:n}}))}function l(e){let t={};for(let n of o){let a=i[n.id]??{};if(e){let e=r[n.id]??{},i=Object.fromEntries(Object.entries(a).filter(([t,n])=>n!==e[t]));Object.keys(i).length>0&&(t[`_extend_${n.id}`]=i)}else{let e=Object.fromEntries(Object.entries(a).filter(([,e])=>e!==``&&e!==!1));t[`_extend_${n.id}`]=e}}return t}return{extValues:i,setExtValue:s,activeExts:o,buildExtendPatch:l}}function H({shelf:e,record:t,defaults:n,hiddenFields:r,onSuccess:a,onCancel:o}){let{t:s}=i(),c=f(s),l=!!t,u=(0,N.useMemo)(()=>k(e.fields),[e]),[p,m]=(0,N.useState)([]),[h,g]=(0,N.useState)(!1),[_,v]=(0,N.useState)(()=>R(e,t)),b=(0,N.useRef)(null),{extValues:x,setExtValue:S,activeExts:C,buildExtendPatch:w}=V((0,N.useMemo)(()=>d().filter(t=>t.attachTo.some(t=>t.library===e.library&&(!t.shelf||t.shelf===e.shelf))),[e]),t,_);function T(e){return l||String(e.name??``).trim()?{}:{name:s(`validation.required`)}}async function E(n){m([]),g(!0);let r={...n,...w()},i=String(t?.id??``),o=l?await j(e.library,e.shelf,i,r):await M(e.library,e.shelf,r);if(g(!1),o.ok){a(o.row);return}let s=o.issues??[],d={},f=[];for(let e of s)e.field&&u[e.field]?d[e.field]=c(e.code,e.params):f.push(e);let p=y(s,c);(Object.keys(d).length||Object.keys(p).length)&&(b.current?.setErrors(e=>({...e,...d,...p})),b.current?.setTouched(e=>new Set([...e,...Object.keys(d)]))),m(f)}return(0,P.jsxDEV)(`div`,{children:(0,P.jsxDEV)(I,{shelf:e,record:t,onSubmit:E,onCancel:o,submitLabel:s(h?`common.saving`:l?`actions.save`:`actions.create`),busy:h,hiddenFields:r,onValuesChange:v,errorSink:e=>{b.current=e},extraValidate:T,children:[C.map(e=>(0,P.jsxDEV)(B,{ext:e,values:x[e.id]??{},onChange:S,recordId:t?String(t.id):null,fieldLabel:e=>u[e]?.label?s(u[e].label):e},e.id,!1,{fileName:L,lineNumber:318,columnNumber:11},this)),p.length>0&&(0,P.jsxDEV)(`div`,{className:`bg-danger/10 border border-danger/30 rounded-xl p-3.5 text-sm`,children:[(0,P.jsxDEV)(`p`,{className:`font-semibold text-danger mb-2`,children:s(`form.serverRejected`)},void 0,!1,{fileName:L,lineNumber:330,columnNumber:13},this),(0,P.jsxDEV)(`ul`,{className:`space-y-1 text-text/80`,children:p.map((e,t)=>{let n=u[e.field],r=n?s(n.label):e.field,i=e.code===`pattern`&&e.params?.messageKey?s(String(e.params.messageKey)):s(`validation.${e.code}`,e.params);return(0,P.jsxDEV)(`li`,{className:`flex gap-1.5`,children:[r&&(0,P.jsxDEV)(`span`,{className:`text-muted font-medium`,children:[r,`:`]},void 0,!0,{fileName:L,lineNumber:341,columnNumber:31},this),i]},t,!0,{fileName:L,lineNumber:340,columnNumber:19},this)})},void 0,!1,{fileName:L,lineNumber:331,columnNumber:13},this)]},void 0,!0,{fileName:L,lineNumber:329,columnNumber:11},this)]},`${e.library}/${e.shelf}/${t?t.id:`new`}`,!0,{fileName:L,lineNumber:301,columnNumber:7},this)},void 0,!1,{fileName:L,lineNumber:293,columnNumber:5},this)}var U=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/app/record/NewRecordView.tsx`;function W(){let{t:e}=i(),{library:t,type:n}=o(),s=a(),c=p().flatMap(e=>e.shelves).find(e=>e.library===t&&e.shelf===n);return!c||c.standalone===!1?(0,P.jsxDEV)(`div`,{className:`p-6 text-muted`,children:e(`common.notFound`)},void 0,!1,{fileName:U,lineNumber:19,columnNumber:44},this):(0,P.jsxDEV)(`div`,{className:`flex flex-col`,children:[(0,P.jsxDEV)(v,{children:(0,P.jsxDEV)(r,{variant:`ghost`,size:`sm`,className:`px-2`,onClick:()=>s(`/${t}/${n}`),children:[(0,P.jsxDEV)(b,{size:18},void 0,!1,{fileName:U,lineNumber:25,columnNumber:11},this),(0,P.jsxDEV)(`span`,{className:`text-sm`,children:e(c.label)},void 0,!1,{fileName:U,lineNumber:26,columnNumber:11},this)]},void 0,!0,{fileName:U,lineNumber:24,columnNumber:9},this)},void 0,!1,{fileName:U,lineNumber:23,columnNumber:7},this),(0,P.jsxDEV)(`div`,{className:`flex-1 min-w-0`,children:(0,P.jsxDEV)(`div`,{className:`max-w-2xl mx-auto px-6 py-6`,children:(0,P.jsxDEV)(h,{library:c.library,shelf:c.shelf,children:(0,P.jsxDEV)(H,{shelf:c,onSuccess:e=>{e?.id?s(`/${t}/${n}/${e.id}`):s(`/${t}/${n}`)},onCancel:()=>s(`/${t}/${n}`)},void 0,!1,{fileName:U,lineNumber:32,columnNumber:13},this)},void 0,!1,{fileName:U,lineNumber:31,columnNumber:11},this)},void 0,!1,{fileName:U,lineNumber:30,columnNumber:9},this)},void 0,!1,{fileName:U,lineNumber:29,columnNumber:7},this)]},void 0,!0,{fileName:U,lineNumber:22,columnNumber:5},this)}export{W as NewRecordView};
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-n93t21jb.js";import{i as n,t as r,w as i}from"./button-Dlm2GmQs.js";import{c as a,l as o}from"./chunk-KS7C4IRE-B1_Zk64s.js";import{t as s}from"./jsx-dev-runtime-CSfA-jUb.js";import{t as c}from"./json-2IEVhd4i.js";import{r as l,t as u}from"./ExtendReasonInfo-Cw042gEq.js";import{f as d,l as f,m as p,n as m,o as h,r as g,s as _,t as v,u as y,y as b}from"./Toolbar-C08bdOI6.js";import{S as x,f as S,g as C,m as w}from"./fields-B4fdbc1_.js";import{a as T,h as E,m as D,n as O,o as k,t as A}from"./shelf-e7xL1R3N.js";import{o as j,w as M}from"./api-V98HaFMa.js";var N=e(t(),1),P=s(),F=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/fields-form.tsx`;function I({shelf:e,record:t,onSubmit:n,onCancel:a,submitLabel:o,busy:s,children:c,hiddenFields:l,onValuesChange:u,errorSink:d,extraValidate:p}){let{t:h}=i(),v=f(h),y=!!t,b=(0,N.useMemo)(()=>k(e.fields),[e]),{values:S,errors:C,setErrors:w,setTouched:T,bridge:E}=m({fm:b,mode:y?`edit`:`create`,recordCtx:{library:e.library,shelf:e.shelf,recordId:t?String(t.id):null},initial:()=>R(e,t),hiddenFields:l}),[D,j]=(0,N.useState)(),[M,I]=(0,N.useState)(!1);(0,N.useEffect)(()=>{u?.(S)},[S,u]),(0,N.useEffect)(()=>{d?.({setErrors:w,setTouched:T})},[d,w,T]);async function L(t){t.preventDefault(),j(void 0);let r=Object.keys(b),i={};for(let e of r)e in S&&(i[e]=S[e]);let a=z(i),o=(y?O(e):A(e)).safeParse(a),s={};if(!o.success)for(let e of o.error.issues){let t=String(e.path[0]??``);if(!r.includes(t)||s[t])continue;let{code:n,params:i}=x(e.message);s[t]=v(n,i)}if(Object.assign(s,p?.(S)??{}),Object.keys(s).length){w(s),T(new Set(Object.keys(s)));return}I(!0);let c=await n(a);I(!1),c&&j(c)}return(0,P.jsxDEV)(`form`,{onSubmit:L,noValidate:!0,className:`flex flex-col gap-5 min-w-0`,children:[(0,P.jsxDEV)(_.Provider,{value:e=>C[e.join(`.`)],children:(0,P.jsxDEV)(g,{items:e.fields,ctx:{bridge:E}},void 0,!1,{fileName:F,lineNumber:118,columnNumber:9},this)},void 0,!1,{fileName:F,lineNumber:117,columnNumber:7},this),c,D&&(0,P.jsxDEV)(`p`,{className:`text-sm text-danger`,children:D},void 0,!1,{fileName:F,lineNumber:121,columnNumber:21},this),(0,P.jsxDEV)(`div`,{className:`flex gap-3 pt-2 border-t border-border`,children:[(0,P.jsxDEV)(r,{type:`submit`,disabled:s||M,size:`lg`,className:`flex-1`,children:o??h(`actions.save`)},void 0,!1,{fileName:F,lineNumber:123,columnNumber:9},this),a&&(0,P.jsxDEV)(r,{type:`button`,variant:`secondary`,size:`lg`,onClick:a,className:`flex-1`,children:h(`actions.cancel`)},void 0,!1,{fileName:F,lineNumber:127,columnNumber:11},this)]},void 0,!0,{fileName:F,lineNumber:122,columnNumber:7},this)]},void 0,!0,{fileName:F,lineNumber:116,columnNumber:5},this)}var L=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/form.tsx`;function R(e,t){let n={};n.name=t?.name==null?``:String(t.name);for(let[r,i]of T(e.fields))if(!i.virtual)if(t){let e=t[r];e==null?n[r]=i.prim!==`checkbox`&&``:i.prim===`checkbox`?n[r]=e===1||e===!0||e===`1`:w(i)?n[r]=e===``?``:c(e,i.hints.multiple===!0?[]:{}):n[r]=e}else n[r]=i.prim===`checkbox`?!1:w(i)&&i.hints.multiple===!0?[]:``;for(let r of e.fields){if(!S(r)||!C(r))continue;let e=r.key;t?n[e]=t[e]??(r.multiple?[]:{}):n[e]=r.multiple?[]:{}}return n}function z(e){let t={};for(let[n,r]of Object.entries(e))r===``||r===void 0||Array.isArray(r)&&r.length===0||typeof r==`object`&&r&&!Array.isArray(r)&&Object.keys(r).length===0||(t[n]=r);return t}function B({ext:e,values:t,onChange:r,recordId:a,fieldLabel:o}){let{t:s}=i();return(0,P.jsxDEV)(`fieldset`,{className:`border border-accent/30 rounded-xl p-4 pt-2 flex flex-col min-w-0 gap-4`,children:[(0,P.jsxDEV)(`legend`,{className:`px-2 inline-flex items-center gap-1.5 text-sm font-semibold text-accent`,children:[(0,P.jsxDEV)(n,{name:e.icon,size:14,className:`shrink-0`},void 0,!1,{fileName:L,lineNumber:114,columnNumber:9},this),` `,s(e.label),(0,P.jsxDEV)(u,{ext:e,fieldLabel:o},void 0,!1,{fileName:L,lineNumber:115,columnNumber:9},this)]},void 0,!0,{fileName:L,lineNumber:113,columnNumber:7},this),(0,P.jsxDEV)(g,{items:e.fields,ctx:{renderField:(n,i)=>E(i.hidden,t)?null:(0,P.jsxDEV)(l,{mode:`create`,field:i,label:i.label?s(i.label):void 0,required:E(i.required,t),value:t[n]??``,recordCtx:{library:``,shelf:e.id,recordId:a},onChange:t=>r(e.id,n,t)},void 0,!1,{fileName:L,lineNumber:100,columnNumber:9},this)}},void 0,!1,{fileName:L,lineNumber:117,columnNumber:7},this)]},void 0,!0,{fileName:L,lineNumber:112,columnNumber:5},this)}function V(e,t,n){let[r]=(0,N.useState)(()=>{let n={};for(let r of e){let e=t?._extends?.[r.id];n[r.id]={};for(let[t,i]of T(r.fields)){let a=e?.[t];a==null?n[r.id][t]=i.prim===`checkbox`?!1:w(i)&&i.hints.multiple===!0?[]:``:i.prim===`checkbox`?n[r.id][t]=a===1||a===!0||a===`1`:w(i)?n[r.id][t]=a===``?``:c(a,i.hints.multiple===!0?[]:{}):n[r.id][t]=a}}return n}),[i,a]=(0,N.useState)(r),o=(0,N.useMemo)(()=>e.filter(e=>D(e.showWhen,n)),[e,n]);function s(e,t,n){a(r=>({...r,[e]:{...r[e],[t]:n}}))}function l(e){let t={};for(let n of o){let a=i[n.id]??{};if(e){let e=r[n.id]??{},i=Object.fromEntries(Object.entries(a).filter(([t,n])=>n!==e[t]));Object.keys(i).length>0&&(t[`_extend_${n.id}`]=i)}else{let e=Object.fromEntries(Object.entries(a).filter(([,e])=>e!==``&&e!==!1));t[`_extend_${n.id}`]=e}}return t}return{extValues:i,setExtValue:s,activeExts:o,buildExtendPatch:l}}function H({shelf:e,record:t,defaults:n,hiddenFields:r,onSuccess:a,onCancel:o}){let{t:s}=i(),c=f(s),l=!!t,u=(0,N.useMemo)(()=>k(e.fields),[e]),[p,m]=(0,N.useState)([]),[h,g]=(0,N.useState)(!1),[_,v]=(0,N.useState)(()=>R(e,t)),b=(0,N.useRef)(null),{extValues:x,setExtValue:S,activeExts:C,buildExtendPatch:w}=V((0,N.useMemo)(()=>d().filter(t=>t.attachTo.some(t=>t.library===e.library&&(!t.shelf||t.shelf===e.shelf))),[e]),t,_);function T(e){return l||String(e.name??``).trim()?{}:{name:s(`validation.required`)}}async function E(n){m([]),g(!0);let r={...n,...w()},i=String(t?.id??``),o=l?await M(e.library,e.shelf,i,r):await j(e.library,e.shelf,r);if(g(!1),o.ok){a(o.row);return}let s=o.issues??[],d={},f=[];for(let e of s)e.field&&u[e.field]?d[e.field]=c(e.code,e.params):f.push(e);let p=y(s,c);(Object.keys(d).length||Object.keys(p).length)&&(b.current?.setErrors(e=>({...e,...d,...p})),b.current?.setTouched(e=>new Set([...e,...Object.keys(d)]))),m(f)}return(0,P.jsxDEV)(`div`,{children:(0,P.jsxDEV)(I,{shelf:e,record:t,onSubmit:E,onCancel:o,submitLabel:s(h?`common.saving`:l?`actions.save`:`actions.create`),busy:h,hiddenFields:r,onValuesChange:v,errorSink:e=>{b.current=e},extraValidate:T,children:[C.map(e=>(0,P.jsxDEV)(B,{ext:e,values:x[e.id]??{},onChange:S,recordId:t?String(t.id):null,fieldLabel:e=>u[e]?.label?s(u[e].label):e},e.id,!1,{fileName:L,lineNumber:318,columnNumber:11},this)),p.length>0&&(0,P.jsxDEV)(`div`,{className:`bg-danger/10 border border-danger/30 rounded-xl p-3.5 text-sm`,children:[(0,P.jsxDEV)(`p`,{className:`font-semibold text-danger mb-2`,children:s(`form.serverRejected`)},void 0,!1,{fileName:L,lineNumber:330,columnNumber:13},this),(0,P.jsxDEV)(`ul`,{className:`space-y-1 text-text/80`,children:p.map((e,t)=>{let n=u[e.field],r=n?s(n.label):e.field,i=e.code===`pattern`&&e.params?.messageKey?s(String(e.params.messageKey)):s(`validation.${e.code}`,e.params);return(0,P.jsxDEV)(`li`,{className:`flex gap-1.5`,children:[r&&(0,P.jsxDEV)(`span`,{className:`text-muted font-medium`,children:[r,`:`]},void 0,!0,{fileName:L,lineNumber:341,columnNumber:31},this),i]},t,!0,{fileName:L,lineNumber:340,columnNumber:19},this)})},void 0,!1,{fileName:L,lineNumber:331,columnNumber:13},this)]},void 0,!0,{fileName:L,lineNumber:329,columnNumber:11},this)]},`${e.library}/${e.shelf}/${t?t.id:`new`}`,!0,{fileName:L,lineNumber:301,columnNumber:7},this)},void 0,!1,{fileName:L,lineNumber:293,columnNumber:5},this)}var U=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/app/record/NewRecordView.tsx`;function W(){let{t:e}=i(),{library:t,type:n}=o(),s=a(),c=p().flatMap(e=>e.shelves).find(e=>e.library===t&&e.shelf===n);return!c||c.standalone===!1?(0,P.jsxDEV)(`div`,{className:`p-6 text-muted`,children:e(`common.notFound`)},void 0,!1,{fileName:U,lineNumber:19,columnNumber:44},this):(0,P.jsxDEV)(`div`,{className:`flex flex-col`,children:[(0,P.jsxDEV)(v,{children:(0,P.jsxDEV)(r,{variant:`ghost`,size:`sm`,className:`px-2`,onClick:()=>s(`/${t}/${n}`),children:[(0,P.jsxDEV)(b,{size:18},void 0,!1,{fileName:U,lineNumber:25,columnNumber:11},this),(0,P.jsxDEV)(`span`,{className:`text-sm`,children:e(c.label)},void 0,!1,{fileName:U,lineNumber:26,columnNumber:11},this)]},void 0,!0,{fileName:U,lineNumber:24,columnNumber:9},this)},void 0,!1,{fileName:U,lineNumber:23,columnNumber:7},this),(0,P.jsxDEV)(`div`,{className:`flex-1 min-w-0`,children:(0,P.jsxDEV)(`div`,{className:`max-w-2xl mx-auto px-6 py-6`,children:(0,P.jsxDEV)(h,{library:c.library,shelf:c.shelf,children:(0,P.jsxDEV)(H,{shelf:c,onSuccess:e=>{e?.id?s(`/${t}/${n}/${e.id}`):s(`/${t}/${n}`)},onCancel:()=>s(`/${t}/${n}`)},void 0,!1,{fileName:U,lineNumber:32,columnNumber:13},this)},void 0,!1,{fileName:U,lineNumber:31,columnNumber:11},this)},void 0,!1,{fileName:U,lineNumber:30,columnNumber:9},this)},void 0,!1,{fileName:U,lineNumber:29,columnNumber:7},this)]},void 0,!0,{fileName:U,lineNumber:22,columnNumber:5},this)}export{W as NewRecordView};
@@ -1 +1 @@
1
- import{w as e}from"./button-Dlm2GmQs.js";import{l as t}from"./chunk-KS7C4IRE-B1_Zk64s.js";import{t as n}from"./SettingsForm-D9kBgf6H.js";import{t as r}from"./jsx-dev-runtime-CSfA-jUb.js";import{g as i}from"./Toolbar-DFtG8IB3.js";import{t as a}from"./PageBody-CvuReTKD.js";var o=r(),s=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/app/PluginSettingsPage.tsx`;function c(){let{pluginId:r}=t(),{t:c}=e(),l=i().find(e=>e.id===r);if(!l||!l.settings||l.settings.fields.length===0)return(0,o.jsxDEV)(a,{children:(0,o.jsxDEV)(`p`,{className:`text-muted`,children:c(`common.notFound`)},void 0,!1,{fileName:s,lineNumber:17,columnNumber:9},this)},void 0,!1,{fileName:s,lineNumber:16,columnNumber:7},this);async function u(){let e=await fetch(`/api/plugins/${r}/settings`);return e.ok?e.json():{}}async function d(e){let t=await fetch(`/api/plugins/${r}/settings`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify(e)});return t.ok?{ok:!0,row:(await t.json()).row??{}}:t.status===422?{ok:!1,status:422,issues:(await t.json()).issues}:{ok:!1,status:t.status}}return(0,o.jsxDEV)(n,{fields:l.settings.fields,recordCtx:{library:``,shelf:r??``,recordId:`settings`},load:u,save:d,title:c(`${r}.plugin.label`,{defaultValue:r??``}),backTo:`/settings`,backLabel:c(`settings.title`)},void 0,!1,{fileName:s,lineNumber:45,columnNumber:5},this)}export{c as PluginSettingsPage};
1
+ import{w as e}from"./button-Dlm2GmQs.js";import{l as t}from"./chunk-KS7C4IRE-B1_Zk64s.js";import{t as n}from"./SettingsForm-YHNQLRBn.js";import{t as r}from"./jsx-dev-runtime-CSfA-jUb.js";import{g as i}from"./Toolbar-C08bdOI6.js";import{t as a}from"./PageBody-CvuReTKD.js";var o=r(),s=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/app/PluginSettingsPage.tsx`;function c(){let{pluginId:r}=t(),{t:c}=e(),l=i().find(e=>e.id===r);if(!l||!l.settings||l.settings.fields.length===0)return(0,o.jsxDEV)(a,{children:(0,o.jsxDEV)(`p`,{className:`text-muted`,children:c(`common.notFound`)},void 0,!1,{fileName:s,lineNumber:17,columnNumber:9},this)},void 0,!1,{fileName:s,lineNumber:16,columnNumber:7},this);async function u(){let e=await fetch(`/api/plugins/${r}/settings`);return e.ok?e.json():{}}async function d(e){let t=await fetch(`/api/plugins/${r}/settings`,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify(e)});return t.ok?{ok:!0,row:(await t.json()).row??{}}:t.status===422?{ok:!1,status:422,issues:(await t.json()).issues}:{ok:!1,status:t.status}}return(0,o.jsxDEV)(n,{fields:l.settings.fields,recordCtx:{library:``,shelf:r??``,recordId:`settings`},load:u,save:d,title:c(`${r}.plugin.label`,{defaultValue:r??``}),backTo:`/settings`,backLabel:c(`settings.title`)},void 0,!1,{fileName:s,lineNumber:45,columnNumber:5},this)}export{c as PluginSettingsPage};
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-n93t21jb.js";import{O as n,t as r,v as i,w as a}from"./button-Dlm2GmQs.js";import{n as o}from"./chunk-KS7C4IRE-B1_Zk64s.js";import{t as s}from"./jsx-dev-runtime-CSfA-jUb.js";import{n as c,r as l,t as u,y as d}from"./Toolbar-DFtG8IB3.js";import{a as f,o as p}from"./shelf-iRNXQLvo.js";import{t as ee}from"./PageBody-CvuReTKD.js";var m=e(t(),1),h=e(n(),1);function g(e){if(!e||typeof document>`u`)return;let t=document.head||document.getElementsByTagName(`head`)[0],n=document.createElement(`style`);n.type=`text/css`,t.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}var _=e=>{switch(e){case`success`:return b;case`info`:return S;case`warning`:return x;case`error`:return C;default:return null}},v=Array(12).fill(0),y=({visible:e,className:t})=>m.createElement(`div`,{className:[`sonner-loading-wrapper`,t].filter(Boolean).join(` `),"data-visible":e},m.createElement(`div`,{className:`sonner-spinner`},v.map((e,t)=>m.createElement(`div`,{className:`sonner-loading-bar`,key:`spinner-bar-${t}`})))),b=m.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`},m.createElement(`path`,{fillRule:`evenodd`,d:`M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z`,clipRule:`evenodd`})),x=m.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,fill:`currentColor`,height:`20`,width:`20`},m.createElement(`path`,{fillRule:`evenodd`,d:`M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z`,clipRule:`evenodd`})),S=m.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`},m.createElement(`path`,{fillRule:`evenodd`,d:`M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z`,clipRule:`evenodd`})),C=m.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`},m.createElement(`path`,{fillRule:`evenodd`,d:`M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z`,clipRule:`evenodd`})),w=m.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.5`,strokeLinecap:`round`,strokeLinejoin:`round`},m.createElement(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),m.createElement(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})),te=()=>{let[e,t]=m.useState(document.hidden);return m.useEffect(()=>{let e=()=>{t(document.hidden)};return document.addEventListener(`visibilitychange`,e),()=>window.removeEventListener(`visibilitychange`,e)},[]),e},T=1,E=new class{constructor(){this.subscribe=e=>(this.subscribers.push(e),()=>{let t=this.subscribers.indexOf(e);this.subscribers.splice(t,1)}),this.publish=e=>{this.subscribers.forEach(t=>t(e))},this.addToast=e=>{this.publish(e),this.toasts=[...this.toasts,e]},this.create=e=>{let{message:t,...n}=e,r=typeof e?.id==`number`||e.id?.length>0?e.id:T++,i=this.toasts.find(e=>e.id===r),a=e.dismissible===void 0||e.dismissible;return this.dismissedToasts.has(r)&&this.dismissedToasts.delete(r),i?this.toasts=this.toasts.map(n=>n.id===r?(this.publish({...n,...e,id:r,title:t}),{...n,...e,id:r,dismissible:a,title:t}):n):this.addToast({title:t,...n,dismissible:a,id:r}),r},this.dismiss=e=>(e?(this.dismissedToasts.add(e),requestAnimationFrame(()=>this.subscribers.forEach(t=>t({id:e,dismiss:!0})))):this.toasts.forEach(e=>{this.subscribers.forEach(t=>t({id:e.id,dismiss:!0}))}),e),this.message=(e,t)=>this.create({...t,message:e}),this.error=(e,t)=>this.create({...t,message:e,type:`error`}),this.success=(e,t)=>this.create({...t,type:`success`,message:e}),this.info=(e,t)=>this.create({...t,type:`info`,message:e}),this.warning=(e,t)=>this.create({...t,type:`warning`,message:e}),this.loading=(e,t)=>this.create({...t,type:`loading`,message:e}),this.promise=(e,t)=>{if(!t)return;let n;t.loading!==void 0&&(n=this.create({...t,promise:e,type:`loading`,message:t.loading,description:typeof t.description==`function`?void 0:t.description}));let r=Promise.resolve(e instanceof Function?e():e),i=n!==void 0,a,o=r.then(async e=>{if(a=[`resolve`,e],m.isValidElement(e))i=!1,this.create({id:n,type:`default`,message:e});else if(O(e)&&!e.ok){i=!1;let r=typeof t.error==`function`?await t.error(`HTTP error! status: ${e.status}`):t.error,a=typeof t.description==`function`?await t.description(`HTTP error! status: ${e.status}`):t.description,o=typeof r==`object`&&!m.isValidElement(r)?r:{message:r};this.create({id:n,type:`error`,description:a,...o})}else if(e instanceof Error){i=!1;let r=typeof t.error==`function`?await t.error(e):t.error,a=typeof t.description==`function`?await t.description(e):t.description,o=typeof r==`object`&&!m.isValidElement(r)?r:{message:r};this.create({id:n,type:`error`,description:a,...o})}else if(t.success!==void 0){i=!1;let r=typeof t.success==`function`?await t.success(e):t.success,a=typeof t.description==`function`?await t.description(e):t.description,o=typeof r==`object`&&!m.isValidElement(r)?r:{message:r};this.create({id:n,type:`success`,description:a,...o})}}).catch(async e=>{if(a=[`reject`,e],t.error!==void 0){i=!1;let r=typeof t.error==`function`?await t.error(e):t.error,a=typeof t.description==`function`?await t.description(e):t.description,o=typeof r==`object`&&!m.isValidElement(r)?r:{message:r};this.create({id:n,type:`error`,description:a,...o})}}).finally(()=>{i&&(this.dismiss(n),n=void 0),t.finally==null||t.finally.call(t)}),s=()=>new Promise((e,t)=>o.then(()=>a[0]===`reject`?t(a[1]):e(a[1])).catch(t));return typeof n!=`string`&&typeof n!=`number`?{unwrap:s}:Object.assign(n,{unwrap:s})},this.custom=(e,t)=>{let n=t?.id||T++;return this.create({jsx:e(n),id:n,...t}),n},this.getActiveToasts=()=>this.toasts.filter(e=>!this.dismissedToasts.has(e.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}},D=(e,t)=>{let n=t?.id||T++;return E.addToast({title:e,...t,id:n}),n},O=e=>e&&typeof e==`object`&&`ok`in e&&typeof e.ok==`boolean`&&`status`in e&&typeof e.status==`number`,k=Object.assign(D,{success:E.success,info:E.info,warning:E.warning,error:E.error,custom:E.custom,message:E.message,promise:E.promise,dismiss:E.dismiss,loading:E.loading},{getHistory:()=>E.toasts,getToasts:()=>E.getActiveToasts()});g(`[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}`);function A(e){return e.label!==void 0}var j=3,M=`24px`,N=`16px`,P=4e3,F=356,ne=14,I=45,re=200;function L(...e){return e.filter(Boolean).join(` `)}function R(e){let[t,n]=e.split(`-`),r=[];return t&&r.push(t),n&&r.push(n),r}var z=e=>{let{invert:t,toast:n,unstyled:r,interacting:i,setHeights:a,visibleToasts:o,heights:s,index:c,toasts:l,expanded:u,removeToast:d,defaultRichColors:f,closeButton:p,style:ee,cancelButtonStyle:h,actionButtonStyle:g,className:v=``,descriptionClassName:b=``,duration:x,position:S,gap:C,expandByDefault:T,classNames:E,icons:D,closeButtonAriaLabel:O=`Close toast`}=e,[k,j]=m.useState(null),[M,N]=m.useState(null),[F,ne]=m.useState(!1),[z,B]=m.useState(!1),[ie,V]=m.useState(!1),[H,U]=m.useState(!1),[ae,oe]=m.useState(!1),[se,W]=m.useState(0),[ce,le]=m.useState(0),G=m.useRef(n.duration||x||P),ue=m.useRef(null),K=m.useRef(null),de=c===0,fe=c+1<=o,q=n.type,J=n.dismissible!==!1,pe=n.className||``,me=n.descriptionClassName||``,Y=m.useMemo(()=>s.findIndex(e=>e.toastId===n.id)||0,[s,n.id]),he=m.useMemo(()=>n.closeButton??p,[n.closeButton,p]),ge=m.useMemo(()=>n.duration||x||P,[n.duration,x]),X=m.useRef(0),Z=m.useRef(0),_e=m.useRef(0),Q=m.useRef(null),[ve,ye]=S.split(`-`),be=m.useMemo(()=>s.reduce((e,t,n)=>n>=Y?e:e+t.height,0),[s,Y]),xe=te(),Se=n.invert||t,Ce=q===`loading`;Z.current=m.useMemo(()=>Y*C+be,[Y,be]),m.useEffect(()=>{G.current=ge},[ge]),m.useEffect(()=>{ne(!0)},[]),m.useEffect(()=>{let e=K.current;if(e){let t=e.getBoundingClientRect().height;return le(t),a(e=>[{toastId:n.id,height:t,position:n.position},...e]),()=>a(e=>e.filter(e=>e.toastId!==n.id))}},[a,n.id]),m.useLayoutEffect(()=>{if(!F)return;let e=K.current,t=e.style.height;e.style.height=`auto`;let r=e.getBoundingClientRect().height;e.style.height=t,le(r),a(e=>e.find(e=>e.toastId===n.id)?e.map(e=>e.toastId===n.id?{...e,height:r}:e):[{toastId:n.id,height:r,position:n.position},...e])},[F,n.title,n.description,a,n.id,n.jsx,n.action,n.cancel]);let $=m.useCallback(()=>{B(!0),W(Z.current),a(e=>e.filter(e=>e.toastId!==n.id)),setTimeout(()=>{d(n)},re)},[n,d,a,Z]);m.useEffect(()=>{if(n.promise&&q===`loading`||n.duration===1/0||n.type===`loading`)return;let e;return u||i||xe?(()=>{if(_e.current<X.current){let e=new Date().getTime()-X.current;G.current-=e}_e.current=new Date().getTime()})():G.current!==1/0&&(X.current=new Date().getTime(),e=setTimeout(()=>{n.onAutoClose==null||n.onAutoClose.call(n,n),$()},G.current)),()=>clearTimeout(e)},[u,i,n,q,xe,$]),m.useEffect(()=>{n.delete&&($(),n.onDismiss==null||n.onDismiss.call(n,n))},[$,n.delete]);function we(){return D?.loading?m.createElement(`div`,{className:L(E?.loader,n?.classNames?.loader,`sonner-loader`),"data-visible":q===`loading`},D.loading):m.createElement(y,{className:L(E?.loader,n?.classNames?.loader),visible:q===`loading`})}let Te=n.icon||D?.[q]||_(q);return m.createElement(`li`,{tabIndex:0,ref:K,className:L(v,pe,E?.toast,n?.classNames?.toast,E?.default,E?.[q],n?.classNames?.[q]),"data-sonner-toast":``,"data-rich-colors":n.richColors??f,"data-styled":!(n.jsx||n.unstyled||r),"data-mounted":F,"data-promise":!!n.promise,"data-swiped":ae,"data-removed":z,"data-visible":fe,"data-y-position":ve,"data-x-position":ye,"data-index":c,"data-front":de,"data-swiping":ie,"data-dismissible":J,"data-type":q,"data-invert":Se,"data-swipe-out":H,"data-swipe-direction":M,"data-expanded":!!(u||T&&F),"data-testid":n.testId,style:{"--index":c,"--toasts-before":c,"--z-index":l.length-c,"--offset":`${z?se:Z.current}px`,"--initial-height":T?`auto`:`${ce}px`,...ee,...n.style},onDragEnd:()=>{V(!1),j(null),Q.current=null},onPointerDown:e=>{e.button!==2&&(Ce||!J||(ue.current=new Date,W(Z.current),e.target.setPointerCapture(e.pointerId),e.target.tagName!==`BUTTON`&&(V(!0),Q.current={x:e.clientX,y:e.clientY})))},onPointerUp:()=>{if(H||!J)return;Q.current=null;let e=Number(K.current?.style.getPropertyValue(`--swipe-amount-x`).replace(`px`,``)||0),t=Number(K.current?.style.getPropertyValue(`--swipe-amount-y`).replace(`px`,``)||0),r=new Date().getTime()-ue.current?.getTime(),i=k===`x`?e:t,a=Math.abs(i)/r;if(Math.abs(i)>=I||a>.11){W(Z.current),n.onDismiss==null||n.onDismiss.call(n,n),N(k===`x`?e>0?`right`:`left`:t>0?`down`:`up`),$(),U(!0);return}else{var o,s;(o=K.current)==null||o.style.setProperty(`--swipe-amount-x`,`0px`),(s=K.current)==null||s.style.setProperty(`--swipe-amount-y`,`0px`)}oe(!1),V(!1),j(null)},onPointerMove:t=>{var n,r;if(!Q.current||!J||window.getSelection()?.toString().length>0)return;let i=t.clientY-Q.current.y,a=t.clientX-Q.current.x,o=e.swipeDirections??R(S);!k&&(Math.abs(a)>1||Math.abs(i)>1)&&j(Math.abs(a)>Math.abs(i)?`x`:`y`);let s={x:0,y:0},c=e=>1/(1.5+Math.abs(e)/20);if(k===`y`){if(o.includes(`top`)||o.includes(`bottom`))if(o.includes(`top`)&&i<0||o.includes(`bottom`)&&i>0)s.y=i;else{let e=i*c(i);s.y=Math.abs(e)<Math.abs(i)?e:i}}else if(k===`x`&&(o.includes(`left`)||o.includes(`right`)))if(o.includes(`left`)&&a<0||o.includes(`right`)&&a>0)s.x=a;else{let e=a*c(a);s.x=Math.abs(e)<Math.abs(a)?e:a}(Math.abs(s.x)>0||Math.abs(s.y)>0)&&oe(!0),(n=K.current)==null||n.style.setProperty(`--swipe-amount-x`,`${s.x}px`),(r=K.current)==null||r.style.setProperty(`--swipe-amount-y`,`${s.y}px`)}},he&&!n.jsx&&q!==`loading`?m.createElement(`button`,{"aria-label":O,"data-disabled":Ce,"data-close-button":!0,onClick:Ce||!J?()=>{}:()=>{$(),n.onDismiss==null||n.onDismiss.call(n,n)},className:L(E?.closeButton,n?.classNames?.closeButton)},D?.close??w):null,(q||n.icon||n.promise)&&n.icon!==null&&(D?.[q]!==null||n.icon)?m.createElement(`div`,{"data-icon":``,className:L(E?.icon,n?.classNames?.icon)},n.promise||n.type===`loading`&&!n.icon?n.icon||we():null,n.type===`loading`?null:Te):null,m.createElement(`div`,{"data-content":``,className:L(E?.content,n?.classNames?.content)},m.createElement(`div`,{"data-title":``,className:L(E?.title,n?.classNames?.title)},n.jsx?n.jsx:typeof n.title==`function`?n.title():n.title),n.description?m.createElement(`div`,{"data-description":``,className:L(b,me,E?.description,n?.classNames?.description)},typeof n.description==`function`?n.description():n.description):null),m.isValidElement(n.cancel)?n.cancel:n.cancel&&A(n.cancel)?m.createElement(`button`,{"data-button":!0,"data-cancel":!0,style:n.cancelButtonStyle||h,onClick:e=>{A(n.cancel)&&J&&(n.cancel.onClick==null||n.cancel.onClick.call(n.cancel,e),$())},className:L(E?.cancelButton,n?.classNames?.cancelButton)},n.cancel.label):null,m.isValidElement(n.action)?n.action:n.action&&A(n.action)?m.createElement(`button`,{"data-button":!0,"data-action":!0,style:n.actionButtonStyle||g,onClick:e=>{A(n.action)&&(n.action.onClick==null||n.action.onClick.call(n.action,e),!e.defaultPrevented&&$())},className:L(E?.actionButton,n?.classNames?.actionButton)},n.action.label):null)};function B(){if(typeof window>`u`||typeof document>`u`)return`ltr`;let e=document.documentElement.getAttribute(`dir`);return e===`auto`||!e?window.getComputedStyle(document.documentElement).direction:e}function ie(e,t){let n={};return[e,t].forEach((e,t)=>{let r=t===1,i=r?`--mobile-offset`:`--offset`,a=r?N:M;function o(e){[`top`,`right`,`bottom`,`left`].forEach(t=>{n[`${i}-${t}`]=typeof e==`number`?`${e}px`:e})}typeof e==`number`||typeof e==`string`?o(e):typeof e==`object`?[`top`,`right`,`bottom`,`left`].forEach(t=>{e[t]===void 0?n[`${i}-${t}`]=a:n[`${i}-${t}`]=typeof e[t]==`number`?`${e[t]}px`:e[t]}):o(a)}),n}var V=m.forwardRef(function(e,t){let{id:n,invert:r,position:i=`bottom-right`,hotkey:a=[`altKey`,`KeyT`],expand:o,closeButton:s,className:c,offset:l,mobileOffset:u,theme:d=`light`,richColors:f,duration:p,style:ee,visibleToasts:g=j,toastOptions:_,dir:v=B(),gap:y=ne,icons:b,containerAriaLabel:x=`Notifications`}=e,[S,C]=m.useState([]),w=m.useMemo(()=>n?S.filter(e=>e.toasterId===n):S.filter(e=>!e.toasterId),[S,n]),te=m.useMemo(()=>Array.from(new Set([i].concat(w.filter(e=>e.position).map(e=>e.position)))),[w,i]),[T,D]=m.useState([]),[O,k]=m.useState(!1),[A,M]=m.useState(!1),[N,P]=m.useState(d===`system`?typeof window<`u`&&window.matchMedia&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`:d),I=m.useRef(null),re=a.join(`+`).replace(/Key/g,``).replace(/Digit/g,``),L=m.useRef(null),R=m.useRef(!1),V=m.useCallback(e=>{C(t=>(t.find(t=>t.id===e.id)?.delete||E.dismiss(e.id),t.filter(({id:t})=>t!==e.id)))},[]);return m.useEffect(()=>E.subscribe(e=>{if(e.dismiss){requestAnimationFrame(()=>{C(t=>t.map(t=>t.id===e.id?{...t,delete:!0}:t))});return}setTimeout(()=>{h.flushSync(()=>{C(t=>{let n=t.findIndex(t=>t.id===e.id);return n===-1?[e,...t]:[...t.slice(0,n),{...t[n],...e},...t.slice(n+1)]})})})}),[S]),m.useEffect(()=>{if(d!==`system`){P(d);return}if(d===`system`&&(window.matchMedia&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?P(`dark`):P(`light`)),typeof window>`u`)return;let e=window.matchMedia(`(prefers-color-scheme: dark)`);try{e.addEventListener(`change`,({matches:e})=>{P(e?`dark`:`light`)})}catch{e.addListener(({matches:e})=>{try{P(e?`dark`:`light`)}catch(e){console.error(e)}})}},[d]),m.useEffect(()=>{S.length<=1&&k(!1)},[S]),m.useEffect(()=>{let e=e=>{if(a.every(t=>e[t]||e.code===t)){var t;k(!0),(t=I.current)==null||t.focus()}e.code===`Escape`&&(document.activeElement===I.current||I.current?.contains(document.activeElement))&&k(!1)};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[a]),m.useEffect(()=>{if(I.current)return()=>{L.current&&(L.current.focus({preventScroll:!0}),L.current=null,R.current=!1)}},[I.current]),m.createElement(`section`,{ref:t,"aria-label":`${x} ${re}`,tabIndex:-1,"aria-live":`polite`,"aria-relevant":`additions text`,"aria-atomic":`false`,suppressHydrationWarning:!0},te.map((t,n)=>{let[i,a]=t.split(`-`);return w.length?m.createElement(`ol`,{key:t,dir:v===`auto`?B():v,tabIndex:-1,ref:I,className:c,"data-sonner-toaster":!0,"data-sonner-theme":N,"data-y-position":i,"data-x-position":a,style:{"--front-toast-height":`${T[0]?.height||0}px`,"--width":`${F}px`,"--gap":`${y}px`,...ee,...ie(l,u)},onBlur:e=>{R.current&&!e.currentTarget.contains(e.relatedTarget)&&(R.current=!1,L.current&&=(L.current.focus({preventScroll:!0}),null))},onFocus:e=>{e.target instanceof HTMLElement&&e.target.dataset.dismissible===`false`||R.current||(R.current=!0,L.current=e.relatedTarget)},onMouseEnter:()=>k(!0),onMouseMove:()=>k(!0),onMouseLeave:()=>{A||k(!1)},onDragEnd:()=>k(!1),onPointerDown:e=>{e.target instanceof HTMLElement&&e.target.dataset.dismissible===`false`||M(!0)},onPointerUp:()=>M(!1)},w.filter(e=>!e.position&&n===0||e.position===t).map((n,i)=>m.createElement(z,{key:n.id,icons:b,index:i,toast:n,defaultRichColors:f,duration:_?.duration??p,className:_?.className,descriptionClassName:_?.descriptionClassName,invert:r,visibleToasts:g,closeButton:_?.closeButton??s,interacting:A,position:t,style:_?.style,unstyled:_?.unstyled,classNames:_?.classNames,cancelButtonStyle:_?.cancelButtonStyle,actionButtonStyle:_?.actionButtonStyle,closeButtonAriaLabel:_?.closeButtonAriaLabel,removeToast:V,toasts:w.filter(e=>e.position==n.position),heights:T.filter(e=>e.position==n.position),setHeights:D,expandByDefault:o,gap:y,expanded:O,swipeDirections:e.swipeDirections}))):null}))}),H=s(),U=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/app/SettingsForm.tsx`;function ae(e){let{t}=a(),n=(0,m.useMemo)(()=>f(e.fields),[e.fields]),s=(0,m.useMemo)(()=>p(e.fields),[e.fields]),[h,g]=(0,m.useState)(!1),[_,v]=(0,m.useState)(null),{values:y,setValues:b,errors:x,setErrors:S,bridge:C}=c({fm:s,mode:`edit`,recordCtx:e.recordCtx,initial:{}});function w(e){let t={};for(let[r,i]of n)t[r]=e[r]??i.default??(i.prim!==`checkbox`&&``);return t}(0,m.useEffect)(()=>{b({}),S({});let n=!0;return e.load().then(e=>n&&b(w(e))).catch(()=>n&&v(t(`common.loadError`,{defaultValue:`Помилка завантаження`}))),()=>{n=!1}},[`${e.recordCtx.library}/${e.recordCtx.shelf}/${e.recordCtx.recordId}`]);async function te(){g(!0),S({});let n=k.loading(t(`save.saving`)),r=await e.save(y);if(g(!1),r.ok){b(w(r.row)),k.success(t(`save.done`),{id:n});return}if(r.status===422&&r.issues){let e={};for(let n of r.issues)n.field&&(e[n.field]=t(`validation.${n.code}`,n.params));S(e)}k.error(t(`save.failed`),{id:n})}return(0,H.jsxDEV)(`div`,{className:`flex flex-col h-full`,children:[(0,H.jsxDEV)(u,{actions:(0,H.jsxDEV)(r,{onClick:te,disabled:h,children:[(0,H.jsxDEV)(i,{size:16},void 0,!1,{fileName:U,lineNumber:101,columnNumber:13},this),(0,H.jsxDEV)(`span`,{className:`hidden sm:inline`,children:t(`actions.save`)},void 0,!1,{fileName:U,lineNumber:102,columnNumber:13},this)]},void 0,!0,{fileName:U,lineNumber:100,columnNumber:11},this),children:(0,H.jsxDEV)(r,{variant:`ghost`,size:`sm`,className:`px-2`,asChild:!0,children:(0,H.jsxDEV)(o,{to:e.backTo,"aria-label":e.backLabel,children:[(0,H.jsxDEV)(d,{size:18},void 0,!1,{fileName:U,lineNumber:108,columnNumber:13},this),(0,H.jsxDEV)(`span`,{className:`text-sm`,children:e.backLabel},void 0,!1,{fileName:U,lineNumber:109,columnNumber:13},this)]},void 0,!0,{fileName:U,lineNumber:107,columnNumber:11},this)},void 0,!1,{fileName:U,lineNumber:106,columnNumber:9},this)},void 0,!1,{fileName:U,lineNumber:98,columnNumber:7},this),(0,H.jsxDEV)(ee,{children:[(0,H.jsxDEV)(`h1`,{className:`mb-6 text-[28px] font-bold text-text`,children:e.title},void 0,!1,{fileName:U,lineNumber:115,columnNumber:9},this),_&&(0,H.jsxDEV)(`div`,{className:`mb-5 rounded-xl border border-danger/40 bg-danger/10 px-4 py-3 text-sm text-danger`,children:_},void 0,!1,{fileName:U,lineNumber:118,columnNumber:11},this),(0,H.jsxDEV)(`div`,{className:`flex flex-col gap-5`,children:(0,H.jsxDEV)(l,{items:e.fields,ctx:{bridge:C}},void 0,!1,{fileName:U,lineNumber:122,columnNumber:11},this)},void 0,!1,{fileName:U,lineNumber:121,columnNumber:9},this)]},void 0,!0,{fileName:U,lineNumber:114,columnNumber:7},this)]},void 0,!0,{fileName:U,lineNumber:97,columnNumber:5},this)}export{V as n,k as r,ae as t};
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-n93t21jb.js";import{O as n,t as r,v as i,w as a}from"./button-Dlm2GmQs.js";import{n as o}from"./chunk-KS7C4IRE-B1_Zk64s.js";import{t as s}from"./jsx-dev-runtime-CSfA-jUb.js";import{n as c,r as l,t as u,y as d}from"./Toolbar-C08bdOI6.js";import{a as f,o as p}from"./shelf-e7xL1R3N.js";import{t as ee}from"./PageBody-CvuReTKD.js";var m=e(t(),1),h=e(n(),1);function g(e){if(!e||typeof document>`u`)return;let t=document.head||document.getElementsByTagName(`head`)[0],n=document.createElement(`style`);n.type=`text/css`,t.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}var _=e=>{switch(e){case`success`:return b;case`info`:return S;case`warning`:return x;case`error`:return C;default:return null}},v=Array(12).fill(0),y=({visible:e,className:t})=>m.createElement(`div`,{className:[`sonner-loading-wrapper`,t].filter(Boolean).join(` `),"data-visible":e},m.createElement(`div`,{className:`sonner-spinner`},v.map((e,t)=>m.createElement(`div`,{className:`sonner-loading-bar`,key:`spinner-bar-${t}`})))),b=m.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`},m.createElement(`path`,{fillRule:`evenodd`,d:`M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z`,clipRule:`evenodd`})),x=m.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,fill:`currentColor`,height:`20`,width:`20`},m.createElement(`path`,{fillRule:`evenodd`,d:`M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z`,clipRule:`evenodd`})),S=m.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`},m.createElement(`path`,{fillRule:`evenodd`,d:`M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z`,clipRule:`evenodd`})),C=m.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`},m.createElement(`path`,{fillRule:`evenodd`,d:`M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z`,clipRule:`evenodd`})),w=m.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.5`,strokeLinecap:`round`,strokeLinejoin:`round`},m.createElement(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),m.createElement(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})),te=()=>{let[e,t]=m.useState(document.hidden);return m.useEffect(()=>{let e=()=>{t(document.hidden)};return document.addEventListener(`visibilitychange`,e),()=>window.removeEventListener(`visibilitychange`,e)},[]),e},T=1,E=new class{constructor(){this.subscribe=e=>(this.subscribers.push(e),()=>{let t=this.subscribers.indexOf(e);this.subscribers.splice(t,1)}),this.publish=e=>{this.subscribers.forEach(t=>t(e))},this.addToast=e=>{this.publish(e),this.toasts=[...this.toasts,e]},this.create=e=>{let{message:t,...n}=e,r=typeof e?.id==`number`||e.id?.length>0?e.id:T++,i=this.toasts.find(e=>e.id===r),a=e.dismissible===void 0||e.dismissible;return this.dismissedToasts.has(r)&&this.dismissedToasts.delete(r),i?this.toasts=this.toasts.map(n=>n.id===r?(this.publish({...n,...e,id:r,title:t}),{...n,...e,id:r,dismissible:a,title:t}):n):this.addToast({title:t,...n,dismissible:a,id:r}),r},this.dismiss=e=>(e?(this.dismissedToasts.add(e),requestAnimationFrame(()=>this.subscribers.forEach(t=>t({id:e,dismiss:!0})))):this.toasts.forEach(e=>{this.subscribers.forEach(t=>t({id:e.id,dismiss:!0}))}),e),this.message=(e,t)=>this.create({...t,message:e}),this.error=(e,t)=>this.create({...t,message:e,type:`error`}),this.success=(e,t)=>this.create({...t,type:`success`,message:e}),this.info=(e,t)=>this.create({...t,type:`info`,message:e}),this.warning=(e,t)=>this.create({...t,type:`warning`,message:e}),this.loading=(e,t)=>this.create({...t,type:`loading`,message:e}),this.promise=(e,t)=>{if(!t)return;let n;t.loading!==void 0&&(n=this.create({...t,promise:e,type:`loading`,message:t.loading,description:typeof t.description==`function`?void 0:t.description}));let r=Promise.resolve(e instanceof Function?e():e),i=n!==void 0,a,o=r.then(async e=>{if(a=[`resolve`,e],m.isValidElement(e))i=!1,this.create({id:n,type:`default`,message:e});else if(O(e)&&!e.ok){i=!1;let r=typeof t.error==`function`?await t.error(`HTTP error! status: ${e.status}`):t.error,a=typeof t.description==`function`?await t.description(`HTTP error! status: ${e.status}`):t.description,o=typeof r==`object`&&!m.isValidElement(r)?r:{message:r};this.create({id:n,type:`error`,description:a,...o})}else if(e instanceof Error){i=!1;let r=typeof t.error==`function`?await t.error(e):t.error,a=typeof t.description==`function`?await t.description(e):t.description,o=typeof r==`object`&&!m.isValidElement(r)?r:{message:r};this.create({id:n,type:`error`,description:a,...o})}else if(t.success!==void 0){i=!1;let r=typeof t.success==`function`?await t.success(e):t.success,a=typeof t.description==`function`?await t.description(e):t.description,o=typeof r==`object`&&!m.isValidElement(r)?r:{message:r};this.create({id:n,type:`success`,description:a,...o})}}).catch(async e=>{if(a=[`reject`,e],t.error!==void 0){i=!1;let r=typeof t.error==`function`?await t.error(e):t.error,a=typeof t.description==`function`?await t.description(e):t.description,o=typeof r==`object`&&!m.isValidElement(r)?r:{message:r};this.create({id:n,type:`error`,description:a,...o})}}).finally(()=>{i&&(this.dismiss(n),n=void 0),t.finally==null||t.finally.call(t)}),s=()=>new Promise((e,t)=>o.then(()=>a[0]===`reject`?t(a[1]):e(a[1])).catch(t));return typeof n!=`string`&&typeof n!=`number`?{unwrap:s}:Object.assign(n,{unwrap:s})},this.custom=(e,t)=>{let n=t?.id||T++;return this.create({jsx:e(n),id:n,...t}),n},this.getActiveToasts=()=>this.toasts.filter(e=>!this.dismissedToasts.has(e.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}},D=(e,t)=>{let n=t?.id||T++;return E.addToast({title:e,...t,id:n}),n},O=e=>e&&typeof e==`object`&&`ok`in e&&typeof e.ok==`boolean`&&`status`in e&&typeof e.status==`number`,k=Object.assign(D,{success:E.success,info:E.info,warning:E.warning,error:E.error,custom:E.custom,message:E.message,promise:E.promise,dismiss:E.dismiss,loading:E.loading},{getHistory:()=>E.toasts,getToasts:()=>E.getActiveToasts()});g(`[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}`);function A(e){return e.label!==void 0}var j=3,M=`24px`,N=`16px`,P=4e3,F=356,ne=14,I=45,re=200;function L(...e){return e.filter(Boolean).join(` `)}function R(e){let[t,n]=e.split(`-`),r=[];return t&&r.push(t),n&&r.push(n),r}var z=e=>{let{invert:t,toast:n,unstyled:r,interacting:i,setHeights:a,visibleToasts:o,heights:s,index:c,toasts:l,expanded:u,removeToast:d,defaultRichColors:f,closeButton:p,style:ee,cancelButtonStyle:h,actionButtonStyle:g,className:v=``,descriptionClassName:b=``,duration:x,position:S,gap:C,expandByDefault:T,classNames:E,icons:D,closeButtonAriaLabel:O=`Close toast`}=e,[k,j]=m.useState(null),[M,N]=m.useState(null),[F,ne]=m.useState(!1),[z,B]=m.useState(!1),[ie,V]=m.useState(!1),[H,U]=m.useState(!1),[ae,oe]=m.useState(!1),[se,W]=m.useState(0),[ce,le]=m.useState(0),G=m.useRef(n.duration||x||P),ue=m.useRef(null),K=m.useRef(null),de=c===0,fe=c+1<=o,q=n.type,J=n.dismissible!==!1,pe=n.className||``,me=n.descriptionClassName||``,Y=m.useMemo(()=>s.findIndex(e=>e.toastId===n.id)||0,[s,n.id]),he=m.useMemo(()=>n.closeButton??p,[n.closeButton,p]),ge=m.useMemo(()=>n.duration||x||P,[n.duration,x]),X=m.useRef(0),Z=m.useRef(0),_e=m.useRef(0),Q=m.useRef(null),[ve,ye]=S.split(`-`),be=m.useMemo(()=>s.reduce((e,t,n)=>n>=Y?e:e+t.height,0),[s,Y]),xe=te(),Se=n.invert||t,Ce=q===`loading`;Z.current=m.useMemo(()=>Y*C+be,[Y,be]),m.useEffect(()=>{G.current=ge},[ge]),m.useEffect(()=>{ne(!0)},[]),m.useEffect(()=>{let e=K.current;if(e){let t=e.getBoundingClientRect().height;return le(t),a(e=>[{toastId:n.id,height:t,position:n.position},...e]),()=>a(e=>e.filter(e=>e.toastId!==n.id))}},[a,n.id]),m.useLayoutEffect(()=>{if(!F)return;let e=K.current,t=e.style.height;e.style.height=`auto`;let r=e.getBoundingClientRect().height;e.style.height=t,le(r),a(e=>e.find(e=>e.toastId===n.id)?e.map(e=>e.toastId===n.id?{...e,height:r}:e):[{toastId:n.id,height:r,position:n.position},...e])},[F,n.title,n.description,a,n.id,n.jsx,n.action,n.cancel]);let $=m.useCallback(()=>{B(!0),W(Z.current),a(e=>e.filter(e=>e.toastId!==n.id)),setTimeout(()=>{d(n)},re)},[n,d,a,Z]);m.useEffect(()=>{if(n.promise&&q===`loading`||n.duration===1/0||n.type===`loading`)return;let e;return u||i||xe?(()=>{if(_e.current<X.current){let e=new Date().getTime()-X.current;G.current-=e}_e.current=new Date().getTime()})():G.current!==1/0&&(X.current=new Date().getTime(),e=setTimeout(()=>{n.onAutoClose==null||n.onAutoClose.call(n,n),$()},G.current)),()=>clearTimeout(e)},[u,i,n,q,xe,$]),m.useEffect(()=>{n.delete&&($(),n.onDismiss==null||n.onDismiss.call(n,n))},[$,n.delete]);function we(){return D?.loading?m.createElement(`div`,{className:L(E?.loader,n?.classNames?.loader,`sonner-loader`),"data-visible":q===`loading`},D.loading):m.createElement(y,{className:L(E?.loader,n?.classNames?.loader),visible:q===`loading`})}let Te=n.icon||D?.[q]||_(q);return m.createElement(`li`,{tabIndex:0,ref:K,className:L(v,pe,E?.toast,n?.classNames?.toast,E?.default,E?.[q],n?.classNames?.[q]),"data-sonner-toast":``,"data-rich-colors":n.richColors??f,"data-styled":!(n.jsx||n.unstyled||r),"data-mounted":F,"data-promise":!!n.promise,"data-swiped":ae,"data-removed":z,"data-visible":fe,"data-y-position":ve,"data-x-position":ye,"data-index":c,"data-front":de,"data-swiping":ie,"data-dismissible":J,"data-type":q,"data-invert":Se,"data-swipe-out":H,"data-swipe-direction":M,"data-expanded":!!(u||T&&F),"data-testid":n.testId,style:{"--index":c,"--toasts-before":c,"--z-index":l.length-c,"--offset":`${z?se:Z.current}px`,"--initial-height":T?`auto`:`${ce}px`,...ee,...n.style},onDragEnd:()=>{V(!1),j(null),Q.current=null},onPointerDown:e=>{e.button!==2&&(Ce||!J||(ue.current=new Date,W(Z.current),e.target.setPointerCapture(e.pointerId),e.target.tagName!==`BUTTON`&&(V(!0),Q.current={x:e.clientX,y:e.clientY})))},onPointerUp:()=>{if(H||!J)return;Q.current=null;let e=Number(K.current?.style.getPropertyValue(`--swipe-amount-x`).replace(`px`,``)||0),t=Number(K.current?.style.getPropertyValue(`--swipe-amount-y`).replace(`px`,``)||0),r=new Date().getTime()-ue.current?.getTime(),i=k===`x`?e:t,a=Math.abs(i)/r;if(Math.abs(i)>=I||a>.11){W(Z.current),n.onDismiss==null||n.onDismiss.call(n,n),N(k===`x`?e>0?`right`:`left`:t>0?`down`:`up`),$(),U(!0);return}else{var o,s;(o=K.current)==null||o.style.setProperty(`--swipe-amount-x`,`0px`),(s=K.current)==null||s.style.setProperty(`--swipe-amount-y`,`0px`)}oe(!1),V(!1),j(null)},onPointerMove:t=>{var n,r;if(!Q.current||!J||window.getSelection()?.toString().length>0)return;let i=t.clientY-Q.current.y,a=t.clientX-Q.current.x,o=e.swipeDirections??R(S);!k&&(Math.abs(a)>1||Math.abs(i)>1)&&j(Math.abs(a)>Math.abs(i)?`x`:`y`);let s={x:0,y:0},c=e=>1/(1.5+Math.abs(e)/20);if(k===`y`){if(o.includes(`top`)||o.includes(`bottom`))if(o.includes(`top`)&&i<0||o.includes(`bottom`)&&i>0)s.y=i;else{let e=i*c(i);s.y=Math.abs(e)<Math.abs(i)?e:i}}else if(k===`x`&&(o.includes(`left`)||o.includes(`right`)))if(o.includes(`left`)&&a<0||o.includes(`right`)&&a>0)s.x=a;else{let e=a*c(a);s.x=Math.abs(e)<Math.abs(a)?e:a}(Math.abs(s.x)>0||Math.abs(s.y)>0)&&oe(!0),(n=K.current)==null||n.style.setProperty(`--swipe-amount-x`,`${s.x}px`),(r=K.current)==null||r.style.setProperty(`--swipe-amount-y`,`${s.y}px`)}},he&&!n.jsx&&q!==`loading`?m.createElement(`button`,{"aria-label":O,"data-disabled":Ce,"data-close-button":!0,onClick:Ce||!J?()=>{}:()=>{$(),n.onDismiss==null||n.onDismiss.call(n,n)},className:L(E?.closeButton,n?.classNames?.closeButton)},D?.close??w):null,(q||n.icon||n.promise)&&n.icon!==null&&(D?.[q]!==null||n.icon)?m.createElement(`div`,{"data-icon":``,className:L(E?.icon,n?.classNames?.icon)},n.promise||n.type===`loading`&&!n.icon?n.icon||we():null,n.type===`loading`?null:Te):null,m.createElement(`div`,{"data-content":``,className:L(E?.content,n?.classNames?.content)},m.createElement(`div`,{"data-title":``,className:L(E?.title,n?.classNames?.title)},n.jsx?n.jsx:typeof n.title==`function`?n.title():n.title),n.description?m.createElement(`div`,{"data-description":``,className:L(b,me,E?.description,n?.classNames?.description)},typeof n.description==`function`?n.description():n.description):null),m.isValidElement(n.cancel)?n.cancel:n.cancel&&A(n.cancel)?m.createElement(`button`,{"data-button":!0,"data-cancel":!0,style:n.cancelButtonStyle||h,onClick:e=>{A(n.cancel)&&J&&(n.cancel.onClick==null||n.cancel.onClick.call(n.cancel,e),$())},className:L(E?.cancelButton,n?.classNames?.cancelButton)},n.cancel.label):null,m.isValidElement(n.action)?n.action:n.action&&A(n.action)?m.createElement(`button`,{"data-button":!0,"data-action":!0,style:n.actionButtonStyle||g,onClick:e=>{A(n.action)&&(n.action.onClick==null||n.action.onClick.call(n.action,e),!e.defaultPrevented&&$())},className:L(E?.actionButton,n?.classNames?.actionButton)},n.action.label):null)};function B(){if(typeof window>`u`||typeof document>`u`)return`ltr`;let e=document.documentElement.getAttribute(`dir`);return e===`auto`||!e?window.getComputedStyle(document.documentElement).direction:e}function ie(e,t){let n={};return[e,t].forEach((e,t)=>{let r=t===1,i=r?`--mobile-offset`:`--offset`,a=r?N:M;function o(e){[`top`,`right`,`bottom`,`left`].forEach(t=>{n[`${i}-${t}`]=typeof e==`number`?`${e}px`:e})}typeof e==`number`||typeof e==`string`?o(e):typeof e==`object`?[`top`,`right`,`bottom`,`left`].forEach(t=>{e[t]===void 0?n[`${i}-${t}`]=a:n[`${i}-${t}`]=typeof e[t]==`number`?`${e[t]}px`:e[t]}):o(a)}),n}var V=m.forwardRef(function(e,t){let{id:n,invert:r,position:i=`bottom-right`,hotkey:a=[`altKey`,`KeyT`],expand:o,closeButton:s,className:c,offset:l,mobileOffset:u,theme:d=`light`,richColors:f,duration:p,style:ee,visibleToasts:g=j,toastOptions:_,dir:v=B(),gap:y=ne,icons:b,containerAriaLabel:x=`Notifications`}=e,[S,C]=m.useState([]),w=m.useMemo(()=>n?S.filter(e=>e.toasterId===n):S.filter(e=>!e.toasterId),[S,n]),te=m.useMemo(()=>Array.from(new Set([i].concat(w.filter(e=>e.position).map(e=>e.position)))),[w,i]),[T,D]=m.useState([]),[O,k]=m.useState(!1),[A,M]=m.useState(!1),[N,P]=m.useState(d===`system`?typeof window<`u`&&window.matchMedia&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`:d),I=m.useRef(null),re=a.join(`+`).replace(/Key/g,``).replace(/Digit/g,``),L=m.useRef(null),R=m.useRef(!1),V=m.useCallback(e=>{C(t=>(t.find(t=>t.id===e.id)?.delete||E.dismiss(e.id),t.filter(({id:t})=>t!==e.id)))},[]);return m.useEffect(()=>E.subscribe(e=>{if(e.dismiss){requestAnimationFrame(()=>{C(t=>t.map(t=>t.id===e.id?{...t,delete:!0}:t))});return}setTimeout(()=>{h.flushSync(()=>{C(t=>{let n=t.findIndex(t=>t.id===e.id);return n===-1?[e,...t]:[...t.slice(0,n),{...t[n],...e},...t.slice(n+1)]})})})}),[S]),m.useEffect(()=>{if(d!==`system`){P(d);return}if(d===`system`&&(window.matchMedia&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?P(`dark`):P(`light`)),typeof window>`u`)return;let e=window.matchMedia(`(prefers-color-scheme: dark)`);try{e.addEventListener(`change`,({matches:e})=>{P(e?`dark`:`light`)})}catch{e.addListener(({matches:e})=>{try{P(e?`dark`:`light`)}catch(e){console.error(e)}})}},[d]),m.useEffect(()=>{S.length<=1&&k(!1)},[S]),m.useEffect(()=>{let e=e=>{if(a.every(t=>e[t]||e.code===t)){var t;k(!0),(t=I.current)==null||t.focus()}e.code===`Escape`&&(document.activeElement===I.current||I.current?.contains(document.activeElement))&&k(!1)};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[a]),m.useEffect(()=>{if(I.current)return()=>{L.current&&(L.current.focus({preventScroll:!0}),L.current=null,R.current=!1)}},[I.current]),m.createElement(`section`,{ref:t,"aria-label":`${x} ${re}`,tabIndex:-1,"aria-live":`polite`,"aria-relevant":`additions text`,"aria-atomic":`false`,suppressHydrationWarning:!0},te.map((t,n)=>{let[i,a]=t.split(`-`);return w.length?m.createElement(`ol`,{key:t,dir:v===`auto`?B():v,tabIndex:-1,ref:I,className:c,"data-sonner-toaster":!0,"data-sonner-theme":N,"data-y-position":i,"data-x-position":a,style:{"--front-toast-height":`${T[0]?.height||0}px`,"--width":`${F}px`,"--gap":`${y}px`,...ee,...ie(l,u)},onBlur:e=>{R.current&&!e.currentTarget.contains(e.relatedTarget)&&(R.current=!1,L.current&&=(L.current.focus({preventScroll:!0}),null))},onFocus:e=>{e.target instanceof HTMLElement&&e.target.dataset.dismissible===`false`||R.current||(R.current=!0,L.current=e.relatedTarget)},onMouseEnter:()=>k(!0),onMouseMove:()=>k(!0),onMouseLeave:()=>{A||k(!1)},onDragEnd:()=>k(!1),onPointerDown:e=>{e.target instanceof HTMLElement&&e.target.dataset.dismissible===`false`||M(!0)},onPointerUp:()=>M(!1)},w.filter(e=>!e.position&&n===0||e.position===t).map((n,i)=>m.createElement(z,{key:n.id,icons:b,index:i,toast:n,defaultRichColors:f,duration:_?.duration??p,className:_?.className,descriptionClassName:_?.descriptionClassName,invert:r,visibleToasts:g,closeButton:_?.closeButton??s,interacting:A,position:t,style:_?.style,unstyled:_?.unstyled,classNames:_?.classNames,cancelButtonStyle:_?.cancelButtonStyle,actionButtonStyle:_?.actionButtonStyle,closeButtonAriaLabel:_?.closeButtonAriaLabel,removeToast:V,toasts:w.filter(e=>e.position==n.position),heights:T.filter(e=>e.position==n.position),setHeights:D,expandByDefault:o,gap:y,expanded:O,swipeDirections:e.swipeDirections}))):null}))}),H=s(),U=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/app/SettingsForm.tsx`;function ae(e){let{t}=a(),n=(0,m.useMemo)(()=>f(e.fields),[e.fields]),s=(0,m.useMemo)(()=>p(e.fields),[e.fields]),[h,g]=(0,m.useState)(!1),[_,v]=(0,m.useState)(null),{values:y,setValues:b,errors:x,setErrors:S,bridge:C}=c({fm:s,mode:`edit`,recordCtx:e.recordCtx,initial:{}});function w(e){let t={};for(let[r,i]of n)t[r]=e[r]??i.default??(i.prim!==`checkbox`&&``);return t}(0,m.useEffect)(()=>{b({}),S({});let n=!0;return e.load().then(e=>n&&b(w(e))).catch(()=>n&&v(t(`common.loadError`,{defaultValue:`Помилка завантаження`}))),()=>{n=!1}},[`${e.recordCtx.library}/${e.recordCtx.shelf}/${e.recordCtx.recordId}`]);async function te(){g(!0),S({});let n=k.loading(t(`save.saving`)),r=await e.save(y);if(g(!1),r.ok){b(w(r.row)),k.success(t(`save.done`),{id:n});return}if(r.status===422&&r.issues){let e={};for(let n of r.issues)n.field&&(e[n.field]=t(`validation.${n.code}`,n.params));S(e)}k.error(t(`save.failed`),{id:n})}return(0,H.jsxDEV)(`div`,{className:`flex flex-col h-full`,children:[(0,H.jsxDEV)(u,{actions:(0,H.jsxDEV)(r,{onClick:te,disabled:h,children:[(0,H.jsxDEV)(i,{size:16},void 0,!1,{fileName:U,lineNumber:101,columnNumber:13},this),(0,H.jsxDEV)(`span`,{className:`hidden sm:inline`,children:t(`actions.save`)},void 0,!1,{fileName:U,lineNumber:102,columnNumber:13},this)]},void 0,!0,{fileName:U,lineNumber:100,columnNumber:11},this),children:(0,H.jsxDEV)(r,{variant:`ghost`,size:`sm`,className:`px-2`,asChild:!0,children:(0,H.jsxDEV)(o,{to:e.backTo,"aria-label":e.backLabel,children:[(0,H.jsxDEV)(d,{size:18},void 0,!1,{fileName:U,lineNumber:108,columnNumber:13},this),(0,H.jsxDEV)(`span`,{className:`text-sm`,children:e.backLabel},void 0,!1,{fileName:U,lineNumber:109,columnNumber:13},this)]},void 0,!0,{fileName:U,lineNumber:107,columnNumber:11},this)},void 0,!1,{fileName:U,lineNumber:106,columnNumber:9},this)},void 0,!1,{fileName:U,lineNumber:98,columnNumber:7},this),(0,H.jsxDEV)(ee,{children:[(0,H.jsxDEV)(`h1`,{className:`mb-6 text-[28px] font-bold text-text`,children:e.title},void 0,!1,{fileName:U,lineNumber:115,columnNumber:9},this),_&&(0,H.jsxDEV)(`div`,{className:`mb-5 rounded-xl border border-danger/40 bg-danger/10 px-4 py-3 text-sm text-danger`,children:_},void 0,!1,{fileName:U,lineNumber:118,columnNumber:11},this),(0,H.jsxDEV)(`div`,{className:`flex flex-col gap-5`,children:(0,H.jsxDEV)(l,{items:e.fields,ctx:{bridge:C}},void 0,!1,{fileName:U,lineNumber:122,columnNumber:11},this)},void 0,!1,{fileName:U,lineNumber:121,columnNumber:9},this)]},void 0,!0,{fileName:U,lineNumber:114,columnNumber:7},this)]},void 0,!0,{fileName:U,lineNumber:97,columnNumber:5},this)}export{V as n,k as r,ae as t};
@@ -1,2 +1,2 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-n93t21jb.js";import{C as n,S as r,i,r as a,t as o,w as s}from"./button-Dlm2GmQs.js";import{n as c}from"./chunk-KS7C4IRE-B1_Zk64s.js";import{t as l}from"./jsx-dev-runtime-CSfA-jUb.js";import{i as u,n as d,o as f,s as p,t as m}from"./dist-DkJnaE0X.js";import{t as h}from"./jsx-runtime-JUshM5qe.js";import{t as g}from"./dist-CdqdWApy.js";import{b as _,d as v,f as y,x as b,y as x}from"./api-j5etRnzW.js";import{n as S,r as C}from"./auth-context-zE-2rDEl.js";import{t as w}from"./PageBody-CvuReTKD.js";var T=e(t(),1),E=h(),D=`Switch`,[O,k]=f(D),[A,j]=O(D);function M(e){let{__scopeSwitch:t,checked:n,children:r,defaultChecked:i,disabled:a,form:o,name:s,onCheckedChange:c,required:l,value:u=`on`,internal_do_not_use_render:d}=e,[f,p]=m({prop:n,defaultProp:i??!1,onChange:c,caller:D}),[h,g]=T.useState(null),[_,v]=T.useState(null),y={checked:f,setChecked:p,disabled:a,control:h,setControl:g,name:s,form:o,value:u,hasConsumerStoppedPropagationRef:T.useRef(!1),required:l,defaultChecked:i,isFormControl:!h||!!o||!!h.closest(`form`),bubbleInput:_,setBubbleInput:v};return(0,E.jsx)(A,{scope:t,...y,children:B(d)?d(y):r})}var N=`SwitchTrigger`,P=T.forwardRef(({__scopeSwitch:e,onClick:t,...n},i)=>{let{control:a,form:o,value:s,disabled:c,checked:l,required:d,setControl:f,setChecked:m,hasConsumerStoppedPropagationRef:h,isFormControl:g,bubbleInput:_}=j(N,e),v=r(i,f),y=T.useRef(l);return T.useEffect(()=>{let e=o?a?.ownerDocument.getElementById(o):a?.form;if(e instanceof HTMLFormElement){let t=()=>m(y.current);return e.addEventListener(`reset`,t),()=>e.removeEventListener(`reset`,t)}},[a,o,m]),(0,E.jsx)(u.button,{type:`button`,role:`switch`,"aria-checked":l,"aria-required":d,"data-state":V(l),"data-disabled":c?``:void 0,disabled:c,value:s,...n,ref:v,onClick:p(t,e=>{m(e=>!e),_&&g&&(h.current=e.isPropagationStopped(),h.current||e.stopPropagation())})})});P.displayName=N;var F=T.forwardRef((e,t)=>{let{__scopeSwitch:n,name:r,checked:i,defaultChecked:a,required:o,disabled:s,value:c,onCheckedChange:l,form:u,...d}=e;return(0,E.jsx)(M,{__scopeSwitch:n,checked:i,defaultChecked:a,disabled:s,required:o,onCheckedChange:l,name:r,form:u,value:c,internal_do_not_use_render:({isFormControl:e})=>(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(P,{...d,ref:t,__scopeSwitch:n}),e&&(0,E.jsx)(z,{__scopeSwitch:n})]})})});F.displayName=D;var I=`SwitchThumb`,L=T.forwardRef((e,t)=>{let{__scopeSwitch:n,...r}=e,i=j(I,n);return(0,E.jsx)(u.span,{"data-state":V(i.checked),"data-disabled":i.disabled?``:void 0,...r,ref:t})});L.displayName=I;var R=`SwitchBubbleInput`,z=T.forwardRef(({__scopeSwitch:e,...t},n)=>{let{control:i,hasConsumerStoppedPropagationRef:a,checked:o,defaultChecked:s,required:c,disabled:l,name:f,value:p,form:m,bubbleInput:h,setBubbleInput:_}=j(R,e),v=r(n,_),y=g(o),b=d(i);T.useEffect(()=>{let e=h;if(!e)return;let t=window.HTMLInputElement.prototype,n=Object.getOwnPropertyDescriptor(t,`checked`).set,r=!a.current;if(y!==o&&n){let t=new Event(`click`,{bubbles:r});n.call(e,o),e.dispatchEvent(t)}},[h,y,o,a]);let x=T.useRef(o);return(0,E.jsx)(u.input,{type:`checkbox`,"aria-hidden":!0,defaultChecked:s??x.current,required:c,disabled:l,name:f,value:p,form:m,...t,tabIndex:-1,ref:v,style:{...t.style,...b,position:`absolute`,pointerEvents:`none`,opacity:0,margin:0,transform:`translateX(-100%)`}})});z.displayName=R;function B(e){return typeof e==`function`}function V(e){return e?`checked`:`unchecked`}var H=l(),U=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/components/ui/switch.tsx`,W=T.forwardRef(({className:e,...t},r)=>(0,H.jsxDEV)(F,{ref:r,className:n(`peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background`,`disabled:cursor-not-allowed disabled:opacity-50`,`data-[state=checked]:bg-primary data-[state=unchecked]:bg-border`,e),...t,children:(0,H.jsxDEV)(L,{className:n(`pointer-events-none block h-5 w-5 rounded-full bg-white shadow-lg ring-0 transition-transform`,`data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0`)},void 0,!1,{fileName:U,lineNumber:20,columnNumber:5},void 0)},void 0,!1,{fileName:U,lineNumber:9,columnNumber:3},void 0));W.displayName=F.displayName;var G=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/components/ui/badge.tsx`,K=a(`inline-flex items-center rounded-md border px-2 py-0.5 text-xs font-semibold transition-colors`,{variants:{variant:{default:`border-transparent bg-primary text-primary-foreground`,secondary:`border-transparent bg-secondary text-secondary-foreground`,destructive:`border-transparent bg-destructive text-destructive-foreground`,outline:`border-border text-text`,accent:`border-accent/30 bg-accent/15 text-accent`}},defaultVariants:{variant:`default`}});function q({className:e,variant:t,...r}){return(0,H.jsxDEV)(`div`,{className:n(K({variant:t}),e),...r},void 0,!1,{fileName:G,lineNumber:24,columnNumber:10},this)}var J=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/app/SettingsPage.tsx`;function Y(){let{t:e}=s(),{role:t}=S(),n=t===`admin`,[r,a]=(0,T.useState)([]),[l,u]=(0,T.useState)(!0),[d,f]=(0,T.useState)(null),p=e=>d===e||d===`*`,[m,h]=(0,T.useState)(null),g=r.filter(e=>e.latestVersion&&e.latestVersion!==e.installedVersion),E=!!(m?.latestVersion&&m.latestVersion!==m.installedVersion),D=g.length+ +!!E,[O,k]=(0,T.useState)(null),[A,j]=(0,T.useState)(!1),M=t=>e(`${t}.plugin.label`,{defaultValue:t}),N=t=>e(`${t}.plugin.description`,{defaultValue:``}),P=t=>e(`${t}.library.label`,{defaultValue:t}),F=(t,n)=>e(`${t}.${n}.label`,{defaultValue:n}),I={core_required:()=>e(`plugins.errors.core_required`),has_dependents:t=>e(`plugins.errors.has_dependents`,{list:t.dependents.join(`, `)}),missing_deps:t=>e(`plugins.errors.missing_deps`,{list:t.deps.join(`, `)}),unknown_plugin:()=>e(`plugins.errors.unknown_plugin`)},L=()=>Promise.all([y(),v()]).then(([e,t])=>{a(e),h(t),u(!1)});(0,T.useEffect)(()=>{L()},[]);async function R(t){if(!window.confirm(e(`plugins.confirmPurge`,{id:t.id})))return;f(t.id),k(null);let n=await fetch(`/api/plugins/${t.id}/data`,{method:`DELETE`}),r=await n.json().catch(()=>({}));if(f(null),!n.ok){k(I[r.error]?.(r)??e(`plugins.genericError`,{code:r.error??n.status}));return}j(!0),await L()}async function z(t){f(t.id),k(null);let n=await x(t.id,!t.enabled);if(!n.ok){f(null),k(I[n.error]?.(n.data??{})??e(`plugins.genericError`,{code:n.error}));return}window.location.reload()}async function B(){let e=Date.now();for(;Date.now()-e<3e4;){await new Promise(e=>setTimeout(e,1e3));try{if((await fetch(`/health`)).ok)return!0}catch{}}return!1}async function V(t){if(!t.latestVersion||!window.confirm(e(`plugins.confirmUpdate`,{id:t.id,from:t.installedVersion,to:t.latestVersion})))return;f(t.id),k(null);let n=await b(t.id);if(!n.ok){f(null),k(n.stderr?`${e(`plugins.updateError`)}: ${n.stderr}`:e(`plugins.genericError`,{code:n.error}));return}j(!0),await B()&&window.location.reload()}async function U(){if(D===0)return;let t=g.map(e=>`${M(e.id)}: v${e.installedVersion} → v${e.latestVersion}`);E&&t.push(`${e(`plugins.runtimeLabel`)}: v${m.installedVersion} → v${m.latestVersion}`);let n=t.join(`
2
- `);if(!window.confirm(e(`plugins.confirmUpdateAll`,{count:D,list:n})))return;f(`*`),k(null);let r=await _();if(!r.ok){f(null),k(r.stderr?`${e(`plugins.updateError`)}: ${r.stderr}`:e(`plugins.genericError`,{code:r.error}));return}j(!0),await B()&&window.location.reload()}let G=r.find(e=>e.id===`core`);return(0,H.jsxDEV)(w,{children:[(0,H.jsxDEV)(`h1`,{className:`mb-6 text-[28px] font-bold text-text`,children:e(`settings.title`)},void 0,!1,{fileName:J,lineNumber:154,columnNumber:7},this),(0,H.jsxDEV)(`section`,{className:`mb-6`,children:[(0,H.jsxDEV)(`h2`,{className:`mb-1 text-sm font-semibold uppercase tracking-wide text-muted`,children:e(`settings.personalTitle`)},void 0,!1,{fileName:J,lineNumber:158,columnNumber:9},this),(0,H.jsxDEV)(C,{className:`flex items-center gap-4 px-4 py-3`,children:[(0,H.jsxDEV)(`div`,{className:`min-w-0 flex-1`,children:(0,H.jsxDEV)(`span`,{className:`font-semibold text-text`,children:e(`auth.accountTitle`)},void 0,!1,{fileName:J,lineNumber:161,columnNumber:13},this)},void 0,!1,{fileName:J,lineNumber:160,columnNumber:11},this),(0,H.jsxDEV)(o,{variant:`ghost`,size:`sm`,type:`button`,className:`shrink-0 border border-border`,asChild:!0,children:(0,H.jsxDEV)(c,{to:`/settings/account`,title:e(`auth.accountTitle`),"aria-label":e(`auth.accountTitle`),children:(0,H.jsxDEV)(i,{name:`lucide:settings`,size:16},void 0,!1,{fileName:J,lineNumber:165,columnNumber:15},this)},void 0,!1,{fileName:J,lineNumber:164,columnNumber:13},this)},void 0,!1,{fileName:J,lineNumber:163,columnNumber:11},this)]},void 0,!0,{fileName:J,lineNumber:159,columnNumber:9},this)]},void 0,!0,{fileName:J,lineNumber:157,columnNumber:7},this),n&&(0,H.jsxDEV)(H.Fragment,{children:[(0,H.jsxDEV)(`section`,{className:`mb-6`,children:[(0,H.jsxDEV)(`h2`,{className:`mb-1 text-sm font-semibold uppercase tracking-wide text-muted`,children:e(`settings.systemTitle`)},void 0,!1,{fileName:J,lineNumber:175,columnNumber:13},this),(0,H.jsxDEV)(`p`,{className:`mb-3 text-sm text-muted`,children:e(`settings.systemDescription`)},void 0,!1,{fileName:J,lineNumber:176,columnNumber:13},this),(0,H.jsxDEV)(C,{className:`flex items-center gap-4 px-4 py-3`,children:[(0,H.jsxDEV)(`div`,{className:`min-w-0 flex-1 flex items-center gap-2`,children:[(0,H.jsxDEV)(`span`,{className:`font-semibold text-text`,children:e(`core.settings.label`)},void 0,!1,{fileName:J,lineNumber:179,columnNumber:17},this),G&&(0,H.jsxDEV)(X,{plugin:G,busy:p(`core`),onUpdate:()=>V(G)},void 0,!1,{fileName:J,lineNumber:180,columnNumber:26},this)]},void 0,!0,{fileName:J,lineNumber:178,columnNumber:15},this),(0,H.jsxDEV)(o,{variant:`ghost`,size:`sm`,type:`button`,className:`shrink-0 border border-border`,asChild:!0,children:(0,H.jsxDEV)(c,{to:`/settings/core`,title:e(`core.settings.label`),"aria-label":e(`core.settings.label`),children:(0,H.jsxDEV)(i,{name:`lucide:settings`,size:16},void 0,!1,{fileName:J,lineNumber:184,columnNumber:19},this)},void 0,!1,{fileName:J,lineNumber:183,columnNumber:17},this)},void 0,!1,{fileName:J,lineNumber:182,columnNumber:15},this)]},void 0,!0,{fileName:J,lineNumber:177,columnNumber:13},this)]},void 0,!0,{fileName:J,lineNumber:174,columnNumber:11},this),(0,H.jsxDEV)(`section`,{className:`mb-6`,children:[(0,H.jsxDEV)(`h2`,{className:`mb-1 text-sm font-semibold uppercase tracking-wide text-muted`,children:e(`settings.usersTitle`)},void 0,!1,{fileName:J,lineNumber:192,columnNumber:13},this),(0,H.jsxDEV)(`p`,{className:`mb-3 text-sm text-muted`,children:e(`settings.usersDescription`)},void 0,!1,{fileName:J,lineNumber:193,columnNumber:13},this),(0,H.jsxDEV)(C,{className:`flex items-center gap-4 px-4 py-3`,children:[(0,H.jsxDEV)(`div`,{className:`min-w-0 flex-1`,children:(0,H.jsxDEV)(`span`,{className:`font-semibold text-text`,children:e(`settings.usersTitle`)},void 0,!1,{fileName:J,lineNumber:196,columnNumber:17},this)},void 0,!1,{fileName:J,lineNumber:195,columnNumber:15},this),(0,H.jsxDEV)(o,{variant:`ghost`,size:`sm`,type:`button`,className:`shrink-0 border border-border`,asChild:!0,children:(0,H.jsxDEV)(c,{to:`/settings/users`,title:e(`settings.usersTitle`),"aria-label":e(`settings.usersTitle`),children:(0,H.jsxDEV)(i,{name:`lucide:settings`,size:16},void 0,!1,{fileName:J,lineNumber:200,columnNumber:19},this)},void 0,!1,{fileName:J,lineNumber:199,columnNumber:17},this)},void 0,!1,{fileName:J,lineNumber:198,columnNumber:15},this)]},void 0,!0,{fileName:J,lineNumber:194,columnNumber:13},this)]},void 0,!0,{fileName:J,lineNumber:191,columnNumber:11},this),(0,H.jsxDEV)(`section`,{children:[(0,H.jsxDEV)(`div`,{className:`mb-1 flex items-center gap-3`,children:[(0,H.jsxDEV)(`h2`,{className:`text-sm font-semibold uppercase tracking-wide text-muted`,children:e(`plugins.title`)},void 0,!1,{fileName:J,lineNumber:209,columnNumber:15},this),D>0&&(0,H.jsxDEV)(o,{variant:`ghost`,size:`sm`,type:`button`,disabled:d!==null,onClick:U,className:`shrink-0 border border-accent/40 text-accent hover:bg-accent/10 hover:text-accent`,children:e(`plugins.updateAllButton`,{count:D})},void 0,!1,{fileName:J,lineNumber:211,columnNumber:17},this)]},void 0,!0,{fileName:J,lineNumber:208,columnNumber:13},this),(0,H.jsxDEV)(`p`,{className:`mb-3 text-sm text-muted`,children:e(`plugins.description`)},void 0,!1,{fileName:J,lineNumber:223,columnNumber:13},this),l?(0,H.jsxDEV)(`p`,{className:`text-muted`,children:e(`plugins.loading`)},void 0,!1,{fileName:J,lineNumber:226,columnNumber:15},this):(0,H.jsxDEV)(H.Fragment,{children:[A&&(0,H.jsxDEV)(`div`,{className:`mb-5 rounded-xl border border-accent/40 bg-accent/10 px-4 py-3 text-sm text-accent`,children:[e(`plugins.restartBannerBefore`),(0,H.jsxDEV)(`b`,{children:e(`plugins.restartBannerBold`)},void 0,!1,{fileName:J,lineNumber:232,columnNumber:21},this),e(`plugins.restartBannerAfter`)]},void 0,!0,{fileName:J,lineNumber:230,columnNumber:19},this),O&&(0,H.jsxDEV)(`div`,{className:`mb-5 rounded-xl border border-danger/40 bg-danger/10 px-4 py-3 text-sm text-danger`,children:O},void 0,!1,{fileName:J,lineNumber:237,columnNumber:19},this),(0,H.jsxDEV)(`div`,{className:`flex flex-col gap-2`,children:r.filter(e=>e.id!==`core`).map(t=>{let n=N(t.id),a=t.enabled?r.filter(e=>e.enabled&&e.id!==t.id&&e.dependsOn.includes(t.id)):[],s=a.length>0,l=s?e(`plugins.blockedByDependents`,{list:a.map(e=>M(e.id)).join(`, `)}):t.enabled?e(`plugins.switchDisable`):e(`plugins.switchEnable`),u=[t.dependsOn.length>0&&`${e(`plugins.metaDepends`)} ${t.dependsOn.map(M).join(`, `)}`,t.libraries.length>0&&`${e(`plugins.metaLibraries`)} ${t.libraries.map(P).join(`, `)}`,t.extends.length>0&&`${e(`plugins.metaExtends`)} ${t.extends.map(e=>F(t.id,e)).join(`, `)}`].filter(Boolean).join(` · `)||`—`;return(0,H.jsxDEV)(C,{className:`flex items-center gap-4 px-4 py-3`,children:[(0,H.jsxDEV)(`div`,{className:`min-w-0 flex-1`,children:[(0,H.jsxDEV)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsxDEV)(`span`,{className:`font-semibold text-text`,children:M(t.id)},void 0,!1,{fileName:J,lineNumber:274,columnNumber:31},this),(0,H.jsxDEV)(X,{plugin:t,busy:p(t.id),onUpdate:()=>V(t)},void 0,!1,{fileName:J,lineNumber:275,columnNumber:31},this)]},void 0,!0,{fileName:J,lineNumber:273,columnNumber:29},this),n&&(0,H.jsxDEV)(`div`,{className:`text-xs text-muted mt-0.5 truncate`,children:n},void 0,!1,{fileName:J,lineNumber:277,columnNumber:45},this),(0,H.jsxDEV)(`div`,{className:`text-xs text-muted mt-0.5 truncate`,children:u},void 0,!1,{fileName:J,lineNumber:278,columnNumber:29},this)]},void 0,!0,{fileName:J,lineNumber:272,columnNumber:27},this),t.hasSettings&&(0,H.jsxDEV)(o,{variant:`ghost`,size:`sm`,type:`button`,className:`shrink-0 border border-border`,asChild:!0,children:(0,H.jsxDEV)(c,{to:`/settings/${t.id}`,title:e(`plugins.settingsTitle`,{defaultValue:`Налаштування`}),"aria-label":e(`plugins.settingsTitle`,{defaultValue:`Налаштування`}),children:(0,H.jsxDEV)(i,{name:`lucide:settings`,size:16},void 0,!1,{fileName:J,lineNumber:293,columnNumber:33},this)},void 0,!1,{fileName:J,lineNumber:288,columnNumber:31},this)},void 0,!1,{fileName:J,lineNumber:281,columnNumber:29},this),(0,H.jsxDEV)(o,{variant:`ghost`,size:`sm`,type:`button`,disabled:p(t.id),onClick:()=>R(t),title:e(`plugins.purgeTitle`),className:`shrink-0 border border-danger/40 text-danger hover:bg-danger/10 hover:text-danger`,children:e(`plugins.purgeButton`)},void 0,!1,{fileName:J,lineNumber:297,columnNumber:27},this),(0,H.jsxDEV)(`span`,{title:l,className:`shrink-0`,children:(0,H.jsxDEV)(W,{checked:t.enabled,disabled:p(t.id)||s,onCheckedChange:()=>z(t),title:l},void 0,!1,{fileName:J,lineNumber:311,columnNumber:29},this)},void 0,!1,{fileName:J,lineNumber:310,columnNumber:27},this)]},t.id,!0,{fileName:J,lineNumber:271,columnNumber:25},this)})},void 0,!1,{fileName:J,lineNumber:242,columnNumber:17},this)]},void 0,!0,{fileName:J,lineNumber:228,columnNumber:15},this)]},void 0,!0,{fileName:J,lineNumber:207,columnNumber:11},this)]},void 0,!0,{fileName:J,lineNumber:172,columnNumber:9},this)]},void 0,!0,{fileName:J,lineNumber:153,columnNumber:5},this)}function X({plugin:e,busy:t,onUpdate:n}){let{t:r}=s(),i=!!e.latestVersion&&e.latestVersion!==e.installedVersion;return(0,H.jsxDEV)(H.Fragment,{children:[(0,H.jsxDEV)(q,{variant:`secondary`,className:`text-[10px] font-medium`,children:[`v`,e.installedVersion]},void 0,!0,{fileName:J,lineNumber:344,columnNumber:7},this),i&&(0,H.jsxDEV)(o,{variant:`ghost`,size:`sm`,type:`button`,disabled:t,onClick:n,title:r(`plugins.updateTitle`,{from:e.installedVersion,to:e.latestVersion}),className:`shrink-0 border border-accent/40 text-accent hover:bg-accent/10 hover:text-accent`,children:r(`plugins.updateButton`)},void 0,!1,{fileName:J,lineNumber:348,columnNumber:9},this)]},void 0,!0,{fileName:J,lineNumber:343,columnNumber:5},this)}export{Y as SettingsPage};
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-n93t21jb.js";import{C as n,S as r,i,r as a,t as o,w as s}from"./button-Dlm2GmQs.js";import{n as c}from"./chunk-KS7C4IRE-B1_Zk64s.js";import{t as l}from"./jsx-dev-runtime-CSfA-jUb.js";import{i as u,n as d,o as f,s as p,t as m}from"./dist-DkJnaE0X.js";import{t as h}from"./jsx-runtime-JUshM5qe.js";import{t as g}from"./dist-CdqdWApy.js";import{C as _,S as v,d as y,p as b,x}from"./api-V98HaFMa.js";import{n as S,r as C}from"./auth-context-CIGQgBfM.js";import{t as w}from"./PageBody-CvuReTKD.js";var T=e(t(),1),E=h(),D=`Switch`,[O,k]=f(D),[A,j]=O(D);function M(e){let{__scopeSwitch:t,checked:n,children:r,defaultChecked:i,disabled:a,form:o,name:s,onCheckedChange:c,required:l,value:u=`on`,internal_do_not_use_render:d}=e,[f,p]=m({prop:n,defaultProp:i??!1,onChange:c,caller:D}),[h,g]=T.useState(null),[_,v]=T.useState(null),y={checked:f,setChecked:p,disabled:a,control:h,setControl:g,name:s,form:o,value:u,hasConsumerStoppedPropagationRef:T.useRef(!1),required:l,defaultChecked:i,isFormControl:!h||!!o||!!h.closest(`form`),bubbleInput:_,setBubbleInput:v};return(0,E.jsx)(A,{scope:t,...y,children:B(d)?d(y):r})}var N=`SwitchTrigger`,P=T.forwardRef(({__scopeSwitch:e,onClick:t,...n},i)=>{let{control:a,form:o,value:s,disabled:c,checked:l,required:d,setControl:f,setChecked:m,hasConsumerStoppedPropagationRef:h,isFormControl:g,bubbleInput:_}=j(N,e),v=r(i,f),y=T.useRef(l);return T.useEffect(()=>{let e=o?a?.ownerDocument.getElementById(o):a?.form;if(e instanceof HTMLFormElement){let t=()=>m(y.current);return e.addEventListener(`reset`,t),()=>e.removeEventListener(`reset`,t)}},[a,o,m]),(0,E.jsx)(u.button,{type:`button`,role:`switch`,"aria-checked":l,"aria-required":d,"data-state":V(l),"data-disabled":c?``:void 0,disabled:c,value:s,...n,ref:v,onClick:p(t,e=>{m(e=>!e),_&&g&&(h.current=e.isPropagationStopped(),h.current||e.stopPropagation())})})});P.displayName=N;var F=T.forwardRef((e,t)=>{let{__scopeSwitch:n,name:r,checked:i,defaultChecked:a,required:o,disabled:s,value:c,onCheckedChange:l,form:u,...d}=e;return(0,E.jsx)(M,{__scopeSwitch:n,checked:i,defaultChecked:a,disabled:s,required:o,onCheckedChange:l,name:r,form:u,value:c,internal_do_not_use_render:({isFormControl:e})=>(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(P,{...d,ref:t,__scopeSwitch:n}),e&&(0,E.jsx)(z,{__scopeSwitch:n})]})})});F.displayName=D;var I=`SwitchThumb`,L=T.forwardRef((e,t)=>{let{__scopeSwitch:n,...r}=e,i=j(I,n);return(0,E.jsx)(u.span,{"data-state":V(i.checked),"data-disabled":i.disabled?``:void 0,...r,ref:t})});L.displayName=I;var R=`SwitchBubbleInput`,z=T.forwardRef(({__scopeSwitch:e,...t},n)=>{let{control:i,hasConsumerStoppedPropagationRef:a,checked:o,defaultChecked:s,required:c,disabled:l,name:f,value:p,form:m,bubbleInput:h,setBubbleInput:_}=j(R,e),v=r(n,_),y=g(o),b=d(i);T.useEffect(()=>{let e=h;if(!e)return;let t=window.HTMLInputElement.prototype,n=Object.getOwnPropertyDescriptor(t,`checked`).set,r=!a.current;if(y!==o&&n){let t=new Event(`click`,{bubbles:r});n.call(e,o),e.dispatchEvent(t)}},[h,y,o,a]);let x=T.useRef(o);return(0,E.jsx)(u.input,{type:`checkbox`,"aria-hidden":!0,defaultChecked:s??x.current,required:c,disabled:l,name:f,value:p,form:m,...t,tabIndex:-1,ref:v,style:{...t.style,...b,position:`absolute`,pointerEvents:`none`,opacity:0,margin:0,transform:`translateX(-100%)`}})});z.displayName=R;function B(e){return typeof e==`function`}function V(e){return e?`checked`:`unchecked`}var H=l(),U=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/components/ui/switch.tsx`,W=T.forwardRef(({className:e,...t},r)=>(0,H.jsxDEV)(F,{ref:r,className:n(`peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background`,`disabled:cursor-not-allowed disabled:opacity-50`,`data-[state=checked]:bg-primary data-[state=unchecked]:bg-border`,e),...t,children:(0,H.jsxDEV)(L,{className:n(`pointer-events-none block h-5 w-5 rounded-full bg-white shadow-lg ring-0 transition-transform`,`data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0`)},void 0,!1,{fileName:U,lineNumber:20,columnNumber:5},void 0)},void 0,!1,{fileName:U,lineNumber:9,columnNumber:3},void 0));W.displayName=F.displayName;var G=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/components/ui/badge.tsx`,K=a(`inline-flex items-center rounded-md border px-2 py-0.5 text-xs font-semibold transition-colors`,{variants:{variant:{default:`border-transparent bg-primary text-primary-foreground`,secondary:`border-transparent bg-secondary text-secondary-foreground`,destructive:`border-transparent bg-destructive text-destructive-foreground`,outline:`border-border text-text`,accent:`border-accent/30 bg-accent/15 text-accent`}},defaultVariants:{variant:`default`}});function q({className:e,variant:t,...r}){return(0,H.jsxDEV)(`div`,{className:n(K({variant:t}),e),...r},void 0,!1,{fileName:G,lineNumber:24,columnNumber:10},this)}var J=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/app/SettingsPage.tsx`;function Y(){let{t:e}=s(),{role:t}=S(),n=t===`admin`,[r,a]=(0,T.useState)([]),[l,u]=(0,T.useState)(!0),[d,f]=(0,T.useState)(null),p=e=>d===e||d===`*`,[m,h]=(0,T.useState)(null),g=r.filter(e=>e.latestVersion&&e.latestVersion!==e.installedVersion),E=!!(m?.latestVersion&&m.latestVersion!==m.installedVersion),D=g.length+ +!!E,[O,k]=(0,T.useState)(null),[A,j]=(0,T.useState)(!1),M=t=>e(`${t}.plugin.label`,{defaultValue:t}),N=t=>e(`${t}.plugin.description`,{defaultValue:``}),P=t=>e(`${t}.library.label`,{defaultValue:t}),F=(t,n)=>e(`${t}.${n}.label`,{defaultValue:n}),I={core_required:()=>e(`plugins.errors.core_required`),has_dependents:t=>e(`plugins.errors.has_dependents`,{list:t.dependents.join(`, `)}),missing_deps:t=>e(`plugins.errors.missing_deps`,{list:t.deps.join(`, `)}),unknown_plugin:()=>e(`plugins.errors.unknown_plugin`)},L=()=>Promise.all([b(),y()]).then(([e,t])=>{a(e),h(t),u(!1)});(0,T.useEffect)(()=>{L()},[]);async function R(t){if(!window.confirm(e(`plugins.confirmPurge`,{id:t.id})))return;f(t.id),k(null);let n=await fetch(`/api/plugins/${t.id}/data`,{method:`DELETE`}),r=await n.json().catch(()=>({}));if(f(null),!n.ok){k(I[r.error]?.(r)??e(`plugins.genericError`,{code:r.error??n.status}));return}j(!0),await L()}async function z(t){f(t.id),k(null);let n=await x(t.id,!t.enabled);if(!n.ok){f(null),k(I[n.error]?.(n.data??{})??e(`plugins.genericError`,{code:n.error}));return}window.location.reload()}async function B(){let e=Date.now();for(;Date.now()-e<3e4;){await new Promise(e=>setTimeout(e,1e3));try{if((await fetch(`/health`)).ok)return!0}catch{}}return!1}async function V(t){if(!t.latestVersion||!window.confirm(e(`plugins.confirmUpdate`,{id:t.id,from:t.installedVersion,to:t.latestVersion})))return;f(t.id),k(null);let n=await _(t.id);if(!n.ok){f(null),k(n.stderr?`${e(`plugins.updateError`)}: ${n.stderr}`:e(`plugins.genericError`,{code:n.error}));return}j(!0),await B()&&window.location.reload()}async function U(){if(D===0)return;let t=g.map(e=>`${M(e.id)}: v${e.installedVersion} → v${e.latestVersion}`);E&&t.push(`${e(`plugins.runtimeLabel`)}: v${m.installedVersion} → v${m.latestVersion}`);let n=t.join(`
2
+ `);if(!window.confirm(e(`plugins.confirmUpdateAll`,{count:D,list:n})))return;f(`*`),k(null);let r=await v();if(!r.ok){f(null),k(r.stderr?`${e(`plugins.updateError`)}: ${r.stderr}`:e(`plugins.genericError`,{code:r.error}));return}j(!0),await B()&&window.location.reload()}let G=r.find(e=>e.id===`core`);return(0,H.jsxDEV)(w,{children:[(0,H.jsxDEV)(`h1`,{className:`mb-6 text-[28px] font-bold text-text`,children:e(`settings.title`)},void 0,!1,{fileName:J,lineNumber:154,columnNumber:7},this),(0,H.jsxDEV)(`section`,{className:`mb-6`,children:[(0,H.jsxDEV)(`h2`,{className:`mb-1 text-sm font-semibold uppercase tracking-wide text-muted`,children:e(`settings.personalTitle`)},void 0,!1,{fileName:J,lineNumber:158,columnNumber:9},this),(0,H.jsxDEV)(C,{className:`flex items-center gap-4 px-4 py-3`,children:[(0,H.jsxDEV)(`div`,{className:`min-w-0 flex-1`,children:(0,H.jsxDEV)(`span`,{className:`font-semibold text-text`,children:e(`auth.accountTitle`)},void 0,!1,{fileName:J,lineNumber:161,columnNumber:13},this)},void 0,!1,{fileName:J,lineNumber:160,columnNumber:11},this),(0,H.jsxDEV)(o,{variant:`ghost`,size:`sm`,type:`button`,className:`shrink-0 border border-border`,asChild:!0,children:(0,H.jsxDEV)(c,{to:`/settings/account`,title:e(`auth.accountTitle`),"aria-label":e(`auth.accountTitle`),children:(0,H.jsxDEV)(i,{name:`lucide:settings`,size:16},void 0,!1,{fileName:J,lineNumber:165,columnNumber:15},this)},void 0,!1,{fileName:J,lineNumber:164,columnNumber:13},this)},void 0,!1,{fileName:J,lineNumber:163,columnNumber:11},this)]},void 0,!0,{fileName:J,lineNumber:159,columnNumber:9},this)]},void 0,!0,{fileName:J,lineNumber:157,columnNumber:7},this),n&&(0,H.jsxDEV)(H.Fragment,{children:[(0,H.jsxDEV)(`section`,{className:`mb-6`,children:[(0,H.jsxDEV)(`h2`,{className:`mb-1 text-sm font-semibold uppercase tracking-wide text-muted`,children:e(`settings.systemTitle`)},void 0,!1,{fileName:J,lineNumber:175,columnNumber:13},this),(0,H.jsxDEV)(`p`,{className:`mb-3 text-sm text-muted`,children:e(`settings.systemDescription`)},void 0,!1,{fileName:J,lineNumber:176,columnNumber:13},this),(0,H.jsxDEV)(C,{className:`flex items-center gap-4 px-4 py-3`,children:[(0,H.jsxDEV)(`div`,{className:`min-w-0 flex-1 flex items-center gap-2`,children:[(0,H.jsxDEV)(`span`,{className:`font-semibold text-text`,children:e(`core.settings.label`)},void 0,!1,{fileName:J,lineNumber:179,columnNumber:17},this),G&&(0,H.jsxDEV)(X,{plugin:G,busy:p(`core`),onUpdate:()=>V(G)},void 0,!1,{fileName:J,lineNumber:180,columnNumber:26},this)]},void 0,!0,{fileName:J,lineNumber:178,columnNumber:15},this),(0,H.jsxDEV)(o,{variant:`ghost`,size:`sm`,type:`button`,className:`shrink-0 border border-border`,asChild:!0,children:(0,H.jsxDEV)(c,{to:`/settings/core`,title:e(`core.settings.label`),"aria-label":e(`core.settings.label`),children:(0,H.jsxDEV)(i,{name:`lucide:settings`,size:16},void 0,!1,{fileName:J,lineNumber:184,columnNumber:19},this)},void 0,!1,{fileName:J,lineNumber:183,columnNumber:17},this)},void 0,!1,{fileName:J,lineNumber:182,columnNumber:15},this)]},void 0,!0,{fileName:J,lineNumber:177,columnNumber:13},this)]},void 0,!0,{fileName:J,lineNumber:174,columnNumber:11},this),(0,H.jsxDEV)(`section`,{className:`mb-6`,children:[(0,H.jsxDEV)(`h2`,{className:`mb-1 text-sm font-semibold uppercase tracking-wide text-muted`,children:e(`settings.usersTitle`)},void 0,!1,{fileName:J,lineNumber:192,columnNumber:13},this),(0,H.jsxDEV)(`p`,{className:`mb-3 text-sm text-muted`,children:e(`settings.usersDescription`)},void 0,!1,{fileName:J,lineNumber:193,columnNumber:13},this),(0,H.jsxDEV)(C,{className:`flex items-center gap-4 px-4 py-3`,children:[(0,H.jsxDEV)(`div`,{className:`min-w-0 flex-1`,children:(0,H.jsxDEV)(`span`,{className:`font-semibold text-text`,children:e(`settings.usersTitle`)},void 0,!1,{fileName:J,lineNumber:196,columnNumber:17},this)},void 0,!1,{fileName:J,lineNumber:195,columnNumber:15},this),(0,H.jsxDEV)(o,{variant:`ghost`,size:`sm`,type:`button`,className:`shrink-0 border border-border`,asChild:!0,children:(0,H.jsxDEV)(c,{to:`/settings/users`,title:e(`settings.usersTitle`),"aria-label":e(`settings.usersTitle`),children:(0,H.jsxDEV)(i,{name:`lucide:settings`,size:16},void 0,!1,{fileName:J,lineNumber:200,columnNumber:19},this)},void 0,!1,{fileName:J,lineNumber:199,columnNumber:17},this)},void 0,!1,{fileName:J,lineNumber:198,columnNumber:15},this)]},void 0,!0,{fileName:J,lineNumber:194,columnNumber:13},this)]},void 0,!0,{fileName:J,lineNumber:191,columnNumber:11},this),(0,H.jsxDEV)(`section`,{children:[(0,H.jsxDEV)(`div`,{className:`mb-1 flex items-center gap-3`,children:[(0,H.jsxDEV)(`h2`,{className:`text-sm font-semibold uppercase tracking-wide text-muted`,children:e(`plugins.title`)},void 0,!1,{fileName:J,lineNumber:209,columnNumber:15},this),D>0&&(0,H.jsxDEV)(o,{variant:`ghost`,size:`sm`,type:`button`,disabled:d!==null,onClick:U,className:`shrink-0 border border-accent/40 text-accent hover:bg-accent/10 hover:text-accent`,children:e(`plugins.updateAllButton`,{count:D})},void 0,!1,{fileName:J,lineNumber:211,columnNumber:17},this)]},void 0,!0,{fileName:J,lineNumber:208,columnNumber:13},this),(0,H.jsxDEV)(`p`,{className:`mb-3 text-sm text-muted`,children:e(`plugins.description`)},void 0,!1,{fileName:J,lineNumber:223,columnNumber:13},this),l?(0,H.jsxDEV)(`p`,{className:`text-muted`,children:e(`plugins.loading`)},void 0,!1,{fileName:J,lineNumber:226,columnNumber:15},this):(0,H.jsxDEV)(H.Fragment,{children:[A&&(0,H.jsxDEV)(`div`,{className:`mb-5 rounded-xl border border-accent/40 bg-accent/10 px-4 py-3 text-sm text-accent`,children:[e(`plugins.restartBannerBefore`),(0,H.jsxDEV)(`b`,{children:e(`plugins.restartBannerBold`)},void 0,!1,{fileName:J,lineNumber:232,columnNumber:21},this),e(`plugins.restartBannerAfter`)]},void 0,!0,{fileName:J,lineNumber:230,columnNumber:19},this),O&&(0,H.jsxDEV)(`div`,{className:`mb-5 rounded-xl border border-danger/40 bg-danger/10 px-4 py-3 text-sm text-danger`,children:O},void 0,!1,{fileName:J,lineNumber:237,columnNumber:19},this),(0,H.jsxDEV)(`div`,{className:`flex flex-col gap-2`,children:r.filter(e=>e.id!==`core`).map(t=>{let n=N(t.id),a=t.enabled?r.filter(e=>e.enabled&&e.id!==t.id&&e.dependsOn.includes(t.id)):[],s=a.length>0,l=s?e(`plugins.blockedByDependents`,{list:a.map(e=>M(e.id)).join(`, `)}):t.enabled?e(`plugins.switchDisable`):e(`plugins.switchEnable`),u=[t.dependsOn.length>0&&`${e(`plugins.metaDepends`)} ${t.dependsOn.map(M).join(`, `)}`,t.libraries.length>0&&`${e(`plugins.metaLibraries`)} ${t.libraries.map(P).join(`, `)}`,t.extends.length>0&&`${e(`plugins.metaExtends`)} ${t.extends.map(e=>F(t.id,e)).join(`, `)}`].filter(Boolean).join(` · `)||`—`;return(0,H.jsxDEV)(C,{className:`flex items-center gap-4 px-4 py-3`,children:[(0,H.jsxDEV)(`div`,{className:`min-w-0 flex-1`,children:[(0,H.jsxDEV)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsxDEV)(`span`,{className:`font-semibold text-text`,children:M(t.id)},void 0,!1,{fileName:J,lineNumber:274,columnNumber:31},this),(0,H.jsxDEV)(X,{plugin:t,busy:p(t.id),onUpdate:()=>V(t)},void 0,!1,{fileName:J,lineNumber:275,columnNumber:31},this)]},void 0,!0,{fileName:J,lineNumber:273,columnNumber:29},this),n&&(0,H.jsxDEV)(`div`,{className:`text-xs text-muted mt-0.5 truncate`,children:n},void 0,!1,{fileName:J,lineNumber:277,columnNumber:45},this),(0,H.jsxDEV)(`div`,{className:`text-xs text-muted mt-0.5 truncate`,children:u},void 0,!1,{fileName:J,lineNumber:278,columnNumber:29},this)]},void 0,!0,{fileName:J,lineNumber:272,columnNumber:27},this),t.hasSettings&&(0,H.jsxDEV)(o,{variant:`ghost`,size:`sm`,type:`button`,className:`shrink-0 border border-border`,asChild:!0,children:(0,H.jsxDEV)(c,{to:`/settings/${t.id}`,title:e(`plugins.settingsTitle`,{defaultValue:`Налаштування`}),"aria-label":e(`plugins.settingsTitle`,{defaultValue:`Налаштування`}),children:(0,H.jsxDEV)(i,{name:`lucide:settings`,size:16},void 0,!1,{fileName:J,lineNumber:293,columnNumber:33},this)},void 0,!1,{fileName:J,lineNumber:288,columnNumber:31},this)},void 0,!1,{fileName:J,lineNumber:281,columnNumber:29},this),(0,H.jsxDEV)(o,{variant:`ghost`,size:`sm`,type:`button`,disabled:p(t.id),onClick:()=>R(t),title:e(`plugins.purgeTitle`),className:`shrink-0 border border-danger/40 text-danger hover:bg-danger/10 hover:text-danger`,children:e(`plugins.purgeButton`)},void 0,!1,{fileName:J,lineNumber:297,columnNumber:27},this),(0,H.jsxDEV)(`span`,{title:l,className:`shrink-0`,children:(0,H.jsxDEV)(W,{checked:t.enabled,disabled:p(t.id)||s,onCheckedChange:()=>z(t),title:l},void 0,!1,{fileName:J,lineNumber:311,columnNumber:29},this)},void 0,!1,{fileName:J,lineNumber:310,columnNumber:27},this)]},t.id,!0,{fileName:J,lineNumber:271,columnNumber:25},this)})},void 0,!1,{fileName:J,lineNumber:242,columnNumber:17},this)]},void 0,!0,{fileName:J,lineNumber:228,columnNumber:15},this)]},void 0,!0,{fileName:J,lineNumber:207,columnNumber:11},this)]},void 0,!0,{fileName:J,lineNumber:172,columnNumber:9},this)]},void 0,!0,{fileName:J,lineNumber:153,columnNumber:5},this)}function X({plugin:e,busy:t,onUpdate:n}){let{t:r}=s(),i=!!e.latestVersion&&e.latestVersion!==e.installedVersion;return(0,H.jsxDEV)(H.Fragment,{children:[(0,H.jsxDEV)(q,{variant:`secondary`,className:`text-[10px] font-medium`,children:[`v`,e.installedVersion]},void 0,!0,{fileName:J,lineNumber:344,columnNumber:7},this),i&&(0,H.jsxDEV)(o,{variant:`ghost`,size:`sm`,type:`button`,disabled:t,onClick:n,title:r(`plugins.updateTitle`,{from:e.installedVersion,to:e.latestVersion}),className:`shrink-0 border border-accent/40 text-accent hover:bg-accent/10 hover:text-accent`,children:r(`plugins.updateButton`)},void 0,!1,{fileName:J,lineNumber:348,columnNumber:9},this)]},void 0,!0,{fileName:J,lineNumber:343,columnNumber:5},this)}export{Y as SettingsPage};
@@ -1,2 +1,2 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-n93t21jb.js";import{w as n,y as r}from"./button-Dlm2GmQs.js";import{t as i}from"./jsx-dev-runtime-CSfA-jUb.js";import{C as a,a as o,d as s,i as c,m as l,n as u,o as d,v as f,y as p}from"./field-frame-9VMMov4O.js";import{T as m,d as h,f as g,g as _,h as v,l as y,n as b,o as x,p as S,s as C}from"./fields-CQxZPdka.js";import{a as w,h as T}from"./shelf-iRNXQLvo.js";import{n as ee}from"./extend-DrbW8fXY.js";import{t as te}from"./plugin-q1oOYqt7.js";import{n as ne,t as E}from"./development-ChLInqDF.js";import{_ as D,a as re,c as O,f as ie,g as k,h as ae,i as A,m as oe,n as se,p as ce,r as le,t as ue,v as de,y as j}from"./micromark-extension-gfm-Cu0AwUgc.js";var fe=r(`arrow-left`,[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]),M=e(t(),1);function pe(e,t={}){let n=t.disabled??new Set,r=e.filter(e=>!n.has(e.id)),i=new Map;for(let e of r){for(let t of e.libraries??[])for(let n of t.shelves)i.set(`${n.library}/${n.shelf}`,e.id);for(let t of e.libraryShelves??[])i.set(`${t.library}/${t.shelf}`,e.id)}let a=(e,t)=>i.get(`${e}/${t}`);for(let e of r)for(let t of e.dependsOn)if(n.has(t))throw Error(`[plugin] '${e.id}' is enabled, but its dependency '${t}' is disabled`);let{order:o,libraries:s,shelves:c,extends_:l}=te(r),u=new Map;for(let e of r)for(let t of e.fieldContribs??[]){let e=`${t.library}/${t.shelf}/${t.field}`,n=u.get(e)??{options:[],suggestions:[]};t.options&&n.options.push(...t.options),t.suggestions&&n.suggestions.push(...t.suggestions),u.set(e,n)}let d=new Map;for(let e of r)for(let t of e.optionLists??[])d.set(t.name,t.options);let f=e=>d.get(e)??[];for(let e of c)for(let[t,n]of w(e.fields)){let r=u.get(`${e.library}/${e.shelf}/${t}`);if(r){if(r.options.length){let e=new Set((n.options??[]).map(e=>e.value));n.options=[...n.options??[],...r.options.filter(t=>!e.has(t.value))]}if(r.suggestions.length){let e=n.hints.suggestions??[],t=new Set(e);n.hints.suggestions=[...e,...r.suggestions.filter(e=>!t.has(e))]}}}let p=new Map;for(let e of c)for(let[t,n]of w(e.fields)){let r=n.hints.source,i=n.options??[],a=r?d.get(r)??[]:[],o=new Set(i.map(e=>e.value)),s=[...i,...a.filter(e=>!o.has(e.value))];n.prim===`select`&&s.length&&b(n,s.map(e=>e.value)),s.length&&(n.options=s,p.set(`${e.library}/${e.shelf}/${t}`,s))}return{order:o,libraries:s,shelves:c,extends_:l,getShelf:(e,t)=>c.find(n=>n.library===e&&n.shelf===t),getLibrary:e=>s.find(t=>t.meta.id===e),getExtendsFor:(e,t)=>l.filter(n=>ee(n,e,t)),getFieldOptions:(e,t,n)=>p.get(`${e}/${t}/${n}`)??[],getOptionList:f,getShelfOwner:a}}var N=null;function me(e){N=pe(e)}function P(){if(!N)throw Error(`[registry] not initialized — call initRegistry() in the boot loader`);return N}var he=(e,t)=>P().getShelf(e,t),ge=(e,t)=>P().getExtendsFor(e,t),_e=e=>P().getOptionList(e),ve=(e,t)=>P().getShelfOwner(e,t),ye=()=>P().libraries,be=()=>P().extends_,xe=()=>P().order,F=i(),I=(0,M.createContext)(()=>void 0),L=()=>(0,M.useContext)(I),Se=e=>e.join(`.`);function R(e){return(t,n)=>t===`pattern`&&n?.messageKey?e(String(n.messageKey)):e(`validation.${t}`,n)}function Ce(e,t){let n={};for(let r of e){let e=Se(r.path?.length?r.path:[r.field]);n[e]||(n[e]=t(r.code,r.params))}return n}function we(e,t){let n={};for(let[r,i]of Object.entries(e))r===t||r.startsWith(t+`.`)||(n[r]=i);return n}var Te=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/render/computed-ctx.tsx`,z={settings:{},global:{}},B=(0,M.createContext)(z),Ee=()=>(0,M.useContext)(B);function De(e,t){return{record:e.values??{},settings:t.settings,global:t.global,meta:{library:e.recordCtx.library,shelf:e.recordCtx.shelf}}}async function V(e){let t=await fetch(`/api/plugins/${e}/settings`);return t.ok?await t.json():{}}function Oe({library:e,shelf:t,children:n}){let[r,i]=(0,M.useState)(z),a=ve(e,t);return(0,M.useEffect)(()=>{let e=!0;return Promise.all([a?V(a):Promise.resolve({}),V(`core`)]).then(([t,n])=>{e&&i({settings:t,global:n})}),()=>{e=!1}},[a]),(0,F.jsxDEV)(B.Provider,{value:r,children:n},void 0,!1,{fileName:Te,lineNumber:57,columnNumber:10},this)}var ke={}.hasOwnProperty,Ae=/^(https?|ircs?|mailto|xmpp)$/i,je=/^https?$/i;function Me(e){let t=e||{},n=!0,r={},i=[[]],a=[],o=[],s=ae([{enter:{blockQuote:se,codeFenced:M,codeFencedFenceInfo:h,codeFencedFenceMeta:h,codeIndented:me,codeText:Y,content:B,definition:Se,definitionDestinationString:Ce,definitionLabelString:h,definitionTitleString:h,emphasis:q,htmlFlow:Fe,htmlText:K,image:he,label:h,link:ge,listItemMarker:ee,listItemValue:T,listOrdered:C,listUnordered:w,paragraph:ue,reference:h,resource:be,resourceDestinationString:xe,resourceTitleString:h,setextHeading:De,strong:J},exit:{atxHeading:Oe,atxHeadingSequence:Ee,autolinkEmail:ze,autolinkProtocol:$,blockQuote:le,characterEscapeValue:H,characterReferenceMarkerHexadecimal:Le,characterReferenceMarkerNumeric:Le,characterReferenceValue:Re,codeFenced:P,codeFencedFence:N,codeFencedFenceInfo:pe,codeFencedFenceMeta:S,codeFlowValue:U,codeIndented:P,codeText:X,codeTextData:H,data:H,definition:z,definitionDestinationString:we,definitionLabelString:R,definitionTitleString:Te,emphasis:Z,hardBreakEscape:W,hardBreakTrailing:W,htmlFlow:G,htmlFlowData:H,htmlText:G,htmlTextData:H,image:L,label:ve,labelText:_e,lineEnding:Pe,link:L,listOrdered:te,listUnordered:re,paragraph:fe,reference:S,referenceString:ye,resource:S,resourceDestinationString:F,resourceTitleString:I,setextHeading:Ne,setextHeadingLineSequence:Me,setextHeadingText:V,strong:Ie,thematicBreak:Q}},...t.htmlExtensions||[]]),c={definitions:r,tightStack:o},l={buffer:h,encode:x,getData:m,lineEndingIfNeeded:b,options:t,raw:v,resume:g,setData:p,tag:_},u=t.defaultLineEnding;return d;function d(e){let t=-1,n=0,r=[],a=[],o=[];for(;++t<e.length;)!u&&(e[t][1].type===D.lineEnding||e[t][1].type===D.lineEndingBlank)&&(u=e[t][2].sliceSerialize(e[t][1])),(e[t][1].type===D.listOrdered||e[t][1].type===D.listUnordered)&&(e[t][0]===`enter`?r.push(t):f(e.slice(r.pop(),t))),e[t][1].type===D.definition&&(e[t][0]===`enter`?(o=k(o,e.slice(n,t)),n=t):(a=k(a,e.slice(n,t+1)),n=t+1));a=k(a,o),a=k(a,e.slice(n)),t=-1;let c=a;for(s.enter.null&&s.enter.null.call(l);++t<e.length;){let e=s[c[t][0]],n=c[t][1].type,r=e[n];ke.call(e,n)&&r&&r.call({sliceSerialize:c[t][2].sliceSerialize,...l},c[t][1])}return s.exit.null&&s.exit.null.call(l),i[0].join(``)}function f(e){let t=e.length,n=0,r=0,i=!1,a;for(;++n<t;){let t=e[n];if(t[1]._container)a=void 0,t[0]===`enter`?r++:r--;else switch(t[1].type){case D.listItemPrefix:t[0]===`exit`&&(a=!0);break;case D.linePrefix:break;case D.lineEndingBlank:t[0]===`enter`&&!r&&(a?a=void 0:i=!0);break;default:a=void 0}}e[0][1]._loose=i}function p(e,t){c[e]=t}function m(e){return c[e]}function h(){i.push([])}function g(){let e=i.pop();return E(e!==void 0,`Cannot resume w/o buffer`),e.join(``)}function _(e){n&&(p(`lastWasTag`,!0),i[i.length-1].push(e))}function v(e){p(`lastWasTag`),i[i.length-1].push(e)}function y(){v(u||`
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-n93t21jb.js";import{w as n,y as r}from"./button-Dlm2GmQs.js";import{t as i}from"./jsx-dev-runtime-CSfA-jUb.js";import{C as a,a as o,d as s,i as c,m as l,n as u,o as d,v as f,y as p}from"./field-frame-UyV2HVbd.js";import{T as m,d as h,f as g,g as _,h as v,l as y,n as b,o as x,p as S,s as C}from"./fields-B4fdbc1_.js";import{a as w,h as T}from"./shelf-e7xL1R3N.js";import{n as ee}from"./extend-DDZLGxKJ.js";import{t as te}from"./plugin-q1oOYqt7.js";import{n as ne,t as E}from"./development-ChLInqDF.js";import{_ as D,a as re,c as O,f as ie,g as k,h as ae,i as A,m as oe,n as se,p as ce,r as le,t as ue,v as de,y as j}from"./micromark-extension-gfm-Cu0AwUgc.js";var fe=r(`arrow-left`,[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]),M=e(t(),1);function pe(e,t={}){let n=t.disabled??new Set,r=e.filter(e=>!n.has(e.id)),i=new Map;for(let e of r){for(let t of e.libraries??[])for(let n of t.shelves)i.set(`${n.library}/${n.shelf}`,e.id);for(let t of e.libraryShelves??[])i.set(`${t.library}/${t.shelf}`,e.id)}let a=(e,t)=>i.get(`${e}/${t}`);for(let e of r)for(let t of e.dependsOn)if(n.has(t))throw Error(`[plugin] '${e.id}' is enabled, but its dependency '${t}' is disabled`);let{order:o,libraries:s,shelves:c,extends_:l}=te(r),u=new Map;for(let e of r)for(let t of e.fieldContribs??[]){let e=`${t.library}/${t.shelf}/${t.field}`,n=u.get(e)??{options:[],suggestions:[]};t.options&&n.options.push(...t.options),t.suggestions&&n.suggestions.push(...t.suggestions),u.set(e,n)}let d=new Map;for(let e of r)for(let t of e.optionLists??[])d.set(t.name,t.options);let f=e=>d.get(e)??[];for(let e of c)for(let[t,n]of w(e.fields)){let r=u.get(`${e.library}/${e.shelf}/${t}`);if(r){if(r.options.length){let e=new Set((n.options??[]).map(e=>e.value));n.options=[...n.options??[],...r.options.filter(t=>!e.has(t.value))]}if(r.suggestions.length){let e=n.hints.suggestions??[],t=new Set(e);n.hints.suggestions=[...e,...r.suggestions.filter(e=>!t.has(e))]}}}let p=new Map;for(let e of c)for(let[t,n]of w(e.fields)){let r=n.hints.source,i=n.options??[],a=r?d.get(r)??[]:[],o=new Set(i.map(e=>e.value)),s=[...i,...a.filter(e=>!o.has(e.value))];n.prim===`select`&&s.length&&b(n,s.map(e=>e.value)),s.length&&(n.options=s,p.set(`${e.library}/${e.shelf}/${t}`,s))}return{order:o,libraries:s,shelves:c,extends_:l,getShelf:(e,t)=>c.find(n=>n.library===e&&n.shelf===t),getLibrary:e=>s.find(t=>t.meta.id===e),getExtendsFor:(e,t)=>l.filter(n=>ee(n,e,t)),getFieldOptions:(e,t,n)=>p.get(`${e}/${t}/${n}`)??[],getOptionList:f,getShelfOwner:a}}var N=null;function me(e){N=pe(e)}function P(){if(!N)throw Error(`[registry] not initialized — call initRegistry() in the boot loader`);return N}var he=(e,t)=>P().getShelf(e,t),ge=(e,t)=>P().getExtendsFor(e,t),_e=e=>P().getOptionList(e),ve=(e,t)=>P().getShelfOwner(e,t),ye=()=>P().libraries,be=()=>P().extends_,xe=()=>P().order,F=i(),I=(0,M.createContext)(()=>void 0),L=()=>(0,M.useContext)(I),Se=e=>e.join(`.`);function R(e){return(t,n)=>t===`pattern`&&n?.messageKey?e(String(n.messageKey)):e(`validation.${t}`,n)}function Ce(e,t){let n={};for(let r of e){let e=Se(r.path?.length?r.path:[r.field]);n[e]||(n[e]=t(r.code,r.params))}return n}function we(e,t){let n={};for(let[r,i]of Object.entries(e))r===t||r.startsWith(t+`.`)||(n[r]=i);return n}var Te=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/render/computed-ctx.tsx`,z={settings:{},global:{}},B=(0,M.createContext)(z),Ee=()=>(0,M.useContext)(B);function De(e,t){return{record:e.values??{},settings:t.settings,global:t.global,meta:{library:e.recordCtx.library,shelf:e.recordCtx.shelf}}}async function V(e){let t=await fetch(`/api/plugins/${e}/settings`);return t.ok?await t.json():{}}function Oe({library:e,shelf:t,children:n}){let[r,i]=(0,M.useState)(z),a=ve(e,t);return(0,M.useEffect)(()=>{let e=!0;return Promise.all([a?V(a):Promise.resolve({}),V(`core`)]).then(([t,n])=>{e&&i({settings:t,global:n})}),()=>{e=!1}},[a]),(0,F.jsxDEV)(B.Provider,{value:r,children:n},void 0,!1,{fileName:Te,lineNumber:57,columnNumber:10},this)}var ke={}.hasOwnProperty,Ae=/^(https?|ircs?|mailto|xmpp)$/i,je=/^https?$/i;function Me(e){let t=e||{},n=!0,r={},i=[[]],a=[],o=[],s=ae([{enter:{blockQuote:se,codeFenced:M,codeFencedFenceInfo:h,codeFencedFenceMeta:h,codeIndented:me,codeText:Y,content:B,definition:Se,definitionDestinationString:Ce,definitionLabelString:h,definitionTitleString:h,emphasis:q,htmlFlow:Fe,htmlText:K,image:he,label:h,link:ge,listItemMarker:ee,listItemValue:T,listOrdered:C,listUnordered:w,paragraph:ue,reference:h,resource:be,resourceDestinationString:xe,resourceTitleString:h,setextHeading:De,strong:J},exit:{atxHeading:Oe,atxHeadingSequence:Ee,autolinkEmail:ze,autolinkProtocol:$,blockQuote:le,characterEscapeValue:H,characterReferenceMarkerHexadecimal:Le,characterReferenceMarkerNumeric:Le,characterReferenceValue:Re,codeFenced:P,codeFencedFence:N,codeFencedFenceInfo:pe,codeFencedFenceMeta:S,codeFlowValue:U,codeIndented:P,codeText:X,codeTextData:H,data:H,definition:z,definitionDestinationString:we,definitionLabelString:R,definitionTitleString:Te,emphasis:Z,hardBreakEscape:W,hardBreakTrailing:W,htmlFlow:G,htmlFlowData:H,htmlText:G,htmlTextData:H,image:L,label:ve,labelText:_e,lineEnding:Pe,link:L,listOrdered:te,listUnordered:re,paragraph:fe,reference:S,referenceString:ye,resource:S,resourceDestinationString:F,resourceTitleString:I,setextHeading:Ne,setextHeadingLineSequence:Me,setextHeadingText:V,strong:Ie,thematicBreak:Q}},...t.htmlExtensions||[]]),c={definitions:r,tightStack:o},l={buffer:h,encode:x,getData:m,lineEndingIfNeeded:b,options:t,raw:v,resume:g,setData:p,tag:_},u=t.defaultLineEnding;return d;function d(e){let t=-1,n=0,r=[],a=[],o=[];for(;++t<e.length;)!u&&(e[t][1].type===D.lineEnding||e[t][1].type===D.lineEndingBlank)&&(u=e[t][2].sliceSerialize(e[t][1])),(e[t][1].type===D.listOrdered||e[t][1].type===D.listUnordered)&&(e[t][0]===`enter`?r.push(t):f(e.slice(r.pop(),t))),e[t][1].type===D.definition&&(e[t][0]===`enter`?(o=k(o,e.slice(n,t)),n=t):(a=k(a,e.slice(n,t+1)),n=t+1));a=k(a,o),a=k(a,e.slice(n)),t=-1;let c=a;for(s.enter.null&&s.enter.null.call(l);++t<e.length;){let e=s[c[t][0]],n=c[t][1].type,r=e[n];ke.call(e,n)&&r&&r.call({sliceSerialize:c[t][2].sliceSerialize,...l},c[t][1])}return s.exit.null&&s.exit.null.call(l),i[0].join(``)}function f(e){let t=e.length,n=0,r=0,i=!1,a;for(;++n<t;){let t=e[n];if(t[1]._container)a=void 0,t[0]===`enter`?r++:r--;else switch(t[1].type){case D.listItemPrefix:t[0]===`exit`&&(a=!0);break;case D.linePrefix:break;case D.lineEndingBlank:t[0]===`enter`&&!r&&(a?a=void 0:i=!0);break;default:a=void 0}}e[0][1]._loose=i}function p(e,t){c[e]=t}function m(e){return c[e]}function h(){i.push([])}function g(){let e=i.pop();return E(e!==void 0,`Cannot resume w/o buffer`),e.join(``)}function _(e){n&&(p(`lastWasTag`,!0),i[i.length-1].push(e))}function v(e){p(`lastWasTag`),i[i.length-1].push(e)}function y(){v(u||`
2
2
  `)}function b(){let e=i[i.length-1],t=e[e.length-1],n=t?t.charCodeAt(t.length-1):j.eof;n===j.lf||n===j.cr||n===j.eof||y()}function x(e){return m(`ignoreEncode`)?e:ce(e)}function S(){g()}function C(e){o.push(!e._loose),b(),_(`<ol`),p(`expectFirstItem`,!0)}function w(e){o.push(!e._loose),b(),_(`<ul`),p(`expectFirstItem`,!0)}function T(e){if(m(`expectFirstItem`)){let t=Number.parseInt(this.sliceSerialize(e),de.numericBaseDecimal);t!==1&&_(` start="`+x(String(t))+`"`)}}function ee(){m(`expectFirstItem`)?_(`>`):A(),b(),_(`<li>`),p(`expectFirstItem`),p(`lastWasTag`)}function te(){A(),o.pop(),y(),_(`</ol>`)}function re(){A(),o.pop(),y(),_(`</ul>`)}function A(){m(`lastWasTag`)&&!m(`slurpAllLineEndings`)&&b(),_(`</li>`),p(`slurpAllLineEndings`)}function se(){o.push(!1),b(),_(`<blockquote>`)}function le(){o.pop(),b(),_(`</blockquote>`),p(`slurpAllLineEndings`)}function ue(){o[o.length-1]||(b(),_(`<p>`)),p(`slurpAllLineEndings`)}function fe(){o[o.length-1]?p(`slurpAllLineEndings`,!0):_(`</p>`)}function M(){b(),_(`<pre><code`),p(`fencesCount`,0)}function pe(){_(` class="language-`+g()+`"`)}function N(){let e=m(`fencesCount`)||0;e||(_(`>`),p(`slurpOneLineEnding`,!0)),p(`fencesCount`,e+1)}function me(){b(),_(`<pre><code>`)}function P(){let e=m(`fencesCount`);e!==void 0&&e<2&&c.tightStack.length>0&&!m(`lastWasTag`)&&y(),m(`flowCodeSeenData`)&&b(),_(`</code></pre>`),e!==void 0&&e<2&&b(),p(`flowCodeSeenData`),p(`fencesCount`),p(`slurpOneLineEnding`)}function he(){a.push({image:!0}),n=void 0}function ge(){a.push({})}function _e(e){a[a.length-1].labelId=this.sliceSerialize(e)}function ve(){a[a.length-1].label=g()}function ye(e){a[a.length-1].referenceId=this.sliceSerialize(e)}function be(){h(),a[a.length-1].destination=``}function xe(){h(),p(`ignoreEncode`,!0)}function F(){a[a.length-1].destination=g(),p(`ignoreEncode`)}function I(){a[a.length-1].title=g()}function L(){let e=a.length-1,i=a[e],o=i.referenceId||i.labelId;E(o!==void 0,"media should have `referenceId` or `labelId`"),E(i.label!==void 0,"media should have `label`");let s=i.destination===void 0?r[ie(o)]:i;for(n=!0;e--;)if(a[e].image){n=void 0;break}i.image?(_(`<img src="`+O(s.destination,t.allowDangerousProtocol?void 0:je)+`" alt="`),v(i.label),_(`"`)):_(`<a href="`+O(s.destination,t.allowDangerousProtocol?void 0:Ae)+`"`),_(s.title?` title="`+s.title+`"`:``),i.image?_(` />`):(_(`>`),v(i.label),_(`</a>`)),a.pop()}function Se(){h(),a.push({})}function R(e){g(),a[a.length-1].labelId=this.sliceSerialize(e)}function Ce(){h(),p(`ignoreEncode`,!0)}function we(){a[a.length-1].destination=g(),p(`ignoreEncode`)}function Te(){a[a.length-1].title=g()}function z(){let e=a[a.length-1];E(e.labelId!==void 0,"media should have `labelId`");let t=ie(e.labelId);g(),ke.call(r,t)||(r[t]=a[a.length-1]),a.pop()}function B(){p(`slurpAllLineEndings`,!0)}function Ee(e){m(`headingRank`)||(p(`headingRank`,this.sliceSerialize(e).length),b(),_(`<h`+m(`headingRank`)+`>`))}function De(){h(),p(`slurpAllLineEndings`)}function V(){p(`slurpAllLineEndings`,!0)}function Oe(){_(`</h`+m(`headingRank`)+`>`),p(`headingRank`)}function Me(e){p(`headingRank`,this.sliceSerialize(e).charCodeAt(0)===j.equalsTo?1:2)}function Ne(){let e=g();b(),_(`<h`+m(`headingRank`)+`>`),v(e),_(`</h`+m(`headingRank`)+`>`),p(`slurpAllLineEndings`),p(`headingRank`)}function H(e){v(x(this.sliceSerialize(e)))}function Pe(e){if(!m(`slurpAllLineEndings`)){if(m(`slurpOneLineEnding`)){p(`slurpOneLineEnding`);return}if(m(`inCodeText`)){v(` `);return}v(x(this.sliceSerialize(e)))}}function U(e){v(x(this.sliceSerialize(e))),p(`flowCodeSeenData`,!0)}function W(){_(`<br />`)}function Fe(){b(),K()}function G(){p(`ignoreEncode`)}function K(){t.allowDangerousHtml&&p(`ignoreEncode`,!0)}function q(){_(`<em>`)}function J(){_(`<strong>`)}function Y(){p(`inCodeText`,!0),_(`<code>`)}function X(){p(`inCodeText`),_(`</code>`)}function Z(){_(`</em>`)}function Ie(){_(`</strong>`)}function Q(){b(),_(`<hr />`)}function Le(e){p(`characterReferenceType`,e.type)}function Re(e){let t=this.sliceSerialize(e);v(x(m(`characterReferenceType`)?oe(t,m(`characterReferenceType`)===D.characterReferenceMarkerNumeric?de.numericBaseDecimal:de.numericBaseHexadecimal):ne(t))),p(`characterReferenceType`)}function $(e){let n=this.sliceSerialize(e);_(`<a href="`+O(n,t.allowDangerousProtocol?void 0:Ae)+`">`),v(x(n)),_(`</a>`)}function ze(e){let t=this.sliceSerialize(e);_(`<a href="`+O(`mailto:`+t)+`">`),v(x(t)),_(`</a>`)}}function Ne(e,t,n){return typeof t!=`string`&&(n=t,t=void 0),Me(n)(A(re(n).document().write(le()(e,t,!0))))}var H=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/Markdown.tsx`;function Pe(e){return Ne(e,{allowDangerousHtml:!0,extensions:[ue()],htmlExtensions:[se()]})}function U({value:e}){return(0,F.jsxDEV)(`div`,{className:`md-static`,dangerouslySetInnerHTML:{__html:Pe(e)}},void 0,!1,{fileName:H,lineNumber:19,columnNumber:10},this)}var W=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/layout.tsx`;function Fe({text:e}){return(0,F.jsxDEV)(U,{value:e},void 0,!1,{fileName:W,lineNumber:30,columnNumber:10},this)}function G(e,{bridge:t,t:n,computed:r}){if(h(e)){let r=e.key;if(t.isHidden(r))return null;let i=a({kind:f(e)});if(!i)return console.warn(`[LayoutRenderer] no renderer for kind '${f(e)}'`),null;let o=e.type;return{node:(0,F.jsxDEV)(`div`,{onBlur:e=>{u(e.relatedTarget)||t.touch(r)},children:(0,F.jsxDEV)(i.Page,{el:e,field:o,fieldKey:r,value:t.getValue(r),onChange:e=>t.setValue(r,e),error:t.error(r),mode:t.mode,label:o.label?n(o.label):void 0,required:t.requiredOf(r),recordCtx:t.recordCtx},void 0,!1,{fileName:W,lineNumber:83,columnNumber:9},this)},void 0,!1,{fileName:W,lineNumber:82,columnNumber:7},this),layout:p(o)}}if(v(e)){let i=a({kind:f(e)});if(!i)return console.warn(`[LayoutRenderer] no renderer for static kind '${f(e)}'`),null;let o=e.type,s=e.value;if(typeof e.value==`function`)try{s=e.value(De(t,r))}catch(e){console.warn(`[computed] value function threw`,e),s=void 0}return{node:(0,F.jsxDEV)(i.Page,{el:e,field:o,value:s,mode:`view`,label:o.label?n(o.label):void 0,recordCtx:t.recordCtx},void 0,!1,{fileName:W,lineNumber:117,columnNumber:7},this),layout:p(o)}}if(y(e)||S(e))return null;if(C(e)){let n=a({kind:`button`});return n?{node:(0,F.jsxDEV)(n.Page,{el:e,value:void 0,mode:t.mode,recordCtx:t.recordCtx},void 0,!1,{fileName:W,lineNumber:140,columnNumber:18},this),layout:`scalar`}:null}return null}function K(e,t,n,r=`wrap`){let i=[],a=[],o=0,s=()=>{a.length&&(i.push({kind:`flow`,items:a,scroll:r===`scroll`}),a=[])};for(let r of e){if(n){if(y(r)){s(),i.push({kind:`divider`});continue}if(S(r)){s(),i.push({kind:`block`,node:(0,F.jsxDEV)(q,{textKey:r.text},void 0,!1,{fileName:W,lineNumber:174,columnNumber:41},this)});continue}if(x(r)){s();continue}if(h(r)||v(r)||C(r)){let e=G(r,n);if(e==null)continue;if(e.layout===`block`)s(),i.push({kind:`block`,node:e.node});else{let t=h(r)?r.key:`static-${o++}`;a.push({key:t,node:(0,F.jsxDEV)(M.Fragment,{children:e.node},t,!1,{fileName:W,lineNumber:191,columnNumber:19},this)})}continue}continue}if(h(r)){let e=t.renderField(r.key,r.type);if(e==null)continue;p(r.type)===`block`?(s(),i.push({kind:`block`,node:e})):a.push({key:r.key,node:(0,F.jsxDEV)(M.Fragment,{children:e},r.key,!1,{fileName:W,lineNumber:207,columnNumber:47},this)})}else y(r)?(s(),i.push({kind:`divider`})):S(r)?(s(),i.push({kind:`block`,node:(0,F.jsxDEV)(q,{textKey:r.text},void 0,!1,{fileName:W,lineNumber:213,columnNumber:39},this)})):x(r)&&s()}return s(),i}function q({textKey:e}){let{t}=n();return(0,F.jsxDEV)(Fe,{text:t(e)},void 0,!1,{fileName:W,lineNumber:225,columnNumber:10},this)}function J(e){let t=[];for(let n of e)n.kind===`divider`&&(!t.length||t[t.length-1].kind===`divider`)||t.push(n);for(;t.length&&t[t.length-1].kind===`divider`;)t.pop();return t}function Y({label:e,icon:t,labelAfter:n,children:r,divider:i=!0}){return(0,F.jsxDEV)(`section`,{className:`flex flex-col min-w-0 ${l}`,children:[e&&(0,F.jsxDEV)(`div`,{className:i?`border-b border-border pb-1.5 mb-2.5`:``,children:(0,F.jsxDEV)(s,{label:e,icon:t,actions:n},void 0,!1,{fileName:W,lineNumber:270,columnNumber:11},this)},void 0,!1,{fileName:W,lineNumber:269,columnNumber:9},this),(0,F.jsxDEV)(`div`,{className:`flex flex-col min-w-0 ${l}`,children:r},void 0,!1,{fileName:W,lineNumber:273,columnNumber:7},this)]},void 0,!0,{fileName:W,lineNumber:267,columnNumber:5},this)}function X({group:e,children:t}){let{t:r}=n();return(0,F.jsxDEV)(Y,{label:e.label?r(e.label):void 0,icon:e.icon,children:t},void 0,!1,{fileName:W,lineNumber:286,columnNumber:5},this)}function Z({group:e,children:t}){let{t:r}=n();return(0,F.jsxDEV)(`div`,{className:`flex flex-col gap-1 min-w-0`,children:[e.label&&(0,F.jsxDEV)(`span`,{className:`text-xs text-muted`,children:r(e.label)},void 0,!1,{fileName:W,lineNumber:297,columnNumber:23},this),t]},void 0,!0,{fileName:W,lineNumber:296,columnNumber:5},this)}function Ie({group:e,renderCell:t}){let{t:r}=n(),i=[[]];for(let t of e.fields)x(t)?i.push([]):i[i.length-1].push(t);let a=Math.max(1,...i.map(e=>e.length)),s=!1,c=[];return i.forEach((e,n)=>{for(let r=0;r<a;r++){let i=e[r],a=i?t(i):null;a&&(s=!0),c.push((0,F.jsxDEV)(`div`,{className:`min-w-0`,children:a},`${n}-${r}`,!1,{fileName:W,lineNumber:333,columnNumber:9},this))}}),s?(0,F.jsxDEV)(o.Provider,{value:!0,children:(0,F.jsxDEV)(Y,{label:e.label?r(e.label):void 0,icon:e.icon,children:(0,F.jsxDEV)(`div`,{className:`overflow-x-auto`,children:(0,F.jsxDEV)(`div`,{className:`grid gap-x-4 gap-y-2 items-start`,style:{gridTemplateColumns:`repeat(${a}, max-content)`},children:c},void 0,!1,{fileName:W,lineNumber:344,columnNumber:11},this)},void 0,!1,{fileName:W,lineNumber:343,columnNumber:9},this)},void 0,!1,{fileName:W,lineNumber:342,columnNumber:7},this)},void 0,!1,{fileName:W,lineNumber:341,columnNumber:5},this):null}function Q(e,t){return e.filter(e=>e.kind!==`divider`).length?e.map((e,n)=>{let r=`${t}-${n}`;switch(e.kind){case`flow`:return(0,F.jsxDEV)(d,{items:e.items,scroll:e.scroll},r,!1,{fileName:W,lineNumber:364,columnNumber:16},this);case`block`:return(0,F.jsxDEV)(M.Fragment,{children:e.node},r,!1,{fileName:W,lineNumber:366,columnNumber:16},this);case`group`:return(0,F.jsxDEV)(M.Fragment,{children:e.node},r,!1,{fileName:W,lineNumber:368,columnNumber:16},this);case`divider`:return(0,F.jsxDEV)(`hr`,{className:`border-border`},r,!1,{fileName:W,lineNumber:370,columnNumber:16},this)}}):null}function Le({items:e,ctx:t}){let{t:r}=n(),i=Ee(),o=t.bridge?{bridge:t.bridge,t:r,computed:i}:void 0,s=[],u=[],d=()=>{u.length&&(s.push(...K(u,t,o)),u=[])};for(let n of e)if(g(n))if(d(),o)if(_(n)){let e=n.key,t=o.bridge.getValue(e),r=o.bridge.mode===`view`&&c(t);if(!o.bridge.isHidden(e)&&!r){let r=a({kind:f(n)});if(r){let i=(0,F.jsxDEV)(r.Page,{el:n,value:t,onChange:t=>o.bridge.setValue(e,t),error:o.bridge.error(e),mode:o.bridge.mode,recordCtx:o.bridge.recordCtx},void 0,!1,{fileName:W,lineNumber:411,columnNumber:17},this);s.push({kind:`group`,node:i})}else console.warn(`[LayoutRenderer] no renderer for storage group kind '${f(n)}'`)}}else if(n.display===`sheet`)s.push({kind:`group`,node:(0,F.jsxDEV)(Ie,{group:n,renderCell:e=>g(e)?null:G(e,o)?.node??null},void 0,!1,{fileName:W,lineNumber:430,columnNumber:15},this)});else{let e=Q(J(K(n.fields,t,o,n.display===`scroll`?`scroll`:`wrap`)),`g`);if(e)if(n.display===`scroll`)s.push({kind:`group`,node:(0,F.jsxDEV)(Z,{group:n,children:e},void 0,!1,{fileName:W,lineNumber:444,columnNumber:49},this)});else{let t=a({kind:`group`});t?s.push({kind:`group`,node:(0,F.jsxDEV)(t.Page,{el:n,value:void 0,mode:o.bridge.mode,recordCtx:o.bridge.recordCtx,children:e},void 0,!1,{fileName:W,lineNumber:451,columnNumber:21},this)}):s.push({kind:`group`,node:(0,F.jsxDEV)(X,{group:n,children:e},void 0,!1,{fileName:W,lineNumber:457,columnNumber:51},this)})}}else if(_(n)){let e=t.renderGroup?.(n.key,n);e&&s.push({kind:`group`,node:e})}else if(n.display===`sheet`)s.push({kind:`group`,node:(0,F.jsxDEV)(Ie,{group:n,renderCell:e=>h(e)?t.renderField(e.key,e.type):null},void 0,!1,{fileName:W,lineNumber:472,columnNumber:13},this)});else{let e=Q(J(K(n.fields,t,void 0,n.display===`scroll`?`scroll`:`wrap`)),`g`);e&&s.push({kind:`group`,node:n.display===`scroll`?(0,F.jsxDEV)(Z,{group:n,children:e},void 0,!1,{fileName:W,lineNumber:489,columnNumber:17},this):(0,F.jsxDEV)(X,{group:n,children:e},void 0,!1,{fileName:W,lineNumber:490,columnNumber:17},this)})}else u.push(n);d();let p=Q(J(s),`l`);return p==null?null:(0,F.jsxDEV)(`div`,{className:`@container flex flex-col min-w-0 ${l}`,children:p},void 0,!1,{fileName:W,lineNumber:503,columnNumber:10},this)}function Re(e){let{fm:t,mode:r,recordCtx:i}=e,{t:a}=n(),o=R(a),[s]=(0,M.useState)(e.initial),[c,l]=(0,M.useState)(s),[u,d]=(0,M.useState)({}),[f,p]=(0,M.useState)(()=>new Set),h=(0,M.useMemo)(()=>new Set(e.hiddenFields??[]),[e.hiddenFields]);return{values:c,setValues:l,initial:s,errors:u,setErrors:d,touched:f,setTouched:p,bridge:(0,M.useMemo)(()=>({mode:r,recordCtx:i,values:c,getValue:e=>c[e],setValue:(e,n)=>{if(l(t=>({...t,[e]:n})),f.has(e)){let r=t[e],i=r?m(r,n):null;d(t=>{let n={...t};return i?n[e]=o(i.code,i.params):delete n[e],n})}},touch:e=>{p(t=>t.has(e)?t:new Set(t).add(e));let n=t[e],r=n?m(n,c[e]):null;d(t=>{let n={...t};return r?n[e]=o(r.code,r.params):delete n[e],n})},isHidden:e=>{let n=t[e];return!!n?.virtual||h.has(e)||T(n?.hidden,c)},requiredOf:e=>T(t[e]?.required,c),error:e=>u[e]}),[c,u,f,h,t,r,i,o])}}var $=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/components/Toolbar.tsx`;function ze({children:e,actions:t}){return(0,F.jsxDEV)(`div`,{className:`eink-solid sticky top-0 z-20 flex h-[52px] items-center justify-between gap-3 bg-bg/85 px-4 backdrop-blur md:px-6 border-b border-border2 shrink-0`,children:[(0,F.jsxDEV)(`div`,{className:`flex items-center gap-2.5 min-w-0`,children:e},void 0,!1,{fileName:$,lineNumber:10,columnNumber:7},this),t&&(0,F.jsxDEV)(`div`,{className:`flex items-center gap-2 shrink-0`,children:t},void 0,!1,{fileName:$,lineNumber:11,columnNumber:19},this)]},void 0,!0,{fileName:$,lineNumber:9,columnNumber:5},this)}export{he as _,U as a,we as c,L as d,be as f,xe as g,_e as h,Y as i,R as l,ye as m,Re as n,Oe as o,ge as p,Le as r,I as s,ze as t,Ce as u,me as v,fe as y};
@@ -1 +1 @@
1
- async function e(e){let t=new FormData;t.append(`file`,e);let n=await fetch(`/api/upload`,{method:`POST`,body:t});return n.ok?(await n.json()).filename:null}function t(e){return`/uploads/${e}`}async function n(e){let t=await fetch(`/api/embed`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({url:e})});return t.ok?await t.json():null}async function r(e,t,n){let r=n&&Object.keys(n).length?`?`+new URLSearchParams(n).toString():``,i=await fetch(`/api/${e}/${t}${r}`);if(!i.ok)throw Error(`Не вдалося завантажити`);return i.json()}async function i(e,t,n){let r=await fetch(`/api/${e}/${t}`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(n)});return r.status===201?{ok:!0,row:await r.json()}:r.status===422?{ok:!1,issues:(await r.json()).issues}:{ok:!1,issues:[{field:``,code:`server`,path:[]}]}}async function a(e,t,n,r){let i=await fetch(`/api/${e}/${t}/${n}`,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify(r)});return i.ok?{ok:!0,row:await i.json()}:i.status===422?{ok:!1,issues:(await i.json()).issues}:{ok:!1,issues:[{field:``,code:`server`,path:[]}]}}async function o(e,t,n){return(await fetch(`/api/${e}/${t}/${n}`,{method:`DELETE`})).status===204}async function s(){let e=await fetch(`/api/plugins`);if(!e.ok)throw Error(`plugins`);return e.json()}async function c(e,t){let n=await fetch(`/api/plugins/${e}`,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify({enabled:t})}),r=await n.json().catch(()=>({}));return n.ok?{ok:!0}:{ok:!1,error:r.error??String(n.status),data:r}}async function l(e){let t=await fetch(`/api/plugins/${e}/update`,{method:`POST`}),n=await t.json().catch(()=>({}));return t.ok?{ok:!0}:{ok:!1,error:n.error??String(t.status),stderr:n.stderr}}async function u(){let e=await fetch(`/api/plugins/update-all`,{method:`POST`}),t=await e.json().catch(()=>({}));return e.ok?{ok:!0,updated:t.updated}:{ok:!1,error:t.error??String(e.status),stderr:t.stderr}}async function d(){let e=await fetch(`/api/runtime`);return e.ok?await e.json():{installedVersion:null,latestVersion:null}}async function f(e,t){let n=await fetch(e,{headers:{"content-type":`application/json`},...t}),r=await n.json().catch(()=>({}));return n.ok?{ok:!0,data:r}:{ok:!1,status:n.status,data:r}}function p(){return fetch(`/api/auth/status`).then(e=>e.json())}function m(e,t,n){return f(`/api/auth/setup`,{method:`POST`,body:JSON.stringify({login:e,password:t,displayName:n})})}function h(e,t){return f(`/api/auth/login`,{method:`POST`,body:JSON.stringify({login:e,password:t})})}async function g(){let e=await fetch(`/api/auth/me`);return e.ok?e.json():null}function _(e){return f(`/api/auth/me`,{method:`PATCH`,body:JSON.stringify(e)})}function v(e){return f(`/api/auth/users${e?`?q=${encodeURIComponent(e)}`:``}`)}function y(e){return f(`/api/auth/users`,{method:`POST`,body:JSON.stringify(e)})}function b(e,t){return f(`/api/auth/users/${e}`,{method:`PATCH`,body:JSON.stringify(t)})}function x(e){return f(`/api/auth/users/${e}`,{method:`DELETE`})}function S(){return f(`/api/auth/tokens`)}function C(e,t){return f(`/api/auth/tokens`,{method:`POST`,body:JSON.stringify({name:e,token:t})})}function w(e){return f(`/api/auth/tokens/${e}`,{method:`DELETE`})}export{b as C,a as S,n as _,_ as a,u as b,y as c,d,s as f,t as g,v as h,p as i,o as l,S as m,g as n,i as o,r as p,m as r,C as s,h as t,x as u,w as v,e as w,l as x,c as y};
1
+ async function e(e){let t=new FormData;t.append(`file`,e);let n=await fetch(`/api/upload`,{method:`POST`,body:t});return n.ok?(await n.json()).filename:null}function t(e){return`/uploads/${e}`}async function n(e){let t=await fetch(`/api/embed`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({url:e})});return t.ok?await t.json():null}async function r(e,t,n){let r=n&&Object.keys(n).length?`?`+new URLSearchParams(n).toString():``,i=await fetch(`/api/${e}/${t}${r}`);if(!i.ok)throw Error(`Не вдалося завантажити`);return i.json()}async function i(e,t,n){let r=await fetch(`/api/${e}/${t}`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(n)});return r.status===201?{ok:!0,row:await r.json()}:r.status===422?{ok:!1,issues:(await r.json()).issues}:{ok:!1,issues:[{field:``,code:`server`,path:[]}]}}async function a(e,t,n,r){let i=await fetch(`/api/${e}/${t}/${n}`,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify(r)});return i.ok?{ok:!0,row:await i.json()}:i.status===422?{ok:!1,issues:(await i.json()).issues}:{ok:!1,issues:[{field:``,code:`server`,path:[]}]}}async function o(e,t,n){return(await fetch(`/api/${e}/${t}/${n}`,{method:`DELETE`})).status===204}async function s(){let e=await fetch(`/api/plugins`);if(!e.ok)throw Error(`plugins`);return e.json()}async function c(e,t){let n=await fetch(`/api/plugins/${e}`,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify({enabled:t})}),r=await n.json().catch(()=>({}));return n.ok?{ok:!0}:{ok:!1,error:r.error??String(n.status),data:r}}async function l(e){let t=await fetch(`/api/plugins/${e}/update`,{method:`POST`}),n=await t.json().catch(()=>({}));return t.ok?{ok:!0}:{ok:!1,error:n.error??String(t.status),stderr:n.stderr}}async function u(){let e=await fetch(`/api/plugins/update-all`,{method:`POST`}),t=await e.json().catch(()=>({}));return e.ok?{ok:!0,updated:t.updated}:{ok:!1,error:t.error??String(e.status),stderr:t.stderr}}async function d(){let e=await fetch(`/api/runtime`);return e.ok?await e.json():{installedVersion:null,latestVersion:null}}async function f(e,t){let n=await fetch(e,{headers:{"content-type":`application/json`},...t}),r=await n.json().catch(()=>({}));return n.ok?{ok:!0,data:r}:{ok:!1,status:n.status,data:r}}function p(){return fetch(`/api/auth/status`).then(e=>e.json())}function m(e,t,n){return f(`/api/auth/setup`,{method:`POST`,body:JSON.stringify({login:e,password:t,displayName:n})})}function h(e,t){return f(`/api/auth/login`,{method:`POST`,body:JSON.stringify({login:e,password:t})})}async function g(){let e=await fetch(`/api/auth/me`);return e.ok?e.json():null}function _(e){return f(`/api/auth/me`,{method:`PATCH`,body:JSON.stringify(e)})}function v(e){return f(`/api/auth/users${e?`?q=${encodeURIComponent(e)}`:``}`)}function y(e){return f(`/api/auth/users`,{method:`POST`,body:JSON.stringify(e)})}function b(e,t){return f(`/api/auth/users/${e}`,{method:`PATCH`,body:JSON.stringify(t)})}function x(e){return f(`/api/auth/users/${e}`,{method:`DELETE`})}function S(){return f(`/api/auth/tokens`)}function C(e,t){return f(`/api/auth/tokens`,{method:`POST`,body:JSON.stringify({name:e,token:t})})}function w(e){return f(`/api/auth/tokens/${e}`,{method:`DELETE`})}function T(){return f(`/api/oauth/grants`)}function E(e){return f(`/api/oauth/grants/${encodeURIComponent(e)}`,{method:`DELETE`})}export{l as C,e as E,u as S,b as T,t as _,_ as a,w as b,y as c,d,T as f,v as g,S as h,p as i,o as l,r as m,g as n,i as o,s as p,m as r,C as s,h as t,x as u,n as v,a as w,c as x,E as y};
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-n93t21jb.js";import{C as n}from"./button-Dlm2GmQs.js";import{i as r,s as i}from"./chunk-KS7C4IRE-B1_Zk64s.js";import{t as a}from"./jsx-dev-runtime-CSfA-jUb.js";import{i as o,n as s}from"./api-j5etRnzW.js";var c=e(t(),1),l=a(),u=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/components/ui/card.tsx`,d=c.forwardRef(({className:e,...t},r)=>(0,l.jsxDEV)(`div`,{ref:r,className:n(`rounded-xl border border-border bg-card text-card-foreground`,e),...t},void 0,!1,{fileName:u,lineNumber:5,columnNumber:3},void 0));d.displayName=`Card`;var f=c.forwardRef(({className:e,...t},r)=>(0,l.jsxDEV)(`div`,{ref:r,className:n(`flex flex-col gap-1.5 p-5`,e),...t},void 0,!1,{fileName:u,lineNumber:10,columnNumber:37},void 0));f.displayName=`CardHeader`;var p=c.forwardRef(({className:e,...t},r)=>(0,l.jsxDEV)(`div`,{ref:r,className:n(`font-semibold leading-none text-text`,e),...t},void 0,!1,{fileName:u,lineNumber:16,columnNumber:5},void 0));p.displayName=`CardTitle`;var m=c.forwardRef(({className:e,...t},r)=>(0,l.jsxDEV)(`div`,{ref:r,className:n(`text-sm text-muted-foreground`,e),...t},void 0,!1,{fileName:u,lineNumber:23,columnNumber:5},void 0));m.displayName=`CardDescription`;var h=c.forwardRef(({className:e,...t},r)=>(0,l.jsxDEV)(`div`,{ref:r,className:n(`p-5 pt-0`,e),...t},void 0,!1,{fileName:u,lineNumber:29,columnNumber:37},void 0));h.displayName=`CardContent`;var g=c.forwardRef(({className:e,...t},r)=>(0,l.jsxDEV)(`div`,{ref:r,className:n(`flex items-center p-5 pt-0`,e),...t},void 0,!1,{fileName:u,lineNumber:35,columnNumber:5},void 0));g.displayName=`CardFooter`;var _=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/auth-context.tsx`,v=(0,c.createContext)(null);function y(){let e=(0,c.useContext)(v);if(!e)throw Error(`useAuth() called outside <AuthGate>`);return e}function b({children:e}){let[t,n]=(0,c.useState)({kind:`loading`});return(0,c.useEffect)(()=>{let e=!1;return(async()=>{try{let t=await o();if(e)return;if(t.needsSetup)return n({kind:`needsSetup`});let r=await s();if(e)return;n(r?{kind:`ready`,user:r}:{kind:`needsLogin`})}catch{e||n({kind:`error`})}})(),()=>{e=!0}},[i().pathname]),t.kind===`loading`?null:t.kind===`needsSetup`?(0,l.jsxDEV)(r,{to:`/setup`,replace:!0},void 0,!1,{fileName:_,lineNumber:41,columnNumber:44},this):t.kind===`needsLogin`?(0,l.jsxDEV)(r,{to:`/login`,replace:!0},void 0,!1,{fileName:_,lineNumber:42,columnNumber:44},this):t.kind===`error`?(0,l.jsxDEV)(`div`,{style:{display:`flex`,minHeight:`100dvh`,alignItems:`center`,justifyContent:`center`,flexDirection:`column`,gap:`1rem`},children:[(0,l.jsxDEV)(`p`,{children:`Could not check your session.`},void 0,!1,{fileName:_,lineNumber:46,columnNumber:9},this),(0,l.jsxDEV)(`button`,{onClick:()=>window.location.reload(),children:`Reload`},void 0,!1,{fileName:_,lineNumber:47,columnNumber:9},this)]},void 0,!0,{fileName:_,lineNumber:45,columnNumber:7},this):(0,l.jsxDEV)(v.Provider,{value:t.user,children:e},void 0,!1,{fileName:_,lineNumber:51,columnNumber:10},this)}export{y as n,d as r,b as t};
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-n93t21jb.js";import{C as n}from"./button-Dlm2GmQs.js";import{i as r,s as i}from"./chunk-KS7C4IRE-B1_Zk64s.js";import{t as a}from"./jsx-dev-runtime-CSfA-jUb.js";import{i as o,n as s}from"./api-V98HaFMa.js";var c=e(t(),1),l=a(),u=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/components/ui/card.tsx`,d=c.forwardRef(({className:e,...t},r)=>(0,l.jsxDEV)(`div`,{ref:r,className:n(`rounded-xl border border-border bg-card text-card-foreground`,e),...t},void 0,!1,{fileName:u,lineNumber:5,columnNumber:3},void 0));d.displayName=`Card`;var f=c.forwardRef(({className:e,...t},r)=>(0,l.jsxDEV)(`div`,{ref:r,className:n(`flex flex-col gap-1.5 p-5`,e),...t},void 0,!1,{fileName:u,lineNumber:10,columnNumber:37},void 0));f.displayName=`CardHeader`;var p=c.forwardRef(({className:e,...t},r)=>(0,l.jsxDEV)(`div`,{ref:r,className:n(`font-semibold leading-none text-text`,e),...t},void 0,!1,{fileName:u,lineNumber:16,columnNumber:5},void 0));p.displayName=`CardTitle`;var m=c.forwardRef(({className:e,...t},r)=>(0,l.jsxDEV)(`div`,{ref:r,className:n(`text-sm text-muted-foreground`,e),...t},void 0,!1,{fileName:u,lineNumber:23,columnNumber:5},void 0));m.displayName=`CardDescription`;var h=c.forwardRef(({className:e,...t},r)=>(0,l.jsxDEV)(`div`,{ref:r,className:n(`p-5 pt-0`,e),...t},void 0,!1,{fileName:u,lineNumber:29,columnNumber:37},void 0));h.displayName=`CardContent`;var g=c.forwardRef(({className:e,...t},r)=>(0,l.jsxDEV)(`div`,{ref:r,className:n(`flex items-center p-5 pt-0`,e),...t},void 0,!1,{fileName:u,lineNumber:35,columnNumber:5},void 0));g.displayName=`CardFooter`;var _=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/auth-context.tsx`,v=(0,c.createContext)(null);function y(){let e=(0,c.useContext)(v);if(!e)throw Error(`useAuth() called outside <AuthGate>`);return e}function b({children:e}){let[t,n]=(0,c.useState)({kind:`loading`});return(0,c.useEffect)(()=>{let e=!1;return(async()=>{try{let t=await o();if(e)return;if(t.needsSetup)return n({kind:`needsSetup`});let r=await s();if(e)return;n(r?{kind:`ready`,user:r}:{kind:`needsLogin`})}catch{e||n({kind:`error`})}})(),()=>{e=!0}},[i().pathname]),t.kind===`loading`?null:t.kind===`needsSetup`?(0,l.jsxDEV)(r,{to:`/setup`,replace:!0},void 0,!1,{fileName:_,lineNumber:41,columnNumber:44},this):t.kind===`needsLogin`?(0,l.jsxDEV)(r,{to:`/login`,replace:!0},void 0,!1,{fileName:_,lineNumber:42,columnNumber:44},this):t.kind===`error`?(0,l.jsxDEV)(`div`,{style:{display:`flex`,minHeight:`100dvh`,alignItems:`center`,justifyContent:`center`,flexDirection:`column`,gap:`1rem`},children:[(0,l.jsxDEV)(`p`,{children:`Could not check your session.`},void 0,!1,{fileName:_,lineNumber:46,columnNumber:9},this),(0,l.jsxDEV)(`button`,{onClick:()=>window.location.reload(),children:`Reload`},void 0,!1,{fileName:_,lineNumber:47,columnNumber:9},this)]},void 0,!0,{fileName:_,lineNumber:45,columnNumber:7},this):(0,l.jsxDEV)(v.Provider,{value:t.user,children:e},void 0,!1,{fileName:_,lineNumber:51,columnNumber:10},this)}export{y as n,d as r,b as t};
@@ -1 +1 @@
1
- import{_ as e,a as t,x as n}from"./fields-CQxZPdka.js";var r={decimal:[[`B`,1],[`KB`,1e3],[`MB`,1e6],[`GB`,1e9],[`TB`,0xe8d4a51000]],binary:[[`B`,1],[`KiB`,1024],[`MiB`,1024**2],[`GiB`,1024**3],[`TiB`,1024**4]]},i=e=>e.hints.system??`decimal`,a=(e,t)=>r[e].find(e=>e[0]===t)?.[1]??1;function o(e,t){let n=r[t],i=n[0];for(let t of n)e>=t[1]&&(i=t);return i}function s(e,t=`decimal`){if(e==null||e===``||Number.isNaN(Number(e)))return``;let n=Number(e),[r,i]=o(n,t);return`${Number((n/i).toFixed(2))} ${r}`}function c(r){let i=n(r),a=t({label:r.label,rules:{...r.rules,min:0},view:r.view});return e(i,{...a,kind:`dataSize`,hints:{...a.hints,system:r.system??`decimal`,unit:r.unit??`GB`}})}function l(e){return c({...e,system:`binary`,unit:`GiB`})}function u(e){return c({...e,system:`decimal`,unit:`GB`})}export{a,i as c,u as i,o as n,s as o,c as r,l as s,r as t};
1
+ import{_ as e,a as t,x as n}from"./fields-B4fdbc1_.js";var r={decimal:[[`B`,1],[`KB`,1e3],[`MB`,1e6],[`GB`,1e9],[`TB`,0xe8d4a51000]],binary:[[`B`,1],[`KiB`,1024],[`MiB`,1024**2],[`GiB`,1024**3],[`TiB`,1024**4]]},i=e=>e.hints.system??`decimal`,a=(e,t)=>r[e].find(e=>e[0]===t)?.[1]??1;function o(e,t){let n=r[t],i=n[0];for(let t of n)e>=t[1]&&(i=t);return i}function s(e,t=`decimal`){if(e==null||e===``||Number.isNaN(Number(e)))return``;let n=Number(e),[r,i]=o(n,t);return`${Number((n/i).toFixed(2))} ${r}`}function c(r){let i=n(r),a=t({label:r.label,rules:{...r.rules,min:0},view:r.view});return e(i,{...a,kind:`dataSize`,hints:{...a.hints,system:r.system??`decimal`,unit:r.unit??`GB`}})}function l(e){return c({...e,system:`binary`,unit:`GiB`})}function u(e){return c({...e,system:`decimal`,unit:`GB`})}export{a,i as c,u as i,o as n,s as o,c as r,l as s,r as t};
@@ -1 +1 @@
1
- import{a as e}from"./shelf-iRNXQLvo.js";function t(t){let n=e(t.fields).map(([e])=>e),r=n.find((e,t)=>n.indexOf(e)!==t);if(r)throw Error(`[extend] ${t.id}: duplicate key '${r}'`);return t}function n(e,t,n){return e.attachTo.some(e=>!(e.library!==t||e.shelf&&e.shelf!==n))}export{n,t};
1
+ import{a as e}from"./shelf-e7xL1R3N.js";function t(t){let n=e(t.fields).map(([e])=>e),r=n.find((e,t)=>n.indexOf(e)!==t);if(r)throw Error(`[extend] ${t.id}: duplicate key '${r}'`);return t}function n(e,t,n){return e.attachTo.some(e=>!(e.library!==t||e.shelf&&e.shelf!==n))}export{n,t};
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-n93t21jb.js";import{a as n,i as r,t as i,v as a,w as o,y as s}from"./button-Dlm2GmQs.js";import{t as c}from"./jsx-dev-runtime-CSfA-jUb.js";import{c as l,d as u,f as d,h as f,l as p,p as m,s as h,u as g}from"./fields-CQxZPdka.js";var _=s(`pencil`,[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}]]),v=e(t(),1),y={};function b(e){if(!e.kinds.length)throw Error(`[render] renderer without kinds`);let t={kinds:e.kinds,layout:e.layout,box:e.box,Page:e.Page,Inline:e.Inline,keys:e.keys};for(let n of e.kinds){if(y[n])throw Error(`[render] kind '${n}' already registered`);y[n]=t}}function x(e){return y[e.kind]}function S(e){if(u(e)||f(e))return e.type.kind;if(d(e))return e.kind??(l(e)?`collection`:g(e)?`embedded`:`group`);if(h(e))return`button`;if(p(e))return`divider`;if(m(e))return`info`;throw Error(`[render] unknown layout element`)}function C(e){let t=x(e)?.layout;return typeof t==`function`?t(e):t??`scalar`}var ee=e=>e.hints.multi===!0||e.hints.multiple===!0?`block`:`scalar`,w={};function te(e,t){if(w[e])throw Error(`[template] '${e}' already registered`);w[e]=t}function ne(e){return w[e]}function T(e){return e===1||e===!0||e===`1`||e===`true`}function E(e,t){return e.prim===`checkbox`?T(t):t??``}async function re(e,t){let n=await t?.(e),r=typeof n==`string`?n:void 0;return{ok:!r,error:r}}function ie(e,t,n){let[r,i]=(0,v.useState)(!1),[a,o]=(0,v.useState)(()=>E(e,t)),[s,c]=(0,v.useState)(!1);return(0,v.useEffect)(()=>{r||o(E(e,t))},[r,e,t]),{editing:r,draft:a,setDraft:o,busy:s,beginEdit:()=>i(!0),cancel:()=>{o(E(e,t)),i(!1)},commit:async(e=a)=>{c(!0);let{ok:t}=await re(e,n);c(!1),t&&i(!1)}}}function D(e,t){return x(e)?.box||(C(e)===`block`?`none`:t)}function ae(e){switch(e){case`title`:return`flex items-center self-start w-full rounded-lg border border-transparent px-3 py-1 text-[28px] font-bold leading-tight`;case`textarea`:return`flex self-start min-h-20 w-full rounded-lg border border-transparent px-3 py-2 text-sm whitespace-pre-wrap`;case`none`:return``;default:return`flex w-full min-w-0 items-center self-start min-h-9 rounded-lg border border-transparent px-2 text-sm`}}var O=c(),k=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/render/chrome.tsx`,A=`gap-2`,j=`gap-6`;function M({children:e}){return(0,O.jsxDEV)(`div`,{className:`border-l-2 border-border pl-3 py-1`,children:e},void 0,!1,{fileName:k,lineNumber:39,columnNumber:10},this)}function N({label:e,required:t,actions:n,reserveAction:r}){return(0,O.jsxDEV)(`div`,{className:`flex items-center gap-2 mb-0.5 min-h-8 ${r?`pr-24`:``}`,children:[(0,O.jsxDEV)(`span`,{className:`min-w-0 text-[11px] font-medium text-muted`,children:[e,t&&(0,O.jsxDEV)(`span`,{className:`text-danger ml-0.5`,children:`*`},void 0,!1,{fileName:k,lineNumber:62,columnNumber:22},this)]},void 0,!0,{fileName:k,lineNumber:60,columnNumber:7},this),n&&(0,O.jsxDEV)(`div`,{className:`ml-auto flex shrink-0 items-center gap-1.5`,children:n},void 0,!1,{fileName:k,lineNumber:64,columnNumber:19},this)]},void 0,!0,{fileName:k,lineNumber:59,columnNumber:5},this)}var P=`flex items-center gap-2 text-[13px] font-semibold`;`${P}`;function F({label:e,icon:t,actions:n,as:i=`h3`}){let a=i,o=R()===0?`text-accent`:`text-muted`;return(0,O.jsxDEV)(a,{className:`${P} ${o}${i===`legend`?` px-1 w-full`:``}`,children:[t&&(0,O.jsxDEV)(r,{name:t,size:16,className:`shrink-0`},void 0,!1,{fileName:k,lineNumber:100,columnNumber:16},this),e,n&&(0,O.jsxDEV)(`span`,{className:`ml-auto flex shrink-0 items-center gap-1.5`,children:n},void 0,!1,{fileName:k,lineNumber:102,columnNumber:19},this)]},void 0,!0,{fileName:k,lineNumber:99,columnNumber:5},this)}var I=`opacity-0 transition-opacity group-hover/field:opacity-100 focus-visible:opacity-100 pointer-coarse:opacity-100`,L=(0,v.createContext)(0),R=()=>(0,v.useContext)(L);function z({depth:e,children:t}){return(0,O.jsxDEV)(L.Provider,{value:e,children:t},void 0,!1,{fileName:k,lineNumber:131,columnNumber:10},this)}function B(e){switch(e&3){case 0:return`group/group`;case 1:return`group/group2`;case 2:return`group/group3`;default:return`group/group4`}}var V=[`opacity-0 transition-opacity group-hover/group:opacity-100 focus-visible:opacity-100 pointer-coarse:opacity-100`,`opacity-0 transition-opacity group-hover/group2:opacity-100 focus-visible:opacity-100 pointer-coarse:opacity-100`,`opacity-0 transition-opacity group-hover/group3:opacity-100 focus-visible:opacity-100 pointer-coarse:opacity-100`,`opacity-0 transition-opacity group-hover/group4:opacity-100 focus-visible:opacity-100 pointer-coarse:opacity-100`];function H(e){return V[e&3]??V[0]}var U=`h-7 w-7 rounded-md border border-border bg-surface/80 text-muted hover:border-accent/60 hover:text-accent`,W=`h-7 w-7 rounded-md border border-accent/40 bg-accent/10 text-accent hover:border-accent hover:bg-accent/20 hover:text-accent`;function G({onEdit:e,variant:t=`inline`,scope:n=`field`}){let{t:r}=o(),a=R(),s=n===`group`?H(a):I;return(0,O.jsxDEV)(i,{type:`button`,variant:`outline`,size:`iconXs`,className:`${t===`overlay`?`absolute right-1 top-0 z-10`:``} ${U} ${s}`,onClick:e,title:r(`actions.edit`),children:(0,O.jsxDEV)(_,{size:13},void 0,!1,{fileName:k,lineNumber:197,columnNumber:7},this)},void 0,!1,{fileName:k,lineNumber:189,columnNumber:5},this)}function K({size:e,busy:t,disabled:r,onSave:s,onCancel:c}){let{t:l}=o(),u=e===`xs`?`iconXs`:`iconSm`,d=e===`xs`?13:14;return(0,O.jsxDEV)(O.Fragment,{children:[(0,O.jsxDEV)(i,{type:`button`,variant:`outline`,size:u,disabled:t||r,onClick:s,className:W,title:l(`actions.save`),children:(0,O.jsxDEV)(a,{size:d},void 0,!1,{fileName:k,lineNumber:235,columnNumber:9},this)},void 0,!1,{fileName:k,lineNumber:226,columnNumber:7},this),(0,O.jsxDEV)(i,{type:`button`,variant:`outline`,size:u,onClick:c,className:`h-7 w-7 rounded-md border border-border bg-surface/80 text-muted hover:border-danger hover:text-danger`,title:l(`actions.cancel`),children:(0,O.jsxDEV)(n,{size:d},void 0,!1,{fileName:k,lineNumber:245,columnNumber:9},this)},void 0,!1,{fileName:k,lineNumber:237,columnNumber:7},this)]},void 0,!0,{fileName:k,lineNumber:225,columnNumber:5},this)}var oe=`min-h-9 px-2 border border-transparent`;function q({geom:e,field:t,children:n}){let r=D(t,e);return r===`none`?(0,O.jsxDEV)(O.Fragment,{children:n},void 0,!1,{fileName:k,lineNumber:263,columnNumber:30},this):(0,O.jsxDEV)(`div`,{className:ae(r),children:n},void 0,!1,{fileName:k,lineNumber:264,columnNumber:10},this)}function J({error:e}){return e?(0,O.jsxDEV)(`p`,{className:`text-xs text-danger flex items-center gap-1 mt-0.5`,children:[(0,O.jsxDEV)(r,{name:`lucide:alert-triangle`,size:12,className:`shrink-0`},void 0,!1,{fileName:k,lineNumber:272,columnNumber:7},this),` `,e]},void 0,!0,{fileName:k,lineNumber:271,columnNumber:5},this):null}var Y=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/render/widgets/flow-row.tsx`,X=(0,v.createContext)(!1),se=()=>(0,v.useContext)(X);function ce({items:e,scroll:t}){return(0,O.jsxDEV)(X.Provider,{value:!0,children:(0,O.jsxDEV)(`div`,{className:`flex gap-x-3 gap-y-2 items-start ${t?`flex-nowrap overflow-x-auto`:`flex-wrap`}`,children:e.map(e=>e.break?(0,O.jsxDEV)(`div`,{className:`basis-full h-0`,"aria-hidden":!0},e.key,!1,{fileName:Y,lineNumber:38,columnNumber:13},this):(0,O.jsxDEV)(`div`,{className:e.full?`basis-full min-w-0`:`flex-none min-w-0 max-w-[min(16rem,100%)]`,children:e.node},e.key,!1,{fileName:Y,lineNumber:40,columnNumber:13},this))},void 0,!1,{fileName:Y,lineNumber:35,columnNumber:7},this)},void 0,!1,{fileName:Y,lineNumber:34,columnNumber:5},this)}function Z(e){return e==null||e===``?!0:Array.isArray(e)?e.length===0:typeof e==`object`&&Object.values(e).every(Z)}var Q=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/render/field-frame.tsx`,le=`[data-slot="combobox-content"],[data-slot="popover-content"],[role="listbox"],[role="dialog"],[role="menu"],[data-scope="date-picker"][data-part="content"]`;function ue(e){let t=e instanceof Element?e:typeof document<`u`?document.activeElement:null;return t instanceof Element&&t.closest(le)!==null}var de=new Set([`file`,`image`,`media`]);function $(e,t){return e.prim===`checkbox`||de.has(e.kind)||e.hints.noEditControl===!0?!0:!Z(t)}function fe(e){let{field:t,value:n,onChange:r,label:i,required:a,error:o,mode:s,geom:c,view:l,edit:u,bare:d,width:f=`w-64`}=e,p=s!==`view`,m=ie(t,n,r),h=se(),g=(e,n,r,i)=>e?u(E(t,n),r):l(n,i);if(d)return(0,O.jsxDEV)(O.Fragment,{children:[g(p,n,e=>r?.(e),r),(0,O.jsxDEV)(J,{error:o},void 0,!1,{fileName:Q,lineNumber:75,columnNumber:9},this)]},void 0,!0,{fileName:Q,lineNumber:73,columnNumber:7},this);if(p)return i===void 0?(0,O.jsxDEV)(`div`,{className:`min-w-0 flex-1`,children:g(!0,n,e=>r?.(e))},void 0,!1,{fileName:Q,lineNumber:83,columnNumber:14},this):(0,O.jsxDEV)(`div`,{className:`group/field ${f}`,children:[(0,O.jsxDEV)(N,{label:i,required:a},void 0,!1,{fileName:Q,lineNumber:87,columnNumber:9},this),g(!0,n,e=>r?.(e)),(0,O.jsxDEV)(J,{error:o},void 0,!1,{fileName:Q,lineNumber:89,columnNumber:9},this)]},void 0,!0,{fileName:Q,lineNumber:86,columnNumber:7},this);if(t.hints.noEditControl===!0){let e=(0,O.jsxDEV)(q,{geom:c,field:t,children:l(n,r)},void 0,!1,{fileName:Q,lineNumber:98,columnNumber:7},this);return i===void 0?e:(0,O.jsxDEV)(`div`,{className:`group/field ${f}`,children:[(0,O.jsxDEV)(N,{label:i,required:a},void 0,!1,{fileName:Q,lineNumber:105,columnNumber:9},this),e,(0,O.jsxDEV)(J,{error:o},void 0,!1,{fileName:Q,lineNumber:107,columnNumber:9},this)]},void 0,!0,{fileName:Q,lineNumber:104,columnNumber:7},this)}if(!$(t,n))return null;let _=t.hints.emphasis,v=t.hints.noLabel===!0||i===void 0,y=(0,O.jsxDEV)(`div`,{className:`min-w-0`,onKeyDown:e=>{e.key===`Escape`&&(e.stopPropagation(),m.cancel())},children:g(!0,m.draft,m.setDraft)},void 0,!1,{fileName:Q,lineNumber:124,columnNumber:5},this),b=(0,O.jsxDEV)(q,{geom:c,field:t,children:g(!1,n,()=>{},r)},void 0,!1,{fileName:Q,lineNumber:138,columnNumber:5},this),x=h?(0,O.jsxDEV)(`div`,{className:`grid min-w-0`,children:[(0,O.jsxDEV)(`div`,{className:`col-start-1 row-start-1 min-w-0`,"aria-hidden":!m.editing,inert:!m.editing||void 0,style:{visibility:m.editing?`visible`:`hidden`},children:y},void 0,!1,{fileName:Q,lineNumber:149,columnNumber:7},this),(0,O.jsxDEV)(`div`,{className:`col-start-1 row-start-1 min-w-0`,style:{visibility:m.editing?`hidden`:`visible`},children:b},void 0,!1,{fileName:Q,lineNumber:157,columnNumber:7},this)]},void 0,!0,{fileName:Q,lineNumber:148,columnNumber:5},this):m.editing?y:b,S=r&&!m.editing?(0,O.jsxDEV)(G,{variant:`overlay`,onEdit:m.beginEdit},void 0,!1,{fileName:Q,lineNumber:170,columnNumber:51},this):null,C=r&&m.editing?(0,O.jsxDEV)(`div`,{className:`absolute right-1 top-0 z-10 flex gap-1`,children:(0,O.jsxDEV)(K,{size:`xs`,busy:m.busy,onSave:()=>m.commit(),onCancel:m.cancel},void 0,!1,{fileName:Q,lineNumber:175,columnNumber:9},this)},void 0,!1,{fileName:Q,lineNumber:174,columnNumber:7},this):null;if(_===`hero`){let e=r?m.editing?(0,O.jsxDEV)(K,{size:`sm`,busy:m.busy,onSave:()=>m.commit(),onCancel:m.cancel},void 0,!1,{fileName:Q,lineNumber:183,columnNumber:11},this):(0,O.jsxDEV)(G,{onEdit:m.beginEdit},void 0,!1,{fileName:Q,lineNumber:184,columnNumber:11},this):null;return(0,O.jsxDEV)(`div`,{className:`group/field flex items-center gap-2 min-w-0`,children:[(0,O.jsxDEV)(`div`,{className:`text-lg font-semibold text-text min-w-0`,children:m.editing?y:g(!1,n,()=>{},r)},void 0,!1,{fileName:Q,lineNumber:188,columnNumber:9},this),e,(0,O.jsxDEV)(J,{error:o},void 0,!1,{fileName:Q,lineNumber:192,columnNumber:9},this)]},void 0,!0,{fileName:Q,lineNumber:187,columnNumber:7},this)}return _===`muted`?(0,O.jsxDEV)(`div`,{className:`group/field grid grid-cols-[110px_1fr] items-center gap-x-3 text-xs text-muted min-w-0`,children:[(0,O.jsxDEV)(`span`,{className:`flex items-center gap-1.5`,children:[i,r?m.editing?(0,O.jsxDEV)(K,{size:`xs`,busy:m.busy,onSave:()=>m.commit(),onCancel:m.cancel},void 0,!1,{fileName:Q,lineNumber:201,columnNumber:11},this):(0,O.jsxDEV)(G,{onEdit:m.beginEdit},void 0,!1,{fileName:Q,lineNumber:202,columnNumber:11},this):null]},void 0,!0,{fileName:Q,lineNumber:206,columnNumber:9},this),(0,O.jsxDEV)(`span`,{className:`min-w-0`,children:m.editing?y:g(!1,n,()=>{},r)},void 0,!1,{fileName:Q,lineNumber:210,columnNumber:9},this),(0,O.jsxDEV)(J,{error:o},void 0,!1,{fileName:Q,lineNumber:211,columnNumber:9},this)]},void 0,!0,{fileName:Q,lineNumber:205,columnNumber:7},this):v?(0,O.jsxDEV)(`div`,{className:`group/field relative min-w-0 pr-8`,children:[x,S,C,(0,O.jsxDEV)(J,{error:o},void 0,!1,{fileName:Q,lineNumber:223,columnNumber:9},this)]},void 0,!0,{fileName:Q,lineNumber:219,columnNumber:7},this):(0,O.jsxDEV)(`div`,{className:`group/field relative ${f}`,children:[(0,O.jsxDEV)(N,{label:i,required:a,reserveAction:!!r},void 0,!1,{fileName:Q,lineNumber:231,columnNumber:7},this),x,S,C,(0,O.jsxDEV)(J,{error:o},void 0,!1,{fileName:Q,lineNumber:235,columnNumber:7},this)]},void 0,!0,{fileName:Q,lineNumber:230,columnNumber:5},this)}export{x as C,te as S,_ as T,T as _,X as a,ee as b,J as c,F as d,j as f,R as g,B as h,Z as i,N as l,A as m,ue as n,ce as o,M as p,$ as r,oe as s,fe as t,z as u,S as v,ne as w,b as x,C as y};
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-n93t21jb.js";import{a as n,i as r,t as i,v as a,w as o,y as s}from"./button-Dlm2GmQs.js";import{t as c}from"./jsx-dev-runtime-CSfA-jUb.js";import{c as l,d as u,f as d,h as f,l as p,p as m,s as h,u as g}from"./fields-B4fdbc1_.js";var _=s(`pencil`,[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}]]),v=e(t(),1),y={};function b(e){if(!e.kinds.length)throw Error(`[render] renderer without kinds`);let t={kinds:e.kinds,layout:e.layout,box:e.box,Page:e.Page,Inline:e.Inline,keys:e.keys};for(let n of e.kinds){if(y[n])throw Error(`[render] kind '${n}' already registered`);y[n]=t}}function x(e){return y[e.kind]}function S(e){if(u(e)||f(e))return e.type.kind;if(d(e))return e.kind??(l(e)?`collection`:g(e)?`embedded`:`group`);if(h(e))return`button`;if(p(e))return`divider`;if(m(e))return`info`;throw Error(`[render] unknown layout element`)}function C(e){let t=x(e)?.layout;return typeof t==`function`?t(e):t??`scalar`}var ee=e=>e.hints.multi===!0||e.hints.multiple===!0?`block`:`scalar`,w={};function te(e,t){if(w[e])throw Error(`[template] '${e}' already registered`);w[e]=t}function ne(e){return w[e]}function T(e){return e===1||e===!0||e===`1`||e===`true`}function E(e,t){return e.prim===`checkbox`?T(t):t??``}async function re(e,t){let n=await t?.(e),r=typeof n==`string`?n:void 0;return{ok:!r,error:r}}function ie(e,t,n){let[r,i]=(0,v.useState)(!1),[a,o]=(0,v.useState)(()=>E(e,t)),[s,c]=(0,v.useState)(!1);return(0,v.useEffect)(()=>{r||o(E(e,t))},[r,e,t]),{editing:r,draft:a,setDraft:o,busy:s,beginEdit:()=>i(!0),cancel:()=>{o(E(e,t)),i(!1)},commit:async(e=a)=>{c(!0);let{ok:t}=await re(e,n);c(!1),t&&i(!1)}}}function D(e,t){return x(e)?.box||(C(e)===`block`?`none`:t)}function ae(e){switch(e){case`title`:return`flex items-center self-start w-full rounded-lg border border-transparent px-3 py-1 text-[28px] font-bold leading-tight`;case`textarea`:return`flex self-start min-h-20 w-full rounded-lg border border-transparent px-3 py-2 text-sm whitespace-pre-wrap`;case`none`:return``;default:return`flex w-full min-w-0 items-center self-start min-h-9 rounded-lg border border-transparent px-2 text-sm`}}var O=c(),k=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/render/chrome.tsx`,A=`gap-2`,j=`gap-6`;function M({children:e}){return(0,O.jsxDEV)(`div`,{className:`border-l-2 border-border pl-3 py-1`,children:e},void 0,!1,{fileName:k,lineNumber:39,columnNumber:10},this)}function N({label:e,required:t,actions:n,reserveAction:r}){return(0,O.jsxDEV)(`div`,{className:`flex items-center gap-2 mb-0.5 min-h-8 ${r?`pr-24`:``}`,children:[(0,O.jsxDEV)(`span`,{className:`min-w-0 text-[11px] font-medium text-muted`,children:[e,t&&(0,O.jsxDEV)(`span`,{className:`text-danger ml-0.5`,children:`*`},void 0,!1,{fileName:k,lineNumber:62,columnNumber:22},this)]},void 0,!0,{fileName:k,lineNumber:60,columnNumber:7},this),n&&(0,O.jsxDEV)(`div`,{className:`ml-auto flex shrink-0 items-center gap-1.5`,children:n},void 0,!1,{fileName:k,lineNumber:64,columnNumber:19},this)]},void 0,!0,{fileName:k,lineNumber:59,columnNumber:5},this)}var P=`flex items-center gap-2 text-[13px] font-semibold`;`${P}`;function F({label:e,icon:t,actions:n,as:i=`h3`}){let a=i,o=R()===0?`text-accent`:`text-muted`;return(0,O.jsxDEV)(a,{className:`${P} ${o}${i===`legend`?` px-1 w-full`:``}`,children:[t&&(0,O.jsxDEV)(r,{name:t,size:16,className:`shrink-0`},void 0,!1,{fileName:k,lineNumber:100,columnNumber:16},this),e,n&&(0,O.jsxDEV)(`span`,{className:`ml-auto flex shrink-0 items-center gap-1.5`,children:n},void 0,!1,{fileName:k,lineNumber:102,columnNumber:19},this)]},void 0,!0,{fileName:k,lineNumber:99,columnNumber:5},this)}var I=`opacity-0 transition-opacity group-hover/field:opacity-100 focus-visible:opacity-100 pointer-coarse:opacity-100`,L=(0,v.createContext)(0),R=()=>(0,v.useContext)(L);function z({depth:e,children:t}){return(0,O.jsxDEV)(L.Provider,{value:e,children:t},void 0,!1,{fileName:k,lineNumber:131,columnNumber:10},this)}function B(e){switch(e&3){case 0:return`group/group`;case 1:return`group/group2`;case 2:return`group/group3`;default:return`group/group4`}}var V=[`opacity-0 transition-opacity group-hover/group:opacity-100 focus-visible:opacity-100 pointer-coarse:opacity-100`,`opacity-0 transition-opacity group-hover/group2:opacity-100 focus-visible:opacity-100 pointer-coarse:opacity-100`,`opacity-0 transition-opacity group-hover/group3:opacity-100 focus-visible:opacity-100 pointer-coarse:opacity-100`,`opacity-0 transition-opacity group-hover/group4:opacity-100 focus-visible:opacity-100 pointer-coarse:opacity-100`];function H(e){return V[e&3]??V[0]}var U=`h-7 w-7 rounded-md border border-border bg-surface/80 text-muted hover:border-accent/60 hover:text-accent`,W=`h-7 w-7 rounded-md border border-accent/40 bg-accent/10 text-accent hover:border-accent hover:bg-accent/20 hover:text-accent`;function G({onEdit:e,variant:t=`inline`,scope:n=`field`}){let{t:r}=o(),a=R(),s=n===`group`?H(a):I;return(0,O.jsxDEV)(i,{type:`button`,variant:`outline`,size:`iconXs`,className:`${t===`overlay`?`absolute right-1 top-0 z-10`:``} ${U} ${s}`,onClick:e,title:r(`actions.edit`),children:(0,O.jsxDEV)(_,{size:13},void 0,!1,{fileName:k,lineNumber:197,columnNumber:7},this)},void 0,!1,{fileName:k,lineNumber:189,columnNumber:5},this)}function K({size:e,busy:t,disabled:r,onSave:s,onCancel:c}){let{t:l}=o(),u=e===`xs`?`iconXs`:`iconSm`,d=e===`xs`?13:14;return(0,O.jsxDEV)(O.Fragment,{children:[(0,O.jsxDEV)(i,{type:`button`,variant:`outline`,size:u,disabled:t||r,onClick:s,className:W,title:l(`actions.save`),children:(0,O.jsxDEV)(a,{size:d},void 0,!1,{fileName:k,lineNumber:235,columnNumber:9},this)},void 0,!1,{fileName:k,lineNumber:226,columnNumber:7},this),(0,O.jsxDEV)(i,{type:`button`,variant:`outline`,size:u,onClick:c,className:`h-7 w-7 rounded-md border border-border bg-surface/80 text-muted hover:border-danger hover:text-danger`,title:l(`actions.cancel`),children:(0,O.jsxDEV)(n,{size:d},void 0,!1,{fileName:k,lineNumber:245,columnNumber:9},this)},void 0,!1,{fileName:k,lineNumber:237,columnNumber:7},this)]},void 0,!0,{fileName:k,lineNumber:225,columnNumber:5},this)}var oe=`min-h-9 px-2 border border-transparent`;function q({geom:e,field:t,children:n}){let r=D(t,e);return r===`none`?(0,O.jsxDEV)(O.Fragment,{children:n},void 0,!1,{fileName:k,lineNumber:263,columnNumber:30},this):(0,O.jsxDEV)(`div`,{className:ae(r),children:n},void 0,!1,{fileName:k,lineNumber:264,columnNumber:10},this)}function J({error:e}){return e?(0,O.jsxDEV)(`p`,{className:`text-xs text-danger flex items-center gap-1 mt-0.5`,children:[(0,O.jsxDEV)(r,{name:`lucide:alert-triangle`,size:12,className:`shrink-0`},void 0,!1,{fileName:k,lineNumber:272,columnNumber:7},this),` `,e]},void 0,!0,{fileName:k,lineNumber:271,columnNumber:5},this):null}var Y=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/render/widgets/flow-row.tsx`,X=(0,v.createContext)(!1),se=()=>(0,v.useContext)(X);function ce({items:e,scroll:t}){return(0,O.jsxDEV)(X.Provider,{value:!0,children:(0,O.jsxDEV)(`div`,{className:`flex gap-x-3 gap-y-2 items-start ${t?`flex-nowrap overflow-x-auto`:`flex-wrap`}`,children:e.map(e=>e.break?(0,O.jsxDEV)(`div`,{className:`basis-full h-0`,"aria-hidden":!0},e.key,!1,{fileName:Y,lineNumber:38,columnNumber:13},this):(0,O.jsxDEV)(`div`,{className:e.full?`basis-full min-w-0`:`flex-none min-w-0 max-w-[min(16rem,100%)]`,children:e.node},e.key,!1,{fileName:Y,lineNumber:40,columnNumber:13},this))},void 0,!1,{fileName:Y,lineNumber:35,columnNumber:7},this)},void 0,!1,{fileName:Y,lineNumber:34,columnNumber:5},this)}function Z(e){return e==null||e===``?!0:Array.isArray(e)?e.length===0:typeof e==`object`&&Object.values(e).every(Z)}var Q=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/render/field-frame.tsx`,le=`[data-slot="combobox-content"],[data-slot="popover-content"],[role="listbox"],[role="dialog"],[role="menu"],[data-scope="date-picker"][data-part="content"]`;function ue(e){let t=e instanceof Element?e:typeof document<`u`?document.activeElement:null;return t instanceof Element&&t.closest(le)!==null}var de=new Set([`file`,`image`,`media`]);function $(e,t){return e.prim===`checkbox`||de.has(e.kind)||e.hints.noEditControl===!0?!0:!Z(t)}function fe(e){let{field:t,value:n,onChange:r,label:i,required:a,error:o,mode:s,geom:c,view:l,edit:u,bare:d,width:f=`w-64`}=e,p=s!==`view`,m=ie(t,n,r),h=se(),g=(e,n,r,i)=>e?u(E(t,n),r):l(n,i);if(d)return(0,O.jsxDEV)(O.Fragment,{children:[g(p,n,e=>r?.(e),r),(0,O.jsxDEV)(J,{error:o},void 0,!1,{fileName:Q,lineNumber:75,columnNumber:9},this)]},void 0,!0,{fileName:Q,lineNumber:73,columnNumber:7},this);if(p)return i===void 0?(0,O.jsxDEV)(`div`,{className:`min-w-0 flex-1`,children:g(!0,n,e=>r?.(e))},void 0,!1,{fileName:Q,lineNumber:83,columnNumber:14},this):(0,O.jsxDEV)(`div`,{className:`group/field ${f}`,children:[(0,O.jsxDEV)(N,{label:i,required:a},void 0,!1,{fileName:Q,lineNumber:87,columnNumber:9},this),g(!0,n,e=>r?.(e)),(0,O.jsxDEV)(J,{error:o},void 0,!1,{fileName:Q,lineNumber:89,columnNumber:9},this)]},void 0,!0,{fileName:Q,lineNumber:86,columnNumber:7},this);if(t.hints.noEditControl===!0){let e=(0,O.jsxDEV)(q,{geom:c,field:t,children:l(n,r)},void 0,!1,{fileName:Q,lineNumber:98,columnNumber:7},this);return i===void 0?e:(0,O.jsxDEV)(`div`,{className:`group/field ${f}`,children:[(0,O.jsxDEV)(N,{label:i,required:a},void 0,!1,{fileName:Q,lineNumber:105,columnNumber:9},this),e,(0,O.jsxDEV)(J,{error:o},void 0,!1,{fileName:Q,lineNumber:107,columnNumber:9},this)]},void 0,!0,{fileName:Q,lineNumber:104,columnNumber:7},this)}if(!$(t,n))return null;let _=t.hints.emphasis,v=t.hints.noLabel===!0||i===void 0,y=(0,O.jsxDEV)(`div`,{className:`min-w-0`,onKeyDown:e=>{e.key===`Escape`&&(e.stopPropagation(),m.cancel())},children:g(!0,m.draft,m.setDraft)},void 0,!1,{fileName:Q,lineNumber:124,columnNumber:5},this),b=(0,O.jsxDEV)(q,{geom:c,field:t,children:g(!1,n,()=>{},r)},void 0,!1,{fileName:Q,lineNumber:138,columnNumber:5},this),x=h?(0,O.jsxDEV)(`div`,{className:`grid min-w-0`,children:[(0,O.jsxDEV)(`div`,{className:`col-start-1 row-start-1 min-w-0`,"aria-hidden":!m.editing,inert:!m.editing||void 0,style:{visibility:m.editing?`visible`:`hidden`},children:y},void 0,!1,{fileName:Q,lineNumber:149,columnNumber:7},this),(0,O.jsxDEV)(`div`,{className:`col-start-1 row-start-1 min-w-0`,style:{visibility:m.editing?`hidden`:`visible`},children:b},void 0,!1,{fileName:Q,lineNumber:157,columnNumber:7},this)]},void 0,!0,{fileName:Q,lineNumber:148,columnNumber:5},this):m.editing?y:b,S=r&&!m.editing?(0,O.jsxDEV)(G,{variant:`overlay`,onEdit:m.beginEdit},void 0,!1,{fileName:Q,lineNumber:170,columnNumber:51},this):null,C=r&&m.editing?(0,O.jsxDEV)(`div`,{className:`absolute right-1 top-0 z-10 flex gap-1`,children:(0,O.jsxDEV)(K,{size:`xs`,busy:m.busy,onSave:()=>m.commit(),onCancel:m.cancel},void 0,!1,{fileName:Q,lineNumber:175,columnNumber:9},this)},void 0,!1,{fileName:Q,lineNumber:174,columnNumber:7},this):null;if(_===`hero`){let e=r?m.editing?(0,O.jsxDEV)(K,{size:`sm`,busy:m.busy,onSave:()=>m.commit(),onCancel:m.cancel},void 0,!1,{fileName:Q,lineNumber:183,columnNumber:11},this):(0,O.jsxDEV)(G,{onEdit:m.beginEdit},void 0,!1,{fileName:Q,lineNumber:184,columnNumber:11},this):null;return(0,O.jsxDEV)(`div`,{className:`group/field flex items-center gap-2 min-w-0`,children:[(0,O.jsxDEV)(`div`,{className:`text-lg font-semibold text-text min-w-0`,children:m.editing?y:g(!1,n,()=>{},r)},void 0,!1,{fileName:Q,lineNumber:188,columnNumber:9},this),e,(0,O.jsxDEV)(J,{error:o},void 0,!1,{fileName:Q,lineNumber:192,columnNumber:9},this)]},void 0,!0,{fileName:Q,lineNumber:187,columnNumber:7},this)}return _===`muted`?(0,O.jsxDEV)(`div`,{className:`group/field grid grid-cols-[110px_1fr] items-center gap-x-3 text-xs text-muted min-w-0`,children:[(0,O.jsxDEV)(`span`,{className:`flex items-center gap-1.5`,children:[i,r?m.editing?(0,O.jsxDEV)(K,{size:`xs`,busy:m.busy,onSave:()=>m.commit(),onCancel:m.cancel},void 0,!1,{fileName:Q,lineNumber:201,columnNumber:11},this):(0,O.jsxDEV)(G,{onEdit:m.beginEdit},void 0,!1,{fileName:Q,lineNumber:202,columnNumber:11},this):null]},void 0,!0,{fileName:Q,lineNumber:206,columnNumber:9},this),(0,O.jsxDEV)(`span`,{className:`min-w-0`,children:m.editing?y:g(!1,n,()=>{},r)},void 0,!1,{fileName:Q,lineNumber:210,columnNumber:9},this),(0,O.jsxDEV)(J,{error:o},void 0,!1,{fileName:Q,lineNumber:211,columnNumber:9},this)]},void 0,!0,{fileName:Q,lineNumber:205,columnNumber:7},this):v?(0,O.jsxDEV)(`div`,{className:`group/field relative min-w-0 pr-8`,children:[x,S,C,(0,O.jsxDEV)(J,{error:o},void 0,!1,{fileName:Q,lineNumber:223,columnNumber:9},this)]},void 0,!0,{fileName:Q,lineNumber:219,columnNumber:7},this):(0,O.jsxDEV)(`div`,{className:`group/field relative ${f}`,children:[(0,O.jsxDEV)(N,{label:i,required:a,reserveAction:!!r},void 0,!1,{fileName:Q,lineNumber:231,columnNumber:7},this),x,S,C,(0,O.jsxDEV)(J,{error:o},void 0,!1,{fileName:Q,lineNumber:235,columnNumber:7},this)]},void 0,!0,{fileName:Q,lineNumber:230,columnNumber:5},this)}export{x as C,te as S,_ as T,T as _,X as a,ee as b,J as c,F as d,j as f,R as g,B as h,Z as i,N as l,A as m,ue as n,ce as o,M as p,$ as r,oe as s,fe as t,z as u,S as v,ne as w,b as x,C as y};