@objectstack/console 17.0.0-rc.6 → 17.0.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.
- package/CHANGELOG.md +1099 -0
- package/dist/.objectui-sha +1 -1
- package/dist/assets/AdapterProvider-BpWMSLQH.js +3 -0
- package/dist/assets/{AiPendingActionsPage-DHam6u4d.js → AiPendingActionsPage-DAJUEqyC.js} +1 -1
- package/dist/assets/ApiConsolePage-CgXbOsFC.js +1 -0
- package/dist/assets/{AppDocsIndex-DMgpe3sR.js → AppDocsIndex-BgaIthca.js} +1 -1
- package/dist/assets/AppManagementPage-BvGPskyf.js +1 -0
- package/dist/assets/ApprovalsInboxPage-CxmrNrwP.js +1 -0
- package/dist/assets/{AuditLogPage-1tKc3thU.js → AuditLogPage-JahfQFnX.js} +1 -1
- package/dist/assets/{ComponentNavView-DBrVQtYX.js → ComponentNavView-DjiNAGys.js} +1 -1
- package/dist/assets/CreateViewDialog-CUvjCA1o.js +1 -0
- package/dist/assets/DashboardView-Cr-Q-16_.js +1 -0
- package/dist/assets/{DeveloperHubPage-DiecMLNF.js → DeveloperHubPage-DVKVm5k0.js} +1 -1
- package/dist/assets/{DocShell-CpxhuaS6.js → DocShell-C1VQpTIJ.js} +1 -1
- package/dist/assets/{ExpressionProvider-DD77oeF3.js → ExpressionProvider-qmd0nVCn.js} +1 -1
- package/dist/assets/FlowRunsPage-DL7MhL_U.js +1 -0
- package/dist/assets/{IntegrationsPage-DSw3u-B4.js → IntegrationsPage-Cq4mWRFh.js} +2 -2
- package/dist/assets/InterfaceListPage-CfhSyYAw.js +1 -0
- package/dist/assets/ManagedByBadge-DgsrLolr.js +1 -0
- package/dist/assets/MarketplaceAccessDenied-t8A0k9OX.js +1 -0
- package/dist/assets/MarketplaceInstalledPage-CRe2BiM2.js +1 -0
- package/dist/assets/MarketplacePackagePage-XSdk80Dd.js +4 -0
- package/dist/assets/MarketplacePage-CZjDbg5G.js +1 -0
- package/dist/assets/MetadataInspector-qQ85bFun.js +1 -0
- package/dist/assets/MetadataProvider-CnYsadFP.js +1 -0
- package/dist/assets/ObjectDataPage-D9kCSxvN.js +1 -0
- package/dist/assets/PageView-q1XSwpVo.js +1 -0
- package/dist/assets/ProfilePage-DeDhni58.js +1 -0
- package/dist/assets/{PublicFormsPage-C7OYcRBz.js → PublicFormsPage-BX6YXY8w.js} +1 -1
- package/dist/assets/RecordDetailView-DrVbrbaN.js +9 -0
- package/dist/assets/RecordFormPage-Bs9wX-M6.js +1 -0
- package/dist/assets/ReportDefaultInspector-BbbhDn34.js +3 -0
- package/dist/assets/ReportView-D_soBKL6.js +2 -0
- package/dist/assets/SearchResultsPage--Beqyte8.js +1 -0
- package/dist/assets/SettingsHub-BozLt7dt.js +1 -0
- package/dist/assets/SettingsView-CC3o9IGe.js +1 -0
- package/dist/assets/{SystemHubPage-CFpBjBvz.js → SystemHubPage-CBdrX4bx.js} +1 -1
- package/dist/assets/createDerive-C1PaRnFZ.js +1 -0
- package/dist/assets/data-adapter-yS4exRPT.js +24 -0
- package/dist/assets/framework-B8ndNKrd.js +38 -0
- package/dist/assets/getIcon-QmYxLBSb.js +1 -0
- package/dist/assets/{highlighted-body-OFNGDK62-I69SE9tf.js → highlighted-body-OFNGDK62-BPV_Giyg.js} +1 -1
- package/dist/assets/i18n-DLOdKEiB.js +9 -0
- package/dist/assets/index-DaeqUnH6.js +2 -0
- package/dist/assets/index-gaeYmjTV.css +2 -0
- package/dist/assets/infrastructure-ChmEYj6c.js +3 -0
- package/dist/assets/mermaid-GHXKKRXX-BrwYiPsC.js +1 -0
- package/dist/assets/metadata-admin-DqAvOmNf.js +25 -0
- package/dist/assets/plugin-calendar-CQVTjox_.js +1 -0
- package/dist/assets/plugin-charts-CBUIhVeW.js +7 -0
- package/dist/assets/plugin-chatbot-DsLGdfGx.js +120 -0
- package/dist/assets/plugin-dashboard-fdM1jm2j.js +6 -0
- package/dist/assets/plugin-form-Bv0Hi0E6.js +1 -0
- package/dist/assets/plugin-gantt-CRJpVrrP.js +63 -0
- package/dist/assets/plugin-grid-gHcTrjs3.js +8 -0
- package/dist/assets/plugin-kanban-CNm7DssD.js +1 -0
- package/dist/assets/plugin-map-TrYBEx8q.js +1 -0
- package/dist/assets/{plugin-markdown-C3ihtjLf.js → plugin-markdown-CbQeAjXv.js} +1 -1
- package/dist/assets/plugin-report-Bg1oh9SG.js +59 -0
- package/dist/assets/plugin-timeline-B30kCAGi.js +1 -0
- package/dist/assets/plugin-tree-Br5XanqO.js +1 -0
- package/dist/assets/plugin-view-CgDs-8T5.js +1 -0
- package/dist/assets/plugins-views-BxwTmeut.js +4 -0
- package/dist/assets/runtime-metadata-persistence-DDZN-tZg.js +1 -0
- package/dist/assets/{skeletons-Cs1pm-UR.js → skeletons-BWrJAbfN.js} +1 -1
- package/dist/assets/src-BBKXMp-o.js +19 -0
- package/dist/assets/src-CVuJHohL.js +1 -0
- package/dist/assets/{src-B67JaKZf.js → src-leh_hyM1.js} +1 -1
- package/dist/assets/ui-components-mPgY5chB.js +42 -0
- package/dist/assets/ui-layout-CRcyxP_X.js +1 -0
- package/dist/assets/{use-book-data-BpISrpLC.js → use-book-data-B2KPEJjv.js} +1 -1
- package/dist/assets/useSettingsLabel-Bl5L3RqQ.js +1 -0
- package/dist/assets/utils-L-_x2yPF.js +1 -0
- package/dist/assets/vendor-objectstack-DneBps14.js +155 -0
- package/dist/index.html +76 -4
- package/package.json +1 -1
- package/dist/assets/AdapterProvider-C11cY4c0.js +0 -2
- package/dist/assets/AdapterProvider-C11cY4c0.js.br +0 -0
- package/dist/assets/AdapterProvider-C11cY4c0.js.gz +0 -0
- package/dist/assets/AiPendingActionsPage-DHam6u4d.js.br +0 -0
- package/dist/assets/AiPendingActionsPage-DHam6u4d.js.gz +0 -0
- package/dist/assets/ApiConsolePage-BquGLVsn.js +0 -1
- package/dist/assets/ApiConsolePage-BquGLVsn.js.br +0 -0
- package/dist/assets/ApiConsolePage-BquGLVsn.js.gz +0 -0
- package/dist/assets/AppDocsIndex-DMgpe3sR.js.br +0 -0
- package/dist/assets/AppDocsIndex-DMgpe3sR.js.gz +0 -0
- package/dist/assets/AppManagementPage-Bw_HJtnj.js +0 -1
- package/dist/assets/AppManagementPage-Bw_HJtnj.js.br +0 -0
- package/dist/assets/AppManagementPage-Bw_HJtnj.js.gz +0 -0
- package/dist/assets/ApprovalsInboxPage-BieJRkeU.js +0 -1
- package/dist/assets/ApprovalsInboxPage-BieJRkeU.js.br +0 -0
- package/dist/assets/ApprovalsInboxPage-BieJRkeU.js.gz +0 -0
- package/dist/assets/AuditLogPage-1tKc3thU.js.br +0 -0
- package/dist/assets/AuditLogPage-1tKc3thU.js.gz +0 -0
- package/dist/assets/CreateViewDialog-BS4y-EfR.js +0 -1
- package/dist/assets/CreateViewDialog-BS4y-EfR.js.br +0 -0
- package/dist/assets/CreateViewDialog-BS4y-EfR.js.gz +0 -0
- package/dist/assets/DashboardView-BlFMYKJK.js +0 -1
- package/dist/assets/DashboardView-BlFMYKJK.js.br +0 -0
- package/dist/assets/DashboardView-BlFMYKJK.js.gz +0 -0
- package/dist/assets/DeveloperHubPage-DiecMLNF.js.br +0 -0
- package/dist/assets/DeveloperHubPage-DiecMLNF.js.gz +0 -0
- package/dist/assets/FlowRunsPage-D8wMDWjk.js +0 -1
- package/dist/assets/FlowRunsPage-D8wMDWjk.js.br +0 -0
- package/dist/assets/FlowRunsPage-D8wMDWjk.js.gz +0 -0
- package/dist/assets/IntegrationsPage-DSw3u-B4.js.br +0 -0
- package/dist/assets/IntegrationsPage-DSw3u-B4.js.gz +0 -0
- package/dist/assets/InterfaceListPage-CbwWqklU.js +0 -1
- package/dist/assets/InterfaceListPage-CbwWqklU.js.br +0 -0
- package/dist/assets/InterfaceListPage-CbwWqklU.js.gz +0 -0
- package/dist/assets/ManagedByBadge-CBwMKWiF.js +0 -1
- package/dist/assets/ManagedByBadge-CBwMKWiF.js.br +0 -0
- package/dist/assets/ManagedByBadge-CBwMKWiF.js.gz +0 -0
- package/dist/assets/MarketplaceAccessDenied-DEBuHOU-.js +0 -1
- package/dist/assets/MarketplaceAccessDenied-DEBuHOU-.js.br +0 -0
- package/dist/assets/MarketplaceAccessDenied-DEBuHOU-.js.gz +0 -0
- package/dist/assets/MarketplaceInstalledPage-D1VkI0Vo.js +0 -1
- package/dist/assets/MarketplaceInstalledPage-D1VkI0Vo.js.br +0 -0
- package/dist/assets/MarketplaceInstalledPage-D1VkI0Vo.js.gz +0 -0
- package/dist/assets/MarketplacePackagePage-cJJmubUp.js +0 -4
- package/dist/assets/MarketplacePackagePage-cJJmubUp.js.br +0 -0
- package/dist/assets/MarketplacePackagePage-cJJmubUp.js.gz +0 -0
- package/dist/assets/MarketplacePage-CyMpmsqJ.js +0 -1
- package/dist/assets/MarketplacePage-CyMpmsqJ.js.br +0 -0
- package/dist/assets/MarketplacePage-CyMpmsqJ.js.gz +0 -0
- package/dist/assets/MetadataInspector-D3Q9UYxF.js +0 -1
- package/dist/assets/MetadataInspector-D3Q9UYxF.js.br +0 -0
- package/dist/assets/MetadataInspector-D3Q9UYxF.js.gz +0 -0
- package/dist/assets/MetadataProvider-PtYALdF8.js +0 -1
- package/dist/assets/MetadataProvider-PtYALdF8.js.br +0 -0
- package/dist/assets/MetadataProvider-PtYALdF8.js.gz +0 -0
- package/dist/assets/ObjectDataPage-D_9SyqGu.js +0 -1
- package/dist/assets/ObjectDataPage-D_9SyqGu.js.br +0 -0
- package/dist/assets/ObjectDataPage-D_9SyqGu.js.gz +0 -0
- package/dist/assets/PageView-DE9Jb4nC.js +0 -1
- package/dist/assets/PageView-DE9Jb4nC.js.br +0 -0
- package/dist/assets/PageView-DE9Jb4nC.js.gz +0 -0
- package/dist/assets/ProfilePage-D6ZIjlTU.js +0 -1
- package/dist/assets/ProfilePage-D6ZIjlTU.js.br +0 -0
- package/dist/assets/ProfilePage-D6ZIjlTU.js.gz +0 -0
- package/dist/assets/PublicFormsPage-C7OYcRBz.js.br +0 -0
- package/dist/assets/PublicFormsPage-C7OYcRBz.js.gz +0 -0
- package/dist/assets/RecordDetailView-RvdjtkCZ.js +0 -9
- package/dist/assets/RecordDetailView-RvdjtkCZ.js.br +0 -0
- package/dist/assets/RecordDetailView-RvdjtkCZ.js.gz +0 -0
- package/dist/assets/RecordFormPage-C7Fn2jkc.js +0 -1
- package/dist/assets/RecordFormPage-C7Fn2jkc.js.br +0 -0
- package/dist/assets/RecordFormPage-C7Fn2jkc.js.gz +0 -0
- package/dist/assets/ReportDefaultInspector-By-3nQXp.js +0 -3
- package/dist/assets/ReportDefaultInspector-By-3nQXp.js.br +0 -0
- package/dist/assets/ReportDefaultInspector-By-3nQXp.js.gz +0 -0
- package/dist/assets/ReportView-DynZqTgH.js +0 -2
- package/dist/assets/ReportView-DynZqTgH.js.br +0 -0
- package/dist/assets/ReportView-DynZqTgH.js.gz +0 -0
- package/dist/assets/SearchResultsPage-seBReYj-.js +0 -1
- package/dist/assets/SearchResultsPage-seBReYj-.js.br +0 -0
- package/dist/assets/SearchResultsPage-seBReYj-.js.gz +0 -0
- package/dist/assets/SettingsHub-koseplY7.js +0 -1
- package/dist/assets/SettingsHub-koseplY7.js.br +0 -0
- package/dist/assets/SettingsHub-koseplY7.js.gz +0 -0
- package/dist/assets/SettingsView-W2hI4Z63.js +0 -1
- package/dist/assets/SettingsView-W2hI4Z63.js.br +0 -0
- package/dist/assets/SettingsView-W2hI4Z63.js.gz +0 -0
- package/dist/assets/SystemHubPage-CFpBjBvz.js.br +0 -0
- package/dist/assets/SystemHubPage-CFpBjBvz.js.gz +0 -0
- package/dist/assets/abap-CLvhMVsD.js.br +0 -0
- package/dist/assets/abap-CLvhMVsD.js.gz +0 -0
- package/dist/assets/abnfDiagram-N423BO3Z-Ck9FUrgJ.js.br +0 -0
- package/dist/assets/abnfDiagram-N423BO3Z-Ck9FUrgJ.js.gz +0 -0
- package/dist/assets/actionscript-3-Cs6JJXT5.js.br +0 -0
- package/dist/assets/actionscript-3-Cs6JJXT5.js.gz +0 -0
- package/dist/assets/ada-C5qYipkI.js.br +0 -0
- package/dist/assets/ada-C5qYipkI.js.gz +0 -0
- package/dist/assets/ahk-CA9gdOdF.js.br +0 -0
- package/dist/assets/ahk-CA9gdOdF.js.gz +0 -0
- package/dist/assets/ahk2-_6rzW9BS.js.br +0 -0
- package/dist/assets/ahk2-_6rzW9BS.js.gz +0 -0
- package/dist/assets/andromeeda-vGVdxbeo.js.br +0 -0
- package/dist/assets/andromeeda-vGVdxbeo.js.gz +0 -0
- package/dist/assets/angular-html-EvDzfMaC.js.br +0 -0
- package/dist/assets/angular-html-EvDzfMaC.js.gz +0 -0
- package/dist/assets/angular-ts-D_Fppbgk.js.br +0 -0
- package/dist/assets/angular-ts-D_Fppbgk.js.gz +0 -0
- package/dist/assets/apache-U0d_L8uA.js.br +0 -0
- package/dist/assets/apache-U0d_L8uA.js.gz +0 -0
- package/dist/assets/apex-KFGFyKwG.js.br +0 -0
- package/dist/assets/apex-KFGFyKwG.js.gz +0 -0
- package/dist/assets/apl-CMMvGKpa.js.br +0 -0
- package/dist/assets/apl-CMMvGKpa.js.gz +0 -0
- package/dist/assets/applescript-CCn79oCD.js.br +0 -0
- package/dist/assets/applescript-CCn79oCD.js.gz +0 -0
- package/dist/assets/ara-4CJ0cIlV.js.br +0 -0
- package/dist/assets/ara-4CJ0cIlV.js.gz +0 -0
- package/dist/assets/architectureDiagram-T3A2C74G-DJbnVK1q.js.br +0 -0
- package/dist/assets/architectureDiagram-T3A2C74G-DJbnVK1q.js.gz +0 -0
- package/dist/assets/asciidoc-SCjQUq34.js.br +0 -0
- package/dist/assets/asciidoc-SCjQUq34.js.gz +0 -0
- package/dist/assets/asm-Cmm7eHzH.js.br +0 -0
- package/dist/assets/asm-Cmm7eHzH.js.gz +0 -0
- package/dist/assets/astro-CYXUZjx4.js.br +0 -0
- package/dist/assets/astro-CYXUZjx4.js.gz +0 -0
- package/dist/assets/aurora-x-CDeNXAV0.js.br +0 -0
- package/dist/assets/aurora-x-CDeNXAV0.js.gz +0 -0
- package/dist/assets/awk-BWXHIvNe.js.br +0 -0
- package/dist/assets/awk-BWXHIvNe.js.gz +0 -0
- package/dist/assets/ayu-dark-DluEY0Gj.js.br +0 -0
- package/dist/assets/ayu-dark-DluEY0Gj.js.gz +0 -0
- package/dist/assets/ayu-light-C3h-C4tm.js.br +0 -0
- package/dist/assets/ayu-light-C3h-C4tm.js.gz +0 -0
- package/dist/assets/ayu-mirage-Bqwy1Gya.js.br +0 -0
- package/dist/assets/ayu-mirage-Bqwy1Gya.js.gz +0 -0
- package/dist/assets/ballerina-B7ZEbQpA.js.br +0 -0
- package/dist/assets/ballerina-B7ZEbQpA.js.gz +0 -0
- package/dist/assets/bat-qdxAdBWQ.js.br +0 -0
- package/dist/assets/bat-qdxAdBWQ.js.gz +0 -0
- package/dist/assets/beancount-D-usSTwE.js.br +0 -0
- package/dist/assets/beancount-D-usSTwE.js.gz +0 -0
- package/dist/assets/berry-DKpUyyne.js.br +0 -0
- package/dist/assets/berry-DKpUyyne.js.gz +0 -0
- package/dist/assets/bibtex-Ci_nEsc7.js.br +0 -0
- package/dist/assets/bibtex-Ci_nEsc7.js.gz +0 -0
- package/dist/assets/bicep-CUHmPFLl.js.br +0 -0
- package/dist/assets/bicep-CUHmPFLl.js.gz +0 -0
- package/dist/assets/bird2-CYIUgYqB.js.br +0 -0
- package/dist/assets/bird2-CYIUgYqB.js.gz +0 -0
- package/dist/assets/blade-mfXoORbc.js.br +0 -0
- package/dist/assets/blade-mfXoORbc.js.gz +0 -0
- package/dist/assets/blockDiagram-VBNYF7ZC-Qtci47Jq.js.br +0 -0
- package/dist/assets/blockDiagram-VBNYF7ZC-Qtci47Jq.js.gz +0 -0
- package/dist/assets/bsl-_VjlB9mv.js.br +0 -0
- package/dist/assets/bsl-_VjlB9mv.js.gz +0 -0
- package/dist/assets/c-mSN2GbH4.js.br +0 -0
- package/dist/assets/c-mSN2GbH4.js.gz +0 -0
- package/dist/assets/c3-D0apG41V.js.br +0 -0
- package/dist/assets/c3-D0apG41V.js.gz +0 -0
- package/dist/assets/c4Diagram-5PPSVZJV-DC9Uk9FW.js.br +0 -0
- package/dist/assets/c4Diagram-5PPSVZJV-DC9Uk9FW.js.gz +0 -0
- package/dist/assets/cadence-CQ2zXKGN.js.br +0 -0
- package/dist/assets/cadence-CQ2zXKGN.js.gz +0 -0
- package/dist/assets/cairo-DLTphjLi.js.br +0 -0
- package/dist/assets/cairo-DLTphjLi.js.gz +0 -0
- package/dist/assets/catppuccin-frappe-C9Q5zVZY.js.br +0 -0
- package/dist/assets/catppuccin-frappe-C9Q5zVZY.js.gz +0 -0
- package/dist/assets/catppuccin-latte-CtsyrtPq.js.br +0 -0
- package/dist/assets/catppuccin-latte-CtsyrtPq.js.gz +0 -0
- package/dist/assets/catppuccin-macchiato-R8nAf1vR.js.br +0 -0
- package/dist/assets/catppuccin-macchiato-R8nAf1vR.js.gz +0 -0
- package/dist/assets/catppuccin-mocha-DjuaAJKi.js.br +0 -0
- package/dist/assets/catppuccin-mocha-DjuaAJKi.js.gz +0 -0
- package/dist/assets/chapel-BG8u2Rih.js.br +0 -0
- package/dist/assets/chapel-BG8u2Rih.js.gz +0 -0
- package/dist/assets/chunk-2GRJ4B5K-C6KsYuNR.js.br +0 -0
- package/dist/assets/chunk-2GRJ4B5K-C6KsYuNR.js.gz +0 -0
- package/dist/assets/chunk-4I5QYGJK-CPsvNPUx.js.br +0 -0
- package/dist/assets/chunk-4I5QYGJK-CPsvNPUx.js.gz +0 -0
- package/dist/assets/chunk-5JV3BV7I-BrKM6vC-.js.br +0 -0
- package/dist/assets/chunk-5JV3BV7I-BrKM6vC-.js.gz +0 -0
- package/dist/assets/chunk-5RXB4S5H-CU_v2umt.js.br +0 -0
- package/dist/assets/chunk-5RXB4S5H-CU_v2umt.js.gz +0 -0
- package/dist/assets/chunk-5TONJI2A-Bdh0MHqz.js.br +0 -0
- package/dist/assets/chunk-5TONJI2A-Bdh0MHqz.js.gz +0 -0
- package/dist/assets/chunk-6Q2QTUOP-C_q0JPmG.js.br +0 -0
- package/dist/assets/chunk-6Q2QTUOP-C_q0JPmG.js.gz +0 -0
- package/dist/assets/chunk-7BUUIJ7U-Bb538aSH.js.br +0 -0
- package/dist/assets/chunk-7BUUIJ7U-Bb538aSH.js.gz +0 -0
- package/dist/assets/chunk-7Z6QIM7H-jM3JGv9o.js.br +0 -0
- package/dist/assets/chunk-7Z6QIM7H-jM3JGv9o.js.gz +0 -0
- package/dist/assets/chunk-GF5L2VYU-Dp_0e4Vj.js.br +0 -0
- package/dist/assets/chunk-GF5L2VYU-Dp_0e4Vj.js.gz +0 -0
- package/dist/assets/chunk-I66GZJ75-CLtbCU_E.js.br +0 -0
- package/dist/assets/chunk-I66GZJ75-CLtbCU_E.js.gz +0 -0
- package/dist/assets/chunk-J7OUQ5F2-C4uAdkrD.js.br +0 -0
- package/dist/assets/chunk-J7OUQ5F2-C4uAdkrD.js.gz +0 -0
- package/dist/assets/chunk-JG7HCLWE-lCTbN-f1.js.br +0 -0
- package/dist/assets/chunk-JG7HCLWE-lCTbN-f1.js.gz +0 -0
- package/dist/assets/chunk-JQJVKLGR-BlTMFaN6.js.br +0 -0
- package/dist/assets/chunk-JQJVKLGR-BlTMFaN6.js.gz +0 -0
- package/dist/assets/chunk-KEIR6QF5-ydf36Hye.js.br +0 -0
- package/dist/assets/chunk-KEIR6QF5-ydf36Hye.js.gz +0 -0
- package/dist/assets/chunk-NSK5VX7P-B7tNpEbR.js.br +0 -0
- package/dist/assets/chunk-NSK5VX7P-B7tNpEbR.js.gz +0 -0
- package/dist/assets/chunk-QR6OTTB3-B3mQWEI2.js.br +0 -0
- package/dist/assets/chunk-QR6OTTB3-B3mQWEI2.js.gz +0 -0
- package/dist/assets/chunk-R7FJI6CG-DsJHM8am.js.br +0 -0
- package/dist/assets/chunk-R7FJI6CG-DsJHM8am.js.gz +0 -0
- package/dist/assets/chunk-RYQCIY6F-B3DAS_Q-.js.br +0 -0
- package/dist/assets/chunk-RYQCIY6F-B3DAS_Q-.js.gz +0 -0
- package/dist/assets/chunk-U6XO7XAA-D-dXvZaW.js.br +0 -0
- package/dist/assets/chunk-U6XO7XAA-D-dXvZaW.js.gz +0 -0
- package/dist/assets/chunk-W5SLKNZC-DWOVkEVc.js.br +0 -0
- package/dist/assets/chunk-W5SLKNZC-DWOVkEVc.js.gz +0 -0
- package/dist/assets/chunk-WRU74C26-DR5g8owc.js.br +0 -0
- package/dist/assets/chunk-WRU74C26-DR5g8owc.js.gz +0 -0
- package/dist/assets/chunk-ZIRB5QZD-O39ZBUk3.js.br +0 -0
- package/dist/assets/chunk-ZIRB5QZD-O39ZBUk3.js.gz +0 -0
- package/dist/assets/clarity-CtfBBspg.js.br +0 -0
- package/dist/assets/clarity-CtfBBspg.js.gz +0 -0
- package/dist/assets/clojure-DqKBuwfJ.js.br +0 -0
- package/dist/assets/clojure-DqKBuwfJ.js.gz +0 -0
- package/dist/assets/cmake-Bj61d0ZC.js.br +0 -0
- package/dist/assets/cmake-Bj61d0ZC.js.gz +0 -0
- package/dist/assets/cobol-Bhp1bana.js.br +0 -0
- package/dist/assets/cobol-Bhp1bana.js.gz +0 -0
- package/dist/assets/codeql-oeQT6MSM.js.br +0 -0
- package/dist/assets/codeql-oeQT6MSM.js.gz +0 -0
- package/dist/assets/coffee-C17FjuDx.js.br +0 -0
- package/dist/assets/coffee-C17FjuDx.js.gz +0 -0
- package/dist/assets/common-lisp-Cv5bFMCO.js.br +0 -0
- package/dist/assets/common-lisp-Cv5bFMCO.js.gz +0 -0
- package/dist/assets/coq-DuBRPxYg.js.br +0 -0
- package/dist/assets/coq-DuBRPxYg.js.gz +0 -0
- package/dist/assets/cose-bilkent-JH36ORCC-CcXrYRrs.js.br +0 -0
- package/dist/assets/cose-bilkent-JH36ORCC-CcXrYRrs.js.gz +0 -0
- package/dist/assets/cpp-svqsdV-V.js.br +0 -0
- package/dist/assets/cpp-svqsdV-V.js.gz +0 -0
- package/dist/assets/createDerive-Byjn6nRi.js +0 -1
- package/dist/assets/createDerive-Byjn6nRi.js.br +0 -0
- package/dist/assets/createDerive-Byjn6nRi.js.gz +0 -0
- package/dist/assets/crystal-D9vhA8G_.js.br +0 -0
- package/dist/assets/crystal-D9vhA8G_.js.gz +0 -0
- package/dist/assets/csharp-oqKa8noW.js.br +0 -0
- package/dist/assets/csharp-oqKa8noW.js.gz +0 -0
- package/dist/assets/css-DkbmQzJL.js.br +0 -0
- package/dist/assets/css-DkbmQzJL.js.gz +0 -0
- package/dist/assets/csv-Dx-8-gkx.js.br +0 -0
- package/dist/assets/csv-Dx-8-gkx.js.gz +0 -0
- package/dist/assets/cue-CE9AQfxI.js.br +0 -0
- package/dist/assets/cue-CE9AQfxI.js.gz +0 -0
- package/dist/assets/cynefinDiagram-MW4NZA55-DuPIOMPB.js.br +0 -0
- package/dist/assets/cynefinDiagram-MW4NZA55-DuPIOMPB.js.gz +0 -0
- package/dist/assets/cypher-ClKdZ_lG.js.br +0 -0
- package/dist/assets/cypher-ClKdZ_lG.js.gz +0 -0
- package/dist/assets/cytoscape.esm-B-NFISlW.js.br +0 -0
- package/dist/assets/cytoscape.esm-B-NFISlW.js.gz +0 -0
- package/dist/assets/d-qD-0Kul2.js.br +0 -0
- package/dist/assets/d-qD-0Kul2.js.gz +0 -0
- package/dist/assets/dagre-Buvkdvvj.js.br +0 -0
- package/dist/assets/dagre-Buvkdvvj.js.gz +0 -0
- package/dist/assets/dagre-VZM6K2ZE-CHbs07zF.js.br +0 -0
- package/dist/assets/dagre-VZM6K2ZE-CHbs07zF.js.gz +0 -0
- package/dist/assets/dark-plus-Cs2F2srj.js.br +0 -0
- package/dist/assets/dark-plus-Cs2F2srj.js.gz +0 -0
- package/dist/assets/dart-CnvKMtbv.js.br +0 -0
- package/dist/assets/dart-CnvKMtbv.js.gz +0 -0
- package/dist/assets/data-adapter-BJj1HN8X.js +0 -24
- package/dist/assets/data-adapter-BJj1HN8X.js.br +0 -0
- package/dist/assets/data-adapter-BJj1HN8X.js.gz +0 -0
- package/dist/assets/dax-BkyTk9wS.js.br +0 -0
- package/dist/assets/dax-BkyTk9wS.js.gz +0 -0
- package/dist/assets/desktop-Dlh5hvp9.js.br +0 -0
- package/dist/assets/desktop-Dlh5hvp9.js.gz +0 -0
- package/dist/assets/diagram-7IWD3JNH-sPS-Y-CP.js.br +0 -0
- package/dist/assets/diagram-7IWD3JNH-sPS-Y-CP.js.gz +0 -0
- package/dist/assets/diagram-B4RE2ZJO-C4Essr7L.js.br +0 -0
- package/dist/assets/diagram-B4RE2ZJO-C4Essr7L.js.gz +0 -0
- package/dist/assets/diagram-LBJQPF4R-CluEJ_Yg.js.br +0 -0
- package/dist/assets/diagram-LBJQPF4R-CluEJ_Yg.js.gz +0 -0
- package/dist/assets/diagram-Q27KOJAE-D4lem9jQ.js.br +0 -0
- package/dist/assets/diagram-Q27KOJAE-D4lem9jQ.js.gz +0 -0
- package/dist/assets/diagram-UB23O5K3-Bfj6mHJD.js.br +0 -0
- package/dist/assets/diagram-UB23O5K3-Bfj6mHJD.js.gz +0 -0
- package/dist/assets/diff-woXpYk--.js.br +0 -0
- package/dist/assets/diff-woXpYk--.js.gz +0 -0
- package/dist/assets/dist-B7OHp69Q.js.br +0 -0
- package/dist/assets/dist-B7OHp69Q.js.gz +0 -0
- package/dist/assets/dist-D3VfqzjO.js.br +0 -0
- package/dist/assets/dist-D3VfqzjO.js.gz +0 -0
- package/dist/assets/docker-IyjqRm3v.js.br +0 -0
- package/dist/assets/docker-IyjqRm3v.js.gz +0 -0
- package/dist/assets/dotenv-_5a1GRtc.js.br +0 -0
- package/dist/assets/dotenv-_5a1GRtc.js.gz +0 -0
- package/dist/assets/dracula-BHWKrbxM.js.br +0 -0
- package/dist/assets/dracula-BHWKrbxM.js.gz +0 -0
- package/dist/assets/dracula-soft-5eyTD99u.js.br +0 -0
- package/dist/assets/dracula-soft-5eyTD99u.js.gz +0 -0
- package/dist/assets/dream-maker-DW3nJb8Q.js.br +0 -0
- package/dist/assets/dream-maker-DW3nJb8Q.js.gz +0 -0
- package/dist/assets/drillUrlFilters-DHAQHZbx.js.br +0 -0
- package/dist/assets/drillUrlFilters-DHAQHZbx.js.gz +0 -0
- package/dist/assets/ebnfDiagram-BXEA7PRR-BKXyHLd_.js.br +0 -0
- package/dist/assets/ebnfDiagram-BXEA7PRR-BKXyHLd_.js.gz +0 -0
- package/dist/assets/edge-DVm6-hiM.js.br +0 -0
- package/dist/assets/edge-DVm6-hiM.js.gz +0 -0
- package/dist/assets/elixir-BQoS1tEv.js.br +0 -0
- package/dist/assets/elixir-BQoS1tEv.js.gz +0 -0
- package/dist/assets/elm-D_TZK0Oc.js.br +0 -0
- package/dist/assets/elm-D_TZK0Oc.js.gz +0 -0
- package/dist/assets/emacs-lisp-c_oH4hRZ.js.br +0 -0
- package/dist/assets/emacs-lisp-c_oH4hRZ.js.gz +0 -0
- package/dist/assets/erDiagram-JOGREHBK-B6_uGYAF.js.br +0 -0
- package/dist/assets/erDiagram-JOGREHBK-B6_uGYAF.js.gz +0 -0
- package/dist/assets/erb-DFs7gCnY.js.br +0 -0
- package/dist/assets/erb-DFs7gCnY.js.gz +0 -0
- package/dist/assets/erlang-Cphh6RMH.js.br +0 -0
- package/dist/assets/erlang-Cphh6RMH.js.gz +0 -0
- package/dist/assets/everforest-dark-sB-x3p7T.js.br +0 -0
- package/dist/assets/everforest-dark-sB-x3p7T.js.gz +0 -0
- package/dist/assets/everforest-light-Df2xbC6M.js.br +0 -0
- package/dist/assets/everforest-light-Df2xbC6M.js.gz +0 -0
- package/dist/assets/exceljs.min-BYqCKPdJ.js.br +0 -0
- package/dist/assets/exceljs.min-BYqCKPdJ.js.gz +0 -0
- package/dist/assets/fennel-DQxkIbk2.js.br +0 -0
- package/dist/assets/fennel-DQxkIbk2.js.gz +0 -0
- package/dist/assets/fish-BJitypiv.js.br +0 -0
- package/dist/assets/fish-BJitypiv.js.gz +0 -0
- package/dist/assets/fluent-C03EYrpw.js.br +0 -0
- package/dist/assets/fluent-C03EYrpw.js.gz +0 -0
- package/dist/assets/fortran-fixed-form-DEKoE2YW.js.br +0 -0
- package/dist/assets/fortran-fixed-form-DEKoE2YW.js.gz +0 -0
- package/dist/assets/fortran-free-form-CYNrtFtB.js.br +0 -0
- package/dist/assets/fortran-free-form-CYNrtFtB.js.gz +0 -0
- package/dist/assets/framework-DDZiA4ii.js +0 -8
- package/dist/assets/framework-DDZiA4ii.js.br +0 -0
- package/dist/assets/framework-DDZiA4ii.js.gz +0 -0
- package/dist/assets/fsharp-D13ZGOAj.js.br +0 -0
- package/dist/assets/fsharp-D13ZGOAj.js.gz +0 -0
- package/dist/assets/ganttDiagram-PKOTCBZU-Cip5kKH4.js.br +0 -0
- package/dist/assets/ganttDiagram-PKOTCBZU-Cip5kKH4.js.gz +0 -0
- package/dist/assets/gdresource-xMC7jr7x.js.br +0 -0
- package/dist/assets/gdresource-xMC7jr7x.js.gz +0 -0
- package/dist/assets/gdscript-DYvRD3hg.js.br +0 -0
- package/dist/assets/gdscript-DYvRD3hg.js.gz +0 -0
- package/dist/assets/gdshader-CBce3t8t.js.br +0 -0
- package/dist/assets/gdshader-CBce3t8t.js.gz +0 -0
- package/dist/assets/genie-CV2tkWYe.js.br +0 -0
- package/dist/assets/genie-CV2tkWYe.js.gz +0 -0
- package/dist/assets/getIcon-DGZbbWGj.js +0 -1
- package/dist/assets/gherkin-DExj1W_8.js.br +0 -0
- package/dist/assets/gherkin-DExj1W_8.js.gz +0 -0
- package/dist/assets/git-commit-BSykSTBG.js.br +0 -0
- package/dist/assets/git-commit-BSykSTBG.js.gz +0 -0
- package/dist/assets/gitGraphDiagram-DS77QQ5N-CF75OjHf.js.br +0 -0
- package/dist/assets/gitGraphDiagram-DS77QQ5N-CF75OjHf.js.gz +0 -0
- package/dist/assets/github-dark-C-LZuMrd.js.br +0 -0
- package/dist/assets/github-dark-C-LZuMrd.js.gz +0 -0
- package/dist/assets/github-dark-default-DXG-b-1a.js.br +0 -0
- package/dist/assets/github-dark-default-DXG-b-1a.js.gz +0 -0
- package/dist/assets/github-dark-dimmed-Bx1FflLF.js.br +0 -0
- package/dist/assets/github-dark-dimmed-Bx1FflLF.js.gz +0 -0
- package/dist/assets/github-dark-high-contrast-B_tTalzw.js.br +0 -0
- package/dist/assets/github-dark-high-contrast-B_tTalzw.js.gz +0 -0
- package/dist/assets/github-light-EUqPIrTm.js.br +0 -0
- package/dist/assets/github-light-EUqPIrTm.js.gz +0 -0
- package/dist/assets/github-light-default-BXViO-2h.js.br +0 -0
- package/dist/assets/github-light-default-BXViO-2h.js.gz +0 -0
- package/dist/assets/github-light-high-contrast-B68TUdTA.js.br +0 -0
- package/dist/assets/github-light-high-contrast-B68TUdTA.js.gz +0 -0
- package/dist/assets/gleam-CSRkHgEL.js.br +0 -0
- package/dist/assets/gleam-CSRkHgEL.js.gz +0 -0
- package/dist/assets/glimmer-js-Cpr0NJvA.js.br +0 -0
- package/dist/assets/glimmer-js-Cpr0NJvA.js.gz +0 -0
- package/dist/assets/glimmer-ts-CYbTSzY6.js.br +0 -0
- package/dist/assets/glimmer-ts-CYbTSzY6.js.gz +0 -0
- package/dist/assets/glsl-C3yOxx6A.js.br +0 -0
- package/dist/assets/glsl-C3yOxx6A.js.gz +0 -0
- package/dist/assets/gn-ilITqXS6.js.br +0 -0
- package/dist/assets/gn-ilITqXS6.js.gz +0 -0
- package/dist/assets/gnuplot-7GGW24-e.js.br +0 -0
- package/dist/assets/gnuplot-7GGW24-e.js.gz +0 -0
- package/dist/assets/go-rLFTqkRN.js.br +0 -0
- package/dist/assets/go-rLFTqkRN.js.gz +0 -0
- package/dist/assets/graphlib-DS17s2tU.js.br +0 -0
- package/dist/assets/graphlib-DS17s2tU.js.gz +0 -0
- package/dist/assets/graphql-DlruBr94.js.br +0 -0
- package/dist/assets/graphql-DlruBr94.js.gz +0 -0
- package/dist/assets/groovy-CacY0gHj.js.br +0 -0
- package/dist/assets/groovy-CacY0gHj.js.gz +0 -0
- package/dist/assets/gruvbox-dark-hard-C820rvS2.js.br +0 -0
- package/dist/assets/gruvbox-dark-hard-C820rvS2.js.gz +0 -0
- package/dist/assets/gruvbox-dark-medium-BPjhmG05.js.br +0 -0
- package/dist/assets/gruvbox-dark-medium-BPjhmG05.js.gz +0 -0
- package/dist/assets/gruvbox-dark-soft-MrdJrrXF.js.br +0 -0
- package/dist/assets/gruvbox-dark-soft-MrdJrrXF.js.gz +0 -0
- package/dist/assets/gruvbox-light-hard-BC_s9l72.js.br +0 -0
- package/dist/assets/gruvbox-light-hard-BC_s9l72.js.gz +0 -0
- package/dist/assets/gruvbox-light-medium-BAWPOn9u.js.br +0 -0
- package/dist/assets/gruvbox-light-medium-BAWPOn9u.js.gz +0 -0
- package/dist/assets/gruvbox-light-soft-BSMLrYjP.js.br +0 -0
- package/dist/assets/gruvbox-light-soft-BSMLrYjP.js.gz +0 -0
- package/dist/assets/hack-Cn178EEI.js.br +0 -0
- package/dist/assets/hack-Cn178EEI.js.gz +0 -0
- package/dist/assets/haml-ReV9wHjP.js.br +0 -0
- package/dist/assets/haml-ReV9wHjP.js.gz +0 -0
- package/dist/assets/handlebars-D74Ug8_P.js.br +0 -0
- package/dist/assets/handlebars-D74Ug8_P.js.gz +0 -0
- package/dist/assets/haskell-D8IpX4py.js.br +0 -0
- package/dist/assets/haskell-D8IpX4py.js.gz +0 -0
- package/dist/assets/haxe-C8oCnwJJ.js.br +0 -0
- package/dist/assets/haxe-C8oCnwJJ.js.gz +0 -0
- package/dist/assets/hcl-Dh228itO.js.br +0 -0
- package/dist/assets/hcl-Dh228itO.js.gz +0 -0
- package/dist/assets/hjson-CxZEssPk.js.br +0 -0
- package/dist/assets/hjson-CxZEssPk.js.gz +0 -0
- package/dist/assets/hlsl-Cvrh5tZx.js.br +0 -0
- package/dist/assets/hlsl-Cvrh5tZx.js.gz +0 -0
- package/dist/assets/horizon-CE9ld1lL.js.br +0 -0
- package/dist/assets/horizon-CE9ld1lL.js.gz +0 -0
- package/dist/assets/horizon-bright-DSNQnXHK.js.br +0 -0
- package/dist/assets/horizon-bright-DSNQnXHK.js.gz +0 -0
- package/dist/assets/houston-CsvMBhTu.js.br +0 -0
- package/dist/assets/houston-CsvMBhTu.js.gz +0 -0
- package/dist/assets/html-BPYeLA3q.js.br +0 -0
- package/dist/assets/html-BPYeLA3q.js.gz +0 -0
- package/dist/assets/http-Dy2ncae7.js.br +0 -0
- package/dist/assets/http-Dy2ncae7.js.gz +0 -0
- package/dist/assets/hurl-Cb5XgwOM.js.br +0 -0
- package/dist/assets/hurl-Cb5XgwOM.js.gz +0 -0
- package/dist/assets/hxml-Dcm88srW.js.br +0 -0
- package/dist/assets/hxml-Dcm88srW.js.gz +0 -0
- package/dist/assets/hy-CZbG8q4J.js.br +0 -0
- package/dist/assets/hy-CZbG8q4J.js.gz +0 -0
- package/dist/assets/i18n-Darz-xgN.js +0 -9
- package/dist/assets/i18n-Darz-xgN.js.br +0 -0
- package/dist/assets/i18n-Darz-xgN.js.gz +0 -0
- package/dist/assets/imba-DsUTQ-LC.js.br +0 -0
- package/dist/assets/imba-DsUTQ-LC.js.gz +0 -0
- package/dist/assets/index-0lJaiIcB.js +0 -2
- package/dist/assets/index-0lJaiIcB.js.br +0 -0
- package/dist/assets/index-0lJaiIcB.js.gz +0 -0
- package/dist/assets/index-VKN7CDwN.css +0 -2
- package/dist/assets/index-VKN7CDwN.css.br +0 -0
- package/dist/assets/index-VKN7CDwN.css.gz +0 -0
- package/dist/assets/infrastructure-DG9xHrYB.js +0 -3
- package/dist/assets/infrastructure-DG9xHrYB.js.br +0 -0
- package/dist/assets/infrastructure-DG9xHrYB.js.gz +0 -0
- package/dist/assets/ini-B5eOa1yu.js.br +0 -5
- package/dist/assets/ini-B5eOa1yu.js.gz +0 -0
- package/dist/assets/ishikawaDiagram-WSZJBQD7-D8FhFMwb.js.br +0 -0
- package/dist/assets/ishikawaDiagram-WSZJBQD7-D8FhFMwb.js.gz +0 -0
- package/dist/assets/java-CCLYh7Ws.js.br +0 -0
- package/dist/assets/java-CCLYh7Ws.js.gz +0 -0
- package/dist/assets/javascript-B3ZoUvGD.js.br +0 -0
- package/dist/assets/javascript-B3ZoUvGD.js.gz +0 -0
- package/dist/assets/jinja-I6vrZFw_.js.br +0 -0
- package/dist/assets/jinja-I6vrZFw_.js.gz +0 -0
- package/dist/assets/jison-C7uQeUlv.js.br +0 -0
- package/dist/assets/jison-C7uQeUlv.js.gz +0 -0
- package/dist/assets/journeyDiagram-NVQOT4AX-C1y_DqRe.js.br +0 -0
- package/dist/assets/journeyDiagram-NVQOT4AX-C1y_DqRe.js.gz +0 -0
- package/dist/assets/json-DYyUca0x.js.br +0 -0
- package/dist/assets/json-DYyUca0x.js.gz +0 -0
- package/dist/assets/json5-BR5RXkoi.js.br +0 -0
- package/dist/assets/json5-BR5RXkoi.js.gz +0 -0
- package/dist/assets/jsonc-CYpm1nAK.js.br +0 -0
- package/dist/assets/jsonc-CYpm1nAK.js.gz +0 -0
- package/dist/assets/jsonl-CmCQp5Yx.js.br +0 -0
- package/dist/assets/jsonl-CmCQp5Yx.js.gz +0 -0
- package/dist/assets/jsonnet-CJTPZ8u_.js.br +0 -0
- package/dist/assets/jsonnet-CJTPZ8u_.js.gz +0 -0
- package/dist/assets/jssm-DXw9l8Rf.js.br +0 -0
- package/dist/assets/jssm-DXw9l8Rf.js.gz +0 -0
- package/dist/assets/jsx-Cb6Vub3Y.js.br +0 -0
- package/dist/assets/jsx-Cb6Vub3Y.js.gz +0 -0
- package/dist/assets/julia-BIoAlrTe.js.br +0 -0
- package/dist/assets/julia-BIoAlrTe.js.gz +0 -0
- package/dist/assets/just-CwqxWwqp.js.br +0 -0
- package/dist/assets/just-CwqxWwqp.js.gz +0 -0
- package/dist/assets/kanagawa-dragon-Bozd7klA.js.br +0 -0
- package/dist/assets/kanagawa-dragon-Bozd7klA.js.gz +0 -0
- package/dist/assets/kanagawa-lotus-BmuOG9ZW.js.br +0 -0
- package/dist/assets/kanagawa-lotus-BmuOG9ZW.js.gz +0 -0
- package/dist/assets/kanagawa-wave-BML5mF2J.js.br +0 -0
- package/dist/assets/kanagawa-wave-BML5mF2J.js.gz +0 -0
- package/dist/assets/kanban-definition-27J2QSJJ-DIUOavva.js.br +0 -0
- package/dist/assets/kanban-definition-27J2QSJJ-DIUOavva.js.gz +0 -0
- package/dist/assets/katex-CXMH3UgJ.js.br +0 -0
- package/dist/assets/katex-CXMH3UgJ.js.gz +0 -0
- package/dist/assets/kdl-CsD5j6eV.js.br +0 -0
- package/dist/assets/kdl-CsD5j6eV.js.gz +0 -0
- package/dist/assets/kotlin-DhhofPvG.js.br +0 -0
- package/dist/assets/kotlin-DhhofPvG.js.gz +0 -0
- package/dist/assets/kusto-C7mF5XQf.js.br +0 -0
- package/dist/assets/kusto-C7mF5XQf.js.gz +0 -0
- package/dist/assets/laserwave-C_8bwKvT.js.br +0 -0
- package/dist/assets/laserwave-C_8bwKvT.js.gz +0 -0
- package/dist/assets/latex-D7YcOmGi.js.br +0 -0
- package/dist/assets/latex-D7YcOmGi.js.gz +0 -0
- package/dist/assets/lean-CewbzKMR.js.br +0 -0
- package/dist/assets/lean-CewbzKMR.js.gz +0 -0
- package/dist/assets/less-DVTAwKKz.js.br +0 -0
- package/dist/assets/less-DVTAwKKz.js.gz +0 -0
- package/dist/assets/light-plus-DVQuIRkW.js.br +0 -0
- package/dist/assets/light-plus-DVQuIRkW.js.gz +0 -0
- package/dist/assets/liquid-DZU1d9jH.js.br +0 -0
- package/dist/assets/liquid-DZU1d9jH.js.gz +0 -0
- package/dist/assets/llvm-DqHOMS-s.js.br +0 -0
- package/dist/assets/llvm-DqHOMS-s.js.gz +0 -0
- package/dist/assets/log-BNLmms1o.js.br +0 -0
- package/dist/assets/log-BNLmms1o.js.gz +0 -0
- package/dist/assets/logo-Cluzi2Zq.js.br +0 -0
- package/dist/assets/logo-Cluzi2Zq.js.gz +0 -0
- package/dist/assets/lua-tuq8Rev2.js.br +0 -0
- package/dist/assets/lua-tuq8Rev2.js.gz +0 -0
- package/dist/assets/luau-C2pBCSgt.js.br +0 -0
- package/dist/assets/luau-C2pBCSgt.js.gz +0 -0
- package/dist/assets/make-Dixweg8N.js.br +0 -0
- package/dist/assets/make-Dixweg8N.js.gz +0 -0
- package/dist/assets/map-BaFkSB1l.js.br +0 -0
- package/dist/assets/map-BaFkSB1l.js.gz +0 -0
- package/dist/assets/maplibre-gl-DPzMTNDD.js.br +0 -0
- package/dist/assets/maplibre-gl-DPzMTNDD.js.gz +0 -0
- package/dist/assets/maplibre-gl-shared.mjs.br +0 -0
- package/dist/assets/maplibre-gl-shared.mjs.gz +0 -0
- package/dist/assets/maplibre-gl-worker.mjs.br +0 -0
- package/dist/assets/maplibre-gl-worker.mjs.gz +0 -0
- package/dist/assets/markdown-BYOwaDjH.js.br +0 -0
- package/dist/assets/markdown-BYOwaDjH.js.gz +0 -0
- package/dist/assets/marko-B27e1lfg.js.br +0 -0
- package/dist/assets/marko-B27e1lfg.js.gz +0 -0
- package/dist/assets/material-theme-Bm3Qr25_.js.br +0 -0
- package/dist/assets/material-theme-Bm3Qr25_.js.gz +0 -0
- package/dist/assets/material-theme-darker-2IIEA8gg.js.br +0 -0
- package/dist/assets/material-theme-darker-2IIEA8gg.js.gz +0 -0
- package/dist/assets/material-theme-lighter-uhdI0v04.js.br +0 -0
- package/dist/assets/material-theme-lighter-uhdI0v04.js.gz +0 -0
- package/dist/assets/material-theme-ocean-CHQ94UKr.js.br +0 -0
- package/dist/assets/material-theme-ocean-CHQ94UKr.js.gz +0 -0
- package/dist/assets/material-theme-palenight-B5W6OYN7.js.br +0 -0
- package/dist/assets/material-theme-palenight-B5W6OYN7.js.gz +0 -0
- package/dist/assets/matlab-D7qyCx1q.js.br +0 -0
- package/dist/assets/matlab-D7qyCx1q.js.gz +0 -0
- package/dist/assets/mdc-4Lg-bkXO.js.br +0 -0
- package/dist/assets/mdc-4Lg-bkXO.js.gz +0 -0
- package/dist/assets/mdx-DQZ5AkYe.js.br +0 -0
- package/dist/assets/mdx-DQZ5AkYe.js.gz +0 -0
- package/dist/assets/mermaid-BxpfTIzt.js.br +0 -0
- package/dist/assets/mermaid-BxpfTIzt.js.gz +0 -0
- package/dist/assets/mermaid-GHXKKRXX-BKnA-Tt-.js +0 -1
- package/dist/assets/mermaid-parser.core-BbBeSajF.js.br +0 -0
- package/dist/assets/mermaid-parser.core-BbBeSajF.js.gz +0 -0
- package/dist/assets/mermaid.core-Dc9p2r4P.js.br +0 -0
- package/dist/assets/mermaid.core-Dc9p2r4P.js.gz +0 -0
- package/dist/assets/metadata-admin-CQrvfQZw.js +0 -25
- package/dist/assets/metadata-admin-CQrvfQZw.js.br +0 -0
- package/dist/assets/metadata-admin-CQrvfQZw.js.gz +0 -0
- package/dist/assets/min-dark-BSWPekZh.js.br +0 -0
- package/dist/assets/min-dark-BSWPekZh.js.gz +0 -0
- package/dist/assets/min-light-DDpmG2fV.js.br +0 -0
- package/dist/assets/min-light-DDpmG2fV.js.gz +0 -0
- package/dist/assets/mindmap-definition-FAOFIHXS-TIsZfgu-.js.br +0 -0
- package/dist/assets/mindmap-definition-FAOFIHXS-TIsZfgu-.js.gz +0 -0
- package/dist/assets/mipsasm-BMqwQI7S.js.br +0 -0
- package/dist/assets/mipsasm-BMqwQI7S.js.gz +0 -0
- package/dist/assets/mojo-fg40_ntQ.js.br +0 -0
- package/dist/assets/mojo-fg40_ntQ.js.gz +0 -0
- package/dist/assets/monokai-B_bV9PQ9.js.br +0 -0
- package/dist/assets/monokai-B_bV9PQ9.js.gz +0 -0
- package/dist/assets/moonbit-DgjMoLWr.js.br +0 -0
- package/dist/assets/moonbit-DgjMoLWr.js.gz +0 -0
- package/dist/assets/move-BYnGhZoM.js.br +0 -0
- package/dist/assets/move-BYnGhZoM.js.gz +0 -0
- package/dist/assets/narrat-_X_XdTYD.js.br +0 -0
- package/dist/assets/narrat-_X_XdTYD.js.gz +0 -0
- package/dist/assets/nextflow-BJtWHP5T.js.br +0 -0
- package/dist/assets/nextflow-BJtWHP5T.js.gz +0 -0
- package/dist/assets/nextflow-groovy-DJMQeKeT.js.br +0 -0
- package/dist/assets/nextflow-groovy-DJMQeKeT.js.gz +0 -0
- package/dist/assets/nginx-nAXs0UmH.js.br +0 -0
- package/dist/assets/nginx-nAXs0UmH.js.gz +0 -0
- package/dist/assets/night-owl-DhmEMT88.js.br +0 -0
- package/dist/assets/night-owl-DhmEMT88.js.gz +0 -0
- package/dist/assets/night-owl-light-eJ-hLW7d.js.br +0 -0
- package/dist/assets/night-owl-light-eJ-hLW7d.js.gz +0 -0
- package/dist/assets/nim-CCdQjvI2.js.br +0 -0
- package/dist/assets/nim-CCdQjvI2.js.gz +0 -0
- package/dist/assets/nix-IvuFDN5E.js.br +0 -0
- package/dist/assets/nix-IvuFDN5E.js.gz +0 -0
- package/dist/assets/nord-Cb4Vim4T.js.br +0 -0
- package/dist/assets/nord-Cb4Vim4T.js.gz +0 -0
- package/dist/assets/nsis-CjNLYCLg.js.br +0 -0
- package/dist/assets/nsis-CjNLYCLg.js.gz +0 -0
- package/dist/assets/nushell-DHYfO66s.js.br +0 -0
- package/dist/assets/nushell-DHYfO66s.js.gz +0 -0
- package/dist/assets/objective-c-D1A_Heim.js.br +0 -0
- package/dist/assets/objective-c-D1A_Heim.js.gz +0 -0
- package/dist/assets/objective-cpp-BsSzOQcm.js.br +0 -0
- package/dist/assets/objective-cpp-BsSzOQcm.js.gz +0 -0
- package/dist/assets/ocaml-O90oeIOV.js.br +0 -0
- package/dist/assets/ocaml-O90oeIOV.js.gz +0 -0
- package/dist/assets/odin-B1RWQWA5.js.br +0 -0
- package/dist/assets/odin-B1RWQWA5.js.gz +0 -0
- package/dist/assets/one-dark-pro-CLwyXe_n.js.br +0 -0
- package/dist/assets/one-dark-pro-CLwyXe_n.js.gz +0 -0
- package/dist/assets/one-light-D7Lr4KcI.js.br +0 -0
- package/dist/assets/one-light-D7Lr4KcI.js.gz +0 -0
- package/dist/assets/openscad-BUDT5pXO.js.br +0 -0
- package/dist/assets/openscad-BUDT5pXO.js.gz +0 -0
- package/dist/assets/org-DhkRzv3S.js.br +0 -0
- package/dist/assets/org-DhkRzv3S.js.gz +0 -0
- package/dist/assets/pascal-4ZHwLPI5.js.br +0 -0
- package/dist/assets/pascal-4ZHwLPI5.js.gz +0 -0
- package/dist/assets/pegDiagram-VL7TDLO6-BrUvPfjL.js.br +0 -0
- package/dist/assets/pegDiagram-VL7TDLO6-BrUvPfjL.js.gz +0 -0
- package/dist/assets/perl-iLGR5v3R.js.br +0 -0
- package/dist/assets/perl-iLGR5v3R.js.gz +0 -0
- package/dist/assets/php-DgsNzQlf.js.br +0 -0
- package/dist/assets/php-DgsNzQlf.js.gz +0 -0
- package/dist/assets/pieDiagram-7S7Q4E2Y-BNPIri0N.js.br +0 -0
- package/dist/assets/pieDiagram-7S7Q4E2Y-BNPIri0N.js.gz +0 -0
- package/dist/assets/pkl-ot-7Btpt.js.br +0 -0
- package/dist/assets/pkl-ot-7Btpt.js.gz +0 -0
- package/dist/assets/plastic-DQwYfKfQ.js.br +0 -0
- package/dist/assets/plastic-DQwYfKfQ.js.gz +0 -0
- package/dist/assets/plsql-DGHpHOYJ.js.br +0 -0
- package/dist/assets/plsql-DGHpHOYJ.js.gz +0 -0
- package/dist/assets/plugin-calendar-DI5hFrRH.js +0 -1
- package/dist/assets/plugin-calendar-DI5hFrRH.js.br +0 -0
- package/dist/assets/plugin-calendar-DI5hFrRH.js.gz +0 -0
- package/dist/assets/plugin-charts-BuotHBLk.js +0 -7
- package/dist/assets/plugin-charts-BuotHBLk.js.br +0 -0
- package/dist/assets/plugin-charts-BuotHBLk.js.gz +0 -0
- package/dist/assets/plugin-chatbot-BGloefT3.js +0 -120
- package/dist/assets/plugin-chatbot-BGloefT3.js.br +0 -0
- package/dist/assets/plugin-chatbot-BGloefT3.js.gz +0 -0
- package/dist/assets/plugin-dashboard-CaNG1Od0.js +0 -6
- package/dist/assets/plugin-dashboard-CaNG1Od0.js.br +0 -0
- package/dist/assets/plugin-dashboard-CaNG1Od0.js.gz +0 -0
- package/dist/assets/plugin-dashboard-DnNKJB60.css.br +0 -0
- package/dist/assets/plugin-dashboard-DnNKJB60.css.gz +0 -0
- package/dist/assets/plugin-form-BA3fYsSc.js +0 -1
- package/dist/assets/plugin-form-BA3fYsSc.js.br +0 -0
- package/dist/assets/plugin-form-BA3fYsSc.js.gz +0 -0
- package/dist/assets/plugin-gantt-eVbYEb51.js +0 -63
- package/dist/assets/plugin-gantt-eVbYEb51.js.br +0 -0
- package/dist/assets/plugin-gantt-eVbYEb51.js.gz +0 -0
- package/dist/assets/plugin-grid-B73zsrgO.js +0 -8
- package/dist/assets/plugin-grid-B73zsrgO.js.br +0 -0
- package/dist/assets/plugin-grid-B73zsrgO.js.gz +0 -0
- package/dist/assets/plugin-kanban-BiX4SvpU.js +0 -1
- package/dist/assets/plugin-kanban-BiX4SvpU.js.br +0 -0
- package/dist/assets/plugin-kanban-BiX4SvpU.js.gz +0 -0
- package/dist/assets/plugin-map-5lRITB8H.css.br +0 -0
- package/dist/assets/plugin-map-5lRITB8H.css.gz +0 -0
- package/dist/assets/plugin-map-D8odPW8M.js +0 -1
- package/dist/assets/plugin-map-D8odPW8M.js.br +0 -0
- package/dist/assets/plugin-map-D8odPW8M.js.gz +0 -0
- package/dist/assets/plugin-markdown-C3ihtjLf.js.br +0 -0
- package/dist/assets/plugin-markdown-C3ihtjLf.js.gz +0 -0
- package/dist/assets/plugin-report-W3tKaUTG.js +0 -59
- package/dist/assets/plugin-report-W3tKaUTG.js.br +0 -0
- package/dist/assets/plugin-report-W3tKaUTG.js.gz +0 -0
- package/dist/assets/plugin-timeline-DneQi3FN.js +0 -1
- package/dist/assets/plugin-timeline-DneQi3FN.js.br +0 -0
- package/dist/assets/plugin-timeline-DneQi3FN.js.gz +0 -0
- package/dist/assets/plugin-tree-Dg-UoQrg.js +0 -1
- package/dist/assets/plugin-tree-Dg-UoQrg.js.br +0 -0
- package/dist/assets/plugin-tree-Dg-UoQrg.js.gz +0 -0
- package/dist/assets/plugin-view-DMMnDypy.js +0 -1
- package/dist/assets/plugin-view-DMMnDypy.js.br +0 -0
- package/dist/assets/plugin-view-DMMnDypy.js.gz +0 -0
- package/dist/assets/plugins-views-GVcESCR3.js +0 -4
- package/dist/assets/plugins-views-GVcESCR3.js.br +0 -0
- package/dist/assets/plugins-views-GVcESCR3.js.gz +0 -0
- package/dist/assets/po-BiJDBrnU.js.br +0 -0
- package/dist/assets/po-BiJDBrnU.js.gz +0 -0
- package/dist/assets/poimandres-DRFjx7u4.js.br +0 -0
- package/dist/assets/poimandres-DRFjx7u4.js.gz +0 -0
- package/dist/assets/polar-C7UOKdEL.js.br +0 -0
- package/dist/assets/polar-C7UOKdEL.js.gz +0 -0
- package/dist/assets/postcss-BXeXVLqQ.js.br +0 -0
- package/dist/assets/postcss-BXeXVLqQ.js.gz +0 -0
- package/dist/assets/powerquery-DNMTfnFr.js.br +0 -0
- package/dist/assets/powerquery-DNMTfnFr.js.gz +0 -0
- package/dist/assets/powershell-CCSX75yM.js.br +0 -0
- package/dist/assets/powershell-CCSX75yM.js.gz +0 -0
- package/dist/assets/prisma-DMgNhnYS.js.br +0 -0
- package/dist/assets/prisma-DMgNhnYS.js.gz +0 -0
- package/dist/assets/prolog-iXnhIJG7.js.br +0 -0
- package/dist/assets/prolog-iXnhIJG7.js.gz +0 -0
- package/dist/assets/proto-DB4EqR-F.js.br +0 -0
- package/dist/assets/proto-DB4EqR-F.js.gz +0 -0
- package/dist/assets/pug-C1Xkn2-1.js.br +0 -0
- package/dist/assets/pug-C1Xkn2-1.js.gz +0 -0
- package/dist/assets/puppet-CDv2pdJW.js.br +0 -0
- package/dist/assets/puppet-CDv2pdJW.js.gz +0 -0
- package/dist/assets/purescript-9MfHhQsQ.js.br +0 -0
- package/dist/assets/purescript-9MfHhQsQ.js.gz +0 -0
- package/dist/assets/python-gzcpVVnB.js.br +0 -0
- package/dist/assets/python-gzcpVVnB.js.gz +0 -0
- package/dist/assets/qml-DaaPxMrD.js.br +0 -0
- package/dist/assets/qml-DaaPxMrD.js.gz +0 -0
- package/dist/assets/qss-Fe1Jh2GI.js.br +0 -0
- package/dist/assets/qss-Fe1Jh2GI.js.gz +0 -0
- package/dist/assets/quadrantDiagram-CIZ2JOQS-BpL1Kl6d.js.br +0 -0
- package/dist/assets/quadrantDiagram-CIZ2JOQS-BpL1Kl6d.js.gz +0 -0
- package/dist/assets/r-CrJekUTE.js.br +0 -0
- package/dist/assets/r-CrJekUTE.js.gz +0 -0
- package/dist/assets/racket-DcIDlBhZ.js.br +0 -0
- package/dist/assets/racket-DcIDlBhZ.js.gz +0 -0
- package/dist/assets/railroadDiagram-AXF67PYL-CY1JovP6.js.br +0 -0
- package/dist/assets/railroadDiagram-AXF67PYL-CY1JovP6.js.gz +0 -0
- package/dist/assets/raku-B3gFvitq.js.br +0 -0
- package/dist/assets/raku-B3gFvitq.js.gz +0 -0
- package/dist/assets/razor-DmNdBrA0.js.br +0 -0
- package/dist/assets/razor-DmNdBrA0.js.gz +0 -0
- package/dist/assets/rbs-C0MpOrj4.js.br +0 -0
- package/dist/assets/rbs-C0MpOrj4.js.gz +0 -0
- package/dist/assets/red-DX1BQOs8.js.br +0 -0
- package/dist/assets/red-DX1BQOs8.js.gz +0 -0
- package/dist/assets/reg-CRGYupPL.js.br +0 -0
- package/dist/assets/reg-CRGYupPL.js.gz +0 -0
- package/dist/assets/regexp-723CALth.js.br +0 -0
- package/dist/assets/regexp-723CALth.js.gz +0 -0
- package/dist/assets/rel-BtDbiS_P.js.br +0 -0
- package/dist/assets/rel-BtDbiS_P.js.gz +0 -0
- package/dist/assets/requirementDiagram-LRYGKXZP-TRTGy9-6.js.br +0 -0
- package/dist/assets/requirementDiagram-LRYGKXZP-TRTGy9-6.js.gz +0 -0
- package/dist/assets/riscv-Ckw8ddFX.js.br +0 -0
- package/dist/assets/riscv-Ckw8ddFX.js.gz +0 -0
- package/dist/assets/rolldown-runtime-C0FnF6B9.js.br +0 -5
- package/dist/assets/rolldown-runtime-C0FnF6B9.js.gz +0 -0
- package/dist/assets/ron-VUp2lXgN.js.br +0 -0
- package/dist/assets/ron-VUp2lXgN.js.gz +0 -0
- package/dist/assets/rose-pine-aMsaMD1D.js.br +0 -0
- package/dist/assets/rose-pine-aMsaMD1D.js.gz +0 -0
- package/dist/assets/rose-pine-dawn-8PwUyIlP.js.br +0 -0
- package/dist/assets/rose-pine-dawn-8PwUyIlP.js.gz +0 -0
- package/dist/assets/rose-pine-moon-DO-qXg-I.js.br +0 -0
- package/dist/assets/rose-pine-moon-DO-qXg-I.js.gz +0 -0
- package/dist/assets/rosmsg-CAekHB0j.js.br +0 -0
- package/dist/assets/rosmsg-CAekHB0j.js.gz +0 -0
- package/dist/assets/rough.esm-Dy-Kn_BL.js.br +0 -0
- package/dist/assets/rough.esm-Dy-Kn_BL.js.gz +0 -0
- package/dist/assets/rst-BLglG3Y_.js.br +0 -0
- package/dist/assets/rst-BLglG3Y_.js.gz +0 -0
- package/dist/assets/ruby-CacEyOQN.js.br +0 -0
- package/dist/assets/ruby-CacEyOQN.js.gz +0 -0
- package/dist/assets/runtime-metadata-persistence-D4a_EoZt.js +0 -1
- package/dist/assets/runtime-metadata-persistence-D4a_EoZt.js.br +0 -0
- package/dist/assets/runtime-metadata-persistence-D4a_EoZt.js.gz +0 -0
- package/dist/assets/rust-Cfkwpbl8.js.br +0 -0
- package/dist/assets/rust-Cfkwpbl8.js.gz +0 -0
- package/dist/assets/sankeyDiagram-W5VNT64P-Hj-Un0bp.js.br +0 -0
- package/dist/assets/sankeyDiagram-W5VNT64P-Hj-Un0bp.js.gz +0 -0
- package/dist/assets/sas-C_K_aNQk.js.br +0 -0
- package/dist/assets/sas-C_K_aNQk.js.gz +0 -0
- package/dist/assets/sass-DXrisJhu.js.br +0 -0
- package/dist/assets/sass-DXrisJhu.js.gz +0 -0
- package/dist/assets/scala-BiFt_7mu.js.br +0 -0
- package/dist/assets/scala-BiFt_7mu.js.gz +0 -0
- package/dist/assets/scheme-DQCgrYNe.js.br +0 -0
- package/dist/assets/scheme-DQCgrYNe.js.gz +0 -0
- package/dist/assets/scss-D2XZndG8.js.br +0 -0
- package/dist/assets/scss-D2XZndG8.js.gz +0 -0
- package/dist/assets/sdbl-bTVj8UrX.js.br +0 -0
- package/dist/assets/sdbl-bTVj8UrX.js.gz +0 -0
- package/dist/assets/sequenceDiagram-SI44F4Z6-iGYyf5AF.js.br +0 -0
- package/dist/assets/sequenceDiagram-SI44F4Z6-iGYyf5AF.js.gz +0 -0
- package/dist/assets/shaderlab-TOUzSsQk.js.br +0 -0
- package/dist/assets/shaderlab-TOUzSsQk.js.gz +0 -0
- package/dist/assets/shellscript-DoDh9O3W.js.br +0 -0
- package/dist/assets/shellscript-DoDh9O3W.js.gz +0 -0
- package/dist/assets/skeletons-Cs1pm-UR.js.br +0 -0
- package/dist/assets/skeletons-Cs1pm-UR.js.gz +0 -0
- package/dist/assets/slack-dark-DnToyrRv.js.br +0 -0
- package/dist/assets/slack-dark-DnToyrRv.js.gz +0 -0
- package/dist/assets/slack-ochin-B2OO5cIa.js.br +0 -0
- package/dist/assets/slack-ochin-B2OO5cIa.js.gz +0 -0
- package/dist/assets/smalltalk-BHpQb5nM.js.br +0 -0
- package/dist/assets/smalltalk-BHpQb5nM.js.gz +0 -0
- package/dist/assets/smithy-Dgaz7aur.js.br +0 -0
- package/dist/assets/smithy-Dgaz7aur.js.gz +0 -0
- package/dist/assets/snazzy-light-4G7pJPwS.js.br +0 -0
- package/dist/assets/snazzy-light-4G7pJPwS.js.gz +0 -0
- package/dist/assets/solarized-dark-UdsmMDCL.js.br +0 -0
- package/dist/assets/solarized-dark-UdsmMDCL.js.gz +0 -0
- package/dist/assets/solarized-light-C1IUL_tW.js.br +0 -0
- package/dist/assets/solarized-light-C1IUL_tW.js.gz +0 -0
- package/dist/assets/solidity-Bj7E1mRn.js.br +0 -0
- package/dist/assets/solidity-Bj7E1mRn.js.gz +0 -0
- package/dist/assets/soy-BDOoR3HV.js.br +0 -0
- package/dist/assets/soy-BDOoR3HV.js.gz +0 -0
- package/dist/assets/sparql-D_iOobhT.js.br +0 -0
- package/dist/assets/sparql-D_iOobhT.js.gz +0 -0
- package/dist/assets/splunk-BC2Px7Mm.js.br +0 -0
- package/dist/assets/splunk-BC2Px7Mm.js.gz +0 -0
- package/dist/assets/sql-DDaoNBOY.js.br +0 -0
- package/dist/assets/sql-DDaoNBOY.js.gz +0 -0
- package/dist/assets/src-0qbDl74X.js.br +0 -0
- package/dist/assets/src-0qbDl74X.js.gz +0 -0
- package/dist/assets/src-B67JaKZf.js.br +0 -0
- package/dist/assets/src-B67JaKZf.js.gz +0 -0
- package/dist/assets/src-BfBcf0cI.js +0 -1
- package/dist/assets/src-BfBcf0cI.js.br +0 -0
- package/dist/assets/src-BfBcf0cI.js.gz +0 -0
- package/dist/assets/src-DndKl5iC.js +0 -19
- package/dist/assets/src-DndKl5iC.js.br +0 -0
- package/dist/assets/src-DndKl5iC.js.gz +0 -0
- package/dist/assets/src-DwpgXgLE.js.br +0 -0
- package/dist/assets/src-DwpgXgLE.js.gz +0 -0
- package/dist/assets/ssh-config-BgfXC-Er.js.br +0 -0
- package/dist/assets/ssh-config-BgfXC-Er.js.gz +0 -0
- package/dist/assets/stata-BfvhQgBh.js.br +0 -0
- package/dist/assets/stata-BfvhQgBh.js.gz +0 -0
- package/dist/assets/stateDiagram-OKZ733FA-B-kn5M6g.js.br +0 -0
- package/dist/assets/stateDiagram-OKZ733FA-B-kn5M6g.js.gz +0 -0
- package/dist/assets/stylus-B6D30XZt.js.br +0 -0
- package/dist/assets/stylus-B6D30XZt.js.gz +0 -0
- package/dist/assets/surrealql-7gu956ad.js.br +0 -0
- package/dist/assets/surrealql-7gu956ad.js.gz +0 -0
- package/dist/assets/svelte-DSCVGEXc.js.br +0 -0
- package/dist/assets/svelte-DSCVGEXc.js.gz +0 -0
- package/dist/assets/swift-CyEgAFGc.js.br +0 -0
- package/dist/assets/swift-CyEgAFGc.js.gz +0 -0
- package/dist/assets/swimlanes-SLNWSIFB-sV1QkjXA.js.br +0 -0
- package/dist/assets/swimlanes-SLNWSIFB-sV1QkjXA.js.gz +0 -0
- package/dist/assets/synthwave-84-nFMaYfgc.js.br +0 -0
- package/dist/assets/synthwave-84-nFMaYfgc.js.gz +0 -0
- package/dist/assets/system-verilog-Dh5ihWbf.js.br +0 -0
- package/dist/assets/system-verilog-Dh5ihWbf.js.gz +0 -0
- package/dist/assets/systemd-BxMlprV5.js.br +0 -0
- package/dist/assets/systemd-BxMlprV5.js.gz +0 -0
- package/dist/assets/talonscript-CohzipZa.js.br +0 -0
- package/dist/assets/talonscript-CohzipZa.js.gz +0 -0
- package/dist/assets/tasl-DMoTqEGO.js.br +0 -0
- package/dist/assets/tasl-DMoTqEGO.js.gz +0 -0
- package/dist/assets/tcl-CZd0xW_V.js.br +0 -0
- package/dist/assets/tcl-CZd0xW_V.js.gz +0 -0
- package/dist/assets/templ-0sZ2htc8.js.br +0 -0
- package/dist/assets/templ-0sZ2htc8.js.gz +0 -0
- package/dist/assets/terraform-DswuEJGm.js.br +0 -0
- package/dist/assets/terraform-DswuEJGm.js.gz +0 -0
- package/dist/assets/tex-nulmLfzO.js.br +0 -0
- package/dist/assets/tex-nulmLfzO.js.gz +0 -0
- package/dist/assets/timeline-definition-Z64GVDOM-DMClsS2j.js.br +0 -0
- package/dist/assets/timeline-definition-Z64GVDOM-DMClsS2j.js.gz +0 -0
- package/dist/assets/tokyo-night-oM2G3aXe.js.br +0 -0
- package/dist/assets/tokyo-night-oM2G3aXe.js.gz +0 -0
- package/dist/assets/toml-CcmNWLt0.js.br +0 -0
- package/dist/assets/toml-CcmNWLt0.js.gz +0 -0
- package/dist/assets/ts-tags-97776d1y.js.br +0 -0
- package/dist/assets/ts-tags-97776d1y.js.gz +0 -0
- package/dist/assets/tsx-D0-aSICp.js.br +0 -0
- package/dist/assets/tsx-D0-aSICp.js.gz +0 -0
- package/dist/assets/turtle-ByJddavk.js.br +0 -0
- package/dist/assets/turtle-ByJddavk.js.gz +0 -0
- package/dist/assets/twig-C13VO0dK.js.br +0 -0
- package/dist/assets/twig-C13VO0dK.js.gz +0 -0
- package/dist/assets/typescript-ITQieXu3.js.br +0 -0
- package/dist/assets/typescript-ITQieXu3.js.gz +0 -0
- package/dist/assets/typespec-BRdr0IET.js.br +0 -0
- package/dist/assets/typespec-BRdr0IET.js.gz +0 -0
- package/dist/assets/typst-1SSu9v36.js.br +0 -0
- package/dist/assets/typst-1SSu9v36.js.gz +0 -0
- package/dist/assets/ui-components-q_9kKTqi.js +0 -72
- package/dist/assets/ui-components-q_9kKTqi.js.br +0 -0
- package/dist/assets/ui-components-q_9kKTqi.js.gz +0 -0
- package/dist/assets/ui-layout-nESZUqD7.js +0 -1
- package/dist/assets/ui-layout-nESZUqD7.js.br +0 -0
- package/dist/assets/ui-layout-nESZUqD7.js.gz +0 -0
- package/dist/assets/use-book-data-BpISrpLC.js.br +0 -0
- package/dist/assets/use-book-data-BpISrpLC.js.gz +0 -0
- package/dist/assets/usePackageL10n-9fP2GgDK.js.br +0 -0
- package/dist/assets/usePackageL10n-9fP2GgDK.js.gz +0 -0
- package/dist/assets/useSettingsLabel-QE1nXNTt.js +0 -1
- package/dist/assets/useSettingsLabel-QE1nXNTt.js.br +0 -0
- package/dist/assets/useSettingsLabel-QE1nXNTt.js.gz +0 -0
- package/dist/assets/utils-CFdPTF34.js +0 -1
- package/dist/assets/utils-CFdPTF34.js.br +0 -0
- package/dist/assets/utils-CFdPTF34.js.gz +0 -0
- package/dist/assets/v-DBj4K9d_.js.br +0 -0
- package/dist/assets/v-DBj4K9d_.js.gz +0 -0
- package/dist/assets/vala-zf12oZj6.js.br +0 -0
- package/dist/assets/vala-zf12oZj6.js.gz +0 -0
- package/dist/assets/vb-DOwzaHZ0.js.br +0 -0
- package/dist/assets/vb-DOwzaHZ0.js.gz +0 -0
- package/dist/assets/vendor-charts-DAI87uet.js.br +0 -0
- package/dist/assets/vendor-charts-DAI87uet.js.gz +0 -0
- package/dist/assets/vendor-dndkit-CQdzTF9d.js.br +0 -0
- package/dist/assets/vendor-dndkit-CQdzTF9d.js.gz +0 -0
- package/dist/assets/vendor-i18n-DeMInx63.js.br +0 -0
- package/dist/assets/vendor-i18n-DeMInx63.js.gz +0 -0
- package/dist/assets/vendor-icons-core-B25E_7o5.js.br +0 -0
- package/dist/assets/vendor-icons-core-B25E_7o5.js.gz +0 -0
- package/dist/assets/vendor-markdown-DjBjpmKk.js.br +0 -0
- package/dist/assets/vendor-markdown-DjBjpmKk.js.gz +0 -0
- package/dist/assets/vendor-objectstack-CVsc1isW.js +0 -186
- package/dist/assets/vendor-objectstack-CVsc1isW.js.br +0 -0
- package/dist/assets/vendor-objectstack-CVsc1isW.js.gz +0 -0
- package/dist/assets/vendor-radix-D1dussIM.js.br +0 -0
- package/dist/assets/vendor-radix-D1dussIM.js.gz +0 -0
- package/dist/assets/vendor-react-BgOXCBVK.js.br +0 -0
- package/dist/assets/vendor-react-BgOXCBVK.js.gz +0 -0
- package/dist/assets/vendor-sentry-DlmtNsBO.js.br +0 -0
- package/dist/assets/vendor-sentry-DlmtNsBO.js.gz +0 -0
- package/dist/assets/vendor-ui-utils-BGw4RtYu.js.br +0 -0
- package/dist/assets/vendor-ui-utils-BGw4RtYu.js.gz +0 -0
- package/dist/assets/vendor-zod-CBDIIwrA.js.br +0 -0
- package/dist/assets/vendor-zod-CBDIIwrA.js.gz +0 -0
- package/dist/assets/vennDiagram-T6HMQDX7-CrP23lgd.js.br +0 -0
- package/dist/assets/vennDiagram-T6HMQDX7-CrP23lgd.js.gz +0 -0
- package/dist/assets/verilog-B2gwz-sJ.js.br +0 -0
- package/dist/assets/verilog-B2gwz-sJ.js.gz +0 -0
- package/dist/assets/vesper-DdrHHSXu.js.br +0 -0
- package/dist/assets/vesper-DdrHHSXu.js.gz +0 -0
- package/dist/assets/vhdl-BroJfC0k.js.br +0 -0
- package/dist/assets/vhdl-BroJfC0k.js.gz +0 -0
- package/dist/assets/viml-DvXPmvsu.js.br +0 -0
- package/dist/assets/viml-DvXPmvsu.js.gz +0 -0
- package/dist/assets/vitesse-black-fwtXNY1n.js.br +0 -0
- package/dist/assets/vitesse-black-fwtXNY1n.js.gz +0 -0
- package/dist/assets/vitesse-dark-BZCL-v6S.js.br +0 -0
- package/dist/assets/vitesse-dark-BZCL-v6S.js.gz +0 -0
- package/dist/assets/vitesse-light-VbXTXTou.js.br +0 -0
- package/dist/assets/vitesse-light-VbXTXTou.js.gz +0 -0
- package/dist/assets/vue-Bq5B5kjG.js.br +0 -0
- package/dist/assets/vue-Bq5B5kjG.js.gz +0 -0
- package/dist/assets/vue-html-d0F-gcUX.js.br +0 -0
- package/dist/assets/vue-html-d0F-gcUX.js.gz +0 -0
- package/dist/assets/vue-vine-C_jSoY9V.js.br +0 -0
- package/dist/assets/vue-vine-C_jSoY9V.js.gz +0 -0
- package/dist/assets/vyper-CgoNMtux.js.br +0 -0
- package/dist/assets/vyper-CgoNMtux.js.gz +0 -0
- package/dist/assets/wardleyDiagram-T6FBY63Y-DSw6poZ6.js.br +0 -0
- package/dist/assets/wardleyDiagram-T6FBY63Y-DSw6poZ6.js.gz +0 -0
- package/dist/assets/wasm-BnjxR4X6.js.br +0 -0
- package/dist/assets/wasm-BnjxR4X6.js.gz +0 -0
- package/dist/assets/wasm-ByWQv1Qj.js.br +0 -0
- package/dist/assets/wasm-ByWQv1Qj.js.gz +0 -0
- package/dist/assets/wenyan-C8pVoKbM.js.br +0 -0
- package/dist/assets/wenyan-C8pVoKbM.js.gz +0 -0
- package/dist/assets/wgsl-BsKzXJz4.js.br +0 -0
- package/dist/assets/wgsl-BsKzXJz4.js.gz +0 -0
- package/dist/assets/wikitext-ClFFjSW2.js.br +0 -0
- package/dist/assets/wikitext-ClFFjSW2.js.gz +0 -0
- package/dist/assets/wit-DdvCle-K.js.br +0 -0
- package/dist/assets/wit-DdvCle-K.js.gz +0 -0
- package/dist/assets/wolfram-DLL8P-h_.js.br +0 -0
- package/dist/assets/wolfram-DLL8P-h_.js.gz +0 -0
- package/dist/assets/xml-BgwO9svv.js.br +0 -0
- package/dist/assets/xml-BgwO9svv.js.gz +0 -0
- package/dist/assets/xsl-Ci-Eh2uW.js.br +0 -0
- package/dist/assets/xsl-Ci-Eh2uW.js.gz +0 -0
- package/dist/assets/xychartDiagram-ELKLHX3M-BVUFqBDL.js.br +0 -0
- package/dist/assets/xychartDiagram-ELKLHX3M-BVUFqBDL.js.gz +0 -0
- package/dist/assets/yaml-BnkSoqfe.js.br +0 -0
- package/dist/assets/yaml-BnkSoqfe.js.gz +0 -0
- package/dist/assets/zenscript-BnlCZFoB.js.br +0 -0
- package/dist/assets/zenscript-BnlCZFoB.js.gz +0 -0
- package/dist/assets/zig-CMLA9XwU.js.br +0 -0
- package/dist/assets/zig-CMLA9XwU.js.gz +0 -0
- package/dist/index.html.br +0 -0
- package/dist/index.html.gz +0 -0
- package/dist/stats.html +0 -4950
- package/dist/vite.svg.br +0 -0
- package/dist/vite.svg.gz +0 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./ui-components-BL3SEdAz.css","./plugin-dashboard-DnNKJB60.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{o as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{a as n,c as r,d as i,f as a,g as o,h as s,l as c,m as l,o as u,p as d,r as f,s as p,u as m,y as h}from"./vendor-react-BgOXCBVK.js";import{_ as g,b as _,c as v,d as y,l as b,n as x,o as S,s as C,u as w,v as T,x as E}from"./infrastructure-ChmEYj6c.js";import{H as D,K as O,Q as k,T as A,X as j,Z as M,et as N,w as ee}from"./vendor-objectstack-DneBps14.js";import{A as P,Ar as F,At as te,D as ne,E as I,Ft as L,I as R,Jn as re,Nt as ie,O as z,Q as ae,Sr as B,T as V,Vn as H,Xn as oe,Z as se,_ as ce,b as le,c as ue,d as de,f as fe,g as pe,gn as U,gt as me,hr as he,ht as W,it as ge,j as _e,lt as ve,mt as ye,nt as be,q as G,rt as xe,sr as Se,ur as Ce,ut as we,y as Te,yt as Ee,zn as K}from"./framework-B8ndNKrd.js";import{$ as De,$a as Oe,$c as q,$i as ke,$t as Ae,Ai as je,An as Me,Ao as Ne,Ba as Pe,Bn as Fe,Br as Ie,Bs as Le,Cn as Re,Cs as ze,Dc as Be,Do as Ve,E as He,Ea as Ue,Ec as We,En as Ge,Eo as Ke,Er as qe,Es as Je,Fc as Ye,Fo as Xe,Go as Ze,Gr as Qe,Ha as $e,Hi as et,Hn as tt,Hr as nt,Ii as rt,Is as it,It as at,Jc as ot,Jt as st,Kc as ct,Ki as lt,Lc as ut,Li as dt,Ln as ft,Lt as pt,Mc as mt,Mi as ht,Mn as gt,Mo as _t,Mr as vt,Na as yt,Nc as bt,Ni as xt,Nn as St,Nr as Ct,Ns as wt,Oo as Tt,Or as Et,Pr as Dt,Ps as Ot,Q as kt,Qi as At,Qr as jt,Qt as Mt,Rn as Nt,Rr as Pt,Rs as Ft,Rt as It,Sc as Lt,Sn as Rt,Ss as zt,Tn as Bt,To as Vt,Tr as Ht,Ua as Ut,Un as Wt,Uo as Gt,Ur as Kt,Va as qt,Vi as Jt,Vn as Yt,Vr as Xt,Vs as Zt,Wc as Qt,Wi as $t,Wr as en,Xo as tn,Xs as nn,Xt as rn,Y as an,Ya as on,Yi as sn,Yo as cn,Yt as ln,Zi as un,Zs as dn,Zt as fn,_a as pn,_i as mn,_n as hn,_o as J,_r as gn,ac as _n,an as vn,ao as yn,bi as bn,bn as xn,br as Sn,bs as Cn,ca as wn,ci as Tn,cn as En,cr as Dn,da as On,dc as kn,di as An,dr as jn,dt as Mn,ea as Nn,ei as Pn,el as Fn,en as In,eo as Ln,es as Rn,et as zn,fa as Bn,fo as Vn,fr as Hn,gn as Un,go as Wn,gr as Gn,hc as Kn,hi as qn,hn as Jn,ho as Yn,hr as Xn,hs as Zn,ht as Qn,ia as $n,ii as er,in as tr,ji as nr,jn as rr,jr as ir,js as ar,jt as or,kr as sr,kt as cr,li as lr,lo as ur,lr as dr,ls as fr,mc as pr,mi as mr,mn as hr,mr as gr,ms as _r,mt as vr,na as yr,nc as br,ni as xr,nt as Sr,oa as Cr,oc as wr,on as Tr,oo as Er,os as Dr,pa as Or,pc as kr,pi as Ar,pn as jr,po as Mr,pr as Nr,qa as Pr,qn as Fr,qo as Ir,qr as Y,qs as Lr,rc as Rr,ri as zr,rn as Br,rt as Vr,sl as Hr,so as Ur,ta as Wr,to as Gr,uc as Kr,ui as qr,uo as Jr,ur as Yr,ut as Xr,vc as Zr,vn as Qr,vr as $r,vt as ei,wc as ti,wn as ni,xi as ri,xn as ii,xs as ai,yn as oi,yr as si,z as ci,za as li,zn as ui,zo as di,zr as fi,zs as pi,zt as mi}from"./ui-components-mPgY5chB.js";import{n as hi,r as X}from"./vendor-ui-utils-BGw4RtYu.js";import{n as gi}from"./data-adapter-yS4exRPT.js";import{r as _i,t as vi}from"./AdapterProvider-BpWMSLQH.js";import{a as yi,n as bi,o as xi,s as Si,t as Ci}from"./plugin-form-Bv0Hi0E6.js";import{a as wi,i as Ti,o as Ei,r as Di,s as Oi,t as ki}from"./MetadataProvider-CnYsadFP.js";import{a as Ai,t as ji}from"./assistantBus-DNogw1P-.js";import{n as Mi,r as Ni,t as Pi}from"./ExpressionProvider-qmd0nVCn.js";import{B as Fi,D as Ii,E as Li,H as Ri,I as zi,L as Bi,P as Vi,R as Hi,S as Ui,T as Wi,U as Gi,V as Ki,W as qi,_ as Ji,a as Yi,b as Xi,c as Zi,d as Qi,f as $i,g as ea,h as ta,i as na,l as ra,m as ia,o as aa,p as oa,q as sa,s as ca,t as la,u as ua,v as da,w as fa,x as pa,y as ma,z as ha}from"./RecordDetailView-DrVbrbaN.js";import{a as ga,i as _a,n as va,o as ya,r as ba,t as xa}from"./utils-L-_x2yPF.js";import{C as Sa,E as Ca,S as wa,T as Ta,_ as Ea,b as Da,d as Oa,f as ka,g as Aa,h as ja,i as Ma,l as Na,m as Pa,p as Fa,r as Ia,t as La,u as Ra,v as za,w as Ba,x as Va,y as Ha}from"./plugin-chatbot-DsLGdfGx.js";import{A as Ua,C as Wa,D as Ga,E as Ka,O as qa,S as Ja,T as Ya,_ as Xa,a as Za,b as Qa,c as $a,d as eo,f as to,g as no,h as ro,i as io,j as ao,k as oo,l as so,m as co,n as lo,o as uo,p as fo,r as po,s as mo,u as ho,v as go,w as _o,x as vo,y as yo}from"./metadata-admin-DqAvOmNf.js";import{C as bo,D as xo,S as So,r as Co,x as wo,y as To}from"./MarketplaceAccessDenied-t8A0k9OX.js";import{t as Eo}from"./preferLocal-CKqyhTP9.js";import{i as Do,n as Oo,r as ko,t as Ao}from"./ui-layout-CRcyxP_X.js";import{_ as jo,a as Mo,c as No,d as Po,g as Fo,h as Io,l as Lo,n as Ro,o as zo,s as Bo,t as Vo,u as Ho,v as Uo,y as Wo}from"./vendor-dndkit-CQdzTF9d.js";import{n as Go}from"./plugin-grid-gHcTrjs3.js";import{c as Ko,o as qo,s as Jo}from"./InterfaceListPage-CfhSyYAw.js";import{t as Yo}from"./getIcon-QmYxLBSb.js";import{h as Xo,i as Zo,r as Z}from"./i18n-DLOdKEiB.js";import{o as Qo,s as $o}from"./createDerive-C1PaRnFZ.js";import{H as es,I as ts,R as ns,U as rs,W as is,X as as,Y as os,Z as ss,at as cs,ct as ls,d as us,et as ds,h as fs,it as ps,j as ms,lt as hs,m as gs,nt as _s,ot as vs,rt as ys,st as bs,tt as xs}from"./ReportDefaultInspector-BbbhDn34.js";import{n as Ss,t as Cs}from"./CreateViewDialog-CUvjCA1o.js";import{d as ws}from"./plugins-views-BxwTmeut.js";import{c as Ts,d as Es,l as Ds,u as Os}from"./plugin-view-CgDs-8T5.js";import{n as ks,t as As}from"./MetadataInspector-qQ85bFun.js";import{o as js,r as Ms,t as Ns}from"./runtime-metadata-persistence-DDZN-tZg.js";import{n as Ps}from"./ReportView-D_soBKL6.js";import{t as Fs}from"./ManagedByBadge-DgsrLolr.js";import"./RecordFormPage-Bs9wX-M6.js";import"./DashboardView-Cr-Q-16_.js";import"./PageView-q1XSwpVo.js";import"./SearchResultsPage--Beqyte8.js";import"./MarketplacePage-CZjDbg5G.js";import{n as Is}from"./MarketplacePackagePage-XSdk80Dd.js";import"./MarketplaceInstalledPage-CRe2BiM2.js";import{n as Ls}from"./componentRegistry-ByxoJqMW.js";var Q=f(),$=e(h(),1);function Rs({objectName:e,objectLabel:t,dataSource:n,onEdit:r,onRefresh:i,onConfirm:o,onToast:s}){let c=a(),{appName:u}=l(),{t:d}=V(),f=`/apps/${u}`,{execute:p,loading:m,error:h,runner:g}=W({context:{objectName:e,objectLabel:t||e,baseUrl:f},onConfirm:o,onToast:s});return(0,$.useEffect)(()=>{g.registerHandler(`create`,async()=>(r?.(null),{success:!0})),g.registerHandler(`delete`,async r=>{let a=Array.isArray(r.params?.records)?r.params.records.filter(e=>e?.id!=null):null;if(a&&a.length>1){let r=await Promise.allSettled(a.map(t=>n.delete(e,t.id))),o=r.filter(e=>e.status===`rejected`).length,s=r.length-o;return i?.(),o===0?(X.success(d(`objectActions.bulkDeleteSuccess`,{count:s,label:t||e,defaultValue:`Deleted ${s} ${t||e} records`})),{success:!0,reload:!0,silent:!0}):(X.error(d(`objectActions.bulkDeletePartial`,{succeeded:s,failed:o,defaultValue:`${s} deleted, ${o} failed`})),{success:!1})}let o=r.params?.recordId??r.params?.record?.id??a?.[0]?.id??r.recordId;if(!o)return{success:!1,error:d(`objectActions.noRecordId`)};let s=!1;if(e===`sys_permission_set`)try{s=(r.params?.record?.managed_by===void 0?await n.findOne(e,o):r.params.record)?.managed_by===`package`}catch{}try{return await n.delete(e,o),i?.(),X.success(s?d(`objectActions.resetPackageSetSuccess`,{defaultValue:`Permission set reset to its shipped baseline`}):d(`objectActions.deleteSuccess`,{label:t||e})),{success:!0,reload:!0,silent:!0}}catch(n){return X.error(d(`objectActions.deleteFailed`,{label:t||e}),{description:n.message}),{success:!1}}}),g.registerHandler(`navigate`,async e=>{let t=e.params?.url||e.url;return t&&c(t.startsWith(`/`)?t:`${f}/${t}`),{success:!0}}),g.registerHandler(`refresh`,async()=>(i?.(),{success:!0,reload:!0}))},[g,e,n,r,i,c,f,d,t]),{execute:p,create:(0,$.useCallback)(()=>{r?.(null)},[r]),deleteRecord:(0,$.useCallback)(async(t,n)=>{let r=e===`sys_permission_set`&&n?.managed_by===`package`;return p({type:`delete`,confirmText:r?d(`objectActions.resetPackageSetConfirm`,{defaultValue:`This permission set ships with an installed package and cannot be removed. Deleting resets it to the shipped baseline and discards your environment customization. Continue?`}):d(`objectActions.deleteConfirm`),params:n?{recordId:t,record:n}:{recordId:t}})},[p,d,e]),navigateToView:(0,$.useCallback)(t=>{c(`${f}/${e}/view/${t}`)},[c,f,e]),navigateToRecord:(0,$.useCallback)(t=>{c(`${f}/${e}/record/${encodeURIComponent(t)}`)},[c,f,e]),loading:m,error:h}}function zs(e){return e==null?[]:Array.isArray(e)?e:[e]}function Bs(e,t){let{alias:n,value:r=`1`,replace:i=!0}=t??{},[a,o]=s(),c=(0,$.useMemo)(()=>zs(n),[n]),l=(0,$.useCallback)(t=>t.get(e)===r||c.some(e=>t.get(e)===r),[e,r,c]),u=l(a),d=(0,$.useCallback)(t=>{if(t===l(a))return;let n=new URLSearchParams(a);if(t){n.set(e,r);for(let e of c)n.delete(e)}else{n.delete(e);for(let e of c)n.delete(e)}o(n,{replace:i})},[l,a,o,e,r,c,i]);return{open:u,setOpen:d,openOverlay:(0,$.useCallback)(()=>d(!0),[d]),closeOverlay:(0,$.useCallback)(()=>d(!1),[d]),toggleOverlay:(0,$.useCallback)(()=>{o(t=>{let n=new URLSearchParams(t);if(l(n)){n.delete(e);for(let e of c)n.delete(e)}else{n.set(e,r);for(let e of c)n.delete(e)}return n},{replace:i})},[o,l,e,r,c,i])}}var Vs={info:(e,t)=>X.info(e,t),success:(e,t)=>X.success(e,t),warning:(e,t)=>X.warning(e,t),error:(e,t)=>X.error(e,t)};function Hs(e,t){let n=Vs[e.severity]??Vs.info,r=e.actions?.[0],i=or(e.icon)?(0,Q.jsx)(cr,{name:e.icon,className:`h-4 w-4`}):void 0,a=xe(e,t),o=a?Vr[a]:void 0;n(e.title,{description:e.message,duration:e.duration===0?1/0:e.duration,dismissible:e.dismissible,...i?{icon:i}:{},...o?{position:o}:{},...r?{action:{label:r.label,onClick:r.onClick}}:{}})}var Us=(0,$.createContext)({theme:`system`,setTheme:()=>null});function Ws({children:e,defaultTheme:t=`system`,storageKey:n=`vite-ui-theme`,...r}){let[i,a]=(0,$.useState)(()=>localStorage.getItem(n)||t);(0,$.useEffect)(()=>{let e=window.document.documentElement;if(e.classList.remove(`light`,`dark`),i===`auto`||i===`system`){let t=window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`;e.classList.add(t);return}e.classList.add(i)},[i]);let o={theme:i,setTheme:e=>{localStorage.setItem(n,e),a(e)}};return(0,Q.jsx)(Us.Provider,{...r,value:o,children:e})}var Gs=()=>{let e=(0,$.useContext)(Us);if(e===void 0)throw Error(`useTheme must be used within a ThemeProvider`);return e};function Ks(){let e=((typeof document<`u`?document.documentElement.lang:``)||(typeof navigator<`u`?navigator.language:``)||`en`).toLowerCase().split(`-`)[0],t=I[e]?.console;return!t||t===z.console?z.console:{...z.console,...t,loadingSteps:{...z.console.loadingSteps,...t.loadingSteps},error:{...z.console.error,...t.error},actions:{...z.console.actions,...t.actions}}}function qs({message:e,error:t,onRetry:n,retrying:r}){let[i,a]=(0,$.useState)(0),o=Ks(),s=(0,$.useMemo)(()=>[o.loadingSteps.connecting,o.loadingSteps.loadingConfig,o.loadingSteps.preparingWorkspace],[o]);return(0,$.useEffect)(()=>{if(e||t)return;let n=setInterval(()=>{a(e=>Math.min(e+1,s.length-1))},1200);return()=>clearInterval(n)},[e,t,s.length]),(0,Q.jsx)(`div`,{className:`flex flex-col items-center justify-center h-screen bg-background`,children:(0,Q.jsxs)(`div`,{className:`flex flex-col items-center gap-6`,children:[(0,Q.jsxs)(`div`,{className:`relative`,children:[(0,Q.jsx)(`div`,{className:`absolute inset-0 bg-primary/20 rounded-2xl blur-xl animate-pulse`}),(0,Q.jsx)(`div`,{className:`relative bg-linear-to-br from-primary to-primary/80 p-4 rounded-2xl shadow-lg`,children:wo()?(0,Q.jsx)(`img`,{src:wo(),alt:bo(),className:`h-10 w-10 object-contain`}):(0,Q.jsx)(ar,{className:`h-10 w-10 text-primary-foreground`})})]}),(0,Q.jsxs)(`div`,{className:`text-center space-y-2`,children:[(0,Q.jsx)(`h1`,{className:`text-2xl font-bold tracking-tight`,children:bo()}),(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:o.initializing})]}),t?(0,Q.jsxs)(`div`,{className:`flex flex-col items-center gap-4 max-w-md w-full px-6`,children:[(0,Q.jsxs)(`div`,{className:`flex flex-col items-center gap-3 p-5 rounded-lg border border-destructive/30 bg-destructive/5 w-full`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 text-destructive`,children:[(0,Q.jsx)(_n,{className:`h-5 w-5 shrink-0`}),(0,Q.jsx)(`span`,{className:`text-sm font-semibold`,children:o.error.connectionFailed})]}),(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground text-center break-words`,children:t}),(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground text-center`,children:o.error.checkServer})]}),n&&(0,Q.jsx)(Y,{onClick:n,disabled:r,variant:`default`,size:`sm`,className:`gap-2`,children:r?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(J,{className:`h-4 w-4 animate-spin`}),o.actions.retrying]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(pn,{className:`h-4 w-4`}),o.actions.retry]})})]}):e?(0,Q.jsxs)(`div`,{className:`flex items-center gap-3 px-4 py-2 bg-muted/50 rounded-full`,children:[(0,Q.jsx)(Xr,{className:`h-4 w-4 text-primary`}),(0,Q.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:e})]}):(0,Q.jsxs)(`div`,{className:`flex flex-col gap-2 w-64`,children:[s.map((e,t)=>(0,Q.jsxs)(`div`,{className:`flex items-center gap-2.5 text-sm transition-opacity duration-300`,style:{opacity:t<=i?1:.3},children:[t<i?(0,Q.jsx)(br,{className:`h-4 w-4 text-primary shrink-0`}):t===i?(0,Q.jsx)(J,{className:`h-4 w-4 text-primary shrink-0 animate-spin`}):(0,Q.jsx)(`div`,{className:`h-4 w-4 rounded-full border border-muted-foreground/30 shrink-0`}),(0,Q.jsx)(`span`,{className:t<=i?`text-foreground`:`text-muted-foreground`,children:e})]},e)),(0,Q.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:o.loadingHint})]})]})})}var Js=Vi();function Ys(){let{remediationRequired:e}=T();return e?(0,Q.jsx)(`div`,{className:`fixed inset-0 z-[200] flex items-center justify-center bg-background/95 p-4 backdrop-blur-sm`,children:(0,Q.jsx)(`div`,{className:`w-full max-w-md rounded-xl border bg-card p-6 shadow-xl`,children:e.code===`PASSWORD_EXPIRED`?(0,Q.jsx)(Zs,{message:e.message}):(0,Q.jsx)($s,{message:e.message})})}):null}function Xs(){let{signOut:e}=T(),{t}=V();return(0,Q.jsx)(`button`,{type:`button`,onClick:()=>{e()},className:`mt-4 w-full text-center text-xs text-muted-foreground hover:text-foreground hover:underline`,children:t(`auth.remediation.signOut`)})}function Zs({message:e}){let{changePassword:t,setRemediationRequired:n}=T(),{t:r}=V(),[i,a]=(0,$.useState)(``),[o,s]=(0,$.useState)(``),[c,l]=(0,$.useState)(``),[u,d]=(0,$.useState)(!1),[f,p]=(0,$.useState)(null);return(0,Q.jsxs)(`form`,{onSubmit:async e=>{if(e.preventDefault(),p(null),o!==c){p(r(`auth.remediation.password.mismatch`));return}d(!0);try{await t(i,o),n(null),window.location.reload()}catch(e){p(e instanceof Error?e.message:r(`auth.remediation.password.failed`)),d(!1)}},className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h2`,{className:`text-lg font-semibold`,children:r(`auth.remediation.password.title`)}),(0,Q.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:e||r(`auth.remediation.password.fallbackMessage`)})]}),(0,Q.jsxs)(`div`,{className:`space-y-2`,children:[(0,Q.jsx)(ft,{htmlFor:`rem-cur`,children:r(`auth.remediation.password.current`)}),(0,Q.jsx)(St,{id:`rem-cur`,type:`password`,autoComplete:`current-password`,value:i,onChange:e=>a(e.target.value),required:!0})]}),(0,Q.jsxs)(`div`,{className:`space-y-2`,children:[(0,Q.jsx)(ft,{htmlFor:`rem-new`,children:r(`auth.remediation.password.next`)}),(0,Q.jsx)(St,{id:`rem-new`,type:`password`,autoComplete:`new-password`,value:o,onChange:e=>s(e.target.value),required:!0})]}),(0,Q.jsxs)(`div`,{className:`space-y-2`,children:[(0,Q.jsx)(ft,{htmlFor:`rem-conf`,children:r(`auth.remediation.password.confirm`)}),(0,Q.jsx)(St,{id:`rem-conf`,type:`password`,autoComplete:`new-password`,value:c,onChange:e=>l(e.target.value),required:!0})]}),f?(0,Q.jsx)(`p`,{className:`text-sm text-destructive`,children:f}):null,(0,Q.jsx)(Y,{type:`submit`,className:`w-full`,disabled:u,children:r(u?`auth.remediation.password.submitting`:`auth.remediation.password.submit`)}),(0,Q.jsx)(Xs,{})]})}function Qs({uri:e}){let[t,n]=(0,$.useState)(null);return(0,Q.jsx)(`div`,{className:`flex justify-center rounded-md border bg-white p-3`,children:t?(0,Q.jsx)(`span`,{className:`text-sm text-destructive`,children:t}):(0,Q.jsx)(`canvas`,{ref:t=>{!t||!e||(0,Js.toCanvas)(t,e,{width:184,margin:1},e=>{e&&n(e.message)})}})})}function $s({message:e}){let{enrollTotp:t,verifyTotp:n,setRemediationRequired:r}=T(),{t:i}=V(),[a,o]=(0,$.useState)(`password`),[s,c]=(0,$.useState)(``),[l,u]=(0,$.useState)(``),[d,f]=(0,$.useState)(``),[p,m]=(0,$.useState)([]),[h,g]=(0,$.useState)(!1),[_,v]=(0,$.useState)(null);return a===`password`?(0,Q.jsxs)(`form`,{onSubmit:async e=>{e.preventDefault(),v(null),g(!0);try{let{totpURI:e,backupCodes:n}=await t(s);f(e),m(n??[]),o(`verify`)}catch(e){v(e instanceof Error?e.message:i(`auth.remediation.mfa.enrollFailed`))}finally{g(!1)}},className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h2`,{className:`text-lg font-semibold`,children:i(`auth.remediation.mfa.title`)}),(0,Q.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:e||i(`auth.remediation.mfa.fallbackMessage`)})]}),(0,Q.jsxs)(`div`,{className:`space-y-2`,children:[(0,Q.jsx)(ft,{htmlFor:`rem-pw`,children:i(`auth.remediation.mfa.confirmPassword`)}),(0,Q.jsx)(St,{id:`rem-pw`,type:`password`,autoComplete:`current-password`,value:s,onChange:e=>c(e.target.value),required:!0})]}),_?(0,Q.jsx)(`p`,{className:`text-sm text-destructive`,children:_}):null,(0,Q.jsx)(Y,{type:`submit`,className:`w-full`,disabled:h,children:i(h?`auth.remediation.mfa.preparing`:`auth.remediation.mfa.continue`)}),(0,Q.jsx)(Xs,{})]}):(0,Q.jsxs)(`form`,{onSubmit:async e=>{e.preventDefault(),v(null),g(!0);try{await n(l.trim()),r(null),window.location.reload()}catch(e){v(e instanceof Error?e.message:i(`auth.remediation.mfa.invalidCode`)),g(!1)}},className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h2`,{className:`text-lg font-semibold`,children:i(`auth.remediation.mfa.scanTitle`)}),(0,Q.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:i(`auth.remediation.mfa.scanBody`)})]}),d?(0,Q.jsx)(Qs,{uri:d}):null,p.length>0?(0,Q.jsxs)(`details`,{className:`rounded-md border bg-muted/40 p-3 text-xs`,children:[(0,Q.jsx)(`summary`,{className:`cursor-pointer font-medium`,children:i(`auth.remediation.mfa.backupTitle`)}),(0,Q.jsx)(`p`,{className:`mt-1 text-muted-foreground`,children:i(`auth.remediation.mfa.backupBody`)}),(0,Q.jsx)(`div`,{className:`mt-2 grid grid-cols-2 gap-1 font-mono`,children:p.map(e=>(0,Q.jsx)(`span`,{children:e},e))})]}):null,(0,Q.jsxs)(`div`,{className:`space-y-2`,children:[(0,Q.jsx)(ft,{htmlFor:`rem-code`,children:i(`auth.remediation.mfa.codeLabel`)}),(0,Q.jsx)(St,{id:`rem-code`,inputMode:`numeric`,autoComplete:`one-time-code`,maxLength:8,placeholder:`123456`,value:l,onChange:e=>u(e.target.value),required:!0})]}),_?(0,Q.jsx)(`p`,{className:`text-sm text-destructive`,children:_}):null,(0,Q.jsx)(Y,{type:`submit`,className:`w-full`,disabled:h,children:i(h?`auth.remediation.mfa.verifying`:`auth.remediation.mfa.verify`)}),(0,Q.jsx)(Xs,{})]})}function ec(){let{user:e,session:t,refreshSession:n}=T(),{t:r}=V(),[i,a]=(0,$.useState)(!1),[o,s]=(0,$.useState)(null),[c,l]=(0,$.useState)(!1),u=(0,$.useMemo)(()=>_(),[]),d=t?.impersonatedBy,f=(0,$.useCallback)(async()=>{a(!0),s(null);try{let e=await u(`/api/v1/auth/admin/stop-impersonating`,{method:`POST`,headers:{"Content-Type":`application/json`},credentials:`include`,body:`{}`});if(!e.ok){let t=await e.json().catch(()=>null);throw Error(t?.error?.message??t?.message??`HTTP ${e.status}`)}await n()}catch(e){let t=e instanceof Error?e.message:String(e);s(t),X.error(r(`impersonation.banner.stopFailed`,{defaultValue:`Could not stop impersonating: {{reason}}`,reason:t}))}finally{l(!0),a(!1)}},[u,n,r]);if(!d)return null;let p=e?.name||e?.email||e?.id||``,m=c&&!i&&!o;return(0,Q.jsxs)(`div`,{role:`status`,"data-testid":`impersonation-banner`,className:`sticky top-0 z-50 flex flex-wrap items-center gap-x-3 gap-y-1 border-b border-red-300/70 bg-red-50 px-4 py-2 text-sm text-red-900 dark:border-red-800/60 dark:bg-red-950/50 dark:text-red-100`,children:[(0,Q.jsx)(An,{className:`h-4 w-4 shrink-0`,"aria-hidden":`true`}),(0,Q.jsxs)(`p`,{className:`min-w-0 flex-1`,children:[(0,Q.jsx)(`span`,{className:`font-medium`,children:r(`impersonation.banner.message`,{defaultValue:`You are impersonating {{user}} — every action is recorded as them.`,user:p})}),` `,(0,Q.jsx)(`span`,{className:`opacity-80`,children:r(`impersonation.banner.startedBy`,{defaultValue:`Started by administrator {{admin}}.`,admin:d})})]}),(0,Q.jsx)(Y,{size:`sm`,variant:`outline`,onClick:f,disabled:i,"data-testid":`impersonation-stop`,children:i?r(`impersonation.banner.stopping`,{defaultValue:`Stopping…`}):r(`impersonation.banner.stop`,{defaultValue:`Stop impersonating`})}),o?(0,Q.jsx)(`p`,{role:`alert`,"data-testid":`impersonation-stop-error`,className:`w-full font-medium`,children:r(`impersonation.banner.stopFailed`,{defaultValue:`Could not stop impersonating: {{reason}}`,reason:o})}):null,m?(0,Q.jsx)(`p`,{role:`alert`,"data-testid":`impersonation-not-restored`,className:`w-full font-medium`,children:r(`impersonation.banner.notRestored`,{defaultValue:`The server accepted the request but did not restore your administrator session — you are still impersonating {{user}}. Sign out and sign in again to end it.`,user:p})}):null]})}ec.displayName=`ImpersonationBanner`;function tc(){return(0,Q.jsx)(qs,{})}function nc({dataSource:e,children:t}){let{modalHandler:n,modalElement:r}=zi(e),i=fa({dataSource:e});return(0,Q.jsxs)(ve,{context:i.actionProviderProps.context,onConfirm:i.actionProviderProps.onConfirm,onToast:i.actionProviderProps.onToast,onNavigate:i.actionProviderProps.onNavigate,onParamCollection:i.actionProviderProps.onParamCollection,onResultDialog:i.actionProviderProps.onResultDialog,onModal:n,handlers:{api:i.apiHandler,flow:i.flowHandler,script:i.serverActionHandler},children:[t,i.dialogs,r]})}function rc({children:e}){return(0,Q.jsx)(Ws,{defaultTheme:`system`,storageKey:`object-ui-theme`,children:(0,Q.jsx)(be,{config:{defaultDuration:4e3,maxVisible:4},onToast:Hs,children:(0,Q.jsx)(pa,{children:(0,Q.jsx)(qi,{children:(0,Q.jsx)(ma,{children:(0,Q.jsx)(Ri,{children:(0,Q.jsxs)(oo,{children:[(0,Q.jsx)(ec,{}),(0,Q.jsx)($.Suspense,{fallback:(0,Q.jsx)(tc,{}),children:e}),(0,Q.jsx)(Ys,{}),(0,Q.jsx)(De,{}),(0,Q.jsx)(kt,{})]})})})})})})})}function ic({children:e}){return(0,Q.jsx)(vi,{children:(0,Q.jsx)(wi,{children:(0,Q.jsx)(oc,{children:e})})})}var ac=_i(_({sameOriginOnly:!0}));function oc({children:e}){let t=se(),{language:n}=V(),{isLoading:r}=T(),i=(0,$.useRef)(null);return t&&i.current!==null&&i.current!==n&&t.clearCache?.(),t&&(i.current=n),!t||r?(0,Q.jsx)(tc,{}):(0,Q.jsx)(te,{dataSource:t,apiFetch:ac,children:(0,Q.jsxs)(ki,{adapter:t,children:[(0,Q.jsx)(sc,{}),(0,Q.jsx)(nc,{dataSource:t,children:e})]},n)})}function sc(){let{user:e}=T(),t=se(),n=sa();return(0,$.useEffect)(()=>{if(!e?.id||!t){n(`favorites`,null),n(`recent`,null),n(`flowPaletteRecents`,null);return}let r=gi({dataSource:t,userId:e.id,key:`ui.favorites`}),i=gi({dataSource:t,userId:e.id,key:`ui.recent`}),a=gi({dataSource:t,userId:e.id,key:`ui.flow.palette.recents`});return n(`favorites`,r),n(`recent`,i),n(`flowPaletteRecents`,a),()=>{n(`favorites`,null),n(`recent`,null),n(`flowPaletteRecents`,null)}},[e?.id,t,n]),null}function cc({children:e}){let{activeOrganization:t,organizations:n,isOrganizationsLoading:r,getAuthConfig:i}=T(),[a,o]=(0,$.useState)(null);if((0,$.useEffect)(()=>{let e=!1;return i().then(t=>{e||o(t?.features?.multiOrgEnabled!==!1)}).catch(()=>{e||o(!1)}),()=>{e=!0}},[i]),r)return(0,Q.jsx)(tc,{});let s=n??[];if((s.length>0||t)&&!t)return(0,Q.jsx)(p,{to:`/organizations`,replace:!0});if(s.length===0&&!t){if(a===null)return(0,Q.jsx)(tc,{});if(a)return(0,Q.jsx)(p,{to:`/organizations`,replace:!0})}return(0,Q.jsx)(Q.Fragment,{children:e})}function lc({children:e,redirectTo:t=`/home`}){let{enabled:n,isLoading:r}=ao();return r?(0,Q.jsx)(tc,{}):n?(0,Q.jsx)(Q.Fragment,{children:e}):(0,Q.jsx)(p,{to:t,replace:!0})}function uc(){let e=i(),t=e.pathname.replace(/^\/system/,``),n=t?`/apps/setup/system${t}`:`/apps/setup/system`;return(0,Q.jsx)(p,{to:`${n}${e.search}${e.hash}`,replace:!0})}var dc=`com.objectstack.setup`,fc=`setup`;function pc(e){let t=e??[],n=t.find(e=>e?._packageId===`com.objectstack.setup`)??t.find(e=>e?.name===`setup`);return`/apps/${va(n)??`com.objectstack.setup`}`}function mc(){let{apps:e,loading:t}=ae(),n=i();if(t)return(0,Q.jsx)(tc,{});let r=pc(e);return(0,Q.jsx)(p,{to:`${r}${n.search}${n.hash}`,replace:!0})}function hc({appLabel:e,onOpenDock:t}){let{t:n}=V(),{openSeq:r}=Ai(),i=(0,$.useRef)(r);return(0,$.useEffect)(()=>{r!==i.current&&(i.current=r,t())},[r,t]),(0,Q.jsx)(`button`,{type:`button`,"aria-label":n(`topbar.openAssistant`,{defaultValue:`Open {{name}} assistant`,name:e}),onClick:t,className:`fixed bottom-20 right-6 z-50 flex h-14 w-14 items-center justify-center rounded-full bg-primary text-primary-foreground shadow-lg ring-1 ring-primary/20 transition-transform hover:scale-105 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 sm:bottom-6`,"data-testid":`console-chatbot-fab`,children:(0,Q.jsxs)(`svg`,{width:`22`,height:`22`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:[(0,Q.jsx)(`path`,{d:`M12 3v3`}),(0,Q.jsx)(`path`,{d:`M12 18v3`}),(0,Q.jsx)(`path`,{d:`M5.6 5.6l2.1 2.1`}),(0,Q.jsx)(`path`,{d:`M16.3 16.3l2.1 2.1`}),(0,Q.jsx)(`path`,{d:`M3 12h3`}),(0,Q.jsx)(`path`,{d:`M18 12h3`}),(0,Q.jsx)(`path`,{d:`M5.6 18.4l2.1-2.1`}),(0,Q.jsx)(`path`,{d:`M16.3 7.7l2.1-2.1`}),(0,Q.jsx)(`circle`,{cx:`12`,cy:`12`,r:`3`})]})})}function gc(e){let t=e?.issues;return Array.isArray(t)?t:[]}function _c(e){return`• ${e.path&&e.path.length>0?e.path:`(root)`} — ${e.message}`}function vc(e){let t=gc(e);return t.length>0?t.map(_c).join(`
|
|
3
|
+
`):e?.message??String(e)}var yc=`batch_aborted`;function bc(e){let t=e=>[`${e.type}/${e.name}: ${e.error}`,...(Array.isArray(e.issues)?e.issues:[]).map(e=>` ${_c(e)}`)].join(`
|
|
4
|
+
`),n=e.filter(e=>e.code===yc);if(n.length>0){let r=e.filter(e=>e.code!==yc);return[`Nothing was published — the batch rolled back (all-or-nothing).`,...r.length>0?r.map(t):n.slice(0,1).map(t),`(${n.length} other draft${n.length===1?``:`s`} aborted with it — fix the cause and publish again.)`].join(`
|
|
5
|
+
`)}return e.map(t).join(`
|
|
6
|
+
`)}var xc=[`sys_`,`ai_`,`cloud_`],Sc=[`formula`,`summary`,`autonumber`];function Cc(e){let t=e?.fields??e?.data?.fields??e?.item?.fields??{};return(Array.isArray(t)?t.map(e=>[e?.name,e]):Object.entries(t)).map(([e,t])=>({name:t?.name??e,label:t?.label??t?.name??e,type:t?.type??`text`,required:!!t?.required,options:t?.options})).filter(e=>e.name&&!Sc.includes(e.type))}function wc({file:e,dataSource:t,defaultObjectName:n,onDone:r}){let{t:i}=V(),a=(0,$.useMemo)(()=>_(),[]),[o,s]=(0,$.useState)(null),[c,l]=(0,$.useState)(n??``),[u,d]=(0,$.useState)(!1),[f,p]=(0,$.useState)(null),[m,h]=(0,$.useState)(!1);(0,$.useEffect)(()=>{let e=!1,t=``.replace(/\/+$/,``);return(async()=>{try{let r=await a(`${t}/api/v1/meta/object`,{method:`GET`,credentials:`include`});if(!r.ok)throw Error(String(r.status));let i=await r.json().catch(()=>null),o=i?.data?.items??i?.items??i?.data??(Array.isArray(i)?i:[]),u=(Array.isArray(o)?o:[]).map(e=>({name:e?.name,label:e?.label||e?.name})).filter(e=>e.name&&!xc.some(t=>e.name.startsWith(t)));if(e)return;if(s(u),!c&&u.length){let e=n&&u.find(e=>e.name===n);l(e?n:u[0].name)}}catch{e||s([])}})(),()=>{e=!0}},[a,n]);async function g(){if(c){d(!0);try{let e=Cc(await t.getObjectSchema(c));if(!e.length){X.error(i(`excelImport.noImportableFields`));return}p(e),h(!0)}catch{X.error(i(`excelImport.schemaReadFailed`))}finally{d(!1)}}}let v=o?.find(e=>e.name===c)?.label??c;return m&&f?(0,Q.jsx)(Go,{open:m,onOpenChange:e=>{h(e),e||r()},objectName:c,objectLabel:v,fields:f,dataSource:t,initialFile:e,onComplete:e=>{X.success(i(`excelImport.imported`,{count:e.importedRows,object:v}))}}):(0,Q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 rounded-md border border-border bg-muted/40 px-3 py-2 text-sm`,"data-excel-import-bar":!0,children:[(0,Q.jsx)(ir,{variant:`secondary`,children:`CSV / Excel`}),(0,Q.jsx)(`span`,{className:`text-muted-foreground`,children:i(`excelImport.importFrom`)}),(0,Q.jsx)(`code`,{className:`font-medium`,children:e.name}),(0,Q.jsx)(`span`,{className:`text-muted-foreground`,children:i(`excelImport.into`)}),(0,Q.jsx)(`select`,{className:`h-8 rounded-md border border-input bg-background px-2 text-sm`,value:c,onChange:e=>l(e.target.value),disabled:!o||o.length===0,children:(o??[]).map(e=>(0,Q.jsx)(`option`,{value:e.name,children:e.label},e.name))}),(0,Q.jsx)(Y,{size:`sm`,onClick:g,disabled:!c||u,children:i(u?`excelImport.opening`:`excelImport.importAction`)}),(0,Q.jsx)(Y,{size:`sm`,variant:`ghost`,onClick:r,children:i(`excelImport.dismiss`)})]})}function Tc(){let{theme:e,setTheme:t}=Gs(),{t:n}=V();return(0,Q.jsxs)(Nt,{children:[(0,Q.jsx)(Fr,{asChild:!0,children:(0,Q.jsxs)(Y,{variant:`ghost`,size:`icon`,className:`h-8 w-8`,children:[(0,Q.jsx)(ht,{className:`h-4 w-4 rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0`}),(0,Q.jsx)(Ln,{className:`absolute h-4 w-4 rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100`}),(0,Q.jsx)(`span`,{className:`sr-only`,children:n(`console.theme.toggle`)})]})}),(0,Q.jsxs)(ui,{align:`end`,children:[(0,Q.jsxs)(Yt,{onClick:()=>t(`light`),className:`gap-2`,children:[(0,Q.jsx)(ht,{className:`h-4 w-4`}),n(`console.theme.light`),e===`light`&&(0,Q.jsx)(`span`,{className:`ml-auto text-xs`,children:`✓`})]}),(0,Q.jsxs)(Yt,{onClick:()=>t(`dark`),className:`gap-2`,children:[(0,Q.jsx)(Ln,{className:`h-4 w-4`}),n(`console.theme.dark`),e===`dark`&&(0,Q.jsx)(`span`,{className:`ml-auto text-xs`,children:`✓`})]}),(0,Q.jsxs)(Yt,{onClick:()=>t(`system`),className:`gap-2`,children:[(0,Q.jsx)(Gr,{className:`h-4 w-4`}),n(`console.theme.system`),e===`system`&&(0,Q.jsx)(`span`,{className:`ml-auto text-xs`,children:`✓`})]})]})]})}function Ec(){let e=document.querySelector(`base`)?.getAttribute(`href`);return e?new URL(e,window.location.origin):new URL(`/`,window.location.origin)}function Dc(e){return e===void 0?Ec().toString():new URL(`.`,e).toString()}function Oc(e,t){return new URL(e.replace(/^\//,``),Dc(t)).toString()}function kc(e){return e.split(/[\s_-]+/).map(e=>e[0]).join(``).toUpperCase().slice(0,2)}function Ac({name:e}){return(0,Q.jsx)(`span`,{className:`flex h-5 w-5 shrink-0 items-center justify-center rounded bg-muted text-[10px] font-semibold text-muted-foreground`,children:kc(e)})}function jc(){let{t:e}=V(),t=a(),{organizations:n,activeOrganization:r,switchOrganization:i,getAuthConfig:o}=T(),[s,c]=(0,$.useState)(!1),l=Ko()===`group`;(0,$.useEffect)(()=>{let e=!1;return o?.().then(t=>{e||c(t?.features?.multiOrgEnabled===!1)}).catch(()=>{}),()=>{e=!0}},[o]);let u=n??[],d=r??u[0]??null;if(!d||u.length<=1)return null;let f=async e=>{if(e.id!==d.id)try{await i(e.id),window.location.href=Dc()}catch(e){console.error(`[WorkspaceSwitcher] switch failed`,e)}};return(0,Q.jsxs)(Nt,{children:[(0,Q.jsxs)(Fr,{className:`ml-2 inline-flex max-w-[14rem] items-center gap-1.5 rounded-md px-1.5 py-1 text-sm font-medium text-foreground/80 transition-colors hover:bg-accent hover:text-foreground`,"data-testid":`workspace-switcher`,children:[(0,Q.jsx)(Ac,{name:d.name}),(0,Q.jsx)(`span`,{className:`hidden truncate sm:inline`,children:d.name}),(0,Q.jsx)(wr,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground`})]}),(0,Q.jsxs)(ui,{align:`start`,className:`w-60`,children:[(0,Q.jsx)(tt,{className:`text-xs text-muted-foreground`,children:l?e(`organization.switcher.groupLabel`,{defaultValue:`Working organization`}):e(`organization.switcher.label`,{defaultValue:`Switch organization`})}),l&&(0,Q.jsx)(`p`,{className:`px-2 pb-1.5 text-xs font-normal leading-snug text-muted-foreground`,"data-testid":`workspace-switcher-group-hint`,children:e(`organization.switcher.groupHint`,{defaultValue:`New records are created here. Views show data from all your organizations.`})}),u.map(e=>(0,Q.jsxs)(Yt,{onClick:()=>f(e),className:`cursor-pointer gap-2`,children:[(0,Q.jsx)(Ac,{name:e.name}),(0,Q.jsx)(`span`,{className:`flex-1 truncate`,children:e.name}),e.id===d.id&&(0,Q.jsx)(pr,{className:`h-4 w-4 shrink-0`})]},e.id)),(0,Q.jsx)(Wt,{}),(0,Q.jsxs)(Yt,{onClick:()=>t(`/organizations/${d.slug}/members`),className:`cursor-pointer gap-2`,"data-testid":`workspace-manage-members`,children:[(0,Q.jsx)(Tn,{className:`h-4 w-4`}),e(`organization.switcher.manageMembers`,{defaultValue:`Manage members`})]}),!s&&(0,Q.jsxs)(Yt,{onClick:()=>t(`/organizations?create=1`),className:`cursor-pointer gap-2`,"data-testid":`workspace-create`,children:[(0,Q.jsx)(Ue,{className:`h-4 w-4`}),e(`organizations.create`,{defaultValue:`Create workspace`})]})]})]})}var Mc=new Map([[`en`,`English`],[`zh`,`中文`],[`ja`,`日本語`],[`ko`,`한국어`],[`de`,`Deutsch`],[`fr`,`Français`],[`es`,`Español`],[`pt`,`Português`],[`ru`,`Русский`],[`ar`,`العربية`]]);function Nc(e){let t=Mc.get(e);if(t)return t;try{let t=new Intl.DisplayNames([e],{type:`language`}).of(e);return!t||t===e?e:t.charAt(0).toLocaleUpperCase(e)+t.slice(1)}catch{return e}}function Pc(){let{t:e,language:t,changeLanguage:n,offerableLanguages:r}=V();return r===null?null:(0,Q.jsxs)(Nt,{children:[(0,Q.jsx)(Fr,{asChild:!0,children:(0,Q.jsxs)(Y,{variant:`ghost`,size:`icon`,className:`h-8 w-8`,children:[(0,Q.jsx)(Ir,{className:`h-4 w-4`}),(0,Q.jsx)(`span`,{className:`sr-only`,children:e(`console.localeSwitcher.label`)})]})}),(0,Q.jsx)(ui,{align:`end`,className:`max-h-72 overflow-y-auto`,children:r.map(e=>(0,Q.jsxs)(Yt,{onClick:()=>n(e),className:`gap-2`,children:[Nc(e),t===e&&(0,Q.jsx)(`span`,{className:`ml-auto text-xs`,children:`✓`})]},e))})]})}var Fc={connected:{labelKey:`topbar.connection.connected`,defaultValue:`Connected`,color:`text-green-500`,icon:br},connecting:{labelKey:`topbar.connection.connecting`,defaultValue:`Connecting…`,color:`text-yellow-500`,icon:J},reconnecting:{labelKey:`topbar.connection.reconnecting`,defaultValue:`Reconnecting…`,color:`text-yellow-500`,icon:J},disconnected:{labelKey:`topbar.connection.disconnected`,defaultValue:`Disconnected`,color:`text-muted-foreground`,icon:zr},error:{labelKey:`topbar.connection.error`,defaultValue:`Connection Error`,color:`text-destructive`,icon:zr}};function Ic({state:e,className:t}){let n=Fc[e],{t:r}=V(),i=r(n.labelKey,{defaultValue:n.defaultValue}),a=n.icon,[o,s]=(0,$.useState)(!1);return(0,$.useEffect)(()=>{if(e===`connected`){s(!0);let e=setTimeout(()=>s(!1),2e3);return()=>clearTimeout(e)}s(!1)},[e]),e===`connected`&&!o?null:(0,Q.jsxs)(`div`,{className:Fn(`flex items-center gap-1.5 text-xs font-medium px-2 py-1 rounded-md transition-opacity duration-300`,n.color,e===`connected`&&`bg-green-500/10`,e===`error`&&`bg-destructive/10`,e===`reconnecting`&&`bg-yellow-500/10`,t),title:i,children:[(0,Q.jsx)(a,{className:Fn(`h-3.5 w-3.5`,(e===`connecting`||e===`reconnecting`)&&`animate-spin`)}),(0,Q.jsx)(`span`,{className:`hidden sm:inline`,children:i})]})}function Lc(e,t){if(!e)return``;let n=new Date(e).getTime();return Number.isNaN(n)?``:S(n,t)}function Rc(e){let t=[],n=new Map;for(let r of e){let e=(r.type??``).trim(),i=(r.title??``).trim(),a=e||i?`${e}\u0000${i}`:`__row__${r.id}`,o=n.get(a);o||(o={key:a,type:r.type,title:r.title,items:[],unreadCount:0,latestCreatedAt:r.created_at},n.set(a,o),t.push(o)),o.items.push(r),r.is_read||(o.unreadCount+=1),r.created_at&&(!o.latestCreatedAt||r.created_at>o.latestCreatedAt)&&(o.latestCreatedAt=r.created_at)}return t}function zc({notifications:e,unreadCount:t,pendingApprovalsCount:n,activities:r,onMarkAllRead:i,onMarkRead:o,onMarkManyRead:s}){let{t:c,language:u}=V(),d=a(),f=l(),{currentAppName:p}=Ui(),{apps:m}=ae(),[h,g]=(0,$.useState)(!1),[_,v]=(0,$.useState)(`notifications`),[y,b]=(0,$.useState)(`unread`),[x,S]=(0,$.useState)(()=>new Set),C=(0,$.useMemo)(()=>Rc(e),[e]).reduce((e,t)=>e+ +(t.unreadCount>0),0),w=C+n,T=c(`sidebar.inboxAriaLabel`,{defaultValue:`Open inbox`}),E=(0,$.useRef)(null),[D,O]=(0,$.useState)(!1);(0,$.useEffect)(()=>{let e=E.current;if(e!==null&&w>e){O(!0);let e=window.setTimeout(()=>O(!1),1200);return()=>window.clearTimeout(e)}E.current=w},[w]),(0,$.useEffect)(()=>{D||(E.current=w)},[D,w]);let k=()=>{g(!1);let e=p??f.appName;d(e?`/apps/${e}/system/approvals`:`/apps/setup/system/approvals`)},A=ya(m,p??f.appName),j=()=>{g(!1),d(`/apps/${A}/sys_inbox_message?view=mine`)},M=()=>{g(!1),d(`/apps/${A}/sys_activity`)},N=e=>{o(e.id);let t=p??f.appName;if(e.action_url){g(!1);let n=e.action_url;if(/^https?:\/\//i.test(n)){window.open(n,`_blank`,`noopener,noreferrer`);return}if(n.startsWith(`/apps/`)){d(n);return}let r=n.startsWith(`/`)?n:`/${n}`;d(t?`/apps/${t}${r}`:r);return}if(e.source_object&&e.source_id){g(!1);let n=t?`/apps/${t}/${e.source_object}/${e.source_id}`:`/objects/${e.source_object}/${e.source_id}`;d(n)}},ee=e=>{S(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},P=e=>{let t=e.items.filter(e=>!e.is_read).map(e=>e.id);t.length!==0&&(s?s(t):t.forEach(o))},F=(e,t)=>(0,Q.jsx)(`button`,{type:`button`,onClick:()=>N(e),className:`w-full text-left ${t?`pl-9 pr-3 py-2`:`px-3 py-2.5`} hover:bg-accent transition-colors duration-150 ${e.is_read?``:`bg-accent/40`}`,children:(0,Q.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,Q.jsx)(`span`,{className:`mt-1.5 h-1.5 w-1.5 shrink-0 rounded-full bg-primary transition-opacity duration-200 ${e.is_read?`opacity-0`:`opacity-100`}`,"aria-hidden":!0}),(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Q.jsx)(`div`,{className:`text-sm font-medium leading-tight truncate`,children:e.title}),e.body&&(0,Q.jsx)(`div`,{className:`text-xs text-muted-foreground line-clamp-2 mt-0.5`,children:e.body}),(0,Q.jsx)(`div`,{className:`text-[10px] text-muted-foreground mt-1`,children:Lc(e.created_at,u)})]})]})});return(0,Q.jsxs)(Me,{open:h,onOpenChange:g,children:[(0,Q.jsx)(gt,{asChild:!0,children:(0,Q.jsxs)(Y,{variant:`ghost`,size:`icon`,className:`h-8 w-8 relative shrink-0 ${D?`motion-safe:animate-bounce`:``}`,"aria-label":T,title:c(`sidebar.inbox`,{defaultValue:`Inbox`}),children:[(0,Q.jsx)(ut,{className:`h-4 w-4`}),w>0&&(0,Q.jsx)(`span`,{"data-testid":`inbox-bell-badge`,className:`absolute -top-0.5 -right-0.5 h-4 min-w-[16px] rounded-full bg-red-500 text-[10px] leading-4 text-white text-center px-1 motion-safe:animate-in motion-safe:zoom-in-50 motion-safe:fade-in-0 motion-safe:duration-200`,children:w>9?`9+`:w},w)]})}),(0,Q.jsxs)(rr,{align:`end`,sideOffset:8,className:`w-96 p-0`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between px-3 pt-3 pb-1`,children:[(0,Q.jsx)(`div`,{className:`text-sm font-semibold`,children:c(`sidebar.inbox`,{defaultValue:`Inbox`})}),_===`notifications`&&t>0&&(0,Q.jsx)(`button`,{type:`button`,onClick:i,className:`text-xs text-muted-foreground hover:text-foreground`,children:c(`notifications.markAllRead`,{defaultValue:`Mark all read`})})]}),w>0&&(0,Q.jsxs)(`div`,{"data-testid":`inbox-badge-breakdown`,className:`flex flex-wrap items-center gap-x-2 gap-y-1 px-3 pb-2 text-xs text-muted-foreground`,children:[(0,Q.jsx)(`span`,{"data-testid":`inbox-badge-breakdown-total`,className:`font-medium text-foreground`,children:c(`notifications.badgeTotal`,{defaultValue:`{{total}} total`,total:w})}),(0,Q.jsx)(`span`,{"aria-hidden":!0,children:`·`}),(0,Q.jsx)(`span`,{"data-testid":`inbox-badge-breakdown-notifications`,children:c(`notifications.badgeNotifications`,{defaultValue:`{{unread}} notifications`,unread:C})}),(0,Q.jsx)(`span`,{"aria-hidden":!0,children:`+`}),(0,Q.jsx)(`span`,{"data-testid":`inbox-badge-breakdown-approvals`,children:c(`notifications.badgeApprovals`,{defaultValue:`{{approvals}} pending approvals`,approvals:n})})]}),(0,Q.jsxs)(at,{value:_,onValueChange:e=>v(e),className:`w-full`,children:[(0,Q.jsxs)(It,{className:`w-full justify-start rounded-none border-b bg-transparent px-1 h-9`,children:[(0,Q.jsxs)(mi,{value:`notifications`,className:`text-xs gap-1.5 data-[state=active]:bg-transparent`,children:[(0,Q.jsx)(ut,{className:`h-3.5 w-3.5`}),c(`sidebar.notifications`,{defaultValue:`Notifications`}),C>0&&(0,Q.jsx)(`span`,{className:`ml-0.5 inline-flex h-4 min-w-[16px] items-center justify-center rounded-full bg-red-500 px-1 text-[10px] text-white motion-safe:animate-in motion-safe:zoom-in-75 motion-safe:duration-200`,children:C>9?`9+`:C},`notif-${C}`)]}),(0,Q.jsxs)(mi,{value:`approvals`,className:`text-xs gap-1.5 data-[state=active]:bg-transparent`,children:[(0,Q.jsx)(et,{className:`h-3.5 w-3.5`}),c(`sidebar.approvals`,{defaultValue:`Approvals`}),n>0&&(0,Q.jsx)(`span`,{className:`ml-0.5 inline-flex h-4 min-w-[16px] items-center justify-center rounded-full bg-amber-500 px-1 text-[10px] text-white motion-safe:animate-in motion-safe:zoom-in-75 motion-safe:duration-200`,children:n>9?`9+`:n},`appr-${n}`)]}),(0,Q.jsxs)(mi,{value:`activity`,className:`text-xs gap-1.5 data-[state=active]:bg-transparent`,children:[(0,Q.jsx)(q,{className:`h-3.5 w-3.5`}),c(`sidebar.activityFeed`,{defaultValue:`Activity feed`})]})]}),(0,Q.jsxs)(pt,{value:`notifications`,className:`m-0 max-h-80 overflow-auto`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-1 border-b px-2 py-1.5`,children:[(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>b(`unread`),className:`text-xs px-2 py-1 rounded-md transition-colors ${y===`unread`?`bg-accent text-foreground font-medium`:`text-muted-foreground hover:text-foreground`}`,children:[c(`notifications.filterUnread`,{defaultValue:`Unread`}),C>0&&(0,Q.jsx)(`span`,{className:`ml-1 text-[10px] opacity-70`,children:C})]}),(0,Q.jsx)(`button`,{type:`button`,onClick:()=>b(`all`),className:`text-xs px-2 py-1 rounded-md transition-colors ${y===`all`?`bg-accent text-foreground font-medium`:`text-muted-foreground hover:text-foreground`}`,children:c(`notifications.filterAll`,{defaultValue:`All`})})]}),(()=>{let t=y===`unread`?e.filter(e=>!e.is_read):e;if(t.length===0)return(0,Q.jsx)(`div`,{className:`px-3 py-8 text-sm text-muted-foreground text-center motion-safe:animate-in motion-safe:fade-in-0 motion-safe:duration-300`,children:y===`unread`?c(`notifications.emptyUnread`,{defaultValue:`You're all caught up`}):c(`notifications.empty`,{defaultValue:`No notifications`})});let n=Rc(t);return(0,Q.jsx)(`ul`,{className:`divide-y`,children:n.map((e,t)=>{let n={className:`motion-safe:animate-in motion-safe:fade-in-0 motion-safe:slide-in-from-top-1 motion-safe:duration-200`,style:{animationDelay:`${Math.min(t,6)*20}ms`}};if(e.items.length===1)return(0,Q.jsx)(`li`,{...n,children:F(e.items[0],!1)},e.key);let r=x.has(e.key);return(0,Q.jsxs)(`li`,{...n,children:[(0,Q.jsxs)(`div`,{className:`flex items-stretch`,children:[(0,Q.jsx)(`button`,{type:`button`,onClick:()=>ee(e.key),"aria-expanded":r,className:`flex-1 min-w-0 text-left px-3 py-2.5 hover:bg-accent transition-colors duration-150 ${e.unreadCount>0?`bg-accent/40`:``}`,children:(0,Q.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,Q.jsx)(`span`,{className:`mt-1.5 h-1.5 w-1.5 shrink-0 rounded-full bg-primary transition-opacity duration-200 ${e.unreadCount>0?`opacity-100`:`opacity-0`}`,"aria-hidden":!0}),(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,Q.jsx)(`span`,{className:`text-sm font-medium leading-tight truncate`,children:e.title}),(0,Q.jsxs)(`span`,{className:`shrink-0 rounded-full bg-muted px-1.5 text-[10px] font-medium leading-4 text-muted-foreground`,"aria-label":c(`notifications.groupCount`,{defaultValue:`{{count}} notifications`,count:e.items.length}),children:[`×`,e.items.length]})]}),e.items[0].body&&(0,Q.jsx)(`div`,{className:`text-xs text-muted-foreground line-clamp-1 mt-0.5`,children:e.items[0].body}),(0,Q.jsxs)(`div`,{className:`text-[10px] text-muted-foreground mt-1`,children:[Lc(e.latestCreatedAt,u),e.unreadCount>0&&(0,Q.jsxs)(`span`,{className:`ml-1`,children:[`·`,` `,c(`notifications.groupUnread`,{defaultValue:`{{count}} unread`,count:e.unreadCount})]})]})]}),(0,Q.jsx)(kn,{className:`mt-1 h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200 ${r?`rotate-90`:``}`,"aria-hidden":!0})]})}),e.unreadCount>0&&(0,Q.jsx)(`button`,{type:`button`,onClick:()=>P(e),className:`shrink-0 px-2 text-[10px] text-muted-foreground hover:text-foreground hover:bg-accent transition-colors border-l`,title:c(`notifications.groupMarkReadTitle`,{defaultValue:`Mark all of this type read`}),children:c(`notifications.groupMarkRead`,{defaultValue:`Mark read`})})]}),r&&(0,Q.jsx)(`ul`,{className:`divide-y border-t bg-muted/20`,children:e.items.map(e=>(0,Q.jsx)(`li`,{children:F(e,!0)},e.id))})]},e.key)})})})(),(0,Q.jsx)(`div`,{className:`border-t px-3 py-2 text-center`,children:(0,Q.jsx)(`button`,{type:`button`,onClick:j,className:`text-xs text-primary hover:underline`,children:c(`notifications.viewAll`,{defaultValue:`View all notifications`})})})]}),(0,Q.jsx)(pt,{value:`approvals`,className:`m-0 max-h-80 overflow-auto`,children:(0,Q.jsx)(`div`,{className:`px-3 py-6 text-center motion-safe:animate-in motion-safe:fade-in-0 motion-safe:duration-300`,children:n>0?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(et,{className:`mx-auto h-6 w-6 text-amber-500 motion-safe:animate-in motion-safe:zoom-in-50 motion-safe:duration-300`}),(0,Q.jsx)(`div`,{className:`mt-2 text-sm font-medium`,children:c(`notifications.approvalsPending`,{defaultValue:`{{count}} pending approvals`,count:n})}),(0,Q.jsx)(Y,{size:`sm`,className:`mt-3`,onClick:k,children:c(`notifications.viewApprovals`,{defaultValue:`View approvals`})})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:c(`notifications.noPendingApprovals`,{defaultValue:`No pending approvals`})}),(0,Q.jsx)(`button`,{type:`button`,onClick:k,className:`mt-2 text-xs text-primary hover:underline`,children:c(`notifications.openApprovalsInbox`,{defaultValue:`Open Approvals Inbox`})})]})})}),(0,Q.jsxs)(pt,{value:`activity`,className:`m-0 max-h-80 overflow-auto`,children:[r.length===0?(0,Q.jsx)(`div`,{className:`px-3 py-8 text-sm text-muted-foreground text-center motion-safe:animate-in motion-safe:fade-in-0 motion-safe:duration-300`,children:c(`layout.activityFeed.empty`,{defaultValue:`No recent activity`})}):(0,Q.jsx)(`ul`,{className:`divide-y`,children:r.slice(0,20).map((e,t)=>(0,Q.jsxs)(`li`,{className:`px-3 py-2.5 motion-safe:animate-in motion-safe:fade-in-0 motion-safe:slide-in-from-top-1 motion-safe:duration-200`,style:{animationDelay:`${Math.min(t,6)*20}ms`},children:[(0,Q.jsxs)(`div`,{className:`text-sm leading-tight truncate`,children:[(0,Q.jsx)(`span`,{className:`font-medium`,children:e.user}),` `,(0,Q.jsx)(`span`,{className:`text-muted-foreground`,children:e.description})]}),(0,Q.jsxs)(`div`,{className:`text-[10px] text-muted-foreground mt-0.5`,children:[Lc(e.timestamp,u),` · `,e.objectName]})]},e.id))}),(0,Q.jsx)(`div`,{className:`border-t px-3 py-2 text-center`,children:(0,Q.jsx)(`button`,{type:`button`,onClick:M,className:`text-xs text-primary hover:underline`,children:c(`layout.activityFeed.viewAll`,{defaultValue:`View all activity`})})})]})]})]})]})}function Bc({activeAppName:e,onAppChange:t}){let{apps:n}=ae(),{t:r}=V(),{appLabel:i}=Te(),a=n||[],o=a.filter(e=>e.active!==!1&&e.hidden!==!0),s=ga(o,e)||ga(a.filter(e=>e.active!==!1),e)||o[0];if(!s)return null;let c=i({name:s.name,label:xa(s.label,r)});return(0,Q.jsxs)(Nt,{children:[(0,Q.jsx)(Fr,{asChild:!0,children:(0,Q.jsxs)(`button`,{type:`button`,className:`flex items-center gap-1 rounded-md px-1.5 py-1 text-sm font-medium text-foreground/80 hover:bg-accent hover:text-foreground transition-colors outline-none focus-visible:ring-2 focus-visible:ring-ring max-w-[40vw] sm:max-w-none`,children:[(0,Q.jsx)(`span`,{className:`truncate whitespace-nowrap`,children:c}),(0,Q.jsx)(kr,{className:`h-3.5 w-3.5 text-muted-foreground shrink-0`})]})}),(0,Q.jsxs)(ui,{align:`start`,sideOffset:8,className:`w-60`,children:[(0,Q.jsx)(tt,{className:`text-xs text-muted-foreground font-normal`,children:r(`layout.appSwitcher.switchApplication`,{defaultValue:`Switch Application`})}),(0,Q.jsx)(Wt,{}),o.map(e=>{let n=Yo(e.icon),a=i({name:e.name,label:xa(e.label,r)}),o=s.name===e.name;return(0,Q.jsxs)(Yt,{onClick:()=>t(va(e)??e.name),className:`flex items-center gap-2.5 py-2`,children:[(0,Q.jsx)(`div`,{className:`flex size-5 shrink-0 items-center justify-center rounded border bg-muted text-muted-foreground`,children:(0,Q.jsx)(n,{className:`size-3`})}),(0,Q.jsx)(`span`,{className:`flex-1 truncate`,children:a}),o&&(0,Q.jsx)(pr,{className:`size-3.5 text-primary shrink-0`})]},e.name)})]})]})}var Vc=(0,$.createContext)(null);function Hc({children:e}){let[t,n]=(0,$.useState)(null),r=(0,$.useMemo)(()=>({value:t,setValue:n}),[t]);return(0,Q.jsx)(Vc.Provider,{value:r,children:e})}function Uc(){return(0,$.useContext)(Vc)?.value??null}function Wc(e){let t=(0,$.useContext)(Vc),n=(0,$.useRef)(null);(0,$.useEffect)(()=>{if(!t)return;let r=e??null;return t.setValue(r),n.current=r,()=>{t.setValue(null)}},[t,e])}function Gc(e){let{views:t,activeViewId:n,onChange:r,triggerLabel:i,enabled:a=!0}=e,o=(0,$.useRef)(r);o.current=r;let s=(0,$.useCallback)(e=>o.current(e),[]);Wc((0,$.useMemo)(()=>a?{views:t,activeViewId:n,onChange:s,triggerLabel:i}:null,[a,t,n,s,i]))}var Kc=(0,$.createContext)(null);function qc({children:e}){let{open:t,setOpen:n,openOverlay:r,closeOverlay:i,toggleOverlay:a}=Bs(Yi,{alias:`cmdk`});(0,$.useEffect)(()=>{let e=e=>{e.key===`k`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),a())};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[a]);let o=(0,$.useMemo)(()=>({open:t,openCommandPalette:r,closeCommandPalette:i,toggleCommandPalette:a,setOpen:n}),[t,r,i,a,n]);return(0,Q.jsx)(Kc.Provider,{value:o,children:e})}function Jc(){return(0,$.useContext)(Kc)||{open:!1,openCommandPalette:()=>{},closeCommandPalette:()=>{},toggleCommandPalette:()=>{},setOpen:()=>{}}}var Yc=3e4,Xc=1e4,Zc=6e4,Qc=12e4,$c=3e4,el=6e4,tl=[],nl=[],rl=class{empty;pollMs;snapshot;key=null;listeners=new Set;runner=null;consumers=0;inFlight=!1;unavailable=!1;retiredAt=0;probesLeft=3;fetchedAt=0;timer=null;backoffMs;visibilityBound=!1;constructor(e,t){this.empty=e,this.pollMs=t,this.snapshot={value:e,status:`idle`},this.idleSnapshot=this.snapshot,this.backoffMs=t}subscribe=e=>(this.listeners.add(e),()=>{this.listeners.delete(e)});getSnapshot=()=>this.snapshot;idleSnapshot;attach(e,t){return e!==this.key&&(this.key=e,this.unavailable=!1,this.retiredAt=0,this.probesLeft=3,this.fetchedAt=0,this.backoffMs=this.pollMs,this.publish(this.empty,`idle`)),this.runner=t,this.consumers+=1,this.consumers===1&&(this.bindVisibility(),this.schedule()),this.refresh(),()=>{this.consumers=Math.max(0,this.consumers-1),this.consumers===0&&(this.stopPolling(),this.unbindVisibility())}}async refresh(e=!1){let t=this.runner;if(!t||this.inFlight)return;let n=this.unavailable;if(n&&!this.mayProbe()||!e&&!n&&this.fetchedAt&&Date.now()-this.fetchedAt<$c)return;this.inFlight=!0,this.snapshot.status===`idle`&&this.publish(this.snapshot.value,`loading`);let r=!1;try{let e=await t({markUnavailable:()=>n?this.spendProbe():this.retire(),markFailed:()=>{r=!0}});e===void 0?r&&(n?this.spendProbe():this.fail()):(this.unavailable=!1,this.probesLeft=3,this.fetchedAt=Date.now(),this.backoffMs=this.pollMs,this.publish(e,`ready`))}catch{n?this.spendProbe():this.fail()}finally{this.inFlight=!1,this.consumers>0&&this.schedule()}}mayProbe(){return this.probesLeft>0&&Date.now()-this.retiredAt>=6e4}retire(){this.unavailable=!0,this.retiredAt=Date.now(),this.fetchedAt=Date.now(),this.stopPolling(),this.publish(this.snapshot.value,`ready`)}spendProbe(){this.probesLeft=Math.max(0,this.probesLeft-1),this.retiredAt=Date.now(),this.fetchedAt=Date.now(),this.stopPolling()}fail(){this.backoffMs=Math.min(Math.max(this.backoffMs,this.pollMs)*2,Qc),this.publish(this.snapshot.value,`error`)}schedule(){if(this.timer)return;if(this.unavailable){if(this.probesLeft<=0)return;this.timer=setTimeout(()=>{this.timer=null,this.refresh(!0)},el);return}if(this.pollMs<=0)return;let e=typeof document<`u`&&document.hidden?Math.max(Zc,this.backoffMs):this.backoffMs;this.timer=setTimeout(()=>{this.timer=null,this.refresh(!0)},e)}onVisibilityChange=()=>{typeof document>`u`||document.hidden||this.consumers!==0&&(this.unavailable&&!this.mayProbe()||(this.stopPolling(),this.unavailable||(this.backoffMs=this.pollMs),this.refresh(!0)))};bindVisibility(){this.pollMs<=0||this.visibilityBound||typeof document>`u`||(document.addEventListener(`visibilitychange`,this.onVisibilityChange),this.visibilityBound=!0)}unbindVisibility(){!this.visibilityBound||typeof document>`u`||(document.removeEventListener(`visibilitychange`,this.onVisibilityChange),this.visibilityBound=!1)}stopPolling(){this.timer&&=(clearTimeout(this.timer),null)}publish(e,t){if(!(Object.is(e,this.snapshot.value)&&t===this.snapshot.status)){this.snapshot={value:e,status:t};for(let e of[...this.listeners])e()}}reset(){this.stopPolling(),this.unbindVisibility(),this.snapshot={value:this.empty,status:`idle`},this.key=null,this.runner=null,this.consumers=0,this.inFlight=!1,this.unavailable=!1,this.retiredAt=0,this.probesLeft=3,this.fetchedAt=0,this.backoffMs=this.pollMs}};function il(e,t,n){let r=(0,$.useSyncExternalStore)(e.subscribe,e.getSnapshot,e.getSnapshot),i=(0,$.useRef)(n);return(0,$.useEffect)(()=>{i.current=n}),(0,$.useEffect)(()=>{if(t)return e.attach(t,e=>i.current(e))},[e,t]),t?r:e.idleSnapshot}var al=new rl(0,Yc);function ol(e){let t=e,n=[];t?.id&&n.push(t.id),t?.email&&n.push(t.email);for(let e of t?.roles??[])e&&n.push(`role:${e}`);return n}function sl(){let{user:e}=T(),t=ol(e);return il(al,e?.id&&t.length>0?t.join(`,`):null,async({markUnavailable:e,markFailed:n})=>{let r=``.replace(/\/$/,``),i=new URLSearchParams({status:`pending`,approverId:t.join(`,`)}),a=await fetch(`${r}/api/v1/approvals/requests?${i}`,{credentials:`include`,headers:ia()});if(a.status===404){e();return}if(!a.ok){n();return}let o=await a.json().catch(()=>null),s=new Set;for(let e of o?.data||[])s.add(e.id);return s.size}).value}var cl=new rl(tl,0),ll=new WeakMap,ul=0;function dl(e){if(!e||typeof e!=`object`)return null;let t=ll.get(e);return t||(t=`adapter@${++ul}`,ll.set(e,t)),t}function fl(e){return e.filter(e=>{if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.type==`string`&&String(t.summary??``).trim().length>0}).map(e=>{let t=e.timestamp;(!t||t===`NOW()`||Number.isNaN(Date.parse(t)))&&(t=e.created_at);let n=String(e.type),r=n===`commented`||n===`mentioned`?`comment`:n===`deleted`?`delete`:n===`created`?`create`:`update`;return{id:String(e.id),type:r,objectName:String(e.object_name??``),recordId:e.record_id==null?void 0:String(e.record_id),user:String(e.actor_name??``),description:String(e.summary??``),timestamp:t??``}})}function pl(e){let t=e;return t?.httpStatus===404||t?.status===404||K(e,`OBJECT_NOT_FOUND`)}function ml(){let e=se();return il(cl,dl(e),async({markUnavailable:t,markFailed:n})=>{if(!e)return;let r=await Promise.resolve(e.find(`sys_activity`,{$orderby:{timestamp:`desc`},$top:20})).catch(e=>(pl(e)?t():n(),null));if(r)return fl(Array.isArray(r.data)?r.data:[])}).value}function hl(e){let t=ml();return(0,$.useMemo)(()=>t.filter(e=>{let t=e.user.trim();return t.length>0&&t.toLowerCase()!==`system`}).slice(0,e),[t,e])}var gl=new rl(nl,Xc),_l=new Set([`read`,`clicked`,`dismissed`]);function vl(e,t){let n=new Map;for(let e of t){let t=e,r=t?.notification_id==null?``:String(t.notification_id);if(!r)continue;let i=String(t?.state??``),a=n.get(r);(!a||!_l.has(a.state)&&_l.has(i))&&n.set(r,{id:String(t?.id),state:i})}return e.map(e=>{let t=e,r=t?.notification_id==null?null:String(t.notification_id),i=r?n.get(r):void 0;return{id:String(t.id),notification_id:r,receipt_id:i?.id??null,type:t.topic??`notification`,title:t.title??``,body:t.body_md??null,action_url:t.action_url??null,is_read:i?_l.has(i.state):!1,created_at:t.created_at}})}function yl(){let e=se(),{user:t}=T(),n=t?.id,r=dl(e);return il(gl,r&&n?`${r}:${n}`:null,async({markUnavailable:t,markFailed:r})=>{if(!(!e||!n))try{let[t,r]=await Promise.all([Promise.resolve(e.find(`sys_inbox_message`,{$filter:{user_id:n},$orderby:{created_at:`desc`},$top:20})),Promise.resolve(e.find(`sys_notification_receipt`,{$filter:{user_id:n,channel:`inbox`},$top:200})).catch(()=>({data:[]}))]);return vl(Array.isArray(t?.data)?t.data:[],Array.isArray(r?.data)?r.data:[])}catch(e){pl(e)?t():r();return}})}var bl=$.forwardRef(({className:e,onClick:t,"aria-label":n,title:r,...i},a)=>{let{toggleSidebar:o}=En(),{t:s}=V(),c=String(n||r||s(`common.toggleSidebar`,{defaultValue:`Toggle sidebar`}));return(0,Q.jsxs)(Y,{ref:a,"data-sidebar":`trigger`,variant:`ghost`,size:`icon`,className:Fn(`h-7 w-7`,e),"aria-label":c,title:c,onClick:e=>{t?.(e),o()},...i,children:[(0,Q.jsx)(qt,{}),(0,Q.jsx)(`span`,{className:`sr-only`,children:c})]})});bl.displayName=`LocalizedSidebarTrigger`;function xl({className:e}){let{t}=V(),n=So();if(n!==`preview`&&n!==`beta`)return null;let r=n===`beta`?t(`topbar.stage.beta`,{defaultValue:`Beta`}):t(`topbar.stage.preview`,{defaultValue:`Preview`}),i=t(`topbar.stage.tooltip`,{defaultValue:`This platform is in preview — features may change.`});return(0,Q.jsx)(ir,{variant:`secondary`,title:i,"aria-label":i,"data-testid":`platform-preview-badge`,className:Fn(`shrink-0 cursor-default select-none rounded-md px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide`,e),children:r})}function Sl(e){return e.replace(/[-_]/g,` `).replace(/\b\w/g,e=>e.toUpperCase())}function Cl(){return(0,Q.jsx)(`span`,{className:`select-none text-muted-foreground/40 mx-1.5 text-base font-light`,"aria-hidden":!0,children:`/`})}var wl=[],Tl=new Set;function El({variant:e,appName:t,objects:r,connectionState:o,presenceUsers:s,activities:c,activeAppName:u,onAppChange:d}){let f=e??(t?`app`:`home`),p=f===`app`,m=i(),h=l(),_=a(),{isOnline:v}=_e(),{openCommandPalette:b}=Jc(),{openOverlay:x}=Bs(aa),{user:S,signOut:C,isAuthEnabled:w,organizations:E,activeOrganization:D,isOrganizationsLoading:O,getAuthConfig:k}=T(),A=se(),{enabled:j}=ao(),M=g(),{t:N}=V(),{objectLabel:ee,dashboardLabel:P,pageLabel:F,reportLabel:te,viewLabel:ne,appLabel:I}=Te(),{apps:L,dashboards:R,pages:re,reports:ie}=ae(),{currentAppName:z,recordTitle:B}=Ui(),H=Uc(),[oe,ce]=(0,$.useState)(null),le=(0,$.useCallback)(async()=>{if(oe===null)try{let e=A?.getClient?.();if(!e?.meta?.getItems){ce([]);return}let t=await e.meta.getItems(`doc`),n=Array.isArray(t)?t:Array.isArray(t?.items)?t.items:Array.isArray(t?.value)?t.value:[];ce(n.map(e=>({name:e?.name,label:e?.label,_packageId:e?._packageId})).filter(e=>e.name))}catch{ce([])}},[oe,A]),ue=ml(),{value:de}=yl(),[fe,pe]=(0,$.useState)(Tl),U=(0,$.useMemo)(()=>fe.size===0?de:de.map(e=>fe.has(e.id)?{...e,is_read:!0}:e),[de,fe]),me=sl(),he=U.reduce((e,t)=>e+ +!t.is_read,0),W=(0,$.useCallback)(async(e,t)=>{let n=``.replace(/\/$/,``);await fetch(`${n}/api/v1/notifications/${e}`,{method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`,...ia()},body:JSON.stringify(t?{ids:t}:{})})},[]),ge=(0,$.useCallback)(e=>{e.length!==0&&pe(t=>{let n=new Set(t);for(let t of e)n.add(t);return n})},[]),ve=(0,$.useCallback)(async e=>{let t=U.find(t=>t.id===e);if(ge([e]),t?.notification_id)try{await W(`read`,[t.notification_id])}catch{}},[U,ge,W]),ye=(0,$.useCallback)(async()=>{if(U.filter(e=>!e.is_read).length){ge(U.map(e=>e.id));try{await W(`read/all`)}catch{}}},[U,ge,W]),be=(0,$.useCallback)(async e=>{let t=new Set(e),n=U.filter(e=>t.has(e.id)&&!e.is_read).map(e=>e.notification_id).filter(e=>!!e);if(ge(e),n.length)try{await W(`read`,n)}catch{}},[U,ge,W]),G=ta(),xe=s??(G.length>0?G:wl),Se=c??ue,Ce=O||(E??[]).length>0||!!D,[we,Ee]=(0,$.useState)(!1);(0,$.useEffect)(()=>{let e=!1;return k?.().then(t=>{e||Ee(t?.features?.multiOrgEnabled===!1)}).catch(()=>{}),()=>{e=!0}},[k]);let K=m.pathname.split(`/`).filter(Boolean),De=h.appName||K[1],Oe=K[2],q=`/apps/${De}`,ke=r??[],Ae=ga(L||[],u||z||De),je=new Set,Me=e=>{for(let t of e||[])t.type===`object`&&t.objectName&&je.add(t.objectName),t.children&&Me(t.children)};Me(Ae?.navigation||[]);for(let e of Ae?.areas||[])Me(e.navigation||[]);let Pe=je.size>0?ke.filter(e=>je.has(e.name)):ke.filter(e=>!e.name.startsWith(`sys_`)&&!e.name.startsWith(`auth_`)),Ie=Ae?._packageId,Le=Ie?(oe??[]).filter(e=>e._packageId===Ie):[],Re=p?ba(Ae,M,{type:Oe,name:K[3]}):null,ze=Pe.map(e=>({label:ee(e),href:`${q}/${e.name}`})),Be=[];if(p){if(Oe===`dashboard`){if(Be.push({label:N(`console.breadcrumb.dashboards`),href:q}),K[3]){let e=K[3],t=Eo(R,e,Ae?._packageId)?.label||Sl(e);Be.push({label:P({name:e,label:t})})}}else if(Oe===`page`){if(Be.push({label:N(`console.breadcrumb.pages`),href:q}),K[3]){let e=K[3],t=Eo(re,e,Ae?._packageId)?.label||Sl(e);Be.push({label:F({name:e,label:t})})}}else if(Oe===`report`){if(Be.push({label:N(`console.breadcrumb.reports`),href:q}),K[3]){let e=K[3],t=Eo(ie,e,Ae?._packageId)?.label||Sl(e);Be.push({label:te({name:e,label:t})})}}else if(Oe===`system`)Be.push({label:N(`console.breadcrumb.system`)}),K[3]&&Be.push({label:Sl(K[3])});else if(Oe){let e=ke.find(e=>e.name===Oe);if(e){if(K[3]===`record`&&K[4]){let e=oa(new URLSearchParams(m.search).get(Qi));e.forEach((t,n)=>{let r=ke.find(e=>e.name===t.o);Be.push({label:r?ee(r):Sl(t.o),href:`${q}/${t.o}`});let i=t.i.length>12?`${t.i.slice(0,8)}…`:t.i;Be.push({label:t.t||`#${i}`,href:$i(q,t,e.slice(0,n))})})}if(Be.push({label:ee(e),href:`${q}/${Oe}`,siblings:ze}),K[3]===`record`&&K[4]){let e=K[4].length>12?`${K[4].slice(0,8)}…`:K[4],t=B?.trim(),n=t&&t.length>48?`${t.slice(0,45)}…`:t;Be.push({label:n||`#${e}`})}else if(K[3]===`view`&&K[4]){let t=K[4],n=(e.listViews||e.list_views||{})[t],r=n&&(n.label||n.title)||Sl(t),i=ne(e.name,t,r);Be.push({label:i})}}}}let Ve=Be[Be.length-1]?.label||t||``;return(0,Q.jsxs)(`div`,{className:`flex items-center justify-between w-full h-full`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center min-w-0 flex-1`,children:[(0,Q.jsx)(n,{to:`/home`,className:Fn(`flex items-center justify-center h-7 w-7 shrink-0 rounded-md bg-primary text-primary-foreground hover:bg-primary/90 transition-colors overflow-hidden`,p&&`hidden sm:flex`),title:bo(),children:wo()?(0,Q.jsx)(`img`,{src:wo(),alt:bo(),className:`h-full w-full object-contain`}):(0,Q.jsx)(Tt,{className:`h-4 w-4`})}),f===`home`&&(0,Q.jsx)(`span`,{className:`hidden sm:inline ml-2 text-sm font-semibold tracking-tight`,children:bo()}),(0,Q.jsx)(xl,{className:`ml-2 hidden sm:inline-flex`}),(0,Q.jsx)(jc,{}),f===`orgs`&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Cl,{}),(0,Q.jsx)(`span`,{className:`text-sm font-medium text-foreground/80 px-1.5`,children:N(`organizations.title`,{defaultValue:`Workspaces`})})]}),p&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(bl,{className:`lg:hidden shrink-0 ml-1`,"aria-label":N(`common.toggleSidebar`,{defaultValue:`Toggle sidebar`})}),u&&d?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`hidden sm:flex items-center`,children:(0,Q.jsx)(Cl,{})}),(0,Q.jsx)(`div`,{className:`hidden sm:flex items-center`,children:(0,Q.jsx)(Bc,{activeAppName:u,onAppChange:d})})]}):t?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`hidden sm:flex items-center`,children:(0,Q.jsx)(Cl,{})}),(0,Q.jsx)(`span`,{className:`hidden sm:inline text-sm font-medium text-foreground/80 px-1.5`,children:t})]}):null,Be.map((e,t)=>{let r=t===Be.length-1;return(0,Q.jsxs)(`span`,{className:`hidden sm:flex items-center min-w-0`,children:[(0,Q.jsx)(Cl,{}),e.siblings&&e.siblings.length>1?(0,Q.jsxs)(Nt,{children:[(0,Q.jsxs)(Fr,{className:`flex items-center gap-1 rounded-md px-1.5 py-1 text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring hover:bg-accent hover:text-foreground ${r?`text-foreground/80`:`text-foreground/60`}`,children:[e.label,(0,Q.jsx)(kr,{className:`h-3.5 w-3.5 text-muted-foreground`})]}),(0,Q.jsxs)(ui,{align:`start`,sideOffset:8,className:`w-56 max-h-72 overflow-y-auto`,children:[(0,Q.jsx)(tt,{className:`text-xs text-muted-foreground font-normal`,children:N(`topbar.switchObject`,{defaultValue:`Switch Object`})}),(0,Q.jsx)(Wt,{}),e.siblings.map(e=>(0,Q.jsx)(Yt,{asChild:!0,children:(0,Q.jsx)(n,{to:e.href,className:`w-full`,children:e.label})},e.href))]})]}):e.href?(0,Q.jsx)(n,{to:e.href,className:`rounded-md px-1.5 py-1 text-sm font-medium transition-colors hover:bg-accent hover:text-foreground truncate max-w-[160px] ${r?`text-foreground/80`:`text-foreground/60`}`,children:e.label}):(0,Q.jsx)(`span`,{className:`px-1.5 py-1 text-sm font-medium truncate max-w-[160px] ${r?`text-foreground/80`:`text-foreground/60`}`,children:e.label})]},t)}),H&&H.views.length>0?H.views.length>1?(0,Q.jsxs)(Nt,{children:[(0,Q.jsx)(Fr,{asChild:!0,children:(0,Q.jsxs)(`button`,{type:`button`,className:`sm:hidden flex items-center gap-0.5 min-w-0 ml-1 rounded-md px-1.5 py-1 text-sm font-medium hover:bg-accent active:bg-accent/80 transition-colors`,"aria-label":N(`topbar.switchView`,{defaultValue:`Switch view`}),children:[(0,Q.jsx)(`span`,{className:`truncate max-w-[180px]`,children:H.triggerLabel??H.views.find(e=>e.id===H.activeViewId)?.label??Ve}),(0,Q.jsx)(kr,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground`})]})}),(0,Q.jsx)(ui,{align:`start`,className:`min-w-[220px] max-w-[280px]`,children:H.views.map(e=>{let t=e.id===H.activeViewId;return(0,Q.jsxs)(Yt,{onSelect:()=>{t||H.onChange(e.id)},className:`gap-2`,children:[e.icon?(0,Q.jsx)(`span`,{className:`shrink-0 text-muted-foreground [&>svg]:h-4 [&>svg]:w-4`,children:e.icon}):null,(0,Q.jsx)(`span`,{className:`flex-1 truncate`,children:e.label}),e.locked?(0,Q.jsx)(Wn,{className:`h-3 w-3 shrink-0 text-muted-foreground`,"aria-hidden":!0}):null,t?(0,Q.jsx)(pr,{className:`h-4 w-4 shrink-0 text-foreground`,"aria-hidden":!0}):null]},e.id)})})]}):(0,Q.jsx)(`span`,{className:`text-sm font-medium sm:hidden truncate min-w-0 ml-1`,children:H.triggerLabel??H.views[0].label}):(0,Q.jsx)(`span`,{className:`text-sm font-medium sm:hidden truncate min-w-0 ml-1`,children:Ve})]})]}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-0.5 sm:gap-1 shrink-0 [&>*+*[data-topbar-group]]:ml-1 [&>[data-topbar-group]+[data-topbar-group]]:border-l [&>[data-topbar-group]+[data-topbar-group]]:border-border/60 [&>[data-topbar-group]+[data-topbar-group]]:pl-1 sm:[&>[data-topbar-group]+[data-topbar-group]]:pl-2 sm:[&>[data-topbar-group]+[data-topbar-group]]:ml-2`,children:[!v&&(0,Q.jsxs)(`div`,{className:`flex items-center gap-1 px-2 py-1 rounded-full bg-yellow-100 dark:bg-yellow-900/30 text-yellow-800 dark:text-yellow-200 text-xs font-medium`,children:[(0,Q.jsx)(`span`,{className:`h-2 w-2 rounded-full bg-yellow-500 animate-pulse`}),N(`topbar.offline`,{defaultValue:`Offline`})]}),p&&o&&(0,Q.jsx)(Ic,{state:o}),p&&xe.length>0&&(0,Q.jsx)(`div`,{className:`hidden md:flex items-center shrink-0`,title:N(`topbar.usersOnline`,{defaultValue:`Users currently online`}),children:(0,Q.jsx)(ea,{users:xe,size:`sm`,maxVisible:3,showStatus:!0})}),(0,Q.jsxs)(`div`,{"data-topbar-group":!0,className:`flex items-center gap-0.5 sm:gap-1 shrink-0`,children:[(0,Q.jsxs)(`button`,{type:`button`,"data-testid":`action:command-palette:open`,"aria-label":N(`console.search`,{defaultValue:`Search…`}),"aria-keyshortcuts":`Meta+K Control+K`,onClick:b,className:`hidden lg:flex relative items-center gap-2 w-48 xl:w-64 h-8 px-3 text-sm rounded-md border bg-muted/50 text-muted-foreground hover:bg-muted transition-colors`,children:[(0,Q.jsx)($n,{className:`h-3.5 w-3.5 shrink-0`}),(0,Q.jsx)(`span`,{className:`flex-1 text-left text-xs`,children:N(`console.search`,{defaultValue:`Search…`})}),(0,Q.jsxs)(`kbd`,{className:`pointer-events-none inline-flex h-5 items-center gap-0.5 rounded border bg-background px-1.5 text-[10px] font-medium text-muted-foreground`,children:[(0,Q.jsx)(`span`,{className:`text-xs`,children:`⌘`}),`K`]})]}),(0,Q.jsx)(Y,{variant:`ghost`,size:`icon`,className:`lg:hidden h-8 w-8 shrink-0`,"data-testid":`action:command-palette:open-mobile`,onClick:b,"aria-label":N(`console.search`,{defaultValue:`Search…`}),children:(0,Q.jsx)($n,{className:`h-4 w-4`})})]}),(0,Q.jsxs)(`div`,{"data-topbar-group":!0,className:`flex items-center gap-0.5 shrink-0`,children:[(0,Q.jsx)(zc,{notifications:U,unreadCount:he,pendingApprovalsCount:me,activities:Se,onMarkAllRead:ye,onMarkRead:ve,onMarkManyRead:be}),Re&&(0,Q.jsx)(Y,{variant:`ghost`,size:`icon`,className:`h-8 w-8 shrink-0`,asChild:!0,"data-testid":`app-design-in-studio-button`,"aria-label":N(`topbar.designInStudio`,{defaultValue:`Design in Studio`}),title:N(`topbar.designInStudio`,{defaultValue:`Design in Studio`}),children:(0,Q.jsx)(n,{to:Re,children:(0,Q.jsx)(Gt,{className:`h-4 w-4`})})}),j&&(0,Q.jsx)(Y,{variant:`ghost`,size:`icon`,className:`h-8 w-8 shrink-0`,asChild:!0,"aria-label":N(`topbar.aiAssistant`,{defaultValue:`AI Assistant`}),children:(0,Q.jsx)(n,{to:`/ai`,children:(0,Q.jsx)(bt,{className:`h-4 w-4`})})}),(0,Q.jsxs)(Nt,{onOpenChange:e=>{e&&le()},children:[(0,Q.jsx)(Fr,{asChild:!0,children:(0,Q.jsx)(Y,{variant:`ghost`,size:`icon`,className:`h-8 w-8 hidden md:flex shrink-0`,"aria-label":N(`sidebar.helpTooltip`,{defaultValue:`Help & Documentation`}),children:(0,Q.jsx)(dn,{className:`h-4 w-4`})})}),(0,Q.jsxs)(ui,{align:`end`,className:`min-w-56 rounded-lg`,sideOffset:4,children:[Le.length>0&&Ie?(0,Q.jsxs)(Yt,{className:`cursor-pointer`,onClick:()=>_(Le.length===1?`/apps/${Ie}/docs/${Le[0].name}`:`/apps/${Ie}/docs`),children:[(0,Q.jsx)(Ye,{className:`mr-2 h-4 w-4`}),N(`help.appDocs`,{defaultValue:`This app's docs`})]}):null,(0,Q.jsxs)(Yt,{className:`cursor-pointer`,onClick:()=>_(`/docs`),children:[(0,Q.jsx)(Tt,{className:`mr-2 h-4 w-4`}),N(`help.allDocs`,{defaultValue:`All documentation`})]}),p?(0,Q.jsxs)(Yt,{className:`cursor-pointer`,"data-testid":`action:keyboard-shortcuts:open`,onClick:x,children:[(0,Q.jsx)(Ne,{className:`mr-2 h-4 w-4`}),N(`help.keyboardShortcuts`,{defaultValue:`Keyboard shortcuts`})]}):null,(0,Q.jsx)(Wt,{}),(0,Q.jsx)(Yt,{asChild:!0,className:`cursor-pointer`,children:(0,Q.jsxs)(`a`,{href:`https://docs.objectstack.ai`,target:`_blank`,rel:`noopener noreferrer`,children:[(0,Q.jsx)(zt,{className:`mr-2 h-4 w-4`}),N(`help.onlineDocs`,{defaultValue:`Online documentation`})]})})]})]})]}),(0,Q.jsxs)(`div`,{"data-topbar-group":!0,className:`flex items-center gap-0.5 shrink-0`,children:[` `,(0,Q.jsxs)(Nt,{children:[(0,Q.jsx)(Fr,{asChild:!0,children:(0,Q.jsx)(Y,{variant:`ghost`,size:`icon`,className:`h-8 w-8 shrink-0 rounded-full`,children:(0,Q.jsxs)(vt,{className:`h-7 w-7 rounded-full`,children:[(0,Q.jsx)(Dt,{src:S?.image,alt:S?.name??`User`}),(0,Q.jsx)(Ct,{className:`rounded-full bg-primary text-primary-foreground text-xs`,children:y(S)})]})})}),(0,Q.jsxs)(ui,{align:`end`,className:`min-w-64 rounded-lg`,sideOffset:4,children:[(0,Q.jsx)(tt,{className:`p-0 font-normal`,children:(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 px-2 py-2`,children:[(0,Q.jsxs)(vt,{className:`h-8 w-8 rounded-lg`,children:[(0,Q.jsx)(Dt,{src:S?.image,alt:S?.name??`User`}),(0,Q.jsx)(Ct,{className:`rounded-lg bg-primary text-primary-foreground`,children:y(S)})]}),(0,Q.jsxs)(`div`,{className:`grid flex-1 text-left text-sm leading-tight`,children:[(0,Q.jsx)(`span`,{className:`truncate font-semibold`,children:S?.name??`User`}),(0,Q.jsx)(`span`,{className:`truncate text-xs text-muted-foreground`,children:S?.email??``})]})]})}),(0,Q.jsx)(Wt,{}),(0,Q.jsxs)(Fe,{children:[(0,Q.jsxs)(Yt,{onClick:()=>_(`/apps/account/component/account/profile_card`),className:`cursor-pointer`,children:[(0,Q.jsx)(lr,{className:`mr-2 h-4 w-4`}),N(`user.profile`,{defaultValue:`Profile`})]}),Ce&&!we&&(0,Q.jsxs)(Yt,{onClick:()=>_(`/organizations?create=1`),className:`cursor-pointer`,"data-testid":`header-create-workspace`,children:[(0,Q.jsx)(Ue,{className:`mr-2 h-4 w-4`}),N(`organizations.create`,{defaultValue:`Create workspace`})]}),(L||[]).filter(e=>e.active!==!1&&e.hidden===!0&&e.name!==`account`).map(e=>{let t=Yo(e.icon),n=I({name:e.name,label:xa(e.label,N)});return(0,Q.jsxs)(Yt,{onClick:()=>_(`/apps/${va(e)??e.name}`),className:`cursor-pointer`,children:[(0,Q.jsx)(t,{className:`mr-2 h-4 w-4`}),n]},`hidden_app_${e.name}`)})]}),(0,Q.jsx)(Wt,{}),(0,Q.jsx)(tt,{className:`text-[11px] font-normal text-muted-foreground uppercase tracking-wide px-2`,children:N(`user.preferences`,{defaultValue:`Preferences`})}),(0,Q.jsxs)(`div`,{className:`flex items-center justify-between px-2 py-1.5 text-sm`,children:[(0,Q.jsx)(`span`,{className:`text-foreground/80`,children:N(`user.theme`,{defaultValue:`Theme`})}),(0,Q.jsx)(Tc,{})]}),(0,Q.jsxs)(`div`,{className:`flex items-center justify-between px-2 py-1.5 text-sm`,children:[(0,Q.jsx)(`span`,{className:`text-foreground/80`,children:N(`user.language`,{defaultValue:`Language`})}),(0,Q.jsx)(Pc,{})]}),w&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Wt,{}),(0,Q.jsxs)(Yt,{className:`text-destructive focus:text-destructive`,onClick:()=>C(),children:[(0,Q.jsx)(Yn,{className:`mr-2 h-4 w-4`}),N(`user.logout`,{defaultValue:`Log out`})]})]})]})]})]})]})]})}var Dl=`ai-chat-dock-width`,Ol=`ai-chat-dock-expanded`,kl=`ai-chat-studio-dock-expanded`,Al=`ai-chat-studio-dock-width`;function jl(e,t){let n=t>0?Math.max(340,t-520):1/0;return Math.min(Math.max(e,340),n)}function Ml(e){return jl(e,e)}function Nl(e){return e===`1`||e!==`0`&&null}function Pl(e,t){try{let n=Nl(window.sessionStorage.getItem(e));return n===null?t:n}catch{return t}}function Fl(e,t){try{window.sessionStorage.setItem(e,t?`1`:`0`)}catch{}}function Il(){Fl(Ol,!0)}var Ll=`ai-chat-dock-return-to`;function Rl(e){try{window.sessionStorage.setItem(Ll,e)}catch{}}function zl(){try{let e=window.sessionStorage.getItem(Ll);return e&&e.startsWith(`/`)&&!e.startsWith(`//`)?e:void 0}catch{return}}function Bl(e){return!(e.metaKey||e.ctrlKey)||!e.shiftKey||e.altKey?null:e.key.toLowerCase()===`i`?`toggle`:null}async function Vl(e){let t=await fetch(`/api/v1/meta/_drafts?packageId=${encodeURIComponent(e)}`,{credentials:`include`,headers:{Accept:`application/json`},cache:`no-store`});if(!t.ok)throw Error(`_drafts HTTP ${t.status}`);let n=await t.json(),r=Array.isArray(n)?n:n?.drafts??n?.data?.drafts??[];return Array.isArray(r)?r.length:0}function Hl(e){return{status:`drafted`,drafted:e.items,...e.summary?{summary:e.summary}:{},...e.packageId?{packageId:e.packageId}:{},...e.autoPublishable?{autoPublishable:!0}:{},...e.failedCount?{failed:Array.from({length:e.failedCount},()=>null)}:{},...e.materialized?{materialized:!0}:{},...e.verification?{verification:e.verification}:{},...e.issues&&e.issues.length?{issues:e.issues}:{},...e.nextSteps&&e.nextSteps.length?{nextSteps:e.nextSteps}:{}}}function Ul(e){return{status:`blueprint_proposed`,...e.summary?{summary:e.summary}:{},counts:e.counts,questions:e.questions,...e.targetApp?{targetApp:e.targetApp}:{},blueprint:{objects:e.objects.map(e=>({name:e.name,...e.label?{label:e.label}:{},fields:Array.from({length:e.fieldCount},()=>null)})),assumptions:e.assumptions}}}var Wl=`objectstack:ai-chat-conversation-id`,Gl=`objectstack:ai-chat-messages`;function Kl(e,t){return t?`${Wl}:${e}:${t}`:`${Wl}:${e}`}function ql(e){try{return localStorage.getItem(e)??void 0}catch{return}}function Jl(e,t){try{t?localStorage.setItem(e,t):localStorage.removeItem(e)}catch{}}function Yl(e){return`${Gl}:${e}`}function Xl(){try{let e=[];for(let t=0;t<localStorage.length;t+=1){let n=localStorage.key(t);n&&(n.startsWith(Wl)||n.startsWith(Gl))&&e.push(n)}e.forEach(e=>localStorage.removeItem(e))}catch{}}function Zl(e){try{let t=localStorage.getItem(Yl(e));if(!t)return[];let n=JSON.parse(t);return Array.isArray(n)?n.filter(e=>!!e&&typeof e==`object`&&typeof e.id==`string`&&(e.role===`user`||e.role===`assistant`||e.role===`system`)&&Array.isArray(e.parts)):[]}catch{return[]}}function Ql(e,t){if(e)try{if(t.length===0){localStorage.removeItem(Yl(e));return}localStorage.setItem(Yl(e),JSON.stringify(t))}catch{}}function $l(e){return e.map(e=>{let t=[];if(e.content&&t.push({type:`text`,text:e.content}),e.role===`assistant`)for(let n of e.toolInvocations??[]){let e=n.draftReview?Hl(n.draftReview):n.proposedPlan?Ul(n.proposedPlan):void 0;t.push({type:`tool-${n.toolName}`,toolCallId:n.toolCallId,toolName:n.toolName,state:n.state??(n.errorText?`output-error`:`output-available`),...n.errorText?{errorText:n.errorText}:{},...e===void 0?{}:{output:e}})}if(t.length!==0)return{id:e.id,role:e.role,parts:t}}).filter(e=>!!e)}function eu(e){return typeof e==`string`?e?[{type:`text`,text:e}]:[]:Array.isArray(e)?e.map(e=>{if(typeof e==`string`)return e?{type:`text`,text:e}:void 0;if(e&&typeof e==`object`&&`type`in e&&typeof e.type==`string`)return e;if(e&&typeof e==`object`&&`text`in e&&typeof e.text==`string`)return{type:`text`,text:e.text}}).filter(e=>!!e):e&&typeof e==`object`&&`parts`in e&&Array.isArray(e.parts)?eu(e.parts):[]}function tu(e,t){for(let n of eu(e)){let e=typeof n.toolCallId==`string`?n.toolCallId:void 0;if(!e)continue;let r=t.get(e);if(!r)continue;let i=n.output??n.result;if(i===void 0)continue;r.output=i;let a=n.errorText;r.state=n.isError||typeof a==`string`?`output-error`:`output-available`,typeof a==`string`&&(r.errorText=a)}}function nu(e){if(!e)return[];let t=[],n=new Map;return e.forEach((e,r)=>{let i=e.role;if(i===`tool`){tu(e.content,n);return}if(i!==`user`&&i!==`assistant`&&i!==`system`)return;let a=eu(e.content);if(a.length!==0){if(i===`assistant`)for(let e of a){e.type===`tool-call`&&typeof e.toolName==`string`&&e.toolName&&(e.type=`tool-${e.toolName}`);let t=typeof e.toolCallId==`string`?e.toolCallId:void 0;t&&(e.type===`tool-call`||e.type.startsWith(`tool-`))&&n.set(t,e)}t.push({id:e.id??`msg-${r}`,role:i,parts:a})}}),t}function ru(e){if(!(typeof e!=`string`||!e))try{let t=JSON.parse(e);return Array.isArray(t)?t:void 0}catch{return}}function iu(e){return e?e.map(e=>{let t=e.id,n=typeof e.content==`string`?e.content:``;if(e.role===`assistant`){let r=ru(e.tool_calls);if(r&&r.length>0){let e=[];return n&&e.push({type:`text`,text:n}),e.push(...r),{id:t,role:`assistant`,content:e}}return{id:t,role:`assistant`,content:n}}if(e.role===`tool`){let r=ru(e.content);return r&&r.length>0&&r[0]?.type===`tool-result`?{id:t,role:`tool`,content:r}:{id:t,role:`tool`,content:[{type:`tool-result`,toolCallId:e.tool_call_id??``,toolName:`unknown`,output:{type:`text`,value:n}}]}}return{id:t,role:e.role,content:n}}):[]}async function au(e,t){let n=await fetch(`${e}/conversations/${encodeURIComponent(t)}`,{credentials:`include`});if(n.status===404||n.status===403)return null;if(!n.ok)throw Error(`GET conversation failed: ${n.status}`);return await n.json()}async function ou(e){let t=await fetch(`${e}/conversations`,{method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`},body:`{}`});if(!t.ok)throw Error(`POST conversation failed: ${t.status}`);return await t.json()}async function su(e,t){await fetch(`${e}/conversations/${encodeURIComponent(t)}`,{method:`DELETE`,credentials:`include`}).catch(()=>{})}function cu(e){let{userId:t,scope:n,apiBase:r,activeId:i,forceNew:a,resumeMode:o=`resume`,legacyScope:s,adoptLegacy:c}=e,l=(0,$.useRef)(c);l.current=c;let[u,d]=(0,$.useState)(void 0),[f,p]=(0,$.useState)([]),[m,h]=(0,$.useState)(!!t),g=(0,$.useRef)(!0),_=(0,$.useRef)(void 0),v=(0,$.useRef)(void 0),y=(0,$.useRef)(t);(0,$.useEffect)(()=>(g.current=!0,()=>{g.current=!1}),[]),(0,$.useEffect)(()=>{let e=y.current;y.current=t,e&&e!==t&&Xl()},[t]),(0,$.useEffect)(()=>{if(!t){d(void 0),p([]),h(!1),_.current=void 0,v.current=void 0;return}let e=v.current!==n;if(!i&&!a&&!e&&_.current===t&&u)return;let c=!1,f=Kl(t,n);return!i&&(a||e&&_.current===t)&&(d(void 0),p([])),h(!0),(async()=>{let e=i;try{if(i){let a=await au(r,i);if(c)return;if(a){Jl(f,a.id),d(a.id);let e=nu(a.messages),r=e.length>0?e:Zl(a.id);(r.length>0||a.id!==u)&&p(r),_.current=t,v.current=n;return}e=void 0,Jl(f,void 0),Ql(i,[])}else if(!a){let i=ql(f);if(e=i,!i&&s&&l.current){let e=ql(Kl(t,s));if(e){try{let i=await au(r,e);if(c)return;if(i){let e=nu(i.messages),r=e.length>0?e:Zl(i.id);if(l.current?.(r)){Jl(f,i.id),d(i.id),p(r),_.current=t,v.current=n;return}}}catch{}if(c)return}}if(i){let a=await au(r,i);if(c)return;if(a){let r=nu(a.messages);if(o!==`fresh`||r.length===0){d(a.id),p(o===`fresh`?[]:r.length>0?r:Zl(a.id)),_.current=t,v.current=n;return}e=void 0}else e=void 0,Jl(f,void 0),Ql(i,[])}}let m=await ou(r);if(c)return;Jl(f,m.id),d(m.id),p(nu(m.messages)),_.current=t,v.current=n}catch{if(c||e&&e===u)return;d(void 0),p([])}finally{c||h(!1)}})(),()=>{c=!0}},[t,n,r,i,a,o,s]);let b=(0,$.useCallback)(async()=>{if(!t)return;let e=Kl(t,n);h(!0);try{u&&await su(r,u),Ql(u,[]),Jl(e,void 0);let t=await ou(r);if(Jl(e,t.id),Ql(t.id,[]),!g.current)return;d(t.id),p([])}catch{g.current&&(d(void 0),p([]))}finally{g.current&&h(!1)}},[u,t,n,r]),x=(0,$.useCallback)(async()=>{if(!t)return;let e=Kl(t,n);h(!0);try{let i=await ou(r);if(Jl(e,i.id),Ql(i.id,[]),!g.current)return;d(i.id),p([]),_.current=t,v.current=n}catch{}finally{g.current&&h(!1)}},[t,n,r]),S=(0,$.useCallback)(e=>{!t||!u||(Jl(Kl(t,e),u),_.current=t,v.current=e)},[t,u]);return{conversationId:u,conversationScope:v.current,initialMessages:f,isLoading:m,reset:b,startNew:x,rekeyScope:S}}function lu(e){if(!e||e.length===0)return!1;let t=e[e.length-1];return!t||t.role!==`assistant`?!1:t.parts.some(e=>e.type===`text`&&String(e.text??``).trim().length>0)}function uu(e){let{chatApi:t,conversationId:n}=e,[r,i]=(0,$.useState)(!1),a=(0,$.useRef)(void 0);return{errorSuppressed:r,handleChatError:(0,$.useCallback)(async e=>{if(e?.notSent){i(!1);return}let r=t?.replace(/\/agents\/[^/]+\/chat$/,``);if(!n||!r){i(!1);return}try{let e=nu((await au(r,n))?.messages);if(lu(e)&&a.current){a.current(e),i(!0);return}}catch{}i(!1)},[n,t]),setMessagesRef:a,resetSuppression:(0,$.useCallback)(()=>i(!1),[])}}function du(e){return e&&Aa(e)?`build`:`ask`}function fu({appId:e,product:t}){return e?`app:${e}:${t}`:t}var pu=new Set([`new chat`,`new conversation`,`untitled`,`新对话`]);function mu(e){let t=e?.trim().toLowerCase();return!t||pu.has(t)}function hu(e){let t=e.messages;if(!t||t.length===0)return;for(let e=t.length-1;e>=0;e--){let n=t[e];if(n.role===`user`){let e=gu(n.content);if(e)return e}}let n=t[t.length-1];return gu(n?.content)}function gu(e){if(typeof e==`string`)return e.slice(0,140);if(e&&typeof e==`object`&&`text`in e&&typeof e.text==`string`)return e.text.slice(0,140);if(e&&typeof e==`object`&&`parts`in e&&Array.isArray(e.parts))return gu(e.parts);if(Array.isArray(e)){let t=e.map(e=>typeof e==`string`?e:e&&typeof e==`object`&&`text`in e&&typeof e.text==`string`?e.text:``).join(``);return t?t.slice(0,140):void 0}}function _u(e){let t=e.title?.trim(),n=hu(e)??gu(e.preview);return{id:e.id,title:mu(t)?void 0:t,agentId:e.agentId,createdAt:e.createdAt,updatedAt:e.updatedAt,preview:n}}async function vu(e,t){let n=await fetch(`${e}/conversations/${encodeURIComponent(t)}`,{credentials:`include`});if(!n.ok)return;let r=await n.json();return _u(`conversation`in r&&r.conversation?r.conversation:r)}function yu(e){let{userId:t,apiBase:n,limit:r=50,refreshKey:i}=e,[a,o]=(0,$.useState)([]),[s,c]=(0,$.useState)(!!t),[l,u]=(0,$.useState)(void 0),[d,f]=(0,$.useState)(0),p=(0,$.useCallback)(async()=>{f(e=>e+1)},[]),m=(0,$.useCallback)(async e=>{try{await fetch(`${n}/conversations/${encodeURIComponent(e)}`,{method:`DELETE`,credentials:`include`})}finally{o(t=>t.filter(t=>t.id!==e))}},[n]),h=(0,$.useCallback)(async(e,t)=>{let r=t.trim();o(t=>t.map(t=>t.id===e?{...t,title:r||void 0}:t));let i=await fetch(`${n}/conversations/${encodeURIComponent(e)}`,{method:`PATCH`,credentials:`include`,headers:{"Content-Type":`application/json`},body:JSON.stringify({title:r})});if(!i.ok)throw f(e=>e+1),Error(`PATCH conversation failed: ${i.status}`)},[n]);return(0,$.useEffect)(()=>{if(!t){o([]),c(!1),u(void 0);return}let e=!1;return c(!0),u(void 0),(async()=>{try{let t=await fetch(`${n}/conversations?limit=${encodeURIComponent(String(r))}`,{credentials:`include`});if(!t.ok)throw Error(`GET conversations failed: ${t.status}`);let i=await t.json(),a=Array.isArray(i)?i:i.conversations??i.items??[];if(e)return;let s=a.map(_u).sort((e,t)=>(t.updatedAt??``).localeCompare(e.updatedAt??``));o(s);let c=s.filter(e=>!e.title&&!e.preview).slice(0,20);if(c.length>0){let t=await Promise.all(c.map(e=>vu(n,e.id).catch(()=>void 0)));if(e)return;let r=new Map(t.filter(e=>!!(e?.preview||e?.title)).map(e=>[e.id,e]));r.size>0&&o(e=>e.map(e=>{let t=r.get(e.id);return t?{...e,title:e.title??t.title,preview:e.preview??t.preview}:e}))}}catch(t){if(e)return;u(t instanceof Error?t:Error(String(t))),o([])}finally{e||c(!1)}})(),()=>{e=!0}},[t,n,r,d,i]),{conversations:a,isLoading:s,error:l,refetch:p,remove:m,rename:h}}function bu(e,t){if(!e)return``;let n=new Date(e);if(Number.isNaN(n.getTime()))return``;let r=Date.now()-n.getTime(),i=6e4,a=60*i,o=24*a;return r<i?t(`console.ai.justNow`):r<a?t(`console.ai.minutesAgo`,{count:Math.floor(r/i)}):r<o?t(`console.ai.hoursAgo`,{count:Math.floor(r/a)}):r<7*o?t(`console.ai.daysAgo`,{count:Math.floor(r/o)}):n.toLocaleDateString()}function xu(e){if(!e)return``;let t=new Date(e);return Number.isNaN(t.getTime())?``:t.toLocaleString()}var Su=[`today`,`yesterday`,`previous7Days`,`previous30Days`,`older`],Cu={today:`Today`,yesterday:`Yesterday`,previous7Days:`Previous 7 days`,previous30Days:`Previous 30 days`,older:`Older`};function wu(e,t=Date.now()){let n=new Date(t);n.setHours(0,0,0,0);let r=n.getTime(),i=864e5,a=e=>{let t=new Date(e.updatedAt??e.createdAt??0).getTime();return Number.isNaN(t)?0:t},o={today:[],yesterday:[],previous7Days:[],previous30Days:[],older:[]};for(let t of[...e].sort((e,t)=>a(t)-a(e))){let e=a(t);e>=r?o.today.push(t):e>=r-i?o.yesterday.push(t):e>=r-7*i?o.previous7Days.push(t):e>=r-30*i?o.previous30Days.push(t):o.older.push(t)}return Su.filter(e=>o[e].length>0).map(e=>({key:e,items:o[e]}))}function Tu({userId:e,apiBase:t,activeAgent:n,className:r,refreshKey:i,titleHints:o,onNavigate:s}){let{t:c}=V(),u=a(),{conversationId:d}=l(),{conversations:f,isLoading:p,error:m,remove:h,rename:g}=yu({userId:e,apiBase:t,refreshKey:i}),[_,v]=(0,$.useState)(``),[y,b]=(0,$.useState)(void 0),x=n?Pa(n):void 0,S=(0,$.useMemo)(()=>n?new Set(Fa(n)):void 0,[n]),C=(0,$.useMemo)(()=>f.map(e=>{let t=o?.[e.id]?.trim();return!t||e.title?.trim()||e.preview?.trim()?e:{...e,preview:t}}),[f,o]),w=(0,$.useMemo)(()=>S?C.filter(e=>!e.agentId||S.has(e.agentId)||e.id===d):C,[C,S,d]),T=(0,$.useMemo)(()=>{let e=_.trim().toLowerCase();return e?w.filter(t=>`${t.title??``} ${t.preview??``}`.toLowerCase().includes(e)):w},[w,_]),E=(0,$.useCallback)(e=>{let t=e.agentId?Pa(e.agentId):x;return t?`/ai/${t}/${e.id}`:`/ai/${e.id}`},[x]),D=(0,$.useCallback)(()=>{u(x?`/ai/${x}?new=1`:`/ai?new=1`),s?.()},[u,x,s]),O=(0,$.useCallback)(async(e,t)=>{e.stopPropagation(),await h(t),t===d&&(u(x?`/ai/${x}`:`/ai`,{replace:!0}),s?.())},[h,d,u,x,s]),k=(0,$.useCallback)(async(e,t)=>{b(void 0);try{await g(e,t)}catch{}},[g]);return(0,Q.jsxs)(`aside`,{className:Fn(`flex h-full min-h-0 flex-col bg-muted/30`,r),"data-testid":`ai-conversations-sidebar`,children:[(0,Q.jsxs)(`div`,{className:`flex shrink-0 flex-col gap-2 border-b px-3 py-2`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,Q.jsx)(`span`,{className:`text-sm font-medium`,children:c(`console.ai.chats`)}),(0,Q.jsxs)(Y,{size:`sm`,variant:`outline`,onClick:D,"data-testid":`ai-new-chat`,children:[(0,Q.jsx)(Ue,{className:`h-3.5 w-3.5`}),c(`console.ai.newChat`)]})]}),(0,Q.jsxs)(`div`,{className:`relative`,children:[(0,Q.jsx)($n,{className:`pointer-events-none absolute left-2 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground`}),(0,Q.jsx)(St,{value:_,onChange:e=>v(e.target.value),placeholder:c(`console.ai.searchChats`),className:`h-7 pl-7 text-xs`,"data-testid":`ai-conversations-search`})]})]}),(0,Q.jsx)(Ge,{className:`flex-1 min-h-0`,children:p&&f.length===0?(0,Q.jsx)(`div`,{className:`px-3 py-4 text-xs text-muted-foreground`,children:c(`common.loading`)}):m?(0,Q.jsx)(`div`,{className:`px-3 py-4 text-xs text-destructive`,children:m.message}):w.length===0?(0,Q.jsxs)(vr,{className:`px-3 py-8`,children:[(0,Q.jsx)(Er,{className:`h-8 w-8 text-muted-foreground`}),(0,Q.jsx)(ei,{children:c(`console.ai.noChatsYet`)}),(0,Q.jsx)(Qn,{children:c(`console.ai.noChatsDescription`)})]}):T.length===0?(0,Q.jsx)(`div`,{className:`px-3 py-4 text-xs text-muted-foreground`,children:c(`console.ai.noMatchingChats`)}):(0,Q.jsx)(`div`,{className:`flex flex-col py-1`,children:wu(T).map(e=>(0,Q.jsxs)(`section`,{"data-testid":`ai-conversation-group-${e.key}`,children:[(0,Q.jsx)(`h3`,{className:`px-3 pb-1 pt-3 text-[10px] font-medium uppercase tracking-wide text-muted-foreground`,children:c(`console.ai.group.${e.key}`,{defaultValue:Cu[e.key]})}),(0,Q.jsx)(`ul`,{className:`flex flex-col`,children:e.items.map(e=>(0,Q.jsx)(Du,{conversation:e,query:_.trim(),active:e.id===d,renaming:e.id===y,onSelect:()=>{u(E(e)),s?.()},onDelete:t=>O(t,e.id),onStartRename:()=>b(e.id),onCancelRename:()=>b(void 0),onSubmitRename:t=>k(e.id,t)},e.id))})]},e.key))})})]})}function Eu(e,t){if(!e)return e??null;let n=t?.trim().toLowerCase();if(!n)return e;let r=e.toLowerCase(),i=[],a=0,o=0;for(;;){let t=r.indexOf(n,a);if(t===-1){i.push(e.slice(a));break}t>a&&i.push(e.slice(a,t)),i.push((0,Q.jsx)(`mark`,{className:`rounded-[2px] bg-primary/20 px-0.5 text-foreground`,children:e.slice(t,t+n.length)},o++)),a=t+n.length}return i}function Du({conversation:e,query:t,active:n,renaming:r,onSelect:i,onDelete:a,onStartRename:o,onCancelRename:s,onSubmitRename:c}){let{t:l}=V(),u=e.title?.trim()||e.preview?.trim()||l(`console.ai.newConversation`),[d,f]=(0,$.useState)(u),p=(0,$.useRef)(null);return(0,$.useEffect)(()=>{r&&(f(e.title?.trim()||e.preview?.trim()||``),setTimeout(()=>p.current?.select(),0))},[r,e.title,e.preview]),r?(0,Q.jsx)(`li`,{children:(0,Q.jsxs)(`div`,{className:Fn(`flex w-full items-center gap-1 border-l-2 px-3 py-2`,n?`border-primary bg-accent`:`border-transparent`),"data-testid":`ai-conversation-rename-row-${e.id}`,children:[(0,Q.jsx)(St,{ref:p,value:d,onChange:e=>f(e.target.value),onKeyDown:e=>{e.key===`Enter`?(e.preventDefault(),c(d)):e.key===`Escape`&&(e.preventDefault(),s())},className:`h-7 flex-1 text-sm`,"data-testid":`ai-conversation-rename-input-${e.id}`,"aria-label":l(`console.ai.renameConversation`)}),(0,Q.jsx)(Y,{size:`sm`,variant:`ghost`,className:`h-7 w-7 p-0`,onClick:()=>c(d),"data-testid":`ai-conversation-rename-confirm-${e.id}`,"aria-label":l(`console.ai.saveRename`),children:(0,Q.jsx)(pr,{className:`h-3.5 w-3.5`})}),(0,Q.jsx)(Y,{size:`sm`,variant:`ghost`,className:`h-7 w-7 p-0`,onClick:s,"aria-label":l(`console.ai.cancelRename`),children:(0,Q.jsx)(Pn,{className:`h-3.5 w-3.5`})})]})}):(0,Q.jsx)(`li`,{children:(0,Q.jsxs)(`div`,{className:Fn(`group flex w-full items-start gap-2 border-l-2 border-transparent px-3 py-2 text-sm transition-colors hover:bg-accent/50`,n&&`border-primary bg-accent`),"data-testid":`ai-conversation-row-${e.id}`,children:[(0,Q.jsxs)(`button`,{type:`button`,onClick:i,className:`min-w-0 flex-1 text-left`,"data-testid":`ai-conversation-select-${e.id}`,children:[(0,Q.jsx)(`span`,{className:`line-clamp-1 font-medium`,children:Eu(u,t)}),e.preview&&e.preview!==u?(0,Q.jsx)(`span`,{className:`mt-0.5 block line-clamp-1 text-xs text-muted-foreground`,children:Eu(e.preview,t)}):null,(0,Q.jsx)(`span`,{className:`mt-0.5 block text-[10px] text-muted-foreground`,title:xu(e.updatedAt??e.createdAt),children:bu(e.updatedAt??e.createdAt,l)})]}),(0,Q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-0.5 opacity-0 transition-opacity group-focus-within:opacity-100 group-hover:opacity-100`,children:[(0,Q.jsx)(Y,{type:`button`,size:`sm`,variant:`ghost`,className:`h-7 w-7 p-0 hover:text-primary`,onClick:o,"data-testid":`ai-conversation-rename-${e.id}`,"aria-label":l(`console.ai.renameConversation`),children:(0,Q.jsx)(yt,{className:`h-3.5 w-3.5`})}),(0,Q.jsx)(Y,{type:`button`,size:`sm`,variant:`ghost`,className:`h-7 w-7 p-0 hover:text-destructive`,onClick:a,"data-testid":`ai-conversation-delete-${e.id}`,"aria-label":l(`console.ai.deleteConversation`),children:(0,Q.jsx)(bn,{className:`h-3.5 w-3.5`})})]})]})})}function Ou(){return typeof window>`u`?``:window.location.pathname.startsWith(`/_console`)?`/_console`:``}function ku(e,t){let n=`${Ou()}/apps/${encodeURIComponent(e)}`;return t?n:`${n}?preview=draft`}function Au({appName:e,appSegment:t,materialized:n=!1,refreshKey:r,onClose:i}){let{t:o}=V(),s=a(),c=(0,$.useRef)(null),l=t&&t.length?t:e;return(0,$.useEffect)(()=>{if(!c.current)return;let e=ku(l,n);try{c.current.getAttribute(`src`)!==e&&c.current.setAttribute(`src`,e)}catch{}},[l,n]),(0,$.useEffect)(()=>{if(r>0)try{c.current?.contentWindow?.location.reload()}catch{}},[r]),(0,Q.jsxs)(`div`,{className:`flex h-full min-h-0 flex-1 flex-col border-l`,"data-testid":`live-canvas`,children:[(0,Q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2 border-b bg-muted/30 px-3 py-1.5 text-xs text-muted-foreground`,children:[(0,Q.jsx)(Cn,{className:`h-3.5 w-3.5`}),(0,Q.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:n?o(`console.ai.liveCanvasUnlisted`,{app:e,defaultValue:`Live app — {{app}} (unlisted until published)`}):o(`console.ai.liveCanvas`,{app:e,defaultValue:`Live preview — {{app}} (draft)`})}),t&&(0,Q.jsxs)(Y,{size:`sm`,variant:`ghost`,onClick:()=>s(`/studio/${t}/interfaces`),"data-testid":`live-canvas-open-designer`,className:`gap-1.5`,title:o(`topbar.designInStudio`,{defaultValue:`Design in Studio`}),"aria-label":o(`topbar.designInStudio`,{defaultValue:`Design in Studio`}),children:[(0,Q.jsx)(Gt,{className:`h-3.5 w-3.5`}),(0,Q.jsx)(`span`,{className:`hidden sm:inline`,children:o(`topbar.designInStudio`,{defaultValue:`Design in Studio`})})]}),(0,Q.jsx)(Y,{size:`sm`,variant:`ghost`,onClick:i,"data-testid":`live-canvas-close`,children:(0,Q.jsx)(Pn,{className:`h-3.5 w-3.5`})})]}),(0,Q.jsx)(`iframe`,{ref:c,title:`Draft preview: ${e}`,src:ku(l,n),className:`h-full w-full flex-1 border-0 bg-background`,"data-testid":`live-canvas-frame`})]})}function ju(e,t,n){let r=`/studio/${encodeURIComponent(e)}/${t}`;return n?`${r}?${Ja}=${encodeURIComponent(Ya(n))}`:r}function Mu(e,t){if(!e)return null;let n=t.name?.trim();if(!n)return null;switch(t.type){case`object`:return ju(e,`data`,{type:`object`,name:n});case`flow`:return ju(e,`automations`,{type:`flow`,name:n});case`dashboard`:return ju(e,`interfaces`,{type:`dashboard`,name:n});case`page`:return ju(e,`interfaces`,{type:`page`,name:n});case`view`:{let t=n.indexOf(`.`);return ju(e,`interfaces`,{type:`object`,name:t>0?n.slice(0,t):n})}case`app`:return ju(e,`interfaces`);default:return null}}async function Nu(e,t){let n=await fetch(`${e}/conversations/${encodeURIComponent(t)}/debug`,{credentials:`include`});if(n.status===404||n.status===403||n.status===401)return null;if(!n.ok)throw Error(`GET build debug failed: ${n.status}`);return await n.json()}function Pu({apiBase:e,conversationId:t,open:n,onOpenChange:r}){let[i,a]=(0,$.useState)(null),[o,s]=(0,$.useState)(!1),[c,l]=(0,$.useState)(null);(0,$.useEffect)(()=>{if(!n||!t)return;let r=!1;return s(!0),l(null),a(null),Nu(e,t).then(e=>{r||(e?a(e):l(`Not available — the conversation was not found or you are not authorized.`))}).catch(e=>{r||l(e instanceof Error?e.message:String(e))}).finally(()=>{r||s(!1)}),()=>{r=!0}},[n,t,e]);let u=i?.reconciliation,d=u?u.orphaned.length+u.missing.length+u.errors.length:0;return(0,Q.jsx)(Jn,{open:n,onOpenChange:r,children:(0,Q.jsxs)(Un,{side:`right`,className:`w-full overflow-y-auto sm:max-w-xl`,children:[(0,Q.jsxs)(Qr,{children:[(0,Q.jsxs)(oi,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(Be,{className:`h-4 w-4`}),` Build Doctor`]}),(0,Q.jsx)(hn,{children:`What the agent claimed vs what is actually live. Read-only diagnostic.`})]}),(0,Q.jsxs)(`div`,{className:`mt-4 space-y-4 text-sm`,children:[o&&(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 text-muted-foreground`,children:[(0,Q.jsx)(J,{className:`h-4 w-4 animate-spin`}),` Reconciling…`]}),c&&!o&&(0,Q.jsx)(`div`,{className:`rounded-md border border-destructive/30 bg-destructive/10 p-3 text-destructive`,children:c}),i&&!o&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`rounded-md border bg-muted/30 p-3 text-xs text-muted-foreground`,children:[(0,Q.jsx)(`div`,{className:`font-medium text-foreground`,children:i.title??`(untitled)`}),(0,Q.jsxs)(`div`,{className:`mt-1`,children:[i.summary.userTurns,` turn(s) · `,i.summary.messages,` msgs ·`,` `,i.summary.totalTokens.toLocaleString(),` tok ·`,` `,(i.summary.llmMs/1e3).toFixed(1),`s LLM`,i.summary.models.length?` · ${i.summary.models.join(`, `)}`:``]})]}),u&&(0,Q.jsxs)(`div`,{className:u.ok?`flex items-center gap-2 rounded-md border border-emerald-500/30 bg-emerald-500/10 p-3 text-emerald-700 dark:text-emerald-400`:`flex items-center gap-2 rounded-md border border-destructive/30 bg-destructive/10 p-3 text-destructive`,children:[u.ok?(0,Q.jsx)(br,{className:`h-4 w-4`}):(0,Q.jsx)(mn,{className:`h-4 w-4`}),(0,Q.jsx)(`span`,{className:`font-medium`,children:u.ok?`All ${u.liveCount} attempted change(s) are live — nothing evaporated.`:`${d} discrepancy(ies) — what the chat said doesn't match what's live.`})]}),u&&u.orphaned.length>0&&(0,Q.jsx)(Fu,{icon:(0,Q.jsx)(nn,{className:`h-4 w-4 text-destructive`}),title:`Proposed but never applied`,hint:`A confirm card the agent proposed but no later turn applied — the change silently evaporated.`,findings:u.orphaned,tone:`destructive`}),u&&u.missing.length>0&&(0,Q.jsx)(Fu,{icon:(0,Q.jsx)(mn,{className:`h-4 w-4 text-amber-600`}),title:`Claimed but missing`,hint:`A tool result said it was applied, but the artifact isn't live in sys_metadata.`,findings:u.missing,tone:`amber`}),u&&u.errors.length>0&&(0,Q.jsx)(Fu,{icon:(0,Q.jsx)(Lr,{className:`h-4 w-4 text-destructive`}),title:`Tool errors`,hint:`Tool calls that returned an error during the build.`,findings:u.errors,tone:`destructive`}),i.verify&&(0,Q.jsxs)(`div`,{className:`rounded-md border p-3 text-xs`,children:[(0,Q.jsx)(`div`,{className:`font-medium text-foreground`,children:`Build check (verify_build)`}),(0,Q.jsxs)(`div`,{className:`mt-1 text-muted-foreground`,children:[`Your app:`,` `,i.verify.userIssues.length===0?(0,Q.jsx)(`span`,{className:`text-emerald-600 dark:text-emerald-400`,children:`0 issues`}):(0,Q.jsxs)(`span`,{className:`text-destructive`,children:[i.verify.userIssues.length,` issue(s)`]}),i.verify.platformNoise>0?` · ${i.verify.platformNoise} platform sys_* finding(s) hidden`:``]}),i.verify.userIssues.map((e,t)=>(0,Q.jsxs)(`div`,{className:`mt-1 text-destructive`,children:[`[`,e.severity,`] `,e.code,` `,e.artifact?`${e.artifact.type}:${e.artifact.name}`:``]},t))]}),i.pendingActions.length>0&&(0,Q.jsxs)(`div`,{className:`rounded-md border p-3 text-xs`,children:[(0,Q.jsx)(`div`,{className:`font-medium text-foreground`,children:`Pending actions`}),i.pendingActions.map((e,t)=>(0,Q.jsxs)(`div`,{className:`mt-1 text-muted-foreground`,children:[e.tool??`?`,` · `,e.object??`-`,` · `,(0,Q.jsx)(`span`,{className:`font-mono`,children:e.status??`-`})]},t))]}),(0,Q.jsxs)(`details`,{className:`rounded-md border p-3 text-xs`,children:[(0,Q.jsxs)(`summary`,{className:`cursor-pointer font-medium text-foreground`,children:[`Timeline (`,i.timeline.length,`)`]}),(0,Q.jsx)(`div`,{className:`mt-2 space-y-1 font-mono text-[11px] leading-relaxed`,children:i.timeline.map((e,t)=>(0,Q.jsx)(Iu,{entry:e},t))})]})]})]})]})})}function Fu({icon:e,title:t,hint:n,findings:r,tone:i}){return(0,Q.jsxs)(`div`,{className:`rounded-md border ${i===`destructive`?`border-destructive/30`:`border-amber-500/30`} p-3`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 font-medium text-foreground`,children:[e,` `,t,` (`,r.length,`)`]}),(0,Q.jsx)(`div`,{className:`mt-1 text-xs text-muted-foreground`,children:n}),(0,Q.jsx)(`div`,{className:`mt-2 space-y-1`,children:r.map((e,t)=>(0,Q.jsxs)(`div`,{className:`font-mono text-xs`,children:[e.t?`${e.t} · `:``,e.tool,` → `,e.artifact.type,`:`,e.artifact.name,(0,Q.jsxs)(`span`,{className:`text-muted-foreground`,children:[` (`,e.status,`)`]})]},t))})]})}function Iu({entry:e}){return e.kind===`user`?(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`span`,{className:`text-muted-foreground`,children:e.t}),` 👤 `,e.text]}):e.kind===`assistant-text`?(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`span`,{className:`text-muted-foreground`,children:e.t}),` 🤖 `,e.text]}):e.kind===`assistant-calls`?(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`span`,{className:`text-muted-foreground`,children:e.t}),` 🤖 →`,` `,e.calls.map(e=>e.name).join(`, `)]}):(0,Q.jsxs)(`div`,{className:e.isError?`text-destructive`:``,children:[(0,Q.jsx)(`span`,{className:`text-muted-foreground`,children:e.t}),` ↳ `,e.name,e.status?` (${e.status})`:``]})}function Lu(e){if(typeof e.content==`string`)return e.content;let t=e.parts;return Array.isArray(t)?t.map(e=>e&&typeof e==`object`&&e.type===`text`?String(e.text??``):``).join(` `):``}function Ru(e){if(Array.isArray(e))for(let t=e.length-1;t>=0;t--){let n=e[t];if(!n||n.role!==`user`)continue;let r=Lu(n);if(r.trim())return/[一-鿿]/.test(r)?`zh-CN`:void 0}}function zu(e){return(Ru(e)??``).toLowerCase().startsWith(`zh`)}var Bu={planApproveMessage:{zh:`确认,开始搭建。`,en:`Looks good — build it as proposed.`},planApproveDefaultsMessage:{zh:`确认搭建,未决问题按你的合理假设和默认处理。`,en:`Build it with your best assumptions; use sensible defaults for the open questions.`},planAnswerMessage:{zh:`关于「{{question}}」,我选择「{{option}}」。`,en:`For "{{question}}", go with: {{option}}.`},changesConfirmMessage:{zh:`确认修改,应用你刚才提议的改动。`,en:`Confirm — apply the change you just proposed.`}};function Vu(e,t){let n=e?.console?.ai?.[t];return typeof n==`string`&&n.trim()!==``?n:void 0}function Hu(e,t){return t?e.replace(/\{\{\s*(\w+)\s*\}\}/g,(e,n)=>Object.prototype.hasOwnProperty.call(t,n)?t[n]:e):e}function Uu(e,t,n){let r=e?`zh`:`en`;return Hu(Vu(e?ne:z,t)??Bu[t][r],n)}var Wu=`/api/v1/ai`;function Gu(e,t){let n=e[t];return typeof n==`string`&&n.length>0?n:void 0}function Ku(e){let t=Gu(e,`state`);switch(t){case`input-streaming`:case`input-available`:return`output-available`;case`approval-requested`:case`approval-responded`:case`output-available`:case`output-error`:case`output-denied`:return t;default:return`output-available`}}function qu(e){return e.map(e=>{let t=[],n,r=e.parts.filter(e=>e.type===`text`).map(e=>e.text??``).join(``);if(e.role===`assistant`)for(let r of e.parts){if(!r.type.startsWith(`tool-`))continue;let i=Gu(r,`toolName`)??r.type.slice(5),a=Gu(r,`toolCallId`)??`${e.id}-${i}`,o=Ku(r),s=r.output??r.result,c=Ba(s),l=Ca(s),u=Sa(s),d=Ta(s);if(t.push({toolCallId:a,toolName:i,...o?{state:o}:{},...s===void 0?{}:{result:s},...c?{draftReview:c}:{},...l?{proposedPlan:l}:{},...u?{builderHandoff:u}:{},...d?{proposedChanges:d}:{},...r.errorText?{errorText:String(r.errorText)}:{}}),!n){let e=wa(c);e&&(n=e)}}return{id:e.id,role:e.role,content:r,...t.length>0?{toolInvocations:t}:{},...n?{buildProgress:n}:{}}})}function Ju(e,t){if(t)return t;let n;for(let t of e)for(let e of t.toolInvocations??[]){let t=e.draftReview?.packageId||e.builderHandoff?.packageId;t&&(n=t)}return n}var Yu=`com.objectstack.`;function Xu(e){return typeof e._packageId==`string`&&e._packageId.startsWith(Yu)}function Zu(e){return e.find(e=>e.role===`user`)?.parts.filter(e=>e.type===`text`).map(e=>e.text??``).join(``).trim()||void 0}var Qu={ask:{key:`console.ai.agentLabels.ask`,defaultValue:`Ask`},build:{key:`console.ai.agentLabels.build`,defaultValue:`Build`}};function $u(e,t,n){let r=t?Qu[Pa(t)]:void 0;return r?e(r.key,{defaultValue:r.defaultValue}):n}function ed(e,t,n){return Aa(t)?n?{title:n.appLabel?e(`console.ai.empty.editApp.title`,{defaultValue:`Editing “{{app}}”`,app:n.appLabel}):e(`console.ai.empty.editApp.titleGeneric`,{defaultValue:`Edit this app`}),description:e(`console.ai.empty.editApp.description`,{defaultValue:`What would you like to change? I’ll modify this app in place — add a field, object, view or automation, or adjust what’s already there.`})}:{title:e(`console.ai.empty.build.title`,{defaultValue:`Build with AI`}),description:e(`console.ai.empty.build.description`,{defaultValue:`Describe an app or workflow in plain language — I draft the objects, screens and automations, then you review and publish.`})}:ja(t)?{title:e(`console.ai.empty.ask.title`,{defaultValue:`Ask your data`}),description:e(`console.ai.empty.ask.description`,{defaultValue:`Ask questions about your records — counts, lists, and summaries across the data you can access.`})}:{title:e(`console.ai.emptyTitle`,{defaultValue:`Start a conversation`}),description:e(`console.ai.emptyDescription`,{defaultValue:`Ask anything — the assistant has access to your current app context.`})}}function td(e){if(e)return e.replace(/\/$/,``);let t={BASE_URL:`./`,DEV:!1,MODE:`production`,PROD:!0,SSR:!1,VITE_SENTRY_DSN:`https://1373a588ceb9da150b11e64bf85f583d@o4510356161757184.ingest.us.sentry.io/4511439670673408`,VITE_SENTRY_ENVIRONMENT:`production`,VITE_SENTRY_SEND_DEFAULT_PII:`true`,VITE_SERVER_URL:``,VITE_USE_MOCK_SERVER:`false`},n=t.VITE_AI_BASE_URL;return n?n.replace(/\/$/,``):`${(t.VITE_SERVER_URL??``).replace(/\/$/,``)}${Wu}`}var nd=`ai-chats-collapsed`;function rd(){let[e,t]=(0,$.useState)(()=>{try{return localStorage.getItem(nd)===`1`}catch{return!1}}),n=(0,$.useRef)(!1);return{collapsed:e,toggle:(0,$.useCallback)(()=>{n.current=!1,t(e=>{let t=!e;try{localStorage.setItem(nd,t?`1`:`0`)}catch{}return t})},[]),handleCanvasOpenChange:(0,$.useCallback)(e=>{e?t(e=>e||(n.current=!0,!0)):n.current&&(n.current=!1,t(!1))},[])}}var id=`ai-chat-pane-width`,ad=480,od=360,sd=420,cd=24;function ld(e,t){let n=t.containerWidth>0?Math.max(t.min,t.containerWidth-t.previewMin):1/0;return Math.min(Math.max(e,t.min),n)}function ud(e){let t=(0,$.useRef)(null),[n,r]=(0,$.useState)(()=>{try{let e=Number(localStorage.getItem(id));return Number.isFinite(e)&&e>0?e:ad}catch{return ad}}),[i,a]=(0,$.useState)(!1),o=(0,$.useCallback)(e=>ld(e,{min:od,previewMin:sd,containerWidth:t.current?.clientWidth??0}),[]),s=(0,$.useCallback)(e=>{try{localStorage.setItem(id,String(Math.round(e)))}catch{}},[]);return(0,$.useEffect)(()=>{if(!e)return;let n=t.current;if(!n||typeof ResizeObserver>`u`)return;let i=new ResizeObserver(()=>r(e=>o(e)));return i.observe(n),()=>i.disconnect()},[e,o]),{width:n,dragging:i,containerRef:t,onHandlePointerDown:(0,$.useCallback)(e=>{e.preventDefault();let t=e.clientX,i=n;a(!0);let c=e=>r(o(i+(e.clientX-t))),l=e=>{let n=o(i+(e.clientX-t));r(n),s(n),a(!1),window.removeEventListener(`pointermove`,c),window.removeEventListener(`pointerup`,l)};window.addEventListener(`pointermove`,c),window.addEventListener(`pointerup`,l)},[o,s,n]),onHandleKeyDown:(0,$.useCallback)(e=>{let t=e.key===`ArrowLeft`?-24:e.key===`ArrowRight`?cd:0;t&&(e.preventDefault(),r(e=>{let n=o(e+t);return s(n),n}))},[o,s]),reset:(0,$.useCallback)(()=>{let e=o(ad);r(e),s(e)},[o,s])}}function dd(e){if(!(e.metaKey||e.ctrlKey)||!e.shiftKey||e.altKey)return null;switch(e.key.toLowerCase()){case`o`:return`new-chat`;case`s`:return`toggle-list`;default:return null}}function fd(e,t){return t||(typeof e==`number`&&e>0?-1:`/home`)}var pd=[];function md(e){let{chatApi:t,conversationId:n,pendingRef:r,doSend:i,pendingSignal:a,agentRoute:o}=e,s=!!t;return(0,$.useEffect)(()=>{if(!s||!n)return;let e=r.current;e&&(e.targetAgentRoute&&e.targetAgentRoute!==o||(r.current=null,i(e.content,e.files)))},[s,n,r,i,a,o]),(0,$.useCallback)((e,t)=>{if(s&&!n){r.current={content:e,files:t};return}i(e,t)},[s,n,r,i])}function hd({apiBase:e,defaultAgent:t}={}){let{user:n}=T(),{t:r}=V(),i=n?.id,{agent:o,conversationId:c}=l(),[u]=s(),d=u.toString(),f=u.get(`new`)!==null,p=u.get(`package`)?.trim()||void 0,m=u.get(`handoffPrompt`)?.trim()||void 0,h=u.get(`parentConversationId`)?.trim()||void 0,g=a(),{setContext:_}=Ui();(0,$.useEffect)(()=>{_(`home`)},[_]);let v=(0,$.useMemo)(()=>td(e),[e]),y={BASE_URL:`./`,DEV:!1,MODE:`production`,PROD:!0,SSR:!1,VITE_SENTRY_DSN:`https://1373a588ceb9da150b11e64bf85f583d@o4510356161757184.ingest.us.sentry.io/4511439670673408`,VITE_SENTRY_ENVIRONMENT:`production`,VITE_SENTRY_SEND_DEFAULT_PII:`true`,VITE_SERVER_URL:``,VITE_USE_MOCK_SERVER:`false`}.VITE_AI_DEFAULT_AGENT,{agents:b,isLoading:x,error:S,refetch:C}=ka({apiBase:v}),w=(0,$.useMemo)(()=>b.map(e=>e.name),[b]),E=!x&&b.length===0,D=(0,$.useMemo)(()=>{if(!o)return!1;if(b.length!==0)return za(o,w)!==void 0},[o,b.length,w]),O=o?void 0:u.get(`agent`)??void 0,k=(0,$.useMemo)(()=>Oa(b,O??t??y),[b,O,t,y]),A=(0,$.useMemo)(()=>{if(b.length!==0)return o&&D?za(o,w):k},[b.length,o,D,w,k]),j=A?Pa(A):void 0,M=!!(o&&D===!1&&Ea(o)),N=o&&D===!1&&!M?o:void 0,ee=A?`${v}/agents/${encodeURIComponent(A)}/chat`:void 0,P=A?fu({appId:p,product:du(A)}):void 0,F=A?du(A):void 0,te=p&&F===`build`&&P!==F?F:void 0,ne=(0,$.useCallback)(e=>!!p&&Ju(qu(e),void 0)===p,[p]),{conversationId:I,conversationScope:L,initialMessages:R,rekeyScope:re}=cu({userId:A?i:void 0,scope:P,apiBase:v,activeId:c??N,forceNew:f,legacyScope:te,adoptLegacy:te?ne:void 0}),ie=L===P,z=ie?I:void 0,ae=ie?R:pd;(0,$.useEffect)(()=>{if(b.length===0||!A)return;let e=Pa(A),t=new URLSearchParams(d);t.delete(`agent`);let n=t.toString()?`?${t.toString()}`:``;if(!o){g(`/ai/${e}${n}`,{replace:!0});return}if(M){g(`/ai/${e}${n}`,{replace:!0});return}if(D&&o!==e){let t=c?`/${encodeURIComponent(c)}`:``;g(`/ai/${e}${t}${n}`,{replace:!0})}},[b.length,A,o,D,M,c,d,g]),(0,$.useEffect)(()=>{if(N===void 0)return;let e=!1;return(async()=>{let t;try{t=(await au(v,N))?.agentId??void 0}catch{}if(e)return;let n=za(t??``,w),r=Pa(n??A??`ask`);g(`/ai/${r}/${encodeURIComponent(N)}`,{replace:!0})})(),()=>{e=!0}},[N,v,w,A,g]);let[B,H]=(0,$.useState)(0),[oe,se]=(0,$.useState)({}),[ce,le]=(0,$.useState)(!1),[ue,de]=(0,$.useState)(!1),[fe,pe]=(0,$.useState)(!1),{collapsed:U,toggle:me,handleCanvasOpenChange:he}=rd();(0,$.useEffect)(()=>{let e=e=>{let t=dd(e);t&&(e.preventDefault(),t===`toggle-list`?me():g(j?`/ai/${j}?new=1`:`/ai?new=1`))};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[me,g,j]);let W=(0,$.useMemo)(()=>v.replace(/\/v1\/ai$/,``).replace(/\/ai$/,``)||`/api`,[v]),ge=(0,$.useMemo)(()=>{if(typeof window>`u`||typeof document>`u`)return;let e=``;try{let t=document.querySelector(`base`)?.getAttribute(`href`);t&&(e=new URL(t,window.location.origin).pathname.replace(/\/+$/,``))}catch{}return`${window.location.origin}${e}/s`},[]),_e=(0,$.useRef)(null);f?_e.current===null&&(_e.current={id:I}):_e.current=null,(0,$.useEffect)(()=>{if(!D||c||!I||!j||_e.current&&_e.current.id===I||L!==P)return;let e=p?`?package=${encodeURIComponent(p)}`:``;g(`/ai/${j}/${I}${e}`,{replace:!0})},[D,c,I,L,P,j,p,g]);let ve=(0,$.useCallback)(e=>{!e||p||F!==`build`||!j||P===F&&L===P&&(!I||c!==I||(re(fu({appId:e,product:F})),g(`/ai/${j}/${encodeURIComponent(I)}?package=${encodeURIComponent(e)}`,{replace:!0})))},[p,F,j,P,L,I,c,re,g]),ye=(0,$.useRef)(new Set);(0,$.useEffect)(()=>{I&&R.length>0&&ye.current.add(I)},[I,R.length]),(0,$.useEffect)(()=>{if(!I)return;let e=Zu(R);e&&se(t=>t[I]===e?t:{...t,[I]:e})},[I,R]);let be=(0,$.useRef)(null),[G,xe]=(0,$.useState)(0),Se=(0,$.useCallback)(e=>{be.current=e,xe(e=>e+1)},[]),Ce=(0,$.useRef)(null);(0,$.useEffect)(()=>{!m||o!==`build`||Ce.current!==m&&(Ce.current=m,Se({content:m,targetAgentRoute:`build`}))},[m,o,Se]);let we=(0,$.useCallback)(e=>{if(H(e=>e+1),e&&I&&se(t=>({...t,[I]:e})),!e||!I||ye.current.has(I))return;ye.current.add(I);let t=()=>H(e=>e+1);setTimeout(t,2500),setTimeout(t,6e3)},[I]);return(0,Q.jsxs)(`div`,{className:`flex h-svh w-full flex-col bg-background`,"data-testid":`ai-chat-page`,children:[(0,Q.jsxs)(`header`,{className:`sticky top-0 z-30 flex h-14 w-full shrink-0 items-center gap-2 border-b bg-background/95 px-2 backdrop-blur sm:px-4`,children:[!E&&(0,Q.jsx)(Y,{variant:`ghost`,size:`icon`,className:`h-8 w-8 shrink-0 md:hidden`,onClick:()=>pe(!0),"aria-label":r(`console.ai.openChats`),"data-testid":`ai-chat-mobile-sidebar-trigger`,children:(0,Q.jsx)(qt,{className:`h-4 w-4`})}),(0,Q.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,Q.jsx)(El,{variant:`home`})}),!E&&(0,Q.jsx)(Y,{variant:`ghost`,size:`icon`,className:`h-8 w-8 shrink-0`,"data-testid":`ai-chat-collapse-to-dock`,"aria-label":r(`console.ai.collapseToDock`,{defaultValue:`Collapse to side panel`}),title:r(`console.ai.collapseToDock`,{defaultValue:`Collapse to side panel`}),onClick:()=>{Il();let e=fd(window.history.state?.idx,zl());g(e===-1?-1:e)},children:(0,Q.jsx)(li,{className:`h-4 w-4`})})]}),E?(0,Q.jsx)(gd,{hasError:!!S,onRetry:C,onHome:()=>g(`/home`),t:r}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Jn,{open:fe,onOpenChange:pe,children:(0,Q.jsxs)(Un,{side:`left`,className:`w-[320px] p-0 sm:max-w-[360px]`,"data-testid":`ai-chat-mobile-sidebar`,children:[(0,Q.jsxs)(Qr,{className:`sr-only`,children:[(0,Q.jsx)(oi,{children:r(`console.ai.chats`)}),(0,Q.jsx)(hn,{children:r(`console.ai.chatsDescription`)})]}),(0,Q.jsx)(Tu,{userId:i,apiBase:v,activeAgent:A,refreshKey:B,titleHints:oe,className:`h-full border-r-0`,onNavigate:()=>pe(!1)})]})}),I&&(0,Q.jsx)(an,{open:ce,onOpenChange:le,objectName:`ai_conversations`,recordId:I,recordLabel:`this conversation`,apiBase:W,publicBaseUrl:ge}),I&&Ra(b,A,`debug`)&&(0,Q.jsx)(Pu,{apiBase:v,conversationId:I,open:ue,onOpenChange:de}),(0,Q.jsxs)(`div`,{className:`flex min-h-0 flex-1 w-full bg-background`,children:[(0,Q.jsxs)(`div`,{className:`hidden shrink-0 flex-col border-r md:flex`,children:[!U&&(0,Q.jsx)(Tu,{userId:i,apiBase:v,activeAgent:A,refreshKey:B,titleHints:oe,className:`w-72 min-h-0 flex-1 border-r-0`}),(0,Q.jsx)(`div`,{className:Fn(`mt-auto p-2`,U?`w-12`:`w-72 border-t`),children:(0,Q.jsx)(Y,{variant:`ghost`,size:`icon`,className:`h-8 w-8`,onClick:me,"aria-label":U?r(`console.ai.showChats`,{defaultValue:`Show chats`}):r(`console.ai.hideChats`,{defaultValue:`Hide chats`}),title:U?r(`console.ai.showChats`,{defaultValue:`Show chats`}):r(`console.ai.hideChats`,{defaultValue:`Hide chats`}),"data-testid":`ai-chat-collapse-sidebar-trigger`,"aria-pressed":U,children:U?(0,Q.jsx)($e,{className:`h-4 w-4`}):(0,Q.jsx)(Ut,{className:`h-4 w-4`})})})]}),(0,Q.jsx)(`main`,{className:`flex min-w-0 flex-1 flex-col`,children:(0,Q.jsx)(_d,{agents:b,agentsLoading:x,agentsError:S,activeAgent:A,chatApi:ee,apiBase:v,conversationId:z,editPackageId:p,onPackageBound:ve,canBind:!!c,parentHandoffConversationId:h,initialMessages:ae,pendingFirstMessageRef:be,pendingFirstMessageSeq:G,onSent:we,onShare:()=>le(!0),onDebug:()=>de(!0),showDebug:Ra(b,A,`debug`),onCanvasOpenChange:he},`${ee??`local`}:${z??`pending`}`)})]})]})]})}function gd({hasError:e,onRetry:t,onHome:n,t:r}){return(0,Q.jsx)(`div`,{className:`flex flex-1 items-center justify-center p-6`,"data-testid":`ai-unavailable`,children:(0,Q.jsxs)(vr,{children:[(0,Q.jsx)(ei,{children:r(`console.ai.unavailableTitle`,{defaultValue:`AI assistant unavailable`})}),(0,Q.jsx)(Qn,{children:e?r(`console.ai.unavailableError`,{defaultValue:`Couldn't reach the AI service. It may be temporarily offline — try again, or head back home.`}):r(`console.ai.unavailableDescription`,{defaultValue:`This deployment doesn't have an AI assistant enabled. Everything else works as usual.`})}),(0,Q.jsxs)(`div`,{className:`mt-6 flex flex-col items-center gap-3 sm:flex-row`,children:[e&&(0,Q.jsx)(Y,{variant:`outline`,onClick:t,"data-testid":`ai-unavailable-retry`,children:r(`console.ai.unavailableRetry`,{defaultValue:`Try again`})}),(0,Q.jsx)(Y,{onClick:n,"data-testid":`ai-unavailable-home`,children:r(`console.ai.unavailableHome`,{defaultValue:`Back to home`})})]})]})})}function _d({agents:e,agentsLoading:t,agentsError:n,activeAgent:r,chatApi:i,apiBase:s,conversationId:c,editPackageId:l,onPackageBound:u,canBind:d,parentHandoffConversationId:f,initialMessages:p,pendingFirstMessageRef:m,pendingFirstMessageSeq:h,onSent:g,onShare:_,onDebug:v,showDebug:y,onCanvasOpenChange:b}){let{t:x}=V(),S=a(),C=e.length>1,w=(0,$.useCallback)(e=>{let t=new URLSearchParams,n=e.packageId||l;n&&t.set(`package`,n),e.prompt&&t.set(`handoffPrompt`,e.prompt),c&&t.set(`parentConversationId`,c);let r=t.toString();S(`/ai/build${r?`?${r}`:``}`)},[S,l,c]),[T,E]=(0,$.useState)(null),[D,O]=(0,$.useState)(0),k=hr(),[A,j]=(0,$.useState)(!1);(0,$.useEffect)(()=>{T||j(!1)},[T]);let M=se(),[N,ee]=(0,$.useState)(null),P=(0,$.useRef)(null);(0,$.useEffect)(()=>()=>{P.current&&window.clearTimeout(P.current)},[]);let F=T!==null;(0,$.useEffect)(()=>{b?.(F)},[F,b]);let te=ud(F),ne=(0,$.useCallback)((e,t)=>{let n=e.find(e=>e.type===`app`);n&&E(e=>e??{name:n.name,segment:t,materialized:!1}),P.current&&window.clearTimeout(P.current),P.current=window.setTimeout(()=>O(e=>e+1),800)},[]),I=(0,$.useCallback)(e=>{E(t=>t&&t.name===e&&!t.materialized?{...t,materialized:!0}:t??{name:e,materialized:!0})},[]);(0,$.useEffect)(()=>{E(null)},[c]);let L=(0,$.useMemo)(()=>{let t=e.find(e=>e.name===r);return $u(x,r,t?.label??r??x(`console.ai.assistant`))},[e,r,x]),R=(0,$.useMemo)(()=>qu(p),[p]),{errorSuppressed:re,handleChatError:ie,setMessagesRef:z,resetSuppression:B}=uu({chatApi:i,conversationId:c}),{models:H,defaultModelId:oe}=Na({apiBase:s}),[ce,le]=(0,$.useState)(void 0),ue=ce??oe,{messages:de,isLoading:fe,error:pe,sendMessage:U,stop:me,reload:he,clear:W,setMessages:ge}=Da({api:i,conversationId:c,parentConversationId:f,model:ue,onError:ie,body:{context:{activeApp:`AI`,agentName:r,autoPublishAiBuilds:xo().features.autoPublishAiBuilds,...l?{packageId:l}:{}}},initialMessages:R,autoResponse:!i,autoResponseText:`Thanks for your message! I'm here to help.`,autoResponseDelay:600});(0,$.useEffect)(()=>{z.current=ge},[ge]);let _e=(0,$.useMemo)(()=>Va(de),[de]);(0,$.useEffect)(()=>{Ql(c,$l(_e))},[c,_e]);let ve=(0,$.useMemo)(()=>zu(_e)||zu(p),[_e,p]),ye=(0,$.useCallback)((e,t)=>Uu(ve,e,t),[ve]),be=ye(`planApproveMessage`),G=ye(`planApproveDefaultsMessage`),xe=ye(`changesConfirmMessage`),Se=(0,$.useMemo)(()=>({create_object:x(`console.ai.changeVerb.createObject`,{defaultValue:`Create object`}),add_field:x(`console.ai.changeVerb.addField`,{defaultValue:`Add field`}),modify_field:x(`console.ai.changeVerb.modifyField`,{defaultValue:`Modify field`}),delete_field:x(`console.ai.changeVerb.deleteField`,{defaultValue:`Delete field`}),create_metadata:x(`console.ai.changeVerb.createMetadata`,{defaultValue:`Create`}),update_metadata:x(`console.ai.changeVerb.updateMetadata`,{defaultValue:`Modify`}),create_seed:x(`console.ai.changeVerb.createSeed`,{defaultValue:`Generate sample data`}),create_package:x(`console.ai.changeVerb.createPackage`,{defaultValue:`Create app package`})}),[x]),Ce=(0,$.useRef)(!1);(0,$.useEffect)(()=>{Ce.current&&!fe&&T&&O(e=>e+1),Ce.current=fe},[fe,T]);let we=La({messages:_e,apiBase:s,continueConversation:e=>{U(e)}}),Ee=md({chatApi:i,conversationId:c,pendingRef:m,doSend:(0,$.useCallback)((e,t)=>{B();let n=(t??[]).filter(e=>/\.(xlsx|xlsm|csv|tsv|txt)$/i.test(e.name));if(!n.length){if(t?.length){U(`${e}\n\n(用户上传了 ${t.length} 个附件:${t.map(e=>e.name).join(`、`)} — 当前仅支持读取表格类附件(Excel/CSV),这些文件的内容我没有读取。)`),g(e);return}U(e),g(e);return}ee(n[0]),(async()=>{let r=e=>e.length>40?`${e.slice(0,40)}…`:e,i=e=>e.slice(0,12).map(e=>r(String(e??``)).replace(/\s+/g,` `)).join(` | `),a=e;for(let e of n.slice(0,2))try{let{parseSpreadsheetFile:t}=await o(async()=>{let{parseSpreadsheetFile:e}=await import(`./plugin-grid-gHcTrjs3.js`).then(e=>e.t);return{parseSpreadsheetFile:e}},__vite__mapDeps([0]),import.meta.url),n=await t(e),r=n[0]??[],s=n.slice(1,4);a+=[`\n\n[附件表格 ${e.name} — ${Math.max(0,n.length-1)} 数据行 × ${r.length} 列(控制台已在本地解析,文件本体未上传)]`,`表头: ${i(r)}`,...s.map((e,t)=>`样例${t+1}: ${i(e)}`)].join(`
|
|
7
|
+
`)}catch(t){a+=`\n\n[附件表格 ${e.name}] 解析失败(${t instanceof Error?t.message:`unknown`})— 请引导用户改用对象列表的 Import 上传该文件。`}n.length>2&&(a+=`\n\n(另有 ${n.length-2} 个表格附件未读取 — 一次最多读取 2 个。)`);let s=(t??[]).length-n.length;s>0&&(a+=`\n\n(另有 ${s} 个非表格附件,内容未读取。)`),U(a),g(a)})()},[B,U,g]),pendingSignal:h,agentRoute:r?Pa(r):void 0}),K=r?Pa(r)===`build`:!1,{apps:De}=ae(),Oe=De,{appLabel:q}=Te(),ke=(0,$.useMemo)(()=>Ju(_e,l),[_e,l]),Ae=(0,$.useMemo)(()=>{if(!ke)return;let e=(Oe??[]).find(e=>e._packageId===ke);return e?q({name:e.name,label:xa(e.label,x)}):ke},[ke,Oe,q,x]),je=(0,$.useMemo)(()=>{if(!l)return;let e=(Oe??[]).find(e=>e._packageId===l);return e?q({name:e.name,label:xa(e.label,x)}):void 0},[l,Oe,q,x]),Me=K&&!!l,Ne=(0,$.useMemo)(()=>{if(!(R.length>0))return Sd(r,L,x,Me)},[R.length,r,L,x,Me]),Pe=(0,$.useMemo)(()=>ed(x,r,Me?{appLabel:je}:void 0),[x,r,Me,je]);(0,$.useEffect)(()=>{!K||!d||!ke||l||fe||u?.(ke)},[K,d,ke,l,fe,u]);let Fe=(0,$.useMemo)(()=>{let e=new Map;for(let t of Oe??[]){let n=t._packageId;!n||e.has(n)||Xu(t)||e.set(n,q({name:t.name,label:xa(t.label,x)}))}return Array.from(e,([e,t])=>({id:e,label:t}))},[Oe,q,x]),Ie=(0,Q.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2 border-b border-border/50 px-4 pb-2 pt-3 sm:px-6`,children:[(0,Q.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-2`,children:[C?e.length<=3?(0,Q.jsx)(at,{value:r,onValueChange:e=>S(`/ai/${Pa(e)}`),children:(0,Q.jsx)(It,{className:`h-7 gap-0.5 p-0.5`,"data-testid":`ai-chat-agent-picker`,"aria-label":x(`console.ai.switchAssistant`,{defaultValue:`Switch assistant`}),children:e.map(e=>(0,Q.jsx)(mi,{value:e.name,disabled:t,title:e.description||void 0,className:`h-6 px-2.5 text-xs`,children:$u(x,e.name,e.label)},e.name))})}):(0,Q.jsxs)(ii,{value:r,onValueChange:e=>S(`/ai/${Pa(e)}`),disabled:t,children:[(0,Q.jsx)(ni,{className:`h-7 w-auto min-w-0 border-0 bg-transparent px-1.5 text-xs shadow-none hover:bg-accent focus:ring-0 focus:ring-offset-0 focus-visible:ring-1 focus-visible:ring-border/80 focus-visible:ring-offset-0 sm:min-w-[160px]`,"data-testid":`ai-chat-agent-picker`,"aria-label":x(`console.ai.switchAssistant`,{defaultValue:`Switch assistant`}),children:(0,Q.jsx)(Bt,{placeholder:x(`console.ai.chooseAgent`,{defaultValue:`Choose assistant…`})})}),(0,Q.jsx)(Rt,{align:`start`,children:e.map(e=>(0,Q.jsxs)(Re,{value:e.name,className:`text-xs`,children:[(0,Q.jsx)(`span`,{className:`font-medium`,children:$u(x,e.name,e.label)}),e.description?(0,Q.jsx)(`span`,{className:`block text-muted-foreground text-[10px] truncate max-w-[260px]`,children:e.description}):null]},e.name))})]}):(0,Q.jsx)(`span`,{className:`truncate text-xs font-medium text-foreground/85`,children:L}),K?(0,Q.jsxs)(Nt,{children:[(0,Q.jsxs)(Fr,{"data-testid":`ai-build-package-chip`,title:ke,"aria-label":x(`console.ai.switchApp`,{defaultValue:`Switch app`}),className:Fn(`inline-flex min-w-0 items-center gap-1 rounded-md border px-2 py-0.5 text-xs hover:bg-accent focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border/80`,ke?`bg-muted/40 text-foreground/80`:`border-dashed text-muted-foreground`),children:[ke?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Pr,{className:`size-3 shrink-0`}),(0,Q.jsx)(`span`,{className:`max-w-[10rem] truncate`,children:Ae})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)($t,{className:`size-3 shrink-0`}),x(`console.ai.newApp`,{defaultValue:`New app`})]}),(0,Q.jsx)(kr,{className:`size-3 shrink-0 opacity-60`})]}),(0,Q.jsxs)(ui,{align:`start`,className:`max-h-72 w-56 overflow-y-auto`,children:[(0,Q.jsx)(tt,{className:`text-xs text-muted-foreground`,children:x(`console.ai.switchAppLabel`,{defaultValue:`Build conversations by app`})}),Fe.map(e=>(0,Q.jsxs)(Yt,{"data-testid":`ai-build-package-option-${e.id}`,className:`text-xs`,onSelect:()=>{e.id!==ke&&S(`/ai/build?package=${encodeURIComponent(e.id)}`)},children:[(0,Q.jsx)(Pr,{className:`size-3 shrink-0`}),(0,Q.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:e.label}),e.id===ke?(0,Q.jsx)(pr,{className:`size-3 shrink-0`}):null]},e.id)),Fe.length>0?(0,Q.jsx)(Wt,{}):null,(0,Q.jsxs)(Yt,{"data-testid":`ai-build-package-option-new`,className:`text-xs`,onSelect:()=>S(`/ai/build?new=1`),children:[(0,Q.jsx)($t,{className:`size-3 shrink-0`}),x(`console.ai.newApp`,{defaultValue:`New app`})]})]})]}):null]}),(0,Q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,children:[y&&v?(0,Q.jsx)(Y,{variant:`ghost`,size:`icon`,className:`h-7 w-7 text-muted-foreground hover:text-foreground`,onClick:v,disabled:!c,"aria-label":`Build Doctor`,"data-testid":`ai-chat-debug-button`,title:c?`Build Doctor — what actually landed?`:`Send a message first`,children:(0,Q.jsx)(Be,{className:`h-3.5 w-3.5`})}):null,(0,Q.jsx)(Y,{variant:`ghost`,size:`icon`,className:`h-7 w-7 text-muted-foreground hover:text-foreground`,onClick:_,disabled:!c,"aria-label":x(`console.ai.share`),"data-testid":`ai-chat-share-button`,title:x(c?`console.ai.shareTitle`:`console.ai.shareDisabledTitle`),children:(0,Q.jsx)(Nn,{className:`h-3.5 w-3.5`})})]}),n?(0,Q.jsx)(`span`,{className:`basis-full text-[10px] text-amber-700 dark:text-amber-400`,title:n.message,children:x(`console.ai.offlineDemoMode`)}):null]}),Le=T!==null&&!k;return(0,Q.jsxs)(`div`,{ref:te.containerRef,className:`relative flex min-h-0 flex-1 px-0`,children:[N&&M?(0,Q.jsx)(`div`,{className:`pointer-events-none absolute top-2 left-0 right-0 z-20 flex justify-center px-4`,children:(0,Q.jsx)(`div`,{className:`pointer-events-auto w-full max-w-3xl`,children:(0,Q.jsx)(wc,{file:N,dataSource:M,defaultObjectName:T?.name,onDone:()=>ee(null)})})}):null,(0,Q.jsx)(`div`,{"data-chat-column":!0,className:Le?`flex min-h-0 shrink-0 justify-center`:`flex min-h-0 flex-1 justify-center`,style:Le?{width:te.width}:void 0,children:(0,Q.jsx)(Ia,{className:`min-h-0 flex-1 bg-background md:max-w-5xl`,onUpgrade:()=>window.open(Co(),`_blank`,`noopener,noreferrer`),onOpenBuilder:w,surface:`plain`,maxHeight:`100%`,headerSlot:Ie,messages:_e,placeholder:r?Pa(r)===`ask`?x(`console.ai.askAnything`):x(`console.ai.askAgent`,{agent:L}):x(t?`console.ai.loadingAgents`:`console.ai.askAnything`),labels:{emptyTitle:Pe.title,emptyDescription:Pe.description,clear:x(`console.ai.clearConversation`),sendHint:x(`console.ai.sendHint`),agentActivity:x(`console.ai.agentActivity`),toolCompleted:x(`console.ai.toolCompleted`),toolRunning:x(`console.ai.toolRunning`),toolAwaitingApproval:x(`console.ai.toolAwaitingApproval`),toolFailed:x(`console.ai.toolFailed`),connectionWaiting:x(`console.ai.connectionWaiting`,{defaultValue:`Waiting for server…`}),connectionStalledLabel:x(`console.ai.connectionStalled`,{defaultValue:`Still working…`}),connectionOfflineLabel:x(`console.ai.connectionOffline`,{defaultValue:`Connection lost — reconnecting…`}),designingPlanLabel:x(`console.ai.designingPlan`,{defaultValue:`Designing your app…`}),designingPlanHints:[x(`console.ai.designingPlanHint.data`,{defaultValue:`Mapping out the data you’ll track…`}),x(`console.ai.designingPlanHint.objects`,{defaultValue:`Shaping objects and their fields…`}),x(`console.ai.designingPlanHint.relations`,{defaultValue:`Connecting related records…`}),x(`console.ai.designingPlanHint.lookups`,{defaultValue:`Setting up relationships and lookups…`}),x(`console.ai.designingPlanHint.views`,{defaultValue:`Planning the screens and views…`}),x(`console.ai.designingPlanHint.forms`,{defaultValue:`Laying out forms and lists…`}),x(`console.ai.designingPlanHint.defaults`,{defaultValue:`Adding sensible defaults and validations…`}),x(`console.ai.designingPlanHint.dashboard`,{defaultValue:`Sketching a dashboard to track it…`}),x(`console.ai.designingPlanHint.review`,{defaultValue:`Double-checking the structure hangs together…`}),x(`console.ai.designingPlanHint.finalize`,{defaultValue:`Pulling the plan together…`})],toolDetailsHidden:x(`console.ai.toolDetailsHidden`),copy:x(`console.ai.copy`),copied:x(`console.ai.copied`),regenerate:x(`console.ai.regenerate`),model:x(`console.ai.model`),submit:x(`console.ai.submit`),uploadFiles:x(`console.ai.uploadFiles`),stopResponse:x(`console.ai.stopResponse`),sendFailedRateLimited:x(`console.ai.sendFailedRateLimited`,{defaultValue:`You're sending messages too quickly. Your message is kept below — wait a moment and try again.`}),sendFailedGeneric:x(`console.ai.sendFailedGeneric`,{defaultValue:`Couldn't send your message. It's kept below — please try again.`}),trace:x(`console.ai.trace`),viewTrace:x(`console.ai.viewTrace`)},models:H,selectedModelId:ue,onModelChange:le,suggestions:Ne,onSendMessage:Ee,onClear:W,hideClearBar:!0,onStop:fe?me:void 0,onReload:he,isLoading:fe,error:re?void 0:pe,enableMarkdown:!0,onToolApprove:we.decide,toolDecisions:we.decisions,toolApproveLabel:`Approve & run`,toolDenyLabel:`Reject`,toolDenyReason:`Operator rejected from chat`,onOpenBuiltApp:(e,t)=>S(`/apps/${encodeURIComponent(t??e)}`),openBuiltAppLabel:x(`console.ai.openBuiltApp`,{defaultValue:`Open app`}),onDesignBuiltApp:(e,t)=>{let n=t??T?.segment;n&&S(`/studio/${encodeURIComponent(n)}/interfaces`)},designBuiltAppLabel:x(`console.ai.designBuiltApp`,{defaultValue:`Design in Studio`}),getArtifactAction:(e,t)=>{let n=Mu(t??T?.segment,e);return n?()=>S(n):null},fetchPendingDraftCount:Vl,onPublishDrafts:async e=>{try{let t=await fetch(`/api/v1/packages/${encodeURIComponent(e)}/publish-drafts`,{method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:`{}`}),n=await t.json().catch(()=>null);if(!t.ok||n?.success===!1)throw Error(n?.error?.message||`HTTP ${t.status}`);let r=n?.data?.failedCount??n?.failedCount??0;if(r){let e=n?.data?.failed??n?.failed??[];throw Error(e.length>0?bc(e):String(r))}let i=n?.data?.seedApplied??n?.seedApplied;return i&&i.success===!1?X.warning(x(`console.ai.seedWarn`,{defaultValue:`Published, but some sample data failed to load.`}),{description:i.error??(Array.isArray(i.errors)&&i.errors.length?String(i.errors[0]):void 0)}):X.success(x(`console.ai.publishOk`,{defaultValue:`Published — objects are now live.`})),ji(),{ok:!0,health:Ma(n)}}catch(e){return X.error(x(`console.ai.publishFailed`,{defaultValue:`Publish failed`}),{description:e instanceof Error?e.message:void 0}),!1}},publishDraftsLabel:x(`console.ai.publishDrafts`,{defaultValue:`Publish`}),publishedLabel:x(`console.ai.published`,{defaultValue:`Published`}),nextStepsLabel:x(`console.ai.nextSteps`,{defaultValue:`What's next`}),planTitleLabel:x(`console.ai.planTitle`,{defaultValue:`Proposed plan`}),planQuestionsLabel:x(`console.ai.planQuestions`,{defaultValue:`Confirm before building`}),planAssumptionsLabel:x(`console.ai.planAssumptions`,{defaultValue:`Assumptions`}),planDeferredLabel:x(`console.ai.planDeferred`,{defaultValue:`Not yet built`}),planApproveHintLabel:x(`console.ai.planApproveHint`,{defaultValue:`Reply to approve or adjust this plan.`}),planApproveLabel:x(`console.ai.planApprove`,{defaultValue:`Build it`}),planAdjustLabel:x(`console.ai.planAdjust`,{defaultValue:`Adjust`}),planBuiltLabel:x(`console.ai.planBuilt`,{defaultValue:`Built`}),planBuildingLabel:x(`console.ai.planBuilding`,{defaultValue:`Building…`}),planReadyLabel:x(`console.ai.planReady`,{defaultValue:`The plan is ready. Build it now, or tell me what to adjust.`}),planApproveMessage:be,planApproveDefaultsMessage:G,changesTitleLabel:x(`console.ai.changesTitle`,{defaultValue:`Confirm changes`}),changesConfirmedLabel:x(`console.ai.changesConfirmed`,{defaultValue:`Confirmed`}),changesConfirmLabel:x(`console.ai.changesConfirm`,{defaultValue:`Confirm`}),changesConfirmHintLabel:x(`console.ai.changesConfirmHint`,{defaultValue:`Reply to confirm or adjust this change.`}),changesConfirmMessage:xe,changeVerbLabels:Se,planAnswerMessage:(e,t)=>ye(`planAnswerMessage`,{question:e,option:t}),autoPublishDrafts:xo().features.autoPublishAiBuilds,onDraftArtifacts:ne,onPreviewDraftApp:(e,t)=>{E({name:e,segment:t?.appSegment,materialized:t?.materialized===!0}),k&&j(!0)},onBuildMaterialized:I,previewDraftLabel:x(`console.ai.previewDraft`,{defaultValue:`Preview`}),"data-testid":`ai-chat-panel`})}),Le?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{role:`separator`,"aria-orientation":`vertical`,"aria-label":x(`console.ai.resizeSplit`,{defaultValue:`Resize chat and preview`}),tabIndex:0,onPointerDown:te.onHandlePointerDown,onKeyDown:te.onHandleKeyDown,onDoubleClick:te.reset,"data-testid":`ai-chat-split-handle`,className:Fn(`group relative hidden w-1.5 shrink-0 cursor-col-resize touch-none select-none md:block`,`focus:outline-none`),children:[(0,Q.jsx)(`span`,{"aria-hidden":!0,className:`absolute inset-y-0 -left-1.5 -right-1.5`}),(0,Q.jsx)(`span`,{"aria-hidden":!0,className:Fn(`absolute inset-y-0 left-1/2 w-px -translate-x-1/2 bg-border transition-colors`,`group-hover:bg-primary/60 group-focus-visible:bg-primary`,te.dragging&&`bg-primary`)})]}),(0,Q.jsx)(Au,{appName:T.name,appSegment:T.segment,materialized:T.materialized,refreshKey:D,onClose:()=>E(null)}),te.dragging?(0,Q.jsx)(`div`,{className:`fixed inset-0 z-50 cursor-col-resize`,"data-testid":`ai-chat-split-overlay`}):null]}):null,T&&k?(0,Q.jsx)(Q.Fragment,{children:A?(0,Q.jsx)(`div`,{className:`absolute inset-0 z-30 flex flex-col bg-background`,"data-testid":`ai-chat-mobile-canvas`,children:(0,Q.jsx)(Au,{appName:T.name,appSegment:T.segment,materialized:T.materialized,refreshKey:D,onClose:()=>j(!1)})}):(0,Q.jsx)(`div`,{className:`pointer-events-none absolute inset-x-0 bottom-24 z-20 flex justify-center px-4`,children:(0,Q.jsxs)(Y,{size:`sm`,onClick:()=>j(!0),"data-testid":`ai-chat-mobile-preview-open`,className:`pointer-events-auto gap-1.5 rounded-full shadow-lg`,children:[(0,Q.jsx)(Cn,{className:`h-4 w-4`}),x(`console.ai.previewApp`,{defaultValue:`Preview app`})]})})}):null]})}function vd(e){return[e(`console.ai.suggestions.dataChat.userCount`,{defaultValue:`How many users are in the system? List their emails.`}),e(`console.ai.suggestions.dataChat.recentRecords`,{defaultValue:`List the 5 most recently created records.`}),e(`console.ai.suggestions.dataChat.recordCounts`,{defaultValue:`Count records for each object.`})]}function yd(e){return[e(`console.ai.suggestions.metadataAssistant.buildCrm`,{defaultValue:`Build a sales CRM — customers, contacts, and a deal pipeline I can total by stage.`}),e(`console.ai.suggestions.metadataAssistant.buildApp`,{defaultValue:`Create a project tracker — projects, tasks with owners and due dates, and a board by status.`}),e(`console.ai.suggestions.metadataAssistant.buildFlow`,{defaultValue:`Design a support desk — tickets with priority, a status workflow, and customer links.`}),e(`console.ai.suggestions.metadataAssistant.buildInventory`,{defaultValue:`Build an inventory app — products, stock levels, suppliers, and low-stock visibility.`}),e(`console.ai.suggestions.metadataAssistant.buildRecruiting`,{defaultValue:`Make an applicant tracker — candidates, open roles, interview stages, and notes.`})]}function bd(e){return[e(`console.ai.suggestions.generic.help`,{defaultValue:`What can you help me with?`}),e(`console.ai.suggestions.generic.availableObjects`,{defaultValue:`List the available data objects.`}),e(`console.ai.suggestions.generic.recentActivity`,{defaultValue:`Summarize my recent activity.`})]}function xd(e){return[e(`console.ai.suggestions.editApp.addField`,{defaultValue:`Add a field to one of the objects.`}),e(`console.ai.suggestions.editApp.addObject`,{defaultValue:`Add a new object and relate it to an existing one.`}),e(`console.ai.suggestions.editApp.addDashboard`,{defaultValue:`Add a dashboard for the key metrics.`}),e(`console.ai.suggestions.editApp.addAutomation`,{defaultValue:`Add an automation — an approval, a status flow, or a notification.`})]}function Sd(e,t,n,r=!1){if(ja(e))return vd(n);if(Aa(e))return r?xd(n):yd(n);let i=(e??t).toLowerCase();return i.includes(`data`)?vd(n):i.includes(`metadata`)?yd(n):bd(n)}function Cd(e){return!!e&&typeof e==`object`&&`fraction`in e}function wd(e){let t=e?.meters;return!t||!Cd(t.build)||!Cd(t.dataChat)?null:{meters:{build:t.build,dataChat:t.dataChat}}}function Td(e={}){let{apiBase:t,enabled:n=!0}=e,[r,i]=$.useState(null),[a,o]=$.useState(!1),[s,c]=$.useState(void 0),[l,u]=$.useState(0),d=$.useCallback(()=>u(e=>e+1),[]),f=n&&!!t;return $.useEffect(()=>{if(!f){i(null),c(void 0),o(!1);return}if(typeof fetch!=`function`)return;let e=!1,n=`${t.replace(/\/$/,``)}/usage`;return o(!0),fetch(n,{method:`GET`,headers:{Accept:`application/json`},credentials:`include`}).then(async e=>{if(!e.ok)throw Error(`Failed to load AI usage (${e.status})`);return e.json()}).then(t=>{e||(i(wd(t)),c(void 0))}).catch(t=>{e||(i(null),c(t instanceof Error?t:Error(String(t))))}).finally(()=>{e||o(!1)}),()=>{e=!0}},[f,t,l]),$.useEffect(()=>{if(!f||typeof window>`u`)return;let e=()=>d(),t=()=>{document.visibilityState===`visible`&&d()};return window.addEventListener(Ha,e),document.addEventListener(`visibilitychange`,t),()=>{window.removeEventListener(Ha,e),document.removeEventListener(`visibilitychange`,t)}},[f,d]),{usage:r,loading:a,error:s,refetch:d}}function Ed(e){return e>=1?`full`:e>=.8?`low`:`ok`}function Dd(e){return e===`full`?`text-destructive`:e===`low`?`text-amber-500`:`text-primary`}function Od({fraction:e,tone:t,size:n=16}){let r=(n-2)/2,i=2*Math.PI*r,a=i*Math.min(1,Math.max(0,e)),o=n/2;return(0,Q.jsxs)(`svg`,{width:n,height:n,viewBox:`0 0 ${n} ${n}`,className:Dd(t),"aria-hidden":`true`,focusable:`false`,children:[(0,Q.jsx)(`circle`,{cx:o,cy:o,r,fill:`none`,strokeWidth:2,className:`stroke-muted-foreground/25`}),(0,Q.jsx)(`circle`,{cx:o,cy:o,r,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeDasharray:`${a} ${i}`,transform:`rotate(-90 ${o} ${o})`})]})}function kd({apiBase:e,enabled:t=!0,className:n}){let{t:r}=V(),{usage:i}=Td({apiBase:e,enabled:t}),a=$.useMemo(()=>{if(!i)return[];let e=[];return[`build`,`dataChat`].forEach(t=>{let n=i.meters[t];if(!n||n.unmetered||n.fraction==null)return;let r=n.fraction;e.push({key:t,meter:n,fraction:r,tone:Ed(r)})}),e},[i]);if(!t||a.length===0)return null;let o=e=>e===`build`?r(`console.ai.usage.meterBuild`,{defaultValue:`Build`}):r(`console.ai.usage.meterAsk`,{defaultValue:`Ask`}),s=e=>e===`full`?r(`console.ai.usage.statusFull`,{defaultValue:`Limit reached`}):e===`low`?r(`console.ai.usage.statusLow`,{defaultValue:`Running low`}):r(`console.ai.usage.statusOk`,{defaultValue:`Plenty left`}),c=e=>e.resetKind===`daily`?r(`console.ai.usage.resetsDaily`,{defaultValue:`Resets tonight`}):r(`console.ai.usage.resetsMonthly`,{defaultValue:`Resets next cycle`}),l=a.reduce((e,t)=>t.fraction>e.fraction?t:e),u=l.tone!==`ok`;return(0,Q.jsxs)(Me,{children:[(0,Q.jsx)(gt,{asChild:!0,children:(0,Q.jsxs)(Y,{variant:`ghost`,size:`sm`,"data-testid":`ai-usage-indicator`,className:Fn(`h-7 gap-1.5 px-1.5 text-muted-foreground hover:text-foreground`,n),"aria-label":r(`console.ai.usage.ariaLabel`,{defaultValue:`AI usage: {{status}}`,status:s(l.tone)}),children:[(0,Q.jsx)(`span`,{className:`flex items-center gap-1`,children:a.map(e=>(0,Q.jsx)(Od,{fraction:e.fraction,tone:e.tone},e.key))}),u?(0,Q.jsx)(`span`,{className:Fn(`hidden text-xs font-medium sm:inline`,l.tone===`full`?`text-destructive`:`text-amber-600 dark:text-amber-500`),children:s(l.tone)}):null]})}),(0,Q.jsxs)(rr,{align:`end`,className:`w-64 p-3`,"data-testid":`ai-usage-popover`,children:[(0,Q.jsx)(`div`,{className:`mb-2 text-xs font-semibold text-foreground/80`,children:r(`console.ai.usage.title`,{defaultValue:`AI usage`})}),(0,Q.jsx)(`ul`,{className:`space-y-3`,children:a.map(({key:e,meter:t,fraction:n,tone:i})=>{let a=i!==`ok`&&(t.upgrade||t.topUp);return(0,Q.jsxs)(`li`,{className:`flex items-start gap-2.5`,children:[(0,Q.jsx)(Od,{fraction:n,tone:i,size:22}),(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,Q.jsx)(`span`,{className:`text-sm font-medium text-foreground`,children:o(e)}),(0,Q.jsx)(`span`,{className:Fn(`text-xs`,i===`full`?`text-destructive`:i===`low`?`text-amber-600 dark:text-amber-500`:`text-muted-foreground`),children:s(i)})]}),(0,Q.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:c(t)}),a?(0,Q.jsx)(Y,{variant:`link`,size:`sm`,className:`mt-1 h-auto p-0 text-xs`,"data-testid":`ai-usage-cta-${e}`,onClick:()=>window.open(Co(),`_blank`,`noopener,noreferrer`),children:t.upgrade?r(`console.ai.usage.ctaUpgrade`,{defaultValue:`Upgrade to keep going`}):r(`console.ai.usage.ctaTopUp`,{defaultValue:`Add credits to continue`})}):null]})]},e)})})]})]})}function Ad(){let{execute:e}=we(),{getItem:t}=ae();return(0,$.useCallback)(n=>{(async()=>{let r=n.actionDef,i=r?.actionName;if(!i){console.warn(`[nav] action item has no actionDef.actionName — nothing to dispatch`,n?.id),X.error(`This menu item is not configured to run an action.`);return}let a;try{a=await t(`action`,i)}catch(e){console.warn(`[nav] failed to resolve action '${i}'`,e),X.error(`Could not load action "${i}".`);return}if(!a){console.warn(`[nav] action '${i}' is not defined — nav item ${n?.id} cannot run`),X.error(`Action "${i}" is not defined.`);return}try{let{params:t,...n}=a,i={...n},o=Array.isArray(t)?t:[];o.length>0&&(i.actionParams=o),r?.params&&typeof r.params==`object`&&(i.params={...r.params}),await e(i)}catch(e){console.warn(`[nav] action '${i}' failed`,e),X.error(`Action "${i}" failed to run.`)}})()},[e,t])}var jd=20;function Md(e,t=``){let{href:n,external:r}=ko(e,t);return r?n:!n||n===`#`?``:n}function Nd(e){return`nav:${e}`}function Pd(){let{favorites:e,addFavorite:t,removeFavorite:n,setPinned:r,pinnedNavIds:i}=Xi(),a=(0,$.useCallback)((e,i,a,o)=>{let s=Nd(e);i?(a&&t({id:s,label:a.label,href:Md(a,o??``),type:`nav`,navId:e,pinned:!0}),r(s,!0)):n(s)},[t,n,r]),o=(0,$.useCallback)(e=>i.has(e),[i]),s=(0,$.useCallback)(e=>{if(i.size===0){let t=!1;for(let n of e)if(n.pinned){t=!0;break}if(!t)return e}let t=0,n=e=>e.map(e=>{let r=i.has(e.id)&&t<jd;r&&t++;let a=e.children?.length?n(e.children):e.children;return r!==(e.pinned??!1)||a!==e.children?{...e,pinned:r,children:a}:e});return n(e)},[i]),c=(0,$.useCallback)(()=>{for(let t of e)t.type===`nav`&&n(t.id)},[e,n]);return{pinnedIds:(0,$.useMemo)(()=>Array.from(i),[i]),togglePin:a,isPinned:o,applyPins:s,clearPins:c}}var Fd=0;function Id(e=`nav`){return`${e}_${Date.now()}_${++Fd}`}function Ld(e,t){return[...e,t]}function Rd(e,t,n){return e.filter(e=>!(e.type===t&&(t===`page`&&e.pageName===n||t===`dashboard`&&e.dashboardName===n))).map(e=>e.children&&e.children.length>0?{...e,children:Rd(e.children,t,n)}:e)}function zd(e,t,n,r){return e.map(e=>{let i=e;return t===`page`&&e.type===`page`&&e.pageName===n?i={...e,pageName:r}:t===`dashboard`&&e.type===`dashboard`&&e.dashboardName===n&&(i={...e,dashboardName:r}),i.children&&i.children.length>0?{...i,children:zd(i.children,t,n,r)}:i})}function Bd(e,t){return e.length===t.length?e===t||JSON.stringify(e)===JSON.stringify(t):!1}function Vd(e){return typeof e==`string`&&e.startsWith(`sys_`)}function Hd(e){if(!e||typeof e!=`object`)return!1;let t=e;return t._packageId!=null||t._provenance===`package`||Vd(t.name)}function Ud(e){if(!e||typeof e!=`object`)return!1;let t=e,n=t._lock??t.protection?.lock;return n!==`full`&&n!==`no-overlay`}function Wd(){let e=se(),{apps:t,refresh:n}=ae(),{t:r}=V(),i=(0,$.useRef)(e);i.current=e;let a=(0,$.useRef)(n);a.current=n;let o=(0,$.useCallback)(async(e,t)=>{let n=i.current?.getClient();n&&await n.meta.saveItem(`app`,e,t),await a.current?.()},[]),s=(0,$.useCallback)(e=>ga(t,e),[t]),c=(0,$.useCallback)(async(e,t,n)=>{let i=s(e);if(!i)return;let a=i.navigation??[],c=Ld(a,{id:Id(`nav_page`),type:`page`,label:n||t,pageName:t,icon:`FileText`}),l={...i,navigation:c};try{await o(e,l),X.success(r(`navigationSync.addedPage`,{name:n||t}),{action:{label:r(`navigationSync.undoLabel`),onClick:async()=>{try{await o(e,{...i,navigation:a}),X.info(r(`navigationSync.undone`))}catch{X.error(r(`navigationSync.undoFailed`))}}}})}catch{X.error(r(`navigationSync.updateFailed`))}},[s,o,r]),l=(0,$.useCallback)(async(e,t,n)=>{let i=s(e);if(!i)return;let a=i.navigation??[],c=Ld(a,{id:Id(`nav_dash`),type:`dashboard`,label:n||t,dashboardName:t,icon:`LayoutDashboard`}),l={...i,navigation:c};try{await o(e,l),X.success(r(`navigationSync.addedDashboard`,{name:n||t}),{action:{label:r(`navigationSync.undoLabel`),onClick:async()=>{try{await o(e,{...i,navigation:a}),X.info(r(`navigationSync.undone`))}catch{X.error(r(`navigationSync.undoFailed`))}}}})}catch{X.error(r(`navigationSync.updateFailed`))}},[s,o,r]),u=(0,$.useCallback)(async(e,t)=>{let n=s(e);if(!n)return;let i=n.navigation??[],a=Rd(i,`page`,t);if(Bd(a,i))return;let c={...n,navigation:a};try{await o(e,c),X.success(r(`navigationSync.removedPage`,{name:t}),{action:{label:r(`navigationSync.undoLabel`),onClick:async()=>{try{await o(e,{...n,navigation:i}),X.info(r(`navigationSync.undone`))}catch{X.error(r(`navigationSync.undoFailed`))}}}})}catch{X.error(r(`navigationSync.updateFailed`))}},[s,o,r]),d=(0,$.useCallback)(async(e,t)=>{let n=s(e);if(!n)return;let i=n.navigation??[],a=Rd(i,`dashboard`,t);if(Bd(a,i))return;let c={...n,navigation:a};try{await o(e,c),X.success(r(`navigationSync.removedDashboard`,{name:t}),{action:{label:r(`navigationSync.undoLabel`),onClick:async()=>{try{await o(e,{...n,navigation:i}),X.info(r(`navigationSync.undone`))}catch{X.error(r(`navigationSync.undoFailed`))}}}})}catch{X.error(r(`navigationSync.updateFailed`))}},[s,o,r]),f=(0,$.useCallback)(async(e,t,n)=>{let i=s(e);if(!i)return;let a=i.navigation??[],c=zd(a,`page`,t,n);if(Bd(c,a))return;let l={...i,navigation:c};try{await o(e,l),X.success(r(`navigationSync.renamedPage`,{oldName:t,newName:n}),{action:{label:r(`navigationSync.undoLabel`),onClick:async()=>{try{await o(e,{...i,navigation:a}),X.info(r(`navigationSync.undone`))}catch{X.error(r(`navigationSync.undoFailed`))}}}})}catch{X.error(r(`navigationSync.updateFailed`))}},[s,o,r]),p=(0,$.useCallback)(async(e,t,n)=>{let i=s(e);if(!i)return;let a=i.navigation??[],c=zd(a,`dashboard`,t,n);if(Bd(c,a))return;let l={...i,navigation:c};try{await o(e,l),X.success(r(`navigationSync.renamedDashboard`,{oldName:t,newName:n}),{action:{label:r(`navigationSync.undoLabel`),onClick:async()=>{try{await o(e,{...i,navigation:a}),X.info(r(`navigationSync.undone`))}catch{X.error(r(`navigationSync.undoFailed`))}}}})}catch{X.error(r(`navigationSync.updateFailed`))}},[s,o,r]),m=e=>e&&typeof e==`object`&&`name`in e?e.name:void 0;return{syncPageCreated:c,syncDashboardCreated:l,syncPageDeleted:u,syncDashboardDeleted:d,syncPageRenamed:f,syncDashboardRenamed:p,syncPageCreatedAllApps:(0,$.useCallback)(async(e,n)=>{for(let r of t){let t=m(r);!t||!Ud(r)||await c(t,e,n)}},[t,c]),syncDashboardCreatedAllApps:(0,$.useCallback)(async(e,n)=>{for(let r of t){let t=m(r);!t||!Ud(r)||await l(t,e,n)}},[t,l]),syncPageDeletedAllApps:(0,$.useCallback)(async e=>{for(let n of t){let t=m(n);!t||!Ud(n)||await u(t,e)}},[t,u]),syncDashboardDeletedAllApps:(0,$.useCallback)(async e=>{for(let n of t){let t=m(n);!t||!Ud(n)||await d(t,e)}},[t,d]),syncPageRenamedAllApps:(0,$.useCallback)(async(e,n)=>{for(let r of t){let t=m(r);!t||!Ud(r)||await f(t,e,n)}},[t,f]),syncDashboardRenamedAllApps:(0,$.useCallback)(async(e,n)=>{for(let r of t){let t=m(r);!t||!Ud(r)||await p(t,e,n)}},[t,p])}}function Gd(){let{pages:e,dashboards:t,apps:n,getTypeStatus:r}=ae(),i=se(),a=(0,$.useRef)(i);a.current=i;let o=Oi(),{syncPageCreated:s,syncDashboardCreated:c,syncPageDeleted:l,syncDashboardDeleted:u}=Wd(),d=(0,$.useRef)(null),f=(0,$.useRef)(null),p=(0,$.useRef)(0),m=(0,$.useRef)(!1),h=e=>e&&typeof e==`object`&&`name`in e?e.name:void 0;return(0,$.useEffect)(()=>{if(m.current)return;if(o){d.current=null,f.current=null;return}if(r&&(r(`page`)!==`ready`||r(`dashboard`)!==`ready`))return;let i=e=>new Set(e.filter(e=>!Hd(e)).map(e=>e?.name).filter(e=>typeof e==`string`&&e.length>0)),a=i(e??[]),g=i(t??[]),_=d.current,v=f.current;if(_===null||v===null){d.current=a,f.current=g;return}let y=[...a].filter(e=>!_.has(e)),b=[..._].filter(e=>!a.has(e)),x=[...g].filter(e=>!v.has(e)),S=[...v].filter(e=>!g.has(e));if(y.length===0&&b.length===0&&x.length===0&&S.length===0){d.current=a,f.current=g;return}let C=++p.current;m.current=!0;let w=!1;return(async()=>{try{for(let e of n){if(w||p.current!==C)break;let t=h(e);if(!(!t||!Ud(e))){for(let e of y){if(w)break;await s(t,e)}for(let e of b){if(w)break;await l(t,e)}for(let e of x){if(w)break;await c(t,e)}for(let e of S){if(w)break;await u(t,e)}}}}finally{p.current===C&&(d.current=a,f.current=g,m.current=!1)}})(),()=>{w=!0}},[e,t,n,o,r,s,c,l,u]),null}var Kd=768,qd=1024;function Jd(){let{setOpen:e,isMobile:t}=En(),n=(0,$.useRef)(e);(0,$.useEffect)(()=>{n.current=e},[e]),(0,$.useEffect)(()=>{if(t)return;let e=!1;function r(){let t=window.innerWidth,r=t>=Kd&&t<qd;r&&!e&&n.current(!1),e=r}return r(),window.addEventListener(`resize`,r),()=>window.removeEventListener(`resize`,r)},[t])}var Yd=new Set([`view`,`record`,`page`,`dashboard`,`design`,`report`]);function Xd(e){return e.replace(/[-_]/g,` `).replace(/\b\w/g,e=>e.toUpperCase())}function Zd(e){try{return decodeURIComponent(e)}catch{return e}}function Qd({pathname:e,appName:t,objects:n=[],basePathSegment:r=`apps`,disabled:i=!1}){let{addRecentItem:a}=Gi(),o=(0,$.useRef)(n);o.current=n,(0,$.useEffect)(()=>{if(i||!t)return;let n=e.split(`/`).filter(Boolean);if(n[0]!==r||n[1]!==t)return;let s=n[2],c=n[3],l=`/${r}/${t}`;if(s===`metadata`){let e=n[3],t=n[4];e&&t&&t!==`new`&&a({id:`metadata:${e}:${Zd(t)}`,label:Zd(t),href:`${l}/metadata/${e}/${t}`,type:`metadata`});return}if(s&&!Yd.has(s)){let e=o.current.find(e=>e.name===s);e&&a({id:`object:${e.name}`,label:e.label||e.name,href:`${l}/${e.name}`,type:`object`});return}if(c)switch(s){case`dashboard`:a({id:`dashboard:${c}`,label:Xd(c),href:`${l}/dashboard/${c}`,type:`dashboard`});break;case`page`:a({id:`page:${c}`,label:Xd(c),href:`${l}/page/${c}`,type:`page`});break;case`report`:a({id:`report:${c}`,label:Xd(c),href:`${l}/report/${c}`,type:`report`})}},[e,t,r,i])}var $d={"studio-build":`build`,default:`ask`};function ef(e,{agents:t,appDefaultAgent:n,aiStudioEnabled:r=!0}){let i=t.map(e=>e.name),a=(Ea(n)?n:void 0)??$d[e]??$d.default,o=!r&&Aa(a)?`ask`:a;return za(o,i)??Oa(t)}function tf(e){try{let t=window.localStorage.getItem(e),n=t?Number.parseInt(t,10):NaN;return Number.isFinite(n)&&n>0?n:420}catch{return 420}}function nf(e){let{defaultExpanded:t=!1,persistExpandedKey:n,persistWidthKey:r=Dl}=e??{},[i,a]=$.useState(()=>n?Pl(n,t):t),[o,s]=$.useState(()=>tf(r)),[c,l]=$.useState(!1),[u,d]=$.useState(!1),f=$.useRef(!1),p=$.useRef(null),m=$.useRef(o);m.current=o;let h=$.useCallback(e=>{a(t=>{let r=e(t);return n&&Fl(n,r),r})},[n]),g=$.useCallback(e=>{e.preventDefault(),f.current=!1,p.current=null,d(!1);let t=e.clientX,n=o;l(!0);let i=e=>{let r=jl(n+(t-e.clientX),window.innerWidth);s(r)},a=e=>{let o=jl(n+(t-e.clientX),window.innerWidth);try{window.localStorage.setItem(r,String(Math.round(o)))}catch{}l(!1),window.removeEventListener(`pointermove`,i),window.removeEventListener(`pointerup`,a)};window.addEventListener(`pointermove`,i),window.addEventListener(`pointerup`,a)},[o]),_=$.useCallback(()=>{f.current||(f.current=!0,p.current=m.current,s(Ml(window.innerWidth)),d(!0))},[]),v=$.useCallback(()=>{f.current&&(f.current=!1,s(p.current??tf(r)),p.current=null,d(!1))},[r]);return{expanded:i,width:o,dragging:c,maximized:u,toggle:$.useCallback(()=>h(e=>!e),[h]),expand:$.useCallback(()=>h(()=>!0),[h]),collapse:$.useCallback(()=>h(()=>!1),[h]),maximize:_,restore:v,onResizePointerDown:g}}function rf({userId:e,apiBase:t,defaultAgent:n,onCanvasOpenChange:r}){let{agents:i,isLoading:a,error:o}=ka({apiBase:t}),s=$.useMemo(()=>ef(`default`,{agents:i,appDefaultAgent:n,aiStudioEnabled:xo().features.aiStudio!==!1}),[i,n]),c=s?`${t}/agents/${encodeURIComponent(s)}/chat`:void 0,l=s?fu({appId:void 0,product:du(s)}):void 0,{conversationId:u,initialMessages:d}=cu({userId:s?e:void 0,scope:l,apiBase:t,activeId:void 0,forceNew:!1}),f=$.useRef(null);return!a&&i.length===0?null:(0,Q.jsx)(_d,{agents:i,agentsLoading:a,agentsError:o,activeAgent:s,chatApi:c,apiBase:t,conversationId:u,initialMessages:d,pendingFirstMessageRef:f,onSent:()=>{},onShare:()=>{},showDebug:!1,onCanvasOpenChange:r},`${c??`local`}:${u??`pending`}`)}function af({dock:e,userId:t,apiBase:n,defaultAgent:r,title:i,onMaximize:a,children:o}){let{t:s}=V(),c=$.useMemo(()=>td(n),[n]),l=$.useCallback(t=>t?e.maximize():e.restore(),[e.maximize,e.restore]);return(0,Q.jsxs)(`aside`,{"data-testid":`chat-dock-panel`,style:{width:e.width},className:Fn(`relative hidden h-full shrink-0 flex-col border-l bg-background md:flex`,!e.dragging&&`transition-[width] duration-200 ease-out`),children:[(0,Q.jsx)(`div`,{role:`separator`,"aria-orientation":`vertical`,"aria-label":s(`console.ai.dock.resize`,{defaultValue:`Resize chat`}),onPointerDown:e.onResizePointerDown,className:Fn(`absolute left-0 top-0 z-10 h-full w-1 cursor-col-resize transition-colors hover:bg-primary/40`,e.dragging&&`bg-primary/50`)}),(0,Q.jsxs)(`div`,{className:`flex h-11 shrink-0 items-center justify-between border-b px-3`,children:[(0,Q.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 text-xs font-semibold text-foreground/80`,children:[(0,Q.jsx)(yn,{className:`size-3.5`}),i??s(`console.ai.dock.title`,{defaultValue:`Assistant`})]}),(0,Q.jsxs)(`span`,{className:`flex items-center gap-0.5`,children:[(0,Q.jsx)(kd,{apiBase:c}),a?(0,Q.jsx)(Y,{variant:`ghost`,size:`icon`,className:`h-7 w-7 text-muted-foreground hover:text-foreground`,onClick:a,"aria-label":s(`console.ai.dock.maximize`,{defaultValue:`Open full page`}),title:s(`console.ai.dock.maximize`,{defaultValue:`Open full page`}),"data-testid":`chat-dock-maximize`,children:(0,Q.jsx)(Jr,{className:`h-3.5 w-3.5`})}):null,(0,Q.jsx)(Y,{variant:`ghost`,size:`icon`,className:`h-7 w-7 text-muted-foreground hover:text-foreground`,onClick:e.collapse,"aria-label":s(`console.ai.dock.collapse`,{defaultValue:`Collapse chat`}),"data-testid":`chat-dock-collapse`,children:(0,Q.jsx)(Pe,{className:`h-4 w-4`})})]})]}),(0,Q.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:o??(0,Q.jsx)(rf,{userId:t,apiBase:c,defaultAgent:r,onCanvasOpenChange:l})})]})}function of({open:e,onOpenChange:t,userId:n,apiBase:r,defaultAgent:i,title:a,onMaximize:o,children:s}){let{t:c}=V(),l=$.useMemo(()=>td(r),[r]),u=$.useRef(!1);return $.useEffect(()=>{!e&&u.current&&(u.current=!1,o?.())},[e,o]),(0,Q.jsx)(Jn,{open:e,onOpenChange:t,children:(0,Q.jsxs)(Un,{side:`bottom`,className:`flex h-[85svh] flex-col gap-0 p-0 md:hidden`,"data-testid":`chat-dock-mobile-sheet`,children:[(0,Q.jsxs)(Qr,{className:`shrink-0 border-b px-4 py-2`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-1 pr-8`,children:[(0,Q.jsxs)(oi,{className:`inline-flex items-center gap-1.5 text-sm font-semibold`,children:[(0,Q.jsx)(yn,{className:`size-4`}),a??c(`console.ai.dock.title`,{defaultValue:`Assistant`})]}),(0,Q.jsx)(kd,{apiBase:l}),o?(0,Q.jsx)(Y,{variant:`ghost`,size:`icon`,className:`h-9 w-9 text-muted-foreground hover:text-foreground`,onClick:()=>{u.current=!0,t(!1)},"aria-label":c(`console.ai.dock.maximize`,{defaultValue:`Open full page`}),"data-testid":`chat-dock-mobile-maximize`,children:(0,Q.jsx)(Jr,{className:`h-4 w-4`})}):null]}),(0,Q.jsx)(hn,{className:`sr-only`,children:c(`console.ai.dock.description`,{defaultValue:`AI assistant chat`})})]}),(0,Q.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:s??(0,Q.jsx)(rf,{userId:n,apiBase:l,defaultAgent:i})})]})})}function sf({onExpand:e,className:t}){let{t:n}=V();return(0,Q.jsx)(Y,{variant:`outline`,size:`icon`,onClick:e,"data-testid":`chat-dock-launcher`,"aria-label":n(`console.ai.dock.open`,{defaultValue:`Open assistant`}),title:n(`console.ai.dock.open`,{defaultValue:`Open assistant`}),className:Fn(`fixed right-0 top-1/2 z-40 hidden h-16 w-7 -translate-y-1/2 rounded-l-md rounded-r-none border-r-0 bg-background shadow-md md:inline-flex`,t),children:(0,Q.jsx)(yn,{className:`size-4`})})}var cf=new Set([`object`,`app`,`action`]);async function lf(){try{let e=await o(()=>import(`./vendor-objectstack-DneBps14.js`).then(e=>e.i),[],import.meta.url);return typeof e?.validateCapabilityReferences==`function`?e.validateCapabilityReferences:null}catch{return null}}async function uf(e,t,n){try{let r=n===void 0?await lf():n;if(!r)return[];let i=t.filter(e=>cf.has(e.type));if(i.length===0)return[];let a=e=>{let t=e?.item??e;return t&&typeof t==`object`?t:null},o=await Promise.all(i.map(t=>e.getDraft?.(t.type,t.name,t.packageId?{packageId:t.packageId}:void 0).then(a).catch(()=>null)??Promise.resolve(null))),s=await(e.list?.(`permission`,{}))?.then(e=>Array.isArray(e)?e.map(a).filter(Boolean):[]).catch(()=>[])??[],c=await Promise.all(t.filter(e=>e.type===`permission`).map(t=>e.getDraft?.(t.type,t.name,t.packageId?{packageId:t.packageId}:void 0).then(a).catch(()=>null)??Promise.resolve(null)));return r({objects:o.filter((e,t)=>e&&i[t].type===`object`),apps:o.filter((e,t)=>e&&i[t].type===`app`),actions:o.filter((e,t)=>e&&i[t].type===`action`),permissions:[...s,...c.filter(Boolean)]}).filter(e=>e&&e.severity===`warning`).map(e=>`${e.where}: ${e.message}`)}catch{return[]}}function df(e){let t=Qo(),[n,r]=(0,$.useState)(!1);return{publishAll:(0,$.useCallback)(async()=>{r(!0);try{let n=(await t.listDrafts?.({})||[]).filter(e=>e&&typeof e.type==`string`&&typeof e.name==`string`).map(e=>({type:e.type,name:e.name,packageId:typeof e.packageId==`string`&&e.packageId?e.packageId:null}));if(n.length===0)return X.info(e(`home.pendingDrafts.nothing`,{defaultValue:`Nothing to publish.`})),{ok:!0,attempted:0};let r=await uf(t,n),i=[...new Set(n.map(e=>e.packageId).filter(e=>e!==null))],a=n.filter(e=>e.packageId===null),o=[],s=[],c=0,l=e=>{if(e){e.seedError&&o.push(e.seedError),typeof e.seededRows==`number`&&(c+=e.seededRows);for(let t of e.issues??[])t.severity===`error`&&s.push(t.message)}};for(let e of i){let t=await fetch(`/api/v1/packages/${encodeURIComponent(e)}/publish-drafts`,{method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:`{}`}),n=await t.json().catch(()=>null);if(!t.ok||n?.success===!1)throw Error(n?.error?.message||`HTTP ${t.status}`);l(Ma(n))}let u=[...a.filter(e=>e.type!==`seed`),...a.filter(e=>e.type===`seed`)];for(let e of u){let n=(await t.publishDraft(e.type,e.name))?.seedApplied;n&&n.success===!1&&o.push(n.error??`${e.name}: sample data failed to load`)}return s.length>0?X.warning(e(`home.pendingDrafts.probeWarn`,{defaultValue:`Published, but verification found problems.`}),{description:s[0]}):o.length>0?X.warning(e(`home.pendingDrafts.seedWarn`,{defaultValue:`Published, but some sample data failed to load.`}),{description:o[0]}):X.success(c>0?e(`home.pendingDrafts.publishedVerified`,{count:c,defaultValue:`Published & verified — {{count}} sample row(s) live.`}):e(`home.pendingDrafts.published`,{defaultValue:`Published! Your changes are live.`})),r.length>0&&X.warning(e(`home.pendingDrafts.capabilityWarn`,{count:r.length,defaultValue:`Authoring check: {{count}} capability reference(s) resolve nowhere.`}),{description:r[0],duration:1e4}),{ok:!0,attempted:n.length}}catch(t){return X.error(`${e(`home.pendingDrafts.publishFailed`,{defaultValue:`Publish failed`})}: ${t.message}`),{ok:!1,attempted:0}}finally{r(!1)}},[t,e]),publishing:n}}async function ff(e){let t=e?`?packageId=${encodeURIComponent(e)}`:``,n=await fetch(`/api/v1/meta/_drafts${t}`,{credentials:`include`,headers:{Accept:`application/json`},cache:`no-store`});if(!n.ok)throw Error(`_drafts HTTP ${n.status}`);let r=await n.json();return(Array.isArray(r)?r:r?.drafts??[]).filter(e=>typeof e?.type==`string`&&typeof e?.name==`string`).map(e=>({type:e.type,name:e.name,packageId:typeof e.packageId==`string`&&e.packageId?e.packageId:null}))}async function pf(e){let t=await fetch(`/api/v1/meta/${encodeURIComponent(e)}`,{credentials:`include`,headers:{Accept:`application/json`},cache:`no-store`});if(!t.ok)throw Error(`published list HTTP ${t.status}`);let n=await t.json(),r=Array.isArray(n)?n:n?.items??[];return new Set(r.map(e=>typeof e?.name==`string`?e.name:null).filter(e=>e!==null))}function mf(e){if(!e||typeof e!=`object`)return null;let t=e;return t.item&&typeof t.item==`object`?t.item:t}async function hf(e,t,n={}){let r=[];n.draft&&r.push(`state=draft`),n.packageId&&r.push(`package=${encodeURIComponent(n.packageId)}`);let i=r.length?`?${r.join(`&`)}`:``,a=await fetch(`/api/v1/meta/${encodeURIComponent(e)}/${encodeURIComponent(t)}${i}`,{credentials:`include`,headers:{Accept:`application/json`},cache:`no-store`});if(a.status===404)return null;if(!a.ok)throw Error(`HTTP ${a.status}`);return mf(await a.json())}function gf(e,t){return JSON.stringify(e??null)===JSON.stringify(t??null)}function _f(e,t){let n=e??{},r=t??{},i=null;if(n.fields!=null||r.fields!=null){let e=ss(n.fields,r.fields);i={added:Object.values(e.byName).filter(e=>e.status===`added`).map(e=>e.name).sort(),changed:Object.values(e.byName).filter(e=>e.status===`changed`).map(e=>({name:e.name,keys:e.changedKeys})).sort((e,t)=>e.name.localeCompare(t.name)),removed:e.removed.map(e=>e.name).sort()}}let a=new Set([...Object.keys(n),...Object.keys(r)]);a.delete(`fields`);let o=[...a].filter(e=>!gf(n[e],r[e])).sort();return{fields:i,changedKeys:o}}function vf({entry:e}){let{t}=V(),[n,r]=(0,$.useState)(null),[i,a]=(0,$.useState)(null);if((0,$.useEffect)(()=>{let t=!1;return(async()=>{try{let[n,i]=await Promise.all([hf(e.type,e.name,{packageId:e.packageId}),hf(e.type,e.name,{draft:!0,packageId:e.packageId})]);t||r(_f(n,i))}catch(e){t||a(e.message)}})(),()=>{t=!0}},[e.type,e.name,e.packageId]),i)return(0,Q.jsxs)(`p`,{className:`px-2 py-1 text-xs text-destructive`,children:[t(`preview.changes.detailLoadFailed`,{defaultValue:`Could not load change detail:`}),` `,i]});if(!n)return(0,Q.jsxs)(`p`,{className:`flex items-center gap-1.5 px-2 py-1 text-xs text-muted-foreground`,children:[(0,Q.jsx)(J,{className:`h-3 w-3 animate-spin`}),t(`preview.changes.detailLoading`,{defaultValue:`Loading detail…`})]});let{fields:o,changedKeys:s}=n;return!(o&&(o.added.length>0||o.changed.length>0||o.removed.length>0))&&s.length===0?(0,Q.jsx)(`p`,{className:`px-2 py-1 text-xs text-muted-foreground`,children:t(`preview.changes.detailNone`,{defaultValue:`No differences detected — the draft matches the published version.`})}):(0,Q.jsxs)(`div`,{className:`flex flex-col gap-0.5 px-2 py-1`,"data-testid":`draft-entry-detail`,children:[o?.added.map(e=>(0,Q.jsxs)(`p`,{className:`font-mono text-xs text-emerald-700 dark:text-emerald-400`,children:[`+ `,e]},`+${e}`)),o?.changed.map(e=>(0,Q.jsxs)(`p`,{className:`font-mono text-xs text-amber-700 dark:text-amber-400`,children:[`~ `,e.name,e.keys.length>0&&(0,Q.jsxs)(`span`,{className:`text-muted-foreground`,children:[` · `,e.keys.join(`, `)]})]},`~${e.name}`)),o?.removed.map(e=>(0,Q.jsxs)(`p`,{className:`font-mono text-xs text-red-700 line-through dark:text-red-400`,children:[`− `,e]},`-${e}`)),s.length>0&&(0,Q.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[t(`preview.changes.detailChangedKeys`,{defaultValue:`Also changed:`}),` `,(0,Q.jsx)(`span`,{className:`font-mono`,children:s.join(`, `)})]})]})}function yf({open:e,onOpenChange:t,packageId:n,onPublish:r,publishing:i=!1}){let{t:a}=V(),[o,s]=(0,$.useState)(null),[c,l]=(0,$.useState)(null),[u,d]=(0,$.useState)(new Set),f=(0,$.useCallback)(e=>{d(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),p=(0,$.useCallback)(async()=>{s(null),l(null);try{let e=await ff(n);s(e);let t=[...new Set(e.map(e=>e.type))];await Promise.all(t.map(async e=>{let t=null;try{t=await pf(e)}catch{return}s(n=>n&&n.map(n=>n.type===e?{...n,kind:t.has(n.name)?`update`:`new`}:n))}))}catch(e){l(e.message)}},[n]);(0,$.useEffect)(()=>{e&&p()},[e,p]);let m=new Map;for(let e of o??[]){let t=m.get(e.type)??[];t.push(e),m.set(e.type,t)}return(0,Q.jsx)(Jn,{open:e,onOpenChange:t,children:(0,Q.jsxs)(Un,{side:`right`,className:`flex w-[420px] flex-col sm:max-w-[420px]`,"data-testid":`draft-changes-panel`,children:[(0,Q.jsxs)(Qr,{children:[(0,Q.jsx)(oi,{children:a(`preview.changes.title`,{defaultValue:`Pending changes`})}),(0,Q.jsx)(hn,{children:a(`preview.changes.description`,{defaultValue:`What publishing will change. New items are added; updates overwrite the live version.`})})]}),(0,Q.jsx)(`div`,{className:`mt-4 flex min-h-0 flex-1 flex-col gap-4 overflow-y-auto px-4 pb-6`,children:c?(0,Q.jsxs)(`p`,{className:`text-sm text-destructive`,children:[a(`preview.changes.loadFailed`,{defaultValue:`Could not load pending changes:`}),` `,c]}):o===null?(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-muted-foreground`,children:[(0,Q.jsx)(J,{className:`h-4 w-4 animate-spin`}),a(`preview.changes.loading`,{defaultValue:`Loading pending changes…`})]}):o.length===0?(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:a(`preview.changes.empty`,{defaultValue:`Nothing pending — every draft has been published.`})}):[...m.entries()].map(([e,t])=>(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(`h4`,{className:`mb-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground`,children:[e,` · `,t.length]}),(0,Q.jsx)(`ul`,{className:`flex flex-col gap-1`,children:t.map(e=>{let t=`${e.type}:${e.name}`,n=u.has(t);return(0,Q.jsxs)(`li`,{className:`rounded-md border text-sm`,children:[(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>f(t),"aria-expanded":n,className:`flex w-full items-center gap-2 px-2.5 py-1.5 text-left hover:bg-muted/50`,"data-testid":`draft-entry-toggle`,children:[n?(0,Q.jsx)(kr,{className:`h-3 w-3 shrink-0 text-muted-foreground`}):(0,Q.jsx)(kn,{className:`h-3 w-3 shrink-0 text-muted-foreground`}),e.kind===`new`?(0,Q.jsx)(_r,{className:`h-3.5 w-3.5 shrink-0 text-emerald-600`}):e.kind===`update`?(0,Q.jsx)(Zn,{className:`h-3.5 w-3.5 shrink-0 text-amber-600`}):(0,Q.jsx)(J,{className:`h-3.5 w-3.5 shrink-0 animate-spin text-muted-foreground`}),(0,Q.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-mono text-xs`,children:e.name}),e.kind?(0,Q.jsx)(ir,{variant:`outline`,className:e.kind===`new`?`border-emerald-200 bg-emerald-50 text-emerald-700`:`border-amber-200 bg-amber-50 text-amber-700`,children:e.kind===`new`?a(`preview.changes.kindNew`,{defaultValue:`New`}):a(`preview.changes.kindUpdate`,{defaultValue:`Update`})}):null]}),n&&(0,Q.jsx)(`div`,{className:`border-t bg-muted/20`,children:(0,Q.jsx)(vf,{entry:e})})]},t)})})]},e))}),r&&(o?.length??0)>0&&!c&&(0,Q.jsxs)(`div`,{className:`mt-auto flex flex-col gap-2 border-t px-4 py-3`,children:[(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:a(`preview.changes.confirmNote`,{count:o.length,defaultValue:`Publishing releases all {{count}} pending drafts of this package atomically.`})}),(0,Q.jsxs)(Y,{size:`sm`,onClick:()=>void r(),disabled:i,"data-testid":`draft-changes-publish`,children:[i?(0,Q.jsx)(J,{className:`mr-1.5 h-3.5 w-3.5 animate-spin`}):(0,Q.jsx)(Or,{className:`mr-1.5 h-3.5 w-3.5`}),a(`preview.changes.publishConfirm`,{defaultValue:`Publish all`})]})]})]})})}function bf(){let e=Oi(),t=i(),n=a(),{t:r}=V(),{publishAll:o,publishing:s}=df(r),[c,l]=(0,$.useState)(!1),[u,d]=(0,$.useState)(null);if((0,$.useEffect)(()=>{if(!e)return;let t=!1;return fetch(`/api/v1/meta/_drafts`,{credentials:`include`,headers:{Accept:`application/json`},cache:`no-store`}).then(e=>e.ok?e.json():null).then(e=>{if(t||!e)return;let n=Array.isArray(e)?e:e?.drafts??[];d(Array.isArray(n)?n.length:null)}).catch(()=>{}),()=>{t=!0}},[e,t.pathname]),!e)return null;let f=()=>{Ei();let e=new URLSearchParams(t.search);e.delete(Di);let r=e.toString();n(`${t.pathname}${r?`?${r}`:``}${t.hash}`,{replace:!0})},p=async()=>{(await o()).ok&&(f(),setTimeout(()=>{try{window.location.reload()}catch{}},300))},m=u===0;return(0,Q.jsxs)(`div`,{className:Fn(`sticky top-0 z-40 border-b`,m?`border-slate-200 bg-slate-50 text-slate-700 dark:border-slate-700/60 dark:bg-slate-900/40 dark:text-slate-300`:`border-amber-300/70 bg-amber-50 text-amber-900 dark:border-amber-700/60 dark:bg-amber-950/40 dark:text-amber-200`),"data-testid":`draft-preview-bar`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-3 px-4 py-2 text-sm`,children:[(0,Q.jsx)(Cn,{className:`h-4 w-4 shrink-0`}),(0,Q.jsx)(`p`,{className:`min-w-0 flex-1 truncate`,children:m?r(`preview.draftBar.messageClean`,{defaultValue:`Draft preview — no unpublished changes; everything here is already live.`}):r(`preview.draftBar.message`,{defaultValue:`Draft preview — you are seeing unpublished changes. Nothing here is live until you publish.`})}),!m&&(0,Q.jsxs)(Y,{size:`sm`,variant:`outline`,onClick:()=>l(!0),"data-testid":`draft-preview-changes`,children:[(0,Q.jsx)(cn,{className:`mr-1 h-3.5 w-3.5`}),r(`preview.draftBar.changes`,{defaultValue:`Changes`}),typeof u==`number`?` (${u})`:``]}),(0,Q.jsxs)(Y,{size:`sm`,variant:`outline`,onClick:f,"data-testid":`draft-preview-exit`,children:[(0,Q.jsx)(Pn,{className:`mr-1 h-3.5 w-3.5`}),r(`preview.draftBar.exit`,{defaultValue:`Exit preview`})]})]}),!m&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-3 border-t border-amber-300/50 px-4 py-2.5 dark:border-amber-700/40`,"data-testid":`draft-preview-sample-hint`,children:[(0,Q.jsx)($t,{className:`h-5 w-5 shrink-0 text-amber-600 dark:text-amber-300`,"aria-hidden":`true`}),(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Q.jsx)(`p`,{className:`text-sm font-semibold leading-tight`,children:r(`preview.draftBar.sampleDataTitle`,{defaultValue:`Sample data appears once you publish`})}),(0,Q.jsx)(`p`,{className:`text-xs leading-snug text-amber-800/80 dark:text-amber-200/70`,children:r(`preview.draftBar.sampleDataBody`,{defaultValue:`You’re previewing your app’s structure. Publish to load example records and make it live.`})})]}),(0,Q.jsxs)(Y,{onClick:p,disabled:s,"data-testid":`draft-preview-publish`,className:`shrink-0 shadow-sm`,children:[(0,Q.jsx)(Or,{className:`mr-1.5 h-4 w-4`}),s?r(`preview.draftBar.publishing`,{defaultValue:`Publishing…`}):r(`preview.draftBar.publishCta`,{defaultValue:`Publish to see it live`})]})]}),(0,Q.jsx)(yf,{open:c,onOpenChange:l})]})]})}var xf=class extends Error{status;code;retryable;constructor(e,t){super(e),this.name=`CommitStoreError`,this.status=t.status,this.code=t.code??null,this.retryable=t.retryable}};function Sf(e){return typeof e==`object`&&!!e&&e.retryable===!0}function Cf(e){let t=e?.error;if(typeof t==`string`)return{code:null,message:t.trim()||null};if(!t||typeof t!=`object`)return{code:null,message:null};let n=t,r=e=>typeof e==`string`&&e.trim()?e:null;return{code:r(n.code),message:r(n.message)}}function wf(e,t,n){let{code:r,message:i}=Cf(t),a=e===503||r===`SERVICE_UNAVAILABLE`;return new xf(a?`Commit store temporarily unreachable (HTTP ${e}) — the request did not reach it.`:i??n,{status:e,code:r,retryable:a})}async function Tf(e){let t=await fetch(`/api/v1/packages/${encodeURIComponent(e)}/commits`,{credentials:`include`,headers:{Accept:`application/json`},cache:`no-store`});if(!t.ok){let e=await t.json().catch(()=>null);throw wf(t.status,e,`commits HTTP ${t.status}`)}let n=await t.json(),r=Array.isArray(n)?n:n?.commits??n?.data?.commits??[];return(Array.isArray(r)?r:[]).map(e=>{let t=e;return{id:String(t.id),operation:t.operation===`revert`?`revert`:`apply`,message:typeof t.message==`string`?t.message:void 0,actor:typeof t.actor==`string`?t.actor:void 0,aiModel:typeof t.aiModel==`string`?t.aiModel:void 0,itemCount:typeof t.itemCount==`number`?t.itemCount:0,createdAt:typeof t.createdAt==`string`?t.createdAt:void 0}})}async function Ef(e,t){let n=await fetch(`/api/v1/packages/${encodeURIComponent(e)}/commits/${encodeURIComponent(t)}/revert`,{method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:`{}`}),r=await n.json().catch(()=>null),i=r?.data??r??void 0;if(!n.ok||i?.success===!1)throw wf(n.status,r,`HTTP ${n.status}`)}function Df(e){if(!e)return``;let t=Date.parse(e);if(Number.isNaN(t))return``;let n=Math.max(0,Math.round((Date.now()-t)/1e3));if(n<60)return`${n}s`;let r=Math.round(n/60);if(r<60)return`${r}m`;let i=Math.round(r/60);return i<24?`${i}h`:`${Math.round(i/24)}d`}function Of({open:e,onOpenChange:t,packageId:n,onReverted:r}){let{t:i}=V(),[a,o]=(0,$.useState)(null),[s,c]=(0,$.useState)(null),[l,u]=(0,$.useState)(null),d=(0,$.useCallback)(async()=>{o(null),c(null);try{o(await Tf(n))}catch(e){c({message:e.message,unreachable:Sf(e)})}},[n]);(0,$.useEffect)(()=>{e&&d()},[e,d]);let f=async e=>{u(e);try{await Ef(n,e),X.success(i(`preview.history.reverted`,{defaultValue:`Reverted — the change has been undone.`})),r?.(),await d()}catch(e){X.error(Sf(e)?i(`preview.history.revertUnavailable`,{defaultValue:`Commit store temporarily unreachable — the revert may not have been applied. Reopen this history to check before retrying.`}):`${i(`preview.history.revertFailed`,{defaultValue:`Revert failed`})}: ${e.message}`)}finally{u(null)}};return(0,Q.jsx)(Jn,{open:e,onOpenChange:t,children:(0,Q.jsxs)(Un,{side:`right`,className:`w-[420px] sm:max-w-[420px]`,"data-testid":`commit-timeline-panel`,children:[(0,Q.jsxs)(Qr,{children:[(0,Q.jsx)(oi,{children:i(`preview.history.title`,{defaultValue:`Build history`})}),(0,Q.jsx)(hn,{children:i(`preview.history.description`,{defaultValue:`Every change to this app, newest first. Revert any step to undo it — no publish confirmation needed.`})})]}),(0,Q.jsx)(`div`,{className:`mt-4 flex flex-col gap-2 overflow-y-auto px-4 pb-6`,children:s?(0,Q.jsx)(`p`,{className:`text-sm text-destructive`,"data-testid":`commit-history-error`,children:s.unreachable?i(`preview.history.loadFailedUnavailable`,{defaultValue:`Commit store temporarily unreachable — this read did not happen, so no history is shown. Retry in a moment.`}):`${i(`preview.history.loadFailed`,{defaultValue:`Could not load history:`})} ${s.message}`}):a===null?(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-muted-foreground`,children:[(0,Q.jsx)(J,{className:`h-4 w-4 animate-spin`}),i(`preview.history.loading`,{defaultValue:`Loading history…`})]}):a.length===0?(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:i(`preview.history.empty`,{defaultValue:`No history yet for this app.`})}):a.map(e=>(0,Q.jsxs)(`div`,{className:`flex items-start gap-2.5 rounded-md border px-2.5 py-2 text-sm`,"data-testid":`commit-row`,children:[(0,Q.jsx)(tn,{className:`mt-0.5 h-4 w-4 shrink-0 ${e.operation===`revert`?`text-muted-foreground`:`text-primary`}`}),(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Q.jsx)(`p`,{className:`truncate font-medium`,children:e.message??(e.operation===`revert`?i(`preview.history.revertLabel`,{defaultValue:`Reverted a change`}):i(`preview.history.applyLabel`,{defaultValue:`Build change`}))}),(0,Q.jsxs)(`p`,{className:`mt-0.5 flex flex-wrap items-center gap-1.5 text-xs text-muted-foreground`,children:[e.operation===`revert`?(0,Q.jsx)(ir,{variant:`outline`,className:`border-muted-foreground/30`,children:i(`preview.history.revert`,{defaultValue:`revert`})}):null,(0,Q.jsxs)(`span`,{children:[e.itemCount,` `,i(`preview.history.items`,{defaultValue:`item(s)`})]}),e.actor?(0,Q.jsxs)(`span`,{children:[`· `,e.actor]}):null,e.createdAt?(0,Q.jsxs)(`span`,{children:[`· `,Df(e.createdAt)]}):null]})]}),e.operation===`apply`?(0,Q.jsx)(Y,{size:`sm`,variant:`ghost`,className:`shrink-0`,disabled:l!==null,onClick:()=>f(e.id),"data-testid":`commit-revert`,children:l===e.id?(0,Q.jsx)(J,{className:`h-3.5 w-3.5 animate-spin`}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(qn,{className:`mr-1 h-3.5 w-3.5`}),i(`preview.history.revertAction`,{defaultValue:`Revert`})]})}):null]},e.id))})]})})}function kf(){let e=Oi(),{appName:t}=l(),n=i(),{apps:r,refresh:a}=ae(),{t:o}=V(),[s,c]=(0,$.useState)(!1),[u,d]=(0,$.useState)(!1);if(e)return null;let f=t??n.pathname.match(/\/apps\/([^/?#]+)/)?.[1];if(!f)return null;let p=ga(r??[],f);if(!p||p._unpublished!==!0)return null;let m=p?.packageId??p?._packageId??null;return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`sticky top-0 z-40 flex items-center gap-3 border-b border-amber-300/70 bg-amber-50 px-4 py-2 text-sm text-amber-900 dark:border-amber-700/60 dark:bg-amber-950/40 dark:text-amber-200`,"data-testid":`unpublished-app-bar`,children:[(0,Q.jsx)(ai,{className:`h-4 w-4 shrink-0`}),(0,Q.jsx)(`p`,{className:`min-w-0 flex-1 truncate`,children:o(`preview.unpublishedBar.message`,{defaultValue:`Unpublished app — fully functional, but only builders can see it. Publish to make it visible to your users.`})}),m?(0,Q.jsxs)(Y,{size:`sm`,variant:`outline`,onClick:()=>d(!0),"data-testid":`unpublished-app-history`,children:[(0,Q.jsx)(Bn,{className:`mr-1 h-3.5 w-3.5`}),o(`preview.history.button`,{defaultValue:`History`})]}):null,(0,Q.jsxs)(Y,{size:`sm`,onClick:async()=>{c(!0);try{let e=await fetch(`/api/v1/meta/app/${encodeURIComponent(f)}`,{method:`PUT`,credentials:`include`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({...p,_unpublished:!1})});if(!e.ok){let t=await e.json().catch(()=>null);throw Error(t?.error?.message??t?.error??`HTTP ${e.status}`)}X.success(o(`preview.unpublishedBar.published`,{defaultValue:`Published! The app is now visible to your users.`})),a?.()}catch(e){X.error(`${o(`preview.unpublishedBar.publishFailed`,{defaultValue:`Publish failed`})}: ${e.message}`)}finally{c(!1)}},disabled:s,"data-testid":`unpublished-app-publish`,children:[(0,Q.jsx)(Or,{className:`mr-1 h-3.5 w-3.5`}),s?o(`preview.unpublishedBar.publishing`,{defaultValue:`Publishing…`}):o(`preview.unpublishedBar.publish`,{defaultValue:`Publish`})]})]}),m?(0,Q.jsx)(Of,{open:u,onOpenChange:d,packageId:m,onReverted:a}):null]})}function Af(){return ge()?(0,Q.jsx)(zn,{}):null}Af.displayName=`ConsoleNotificationBanners`;var jf=`__all__`,Mf=`active_package`,Nf=new Map([[Mf,`package`]]);function Pf(e){return Nf.get(e)??e}function Ff(e){return e.persist??`query`}function If(e,t){return`objectui-ctx-${e}-${t}`}function Lf(e,t){let n={};for(let r of t)if(Ff(r)===`session`)try{let t=sessionStorage.getItem(If(e,r.id));t&&(n[r.id]=t)}catch{}return n}function Rf(e,t){if(t)return t.split(`.`).reduce((e,t)=>e==null?e:e[t],e)}function zf(e){if(Array.isArray(e))return e;let t=e?.data??e;return Array.isArray(t)?t:Array.isArray(t?.packages)?t.packages:Array.isArray(t?.items)?t.items:Array.isArray(e?.items)?e.items:[]}function Bf(e,t){if(!t||t.length===0)return!0;for(let n of t){let t=Rf(e,n.key),r=n.op??`eq`,i=Array.isArray(n.value)?n.value:[n.value];switch(r){case`eq`:if(t!==n.value)return!1;break;case`ne`:if(t===n.value)return!1;break;case`in`:if(!i.includes(t))return!1;break;case`nin`:if(i.includes(t))return!1}}return!0}function Vf(e){let[t,n]=$.useState([]),r=e.optionsSource.endpoint,i=e.optionsSource.valueKey||`id`,a=e.optionsSource.labelKey||`name`,o=e.optionsSource.filter,s=JSON.stringify(o??[]),c=$.useCallback(async()=>{try{let e=await fetch(r,{credentials:`include`,headers:{Accept:`application/json`}});if(!e.ok)return;let t=zf(await e.json()),s=[],c=new Set;for(let e of t){if(!Bf(e,o))continue;let t=Rf(e,i);if(t==null||typeof t!=`string`||c.has(t))continue;c.add(t);let n=Rf(e,a);s.push({value:t,label:typeof n==`string`&&n?n:t})}s.sort((e,t)=>e.label.localeCompare(t.label)),n(s)}catch{}},[r,i,a,s]);return $.useEffect(()=>{c();let e=()=>{c()};return window.addEventListener(`objectui:packages-changed`,e),()=>window.removeEventListener(`objectui:packages-changed`,e)},[c]),{options:t,refetch:c}}function Hf(e,t,n){let r=Array.isArray(t)?t:[],o=a(),s=i(),c=new URLSearchParams(s.search),[l,u]=$.useState(()=>Lf(e,r));$.useEffect(()=>{let t=Lf(e,r);Object.keys(t).length!==0&&u(e=>{let n;for(let[r,i]of Object.entries(t))e[r]===void 0&&(n??={...e},n[r]=i);return n??e})},[e,r]);let d=$.useCallback((t,n)=>{let r=n===jf?t.allValue??``:n,i=Ff(t);if(i!==`query`){if(u(e=>e[t.id]===r?e:{...e,[t.id]:r}),i===`session`)try{let n=If(e,t.id);r?sessionStorage.setItem(n,r):sessionStorage.removeItem(n)}catch{}return}let a=new URLSearchParams(s.search),c=Pf(t.id);r?a.set(c,r):a.delete(c),o({pathname:s.pathname,search:a.toString()},{replace:!0})},[e,s.pathname,s.search,o]);$.useEffect(()=>{},[r]);let f={};for(let e of r){let t=Ff(e)===`query`?c.get(Pf(e.id))??``:l[e.id]??``;f[e.id]=t||(e.allValue??``)}return{contextValues:f,element:r.length===0?null:(0,Q.jsx)(`div`,{className:`flex flex-col gap-1.5`,children:r.map(e=>(0,Q.jsx)(Uf,{def:e,value:f[e.id],onChange:t=>d(e,t),t:n},e.id))})}}function Uf({def:e,value:t,onChange:n,t:r}){let{options:i,refetch:a}=Vf(e),o=Yo(e.icon),s=xa(e.label,r)||e.id,c=s===`Package`?r?.(`common.package`,{defaultValue:s})??s:s,l=r?.(`actionDialog.selectPlaceholder`,{label:c,defaultValue:`Select ${c}…`})??`Select ${c}…`,u=!!t&&t!==(e.allValue??``);return $.useLayoutEffect(()=>{u||i.length>0&&n(i[0].value)},[u,n,i]),(0,Q.jsxs)(ii,{value:u?t:``,onValueChange:n,onOpenChange:e=>{e&&a()},children:[(0,Q.jsx)(ni,{"aria-label":c,"data-testid":`package-switcher`,className:`h-9 w-full gap-2 rounded-md border-sidebar-border/70 bg-sidebar/80 px-2 text-xs font-medium text-sidebar-foreground shadow-none transition-colors hover:bg-sidebar-accent focus:ring-1 focus:ring-sidebar-ring data-[state=open]:bg-sidebar-accent [&>svg]:h-3.5 [&>svg]:w-3.5 [&>svg]:shrink-0`,children:(0,Q.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-2 overflow-hidden`,children:[(0,Q.jsx)(`span`,{className:`flex h-5 w-5 shrink-0 items-center justify-center rounded border border-sidebar-border/70 bg-sidebar-accent text-sidebar-foreground/70`,children:(0,Q.jsx)(o,{className:`h-3 w-3`})}),(0,Q.jsx)(Bt,{placeholder:l,className:`truncate`})]})}),(0,Q.jsx)(Rt,{className:`w-[var(--radix-select-trigger-width)]`,children:i.map(e=>(0,Q.jsx)(Re,{value:e.value,children:e.label},e.value))})]})}function Wf(e){let t=`objectui-nav-order-${e}`,[n,r]=$.useState(()=>{try{let e=localStorage.getItem(t);if(!e)return{};let n=JSON.parse(e);if(typeof n!=`object`||!n||Array.isArray(n))return{};let r={};for(let[e,t]of Object.entries(n))Array.isArray(t)&&t.every(e=>typeof e==`string`)&&(r[e]=t);return r}catch{return{}}}),i=$.useCallback(e=>{r(e);try{localStorage.setItem(t,JSON.stringify(e))}catch{}},[t]);return{applyOrder:$.useCallback(e=>{let t=n.__root__;if(!t)return e;let r=new Map(e.map(e=>[e.id,e])),i=[];for(let e of t){let t=r.get(e);t&&(i.push(t),r.delete(e))}return r.forEach(e=>i.push(e)),i},[n]),handleReorder:$.useCallback(e=>{let t=e.map(e=>e.id);i({...n,__root__:t})},[n,i])}}function Gf(e){return e.componentRef===`metadata:directory`}function Kf(e){return e.componentRef===`developer:packages`}function qf(e){if(e.type!==`group`)return!1;let t=String(e.id??``).toLowerCase(),n=typeof e.label==`string`?e.label.toLowerCase():``;return t===`overview`||n===`overview`}function Jf({activeAppName:e}){let{isMobile:t,setOpenMobile:r}=En(),a=i(),{t:o,language:s}=V(),{objectLabel:c,dashboardLabel:l,navGroupLabel:u,viewLabel:d}=Te(),{context:f,currentAppName:p}=Ui(),{user:m,activeOrganization:h}=T(),_=g(),v=Ad();$.useEffect(()=>{let e=0,n=t=>{e=t.touches[0].clientX},i=n=>{let i=n.changedTouches[0].clientX-e;e<30&&i>50&&t&&r(!0)};return document.addEventListener(`touchstart`,n,{passive:!0}),document.addEventListener(`touchend`,i,{passive:!0}),()=>{document.removeEventListener(`touchstart`,n),document.removeEventListener(`touchend`,i)}},[t,r]);let{recentItems:y}=Gi(),{favorites:b,removeFavorite:S}=Xi(),{apps:C,objects:w}=ae(),E=C||[],D=E.filter(e=>e.active!==!1&&e.hidden!==!0),k=ga(E.filter(e=>e.active!==!1),e||p)||D[0],{applyOrder:A,handleReorder:j}=Wf(k?.name||`home`),{togglePin:M,applyPins:N}=Pd(),{evaluator:ee}=Ni(),P=$.useCallback(e=>Mi(e,ee),[ee]),{can:F,hasCapabilities:te}=x(),ne=$.useCallback(e=>e.every(e=>{let t=e.split(`:`);return t.length>=2?F(t[0],t[1]):te([e])||F(e,`read`)}),[F,te]),I=$.useMemo(()=>new Set((w||[]).map(e=>e?.name).filter(Boolean)),[w]),L=$.useCallback((e,t)=>e!==`object`||I.size===0||I.has(t),[I]),R=(k?.areas||[]).filter(e=>Oo(e.navigation,{evaluateVisibility:P,checkPermission:ne,checkCapability:L,hasActionHandler:!!v})),[re,ie]=$.useState(()=>R.length>0?R[0].id:null),z=R.map(e=>e.id).join(`,`);$.useEffect(()=>{R.length>0?ie(e=>R.some(t=>t.id===e)?e:R[0].id):ie(null)},[k?.name,z]);let B=R.find(e=>e.id===re)??R[0],H=B?.navigation||k?.navigation||[],{contextValues:oe,element:se}=Hf(k?.name||`home`,k?.contextSelectors,o),ce=$.useMemo(()=>{let e=[{id:`home-dashboard`,label:o(`home.nav`,{defaultValue:`Home`}),type:`url`,url:`/home`,icon:`home`},{id:`docs`,label:o(`layout.systemNav.documentation`,{defaultValue:`Documentation`}),type:`url`,url:`/docs`,icon:`book-open`}];if(_){let t=[{id:`sys-settings`,label:o(`layout.systemNav.systemSettings`,{defaultValue:`System Settings`}),type:`url`,url:`/apps/setup/system`,icon:`settings`},{id:`sys-apps`,label:o(`layout.systemNav.applications`,{defaultValue:`Applications`}),type:`url`,url:`/apps/setup/system/apps`,icon:`layout-grid`},{id:`sys-marketplace`,label:o(`layout.systemNav.appMarketplace`,{defaultValue:`App Marketplace`}),type:`url`,url:`/apps/setup/system/marketplace`,icon:`store`},{id:`sys-objects`,label:o(`layout.systemNav.objectManager`,{defaultValue:`Object Manager`}),type:`url`,url:`/apps/setup/metadata/object`,icon:`database`},{id:`sys-datasources`,label:o(`layout.systemNav.datasources`,{defaultValue:`Datasources`}),type:`url`,url:`/apps/setup/metadata/datasource`,icon:`database`},{id:`sys-users`,label:o(`layout.systemNav.users`,{defaultValue:`Users`}),type:`url`,url:`/apps/setup/system/users`,icon:`users`},{id:`sys-orgs`,label:o(`layout.systemNav.organizations`,{defaultValue:`Organizations`}),type:`url`,url:`/apps/setup/system/organizations`,icon:`building-2`},{id:`sys-roles`,label:o(`layout.systemNav.roles`,{defaultValue:`Roles`}),type:`url`,url:`/apps/setup/system/roles`,icon:`shield`},{id:`sys-config`,label:o(`layout.systemNav.configuration`,{defaultValue:`Configuration`}),type:`url`,url:`/apps/setup/system/settings`,icon:`sliders-horizontal`}];e.push({id:`sys-administration`,label:o(`layout.systemNav.administration`,{defaultValue:`Administration`}),type:`group`,icon:`shield`,expanded:!0,children:t})}return e},[o,_]),le=f===`home`?ce:H,ue=f===`app`&&k?`/apps/${va(k)}`:``,de=f===`app`&&k?.name===`studio`,fe=Pf(Mf),pe=oe[Mf],U=$.useMemo(()=>{if(!de)return``;let e=new URLSearchParams(a.search).get(fe)||pe;return e?`?${fe}=${encodeURIComponent(e)}`:``},[pe,de,a.search,fe]),me=$.useMemo(()=>{if(f!==`app`||k?.name!==`studio`)return le;let e=o(`sidebar.packageManagement`,{defaultValue:`Package management`}),t=n=>n.flatMap(n=>{if(Gf(n))return[];let r=n.children?.length?t(n.children):n.children;return n.type===`group`&&r?.length===0?[]:Kf(n)?[{...n,type:`url`,label:e,url:`${ue}/component/developer/packages${U}`,children:r}]:r===n.children?[n]:[{...n,children:r}]});return t(le).flatMap(e=>qf(e)?e.children??[]:[e])},[k?.name,ue,f,le,U,o]),he=$.useMemo(()=>{let e=A(me);return N(e)},[me,A,N]),[W,ge]=$.useState(!1),_e=de&&a.pathname.replace(/\/+$/,``)===ue;return(0,Q.jsx)(Q.Fragment,{children:(0,Q.jsxs)(st,{collapsible:`icon`,className:`!top-14 !h-[calc(100svh-3.5rem)]`,children:[t&&f===`app`&&(0,Q.jsx)(In,{className:`border-b p-1.5`,children:(0,Q.jsx)(Br,{children:(0,Q.jsx)(Tr,{children:(0,Q.jsx)(vn,{asChild:!0,className:`min-h-[44px] text-[15px] font-medium rounded-xl`,children:(0,Q.jsxs)(n,{to:`/home`,onClick:()=>r(!1),"data-testid":`mobile-sidebar-home`,children:[(0,Q.jsx)(di,{className:`h-5 w-5`}),(0,Q.jsx)(`span`,{children:o(`home.nav`,{defaultValue:`Home`})})]})})})})}),(0,Q.jsx)(ln,{className:`pt-2`,children:(0,Q.jsx)(`div`,{className:`transition-opacity duration-200 ease-in-out`,children:f===`app`&&k?(0,Q.jsxs)(Q.Fragment,{children:[se&&(0,Q.jsx)(fn,{className:`group-data-[state=collapsed]:hidden px-2 pb-1`,children:(0,Q.jsx)(`div`,{className:`rounded-lg border border-sidebar-border/70 bg-sidebar-accent/25 p-1.5 shadow-xs`,children:(0,Q.jsx)(Mt,{children:se})})}),de&&(0,Q.jsx)(fn,{children:(0,Q.jsx)(Mt,{children:(0,Q.jsx)(Br,{children:(0,Q.jsx)(Tr,{children:(0,Q.jsx)(vn,{asChild:!0,isActive:_e,tooltip:o(`home.nav`,{defaultValue:`Home`}),children:(0,Q.jsxs)(n,{to:{pathname:ue,search:U},children:[(0,Q.jsx)(di,{className:`h-4 w-4`}),(0,Q.jsx)(`span`,{children:o(`home.nav`,{defaultValue:`Home`})})]})})})})})}),R.length>1&&(0,Q.jsxs)(fn,{children:[(0,Q.jsxs)(Ae,{className:`flex items-center gap-1.5`,children:[(0,Q.jsx)(Tt,{className:`h-3.5 w-3.5`}),o(`sidebar.area`,{defaultValue:`Area`})]}),(0,Q.jsx)(Mt,{children:(0,Q.jsx)(Br,{children:R.map(e=>{let t=Yo(e.icon),n=e.id===B?.id,r=O(e.label,s);return(0,Q.jsx)(Tr,{children:(0,Q.jsxs)(vn,{isActive:n,tooltip:r,onClick:()=>ie(e.id),children:[(0,Q.jsx)(t,{className:`h-4 w-4`}),(0,Q.jsx)(`span`,{children:r})]})},e.id)})})})]}),(0,Q.jsx)(Ao,{items:he,basePath:ue,evaluateVisibility:P,checkPermission:ne,checkCapability:L,enablePinning:!t,onPinToggle:M,enableReorder:!t,onReorder:j,resolveObjectLabel:(e,t)=>c({name:e,label:t}),resolveDashboardLabel:(e,t)=>l({name:e,label:t}),resolveGroupLabel:k?(e,t)=>u(k.name,e,t):void 0,resolveItemLabel:k?(e,t)=>k.name===`studio`&&t===o(`sidebar.packageManagement`,{defaultValue:`Package management`})?t:u(k.name,e,t):void 0,resolveViewLabel:(e,t,n)=>d(e,t,n),onAction:v,t:o,templateContext:{currentUserId:m?.id??null,currentOrgId:h?.id??null,contextValues:oe}}),y.length>0&&(0,Q.jsxs)(fn,{children:[(0,Q.jsxs)(Ae,{className:`flex items-center gap-1.5 cursor-pointer select-none`,onClick:()=>ge(e=>!e),children:[(0,Q.jsx)(kn,{className:`h-3 w-3 transition-transform duration-150 ${W?`rotate-90`:``}`}),(0,Q.jsx)(Zt,{className:`h-3.5 w-3.5`}),o(`sidebar.recent`,{defaultValue:`Recent`})]}),W&&(0,Q.jsx)(Mt,{children:(0,Q.jsx)(Br,{children:y.slice(0,5).map(e=>(0,Q.jsx)(Tr,{children:(0,Q.jsx)(vn,{asChild:!0,tooltip:e.label,children:(0,Q.jsxs)(n,{to:e.href,children:[(0,Q.jsx)(`span`,{className:`text-muted-foreground`,children:e.type===`dashboard`?`📊`:e.type===`report`?`📈`:`📄`}),(0,Q.jsx)(`span`,{className:`truncate`,children:e.label})]})})},e.id))})})]}),b.some(e=>e.type!==`nav`)&&(0,Q.jsxs)(fn,{children:[(0,Q.jsxs)(Ae,{className:`flex items-center gap-1.5`,children:[(0,Q.jsx)(rt,{className:`h-3.5 w-3.5`}),o(`sidebar.favorites`,{defaultValue:`Favorites`})]}),(0,Q.jsx)(Mt,{children:(0,Q.jsx)(Br,{children:b.filter(e=>e.type!==`nav`).slice(0,8).map(e=>(0,Q.jsxs)(Tr,{children:[(0,Q.jsx)(vn,{asChild:!0,tooltip:e.label,children:(0,Q.jsxs)(n,{to:e.href,children:[(0,Q.jsx)(`span`,{className:`text-muted-foreground`,children:e.type===`dashboard`?`📊`:e.type===`report`?`📈`:e.type===`page`?`📄`:`📋`}),(0,Q.jsx)(`span`,{className:`truncate`,children:e.label})]})}),(0,Q.jsx)(tr,{showOnHover:!0,onClick:t=>{t.stopPropagation(),S(e.id)},"aria-label":o(`sidebar.removeFromFavorites`,{defaultValue:`Remove {{name}} from favorites`,name:e.label}),children:(0,Q.jsx)(dt,{className:`h-3 w-3`})})]},e.id))})})]})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Ao,{items:ce,basePath:``,evaluateVisibility:P,checkPermission:ne,checkCapability:L,resolveObjectLabel:(e,t)=>c({name:e,label:t}),resolveDashboardLabel:(e,t)=>l({name:e,label:t}),resolveViewLabel:(e,t,n)=>d(e,t,n),onAction:v,t:o,templateContext:{currentUserId:m?.id??null,currentOrgId:h?.id??null,contextValues:oe}}),b.filter(e=>e.type===`object`||e.type===`dashboard`||e.type===`page`).length>0&&(0,Q.jsxs)(fn,{children:[(0,Q.jsxs)(Ae,{className:`flex items-center gap-1.5`,children:[(0,Q.jsx)(rt,{className:`h-3.5 w-3.5`}),o(`sidebar.starred`,{defaultValue:`Starred`})]}),(0,Q.jsx)(Mt,{children:(0,Q.jsx)(Br,{children:b.filter(e=>e.type===`object`||e.type===`dashboard`||e.type===`page`).slice(0,8).map(e=>(0,Q.jsxs)(Tr,{children:[(0,Q.jsx)(vn,{asChild:!0,tooltip:e.label,children:(0,Q.jsxs)(n,{to:e.href,children:[(0,Q.jsx)(`span`,{className:`text-muted-foreground`,children:e.type===`dashboard`?`📊`:e.type===`page`?`📄`:`📋`}),(0,Q.jsx)(`span`,{className:`truncate`,children:e.label})]})}),(0,Q.jsx)(tr,{showOnHover:!0,onClick:t=>{t.stopPropagation(),S(e.id)},"aria-label":o(`sidebar.removeFromFavorites`,{defaultValue:`Remove {{name}} from favorites`,name:e.label}),children:(0,Q.jsx)(dt,{className:`h-3 w-3`})})]},e.id))})})]})]})})}),(0,Q.jsx)(rn,{className:`border-t p-1`,children:(0,Q.jsx)(bl,{className:`w-full justify-start pl-2 group-data-[state=collapsed]:justify-center group-data-[state=collapsed]:pl-0`})})]})})}function Yf({children:e}){return Jd(),(0,Q.jsx)(Q.Fragment,{children:e})}function Xf({children:e,activeAppName:t,activeApp:n,onAppChange:r,objects:o,connectionState:s,userId:c}){let l=xa(n?.label)||t,{enabled:u}=ao(),{setContext:d,setCurrentAppName:f}=Ui(),p=nf({persistExpandedKey:Ol}),m=u,h=a(),g=i(),_=hr(),v=(0,$.useCallback)(()=>{Rl(`${g.pathname}${g.search}`),h(`/ai`)},[g.pathname,g.search,h]);return(0,$.useEffect)(()=>{d(`app`),f(t)},[d,f,t]),(0,$.useEffect)(()=>{if(!m)return;let e=e=>{Bl(e)===`toggle`&&(e.preventDefault(),p.toggle())};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[m,p]),(0,Q.jsx)(qc,{children:(0,Q.jsx)(Hc,{children:(0,Q.jsxs)(Do,{sidebar:(0,Q.jsx)(Jf,{activeAppName:t,onAppChange:r}),navbar:(0,Q.jsx)(El,{variant:`app`,appName:l,objects:o,connectionState:s,activeAppName:t,onAppChange:r}),className:`!p-0 overflow-y-auto overflow-x-hidden bg-muted/5`,rightRail:m&&p.expanded&&!_?(0,Q.jsx)(af,{dock:p,userId:c,defaultAgent:n?.defaultAgent,onMaximize:v}):void 0,branding:n?.branding?{primaryColor:n.branding.primaryColor,accentColor:n.branding.accentColor,favicon:n.branding.favicon,logo:n.branding.logo,title:n.label?`${xa(n.label)} — ${bo()}`:void 0}:void 0,children:[(0,Q.jsxs)(Yf,{children:[(0,Q.jsx)(bf,{}),(0,Q.jsx)(kf,{}),(0,Q.jsx)(Af,{}),e]}),u&&(0,Q.jsx)(hc,{appLabel:l,onOpenDock:p.expand}),m&&_&&(0,Q.jsx)(of,{open:p.expanded,onOpenChange:e=>e?p.expand():p.collapse(),userId:c,defaultAgent:n?.defaultAgent,onMaximize:v})]})})})}function Zf({apps:e,activeApp:t,objects:n,onAppChange:r,dataSource:i}){let{open:o,setOpen:s}=Jc(),[c,u]=(0,$.useState)(``),d=a(),{appName:f}=l(),{setTheme:p}=Gs(),{evaluator:m}=Ni(),{t:h}=V();(0,$.useEffect)(()=>{o||u(``)},[o]);let g=`/apps/${f||va(t)}`,{user:_,activeOrganization:v}=T(),y=(0,$.useMemo)(()=>({currentUserId:_?.id??null,currentOrgId:v?.id??null}),[_?.id,v?.id]),b=(0,$.useCallback)(e=>{s(!1),e()},[]),x=Qf(t?.navigation||[]).filter(e=>Mi(e.visible??e.visibleOn,m)),S=(0,$.useMemo)(()=>x.filter(e=>e.type===`object`&&typeof e.objectName==`string`).map(e=>e.objectName),[t?.name,x.map(e=>e.objectName||``).join(`|`)]),{results:C,isSearching:w}=fe({query:c,objects:n,dataSource:i,objectNames:S,enabled:o&&!!i,getDisplayName:he}),{recentItems:E}=Gi(),D=(0,$.useMemo)(()=>E.filter(e=>e.type===`record`).slice(0,5),[E]),O=o&&c.trim().length===0&&D.length>0,k=(0,$.useMemo)(()=>{let e=new Map;for(let t of n||[])typeof t?.name==`string`&&e.set(t.name,t);return e},[n]),A=(0,$.useMemo)(()=>{let e=[],t=new Map;for(let n of C){let r=t.get(n.objectName);if(!r){let i=k.get(n.objectName);r={objectLabel:xa(i?.label,h)||n.objectLabel,icon:n.icon,hits:[]},t.set(n.objectName,r),e.push(n.objectName)}r.hits.push(n)}return e.map(e=>({objectName:e,...t.get(e)}))},[C,k,h]);return(0,Q.jsxs)(Dn,{open:o,onOpenChange:s,title:h(`console.commandPalette.title`,{defaultValue:`Command palette`}),description:h(`console.commandPalette.placeholder`),contentProps:{"data-testid":`overlay:command-palette`},children:[(0,Q.jsx)(jn,{placeholder:h(`console.commandPalette.placeholder`),value:c,onValueChange:u}),(0,Q.jsxs)(Nr,{children:[(0,Q.jsx)(dr,{children:w?(0,Q.jsxs)(`span`,{className:`inline-flex items-center gap-2 text-muted-foreground`,children:[(0,Q.jsx)(`span`,{"aria-hidden":!0,className:`inline-block h-1.5 w-1.5 rounded-full bg-primary motion-safe:animate-pulse`}),h(`console.commandPalette.searching`,{defaultValue:`Searching…`})]}):h(`console.commandPalette.noResults`)}),O&&(0,Q.jsx)(Yr,{heading:h(`console.commandPalette.recentRecords`,{defaultValue:`Recently viewed`}),children:D.map(e=>(0,Q.jsxs)(Hn,{value:`recent ${e.label} ${e.id}`,onSelect:()=>b(()=>d(e.href)),children:[(0,Q.jsx)($n,{className:`mr-2 h-4 w-4`}),(0,Q.jsx)(`span`,{className:`truncate`,children:e.label})]},`recent:${e.id}`))}),A.map((e,t)=>{let n=Yo(e.icon);return(0,Q.jsx)(Yr,{heading:(0,Q.jsxs)(`span`,{className:`inline-flex items-center gap-2`,children:[e.objectLabel,w&&t===0&&(0,Q.jsx)(`span`,{"aria-hidden":!0,className:`inline-block h-1.5 w-1.5 rounded-full bg-primary motion-safe:animate-pulse`})]}),children:e.hits.map(e=>(0,Q.jsxs)(Hn,{value:`record ${c} ${e.display} ${e.objectLabel} ${e.objectName} ${e.recordId}`,onSelect:()=>b(()=>d(`${g}/${e.objectName}/record/${e.recordId}`)),children:[(0,Q.jsx)(n,{className:`mr-2 h-4 w-4`}),(0,Q.jsx)(`span`,{className:`truncate`,children:e.display}),e.subtitle&&(0,Q.jsx)(`span`,{className:`ml-auto max-w-[45%] truncate text-xs text-muted-foreground`,children:e.subtitle})]},`${e.objectName}:${e.recordId}`))},`records:${e.objectName}`)}),x.filter(e=>e.type===`object`).length>0&&(0,Q.jsx)(Yr,{heading:h(`console.commandPalette.objects`),children:x.filter(e=>e.type===`object`).map(e=>{let t=Yo(e.icon);return(0,Q.jsxs)(Hn,{value:`object ${xa(e.label,h)} ${e.objectName}`,onSelect:()=>b(()=>d(ko(e,g,y).href)),children:[(0,Q.jsx)(t,{className:`mr-2 h-4 w-4`}),(0,Q.jsx)(`span`,{children:xa(e.label,h)})]},e.id)})}),x.filter(e=>e.type===`dashboard`).length>0&&(0,Q.jsx)(Yr,{heading:h(`console.commandPalette.dashboards`),children:x.filter(e=>e.type===`dashboard`).map(e=>(0,Q.jsxs)(Hn,{value:`dashboard ${xa(e.label,h)} ${e.dashboardName}`,onSelect:()=>b(()=>d(ko(e,g,y).href)),children:[(0,Q.jsx)(Ve,{className:`mr-2 h-4 w-4`}),(0,Q.jsx)(`span`,{children:xa(e.label,h)})]},e.id))}),x.filter(e=>e.type===`page`).length>0&&(0,Q.jsx)(Yr,{heading:h(`console.commandPalette.pages`),children:x.filter(e=>e.type===`page`).map(e=>(0,Q.jsxs)(Hn,{value:`page ${xa(e.label,h)} ${e.pageName}`,onSelect:()=>b(()=>d(ko(e,g,y).href)),children:[(0,Q.jsx)(fr,{className:`mr-2 h-4 w-4`}),(0,Q.jsx)(`span`,{children:xa(e.label,h)})]},e.id))}),x.filter(e=>e.type===`report`).length>0&&(0,Q.jsx)(Yr,{heading:h(`console.commandPalette.reports`),children:x.filter(e=>e.type===`report`).map(e=>(0,Q.jsxs)(Hn,{value:`report ${xa(e.label,h)} ${e.reportName}`,onSelect:()=>b(()=>d(ko(e,g,y).href)),children:[(0,Q.jsx)(Lt,{className:`mr-2 h-4 w-4`}),(0,Q.jsx)(`span`,{children:xa(e.label,h)})]},e.id))}),e.filter(e=>e.active!==!1).length>1&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(gr,{}),(0,Q.jsx)(Yr,{heading:h(`console.commandPalette.switchApp`),children:e.filter(e=>e.active!==!1).map(e=>{let n=Yo(e.icon);return(0,Q.jsxs)(Hn,{value:`app ${xa(e.label,h)} ${e.name}`,onSelect:()=>b(()=>r(va(e)??e.name)),children:[(0,Q.jsx)(n,{className:`mr-2 h-4 w-4`}),(0,Q.jsx)(`span`,{children:xa(e.label,h)}),e.name===t?.name&&(0,Q.jsx)(`span`,{className:`ml-auto text-xs text-muted-foreground`,children:h(`console.commandPalette.current`)})]},e.name)})})]}),(0,Q.jsx)(gr,{}),(0,Q.jsxs)(Yr,{heading:h(`console.commandPalette.preferences`),children:[(0,Q.jsxs)(Hn,{value:`theme light`,onSelect:()=>b(()=>p(`light`)),children:[(0,Q.jsx)(ht,{className:`mr-2 h-4 w-4`}),(0,Q.jsx)(`span`,{children:h(`console.commandPalette.lightTheme`)})]}),(0,Q.jsxs)(Hn,{value:`theme dark`,onSelect:()=>b(()=>p(`dark`)),children:[(0,Q.jsx)(Ln,{className:`mr-2 h-4 w-4`}),(0,Q.jsx)(`span`,{children:h(`console.commandPalette.darkTheme`)})]}),(0,Q.jsxs)(Hn,{value:`theme system`,onSelect:()=>b(()=>p(`system`)),children:[(0,Q.jsx)(Gr,{className:`mr-2 h-4 w-4`}),(0,Q.jsx)(`span`,{children:h(`console.commandPalette.systemTheme`)})]})]}),(0,Q.jsx)(gr,{}),(0,Q.jsx)(Yr,{heading:h(`console.commandPalette.actions`),children:(0,Q.jsxs)(Hn,{value:`search all results full page`,onSelect:()=>b(()=>d(`${g}/search`)),children:[(0,Q.jsx)($n,{className:`mr-2 h-4 w-4`}),(0,Q.jsx)(`span`,{children:h(`console.commandPalette.openFullSearch`)})]})})]})]})}function Qf(e){let t=[];for(let n of e)n.type===`group`&&n.children?t.push(...Qf(n.children)):t.push(n);return t}function $f(){let{t:e}=V(),{open:t,setOpen:n,toggleOverlay:r}=Bs(aa),i=(0,$.useMemo)(()=>[{title:e(`console.shortcuts.groups.general`),shortcuts:[{keys:[`⌘`,`K`],description:e(`console.shortcuts.openCommandPalette`)},{keys:[`?`],description:e(`console.shortcuts.showShortcuts`)},{keys:[`Esc`],description:e(`console.shortcuts.closeDialog`)}]},{title:e(`console.shortcuts.groups.navigation`),shortcuts:[{keys:[`B`],description:e(`console.shortcuts.toggleSidebar`)},{keys:[`⌘`,`/`],description:e(`console.shortcuts.focusSearch`)}]},{title:e(`console.shortcuts.groups.dataViews`),shortcuts:[{keys:[`N`],description:e(`console.shortcuts.createRecord`)},{keys:[`R`],description:e(`console.shortcuts.refreshData`)},{keys:[`⌘`,`E`],description:e(`console.shortcuts.editRecord`)}]},{title:e(`console.shortcuts.groups.aiChat`,{defaultValue:`AI assistant`}),shortcuts:[{keys:[`⌘`,`⇧`,`O`],description:e(`console.shortcuts.newChat`,{defaultValue:`New chat`})},{keys:[`⌘`,`⇧`,`S`],description:e(`console.shortcuts.toggleChatsList`,{defaultValue:`Toggle conversations list`})}]},{title:e(`console.shortcuts.groups.preferences`),shortcuts:[{keys:[`⌘`,`D`],description:e(`console.shortcuts.toggleDarkMode`)}]}],[e]);return(0,$.useEffect)(()=>{function e(e){let t=e.target;t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.isContentEditable||e.key===`?`&&!e.metaKey&&!e.ctrlKey&&!e.altKey&&(e.preventDefault(),r())}return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[r]),(0,Q.jsx)(Xn,{open:t,onOpenChange:n,children:(0,Q.jsxs)(Gn,{className:`sm:max-w-lg max-h-[80vh] overflow-y-auto`,"data-testid":`overlay:keyboard-shortcuts`,children:[(0,Q.jsxs)(si,{children:[(0,Q.jsx)(Sn,{children:e(`console.shortcuts.title`)}),(0,Q.jsx)(gn,{children:e(`console.shortcuts.description`)})]}),(0,Q.jsx)(`div`,{className:`space-y-6 pt-2`,children:i.map(e=>(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h3`,{className:`text-sm font-medium text-muted-foreground mb-3`,children:e.title}),(0,Q.jsx)(`div`,{className:`space-y-2`,children:e.shortcuts.map((e,t)=>(0,Q.jsxs)(`div`,{className:`flex items-center justify-between py-1.5`,children:[(0,Q.jsx)(`span`,{className:`text-sm`,children:e.description}),(0,Q.jsx)(`div`,{className:`flex items-center gap-1`,children:e.keys.map((e,t)=>(0,Q.jsx)(`kbd`,{className:`inline-flex h-6 min-w-[24px] items-center justify-center rounded border bg-muted px-1.5 text-xs font-medium text-muted-foreground`,children:e},t))})]},t))})]},e.title))})]})})}function ep(){return null}function tp(e){let{theme:t=`system`}=Gs(),{t:n}=V();return(0,Q.jsx)(hi,{theme:t,className:`toaster group`,position:`top-right`,closeButton:!0,richColors:!0,expand:!0,visibleToasts:4,containerAriaLabel:n(`notifications.regionLabel`,{defaultValue:`Notifications`}),icons:{success:(0,Q.jsx)(br,{className:`h-4 w-4`}),info:(0,Q.jsx)(Xe,{className:`h-4 w-4`}),warning:(0,Q.jsx)(mn,{className:`h-4 w-4`}),error:(0,Q.jsx)(on,{className:`h-4 w-4`}),loading:(0,Q.jsx)(J,{className:`h-4 w-4 animate-spin`})},toastOptions:{duration:4e3,classNames:{toast:`group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg`,description:`group-[.toast]:text-muted-foreground`,actionButton:`group-[.toast]:bg-primary group-[.toast]:text-primary-foreground`,cancelButton:`group-[.toast]:bg-muted group-[.toast]:text-muted-foreground`}},...e})}var np=[`motion-safe:animate-in`,`motion-safe:fade-in-0`,`motion-safe:duration-150`];function rp({children:e,className:t}){let n=i(),r=$.useRef(null),a=$.useRef(n.pathname);return $.useLayoutEffect(()=>{if(a.current===n.pathname)return;a.current=n.pathname;let e=r.current;e&&(e.classList.remove(...np),e.offsetWidth,e.classList.add(...np))},[n.pathname]),(0,Q.jsx)(`div`,{ref:r,className:[...np,t??``].filter(Boolean).join(` `),children:e})}var ip=null,ap=null;function op(){return ap||(ap=(async()=>{let e={BASE_URL:`./`,DEV:!1,MODE:`production`,PROD:!0,SSR:!1,VITE_SENTRY_DSN:`https://1373a588ceb9da150b11e64bf85f583d@o4510356161757184.ingest.us.sentry.io/4511439670673408`,VITE_SENTRY_ENVIRONMENT:`production`,VITE_SENTRY_SEND_DEFAULT_PII:`true`,VITE_SERVER_URL:``,VITE_USE_MOCK_SERVER:`false`},t=e.VITE_SENTRY_DSN;if(!t||e.VITE_SENTRY_ENABLED===`false`)return!1;try{let n=await o(()=>import(`./vendor-sentry-DlmtNsBO.js`).then(e=>e.t),[],import.meta.url),r=Number(e.VITE_SENTRY_TRACES_SAMPLE_RATE??`0.1`);return n.init({dsn:t,environment:e.VITE_SENTRY_ENVIRONMENT||e.MODE||`production`,release:e.VITE_SENTRY_RELEASE||e.VITE_APP_VERSION||`unknown`,tracesSampleRate:Number.isFinite(r)?r:.1,sendDefaultPii:e.VITE_SENTRY_SEND_DEFAULT_PII!==`false`,replaysSessionSampleRate:0,replaysOnErrorSampleRate:e.VITE_SENTRY_REPLAY===`true`?.1:0,integrations:[n.browserTracingIntegration()],beforeBreadcrumb(e){return(e.category===`fetch`||e.category===`xhr`)&&e.data?.url&&typeof e.data.url==`string`&&(e.data.url=cp(e.data.url)),e}}),ip=n,!0}catch(e){return console.warn(`[sentry] init failed; continuing without observability:`,e),!1}})(),ap)}function sp(e,t){if(ip)try{ip.captureException(e,t?{extra:t}:void 0)}catch{}}function cp(e){try{let t=new URL(e,`http://localhost`);for(let e of[`token`,`access_token`,`id_token`,`apiKey`,`api_key`,`password`])t.searchParams.has(e)&&t.searchParams.set(e,`[redacted]`);return t.pathname+(t.searchParams.toString()?`?`+t.searchParams.toString():``)}catch{return e}}function lp({error:e,onReset:t}){let{t:n}=V();return(0,Q.jsx)(`div`,{className:`flex h-full items-center justify-center p-8`,children:(0,Q.jsxs)(`div`,{className:`max-w-md text-center`,children:[(0,Q.jsxs)(vr,{children:[(0,Q.jsx)(`div`,{className:`mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-destructive/10`,children:(0,Q.jsx)(mn,{className:`h-6 w-6 text-destructive`})}),(0,Q.jsx)(ei,{children:n(`console.errors.somethingWentWrong`)}),(0,Q.jsx)(Qn,{className:`mb-4`,children:e.message||n(`console.errors.unexpectedError`)}),(0,Q.jsxs)(`div`,{className:`flex items-center justify-center gap-2`,children:[(0,Q.jsxs)(Y,{variant:`outline`,size:`sm`,onClick:t,className:`gap-2`,children:[(0,Q.jsx)(On,{className:`h-4 w-4`}),n(`console.errors.tryAgain`)]}),(0,Q.jsxs)(Y,{variant:`ghost`,size:`sm`,onClick:()=>{window.location.href=`/`},className:`gap-2`,children:[(0,Q.jsx)(di,{className:`h-4 w-4`}),n(`console.errors.goHome`)]})]})]}),!1]})})}var up=class extends $.Component{constructor(e){super(e),this.state={hasError:!1,error:null}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,t){console.error(`[ErrorBoundary] Caught error:`,e,t),sp(e,{componentStack:t.componentStack}),this.props.onError?.(e,t)}resetErrorBoundary=()=>{this.setState({hasError:!1,error:null})};render(){return this.state.hasError&&this.state.error?this.props.fallback?typeof this.props.fallback==`function`?this.props.fallback({error:this.state.error,reset:this.resetErrorBoundary}):this.props.fallback:(0,Q.jsx)(lp,{error:this.state.error,onReset:this.resetErrorBoundary}):this.props.children}},dp=`list-filters`;function fp(e,t,n){if(!(!t||!n))return`${dp}:${e||`anon`}:${t}:${n}`}function pp(e){return!e||!Array.isArray(e.conditions)||e.conditions.length===0}function mp(e){return pp(e.filters)&&!(e.search&&e.search.length>0)}function hp(e){if(!(!e||typeof localStorage>`u`))try{let t=localStorage.getItem(e);if(!t)return;let n=JSON.parse(t);return!n||typeof n!=`object`?void 0:n}catch{return}}var gp={},_p={};function vp(e,t){!e||typeof localStorage>`u`||(gp[e]={...gp[e]??hp(e)??{},...t},_p[e]&&clearTimeout(_p[e]),_p[e]=setTimeout(()=>{let t=gp[e]??{};delete gp[e],delete _p[e];try{mp(t)?localStorage.removeItem(e):localStorage.setItem(e,JSON.stringify(t))}catch{}},300))}var yp=new Set([`form`,`detail`]);function bp(e){return typeof e==`string`&&yp.has(e)}function xp(e,t){let n=e.type||`grid`,r=bp(n)?`form`:`list`,i=e.label,a=e.data&&typeof e.data==`object`?e.data:void 0;return{name:e.id,object:t,viewKind:r,label:i,config:{...e,type:n,label:i,columns:Array.isArray(e.columns)?e.columns:[],data:{...a,object:t}}}}function Sp(e){let t=e.config??{},n={...t};return delete n.data,{...n,id:e.name,label:e.label??t.label}}function Cp(e){let t=e.fields;return!t||typeof t!=`object`?[]:Object.entries(t).map(([e,t])=>{let n=t??{};return{name:e,label:typeof n.label==`string`&&n.label?n.label:e,type:typeof n.type==`string`?n.type:`text`,hidden:n.hidden===!0}})}function wp({open:e,onClose:t,mode:n=`edit`,activeView:r,objectDef:i,onViewUpdate:a,onSave:o,onCreate:s,metadataClient:c,dataSource:l,onAfterChange:u}){let{t:d}=V(),f=(0,$.useRef)(null),p=Xo(),[m]=(0,$.useState)(()=>`view_${Date.now()}`),h=(0,$.useMemo)(()=>({id:m,label:d(`console.objectView.newView`),type:`grid`,columns:[],filter:[],sort:[]}),[]),g=n===`create`?`create`:r.id,_=(0,$.useMemo)(()=>xp(n===`create`?h:r,i.name),[g,i.name]),[v,y]=(0,$.useState)(_),[b,x]=(0,$.useState)(!1),[S,C]=(0,$.useState)(0),w=(0,$.useRef)(v),T=(0,$.useRef)(_);T.current!==_&&(T.current=_,w.current=_,y(_),x(!1)),(0,$.useEffect)(()=>{w.current=v},[v]),(0,$.useEffect)(()=>{e&&f.current&&f.current.focus()},[e]);let E=(0,$.useMemo)(()=>Cp(i),[i.fields]),D=vo(v.viewKind)?`form`:`list`,O=(0,$.useCallback)(e=>{let t={...w.current,...e};if(w.current=t,y(t),x(!0),a){let e=Sp(t);for(let[t,n]of Object.entries(e))t!==`id`&&a(t,n)}},[a]),k=(0,$.useCallback)(()=>{let e=Sp(v);n===`create`?s?.(e):(o?.(e),C(e=>e+1)),x(!1)},[v,o,s,n]),A=(0,$.useCallback)(()=>{if(n===`edit`){if(a){let e=Sp(_),t=Sp(w.current),n=new Set([...Object.keys(t),...Object.keys(e)]);for(let t of n)t!==`id`&&a(t,e[t])}w.current=_,y(_),x(!1)}t()},[_,n,t,a]),j=(0,$.useCallback)(e=>{let t=xp(e,i.name);w.current=t,y(t),x(!1)},[i.name]),M=d(n===`create`?`console.objectView.createView`:`console.objectView.configureView`);return e?(0,Q.jsxs)(`div`,{ref:f,tabIndex:-1,role:`complementary`,"aria-label":M,"data-testid":`view-config-panel`,className:`flex h-full flex-col`,children:[(0,Q.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto`,children:(0,Q.jsx)(Qa,{type:`view`,name:v.name,draft:v,variantKey:`config`,familyKey:D,isHome:!0,readOnly:!1,locale:p,objectFieldsOverride:E,onPatch:O})}),(0,Q.jsxs)(`div`,{"data-testid":`view-config-footer`,className:`flex items-center justify-end gap-2 border-t px-4 py-2.5`,children:[n===`edit`&&(0,Q.jsx)(Ps,{type:`view`,name:r.id,metadataClient:c,dataSource:l,objectName:i.name,dirty:b,onResume:j,savedSignal:S,onAfterChange:u}),(0,Q.jsx)(Y,{variant:`ghost`,size:`sm`,onClick:A,"data-testid":`view-config-discard`,children:d(`console.objectView.discard`)}),(0,Q.jsx)(Y,{size:`sm`,onClick:k,disabled:n===`edit`&&!b,"data-testid":`view-config-save`,children:d(`console.objectView.save`)})]})]}):(0,Q.jsx)(`div`,{ref:f,tabIndex:-1,"data-testid":`view-config-panel`,"aria-hidden":!0})}var Tp=`sys_user`;function Ep(e,t=500){let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}function Dp(e){let t=e.writeMode??`insert`;if(t===`update`)throw Error(`Identity import supports the insert and upsert write modes only.`);if(t===`insert`)return{mode:`insert`};let n=(e.matchFields??[])[0];if(n===`email`)return{mode:`upsert`,matchBy:`email`};if(n===`phone_number`)return{mode:`upsert`,matchBy:`phone`};throw Error(`Identity import matches existing users by "email" or "phone_number" only.`)}function Op(e,t,n){let r=0,i=0,a=0,o=0,s=0,c=[],l=0;for(let n=0;n<e.length;n++){let{summary:u,rows:d}=e[n],f=t[n]??[];r+=u.total,i+=u.created,a+=u.updated,o+=u.skipped,s+=u.errors;for(let e of d){if(!e)continue;let t=f[e.row-1],n=[t?.email,t?.phone_number,t?.phoneNumber,t?.phone].find(e=>typeof e==`string`&&e.trim().length>0);c.push({row:l+e.row,ok:e.ok,action:e.action,...e.id?{id:e.id}:{},...e.field?{field:e.field}:{},...e.code?{code:e.code}:{},...e.error?{error:e.error}:{},...e.temporaryPassword?{temporaryPassword:e.temporaryPassword}:{},...n?{identity:n.trim()}:{}})}l+=f.length||u.total}return{object:Tp,dryRun:n.dryRun,writeMode:n.writeMode,total:r,ok:r-s,errors:s,created:i,updated:a,skipped:o,results:c}}function kp(e){let{base:t,authFetch:n,baseUrl:r,getPasswordPolicy:i}=e,a=async(e,t)=>{let{mode:a,matchBy:o}=Dp(t),s=i(),c=Array.isArray(t.rows)?t.rows:[];if(c.length===0)throw Error(`Identity import needs mapped rows (rows[]) — file uploads are parsed client-side.`);let l=Ep(c),u=[];for(let e of l){let i=await n(`${r}/api/v1/auth/admin/import-users`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({format:`json`,rows:e,mode:a,...o?{matchBy:o}:{},passwordPolicy:s,...t.dryRun?{dryRun:!0}:{},...t.mappingName?{mappingName:t.mappingName}:{},...t.trimWhitespace===void 0?{}:{trimWhitespace:t.trimWhitespace},...t.nullValues?{nullValues:t.nullValues}:{}})}),c=await i.json().catch(()=>null);if(!i.ok||!c?.success||!c.data){let e=c?.error?.message??`Identity import failed with status ${i.status}`;throw Error(e)}u.push(c.data)}return Op(u,l,{dryRun:t.dryRun===!0,writeMode:a})};return{...t,importRecords:a,createImportJob:void 0,getImportJobProgress:void 0,getImportJobResults:void 0,listImportJobs:void 0,cancelImportJob:void 0,undoImportJob:void 0}}function Ap(e){if(!e?.results)return[];let t=[];for(let n of e.results)n?.temporaryPassword&&t.push({row:n.row,identity:n.identity??`#${n.row}`,temporaryPassword:n.temporaryPassword});return t}function jp(e){let t=e=>/[",\n]/.test(e)?`"${e.replace(/"/g,`""`)}"`:e,n=[`row,identity,temporary_password`];for(let r of e)n.push(`${r.row},${t(r.identity)},${t(r.temporaryPassword)}`);return n.join(`
|
|
8
|
+
`)}var Mp={auto:{label:`Automatic (recommended)`,hint:`Reachable users get an invitation (email or SMS); anyone we can't reach gets a one-time password, shown ONCE on the result screen. Works with or without an email/SMS service.`},invite:{label:`Send invitations`,hint:`Every created user gets a set-your-password email (or an invitation SMS for phone-only rows). Requires a configured email/SMS service — unreachable rows fail.`},temporary:{label:`Temporary passwords`,hint:`For deployments without email/SMS: every created user gets a one-time password, shown ONCE on the result screen. First sign-in forces a change.`},none:{label:`No password (identity only)`,hint:`Users first sign in with a phone OTP, magic link, or password-reset link, then set their own password.`}};function Np({policy:e,onPolicyChange:t}){let n=Hr();return(0,Q.jsxs)(`div`,{className:`mb-2 flex flex-col gap-2 rounded-md border border-border p-3`,"data-testid":`identity-import-options`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(_t,{className:`h-4 w-4 text-muted-foreground`}),(0,Q.jsx)(ft,{className:`text-xs font-medium`,children:n(`console.identityImport.policyTitle`,`Sign-in setup for imported users`)})]}),(0,Q.jsxs)(ii,{value:e,onValueChange:e=>t(e),children:[(0,Q.jsx)(ni,{className:`h-8 w-full sm:w-80`,"data-testid":`identity-import-policy`,children:(0,Q.jsx)(Bt,{})}),(0,Q.jsx)(Rt,{children:Object.keys(Mp).map(e=>(0,Q.jsx)(Re,{value:e,children:n(`console.identityImport.policy.${e}`,Mp[e].label)},e))})]}),(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:n(`console.identityImport.policyHint.${e}`,Mp[e].hint)})]})}function Pp({serverResult:e}){let t=Hr(),n=(0,$.useMemo)(()=>Ap(e),[e]);return n.length===0?null:(0,Q.jsxs)(`div`,{className:`mt-2 flex w-full flex-col gap-2 rounded-md border border-amber-500/50 bg-amber-500/5 p-3`,"data-testid":`identity-import-passwords`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 text-amber-700 dark:text-amber-400`,children:[(0,Q.jsx)(ke,{className:`h-4 w-4 shrink-0`}),(0,Q.jsx)(`p`,{className:`text-xs font-medium`,children:t(`console.identityImport.passwordsNote`,`Temporary passwords — shown once, never stored. Save them now; each user must change theirs at first sign-in.`)})]}),(0,Q.jsxs)(`div`,{className:`max-h-40 overflow-auto rounded border bg-background p-2 font-mono text-xs`,children:[n.slice(0,50).map(e=>(0,Q.jsxs)(`p`,{"data-testid":`identity-import-password-row-${e.row}`,children:[e.identity,`: `,e.temporaryPassword]},e.row)),n.length>50&&(0,Q.jsx)(`p`,{className:`text-muted-foreground`,children:t(`console.identityImport.passwordsMore`,`More entries omitted — use the download.`)})]}),(0,Q.jsx)(`div`,{children:(0,Q.jsxs)(Y,{variant:`outline`,size:`sm`,onClick:()=>{let e=jp(n),t=new Blob([e],{type:`text/csv;charset=utf-8`}),r=URL.createObjectURL(t),i=document.createElement(`a`);i.href=r,i.download=`temporary-passwords.csv`,i.click(),URL.revokeObjectURL(r)},"data-testid":`identity-import-passwords-download`,children:[(0,Q.jsx)(Je,{className:`mr-1 h-4 w-4`}),t(`console.identityImport.passwordsDownload`,`Download CSV`),` (`,n.length,`)`]})})]})}function Fp(e){let t=(t,n)=>e?.[t]?.label||n;return[{name:`email`,label:t(`email`,`Email`),type:`text`},{name:`phone_number`,label:t(`phone_number`,`Phone Number`),type:`text`},{name:`name`,label:t(`name`,`Name`),type:`text`},{name:`role`,label:t(`role`,`Platform Role`),type:`text`}]}var Ip=new Set([`formula`,`summary`]);function Lp(e,t,n){let r=[];for(let[i,a]of Object.entries(t||{})){let t=Ip.has(a?.type),o=!t&&a?.type!==`autonumber`&&!a?.readonly&&(!n?.isLoaded||n.checkField(e,i,`write`)),s=!o&&!t&&(!n?.isLoaded||n.checkField(e,i,`read`));!o&&!s||r.push({name:i,label:a?.label||i,type:a?.type||`text`,required:o&&!!a?.required,...s?{matchOnly:!0}:{},...a?.options?{options:a.options}:{}})}return r}function Rp(e,t,n,r){switch(e){case`engine-owned`:return B({managedBy:e,userActions:r}).create?void 0:{icon:`Lock`,title:t(`list.managedBy.system.title`,{defaultValue:`Nothing here yet`}),message:t(`list.managedBy.system.message`,{defaultValue:`Entries appear automatically when their source action runs (e.g. Submit for Approval, Share, Invite). Trigger one of those on a source record to create a row.`})};case`append-only`:return{icon:`Archive`,title:t(`list.managedBy.appendOnly.title`,{defaultValue:`No events recorded`}),message:t(`list.managedBy.appendOnly.message`,{defaultValue:`This is an immutable audit log. Rows are written by the platform when events occur — you can export the history but cannot create entries from here.`})};case`better-auth`:return n===`sys_user`?{icon:`ShieldAlert`,title:t(`list.managedBy.betterAuthUser.title`,{defaultValue:`No users yet`}),message:t(`list.managedBy.betterAuthUser.message`,{defaultValue:`User accounts are provisioned by the authentication provider, not created here. Invite teammates to your organization and they appear automatically on first sign-in (SSO just-in-time provisioning). App end-users arrive when they sign up through your app.`})}:n===`sys_team`?{icon:`Users`,title:t(`list.managedBy.betterAuthTeam.title`,{defaultValue:`No teams yet`}),message:t(`list.managedBy.betterAuthTeam.message`,{defaultValue:`Teams group members within an organization. Create one with “Create Team”, or they arrive through your auth provider’s organization and SSO provisioning flows.`})}:{icon:`ShieldAlert`,title:t(`list.managedBy.betterAuth.title`,{defaultValue:`No identity records`}),message:t(`list.managedBy.betterAuth.message`,{defaultValue:`These records are created by the authentication provider — through sign-in, provisioning, and security flows — not added by hand here.`})};default:return}}function zp(e,t){if(!t||typeof t!=`object`)return;let n=t.name;return typeof n==`string`&&n.startsWith(`${e}.`)?n:D(e,{list:t})[0]?.name}function Bp(e){if(!e||typeof e!=`object`)return;let t=e;for(let e of[`name`,`id`,`_id`]){let n=t[e];if(typeof n==`string`&&n!==``)return n}}function Vp(e,t){return e.some(e=>Bp(e)===t)}function Hp(e,...t){let n={};for(let e of t)e&&typeof e==`object`&&Object.assign(n,e);return n.id=e,n}var Up=new Set;function Wp(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.element===`tabs`||t.tabs!=null}function Gp(e,t,n,r){let i=[];if((n?.quickFilters??r?.quickFilters)!=null&&i.push(`quickFilters`),Wp(n?.userFilters??r?.userFilters)&&i.push(`userFilters (element: "tabs")`),i.length===0)return!1;let a=`${e}.${t}`;return Up.has(a)||(Up.add(a),console.warn(`[ObjectView] View "${t}" on object "${e}" defines ${i.join(` and `)}, which are ignored on an object list view (ADR-0047 "views" mode — the view switcher owns the tab bar here). Use \`listViews\` for named presets, \`element: "dropdown"\` for value chips, or move them to a page list (InterfaceListPage "filters" mode).`)),!0}var Kp=new Set([`archived`,`failed`]);function qp(e){let t=String(e?.environment_type??``).trim().toLowerCase();return t===`production`||t===`prod`?`production`:t?`development`:e?.is_default===!0||e?.is_default===1?`production`:`development`}function Jp(e){let{enabled:t,dataSource:n,authFetch:r,apiBase:i,refreshKey:a}=e,{activeOrganization:o}=T(),s=o?.id,[c,l]=(0,$.useState)(null);return(0,$.useEffect)(()=>{if(!t){l(null);return}let e=!1,a=async()=>{try{let e=(i||``).replace(/\/+$/,``),t=s?`?organizationId=${encodeURIComponent(s)}`:``,n=await r(`${e}/api/v1/cloud/environment-entitlements${t}`,{method:`GET`,credentials:`include`});if(!n.ok)return null;let a=(await n.json().catch(()=>null))?.data;return!a||typeof a!=`object`?null:{ready:!0,hasProductionEnv:a.hasProductionEnv===!0,canCreateDevelopmentEnv:a.development?.canCreate,plan:a.plan,upgradeUrl:a.upgradeUrl||`/settings/billing`,contactSalesUrl:a.contactSalesUrl,source:`summary`}}catch{return null}},o=async()=>{try{let e={$top:200};s&&(e.$filter={organization_id:s});let t=await n.find(`sys_environment`,e);return{ready:!0,hasProductionEnv:(Array.isArray(t)?t:t?.data??[]).filter(e=>!Kp.has(String(e?.status??``))).some(e=>qp(e)===`production`),canCreateDevelopmentEnv:void 0,upgradeUrl:Wi,source:`derived`}}catch{return{ready:!1,hasProductionEnv:!1,canCreateDevelopmentEnv:void 0,upgradeUrl:Wi,source:`unknown`}}};return(async()=>{let t=await a()??await o();e||l(t)})(),()=>{e=!0}},[t,s,i,r,n,a]),c}var Yp=`create_environment`;function Xp(e){let[t]=(0,$.useState)(()=>{try{return new URLSearchParams(window.location.search).get(`runAction`)===Yp}catch{return!1}}),n=(0,$.useRef)(!1),r=t&&!n.current&&e!=null;return(0,$.useEffect)(()=>{if(r){n.current=!0;try{let e=new URL(window.location.href);e.searchParams.delete(`runAction`),window.history.replaceState(window.history.state,``,e)}catch{}}},[r]),r}function Zp(e){return e.filter(e=>e?.name!==Yp)}function Qp({actions:e}){return e.length===0?null:(0,Q.jsx)(Ee,{schema:{type:`action:bar`,location:`list_toolbar`,actions:e,size:`sm`,variant:`outline`}})}function $p({actions:e,entitlements:t,onUpgrade:n}){let{t:r}=V(),i=pe(),a=(e||[]).filter(e=>H(e,`list_toolbar`)&&i(e?.requiredPermissions)),o=a.some(e=>e?.name===Yp),s=t?.ready?Li(t):null,c=Xp(o?s:null);if((0,$.useEffect)(()=>{c&&s===`upgrade_for_development`&&t&&n(Ii(t,r))},[c,s]),a.length===0)return null;if(t===null){let e=Zp(a);return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Qp,{actions:e}),o&&(0,Q.jsx)(jr,{className:`h-9 w-44 rounded-md`,"data-testid":`environment-create-cta-loading`})]})}if(s===`upgrade_for_development`)return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Qp,{actions:Zp(a)}),o&&(0,Q.jsxs)(Y,{size:`sm`,onClick:()=>n(Ii(t,r)),className:`shadow-none gap-1.5 sm:gap-2 h-8 sm:h-9`,"data-testid":`environment-add-upgrade`,children:[(0,Q.jsx)(Ue,{className:`h-4 w-4`}),(0,Q.jsx)(`span`,{children:r(`environment.addEnvironment`)})]})]});let l=a.map(e=>e?.name!==Yp||s==null?e:s===`setup_production`?{...e,label:r(`environment.setUpProduction`),variant:`primary`,...c?{autoTrigger:!0}:{}}:{...e,label:r(`environment.addDevelopment`),...c?{autoTrigger:!0}:{}});return(0,Q.jsx)(Ee,{schema:{type:`action:bar`,location:`list_toolbar`,actions:l,size:`sm`,variant:`outline`}})}var em=(0,$.lazy)(()=>o(()=>import(`./plugin-charts-CBUIhVeW.js`).then(e=>e.t).then(e=>({default:e.ObjectChart})),__vite__mapDeps([0]),import.meta.url)),tm=(0,$.lazy)(()=>o(()=>import(`./plugin-grid-gHcTrjs3.js`).then(e=>e.t).then(e=>({default:e.ImportWizard})),__vite__mapDeps([0]),import.meta.url)),nm={grid:je,kanban:Jt,calendar:ti,gallery:Ke,timeline:q,gantt:Zr,map:Vn,chart:Lt},rm={id:`current-user`,name:`Demo User`};function im(e,t){return U(e,t)}function am(e,t){let n=e?.timeline?.startDateField||e?.timeline?.dateField;return{...e?.timeline||{},...n?{startDateField:n}:{},titleField:e?.timeline?.titleField||t?.titleField||`name`,descriptionField:e?.timeline?.descriptionField}}function om(e,t){return`${e.replace(/\/view\/.*$/,``)}/record/${encodeURIComponent(String(t))}`}var sm=Object.freeze({});function cm(e,t,n=()=>window.location.pathname){let r=(t,n)=>t===e&&n!=null&&n!==``;return{resolve:()=>sm,recordHref:(e,t)=>r(e,t)?om(n(),t):null,openRecord:(e,n)=>{r(e,n)&&t(n)}}}function lm(e,t=5,n){let r=t=>n?.orgAttribution&&e?.fields?.organization_id&&!t.includes(`organization_id`)?[...t,`organization_id`]:t,i=e?.highlightFields;if(Array.isArray(i)&&i.length>0)return r(i.filter(t=>e?.fields?.[t]));let a=e?.fields;return a&&typeof a==`object`?r(Object.entries(a).filter(([e,t])=>t&&!t.hidden&&!re(e,t)).map(([e])=>e).slice(0,t)):[]}function um(e){if(!e||typeof e!=`object`||!Array.isArray(e.filter))return e;let t=e.filter.filter(e=>{if(Array.isArray(e)){if(e.length<2)return!1;let[,t,n]=e;return ts.has(String(t))?!0:!(n==null||n===``||Array.isArray(n)&&n.length===0)}if(!e||typeof e!=`object`||typeof e.field!=`string`||e.field===``)return!1;if(ts.has(String(e.operator)))return!0;let t=e.value;return!(t==null||t===``||Array.isArray(t)&&t.length===0)});if(t.length===0){let{filter:t,...n}=e;return n}return t.length===e.filter.length?e:{...e,filter:t}}async function dm(e,t,n){if(typeof e?.listViewOverrides==`function`)try{let r=await e.listViewOverrides(t);if(r&&typeof r==`object`){let e={};for(let t of n)r[t]&&(e[t]=um(r[t]));return e}}catch{}if(typeof e?.getView!=`function`)return{};let r=await Promise.all(n.map(async n=>{try{return[n,await e.getView(t,n)]}catch{return[n,null]}})),i={};for(let[e,t]of r)t&&typeof t==`object`&&(i[e]=um(t));return i}function fm({definedViews:e,primary:t,primaryId:n,savedViews:r,viewOverrides:i,fallbackTab:a}){let o=Object.entries(e||{}).map(([e,t])=>{let n=i[e];return Hp(e,t,n,{type:n?.type||t?.type||`grid`})});if(n){let e=o.findIndex(e=>e.id===n);if(e>=0){let[t]=o.splice(e,1);o.unshift(Hp(n,t,{isDefault:!0}))}else{let e=i[n];o.unshift(Hp(n,t,e,{type:e?.type||t?.type||`grid`,isDefault:!0}))}}o.length===0&&o.push(a());let s=new Set(o.map(e=>e.id));for(let e of r){let t=Bp(e);if(!t)continue;let n={label:e.label||e.name||t,type:e.type||`grid`,columns:e.columns,filter:e.filter,sort:e.sort,showSearch:e.showSearch,showFilters:e.showFilters,showSort:e.showSort,isPinned:e.isPinned,isDefault:e.isDefault,visibility:e.visibility,sortOrder:e.sortOrder,...e,id:t},r={};for(let[e,t]of Object.entries(n))t!==void 0&&(r[e]=t);if(s.has(t)){let e=o.findIndex(e=>e.id===t);o[e]=Hp(t,o[e],r)}else o.push(Hp(t,r))}return o}function pm(e,t){let n=e.filter(e=>Bp(e)!==t&&e.isDefault).map(e=>({viewId:Bp(e),patch:{isDefault:!1}}));return n.push({viewId:t,patch:{isDefault:!0}}),n}function mm(e,t){let n=new Set(e.map(e=>Bp(e)));return t.filter(e=>n.has(e)).map((e,t)=>({viewId:e,patch:{sortOrder:t}}))}function hm(e,t,n){return n.map(({viewId:n,patch:r})=>e.updateView(t,n,r))}function gm({dataSource:e,objects:t,onEdit:n,externalRefreshKey:r}){let{objectName:i}=l(),{t:a}=V();return t.find(e=>e.name===i)?(0,Q.jsx)(_m,{dataSource:e,objects:t,onEdit:n,externalRefreshKey:r}):(0,Q.jsx)(`div`,{className:`h-full p-4 flex items-center justify-center`,children:(0,Q.jsxs)(vr,{children:[(0,Q.jsx)(`div`,{className:`mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-muted`,children:(0,Q.jsx)(je,{className:`h-6 w-6 text-muted-foreground`})}),(0,Q.jsx)(ei,{children:a(`console.objectView.objectNotFound`)}),(0,Q.jsxs)(Qn,{children:[a(`console.objectView.objectNotFoundDescription`,{objectName:i}),` `,a(`console.objectView.objectNotFoundHint`)]})]})})}function _m({dataSource:e,objects:t,onEdit:n,externalRefreshKey:r}){let o=a(),{appName:c,objectName:u,viewId:d}=l(),[f,p]=s(),m=i(),{showDebug:h}=ks(),{t:_}=V(),{objectLabel:v,objectDescription:y,viewLabel:b,viewEmptyState:S,actionParamText:C,fieldLabel:w,fieldOptionLabel:E}=Te(),D=ce(),{isFavorite:O,toggleFavorite:k}=Xi(),j=Ko()===`group`,M=Qo(),N=Oi(),[ee,P]=(0,$.useState)(!1),[F,te]=(0,$.useState)(`edit`),[ne,I]=(0,$.useState)(!1),[re,z]=(0,$.useState)(!1),[ae,H]=(0,$.useState)(null),se=(0,$.useRef)({}),le=(0,$.useRef)({}),ue=(0,$.useCallback)((t,n,r)=>{if(!e?.updateViewConfig||!u||!t)return;let i=le.current[t]||{};le.current[t]={...i,...r};let a=se.current[t];a&&clearTimeout(a),se.current[t]=setTimeout(()=>{let r=le.current[t]||{};delete le.current[t],delete se.current[t],Promise.resolve(e.updateViewConfig(u,t,{...n,...r})).catch(e=>{console.error(`[ObjectView] Failed to persist view config:`,e)})},300)},[e,u]),de=(0,$.useCallback)(t=>{H(t),Se(e=>e+1);let n=t.id;M&&n?Ms(`view`,n,t,{metadataClient:M,dataSource:e,objectName:u}).catch(e=>{console.error(`[ViewConfigPanel] Failed to persist view config:`,e)}):console.warn(`[ViewConfigPanel] Cannot persist view config: missing metadataClient or viewId.`)},[M,e,u]),fe=(0,$.useCallback)(async n=>{try{let r;if(M){let i=t?.find?.(e=>e.name===u),a=lm(i,5),o=Array.isArray(n.columns)&&n.columns.length>0?n.columns:a,s={...n,columns:o};if(n.type===`kanban`)s.kanban={...s.kanban||{},columns:o};else if(n.type===`gallery`){let e=s.gallery||{};(!Array.isArray(e.visibleFields)||e.visibleFields.length===0)&&(s.gallery={...e,visibleFields:o})}let c=js(u,s,{name:n?.name,label:n.label});r=await Ns(`view`,c.name,c,{metadataClient:M,dataSource:e,objectName:u})}if(P(!1),te(`edit`),Se(e=>e+1),r){let e=N?``:`?${Di}=${Ti}`;d?o(`../${r}${e}`,{relative:`path`}):o(`view/${r}${e}`)}}catch(e){console.error(`[ViewConfigPanel] Failed to create view:`,e)}},[e,u,t,o,d,M,N]),[pe,U]=(0,$.useState)(void 0),{user:me,activeOrganization:he}=T(),W=g(),ge=x(),{can:_e,getObjectApiOperations:be}=ge,G=t.find(e=>e.name===u),[xe,Se]=(0,$.useState)(0),we=fa({dataSource:e,objects:t,objectName:G.name,onRefresh:()=>Se(e=>e+1)}),{confirmHandler:K,toastHandler:De}=we,Oe=G.name===`sys_environment`,q=Jp({enabled:Oe,dataSource:e,authFetch:we.authFetch,apiBase:``,refreshKey:xe}),ke=(0,$.useMemo)(()=>(G.actions||[]).map(e=>D(G.name,e)),[G,D]),Ae=(0,$.useMemo)(()=>B(G,be(G.name)),[G,be]);(0,$.useEffect)(()=>{r!==void 0&&r!==0&&Se(e=>e+1)},[r]);let[je,Me]=(0,$.useState)(!1),{features:Ne}=Ni(),Pe=G.name===`sys_user`&&Ne?.admin===!0&&W,[Fe,Ie]=(0,$.useState)(`auto`),Le=(0,$.useRef)(`auto`);Le.current=Fe;let Re=(0,$.useMemo)(()=>Pe?kp({base:e,authFetch:we.authFetch,baseUrl:``,getPasswordPolicy:()=>Le.current}):void 0,[Pe,e,we.authFetch]),[ze,Be]=(0,$.useState)([]);(0,$.useEffect)(()=>{let t=!1;if(!u){Be([]);return}return typeof e?.listViews==`function`?(e.listViews(u,{previewDrafts:N}).then(e=>{if(t)return;let n=(e||[]).map(e=>({...e,id:Bp(e),objectName:e.objectName||e.object||u}));Be(n)}).catch(e=>{console.error(`[ObjectView] Failed to load overlay views:`,e),t||Be([])}),()=>{t=!0}):(Be([]),()=>{t=!0})},[e,u,xe,N]);let[Ve,He]=(0,$.useState)({});(0,$.useEffect)(()=>{let t=!1;if(!e||!u){He({});return}let n=G.listViews||G.list_views||{},r=Object.keys(n),i=zp(G.name,G.list);if(i&&!r.includes(i)&&r.unshift(i),r.length===0){He({});return}return dm(e,u,r).then(e=>{t||He(e)}),()=>{t=!0}},[e,u,G.listViews,G.list_views,G.list,xe]);let We=(0,$.useMemo)(()=>{let e=()=>lm(G,5,{orgAttribution:j}),t=fm({definedViews:G.listViews||G.list_views||{},primary:G.list,primaryId:zp(G.name,G.list),savedViews:ze,viewOverrides:Ve,fallbackTab:()=>({id:`all`,label:_(`console.objectView.allRecords`),type:`grid`,columns:e()})}),n=new Set([`grid`,`list`,`table`]);for(let r of t)n.has(r.type)&&(!Array.isArray(r.columns)||r.columns.length===0)&&(r.columns=e());let r=new Map(t.map((e,t)=>[e.id,t])),i=[];try{let e=typeof window<`u`?window.localStorage?.getItem(`viewOrder:${G.name}`):null;e&&(i=JSON.parse(e))}catch{}let a=new Map(i.map((e,t)=>[e,t]));return t.sort((e,t)=>{let n=a.get(e.id),i=a.get(t.id);if(n!==void 0&&i!==void 0)return n-i;if(n!==void 0)return-1;if(i!==void 0)return 1;let o=ze.find(t=>Bp(t)===e.id),s=ze.find(e=>Bp(e)===t.id),c=o&&typeof o.sortOrder==`number`,l=s&&typeof s.sortOrder==`number`;return c&&l?o.sortOrder===s.sortOrder?(o.created_at||``).localeCompare(s.created_at||``):o.sortOrder-s.sortOrder:c?-1:l?1:(r.get(e.id)??0)-(r.get(t.id)??0)}),t},[G,ze,Ve,_,j]),Ge=(0,$.useMemo)(()=>We.find(e=>e.isDefault)?.id,[We]),Ke=d||f.get(`view`)||void 0,qe=(0,$.useMemo)(()=>Ce(Ke,We.map(e=>e.id),G.name),[Ke,We,G.name]);(0,$.useEffect)(()=>{Ke&&!qe&&console.warn(`[ObjectView] Requested view "${Ke}" not found on object "${G.name}"; falling back to the default view. Known views: ${We.map(e=>e.id).join(`, `)}`)},[Ke,qe,G.name,We]);let Je=qe||Ge||We[0]?.id,Ye=We.find(e=>e.id===Je)||We[0],Xe=ae&&ae.id===Ye?.id?{...Ye,...ae}:Ye,Ze=(0,$.useCallback)((e,t)=>{H(n=>({...n||{},id:Ye?.id,[e]:t}))},[Ye?.id]),Qe=e=>{let t=We.find(t=>t.id===e);t&&(t.id!==Je&&P(!1),d?o(`../${t.id}`,{relative:`path`}):o(`view/${t.id}`))},$e=(0,$.useMemo)(()=>(We||[]).map(e=>{let t=nm[e.type];return{id:e.id,label:b(G.name,e.name||e.id,e.label||e.name||e.id),icon:t?(0,Q.jsx)(t,{className:`h-4 w-4`}):void 0}}),[We,G.name,b]);Gc({views:$e,activeViewId:Je??``,onChange:Qe,enabled:$e.length>0&&!!Je});let et=(0,$.useCallback)(()=>{I(!0)},[]),tt=(0,$.useCallback)((e,t)=>{if(e===`settings`){let e=We.find(e=>e.type===t);e&&Qe(e.id),te(`edit`),P(!0)}},[We,Qe]),nt=(0,$.useCallback)(e=>Vp(ze,e),[ze]),it=(0,$.useCallback)(async(t,n)=>{if(!nt(t)){X.error(_(`console.objectView.cannotEditMetaView`));return}try{typeof e?.updateView==`function`&&await e.updateView(u,t,{label:n}),Se(e=>e+1)}catch(e){console.error(`[ViewTabBar] Failed to rename view:`,e),X.error(_(`objectViewActions.renameFailed`))}},[e,u,nt,_]),at=(0,$.useCallback)(async t=>{if(!e)return;if(!nt(t)){X.error(_(`console.objectView.cannotDeleteMetaView`));return}let n=We.find(e=>e.id===t)?.label||t;if(await K(_(`console.objectView.deleteViewConfirm`,{name:n}),{title:_(`console.objectView.deleteViewTitle`),confirmText:_(`console.objectView.delete`),cancelText:_(`console.objectView.cancel`)}))try{if(typeof e?.deleteView==`function`&&await e.deleteView(u,t),t===Je){let e=We.find(e=>e.id!==t);e&&o(d?`../${e.id}`:`view/${e.id}`,d?{relative:`path`}:void 0)}Se(e=>e+1)}catch(e){console.error(`[ViewTabBar] Failed to delete view:`,e),X.error(_(`objectViewActions.deleteFailed`))}},[e,nt,Je,We,d,o,_,K]),ot=(0,$.useCallback)(async(t,n)=>{if(e){if(!nt(t)){X.error(_(`console.objectView.cannotEditMetaView`));return}try{typeof e?.updateView==`function`&&await e.updateView(u,t,{isPinned:n}),Se(e=>e+1)}catch(e){console.error(`[ViewTabBar] Failed to pin view:`,e)}}},[e,u,nt,_]),st=(0,$.useCallback)(async t=>{if(!(!e||!u)){if(!nt(t)){X.error(_(`console.objectView.cannotEditMetaView`));return}try{if(typeof e?.updateView!=`function`)return;await Promise.all(hm(e,u,pm(ze,t))),Se(e=>e+1)}catch(e){console.error(`[ViewTabBar] Failed to set default view:`,e),X.error(`Failed to set default view`)}}},[e,u,ze,nt,_]),ct=(0,$.useCallback)(async t=>{try{typeof window<`u`&&window.localStorage?.setItem(`viewOrder:${u}`,JSON.stringify(t))}catch{}if(u&&typeof e?.updateView==`function`){let n=hm(e,u,mm(ze,t));try{await Promise.all(n)}catch(e){console.error(`[ViewTabBar] Failed to reorder views:`,e)}}Se(e=>e+1)},[e,ze,u]),lt=(0,$.useCallback)(e=>{if(!nt(e)){X.error(_(`console.objectView.cannotEditMetaView`));return}e!==Je&&Qe(e),te(`edit`),P(!0)},[Je,Qe,nt,_]),ut=(0,$.useCallback)(()=>{I(!0)},[]),ft=me?{id:me.id,name:me.name,avatar:me.image}:rm,pt=(0,$.useMemo)(()=>({currentUserId:ft.id,currentOrgId:he?.id??null}),[ft.id,he?.id]),mt=Rs({objectName:G.name,objectLabel:G.label,dataSource:e,onEdit:n,onRefresh:()=>Se(e=>e+1),onConfirm:K,onToast:De}),{lastMessage:ht}=da({channel:`object:${G.name}`}),gt=G.name?`user-${G.name}`:`current-user`,{hasConflicts:_t,resolveAllConflicts:vt}=Ji(gt);(0,$.useEffect)(()=>{ht&&(_t&&vt(`remote`),Se(e=>e+1))},[ht,_t,vt]),(0,$.useEffect)(()=>{e?.find&&G.name&&e.find(G.name,{limit:0}).then(e=>{typeof e?.total==`number`?U(e.total):Array.isArray(e?.data)?U(e.data.length):Array.isArray(e)&&U(e.length)}).catch(()=>{})},[e,G.name,xe]);let yt=(0,$.useMemo)(()=>{let e=Xe?.navigation??G.navigation;return e?e.mode===`page`?e:{...e,width:e.width??Es(e.size,G)}:A(G)===`page`?{mode:`page`}:{mode:`drawer`,width:Es(`auto`,G)}},[Xe?.navigation,G]),bt=f.get(ca),xt=Array.from(f.entries()).filter(([e])=>e.startsWith(`filter[`)).map(([e,t])=>`${e}=${t}`).join(`&`),St=(0,$.useMemo)(()=>{let e=[];return new URLSearchParams(xt).forEach((t,n)=>{let r=/^filter\[(.+)\]$/.exec(n);r&&r[1]&&t!==``&&e.push([r[1],`=`,t])}),e},[xt]),[Ct]=(0,$.useState)(()=>Jo(new URLSearchParams(window.location.search))),wt=(0,$.useCallback)(e=>{p(t=>qo(t,e),{replace:!0})},[p]),Tt=(0,$.useCallback)((e,t)=>{if(t===`new_window`){window.open(om(window.location.pathname,e),`_blank`);return}let n={from:{pathname:m.pathname+(m.search||``),label:b(G.name,Xe?.name??``,Xe?.label??``)||v(G)}};d?o(`../../record/${encodeURIComponent(String(e))}`,{relative:`path`,state:n}):o(`record/${encodeURIComponent(String(e))}`,{state:n})},[o,d,m.pathname,m.search,G,Xe?.name,Xe?.label,b,v]),Et=(0,$.useMemo)(()=>cm(G.name,Tt),[G.name,Tt]),Dt=ye({navigation:yt,objectName:G.name,onNavigate:Tt}),Ot=()=>{Dt.close();let e=new URLSearchParams(f);e.delete(ca),p(e)},kt=(0,$.useCallback)((e,t)=>{if(t&&(t.metaKey||t.ctrlKey||t.button===1)){Dt.handleClick(e,t);return}if(Dt.mode===`drawer`){let t=e?.id??e?._id;if(t!=null){let e=new URLSearchParams(f);e.set(ca,String(t)),p(e);return}}Dt.handleClick(e,t)},[Dt,f,p]),At=(0,$.useCallback)(()=>{let e=Dt.selectedRecord,t=e&&(e.id??e._id);t!=null&&(Ot(),Tt(t))},[Dt.selectedRecord,Tt]);(0,$.useEffect)(()=>{bt&&!Dt.isOpen?Dt.open({id:bt}):!bt&&Dt.isOpen&&Dt.close()},[bt]);let jt=(0,$.useCallback)(({schema:e,dataSource:t,onEdit:n,className:r,refreshKey:i})=>{let a=xe+(i||0),o=`${u}-${Xe.id}-${a}`,s=Xe,c=fp(me?.id,u,Xe.id),l=hp(c);if(s.type===`chart`){let e=s.chart||{};if(e.dataset){let n=Array.isArray(e.dimensions)?e.dimensions:[],r=Array.isArray(e.values)?e.values:[];return(0,Q.jsx)($.Suspense,{fallback:(0,Q.jsx)(`div`,{className:`p-4 text-sm text-muted-foreground`,children:`Loading chart…`}),children:(0,Q.jsx)(em,{dataSource:t,schema:{type:`object-chart`,dataset:e.dataset,dimensions:n,values:r,chartType:e.chartType||`bar`,xAxisKey:n[0],series:r.map(e=>({dataKey:e,label:e})),config:e.config,className:`h-[400px] w-full`}})},o)}let n=e.xAxisField||`name`,r=Array.isArray(e.yAxisFields)&&e.yAxisFields[0]||`value`,i=e.aggregation||`count`,a=e.series&&e.series.length>0?e.series:[{dataKey:r,label:r}];return(0,Q.jsx)($.Suspense,{fallback:(0,Q.jsx)(`div`,{className:`p-4 text-sm text-muted-foreground`,children:`Loading chart…`}),children:(0,Q.jsx)(em,{dataSource:t,schema:{type:`object-chart`,objectName:G.name,chartType:e.chartType||`bar`,aggregate:{field:r,function:i,groupBy:n},xAxisKey:n,series:a,config:e.config,filter:e.filter,className:`h-[400px] w-full`}})},o)}Gp(G.name,s.id||s.name||``,s,e);let d={...e,label:s.label??e.label,rowHeight:s.rowHeight??e.rowHeight,densityMode:s.densityMode??e.densityMode,sort:s.sort??e.sort,filter:(()=>{let t=s.filter??e.filter,n=Array.isArray(t)?t:t?[t]:[];return im(St.length?[...n,...St]:t,pt)})(),hiddenFields:s.hiddenFields??e.hiddenFields,columnState:s.columnState??e.columnState,onDensityChange:e=>{ue(s.id,s,{rowHeight:ie[e]})},onSortChange:e=>{ue(s.id,s,{sort:e})},onHiddenFieldsChange:e=>{ue(s.id,s,{hiddenFields:e})},onColumnStateChange:e=>{ue(s.id,s,{columnState:e})},inlineEdit:s.inlineEdit??s.editRecordsInline??e.inlineEdit,appearance:s.appearance?s.showDescription==null?s.appearance:{...s.appearance,showDescription:s.showDescription}:s.showDescription==null?e.appearance:{showDescription:s.showDescription},showViewSwitcher:((s.appearance??e.appearance)?.allowedVisualizations?.length??0)>1,userActions:{...L(e??{}).userActions,...L(s??{}).userActions},allowExport:s.allowExport??e.allowExport,exportOptions:s.allowExport===!1?void 0:s.exportOptions??e.exportOptions,striped:s.striped??e.striped,bordered:s.bordered??e.bordered,color:s.color??e.color,wrapHeaders:s.wrapHeaders??e.wrapHeaders,clickIntoRecordDetails:s.clickIntoRecordDetails??e.clickIntoRecordDetails,addRecordViaForm:s.addRecordViaForm??e.addRecordViaForm,addDeleteRecordsInline:s.addDeleteRecordsInline??e.addDeleteRecordsInline,collapseAllByDefault:s.collapseAllByDefault??e.collapseAllByDefault,fieldTextColor:s.fieldTextColor??e.fieldTextColor,prefixField:s.prefixField??e.prefixField,data:s.data??e.data,navigation:s.navigation??e.navigation,selection:s.selection??e.selection,pagination:s.pagination??e.pagination,searchableFields:s.searchableFields??e.searchableFields,filterableFields:s.filterableFields??e.filterableFields,resizable:s.resizable??e.resizable,rowActions:s.rowActions??e.rowActions,rowActionDefs:Array.isArray(G?.actions)?G.actions.filter(e=>Array.isArray(e?.locations)&&e.locations.includes(`list_item`)).map(e=>D(G.name,e)):[],bulkActions:s.bulkActions??e.bulkActions,bulkActionDefs:s.bulkActionDefs??e.bulkActionDefs,sharing:s.sharing??e.sharing,addRecord:s.addRecord??e.addRecord,conditionalFormatting:s.conditionalFormatting??e.conditionalFormatting,quickFilters:void 0,userFilters:(()=>{let t=s.userFilters??e.userFilters;return t&&t.element!==`tabs`&&t.tabs==null?t:void 0})(),showRecordCount:s.showRecordCount??e.showRecordCount,allowPrinting:s.allowPrinting??e.allowPrinting,virtualScroll:s.virtualScroll??e.virtualScroll,emptyState:S(G.name,s.name||s.id||``,s.emptyState??e.emptyState??Rp(G?.managedBy,_,G.name,G?.userActions)),aria:s.aria??e.aria,...s.sort?.length?{sort:s.sort}:{},options:{kanban:{...(()=>{let e=s.kanban?.groupByField||s.kanban?.groupField||oe(G)||void 0;return e?{groupBy:e,groupField:e}:{}})(),titleField:s.kanban?.titleField||G.titleField||`name`,cardFields:s.kanban?.columns},calendar:{startDateField:s.calendar?.startDateField||`due_date`,endDateField:s.calendar?.endDateField,titleField:s.calendar?.titleField||`name`,colorField:s.calendar?.colorField,allDayField:s.calendar?.allDayField,defaultView:s.calendar?.defaultView},timeline:am(s,G),map:{locationField:s.map?.locationField,titleField:s.map?.titleField||G.titleField||`name`,latitudeField:s.map?.latitudeField,longitudeField:s.map?.longitudeField,zoom:s.map?.zoom,center:s.map?.center},gallery:{...s.gallery||{},imageField:s.gallery?.imageField||s.gallery?.coverField||`image`,coverField:s.gallery?.coverField||s.gallery?.imageField,titleField:s.gallery?.titleField||G.titleField||`name`},gantt:{...s.gantt||{},startDateField:s.gantt?.startDateField||`start_date`,endDateField:s.gantt?.endDateField||`end_date`,titleField:s.gantt?.titleField||`name`},tree:{...s.tree||{},labelField:s.tree?.labelField||s.tree?.titleField||G.titleField||`name`},chart:{chartType:s.chart?.chartType,xAxisField:s.chart?.xAxisField,yAxisFields:s.chart?.yAxisFields,aggregation:s.chart?.aggregation,series:s.chart?.series,config:s.chart?.config}}};return(0,Q.jsx)(ws,{schema:d,className:r,onEdit:n,onDelete:e=>{e?.id!=null&&mt.deleteRecord(String(e.id),e)},onBulkDelete:e=>{let t=e.filter(e=>e?.id!=null);t.length!==0&&mt.execute({type:`delete`,confirmText:_(`console.objectView.bulkDeleteConfirm`,{count:t.length,defaultValue:`Delete ${t.length} selected records? This cannot be undone.`}),params:{records:t}})},onRowClick:(e,t)=>{kt(e,t)},onSortChange:e=>{ue(s.id,s,{sort:e})},onFilterChange:e=>{vp(c,{filters:e})},onSearchChange:e=>{vp(c,{search:e})},onHiddenFieldsChange:e=>{ue(s.id,s,{hiddenFields:e})},onInlineEditChange:e=>{ue(s.id,s,{inlineEdit:e})},onColumnStateChange:e=>{ue(s.id,s,{columnState:e})},userFilterSelections:Ct,onUserFilterSelectionsChange:wt,initialFilters:l?.filters,initialSearchTerm:l?.search,dataSource:t},o)},[Xe,G,u,xe,Dt,mt,ue,St,Ct,wt,me?.id]),Mt=(0,$.useMemo)(()=>We.map(e=>e.id===Je&&ae&&ae.id===e.id?{...e,...ae}:e),[We,Je,ae]),Nt=(0,$.useMemo)(()=>({type:`object-view`,objectName:G.name,layout:`page`,showSearch:Xe?.showSearch!==!1,showFilters:Xe?.showFilters!==!1,showSort:Xe?.showSort!==!1,showCreate:!1,showRefresh:!0,allowCreateView:W,viewActions:W?[{type:`settings`},{type:`share`},{type:`delete`}]:[],onNavigate:(e,t)=>{if(t===`edit`)n?.({id:e});else if(t===`view`){let t={from:{pathname:m.pathname+(m.search||``),label:b(G.name,Xe?.name??``,Xe?.label??``)||v(G)}};d?o(`../../record/${encodeURIComponent(String(e))}`,{relative:`path`,state:t}):o(`record/${encodeURIComponent(String(e))}`,{state:t})}}}),[G,n,Xe?.showSearch,Xe?.showFilters,Xe?.showSort,Xe?.name,Xe?.label,o,d,W,m.pathname,m.search,b,v]);return(0,Q.jsx)(ve,{...we.actionProviderProps,children:(0,Q.jsxs)(R,{value:Et,children:[(0,Q.jsxs)(`div`,{className:`h-full flex flex-col bg-background min-w-0 overflow-hidden`,children:[(0,Q.jsx)(`div`,{className:`hidden sm:block`,children:(0,Q.jsx)(Ss,{title:(0,Q.jsxs)(`span`,{className:`inline-flex items-center gap-2`,children:[(0,Q.jsx)(`span`,{className:`truncate`,children:v(G)}),(0,Q.jsx)(Fs,{managedBy:G?.managedBy})]}),description:G.description?y(G):void 0,icon:(()=>{let e=Yo(G?.icon);return(0,Q.jsx)(e,{className:`h-4 w-4`})})(),actions:(0,Q.jsxs)(Q.Fragment,{children:[u&&(0,Q.jsx)(Y,{size:`sm`,variant:`ghost`,onClick:()=>k({id:`object:${u}`,label:v(G),href:`/apps/${c}/${u}`,type:`object`}),className:`h-8 sm:h-9 px-2`,"aria-pressed":O(`object:${u}`),"aria-label":O(`object:${u}`)?_(`common.removeFromFavorites`,{defaultValue:`Remove from favorites`}):_(`common.addToFavorites`,{defaultValue:`Add to favorites`}),"data-testid":`object-favorite-btn-${u}`,children:O(`object:${u}`)?(0,Q.jsx)(rt,{className:`h-4 w-4 fill-amber-400 text-amber-400`}):(0,Q.jsx)(dt,{className:`h-4 w-4`})}),Ae.create&&_e(G.name,`create`)&&(0,Q.jsxs)(Y,{size:`sm`,onClick:mt.create,className:`shadow-none gap-1.5 sm:gap-2 h-8 sm:h-9`,children:[(0,Q.jsx)(Ue,{className:`h-4 w-4`}),(0,Q.jsx)(`span`,{className:`hidden sm:inline`,children:_(`console.objectView.new`)})]}),(Pe||Ae.import&&_e(G.name,`create`))&&(0,Q.jsxs)(Y,{size:`sm`,variant:`outline`,onClick:()=>Me(!0),className:`hidden sm:inline-flex shadow-none gap-1.5 sm:gap-2 h-8 sm:h-9`,title:_(`console.objectView.importTitle`),"data-testid":`object-view-import-button`,children:[(0,Q.jsx)(Ar,{className:`h-4 w-4`}),(0,Q.jsx)(`span`,{className:`hidden sm:inline`,children:_(`console.objectView.import`)})]}),G.actions?.some(e=>e.locations?.includes(`list_toolbar`))&&(Oe?(0,Q.jsx)($p,{actions:ke,entitlements:q,onUpgrade:we.openEntitlementDialog}):(0,Q.jsx)(Ee,{schema:{type:`action:bar`,location:`list_toolbar`,actions:ke,size:`sm`,variant:`outline`,mobileMaxVisible:0}}))]})})}),Ae.create&&_e(G.name,`create`)&&(0,Q.jsx)(`button`,{type:`button`,onClick:mt.create,className:`sm:hidden fixed right-4 bottom-36 z-40 h-12 w-12 rounded-full bg-primary text-primary-foreground shadow-lg active:scale-95 transition-transform inline-flex items-center justify-center`,"aria-label":_(`console.objectView.new`),"data-testid":`mobile-fab-create`,children:(0,Q.jsx)(Ue,{className:`h-5 w-5`})}),je&&(0,Q.jsx)($.Suspense,{fallback:null,children:(0,Q.jsx)(tm,{open:je,onOpenChange:Me,objectName:G.name,objectLabel:v(G),fields:Pe?Fp(G.fields):Lp(G.name,G.fields,ge),dataSource:Re??e,...Pe?{extraOptionsContent:(0,Q.jsx)(Np,{policy:Fe,onPolicyChange:Ie}),renderResultExtra:e=>(0,Q.jsx)(Pp,{serverResult:e?.serverResult})}:{},onComplete:e=>{Se(e=>e+1);let t=e.importedRows,n=e.skippedRows;n>0?X.warning(_(`console.objectView.importedWithSkipped`,{ok:t,skipped:n})):t>0&&X.success(_(`console.objectView.importedToast`,{count:t}))}})}),We.length>=1&&(()=>{let e=We.map(e=>{let t=ze.find(t=>Bp(t)===e.id),n=!t;return{id:e.id,label:b(G.name,e.name||e.id,e.label||e.name||e.id),type:e.type,hasActiveFilters:Array.isArray(e.filter)&&e.filter.length>0,hasActiveSort:Array.isArray(e.sort)&&e.sort.length>0,isDefault:!!(t?.isDefault??e.isDefault),isPinned:!!(t?.isPinned??e.isPinned),visibility:t?.visibility??e.visibility,readonly:n,readonlyReason:n?_(`console.objectView.systemViewReadonly`):void 0}});return(0,Q.jsx)(Q.Fragment,{children:(0,Q.jsxs)(`div`,{className:`hidden sm:block border-b px-3 sm:px-4 bg-background overflow-x-auto shrink-0`,children:[(0,Q.jsx)(Ds,{views:e,activeViewId:Je,onViewChange:Qe,viewTypeIcons:nm,config:{reorderable:!1,showAddButton:W,showPinnedSection:!0,showVisibilityGroups:!0},onAddView:W?ut:void 0,onRenameView:W?it:void 0,onDeleteView:W?at:void 0,onPinView:W?ot:void 0,onSetDefaultView:W?st:void 0,onConfigView:W?lt:void 0,onManageViews:W?()=>z(!0):void 0}),W&&(0,Q.jsx)(Ts,{open:re,onOpenChange:z,views:e,activeViewId:Je,viewTypeIcons:nm,onRename:it,onDelete:at,onSetDefault:st,onSetPinned:ot,onReorder:ct,onAddView:ut,onConfigView:lt})]})})})(),(0,Q.jsxs)(`div`,{className:`flex-1 overflow-hidden relative flex flex-row`,children:[Dt.mode===`split`&&Dt.isOpen?(0,Q.jsx)(Mn,{...Dt,setIsOpen:e=>{e||Ot()},title:v(G),onExpand:At,expandLabel:_(`console.objectView.expandToPage`,{defaultValue:`Open as full page`}),storageKey:`drawer-width:${G.name}`,mainContent:(0,Q.jsxs)(`div`,{className:`flex-1 min-w-0 relative h-full flex flex-col`,children:[(0,Q.jsx)(`div`,{className:`flex-1 relative overflow-hidden`,children:(0,Q.jsx)(`div`,{className:`h-full overflow-auto`,children:(0,Q.jsx)(Os,{schema:Nt,dataSource:e,views:Mt,activeViewId:Je,onViewChange:Qe,onEdit:e=>n?.(e),onRowClick:(e,t)=>{kt(e,t)},renderListView:jt,onCreateView:et,hideNamedViewTabs:!0,onViewAction:tt})})}),typeof pe==`number`&&(0,Q.jsx)(`div`,{"data-testid":`record-count-footer`,className:`border-t px-3 sm:px-4 py-1.5 text-xs text-muted-foreground bg-muted/5 shrink-0`,children:_(`console.objectView.recordCount`,{count:pe})})]}),children:r=>{let i=r.id||r._id;return(0,Q.jsx)(la,{dataSource:e,objects:t,onEdit:n,objectNameOverride:G.name,recordIdOverride:i,embedded:!0})}}):(0,Q.jsx)(`div`,{className:`flex-1 min-w-0 relative h-full flex flex-col`,children:(0,Q.jsx)(`div`,{className:`flex-1 relative overflow-hidden`,children:(0,Q.jsx)(`div`,{className:`h-full overflow-auto`,children:(0,Q.jsx)(Os,{schema:Nt,dataSource:e,views:Mt,activeViewId:Je,onViewChange:Qe,onEdit:e=>n?.(e),onRowClick:(e,t)=>{kt(e,t)},renderListView:jt,onCreateView:et,hideNamedViewTabs:!0,onViewAction:tt})})})}),(0,Q.jsx)(As,{open:h&&W,sections:[{title:`View Configuration`,data:Xe},{title:`Object Definition`,data:G}]}),(0,Q.jsx)(`div`,{"data-testid":`view-config-panel-wrapper`,className:`transition-[max-width,opacity] duration-300 ease-in-out overflow-hidden ${ee&&W?`max-w-[280px] opacity-100`:`max-w-0 opacity-0`}`,children:(0,Q.jsx)(wp,{open:ee&&W,onClose:()=>{P(!1),te(`edit`)},mode:F,activeView:Xe,objectDef:G,recordCount:pe,onSave:de,onViewUpdate:Ze,onCreate:fe,metadataClient:M,dataSource:e,onAfterChange:()=>Se(e=>e+1)})}),(0,Q.jsx)(Cs,{open:ne&&W,onOpenChange:I,existingLabels:We.map(e=>e.label).filter(Boolean),objectDef:G,onCreate:e=>fe(e)})]}),Dt.mode!==`split`&&(0,Q.jsx)(Mn,{...Dt,setIsOpen:e=>{e||Ot()},title:v(G),onExpand:At,expandLabel:_(`console.objectView.expandToPage`,{defaultValue:`Open as full page`}),storageKey:`drawer-width:${G.name}`,children:r=>{let i=r.id||r._id;return(0,Q.jsx)(la,{dataSource:e,objects:t,onEdit:n,objectNameOverride:G.name,recordIdOverride:i,embedded:!0})}})]}),we.dialogs]})})}function vm({appName:e,error:t,onRetry:n}){let{t:r}=V(),i=!!t;return(0,Q.jsx)(`div`,{className:`flex h-screen items-center justify-center`,"data-testid":`preview-draft-empty-state`,children:(0,Q.jsxs)(vr,{children:[(0,Q.jsx)(`div`,{className:`mb-2 flex justify-center text-muted-foreground`,"aria-hidden":`true`,children:i?(0,Q.jsx)(mn,{className:`h-8 w-8`}):(0,Q.jsx)(Cn,{className:`h-8 w-8`})}),(0,Q.jsx)(ei,{children:i?r(`preview.empty.loadFailedTitle`,{defaultValue:`Draft preview failed to load`}):e?r(`preview.empty.notReadyTitle`,{app:e,defaultValue:`“{{app}}” isn’t in the draft yet`}):r(`preview.empty.nothingTitle`,{defaultValue:`Nothing to preview yet`})}),(0,Q.jsx)(Qn,{children:i?r(`preview.empty.loadFailedDescription`,{defaultValue:`The draft overlay could not be read. Retry, or check your connection.`}):r(`preview.empty.notReadyDescription`,{defaultValue:`The build may still be running, or it may have failed before this app was staged. Check the conversation for the build status — this pane refreshes as drafts land.`})}),(0,Q.jsx)(`div`,{className:`mt-4 flex justify-center`,children:(0,Q.jsxs)(Y,{variant:`outline`,onClick:n,"data-testid":`preview-draft-retry`,children:[(0,Q.jsx)(pn,{className:`mr-1.5 h-3.5 w-3.5`}),r(`preview.empty.retry`,{defaultValue:`Retry`})]})})]})})}var ym=(0,$.lazy)(()=>o(()=>import(`./RecordDetailView-DrVbrbaN.js`).then(e=>e.n).then(e=>({default:e.RecordDetailView})),__vite__mapDeps([0]),import.meta.url)),bm=(0,$.lazy)(()=>o(()=>import(`./DashboardView-Cr-Q-16_.js`).then(e=>e.t).then(e=>({default:e.DashboardView})),__vite__mapDeps([0,1]),import.meta.url)),xm=(0,$.lazy)(()=>o(()=>import(`./PageView-q1XSwpVo.js`).then(e=>e.t).then(e=>({default:e.PageView})),__vite__mapDeps([0]),import.meta.url)),Sm=(0,$.lazy)(()=>o(()=>import(`./ReportView-D_soBKL6.js`).then(e=>e.t).then(e=>({default:e.ReportView})),__vite__mapDeps([0,1]),import.meta.url)),Cm=(0,$.lazy)(()=>o(()=>import(`./SearchResultsPage--Beqyte8.js`).then(e=>e.t).then(e=>({default:e.SearchResultsPage})),__vite__mapDeps([0]),import.meta.url)),wm=(0,$.lazy)(()=>o(()=>import(`./RecordFormPage-Bs9wX-M6.js`).then(e=>e.t).then(e=>({default:e.RecordFormPage})),__vite__mapDeps([0]),import.meta.url)),Tm=(0,$.lazy)(()=>o(()=>import(`./ComponentNavView-DjiNAGys.js`).then(e=>({default:e.ComponentNavView})),__vite__mapDeps([0]),import.meta.url)),Em=(0,$.lazy)(()=>o(()=>import(`./ObjectDataPage-D9kCSxvN.js`).then(e=>({default:e.ObjectDataPage})),__vite__mapDeps([0]),import.meta.url)),Dm=(0,$.lazy)(()=>o(()=>import(`./metadata-admin-DqAvOmNf.js`).then(e=>e.t).then(e=>({default:e.MetadataDirectoryPage})),__vite__mapDeps([0]),import.meta.url)),Om=(0,$.lazy)(()=>o(()=>import(`./metadata-admin-DqAvOmNf.js`).then(e=>e.t).then(e=>({default:e.StudioHomePage})),__vite__mapDeps([0]),import.meta.url)),km=(0,$.lazy)(()=>o(()=>import(`./metadata-admin-DqAvOmNf.js`).then(e=>e.t).then(e=>({default:e.MetadataResourceListPage})),__vite__mapDeps([0]),import.meta.url)),Am=(0,$.lazy)(()=>o(()=>import(`./metadata-admin-DqAvOmNf.js`).then(e=>e.t).then(e=>({default:e.MetadataResourceEditPage})),__vite__mapDeps([0]),import.meta.url)),jm=(0,$.lazy)(()=>o(()=>import(`./metadata-admin-DqAvOmNf.js`).then(e=>e.t).then(e=>({default:e.MetadataResourceHistoryPage})),__vite__mapDeps([0]),import.meta.url)),Mm=(0,$.lazy)(()=>o(()=>import(`./metadata-admin-DqAvOmNf.js`).then(e=>e.t).then(e=>({default:e.MetadataDiagnosticsPage})),__vite__mapDeps([0]),import.meta.url)),Nm=(0,$.lazy)(()=>o(()=>import(`./src-CVuJHohL.js`).then(e=>({default:e.CreateAppPage})),__vite__mapDeps([0]),import.meta.url)),Pm=(0,$.lazy)(()=>o(()=>import(`./src-CVuJHohL.js`).then(e=>({default:e.EditAppPage})),__vite__mapDeps([0]),import.meta.url)),Fm=(0,$.lazy)(()=>o(()=>import(`./src-CVuJHohL.js`).then(e=>({default:e.DashboardDesignPage})),__vite__mapDeps([0]),import.meta.url)),Im=(0,$.lazy)(()=>o(()=>import(`./MarketplacePage-CZjDbg5G.js`).then(e=>e.t).then(e=>({default:e.MarketplacePage})),__vite__mapDeps([0]),import.meta.url)),Lm=(0,$.lazy)(()=>o(()=>import(`./MarketplacePackagePage-XSdk80Dd.js`).then(e=>e.t).then(e=>({default:e.MarketplacePackagePage})),__vite__mapDeps([0]),import.meta.url)),Rm=(0,$.lazy)(()=>o(()=>import(`./MarketplaceInstalledPage-CRe2BiM2.js`).then(e=>e.t).then(e=>({default:e.MarketplaceInstalledPage})),__vite__mapDeps([0]),import.meta.url));function zm({appName:e}){let{reviewSeq:t,reviewTarget:n}=Ai(),r=a(),i=(0,$.useRef)(t);return(0,$.useEffect)(()=>{if(t===i.current||!n||!e)return;i.current=t;let{type:a,name:o}=n;r(`/apps/${e}/metadata/${encodeURIComponent(a)}/${encodeURIComponent(o)}?review=1`)},[t,n,e,r]),null}function Bm({extraRoutes:e,extraRoutesNoApp:t}={}){let[n,r]=(0,$.useState)(`disconnected`),{user:o,getAuthConfig:u,activeOrganization:d}=T(),f=g(),h=se(),[_,v]=(0,$.useState)({});(0,$.useEffect)(()=>{let e=!1;return u().then(t=>{e||v(t?.features??{})}).catch(()=>{}),()=>{e=!0}},[u]);let y=a(),b=i(),{appName:x}=l(),{apps:S,objects:C,loading:w,ensureType:E,error:D,refresh:O}=ae(),k=Oi(),{t:j}=V(),{objectLabel:M}=Te(),[N,F]=(0,$.useState)(!E);(0,$.useEffect)(()=>{if(!E){F(!0);return}let e=!1;return Promise.all([E(`object`),E(`dashboard`),E(`report`),E(`page`)]).finally(()=>{e||F(!0)}),()=>{e=!0}},[E]);let te=S.filter(e=>e.active!==!1).filter(e=>e.hidden!==!0),ne=b.pathname.split(`/`),I=b.pathname.endsWith(`/create-app`),L=ne.includes(`system`),R=ne.includes(`metadata`),re=b.pathname===`/apps/setup`||b.pathname.startsWith(`/apps/setup/`),ie=I||L||R||re,z=ga(S,x),B=z||(!x||ie?te.find(e=>e.isDefault===!0)||te[0]:void 0),H=!!x&&!z&&!ie,[oe,ce]=(0,$.useState)(`idle`);(0,$.useEffect)(()=>{if(!H){oe!==`idle`&&ce(`idle`);return}oe===`idle`&&!w&&!k&&(ce(`checking`),Promise.resolve(O()).finally(()=>ce(`done`)))},[H,w,k,oe,O]);let[le,fe]=(0,$.useState)(null);(0,$.useEffect)(()=>{if(!H||k||oe!==`done`||!x){fe(e=>e===null?e:null);return}if(le?.app===x)return;let e=h?.probeAppAccess;if(typeof e!=`function`){fe({app:x,verdict:`unknown`});return}let t=!1,n=x;return Promise.resolve(e.call(h,n)).then(e=>{t||fe({app:n,verdict:e})}).catch(()=>{t||fe({app:n,verdict:`unknown`})}),()=>{t=!0}},[H,k,oe,x,le,h]);let pe=le&&le.app===x?le.verdict:null;(0,$.useEffect)(()=>{if(!B?.name)return;let e=x??B.name,t=`/apps/${e}/metadata/package`;(b.pathname===t||b.pathname.startsWith(`${t}/`))&&y(`/apps/${e}/component/developer/packages`,{replace:!0})},[B?.name,x,b.pathname,y]);let[U,he]=s(),ge=U.get(ua),_e=U.get(ra),ve=U.get(Zi),ye=(0,$.useMemo)(()=>ge&&ge!==`new`?{id:ge}:null,[ge]),be=(0,$.useMemo)(()=>{if(!ve)return;let e=ve.indexOf(`:`);if(!(e<=0))return{[ve.slice(0,e)]:ve.slice(e+1)}},[ve]),[G,xe]=(0,$.useState)(0),Ce=!!ge,we=(0,$.useCallback)(()=>{let e=new URLSearchParams(window.location.search);!e.has(`form`)&&!e.has(`formObject`)&&!e.has(`formLink`)||(e.delete(ua),e.delete(ra),e.delete(Zi),he(e,{replace:!0}))},[he]),{execute:Ee,runner:K}=W();de(h),P({dataSource:h??void 0,onUndo:e=>{X.info(`Undo: ${e.description}`,{duration:4e3}),xe(e=>e+1),e?.objectName&&ue({objectName:e.objectName,recordId:e.recordId})},onRedo:e=>{X.info(`Redo: ${e.description}`,{duration:3e3}),xe(e=>e+1),e?.objectName&&ue({objectName:e.objectName,recordId:e.recordId})}}),(0,$.useEffect)(()=>{K.registerHandler(`crud_success`,async e=>(we(),xe(e=>e+1),X.success(e.params?.message??`Record saved successfully`),{success:!0,reload:!0})),K.registerHandler(`dialog_cancel`,async()=>(we(),{success:!0})),K.registerHandler(`navigate_create`,async e=>{let t=K.getContext?.()??{},n=Hi({action:e,context:t,defaultBaseUrl:`/apps/${x??``}`});return n.success?(y(n.url),{success:!0}):n}),K.registerHandler(`navigate_edit`,async e=>{let t=K.getContext?.()??{},n=ha({action:e,context:t,defaultBaseUrl:`/apps/${x??``}`});return n.success?(y(n.url),{success:!0}):n})},[K,y,x,we]),(0,$.useEffect)(()=>{if(!h)return;let e=h.onConnectionStateChange(e=>{r(e.state),e.error&&console.error(`[Console] Connection error:`,e.error)});return r(h.getConnectionState()),e},[h]);let De=b.pathname.split(`/`).filter(Boolean)[2];(De===`view`||De===`record`||De===`page`||De===`dashboard`||De===`design`)&&(De=``);let Oe=C.find(e=>e.name===De),q=_e?C.find(e=>e.name===_e):Oe,ke=!!_e&&_e!==Oe?.name,Ae=(0,$.useCallback)(()=>{let e=q?M(q):j(`common.record`,{defaultValue:`Record`});Ee({type:`crud_success`,params:{message:ye?j(`form.updateSuccess`,{object:e,defaultValue:`${e} updated successfully`}):j(`form.createSuccess`,{object:e,defaultValue:`${e} created successfully`})}})},[Ee,ye,q,M,j]),je=(0,$.useCallback)(()=>{Ee({type:`dialog_cancel`})},[Ee]),Me=(0,$.useCallback)(async e=>{if(ke){let e=q?M(q):j(`common.record`,{defaultValue:`Record`});X.success(ye?j(`form.updateSuccess`,{object:e,defaultValue:`${e} updated successfully`}):j(`form.createSuccess`,{object:e,defaultValue:`${e} created successfully`})),we();return}if(Ae(),ye||!Oe)return;let t=Fi({objectName:Oe.name,baseUrl:x?`/apps/${x}`:B?.name?`/apps/${B.name}`:``,pathname:b.pathname,search:window.location.search,surface:A(Oe),recordId:e?.id??e?._id});if(t.kind!==`none`){if(t.kind===`detail-page`){let e=new URLSearchParams(window.location.search);e.delete(ua),e.delete(ra),e.delete(Zi);let n=e.toString(),r=`${b.pathname}${n?`?${n}`:``}`,i=M(Oe);y(t.url,{replace:!0,state:i?{from:{pathname:r,label:i}}:void 0});return}y(t.url,{replace:!0})}},[Ae,ke,q,ye,Oe,x,B?.name,b.pathname,y,we,M,j]);Qd({pathname:b.pathname,appName:B?.name,objects:C});let Ne=e=>{let t=Ki({objectDef:Oe,baseUrl:x?`/apps/${x}`:B?.name?`/apps/${B.name}`:``,record:e});if(t.kind===`page`){y(t.url);return}let n=e?.id??e?._id,r=new URLSearchParams(window.location.search);r.set(ua,n!=null&&n!==``?String(n):`new`),r.delete(ra),r.delete(Zi),he(r)},Pe=e=>{y(`/apps/${e}`)},Fe=(0,$.useMemo)(()=>new Se({user:o?{name:o.name,email:o.email,role:o.role??`user`}:{},app:B||{},data:ye||{}}),[o,B,ye]);if(!h||w||!N)return(0,Q.jsx)(qs,{});if(k&&(H||!B))return(0,Q.jsx)(vm,{appName:x,error:D,onRetry:()=>void O()});if(H)return oe!==`done`||pe===null?(0,Q.jsx)(qs,{}):pe===`denied`?(0,Q.jsx)(`div`,{className:`h-screen flex items-center justify-center`,children:(0,Q.jsxs)(vr,{"data-testid":`app-access-denied`,children:[(0,Q.jsx)(ei,{children:j(`empty.appAccessDenied`,{defaultValue:`You don't have access to this app`})}),(0,Q.jsx)(Qn,{children:j(`empty.appAccessDeniedDescription`,{defaultValue:`This app exists, but your account is not authorized to open it. Ask an administrator to grant you access.`})}),(0,Q.jsx)(`div`,{className:`mt-4`,children:(0,Q.jsx)(Y,{onClick:()=>y(`/home`),"data-testid":`app-access-denied-home`,children:j(`empty.appAccessDeniedHome`,{defaultValue:`Back to home`})})})]})}):(0,Q.jsx)(`div`,{className:`h-screen flex items-center justify-center`,children:(0,Q.jsxs)(vr,{children:[(0,Q.jsx)(ei,{children:j(`empty.appNotAvailable`,{defaultValue:`App not available`})}),(0,Q.jsx)(Qn,{children:j(`empty.appNotAvailableDescription`,{defaultValue:`This app is not available yet — it may still be publishing. Try again in a moment.`})}),(0,Q.jsx)(`div`,{className:`mt-4`,children:(0,Q.jsx)(Y,{onClick:()=>ce(`idle`),"data-testid":`app-not-available-retry`,children:j(`common.retry`,{defaultValue:`Retry`})})})]})});if(!B&&!I&&!L&&!R&&!f)return(0,Q.jsx)(p,{to:`/home`,replace:!0});if(!B&&!I&&!L&&!R)return(0,Q.jsx)(`div`,{className:`h-screen flex items-center justify-center`,children:(0,Q.jsxs)(vr,{children:[(0,Q.jsx)(ei,{children:j(`empty.noAppsConfigured`)}),(0,Q.jsx)(Qn,{children:j(`empty.noAppsConfiguredDescription`)}),(0,Q.jsxs)(`div`,{className:`mt-4 flex flex-col sm:flex-row items-center gap-3`,children:[(0,Q.jsx)(Y,{onClick:()=>y(`/apps/${x}/create-app`),"data-testid":`create-first-app-btn`,children:j(`empty.createFirstApp`)}),(0,Q.jsx)(Y,{variant:`outline`,onClick:()=>y(`/apps/setup/system`),"data-testid":`go-to-settings-btn`,children:j(`empty.systemSettings`)})]})]})});if(!B&&(I||L||R))return(0,Q.jsx)($.Suspense,{fallback:(0,Q.jsx)(qs,{}),children:(0,Q.jsxs)(m,{children:[(0,Q.jsx)(c,{path:`create-app`,element:(0,Q.jsx)(Nm,{})}),(0,Q.jsx)(c,{path:`system/marketplace`,element:(0,Q.jsx)(Im,{})}),(0,Q.jsx)(c,{path:`system/marketplace/installed`,element:(0,Q.jsx)(Rm,{})}),(0,Q.jsx)(c,{path:`system/marketplace/:packageId`,element:(0,Q.jsx)(Lm,{})}),(0,Q.jsx)(c,{path:`metadata`,element:(0,Q.jsx)(Dm,{})}),(0,Q.jsx)(c,{path:`metadata/_diagnostics`,element:(0,Q.jsx)(Mm,{})}),(0,Q.jsx)(c,{path:`metadata/:type`,element:(0,Q.jsx)(km,{})}),(0,Q.jsx)(c,{path:`metadata/:type/new`,element:(0,Q.jsx)(Am,{createMode:!0})}),(0,Q.jsx)(c,{path:`metadata/:type/:name`,element:(0,Q.jsx)(Am,{})}),(0,Q.jsx)(c,{path:`metadata/:type/:name/history`,element:(0,Q.jsx)(jm,{})}),(0,Q.jsx)(c,{path:`component/metadata/directory`,element:(0,Q.jsx)(Km,{mode:`directory`})}),(0,Q.jsx)(c,{path:`component/metadata/resource/*`,element:(0,Q.jsx)(Km,{mode:`resource`})}),t,(0,Q.jsx)(c,{path:`*`,element:(0,Q.jsx)(Jm,{})})]})});let Ie=o?{id:o.id,name:o.name,email:o.email,role:o.role??`user`,roles:o.roles,isPlatformAdmin:o.isPlatformAdmin??!1,positions:o.positions??[]}:{name:`Anonymous`,email:``,role:`guest`,isPlatformAdmin:!1,positions:[]};return(0,Q.jsx)(Pi,{user:Ie,app:B,data:{},features:_,children:(0,Q.jsxs)(me,{currentUserId:o?.id??null,currentOrgId:d?.id??null,children:[(0,Q.jsx)(Gd,{}),(0,Q.jsxs)(Xf,{activeAppName:B.name,activeApp:B,onAppChange:Pe,objects:C,connectionState:n,userId:o?.id,children:[(0,Q.jsx)(Zf,{apps:S,activeApp:B,objects:C,onAppChange:Pe,dataSource:h}),(0,Q.jsx)($f,{}),(0,Q.jsx)(ep,{}),(0,Q.jsx)(zm,{appName:x}),(0,Q.jsx)(up,{children:(0,Q.jsx)($.Suspense,{fallback:(0,Q.jsx)(qs,{}),children:(0,Q.jsx)(rp,{className:`h-full`,children:(0,Q.jsxs)(m,{children:[(0,Q.jsx)(c,{path:`/`,element:(()=>{let e=Um(B,{currentUserId:o?.id??null});return e?(0,Q.jsx)(p,{to:e,replace:!0}):(0,Q.jsx)(Om,{})})()}),(0,Q.jsx)(c,{path:`metadata/package/*`,element:(0,Q.jsx)(p,{to:`/apps/${x??B.name}/component/developer/packages`,replace:!0})}),(0,Q.jsxs)(c,{path:`metadata`,children:[(0,Q.jsx)(c,{index:!0,element:(0,Q.jsx)(Dm,{})}),(0,Q.jsx)(c,{path:`_diagnostics`,element:(0,Q.jsx)(Mm,{})}),(0,Q.jsx)(c,{path:`:type`,element:(0,Q.jsx)(km,{})}),(0,Q.jsx)(c,{path:`:type/new`,element:(0,Q.jsx)(Am,{createMode:!0})}),(0,Q.jsx)(c,{path:`:type/:name`,element:(0,Q.jsx)(Am,{})}),(0,Q.jsx)(c,{path:`:type/:name/history`,element:(0,Q.jsx)(jm,{})})]}),(0,Q.jsx)(c,{path:`:objectName`,element:(0,Q.jsx)(gm,{dataSource:h,objects:C,onEdit:Ne,externalRefreshKey:G})}),(0,Q.jsx)(c,{path:`:objectName/new`,element:(0,Q.jsx)(wm,{mode:`create`})}),(0,Q.jsx)(c,{path:`:objectName/view/:viewId`,element:(0,Q.jsx)(gm,{dataSource:h,objects:C,onEdit:Ne,externalRefreshKey:G})}),(0,Q.jsx)(c,{path:`:objectName/data`,element:(0,Q.jsx)(Em,{dataSource:h,objects:C})}),(0,Q.jsx)(c,{path:`:objectName/record/:recordId`,element:(0,Q.jsx)(ym,{dataSource:h,objects:C,onEdit:Ne})}),(0,Q.jsx)(c,{path:`:objectName/record/:recordId/edit`,element:(0,Q.jsx)(wm,{mode:`edit`})}),(0,Q.jsx)(c,{path:`dashboard/:dashboardName`,element:(0,Q.jsx)(bm,{dataSource:h})}),(0,Q.jsx)(c,{path:`report/:reportName`,element:(0,Q.jsx)(Sm,{dataSource:h})}),(0,Q.jsx)(c,{path:`page/:pageName`,element:(0,Q.jsx)(xm,{})}),(0,Q.jsx)(c,{path:`component/:ns/:name/*`,element:(0,Q.jsx)(Tm,{})}),(0,Q.jsx)(c,{path:`component/metadata/directory`,element:(0,Q.jsx)(Km,{mode:`directory`})}),(0,Q.jsx)(c,{path:`component/metadata/resource/*`,element:(0,Q.jsx)(Km,{mode:`resource`})}),(0,Q.jsx)(c,{path:`design/dashboard/:dashboardName`,element:(0,Q.jsx)(Fm,{})}),(0,Q.jsx)(c,{path:`search`,element:(0,Q.jsx)(Cm,{})}),(0,Q.jsx)(c,{path:`create-app`,element:(0,Q.jsx)(Nm,{})}),(0,Q.jsx)(c,{path:`edit-app/:editAppName`,element:(0,Q.jsx)(Pm,{})}),(0,Q.jsx)(c,{path:`system/marketplace`,element:(0,Q.jsx)(Im,{})}),(0,Q.jsx)(c,{path:`system/marketplace/installed`,element:(0,Q.jsx)(Rm,{})}),(0,Q.jsx)(c,{path:`system/marketplace/:packageId`,element:(0,Q.jsx)(Lm,{})}),e,(0,Q.jsx)(c,{path:`:objectName/:maybeRecordId`,element:(0,Q.jsx)(qm,{})}),(0,Q.jsx)(c,{path:`*`,element:(0,Q.jsx)(Jm,{})})]})})})}),q&&(0,Q.jsx)(bi,{schema:{type:`object-form`,formType:`modal`,objectName:q.name,mode:ye?`edit`:`create`,recordId:ye?.id,...be&&!ye?{initialValues:be}:{},...ee(q,ke?ye?`child-edit`:`child-create`:ye?`edit`:`create`).size===`full`?{modalSize:`full`}:{},...Bi(q),title:j(ye?`form.editTitle`:`form.createTitle`,{object:M(q)}),open:Ce,onOpenChange:e=>{e||we()},layout:`vertical`,fields:q.fields?Array.isArray(q.fields)?q.fields.filter(e=>typeof e==`string`||Mi(e.visible,Fe)).map(e=>typeof e==`string`?e:e.name):Object.entries(q.fields).filter(([e,t])=>Mi(t.visible,Fe)).map(([e])=>e):[],onSuccess:Me,onCancel:je,showSubmit:!0,showCancel:!0,submitText:ye?j(`form.update`,{defaultValue:j(`common.save`,{defaultValue:`Save`})}):j(`form.create`,{defaultValue:j(`common.create`,{defaultValue:`Create`})}),cancelText:j(`common.cancel`)},dataSource:h},`${q.name}:${ye?.id||`new`}`)]})]})})}function Vm(e,t){if(!e||e.length===0)return``;for(let n of e){if(n.type===`object`||n.type===`page`||n.type===`dashboard`||n.type===`report`){let e=Hm(n,t);if(e)return e;continue}if(n.type!==`url`&&n.type===`group`&&n.children){let e=Vm(n.children,t);if(e!==``)return e}}return``}function Hm(e,t){if(!e||e.type===`url`||e.type===`action`||e.type===`separator`||e.type===`group`)return``;let{href:n,external:r}=ko(e,``,t);return r||!n||n===`#`?``:n.replace(/^\//,``)}function Um(e,t){return Vm(e?.navigation||[],t)}var Wm=new Set([`new`,`view`,`record`,`edit`,`dashboard`,`report`,`page`,`design`,`search`,`create-app`,`edit-app`,`metadata`]);function Gm(e){return!e||Wm.has(e)||!/^[A-Za-z0-9_-]+$/.test(e)?!1:e.length>=6}function Km({mode:e}){let t=i(),n=t.pathname.replace(/\/component\/metadata\/.*$/,``);if(e===`directory`)return(0,Q.jsx)(p,{to:`${n}/metadata${t.search}${t.hash}`,replace:!0});let r=new URLSearchParams(t.search).get(`type`)??``,a=t.pathname.match(/\/component\/metadata\/resource(\/.*)?$/)?.[1]??``,o=r?`${n}/metadata/${encodeURIComponent(r)}${a}${t.hash}`:`${n}/metadata${t.hash}`;return(0,Q.jsx)(p,{to:o,replace:!0})}function qm(){let{objectName:e,maybeRecordId:t}=l(),n=i();if(e&&Gm(t)){let e=`${n.pathname.replace(/\/$/,``).replace(`/${t}`,`/record/${t}`)}${n.search}${n.hash}`;return(0,Q.jsx)(p,{to:e,replace:!0})}return(0,Q.jsx)(Jm,{})}function Jm(){let e=a(),{t}=V();return(0,Q.jsx)(`div`,{className:`flex h-full w-full items-center justify-center p-8`,children:(0,Q.jsxs)(vr,{children:[(0,Q.jsx)(ei,{children:t(`console.notFound.title`,{defaultValue:`Page not found`})}),(0,Q.jsx)(Qn,{children:t(`console.notFound.description`,{defaultValue:`The URL you followed does not match any view in this app.`})}),(0,Q.jsx)(`div`,{className:`mt-4`,children:(0,Q.jsx)(Y,{variant:`outline`,onClick:()=>e(-1),children:t(`console.notFound.back`,{defaultValue:`Go back`})})})]})})}function Ym({children:e}){let{setContext:t}=Ui(),{t:n}=V(),r=a(),o=i(),s=(0,$.useCallback)(()=>{Rl(`${o.pathname}${o.search}`),r(`/ai`)},[o.pathname,o.search,r]),{enabled:c}=ao();return(0,$.useEffect)(()=>{t(`home`)},[t]),(0,Q.jsxs)(`div`,{className:`flex min-h-svh w-full flex-col bg-background`,"data-testid":`home-layout`,children:[(0,Q.jsx)(`header`,{className:`sticky top-0 z-30 flex h-14 w-full shrink-0 items-center gap-2 border-b bg-background px-2 sm:px-4`,children:(0,Q.jsx)(El,{variant:`home`})}),(0,Q.jsx)(`main`,{className:`flex-1 min-w-0 overflow-auto pb-20 sm:pb-0`,children:e}),c&&(0,Q.jsx)(hc,{appLabel:n(`workspace.default`,{defaultValue:`My Workspace`}),onOpenDock:s})]})}var Xm=19,Zm=[`from-blue-500 to-indigo-600`,`from-violet-500 to-purple-600`,`from-pink-500 to-rose-600`,`from-amber-400 to-orange-500`,`from-emerald-500 to-teal-600`,`from-sky-500 to-cyan-600`,`from-fuchsia-500 to-pink-600`,`from-orange-500 to-red-600`,`from-indigo-500 to-blue-600`,`from-teal-500 to-green-600`],Qm=`shadow-[0_4px_10px_-2px_rgb(0_0_0/0.25),inset_0_1px_0_0_rgb(255_255_255/0.45)]`;function $m(e){let t=0;for(let n=0;n<e.length;n++)t=t*31+e.charCodeAt(n)|0;return Math.abs(t)}function eh({apps:e,favorites:t,onOpen:n,onBrowseMarketplace:r,isAdmin:i}){let{t:a}=V(),{appLabel:o}=Te(),[s,c]=(0,$.useState)(!1),l=(0,$.useMemo)(()=>new Set(t.filter(e=>e.id.startsWith(`app:`)).map(e=>e.id.slice(4))),[t]),u=(0,$.useMemo)(()=>[...e].sort((e,t)=>!!l.has(t.name)-+!!l.has(e.name)),[e,l]),d=u.length-Xm,f=s?u:u.slice(0,Xm);return(0,Q.jsxs)(`section`,{className:`mb-6`,children:[(0,Q.jsxs)(`div`,{className:`mb-3 flex items-center gap-2.5`,children:[(0,Q.jsx)(`span`,{className:`inline-flex h-8 w-8 items-center justify-center rounded-xl border border-border bg-muted text-muted-foreground`,children:(0,Q.jsx)(Ke,{className:`h-4 w-4`})}),(0,Q.jsx)(`h2`,{className:`text-base font-semibold tracking-tight`,children:a(`home.yourApps`,{defaultValue:`Your apps`})}),(0,Q.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:u.length}),i&&(0,Q.jsxs)(Y,{variant:`ghost`,size:`sm`,className:`ml-auto h-8 text-muted-foreground`,onClick:r,"data-testid":`browse-marketplace-btn`,children:[(0,Q.jsx)(xt,{className:`mr-1.5 h-4 w-4`}),a(`home.browseMarketplace`,{defaultValue:`Browse App Marketplace`})]})]}),(0,Q.jsxs)(`div`,{className:`grid grid-cols-4 gap-1 sm:grid-cols-6 lg:grid-cols-8 xl:grid-cols-10`,children:[f.map(e=>{let t=Yo(e.icon),r=o({name:e.name,label:xa(e.label,a)}),i=l.has(e.name),s=Zm[$m(e.name)%Zm.length];return(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>n(e),className:`group relative flex flex-col items-center gap-2 rounded-xl p-2.5 text-center transition hover:bg-muted/40 active:scale-[0.96]`,"data-testid":`app-tile-${e.name}`,children:[(0,Q.jsxs)(`span`,{className:Fn(`relative inline-flex h-12 w-12 items-center justify-center rounded-[13px]`,`bg-gradient-to-br text-white transition-transform group-hover:scale-105`,Qm,s),children:[(0,Q.jsx)(t,{className:`h-6 w-6`}),i&&(0,Q.jsx)(`span`,{className:`absolute -right-1 -top-1 inline-flex h-4 w-4 items-center justify-center rounded-full bg-amber-400 ring-2 ring-background`,children:(0,Q.jsx)(rt,{className:`h-2.5 w-2.5 fill-white text-white`})})]}),(0,Q.jsx)(`span`,{className:`w-full truncate text-xs font-medium`,children:r})]},e.name)}),!s&&d>0&&(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>c(!0),className:`group flex flex-col items-center gap-2 rounded-xl p-2.5 text-center transition hover:bg-muted/40 active:scale-[0.96]`,"data-testid":`apps-show-all`,children:[(0,Q.jsxs)(`span`,{className:`inline-flex h-12 w-12 items-center justify-center rounded-[13px] border border-dashed border-border text-sm font-medium text-muted-foreground transition-colors group-hover:border-foreground/30 group-hover:text-foreground`,children:[`+`,d]}),(0,Q.jsx)(`span`,{className:`w-full truncate text-xs text-muted-foreground`,children:a(`home.showMoreApps`,{defaultValue:`More`})})]})]}),s&&d>0&&(0,Q.jsx)(`button`,{type:`button`,onClick:()=>c(!1),className:`mt-2.5 text-xs text-primary hover:underline`,children:a(`home.showLess`,{defaultValue:`Show less`})})]})}function th({icon:e,title:t,count:n,accent:r,children:i}){return(0,Q.jsxs)(`section`,{className:`rounded-2xl bg-card/80 backdrop-blur-sm p-4 `+(r?`border border-primary/30`:`border border-border/70`),children:[(0,Q.jsxs)(`div`,{className:`mb-3 flex items-center gap-2`,children:[(0,Q.jsx)(e,{className:`h-4 w-4 `+(r?`text-primary`:`text-muted-foreground`)}),(0,Q.jsx)(`h2`,{className:`flex-1 text-sm font-semibold tracking-tight`,children:t}),typeof n==`number`&&n>0&&(0,Q.jsx)(`span`,{className:`inline-flex h-5 min-w-5 items-center justify-center rounded-full bg-primary px-1.5 text-[11px] font-medium text-primary-foreground tabular-nums`,children:n})]}),i]})}function nh({icon:e,iconClass:t,label:n,meta:r,trailing:i,onClick:a,testId:o}){return(0,Q.jsx)(`li`,{children:(0,Q.jsxs)(`button`,{type:`button`,onClick:a,"data-testid":o,className:`flex w-full items-center gap-3 rounded-lg px-2 py-2 text-left transition hover:bg-muted/60 active:scale-[0.99]`,children:[(0,Q.jsx)(`span`,{className:`inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-lg `+t,children:(0,Q.jsx)(e,{className:`h-4 w-4`})}),(0,Q.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-sm`,children:n}),r&&(0,Q.jsx)(`span`,{className:`shrink-0 text-[11px] text-muted-foreground`,children:r}),i]})})}function rh({pendingApprovalsCount:e,notifications:t,unreadTopicCount:n,notificationsStatus:r,onOpenApprovals:i,onOpenNotification:a,t:o}){let{language:s}=V(),c=e+n,l=r===`ready`;return(0,Q.jsxs)(th,{icon:et,accent:!0,count:c,title:o(`home.actionCenter.title`,{defaultValue:`Needs your attention`}),children:[!l&&(0,Q.jsx)(`div`,{className:`flex items-center gap-2 py-2 text-sm text-muted-foreground`,"data-testid":`home-action-unanswered`,children:r===`error`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(_n,{className:`h-4 w-4 text-amber-500`}),o(`errors.unknown`,{defaultValue:`An unexpected error occurred.`})]}):o(`common.loading`,{defaultValue:`Loading…`})}),c===0?l&&(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 py-2 text-sm text-muted-foreground`,children:[(0,Q.jsx)(Kn,{className:`h-4 w-4 text-emerald-500`}),o(`home.actionCenter.empty`,{defaultValue:`You're all caught up`})]}):(0,Q.jsxs)(`ul`,{className:`flex flex-col gap-0.5`,children:[e>0&&(0,Q.jsx)(nh,{icon:et,iconClass:`bg-amber-500/10 text-amber-600 dark:text-amber-400`,label:o(`notifications.approvalsPending`,{defaultValue:`{{count}} pending approvals`,count:e}),trailing:(0,Q.jsx)(ct,{className:`h-4 w-4 shrink-0 text-muted-foreground`}),onClick:i,testId:`home-action-approvals`}),t.map(e=>(0,Q.jsx)(nh,{icon:ut,iconClass:`bg-primary/10 text-primary`,label:e.title,meta:Lc(e.createdAt,s),onClick:()=>a(e)},e.id))]})]})}var ih={object:ar,record:fr,dashboard:Ve,page:Dr},ah={object:`bg-blue-500/10 text-blue-600 dark:text-blue-400`,record:`bg-amber-500/10 text-amber-600 dark:text-amber-400`,dashboard:`bg-violet-500/10 text-violet-600 dark:text-violet-400`,page:`bg-emerald-500/10 text-emerald-600 dark:text-emerald-400`};function oh({items:e,onOpen:t,t:n}){return(0,Q.jsx)(th,{icon:Zt,title:n(`home.recentApps.title`,{defaultValue:`Recently Accessed`}),children:e.length===0?(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:n(`home.continueEmpty`,{defaultValue:`Items you open will show up here.`})}):(0,Q.jsx)(`ul`,{className:`flex flex-col gap-0.5`,children:e.map(e=>(0,Q.jsx)(nh,{icon:ih[e.type]||fr,iconClass:ah[e.type]||`bg-muted text-muted-foreground`,label:e.label,meta:n(`home.recentApps.itemType.${e.type}`,{defaultValue:e.type}),onClick:()=>t(e.href)},e.id))})})}function sh({items:e,onViewAll:t,t:n}){let{language:r}=V();return(0,Q.jsxs)(th,{icon:q,title:n(`sidebar.activityFeed`,{defaultValue:`Activity feed`}),children:[e.length===0?(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:n(`layout.activityFeed.empty`,{defaultValue:`No recent activity`})}):(0,Q.jsx)(`ul`,{className:`flex flex-col gap-2.5`,children:e.slice(0,5).map(e=>(0,Q.jsxs)(`li`,{className:`text-sm leading-snug`,children:[(0,Q.jsx)(`span`,{className:`font-medium`,children:e.user}),` `,(0,Q.jsx)(`span`,{className:`text-muted-foreground`,children:e.description}),(0,Q.jsxs)(`div`,{className:`mt-0.5 text-[11px] text-muted-foreground`,children:[Lc(e.timestamp,r),` · `,e.objectName]})]},e.id))}),(0,Q.jsxs)(`button`,{type:`button`,onClick:t,className:`mt-3 inline-flex items-center gap-1 text-xs text-primary hover:underline`,children:[n(`layout.activityFeed.viewAll`,{defaultValue:`View all activity`}),(0,Q.jsx)(ct,{className:`h-3 w-3`})]})]})}function ch(e=5){let t=sl(),n=hl(e),{value:r,status:i}=yl();return{pendingApprovalsCount:t,notifications:(0,$.useMemo)(()=>{let t=new Set;return r.filter(e=>!e.is_read).filter(e=>(e.title??``).trim().length>0).map(e=>({id:e.id,title:String(e.title),actionUrl:e.action_url??void 0,createdAt:e.created_at??void 0})).filter(e=>!t.has(e.title)&&(t.add(e.title),!0)).slice(0,e)},[r,e]),unreadTopicCount:(0,$.useMemo)(()=>Rc(r).reduce((e,t)=>e+ +(t.unreadCount>0),0),[r]),notificationsStatus:i,activities:n}}function lh(){let e=(0,$.useMemo)(()=>Ua(),[]),{agents:t}=ka({apiBase:e});return{aiEnabled:t.length>0,askAvailable:t.some(e=>ja(e.name)),buildAvailable:t.some(e=>Ra(t,e.name,`authoring`))}}function uh({askAvailable:e,buildAvailable:t,navigate:n,t:r,layout:i=`row`}){return!e&&!t?null:(0,Q.jsxs)(`div`,{className:i===`stack`?`mt-6 flex flex-col sm:flex-row items-center gap-3`:`flex shrink-0 items-center gap-2`,children:[t&&(0,Q.jsxs)(Y,{onClick:()=>n(`/ai/build`),"data-testid":`home-build-with-ai`,children:[(0,Q.jsx)($t,{className:`mr-2 h-4 w-4`}),r(`home.buildWithAI`,{defaultValue:`Build with AI`})]}),e&&(0,Q.jsxs)(Y,{variant:t?`outline`:`default`,onClick:()=>n(`/ai/ask`),"data-testid":`home-ask-ai`,children:[(0,Q.jsx)(Ur,{className:`mr-2 h-4 w-4`}),r(`home.askAI`,{defaultValue:`Ask AI`})]})]})}function dh(e){return e<5?`home.greetingNight`:e<12?`home.greetingMorning`:e<18?`home.greetingAfternoon`:e<23?`home.greetingEvening`:`home.greetingNight`}function fh({t:e}){let t=Qo(),[n,r]=(0,$.useState)([]),{publishAll:i,publishing:a}=df(e),o=n.length;return(0,$.useEffect)(()=>{let e=!1;return Promise.resolve(t.listDrafts?.({})).then(t=>{e||!Array.isArray(t)||r(t.filter(e=>e&&typeof e.type==`string`&&typeof e.name==`string`).map(e=>({type:e.type,name:e.name})))}).catch(()=>{}),()=>{e=!0}},[t]),o<=0?null:(0,Q.jsx)(`div`,{className:`px-4 sm:px-6 lg:px-8 pt-4`,children:(0,Q.jsx)(`div`,{className:`max-w-7xl mx-auto`,children:(0,Q.jsxs)(`div`,{className:`flex items-center gap-3 rounded-xl border border-indigo-300/60 dark:border-indigo-700/50 bg-indigo-50 dark:bg-indigo-950/30 px-4 py-3`,children:[(0,Q.jsx)(pi,{className:`h-5 w-5 shrink-0 text-indigo-600 dark:text-indigo-400`}),(0,Q.jsx)(`p`,{className:`flex-1 min-w-0 text-sm text-indigo-900 dark:text-indigo-200`,children:e(`home.pendingDrafts.message`,{count:o,defaultValue:`You have {{count}} unpublished change(s) — publish to make them live.`})}),(0,Q.jsx)(Y,{size:`sm`,onClick:async()=>{(await i()).ok&&(r([]),setTimeout(()=>{try{window.location.reload()}catch{}},700))},disabled:a,"data-testid":`pending-drafts-publish`,children:a?e(`home.pendingDrafts.publishing`,{defaultValue:`Publishing…`}):e(`home.pendingDrafts.cta`,{defaultValue:`Publish`})})]})})})}function ph({t:e}){let t=a(),{hasLocalPassword:n,getAuthConfig:r}=T(),[i,o]=(0,$.useState)(!1);return(0,$.useEffect)(()=>{if(typeof localStorage<`u`&&localStorage.getItem(`os:recovery-pw-dismissed`)===`1`)return;if(typeof localStorage<`u`&&localStorage.getItem(`os:recovery-pw-first-seen`)!==`1`){try{localStorage.setItem(`os:recovery-pw-first-seen`,`1`)}catch{}return}let e=!1;return Promise.all([Promise.resolve(n?.()),Promise.resolve(r?.()).catch(()=>null)]).then(([t,n])=>{if(e)return;let r=n?.features?.ssoEnforced===!0||n?.emailPassword?.enabled===!1;t===!1&&!r&&o(!0)}).catch(()=>{}),()=>{e=!0}},[n,r]),i?(0,Q.jsx)(`div`,{className:`px-4 sm:px-6 lg:px-8 pt-4`,children:(0,Q.jsx)(`div`,{className:`max-w-7xl mx-auto`,children:(0,Q.jsxs)(`div`,{className:`flex items-center gap-3 rounded-xl border border-amber-300/60 dark:border-amber-700/50 bg-amber-50 dark:bg-amber-950/30 px-4 py-3`,children:[(0,Q.jsx)(ke,{className:`h-5 w-5 shrink-0 text-amber-600 dark:text-amber-400`}),(0,Q.jsx)(`p`,{className:`flex-1 min-w-0 text-sm text-amber-900 dark:text-amber-200`,children:e(`home.recoveryReminder.message`,{defaultValue:`Set a recovery password so you can still sign in if single sign-on is ever unavailable.`})}),(0,Q.jsx)(Y,{size:`sm`,variant:`outline`,onClick:()=>t(`/set-password`),"data-testid":`recovery-pw-set`,children:e(`home.recoveryReminder.cta`,{defaultValue:`Set password`})}),(0,Q.jsx)(`button`,{type:`button`,onClick:()=>{try{localStorage.setItem(`os:recovery-pw-dismissed`,`1`)}catch{}o(!1)},"aria-label":e(`home.recoveryReminder.dismiss`,{defaultValue:`Dismiss`}),className:`shrink-0 rounded-md p-1 text-amber-700/70 hover:text-amber-900 dark:text-amber-300/70 dark:hover:text-amber-100`,children:(0,Q.jsx)(Pn,{className:`h-4 w-4`})})]})})}):null}function mh(){let e=a(),{t}=V(),{apps:n,loading:r}=ae(),{recentItems:i}=Gi(),{favorites:o}=Xi(),{user:s}=T(),c=g(),{pendingApprovalsCount:l,notifications:u,unreadTopicCount:d,notificationsStatus:f,activities:p}=ch(),{currentAppName:m}=Ui(),{askAvailable:h,buildAvailable:_}=lh(),v=_a(n),y=ya(v,m),b=i.filter(e=>e.type===`object`||e.type===`dashboard`||e.type===`page`||e.type===`record`).slice(0,6),x=(0,$.useMemo)(()=>t(dh(new Date().getHours()),{defaultValue:`Welcome`}),[t]),S=(s?.name?.trim()||s?.email?.split(`@`)[0]||``).trim();return r?(0,Q.jsx)(`div`,{className:`flex flex-1 items-center justify-center py-20`,children:(0,Q.jsx)(`div`,{className:`text-muted-foreground`,children:t(`home.loading`,{defaultValue:`Loading workspace…`})})}):v.length===0?(0,Q.jsxs)(`div`,{className:`flex flex-col flex-1`,children:[(0,Q.jsx)(fh,{t}),(0,Q.jsx)(ph,{t}),(0,Q.jsx)(`div`,{className:`flex flex-1 items-center justify-center p-6`,children:c?(0,Q.jsxs)(vr,{children:[(0,Q.jsx)(ei,{children:t(`home.welcome`,{defaultValue:`Build your business system with AI`})}),(0,Q.jsx)(Qn,{children:_?t(`home.welcomeAdminDescription`,{defaultValue:`Describe your business in one sentence — AI generates the objects, screens, APIs and agent tools. Or set things up yourself from the menu on the left.`}):h?t(`home.welcomeAdminDescriptionNoBuild`,{defaultValue:`Set up your first application from the Administration menu on the left. Once you have data, the AI assistant can help you explore it.`}):t(`home.welcomeAdminDescriptionNoAi`,{defaultValue:`Set up your first application from the Administration menu on the left.`})}),(0,Q.jsx)(uh,{askAvailable:h,buildAvailable:_,navigate:e,t,layout:`stack`})]}):(0,Q.jsxs)(vr,{children:[(0,Q.jsx)(ei,{children:t(`home.noAppsTitle`,{defaultValue:`No applications yet`})}),(0,Q.jsx)(Qn,{children:t(`home.noAppsDescription`,{defaultValue:`Your workspace is being set up — apps your admin shares with you will show up here.`})})]})})]}):(0,Q.jsxs)(`div`,{className:`relative min-h-full bg-background`,children:[(0,Q.jsx)(fh,{t}),(0,Q.jsx)(ph,{t}),(0,Q.jsx)(`div`,{className:`px-4 sm:px-6 lg:px-8 pt-8 pb-16`,children:(0,Q.jsxs)(`div`,{className:`max-w-7xl mx-auto`,children:[(0,Q.jsxs)(`div`,{className:`mb-7 flex flex-col gap-4 lg:flex-row lg:items-center lg:justify-between`,children:[(0,Q.jsxs)(`div`,{className:`min-w-0`,children:[(0,Q.jsxs)(`h1`,{className:`text-2xl sm:text-3xl font-bold tracking-tight text-pretty`,children:[(0,Q.jsxs)(`span`,{className:`text-foreground`,children:[x,S?`, `:``]}),S&&(0,Q.jsx)(`span`,{className:`text-primary`,children:S}),(0,Q.jsx)(`span`,{className:`text-foreground/40`,children:`.`})]}),(0,Q.jsx)(`p`,{className:`mt-1 text-sm sm:text-base text-muted-foreground`,children:t(`home.heroTagline`,{defaultValue:`Pick up where you left off, or explore something new.`})})]}),(0,Q.jsx)(uh,{askAvailable:h,buildAvailable:_,navigate:e,t})]}),c&&(0,Q.jsxs)(`div`,{className:`mb-6 grid grid-cols-1 gap-3 sm:grid-cols-2`,children:[(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>e(`/studio`),className:`flex items-start gap-3 rounded-xl border bg-card px-4 py-3.5 text-left transition-colors hover:border-primary/50 hover:bg-muted/40`,children:[(0,Q.jsx)(`span`,{className:`mt-0.5 flex h-9 w-9 shrink-0 items-center justify-center rounded-lg bg-primary/10 text-primary`,children:(0,Q.jsx)(Gt,{className:`h-4.5 w-4.5`})}),(0,Q.jsxs)(`span`,{className:`min-w-0`,children:[(0,Q.jsx)(`span`,{className:`block text-sm font-semibold`,children:t(`home.build.title`,{defaultValue:`Build an app`})}),(0,Q.jsx)(`span`,{className:`mt-0.5 block text-xs text-muted-foreground`,children:t(`home.build.subtitle`,{defaultValue:`Start from scratch — design objects, forms, automations and interfaces.`})})]})]}),(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>e(`/apps/setup/system/marketplace`),className:`flex items-start gap-3 rounded-xl border bg-card px-4 py-3.5 text-left transition-colors hover:border-primary/50 hover:bg-muted/40`,children:[(0,Q.jsx)(`span`,{className:`mt-0.5 flex h-9 w-9 shrink-0 items-center justify-center rounded-lg bg-primary/10 text-primary`,children:(0,Q.jsx)(Vt,{className:`h-4.5 w-4.5`})}),(0,Q.jsxs)(`span`,{className:`min-w-0`,children:[(0,Q.jsx)(`span`,{className:`block text-sm font-semibold`,children:t(`home.template.title`,{defaultValue:`Start with a template`})}),(0,Q.jsx)(`span`,{className:`mt-0.5 block text-xs text-muted-foreground`,children:t(`home.template.subtitle`,{defaultValue:`Install a template app from the marketplace and customize it.`})})]})]})]}),(0,Q.jsx)(eh,{apps:v,favorites:o,onOpen:t=>e(`/apps/${va(t)??t.name}`),onBrowseMarketplace:()=>e(`/apps/setup/system/marketplace`),isAdmin:c}),(0,Q.jsx)(`div`,{className:`mb-6`,children:(0,Q.jsx)(rh,{pendingApprovalsCount:l,notifications:u,unreadTopicCount:d,notificationsStatus:f,onOpenApprovals:()=>e(`/apps/${y}/system/approvals`),onOpenNotification:t=>e(t.actionUrl||`/apps/${y}/sys_inbox_message?view=mine`),t})}),(0,Q.jsxs)(`div`,{className:`grid grid-cols-1 items-start gap-6 lg:grid-cols-[minmax(0,1fr)_360px]`,children:[(0,Q.jsx)(oh,{items:b,onOpen:t=>e(t),t}),(0,Q.jsx)(sh,{items:p,onViewAll:()=>e(`/apps/${y}/sys_activity`),t})]})]})})]})}function hh({children:e}){let{setContext:t}=Ui();return(0,$.useEffect)(()=>{t(`home`)},[t]),(0,Q.jsxs)(`div`,{className:`flex min-h-svh w-full flex-col bg-background`,"data-testid":`organizations-layout`,children:[(0,Q.jsx)(`header`,{className:`sticky top-0 z-30 flex h-14 w-full shrink-0 items-center gap-2 border-b bg-background px-2 sm:px-4`,children:(0,Q.jsx)(El,{variant:`orgs`})}),(0,Q.jsx)(`main`,{className:`flex-1 min-w-0 overflow-auto`,children:e})]})}async function gh(e){let t=await _()(`${To()}/api/v1/cloud/environments`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({displayName:e.displayName??`Production`,organizationId:e.organizationId})});if(!t.ok){if(t.status===403||t.status===409)return{alreadyProvisioned:!0};throw Error(`Failed to provision production environment (status ${t.status})`)}let n=(await t.json().catch(()=>null))?.data;if(!n||typeof n!=`object`)throw Error("Malformed control-plane response: expected a `{ success, data }` envelope from POST /cloud/environments");return n}var _h={YOU_ARE_NOT_ALLOWED_TO_INVITE_USERS_TO_THIS_ORGANIZATION:{key:`organization.errors.notAllowedToInvite`,defaultValue:`You are not allowed to invite users to this organization`},YOU_ARE_NOT_ALLOWED_TO_INVITE_USER_WITH_THIS_ROLE:{key:`organization.errors.notAllowedToInviteWithRole`,defaultValue:`You are not allowed to invite a user with this role`},USER_IS_ALREADY_INVITED_TO_THIS_ORGANIZATION:{key:`organization.errors.alreadyInvited`,defaultValue:`This user has already been invited to this organization`},ORGANIZATION_ALREADY_EXISTS:{key:`organization.errors.organizationExists`,defaultValue:`Organization already exists`},ORGANIZATION_SLUG_ALREADY_TAKEN:{key:`organization.errors.slugTaken`,defaultValue:`That URL slug is already taken`},YOU_ARE_NOT_ALLOWED_TO_CREATE_A_NEW_ORGANIZATION:{key:`organization.errors.notAllowedToCreate`,defaultValue:`You are not allowed to create a new organization`},YOU_ARE_NOT_THE_RECIPIENT_OF_THE_INVITATION:{key:`organization.errors.notTheRecipient`,defaultValue:`You are not the recipient of the invitation`},INVITATION_NOT_FOUND:{key:`organization.errors.invitationNotFound`,defaultValue:`This invitation no longer exists or has expired`}},vh={key:`organization.errors.unknown`,defaultValue:`Something went wrong. Please try again.`};function yh(e){if(typeof e!=`object`||!e)return;let t=e.code;return typeof t==`string`&&t?t:void 0}function bh(e,t,n){let r=yh(e);if(r){let e=_h[r];if(e)return t(e.key,{defaultValue:e.defaultValue})}let i=e instanceof Error?e.message:void 0;return typeof i==`string`&&i.trim()?i:n?t(n.key,{defaultValue:n.defaultValue}):t(vh.key,{defaultValue:vh.defaultValue})}function xh(e){let t=e.toLowerCase().replace(/[^a-z0-9\s_-]/g,``).replace(/[\s_]+/g,`-`).replace(/-+/g,`-`).replace(/^-|-$/g,``).slice(0,48);if(t)return t;let n=e.trim();if(!n)return``;let r=0;for(let e of n)r=Math.imul(r,31)+e.charCodeAt(0)>>>0;return`workspace-${r.toString(36).slice(0,6)}`}function Sh({open:e,onOpenChange:t,onCreated:n}){let{t:r}=V(),{createOrganization:i,getAuthConfig:a}=T(),[o,s]=(0,$.useState)(``),[c,l]=(0,$.useState)(``),[u,d]=(0,$.useState)(!1),[f,p]=(0,$.useState)(!1),[m,h]=(0,$.useState)(null),[g,_]=(0,$.useState)(!1);(0,$.useEffect)(()=>{if(!e)return;let t=!1;return a().then(e=>{t||_(e?.features?.multiOrgEnabled===!1)}).catch(()=>{}),()=>{t=!0}},[e,a]),(0,$.useEffect)(()=>{u||l(xh(o))},[o,u]),(0,$.useEffect)(()=>{e&&(s(``),l(``),d(!1),h(null))},[e]);let v=(0,$.useCallback)(async e=>{if(e.preventDefault(),!(!o.trim()||!c.trim())){if(g){h(r(`workspace.multiOrgDisabled`,{defaultValue:`Creating new organizations is disabled on this instance.`}));return}p(!0),h(null);try{let e=await i({name:o.trim(),slug:c.trim()});try{await gh({organizationId:e.id,displayName:o.trim()})}catch(e){console.warn(`[CreateWorkspace] eager env provision failed; onboarding gate will provision lazily`,e)}n?.(e)}catch(e){h(bh(e,r,{key:`workspace.createFailed`,defaultValue:`Failed to create workspace`}))}finally{p(!1)}}},[o,c,g,r,i,n]);return(0,Q.jsx)(Xn,{open:e,onOpenChange:t,children:(0,Q.jsx)(Gn,{className:`sm:max-w-[425px]`,"data-testid":`create-workspace-dialog`,children:(0,Q.jsxs)(`form`,{onSubmit:v,children:[(0,Q.jsxs)(si,{children:[(0,Q.jsx)(Sn,{children:r(`workspace.createTitle`,{defaultValue:`Create a workspace`})}),(0,Q.jsx)(gn,{children:r(`workspace.createDescription`,{defaultValue:`A workspace is a shared space for your team to collaborate.`})})]}),(0,Q.jsxs)(`div`,{className:`grid gap-4 py-4`,children:[(0,Q.jsxs)(`div`,{className:`grid gap-2`,children:[(0,Q.jsx)(ft,{htmlFor:`workspace-name`,children:r(`workspace.nameLabel`,{defaultValue:`Workspace name`})}),(0,Q.jsx)(St,{id:`workspace-name`,placeholder:r(`workspace.namePlaceholder`,{defaultValue:`e.g., Acme Inc`}),value:o,onChange:e=>s(e.target.value),autoFocus:!0,"data-testid":`workspace-name-input`})]}),(0,Q.jsxs)(`div`,{className:`grid gap-2`,children:[(0,Q.jsx)(ft,{htmlFor:`workspace-slug`,children:r(`workspace.slugLabel`,{defaultValue:`URL slug`})}),(0,Q.jsx)(St,{id:`workspace-slug`,placeholder:`acme-inc`,value:c,onChange:e=>{l(e.target.value),d(!0)},"data-testid":`workspace-slug-input`}),(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:r(`workspace.slugHint`,{defaultValue:`Used in URLs. Only lowercase letters, numbers, and hyphens.`})})]}),m&&(0,Q.jsx)(`p`,{className:`text-sm text-destructive`,"data-testid":`workspace-create-error`,children:m})]}),(0,Q.jsxs)($r,{children:[(0,Q.jsx)(Y,{type:`button`,variant:`outline`,onClick:()=>t(!1),disabled:f,children:r(`common.cancel`,{defaultValue:`Cancel`})}),(0,Q.jsxs)(Y,{type:`submit`,disabled:f||!o.trim()||!c.trim(),"data-testid":`workspace-create-submit`,children:[f&&(0,Q.jsx)(J,{className:`mr-2 h-4 w-4 animate-spin`}),r(`workspace.createButton`,{defaultValue:`Create workspace`})]})]})]})})})}function Ch(e){return e.split(/[\s_-]+/).map(e=>e[0]).join(``).toUpperCase().slice(0,2)}function wh(){let{t:e}=V(),t=a(),[n]=s(),r=n.get(`manage`)===`1`,i=n.get(`create`)===`1`,{organizations:o,activeOrganization:c,isOrganizationsLoading:l,switchOrganization:u,getAuthConfig:d}=T(),[f,p]=(0,$.useState)(``),[m,h]=(0,$.useState)(!1),[g,_]=(0,$.useState)(null),[v,y]=(0,$.useState)(!0);(0,$.useEffect)(()=>{let e=!1;return d().then(t=>{e||t?.features?.multiOrgEnabled===!1&&y(!1)}).catch(()=>{}),()=>{e=!0}},[d]);let b=o??[],x=(0,$.useMemo)(()=>{let e=f.trim().toLowerCase();return e?b.filter(t=>t.name.toLowerCase().includes(e)||t.slug?.toLowerCase().includes(e)):b},[b,f]),S=async e=>{_(e.id);try{e.id!==c?.id&&await u(e.id),window.location.href=Dc()}catch(e){console.error(`[OrganizationsPage] Failed to switch:`,e),_(null)}},C=e=>{h(!1),S(e)},w=(0,$.useRef)(!1);(0,$.useEffect)(()=>{w.current||l||i||b.length===1&&(w.current=!0,r?t(`/organizations/${b[0].slug}/members`,{replace:!0}):S(b[0]))},[l,b.length,r,i]);let E=(0,$.useRef)(!1);(0,$.useEffect)(()=>{if(l)return;let e=b.length===0&&v;(i||e)&&!E.current&&(E.current=!0,h(!0))},[i,b.length,v,l]);let D=!i&&!l&&b.length===1,O=!l&&b.length===0&&v&&!E.current;return l||D||O?(0,Q.jsx)(`div`,{className:`flex flex-1 items-center justify-center py-20`,children:(0,Q.jsx)(J,{className:`h-5 w-5 animate-spin text-muted-foreground`})}):(0,Q.jsxs)(`div`,{className:`mx-auto w-full max-w-5xl px-4 sm:px-6 py-8 sm:py-12`,children:[(0,Q.jsxs)(`div`,{className:`mb-8`,children:[(0,Q.jsx)(`h1`,{className:`text-2xl sm:text-3xl font-bold tracking-tight`,children:e(`organizations.heading`,{defaultValue:`Your Workspaces`})}),(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1`,children:e(`organizations.subtitle`,{defaultValue:`Select a workspace to continue, or create a new one.`})})]}),(0,Q.jsxs)(`div`,{className:`mb-6 flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between`,children:[(0,Q.jsxs)(`div`,{className:`relative w-full sm:max-w-sm`,children:[(0,Q.jsx)($n,{className:`pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground`}),(0,Q.jsx)(St,{value:f,onChange:e=>p(e.target.value),placeholder:e(`organizations.searchPlaceholder`,{defaultValue:`Search for a workspace`}),className:`pl-9`,"data-testid":`organizations-search`})]}),v&&(0,Q.jsxs)(Y,{onClick:()=>h(!0),"data-testid":`organizations-new`,children:[(0,Q.jsx)(Ue,{className:`mr-2 h-4 w-4`}),e(`organizations.new`,{defaultValue:`New workspace`})]})]}),b.length===0?(0,Q.jsxs)(vr,{children:[(0,Q.jsx)(ei,{children:e(`organizations.emptyTitle`,{defaultValue:`No workspaces yet`})}),(0,Q.jsx)(Qn,{children:e(`organizations.emptyDescription`,{defaultValue:`Create your first workspace to get started.`})}),v&&(0,Q.jsxs)(Y,{className:`mt-6`,onClick:()=>h(!0),children:[(0,Q.jsx)(Ue,{className:`mr-2 h-4 w-4`}),e(`organizations.new`,{defaultValue:`New workspace`})]})]}):x.length===0?(0,Q.jsx)(`div`,{className:`rounded-lg border border-dashed p-8 text-center text-sm text-muted-foreground`,children:e(`organizations.noMatches`,{defaultValue:`No workspaces match your search.`})}):(0,Q.jsx)(`div`,{className:`grid grid-cols-1 gap-3 sm:grid-cols-2`,children:x.map(n=>{let r=n.id===c?.id,i=g===n.id;return(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>S(n),disabled:i,className:`group flex items-center gap-3 rounded-lg border bg-card p-4 text-left transition-colors hover:border-primary/50 hover:bg-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:opacity-60`,"data-testid":`organization-card-${n.slug}`,children:[(0,Q.jsxs)(vt,{className:`h-10 w-10 rounded-md shrink-0`,children:[n.logo&&(0,Q.jsx)(Dt,{src:n.logo,alt:n.name}),(0,Q.jsx)(Ct,{className:`rounded-md bg-primary/10 text-primary text-sm font-medium`,children:Ch(n.name)})]}),(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Q.jsx)(`div`,{className:`truncate font-medium`,children:n.name}),(0,Q.jsx)(`div`,{className:`truncate text-xs text-muted-foreground`,children:r?e(`organizations.current`,{defaultValue:`Current workspace`}):n.slug})]}),(0,Q.jsx)(`span`,{className:`text-xs text-primary underline-offset-4 hover:underline shrink-0`,onClick:e=>{e.stopPropagation(),t(`/organizations/${n.slug}/members`)},children:e(`organizations.manage`,{defaultValue:`Manage`})}),i&&(0,Q.jsx)(J,{className:`h-4 w-4 animate-spin text-muted-foreground`})]},n.id)})}),(0,Q.jsx)(Sh,{open:m,onOpenChange:h,onCreated:C})]})}function Th(){let{t:e}=V(),t=a(),{slug:n}=l(),{organizations:i,activeOrganization:o,isOrganizationsLoading:s,switchOrganization:c}=T(),{setContext:d}=Ui();(0,$.useEffect)(()=>{d(`home`)},[d]);let f=(0,$.useMemo)(()=>(i??[]).find(e=>e.slug===n)??null,[i,n]);if((0,$.useEffect)(()=>{f&&o?.id!==f.id&&c(f.id).catch(e=>{console.error(`[OrganizationLayout] switch failed`,e)})},[f,o,c]),s)return(0,Q.jsx)(`div`,{className:`flex min-h-svh w-full items-center justify-center`,children:(0,Q.jsx)(J,{className:`h-5 w-5 animate-spin text-muted-foreground`})});if(!f)return(0,Q.jsxs)(`div`,{className:`mx-auto w-full max-w-3xl px-4 py-12 text-center`,children:[(0,Q.jsx)(`h1`,{className:`text-xl font-semibold`,children:e(`organization.notFound`,{defaultValue:`Organization not found`})}),(0,Q.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground`,children:e(`organization.notFoundDescription`,{defaultValue:`This organization does not exist or you do not have access.`})}),(0,Q.jsx)(Y,{className:`mt-6`,onClick:()=>t(`/organizations`),children:e(`organization.backToList`,{defaultValue:`Back to organizations`})})]});let p=[{to:`members`,label:e(`organization.tabs.members`,{defaultValue:`Members`})},{to:`invitations`,label:e(`organization.tabs.invitations`,{defaultValue:`Invitations`})},{to:`settings`,label:e(`organization.tabs.settings`,{defaultValue:`Settings`})}];return(0,Q.jsxs)(`div`,{className:`flex min-h-svh w-full flex-col bg-background`,"data-testid":`organization-layout`,children:[(0,Q.jsx)(`header`,{className:`sticky top-0 z-30 flex h-14 w-full shrink-0 items-center gap-2 border-b bg-background px-2 sm:px-4`,children:(0,Q.jsx)(El,{variant:`orgs`})}),(0,Q.jsx)(`div`,{className:`border-b`,children:(0,Q.jsxs)(`div`,{className:`mx-auto w-full max-w-5xl px-4 sm:px-6 pt-6`,children:[(i??[]).length>1&&(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>t(`/organizations`),className:`mb-3 inline-flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground`,children:[(0,Q.jsx)(ot,{className:`h-3.5 w-3.5`}),e(`organization.backToList`,{defaultValue:`Back to organizations`})]}),(0,Q.jsx)(`div`,{className:`flex items-center justify-between gap-4`,children:(0,Q.jsxs)(`div`,{className:`min-w-0`,children:[(0,Q.jsx)(`h1`,{className:`truncate text-2xl font-bold tracking-tight`,children:f.name}),(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:f.slug})]})}),(0,Q.jsx)(`nav`,{className:`mt-4 flex gap-1 -mb-px`,children:p.map(e=>(0,Q.jsx)(u,{to:e.to,end:!0,className:({isActive:e})=>`border-b-2 px-3 py-2 text-sm font-medium transition-colors ${e?`border-primary text-foreground`:`border-transparent text-muted-foreground hover:text-foreground`}`,children:e.label},e.to))})]})}),(0,Q.jsx)(`main`,{className:`flex-1 min-w-0 overflow-auto`,children:(0,Q.jsx)(`div`,{className:`mx-auto w-full max-w-5xl px-4 sm:px-6 py-6`,children:(0,Q.jsx)(r,{context:{org:f}})})})]})}function Eh(){return d()}function Dh(e){return Object.prototype.hasOwnProperty.call(C,e)}function Oh(e,t){if(typeof e!=`string`)return``;let n=e.trim();if(!n)return``;if(!Dh(n))return n;let r=C[n];return t(r.key,{defaultValue:r.defaultValue})}function kh({organizationId:e,open:t,onOpenChange:n,onInvited:r}){let{t:i}=V(),{inviteMember:a,describeDelegableScope:o,activeMember:s}=T(),c=b(s?.role),[l,u]=(0,$.useState)(``),[d,f]=(0,$.useState)(k),[p,m]=(0,$.useState)(!1),[h,g]=(0,$.useState)(null),[_,v]=(0,$.useState)(null),[y,x]=(0,$.useState)(!1),[S,C]=(0,$.useState)(null),[w,E]=(0,$.useState)(``),[D,O]=(0,$.useState)([]);(0,$.useEffect)(()=>{t&&(u(``),f(k),g(null),v(null),x(!1),E(``),O([]))},[t]),(0,$.useEffect)(()=>{if(!t)return;let e=!1;return o?.().then(t=>{e||C(t)}).catch(()=>{}),()=>{e=!0}},[t,o]);let A=!!S&&S.placeableBusinessUnitIds.length>0&&S.assignablePositions.length>0,j=(0,$.useCallback)(async t=>{if(t.preventDefault(),l.trim()){m(!0),g(null);try{let t=await a({organizationId:e,email:l.trim(),role:d,...A&&w&&D.length>0?{businessUnitId:w,positions:D}:{}});v(t),r?.(t)}catch(e){g(bh(e,i,{key:`organization.invitations.inviteFailed`,defaultValue:`Failed to invite member`}))}finally{m(!1)}}},[l,d,e,a,r,A,w,D,i]),M=_?Oc(`accept-invitation/${_.id}`):null,N=(0,$.useCallback)(async()=>{if(M)try{await navigator.clipboard.writeText(M),x(!0),X.success(i(`organization.invitations.linkCopied`,{defaultValue:`Invitation link copied`})),setTimeout(()=>x(!1),2e3)}catch{X.error(i(`organization.invitations.copyFailed`,{defaultValue:`Failed to copy link`}))}},[M,i]);return(0,Q.jsx)(Xn,{open:t,onOpenChange:n,children:(0,Q.jsx)(Gn,{className:`sm:max-w-[480px]`,"data-testid":`invite-member-dialog`,children:_?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(si,{children:[(0,Q.jsx)(Sn,{children:i(`organization.invitations.sentTitle`,{defaultValue:`Invitation created`})}),(0,Q.jsx)(gn,{children:i(`organization.invitations.sentDescription`,{defaultValue:`Share the link below with the invitee. They will need to sign in to accept.`})})]}),(0,Q.jsxs)(`div`,{className:`grid gap-3 py-4`,children:[(0,Q.jsx)(ft,{children:i(`organization.invitations.linkLabel`,{defaultValue:`Accept link`})}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(St,{readOnly:!0,value:M??``,className:`font-mono text-xs`,onFocus:e=>e.currentTarget.select()}),(0,Q.jsx)(Y,{type:`button`,variant:`outline`,size:`icon`,onClick:N,"aria-label":i(`organization.invitations.copyLinkLabel`,{defaultValue:`Copy invitation link`}),children:y?(0,Q.jsx)(pr,{className:`h-4 w-4`}):(0,Q.jsx)(wt,{className:`h-4 w-4`})})]}),(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:i(`organization.invitations.invitedAs`,{defaultValue:`{{email}} invited as {{role}}`,email:_.email,role:Oh(_.role,i)})})]}),(0,Q.jsx)($r,{children:(0,Q.jsx)(Y,{onClick:()=>n(!1),children:i(`common.done`,{defaultValue:`Done`})})})]}):(0,Q.jsxs)(`form`,{onSubmit:j,children:[(0,Q.jsxs)(si,{children:[(0,Q.jsx)(Sn,{children:i(`organization.invitations.inviteTitle`,{defaultValue:`Invite a member`})}),(0,Q.jsx)(gn,{children:i(`organization.invitations.inviteDescription`,{defaultValue:`They will receive an invitation to join this organization.`})})]}),(0,Q.jsxs)(`div`,{className:`grid gap-4 py-4`,children:[(0,Q.jsxs)(`div`,{className:`grid gap-2`,children:[(0,Q.jsx)(ft,{htmlFor:`invite-email`,children:i(`organization.invitations.emailLabel`,{defaultValue:`Email`})}),(0,Q.jsx)(St,{id:`invite-email`,type:`email`,required:!0,placeholder:`user@example.com`,value:l,onChange:e=>u(e.target.value),autoFocus:!0,"data-testid":`invite-email-input`})]}),(0,Q.jsxs)(`div`,{className:`grid gap-2`,children:[(0,Q.jsx)(ft,{htmlFor:`invite-role`,children:i(`organization.invitations.roleLabel`,{defaultValue:`Role`})}),(0,Q.jsxs)(ii,{value:d,onValueChange:e=>f(e),children:[(0,Q.jsx)(ni,{id:`invite-role`,"data-testid":`invite-role-select`,children:(0,Q.jsx)(Bt,{})}),(0,Q.jsx)(Rt,{children:c.map(e=>(0,Q.jsx)(Re,{value:e,"data-testid":`invite-role-${e}`,children:Oh(e,i)},e))})]})]}),A&&(0,Q.jsxs)(`div`,{className:`grid gap-3 rounded-md border border-dashed p-3`,"data-testid":`invite-placement-section`,children:[(0,Q.jsxs)(`div`,{className:`grid gap-1`,children:[(0,Q.jsx)(ft,{className:`text-sm`,children:i(`organization.invitations.placementLabel`,{defaultValue:`Placement (optional)`})}),(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:i(`organization.invitations.placementDescription`,{defaultValue:`Applied when the invitation is accepted. Only units and positions you may delegate are listed.`})})]}),(0,Q.jsxs)(`div`,{className:`grid gap-2`,children:[(0,Q.jsx)(ft,{htmlFor:`invite-business-unit`,className:`text-xs`,children:i(`organization.invitations.businessUnitLabel`,{defaultValue:`Business unit`})}),(0,Q.jsxs)(ii,{value:w,onValueChange:E,children:[(0,Q.jsx)(ni,{id:`invite-business-unit`,"data-testid":`invite-business-unit-select`,children:(0,Q.jsx)(Bt,{placeholder:i(`organization.invitations.businessUnitPlaceholder`,{defaultValue:`No placement`})})}),(0,Q.jsx)(Rt,{children:S.placeableBusinessUnitIds.map(e=>(0,Q.jsx)(Re,{value:e,children:e},e))})]})]}),w&&(0,Q.jsxs)(`div`,{className:`grid gap-2`,"data-testid":`invite-positions`,children:[(0,Q.jsx)(ft,{className:`text-xs`,children:i(`organization.invitations.positionsLabel`,{defaultValue:`Positions`})}),(0,Q.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:S.assignablePositions.map(e=>{let t=D.includes(e);return(0,Q.jsx)(Y,{type:`button`,size:`sm`,variant:t?`default`:`outline`,"data-testid":`invite-position-${e}`,"aria-pressed":t,onClick:()=>O(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e]),children:e},e)})})]})]}),h&&(0,Q.jsx)(`p`,{className:`text-sm text-destructive`,"data-testid":`invite-error`,children:h})]}),(0,Q.jsxs)($r,{children:[(0,Q.jsx)(Y,{type:`button`,variant:`outline`,onClick:()=>n(!1),disabled:p,children:i(`common.cancel`,{defaultValue:`Cancel`})}),(0,Q.jsxs)(Y,{type:`submit`,disabled:p||!l.trim(),"data-testid":`invite-submit`,children:[p&&(0,Q.jsx)(J,{className:`mr-2 h-4 w-4 animate-spin`}),i(`organization.invitations.sendInvite`,{defaultValue:`Send invite`})]})]})]})})})}var Ah=w(j);function jh(e){return typeof e==`string`?e.split(`,`).map(e=>e.trim().toLowerCase()).filter(Boolean):[]}function Mh(e){return w(e)>=Ah||jh(e).includes(M)}function Nh(e){return w(e)>=Ah}function Ph(e){return w(e)>=Ah}function Fh(e){return e?e.split(/[\s_-]+/).map(e=>e[0]).join(``).toUpperCase().slice(0,2):`?`}function Ih(){let{t:e}=V(),{org:t}=Eh(),{getMembers:n,removeMember:r,updateMemberRole:i,activeMember:a}=T(),o=Mh(a?.role),s=Nh(a?.role),[c,l]=(0,$.useState)([]),[u,d]=(0,$.useState)(!0),[f,p]=(0,$.useState)(null),[m,h]=(0,$.useState)(!1),[g,_]=(0,$.useState)(null),y=(0,$.useCallback)(async()=>{d(!0),p(null);try{let e=await n(t.id);l(e)}catch(t){p(bh(t,e,{key:`organization.members.loadFailed`,defaultValue:`Failed to load members`}))}finally{d(!1)}},[t.id,n,e]);(0,$.useEffect)(()=>{y()},[y]);let b=async(n,r)=>{try{await i({organizationId:t.id,memberId:n.id,role:r}),X.success(e(`organization.members.roleUpdated`,{defaultValue:`Role updated`})),y()}catch(t){X.error(bh(t,e,{key:`organization.members.roleUpdateFailed`,defaultValue:`Failed to update role`}))}};return u?(0,Q.jsx)(`div`,{className:`flex items-center justify-center py-20`,children:(0,Q.jsx)(J,{className:`h-5 w-5 animate-spin text-muted-foreground`})}):f?(0,Q.jsxs)(`div`,{className:`rounded-lg border border-destructive/50 bg-destructive/10 p-6 text-center text-sm text-destructive`,children:[f,(0,Q.jsx)(Y,{variant:`outline`,size:`sm`,className:`ml-4`,onClick:y,children:e(`common.retry`,{defaultValue:`Retry`})})]}):(0,Q.jsxs)(`div`,{className:`space-y-4`,"data-testid":`members-page`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Q.jsxs)(`h2`,{className:`text-lg font-semibold`,children:[e(`organization.members.title`,{defaultValue:`Members`}),` (`,c.length,`)`]}),o?(0,Q.jsx)(Y,{onClick:()=>h(!0),"data-testid":`invite-member-btn`,children:e(`organization.members.inviteMember`,{defaultValue:`Invite member`})}):(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,"data-testid":`invite-restricted-note`,children:e(`organization.members.inviteRestrictedNote`,{defaultValue:`Only organization admins can invite members.`})})]}),(0,Q.jsx)(xn,{}),(0,Q.jsx)(`div`,{className:`space-y-2`,children:c.map(t=>{let n=v(a?.role,t.role),r=n.length>0||s;return(0,Q.jsxs)(`div`,{className:`flex items-center gap-3 rounded-lg border bg-card p-3`,"data-testid":`member-row-${t.id}`,children:[(0,Q.jsxs)(vt,{className:`h-9 w-9 shrink-0`,children:[t.user?.image&&(0,Q.jsx)(Dt,{src:t.user.image,alt:t.user.name}),(0,Q.jsx)(Ct,{className:`text-xs font-medium`,children:Fh(t.user?.name)})]}),(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Q.jsx)(`div`,{className:`truncate font-medium text-sm`,children:t.user?.name??`—`}),(0,Q.jsx)(`div`,{className:`truncate text-xs text-muted-foreground`,children:t.user?.email??`—`})]}),(0,Q.jsx)(ir,{variant:`outline`,className:`shrink-0`,"data-testid":`member-role-badge-${t.id}`,children:Oh(t.role,e)}),t.createdAt&&(0,Q.jsx)(`span`,{className:`hidden shrink-0 text-xs text-muted-foreground sm:block`,children:new Date(t.createdAt).toLocaleDateString()}),r&&(0,Q.jsxs)(Nt,{children:[(0,Q.jsx)(Fr,{asChild:!0,children:(0,Q.jsx)(Y,{variant:`ghost`,size:`icon`,className:`h-8 w-8 shrink-0`,"aria-label":e(`organization.members.memberActions`,{defaultValue:`Member actions`}),children:(0,Q.jsx)(ze,{className:`h-4 w-4`})})}),(0,Q.jsxs)(ui,{align:`end`,children:[n.map(n=>(0,Q.jsxs)(Yt,{onClick:()=>b(t,n),disabled:t.role===n,"data-testid":`member-role-${n}`,children:[(0,Q.jsx)(At,{className:`mr-2 h-4 w-4`}),e(C[n].key,{defaultValue:C[n].defaultValue})]},n)),s&&(0,Q.jsxs)(Yt,{className:`text-destructive focus:text-destructive`,onClick:()=>_(t),children:[(0,Q.jsx)(qr,{className:`mr-2 h-4 w-4`}),e(`organization.members.removeMember`,{defaultValue:`Remove member`})]})]})]})]},t.id)})}),(0,Q.jsx)(Pt,{open:!!g,onOpenChange:e=>!e&&_(null),children:(0,Q.jsxs)(Xt,{children:[(0,Q.jsxs)(en,{children:[(0,Q.jsx)(Qe,{children:e(`organization.members.removeConfirmTitle`,{defaultValue:`Remove member?`})}),(0,Q.jsx)(nt,{children:e(`organization.members.removeConfirmDescription`,{defaultValue:`This will remove {{name}} from the organization. They will lose access immediately.`,name:g?.user?.name??g?.userId??``})})]}),(0,Q.jsxs)(Kt,{children:[(0,Q.jsx)(Ie,{children:e(`common.cancel`,{defaultValue:`Cancel`})}),(0,Q.jsx)(fi,{className:`bg-destructive text-destructive-foreground hover:bg-destructive/90`,onClick:async()=>{if(g)try{await r({organizationId:t.id,memberIdOrUserId:g.id}),X.success(e(`organization.members.memberRemoved`,{defaultValue:`Member removed`})),_(null),y()}catch(t){X.error(bh(t,e,{key:`organization.members.removeFailed`,defaultValue:`Failed to remove member`}))}},children:e(`organization.members.removeConfirmAction`,{defaultValue:`Remove`})})]})]})}),o&&(0,Q.jsx)(kh,{organizationId:t.id,open:m,onOpenChange:h,onInvited:()=>y()})]})}function Lh(e){switch(e){case`pending`:return`outline`;case`accepted`:return`default`;case`rejected`:case`canceled`:return`destructive`;default:return`secondary`}}function Rh(){let{t:e}=V(),{org:t}=Eh(),{listInvitations:n,cancelInvitation:r,activeMember:i}=T(),a=Ph(i?.role),o=Mh(i?.role),[s,c]=(0,$.useState)([]),[l,u]=(0,$.useState)(!0),[d,f]=(0,$.useState)(null),[p,m]=(0,$.useState)(`all`),[h,g]=(0,$.useState)(null),[_,v]=(0,$.useState)(null),y=(0,$.useCallback)(async()=>{u(!0),f(null);try{let e=await n(t.id);c(e)}catch(t){f(bh(t,e,{key:`organization.invitations.loadFailed`,defaultValue:`Failed to load invitations`}))}finally{u(!1)}},[t.id,n,e]);(0,$.useEffect)(()=>{y()},[y]);let b=async t=>{let n=Oc(`accept-invitation/${t.id}`);try{await navigator.clipboard.writeText(n),v(t.id),X.success(e(`organization.invitations.linkCopied`,{defaultValue:`Invitation link copied`})),setTimeout(()=>v(null),2e3)}catch{X.error(e(`organization.invitations.copyFailed`,{defaultValue:`Failed to copy link`}))}},x=async()=>{if(h)try{await r(h.id),X.success(e(`organization.invitations.canceled`,{defaultValue:`Invitation canceled`})),g(null),y()}catch(t){X.error(bh(t,e,{key:`organization.invitations.cancelFailed`,defaultValue:`Failed to cancel invitation`}))}},S=p===`all`?s:s.filter(e=>e.status===p),C={all:s.length,pending:s.filter(e=>e.status===`pending`).length,accepted:s.filter(e=>e.status===`accepted`).length,rejected:s.filter(e=>e.status===`rejected`).length,canceled:s.filter(e=>e.status===`canceled`).length};return l?(0,Q.jsx)(`div`,{className:`flex items-center justify-center py-20`,children:(0,Q.jsx)(J,{className:`h-5 w-5 animate-spin text-muted-foreground`})}):d?(0,Q.jsxs)(`div`,{className:`rounded-lg border border-destructive/50 bg-destructive/10 p-6 text-center text-sm text-destructive`,children:[d,(0,Q.jsx)(Y,{variant:`outline`,size:`sm`,className:`ml-4`,onClick:y,children:e(`common.retry`,{defaultValue:`Retry`})})]}):(0,Q.jsxs)(`div`,{className:`space-y-4`,"data-testid":`invitations-page`,children:[(0,Q.jsx)(`div`,{className:`flex items-center justify-between`,children:(0,Q.jsx)(`h2`,{className:`text-lg font-semibold`,children:e(`organization.invitations.title`,{defaultValue:`Invitations`})})}),(0,Q.jsx)(`div`,{className:`flex gap-1 border-b`,children:[`all`,`pending`,`accepted`,`rejected`,`canceled`].map(t=>(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>m(t),className:`px-3 py-2 text-sm font-medium border-b-2 transition-colors capitalize ${p===t?`border-primary text-foreground`:`border-transparent text-muted-foreground hover:text-foreground`}`,children:[e(`organization.invitations.status.${t}`,{defaultValue:t}),C[t]>0&&(0,Q.jsx)(`span`,{className:`ml-1.5 rounded-full bg-muted px-1.5 py-0.5 text-xs`,children:C[t]})]},t))}),(0,Q.jsx)(xn,{}),S.length===0?(0,Q.jsx)(`div`,{className:`rounded-lg border border-dashed p-8 text-center text-sm text-muted-foreground`,children:e(`organization.invitations.empty`,{defaultValue:`No invitations found.`})}):(0,Q.jsx)(`div`,{className:`space-y-2`,children:S.map(t=>(0,Q.jsxs)(`div`,{className:`flex items-center gap-3 rounded-lg border bg-card p-3`,"data-testid":`invitation-row-${t.id}`,children:[(0,Q.jsx)(vt,{className:`h-9 w-9 shrink-0`,children:(0,Q.jsx)(Ct,{className:`text-xs`,children:(0,Q.jsx)(Mr,{className:`h-4 w-4`})})}),(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Q.jsx)(`div`,{className:`truncate font-medium text-sm`,children:t.email}),t.expiresAt&&(0,Q.jsxs)(`div`,{className:`text-xs text-muted-foreground`,children:[e(`organization.invitations.expiresAt`,{defaultValue:`Expires`}),` `,new Date(t.expiresAt).toLocaleDateString()]})]}),(0,Q.jsx)(ir,{variant:`outline`,className:`shrink-0`,"data-testid":`invitation-role-badge-${t.id}`,children:Oh(t.role,e)}),(0,Q.jsx)(ir,{variant:Lh(t.status),className:`shrink-0 capitalize`,children:e(`organization.invitations.status.${t.status}`,{defaultValue:t.status})}),t.status===`pending`&&(o||a)&&(0,Q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,children:[o&&(0,Q.jsx)(Y,{variant:`ghost`,size:`icon`,className:`h-8 w-8`,onClick:()=>b(t),"aria-label":e(`organization.invitations.copyLinkLabel`,{defaultValue:`Copy invitation link`}),children:_===t.id?(0,Q.jsx)(pr,{className:`h-4 w-4 text-green-600`}):(0,Q.jsx)(wt,{className:`h-4 w-4`})}),a&&(0,Q.jsx)(Y,{variant:`ghost`,size:`icon`,className:`h-8 w-8 text-destructive hover:text-destructive`,onClick:()=>g(t),"aria-label":e(`organization.invitations.cancelAction`,{defaultValue:`Cancel invitation`}),children:(0,Q.jsx)(Pn,{className:`h-4 w-4`})})]})]},t.id))}),(0,Q.jsx)(Pt,{open:!!h,onOpenChange:e=>!e&&g(null),children:(0,Q.jsxs)(Xt,{children:[(0,Q.jsxs)(en,{children:[(0,Q.jsx)(Qe,{children:e(`organization.invitations.cancelTitle`,{defaultValue:`Cancel invitation?`})}),(0,Q.jsx)(nt,{children:e(`organization.invitations.cancelDescription`,{defaultValue:`The invitation for {{email}} will be revoked.`,email:h?.email??``})})]}),(0,Q.jsxs)(Kt,{children:[(0,Q.jsx)(Ie,{children:e(`common.cancel`,{defaultValue:`Cancel`})}),(0,Q.jsx)(fi,{className:`bg-destructive text-destructive-foreground hover:bg-destructive/90`,onClick:x,children:e(`organization.invitations.cancelAction`,{defaultValue:`Cancel invitation`})})]})]})})]})}function zh(){let{t:e}=V(),{org:t}=Eh(),{user:n,getMembers:r,updateOrganization:i,deleteOrganization:o,leaveOrganization:s}=T(),c=a(),[l,u]=(0,$.useState)(t.name),[d,f]=(0,$.useState)(t.slug??``),[p,m]=(0,$.useState)(t.logo??``),[h,g]=(0,$.useState)(!1),[_,v]=(0,$.useState)(!1),y=(0,$.useRef)(null),{upload:b}=He(),[x,S]=(0,$.useState)(null),[C,w]=(0,$.useState)(!0),[E,D]=(0,$.useState)(!1),[O,k]=(0,$.useState)(!1),[A,j]=(0,$.useState)(``),[M,N]=(0,$.useState)(!1);(0,$.useEffect)(()=>{u(t.name),f(t.slug??``),m(t.logo??``)},[t]),(0,$.useEffect)(()=>{let e=!1;return w(!0),r(t.id).then(t=>{if(e)return;let r=t.find(e=>e.userId===n?.id);S(r?.role===`owner`)}).catch(()=>{e||S(!1)}).finally(()=>{e||w(!1)}),()=>{e=!0}},[t.id,n?.id,r]);let ee=(0,$.useCallback)(async n=>{n.preventDefault(),g(!0);try{await i(t.id,{name:l.trim(),slug:d.trim()||void 0,logo:p.trim()||void 0}),X.success(e(`organization.settings.saved`,{defaultValue:`Settings saved`}))}catch(t){X.error(t instanceof Error?t.message:e(`organization.settings.saveFailed`,{defaultValue:`Failed to save settings`}))}finally{g(!1)}},[t.id,l,d,p,i,e]);return C?(0,Q.jsx)(`div`,{className:`flex items-center justify-center py-20`,children:(0,Q.jsx)(J,{className:`h-5 w-5 animate-spin text-muted-foreground`})}):(0,Q.jsxs)(`div`,{className:`space-y-8`,"data-testid":`settings-page`,children:[(0,Q.jsxs)(`section`,{children:[(0,Q.jsx)(`h2`,{className:`text-lg font-semibold`,children:e(`organization.settings.generalTitle`,{defaultValue:`General`})}),(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1`,children:e(`organization.settings.generalDescription`,{defaultValue:`Update your organization information.`})}),(0,Q.jsx)(xn,{className:`my-4`}),x?(0,Q.jsxs)(`form`,{onSubmit:ee,className:`space-y-4 max-w-md`,children:[(0,Q.jsxs)(`div`,{className:`grid gap-2`,children:[(0,Q.jsx)(ft,{htmlFor:`org-name`,children:e(`organization.settings.nameLabel`,{defaultValue:`Organization name`})}),(0,Q.jsx)(St,{id:`org-name`,value:l,onChange:e=>u(e.target.value),required:!0,"data-testid":`settings-name-input`})]}),(0,Q.jsxs)(`div`,{className:`grid gap-2`,children:[(0,Q.jsx)(ft,{htmlFor:`org-slug`,children:e(`organization.settings.slugLabel`,{defaultValue:`Slug`})}),(0,Q.jsx)(St,{id:`org-slug`,value:d,onChange:e=>f(e.target.value),"data-testid":`settings-slug-input`})]}),(0,Q.jsxs)(`div`,{className:`grid gap-2`,children:[(0,Q.jsx)(ft,{children:e(`organization.settings.logoLabel`,{defaultValue:`Logo`})}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Q.jsxs)(vt,{className:`size-16 rounded-md`,children:[p?(0,Q.jsx)(Dt,{src:p,alt:l,className:`object-cover`}):null,(0,Q.jsx)(Ct,{className:`rounded-md text-base`,children:(l||`O`).slice(0,2).toUpperCase()})]}),(0,Q.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Q.jsx)(`input`,{ref:y,type:`file`,accept:`image/*`,className:`hidden`,onChange:async t=>{let n=t.target.files?.[0];if(y.current&&(y.current.value=``),n){v(!0);try{let t=await b(n);m(t.url),X.success(e(`organization.settings.logoUploaded`,{defaultValue:`Logo uploaded — save to apply`}))}catch(t){X.error(t instanceof Error?t.message:e(`organization.settings.logoUploadFailed`,{defaultValue:`Failed to upload logo`}))}finally{v(!1)}}},"data-testid":`settings-logo-file`}),(0,Q.jsxs)(Y,{type:`button`,variant:`outline`,size:`sm`,disabled:_,onClick:()=>y.current?.click(),"data-testid":`settings-logo-upload-btn`,children:[_?(0,Q.jsx)(J,{className:`mr-2 h-4 w-4 animate-spin`}):(0,Q.jsx)(Ar,{className:`mr-2 h-4 w-4`}),p?e(`organization.settings.logoReplace`,{defaultValue:`Replace`}):e(`organization.settings.logoUpload`,{defaultValue:`Upload`})]}),p&&(0,Q.jsxs)(Y,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>m(``),"data-testid":`settings-logo-clear-btn`,children:[(0,Q.jsx)(Pn,{className:`mr-2 h-4 w-4`}),e(`organization.settings.logoClear`,{defaultValue:`Remove`})]})]}),(0,Q.jsx)(St,{id:`org-logo`,type:`url`,value:p,onChange:e=>m(e.target.value),placeholder:`https://example.com/logo.png`,className:`text-xs`,"data-testid":`settings-logo-input`})]})]})]}),(0,Q.jsxs)(Y,{type:`submit`,disabled:h,"data-testid":`settings-save-btn`,children:[h&&(0,Q.jsx)(J,{className:`mr-2 h-4 w-4 animate-spin`}),e(`organization.settings.save`,{defaultValue:`Save changes`})]})]}):(0,Q.jsx)(`div`,{className:`rounded-lg border bg-muted/50 p-4 text-sm text-muted-foreground`,children:e(`organization.settings.readOnlyNote`,{defaultValue:`Only owners can change settings.`})})]}),(0,Q.jsxs)(`section`,{children:[(0,Q.jsx)(`h2`,{className:`text-lg font-semibold text-destructive`,children:e(`organization.settings.dangerZone`,{defaultValue:`Danger zone`})}),(0,Q.jsx)(xn,{className:`my-4`}),(0,Q.jsxs)(`div`,{className:`space-y-4 rounded-lg border border-destructive/50 bg-destructive/5 p-4`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`p`,{className:`font-medium text-sm`,children:e(`organization.settings.leaveTitle`,{defaultValue:`Leave organization`})}),(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`organization.settings.leaveDescription`,{defaultValue:`You will lose access to this organization.`})})]}),(0,Q.jsx)(Y,{variant:`destructive`,size:`sm`,onClick:()=>D(!0),children:e(`organization.settings.leaveAction`,{defaultValue:`Leave`})})]}),(0,Q.jsx)(xn,{}),(0,Q.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`p`,{className:`font-medium text-sm`,children:e(`organization.settings.deleteTitle`,{defaultValue:`Delete organization`})}),(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`organization.settings.deleteDescription`,{defaultValue:`Permanently delete this organization and all its data.`})})]}),(0,Q.jsx)(Y,{variant:`destructive`,size:`sm`,onClick:()=>{j(``),k(!0)},disabled:!x,children:e(`organization.settings.deleteAction`,{defaultValue:`Delete`})})]})]})]}),(0,Q.jsx)(Pt,{open:E,onOpenChange:D,children:(0,Q.jsxs)(Xt,{children:[(0,Q.jsxs)(en,{children:[(0,Q.jsx)(Qe,{children:e(`organization.settings.leaveConfirmTitle`,{defaultValue:`Leave organization?`})}),(0,Q.jsx)(nt,{children:e(`organization.settings.leaveConfirmDescription`,{defaultValue:`Are you sure you want to leave {{name}}? You will lose access immediately.`,name:t.name})})]}),(0,Q.jsxs)(Kt,{children:[(0,Q.jsx)(Ie,{disabled:M,children:e(`common.cancel`,{defaultValue:`Cancel`})}),(0,Q.jsxs)(fi,{className:`bg-destructive text-destructive-foreground hover:bg-destructive/90`,onClick:async()=>{N(!0);try{await s(t.id),X.success(e(`organization.settings.leftOrg`,{defaultValue:`You have left the organization`})),c(`/organizations`)}catch(t){X.error(t instanceof Error?t.message:e(`organization.settings.leaveFailed`,{defaultValue:`Failed to leave organization`}))}finally{N(!1)}},disabled:M,children:[M&&(0,Q.jsx)(J,{className:`mr-2 h-4 w-4 animate-spin`}),e(`organization.settings.leaveConfirmAction`,{defaultValue:`Leave`})]})]})]})}),(0,Q.jsx)(Pt,{open:O,onOpenChange:e=>{k(e),e||j(``)},children:(0,Q.jsxs)(Xt,{children:[(0,Q.jsxs)(en,{children:[(0,Q.jsx)(Qe,{children:e(`organization.settings.deleteConfirmTitle`,{defaultValue:`Delete organization?`})}),(0,Q.jsx)(nt,{children:e(`organization.settings.deleteConfirmDescription`,{defaultValue:`This action is irreversible. All data will be permanently deleted. Type the organization slug to confirm.`})})]}),(0,Q.jsxs)(`div`,{className:`px-6 pb-2`,children:[(0,Q.jsx)(ft,{htmlFor:`delete-confirm-slug`,className:`text-sm font-medium`,children:e(`organization.settings.deleteConfirmSlugLabel`,{defaultValue:`Type "{{slug}}" to confirm`,slug:t.slug})}),(0,Q.jsx)(St,{id:`delete-confirm-slug`,className:`mt-2`,value:A,onChange:e=>j(e.target.value),placeholder:t.slug,"data-testid":`delete-confirm-slug-input`})]}),(0,Q.jsxs)(Kt,{children:[(0,Q.jsx)(Ie,{disabled:M,children:e(`common.cancel`,{defaultValue:`Cancel`})}),(0,Q.jsxs)(fi,{className:`bg-destructive text-destructive-foreground hover:bg-destructive/90`,onClick:async()=>{N(!0);try{await o(t.id),X.success(e(`organization.settings.deleted`,{defaultValue:`Organization deleted`})),c(`/organizations`)}catch(t){X.error(t instanceof Error?t.message:e(`organization.settings.deleteFailed`,{defaultValue:`Failed to delete organization`}))}finally{N(!1)}},disabled:M||A!==t.slug,children:[M&&(0,Q.jsx)(J,{className:`mr-2 h-4 w-4 animate-spin`}),e(`organization.settings.deleteConfirmAction`,{defaultValue:`Delete organization`})]})]})]})})]})}function Bh(){let{t:e}=V(),t=a(),n=i(),{invitationId:r}=l(),{isAuthenticated:o,isLoading:s,getInvitation:c,acceptInvitation:u,rejectInvitation:d,switchOrganization:f}=T(),[p,m]=(0,$.useState)(null),[h,g]=(0,$.useState)(!0),[_,v]=(0,$.useState)(null),[y,b]=(0,$.useState)(!1),[x,S]=(0,$.useState)(!1);return(0,$.useEffect)(()=>{!s&&!o&&t(`/login?redirect=`+encodeURIComponent(n.pathname+n.search))},[o,s,t,n.pathname,n.search]),(0,$.useEffect)(()=>{if(!r||!o)return;let t=!1;return g(!0),v(null),c(r).then(e=>{t||m(e)}).catch(n=>{t||v(bh(n,e,{key:`organization.errors.invitationNotFound`,defaultValue:`This invitation no longer exists or has expired`}))}).finally(()=>{t||g(!1)}),()=>{t=!0}},[r,o,c,e]),s?(0,Q.jsx)(`div`,{className:`flex min-h-svh items-center justify-center`,children:(0,Q.jsx)(J,{className:`h-6 w-6 animate-spin text-muted-foreground`})}):o?(0,Q.jsx)(`div`,{className:`flex min-h-svh items-center justify-center px-4 py-12 bg-background`,children:(0,Q.jsx)(`div`,{className:`w-full max-w-md rounded-xl border bg-card p-8 shadow-sm`,"data-testid":`accept-invitation-page`,children:h?(0,Q.jsxs)(`div`,{className:`flex flex-col items-center gap-4 py-8`,children:[(0,Q.jsx)(J,{className:`h-8 w-8 animate-spin text-muted-foreground`}),(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:e(`organization.accept.loading`,{defaultValue:`Loading invitation…`})})]}):_?(0,Q.jsxs)(`div`,{className:`flex flex-col items-center gap-4 py-8 text-center`,children:[(0,Q.jsx)(Lr,{className:`h-10 w-10 text-destructive`}),(0,Q.jsx)(`h1`,{className:`text-xl font-semibold`,children:e(`organization.accept.errorTitle`,{defaultValue:`Invitation unavailable`})}),(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:_}),(0,Q.jsx)(Y,{variant:`outline`,onClick:()=>t(`/organizations`),children:e(`organization.accept.goToOrgs`,{defaultValue:`Go to organizations`})})]}):p?(0,Q.jsxs)(`div`,{className:`flex flex-col items-center gap-6 text-center`,children:[(0,Q.jsx)(`div`,{className:`flex h-14 w-14 items-center justify-center rounded-full bg-primary/10`,children:(0,Q.jsx)(We,{className:`h-7 w-7 text-primary`})}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h1`,{className:`text-xl font-bold`,children:e(`organization.accept.title`,{defaultValue:`You have been invited`})}),(0,Q.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground`,children:e(`organization.accept.description`,{defaultValue:`You have been invited to join {{orgName}} as {{role}}.`,orgName:p.organizationName??p.organizationId,role:Oh(p.role,e)})})]}),(0,Q.jsxs)(`div`,{className:`w-full rounded-lg border bg-muted/50 p-4 text-left space-y-2`,children:[(0,Q.jsxs)(`div`,{className:`flex justify-between text-sm`,children:[(0,Q.jsx)(`span`,{className:`text-muted-foreground`,children:e(`organization.accept.organization`,{defaultValue:`Organization`})}),(0,Q.jsx)(`span`,{className:`font-medium`,children:p.organizationName??p.organizationId})]}),(0,Q.jsxs)(`div`,{className:`flex justify-between text-sm`,children:[(0,Q.jsx)(`span`,{className:`text-muted-foreground`,children:e(`organization.accept.role`,{defaultValue:`Role`})}),(0,Q.jsx)(`span`,{className:`font-medium`,"data-testid":`accept-invitation-role`,children:Oh(p.role,e)})]}),p.expiresAt&&(0,Q.jsxs)(`div`,{className:`flex justify-between text-sm`,children:[(0,Q.jsx)(`span`,{className:`text-muted-foreground`,children:e(`organization.accept.expiresAt`,{defaultValue:`Expires`})}),(0,Q.jsx)(`span`,{className:`font-medium`,children:new Date(p.expiresAt).toLocaleDateString()})]})]}),(0,Q.jsxs)(`div`,{className:`flex w-full gap-3`,children:[(0,Q.jsxs)(Y,{variant:`outline`,className:`flex-1`,onClick:async()=>{if(r){S(!0);try{await d(r),X.success(e(`organization.accept.declined`,{defaultValue:`Invitation declined`})),t(`/organizations`)}catch(t){X.error(bh(t,e,{key:`organization.accept.declineFailed`,defaultValue:`Failed to decline invitation`})),S(!1)}}},disabled:x||y,children:[x&&(0,Q.jsx)(J,{className:`mr-2 h-4 w-4 animate-spin`}),e(`organization.accept.decline`,{defaultValue:`Decline`})]}),(0,Q.jsxs)(Y,{className:`flex-1`,onClick:async()=>{if(!(!p||!r)){b(!0);try{await u(r),await f(p.organizationId).catch(()=>null),X.success(e(`organization.accept.accepted`,{defaultValue:`Invitation accepted`})),t(`/home`)}catch(t){X.error(bh(t,e,{key:`organization.accept.acceptFailed`,defaultValue:`Failed to accept invitation`})),b(!1)}}},disabled:y||x,children:[y&&(0,Q.jsx)(J,{className:`mr-2 h-4 w-4 animate-spin`}),(0,Q.jsx)(Rr,{className:`mr-2 h-4 w-4`}),e(`organization.accept.accept`,{defaultValue:`Accept invitation`})]})]})]}):null})}):null}function Vh(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function Hh(e){if(!Vh(e))return;let t=e.config;if(Vh(t)&&typeof t.type==`string`)return t.type;if(typeof e.type==`string`)return e.type;if(e.viewKind===`form`)return`form`;if(e.viewKind===`list`)return`list`}Ls({ref:`metadata:directory`,label:`All Metadata Types`,source:`@object-ui/app-shell`,component:yo}),Ls({ref:`metadata:resource`,label:`Metadata Resource`,source:`@object-ui/app-shell`,component:Za}),Ls({ref:`developer:packages`,label:`Packages`,source:`@object-ui/app-shell`,component:to}),so({type:`object`,label:`Objects`,description:`Domain entities — tables in the data model. Each object owns its fields, relationships, validations, and lifecycle hooks.`,domain:`data`,searchableFields:[`name`,`label`,`description`],listColumns:[{key:`name`,label:`Name`,width:`25%`},{key:`label`,label:`Label`,width:`25%`},{key:`description`,label:`Description`}]}),so({type:`field`,label:`Fields`,description:`Columns attached to objects — name, type, validation, and storage settings.`,domain:`data`,searchableFields:[`name`,`label`,`object`,`type`],listColumns:[{key:`name`,label:`Name`,width:`25%`},{key:`object`,label:`Object`,width:`20%`},{key:`type`,label:`Type`,width:`15%`},{key:`label`,label:`Label`}]}),so({type:`permission`,label:`Permission sets`,description:`Object-level CRUD + VAMA + lifecycle permissions, and field-level R/W. The only capability container (ADR-0090); distributed to users via positions.`,domain:`security`,EditPage:io,searchableFields:[`name`,`label`],listColumns:[{key:`name`,label:`Name`,width:`30%`},{key:`label`,label:`Label`,width:`30%`},{key:`managedBy`,label:`Source`,width:`15%`,render:e=>e===`package`?`Package`:`Custom`}]}),so({type:`view`,label:`Views`,description:`Saved list / kanban / calendar / gantt configurations on top of an object.`,domain:`ui`,listColumns:[{key:`name`,label:`Name`,width:`30%`},{key:`object`,label:`Object`,width:`20%`},{key:`type`,label:`Type`,width:`15%`,render:(e,t)=>Hh(t)??`—`},{key:`label`,label:`Label`}],listFilter:e=>!N(e)}),so({type:`dashboard`,label:`Dashboards`,description:`Composed dashboards with charts, KPIs, and tables.`,domain:`ui`,listColumns:[{key:`name`,label:`Name`,width:`30%`},{key:`label`,label:`Label`,width:`30%`},{key:`description`,label:`Description`}]}),so({type:`page`,label:`Pages`,description:`Visual page layouts authored as JSON metadata.`,domain:`ui`,listColumns:[{key:`name`,label:`Name`,width:`30%`},{key:`label`,label:`Label`,width:`30%`},{key:`route`,label:`Route`}]}),so({type:`book`,label:`Documentation Books`,description:`Documentation navigation spine — ordered groups with membership derived over docs (glob/tag rules), plus an explicit pages override for curated order.`,domain:`system`,searchableFields:[`name`,`label`,`description`,`slug`],listColumns:[{key:`name`,label:`Name`,width:`25%`},{key:`label`,label:`Label`,width:`25%`},{key:`audience`,label:`Audience`,width:`12%`,render:e=>e==null?`org`:typeof e==`object`&&e&&`permissionSet`in e?`permission set: ${e.permissionSet}`:String(e)},{key:`groups`,label:`Groups`,width:`10%`,render:e=>Array.isArray(e)?String(e.length):`0`},{key:`description`,label:`Description`}]});var Uh=`/api/v1/cloud-connection`;async function Wh(e,t){let n=await fetch(e,{credentials:`same-origin`,headers:{"Content-Type":`application/json`},...t}),r=await n.json().catch(()=>({}));if(!n.ok&&r?.success!==!0){let e=r?.error?.message??r?.error?.code??r?.error??`HTTP ${n.status}`;throw Error(typeof e==`string`?e:JSON.stringify(e))}return r}function Gh(){let{t:e,language:t}=V(),[n,r]=(0,$.useState)({kind:`loading`}),[i,a]=(0,$.useState)(!1),[o,s]=(0,$.useState)(!1),c=(0,$.useRef)(null),l=(0,$.useCallback)(()=>{c.current&&=(clearTimeout(c.current),null)},[]),u=(0,$.useCallback)(async()=>{try{let e=(await Wh(`${Uh}/status`))?.data??{environmentId:null,bound:!1,connection:null};r(e.bound?{kind:`bound`,status:e}:{kind:`unbound`})}catch(e){r({kind:`error`,message:e?.message??String(e)})}},[]);(0,$.useEffect)(()=>(u(),l),[u,l]);let d=(0,$.useCallback)((t,n)=>{let i=Math.max(t.interval,2)*1e3,a=async()=>{if(Date.now()-n>t.expires_in*1e3){r({kind:`error`,message:e(`cloudConnection.errors.expired`)});return}try{let n=await Wh(`${Uh}/bind/poll`,{method:`POST`,body:JSON.stringify({device_code:t.device_code})});if(n?.data?.pending){c.current=setTimeout(a,i);return}if(n?.data?.bound||n?.success){await u();return}r({kind:`error`,message:n?.error?.code??e(`cloudConnection.errors.bindFailed`)})}catch(e){r({kind:`error`,message:e?.message??String(e)})}};c.current=setTimeout(a,i)},[u,e]),f=(0,$.useCallback)(async()=>{a(!0);try{let t=(await Wh(`${Uh}/bind/start`,{method:`POST`,body:`{}`}))?.data;if(!t?.device_code||!t?.user_code)throw Error(e(`cloudConnection.errors.deviceCodeFailed`));let n=t.verification_uri_complete??t.verification_uri,i=!1;if(n)try{i=!!window.open(n,`_blank`,`noopener,width=520,height=720`)}catch{}r({kind:`waiting`,code:t,popupOpened:i}),d(t,Date.now())}catch(e){r({kind:`error`,message:e?.message??String(e)})}finally{a(!1)}},[d,e]),p=(0,$.useCallback)(async()=>{a(!0);try{await Wh(`${Uh}/unbind`,{method:`POST`,body:`{}`}),await u()}catch(e){r({kind:`error`,message:e?.message??String(e)})}finally{a(!1)}},[u]),m=(0,$.useCallback)(async e=>{try{await navigator.clipboard.writeText(e),s(!0),setTimeout(()=>s(!1),1500)}catch{}},[]);if(n.kind===`loading`)return(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg border p-6 text-sm text-muted-foreground`,children:[(0,Q.jsx)(J,{className:`h-4 w-4 animate-spin`,"aria-hidden":`true`}),` `,e(`cloudConnection.checking`)]});if(n.kind===`error`)return(0,Q.jsxs)(`div`,{className:`flex flex-col gap-3 rounded-lg border border-destructive/40 bg-destructive/5 p-6`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-destructive`,children:[(0,Q.jsx)(_n,{className:`h-4 w-4`,"aria-hidden":`true`}),` `,n.message]}),(0,Q.jsx)(`button`,{type:`button`,className:`self-start rounded-md border px-3 py-1.5 text-sm hover:bg-accent`,onClick:()=>{l(),u()},children:e(`cloudConnection.retry`)})]});if(n.kind===`waiting`){let t=n.code.verification_uri_complete??n.code.verification_uri;return(0,Q.jsxs)(`div`,{className:`flex flex-col gap-4 rounded-lg border p-6`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-muted-foreground`,children:[(0,Q.jsx)(J,{className:`h-4 w-4 animate-spin`,"aria-hidden":`true`}),n.popupOpened?e(`cloudConnection.waiting.popupOpened`):e(`cloudConnection.waiting.polling`)]}),!n.popupOpened&&t?(0,Q.jsxs)(`a`,{className:`inline-flex items-center gap-1.5 self-start rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90`,href:t,target:`_blank`,rel:`noreferrer`,children:[e(`cloudConnection.waiting.openApproval`),` `,(0,Q.jsx)(zt,{className:`h-3.5 w-3.5`,"aria-hidden":`true`})]}):null,(0,Q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Q.jsx)(`code`,{className:`rounded-md bg-muted px-4 py-2 text-2xl font-semibold tracking-[0.25em]`,children:n.code.user_code}),(0,Q.jsxs)(`button`,{type:`button`,className:`inline-flex items-center gap-1.5 rounded-md border px-3 py-1.5 text-sm hover:bg-accent`,onClick:()=>void m(n.code.user_code),children:[(0,Q.jsx)(wt,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}),e(o?`cloudConnection.waiting.copied`:`cloudConnection.waiting.copy`)]})]}),(0,Q.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[e(`cloudConnection.waiting.codePrefilled`),n.popupOpened&&t?(0,Q.jsxs)(Q.Fragment,{children:[` `,(0,Q.jsxs)(`a`,{className:`inline-flex items-center gap-1 text-primary underline-offset-2 hover:underline`,href:t,target:`_blank`,rel:`noreferrer`,children:[e(`cloudConnection.waiting.openItHere`),` `,(0,Q.jsx)(zt,{className:`h-3 w-3`,"aria-hidden":`true`})]})]}):null]}),(0,Q.jsx)(`button`,{type:`button`,className:`self-start rounded-md border px-3 py-1.5 text-sm hover:bg-accent`,onClick:()=>{l(),u()},children:e(`cloudConnection.waiting.cancel`)})]})}if(n.kind===`bound`){let r=n.status.connection??{},a=r.runtime_id??n.status.runtimeId;return(0,Q.jsxs)(`div`,{className:`flex flex-col gap-4 rounded-lg border p-6`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(br,{className:`h-5 w-5 text-emerald-600`,"aria-hidden":`true`}),(0,Q.jsx)(`span`,{className:`font-medium`,children:e(`cloudConnection.bound.title`)})]}),(0,Q.jsxs)(`dl`,{className:`grid grid-cols-[auto_1fr] gap-x-6 gap-y-1.5 text-sm`,children:[r.name?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`dt`,{className:`text-muted-foreground`,children:e(`cloudConnection.bound.runtime`)}),(0,Q.jsx)(`dd`,{children:r.name})]}):null,r.organization_id?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`dt`,{className:`text-muted-foreground`,children:e(`cloudConnection.bound.organization`)}),(0,Q.jsx)(`dd`,{className:`font-mono`,children:r.organization_id})]}):null,r.account_email?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`dt`,{className:`text-muted-foreground`,children:e(`cloudConnection.bound.approvedBy`)}),(0,Q.jsx)(`dd`,{children:r.account_email})]}):null,a?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`dt`,{className:`text-muted-foreground`,children:e(`cloudConnection.bound.runtimeId`)}),(0,Q.jsx)(`dd`,{className:`font-mono text-xs`,children:a})]}):null,n.status.environmentId?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`dt`,{className:`text-muted-foreground`,children:e(`cloudConnection.bound.environment`)}),(0,Q.jsx)(`dd`,{className:`font-mono`,children:n.status.environmentId})]}):null,r.bound_at?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`dt`,{className:`text-muted-foreground`,children:e(`cloudConnection.bound.since`)}),(0,Q.jsx)(`dd`,{children:new Date(r.bound_at).toLocaleString(t)})]}):null]}),(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:e(`cloudConnection.bound.privatePackages`)}),(0,Q.jsxs)(`button`,{type:`button`,disabled:i,className:`inline-flex items-center gap-1.5 self-start rounded-md border border-destructive/40 px-3 py-1.5 text-sm text-destructive hover:bg-destructive/5 disabled:opacity-50`,onClick:()=>void p(),children:[(0,Q.jsx)(mr,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}),` `,e(`cloudConnection.bound.disconnect`)]})]})}return(0,Q.jsxs)(`div`,{className:`flex flex-col gap-4 rounded-lg border p-6`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(Le,{className:`h-5 w-5 text-muted-foreground`,"aria-hidden":`true`}),(0,Q.jsx)(`span`,{className:`font-medium`,children:e(`cloudConnection.unbound.title`)})]}),(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:e(`cloudConnection.unbound.body`)}),(0,Q.jsxs)(`button`,{type:`button`,disabled:i,className:`inline-flex items-center gap-1.5 self-start rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-50`,onClick:()=>void f(),children:[i?(0,Q.jsx)(J,{className:`h-4 w-4 animate-spin`,"aria-hidden":`true`}):(0,Q.jsx)(Ft,{className:`h-4 w-4`,"aria-hidden":`true`}),e(`cloudConnection.unbound.connect`)]})]})}F.register(`cloud-connection:panel`,()=>(0,Q.jsx)(Gh,{}),{namespace:`app-shell`,label:`Cloud Connection Panel`,category:`plugin`,inputs:[]});var Kh=``.replace(/\/$/,``);function qh(e){let t=E.get();return t?{...e,Authorization:`Bearer ${t}`}:e}function Jh(e){let t=Kh||(typeof window<`u`?window.location.origin:``);try{return new URL(e,t||void 0).toString()}catch{return e}}function Yh({text:e,label:t}){let[n,r]=(0,$.useState)(!1);return(0,Q.jsxs)(Y,{variant:`outline`,size:`sm`,onClick:async()=>{try{await navigator.clipboard.writeText(e),r(!0),setTimeout(()=>r(!1),1500)}catch{}},children:[n?(0,Q.jsx)(pr,{className:`h-3.5 w-3.5`}):(0,Q.jsx)(wt,{className:`h-3.5 w-3.5`}),t?(0,Q.jsx)(`span`,{className:`ml-1`,children:t}):null]})}function Xh({text:e}){return(0,Q.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,Q.jsx)(`pre`,{className:`flex-1 overflow-x-auto rounded-md bg-muted px-3 py-2 text-xs leading-relaxed`,children:(0,Q.jsx)(`code`,{children:e})}),(0,Q.jsx)(Yh,{text:e})]})}function Zh(){let{t:e}=V(),[t,n]=(0,$.useState)(!0),[r,i]=(0,$.useState)(null),[a,o]=(0,$.useState)(null),[s,c]=(0,$.useState)(``),[l,u]=(0,$.useState)(!1),[d,f]=(0,$.useState)(null),[p,m]=(0,$.useState)(null);(0,$.useEffect)(()=>{(async()=>{try{let e=await(await fetch(`${Kh}/api/v1/discovery`,{credentials:`include`})).json().catch(()=>({})),t=(e?.data??e)?.routes??{};i(typeof t.mcp==`string`?Jh(t.mcp):null)}catch(e){o(e?.message??String(e))}finally{n(!1)}})()},[]);let h=r?`${r}/skill`:null,g=(0,$.useMemo)(()=>{if(!r)return null;let e=btoa(JSON.stringify({url:r}));return`cursor://anysphere.cursor-deeplink/mcp/install?name=objectstack&config=${encodeURIComponent(e)}`},[r]);return t?(0,Q.jsxs)(`div`,{className:`space-y-3 p-1`,children:[(0,Q.jsx)(jr,{className:`h-10 w-full`}),(0,Q.jsx)(jr,{className:`h-40 w-full`})]}):r?(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsxs)(Ht,{children:[(0,Q.jsx)(Et,{className:`pb-2`,children:(0,Q.jsxs)(sr,{className:`flex items-center gap-2 text-base`,children:[(0,Q.jsx)(bt,{className:`h-4 w-4`}),e(`connectAgent.url.title`)]})}),(0,Q.jsxs)(qe,{className:`space-y-3`,children:[(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:e(`connectAgent.url.body`)}),(0,Q.jsx)(Xh,{text:r}),(0,Q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[h&&(0,Q.jsx)(Y,{variant:`outline`,size:`sm`,asChild:!0,children:(0,Q.jsxs)(`a`,{href:h,download:`SKILL.md`,children:[(0,Q.jsx)(Je,{className:`mr-1 h-3.5 w-3.5`}),e(`connectAgent.url.downloadSkill`)]})}),(0,Q.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e(`connectAgent.url.skillHint`)})]})]})]}),(0,Q.jsxs)(`div`,{className:`grid gap-4 lg:grid-cols-2`,children:[(0,Q.jsxs)(Ht,{children:[(0,Q.jsx)(Et,{className:`pb-2`,children:(0,Q.jsx)(sr,{className:`text-base`,children:`Claude (claude.ai / Desktop)`})}),(0,Q.jsxs)(qe,{className:`space-y-2 text-sm`,children:[(0,Q.jsx)(`p`,{className:`text-muted-foreground`,children:e(`connectAgent.claude.body`)}),(0,Q.jsx)(Xh,{text:r}),(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`connectAgent.claude.reachability`)})]})]}),(0,Q.jsxs)(Ht,{children:[(0,Q.jsx)(Et,{className:`pb-2`,children:(0,Q.jsx)(sr,{className:`text-base`,children:`Claude Code`})}),(0,Q.jsxs)(qe,{className:`space-y-2 text-sm`,children:[(0,Q.jsx)(`p`,{className:`text-muted-foreground`,children:e(`connectAgent.claudeCode.body`)}),(0,Q.jsx)(Xh,{text:`claude mcp add --transport http objectstack ${r}`}),(0,Q.jsx)(`p`,{className:`text-muted-foreground`,children:e(`connectAgent.claudeCode.plugin`)}),(0,Q.jsx)(Xh,{text:`claude plugin marketplace add objectstack-ai/claude-plugin`})]})]}),(0,Q.jsxs)(Ht,{children:[(0,Q.jsx)(Et,{className:`pb-2`,children:(0,Q.jsxs)(sr,{className:`flex items-center justify-between text-base`,children:[`Cursor`,g&&(0,Q.jsx)(Y,{variant:`outline`,size:`sm`,asChild:!0,children:(0,Q.jsxs)(`a`,{href:g,children:[(0,Q.jsx)(zt,{className:`mr-1 h-3.5 w-3.5`}),e(`connectAgent.cursor.addButton`)]})})]})}),(0,Q.jsxs)(qe,{className:`space-y-2 text-sm`,children:[(0,Q.jsx)(`p`,{className:`text-muted-foreground`,children:e(`connectAgent.cursor.body`)}),(0,Q.jsx)(Xh,{text:JSON.stringify({mcpServers:{objectstack:{url:r}}},null,2)})]})]}),(0,Q.jsxs)(Ht,{children:[(0,Q.jsx)(Et,{className:`pb-2`,children:(0,Q.jsx)(sr,{className:`text-base`,children:`VS Code / Copilot`})}),(0,Q.jsxs)(qe,{className:`space-y-2 text-sm`,children:[(0,Q.jsx)(`p`,{className:`text-muted-foreground`,children:e(`connectAgent.vscode.body`)}),(0,Q.jsx)(Xh,{text:JSON.stringify({servers:{objectstack:{type:`http`,url:r}}},null,2)})]})]}),(0,Q.jsxs)(Ht,{children:[(0,Q.jsx)(Et,{className:`pb-2`,children:(0,Q.jsx)(sr,{className:`text-base`,children:`Codex CLI`})}),(0,Q.jsxs)(qe,{className:`space-y-2 text-sm`,children:[(0,Q.jsx)(`p`,{className:`text-muted-foreground`,children:e(`connectAgent.codex.body`)}),(0,Q.jsx)(Xh,{text:`[mcp_servers.objectstack]\nurl = "${r}"`})]})]}),(0,Q.jsxs)(Ht,{children:[(0,Q.jsx)(Et,{className:`pb-2`,children:(0,Q.jsxs)(sr,{className:`flex items-center gap-2 text-base`,children:[(0,Q.jsx)(_t,{className:`h-4 w-4`}),e(`connectAgent.apiKey.title`),(0,Q.jsx)(ir,{variant:`secondary`,children:e(`connectAgent.apiKey.badge`)})]})}),(0,Q.jsxs)(qe,{className:`space-y-2 text-sm`,children:[(0,Q.jsx)(`p`,{className:`text-muted-foreground`,children:e(`connectAgent.apiKey.body`)}),d?(0,Q.jsxs)(`div`,{className:`space-y-2`,children:[(0,Q.jsx)(`p`,{className:`text-xs font-medium text-amber-600 dark:text-amber-400`,children:e(`connectAgent.apiKey.showOnce`,{name:d.name})}),(0,Q.jsx)(Xh,{text:d.key}),(0,Q.jsx)(Xh,{text:`x-api-key: ${d.key}`}),(0,Q.jsx)(Y,{variant:`outline`,size:`sm`,onClick:()=>f(null),children:e(`connectAgent.apiKey.done`)})]}):(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(St,{value:s,onChange:e=>c(e.target.value),placeholder:e(`connectAgent.apiKey.namePlaceholder`),className:`h-8 max-w-56`}),(0,Q.jsx)(Y,{size:`sm`,onClick:async()=>{u(!0),m(null);try{let e=await fetch(`${Kh}/api/v1/keys`,{method:`POST`,credentials:`include`,headers:qh({"content-type":`application/json`}),body:JSON.stringify({name:s.trim()||`agent-key`})}),t=await e.json().catch(()=>({}));if(!e.ok||t?.success===!1)throw Error(t?.error?.message??t?.error??`HTTP ${e.status}`);let n=t?.data??t;f({name:n?.name??s,key:n?.key??``}),c(``)}catch(e){m(e?.message??String(e))}finally{u(!1)}},disabled:l,children:e(l?`connectAgent.apiKey.minting`:`connectAgent.apiKey.mint`)})]}),p&&(0,Q.jsxs)(`p`,{className:`flex items-center gap-1 text-xs text-destructive`,children:[(0,Q.jsx)(_n,{className:`h-3.5 w-3.5`}),` `,p]})]})]})]})]}):(0,Q.jsx)(Ht,{children:(0,Q.jsxs)(qe,{className:`flex items-center gap-3 py-8 text-muted-foreground`,children:[(0,Q.jsx)(_n,{className:`h-5 w-5 shrink-0`}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`div`,{className:`font-medium text-foreground`,children:e(`connectAgent.disabled.title`)}),(0,Q.jsx)(`div`,{className:`text-sm`,children:a||e(`connectAgent.disabled.body`)})]})]})})}F.register(`mcp:connect-agent`,()=>(0,Q.jsx)(Zh,{}),{namespace:`app-shell`,label:`Connect an Agent`,category:`plugin`,inputs:[]});var Qh=`/api/v1/cloud/environments/production/sso-open`,$h=`/apps/cloud_control/sys_environment`;function eg(e){let{activeOrganization:t}=T(),n=t?.id,r=(0,$.useMemo)(()=>_(),[]),[i,a]=(0,$.useState)({phase:`loading`});return(0,$.useEffect)(()=>{let t=!1,i=``.replace(/\/+$/,``),o=n?`?organizationId=${encodeURIComponent(n)}`:``;return(async()=>{try{let n=await r(`${i}/api/v1/cloud/environment-entitlements${o}`,{method:`GET`,credentials:`include`});if(!n.ok)throw Error(`entitlements ${n.status}`);let s=(await n.json().catch(()=>null))?.data;if(t)return;if(!s||typeof s!=`object`){a({phase:`unknown`});return}let c=s.hasProductionEnv===!0;a({phase:`ready`,hasProductionEnv:c}),c&&e&&r(`${i}${e}`,{method:`GET`,credentials:`include`}).catch(()=>{})}catch{t||a({phase:`unknown`})}})(),()=>{t=!0}},[r,n,e]),i}function tg(e){window.location.href=e}function ng({properties:e}){let{t}=V(),n=a(),r=eg(e?.warmUrl),i=e?.openProductionUrl||Qh,o=e?.environmentsRoute||$h;if(r.phase===`loading`)return(0,Q.jsxs)(`div`,{className:`flex flex-wrap items-center justify-center gap-3`,"data-onboarding":`loading`,children:[(0,Q.jsx)(jr,{className:`h-11 w-44 rounded-md`}),(0,Q.jsx)(jr,{className:`h-11 w-44 rounded-md`})]});let s=r.phase===`ready`&&!r.hasProductionEnv?t(`cloudOnboarding.hintCreate`):t(`cloudOnboarding.hintReady`),c=r.phase===`ready`&&!r.hasProductionEnv;return(0,Q.jsxs)(`div`,{className:`flex flex-col items-center gap-3`,"data-onboarding":r.phase,children:[(0,Q.jsxs)(`div`,{className:`flex flex-wrap items-center justify-center gap-3`,children:[c?(0,Q.jsxs)(Y,{size:`lg`,onClick:()=>n(`${o}?runAction=create_environment`),children:[(0,Q.jsx)(Ue,{className:`mr-2 h-4 w-4`}),t(`cloudOnboarding.createEnvironment`)]}):(0,Q.jsxs)(Y,{size:`lg`,onClick:()=>tg(i),children:[(0,Q.jsx)(Or,{className:`mr-2 h-4 w-4`}),t(`cloudOnboarding.openProduction`)]}),(0,Q.jsxs)(Y,{size:`lg`,variant:`secondary`,onClick:()=>n(o),children:[(0,Q.jsx)(yr,{className:`mr-2 h-4 w-4`}),t(`cloudOnboarding.manageEnvironments`)]})]}),(0,Q.jsx)(`p`,{className:`max-w-xl text-center text-sm text-muted-foreground`,children:s})]})}F.register(`cloud:onboarding-next`,e=>(0,Q.jsx)(ng,{...e}),{namespace:`app-shell`,label:`Cloud Onboarding Next-Step`,category:`plugin`,inputs:[]});var rg=`/api/v1/ai/effective-model`;function ig(e,t){return e===`code-default`?t(`aiModelStatus.sourceCodeDefault`):e===`inherits-conversational`?t(`aiModelStatus.sourceInherits`):e.startsWith(`env:`)?t(`aiModelStatus.sourcePinned`,{source:e.slice(4)}):e===`unknown`?t(`aiModelStatus.sourceUnknown`):e}function ag(e){return e.startsWith(`env:`)?`default`:`secondary`}function og(e){let t=(0,$.useMemo)(()=>_(),[]),[n,r]=(0,$.useState)({phase:`loading`});return(0,$.useEffect)(()=>{let n=!1,i=``.replace(/\/+$/,``);return(async()=>{try{let a=await t(`${i}${e}`,{method:`GET`,credentials:`include`});if(!a.ok){n||r({phase:`error`,status:a.status});return}let o=await a.json().catch(()=>null),s=o?.data??o;if(n)return;if(!s||typeof s!=`object`||!s.conversational){r({phase:`error`});return}r({phase:`ready`,report:s})}catch{n||r({phase:`error`})}})(),()=>{n=!0}},[t,e]),n}function sg({label:e,model:t,source:n,t:r}){return(0,Q.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2 py-2 border-b border-border last:border-b-0`,children:[(0,Q.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:e}),(0,Q.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(`code`,{className:`text-sm font-medium`,children:t??`—`}),(0,Q.jsx)(ir,{variant:ag(n),children:ig(n,r)})]})]})}function cg({properties:e}){let{t}=V(),n=og(e?.effectiveModelUrl||rg);if(n.phase===`loading`)return(0,Q.jsxs)(`div`,{className:`space-y-2`,"data-ai-model-status":`loading`,children:[(0,Q.jsx)(jr,{className:`h-5 w-3/4 rounded`}),(0,Q.jsx)(jr,{className:`h-10 w-full rounded`}),(0,Q.jsx)(jr,{className:`h-10 w-full rounded`})]});if(n.phase===`error`)return(0,Q.jsx)(`div`,{className:`text-sm text-muted-foreground`,"data-ai-model-status":`error`,children:n.status?t(`aiModelStatus.readFailedWithStatus`,{status:n.status}):t(`aiModelStatus.readFailed`)});let{report:r}=n,i=Object.entries(r.overrides).filter(([,e])=>e!=null),a=t(`aiModelStatus.modelUnknown`);return(0,Q.jsxs)(`div`,{className:`space-y-4`,"data-ai-model-status":`ready`,children:[(0,Q.jsxs)(`p`,{className:`text-sm text-foreground`,"data-testid":`ai-model-summary`,children:[t(`aiModelStatus.summary`,{conversational:r.conversational.model??a,conversationalSource:ig(r.conversational.source,t),structured:r.structured.model??a,structuredSource:ig(r.structured.source,t)}),r.routing?(0,Q.jsxs)(Q.Fragment,{children:[` `,t(`aiModelStatus.summaryRouting`,{free:r.routing.free,paid:r.routing.paid})]}):null]}),(0,Q.jsxs)(`div`,{className:`rounded-md border border-border px-3`,children:[(0,Q.jsx)(sg,{label:t(`aiModelStatus.rowConversational`),t,model:r.conversational.model,source:r.conversational.source}),(0,Q.jsx)(sg,{label:t(`aiModelStatus.rowStructured`),t,model:r.structured.model,source:r.structured.source}),(0,Q.jsx)(sg,{label:t(`aiModelStatus.rowReasoning`),t,model:r.reasoningEffort.effective,source:r.reasoningEffort.source})]}),(0,Q.jsxs)(`div`,{className:`text-xs text-muted-foreground`,children:[(0,Q.jsx)(`span`,{className:`font-medium`,children:t(`aiModelStatus.overridesInEffect`)}),i.length===0?(0,Q.jsx)(`span`,{children:t(`aiModelStatus.noOverrides`)}):(0,Q.jsx)(`code`,{children:i.map(([e,t])=>`${e}=${t}`).join(` · `)})]}),(0,Q.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[t(`aiModelStatus.adapter`),(0,Q.jsxs)(`code`,{children:[r.adapter,r.provider?` / ${r.provider}`:``]})]})]})}F.register(`cloud:ai-model-status`,e=>(0,Q.jsx)(cg,{...e}),{namespace:`app-shell`,label:`Cloud AI Model Status`,category:`plugin`,inputs:[]});var lg=e=>{let{"data-obj-id":t,"data-obj-type":n,style:r,...i}=e||{};return{designer:{"data-obj-id":t,"data-obj-type":n,style:r},rest:i}};F.register(`attachments`,({schema:e,className:t,...n})=>{let r=G(),{user:i}=T(),{designer:a}=lg(n),o=r?.objectName,s=r?.recordId==null?``:String(r.recordId);return!o||!s?null:(0,Q.jsx)(`div`,{className:t,...a,children:(0,Q.jsx)(na,{objectName:o,recordId:s,dataSource:r?.dataSource,currentUserId:i?.id})})},{namespace:`record`,skipFallback:!0,category:`record`,label:`Attachments`,icon:`Paperclip`,inputs:[{name:`className`,type:`string`,label:`CSS Class`}]});function ug({packageId:e,onCanvasOpenChange:t}){let{user:n}=T(),r=n?.id,i=$.useMemo(()=>td(),[]),{agents:a,isLoading:o,error:s}=ka({apiBase:i}),c=$.useMemo(()=>ef(`studio-build`,{agents:a}),[a]),l=c?`${i}/agents/${encodeURIComponent(c)}/chat`:void 0,{conversationId:u,initialMessages:d}=cu({userId:c?r:void 0,scope:c?fu({appId:e,product:du(c)}):void 0,apiBase:i,activeId:void 0,forceNew:!1}),f=$.useRef(null);return!o&&a.length===0?null:(0,Q.jsx)(_d,{agents:a,agentsLoading:o,agentsError:s,activeAgent:c,chatApi:l,apiBase:i,conversationId:u,editPackageId:e,initialMessages:d,pendingFirstMessageRef:f,onSent:()=>{},onShare:()=>{},showDebug:!1,onCanvasOpenChange:t},`${l??`local`}:${u??`pending`}`)}function dg({packageId:e,locale:t}){let n=a(),r=i(),o=$.useMemo(()=>td(),[]),s=nf({defaultExpanded:!0,persistExpandedKey:kl,persistWidthKey:Al}),c=hr(),[l,u]=$.useState(!1),{agents:d,isLoading:f}=ka({apiBase:o}),p=$.useCallback(e=>e?s.maximize():s.restore(),[s.maximize,s.restore]),m=$.useCallback(()=>{Rl(`${r.pathname}${r.search}`),n(`/ai/build?package=${encodeURIComponent(e)}`)},[r.pathname,r.search,n,e]);return!f&&d.length===0?null:c?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(sf,{onExpand:()=>u(!0),className:`inline-flex md:hidden`}),(0,Q.jsx)(of,{open:l,onOpenChange:u,title:Z(`engine.studio.aiCopilot`,t),onMaximize:m,children:(0,Q.jsx)(ug,{packageId:e})})]}):s.expanded?(0,Q.jsx)(af,{dock:s,title:Z(`engine.studio.aiCopilot`,t),onMaximize:m,children:(0,Q.jsx)(ug,{packageId:e,onCanvasOpenChange:p})}):(0,Q.jsx)(sf,{onExpand:s.expand})}function fg(e,t,n){return!t&&n?`properties`:t&&!n?`canvas`:e}var pg=1280;function mg(){let[e,t]=$.useState(void 0);return $.useEffect(()=>{let e=window.matchMedia(`(min-width: ${pg}px)`),n=()=>t(window.innerWidth>=pg);return e.addEventListener(`change`,n),t(window.innerWidth>=pg),()=>e.removeEventListener(`change`,n)},[]),!!e}var hg=new Map;function gg(e,t){hg.set(e,t)}function _g(e){return hg.get(e)}function vg({name:e}){return(0,Q.jsx)(Ee,{schema:{type:`object-view`,objectName:e}})}gg(`object`,vg);var yg=[`read`,`create`,`update`,`delete`,`transfer`,`restore`,`purge`],bg={grants:`border-emerald-500/40 bg-emerald-500/10 text-emerald-700 dark:text-emerald-400`,denies:`border-destructive/40 bg-destructive/10 text-destructive`,narrows:`border-amber-400/50 bg-amber-400/10 text-amber-700 dark:text-amber-300`,widens:`border-sky-400/50 bg-sky-400/10 text-sky-700 dark:text-sky-300`,neutral:`border-border bg-muted/40 text-muted-foreground`,not_applicable:`border-border bg-transparent text-muted-foreground/60`},xg={admitted:`border-emerald-500/40 bg-emerald-500/10 text-emerald-700 dark:text-emerald-400`,excluded:`border-destructive/40 bg-destructive/10 text-destructive`,not_evaluated:`border-border bg-transparent text-muted-foreground/60`},Sg={admits:`bg-emerald-500`,excludes:`bg-destructive`,neutral:`bg-muted-foreground/40`},Cg=e=>{let t=e??{};return String(t.full_name||t.name||t.display_name||t.email||t.id||``)};function wg({open:e,onOpenChange:t,defaultObject:n,packageId:r}){let i=Xo(),a=se(),o=Qo(),s=$.useMemo(()=>_(),[]),[c,l]=$.useState(null);$.useEffect(()=>{if(!e||!r){l(null);return}let t=!1;return(async()=>{try{let e=(await o.list(`object`,{packageId:r})??[]).map(e=>{let t=e?.item??e;return{name:String(t?.name??``),label:t?.label}}).filter(e=>!!e.name).sort((e,t)=>e.name.localeCompare(t.name));t||l(e)}catch{t||l(null)}})(),()=>{t=!0}},[e,r,o]);let[u,d]=$.useState(n??``),[f,p]=$.useState(`read`),[m,h]=$.useState(null),[g,v]=$.useState(``),[y,b]=$.useState(!1),[x,S]=$.useState(!1),[C,w]=$.useState(!1),[T,E]=$.useState(null),[D,O]=$.useState(null);$.useEffect(()=>{n&&d(e=>e||n)},[n]);let k=$.useCallback(async()=>{let e=u.trim();if(e){w(!0),E(null),O(null);try{let t=``.replace(/\/+$/,``),n=await s(`${t}/api/v1/security/explain`,{method:`POST`,headers:{"Content-Type":`application/json`},credentials:`include`,body:JSON.stringify({object:e,operation:f,...m?{userId:m.id}:{},...g.trim()?{recordId:g.trim()}:{}})}),r=null;try{r=await n.json()}catch{}if(n.status===403){E(Z(`engine.studio.access.explain.forbidden`,i));return}if(!n.ok){let e=r?.message||r?.error||`HTTP ${n.status} ${n.statusText}`.trim();E(e);return}O(r)}catch(e){E(e?.message??String(e))}finally{w(!1)}}},[s,u,f,m,g,i]),A=e=>Z(`engine.studio.access.explain.op.${e}`,i);return(0,Q.jsx)(Jn,{open:e,onOpenChange:t,children:(0,Q.jsxs)(Un,{side:`right`,className:`w-full overflow-y-auto sm:max-w-xl`,children:[(0,Q.jsxs)(Qr,{children:[(0,Q.jsxs)(oi,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(un,{className:`h-4 w-4`}),` `,Z(`engine.studio.access.explain.title`,i)]}),(0,Q.jsx)(hn,{children:Z(`engine.studio.access.explain.description`,i)})]}),(0,Q.jsxs)(`div`,{className:`mt-4 space-y-3 text-sm`,children:[(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`text-xs font-medium text-muted-foreground`,children:Z(`engine.studio.access.explain.user`,i)}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>b(!0),className:`flex h-8 min-w-0 flex-1 items-center gap-2 rounded-md border bg-background px-2 text-left text-xs hover:bg-muted/60`,children:[(0,Q.jsx)(lr,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground`}),(0,Q.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:m?m.label:Z(`engine.studio.access.explain.self`,i)}),(0,Q.jsx)(wr,{className:`h-3 w-3 shrink-0 text-muted-foreground/70`})]}),m&&(0,Q.jsx)(Y,{variant:`ghost`,size:`sm`,className:`h-8 w-8 shrink-0 p-0 text-muted-foreground`,onClick:()=>h(null),"aria-label":Z(`engine.studio.access.explain.clearUser`,i),title:Z(`engine.studio.access.explain.clearUser`,i),children:(0,Q.jsx)(Pn,{className:`h-4 w-4`})})]})]}),(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-1`,children:[(0,Q.jsx)(`label`,{htmlFor:`explain-object`,className:`text-xs font-medium text-muted-foreground`,children:Z(`engine.studio.access.explain.object`,i)}),c&&c.length>0?(0,Q.jsxs)(`select`,{id:`explain-object`,value:u,onChange:e=>d(e.target.value),className:`h-8 w-full rounded-md border bg-background px-2 text-xs outline-none focus:ring-1 focus:ring-primary`,children:[(0,Q.jsx)(`option`,{value:``,children:Z(`engine.studio.access.explain.objectSelect`,i)}),c.map(e=>(0,Q.jsx)(`option`,{value:e.name,children:e.label&&e.label!==e.name?`${e.label} (${e.name})`:e.name},e.name))]}):(0,Q.jsx)(St,{id:`explain-object`,value:u,onChange:e=>d(e.target.value),placeholder:Z(`engine.studio.access.explain.objectPlaceholder`,i),className:`h-8 text-xs`})]}),(0,Q.jsxs)(`div`,{className:`w-32 shrink-0 space-y-1`,children:[(0,Q.jsx)(`label`,{htmlFor:`explain-operation`,className:`text-xs font-medium text-muted-foreground`,children:Z(`engine.studio.access.explain.operation`,i)}),(0,Q.jsx)(`select`,{id:`explain-operation`,value:f,onChange:e=>p(e.target.value),className:`h-8 w-full rounded-md border bg-background px-2 text-xs outline-none focus:ring-1 focus:ring-primary`,children:yg.map(e=>(0,Q.jsx)(`option`,{value:e,children:A(e)},e))})]})]}),(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{htmlFor:`explain-record`,className:`text-xs font-medium text-muted-foreground`,children:Z(`engine.studio.access.explain.record`,i)}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(St,{id:`explain-record`,value:g,onChange:e=>v(e.target.value),placeholder:Z(`engine.studio.access.explain.recordPlaceholder`,i),className:`h-8 min-w-0 flex-1 text-xs`}),(0,Q.jsxs)(Y,{type:`button`,variant:`outline`,size:`sm`,className:`h-8 shrink-0 gap-1 text-xs`,disabled:!u.trim(),onClick:()=>S(!0),title:Z(`engine.studio.access.explain.pickRecord`,i),children:[(0,Q.jsx)(wr,{className:`h-3 w-3`}),Z(`engine.studio.access.explain.pickRecord`,i)]}),g&&(0,Q.jsx)(Y,{variant:`ghost`,size:`sm`,className:`h-8 w-8 shrink-0 p-0 text-muted-foreground`,onClick:()=>v(``),"aria-label":Z(`engine.studio.access.explain.clearRecord`,i),title:Z(`engine.studio.access.explain.clearRecord`,i),children:(0,Q.jsx)(Pn,{className:`h-4 w-4`})})]})]}),(0,Q.jsxs)(Y,{size:`sm`,className:`h-8 gap-1.5 text-xs`,disabled:C||!u.trim(),onClick:()=>void k(),children:[C?(0,Q.jsx)(J,{className:`h-3.5 w-3.5 animate-spin`}):(0,Q.jsx)(dn,{className:`h-3.5 w-3.5`}),Z(C?`engine.studio.access.explain.running`:`engine.studio.access.explain.run`,i)]})]}),(0,Q.jsxs)(`div`,{className:`mt-5 space-y-4 text-sm`,children:[T&&!C&&(0,Q.jsxs)(`div`,{role:`alert`,className:`flex items-start gap-2 rounded-md border border-destructive/40 bg-destructive/5 p-3 text-xs text-destructive`,children:[(0,Q.jsx)(mn,{className:`mt-0.5 h-3.5 w-3.5 shrink-0`}),(0,Q.jsxs)(`span`,{children:[(0,Q.jsx)(`span`,{className:`font-medium`,children:Z(`engine.studio.access.explain.failed`,i)}),` — `,T]})]}),!D&&!T&&!C&&(0,Q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:Z(`engine.studio.access.explain.empty`,i)}),D&&!C&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{"data-testid":`explain-verdict`,className:D.allowed?`flex items-center gap-2 rounded-md border border-emerald-500/30 bg-emerald-500/10 p-3 text-emerald-700 dark:text-emerald-400`:`flex items-center gap-2 rounded-md border border-destructive/30 bg-destructive/10 p-3 text-destructive`,children:[D.allowed?(0,Q.jsx)(br,{className:`h-4 w-4 shrink-0`}):(0,Q.jsx)(Lr,{className:`h-4 w-4 shrink-0`}),(0,Q.jsx)(`span`,{className:`text-xs font-medium`,children:Zo(D.allowed?`engine.studio.access.explain.allowedLine`:`engine.studio.access.explain.deniedLine`,i,{operation:A(D.operation),object:D.object})})]}),D.record&&(0,Q.jsxs)(`div`,{"data-testid":`explain-record-verdict`,className:D.record.visible?`flex items-start gap-2 rounded-md border border-emerald-500/30 bg-emerald-500/5 p-3 text-emerald-700 dark:text-emerald-400`:`flex items-start gap-2 rounded-md border border-destructive/30 bg-destructive/5 p-3 text-destructive`,children:[D.record.visible?(0,Q.jsx)(br,{className:`mt-0.5 h-4 w-4 shrink-0`}):(0,Q.jsx)(Lr,{className:`mt-0.5 h-4 w-4 shrink-0`}),(0,Q.jsxs)(`div`,{className:`min-w-0 text-xs`,children:[(0,Q.jsx)(`div`,{className:`font-medium`,children:Zo(D.record.visible?`engine.studio.access.explain.recordVisibleLine`:`engine.studio.access.explain.recordHiddenLine`,i,{recordId:D.record.recordId})}),D.record.decidedBy&&(0,Q.jsxs)(`div`,{className:`mt-0.5 text-[11px] text-muted-foreground`,children:[Z(`engine.studio.access.explain.decidedBy`,i),`:`,` `,(0,Q.jsx)(`span`,{className:`font-medium text-foreground`,children:Z(`engine.studio.access.explain.layer.${D.record.decidedBy}`,i)})]})]})]}),(0,Q.jsxs)(`div`,{className:`rounded-md border bg-muted/30 p-3`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,Q.jsx)(`p`,{className:`text-[11px] font-medium text-muted-foreground`,children:Z(`engine.studio.access.explain.principal`,i)}),D.principal.posture&&(0,Q.jsx)(ir,{variant:`outline`,"data-testid":`explain-posture`,className:`px-1.5 py-0 text-[10px] font-medium`,title:Z(`engine.studio.access.explain.postureHint`,i),children:Z(`engine.studio.access.explain.posture.${D.principal.posture}`,i)})]}),(0,Q.jsxs)(`p`,{className:`mt-1 truncate font-mono text-xs text-foreground`,children:[D.principal.userId??`(anonymous)`,D.principal.onBehalfOf?.userId?` ⇄ ${D.principal.onBehalfOf.userId}`:``]}),(0,Q.jsxs)(`div`,{className:`mt-2 space-y-1.5`,children:[(0,Q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1`,children:[(0,Q.jsxs)(`span`,{className:`text-[11px] text-muted-foreground`,children:[Z(`engine.studio.access.explain.positions`,i),`:`]}),(D.principal.positions??[]).map(e=>(0,Q.jsx)(ir,{variant:`outline`,className:`px-1.5 py-0 text-[10px] font-normal`,children:e},e))]}),(0,Q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1`,children:[(0,Q.jsxs)(`span`,{className:`text-[11px] text-muted-foreground`,children:[Z(`engine.studio.access.explain.permissionSets`,i),`:`]}),(D.principal.permissionSets??[]).map(e=>(0,Q.jsx)(ir,{variant:`secondary`,className:`px-1.5 py-0 text-[10px] font-normal`,children:e},e))]})]})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`p`,{className:`mb-2 text-[11px] font-medium text-muted-foreground`,children:Z(`engine.studio.access.explain.layers`,i)}),(0,Q.jsx)(`ol`,{className:`space-y-2`,children:D.layers.map(e=>(0,Q.jsxs)(`li`,{className:`rounded-md border p-2.5`,"data-testid":`explain-layer-${e.layer}`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-xs font-medium`,children:Z(`engine.studio.access.explain.layer.${e.layer}`,i)}),(0,Q.jsx)(`span`,{className:`shrink-0 rounded border px-1.5 py-0.5 text-[10px] leading-none ${bg[e.verdict]??bg.neutral}`,children:Z(`engine.studio.access.explain.verdict.${e.verdict}`,i)}),e.kernelTier&&(0,Q.jsx)(`span`,{className:`shrink-0 rounded border border-border bg-muted/40 px-1.5 py-0.5 text-[9px] uppercase leading-none text-muted-foreground`,title:Z(`engine.studio.access.explain.kernelTierHint`,i),children:Z(`engine.studio.access.explain.kernelTier.${e.kernelTier}`,i)})]}),(0,Q.jsx)(`p`,{className:`mt-1 text-[11px] leading-relaxed text-muted-foreground`,children:e.detail}),(e.contributors??[]).length>0&&(0,Q.jsxs)(`div`,{className:`mt-1.5 flex flex-wrap items-center gap-1`,children:[(0,Q.jsxs)(`span`,{className:`text-[10px] text-muted-foreground/70`,children:[Z(`engine.studio.access.explain.contributors`,i),`:`]}),(e.contributors??[]).map((e,t)=>(0,Q.jsx)(ir,{variant:e.kind===`position`?`outline`:`secondary`,className:`px-1.5 py-0 text-[10px] font-normal`,title:e.via?`${e.kind} · via ${e.via}`:e.kind,children:e.name},`${e.kind}:${e.name}:${t}`))]}),e.record&&(0,Q.jsxs)(`div`,{className:`mt-2 space-y-1.5 rounded border border-dashed border-border/70 bg-muted/20 p-2`,"data-testid":`explain-record-${e.layer}`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(`span`,{className:`text-[10px] font-medium uppercase text-muted-foreground/70`,children:Z(`engine.studio.access.explain.recordOutcome`,i)}),(0,Q.jsx)(`span`,{className:`shrink-0 rounded border px-1.5 py-0.5 text-[10px] leading-none ${xg[e.record.outcome]??xg.not_evaluated}`,children:Z(`engine.studio.access.explain.outcome.${e.record.outcome}`,i)}),e.record.matchesRecord!=null&&(0,Q.jsx)(`span`,{className:`text-[10px] text-muted-foreground/70`,children:Z(e.record.matchesRecord?`engine.studio.access.explain.matches`:`engine.studio.access.explain.noMatch`,i)})]}),e.record.detail&&(0,Q.jsx)(`p`,{className:`text-[11px] leading-relaxed text-muted-foreground`,children:e.record.detail}),(e.record.rules??[]).length>0&&(0,Q.jsx)(`ul`,{className:`space-y-1`,children:(e.record.rules??[]).map((e,t)=>(0,Q.jsxs)(`li`,{className:`flex items-center gap-1.5 text-[11px]`,children:[(0,Q.jsx)(`span`,{className:`h-1.5 w-1.5 shrink-0 rounded-full ${Sg[e.effect]??Sg.neutral}`,title:e.effect}),(0,Q.jsx)(`span`,{className:`font-medium text-foreground`,children:Z(`engine.studio.access.explain.ruleKind.${e.kind}`,i)}),(0,Q.jsx)(`span`,{className:`min-w-0 truncate text-muted-foreground`,title:e.name,children:e.name}),e.grants&&(0,Q.jsx)(ir,{variant:`secondary`,className:`px-1 py-0 text-[9px] font-normal`,children:e.grants}),e.via&&(0,Q.jsxs)(`span`,{className:`min-w-0 truncate text-[10px] text-muted-foreground/70`,children:[`· `,e.via]})]},`${e.kind}:${e.name}:${t}`))}),e.record.rowFilter!==void 0&&(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`p`,{className:`text-[10px] font-medium text-muted-foreground/70`,children:Z(`engine.studio.access.explain.effectiveRowFilter`,i)}),(0,Q.jsx)(`pre`,{className:`mt-0.5 overflow-x-auto rounded border bg-background/60 p-1.5 font-mono text-[10px] leading-snug`,children:JSON.stringify(e.record.rowFilter,null,2)})]})]})]},e.layer))})]}),D.operation===`read`&&D.readFilter!==void 0&&(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`p`,{className:`mb-1 text-[11px] font-medium text-muted-foreground`,children:Z(`engine.studio.access.explain.readFilter`,i)}),(0,Q.jsx)(`pre`,{className:`overflow-x-auto rounded-md border bg-muted/30 p-2 font-mono text-[11px] leading-snug`,children:JSON.stringify(D.readFilter,null,2)})]})]})]}),(0,Q.jsx)(ci,{open:y,onOpenChange:e=>b(e),dataSource:a,objectName:`sys_user`,title:Z(`engine.studio.access.explain.pickUserTitle`,i),onSelect:()=>{},onSelectRecords:e=>{let t=e?.[0];t?.id!=null&&h({id:String(t.id),label:Cg(t)}),b(!1)}}),u.trim()&&(0,Q.jsx)(ci,{open:x,onOpenChange:e=>S(e),dataSource:a,objectName:u.trim(),title:Z(`engine.studio.access.explain.pickRecordTitle`,i),onSelect:()=>{},onSelectRecords:e=>{let t=e?.[0];t?.id!=null&&v(String(t.id)),S(!1)}})]})})}async function Tg(e,t,n){let[r,i]=await Promise.all([e.list(t,{packageId:n}),e.listDrafts({packageId:n,type:t}).catch(()=>[])]),a=(r||[]).map(e=>({type:t,name:String(e.name??``),label:String(e.label??e.name??``)})).filter(e=>e.name),o=new Set(a.map(e=>e.name));for(let e of i||[]){let n=String(e?.name??``);n&&!o.has(n)&&(a.push({type:t,name:n,label:n}),o.add(n))}return a}function Eg(e){let[t,n]=s(),r=$.useRef(qa(t.get(Ja))),i=e?.type,a=e?.name;return $.useEffect(()=>{!i||!a||n(e=>{let t=new URLSearchParams(e);return t.set(Ja,Ya({type:i,name:a})),t},{replace:!0})},[i,a]),r.current}function Dg(e,t,n){if(!(!t||t.type!==n))return e.find(e=>e.name===t.name)}function Og(e,t,n){return{name:e,label:t,fields:{name:{type:`text`,label:n}}}}function kg(e,t,n,r){return{name:e,label:t,type:`autolaunched`,nodes:[{id:`start`,type:`start`,label:n},{id:`end`,type:`end`,label:r}],edges:[{id:`e1`,source:`start`,target:`end`}]}}function Ag(e,t,n=[]){return{name:e,label:t,active:!0,navigation:n.map(e=>({id:`nav_${e.name}`,type:`object`,label:e.label,objectName:e.name}))}}function jg(e,t){return{name:e,label:t,objects:{},fields:{}}}function Mg({open:e,onOpenChange:t,title:n,description:r,labelFieldLabel:i,labelPlaceholder:a,idFieldLabel:o,idPlaceholder:s,submitLabel:c,submittingLabel:l,busy:u=!1,error:d,locale:f,extra:p,onSubmit:m}){let[h,g]=$.useState(``),[_,v]=$.useState(``),[y,b]=$.useState(!1);$.useEffect(()=>{e&&(g(``),v(``),b(!1))},[e]);let x=vs((_.trim()||h).trim()),S=!!h.trim()&&!!x&&x!==`field`,C=()=>{!S||u||m({label:h.trim(),name:x})};return(0,Q.jsx)(Xn,{open:e,onOpenChange:t,children:(0,Q.jsxs)(Gn,{children:[(0,Q.jsxs)(si,{children:[(0,Q.jsx)(Sn,{children:n}),r&&(0,Q.jsx)(gn,{children:r})]}),(0,Q.jsxs)(`div`,{className:`space-y-4 py-2`,children:[(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(ft,{children:i}),(0,Q.jsx)(St,{autoFocus:!0,value:h,onChange:e=>{g(e.target.value),y||v(bs(e.target.value))},onKeyDown:e=>{e.key===`Enter`&&C()},placeholder:a})]}),(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(ft,{children:o}),(0,Q.jsx)(St,{className:`font-mono`,value:_,onChange:e=>{b(!0),v(bs(e.target.value))},onKeyDown:e=>{e.key===`Enter`&&C()},placeholder:s})]}),p,d&&(0,Q.jsx)(`p`,{className:`text-sm text-destructive`,children:d})]}),(0,Q.jsxs)($r,{children:[(0,Q.jsx)(Y,{variant:`outline`,onClick:()=>t(!1),disabled:u,children:Z(`engine.studio.cancel`,f)}),(0,Q.jsx)(Y,{onClick:C,disabled:!S||u,children:u?l??c:c})]})]})})}var Ng=`__ungrouped__`,Pg=e=>`g:${e}`,Fg=e=>`f:${e}`,Ig=e=>e.slice(2),Lg=e=>e.slice(2);function Rg({type:e}){let t=Xo(),n=`mt-1 flex items-center rounded-md border bg-muted/30 px-2 text-[11px] text-muted-foreground`;switch(e){case`select`:case`radio`:case`lookup`:case`reference`:case`user`:case`multiselect`:return(0,Q.jsxs)(`div`,{className:`${n} h-7 justify-between`,children:[(0,Q.jsx)(`span`,{children:Z(e===`lookup`||e===`reference`||e===`user`?`engine.studio.designer.search`:`engine.studio.designer.select`,t)}),(0,Q.jsx)(`span`,{children:`▾`})]});case`textarea`:case`html`:case`markdown`:case`json`:case`code`:return(0,Q.jsx)(`div`,{className:`${n} h-14 items-start pt-1.5`,children:`…`});case`boolean`:case`checkbox`:case`switch`:return(0,Q.jsx)(`div`,{className:`mt-1 flex items-center`,children:(0,Q.jsx)(`span`,{className:`h-4 w-7 rounded-full bg-muted`})});case`number`:case`currency`:case`percent`:return(0,Q.jsx)(`div`,{className:`${n} h-7`,children:`0.00`});case`date`:case`datetime`:case`time`:return(0,Q.jsx)(`div`,{className:`${n} h-7`,children:Z(`engine.studio.designer.pickDate`,t)});default:return(0,Q.jsx)(`div`,{className:`${n} h-7`,children:`\xA0`})}}function zg({entry:e,label:t,columns:n,selected:r,onSelect:i}){let a=Xo(),{attributes:o,listeners:s,setNodeRef:c,transform:l,transition:u,isDragging:d}=zo({id:Fg(e.name)}),f=String(e.def.type??`text`),p=!!e.def.required,m=n>1&&Si(f);return(0,Q.jsxs)(`div`,{ref:c,style:{transform:Wo.Transform.toString(l),transition:u},onClick:i,...o,...s,"aria-label":Zo(`engine.studio.designer.fieldAria`,a,{label:t}),className:`group relative flex cursor-grab touch-none select-none items-start gap-1.5 rounded-md border bg-background px-2 py-2 active:cursor-grabbing `+(m?`col-span-full `:``)+(r?`ring-2 ring-primary`:`hover:border-foreground/25`)+(d?` opacity-40`:``),children:[(0,Q.jsx)(`span`,{className:`mt-0.5 text-muted-foreground opacity-0 group-hover:opacity-100`,children:(0,Q.jsx)(Ze,{className:`h-3.5 w-3.5`})}),(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-1 text-xs font-medium`,children:[(0,Q.jsx)(`span`,{className:`truncate`,children:t}),p&&(0,Q.jsx)(`span`,{className:`text-destructive`,children:`*`}),(0,Q.jsx)(`span`,{className:`ml-1 text-[9px] uppercase tracking-wide text-muted-foreground/70`,children:f})]}),(0,Q.jsx)(Rg,{type:f})]})]})}function Bg({containerId:e,title:t,fieldIds:n,columns:r,isDeclared:i,canMoveUp:a,canMoveDown:o,entryByName:s,fieldLabelOf:c,selectedField:l,onSelectField:u,selected:d=!1,onSelect:f,onRename:p,onDelete:m,onMove:h,readOnly:g=!1}){let _=Xo(),{setNodeRef:v,isOver:y}=Fo({id:e});return(0,Q.jsxs)(`div`,{className:`@container rounded-lg border `+(y?`border-primary bg-primary/5`:d?`border-primary/50 bg-primary/5 ring-2 ring-primary`:`bg-muted/20`),children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-1 border-b px-3 py-1.5`,children:[i&&!g?(0,Q.jsx)(`input`,{defaultValue:t,onBlur:e=>e.target.value.trim()&&e.target.value!==t&&p(e.target.value),onKeyDown:e=>{e.key===`Enter`&&e.target.blur()},className:`min-w-0 flex-1 rounded bg-transparent px-1 py-0.5 text-[13px] font-medium outline-none hover:bg-muted focus:bg-background focus:ring-1 focus:ring-primary`}):(0,Q.jsx)(`span`,{className:`flex-1 px-1 text-[13px] font-medium text-muted-foreground`,children:t}),i&&f&&(0,Q.jsx)(`button`,{type:`button`,onClick:f,"aria-label":Z(`engine.studio.designer.group.settings`,_),title:Z(`engine.studio.designer.group.settings`,_),className:`rounded p-0.5 hover:bg-muted `+(d?`text-primary`:`text-muted-foreground hover:text-foreground`),children:(0,Q.jsx)(yr,{className:`h-3.5 w-3.5`})}),i&&!g&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`button`,{type:`button`,disabled:!a,onClick:()=>h(-1),"aria-label":Z(`engine.studio.designer.groupUp`,_),className:`rounded p-0.5 text-muted-foreground hover:bg-muted disabled:opacity-30`,children:(0,Q.jsx)(Kr,{className:`h-3.5 w-3.5`})}),(0,Q.jsx)(`button`,{type:`button`,disabled:!o,onClick:()=>h(1),"aria-label":Z(`engine.studio.designer.groupDown`,_),className:`rounded p-0.5 text-muted-foreground hover:bg-muted disabled:opacity-30`,children:(0,Q.jsx)(kr,{className:`h-3.5 w-3.5`})}),(0,Q.jsx)(`button`,{type:`button`,onClick:m,"aria-label":Z(`engine.studio.designer.groupDelete`,_),title:Z(`engine.studio.designer.groupDeleteTitle`,_),className:`rounded p-0.5 text-muted-foreground hover:bg-destructive/10 hover:text-destructive`,children:(0,Q.jsx)(bn,{className:`h-3.5 w-3.5`})})]})]}),(0,Q.jsx)(Vo,{items:n,strategy:Bo,children:(0,Q.jsxs)(`div`,{ref:v,className:`min-h-[52px] p-2.5 `+(yi(r)??`grid grid-cols-1 gap-4`),children:[n.length===0&&(0,Q.jsx)(`div`,{className:`col-span-full flex items-center justify-center rounded-md border border-dashed py-3 text-[11px] text-muted-foreground`,children:Z(`engine.studio.designer.dropHere`,_)}),n.map(e=>{let t=Lg(e),n=s.get(t);return n?(0,Q.jsx)(zg,{entry:n,label:c(n),columns:r,selected:l===t,onSelect:()=>u(t)},e):null})]})})]})}function Vg({draft:e,objectName:t,systemFieldNames:n,onChange:r,selectedField:i,onSelectField:a,onAddField:o,selectedGroup:s,onSelectGroup:c,readOnly:l=!1}){let u=Xo(),d=$.useMemo(()=>_s(e.fields),[e.fields]),f=$.useMemo(()=>ys(e.fieldGroups),[e.fieldGroups]),p=$.useMemo(()=>new Map(d.entries.map(e=>[e.name,e])),[d]),{fieldLabel:m,sectionLabel:h}=le(),g=t||(typeof e.name==`string`?e.name:``),_=$.useCallback(e=>{let t=String(e.def.label??e.name);return g?m(g,e.name,t):t},[g,m]),v=$.useMemo(()=>xi(d.entries.filter(e=>!n.has(e.name)).length),[d.entries,n]),y=$.useMemo(()=>[...f.map(e=>Pg(e.key)),Pg(Ng)],[f]),b=$.useMemo(()=>{let e=new Map;for(let t of f){let n=t.label||t.key;e.set(Pg(t.key),g?h(g,t.key,n):n)}return e.set(Pg(Ng),Z(`engine.studio.designer.ungrouped`,u)),e},[f,u,g,h]),x=$.useMemo(()=>{let e={};for(let t of y)e[t]=[];for(let t of d.entries){if(n.has(t.name))continue;let r=typeof t.def.group==`string`?t.def.group:``;e[r&&e[Pg(r)]?Pg(r):Pg(Ng)].push(Fg(t.name))}return e},[d.entries,y,n]),[S,C]=$.useState(x),[w,T]=$.useState(null);$.useEffect(()=>{w||C(x)},[x,w]);let E=$.useRef(S);$.useEffect(()=>{E.current=S},[S]);let D=Uo(jo(Po,{activationConstraint:{distance:4}}),jo(Ho,{coordinateGetter:Mo})),O=$.useCallback(e=>e.startsWith(`g:`)?e:Object.keys(S).find(t=>S[t].includes(e)),[S]),k=$.useCallback(e=>{let t=[];for(let n of y){let r=Ig(n);for(let i of e[n]??[]){let e=p.get(Lg(i));if(!e)continue;let n={...e.def};r===Ng?delete n.group:n.group=r,t.push({name:e.name,def:n})}}let i=d.entries.filter(e=>n.has(e.name)),a={shape:d.shape,entries:[...i,...t]};r({fields:hs(a)})},[y,p,d,n,r]),A=e=>T(String(e.active.id)),j=e=>{let t=String(e.active.id),n=e.over?String(e.over.id):null;if(!n)return;let r=O(t),i=O(n);!r||!i||r===i||C(e=>{let a=e[r]??[],o=e[i]??[],s=n.startsWith(`g:`)?o.length:o.indexOf(n),c=s<0?o.length:s;return{...e,[r]:a.filter(e=>e!==t),[i]:[...o.slice(0,c),t,...o.slice(c)]}})},M=e=>{T(null);let t=String(e.active.id),n=e.over?String(e.over.id):null;if(!n)return;let r=E.current,i=e=>e.startsWith(`g:`)&&e in r?e:Object.keys(r).find(t=>r[t].includes(e)),a=i(t),o=i(n);if(!a||!o)return;let s;if(a===o){let e=r[a],i=e.indexOf(t),o=n.startsWith(`g:`)?e.length-1:e.indexOf(n);if(i<0||o<0||i===o){k(r);return}s={...r,[a]:Ro(e,i,o)}}else{let e=r[a].filter(e=>e!==t),i=r[o],c=n.startsWith(`g:`)?i.length:i.indexOf(n),l=c<0?i.length:c;s={...r,[a]:e,[o]:[...i.slice(0,l),t,...i.slice(l)]}}C(s),k(s)},N=()=>r({fieldGroups:os(f,Z(`engine.studio.designer.newGroup`,u))}),ee=(e,t)=>r({fieldGroups:cs(f,e,t)}),P=(e,t)=>r({fieldGroups:ds(f,e,t)}),F=e=>r({fieldGroups:ps(f,e),fields:hs(as(d,e))}),te=w&&!w.startsWith(`g:`)?p.get(Lg(w)):null;return(0,Q.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-auto rounded-lg border bg-background p-4`,children:[(0,Q.jsxs)(`div`,{className:`mb-3 flex items-center gap-2`,children:[(0,Q.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-[11px] text-muted-foreground`,children:[(0,Q.jsx)(wn,{className:`h-3.5 w-3.5`}),` `,Z(`engine.studio.designer.hint`,u)]}),!l&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`button`,{type:`button`,onClick:N,className:`ml-auto inline-flex items-center gap-1 rounded-md border px-2 py-1 text-[11px] text-muted-foreground hover:bg-muted hover:text-foreground`,children:[(0,Q.jsx)(Ue,{className:`h-3.5 w-3.5`}),` `,Z(`engine.studio.designer.addGroup`,u)]}),o&&(0,Q.jsxs)(`button`,{type:`button`,onClick:o,className:`inline-flex items-center gap-1 rounded-md border px-2 py-1 text-[11px] text-muted-foreground hover:bg-muted hover:text-foreground`,children:[(0,Q.jsx)(Ue,{className:`h-3.5 w-3.5`}),` `,Z(`engine.studio.data.addField`,u)]})]})]}),(0,Q.jsxs)(No,{sensors:l?[]:D,collisionDetection:Io,onDragStart:A,onDragOver:j,onDragEnd:M,onDragCancel:()=>T(null),children:[(0,Q.jsx)(`div`,{className:`mx-auto flex max-w-6xl flex-col gap-3`,children:y.map(e=>{let t=e===Pg(Ng);if(t&&(S[e]?.length??0)===0&&f.length>0)return null;let n=f.findIndex(t=>Pg(t.key)===e);return(0,Q.jsx)(Bg,{containerId:e,title:b.get(e)??Z(`engine.studio.designer.ungrouped`,u),fieldIds:S[e]??[],columns:v,isDeclared:!t,canMoveUp:n>0,canMoveDown:n>=0&&n<f.length-1,entryByName:p,fieldLabelOf:_,selectedField:i,onSelectField:a,selected:!t&&s===Ig(e),onSelect:!t&&c?()=>c(Ig(e)):void 0,onRename:t=>ee(Ig(e),t),onDelete:()=>F(Ig(e)),onMove:t=>P(Ig(e),t),readOnly:l},e)})}),(0,Q.jsx)(Lo,{children:te?(0,Q.jsxs)(`div`,{className:`flex items-center gap-1.5 rounded-md border bg-background px-2 py-2 shadow-lg`,children:[(0,Q.jsx)(Ze,{className:`h-3.5 w-3.5 text-muted-foreground`}),(0,Q.jsx)(`span`,{className:`text-xs font-medium`,children:_(te)})]}):null})]})]})}function Hg({draft:e,groupKey:t,onPatch:n,onClose:r,readOnly:i=!1,locale:a}){let o=$.useCallback(e=>Z(e,a),[a]),s=$.useMemo(()=>ys(e.fieldGroups),[e.fieldGroups]),c=s.find(e=>e.key===t);if(!c)return(0,Q.jsx)(rs,{kindLabel:o(`engine.studio.designer.group.kind`),title:t,onClose:r,closeLabel:o(`engine.studio.close`),children:(0,Q.jsx)(ns,{message:o(`engine.studio.designer.group.missing`)})});let l=c.collapse??(c.collapsed?`collapsed`:c.collapsible?`expanded`:`none`),u=e=>n({fieldGroups:ls(s,c.key,{collapse:e===`none`?void 0:e,collapsible:void 0,collapsed:void 0,defaultExpanded:void 0})});return(0,Q.jsxs)(rs,{kindLabel:o(`engine.studio.designer.group.kind`),title:c.label||c.key,onClose:r,closeLabel:o(`engine.studio.close`),children:[(0,Q.jsx)(is,{label:o(`engine.studio.designer.group.nameLabel`),value:c.label,onCommit:e=>n({fieldGroups:ls(s,c.key,{label:e})}),disabled:i,testId:`group-label`}),(0,Q.jsx)(es,{label:o(`engine.studio.designer.group.collapseLabel`),value:l,onCommit:e=>u(e||`none`),disabled:i,options:[{value:`none`,label:o(`engine.studio.designer.group.collapseNone`)},{value:`expanded`,label:o(`engine.studio.designer.group.collapseExpanded`)},{value:`collapsed`,label:o(`engine.studio.designer.group.collapseCollapsed`)}]}),(0,Q.jsx)(`p`,{className:`text-[11px] leading-4 text-muted-foreground`,children:o(`engine.studio.designer.group.collapseHint`)})]})}var Ug=[{value:`script`,labelKey:`engine.studio.rules.typeScript`},{value:`cross_field`,labelKey:`engine.studio.rules.typeCrossField`},{value:`state_machine`,labelKey:`engine.studio.rules.typeStateMachine`},{value:`format`,labelKey:`engine.studio.rules.typeFormat`},{value:`json_schema`,labelKey:`engine.studio.rules.typeJsonSchema`},{value:`conditional`,labelKey:`engine.studio.rules.typeConditional`}],Wg=[`insert`,`update`,`delete`],Gg=[``,`url`,`email`,`phone`,`json`];function Kg(e){return Array.isArray(e)?e.filter(e=>!!e&&typeof e==`object`):[]}function qg(e){let t=e.length+1,n=`validation_${t}`,r=new Set(e);for(;r.has(n);)n=`validation_${++t}`;return n}function Jg(e,t,n){let r={name:t,message:``,severity:`error`,active:!0};switch(e){case`script`:return{...r,type:e,condition:`false`};case`cross_field`:return{...r,type:e,condition:`false`,fields:n?[n]:[]};case`state_machine`:return{...r,type:e,field:n??``,transitions:{}};case`format`:return{...r,type:e,field:n??``};case`json_schema`:return{...r,type:e,field:n??``,schema:{}};case`conditional`:return{...r,type:e,condition:`false`,then:{type:`script`,name:`${t}_then`,message:``,condition:`false`,severity:`error`}}}}function Yg({label:e,value:t,onCommit:n,disabled:r,locale:i}){let a=$.useMemo(()=>{if(t==null)return``;try{return JSON.stringify(t,null,2)}catch{return``}},[t]),[o,s]=$.useState(a),[c,l]=$.useState(null);return $.useEffect(()=>{s(a),l(null)},[a]),(0,Q.jsxs)(`label`,{className:`block`,children:[(0,Q.jsx)(`span`,{className:`mb-1 block text-[11px] text-muted-foreground`,children:e}),(0,Q.jsx)(`textarea`,{value:o,disabled:r,spellCheck:!1,rows:5,onChange:e=>s(e.target.value),onBlur:()=>{let e=o.trim();if(!e){l(null),n(void 0);return}try{n(JSON.parse(e)),l(null)}catch{l(Z(`engine.studio.rules.invalidJson`,i))}},className:`w-full rounded border bg-background px-2 py-1 font-mono text-[11px]`}),c&&(0,Q.jsx)(`span`,{className:`mt-1 block text-[11px] text-destructive`,children:c})]})}function Xg({transitions:e,onCommit:t,disabled:n,locale:r}){let i=Object.entries(e),a=(e,n,r)=>{let a={};i.forEach(([t,i],o)=>{o===e?n&&(a[n]=r):a[t]=i}),t(a)};return(0,Q.jsxs)(`div`,{className:`space-y-2`,children:[(0,Q.jsx)(`span`,{className:`block text-[11px] text-muted-foreground`,children:Z(`engine.studio.rules.transitions`,r)}),i.map(([e,t],i)=>(0,Q.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,Q.jsx)(`input`,{value:e,disabled:n,placeholder:Z(`engine.studio.rules.transitionFrom`,r),onChange:e=>a(i,e.target.value,t),className:`w-32 rounded border bg-background px-2 py-1 text-[12px]`}),(0,Q.jsx)(`span`,{className:`text-muted-foreground`,children:`→`}),(0,Q.jsx)(`input`,{value:t.join(`, `),disabled:n,placeholder:Z(`engine.studio.rules.transitionTo`,r),onChange:t=>a(i,e,t.target.value.split(`,`).map(e=>e.trim()).filter(Boolean)),className:`min-w-0 flex-1 rounded border bg-background px-2 py-1 text-[12px]`}),!n&&(0,Q.jsx)(`button`,{type:`button`,"aria-label":Z(`engine.studio.rules.delete`,r),onClick:()=>a(i,``,[]),className:`rounded border border-destructive/40 p-1 text-destructive hover:bg-destructive/10`,children:(0,Q.jsx)(bn,{className:`h-3 w-3`})})]},i)),!n&&(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>t({...e,"":[]}),disabled:``in e,className:`inline-flex items-center gap-1 rounded border px-1.5 py-0.5 text-[11px] hover:bg-muted disabled:opacity-50`,children:[(0,Q.jsx)(Ue,{className:`h-3 w-3`}),` `,Z(`engine.studio.rules.addTransition`,r)]})]})}function Zg({rule:e,fields:t,patch:n,disabled:r,locale:i,onBlockingIssuesChange:a}){let o=(e,n,a)=>(0,Q.jsxs)(`label`,{className:`block`,children:[(0,Q.jsx)(`span`,{className:`mb-1 block text-[11px] text-muted-foreground`,children:e}),(0,Q.jsxs)(`select`,{value:n??``,disabled:r,onChange:e=>a(e.target.value),className:`w-full rounded border bg-background px-2 py-1 text-[12px]`,children:[(0,Q.jsx)(`option`,{value:``,children:Z(`engine.studio.rules.pickField`,i)}),t.map(e=>(0,Q.jsx)(`option`,{value:e.name,children:e.label&&e.label!==e.name?`${e.label} (${e.name})`:e.name},e.name))]})]}),s=(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(`span`,{className:`mb-1 block text-[11px] text-muted-foreground`,children:[Z(`engine.studio.rules.celPre`,i),(0,Q.jsx)(`b`,{children:Z(`engine.studio.rules.celTrue`,i)}),Z(`engine.studio.rules.celMid`,i),(0,Q.jsx)(`code`,{className:`rounded bg-muted px-1`,children:`false`}),Z(`engine.studio.rules.celPost`,i)]}),(0,Q.jsx)(ms,{value:gs(e.condition),onCommit:t=>n({condition:fs(e.condition,t)}),fields:t,disabled:r,onBlockingIssuesChange:a})]});switch(e.type){case`script`:return s;case`cross_field`:{let a=Array.isArray(e.fields)?e.fields:[],o=(e,t)=>n({fields:t?[...new Set([...a,e])]:a.filter(t=>t!==e)});return(0,Q.jsxs)(Q.Fragment,{children:[s,(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`span`,{className:`mb-1 block text-[11px] text-muted-foreground`,children:Z(`engine.studio.rules.fields`,i)}),(0,Q.jsxs)(`div`,{className:`flex flex-wrap gap-2 rounded border p-2`,children:[t.length===0&&(0,Q.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:Z(`engine.studio.rules.noFields`,i)}),t.map(e=>(0,Q.jsxs)(`label`,{className:`flex items-center gap-1 text-[12px]`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:a.includes(e.name),disabled:r,onChange:t=>o(e.name,t.target.checked)}),e.label&&e.label!==e.name?`${e.label} (${e.name})`:e.name]},e.name))]})]})]})}case`state_machine`:return(0,Q.jsxs)(Q.Fragment,{children:[o(Z(`engine.studio.rules.statusField`,i),e.field,e=>n({field:e})),(0,Q.jsx)(Xg,{transitions:e.transitions&&typeof e.transitions==`object`?e.transitions:{},onCommit:e=>n({transitions:e}),disabled:r,locale:i})]});case`format`:return(0,Q.jsxs)(Q.Fragment,{children:[o(Z(`engine.studio.rules.field`,i),e.field,e=>n({field:e})),(0,Q.jsxs)(`label`,{className:`block`,children:[(0,Q.jsx)(`span`,{className:`mb-1 block text-[11px] text-muted-foreground`,children:Z(`engine.studio.rules.format`,i)}),(0,Q.jsx)(`select`,{value:typeof e.format==`string`?e.format:``,disabled:r,onChange:e=>n({format:e.target.value||void 0}),className:`w-full rounded border bg-background px-2 py-1 text-[12px]`,children:Gg.map(e=>(0,Q.jsx)(`option`,{value:e,children:e||Z(`engine.studio.rules.formatNone`,i)},e||`none`))})]}),(0,Q.jsxs)(`label`,{className:`block`,children:[(0,Q.jsx)(`span`,{className:`mb-1 block text-[11px] text-muted-foreground`,children:Z(`engine.studio.rules.regex`,i)}),(0,Q.jsx)(`input`,{value:typeof e.regex==`string`?e.regex:``,disabled:r,placeholder:`^[A-Z]{2}\\\\d{4}$`,onChange:e=>n({regex:e.target.value||void 0}),className:`w-full rounded border bg-background px-2 py-1 font-mono text-[12px]`})]})]});case`json_schema`:return(0,Q.jsxs)(Q.Fragment,{children:[o(Z(`engine.studio.rules.field`,i),e.field,e=>n({field:e})),(0,Q.jsx)(Yg,{label:Z(`engine.studio.rules.jsonSchema`,i),value:e.schema,onCommit:e=>n({schema:e??{}}),disabled:r,locale:i})]});case`conditional`:return(0,Q.jsxs)(Q.Fragment,{children:[s,(0,Q.jsx)(Yg,{label:Z(`engine.studio.rules.then`,i),value:e.then,onCommit:e=>n({then:e}),disabled:r,locale:i}),(0,Q.jsx)(Yg,{label:Z(`engine.studio.rules.otherwise`,i),value:e.otherwise,onCommit:e=>n({otherwise:e}),disabled:r,locale:i})]});default:return null}}function Qg({draft:e,onPatch:t,disabled:n,onBlockingIssuesChange:r}){let i=Xo(),a=$.useMemo(()=>Kg(e.validations),[e.validations]),[o,s]=$.useState(null),[c,l]=$.useState(!1),u=a.some(e=>e.name===o)?o:a[0]?.name??null,d=$.useMemo(()=>_s(e.fields).entries.map(e=>({name:e.name,label:typeof e.def.label==`string`?e.def.label:void 0,hidden:e.def.hidden===!0})),[e.fields]),f=d.find(e=>!e.hidden)?.name??d[0]?.name,[p,m]=$.useState({}),h=$.useCallback((e,t)=>{m(n=>n[e]===t?n:{...n,[e]:t})},[]),g=$.useMemo(()=>new Set(a.map(e=>e.name??``)),[a]),_=$.useMemo(()=>{let e=0;for(let[t,n]of Object.entries(p))g.has(t)&&(e+=n);return e},[p,g]),v=$.useRef(r);$.useEffect(()=>{v.current=r}),$.useEffect(()=>{v.current?.(_)},[_]);let y=e=>t({validations:e}),b=(e,t)=>y(a.map(n=>n.name===e?{...n,...t}:n)),x=e=>{let t=qg(a.map(e=>e.name??``));y([...a,Jg(e,t,f)]),s(t)},S=e=>{y(a.filter(t=>t.name!==e)),o===e&&s(null)},C=a.find(e=>e.name===u)??null,w=typeof C?.type==`string`?C.type:`script`,T=(e,t)=>{let n=a.find(t=>t.name===e);if(!n)return;let r=Jg(t,e,f);(t===`script`||t===`cross_field`||t===`conditional`)&&gs(n.condition)&&(r.condition=n.condition);for(let e of[`label`,`description`,`message`,`severity`,`active`,`events`,`priority`])n[e]!==void 0&&(r[e]=n[e]);y(a.map(t=>t.name===e?r:t))};return(0,Q.jsxs)(`div`,{className:`flex min-h-0 flex-1 gap-4`,children:[(0,Q.jsxs)(`div`,{className:`flex w-72 shrink-0 flex-col rounded-lg border`,children:[(0,Q.jsxs)(`header`,{className:`flex items-center gap-2 border-b px-3 py-2`,children:[(0,Q.jsx)(ke,{className:`h-3.5 w-3.5`}),(0,Q.jsx)(`span`,{className:`text-[13px] font-medium`,children:Z(`engine.studio.rules.title`,i)}),(0,Q.jsxs)(`span`,{className:`text-[11px] text-muted-foreground`,children:[`(`,a.length,`)`]}),!n&&(0,Q.jsxs)(Me,{open:c,onOpenChange:l,children:[(0,Q.jsx)(gt,{asChild:!0,children:(0,Q.jsxs)(`button`,{type:`button`,className:`ml-auto inline-flex items-center gap-1 rounded border px-1.5 py-0.5 text-[11px] hover:bg-muted`,children:[(0,Q.jsx)(Ue,{className:`h-3 w-3`}),` `,Z(`engine.studio.new`,i),(0,Q.jsx)(kr,{className:`h-3 w-3 text-muted-foreground`})]})}),(0,Q.jsxs)(rr,{align:`end`,sideOffset:4,className:`w-56 p-1`,children:[(0,Q.jsx)(`p`,{className:`px-2 pb-1 pt-0.5 text-[10px] font-medium uppercase tracking-wide text-muted-foreground`,children:Z(`engine.studio.rules.newType`,i)}),Ug.map(e=>(0,Q.jsx)(`button`,{type:`button`,onClick:()=>{x(e.value),l(!1)},className:`flex w-full items-center rounded-md px-2 py-1.5 text-left text-[12px] hover:bg-muted`,children:Z(e.labelKey,i)},e.value))]})]})]}),(0,Q.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto`,children:a.length===0?(0,Q.jsxs)(`p`,{className:`px-3 py-6 text-center text-[11px] leading-5 text-muted-foreground`,children:[Z(`engine.studio.rules.none`,i),(0,Q.jsx)(`br`,{}),Z(`engine.studio.rules.explain`,i)]}):a.map(e=>(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>s(e.name??null),className:`flex w-full items-start gap-2 border-b px-3 py-2 text-left text-[12px] `+(u===e.name?`bg-muted`:`hover:bg-muted/50`),children:[(0,Q.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,Q.jsx)(`span`,{className:`block truncate font-medium`,children:e.label||e.name}),(0,Q.jsx)(`span`,{className:`block truncate text-[11px] text-muted-foreground`,children:e.message||Z(`engine.studio.rules.noMessage`,i)})]}),(0,Q.jsx)(`span`,{className:`shrink-0 rounded-full bg-primary/10 px-1.5 py-0.5 text-[10px] text-primary`,children:e.type??`script`})]},e.name))})]}),(0,Q.jsx)(`div`,{className:`flex min-w-0 flex-1 flex-col rounded-lg border`,children:C?(0,Q.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-3 overflow-auto p-4`,children:[(0,Q.jsxs)(`label`,{className:`block`,children:[(0,Q.jsx)(`span`,{className:`mb-1 block text-[11px] text-muted-foreground`,children:Z(`engine.studio.rules.type`,i)}),(0,Q.jsx)(`select`,{value:w,disabled:n,onChange:e=>T(C.name,e.target.value),className:`w-full rounded border bg-background px-2 py-1 text-[12px]`,children:Ug.map(e=>(0,Q.jsx)(`option`,{value:e.value,children:Z(e.labelKey,i)},e.value))})]}),(0,Q.jsxs)(`label`,{className:`block`,children:[(0,Q.jsx)(`span`,{className:`mb-1 block text-[11px] text-muted-foreground`,children:Z(`engine.studio.rules.nameLabel`,i)}),(0,Q.jsx)(`input`,{value:C.name??``,disabled:n,onChange:e=>{let t=e.target.value;b(C.name,{name:t}),s(t)},className:`w-full rounded border bg-background px-2 py-1 text-[12px]`})]}),(0,Q.jsxs)(`label`,{className:`block`,children:[(0,Q.jsx)(`span`,{className:`mb-1 block text-[11px] text-muted-foreground`,children:Z(`engine.studio.rules.label`,i)}),(0,Q.jsx)(`input`,{value:C.label??``,disabled:n,onChange:e=>b(C.name,{label:e.target.value||void 0}),className:`w-full rounded border bg-background px-2 py-1 text-[12px]`})]}),(0,Q.jsxs)(`label`,{className:`block`,children:[(0,Q.jsx)(`span`,{className:`mb-1 block text-[11px] text-muted-foreground`,children:Z(`engine.studio.rules.messageLabel`,i)}),(0,Q.jsx)(`input`,{value:C.message??``,disabled:n,onChange:e=>b(C.name,{message:e.target.value}),placeholder:Z(`engine.studio.rules.messagePlaceholder`,i),className:`w-full rounded border bg-background px-2 py-1 text-[12px]`})]}),(0,Q.jsx)(Zg,{rule:C,fields:d,patch:e=>b(C.name,e),disabled:n,locale:i,onBlockingIssuesChange:e=>h(C.name,e)}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`span`,{className:`mb-1 block text-[11px] text-muted-foreground`,children:Z(`engine.studio.rules.events`,i)}),(0,Q.jsx)(`div`,{className:`flex items-center gap-4`,children:Wg.map(e=>{let t=Array.isArray(C.events)?C.events.includes(e):!1;return(0,Q.jsxs)(`label`,{className:`flex items-center gap-1.5 text-[12px]`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:t,disabled:n,onChange:t=>{let n=Array.isArray(C.events)?C.events:[],r=t.target.checked?[...new Set([...n,e])]:n.filter(t=>t!==e);b(C.name,{events:r})}}),Z(`engine.studio.rules.event.${e}`,i)]},e)})})]}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,Q.jsxs)(`label`,{className:`flex items-center gap-1.5 text-[12px]`,children:[(0,Q.jsx)(`span`,{className:`text-muted-foreground`,children:Z(`engine.studio.rules.severity`,i)}),(0,Q.jsxs)(`select`,{value:C.severity??`error`,disabled:n,onChange:e=>b(C.name,{severity:e.target.value}),className:`rounded border bg-background px-1.5 py-0.5 text-[12px]`,children:[(0,Q.jsx)(`option`,{value:`error`,children:Z(`engine.studio.rules.severityError`,i)}),(0,Q.jsx)(`option`,{value:`warning`,children:`warning`}),(0,Q.jsx)(`option`,{value:`info`,children:`info`})]})]}),(0,Q.jsxs)(`label`,{className:`flex items-center gap-1.5 text-[12px]`,children:[(0,Q.jsx)(`span`,{className:`text-muted-foreground`,children:Z(`engine.studio.rules.priority`,i)}),(0,Q.jsx)(`input`,{type:`number`,value:typeof C.priority==`number`?C.priority:``,disabled:n,onChange:e=>b(C.name,{priority:e.target.value===``?void 0:Number(e.target.value)}),className:`w-20 rounded border bg-background px-1.5 py-0.5 text-[12px]`})]}),(0,Q.jsxs)(`label`,{className:`flex items-center gap-1.5 text-[12px]`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:C.active!==!1,disabled:n,onChange:e=>b(C.name,{active:e.target.checked})}),Z(`engine.studio.rules.enabled`,i)]}),!n&&(0,Q.jsxs)(`button`,{type:`button`,"data-testid":`rule-delete`,onClick:()=>S(C.name),className:`ml-auto inline-flex items-center gap-1 rounded border border-destructive/40 px-2 py-1 text-[11px] text-destructive hover:bg-destructive/10`,children:[(0,Q.jsx)(bn,{className:`h-3 w-3`}),` `,Z(`engine.studio.rules.delete`,i)]})]})]}):(0,Q.jsx)(`div`,{className:`flex flex-1 items-center justify-center p-6 text-center text-[12px] text-muted-foreground`,children:Z(`engine.studio.rules.pick`,i)})})]})}function $g({name:e,draft:t,onPatch:n,disabled:r,locale:i,onBlockingIssuesChange:a}){let o=uo(`object`),s=$.useMemo(()=>_s(t.fields).entries,[t.fields]),c=s.filter(e=>(e.def.type??`text`)===`select`),l=typeof t.nameField==`string`?t.nameField:``,u=t.stageField,d=Array.isArray(t.highlightFields)?t.highlightFields.filter(e=>typeof e==`string`):[],f=s.filter(e=>e.def.hidden!==!0&&!d.includes(e.name)),p=typeof t.sharingModel==`string`?t.sharingModel:``,m=p===`private`?`engine.studio.settings.sharingDescPrivate`:p===`public_read`?`engine.studio.settings.sharingDescPublicRead`:p===`public_read_write`?`engine.studio.settings.sharingDescPublicReadWrite`:p===`controlled_by_parent`?`engine.studio.settings.sharingDescControlledByParent`:`engine.studio.settings.sharingDescUnset`,h=t.enable&&typeof t.enable==`object`?t.enable:{},g=(e,t)=>n({enable:{...h,[e]:t}}),_=[{key:`trackHistory`,optIn:!0,labelKey:`engine.studio.settings.capTrackHistory`,descKey:`engine.studio.settings.capTrackHistoryDesc`},{key:`files`,optIn:!0,labelKey:`engine.studio.settings.capFiles`,descKey:`engine.studio.settings.capFilesDesc`},{key:`feeds`,optIn:!1,labelKey:`engine.studio.settings.capFeeds`,descKey:`engine.studio.settings.capFeedsDesc`},{key:`activities`,optIn:!1,labelKey:`engine.studio.settings.capActivities`,descKey:`engine.studio.settings.capActivitiesDesc`},{key:`searchable`,optIn:!1,labelKey:`engine.studio.settings.capSearchable`,descKey:`engine.studio.settings.capSearchableDesc`},{key:`clone`,optIn:!1,labelKey:`engine.studio.settings.capClone`,descKey:`engine.studio.settings.capCloneDesc`}],v=typeof t.externalSharingModel==`string`?t.externalSharingModel:``,y={private:0,public_read:1,public_read_write:2},b=v in y&&p in y&&y[v]>y[p];return(0,Q.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-4 overflow-auto`,children:[(0,Q.jsxs)(`section`,{className:`rounded-lg border`,children:[(0,Q.jsxs)(`header`,{className:`flex items-center gap-2 border-b px-3 py-2`,children:[(0,Q.jsx)(yr,{className:`h-3.5 w-3.5`}),(0,Q.jsx)(`span`,{className:`text-[13px] font-medium`,children:Z(`engine.studio.settings.basics`,i)})]}),(0,Q.jsx)(`div`,{className:`max-w-xl p-3`,children:o?(0,Q.jsx)(o,{type:`object`,name:e,draft:t,onPatch:n,readOnly:!!r,locale:i,onBlockingIssuesChange:a}):(0,Q.jsx)(`p`,{className:`text-[12px] text-muted-foreground`,children:Z(`engine.studio.settings.noInspector`,i)})})]}),(0,Q.jsxs)(`section`,{className:`rounded-lg border`,children:[(0,Q.jsxs)(`header`,{className:`flex items-center gap-2 border-b px-3 py-2`,children:[(0,Q.jsx)(At,{className:`h-3.5 w-3.5`}),(0,Q.jsx)(`span`,{className:`text-[13px] font-medium`,children:Z(`engine.studio.settings.sharing`,i)}),(0,Q.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:Z(`engine.studio.settings.sharingHint`,i)})]}),(0,Q.jsxs)(`div`,{className:`grid max-w-xl gap-2 p-3`,children:[(0,Q.jsxs)(`label`,{className:`block`,children:[(0,Q.jsx)(`span`,{className:`mb-1 block text-[11px] text-muted-foreground`,children:Z(`engine.studio.settings.sharingModel`,i)}),(0,Q.jsxs)(`select`,{value:p,disabled:r,"data-testid":`owd-internal-select`,onChange:e=>n(e.target.value?{sharingModel:e.target.value}:{sharingModel:void 0}),className:`w-full rounded border bg-background px-2 py-1 text-[12px]`,children:[(0,Q.jsx)(`option`,{value:``,children:Z(`engine.studio.settings.sharingUnset`,i)}),(0,Q.jsx)(`option`,{value:`private`,children:Z(`engine.studio.settings.sharingPrivate`,i)}),(0,Q.jsx)(`option`,{value:`public_read`,children:Z(`engine.studio.settings.sharingPublicRead`,i)}),(0,Q.jsx)(`option`,{value:`public_read_write`,children:Z(`engine.studio.settings.sharingPublicReadWrite`,i)}),(0,Q.jsx)(`option`,{value:`controlled_by_parent`,children:Z(`engine.studio.settings.sharingControlledByParent`,i)})]})]}),(0,Q.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:Z(m,i)}),(0,Q.jsxs)(`label`,{className:`block`,children:[(0,Q.jsx)(`span`,{className:`mb-1 block text-[11px] text-muted-foreground`,children:Z(`engine.studio.settings.sharingExternal`,i)}),(0,Q.jsxs)(`select`,{value:v,disabled:r,"data-testid":`owd-external-select`,onChange:e=>n(e.target.value?{externalSharingModel:e.target.value}:{externalSharingModel:void 0}),className:`w-full rounded border bg-background px-2 py-1 text-[12px]`,children:[(0,Q.jsx)(`option`,{value:``,children:Z(`engine.studio.settings.sharingExternalUnset`,i)}),(0,Q.jsx)(`option`,{value:`private`,children:Z(`engine.studio.settings.sharingPrivate`,i)}),(0,Q.jsx)(`option`,{value:`public_read`,children:Z(`engine.studio.settings.sharingPublicRead`,i)}),(0,Q.jsx)(`option`,{value:`public_read_write`,children:Z(`engine.studio.settings.sharingPublicReadWrite`,i)}),(0,Q.jsx)(`option`,{value:`controlled_by_parent`,children:Z(`engine.studio.settings.sharingControlledByParent`,i)})]})]}),(0,Q.jsx)(`p`,{"data-testid":`owd-external-desc`,className:b?`text-[11px] text-amber-600 dark:text-amber-500`:`text-[11px] text-muted-foreground`,children:Z(b?`engine.studio.settings.sharingExternalWider`:`engine.studio.settings.sharingExternalDesc`,i)})]})]}),(0,Q.jsxs)(`section`,{className:`rounded-lg border`,children:[(0,Q.jsxs)(`header`,{className:`flex items-center gap-2 border-b px-3 py-2`,children:[(0,Q.jsx)($t,{className:`h-3.5 w-3.5`}),(0,Q.jsx)(`span`,{className:`text-[13px] font-medium`,children:Z(`engine.studio.settings.semanticRoles`,i)}),(0,Q.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:Z(`engine.studio.settings.semanticHint`,i)})]}),(0,Q.jsxs)(`div`,{className:`grid max-w-xl gap-4 p-3`,children:[(0,Q.jsxs)(`label`,{className:`block`,children:[(0,Q.jsx)(`span`,{className:`mb-1 block text-[11px] text-muted-foreground`,children:Z(`engine.studio.settings.nameField`,i)}),(0,Q.jsxs)(`select`,{value:l,disabled:r,onChange:e=>n(e.target.value?{nameField:e.target.value}:{nameField:void 0}),className:`w-full rounded border bg-background px-2 py-1 text-[12px]`,children:[(0,Q.jsx)(`option`,{value:``,children:Z(`engine.studio.settings.autoDerive`,i)}),s.map(e=>(0,Q.jsx)(`option`,{value:e.name,children:typeof e.def.label==`string`?`${e.def.label} (${e.name})`:e.name},e.name))]})]}),(0,Q.jsxs)(`label`,{className:`block`,children:[(0,Q.jsx)(`span`,{className:`mb-1 block text-[11px] text-muted-foreground`,children:Z(`engine.studio.settings.stageField`,i)}),(0,Q.jsxs)(`select`,{value:u===!1?`__none__`:u??``,disabled:r,onChange:e=>{let t=e.target.value;n({stageField:t===`__none__`?!1:t===``?void 0:t})},className:`w-full rounded border bg-background px-2 py-1 text-[12px]`,children:[(0,Q.jsx)(`option`,{value:``,children:Z(`engine.studio.settings.autoDetect`,i)}),(0,Q.jsx)(`option`,{value:`__none__`,children:Z(`engine.studio.settings.stageNone`,i)}),c.map(e=>(0,Q.jsx)(`option`,{value:e.name,children:typeof e.def.label==`string`?`${e.def.label} (${e.name})`:e.name},e.name))]})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`span`,{className:`mb-1 block text-[11px] text-muted-foreground`,children:Z(`engine.studio.settings.highlightFields`,i)}),(0,Q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[d.map(e=>(0,Q.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-primary/10 px-2 py-0.5 text-[11px] text-primary`,children:[e,!r&&(0,Q.jsx)(`button`,{type:`button`,"aria-label":Zo(`engine.studio.settings.removeField`,i,{field:e}),onClick:()=>n({highlightFields:d.filter(t=>t!==e)}),className:`rounded-full hover:bg-primary/20`,children:(0,Q.jsx)(Pn,{className:`h-3 w-3`})})]},e)),!r&&f.length>0&&(0,Q.jsxs)(`select`,{value:``,onChange:e=>{e.target.value&&n({highlightFields:[...d,e.target.value]})},className:`rounded border bg-background px-1.5 py-0.5 text-[11px] text-muted-foreground`,children:[(0,Q.jsx)(`option`,{value:``,children:Z(`engine.studio.settings.addFieldOption`,i)}),f.map(e=>(0,Q.jsx)(`option`,{value:e.name,children:typeof e.def.label==`string`?`${e.def.label} (${e.name})`:e.name},e.name))]}),d.length===0&&(0,Q.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:Z(`engine.studio.settings.undeclared`,i)})]})]})]})]}),(0,Q.jsxs)(`section`,{className:`rounded-lg border`,"data-testid":`capabilities-section`,children:[(0,Q.jsxs)(`header`,{className:`flex items-center gap-2 border-b px-3 py-2`,children:[(0,Q.jsx)(ri,{className:`h-3.5 w-3.5`}),(0,Q.jsx)(`span`,{className:`text-[13px] font-medium`,children:Z(`engine.studio.settings.capabilities`,i)}),(0,Q.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:Z(`engine.studio.settings.capabilitiesHint`,i)})]}),(0,Q.jsx)(`div`,{className:`grid max-w-xl gap-3 p-3`,children:_.map(({key:e,optIn:t,labelKey:n,descKey:a})=>{let o=h[e];return(0,Q.jsxs)(`label`,{className:`flex items-start gap-2`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:t?o===!0:o!==!1,disabled:r,"data-testid":`cap-${e}`,onChange:t=>g(e,t.target.checked),className:`mt-0.5`}),(0,Q.jsxs)(`span`,{className:`min-w-0`,children:[(0,Q.jsx)(`span`,{className:`block text-[12px]`,children:Z(n,i)}),(0,Q.jsx)(`span`,{className:`block text-[11px] text-muted-foreground`,children:Z(a,i)})]})]},e)})})]})]})}var e_={private:0,public_read:1,public_read_write:2};function t_(e,t){return!!t&&t in e_&&!!e&&e in e_&&e_[t]>e_[e]}function n_(e){for(let t of _s(e).entries)if((t.def.type??``)===`master_detail`){let e=t.def.reference;if(typeof e==`string`&&e)return e}}function r_(e){if(!e||typeof e!=`object`)return null;let t=e;if(!(`item`in t))return null;let n=t.item;return!n||typeof n!=`object`?null:Object.keys(n).length>0?n:null}var i_=[{value:`private`,key:`engine.studio.settings.sharingPrivate`},{value:`public_read`,key:`engine.studio.settings.sharingPublicRead`},{value:`public_read_write`,key:`engine.studio.settings.sharingPublicReadWrite`},{value:`controlled_by_parent`,key:`engine.studio.settings.sharingControlledByParent`}];function a_(e,t){if(!e)return Z(`engine.studio.settings.sharingUnset`,t);let n=i_.find(t=>t.value===e);return n?Z(n.key,t):e}function o_({client:e,packageId:t,publishNonce:n=0,onDraftSaved:r,readOnly:i=!1,locale:a,highlightObject:o,onDirtyChange:s}){let[c,l]=$.useState([]),[u,d]=$.useState({}),[f,p]=$.useState(!1),[m,h]=$.useState(null),[g,_]=$.useState(!1),[v,y]=$.useState(null),b=$.useCallback(async()=>{p(!1),h(null);try{let[n,r]=await Promise.all([e.list(`object`,{packageId:t}),e.listDrafts({packageId:t,type:`object`}).catch(()=>[])]),i=new Map,a=[],o=new Set;for(let e of n||[]){let t=e.item??e,n=String(t.name??``);!n||o.has(n)||(o.add(n),a.push(n),i.set(n,String(t.label??n)))}for(let e of r||[]){let t=String(e?.name??``);!t||o.has(t)||(o.add(t),a.push(t))}let s=await Promise.all(a.map(async t=>{let[n,r]=await Promise.all([e.layered(`object`,t).catch(()=>null),e.getDraft(`object`,t).catch(()=>null)]),a=n??{},o=a.effective??a.code??{},s=r_(r),c=s?{...o,...s}:o,l=typeof c.sharingModel==`string`?c.sharingModel:``;return{name:t,label:String(c.label??i.get(t)??t),internal:l,external:typeof c.externalSharingModel==`string`?c.externalSharingModel:``,master:l===`controlled_by_parent`?n_(c.fields):void 0,hasDraft:!!s}}));s.sort((e,t)=>e.label.localeCompare(t.label)||e.name.localeCompare(t.name)),l(s),d(Object.fromEntries(s.map(e=>[e.name,{internal:e.internal,external:e.external}])))}catch(e){h(vc(e))}finally{p(!0)}},[e,t]);$.useEffect(()=>{b()},[b,n]);let x=$.useRef({});$.useEffect(()=>{if(!o||!f)return;let e=x.current[o];e&&e.scrollIntoView({block:`center`,behavior:`smooth`})},[o,f]);let S=$.useCallback((e,t)=>{d(n=>({...n,[e]:{...n[e],...t}}))},[]),C=$.useMemo(()=>c.map(e=>{let t=u[e.name]??{internal:e.internal,external:e.external};return{row:e,edit:t,dirty:t.internal!==e.internal||t.external!==e.external,invalid:t_(t.internal,t.external)}}),[c,u]),w=C.filter(e=>e.dirty).length,T=C.some(e=>e.invalid),E=w>0,D=$.useRef(s);$.useEffect(()=>{D.current=s}),$.useEffect(()=>{D.current?.(E)},[E]),$.useEffect(()=>()=>{D.current?.(!1)},[]);let O=$.useCallback(async()=>{let n=C.filter(e=>e.dirty&&!e.invalid);if(n.length!==0){_(!0),y(null);try{for(let r of n){let[n,i]=await Promise.all([e.layered(`object`,r.row.name).catch(()=>null),e.getDraft(`object`,r.row.name).catch(()=>null)]),a=n??{},o=a.effective??a.code??{},s=r_(i),c={...o,...s??{}};r.edit.internal?c.sharingModel=r.edit.internal:delete c.sharingModel,r.edit.external?c.externalSharingModel=r.edit.external:delete c.externalSharingModel,await e.save(`object`,r.row.name,c,{mode:`draft`,packageId:t})}X.success(Zo(`engine.studio.owd.saved`,a,{count:n.length})),r?.(),await b()}catch(e){y(vc(e))}finally{_(!1)}}},[C,e,t,r,b,a]),k=!i&&!g&&w>0&&!T;return(0,Q.jsxs)(`div`,{className:`flex h-full flex-col`,"data-testid":`owd-overview`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-3 border-b px-4 py-2.5`,children:[(0,Q.jsxs)(`span`,{className:`flex min-w-0 items-center gap-2`,children:[(0,Q.jsx)(At,{className:`h-4 w-4 shrink-0 text-muted-foreground`}),(0,Q.jsx)(`span`,{className:`truncate text-[15px] font-semibold leading-none text-foreground`,children:Z(`engine.studio.owd.title`,a)}),(0,Q.jsx)(`span`,{className:`shrink-0 rounded bg-muted px-1.5 py-0.5 text-[11px] text-muted-foreground`,children:Z(`engine.studio.owd.subtitle`,a)})]}),i?(0,Q.jsxs)(`span`,{title:Z(`engine.studio.pkg.readonlyHint`,a),className:`ml-auto flex items-center gap-1.5 text-[11px] text-muted-foreground`,children:[(0,Q.jsx)(Wn,{className:`h-3 w-3`}),` `,Z(`engine.studio.pkg.readonly`,a)]}):(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>void O(),disabled:!k,"data-testid":`owd-save`,className:`ml-auto inline-flex items-center gap-1.5 rounded-md bg-primary px-3 py-1 text-xs font-medium text-primary-foreground disabled:opacity-50`,children:[g?(0,Q.jsx)(J,{className:`h-3.5 w-3.5 animate-spin`}):(0,Q.jsx)(Cr,{className:`h-3.5 w-3.5`}),w>0?Zo(`engine.studio.owd.save`,a,{count:w}):Z(`engine.studio.owd.saveNone`,a)]})]}),(0,Q.jsx)(`p`,{className:`border-b px-4 py-2 text-[11px] text-muted-foreground`,children:Z(`engine.studio.owd.description`,a)}),T&&(0,Q.jsxs)(`p`,{"data-testid":`owd-invalid-banner`,className:`flex items-center gap-1.5 border-b bg-amber-400/10 px-4 py-2 text-[11px] text-amber-600 dark:text-amber-400`,children:[(0,Q.jsx)(mn,{className:`h-3.5 w-3.5 shrink-0`}),Z(`engine.studio.owd.blockedSave`,a)]}),v&&(0,Q.jsx)(`p`,{className:`border-b bg-destructive/10 px-4 py-2 text-[11px] text-destructive`,children:v}),(0,Q.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto p-4`,children:f?m?(0,Q.jsx)(`p`,{className:`py-16 text-center text-sm text-muted-foreground`,children:Z(`engine.studio.owd.loadFailed`,a)}):c.length===0?(0,Q.jsx)(`p`,{className:`py-16 text-center text-sm text-muted-foreground`,children:Z(`engine.studio.owd.none`,a)}):(0,Q.jsxs)(`table`,{className:`w-full border-collapse text-[12px]`,children:[(0,Q.jsx)(`thead`,{children:(0,Q.jsxs)(`tr`,{className:`border-b text-left text-[11px] uppercase tracking-wide text-muted-foreground`,children:[(0,Q.jsx)(`th`,{className:`px-2 py-1.5 font-medium`,children:Z(`engine.studio.owd.colObject`,a)}),(0,Q.jsx)(`th`,{className:`px-2 py-1.5 font-medium`,children:Z(`engine.studio.owd.colInternal`,a)}),(0,Q.jsx)(`th`,{className:`px-2 py-1.5 font-medium`,children:Z(`engine.studio.owd.colExternal`,a)})]})}),(0,Q.jsx)(`tbody`,{children:C.map(({row:e,edit:t,dirty:n,invalid:r})=>{let s=t.internal===`controlled_by_parent`;return(0,Q.jsxs)(`tr`,{ref:t=>{x.current[e.name]=t},"data-testid":`owd-row-${e.name}`,className:`border-b align-top `+(o===e.name?`bg-primary/5`:``),children:[(0,Q.jsx)(`td`,{className:`px-2 py-2`,children:(0,Q.jsxs)(`span`,{className:`flex flex-col gap-0.5`,children:[(0,Q.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,Q.jsx)(`span`,{className:`font-medium text-foreground`,children:e.label}),n&&(0,Q.jsx)(`span`,{"data-testid":`owd-dirty-${e.name}`,className:`rounded bg-amber-400/15 px-1.5 py-0.5 text-[10px] text-amber-600 dark:text-amber-300`,children:Z(`engine.studio.owd.unsaved`,a)}),e.hasDraft&&!n&&(0,Q.jsx)(`span`,{className:`rounded bg-muted px-1.5 py-0.5 text-[10px] text-muted-foreground`,children:Z(`engine.studio.unpublishedDraft`,a)})]}),(0,Q.jsx)(`span`,{className:`font-mono text-[10px] text-muted-foreground`,children:e.name})]})}),(0,Q.jsx)(`td`,{className:`px-2 py-2`,children:i?(0,Q.jsx)(`span`,{className:`text-muted-foreground`,children:a_(t.internal,a)}):(0,Q.jsxs)(`select`,{value:t.internal,"data-testid":`owd-internal-${e.name}`,onChange:t=>S(e.name,{internal:t.target.value}),className:`w-full min-w-[13rem] rounded border bg-background px-2 py-1 text-[12px]`,children:[(0,Q.jsx)(`option`,{value:``,children:Z(`engine.studio.settings.sharingUnset`,a)}),i_.map(e=>(0,Q.jsx)(`option`,{value:e.value,children:Z(e.key,a)},e.value))]})}),(0,Q.jsx)(`td`,{className:`px-2 py-2`,children:s?(0,Q.jsxs)(`span`,{"data-testid":`owd-master-${e.name}`,title:Z(`engine.studio.owd.masterTip`,a),className:`inline-flex items-center gap-1 text-muted-foreground`,children:[(0,Q.jsx)(Qt,{className:`h-3.5 w-3.5`}),e.master?Zo(`engine.studio.owd.byParent`,a,{master:e.master}):Z(`engine.studio.owd.byParentUnknown`,a)]}):i?(0,Q.jsx)(`span`,{className:`text-muted-foreground`,children:a_(t.external,a)}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`select`,{value:t.external,"data-testid":`owd-external-${e.name}`,onChange:t=>S(e.name,{external:t.target.value}),className:`w-full min-w-[13rem] rounded border bg-background px-2 py-1 text-[12px] `+(r?`border-amber-500`:``),children:[(0,Q.jsx)(`option`,{value:``,children:Z(`engine.studio.settings.sharingExternalUnset`,a)}),i_.filter(e=>e.value!==`controlled_by_parent`).map(e=>(0,Q.jsx)(`option`,{value:e.value,children:Z(e.key,a)},e.value))]}),r&&(0,Q.jsx)(`span`,{"data-testid":`owd-error-${e.name}`,className:`mt-1 block text-[11px] text-amber-600 dark:text-amber-500`,children:Z(`engine.studio.owd.widerError`,a)})]})})]},e.name)})})]}):(0,Q.jsx)(`p`,{className:`py-16 text-center text-sm text-muted-foreground`,children:Z(`engine.studio.loading`,a)})})]})}var s_={GET:`bg-emerald-500/15 text-emerald-600 dark:text-emerald-300`,POST:`bg-sky-500/15 text-sky-600 dark:text-sky-300`,PATCH:`bg-amber-500/15 text-amber-600 dark:text-amber-300`,DELETE:`bg-destructive/15 text-destructive`};function c_(e){switch(e){case`number`:case`currency`:case`percent`:return 0;case`boolean`:return!0;case`date`:return`2024-01-01`;case`datetime`:return`2024-01-01T00:00:00Z`;case`lookup`:case`master_detail`:return`related_record_id`;default:return`string`}}function l_(e){let t=_s(e).entries,n=new Set([`autonumber`,`formula`,`summary`]),r={};for(let e of t){let t=e.def;if(!n.has(String(t.type))&&t.readonly!==!0&&t.hidden!==!0&&(r[e.name]=c_(t.type),Object.keys(r).length>=8))break}return r}function u_({name:e,draft:t}){let n=Xo(),[r,i]=$.useState(null),a=typeof window<`u`?window.location.origin:`https://your-host`,o=`/api/v1/data/${e}`,s=$.useMemo(()=>l_(t.fields),[t.fields]),c=JSON.stringify(s,null,2),l=[{id:`list`,method:`GET`,path:o,desc:Z(`engine.studio.api.list`,n)},{id:`create`,method:`POST`,path:o,desc:Z(`engine.studio.api.create`,n),body:!0},{id:`get`,method:`GET`,path:`${o}/{id}`,desc:Z(`engine.studio.api.get`,n)},{id:`update`,method:`PATCH`,path:`${o}/{id}`,desc:Z(`engine.studio.api.update`,n),body:!0},{id:`delete`,method:`DELETE`,path:`${o}/{id}`,desc:Z(`engine.studio.api.delete`,n)}],u=e=>{let t=[`curl -X ${e.method} '${a}${e.path}'`,` -H 'Authorization: Bearer <token>'`];return e.body&&(t.push(` -H 'Content-Type: application/json'`),t.push(` -d '${JSON.stringify(s)}'`)),t.join(` \\
|
|
9
|
+
`)},d=(e,t)=>{navigator.clipboard?.writeText(t).then(()=>{i(e),setTimeout(()=>i(t=>t===e?null:t),1500)})};return(0,Q.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-3 overflow-auto`,children:[(0,Q.jsx)(`p`,{className:`text-[11px] leading-5 text-muted-foreground`,children:Z(`engine.studio.api.subtitle`,n)}),(0,Q.jsx)(`div`,{className:`flex flex-col gap-2`,children:l.map(e=>(0,Q.jsx)(`div`,{className:`rounded-lg border`,children:(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2`,children:[(0,Q.jsx)(`span`,{className:`shrink-0 rounded px-1.5 py-0.5 font-mono text-[10px] font-semibold `+s_[e.method],children:e.method}),(0,Q.jsx)(`code`,{className:`min-w-0 flex-1 truncate text-[12px]`,children:e.path}),(0,Q.jsx)(`span`,{className:`hidden shrink-0 text-[11px] text-muted-foreground sm:inline`,children:e.desc}),(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>d(e.id,u(e)),title:Z(`engine.studio.api.copyCurl`,n),className:`inline-flex shrink-0 items-center gap-1 rounded border px-1.5 py-0.5 text-[11px] hover:bg-muted`,children:[r===e.id?(0,Q.jsx)(pr,{className:`h-3 w-3 text-emerald-500`}):(0,Q.jsx)(wt,{className:`h-3 w-3`}),r===e.id?Z(`engine.studio.api.copied`,n):`cURL`]})]})},e.id))}),Object.keys(s).length>0&&(0,Q.jsxs)(`div`,{className:`rounded-lg border`,children:[(0,Q.jsx)(`header`,{className:`border-b px-3 py-1.5 text-[11px] font-medium text-muted-foreground`,children:Z(`engine.studio.api.body`,n)}),(0,Q.jsx)(`pre`,{className:`overflow-auto px-3 py-2 text-[11px] leading-5`,children:c})]})]})}function d_(e){if(!e||typeof e!=`object`||!(`item`in e))return null;let t=e.item;return t&&typeof t==`object`&&Object.keys(t).length>0?t:null}function f_(e,t){let n=e.object;return n===`*`?!0:typeof n==`string`?n===t:Array.isArray(n)?n.includes(t)||n.includes(`*`):!1}function p_(e,t){let n=(e||`hook`).replace(/[^a-z0-9_]/gi,`_`).toLowerCase(),r=new Set(t),i=t.length+1,a=`${n}_hook_${i}`;for(;r.has(a);)a=`${n}_hook_${++i}`;return a}function m_({objectName:e,packageId:t,disabled:n,hookSchema:r}){let i=Xo(),a=Qo(),o=uo(`hook`),[s,c]=$.useState([]),[l,u]=$.useState(!0),[d,f]=$.useState(null),[p,m]=$.useState(null),[h,g]=$.useState(null),[_,v]=$.useState(!1),[y,b]=$.useState(!1),[x,S]=$.useState(0),[C,w]=$.useState({hook:``,count:0}),T=String(h?.name??``),E=$.useCallback(e=>{w(t=>t.hook===T&&t.count===e?t:{hook:T,count:e})},[T]),D=C.hook===T?C.count:0;$.useEffect(()=>{let n=!1;return u(!0),f(null),(async()=>{try{let[r,i]=await Promise.all([a.list(`hook`,{packageId:t}),a.listDrafts({packageId:t,type:`hook`}).catch(()=>[])]),o=(i||[]).map(e=>String(e.name??``)).filter(Boolean),s=await Promise.all(o.map(e=>a.getDraft(`hook`,e).then(d_).catch(()=>null)));if(n)return;let l=new Map;for(let t of r||[])t?.name&&f_(t,e)&&l.set(String(t.name),t);o.forEach((t,n)=>{let r=s[n];r&&f_(r,e)&&l.set(t,r)}),c([...l.values()])}catch(e){n||f(vc(e))}finally{n||u(!1)}})(),()=>{n=!0}},[a,t,e,x]),$.useEffect(()=>{let e=s.find(e=>e.name===p)??null;g(e?{...e}:null),v(!1)},[p,s]);let O=$.useCallback(async()=>{if(h?.name){b(!0),f(null);try{await a.save(`hook`,String(h.name),h,{mode:`draft`,packageId:t}),X.success(Zo(`engine.studio.hooks.saved`,i,{label:String(h.label||h.name)})),v(!1),S(e=>e+1)}catch(e){f(vc(e))}finally{b(!1)}}},[a,h,t,i]),k=$.useCallback(async()=>{let n=p_(e,s.map(e=>String(e.name??``))),r={name:n,label:Z(`engine.studio.hooks.newLabel`,i),object:e,events:[`beforeInsert`],body:{language:`js`,source:`return;`},priority:100,async:!1};b(!0),f(null);try{await a.save(`hook`,n,r,{mode:`draft`,packageId:t}),S(e=>e+1),m(n)}catch(e){f(vc(e))}finally{b(!1)}},[a,e,s,t,i]);return(0,Q.jsxs)(`div`,{className:`flex min-h-0 flex-1 gap-4`,children:[(0,Q.jsxs)(`div`,{className:`flex w-72 shrink-0 flex-col rounded-lg border`,children:[(0,Q.jsxs)(`header`,{className:`flex items-center gap-2 border-b px-3 py-2`,children:[(0,Q.jsx)(er,{className:`h-3.5 w-3.5`}),(0,Q.jsx)(`span`,{className:`text-[13px] font-medium`,children:Z(`engine.studio.data.tab.hooks`,i)}),(0,Q.jsxs)(`span`,{className:`text-[11px] text-muted-foreground`,children:[`(`,s.length,`)`]}),!n&&(0,Q.jsxs)(`button`,{type:`button`,onClick:k,disabled:y,className:`ml-auto inline-flex items-center gap-1 rounded border px-1.5 py-0.5 text-[11px] hover:bg-muted disabled:opacity-50`,children:[(0,Q.jsx)(Ue,{className:`h-3 w-3`}),` `,Z(`engine.studio.new`,i)]})]}),(0,Q.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto`,children:l?(0,Q.jsx)(`p`,{className:`px-3 py-6 text-center text-[11px] text-muted-foreground`,children:Z(`engine.studio.loading`,i)}):s.length===0?(0,Q.jsx)(`p`,{className:`px-3 py-6 text-center text-[11px] leading-5 text-muted-foreground`,children:Z(`engine.studio.hooks.none`,i)}):s.map(e=>(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>m(e.name??null),className:`flex w-full items-center gap-2 border-b px-3 py-2 text-left text-[12px] `+(p===e.name?`bg-muted`:`hover:bg-muted/50`),children:[(0,Q.jsx)(er,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground`}),(0,Q.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-medium`,children:e.label||e.name}),e.async&&(0,Q.jsx)(`span`,{className:`shrink-0 rounded-full bg-primary/10 px-1.5 py-0.5 text-[10px] text-primary`,children:Z(`engine.studio.hooks.async`,i)})]},String(e.name)))})]}),(0,Q.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col overflow-hidden rounded-lg border`,children:[d&&(0,Q.jsx)(`div`,{className:`border-b border-destructive/40 bg-destructive/10 px-3 py-1.5 text-[11px] text-destructive whitespace-pre-line`,children:d}),h?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2 border-b px-3 py-1.5`,children:[(0,Q.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-[12px] font-medium`,children:String(h.label||h.name)}),!n&&(0,Q.jsxs)(`button`,{type:`button`,onClick:O,disabled:!_||y||D>0,title:D>0?Z(`perm.cel.saveBlocked`,i):void 0,className:`inline-flex items-center gap-1 rounded-md border px-2 py-0.5 text-[11px] hover:bg-muted disabled:opacity-50`,children:[y?(0,Q.jsx)(J,{className:`h-3 w-3 animate-spin`}):(0,Q.jsx)(Cr,{className:`h-3 w-3`}),Z(`engine.studio.hooks.save`,i)]})]}),(0,Q.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto`,children:o?(0,Q.jsx)(o,{type:`hook`,name:String(h.name??``),draft:h,onPatch:e=>{g(t=>({...t,...e})),v(!0)},readOnly:!!n,locale:i,serverSchema:r,onBlockingIssuesChange:E}):(0,Q.jsx)(`div`,{className:`p-3`,children:(0,Q.jsx)(us,{schema:r,value:h,onChange:e=>{g(e),v(!0)},readOnly:!!n})})})]}):(0,Q.jsx)(`div`,{className:`flex flex-1 items-center justify-center p-6 text-center text-[12px] text-muted-foreground`,children:Z(`engine.studio.hooks.pick`,i)})]})]})}function h_(e){return Array.isArray(e)?e.filter(e=>!!e&&typeof e==`object`):[]}function g_(e,t){let n=(e||`action`).replace(/[^a-z0-9_]/gi,`_`).toLowerCase(),r=new Set(t),i=t.length+1,a=`${n}_action_${i}`;for(;r.has(a);)a=`${n}_action_${++i}`;return a}function __(e,t){if(typeof e==`string`)return e;if(e&&typeof e==`object`){let t=e;for(let e of[`default`,`en-US`,`en`,`zh-CN`])if(typeof t[e]==`string`)return t[e];let n=Object.values(t).find(e=>typeof e==`string`);if(typeof n==`string`)return n}return t}function v_({draft:e,onPatch:t,disabled:n,actionSchema:r,onBlockingIssuesChange:i}){let a=Xo(),o=$.useMemo(()=>h_(e.actions),[e.actions]),[s,c]=$.useState(null),l=o.some(e=>e.name===s)?s:o[0]?.name??null,u=o.find(e=>e.name===l)??null,d=uo(`action`),f=$.useCallback(e=>{u&&(t({actions:o.map(t=>t.name===u.name?{...t,...e}:t)}),typeof e.name==`string`&&e.name!==u.name&&c(e.name))},[o,u,t]),p=typeof e.name==`string`?e.name:``,[m,h]=$.useState({}),g=$.useCallback((e,t)=>{h(n=>n[e]===t?n:{...n,[e]:t})},[]),_=$.useMemo(()=>new Set(o.map(e=>String(e.name??``))),[o]),v=$.useMemo(()=>{let e=0;for(let[t,n]of Object.entries(m))_.has(t)&&(e+=n);return e},[m,_]),y=$.useRef(i);$.useEffect(()=>{y.current=i}),$.useEffect(()=>{y.current?.(v)},[v]);let b=$.useCallback(()=>{let e=g_(p,o.map(e=>String(e.name??``))),n={name:e,label:Z(`engine.studio.actions.newLabel`,a),type:`script`,objectName:p,locations:[`record_header`],body:{language:`js`,source:`return { ok: true };`}};t({actions:[...o,n]}),c(e)},[o,p,t,a]),x=$.useCallback(e=>{t({actions:o.filter(t=>t.name!==e)}),c(null)},[o,t]);return(0,Q.jsxs)(`div`,{className:`flex min-h-0 flex-1 gap-4`,children:[(0,Q.jsxs)(`div`,{className:`flex w-72 shrink-0 flex-col rounded-lg border`,children:[(0,Q.jsxs)(`header`,{className:`flex items-center gap-2 border-b px-3 py-2`,children:[(0,Q.jsx)(jt,{className:`h-3.5 w-3.5`}),(0,Q.jsx)(`span`,{className:`text-[13px] font-medium`,children:Z(`engine.studio.data.tab.actions`,a)}),(0,Q.jsxs)(`span`,{className:`text-[11px] text-muted-foreground`,children:[`(`,o.length,`)`]}),!n&&(0,Q.jsxs)(`button`,{type:`button`,onClick:b,className:`ml-auto inline-flex items-center gap-1 rounded border px-1.5 py-0.5 text-[11px] hover:bg-muted`,children:[(0,Q.jsx)(Ue,{className:`h-3 w-3`}),` `,Z(`engine.studio.new`,a)]})]}),(0,Q.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto`,children:o.length===0?(0,Q.jsx)(`p`,{className:`px-3 py-6 text-center text-[11px] leading-5 text-muted-foreground`,children:Z(`engine.studio.actions.none`,a)}):o.map(e=>{let t=Yo(typeof e.icon==`string`?e.icon:void 0),n=typeof e.type==`string`?e.type:``;return(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>c(e.name??null),className:`flex w-full items-center gap-2 border-b px-3 py-2 text-left text-[12px] `+(l===e.name?`bg-muted`:`hover:bg-muted/50`),children:[(0,Q.jsx)(t,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground`}),(0,Q.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-medium`,children:__(e.label,String(e.name??``))}),n&&(0,Q.jsx)(`span`,{className:`shrink-0 rounded-full bg-muted px-1.5 py-0.5 text-[10px] uppercase tracking-wide text-muted-foreground`,children:n})]},String(e.name))})})]}),(0,Q.jsx)(`div`,{className:`flex min-w-0 flex-1 flex-col overflow-auto rounded-lg border`,children:u?d?(0,Q.jsxs)(Q.Fragment,{children:[!n&&(0,Q.jsx)(`div`,{className:`flex shrink-0 items-center justify-end border-b px-2 py-1`,children:(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>x(u.name),className:`inline-flex items-center gap-1 rounded border border-destructive/40 px-2 py-0.5 text-[11px] text-destructive hover:bg-destructive/10`,children:[(0,Q.jsx)(bn,{className:`h-3 w-3`}),` `,Z(`engine.studio.actions.delete`,a)]})}),(0,Q.jsx)(d,{type:`action`,name:String(u.name??``),draft:u,onPatch:f,readOnly:!!n,locale:a,serverSchema:r,onBlockingIssuesChange:e=>g(String(u.name??``),e)})]}):(0,Q.jsx)(`div`,{className:`flex flex-1 items-center justify-center p-6 text-center text-[12px] text-muted-foreground`,children:__(u.label,String(u.name??``))}):(0,Q.jsx)(`div`,{className:`flex flex-1 items-center justify-center p-6 text-center text-[12px] text-muted-foreground`,children:Z(`engine.studio.actions.pick`,a)})})]})}var y_=[{key:`data`,label:`Data`,Icon:ar},{key:`automations`,label:`Automations`,Icon:xr},{key:`interfaces`,label:`Interfaces`,Icon:Ve},{key:`access`,label:`Access`,Icon:sn}],b_={group:Rn,page:fr,object:ar,dashboard:Ve,report:Lt,view:nr},x_=e=>b_[e??``]??Ot;function S_(e){let t=String(e.label??``);switch(e.type){case`page`:return e.pageName||e.page?{type:`page`,name:String(e.pageName||e.page),label:t}:null;case`object`:return e.objectName||e.object?{type:`object`,name:String(e.objectName||e.object),label:t}:null;case`dashboard`:return e.dashboardName||e.dashboard?{type:`dashboard`,name:String(e.dashboardName||e.dashboard),label:t}:null;case`report`:return e.reportName||e.report?{type:`report`,name:String(e.reportName||e.report),label:t}:null;case`view`:return e.viewName||e.view?{type:`view`,name:String(e.viewName||e.view),label:t}:null;default:return null}}function C_(e,t){for(let n of e)if(n.type===`group`||n.children?.length){let e=C_(n.children??[],t);if(e)return e}else{let e=S_(n);if(e&&e.type===t.type&&e.name===t.name)return e}return null}function w_(e){if(!e||typeof e!=`object`)return null;let t=e;if(!(`item`in t))return null;let n=t.item;return!n||typeof n!=`object`?null:Object.keys(n).length>0?n:null}function T_({packageId:e,tab:t,beforeNavigate:n}){let r=a(),i=Xo(),[o,s]=$.useState(!1),[c,l]=$.useState(null),[u,d]=$.useState(!1),[f,p]=$.useState(null),[m,h]=$.useState(!1),[g,_]=$.useState(!1);$.useEffect(()=>{let e=!1,t=()=>{no().then(t=>{e||l(t)}).catch(()=>{})};return t(),window.addEventListener(`objectui:packages-changed`,t),()=>{e=!0,window.removeEventListener(`objectui:packages-changed`,t)}},[e]);let v=c?.find(t=>t.id===e)??null,y=$.useCallback(async e=>{let t=await(await fetch(`/api/v1/packages`,{credentials:`include`,headers:{Accept:`application/json`},cache:`no-store`})).json(),n=t?.data??t;return(Array.isArray(n)?n:n?.packages??[]).find(t=>(t?.manifest?.id??t?.id)===e)??null},[]),b=$.useCallback(async e=>{s(!1),_(!0);try{p(await y(e)),h(!0)}catch(e){X.error(vc(e))}finally{_(!1)}},[y]),x=$.useCallback(async()=>{let n=[];try{n=await no(),l(n)}catch{}let i=f?.manifest.id;if(i){if(!n.some(e=>e.id===i)){if(i===e){let e=n[0];r(e?`/studio/${encodeURIComponent(e.id)}/${t}`:`/home`)}return}try{let e=await y(i);e&&p(e)}catch{}}},[f,e,t,r,y]);return(0,Q.jsxs)(Me,{open:o,onOpenChange:s,children:[(0,Q.jsx)(gt,{asChild:!0,children:(0,Q.jsxs)(`button`,{type:`button`,className:`flex items-center gap-1.5 whitespace-nowrap rounded-md px-1.5 py-0.5 text-[13px] font-medium hover:bg-muted`,title:Z(`engine.studio.pkg.switchTitle`,i),children:[(0,Q.jsx)(mt,{className:`h-4 w-4`}),` `,v?.name??e,v&&!v.writable&&(0,Q.jsxs)(`span`,{className:`inline-flex items-center gap-0.5 rounded bg-amber-400/15 px-1.5 py-0.5 text-[10px] font-normal text-amber-600 dark:text-amber-300`,children:[(0,Q.jsx)(Wn,{className:`h-2.5 w-2.5`}),` `,Z(`engine.studio.pkg.readonly`,i)]}),(0,Q.jsx)(kr,{className:`h-3.5 w-3.5 text-muted-foreground`})]})}),(0,Q.jsxs)(rr,{align:`start`,sideOffset:6,className:`w-80 rounded-lg p-1.5`,children:[(0,Q.jsx)(`p`,{className:`px-2 pb-1 pt-0.5 text-[10px] font-medium uppercase tracking-wide text-muted-foreground`,children:Z(`engine.studio.pkg.heading`,i)}),(0,Q.jsxs)(`div`,{className:`max-h-64 overflow-auto`,children:[c===null&&(0,Q.jsx)(`p`,{className:`px-2 py-2 text-[11px] text-muted-foreground`,children:Z(`engine.studio.loading`,i)}),c?.length===0&&(0,Q.jsx)(`p`,{className:`px-2 py-2 text-[11px] text-muted-foreground`,children:Z(`engine.studio.pkg.none`,i)}),c?.map(a=>(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>{s(!1),a.id!==e&&(n&&!n()||r(`/studio/${encodeURIComponent(a.id)}/${t}`))},className:`flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-xs `+(a.id===e?`bg-muted font-medium`:`hover:bg-muted/60`),children:[(0,Q.jsx)(mt,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground`}),(0,Q.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,Q.jsx)(`span`,{className:`block truncate`,children:a.name}),(0,Q.jsx)(`span`,{className:`block truncate font-mono text-[10px] text-muted-foreground`,children:a.id})]}),a.writable?(0,Q.jsx)(`span`,{className:`rounded bg-emerald-400/15 px-1.5 py-0.5 text-[10px] text-emerald-600 dark:text-emerald-300`,children:Z(`engine.studio.pkg.writable`,i)}):(0,Q.jsxs)(`span`,{className:`inline-flex items-center gap-0.5 rounded bg-amber-400/15 px-1.5 py-0.5 text-[10px] text-amber-600 dark:text-amber-300`,children:[(0,Q.jsx)(Wn,{className:`h-2.5 w-2.5`}),` `,Z(`engine.studio.pkg.readonly`,i)]})]},a.id))]}),(0,Q.jsxs)(`div`,{className:`mt-1 space-y-0.5 border-t pt-1.5`,children:[v&&(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>void b(e),disabled:g,className:`flex w-full items-center gap-1.5 rounded-md px-2 py-1.5 text-left text-xs text-muted-foreground hover:bg-muted hover:text-foreground disabled:opacity-50`,children:[g?(0,Q.jsx)(J,{className:`h-3.5 w-3.5 animate-spin`}):(0,Q.jsx)(Wr,{className:`h-3.5 w-3.5`}),Z(`engine.studio.pkg.manage`,i)]}),(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>{s(!1),d(!0)},className:`flex w-full items-center gap-1.5 rounded-md px-2 py-1.5 text-left text-xs text-muted-foreground hover:bg-muted hover:text-foreground`,children:[(0,Q.jsx)(Ue,{className:`h-3.5 w-3.5`}),` `,Z(`engine.studio.pkg.new`,i)]})]})]}),(0,Q.jsx)(ho,{open:u,onOpenChange:d,onCreated:e=>{n&&!n()||r(`/studio/${encodeURIComponent(e)}/data`)}}),(0,Q.jsx)(eo,{pkg:f,open:m,onOpenChange:h,onChanged:x})]})}function E_({aiSlot:e}){let t=l(),r=t.packageId??`com.example.showcase`,i=t.tab??`interfaces`,o=Xo(),[s,c]=$.useState(null);$.useEffect(()=>{let e=!1;return c(null),no().then(t=>{e||c(t.find(e=>e.id===r)?.writable??null)}).catch(()=>{}),()=>{e=!0}},[r]);let u=s===!1,[d,f]=$.useState(!1),p=$.useCallback(()=>!d||window.confirm(Z(`engine.edit.unsavedLeaveConfirm`,o)),[d,o]);$.useEffect(()=>{if(!d)return;let e=e=>{e.preventDefault(),e.returnValue=``};return window.addEventListener(`beforeunload`,e),()=>window.removeEventListener(`beforeunload`,e)},[d]);let[m,h]=$.useState(!1),[g,_]=$.useState(null),[v,y]=$.useState(!1),[b,x]=$.useState(0),[S,C]=$.useState(0),w=$.useCallback(async()=>{try{let e=await fetch(`/api/v1/meta/_drafts?packageId=${encodeURIComponent(r)}`,{credentials:`include`,headers:{Accept:`application/json`},cache:`no-store`});if(!e.ok)return _(null);let t=await e.json(),n=Array.isArray(t)?t:t?.drafts??[];_(n.length)}catch{_(null)}},[r]);$.useEffect(()=>{w()},[w,b,S]);let T=$.useCallback(async()=>{y(!0);try{let e=await fetch(`/api/v1/packages/${encodeURIComponent(r)}/publish-drafts`,{method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:`{}`}),t=await e.json().catch(()=>null);if(!e.ok||t?.success===!1)throw Object.assign(Error(t?.error?.message||`HTTP ${e.status}`),{issues:t?.error?.details?.issues});let n=t?.data?.failed??[];n.length>0?X.error(bc(n)):(X.success(Z(`engine.studio.publishedAll`,o)),h(!1)),x(e=>e+1)}catch(e){X.error(vc(e))}finally{y(!1)}await w()},[r,w]),E=$.useCallback(()=>C(e=>e+1),[]),D=(g??0)>0,O=a(),k=Qo(),[A,j]=$.useState(null),[M,N]=$.useState(!1),[ee,P]=$.useState(!1),[F,te]=$.useState(null),[ne,I]=$.useState(null),[L,R]=$.useState(!0),re=$.useCallback(async()=>{let[e,t]=await Promise.all([k.list(`object`,{packageId:r}),k.listDrafts({packageId:r,type:`object`}).catch(()=>[])]),n=(e||[]).map(e=>({name:String(e.name??``),label:String(e.label??e.name??``)})).filter(e=>e.name),i=new Set(n.map(e=>e.name));for(let e of t)e.name&&!i.has(e.name)&&n.push({name:e.name,label:e.name});return n},[k,r]),ie=$.useCallback(async(e,t)=>{P(!0),te(null);try{let n=L?await re().catch(()=>[]):[];await k.save(`app`,t,Ag(t,e,n),{mode:`draft`,packageId:r}),X.success(Zo(`engine.studio.app.savedDraft`,o,{label:e})),I(e),N(!1),C(e=>e+1)}catch(e){te(vc(e))}finally{P(!1)}},[L,re,k,r,o]);$.useEffect(()=>{let e=!1;return(async()=>{try{let t=(await k.list(`app`,{packageId:r})||[]).map(e=>({name:String(e.name??``),label:String(e.label??e.name??``)})).filter(e=>e.name)[0];e||j(t??null)}catch{e||j(null)}})(),()=>{e=!0}},[k,r,b]);let z=!e;return(0,Q.jsxs)(`div`,{className:`flex h-screen w-full overflow-hidden bg-background text-foreground`,children:[e?(0,Q.jsx)(`aside`,{className:`w-64 shrink-0 overflow-auto border-r bg-muted/40`,children:e}):null,(0,Q.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,Q.jsxs)(`header`,{className:`flex items-center gap-3 overflow-x-auto border-b px-3 py-2`,children:[(0,Q.jsx)(`button`,{type:`button`,onClick:()=>{p()&&O(`/home`)},title:Z(`engine.studio.home`,o),className:`shrink-0 rounded-md p-1 text-muted-foreground hover:bg-muted hover:text-foreground`,children:(0,Q.jsx)(di,{className:`h-4 w-4`})}),(0,Q.jsx)(`div`,{className:`shrink-0`,children:(0,Q.jsx)(T_,{packageId:r,tab:i,beforeNavigate:p})}),(0,Q.jsx)(`span`,{className:`shrink-0 text-muted-foreground`,children:`·`}),(0,Q.jsx)(`nav`,{className:`flex shrink-0 gap-1`,children:y_.map(e=>(0,Q.jsxs)(n,{to:`/studio/${r}/${e.key}`,onClick:t=>{i!==e.key&&(t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.button!==0||p()||t.preventDefault())},className:`inline-flex shrink-0 items-center gap-1.5 rounded-md px-2.5 py-1 text-xs transition-colors `+(i===e.key?`bg-primary/10 font-medium text-primary`:`text-muted-foreground hover:bg-muted hover:text-foreground`),children:[(0,Q.jsx)(e.Icon,{className:`h-3.5 w-3.5`}),Z(`engine.studio.pillar.${e.key}`,o)]},e.key))}),(0,Q.jsxs)(`div`,{className:`ml-auto flex shrink-0 items-center gap-2`,children:[A?(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>window.open(Oc(`apps/${encodeURIComponent(A.name)}`),`_blank`),title:Zo(`engine.studio.app.openTitle`,o,{label:A.label}),className:`inline-flex items-center gap-1.5 rounded-md border px-2.5 py-1 text-xs text-muted-foreground hover:bg-muted hover:text-foreground`,children:[(0,Q.jsx)(zt,{className:`h-3.5 w-3.5`}),Z(`engine.studio.app.open`,o)]}):ne?(0,Q.jsx)(`span`,{title:Z(`engine.studio.app.willOpenAfterPublish`,o),className:`rounded bg-amber-400/15 px-2 py-0.5 text-[11px] text-amber-600 dark:text-amber-300`,children:Zo(`engine.studio.app.pending`,o,{label:ne})}):(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>N(!0),disabled:u,title:Z(u?`engine.studio.pkg.readonlyHint`:`engine.studio.app.noneTitle`,o),className:`inline-flex items-center gap-1.5 rounded-md border px-2.5 py-1 text-xs text-muted-foreground hover:bg-muted hover:text-foreground disabled:pointer-events-none disabled:opacity-50`,children:[(0,Q.jsx)(Ue,{className:`h-3.5 w-3.5`}),Z(`engine.studio.app.create`,o)]}),(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>h(!0),className:`inline-flex items-center gap-1.5 rounded-md border px-2.5 py-1 text-xs text-muted-foreground hover:bg-muted hover:text-foreground`,children:[(0,Q.jsx)(tn,{className:`h-3.5 w-3.5`}),Z(`engine.studio.changes`,o),D?` · ${g}`:``]}),(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>h(!0),disabled:v||!D||u,title:Z(u?`engine.studio.pkg.readonlyHint`:D?`engine.studio.publishTitle`:`engine.studio.publishNoneTitle`,o),className:`inline-flex items-center gap-1.5 rounded-md bg-primary px-3 py-1 text-xs font-medium text-primary-foreground disabled:opacity-50`,children:[v?(0,Q.jsx)(J,{className:`h-3.5 w-3.5 animate-spin`}):(0,Q.jsx)(Or,{className:`h-3.5 w-3.5`}),Z(`engine.studio.publish`,o)]})]})]}),(0,Q.jsx)(`div`,{className:`min-h-0 flex-1`,children:i===`data`?(0,Q.jsx)(N_,{packageId:r,publishNonce:b,onDraftSaved:E,readOnly:u}):i===`automations`?(0,Q.jsx)(F_,{packageId:r,publishNonce:b,onDraftSaved:E,readOnly:u}):i===`access`?(0,Q.jsx)(I_,{packageId:r,publishNonce:b,onDraftSaved:E,readOnly:u,onDirtyChange:f}):(0,Q.jsx)(k_,{packageId:r,publishNonce:b,draftNonce:S,onDraftSaved:E,onCreateApp:u?void 0:()=>N(!0),readOnly:u,foldInspector:z,onDirtyChange:f})})]}),z&&(0,Q.jsx)(dg,{packageId:r,locale:o}),(0,Q.jsx)(yf,{open:m,onOpenChange:h,packageId:r,onPublish:u?void 0:T,publishing:v}),(0,Q.jsx)(Mg,{open:M,onOpenChange:N,title:Z(`engine.studio.app.create`,o),labelFieldLabel:Z(`engine.studio.app.nameLabel`,o),labelPlaceholder:Z(`engine.studio.app.namePlaceholder`,o),idFieldLabel:Z(`engine.studio.app.idLabel`,o),idPlaceholder:Z(`engine.studio.app.idPlaceholder`,o),submitLabel:Z(`engine.studio.createDraft`,o),submittingLabel:Z(`engine.studio.creating`,o),busy:ee,error:F,locale:o,onSubmit:({label:e,name:t})=>void ie(e,t),extra:(0,Q.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-2 text-sm text-muted-foreground`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:L,onChange:e=>R(e.target.checked),className:`h-3.5 w-3.5 accent-primary`}),Z(`engine.studio.app.scaffoldNav`,o)]})})]})}function D_({nodes:e,active:t,onPick:n,objectIcons:r}){return(0,Q.jsx)(Q.Fragment,{children:e.map((e,i)=>{if(e.type===`group`||Array.isArray(e.children)&&e.children.length)return(0,Q.jsxs)(`div`,{className:`mb-1`,children:[(0,Q.jsxs)(`p`,{className:`flex items-center gap-1 px-2 pb-1 pt-3 text-[11px] text-muted-foreground`,children:[(0,Q.jsx)(Rn,{className:`h-3 w-3`}),` `,e.label]}),(0,Q.jsx)(`div`,{className:`pl-1.5`,children:(0,Q.jsx)(D_,{nodes:e.children??[],active:t,onPick:n,objectIcons:r})})]},e.id??i);let a=S_(e),o=a?.type===`object`?r?.[a.name]:void 0,s=e.icon?Yo(e.icon):o?Yo(o):x_(e.type),c=!!a&&t?.type===a.type&&t?.name===a.name;return(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>a&&n(a),disabled:!a,title:a?`${a.type} · ${a.name}`:e.label,className:`flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-xs disabled:opacity-40 `+(c?`bg-muted font-medium`:`text-foreground/90 hover:bg-muted/60`),children:[(0,Q.jsx)(s,{className:`h-3.5 w-3.5 shrink-0`}),(0,Q.jsx)(`span`,{className:`flex-1 truncate`,children:e.label}),a&&a.type!==`page`&&(0,Q.jsx)(`span`,{className:`text-[9px] uppercase tracking-wide text-muted-foreground/60`,children:a.type})]},e.id??i)})})}function O_({navId:e,appDraft:t,objects:n,onNavPatch:r,onClear:i}){let a=Xo(),o=$.useMemo(()=>{let t=/^navigation\[(\d+)\]$/.exec(e);return t?Number(t[1]):-1},[e]),s=$.useMemo(()=>Array.isArray(t.navigation)?t.navigation:[],[t]),c=o>=0?s[o]:null;if(!c)return(0,Q.jsx)(`div`,{className:`px-2 py-10 text-center text-xs text-muted-foreground`,children:Z(`engine.studio.nav.selectItem`,a)});let l=e=>{r({navigation:s.map((t,n)=>n===o?{...t,...e}:t)})},u=String(c.object??c.objectName??``),d=String(c.label??c.title??c.name??``),f=!d||d===`New item`||d===Z(`engine.appNav.newItem`,a);return(0,Q.jsxs)(`div`,{className:`space-y-3`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`label`,{className:`mb-1 block text-[11px] font-medium text-muted-foreground`,children:Z(`engine.studio.nav.label`,a)}),(0,Q.jsx)(`input`,{value:d,onChange:e=>l({label:e.target.value}),placeholder:Z(`engine.studio.nav.labelPlaceholder`,a),className:`w-full rounded border bg-background px-2 py-1 text-xs`})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`label`,{className:`mb-1 block text-[11px] font-medium text-muted-foreground`,children:Z(`engine.studio.nav.linkObject`,a)}),(0,Q.jsxs)(`select`,{value:u,onChange:e=>{let t=e.target.value,r=n.find(e=>e.name===t);if(!t){l({type:void 0,objectName:void 0,object:void 0});return}l({id:c.id||`nav_${t}`,type:`object`,objectName:t,object:void 0,path:void 0,label:f&&r?r.label:d})},className:`w-full rounded border bg-background px-2 py-1 text-xs`,children:[(0,Q.jsx)(`option`,{value:``,children:Z(`engine.studio.nav.chooseObject`,a)}),n.map(e=>(0,Q.jsxs)(`option`,{value:e.name,children:[e.label,` (`,e.name,`)`]},e.name))]}),(0,Q.jsx)(`p`,{className:`mt-1 text-[11px] text-muted-foreground`,children:Z(u?`engine.studio.nav.boundHint`:`engine.studio.nav.unboundHint`,a)}),n.length===0&&(0,Q.jsx)(`p`,{className:`mt-1 text-[11px] text-amber-600 dark:text-amber-400`,children:Z(`engine.studio.nav.noObjects`,a)})]}),(0,Q.jsx)(`button`,{type:`button`,onClick:i,className:`text-[11px] text-muted-foreground underline-offset-2 hover:underline`,children:Z(`engine.studio.deselect`,a)})]})}function k_({packageId:e,publishNonce:t=0,draftNonce:n=0,onDraftSaved:r,onCreateApp:i,readOnly:a=!1,foldInspector:o=!1,onDirtyChange:c}){let l=Qo(),u=Xo(),d=hr(),[f,p]=$.useState(!1),[m,h]=$.useState(e),[g,_]=$.useState(null),[v,y]=$.useState({}),b=$.useMemo(()=>Array.isArray(v.navigation)?v.navigation:[],[v]),[x,S]=$.useState(!1),[C,w]=$.useState(null),[T,E]=s(),D=Ga(T.get(`sel`)),O=$.useRef(null);$.useEffect(()=>{if(!D||b.length===0||O.current===D)return;let e=Wa({navigation:b},D);e&&(O.current=D,S(!0),w({kind:`nav`,id:e.selectionId}))},[D,b]),$.useEffect(()=>{let e=C?Ka({navigation:b},C.id):null;E(t=>{let n=new URLSearchParams(t);return e?n.set(`sel`,_o(e)):n.delete(`sel`),n},{replace:!0})},[C]);let[k,A]=$.useState(!1),j=$.useRef(c);$.useEffect(()=>{j.current=c}),$.useEffect(()=>{j.current?.(k)},[k]),$.useEffect(()=>()=>{j.current?.(!1)},[]);let[M,N]=$.useState(!1),[ee,P]=$.useState(!1),[F,te]=$.useState(null),ne=Eg(F),[I,L]=$.useState(`source`),[R,re]=$.useState({}),[ie,z]=$.useState(null),[ae,B]=$.useState(`canvas`),V=mg(),H=o&&!V,[oe,se]=$.useState(!1),ce=!H,le=!!(x&&C||ie),ue=$.useRef(le);$.useEffect(()=>{if(!H)return;let e=ue.current;ue.current=le,B(t=>fg(t,e,le))},[H,le]);let[de,fe]=$.useState(!1),[pe,U]=$.useState(!1),[me,he]=$.useState(!1),[W,ge]=$.useState(null),[_e,ve]=$.useState(`loading`),[ye,be]=$.useState([]),G=$.useMemo(()=>Object.fromEntries(ye.map(e=>[e.name,e.icon])),[ye]);$.useEffect(()=>{let t=!1;return(async()=>{try{let[n,r]=await Promise.all([l.list(`object`,{packageId:e}),l.listDrafts({packageId:e,type:`object`}).catch(()=>[])]);if(t)return;let i=new Map;for(let e of[...n||[],...r||[]]){let t=e,n=String(t.name??``);!n||i.has(n)||i.set(n,{name:n,label:String(t.label??t.name??n),icon:t.icon?String(t.icon):void 0})}be([...i.values()])}catch{}})(),()=>{t=!0}},[l,e,t,n]),$.useEffect(()=>{let t=!1;return ve(`loading`),(async()=>{try{let n=await l.list(`app`,{packageId:e});if(t)return;let r=n?.[0]?.name?String(n[0].name):null,i=n?.[0]?String(n[0].label??n[0].name??e):e;if(!r){let n=await l.listDrafts({packageId:e,type:`app`});if(t)return;let a=n?.[0];a?.name&&(r=String(a.name),i=String(a.name))}if(!r){ve(`missing`);return}h(i),_(r);let[a,o]=await Promise.all([l.layered(`app`,r),l.getDraft(`app`,r).catch(()=>null)]);if(t)return;let s=a,c=s.effective??s.code??{},u=w_(o),d=u?{...c,...u}:c;(typeof d.label==`string`||typeof d.name==`string`)&&h(String(d.label??d.name??i)),y(d),N(!!u),ve(`ready`);let f=Array.isArray(d.navigation)?d.navigation:[],p=(function e(t){for(let n of t)if(n.type===`group`||n.children?.length){let t=e(n.children??[]);if(t)return t}else{let e=S_(n);if(e)return e}return null})(f),m=ne?C_(f,ne):null;te(e=>e??m??p)}catch(e){t||(ge(vc(e)),ve(`missing`))}})(),()=>{t=!0}},[l,e,t,n]);let xe=$a(F?.type??``),Se=_g(F?.type??``),Ce=mo(F?.type??``),we=uo(F?.type??``),[Te,Ee]=$.useState({key:``,count:0}),K=`${F?.type??``}:${F?.name??``}:${ie?`${ie.kind}:${ie.id}`:`default`}`,De=Te.key===K?Te.count:0,q=!!xe&&!Se,ke=F?.type===`page`?R?.kind:void 0,Ae=ke===`html`||ke===`react`;$.useEffect(()=>{if(!F||!q){re({}),he(!1);return}let e=!1;return fe(!0),ge(null),z(null),(async()=>{try{let[t,n]=await Promise.all([l.layered(F.type,F.name),l.getDraft(F.type,F.name).catch(()=>null)]);if(e)return;let r=t.effective??t.code??{},i=w_(n);re(i?{...r,...i}:r),he(!!i)}catch(t){e||ge(vc(t))}finally{e||fe(!1)}})(),()=>{e=!0}},[l,F,q,t]);let je=$.useCallback(e=>re(t=>({...t,...e})),[]),Me=$.useCallback(async()=>{if(F){U(`draft`);try{await l.save(F.type,F.name,R,{mode:`draft`,packageId:e}),he(!0),r?.()}catch(e){ge(vc(e))}finally{U(!1)}}},[l,F,R,r]),Ne=$.useCallback(e=>{y(t=>({...t,...e})),A(!0)},[]),Fe=$.useCallback(async()=>{if(g){P(`draft`);try{let t=(Array.isArray(v.navigation)?v.navigation:[]).filter(e=>e&&typeof e.type==`string`).map((e,t)=>{let n=e;return typeof n.id==`string`&&n.id?n:{...n,id:`nav_item_${t+1}`}});await l.save(`app`,g,{...v,navigation:t},{mode:`draft`,packageId:e}),N(!0),A(!1),r?.()}catch(e){ge(vc(e))}finally{P(!1)}}},[l,g,v,r]),Ie=(0,Q.jsxs)(`main`,{className:`flex min-w-0 flex-1 flex-col overflow-auto bg-muted/30 p-4`,children:[(0,Q.jsxs)(`div`,{className:`mb-3 flex shrink-0 items-center gap-2`,children:[(0,Q.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-primary/10 px-2 py-0.5 text-[11px] text-primary`,children:[(0,Q.jsx)(Cn,{className:`h-3 w-3`}),` `,Z(`engine.studio.if.previewIsRuntime`,u)]}),F&&(0,Q.jsxs)(`span`,{className:`text-[11px] text-muted-foreground`,children:[F.type,` · `,F.name]})]}),W&&(0,Q.jsx)(`div`,{className:`mb-3 shrink-0 rounded-md border border-destructive/40 bg-destructive/10 px-3 py-2 text-xs text-destructive whitespace-pre-line`,children:W}),(0,Q.jsx)(`div`,{className:Fn(Ae?`min-h-0 flex-1 overflow-hidden`:`rounded-lg border bg-background p-4`),children:_e===`missing`&&!W?(0,Q.jsxs)(`div`,{className:`flex flex-col items-center justify-center gap-3 py-16 text-center`,children:[(0,Q.jsx)(`div`,{className:`flex h-12 w-12 items-center justify-center rounded-full bg-muted`,children:(0,Q.jsx)(Ve,{className:`h-6 w-6 text-muted-foreground`})}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`p`,{className:`text-sm font-medium`,children:Z(`engine.studio.if.noAppTitle`,u)}),(0,Q.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:Z(`engine.studio.if.noAppHint`,u)})]}),i&&(0,Q.jsxs)(`button`,{type:`button`,onClick:i,className:`inline-flex items-center gap-1.5 rounded-md bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground`,children:[(0,Q.jsx)(Ue,{className:`h-3.5 w-3.5`}),` `,Z(`engine.studio.app.create`,u)]})]}):F?de?(0,Q.jsxs)(`div`,{className:`flex items-center justify-center gap-2 py-16 text-sm text-muted-foreground`,children:[(0,Q.jsx)(J,{className:`h-4 w-4 animate-spin`}),` `,Z(`engine.studio.loading`,u)]}):Se?(0,Q.jsx)(Se,{type:F.type,name:F.name,draft:R,locale:u}):Ae?(0,Q.jsx)(po,{mode:`preview`,draft:R,readOnly:!0}):xe?(0,Q.jsx)(xe,{type:F.type,name:F.name,draft:R,editing:!0,selection:ie,onSelectionChange:z,onPatch:je,locale:u}):(0,Q.jsx)(`div`,{className:`py-12 text-center text-xs text-muted-foreground`,children:Zo(`engine.studio.if.readonlyPreview`,u,{type:F.type})}):(0,Q.jsx)(`div`,{className:`py-16 text-center text-sm text-muted-foreground`,children:Z(`engine.studio.if.pickLeft`,u)})}),!q&&F?.type===`object`?(0,Q.jsxs)(`p`,{className:`mt-2 flex items-center gap-1 text-[11px] text-muted-foreground`,children:[(0,Q.jsx)(ar,{className:`h-3 w-3`}),` `,Z(`engine.studio.if.objectHintPre`,u),(0,Q.jsx)(`span`,{className:`font-medium`,children:`Data`}),Z(`engine.studio.if.objectHintPost`,u)]}):null]}),Le=(0,Q.jsxs)(`header`,{className:`flex shrink-0 items-center gap-2 border-b bg-background/95 px-3 py-2`,children:[(0,Q.jsx)(lt,{className:`h-3.5 w-3.5`}),(0,Q.jsx)(`span`,{className:`text-[13px] font-medium`,children:Z(`engine.studio.inspector.props`,u)}),(0,Q.jsxs)(`div`,{className:`ml-auto flex items-center gap-0.5`,children:[ie&&(0,Q.jsx)(`button`,{type:`button`,onClick:()=>z(null),className:`rounded p-0.5 text-muted-foreground hover:bg-muted hover:text-foreground`,"aria-label":Z(`engine.studio.deselect`,u),children:(0,Q.jsx)(Pn,{className:`h-3.5 w-3.5`})}),ce&&(0,Q.jsx)(`button`,{type:`button`,onClick:()=>se(!0),className:`rounded p-0.5 text-muted-foreground hover:bg-muted hover:text-foreground`,"aria-label":Z(`engine.studio.inspector.collapse`,u),title:Z(`engine.studio.inspector.collapse`,u),children:(0,Q.jsx)(Pe,{className:`h-3.5 w-3.5`})})]})]}),Re=(0,Q.jsxs)(`aside`,{className:`flex w-9 shrink-0 flex-col items-center gap-1.5 border-l bg-background py-2`,children:[(0,Q.jsx)(`button`,{type:`button`,onClick:()=>se(!1),className:`rounded-md p-1 text-muted-foreground hover:bg-muted hover:text-foreground`,"aria-label":Z(`engine.studio.inspector.expand`,u),title:Z(`engine.studio.inspector.props`,u),children:(0,Q.jsx)(li,{className:`h-4 w-4`})}),(0,Q.jsx)(lt,{className:`h-3.5 w-3.5 text-muted-foreground`})]}),ze=x&&C?(0,Q.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto p-3`,children:(0,Q.jsx)(O_,{navId:C.id,appDraft:v,objects:ye,onNavPatch:Ne,onClear:()=>w(null)})}):ie&&Ce&&F?(0,Q.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto p-3`,children:(0,Q.jsx)(Ce,{type:F.type,name:F.name,draft:R,selection:ie,onPatch:je,onClearSelection:()=>z(null),onSelectionChange:z,onBlockingIssuesChange:e=>Ee({key:K,count:e}),readOnly:!1,locale:u})}):Ae?H?(0,Q.jsx)(`div`,{className:`mt-2 min-h-0 flex-1 border-t`,children:(0,Q.jsx)(po,{mode:`editor`,draft:R,onPatch:je})}):(0,Q.jsxs)(at,{value:I,onValueChange:e=>L(e===`props`?`props`:`source`),className:`flex min-h-0 flex-1 flex-col`,children:[(0,Q.jsxs)(It,{className:`mx-3 mt-2 shrink-0 self-start`,children:[(0,Q.jsxs)(mi,{value:`source`,className:`gap-1 text-xs`,children:[(0,Q.jsx)(it,{className:`h-3.5 w-3.5`}),` `,Z(`engine.studio.inspector.tabSource`,u)]}),(0,Q.jsx)(mi,{value:`props`,className:`text-xs`,children:Z(`engine.studio.inspector.tabProps`,u)})]}),(0,Q.jsx)(pt,{value:`source`,className:`mt-2 min-h-0 flex-1 border-t`,children:(0,Q.jsx)(po,{mode:`editor`,draft:R,onPatch:je})}),(0,Q.jsx)(pt,{value:`props`,className:`mt-0 min-h-0 flex-1 overflow-auto p-3`,children:(0,Q.jsxs)(`div`,{className:`flex flex-col items-center gap-2 px-2 py-10 text-center text-xs text-muted-foreground`,children:[(0,Q.jsx)(it,{className:`h-5 w-5`}),Zo(`engine.studio.inspector.sourcePageLine1`,u,{kind:ke}),(0,Q.jsx)(`br`,{}),Z(`engine.studio.inspector.sourcePageLine2`,u)]})})]}):we&&F&&q?(0,Q.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto p-3`,children:(0,Q.jsx)(we,{type:F.type,name:F.name,draft:R,onPatch:je,onSelectionChange:z,onBlockingIssuesChange:e=>Ee({key:K,count:e}),readOnly:!1,locale:u})}):(0,Q.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto p-3`,children:(0,Q.jsxs)(`div`,{className:`flex flex-col items-center gap-2 px-2 py-10 text-center text-xs text-muted-foreground`,children:[(0,Q.jsx)(Oe,{className:`h-5 w-5`}),Z(`engine.studio.inspector.emptyLine1`,u),(0,Q.jsx)(`br`,{}),Z(`engine.studio.inspector.emptyLine2`,u)]})});return(0,Q.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 border-b px-3 py-1.5`,children:[(0,Q.jsx)(`button`,{type:`button`,onClick:()=>p(e=>!e),"aria-label":Z(`engine.studio.toggleRail`,u),className:`-ml-1 rounded-md p-1 text-muted-foreground hover:bg-muted hover:text-foreground md:hidden`,children:(0,Q.jsx)(ur,{className:`h-4 w-4`})}),F?(0,Q.jsxs)(`span`,{className:`flex items-center gap-1.5 text-[11px] text-muted-foreground`,children:[(0,Q.jsx)(`span`,{className:`text-[13px] font-medium text-foreground`,children:F.label}),(0,Q.jsxs)(`span`,{className:`rounded bg-muted px-1.5 py-0.5`,children:[F.type,` · `,F.name]})]}):(0,Q.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:Z(`engine.studio.if.pickLeft`,u)}),me&&(0,Q.jsx)(`span`,{className:`rounded bg-amber-400/15 px-2 py-0.5 text-[11px] text-amber-600 dark:text-amber-300`,children:Z(`engine.studio.unpublishedDraft`,u)}),(0,Q.jsxs)(`button`,{type:`button`,onClick:Me,disabled:!F||!q||!!pe||a||De>0,title:De>0?Z(`perm.cel.saveBlocked`,u):a?Z(`engine.studio.pkg.readonlyHint`,u):void 0,className:`ml-auto inline-flex items-center gap-1 rounded-md border px-2.5 py-1 text-xs hover:bg-muted disabled:opacity-50`,children:[pe===`draft`?(0,Q.jsx)(J,{className:`h-3.5 w-3.5 animate-spin`}):(0,Q.jsx)(Cr,{className:`h-3.5 w-3.5`}),Z(`engine.studio.saveDraft`,u)]})]}),(0,Q.jsxs)(`div`,{className:`relative flex min-h-0 flex-1`,children:[d&&f&&(0,Q.jsx)(`div`,{className:`absolute inset-0 z-10 bg-black/30`,onClick:()=>p(!1),"aria-hidden":`true`}),(0,Q.jsxs)(`nav`,{className:Fn((x?`w-72`:`w-52`)+` flex shrink-0 flex-col border-r bg-background`,d&&`absolute inset-y-0 left-0 z-20 shadow-lg transition-transform duration-200`,d&&!f&&`-translate-x-full`),children:[(0,Q.jsxs)(`div`,{className:`shrink-0 border-b px-2 py-1.5`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between gap-1`,children:[(0,Q.jsx)(`p`,{className:`truncate text-[11px] font-medium text-muted-foreground`,children:Zo(`engine.studio.if.navHeading`,u,{app:m})}),_e===`ready`&&!a&&(0,Q.jsx)(`button`,{type:`button`,onClick:()=>{S(e=>!e),w(null)},title:Z(x?`engine.studio.if.doneEditTitle`:`engine.studio.if.editNavTitle`,u),className:`inline-flex shrink-0 items-center gap-1 rounded px-1.5 py-0.5 text-[10px] `+(x?`bg-primary/10 text-primary`:`text-muted-foreground hover:bg-muted`),children:x?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(pr,{className:`h-3 w-3`}),` `,Z(`engine.studio.done`,u)]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(yt,{className:`h-3 w-3`}),` `,Z(`engine.studio.edit`,u)]})})]}),x&&(0,Q.jsxs)(`div`,{className:`mt-1.5 flex items-center gap-1.5`,children:[M&&(0,Q.jsx)(`span`,{className:`rounded bg-amber-400/15 px-1.5 py-0.5 text-[10px] text-amber-600 dark:text-amber-300`,children:Z(`engine.studio.unpublished`,u)}),(0,Q.jsxs)(`button`,{type:`button`,onClick:Fe,disabled:!k||!!ee,className:`inline-flex items-center gap-1 rounded-md border px-2 py-1 text-[11px] hover:bg-muted disabled:opacity-50`,children:[ee===`draft`?(0,Q.jsx)(J,{className:`h-3 w-3 animate-spin`}):(0,Q.jsx)(Cr,{className:`h-3 w-3`}),Z(`engine.studio.saveDraft`,u)]})]})]}),(0,Q.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto p-2`,children:_e===`missing`&&!W?(0,Q.jsxs)(`div`,{className:`px-2 py-3`,children:[(0,Q.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:Z(`engine.studio.if.noApp`,u)}),i&&(0,Q.jsxs)(`button`,{type:`button`,onClick:i,className:`mt-2 inline-flex items-center gap-1 rounded-md border px-2 py-1 text-[11px] hover:bg-muted`,children:[(0,Q.jsx)(Ue,{className:`h-3 w-3`}),` `,Z(`engine.studio.app.create`,u)]})]}):x?(0,Q.jsx)(lo,{draft:v,rootKey:`navigation`,onPatch:Ne,selection:C,onSelectionChange:e=>w(e?{kind:e.kind,id:e.id}:null)}):b.length===0?(0,Q.jsx)(`p`,{className:`px-2 py-3 text-[11px] text-muted-foreground`,children:Z(W?`engine.studio.loadFailed`:_e===`loading`?`engine.studio.loading`:`engine.studio.if.noNavItems`,u)}):(0,Q.jsx)(D_,{nodes:b,active:F,objectIcons:G,onPick:e=>{te(e),d&&p(!1)}})})]}),o?V?(0,Q.jsxs)(Q.Fragment,{children:[Ie,oe?Re:(0,Q.jsxs)(`aside`,{"data-testid":`studio-folded-inspector`,className:Fn(`flex shrink-0 flex-col overflow-hidden border-l`,Ae&&!(ie&&Ce&&F)&&!(x&&C)?`w-[22rem] 2xl:w-[28rem]`:`w-72 2xl:w-80`),children:[Le,ze]})]}):(0,Q.jsxs)(at,{value:ae,onValueChange:e=>B(e===`properties`?`properties`:`canvas`),className:`flex min-w-0 flex-1 flex-col`,"data-testid":`studio-center-tabs`,children:[(0,Q.jsxs)(It,{className:`mx-3 mt-2 shrink-0 self-start`,children:[(0,Q.jsxs)(mi,{value:`canvas`,className:`gap-1 text-xs`,children:[(0,Q.jsx)(Cn,{className:`h-3.5 w-3.5`}),` `,Z(`engine.studio.if.tabCanvas`,u)]}),(0,Q.jsxs)(mi,{value:`properties`,className:`gap-1 text-xs`,children:[(0,Q.jsx)(lt,{className:`h-3.5 w-3.5`}),` `,Z(`engine.studio.inspector.props`,u)]})]}),(0,Q.jsx)(pt,{forceMount:!0,value:`canvas`,className:`mt-0 flex min-h-0 flex-1 flex-col data-[state=inactive]:hidden`,children:Ie}),(0,Q.jsxs)(pt,{value:`properties`,className:`mt-0 flex min-h-0 flex-1 flex-col overflow-hidden`,children:[Le,ze]})]}):(0,Q.jsxs)(Q.Fragment,{children:[Ie,oe?Re:(0,Q.jsxs)(`aside`,{className:Fn(`flex shrink-0 flex-col overflow-hidden border-l`,Ae&&!(ie&&Ce&&F)&&!(x&&C)?`w-[24rem] xl:w-[30rem] 2xl:w-[36rem]`:`w-72`),children:[Le,ze]})]})]})]})}function A_(e){let t=e.length+1,n=`field_${t}`;for(;e.includes(n);)n=`field_${++t}`;return n}var j_=new Set([`_id`,`id`,`organization_id`,`org_id`,`space_id`,`created_at`,`created_by`,`updated_at`,`updated_by`,`modified_at`,`modified_by`,`created_time`,`modified_time`,`updated_time`,`deleted_at`,`deleted_by`]);function M_(e){let{schema:t,dataSource:n,onEdit:r,className:i,onAddRecord:a}=e;return(0,Q.jsx)(ws,{schema:{...t,viewType:`grid`,showSearch:!0,showSort:!0,showFilters:!0,showGroup:!0,showHideFields:!0,inlineEdit:!0,addDeleteRecordsInline:!0,addRecord:{enabled:!0}},dataSource:n,onEdit:r,onAddRecord:a,className:i})}function N_({packageId:e,publishNonce:t=0,onDraftSaved:n,readOnly:r=!1}){let i=Qo(),a=se(),o=Xo(),{entries:s}=$o(i),c=$.useMemo(()=>{let e={};for(let t of s)e[t.type]=t.schema;return e},[s]),l=hr(),[u,d]=$.useState(!1),[f,p]=$.useState([]),[m,h]=$.useState(!1),[g,_]=$.useState(null),v=Eg(g),[y,b]=$.useState({}),[x,S]=$.useState(!1),[C,w]=$.useState(null),[T,E]=$.useState(null),[D,O]=$.useState({key:``,count:0}),k=T?`${g?.name??``}:${T.kind}:${T.id}`:``,A=D.key===k?D.count:0,[j,M]=$.useState({key:``,count:0}),[N,ee]=$.useState(!1),[P,F]=$.useState(!1),[ne,I]=$.useState(!1),[L,R]=$.useState(null),[re,ie]=$.useState(0),[z,ae]=$.useState(`grid`),B=`${g?.name??``}:${z}`,V=j.key===B?j.count:0,H=$.useCallback(e=>M({key:B,count:e}),[B]),oe=A+V,[ce,le]=$.useState(`layout`),ue=$.useRef(null),[de,fe]=$.useState(``),[pe,U]=$.useState(!1),[me,he]=$.useState(!1),[W,ge]=$.useState(!0),[_e,ve]=$.useState(null);$.useEffect(()=>{let t=!1;return no().then(n=>{t||ve(n.find(t=>t.id===e)?.namespace??null)}).catch(()=>{}),()=>{t=!0}},[e]),$.useEffect(()=>{let t=!1;return(async()=>{try{let[n,r]=await Promise.all([i.list(`object`,{packageId:e}),i.listDrafts({packageId:e,type:`object`}).catch(()=>[])]);if(t)return;let a=(n||[]).map(e=>({type:`object`,name:String(e.name??``),label:String(e.label??e.name??``),icon:e.icon?String(e.icon):void 0})).filter(e=>e.name),o=new Set(a.map(e=>e.name));for(let e of r)e.name&&!o.has(e.name)&&a.push({type:`object`,name:e.name,label:e.name,icon:void 0});p(a);let s=Dg(a,v,`object`);_(e=>e??s??a[0]??null)}catch(e){t||w(vc(e))}finally{t||h(!0)}})(),()=>{t=!0}},[i,e,r]),$.useEffect(()=>{if(!g)return;let e=`${g.name}#${t}`;if(ue.current===e)return;ue.current=e;let n=!1;return S(!0),w(null),E(null),ee(!1),(async()=>{try{let[e,t]=await Promise.all([i.layered(`object`,g.name),i.getDraft(`object`,g.name).catch(()=>null)]);if(n)return;let r=e,a=r.effective??r.code??{},o=w_(t);b(o?{...a,...o}:a),F(!!o),ge(!!(r.effective??r.code))}catch(e){n||w(vc(e))}finally{n||S(!1)}})(),()=>{n=!0}},[i,g,t]);let ye=$.useMemo(()=>_s(y.fields).entries.length,[y]),be=$.useMemo(()=>_s(y.fields).entries.map(e=>e.name).filter(e=>!j_.has(e)&&e!==`actions`),[y.fields]),G=$.useCallback(e=>{b(t=>({...t,...e})),ee(!0)},[]),xe=$.useCallback(()=>{if(r)return;let e=_s(y.fields),t=A_(e.entries.map(e=>e.name));e.entries.push(xs(t,`text`,Z(`engine.studio.data.newFieldLabel`,o))),b(t=>({...t,fields:hs(e)})),ee(!0),E({kind:`field`,id:t})},[y,r]),Se=$.useCallback(async(t,a)=>{if(r)return;let s=Xa(a,_e);if(f.some(e=>e.name===s)){w(Zo(`engine.studio.data.idExists`,o,{name:s}));return}he(!0),w(null);try{let r=Og(s,t,Z(`engine.studio.data.nameFieldLabel`,o));await i.save(`object`,s,r,{mode:`draft`,packageId:e});let a={type:`object`,name:s,label:t};p(e=>[...e,a]),_(a),ae(`form`),le(`layout`),U(!1),n?.()}catch(e){w(vc(e))}finally{he(!1)}},[f,i,e,n,r,o,_e]),Ce=$.useCallback(async()=>{if(g){I(`draft`),w(null);try{await i.save(`object`,g.name,y,{mode:`draft`,packageId:e}),F(!0),ee(!1),R(new Date),X.success(Zo(`engine.studio.data.savedDraft`,o,{label:g.label})),n?.()}catch(e){w(vc(e))}finally{I(!1)}}},[i,g,y,n,e,o]),we=$.useCallback(async t=>{if(!g)return;let r=_s(y.fields),a=new Set(t),o=t.map(e=>r.entries.find(t=>t.name===e)).filter(e=>!!e),s=0,c=r.entries.map(e=>a.has(e.name)?o[s++]:e),l={...y,fields:hs({...r,entries:c})};b(l),I(`draft`),w(null);try{await i.save(`object`,g.name,l,{mode:`draft`,packageId:e}),F(!0),ee(!1),n?.(),ie(e=>e+1)}catch(e){w(vc(e))}finally{I(!1)}},[i,g,y,n]),Te=mo(`object`),Ee=[{key:`grid`,label:Z(`engine.studio.data.tab.records`,o)},{key:`form`,label:Z(`engine.studio.data.tab.form`,o)},{key:`rules`,label:Z(`engine.studio.data.tab.rules`,o)},{key:`hooks`,label:Z(`engine.studio.data.tab.hooks`,o)},{key:`actions`,label:Z(`engine.studio.data.tab.actions`,o)},{key:`api`,label:Z(`engine.studio.data.tab.api`,o)},{key:`settings`,label:Z(`engine.studio.data.tab.settings`,o)}],K=Yo(typeof y.icon==`string`?y.icon:g?.icon);return(0,Q.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-3 border-b px-3 py-2`,children:[(0,Q.jsx)(`button`,{type:`button`,onClick:()=>d(e=>!e),"aria-label":Z(`engine.studio.toggleRail`,o),className:`-ml-1 rounded-md p-1 text-muted-foreground hover:bg-muted hover:text-foreground md:hidden`,children:(0,Q.jsx)(ur,{className:`h-4 w-4`})}),g?(0,Q.jsxs)(`span`,{className:`flex min-w-0 items-center gap-2`,children:[(0,Q.jsx)(K,{className:`h-4 w-4 shrink-0 text-muted-foreground`}),(0,Q.jsx)(`span`,{className:`truncate text-[15px] font-semibold leading-none text-foreground`,children:g.label}),(0,Q.jsx)(`span`,{className:`shrink-0 rounded bg-muted/70 px-1.5 py-0.5 font-mono text-[10px] text-muted-foreground`,children:g.name}),(0,Q.jsx)(`span`,{className:`shrink-0 text-[11px] text-muted-foreground`,children:Zo(`engine.studio.data.fieldCount`,o,{count:ye})})]}):(0,Q.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:Z(`engine.studio.data.pickObject`,o)}),P&&(0,Q.jsx)(`span`,{className:`rounded bg-amber-400/15 px-2 py-0.5 text-[11px] text-amber-600 dark:text-amber-300`,children:Z(`engine.studio.unpublishedDraft`,o)}),L&&!N&&(0,Q.jsx)(`span`,{className:`ml-auto text-[11px] text-muted-foreground`,"data-testid":`data-saved-at`,children:Zo(`engine.studio.data.lastSaved`,o,{time:L.toLocaleTimeString(o,{hour:`2-digit`,minute:`2-digit`})})}),(0,Q.jsxs)(`button`,{type:`button`,onClick:Ce,disabled:!g||!N||!!ne||r||oe>0,title:oe>0?Z(`perm.cel.saveBlocked`,o):r?Z(`engine.studio.pkg.readonlyHint`,o):void 0,className:(L&&!N?``:`ml-auto `)+`inline-flex items-center gap-1 rounded-md border px-2.5 py-1 text-xs hover:bg-muted disabled:opacity-50`,children:[ne===`draft`?(0,Q.jsx)(J,{className:`h-3.5 w-3.5 animate-spin`}):(0,Q.jsx)(Cr,{className:`h-3.5 w-3.5`}),Z(`engine.studio.saveDraft`,o)]})]}),(0,Q.jsxs)(`div`,{className:`relative flex min-h-0 flex-1`,children:[l&&u&&(0,Q.jsx)(`div`,{className:`absolute inset-0 z-10 bg-black/30`,onClick:()=>d(!1),"aria-hidden":`true`}),(0,Q.jsxs)(`nav`,{className:Fn(`flex w-52 shrink-0 flex-col border-r bg-background`,l&&`absolute inset-y-0 left-0 z-20 shadow-lg transition-transform duration-200`,l&&!u&&`-translate-x-full`),children:[(0,Q.jsxs)(`div`,{className:`shrink-0 p-2 pb-1`,children:[(0,Q.jsx)(`p`,{className:`px-2 pb-1 pt-1 text-[11px] font-medium text-muted-foreground`,children:Z(`engine.studio.data.objects`,o)}),(0,Q.jsx)(`input`,{value:de,onChange:e=>fe(e.target.value),placeholder:Z(`engine.studio.data.searchObjects`,o),className:`h-7 w-full rounded-md border bg-background px-2 text-[11px] outline-none placeholder:text-muted-foreground/70 focus:ring-1 focus:ring-primary`})]}),(0,Q.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-auto p-2 pt-1`,children:[f.length===0&&(0,Q.jsx)(`p`,{className:`px-2 py-3 text-[11px] text-muted-foreground`,children:Z(C?`engine.studio.loadFailed`:m?`engine.studio.data.noObjects`:`engine.studio.loading`,o)}),f.filter(e=>!de.trim()||e.label.toLowerCase().includes(de.trim().toLowerCase())||e.name.toLowerCase().includes(de.trim().toLowerCase())).map(e=>{let t=Yo(e.icon);return(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>{_(e),l&&d(!1)},className:`flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-xs `+(g?.name===e.name?`bg-muted font-medium`:`text-foreground/90 hover:bg-muted/60`),children:[(0,Q.jsx)(t,{className:`h-3.5 w-3.5 shrink-0`}),(0,Q.jsx)(`span`,{className:`flex-1 truncate`,children:e.label})]},e.name)})]}),(0,Q.jsx)(`div`,{className:`shrink-0 border-t p-2`,children:r?(0,Q.jsxs)(`p`,{title:Z(`engine.studio.pkg.readonlyHint`,o),className:`flex items-center gap-1.5 px-2 py-1.5 text-[11px] text-muted-foreground`,children:[(0,Q.jsx)(Wn,{className:`h-3 w-3`}),` `,Z(`engine.studio.pkg.readonly`,o)]}):(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>{w(null),U(!0)},className:`inline-flex w-full items-center gap-1.5 rounded-md px-2 py-1.5 text-left text-xs text-muted-foreground hover:bg-muted hover:text-foreground`,children:[(0,Q.jsx)(Ue,{className:`h-3.5 w-3.5`}),` `,Z(`engine.studio.data.newObject`,o)]})})]}),(0,Q.jsx)(`main`,{className:`flex min-w-0 flex-1 flex-col overflow-hidden p-4`,children:g?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`mb-4 flex shrink-0 items-center gap-3`,children:[(0,Q.jsx)(`div`,{className:`inline-flex items-center gap-0.5 rounded-lg bg-muted p-1`,children:Ee.map(e=>(0,Q.jsx)(`button`,{type:`button`,onClick:()=>ae(e.key),"aria-pressed":z===e.key,className:`rounded-md px-3 py-1 text-[13px] transition-all `+(z===e.key?`bg-background font-medium text-foreground shadow-sm`:`text-muted-foreground hover:text-foreground`),children:e.label},e.key))}),(z===`grid`||z===`form`)&&!r&&(0,Q.jsxs)(`button`,{type:`button`,onClick:xe,title:Z(`engine.studio.data.addFieldTitle`,o),className:`ml-auto inline-flex items-center gap-1 rounded-md border px-2 py-1 text-[11px] text-muted-foreground hover:bg-muted hover:text-foreground`,children:[(0,Q.jsx)(Ue,{className:`h-3.5 w-3.5`}),` `,Z(`engine.studio.data.addField`,o)]})]}),C&&(0,Q.jsx)(`div`,{className:`mb-2 rounded-md border border-destructive/40 bg-destructive/10 px-3 py-1.5 text-[11px] text-destructive whitespace-pre-line`,children:C}),z===`rules`?(0,Q.jsx)(Qg,{draft:y,onPatch:G,disabled:r,onBlockingIssuesChange:H}):z===`settings`?(0,Q.jsx)($g,{name:g.name,draft:y,onPatch:G,locale:o,disabled:r,onBlockingIssuesChange:H}):z===`hooks`?(0,Q.jsx)(m_,{objectName:g.name,packageId:e,disabled:r,hookSchema:c.hook}):z===`actions`?(0,Q.jsx)(v_,{draft:y,onPatch:G,disabled:r,actionSchema:c.action,onBlockingIssuesChange:H}):z===`api`?(0,Q.jsx)(u_,{name:g.name,draft:y}):z===`grid`&&!W?(0,Q.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col items-center justify-center gap-2 rounded-lg border border-dashed bg-muted/20 text-center`,children:[(0,Q.jsx)(`p`,{className:`text-sm font-medium`,children:Z(`engine.studio.data.draftObjectTitle`,o)}),(0,Q.jsx)(`p`,{className:`max-w-md text-[11px] leading-5 text-muted-foreground`,children:Z(`engine.studio.data.draftObjectHint`,o)}),(0,Q.jsx)(`button`,{type:`button`,onClick:()=>{ae(`form`),le(`layout`)},className:`mt-1 inline-flex items-center gap-1 rounded-md border px-2.5 py-1 text-xs hover:bg-muted`,children:Z(`engine.studio.data.goDesignFields`,o)})]}):z===`grid`?(0,Q.jsx)(Q.Fragment,{children:(0,Q.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto rounded-lg border bg-background`,children:(0,Q.jsx)(Sr,{value:{...r?{}:{onAddColumn:xe,addColumnLabel:Z(`engine.studio.data.addField`,o),onReorderFields:we},onEditColumn:e=>{_s(y.fields).entries.some(t=>t.name===e)&&E({kind:`field`,id:e})},editColumnLabel:Z(`engine.studio.data.editFieldProps`,o)},children:(0,Q.jsx)(te,{dataSource:a,children:(0,Q.jsx)(Os,{schema:{type:`object-view`,objectName:g.name,showCreate:!1,table:{fields:be}},dataSource:a,renderListView:M_},`${g.name}:${re}`)})})})}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`mb-3 flex items-center gap-2`,children:[(0,Q.jsxs)(`div`,{className:`inline-flex items-center gap-0.5 rounded-lg bg-muted p-0.5`,children:[(0,Q.jsx)(`button`,{type:`button`,onClick:()=>le(`layout`),"aria-pressed":ce===`layout`,className:`rounded-md px-2.5 py-0.5 text-[12px] transition-all `+(ce===`layout`?`bg-background font-medium text-foreground shadow-sm`:`text-muted-foreground hover:text-foreground`),children:Z(`engine.studio.data.form.layout`,o)}),(0,Q.jsx)(`button`,{type:`button`,onClick:()=>le(`preview`),"aria-pressed":ce===`preview`,className:`rounded-md px-2.5 py-0.5 text-[12px] transition-all `+(ce===`preview`?`bg-background font-medium text-foreground shadow-sm`:`text-muted-foreground hover:text-foreground`),children:Z(`engine.studio.data.form.preview`,o)})]}),(0,Q.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:Z(ce===`layout`?N&&!r?`engine.studio.data.form.layoutBadge`:`engine.studio.data.form.layoutBadgeClean`:`engine.studio.data.form.previewBadge`,o)}),ce===`preview`&&(N||P)&&(0,Q.jsx)(`span`,{className:`inline-flex items-center gap-1 rounded bg-amber-400/15 px-2 py-0.5 text-[11px] text-amber-600 dark:text-amber-300`,children:Z(`engine.studio.data.form.previewWarn`,o)})]}),ce===`layout`?(0,Q.jsx)(Vg,{draft:y,objectName:g.name,systemFieldNames:j_,onChange:G,selectedField:T?.kind===`field`?T.id:null,onSelectField:e=>E({kind:`field`,id:e}),selectedGroup:T?.kind===`group`?T.id:null,onSelectGroup:e=>E({kind:`group`,id:e}),onAddField:xe,readOnly:r}):W?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`style`,{children:`
|
|
10
|
+
/* Design preview: the form is a click-to-select canvas, not a data-entry
|
|
11
|
+
* form. Disable interaction on field contents so a click anywhere on a
|
|
12
|
+
* field routes to its [data-field] wrapper (→ select), and neutralize the
|
|
13
|
+
* create/cancel footer so nothing is submittable here. */
|
|
14
|
+
.os-form-authoring [data-field]{border-radius:8px;cursor:pointer;transition:box-shadow .12s;padding:8px;margin:-8px 0;}
|
|
15
|
+
.os-form-authoring [data-field] *{pointer-events:none;}
|
|
16
|
+
.os-form-authoring [data-field]:hover{box-shadow:0 0 0 1px hsl(var(--border));}
|
|
17
|
+
.os-form-authoring form > div:last-child:has(button){display:none;}
|
|
18
|
+
${T?.kind===`field`?`.os-form-authoring [data-field="${String(T.id).replace(/[^\w-]/g,``)}"]{box-shadow:0 0 0 2px hsl(var(--primary));}`:``}
|
|
19
|
+
`}),(0,Q.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto rounded-lg border bg-background p-6`,children:(0,Q.jsx)(`div`,{className:`os-form-authoring mx-auto max-w-6xl`,onClick:e=>{let t=e.target.closest(`[data-field]`)?.getAttribute(`data-field`);t&&_s(y.fields).entries.some(e=>e.name===t)&&E({kind:`field`,id:t})},children:(0,Q.jsx)(te,{dataSource:a,children:(0,Q.jsx)(Ci,{schema:{type:`object-form`,objectName:g.name,mode:`create`,fields:_s(y.fields).entries.map(e=>e.name).filter(e=>!j_.has(e))},dataSource:a},`${g.name}:${re}:form`)})})})]}):(0,Q.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col items-center justify-center gap-2 rounded-lg border border-dashed bg-muted/20 text-center`,children:[(0,Q.jsx)(`p`,{className:`text-sm font-medium`,children:Z(`engine.studio.data.form.noPublishedTitle`,o)}),(0,Q.jsx)(`p`,{className:`max-w-md text-[11px] leading-5 text-muted-foreground`,children:Z(`engine.studio.data.form.noPublishedHint`,o)})]})]})]}):m&&f.length===0?(0,Q.jsxs)(`div`,{className:`flex flex-col items-center gap-2 py-16 text-center`,children:[(0,Q.jsx)(`p`,{className:`text-sm font-medium`,children:Z(`engine.studio.data.firstObjectTitle`,o)}),(0,Q.jsx)(`p`,{className:`max-w-sm text-[11px] leading-5 text-muted-foreground`,children:Z(`engine.studio.data.firstObjectHint`,o)}),!r&&(0,Q.jsxs)(`button`,{type:`button`,"data-testid":`empty-state-new-object`,onClick:()=>{w(null),U(!0)},className:`mt-2 inline-flex items-center gap-1.5 rounded-md bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground hover:bg-primary/90`,children:[(0,Q.jsx)(Ue,{className:`h-3.5 w-3.5`}),` `,Z(`engine.studio.data.newObject`,o)]})]}):(0,Q.jsx)(`div`,{className:`py-16 text-center text-sm text-muted-foreground`,children:Z(`engine.studio.data.pickObject`,o)})}),g&&T&&(T.kind===`group`||Te)&&(0,Q.jsxs)(`aside`,{className:`flex w-80 shrink-0 flex-col border-l`,children:[(0,Q.jsxs)(`header`,{className:`sticky top-0 z-10 flex items-center gap-2 border-b bg-background/95 px-3 py-2 backdrop-blur`,children:[(0,Q.jsx)(lt,{className:`h-3.5 w-3.5`}),(0,Q.jsx)(`span`,{className:`text-[13px] font-medium`,children:Z(T.kind===`group`?`engine.studio.data.groupProps`:`engine.studio.data.fieldProps`,o)}),(0,Q.jsx)(`button`,{type:`button`,onClick:()=>E(null),className:`ml-auto rounded p-0.5 text-muted-foreground hover:bg-muted hover:text-foreground`,"aria-label":Z(`engine.studio.close`,o),children:(0,Q.jsx)(Pn,{className:`h-3.5 w-3.5`})})]}),(0,Q.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto p-3`,children:T.kind===`group`?(0,Q.jsx)(Hg,{draft:y,groupKey:T.id,onPatch:G,onClose:()=>E(null),readOnly:r,locale:o}):Te&&$.createElement(Te,{type:`object`,name:g.name,draft:y,selection:T,onPatch:G,onClearSelection:()=>E(null),onSelectionChange:E,onBlockingIssuesChange:e=>O({key:k,count:e}),readOnly:r,locale:o})})]})]}),(0,Q.jsx)(Mg,{open:pe,onOpenChange:U,title:Z(`engine.studio.data.newObject`,o),labelFieldLabel:Z(`engine.studio.data.nameLabel`,o),labelPlaceholder:Z(`engine.studio.data.labelPlaceholder`,o),idFieldLabel:Z(`engine.studio.data.idLabel`,o),idPlaceholder:Z(`engine.studio.data.idPlaceholder`,o),submitLabel:Z(`engine.studio.createDraft`,o),submittingLabel:Z(`engine.studio.creating`,o),busy:me,error:C,locale:o,onSubmit:({label:e,name:t})=>void Se(e,t)})]})}function P_({state:e,locale:t}){if(!e)return null;let{enabled:n,bound:r}=e,i=Z(n?r?`engine.studio.auto.onBound`:`engine.studio.auto.onUnbound`:`engine.studio.auto.offTitle`,t);return(0,Q.jsxs)(`span`,{title:i,className:`inline-flex shrink-0 items-center gap-1`,children:[(0,Q.jsx)(`span`,{className:`h-1.5 w-1.5 rounded-full `+(n?`bg-emerald-500`:`bg-muted-foreground/40`)}),(0,Q.jsx)(`span`,{className:`text-[10px] `+(n?`text-emerald-600 dark:text-emerald-400`:`text-muted-foreground`),children:Z(n?`engine.studio.auto.on`:`engine.studio.auto.off`,t)})]})}function F_({packageId:e,publishNonce:t=0,onDraftSaved:n,readOnly:r=!1}){let i=Qo(),a=Xo(),o=hr(),[s,c]=$.useState(!1),[l,u]=$.useState([]),[d,f]=$.useState(null),p=Eg(d),[m,h]=$.useState({}),[g,_]=$.useState(null),[v,y]=$.useState(!1),[b,x]=$.useState(!1),[S,C]=$.useState(!1),[w,T]=$.useState(null),[E,D]=$.useState(!1),[O,k]=$.useState(!1),[A,j]=$.useState(!1),M=$a(d?.type??``),N=mo(`flow`),ee=!!M,[P,F]=$.useState({});$.useEffect(()=>{let e=!1;return(async()=>{try{let t=await fetch(`/api/v1/automation/_status`,{credentials:`include`,headers:{Accept:`application/json`}});if(!t.ok)return;let n=await t.json().catch(()=>null),r=n?.data?.flows??n?.flows??[];if(e||!Array.isArray(r))return;let i={};for(let e of r)e?.name&&(i[e.name]={enabled:e.enabled!==!1,bound:!!e.bound});F(i)}catch{}})(),()=>{e=!0}},[t]),$.useEffect(()=>{let t=!1;return(async()=>{try{let n=await Tg(i,`flow`,e);if(t)return;u(n);let r=Dg(n,p,`flow`);f(e=>e??r??n[0]??null)}catch(e){t||T(vc(e))}finally{t||D(!0)}})(),()=>{t=!0}},[i,e,t]);let te=$.useCallback(async(t,r)=>{j(!0),T(null);try{let o=kg(r,t,Z(`engine.studio.auto.nodeStart`,a),Z(`engine.studio.auto.nodeEnd`,a));await i.save(`flow`,r,o,{mode:`draft`,packageId:e});let s={type:`flow`,name:r,label:t};u(e=>[...e.filter(e=>e.name!==r),s]),f(s),C(!0),k(!1),n?.(),X.success(Zo(`engine.studio.auto.savedDraft`,a,{label:t}))}catch(e){T(vc(e))}finally{j(!1)}},[i,e,n,a]);$.useEffect(()=>{if(!d)return;let e=!1;return y(!0),T(null),_(null),(async()=>{try{let[t,n]=await Promise.all([i.layered(`flow`,d.name),i.getDraft(`flow`,d.name).catch(()=>null)]);if(e)return;let r=t,a=r.effective??r.code??{},o=w_(n);h(o?{...a,...o}:a),C(!!o)}catch(t){e||T(vc(t))}finally{e||y(!1)}})(),()=>{e=!0}},[i,d,t]);let ne=$.useCallback(e=>h(t=>({...t,...e})),[]),I=$.useCallback(async()=>{if(d){x(`draft`),T(null);try{await i.save(`flow`,d.name,m,{mode:`draft`,packageId:e}),C(!0),n?.()}catch(e){T(vc(e))}finally{x(!1)}}},[i,d,m,n]),L=m.status!==`obsolete`&&m.status!==`invalid`,R=$.useCallback(async()=>{if(!d)return;let t=m.status===`obsolete`||m.status===`invalid`,r={...m,status:t?`active`:`obsolete`};h(r),x(`draft`),T(null);try{await i.save(`flow`,d.name,r,{mode:`draft`,packageId:e}),C(!0),n?.(),X.success(Z(t?`engine.studio.auto.enabledToast`:`engine.studio.auto.disabledToast`,a))}catch(e){T(vc(e))}finally{x(!1)}},[i,d,m,e,n,a]);return(0,Q.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 border-b px-3 py-1.5`,children:[(0,Q.jsx)(`button`,{type:`button`,onClick:()=>c(e=>!e),"aria-label":Z(`engine.studio.toggleRail`,a),className:`-ml-1 rounded-md p-1 text-muted-foreground hover:bg-muted hover:text-foreground md:hidden`,children:(0,Q.jsx)(ur,{className:`h-4 w-4`})}),(0,Q.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:Z(`engine.studio.auto.defaultOff`,a)}),S&&(0,Q.jsx)(`span`,{className:`rounded bg-amber-400/15 px-2 py-0.5 text-[11px] text-amber-600 dark:text-amber-300`,children:Z(`engine.studio.unpublishedDraft`,a)}),d&&(0,Q.jsxs)(`button`,{type:`button`,role:`switch`,"aria-checked":L,onClick:R,disabled:!ee||!!b,title:Z(L?`engine.studio.auto.disableTitle`:`engine.studio.auto.enableTitle`,a),className:`inline-flex items-center gap-1.5 rounded-md border px-2 py-1 text-[11px] hover:bg-muted disabled:opacity-50`,children:[(0,Q.jsx)(`span`,{className:`relative inline-flex h-3.5 w-6 shrink-0 items-center rounded-full transition-colors `+(L?`bg-emerald-500`:`bg-muted-foreground/40`),children:(0,Q.jsx)(`span`,{className:`inline-block h-2.5 w-2.5 rounded-full bg-white transition-transform `+(L?`translate-x-3`:`translate-x-0.5`)})}),Z(L?`engine.studio.auto.enabled`:`engine.studio.auto.disabled`,a)]}),(0,Q.jsxs)(`button`,{type:`button`,onClick:I,disabled:!d||!ee||!!b||r,title:r?Z(`engine.studio.pkg.readonlyHint`,a):void 0,className:`ml-auto inline-flex items-center gap-1 rounded-md border px-2.5 py-1 text-xs hover:bg-muted disabled:opacity-50`,children:[b===`draft`?(0,Q.jsx)(J,{className:`h-3.5 w-3.5 animate-spin`}):(0,Q.jsx)(Cr,{className:`h-3.5 w-3.5`}),Z(`engine.studio.saveDraft`,a)]})]}),(0,Q.jsxs)(`div`,{className:`relative flex min-h-0 flex-1`,children:[o&&s&&(0,Q.jsx)(`div`,{className:`absolute inset-0 z-10 bg-black/30`,onClick:()=>c(!1),"aria-hidden":`true`}),(0,Q.jsxs)(`nav`,{className:Fn(`flex w-52 shrink-0 flex-col overflow-auto border-r bg-background p-2`,o&&`absolute inset-y-0 left-0 z-20 shadow-lg transition-transform duration-200`,o&&!s&&`-translate-x-full`),children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-1 px-2 pb-1 pt-1`,children:[(0,Q.jsx)(`p`,{className:`flex-1 text-[11px] font-medium text-muted-foreground`,children:Z(`engine.studio.auto.heading`,a)}),!r&&(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>{T(null),k(!0)},title:Z(`engine.studio.auto.newTitle`,a),className:`inline-flex items-center gap-0.5 rounded border px-1.5 py-0.5 text-[11px] hover:bg-muted`,children:[(0,Q.jsx)(Ue,{className:`h-3 w-3`}),` `,Z(`engine.studio.new`,a)]})]}),l.length>0&&l.map(e=>(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>{f(e),o&&c(!1)},className:`flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-xs `+(d?.name===e.name?`bg-muted font-medium`:`text-foreground/90 hover:bg-muted/60`),children:[(0,Q.jsx)(xr,{className:`h-3.5 w-3.5 shrink-0`}),(0,Q.jsx)(`span`,{className:`flex-1 truncate`,children:e.label}),(0,Q.jsx)(P_,{state:P[e.name],locale:a})]},e.name)),l.length===0&&!O&&(0,Q.jsx)(`p`,{className:`px-2 py-3 text-[11px] text-muted-foreground`,children:Z(w?`engine.studio.loadFailed`:E?`engine.studio.auto.none`:`engine.studio.loading`,a)})]}),(0,Q.jsxs)(`main`,{className:`flex min-w-0 flex-1 flex-col overflow-auto bg-muted/30 p-4`,children:[(0,Q.jsxs)(`div`,{className:`mb-3 flex shrink-0 items-center gap-2`,children:[(0,Q.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-primary/10 px-2 py-0.5 text-[11px] text-primary`,children:[(0,Q.jsx)(xr,{className:`h-3 w-3`}),` `,Z(`engine.studio.auto.canvasHint`,a)]}),d&&(0,Q.jsxs)(`span`,{className:`text-[11px] text-muted-foreground`,children:[`flow · `,d.name]})]}),w&&(0,Q.jsx)(`div`,{className:`mb-3 shrink-0 rounded-md border border-destructive/40 bg-destructive/10 px-3 py-2 text-xs text-destructive whitespace-pre-line`,children:w}),(0,Q.jsx)(`div`,{className:`min-h-0 flex-1 rounded-lg border bg-background p-4`,children:d?v?(0,Q.jsxs)(`div`,{className:`flex items-center justify-center gap-2 py-16 text-sm text-muted-foreground`,children:[(0,Q.jsx)(J,{className:`h-4 w-4 animate-spin`}),` `,Z(`engine.studio.loading`,a)]}):M?$.createElement(M,{type:d.type,name:d.name,draft:m,editing:!0,selection:g,onSelectionChange:_,onPatch:ne,locale:a}):(0,Q.jsx)(`pre`,{className:`overflow-auto text-[11px] text-muted-foreground`,children:JSON.stringify(m,null,2)}):(0,Q.jsx)(`div`,{className:`py-16 text-center text-sm text-muted-foreground`,children:Z(`engine.studio.auto.pick`,a)})})]}),(0,Q.jsxs)(`aside`,{className:`w-72 shrink-0 overflow-auto border-l`,children:[(0,Q.jsxs)(`header`,{className:`sticky top-0 z-10 flex items-center gap-2 border-b bg-background/95 px-3 py-2 backdrop-blur`,children:[(0,Q.jsx)(lt,{className:`h-3.5 w-3.5`}),(0,Q.jsx)(`span`,{className:`text-[13px] font-medium`,children:Z(`engine.studio.auto.config`,a)}),g&&(0,Q.jsx)(`button`,{type:`button`,onClick:()=>_(null),className:`ml-auto rounded p-0.5 text-muted-foreground hover:bg-muted hover:text-foreground`,"aria-label":Z(`engine.studio.deselect`,a),children:(0,Q.jsx)(Pn,{className:`h-3.5 w-3.5`})})]}),(0,Q.jsx)(`div`,{className:`p-3`,children:g&&N&&d?$.createElement(N,{type:`flow`,name:d.name,draft:m,selection:g,onPatch:ne,onClearSelection:()=>_(null),onSelectionChange:_,readOnly:!1,locale:a}):(0,Q.jsxs)(`div`,{className:`flex flex-col items-center gap-2 px-2 py-10 text-center text-xs text-muted-foreground`,children:[(0,Q.jsx)(Oe,{className:`h-5 w-5`}),Z(`engine.studio.auto.emptyLine1`,a),(0,Q.jsx)(`br`,{}),Z(`engine.studio.auto.emptyLine2`,a)]})})]})]}),(0,Q.jsx)(Mg,{open:O,onOpenChange:k,title:Z(`engine.studio.auto.newTitle`,a),labelFieldLabel:Z(`engine.studio.auto.nameLabel`,a),labelPlaceholder:Z(`engine.studio.auto.namePlaceholder`,a),idFieldLabel:Z(`engine.studio.auto.idLabel`,a),idPlaceholder:Z(`engine.studio.auto.idPlaceholder`,a),submitLabel:Z(`engine.studio.createDraft`,a),submittingLabel:Z(`engine.studio.creating`,a),busy:A,error:w,locale:a,onSubmit:({label:e,name:t})=>void te(e,t)})]})}function I_({packageId:e,publishNonce:t,onDraftSaved:n,readOnly:r=!1,onDirtyChange:i}){let a=Qo(),o=Xo(),s=hr(),[c,l]=$.useState(!1),[u,d]=$.useState([]),[f,p]=$.useState(!1),[m,h]=$.useState(null),[g,_]=$.useState(null),[v,y]=$.useState(!1),[b,x]=$.useState(null),S=$.useRef(!1),C=Eg($.useMemo(()=>v?{type:`owd`,name:`overview`}:g?{type:`permission`,name:g}:null,[v,g])),[w,T]=$.useState(``),[E,D]=$.useState(!1),[O,k]=$.useState(null),[A,j]=$.useState(!1),[M,N]=$.useState(!1),[ee,P]=$.useState(!1),[F,te]=$.useState(!1),ne=ee||F,I=$.useRef(i);$.useEffect(()=>{I.current=i}),$.useEffect(()=>{I.current?.(ne)},[ne]),$.useEffect(()=>()=>{I.current?.(!1)},[]);let L=$.useCallback(()=>!ne||window.confirm(Z(`engine.edit.unsavedLeaveConfirm`,o)),[ne,o]),R=$.useCallback(async()=>{try{let[t,n]=await Promise.all([a.list(`permission`,{packageId:e}),a.listDrafts({packageId:e,type:`permission`}).catch(()=>[])]),r=new Map;for(let e of t||[]){let t=String(e.name??e.id??``);t&&r.set(t,{name:t,label:String(e.label??e.name??``),isDefault:!!e.isDefault})}for(let e of n||[]){let t=String(e?.name??``);!t||r.has(t)||r.set(t,{name:t,label:t})}let i=[...r.values()];d(i),!S.current&&C?.type===`owd`&&(S.current=!0,y(!0));let o=Dg(i,C,`permission`);_(e=>e??o?.name??i[0]?.name??null)}catch(e){h(vc(e))}finally{p(!0)}},[a,e]);$.useEffect(()=>{R()},[R,t]);let re=$.useCallback(async(t,r)=>{j(!0),k(null);try{await a.save(`permission`,r,jg(r,t),{mode:`draft`,packageId:e}),X.success(Zo(`engine.studio.access.created`,o,{label:t})),D(!1),n?.(),await R(),y(!1),_(r)}catch(e){k(vc(e))}finally{j(!1)}},[a,R,e,n,o]),ie=u.filter(e=>!w.trim()||e.label.toLowerCase().includes(w.trim().toLowerCase())||e.name.toLowerCase().includes(w.trim().toLowerCase()));return(0,Q.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 border-b px-3 py-1.5`,children:[(0,Q.jsx)(`button`,{type:`button`,onClick:()=>l(e=>!e),"aria-label":Z(`engine.studio.toggleRail`,o),className:`-ml-1 rounded-md p-1 text-muted-foreground hover:bg-muted hover:text-foreground md:hidden`,children:(0,Q.jsx)(ur,{className:`h-4 w-4`})}),(0,Q.jsxs)(`span`,{className:`flex items-center gap-1.5 text-[11px] text-muted-foreground`,children:[(0,Q.jsx)(sn,{className:`h-3.5 w-3.5`}),(0,Q.jsx)(`span`,{className:`text-[13px] font-medium text-foreground`,children:Z(`engine.studio.access.title`,o)}),(0,Q.jsx)(`span`,{className:`rounded bg-muted px-1.5 py-0.5`,children:Z(`engine.studio.access.subtitle`,o)})]}),(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>N(!0),className:`ml-auto flex items-center gap-1.5 rounded-md border px-2 py-0.5 text-[11px] text-muted-foreground hover:bg-muted hover:text-foreground`,children:[(0,Q.jsx)(un,{className:`h-3.5 w-3.5`}),Z(`engine.studio.access.explain.open`,o)]}),(0,Q.jsx)(`span`,{title:Z(`engine.studio.access.bannerTitle`,o),className:`rounded bg-amber-400/15 px-2 py-0.5 text-[11px] text-amber-600 dark:text-amber-300`,children:Z(`engine.studio.access.banner`,o)})]}),!r&&(0,Q.jsx)(Is,{packageId:e,className:`mx-3 mt-2`,strings:{describe:e=>Zo(e.anchor===`guest`?`engine.studio.access.suggestPromptGuest`:`engine.studio.access.suggestPromptEveryone`,o,{set:e.permission_set_name}),confirm:Z(`engine.studio.access.suggestConfirm`,o),confirming:Z(`engine.studio.access.suggestConfirming`,o),dismiss:Z(`engine.studio.access.suggestDismiss`,o),confirmedToast:e=>Zo(`engine.studio.access.suggestConfirmedToast`,o,{set:e.permission_set_name,anchor:e.anchor}),dismissedToast:e=>Zo(`engine.studio.access.suggestDismissedToast`,o,{set:e.permission_set_name})}}),(0,Q.jsxs)(`div`,{className:`relative flex min-h-0 flex-1`,children:[s&&c&&(0,Q.jsx)(`div`,{className:`absolute inset-0 z-10 bg-black/30`,onClick:()=>l(!1),"aria-hidden":`true`}),(0,Q.jsxs)(`nav`,{className:Fn(`flex w-52 shrink-0 flex-col border-r bg-background`,s&&`absolute inset-y-0 left-0 z-20 shadow-lg transition-transform duration-200`,s&&!c&&`-translate-x-full`),children:[(0,Q.jsx)(`div`,{className:`border-b p-2 pb-2`,children:(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>{if(v){x(null),s&&l(!1);return}L()&&(y(!0),x(null),s&&l(!1))},className:`flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-xs `+(v?`bg-muted font-medium`:`text-foreground/90 hover:bg-muted/60`),children:[(0,Q.jsx)(At,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground`}),(0,Q.jsx)(`span`,{className:`flex-1 truncate`,children:Z(`engine.studio.owd.railLabel`,o)})]})}),(0,Q.jsxs)(`div`,{className:`p-2 pb-0`,children:[(0,Q.jsx)(`p`,{className:`px-2 pb-1 pt-1 text-[11px] font-medium text-muted-foreground`,children:Z(`engine.studio.access.heading`,o)}),(0,Q.jsx)(`input`,{value:w,onChange:e=>T(e.target.value),placeholder:Z(`engine.studio.access.search`,o),className:`mb-1 h-7 w-full rounded-md border bg-background px-2 text-[11px] outline-none focus:ring-1 focus:ring-primary`})]}),(0,Q.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-auto p-2 pt-1`,children:[u.length===0&&(0,Q.jsx)(`p`,{className:`px-2 py-3 text-[11px] text-muted-foreground`,children:Z(m?`engine.studio.loadFailed`:f?`engine.studio.access.none`:`engine.studio.loading`,o)}),ie.map(e=>(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>{if(!v&&g===e.name){s&&l(!1);return}L()&&(y(!1),_(e.name),s&&l(!1))},className:`flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-xs `+(!v&&g===e.name?`bg-muted font-medium`:`text-foreground/90 hover:bg-muted/60`),children:[(0,Q.jsx)(sn,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground`}),(0,Q.jsx)(`span`,{className:`flex-1 truncate`,children:e.label}),e.isDefault&&(0,Q.jsx)(`span`,{className:`text-[9px] uppercase tracking-wide text-muted-foreground/60`,children:`default`})]},e.name))]}),(0,Q.jsx)(`div`,{className:`shrink-0 border-t p-2`,children:r?(0,Q.jsxs)(`p`,{title:Z(`engine.studio.pkg.readonlyHint`,o),className:`flex items-center gap-1.5 px-2 py-1.5 text-[11px] text-muted-foreground`,children:[(0,Q.jsx)(Wn,{className:`h-3 w-3`}),` `,Z(`engine.studio.pkg.readonly`,o)]}):(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>{L()&&(k(null),D(!0))},className:`flex w-full items-center gap-1.5 rounded-md px-2 py-1.5 text-left text-xs text-muted-foreground hover:bg-muted hover:text-foreground`,children:[(0,Q.jsx)(Ue,{className:`h-3.5 w-3.5`}),` `,Z(`engine.studio.access.new`,o)]})})]}),(0,Q.jsx)(`main`,{className:`min-w-0 flex-1 overflow-auto`,children:v?(0,Q.jsx)(o_,{client:a,packageId:e,publishNonce:t,onDraftSaved:n,readOnly:r,locale:o,highlightObject:b,onDirtyChange:te}):g?(0,Q.jsx)(io,{type:`permission`,name:g,packageId:e,publishNonce:t,onDraftSaved:n,readOnly:r,onDirtyChange:P,embedded:!0,onOpenOwd:e=>{L()&&(x(e||null),y(!0))}},g):(0,Q.jsx)(`div`,{className:`py-16 text-center text-sm text-muted-foreground`,children:f&&u.length===0?Z(`engine.studio.access.emptyMain`,o):Z(`engine.studio.access.pick`,o)})})]}),(0,Q.jsx)(wg,{open:M,onOpenChange:N,packageId:e}),(0,Q.jsx)(Mg,{open:E,onOpenChange:D,title:Z(`engine.studio.access.new`,o),labelFieldLabel:Z(`engine.studio.access.nameLabel`,o),labelPlaceholder:Z(`engine.studio.access.labelPlaceholder`,o),idFieldLabel:Z(`engine.studio.access.idLabel`,o),idPlaceholder:Z(`engine.studio.access.idPlaceholder`,o),submitLabel:Z(`engine.studio.create`,o),submittingLabel:Z(`engine.studio.creating`,o),busy:A,error:O,locale:o,onSubmit:({label:e,name:t})=>void re(e,t)})]})}function L_({value:e,onChange:t,onEnter:n,onEscape:r,placeholder:i,autoFocus:a,locale:o,testId:s}){let[c,l]=$.useState(!1),u=e.trim().length>0&&!co.test(e.trim());return(0,Q.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,Q.jsx)(`input`,{autoFocus:a,value:e,onChange:e=>{let{value:n,stripped:r}=go(e.target.value);l(r),t(n)},onKeyDown:e=>{e.key===`Enter`&&n?.(),e.key===`Escape`&&r?.()},placeholder:i,"data-testid":s,className:`h-7 w-full rounded-md border bg-background px-2 font-mono text-[11px] outline-none focus:ring-1 focus:ring-primary`}),c&&(0,Q.jsx)(`p`,{className:`text-[10px] text-amber-600 dark:text-amber-400`,"data-testid":`pkg-id-stripped`,children:Z(`engine.studio.pkg.idStrippedNotice`,o)}),u&&(0,Q.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,"data-testid":`pkg-id-format-hint`,children:Z(`engine.studio.pkg.idFormatHint`,o)})]})}function R_(){let e=a(),t=Xo(),[n,r]=$.useState(null),[i,o]=$.useState(null),[s,c]=$.useState(!1);$.useEffect(()=>{let e=!1;return no().then(t=>{e||r(t)}).catch(t=>{e||o(t instanceof Error?t.message:String(t))}),()=>{e=!0}},[]);let l=t=>e(`/studio/${encodeURIComponent(t)}/data`),u=n?.filter(e=>e.writable)??[],d=n?.filter(e=>!e.writable)??[],[f,p]=$.useState(null),[m,h]=$.useState(``),[g,_]=$.useState(``),[v,y]=$.useState(!1),[b,x]=$.useState(null),S=e=>{p(e.id),h(Zo(`engine.studio.landing.dupDefaultName`,t,{name:e.name})),_(`${e.id}-copy`),x(null)},C=async()=>{if(!f)return;let e=g.trim(),n=m.trim();if(!(!co.test(e)||!n)){y(!0),x(null);try{await ro(f,e,n),X.success(Zo(`engine.studio.landing.dupCreated`,t,{name:n})),l(e)}catch(e){x(e instanceof Error?e.message:String(e))}finally{y(!1)}}};return(0,Q.jsxs)(`div`,{className:`mx-auto w-full max-w-5xl p-6`,children:[(0,Q.jsxs)(`div`,{className:`mb-1 flex items-center gap-2`,children:[(0,Q.jsx)(`span`,{className:`flex h-9 w-9 shrink-0 items-center justify-center rounded-lg bg-primary/10 text-primary`,children:(0,Q.jsx)(Gt,{className:`h-4.5 w-4.5`})}),(0,Q.jsx)(`h1`,{className:`text-lg font-semibold`,children:Z(`engine.studio.landing.title`,t)})]}),(0,Q.jsx)(`p`,{className:`mb-5 max-w-2xl text-xs leading-5 text-muted-foreground`,children:Z(`engine.studio.landing.description`,t)}),i&&(0,Q.jsx)(`div`,{className:`mb-3 rounded-md border border-destructive/40 bg-destructive/10 px-3 py-1.5 text-[11px] text-destructive`,children:i}),(0,Q.jsx)(`h2`,{className:`mb-2 text-[11px] font-medium uppercase tracking-wide text-muted-foreground`,children:Z(`engine.studio.landing.mineHeading`,t)}),(0,Q.jsxs)(`div`,{className:`mb-6 grid grid-cols-1 gap-2.5 sm:grid-cols-2 lg:grid-cols-3`,children:[n===null&&(0,Q.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:Z(`engine.studio.loading`,t)}),n!==null&&u.length===0&&(0,Q.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:Z(`engine.studio.landing.noneWritable`,t)}),u.map(e=>(0,Q.jsxs)(`div`,{className:`rounded-lg border bg-background`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2.5 px-3 py-2.5`,children:[(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>l(e.id),className:`flex min-w-0 flex-1 items-center gap-2.5 text-left`,children:[(0,Q.jsx)(`span`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-primary/10 text-primary`,children:(0,Q.jsx)(mt,{className:`h-4 w-4`})}),(0,Q.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,Q.jsx)(`span`,{className:`block truncate text-[13px] font-medium`,children:e.name}),(0,Q.jsx)(`span`,{className:`block truncate font-mono text-[10px] text-muted-foreground`,children:e.id})]})]}),(0,Q.jsx)(`span`,{className:`rounded bg-emerald-400/15 px-1.5 py-0.5 text-[10px] text-emerald-600 dark:text-emerald-300`,children:Z(`engine.studio.pkg.writable`,t)}),(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>f===e.id?p(null):S(e),title:Z(`engine.studio.landing.dupTitle`,t),className:`inline-flex items-center gap-1 rounded-md border px-2 py-1 text-[10px] text-muted-foreground hover:bg-muted hover:text-foreground`,children:[(0,Q.jsx)(wt,{className:`h-3 w-3`}),` `,Z(`engine.studio.landing.dup`,t)]})]}),f===e.id&&(0,Q.jsxs)(`div`,{className:`flex flex-col gap-1.5 border-t px-3 py-2.5`,children:[(0,Q.jsx)(`input`,{autoFocus:!0,value:m,onChange:e=>h(e.target.value),onKeyDown:e=>{e.key===`Enter`&&C(),e.key===`Escape`&&p(null)},placeholder:Z(`engine.studio.landing.dupNamePlaceholder`,t),className:`h-7 w-full rounded-md border bg-background px-2 text-[11px] outline-none focus:ring-1 focus:ring-primary`}),(0,Q.jsx)(L_,{value:g,onChange:_,onEnter:()=>void C(),onEscape:()=>p(null),placeholder:Z(`engine.studio.landing.dupIdPlaceholder`,t),locale:t,testId:`pkg-dup-id-input`}),b&&(0,Q.jsx)(`p`,{className:`text-[10px] text-destructive`,children:b}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>void C(),disabled:v||!m.trim()||!co.test(g.trim()),className:`inline-flex flex-1 items-center justify-center gap-1 rounded-md bg-primary px-2 py-1 text-[11px] font-medium text-primary-foreground disabled:opacity-50`,children:[v?(0,Q.jsx)(J,{className:`h-3 w-3 animate-spin`}):(0,Q.jsx)(wt,{className:`h-3 w-3`}),Z(`engine.studio.landing.dupGo`,t)]}),(0,Q.jsx)(`button`,{type:`button`,onClick:()=>p(null),className:`rounded-md border px-2 py-1 text-[11px] text-muted-foreground hover:bg-muted`,children:Z(`engine.studio.cancel`,t)})]})]})]},e.id)),(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>c(!0),className:`flex items-center justify-center gap-1.5 rounded-lg border border-dashed px-3 py-2.5 text-xs text-muted-foreground hover:border-primary/50 hover:text-foreground`,children:[(0,Q.jsx)(Ue,{className:`h-4 w-4`}),` `,Z(`engine.studio.pkg.new`,t)]})]}),(0,Q.jsx)(fo,{mode:`create`,open:s,onOpenChange:c,onSaved:e=>l(e.id)}),d.length>0&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`h2`,{className:`mb-2 text-[11px] font-medium uppercase tracking-wide text-muted-foreground`,children:Z(`engine.studio.landing.installedHeading`,t)}),(0,Q.jsx)(`div`,{className:`grid grid-cols-1 gap-2.5 sm:grid-cols-2 lg:grid-cols-3`,children:d.map(e=>(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>l(e.id),className:`flex items-center gap-2.5 rounded-lg border bg-muted/20 px-3 py-2.5 text-left hover:bg-muted/40`,children:[(0,Q.jsx)(`span`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-muted text-muted-foreground`,children:(0,Q.jsx)(mt,{className:`h-4 w-4`})}),(0,Q.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,Q.jsx)(`span`,{className:`block truncate text-[13px]`,children:e.name}),(0,Q.jsx)(`span`,{className:`block truncate font-mono text-[10px] text-muted-foreground`,children:e.id})]}),(0,Q.jsxs)(`span`,{className:`inline-flex items-center gap-0.5 rounded bg-amber-400/15 px-1.5 py-0.5 text-[10px] text-amber-600 dark:text-amber-300`,children:[(0,Q.jsx)(Wn,{className:`h-2.5 w-2.5`}),` `,Z(`engine.studio.pkg.readonly`,t)]})]},e.id))})]})]})}var z_=t({BuilderLanding:()=>R_,SETUP_APP_NAME:()=>fc,SETUP_APP_PACKAGE_ID:()=>dc});export{lc as C,mc as D,dc as E,uc as O,tc as S,fc as T,qu as _,zh as a,ic as b,Th as c,mh as d,Ym as f,hd as g,tp as h,Bh as i,qs as k,wh as l,op as m,R_ as n,Rh as o,Bm as p,E_ as r,Ih as s,z_ as t,hh as u,iu as v,cc as w,rc as x,nu as y};
|