@objectstack/console 12.1.0 → 12.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/dist/.objectui-sha +1 -1
  2. package/dist/assets/{AdapterProvider-BcaDLM8t.js → AdapterProvider-_4c7hk3d.js} +1 -1
  3. package/dist/assets/{AiPendingActionsPage-kXdn272E.js → AiPendingActionsPage-Gc2Wh8Kh.js} +1 -1
  4. package/dist/assets/{ApiConsolePage-BUAZ2Y01.js → ApiConsolePage-CmiLmtuU.js} +1 -1
  5. package/dist/assets/{AppDocsIndex-BfFCj_wz.js → AppDocsIndex-CG7e4V2y.js} +1 -1
  6. package/dist/assets/{AppManagementPage-lZl1h0_x.js → AppManagementPage-C7T-9Exg.js} +1 -1
  7. package/dist/assets/{ApprovalsInboxPage-BllA35Q9.js → ApprovalsInboxPage-D9PFFxKD.js} +1 -1
  8. package/dist/assets/{AuditLogPage-Du_n63Ua.js → AuditLogPage-C-rDSpPt.js} +1 -1
  9. package/dist/assets/{ComponentNavView-BNkTx_gd.js → ComponentNavView-DX23dzZd.js} +1 -1
  10. package/dist/assets/ConsoleFloatingChatbot-CmLazUxX.js +1 -0
  11. package/dist/assets/CreateViewDialog-6JmiAMxS.js +1 -0
  12. package/dist/assets/DashboardView-Al7ce4gm.js +1 -0
  13. package/dist/assets/DashboardWidgetInspector-BmIMgSGO.js +1 -0
  14. package/dist/assets/{DeveloperHubPage-BJDkM5bW.js → DeveloperHubPage-D8eYekI9.js} +1 -1
  15. package/dist/assets/{ExpressionProvider-CD5Qq5aY.js → ExpressionProvider-w-HoWEV1.js} +1 -1
  16. package/dist/assets/{FlowRunsPage-C8usAiCs.js → FlowRunsPage-Hs5i7s3C.js} +1 -1
  17. package/dist/assets/{IntegrationsPage-DHi5SpvX.js → IntegrationsPage-COvUlRq2.js} +1 -1
  18. package/dist/assets/InterfaceListPage-JNxR3qlQ.js +1 -0
  19. package/dist/assets/{ManagedByBadge-CQOEWdSz.js → ManagedByBadge-BZofhfqM.js} +1 -1
  20. package/dist/assets/{MarketplaceAccessDenied-BUAjFq6w.js → MarketplaceAccessDenied-Cur1UQ0U.js} +1 -1
  21. package/dist/assets/{MarketplaceInstalledPage-CK-HsgOu.js → MarketplaceInstalledPage-D9ow2tlx.js} +1 -1
  22. package/dist/assets/{MarketplacePackagePage-DHsi6uiN.js → MarketplacePackagePage-0AKyKbMD.js} +1 -1
  23. package/dist/assets/{MarketplacePage-DIFzpvbl.js → MarketplacePage-DUzZZa8D.js} +1 -1
  24. package/dist/assets/{MetadataInspector-Bayj0F4e.js → MetadataInspector-CpceGXDL.js} +1 -1
  25. package/dist/assets/{MetadataProvider-DboJnyDA.js → MetadataProvider-MNkZn-bR.js} +1 -1
  26. package/dist/assets/{MonacoImpl-DFmzedsv.js → MonacoImpl-DoDns4Vj.js} +1 -1
  27. package/dist/assets/ObjectDataPage-CUJksP8e.js +1 -0
  28. package/dist/assets/{PageView-BfC2HLWA.js → PageView-AS6xg5z-.js} +1 -1
  29. package/dist/assets/{ProfilePage-YhSTeHYm.js → ProfilePage-iJeMD7FK.js} +1 -1
  30. package/dist/assets/{PublicFormsPage-B3Wg58sq.js → PublicFormsPage-C-wbtEXG.js} +1 -1
  31. package/dist/assets/RecordDetailView-Ba0xool8.js +9 -0
  32. package/dist/assets/{RecordFormPage-BqNRd1-N.js → RecordFormPage-CbvOD5UT.js} +1 -1
  33. package/dist/assets/ReportDefaultInspector-OSqdhKEL.js +11 -0
  34. package/dist/assets/ReportView-Df7cdlQo.js +2 -0
  35. package/dist/assets/SearchResultsPage-D0nbmFox.js +1 -0
  36. package/dist/assets/{SettingsHub-B8_T5GH3.js → SettingsHub-BsZee-2C.js} +1 -1
  37. package/dist/assets/SettingsView-CSBwd4YP.js +1 -0
  38. package/dist/assets/{SystemHubPage-CgvK6Oyz.js → SystemHubPage-n41ly_cC.js} +1 -1
  39. package/dist/assets/data-adapter-W6WwA2ln.js +7 -0
  40. package/dist/assets/dist-CfcbLQde.js +11 -0
  41. package/dist/assets/framework-B9PMswdm.js +36 -0
  42. package/dist/assets/getIcon-DkcFniPV.js +1 -0
  43. package/dist/assets/{highlighted-body-OFNGDK62-DRL1o2sE.js → highlighted-body-OFNGDK62-CLUabCIi.js} +1 -1
  44. package/dist/assets/index-Oki50z-M.js +2 -0
  45. package/dist/assets/index-rbBh03NP.css +2 -0
  46. package/dist/assets/{infrastructure-BySW-NB0.js → infrastructure-BnbfcrX8.js} +1 -1
  47. package/dist/assets/{marketplaceApi-2fWjbQI7.js → marketplaceApi-BLyDDfGk.js} +1 -1
  48. package/dist/assets/mermaid-GHXKKRXX-Df_DEhBm.js +1 -0
  49. package/dist/assets/metadata-admin-DiOg8Tx8.js +22 -0
  50. package/dist/assets/{plugin-calendar-jq5LS38z.js → plugin-calendar-CVeG5Hhb.js} +1 -1
  51. package/dist/assets/plugin-charts-BTfOaZVx.js +7 -0
  52. package/dist/assets/{plugin-chatbot-BTDg_ecv.js → plugin-chatbot-COpsZSy4.js} +45 -45
  53. package/dist/assets/plugin-dashboard-Bi5WrqPG.js +6 -0
  54. package/dist/assets/plugin-form-CzotVFc-.js +1 -0
  55. package/dist/assets/{plugin-gantt-D51p6Rw0.js → plugin-gantt-BUcqVYxX.js} +2 -2
  56. package/dist/assets/plugin-grid-BXfwTczT.js +8 -0
  57. package/dist/assets/{plugin-kanban-D2Et0gJr.js → plugin-kanban-Dw_QTU-e.js} +1 -1
  58. package/dist/assets/plugin-map-D89OX2_H.js +1 -0
  59. package/dist/assets/{plugin-markdown-BAdYqOQi.js → plugin-markdown-CWbusz5W.js} +1 -1
  60. package/dist/assets/plugin-report-Cy6FwNfk.js +59 -0
  61. package/dist/assets/{plugin-timeline-DFNoZxR2.js → plugin-timeline-BAImk_4t.js} +1 -1
  62. package/dist/assets/{plugin-tree-B5L8YkYP.js → plugin-tree-CtakCCIf.js} +1 -1
  63. package/dist/assets/plugin-view-DZC_ZJtv.js +1 -0
  64. package/dist/assets/plugins-views-CxFTNQJ7.js +4 -0
  65. package/dist/assets/recordFormNavigation-8nEYNxNo.js +1 -0
  66. package/dist/assets/runtime-metadata-persistence-D1KKivGr.js +1 -0
  67. package/dist/assets/{skeletons-9VTXs8YD.js → skeletons-BK6x7CYd.js} +1 -1
  68. package/dist/assets/{src-4pltlsqa.js → src-BPEDMjfw.js} +1 -1
  69. package/dist/assets/src-CCztNT-4.js +15 -0
  70. package/dist/assets/{types-B9qOi1b_.js → types-X8W-qTHJ.js} +1 -1
  71. package/dist/assets/ui-components-DsYvPIox.js +42 -0
  72. package/dist/assets/ui-layout-BdFgfR9C.js +1 -0
  73. package/dist/assets/useMetadata-DAEfn7ks.js +1 -0
  74. package/dist/assets/useOpenRecordList-DL3H_OJi.js +1 -0
  75. package/dist/assets/useReconcileOnError-CtvIPgmD.js +1 -0
  76. package/dist/assets/{useRecordApprovals-PhUYX_dd.js → useRecordApprovals-BHkgfYJW.js} +1 -1
  77. package/dist/assets/vendor-objectstack-sPlD8LgO.js +95 -0
  78. package/dist/index.html +4 -4
  79. package/package.json +1 -1
  80. package/dist/assets/ConsoleFloatingChatbot-BTKK_vEs.js +0 -1
  81. package/dist/assets/DashboardView-DwORDYTI.js +0 -1
  82. package/dist/assets/DashboardWidgetInspector-DnxXy8MD.js +0 -1
  83. package/dist/assets/InterfaceListPage-BqCFOLqM.js +0 -1
  84. package/dist/assets/RecordDetailView-BXq0yKAC.js +0 -9
  85. package/dist/assets/ReportDefaultInspector-BpiqbNpa.js +0 -11
  86. package/dist/assets/ReportView-C44qsTBA.js +0 -2
  87. package/dist/assets/SearchResultsPage-CcZIaPuL.js +0 -1
  88. package/dist/assets/SettingsView-DU5GHJoJ.js +0 -1
  89. package/dist/assets/data-adapter-B0hWGLbx.js +0 -7
  90. package/dist/assets/dist-BrXdcuve.js +0 -11
  91. package/dist/assets/framework-CUm99d5f.js +0 -36
  92. package/dist/assets/index-BT5Kcjbb.css +0 -2
  93. package/dist/assets/index-gh_wl34E.js +0 -2
  94. package/dist/assets/mermaid-GHXKKRXX-CnhpyTzH.js +0 -1
  95. package/dist/assets/metadata-admin-B0y5-vc3.js +0 -22
  96. package/dist/assets/plugin-charts-CN_USFkK.js +0 -7
  97. package/dist/assets/plugin-dashboard-DVmEJF7R.js +0 -6
  98. package/dist/assets/plugin-form-G3dyuFOt.js +0 -1
  99. package/dist/assets/plugin-grid-Dk1ZUbuk.js +0 -8
  100. package/dist/assets/plugin-map-C_5T2eDy.js +0 -1
  101. package/dist/assets/plugin-report-6nU1jd3t.js +0 -59
  102. package/dist/assets/plugin-view-BSG5MvLZ.js +0 -1
  103. package/dist/assets/plugins-views-Cxvy9qpT.js +0 -4
  104. package/dist/assets/recordFormNavigation-CXt3jCB4.js +0 -1
  105. package/dist/assets/src-DdEhFXgM.js +0 -15
  106. package/dist/assets/ui-components-DvVVxGRS.js +0 -42
  107. package/dist/assets/ui-layout-DmrJIZR6.js +0 -1
  108. package/dist/assets/useOpenRecordList-WXseLM45.js +0 -1
  109. package/dist/assets/useReconcileOnError-DzkPdzFt.js +0 -1
  110. package/dist/assets/vendor-objectstack-BGWJwgbT.js +0 -95
@@ -0,0 +1 @@
1
+ import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{_ as t,f as n,t as r,u as i}from"./vendor-react-slxo-5GC.js";import{l as a}from"./framework-B9PMswdm.js";import{$n as o,Ba as s,Gt as c,Jt as l,Kt as u,Li as d,Rt as f,Sr as p,Vs as m,Xt as h,Yt as g,ao as _,cn as v,dr as y,er as b,fn as x,fr as S,nn as C,or as w,qt as T,rn as E,st as D,tr as O,ur as k,vt as A,wc as j,yt as M,za as N}from"./ui-components-DsYvPIox.js";import{r as P}from"./vendor-ui-utils-C1OpMExs.js";import{a as F,i as I,n as L,o as R,t as z}from"./types-X8W-qTHJ.js";var B=e(t(),1),V=r();function H({reason:e,className:t}){return(0,V.jsxs)(w,{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,V.jsx)(N,{className:`h-3 w-3`}),`Locked by env`]})}function U({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,V.jsxs)(w,{variant:`outline`,className:`text-blue-700 border-blue-300 text-[10px]`,children:[`Inherited from `,a(r.scope)]}):i?(0,V.jsxs)(w,{variant:`outline`,className:`text-amber-700 border-amber-300 text-[10px]`,children:[`Overrides `,a(i.scope)]}):null}function W({spec:e,resolved:t,labelText:n,labels:r}){return(0,V.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,V.jsxs)(x,{className:`text-sm font-medium`,children:[n,e.required?(0,V.jsx)(`span`,{className:`ml-0.5 text-destructive`,children:`*`}):null]}),e.deprecated?(0,V.jsxs)(w,{variant:`outline`,className:`text-amber-700 border-amber-300`,children:[`Deprecated`,e.replacedBy?` → ${e.replacedBy}`:``]}):null,t?.locked?(0,V.jsx)(H,{reason:t.lockedReason}):null,t&&!t.locked?(0,V.jsx)(U,{resolved:t,labels:r}):null,t?.source&&t.source!=="default"&&!t.locked?(0,V.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:r?.sourceLabel?.(t.source)??t.source}):null]})}function G({description:e}){return e?(0,V.jsx)(`p`,{className:`text-xs text-muted-foreground mt-1`,children:e}):null}function K(e){let{spec:t,resolved:n,value:r,onChange:i,onAction:a,locked:s,saving:d,labels:f}=e,b=(0,B.useId)(),w=!!(s||d),O=z(t.label),j=t.key&&f?f.fieldLabel(t.key,O):O,N=t.key&&f?f.fieldHelp(t.key,t.description):t.description;if(t.type===`group`){let e=t.id&&f?f.groupTitle(t.id,O):O,n=t.id&&f?f.groupDescription(t.id,t.description):t.description;return(0,V.jsxs)(`div`,{className:`pt-6 pb-2`,children:[(0,V.jsx)(`h3`,{className:`text-sm font-semibold tracking-tight text-foreground/90`,children:e}),n?(0,V.jsx)(`p`,{className:`text-xs text-muted-foreground mt-1`,children:n}):null,(0,V.jsx)(c,{className:`mt-3`})]})}if(t.type===`info_banner`)return(0,V.jsxs)(k,{variant:t.bannerSeverity===`error`?`destructive`:`default`,className:`my-2`,children:[(0,V.jsx)(_,{className:`h-4 w-4`}),(0,V.jsx)(S,{children:O}),t.bannerText?(0,V.jsx)(y,{children:t.bannerText}):null]});if(t.type===`child_pane`)return(0,V.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,V.jsxs)(`div`,{children:[(0,V.jsx)(`div`,{className:`text-sm font-medium`,children:O}),t.description?(0,V.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:t.description}):null]}),(0,V.jsx)(m,{className:`h-4 w-4 text-muted-foreground`})]});if(t.type===`title_value`)return(0,V.jsxs)(`div`,{className:`flex items-center justify-between py-2`,children:[(0,V.jsx)(W,{spec:t,resolved:n,labelText:j,labels:f}),(0,V.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:String(r??`—`)})]});if(t.type===`action_button`){let e=t.icon?R(t.icon):null,n=t.id??t.key??`test`,r=f?f.actionLabel(n,O):O;return(0,V.jsxs)(`div`,{className:`flex items-center justify-between py-3`,children:[(0,V.jsxs)(`div`,{children:[(0,V.jsx)(`div`,{className:`text-sm font-medium`,children:r}),t.description?(0,V.jsx)(`p`,{className:`text-xs text-muted-foreground mt-1`,children:t.description}):null]}),(0,V.jsxs)(p,{size:`sm`,variant:`secondary`,onClick:a,disabled:d,children:[e?(0,V.jsx)(e,{className:`h-4 w-4 mr-1.5`}):null,r]})]})}let P=e=>(0,V.jsxs)(`div`,{className:`space-y-1.5 py-2`,children:[(0,V.jsx)(W,{spec:t,resolved:n,labelText:j,labels:f}),e,(0,V.jsx)(G,{description:N})]}),F=e=>{let n=typeof e.label==`string`?e.label:e.label?.defaultValue??String(e.value);return!t.key||!f?n:f.optionLabel(t.key,String(e.value),n)};switch(t.type){case`text`:case`email`:case`url`:case`phone`:return P((0,V.jsx)(v,{id:b,type:t.type===`email`?`email`:t.type===`url`?`url`:`text`,value:r??``,minLength:t.minLength,maxLength:t.maxLength,pattern:t.pattern,disabled:w,onChange:e=>i(e.target.value)}));case`password`:return P((0,V.jsx)(v,{id:b,type:`password`,autoComplete:`new-password`,placeholder:r?`••••••••`:``,disabled:w,onChange:e=>i(e.target.value)}));case`textarea`:return P((0,V.jsx)(D,{id:b,rows:t.rows??4,value:r??``,minLength:t.minLength,maxLength:t.maxLength,disabled:w,onChange:e=>i(e.target.value)}));case`number`:return P((0,V.jsx)(v,{id:b,type:`number`,value:r,min:t.min,max:t.max,step:t.step,disabled:w,onChange:e=>i(e.target.value===``?null:Number(e.target.value))}));case`toggle`:return(0,V.jsxs)(`div`,{className:`flex items-center justify-between py-3`,children:[(0,V.jsxs)(`div`,{children:[(0,V.jsx)(W,{spec:t,resolved:n,labelText:j,labels:f}),(0,V.jsx)(G,{description:N})]}),(0,V.jsx)(A,{id:b,checked:!!r,disabled:w,onCheckedChange:e=>i(e)})]});case`select`:return P((0,V.jsxs)(u,{value:r==null?void 0:String(r),onValueChange:e=>i(e),disabled:w,children:[(0,V.jsx)(g,{id:b,children:(0,V.jsx)(h,{placeholder:`Select…`})}),(0,V.jsx)(T,{children:t.options?.map(e=>(0,V.jsx)(l,{value:String(e.value),children:F(e)},String(e.value)))})]}));case`radio`:return P((0,V.jsx)(C,{value:r==null?void 0:String(r),onValueChange:e=>i(e),disabled:w,children:t.options?.map(e=>(0,V.jsxs)(`div`,{className:`flex items-center space-x-2`,children:[(0,V.jsx)(E,{value:String(e.value),id:`${b}-${e.value}`}),(0,V.jsx)(x,{htmlFor:`${b}-${e.value}`,className:`text-sm font-normal`,children:F(e)})]},String(e.value)))}));case`multiselect`:{let e=Array.isArray(r)?r:[];return P((0,V.jsx)(`div`,{className:`grid grid-cols-2 gap-2`,children:t.options?.map(t=>{let n=String(t.value);return(0,V.jsxs)(`label`,{className:`flex items-center gap-2 text-sm`,children:[(0,V.jsx)(o,{checked:e.map(String).includes(n),disabled:w,onCheckedChange:t=>{let r=new Set(e.map(String));t?r.add(n):r.delete(n),i(Array.from(r))}}),F(t)]},n)})}))}case`slider`:return P((0,V.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,V.jsx)(M,{value:[Number(r??t.min??0)],min:t.min??0,max:t.max??100,step:t.step??1,disabled:w,onValueChange:e=>i(e[0]),className:`flex-1`}),(0,V.jsx)(`span`,{className:`text-sm tabular-nums w-12 text-right`,children:String(r??t.min??0)})]}));case`color`:return P((0,V.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,V.jsx)(v,{id:b,type:`color`,value:r??`#000000`,disabled:w,onChange:e=>i(e.target.value),className:`w-16 h-9 p-1`}),(0,V.jsx)(v,{value:r??``,disabled:w,onChange:e=>i(e.target.value),className:`flex-1 font-mono text-sm`})]}));case`json`:return P((0,V.jsx)(D,{id:b,rows:t.rows??6,className:`font-mono text-xs`,value:typeof r==`string`?r:JSON.stringify(r??null,null,2),disabled:w,onChange:e=>i(e.target.value)}));default:return P((0,V.jsxs)(`div`,{className:`text-sm text-muted-foreground`,children:[`Unsupported specifier type: `,t.type]}))}}var q=new Set([`common`,`validation`,`errors`,`system`,`auth`]);function J(e){let{t,i18n:n}=a();return(0,B.useMemo)(()=>{let r=()=>{if(!n||typeof n.getResourceBundle!=`function`)return[];let e=n.language||`en`,t=n.getResourceBundle(e,`translation`);return t?Object.keys(t).filter(e=>!q.has(e)&&t[e]&&typeof t[e]==`object`&&t[e].settings):[]},i=(n,i)=>{if(!e)return i;try{let i=r();for(let r of i){let i=`${r}.settings.${e}.${n}`,a=t(i,{defaultValue:``});if(a&&a!==i&&a!==``)return a}}catch{}return i},a=(e,r)=>{try{if(!n||typeof n.getResourceBundle!=`function`)return r;let i=n.language||`en`,a=n.getResourceBundle(i,`translation`);if(!a)return r;for(let n of Object.keys(a)){if(q.has(n))continue;let r=a[n];if(!r||typeof r!=`object`||!(`settingsCommon`in r))continue;let i=`${n}.settingsCommon.${e}`,o=t(i,{defaultValue:``});if(o&&o!==i&&o!==``)return o}}catch{}return r},o={env:`Env`,global:`Global`,tenant:`Tenant`,user:`User`,default:`Default`};return{title:e=>i(`title`,e)??e,description:e=>i(`description`,e),groupTitle:(e,t)=>i(`groups.${e}.title`,t)??t,groupDescription:(e,t)=>i(`groups.${e}.description`,t),fieldLabel:(e,t)=>i(`keys.${e}.label`,t)??t,fieldHelp:(e,t)=>i(`keys.${e}.help`,t),fieldPlaceholder:(e,t)=>i(`keys.${e}.placeholder`,t),optionLabel:(e,t,n)=>i(`keys.${e}.options.${t}`,n)??n,actionLabel:(e,t)=>i(`actions.${e}.label`,t)??t,actionConfirm:(e,t)=>i(`actions.${e}.confirmText`,t),actionSuccess:(e,t)=>i(`actions.${e}.successMessage`,t),sourceLabel:e=>a(`sourceLabels.${e}`,o[e]??e)}},[e,t,n,n?.language])}function Y(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 X(){let e=n(),t=i(),r=e.namespace??``,[a,o]=(0,B.useState)(null),[c,l]=(0,B.useState)(!0),[u,m]=(0,B.useState)(!1),[h,g]=(0,B.useState)(null),[_,v]=(0,B.useState)({}),y=(0,B.useCallback)(async()=>{l(!0),g(null);try{o(await L(r)),v({})}catch(e){g(e?.message??`Failed to load settings`)}finally{l(!1)}},[r]);(0,B.useEffect)(()=>{r&&y()},[r,y]);let x=(0,B.useMemo)(()=>{let e={};if(!a)return e;for(let[t,n]of Object.entries(a.values))e[t]=n.value;return{...e,..._}},[a,_]),S=(0,B.useMemo)(()=>Object.keys(_),[_]),C=J(r);if(!r)return(0,V.jsx)(`div`,{className:`p-6 text-muted-foreground`,children:`No namespace selected.`});if(c)return(0,V.jsxs)(`div`,{className:`p-6 space-y-3 max-w-3xl`,children:[(0,V.jsx)(f,{className:`h-8 w-1/3`}),(0,V.jsx)(f,{className:`h-4 w-2/3`}),(0,V.jsx)(f,{className:`h-32 w-full`}),(0,V.jsx)(f,{className:`h-32 w-full`})]});if(h)return(0,V.jsxs)(`div`,{className:`p-6 max-w-3xl`,children:[(0,V.jsxs)(p,{variant:`ghost`,size:`sm`,onClick:()=>t(-1),children:[(0,V.jsx)(j,{className:`h-4 w-4 mr-1`}),` Back`]}),(0,V.jsx)(b,{className:`mt-3`,children:(0,V.jsx)(O,{className:`py-8 text-center text-sm text-destructive`,children:h})})]});if(!a)return null;let{manifest:T,values:E}=a,D=T.icon?R(T.icon):null,k=C.title(z(T.label)),A=C.description(T.description),M=async()=>{if(S.length!==0){m(!0);try{let e=await F(r,_);o({...a,values:{...E,...e.values}}),v({}),P.success(`Settings saved`)}catch(e){e?.payload?.error?.code===`SETTINGS_LOCKED`?P.error(`Locked by environment: ${e.payload.error.key}`):P.error(e?.message??`Save failed`)}finally{m(!1)}}},N=async e=>{m(!0);try{let t=await I(r,e,_);t.ok?P.success(t.message??`Action succeeded`):P.error(t.message??`Action failed`)}catch(e){P.error(e?.message??`Action failed`)}finally{m(!1)}};return(0,V.jsxs)(`div`,{className:`p-6 max-w-3xl mx-auto pb-32`,children:[(0,V.jsxs)(p,{variant:`ghost`,size:`sm`,onClick:()=>t(`/system/settings`),children:[(0,V.jsx)(j,{className:`h-4 w-4 mr-1`}),` All settings`]}),(0,V.jsxs)(`div`,{className:`mt-3 flex items-start gap-3`,children:[D?(0,V.jsx)(D,{className:`h-7 w-7 mt-0.5 text-muted-foreground`}):null,(0,V.jsxs)(`div`,{className:`flex-1`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,V.jsx)(`h1`,{className:`text-2xl font-semibold tracking-tight`,children:k}),T.beta?(0,V.jsx)(w,{variant:`secondary`,children:`Beta`}):null]}),A?(0,V.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1`,children:A}):null]})]}),T.helpText?(0,V.jsx)(`p`,{className:`text-sm text-muted-foreground mt-4 whitespace-pre-wrap`,children:T.helpText}):null,(0,V.jsx)(`div`,{className:`mt-6 divide-y`,children:T.specifiers.filter(e=>Y(e.visible,x)).map((e,t)=>{let n=e.key,r=n?E[n]:void 0;return(0,V.jsx)(K,{spec:e,resolved:r,value:n?n in _?_[n]:r?.value:void 0,onChange:e=>n&&v(t=>({...t,[n]:e})),onAction:e.type===`action_button`?()=>N(e.id??n??`test`):void 0,locked:r?.locked,saving:u,labels:C},(n??`_layout_${t}`)+t)})}),S.length>0?(0,V.jsx)(`div`,{className:`fixed bottom-0 inset-x-0 bg-background/95 backdrop-blur border-t shadow-lg z-40`,children:(0,V.jsxs)(`div`,{className:`max-w-3xl mx-auto px-6 py-3 flex items-center justify-between`,children:[(0,V.jsxs)(`div`,{className:`text-sm text-muted-foreground`,children:[S.length,` unsaved change`,S.length>1?`s`:``]}),(0,V.jsxs)(`div`,{className:`flex gap-2`,children:[(0,V.jsxs)(p,{variant:`ghost`,size:`sm`,onClick:()=>v({}),disabled:u,children:[(0,V.jsx)(d,{className:`h-4 w-4 mr-1`}),` Discard`]}),(0,V.jsxs)(p,{onClick:M,disabled:u,children:[u?(0,V.jsx)(s,{className:`h-4 w-4 mr-1 animate-spin`}):null,`Save changes`]})]})]})}):null]})}export{X as SettingsView};
@@ -1 +1 @@
1
- import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{_ as t,f as n,t as r,u as i}from"./vendor-react-slxo-5GC.js";import{d as a}from"./infrastructure-BySW-NB0.js";import{N as o}from"./framework-CUm99d5f.js";import{Ai as s,Ba as c,Ei as l,Lr as u,Rr as d,Xa as f,er as p,ir as m,lc as h,nc as g,nr as _,or as v,rr as y,rs as b,sc as x,si as S,ti as C,to as w,tr as T,xi as E}from"./ui-components-DvVVxGRS.js";import"./src-DdEhFXgM.js";var D=e(t(),1),O=r();function k(){let e=i(),{appName:t}=n(),r=t?`/apps/${t}`:``,k=o(),A=a(),[j,M]=(0,D.useState)({users:null,orgs:null,roles:null,permissions:null,auditLogs:null}),[N,P]=(0,D.useState)(!0),F=(0,D.useCallback)(async()=>{if(k){P(!0);try{let[e,t,n,r,i]=await Promise.all([k.find(`sys_user`).catch(()=>({data:[]})),k.find(`sys_org`).catch(()=>({data:[]})),k.find(`sys_role`).catch(()=>({data:[]})),k.find(`sys_permission`).catch(()=>({data:[]})),k.find(`sys_audit_log`).catch(()=>({data:[]}))]);M({users:e.data?.length??0,orgs:t.data?.length??0,roles:n.data?.length??0,permissions:r.data?.length??0,auditLogs:i.data?.length??0})}catch{}finally{P(!1)}}},[k]);(0,D.useEffect)(()=>{F()},[F]);let I=[{title:`Applications`,description:`Manage all configured applications`,icon:f,href:`${r}/system/apps`,countLabel:``,count:null},{title:`Metadata`,description:`Browse and edit every metadata type the platform exposes`,icon:b,href:`${r}/component/metadata/directory`,countLabel:``,count:null},{title:`Datasources`,description:`Connect external databases and sync their tables in as objects`,icon:x,href:`${r}/component/metadata/resource?type=datasource`,countLabel:``,count:null}],L=[{title:`Users`,description:`Manage system users and accounts`,icon:u,href:`${r}/system/users`,countLabel:`users`,count:j.users},{title:`Organizations`,description:`Manage organizations and teams`,icon:g,href:`${r}/system/organizations`,countLabel:`organizations`,count:j.orgs},{title:`Roles`,description:`Configure roles and access levels`,icon:E,href:`${r}/system/roles`,countLabel:`roles`,count:j.roles},{title:`Permissions`,description:`Manage permission rules and assignments`,icon:w,href:`${r}/system/permissions`,countLabel:`permissions`,count:j.permissions},{title:`Audit Log`,description:`View system activity and changes`,icon:s,href:`${r}/system/audit-log`,countLabel:`entries`,count:j.auditLogs},{title:`AI Approvals`,description:`Review actions AI agents propose before they execute`,icon:h,href:`${r}/system/ai-approvals`,countLabel:``,count:null},{title:`App Marketplace`,description:`Browse and install approved apps from the ObjectStack catalog`,icon:S,href:`${r}/system/marketplace`,countLabel:``,count:null,adminOnly:!0},{title:`Settings`,description:`Configure mail, branding, feature flags, and more`,icon:l,href:`${r}/system/settings`,countLabel:``,count:null},{title:`Developer`,description:`API console, flow runs, and public form management`,icon:C,href:`${r}/developer`,countLabel:``,count:null},{title:`Profile`,description:`View and edit your account settings`,icon:d,href:`${r}/system/profile`,countLabel:``,count:null}],R=[...I,...L].filter(e=>!e.adminOnly||A);return(0,O.jsxs)(`div`,{className:`flex flex-col gap-6 p-4 sm:p-6`,children:[(0,O.jsxs)(`div`,{className:`min-w-0`,children:[(0,O.jsx)(`h1`,{className:`text-xl sm:text-2xl font-bold tracking-tight`,children:`System Settings`}),(0,O.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1`,children:`Manage applications, users, roles, permissions, and system configuration`})]}),N&&(0,O.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-muted-foreground`,role:`status`,"aria-live":`polite`,children:[(0,O.jsx)(c,{className:`h-4 w-4 animate-spin`,"aria-hidden":`true`}),`Loading statistics...`]}),(0,O.jsx)(`div`,{className:`grid gap-4 sm:grid-cols-2 lg:grid-cols-3`,children:R.map(t=>{let n=t.icon;return(0,O.jsxs)(p,{className:`cursor-pointer transition-colors hover:bg-accent/50`,onClick:()=>e(t.href),"data-testid":`hub-card-${t.title.toLowerCase().replace(/\s+/g,`-`)}`,role:`link`,tabIndex:0,"aria-label":`${t.title}: ${t.description}`,onKeyDown:n=>{(n.key===`Enter`||n.key===` `)&&(n.preventDefault(),e(t.href))},children:[(0,O.jsxs)(y,{className:`flex flex-row items-center gap-3 pb-2`,children:[(0,O.jsx)(`div`,{className:`flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-primary/10 text-primary`,children:(0,O.jsx)(n,{className:`h-5 w-5`})}),(0,O.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,O.jsx)(m,{className:`text-base`,children:t.title}),(0,O.jsx)(_,{className:`text-xs`,children:t.description})]})]}),(0,O.jsx)(T,{className:`pt-0`,children:t.count!==null&&(0,O.jsxs)(v,{variant:`secondary`,children:[t.count,` `,t.countLabel]})})]},t.title)})})]})}export{k as SystemHubPage};
1
+ import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{_ as t,f as n,t as r,u as i}from"./vendor-react-slxo-5GC.js";import{d as a}from"./infrastructure-BnbfcrX8.js";import{L as o}from"./framework-B9PMswdm.js";import{Ai as s,Ba as c,Ei as l,Lr as u,Rr as d,Xa as f,er as p,ir as m,lc as h,nc as g,nr as _,or as v,rr as y,rs as b,sc as x,si as S,ti as C,to as w,tr as T,xi as E}from"./ui-components-DsYvPIox.js";import"./src-CCztNT-4.js";var D=e(t(),1),O=r();function k(){let e=i(),{appName:t}=n(),r=t?`/apps/${t}`:``,k=o(),A=a(),[j,M]=(0,D.useState)({users:null,orgs:null,roles:null,permissions:null,auditLogs:null}),[N,P]=(0,D.useState)(!0),F=(0,D.useCallback)(async()=>{if(k){P(!0);try{let[e,t,n,r,i]=await Promise.all([k.find(`sys_user`).catch(()=>({data:[]})),k.find(`sys_org`).catch(()=>({data:[]})),k.find(`sys_role`).catch(()=>({data:[]})),k.find(`sys_permission`).catch(()=>({data:[]})),k.find(`sys_audit_log`).catch(()=>({data:[]}))]);M({users:e.data?.length??0,orgs:t.data?.length??0,roles:n.data?.length??0,permissions:r.data?.length??0,auditLogs:i.data?.length??0})}catch{}finally{P(!1)}}},[k]);(0,D.useEffect)(()=>{F()},[F]);let I=[{title:`Applications`,description:`Manage all configured applications`,icon:f,href:`${r}/system/apps`,countLabel:``,count:null},{title:`Metadata`,description:`Browse and edit every metadata type the platform exposes`,icon:b,href:`${r}/component/metadata/directory`,countLabel:``,count:null},{title:`Datasources`,description:`Connect external databases and sync their tables in as objects`,icon:x,href:`${r}/component/metadata/resource?type=datasource`,countLabel:``,count:null}],L=[{title:`Users`,description:`Manage system users and accounts`,icon:u,href:`${r}/system/users`,countLabel:`users`,count:j.users},{title:`Organizations`,description:`Manage organizations and teams`,icon:g,href:`${r}/system/organizations`,countLabel:`organizations`,count:j.orgs},{title:`Roles`,description:`Configure roles and access levels`,icon:E,href:`${r}/system/roles`,countLabel:`roles`,count:j.roles},{title:`Permissions`,description:`Manage permission rules and assignments`,icon:w,href:`${r}/system/permissions`,countLabel:`permissions`,count:j.permissions},{title:`Audit Log`,description:`View system activity and changes`,icon:s,href:`${r}/system/audit-log`,countLabel:`entries`,count:j.auditLogs},{title:`AI Approvals`,description:`Review actions AI agents propose before they execute`,icon:h,href:`${r}/system/ai-approvals`,countLabel:``,count:null},{title:`App Marketplace`,description:`Browse and install approved apps from the ObjectStack catalog`,icon:S,href:`${r}/system/marketplace`,countLabel:``,count:null,adminOnly:!0},{title:`Settings`,description:`Configure mail, branding, feature flags, and more`,icon:l,href:`${r}/system/settings`,countLabel:``,count:null},{title:`Developer`,description:`API console, flow runs, and public form management`,icon:C,href:`${r}/developer`,countLabel:``,count:null},{title:`Profile`,description:`View and edit your account settings`,icon:d,href:`${r}/system/profile`,countLabel:``,count:null}],R=[...I,...L].filter(e=>!e.adminOnly||A);return(0,O.jsxs)(`div`,{className:`flex flex-col gap-6 p-4 sm:p-6`,children:[(0,O.jsxs)(`div`,{className:`min-w-0`,children:[(0,O.jsx)(`h1`,{className:`text-xl sm:text-2xl font-bold tracking-tight`,children:`System Settings`}),(0,O.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1`,children:`Manage applications, users, roles, permissions, and system configuration`})]}),N&&(0,O.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-muted-foreground`,role:`status`,"aria-live":`polite`,children:[(0,O.jsx)(c,{className:`h-4 w-4 animate-spin`,"aria-hidden":`true`}),`Loading statistics...`]}),(0,O.jsx)(`div`,{className:`grid gap-4 sm:grid-cols-2 lg:grid-cols-3`,children:R.map(t=>{let n=t.icon;return(0,O.jsxs)(p,{className:`cursor-pointer transition-colors hover:bg-accent/50`,onClick:()=>e(t.href),"data-testid":`hub-card-${t.title.toLowerCase().replace(/\s+/g,`-`)}`,role:`link`,tabIndex:0,"aria-label":`${t.title}: ${t.description}`,onKeyDown:n=>{(n.key===`Enter`||n.key===` `)&&(n.preventDefault(),e(t.href))},children:[(0,O.jsxs)(y,{className:`flex flex-row items-center gap-3 pb-2`,children:[(0,O.jsx)(`div`,{className:`flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-primary/10 text-primary`,children:(0,O.jsx)(n,{className:`h-5 w-5`})}),(0,O.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,O.jsx)(m,{className:`text-base`,children:t.title}),(0,O.jsx)(_,{className:`text-xs`,children:t.description})]})]}),(0,O.jsx)(T,{className:`pt-0`,children:t.count!==null&&(0,O.jsxs)(v,{variant:`secondary`,children:[t.count,` `,t.countLabel]})})]},t.title)})})]})}export{k as SystemHubPage};