@nice2dev/ui 1.0.6 → 1.0.10

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 (137) hide show
  1. package/dist/NiceAPIFlow.doc-DnQLPUie.js +30 -0
  2. package/dist/NiceAPIFlow.doc-Dx4qw1lm.cjs +6 -0
  3. package/dist/NiceBranchManager.doc-BXjiENlD.cjs +6 -0
  4. package/dist/NiceBranchManager.doc-xLB82YwU.js +30 -0
  5. package/dist/NiceButton-CDiS45Ya.cjs +1 -0
  6. package/dist/NiceButton-D9l39Rs7.js +595 -0
  7. package/dist/NiceCodeTemplate.doc-BWxTE4C_.cjs +6 -0
  8. package/dist/NiceCodeTemplate.doc-CA2U5F-v.js +30 -0
  9. package/dist/NiceDataBranchGraph.doc-CkitupWc.js +29 -0
  10. package/dist/NiceDataBranchGraph.doc-DDUgipqH.cjs +5 -0
  11. package/dist/NiceDataBranchManager.doc-B0ODKOs4.js +30 -0
  12. package/dist/NiceDataBranchManager.doc-CC5o8ihs.cjs +6 -0
  13. package/dist/NiceDataConflictResolver.doc-CdzScNie.cjs +5 -0
  14. package/dist/NiceDataConflictResolver.doc-V8vxYAeo.js +29 -0
  15. package/dist/NiceDataDiffViewer.doc-CR14Bq3A.cjs +6 -0
  16. package/dist/NiceDataDiffViewer.doc-w2I2QjhX.js +30 -0
  17. package/dist/NiceDataMapper.doc-C7jSyHRM.js +30 -0
  18. package/dist/NiceDataMapper.doc-DXjQHz87.cjs +6 -0
  19. package/dist/NiceDataMergeBuilder.doc-CV32WC_w.cjs +6 -0
  20. package/dist/NiceDataMergeBuilder.doc-DtuYb3nx.js +30 -0
  21. package/dist/NiceDataSnapshot.doc-CFLkY3ry.js +30 -0
  22. package/dist/NiceDataSnapshot.doc-CpZyQ17u.cjs +6 -0
  23. package/dist/NiceErrorBoundary-B5nF-OVn.cjs +1 -0
  24. package/dist/NiceErrorBoundary-BAeqfoSc.cjs +1 -0
  25. package/dist/NiceErrorBoundary-D75yr_WE.js +762 -0
  26. package/dist/NiceErrorBoundary-niMx1aSJ.js +837 -0
  27. package/dist/NiceEventOrchestrator.doc-C4SJfIDV.js +30 -0
  28. package/dist/NiceEventOrchestrator.doc-CxjsLxBG.cjs +6 -0
  29. package/dist/NiceForm-CKoJA6NG.js +5131 -0
  30. package/dist/NiceForm-D7xnpnRJ.cjs +382 -0
  31. package/dist/NiceForm.css +1 -0
  32. package/dist/NiceGitBlame.doc-BG3_K9_0.cjs +6 -0
  33. package/dist/NiceGitBlame.doc-DrJABEat.js +30 -0
  34. package/dist/NiceGitConflictResolver.doc-BK7hAfz6.js +30 -0
  35. package/dist/NiceGitConflictResolver.doc-CgroGM9_.cjs +6 -0
  36. package/dist/NiceGitDiffViewer.doc-BAwgcY_3.cjs +6 -0
  37. package/dist/NiceGitDiffViewer.doc-BXKJeP-E.js +30 -0
  38. package/dist/NiceGitGraph.doc-B-WtGuzn.cjs +5 -0
  39. package/dist/NiceGitGraph.doc-DxnDPCgC.js +29 -0
  40. package/dist/NiceGitHooks.doc-BrEizvMp.js +29 -0
  41. package/dist/NiceGitHooks.doc-C4EdV5zj.cjs +5 -0
  42. package/dist/NiceMergeRequestBuilder.doc-C5p8mYuh.cjs +6 -0
  43. package/dist/NiceMergeRequestBuilder.doc-Ct9RCmU8.js +30 -0
  44. package/dist/NiceModal-1QX7NhyH.js +95 -0
  45. package/dist/NiceModal-CAwsKVQ2.cjs +1 -0
  46. package/dist/NiceModuleLifecyclePanel-Brg1RLwi.cjs +1 -0
  47. package/dist/NiceModuleLifecyclePanel-C9xMSjOF.cjs +1 -0
  48. package/dist/NiceModuleLifecyclePanel-CMrPbSw9.js +5249 -0
  49. package/dist/NiceModuleLifecyclePanel-I_TXRiiY.js +5053 -0
  50. package/dist/NiceModuleLifecyclePanel.css +1 -0
  51. package/dist/NicePagination-DbE-uOkl.js +171 -0
  52. package/dist/NicePagination-DlealakT.cjs +1 -0
  53. package/dist/NicePinCodeInput-B8cI8zu8.js +11830 -0
  54. package/dist/NicePinCodeInput-CrMfdxxc.js +15287 -0
  55. package/dist/NicePinCodeInput-D0aF9MK8.cjs +692 -0
  56. package/dist/NicePinCodeInput-SGQaHvpE.cjs +419 -0
  57. package/dist/NicePinCodeInput.css +1 -1
  58. package/dist/NicePipelineEditor.doc-0eGt8zbX.cjs +5 -0
  59. package/dist/NicePipelineEditor.doc-DTmaOebn.js +29 -0
  60. package/dist/NicePipelineMonitor.doc-67CmsRcf.cjs +5 -0
  61. package/dist/NicePipelineMonitor.doc-mSMdhuG8.js +29 -0
  62. package/dist/NiceSavedQueryPanel-BZNvqSQW.cjs +596 -0
  63. package/dist/NiceSavedQueryPanel-CUAsdOjJ.js +6190 -0
  64. package/dist/NiceSavedQueryPanel-CZ5bYOe_.js +6449 -0
  65. package/dist/NiceSavedQueryPanel-Ce2s060j.cjs +596 -0
  66. package/dist/NiceStateDesigner.doc-B36u0hNU.js +29 -0
  67. package/dist/NiceStateDesigner.doc-MPmvNHSx.cjs +5 -0
  68. package/dist/NiceTabs-DvOmxKyQ.cjs +1 -0
  69. package/dist/NiceTabs-DzLHzwuA.js +1636 -0
  70. package/dist/NiceTestBuilder.doc-BFInj8GJ.js +30 -0
  71. package/dist/NiceTestBuilder.doc-CB03U_uR.cjs +6 -0
  72. package/dist/NiceToggle-CaY1u82g.js +277 -0
  73. package/dist/NiceToggle-DFJFQv_Z.cjs +1 -0
  74. package/dist/NiceWindow-CVgkxcCz.cjs +1 -0
  75. package/dist/NiceWindow-DeC83yfE.js +1409 -0
  76. package/dist/NiceWindow-IdHAcP70.cjs +1 -0
  77. package/dist/NiceWindow-SiCaREbq.js +1408 -0
  78. package/dist/charts-BAS21jkC.js +4621 -0
  79. package/dist/charts-Bx_kNBsE.js +4280 -0
  80. package/dist/charts-DECVsCHX.cjs +754 -0
  81. package/dist/charts-DShUbWrP.cjs +759 -0
  82. package/dist/charts.cjs +1 -1
  83. package/dist/charts.css +1 -0
  84. package/dist/charts.d.ts +45 -48
  85. package/dist/charts.mjs +1 -1
  86. package/dist/core-BZBTsGWN.cjs +96 -0
  87. package/dist/core-BpghV7Ls.js +17555 -0
  88. package/dist/core-C2ZmWe_u.cjs +96 -0
  89. package/dist/core-Da43q-pO.js +22094 -0
  90. package/dist/data-branching-CJlrg8qf.cjs +1 -0
  91. package/dist/data-branching-DCUwI53s.js +6121 -0
  92. package/dist/data-branching-De4ExX-S.cjs +1 -0
  93. package/dist/data-branching-DiRfob1f.js +6071 -0
  94. package/dist/data-branching.cjs +1 -0
  95. package/dist/data-branching.d.ts +364 -0
  96. package/dist/data-branching.mjs +9 -0
  97. package/dist/data.cjs +1 -1
  98. package/dist/data.d.ts +206 -192
  99. package/dist/data.mjs +1 -1
  100. package/dist/devops-BnYinjkT.cjs +17 -0
  101. package/dist/devops-CXynFG3X.cjs +17 -0
  102. package/dist/devops-Ckh57eti.js +7198 -0
  103. package/dist/devops-D0TfzV5B.js +7660 -0
  104. package/dist/devops.cjs +1 -0
  105. package/dist/devops.d.ts +721 -0
  106. package/dist/devops.mjs +12 -0
  107. package/dist/editors.cjs +1 -1
  108. package/dist/editors.d.ts +311 -393
  109. package/dist/editors.mjs +61 -64
  110. package/dist/feedback.cjs +1 -1
  111. package/dist/feedback.d.ts +3 -44
  112. package/dist/feedback.mjs +11 -10
  113. package/dist/index-B8wxZ8Ps.cjs +5192 -0
  114. package/dist/index-CBIZ6mTQ.cjs +5734 -0
  115. package/dist/index-CIl98Vbm.js +72951 -0
  116. package/dist/index-pAuGTbuB.js +57319 -0
  117. package/dist/index.cjs +1 -1
  118. package/dist/index.css +1 -1
  119. package/dist/index.d.ts +4673 -10015
  120. package/dist/index.mjs +880 -969
  121. package/dist/lazy.cjs +1 -0
  122. package/dist/lazy.d.ts +1848 -0
  123. package/dist/lazy.mjs +98 -0
  124. package/dist/navigation.cjs +1 -1
  125. package/dist/navigation.d.ts +151 -216
  126. package/dist/navigation.mjs +111 -48
  127. package/dist/no-code-B5bzduNP.cjs +332 -0
  128. package/dist/no-code-BCuadkm4.cjs +332 -0
  129. package/dist/no-code-D8RJ7lx0.js +7064 -0
  130. package/dist/no-code-TL7PyulA.js +7005 -0
  131. package/dist/no-code.cjs +1 -0
  132. package/dist/no-code.d.ts +833 -0
  133. package/dist/no-code.mjs +13 -0
  134. package/dist/overlays.cjs +1 -1
  135. package/dist/overlays.d.ts +13 -45
  136. package/dist/overlays.mjs +490 -24
  137. package/package.json +24 -2
@@ -0,0 +1,596 @@
1
+ "use strict";const e=require("react/jsx-runtime"),t=require("react"),Ie=require("./core-C2ZmWe_u.cjs"),Jn=require("./NiceForm-D7xnpnRJ.cjs"),Hn=require("./NiceModal-CAwsKVQ2.cjs"),ji=require("./NicePagination-DlealakT.cjs"),Re=require("./NiceTabs-DvOmxKyQ.cjs");function wi({columns:n,data:a,striped:s,compact:r,emptyText:d,className:f,style:x,accessMode:c,id:g,displayStyle:k}){if(Ie.useNiceAccessMode(c,g)==="hidden")return null;const W=Ie.useComponentDisplayStyle("table",k),I=Ie.useComponentDisplayClass("table",k),[Q,ee]=t.useState(null),E=t.useMemo(()=>Q?[...a].sort((_,b)=>{const l=_[Q.field]??"",T=b[Q.field]??"",L=typeof l=="number"?l-T:String(l).localeCompare(String(T));return Q.dir==="desc"?-L:L}):a,[a,Q]),F=_=>{ee(b=>b?.field===_?b.dir==="asc"?{field:_,dir:"desc"}:null:{field:_,dir:"asc"})};return e.jsx("div",{className:`nice-table-wrapper ${f||""}`,style:{...W,...x},children:e.jsxs("table",{className:`nice-table nice-table--ds-${I} ${s?"nice-table--striped":""} ${r?"nice-table--compact":""}`,"aria-rowcount":E.length,"aria-colcount":n.length,children:[e.jsx("thead",{children:e.jsx("tr",{children:n.map(_=>{const b=_.sortable?Q?.field===_.field?Q.dir==="asc"?"ascending":"descending":"none":void 0;return e.jsxs("th",{style:{width:_.width,textAlign:_.align},className:_.sortable?"th--sortable":void 0,onClick:()=>_.sortable&&F(_.field),scope:"col","aria-sort":b,children:[_.header,_.sortable&&Q?.field===_.field&&e.jsx("span",{className:"nice-table__sort-icon","aria-hidden":"true",children:Q.dir==="asc"?"↑":"↓"})]},_.field)})})}),e.jsx("tbody",{children:E.length===0?e.jsx("tr",{children:e.jsx("td",{colSpan:n.length,className:"nice-table__empty",children:d||"No data"})}):E.map((_,b)=>e.jsx("tr",{children:n.map(l=>e.jsx("td",{style:{textAlign:l.align},children:l.render?l.render(_[l.field],_):String(_[l.field]??"")},l.field))},b))})]})})}function ei(n,a,s){const r=n.map(d=>d[a]).filter(d=>typeof d=="number");if(r.length===0)return s==="count"?"0":"";switch(s){case"sum":return r.reduce((d,f)=>d+f,0).toLocaleString();case"avg":return(r.reduce((d,f)=>d+f,0)/r.length).toLocaleString(void 0,{maximumFractionDigits:2});case"count":return String(n.length);case"min":return Math.min(...r).toLocaleString();case"max":return Math.max(...r).toLocaleString()}}function cn(n){return n.includes(",")||n.includes('"')||n.includes(`
2
+ `)?`"${n.replace(/"/g,'""')}"`:n}function ki(n){return typeof n=="boolean"?n?e.jsx("svg",{className:"nice-datagrid__bool-icon nice-datagrid__bool-icon--true",width:"16",height:"16",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round","aria-label":"true",role:"img",children:e.jsx("path",{d:"M4 10.5l4 4L16 6"})}):e.jsx("svg",{className:"nice-datagrid__bool-icon nice-datagrid__bool-icon--false",width:"16",height:"16",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round","aria-label":"false",role:"img",children:e.jsx("path",{d:"M5 5l10 10M15 5L5 15"})}):String(n??"")}function Nn({columns:n,data:a,keyField:s="id",dataSource:r,sortable:d=!0,sortField:f,sortDirection:x,onSort:c,selectable:g,selectedKeys:k,onSelectionChange:C,pagination:W,pageSize:I=10,page:Q,onPageChange:ee,totalRows:E,searchable:F,searchPlaceholder:_,virtualScroll:b,rowHeight:l=40,groupBy:T,groupRender:L,onCellEdit:U,editMode:te="inline",formItems:we,formColumns:w=2,editFormTitle:ce,formProps:fe,onRowEdit:pe,onRowAdd:V,onRowDelete:J,bulkActions:j,onBulkDelete:A,exportCsv:o,exportFilename:ve="export",detailRow:le,expandedRowKeys:S,onExpandedRowChange:B,columnReorder:ue,onColumnReorder:q,columnResize:oe,rowDraggable:se,onRowReorder:Qe,striped:Ue,compact:Te,loading:Be,emptyText:Pe,toolbar:Ke,onRowClick:Fe,pinnedTopKeys:G,pinnedBottomKeys:Ne,colSpan:M,showStatusBar:me,contextMenuItems:xe,onContextMenuAction:v,printFriendly:de,keyboardNavigation:K,focusedCell:lt,onFocusedCellChange:ne,cellRangeSelection:Z,selectedCellRange:rt,onCellRangeChange:be,clipboard:Ge,clipboardFormat:wt="text",onBeforeCopy:pt,onCopy:It,onPaste:Pt,quickFilters:ot,activeQuickFilters:At,onQuickFilterChange:kt,columnGroups:D,stateStorageKey:Y,initialState:ge,onStateChange:tt,flashRowKeys:mt,flashDuration:je=500,autoFitColumns:Ve,showColumnStats:Oe,rowIndicator:dt,frozenRows:at,className:St,style:Zt,accessMode:en,id:Xt,displayStyle:Qt}){const ut=Ie.useNiceAccessMode(en,Xt);if(ut==="hidden")return null;const on=ut==="readOnly"||ut==="disabled",{t:$e}=Ie.Wo();Ie.useComponentDisplayStyle("table",Qt),Ie.useComponentDisplayClass("table",Qt);const st=Ie.useNiceDataSource(r??null,{autoLoad:!!r,defaultPageSize:I}),qe=!!r,_t=qe?st.data:a??[],Ut=qe?st.loading:Be,[m,h]=t.useState({field:"",dir:null}),[R,O]=t.useState(1),[H,$]=t.useState(new Set),[P,re]=t.useState(""),[ae,We]=t.useState(I),[ke,Se]=t.useState(null),[Ye,Ct]=t.useState(null),[Mt,Je]=t.useState(null),[$t,Ft]=t.useState(new Set),[Bt,Gt]=t.useState(0),Dt=t.useRef(null),[dn,Ot]=t.useState(new Set),ft=S??dn,[ht,zt]=t.useState({}),[Vt,Et]=t.useState(null),[Kt,tn]=t.useState(null),[jn,wn]=t.useState(null),[nn,Wt]=t.useState(null),[un,kn]=t.useState([]),[An,En]=t.useState(null),[an,mn]=t.useState(new Set),[Rn,$n]=t.useState(null),sn=t.useRef(null),gt=lt??jn,nt=rt??nn,xt=At??un;t.useEffect(()=>{if(!Y)return;const i=localStorage.getItem(`nice-datagrid-${Y}`);if(i&&!ge)try{const u=JSON.parse(i);u.columnWidths&&zt(u.columnWidths),u.expandedGroups&&Ft(new Set(u.expandedGroups))}catch{}},[Y,ge]),t.useEffect(()=>{if(!mt?.size)return;mn(new Set(mt));const i=setTimeout(()=>mn(new Set),je);return()=>clearTimeout(i)},[mt,je]),t.useEffect(()=>{if(!Kt)return;const i=()=>tn(null);return document.addEventListener("click",i),()=>document.removeEventListener("click",i)},[Kt]);const hn=t.useCallback((i,u)=>{xe?.length&&(i.preventDefault(),tn({x:i.clientX,y:i.clientY,row:u}))},[xe]),pn=t.useCallback(i=>{const u=new Set(ft);u.has(i)?u.delete(i):u.add(i),B?B(u):Ot(u)},[ft,B]),N=t.useCallback((i,u)=>{if(!oe)return;u.preventDefault();const p=u.clientX,z=u.target.closest("th")?.offsetWidth??100,he=X=>{const Ee=Math.max(40,z+X.clientX-p);zt(Ae=>({...Ae,[i]:Ee}))},ye=()=>{document.removeEventListener("mousemove",he),document.removeEventListener("mouseup",ye)};document.addEventListener("mousemove",he),document.addEventListener("mouseup",ye)},[oe]),ie=qe?st.sort[0]?.field??"":f??m.field,_e=qe?st.sort[0]?.direction??null:x??m.dir,Ce=qe?st.page:Q??R,Me=k??H;t.useCallback(()=>{if(!Y)return;const i={columnWidths:ht,sortField:ie||void 0,sortDirection:_e,pageSize:ae,expandedGroups:Array.from($t)};localStorage.setItem(`nice-datagrid-${Y}`,JSON.stringify(i)),tt?.(i)},[Y,ht,ie,_e,ae,$t,tt]);const Ze=t.useMemo(()=>n.filter(i=>!i.hidden),[n]),bt=t.useMemo(()=>Ze.filter(i=>i.pinned==="left"),[Ze]),ct=t.useMemo(()=>Ze.filter(i=>i.pinned==="right"),[Ze]),fn=t.useMemo(()=>Ze.filter(i=>!i.pinned),[Ze]),ze=t.useMemo(()=>[...bt,...fn,...ct],[bt,fn,ct]),oi=t.useMemo(()=>Ze.some(i=>i.aggregate),[Ze]),rn=bt.length>0||ct.length>0,zn=t.useCallback(i=>{const u=ie===i?_e==="asc"?"desc":_e==="desc"?null:"asc":"asc";qe?u?st.setSortField(i,u):st.setSort([]):c?c(i,u):h({field:i,dir:u})},[ie,_e,qe,st,c]),yt=t.useMemo(()=>{if(qe)return _t;let i=[..._t];if(P){const u=P.toLowerCase();i=i.filter(p=>Ze.some(y=>String(p[y.field]??"").toLowerCase().includes(u)))}return!c&&ie&&_e&&i.sort((u,p)=>{const y=u[ie]??"",z=p[ie]??"",he=typeof y=="number"?y-z:String(y).localeCompare(String(z));return _e==="desc"?-he:he}),i},[_t,P,Ze,ie,_e,c,qe]),gn=qe?st.totalCount:E??yt.length,Yt=qe?st.pageSize:ae,di=Math.max(1,Math.ceil(gn/Yt)),Rt=qe?yt:W&&!E?yt.slice((Ce-1)*Yt,Ce*Yt):yt,Sn=t.useCallback(i=>{qe?st.setPage(i):ee?ee(i):O(i)},[qe,st,ee]),Jt=t.useMemo(()=>Rt.map(i=>String(i[s])),[Rt,s]),Ht=Jt.length>0&&Jt.every(i=>Me.has(i)),Tn=Jt.some(i=>Me.has(i)),Ln=t.useCallback(()=>{const i=new Set(Me);Ht?Jt.forEach(u=>i.delete(u)):Jt.forEach(u=>i.add(u)),C?C(i):$(i)},[Ht,Jt,Me,C]),Pn=t.useCallback(i=>{const u=new Set(Me);u.has(i)?u.delete(i):u.add(i),C?C(u):$(u)},[Me,C]),Fn=({field:i})=>ie!==i||!_e?e.jsx("span",{className:"nice-table__sort-icon",style:{opacity:.3},children:"?"}):e.jsx("span",{className:"nice-table__sort-icon",children:"?"}),vt=t.useMemo(()=>{if(!T)return Rt.map((p,y)=>({type:"data",row:p,key:String(p[s]??y)}));const i=new Map;Rt.forEach(p=>{const y=p[T];i.has(y)||i.set(y,[]),i.get(y).push(p)});const u=[];return i.forEach((p,y)=>{const z=`__group_${String(y)}`,he=$t.has(z);u.push({type:"group",value:y,rows:p,expanded:he,key:z}),he&&p.forEach((ye,X)=>u.push({type:"data",row:ye,key:String(ye[s]??`${z}_${X}`)}))}),u},[Rt,T,s,$t]),{pinnedTopRows:ui,pinnedBottomRows:mi,normalRows:hi}=t.useMemo(()=>{if(!G?.size&&!Ne?.size)return{pinnedTopRows:[],pinnedBottomRows:[],normalRows:vt};const i=[],u=[],p=[];for(const y of vt){if(y.type==="data"){const z=y.key;if(G?.has(z)){i.push(y);continue}if(Ne?.has(z)){u.push(y);continue}}p.push(y)}return{pinnedTopRows:i,pinnedBottomRows:u,normalRows:p}},[vt,G,Ne]),On=t.useCallback(i=>{Ft(u=>{const p=new Set(u);return p.has(i)?p.delete(i):p.add(i),p})},[]),pi=t.useMemo(()=>{if(!b)return vt;const i=Dt.current?.clientHeight??400,u=Math.ceil(i/l),p=Math.max(0,Math.floor(Bt/l)-3),y=Math.min(vt.length-1,p+u+6);return vt.slice(p,y+1).map((z,he)=>({...z,_vIdx:p+he}))},[b,vt,Bt,l]),_n=t.useCallback((i,u,p)=>{!U||on||(Se({rowKey:i,field:u}),Ct(p))},[U]),Wn=t.useCallback(()=>{ke&&U&&U(ke.rowKey,ke.field,Ye),Se(null),Ct(null)},[ke,Ye,U]),fi=t.useCallback(()=>{Se(null),Ct(null)},[]),gi=t.useCallback(()=>{const i=Ze,u=i.map(X=>cn(X.header)).join(","),p=yt.map(X=>i.map(Ee=>cn(String(X[Ee.field]??""))).join(",")),y=[u,...p].join(`
3
+ `),z=new Blob(["\uFEFF"+y],{type:"text/csv;charset=utf-8;"}),he=URL.createObjectURL(z),ye=document.createElement("a");ye.href=he,ye.download=`${ve}.csv`,ye.click(),URL.revokeObjectURL(he)},[Ze,yt,ve]),xn=t.useCallback(i=>{ne?ne(i):wn(i)},[ne]),bn=t.useCallback(i=>{be?be(i):Wt(i)},[be]),Nt=t.useMemo(()=>vt.filter(i=>i.type==="data").map(i=>i.key),[vt]),_i=t.useCallback(i=>{if(!K||ke||!gt)return;const u=Nt.indexOf(gt.rowKey),p=ze.findIndex(ye=>ye.field===gt.field);if(u<0||p<0)return;let y=u,z=p;switch(i.key){case"ArrowUp":y=Math.max(0,u-1);break;case"ArrowDown":y=Math.min(Nt.length-1,u+1);break;case"ArrowLeft":z=Math.max(0,p-1);break;case"ArrowRight":z=Math.min(ze.length-1,p+1);break;case"Tab":i.preventDefault(),i.shiftKey?z=Math.max(0,p-1):z=Math.min(ze.length-1,p+1);break;case"Enter":const ye=ze[p];if(ye.editable&&U){const X=Rt.find(Ee=>String(Ee[s])===gt.rowKey);X&&_n(gt.rowKey,ye.field,X[ye.field])}return;case"Escape":xn(null),bn(null);return;case"Home":i.ctrlKey&&(y=0),z=0;break;case"End":i.ctrlKey&&(y=Nt.length-1),z=ze.length-1;break;case"PageUp":y=Math.max(0,u-ae);break;case"PageDown":y=Math.min(Nt.length-1,u+ae);break;default:return}i.preventDefault();const he={rowKey:Nt[y],field:ze[z].field};if(xn(he),i.shiftKey&&Z){const ye=nt?.start??gt;bn({start:ye,end:he})}else bn(null)},[K,ke,gt,Nt,ze,Z,nt,xn,bn,U,Rt,s,_n,ae]),Un=t.useCallback(()=>{let i=[],u=[];if(nt){const p=Nt.indexOf(nt.start.rowKey),y=Nt.indexOf(nt.end.rowKey),z=Math.min(p,y),he=Math.max(p,y),ye=ze.findIndex(Xe=>Xe.field===nt.start.field),X=ze.findIndex(Xe=>Xe.field===nt.end.field),Ee=Math.min(ye,X),Ae=Math.max(ye,X);u=ze.slice(Ee,Ae+1).map(Xe=>Xe.field),i=Rt.filter(Xe=>{const Le=Nt.indexOf(String(Xe[s]));return Le>=z&&Le<=he})}else Me.size>0&&(i=Rt.filter(p=>Me.has(String(p[s]))),u=ze.map(p=>p.field));return{rows:i,fields:u}},[nt,Nt,ze,Rt,s,Me]),Bn=t.useCallback((i,u,p)=>{const y=ze.filter(z=>u.includes(z.field));switch(p){case"json":return JSON.stringify(i.map(Le=>Object.fromEntries(u.map(He=>[He,Le[He]]))),null,2);case"csv":const z=y.map(Le=>cn(Le.header)).join(","),he=i.map(Le=>y.map(He=>cn(String(Le[He.field]??""))).join(",")).join(`
4
+ `);return z+`
5
+ `+he;case"html":const ye=y.map(Le=>`<th>${Le.header}</th>`).join(""),X=i.map(Le=>`<tr>${y.map(He=>`<td>${Le[He.field]??""}</td>`).join("")}</tr>`).join("");return`<table><thead><tr>${ye}</tr></thead><tbody>${X}</tbody></table>`;case"markdown":const Ee="| "+y.map(Le=>Le.header).join(" | ")+" |",Ae="| "+y.map(()=>"---").join(" | ")+" |",Xe=i.map(Le=>"| "+y.map(He=>Le[He.field]??"").join(" | ")+" |").join(`
6
+ `);return Ee+`
7
+ `+Ae+`
8
+ `+Xe;default:return i.map(Le=>y.map(He=>Le[He.field]??"").join(" ")).join(`
9
+ `)}},[ze]),Cn=t.useCallback(async()=>{if(!Ge)return;const{rows:i,fields:u}=Un();if(!i.length||pt?.(i,u)===!1)return;const p=Bn(i,u,wt);await navigator.clipboard.writeText(p),It?.(i,u,wt)},[Ge,Un,pt,Bn,wt,It]),Gn=t.useCallback(async()=>{if(!Ge||!gt||!Pt)return;const u=(await navigator.clipboard.readText()).split(`
10
+ `).map(p=>p.split(" "));Pt(u,gt)},[Ge,gt,Pt]);t.useEffect(()=>{if(!Ge||!sn.current)return;const i=u=>{sn.current?.contains(document.activeElement)&&(u.type==="copy"&&(u.preventDefault(),Cn()),u.type==="paste"&&(u.preventDefault(),Gn()))};return document.addEventListener("copy",i),document.addEventListener("paste",i),()=>{document.removeEventListener("copy",i),document.removeEventListener("paste",i)}},[Ge,Cn,Gn]);const xi=t.useCallback(i=>{const u=xt.includes(i)?xt.filter(p=>p!==i):[...xt,i];kt?kt(u):kn(u)},[xt,kt]),bi=t.useMemo(()=>{if(!ot?.length||!xt.length)return yt;const i=ot.filter(u=>xt.includes(u.key));return yt.filter(u=>i.every(p=>p.filter(u)))},[yt,ot,xt]),Vn=ot?.length?bi:yt;t.useCallback(i=>{const u=yt.map(Ee=>Ee[i]).filter(Ee=>Ee!=null),p=u.filter(Ee=>typeof Ee=="number");if(p.length===0){const Ee=new Set(u).size;return{count:u.length,unique:Ee,type:"text"}}const y=p.reduce((Ee,Ae)=>Ee+Ae,0),z=y/p.length,he=Math.min(...p),ye=Math.max(...p),X=Math.sqrt(p.reduce((Ee,Ae)=>Ee+(Ae-z)**2,0)/p.length);return{count:p.length,sum:y,avg:z,min:he,max:ye,stdDev:X,type:"numeric"}},[yt]);const yi=t.useCallback((i,u,p)=>{if(!i.cellVisualization)return null;const y=Number(u);if(isNaN(y))return null;const z=i.visualMin??0,he=i.visualMax??100,ye=Math.max(0,Math.min(100,(y-z)/(he-z)*100));switch(i.cellVisualization){case"progress":return e.jsxs("div",{className:"nice-datagrid__cell-progress",style:{display:"flex",alignItems:"center",gap:8},children:[e.jsx("div",{style:{flex:1,height:6,background:"var(--border-color)",borderRadius:3,overflow:"hidden"},children:e.jsx("div",{style:{width:`${ye}%`,height:"100%",background:ye>80?"var(--color-success)":ye>50?"var(--color-primary)":"var(--color-warning)",transition:"width 0.3s ease"}})}),e.jsxs("span",{style:{fontSize:"0.75rem",minWidth:32,textAlign:"right"},children:[Math.round(ye),"%"]})]});case"rating":const X=Math.round(y/he*5);return e.jsx("div",{className:"nice-datagrid__cell-rating",children:[1,2,3,4,5].map(qn=>e.jsx("span",{style:{color:qn<=X?"var(--color-warning)":"var(--text-muted)",fontSize:"0.85rem"},children:"?"},qn))});case"trend":const Ee=i.visualMin??y,Ae=y-Ee,Xe=(Ae>0||Ae<0,"?"),Le=Ae>0?"var(--color-success)":Ae<0?"var(--color-danger)":"var(--text-muted)";return e.jsxs("span",{style:{color:Le,fontWeight:500},children:[Xe," ",Math.abs(Ae).toFixed(1),"%"]});case"heatmap":const He=ye/100,qt=`rgba(${Math.round(255*He)}, ${Math.round(100*(1-He))}, ${Math.round(50*(1-He))}, 0.6)`;return e.jsx("span",{style:{background:qt,padding:"2px 8px",borderRadius:4},children:y});default:return null}},[]),vi=t.useCallback((i,u,p)=>{if(!i.conditionalFormats?.length)return{};for(const y of i.conditionalFormats)if(y.when(u,p,i.field))return{className:y.className,style:{...y.style,backgroundColor:y.backgroundColor,color:y.color}};return{}},[]),Mn=t.useCallback((i,u)=>{if(!rn||!i.pinned)return{};const p={position:"sticky",zIndex:2,background:"var(--bg-primary, #fff)"};if(i.pinned==="left"){let y=0;for(let z=0;z<u;z++){const he=ze[z];he.pinned==="left"&&(y+=typeof he.width=="number"?he.width:parseInt(String(he.width)||"100",10))}g&&u===0&&(y=36),p.left=y}else{let y=0;for(let z=ze.length-1;z>u;z--){const he=ze[z];he.pinned==="right"&&(y+=typeof he.width=="number"?he.width:parseInt(String(he.width)||"100",10))}p.right=y}return p},[rn,ze,g]),Kn=(i,u,p,y)=>{if(ke?.rowKey===p&&ke?.field===i.field)return i.editor?i.editor(Ye,u,X=>Ct(X)):e.jsx("input",{className:"nice-datagrid__edit-input",autoFocus:!0,value:Ye??"",onChange:X=>Ct(X.target.value),onBlur:Wn,onKeyDown:X=>{X.key==="Enter"&&Wn(),X.key==="Escape"&&fi()}});const he=yi(i,u[i.field],u);return he||(i.render?i.render(u[i.field],u,y):ki(u[i.field]))},Ni=(i,u,p,y)=>{const z=gt?.rowKey===p&&gt?.field===i.field,he=nt&&(()=>{const Ee=Nt.indexOf(nt.start.rowKey),Ae=Nt.indexOf(nt.end.rowKey),Xe=Nt.indexOf(p),Le=ze.findIndex(qt=>qt.field===nt.start.field),He=ze.findIndex(qt=>qt.field===nt.end.field);return Xe>=Math.min(Ee,Ae)&&Xe<=Math.max(Ee,Ae)&&y>=Math.min(Le,He)&&y<=Math.max(Le,He)})(),ye=vi(i,u[i.field],u);return{className:[ye.className,z&&"nice-datagrid__cell--focused",he&&"nice-datagrid__cell--in-range"].filter(Boolean).join(" "),style:{...Mn(i,y),textAlign:i.align,...ye.style,...z?{outline:"2px solid var(--color-primary)",outlineOffset:-2}:{},...he?{background:"var(--color-primary-light, rgba(59,130,246,0.15))"}:{}}}},yn=ze.length+(g?1:0)+(le?1:0)+(se?1:0)+(dt?1:0),Dn=(i,u,p)=>{const{row:y,key:z}=i,he=Me.has(z),ye=ft.has(z),X=an.has(z),Ee=[he&&"nice-datagrid__row--selected",Vt===u&&"nice-datagrid__row--dragging",p&&"nice-datagrid__row--pinned",X&&"nice-datagrid__row--flash"].filter(Boolean).join(" ");return e.jsxs(t.Fragment,{children:[e.jsxs("tr",{className:Ee,onClick:()=>Fe?.(y),onDoubleClick:te==="popup"&&(pe||U)?()=>Je({key:z,data:{...y}}):void 0,onContextMenu:Ae=>hn(Ae,y),style:Fe||te==="popup"?{cursor:"pointer"}:void 0,draggable:se,onDragStart:se?()=>Et(u):void 0,onDragOver:se?Ae=>Ae.preventDefault():void 0,onDrop:se&&Qe&&Vt!=null?()=>{Qe(Vt,u),Et(null)}:void 0,onDragEnd:se?()=>Et(null):void 0,children:[dt&&e.jsx("td",{className:"nice-datagrid__row-indicator",style:{width:32,padding:"0 4px"},children:dt(y)}),le&&e.jsx("td",{className:"nice-datagrid__expand-col",onClick:Ae=>{Ae.stopPropagation(),pn(z)},children:e.jsx("span",{className:"nice-datagrid__expand-btn",children:"?"})}),se&&e.jsx("td",{className:"nice-datagrid__drag-handle",style:{cursor:"grab",textAlign:"center",color:"var(--text-muted)"},children:"?"}),g&&e.jsx("td",{className:"nice-datagrid__checkbox",onClick:Ae=>Ae.stopPropagation(),style:rn?{position:"sticky",left:0,zIndex:1,background:"var(--bg-primary, #fff)"}:void 0,children:e.jsx("input",{type:"checkbox",checked:he,onChange:()=>Pn(z),"aria-label":`Select row ${z}`})}),(()=>{let Ae=0;return ze.map((Xe,Le)=>{if(Ae>0)return Ae--,null;const He=M?M(y,Xe,Le):void 0;He&&He>1&&(Ae=He-1);const qt=Ni(Xe,y,z,Le);return e.jsx("td",{colSpan:He,className:qt.className,style:qt.style,onClick:K?()=>xn({rowKey:z,field:Xe.field}):void 0,onDoubleClick:Xe.editable&&U?()=>_n(z,Xe.field,y[Xe.field]):void 0,children:Kn(Xe,y,z,u)},Xe.field)})})()]}),le&&ye&&e.jsx("tr",{className:"nice-datagrid__detail-row",children:e.jsx("td",{colSpan:yn,children:le(y)})})]},z)};return e.jsxs("div",{ref:sn,className:`nice-datagrid ${de?"nice-datagrid--print":""} ${St||""}`,style:Zt,role:"grid","aria-label":$e("datagrid.title","Data Grid"),"aria-rowcount":vt.length,"aria-colcount":Ze.length,"aria-busy":Ut||void 0,tabIndex:K?0:void 0,onKeyDown:K?_i:void 0,children:[(F||Ke||o||ot?.length||V)&&e.jsxs("div",{className:"nice-datagrid__toolbar",children:[F&&e.jsx("div",{className:"nice-datagrid__search",children:e.jsx("input",{type:"text",value:qe?st.search:P,"aria-label":$e("controls.search","Search"),onChange:i=>{qe?st.setSearch(i.target.value):(re(i.target.value),Sn(1))},placeholder:_||$e("controls.search","Search...")})}),ot&&ot.length>0&&e.jsx("div",{className:"nice-datagrid__quick-filters",style:{display:"flex",gap:6,flexWrap:"wrap"},children:ot.map(i=>e.jsxs("button",{className:`nice-datagrid__quick-filter ${xt.includes(i.key)?"nice-datagrid__quick-filter--active":""}`,onClick:()=>xi(i.key),style:{display:"inline-flex",alignItems:"center",gap:4,padding:"3px 10px",fontSize:"0.75rem",border:"1px solid var(--border-color)",borderRadius:12,background:xt.includes(i.key)?`var(--color-${i.color||"primary"})`:"var(--bg-primary)",color:xt.includes(i.key)?"var(--bg-primary, #fff)":"inherit",cursor:"pointer",transition:"all 0.15s ease"},children:[i.icon&&e.jsx("span",{children:i.icon}),i.label]},i.key))}),Ge&&e.jsx("button",{className:"nice-btn nice-btn--sm nice-btn--ghost",onClick:Cn,title:$e("controls.copy","Copy selected"),style:{marginLeft:4},children:"??"}),o&&e.jsx("button",{className:"nice-btn nice-btn--sm",onClick:gi,title:$e("controls.exportCsv","Export CSV"),children:"CSV ?"}),V&&e.jsxs("button",{type:"button",className:"nice-btn nice-btn--sm nice-btn--primary",onClick:()=>Je({key:null,data:{}}),title:$e("datagrid.addRow","Add row"),children:["+ ",$e("datagrid.add","Add")]}),Ke]}),g&&Me.size>0&&(j?.length||A)&&e.jsxs("div",{className:"nice-datagrid__bulk-toolbar",role:"toolbar","aria-label":$e("datagrid.bulkActions","Bulk actions"),style:{display:"flex",alignItems:"center",gap:8,padding:"6px 12px",background:"var(--bg-tertiary, #f1f5f9)",borderBottom:"1px solid var(--border-color)",flexWrap:"wrap"},children:[e.jsx("span",{style:{fontSize:"0.85rem",color:"var(--text-secondary)"},children:$e("datagrid.selectedCount","{count} selected").replace("{count}",String(Me.size))}),(j||[]).map(i=>{const u=Array.from(Me),p=Vn.filter(z=>Me.has(String(z[s]))),y=i.disabled?.(u,p)||!1;return e.jsxs("button",{type:"button",className:`nice-btn nice-btn--sm nice-btn--${i.variant||"secondary"}`,disabled:y,onClick:()=>i.onClick(u,p),children:[i.icon,i.icon&&" ",i.label]},i.key)}),A&&!j?.length&&e.jsxs("button",{type:"button",className:"nice-btn nice-btn--sm nice-btn--danger",onClick:()=>{const i=Array.from(Me),u=Vn.filter(p=>Me.has(String(p[s])));A(i,u)},children:["?? ",$e("datagrid.deleteSelected","Delete selected")]}),e.jsx("button",{type:"button",className:"nice-btn nice-btn--xs nice-btn--ghost",onClick:()=>{const i=new Set;k===void 0&&$(i),C?.(i)},style:{marginLeft:"auto"},children:$e("datagrid.clearSelection","Clear")})]}),e.jsxs("div",{ref:Dt,className:`nice-datagrid__table-wrap ${b?"nice-datagrid__table-wrap--virtual":""}`,style:b?{maxHeight:Math.min(vt.length*l,600),overflowY:"auto"}:void 0,onScroll:b?i=>Gt(i.currentTarget.scrollTop):void 0,children:[b&&e.jsxs("div",{style:{height:vt.length*l,position:"relative"},children:[e.jsx("table",{className:`${Ue?"nice-table--striped":""} ${Te?"nice-table--compact":""}`,style:{position:"sticky",top:0,zIndex:3},children:e.jsx("thead",{children:e.jsxs("tr",{children:[le&&e.jsx("th",{className:"nice-datagrid__expand-col",style:{width:36}}),se&&e.jsx("th",{style:{width:28}}),g&&e.jsx("th",{className:"nice-datagrid__checkbox",style:rn?{position:"sticky",left:0,zIndex:3,background:"var(--bg-primary, #fff)"}:void 0,children:e.jsx("input",{type:"checkbox",checked:Ht,ref:i=>{i&&(i.indeterminate=Tn&&!Ht)},onChange:Ln,"aria-label":$e("controls.selectAll","Select all")})}),ze.map((i,u)=>e.jsxs("th",{style:{width:ht[i.field]||i.width,minWidth:i.minWidth,textAlign:i.align,position:"relative",...Mn(i,u)},className:d&&i.sortable!==!1?"nice-datagrid__th--sortable":void 0,onClick:()=>d&&i.sortable!==!1&&zn(i.field),children:[i.header,d&&i.sortable!==!1&&e.jsx(Fn,{field:i.field}),oe&&e.jsx("span",{className:"nice-datagrid__resize-handle",onMouseDown:p=>{p.stopPropagation(),N(i.field,p)}})]},i.field))]})})}),pi.map((i,u)=>{const p=i._vIdx??0;if(i.type==="group"){const X=i;return e.jsxs("div",{className:"nice-datagrid__group-row",style:{position:"absolute",top:p*l,height:l,left:0,right:0},onClick:()=>On(X.key),children:[e.jsx("span",{className:"nice-datagrid__group-toggle",children:(X.expanded,"?")}),L?L(X.value,X.rows):e.jsxs(e.Fragment,{children:[String(X.value)," (",X.rows.length,")"]})]},X.key)}const{row:y,key:z}=i,he=Me.has(z),ye=ft.has(z);return e.jsxs(t.Fragment,{children:[e.jsxs("div",{className:`nice-datagrid__vrow ${he?"nice-datagrid__row--selected":""} ${Vt===u?"nice-datagrid__row--dragging":""}`,style:{position:"absolute",top:p*l,height:l,left:0,right:0,display:"flex",alignItems:"center"},onClick:()=>Fe?.(y),onDoubleClick:te==="popup"&&(pe||U)?()=>Je({key:z,data:{...y}}):void 0,draggable:se,onDragStart:se?()=>Et(u):void 0,onDragOver:se?X=>X.preventDefault():void 0,onDrop:se&&Qe&&Vt!=null?()=>{Qe(Vt,u),Et(null)}:void 0,onDragEnd:se?()=>Et(null):void 0,children:[le&&e.jsx("div",{className:"nice-datagrid__expand-col",style:{width:36,flexShrink:0,textAlign:"center",cursor:"pointer"},onClick:X=>{X.stopPropagation(),pn(z)},children:e.jsx("span",{className:"nice-datagrid__expand-btn",children:"?"})}),se&&e.jsx("div",{style:{width:28,flexShrink:0,cursor:"grab",textAlign:"center",color:"var(--text-muted)"},children:"?"}),g&&e.jsx("div",{className:"nice-datagrid__checkbox",style:{width:36,flexShrink:0},onClick:X=>X.stopPropagation(),children:e.jsx("input",{type:"checkbox",checked:he,onChange:()=>Pn(z)})}),ze.map(X=>e.jsx("div",{className:"nice-datagrid__vcell",style:{width:ht[X.field]||X.width||"auto",flex:ht[X.field]||X.width?`0 0 ${typeof(ht[X.field]||X.width)=="number"?(ht[X.field]||X.width)+"px":ht[X.field]||X.width}`:1,textAlign:X.align,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",padding:"0 8px"},onDoubleClick:X.editable&&U?()=>_n(z,X.field,y[X.field]):void 0,children:Kn(X,y,z,p)},X.field))]}),le&&ye&&e.jsx("div",{className:"nice-datagrid__detail-row",style:{position:"absolute",top:(p+1)*l,left:0,right:0,padding:"8px 12px",background:"var(--bg-secondary, #f8f8f8)"},children:le(y)})]},z)})]}),!b&&e.jsxs("table",{className:`${Ue?"nice-table--striped":""} ${Te?"nice-table--compact":""}`,children:[e.jsx("thead",{children:e.jsxs("tr",{children:[le&&e.jsx("th",{className:"nice-datagrid__expand-col",style:{width:36}}),se&&e.jsx("th",{style:{width:28}}),g&&e.jsx("th",{className:"nice-datagrid__checkbox",style:rn?{position:"sticky",left:0,zIndex:3,background:"var(--bg-primary, #fff)"}:void 0,children:e.jsx("input",{type:"checkbox",checked:Ht,ref:i=>{i&&(i.indeterminate=Tn&&!Ht)},onChange:Ln,"aria-label":$e("controls.selectAll","Select all")})}),ze.map((i,u)=>{const p=d&&i.sortable!==!1,y=p?ie===i.field?_e==="asc"?"ascending":_e==="desc"?"descending":"none":"none":void 0;return e.jsxs("th",{style:{width:ht[i.field]||i.width,minWidth:i.minWidth,textAlign:i.align,position:"relative",...Mn(i,u)},className:p?"nice-datagrid__th--sortable":void 0,onClick:()=>p&&zn(i.field),"aria-sort":y,scope:"col",children:[i.header,p&&e.jsx(Fn,{field:i.field}),oe&&e.jsx("span",{className:"nice-datagrid__resize-handle",onMouseDown:z=>{z.stopPropagation(),N(i.field,z)}})]},i.field)})]})}),e.jsx("tbody",{children:Ut?e.jsx("tr",{children:e.jsx("td",{colSpan:yn,className:"nice-datagrid__empty",children:e.jsx("div",{className:"nice-spinner nice-spinner--md",style:{margin:"0 auto"}})})}):vt.length===0?e.jsx("tr",{children:e.jsx("td",{colSpan:yn,className:"nice-datagrid__empty",children:Pe||$e("controls.noData","No data available")})}):e.jsxs(e.Fragment,{children:[ui.map((i,u)=>i.type==="data"&&Dn(i,u,"top")),hi.map((i,u)=>{if(i.type==="group"){const p=i;return e.jsx("tr",{className:"nice-datagrid__group-row",onClick:()=>On(p.key),children:e.jsxs("td",{colSpan:yn,className:"nice-datagrid__group-cell",children:[e.jsx("span",{className:"nice-datagrid__group-toggle",children:(p.expanded,"?")}),L?L(p.value,p.rows):e.jsxs(e.Fragment,{children:[String(p.value)," (",p.rows.length,")"]})]})},p.key)}return Dn(i,u)}),mi.map((i,u)=>i.type==="data"&&Dn(i,u,"bottom"))]})}),oi&&!Ut&&Rt.length>0&&e.jsx("tfoot",{children:e.jsxs("tr",{className:"nice-datagrid__aggregate-row",children:[g&&e.jsx("td",{}),ze.map(i=>e.jsx("td",{style:{textAlign:i.align,fontWeight:600},children:i.aggregate?(i.aggregateLabel||i.aggregate.toUpperCase())+": "+ei(yt,i.field,i.aggregate):""},i.field))]})})]})]}),W&&e.jsxs("div",{className:"nice-datagrid__footer",children:[e.jsxs("span",{className:"nice-datagrid__footer-info",children:[$e("controls.showing","Showing")," ",(Ce-1)*Yt+1,"�",Math.min(Ce*Yt,gn)," ",$e("controls.of","of")," ",gn]}),e.jsx(ji.NicePagination,{page:Ce,totalPages:di,onChange:Sn,showInfo:!0,pageSize:Yt,showPageSize:!0,pageSizeOptions:[5,10,25,50,100],onPageSizeChange:i=>{qe?st.setPageSize(i):(We(i),Sn(1))},showFirstLast:!0})]}),me&&!Ut&&e.jsxs("div",{className:"nice-datagrid__status-bar",children:[e.jsxs("span",{children:[$e("controls.totalRows","Total rows"),": ",gn]}),g&&Me.size>0&&e.jsxs("span",{children:[$e("controls.selected","Selected"),": ",Me.size]})]}),Kt&&xe&&e.jsx("div",{className:"nice-datagrid__context-menu",style:{position:"fixed",left:Kt.x,top:Kt.y,zIndex:9999},onClick:i=>i.stopPropagation(),children:xe.map(i=>e.jsxs("button",{className:"nice-datagrid__context-item",disabled:i.disabled,onClick:()=>{v?.(i.key,Kt.row),tn(null)},children:[i.icon&&e.jsx("span",{className:"nice-datagrid__context-icon",children:i.icon}),i.label]},i.key))}),(te==="popup"||V)&&Mt&&(()=>{const i=Mt.key===null,u=we??n.filter(p=>!p.hidden&&p.field!==s).map(p=>{let y="text";return p.dataType==="number"||p.dataType==="currency"||p.dataType==="percent"?y="number":p.dataType==="boolean"?y="checkbox":p.dataType==="date"&&(y="date"),{field:p.field,label:p.header,type:y,required:p.validation?.required}});return e.jsx(Hn.NiceModal,{open:!0,onClose:()=>Je(null),title:ce??(i?$e("datagrid.addRow","Add row"):$e("datagrid.editRow","Edit row")),size:"lg",children:e.jsx(Jn.NiceForm,{items:u,data:Mt.data,columns:w,showActions:!0,submitLabel:i?$e("controls.add","Add"):$e("controls.save","Save"),cancelLabel:$e("controls.cancel","Cancel"),onCancel:()=>Je(null),...fe,onFieldChange:(p,y)=>Je(z=>z&&{...z,data:{...z.data,[p]:y}}),onSubmit:p=>{i?V?.(p):Mt.key&&(pe?pe(Mt.key,p):U&&Object.keys(p).forEach(y=>{U(Mt.key,y,p[y])})),Je(null)}})})})()]})}Nn.displayName="NiceDataGrid";const Si=Object.freeze(Object.defineProperty({__proto__:null,NiceDataGrid:Nn},Symbol.toStringTag,{value:"Module"}));function Ci(n,a){return n.filter(s=>a.every(r=>{const d=s[r.field],f=r.value;switch(r.operator){case"eq":return d===f;case"ne":return d!==f;case"gt":return typeof d=="number"&&typeof f=="number"&&d>f;case"gte":return typeof d=="number"&&typeof f=="number"&&d>=f;case"lt":return typeof d=="number"&&typeof f=="number"&&d<f;case"lte":return typeof d=="number"&&typeof f=="number"&&d<=f;case"contains":return String(d).toLowerCase().includes(String(f).toLowerCase());case"startsWith":return String(d).toLowerCase().startsWith(String(f).toLowerCase());case"endsWith":return String(d).toLowerCase().endsWith(String(f).toLowerCase());default:return!0}}))}function Mi(n){return n.map(a=>({field:a.field,type:a.dataType||"string",label:typeof a.header=="string"?a.header:a.field}))}function Di(n,a){const{enableAI:s=!0,aiModel:r,enableNLSearch:d=!0,enableInsights:f=!0,nlPlaceholder:x,onAIFilter:c,onInsights:g,showAISearchBar:k=!0,exampleQueries:C=["Show items from last week","Filter by status = active","Orders over $1000",'Names starting with "A"'],columns:W,data:I,...Q}=n,[ee,E]=t.useState(""),[F,_]=t.useState([]),[b,l]=t.useState([]),[T,L]=t.useState(!1),[U,te]=t.useState(null),we=t.useRef(null),{t:w}=Ie.Wo(),ce=Ie.useNiceAI(),{parseFilter:fe,isLoading:pe}=Ie.useNaturalLanguageFilter(),V=s&&ce.isConfigured,J=F.length>0?Ci(I||[],F):I,j=t.useCallback(async B=>{if(!V||!d||!B.trim())return;te(B);const ue=Mi(W);try{const q=await fe(B,ue);_(q),c?.(B,q)}catch{_([])}},[V,d,W,fe,c]),A=t.useCallback(()=>{_([]),te(null),E("")},[]),o=t.useCallback(()=>F,[F]),ve=t.useCallback(async()=>{if(!V||!f||!I?.length)return[];try{const B=await ce.complete([{role:"user",content:`Analyze this data and provide 3-5 key insights. Data sample (${I.length} total rows): ${JSON.stringify(I.slice(0,20))}
11
+
12
+ Columns: ${W.map(ue=>ue.field).join(", ")}
13
+
14
+ Return a JSON array of insight strings. Be specific with numbers and trends.`}],{temperature:.3,maxTokens:500});try{const ue=JSON.parse(B.content),q=Array.isArray(ue)?ue:[];return l(q),g?.(q),q}catch{return[]}}catch{return[]}},[V,f,I,W,ce,g]),le=B=>{B.preventDefault(),ee.trim()&&j(ee)},S=B=>{E(B),j(B)};return t.useImperativeHandle(a,()=>({applyNLFilter:j,clearAIFilters:A,getAIFilters:o,generateInsights:ve})),e.jsxs("div",{className:"nice-data-grid-ai","data-testid":n["data-testid"],children:[k&&V&&d&&e.jsxs("div",{className:"nice-data-grid-ai__search-bar",children:[e.jsx("div",{className:"nice-data-grid-ai__search-left",children:e.jsx("span",{className:"nice-data-grid-ai__badge",children:"AI"})}),e.jsxs("form",{onSubmit:le,className:"nice-data-grid-ai__search-form",children:[e.jsxs("div",{className:"nice-data-grid-ai__input-wrapper",children:[e.jsx("span",{className:"nice-data-grid-ai__search-icon",children:"🔍"}),e.jsx("input",{ref:we,type:"text",value:ee,onChange:B=>E(B.target.value),placeholder:x||w("dataGridAI.searchPlaceholder","Search with natural language..."),className:"nice-data-grid-ai__input",disabled:pe}),pe&&e.jsx("span",{className:"nice-data-grid-ai__loading-spinner"}),ee&&!pe&&e.jsx("button",{type:"button",className:"nice-data-grid-ai__clear-input",onClick:()=>E(""),children:"✕"})]}),e.jsx("button",{type:"submit",className:"nice-data-grid-ai__search-btn",disabled:pe||!ee.trim(),children:pe?w("dataGridAI.searching","Searching..."):w("dataGridAI.search","Search")})]}),f&&e.jsxs("button",{type:"button",className:"nice-data-grid-ai__insights-btn",onClick:()=>{ve(),L(!0)},disabled:pe||!I?.length,title:w("dataGridAI.generateInsights","Generate AI Insights"),children:["💡 ",w("dataGridAI.insights","Insights")]})]}),k&&V&&d&&!U&&C.length>0&&e.jsxs("div",{className:"nice-data-grid-ai__examples",children:[e.jsx("span",{className:"nice-data-grid-ai__examples-label",children:w("dataGridAI.tryAsking","Try asking:")}),e.jsx("div",{className:"nice-data-grid-ai__examples-list",children:C.slice(0,4).map((B,ue)=>e.jsxs("button",{type:"button",className:"nice-data-grid-ai__example",onClick:()=>S(B),children:['"',B,'"']},ue))})]}),U&&F.length>0&&e.jsxs("div",{className:"nice-data-grid-ai__active-filter",children:[e.jsxs("div",{className:"nice-data-grid-ai__filter-info",children:[e.jsx("span",{className:"nice-data-grid-ai__filter-icon",children:"🎯"}),e.jsxs("span",{className:"nice-data-grid-ai__filter-query",children:['"',U,'"']}),e.jsxs("span",{className:"nice-data-grid-ai__filter-count",children:["(",J?.length||0," ",w("dataGridAI.results","results"),")"]})]}),e.jsx("div",{className:"nice-data-grid-ai__filter-badges",children:F.map((B,ue)=>e.jsxs("span",{className:"nice-data-grid-ai__filter-badge",children:[B.field," ",B.operator," ",String(B.value)]},ue))}),e.jsxs("button",{type:"button",className:"nice-data-grid-ai__clear-filter",onClick:A,children:["✕ ",w("dataGridAI.clearFilter","Clear")]})]}),e.jsx("div",{className:"nice-data-grid-ai__grid-wrapper",children:e.jsx(Nn,{columns:W,data:J,...Q})}),T&&e.jsxs("div",{className:"nice-data-grid-ai__insights-panel",children:[e.jsxs("div",{className:"nice-data-grid-ai__insights-header",children:[e.jsxs("h4",{children:["💡 ",w("dataGridAI.aiInsights","AI Insights")]}),e.jsx("button",{type:"button",className:"nice-data-grid-ai__insights-close",onClick:()=>L(!1),children:"✕"})]}),e.jsx("div",{className:"nice-data-grid-ai__insights-body",children:pe?e.jsx("div",{className:"nice-data-grid-ai__insights-loading",children:w("dataGridAI.analyzing","Analyzing data...")}):b.length>0?e.jsx("ul",{className:"nice-data-grid-ai__insights-list",children:b.map((B,ue)=>e.jsxs("li",{className:"nice-data-grid-ai__insight",children:[e.jsx("span",{className:"nice-data-grid-ai__insight-bullet",children:"•"}),B]},ue))}):e.jsx("div",{className:"nice-data-grid-ai__insights-empty",children:w("dataGridAI.noInsights","Click to generate insights from your data")})}),e.jsx("div",{className:"nice-data-grid-ai__insights-footer",children:e.jsxs("button",{type:"button",className:"nice-data-grid-ai__refresh-insights",onClick:()=>ve(),disabled:pe,children:["🔄 ",w("dataGridAI.refresh","Refresh")]})})]})]})}const Ii=t.forwardRef(Di),Ai=({items:n,selectedKeys:a=[],onSelectionChange:s,selectionMode:r="none",searchable:d,searchPlaceholder:f,grouped:x,groupField:c="group",reorderable:g,onReorder:k,onItemClick:C,renderItem:W,showCheckboxes:I,loading:Q,emptyText:ee,size:E="md",bordered:F=!0,swipeActions:_,className:b,style:l,accessMode:T,id:L})=>{if(Ie.useNiceAccessMode(T,L)==="hidden")return null;const{t:te}=Ie.Wo(),[we,w]=t.useState(""),[ce,fe]=t.useState(null),[pe,V]=t.useState(null),J=t.useRef(null),j=t.useMemo(()=>{if(!we)return n;const S=we.toLowerCase();return n.filter(B=>B.text.toLowerCase().includes(S))},[n,we]),A=t.useMemo(()=>{if(!x)return null;const S=new Map;return j.forEach(B=>{const ue=String(B[c]??"");S.has(ue)||S.set(ue,[]),S.get(ue).push(B)}),S},[j,x,c]),o=t.useCallback(S=>{s&&(r==="single"?s(a.includes(S)?[]:[S]):r==="multiple"&&s(a.includes(S)?a.filter(B=>B!==S):[...a,S]))},[a,r,s]),ve=t.useCallback(S=>{ce!==null&&ce!==S&&k&&k(ce,S),fe(null)},[ce,k]),le=(S,B)=>{const ue=a.includes(S.key),q=pe===S.key;return e.jsxs("li",{className:`nice-list__item ${ue?"nice-list__item--selected":""} ${S.disabled?"nice-list__item--disabled":""} ${q?"nice-list__item--swiped":""}`,onClick:()=>{S.disabled||(o(S.key),C?.(S))},draggable:g,onDragStart:()=>fe(B),onDragOver:oe=>oe.preventDefault(),onDrop:()=>ve(B),onTouchStart:_?.length?oe=>{J.current={x:oe.touches[0].clientX,key:S.key}}:void 0,onTouchEnd:_?.length?oe=>{if(!J.current)return;const se=oe.changedTouches[0].clientX-J.current.x;se<-50&&J.current.key===S.key?V(S.key):se>50&&V(null),J.current=null}:void 0,role:r!=="none"?"option":void 0,"aria-selected":r!=="none"?ue:void 0,children:[e.jsxs("div",{className:"nice-list__item-content",children:[I&&r!=="none"&&e.jsx("input",{type:"checkbox",checked:ue,readOnly:!0,tabIndex:-1,className:"nice-list__checkbox"}),W?W(S):e.jsxs(e.Fragment,{children:[S.icon&&e.jsx("span",{className:"nice-list__icon",children:S.icon}),e.jsx("span",{className:"nice-list__text",children:S.text}),S.badge&&e.jsx("span",{className:"nice-list__badge",children:S.badge})]})]}),_&&q&&e.jsx("div",{className:"nice-list__swipe-actions",children:_.map(oe=>e.jsx("button",{className:"nice-list__swipe-btn",style:oe.color?{backgroundColor:oe.color}:void 0,onClick:se=>{se.stopPropagation(),oe.onClick(S),V(null)},children:oe.label},oe.key))})]},S.key)};return e.jsxs("div",{className:`nice-list nice-list--${E} ${F?"nice-list--bordered":""} ${b||""}`,style:l,children:[d&&e.jsx("div",{className:"nice-list__search",children:e.jsx("input",{type:"text",value:we,onChange:S=>w(S.target.value),placeholder:f||te("controls.search","Search...")})}),Q?e.jsx("div",{className:"nice-list__loading",children:e.jsx("div",{className:"nice-spinner nice-spinner--sm"})}):j.length===0?e.jsx("div",{className:"nice-list__empty",children:ee||te("controls.noData","No data available")}):A?e.jsx("div",{role:"listbox",children:Array.from(A.entries()).map(([S,B])=>e.jsxs("div",{className:"nice-list__group",children:[e.jsx("div",{className:"nice-list__group-header",children:S}),e.jsx("ul",{className:"nice-list__items",children:B.map((ue,q)=>le(ue,q))})]},S))}):e.jsx("ul",{className:"nice-list__items",role:"listbox",children:j.map((S,B)=>le(S,B))})]})};function ti(n){const a=[];if(n.children)for(const s of n.children)a.push(s.key),a.push(...ti(s));return a}function In(n,a){if(!n.children||n.children.length===0)return a.has(n.key)?"checked":"unchecked";let s=!0,r=a.has(n.key);for(const d of n.children){const f=In(d,a);f==="checked"?r=!0:(f==="indeterminate"&&(r=!0),s=!1)}return s&&r?"checked":r?"indeterminate":"unchecked"}const Ei=({nodes:n,selectedKeys:a=[],expandedKeys:s,onSelectionChange:r,onExpandedChange:d,selectionMode:f="none",showCheckboxes:x,searchable:c,searchPlaceholder:g,onNodeClick:k,renderNode:C,showLines:W,loading:I,className:Q,style:ee,accessMode:E,id:F,draggable:_,onNodeDrop:b,onLoadChildren:l,contextMenuItems:T,onContextMenuAction:L,editable:U,onNodeEdit:te})=>{if(Ie.useNiceAccessMode(E,F)==="hidden")return null;const{t:w}=Ie.Wo(),[ce,fe]=t.useState([]),[pe,V]=t.useState(""),[J,j]=t.useState(new Set),[A,o]=t.useState(new Map),[ve,le]=t.useState(null),[S,B]=t.useState(null),[ue,q]=t.useState(null),[oe,se]=t.useState(""),Qe=t.useRef(null),Ue=s??ce,Te=t.useMemo(()=>new Set(a),[a]),Be=t.useCallback(async(M,me)=>{const xe=!Ue.includes(M),v=xe?[...Ue,M]:Ue.filter(de=>de!==M);if(d?d(v):fe(v),xe&&l&&!me.children?.length&&me.leaf!==!0&&!A.has(M)){j(K=>new Set(K).add(M));const de=await l(me);o(K=>new Map(K).set(M,de)),j(K=>{const lt=new Set(K);return lt.delete(M),lt})}},[Ue,d,l,A]),Pe=t.useCallback((M,me)=>{if(r){if(f==="single")r(a.includes(M)?[]:[M]);else if(f==="multiple")if(x&&me.children?.length){const xe=ti(me),v=[M,...xe];if(In(me,Te)==="checked")r(a.filter(K=>!v.includes(K)));else{const K=new Set([...a,...v]);r(Array.from(K))}}else r(a.includes(M)?a.filter(xe=>xe!==M):[...a,M])}},[a,f,r,x,Te]),Ke=t.useCallback(M=>{if(!pe)return!0;const me=pe.toLowerCase();return M.text.toLowerCase().includes(me)?!0:(A.get(M.key)??M.children)?.some(v=>Ke(v))??!1},[pe,A]),Fe=t.useCallback((M,me)=>{T?.length&&(M.preventDefault(),B({x:M.clientX,y:M.clientY,node:me}))},[T]),G=t.useCallback(()=>{ue&&te&&te(ue,oe),q(null)},[ue,oe,te]),Ne=(M,me)=>{if(pe&&!Ke(M))return null;const xe=A.get(M.key)??M.children,v=xe&&xe.length>0||M.leaf!==!0&&l&&!xe?.length,de=Ue.includes(M.key),K=Te.has(M.key),lt=J.has(M.key),ne=x&&f==="multiple"&&xe?.length?In(M,Te):K?"checked":"unchecked";return e.jsxs("li",{className:"nice-tree__node",role:"treeitem","aria-expanded":v?de:void 0,draggable:_&&!M.disabled,onDragStart:_?Z=>{Z.stopPropagation(),le(M.key)}:void 0,onDragOver:_?Z=>{Z.preventDefault(),Z.stopPropagation()}:void 0,onDrop:_&&ve?Z=>{Z.stopPropagation(),b?.(ve,M.key,"inside"),le(null)}:void 0,onDragEnd:_?()=>le(null):void 0,children:[e.jsxs("div",{className:`nice-tree__row ${K?"nice-tree__row--selected":""} ${M.disabled?"nice-tree__row--disabled":""} ${ve===M.key?"nice-tree__row--dragging":""}`,style:{paddingLeft:me*20+4},onClick:()=>{M.disabled||(Pe(M.key,M),k?.(M))},onContextMenu:Z=>Fe(Z,M),onDoubleClick:U&&!M.disabled?()=>{q(M.key),se(M.text)}:void 0,children:[e.jsx("span",{className:`nice-tree__toggle ${v?de?"nice-tree__toggle--expanded":"":"nice-tree__toggle--leaf"}`,onClick:Z=>{Z.stopPropagation(),v&&Be(M.key,M)},children:lt?e.jsx("span",{className:"nice-spinner nice-spinner--xs"}):v?de?"▾":"▸":""}),x&&f!=="none"&&e.jsx("input",{type:"checkbox",checked:ne==="checked",ref:Z=>{Z&&(Z.indeterminate=ne==="indeterminate")},onChange:()=>Pe(M.key,M),onClick:Z=>Z.stopPropagation(),tabIndex:-1,className:"nice-tree__checkbox"}),ue===M.key?e.jsx("input",{type:"text",className:"nice-tree__edit-input",value:oe,onChange:Z=>se(Z.target.value),onBlur:G,onKeyDown:Z=>{Z.key==="Enter"&&G(),Z.key==="Escape"&&q(null)},autoFocus:!0,onClick:Z=>Z.stopPropagation()}):C?C(M):e.jsxs(e.Fragment,{children:[M.icon&&e.jsx("span",{className:"nice-tree__icon",children:M.icon}),e.jsx("span",{className:"nice-tree__text",children:M.text})]})]}),xe&&xe.length>0&&de&&e.jsx("ul",{className:"nice-tree__children",role:"group",children:xe.map(Z=>Ne(Z,me+1))})]},M.key)};return e.jsxs("div",{className:`nice-tree ${W?"nice-tree--lines":""} ${Q||""}`,style:ee,ref:Qe,onClick:()=>B(null),children:[c&&e.jsx("div",{className:"nice-tree__search",children:e.jsx("input",{type:"text",value:pe,onChange:M=>V(M.target.value),placeholder:g||w("controls.search","Search..."),"aria-label":g||w("controls.search","Search tree")})}),I?e.jsx("div",{className:"nice-tree__loading",children:e.jsx("div",{className:"nice-spinner nice-spinner--sm"})}):e.jsx("ul",{className:"nice-tree__root",role:"tree",children:n.map(M=>Ne(M,0))}),S&&T&&e.jsx("div",{className:"nice-tree__context-menu",style:{position:"fixed",top:S.y,left:S.x,zIndex:9999},children:T.map(M=>e.jsxs("div",{className:`nice-tree__context-item ${M.disabled?"nice-tree__context-item--disabled":""}`,onClick:()=>{M.disabled||(L?.(M.key,S.node),B(null))},children:[M.icon&&e.jsx("span",{children:M.icon}),M.label]},M.key))})]})};function Ri(n,a,s){const r=new Map,d=[];return n.forEach(f=>{const x={...f,children:[]};r.set(String(x[a]),x)}),n.forEach(f=>{const x=f[s];x!=null&&r.has(String(x))?r.get(String(x)).children.push(r.get(String(f[a]))):d.push(r.get(String(f[a])))}),d}function $i({columns:n,data:a,keyField:s="key",parentKeyField:r="parentKey",expandedKeys:d,onExpandedChange:f,selectedKeys:x=[],onSelectionChange:c,selectable:g,loading:k,emptyText:C,className:W,style:I,accessMode:Q,id:ee}){if(Ie.useNiceAccessMode(Q,ee)==="hidden")return null;const{t:F}=Ie.Wo(),[_,b]=t.useState([]),l=d??_,T=t.useMemo(()=>Ri(a,s,r),[a,s,r]),L=t.useMemo(()=>n.filter(w=>!w.hidden),[n]),U=t.useCallback(w=>{const ce=l.includes(w)?l.filter(fe=>fe!==w):[...l,w];f?f(ce):b(ce)},[l,f]),te=t.useCallback(w=>{c&&c(x.includes(w)?x.filter(ce=>ce!==w):[...x,w])},[x,c]),we=(w,ce)=>{const fe=String(w[s]),pe=w.children&&w.children.length>0,V=l.includes(fe),J=x.includes(fe);return e.jsxs(t.Fragment,{children:[e.jsxs("tr",{className:J?"nice-treelist__row--selected":"",children:[g&&e.jsx("td",{className:"nice-treelist__checkbox",children:e.jsx("input",{type:"checkbox",checked:J,onChange:()=>te(fe)})}),L.map((j,A)=>e.jsxs("td",{style:{textAlign:j.align},children:[A===0&&e.jsx("span",{style:{display:"inline-block",width:ce*20}}),A===0&&e.jsx("span",{className:"nice-treelist__toggle",onClick:()=>pe&&U(fe),style:{cursor:pe?"pointer":"default",width:20,display:"inline-block"},children:pe?V?"▾":"▸":""}),j.render?j.render(w[j.field],w,0):String(w[j.field]??"")]},j.field))]}),pe&&V&&w.children.map(j=>we(j,ce+1))]},fe)};return e.jsx("div",{className:`nice-treelist ${W||""}`,style:I,children:e.jsxs("table",{children:[e.jsx("thead",{children:e.jsxs("tr",{children:[g&&e.jsx("th",{className:"nice-treelist__checkbox"}),L.map(w=>e.jsx("th",{style:{width:w.width,minWidth:w.minWidth,textAlign:w.align},children:w.header},w.field))]})}),e.jsx("tbody",{children:k?e.jsx("tr",{children:e.jsx("td",{colSpan:L.length+(g?1:0),className:"nice-treelist__empty",children:e.jsx("div",{className:"nice-spinner nice-spinner--md",style:{margin:"0 auto"}})})}):T.length===0?e.jsx("tr",{children:e.jsx("td",{colSpan:L.length+(g?1:0),className:"nice-treelist__empty",children:C||F("controls.noData","No data available")})}):T.map(w=>we(w,0))})]})})}function zi({items:n,renderCard:a,columns:s=3,gap:r=16,searchable:d,searchField:f="text",searchPlaceholder:x,loading:c,emptyText:g,onCardClick:k,className:C,style:W,accessMode:I,id:Q}){if(Ie.useNiceAccessMode(I,Q)==="hidden")return null;const{t:E}=Ie.Wo(),[F,_]=t.useState(""),b=t.useMemo(()=>{if(!F)return n;const l=F.toLowerCase();return n.filter(T=>String(T[f]??"").toLowerCase().includes(l))},[n,F,f]);return e.jsxs("div",{className:`nice-cardview ${C||""}`,style:W,children:[d&&e.jsx("div",{className:"nice-cardview__search",children:e.jsx("input",{type:"text",value:F,onChange:l=>_(l.target.value),placeholder:x||E("controls.search","Search...")})}),c?e.jsx("div",{className:"nice-cardview__loading",children:e.jsx("div",{className:"nice-spinner nice-spinner--md"})}):b.length===0?e.jsx("div",{className:"nice-cardview__empty",children:g||E("controls.noData","No data available")}):e.jsx("div",{className:"nice-cardview__grid",style:{display:"grid",gridTemplateColumns:`repeat(${s}, 1fr)`,gap:r},children:b.map(l=>e.jsx("div",{className:"nice-cardview__card",onClick:()=>k?.(l),style:k?{cursor:"pointer"}:void 0,children:a(l)},l.key))})]})}function Ti({items:n,tileWidth:a=180,tileHeight:s=180,direction:r="horizontal",renderTile:d,onTileClick:f,loading:x,emptyText:c,className:g,style:k}){const{t:C}=Ie.Wo();return e.jsx("div",{className:`nice-tileview nice-tileview--${r} ${g||""}`,style:k,children:x?e.jsx("div",{className:"nice-tileview__loading",children:e.jsx("div",{className:"nice-spinner nice-spinner--md"})}):n.length===0?e.jsx("div",{className:"nice-tileview__empty",children:c||C("controls.noData","No data available")}):e.jsx("div",{className:"nice-tileview__container",style:{display:"flex",flexWrap:"wrap",gap:8,flexDirection:r==="vertical"?"column":"row"},children:n.map(W=>e.jsx("div",{className:"nice-tileview__tile",style:{width:a,height:s,cursor:f?"pointer":void 0},onClick:()=>f?.(W),children:d?d(W):e.jsxs(e.Fragment,{children:[W.image&&e.jsx("img",{src:W.image,alt:W.text||"",className:"nice-tileview__image"}),W.text&&e.jsx("div",{className:"nice-tileview__label",children:W.text})]})},W.key))})})}const Zn=[{key:"row",label:"Rows"},{key:"column",label:"Columns"},{key:"data",label:"Values"},{key:"filter",label:"Filters"}],ni=({fields:n,onChange:a,className:s,style:r})=>{const d=n.filter(c=>!c.area),f=(c,g)=>{a(n.map(k=>k.field===c?{...k,area:g}:k))},x=c=>{a(n.map(g=>g.field===c?{...g,area:void 0}:g))};return e.jsx("div",{className:`nice-field-chooser ${s||""}`,style:r,children:e.jsxs("div",{className:"nice-field-chooser__panel",children:[e.jsxs("div",{className:"nice-field-chooser__section",children:[e.jsx("h4",{children:"Available Fields"}),e.jsx("ul",{children:d.map(c=>e.jsxs("li",{className:"nice-field-chooser__item",children:[e.jsx("span",{children:c.caption}),e.jsx("div",{className:"nice-field-chooser__actions",children:Zn.map(g=>e.jsx("button",{type:"button",className:"nice-btn nice-btn--ghost nice-btn--sm",onClick:()=>f(c.field,g.key),children:g.label},g.key))})]},c.field))})]}),Zn.map(c=>{const g=n.filter(k=>k.area===c.key);return e.jsxs("div",{className:"nice-field-chooser__section",children:[e.jsx("h4",{children:c.label}),e.jsx("ul",{children:g.map(k=>e.jsxs("li",{className:"nice-field-chooser__item",children:[e.jsx("span",{children:k.caption}),e.jsx("button",{type:"button",className:"nice-btn nice-btn--ghost nice-btn--sm",onClick:()=>x(k.field),children:"✕"})]},k.field))})]},c.key)})]})})};function Li(n,a){if(n.length===0)return 0;switch(a){case"sum":return n.reduce((s,r)=>s+r,0);case"count":return n.length;case"avg":return n.reduce((s,r)=>s+r,0)/n.length;case"min":return Math.min(...n);case"max":return Math.max(...n);default:return n.reduce((s,r)=>s+r,0)}}function Xn(n,a){return[...new Set(n.map(s=>String(s[a]??"")))].sort()}const ii=({data:n,fields:a,onFieldsChange:s,showFieldChooser:r,loading:d,emptyText:f,exportCsv:x,exportFilename:c="pivot-export",onDrillThrough:g,className:k,style:C,accessMode:W,id:I})=>{if(Ie.useNiceAccessMode(W,I)==="hidden")return null;const{t:ee}=Ie.Wo(),[E,F]=t.useState(a),[_,b]=t.useState(!1),l=t.useMemo(()=>E.filter(V=>V.area==="row"),[E]),T=t.useMemo(()=>E.filter(V=>V.area==="column"),[E]),L=t.useMemo(()=>E.filter(V=>V.area==="data"),[E]),U=t.useMemo(()=>l.length===0?["Total"]:Xn(n,l[0].field),[n,l]),te=t.useMemo(()=>T.length===0?["Total"]:Xn(n,T[0].field),[n,T]),we=t.useCallback((V,J,j)=>{let A=n;l.length>0&&(A=A.filter(le=>String(le[l[0].field])===V)),T.length>0&&(A=A.filter(le=>String(le[T[0].field])===J));const o=A.map(le=>Number(le[j.field])||0),ve=Li(o,j.summaryType||"sum");return j.format?j.format(ve):ve},[n,l,T]),w=t.useCallback(V=>{F(V),s?.(V)},[s]),ce=t.useCallback((V,J)=>{let j=n;return l.length>0&&(j=j.filter(A=>String(A[l[0].field])===V)),T.length>0&&(j=j.filter(A=>String(A[T[0].field])===J)),j},[n,l,T]),fe=t.useCallback((V,J)=>{g&&g(V,J,ce(V,J))},[g,ce]),pe=t.useCallback(()=>{const V=["",...te.flatMap(le=>L.length>0?L.map(S=>`${le} - ${S.caption}`):[le])],J=U.map(le=>{const S=te.flatMap(B=>L.length>0?L.map(ue=>String(we(le,B,ue))):["—"]);return[le,...S]}),j=[V,...J].map(le=>le.map(S=>`"${String(S).replace(/"/g,'""')}"`).join(",")).join(`
15
+ `),A=new Blob(["\uFEFF"+j],{type:"text/csv;charset=utf-8;"}),o=URL.createObjectURL(A),ve=document.createElement("a");ve.href=o,ve.download=`${c}.csv`,ve.click(),URL.revokeObjectURL(o)},[te,U,L,we,c]);return e.jsxs("div",{className:`nice-pivotgrid ${k||""}`,style:C,children:[(r||x)&&e.jsxs("div",{className:"nice-pivotgrid__toolbar",children:[r&&e.jsx("button",{type:"button",className:"nice-btn nice-btn--outline nice-btn--sm",onClick:()=>b(!_),children:ee("controls.fieldChooser","Field Chooser")}),x&&e.jsx("button",{type:"button",className:"nice-btn nice-btn--sm",onClick:pe,children:"CSV ↓"})]}),_&&e.jsx(ni,{fields:E,onChange:w}),d?e.jsx("div",{className:"nice-pivotgrid__loading",children:e.jsx("div",{className:"nice-spinner nice-spinner--md"})}):e.jsx("div",{className:"nice-pivotgrid__table-wrap",children:e.jsxs("table",{className:"nice-pivotgrid__table",children:[e.jsxs("thead",{children:[e.jsxs("tr",{children:[e.jsx("th",{children:l.map(V=>V.caption).join(" / ")||""}),te.map(V=>e.jsx("th",{colSpan:L.length||1,children:V},V))]}),L.length>1&&e.jsxs("tr",{children:[e.jsx("th",{}),te.map(V=>L.map(J=>e.jsx("th",{children:J.caption},`${V}-${J.field}`)))]})]}),e.jsx("tbody",{children:U.length===0?e.jsx("tr",{children:e.jsx("td",{colSpan:1+te.length*Math.max(L.length,1),className:"nice-pivotgrid__empty",children:f||ee("controls.noData","No data available")})}):U.map(V=>e.jsxs("tr",{children:[e.jsx("td",{className:"nice-pivotgrid__row-header",children:V}),te.map(J=>L.length>0?L.map(j=>e.jsx("td",{className:`nice-pivotgrid__cell ${g?"nice-pivotgrid__cell--clickable":""}`,onClick:g?()=>fe(V,J):void 0,children:we(V,J,j)},`${J}-${j.field}`)):e.jsx("td",{className:"nice-pivotgrid__cell",children:"—"},J))]},V))})]})})]})},Pi=Object.freeze(Object.defineProperty({__proto__:null,NicePivotGrid:ii},Symbol.toStringTag,{value:"Module"})),ai=t.forwardRef(({columns:n,cards:a,onCardMove:s,onCardClick:r,renderCard:d,onAddCard:f,disabled:x=!1,size:c="md",collapsible:g=!1,viewMode:k,onViewModeChange:C,collapsedColumns:W,onCollapsedColumnsChange:I,formItems:Q,formColumns:ee=1,formProps:E,editCardTitle:F,newCardTitle:_,onCardEdit:b,onCardCreate:l,onCardDelete:T,cookies:L=!1,localStorage:U=!0,sessionStorage:te=!1,storageMode:we,storageKey:w,className:ce,style:fe,id:pe,...V},J)=>{const{t:j}=Ie.Wo(),[A,o]=t.useState(null),[ve,le]=t.useState(null),[S,B]=t.useState(null),ue=!!Q&&(!!b||!!l),q=t.useCallback(v=>{if(ue&&b){B({key:v.key,data:{...v},column:v.column});return}r?.(v)},[ue,r,b]),oe=t.useCallback(v=>{if(ue&&l){B({key:null,data:{title:"",description:""},column:v});return}f?.(v)},[ue,f,l]),se=Ie.useStorageAdapter(w??"nice-kanban"),[Qe,Ue]=t.useState(()=>se.get("state")??{collapsedColumns:[],viewMode:"default"}),Te=W??Qe.collapsedColumns??[],Be=k??Qe.viewMode??"default",Pe=t.useCallback(v=>{Ue(de=>{const K={...de,...v};return se.set("state",K),K})},[se]),Ke=t.useCallback(v=>{const de=Te.includes(v)?Te.filter(K=>K!==v):[...Te,v];I?I(de):Pe({collapsedColumns:de})},[Te,I,Pe]);t.useCallback(v=>{C?C(v):Pe({viewMode:v})},[C,Pe]);const Fe=t.useCallback(v=>a.filter(de=>de.column===v).sort((de,K)=>(de.order??0)-(K.order??0)),[a]),G=t.useCallback((v,de)=>{x||(v.dataTransfer.effectAllowed="move",v.dataTransfer.setData("text/plain",String(de.key)),o({cardKey:de.key,fromColumn:de.column}))},[x]),Ne=t.useCallback((v,de)=>{v.preventDefault(),v.dataTransfer.dropEffect="move",le({column:de})},[]),M=t.useCallback(()=>{le(null)},[]),me=t.useCallback((v,de)=>{if(v.preventDefault(),le(null),!A||x)return;const K=Fe(de);s?.(A.cardKey,de,K.length),o(null)},[A,x,Fe,s]),xe=t.useCallback(()=>{o(null),le(null)},[]);return e.jsxs(e.Fragment,{children:[e.jsx("div",{ref:J,id:pe,className:`nice-kanban nice-kanban--${c} nice-kanban--${Be} ${x?"nice-kanban--disabled":""} ${ce||""}`,style:fe,...V,children:n.map(v=>{const de=Fe(v.key),K=ve?.column===v.key,lt=v.limit!=null&&de.length>=v.limit,ne=g&&Te.includes(v.key);return e.jsxs("div",{className:`nice-kanban__column ${K?"nice-kanban__column--dragover":""} ${ne?"nice-kanban__column--collapsed":""}`,onDragOver:Z=>!ne&&Ne(Z,v.key),onDragLeave:M,onDrop:Z=>!ne&&me(Z,v.key),children:[e.jsxs("div",{className:"nice-kanban__column-header",style:v.color?{borderTopColor:v.color}:void 0,onClick:g?()=>Ke(v.key):void 0,role:g?"button":void 0,tabIndex:g?0:void 0,onKeyDown:g?Z=>{(Z.key==="Enter"||Z.key===" ")&&Ke(v.key)}:void 0,children:[g&&e.jsx("span",{className:"nice-kanban__collapse-icon","aria-hidden":"true",children:"?"}),e.jsx("span",{className:"nice-kanban__column-title",children:v.title}),e.jsxs("span",{className:"nice-kanban__column-count",children:[de.length,v.limit!=null&&` / ${v.limit}`]})]}),!ne&&e.jsxs("div",{className:"nice-kanban__column-body",children:[de.map(Z=>e.jsx("div",{className:`nice-kanban__card nice-kanban__card--${Be} ${A?.cardKey===Z.key?"nice-kanban__card--dragging":""}`,draggable:!x,onDragStart:rt=>G(rt,Z),onDragEnd:xe,onClick:()=>q(Z),role:"article",children:d?d(Z):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"nice-kanban__card-title",children:Z.title}),Be!=="compact"&&Z.description&&e.jsx("div",{className:"nice-kanban__card-desc",children:Z.description})]})},Z.key)),de.length===0&&e.jsx("div",{className:"nice-kanban__empty",children:j("kanban.empty","No cards")})]}),!ne&&(f||ue&&l)&&!lt&&e.jsxs("button",{type:"button",className:"nice-kanban__add",onClick:()=>oe(v.key),disabled:x,children:["+ ",j("kanban.addCard","Add card")]})]},v.key)})}),ue&&S&&e.jsxs(Hn.NiceModal,{open:!0,onClose:()=>B(null),title:S.key==null?_||j("kanban.newCard","New card"):F||j("kanban.editCard","Edit card"),children:[e.jsx(Jn.NiceForm,{items:Q,data:S.data,columns:ee,...E,onFieldChange:(v,de)=>B(K=>K&&{...K,data:{...K.data,[v]:de}})}),e.jsxs("div",{style:{display:"flex",gap:8,justifyContent:"flex-end",marginTop:16,flexWrap:"wrap"},children:[S.key!=null&&T&&e.jsx(Re.NiceButton,{type:"button",size:"sm",variant:"error",style:{marginRight:"auto"},onClick:()=>{T(S.key),B(null)},children:j("controls.delete","Delete")}),e.jsx(Re.NiceButton,{type:"button",size:"sm",variant:"secondary",onClick:()=>B(null),children:j("controls.cancel","Cancel")}),e.jsx(Re.NiceButton,{type:"button",size:"sm",variant:"primary",onClick:()=>{if(S.key==null){const v={key:`card-${Date.now()}`,title:"",column:S.column,...S.data};l?.(v)}else b?.(S.key,{...S.data,key:S.key,column:S.column});B(null)},children:j("controls.save","Save")})]})]})]})});ai.displayName="NiceKanbanBoard";function Lt(...n){return n.filter(Boolean).map(a=>typeof a=="object"?Object.entries(a).filter(([,s])=>s).map(([s])=>s).join(" "):a).join(" ")}const Fi=50,Oi=[10,25,50,100,200],Wi=40,Ui=10,Bi=768,Gi=500,Vi=10;function jt(n,a){return a.split(".").reduce((s,r)=>s?.[r],n)}function ln(n,a,s="pl-PL"){if(n==null)return"—";switch(a.type){case"number":return new Intl.NumberFormat(s,{minimumFractionDigits:a.format?.includes(".")?a.format.split(".")[1].length:0}).format(n);case"currency":return new Intl.NumberFormat(s,{style:"currency",currency:a.currencyCode||"PLN"}).format(n);case"percent":return new Intl.NumberFormat(s,{style:"percent",minimumFractionDigits:0,maximumFractionDigits:2}).format(n/100);case"date":return new Intl.DateTimeFormat(s,{dateStyle:"short"}).format(new Date(n));case"datetime":return new Intl.DateTimeFormat(s,{dateStyle:"short",timeStyle:"short"}).format(new Date(n));case"boolean":return n?"✓":"✗";case"enum":return a.enumOptions?.find(d=>d.value===n)?.label||String(n);default:return String(n)}}function Ki(n,a,s,r){const[d,f]=t.useState(0),{startIndex:x,endIndex:c,totalHeight:g,offsetY:k}=t.useMemo(()=>{const I=n.length*s,Q=Math.ceil(a/s),ee=Math.max(0,Math.floor(d/s)-r),E=Math.min(n.length,Math.ceil(d/s)+Q+r),F=ee*s;return{startIndex:ee,endIndex:E,totalHeight:I,offsetY:F}},[n.length,a,s,d,r]),C=t.useMemo(()=>n.slice(x,c),[n,x,c]),W=t.useCallback(I=>{f(I.currentTarget.scrollTop)},[]);return{visibleData:C,totalHeight:g,offsetY:k,handleScroll:W,startIndex:x}}function qi(n,a){const[s,r]=t.useState(()=>{if(n&&typeof window<"u"){const f=localStorage.getItem(`nice-module-grid-${n}`);if(f)return JSON.parse(f)}return a||{}}),d=t.useCallback(f=>{r(x=>{const c={...x,...f};return n&&typeof window<"u"&&localStorage.setItem(`nice-module-grid-${n}`,JSON.stringify(c)),c})},[n]);return[s,d]}function Zi(n){const[a,s]=t.useState(typeof window<"u"&&window.innerWidth<n);return t.useEffect(()=>{if(typeof window>"u")return;const r=()=>s(window.innerWidth<n);return window.addEventListener("resize",r),()=>window.removeEventListener("resize",r)},[n]),a}function Xi({column:n,sort:a,onSort:s,onResize:r,resizable:d,t:f}){const x=t.useRef(null),[c,g]=t.useState(!1),k=t.useCallback(I=>{if(!d||!r)return;I.preventDefault(),g(!0);const Q=I.clientX,ee=n.width||150,E=_=>{const b=_.clientX-Q,l=Math.max(n.minWidth||50,ee+b);r(n.field,Math.min(l,n.maxWidth||1/0))},F=()=>{g(!1),document.removeEventListener("mousemove",E),document.removeEventListener("mouseup",F)};document.addEventListener("mousemove",E),document.addEventListener("mouseup",F)},[n,d,r]),C=a?.direction,W=C==="asc"?"↑":C==="desc"?"↓":null;return e.jsxs("div",{className:Lt("nice-module-grid__header-cell",n.sortable&&"nice-module-grid__header-cell--sortable",c&&"nice-module-grid__header-cell--resizing"),style:{width:n.width==="auto"?"auto":n.width||150,minWidth:n.minWidth,maxWidth:n.maxWidth,textAlign:n.align},onClick:()=>n.sortable&&s?.(n.field),role:"columnheader","aria-sort":C==="asc"?"ascending":C==="desc"?"descending":"none",title:n.headerTooltip,children:[e.jsx("span",{className:"nice-module-grid__header-text",children:n.header}),W&&e.jsx("span",{className:"nice-module-grid__sort-indicator",children:W}),d&&e.jsx("div",{ref:x,className:"nice-module-grid__resize-handle",onMouseDown:k})]})}function Qi({column:n,row:a,rowIndex:s,value:r,locale:d="pl-PL",onClick:f}){const x=Ie.useAccessibleClick({onClick:f}),c=f?x:{};if(n.render)return e.jsx("div",{className:"nice-module-grid__cell",style:{textAlign:n.align},...c,children:n.render(r,a,s)});if(n.type==="enum"&&n.enumOptions){const g=n.enumOptions.find(k=>k.value===r);if(g)return e.jsx("div",{className:"nice-module-grid__cell",style:{textAlign:n.align},...c,children:e.jsxs("span",{className:Lt("nice-module-grid__badge",`nice-module-grid__badge--${g.color||"default"}`),children:[g.icon&&e.jsx("span",{className:"nice-module-grid__badge-icon",children:g.icon}),g.label]})})}if(n.type==="progress"){const g=Math.min(100,Math.max(0,Number(r)||0));return e.jsx("div",{className:"nice-module-grid__cell",style:{textAlign:n.align},...c,children:e.jsxs("div",{className:"nice-module-grid__progress",children:[e.jsx("div",{className:Lt("nice-module-grid__progress-bar",`nice-module-grid__progress-bar--${n.progressColor||"primary"}`),style:{width:`${g}%`}}),e.jsxs("span",{className:"nice-module-grid__progress-text",children:[g,"%"]})]})})}if(n.type==="rating"){const g=n.maxRating||5,k=Number(r)||0;return e.jsx("div",{className:"nice-module-grid__cell",style:{textAlign:n.align},...c,children:e.jsx("span",{className:"nice-module-grid__rating","aria-label":`${k} out of ${g} stars`,children:Array.from({length:g},(C,W)=>e.jsx("span",{className:Lt("nice-module-grid__star",W<k&&"nice-module-grid__star--filled"),children:"★"},W))})})}if(n.type==="link"&&n.linkTemplate){const g=n.linkTemplate.replace(/\{\{(\w+)\}\}/g,(k,C)=>String(jt(a,C)??""));return e.jsx("div",{className:"nice-module-grid__cell",style:{textAlign:n.align},...c,children:e.jsx("a",{href:g,target:n.linkNewTab?"_blank":void 0,rel:n.linkNewTab?"noopener noreferrer":void 0,className:"nice-module-grid__link",children:ln(r,n,d)})})}if(n.type==="image"){const k={xs:24,sm:32,md:48,lg:64}[n.imageSize||"sm"];return e.jsx("div",{className:"nice-module-grid__cell",style:{textAlign:n.align},...c,children:r?e.jsx("img",{src:String(r),alt:"",className:"nice-module-grid__image",style:{width:k,height:k}}):e.jsx("div",{className:"nice-module-grid__image-placeholder",style:{width:k,height:k}})})}return n.type==="avatar"?e.jsx("div",{className:"nice-module-grid__cell",style:{textAlign:n.align},...c,children:r?e.jsx("img",{src:String(r),alt:"",className:"nice-module-grid__avatar"}):e.jsx("div",{className:"nice-module-grid__avatar-placeholder",children:"?"})}):n.type==="color"?e.jsx("div",{className:"nice-module-grid__cell",style:{textAlign:n.align},...c,children:e.jsx("span",{className:"nice-module-grid__color-swatch",style:{backgroundColor:r||"transparent"},title:r})}):n.type==="boolean"?e.jsx("div",{className:"nice-module-grid__cell",style:{textAlign:n.align||"center"},...c,children:e.jsx("span",{className:Lt("nice-module-grid__boolean",!!r&&"nice-module-grid__boolean--true"),children:r?"✓":"✗"})}):e.jsx("div",{className:"nice-module-grid__cell",style:{textAlign:n.align},...c,children:ln(r,n,d)})}function Yi({row:n,index:a,columns:s,primaryField:r,secondaryField:d,customRender:f,selected:x,onClick:c,locale:g="pl-PL",t:k}){if(f)return e.jsx("div",{className:Lt("nice-module-grid__mobile-card",x&&"nice-module-grid__mobile-card--selected"),onClick:c,children:f(n,a)});const C=s.find(I=>I.field===r)||s[0],W=s.find(I=>I.field===d)||s[1];return e.jsxs("div",{className:Lt("nice-module-grid__mobile-card",x&&"nice-module-grid__mobile-card--selected"),onClick:c,role:"row","aria-selected":x,children:[e.jsxs("div",{className:"nice-module-grid__mobile-card-header",children:[e.jsx("div",{className:"nice-module-grid__mobile-card-title",children:ln(jt(n,C?.field||""),C,g)}),W&&e.jsx("div",{className:"nice-module-grid__mobile-card-subtitle",children:ln(jt(n,W.field),W,g)})]}),e.jsx("div",{className:"nice-module-grid__mobile-card-body",children:s.filter(I=>!I.hidden&&I.field!==r&&I.field!==d).slice(0,4).map(I=>e.jsxs("div",{className:"nice-module-grid__mobile-card-field",children:[e.jsx("span",{className:"nice-module-grid__mobile-card-label",children:I.header}),e.jsx("span",{className:"nice-module-grid__mobile-card-value",children:ln(jt(n,I.field),I,g)})]},I.field))})]})}function Ji({page:n,pageSize:a,totalRows:s,pageSizeOptions:r,onPageChange:d,t:f}){const x=Math.ceil(s/a),c=(n-1)*a+1,g=Math.min(n*a,s);return e.jsxs("div",{className:"nice-module-grid__pagination",role:"navigation","aria-label":f("pagination.ariaLabel","Pagination"),children:[e.jsxs("div",{className:"nice-module-grid__pagination-info",children:[f("pagination.showing","Showing")," ",c,"–",g," ",f("pagination.of","of")," ",s]}),e.jsxs("div",{className:"nice-module-grid__pagination-controls",children:[e.jsx("select",{className:"nice-module-grid__page-size-select",value:a,onChange:k=>d(1,Number(k.target.value)),"aria-label":f("pagination.rowsPerPage","Rows per page"),children:r.map(k=>e.jsx("option",{value:k,children:k},k))}),e.jsx("button",{className:"nice-module-grid__pagination-btn",onClick:()=>d(1,a),disabled:n===1,"aria-label":f("pagination.first","First"),children:"««"}),e.jsx("button",{className:"nice-module-grid__pagination-btn",onClick:()=>d(n-1,a),disabled:n===1,"aria-label":f("pagination.previous","Previous"),children:"«"}),e.jsxs("span",{className:"nice-module-grid__pagination-page",children:[n," / ",x]}),e.jsx("button",{className:"nice-module-grid__pagination-btn",onClick:()=>d(n+1,a),disabled:n>=x,"aria-label":f("pagination.next","Next"),children:"»"}),e.jsx("button",{className:"nice-module-grid__pagination-btn",onClick:()=>d(x,a),disabled:n>=x,"aria-label":f("pagination.last","Last"),children:"»»"})]})]})}function Hi({columns:n}){return e.jsx("div",{className:"nice-module-grid__row nice-module-grid__row--skeleton",role:"row",children:n.filter(a=>!a.hidden).map(a=>e.jsx("div",{className:"nice-module-grid__cell nice-module-grid__cell--skeleton",style:{width:a.width==="auto"?"auto":a.width||150},children:e.jsx("div",{className:"nice-module-grid__skeleton-bar"})},a.field))})}function ea(n,a){const{columns:s,data:r,keyField:d="id",dataSource:f,onFetch:x,sortable:c=!0,sort:g,onSortChange:k,multiSort:C=!1,filterable:W=!1,filter:I,onFilterChange:Q,searchText:ee,onSearchChange:E,searchPlaceholder:F="moduleGrid.searchPlaceholder",pagination:_=!0,page:b,pageSize:l,pageSizeOptions:T=Oi,totalRows:L,onPageChange:U,virtualScroll:te=!0,rowHeight:we=Wi,overscan:w=Ui,selectionMode:ce="none",selectedKeys:fe,onSelectionChange:pe,columnReorder:V=!0,onColumnOrderChange:J,columnResize:j=!0,onColumnWidthChange:A,groupBy:o,onGroupByChange:ve,groupRowRender:le,expandAllGroups:S=!1,editable:B=!1,onCellEdit:ue,onRowEdit:q,editMode:oe="cell",contextMenuItems:se,onContextMenuAction:Qe,exportable:Ue=!0,exportFormats:Te=["csv","excel"],onExport:Be,preferencesKey:Pe,initialPreferences:Ke,onPreferencesChange:Fe,density:G="normal",striped:Ne=!0,bordered:M=!1,hoverable:me=!0,loading:xe=!1,emptyState:v,toolbar:de,onRowClick:K,onRowDoubleClick:lt,rowClassName:ne,rowStyle:Z,mobileCardView:rt=!0,mobileBreakpoint:be=Bi,mobileCardRender:Ge,mobilePrimaryField:wt,mobileSecondaryField:pt,moduleId:It,permissions:Pt,size:ot="medium",skeletonLoading:At=!0,skeletonRows:kt=Vi,"aria-label":D,"aria-labelledby":Y,"aria-describedby":ge,className:tt,style:mt,id:je,testId:Ve}=n,{t:Oe}=Ie.Wo();Ie.useNiceAccessMode(),Ie.useComponentDisplayStyle("table");const dt=Zi(be),[at,St]=qi(Pe,Ke),Zt=t.useRef(null),en=t.useRef(null),[Xt,Qt]=t.useState([]),[ut,on]=t.useState(),[$e,st]=t.useState(""),[qe,_t]=t.useState(1),[Ut,m]=t.useState(l||Fi),[h,R]=t.useState(new Set),[O,H]=t.useState([]),[$,P]=t.useState(0),[re,ae]=t.useState(!1),[We,ke]=t.useState(new Set),[Se,Ye]=t.useState(null),[Ct,Mt]=t.useState({}),Je=g??Xt,$t=I??ut,Ft=ee??$e,Bt=b??qe,Gt=l??Ut,Dt=fe??h,dn=L??$??r?.length??0,Ot=!!(x||f),ft=t.useMemo(()=>{const N=new Set(at.hiddenColumns||[]);return s.filter(ie=>!ie.hidden&&!N.has(ie.field))},[s,at.hiddenColumns]),ht=t.useMemo(()=>{if(Ot)return O;if(!r)return[];let N=[...r];if(Ft){const ie=Ft.toLowerCase(),_e=s.filter(Ce=>Ce.searchable!==!1).map(Ce=>Ce.field);N=N.filter(Ce=>_e.some(Me=>{const Ze=jt(Ce,Me);return String(Ze??"").toLowerCase().includes(ie)}))}return Je.length>0&&N.sort((ie,_e)=>{for(const Ce of Je){const Me=jt(ie,Ce.field),Ze=jt(_e,Ce.field),bt=Me<Ze?-1:Me>Ze?1:0;if(bt!==0)return Ce.direction==="asc"?bt:-bt}return 0}),N},[Ot,O,r,Ft,Je,s]),zt=t.useMemo(()=>{if(Ot||!_)return ht;const N=(Bt-1)*Gt;return ht.slice(N,N+Gt)},[Ot,ht,_,Bt,Gt]),Vt=Zt.current?.clientHeight||400,Et=te&&zt.length>Gi,{visibleData:Kt,totalHeight:tn,offsetY:jn,handleScroll:wn,startIndex:nn}=Ki(zt,Vt,we,w),Wt=Et?Kt:zt,un=t.useCallback(async()=>{if(x){ae(!0);try{const ie=await x({page:Bt,pageSize:Gt,sort:Je,filter:$t,search:Ft});H(ie.data),P(ie.total)}catch(N){console.error("NiceModuleGrid fetch error:",N)}finally{ae(!1)}}},[x,Bt,Gt,Je,$t,Ft]);t.useEffect(()=>{Ot&&un()},[Ot,un]);const kn=t.useCallback(N=>{const ie=Je.find(Ce=>Ce.field===N);let _e;ie?ie.direction==="asc"?_e=Je.map(Ce=>Ce.field===N?{...Ce,direction:"desc"}:Ce):_e=Je.filter(Ce=>Ce.field!==N):_e=C?[...Je,{field:N,direction:"asc"}]:[{field:N,direction:"asc"}],k?k(_e):Qt(_e)},[Je,C,k]),An=t.useCallback((N,ie)=>{U?U(N,ie):(_t(N),m(ie))},[U]),En=t.useCallback(N=>{E?E(N):st(N),U||_t(1)},[E,U]),an=t.useCallback((N,ie)=>{const _e=new Set(Dt);if(ce==="single"?(_e.clear(),_e.add(N)):(ce==="multiple"||ce==="checkbox")&&(_e.has(N)?_e.delete(N):_e.add(N)),pe){const Ce=zt.filter(Me=>_e.has(String(jt(Me,d))));pe(_e,Ce)}else R(_e)},[Dt,ce,pe,zt,d]),mn=t.useCallback((N,ie)=>{Mt(_e=>({..._e,[N]:ie})),A?.(N,ie),St({columnWidths:{...at.columnWidths,[N]:ie}})},[A,St,at.columnWidths]),Rn=t.useCallback((N,ie)=>{se?.length&&(N.preventDefault(),Ye({x:N.clientX,y:N.clientY,row:ie}))},[se]),$n=t.useCallback(N=>{Se&&Qe?.(N,Se.row),Ye(null)},[Se,Qe]),sn=t.useCallback(async N=>{if(Be)await Be(N,{selectedOnly:Dt.size>0,columns:ft.map(ie=>ie.field)});else if(N==="csv"){const ie=ft.map(ct=>ct.header).join(","),_e=zt.map(ct=>ft.map(fn=>JSON.stringify(jt(ct,fn.field)??"")).join(",")),Ce=[ie,..._e].join(`
16
+ `),Me=new Blob([Ce],{type:"text/csv;charset=utf-8;"}),Ze=URL.createObjectURL(Me),bt=document.createElement("a");bt.href=Ze,bt.download=`export-${new Date().toISOString().slice(0,10)}.csv`,bt.click(),URL.revokeObjectURL(Ze)}},[Be,Dt,ft,zt,Oe]);t.useEffect(()=>{if(!Se)return;const N=()=>Ye(null);return document.addEventListener("click",N),()=>document.removeEventListener("click",N)},[Se]);const gt=t.useCallback(N=>{N.key==="Escape"&&Ye(null)},[]),nt=xe||re,xt=!nt&&Wt.length===0,hn=dt&&rt,pn=Lt("nice-module-grid",`nice-module-grid--${G}`,`nice-module-grid--${ot}`,Ne&&"nice-module-grid--striped",M&&"nice-module-grid--bordered",me&&"nice-module-grid--hoverable",nt&&"nice-module-grid--loading",hn&&"nice-module-grid--mobile",tt);return e.jsxs("div",{ref:a,id:je,"data-testid":Ve,className:pn,style:mt,onKeyDown:gt,role:"grid","aria-label":D,"aria-labelledby":Y,"aria-describedby":ge,"aria-rowcount":dn,"aria-colcount":ft.length,"aria-busy":nt,children:[e.jsxs("div",{className:"nice-module-grid__toolbar",children:[e.jsx("div",{className:"nice-module-grid__toolbar-search",children:e.jsx("input",{type:"search",className:"nice-module-grid__search-input",placeholder:F,value:Ft,onChange:N=>En(N.target.value),"aria-label":Oe("moduleGrid.searchAriaLabel","Search")})}),de,Ue&&e.jsx("div",{className:"nice-module-grid__toolbar-export",children:Te.map(N=>e.jsx("button",{className:"nice-module-grid__export-btn",onClick:()=>sn(N),"aria-label":Oe(`moduleGrid.export.${N}`,`Export to ${N.toUpperCase()}`),children:N.toUpperCase()},N))})]}),e.jsx("div",{ref:Zt,className:"nice-module-grid__container",onScroll:Et?wn:void 0,children:hn?e.jsx("div",{className:"nice-module-grid__mobile-list",children:nt&&At?Array.from({length:kt},(N,ie)=>e.jsxs("div",{className:"nice-module-grid__mobile-card nice-module-grid__mobile-card--skeleton",children:[e.jsx("div",{className:"nice-module-grid__skeleton-bar",style:{width:"60%",height:20}}),e.jsx("div",{className:"nice-module-grid__skeleton-bar",style:{width:"40%",height:14}}),e.jsx("div",{className:"nice-module-grid__skeleton-bar",style:{width:"80%",height:14}})]},ie)):xt?e.jsxs("div",{className:"nice-module-grid__empty",children:[v?.icon&&e.jsx("div",{className:"nice-module-grid__empty-icon",children:v.icon}),e.jsx("div",{className:"nice-module-grid__empty-title",children:v?.title||Oe("moduleGrid.noData","No data")}),v?.description&&e.jsx("div",{className:"nice-module-grid__empty-description",children:v.description}),v?.action&&e.jsxs("button",{className:"nice-module-grid__empty-action",onClick:v.action.onClick,children:[v.action.icon,v.action.label]})]}):Wt.map((N,ie)=>{const _e=String(jt(N,d));return e.jsx(Yi,{row:N,index:nn+ie,columns:ft,primaryField:wt,secondaryField:pt,customRender:Ge,selected:Dt.has(_e),onClick:()=>{ce!=="none"&&an(_e,N),K?.(N,nn+ie)},t:Oe},_e)})}):e.jsxs("div",{ref:en,className:"nice-module-grid__table",children:[e.jsxs("div",{className:"nice-module-grid__header",role:"row",children:[ce==="checkbox"&&e.jsx("div",{className:"nice-module-grid__header-cell nice-module-grid__header-cell--checkbox",children:e.jsx("input",{type:"checkbox",checked:Dt.size>0&&Dt.size===Wt.length,onChange:()=>{if(Dt.size===Wt.length)pe?.(new Set,[]),R(new Set);else{const N=new Set(Wt.map(ie=>String(jt(ie,d))));pe?.(N,Wt),R(N)}},"aria-label":Oe("moduleGrid.selectAll","Select all")})}),ft.map(N=>e.jsx(Xi,{column:{...N,width:Ct[N.field]||N.width},sort:Je.find(ie=>ie.field===N.field),onSort:c?kn:void 0,onResize:j?mn:void 0,resizable:j,t:Oe},N.field))]}),e.jsx("div",{className:"nice-module-grid__body",style:Et?{height:tn,position:"relative"}:void 0,children:nt&&At?Array.from({length:kt},(N,ie)=>e.jsx(Hi,{columns:ft},ie)):xt?e.jsxs("div",{className:"nice-module-grid__empty",children:[v?.icon&&e.jsx("div",{className:"nice-module-grid__empty-icon",children:v.icon}),e.jsx("div",{className:"nice-module-grid__empty-title",children:v?.title||Oe("moduleGrid.noData","No data")}),v?.description&&e.jsx("div",{className:"nice-module-grid__empty-description",children:v.description}),v?.action&&e.jsxs("button",{className:"nice-module-grid__empty-action",onClick:v.action.onClick,children:[v.action.icon,v.action.label]})]}):e.jsx("div",{style:Et?{transform:`translateY(${jn}px)`}:void 0,children:Wt.map((N,ie)=>{const _e=String(jt(N,d)),Ce=nn+ie,Me=Dt.has(_e),Ze=typeof ne=="function"?ne(N,Ce):ne,bt=typeof Z=="function"?Z(N,Ce):Z;return e.jsxs("div",{className:Lt("nice-module-grid__row",Me&&"nice-module-grid__row--selected",Ze),style:{...bt,height:we},role:"row","aria-rowindex":Ce+1,"aria-selected":Me,onClick:()=>{ce!=="none"&&an(_e,N),K?.(N,Ce)},onDoubleClick:()=>lt?.(N,Ce),onContextMenu:ct=>Rn(ct,N),children:[ce==="checkbox"&&e.jsx("div",{className:"nice-module-grid__cell nice-module-grid__cell--checkbox",children:e.jsx("input",{type:"checkbox",checked:Me,onChange:()=>an(_e,N),onClick:ct=>ct.stopPropagation(),"aria-label":Oe("moduleGrid.selectRow","Select row")})}),ft.map(ct=>e.jsx(Qi,{column:{...ct,width:Ct[ct.field]||ct.width},row:N,rowIndex:Ce,value:jt(N,ct.field)},ct.field))]},_e)})})})]})}),_&&dn>0&&e.jsx(Ji,{page:Bt,pageSize:Gt,totalRows:Ot?$:ht.length,pageSizeOptions:T,onPageChange:An,t:Oe}),Se&&se&&e.jsx("div",{className:"nice-module-grid__context-menu",style:{left:Se.x,top:Se.y},role:"menu",children:se.filter(N=>typeof N.hidden=="function"?!N.hidden(Se.row):!N.hidden).map(N=>{if(N.divider)return e.jsx("div",{className:"nice-module-grid__context-menu-divider"},N.key);const ie=typeof N.disabled=="function"?N.disabled(Se.row):N.disabled;return e.jsxs("button",{className:Lt("nice-module-grid__context-menu-item",N.danger&&"nice-module-grid__context-menu-item--danger",ie&&"nice-module-grid__context-menu-item--disabled"),onClick:()=>{ie||(N.onClick?.(Se.row),$n(N.key))},disabled:ie,role:"menuitem",children:[N.icon&&e.jsx("span",{className:"nice-module-grid__context-menu-icon",children:N.icon}),N.label]},N.key)})}),nt&&!At&&e.jsx("div",{className:"nice-module-grid__loading-overlay",children:e.jsx("div",{className:"nice-module-grid__spinner","aria-label":Oe("moduleGrid.loading","Loading")})})]})}const ta=t.forwardRef(ea),na=`
17
+ .nice-reconciliation {
18
+ display: flex;
19
+ flex-direction: column;
20
+ height: 100%;
21
+ background: var(--nice-bg-primary, #ffffff);
22
+ border: 1px solid var(--nice-border-color, #e5e7eb);
23
+ border-radius: 0.5rem;
24
+ overflow: hidden;
25
+ }
26
+
27
+ .nice-reconciliation__toolbar {
28
+ display: flex;
29
+ align-items: center;
30
+ gap: 0.75rem;
31
+ padding: 0.75rem 1rem;
32
+ background: var(--nice-bg-secondary, #f9fafb);
33
+ border-bottom: 1px solid var(--nice-border-color, #e5e7eb);
34
+ flex-wrap: wrap;
35
+ }
36
+
37
+ .nice-reconciliation__toolbar-group {
38
+ display: flex;
39
+ align-items: center;
40
+ gap: 0.5rem;
41
+ }
42
+
43
+ .nice-reconciliation__toolbar-group--end {
44
+ margin-inline-start: auto;
45
+ }
46
+
47
+ .nice-reconciliation__btn {
48
+ display: inline-flex;
49
+ align-items: center;
50
+ gap: 0.375rem;
51
+ padding: 0.375rem 0.75rem;
52
+ font-size: 0.8125rem;
53
+ font-weight: 500;
54
+ border-radius: 0.375rem;
55
+ cursor: pointer;
56
+ transition: all 0.15s ease;
57
+ border: 1px solid var(--nice-border-color, #d1d5db);
58
+ background: var(--nice-bg-primary, #ffffff);
59
+ color: var(--nice-text-primary);
60
+ }
61
+
62
+ .nice-reconciliation__btn:hover {
63
+ background: var(--nice-bg-hover, #f3f4f6);
64
+ }
65
+
66
+ .nice-reconciliation__btn--primary {
67
+ background: var(--nice-primary, #3b82f6);
68
+ border-color: var(--nice-primary, #3b82f6);
69
+ color: white;
70
+ }
71
+
72
+ .nice-reconciliation__btn--primary:hover {
73
+ background: var(--nice-primary-dark, #2563eb);
74
+ }
75
+
76
+ .nice-reconciliation__btn--success {
77
+ background: var(--nice-success, #10b981);
78
+ border-color: var(--nice-success, #10b981);
79
+ color: white;
80
+ }
81
+
82
+ .nice-reconciliation__btn:disabled {
83
+ opacity: 0.5;
84
+ cursor: not-allowed;
85
+ }
86
+
87
+ .nice-reconciliation__content {
88
+ display: flex;
89
+ flex: 1;
90
+ overflow: hidden;
91
+ }
92
+
93
+ .nice-reconciliation--vertical .nice-reconciliation__content {
94
+ flex-direction: column;
95
+ }
96
+
97
+ .nice-reconciliation__panel {
98
+ flex: 1;
99
+ display: flex;
100
+ flex-direction: column;
101
+ min-width: 0;
102
+ min-height: 0;
103
+ overflow: hidden;
104
+ }
105
+
106
+ .nice-reconciliation__panel--statements {
107
+ border-inline-end: 1px solid var(--nice-border-color, #e5e7eb);
108
+ }
109
+
110
+ .nice-reconciliation--vertical .nice-reconciliation__panel--statements {
111
+ border-inline-end: none;
112
+ border-block-end: 1px solid var(--nice-border-color, #e5e7eb);
113
+ }
114
+
115
+ .nice-reconciliation__panel-header {
116
+ display: flex;
117
+ align-items: center;
118
+ justify-content: space-between;
119
+ padding: 0.75rem 1rem;
120
+ background: var(--nice-bg-secondary, #f9fafb);
121
+ border-bottom: 1px solid var(--nice-border-color, #e5e7eb);
122
+ }
123
+
124
+ .nice-reconciliation__panel-title {
125
+ font-weight: 600;
126
+ font-size: 0.875rem;
127
+ color: var(--nice-text-primary);
128
+ display: flex;
129
+ align-items: center;
130
+ gap: 0.5rem;
131
+ }
132
+
133
+ .nice-reconciliation__panel-badge {
134
+ font-size: 0.75rem;
135
+ font-weight: 500;
136
+ padding: 0.125rem 0.5rem;
137
+ border-radius: 9999px;
138
+ background: var(--nice-bg-tertiary, #e5e7eb);
139
+ color: var(--nice-text-secondary);
140
+ }
141
+
142
+ .nice-reconciliation__panel-content {
143
+ flex: 1;
144
+ overflow: auto;
145
+ }
146
+
147
+ .nice-reconciliation__row {
148
+ display: flex;
149
+ align-items: center;
150
+ gap: 0.75rem;
151
+ padding: 0.625rem 1rem;
152
+ border-bottom: 1px solid var(--nice-border-divider, #f3f4f6);
153
+ cursor: pointer;
154
+ user-select: none;
155
+ transition: background 0.1s ease;
156
+ }
157
+
158
+ .nice-reconciliation__row:hover {
159
+ background: var(--nice-bg-hover, rgba(0, 0, 0, 0.02));
160
+ }
161
+
162
+ .nice-reconciliation__row--selected {
163
+ background: var(--nice-primary-light, rgba(59, 130, 246, 0.1));
164
+ }
165
+
166
+ .nice-reconciliation__row--dragging {
167
+ opacity: 0.6;
168
+ background: var(--nice-primary-light, rgba(59, 130, 246, 0.15));
169
+ }
170
+
171
+ .nice-reconciliation__row--drop-target {
172
+ background: var(--nice-success-light, rgba(16, 185, 129, 0.15));
173
+ box-shadow: inset 0 0 0 2px var(--nice-success, #10b981);
174
+ }
175
+
176
+ .nice-reconciliation__row--matched {
177
+ background: var(--nice-success-light, rgba(16, 185, 129, 0.08));
178
+ }
179
+
180
+ .nice-reconciliation__row--partial {
181
+ background: var(--nice-warning-light, rgba(245, 158, 11, 0.08));
182
+ }
183
+
184
+ .nice-reconciliation__row--unmatched {
185
+ background: transparent;
186
+ }
187
+
188
+ .nice-reconciliation__row--excluded {
189
+ opacity: 0.5;
190
+ background: var(--nice-bg-disabled, #f3f4f6);
191
+ }
192
+
193
+ .nice-reconciliation__status {
194
+ width: 0.5rem;
195
+ height: 0.5rem;
196
+ border-radius: 50%;
197
+ flex-shrink: 0;
198
+ }
199
+
200
+ .nice-reconciliation__status--matched {
201
+ background: var(--nice-success, #10b981);
202
+ }
203
+
204
+ .nice-reconciliation__status--partial {
205
+ background: var(--nice-warning, #f59e0b);
206
+ }
207
+
208
+ .nice-reconciliation__status--unmatched {
209
+ background: var(--nice-danger, #ef4444);
210
+ }
211
+
212
+ .nice-reconciliation__status--excluded {
213
+ background: var(--nice-text-disabled, #9ca3af);
214
+ }
215
+
216
+ .nice-reconciliation__row-main {
217
+ flex: 1;
218
+ min-width: 0;
219
+ }
220
+
221
+ .nice-reconciliation__row-date {
222
+ font-size: 0.75rem;
223
+ color: var(--nice-text-secondary);
224
+ margin-bottom: 0.125rem;
225
+ }
226
+
227
+ .nice-reconciliation__row-description {
228
+ font-size: 0.8125rem;
229
+ color: var(--nice-text-primary);
230
+ white-space: nowrap;
231
+ overflow: hidden;
232
+ text-overflow: ellipsis;
233
+ }
234
+
235
+ .nice-reconciliation__row-counterparty {
236
+ font-size: 0.75rem;
237
+ color: var(--nice-text-tertiary);
238
+ white-space: nowrap;
239
+ overflow: hidden;
240
+ text-overflow: ellipsis;
241
+ }
242
+
243
+ .nice-reconciliation__row-amount {
244
+ font-size: 0.875rem;
245
+ font-weight: 600;
246
+ font-variant-numeric: tabular-nums;
247
+ white-space: nowrap;
248
+ }
249
+
250
+ .nice-reconciliation__row-amount--positive {
251
+ color: var(--nice-success, #10b981);
252
+ }
253
+
254
+ .nice-reconciliation__row-amount--negative {
255
+ color: var(--nice-danger, #ef4444);
256
+ }
257
+
258
+ .nice-reconciliation__confidence {
259
+ display: flex;
260
+ align-items: center;
261
+ gap: 0.25rem;
262
+ font-size: 0.6875rem;
263
+ padding: 0.125rem 0.375rem;
264
+ border-radius: 0.25rem;
265
+ }
266
+
267
+ .nice-reconciliation__confidence--high {
268
+ background: var(--nice-success-light, rgba(16, 185, 129, 0.15));
269
+ color: var(--nice-success-dark, #059669);
270
+ }
271
+
272
+ .nice-reconciliation__confidence--medium {
273
+ background: var(--nice-warning-light, rgba(245, 158, 11, 0.15));
274
+ color: var(--nice-warning-dark, #d97706);
275
+ }
276
+
277
+ .nice-reconciliation__confidence--low {
278
+ background: var(--nice-danger-light, rgba(239, 68, 68, 0.15));
279
+ color: var(--nice-danger-dark, #dc2626);
280
+ }
281
+
282
+ .nice-reconciliation__empty {
283
+ display: flex;
284
+ flex-direction: column;
285
+ align-items: center;
286
+ justify-content: center;
287
+ padding: 3rem 1rem;
288
+ color: var(--nice-text-secondary);
289
+ text-align: center;
290
+ }
291
+
292
+ .nice-reconciliation__empty-icon {
293
+ font-size: 2.5rem;
294
+ margin-bottom: 0.75rem;
295
+ opacity: 0.5;
296
+ }
297
+
298
+ .nice-reconciliation__summary {
299
+ display: flex;
300
+ align-items: center;
301
+ gap: 1.5rem;
302
+ padding: 0.75rem 1rem;
303
+ background: var(--nice-bg-secondary, #f9fafb);
304
+ border-top: 1px solid var(--nice-border-color, #e5e7eb);
305
+ font-size: 0.8125rem;
306
+ flex-wrap: wrap;
307
+ }
308
+
309
+ .nice-reconciliation__summary-item {
310
+ display: flex;
311
+ align-items: center;
312
+ gap: 0.375rem;
313
+ }
314
+
315
+ .nice-reconciliation__summary-label {
316
+ color: var(--nice-text-secondary);
317
+ }
318
+
319
+ .nice-reconciliation__summary-value {
320
+ font-weight: 600;
321
+ color: var(--nice-text-primary);
322
+ font-variant-numeric: tabular-nums;
323
+ }
324
+
325
+ .nice-reconciliation__summary-value--success {
326
+ color: var(--nice-success, #10b981);
327
+ }
328
+
329
+ .nice-reconciliation__summary-value--warning {
330
+ color: var(--nice-warning, #f59e0b);
331
+ }
332
+
333
+ .nice-reconciliation__summary-value--danger {
334
+ color: var(--nice-danger, #ef4444);
335
+ }
336
+
337
+ .nice-reconciliation__resizer {
338
+ width: 4px;
339
+ background: var(--nice-border-color, #e5e7eb);
340
+ cursor: col-resize;
341
+ transition: background 0.15s ease;
342
+ }
343
+
344
+ .nice-reconciliation__resizer:hover {
345
+ background: var(--nice-primary, #3b82f6);
346
+ }
347
+
348
+ .nice-reconciliation--vertical .nice-reconciliation__resizer {
349
+ width: 100%;
350
+ height: 4px;
351
+ cursor: row-resize;
352
+ }
353
+
354
+ .nice-reconciliation__suggestions {
355
+ padding: 0.75rem 1rem;
356
+ background: var(--nice-info-light, rgba(59, 130, 246, 0.08));
357
+ border-bottom: 1px solid var(--nice-info, #3b82f6);
358
+ }
359
+
360
+ .nice-reconciliation__suggestion {
361
+ display: flex;
362
+ align-items: center;
363
+ gap: 0.75rem;
364
+ padding: 0.5rem;
365
+ background: var(--nice-bg-primary, #ffffff);
366
+ border-radius: 0.375rem;
367
+ margin-bottom: 0.5rem;
368
+ }
369
+
370
+ .nice-reconciliation__suggestion:last-child {
371
+ margin-bottom: 0;
372
+ }
373
+
374
+ /* Dark mode */
375
+ .dark .nice-reconciliation {
376
+ background: var(--nice-bg-primary-dark, #111827);
377
+ border-color: var(--nice-border-color-dark, #374151);
378
+ }
379
+
380
+ .dark .nice-reconciliation__toolbar,
381
+ .dark .nice-reconciliation__panel-header,
382
+ .dark .nice-reconciliation__summary {
383
+ background: var(--nice-bg-secondary-dark, #1f2937);
384
+ border-color: var(--nice-border-color-dark, #374151);
385
+ }
386
+
387
+ .dark .nice-reconciliation__row--selected {
388
+ background: rgba(59, 130, 246, 0.2);
389
+ }
390
+
391
+ /* RTL support */
392
+ [dir="rtl"] .nice-reconciliation__row-amount {
393
+ direction: ltr;
394
+ text-align: left;
395
+ }
396
+
397
+ /* Detail Panel */
398
+ .nice-reconciliation__detail-panel {
399
+ position: fixed;
400
+ inset-inline-end: 0;
401
+ top: 0;
402
+ bottom: 0;
403
+ width: 420px;
404
+ max-width: 90vw;
405
+ background: var(--nice-bg-primary, #ffffff);
406
+ box-shadow: -4px 0 24px rgba(0, 0, 0, 0.15);
407
+ z-index: 1000;
408
+ display: flex;
409
+ flex-direction: column;
410
+ transform: translateX(100%);
411
+ transition: transform 0.25s ease-out;
412
+ }
413
+
414
+ .nice-reconciliation__detail-panel--open {
415
+ transform: translateX(0);
416
+ }
417
+
418
+ .nice-reconciliation__detail-header {
419
+ display: flex;
420
+ align-items: center;
421
+ justify-content: space-between;
422
+ padding: 1rem;
423
+ border-bottom: 1px solid var(--nice-border-color, #e5e7eb);
424
+ background: var(--nice-bg-secondary, #f9fafb);
425
+ }
426
+
427
+ .nice-reconciliation__detail-title {
428
+ font-weight: 600;
429
+ font-size: 1rem;
430
+ color: var(--nice-text-primary);
431
+ display: flex;
432
+ align-items: center;
433
+ gap: 0.5rem;
434
+ }
435
+
436
+ .nice-reconciliation__detail-close {
437
+ width: 2rem;
438
+ height: 2rem;
439
+ display: flex;
440
+ align-items: center;
441
+ justify-content: center;
442
+ background: transparent;
443
+ border: none;
444
+ cursor: pointer;
445
+ font-size: 1.25rem;
446
+ color: var(--nice-text-secondary);
447
+ border-radius: 0.375rem;
448
+ transition: all 0.15s ease;
449
+ }
450
+
451
+ .nice-reconciliation__detail-close:hover {
452
+ background: var(--nice-bg-hover, #f3f4f6);
453
+ color: var(--nice-text-primary);
454
+ }
455
+
456
+ .nice-reconciliation__detail-content {
457
+ flex: 1;
458
+ overflow: auto;
459
+ padding: 1rem;
460
+ }
461
+
462
+ .nice-reconciliation__detail-section {
463
+ margin-bottom: 1.5rem;
464
+ }
465
+
466
+ .nice-reconciliation__detail-section-title {
467
+ font-weight: 600;
468
+ font-size: 0.875rem;
469
+ color: var(--nice-text-primary);
470
+ margin-bottom: 0.75rem;
471
+ display: flex;
472
+ align-items: center;
473
+ gap: 0.375rem;
474
+ }
475
+
476
+ .nice-reconciliation__detail-row {
477
+ display: flex;
478
+ justify-content: space-between;
479
+ align-items: flex-start;
480
+ padding: 0.5rem 0;
481
+ border-bottom: 1px solid var(--nice-border-divider, #f3f4f6);
482
+ }
483
+
484
+ .nice-reconciliation__detail-row:last-child {
485
+ border-bottom: none;
486
+ }
487
+
488
+ .nice-reconciliation__detail-label {
489
+ font-size: 0.8125rem;
490
+ color: var(--nice-text-secondary);
491
+ }
492
+
493
+ .nice-reconciliation__detail-value {
494
+ font-size: 0.8125rem;
495
+ font-weight: 500;
496
+ color: var(--nice-text-primary);
497
+ text-align: end;
498
+ max-width: 60%;
499
+ word-break: break-word;
500
+ }
501
+
502
+ .nice-reconciliation__detail-divider {
503
+ height: 1px;
504
+ background: var(--nice-border-color, #e5e7eb);
505
+ margin: 1rem 0;
506
+ }
507
+
508
+ .nice-reconciliation__detail-match-info {
509
+ padding: 0.75rem;
510
+ background: var(--nice-success-light, rgba(16, 185, 129, 0.08));
511
+ border-radius: 0.375rem;
512
+ margin-bottom: 1rem;
513
+ }
514
+
515
+ .nice-reconciliation__detail-match-header {
516
+ display: flex;
517
+ align-items: center;
518
+ gap: 0.5rem;
519
+ font-weight: 600;
520
+ font-size: 0.8125rem;
521
+ color: var(--nice-success-dark, #059669);
522
+ margin-bottom: 0.5rem;
523
+ }
524
+
525
+ .nice-reconciliation__detail-match-detail {
526
+ font-size: 0.75rem;
527
+ color: var(--nice-text-secondary);
528
+ }
529
+
530
+ .nice-reconciliation__detail-side-by-side {
531
+ display: grid;
532
+ grid-template-columns: 1fr 1fr;
533
+ gap: 1rem;
534
+ padding: 0.75rem;
535
+ background: var(--nice-bg-secondary, #f9fafb);
536
+ border-radius: 0.375rem;
537
+ margin-top: 0.75rem;
538
+ }
539
+
540
+ .nice-reconciliation__detail-side-item {
541
+ padding: 0.5rem;
542
+ background: var(--nice-bg-primary, #ffffff);
543
+ border-radius: 0.25rem;
544
+ border: 1px solid var(--nice-border-color, #e5e7eb);
545
+ }
546
+
547
+ .nice-reconciliation__detail-side-label {
548
+ font-size: 0.6875rem;
549
+ font-weight: 500;
550
+ text-transform: uppercase;
551
+ color: var(--nice-text-tertiary);
552
+ margin-bottom: 0.375rem;
553
+ }
554
+
555
+ .nice-reconciliation__detail-side-amount {
556
+ font-size: 1.125rem;
557
+ font-weight: 600;
558
+ font-variant-numeric: tabular-nums;
559
+ }
560
+
561
+ .nice-reconciliation__detail-backdrop {
562
+ position: fixed;
563
+ inset: 0;
564
+ background: rgba(0, 0, 0, 0.3);
565
+ z-index: 999;
566
+ opacity: 0;
567
+ pointer-events: none;
568
+ transition: opacity 0.2s ease;
569
+ }
570
+
571
+ .nice-reconciliation__detail-backdrop--visible {
572
+ opacity: 1;
573
+ pointer-events: auto;
574
+ }
575
+
576
+ .dark .nice-reconciliation__detail-panel {
577
+ background: var(--nice-bg-primary-dark, #111827);
578
+ box-shadow: -4px 0 24px rgba(0, 0, 0, 0.4);
579
+ }
580
+
581
+ .dark .nice-reconciliation__detail-header {
582
+ background: var(--nice-bg-secondary-dark, #1f2937);
583
+ border-color: var(--nice-border-color-dark, #374151);
584
+ }
585
+
586
+ .dark .nice-reconciliation__detail-side-by-side {
587
+ background: var(--nice-bg-secondary-dark, #1f2937);
588
+ }
589
+
590
+ .dark .nice-reconciliation__detail-side-item {
591
+ background: var(--nice-bg-primary-dark, #111827);
592
+ border-color: var(--nice-border-color-dark, #374151);
593
+ }
594
+ `;function Tt(n,a="PLN",s="pl-PL"){return new Intl.NumberFormat(s,{style:"currency",currency:a,minimumFractionDigits:2,maximumFractionDigits:2}).format(n)}function vn(n,a="pl-PL"){return n?(typeof n=="string"?new Date(n):n).toLocaleDateString(a,{year:"numeric",month:"2-digit",day:"2-digit"}):"-"}function ia(n){return n>=80?"high":n>=50?"medium":"low"}function aa(){return`match-${Date.now()}-${Math.random().toString(36).slice(2,9)}`}function sa({item:n,isSelected:a,isDragging:s,isDropTarget:r,suggestion:d,currency:f,locale:x,onSelect:c,onDoubleClick:g,onDragStart:k,onDragEnd:C,onDrop:W,disabled:I}){const Q=n.status??"unmatched",ee=d?.confidence??n.confidence,E=_=>{_.dataTransfer.setData("text/plain",n.id),_.dataTransfer.setData("source","statement"),_.dataTransfer.effectAllowed="move",k()},F=_=>{_.dataTransfer.types.includes("source")&&_.dataTransfer.getData("source")!=="statement"&&_.preventDefault()};return e.jsxs("div",{className:`nice-reconciliation__row nice-reconciliation__row--${Q} ${a?"nice-reconciliation__row--selected":""} ${s?"nice-reconciliation__row--dragging":""} ${r?"nice-reconciliation__row--drop-target":""}`,draggable:!I&&Q!=="matched",onDragStart:E,onDragEnd:C,onDragOver:F,onDrop:W,onClick:c,onDoubleClick:g,role:"row","aria-selected":a,tabIndex:0,children:[e.jsx("span",{className:`nice-reconciliation__status nice-reconciliation__status--${Q}`}),e.jsxs("div",{className:"nice-reconciliation__row-main",children:[e.jsx("div",{className:"nice-reconciliation__row-date",children:vn(n.date,x)}),e.jsx("div",{className:"nice-reconciliation__row-description",title:n.description,children:n.description}),n.counterparty&&e.jsx("div",{className:"nice-reconciliation__row-counterparty",children:n.counterparty})]}),ee!=null&&e.jsxs("span",{className:`nice-reconciliation__confidence nice-reconciliation__confidence--${ia(ee)}`,children:[ee,"%"]}),e.jsx("span",{className:`nice-reconciliation__row-amount ${n.amount>=0?"nice-reconciliation__row-amount--positive":"nice-reconciliation__row-amount--negative"}`,children:Tt(n.amount,f,x)})]})}function ra({item:n,isSelected:a,isDragging:s,isDropTarget:r,currency:d,locale:f,onSelect:x,onDoubleClick:c,onDragStart:g,onDragEnd:k,onDrop:C,disabled:W}){const I=n.status??"unmatched",Q=E=>{E.dataTransfer.setData("text/plain",n.id),E.dataTransfer.setData("source","entry"),E.dataTransfer.effectAllowed="move",g()},ee=E=>{E.dataTransfer.types.includes("source")&&E.dataTransfer.getData("source")!=="entry"&&E.preventDefault()};return e.jsxs("div",{className:`nice-reconciliation__row nice-reconciliation__row--${I} ${a?"nice-reconciliation__row--selected":""} ${s?"nice-reconciliation__row--dragging":""} ${r?"nice-reconciliation__row--drop-target":""}`,draggable:!W&&I!=="matched",onDragStart:Q,onDragEnd:k,onDragOver:ee,onDrop:C,onClick:x,onDoubleClick:c,role:"row","aria-selected":a,tabIndex:0,children:[e.jsx("span",{className:`nice-reconciliation__status nice-reconciliation__status--${I}`}),e.jsxs("div",{className:"nice-reconciliation__row-main",children:[e.jsxs("div",{className:"nice-reconciliation__row-date",children:[vn(n.date,f),n.documentNumber&&e.jsxs("span",{children:[" · ",n.documentNumber]})]}),e.jsx("div",{className:"nice-reconciliation__row-description",title:n.description,children:n.description}),n.partyName&&e.jsx("div",{className:"nice-reconciliation__row-counterparty",children:n.partyName})]}),e.jsx("span",{className:`nice-reconciliation__row-amount ${n.amount>=0?"nice-reconciliation__row-amount--positive":"nice-reconciliation__row-amount--negative"}`,children:Tt(n.amount,d,f)})]})}const ca=t.forwardRef(function(a,s){const{statements:r,bankTransactions:d,entries:f,accountingEntries:x,matches:c,defaultMatches:g=[],suggestions:k=[],config:C={},currency:W,showConfidence:I,statementPanelConfig:Q,entryPanelConfig:ee,onMatch:E,onAutoMatch:F,onUnmatch:_,onBatchAction:b,onFilterChange:l,onRequestSuggestions:T,onSelectionChange:L,onComplete:U,size:te="medium",showToolbar:we=!0,showFilters:w=!0,showSummary:ce=!0,showSuggestions:fe=!0,layout:pe="horizontal",enableDragDrop:V=!0,enableKeyboard:J=!0,enableDetailPanel:j=!0,loading:A=!1,disabled:o=!1,readOnly:ve=!1,locale:le="pl-PL",labels:S={},className:B,style:ue}=a,q=r??d??[],oe=f??x??[],se=W??C.currency??"PLN",[Qe,Ue]=t.useState(g),[Te,Be]=t.useState(new Set),[Pe,Ke]=t.useState(new Set),[Fe,G]=t.useState(null),[Ne,M]=t.useState(null),[me,xe]=t.useState({}),[v,de]=t.useState(null),K=c??Qe,lt=t.useRef(null),ne=t.useRef(null);t.useEffect(()=>{const D="nice-reconciliation-styles";if(!document.getElementById(D)){const Y=document.createElement("style");Y.id=D,Y.textContent=na,document.head.appendChild(Y)}},[]);const Z=t.useMemo(()=>{const D=new Set;return K.forEach(Y=>Y.statementIds.forEach(ge=>D.add(ge))),D},[K]),rt=t.useMemo(()=>{const D=new Set;return K.forEach(Y=>Y.entryIds.forEach(ge=>D.add(ge))),D},[K]),be=t.useMemo(()=>{const D=q.filter(je=>!Z.has(je.id)),Y=oe.filter(je=>!rt.has(je.id)),ge=q.reduce((je,Ve)=>je+Ve.amount,0),tt=oe.reduce((je,Ve)=>je+Ve.amount,0),mt=q.filter(je=>Z.has(je.id)).reduce((je,Ve)=>je+Ve.amount,0);return{totalStatements:q.length,totalEntries:oe.length,matchedStatements:q.length-D.length,matchedEntries:oe.length-Y.length,unmatchedStatements:D.length,unmatchedEntries:Y.length,statementTotal:ge,entryTotal:tt,matchedAmount:mt,unmatchedStatementAmount:D.reduce((je,Ve)=>je+Ve.amount,0),unmatchedEntryAmount:Y.reduce((je,Ve)=>je+Ve.amount,0),difference:ge-tt,matchPercentage:q.length>0?Math.round((q.length-D.length)/q.length*100):0,matchCount:K.length,partialMatchCount:K.filter(je=>je.status==="partial").length,pendingSuggestions:k.length}},[q,oe,K,k,Z,rt]),Ge=t.useCallback((D,Y)=>{const ge=q.filter(at=>D.includes(at.id)),tt=oe.filter(at=>Y.includes(at.id));if(ge.length===0||tt.length===0)return null;const mt=ge.reduce((at,St)=>at+St.amount,0),je=tt.reduce((at,St)=>at+St.amount,0),Ve=Math.abs(mt-je),Oe=C.amountTolerance??.01,dt={id:aa(),statementIds:D,entryIds:Y,status:Ve<=Oe?"matched":"partial",statementTotal:mt,entryTotal:je,difference:Ve,confidence:Ve<=Oe?100:Math.max(0,100-Ve/Math.max(Math.abs(mt),1)*100),matchedBy:"user",matchedAt:new Date};return c||Ue(at=>[...at,dt]),E?.(dt,ge,tt),Be(new Set),Ke(new Set),dt},[q,oe,C.amountTolerance,c,E]),wt=t.useCallback(D=>{const Y=K.find(ge=>ge.id===D);Y&&(c||Ue(ge=>ge.filter(tt=>tt.id!==D)),_?.(D,Y.statementIds,Y.entryIds))},[K,c,_]),pt=t.useCallback(async()=>{const D=[],Y=new Set(Z),ge=new Set(rt),tt=C.amountTolerance??.01,mt=C.dateTolerance??3;for(const je of q){if(Y.has(je.id))continue;const Ve=oe.filter(Oe=>{if(ge.has(Oe.id)||Math.abs(je.amount-Oe.amount)>tt)return!1;const at=new Date(je.date),St=new Date(Oe.date);return!(Math.abs(at.getTime()-St.getTime())/(1e3*60*60*24)>mt)});if(Ve.length===1){const Oe=Ve[0],dt=Ge([je.id],[Oe.id]);dt&&(D.push(dt),Y.add(je.id),ge.add(Oe.id))}}return b?.("autoMatch",D),D},[q,oe,Z,rt,C,Ge,b]),It=t.useCallback((D,Y,ge,tt)=>{tt!==Y&&(tt==="statement"?Ge([ge],[D]):Ge([D],[ge]),G(null),M(null))},[Ge]),Pt=t.useCallback(()=>{const D=Array.from(Te),Y=Array.from(Pe);D.length>0&&Y.length>0&&Ge(D,Y)},[Te,Pe,Ge]);t.useEffect(()=>{L?.(Array.from(Te),Array.from(Pe))},[Te,Pe,L]),t.useImperativeHandle(s,()=>({getMatches:()=>K,getUnmatchedStatements:()=>q.filter(D=>!Z.has(D.id)),getUnmatchedEntries:()=>oe.filter(D=>!rt.has(D.id)),createMatch:Ge,removeMatch:wt,autoMatch:pt,getSuggestions:async D=>T?T(D??q.filter(Y=>!Z.has(Y.id)).map(Y=>Y.id)):[],applySuggestion:D=>Ge([D.statementId],D.entryIds),approveAll:()=>{b?.("approveAll",K)},clearAll:()=>{c||Ue([]),b?.("clearAll",[])},exportMatched:D=>{b?.("exportMatched",K)},getSummary:()=>be,reset:()=>{c||Ue([]),Be(new Set),Ke(new Set),xe({})},focusStatements:()=>lt.current?.focus(),focusEntries:()=>ne.current?.focus()}),[K,q,oe,Z,rt,Ge,wt,pt,T,b,c,be]);const ot=t.useMemo(()=>q.filter(D=>{if(me.status&&me.status.length>0){const Y=Z.has(D.id)?"matched":"unmatched";if(!me.status.includes(Y))return!1}if(me.searchText){const Y=me.searchText.toLowerCase();if(!D.description?.toLowerCase().includes(Y)&&!D.counterparty?.toLowerCase().includes(Y))return!1}return!0}),[q,me,Z]),At=t.useMemo(()=>oe.filter(D=>{if(me.status&&me.status.length>0){const Y=rt.has(D.id)?"matched":"unmatched";if(!me.status.includes(Y))return!1}if(me.searchText){const Y=me.searchText.toLowerCase();if(!D.description?.toLowerCase().includes(Y)&&!D.partyName?.toLowerCase().includes(Y))return!1}return!0}),[oe,me,rt]),kt=Te.size>0&&Pe.size>0&&!ve&&!o;return e.jsxs("div",{className:`nice-reconciliation nice-reconciliation--${pe} ${B??""}`,style:ue,children:[we&&e.jsxs("div",{className:"nice-reconciliation__toolbar",children:[e.jsxs("div",{className:"nice-reconciliation__toolbar-group",children:[e.jsxs("button",{type:"button",className:"nice-reconciliation__btn nice-reconciliation__btn--primary",onClick:pt,disabled:o||ve||A,children:["⚡ ",S.autoMatch??"Auto-match"]}),e.jsx("button",{type:"button",className:"nice-reconciliation__btn nice-reconciliation__btn--success",onClick:Pt,disabled:!kt||A,children:"🔗 Match Selected"})]}),e.jsxs("div",{className:"nice-reconciliation__toolbar-group nice-reconciliation__toolbar-group--end",children:[e.jsxs("button",{type:"button",className:"nice-reconciliation__btn",onClick:()=>b?.("approveAll",K),disabled:K.length===0||o||A,children:["✓ ",S.approveAll??"Approve All"]}),e.jsxs("button",{type:"button",className:"nice-reconciliation__btn",onClick:()=>{c||Ue([]),b?.("clearAll",[])},disabled:K.length===0||o||ve||A,children:["✕ ",S.clearAll??"Clear All"]})]})]}),e.jsxs("div",{className:"nice-reconciliation__content",children:[e.jsxs("div",{className:"nice-reconciliation__panel nice-reconciliation__panel--statements",children:[e.jsx("div",{className:"nice-reconciliation__panel-header",children:e.jsxs("span",{className:"nice-reconciliation__panel-title",children:["📄 ",S.statementPanelTitle??"Bank Statement",e.jsx("span",{className:"nice-reconciliation__panel-badge",children:ot.length})]})}),e.jsx("div",{ref:lt,className:"nice-reconciliation__panel-content",role:"listbox","aria-multiselectable":"true",children:ot.length===0?e.jsxs("div",{className:"nice-reconciliation__empty",children:[e.jsx("div",{className:"nice-reconciliation__empty-icon",children:"📋"}),S.noStatements??"No statement items"]}):ot.map(D=>e.jsx(sa,{item:{...D,status:Z.has(D.id)?"matched":"unmatched"},isSelected:Te.has(D.id),isDragging:Fe===D.id,isDropTarget:Ne===D.id,suggestion:k.find(Y=>Y.statementId===D.id),currency:se,locale:le,onSelect:()=>{o||Be(Y=>{const ge=new Set(Y);return ge.has(D.id)?ge.delete(D.id):ge.add(D.id),ge})},onDoubleClick:()=>j&&de({type:"statement",id:D.id}),onDragStart:()=>G(D.id),onDragEnd:()=>{G(null),M(null)},onDrop:()=>{Fe&&Fe!==D.id&&It(D.id,"statement",Fe,"entry")},disabled:o||ve||!V},D.id))})]}),e.jsxs("div",{className:"nice-reconciliation__panel nice-reconciliation__panel--entries",children:[e.jsx("div",{className:"nice-reconciliation__panel-header",children:e.jsxs("span",{className:"nice-reconciliation__panel-title",children:["📒 ",S.entryPanelTitle??"Book Entries",e.jsx("span",{className:"nice-reconciliation__panel-badge",children:At.length})]})}),e.jsx("div",{ref:ne,className:"nice-reconciliation__panel-content",role:"listbox","aria-multiselectable":"true",children:At.length===0?e.jsxs("div",{className:"nice-reconciliation__empty",children:[e.jsx("div",{className:"nice-reconciliation__empty-icon",children:"📚"}),S.noEntries??"No book entries"]}):At.map(D=>e.jsx(ra,{item:{...D,status:rt.has(D.id)?"matched":"unmatched"},isSelected:Pe.has(D.id),isDragging:Fe===D.id,isDropTarget:Ne===D.id,currency:se,locale:le,onSelect:()=>{o||Ke(Y=>{const ge=new Set(Y);return ge.has(D.id)?ge.delete(D.id):ge.add(D.id),ge})},onDoubleClick:()=>j&&de({type:"entry",id:D.id}),onDragStart:()=>G(D.id),onDragEnd:()=>{G(null),M(null)},onDrop:()=>{Fe&&Fe!==D.id&&It(D.id,"entry",Fe,"statement")},disabled:o||ve||!V},D.id))})]})]}),ce&&e.jsxs("div",{className:"nice-reconciliation__summary",children:[e.jsxs("div",{className:"nice-reconciliation__summary-item",children:[e.jsx("span",{className:"nice-reconciliation__summary-label",children:"Matched:"}),e.jsxs("span",{className:"nice-reconciliation__summary-value nice-reconciliation__summary-value--success",children:[be.matchedStatements,"/",be.totalStatements," (",be.matchPercentage,"%)"]})]}),e.jsxs("div",{className:"nice-reconciliation__summary-item",children:[e.jsx("span",{className:"nice-reconciliation__summary-label",children:"Matched Amount:"}),e.jsx("span",{className:"nice-reconciliation__summary-value",children:Tt(be.matchedAmount,se,le)})]}),e.jsxs("div",{className:"nice-reconciliation__summary-item",children:[e.jsx("span",{className:"nice-reconciliation__summary-label",children:"Unmatched:"}),e.jsx("span",{className:"nice-reconciliation__summary-value nice-reconciliation__summary-value--warning",children:Tt(be.unmatchedStatementAmount,se,le)})]}),e.jsxs("div",{className:"nice-reconciliation__summary-item",children:[e.jsx("span",{className:"nice-reconciliation__summary-label",children:"Difference:"}),e.jsx("span",{className:`nice-reconciliation__summary-value ${Math.abs(be.difference)<.01?"nice-reconciliation__summary-value--success":"nice-reconciliation__summary-value--danger"}`,children:Tt(be.difference,se,le)})]})]}),j&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:`nice-reconciliation__detail-backdrop ${v?"nice-reconciliation__detail-backdrop--visible":""}`,onClick:()=>de(null)}),e.jsx("div",{className:`nice-reconciliation__detail-panel ${v?"nice-reconciliation__detail-panel--open":""}`,children:v&&e.jsx(la,{type:v.type,id:v.id,statements:q,entries:oe,matches:K,currency:se,locale:le,labels:S,onClose:()=>de(null)})})]})]})});function la({type:n,id:a,statements:s,entries:r,matches:d,currency:f,locale:x,labels:c,onClose:g}){const k=n==="statement"?s.find(E=>E.id===a):r.find(E=>E.id===a),C=n==="statement"?d.find(E=>E.statementIds.includes(a)):d.find(E=>E.entryIds.includes(a)),W=C?n==="statement"?r.filter(E=>C.entryIds.includes(E.id)):s.filter(E=>C.statementIds.includes(E.id)):[];if(!k)return null;const I=n==="statement",Q=I?k:null,ee=I?null:k;return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"nice-reconciliation__detail-header",children:[e.jsxs("span",{className:"nice-reconciliation__detail-title",children:[I?"📄":"📒"," ",I?c.statementDetails??"Transaction Details":c.entryDetails??"Entry Details"]}),e.jsx("button",{type:"button",className:"nice-reconciliation__detail-close",onClick:g,"aria-label":"Close",children:"✕"})]}),e.jsxs("div",{className:"nice-reconciliation__detail-content",children:[C&&e.jsxs("div",{className:"nice-reconciliation__detail-match-info",children:[e.jsxs("div",{className:"nice-reconciliation__detail-match-header",children:["✓ ",c.matchedWith??"Matched"," (",C.confidence?.toFixed(0)??100,"% confidence)"]}),e.jsx("div",{className:"nice-reconciliation__detail-match-detail",children:C.matchedBy==="ai"?c.matchedByAI??"Matched automatically by AI":c.matchedManually??"Matched manually"}),e.jsxs("div",{className:"nice-reconciliation__detail-side-by-side",children:[e.jsxs("div",{className:"nice-reconciliation__detail-side-item",children:[e.jsx("div",{className:"nice-reconciliation__detail-side-label",children:c.statementTotal??"Statement"}),e.jsx("div",{className:`nice-reconciliation__detail-side-amount ${C.statementTotal>=0?"nice-reconciliation__row-amount--positive":"nice-reconciliation__row-amount--negative"}`,children:Tt(C.statementTotal,f,x)})]}),e.jsxs("div",{className:"nice-reconciliation__detail-side-item",children:[e.jsx("div",{className:"nice-reconciliation__detail-side-label",children:c.entryTotal??"Book Entry"}),e.jsx("div",{className:`nice-reconciliation__detail-side-amount ${C.entryTotal>=0?"nice-reconciliation__row-amount--positive":"nice-reconciliation__row-amount--negative"}`,children:Tt(C.entryTotal,f,x)})]})]}),C.difference>.01&&e.jsxs("div",{className:"nice-reconciliation__detail-row",style:{marginTop:"0.5rem",borderBottom:"none"},children:[e.jsxs("span",{className:"nice-reconciliation__detail-label",children:[c.difference??"Difference",":"]}),e.jsx("span",{className:"nice-reconciliation__detail-value",style:{color:"var(--nice-warning, #f59e0b)"},children:Tt(C.difference,f,x)})]})]}),e.jsxs("div",{className:"nice-reconciliation__detail-section",children:[e.jsxs("div",{className:"nice-reconciliation__detail-section-title",children:["📋"," ",I?c.transactionInfo??"Transaction Information":c.entryInfo??"Entry Information"]}),e.jsxs("div",{className:"nice-reconciliation__detail-row",children:[e.jsxs("span",{className:"nice-reconciliation__detail-label",children:[c.date??"Date",":"]}),e.jsx("span",{className:"nice-reconciliation__detail-value",children:vn(k.date,x)})]}),e.jsxs("div",{className:"nice-reconciliation__detail-row",children:[e.jsxs("span",{className:"nice-reconciliation__detail-label",children:[c.description??"Description",":"]}),e.jsx("span",{className:"nice-reconciliation__detail-value",children:k.description})]}),e.jsxs("div",{className:"nice-reconciliation__detail-row",children:[e.jsxs("span",{className:"nice-reconciliation__detail-label",children:[c.amount??"Amount",":"]}),e.jsx("span",{className:`nice-reconciliation__detail-value ${k.amount>=0?"nice-reconciliation__row-amount--positive":"nice-reconciliation__row-amount--negative"}`,children:Tt(k.amount,f,x)})]}),I&&Q?.counterparty&&e.jsxs("div",{className:"nice-reconciliation__detail-row",children:[e.jsxs("span",{className:"nice-reconciliation__detail-label",children:[c.counterparty??"Counterparty",":"]}),e.jsx("span",{className:"nice-reconciliation__detail-value",children:Q.counterparty})]}),I&&Q?.counterpartyAccount&&e.jsxs("div",{className:"nice-reconciliation__detail-row",children:[e.jsxs("span",{className:"nice-reconciliation__detail-label",children:[c.accountNumber??"Account",":"]}),e.jsx("span",{className:"nice-reconciliation__detail-value",style:{fontFamily:"monospace",fontSize:"0.75rem"},children:Q.counterpartyAccount})]}),!I&&ee?.partyName&&e.jsxs("div",{className:"nice-reconciliation__detail-row",children:[e.jsxs("span",{className:"nice-reconciliation__detail-label",children:[c.party??"Party",":"]}),e.jsx("span",{className:"nice-reconciliation__detail-value",children:ee.partyName})]}),!I&&ee?.documentNumber&&e.jsxs("div",{className:"nice-reconciliation__detail-row",children:[e.jsxs("span",{className:"nice-reconciliation__detail-label",children:[c.documentRef??"Document Ref",":"]}),e.jsx("span",{className:"nice-reconciliation__detail-value",children:ee.documentNumber})]}),I&&Q?.referenceNumber&&e.jsxs("div",{className:"nice-reconciliation__detail-row",children:[e.jsxs("span",{className:"nice-reconciliation__detail-label",children:[c.reference??"Reference",":"]}),e.jsx("span",{className:"nice-reconciliation__detail-value",children:Q.referenceNumber})]})]}),W.length>0&&e.jsxs("div",{className:"nice-reconciliation__detail-section",children:[e.jsxs("div",{className:"nice-reconciliation__detail-section-title",children:["🔗"," ",I?c.matchedEntries??"Matched Entries":c.matchedStatements??"Matched Statements"]}),W.map(E=>e.jsxs("div",{style:{padding:"0.5rem",background:"var(--nice-bg-secondary, #f9fafb)",borderRadius:"0.25rem",marginBottom:"0.5rem",fontSize:"0.8125rem"},children:[e.jsx("div",{style:{fontWeight:500,marginBottom:"0.25rem"},children:E.description}),e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",color:"var(--nice-text-secondary)"},children:[e.jsx("span",{children:vn(E.date,x)}),e.jsx("span",{style:{fontWeight:600,color:E.amount>=0?"var(--nice-success)":"var(--nice-danger)"},children:Tt(E.amount,f,x)})]})]},E.id))]})]})]})}function oa(n,a,s){const r=new Map,d=[];n.forEach(x=>r.set(String(x[a]),{data:x,children:[],key:String(x[a]),depth:0})),n.forEach(x=>{const c=x[s],g=r.get(String(x[a]));if(c!=null&&c!==""&&r.has(String(c))){const k=r.get(String(c));g.depth=k.depth+1,k.children.push(g)}else d.push(g)});const f=(x,c)=>{x.forEach(g=>{g.depth=c,f(g.children,c+1)})};return f(d,0),d}function si(n,a,s,r=0){return n.map(d=>({data:d,key:String(d[s]),depth:r,children:Array.isArray(d[a])?si(d[a],a,s,r+1):[]}))}function da(n){const a=[],s=r=>{r.forEach(d=>{a.push(d.key),s(d.children)})};return s(n),a}function ua(n,a){const s=[],r=d=>{d.forEach(f=>{s.push(f),f.children.length>0&&a.has(f.key)&&r(f.children)})};return r(n),s}function ri(n,a,s){return!a||!s?n:[...n].sort((d,f)=>{const x=d.data[a]??"",c=f.data[a]??"",g=typeof x=="number"&&typeof c=="number"?x-c:String(x).localeCompare(String(c));return s==="desc"?-g:g}).map(d=>({...d,children:ri(d.children,a,s)}))}function ma({columns:n,data:a,keyField:s="id",parentKeyField:r="parentId",nested:d=!1,childrenField:f="children",expandedKeys:x,onExpandedChange:c,defaultExpandAll:g=!1,sortable:k=!0,sortField:C,sortDirection:W,onSort:I,selectable:Q,selectedKeys:ee,onSelectionChange:E,searchable:F,searchPlaceholder:_,striped:b,compact:l,loading:T,emptyText:L,toolbar:U,onRowClick:te,className:we,style:w}){const{t:ce}=Ie.Wo(),fe=t.useMemo(()=>d?si(a,f,s):oa(a,s,r),[a,s,r,d,f]),pe=t.useMemo(()=>da(fe),[fe]),[V,J]=t.useState(()=>g?new Set(pe):new Set),j=x?new Set(x):V,[A,o]=t.useState({field:"",dir:null}),[ve,le]=t.useState(new Set),[S,B]=t.useState(""),ue=C??A.field,q=W??A.dir,oe=ee??ve,se=t.useMemo(()=>n.filter(G=>!G.hidden),[n]),Qe=t.useCallback(G=>{const Ne=ue===G?q==="asc"?"desc":q==="desc"?null:"asc":"asc";I?I(G,Ne):o({field:G,dir:Ne})},[ue,q,I]),Ue=t.useCallback(G=>{const Ne=new Set(j);Ne.has(G)?Ne.delete(G):Ne.add(G),c?c([...Ne]):J(Ne)},[j,c]),Te=t.useCallback(G=>{const Ne=new Set(oe);Ne.has(G)?Ne.delete(G):Ne.add(G),E?E(Ne):le(Ne)},[oe,E]),Be=t.useMemo(()=>{if(!S)return fe;const G=S.toLowerCase(),Ne=M=>M.reduce((me,xe)=>{const v=Ne(xe.children);return(se.some(K=>String(xe.data[K.field]??"").toLowerCase().includes(G))||v.length>0)&&me.push({...xe,children:v}),me},[]);return Ne(fe)},[fe,S,se]),Pe=t.useMemo(()=>ri(Be,ue,q),[Be,ue,q]),Ke=t.useMemo(()=>ua(Pe,j),[Pe,j]),Fe=({field:G})=>ue!==G||!q?e.jsx("span",{className:"nice-table__sort-icon",style:{opacity:.3},children:"↕"}):e.jsx("span",{className:"nice-table__sort-icon",children:q==="asc"?"↑":"↓"});return e.jsxs("div",{className:`nice-treegrid nice-datagrid ${we||""}`,style:w,children:[(F||U)&&e.jsxs("div",{className:"nice-datagrid__toolbar",children:[F&&e.jsx("div",{className:"nice-datagrid__search",children:e.jsx("input",{type:"text",value:S,onChange:G=>B(G.target.value),placeholder:_||ce("controls.search","Search...")})}),U]}),e.jsx("div",{className:"nice-datagrid__table-wrap",children:e.jsxs("table",{className:`${b?"nice-table--striped":""} ${l?"nice-table--compact":""}`,children:[e.jsx("thead",{children:e.jsxs("tr",{children:[Q&&e.jsx("th",{className:"nice-datagrid__checkbox",style:{width:36}}),se.map(G=>e.jsxs("th",{style:{width:G.width,minWidth:G.minWidth,textAlign:G.align},className:k&&G.sortable!==!1?"nice-datagrid__th--sortable":void 0,onClick:()=>k&&G.sortable!==!1&&Qe(G.field),children:[G.header,k&&G.sortable!==!1&&e.jsx(Fe,{field:G.field})]},G.field))]})}),e.jsx("tbody",{children:T?e.jsx("tr",{children:e.jsx("td",{colSpan:se.length+(Q?1:0),className:"nice-datagrid__empty",children:e.jsx("div",{className:"nice-spinner nice-spinner--md",style:{margin:"0 auto"}})})}):Ke.length===0?e.jsx("tr",{children:e.jsx("td",{colSpan:se.length+(Q?1:0),className:"nice-datagrid__empty",children:L||ce("controls.noData","No data available")})}):Ke.map((G,Ne)=>{const M=oe.has(G.key),me=G.children.length>0,xe=j.has(G.key);return e.jsxs("tr",{className:M?"nice-datagrid__row--selected":void 0,onClick:()=>te?.(G.data),style:te?{cursor:"pointer"}:void 0,children:[Q&&e.jsx("td",{className:"nice-datagrid__checkbox",onClick:v=>v.stopPropagation(),children:e.jsx("input",{type:"checkbox",checked:M,onChange:()=>Te(G.key),"aria-label":`Select row ${G.key}`})}),se.map((v,de)=>e.jsxs("td",{style:{textAlign:v.align},children:[de===0&&e.jsxs(e.Fragment,{children:[e.jsx("span",{style:{display:"inline-block",width:G.depth*20}}),e.jsx("button",{className:`nice-treegrid__toggle ${me?"":"nice-treegrid__toggle--leaf"}`,onClick:K=>{K.stopPropagation(),me&&Ue(G.key)},tabIndex:me?0:-1,"aria-expanded":me?xe:void 0,"aria-label":me?xe?"Collapse":"Expand":void 0,children:me?xe?"▾":"▸":""})]}),v.render?v.render(G.data[v.field],G.data,Ne):String(G.data[v.field]??"")]},v.field))]},G.key)})})]})})]})}function ci(n){let a="",s=n;for(;s>=0;)a=String.fromCharCode(65+s%26)+a,s=Math.floor(s/26)-1;return a}function De(n,a){return`${ci(a)}${n+1}`}function it(n){const a=n.match(/^([A-Z]+)(\d+)$/);if(!a)return null;let s=0;for(let r=0;r<a[1].length;r++)s=s*26+(a[1].charCodeAt(r)-64);return{row:parseInt(a[2],10)-1,col:s-1}}function ha(n,a,s=new Set){const r=n.startsWith("=")?n.slice(1).trim():n,d=(F,_)=>{if(!F||!_)return[];const b=[];for(let l=F.row;l<=_.row;l++)for(let T=F.col;T<=_.col;T++){const L=et(De(l,T),a,new Set(s));typeof L=="number"&&b.push(L)}return b},f=(F,_)=>{if(!F||!_)return[];const b=[];for(let l=F.row;l<=_.row;l++)for(let T=F.col;T<=_.col;T++)b.push(et(De(l,T),a,new Set(s)));return b},x=r.match(/^(\w+)\(([A-Z]+\d+):([A-Z]+\d+)\)$/i);if(x){const F=x[1].toUpperCase(),_=it(x[2].toUpperCase()),b=it(x[3].toUpperCase());switch(F){case"SUM":return d(_,b).reduce((T,L)=>T+L,0);case"AVG":case"AVERAGE":{const l=d(_,b);return l.length>0?l.reduce((T,L)=>T+L,0)/l.length:0}case"COUNT":return d(_,b).length;case"COUNTA":return f(_,b).filter(l=>l!==null&&l!=="").length;case"COUNTBLANK":return f(_,b).filter(l=>l===null||l==="").length;case"MIN":{const l=d(_,b);return l.length?Math.min(...l):0}case"MAX":{const l=d(_,b);return l.length?Math.max(...l):0}case"MEDIAN":{const l=d(_,b).sort((L,U)=>L-U);if(!l.length)return 0;const T=Math.floor(l.length/2);return l.length%2?l[T]:(l[T-1]+l[T])/2}case"STDEV":{const l=d(_,b);if(l.length<2)return 0;const T=l.reduce((L,U)=>L+U,0)/l.length;return Math.sqrt(l.reduce((L,U)=>L+(U-T)**2,0)/(l.length-1))}case"PRODUCT":{const l=d(_,b);return l.length?l.reduce((T,L)=>T*L,1):0}}}const c=r.match(/^(SUMIF|COUNTIF)\(([A-Z]+\d+):([A-Z]+\d+)\s*,\s*"?([^"]*)"?\)$/i);if(c){const F=c[1].toUpperCase(),_=it(c[2].toUpperCase()),b=it(c[3].toUpperCase()),l=c[4];if(_&&b){let T=0;for(let L=_.row;L<=b.row;L++)for(let U=_.col;U<=b.col;U++){const te=et(De(L,U),a,new Set(s));(l.startsWith(">")?Number(te)>Number(l.slice(1)):l.startsWith("<")?Number(te)<Number(l.slice(1)):String(te)===l||typeof te=="number"&&te===Number(l))&&(T+=F==="SUMIF"?typeof te=="number"?te:0:1)}return T}}const g=r.match(/^IF\(([^,]+),\s*([^,]+),\s*([^)]+)\)$/i);if(g){const F=g[1].trim(),_=g[2].trim(),b=g[3].trim(),l=F.match(/^([A-Z]+\d+)\s*([><=!]+)\s*(\S+)$/i);let T=!1;if(l){const te=et(l[1].toUpperCase(),a,new Set(s)),we=isNaN(Number(l[3]))?l[3].replace(/^"|"$/g,""):Number(l[3]),w=l[2],ce=typeof te=="number"?te:Number(te)||0,fe=typeof we=="number"?we:Number(we)||0;switch(w){case">":T=ce>fe;break;case"<":T=ce<fe;break;case">=":T=ce>=fe;break;case"<=":T=ce<=fe;break;case"=":case"==":T=ce===fe;break;case"<>":case"!=":T=ce!==fe;break}}const L=T?_:b;if(it(L.toUpperCase()))return et(L.toUpperCase(),a,new Set(s));const U=Number(L);return isNaN(U)?L.replace(/^"|"$/g,""):U}const k=r.match(/^CONCAT\((.+)\)$/i);if(k)return k[1].split(",").map(_=>_.trim()).map(_=>{if(_.startsWith('"')&&_.endsWith('"'))return _.slice(1,-1);if(it(_.toUpperCase())){const l=et(_.toUpperCase(),a,new Set(s));return l!==null?String(l):""}return _}).join("");const C=r.match(/^VLOOKUP\(([^,]+),\s*([A-Z]+\d+):([A-Z]+\d+),\s*(\d+)\)$/i);if(C){let F;it(C[1].trim().toUpperCase())?F=et(C[1].trim().toUpperCase(),a,new Set(s)):F=isNaN(Number(C[1]))?C[1].replace(/^"|"$/g,""):Number(C[1]);const b=it(C[2].toUpperCase()),l=it(C[3].toUpperCase()),T=parseInt(C[4])-1;if(b&&l)for(let L=b.row;L<=l.row;L++){const U=et(De(L,b.col),a,new Set(s));if(String(U)===String(F))return et(De(L,b.col+T),a,new Set(s))}return null}const W=r.match(/^(ABS|ROUND|FLOOR|CEIL|CEILING|SQRT|LEN|UPPER|LOWER|TRIM|INT)\(([^)]+)\)$/i);if(W){const F=W[1].toUpperCase(),_=W[2].trim();let b;switch(it(_.toUpperCase())?b=et(_.toUpperCase(),a,new Set(s)):b=isNaN(Number(_))?_.replace(/^"|"$/g,""):Number(_),F){case"ABS":return Math.abs(Number(b)||0);case"ROUND":return Math.round(Number(b)||0);case"FLOOR":return Math.floor(Number(b)||0);case"CEIL":case"CEILING":return Math.ceil(Number(b)||0);case"SQRT":return Math.sqrt(Number(b)||0);case"INT":return Math.trunc(Number(b)||0);case"LEN":return String(b??"").length;case"UPPER":return String(b??"").toUpperCase();case"LOWER":return String(b??"").toLowerCase();case"TRIM":return String(b??"").trim()}}const I=r.match(/^POWER\(([^,]+),\s*([^)]+)\)$/i);if(I){const F=Number(it(I[1].trim().toUpperCase())?et(I[1].trim().toUpperCase(),a,new Set(s)):I[1].trim())||0,_=Number(it(I[2].trim().toUpperCase())?et(I[2].trim().toUpperCase(),a,new Set(s)):I[2].trim())||0;return Math.pow(F,_)}if(/^NOW\(\)$/i.test(r))return new Date().toISOString();if(/^TODAY\(\)$/i.test(r))return new Date().toISOString().split("T")[0];if(/^PI\(\)$/i.test(r))return Math.PI;const Q=r.match(/^([A-Z]+\d+)$/i);if(Q)return et(Q[1].toUpperCase(),a,s);const ee=r.match(/^([A-Z]+\d+)\s*([+\-*/])\s*([A-Z]+\d+|\d+\.?\d*)$/i);if(ee){const F=ee[1].toUpperCase(),_=ee[2],b=ee[3],l=et(F,a,s),L=it(b.toUpperCase())?et(b.toUpperCase(),a,s):parseFloat(b),U=typeof l=="number"?l:0,te=typeof L=="number"?L:0;switch(_){case"+":return U+te;case"-":return U-te;case"*":return U*te;case"/":return te!==0?U/te:null}}const E=parseFloat(r);return isNaN(E)?r:E}function et(n,a,s){if(s.has(n))return null;s.add(n);const r=a[n];return r?r.formula?ha(r.formula,a,s):r.value:null}function Qn(n,a){return n==null?"":a==="percent"&&typeof n=="number"?`${(n*100).toFixed(1)}%`:a==="currency"&&typeof n=="number"?`$${n.toFixed(2)}`:String(n)}function Yn(n){return{name:n,data:{}}}const li=t.forwardRef(({sheets:n,activeSheet:a,rows:s=50,cols:r=26,showToolbar:d=!0,showFormulaBar:f=!0,showSheetTabs:x=!0,readOnly:c=!1,onChange:g,onActiveSheetChange:k,onCellSelect:C,onCopy:W,onPaste:I,onInsert:Q,onRemove:ee,maxUndo:E=50,sortable:F=!1,filterable:_=!1,rangeSelection:b=!0,className:l,style:T,id:L,...U},te)=>{const we=Ie.useControlId(L),{t:w}=Ie.Wo(),[ce,fe]=t.useState(()=>n??[Yn(w("spreadsheet.sheet","Sheet")+" 1")]),[pe,V]=t.useState(0),J=n??ce,j=a??pe,A=J[j]??J[0],[o,ve]=t.useState(null),[le,S]=t.useState(null),[B,ue]=t.useState(!1),[q,oe]=t.useState(null),[se,Qe]=t.useState(""),Ue=t.useRef(null),Te=t.useRef(null),[Be,Pe]=t.useState([]),[Ke,Fe]=t.useState([]),[G,Ne]=t.useState(null),M=t.useRef({x:0,width:80}),[me,xe]=t.useState(null),[v,de]=t.useState(null),[K,lt]=t.useState("");t.useEffect(()=>{q&&Ue.current&&Ue.current.focus()},[q]);const ne=t.useMemo(()=>{if(!o)return null;const m=le??o;return{startRow:Math.min(o.row,m.row),startCol:Math.min(o.col,m.col),endRow:Math.max(o.row,m.row),endCol:Math.max(o.col,m.col)}},[o,le]),Z=t.useCallback((m,h)=>ne?m>=ne.startRow&&m<=ne.endRow&&h>=ne.startCol&&h<=ne.endCol:!1,[ne]),rt=t.useCallback(m=>{Pe(h=>{const R=[...h,m.map(O=>({...O,data:{...O.data}}))];return R.length>E?R.slice(-E):R}),Fe([])},[E]),be=t.useCallback((m,h=!0)=>{h&&rt(J);const R=m(J);n||fe(R),g?.(R)},[J,n,g,rt]),Ge=t.useCallback(()=>{if(Be.length===0)return;const m=Be[Be.length-1];Fe(h=>[...h,J.map(R=>({...R,data:{...R.data}}))]),Pe(h=>h.slice(0,-1)),n||fe(m),g?.(m)},[Be,J,n,g]),wt=t.useCallback(()=>{if(Ke.length===0)return;const m=Ke[Ke.length-1];Pe(h=>[...h,J.map(R=>({...R,data:{...R.data}}))]),Fe(h=>h.slice(0,-1)),n||fe(m),g?.(m)},[Ke,J,n,g]),pt=t.useCallback(m=>{a||V(m),k?.(m),ve(null),S(null),oe(null)},[a,k]),It=t.useCallback((m,h,R)=>{const O=De(m,h);be(H=>{const $=H.map((re,ae)=>ae===j?{...re,data:{...re.data}}:re),P=R.startsWith("=");return $[j].data[O]={...$[j].data[O]??{value:null},formula:P?R:void 0,value:P?null:isNaN(Number(R))?R:Number(R)},$})},[j,be]),Pt=t.useCallback((m,h,R)=>{R?.shiftKey&&b&&o?S({row:m,col:h}):(ve({row:m,col:h}),S(null)),oe(null),C?.(j,m,h)},[j,C,b,o]),ot=t.useCallback((m,h,R)=>{R.button===0&&(Pt(m,h,R),b&&!R.shiftKey&&ue(!0))},[Pt,b]),At=t.useCallback((m,h)=>{B&&S({row:m,col:h})},[B]);t.useEffect(()=>{if(!B)return;const m=()=>ue(!1);return document.addEventListener("mouseup",m),()=>document.removeEventListener("mouseup",m)},[B]);const kt=t.useCallback((m,h)=>{if(c)return;const R=De(m,h),O=A.data[R];O?.readOnly||(oe({row:m,col:h}),Qe(O?.formula??(O?.value!=null?String(O.value):"")))},[c,A.data]),D=t.useCallback(()=>{q&&(It(q.row,q.col,se),oe(null))},[q,se,It]),Y=t.useCallback(m=>{if(m.key==="Enter")D();else if(m.key==="Escape")oe(null);else if(m.key==="Tab"&&(m.preventDefault(),D(),o)){const h=m.shiftKey?Math.max(0,o.col-1):Math.min(r-1,o.col+1);ve({row:o.row,col:h})}},[D,o,r]),ge=t.useCallback((m,h)=>{if(!o)return;const R=ne??{startRow:o.row,startCol:o.col,endRow:o.row,endCol:o.col};be(O=>{const H=O.map(($,P)=>P===j?{...$,data:{...$.data}}:$);for(let $=R.startRow;$<=R.endRow;$++)for(let P=R.startCol;P<=R.endCol;P++){const re=De($,P);H[j].data[re]={...H[j].data[re]??{value:null},[m]:h}}return H})},[o,ne,j,be]),tt=t.useCallback(m=>{if(!ne||W?.(ne)===!1)return;const{startRow:h,startCol:R,endRow:O,endCol:H}=ne,$=[];for(let P=h;P<=O;P++){const re=[];for(let ae=R;ae<=H;ae++){const We=De(P,ae),ke=A.data[We],Se=ke?et(We,A.data,new Set):null;re.push(Qn(Se,ke?.format))}$.push(re.join(" "))}m.clipboardData.setData("text/plain",$.join(`
595
+ `)),m.preventDefault()},[ne,A.data,W]),mt=t.useCallback(m=>{if(c||!o)return;const h=m.clipboardData.getData("text/plain");if(!h)return;const R=h.split(`
596
+ `).map(O=>O.split(" "));I?.(R,o.row,o.col)!==!1&&(be(O=>{const H=O.map(($,P)=>P===j?{...$,data:{...$.data}}:$);return R.forEach(($,P)=>{$.forEach((re,ae)=>{const We=De(o.row+P,o.col+ae),ke=re.startsWith("=");H[j].data[We]={...H[j].data[We]??{value:null},formula:ke?re:void 0,value:ke?null:isNaN(Number(re))?re:Number(re)}})}),H}),m.preventDefault())},[c,o,j,be,I]),je=t.useCallback(m=>{be(h=>h.map((O,H)=>{if(H!==j)return O;const $={};for(const[P,re]of Object.entries(O.data)){const ae=it(P);ae&&(ae.row>m?$[De(ae.row+1,ae.col)]=re:$[P]=re)}return{...O,data:$}})),Q?.("row",m)},[j,be,Q]),Ve=t.useCallback(m=>{be(h=>h.map((O,H)=>{if(H!==j)return O;const $={};for(const[P,re]of Object.entries(O.data)){const ae=it(P);ae&&(ae.col>m?$[De(ae.row,ae.col+1)]=re:$[P]=re)}return{...O,data:$}})),Q?.("column",m)},[j,be,Q]),Oe=t.useCallback(m=>{be(h=>h.map((O,H)=>{if(H!==j)return O;const $={};for(const[P,re]of Object.entries(O.data)){const ae=it(P);ae&&ae.row!==m&&(ae.row>m?$[De(ae.row-1,ae.col)]=re:$[P]=re)}return{...O,data:$}})),ee?.("row",m)},[j,be,ee]),dt=t.useCallback(m=>{be(h=>h.map((O,H)=>{if(H!==j)return O;const $={};for(const[P,re]of Object.entries(O.data)){const ae=it(P);ae&&ae.col!==m&&(ae.col>m?$[De(ae.row,ae.col-1)]=re:$[P]=re)}return{...O,data:$}})),ee?.("column",m)},[j,be,ee]),at=t.useCallback((m,h)=>{be(R=>R.map((H,$)=>{if($!==j)return H;const P=new Map;for(const[We,ke]of Object.entries(H.data)){const Se=it(We);Se&&(P.has(Se.row)||P.set(Se.row,{}),P.get(Se.row)[Se.col]=ke)}const re=Array.from(P.entries()).sort((We,ke)=>{const Se=et(De(We[0],m),H.data,new Set),Ye=et(De(ke[0],m),H.data,new Set),Ct=typeof Se=="number"?Se:Number(Se),Mt=typeof Ye=="number"?Ye:Number(Ye);if(!isNaN(Ct)&&!isNaN(Mt))return h==="asc"?Ct-Mt:Mt-Ct;const Je=String(Se??""),$t=String(Ye??"");return h==="asc"?Je.localeCompare($t):$t.localeCompare(Je)}),ae={};return re.forEach(([,We],ke)=>{for(const[Se,Ye]of Object.entries(We))ae[De(ke,Number(Se))]=Ye}),{...H,data:ae,sortColumn:m,sortDirection:h}}))},[j,be]),St=t.useCallback((m,h)=>{const R=A.conditionalFormats;if(!R?.length)return;const O=De(m,h),H=et(O,A.data,new Set),$=typeof H=="number"?H:Number(H);for(const P of R){const re=P.range.match(/^([A-Z]+\d+):([A-Z]+\d+)$/i);if(!re)continue;const ae=it(re[1].toUpperCase()),We=it(re[2].toUpperCase());if(!ae||!We||m<ae.row||m>We.row||h<ae.col||h>We.col)continue;let ke=!1;switch(P.type){case"greaterThan":ke=!isNaN($)&&$>Number(P.value);break;case"lessThan":ke=!isNaN($)&&$<Number(P.value);break;case"equalTo":ke=String(H)===String(P.value);break;case"between":ke=!isNaN($)&&$>=Number(P.value)&&$<=Number(P.value2);break;case"textContains":ke=String(H).includes(String(P.value));break;case"isEmpty":ke=H===null||H==="";break;case"isNotEmpty":ke=H!==null&&H!=="";break}if(ke)return{backgroundColor:P.style.bgColor,color:P.style.color,fontWeight:P.style.bold?"bold":void 0,fontStyle:P.style.italic?"italic":void 0}}},[A.conditionalFormats,A.data]),Zt=t.useCallback(()=>{const m=`${w("spreadsheet.sheet","Sheet")} ${J.length+1}`;be(h=>[...h,Yn(m)]),pt(J.length)},[J.length,be,pt,w]),en=t.useCallback(()=>{J.length<=1||(be(m=>m.filter((h,R)=>R!==j)),pt(Math.max(0,j-1)))},[J.length,j,be,pt]),Xt=t.useCallback((m,h)=>{h.trim()&&(be(R=>R.map((O,H)=>H===m?{...O,name:h.trim()}:O),!1),de(null))},[be]),Qt=t.useMemo(()=>{if(!o)return"";const m=De(o.row,o.col),h=A.data[m];return h?.formula??(h?.value!=null?String(h.value):"")},[o,A.data]),ut=t.useMemo(()=>{if(!ne)return null;const{startRow:m,startCol:h,endRow:R,endCol:O}=ne;if(m===R&&h===O)return null;const H=[];let $=0;for(let P=m;P<=R;P++)for(let re=h;re<=O;re++){const ae=De(P,re),We=et(ae,A.data,new Set);We!==null&&We!==""&&$++,typeof We=="number"&&H.push(We)}return H.length===0?{count:$}:{count:$,sum:H.reduce((P,re)=>P+re,0),avg:H.reduce((P,re)=>P+re,0)/H.length,min:Math.min(...H),max:Math.max(...H)}},[ne,A.data]),on=t.useCallback((m,h)=>{h.preventDefault(),h.stopPropagation(),Ne(m),M.current={x:h.clientX,width:A.colWidths?.[m]??80}},[A.colWidths]);t.useEffect(()=>{if(G===null)return;const m=R=>{const O=R.clientX-M.current.x,H=Math.max(30,M.current.width+O);be($=>$.map((re,ae)=>ae===j?{...re,colWidths:{...re.colWidths,[G]:H}}:re),!1)},h=()=>Ne(null);return document.addEventListener("mousemove",m),document.addEventListener("mouseup",h),()=>{document.removeEventListener("mousemove",m),document.removeEventListener("mouseup",h)}},[G,j,be]);const $e=t.useCallback((m,h,R)=>{m.preventDefault(),ve({row:h,col:R}),xe({x:m.clientX,y:m.clientY})},[]);t.useEffect(()=>{if(!me)return;const m=()=>xe(null);return document.addEventListener("click",m),()=>document.removeEventListener("click",m)},[me]);const st=t.useCallback(m=>{if((m.ctrlKey||m.metaKey)&&!q){if(m.key==="z"){m.preventDefault(),Ge();return}if(m.key==="y"){m.preventDefault(),wt();return}}if(q||!o)return;let{row:h,col:R}=o;switch(m.key){case"ArrowUp":h=Math.max(0,h-1);break;case"ArrowDown":h=Math.min(s-1,h+1);break;case"ArrowLeft":R=Math.max(0,R-1);break;case"ArrowRight":R=Math.min(r-1,R+1);break;case"Enter":kt(h,R);return;case"Delete":case"Backspace":c||(ne&&(ne.startRow!==ne.endRow||ne.startCol!==ne.endCol)?be(O=>{const H=O.map(($,P)=>P===j?{...$,data:{...$.data}}:$);for(let $=ne.startRow;$<=ne.endRow;$++)for(let P=ne.startCol;P<=ne.endCol;P++)delete H[j].data[De($,P)];return H}):It(h,R,""));return;default:if(m.key.length===1&&!m.ctrlKey&&!m.metaKey&&!c){oe({row:h,col:R}),Qe(m.key);return}return}m.preventDefault(),m.shiftKey&&b?S({row:h,col:R}):(ve({row:h,col:R}),S(null)),C?.(j,h,R)},[q,o,s,r,c,kt,It,j,C,Ge,wt,ne,be,b]),qe=A.frozenRows??0,_t=A.frozenCols??0,Ut=[{value:"text",label:w("spreadsheet.formatText","Text")},{value:"number",label:w("spreadsheet.formatNumber","Number")},{value:"percent",label:w("spreadsheet.formatPercent","Percent")},{value:"currency",label:w("spreadsheet.formatCurrency","Currency")},{value:"date",label:w("spreadsheet.formatDate","Date")}];return e.jsxs("div",{ref:te,id:we,className:`nice-spreadsheet ${c?"nice-spreadsheet--readonly":""} ${l??""}`,style:T,onKeyDown:st,onCopy:tt,onPaste:mt,tabIndex:0,role:"application","aria-label":w("spreadsheet.label","Spreadsheet"),...U,children:[d&&!c&&e.jsxs("div",{className:"nice-spreadsheet__toolbar",role:"toolbar",children:[e.jsx(Re.NiceButton,{variant:"ghost",size:"sm",onClick:Ge,disabled:Be.length===0,title:w("spreadsheet.undo","Undo"),children:"?"}),e.jsx(Re.NiceButton,{variant:"ghost",size:"sm",onClick:wt,disabled:Ke.length===0,title:w("spreadsheet.redo","Redo"),children:"?"}),e.jsx("span",{className:"nice-spreadsheet__separator"}),e.jsx(Re.NiceButton,{variant:A.data[o?De(o.row,o.col):""]?.bold?"primary":"ghost",size:"sm",onClick:()=>ge("bold",!A.data[o?De(o.row,o.col):""]?.bold),title:w("spreadsheet.bold","Bold"),children:e.jsx("strong",{children:"B"})}),e.jsx(Re.NiceButton,{variant:A.data[o?De(o.row,o.col):""]?.italic?"primary":"ghost",size:"sm",onClick:()=>ge("italic",!A.data[o?De(o.row,o.col):""]?.italic),title:w("spreadsheet.italic","Italic"),children:e.jsx("em",{children:"I"})}),e.jsx("span",{className:"nice-spreadsheet__separator"}),e.jsx(Re.NiceButton,{variant:"ghost",size:"sm",onClick:()=>ge("align","left"),title:w("spreadsheet.alignLeft","Align left"),children:"?"}),e.jsx(Re.NiceButton,{variant:"ghost",size:"sm",onClick:()=>ge("align","center"),title:w("spreadsheet.alignCenter","Center"),children:"?"}),e.jsx(Re.NiceButton,{variant:"ghost",size:"sm",onClick:()=>ge("align","right"),title:w("spreadsheet.alignRight","Align right"),children:"?"}),e.jsx("span",{className:"nice-spreadsheet__separator"}),e.jsx(Re.NiceColorPicker,{value:A.data[o?De(o.row,o.col):""]?.bgColor??"var(--bg-primary, #ffffff)",onChange:m=>ge("bgColor",m),title:w("spreadsheet.bgColor","Background color")}),e.jsx(Re.NiceColorPicker,{value:A.data[o?De(o.row,o.col):""]?.color??"var(--text-primary, #000000)",onChange:m=>ge("color",m),title:w("spreadsheet.textColor","Text color")}),e.jsx("span",{className:"nice-spreadsheet__separator"}),e.jsx(Re.NiceSelect,{size:"sm",value:A.data[o?De(o.row,o.col):""]?.format??"text",onChange:m=>ge("format",m),options:Ut,"aria-label":w("spreadsheet.format","Cell format")}),e.jsx("span",{className:"nice-spreadsheet__separator"}),e.jsx(Re.NiceButton,{variant:"ghost",size:"sm",onClick:()=>o&&je(o.row),title:w("spreadsheet.insertRow","Insert row"),children:"+?"}),e.jsx(Re.NiceButton,{variant:"ghost",size:"sm",onClick:()=>o&&Ve(o.col),title:w("spreadsheet.insertCol","Insert column"),children:"+?"}),e.jsx(Re.NiceButton,{variant:"ghost",size:"sm",onClick:()=>o&&Oe(o.row),title:w("spreadsheet.deleteRow","Delete row"),children:"-?"}),e.jsx(Re.NiceButton,{variant:"ghost",size:"sm",onClick:()=>o&&dt(o.col),title:w("spreadsheet.deleteCol","Delete column"),children:"-?"})]}),f&&e.jsxs("div",{className:"nice-spreadsheet__formula-bar",children:[e.jsxs("span",{className:"nice-spreadsheet__cell-label",children:[o?De(o.row,o.col):"",ne&&ne.startRow!==ne.endRow||ne&&ne.startCol!==ne.endCol?`:${De(ne.endRow,ne.endCol)}`:""]}),e.jsx(Re.NiceTextInput,{className:"nice-spreadsheet__formula-input",value:q?se:Qt,onChange:m=>{q?Qe(m):o&&(oe(o),Qe(m))},onKeyDown:Y,readOnly:c,"aria-label":w("spreadsheet.formulaBar","Formula bar")})]}),e.jsx("div",{className:"nice-spreadsheet__grid",ref:Te,children:e.jsxs("table",{role:"grid","aria-label":A.name,children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{className:"nice-spreadsheet__corner"}),Array.from({length:r},(m,h)=>e.jsxs("th",{className:`nice-spreadsheet__col-header ${h<_t?"nice-spreadsheet__col-header--frozen":""}`,style:{width:A.colWidths?.[h]??80,position:h<_t?"sticky":void 0,left:h<_t?h*80+40:void 0,zIndex:h<_t?3:void 0},children:[e.jsx("span",{children:ci(h)}),F&&e.jsx("span",{className:"nice-spreadsheet__sort-trigger",onClick:()=>at(h,A.sortColumn===h&&A.sortDirection==="asc"?"desc":"asc"),title:w("spreadsheet.sort","Sort"),children:(A.sortColumn===h&&A.sortDirection==="asc","?")}),!c&&e.jsx("span",{className:"nice-spreadsheet__col-resize",onMouseDown:R=>on(h,R)})]},h))]})}),e.jsx("tbody",{children:Array.from({length:s},(m,h)=>e.jsxs("tr",{className:h<qe?"nice-spreadsheet__row--frozen":"",style:h<qe?{position:"sticky",top:h*24,zIndex:2}:void 0,children:[e.jsx("td",{className:"nice-spreadsheet__row-header",children:h+1}),Array.from({length:r},(R,O)=>{const H=De(h,O),$=A.data[H];if($?.mergedInto)return null;const P=o?.row===h&&o?.col===O,re=Z(h,O),ae=q?.row===h&&q?.col===O,We=$?et(H,A.data,new Set):null,ke=St(h,O),Se=h<qe||O<_t;return e.jsxs("td",{className:`nice-spreadsheet__cell ${P?"nice-spreadsheet__cell--selected":""} ${re&&!P?"nice-spreadsheet__cell--in-range":""} ${$?.readOnly?"nice-spreadsheet__cell--readonly":""} ${Se?"nice-spreadsheet__cell--frozen":""}`,style:{textAlign:$?.align,fontWeight:$?.bold?"bold":void 0,fontStyle:$?.italic?"italic":void 0,backgroundColor:ke?.backgroundColor??$?.bgColor,color:ke?.color??$?.color,width:A.colWidths?.[O],height:A.rowHeights?.[h],position:Se?"sticky":void 0,left:O<_t?O*80+40:void 0,zIndex:Se?1:void 0,...ke},colSpan:$?.colSpan,rowSpan:$?.rowSpan,onMouseDown:Ye=>ot(h,O,Ye),onMouseEnter:()=>At(h,O),onDoubleClick:()=>kt(h,O),onContextMenu:Ye=>$e(Ye,h,O),role:"gridcell","aria-selected":P,title:$?.comment,children:[$?.comment&&e.jsx("span",{className:"nice-spreadsheet__comment-indicator"}),ae?e.jsx("input",{ref:Ue,className:"nice-spreadsheet__cell-editor",value:se,onChange:Ye=>Qe(Ye.target.value),onKeyDown:Y,onBlur:D}):Qn(We,$?.format)]},O)})]},h))})]})}),me&&!c&&o&&e.jsxs("div",{className:"nice-spreadsheet__context-menu",style:{position:"fixed",left:me.x,top:me.y,zIndex:1e3},children:[e.jsx(Re.NiceButton,{variant:"ghost",size:"sm",onClick:()=>{je(o.row),xe(null)},children:w("spreadsheet.insertRowAbove","Insert row above")}),e.jsx(Re.NiceButton,{variant:"ghost",size:"sm",onClick:()=>{je(o.row+1),xe(null)},children:w("spreadsheet.insertRowBelow","Insert row below")}),e.jsx(Re.NiceButton,{variant:"ghost",size:"sm",onClick:()=>{Ve(o.col),xe(null)},children:w("spreadsheet.insertColLeft","Insert column left")}),e.jsx(Re.NiceButton,{variant:"ghost",size:"sm",onClick:()=>{Ve(o.col+1),xe(null)},children:w("spreadsheet.insertColRight","Insert column right")}),e.jsx("hr",{className:"nice-spreadsheet__context-sep"}),e.jsx(Re.NiceButton,{variant:"ghost",size:"sm",onClick:()=>{Oe(o.row),xe(null)},children:w("spreadsheet.deleteRow","Delete row")}),e.jsx(Re.NiceButton,{variant:"ghost",size:"sm",onClick:()=>{dt(o.col),xe(null)},children:w("spreadsheet.deleteCol","Delete column")})]}),ut&&e.jsxs("div",{className:"nice-spreadsheet__status-bar",children:[e.jsxs("span",{children:[w("spreadsheet.count","Count"),": ",ut.count]}),ut.sum!==void 0&&e.jsxs("span",{children:[w("spreadsheet.sum","Sum"),": ",ut.sum.toFixed(2)]}),ut.avg!==void 0&&e.jsxs("span",{children:[w("spreadsheet.avg","Avg"),": ",ut.avg.toFixed(2)]}),ut.min!==void 0&&e.jsxs("span",{children:[w("spreadsheet.min","Min"),": ",ut.min]}),ut.max!==void 0&&e.jsxs("span",{children:[w("spreadsheet.max","Max"),": ",ut.max]})]}),x&&e.jsxs("div",{className:"nice-spreadsheet__tabs",role:"tablist",children:[J.map((m,h)=>e.jsx("span",{className:"nice-spreadsheet__tab-wrapper",children:v===h?e.jsx(Re.NiceTextInput,{className:"nice-spreadsheet__tab-rename",value:K,onChange:R=>lt(R),onBlur:()=>Xt(h,K),onKeyDown:R=>{R.key==="Enter"&&Xt(h,K),R.key==="Escape"&&de(null)},autoFocus:!0}):e.jsx("span",{onDoubleClick:()=>{c||(de(h),lt(m.name))},children:e.jsx(Re.NiceButton,{variant:h===j?"primary":"ghost",size:"sm",onClick:()=>pt(h),children:m.name})})},h)),!c&&e.jsxs(e.Fragment,{children:[e.jsx(Re.NiceButton,{variant:"ghost",size:"sm",onClick:Zt,title:w("spreadsheet.addSheet","Add sheet"),children:"+"}),J.length>1&&e.jsx(Re.NiceButton,{variant:"ghost",size:"sm",onClick:en,title:w("spreadsheet.removeSheet","Remove sheet"),children:"�"})]})]})]})});li.displayName="NiceSpreadsheet";const pa=({queries:n,currentFilter:a,currentColumns:s,currentSort:r,onLoad:d,onSave:f,onUpdate:x,onDelete:c,onShare:g,onSetDefault:k,allowSharing:C=!0,allowPinning:W=!0,position:I="dropdown",className:Q,style:ee,"data-testid":E})=>{const[F,_]=t.useState(!1),[b,l]=t.useState(""),[T,L]=t.useState(!1),[U,te]=t.useState(""),[we,w]=t.useState(""),[ce,fe]=t.useState(!1),pe=n.filter(o=>o.name.toLowerCase().includes(b.toLowerCase())),V=pe.filter(o=>!o.isShared),J=pe.filter(o=>o.isShared),j=async()=>{if(U.trim()){L(!0);try{await f({name:U,description:we||void 0,filter:a??{},columns:s,sort:r}),fe(!1),te(""),w("")}finally{L(!1)}}},A=o=>e.jsxs("div",{className:"nice-saved-query__item",children:[o.icon&&e.jsx("span",{className:"nice-saved-query__icon","aria-hidden":"true",children:o.icon}),e.jsx("span",{className:"nice-saved-query__name",children:o.name}),o.isDefault&&e.jsx("span",{className:"nice-saved-query__badge nice-saved-query__badge--default",children:"domyślne"}),o.isShared&&e.jsx("span",{className:"nice-saved-query__badge nice-saved-query__badge--shared",children:"udostępnione"}),o.isPinned&&e.jsx("span",{className:"nice-saved-query__badge nice-saved-query__badge--pinned",children:"przypięte"}),e.jsxs("div",{className:"nice-saved-query__actions",children:[e.jsx("button",{onClick:()=>{d(o),_(!1)},type:"button",children:"Wczytaj"}),k&&e.jsx("button",{onClick:()=>k(o.id),type:"button",title:"Ustaw domyślne",children:"★"}),C&&g&&e.jsx("button",{onClick:()=>g(o.id,[]),type:"button",title:"Udostępnij",children:"↗"}),W&&e.jsx("button",{onClick:()=>x(o.id,{...o}),type:"button",title:"Przypnij",children:"📌"}),e.jsx("button",{onClick:()=>c(o.id),type:"button",title:"Usuń","aria-label":`Usuń zapytanie ${o.name}`,children:"✕"})]})]},o.id);return e.jsxs("div",{className:`nice-saved-query nice-saved-query--${I} ${F?"nice-saved-query--open":""} ${Q??""}`,style:ee,"data-testid":E,children:[e.jsx("button",{className:"nice-saved-query__trigger",onClick:()=>_(o=>!o),"aria-expanded":F,"aria-haspopup":"listbox",type:"button",children:"Widoki i zapytania"}),F&&e.jsxs("div",{className:"nice-saved-query__panel",role:"dialog","aria-label":"Zarządzanie zapytaniami",children:[e.jsxs("div",{className:"nice-saved-query__search-row",children:[e.jsx("input",{type:"search",placeholder:"Szukaj zapytania…",value:b,onChange:o=>l(o.target.value),"aria-label":"Szukaj zapytania"}),e.jsx("button",{onClick:()=>fe(o=>!o),type:"button",children:"+ Zapisz bieżący widok"})]}),ce&&e.jsxs("div",{className:"nice-saved-query__save-form",children:[e.jsx("input",{type:"text",placeholder:"Nazwa zapytania",value:U,onChange:o=>te(o.target.value),"aria-label":"Nazwa zapytania"}),e.jsx("input",{type:"text",placeholder:"Opis (opcjonalnie)",value:we,onChange:o=>w(o.target.value),"aria-label":"Opis zapytania"}),e.jsx("button",{onClick:j,disabled:T||!U.trim(),type:"button",children:T?"Zapisywanie…":"Zapisz"}),e.jsx("button",{onClick:()=>fe(!1),type:"button",children:"Anuluj"})]}),V.length>0&&e.jsxs("section",{className:"nice-saved-query__group","aria-labelledby":"nice-saved-query-mine",children:[e.jsx("h3",{id:"nice-saved-query-mine",className:"nice-saved-query__group-title",children:"Moje"}),V.map(A)]}),J.length>0&&e.jsxs("section",{className:"nice-saved-query__group","aria-labelledby":"nice-saved-query-shared",children:[e.jsx("h3",{id:"nice-saved-query-shared",className:"nice-saved-query__group-title",children:"Udostępnione"}),J.map(A)]}),pe.length===0&&e.jsx("p",{className:"nice-saved-query__empty",children:"Brak zapisanych zapytań"})]})]})};exports.NiceCardView=zi;exports.NiceDataGrid=Nn;exports.NiceDataGrid$1=Si;exports.NiceDataGridAI=Ii;exports.NiceKanbanBoard=ai;exports.NiceList=Ai;exports.NiceModuleGrid=ta;exports.NicePivotGrid=ii;exports.NicePivotGrid$1=Pi;exports.NicePivotGridFieldChooser=ni;exports.NiceReconciliationView=ca;exports.NiceSavedQueryPanel=pa;exports.NiceSpreadsheet=li;exports.NiceTable=wi;exports.NiceTileView=Ti;exports.NiceTreeGrid=ma;exports.NiceTreeList=$i;exports.NiceTreeView=Ei;exports.computeAggregate=ei;exports.escapeCsvField=cn;