@objectstack/console 17.0.0-rc.3 → 17.0.0-rc.4

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 (118) hide show
  1. package/CHANGELOG.md +74 -1
  2. package/dist/.objectui-sha +1 -1
  3. package/dist/assets/{AdapterProvider-Bur-uZKZ.js → AdapterProvider-BJ47DW1h.js} +1 -1
  4. package/dist/assets/{AiPendingActionsPage-CJwQWg1W.js → AiPendingActionsPage-UIynjb20.js} +1 -1
  5. package/dist/assets/{ApiConsolePage-D0rZy0lx.js → ApiConsolePage-B7CzUZnr.js} +1 -1
  6. package/dist/assets/{AppDocsIndex-CQo6tZPY.js → AppDocsIndex-DUsMqAwN.js} +1 -1
  7. package/dist/assets/{AppManagementPage-jLhhl_WS.js → AppManagementPage-DJ6118-F.js} +1 -1
  8. package/dist/assets/ApprovalsInboxPage-CTVm3l-x.js +1 -0
  9. package/dist/assets/AuditLogPage-Riqi0U7P.js +1 -0
  10. package/dist/assets/{ComponentNavView-4vcZh2oX.js → ComponentNavView-B2otfGZ7.js} +1 -1
  11. package/dist/assets/CreateViewDialog-z6h6V9xj.js +1 -0
  12. package/dist/assets/{DashboardView-S5Fshq0v.js → DashboardView-6_sxqUcT.js} +1 -1
  13. package/dist/assets/{DeveloperHubPage-yTPx0th5.js → DeveloperHubPage-NbNGfp6j.js} +1 -1
  14. package/dist/assets/{DocShell-BhkelvR8.js → DocShell-DvmmtwpW.js} +1 -1
  15. package/dist/assets/{ExpressionProvider-BQFSoabd.js → ExpressionProvider-_qLpGaJS.js} +1 -1
  16. package/dist/assets/FlowRunsPage-ZTpe0n1O.js +1 -0
  17. package/dist/assets/{IntegrationsPage-BWBfrCWI.js → IntegrationsPage-DMuzWjMr.js} +2 -2
  18. package/dist/assets/{InterfaceListPage-DcFmVgXg.js → InterfaceListPage-BHcPP_6g.js} +1 -1
  19. package/dist/assets/{ManagedByBadge-pdWk_Jcc.js → ManagedByBadge-DNLmY8V4.js} +1 -1
  20. package/dist/assets/{MarketplaceAccessDenied-DDTfnIA8.js → MarketplaceAccessDenied-Drlrrrd9.js} +1 -1
  21. package/dist/assets/{MarketplaceInstalledPage-Byn6Undk.js → MarketplaceInstalledPage-CYP2CaJz.js} +1 -1
  22. package/dist/assets/MarketplacePackagePage-DZwFKOQv.js +4 -0
  23. package/dist/assets/MarketplacePage-XU0PQLAW.js +1 -0
  24. package/dist/assets/{MetadataInspector-B7LigfJm.js → MetadataInspector-CoxLxxKN.js} +1 -1
  25. package/dist/assets/{MetadataProvider-D9fSVVZp.js → MetadataProvider-DJXxy8nz.js} +1 -1
  26. package/dist/assets/ObjectDataPage-CHRZduUP.js +1 -0
  27. package/dist/assets/PageView-D27Yy4W9.js +1 -0
  28. package/dist/assets/ProfilePage-09XXYshY.js +1 -0
  29. package/dist/assets/{PublicFormsPage-C3z0TH0k.js → PublicFormsPage-O8fm4eBn.js} +1 -1
  30. package/dist/assets/RecordDetailView-aOOCQH95.js +9 -0
  31. package/dist/assets/RecordFormPage-oqNb9asS.js +1 -0
  32. package/dist/assets/ReportDefaultInspector-Bo94YiWL.js +3 -0
  33. package/dist/assets/ReportView-CwCw4i27.js +2 -0
  34. package/dist/assets/{SearchResultsPage-Ct2q9Lrf.js → SearchResultsPage-I8ngrVdn.js} +1 -1
  35. package/dist/assets/SettingsHub-BY_utblN.js +1 -0
  36. package/dist/assets/SettingsView-DNKEl-i-.js +1 -0
  37. package/dist/assets/{SystemHubPage-BSunYA-X.js → SystemHubPage-WWns1vXN.js} +1 -1
  38. package/dist/assets/{createDerive-CGF05Hgy.js → createDerive-CsNhKPNT.js} +1 -1
  39. package/dist/assets/data-adapter-Bh8GerYu.js +32 -0
  40. package/dist/assets/{drillUrlFilters-BL8PeMrH.js → drillUrlFilters-DHAQHZbx.js} +1 -1
  41. package/dist/assets/framework-s0wcPYfi.js +8 -0
  42. package/dist/assets/{getIcon-D3yCrAri.js → getIcon-CQlbi2Hn.js} +1 -1
  43. package/dist/assets/{highlighted-body-OFNGDK62-DrPiUj_V.js → highlighted-body-OFNGDK62-0kvj_GdK.js} +1 -1
  44. package/dist/assets/{i18n-DBmEJ9U1.js → i18n-BFepWCa9.js} +1 -1
  45. package/dist/assets/index-CB0grcA9.js +2 -0
  46. package/dist/assets/index-DwcytixP.css +2 -0
  47. package/dist/assets/{infrastructure-PXm1h5tB.js → infrastructure-BKCMsWnH.js} +2 -2
  48. package/dist/assets/maplibre-gl-shared.mjs +6 -0
  49. package/dist/assets/maplibre-gl-worker.mjs +6 -0
  50. package/dist/assets/mermaid-GHXKKRXX-CI_uxHoC.js +1 -0
  51. package/dist/assets/metadata-admin-CApOhXis.js +25 -0
  52. package/dist/assets/plugin-calendar-BOjBc2zc.js +1 -0
  53. package/dist/assets/plugin-charts-Bk48oCaW.js +7 -0
  54. package/dist/assets/{plugin-chatbot-DmEp7ZGx.js → plugin-chatbot-CEj8h-9I.js} +7 -7
  55. package/dist/assets/plugin-dashboard-B0k1x0iX.js +6 -0
  56. package/dist/assets/plugin-form-B_6Tki5r.js +1 -0
  57. package/dist/assets/plugin-gantt-va3r2kNG.js +63 -0
  58. package/dist/assets/plugin-grid-C0rE_dCh.js +8 -0
  59. package/dist/assets/plugin-kanban-BhzMbWNL.js +1 -0
  60. package/dist/assets/{plugin-map-D0SLy13S.js → plugin-map-zu5SGrw4.js} +1 -1
  61. package/dist/assets/{plugin-markdown-D7iZb8hK.js → plugin-markdown-BqKwZink.js} +1 -1
  62. package/dist/assets/plugin-report-DOylY2iS.js +59 -0
  63. package/dist/assets/{plugin-timeline-C_svagQ1.js → plugin-timeline-sB_LQnGB.js} +1 -1
  64. package/dist/assets/plugin-tree-CHZ2Wjl4.js +1 -0
  65. package/dist/assets/plugin-view-DoxfBkwY.js +1 -0
  66. package/dist/assets/plugins-views-DoZ6BQOM.js +4 -0
  67. package/dist/assets/{runtime-metadata-persistence-BjYxldgR.js → runtime-metadata-persistence-TwDeIZza.js} +1 -1
  68. package/dist/assets/{skeletons-C8REUFE6.js → skeletons-BZIrujxl.js} +1 -1
  69. package/dist/assets/src--uGAhLxY.js +19 -0
  70. package/dist/assets/{src-E-Ibo9NH.js → src-Boqr2A0h.js} +1 -1
  71. package/dist/assets/src-t-RiW1Dw.js +1 -0
  72. package/dist/assets/ui-components-BFOT5Gog.js +72 -0
  73. package/dist/assets/ui-layout-D4KJD2jH.js +1 -0
  74. package/dist/assets/{use-book-data-D8LHn21q.js → use-book-data-BIflvfeG.js} +1 -1
  75. package/dist/assets/useOpenRecordList-CptPt5Mv.js +1 -0
  76. package/dist/assets/useSettingsLabel-CeykvoQ_.js +1 -0
  77. package/dist/assets/vendor-objectstack-Dm5CaPeY.js +184 -0
  78. package/dist/index.html +4 -4
  79. package/package.json +1 -1
  80. package/dist/assets/ApprovalsInboxPage-COyyj1KQ.js +0 -1
  81. package/dist/assets/AuditLogPage-CxGLPqlB.js +0 -1
  82. package/dist/assets/CreateViewDialog-C6sZGaIB.js +0 -1
  83. package/dist/assets/FlowRunsPage-DGyj2PBP.js +0 -1
  84. package/dist/assets/MarketplacePackagePage-DZkqNaao.js +0 -4
  85. package/dist/assets/MarketplacePage-Dt4ldkBx.js +0 -1
  86. package/dist/assets/ObjectDataPage-BZ4pf0ji.js +0 -1
  87. package/dist/assets/PageView-B8qkF17f.js +0 -1
  88. package/dist/assets/ProfilePage-Do9aTArT.js +0 -1
  89. package/dist/assets/RecordDetailView-CP1b5rdr.js +0 -9
  90. package/dist/assets/RecordFormPage-CyAjEE1O.js +0 -1
  91. package/dist/assets/ReportDefaultInspector-BqgFtk2E.js +0 -3
  92. package/dist/assets/ReportView-CfQ-Z9TJ.js +0 -2
  93. package/dist/assets/SettingsHub-C-7kyHtx.js +0 -1
  94. package/dist/assets/SettingsView-HmY6cAH1.js +0 -1
  95. package/dist/assets/data-adapter-rnhaIuyx.js +0 -32
  96. package/dist/assets/framework-UESyszCj.js +0 -8
  97. package/dist/assets/index-AHnJRZYu.css +0 -2
  98. package/dist/assets/index-U6sSlA28.js +0 -2
  99. package/dist/assets/mermaid-GHXKKRXX-DicGABpj.js +0 -1
  100. package/dist/assets/metadata-admin-Ci8bBNxq.js +0 -25
  101. package/dist/assets/plugin-calendar-WGoi_n7i.js +0 -1
  102. package/dist/assets/plugin-charts-CK8c0x6J.js +0 -7
  103. package/dist/assets/plugin-dashboard-Cz2sTF7I.js +0 -6
  104. package/dist/assets/plugin-form-D_JAwPGr.js +0 -1
  105. package/dist/assets/plugin-gantt-BQGs0Vpj.js +0 -63
  106. package/dist/assets/plugin-grid-CKEYn10A.js +0 -8
  107. package/dist/assets/plugin-kanban-TdXxukPA.js +0 -1
  108. package/dist/assets/plugin-report-CPE7yyd4.js +0 -59
  109. package/dist/assets/plugin-tree-ieUxQVUL.js +0 -1
  110. package/dist/assets/plugin-view-Dy9ZzWYn.js +0 -1
  111. package/dist/assets/plugins-views-CJKuyDvq.js +0 -4
  112. package/dist/assets/src-CSrGzA_t.js +0 -19
  113. package/dist/assets/src-DzTCerTm.js +0 -1
  114. package/dist/assets/ui-components-BbC0qTrK.js +0 -72
  115. package/dist/assets/ui-layout-C3eKqnNJ.js +0 -1
  116. package/dist/assets/useOpenRecordList-aRVznRXU.js +0 -1
  117. package/dist/assets/useSettingsLabel-By0A6m6P.js +0 -1
  118. package/dist/assets/vendor-objectstack-CWf5hLam.js +0 -180
@@ -1 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{f as t,r as n,y as r}from"./vendor-react-DpRf6e0g.js";import{Cr as i,Gi as a,_r as o,an as s,br as c,nl as l,vr as u,xr as d,yr as f}from"./ui-components-BbC0qTrK.js";import{c as p,i as m,n as h,t as g}from"./useSettingsLabel-By0A6m6P.js";var _=e(r(),1),v=n();function y({m:e,onOpen:t}){let{t:n}=l(),r=g(e.namespace),s=e.icon?p(e.icon):a,m=h(e.label),_=r.title(m),y=r.description(e.description??void 0);return(0,v.jsxs)(o,{className:`cursor-pointer hover:border-primary/50 hover:shadow-sm transition-all`,onClick:t,children:[(0,v.jsxs)(c,{className:`pb-3`,children:[(0,v.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,v.jsx)(s,{className:`h-6 w-6 text-muted-foreground`}),e.beta?(0,v.jsx)(i,{variant:`secondary`,className:`text-[10px]`,children:n(`console.settingsHub.beta`)}):null]}),(0,v.jsx)(d,{className:`text-base mt-2`,children:_}),y?(0,v.jsx)(f,{className:`text-xs`,children:y}):null]}),(0,v.jsx)(u,{className:`pt-0`,children:(0,v.jsx)(`div`,{className:`text-[11px] text-muted-foreground`,children:n(`console.settingsHub.settingsCount`,{n:e.specifiers.length})})})]})}function b(){let e=t(),{t:n}=l(),[r,i]=(0,_.useState)(null),[c,d]=(0,_.useState)(null);(0,_.useEffect)(()=>{m().then(e=>i(e.manifests??[])).catch(e=>d(e?.message??n(`console.settingsHub.loadError`)))},[n]);let f=(0,_.useMemo)(()=>{if(!r)return null;let e=new Map;for(let t of[...r].sort((e,t)=>(e.order??999)-(t.order??999))){let n=t.category??`Other`,r=e.get(n)??[];r.push(t),e.set(n,r)}return e},[r]);return(0,v.jsxs)(`div`,{className:`p-6 max-w-6xl mx-auto`,children:[(0,v.jsxs)(`div`,{className:`flex items-center gap-3 mb-6`,children:[(0,v.jsx)(a,{className:`h-7 w-7 text-muted-foreground`}),(0,v.jsxs)(`div`,{children:[(0,v.jsx)(`h1`,{className:`text-2xl font-semibold tracking-tight`,children:n(`console.settingsHub.title`)}),(0,v.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:n(`console.settingsHub.subtitle`)})]})]}),c?(0,v.jsx)(o,{children:(0,v.jsx)(u,{className:`py-8 text-center text-sm text-destructive`,children:c})}):null,r?r.length===0?(0,v.jsx)(o,{children:(0,v.jsx)(u,{className:`py-12 text-center text-sm text-muted-foreground`,children:n(`console.settingsHub.empty`)})}):Array.from(f??[]).map(([t,r])=>(0,v.jsxs)(`section`,{className:`mb-8`,children:[(0,v.jsx)(`h2`,{className:`text-sm font-semibold tracking-wide uppercase text-muted-foreground mb-3`,children:n(`console.settingsHub.categories.${t}`,{defaultValue:t})}),(0,v.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4`,children:r.map(t=>(0,v.jsx)(y,{m:t,onOpen:()=>e(`/system/settings/${t.namespace}`)},t.namespace))})]},t)):(0,v.jsxs)(`div`,{className:`space-y-4`,children:[(0,v.jsx)(s,{className:`h-6 w-32`}),(0,v.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4`,children:Array.from({length:3}).map((e,t)=>(0,v.jsx)(s,{className:`h-32 w-full`},t))})]})]})}export{b as SettingsHub};
@@ -1 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{f as t,m as n,r,y as i}from"./vendor-react-DpRf6e0g.js";import{n as a}from"./framework-UESyszCj.js";import{Bt as o,Cr as s,Dr as c,Or as l,Ot as u,Tn as d,To as f,_n as p,_r as m,an as h,ao as g,bn as _,fn as v,gn as y,gr as b,hn as x,kn as S,kr as C,mn as w,nc as T,oo as E,pn as D,ta as O,vr as k,yn as A,zc as j,zr as M,zt as N}from"./ui-components-BbC0qTrK.js";import{r as P}from"./vendor-ui-utils-CnzHPXVC.js";import{a as F,c as I,n as L,o as R,r as z,s as B,t as V}from"./useSettingsLabel-By0A6m6P.js";var H=e(i(),1),U=r();function W({reason:e,className:t}){return(0,U.jsxs)(s,{variant:`outline`,className:`gap-1 border-amber-300 bg-amber-50 text-amber-900 ${t??``}`,title:e??`Pinned by environment variable — cannot be edited from the UI.`,children:[(0,U.jsx)(g,{className:`h-3 w-3`}),`Locked by env`]})}function G({resolved:e,labels:t}){let n=e.cascadeChain;if(!n||n.length===0)return null;let r=n.find(e=>e.effective)??n[n.length-1],i=n.find(e=>e!==r&&e.value!==null&&e.value!==void 0),a=e=>t?.sourceLabel?.(e)??e;return r.scope!=="default"&&r.scope!==`user`&&r.scope!==`tenant`?(0,U.jsxs)(s,{variant:`outline`,className:`text-blue-700 border-blue-300 text-[10px]`,children:[`Inherited from `,a(r.scope)]}):i?(0,U.jsxs)(s,{variant:`outline`,className:`text-amber-700 border-amber-300 text-[10px]`,children:[`Overrides `,a(i.scope)]}):null}function K({spec:e,resolved:t,labelText:n,labels:r}){return(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsxs)(S,{className:`text-sm font-medium`,children:[n,e.required?(0,U.jsx)(`span`,{className:`ml-0.5 text-destructive`,children:`*`}):null]}),e.deprecated?(0,U.jsxs)(s,{variant:`outline`,className:`text-amber-700 border-amber-300`,children:[`Deprecated`,e.replacedBy?` → ${e.replacedBy}`:``]}):null,t?.locked?(0,U.jsx)(W,{reason:t.lockedReason}):null,t&&!t.locked?(0,U.jsx)(G,{resolved:t,labels:r}):null,t?.source&&t.source!=="default"&&!t.locked?(0,U.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:r?.sourceLabel?.(t.source)??t.source}):null]})}function q({description:e}){return e?(0,U.jsx)(`p`,{className:`text-xs text-muted-foreground mt-1`,children:e}):null}function J({id:e,message:t}){return(0,U.jsx)(`p`,{id:e,role:`alert`,className:`text-xs text-destructive mt-1`,children:t})}function Y(e){let{spec:t,resolved:n,value:r,onChange:i,onAction:a,locked:s,saving:m,labels:h,error:g}=e,E=(0,H.useId)(),O=!!(s||m),k=L(t.label),j=t.key&&h?h.fieldLabel(t.key,k):k,P=t.key&&h?h.fieldHelp(t.key,t.description):t.description;if(t.type===`group`){let e=t.id&&h?h.groupTitle(t.id,k):k,n=t.id&&h?h.groupDescription(t.id,t.description):t.description;return(0,U.jsxs)(`div`,{className:`pt-6 pb-2`,children:[(0,U.jsx)(`h3`,{className:`text-sm font-semibold tracking-tight text-foreground/90`,children:e}),n?(0,U.jsx)(`p`,{className:`text-xs text-muted-foreground mt-1`,children:n}):null,(0,U.jsx)(v,{className:`mt-3`})]})}if(t.type===`info_banner`){let e=t.bannerSeverity===`error`?`destructive`:`default`;return(0,U.jsxs)(c,{variant:e,className:`my-2`,children:[(0,U.jsx)(f,{className:`h-4 w-4`}),(0,U.jsx)(C,{children:k}),t.bannerText?(0,U.jsx)(l,{children:t.bannerText}):null]})}if(t.type===`child_pane`)return(0,U.jsxs)(`a`,{href:`#/settings/${t.childNamespace}`,className:`flex items-center justify-between rounded-md border border-border bg-card px-4 py-3 hover:bg-accent transition-colors`,children:[(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`div`,{className:`text-sm font-medium`,children:k}),t.description?(0,U.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:t.description}):null]}),(0,U.jsx)(T,{className:`h-4 w-4 text-muted-foreground`})]});if(t.type===`title_value`)return(0,U.jsxs)(`div`,{className:`flex items-center justify-between py-2`,children:[(0,U.jsx)(K,{spec:t,resolved:n,labelText:j,labels:h}),(0,U.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:String(r??`—`)})]});if(t.type===`action_button`){let e=t.icon?I(t.icon):null,n=t.id??t.key??`test`,r=h?h.actionLabel(n,k):k;return(0,U.jsxs)(`div`,{className:`flex items-center justify-between py-3`,children:[(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`div`,{className:`text-sm font-medium`,children:r}),t.description?(0,U.jsx)(`p`,{className:`text-xs text-muted-foreground mt-1`,children:t.description}):null]}),(0,U.jsxs)(M,{size:`sm`,variant:`secondary`,onClick:a,disabled:m,children:[e?(0,U.jsx)(e,{className:`h-4 w-4 mr-1.5`}):null,r]})]})}let F=`${E}-error`,R=e=>(0,U.jsxs)(`div`,{className:`space-y-1.5 py-2`,children:[(0,U.jsx)(K,{spec:t,resolved:n,labelText:j,labels:h}),g&&(0,H.isValidElement)(e)?(0,H.cloneElement)(e,{"aria-invalid":!0,"aria-describedby":F}):e,g?(0,U.jsx)(J,{id:F,message:g}):(0,U.jsx)(q,{description:P})]}),z=e=>{let n=typeof e.label==`string`?e.label:e.label?.defaultValue??String(e.value);return!t.key||!h?n:h.optionLabel(t.key,String(e.value),n)};switch(t.type){case`text`:case`email`:case`url`:case`phone`:return R((0,U.jsx)(d,{id:E,type:t.type===`email`?`email`:t.type===`url`?`url`:`text`,value:r??``,minLength:t.minLength,maxLength:t.maxLength,pattern:t.pattern,disabled:O,onChange:e=>i(e.target.value)}));case`password`:return R((0,U.jsx)(d,{id:E,type:`password`,autoComplete:`new-password`,placeholder:r?`••••••••`:``,disabled:O,onChange:e=>i(e.target.value)}));case`textarea`:return R((0,U.jsx)(u,{id:E,rows:t.rows??4,value:r??``,minLength:t.minLength,maxLength:t.maxLength,disabled:O,onChange:e=>i(e.target.value)}));case`number`:return R((0,U.jsx)(d,{id:E,type:`number`,value:r,min:t.min,max:t.max,step:t.step,disabled:O,onChange:e=>i(e.target.value===``?null:Number(e.target.value))}));case`toggle`:return(0,U.jsxs)(`div`,{className:`flex items-center justify-between py-3`,children:[(0,U.jsxs)(`div`,{children:[(0,U.jsx)(K,{spec:t,resolved:n,labelText:j,labels:h}),(0,U.jsx)(q,{description:P})]}),(0,U.jsx)(N,{id:E,checked:!!r,disabled:O,onCheckedChange:e=>i(e)})]});case`select`:return R((0,U.jsxs)(D,{value:r==null?void 0:String(r),onValueChange:e=>i(e),disabled:O,children:[(0,U.jsx)(y,{id:E,children:(0,U.jsx)(p,{placeholder:`Select…`})}),(0,U.jsx)(w,{children:t.options?.map(e=>(0,U.jsx)(x,{value:String(e.value),children:z(e)},String(e.value)))})]}));case`radio`:return R((0,U.jsx)(A,{value:r==null?void 0:String(r),onValueChange:e=>i(e),disabled:O,children:t.options?.map(e=>(0,U.jsxs)(`div`,{className:`flex items-center space-x-2`,children:[(0,U.jsx)(_,{value:String(e.value),id:`${E}-${e.value}`}),(0,U.jsx)(S,{htmlFor:`${E}-${e.value}`,className:`text-sm font-normal`,children:z(e)})]},String(e.value)))}));case`multiselect`:{let e=Array.isArray(r)?r:[];return R((0,U.jsx)(`div`,{className:`grid grid-cols-2 gap-2`,children:t.options?.map(t=>{let n=String(t.value),r=e.map(String).includes(n);return(0,U.jsxs)(`label`,{className:`flex items-center gap-2 text-sm`,children:[(0,U.jsx)(b,{checked:r,disabled:O,onCheckedChange:t=>{let r=new Set(e.map(String));t?r.add(n):r.delete(n),i(Array.from(r))}}),z(t)]},n)})}))}case`slider`:return R((0,U.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,U.jsx)(o,{value:[Number(r??t.min??0)],min:t.min??0,max:t.max??100,step:t.step??1,disabled:O,onValueChange:e=>i(e[0]),className:`flex-1`}),(0,U.jsx)(`span`,{className:`text-sm tabular-nums w-12 text-right`,children:String(r??t.min??0)})]}));case`color`:return R((0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(d,{id:E,type:`color`,value:r??`#000000`,disabled:O,onChange:e=>i(e.target.value),className:`w-16 h-9 p-1`}),(0,U.jsx)(d,{value:r??``,disabled:O,onChange:e=>i(e.target.value),className:`flex-1 font-mono text-sm`})]}));case`json`:return R((0,U.jsx)(u,{id:E,rows:t.rows??6,className:`font-mono text-xs`,value:typeof r==`string`?r:JSON.stringify(r??null,null,2),disabled:O,onChange:e=>i(e.target.value)}));default:return R((0,U.jsxs)(`div`,{className:`text-sm text-muted-foreground`,children:[`Unsupported specifier type: `,t.type]}))}}function X(e,t){if(!e)return!0;let n=e.trim().match(/^\$\{(.+)\}$/);if(!n)return!0;try{return!!Function(`data`,`with (data) { return (${n[1]}); }`)(t)}catch{return!0}}function Z(e,t){let{[t]:n,...r}=e;return r}function Q(){let e=n(),r=t(),i=e.namespace??``,[o,c]=(0,H.useState)(null),[l,u]=(0,H.useState)(!0),[d,f]=(0,H.useState)(!1),[p,g]=(0,H.useState)(null),[_,v]=(0,H.useState)({}),[y,b]=(0,H.useState)({}),x=(0,H.useCallback)(async()=>{u(!0),g(null);try{let e=await z(i);c(e),v({}),b({})}catch(e){g(e?.message??`Failed to load settings`)}finally{u(!1)}},[i]);(0,H.useEffect)(()=>{i&&x()},[i,x]);let S=(0,H.useMemo)(()=>{let e={};if(!o)return e;for(let[t,n]of Object.entries(o.values))e[t]=n.value;return{...e,..._}},[o,_]),C=(0,H.useMemo)(()=>Object.keys(_),[_]),w=V(i);if(!i)return(0,U.jsx)(`div`,{className:`p-6 text-muted-foreground`,children:`No namespace selected.`});if(l)return(0,U.jsxs)(`div`,{className:`p-6 space-y-3 max-w-3xl`,children:[(0,U.jsx)(h,{className:`h-8 w-1/3`}),(0,U.jsx)(h,{className:`h-4 w-2/3`}),(0,U.jsx)(h,{className:`h-32 w-full`}),(0,U.jsx)(h,{className:`h-32 w-full`})]});if(p)return(0,U.jsxs)(`div`,{className:`p-6 max-w-3xl`,children:[(0,U.jsxs)(M,{variant:`ghost`,size:`sm`,onClick:()=>r(-1),children:[(0,U.jsx)(j,{className:`h-4 w-4 mr-1`}),` Back`]}),(0,U.jsx)(m,{className:`mt-3`,children:(0,U.jsx)(k,{className:`py-8 text-center text-sm text-destructive`,children:p})})]});if(!o)return null;let{manifest:T,values:D}=o,A=T.icon?I(T.icon):null,N=w.title(L(T.label)),W=w.description(T.description),G=async()=>{if(C.length!==0){f(!0);try{let e=await B(i,_);c({...o,values:{...D,...e.values}}),v({}),b({}),P.success(`Settings saved`)}catch(e){let t=e?.payload?.error;if(t?.code===`SETTINGS_LOCKED`){let e=F(t);P.error(e?`Locked by environment: ${e}`:`Locked by environment`)}else{let n=a(t);n?.length&&b(Object.fromEntries(n.map(e=>[e.field,e.message]))),P.error(e?.message??`Save failed`)}}finally{f(!1)}}},K=async e=>{f(!0);try{let t=await R(i,e,_);t.ok?P.success(t.message??`Action succeeded`):P.error(t.message??`Action failed`)}catch(e){P.error(e?.message??`Action failed`)}finally{f(!1)}};return(0,U.jsxs)(`div`,{className:`p-6 max-w-3xl mx-auto pb-32`,children:[(0,U.jsxs)(M,{variant:`ghost`,size:`sm`,onClick:()=>r(`/system/settings`),children:[(0,U.jsx)(j,{className:`h-4 w-4 mr-1`}),` All settings`]}),(0,U.jsxs)(`div`,{className:`mt-3 flex items-start gap-3`,children:[A?(0,U.jsx)(A,{className:`h-7 w-7 mt-0.5 text-muted-foreground`}):null,(0,U.jsxs)(`div`,{className:`flex-1`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(`h1`,{className:`text-2xl font-semibold tracking-tight`,children:N}),T.beta?(0,U.jsx)(s,{variant:`secondary`,children:`Beta`}):null]}),W?(0,U.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1`,children:W}):null]})]}),T.helpText?(0,U.jsx)(`p`,{className:`text-sm text-muted-foreground mt-4 whitespace-pre-wrap`,children:T.helpText}):null,(0,U.jsx)(`div`,{className:`mt-6 divide-y`,children:T.specifiers.filter(e=>X(e.visible,S)).map((e,t)=>{let n=e.key,r=n?D[n]:void 0,i=n?n in _?_[n]:r?.value:void 0;return(0,U.jsx)(Y,{spec:e,resolved:r,value:i,onChange:e=>{n&&(v(t=>({...t,[n]:e})),b(e=>n in e?Z(e,n):e))},onAction:e.type===`action_button`?()=>K(e.id??n??`test`):void 0,locked:r?.locked,saving:d,labels:w,error:n?y[n]:void 0},(n??`_layout_${t}`)+t)})}),C.length>0?(0,U.jsx)(`div`,{className:`fixed bottom-0 inset-x-0 bg-background/95 backdrop-blur border-t shadow-lg z-40`,children:(0,U.jsxs)(`div`,{className:`max-w-3xl mx-auto px-6 py-3 flex items-center justify-between`,children:[(0,U.jsxs)(`div`,{className:`text-sm text-muted-foreground`,children:[C.length,` unsaved change`,C.length>1?`s`:``]}),(0,U.jsxs)(`div`,{className:`flex gap-2`,children:[(0,U.jsxs)(M,{variant:`ghost`,size:`sm`,onClick:()=>{v({}),b({})},disabled:d,children:[(0,U.jsx)(O,{className:`h-4 w-4 mr-1`}),` Discard`]}),(0,U.jsxs)(M,{onClick:G,disabled:d,children:[d?(0,U.jsx)(E,{className:`h-4 w-4 mr-1 animate-spin`}):null,`Save changes`]})]})]})}):null]})}export{Q as SettingsView};