@object-ui/console 3.0.3 → 3.1.1

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 (168) hide show
  1. package/README.md +1 -1
  2. package/dist/assets/AdvancedChartImpl-D711bBuO.js +7 -0
  3. package/dist/assets/AppManagementPage-D_71FpIH.js +1 -0
  4. package/dist/assets/AuditLogPage-D3g_VEdE.js +1 -0
  5. package/dist/assets/AuthPageLayout-9l5xWV_-.js +1 -0
  6. package/dist/assets/{ChartImpl-2ivTljUi.js → ChartImpl-B9B4Fnbe.js} +1 -1
  7. package/dist/assets/CreateAppPage-mqt5j4rK.js +1 -0
  8. package/dist/assets/DashboardDesignPage-Cijb3jeF.js +1 -0
  9. package/dist/assets/DashboardView-DjhlMHLV.js +1 -0
  10. package/dist/assets/EditAppPage-BiK_DWcO.js +1 -0
  11. package/dist/assets/ForgotPasswordPage-Bzady8r_.js +1 -0
  12. package/dist/assets/KanbanEnhanced-OvdpYe81.js +1 -0
  13. package/dist/assets/KanbanImpl-EcxwmGw7.js +1 -0
  14. package/dist/assets/LoginPage-valW4Wu1.js +1 -0
  15. package/dist/assets/{MarkdownImpl-BshtTFK2.js → MarkdownImpl-C0wRapHT.js} +2 -2
  16. package/dist/assets/OrgManagementPage-D0d52PdP.js +1 -0
  17. package/dist/assets/PageDesignPage-hpFLdWCR.js +1 -0
  18. package/dist/assets/PageView-DxIAf-SB.js +2 -0
  19. package/dist/assets/PermissionManagementPage-ELCC8HyK.js +1 -0
  20. package/dist/assets/ProfilePage-Dj1N0mY3.js +1 -0
  21. package/dist/assets/RecordDetailView-DS9tEr5f.js +1 -0
  22. package/dist/assets/RegisterPage-DqUU8oW-.js +1 -0
  23. package/dist/assets/ReportView-CNi0A66t.js +1 -0
  24. package/dist/assets/RoleManagementPage-DRvuG53j.js +1 -0
  25. package/dist/assets/SearchResultsPage-nMlMQCb8.js +1 -0
  26. package/dist/assets/SystemHubPage-CAY-YvG2.js +1 -0
  27. package/dist/assets/UserManagementPage-fzvfJxav.js +1 -0
  28. package/dist/assets/data-adapter-rvE3xy2B.js +1 -0
  29. package/dist/assets/framework-BM176iet.js +10 -0
  30. package/dist/assets/index-B6cpm7bF.css +1 -0
  31. package/dist/assets/index-CTBPkbPG.js +9 -0
  32. package/dist/assets/index-Dv78M4Xq.js +1 -0
  33. package/dist/assets/infrastructure-n1j_TN6w.js +1 -0
  34. package/dist/assets/maplibre-gl-DVmJFhI2.js +811 -0
  35. package/dist/assets/plugins-core-qwgXbAqa.js +8 -0
  36. package/dist/assets/plugins-views-CveFN6PV.js +62 -0
  37. package/dist/assets/ui-components-BxvihT61.js +36 -0
  38. package/dist/assets/ui-components-CRV2BvKI.css +1 -0
  39. package/dist/assets/ui-layout-C6KWQtRO.js +1 -0
  40. package/dist/assets/{vendor-charts-CSvoW-yB.js → vendor-charts-BLNOCZWl.js} +2 -2
  41. package/dist/assets/vendor-dndkit-CX1oDZqy.js +5 -0
  42. package/dist/assets/vendor-i18n-E3-WitRV.js +9 -0
  43. package/dist/assets/{vendor-icons-CQ8b-fGy.js → vendor-icons-ndICq8DC.js} +3425 -3535
  44. package/dist/assets/vendor-objectstack-YKtcdalX.js +34 -0
  45. package/dist/assets/{vendor-radix-BbeYj_o4.js → vendor-radix-C6qchjxv.js} +1 -1
  46. package/dist/assets/vendor-react-9M-xu2bR.js +60 -0
  47. package/dist/assets/vendor-ui-utils-3tkeUVaX.js +1 -0
  48. package/dist/assets/vendor-zod-DxQVy2_o.js +39 -0
  49. package/dist/index.html +23 -22
  50. package/package.json +49 -46
  51. package/plugin.d.ts +1 -2
  52. package/plugin.js +1 -2
  53. package/plugin.ts +1 -2
  54. package/dist/assets/AdvancedChartImpl-DAS1mU9o.js +0 -7
  55. package/dist/assets/AdvancedChartImpl-DAS1mU9o.js.br +0 -0
  56. package/dist/assets/AdvancedChartImpl-DAS1mU9o.js.gz +0 -0
  57. package/dist/assets/AuditLogPage-CyY7VZJW.js +0 -1
  58. package/dist/assets/AuditLogPage-CyY7VZJW.js.br +0 -0
  59. package/dist/assets/AuditLogPage-CyY7VZJW.js.gz +0 -0
  60. package/dist/assets/ChartImpl-2ivTljUi.js.br +0 -0
  61. package/dist/assets/ChartImpl-2ivTljUi.js.gz +0 -0
  62. package/dist/assets/DashboardView-DSh9LYBb.js +0 -1
  63. package/dist/assets/DashboardView-DSh9LYBb.js.br +0 -0
  64. package/dist/assets/DashboardView-DSh9LYBb.js.gz +0 -0
  65. package/dist/assets/ForgotPasswordPage-DUfjj-wh.js +0 -1
  66. package/dist/assets/KanbanEnhanced-ZOndyXyg.js +0 -1
  67. package/dist/assets/KanbanEnhanced-ZOndyXyg.js.br +0 -0
  68. package/dist/assets/KanbanEnhanced-ZOndyXyg.js.gz +0 -0
  69. package/dist/assets/KanbanImpl-BsMtStI7.js +0 -1
  70. package/dist/assets/KanbanImpl-BsMtStI7.js.br +0 -0
  71. package/dist/assets/KanbanImpl-BsMtStI7.js.gz +0 -0
  72. package/dist/assets/LoginPage-2CoFvwsL.js +0 -1
  73. package/dist/assets/MarkdownImpl-BshtTFK2.js.br +0 -0
  74. package/dist/assets/MarkdownImpl-BshtTFK2.js.gz +0 -0
  75. package/dist/assets/OrgManagementPage-BJt5Iiun.js +0 -1
  76. package/dist/assets/OrgManagementPage-BJt5Iiun.js.br +0 -0
  77. package/dist/assets/OrgManagementPage-BJt5Iiun.js.gz +0 -0
  78. package/dist/assets/PageView-bHvRhycc.js +0 -1
  79. package/dist/assets/PageView-bHvRhycc.js.br +0 -0
  80. package/dist/assets/PageView-bHvRhycc.js.gz +0 -0
  81. package/dist/assets/ProfilePage-MVUfKMrp.js +0 -1
  82. package/dist/assets/ProfilePage-MVUfKMrp.js.br +0 -0
  83. package/dist/assets/ProfilePage-MVUfKMrp.js.gz +0 -0
  84. package/dist/assets/RecordDetailView-Sm8_iQw_.js +0 -1
  85. package/dist/assets/RecordDetailView-Sm8_iQw_.js.br +0 -0
  86. package/dist/assets/RecordDetailView-Sm8_iQw_.js.gz +0 -0
  87. package/dist/assets/RegisterPage-B9itUVYp.js +0 -1
  88. package/dist/assets/ReportView-B0D9jx4v.js +0 -1
  89. package/dist/assets/ReportView-B0D9jx4v.js.br +0 -0
  90. package/dist/assets/ReportView-B0D9jx4v.js.gz +0 -0
  91. package/dist/assets/RoleManagementPage-BRqaeF_L.js +0 -1
  92. package/dist/assets/RoleManagementPage-BRqaeF_L.js.br +0 -0
  93. package/dist/assets/RoleManagementPage-BRqaeF_L.js.gz +0 -0
  94. package/dist/assets/SearchResultsPage-wlC0eLLr.js +0 -1
  95. package/dist/assets/SearchResultsPage-wlC0eLLr.js.br +0 -0
  96. package/dist/assets/SearchResultsPage-wlC0eLLr.js.gz +0 -0
  97. package/dist/assets/UserManagementPage-DOH6ql6-.js +0 -1
  98. package/dist/assets/UserManagementPage-DOH6ql6-.js.br +0 -0
  99. package/dist/assets/UserManagementPage-DOH6ql6-.js.gz +0 -0
  100. package/dist/assets/ViewDesignerPage-TCaXYb43.js +0 -1
  101. package/dist/assets/ViewDesignerPage-TCaXYb43.js.br +0 -0
  102. package/dist/assets/ViewDesignerPage-TCaXYb43.js.gz +0 -0
  103. package/dist/assets/data-adapter-D15yh-pb.js +0 -1
  104. package/dist/assets/data-adapter-D15yh-pb.js.br +0 -0
  105. package/dist/assets/data-adapter-D15yh-pb.js.gz +0 -0
  106. package/dist/assets/framework-mHWN965c.js +0 -10
  107. package/dist/assets/framework-mHWN965c.js.br +0 -0
  108. package/dist/assets/framework-mHWN965c.js.gz +0 -0
  109. package/dist/assets/index-CUnVdETN.css +0 -1
  110. package/dist/assets/index-CUnVdETN.css.br +0 -0
  111. package/dist/assets/index-CUnVdETN.css.gz +0 -0
  112. package/dist/assets/index-RAPqkKVL.js +0 -9
  113. package/dist/assets/index-RAPqkKVL.js.br +0 -0
  114. package/dist/assets/index-RAPqkKVL.js.gz +0 -0
  115. package/dist/assets/infrastructure-Di0WqY4l.js +0 -1
  116. package/dist/assets/infrastructure-Di0WqY4l.js.br +0 -0
  117. package/dist/assets/infrastructure-Di0WqY4l.js.gz +0 -0
  118. package/dist/assets/maplibre-gl-D2AsLM0J.js +0 -811
  119. package/dist/assets/maplibre-gl-D2AsLM0J.js.br +0 -0
  120. package/dist/assets/maplibre-gl-D2AsLM0J.js.gz +0 -0
  121. package/dist/assets/plugins-core-Cv2TPt86.js +0 -4
  122. package/dist/assets/plugins-core-Cv2TPt86.js.br +0 -0
  123. package/dist/assets/plugins-core-Cv2TPt86.js.gz +0 -0
  124. package/dist/assets/plugins-views-P3eB-els.css.br +0 -0
  125. package/dist/assets/plugins-views-P3eB-els.css.gz +0 -0
  126. package/dist/assets/plugins-views-divN-xXs.js +0 -60
  127. package/dist/assets/plugins-views-divN-xXs.js.br +0 -0
  128. package/dist/assets/plugins-views-divN-xXs.js.gz +0 -0
  129. package/dist/assets/systemObjects-DSpePIIy.js.br +0 -2
  130. package/dist/assets/systemObjects-DSpePIIy.js.gz +0 -0
  131. package/dist/assets/ui-components-CseD2Dpn.js +0 -31
  132. package/dist/assets/ui-components-CseD2Dpn.js.br +0 -0
  133. package/dist/assets/ui-components-CseD2Dpn.js.gz +0 -0
  134. package/dist/assets/ui-components-GrNdJOi1.css +0 -1
  135. package/dist/assets/ui-components-GrNdJOi1.css.br +0 -0
  136. package/dist/assets/ui-components-GrNdJOi1.css.gz +0 -0
  137. package/dist/assets/ui-layout-CF_1bNSv.js +0 -1
  138. package/dist/assets/ui-layout-CF_1bNSv.js.br +0 -0
  139. package/dist/assets/ui-layout-CF_1bNSv.js.gz +0 -0
  140. package/dist/assets/vendor-charts-CSvoW-yB.js.br +0 -0
  141. package/dist/assets/vendor-charts-CSvoW-yB.js.gz +0 -0
  142. package/dist/assets/vendor-dndkit-DRGpK6sP.js +0 -5
  143. package/dist/assets/vendor-dndkit-DRGpK6sP.js.br +0 -0
  144. package/dist/assets/vendor-dndkit-DRGpK6sP.js.gz +0 -0
  145. package/dist/assets/vendor-i18n-D5KbMT7w.js +0 -9
  146. package/dist/assets/vendor-i18n-D5KbMT7w.js.br +0 -0
  147. package/dist/assets/vendor-i18n-D5KbMT7w.js.gz +0 -0
  148. package/dist/assets/vendor-icons-CQ8b-fGy.js.br +0 -0
  149. package/dist/assets/vendor-icons-CQ8b-fGy.js.gz +0 -0
  150. package/dist/assets/vendor-objectstack-Bifvxvds.js +0 -1
  151. package/dist/assets/vendor-objectstack-Bifvxvds.js.br +0 -0
  152. package/dist/assets/vendor-objectstack-Bifvxvds.js.gz +0 -0
  153. package/dist/assets/vendor-radix-BbeYj_o4.js.br +0 -0
  154. package/dist/assets/vendor-radix-BbeYj_o4.js.gz +0 -0
  155. package/dist/assets/vendor-react-Dy_xkBQQ.js +0 -60
  156. package/dist/assets/vendor-react-Dy_xkBQQ.js.br +0 -0
  157. package/dist/assets/vendor-react-Dy_xkBQQ.js.gz +0 -0
  158. package/dist/assets/vendor-ui-utils-h6yAcIi9.js +0 -1
  159. package/dist/assets/vendor-ui-utils-h6yAcIi9.js.br +0 -0
  160. package/dist/assets/vendor-ui-utils-h6yAcIi9.js.gz +0 -0
  161. package/dist/assets/vendor-zod-UZPqlszj.js +0 -39
  162. package/dist/assets/vendor-zod-UZPqlszj.js.br +0 -0
  163. package/dist/assets/vendor-zod-UZPqlszj.js.gz +0 -0
  164. package/dist/index.html.br +0 -0
  165. package/dist/index.html.gz +0 -0
  166. package/dist/mockServiceWorker.js.br +0 -0
  167. package/dist/mockServiceWorker.js.gz +0 -0
  168. package/dist/stats.html +0 -4949
@@ -0,0 +1,62 @@
1
+ import{r as m,j as e,a as ts,f as Ja,R as tt}from"./vendor-react-9M-xu2bR.js";import{n as ln,k as on,l as cn,h as _s,f as Qa,S as Ie,C as Se,o as Is,c as $s,p as dn,q as un,s as Za}from"./framework-BM176iet.js";import{c as V,B,P as xt,J as gt,K as bt,aJ as fn,ac as mn,aa as qe,N as er,C as Oe,v as Pe,s as $e,u as Be,G as St,ay as tr,az as sr,aA as ar,A as rr,ad as nr,ae as mt,af as pt,ag as ht,T as Bs,a as Vs,d as nt,e as lt,p as we,w as pn,x as hn,y as xn,z as Pt,aK as la,aL as Hs,aM as qs,aN as lr,aO as ir,t as Ws,a9 as ce,ab as gn}from"./ui-components-BxvihT61.js";import{ag as bn,ae as yn,ah as Gs,j as ps,af as vn,ai as jn,aj as wn,i as Ts,m as Qe,am as or,C as Dt,X as ss,J as Nn,ax as Cn,ay as cr,az as Sn,a2 as kn,y as Vt,ad as Es,aA as dr,S as As,x as ia,a as Mt,d as ur,_ as fr,$ as Dn,z as ot,l as vt,b as mr,aB as kt,aC as pr,aq as oa,aD as Rn,aE as Fn,A as ca,Q as On,aF as Pn,E as Tn,aG as En,c as An,aH as zn,aI as Mn,aJ as Ln,a0 as _n,aK as hr,aL as xr,a9 as In,L as $n,aM as Bn,aN as Vn,aO as Us,q as gr,G as da,w as br,an as yr,ao as vr,M as jr,aa as Hn,n as qn,aw as Cs,aP as Wn}from"./vendor-icons-ndICq8DC.js";import{r as Gn,c as wr}from"./vendor-ui-utils-3tkeUVaX.js";import{u as Nr,b as Un,a as Ys}from"./infrastructure-n1j_TN6w.js";import{r as hs}from"./vendor-charts-BLNOCZWl.js";const Yn={grid:e.jsx(wn,{className:"h-4 w-4"}),kanban:e.jsx(jn,{className:"h-4 w-4"}),gallery:e.jsx(vn,{className:"h-4 w-4"}),calendar:e.jsx(ps,{className:"h-4 w-4"}),timeline:e.jsx(Gs,{className:"h-4 w-4"}),gantt:e.jsx(yn,{className:"h-4 w-4"}),map:e.jsx(bn,{className:"h-4 w-4"})},Ss={grid:"Grid",kanban:"Kanban",gallery:"Gallery",calendar:"Calendar",timeline:"Timeline",gantt:"Gantt",map:"Map"},Xn=({currentView:t,availableViews:s=["grid","kanban"],onViewChange:a,className:r,animated:l=!0})=>{const d=m.useCallback(c=>{if(!l||c===t){a(c);return}typeof document<"u"&&"startViewTransition"in document?document.startViewTransition(()=>a(c)):a(c)},[l,t,a]);return e.jsx("div",{className:V("flex items-center gap-1 bg-transparent oui-view-switcher",r),children:s.map(c=>{const i=t===c;return e.jsxs("button",{type:"button",onClick:()=>d(c),"aria-label":Ss[c],title:Ss[c],"aria-pressed":i,"data-state":i?"on":"off",className:V("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50","hover:bg-muted hover:text-muted-foreground","gap-2 px-3 py-2","data-[state=on]:bg-background data-[state=on]:text-foreground data-[state=on]:shadow-sm border-transparent border data-[state=on]:border-border/50"),children:[Yn[c],e.jsx("span",{className:"hidden sm:inline-block text-xs font-medium",children:Ss[c]})]},c)})})};function Kn(t){if(!t)return null;const s=t.split("-").map(a=>a.charAt(0).toUpperCase()+a.slice(1)).join("");return Ts[s]??null}function Jn(t){return t.filter(s=>s.pinned||s.visible!=="false"&&s.visible!==!1).sort((s,a)=>(s.order??0)-(a.order??0))}const Qn=({tabs:t,activeTab:s,onTabChange:a,className:r})=>{const l=m.useMemo(()=>Jn(t),[t]),d=m.useMemo(()=>l.find(n=>n.isDefault)?.name??l[0]?.name,[l]),[c,i]=m.useState(d),o=s??c,u=m.useCallback(h=>{i(h.name),a?.(h)},[a]);return l.length===0?null:e.jsx("div",{className:V("border-b px-2 sm:px-4 py-1 flex items-center gap-0.5 bg-background",r),"data-testid":"view-tabs",role:"tablist",children:l.map(h=>{const n=Kn(h.icon),k=o===h.name;return e.jsxs(B,{variant:"ghost",size:"sm",className:V("h-7 px-3 py-1.5 text-xs rounded-none transition-colors duration-150",k?"border-b-2 border-primary font-medium text-foreground":"text-muted-foreground hover:text-foreground"),"data-testid":`view-tab-${h.name}`,role:"tab","aria-selected":k,onClick:()=>u(h),children:[n&&e.jsx(n,{className:"h-3 w-3 mr-1.5"}),h.label]},h.name)})})};function Zn({config:t,objectDef:s,data:a=[],onFilterChange:r,maxVisible:l,className:d}){switch(t.element){case"dropdown":return e.jsx(tl,{fields:t.fields||[],objectDef:s,data:a,onFilterChange:r,maxVisible:l,className:d});case"tabs":return e.jsx(sl,{tabs:t.tabs||[],showAllRecords:t.showAllRecords!==!1,allowAddTab:t.allowAddTab,onFilterChange:r,className:d});case"toggle":return e.jsx(al,{fields:t.fields||[],onFilterChange:r,className:d});default:return null}}function el(t,s,a){return t.map(r=>{let l=r.options?[...r.options]:[];if(l.length===0&&s?.fields){const d=Array.isArray(s.fields)?s.fields.find(c=>c.name===r.field):s.fields[r.field];d?.options&&(Array.isArray(d.options)?l=d.options.map(c=>({label:c.label??String(c.value??c),value:c.value??c,color:c.color})):l=Object.entries(d.options).map(([c,i])=>({label:i?.label||c,value:c,color:i?.color})))}return r.showCount&&a.length>0&&(l=l.map(d=>({...d,count:a.filter(c=>c[r.field]===d.value).length}))),{...r,options:l}})}function tl({fields:t,objectDef:s,data:a,onFilterChange:r,maxVisible:l,className:d}){const[c,i]=m.useState(()=>{const x={};return t.forEach(b=>{b.defaultValues&&b.defaultValues.length>0&&(x[b.field]=b.defaultValues)}),x}),o=m.useMemo(()=>el(t,s,a),[t,s,a]),u=m.useCallback(x=>{const b=Object.entries(x).filter(([,f])=>f.length>0).map(([f,p])=>[f,"in",p]);r(b)},[r]),h=(x,b)=>{const f={...c,[x]:b};i(f),u(f)};m.useEffect(()=>{Object.values(c).some(b=>b.length>0)&&u(c)},[]);const n=l!==void 0&&l<o.length?o.slice(0,l):o,k=l!==void 0&&l<o.length?o.slice(l):[],w=x=>{const b=c[x.field]||[],f=b.length>0;return e.jsxs(xt,{children:[e.jsx(gt,{asChild:!0,children:e.jsxs("button",{"data-testid":`filter-badge-${x.field}`,className:V("inline-flex items-center gap-1 rounded-full border h-7 px-2.5 text-xs font-medium transition-colors shrink-0",f?"border-primary/30 bg-primary/5 text-primary":"border-border bg-background hover:bg-accent text-foreground"),children:[e.jsx("span",{className:"truncate max-w-[100px]",children:x.label||x.field}),f&&e.jsx("span",{className:"flex h-4 min-w-[16px] items-center justify-center rounded-full bg-primary/10 text-[10px]",children:b.length}),f?e.jsx(ss,{className:"h-3 w-3 opacity-60","data-testid":`filter-clear-${x.field}`,onClick:p=>{p.stopPropagation(),h(x.field,[])}}):e.jsx(Dt,{className:"h-3 w-3 opacity-60"})]})}),e.jsx(bt,{align:"start",className:"w-56 p-2",children:e.jsx("div",{className:"max-h-60 overflow-y-auto space-y-0.5","data-testid":`filter-options-${x.field}`,children:x.options.map(p=>e.jsxs("label",{className:V("flex items-center gap-2 text-sm py-1.5 px-2 rounded cursor-pointer",b.includes(p.value)?"bg-primary/5 text-primary":"hover:bg-muted"),children:[e.jsx("input",{type:"checkbox",checked:b.includes(p.value),onChange:()=>{const g=b.includes(p.value)?b.filter(y=>y!==p.value):[...b,p.value];h(x.field,g)},className:"rounded border-input"}),p.color&&e.jsx("span",{className:"h-2.5 w-2.5 rounded-full shrink-0",style:{backgroundColor:p.color}}),e.jsx("span",{className:"truncate flex-1",children:p.label}),p.count!==void 0&&e.jsx("span",{className:"text-xs text-muted-foreground",children:p.count})]},String(p.value)))})})]},x.field)};return e.jsxs("div",{className:V("flex items-center gap-1 overflow-x-auto",d),"data-testid":"user-filters-dropdown",children:[e.jsx(or,{className:"h-3.5 w-3.5 text-muted-foreground shrink-0"}),o.length===0?e.jsx("span",{className:"text-xs text-muted-foreground","data-testid":"user-filters-empty",children:"No filter fields"}):e.jsxs(e.Fragment,{children:[n.map(w),k.length>0&&e.jsxs(xt,{children:[e.jsx(gt,{asChild:!0,children:e.jsxs("button",{"data-testid":"user-filters-more",className:"inline-flex items-center gap-1 rounded-full border border-border bg-background hover:bg-accent text-foreground h-7 px-2.5 text-xs font-medium transition-colors shrink-0",children:[e.jsx("span",{children:"More"}),e.jsx("span",{className:"flex h-4 min-w-[16px] items-center justify-center rounded-full bg-muted text-[10px] font-medium",children:k.length}),e.jsx(Dt,{className:"h-3 w-3 opacity-60"})]})}),e.jsx(bt,{align:"start",className:"w-64 p-2","data-testid":"user-filters-more-content",children:e.jsx("div",{className:"space-y-1",children:k.map(w)})})]})]})]})}function sl({tabs:t,showAllRecords:s,allowAddTab:a,onFilterChange:r,className:l}){const[d,c]=m.useState(()=>t.find(h=>h.default)?.id||(s?"__all__":t[0]?.id||"")),i=m.useCallback(u=>{if(c(u),u==="__all__")r([]);else{const h=t.find(n=>n.id===u);r(h?.filters||[])}},[t,r]),o=m.useMemo(()=>{const u=[...t];return s&&u.push({id:"__all__",label:"All records",filters:[]}),u},[t,s]);return m.useEffect(()=>{const u=t.find(h=>h.default);u&&r(u.filters||[])},[]),e.jsxs("div",{className:V("flex items-center gap-0.5 overflow-x-auto",l),"data-testid":"user-filters-tabs",children:[o.map(u=>e.jsx("button",{"data-testid":`filter-tab-${u.id}`,onClick:()=>i(u.id),className:V("inline-flex items-center h-7 px-3 text-xs font-medium rounded-md transition-colors shrink-0",d===u.id?"bg-primary text-primary-foreground":"text-muted-foreground hover:text-foreground hover:bg-muted"),children:u.label},u.id)),a&&e.jsx("button",{className:"inline-flex items-center justify-center h-7 w-7 rounded-md text-muted-foreground hover:text-foreground hover:bg-muted shrink-0","data-testid":"filter-tab-add",title:"Add filter tab",children:e.jsx(Qe,{className:"h-3.5 w-3.5"})})]})}function al({fields:t,onFilterChange:s,className:a}){const[r,l]=m.useState(()=>{const i=new Set;return t.forEach(o=>{o.defaultValues&&o.defaultValues.length>0&&i.add(o.field)}),i}),d=m.useCallback(i=>{const o=Array.from(i).map(u=>{const h=t.find(n=>n.field===u);return h?.defaultValues?[u,"in",h.defaultValues]:[u,"!=",null]});s(o)},[t,s]),c=i=>{l(o=>{const u=new Set(o);return u.has(i)?u.delete(i):u.add(i),d(u),u})};return m.useEffect(()=>{r.size>0&&d(r)},[]),e.jsx("div",{className:V("flex items-center gap-1 overflow-x-auto",a),"data-testid":"user-filters-toggle",children:t.map(i=>{const o=r.has(i.field);return e.jsx(B,{variant:o?"default":"outline",size:"sm",className:"h-7 px-3 text-xs shrink-0","data-testid":`filter-toggle-${i.field}`,onClick:()=>c(i.field),children:i.label||i.field},i.field)})})}const zs={xs:0,sm:640,md:768,lg:1024,xl:1280,"2xl":1536},Et=["xs","sm","md","lg","xl","2xl"];function rl(t){for(let s=Et.length-1;s>=0;s--){const a=Et[s];if(t>=zs[a])return a}return"xs"}function nl(){const[t,s]=m.useState(()=>typeof window<"u"?window.innerWidth:1024);m.useEffect(()=>{if(typeof window>"u")return;let l;const d=()=>{clearTimeout(l),l=setTimeout(()=>{s(window.innerWidth)},100)};return window.addEventListener("resize",d),()=>{clearTimeout(l),window.removeEventListener("resize",d)}},[]);const a=rl(t),r=Et.indexOf(a);return{breakpoint:a,width:t,isMobile:r<Et.indexOf("md"),isTablet:r>=Et.indexOf("md")&&r<Et.indexOf("lg"),isDesktop:r>=Et.indexOf("lg"),isAbove:l=>t>=zs[l],isBelow:l=>t<zs[l]}}function ll(t){const{onRefresh:s,threshold:a=80,enabled:r=!0}=t,l=m.useRef(null),[d,c]=m.useState(!1),[i,o]=m.useState(0),u=m.useRef(0),h=m.useCallback(w=>{if(!r||d)return;const x=l.current;x&&x.scrollTop===0&&(u.current=w.touches[0].clientY)},[r,d]),n=m.useCallback(w=>{if(!r||d||!u.current)return;const b=w.touches[0].clientY-u.current;b>0&&o(Math.min(b,a*1.5))},[r,d,a]),k=m.useCallback(async()=>{if(!r||d)return;const w=i;if(o(0),u.current=0,w>=a){c(!0);try{await s()}finally{c(!1)}}},[r,d,i,a,s]);return m.useEffect(()=>{const w=l.current;if(!(!w||!r))return w.addEventListener("touchstart",h,{passive:!0}),w.addEventListener("touchmove",n,{passive:!0}),w.addEventListener("touchend",k,{passive:!0}),()=>{w.removeEventListener("touchstart",h),w.removeEventListener("touchmove",n),w.removeEventListener("touchend",k)}},[h,n,k,r]),{ref:l,isRefreshing:d,pullDistance:i}}const Cr=m.createContext(null);Cr.displayName="MobileContext";function Ro({pwa:t,offline:s,children:a}){const r=nl(),l=m.useMemo(()=>({...r,pwa:t,offline:s}),[r,t,s]);return e.jsx(Cr.Provider,{value:l,children:a})}function il(t){switch(t){case"equals":case"eq":return"=";case"notEquals":case"ne":case"neq":return"!=";case"contains":return"contains";case"notContains":return"notcontains";case"greaterThan":case"gt":return">";case"greaterOrEqual":case"gte":return">=";case"lessThan":case"lt":return"<";case"lessOrEqual":case"lte":return"<=";case"in":return"in";case"notIn":return"not in";case"before":return"<";case"after":return">";default:return t}}function Sr(t){if(!Array.isArray(t)||t.length<3)return t;const[s,a,r]=t;return typeof s=="string"&&(s==="and"||s==="or")?[s,...t.slice(1).map(l=>Array.isArray(l)?Sr(l):l)]:a==="in"&&Array.isArray(r)?r.length===0?[]:r.length===1?[s,"=",r[0]]:["or",...r.map(l=>[s,"=",l])]:a==="not in"&&Array.isArray(r)?r.length===0?[]:r.length===1?[s,"!=",r[0]]:["and",...r.map(l=>[s,"!=",l])]:t}function ol(t){return t.replace(/_/g," ").replace(/\b\w/g,s=>s.toUpperCase())}function kr(t){return!Array.isArray(t)||t.length===0?[]:t.map(s=>Array.isArray(s)?Sr(s):s).filter(s=>Array.isArray(s)&&s.length>0)}function cl(t){if(!t||!t.conditions||t.conditions.length===0)return[];const s=t.conditions.map(r=>r.operator==="isEmpty"?[r.field,"=",null]:r.operator==="isNotEmpty"?[r.field,"!=",null]:[r.field,il(r.operator),r.value]),a=kr(s);return a.length===0?[]:a.length===1?a[0]:[t.logic,...a]}const ua={"list.recordCount":"{{count}} records","list.recordCountOne":"{{count}} record","list.noItems":"No items found","list.noItemsMessage":"There are no records to display. Try adjusting your filters or adding new data.","list.search":"Search","list.filter":"Filter","list.filterRecords":"Filter Records","list.sort":"Sort","list.sortRecords":"Sort Records","list.group":"Group","list.groupBy":"Group By","list.export":"Export","list.exportAs":"Export as {{format}}","list.color":"Color","list.rowColor":"Row Color","list.colorByField":"Color by field","list.clear":"Clear","list.none":"None","list.hideFields":"Hide fields","list.showAll":"Show all","list.pullToRefresh":"Pull to refresh","list.refreshing":"Refreshing…","list.dataLimitReached":"Showing first {{limit}} records. More data may be available.","list.addRecord":"Add record","list.tabs":"Tabs","list.allRecords":"All Records","list.share":"Share","list.print":"Print","list.hideFieldsTitle":"Hide Fields"};function dl(){try{const t=Nr();return t.t("list.recordCount")==="list.recordCount"?{t:(a,r)=>{let l=ua[a]||a;if(r)for(const[d,c]of Object.entries(r))l=l.replace(`{{${d}}}`,String(c));return l}}:{t:t.t}}catch{return{t:(t,s)=>{let a=ua[t]||t;if(s)for(const[r,l]of Object.entries(s))a=a.replace(`{{${r}}}`,String(l));return a}}}}function ul(){try{const{fieldLabel:t}=Un();return{fieldLabel:t}}catch{return{fieldLabel:(t,s,a)=>a}}}const Dr=({schema:t,className:s,onViewChange:a,onFilterChange:r,onSortChange:l,onSearchChange:d,onRowClick:c,showViewSwitcher:i=!1,...o})=>{const{t:u}=dl(),{fieldLabel:h}=ul(),n=m.useMemo(()=>({...t,viewType:t.viewType||"grid"}),[t]),k=m.useCallback((v,E)=>n.objectName?h(n.objectName,v,E):E,[n.objectName,h]),w=m.useMemo(()=>{const v=n.userActions,E=n.addRecord?.enabled===!0&&v?.addRecordForm!==!1;return{showSearch:v?.search!==void 0?v.search:n.showSearch!==!1,showSort:v?.sort!==void 0?v.sort:n.showSort!==!1,showFilters:v?.filter!==void 0?v.filter:n.showFilters!==!1,showDensity:v?.rowHeight!==void 0?v.rowHeight:n.showDensity===!0,showHideFields:n.showHideFields===!0,showGroup:n.showGroup!==!1,showColor:n.showColor===!0,showAddRecord:E,addRecordPosition:n.addRecord?.position==="bottom"?"bottom":"top"}},[n.userActions,n.showSearch,n.showSort,n.showFilters,n.showDensity,n.showHideFields,n.showGroup,n.showColor,n.addRecord,n.userActions?.addRecordForm]),[x,b]=m.useState(n.viewType),[f,p]=m.useState(""),[g,y]=m.useState(!1),[N,D]=m.useState(!1),[R,j]=m.useState(()=>n.sort&&n.sort.length>0?n.sort.map(v=>{if(typeof v=="string"){const E=v.trim().split(/\s+/);return{id:crypto.randomUUID(),field:E[0],order:E[1]?.toLowerCase()==="desc"?"desc":"asc"}}return{id:crypto.randomUUID(),field:v.field,order:v.order||"asc"}}):[]),[S,T]=m.useState(!1),[$,F]=m.useState({id:"root",logic:"and",conditions:[]}),[A,_]=m.useState(()=>!n.tabs||n.tabs.length===0?void 0:n.tabs.find(E=>E.isDefault)?.name??n.tabs[0]?.name),L=m.useCallback(v=>{if(_(v.name),v.filter){const E={id:`tab-filter-${v.name}`,logic:v.filter.logic||"and",conditions:v.filter.conditions||[]};F(E),r?.(E)}else{const E={id:"root",logic:"and",conditions:[]};F(E),r?.(E)}},[r]),O=o.dataSource,[P,C]=m.useState([]),[z,I]=m.useState(!1),[W,le]=m.useState(null),[me,de]=m.useState(!1),[Z,fe]=m.useState(0),[Y,ee]=m.useState(!1),[xe,te]=m.useState(void 0),ae=xe??n.pagination?.pageSize??100,[G,H]=m.useState(n.grouping),[X,J]=m.useState(!1),[pe,ge]=m.useState(n.rowColor),[Te,Ue]=m.useState(!1),[be,he]=m.useState([]),Re=m.useRef(0),[Ne,We]=m.useState(()=>{const v=new Set;return n.quickFilters?.forEach(E=>{const M=ln(E);M.defaultActive&&v.add(M.id)}),v}),[Ft,Ye]=m.useState([]),ct=m.useMemo(()=>{if(n.userFilters)return n.userFilters;if(!W?.fields)return;const v=new Set(["select","multi-select","boolean"]),E=[],M=Array.isArray(W.fields)?W.fields.map(q=>[q.name,q]):Object.entries(W.fields);for(const[q,U]of M)(v.has(U.type)||U.options&&!U.type)&&E.push({field:q,label:k(q,U.label||q),type:U.type==="boolean"?"boolean":U.type==="multi-select"?"multi-select":"select"});if(E.length!==0)return{element:"dropdown",fields:E}},[n.userFilters,W]),[Ae,Ve]=m.useState(()=>new Set(n.hiddenFields||[])),[jt,wt]=m.useState(!1),[st,Ge]=m.useState(!1),Xe=m.useMemo(()=>on(n.quickFilters),[n.quickFilters]),Ke=m.useMemo(()=>{if(n.exportOptions)return Array.isArray(n.exportOptions)?{formats:n.exportOptions}:n.exportOptions},[n.exportOptions]),_t=m.useMemo(()=>n.densityMode?n.densityMode:n.rowHeight?{compact:"compact",short:"compact",medium:"comfortable",tall:"spacious",extra_tall:"spacious"}[n.rowHeight]||"comfortable":"compact",[n.densityMode,n.rowHeight]),dt=cn(_t),Le=m.useCallback(async()=>{fe(v=>v+1)},[]),{ref:Gt,isRefreshing:It,pullDistance:Ze}=ll({onRefresh:Le,enabled:!!O&&!!n.objectName}),Ot=m.useMemo(()=>n.id?`listview-${n.objectName}-${n.id}-view`:`listview-${n.objectName}-view`,[n.objectName,n.id]);m.useEffect(()=>{let v=!0;return de(!1),le(null),(async()=>{if(!O||!n.objectName){de(!0);return}try{const M=await O.getObjectSchema(n.objectName);v&&le(M)}catch(M){console.warn("Failed to fetch object schema for ListView:",M)}finally{v&&de(!0)}})(),()=>{v=!1}},[n.objectName,O]);const re=m.useMemo(()=>_s(W?.fields,n.fields),[W?.fields,n.fields]);m.useEffect(()=>{let v=!0;const E=++Re.current;if(n.data&&typeof n.data=="object"&&!Array.isArray(n.data)){const q=n.data;if(q.provider==="value"&&Array.isArray(q.items)){let U=q.items;if(f){const K=f.toLowerCase();U=U.filter(Q=>Object.values(Q).some(oe=>oe!=null&&String(oe).toLowerCase().includes(K)))}C(U),I(!1),ee(!1);return}}if(Array.isArray(n.data)){let q=n.data;if(f){const U=f.toLowerCase();q=q.filter(K=>Object.values(K).some(Q=>Q!=null&&String(Q).toLowerCase().includes(U)))}C(q),I(!1),ee(!1);return}return me?((async()=>{if(!(!O||!n.objectName)){I(!0);try{let q=[];const U=n.filters||[],K=cl($),Q=[];Xe&&Ne.size>0&&Xe.forEach(Fe=>{Ne.has(Fe.id)&&Fe.filters&&Fe.filters.length>0&&Q.push(Fe.filters)});const oe=kr(Ft),se=[...U.length>0?[U]:[],...K.length>0?[K]:[],...Q,...oe].filter(Fe=>Array.isArray(Fe)&&Fe.length>0);se.length>1?q=["and",...se]:se.length===1&&(q=se[0]);const ke=R.length>0?R.filter(Fe=>Fe.field).map(Fe=>({field:Fe.field,order:Fe.order})):void 0,ze=await O.find(n.objectName,{$filter:q,$orderby:ke,$top:ae,...re.length>0?{$expand:re}:{},...f?{$search:f,...n.searchableFields&&n.searchableFields.length>0?{$searchFields:n.searchableFields}:{}}:{}});if(!v||E!==Re.current)return;let je=[];Array.isArray(ze)?je=ze:ze&&typeof ze=="object"&&(Array.isArray(ze.data)?je=ze.data:Array.isArray(ze.records)&&(je=ze.records)),C(je),ee(je.length>=ae)}catch(q){E===Re.current&&console.error("ListView data fetch error:",q)}finally{v&&E===Re.current&&I(!1)}}})(),()=>{v=!1}):void 0},[n.objectName,n.data,O,n.filters,ae,R,$,Ne,Xe,Ft,Z,f,n.searchableFields,re,me]);const ie=m.useMemo(()=>{if(n.appearance?.allowedVisualizations&&n.appearance.allowedVisualizations.length>0)return n.appearance.allowedVisualizations.filter(E=>["grid","kanban","gallery","calendar","timeline","gantt","map"].includes(E));const v=["grid"];return(n.kanban?.groupField||n.options?.kanban?.groupField)&&v.push("kanban"),(n.gallery?.coverField||n.gallery?.imageField||n.options?.gallery?.imageField)&&v.push("gallery"),(n.calendar?.startDateField||n.options?.calendar?.startDateField)&&v.push("calendar"),(n.timeline?.startDateField||n.options?.timeline?.startDateField||n.options?.timeline?.dateField||n.options?.calendar?.startDateField)&&v.push("timeline"),(n.gantt?.startDateField||n.options?.gantt?.startDateField)&&v.push("gantt"),(n.options?.map?.locationField||n.options?.map?.latitudeField&&n.options?.map?.longitudeField)&&v.push("map"),n.viewType&&!v.includes(n.viewType)&&["grid","kanban","calendar","timeline","gantt","map","gallery"].includes(n.viewType)&&v.push(n.viewType),v},[n.options,n.viewType,n.kanban,n.calendar,n.gantt,n.gallery,n.timeline,n.appearance?.allowedVisualizations]);m.useEffect(()=>{n.viewType&&b(n.viewType)},[n.viewType]);const ye=m.useCallback(v=>{b(v);try{localStorage.setItem(Ot,v)}catch(E){console.warn("Failed to save view preference to localStorage:",E)}a?.(v)},[Ot,a]),ue=m.useCallback(v=>{p(v),d?.(v)},[d]),ve=Qa({navigation:n.navigation,objectName:n.objectName,onNavigate:n.onNavigate,onRowClick:c}),Ce=m.useMemo(()=>{let v=n.fields||[];if(Array.isArray(v)||(v=[]),Ae.size>0&&(v=v.filter(E=>{const M=typeof E=="string"?E:E?.name||E?.fieldName||E?.field;return M!=null&&!Ae.has(M)})),n.fieldOrder&&n.fieldOrder.length>0){const E=new Map(n.fieldOrder.map((M,q)=>[M,q]));v=[...v].sort((M,q)=>{const U=typeof M=="string"?M:M?.name||M?.fieldName||M?.field,K=typeof q=="string"?q:q?.name||q?.fieldName||q?.field,Q=E.get(U)??1/0,oe=E.get(K)??1/0;return Q-oe})}return v},[n.fields,Ae,n.fieldOrder]),Me=m.useMemo(()=>{const v={objectName:n.objectName,fields:Ce,filters:n.filters,sort:R,className:"h-full w-full",showSearch:!1,onRowClick:ve.handleClick,...n.striped!=null?{striped:n.striped}:{},...n.bordered!=null?{bordered:n.bordered}:{}};switch(x){case"grid":return{type:"object-grid",...v,columns:Ce,...n.conditionalFormatting?{conditionalFormatting:n.conditionalFormatting}:{},...n.inlineEdit!=null?{editable:n.inlineEdit}:{},...n.wrapHeaders!=null?{wrapHeaders:n.wrapHeaders}:{},...n.virtualScroll!=null?{virtualScroll:n.virtualScroll}:{},...n.resizable!=null?{resizable:n.resizable}:{},...n.selection?{selection:n.selection}:{},...n.pagination?{pagination:n.pagination}:{},...G?{grouping:G}:{},...pe?{rowColor:pe}:{},...n.rowActions?{rowActions:n.rowActions}:{},...n.bulkActions?{batchActions:n.bulkActions}:{},...n.options?.grid||{}};case"kanban":return{type:"object-kanban",...v,groupBy:n.kanban?.groupField||n.options?.kanban?.groupField||"status",groupField:n.kanban?.groupField||n.options?.kanban?.groupField||"status",titleField:n.kanban?.titleField||n.options?.kanban?.titleField||"name",cardFields:n.kanban?.cardFields||Ce||[],...G?{grouping:G}:{},...n.options?.kanban||{},...n.kanban||{}};case"calendar":return{type:"object-calendar",...v,startDateField:n.calendar?.startDateField||n.options?.calendar?.startDateField||"start_date",endDateField:n.calendar?.endDateField||n.options?.calendar?.endDateField||"end_date",titleField:n.calendar?.titleField||n.options?.calendar?.titleField||"name",...n.calendar?.defaultView?{defaultView:n.calendar.defaultView}:{},...n.options?.calendar||{},...n.calendar||{}};case"gallery":{const E={...n.options?.gallery||{},...n.gallery||{}};return{type:"object-gallery",...v,gallery:Object.keys(E).length>0?E:void 0,imageField:n.gallery?.coverField||n.gallery?.imageField||n.options?.gallery?.imageField,titleField:n.gallery?.titleField||n.options?.gallery?.titleField||"name",subtitleField:n.gallery?.subtitleField||n.options?.gallery?.subtitleField,...G?{grouping:G}:{}}}case"timeline":{const E={...n.options?.timeline||{},...n.timeline||{}};return{type:"object-timeline",...v,timeline:Object.keys(E).length>0?E:void 0,startDateField:n.timeline?.startDateField||n.options?.timeline?.startDateField||n.options?.timeline?.dateField||"created_at",titleField:n.timeline?.titleField||n.options?.timeline?.titleField||"name",...n.timeline?.endDateField?{endDateField:n.timeline.endDateField}:{},...n.timeline?.groupByField?{groupByField:n.timeline.groupByField}:{},...n.timeline?.colorField?{colorField:n.timeline.colorField}:{},...n.timeline?.scale?{scale:n.timeline.scale}:{}}}case"gantt":return{type:"object-gantt",...v,startDateField:n.gantt?.startDateField||n.options?.gantt?.startDateField||"start_date",endDateField:n.gantt?.endDateField||n.options?.gantt?.endDateField||"end_date",progressField:n.gantt?.progressField||n.options?.gantt?.progressField||"progress",dependenciesField:n.gantt?.dependenciesField||n.options?.gantt?.dependenciesField||"dependencies",...n.gantt?.titleField?{titleField:n.gantt.titleField}:{},...n.options?.gantt||{},...n.gantt||{}};case"map":return{type:"object-map",...v,locationField:n.options?.map?.locationField||"location",...n.options?.map||{}};default:return v}},[x,n,R,Ce,G,pe,ve.handleClick]),Ee=$.conditions&&$.conditions.length>0,_e=m.useMemo(()=>{let v;if(W?.fields?v=Object.entries(W.fields).map(([E,M])=>({value:E,label:k(E,M.label||E),type:M.type||"text",options:M.options})):v=(n.fields||[]).map(E=>{if(typeof E=="string")return{value:E,label:E,type:"text"};const M=E.name||E.fieldName;return{value:M,label:k(M,E.label||E.name),type:E.type||"text",options:E.options}}),n.filterableFields&&n.filterableFields.length>0){const E=new Set(n.filterableFields);v=v.filter(M=>E.has(M.value))}return v},[W,n.fields,n.filterableFields]),He=m.useCallback(v=>{We(E=>{const M=new Set(E);return M.has(v)?M.delete(v):M.add(v),M})},[]),at=m.useCallback(v=>{const E=Ke,M=E?.maxRecords||0,q=E?.includeHeaders!==!1,U=E?.fileNamePrefix||n.objectName||"export",K=M>0?P.slice(0,M):P;if(v==="csv"){const Q=Ce.map(je=>typeof je=="string"?je:je.name||je.fieldName||je.field),oe=[];q&&oe.push(Q.join(",")),K.forEach(je=>{oe.push(Q.map(Fe=>{const et=je[Fe];let ne;return et==null?ne="":Array.isArray(et)?ne=et.map(ut=>ut!=null&&typeof ut=="object"?JSON.stringify(ut):String(ut??"")).join("; "):typeof et=="object"?ne=JSON.stringify(et):ne=String(et),ne.includes(",")||ne.includes('"')||ne.includes(`
2
+ `)||ne.includes("\r")?`"${ne.replace(/"/g,'""')}"`:ne}).join(","))});const se=new Blob([oe.join(`
3
+ `)],{type:"text/csv;charset=utf-8;"}),ke=URL.createObjectURL(se),ze=document.createElement("a");ze.href=ke,ze.download=`${U}.csv`,ze.click(),URL.revokeObjectURL(ke)}else if(v==="json"){const Q=new Blob([JSON.stringify(K,null,2)],{type:"application/json"}),oe=URL.createObjectURL(Q),se=document.createElement("a");se.href=oe,se.download=`${U}.json`,se.click(),URL.revokeObjectURL(oe)}Ge(!1)},[P,Ce,Ke,n.objectName]),Je=m.useMemo(()=>(n.fields||[]).map(v=>{if(typeof v=="string")return{name:v,label:k(v,v)};const E=v.name||v.fieldName||v.field,M=v.label||v.name||v.field;return{name:E,label:k(E,M)}}),[n.fields,k]);return e.jsxs("div",{ref:Gt,className:V("flex flex-col h-full bg-background relative min-w-0 overflow-hidden",s),...n.aria?.label?{"aria-label":n.aria.label}:{},...n.aria?.describedBy?{"aria-describedby":n.aria.describedBy}:{},...n.aria?.live?{"aria-live":n.aria.live}:{},role:"region",children:[Ze>0&&e.jsx("div",{className:"flex items-center justify-center text-xs text-muted-foreground",style:{height:Ze},children:u(It?"list.refreshing":"list.pullToRefresh")}),i&&e.jsx("div",{className:"border-b px-4 py-1 flex items-center bg-background",children:e.jsx(Xn,{currentView:x,availableViews:ie,onViewChange:ye})}),n.tabs&&n.tabs.length>0&&e.jsx(Qn,{tabs:n.tabs,activeTab:A,onTabChange:L}),n.description&&n.appearance?.showDescription!==!1&&e.jsx("div",{className:"border-b px-4 py-1.5 text-xs text-muted-foreground bg-background","data-testid":"view-description",children:typeof n.description=="string"?n.description:""}),e.jsxs("div",{className:"border-b px-2 sm:px-4 py-1 flex items-center justify-between gap-1 sm:gap-2 bg-background",children:[e.jsx("div",{className:"flex items-center gap-0.5 overflow-x-auto min-w-0",children:ct&&e.jsx("div",{className:"shrink-0 min-w-0","data-testid":"user-filters",children:e.jsx(Zn,{config:ct,objectDef:W,data:P,onFilterChange:Ye,maxVisible:3})})}),e.jsxs("div",{className:"flex items-center gap-0.5 shrink-0",children:[w.showHideFields&&e.jsxs(xt,{open:jt,onOpenChange:wt,children:[e.jsx(gt,{asChild:!0,children:e.jsxs(B,{variant:"ghost",size:"sm",className:V("h-7 px-2 text-muted-foreground hover:text-primary text-xs transition-colors duration-150",Ae.size>0&&"text-primary"),children:[e.jsx(Nn,{className:"h-3.5 w-3.5 mr-1.5"}),e.jsx("span",{className:"hidden sm:inline",children:u("list.hideFields")}),Ae.size>0&&e.jsx("span",{className:"ml-1 flex h-4 min-w-[16px] items-center justify-center rounded-full bg-primary/10 text-[10px] font-medium text-primary",children:Ae.size})]})}),e.jsx(bt,{align:"start",className:"w-64 p-3",children:e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between border-b pb-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:u("list.hideFieldsTitle")}),Ae.size>0&&e.jsx(B,{variant:"ghost",size:"sm",className:"h-6 px-2 text-xs",onClick:()=>Ve(new Set),children:u("list.showAll")})]}),e.jsx("div",{className:"max-h-60 overflow-y-auto space-y-1",children:Je.map(v=>e.jsxs("label",{className:"flex items-center gap-2 text-sm py-1 px-1 rounded hover:bg-muted cursor-pointer",children:[e.jsx("input",{type:"checkbox",checked:!Ae.has(v.name),onChange:()=>{Ve(E=>{const M=new Set(E);return M.has(v.name)?M.delete(v.name):M.add(v.name),M})},className:"rounded border-input"}),e.jsx("span",{className:"truncate",children:v.label})]},v.name))})]})})]}),w.showHideFields&&(w.showFilters||w.showSort||w.showGroup)&&e.jsx("div",{className:"h-4 w-px bg-border/60 mx-0.5 shrink-0"}),w.showFilters&&e.jsxs(xt,{open:S,onOpenChange:T,children:[e.jsx(gt,{asChild:!0,children:e.jsxs(B,{variant:"ghost",size:"sm",className:V("h-7 px-2 text-muted-foreground hover:text-primary text-xs transition-colors duration-150",Ee&&"bg-primary/10 border border-primary/20 text-primary"),children:[e.jsx(or,{className:"h-3.5 w-3.5 mr-1.5"}),e.jsx("span",{className:"hidden sm:inline",children:u("list.filter")}),Ee&&e.jsx("span",{className:"ml-1 flex h-4 min-w-[16px] items-center justify-center rounded-full bg-primary/10 text-[10px] font-medium text-primary",children:$.conditions?.length||0})]})}),e.jsx(bt,{align:"start",className:"w-[calc(100vw-2rem)] sm:w-[600px] max-w-[600px] p-3 sm:p-4",children:e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"flex items-center justify-between border-b pb-2",children:e.jsx("h4",{className:"font-medium text-sm",children:u("list.filterRecords")})}),e.jsx(fn,{fields:_e,value:$,onChange:v=>{F(v),r&&r(v)}})]})})]}),w.showGroup&&e.jsxs(xt,{open:X,onOpenChange:J,children:[e.jsx(gt,{asChild:!0,children:e.jsxs(B,{variant:"ghost",size:"sm",className:V("h-7 px-2 text-muted-foreground hover:text-primary text-xs transition-colors duration-150",G&&"bg-primary/10 border border-primary/20 text-primary"),children:[e.jsx(Cn,{className:"h-3.5 w-3.5 mr-1.5"}),e.jsx("span",{className:"hidden sm:inline",children:u("list.group")}),G&&G.fields?.length>0&&e.jsx("span",{className:"ml-1 flex h-4 min-w-[16px] items-center justify-center rounded-full bg-primary/10 text-[10px] font-medium text-primary",children:G.fields.length})]})}),e.jsx(bt,{align:"start",className:"w-64 p-3",children:e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between border-b pb-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:u("list.groupBy")}),G&&e.jsx(B,{variant:"ghost",size:"sm",className:"h-6 px-2 text-xs",onClick:()=>H(void 0),"data-testid":"clear-grouping",children:u("list.clear")})]}),e.jsx("div",{className:"max-h-60 overflow-y-auto space-y-1","data-testid":"group-field-list",children:Je.map(v=>{const E=G?.fields?.some(M=>M.field===v.name);return e.jsxs("label",{className:"flex items-center gap-2 text-sm py-1 px-1 rounded hover:bg-muted cursor-pointer",children:[e.jsx("input",{type:"checkbox",checked:!!E,onChange:()=>{if(E){const M=(G?.fields||[]).filter(q=>q.field!==v.name);H(M.length>0?{fields:M}:void 0)}else{const M=G?.fields||[];H({fields:[...M,{field:v.name,order:"asc",collapsed:!1}]})}},className:"rounded border-input"}),e.jsx("span",{className:"truncate",children:v.label})]},v.name)})})]})})]}),w.showSort&&e.jsxs(xt,{open:N,onOpenChange:D,children:[e.jsx(gt,{asChild:!0,children:e.jsxs(B,{variant:"ghost",size:"sm",className:V("h-7 px-2 text-muted-foreground hover:text-primary text-xs transition-colors duration-150",R.length>0&&"bg-primary/10 border border-primary/20 text-primary"),children:[e.jsx(cr,{className:"h-3.5 w-3.5 mr-1.5"}),e.jsx("span",{className:"hidden sm:inline",children:u("list.sort")}),R.length>0&&e.jsx("span",{className:"ml-1 flex h-4 min-w-[16px] items-center justify-center rounded-full bg-primary/10 text-[10px] font-medium text-primary",children:R.length})]})}),e.jsx(bt,{align:"start",className:"w-[calc(100vw-2rem)] sm:w-[600px] max-w-[600px] p-3 sm:p-4",children:e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"flex items-center justify-between border-b pb-2",children:e.jsx("h4",{className:"font-medium text-sm",children:u("list.sortRecords")})}),e.jsx(mn,{fields:_e,value:R,onChange:v=>{j(v),l&&l(v)}})]})})]}),(w.showFilters||w.showSort||w.showGroup)&&(w.showColor||w.showDensity)&&e.jsx("div",{className:"h-4 w-px bg-border/60 mx-0.5 shrink-0"}),w.showColor&&e.jsxs(xt,{open:Te,onOpenChange:Ue,children:[e.jsx(gt,{asChild:!0,children:e.jsxs(B,{variant:"ghost",size:"sm",className:V("h-7 px-2 text-muted-foreground hover:text-primary text-xs transition-colors duration-150",pe&&"bg-primary/10 border border-primary/20 text-primary"),children:[e.jsx(Sn,{className:"h-3.5 w-3.5 mr-1.5"}),e.jsx("span",{className:"hidden sm:inline",children:u("list.color")})]})}),e.jsx(bt,{align:"start",className:"w-64 p-3",children:e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between border-b pb-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:u("list.rowColor")}),pe&&e.jsx(B,{variant:"ghost",size:"sm",className:"h-6 px-2 text-xs",onClick:()=>ge(void 0),"data-testid":"clear-row-color",children:u("list.clear")})]}),e.jsxs("div",{className:"space-y-2","data-testid":"color-field-list",children:[e.jsx("label",{className:"text-xs text-muted-foreground",children:u("list.colorByField")}),e.jsxs("select",{className:"w-full h-8 rounded border border-input bg-background px-2 text-xs",value:pe?.field||"",onChange:v=>{const E=v.target.value;ge(E?{field:E,colors:pe?.colors||{}}:void 0)},"data-testid":"color-field-select",children:[e.jsx("option",{value:"",children:u("list.none")}),Je.map(v=>e.jsx("option",{value:v.name,children:v.label},v.name))]})]})]})})]}),w.showDensity&&e.jsxs(B,{variant:"ghost",size:"sm",className:V("h-7 px-2 text-muted-foreground hover:text-primary text-xs hidden lg:flex transition-colors duration-150",dt.mode!=="compact"&&"bg-primary/10 border border-primary/20 text-primary"),onClick:dt.cycle,title:`Density: ${dt.mode}`,children:[e.jsx(kn,{className:"h-3.5 w-3.5 mr-1.5"}),e.jsx("span",{className:"hidden sm:inline capitalize",children:dt.mode})]}),(w.showColor||w.showDensity)&&Ke&&n.allowExport!==!1&&e.jsx("div",{className:"h-4 w-px bg-border/60 mx-0.5 shrink-0"}),Ke&&n.allowExport!==!1&&e.jsxs(xt,{open:st,onOpenChange:Ge,children:[e.jsx(gt,{asChild:!0,children:e.jsxs(B,{variant:"ghost",size:"sm",className:"h-7 px-2 text-muted-foreground hover:text-primary text-xs transition-colors duration-150",children:[e.jsx(Vt,{className:"h-3.5 w-3.5 mr-1.5"}),e.jsx("span",{className:"hidden sm:inline",children:u("list.export")})]})}),e.jsx(bt,{align:"start",className:"w-48 p-2",children:e.jsx("div",{className:"space-y-1",children:(Ke.formats||["csv","json"]).map(v=>e.jsxs(B,{variant:"ghost",size:"sm",className:"w-full justify-start h-8 text-xs",onClick:()=>at(v),children:[e.jsx(Vt,{className:"h-3.5 w-3.5 mr-2"}),u("list.exportAs",{format:v.toUpperCase()})]},v))})})]}),(n.sharing?.enabled||n.sharing?.type)&&e.jsxs(B,{variant:"ghost",size:"sm",className:"h-7 px-2 text-muted-foreground hover:text-primary text-xs transition-colors duration-150",title:`Sharing: ${n.sharing?.visibility||n.sharing?.type||"private"}`,"data-testid":"share-button",children:[e.jsx(Es,{className:"h-3.5 w-3.5 mr-1.5"}),e.jsx("span",{className:"hidden sm:inline",children:u("list.share")})]}),n.allowPrinting&&e.jsxs(B,{variant:"ghost",size:"sm",className:"h-7 px-2 text-muted-foreground hover:text-primary text-xs transition-colors duration-150",onClick:()=>window.print(),"data-testid":"print-button",children:[e.jsx(dr,{className:"h-3.5 w-3.5 mr-1.5"}),e.jsx("span",{className:"hidden sm:inline",children:u("list.print")})]}),(()=>{const v=n.allowPrinting||n.sharing?.enabled||n.sharing?.type||Ke&&n.allowExport!==!1;return w.showSearch&&v?e.jsx("div",{className:"h-4 w-px bg-border/60 mx-0.5 shrink-0"}):null})(),w.showSearch&&e.jsxs(xt,{open:g,onOpenChange:y,children:[e.jsx(gt,{asChild:!0,children:e.jsx(B,{variant:"ghost",size:"sm",className:V("h-7 w-7 p-0 text-muted-foreground hover:text-primary text-xs transition-colors duration-150",f&&"bg-primary/10 border border-primary/20 text-primary"),"data-testid":"search-icon-button",title:u("list.search"),children:e.jsx(As,{className:"h-3.5 w-3.5"})})}),e.jsx(bt,{align:"end",className:"w-[calc(100vw-2rem)] sm:w-64 p-2","data-testid":"search-popover",children:e.jsxs("div",{className:"relative",children:[e.jsx(As,{className:"absolute left-2 top-1/2 -translate-y-1/2 h-3.5 w-3.5 text-muted-foreground"}),e.jsx(qe,{placeholder:u("list.search")+"...",value:f,onChange:v=>ue(v.target.value),className:"pl-7 h-8 text-xs",autoFocus:!0}),f&&e.jsx(B,{variant:"ghost",size:"sm",className:"absolute right-0.5 top-1/2 -translate-y-1/2 h-5 w-5 p-0 hover:bg-muted-foreground/20",onClick:()=>ue(""),children:e.jsx(ss,{className:"h-3 w-3"})})]})})]}),w.showAddRecord&&w.addRecordPosition==="top"&&e.jsxs(B,{variant:"ghost",size:"sm",className:"h-7 px-2 text-muted-foreground hover:text-primary text-xs transition-colors duration-150","data-testid":"add-record-button",onClick:()=>o.onAddRecord?.(),children:[e.jsx(Qe,{className:"h-3.5 w-3.5 mr-1.5"}),e.jsx("span",{className:"hidden sm:inline",children:u("list.addRecord")})]})]})]}),Xe&&Xe.length>0&&e.jsx("div",{className:"border-b px-2 sm:px-4 py-1 flex items-center gap-1 flex-wrap bg-background","data-testid":"quick-filters",children:Xe.map(v=>{const E=Ne.has(v.id),M=v.icon?Ts[v.icon.split("-").map(q=>q.charAt(0).toUpperCase()+q.slice(1)).join("")]??null:null;return e.jsxs(B,{variant:E?"default":"outline",size:"sm",className:"h-7 px-3 text-xs",onClick:()=>He(v.id),children:[M&&e.jsx(M,{className:"h-3 w-3 mr-1.5"}),v.label]},v.id)})}),e.jsx("div",{className:"flex-1 min-h-0 bg-background relative overflow-hidden animate-in fade-in-0 duration-200",children:!z&&P.length===0?(()=>{const v=n.emptyState?.icon,E=v?Ts[v.split("-").map(M=>M.charAt(0).toUpperCase()+M.slice(1)).join("")]??ia:ia;return e.jsxs("div",{className:"flex flex-col items-center justify-center h-full min-h-[200px] text-center p-8","data-testid":"empty-state",children:[e.jsx(E,{className:"h-12 w-12 text-muted-foreground/50 mb-4"}),e.jsx("h3",{className:"text-lg font-medium text-foreground mb-1",children:(typeof n.emptyState?.title=="string"?n.emptyState.title:void 0)??"No items found"}),e.jsx("p",{className:"text-sm text-muted-foreground max-w-md",children:(typeof n.emptyState?.message=="string"?n.emptyState.message:void 0)??"There are no records to display. Try adjusting your filters or adding new data."})]})})():e.jsx(Ie,{schema:Me,...o,data:P,loading:z,onRowSelect:he})},x),w.showAddRecord&&w.addRecordPosition==="bottom"&&e.jsx("div",{className:"border-t px-2 sm:px-4 py-1 bg-background shrink-0",children:e.jsxs(B,{variant:"ghost",size:"sm",className:"h-7 px-2 text-muted-foreground hover:text-primary text-xs transition-colors duration-150","data-testid":"add-record-button",onClick:()=>o.onAddRecord?.(),children:[e.jsx(Qe,{className:"h-3.5 w-3.5 mr-1.5"}),e.jsx("span",{className:"hidden sm:inline",children:u("list.addRecord")})]})}),n.bulkActions&&n.bulkActions.length>0&&be.length>0&&x!=="grid"&&e.jsxs("div",{className:"border-t px-4 py-1.5 flex items-center gap-2 text-xs bg-primary/5 shrink-0","data-testid":"bulk-actions-bar",children:[e.jsxs("span",{className:"text-muted-foreground font-medium",children:[be.length," selected"]}),e.jsx("div",{className:"flex items-center gap-1 ml-2",children:n.bulkActions.map(v=>e.jsx(B,{variant:"outline",size:"sm",className:"h-6 px-2 text-xs",onClick:()=>o.onBulkAction?.(v,be),"data-testid":`bulk-action-${v}`,children:ol(v)},v))}),e.jsx(B,{variant:"ghost",size:"sm",className:"h-6 px-2 text-xs ml-auto",onClick:()=>he([]),children:"Clear"})]}),!z&&P.length>0&&n.showRecordCount!==!1&&e.jsxs("div",{className:"border-t px-4 py-1.5 flex items-center gap-2 text-xs text-muted-foreground bg-background shrink-0","data-testid":"record-count-bar",children:[e.jsx("span",{children:P.length===1?u("list.recordCountOne",{count:P.length}):u("list.recordCount",{count:P.length})}),Y&&e.jsx("span",{className:"text-amber-600","data-testid":"data-limit-warning",children:u("list.dataLimitReached",{limit:ae})}),n.pagination?.pageSizeOptions&&n.pagination.pageSizeOptions.length>0&&e.jsx("select",{className:"ml-auto h-6 rounded border border-input bg-background px-1 text-xs",value:ae,onChange:v=>{const E=Number(v.target.value);te(E),o.onPageSizeChange&&o.onPageSizeChange(E)},"data-testid":"page-size-selector",children:n.pagination.pageSizeOptions.map(v=>e.jsxs("option",{value:v,children:[v," / page"]},v))})]}),ve.isOverlay&&e.jsx(er,{...ve,title:n.label?`${n.label} Detail`:n.objectName?`${n.objectName.charAt(0).toUpperCase()+n.objectName.slice(1)} Detail`:"Record Detail",children:v=>e.jsx("div",{className:"space-y-3",children:Object.entries(v).map(([E,M])=>e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"text-xs font-medium text-muted-foreground uppercase tracking-wide",children:E.replace(/_/g," ")}),e.jsx("span",{className:"text-sm",children:String(M??"—")})]},E))})})]})},fl={small:"grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 xl:grid-cols-6",medium:"grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4",large:"grid-cols-1 sm:grid-cols-1 md:grid-cols-2 lg:grid-cols-3"},ml={small:"aspect-square",medium:"aspect-[4/3]",large:"aspect-[16/10]"},pl=t=>{const{schema:s}=t,a=m.useContext(Is),r=t.dataSource||a?.dataSource,l=$s(s.bind),[d,c]=m.useState([]),[i,o]=m.useState(!1),[u,h]=m.useState(null),n=Qa({navigation:s.navigation,objectName:s.objectName,onRowClick:t.onRowClick??t.onCardClick}),k=s.gallery,w=k?.coverField??s.imageField??"image",x=k?.coverFit??"cover",b=k?.cardSize??"medium",f=k?.titleField??s.titleField??"name",p=k?.visibleFields;m.useEffect(()=>{let A=!0;return(async()=>{if(!(!r||typeof r.getObjectSchema!="function"||!s.objectName))try{const L=await r.getObjectSchema(s.objectName);A&&h(L)}catch(L){console.warn("Failed to fetch object def for ObjectGallery",L)}})(),()=>{A=!1}},[s.objectName,r]),m.useEffect(()=>{let A=!0;if(t.data&&Array.isArray(t.data)){c(t.data);return}const _=async()=>{if(!(!r||typeof r.find!="function"||!s.objectName)){A&&o(!0);try{const L=_s(u?.fields),O=await r.find(s.objectName,{$filter:s.filter,...L.length>0?{$expand:L}:{}});let P=[];if(Array.isArray(O))P=O;else if(O&&typeof O=="object"){const C=O;Array.isArray(C.records)?P=C.records:Array.isArray(C.data)&&(P=C.data)}A&&c(P)}catch(L){console.error("[ObjectGallery] Fetch error:",L)}finally{A&&o(!1)}}};return s.objectName&&!l&&!s.data&&!t.data&&_(),()=>{A=!1}},[s.objectName,r,l,s.data,s.filter,t.data,u]);const g=t.data||l||s.data||d||[],y=s.grouping?.fields,N=!!(y&&y.length>0),[D,R]=m.useState({}),j=m.useMemo(()=>y?y.some(A=>A.collapsed):!1,[y]),S=m.useCallback(A=>{R(_=>({..._,[A]:_[A]!==void 0?!_[A]:!j}))},[j]),T=m.useMemo(()=>{if(!N||!y)return[];const A=new Map,_=[];for(const O of g){const P=y.map(C=>String(O[C.field]??"")).join(" / ");if(!A.has(P)){const C=y.map(z=>{const I=O[z.field];return I!=null&&I!==""?String(I):"(empty)"}).join(" / ");A.set(P,{label:C,items:[]}),_.push(P)}A.get(P).items.push(O)}const L=y[0]?.order??"asc";return _.sort((O,P)=>{const C=O.localeCompare(P,void 0,{numeric:!0,sensitivity:"base"});return L==="desc"?-C:C}),_.map(O=>{const P=A.get(O),C=O in D?D[O]:j;return{key:O,label:P.label,items:P.items,collapsed:C}})},[g,y,N,D,j]);if(i&&!g.length)return e.jsx("div",{className:"p-4 text-sm text-muted-foreground",children:"Loading Gallery..."});if(!g.length)return e.jsx("div",{className:"p-4 text-sm text-muted-foreground",children:"No items to display"});const $=(A,_)=>{const L=A._id??A.id??_,O=String(A[f]??"Untitled"),P=A[w];return e.jsxs(Oe,{role:"listitem",className:V("group overflow-hidden transition-all hover:shadow-md",(t.onCardClick||t.onRowClick||s.navigation)&&"cursor-pointer"),onClick:()=>n.handleClick(A),children:[e.jsx("div",{className:V("w-full overflow-hidden bg-muted relative",ml[b]),children:P?e.jsx("img",{src:P,alt:O,className:V("h-full w-full transition-transform group-hover:scale-105",x==="cover"&&"object-cover",x==="contain"&&"object-contain")}):e.jsx("div",{className:"flex h-full w-full items-center justify-center bg-secondary/50 text-muted-foreground",children:e.jsx("span",{className:"text-4xl font-light opacity-20",children:O[0]?.toUpperCase()})})}),e.jsxs(Pe,{className:"p-3 border-t",children:[e.jsx("h3",{className:"font-medium truncate text-sm",title:O,children:O}),p&&p.length>0&&e.jsx("div",{className:"mt-1 space-y-0.5",children:p.map(C=>{const z=A[C];return z==null?null:e.jsx("p",{className:"text-xs text-muted-foreground truncate",children:String(z)},C)})})]})]},L)},F=A=>e.jsx("div",{className:V("grid gap-4 p-4",fl[b],s.className),role:"list",children:A.map((_,L)=>$(_,L))});return e.jsxs(e.Fragment,{children:[N?e.jsx("div",{className:"space-y-2",children:T.map(A=>e.jsxs("div",{className:"border rounded-md",children:[e.jsxs("button",{type:"button",className:"flex w-full items-center gap-2 px-3 py-2 text-sm font-medium text-left bg-muted/50 hover:bg-muted transition-colors",onClick:()=>S(A.key),children:[A.collapsed?e.jsx(Mt,{className:"h-4 w-4 shrink-0"}):e.jsx(Dt,{className:"h-4 w-4 shrink-0"}),e.jsx("span",{children:A.label}),e.jsx("span",{className:"ml-auto text-xs text-muted-foreground",children:A.items.length})]}),!A.collapsed&&F(A.items)]},A.key))}):F(g),n.isOverlay&&e.jsx(er,{...n,title:"Gallery Item",children:A=>e.jsx("div",{className:"space-y-3",children:Object.entries(A).map(([_,L])=>e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"text-xs font-medium text-muted-foreground uppercase tracking-wide",children:_.replace(/_/g," ")}),e.jsx("span",{className:"text-sm",children:String(L??"—")})]},_))})})]})};Se.register("object-gallery",pl,{namespace:"plugin-list",label:"Gallery View",category:"view"});Se.register("list-view",Dr,{namespace:"plugin-list",label:"List View",category:"Views",icon:"LayoutList",inputs:[{name:"objectName",type:"string",label:"Object Name",required:!0},{name:"viewType",type:"enum",label:"Default View",enum:[{label:"Grid",value:"grid"},{label:"Kanban",value:"kanban"},{label:"Gallery",value:"gallery"},{label:"Calendar",value:"calendar"},{label:"Timeline",value:"timeline"},{label:"Gantt",value:"gantt"},{label:"Map",value:"map"}],defaultValue:"grid"},{name:"fields",type:"array",label:"Fields"},{name:"filters",type:"array",label:"Filters"},{name:"sort",type:"array",label:"Sort"},{name:"options",type:"object",label:"View Options"}],defaultProps:{objectName:"",viewType:"grid",fields:[],filters:[],sort:[],options:{}}});Se.register("list",Dr,{namespace:"view",category:"view",label:"List",icon:"LayoutList",inputs:[{name:"objectName",type:"string",label:"Object Name",required:!0},{name:"viewType",type:"enum",label:"Default View",enum:[{label:"Grid",value:"grid"},{label:"Kanban",value:"kanban"},{label:"Gallery",value:"gallery"},{label:"Calendar",value:"calendar"},{label:"Timeline",value:"timeline"},{label:"Gantt",value:"gantt"},{label:"Map",value:"map"}],defaultValue:"grid"},{name:"fields",type:"array",label:"Fields"},{name:"filters",type:"array",label:"Filters"},{name:"sort",type:"array",label:"Sort"},{name:"options",type:"object",label:"View Options"}]});const hl=new Set(["textarea","markdown","html","grid","rich-text","field:textarea","field:markdown","field:html","field:grid","field:rich-text"]);function xl(t){return hl.has(t)}function gl(t){return t<=3?1:t<=10?2:3}function fa(t,s){return s<=1?t:t.map(a=>a.span!==void 0?a:a.type&&xl(a.type)?{...a,span:s}:a)}function bl(t,s){if(s!==void 0)return{fields:fa(t,s),columns:s};const a=gl(t.length);return{fields:fa(t,a),columns:a}}function yl(t,s){return function(){try{const r=Nr();return r.t(s)===s?{t:(d,c)=>{let i=t[d]||d;if(c)for(const[o,u]of Object.entries(c))i=i.replace(`{{${o}}}`,String(u));return i}}:{t:r.t}}catch{return{t:(r,l)=>{let d=t[r]||r;if(l)for(const[c,i]of Object.entries(l))d=d.replace(`{{${c}}}`,String(i));return d}}}}}const vl={"detail.back":"Back","detail.edit":"Edit","detail.editInline":"Edit inline","detail.save":"Save","detail.saveChanges":"Save changes","detail.editFieldsInline":"Edit fields inline","detail.share":"Share","detail.duplicate":"Duplicate","detail.export":"Export","detail.viewHistory":"View history","detail.delete":"Delete","detail.moreActions":"More actions","detail.addToFavorites":"Add to favorites","detail.removeFromFavorites":"Remove from favorites","detail.previousRecord":"Previous record","detail.nextRecord":"Next record","detail.recordOf":"{{current}} of {{total}}","detail.recordNotFound":"Record not found","detail.recordNotFoundDescription":"The record you are looking for does not exist or may have been deleted.","detail.goBack":"Go back","detail.details":"Details","detail.related":"Related","detail.relatedRecords":"{{count}} records","detail.relatedRecordOne":"{{count}} record","detail.noRelatedRecords":"No related records found","detail.loading":"Loading...","detail.copyToClipboard":"Copy to clipboard","detail.copied":"Copied!","detail.deleteConfirmation":"Are you sure you want to delete this record?","detail.editRecord":"Edit record","detail.viewAll":"View All","detail.new":"New","detail.emptyValue":"—","detail.activity":"Activity","detail.editRow":"Edit","detail.deleteRow":"Delete","detail.deleteRowConfirmation":"Are you sure you want to delete this record?","detail.actions":"Actions","detail.previousPage":"Previous","detail.nextPage":"Next","detail.pageOf":"Page {{current}} of {{total}}","detail.sortBy":"Sort by","detail.filterPlaceholder":"Filter...","detail.highlightFields":"Key Fields"},Xs=yl(vl,"detail.back"),$t=({section:t,data:s,className:a,objectSchema:r,objectName:l,isEditing:d=!1,onFieldChange:c})=>{const[i,o]=m.useState(t.defaultCollapsed??!1),[u,h]=m.useState(null),{t:n}=Xs(),{fieldLabel:k}=Ys(),w=m.useCallback((y,N)=>{const D=N!=null?String(N):"";navigator.clipboard.writeText(D).then(()=>{h(y),setTimeout(()=>h(null),2e3)})},[]),x=y=>{const N=s?.[y.name]??y.value;if(y.render)return e.jsx(Ie,{schema:y.render,data:{...s,value:N}});const D=y.span===1?"col-span-1":y.span===2?"col-span-2":y.span===3?"col-span-3":y.span===4?"col-span-4":y.span===5?"col-span-5":y.span===6?"col-span-6":"",R=(()=>{if(N==null)return e.jsx("span",{className:"text-muted-foreground/50 text-xs italic",children:"—"});const T=r?.fields?.[y.name],$=y.type||T?.type,F={...y};if(T){!y.type&&T.type&&(F.type=T.type),T.options&&!F.options&&(F.options=T.options),T.currency&&!F.currency&&(F.currency=T.currency),T.precision!==void 0&&F.precision===void 0&&(F.precision=T.precision),T.format&&!F.format&&(F.format=T.format);const A=T.reference_to||T.reference;A&&!F.reference_to&&(F.reference_to=A),T.reference_field&&!F.reference_field&&(F.reference_field=T.reference_field)}if($){const A=rr($);if(A)return e.jsx(A,{value:N,field:F})}return String(N)})(),j=N!=null&&N!=="",S=u===y.name;return e.jsxs("div",{className:V("space-y-1.5 group",D),children:[e.jsx("div",{className:"text-xs font-medium text-muted-foreground uppercase tracking-wide",children:k(l||"",y.name,y.label||y.name)}),d&&!y.readonly?e.jsx("div",{className:"min-h-[44px] sm:min-h-0",children:e.jsx("input",{type:y.type==="number"?"number":y.type==="date"?"date":"text",className:"w-full px-2 py-1.5 text-sm border rounded-md bg-background focus:outline-none focus:ring-2 focus:ring-ring",value:N!=null?String(N):"",onChange:T=>c?.(y.name,T.target.value)})}):e.jsxs("div",{className:V("flex items-start justify-between gap-2 min-h-[44px] sm:min-h-0 rounded-md",j&&"cursor-pointer active:bg-muted/60 transition-colors"),onClick:j?()=>w(y.name,N):void 0,onKeyDown:j?T=>{(T.key==="Enter"||T.key===" ")&&(T.preventDefault(),w(y.name,N))}:void 0,role:j?"button":void 0,tabIndex:j?0:void 0,children:[e.jsx("div",{className:"text-sm flex-1 break-words py-1",children:R}),j&&e.jsx(nr,{children:e.jsxs(mt,{children:[e.jsx(pt,{asChild:!0,children:e.jsx(B,{variant:"ghost",size:"icon",className:"h-6 w-6 opacity-0 group-hover:opacity-100 transition-opacity shrink-0",onClick:T=>{T.stopPropagation(),w(y.name,N)},children:S?e.jsx(ur,{className:"h-3 w-3 text-green-600"}):e.jsx(fr,{className:"h-3 w-3"})})}),e.jsx(ht,{children:n(S?"detail.copied":"detail.copyToClipboard")})]})})]})]},y.name)},b=t.hideEmpty?t.fields.filter(y=>{const N=s?.[y.name]??y.value;return N!=null&&N!==""}):t.fields;if(b.length===0)return null;const{fields:f,columns:p}=bl(b,t.columns),g=e.jsx("div",{className:V("grid gap-3 sm:gap-4",p===1?"grid-cols-1":p===2?"grid-cols-1 md:grid-cols-2":"grid-cols-1 md:grid-cols-2 lg:grid-cols-3"),children:f.map(x)});return t.collapsible?e.jsx(tr,{open:!i,onOpenChange:y=>o(!y),className:a,children:e.jsxs(Oe,{children:[e.jsx(sr,{asChild:!0,children:e.jsxs($e,{className:V("cursor-pointer hover:bg-muted/50 transition-colors",t.headerColor&&`bg-${t.headerColor}`),children:[e.jsxs(Be,{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[t.icon&&e.jsx("span",{className:"text-muted-foreground",children:t.icon}),e.jsx("span",{children:t.title}),t.fields&&e.jsx(St,{variant:"secondary",className:"ml-2 text-xs",children:t.fields.length})]}),e.jsx("div",{className:"flex items-center gap-2",children:i?e.jsx(Mt,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Dt,{className:"h-4 w-4 text-muted-foreground"})})]}),t.description&&!i&&e.jsx("p",{className:"text-sm text-muted-foreground mt-1.5",children:t.description})]})}),e.jsx(ar,{children:e.jsx(Pe,{className:"pt-4 sm:pt-6 px-3 sm:px-6",children:g})})]})}):e.jsxs(Oe,{className:V(t.showBorder===!1?"border-none shadow-none":"",a),children:[t.title&&e.jsxs($e,{className:V(t.headerColor&&`bg-${t.headerColor}`),children:[e.jsx(Be,{className:"flex items-center justify-between",children:e.jsxs("div",{className:"flex items-center gap-2",children:[t.icon&&e.jsx("span",{className:"text-muted-foreground",children:t.icon}),e.jsx("span",{children:t.title}),t.fields&&e.jsx(St,{variant:"secondary",className:"ml-2 text-xs",children:t.fields.length})]})}),t.description&&e.jsx("p",{className:"text-sm text-muted-foreground mt-1.5",children:t.description})]}),e.jsx(Pe,{className:"pt-4 sm:pt-6 px-3 sm:px-6",children:g})]})},jl=({tabs:t,data:s,className:a})=>{const[r,l]=m.useState(t[0]?.key),d=t.filter(c=>typeof c.visible=="boolean"?c.visible:(typeof c.visible=="string",!0));return e.jsxs(Bs,{value:r,onValueChange:l,className:a,children:[e.jsx(Vs,{className:"w-full justify-start border-b rounded-none bg-transparent p-0",children:d.map(c=>e.jsx(nt,{value:c.key,className:"relative rounded-none border-b-2 border-transparent data-[state=active]:border-primary data-[state=active]:bg-transparent",children:e.jsxs("div",{className:"flex items-center gap-2",children:[c.icon&&e.jsx("span",{children:c.icon}),e.jsx("span",{children:c.label}),c.badge&&e.jsx(St,{variant:"secondary",className:"ml-1",children:c.badge})]})},c.key))}),d.map(c=>e.jsx(lt,{value:c.key,className:"mt-4",children:Array.isArray(c.content)?e.jsx("div",{className:"space-y-4",children:c.content.map((i,o)=>e.jsx(Ie,{schema:i,data:s},o))}):e.jsx(Ie,{schema:c.content,data:s})},c.key))]})},Ms=({title:t,type:s,api:a,data:r=[],schema:l,columns:d,className:c,dataSource:i,objectName:o,onNew:u,onViewAll:h,onRowEdit:n,onRowDelete:k,pageSize:w,sortable:x=!1,filterable:b=!1,collapsible:f=!1,defaultCollapsed:p=!1})=>{const[g,y]=m.useState(r),[N,D]=m.useState(!1),[R,j]=m.useState(0),[S,T]=m.useState(null),[$,F]=m.useState("asc"),[A,_]=m.useState(""),[L,O]=m.useState(null),[P,C]=m.useState(p),{t:z}=Xs(),{fieldLabel:I}=Ys();m.useEffect(()=>{y(r)},[r]),m.useEffect(()=>{a&&i?.getObjectSchema&&!d?.length&&i.getObjectSchema(a).then(O).catch(H=>{console.warn(`[RelatedList] Failed to fetch schema for ${a}:`,H)})},[a,i,d]),m.useEffect(()=>{a&&!r.length&&(D(!0),i&&typeof i.find=="function"?i.find(a).then(H=>{const X=Array.isArray(H)?H:Array.isArray(H?.data)?H.data:[];y(X),D(!1)}).catch(H=>{console.error("Failed to fetch related data:",H),D(!1)}):fetch(a).then(H=>H.json()).then(H=>{const X=Array.isArray(H)?H:H?.data||[];y(X)}).catch(H=>{console.error("Failed to fetch related data:",H)}).finally(()=>D(!1)))},[a,r,i]);const W=m.useMemo(()=>{if(!A)return g;const H=A.toLowerCase();return g.filter(X=>Object.values(X).some(J=>J!=null&&String(J).toLowerCase().includes(H)))},[g,A]),le=m.useMemo(()=>S?[...W].sort((H,X)=>{const J=H[S],pe=X[S];if(J==null&&pe==null)return 0;if(J==null)return 1;if(pe==null)return-1;const ge=String(J).localeCompare(String(pe),void 0,{numeric:!0});return $==="asc"?ge:-ge}):W,[W,S,$]),me=w&&w>0?w:0,de=me?Math.max(1,Math.ceil(le.length/me)):1,Z=me?le.slice(R*me,(R+1)*me):le;m.useEffect(()=>{j(0)},[A,S,$]);const fe=m.useCallback(H=>{S===H?F(X=>X==="asc"?"desc":"asc"):(T(H),F("asc"))},[S]),Y=m.useCallback(H=>{window.confirm(z("detail.deleteRowConfirmation"))&&k?.(H)},[k,z]),ee=m.useMemo(()=>{if(d&&d.length>0)return d;if(!L?.fields)return[];const H=o||a||"";return Object.entries(L.fields).filter(([X])=>!X.startsWith("_")).map(([X,J])=>{const pe={accessorKey:X,header:I(H,X,J.label||X)};if(J.type){const ge=rr(J.type);if(ge){const Te={name:X,label:J.label||X,type:J.type,...J.options&&{options:J.options},...J.currency&&{currency:J.currency},...J.precision!==void 0&&{precision:J.precision},...J.format&&{format:J.format},...(J.reference_to||J.reference)&&{reference_to:J.reference_to||J.reference},...J.reference_field&&{reference_field:J.reference_field}};pe.cell=Ue=>Ue==null?m.createElement("span",{className:"text-muted-foreground/50 text-xs italic"},"—"):m.createElement(ge,{value:Ue,field:Te})}}return pe})},[d,L,o,a,I]),xe=m.useMemo(()=>{if(l)return l;switch(s){case"grid":case"table":return{type:"data-table",data:Z,columns:ee,pagination:!1,pageSize:me||10};case"list":return{type:"data-list",data:Z};default:return{type:"div",children:"No view configured"}}},[s,Z,ee,l,me]),te=!!n||!!k,ae=f?"cursor-pointer select-none":void 0,G=f?()=>C(H=>!H):void 0;return e.jsxs(Oe,{className:c,children:[e.jsx($e,{className:ae,onClick:G,children:e.jsxs(Be,{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[f&&(P?e.jsx(Mt,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Dt,{className:"h-4 w-4 text-muted-foreground"})),e.jsx("span",{children:t}),e.jsx(St,{variant:"secondary",className:"text-xs font-normal","aria-label":`${g.length} records`,children:g.length})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[u&&e.jsxs(B,{variant:"ghost",size:"sm",onClick:H=>{H.stopPropagation(),u()},className:"gap-1 h-7 text-xs",children:[e.jsx(Qe,{className:"h-3.5 w-3.5"}),z("detail.new")]}),h&&e.jsxs(B,{variant:"ghost",size:"sm",onClick:H=>{H.stopPropagation(),h()},className:"gap-1 h-7 text-xs",children:[z("detail.viewAll"),e.jsx(Dn,{className:"h-3 w-3"})]})]})]})}),!P&&e.jsxs(Pe,{children:[b&&g.length>0&&e.jsx("div",{className:"mb-3",children:e.jsx(qe,{placeholder:z("detail.filterPlaceholder"),value:A,onChange:H=>_(H.target.value),className:"h-8 text-sm"})}),x&&ee&&ee.length>0&&g.length>0&&e.jsx("div",{className:"flex flex-wrap gap-1 mb-3",children:ee.map(H=>{const X=H.accessorKey||H.field||H.name;if(!X)return null;const J=H.header||H.label||X,pe=S===X;return e.jsxs(B,{variant:pe?"secondary":"ghost",size:"sm",className:"gap-1 h-7 text-xs",onClick:()=>fe(X),children:[e.jsx(cr,{className:"h-3 w-3"}),J,pe&&($==="asc"?" ↑":" ↓")]},X)})}),N?e.jsx("div",{className:"flex items-center justify-center py-8 text-muted-foreground",children:z("detail.loading")}):g.length===0?e.jsx("div",{className:"flex items-center justify-center py-8 text-muted-foreground text-sm",children:z("detail.noRelatedRecords")}):e.jsxs(e.Fragment,{children:[e.jsx(Ie,{schema:xe}),te&&Z.length>0&&e.jsx("div",{className:"mt-2 space-y-1","data-testid":"row-actions",children:Z.map((H,X)=>e.jsxs("div",{className:"flex items-center justify-between px-2 py-1 text-xs border-b last:border-b-0",children:[e.jsx("span",{className:"truncate text-muted-foreground",children:H.name||H.title||H.id||`Row ${X+1}`}),e.jsxs("div",{className:"flex items-center gap-1",children:[n&&e.jsxs(B,{variant:"ghost",size:"sm",className:"h-6 text-xs gap-1 px-2",onClick:()=>n(H),children:[e.jsx(ot,{className:"h-3 w-3"}),z("detail.editRow")]}),k&&e.jsxs(B,{variant:"ghost",size:"sm",className:"h-6 text-xs gap-1 px-2 text-destructive hover:text-destructive",onClick:()=>Y(H),children:[e.jsx(vt,{className:"h-3 w-3"}),z("detail.deleteRow")]})]})]},H.id||X))})]}),me>0&&le.length>me&&e.jsxs("div",{className:"flex items-center justify-between mt-3 pt-3 border-t",children:[e.jsxs(B,{variant:"outline",size:"sm",className:"h-7 text-xs gap-1",disabled:R===0,onClick:()=>j(H=>Math.max(0,H-1)),children:[e.jsx(mr,{className:"h-3 w-3"}),z("detail.previousPage")]}),e.jsx("span",{className:"text-xs text-muted-foreground",children:z("detail.pageOf",{current:R+1,total:de})}),e.jsxs(B,{variant:"outline",size:"sm",className:"h-7 text-xs gap-1",disabled:R>=de-1,onClick:()=>j(H=>Math.min(de-1,H+1)),children:[z("detail.nextPage"),e.jsx(Mt,{className:"h-3 w-3"})]})]})]})]})},ma=({group:t,data:s,className:a,objectSchema:r,objectName:l,isEditing:d=!1,onFieldChange:c})=>{const i=t.collapsible??!0,[o,u]=m.useState(t.defaultCollapsed??!1),h=e.jsx("div",{className:"space-y-3 sm:space-y-4",children:t.sections.map((n,k)=>e.jsx($t,{section:n,data:s,objectSchema:r,objectName:l,isEditing:d,onFieldChange:c},k))});return i?e.jsxs(tr,{open:!o,onOpenChange:n=>u(!n),className:a,children:[e.jsx(sr,{asChild:!0,children:e.jsxs("div",{className:"flex items-center gap-2 pb-2 border-b cursor-pointer hover:bg-muted/50 transition-colors rounded-t-md px-2 py-1.5",children:[o?e.jsx(Mt,{className:"h-4 w-4 text-muted-foreground shrink-0"}):e.jsx(Dt,{className:"h-4 w-4 text-muted-foreground shrink-0"}),t.icon&&e.jsx("span",{className:"text-muted-foreground",children:t.icon}),e.jsx("h3",{className:"text-lg font-semibold",children:t.title})]})}),t.description&&!o&&e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:t.description}),e.jsx(ar,{children:e.jsx("div",{className:"mt-3",children:h})})]}):e.jsxs("div",{className:V("space-y-3",a),children:[e.jsxs("div",{className:"flex items-center gap-2 pb-2 border-b",children:[t.icon&&e.jsx("span",{className:"text-muted-foreground",children:t.icon}),e.jsx("h3",{className:"text-lg font-semibold",children:t.title})]}),t.description&&e.jsx("p",{className:"text-sm text-muted-foreground",children:t.description}),h]})},wl=({fields:t,data:s,className:a,objectName:r})=>{const{fieldLabel:l}=Ys();if(!t.length||!s)return null;const d=t.filter(c=>{const i=s?.[c.name];return i!=null&&i!==""});return d.length===0?null:e.jsx(Oe,{className:V("bg-muted/30 border-dashed",a),children:e.jsx(Pe,{className:"py-3 px-4",children:e.jsx("div",{className:V("grid gap-4",d.length===1?"grid-cols-1":d.length===2?"grid-cols-2":d.length===3?"grid-cols-3":"grid-cols-2 md:grid-cols-4"),children:d.map(c=>{const i=s[c.name];return e.jsxs("div",{className:"flex flex-col gap-0.5",children:[e.jsxs("span",{className:"text-xs font-medium text-muted-foreground uppercase tracking-wide",children:[c.icon&&e.jsx("span",{className:"mr-1",children:c.icon}),l(r||"",c.name,c.label)]}),e.jsx("span",{className:"text-sm font-semibold truncate",children:String(i)})]},c.name)})})})})};function Nl(t){try{const s=new Date(t),r=new Date().getTime()-s.getTime(),l=Math.floor(r/6e4);if(l<1)return"just now";if(l<60)return`${l}m ago`;const d=Math.floor(l/60);if(d<24)return`${d}h ago`;const c=Math.floor(d/24);return c<7?`${c}d ago`:s.toLocaleDateString()}catch{return t}}const pa=({comments:t,onAddComment:s,onTogglePin:a,searchable:r=!1,className:l})=>{const[d,c]=m.useState(""),[i,o]=m.useState(!1),[u,h]=m.useState(""),n=m.useCallback(async()=>{const x=d.trim();if(!(!x||!s)){o(!0);try{await s(x),c("")}finally{o(!1)}}},[d,s]),k=m.useCallback(x=>{x.key==="Enter"&&(x.ctrlKey||x.metaKey)&&(x.preventDefault(),n())},[n]),w=m.useMemo(()=>[...u.trim()?t.filter(b=>{const f=u.trim().toLowerCase();return b.text.toLowerCase().includes(f)||b.author.toLowerCase().includes(f)}):t].sort((b,f)=>b.pinned&&!f.pinned?-1:!b.pinned&&f.pinned?1:0),[t,u]);return e.jsxs(Oe,{className:V("",l),children:[e.jsx($e,{children:e.jsxs(Be,{className:"flex items-center gap-2 text-base",children:[e.jsx(kt,{className:"h-4 w-4"}),"Comments",e.jsxs("span",{className:"text-sm font-normal text-muted-foreground",children:["(",t.length,")"]})]})}),e.jsxs(Pe,{className:"space-y-4",children:[r&&e.jsx("div",{className:"flex items-center gap-2",children:e.jsxs("div",{className:"relative flex-1",children:[e.jsx(As,{className:"absolute left-2.5 top-1/2 -translate-y-1/2 h-3.5 w-3.5 text-muted-foreground"}),e.jsx("input",{className:"w-full rounded-md border border-input bg-background pl-8 pr-8 py-1.5 text-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",placeholder:"Search comments…",value:u,onChange:x=>h(x.target.value),"aria-label":"Search comments"}),u&&e.jsx("button",{className:"absolute right-2 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground",onClick:()=>h(""),"aria-label":"Clear search",type:"button",children:e.jsx(ss,{className:"h-3.5 w-3.5"})})]})}),s&&e.jsxs("div",{className:"flex gap-2",children:[e.jsx("textarea",{className:"flex-1 min-h-[60px] rounded-md border border-input bg-background px-3 py-2 text-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring resize-none",placeholder:"Add a comment… (Ctrl+Enter to submit)",value:d,onChange:x=>c(x.target.value),onKeyDown:k,disabled:i}),e.jsx(B,{size:"icon",variant:"default",onClick:n,disabled:!d.trim()||i,className:"shrink-0 self-end",children:e.jsx(pr,{className:"h-4 w-4"})})]}),w.length===0?e.jsx("p",{className:"text-sm text-muted-foreground text-center py-4",children:u.trim()?"No matching comments":"No comments yet"}):e.jsx("div",{className:"space-y-3",children:w.map(x=>e.jsxs("div",{className:V("flex gap-3",x.pinned&&"bg-muted/40 rounded-md p-2 -mx-2"),children:[e.jsx("div",{className:"shrink-0",children:x.avatarUrl?e.jsx("img",{src:x.avatarUrl,alt:x.author,className:"h-8 w-8 rounded-full object-cover"}):e.jsx("div",{className:"h-8 w-8 rounded-full bg-muted flex items-center justify-center text-xs font-medium text-muted-foreground",children:x.author.charAt(0).toUpperCase()})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-0.5",children:[e.jsx("span",{className:"text-sm font-medium truncate",children:x.author}),e.jsx("span",{className:"text-xs text-muted-foreground",children:Nl(x.createdAt)}),x.pinned&&e.jsxs("span",{className:"text-xs text-amber-600 flex items-center gap-0.5",children:[e.jsx(oa,{className:"h-3 w-3"}),"Pinned"]})]}),e.jsx("p",{className:"text-sm whitespace-pre-wrap break-words",children:x.text}),a&&e.jsxs("button",{type:"button",className:"mt-1 text-xs text-muted-foreground hover:text-foreground flex items-center gap-1",onClick:()=>a(x.id),"aria-label":x.pinned?"Unpin comment":"Pin comment",children:[e.jsx(oa,{className:"h-3 w-3"}),x.pinned?"Unpin":"Pin"]})]})]},x.id))})]})]})},ha={field_change:ot,create:Fn,delete:vt,comment:kt,status_change:Rn},Cl={field_change:"bg-blue-100 text-blue-600",create:"bg-green-100 text-green-600",delete:"bg-red-100 text-red-600",comment:"bg-purple-100 text-purple-600",status_change:"bg-amber-100 text-amber-600"};function Sl(t){try{const s=new Date(t),r=new Date().getTime()-s.getTime(),l=Math.floor(r/6e4);if(l<1)return"just now";if(l<60)return`${l}m ago`;const d=Math.floor(l/60);if(d<24)return`${d}h ago`;const c=Math.floor(d/24);return c<7?`${c}d ago`:s.toLocaleDateString()}catch{return t}}function kl(t){if(t.description)return t.description;if(t.type==="field_change"&&t.field){const s=t.field.charAt(0).toUpperCase()+t.field.slice(1).replace(/_/g," "),a=t.oldValue!=null?String(t.oldValue):"(empty)",r=t.newValue!=null?String(t.newValue):"(empty)";return`Changed ${s} from "${a}" to "${r}"`}return t.type==="create"?"Created this record":t.type==="delete"?"Deleted this record":t.type==="status_change"&&t.field?`Changed status to "${t.newValue!=null?String(t.newValue):"(empty)"}"`:"Updated record"}const xa={all:"All",field_change:"Field Changes",create:"Creates",delete:"Deletes",comment:"Comments",status_change:"Status Changes"},ga=({activities:t,filterable:s=!1,defaultFilter:a="all",className:r})=>{const[l,d]=m.useState(a),c=m.useMemo(()=>l==="all"?t:t.filter(i=>i.type===l),[t,l]);return e.jsxs(Oe,{className:V("",r),children:[e.jsx($e,{children:e.jsxs(Be,{className:"flex items-center gap-2 text-base",children:[e.jsx(Gs,{className:"h-4 w-4"}),"Activity",e.jsxs("span",{className:"text-sm font-normal text-muted-foreground",children:["(",c.length,")"]})]})}),e.jsxs(Pe,{children:[s&&e.jsx("div",{className:"flex flex-wrap gap-1.5 mb-4",role:"group","aria-label":"Activity type filter",children:Object.keys(xa).map(i=>e.jsxs("button",{type:"button",className:V("inline-flex items-center gap-1 rounded-full px-2.5 py-0.5 text-xs font-medium transition-colors",l===i?"bg-primary text-primary-foreground":"bg-muted text-muted-foreground hover:bg-muted/80"),onClick:()=>d(i),"aria-pressed":l===i,children:[i!=="all"&&m.createElement(ha[i]||ot,{className:"h-3 w-3"}),xa[i]]},i))}),c.length===0?e.jsx("p",{className:"text-sm text-muted-foreground text-center py-4",children:"No activity recorded"}):e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute left-4 top-2 bottom-2 w-px bg-border"}),e.jsx("div",{className:"space-y-4",children:c.map(i=>{const o=ha[i.type]||ot,u=Cl[i.type]||"bg-gray-100 text-gray-600";return e.jsxs("div",{className:"flex gap-3 relative",children:[e.jsx("div",{className:V("shrink-0 h-8 w-8 rounded-full flex items-center justify-center z-10",u),children:e.jsx(o,{className:"h-3.5 w-3.5"})}),e.jsxs("div",{className:"flex-1 min-w-0 pt-1",children:[e.jsxs("p",{className:"text-sm",children:[e.jsx("span",{className:"font-medium",children:i.user})," ",e.jsx("span",{className:"text-muted-foreground",children:kl(i)})]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-0.5",children:Sl(i.timestamp)})]})]},i.id)})})]})]})]})},ba=5,Rr=({schema:t,dataSource:s,className:a,onEdit:r,onDelete:l,onBack:d,inlineEdit:c=!1,onFieldSave:i})=>{const[o,u]=m.useState(t.data),[h,n]=m.useState(!t.data&&!!(t.api&&t.resourceId||s&&t.objectName&&t.resourceId)),[k,w]=m.useState(!1),[x,b]=m.useState(!1),[f,p]=m.useState({}),[g,y]=m.useState(null),{t:N}=Xs();m.useEffect(()=>{let C=!0;if(t.data){u(t.data),n(!1);return}if(s&&t.objectName&&t.resourceId){n(!0),y(null),u(null);const z=t.objectName,I=t.resourceId,W=`${z}-`,le=[...t.sections?.flatMap(de=>de.fields)||[],...t.fields||[]];(s.getObjectSchema?s.getObjectSchema(z).catch(()=>null):Promise.resolve(null)).then(de=>{if(!C)return;y(de);const Z=_s(de?.fields,le),fe=Z.length>0?{$expand:Z}:void 0;return(fe?s.findOne(z,I,fe):s.findOne(z,I)).then(ee=>{if(!C)return;if(ee){u(ee),n(!1);return}const xe=String(I),te=xe.startsWith(W)?xe.slice(W.length):`${W}${xe}`;return(fe?s.findOne(z,te,fe):s.findOne(z,te)).then(ae=>{C&&(u(ae),n(!1))}).catch(()=>{C&&(u(null),n(!1))})})}).catch(de=>{C&&(console.error("Failed to fetch detail data:",de),n(!1))})}else t.api&&t.resourceId&&(n(!0),fetch(`${t.api}/${t.resourceId}`).then(z=>z.json()).then(z=>{C&&u(z?.data||z)}).catch(z=>{console.error("Failed to fetch detail data:",z)}).finally(()=>{C&&n(!1)}));return()=>{C=!1}},[t.api,t.resourceId,t.objectName,s,t.sections,t.fields]);const D=m.useCallback(()=>{if(d)d();else if(t.onNavigate){const C=t.backUrl||(t.objectName?`/${t.objectName}`:"/");t.onNavigate(C,{replace:!0})}else t.backUrl?window.location.href=t.backUrl:window.history.back()},[d,t]),R=m.useCallback(()=>{r?r():t.onNavigate&&t.editUrl?t.onNavigate(t.editUrl):t.onNavigate&&t.objectName&&t.resourceId?t.onNavigate(`/${t.objectName}/${t.resourceId}/edit`):t.editUrl&&(window.location.href=t.editUrl)},[r,t]),j=m.useCallback(()=>{const C=t.deleteConfirmation||N("detail.deleteConfirmation");window.confirm(C)&&(l?.(),t.onNavigate&&t.objectName&&t.onNavigate(`/${t.objectName}`,{replace:!0}))},[l,t]),S=m.useCallback(()=>{navigator.share&&t.objectName&&t.resourceId?navigator.share({title:t.title||N("detail.details"),text:`${t.objectName} #${t.resourceId}`,url:window.location.href}).catch(C=>console.log("Share failed:",C)):navigator.clipboard.writeText(window.location.href).then(()=>{console.log("Link copied to clipboard")})},[t]),T=m.useCallback(()=>{console.log("Duplicate record:",o)},[o]),$=m.useCallback(()=>{console.log("Export record:",o)},[o]),F=m.useCallback(()=>{console.log("View history for record:",t.resourceId)},[t]),A=m.useCallback(()=>{w(!k)},[k]),_=m.useCallback(()=>{if(x){const C=Object.entries(f);if(C.length>0){const z={...o,...f};u(z),C.forEach(([I,W])=>{i?.(I,W,z)})}p({})}b(!x)},[x,f,o,i]),L=m.useCallback((C,z)=>{p(I=>({...I,[C]:z}))},[]);m.useEffect(()=>{if(!t.recordNavigation)return;const C=t.recordNavigation,z=I=>{const W=I.target?.tagName;W==="INPUT"||W==="TEXTAREA"||I.target?.isContentEditable||(I.key==="ArrowLeft"&&C.currentIndex>0?(I.preventDefault(),C.onNavigate(C.recordIds[C.currentIndex-1])):I.key==="ArrowRight"&&C.currentIndex<C.recordIds.length-1&&(I.preventDefault(),C.onNavigate(C.recordIds[C.currentIndex+1])))};return document.addEventListener("keydown",z),()=>document.removeEventListener("keydown",z)},[t.recordNavigation]);const O=m.useMemo(()=>{if(!t.autoDiscoverRelated||!g?.fields)return[];if(t.related&&t.related.length>0)return[];const C=[],z=g.fields;for(const[I,W]of Object.entries(z)){const le=W?.reference_to||W?.reference;W&&(W.type==="lookup"||W.type==="master_detail")&&le&&C.push({title:W.label||I.charAt(0).toUpperCase()+I.slice(1),type:"table",objectName:le,referenceField:I})}return C},[t.autoDiscoverRelated,t.related,g]),P=m.useMemo(()=>t.related&&t.related.length>0?t.related:O.map(C=>({title:C.title,type:C.type,api:C.objectName,data:[]})),[t.related,O]);return h||t.loading?e.jsxs("div",{className:V("space-y-4",a),children:[e.jsx(we,{className:"h-10 w-full"}),e.jsx(we,{className:"h-64 w-full"}),e.jsx(we,{className:"h-48 w-full"})]}):!o&&!t.data?e.jsxs("div",{className:V("flex flex-col items-center justify-center py-16 text-center",a),children:[e.jsx("p",{className:"text-lg font-semibold",children:N("detail.recordNotFound")}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:N("detail.recordNotFoundDescription")}),(t.showBack??!0)&&e.jsxs(B,{variant:"outline",size:"sm",onClick:D,className:"mt-4 gap-2",children:[e.jsx(ca,{className:"h-4 w-4"}),N("detail.goBack")]})]}):e.jsx(nr,{children:e.jsxs("div",{className:V("space-y-6",a),children:[e.jsxs("div",{className:"flex flex-col sm:flex-row items-start justify-between gap-3 sm:gap-4 pb-4 border-b",children:[e.jsxs("div",{className:"flex items-start gap-2 sm:gap-3 flex-1 min-w-0",children:[(t.showBack??!0)&&e.jsxs(mt,{children:[e.jsx(pt,{asChild:!0,children:e.jsx(B,{variant:"ghost",size:"icon",onClick:D,className:"shrink-0 mt-1",children:e.jsx(ca,{className:"h-4 w-4"})})}),e.jsx(ht,{children:N("detail.back")})]}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[e.jsx("h1",{className:"text-xl sm:text-2xl font-bold truncate",children:t.primaryField&&o?.[t.primaryField]||t.title||N("detail.details")}),t.summaryFields?.map(C=>{const z=o?.[C];return z==null||z===""?null:e.jsx(St,{variant:"secondary",className:"text-xs","aria-label":`${C}: ${z}`,children:String(z)},C)}),e.jsxs(mt,{children:[e.jsx(pt,{asChild:!0,children:e.jsx(B,{variant:"ghost",size:"icon",className:"h-6 w-6 shrink-0",onClick:A,children:k?e.jsx(On,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}):e.jsx(Pn,{className:"h-4 w-4 text-muted-foreground"})})}),e.jsx(ht,{children:N(k?"detail.removeFromFavorites":"detail.addToFavorites")})]})]}),t.objectName&&e.jsxs("p",{className:"text-sm text-muted-foreground mt-1 flex items-center gap-1.5",children:[e.jsx("span",{className:"font-medium",children:t.objectName}),e.jsx("span",{className:"text-muted-foreground/60",children:"•"}),e.jsxs("span",{children:["#",t.resourceId]})]})]})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-1.5 shrink-0 w-full sm:w-auto",children:[t.recordNavigation&&e.jsxs("div",{className:"flex items-center gap-1 mr-2",children:[e.jsxs(mt,{children:[e.jsx(pt,{asChild:!0,children:e.jsx(B,{variant:"outline",size:"icon",className:"h-8 w-8",disabled:t.recordNavigation.currentIndex<=0,onClick:()=>{const C=t.recordNavigation;C.currentIndex>0&&C.onNavigate(C.recordIds[C.currentIndex-1])},children:e.jsx(mr,{className:"h-4 w-4"})})}),e.jsx(ht,{children:N("detail.previousRecord")})]}),e.jsx("span",{className:"text-xs text-muted-foreground whitespace-nowrap px-1",children:N("detail.recordOf",{current:t.recordNavigation.currentIndex+1,total:t.recordNavigation.recordIds.length})}),e.jsxs(mt,{children:[e.jsx(pt,{asChild:!0,children:e.jsx(B,{variant:"outline",size:"icon",className:"h-8 w-8",disabled:t.recordNavigation.currentIndex>=t.recordNavigation.recordIds.length-1,onClick:()=>{const C=t.recordNavigation;C.currentIndex<C.recordIds.length-1&&C.onNavigate(C.recordIds[C.currentIndex+1])},children:e.jsx(Mt,{className:"h-4 w-4"})})}),e.jsx(ht,{children:N("detail.nextRecord")})]})]}),t.actions?.map((C,z)=>e.jsx(Ie,{schema:C,data:o},z)),c&&e.jsxs(mt,{children:[e.jsx(pt,{asChild:!0,children:e.jsx(B,{variant:x?"default":"outline",size:"sm",onClick:_,className:"gap-2 hidden sm:inline-flex",children:x?e.jsxs(e.Fragment,{children:[e.jsx(ur,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:N("detail.save")})]}):e.jsxs(e.Fragment,{children:[e.jsx(ot,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:N("detail.editInline")})]})})}),e.jsx(ht,{children:N(x?"detail.saveChanges":"detail.editFieldsInline")})]}),e.jsxs(mt,{children:[e.jsx(pt,{asChild:!0,children:e.jsx(B,{variant:"outline",size:"icon",onClick:S,className:"hidden sm:inline-flex",children:e.jsx(Es,{className:"h-4 w-4"})})}),e.jsx(ht,{children:N("detail.share")})]}),t.showEdit&&e.jsxs(mt,{children:[e.jsx(pt,{asChild:!0,children:e.jsxs(B,{variant:"default",onClick:R,className:"gap-2 hidden sm:inline-flex",children:[e.jsx(ot,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:N("detail.edit")})]})}),e.jsx(ht,{children:N("detail.editRecord")})]}),e.jsxs(pn,{children:[e.jsxs(mt,{children:[e.jsx(pt,{asChild:!0,children:e.jsx(hn,{asChild:!0,children:e.jsx(B,{variant:"ghost",size:"icon",children:e.jsx(Tn,{className:"h-4 w-4"})})})}),e.jsx(ht,{children:N("detail.moreActions")})]}),e.jsxs(xn,{align:"end",className:"w-[calc(100vw-2rem)] sm:w-48 max-h-[60vh] overflow-y-auto",children:[e.jsxs(Pt,{onClick:S,className:"sm:hidden",children:[e.jsx(Es,{className:"h-4 w-4 mr-2"}),N("detail.share")]}),t.showEdit&&e.jsxs(Pt,{onClick:R,className:"sm:hidden",children:[e.jsx(ot,{className:"h-4 w-4 mr-2"}),N("detail.edit")]}),c&&e.jsxs(Pt,{onClick:_,className:"sm:hidden",children:[e.jsx(ot,{className:"h-4 w-4 mr-2"}),N(x?"detail.save":"detail.editInline")]}),e.jsx(la,{className:"sm:hidden"}),e.jsxs(Pt,{onClick:T,children:[e.jsx(fr,{className:"h-4 w-4 mr-2"}),N("detail.duplicate")]}),e.jsxs(Pt,{onClick:$,children:[e.jsx(Vt,{className:"h-4 w-4 mr-2"}),N("detail.export")]}),e.jsxs(Pt,{onClick:F,children:[e.jsx(En,{className:"h-4 w-4 mr-2"}),N("detail.viewHistory")]}),t.showDelete&&e.jsxs(e.Fragment,{children:[e.jsx(la,{}),e.jsxs(Pt,{onClick:j,className:"text-destructive focus:text-destructive",children:[e.jsx(vt,{className:"h-4 w-4 mr-2"}),N("detail.delete")]})]})]})]})]})]}),t.header&&e.jsx("div",{children:e.jsx(Ie,{schema:t.header,data:o})}),t.highlightFields&&t.highlightFields.length>0&&e.jsx(wl,{fields:t.highlightFields,data:o,objectName:t.objectName}),t.autoTabs&&!t.tabs?.length?e.jsxs(Bs,{defaultValue:"details",className:"w-full",children:[e.jsxs(Vs,{className:"w-full justify-start border-b rounded-none bg-transparent p-0",children:[e.jsx(nt,{value:"details",className:"relative rounded-none border-b-2 border-transparent data-[state=active]:border-primary data-[state=active]:bg-transparent",children:N("detail.details")}),P.length>0&&e.jsx(nt,{value:"related",className:"relative rounded-none border-b-2 border-transparent data-[state=active]:border-primary data-[state=active]:bg-transparent",children:e.jsxs("span",{className:"flex items-center gap-1.5",children:[N("detail.related"),e.jsx(St,{variant:"secondary",className:"text-xs",children:P.length})]})}),t.activities&&t.activities.length>0&&e.jsx(nt,{value:"activity",className:"relative rounded-none border-b-2 border-transparent data-[state=active]:border-primary data-[state=active]:bg-transparent",children:e.jsxs("span",{className:"flex items-center gap-1.5",children:[N("detail.activity"),e.jsx(St,{variant:"secondary",className:"text-xs",children:t.activities.length})]})})]}),e.jsx(lt,{value:"details",className:"mt-4",children:e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[t.sectionGroups&&t.sectionGroups.length>0&&t.sectionGroups.map((C,z)=>e.jsx(ma,{group:C,data:{...o,...f},objectSchema:g,objectName:t.objectName,isEditing:x,onFieldChange:L},z)),t.sections&&t.sections.length>0&&t.sections.map((C,z)=>e.jsx($t,{section:C,data:{...o,...f},objectSchema:g,objectName:t.objectName,isEditing:x,onFieldChange:L},z)),t.fields&&t.fields.length>0&&!t.sections?.length&&e.jsx($t,{section:{fields:t.fields,columns:t.columns},data:{...o,...f},objectSchema:g,objectName:t.objectName,isEditing:x,onFieldChange:L}),t.comments&&e.jsx(pa,{comments:t.comments,onAddComment:t.onAddComment})]})}),P.length>0&&e.jsx(lt,{value:"related",className:"mt-4",children:e.jsx("div",{className:"space-y-4",children:P.map((C,z)=>e.jsx(Ms,{title:C.title,type:C.type,api:C.api,data:C.data,columns:C.columns,dataSource:s,objectName:C.api,collapsible:!0,pageSize:ba},z))})}),t.activities&&t.activities.length>0&&e.jsx(lt,{value:"activity",className:"mt-4",children:e.jsx(ga,{activities:t.activities})})]}):e.jsxs(e.Fragment,{children:[t.sectionGroups&&t.sectionGroups.length>0&&e.jsx("div",{className:"space-y-3 sm:space-y-4",children:t.sectionGroups.map((C,z)=>e.jsx(ma,{group:C,data:{...o,...f},objectSchema:g,objectName:t.objectName,isEditing:x,onFieldChange:L},z))}),t.sections&&t.sections.length>0&&e.jsx("div",{className:"space-y-3 sm:space-y-4",children:t.sections.map((C,z)=>e.jsx($t,{section:C,data:{...o,...f},objectSchema:g,objectName:t.objectName,isEditing:x,onFieldChange:L},z))}),t.fields&&t.fields.length>0&&!t.sections?.length&&e.jsx($t,{section:{fields:t.fields,columns:t.columns},data:{...o,...f},objectSchema:g,objectName:t.objectName,isEditing:x,onFieldChange:L}),t.tabs&&t.tabs.length>0&&e.jsx(jl,{tabs:t.tabs,data:o}),P.length>0&&e.jsxs("div",{className:"space-y-4",children:[e.jsx("h2",{className:"text-xl font-semibold",children:N("detail.related")}),P.map((C,z)=>e.jsx(Ms,{title:C.title,type:C.type,api:C.api,data:C.data,columns:C.columns,dataSource:s,objectName:C.api,collapsible:!0,pageSize:ba},z))]}),t.comments&&e.jsx(pa,{comments:t.comments,onAddComment:t.onAddComment}),t.activities&&t.activities.length>0&&e.jsx(ga,{activities:t.activities})]}),t.footer&&e.jsx("div",{children:e.jsx(Ie,{schema:t.footer,data:o})})]})})},Dl=({change:t,className:s})=>{const a=t.fieldLabel??t.field.charAt(0).toUpperCase()+t.field.slice(1).replace(/_/g," "),r=t.oldDisplayValue??(t.oldValue!=null?String(t.oldValue):"(empty)"),l=t.newDisplayValue??(t.newValue!=null?String(t.newValue):"(empty)");return e.jsxs("div",{className:V("flex items-center gap-1.5 text-sm flex-wrap",s),children:[e.jsx("span",{className:"font-medium text-foreground",children:a}),e.jsx("span",{className:"text-muted-foreground line-through",children:r}),e.jsx(An,{className:"h-3 w-3 text-muted-foreground shrink-0"}),e.jsx("span",{className:"text-foreground",children:l})]})},Rl=["👍","❤️","🎉","😂","😮","😢"],ya=({reactions:t,onToggleReaction:s,emojiOptions:a=Rl,className:r})=>{const[l,d]=m.useState(!1),c=m.useCallback(i=>{s?.(i),d(!1)},[s]);return e.jsxs("div",{className:V("flex items-center gap-1 flex-wrap",r),children:[t.map(i=>e.jsxs("button",{type:"button",className:V("inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-xs border transition-colors",i.reacted?"bg-primary/10 border-primary/30 text-primary":"bg-muted border-border text-muted-foreground hover:bg-muted/80"),onClick:()=>c(i.emoji),disabled:!s,"aria-label":`${i.emoji} ${i.count} reaction${i.count!==1?"s":""}`,children:[e.jsx("span",{children:i.emoji}),e.jsx("span",{children:i.count})]},i.emoji)),s&&e.jsxs("div",{className:"relative",children:[e.jsx(B,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:()=>d(!l),"aria-label":"Add reaction",children:e.jsx(zn,{className:"h-3.5 w-3.5"})}),l&&e.jsx("div",{className:"absolute bottom-full mb-1 left-0 bg-popover border rounded-md shadow-md z-50 p-1.5 flex gap-1",role:"listbox","aria-label":"Emoji picker",children:a.map(i=>e.jsx("button",{type:"button",className:"hover:bg-accent rounded p-1 text-base transition-colors",onClick:()=>c(i),role:"option","aria-selected":t.some(o=>o.emoji===i&&o.reacted),children:i},i))})]})]})};function Fl(t){try{const s=new Date(t),r=new Date().getTime()-s.getTime(),l=Math.floor(r/6e4);if(l<1)return"just now";if(l<60)return`${l}m ago`;const d=Math.floor(l/60);if(d<24)return`${d}h ago`;const c=Math.floor(d/24);return c<7?`${c}d ago`:s.toLocaleDateString()}catch{return t}}const Ol=({parentItem:t,replies:s,onAddReply:a,showReplyInput:r=!0,className:l})=>{const[d,c]=m.useState(!1),[i,o]=m.useState(""),[u,h]=m.useState(!1),n=m.useCallback(async()=>{const w=i.trim();if(!(!w||!a)){h(!0);try{await a(t.id,w),o("")}finally{h(!1)}}},[i,a,t.id]),k=m.useCallback(w=>{w.key==="Enter"&&(w.ctrlKey||w.metaKey)&&(w.preventDefault(),n())},[n]);return s.length===0&&!r?null:e.jsxs("div",{className:V("ml-10 mt-1",l),children:[s.length>0&&e.jsxs("button",{type:"button",className:"flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground transition-colors mb-1",onClick:()=>c(!d),"aria-expanded":d,children:[d?e.jsx(Dt,{className:"h-3 w-3"}):e.jsx(Mt,{className:"h-3 w-3"}),e.jsx(kt,{className:"h-3 w-3"}),e.jsxs("span",{children:[s.length," ",s.length===1?"reply":"replies"]})]}),d&&e.jsx("div",{className:"space-y-2 border-l-2 border-border pl-3",children:s.map(w=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx("div",{className:"shrink-0",children:w.actorAvatarUrl?e.jsx("img",{src:w.actorAvatarUrl,alt:w.actor,className:"h-6 w-6 rounded-full object-cover"}):e.jsx("div",{className:"h-6 w-6 rounded-full bg-muted flex items-center justify-center text-[10px] font-medium text-muted-foreground",children:w.actor.charAt(0).toUpperCase()})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:"text-xs font-medium",children:w.actor}),e.jsx("span",{className:"text-[10px] text-muted-foreground",children:Fl(w.createdAt)})]}),e.jsx("p",{className:"text-xs whitespace-pre-wrap break-words",children:w.body})]})]},w.id))}),r&&a&&e.jsxs("div",{className:"flex gap-1.5 mt-1.5",children:[e.jsx("input",{className:"flex-1 rounded-md border border-input bg-background px-2 py-1 text-xs placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",placeholder:"Reply…",value:i,onChange:w=>o(w.target.value),onKeyDown:k,disabled:u}),e.jsx(B,{variant:"ghost",size:"icon",className:"h-6 w-6 shrink-0",onClick:n,disabled:!i.trim()||u,"aria-label":"Send reply",children:e.jsx(pr,{className:"h-3 w-3"})})]})]})},Pl=({subscription:t,onToggle:s,className:a})=>{const[r,l]=m.useState(!1),d=m.useCallback(async()=>{if(s){l(!0);try{await s(!t.subscribed)}finally{l(!1)}}},[s,t.subscribed]);return e.jsx(B,{variant:"ghost",size:"icon",className:V("h-8 w-8",a),onClick:d,disabled:r||!s,"aria-label":t.subscribed?"Unsubscribe from notifications":"Subscribe to notifications",title:t.subscribed?"Subscribed — click to unsubscribe":"Subscribe to notifications",children:t.subscribed?e.jsx(Mn,{className:"h-4 w-4 text-primary"}):e.jsx(Ln,{className:"h-4 w-4 text-muted-foreground"})})},Tl={comment:kt,field_change:ot,task:In,event:ps,system:xr,email:hr,call:_n},El={comment:"bg-purple-100 text-purple-600",field_change:"bg-blue-100 text-blue-600",task:"bg-green-100 text-green-600",event:"bg-amber-100 text-amber-600",system:"bg-gray-100 text-gray-600",email:"bg-indigo-100 text-indigo-600",call:"bg-teal-100 text-teal-600"},Al=[{value:"all",label:"All Activity"},{value:"comments_only",label:"Comments Only"},{value:"changes_only",label:"Field Changes"},{value:"tasks_only",label:"Tasks Only"}];function zl(t){try{const s=new Date(t),r=new Date().getTime()-s.getTime(),l=Math.floor(r/6e4);if(l<1)return"just now";if(l<60)return`${l}m ago`;const d=Math.floor(l/60);if(d<24)return`${d}h ago`;const c=Math.floor(d/24);return c<7?`${c}d ago`:s.toLocaleDateString()}catch{return t}}function Ml(t,s){switch(s){case"comments_only":return t.filter(a=>a.type==="comment");case"changes_only":return t.filter(a=>a.type==="field_change");case"tasks_only":return t.filter(a=>a.type==="task");default:return t}}const va=({items:t,config:s,filterMode:a,onFilterChange:r,hasMore:l=!1,onLoadMore:d,loading:c=!1,onAddComment:i,onAddReply:o,onToggleReaction:u,subscription:h,onToggleSubscription:n,collapseWhenEmpty:k=!1,className:w})=>{const[x,b]=m.useState("all"),[f,p]=m.useState(""),[g,y]=m.useState(!1),[N,D]=m.useState(!1),R=a??x,j=s?.showFilterToggle!==!1,S=s?.showCommentInput!==!1&&!!i,T=s?.enableReactions??!1,$=s?.enableThreading??!1,F=s?.showSubscriptionToggle??!1,A=m.useMemo(()=>Ml(t,R),[t,R]),_=m.useMemo(()=>$?A.filter(I=>!I.parentId):A,[A,$]),L=m.useMemo(()=>{if(!$)return new Map;const I=new Map;for(const W of A)if(W.parentId){const le=I.get(W.parentId)??[];le.push(W),I.set(W.parentId,le)}return I},[A,$]),O=m.useCallback(I=>{r?r(I):b(I)},[r]),P=m.useCallback(async()=>{const I=f.trim();if(!(!I||!i)){y(!0);try{await i(I),p("")}finally{y(!1)}}},[f,i]),C=m.useCallback(I=>{I.key==="Enter"&&(I.ctrlKey||I.metaKey)&&(I.preventDefault(),P())},[P]),z=m.useCallback(async()=>{if(d){D(!0);try{await d()}finally{D(!1)}}},[d]);return e.jsxs(Oe,{className:V("",w),children:[e.jsx($e,{children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs(Be,{className:"flex items-center gap-2 text-base",children:[e.jsx(Gs,{className:"h-4 w-4"}),"Activity",e.jsxs("span",{className:"text-sm font-normal text-muted-foreground",children:["(",A.length,")"]})]}),e.jsx("div",{className:"flex items-center gap-1",children:F&&h&&e.jsx(Pl,{subscription:h,onToggle:n})})]})}),e.jsxs(Pe,{className:"space-y-4",children:[j&&e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("select",{className:"rounded-md border border-input bg-background px-2.5 py-1.5 text-sm focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",value:R,onChange:I=>O(I.target.value),"aria-label":"Filter activity",children:Al.map(I=>e.jsx("option",{value:I.value,children:I.label},I.value))})}),S&&e.jsxs("div",{className:"flex gap-2",children:[e.jsx("textarea",{className:"flex-1 min-h-[60px] rounded-md border border-input bg-background px-3 py-2 text-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring resize-none",placeholder:"Leave a comment… (Ctrl+Enter to submit)",value:f,onChange:I=>p(I.target.value),onKeyDown:C,disabled:g}),e.jsx(B,{size:"icon",variant:"default",onClick:P,disabled:!f.trim()||g,className:"shrink-0 self-end","aria-label":"Submit comment",children:e.jsx(kt,{className:"h-4 w-4"})})]}),A.length===0?k?null:e.jsx("p",{className:"text-sm text-muted-foreground text-center py-4",children:"No activity recorded"}):e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute left-4 top-2 bottom-2 w-px bg-border"}),e.jsx("div",{className:"space-y-4",children:_.map(I=>{const W=Tl[I.type]||xr,le=El[I.type]||"bg-gray-100 text-gray-600",me=L.get(I.id)??[];return e.jsxs("div",{children:[e.jsxs("div",{className:"flex gap-3 relative",children:[e.jsx("div",{className:V("shrink-0 h-8 w-8 rounded-full flex items-center justify-center z-10",le),children:I.actorAvatarUrl?e.jsx("img",{src:I.actorAvatarUrl,alt:I.actor,className:"h-8 w-8 rounded-full object-cover"}):e.jsx(W,{className:"h-3.5 w-3.5"})}),e.jsxs("div",{className:"flex-1 min-w-0 pt-1",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-0.5",children:[e.jsx("span",{className:"text-sm font-medium",children:I.actor}),I.source&&e.jsxs("span",{className:"text-xs text-muted-foreground",children:["via ",I.source]}),e.jsx("span",{className:"text-xs text-muted-foreground",children:zl(I.createdAt)}),I.edited&&e.jsx("span",{className:"text-xs text-muted-foreground italic",children:"(edited)"}),I.pinned&&e.jsx("span",{className:"text-xs text-amber-600",children:"📌 Pinned"})]}),I.body&&e.jsx("p",{className:"text-sm whitespace-pre-wrap break-words text-muted-foreground",children:I.body}),I.type==="field_change"&&I.fieldChanges&&e.jsx("div",{className:"space-y-1 mt-1",children:I.fieldChanges.map((de,Z)=>e.jsx(Dl,{change:de},Z))}),T&&I.reactions&&I.reactions.length>0&&e.jsx("div",{className:"mt-1.5",children:e.jsx(ya,{reactions:I.reactions,onToggleReaction:u?de=>u(I.id,de):void 0})}),T&&(!I.reactions||I.reactions.length===0)&&u&&e.jsx("div",{className:"mt-1.5",children:e.jsx(ya,{reactions:[],onToggleReaction:de=>u(I.id,de)})})]})]}),$&&(I.replyCount??0)>0&&e.jsx(Ol,{parentItem:I,replies:me,onAddReply:o,showReplyInput:!!o})]},I.id)})})]}),l&&e.jsx("div",{className:"text-center pt-2",children:e.jsxs(B,{variant:"ghost",size:"sm",onClick:z,disabled:N,"aria-label":"Load more activity",children:[N?e.jsx($n,{className:"h-4 w-4 animate-spin mr-1"}):e.jsx(Dt,{className:"h-4 w-4 mr-1"}),"Load more"]})})]})]})},Fo=({config:t,items:s,hasMore:a,onLoadMore:r,loading:l,onAddComment:d,onAddReply:c,onToggleReaction:i,subscription:o,onToggleSubscription:u,filterMode:h,onFilterChange:n,className:k})=>{const w=t?.position??"right",x=t?.width??"360px",b=t?.collapsible??!0,f=t?.defaultCollapsed??!1,[p,g]=m.useState(f);return w==="right"||w==="left"?p&&b?e.jsx("div",{className:V("flex items-start pt-4",w==="right"?"border-l":"border-r",k),children:e.jsx(B,{variant:"ghost",size:"icon",className:"h-8 w-8 mx-1",onClick:()=>g(!1),"aria-label":"Open discussion panel",children:e.jsx(Bn,{className:"h-4 w-4"})})}):e.jsxs("div",{className:V("flex flex-col overflow-hidden",w==="right"?"border-l":"border-r",k),style:{width:x,minWidth:x},children:[e.jsxs("div",{className:"flex items-center justify-between px-4 py-3 border-b",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(kt,{className:"h-4 w-4"}),e.jsx("span",{className:"text-sm font-medium",children:"Discussion"})]}),b&&e.jsx(B,{variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>g(!0),"aria-label":"Close discussion panel",children:e.jsx(ss,{className:"h-3.5 w-3.5"})})]}),e.jsx("div",{className:"flex-1 overflow-y-auto",children:e.jsx(va,{items:s,config:t?.feed,hasMore:a,onLoadMore:r,loading:l,onAddComment:d,onAddReply:c,onToggleReaction:i,subscription:o,onToggleSubscription:u,filterMode:h,onFilterChange:n,className:"border-0 shadow-none"})})]}):e.jsx("div",{className:V("",k),children:b&&p?e.jsxs(B,{variant:"ghost",className:"w-full justify-start gap-2 text-muted-foreground",onClick:()=>g(!1),"aria-label":"Show discussion",children:[e.jsx(kt,{className:"h-4 w-4"}),e.jsxs("span",{children:["Show Discussion (",s.length,")"]})]}):e.jsxs("div",{children:[b&&e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsxs("div",{className:"flex items-center gap-2 text-sm font-medium",children:[e.jsx(kt,{className:"h-4 w-4"}),"Discussion"]}),e.jsx(B,{variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>g(!0),"aria-label":"Hide discussion",children:e.jsx(Vn,{className:"h-3.5 w-3.5"})})]}),e.jsx(va,{items:s,config:t?.feed,hasMore:a,onLoadMore:r,loading:l,onAddComment:d,onAddReply:c,onToggleReaction:i,subscription:o,onToggleSubscription:u,filterMode:h,onFilterChange:n})]})})};Se.register("detail-view",Rr,{namespace:"plugin-detail",label:"Detail View",category:"Views",icon:"FileText",inputs:[{name:"title",type:"string",label:"Title"},{name:"objectName",type:"string",label:"Object Name"},{name:"resourceId",type:"string",label:"Resource ID"},{name:"api",type:"string",label:"API Endpoint"},{name:"data",type:"object",label:"Data"},{name:"layout",type:"enum",label:"Layout Mode",enum:["vertical","horizontal","grid"]},{name:"columns",type:"number",label:"Grid Columns"},{name:"sections",type:"array",label:"Sections"},{name:"fields",type:"array",label:"Fields"},{name:"tabs",type:"array",label:"Tabs"},{name:"related",type:"array",label:"Related Lists"},{name:"actions",type:"array",label:"Actions"},{name:"showBack",type:"boolean",label:"Show Back Button",defaultValue:!0},{name:"backUrl",type:"string",label:"Back URL"},{name:"showEdit",type:"boolean",label:"Show Edit Button",defaultValue:!1},{name:"editUrl",type:"string",label:"Edit URL"},{name:"showDelete",type:"boolean",label:"Show Delete Button",defaultValue:!1},{name:"deleteConfirmation",type:"string",label:"Delete Confirmation Message"},{name:"loading",type:"boolean",label:"Show Loading State"},{name:"header",type:"object",label:"Custom Header"},{name:"footer",type:"object",label:"Custom Footer"}],defaultProps:{title:"Detail View",showBack:!0,showEdit:!1,showDelete:!1,sections:[],fields:[],tabs:[],related:[]}});Se.register("detail-section",$t,{namespace:"plugin-detail",label:"Detail Section",category:"Detail Components",inputs:[{name:"title",type:"string",label:"Title"},{name:"description",type:"string",label:"Description"},{name:"fields",type:"array",label:"Fields",required:!0},{name:"collapsible",type:"boolean",label:"Collapsible",defaultValue:!1},{name:"defaultCollapsed",type:"boolean",label:"Default Collapsed",defaultValue:!1},{name:"columns",type:"number",label:"Columns",defaultValue:2},{name:"showBorder",type:"boolean",label:"Show Border",defaultValue:!0},{name:"headerColor",type:"string",label:"Header Color"}]});Se.register("related-list",Ms,{namespace:"plugin-detail",label:"Related List",category:"Detail Components",inputs:[{name:"title",type:"string",label:"Title",required:!0},{name:"type",type:"enum",label:"Type",enum:[{label:"List",value:"list"},{label:"Grid",value:"grid"},{label:"Table",value:"table"}],defaultValue:"table"},{name:"api",type:"string",label:"API Endpoint"},{name:"data",type:"array",label:"Data"},{name:"columns",type:"array",label:"Columns"}]});Se.register("detail",Rr,{namespace:"view",category:"view",label:"Detail",icon:"FileText",inputs:[{name:"objectName",type:"string",label:"Object Name",required:!0},{name:"recordId",type:"string",label:"Record ID"},{name:"fields",type:"array",label:"Fields"}]});function Ht(t){return t!=null&&typeof t=="object"&&!Array.isArray(t)&&t.provider==="object"}function ns(t){if(t!=null)return typeof t=="string"?t:t.defaultValue||t.key}const ks=["hsl(var(--chart-1))","hsl(var(--chart-2))","hsl(var(--chart-3))","hsl(var(--chart-4))","hsl(var(--chart-5))"],Ll=m.forwardRef(({schema:t,className:s,dataSource:a,onRefresh:r,recordCount:l,userActions:d,designMode:c,selectedWidgetId:i,onWidgetClick:o,...u},h)=>{const n=t.columns||4,k=t.gap||4,[w,x]=m.useState(!1),[b,f]=m.useState(!1),p=m.useRef(null);m.useEffect(()=>{const F=()=>f(window.innerWidth<768);return F(),window.addEventListener("resize",F),()=>window.removeEventListener("resize",F)},[]);const g=m.useCallback(()=>{r&&(x(!0),r(),setTimeout(()=>x(!1),600))},[r]);m.useEffect(()=>{if(!(!t.refreshInterval||t.refreshInterval<=0||!r))return p.current=setInterval(g,t.refreshInterval*1e3),()=>{p.current&&clearInterval(p.current)}},[t.refreshInterval,r,g]);const y=m.useCallback((F,A)=>{!c||!o||!A||(F.stopPropagation(),o(A))},[c,o]),N=m.useCallback((F,A,_)=>{if(!c||!o)return;const L=t.widgets||[];if(F.key==="Enter"||F.key===" ")F.preventDefault(),o(A??null);else if(F.key==="ArrowRight"||F.key==="ArrowDown"){F.preventDefault();const O=_+1<L.length?L[_+1]:null;O?.id&&o(O.id)}else if(F.key==="ArrowLeft"||F.key==="ArrowUp"){F.preventDefault();const O=_-1>=0?L[_-1]:null;O?.id&&o(O.id)}else F.key==="Escape"&&(F.preventDefault(),o(null))},[c,o,t.widgets]),D=m.useCallback(F=>{!c||!o||F.target===F.currentTarget&&o(null)},[c,o]),R=(F,A,_)=>{const L=F.layout?{...F.layout,w:Math.min(F.layout.w,n)}:void 0,P=(()=>{if(F.component)return F.component;const Z=F.type,fe=F.options||{};if(Z==="bar"||Z==="line"||Z==="area"||Z==="pie"||Z==="donut"||Z==="scatter"){const Y=F.data||fe.data,ee=F.categoryField||fe.xField||"name",xe=F.valueField||fe.yField||"value";if(Ht(Y)){const ae=Y.aggregate,G=ae?{field:F.valueField||ae.field,function:F.aggregate||ae.function,groupBy:F.categoryField||ae.groupBy}:void 0,H=G?.field||xe;return{type:"object-chart",chartType:Z,objectName:F.object||Y.object,aggregate:G,xAxisKey:ee,series:[{dataKey:H}],colors:ks,className:"h-[200px] sm:h-[250px] md:h-[300px]"}}if(!Y&&F.object){const ae=F.aggregate?{field:F.valueField||"value",function:F.aggregate,groupBy:F.categoryField||"name"}:void 0;return{type:"object-chart",chartType:Z,objectName:F.object,aggregate:ae,xAxisKey:ee,series:[{dataKey:F.valueField||"value"}],colors:ks,className:"h-[200px] sm:h-[250px] md:h-[300px]"}}const te=Array.isArray(Y)?Y:Y?.items||[];return{type:"chart",chartType:Z,data:te,xAxisKey:ee,series:[{dataKey:xe}],colors:ks,className:"h-[200px] sm:h-[250px] md:h-[300px]"}}if(Z==="table"){const Y=F.data||fe.data;if(Ht(Y)){const{data:ee,...xe}=fe;return{type:"object-data-table",...xe,objectName:F.object||Y.object,dataProvider:Y,filter:Y.filter||F.filter,searchable:F.searchable??!1,pagination:F.pagination??!1,className:"border-0"}}return!Y&&F.object?{type:"object-data-table",...fe,objectName:F.object,filter:F.filter,searchable:F.searchable??!1,pagination:F.pagination??!1,className:"border-0"}:{type:"data-table",...fe,data:Y?.items||[],searchable:!1,pagination:!1,className:"border-0"}}if(Z==="pivot"){const Y=F.data||fe.data;if(Ht(Y)){const{data:ee,...xe}=fe;return{type:"object-pivot",...xe,objectName:F.object||Y.object,dataProvider:Y,filter:Y.filter||F.filter}}return!Y&&F.object?{type:"object-pivot",...fe,objectName:F.object,filter:F.filter}:{type:"pivot",...fe,data:Array.isArray(Y)?Y:Y?.items||[]}}return{...F,...fe}})(),C=F.type==="metric",z=ns(F.title),I=ns(F.description),W=F.id||z||`widget-${A}`,le=c&&i===F.id,me=c?{"data-testid":`dashboard-preview-widget-${F.id}`,"data-widget-id":F.id,role:"button",tabIndex:0,"aria-selected":le,"aria-label":`Widget: ${z||`Widget ${A+1}`}`,onClick:Z=>y(Z,F.id),onKeyDown:Z=>N(Z,F.id,A)}:{},de=c?V("cursor-pointer rounded-lg transition-all outline-none","focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",le?"ring-2 ring-primary shadow-md bg-primary/5 dark:bg-primary/10":"hover:ring-2 hover:ring-primary/40 hover:shadow-sm"):void 0;return C?e.jsxs("div",{className:V("h-full w-full",c&&"relative",de),style:!b&&L?{gridColumn:`span ${L.w}`,gridRow:`span ${L.h}`}:void 0,...me,children:[e.jsx(Ie,{schema:P,className:V("h-full w-full",c&&"pointer-events-none")}),c&&e.jsx("div",{className:"absolute inset-0 z-10","aria-hidden":"true","data-testid":"widget-click-overlay"})]},W):e.jsxs(Oe,{className:V("overflow-hidden border-border/50 shadow-sm transition-all hover:shadow-md","bg-card/50 backdrop-blur-sm",_&&"w-full",c&&"relative",de),style:!b&&L?{gridColumn:`span ${L.w}`,gridRow:`span ${L.h}`}:void 0,...me,children:[z&&e.jsxs($e,{className:"pb-2 border-b border-border/40 bg-muted/20 px-3 sm:px-6",children:[e.jsx(Be,{className:"text-sm sm:text-base font-medium tracking-tight truncate",title:z,children:z}),I&&e.jsx("p",{className:"text-xs text-muted-foreground mt-0.5 line-clamp-2",children:I})]}),e.jsx(Pe,{className:"p-0",children:e.jsx("div",{className:V("h-full w-full","p-3 sm:p-4 md:p-6",c&&"pointer-events-none"),children:e.jsx(Ie,{schema:P})})}),c&&e.jsx("div",{className:"absolute inset-0 z-10","aria-hidden":"true","data-testid":"widget-click-overlay"})]},W)},j=t.header&&e.jsxs("div",{className:"col-span-full mb-4",children:[t.header.showTitle!==!1&&t.title&&e.jsx("h2",{className:"text-lg font-semibold tracking-tight",children:ns(t.title)}),t.header.showDescription!==!1&&t.description&&e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:ns(t.description)}),t.header.actions&&t.header.actions.length>0&&e.jsx("div",{className:"flex gap-2 mt-3",children:t.header.actions.map((F,A)=>e.jsx(B,{variant:"outline",size:"sm",children:F.label},A))})]}),S=l!==void 0&&e.jsxs("span",{className:"text-xs text-muted-foreground",children:[l.toLocaleString()," records"]}),T=d?JSON.stringify(d):void 0,$=r&&e.jsxs("div",{className:V("flex items-center justify-end gap-3 mb-2",!b&&"col-span-full"),children:[S,e.jsxs(B,{variant:"outline",size:"sm",onClick:g,disabled:w,"aria-label":"Refresh dashboard",children:[e.jsx(Us,{className:V("h-4 w-4 mr-2",w&&"animate-spin")}),w?"Refreshing…":"Refresh All"]})]});if(b){const F=t.widgets?.filter(_=>_.type==="metric")||[],A=t.widgets?.filter(_=>_.type!=="metric")||[];return e.jsxs("div",{ref:h,className:V("flex flex-col gap-4 px-4",s),"data-user-actions":T,onClick:D,...u,children:[j,$,F.length>0&&e.jsx("div",{className:"grid grid-cols-2 gap-3",onClick:D,children:F.map((_,L)=>R(_,L))}),A.length>0&&e.jsx("div",{className:"flex flex-col gap-4",onClick:D,children:A.map((_,L)=>R(_,L,!0))})]})}return e.jsxs("div",{ref:h,className:V("grid auto-rows-min","grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4",s),style:{...n>4&&{gridTemplateColumns:`repeat(${n}, minmax(0, 1fr))`},gap:`${k*.25}rem`},"data-user-actions":T,onClick:D,...u,children:[j,$,t.widgets?.map((F,A)=>R(F,A))]})});function Wt(t){const{margin:s,containerPadding:a,containerWidth:r,cols:l}=t;return(r-s[0]*(l-1)-a[0]*2)/l}function qt(t,s,a){return Number.isFinite(t)?Math.round(s*t+Math.max(0,t-1)*a):t}function Ut(t,s,a,r,l,d,c){const{margin:i,containerPadding:o,rowHeight:u}=t,h=Wt(t);let n,k,w,x;if(c?(n=Math.round(c.width),k=Math.round(c.height)):(n=qt(r,h,i[0]),k=qt(l,u,i[1])),d?(w=Math.round(d.top),x=Math.round(d.left)):c?(w=Math.round(c.top),x=Math.round(c.left)):(w=Math.round((u+i[1])*a+o[1]),x=Math.round((h+i[0])*s+o[0])),!d&&!c){if(Number.isFinite(r)){const f=Math.round((h+i[0])*(s+r)+o[0])-x-n;f!==i[0]&&(n+=f-i[0])}if(Number.isFinite(l)){const f=Math.round((u+i[1])*(a+l)+o[1])-w-k;f!==i[1]&&(k+=f-i[1])}}return{top:w,left:x,width:n,height:k}}function _l(t,s,a,r,l){const{margin:d,containerPadding:c,cols:i,rowHeight:o,maxRows:u}=t,h=Wt(t);let n=Math.round((a-c[0])/(h+d[0])),k=Math.round((s-c[1])/(o+d[1]));return n=fs(n,0,i-r),k=fs(k,0,u-l),{x:n,y:k}}function ls(t,s,a){const{margin:r,containerPadding:l,rowHeight:d}=t,c=Wt(t),i=Math.round((a-l[0])/(c+r[0])),o=Math.round((s-l[1])/(d+r[1]));return{x:i,y:o}}function Il(t,s,a){const{margin:r,rowHeight:l}=t,d=Wt(t),c=Math.max(1,Math.round((s+r[0])/(d+r[0]))),i=Math.max(1,Math.round((a+r[1])/(l+r[1])));return{w:c,h:i}}function fs(t,s,a){return Math.max(Math.min(t,a),s)}function Ks(t,s){return!(t.i===s.i||t.x+t.w<=s.x||t.x>=s.x+s.w||t.y+t.h<=s.y||t.y>=s.y+s.h)}function zt(t,s){for(let a=0;a<t.length;a++){const r=t[a];if(r!==void 0&&Ks(r,s))return r}}function Fr(t,s){return t.filter(a=>Ks(a,s))}function $l(t,s){return s==="horizontal"?Or(t):s==="vertical"||s==="wrap"?Ls(t):[...t]}function Ls(t){return[...t].sort((s,a)=>s.y!==a.y?s.y-a.y:s.x-a.x)}function Or(t){return[...t].sort((s,a)=>s.x!==a.x?s.x-a.x:s.y-a.y)}function xs(t){let s=0;for(let a=0;a<t.length;a++){const r=t[a];if(r!==void 0){const l=r.y+r.h;l>s&&(s=l)}}return s}function Tt(t,s){for(let a=0;a<t.length;a++){const r=t[a];if(r!==void 0&&r.i===s)return r}}function gs(t){return t.filter(s=>s.static===!0)}function Lt(t){return{i:t.i,x:t.x,y:t.y,w:t.w,h:t.h,minW:t.minW,maxW:t.maxW,minH:t.minH,maxH:t.maxH,moved:!!t.moved,static:!!t.static,isDraggable:t.isDraggable,isResizable:t.isResizable,resizeHandles:t.resizeHandles,constraints:t.constraints,isBounded:t.isBounded}}function Rt(t){const s=new Array(t.length);for(let a=0;a<t.length;a++){const r=t[a];r!==void 0&&(s[a]=Lt(r))}return s}function Bl(t,s){const a=new Array(t.length);for(let r=0;r<t.length;r++){const l=t[r];l!==void 0&&(s.i===l.i?a[r]=s:a[r]=l)}return a}function Vl(t,s,a){let r=Tt(t,s);return r?(r=a(Lt(r)),[Bl(t,r),r]):[[...t],null]}function Js(t,s){const a=gs(t);for(let r=0;r<t.length;r++){const l=t[r];if(l!==void 0)if(l.x+l.w>s.cols&&(l.x=s.cols-l.w),l.x<0&&(l.x=0,l.w=s.cols),!l.static)a.push(l);else for(;zt(a,l);)l.y++}return t}function At(t,s,a,r,l,d,c,i,o){if(s.static&&s.isDraggable!==!0)return[...t];if(s.y===r&&s.x===a)return[...t];const u=s.x,h=s.y;typeof a=="number"&&(s.x=a),typeof r=="number"&&(s.y=r),s.moved=!0;let n=$l(t,c);(c==="vertical"&&typeof r=="number"?h>=r:c==="horizontal"&&typeof a=="number"?u>=a:!1)&&(n=n.reverse());const w=Fr(n,s),x=w.length>0;if(x&&o)return Rt(t);if(x&&d)return s.x=u,s.y=h,s.moved=!1,t;let b=[...t];for(let f=0;f<w.length;f++){const p=w[f];p!==void 0&&(p.moved||(p.static?b=ja(b,p,s,l,c):b=ja(b,s,p,l,c)))}return b}function ja(t,s,a,r,l,d){const c=l==="horizontal",i=l==="vertical",o=s.static;if(r){r=!1;const n={x:c?Math.max(s.x-a.w,0):a.x,y:i?Math.max(s.y-a.h,0):a.y,w:a.w,h:a.h,i:"-1"},k=zt(t,n),w=k!==void 0&&k.y+k.h>s.y,x=k!==void 0&&s.x+s.w>k.x;if(!k)return At(t,a,c?n.x:void 0,i?n.y:void 0,r,o,l);if(w&&i)return At(t,a,void 0,a.y+1,r,o,l);if(w&&l===null)return s.y=a.y,a.y=a.y+a.h,[...t];if(x&&c)return At(t,s,a.x,void 0,r,o,l)}const u=c?a.x+1:void 0,h=i?a.y+1:void 0;return u===void 0&&h===void 0?[...t]:At(t,a,u,h,r,o,l)}function Bt(t,s,a){return Math.max(s,Math.min(a,t))}var Hl={name:"gridBounds",constrainPosition(t,s,a,{cols:r,maxRows:l}){return{x:Bt(s,0,Math.max(0,r-t.w)),y:Bt(a,0,Math.max(0,l-t.h))}},constrainSize(t,s,a,r,{cols:l,maxRows:d}){const c=r==="w"||r==="nw"||r==="sw"?t.x+t.w:l-t.x,i=r==="n"||r==="nw"||r==="ne"?t.y+t.h:d-t.y;return{w:Bt(s,1,Math.max(1,c)),h:Bt(a,1,Math.max(1,i))}}},ql={name:"minMaxSize",constrainSize(t,s,a){return{w:Bt(s,t.minW??1,t.maxW??1/0),h:Bt(a,t.minH??1,t.maxH??1/0)}}},Pr=[Hl,ql];function is(t,s,a,r,l){let d={x:a,y:r};for(const c of t)c.constrainPosition&&(d=c.constrainPosition(s,d.x,d.y,l));if(s.constraints)for(const c of s.constraints)c.constrainPosition&&(d=c.constrainPosition(s,d.x,d.y,l));return d}function Wl(t,s,a,r,l,d){let c={w:a,h:r};for(const i of t)i.constrainSize&&(c=i.constrainSize(s,c.w,c.h,l,d));if(s.constraints)for(const i of s.constraints)i.constrainSize&&(c=i.constrainSize(s,c.w,c.h,l,d));return c}function Tr({top:t,left:s,width:a,height:r}){const l=`translate(${s}px,${t}px)`;return{transform:l,WebkitTransform:l,MozTransform:l,msTransform:l,OTransform:l,width:`${a}px`,height:`${r}px`,position:"absolute"}}function Gl({top:t,left:s,width:a,height:r}){return{top:`${t}px`,left:`${s}px`,width:`${a}px`,height:`${r}px`,position:"absolute"}}function wa(t){return t*100+"%"}function Ul(t,s,a,r){return t+a>r?s:a}function Er(t,s,a){return t<0?s:a}function Yl(t){return Math.max(0,t)}function ms(t){return Math.max(0,t)}var Qs=(t,s,a)=>{const{left:r,height:l,width:d}=s,c=t.top-(l-t.height);return{left:r,width:d,height:Er(c,t.height,l),top:ms(c)}},Zs=(t,s,a)=>{const{top:r,left:l,height:d,width:c}=s;return{top:r,height:d,width:Ul(t.left,t.width,c,a),left:Yl(l)}},ea=(t,s,a)=>{const{top:r,height:l,width:d}=s,c=t.left+t.width-d;return c<0?{height:l,width:t.left+t.width,top:ms(r),left:0}:{height:l,width:d,top:ms(r),left:c}},ta=(t,s,a)=>{const{top:r,left:l,height:d,width:c}=s;return{width:c,left:l,height:Er(r,t.height,d),top:ms(r)}},Xl=(t,s,a)=>Qs(t,Zs(t,s,a)),Kl=(t,s,a)=>Qs(t,ea(t,s)),Jl=(t,s,a)=>ta(t,Zs(t,s,a)),Ql=(t,s,a)=>ta(t,ea(t,s)),Zl={n:Qs,ne:Xl,e:Zs,se:Jl,s:ta,sw:Ql,w:ea,nw:Kl};function ei(t,s,a,r){const l=Zl[t];return l?l(s,{...s,...a},r):a}var ti={type:"transform",scale:1,calcStyle(t){return Tr(t)}},si=ti,ai={cols:12,rowHeight:150,margin:[10,10],containerPadding:null,maxRows:1/0},ri={enabled:!0,bounded:!1,threshold:3},ni={enabled:!0,handles:["se"]},li={enabled:!1,defaultItem:{w:1,h:1}};function sa(t,s,a,r,l){const d=r==="x"?"w":"h";s[r]+=1;const c=t.findIndex(o=>o.i===s.i),i=l??gs(t).length>0;for(let o=c+1;o<t.length;o++){const u=t[o];if(u!==void 0&&!u.static){if(!i&&u.y>s.y+s.h)break;Ks(s,u)&&sa(t,u,a+s[d],r,i)}}s[r]=a}function ii(t,s,a,r){for(s.x=Math.max(s.x,0),s.y=Math.max(s.y,0),s.y=Math.min(r,s.y);s.y>0&&!zt(t,s);)s.y--;let l;for(;(l=zt(t,s))!==void 0;)sa(a,s,l.y+l.h,"y");return s.y=Math.max(s.y,0),s}function oi(t,s,a,r){for(s.x=Math.max(s.x,0),s.y=Math.max(s.y,0);s.x>0&&!zt(t,s);)s.x--;let l;for(;(l=zt(t,s))!==void 0;)if(sa(r,s,l.x+l.w,"x"),s.x+s.w>a)for(s.x=a-s.w,s.y++;s.x>0&&!zt(t,s);)s.x--;return s.x=Math.max(s.x,0),s}var Ar={type:"vertical",allowOverlap:!1,compact(t,s){const a=gs(t);let r=xs(a);const l=Ls(t),d=new Array(t.length);for(let c=0;c<l.length;c++){const i=l[c];if(i===void 0)continue;let o=Lt(i);o.static||(o=ii(a,o,l,r),r=Math.max(r,o.y+o.h),a.push(o));const u=t.indexOf(i);d[u]=o,o.moved=!1}return d}},zr={type:"horizontal",allowOverlap:!1,compact(t,s){const a=gs(t),r=Or(t),l=new Array(t.length);for(let d=0;d<r.length;d++){const c=r[d];if(c===void 0)continue;let i=Lt(c);i.static||(i=oi(a,i,s,r),a.push(i));const o=t.indexOf(c);l[o]=i,i.moved=!1}return l}},Mr={type:null,allowOverlap:!1,compact(t,s){return Rt(t)}},ci={...Ar,allowOverlap:!0,compact(t,s){return Rt(t)}},di={...zr,allowOverlap:!0,compact(t,s){return Rt(t)}},ui={...Mr,allowOverlap:!0};function aa(t,s=!1,a=!1){let r;return s?t==="vertical"?r=ci:t==="horizontal"?r=di:r=ui:t==="vertical"?r=Ar:t==="horizontal"?r=zr:r=Mr,a?{...r,preventCollision:a}:r}function Lr(t){return Object.keys(t).sort((a,r)=>t[a]-t[r])}function Na(t,s){const a=Lr(t);let r=a[0];if(r===void 0)throw new Error("No breakpoints defined");for(let l=1;l<a.length;l++){const d=a[l];if(d===void 0)continue;const c=t[d];s>c&&(r=d)}return r}function Ca(t,s){const a=s[t];if(a===void 0)throw new Error(`ResponsiveReactGridLayout: \`cols\` entry for breakpoint ${String(t)} is missing!`);return a}function Ds(t,s,a,r,l,d){const c=t[a];if(c)return Rt(c);let i=t[r];const o=Lr(s),u=o.slice(o.indexOf(a));for(let w=0;w<u.length;w++){const x=u[w];if(x===void 0)continue;const b=t[x];if(b){i=b;break}}const h=Rt(i||[]),n=Js(h,{cols:l});return(typeof d=="object"&&d!==null?d:aa(d)).compact(n,l)}function os(t,s){if(Array.isArray(t))return t;const a=t,r=a[s];if(r!==void 0)return r;const l=Object.keys(a);for(const d of l){const c=a[d];if(c!==void 0)return c}return[10,10]}function _r(t){return function(a,r,l,d,c,i,o){return t(a,r,o)}}function bs(t){return function(a,r,l,d){if(!a||!r||typeof a!="object"||typeof r!="object")return t(a,r,l,d);var c=d.get(a),i=d.get(r);if(c&&i)return c===r&&i===a;d.set(a,r),d.set(r,a);var o=t(a,r,l,d);return d.delete(a),d.delete(r),o}}function Ir(t,s){var a={};for(var r in t)a[r]=t[r];for(var r in s)a[r]=s[r];return a}function Sa(t){return t.constructor===Object||t.constructor==null}function ka(t){return typeof t.then=="function"}function ys(t,s){return t===s||t!==t&&s!==s}var fi="[object Arguments]",mi="[object Boolean]",pi="[object Date]",hi="[object RegExp]",xi="[object Map]",gi="[object Number]",bi="[object Object]",yi="[object Set]",vi="[object String]",Da=Object.prototype.toString;function vs(t){var s=t.areArraysEqual,a=t.areDatesEqual,r=t.areMapsEqual,l=t.areObjectsEqual,d=t.areRegExpsEqual,c=t.areSetsEqual,i=t.createIsNestedEqual,o=i(u);function u(h,n,k){if(h===n)return!0;if(!h||!n||typeof h!="object"||typeof n!="object")return h!==h&&n!==n;if(Sa(h)&&Sa(n))return l(h,n,o,k);var w=Array.isArray(h),x=Array.isArray(n);if(w||x)return w===x&&s(h,n,o,k);var b=Da.call(h);return b!==Da.call(n)?!1:b===pi?a(h,n,o,k):b===hi?d(h,n,o,k):b===xi?r(h,n,o,k):b===yi?c(h,n,o,k):b===bi||b===fi?ka(h)||ka(n)?!1:l(h,n,o,k):b===mi||b===gi||b===vi?ys(h.valueOf(),n.valueOf()):!1}return u}function $r(t,s,a,r){var l=t.length;if(s.length!==l)return!1;for(;l-- >0;)if(!a(t[l],s[l],l,l,t,s,r))return!1;return!0}var ji=bs($r);function Br(t,s){return ys(t.valueOf(),s.valueOf())}function Vr(t,s,a,r){var l=t.size===s.size;if(!l)return!1;if(!t.size)return!0;var d={},c=0;return t.forEach(function(i,o){if(l){var u=!1,h=0;s.forEach(function(n,k){!u&&!d[h]&&(u=a(o,k,c,h,t,s,r)&&a(i,n,o,k,t,s,r))&&(d[h]=!0),h++}),c++,l=u}}),l}var wi=bs(Vr),Ni="_owner",Ci=Object.prototype.hasOwnProperty;function Hr(t,s,a,r){var l=Object.keys(t),d=l.length;if(Object.keys(s).length!==d)return!1;for(var c;d-- >0;){if(c=l[d],c===Ni){var i=!!t.$$typeof,o=!!s.$$typeof;if((i||o)&&i!==o)return!1}if(!Ci.call(s,c)||!a(t[c],s[c],c,c,t,s,r))return!1}return!0}var Si=bs(Hr);function qr(t,s){return t.source===s.source&&t.flags===s.flags}function Wr(t,s,a,r){var l=t.size===s.size;if(!l)return!1;if(!t.size)return!0;var d={};return t.forEach(function(c,i){if(l){var o=!1,u=0;s.forEach(function(h,n){!o&&!d[u]&&(o=a(c,h,i,n,t,s,r))&&(d[u]=!0),u++}),l=o}}),l}var ki=bs(Wr),Gr=Object.freeze({areArraysEqual:$r,areDatesEqual:Br,areMapsEqual:Vr,areObjectsEqual:Hr,areRegExpsEqual:qr,areSetsEqual:Wr,createIsNestedEqual:_r}),Ur=Object.freeze({areArraysEqual:ji,areDatesEqual:Br,areMapsEqual:wi,areObjectsEqual:Si,areRegExpsEqual:qr,areSetsEqual:ki,createIsNestedEqual:_r}),Di=vs(Gr);function yt(t,s){return Di(t,s,void 0)}vs(Ir(Gr,{createIsNestedEqual:function(){return ys}}));vs(Ur);vs(Ir(Ur,{createIsNestedEqual:function(){return ys}}));function Ri(t={}){const{measureBeforeMount:s=!1,initialWidth:a=1280}=t,[r,l]=m.useState(a),[d,c]=m.useState(!s),i=m.useRef(null),o=m.useRef(null),u=m.useCallback(()=>{const h=i.current;if(h){const n=h.offsetWidth;l(n),d||c(!0)}},[d]);return m.useEffect(()=>{const h=i.current;if(h)return u(),typeof ResizeObserver<"u"&&(o.current=new ResizeObserver(n=>{const k=n[0];if(k){const w=k.contentRect.width;l(w)}}),o.current.observe(h)),()=>{o.current&&(o.current.disconnect(),o.current=null)}},[u]),{width:r,mounted:d,containerRef:i,measureWidth:u}}var Yt={exports:{}},Rs={},De={},Nt={},Ra;function js(){if(Ra)return Nt;Ra=1,Object.defineProperty(Nt,"__esModule",{value:!0}),Nt.dontSetMe=l,Nt.findInArray=t,Nt.int=r,Nt.isFunction=s,Nt.isNum=a;function t(d,c){for(let i=0,o=d.length;i<o;i++)if(c.apply(c,[d[i],i,d]))return d[i]}function s(d){return typeof d=="function"||Object.prototype.toString.call(d)==="[object Function]"}function a(d){return typeof d=="number"&&!isNaN(d)}function r(d){return parseInt(d,10)}function l(d,c,i){if(d[c])return new Error(`Invalid prop ${c} passed to ${i} - do not set this, set it on the child.`)}return Nt}var Ct={},Fa;function Fi(){if(Fa)return Ct;Fa=1,Object.defineProperty(Ct,"__esModule",{value:!0}),Ct.browserPrefixToKey=a,Ct.browserPrefixToStyle=r,Ct.default=void 0,Ct.getPrefix=s;const t=["Moz","Webkit","O","ms"];function s(){let d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"transform";if(typeof window>"u")return"";const c=window.document?.documentElement?.style;if(!c||d in c)return"";for(let i=0;i<t.length;i++)if(a(d,t[i])in c)return t[i];return""}function a(d,c){return c?`${c}${l(d)}`:d}function r(d,c){return c?`-${c.toLowerCase()}-${d}`:d}function l(d){let c="",i=!0;for(let o=0;o<d.length;o++)i?(c+=d[o].toUpperCase(),i=!1):d[o]==="-"?i=!0:c+=d[o];return c}return Ct.default=s(),Ct}var Oa;function ra(){if(Oa)return De;Oa=1,Object.defineProperty(De,"__esModule",{value:!0}),De.addClassName=D,De.addEvent=c,De.addUserSelectStyles=g,De.createCSSTransform=w,De.createSVGTransform=x,De.getTouch=f,De.getTouchIdentifier=p,De.getTranslation=b,De.innerHeight=h,De.innerWidth=n,De.matchesSelector=l,De.matchesSelectorAndParentsTo=d,De.offsetXYFromParent=k,De.outerHeight=o,De.outerWidth=u,De.removeClassName=R,De.removeEvent=i,De.scheduleRemoveUserSelectStyles=y;var t=js(),s=a(Fi());function a(j,S){if(typeof WeakMap=="function")var T=new WeakMap,$=new WeakMap;return(a=function(F,A){if(!A&&F&&F.__esModule)return F;var _,L,O={__proto__:null,default:F};if(F===null||typeof F!="object"&&typeof F!="function")return O;if(_=A?$:T){if(_.has(F))return _.get(F);_.set(F,O)}for(const P in F)P!=="default"&&{}.hasOwnProperty.call(F,P)&&((L=(_=Object.defineProperty)&&Object.getOwnPropertyDescriptor(F,P))&&(L.get||L.set)?_(O,P,L):O[P]=F[P]);return O})(j,S)}let r="";function l(j,S){return r||(r=(0,t.findInArray)(["matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector"],function(T){return(0,t.isFunction)(j[T])})),(0,t.isFunction)(j[r])?j[r](S):!1}function d(j,S,T){let $=j;do{if(l($,S))return!0;if($===T)return!1;$=$.parentNode}while($);return!1}function c(j,S,T,$){if(!j)return;const F={capture:!0,...$};j.addEventListener?j.addEventListener(S,T,F):j.attachEvent?j.attachEvent("on"+S,T):j["on"+S]=T}function i(j,S,T,$){if(!j)return;const F={capture:!0,...$};j.removeEventListener?j.removeEventListener(S,T,F):j.detachEvent?j.detachEvent("on"+S,T):j["on"+S]=null}function o(j){let S=j.clientHeight;const T=j.ownerDocument.defaultView.getComputedStyle(j);return S+=(0,t.int)(T.borderTopWidth),S+=(0,t.int)(T.borderBottomWidth),S}function u(j){let S=j.clientWidth;const T=j.ownerDocument.defaultView.getComputedStyle(j);return S+=(0,t.int)(T.borderLeftWidth),S+=(0,t.int)(T.borderRightWidth),S}function h(j){let S=j.clientHeight;const T=j.ownerDocument.defaultView.getComputedStyle(j);return S-=(0,t.int)(T.paddingTop),S-=(0,t.int)(T.paddingBottom),S}function n(j){let S=j.clientWidth;const T=j.ownerDocument.defaultView.getComputedStyle(j);return S-=(0,t.int)(T.paddingLeft),S-=(0,t.int)(T.paddingRight),S}function k(j,S,T){const F=S===S.ownerDocument.body?{left:0,top:0}:S.getBoundingClientRect(),A=(j.clientX+S.scrollLeft-F.left)/T,_=(j.clientY+S.scrollTop-F.top)/T;return{x:A,y:_}}function w(j,S){const T=b(j,S,"px");return{[(0,s.browserPrefixToKey)("transform",s.default)]:T}}function x(j,S){return b(j,S,"")}function b(j,S,T){let{x:$,y:F}=j,A=`translate(${$}${T},${F}${T})`;if(S){const _=`${typeof S.x=="string"?S.x:S.x+T}`,L=`${typeof S.y=="string"?S.y:S.y+T}`;A=`translate(${_}, ${L})`+A}return A}function f(j,S){return j.targetTouches&&(0,t.findInArray)(j.targetTouches,T=>S===T.identifier)||j.changedTouches&&(0,t.findInArray)(j.changedTouches,T=>S===T.identifier)}function p(j){if(j.targetTouches&&j.targetTouches[0])return j.targetTouches[0].identifier;if(j.changedTouches&&j.changedTouches[0])return j.changedTouches[0].identifier}function g(j){if(!j)return;let S=j.getElementById("react-draggable-style-el");S||(S=j.createElement("style"),S.type="text/css",S.id="react-draggable-style-el",S.innerHTML=`.react-draggable-transparent-selection *::-moz-selection {all: inherit;}
4
+ `,S.innerHTML+=`.react-draggable-transparent-selection *::selection {all: inherit;}
5
+ `,j.getElementsByTagName("head")[0].appendChild(S)),j.body&&D(j.body,"react-draggable-transparent-selection")}function y(j){window.requestAnimationFrame?window.requestAnimationFrame(()=>{N(j)}):N(j)}function N(j){if(j)try{if(j.body&&R(j.body,"react-draggable-transparent-selection"),j.selection)j.selection.empty();else{const S=(j.defaultView||window).getSelection();S&&S.type!=="Caret"&&S.removeAllRanges()}}catch{}}function D(j,S){j.classList?j.classList.add(S):j.className.match(new RegExp(`(?:^|\\s)${S}(?!\\S)`))||(j.className+=` ${S}`)}function R(j,S){j.classList?j.classList.remove(S):j.className=j.className.replace(new RegExp(`(?:^|\\s)${S}(?!\\S)`,"g"),"")}return De}var rt={},Pa;function Yr(){if(Pa)return rt;Pa=1,Object.defineProperty(rt,"__esModule",{value:!0}),rt.canDragX=l,rt.canDragY=d,rt.createCoreData=i,rt.createDraggableData=o,rt.getBoundPosition=a,rt.getControlPosition=c,rt.snapToGrid=r;var t=js(),s=ra();function a(n,k,w){if(!n.props.bounds)return[k,w];let{bounds:x}=n.props;x=typeof x=="string"?x:u(x);const b=h(n);if(typeof x=="string"){const{ownerDocument:f}=b,p=f.defaultView;let g;if(x==="parent"?g=b.parentNode:g=b.getRootNode().querySelector(x),!(g instanceof p.HTMLElement))throw new Error('Bounds selector "'+x+'" could not find an element.');const y=g,N=p.getComputedStyle(b),D=p.getComputedStyle(y);x={left:-b.offsetLeft+(0,t.int)(D.paddingLeft)+(0,t.int)(N.marginLeft),top:-b.offsetTop+(0,t.int)(D.paddingTop)+(0,t.int)(N.marginTop),right:(0,s.innerWidth)(y)-(0,s.outerWidth)(b)-b.offsetLeft+(0,t.int)(D.paddingRight)-(0,t.int)(N.marginRight),bottom:(0,s.innerHeight)(y)-(0,s.outerHeight)(b)-b.offsetTop+(0,t.int)(D.paddingBottom)-(0,t.int)(N.marginBottom)}}return(0,t.isNum)(x.right)&&(k=Math.min(k,x.right)),(0,t.isNum)(x.bottom)&&(w=Math.min(w,x.bottom)),(0,t.isNum)(x.left)&&(k=Math.max(k,x.left)),(0,t.isNum)(x.top)&&(w=Math.max(w,x.top)),[k,w]}function r(n,k,w){const x=Math.round(k/n[0])*n[0],b=Math.round(w/n[1])*n[1];return[x,b]}function l(n){return n.props.axis==="both"||n.props.axis==="x"}function d(n){return n.props.axis==="both"||n.props.axis==="y"}function c(n,k,w){const x=typeof k=="number"?(0,s.getTouch)(n,k):null;if(typeof k=="number"&&!x)return null;const b=h(w),f=w.props.offsetParent||b.offsetParent||b.ownerDocument.body;return(0,s.offsetXYFromParent)(x||n,f,w.props.scale)}function i(n,k,w){const x=!(0,t.isNum)(n.lastX),b=h(n);return x?{node:b,deltaX:0,deltaY:0,lastX:k,lastY:w,x:k,y:w}:{node:b,deltaX:k-n.lastX,deltaY:w-n.lastY,lastX:n.lastX,lastY:n.lastY,x:k,y:w}}function o(n,k){const w=n.props.scale;return{node:k.node,x:n.state.x+k.deltaX/w,y:n.state.y+k.deltaY/w,deltaX:k.deltaX/w,deltaY:k.deltaY/w,lastX:n.state.x,lastY:n.state.y}}function u(n){return{left:n.left,top:n.top,right:n.right,bottom:n.bottom}}function h(n){const k=n.findDOMNode();if(!k)throw new Error("<DraggableCore>: Unmounted during event!");return k}return rt}var Xt={},cs={},Ta;function Xr(){if(Ta)return cs;Ta=1,Object.defineProperty(cs,"__esModule",{value:!0}),cs.default=t;function t(){}return cs}var Ea;function Oi(){if(Ea)return Xt;Ea=1,Object.defineProperty(Xt,"__esModule",{value:!0}),Xt.default=void 0;var t=o(ts()),s=i(hs()),a=i(Ja()),r=ra(),l=Yr(),d=js(),c=i(Xr());function i(b){return b&&b.__esModule?b:{default:b}}function o(b,f){if(typeof WeakMap=="function")var p=new WeakMap,g=new WeakMap;return(o=function(y,N){if(!N&&y&&y.__esModule)return y;var D,R,j={__proto__:null,default:y};if(y===null||typeof y!="object"&&typeof y!="function")return j;if(D=N?g:p){if(D.has(y))return D.get(y);D.set(y,j)}for(const S in y)S!=="default"&&{}.hasOwnProperty.call(y,S)&&((R=(D=Object.defineProperty)&&Object.getOwnPropertyDescriptor(y,S))&&(R.get||R.set)?D(j,S,R):j[S]=y[S]);return j})(b,f)}function u(b,f,p){return(f=h(f))in b?Object.defineProperty(b,f,{value:p,enumerable:!0,configurable:!0,writable:!0}):b[f]=p,b}function h(b){var f=n(b,"string");return typeof f=="symbol"?f:f+""}function n(b,f){if(typeof b!="object"||!b)return b;var p=b[Symbol.toPrimitive];if(p!==void 0){var g=p.call(b,f);if(typeof g!="object")return g;throw new TypeError("@@toPrimitive must return a primitive value.")}return(f==="string"?String:Number)(b)}const k={touch:{start:"touchstart",move:"touchmove",stop:"touchend"},mouse:{start:"mousedown",move:"mousemove",stop:"mouseup"}};let w=k.mouse,x=class extends t.Component{constructor(){super(...arguments),u(this,"dragging",!1),u(this,"lastX",NaN),u(this,"lastY",NaN),u(this,"touchIdentifier",null),u(this,"mounted",!1),u(this,"handleDragStart",f=>{if(this.props.onMouseDown(f),!this.props.allowAnyClick&&typeof f.button=="number"&&f.button!==0)return!1;const p=this.findDOMNode();if(!p||!p.ownerDocument||!p.ownerDocument.body)throw new Error("<DraggableCore> not mounted on DragStart!");const{ownerDocument:g}=p;if(this.props.disabled||!(f.target instanceof g.defaultView.Node)||this.props.handle&&!(0,r.matchesSelectorAndParentsTo)(f.target,this.props.handle,p)||this.props.cancel&&(0,r.matchesSelectorAndParentsTo)(f.target,this.props.cancel,p))return;f.type==="touchstart"&&!this.props.allowMobileScroll&&f.preventDefault();const y=(0,r.getTouchIdentifier)(f);this.touchIdentifier=y;const N=(0,l.getControlPosition)(f,y,this);if(N==null)return;const{x:D,y:R}=N,j=(0,l.createCoreData)(this,D,R);(0,c.default)("DraggableCore: handleDragStart: %j",j),(0,c.default)("calling",this.props.onStart),!(this.props.onStart(f,j)===!1||this.mounted===!1)&&(this.props.enableUserSelectHack&&(0,r.addUserSelectStyles)(g),this.dragging=!0,this.lastX=D,this.lastY=R,(0,r.addEvent)(g,w.move,this.handleDrag),(0,r.addEvent)(g,w.stop,this.handleDragStop))}),u(this,"handleDrag",f=>{const p=(0,l.getControlPosition)(f,this.touchIdentifier,this);if(p==null)return;let{x:g,y}=p;if(Array.isArray(this.props.grid)){let R=g-this.lastX,j=y-this.lastY;if([R,j]=(0,l.snapToGrid)(this.props.grid,R,j),!R&&!j)return;g=this.lastX+R,y=this.lastY+j}const N=(0,l.createCoreData)(this,g,y);if((0,c.default)("DraggableCore: handleDrag: %j",N),this.props.onDrag(f,N)===!1||this.mounted===!1){try{this.handleDragStop(new MouseEvent("mouseup"))}catch{const j=document.createEvent("MouseEvents");j.initMouseEvent("mouseup",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),this.handleDragStop(j)}return}this.lastX=g,this.lastY=y}),u(this,"handleDragStop",f=>{if(!this.dragging)return;const p=(0,l.getControlPosition)(f,this.touchIdentifier,this);if(p==null)return;let{x:g,y}=p;if(Array.isArray(this.props.grid)){let j=g-this.lastX||0,S=y-this.lastY||0;[j,S]=(0,l.snapToGrid)(this.props.grid,j,S),g=this.lastX+j,y=this.lastY+S}const N=(0,l.createCoreData)(this,g,y);if(this.props.onStop(f,N)===!1||this.mounted===!1)return!1;const R=this.findDOMNode();R&&this.props.enableUserSelectHack&&(0,r.scheduleRemoveUserSelectStyles)(R.ownerDocument),(0,c.default)("DraggableCore: handleDragStop: %j",N),this.dragging=!1,this.lastX=NaN,this.lastY=NaN,R&&((0,c.default)("DraggableCore: Removing handlers"),(0,r.removeEvent)(R.ownerDocument,w.move,this.handleDrag),(0,r.removeEvent)(R.ownerDocument,w.stop,this.handleDragStop))}),u(this,"onMouseDown",f=>(w=k.mouse,this.handleDragStart(f))),u(this,"onMouseUp",f=>(w=k.mouse,this.handleDragStop(f))),u(this,"onTouchStart",f=>(w=k.touch,this.handleDragStart(f))),u(this,"onTouchEnd",f=>(w=k.touch,this.handleDragStop(f)))}componentDidMount(){this.mounted=!0;const f=this.findDOMNode();f&&(0,r.addEvent)(f,k.touch.start,this.onTouchStart,{passive:!1})}componentWillUnmount(){this.mounted=!1;const f=this.findDOMNode();if(f){const{ownerDocument:p}=f;(0,r.removeEvent)(p,k.mouse.move,this.handleDrag),(0,r.removeEvent)(p,k.touch.move,this.handleDrag),(0,r.removeEvent)(p,k.mouse.stop,this.handleDragStop),(0,r.removeEvent)(p,k.touch.stop,this.handleDragStop),(0,r.removeEvent)(f,k.touch.start,this.onTouchStart,{passive:!1}),this.props.enableUserSelectHack&&(0,r.scheduleRemoveUserSelectStyles)(p)}}findDOMNode(){return this.props?.nodeRef?this.props?.nodeRef?.current:a.default.findDOMNode(this)}render(){return t.cloneElement(t.Children.only(this.props.children),{onMouseDown:this.onMouseDown,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}};return Xt.default=x,u(x,"displayName","DraggableCore"),u(x,"propTypes",{allowAnyClick:s.default.bool,allowMobileScroll:s.default.bool,children:s.default.node.isRequired,disabled:s.default.bool,enableUserSelectHack:s.default.bool,offsetParent:function(b,f){if(b[f]&&b[f].nodeType!==1)throw new Error("Draggable's offsetParent must be a DOM Node.")},grid:s.default.arrayOf(s.default.number),handle:s.default.string,cancel:s.default.string,nodeRef:s.default.object,onStart:s.default.func,onDrag:s.default.func,onStop:s.default.func,onMouseDown:s.default.func,scale:s.default.number,className:d.dontSetMe,style:d.dontSetMe,transform:d.dontSetMe}),u(x,"defaultProps",{allowAnyClick:!1,allowMobileScroll:!1,disabled:!1,enableUserSelectHack:!0,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){},scale:1}),Xt}var Aa;function Pi(){return Aa||(Aa=1,(function(t){Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"DraggableCore",{enumerable:!0,get:function(){return o.default}}),t.default=void 0;var s=n(ts()),a=h(hs()),r=h(Ja()),l=Gn(),d=ra(),c=Yr(),i=js(),o=h(Oi()),u=h(Xr());function h(p){return p&&p.__esModule?p:{default:p}}function n(p,g){if(typeof WeakMap=="function")var y=new WeakMap,N=new WeakMap;return(n=function(D,R){if(!R&&D&&D.__esModule)return D;var j,S,T={__proto__:null,default:D};if(D===null||typeof D!="object"&&typeof D!="function")return T;if(j=R?N:y){if(j.has(D))return j.get(D);j.set(D,T)}for(const $ in D)$!=="default"&&{}.hasOwnProperty.call(D,$)&&((S=(j=Object.defineProperty)&&Object.getOwnPropertyDescriptor(D,$))&&(S.get||S.set)?j(T,$,S):T[$]=D[$]);return T})(p,g)}function k(){return k=Object.assign?Object.assign.bind():function(p){for(var g=1;g<arguments.length;g++){var y=arguments[g];for(var N in y)({}).hasOwnProperty.call(y,N)&&(p[N]=y[N])}return p},k.apply(null,arguments)}function w(p,g,y){return(g=x(g))in p?Object.defineProperty(p,g,{value:y,enumerable:!0,configurable:!0,writable:!0}):p[g]=y,p}function x(p){var g=b(p,"string");return typeof g=="symbol"?g:g+""}function b(p,g){if(typeof p!="object"||!p)return p;var y=p[Symbol.toPrimitive];if(y!==void 0){var N=y.call(p,g);if(typeof N!="object")return N;throw new TypeError("@@toPrimitive must return a primitive value.")}return(g==="string"?String:Number)(p)}class f extends s.Component{static getDerivedStateFromProps(g,y){let{position:N}=g,{prevPropsPosition:D}=y;return N&&(!D||N.x!==D.x||N.y!==D.y)?((0,u.default)("Draggable: getDerivedStateFromProps %j",{position:N,prevPropsPosition:D}),{x:N.x,y:N.y,prevPropsPosition:{...N}}):null}constructor(g){super(g),w(this,"onDragStart",(y,N)=>{if((0,u.default)("Draggable: onDragStart: %j",N),this.props.onStart(y,(0,c.createDraggableData)(this,N))===!1)return!1;this.setState({dragging:!0,dragged:!0})}),w(this,"onDrag",(y,N)=>{if(!this.state.dragging)return!1;(0,u.default)("Draggable: onDrag: %j",N);const D=(0,c.createDraggableData)(this,N),R={x:D.x,y:D.y,slackX:0,slackY:0};if(this.props.bounds){const{x:S,y:T}=R;R.x+=this.state.slackX,R.y+=this.state.slackY;const[$,F]=(0,c.getBoundPosition)(this,R.x,R.y);R.x=$,R.y=F,R.slackX=this.state.slackX+(S-R.x),R.slackY=this.state.slackY+(T-R.y),D.x=R.x,D.y=R.y,D.deltaX=R.x-this.state.x,D.deltaY=R.y-this.state.y}if(this.props.onDrag(y,D)===!1)return!1;this.setState(R)}),w(this,"onDragStop",(y,N)=>{if(!this.state.dragging||this.props.onStop(y,(0,c.createDraggableData)(this,N))===!1)return!1;(0,u.default)("Draggable: onDragStop: %j",N);const R={dragging:!1,slackX:0,slackY:0};if(!!this.props.position){const{x:S,y:T}=this.props.position;R.x=S,R.y=T}this.setState(R)}),this.state={dragging:!1,dragged:!1,x:g.position?g.position.x:g.defaultPosition.x,y:g.position?g.position.y:g.defaultPosition.y,prevPropsPosition:{...g.position},slackX:0,slackY:0,isElementSVG:!1},g.position&&!(g.onDrag||g.onStop)&&console.warn("A `position` was applied to this <Draggable>, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.")}componentDidMount(){typeof window.SVGElement<"u"&&this.findDOMNode()instanceof window.SVGElement&&this.setState({isElementSVG:!0})}componentWillUnmount(){this.state.dragging&&this.setState({dragging:!1})}findDOMNode(){return this.props?.nodeRef?.current??r.default.findDOMNode(this)}render(){const{axis:g,bounds:y,children:N,defaultPosition:D,defaultClassName:R,defaultClassNameDragging:j,defaultClassNameDragged:S,position:T,positionOffset:$,scale:F,...A}=this.props;let _={},L=null;const P=!!!T||this.state.dragging,C=T||D,z={x:(0,c.canDragX)(this)&&P?this.state.x:C.x,y:(0,c.canDragY)(this)&&P?this.state.y:C.y};this.state.isElementSVG?L=(0,d.createSVGTransform)(z,$):_=(0,d.createCSSTransform)(z,$);const I=(0,l.clsx)(N.props.className||"",R,{[j]:this.state.dragging,[S]:this.state.dragged});return s.createElement(o.default,k({},A,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),s.cloneElement(s.Children.only(N),{className:I,style:{...N.props.style,..._},transform:L}))}}t.default=f,w(f,"displayName","Draggable"),w(f,"propTypes",{...o.default.propTypes,axis:a.default.oneOf(["both","x","y","none"]),bounds:a.default.oneOfType([a.default.shape({left:a.default.number,right:a.default.number,top:a.default.number,bottom:a.default.number}),a.default.string,a.default.oneOf([!1])]),defaultClassName:a.default.string,defaultClassNameDragging:a.default.string,defaultClassNameDragged:a.default.string,defaultPosition:a.default.shape({x:a.default.number,y:a.default.number}),positionOffset:a.default.shape({x:a.default.oneOfType([a.default.number,a.default.string]),y:a.default.oneOfType([a.default.number,a.default.string])}),position:a.default.shape({x:a.default.number,y:a.default.number}),className:i.dontSetMe,style:i.dontSetMe,transform:i.dontSetMe}),w(f,"defaultProps",{...o.default.defaultProps,axis:"both",bounds:!1,defaultClassName:"react-draggable",defaultClassNameDragging:"react-draggable-dragging",defaultClassNameDragged:"react-draggable-dragged",defaultPosition:{x:0,y:0},scale:1})})(Rs)),Rs}var za;function na(){if(za)return Yt.exports;za=1;const{default:t,DraggableCore:s}=Pi();return Yt.exports=t,Yt.exports.default=t,Yt.exports.DraggableCore=s,Yt.exports}var Ti=na(),Kt={exports:{}},Jt={},ds={},Ma;function Ei(){if(Ma)return ds;Ma=1,ds.__esModule=!0,ds.cloneElement=i;var t=s(ts());function s(o){return o&&o.__esModule?o:{default:o}}function a(o,u){var h=Object.keys(o);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(o);u&&(n=n.filter(function(k){return Object.getOwnPropertyDescriptor(o,k).enumerable})),h.push.apply(h,n)}return h}function r(o){for(var u=1;u<arguments.length;u++){var h=arguments[u]!=null?arguments[u]:{};u%2?a(Object(h),!0).forEach(function(n){l(o,n,h[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(o,Object.getOwnPropertyDescriptors(h)):a(Object(h)).forEach(function(n){Object.defineProperty(o,n,Object.getOwnPropertyDescriptor(h,n))})}return o}function l(o,u,h){return(u=d(u))in o?Object.defineProperty(o,u,{value:h,enumerable:!0,configurable:!0,writable:!0}):o[u]=h,o}function d(o){var u=c(o,"string");return typeof u=="symbol"?u:u+""}function c(o,u){if(typeof o!="object"||!o)return o;var h=o[Symbol.toPrimitive];if(h!==void 0){var n=h.call(o,u);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(u==="string"?String:Number)(o)}function i(o,u){return u.style&&o.props.style&&(u.style=r(r({},o.props.style),u.style)),u.className&&o.props.className&&(u.className=`${o.props.className} ${u.className}`),t.default.cloneElement(o,u)}return ds}var Qt={},La;function Kr(){if(La)return Qt;La=1,Qt.__esModule=!0,Qt.resizableProps=void 0;var t=s(hs());na();function s(a){return a&&a.__esModule?a:{default:a}}return Qt.resizableProps={axis:t.default.oneOf(["both","x","y","none"]),className:t.default.string,children:t.default.element.isRequired,draggableOpts:t.default.shape({allowAnyClick:t.default.bool,cancel:t.default.string,children:t.default.node,disabled:t.default.bool,enableUserSelectHack:t.default.bool,offsetParent:typeof Element<"u"?t.default.instanceOf(Element):t.default.any,grid:t.default.arrayOf(t.default.number),handle:t.default.string,nodeRef:t.default.object,onStart:t.default.func,onDrag:t.default.func,onStop:t.default.func,onMouseDown:t.default.func,scale:t.default.number}),height:function(){for(var a=arguments.length,r=new Array(a),l=0;l<a;l++)r[l]=arguments[l];const[d]=r;return d.axis==="both"||d.axis==="y"?t.default.number.isRequired(...r):t.default.number(...r)},handle:t.default.oneOfType([t.default.node,t.default.func]),handleSize:t.default.arrayOf(t.default.number),lockAspectRatio:t.default.bool,maxConstraints:t.default.arrayOf(t.default.number),minConstraints:t.default.arrayOf(t.default.number),onResizeStop:t.default.func,onResizeStart:t.default.func,onResize:t.default.func,resizeHandles:t.default.arrayOf(t.default.oneOf(["s","w","e","n","sw","nw","se","ne"])),transformScale:t.default.number,width:function(){for(var a=arguments.length,r=new Array(a),l=0;l<a;l++)r[l]=arguments[l];const[d]=r;return d.axis==="both"||d.axis==="x"?t.default.number.isRequired(...r):t.default.number(...r)}},Qt}var _a;function Jr(){if(_a)return Jt;_a=1,Jt.__esModule=!0,Jt.default=void 0;var t=d(ts()),s=na(),a=Ei(),r=Kr();const l=["children","className","draggableOpts","width","height","handle","handleSize","lockAspectRatio","axis","minConstraints","maxConstraints","onResize","onResizeStop","onResizeStart","resizeHandles","transformScale"];function d(b,f){if(typeof WeakMap=="function")var p=new WeakMap,g=new WeakMap;return(d=function(y,N){if(!N&&y&&y.__esModule)return y;var D,R,j={__proto__:null,default:y};if(y===null||typeof y!="object"&&typeof y!="function")return j;if(D=N?g:p){if(D.has(y))return D.get(y);D.set(y,j)}for(const S in y)S!=="default"&&{}.hasOwnProperty.call(y,S)&&((R=(D=Object.defineProperty)&&Object.getOwnPropertyDescriptor(y,S))&&(R.get||R.set)?D(j,S,R):j[S]=y[S]);return j})(b,f)}function c(){return c=Object.assign?Object.assign.bind():function(b){for(var f=1;f<arguments.length;f++){var p=arguments[f];for(var g in p)({}).hasOwnProperty.call(p,g)&&(b[g]=p[g])}return b},c.apply(null,arguments)}function i(b,f){if(b==null)return{};var p,g,y=o(b,f);if(Object.getOwnPropertySymbols){var N=Object.getOwnPropertySymbols(b);for(g=0;g<N.length;g++)p=N[g],f.indexOf(p)===-1&&{}.propertyIsEnumerable.call(b,p)&&(y[p]=b[p])}return y}function o(b,f){if(b==null)return{};var p={};for(var g in b)if({}.hasOwnProperty.call(b,g)){if(f.indexOf(g)!==-1)continue;p[g]=b[g]}return p}function u(b,f){var p=Object.keys(b);if(Object.getOwnPropertySymbols){var g=Object.getOwnPropertySymbols(b);f&&(g=g.filter(function(y){return Object.getOwnPropertyDescriptor(b,y).enumerable})),p.push.apply(p,g)}return p}function h(b){for(var f=1;f<arguments.length;f++){var p=arguments[f]!=null?arguments[f]:{};f%2?u(Object(p),!0).forEach(function(g){n(b,g,p[g])}):Object.getOwnPropertyDescriptors?Object.defineProperties(b,Object.getOwnPropertyDescriptors(p)):u(Object(p)).forEach(function(g){Object.defineProperty(b,g,Object.getOwnPropertyDescriptor(p,g))})}return b}function n(b,f,p){return(f=k(f))in b?Object.defineProperty(b,f,{value:p,enumerable:!0,configurable:!0,writable:!0}):b[f]=p,b}function k(b){var f=w(b,"string");return typeof f=="symbol"?f:f+""}function w(b,f){if(typeof b!="object"||!b)return b;var p=b[Symbol.toPrimitive];if(p!==void 0){var g=p.call(b,f);if(typeof g!="object")return g;throw new TypeError("@@toPrimitive must return a primitive value.")}return(f==="string"?String:Number)(b)}let x=class extends t.Component{constructor(){super(...arguments),this.handleRefs={},this.lastHandleRect=null,this.slack=null,this.lastSize=null}componentWillUnmount(){this.resetData()}resetData(){this.lastHandleRect=this.slack=this.lastSize=null}runConstraints(f,p){const{minConstraints:g,maxConstraints:y,lockAspectRatio:N}=this.props;if(!g&&!y&&!N)return[f,p];if(N){const T=this.props.width/this.props.height,$=f-this.props.width,F=p-this.props.height;Math.abs($)>Math.abs(F*T)?p=f/T:f=p*T}const[D,R]=[f,p];let[j,S]=this.slack||[0,0];return f+=j,p+=S,g&&(f=Math.max(g[0],f),p=Math.max(g[1],p)),y&&(f=Math.min(y[0],f),p=Math.min(y[1],p)),this.slack=[j+(D-f),S+(R-p)],[f,p]}resizeHandler(f,p){return(g,y)=>{let{node:N,deltaX:D,deltaY:R}=y;f==="onResizeStart"&&this.resetData();const j=(this.props.axis==="both"||this.props.axis==="x")&&p!=="n"&&p!=="s",S=(this.props.axis==="both"||this.props.axis==="y")&&p!=="e"&&p!=="w";if(!j&&!S)return;const T=p[0],$=p[p.length-1],F=N.getBoundingClientRect();if(this.lastHandleRect!=null){if($==="w"){const C=F.left-this.lastHandleRect.left;D+=C}if(T==="n"){const C=F.top-this.lastHandleRect.top;R+=C}}this.lastHandleRect=F,$==="w"&&(D=-D),T==="n"&&(R=-R);let A=this.props.width+(j?D/this.props.transformScale:0),_=this.props.height+(S?R/this.props.transformScale:0);[A,_]=this.runConstraints(A,_),f==="onResizeStop"&&this.lastSize&&({width:A,height:_}=this.lastSize);const L=A!==this.props.width||_!==this.props.height;f!=="onResizeStop"&&(this.lastSize={width:A,height:_});const O=typeof this.props[f]=="function"?this.props[f]:null;O&&!(f==="onResize"&&!L)&&(g.persist?.(),O(g,{node:N,size:{width:A,height:_},handle:p})),f==="onResizeStop"&&this.resetData()}}renderResizeHandle(f,p){const{handle:g}=this.props;if(!g)return t.createElement("span",{className:`react-resizable-handle react-resizable-handle-${f}`,ref:p});if(typeof g=="function")return g(f,p);const y=typeof g.type=="string",N=h({ref:p},y?{}:{handleAxis:f});return t.cloneElement(g,N)}render(){const f=this.props,{children:p,className:g,draggableOpts:y,width:N,height:D,handle:R,handleSize:j,lockAspectRatio:S,axis:T,minConstraints:$,maxConstraints:F,onResize:A,onResizeStop:_,onResizeStart:L,resizeHandles:O,transformScale:P}=f,C=i(f,l);return(0,a.cloneElement)(p,h(h({},C),{},{className:`${g?`${g} `:""}react-resizable`,children:[...t.Children.toArray(p.props.children),...O.map(z=>{const I=this.handleRefs[z]??(this.handleRefs[z]=t.createRef());return t.createElement(s.DraggableCore,c({},y,{nodeRef:I,key:`resizableHandle-${z}`,onStop:this.resizeHandler("onResizeStop",z),onStart:this.resizeHandler("onResizeStart",z),onDrag:this.resizeHandler("onResize",z)}),this.renderResizeHandle(z,I))})]}))}};return Jt.default=x,x.propTypes=r.resizableProps,x.defaultProps={axis:"both",handleSize:[20,20],lockAspectRatio:!1,minConstraints:[20,20],maxConstraints:[1/0,1/0],resizeHandles:["se"],transformScale:1},Jt}var Zt={},Ia;function Ai(){if(Ia)return Zt;Ia=1,Zt.__esModule=!0,Zt.default=void 0;var t=c(ts()),s=d(hs()),a=d(Jr()),r=Kr();const l=["handle","handleSize","onResize","onResizeStart","onResizeStop","draggableOpts","minConstraints","maxConstraints","lockAspectRatio","axis","width","height","resizeHandles","style","transformScale"];function d(f){return f&&f.__esModule?f:{default:f}}function c(f,p){if(typeof WeakMap=="function")var g=new WeakMap,y=new WeakMap;return(c=function(N,D){if(!D&&N&&N.__esModule)return N;var R,j,S={__proto__:null,default:N};if(N===null||typeof N!="object"&&typeof N!="function")return S;if(R=D?y:g){if(R.has(N))return R.get(N);R.set(N,S)}for(const T in N)T!=="default"&&{}.hasOwnProperty.call(N,T)&&((j=(R=Object.defineProperty)&&Object.getOwnPropertyDescriptor(N,T))&&(j.get||j.set)?R(S,T,j):S[T]=N[T]);return S})(f,p)}function i(){return i=Object.assign?Object.assign.bind():function(f){for(var p=1;p<arguments.length;p++){var g=arguments[p];for(var y in g)({}).hasOwnProperty.call(g,y)&&(f[y]=g[y])}return f},i.apply(null,arguments)}function o(f,p){var g=Object.keys(f);if(Object.getOwnPropertySymbols){var y=Object.getOwnPropertySymbols(f);p&&(y=y.filter(function(N){return Object.getOwnPropertyDescriptor(f,N).enumerable})),g.push.apply(g,y)}return g}function u(f){for(var p=1;p<arguments.length;p++){var g=arguments[p]!=null?arguments[p]:{};p%2?o(Object(g),!0).forEach(function(y){h(f,y,g[y])}):Object.getOwnPropertyDescriptors?Object.defineProperties(f,Object.getOwnPropertyDescriptors(g)):o(Object(g)).forEach(function(y){Object.defineProperty(f,y,Object.getOwnPropertyDescriptor(g,y))})}return f}function h(f,p,g){return(p=n(p))in f?Object.defineProperty(f,p,{value:g,enumerable:!0,configurable:!0,writable:!0}):f[p]=g,f}function n(f){var p=k(f,"string");return typeof p=="symbol"?p:p+""}function k(f,p){if(typeof f!="object"||!f)return f;var g=f[Symbol.toPrimitive];if(g!==void 0){var y=g.call(f,p);if(typeof y!="object")return y;throw new TypeError("@@toPrimitive must return a primitive value.")}return(p==="string"?String:Number)(f)}function w(f,p){if(f==null)return{};var g,y,N=x(f,p);if(Object.getOwnPropertySymbols){var D=Object.getOwnPropertySymbols(f);for(y=0;y<D.length;y++)g=D[y],p.indexOf(g)===-1&&{}.propertyIsEnumerable.call(f,g)&&(N[g]=f[g])}return N}function x(f,p){if(f==null)return{};var g={};for(var y in f)if({}.hasOwnProperty.call(f,y)){if(p.indexOf(y)!==-1)continue;g[y]=f[y]}return g}let b=class extends t.Component{constructor(){super(...arguments),this.state={width:this.props.width,height:this.props.height,propsWidth:this.props.width,propsHeight:this.props.height},this.onResize=(p,g)=>{const{size:y}=g;this.props.onResize?(p.persist?.(),this.setState(y,()=>this.props.onResize&&this.props.onResize(p,g))):this.setState(y)}}static getDerivedStateFromProps(p,g){return g.propsWidth!==p.width||g.propsHeight!==p.height?{width:p.width,height:p.height,propsWidth:p.width,propsHeight:p.height}:null}render(){const p=this.props,{handle:g,handleSize:y,onResize:N,onResizeStart:D,onResizeStop:R,draggableOpts:j,minConstraints:S,maxConstraints:T,lockAspectRatio:$,axis:F,width:A,height:_,resizeHandles:L,style:O,transformScale:P}=p,C=w(p,l);return t.createElement(a.default,{axis:F,draggableOpts:j,handle:g,handleSize:y,height:this.state.height,lockAspectRatio:$,maxConstraints:T,minConstraints:S,onResizeStart:D,onResize:this.onResize,onResizeStop:R,resizeHandles:L,transformScale:P,width:this.state.width},t.createElement("div",i({},C,{style:u(u({},O),{},{width:this.state.width+"px",height:this.state.height+"px"})})))}};return Zt.default=b,b.propTypes=u(u({},r.resizableProps),{},{children:s.default.element}),Zt}var $a;function zi(){return $a||($a=1,Kt.exports=function(){throw new Error("Don't instantiate Resizable directly! Use require('react-resizable').Resizable")},Kt.exports.Resizable=Jr().default,Kt.exports.ResizableBox=Ai().default),Kt.exports}var Mi=zi();function Ba(t){const{children:s,cols:a,containerWidth:r,margin:l,containerPadding:d,rowHeight:c,maxRows:i,isDraggable:o,isResizable:u,isBounded:h,static:n,useCSSTransforms:k=!0,usePercentages:w=!1,transformScale:x=1,positionStrategy:b,dragThreshold:f=0,droppingPosition:p,className:g="",style:y,handle:N="",cancel:D="",x:R,y:j,w:S,h:T,minW:$=1,maxW:F=1/0,minH:A=1,maxH:_=1/0,i:L,resizeHandles:O,resizeHandle:P,constraints:C=Pr,layoutItem:z,layout:I=[],onDragStart:W,onDrag:le,onDragStop:me,onResizeStart:de,onResize:Z,onResizeStop:fe}=t,[Y,ee]=m.useState(!1),[xe,te]=m.useState(!1),ae=m.useRef(null),G=m.useRef({left:0,top:0}),H=m.useRef({top:0,left:0,width:0,height:0}),X=m.useRef(void 0),J=m.useRef(I);J.current=I;const pe=m.useRef(null),ge=m.useRef(null),Te=m.useRef(!1),Ue=m.useRef({x:0,y:0}),be=m.useRef(!1),he=m.useMemo(()=>({cols:a,containerPadding:d,containerWidth:r,margin:l,maxRows:i,rowHeight:c}),[a,d,r,l,i,c]),Re=m.useMemo(()=>({cols:a,maxRows:i,containerWidth:r,containerHeight:0,rowHeight:c,margin:l,layout:[]}),[a,i,r,c,l]),Ne=m.useCallback(()=>({...Re,layout:J.current}),[Re]),We=m.useMemo(()=>z??{i:L,x:R,y:j,w:S,h:T,minW:$,maxW:F,minH:A,maxH:_},[z,L,R,j,S,T,$,F,A,_]),Ft=m.useCallback(re=>{if(b?.calcStyle)return b.calcStyle(re);if(k)return Tr(re);const ie=Gl(re);return w?{...ie,left:wa(re.left/r),width:wa(re.width/r)}:ie},[b,k,w,r]),Ye=m.useCallback((re,{node:ie})=>{if(!W)return;const{offsetParent:ye}=ie;if(!ye)return;const ue=ye.getBoundingClientRect(),ve=ie.getBoundingClientRect(),Ce=ve.left/x,Me=ue.left/x,Ee=ve.top/x,_e=ue.top/x;let He;if(b?.calcDragPosition){const E=re;He=b.calcDragPosition(E.clientX,E.clientY,E.clientX-ve.left,E.clientY-ve.top)}else He={left:Ce-Me+ye.scrollLeft,top:Ee-_e+ye.scrollTop};if(G.current=He,f>0){const E=re;Ue.current={x:E.clientX,y:E.clientY},Te.current=!0,be.current=!1,ee(!0);return}ee(!0);const at=ls(he,He.top,He.left),{x:Je,y:v}=is(C,We,at.x,at.y,Ne());W(L,Je,v,{e:re,node:ie,newPosition:He})},[W,x,he,b,f,C,We,Ne,L]),ct=m.useCallback((re,{node:ie,deltaX:ye,deltaY:ue})=>{if(!le||!Y)return;const ve=re;if(Te.current&&!be.current){const Je=ve.clientX-Ue.current.x,v=ve.clientY-Ue.current.y;if(Math.hypot(Je,v)<f)return;if(be.current=!0,Te.current=!1,W){const M=ls(he,G.current.top,G.current.left),{x:q,y:U}=is(C,We,M.x,M.y,Ne());W(L,q,U,{e:re,node:ie,newPosition:G.current})}}let Ce=G.current.top+ue,Me=G.current.left+ye;if(h){const{offsetParent:Je}=ie;if(Je){const v=Je.clientHeight-qt(T,c,l[1]);Ce=fs(Ce,0,v);const E=Wt(he),M=r-qt(S,E,l[0]);Me=fs(Me,0,M)}}const Ee={top:Ce,left:Me};G.current=Ee;const _e=ls(he,Ce,Me),{x:He,y:at}=is(C,We,_e.x,_e.y,Ne());le(L,He,at,{e:re,node:ie,newPosition:Ee})},[le,W,Y,f,h,T,c,l,he,r,S,L,C,We,Ne]),Ae=m.useCallback((re,{node:ie})=>{if(!me||!Y)return;const ye=Te.current;if(Te.current=!1,be.current=!1,Ue.current={x:0,y:0},ye){ee(!1),G.current={left:0,top:0};return}const{left:ue,top:ve}=G.current,Ce={top:ve,left:ue};ee(!1),G.current={left:0,top:0};const Me=ls(he,ve,ue),{x:Ee,y:_e}=is(C,We,Me.x,Me.y,Ne());me(L,Ee,_e,{e:re,node:ie,newPosition:Ce})},[me,Y,he,C,We,Ne,L]);pe.current=Ye,ge.current=ct;const Ve=m.useCallback((re,{node:ie,size:ye,handle:ue},ve,Ce)=>{const Me=Ce==="onResizeStart"?de:Ce==="onResize"?Z:fe;if(!Me)return;let Ee;ie?Ee=ei(ue,ve,ye,r):Ee={...ye,top:ve.top,left:ve.left},H.current=Ee;const _e=Il(he,Ee.width,Ee.height),{w:He,h:at}=Wl(C,We,_e.w,_e.h,ue,Ne());Me(L,He,at,{e:re.nativeEvent,node:ie,size:Ee,handle:ue})},[de,Z,fe,r,he,L,C,We,Ne]),jt=m.useCallback((re,ie)=>{te(!0);const ye=Ut(he,R,j,S,T),ue={...ie,handle:ie.handle};Ve(re,ue,ye,"onResizeStart")},[Ve,he,R,j,S,T]),wt=m.useCallback((re,ie)=>{const ye=Ut(he,R,j,S,T),ue={...ie,handle:ie.handle};Ve(re,ue,ye,"onResize")},[Ve,he,R,j,S,T]),st=m.useCallback((re,ie)=>{te(!1),H.current={top:0,left:0,width:0,height:0};const ye=Ut(he,R,j,S,T),ue={...ie,handle:ie.handle};Ve(re,ue,ye,"onResizeStop")},[Ve,he,R,j,S,T]);m.useEffect(()=>{if(!p)return;const re=ae.current;if(!re)return;const ie=X.current||{left:0,top:0},ye=Y&&(p.left!==ie.left||p.top!==ie.top);if(Y){if(ye){const ue=p.left-G.current.left,ve=p.top-G.current.top,Ce={node:re,deltaX:ue,deltaY:ve,lastX:G.current.left,lastY:G.current.top,x:p.left,y:p.top};ge.current?.(p.e,Ce)}}else{const ue={node:re,deltaX:p.left,deltaY:p.top,lastX:0,lastY:0,x:p.left,y:p.top};pe.current?.(p.e,ue)}X.current=p},[p,Y,L]);const Ge=Ut(he,R,j,S,T,Y?G.current:null,xe?H.current:null),Xe=tt.Children.only(s),Ke=Ut(he,0,0,1,1),_t=[Ke.width,Ke.height],dt=[1/0,1/0],Le=Xe.props,Gt=Le.className,It=Le.style;let Ze=tt.cloneElement(Xe,{ref:ae,className:wr("react-grid-item",Gt,g,{static:n,resizing:xe,"react-draggable":o,"react-draggable-dragging":Y,dropping:!!p,cssTransforms:k}),style:{...y,...It,...Ft(Ge)}});const Ot=P;return Ze=e.jsx(Mi.Resizable,{draggableOpts:{disabled:!u},className:u?void 0:"react-resizable-hide",width:Ge.width,height:Ge.height,minConstraints:_t,maxConstraints:dt,onResizeStart:jt,onResize:wt,onResizeStop:st,transformScale:x,resizeHandles:O,handle:Ot,children:Ze}),Ze=e.jsx(Ti.DraggableCore,{disabled:!o,onStart:Ye,onDrag:ct,onStop:Ae,handle:N,cancel:".react-resizable-handle"+(D?","+D:""),scale:x,nodeRef:ae,children:Ze}),Ze}var ft=()=>{},Va="react-grid-layout",Qr=!1;try{Qr=/firefox/i.test(navigator.userAgent)}catch{}function Li(t,s){const a=tt.Children.toArray(t),r=tt.Children.toArray(s);if(a.length!==r.length)return!1;for(let l=0;l<a.length;l++){const d=a[l],c=r[l];if(d?.key!==c?.key)return!1}return!0}function Ha(t,s,a,r){const l=[],d=new Set;tt.Children.forEach(s,i=>{if(!tt.isValidElement(i)||i.key===null)return;const o=String(i.key);d.add(o);const u=t.find(h=>h.i===o);if(u)l.push(Lt(u));else{const n=i.props["data-grid"];n?l.push({i:o,x:n.x??0,y:n.y??0,w:n.w??1,h:n.h??1,minW:n.minW,maxW:n.maxW,minH:n.minH,maxH:n.maxH,static:n.static,isDraggable:n.isDraggable,isResizable:n.isResizable,resizeHandles:n.resizeHandles,isBounded:n.isBounded}):l.push({i:o,x:0,y:xs(l),w:1,h:1})}});const c=Js(l,{cols:a});return r.compact(c,a)}function _i(t){const{children:s,width:a,gridConfig:r,dragConfig:l,resizeConfig:d,dropConfig:c,positionStrategy:i=si,compactor:o,constraints:u=Pr,layout:h=[],droppingItem:n,autoSize:k=!0,className:w="",style:x={},innerRef:b,onLayoutChange:f=ft,onDragStart:p=ft,onDrag:g=ft,onDragStop:y=ft,onResizeStart:N=ft,onResize:D=ft,onResizeStop:R=ft,onDrop:j=ft,onDropDragOver:S=ft}=t,T=m.useMemo(()=>({...ai,...r}),[r]),$=m.useMemo(()=>({...ri,...l}),[l]),F=m.useMemo(()=>({...ni,...d}),[d]),A=m.useMemo(()=>({...li,...c}),[c]),{cols:_,rowHeight:L,maxRows:O,margin:P,containerPadding:C}=T,{enabled:z,bounded:I,handle:W,cancel:le,threshold:me}=$,{enabled:de,handles:Z,handleComponent:fe}=F,{enabled:Y,defaultItem:ee,onDragOver:xe}=A,te=o??aa("vertical"),ae=te.type,G=te.allowOverlap,H=te.preventCollision??!1,X=m.useMemo(()=>n??{i:"__dropping-elem__",...ee},[n,ee]),J=i.type==="transform",pe=i.scale,ge=C??P,[Te,Ue]=m.useState(!1),[be,he]=m.useState(()=>Ha(h,s,_,te)),[Re,Ne]=m.useState(null),[We,Ft]=m.useState(!1),[Ye,ct]=m.useState(null),[Ae,Ve]=m.useState(),jt=m.useRef(null),wt=m.useRef(null),st=m.useRef(null),Ge=m.useRef(0),Xe=m.useRef(be),Ke=m.useRef(h),_t=m.useRef(s),dt=m.useRef(ae),Le=m.useRef(be);Le.current=be,m.useEffect(()=>{Ue(!0),yt(be,h)||f(be)},[]),m.useEffect(()=>{if(Re||Ye)return;const v=!yt(h,Ke.current),E=!Li(s,_t.current),M=ae!==dt.current;if(v||E||M){const U=Ha(v?h:be,s,_,te);yt(U,be)||he(U)}Ke.current=h,_t.current=s,dt.current=ae},[h,s,_,ae,te,Re,Ye,be]),m.useEffect(()=>{if(!Re&&!yt(be,Xe.current)){Xe.current=be;const v=be.filter(E=>E.i!==X.i);f(v)}},[be,Re,f,X.i]);const Gt=m.useMemo(()=>{if(!k)return;const v=xs(be),E=ge[1];return v*L+(v-1)*P[1]+E*2+"px"},[k,be,L,P,ge]),It=m.useCallback((v,E,M,q)=>{const U=Le.current,K=Tt(U,v);if(!K)return;const Q={w:K.w,h:K.h,x:K.x,y:K.y,i:v};jt.current=Lt(K),st.current=U,Ne(Q),p(U,K,K,null,q.e,q.node)},[p]),Ze=m.useCallback((v,E,M,q)=>{const U=Le.current,K=jt.current,Q=Tt(U,v);if(!Q)return;const oe={w:Q.w,h:Q.h,x:Q.x,y:Q.y,i:v},se=At(U,Q,E,M,!0,H,ae,_,G);g(se,K,Q,oe,q.e,q.node),he(te.compact(se,_)),Ne(oe)},[H,ae,_,G,te,g]),Ot=m.useCallback((v,E,M,q)=>{if(!Re)return;const U=Le.current,K=jt.current,Q=Tt(U,v);if(!Q)return;const oe=At(U,Q,E,M,!0,H,ae,_,G),se=te.compact(oe,_);y(se,K,Q,null,q.e,q.node);const ke=st.current;jt.current=null,st.current=null,Ne(null),he(se),ke&&!yt(ke,se)&&f(se)},[Re,H,ae,_,G,te,y,f]),re=m.useCallback((v,E,M,q)=>{const U=Le.current,K=Tt(U,v);K&&(wt.current=Lt(K),st.current=U,Ft(!0),N(U,K,K,null,q.e,q.node))},[N]),ie=m.useCallback((v,E,M,q)=>{const U=Le.current,K=wt.current,{handle:Q}=q;let oe=!1,se,ke;const[ze,je]=Vl(U,v,ne=>(se=ne.x,ke=ne.y,["sw","w","nw","n","ne"].includes(Q)&&(["sw","nw","w"].includes(Q)&&(se=ne.x+(ne.w-E),E=ne.x!==se&&se<0?ne.w:E,se=se<0?0:se),["ne","n","nw"].includes(Q)&&(ke=ne.y+(ne.h-M),M=ne.y!==ke&&ke<0?ne.h:M,ke=ke<0?0:ke),oe=!0),H&&!G&&Fr(U,{...ne,w:E,h:M,x:se??ne.x,y:ke??ne.y}).filter(ut=>ut.i!==ne.i).length>0&&(ke=ne.y,M=ne.h,se=ne.x,E=ne.w,oe=!1),ne.w=E,ne.h=M,ne));if(!je)return;let Fe=ze;oe&&se!==void 0&&ke!==void 0&&(Fe=At(ze,je,se,ke,!0,H,ae,_,G));const et={w:je.w,h:je.h,x:je.x,y:je.y,i:v,static:!0};D(Fe,K,je,et,q.e,q.node),he(te.compact(Fe,_)),Ne(et)},[H,ae,_,G,te,D]),ye=m.useCallback((v,E,M,q)=>{const U=Le.current,K=wt.current,Q=Tt(U,v),oe=te.compact(U,_);R(oe,K,Q??null,null,q.e,q.node);const se=st.current;wt.current=null,st.current=null,Ne(null),Ft(!1),he(oe),se&&!yt(se,oe)&&f(oe)},[_,te,R,f]),ue=m.useCallback(()=>{const v=Le.current;if(!v.some(q=>q.i===X.i)){ct(null),Ne(null),Ve(void 0);return}const M=te.compact(v.filter(q=>q.i!==X.i),_);he(M),ct(null),Ne(null),Ve(void 0)},[X.i,_,te]),ve=m.useCallback(v=>{if(v.preventDefault(),v.stopPropagation(),Qr&&!v.nativeEvent.target?.classList.contains(Va))return!1;const E=xe?xe(v.nativeEvent):S(v);if(E===!1)return Ye&&ue(),!1;const{dragOffsetX:M=0,dragOffsetY:q=0,...U}=E??{},K={...X,...U},Q=v.currentTarget.getBoundingClientRect(),oe={cols:_,margin:P,maxRows:O,rowHeight:L,containerWidth:a,containerPadding:ge},se=Wt(oe),ke=qt(K.w,se,P[0]),ze=qt(K.h,L,P[1]),je=ke/2,Fe=ze/2,et=v.clientX-Q.left+M-je,ne=v.clientY-Q.top+q-Fe,as=Math.max(0,et),ut=Math.max(0,ne),rs={left:as/pe,top:ut/pe,e:v.nativeEvent};if(Ye)Ae&&(Ae.left!==rs.left||Ae.top!==rs.top)&&Ve(rs);else{const Ns=_l(oe,ut,as,K.w,K.h);ct(e.jsx("div",{},K.i)),Ve(rs),he([...Le.current,{...K,x:Ns.x,y:Ns.y,static:!1,isDraggable:!0}])}},[Ye,Ae,X,xe,S,ue,pe,_,P,O,L,a,ge]),Ce=m.useCallback(v=>{v.preventDefault(),v.stopPropagation(),Ge.current--,Ge.current<0&&(Ge.current=0),Ge.current===0&&ue()},[ue]),Me=m.useCallback(v=>{v.preventDefault(),v.stopPropagation(),Ge.current++},[]),Ee=m.useCallback(v=>{v.preventDefault(),v.stopPropagation();const E=Le.current,M=E.find(q=>q.i===X.i);Ge.current=0,ue(),j(E,M,v.nativeEvent)},[X.i,ue,j]),_e=m.useCallback((v,E)=>{if(!v||!v.key)return null;const M=Tt(be,String(v.key));if(!M)return null;const q=typeof M.isDraggable=="boolean"?M.isDraggable:!M.static&&z,U=typeof M.isResizable=="boolean"?M.isResizable:!M.static&&de,K=M.resizeHandles||[...Z],Q=q&&I&&M.isBounded!==!1,oe=fe;return e.jsx(Ba,{containerWidth:a,cols:_,margin:P,containerPadding:ge,maxRows:O,rowHeight:L,cancel:le,handle:W,onDragStart:It,onDrag:Ze,onDragStop:Ot,onResizeStart:re,onResize:ie,onResizeStop:ye,isDraggable:q,isResizable:U,isBounded:Q,useCSSTransforms:J&&Te,usePercentages:!Te,transformScale:pe,positionStrategy:i,dragThreshold:me,w:M.w,h:M.h,x:M.x,y:M.y,i:M.i,minH:M.minH,minW:M.minW,maxH:M.maxH,maxW:M.maxW,static:M.static,droppingPosition:E?Ae:void 0,resizeHandles:K,resizeHandle:oe,constraints:u,layoutItem:M,layout:be,children:v},M.i)},[be,a,_,P,ge,O,L,le,W,It,Ze,Ot,re,ie,ye,z,de,I,J,Te,pe,i,me,Ae,Z,fe,u]),He=()=>Re?e.jsx(Ba,{w:Re.w,h:Re.h,x:Re.x,y:Re.y,i:Re.i,className:`react-grid-placeholder ${We?"placeholder-resizing":""}`,containerWidth:a,cols:_,margin:P,containerPadding:ge,maxRows:O,rowHeight:L,isDraggable:!1,isResizable:!1,isBounded:!1,useCSSTransforms:J,transformScale:pe,constraints:u,layout:be,children:e.jsx("div",{})}):null,at=wr(Va,w),Je={height:Gt,...x};return e.jsxs("div",{ref:b,className:at,style:Je,onDrop:Y?Ee:void 0,onDragLeave:Y?Ce:void 0,onDragEnter:Y?Me:void 0,onDragOver:Y?ve:void 0,children:[tt.Children.map(s,v=>tt.isValidElement(v)?_e(v):null),Y&&Ye&&_e(Ye,!0),He()]})}var Ii={lg:1200,md:996,sm:768,xs:480,xxs:0},$i={lg:12,md:10,sm:6,xs:4,xxs:2},Fs=()=>{};function Bi(t,s,a,r){const l=[];tt.Children.forEach(s,c=>{if(!tt.isValidElement(c)||c.key===null)return;const i=String(c.key),o=t.find(u=>u.i===i);if(o)l.push({...o,i});else{const h=c.props["data-grid"];h?l.push({i,x:h.x??0,y:h.y??0,w:h.w??1,h:h.h??1,minW:h.minW,maxW:h.maxW,minH:h.minH,maxH:h.maxH,static:h.static,isDraggable:h.isDraggable,isResizable:h.isResizable,resizeHandles:h.resizeHandles,isBounded:h.isBounded}):l.push({i,x:0,y:xs(l),w:1,h:1})}});const d=Js(l,{cols:a});return r.compact(d,a)}function Vi(t){const{children:s,width:a,breakpoint:r,breakpoints:l=Ii,cols:d=$i,layouts:c={},rowHeight:i=150,maxRows:o=1/0,margin:u=[10,10],containerPadding:h=null,compactor:n,onBreakpointChange:k=Fs,onLayoutChange:w=Fs,onWidthChange:x=Fs,...b}=t,f=n??aa("vertical"),p=f.type,g=f.allowOverlap,y=m.useMemo(()=>r??Na(l,a),[]),N=m.useMemo(()=>Ca(y,d),[y,d]),D=m.useMemo(()=>Ds(c,l,y,y,N,p),[]),[R,j]=m.useState(y),[S,T]=m.useState(N),[$,F]=m.useState(D),[A,_]=m.useState(c),L=m.useRef(a),O=m.useRef(r),P=m.useRef(l),C=m.useRef(d),z=m.useRef(c),I=m.useRef(p),W=m.useRef(A);m.useEffect(()=>{W.current=A},[A]);const le=m.useMemo(()=>yt(c,z.current)?null:Ds(c,l,R,R,S,f),[c,l,R,S,f]),me=le??$;m.useEffect(()=>{le!==null&&(F(le),_(c),W.current=c,z.current=c)},[le,c]),m.useEffect(()=>{if(p!==I.current){const ee=f.compact(Rt(me),S),xe={...W.current,[R]:ee};F(ee),_(xe),W.current=xe,w(ee,xe),I.current=p}},[p,f,me,S,g,R,w]),m.useEffect(()=>{const ee=a!==L.current,xe=r!==O.current,te=!yt(l,P.current),ae=!yt(d,C.current);if(ee||xe||te||ae){const G=r??Na(l,a),H=Ca(G,d),X=R;if(X!==G||te||ae){const ge={...W.current};ge[X]||(ge[X]=Rt($));let Te=Ds(ge,l,G,X,H,f);Te=Bi(Te,s,H,f),ge[G]=Te,j(G),T(H),F(Te),_(ge),W.current=ge,k(G,H),w(Te,ge)}const J=os(u,G),pe=h?os(h,G):null;x(a,J,H,pe),L.current=a,O.current=r,P.current=l,C.current=d}},[a,r,l,d,R,S,$,s,f,p,g,u,h,k,w,x]);const de=m.useCallback(ee=>{const te={...W.current,[R]:ee};F(ee),_(te),W.current=te,w(ee,te)},[R,w]),Z=m.useMemo(()=>os(u,R),[u,R]),fe=m.useMemo(()=>h===null?null:os(h,R),[h,R]),Y=m.useMemo(()=>({cols:S,rowHeight:i,maxRows:o,margin:Z,containerPadding:fe}),[S,i,o,Z,fe]);return e.jsx(_i,{...b,width:a,gridConfig:Y,compactor:f,onLayoutChange:de,layout:me,children:s})}function Hi({editMode:t}){const s=un();return m.useEffect(()=>{if(t)return s.startDrag({id:"dashboard-layout",type:"dashboard-widget",data:{}}),()=>{s.endDrag()};s.endDrag("dashboard")},[t,s]),null}const Os=["hsl(var(--chart-1))","hsl(var(--chart-2))","hsl(var(--chart-3))","hsl(var(--chart-4))","hsl(var(--chart-5))"],qi=({schema:t,className:s,onLayoutChange:a,persistLayoutKey:r="dashboard-layout",onRefresh:l})=>{const{width:d,containerRef:c,mounted:i}=Ri(),[o,u]=m.useState(!1),[h,n]=m.useState(!1),k=dn(),w=m.useRef(null),x=m.useCallback(()=>{l&&(n(!0),l(),setTimeout(()=>n(!1),600))},[l]);m.useEffect(()=>{if(!(!t.refreshInterval||t.refreshInterval<=0||!l))return w.current=setInterval(x,t.refreshInterval*1e3),()=>{w.current&&clearInterval(w.current)}},[t.refreshInterval,l,x]);const[b,f]=m.useState(()=>{if(typeof window<"u"&&r){const D=localStorage.getItem(r);if(D)try{return JSON.parse(D)}catch(R){console.error("Failed to parse saved layout:",R)}}return{lg:t.widgets?.map((D,R)=>({i:D.id||`widget-${R}`,x:D.layout?.x||R%4*3,y:D.layout?.y||Math.floor(R/4)*4,w:D.layout?.w||3,h:D.layout?.h||4}))||[]}}),p=m.useCallback((D,R)=>{f(R),a?.(D)},[a]),g=m.useCallback(()=>{typeof window<"u"&&r&&localStorage.setItem(r,JSON.stringify(b)),u(!1)},[b,r]),y=m.useCallback(()=>{const D={lg:t.widgets?.map((R,j)=>({i:R.id||`widget-${j}`,x:R.layout?.x||j%4*3,y:R.layout?.y||Math.floor(j/4)*4,w:R.layout?.w||3,h:R.layout?.h||4}))||[]};f(D),typeof window<"u"&&r&&localStorage.removeItem(r)},[t.widgets,r]),N=m.useCallback(D=>{if(D.component)return D.component;const R=D.type,j=D.options||{};if(R==="bar"||R==="line"||R==="area"||R==="pie"||R==="donut"||R==="scatter"){const S=D.data||j.data,T=D.categoryField||j.xField||"name",$=D.valueField||j.yField||"value";if(Ht(S)){const A=S.aggregate,_=A?{field:D.valueField||A.field,function:D.aggregate||A.function,groupBy:D.categoryField||A.groupBy}:void 0,L=_?.field||$;return{type:"object-chart",chartType:R,objectName:D.object||S.object,aggregate:_,xAxisKey:T,series:[{dataKey:L}],colors:Os,className:"h-full"}}if(!S&&D.object){const A=D.aggregate?{field:D.valueField||"value",function:D.aggregate,groupBy:D.categoryField||"name"}:void 0;return{type:"object-chart",chartType:R,objectName:D.object,aggregate:A,xAxisKey:T,series:[{dataKey:D.valueField||"value"}],colors:Os,className:"h-full"}}const F=Array.isArray(S)?S:S?.items||[];return{type:"chart",chartType:R,data:F,xAxisKey:T,series:[{dataKey:$}],colors:Os,className:"h-full"}}if(R==="table"){const S=D.data||j.data;if(Ht(S)){const{data:T,...$}=j;return{type:"data-table",...$,objectName:D.object||S.object,dataProvider:S,data:[],searchable:!1,pagination:!1,className:"border-0"}}return!S&&D.object?{type:"data-table",...j,objectName:D.object,data:[],searchable:!1,pagination:!1,className:"border-0"}:{type:"data-table",...j,data:S?.items||[],searchable:!1,pagination:!1,className:"border-0"}}if(R==="pivot"){const S=D.data||j.data;if(Ht(S)){const{data:T,...$}=j;return{type:"pivot",...$,objectName:D.object||S.object,dataProvider:S,data:[]}}return{type:"pivot",...j,data:Array.isArray(S)?S:S?.items||[]}}return{...D,...j}},[]);return e.jsxs("div",{ref:c,className:V("w-full",s),"data-testid":"grid-layout",children:[k&&e.jsx(Hi,{editMode:o}),e.jsxs("div",{className:"mb-4 flex items-center justify-between",children:[e.jsx("h2",{className:"text-2xl font-bold",children:t.title||"Dashboard"}),e.jsx("div",{className:"flex gap-2",children:o?e.jsxs(e.Fragment,{children:[e.jsxs(B,{onClick:g,size:"sm",variant:"default",children:[e.jsx(gr,{className:"h-4 w-4 mr-2"}),"Save Layout"]}),e.jsxs(B,{onClick:y,size:"sm",variant:"outline",children:[e.jsx(ss,{className:"h-4 w-4 mr-2"}),"Reset"]}),e.jsx(B,{onClick:()=>u(!1),size:"sm",variant:"ghost",children:"Cancel"})]}):e.jsxs(e.Fragment,{children:[l&&e.jsxs(B,{onClick:x,size:"sm",variant:"outline",disabled:h,"aria-label":"Refresh dashboard",children:[e.jsx(Us,{className:V("h-4 w-4 mr-2",h&&"animate-spin")}),h?"Refreshing…":"Refresh All"]}),e.jsxs(B,{onClick:()=>u(!0),size:"sm",variant:"outline",children:[e.jsx(ot,{className:"h-4 w-4 mr-2"}),"Edit Layout"]})]})})]}),i&&e.jsx(Vi,{className:"layout",width:d,layouts:b,breakpoints:{lg:1200,md:996,sm:768,xs:480,xxs:0},cols:{lg:12,md:10,sm:6,xs:4,xxs:2},rowHeight:60,dragConfig:{enabled:o,handle:".drag-handle"},resizeConfig:{enabled:o},onLayoutChange:p,children:t.widgets?.map((D,R)=>{const j=D.id||`widget-${R}`,S=N(D),T=D.type==="metric";return e.jsx("div",{className:"h-full",children:T?e.jsxs("div",{className:"h-full w-full relative",children:[o&&e.jsx("div",{className:"drag-handle absolute top-2 right-2 z-10 cursor-move p-1 bg-background/80 rounded border border-border",children:e.jsx(da,{className:"h-4 w-4"})}),e.jsx(Ie,{schema:S,className:"h-full w-full"})]}):e.jsxs(Oe,{className:V("h-full overflow-hidden border-border/50 shadow-sm transition-all","bg-card/50 backdrop-blur-sm",o&&"ring-2 ring-primary/20"),children:[D.title&&e.jsxs($e,{className:"pb-2 border-b border-border/40 bg-muted/20 flex flex-row items-center justify-between",children:[e.jsx(Be,{className:"text-base font-medium tracking-tight truncate",title:D.title,children:D.title}),o&&e.jsx("div",{className:"drag-handle cursor-move p-1 hover:bg-muted/40 rounded",children:e.jsx(da,{className:"h-4 w-4"})})]}),e.jsx(Pe,{className:"p-0 h-full",children:e.jsx("div",{className:V("h-full w-full overflow-auto p-4"),children:e.jsx(Ie,{schema:S})})})]})},j)})})]})};function Ps(t){if(t!=null)return typeof t=="string"?t:t.defaultValue||t.key}const Wi=({label:t,value:s,trend:a,icon:r,className:l,description:d,...c})=>{const i=m.useMemo(()=>{if(typeof r=="string"){const o=br[r];return o?e.jsx(o,{className:"h-4 w-4 text-muted-foreground"}):null}return r},[r]);return e.jsxs(Oe,{className:V("h-full overflow-hidden",l),...c,children:[e.jsxs($e,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(Be,{className:"text-sm font-medium truncate",children:Ps(t)}),i&&e.jsx("div",{className:"h-4 w-4 text-muted-foreground shrink-0",children:i})]}),e.jsxs(Pe,{children:[e.jsx("div",{className:"text-2xl font-bold truncate",children:s}),(a||d)&&e.jsxs("p",{className:"text-xs text-muted-foreground flex items-center mt-1 truncate",children:[a&&e.jsxs("span",{className:V("flex items-center mr-2 shrink-0",a.direction==="up"&&"text-green-500",a.direction==="down"&&"text-red-500",a.direction==="neutral"&&"text-yellow-500"),children:[a.direction==="up"&&e.jsx(yr,{className:"h-3 w-3 mr-1"}),a.direction==="down"&&e.jsx(vr,{className:"h-3 w-3 mr-1"}),a.direction==="neutral"&&e.jsx(jr,{className:"h-3 w-3 mr-1"}),a.value,"%"]}),e.jsx("span",{className:"truncate",children:Ps(d)||Ps(a?.label)})]})]})]})};function qa(t){if(t!=null)return typeof t=="string"?t:t.defaultValue||t.key}const Gi=({title:t,value:s,icon:a,trend:r,trendValue:l,description:d,className:c,...i})=>{const o=a&&br[a];return e.jsxs(Oe,{className:V("h-full",c),...i,children:[e.jsxs($e,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(Be,{className:"text-sm font-medium",children:qa(t)}),o&&e.jsx(o,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(Pe,{children:[e.jsx("div",{className:"text-2xl font-bold",children:s}),(r||l||d)&&e.jsxs("p",{className:"text-xs text-muted-foreground flex items-center mt-1",children:[r&&l&&e.jsxs("span",{className:V("flex items-center mr-2",r==="up"&&"text-green-500",r==="down"&&"text-red-500",r==="neutral"&&"text-yellow-500"),children:[r==="up"&&e.jsx(yr,{className:"h-3 w-3 mr-1"}),r==="down"&&e.jsx(vr,{className:"h-3 w-3 mr-1"}),r==="neutral"&&e.jsx(jr,{className:"h-3 w-3 mr-1"}),l]}),qa(d)]})]})]})};function Ui(t,s){if(!s)return String(t);let a="",r="",l=!1,d,c=s;const i=c.match(/^([^0-9.,#]*)/);if(i&&i[1]){const h=i[1];a=h.replace(",",""),h.includes(",")&&(l=!0),c=c.slice(i[1].length)}c.includes(",")&&(l=!0,c=c.replace(/,/g,""));const o=c.match(/\.(\d+)f?/);o&&(d=Number(o[1]),c=c.slice(o[0].length)),r=c.replace(/[0-9#.f]/g,"");const u=d!==void 0?t.toFixed(d):String(t);if(l){const[h,n]=u.split("."),k=h.replace(/\B(?=(\d{3})+(?!\d))/g,",");return a+(n!==void 0?`${k}.${n}`:k)+r}return a+u+r}function us(t,s){if(t.length===0)return 0;switch(s){case"sum":return t.reduce((a,r)=>a+r,0);case"count":return t.length;case"avg":return t.reduce((a,r)=>a+r,0)/t.length;case"min":return Math.min(...t);case"max":return Math.max(...t);default:return t.reduce((a,r)=>a+r,0)}}const Zr=({schema:t,className:s})=>{const{title:a,rowField:r,columnField:l,valueField:d,aggregation:c="sum",data:i=[],showRowTotals:o=!1,showColumnTotals:u=!1,format:h,columnColors:n}=t,k=Array.isArray(i)?i:[],{rowKeys:w,colKeys:x,matrix:b,rowTotals:f,colTotals:p,grandTotal:g}=m.useMemo(()=>{const N=new Map,D=new Map,R={};for(const L of k){const O=String(L[r]??""),P=String(L[l]??""),C=Number(L[d])||0;N.set(O,!0),D.set(P,!0),R[O]||(R[O]={}),R[O][P]||(R[O][P]=[]),R[O][P].push(C)}const j=Array.from(N.keys()),S=Array.from(D.keys()),T={},$={},F={};for(const L of j){T[L]={};const O=[];for(const P of S){const C=R[L]?.[P]??[],z=us(C,c);T[L][P]=z,O.push(...C),!F[P]&&F[P]}$[L]=us(O,c)}for(const L of S){const O=[];for(const P of j){const C=R[P]?.[L]??[];O.push(...C)}F[L]=us(O,c)}const A=[];for(const L of k)A.push(Number(L[d])||0);const _=us(A,c);return{rowKeys:j,colKeys:S,matrix:T,rowTotals:$,colTotals:F,grandTotal:_}},[k,r,l,d,c]),y=N=>Ui(N,h);return k.length===0?e.jsxs("div",{className:V("overflow-auto",s),children:[a&&e.jsx("h3",{className:"text-sm font-semibold mb-2",children:a}),e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-muted-foreground","data-testid":"pivot-empty-state",children:[e.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-8 w-8 mb-2 opacity-40",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("rect",{x:"3",y:"3",width:"7",height:"7"}),e.jsx("rect",{x:"14",y:"3",width:"7",height:"7"}),e.jsx("rect",{x:"3",y:"14",width:"7",height:"7"}),e.jsx("rect",{x:"14",y:"14",width:"7",height:"7"})]}),e.jsx("p",{className:"text-xs",children:"No data available"})]})]}):e.jsxs("div",{className:V("overflow-auto",s),children:[a&&e.jsx("h3",{className:"text-sm font-semibold mb-2",children:a}),e.jsxs("table",{className:"w-full text-sm border-collapse",role:"table",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-border",children:[e.jsx("th",{className:"text-left p-2 font-medium text-muted-foreground",children:r}),x.map(N=>e.jsx("th",{className:V("text-right p-2 font-medium",n?.[N]??"text-muted-foreground"),children:N},N)),o&&e.jsx("th",{className:"text-right p-2 font-semibold text-muted-foreground bg-muted/20",children:"Total"})]})}),e.jsx("tbody",{children:w.map(N=>e.jsxs("tr",{className:"border-b border-border/50 hover:bg-muted/30",children:[e.jsx("td",{className:"p-2 font-medium",children:N}),x.map(D=>e.jsx("td",{className:V("text-right p-2 tabular-nums",n?.[D]),children:y(b[N]?.[D]??0)},D)),o&&e.jsx("td",{className:"text-right p-2 font-semibold tabular-nums bg-muted/20",children:y(f[N]??0)})]},N))}),u&&e.jsx("tfoot",{children:e.jsxs("tr",{className:"border-t-2 border-border font-semibold bg-muted/40",children:[e.jsx("td",{className:"p-2",children:"Total"}),x.map(N=>e.jsx("td",{className:"text-right p-2 tabular-nums",children:y(p[N]??0)},N)),o&&e.jsx("td",{className:"text-right p-2 tabular-nums font-bold",children:y(g)})]})})]})]})},Yi=({schema:t,dataSource:s,className:a})=>{const r=m.useContext(Is),l=s||r?.dataSource,d=$s(t.bind),[c,i]=m.useState([]),[o,u]=m.useState(!1),[h,n]=m.useState(null);m.useEffect(()=>{let b=!0;const f=async()=>{if(!(!l||!t.objectName)){b&&(u(!0),n(null));try{let p;if(typeof l.find=="function"){const g=await l.find(t.objectName,{$filter:t.filter});p=Za(g)}else return;b&&i(p)}catch(p){console.error("[ObjectPivotTable] Fetch error:",p),b&&n(p instanceof Error?p.message:"Failed to load data")}finally{b&&u(!1)}}};return t.objectName&&!d&&(!t.data||t.data.length===0)&&f(),()=>{b=!1}},[t.objectName,l,d,t.data,t.filter]);const k=d||t.data||c,w=Array.isArray(k)?k:[];if(o&&w.length===0)return e.jsxs("div",{className:V("overflow-auto",a),"data-testid":"pivot-loading",children:[t.title&&e.jsx("h3",{className:"text-sm font-semibold mb-2",children:t.title}),e.jsxs("div",{className:"space-y-2 p-2",children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsx(we,{className:"h-6 w-24"}),e.jsx(we,{className:"h-6 w-20"}),e.jsx(we,{className:"h-6 w-20"}),e.jsx(we,{className:"h-6 w-20"})]}),[1,2,3].map(b=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(we,{className:"h-5 w-24"}),e.jsx(we,{className:"h-5 w-20"}),e.jsx(we,{className:"h-5 w-20"}),e.jsx(we,{className:"h-5 w-20"})]},b))]})]});if(h)return e.jsxs("div",{className:V("overflow-auto",a),"data-testid":"pivot-error",children:[t.title&&e.jsx("h3",{className:"text-sm font-semibold mb-2",children:t.title}),e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-destructive","data-testid":"pivot-error-message",children:[e.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-8 w-8 mb-2 opacity-60",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("circle",{cx:"12",cy:"12",r:"10"}),e.jsx("line",{x1:"12",y1:"8",x2:"12",y2:"12"}),e.jsx("line",{x1:"12",y1:"16",x2:"12.01",y2:"16"})]}),e.jsx("p",{className:"text-xs",children:h})]})]});if(!l&&t.objectName&&w.length===0)return e.jsxs("div",{className:V("overflow-auto",a),children:[t.title&&e.jsx("h3",{className:"text-sm font-semibold mb-2",children:t.title}),e.jsx("div",{className:"flex flex-col items-center justify-center py-8 text-muted-foreground",children:e.jsxs("p",{className:"text-xs",children:["No data source available for “",t.objectName,"”"]})})]});const x={...t,data:w};return e.jsx(Zr,{schema:x,className:a})},Xi=({schema:t,dataSource:s,className:a})=>{const r=m.useContext(Is),l=s||r?.dataSource,d=$s(t.bind),[c,i]=m.useState([]),[o,u]=m.useState(!1),[h,n]=m.useState(null);m.useEffect(()=>{let f=!0;const p=async()=>{if(!(!l||!t.objectName)){f&&(u(!0),n(null));try{let g;if(typeof l.find=="function"){const y=await l.find(t.objectName,{$filter:t.filter});g=Za(y)}else return;f&&i(g)}catch(g){console.error("[ObjectDataTable] Fetch error:",g),f&&n(g instanceof Error?g.message:"Failed to load data")}finally{f&&u(!1)}}};return t.objectName&&!d&&(!t.data||t.data.length===0)&&p(),()=>{f=!1}},[t.objectName,l,d,t.data,t.filter]);const k=d||t.data||c,w=Array.isArray(k)?k:[],x=m.useMemo(()=>t.columns&&t.columns.length>0?t.columns:w.length===0?[]:Object.keys(w[0]).filter(p=>!p.startsWith("_")).map(p=>({header:p.charAt(0).toUpperCase()+p.slice(1).replace(/([A-Z])/g," $1"),accessorKey:p})),[t.columns,w]);if(o&&w.length===0)return e.jsx("div",{className:V("overflow-auto",a),"data-testid":"table-loading",children:e.jsxs("div",{className:"space-y-2 p-2",children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsx(we,{className:"h-6 w-1/4"}),e.jsx(we,{className:"h-6 w-1/4"}),e.jsx(we,{className:"h-6 w-1/4"}),e.jsx(we,{className:"h-6 w-1/4"})]}),[1,2,3,4].map(f=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(we,{className:"h-5 w-1/4"}),e.jsx(we,{className:"h-5 w-1/4"}),e.jsx(we,{className:"h-5 w-1/4"}),e.jsx(we,{className:"h-5 w-1/4"})]},f))]})});if(h)return e.jsx("div",{className:V("overflow-auto",a),"data-testid":"table-error",children:e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-destructive","data-testid":"table-error-message",children:[e.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-8 w-8 mb-2 opacity-60",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("circle",{cx:"12",cy:"12",r:"10"}),e.jsx("line",{x1:"12",y1:"8",x2:"12",y2:"12"}),e.jsx("line",{x1:"12",y1:"16",x2:"12.01",y2:"16"})]}),e.jsx("p",{className:"text-xs",children:h})]})});if(!l&&t.objectName&&w.length===0)return e.jsx("div",{className:V("overflow-auto",a),children:e.jsx("div",{className:"flex flex-col items-center justify-center py-8 text-muted-foreground",children:e.jsxs("p",{className:"text-xs",children:["No data source available for “",t.objectName,"”"]})})});if(w.length===0)return e.jsx("div",{className:V("overflow-auto",a),"data-testid":"table-empty-state",children:e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-muted-foreground",children:[e.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-8 w-8 mb-2 opacity-40",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",ry:"2"}),e.jsx("line",{x1:"3",y1:"9",x2:"21",y2:"9"}),e.jsx("line",{x1:"9",y1:"21",x2:"9",y2:"9"})]}),e.jsx("p",{className:"text-xs",children:"No data available"})]})});const b={...t,type:"data-table",data:w,columns:x};return e.jsx(Ie,{schema:b,className:a})},Ki={breadcrumb:["Dashboard","Configuration"],sections:[{key:"layout",title:"Layout",fields:[{key:"columns",label:"Columns",type:"slider",defaultValue:3,min:1,max:12,step:1},{key:"gap",label:"Gap",type:"slider",defaultValue:4,min:0,max:16,step:1},{key:"rowHeight",label:"Row height",type:"input",defaultValue:"120",placeholder:"e.g. 120"}]},{key:"data",title:"Data",collapsible:!0,fields:[{key:"refreshInterval",label:"Refresh interval",type:"select",defaultValue:"0",options:[{value:"0",label:"Manual"},{value:"30",label:"30s"},{value:"60",label:"1 min"},{value:"300",label:"5 min"}]}]},{key:"appearance",title:"Appearance",collapsible:!0,defaultCollapsed:!0,fields:[{key:"title",label:"Title",type:"input",placeholder:"Dashboard title"},{key:"showDescription",label:"Show description",type:"switch",defaultValue:!0},{key:"theme",label:"Theme",type:"select",defaultValue:"auto",options:[{value:"light",label:"Light"},{value:"dark",label:"Dark"},{value:"auto",label:"Auto"}]}]}]};function Eo({open:t,onClose:s,config:a,onSave:r,onFieldChange:l}){const{draft:d,isDirty:c,updateField:i,discard:o}=Hs(a,{onUpdate:l});return e.jsx(qs,{open:t,onClose:s,schema:Ki,draft:d,isDirty:c,onFieldChange:i,onSave:()=>r(d),onDiscard:o})}const Ji=[{value:"metric",label:"Metric"},{value:"bar",label:"Bar Chart"},{value:"line",label:"Line Chart"},{value:"pie",label:"Pie Chart"},{value:"donut",label:"Donut Chart"},{value:"area",label:"Area Chart"},{value:"scatter",label:"Scatter Plot"},{value:"table",label:"Table"},{value:"pivot",label:"Pivot Table"},{value:"list",label:"List"},{value:"custom",label:"Custom"}],Qi=[{value:"default",label:"Default"},{value:"blue",label:"Blue"},{value:"teal",label:"Teal"},{value:"orange",label:"Orange"},{value:"purple",label:"Purple"},{value:"success",label:"Success"},{value:"warning",label:"Warning"},{value:"danger",label:"Danger"}],Wa=[{value:"count",label:"Count"},{value:"sum",label:"Sum"},{value:"avg",label:"Average"},{value:"min",label:"Min"},{value:"max",label:"Max"}],Zi=["bar","line","area","pie","donut","scatter"];function Ga(t){return!!t&&Zi.includes(t)}const Ua=[{value:"group",label:"Group"},{value:"value",label:"Value"}],Ya=[{value:"asc",label:"↑"},{value:"desc",label:"↓"}];function es(t,s,a,r){return{key:t,label:s,type:"custom",render:(l,d,c)=>e.jsx(lr,{label:s,children:e.jsx("div",{"data-testid":`config-field-${t}`,children:e.jsx(ir,{options:r??[],value:l??"",onValueChange:d,placeholder:a,searchPlaceholder:"Search fields…",emptyText:"No fields found.",className:"h-7 w-32 text-xs",disabled:!c.object})})})}}function eo(t,s,a){const r=t&&t.length>0,l=r?{key:"object",label:"Data source",type:"custom",render:(k,w)=>e.jsx(lr,{label:"Data source",children:e.jsx("div",{"data-testid":"config-field-object",children:e.jsx(ir,{options:t,value:k??"",onValueChange:w,placeholder:"Select object…",searchPlaceholder:"Search objects…",emptyText:"No objects found.",className:"h-7 w-32 text-xs"})})})}:{key:"object",label:"Data source",type:"input",placeholder:"Object name"},d=r?es("categoryField","Category field","Select field…",s):{key:"categoryField",label:"Category field",type:"input",placeholder:"e.g. status"},c=r?es("valueField","Value field","Select field…",s):{key:"valueField",label:"Value field",type:"input",placeholder:"e.g. amount"},i=r?es("rowField","Field","Select row field…",s):{key:"rowField",label:"Field",type:"input",placeholder:"e.g. owner"},o=r?es("columnField","Field","Select column field…",s):{key:"columnField",label:"Field",type:"input",placeholder:"e.g. stage"},u=r?es("pivotValueField","Field","Select value field…",s):{key:"pivotValueField",label:"Field",type:"input",placeholder:"e.g. amount"};return{breadcrumb:["Dashboard",{pivot:"Pivot table",table:"Table"}[a??""]??(Ga(a)?"Chart":"Widget")],sections:[{key:"general",title:"General",fields:[{key:"title",label:"Title",type:"input",placeholder:"Widget title"},{key:"description",label:"Description",type:"input",placeholder:"Widget description"},{key:"type",label:"Widget type",type:"select",options:Ji,defaultValue:"metric"}]},{key:"data",title:"Data Binding",collapsible:!0,visibleWhen:k=>k.type!=="pivot",fields:[l,d,c,{key:"aggregate",label:"Aggregation",type:"select",options:Wa,defaultValue:"count"}]},{key:"pivot-data",title:"Data",collapsible:!0,visibleWhen:k=>k.type==="pivot",fields:[l]},{key:"pivot-rows",title:"Rows",collapsible:!0,visibleWhen:k=>k.type==="pivot",fields:[i,{key:"rowSortBy",label:"Sort by",type:"icon-group",options:Ua,defaultValue:"group"},{key:"rowSortOrder",label:"Sort order",type:"icon-group",options:Ya,defaultValue:"asc"},{key:"showRowLabels",label:"Show label",type:"switch",defaultValue:!0},{key:"showRowTotals",label:"Show totals",type:"switch",defaultValue:!1}]},{key:"pivot-columns",title:"Columns",collapsible:!0,visibleWhen:k=>k.type==="pivot",fields:[o,{key:"columnSortBy",label:"Sort by",type:"icon-group",options:Ua,defaultValue:"group"},{key:"columnSortOrder",label:"Sort order",type:"icon-group",options:Ya,defaultValue:"asc"},{key:"showColumnLabels",label:"Show label",type:"switch",defaultValue:!0},{key:"showColumnTotals",label:"Show totals",type:"switch",defaultValue:!1}]},{key:"pivot-values",title:"Values",collapsible:!0,visibleWhen:k=>k.type==="pivot",fields:[u,{key:"aggregation",label:"Aggregation",type:"select",options:Wa,defaultValue:"sum"},{key:"format",label:"Number format",type:"input",placeholder:"e.g. $,.2f"}]},{key:"chart-axis",title:"Axis & Series",collapsible:!0,visibleWhen:k=>Ga(k.type),fields:[{key:"xAxisLabel",label:"X-axis label",type:"input",placeholder:"e.g. Month"},{key:"yAxisLabel",label:"Y-axis label",type:"input",placeholder:"e.g. Revenue"},{key:"showLegend",label:"Show legend",type:"switch",defaultValue:!0}]},{key:"table-columns",title:"Columns",collapsible:!0,visibleWhen:k=>k.type==="table",fields:[{key:"searchable",label:"Searchable",type:"switch",defaultValue:!1},{key:"pagination",label:"Pagination",type:"switch",defaultValue:!1}]},{key:"layout",title:"Layout",collapsible:!0,fields:[{key:"layoutW",label:"Width (columns)",type:"slider",min:1,max:12,step:1,defaultValue:1},{key:"layoutH",label:"Height (rows)",type:"slider",min:1,max:6,step:1,defaultValue:1}]},{key:"appearance",title:"Appearance",collapsible:!0,defaultCollapsed:!0,fields:[{key:"colorVariant",label:"Color variant",type:"select",options:Qi,defaultValue:"default"},{key:"actionUrl",label:"Action URL",type:"input",placeholder:"https://..."}]}]}}function Xa(t){if(t==null)return"";if(typeof t=="string")return t;if(typeof t=="object"){const s=t;return s.defaultValue||s.key||""}return String(t)}function Ao({open:t,onClose:s,config:a,onSave:r,onFieldChange:l,headerExtra:d,availableObjects:c,availableFields:i}){const o=m.useMemo(()=>({...a,title:typeof a.title=="object"?Xa(a.title):a.title,description:typeof a.description=="object"?Xa(a.description):a.description}),[a]),{draft:u,isDirty:h,updateField:n,discard:k}=Hs(o,{onUpdate:l}),w=m.useMemo(()=>eo(c,i,u.type),[c,i,u.type]);return e.jsx(qs,{open:t,onClose:s,schema:w,draft:u,isDirty:h,onFieldChange:n,onSave:()=>r(u),onDiscard:k,headerExtra:d})}Se.register("dashboard",Ll,{namespace:"view",label:"Dashboard",category:"Complex",icon:"layout-dashboard",inputs:[{name:"columns",type:"number",label:"Columns",defaultValue:3},{name:"gap",type:"number",label:"Gap",defaultValue:4},{name:"className",type:"string",label:"CSS Class"}],defaultProps:{columns:3,widgets:[]}});Se.register("metric",Wi,{namespace:"plugin-dashboard",label:"Metric Widget",category:"Dashboard",inputs:[{name:"label",type:"string",label:"Label"},{name:"value",type:"string",label:"Value"}]});Se.register("metric-card",Gi,{namespace:"plugin-dashboard",label:"Metric Card",category:"Dashboard",inputs:[{name:"title",type:"string",label:"Title"},{name:"value",type:"string",label:"Value",required:!0},{name:"icon",type:"string",label:"Icon (Lucide name)"},{name:"trend",type:"enum",label:"Trend",enum:[{label:"Up",value:"up"},{label:"Down",value:"down"},{label:"Neutral",value:"neutral"}]},{name:"trendValue",type:"string",label:"Trend Value (e.g., +12%)"},{name:"description",type:"string",label:"Description"}],defaultProps:{title:"Metric",value:"0"}});Se.register("pivot",Zr,{namespace:"plugin-dashboard",label:"Pivot Table",category:"Dashboard",icon:"table-2",inputs:[{name:"title",type:"string",label:"Title"},{name:"rowField",type:"string",label:"Row Field",required:!0},{name:"columnField",type:"string",label:"Column Field",required:!0},{name:"valueField",type:"string",label:"Value Field",required:!0},{name:"aggregation",type:"enum",label:"Aggregation",enum:[{label:"Sum",value:"sum"},{label:"Count",value:"count"},{label:"Average",value:"avg"},{label:"Min",value:"min"},{label:"Max",value:"max"}]},{name:"showRowTotals",type:"boolean",label:"Show Row Totals"},{name:"showColumnTotals",type:"boolean",label:"Show Column Totals"},{name:"format",type:"string",label:"Number Format"}],defaultProps:{rowField:"",columnField:"",valueField:"",aggregation:"sum",data:[]}});Se.register("object-pivot",Yi,{namespace:"plugin-dashboard",label:"Object Pivot Table",category:"Dashboard",icon:"table-2",inputs:[{name:"objectName",type:"string",label:"Object Name",required:!0},{name:"title",type:"string",label:"Title"},{name:"rowField",type:"string",label:"Row Field",required:!0},{name:"columnField",type:"string",label:"Column Field",required:!0},{name:"valueField",type:"string",label:"Value Field",required:!0},{name:"aggregation",type:"enum",label:"Aggregation",enum:[{label:"Sum",value:"sum"},{label:"Count",value:"count"},{label:"Average",value:"avg"},{label:"Min",value:"min"},{label:"Max",value:"max"}]},{name:"showRowTotals",type:"boolean",label:"Show Row Totals"},{name:"showColumnTotals",type:"boolean",label:"Show Column Totals"},{name:"filter",type:"array",label:"Filter"},{name:"format",type:"string",label:"Number Format"}],defaultProps:{rowField:"",columnField:"",valueField:"",aggregation:"sum"}});Se.register("dashboard-grid",qi,{namespace:"plugin-dashboard",label:"Dashboard Grid (Editable)",category:"Complex",icon:"layout-grid",inputs:[{name:"title",type:"string",label:"Title"},{name:"persistLayoutKey",type:"string",label:"Layout Storage Key",defaultValue:"dashboard-layout"},{name:"className",type:"string",label:"CSS Class"}],defaultProps:{title:"Dashboard",widgets:[],persistLayoutKey:"dashboard-layout"}});Se.register("object-data-table",Xi,{namespace:"plugin-dashboard",label:"Object Data Table",category:"Dashboard",icon:"table",inputs:[{name:"objectName",type:"string",label:"Object Name",required:!0},{name:"columns",type:"array",label:"Columns"},{name:"filter",type:"array",label:"Filter"},{name:"searchable",type:"boolean",label:"Searchable"},{name:"pagination",type:"boolean",label:"Pagination"}],defaultProps:{searchable:!1,pagination:!1}});const to=({schema:t})=>{const{title:s,description:a,data:r,columns:l}=t;t.chart?.type;const d=!!t.chart;return e.jsxs(Oe,{className:`h-full flex flex-col ${t.className||""}`,children:[e.jsxs($e,{children:[s&&e.jsx(Be,{children:s}),a&&e.jsx(Ws,{children:a})]}),e.jsxs(Pe,{className:"flex-1 overflow-auto space-y-4",children:[d&&(()=>{const c=t.chart?.type;let i=c?Se.get(c):null;return i||(i=Se.get("chart")),i?e.jsx("div",{className:"min-h-[300px] border rounded-lg p-4 bg-background/50",children:e.jsx(i,{schema:{...t.chart,data:t.chart.data||r}})}):e.jsxs("div",{className:"min-h-[100px] border rounded-md p-4 bg-muted/20 text-muted-foreground flex items-center justify-center",children:["Unknown component type: ",c||"chart"]})})(),r&&r.length>0&&e.jsx("div",{className:"border rounded-lg",children:(()=>{const c=Se.get("aggrid")||Se.get("table");return c?e.jsx(c,{schema:{type:"aggrid",rowData:r,columnDefs:l,domLayout:"autoHeight"}}):e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full text-sm text-left",children:[e.jsx("thead",{className:"text-xs uppercase bg-muted",children:e.jsx("tr",{children:l?.map(i=>e.jsx("th",{className:"px-6 py-3",children:i.headerName||i.label||i.field},i.field))})}),e.jsx("tbody",{children:r.map((i,o)=>e.jsx("tr",{className:"bg-background border-b",children:l?.map(u=>e.jsx("td",{className:"px-6 py-4",children:i[u.field]},u.field))},o))})]})})})()})]})]})};function so(t,s,a){const r=t.fields||[],l=r.map(i=>i.label||i.name),d=s.map(i=>r.map(o=>{let u=i[o.name];return u=tn(u),typeof u=="string"&&(u.includes(",")||u.includes('"')||u.includes(`
6
+ `))?`"${u.replace(/"/g,'""')}"`:u??""})),c=[...a?.includeHeaders!==!1?[l.join(",")]:[],...d.map(i=>i.join(","))].join(`
7
+ `);ws(c,a?.filename||`${t.title||"report"}.csv`,"text/csv")}function ao(t,s,a){const r={title:t.title,description:t.description,generatedAt:new Date().toISOString(),data:s},l=JSON.stringify(r,null,2);ws(l,a?.filename||`${t.title||"report"}.json`,"application/json")}function en(t,s,a){const r=t.fields||[],l=an(a?.orientation),d=sn(a?.pageSize),c=`<!DOCTYPE html>
8
+ <html>
9
+ <head>
10
+ <meta charset="utf-8">
11
+ <title>${it(t.title||"Report")}</title>
12
+ <style>
13
+ @page { size: ${d} ${l}; margin: 20mm; }
14
+ body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; color: #333; }
15
+ h1 { font-size: 24px; margin-bottom: 8px; }
16
+ .description { color: #666; margin-bottom: 24px; }
17
+ .meta { color: #999; font-size: 12px; margin-bottom: 16px; }
18
+ table { width: 100%; border-collapse: collapse; margin-top: 16px; }
19
+ th { background: #f5f5f5; text-align: left; padding: 8px 12px; border: 1px solid #ddd; font-weight: 600; }
20
+ td { padding: 8px 12px; border: 1px solid #ddd; }
21
+ tr:nth-child(even) { background: #fafafa; }
22
+ </style>
23
+ </head>
24
+ <body>
25
+ <h1>${it(t.title||"Report")}</h1>
26
+ ${t.description?`<p class="description">${it(t.description)}</p>`:""}
27
+ <p class="meta">Generated: ${new Date().toLocaleString()}</p>
28
+ <table>
29
+ <thead><tr>${r.map(i=>`<th>${it(i.label||i.name)}</th>`).join("")}</tr></thead>
30
+ <tbody>${s.map(i=>`<tr>${r.map(o=>`<td>${it(String(i[o.name]??""))}</td>`).join("")}</tr>`).join("")}</tbody>
31
+ </table>
32
+ </body>
33
+ </html>`;ws(c,a?.filename||`${t.title||"report"}.html`,"text/html")}function ro(t,s,a){const r=t.fields||[],l=an(a?.orientation),d=sn(a?.pageSize),c=window.open("","_blank");if(!c){const i={...a,filename:a?.filename?.replace(/\.pdf$/,".html")||`${t.title||"report"}.html`};en(t,s,i);return}c.document.write(`<!DOCTYPE html>
34
+ <html>
35
+ <head>
36
+ <meta charset="utf-8">
37
+ <title>${it(t.title||"Report")}</title>
38
+ <style>
39
+ @page { size: ${d} ${l}; margin: 20mm; }
40
+ @media print { .no-print { display: none; } }
41
+ body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; color: #333; }
42
+ h1 { font-size: 24px; margin-bottom: 8px; }
43
+ .description { color: #666; margin-bottom: 24px; }
44
+ .meta { color: #999; font-size: 12px; margin-bottom: 16px; }
45
+ table { width: 100%; border-collapse: collapse; margin-top: 16px; }
46
+ th { background: #f5f5f5; text-align: left; padding: 8px 12px; border: 1px solid #ddd; font-weight: 600; }
47
+ td { padding: 8px 12px; border: 1px solid #ddd; }
48
+ tr:nth-child(even) { background: #fafafa; }
49
+ </style>
50
+ </head>
51
+ <body>
52
+ <h1>${it(t.title||"Report")}</h1>
53
+ ${t.description?`<p class="description">${it(t.description)}</p>`:""}
54
+ <p class="meta">Generated: ${new Date().toLocaleString()}</p>
55
+ <table>
56
+ <thead><tr>${r.map(i=>`<th>${it(i.label||i.name)}</th>`).join("")}</tr></thead>
57
+ <tbody>${s.map(i=>`<tr>${r.map(o=>`<td>${it(String(i[o.name]??""))}</td>`).join("")}</tr>`).join("")}</tbody>
58
+ </table>
59
+ </body>
60
+ </html>`),c.document.close(),c.onload=()=>{c.print()}}function no(t,s,a){const r=t.fields||[],l=r.map(i=>i.label||i.name),d=s.map(i=>r.map(o=>{let u=i[o.name];return u=tn(u),typeof u=="string"&&(u.includes(",")||u.includes('"')||u.includes(`
61
+ `)||u.includes(" "))?`"${u.replace(/"/g,'""')}"`:u??""})),c="\uFEFF"+[...a?.includeHeaders!==!1?[l.join(" ")]:[],...d.map(i=>i.join(" "))].join(`
62
+ `);ws(c,a?.filename||`${t.title||"report"}.tsv`,"text/tab-separated-values")}function lo(t,s,a,r){switch(t){case"csv":so(s,a,r);break;case"json":ao(s,a,r);break;case"html":en(s,a,r);break;case"pdf":ro(s,a,r);break;case"excel":no(s,a,r);break;default:console.warn(`Unsupported export format: ${t}`)}}function it(t){return t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}function tn(t){if(typeof t=="string"&&t.length>0){const s=t.charAt(0);if(s==="="||s==="+"||s==="-"||s==="@"||s==="|")return` ${t}`}return t}function sn(t){return["A4","A3","Letter","Legal"].includes(t||"")?t:"A4"}function an(t){return t==="landscape"?"landscape":"portrait"}function ws(t,s,a){const r=new Blob([t],{type:`${a};charset=utf-8`}),l=URL.createObjectURL(r),d=document.createElement("a");d.href=l,d.download=s,document.body.appendChild(d),d.click(),document.body.removeChild(d),URL.revokeObjectURL(l)}function Ka(t,s){if(t==null||t==="")return"";const a=s?.type,r=s?.format;if(a==="date"||r==="date"||io(t))return oo(t);if(a==="number"||typeof t=="number"){const l=typeof t=="number"?t:Number(t);return isNaN(l)?String(t):r==="currency"||r==="currency_cny"?`¥${l.toLocaleString("en-US",{minimumFractionDigits:0,maximumFractionDigits:0})}`:r==="currency_usd"?`$${l.toLocaleString("en-US",{minimumFractionDigits:0,maximumFractionDigits:0})}`:r==="percent"?`${l.toLocaleString("en-US",{minimumFractionDigits:1,maximumFractionDigits:1})}%`:l.toLocaleString("en-US")}return String(t)}function io(t){return typeof t!="string"?!1:/^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2})?/.test(t)}function oo(t){try{const s=new Date(t);if(isNaN(s.getTime()))return String(t);const a=s.getFullYear(),r=String(s.getMonth()+1).padStart(2,"0"),l=String(s.getDate()).padStart(2,"0");return`${a}-${r}-${l}`}catch{return String(t)}}function co(t,s){if(!s||s.length===0||!t||t.length===0)return null;const a=s[0],r=a.field,l=new Map;for(const i of t){const o=String(i[r]??"(empty)");l.has(o)||l.set(o,[]),l.get(o).push(i)}const d=[];for(const[i,o]of l)d.push({key:i,label:`${a.label||r}: ${i}`,rows:o});const c=a.sort==="desc"?-1:1;return d.sort((i,o)=>i.key.localeCompare(o.key)*c),d}const rn=({schema:t,onRefresh:s})=>{const{report:a,data:r,showToolbar:l=!0,allowExport:d=!0,allowPrint:c=!0,loading:i=!1}=t,o=x=>{if(!a){console.warn("ReportViewer: Cannot export, no report defined");return}lo(x,a,r||[],a.exportConfigs?.[x])},u=()=>{window.print()},h=()=>{s?.()},n=(x,b)=>{if(!r)return 0;const f=r.map(p=>Number(p[x])||0);switch(b){case"count":return r.length;case"sum":return f.reduce((p,g)=>p+g,0);case"avg":return f.length>0?(f.reduce((p,g)=>p+g,0)/f.length).toFixed(2):0;case"min":return f.length>0?Math.min(...f):0;case"max":return f.length>0?Math.max(...f):0;default:return""}},k=(x,b)=>{const f=a?.conditionalFormatting;if(!(!f||!Array.isArray(f)))for(const p of f){if(p.field!==x)continue;const g=String(b??""),y=String(p.value??"");let N=!1;switch(p.operator){case"equals":N=g===y;break;case"not_equals":N=g!==y;break;case"contains":N=g.includes(y);break;case"greater_than":N=Number(b)>Number(p.value);break;case"less_than":N=Number(b)<Number(p.value);break}if(N){const D={};return p.backgroundColor&&(D.backgroundColor=p.backgroundColor),p.textColor&&(D.color=p.textColor),D}}},w=(x,b)=>{if(x==null||x==="")return"";if(b.renderAs==="badge"){const f=b.colorMap?.[String(x)]||"";return e.jsx(St,{className:f,children:String(x)})}return Ka(x,b)};return a?e.jsxs("div",{className:"space-y-4",children:[l&&e.jsxs("div",{className:"flex items-center justify-between gap-2 p-4 bg-card rounded-lg border",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-lg font-semibold",children:a.title}),a.description&&e.jsx("p",{className:"text-sm text-muted-foreground",children:a.description})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[a.refreshInterval&&e.jsxs(B,{variant:"outline",size:"sm",onClick:h,children:[e.jsx(Us,{className:"h-4 w-4 mr-2"}),"Refresh"]}),c&&e.jsxs(B,{variant:"outline",size:"sm",onClick:u,children:[e.jsx(dr,{className:"h-4 w-4 mr-2"}),"Print"]}),d&&a.showExportButtons&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsxs(B,{variant:"outline",size:"sm",onClick:()=>o("pdf"),children:[e.jsx(Vt,{className:"h-4 w-4 mr-2"}),"PDF"]}),e.jsxs(B,{variant:"outline",size:"sm",onClick:()=>o("excel"),children:[e.jsx(Vt,{className:"h-4 w-4 mr-2"}),"Excel"]}),e.jsxs(B,{variant:"outline",size:"sm",onClick:()=>o("csv"),children:[e.jsx(Vt,{className:"h-4 w-4 mr-2"}),"CSV"]})]})]})]}),e.jsxs(Oe,{children:[e.jsxs($e,{children:[!l&&a.title&&e.jsx(Be,{children:a.title}),!l&&a.description&&e.jsx(Ws,{children:a.description})]}),e.jsxs(Pe,{className:"space-y-6",children:[i&&e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[1,2,3].map(x=>e.jsx(Oe,{children:e.jsxs(Pe,{className:"p-4 space-y-2",children:[e.jsx(we,{className:"h-4 w-20"}),e.jsx(we,{className:"h-8 w-28"})]})},x))}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(we,{className:"h-10 w-full"}),[1,2,3,4,5].map(x=>e.jsx(we,{className:"h-8 w-full"},x))]})]}),!i&&a.sections?.map((x,b)=>x.visible===!1?null:e.jsxs("div",{className:"space-y-2",children:[x.title&&x.type!=="header"&&e.jsx("h3",{className:"text-lg font-semibold border-b pb-2",children:x.title}),x.type==="header"&&x.title&&e.jsx("div",{className:"text-2xl font-bold py-4",children:x.title}),x.type==="summary"&&e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:a.fields?.filter(f=>f.showInSummary).map((f,p)=>e.jsx(Oe,{children:e.jsxs(Pe,{className:"p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:f.label||f.name}),e.jsx("div",{className:"text-2xl font-bold",children:Ka(n(f.name,f.aggregation),f)})]})},p))}),x.type==="chart"&&x.chart&&e.jsx("div",{className:"min-h-[300px]",children:(()=>{let f=x.chart.type;const p=!!x.chart.chartType;!f&&p&&(f="chart"),f&&!!Se.get(f)||(f="chart");const N=f==="chart"?{xAxisKey:x.chart.xAxisKey||x.chart.xAxisField||"name",series:x.chart.series||(x.chart.yAxisFields?x.chart.yAxisFields.map(R=>({dataKey:R})):[]),chartType:x.chart.chartType||"bar"}:{},D={...x.chart,type:f,...N,data:r||x.chart.data,className:x.chart.className||"w-full h-[350px]"};return e.jsx(Ie,{schema:D})})()}),x.type==="table"&&e.jsx("div",{className:"border rounded-lg overflow-x-auto",children:e.jsxs("table",{className:"w-full text-sm min-w-[600px]",children:[e.jsx("thead",{className:"bg-muted",children:e.jsx("tr",{children:x.columns?.map((f,p)=>e.jsx("th",{className:`px-4 py-2 font-medium ${f.type==="number"?"text-right":"text-left"}`,children:f.label||f.name},p))})}),e.jsx("tbody",{children:(()=>{const f=co(r||[],a.groupBy||[]);return f?f.map(p=>e.jsxs(tt.Fragment,{children:[e.jsx("tr",{className:"bg-muted/60",children:e.jsxs("td",{colSpan:x.columns?.length||1,className:"px-4 py-2 font-semibold text-sm",children:[p.label," (",p.rows.length,")"]})}),p.rows.map((g,y)=>e.jsx("tr",{className:"border-t hover:bg-muted/50 even:bg-muted/20",children:x.columns?.map((N,D)=>e.jsx("td",{className:`px-4 py-2 ${N.type==="number"?"text-right tabular-nums":""}`,style:k(N.name,g[N.name]),children:w(g[N.name],N)},D))},y))]},p.key)):r?.map((p,g)=>e.jsx("tr",{className:"border-t hover:bg-muted/50 even:bg-muted/20",children:x.columns?.map((y,N)=>e.jsx("td",{className:`px-4 py-2 ${y.type==="number"?"text-right tabular-nums":""}`,style:k(y.name,p[y.name]),children:w(p[y.name],y)},N))},g))})()})]})}),x.type==="text"&&x.text&&e.jsx("div",{className:"prose max-w-none",children:e.jsx("p",{children:x.text})}),x.type==="page-break"&&e.jsx("div",{className:"border-t-2 border-dashed my-8 print:page-break-after-always"}),x.content&&e.jsx(Ie,{schema:x.content})]},b)),!a.sections&&r&&r.length>0&&e.jsx("div",{className:"border rounded-lg overflow-x-auto",children:e.jsxs("table",{className:"w-full text-sm min-w-[600px]",children:[e.jsx("thead",{className:"bg-muted",children:e.jsx("tr",{children:a.fields?.map((x,b)=>e.jsx("th",{className:`px-4 py-2 font-medium ${x.type==="number"?"text-right":"text-left"}`,children:x.label||x.name},b))})}),e.jsx("tbody",{children:r.map((x,b)=>e.jsx("tr",{className:"border-t hover:bg-muted/50 even:bg-muted/20",children:a.fields?.map((f,p)=>e.jsx("td",{className:`px-4 py-2 ${f.type==="number"?"text-right tabular-nums":""}`,style:k(f.name,x[f.name]),children:w(x[f.name],f)},p))},b))})]})})]})]})]}):e.jsx(Oe,{children:e.jsx(Pe,{className:"p-8 text-center text-muted-foreground",children:"No report to display"})})},nn=({schedule:t,onChange:s})=>{const[a,r]=m.useState(t||{enabled:!1,frequency:"weekly",time:"09:00",timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,recipients:[],formats:["pdf"]}),l=o=>{const u={...a,...o};r(u),s?.(u)},d=[{value:"once",label:"Once"},{value:"daily",label:"Daily"},{value:"weekly",label:"Weekly"},{value:"monthly",label:"Monthly"},{value:"quarterly",label:"Quarterly"},{value:"yearly",label:"Yearly"}],c=[{value:"pdf",label:"PDF"},{value:"excel",label:"Excel"},{value:"csv",label:"CSV"},{value:"html",label:"HTML"}],i=[{value:0,label:"Sunday"},{value:1,label:"Monday"},{value:2,label:"Tuesday"},{value:3,label:"Wednesday"},{value:4,label:"Thursday"},{value:5,label:"Friday"},{value:6,label:"Saturday"}];return e.jsxs(Oe,{children:[e.jsx($e,{children:e.jsxs(Be,{className:"flex items-center gap-2",children:[e.jsx(ps,{className:"h-5 w-5"}),"Schedule Configuration"]})}),e.jsxs(Pe,{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("input",{type:"checkbox",id:"schedule-enabled",checked:a.enabled||!1,onChange:o=>l({enabled:o.target.checked}),className:"rounded"}),e.jsx(ce,{htmlFor:"schedule-enabled",children:"Enable Scheduled Report"})]}),a.enabled&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(ce,{children:"Frequency"}),e.jsx("select",{className:"w-full border rounded-md p-2 bg-background",value:a.frequency||"weekly",onChange:o=>l({frequency:o.target.value}),children:d.map(o=>e.jsx("option",{value:o.value,children:o.label},o.value))})]}),a.frequency==="weekly"&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(ce,{children:"Day of Week"}),e.jsx("select",{className:"w-full border rounded-md p-2 bg-background",value:a.dayOfWeek??1,onChange:o=>l({dayOfWeek:Number(o.target.value)}),children:i.map(o=>e.jsx("option",{value:o.value,children:o.label},o.value))})]}),a.frequency==="monthly"&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(ce,{children:"Day of Month"}),e.jsx(qe,{type:"number",min:1,max:31,value:a.dayOfMonth??1,onChange:o=>l({dayOfMonth:Number(o.target.value)})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(ce,{className:"flex items-center gap-2",children:[e.jsx(Hn,{className:"h-4 w-4"}),"Time"]}),e.jsx(qe,{type:"time",value:a.time||"09:00",onChange:o=>l({time:o.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(ce,{children:"Timezone"}),e.jsx(qe,{value:a.timezone||"",onChange:o=>l({timezone:o.target.value}),placeholder:"e.g. America/New_York"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(ce,{children:"Export Formats"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:c.map(o=>e.jsxs("label",{className:"flex items-center gap-1.5 px-3 py-1.5 border rounded-md cursor-pointer hover:bg-muted/50",children:[e.jsx("input",{type:"checkbox",checked:a.formats?.includes(o.value)||!1,onChange:u=>{const h=a.formats||[];l({formats:u.target.checked?[...h,o.value]:h.filter(n=>n!==o.value)})},className:"rounded"}),e.jsx("span",{className:"text-sm",children:o.label})]},o.value))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(ce,{className:"flex items-center gap-2",children:[e.jsx(hr,{className:"h-4 w-4"}),"Email Recipients"]}),e.jsx(qe,{placeholder:"email1@example.com, email2@example.com",value:a.recipients?.join(", ")||"",onChange:o=>l({recipients:o.target.value.split(",").map(u=>u.trim()).filter(Boolean)})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(ce,{children:"Email Subject"}),e.jsx(qe,{value:a.subject||"",onChange:o=>l({subject:o.target.value}),placeholder:"Scheduled Report: {report_title}"})]})]})]})]})},uo=({schema:t})=>{const{report:s,dataSources:a=[],availableFields:r=[],showPreview:l=!0,onSave:d,onCancel:c}=t,[i,o]=m.useState(s||{type:"report",title:"New Report",fields:[],filters:[],groupBy:[],sections:[],showExportButtons:!0,showPrintButton:!0}),[u,h]=m.useState(i.fields||[]),[n,k]=m.useState(i.filters||[]),[w,x]=m.useState(i.groupBy||[]),[b,f]=m.useState(i.sections||[]),p=()=>{if(r.length>0&&u.length<r.length){const O=r.find(P=>!u.some(C=>C.name===P.name));if(O){const P=[...u,O];h(P),o({...i,fields:P})}}},g=O=>{const P=u.filter((C,z)=>z!==O);h(P),o({...i,fields:P})},y=(O,P)=>{const C=[...u];C[O]=P,h(C),o({...i,fields:C})},N=()=>{const O={field:r[0]?.name||"",operator:"equals",value:""},P=[...n,O];k(P),o({...i,filters:P})},D=O=>{const P=n.filter((C,z)=>z!==O);k(P),o({...i,filters:P})},R=(O,P)=>{const C=[...n];C[O]=P,k(C),o({...i,filters:C})},j=()=>{const O={field:r[0]?.name||"",sort:"asc"},P=[...w,O];x(P),o({...i,groupBy:P})},S=O=>{const P=w.filter((C,z)=>z!==O);x(P),o({...i,groupBy:P})},T=(O,P)=>{const C=[...w];C[O]=P,x(C),o({...i,groupBy:C})},$=O=>{const P={type:O,title:`New ${O} Section`},C=[...b,P];f(C),o({...i,sections:C})},F=O=>{const P=b.filter((C,z)=>z!==O);f(P),o({...i,sections:P})},A=(O,P)=>{const C=[...b];C[O]=P,f(C),o({...i,sections:C})},_=()=>{console.log("Saving report:",i),d&&alert("Report saved! (Handler: "+d+")")},L=()=>{c&&console.log("Report cancelled:",c)};return e.jsxs("div",{className:"space-y-4",children:[e.jsxs(Oe,{children:[e.jsxs($e,{children:[e.jsx(Be,{children:"Report Builder"}),e.jsx(Ws,{children:"Configure your report settings, fields, filters, and sections"})]}),e.jsxs(Pe,{children:[e.jsxs(Bs,{defaultValue:"basic",className:"w-full",children:[e.jsxs(Vs,{className:"grid w-full grid-cols-6",children:[e.jsxs(nt,{value:"basic",children:[e.jsx(qn,{className:"h-4 w-4 mr-2"}),"Basic"]}),e.jsxs(nt,{value:"fields",children:[e.jsx(Cs,{className:"h-4 w-4 mr-2"}),"Fields"]}),e.jsxs(nt,{value:"filters",children:[e.jsx(Wn,{className:"h-4 w-4 mr-2"}),"Filters"]}),e.jsxs(nt,{value:"grouping",children:[e.jsx(Cs,{className:"h-4 w-4 mr-2"}),"Group By"]}),e.jsxs(nt,{value:"sections",children:[e.jsx(Cs,{className:"h-4 w-4 mr-2"}),"Sections"]}),e.jsxs(nt,{value:"schedule",children:[e.jsx(ps,{className:"h-4 w-4 mr-2"}),"Schedule"]})]}),e.jsx(lt,{value:"basic",className:"space-y-4 mt-4",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(ce,{htmlFor:"report-title",children:"Report Title"}),e.jsx(qe,{id:"report-title",value:i.title||"",onChange:O=>o({...i,title:O.target.value}),placeholder:"Enter report title"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(ce,{htmlFor:"report-description",children:"Description"}),e.jsx(qe,{id:"report-description",value:i.description||"",onChange:O=>o({...i,description:O.target.value}),placeholder:"Enter report description"})]}),a.length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(ce,{children:"Data Source"}),e.jsxs("select",{className:"w-full border rounded-md p-2",children:[e.jsx("option",{value:"",children:"Select a data source"}),a.map((O,P)=>e.jsxs("option",{value:P,children:["Data Source ",P+1]},P))]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(ce,{children:"Export Options"}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("label",{className:"flex items-center gap-2",children:[e.jsx("input",{type:"checkbox",checked:i.showExportButtons||!1,onChange:O=>o({...i,showExportButtons:O.target.checked})}),e.jsx("span",{className:"text-sm",children:"Show Export Buttons"})]}),e.jsxs("label",{className:"flex items-center gap-2",children:[e.jsx("input",{type:"checkbox",checked:i.showPrintButton||!1,onChange:O=>o({...i,showPrintButton:O.target.checked})}),e.jsx("span",{className:"text-sm",children:"Show Print Button"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(ce,{htmlFor:"export-format",children:"Default Export Format"}),e.jsxs("select",{id:"export-format",className:"w-full border rounded-md p-2",value:i.defaultExportFormat||"pdf",onChange:O=>o({...i,defaultExportFormat:O.target.value}),children:[e.jsx("option",{value:"pdf",children:"PDF"}),e.jsx("option",{value:"excel",children:"Excel"}),e.jsx("option",{value:"csv",children:"CSV"}),e.jsx("option",{value:"json",children:"JSON"}),e.jsx("option",{value:"html",children:"HTML"})]})]})]})}),e.jsxs(lt,{value:"fields",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(ce,{children:"Report Fields"}),e.jsxs(B,{size:"sm",variant:"outline",onClick:p,disabled:u.length>=r.length,children:[e.jsx(Qe,{className:"h-4 w-4 mr-2"}),"Add Field"]})]}),e.jsxs("div",{className:"space-y-2",children:[u.map((O,P)=>e.jsx("div",{className:"flex items-center gap-2 p-3 border rounded-lg",children:e.jsxs("div",{className:"flex-1 grid grid-cols-4 gap-2",children:[e.jsxs("div",{children:[e.jsx(ce,{className:"text-xs",children:"Field Name"}),e.jsx("div",{className:"text-sm font-medium",children:O.name})]}),e.jsxs("div",{children:[e.jsx(ce,{className:"text-xs",children:"Label"}),e.jsx(qe,{className:"h-8 text-sm",value:O.label||O.name,onChange:C=>y(P,{...O,label:C.target.value})})]}),e.jsxs("div",{children:[e.jsx(ce,{className:"text-xs",children:"Aggregation"}),e.jsxs("select",{className:"w-full border rounded-md h-8 text-sm px-2",value:O.aggregation||"",onChange:C=>y(P,{...O,aggregation:C.target.value}),children:[e.jsx("option",{value:"",children:"None"}),e.jsx("option",{value:"sum",children:"Sum"}),e.jsx("option",{value:"count",children:"Count"}),e.jsx("option",{value:"avg",children:"Average"}),e.jsx("option",{value:"min",children:"Min"}),e.jsx("option",{value:"max",children:"Max"})]})]}),e.jsx("div",{className:"flex items-end justify-end",children:e.jsx(B,{size:"sm",variant:"ghost",className:"text-red-500 hover:text-red-700 hover:bg-red-50",onClick:()=>g(P),children:e.jsx(vt,{className:"h-4 w-4"})})})]})},P)),u.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground border-2 border-dashed rounded-lg",children:'No fields selected. Click "Add Field" to begin.'})]})]}),e.jsxs(lt,{value:"filters",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(ce,{children:"Report Filters"}),e.jsxs(B,{size:"sm",variant:"outline",onClick:N,children:[e.jsx(Qe,{className:"h-4 w-4 mr-2"}),"Add Filter"]})]}),e.jsxs("div",{className:"space-y-2",children:[n.map((O,P)=>e.jsxs("div",{className:"flex items-center gap-2 p-3 border rounded-lg",children:[e.jsxs("div",{className:"flex-1 grid grid-cols-3 gap-2",children:[e.jsxs("div",{children:[e.jsx(ce,{className:"text-xs",children:"Field"}),e.jsx("select",{className:"w-full border rounded-md h-8 text-sm px-2",value:O.field,onChange:C=>R(P,{...O,field:C.target.value}),children:r.map((C,z)=>e.jsx("option",{value:C.name,children:C.label||C.name},z))})]}),e.jsxs("div",{children:[e.jsx(ce,{className:"text-xs",children:"Operator"}),e.jsxs("select",{className:"w-full border rounded-md h-8 text-sm px-2",value:O.operator,onChange:C=>R(P,{...O,operator:C.target.value}),children:[e.jsx("option",{value:"equals",children:"Equals"}),e.jsx("option",{value:"contains",children:"Contains"}),e.jsx("option",{value:"gt",children:"Greater Than"}),e.jsx("option",{value:"lt",children:"Less Than"}),e.jsx("option",{value:"between",children:"Between"})]})]}),e.jsxs("div",{children:[e.jsx(ce,{className:"text-xs",children:"Value"}),e.jsx(qe,{className:"h-8 text-sm",value:String(O.value),onChange:C=>R(P,{...O,value:C.target.value})})]})]}),e.jsx(B,{size:"sm",variant:"ghost",className:"text-red-500 hover:text-red-700 hover:bg-red-50 self-end",onClick:()=>D(P),children:e.jsx(vt,{className:"h-4 w-4"})})]},P)),n.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground border-2 border-dashed rounded-lg",children:"No filters defined."})]})]}),e.jsxs(lt,{value:"grouping",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(ce,{children:"Grouping Rules"}),e.jsxs(B,{size:"sm",variant:"outline",onClick:j,children:[e.jsx(Qe,{className:"h-4 w-4 mr-2"}),"Add Group"]})]}),e.jsxs("div",{className:"space-y-2",children:[w.map((O,P)=>e.jsxs("div",{className:"flex items-center gap-2 p-3 border rounded-lg",children:[e.jsxs("div",{className:"flex-1 grid grid-cols-2 gap-2",children:[e.jsxs("div",{children:[e.jsx(ce,{className:"text-xs",children:"Field"}),e.jsx("select",{className:"w-full border rounded-md h-8 text-sm px-2",value:O.field,onChange:C=>T(P,{...O,field:C.target.value}),children:r.map((C,z)=>e.jsx("option",{value:C.name,children:C.label||C.name},z))})]}),e.jsxs("div",{children:[e.jsx(ce,{className:"text-xs",children:"Sort Order"}),e.jsxs("select",{className:"w-full border rounded-md h-8 text-sm px-2",value:O.sort||"asc",onChange:C=>T(P,{...O,sort:C.target.value}),children:[e.jsx("option",{value:"asc",children:"Ascending"}),e.jsx("option",{value:"desc",children:"Descending"})]})]})]}),e.jsx(B,{size:"sm",variant:"ghost",className:"text-red-500 hover:text-red-700 hover:bg-red-50 self-end",onClick:()=>S(P),children:e.jsx(vt,{className:"h-4 w-4"})})]},P)),w.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground border-2 border-dashed rounded-lg",children:"No grouping rules applied."})]})]}),e.jsxs(lt,{value:"sections",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(ce,{children:"Report Sections"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs(B,{size:"sm",variant:"outline",onClick:()=>$("header"),children:[e.jsx(Qe,{className:"h-4 w-4 mr-2"}),"Header"]}),e.jsxs(B,{size:"sm",variant:"outline",onClick:()=>$("chart"),children:[e.jsx(Qe,{className:"h-4 w-4 mr-2"}),"Chart"]}),e.jsxs(B,{size:"sm",variant:"outline",onClick:()=>$("table"),children:[e.jsx(Qe,{className:"h-4 w-4 mr-2"}),"Table"]})]})]}),e.jsxs("div",{className:"space-y-2",children:[b.map((O,P)=>e.jsxs("div",{className:"p-3 border rounded-lg space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"font-medium flex items-center gap-2",children:[e.jsx("div",{className:"text-xs bg-muted px-2 py-0.5 rounded uppercase",children:O.type}),O.title]}),e.jsx(B,{size:"sm",variant:"ghost",className:"text-red-500 hover:text-red-700 hover:bg-red-50",onClick:()=>F(P),children:e.jsx(vt,{className:"h-4 w-4"})})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[e.jsxs("div",{children:[e.jsx(ce,{className:"text-xs",children:"Title"}),e.jsx(qe,{className:"h-8 text-sm",value:O.title||"",onChange:C=>A(P,{...O,title:C.target.value})})]}),O.type==="text"&&e.jsxs("div",{className:"col-span-2",children:[e.jsx(ce,{className:"text-xs",children:"Content"}),e.jsx(qe,{className:"h-8 text-sm",value:O.text||"",onChange:C=>A(P,{...O,text:C.target.value})})]}),O.type==="chart"&&e.jsxs("div",{className:"col-span-2 grid grid-cols-2 gap-2 mt-2 p-2 bg-muted/20 rounded",children:[e.jsx("div",{className:"col-span-2",children:e.jsx(ce,{className:"text-xs font-semibold",children:"Chart Configuration"})}),e.jsxs("div",{children:[e.jsx(ce,{className:"text-xs",children:"Chart Type"}),e.jsxs("select",{className:"flex h-8 w-full rounded-md border border-input bg-background px-3 py-1 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",value:O.chart?.chartType||"bar",onChange:C=>A(P,{...O,chart:{...O.chart,type:"chart",chartType:C.target.value}}),children:[e.jsx("option",{value:"bar",children:"Bar"}),e.jsx("option",{value:"line",children:"Line"}),e.jsx("option",{value:"area",children:"Area"}),e.jsx("option",{value:"pie",children:"Pie"})]})]}),e.jsxs("div",{children:[e.jsx(ce,{className:"text-xs",children:"X-Axis Field"}),e.jsxs("select",{className:"flex h-8 w-full rounded-md border border-input bg-background px-3 py-1 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",value:O.chart?.xAxisField||"",onChange:C=>A(P,{...O,chart:{...O.chart,type:"chart",xAxisField:C.target.value}}),children:[e.jsx("option",{value:"",children:"Select Field..."}),r.map(C=>e.jsx("option",{value:C.name,children:C.label||C.name},C.name)),r.length===0&&e.jsxs(e.Fragment,{children:[e.jsx("option",{value:"name",children:"Name"}),e.jsx("option",{value:"month",children:"Month"})]})]})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx(ce,{className:"text-xs",children:"Y-Axis Fields (comma separated)"}),e.jsx(qe,{className:"h-8 text-sm",placeholder:"e.g. value, count",value:O.chart?.yAxisFields?.join(", ")||"",onChange:C=>A(P,{...O,chart:{...O.chart,type:"chart",yAxisFields:C.target.value.split(",").map(z=>z.trim()).filter(Boolean)}})})]})]})]})]},P)),b.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground border-2 border-dashed rounded-lg",children:"No customized sections. The default report layout will be used."})]})]}),e.jsx(lt,{value:"schedule",className:"space-y-4 mt-4",children:e.jsx(nn,{schedule:i.schedule,onChange:O=>o({...i,schedule:O})})})]}),e.jsxs("div",{className:"flex items-center justify-end gap-2 mt-6 pt-4 border-t",children:[e.jsx(B,{variant:"outline",onClick:L,children:"Cancel"}),e.jsxs(B,{onClick:_,children:[e.jsx(gr,{className:"h-4 w-4 mr-2"}),"Save Report"]})]})]})]}),l&&e.jsxs(Oe,{className:"mt-8 border-2 border-blue-100",children:[e.jsx($e,{className:"bg-blue-50/50",children:e.jsx(Be,{className:"text-blue-900 text-sm uppercase tracking-wide",children:"Live Preview"})}),e.jsx(Pe,{className:"pt-6",children:e.jsx(rn,{schema:{type:"report-viewer",report:{...i,fields:u,filters:n,groupBy:w,sections:b},data:[{id:1,name:"Sample Item A",value:100,status:"New"},{id:2,name:"Sample Item B",value:250,status:"Active"},{id:3,name:"Sample Item C",value:75,status:"Closed"}]}})})]})]})},fo=[{value:"",label:"None"},{value:"sum",label:"Sum"},{value:"count",label:"Count"},{value:"avg",label:"Average"},{value:"min",label:"Min"},{value:"max",label:"Max"}];function mo({availableFields:t,value:s,onChange:a}){const r=Array.isArray(s)?s.map(i=>typeof i=="string"?{name:i,label:i,type:"string"}:{name:i.name||i.field||i.value,label:i.label||i.name||"",type:i.type||"string",aggregation:i.aggregation}):[],l=r.map(i=>i.name),d=i=>{const o=l.includes(i);let u;if(o)u=r.filter(h=>h.name!==i);else{const h=t.find(n=>n.value===i);u=[...r,{name:i,label:h?.label||i,type:h?.type||"string"}]}a(u)},c=(i,o)=>{const u=r.map(h=>h.name===i?{...h,aggregation:o||void 0,showInSummary:!!o}:h);a(u)};return t.length===0?e.jsx("div",{className:"text-xs text-muted-foreground py-2","data-testid":"field-picker-empty",children:"No fields available"}):e.jsx("div",{className:"space-y-1 py-1","data-testid":"field-picker",children:t.map(i=>{const o=l.includes(i.value),u=r.find(h=>h.name===i.value);return e.jsxs("div",{className:"flex items-center gap-2 px-1 py-0.5 rounded hover:bg-muted/50 text-xs",children:[e.jsxs("label",{className:"flex items-center gap-2 flex-1 cursor-pointer",children:[e.jsx(gn,{checked:o,onCheckedChange:()=>d(i.value),"data-testid":`field-picker-${i.value}`}),e.jsx("span",{className:"flex-1",children:i.label}),i.type&&e.jsx("span",{className:"text-[10px] text-muted-foreground",children:i.type})]}),o&&e.jsx("select",{className:"h-5 text-[10px] border rounded px-1 bg-background",value:u?.aggregation||"",onChange:h=>c(i.value,h.target.value),"data-testid":`field-agg-${i.value}`,children:fo.map(h=>e.jsx("option",{value:h.value,children:h.label},h.value))})]},i.value)})})}const po=[{value:"",label:"None"},{value:"bar",label:"Bar Chart"},{value:"line",label:"Line Chart"},{value:"pie",label:"Pie Chart"},{value:"area",label:"Area Chart"},{value:"donut",label:"Donut Chart"},{value:"scatter",label:"Scatter Plot"}];function ho({availableFields:t,value:s,onChange:a}){const r=s||{},l=d=>a({...r,...d});return e.jsxs("div",{className:"space-y-2 py-1","data-testid":"chart-config",children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-[10px] text-muted-foreground",children:"Chart type"}),e.jsx("select",{className:"w-full h-7 text-xs border rounded px-2 bg-background",value:r.chartType||"",onChange:d=>l({chartType:d.target.value||void 0}),"data-testid":"chart-type-select",children:po.map(d=>e.jsx("option",{value:d.value,children:d.label},d.value))})]}),r.chartType&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{children:[e.jsx("label",{className:"text-[10px] text-muted-foreground",children:"X-axis field"}),e.jsxs("select",{className:"w-full h-7 text-xs border rounded px-2 bg-background",value:r.xAxisField||"",onChange:d=>l({xAxisField:d.target.value||void 0}),"data-testid":"chart-x-field",children:[e.jsx("option",{value:"",children:"Select field…"}),t.map(d=>e.jsx("option",{value:d.value,children:d.label},d.value))]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-[10px] text-muted-foreground",children:"Y-axis field"}),e.jsxs("select",{className:"w-full h-7 text-xs border rounded px-2 bg-background",value:r.yAxisFields?.[0]||"",onChange:d=>l({yAxisFields:d.target.value?[d.target.value]:[]}),"data-testid":"chart-y-field",children:[e.jsx("option",{value:"",children:"Select field…"}),t.filter(d=>d.type==="number").map(d=>e.jsx("option",{value:d.value,children:d.label},d.value))]})]})]})]})}const xo=[{value:"equals",label:"="},{value:"not_equals",label:"≠"},{value:"greater_than",label:">"},{value:"less_than",label:"<"},{value:"contains",label:"Contains"}];function go({availableFields:t,value:s,onChange:a}){const r=Array.isArray(s)?s:[],l=()=>{a([...r,{field:t[0]?.value||"",operator:"equals",value:"",backgroundColor:"#fef9c3",textColor:""}])},d=i=>{a(r.filter((o,u)=>u!==i))},c=(i,o)=>{a(r.map((u,h)=>h===i?{...u,...o}:u))};return e.jsxs("div",{className:"space-y-2 py-1","data-testid":"conditional-format-rules",children:[r.map((i,o)=>e.jsxs("div",{className:"flex items-center gap-1 text-[10px] p-1 border rounded bg-muted/20",children:[e.jsx("select",{className:"h-5 text-[10px] border rounded px-1 bg-background flex-1",value:i.field,onChange:u=>c(o,{field:u.target.value}),"data-testid":`cf-rule-field-${o}`,children:t.map(u=>e.jsx("option",{value:u.value,children:u.label},u.value))}),e.jsx("select",{className:"h-5 text-[10px] border rounded px-1 bg-background w-12",value:i.operator,onChange:u=>c(o,{operator:u.target.value}),children:xo.map(u=>e.jsx("option",{value:u.value,children:u.label},u.value))}),e.jsx("input",{className:"h-5 text-[10px] border rounded px-1 bg-background w-16",value:i.value,placeholder:"value",onChange:u=>c(o,{value:u.target.value}),"data-testid":`cf-rule-value-${o}`}),e.jsx("input",{type:"color",className:"h-5 w-5 rounded border cursor-pointer",value:i.backgroundColor||"#fef9c3",onChange:u=>c(o,{backgroundColor:u.target.value}),title:"Background color"}),e.jsx(B,{type:"button",size:"sm",variant:"ghost",className:"h-5 w-5 p-0",onClick:()=>d(o),"data-testid":`cf-rule-remove-${o}`,children:e.jsx(vt,{className:"h-3 w-3"})})]},o)),e.jsxs(B,{type:"button",size:"sm",variant:"outline",className:"h-6 text-[10px] w-full",onClick:l,"data-testid":"cf-add-rule",children:[e.jsx(Qe,{className:"h-3 w-3 mr-1"}),"Add Rule"]})]})}const bo=[{value:"header",label:"Header"},{value:"summary",label:"Summary"},{value:"table",label:"Table"},{value:"chart",label:"Chart"},{value:"text",label:"Text"}];function yo({value:t,onChange:s}){const a=Array.isArray(t)?t:[],r=i=>{s([...a,{type:i,title:`New ${i}`,visible:!0}])},l=i=>{s(a.filter((o,u)=>u!==i))},d=(i,o)=>{s(a.map((u,h)=>h===i?{...u,...o}:u))},c=(i,o)=>{const u=i+o;if(u<0||u>=a.length)return;const h=[...a];[h[i],h[u]]=[h[u],h[i]],s(h)};return e.jsxs("div",{className:"space-y-2 py-1","data-testid":"section-manager",children:[a.map((i,o)=>e.jsxs("div",{className:"flex items-center gap-1 text-[10px] p-1.5 border rounded bg-muted/20",children:[e.jsxs("div",{className:"flex flex-col gap-0.5 mr-1",children:[e.jsx("button",{type:"button",className:"text-muted-foreground hover:text-foreground disabled:opacity-30",disabled:o===0,onClick:()=>c(o,-1),"data-testid":`section-up-${o}`,children:"▲"}),e.jsx("button",{type:"button",className:"text-muted-foreground hover:text-foreground disabled:opacity-30",disabled:o===a.length-1,onClick:()=>c(o,1),"data-testid":`section-down-${o}`,children:"▼"})]}),e.jsx("span",{className:"text-[9px] bg-muted px-1.5 py-0.5 rounded uppercase font-medium shrink-0",children:i.type}),e.jsx("input",{className:"h-5 text-[10px] border rounded px-1 bg-background flex-1 min-w-0",value:i.title||"",placeholder:"Section title",onChange:u=>d(o,{title:u.target.value}),"data-testid":`section-title-${o}`}),e.jsx(B,{type:"button",size:"sm",variant:"ghost",className:"h-5 w-5 p-0 shrink-0",onClick:()=>l(o),"data-testid":`section-remove-${o}`,children:e.jsx(vt,{className:"h-3 w-3"})})]},o)),e.jsx("div",{className:"flex gap-1 flex-wrap",children:bo.map(i=>e.jsxs(B,{type:"button",size:"sm",variant:"outline",className:"h-6 text-[10px]",onClick:()=>r(i.value),"data-testid":`section-add-${i.value}`,children:[e.jsx(Qe,{className:"h-3 w-3 mr-0.5"}),i.label]},i.value))})]})}function vo(t=[]){return{breadcrumb:["Report","Configuration"],sections:[{key:"basic",title:"Basic",fields:[{key:"title",label:"Title",type:"input",placeholder:"Report title"},{key:"description",label:"Description",type:"input",placeholder:"Report description"},{key:"reportType",label:"Report type",type:"select",defaultValue:"tabular",options:[{value:"tabular",label:"Tabular"},{value:"summary",label:"Summary"},{value:"matrix",label:"Matrix"}],helpText:"Tabular: flat table. Summary: grouped with subtotals. Matrix: pivot table (planned)."}]},{key:"data",title:"Data",collapsible:!0,fields:[{key:"objectName",label:"Data source",type:"input",placeholder:"e.g. opportunity",helpText:"Object name to query data from"},{key:"limit",label:"Row limit",type:"input",defaultValue:"100",placeholder:"e.g. 100"}]},{key:"columns",title:"Columns",collapsible:!0,hint:"Select fields to display as report columns. Set aggregation per column for summary reports.",fields:[{key:"fields",label:"Report columns",type:"custom",render:(s,a)=>e.jsx(mo,{availableFields:t,value:s,onChange:a})}]},{key:"filters",title:"Filters",collapsible:!0,hint:"Define filter conditions for the report data",fields:[{key:"filters",label:"Conditions",type:"filter",fields:t}]},{key:"groupBy",title:"Group By",collapsible:!0,hint:"Group report data and compute aggregations",fields:[{key:"groupBy",label:"Grouping",type:"sort",fields:t}]},{key:"chart",title:"Chart",collapsible:!0,hint:"Add a chart visualization to the report",fields:[{key:"chartConfig",label:"Chart",type:"custom",render:(s,a)=>e.jsx(ho,{availableFields:t,value:s,onChange:a})}]},{key:"conditionalFormatting",title:"Conditional Format",collapsible:!0,defaultCollapsed:!0,hint:"Highlight cells based on field value conditions",fields:[{key:"conditionalFormatting",label:"Rules",type:"custom",render:(s,a)=>e.jsx(go,{availableFields:t,value:s,onChange:a})}]},{key:"sections",title:"Sections",collapsible:!0,defaultCollapsed:!0,hint:"Manage report layout blocks (header, table, chart, summary)",fields:[{key:"sections",label:"Report sections",type:"custom",render:(s,a)=>e.jsx(yo,{value:s,onChange:a})}]},{key:"export",title:"Export",collapsible:!0,defaultCollapsed:!0,fields:[{key:"showExportButtons",label:"Show export buttons",type:"switch",defaultValue:!0},{key:"showPrintButton",label:"Show print button",type:"switch",defaultValue:!0},{key:"defaultExportFormat",label:"Default export format",type:"select",defaultValue:"pdf",options:[{value:"pdf",label:"PDF"},{value:"excel",label:"Excel"},{value:"csv",label:"CSV"},{value:"json",label:"JSON"},{value:"html",label:"HTML"}]}]},{key:"schedule",title:"Schedule",collapsible:!0,defaultCollapsed:!0,fields:[{key:"schedule",label:"Schedule",type:"custom",render:(s,a)=>e.jsx(nn,{schedule:s,onChange:a})}]},{key:"appearance",title:"Appearance",collapsible:!0,defaultCollapsed:!0,fields:[{key:"showToolbar",label:"Show toolbar",type:"switch",defaultValue:!0},{key:"refreshInterval",label:"Refresh interval",type:"select",defaultValue:"0",options:[{value:"0",label:"Manual"},{value:"30",label:"30s"},{value:"60",label:"1 min"},{value:"300",label:"5 min"}]}]}]}}function zo({open:t,onClose:s,config:a,onSave:r,onFieldChange:l,availableFields:d}){const{draft:c,isDirty:i,updateField:o,discard:u,undo:h,redo:n,canUndo:k,canRedo:w}=Hs(a,{onUpdate:l}),x=m.useMemo(()=>vo(d),[d]);return e.jsx(qs,{open:t,onClose:s,schema:x,draft:c,isDirty:i,onFieldChange:o,onSave:()=>r(c),onDiscard:u,onUndo:h,onRedo:n,canUndo:k,canRedo:w})}Se.register("report",to,{namespace:"report",label:"Report",category:"Report",inputs:[{name:"title",type:"string",label:"Title"},{name:"description",type:"string",label:"Description"},{name:"chart",type:"code",label:"Chart Configuration"}]});Se.register("report-viewer",rn,{namespace:"report",label:"Report Viewer",category:"Report",inputs:[{name:"report",type:"code",label:"Report Definition"},{name:"showToolbar",type:"boolean",label:"Show Toolbar"}]});Se.register("report-builder",uo,{namespace:"report",label:"Report Builder",category:"Report",inputs:[{name:"report",type:"code",label:"Initial Report"}]});export{Rr as D,Dr as L,Ro as M,Fo as R,Ao as W,Ll as a,Eo as b,rn as c,zo as d,ll as u};