@nice2dev/ui 1.0.18 → 1.0.20

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 (101) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/dist/NiceErrorBoundary-Bzx-bOeb.cjs +1 -0
  3. package/dist/NiceErrorBoundary-DBCCmeyl.js +770 -0
  4. package/dist/NiceErrorBoundary-DvA00DOz.cjs +1 -0
  5. package/dist/NiceErrorBoundary-V6wkSSLP.cjs +1 -0
  6. package/dist/NiceErrorBoundary-eTwBEuSH.js +770 -0
  7. package/dist/NiceErrorBoundary-qp4IJ18o.js +770 -0
  8. package/dist/NiceForm-B1Okz7SW.cjs +382 -0
  9. package/dist/NiceForm-BXHPoTcH.cjs +382 -0
  10. package/dist/NiceForm-DL7Kxsi2.js +5383 -0
  11. package/dist/NiceForm-DLADlHAQ.js +5383 -0
  12. package/dist/NiceForm-DUkduLqG.cjs +382 -0
  13. package/dist/NiceForm-D_XZxq3a.js +5383 -0
  14. package/dist/NiceForm.css +1 -1
  15. package/dist/NiceModal-0Sg2HxIb.cjs +1 -0
  16. package/dist/NiceModal-BRih_XEH.js +95 -0
  17. package/dist/NiceModal-C4HIsjrn.js +95 -0
  18. package/dist/NiceModal-CUdeVj-j.js +95 -0
  19. package/dist/NiceModal-Cc8R-DpX.cjs +1 -0
  20. package/dist/NiceModal-DieswZtd.cjs +1 -0
  21. package/dist/NiceModuleLifecyclePanel-4UEsYB5r.js +6553 -0
  22. package/dist/NiceModuleLifecyclePanel-C6agdtTI.cjs +1 -0
  23. package/dist/NiceModuleLifecyclePanel-CEfeJxw_.cjs +1 -0
  24. package/dist/NiceModuleLifecyclePanel-D4xWUswk.js +6777 -0
  25. package/dist/NiceModuleLifecyclePanel-jDzEfvDM.js +6553 -0
  26. package/dist/NiceModuleLifecyclePanel-sBJLlhJp.cjs +1 -0
  27. package/dist/NiceModuleLifecyclePanel.css +1 -1
  28. package/dist/NicePagination-B2TC6MTL.cjs +1 -0
  29. package/dist/NicePagination-BAywVGwT.js +171 -0
  30. package/dist/NicePagination-Cqr3Pe_F.js +171 -0
  31. package/dist/NicePagination-DnnypBiE.js +171 -0
  32. package/dist/NicePagination-DyWWdtb3.cjs +1 -0
  33. package/dist/NicePagination-F8NyMfgc.cjs +1 -0
  34. package/dist/NicePinCodeInput-Bo8Ahkae.js +12240 -0
  35. package/dist/NicePinCodeInput-C6zJxUVf.cjs +419 -0
  36. package/dist/NicePinCodeInput-CpPtHZsK.js +12240 -0
  37. package/dist/NicePinCodeInput-Cpa01Yfg.cjs +419 -0
  38. package/dist/NicePinCodeInput-JvYd_LB_.cjs +419 -0
  39. package/dist/NicePinCodeInput-ltwzQf4r.js +12240 -0
  40. package/dist/NicePinCodeInput.css +1 -1
  41. package/dist/NiceSavedQueryPanel-BIXW0y1X.js +6455 -0
  42. package/dist/NiceSavedQueryPanel-BOBULytX.js +6455 -0
  43. package/dist/NiceSavedQueryPanel-CFHwMDIx.cjs +596 -0
  44. package/dist/NiceSavedQueryPanel-CTfC-qwV.cjs +596 -0
  45. package/dist/NiceSavedQueryPanel-DuonbEem.js +6584 -0
  46. package/dist/NiceSavedQueryPanel-MdKdGYNg.cjs +596 -0
  47. package/dist/NiceSavedQueryPanel.css +1 -1
  48. package/dist/NiceTabs-B9zxj6qd.js +1657 -0
  49. package/dist/NiceTabs-BjBtazRn.cjs +1 -0
  50. package/dist/NiceTabs-C-VQXNIa.cjs +1 -0
  51. package/dist/NiceTabs-CJ8G2t0-.js +1657 -0
  52. package/dist/NiceTabs-CNauJ4fu.cjs +1 -0
  53. package/dist/NiceTabs-v7HfeXIw.js +1657 -0
  54. package/dist/NiceWindow-BMiF-so6.cjs +1 -0
  55. package/dist/NiceWindow-Bo_yCa1o.js +1418 -0
  56. package/dist/NiceWindow-CysIgnn3.js +1418 -0
  57. package/dist/NiceWindow-D6SjpDc4.cjs +1 -0
  58. package/dist/NiceWindow-DPzJxOfx.cjs +1 -0
  59. package/dist/NiceWindow-DUTRQOaP.js +1418 -0
  60. package/dist/charts-C60va95_.js +4657 -0
  61. package/dist/charts-CJlMAHJG.cjs +761 -0
  62. package/dist/charts-CX4jiyVh.cjs +761 -0
  63. package/dist/charts-CYpqDxHd.js +4657 -0
  64. package/dist/charts-D_I1iwel.cjs +761 -0
  65. package/dist/charts-P6qura0j.js +4657 -0
  66. package/dist/charts.cjs +1 -1
  67. package/dist/charts.css +1 -1
  68. package/dist/charts.mjs +1 -1
  69. package/dist/core-Bcc4sz15.cjs +96 -0
  70. package/dist/core-BfeyB9A8.cjs +96 -0
  71. package/dist/core-BgGSTko-.js +22401 -0
  72. package/dist/core-DDJKu5LZ.cjs +96 -0
  73. package/dist/core-Da1dGJN3.js +22401 -0
  74. package/dist/core-XsWxyBHD.js +22767 -0
  75. package/dist/data.cjs +1 -1
  76. package/dist/data.d.ts +5 -0
  77. package/dist/data.mjs +1 -1
  78. package/dist/editors.cjs +1 -1
  79. package/dist/editors.d.ts +44 -1
  80. package/dist/editors.mjs +3 -3
  81. package/dist/feedback.cjs +1 -1
  82. package/dist/feedback.mjs +2 -2
  83. package/dist/index-CQIDqjZp.cjs +5194 -0
  84. package/dist/index-CXVXf_HY.cjs +5194 -0
  85. package/dist/index-CtikFbFa.js +64337 -0
  86. package/dist/index-DCDfWfAt.js +64336 -0
  87. package/dist/index-DpiCo0_e.cjs +5194 -0
  88. package/dist/index-xVJiF843.js +65040 -0
  89. package/dist/index.cjs +1 -1
  90. package/dist/index.css +1 -1
  91. package/dist/index.d.ts +450 -6
  92. package/dist/index.mjs +874 -860
  93. package/dist/lazy.cjs +1 -1
  94. package/dist/lazy.mjs +3 -3
  95. package/dist/navigation.cjs +1 -1
  96. package/dist/navigation.d.ts +50 -3
  97. package/dist/navigation.mjs +30 -30
  98. package/dist/overlays.cjs +1 -1
  99. package/dist/overlays.mjs +53 -53
  100. package/dist/style.css +6 -6
  101. package/package.json +3 -3
@@ -0,0 +1,596 @@
1
+ "use strict";const e=require("react/jsx-runtime"),Re=require("./core-Bcc4sz15.cjs"),t=require("react"),Yn=require("./NiceForm-DUkduLqG.cjs"),Jn=require("./NiceModal-Cc8R-DpX.cjs"),Ni=require("./NicePagination-DyWWdtb3.cjs"),Te=require("./NiceTabs-CNauJ4fu.cjs");function wi({columns:n,data:a,striped:s,compact:r,emptyText:o,className:p,style:x,accessMode:l,id:f,displayStyle:S}){const V=Re.Zs(l,f)==="hidden",R=Re.vs("table",S),ae=Re.Ss("table",S),[q,P]=t.useState(null),z=t.useMemo(()=>q?[...a].sort((g,_)=>{const y=g[q.field]??"",L=_[q.field]??"",$=typeof y=="number"?y-L:String(y).localeCompare(String(L));return q.dir==="desc"?-$:$}):a,[a,q]),N=g=>{P(_=>_?.field===g?_.dir==="asc"?{field:g,dir:"desc"}:null:{field:g,dir:"asc"})};return V?null:e.jsx("div",{className:`nice-table-wrapper ${p||""}`,style:{...R,...x},children:e.jsxs("table",{className:`nice-table nice-table--ds-${ae} ${s?"nice-table--striped":""} ${r?"nice-table--compact":""}`,"aria-rowcount":z.length,"aria-colcount":n.length,children:[e.jsx("thead",{children:e.jsx("tr",{children:n.map(g=>{const _=g.sortable?q?.field===g.field?q.dir==="asc"?"ascending":"descending":"none":void 0;return e.jsxs("th",{style:{width:g.width,textAlign:g.align},className:g.sortable?"th--sortable":void 0,onClick:()=>g.sortable&&N(g.field),scope:"col","aria-sort":_,children:[g.header,g.sortable&&q?.field===g.field&&e.jsx("span",{className:"nice-table__sort-icon","aria-hidden":"true",children:q.dir==="asc"?"↑":"↓"})]},g.field)})})}),e.jsx("tbody",{children:z.length===0?e.jsx("tr",{children:e.jsx("td",{colSpan:n.length,className:"nice-table__empty",children:o||"No data"})}):z.map((g,_)=>e.jsx("tr",{children:n.map(y=>e.jsx("td",{style:{textAlign:y.align},children:y.render?y.render(g[y.field],g):String(g[y.field]??"")},y.field))},_))})]})})}function ei(n,a,s){const r=n.map(o=>o[a]).filter(o=>typeof o=="number");if(r.length===0)return s==="count"?"0":"";switch(s){case"sum":return r.reduce((o,p)=>o+p,0).toLocaleString();case"avg":return(r.reduce((o,p)=>o+p,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 ln(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 yn({columns:n,data:a,keyField:s="id",dataSource:r,sortable:o=!0,sortField:p,sortDirection:x,onSort:l,selectable:f,selectedKeys:S,onSelectionChange:D,pagination:V,pageSize:R=10,page:ae,onPageChange:q,totalRows:P,searchable:z,searchPlaceholder:N,virtualScroll:g,rowHeight:_=40,groupBy:y,groupRender:L,onCellEdit:$,editMode:re="inline",formItems:ye,formColumns:T=2,editFormTitle:X,formProps:ce,onRowEdit:de,onRowAdd:ke,onRowDelete:U,bulkActions:M,onBulkDelete:w,exportCsv:c,exportFilename:xe="export",detailRow:je,expandedRowKeys:se,onExpandedRowChange:j,columnReorder:ne,onColumnReorder:O,columnResize:he,rowDraggable:J,onRowReorder:Ae,striped:Xe,compact:at,loading:Ee,emptyText:We,toolbar:Ve,onRowClick:Be,pinnedTopKeys:Z,pinnedBottomKeys:Se,colSpan:He,showStatusBar:Ne,contextMenuItems:k,onContextMenuAction:Q,printFriendly:F,keyboardNavigation:G,focusedCell:be,onFocusedCellChange:H,cellRangeSelection:Ce,selectedCellRange:Me,onCellRangeChange:ue,clipboard:Le,clipboardFormat:st="text",onBeforeCopy:ut,onCopy:we,onPaste:Tt,quickFilters:mt,activeQuickFilters:kt,onQuickFilterChange:Nt,columnGroups:I,stateStorageKey:Y,initialState:pe,onStateChange:nt,flashRowKeys:gt,flashDuration:De=500,autoFitColumns:Ke,showColumnStats:Ge,rowIndicator:ht,frozenRows:rt,className:wt,style:Gt,accessMode:Jt,id:Zt,displayStyle:qt}){const pt=Re.Zs(Jt,Zt),dn=pt==="hidden",en=pt==="readOnly"||pt==="disabled",{t:Pe}=Re.$o();Re.vs("table",qt),Re.Ss("table",qt);const Qe=Re.ad(r??null,{autoLoad:!!r,defaultPageSize:R}),Fe=!!r,Vt=Fe?Qe.data:a??[],d=Fe?Qe.loading:Ee,[m,A]=t.useState({field:"",dir:null}),[K,ee]=t.useState(1),[E,B]=t.useState(new Set),[ie,oe]=t.useState(""),[$e,Oe]=t.useState(R),[_e,Ye]=t.useState(null),[St,Ct]=t.useState(null),[Je,_t]=t.useState(null),[Mt,Ot]=t.useState(new Set),[Lt,Dt]=t.useState(0),tn=t.useRef(null),[Pt,It]=t.useState(new Set),Et=se??Pt,[ot,un]=t.useState({}),[Rt,Ut]=t.useState(null),[Wt,nn]=t.useState(null),[jn,an]=t.useState(null),[Ft,mn]=t.useState(null),[Nn,wn]=t.useState([]),[An,hn]=t.useState(null),[kn,pn]=t.useState(new Set),[En,$n]=t.useState(null),sn=t.useRef(null),ct=be??jn,ft=Me??Ft,xt=kt??Nn;t.useEffect(()=>{if(!Y)return;const i=localStorage.getItem(`nice-datagrid-${Y}`);if(i&&!pe)try{const u=JSON.parse(i);u.columnWidths&&un(u.columnWidths),u.expandedGroups&&Ot(new Set(u.expandedGroups))}catch{}},[Y,pe]),t.useEffect(()=>{if(!gt?.size)return;pn(new Set(gt));const i=setTimeout(()=>pn(new Set),De);return()=>clearTimeout(i)},[gt,De]),t.useEffect(()=>{if(!Wt)return;const i=()=>nn(null);return document.addEventListener("click",i),()=>document.removeEventListener("click",i)},[Wt]);const Sn=t.useCallback((i,u)=>{k?.length&&(i.preventDefault(),nn({x:i.clientX,y:i.clientY,row:u}))},[k]),v=t.useCallback(i=>{const u=new Set(Et);u.has(i)?u.delete(i):u.add(i),j?j(u):It(u)},[Et,j]),me=t.useCallback((i,u)=>{if(!he)return;u.preventDefault();const h=u.clientX,C=u.target.closest("th")?.offsetWidth??100,te=W=>{const ve=Math.max(40,C+W.clientX-h);un(Ze=>({...Ze,[i]:ve}))},le=()=>{document.removeEventListener("mousemove",te),document.removeEventListener("mouseup",le)};document.addEventListener("mousemove",te),document.addEventListener("mouseup",le)},[he]),fe=Fe?Qe.sort[0]?.field??"":p??m.field,ge=Fe?Qe.sort[0]?.direction??null:x??m.dir,lt=Fe?Qe.page:ae??K,ze=S??E;t.useCallback(()=>{if(!Y)return;const i={columnWidths:ot,sortField:fe||void 0,sortDirection:ge,pageSize:$e,expandedGroups:Array.from(Mt)};localStorage.setItem(`nice-datagrid-${Y}`,JSON.stringify(i)),nt?.(i)},[Y,ot,fe,ge,$e,Mt,nt]);const qe=t.useMemo(()=>n.filter(i=>!i.hidden),[n]),dt=t.useMemo(()=>qe.filter(i=>i.pinned==="left"),[qe]),rn=t.useMemo(()=>qe.filter(i=>i.pinned==="right"),[qe]),zn=t.useMemo(()=>qe.filter(i=>!i.pinned),[qe]),Ue=t.useMemo(()=>[...dt,...zn,...rn],[dt,zn,rn]),oi=t.useMemo(()=>qe.some(i=>i.aggregate),[qe]),cn=dt.length>0||rn.length>0,Tn=t.useCallback(i=>{const u=fe===i?ge==="asc"?"desc":ge==="desc"?null:"asc":"asc";Fe?u?Qe.setSortField(i,u):Qe.setSort([]):l?l(i,u):A({field:i,dir:u})},[fe,ge,Fe,Qe,l]),bt=t.useMemo(()=>{if(Fe)return Vt;let i=[...Vt];if(ie){const u=ie.toLowerCase();i=i.filter(h=>qe.some(b=>String(h[b.field]??"").toLowerCase().includes(u)))}return!l&&fe&&ge&&i.sort((u,h)=>{const b=u[fe]??"",C=h[fe]??"",te=typeof b=="number"?b-C:String(b).localeCompare(String(C));return ge==="desc"?-te:te}),i},[Vt,ie,qe,fe,ge,l,Fe]),fn=Fe?Qe.totalCount:P??bt.length,Xt=Fe?Qe.pageSize:$e,di=Math.max(1,Math.ceil(fn/Xt)),At=Fe?bt:V&&!P?bt.slice((lt-1)*Xt,lt*Xt):bt,Cn=t.useCallback(i=>{Fe?Qe.setPage(i):q?q(i):ee(i)},[Fe,Qe,q]),Ht=t.useMemo(()=>At.map(i=>String(i[s])),[At,s]),Qt=Ht.length>0&&Ht.every(i=>ze.has(i)),Ln=Ht.some(i=>ze.has(i)),Pn=t.useCallback(()=>{const i=new Set(ze);Qt?Ht.forEach(u=>i.delete(u)):Ht.forEach(u=>i.add(u)),D?D(i):B(i)},[Qt,Ht,ze,D]),Fn=t.useCallback(i=>{const u=new Set(ze);u.has(i)?u.delete(i):u.add(i),D?D(u):B(u)},[ze,D]),On=({field:i})=>fe!==i||!ge?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(!y)return At.map((h,b)=>({type:"data",row:h,key:String(h[s]??b)}));const i=new Map;At.forEach(h=>{const b=h[y];i.has(b)||i.set(b,[]),i.get(b).push(h)});const u=[];return i.forEach((h,b)=>{const C=`__group_${String(b)}`,te=Mt.has(C);u.push({type:"group",value:b,rows:h,expanded:te,key:C}),te&&h.forEach((le,W)=>u.push({type:"data",row:le,key:String(le[s]??`${C}_${W}`)}))}),u},[At,y,s,Mt]),{pinnedTopRows:ui,pinnedBottomRows:mi,normalRows:hi}=t.useMemo(()=>{if(!Z?.size&&!Se?.size)return{pinnedTopRows:[],pinnedBottomRows:[],normalRows:vt};const i=[],u=[],h=[];for(const b of vt){if(b.type==="data"){const C=b.key;if(Z?.has(C)){i.push(b);continue}if(Se?.has(C)){u.push(b);continue}}h.push(b)}return{pinnedTopRows:i,pinnedBottomRows:u,normalRows:h}},[vt,Z,Se]),Un=t.useCallback(i=>{Ot(u=>{const h=new Set(u);return h.has(i)?h.delete(i):h.add(i),h})},[]),pi=t.useMemo(()=>{if(!g)return vt;const i=tn.current?.clientHeight??400,u=Math.ceil(i/_),h=Math.max(0,Math.floor(Lt/_)-3),b=Math.min(vt.length-1,h+u+6);return vt.slice(h,b+1).map((C,te)=>({...C,_vIdx:h+te}))},[g,vt,Lt,_]),gn=t.useCallback((i,u,h)=>{!$||en||(Ye({rowKey:i,field:u}),Ct(h))},[$]),Wn=t.useCallback(()=>{_e&&$&&$(_e.rowKey,_e.field,St),Ye(null),Ct(null)},[_e,St,$]),fi=t.useCallback(()=>{Ye(null),Ct(null)},[]),gi=t.useCallback(()=>{const i=qe,u=i.map(W=>ln(W.header)).join(","),h=bt.map(W=>i.map(ve=>ln(String(W[ve.field]??""))).join(",")),b=[u,...h].join(`
3
+ `),C=new Blob(["\uFEFF"+b],{type:"text/csv;charset=utf-8;"}),te=URL.createObjectURL(C),le=document.createElement("a");le.href=te,le.download=`${xe}.csv`,le.click(),URL.revokeObjectURL(te)},[qe,bt,xe]),_n=t.useCallback(i=>{H?H(i):an(i)},[H]),xn=t.useCallback(i=>{ue?ue(i):mn(i)},[ue]),yt=t.useMemo(()=>vt.filter(i=>i.type==="data").map(i=>i.key),[vt]),_i=t.useCallback(i=>{if(!G||_e||!ct)return;const u=yt.indexOf(ct.rowKey),h=Ue.findIndex(le=>le.field===ct.field);if(u<0||h<0)return;let b=u,C=h;switch(i.key){case"ArrowUp":b=Math.max(0,u-1);break;case"ArrowDown":b=Math.min(yt.length-1,u+1);break;case"ArrowLeft":C=Math.max(0,h-1);break;case"ArrowRight":C=Math.min(Ue.length-1,h+1);break;case"Tab":i.preventDefault(),i.shiftKey?C=Math.max(0,h-1):C=Math.min(Ue.length-1,h+1);break;case"Enter":{const le=Ue[h];if(le.editable&&$){const W=At.find(ve=>String(ve[s])===ct.rowKey);W&&gn(ct.rowKey,le.field,W[le.field])}return}case"Escape":_n(null),xn(null);return;case"Home":i.ctrlKey&&(b=0),C=0;break;case"End":i.ctrlKey&&(b=yt.length-1),C=Ue.length-1;break;case"PageUp":b=Math.max(0,u-$e);break;case"PageDown":b=Math.min(yt.length-1,u+$e);break;default:return}i.preventDefault();const te={rowKey:yt[b],field:Ue[C].field};if(_n(te),i.shiftKey&&Ce){const le=ft?.start??ct;xn({start:le,end:te})}else xn(null)},[G,_e,ct,yt,Ue,Ce,ft,_n,xn,$,At,s,gn,$e]),Bn=t.useCallback(()=>{let i=[],u=[];if(ft){const h=yt.indexOf(ft.start.rowKey),b=yt.indexOf(ft.end.rowKey),C=Math.min(h,b),te=Math.max(h,b),le=Ue.findIndex(et=>et.field===ft.start.field),W=Ue.findIndex(et=>et.field===ft.end.field),ve=Math.min(le,W),Ze=Math.max(le,W);u=Ue.slice(ve,Ze+1).map(et=>et.field),i=At.filter(et=>{const Bt=yt.indexOf(String(et[s]));return Bt>=C&&Bt<=te})}else ze.size>0&&(i=At.filter(h=>ze.has(String(h[s]))),u=Ue.map(h=>h.field));return{rows:i,fields:u}},[ft,yt,Ue,At,s,ze]),Gn=t.useCallback((i,u,h)=>{const b=Ue.filter(C=>u.includes(C.field));switch(h){case"json":return JSON.stringify(i.map(C=>Object.fromEntries(u.map(te=>[te,C[te]]))),null,2);case"csv":{const C=b.map(le=>ln(le.header)).join(","),te=i.map(le=>b.map(W=>ln(String(le[W.field]??""))).join(",")).join(`
4
+ `);return C+`
5
+ `+te}case"html":{const C=b.map(le=>`<th>${le.header}</th>`).join(""),te=i.map(le=>`<tr>${b.map(W=>`<td>${le[W.field]??""}</td>`).join("")}</tr>`).join("");return`<table><thead><tr>${C}</tr></thead><tbody>${te}</tbody></table>`}case"markdown":{const C="| "+b.map(W=>W.header).join(" | ")+" |",te="| "+b.map(()=>"---").join(" | ")+" |",le=i.map(W=>"| "+b.map(ve=>W[ve.field]??"").join(" | ")+" |").join(`
6
+ `);return C+`
7
+ `+te+`
8
+ `+le}default:return i.map(C=>b.map(te=>C[te.field]??"").join(" ")).join(`
9
+ `)}},[Ue]),Mn=t.useCallback(async()=>{if(!Le)return;const{rows:i,fields:u}=Bn();if(!i.length||ut?.(i,u)===!1)return;const h=Gn(i,u,st);await navigator.clipboard.writeText(h),we?.(i,u,st)},[Le,Bn,ut,Gn,st,we]),Vn=t.useCallback(async()=>{if(!Le||!ct||!Tt)return;const u=(await navigator.clipboard.readText()).split(`
10
+ `).map(h=>h.split(" "));Tt(u,ct)},[Le,ct,Tt]);t.useEffect(()=>{if(!Le||!sn.current)return;const i=u=>{sn.current?.contains(document.activeElement)&&(u.type==="copy"&&(u.preventDefault(),Mn()),u.type==="paste"&&(u.preventDefault(),Vn()))};return document.addEventListener("copy",i),document.addEventListener("paste",i),()=>{document.removeEventListener("copy",i),document.removeEventListener("paste",i)}},[Le,Mn,Vn]);const xi=t.useCallback(i=>{const u=xt.includes(i)?xt.filter(h=>h!==i):[...xt,i];Nt?Nt(u):wn(u)},[xt,Nt]),bi=t.useMemo(()=>{if(!mt?.length||!xt.length)return bt;const i=mt.filter(u=>xt.includes(u.key));return bt.filter(u=>i.every(h=>h.filter(u)))},[bt,mt,xt]),Kn=mt?.length?bi:bt;t.useCallback(i=>{const u=bt.map(ve=>ve[i]).filter(ve=>ve!=null),h=u.filter(ve=>typeof ve=="number");if(h.length===0){const ve=new Set(u).size;return{count:u.length,unique:ve,type:"text"}}const b=h.reduce((ve,Ze)=>ve+Ze,0),C=b/h.length,te=Math.min(...h),le=Math.max(...h),W=Math.sqrt(h.reduce((ve,Ze)=>ve+(Ze-C)**2,0)/h.length);return{count:h.length,sum:b,avg:C,min:te,max:le,stdDev:W,type:"numeric"}},[bt]);const vi=t.useCallback((i,u,h)=>{if(!i.cellVisualization)return null;const b=Number(u);if(isNaN(b))return null;const C=i.visualMin??0,te=i.visualMax??100,le=Math.max(0,Math.min(100,(b-C)/(te-C)*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:`${le}%`,height:"100%",background:le>80?"var(--color-success)":le>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(le),"%"]})]});case"rating":{const W=Math.round(b/te*5);return e.jsx("div",{className:"nice-datagrid__cell-rating",children:[1,2,3,4,5].map(ve=>e.jsx("span",{style:{color:ve<=W?"var(--color-warning)":"var(--text-muted)",fontSize:"0.85rem"},children:"?"},ve))})}case"trend":{const W=i.visualMin??b,ve=b-W,Ze=(ve>0||ve<0,"?"),et=ve>0?"var(--color-success)":ve<0?"var(--color-danger)":"var(--text-muted)";return e.jsxs("span",{style:{color:et,fontWeight:500},children:[Ze," ",Math.abs(ve).toFixed(1),"%"]})}case"heatmap":{const W=le/100,ve=`rgba(${Math.round(255*W)}, ${Math.round(100*(1-W))}, ${Math.round(50*(1-W))}, 0.6)`;return e.jsx("span",{style:{background:ve,padding:"2px 8px",borderRadius:4},children:b})}default:return null}},[]),yi=t.useCallback((i,u,h)=>{if(!i.conditionalFormats?.length)return{};for(const b of i.conditionalFormats)if(b.when(u,h,i.field))return{className:b.className,style:{...b.style,backgroundColor:b.backgroundColor,color:b.color}};return{}},[]),Dn=t.useCallback((i,u)=>{if(!cn||!i.pinned)return{};const h={position:"sticky",zIndex:2,background:"var(--bg-primary, #fff)"};if(i.pinned==="left"){let b=0;for(let C=0;C<u;C++){const te=Ue[C];te.pinned==="left"&&(b+=typeof te.width=="number"?te.width:parseInt(String(te.width)||"100",10))}f&&u===0&&(b=36),h.left=b}else{let b=0;for(let C=Ue.length-1;C>u;C--){const te=Ue[C];te.pinned==="right"&&(b+=typeof te.width=="number"?te.width:parseInt(String(te.width)||"100",10))}h.right=b}return h},[cn,Ue,f]),Zn=(i,u,h,b)=>{if(_e?.rowKey===h&&_e?.field===i.field)return i.editor?i.editor(St,u,W=>Ct(W)):e.jsx("input",{className:"nice-datagrid__edit-input",autoFocus:!0,value:St??"",onChange:W=>Ct(W.target.value),onBlur:Wn,onKeyDown:W=>{W.key==="Enter"&&Wn(),W.key==="Escape"&&fi()}});const te=vi(i,u[i.field],u);return te||(i.render?i.render(u[i.field],u,b):ki(u[i.field]))},ji=(i,u,h,b)=>{const C=ct?.rowKey===h&&ct?.field===i.field,te=ft&&(()=>{const ve=yt.indexOf(ft.start.rowKey),Ze=yt.indexOf(ft.end.rowKey),et=yt.indexOf(h),Bt=Ue.findIndex(Yt=>Yt.field===ft.start.field),Kt=Ue.findIndex(Yt=>Yt.field===ft.end.field);return et>=Math.min(ve,Ze)&&et<=Math.max(ve,Ze)&&b>=Math.min(Bt,Kt)&&b<=Math.max(Bt,Kt)})(),le=yi(i,u[i.field],u);return{className:[le.className,C&&"nice-datagrid__cell--focused",te&&"nice-datagrid__cell--in-range"].filter(Boolean).join(" "),style:{...Dn(i,b),textAlign:i.align,...le.style,...C?{outline:"2px solid var(--color-primary)",outlineOffset:-2}:{},...te?{background:"var(--color-primary-light, rgba(59,130,246,0.15))"}:{}}}},bn=Ue.length+(f?1:0)+(je?1:0)+(J?1:0)+(ht?1:0),In=(i,u,h)=>{const{row:b,key:C}=i,te=ze.has(C),le=Et.has(C),W=kn.has(C),ve=[te&&"nice-datagrid__row--selected",Rt===u&&"nice-datagrid__row--dragging",h&&"nice-datagrid__row--pinned",W&&"nice-datagrid__row--flash"].filter(Boolean).join(" ");return e.jsxs(t.Fragment,{children:[e.jsxs("tr",{className:ve,onClick:()=>Be?.(b),onDoubleClick:re==="popup"&&(de||$)?()=>_t({key:C,data:{...b}}):void 0,onContextMenu:Ze=>Sn(Ze,b),style:Be||re==="popup"?{cursor:"pointer"}:void 0,draggable:J,onDragStart:J?()=>Ut(u):void 0,onDragOver:J?Ze=>Ze.preventDefault():void 0,onDrop:J&&Ae&&Rt!=null?()=>{Ae(Rt,u),Ut(null)}:void 0,onDragEnd:J?()=>Ut(null):void 0,children:[ht&&e.jsx("td",{className:"nice-datagrid__row-indicator",style:{width:32,padding:"0 4px"},children:ht(b)}),je&&e.jsx("td",{className:"nice-datagrid__expand-col",onClick:Ze=>{Ze.stopPropagation(),v(C)},children:e.jsx("span",{className:"nice-datagrid__expand-btn",children:"?"})}),J&&e.jsx("td",{className:"nice-datagrid__drag-handle",style:{cursor:"grab",textAlign:"center",color:"var(--text-muted)"},children:"?"}),f&&e.jsx("td",{className:"nice-datagrid__checkbox",onClick:Ze=>Ze.stopPropagation(),style:cn?{position:"sticky",left:0,zIndex:1,background:"var(--bg-primary, #fff)"}:void 0,children:e.jsx("input",{type:"checkbox",checked:te,onChange:()=>Fn(C),"aria-label":`Select row ${C}`})}),(()=>{let Ze=0;return Ue.map((et,Bt)=>{if(Ze>0)return Ze--,null;const Kt=He?He(b,et,Bt):void 0;Kt&&Kt>1&&(Ze=Kt-1);const Yt=ji(et,b,C,Bt);return e.jsx("td",{colSpan:Kt,className:Yt.className,style:Yt.style,onClick:G?()=>_n({rowKey:C,field:et.field}):void 0,onDoubleClick:et.editable&&$?()=>gn(C,et.field,b[et.field]):void 0,children:Zn(et,b,C,u)},et.field)})})()]}),je&&le&&e.jsx("tr",{className:"nice-datagrid__detail-row",children:e.jsx("td",{colSpan:bn,children:je(b)})})]},C)};return dn?null:e.jsxs("div",{ref:sn,className:`nice-datagrid ${F?"nice-datagrid--print":""} ${wt||""}`,style:Gt,role:"grid","aria-label":Pe("datagrid.title","Data Grid"),"aria-rowcount":vt.length,"aria-colcount":qe.length,"aria-busy":d||void 0,tabIndex:G?0:void 0,onKeyDown:G?_i:void 0,children:[(z||Ve||c||mt?.length||ke)&&e.jsxs("div",{className:"nice-datagrid__toolbar",children:[z&&e.jsx("div",{className:"nice-datagrid__search",children:e.jsx("input",{type:"text",value:Fe?Qe.search:ie,"aria-label":Pe("controls.search","Search"),onChange:i=>{Fe?Qe.setSearch(i.target.value):(oe(i.target.value),Cn(1))},placeholder:N||Pe("controls.search","Search...")})}),mt&&mt.length>0&&e.jsx("div",{className:"nice-datagrid__quick-filters",style:{display:"flex",gap:6,flexWrap:"wrap"},children:mt.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))}),Le&&e.jsx("button",{className:"nice-btn nice-btn--sm nice-btn--ghost",onClick:Mn,title:Pe("controls.copy","Copy selected"),style:{marginLeft:4},children:"??"}),c&&e.jsx("button",{className:"nice-btn nice-btn--sm",onClick:gi,title:Pe("controls.exportCsv","Export CSV"),children:"CSV ?"}),ke&&e.jsxs("button",{type:"button",className:"nice-btn nice-btn--sm nice-btn--primary",onClick:()=>_t({key:null,data:{}}),title:Pe("datagrid.addRow","Add row"),children:["+ ",Pe("datagrid.add","Add")]}),Ve]}),f&&ze.size>0&&(M?.length||w)&&e.jsxs("div",{className:"nice-datagrid__bulk-toolbar",role:"toolbar","aria-label":Pe("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:Pe("datagrid.selectedCount","{count} selected").replace("{count}",String(ze.size))}),(M||[]).map(i=>{const u=Array.from(ze),h=Kn.filter(C=>ze.has(String(C[s]))),b=i.disabled?.(u,h)||!1;return e.jsxs("button",{type:"button",className:`nice-btn nice-btn--sm nice-btn--${i.variant||"secondary"}`,disabled:b,onClick:()=>i.onClick(u,h),children:[i.icon,i.icon&&" ",i.label]},i.key)}),w&&!M?.length&&e.jsxs("button",{type:"button",className:"nice-btn nice-btn--sm nice-btn--danger",onClick:()=>{const i=Array.from(ze),u=Kn.filter(h=>ze.has(String(h[s])));w(i,u)},children:["?? ",Pe("datagrid.deleteSelected","Delete selected")]}),e.jsx("button",{type:"button",className:"nice-btn nice-btn--xs nice-btn--ghost",onClick:()=>{const i=new Set;S===void 0&&B(i),D?.(i)},style:{marginLeft:"auto"},children:Pe("datagrid.clearSelection","Clear")})]}),e.jsxs("div",{ref:tn,className:`nice-datagrid__table-wrap ${g?"nice-datagrid__table-wrap--virtual":""}`,style:g?{maxHeight:Math.min(vt.length*_,600),overflowY:"auto"}:void 0,onScroll:g?i=>Dt(i.currentTarget.scrollTop):void 0,children:[g&&e.jsxs("div",{style:{height:vt.length*_,position:"relative"},children:[e.jsx("table",{className:`${Xe?"nice-table--striped":""} ${at?"nice-table--compact":""}`,style:{position:"sticky",top:0,zIndex:3},children:e.jsx("thead",{children:e.jsxs("tr",{children:[je&&e.jsx("th",{className:"nice-datagrid__expand-col",style:{width:36}}),J&&e.jsx("th",{style:{width:28}}),f&&e.jsx("th",{className:"nice-datagrid__checkbox",style:cn?{position:"sticky",left:0,zIndex:3,background:"var(--bg-primary, #fff)"}:void 0,children:e.jsx("input",{type:"checkbox",checked:Qt,ref:i=>{i&&(i.indeterminate=Ln&&!Qt)},onChange:Pn,"aria-label":Pe("controls.selectAll","Select all")})}),Ue.map((i,u)=>e.jsxs("th",{style:{width:ot[i.field]||i.width,minWidth:i.minWidth,textAlign:i.align,position:"relative",...Dn(i,u)},className:o&&i.sortable!==!1?"nice-datagrid__th--sortable":void 0,onClick:()=>o&&i.sortable!==!1&&Tn(i.field),children:[i.header,o&&i.sortable!==!1&&e.jsx(On,{field:i.field}),he&&e.jsx("span",{className:"nice-datagrid__resize-handle",onMouseDown:h=>{h.stopPropagation(),me(i.field,h)}})]},i.field))]})})}),pi.map((i,u)=>{const h=i._vIdx??0;if(i.type==="group"){const W=i;return e.jsxs("div",{className:"nice-datagrid__group-row",style:{position:"absolute",top:h*_,height:_,left:0,right:0},onClick:()=>Un(W.key),children:[e.jsx("span",{className:"nice-datagrid__group-toggle",children:(W.expanded,"?")}),L?L(W.value,W.rows):e.jsxs(e.Fragment,{children:[String(W.value)," (",W.rows.length,")"]})]},W.key)}const{row:b,key:C}=i,te=ze.has(C),le=Et.has(C);return e.jsxs(t.Fragment,{children:[e.jsxs("div",{className:`nice-datagrid__vrow ${te?"nice-datagrid__row--selected":""} ${Rt===u?"nice-datagrid__row--dragging":""}`,style:{position:"absolute",top:h*_,height:_,left:0,right:0,display:"flex",alignItems:"center"},onClick:()=>Be?.(b),onDoubleClick:re==="popup"&&(de||$)?()=>_t({key:C,data:{...b}}):void 0,draggable:J,onDragStart:J?()=>Ut(u):void 0,onDragOver:J?W=>W.preventDefault():void 0,onDrop:J&&Ae&&Rt!=null?()=>{Ae(Rt,u),Ut(null)}:void 0,onDragEnd:J?()=>Ut(null):void 0,children:[je&&e.jsx("div",{className:"nice-datagrid__expand-col",style:{width:36,flexShrink:0,textAlign:"center",cursor:"pointer"},onClick:W=>{W.stopPropagation(),v(C)},children:e.jsx("span",{className:"nice-datagrid__expand-btn",children:"?"})}),J&&e.jsx("div",{style:{width:28,flexShrink:0,cursor:"grab",textAlign:"center",color:"var(--text-muted)"},children:"?"}),f&&e.jsx("div",{className:"nice-datagrid__checkbox",style:{width:36,flexShrink:0},onClick:W=>W.stopPropagation(),children:e.jsx("input",{type:"checkbox",checked:te,onChange:()=>Fn(C)})}),Ue.map(W=>e.jsx("div",{className:"nice-datagrid__vcell",style:{width:ot[W.field]||W.width||"auto",flex:ot[W.field]||W.width?`0 0 ${typeof(ot[W.field]||W.width)=="number"?(ot[W.field]||W.width)+"px":ot[W.field]||W.width}`:1,textAlign:W.align,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",padding:"0 8px"},onDoubleClick:W.editable&&$?()=>gn(C,W.field,b[W.field]):void 0,children:Zn(W,b,C,h)},W.field))]}),je&&le&&e.jsx("div",{className:"nice-datagrid__detail-row",style:{position:"absolute",top:(h+1)*_,left:0,right:0,padding:"8px 12px",background:"var(--bg-secondary, #f8f8f8)"},children:je(b)})]},C)})]}),!g&&e.jsxs("table",{className:`${Xe?"nice-table--striped":""} ${at?"nice-table--compact":""}`,children:[e.jsx("thead",{children:e.jsxs("tr",{children:[je&&e.jsx("th",{className:"nice-datagrid__expand-col",style:{width:36}}),J&&e.jsx("th",{style:{width:28}}),f&&e.jsx("th",{className:"nice-datagrid__checkbox",style:cn?{position:"sticky",left:0,zIndex:3,background:"var(--bg-primary, #fff)"}:void 0,children:e.jsx("input",{type:"checkbox",checked:Qt,ref:i=>{i&&(i.indeterminate=Ln&&!Qt)},onChange:Pn,"aria-label":Pe("controls.selectAll","Select all")})}),Ue.map((i,u)=>{const h=o&&i.sortable!==!1,b=h?fe===i.field?ge==="asc"?"ascending":ge==="desc"?"descending":"none":"none":void 0;return e.jsxs("th",{style:{width:ot[i.field]||i.width,minWidth:i.minWidth,textAlign:i.align,position:"relative",...Dn(i,u)},className:h?"nice-datagrid__th--sortable":void 0,onClick:()=>h&&Tn(i.field),"aria-sort":b,scope:"col",children:[i.header,h&&e.jsx(On,{field:i.field}),he&&e.jsx("span",{className:"nice-datagrid__resize-handle",onMouseDown:C=>{C.stopPropagation(),me(i.field,C)}})]},i.field)})]})}),e.jsx("tbody",{children:d?e.jsx("tr",{children:e.jsx("td",{colSpan:bn,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:bn,className:"nice-datagrid__empty",children:We||Pe("controls.noData","No data available")})}):e.jsxs(e.Fragment,{children:[ui.map((i,u)=>i.type==="data"&&In(i,u,"top")),hi.map((i,u)=>{if(i.type==="group"){const h=i;return e.jsx("tr",{className:"nice-datagrid__group-row",onClick:()=>Un(h.key),children:e.jsxs("td",{colSpan:bn,className:"nice-datagrid__group-cell",children:[e.jsx("span",{className:"nice-datagrid__group-toggle",children:(h.expanded,"?")}),L?L(h.value,h.rows):e.jsxs(e.Fragment,{children:[String(h.value)," (",h.rows.length,")"]})]})},h.key)}return In(i,u)}),mi.map((i,u)=>i.type==="data"&&In(i,u,"bottom"))]})}),oi&&!d&&At.length>0&&e.jsx("tfoot",{children:e.jsxs("tr",{className:"nice-datagrid__aggregate-row",children:[f&&e.jsx("td",{}),Ue.map(i=>e.jsx("td",{style:{textAlign:i.align,fontWeight:600},children:i.aggregate?(i.aggregateLabel||i.aggregate.toUpperCase())+": "+ei(bt,i.field,i.aggregate):""},i.field))]})})]})]}),V&&e.jsxs("div",{className:"nice-datagrid__footer",children:[e.jsxs("span",{className:"nice-datagrid__footer-info",children:[Pe("controls.showing","Showing")," ",(lt-1)*Xt+1,"�",Math.min(lt*Xt,fn)," ",Pe("controls.of","of")," ",fn]}),e.jsx(Ni.NicePagination,{page:lt,totalPages:di,onChange:Cn,showInfo:!0,pageSize:Xt,showPageSize:!0,pageSizeOptions:[5,10,25,50,100],onPageSizeChange:i=>{Fe?Qe.setPageSize(i):(Oe(i),Cn(1))},showFirstLast:!0})]}),Ne&&!d&&e.jsxs("div",{className:"nice-datagrid__status-bar",children:[e.jsxs("span",{children:[Pe("controls.totalRows","Total rows"),": ",fn]}),f&&ze.size>0&&e.jsxs("span",{children:[Pe("controls.selected","Selected"),": ",ze.size]})]}),Wt&&k&&e.jsx("div",{className:"nice-datagrid__context-menu",style:{position:"fixed",left:Wt.x,top:Wt.y,zIndex:9999},onClick:i=>i.stopPropagation(),children:k.map(i=>e.jsxs("button",{className:"nice-datagrid__context-item",disabled:i.disabled,onClick:()=>{Q?.(i.key,Wt.row),nn(null)},children:[i.icon&&e.jsx("span",{className:"nice-datagrid__context-icon",children:i.icon}),i.label]},i.key))}),(re==="popup"||ke)&&Je&&(()=>{const i=Je.key===null,u=ye??n.filter(h=>!h.hidden&&h.field!==s).map(h=>{let b="text";return h.dataType==="number"||h.dataType==="currency"||h.dataType==="percent"?b="number":h.dataType==="boolean"?b="checkbox":h.dataType==="date"&&(b="date"),{field:h.field,label:h.header,type:b,required:h.validation?.required}});return e.jsx(Jn.NiceModal,{open:!0,onClose:()=>_t(null),title:X??(i?Pe("datagrid.addRow","Add row"):Pe("datagrid.editRow","Edit row")),size:"lg",children:e.jsx(Yn.NiceForm,{items:u,data:Je.data,columns:T,showActions:!0,submitLabel:i?Pe("controls.add","Add"):Pe("controls.save","Save"),cancelLabel:Pe("controls.cancel","Cancel"),onCancel:()=>_t(null),...ce,onFieldChange:(h,b)=>_t(C=>C&&{...C,data:{...C.data,[h]:b}}),onSubmit:h=>{i?ke?.(h):Je.key&&(de?de(Je.key,h):$&&Object.keys(h).forEach(b=>{$(Je.key,b,h[b])})),_t(null)}})})})()]})}yn.displayName="NiceDataGrid";const Si=Object.freeze(Object.defineProperty({__proto__:null,NiceDataGrid:yn},Symbol.toStringTag,{value:"Module"}));function Ci(n,a){return n.filter(s=>a.every(r=>{const o=s[r.field],p=r.value;switch(r.operator){case"eq":return o===p;case"ne":return o!==p;case"gt":return typeof o=="number"&&typeof p=="number"&&o>p;case"gte":return typeof o=="number"&&typeof p=="number"&&o>=p;case"lt":return typeof o=="number"&&typeof p=="number"&&o<p;case"lte":return typeof o=="number"&&typeof p=="number"&&o<=p;case"contains":return String(o).toLowerCase().includes(String(p).toLowerCase());case"startsWith":return String(o).toLowerCase().startsWith(String(p).toLowerCase());case"endsWith":return String(o).toLowerCase().endsWith(String(p).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:o=!0,enableInsights:p=!0,nlPlaceholder:x,onAIFilter:l,onInsights:f,showAISearchBar:S=!0,exampleQueries:D=["Show items from last week","Filter by status = active","Orders over $1000",'Names starting with "A"'],columns:V,data:R,...ae}=n,[q,P]=t.useState(""),[z,N]=t.useState([]),[g,_]=t.useState([]),[y,L]=t.useState(!1),[$,re]=t.useState(null),ye=t.useRef(null),{t:T}=Re.$o(),X=Re.ie(),{parseFilter:ce,isLoading:de}=Re.Rl(),ke=s&&X.isConfigured,U=z.length>0?Ci(R||[],z):R,M=t.useCallback(async j=>{if(!ke||!o||!j.trim())return;re(j);const ne=Mi(V);try{const O=await ce(j,ne);N(O),l?.(j,O)}catch{N([])}},[ke,o,V,ce,l]),w=t.useCallback(()=>{N([]),re(null),P("")},[]),c=t.useCallback(()=>z,[z]),xe=t.useCallback(async()=>{if(!ke||!p||!R?.length)return[];try{const j=await X.complete([{role:"user",content:`Analyze this data and provide 3-5 key insights. Data sample (${R.length} total rows): ${JSON.stringify(R.slice(0,20))}
11
+
12
+ Columns: ${V.map(ne=>ne.field).join(", ")}
13
+
14
+ Return a JSON array of insight strings. Be specific with numbers and trends.`}],{temperature:.3,maxTokens:500});try{const ne=JSON.parse(j.content),O=Array.isArray(ne)?ne:[];return _(O),f?.(O),O}catch{return[]}}catch{return[]}},[ke,p,R,V,X,f]),je=j=>{j.preventDefault(),q.trim()&&M(q)},se=j=>{P(j),M(j)};return t.useImperativeHandle(a,()=>({applyNLFilter:M,clearAIFilters:w,getAIFilters:c,generateInsights:xe})),e.jsxs("div",{className:"nice-data-grid-ai","data-testid":n["data-testid"],children:[S&&ke&&o&&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:je,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:ye,type:"text",value:q,onChange:j=>P(j.target.value),placeholder:x||T("dataGridAI.searchPlaceholder","Search with natural language..."),className:"nice-data-grid-ai__input",disabled:de}),de&&e.jsx("span",{className:"nice-data-grid-ai__loading-spinner"}),q&&!de&&e.jsx("button",{type:"button",className:"nice-data-grid-ai__clear-input",onClick:()=>P(""),children:"✕"})]}),e.jsx("button",{type:"submit",className:"nice-data-grid-ai__search-btn",disabled:de||!q.trim(),children:de?T("dataGridAI.searching","Searching..."):T("dataGridAI.search","Search")})]}),p&&e.jsxs("button",{type:"button",className:"nice-data-grid-ai__insights-btn",onClick:()=>{xe(),L(!0)},disabled:de||!R?.length,title:T("dataGridAI.generateInsights","Generate AI Insights"),children:["💡 ",T("dataGridAI.insights","Insights")]})]}),S&&ke&&o&&!$&&D.length>0&&e.jsxs("div",{className:"nice-data-grid-ai__examples",children:[e.jsx("span",{className:"nice-data-grid-ai__examples-label",children:T("dataGridAI.tryAsking","Try asking:")}),e.jsx("div",{className:"nice-data-grid-ai__examples-list",children:D.slice(0,4).map((j,ne)=>e.jsxs("button",{type:"button",className:"nice-data-grid-ai__example",onClick:()=>se(j),children:['"',j,'"']},ne))})]}),$&&z.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:['"',$,'"']}),e.jsxs("span",{className:"nice-data-grid-ai__filter-count",children:["(",U?.length||0," ",T("dataGridAI.results","results"),")"]})]}),e.jsx("div",{className:"nice-data-grid-ai__filter-badges",children:z.map((j,ne)=>e.jsxs("span",{className:"nice-data-grid-ai__filter-badge",children:[j.field," ",j.operator," ",String(j.value)]},ne))}),e.jsxs("button",{type:"button",className:"nice-data-grid-ai__clear-filter",onClick:w,children:["✕ ",T("dataGridAI.clearFilter","Clear")]})]}),e.jsx("div",{className:"nice-data-grid-ai__grid-wrapper",children:e.jsx(yn,{columns:V,data:U,...ae})}),y&&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:["💡 ",T("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:de?e.jsx("div",{className:"nice-data-grid-ai__insights-loading",children:T("dataGridAI.analyzing","Analyzing data...")}):g.length>0?e.jsx("ul",{className:"nice-data-grid-ai__insights-list",children:g.map((j,ne)=>e.jsxs("li",{className:"nice-data-grid-ai__insight",children:[e.jsx("span",{className:"nice-data-grid-ai__insight-bullet",children:"•"}),j]},ne))}):e.jsx("div",{className:"nice-data-grid-ai__insights-empty",children:T("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:()=>xe(),disabled:de,children:["🔄 ",T("dataGridAI.refresh","Refresh")]})})]})]})}const Ii=t.forwardRef(Di),Ri=({items:n,selectedKeys:a=[],onSelectionChange:s,selectionMode:r="none",searchable:o,searchPlaceholder:p,grouped:x,groupField:l="group",reorderable:f,onReorder:S,onItemClick:D,renderItem:V,showCheckboxes:R,loading:ae,emptyText:q,size:P="md",bordered:z=!0,swipeActions:N,className:g,style:_,accessMode:y,id:L})=>{const re=Re.Zs(y,L)==="hidden",{t:ye}=Re.$o(),[T,X]=t.useState(""),[ce,de]=t.useState(null),[ke,U]=t.useState(null),M=t.useRef(null),w=t.useMemo(()=>{if(!T)return n;const j=T.toLowerCase();return n.filter(ne=>ne.text.toLowerCase().includes(j))},[n,T]),c=t.useMemo(()=>{if(!x)return null;const j=new Map;return w.forEach(ne=>{const O=String(ne[l]??"");j.has(O)||j.set(O,[]),j.get(O).push(ne)}),j},[w,x,l]),xe=t.useCallback(j=>{s&&(r==="single"?s(a.includes(j)?[]:[j]):r==="multiple"&&s(a.includes(j)?a.filter(ne=>ne!==j):[...a,j]))},[a,r,s]),je=t.useCallback(j=>{ce!==null&&ce!==j&&S&&S(ce,j),de(null)},[ce,S]),se=(j,ne)=>{const O=a.includes(j.key),he=ke===j.key;return e.jsxs("li",{className:`nice-list__item ${O?"nice-list__item--selected":""} ${j.disabled?"nice-list__item--disabled":""} ${he?"nice-list__item--swiped":""}`,onClick:()=>{j.disabled||(xe(j.key),D?.(j))},draggable:f,onDragStart:()=>de(ne),onDragOver:J=>J.preventDefault(),onDrop:()=>je(ne),onTouchStart:N?.length?J=>{M.current={x:J.touches[0].clientX,key:j.key}}:void 0,onTouchEnd:N?.length?J=>{if(!M.current)return;const Ae=J.changedTouches[0].clientX-M.current.x;Ae<-50&&M.current.key===j.key?U(j.key):Ae>50&&U(null),M.current=null}:void 0,role:r!=="none"?"option":void 0,"aria-selected":r!=="none"?O:void 0,children:[e.jsxs("div",{className:"nice-list__item-content",children:[R&&r!=="none"&&e.jsx("input",{type:"checkbox",checked:O,readOnly:!0,tabIndex:-1,className:"nice-list__checkbox"}),V?V(j):e.jsxs(e.Fragment,{children:[j.icon&&e.jsx("span",{className:"nice-list__icon",children:j.icon}),e.jsx("span",{className:"nice-list__text",children:j.text}),j.badge&&e.jsx("span",{className:"nice-list__badge",children:j.badge})]})]}),N&&he&&e.jsx("div",{className:"nice-list__swipe-actions",children:N.map(J=>e.jsx("button",{className:"nice-list__swipe-btn",style:J.color?{backgroundColor:J.color}:void 0,onClick:Ae=>{Ae.stopPropagation(),J.onClick(j),U(null)},children:J.label},J.key))})]},j.key)};return re?null:e.jsxs("div",{className:`nice-list nice-list--${P} ${z?"nice-list--bordered":""} ${g||""}`,style:_,children:[o&&e.jsx("div",{className:"nice-list__search",children:e.jsx("input",{type:"text",value:T,onChange:j=>X(j.target.value),placeholder:p||ye("controls.search","Search...")})}),ae?e.jsx("div",{className:"nice-list__loading",children:e.jsx("div",{className:"nice-spinner nice-spinner--sm"})}):w.length===0?e.jsx("div",{className:"nice-list__empty",children:q||ye("controls.noData","No data available")}):c?e.jsx("div",{role:"listbox",children:Array.from(c.entries()).map(([j,ne])=>e.jsxs("div",{className:"nice-list__group",children:[e.jsx("div",{className:"nice-list__group-header",children:j}),e.jsx("ul",{className:"nice-list__items",children:ne.map((O,he)=>se(O,he))})]},j))}):e.jsx("ul",{className:"nice-list__items",role:"listbox",children:w.map((j,ne)=>se(j,ne))})]})};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 Rn(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 o of n.children){const p=Rn(o,a);p==="checked"?r=!0:(p==="indeterminate"&&(r=!0),s=!1)}return s&&r?"checked":r?"indeterminate":"unchecked"}const Ai=({nodes:n,selectedKeys:a=[],expandedKeys:s,onSelectionChange:r,onExpandedChange:o,selectionMode:p="none",showCheckboxes:x,searchable:l,searchPlaceholder:f,onNodeClick:S,renderNode:D,showLines:V,loading:R,className:ae,style:q,accessMode:P,id:z,draggable:N,onNodeDrop:g,onLoadChildren:_,contextMenuItems:y,onContextMenuAction:L,editable:$,onNodeEdit:re,maxDepth:ye})=>{const X=Re.Zs(P,z)==="hidden",{t:ce}=Re.$o(),[de,ke]=t.useState([]),[U,M]=t.useState(""),[w,c]=t.useState(new Set),[xe,je]=t.useState(new Map),[se,j]=t.useState(null),[ne,O]=t.useState(null),[he,J]=t.useState(null),[Ae,Xe]=t.useState(""),at=t.useRef(null),Ee=s??de,We=t.useMemo(()=>new Set(a),[a]),Ve=t.useCallback(async(k,Q)=>{const F=!Ee.includes(k),G=F?[...Ee,k]:Ee.filter(be=>be!==k);if(o?o(G):ke(G),F&&_&&!Q.children?.length&&Q.leaf!==!0&&!xe.has(k)){c(H=>new Set(H).add(k));const be=await _(Q);je(H=>new Map(H).set(k,be)),c(H=>{const Ce=new Set(H);return Ce.delete(k),Ce})}},[Ee,o,_,xe]),Be=t.useCallback((k,Q)=>{if(r){if(p==="single")r(a.includes(k)?[]:[k]);else if(p==="multiple")if(x&&Q.children?.length){const F=ti(Q),G=[k,...F];if(Rn(Q,We)==="checked")r(a.filter(H=>!G.includes(H)));else{const H=new Set([...a,...G]);r(Array.from(H))}}else r(a.includes(k)?a.filter(F=>F!==k):[...a,k])}},[a,p,r,x,We]),Z=t.useCallback(k=>{if(!U)return!0;const Q=U.toLowerCase();return k.text.toLowerCase().includes(Q)?!0:(xe.get(k.key)??k.children)?.some(G=>Z(G))??!1},[U,xe]),Se=t.useCallback((k,Q)=>{y?.length&&(k.preventDefault(),O({x:k.clientX,y:k.clientY,node:Q}))},[y]),He=t.useCallback(()=>{he&&re&&re(he,Ae),J(null)},[he,Ae,re]),Ne=(k,Q)=>{if(U&&!Z(k))return null;const F=typeof ye=="number"?Math.min(10,Math.max(1,ye)):1/0,G=Q+1>=F,be=G?void 0:xe.get(k.key)??k.children,H=!G&&(be&&be.length>0||k.leaf!==!0&&_&&!be?.length),Ce=Ee.includes(k.key),Me=We.has(k.key),ue=w.has(k.key),Le=x&&p==="multiple"&&be?.length?Rn(k,We):Me?"checked":"unchecked",st=Math.min(Q+1,10),ut={paddingLeft:Q*20+4,"--nice-row-bg":`var(--nice-tree-level-${st}-bg, transparent)`,"--nice-row-text":`var(--nice-tree-level-${st}-text, inherit)`,"--nice-row-border":`var(--nice-tree-level-${st}-border, transparent)`,"--nice-row-hover-bg":`var(--nice-tree-level-${st}-hover-bg, var(--hover-bg, color-mix(in srgb, var(--text-primary) 6%, transparent)))`,"--nice-row-active-bg":`var(--nice-tree-level-${st}-active-bg, color-mix(in srgb, var(--color-primary) 14%, transparent))`};return e.jsxs("li",{className:"nice-tree__node",role:"treeitem","aria-expanded":H?Ce:void 0,"data-nice-depth":st,draggable:N&&!k.disabled,onDragStart:N?we=>{we.stopPropagation(),j(k.key)}:void 0,onDragOver:N?we=>{we.preventDefault(),we.stopPropagation()}:void 0,onDrop:N&&se?we=>{we.stopPropagation(),g?.(se,k.key,"inside"),j(null)}:void 0,onDragEnd:N?()=>j(null):void 0,children:[e.jsxs("div",{className:`nice-tree__row ${Me?"nice-tree__row--selected":""} ${k.disabled?"nice-tree__row--disabled":""} ${se===k.key?"nice-tree__row--dragging":""}`,style:ut,onClick:()=>{k.disabled||(Be(k.key,k),S?.(k))},onContextMenu:we=>Se(we,k),onDoubleClick:$&&!k.disabled?()=>{J(k.key),Xe(k.text)}:void 0,children:[e.jsx("span",{className:`nice-tree__toggle ${H?Ce?"nice-tree__toggle--expanded":"":"nice-tree__toggle--leaf"}`,onClick:we=>{we.stopPropagation(),H&&Ve(k.key,k)},children:ue?e.jsx("span",{className:"nice-spinner nice-spinner--xs"}):H?Ce?"▾":"▸":""}),x&&p!=="none"&&e.jsx("input",{type:"checkbox",checked:Le==="checked",ref:we=>{we&&(we.indeterminate=Le==="indeterminate")},onChange:()=>Be(k.key,k),onClick:we=>we.stopPropagation(),tabIndex:-1,className:"nice-tree__checkbox"}),he===k.key?e.jsx("input",{type:"text",className:"nice-tree__edit-input",value:Ae,onChange:we=>Xe(we.target.value),onBlur:He,onKeyDown:we=>{we.key==="Enter"&&He(),we.key==="Escape"&&J(null)},autoFocus:!0,onClick:we=>we.stopPropagation()}):D?D(k):e.jsxs(e.Fragment,{children:[k.icon&&e.jsx("span",{className:"nice-tree__icon",children:k.icon}),e.jsx("span",{className:"nice-tree__text",children:k.text})]})]}),be&&be.length>0&&Ce&&e.jsx("ul",{className:"nice-tree__children",role:"group",children:be.map(we=>Ne(we,Q+1))})]},k.key)};return X?null:e.jsxs("div",{className:`nice-tree ${V?"nice-tree--lines":""} ${ae||""}`,style:q,ref:at,onClick:()=>O(null),children:[l&&e.jsx("div",{className:"nice-tree__search",children:e.jsx("input",{type:"text",value:U,onChange:k=>M(k.target.value),placeholder:f||ce("controls.search","Search..."),"aria-label":f||ce("controls.search","Search tree")})}),R?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(k=>Ne(k,0))}),ne&&y&&e.jsx("div",{className:"nice-tree__context-menu",style:{position:"fixed",top:ne.y,left:ne.x,zIndex:9999},children:y.map(k=>e.jsxs("div",{className:`nice-tree__context-item ${k.disabled?"nice-tree__context-item--disabled":""}`,onClick:()=>{k.disabled||(L?.(k.key,ne.node),O(null))},children:[k.icon&&e.jsx("span",{children:k.icon}),k.label]},k.key))})]})};function Ei(n,a,s){const r=new Map,o=[];return n.forEach(p=>{const x={...p,children:[]};r.set(String(x[a]),x)}),n.forEach(p=>{const x=p[s];x!=null&&r.has(String(x))?r.get(String(x)).children.push(r.get(String(p[a]))):o.push(r.get(String(p[a])))}),o}function $i({columns:n,data:a,keyField:s="key",parentKeyField:r="parentKey",expandedKeys:o,onExpandedChange:p,selectedKeys:x=[],onSelectionChange:l,selectable:f,loading:S,emptyText:D,className:V,style:R,accessMode:ae,id:q}){const z=Re.Zs(ae,q)==="hidden",{t:N}=Re.$o(),[g,_]=t.useState([]),y=o??g,L=t.useMemo(()=>Ei(a,s,r),[a,s,r]),$=t.useMemo(()=>n.filter(X=>!X.hidden),[n]),re=t.useCallback(X=>{const ce=y.includes(X)?y.filter(de=>de!==X):[...y,X];p?p(ce):_(ce)},[y,p]),ye=t.useCallback(X=>{l&&l(x.includes(X)?x.filter(ce=>ce!==X):[...x,X])},[x,l]),T=(X,ce)=>{const de=String(X[s]),ke=X.children&&X.children.length>0,U=y.includes(de),M=x.includes(de);return e.jsxs(t.Fragment,{children:[e.jsxs("tr",{className:M?"nice-treelist__row--selected":"",children:[f&&e.jsx("td",{className:"nice-treelist__checkbox",children:e.jsx("input",{type:"checkbox",checked:M,onChange:()=>ye(de)})}),$.map((w,c)=>e.jsxs("td",{style:{textAlign:w.align},children:[c===0&&e.jsx("span",{style:{display:"inline-block",width:ce*20}}),c===0&&e.jsx("span",{className:"nice-treelist__toggle",onClick:()=>ke&&re(de),style:{cursor:ke?"pointer":"default",width:20,display:"inline-block"},children:ke?U?"▾":"▸":""}),w.render?w.render(X[w.field],X,0):String(X[w.field]??"")]},w.field))]}),ke&&U&&X.children.map(w=>T(w,ce+1))]},de)};return z?null:e.jsx("div",{className:`nice-treelist ${V||""}`,style:R,children:e.jsxs("table",{children:[e.jsx("thead",{children:e.jsxs("tr",{children:[f&&e.jsx("th",{className:"nice-treelist__checkbox"}),$.map(X=>e.jsx("th",{style:{width:X.width,minWidth:X.minWidth,textAlign:X.align},children:X.header},X.field))]})}),e.jsx("tbody",{children:S?e.jsx("tr",{children:e.jsx("td",{colSpan:$.length+(f?1:0),className:"nice-treelist__empty",children:e.jsx("div",{className:"nice-spinner nice-spinner--md",style:{margin:"0 auto"}})})}):L.length===0?e.jsx("tr",{children:e.jsx("td",{colSpan:$.length+(f?1:0),className:"nice-treelist__empty",children:D||N("controls.noData","No data available")})}):L.map(X=>T(X,0))})]})})}function zi({items:n,renderCard:a,columns:s=3,gap:r=16,searchable:o,searchField:p="text",searchPlaceholder:x,loading:l,emptyText:f,onCardClick:S,className:D,style:V,accessMode:R,id:ae}){const P=Re.Zs(R,ae)==="hidden",{t:z}=Re.$o(),[N,g]=t.useState(""),_=t.useMemo(()=>{if(!N)return n;const y=N.toLowerCase();return n.filter(L=>String(L[p]??"").toLowerCase().includes(y))},[n,N,p]);return P?null:e.jsxs("div",{className:`nice-cardview ${D||""}`,style:V,children:[o&&e.jsx("div",{className:"nice-cardview__search",children:e.jsx("input",{type:"text",value:N,onChange:y=>g(y.target.value),placeholder:x||z("controls.search","Search...")})}),l?e.jsx("div",{className:"nice-cardview__loading",children:e.jsx("div",{className:"nice-spinner nice-spinner--md"})}):_.length===0?e.jsx("div",{className:"nice-cardview__empty",children:f||z("controls.noData","No data available")}):e.jsx("div",{className:"nice-cardview__grid",style:{display:"grid",gridTemplateColumns:`repeat(${s}, 1fr)`,gap:r},children:_.map(y=>e.jsx("div",{className:"nice-cardview__card",onClick:()=>S?.(y),style:S?{cursor:"pointer"}:void 0,children:a(y)},y.key))})]})}function Ti({items:n,tileWidth:a=180,tileHeight:s=180,direction:r="horizontal",renderTile:o,onTileClick:p,loading:x,emptyText:l,className:f,style:S}){const{t:D}=Re.$o();return e.jsx("div",{className:`nice-tileview nice-tileview--${r} ${f||""}`,style:S,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:l||D("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(V=>e.jsx("div",{className:"nice-tileview__tile",style:{width:a,height:s,cursor:p?"pointer":void 0},onClick:()=>p?.(V),children:o?o(V):e.jsxs(e.Fragment,{children:[V.image&&e.jsx("img",{src:V.image,alt:V.text||"",className:"nice-tileview__image"}),V.text&&e.jsx("div",{className:"nice-tileview__label",children:V.text})]})},V.key))})})}const qn=[{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 o=n.filter(l=>!l.area),p=(l,f)=>{a(n.map(S=>S.field===l?{...S,area:f}:S))},x=l=>{a(n.map(f=>f.field===l?{...f,area:void 0}:f))};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:o.map(l=>e.jsxs("li",{className:"nice-field-chooser__item",children:[e.jsx("span",{children:l.caption}),e.jsx("div",{className:"nice-field-chooser__actions",children:qn.map(f=>e.jsx("button",{type:"button",className:"nice-btn nice-btn--ghost nice-btn--sm",onClick:()=>p(l.field,f.key),children:f.label},f.key))})]},l.field))})]}),qn.map(l=>{const f=n.filter(S=>S.area===l.key);return e.jsxs("div",{className:"nice-field-chooser__section",children:[e.jsx("h4",{children:l.label}),e.jsx("ul",{children:f.map(S=>e.jsxs("li",{className:"nice-field-chooser__item",children:[e.jsx("span",{children:S.caption}),e.jsx("button",{type:"button",className:"nice-btn nice-btn--ghost nice-btn--sm",onClick:()=>x(S.field),children:"✕"})]},S.field))})]},l.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:o,emptyText:p,exportCsv:x,exportFilename:l="pivot-export",onDrillThrough:f,className:S,style:D,accessMode:V,id:R})=>{const q=Re.Zs(V,R)==="hidden",{t:P}=Re.$o(),[z,N]=t.useState(a),[g,_]=t.useState(!1),y=t.useMemo(()=>z.filter(U=>U.area==="row"),[z]),L=t.useMemo(()=>z.filter(U=>U.area==="column"),[z]),$=t.useMemo(()=>z.filter(U=>U.area==="data"),[z]),re=t.useMemo(()=>y.length===0?["Total"]:Xn(n,y[0].field),[n,y]),ye=t.useMemo(()=>L.length===0?["Total"]:Xn(n,L[0].field),[n,L]),T=t.useCallback((U,M,w)=>{let c=n;y.length>0&&(c=c.filter(se=>String(se[y[0].field])===U)),L.length>0&&(c=c.filter(se=>String(se[L[0].field])===M));const xe=c.map(se=>Number(se[w.field])||0),je=Li(xe,w.summaryType||"sum");return w.format?w.format(je):je},[n,y,L]),X=t.useCallback(U=>{N(U),s?.(U)},[s]),ce=t.useCallback((U,M)=>{let w=n;return y.length>0&&(w=w.filter(c=>String(c[y[0].field])===U)),L.length>0&&(w=w.filter(c=>String(c[L[0].field])===M)),w},[n,y,L]),de=t.useCallback((U,M)=>{f&&f(U,M,ce(U,M))},[f,ce]),ke=t.useCallback(()=>{const U=["",...ye.flatMap(se=>$.length>0?$.map(j=>`${se} - ${j.caption}`):[se])],M=re.map(se=>{const j=ye.flatMap(ne=>$.length>0?$.map(O=>String(T(se,ne,O))):["—"]);return[se,...j]}),w=[U,...M].map(se=>se.map(j=>`"${String(j).replace(/"/g,'""')}"`).join(",")).join(`
15
+ `),c=new Blob(["\uFEFF"+w],{type:"text/csv;charset=utf-8;"}),xe=URL.createObjectURL(c),je=document.createElement("a");je.href=xe,je.download=`${l}.csv`,je.click(),URL.revokeObjectURL(xe)},[ye,re,$,T,l]);return q?null:e.jsxs("div",{className:`nice-pivotgrid ${S||""}`,style:D,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:()=>_(!g),children:P("controls.fieldChooser","Field Chooser")}),x&&e.jsx("button",{type:"button",className:"nice-btn nice-btn--sm",onClick:ke,children:"CSV ↓"})]}),g&&e.jsx(ni,{fields:z,onChange:X}),o?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:y.map(U=>U.caption).join(" / ")||""}),ye.map(U=>e.jsx("th",{colSpan:$.length||1,children:U},U))]}),$.length>1&&e.jsxs("tr",{children:[e.jsx("th",{}),ye.map(U=>$.map(M=>e.jsx("th",{children:M.caption},`${U}-${M.field}`)))]})]}),e.jsx("tbody",{children:re.length===0?e.jsx("tr",{children:e.jsx("td",{colSpan:1+ye.length*Math.max($.length,1),className:"nice-pivotgrid__empty",children:p||P("controls.noData","No data available")})}):re.map(U=>e.jsxs("tr",{children:[e.jsx("td",{className:"nice-pivotgrid__row-header",children:U}),ye.map(M=>$.length>0?$.map(w=>e.jsx("td",{className:`nice-pivotgrid__cell ${f?"nice-pivotgrid__cell--clickable":""}`,onClick:f?()=>de(U,M):void 0,children:T(U,M,w)},`${M}-${w.field}`)):e.jsx("td",{className:"nice-pivotgrid__cell",children:"—"},M))]},U))})]})})]})},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:o,onAddCard:p,disabled:x=!1,size:l="md",collapsible:f=!1,layoutMode:S="scroll",viewMode:D,onViewModeChange:V,collapsedColumns:R,onCollapsedColumnsChange:ae,formItems:q,formColumns:P=1,formProps:z,editCardTitle:N,newCardTitle:g,onCardEdit:_,onCardCreate:y,onCardDelete:L,cookies:$=!1,localStorage:re=!0,sessionStorage:ye=!1,storageMode:T,storageKey:X,className:ce,style:de,id:ke,...U},M)=>{const{t:w}=Re.$o(),[c,xe]=t.useState(null),[je,se]=t.useState(null),[j,ne]=t.useState(null),O=!!q&&(!!_||!!y),he=t.useCallback(F=>{if(O&&_){ne({key:F.key,data:{...F},column:F.column});return}r?.(F)},[O,r,_]),J=t.useCallback(F=>{if(O&&y){ne({key:null,data:{title:"",description:""},column:F});return}p?.(F)},[O,p,y]),Ae=Re.useStorageAdapter(X??"nice-kanban"),[Xe,at]=t.useState(()=>Ae.get("state")??{collapsedColumns:[],viewMode:"default"}),Ee=R??Xe.collapsedColumns??[],We=D??Xe.viewMode??"default",Ve=t.useCallback(F=>{at(G=>{const be={...G,...F};return Ae.set("state",be),be})},[Ae]),Be=t.useCallback(F=>{const G=Ee.includes(F)?Ee.filter(be=>be!==F):[...Ee,F];ae?ae(G):Ve({collapsedColumns:G})},[Ee,ae,Ve]);t.useCallback(F=>{V?V(F):Ve({viewMode:F})},[V,Ve]);const Z=t.useCallback(F=>a.filter(G=>G.column===F).sort((G,be)=>(G.order??0)-(be.order??0)),[a]),Se=t.useCallback((F,G)=>{x||(F.dataTransfer.effectAllowed="move",F.dataTransfer.setData("text/plain",String(G.key)),xe({cardKey:G.key,fromColumn:G.column}))},[x]),He=t.useCallback((F,G)=>{F.preventDefault(),F.dataTransfer.dropEffect="move",se({column:G})},[]),Ne=t.useCallback(()=>{se(null)},[]),k=t.useCallback((F,G)=>{if(F.preventDefault(),se(null),!c||x)return;const be=Z(G);s?.(c.cardKey,G,be.length),xe(null)},[c,x,Z,s]),Q=t.useCallback(()=>{xe(null),se(null)},[]);return e.jsxs(e.Fragment,{children:[e.jsx("div",{ref:M,id:ke,className:`nice-kanban nice-kanban--${l} nice-kanban--${We} nice-kanban--layout-${S} ${x?"nice-kanban--disabled":""} ${ce||""}`,style:de,...U,children:n.map(F=>{const G=Z(F.key),be=je?.column===F.key,H=F.limit!=null&&G.length>=F.limit,Ce=f&&Ee.includes(F.key);return e.jsxs("div",{className:`nice-kanban__column ${be?"nice-kanban__column--dragover":""} ${Ce?"nice-kanban__column--collapsed":""}`,onDragOver:Me=>!Ce&&He(Me,F.key),onDragLeave:Ne,onDrop:Me=>!Ce&&k(Me,F.key),children:[e.jsxs("div",{className:"nice-kanban__column-header",style:F.color?{borderTopColor:F.color}:void 0,onClick:f?()=>Be(F.key):void 0,role:f?"button":void 0,tabIndex:f?0:void 0,onKeyDown:f?Me=>{(Me.key==="Enter"||Me.key===" ")&&Be(F.key)}:void 0,children:[f&&e.jsx("span",{className:"nice-kanban__collapse-icon","aria-hidden":"true",children:"?"}),e.jsx("span",{className:"nice-kanban__column-title",children:F.title}),e.jsxs("span",{className:"nice-kanban__column-count",children:[G.length,F.limit!=null&&` / ${F.limit}`]})]}),!Ce&&e.jsxs("div",{className:"nice-kanban__column-body",children:[G.map(Me=>e.jsx("div",{className:`nice-kanban__card nice-kanban__card--${We} ${c?.cardKey===Me.key?"nice-kanban__card--dragging":""}`,draggable:!x,onDragStart:ue=>Se(ue,Me),onDragEnd:Q,onClick:()=>he(Me),role:"article",children:o?o(Me):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"nice-kanban__card-title",children:Me.title}),We!=="compact"&&Me.description&&e.jsx("div",{className:"nice-kanban__card-desc",children:Me.description})]})},Me.key)),G.length===0&&e.jsx("div",{className:"nice-kanban__empty",children:w("kanban.empty","No cards")})]}),!Ce&&(p||O&&y)&&!H&&e.jsxs("button",{type:"button",className:"nice-kanban__add",onClick:()=>J(F.key),disabled:x,children:["+ ",w("kanban.addCard","Add card")]})]},F.key)})}),O&&j&&e.jsxs(Jn.NiceModal,{open:!0,onClose:()=>ne(null),title:j.key==null?g||w("kanban.newCard","New card"):N||w("kanban.editCard","Edit card"),children:[e.jsx(Yn.NiceForm,{items:q,data:j.data,columns:P,...z,onFieldChange:(F,G)=>ne(be=>be&&{...be,data:{...be.data,[F]:G}})}),e.jsxs("div",{style:{display:"flex",gap:8,justifyContent:"flex-end",marginTop:16,flexWrap:"wrap"},children:[j.key!=null&&L&&e.jsx(Te.NiceButton,{type:"button",size:"sm",variant:"error",style:{marginRight:"auto"},onClick:()=>{L(j.key),ne(null)},children:w("controls.delete","Delete")}),e.jsx(Te.NiceButton,{type:"button",size:"sm",variant:"secondary",onClick:()=>ne(null),children:w("controls.cancel","Cancel")}),e.jsx(Te.NiceButton,{type:"button",size:"sm",variant:"primary",onClick:()=>{if(j.key==null){const F={key:`card-${Date.now()}`,title:"",column:j.column,...j.data};y?.(F)}else _?.(j.key,{...j.data,key:j.key,column:j.column});ne(null)},children:w("controls.save","Save")})]})]})]})});ai.displayName="NiceKanbanBoard";function zt(...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],Ui=40,Wi=10,Bi=768,Gi=500,Vi=10;function jt(n,a){return a.split(".").reduce((s,r)=>s?.[r],n)}function on(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(o=>o.value===n)?.label||String(n);default:return String(n)}}function Ki(n,a,s,r){const[o,p]=t.useState(0),{startIndex:x,endIndex:l,totalHeight:f,offsetY:S}=t.useMemo(()=>{const R=n.length*s,ae=Math.ceil(a/s),q=Math.max(0,Math.floor(o/s)-r),P=Math.min(n.length,Math.ceil(o/s)+ae+r),z=q*s;return{startIndex:q,endIndex:P,totalHeight:R,offsetY:z}},[n.length,a,s,o,r]),D=t.useMemo(()=>n.slice(x,l),[n,x,l]),V=t.useCallback(R=>{p(R.currentTarget.scrollTop)},[]);return{visibleData:D,totalHeight:f,offsetY:S,handleScroll:V,startIndex:x}}function Zi(n,a){const[s,r]=t.useState(()=>{if(n&&typeof window<"u"){const p=localStorage.getItem(`nice-module-grid-${n}`);if(p)return JSON.parse(p)}return a||{}}),o=t.useCallback(p=>{r(x=>{const l={...x,...p};return n&&typeof window<"u"&&localStorage.setItem(`nice-module-grid-${n}`,JSON.stringify(l)),l})},[n]);return[s,o]}function qi(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:o,t:p}){const x=t.useRef(null),[l,f]=t.useState(!1),S=t.useCallback(R=>{if(!o||!r)return;R.preventDefault(),f(!0);const ae=R.clientX,q=n.width||150,P=N=>{const g=N.clientX-ae,_=Math.max(n.minWidth||50,q+g);r(n.field,Math.min(_,n.maxWidth||1/0))},z=()=>{f(!1),document.removeEventListener("mousemove",P),document.removeEventListener("mouseup",z)};document.addEventListener("mousemove",P),document.addEventListener("mouseup",z)},[n,o,r]),D=a?.direction,V=D==="asc"?"↑":D==="desc"?"↓":null;return e.jsxs("div",{className:zt("nice-module-grid__header-cell",n.sortable&&"nice-module-grid__header-cell--sortable",l&&"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":D==="asc"?"ascending":D==="desc"?"descending":"none",title:n.headerTooltip,children:[e.jsx("span",{className:"nice-module-grid__header-text",children:n.header}),V&&e.jsx("span",{className:"nice-module-grid__sort-indicator",children:V}),o&&e.jsx("div",{ref:x,className:"nice-module-grid__resize-handle",onMouseDown:S})]})}function Hi({column:n,row:a,rowIndex:s,value:r,locale:o="pl-PL",onClick:p}){const x=Re.yc({onClick:p}),l=p?x:{};if(n.render)return e.jsx("div",{className:"nice-module-grid__cell",style:{textAlign:n.align},...l,children:n.render(r,a,s)});if(n.type==="enum"&&n.enumOptions){const f=n.enumOptions.find(S=>S.value===r);if(f)return e.jsx("div",{className:"nice-module-grid__cell",style:{textAlign:n.align},...l,children:e.jsxs("span",{className:zt("nice-module-grid__badge",`nice-module-grid__badge--${f.color||"default"}`),children:[f.icon&&e.jsx("span",{className:"nice-module-grid__badge-icon",children:f.icon}),f.label]})})}if(n.type==="progress"){const f=Math.min(100,Math.max(0,Number(r)||0));return e.jsx("div",{className:"nice-module-grid__cell",style:{textAlign:n.align},...l,children:e.jsxs("div",{className:"nice-module-grid__progress",children:[e.jsx("div",{className:zt("nice-module-grid__progress-bar",`nice-module-grid__progress-bar--${n.progressColor||"primary"}`),style:{width:`${f}%`}}),e.jsxs("span",{className:"nice-module-grid__progress-text",children:[f,"%"]})]})})}if(n.type==="rating"){const f=n.maxRating||5,S=Number(r)||0;return e.jsx("div",{className:"nice-module-grid__cell",style:{textAlign:n.align},...l,children:e.jsx("span",{className:"nice-module-grid__rating","aria-label":`${S} out of ${f} stars`,children:Array.from({length:f},(D,V)=>e.jsx("span",{className:zt("nice-module-grid__star",V<S&&"nice-module-grid__star--filled"),children:"★"},V))})})}if(n.type==="link"&&n.linkTemplate){const f=n.linkTemplate.replace(/\{\{(\w+)\}\}/g,(S,D)=>String(jt(a,D)??""));return e.jsx("div",{className:"nice-module-grid__cell",style:{textAlign:n.align},...l,children:e.jsx("a",{href:f,target:n.linkNewTab?"_blank":void 0,rel:n.linkNewTab?"noopener noreferrer":void 0,className:"nice-module-grid__link",children:on(r,n,o)})})}if(n.type==="image"){const S={xs:24,sm:32,md:48,lg:64}[n.imageSize||"sm"];return e.jsx("div",{className:"nice-module-grid__cell",style:{textAlign:n.align},...l,children:r?e.jsx("img",{src:String(r),alt:"",className:"nice-module-grid__image",style:{width:S,height:S}}):e.jsx("div",{className:"nice-module-grid__image-placeholder",style:{width:S,height:S}})})}return n.type==="avatar"?e.jsx("div",{className:"nice-module-grid__cell",style:{textAlign:n.align},...l,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},...l,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"},...l,children:e.jsx("span",{className:zt("nice-module-grid__boolean",!!r&&"nice-module-grid__boolean--true"),children:r?"✓":"✗"})}):e.jsx("div",{className:"nice-module-grid__cell",style:{textAlign:n.align},...l,children:on(r,n,o)})}function Qi({row:n,index:a,columns:s,primaryField:r,secondaryField:o,customRender:p,selected:x,onClick:l,locale:f="pl-PL",t:S}){if(p)return e.jsx("div",{className:zt("nice-module-grid__mobile-card",x&&"nice-module-grid__mobile-card--selected"),onClick:l,children:p(n,a)});const D=s.find(R=>R.field===r)||s[0],V=s.find(R=>R.field===o)||s[1];return e.jsxs("div",{className:zt("nice-module-grid__mobile-card",x&&"nice-module-grid__mobile-card--selected"),onClick:l,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:on(jt(n,D?.field||""),D,f)}),V&&e.jsx("div",{className:"nice-module-grid__mobile-card-subtitle",children:on(jt(n,V.field),V,f)})]}),e.jsx("div",{className:"nice-module-grid__mobile-card-body",children:s.filter(R=>!R.hidden&&R.field!==r&&R.field!==o).slice(0,4).map(R=>e.jsxs("div",{className:"nice-module-grid__mobile-card-field",children:[e.jsx("span",{className:"nice-module-grid__mobile-card-label",children:R.header}),e.jsx("span",{className:"nice-module-grid__mobile-card-value",children:on(jt(n,R.field),R,f)})]},R.field))})]})}function Yi({page:n,pageSize:a,totalRows:s,pageSizeOptions:r,onPageChange:o,t:p}){const x=Math.ceil(s/a),l=(n-1)*a+1,f=Math.min(n*a,s);return e.jsxs("div",{className:"nice-module-grid__pagination",role:"navigation","aria-label":p("pagination.ariaLabel","Pagination"),children:[e.jsxs("div",{className:"nice-module-grid__pagination-info",children:[p("pagination.showing","Showing")," ",l,"–",f," ",p("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:S=>o(1,Number(S.target.value)),"aria-label":p("pagination.rowsPerPage","Rows per page"),children:r.map(S=>e.jsx("option",{value:S,children:S},S))}),e.jsx("button",{className:"nice-module-grid__pagination-btn",onClick:()=>o(1,a),disabled:n===1,"aria-label":p("pagination.first","First"),children:"««"}),e.jsx("button",{className:"nice-module-grid__pagination-btn",onClick:()=>o(n-1,a),disabled:n===1,"aria-label":p("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:()=>o(n+1,a),disabled:n>=x,"aria-label":p("pagination.next","Next"),children:"»"}),e.jsx("button",{className:"nice-module-grid__pagination-btn",onClick:()=>o(x,a),disabled:n>=x,"aria-label":p("pagination.last","Last"),children:"»»"})]})]})}function Ji({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:o="id",dataSource:p,onFetch:x,sortable:l=!0,sort:f,onSortChange:S,multiSort:D=!1,filterable:V=!1,filter:R,onFilterChange:ae,searchText:q,onSearchChange:P,searchPlaceholder:z="moduleGrid.searchPlaceholder",pagination:N=!0,page:g,pageSize:_,pageSizeOptions:y=Oi,totalRows:L,onPageChange:$,virtualScroll:re=!0,rowHeight:ye=Ui,overscan:T=Wi,selectionMode:X="none",selectedKeys:ce,onSelectionChange:de,columnReorder:ke=!0,onColumnOrderChange:U,columnResize:M=!0,onColumnWidthChange:w,groupBy:c,onGroupByChange:xe,groupRowRender:je,expandAllGroups:se=!1,editable:j=!1,onCellEdit:ne,onRowEdit:O,editMode:he="cell",contextMenuItems:J,onContextMenuAction:Ae,exportable:Xe=!0,exportFormats:at=["csv","excel"],onExport:Ee,preferencesKey:We,initialPreferences:Ve,onPreferencesChange:Be,density:Z="normal",striped:Se=!0,bordered:He=!1,hoverable:Ne=!0,loading:k=!1,emptyState:Q,toolbar:F,onRowClick:G,onRowDoubleClick:be,rowClassName:H,rowStyle:Ce,mobileCardView:Me=!0,mobileBreakpoint:ue=Bi,mobileCardRender:Le,mobilePrimaryField:st,mobileSecondaryField:ut,moduleId:we,permissions:Tt,size:mt="medium",skeletonLoading:kt=!0,skeletonRows:Nt=Vi,"aria-label":I,"aria-labelledby":Y,"aria-describedby":pe,className:nt,style:gt,id:De,testId:Ke}=n,{t:Ge}=Re.$o();Re.Zs(),Re.vs("table");const ht=qi(ue),[rt,wt]=Zi(We,Ve),Gt=t.useRef(null),Jt=t.useRef(null),[Zt,qt]=t.useState([]),[pt,dn]=t.useState(),[en,Pe]=t.useState(""),[Qe,Fe]=t.useState(1),[Vt,d]=t.useState(_||Fi),[m,A]=t.useState(new Set),[K,ee]=t.useState([]),[E,B]=t.useState(0),[ie,oe]=t.useState(!1),[$e,Oe]=t.useState(new Set),[_e,Ye]=t.useState(null),[St,Ct]=t.useState({}),Je=f??Zt,_t=R??pt,Mt=q??en,Ot=g??Qe,Lt=_??Vt,Dt=ce??m,tn=L??E??r?.length??0,Pt=!!(x||p),It=t.useMemo(()=>{const v=new Set(rt.hiddenColumns||[]);return s.filter(me=>!me.hidden&&!v.has(me.field))},[s,rt.hiddenColumns]),Et=t.useMemo(()=>{if(Pt)return K;if(!r)return[];let v=[...r];if(Mt){const me=Mt.toLowerCase(),fe=s.filter(ge=>ge.searchable!==!1).map(ge=>ge.field);v=v.filter(ge=>fe.some(lt=>{const ze=jt(ge,lt);return String(ze??"").toLowerCase().includes(me)}))}return Je.length>0&&v.sort((me,fe)=>{for(const ge of Je){const lt=jt(me,ge.field),ze=jt(fe,ge.field),qe=lt<ze?-1:lt>ze?1:0;if(qe!==0)return ge.direction==="asc"?qe:-qe}return 0}),v},[Pt,K,r,Mt,Je,s]),ot=t.useMemo(()=>{if(Pt||!N)return Et;const v=(Ot-1)*Lt;return Et.slice(v,v+Lt)},[Pt,Et,N,Ot,Lt]),un=Gt.current?.clientHeight||400,Rt=re&&ot.length>Gi,{visibleData:Ut,totalHeight:Wt,offsetY:nn,handleScroll:jn,startIndex:an}=Ki(ot,un,ye,T),Ft=Rt?Ut:ot,mn=t.useCallback(async()=>{if(x){oe(!0);try{const me=await x({page:Ot,pageSize:Lt,sort:Je,filter:_t,search:Mt});ee(me.data),B(me.total)}catch(v){console.error("NiceModuleGrid fetch error:",v)}finally{oe(!1)}}},[x,Ot,Lt,Je,_t,Mt]);t.useEffect(()=>{Pt&&mn()},[Pt,mn]);const Nn=t.useCallback(v=>{const me=Je.find(ge=>ge.field===v);let fe;me?me.direction==="asc"?fe=Je.map(ge=>ge.field===v?{...ge,direction:"desc"}:ge):fe=Je.filter(ge=>ge.field!==v):fe=D?[...Je,{field:v,direction:"asc"}]:[{field:v,direction:"asc"}],S?S(fe):qt(fe)},[Je,D,S]),wn=t.useCallback((v,me)=>{$?$(v,me):(Fe(v),d(me))},[$]),An=t.useCallback(v=>{P?P(v):Pe(v),$||Fe(1)},[P,$]),hn=t.useCallback((v,me)=>{const fe=new Set(Dt);if(X==="single"?(fe.clear(),fe.add(v)):(X==="multiple"||X==="checkbox")&&(fe.has(v)?fe.delete(v):fe.add(v)),de){const ge=ot.filter(lt=>fe.has(String(jt(lt,o))));de(fe,ge)}else A(fe)},[Dt,X,de,ot,o]),kn=t.useCallback((v,me)=>{Ct(fe=>({...fe,[v]:me})),w?.(v,me),wt({columnWidths:{...rt.columnWidths,[v]:me}})},[w,wt,rt.columnWidths]),pn=t.useCallback((v,me)=>{J?.length&&(v.preventDefault(),Ye({x:v.clientX,y:v.clientY,row:me}))},[J]),En=t.useCallback(v=>{_e&&Ae?.(v,_e.row),Ye(null)},[_e,Ae]),$n=t.useCallback(async v=>{if(Ee)await Ee(v,{selectedOnly:Dt.size>0,columns:It.map(me=>me.field)});else if(v==="csv"){const me=It.map(dt=>dt.header).join(","),fe=ot.map(dt=>It.map(rn=>JSON.stringify(jt(dt,rn.field)??"")).join(",")),ge=[me,...fe].join(`
16
+ `),lt=new Blob([ge],{type:"text/csv;charset=utf-8;"}),ze=URL.createObjectURL(lt),qe=document.createElement("a");qe.href=ze,qe.download=`export-${new Date().toISOString().slice(0,10)}.csv`,qe.click(),URL.revokeObjectURL(ze)}},[Ee,Dt,It,ot,Ge]);t.useEffect(()=>{if(!_e)return;const v=()=>Ye(null);return document.addEventListener("click",v),()=>document.removeEventListener("click",v)},[_e]);const sn=t.useCallback(v=>{v.key==="Escape"&&Ye(null)},[]),ct=k||ie,ft=!ct&&Ft.length===0,xt=ht&&Me,Sn=zt("nice-module-grid",`nice-module-grid--${Z}`,`nice-module-grid--${mt}`,Se&&"nice-module-grid--striped",He&&"nice-module-grid--bordered",Ne&&"nice-module-grid--hoverable",ct&&"nice-module-grid--loading",xt&&"nice-module-grid--mobile",nt);return e.jsxs("div",{ref:a,id:De,"data-testid":Ke,className:Sn,style:gt,onKeyDown:sn,role:"grid","aria-label":I,"aria-labelledby":Y,"aria-describedby":pe,"aria-rowcount":tn,"aria-colcount":It.length,"aria-busy":ct,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:z,value:Mt,onChange:v=>An(v.target.value),"aria-label":Ge("moduleGrid.searchAriaLabel","Search")})}),F,Xe&&e.jsx("div",{className:"nice-module-grid__toolbar-export",children:at.map(v=>e.jsx("button",{className:"nice-module-grid__export-btn",onClick:()=>$n(v),"aria-label":Ge(`moduleGrid.export.${v}`,`Export to ${v.toUpperCase()}`),children:v.toUpperCase()},v))})]}),e.jsx("div",{ref:Gt,className:"nice-module-grid__container",onScroll:Rt?jn:void 0,children:xt?e.jsx("div",{className:"nice-module-grid__mobile-list",children:ct&&kt?Array.from({length:Nt},(v,me)=>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}})]},me)):ft?e.jsxs("div",{className:"nice-module-grid__empty",children:[Q?.icon&&e.jsx("div",{className:"nice-module-grid__empty-icon",children:Q.icon}),e.jsx("div",{className:"nice-module-grid__empty-title",children:Q?.title||Ge("moduleGrid.noData","No data")}),Q?.description&&e.jsx("div",{className:"nice-module-grid__empty-description",children:Q.description}),Q?.action&&e.jsxs("button",{className:"nice-module-grid__empty-action",onClick:Q.action.onClick,children:[Q.action.icon,Q.action.label]})]}):Ft.map((v,me)=>{const fe=String(jt(v,o));return e.jsx(Qi,{row:v,index:an+me,columns:It,primaryField:st,secondaryField:ut,customRender:Le,selected:Dt.has(fe),onClick:()=>{X!=="none"&&hn(fe,v),G?.(v,an+me)},t:Ge},fe)})}):e.jsxs("div",{ref:Jt,className:"nice-module-grid__table",children:[e.jsxs("div",{className:"nice-module-grid__header",role:"row",children:[X==="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===Ft.length,onChange:()=>{if(Dt.size===Ft.length)de?.(new Set,[]),A(new Set);else{const v=new Set(Ft.map(me=>String(jt(me,o))));de?.(v,Ft),A(v)}},"aria-label":Ge("moduleGrid.selectAll","Select all")})}),It.map(v=>e.jsx(Xi,{column:{...v,width:St[v.field]||v.width},sort:Je.find(me=>me.field===v.field),onSort:l?Nn:void 0,onResize:M?kn:void 0,resizable:M,t:Ge},v.field))]}),e.jsx("div",{className:"nice-module-grid__body",style:Rt?{height:Wt,position:"relative"}:void 0,children:ct&&kt?Array.from({length:Nt},(v,me)=>e.jsx(Ji,{columns:It},me)):ft?e.jsxs("div",{className:"nice-module-grid__empty",children:[Q?.icon&&e.jsx("div",{className:"nice-module-grid__empty-icon",children:Q.icon}),e.jsx("div",{className:"nice-module-grid__empty-title",children:Q?.title||Ge("moduleGrid.noData","No data")}),Q?.description&&e.jsx("div",{className:"nice-module-grid__empty-description",children:Q.description}),Q?.action&&e.jsxs("button",{className:"nice-module-grid__empty-action",onClick:Q.action.onClick,children:[Q.action.icon,Q.action.label]})]}):e.jsx("div",{style:Rt?{transform:`translateY(${nn}px)`}:void 0,children:Ft.map((v,me)=>{const fe=String(jt(v,o)),ge=an+me,lt=Dt.has(fe),ze=typeof H=="function"?H(v,ge):H,qe=typeof Ce=="function"?Ce(v,ge):Ce;return e.jsxs("div",{className:zt("nice-module-grid__row",lt&&"nice-module-grid__row--selected",ze),style:{...qe,height:ye},role:"row","aria-rowindex":ge+1,"aria-selected":lt,onClick:()=>{X!=="none"&&hn(fe,v),G?.(v,ge)},onDoubleClick:()=>be?.(v,ge),onContextMenu:dt=>pn(dt,v),children:[X==="checkbox"&&e.jsx("div",{className:"nice-module-grid__cell nice-module-grid__cell--checkbox",children:e.jsx("input",{type:"checkbox",checked:lt,onChange:()=>hn(fe,v),onClick:dt=>dt.stopPropagation(),"aria-label":Ge("moduleGrid.selectRow","Select row")})}),It.map(dt=>e.jsx(Hi,{column:{...dt,width:St[dt.field]||dt.width},row:v,rowIndex:ge,value:jt(v,dt.field)},dt.field))]},fe)})})})]})}),N&&tn>0&&e.jsx(Yi,{page:Ot,pageSize:Lt,totalRows:Pt?E:Et.length,pageSizeOptions:y,onPageChange:wn,t:Ge}),_e&&J&&e.jsx("div",{className:"nice-module-grid__context-menu",style:{left:_e.x,top:_e.y},role:"menu",children:J.filter(v=>typeof v.hidden=="function"?!v.hidden(_e.row):!v.hidden).map(v=>{if(v.divider)return e.jsx("div",{className:"nice-module-grid__context-menu-divider"},v.key);const me=typeof v.disabled=="function"?v.disabled(_e.row):v.disabled;return e.jsxs("button",{className:zt("nice-module-grid__context-menu-item",v.danger&&"nice-module-grid__context-menu-item--danger",me&&"nice-module-grid__context-menu-item--disabled"),onClick:()=>{me||(v.onClick?.(_e.row),En(v.key))},disabled:me,role:"menuitem",children:[v.icon&&e.jsx("span",{className:"nice-module-grid__context-menu-icon",children:v.icon}),v.label]},v.key)})}),ct&&!kt&&e.jsx("div",{className:"nice-module-grid__loading-overlay",children:e.jsx("div",{className:"nice-module-grid__spinner","aria-label":Ge("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: var(--nice-radius-lg, 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: var(--nice-radius-md, 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: var(--nice-radius-full, 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: var(--nice-radius-full, 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: var(--nice-radius-sm, 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: var(--nice-radius-md, 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: var(--nice-primary-tint-20, 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 var(--nice-overlay-15, 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: var(--nice-radius-md, 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: var(--nice-radius-md, 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: var(--nice-radius-md, 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: var(--nice-radius-sm, 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: var(--nice-overlay-30, 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 var(--nice-overlay-40, 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 $t(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:o,currency:p,locale:x,onSelect:l,onDoubleClick:f,onDragStart:S,onDragEnd:D,onDrop:V,disabled:R}){const ae=n.status??"unmatched",q=o?.confidence??n.confidence,P=N=>{N.dataTransfer.setData("text/plain",n.id),N.dataTransfer.setData("source","statement"),N.dataTransfer.effectAllowed="move",S()},z=N=>{N.dataTransfer.types.includes("source")&&N.dataTransfer.getData("source")!=="statement"&&N.preventDefault()};return e.jsxs("div",{className:`nice-reconciliation__row nice-reconciliation__row--${ae} ${a?"nice-reconciliation__row--selected":""} ${s?"nice-reconciliation__row--dragging":""} ${r?"nice-reconciliation__row--drop-target":""}`,draggable:!R&&ae!=="matched",onDragStart:P,onDragEnd:D,onDragOver:z,onDrop:V,onClick:l,onDoubleClick:f,role:"row","aria-selected":a,tabIndex:0,children:[e.jsx("span",{className:`nice-reconciliation__status nice-reconciliation__status--${ae}`}),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})]}),q!=null&&e.jsxs("span",{className:`nice-reconciliation__confidence nice-reconciliation__confidence--${ia(q)}`,children:[q,"%"]}),e.jsx("span",{className:`nice-reconciliation__row-amount ${n.amount>=0?"nice-reconciliation__row-amount--positive":"nice-reconciliation__row-amount--negative"}`,children:$t(n.amount,p,x)})]})}function ra({item:n,isSelected:a,isDragging:s,isDropTarget:r,currency:o,locale:p,onSelect:x,onDoubleClick:l,onDragStart:f,onDragEnd:S,onDrop:D,disabled:V}){const R=n.status??"unmatched",ae=P=>{P.dataTransfer.setData("text/plain",n.id),P.dataTransfer.setData("source","entry"),P.dataTransfer.effectAllowed="move",f()},q=P=>{P.dataTransfer.types.includes("source")&&P.dataTransfer.getData("source")!=="entry"&&P.preventDefault()};return e.jsxs("div",{className:`nice-reconciliation__row nice-reconciliation__row--${R} ${a?"nice-reconciliation__row--selected":""} ${s?"nice-reconciliation__row--dragging":""} ${r?"nice-reconciliation__row--drop-target":""}`,draggable:!V&&R!=="matched",onDragStart:ae,onDragEnd:S,onDragOver:q,onDrop:D,onClick:x,onDoubleClick:l,role:"row","aria-selected":a,tabIndex:0,children:[e.jsx("span",{className:`nice-reconciliation__status nice-reconciliation__status--${R}`}),e.jsxs("div",{className:"nice-reconciliation__row-main",children:[e.jsxs("div",{className:"nice-reconciliation__row-date",children:[vn(n.date,p),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:$t(n.amount,o,p)})]})}const ca=t.forwardRef(function(a,s){const{statements:r,bankTransactions:o,entries:p,accountingEntries:x,matches:l,defaultMatches:f=[],suggestions:S=[],config:D={},currency:V,showConfidence:R,statementPanelConfig:ae,entryPanelConfig:q,onMatch:P,onAutoMatch:z,onUnmatch:N,onBatchAction:g,onFilterChange:_,onRequestSuggestions:y,onSelectionChange:L,onComplete:$,size:re="medium",showToolbar:ye=!0,showFilters:T=!0,showSummary:X=!0,showSuggestions:ce=!0,layout:de="horizontal",enableDragDrop:ke=!0,enableKeyboard:U=!0,enableDetailPanel:M=!0,loading:w=!1,disabled:c=!1,readOnly:xe=!1,locale:je="pl-PL",labels:se={},className:j,style:ne}=a,O=r??o??[],he=p??x??[],J=V??D.currency??"PLN",[Ae,Xe]=t.useState(f),[at,Ee]=t.useState(new Set),[We,Ve]=t.useState(new Set),[Be,Z]=t.useState(null),[Se,He]=t.useState(null),[Ne,k]=t.useState({}),[Q,F]=t.useState(null),G=l??Ae,be=t.useRef(null),H=t.useRef(null);t.useEffect(()=>{const I="nice-reconciliation-styles";if(!document.getElementById(I)){const Y=document.createElement("style");Y.id=I,Y.textContent=na,document.head.appendChild(Y)}},[]);const Ce=t.useMemo(()=>{const I=new Set;return G.forEach(Y=>Y.statementIds.forEach(pe=>I.add(pe))),I},[G]),Me=t.useMemo(()=>{const I=new Set;return G.forEach(Y=>Y.entryIds.forEach(pe=>I.add(pe))),I},[G]),ue=t.useMemo(()=>{const I=O.filter(De=>!Ce.has(De.id)),Y=he.filter(De=>!Me.has(De.id)),pe=O.reduce((De,Ke)=>De+Ke.amount,0),nt=he.reduce((De,Ke)=>De+Ke.amount,0),gt=O.filter(De=>Ce.has(De.id)).reduce((De,Ke)=>De+Ke.amount,0);return{totalStatements:O.length,totalEntries:he.length,matchedStatements:O.length-I.length,matchedEntries:he.length-Y.length,unmatchedStatements:I.length,unmatchedEntries:Y.length,statementTotal:pe,entryTotal:nt,matchedAmount:gt,unmatchedStatementAmount:I.reduce((De,Ke)=>De+Ke.amount,0),unmatchedEntryAmount:Y.reduce((De,Ke)=>De+Ke.amount,0),difference:pe-nt,matchPercentage:O.length>0?Math.round((O.length-I.length)/O.length*100):0,matchCount:G.length,partialMatchCount:G.filter(De=>De.status==="partial").length,pendingSuggestions:S.length}},[O,he,G,S,Ce,Me]),Le=t.useCallback((I,Y)=>{const pe=O.filter(rt=>I.includes(rt.id)),nt=he.filter(rt=>Y.includes(rt.id));if(pe.length===0||nt.length===0)return null;const gt=pe.reduce((rt,wt)=>rt+wt.amount,0),De=nt.reduce((rt,wt)=>rt+wt.amount,0),Ke=Math.abs(gt-De),Ge=D.amountTolerance??.01,ht={id:aa(),statementIds:I,entryIds:Y,status:Ke<=Ge?"matched":"partial",statementTotal:gt,entryTotal:De,difference:Ke,confidence:Ke<=Ge?100:Math.max(0,100-Ke/Math.max(Math.abs(gt),1)*100),matchedBy:"user",matchedAt:new Date};return l||Xe(rt=>[...rt,ht]),P?.(ht,pe,nt),Ee(new Set),Ve(new Set),ht},[O,he,D.amountTolerance,l,P]),st=t.useCallback(I=>{const Y=G.find(pe=>pe.id===I);Y&&(l||Xe(pe=>pe.filter(nt=>nt.id!==I)),N?.(I,Y.statementIds,Y.entryIds))},[G,l,N]),ut=t.useCallback(async()=>{const I=[],Y=new Set(Ce),pe=new Set(Me),nt=D.amountTolerance??.01,gt=D.dateTolerance??3;for(const De of O){if(Y.has(De.id))continue;const Ke=he.filter(Ge=>{if(pe.has(Ge.id)||Math.abs(De.amount-Ge.amount)>nt)return!1;const rt=new Date(De.date),wt=new Date(Ge.date);return!(Math.abs(rt.getTime()-wt.getTime())/(1e3*60*60*24)>gt)});if(Ke.length===1){const Ge=Ke[0],ht=Le([De.id],[Ge.id]);ht&&(I.push(ht),Y.add(De.id),pe.add(Ge.id))}}return g?.("autoMatch",I),I},[O,he,Ce,Me,D,Le,g]),we=t.useCallback((I,Y,pe,nt)=>{nt!==Y&&(nt==="statement"?Le([pe],[I]):Le([I],[pe]),Z(null),He(null))},[Le]),Tt=t.useCallback(()=>{const I=Array.from(at),Y=Array.from(We);I.length>0&&Y.length>0&&Le(I,Y)},[at,We,Le]);t.useEffect(()=>{L?.(Array.from(at),Array.from(We))},[at,We,L]),t.useImperativeHandle(s,()=>({getMatches:()=>G,getUnmatchedStatements:()=>O.filter(I=>!Ce.has(I.id)),getUnmatchedEntries:()=>he.filter(I=>!Me.has(I.id)),createMatch:Le,removeMatch:st,autoMatch:ut,getSuggestions:async I=>y?y(I??O.filter(Y=>!Ce.has(Y.id)).map(Y=>Y.id)):[],applySuggestion:I=>Le([I.statementId],I.entryIds),approveAll:()=>{g?.("approveAll",G)},clearAll:()=>{l||Xe([]),g?.("clearAll",[])},exportMatched:I=>{g?.("exportMatched",G)},getSummary:()=>ue,reset:()=>{l||Xe([]),Ee(new Set),Ve(new Set),k({})},focusStatements:()=>be.current?.focus(),focusEntries:()=>H.current?.focus()}),[G,O,he,Ce,Me,Le,st,ut,y,g,l,ue]);const mt=t.useMemo(()=>O.filter(I=>{if(Ne.status&&Ne.status.length>0){const Y=Ce.has(I.id)?"matched":"unmatched";if(!Ne.status.includes(Y))return!1}if(Ne.searchText){const Y=Ne.searchText.toLowerCase();if(!I.description?.toLowerCase().includes(Y)&&!I.counterparty?.toLowerCase().includes(Y))return!1}return!0}),[O,Ne,Ce]),kt=t.useMemo(()=>he.filter(I=>{if(Ne.status&&Ne.status.length>0){const Y=Me.has(I.id)?"matched":"unmatched";if(!Ne.status.includes(Y))return!1}if(Ne.searchText){const Y=Ne.searchText.toLowerCase();if(!I.description?.toLowerCase().includes(Y)&&!I.partyName?.toLowerCase().includes(Y))return!1}return!0}),[he,Ne,Me]),Nt=at.size>0&&We.size>0&&!xe&&!c;return e.jsxs("div",{className:`nice-reconciliation nice-reconciliation--${de} ${j??""}`,style:ne,children:[ye&&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:ut,disabled:c||xe||w,children:["⚡ ",se.autoMatch??"Auto-match"]}),e.jsx("button",{type:"button",className:"nice-reconciliation__btn nice-reconciliation__btn--success",onClick:Tt,disabled:!Nt||w,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:()=>g?.("approveAll",G),disabled:G.length===0||c||w,children:["✓ ",se.approveAll??"Approve All"]}),e.jsxs("button",{type:"button",className:"nice-reconciliation__btn",onClick:()=>{l||Xe([]),g?.("clearAll",[])},disabled:G.length===0||c||xe||w,children:["✕ ",se.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:["📄 ",se.statementPanelTitle??"Bank Statement",e.jsx("span",{className:"nice-reconciliation__panel-badge",children:mt.length})]})}),e.jsx("div",{ref:be,className:"nice-reconciliation__panel-content",role:"listbox","aria-multiselectable":"true",children:mt.length===0?e.jsxs("div",{className:"nice-reconciliation__empty",children:[e.jsx("div",{className:"nice-reconciliation__empty-icon",children:"📋"}),se.noStatements??"No statement items"]}):mt.map(I=>e.jsx(sa,{item:{...I,status:Ce.has(I.id)?"matched":"unmatched"},isSelected:at.has(I.id),isDragging:Be===I.id,isDropTarget:Se===I.id,suggestion:S.find(Y=>Y.statementId===I.id),currency:J,locale:je,onSelect:()=>{c||Ee(Y=>{const pe=new Set(Y);return pe.has(I.id)?pe.delete(I.id):pe.add(I.id),pe})},onDoubleClick:()=>M&&F({type:"statement",id:I.id}),onDragStart:()=>Z(I.id),onDragEnd:()=>{Z(null),He(null)},onDrop:()=>{Be&&Be!==I.id&&we(I.id,"statement",Be,"entry")},disabled:c||xe||!ke},I.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:["📒 ",se.entryPanelTitle??"Book Entries",e.jsx("span",{className:"nice-reconciliation__panel-badge",children:kt.length})]})}),e.jsx("div",{ref:H,className:"nice-reconciliation__panel-content",role:"listbox","aria-multiselectable":"true",children:kt.length===0?e.jsxs("div",{className:"nice-reconciliation__empty",children:[e.jsx("div",{className:"nice-reconciliation__empty-icon",children:"📚"}),se.noEntries??"No book entries"]}):kt.map(I=>e.jsx(ra,{item:{...I,status:Me.has(I.id)?"matched":"unmatched"},isSelected:We.has(I.id),isDragging:Be===I.id,isDropTarget:Se===I.id,currency:J,locale:je,onSelect:()=>{c||Ve(Y=>{const pe=new Set(Y);return pe.has(I.id)?pe.delete(I.id):pe.add(I.id),pe})},onDoubleClick:()=>M&&F({type:"entry",id:I.id}),onDragStart:()=>Z(I.id),onDragEnd:()=>{Z(null),He(null)},onDrop:()=>{Be&&Be!==I.id&&we(I.id,"entry",Be,"statement")},disabled:c||xe||!ke},I.id))})]})]}),X&&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:[ue.matchedStatements,"/",ue.totalStatements," (",ue.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:$t(ue.matchedAmount,J,je)})]}),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:$t(ue.unmatchedStatementAmount,J,je)})]}),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(ue.difference)<.01?"nice-reconciliation__summary-value--success":"nice-reconciliation__summary-value--danger"}`,children:$t(ue.difference,J,je)})]})]}),M&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:`nice-reconciliation__detail-backdrop ${Q?"nice-reconciliation__detail-backdrop--visible":""}`,onClick:()=>F(null)}),e.jsx("div",{className:`nice-reconciliation__detail-panel ${Q?"nice-reconciliation__detail-panel--open":""}`,children:Q&&e.jsx(la,{type:Q.type,id:Q.id,statements:O,entries:he,matches:G,currency:J,locale:je,labels:se,onClose:()=>F(null)})})]})]})});function la({type:n,id:a,statements:s,entries:r,matches:o,currency:p,locale:x,labels:l,onClose:f}){const S=n==="statement"?s.find(P=>P.id===a):r.find(P=>P.id===a),D=n==="statement"?o.find(P=>P.statementIds.includes(a)):o.find(P=>P.entryIds.includes(a)),V=D?n==="statement"?r.filter(P=>D.entryIds.includes(P.id)):s.filter(P=>D.statementIds.includes(P.id)):[];if(!S)return null;const R=n==="statement",ae=R?S:null,q=R?null:S;return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"nice-reconciliation__detail-header",children:[e.jsxs("span",{className:"nice-reconciliation__detail-title",children:[R?"📄":"📒"," ",R?l.statementDetails??"Transaction Details":l.entryDetails??"Entry Details"]}),e.jsx("button",{type:"button",className:"nice-reconciliation__detail-close",onClick:f,"aria-label":"Close",children:"✕"})]}),e.jsxs("div",{className:"nice-reconciliation__detail-content",children:[D&&e.jsxs("div",{className:"nice-reconciliation__detail-match-info",children:[e.jsxs("div",{className:"nice-reconciliation__detail-match-header",children:["✓ ",l.matchedWith??"Matched"," (",D.confidence?.toFixed(0)??100,"% confidence)"]}),e.jsx("div",{className:"nice-reconciliation__detail-match-detail",children:D.matchedBy==="ai"?l.matchedByAI??"Matched automatically by AI":l.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:l.statementTotal??"Statement"}),e.jsx("div",{className:`nice-reconciliation__detail-side-amount ${D.statementTotal>=0?"nice-reconciliation__row-amount--positive":"nice-reconciliation__row-amount--negative"}`,children:$t(D.statementTotal,p,x)})]}),e.jsxs("div",{className:"nice-reconciliation__detail-side-item",children:[e.jsx("div",{className:"nice-reconciliation__detail-side-label",children:l.entryTotal??"Book Entry"}),e.jsx("div",{className:`nice-reconciliation__detail-side-amount ${D.entryTotal>=0?"nice-reconciliation__row-amount--positive":"nice-reconciliation__row-amount--negative"}`,children:$t(D.entryTotal,p,x)})]})]}),D.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:[l.difference??"Difference",":"]}),e.jsx("span",{className:"nice-reconciliation__detail-value",style:{color:"var(--nice-warning, #f59e0b)"},children:$t(D.difference,p,x)})]})]}),e.jsxs("div",{className:"nice-reconciliation__detail-section",children:[e.jsxs("div",{className:"nice-reconciliation__detail-section-title",children:["📋"," ",R?l.transactionInfo??"Transaction Information":l.entryInfo??"Entry Information"]}),e.jsxs("div",{className:"nice-reconciliation__detail-row",children:[e.jsxs("span",{className:"nice-reconciliation__detail-label",children:[l.date??"Date",":"]}),e.jsx("span",{className:"nice-reconciliation__detail-value",children:vn(S.date,x)})]}),e.jsxs("div",{className:"nice-reconciliation__detail-row",children:[e.jsxs("span",{className:"nice-reconciliation__detail-label",children:[l.description??"Description",":"]}),e.jsx("span",{className:"nice-reconciliation__detail-value",children:S.description})]}),e.jsxs("div",{className:"nice-reconciliation__detail-row",children:[e.jsxs("span",{className:"nice-reconciliation__detail-label",children:[l.amount??"Amount",":"]}),e.jsx("span",{className:`nice-reconciliation__detail-value ${S.amount>=0?"nice-reconciliation__row-amount--positive":"nice-reconciliation__row-amount--negative"}`,children:$t(S.amount,p,x)})]}),R&&ae?.counterparty&&e.jsxs("div",{className:"nice-reconciliation__detail-row",children:[e.jsxs("span",{className:"nice-reconciliation__detail-label",children:[l.counterparty??"Counterparty",":"]}),e.jsx("span",{className:"nice-reconciliation__detail-value",children:ae.counterparty})]}),R&&ae?.counterpartyAccount&&e.jsxs("div",{className:"nice-reconciliation__detail-row",children:[e.jsxs("span",{className:"nice-reconciliation__detail-label",children:[l.accountNumber??"Account",":"]}),e.jsx("span",{className:"nice-reconciliation__detail-value",style:{fontFamily:"monospace",fontSize:"0.75rem"},children:ae.counterpartyAccount})]}),!R&&q?.partyName&&e.jsxs("div",{className:"nice-reconciliation__detail-row",children:[e.jsxs("span",{className:"nice-reconciliation__detail-label",children:[l.party??"Party",":"]}),e.jsx("span",{className:"nice-reconciliation__detail-value",children:q.partyName})]}),!R&&q?.documentNumber&&e.jsxs("div",{className:"nice-reconciliation__detail-row",children:[e.jsxs("span",{className:"nice-reconciliation__detail-label",children:[l.documentRef??"Document Ref",":"]}),e.jsx("span",{className:"nice-reconciliation__detail-value",children:q.documentNumber})]}),R&&ae?.referenceNumber&&e.jsxs("div",{className:"nice-reconciliation__detail-row",children:[e.jsxs("span",{className:"nice-reconciliation__detail-label",children:[l.reference??"Reference",":"]}),e.jsx("span",{className:"nice-reconciliation__detail-value",children:ae.referenceNumber})]})]}),V.length>0&&e.jsxs("div",{className:"nice-reconciliation__detail-section",children:[e.jsxs("div",{className:"nice-reconciliation__detail-section-title",children:["🔗"," ",R?l.matchedEntries??"Matched Entries":l.matchedStatements??"Matched Statements"]}),V.map(P=>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:P.description}),e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",color:"var(--nice-text-secondary)"},children:[e.jsx("span",{children:vn(P.date,x)}),e.jsx("span",{style:{fontWeight:600,color:P.amount>=0?"var(--nice-success)":"var(--nice-danger)"},children:$t(P.amount,p,x)})]})]},P.id))]})]})]})}function oa(n,a,s){const r=new Map,o=[];n.forEach(x=>r.set(String(x[a]),{data:x,children:[],key:String(x[a]),depth:0})),n.forEach(x=>{const l=x[s],f=r.get(String(x[a]));if(l!=null&&l!==""&&r.has(String(l))){const S=r.get(String(l));f.depth=S.depth+1,S.children.push(f)}else o.push(f)});const p=(x,l)=>{x.forEach(f=>{f.depth=l,p(f.children,l+1)})};return p(o,0),o}function si(n,a,s,r=0){return n.map(o=>({data:o,key:String(o[s]),depth:r,children:Array.isArray(o[a])?si(o[a],a,s,r+1):[]}))}function da(n){const a=[],s=r=>{r.forEach(o=>{a.push(o.key),s(o.children)})};return s(n),a}function ua(n,a){const s=[],r=o=>{o.forEach(p=>{s.push(p),p.children.length>0&&a.has(p.key)&&r(p.children)})};return r(n),s}function ri(n,a,s){return!a||!s?n:[...n].sort((o,p)=>{const x=o.data[a]??"",l=p.data[a]??"",f=typeof x=="number"&&typeof l=="number"?x-l:String(x).localeCompare(String(l));return s==="desc"?-f:f}).map(o=>({...o,children:ri(o.children,a,s)}))}function ma({columns:n,data:a,keyField:s="id",parentKeyField:r="parentId",nested:o=!1,childrenField:p="children",expandedKeys:x,onExpandedChange:l,defaultExpandAll:f=!1,sortable:S=!0,sortField:D,sortDirection:V,onSort:R,selectable:ae,selectedKeys:q,onSelectionChange:P,searchable:z,searchPlaceholder:N,striped:g,compact:_,loading:y,emptyText:L,toolbar:$,onRowClick:re,className:ye,style:T}){const{t:X}=Re.$o(),ce=t.useMemo(()=>o?si(a,p,s):oa(a,s,r),[a,s,r,o,p]),de=t.useMemo(()=>da(ce),[ce]),[ke,U]=t.useState(()=>f?new Set(de):new Set),M=x?new Set(x):ke,[w,c]=t.useState({field:"",dir:null}),[xe,je]=t.useState(new Set),[se,j]=t.useState(""),ne=D??w.field,O=V??w.dir,he=q??xe,J=t.useMemo(()=>n.filter(Z=>!Z.hidden),[n]),Ae=t.useCallback(Z=>{const Se=ne===Z?O==="asc"?"desc":O==="desc"?null:"asc":"asc";R?R(Z,Se):c({field:Z,dir:Se})},[ne,O,R]),Xe=t.useCallback(Z=>{const Se=new Set(M);Se.has(Z)?Se.delete(Z):Se.add(Z),l?l([...Se]):U(Se)},[M,l]),at=t.useCallback(Z=>{const Se=new Set(he);Se.has(Z)?Se.delete(Z):Se.add(Z),P?P(Se):je(Se)},[he,P]),Ee=t.useMemo(()=>{if(!se)return ce;const Z=se.toLowerCase(),Se=He=>He.reduce((Ne,k)=>{const Q=Se(k.children);return(J.some(G=>String(k.data[G.field]??"").toLowerCase().includes(Z))||Q.length>0)&&Ne.push({...k,children:Q}),Ne},[]);return Se(ce)},[ce,se,J]),We=t.useMemo(()=>ri(Ee,ne,O),[Ee,ne,O]),Ve=t.useMemo(()=>ua(We,M),[We,M]),Be=({field:Z})=>ne!==Z||!O?e.jsx("span",{className:"nice-table__sort-icon",style:{opacity:.3},children:"↕"}):e.jsx("span",{className:"nice-table__sort-icon",children:O==="asc"?"↑":"↓"});return e.jsxs("div",{className:`nice-treegrid nice-datagrid ${ye||""}`,style:T,children:[(z||$)&&e.jsxs("div",{className:"nice-datagrid__toolbar",children:[z&&e.jsx("div",{className:"nice-datagrid__search",children:e.jsx("input",{type:"text",value:se,onChange:Z=>j(Z.target.value),placeholder:N||X("controls.search","Search...")})}),$]}),e.jsx("div",{className:"nice-datagrid__table-wrap",children:e.jsxs("table",{className:`${g?"nice-table--striped":""} ${_?"nice-table--compact":""}`,children:[e.jsx("thead",{children:e.jsxs("tr",{children:[ae&&e.jsx("th",{className:"nice-datagrid__checkbox",style:{width:36}}),J.map(Z=>e.jsxs("th",{style:{width:Z.width,minWidth:Z.minWidth,textAlign:Z.align},className:S&&Z.sortable!==!1?"nice-datagrid__th--sortable":void 0,onClick:()=>S&&Z.sortable!==!1&&Ae(Z.field),children:[Z.header,S&&Z.sortable!==!1&&e.jsx(Be,{field:Z.field})]},Z.field))]})}),e.jsx("tbody",{children:y?e.jsx("tr",{children:e.jsx("td",{colSpan:J.length+(ae?1:0),className:"nice-datagrid__empty",children:e.jsx("div",{className:"nice-spinner nice-spinner--md",style:{margin:"0 auto"}})})}):Ve.length===0?e.jsx("tr",{children:e.jsx("td",{colSpan:J.length+(ae?1:0),className:"nice-datagrid__empty",children:L||X("controls.noData","No data available")})}):Ve.map((Z,Se)=>{const He=he.has(Z.key),Ne=Z.children.length>0,k=M.has(Z.key);return e.jsxs("tr",{className:He?"nice-datagrid__row--selected":void 0,onClick:()=>re?.(Z.data),style:re?{cursor:"pointer"}:void 0,children:[ae&&e.jsx("td",{className:"nice-datagrid__checkbox",onClick:Q=>Q.stopPropagation(),children:e.jsx("input",{type:"checkbox",checked:He,onChange:()=>at(Z.key),"aria-label":`Select row ${Z.key}`})}),J.map((Q,F)=>e.jsxs("td",{style:{textAlign:Q.align},children:[F===0&&e.jsxs(e.Fragment,{children:[e.jsx("span",{style:{display:"inline-block",width:Z.depth*20}}),e.jsx("button",{className:`nice-treegrid__toggle ${Ne?"":"nice-treegrid__toggle--leaf"}`,onClick:G=>{G.stopPropagation(),Ne&&Xe(Z.key)},tabIndex:Ne?0:-1,"aria-expanded":Ne?k:void 0,"aria-label":Ne?k?"Collapse":"Expand":void 0,children:Ne?k?"▾":"▸":""})]}),Q.render?Q.render(Z.data[Q.field],Z.data,Se):String(Z.data[Q.field]??"")]},Q.field))]},Z.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 Ie(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,o=(z,N)=>{if(!z||!N)return[];const g=[];for(let _=z.row;_<=N.row;_++)for(let y=z.col;y<=N.col;y++){const L=tt(Ie(_,y),a,new Set(s));typeof L=="number"&&g.push(L)}return g},p=(z,N)=>{if(!z||!N)return[];const g=[];for(let _=z.row;_<=N.row;_++)for(let y=z.col;y<=N.col;y++)g.push(tt(Ie(_,y),a,new Set(s)));return g},x=r.match(/^(\w+)\(([A-Z]+\d+):([A-Z]+\d+)\)$/i);if(x){const z=x[1].toUpperCase(),N=it(x[2].toUpperCase()),g=it(x[3].toUpperCase());switch(z){case"SUM":return o(N,g).reduce((y,L)=>y+L,0);case"AVG":case"AVERAGE":{const _=o(N,g);return _.length>0?_.reduce((y,L)=>y+L,0)/_.length:0}case"COUNT":return o(N,g).length;case"COUNTA":return p(N,g).filter(_=>_!==null&&_!=="").length;case"COUNTBLANK":return p(N,g).filter(_=>_===null||_==="").length;case"MIN":{const _=o(N,g);return _.length?Math.min(..._):0}case"MAX":{const _=o(N,g);return _.length?Math.max(..._):0}case"MEDIAN":{const _=o(N,g).sort((L,$)=>L-$);if(!_.length)return 0;const y=Math.floor(_.length/2);return _.length%2?_[y]:(_[y-1]+_[y])/2}case"STDEV":{const _=o(N,g);if(_.length<2)return 0;const y=_.reduce((L,$)=>L+$,0)/_.length;return Math.sqrt(_.reduce((L,$)=>L+($-y)**2,0)/(_.length-1))}case"PRODUCT":{const _=o(N,g);return _.length?_.reduce((y,L)=>y*L,1):0}}}const l=r.match(/^(SUMIF|COUNTIF)\(([A-Z]+\d+):([A-Z]+\d+)\s*,\s*"?([^"]*)"?\)$/i);if(l){const z=l[1].toUpperCase(),N=it(l[2].toUpperCase()),g=it(l[3].toUpperCase()),_=l[4];if(N&&g){let y=0;for(let L=N.row;L<=g.row;L++)for(let $=N.col;$<=g.col;$++){const re=tt(Ie(L,$),a,new Set(s));(_.startsWith(">")?Number(re)>Number(_.slice(1)):_.startsWith("<")?Number(re)<Number(_.slice(1)):String(re)===_||typeof re=="number"&&re===Number(_))&&(y+=z==="SUMIF"?typeof re=="number"?re:0:1)}return y}}const f=r.match(/^IF\(([^,]+),\s*([^,]+),\s*([^)]+)\)$/i);if(f){const z=f[1].trim(),N=f[2].trim(),g=f[3].trim(),_=z.match(/^([A-Z]+\d+)\s*([><=!]+)\s*(\S+)$/i);let y=!1;if(_){const re=tt(_[1].toUpperCase(),a,new Set(s)),ye=isNaN(Number(_[3]))?_[3].replace(/^"|"$/g,""):Number(_[3]),T=_[2],X=typeof re=="number"?re:Number(re)||0,ce=typeof ye=="number"?ye:Number(ye)||0;switch(T){case">":y=X>ce;break;case"<":y=X<ce;break;case">=":y=X>=ce;break;case"<=":y=X<=ce;break;case"=":case"==":y=X===ce;break;case"<>":case"!=":y=X!==ce;break}}const L=y?N:g;if(it(L.toUpperCase()))return tt(L.toUpperCase(),a,new Set(s));const $=Number(L);return isNaN($)?L.replace(/^"|"$/g,""):$}const S=r.match(/^CONCAT\((.+)\)$/i);if(S)return S[1].split(",").map(N=>N.trim()).map(N=>{if(N.startsWith('"')&&N.endsWith('"'))return N.slice(1,-1);if(it(N.toUpperCase())){const _=tt(N.toUpperCase(),a,new Set(s));return _!==null?String(_):""}return N}).join("");const D=r.match(/^VLOOKUP\(([^,]+),\s*([A-Z]+\d+):([A-Z]+\d+),\s*(\d+)\)$/i);if(D){let z;it(D[1].trim().toUpperCase())?z=tt(D[1].trim().toUpperCase(),a,new Set(s)):z=isNaN(Number(D[1]))?D[1].replace(/^"|"$/g,""):Number(D[1]);const g=it(D[2].toUpperCase()),_=it(D[3].toUpperCase()),y=parseInt(D[4])-1;if(g&&_)for(let L=g.row;L<=_.row;L++){const $=tt(Ie(L,g.col),a,new Set(s));if(String($)===String(z))return tt(Ie(L,g.col+y),a,new Set(s))}return null}const V=r.match(/^(ABS|ROUND|FLOOR|CEIL|CEILING|SQRT|LEN|UPPER|LOWER|TRIM|INT)\(([^)]+)\)$/i);if(V){const z=V[1].toUpperCase(),N=V[2].trim();let g;switch(it(N.toUpperCase())?g=tt(N.toUpperCase(),a,new Set(s)):g=isNaN(Number(N))?N.replace(/^"|"$/g,""):Number(N),z){case"ABS":return Math.abs(Number(g)||0);case"ROUND":return Math.round(Number(g)||0);case"FLOOR":return Math.floor(Number(g)||0);case"CEIL":case"CEILING":return Math.ceil(Number(g)||0);case"SQRT":return Math.sqrt(Number(g)||0);case"INT":return Math.trunc(Number(g)||0);case"LEN":return String(g??"").length;case"UPPER":return String(g??"").toUpperCase();case"LOWER":return String(g??"").toLowerCase();case"TRIM":return String(g??"").trim()}}const R=r.match(/^POWER\(([^,]+),\s*([^)]+)\)$/i);if(R){const z=Number(it(R[1].trim().toUpperCase())?tt(R[1].trim().toUpperCase(),a,new Set(s)):R[1].trim())||0,N=Number(it(R[2].trim().toUpperCase())?tt(R[2].trim().toUpperCase(),a,new Set(s)):R[2].trim())||0;return Math.pow(z,N)}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 ae=r.match(/^([A-Z]+\d+)$/i);if(ae)return tt(ae[1].toUpperCase(),a,s);const q=r.match(/^([A-Z]+\d+)\s*([+\-*/])\s*([A-Z]+\d+|\d+\.?\d*)$/i);if(q){const z=q[1].toUpperCase(),N=q[2],g=q[3],_=tt(z,a,s),L=it(g.toUpperCase())?tt(g.toUpperCase(),a,s):parseFloat(g),$=typeof _=="number"?_:0,re=typeof L=="number"?L:0;switch(N){case"+":return $+re;case"-":return $-re;case"*":return $*re;case"/":return re!==0?$/re:null}}const P=parseFloat(r);return isNaN(P)?r:P}function tt(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 Hn(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 Qn(n){return{name:n,data:{}}}const li=t.forwardRef(({sheets:n,activeSheet:a,rows:s=50,cols:r=26,showToolbar:o=!0,showFormulaBar:p=!0,showSheetTabs:x=!0,readOnly:l=!1,onChange:f,onActiveSheetChange:S,onCellSelect:D,onCopy:V,onPaste:R,onInsert:ae,onRemove:q,maxUndo:P=50,sortable:z=!1,filterable:N=!1,rangeSelection:g=!0,className:_,style:y,id:L,...$},re)=>{const ye=Re.Hs(L),{t:T}=Re.$o(),[X,ce]=t.useState(()=>n??[Qn(T("spreadsheet.sheet","Sheet")+" 1")]),[de,ke]=t.useState(0),U=n??X,M=a??de,w=U[M]??U[0],[c,xe]=t.useState(null),[je,se]=t.useState(null),[j,ne]=t.useState(!1),[O,he]=t.useState(null),[J,Ae]=t.useState(""),Xe=t.useRef(null),at=t.useRef(null),[Ee,We]=t.useState([]),[Ve,Be]=t.useState([]),[Z,Se]=t.useState(null),He=t.useRef({x:0,width:80}),[Ne,k]=t.useState(null),[Q,F]=t.useState(null),[G,be]=t.useState("");t.useEffect(()=>{O&&Xe.current&&Xe.current.focus()},[O]);const H=t.useMemo(()=>{if(!c)return null;const d=je??c;return{startRow:Math.min(c.row,d.row),startCol:Math.min(c.col,d.col),endRow:Math.max(c.row,d.row),endCol:Math.max(c.col,d.col)}},[c,je]),Ce=t.useCallback((d,m)=>H?d>=H.startRow&&d<=H.endRow&&m>=H.startCol&&m<=H.endCol:!1,[H]),Me=t.useCallback(d=>{We(m=>{const A=[...m,d.map(K=>({...K,data:{...K.data}}))];return A.length>P?A.slice(-P):A}),Be([])},[P]),ue=t.useCallback((d,m=!0)=>{m&&Me(U);const A=d(U);n||ce(A),f?.(A)},[U,n,f,Me]),Le=t.useCallback(()=>{if(Ee.length===0)return;const d=Ee[Ee.length-1];Be(m=>[...m,U.map(A=>({...A,data:{...A.data}}))]),We(m=>m.slice(0,-1)),n||ce(d),f?.(d)},[Ee,U,n,f]),st=t.useCallback(()=>{if(Ve.length===0)return;const d=Ve[Ve.length-1];We(m=>[...m,U.map(A=>({...A,data:{...A.data}}))]),Be(m=>m.slice(0,-1)),n||ce(d),f?.(d)},[Ve,U,n,f]),ut=t.useCallback(d=>{a||ke(d),S?.(d),xe(null),se(null),he(null)},[a,S]),we=t.useCallback((d,m,A)=>{const K=Ie(d,m);ue(ee=>{const E=ee.map((ie,oe)=>oe===M?{...ie,data:{...ie.data}}:ie),B=A.startsWith("=");return E[M].data[K]={...E[M].data[K]??{value:null},formula:B?A:void 0,value:B?null:isNaN(Number(A))?A:Number(A)},E})},[M,ue]),Tt=t.useCallback((d,m,A)=>{A?.shiftKey&&g&&c?se({row:d,col:m}):(xe({row:d,col:m}),se(null)),he(null),D?.(M,d,m)},[M,D,g,c]),mt=t.useCallback((d,m,A)=>{A.button===0&&(Tt(d,m,A),g&&!A.shiftKey&&ne(!0))},[Tt,g]),kt=t.useCallback((d,m)=>{j&&se({row:d,col:m})},[j]);t.useEffect(()=>{if(!j)return;const d=()=>ne(!1);return document.addEventListener("mouseup",d),()=>document.removeEventListener("mouseup",d)},[j]);const Nt=t.useCallback((d,m)=>{if(l)return;const A=Ie(d,m),K=w.data[A];K?.readOnly||(he({row:d,col:m}),Ae(K?.formula??(K?.value!=null?String(K.value):"")))},[l,w.data]),I=t.useCallback(()=>{O&&(we(O.row,O.col,J),he(null))},[O,J,we]),Y=t.useCallback(d=>{if(d.key==="Enter")I();else if(d.key==="Escape")he(null);else if(d.key==="Tab"&&(d.preventDefault(),I(),c)){const m=d.shiftKey?Math.max(0,c.col-1):Math.min(r-1,c.col+1);xe({row:c.row,col:m})}},[I,c,r]),pe=t.useCallback((d,m)=>{if(!c)return;const A=H??{startRow:c.row,startCol:c.col,endRow:c.row,endCol:c.col};ue(K=>{const ee=K.map((E,B)=>B===M?{...E,data:{...E.data}}:E);for(let E=A.startRow;E<=A.endRow;E++)for(let B=A.startCol;B<=A.endCol;B++){const ie=Ie(E,B);ee[M].data[ie]={...ee[M].data[ie]??{value:null},[d]:m}}return ee})},[c,H,M,ue]),nt=t.useCallback(d=>{if(!H||V?.(H)===!1)return;const{startRow:m,startCol:A,endRow:K,endCol:ee}=H,E=[];for(let B=m;B<=K;B++){const ie=[];for(let oe=A;oe<=ee;oe++){const $e=Ie(B,oe),Oe=w.data[$e],_e=Oe?tt($e,w.data,new Set):null;ie.push(Hn(_e,Oe?.format))}E.push(ie.join(" "))}d.clipboardData.setData("text/plain",E.join(`
595
+ `)),d.preventDefault()},[H,w.data,V]),gt=t.useCallback(d=>{if(l||!c)return;const m=d.clipboardData.getData("text/plain");if(!m)return;const A=m.split(`
596
+ `).map(K=>K.split(" "));R?.(A,c.row,c.col)!==!1&&(ue(K=>{const ee=K.map((E,B)=>B===M?{...E,data:{...E.data}}:E);return A.forEach((E,B)=>{E.forEach((ie,oe)=>{const $e=Ie(c.row+B,c.col+oe),Oe=ie.startsWith("=");ee[M].data[$e]={...ee[M].data[$e]??{value:null},formula:Oe?ie:void 0,value:Oe?null:isNaN(Number(ie))?ie:Number(ie)}})}),ee}),d.preventDefault())},[l,c,M,ue,R]),De=t.useCallback(d=>{ue(m=>m.map((K,ee)=>{if(ee!==M)return K;const E={};for(const[B,ie]of Object.entries(K.data)){const oe=it(B);oe&&(oe.row>d?E[Ie(oe.row+1,oe.col)]=ie:E[B]=ie)}return{...K,data:E}})),ae?.("row",d)},[M,ue,ae]),Ke=t.useCallback(d=>{ue(m=>m.map((K,ee)=>{if(ee!==M)return K;const E={};for(const[B,ie]of Object.entries(K.data)){const oe=it(B);oe&&(oe.col>d?E[Ie(oe.row,oe.col+1)]=ie:E[B]=ie)}return{...K,data:E}})),ae?.("column",d)},[M,ue,ae]),Ge=t.useCallback(d=>{ue(m=>m.map((K,ee)=>{if(ee!==M)return K;const E={};for(const[B,ie]of Object.entries(K.data)){const oe=it(B);oe&&oe.row!==d&&(oe.row>d?E[Ie(oe.row-1,oe.col)]=ie:E[B]=ie)}return{...K,data:E}})),q?.("row",d)},[M,ue,q]),ht=t.useCallback(d=>{ue(m=>m.map((K,ee)=>{if(ee!==M)return K;const E={};for(const[B,ie]of Object.entries(K.data)){const oe=it(B);oe&&oe.col!==d&&(oe.col>d?E[Ie(oe.row,oe.col-1)]=ie:E[B]=ie)}return{...K,data:E}})),q?.("column",d)},[M,ue,q]),rt=t.useCallback((d,m)=>{ue(A=>A.map((ee,E)=>{if(E!==M)return ee;const B=new Map;for(const[$e,Oe]of Object.entries(ee.data)){const _e=it($e);_e&&(B.has(_e.row)||B.set(_e.row,{}),B.get(_e.row)[_e.col]=Oe)}const ie=Array.from(B.entries()).sort(($e,Oe)=>{const _e=tt(Ie($e[0],d),ee.data,new Set),Ye=tt(Ie(Oe[0],d),ee.data,new Set),St=typeof _e=="number"?_e:Number(_e),Ct=typeof Ye=="number"?Ye:Number(Ye);if(!isNaN(St)&&!isNaN(Ct))return m==="asc"?St-Ct:Ct-St;const Je=String(_e??""),_t=String(Ye??"");return m==="asc"?Je.localeCompare(_t):_t.localeCompare(Je)}),oe={};return ie.forEach(([,$e],Oe)=>{for(const[_e,Ye]of Object.entries($e))oe[Ie(Oe,Number(_e))]=Ye}),{...ee,data:oe,sortColumn:d,sortDirection:m}}))},[M,ue]),wt=t.useCallback((d,m)=>{const A=w.conditionalFormats;if(!A?.length)return;const K=Ie(d,m),ee=tt(K,w.data,new Set),E=typeof ee=="number"?ee:Number(ee);for(const B of A){const ie=B.range.match(/^([A-Z]+\d+):([A-Z]+\d+)$/i);if(!ie)continue;const oe=it(ie[1].toUpperCase()),$e=it(ie[2].toUpperCase());if(!oe||!$e||d<oe.row||d>$e.row||m<oe.col||m>$e.col)continue;let Oe=!1;switch(B.type){case"greaterThan":Oe=!isNaN(E)&&E>Number(B.value);break;case"lessThan":Oe=!isNaN(E)&&E<Number(B.value);break;case"equalTo":Oe=String(ee)===String(B.value);break;case"between":Oe=!isNaN(E)&&E>=Number(B.value)&&E<=Number(B.value2);break;case"textContains":Oe=String(ee).includes(String(B.value));break;case"isEmpty":Oe=ee===null||ee==="";break;case"isNotEmpty":Oe=ee!==null&&ee!=="";break}if(Oe)return{backgroundColor:B.style.bgColor,color:B.style.color,fontWeight:B.style.bold?"bold":void 0,fontStyle:B.style.italic?"italic":void 0}}},[w.conditionalFormats,w.data]),Gt=t.useCallback(()=>{const d=`${T("spreadsheet.sheet","Sheet")} ${U.length+1}`;ue(m=>[...m,Qn(d)]),ut(U.length)},[U.length,ue,ut,T]),Jt=t.useCallback(()=>{U.length<=1||(ue(d=>d.filter((m,A)=>A!==M)),ut(Math.max(0,M-1)))},[U.length,M,ue,ut]),Zt=t.useCallback((d,m)=>{m.trim()&&(ue(A=>A.map((K,ee)=>ee===d?{...K,name:m.trim()}:K),!1),F(null))},[ue]),qt=t.useMemo(()=>{if(!c)return"";const d=Ie(c.row,c.col),m=w.data[d];return m?.formula??(m?.value!=null?String(m.value):"")},[c,w.data]),pt=t.useMemo(()=>{if(!H)return null;const{startRow:d,startCol:m,endRow:A,endCol:K}=H;if(d===A&&m===K)return null;const ee=[];let E=0;for(let B=d;B<=A;B++)for(let ie=m;ie<=K;ie++){const oe=Ie(B,ie),$e=tt(oe,w.data,new Set);$e!==null&&$e!==""&&E++,typeof $e=="number"&&ee.push($e)}return ee.length===0?{count:E}:{count:E,sum:ee.reduce((B,ie)=>B+ie,0),avg:ee.reduce((B,ie)=>B+ie,0)/ee.length,min:Math.min(...ee),max:Math.max(...ee)}},[H,w.data]),dn=t.useCallback((d,m)=>{m.preventDefault(),m.stopPropagation(),Se(d),He.current={x:m.clientX,width:w.colWidths?.[d]??80}},[w.colWidths]);t.useEffect(()=>{if(Z===null)return;const d=A=>{const K=A.clientX-He.current.x,ee=Math.max(30,He.current.width+K);ue(E=>E.map((ie,oe)=>oe===M?{...ie,colWidths:{...ie.colWidths,[Z]:ee}}:ie),!1)},m=()=>Se(null);return document.addEventListener("mousemove",d),document.addEventListener("mouseup",m),()=>{document.removeEventListener("mousemove",d),document.removeEventListener("mouseup",m)}},[Z,M,ue]);const en=t.useCallback((d,m,A)=>{d.preventDefault(),xe({row:m,col:A}),k({x:d.clientX,y:d.clientY})},[]);t.useEffect(()=>{if(!Ne)return;const d=()=>k(null);return document.addEventListener("click",d),()=>document.removeEventListener("click",d)},[Ne]);const Pe=t.useCallback(d=>{if((d.ctrlKey||d.metaKey)&&!O){if(d.key==="z"){d.preventDefault(),Le();return}if(d.key==="y"){d.preventDefault(),st();return}}if(O||!c)return;let{row:m,col:A}=c;switch(d.key){case"ArrowUp":m=Math.max(0,m-1);break;case"ArrowDown":m=Math.min(s-1,m+1);break;case"ArrowLeft":A=Math.max(0,A-1);break;case"ArrowRight":A=Math.min(r-1,A+1);break;case"Enter":Nt(m,A);return;case"Delete":case"Backspace":l||(H&&(H.startRow!==H.endRow||H.startCol!==H.endCol)?ue(K=>{const ee=K.map((E,B)=>B===M?{...E,data:{...E.data}}:E);for(let E=H.startRow;E<=H.endRow;E++)for(let B=H.startCol;B<=H.endCol;B++)delete ee[M].data[Ie(E,B)];return ee}):we(m,A,""));return;default:if(d.key.length===1&&!d.ctrlKey&&!d.metaKey&&!l){he({row:m,col:A}),Ae(d.key);return}return}d.preventDefault(),d.shiftKey&&g?se({row:m,col:A}):(xe({row:m,col:A}),se(null)),D?.(M,m,A)},[O,c,s,r,l,Nt,we,M,D,Le,st,H,ue,g]),Qe=w.frozenRows??0,Fe=w.frozenCols??0,Vt=[{value:"text",label:T("spreadsheet.formatText","Text")},{value:"number",label:T("spreadsheet.formatNumber","Number")},{value:"percent",label:T("spreadsheet.formatPercent","Percent")},{value:"currency",label:T("spreadsheet.formatCurrency","Currency")},{value:"date",label:T("spreadsheet.formatDate","Date")}];return e.jsxs("div",{ref:re,id:ye,className:`nice-spreadsheet ${l?"nice-spreadsheet--readonly":""} ${_??""}`,style:y,onKeyDown:Pe,onCopy:nt,onPaste:gt,tabIndex:0,role:"application","aria-label":T("spreadsheet.label","Spreadsheet"),...$,children:[o&&!l&&e.jsxs("div",{className:"nice-spreadsheet__toolbar",role:"toolbar",children:[e.jsx(Te.NiceButton,{variant:"ghost",size:"sm",onClick:Le,disabled:Ee.length===0,title:T("spreadsheet.undo","Undo"),children:"?"}),e.jsx(Te.NiceButton,{variant:"ghost",size:"sm",onClick:st,disabled:Ve.length===0,title:T("spreadsheet.redo","Redo"),children:"?"}),e.jsx("span",{className:"nice-spreadsheet__separator"}),e.jsx(Te.NiceButton,{variant:w.data[c?Ie(c.row,c.col):""]?.bold?"primary":"ghost",size:"sm",onClick:()=>pe("bold",!w.data[c?Ie(c.row,c.col):""]?.bold),title:T("spreadsheet.bold","Bold"),children:e.jsx("strong",{children:"B"})}),e.jsx(Te.NiceButton,{variant:w.data[c?Ie(c.row,c.col):""]?.italic?"primary":"ghost",size:"sm",onClick:()=>pe("italic",!w.data[c?Ie(c.row,c.col):""]?.italic),title:T("spreadsheet.italic","Italic"),children:e.jsx("em",{children:"I"})}),e.jsx("span",{className:"nice-spreadsheet__separator"}),e.jsx(Te.NiceButton,{variant:"ghost",size:"sm",onClick:()=>pe("align","left"),title:T("spreadsheet.alignLeft","Align left"),children:"?"}),e.jsx(Te.NiceButton,{variant:"ghost",size:"sm",onClick:()=>pe("align","center"),title:T("spreadsheet.alignCenter","Center"),children:"?"}),e.jsx(Te.NiceButton,{variant:"ghost",size:"sm",onClick:()=>pe("align","right"),title:T("spreadsheet.alignRight","Align right"),children:"?"}),e.jsx("span",{className:"nice-spreadsheet__separator"}),e.jsx(Te.NiceColorPicker,{value:w.data[c?Ie(c.row,c.col):""]?.bgColor??"var(--bg-primary, #ffffff)",onChange:d=>pe("bgColor",d),title:T("spreadsheet.bgColor","Background color"),showInput:!1,showRandom:!1}),e.jsx(Te.NiceColorPicker,{value:w.data[c?Ie(c.row,c.col):""]?.color??"var(--text-primary, #000000)",onChange:d=>pe("color",d),title:T("spreadsheet.textColor","Text color"),showInput:!1,showRandom:!1}),e.jsx("span",{className:"nice-spreadsheet__separator"}),e.jsx(Te.NiceSelect,{size:"sm",value:w.data[c?Ie(c.row,c.col):""]?.format??"text",onChange:d=>pe("format",d),options:Vt,"aria-label":T("spreadsheet.format","Cell format")}),e.jsx("span",{className:"nice-spreadsheet__separator"}),e.jsx(Te.NiceButton,{variant:"ghost",size:"sm",onClick:()=>c&&De(c.row),title:T("spreadsheet.insertRow","Insert row"),children:"+?"}),e.jsx(Te.NiceButton,{variant:"ghost",size:"sm",onClick:()=>c&&Ke(c.col),title:T("spreadsheet.insertCol","Insert column"),children:"+?"}),e.jsx(Te.NiceButton,{variant:"ghost",size:"sm",onClick:()=>c&&Ge(c.row),title:T("spreadsheet.deleteRow","Delete row"),children:"-?"}),e.jsx(Te.NiceButton,{variant:"ghost",size:"sm",onClick:()=>c&&ht(c.col),title:T("spreadsheet.deleteCol","Delete column"),children:"-?"})]}),p&&e.jsxs("div",{className:"nice-spreadsheet__formula-bar",children:[e.jsxs("span",{className:"nice-spreadsheet__cell-label",children:[c?Ie(c.row,c.col):"",H&&H.startRow!==H.endRow||H&&H.startCol!==H.endCol?`:${Ie(H.endRow,H.endCol)}`:""]}),e.jsx(Te.NiceTextInput,{className:"nice-spreadsheet__formula-input",value:O?J:qt,onChange:d=>{O?Ae(d):c&&(he(c),Ae(d))},onKeyDown:Y,readOnly:l,"aria-label":T("spreadsheet.formulaBar","Formula bar")})]}),e.jsx("div",{className:"nice-spreadsheet__grid",ref:at,children:e.jsxs("table",{role:"grid","aria-label":w.name,children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{className:"nice-spreadsheet__corner"}),Array.from({length:r},(d,m)=>e.jsxs("th",{className:`nice-spreadsheet__col-header ${m<Fe?"nice-spreadsheet__col-header--frozen":""}`,style:{width:w.colWidths?.[m]??80,position:m<Fe?"sticky":void 0,left:m<Fe?m*80+40:void 0,zIndex:m<Fe?3:void 0},children:[e.jsx("span",{children:ci(m)}),z&&e.jsx("span",{className:"nice-spreadsheet__sort-trigger",onClick:()=>rt(m,w.sortColumn===m&&w.sortDirection==="asc"?"desc":"asc"),title:T("spreadsheet.sort","Sort"),children:(w.sortColumn===m&&w.sortDirection==="asc","?")}),!l&&e.jsx("span",{className:"nice-spreadsheet__col-resize",onMouseDown:A=>dn(m,A)})]},m))]})}),e.jsx("tbody",{children:Array.from({length:s},(d,m)=>e.jsxs("tr",{className:m<Qe?"nice-spreadsheet__row--frozen":"",style:m<Qe?{position:"sticky",top:m*24,zIndex:2}:void 0,children:[e.jsx("td",{className:"nice-spreadsheet__row-header",children:m+1}),Array.from({length:r},(A,K)=>{const ee=Ie(m,K),E=w.data[ee];if(E?.mergedInto)return null;const B=c?.row===m&&c?.col===K,ie=Ce(m,K),oe=O?.row===m&&O?.col===K,$e=E?tt(ee,w.data,new Set):null,Oe=wt(m,K),_e=m<Qe||K<Fe;return e.jsxs("td",{className:`nice-spreadsheet__cell ${B?"nice-spreadsheet__cell--selected":""} ${ie&&!B?"nice-spreadsheet__cell--in-range":""} ${E?.readOnly?"nice-spreadsheet__cell--readonly":""} ${_e?"nice-spreadsheet__cell--frozen":""}`,style:{textAlign:E?.align,fontWeight:E?.bold?"bold":void 0,fontStyle:E?.italic?"italic":void 0,backgroundColor:Oe?.backgroundColor??E?.bgColor,color:Oe?.color??E?.color,width:w.colWidths?.[K],height:w.rowHeights?.[m],position:_e?"sticky":void 0,left:K<Fe?K*80+40:void 0,zIndex:_e?1:void 0,...Oe},colSpan:E?.colSpan,rowSpan:E?.rowSpan,onMouseDown:Ye=>mt(m,K,Ye),onMouseEnter:()=>kt(m,K),onDoubleClick:()=>Nt(m,K),onContextMenu:Ye=>en(Ye,m,K),role:"gridcell","aria-selected":B,title:E?.comment,children:[E?.comment&&e.jsx("span",{className:"nice-spreadsheet__comment-indicator"}),oe?e.jsx("input",{ref:Xe,className:"nice-spreadsheet__cell-editor",value:J,onChange:Ye=>Ae(Ye.target.value),onKeyDown:Y,onBlur:I}):Hn($e,E?.format)]},K)})]},m))})]})}),Ne&&!l&&c&&e.jsxs("div",{className:"nice-spreadsheet__context-menu",style:{position:"fixed",left:Ne.x,top:Ne.y,zIndex:1e3},children:[e.jsx(Te.NiceButton,{variant:"ghost",size:"sm",onClick:()=>{De(c.row),k(null)},children:T("spreadsheet.insertRowAbove","Insert row above")}),e.jsx(Te.NiceButton,{variant:"ghost",size:"sm",onClick:()=>{De(c.row+1),k(null)},children:T("spreadsheet.insertRowBelow","Insert row below")}),e.jsx(Te.NiceButton,{variant:"ghost",size:"sm",onClick:()=>{Ke(c.col),k(null)},children:T("spreadsheet.insertColLeft","Insert column left")}),e.jsx(Te.NiceButton,{variant:"ghost",size:"sm",onClick:()=>{Ke(c.col+1),k(null)},children:T("spreadsheet.insertColRight","Insert column right")}),e.jsx("hr",{className:"nice-spreadsheet__context-sep"}),e.jsx(Te.NiceButton,{variant:"ghost",size:"sm",onClick:()=>{Ge(c.row),k(null)},children:T("spreadsheet.deleteRow","Delete row")}),e.jsx(Te.NiceButton,{variant:"ghost",size:"sm",onClick:()=>{ht(c.col),k(null)},children:T("spreadsheet.deleteCol","Delete column")})]}),pt&&e.jsxs("div",{className:"nice-spreadsheet__status-bar",children:[e.jsxs("span",{children:[T("spreadsheet.count","Count"),": ",pt.count]}),pt.sum!==void 0&&e.jsxs("span",{children:[T("spreadsheet.sum","Sum"),": ",pt.sum.toFixed(2)]}),pt.avg!==void 0&&e.jsxs("span",{children:[T("spreadsheet.avg","Avg"),": ",pt.avg.toFixed(2)]}),pt.min!==void 0&&e.jsxs("span",{children:[T("spreadsheet.min","Min"),": ",pt.min]}),pt.max!==void 0&&e.jsxs("span",{children:[T("spreadsheet.max","Max"),": ",pt.max]})]}),x&&e.jsxs("div",{className:"nice-spreadsheet__tabs",role:"tablist",children:[U.map((d,m)=>e.jsx("span",{className:"nice-spreadsheet__tab-wrapper",children:Q===m?e.jsx(Te.NiceTextInput,{className:"nice-spreadsheet__tab-rename",value:G,onChange:A=>be(A),onBlur:()=>Zt(m,G),onKeyDown:A=>{A.key==="Enter"&&Zt(m,G),A.key==="Escape"&&F(null)},autoFocus:!0}):e.jsx("span",{onDoubleClick:()=>{l||(F(m),be(d.name))},children:e.jsx(Te.NiceButton,{variant:m===M?"primary":"ghost",size:"sm",onClick:()=>ut(m),children:d.name})})},m)),!l&&e.jsxs(e.Fragment,{children:[e.jsx(Te.NiceButton,{variant:"ghost",size:"sm",onClick:Gt,title:T("spreadsheet.addSheet","Add sheet"),children:"+"}),U.length>1&&e.jsx(Te.NiceButton,{variant:"ghost",size:"sm",onClick:Jt,title:T("spreadsheet.removeSheet","Remove sheet"),children:"�"})]})]})]})});li.displayName="NiceSpreadsheet";const pa=({queries:n,currentFilter:a,currentColumns:s,currentSort:r,onLoad:o,onSave:p,onUpdate:x,onDelete:l,onShare:f,onSetDefault:S,allowSharing:D=!0,allowPinning:V=!0,position:R="dropdown",className:ae,style:q,"data-testid":P})=>{const[z,N]=t.useState(!1),[g,_]=t.useState(""),[y,L]=t.useState(!1),[$,re]=t.useState(""),[ye,T]=t.useState(""),[X,ce]=t.useState(!1),de=n.filter(c=>c.name.toLowerCase().includes(g.toLowerCase())),ke=de.filter(c=>!c.isShared),U=de.filter(c=>c.isShared),M=async()=>{if($.trim()){L(!0);try{await p({name:$,description:ye||void 0,filter:a??{},columns:s,sort:r}),ce(!1),re(""),T("")}finally{L(!1)}}},w=c=>e.jsxs("div",{className:"nice-saved-query__item",children:[c.icon&&e.jsx("span",{className:"nice-saved-query__icon","aria-hidden":"true",children:c.icon}),e.jsx("span",{className:"nice-saved-query__name",children:c.name}),c.isDefault&&e.jsx("span",{className:"nice-saved-query__badge nice-saved-query__badge--default",children:"domyślne"}),c.isShared&&e.jsx("span",{className:"nice-saved-query__badge nice-saved-query__badge--shared",children:"udostępnione"}),c.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:()=>{o(c),N(!1)},type:"button",children:"Wczytaj"}),S&&e.jsx("button",{onClick:()=>S(c.id),type:"button",title:"Ustaw domyślne",children:"★"}),D&&f&&e.jsx("button",{onClick:()=>f(c.id,[]),type:"button",title:"Udostępnij",children:"↗"}),V&&e.jsx("button",{onClick:()=>x(c.id,{...c}),type:"button",title:"Przypnij",children:"📌"}),e.jsx("button",{onClick:()=>l(c.id),type:"button",title:"Usuń","aria-label":`Usuń zapytanie ${c.name}`,children:"✕"})]})]},c.id);return e.jsxs("div",{className:`nice-saved-query nice-saved-query--${R} ${z?"nice-saved-query--open":""} ${ae??""}`,style:q,"data-testid":P,children:[e.jsx("button",{className:"nice-saved-query__trigger",onClick:()=>N(c=>!c),"aria-expanded":z,"aria-haspopup":"listbox",type:"button",children:"Widoki i zapytania"}),z&&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:g,onChange:c=>_(c.target.value),"aria-label":"Szukaj zapytania"}),e.jsx("button",{onClick:()=>ce(c=>!c),type:"button",children:"+ Zapisz bieżący widok"})]}),X&&e.jsxs("div",{className:"nice-saved-query__save-form",children:[e.jsx("input",{type:"text",placeholder:"Nazwa zapytania",value:$,onChange:c=>re(c.target.value),"aria-label":"Nazwa zapytania"}),e.jsx("input",{type:"text",placeholder:"Opis (opcjonalnie)",value:ye,onChange:c=>T(c.target.value),"aria-label":"Opis zapytania"}),e.jsx("button",{onClick:M,disabled:y||!$.trim(),type:"button",children:y?"Zapisywanie…":"Zapisz"}),e.jsx("button",{onClick:()=>ce(!1),type:"button",children:"Anuluj"})]}),ke.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"}),ke.map(w)]}),U.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"}),U.map(w)]}),de.length===0&&e.jsx("p",{className:"nice-saved-query__empty",children:"Brak zapisanych zapytań"})]})]})};exports.NiceCardView=zi;exports.NiceDataGrid=yn;exports.NiceDataGrid$1=Si;exports.NiceDataGridAI=Ii;exports.NiceKanbanBoard=ai;exports.NiceList=Ri;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=Ai;exports.computeAggregate=ei;exports.escapeCsvField=ln;