@objectstack/console 17.1.0 → 17.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +731 -0
- package/README.md +26 -10
- package/dist/.objectstack-injection.json +2 -2
- package/dist/.objectui-sha +1 -1
- package/dist/assets/ActionResultDialog-CQwenjVA.js +9 -0
- package/dist/assets/AiPendingActionsPage-7gZ8zlOy.js +1 -0
- package/dist/assets/ApiConsolePage-DUF0ysH7.js +1 -0
- package/dist/assets/{AppDocsIndex-DVrJTsbv.js → AppDocsIndex-CP_AVG4X.js} +1 -1
- package/dist/assets/AppManagementPage-BJktnoa5.js +1 -0
- package/dist/assets/ApprovalsInboxPage-DlnxY-uy.js +1 -0
- package/dist/assets/{AuditLogPage-B-2e1YhN.js → AuditLogPage-DIJPRjji.js} +1 -1
- package/dist/assets/{ComponentNavView-BVbkfJfE.js → ComponentNavView-C84QByT7.js} +1 -1
- package/dist/assets/CreateViewDialog-Zbd9Cagm.js +1 -0
- package/dist/assets/DashboardView-UyKHklBx.js +1 -0
- package/dist/assets/{DeveloperHubPage-CWq2uYpr.js → DeveloperHubPage-BRyNdrCJ.js} +1 -1
- package/dist/assets/DocPage-Bx8ZXCYt.js +1 -0
- package/dist/assets/{DocShell-UFsFTSr-.js → DocShell-Ipy_IDvh.js} +1 -1
- package/dist/assets/DocsIndex-CmY-7OQR.js +1 -0
- package/dist/assets/DocsLayout-BNsSvaz2.js +1 -0
- package/dist/assets/DocsSlug-Cb_NMM1k.js +1 -0
- package/dist/assets/ExpressionProvider-DqGWVuxV.js +1 -0
- package/dist/assets/FlowRunsPage-B6ustUgi.js +1 -0
- package/dist/assets/{IntegrationsPage-DdKbqwGE.js → IntegrationsPage-chOxmiyU.js} +2 -2
- package/dist/assets/InterfaceListPage-DVETnQm5.js +1 -0
- package/dist/assets/MarketplaceInstalledPage-DA5pjhAz.js +1 -0
- package/dist/assets/MarketplacePackagePage-dCIVHBFi.js +4 -0
- package/dist/assets/MarketplacePage-wJb6g1p7.js +1 -0
- package/dist/assets/MetadataInspector-Cu-n1FYz.js +1 -0
- package/dist/assets/ObjectDataPage-CP-YSZYQ.js +1 -0
- package/dist/assets/PageView-B1_ibRuM.js +1 -0
- package/dist/assets/ProfilePage-DEr5iZVB.js +1 -0
- package/dist/assets/PublicFormsPage-CBcKQbNl.js +1 -0
- package/dist/assets/RecordDetailView-A8bbPnkK.js +3 -0
- package/dist/assets/RecordFormPage-CGQlYWDk.js +1 -0
- package/dist/assets/ReportDefaultInspector-R_p6YStL.js +1 -0
- package/dist/assets/ReportView-BTMrtcGH.js +2 -0
- package/dist/assets/RuntimeDraftBar-agGU39FL.js +1 -0
- package/dist/assets/SchemaForm-DJbupOno.js +3 -0
- package/dist/assets/SearchResultsPage-CHhZUc6L.js +1 -0
- package/dist/assets/SettingsHub-BGLR_gS7.js +1 -0
- package/dist/assets/SettingsView-Bq-7Zkzs.js +1 -0
- package/dist/assets/SkeletonDetail-B4-UKxai.js +1 -0
- package/dist/assets/SystemHubPage-CVZVag1e.js +1 -0
- package/dist/assets/{abnfDiagram-N423BO3Z-DfpQlDUF.js → abnfDiagram-VCTEODGH-DUS5D5dU.js} +1 -1
- package/dist/assets/app-shell-eager-leaves-BB0oaPx6.js +1 -0
- package/dist/assets/{utils-CJ4UwXMF.js → appRoute-DEVGXLLH.js} +1 -1
- package/dist/assets/architecture-7GRP2DOG-kzM7RUjO.js +1 -0
- package/dist/assets/{architectureDiagram-T3A2C74G-Ej_4n3NG.js → architectureDiagram-5GKGNRK7-mGW8P1lC.js} +1 -1
- package/dist/assets/blockDiagram-OSKFZWR5-Bz2hnVmp.js +129 -0
- package/dist/assets/c4Diagram-7LVT6UL2-DU3u1Y6c.js +38 -0
- package/dist/assets/channel-FD4s9EIH.js +1 -0
- package/dist/assets/{chunk-U6XO7XAA-D-dXvZaW.js → chunk-2ZTRR5NV-DXmA5XXf.js} +1 -1
- package/dist/assets/chunk-3NF5O7KM-B8Q7HUio.js +168 -0
- package/dist/assets/{chunk-YOTPTUD7-CDtXQZ13.js → chunk-3Z5EZCMW-D3OlaP15.js} +1 -1
- package/dist/assets/chunk-4HAMMTFA-BPKwX4iB.js +62 -0
- package/dist/assets/{chunk-BIQX33UG-DMScvo0C.js → chunk-5V3GS4D5-sE73jHoi.js} +1 -1
- package/dist/assets/{chunk-MOZMSUNE-DG70Besp.js → chunk-6AZGARVD-dsTIs5yl.js} +1 -1
- package/dist/assets/{chunk-5JV3BV7I-BrKM6vC-.js → chunk-6EIED4P4-BB4xaK3K.js} +1 -1
- package/dist/assets/{chunk-R7FJI6CG-DsJHM8am.js → chunk-6K3QC6MW-DaG1LefG.js} +1 -1
- package/dist/assets/{chunk-OSBZ3O6U-Dch_xyhf.js → chunk-6TQVIW2G-DL8WEcT0.js} +1 -1
- package/dist/assets/{chunk-JG7HCLWE-lCTbN-f1.js → chunk-747NJXEK-Bdie6H1T.js} +1 -1
- package/dist/assets/chunk-75Z2AOVW-CkSdnmiC.js +2 -0
- package/dist/assets/chunk-CLGD4ZFX-BTkDISwp.js +1 -0
- package/dist/assets/chunk-DU6HZSFF-BkY4hAzc.js +127 -0
- package/dist/assets/{chunk-2GRJ4B5K-D1if-ThW.js → chunk-F27PBJKO-DUKg0YWV.js} +1 -1
- package/dist/assets/{chunk-KEIR6QF5-ydf36Hye.js → chunk-FOHPRMQF-C65HoZVt.js} +2 -2
- package/dist/assets/chunk-GMAD6QVW-DZo_NykZ.js +72 -0
- package/dist/assets/chunk-GVQU2GXP-9ELY9S6X.js +1 -0
- package/dist/assets/chunk-H2I77ZZE-vCr_buP7.js +1 -0
- package/dist/assets/{chunk-GF5L2VYU-Dgjjn2FR.js → chunk-HLEWEB6X-iPkY2ESt.js} +1 -1
- package/dist/assets/{chunk-QBLGF6JB-CzQYydMJ.js → chunk-I5DQTOEV-Cz6Y6T9y.js} +1 -1
- package/dist/assets/{chunk-5FCAYU7R-BuOxxvKk.js → chunk-ICYGCRZG-DdtFYQ2l.js} +1 -1
- package/dist/assets/{chunk-CQNSW5MT-CCth14ZS.js → chunk-IH6LHLGP-DybuHD8B.js} +1 -1
- package/dist/assets/{chunk-CYSBUYHQ-DIigEFGo.js → chunk-KI3K4JFJ-CB_CI00L.js} +1 -1
- package/dist/assets/chunk-L3NEJ4N5-Bzz35TZJ.js +1 -0
- package/dist/assets/chunk-LNGE3PJU-DWpGwHrW.js +34 -0
- package/dist/assets/chunk-LQGUR6SS-iVI0GACK.js +1 -0
- package/dist/assets/chunk-OSK3NFVY-DcRwXCQD.js +10 -0
- package/dist/assets/{chunk-5TONJI2A-Bdh0MHqz.js → chunk-OUJLGHUK-TbeyE6CA.js} +1 -1
- package/dist/assets/chunk-P2QGCYS3-nx2-dM5t.js +1 -0
- package/dist/assets/{chunk-KBJHAD2P-DI4-lUt-.js → chunk-POPQ4Y6H-BxLOacOG.js} +1 -1
- package/dist/assets/{chunk-4I5QYGJK-DlrWrdEa.js → chunk-PWAF6VOD-2mst9kZu.js} +1 -1
- package/dist/assets/{chunk-6Q2QTUOP-C2vvuHlO.js → chunk-SVP7TREG-C3BMpr4x.js} +1 -1
- package/dist/assets/{chunk-EMLP6XTP-B4CrDa5p.js → chunk-UY3FDG6J-CDAtW6MI.js} +1 -1
- package/dist/assets/{chunk-5HE753X5-T_shrJhj.js → chunk-XHIXRSVI-CqmtoxrP.js} +1 -1
- package/dist/assets/chunk-XXDRQBXY-iNC8aYmk.js +1 -0
- package/dist/assets/{chunk-5RXB4S5H-JwFhdddt.js → chunk-ZLD2IHE6-ZFqtFJbj.js} +2 -2
- package/dist/assets/classDiagram-CYGNFDIV-D5Pd2TCl.js +1 -0
- package/dist/assets/classDiagram-v2-TLXNO2FR-D5Pd2TCl.js +1 -0
- package/dist/assets/{cose-bilkent-JH36ORCC-XP-DnSP5.js → cose-bilkent-JH36ORCC-CPQv9aQH.js} +1 -1
- package/dist/assets/createDerive-Best2JCj.js +2 -0
- package/dist/assets/cynefin-OW5HDTMX-Dtvf1C60.js +1 -0
- package/dist/assets/{cynefinDiagram-MW4NZA55-B8MvpqXe.js → cynefinDiagram-5FMLGOSQ-Lnly8IJd.js} +1 -1
- package/dist/assets/cytoscape.esm-CGd-uY3x.js +321 -0
- package/dist/assets/dagre-OS7QT2EB-CdXLxmTK.js +4 -0
- package/dist/assets/dagre-PrKaheQc.js +1 -0
- package/dist/assets/data-adapter-DL25qpAe.js +5 -0
- package/dist/assets/default-inspector-registry-DeEG98bO.js +1 -0
- package/dist/assets/{diagram-7IWD3JNH-Xj62y5BF.js → diagram-S7CK7UJ4-DE8I3gxQ.js} +4 -4
- package/dist/assets/{diagram-UB23O5K3-bseKIzhv.js → diagram-UQ7AKVKN-D2xQpbEq.js} +1 -1
- package/dist/assets/{diagram-B4RE2ZJO-mI-iOCGl.js → diagram-VSXAHHWV-DnttDSlO.js} +1 -1
- package/dist/assets/{diagram-Q27KOJAE-B98Knrnh.js → diagram-VX7I27RA-BSEwkn7K.js} +1 -1
- package/dist/assets/{diagram-LBJQPF4R-BMTSoZch.js → diagram-Z3DM3KII-BgB9f0Nv.js} +1 -1
- package/dist/assets/dist-BpPy7hlB.js +5 -0
- package/dist/assets/{ebnfDiagram-BXEA7PRR-Bgo10FP1.js → ebnfDiagram-PWID7BFC-32WvKbS2.js} +1 -1
- package/dist/assets/erDiagram-2YWLMYGG-Dwf8uAdl.js +99 -0
- package/dist/assets/eventmodeling-NTZA5JFV-CSwP2CpK.js +1 -0
- package/dist/assets/expressionUser-CASszt1z.js +1 -0
- package/dist/assets/flowDiagram-T62WH6J4-CqVSNJ8T.js +1 -0
- package/dist/assets/framework-BfSv4Kb0.js +36 -0
- package/dist/assets/{ganttDiagram-PKOTCBZU-CrmKcYGt.js → ganttDiagram-EL5Y4UJY-DqYIE0Cu.js} +2 -2
- package/dist/assets/getIcon-CgyYxSEC.js +1 -0
- package/dist/assets/gitGraph-4MIJSDKK--Dc33TN5.js +1 -0
- package/dist/assets/{gitGraphDiagram-DS77QQ5N-COu0mOui.js → gitGraphDiagram-WWUBYQGX-D1dYmoGu.js} +1 -1
- package/dist/assets/{highlighted-body-OFNGDK62-DUQut-ZU.js → highlighted-body-OFNGDK62-BxO9mjPI.js} +1 -1
- package/dist/assets/i18n-Cfqor-xb.js +9 -0
- package/dist/assets/i18n-locales-Bz4c8KXc.js +31 -0
- package/dist/assets/index-BU-FzlQ6.js +20 -0
- package/dist/assets/index-_VyGO4ms.css +2 -0
- package/dist/assets/info-A6RAGUB7-DBa3mCQO.js +1 -0
- package/dist/assets/{infoDiagram-6WML65LV-BT0Q6MIs.js → infoDiagram-FKFFQAWI-Cr1-5_Am.js} +1 -1
- package/dist/assets/infrastructure-CIpDEFyQ.js +3 -0
- package/dist/assets/{ishikawaDiagram-WSZJBQD7-kvPjMvBP.js → ishikawaDiagram-5VMMS53U-Bsjx7BsE.js} +1 -1
- package/dist/assets/{journeyDiagram-NVQOT4AX-DhXy7wxt.js → journeyDiagram-EYS64GPL-1scn5Z5c.js} +2 -2
- package/dist/assets/{kanban-definition-27J2QSJJ-CFDavpZY.js → kanban-definition-UXKFOSKX-DjLQAv5U.js} +2 -2
- package/dist/assets/mermaid-GHXKKRXX-NzEcDxBh.js +1 -0
- package/dist/assets/{mermaid-parser.core-Dd2B8Ckv.js → mermaid-parser.core-DUt1FNlO.js} +1 -1
- package/dist/assets/mermaid.core-pW40dd4u.js +10 -0
- package/dist/assets/metadata-admin-pawEBYI9.js +9 -0
- package/dist/assets/{mindmap-definition-FAOFIHXS-ITGoV4nW.js → mindmap-definition-THT77NOG-CUcYMB9H.js} +1 -1
- package/dist/assets/nav-selection-Dzm_mA3C.js +1 -0
- package/dist/assets/packet-AYTQ26CC-CPP93DZD.js +1 -0
- package/dist/assets/{pegDiagram-VL7TDLO6-BoRu9yvl.js → pegDiagram-XKGWAZYB-CT1r3sRa.js} +1 -1
- package/dist/assets/pie-WAS4IAKB-B-zzBvuc.js +1 -0
- package/dist/assets/{pieDiagram-7S7Q4E2Y-DVsM9krU.js → pieDiagram-E7YTZNPT-CSi-V1LQ.js} +3 -3
- package/dist/assets/plugin-calendar-BwiiCIjv.js +1 -0
- package/dist/assets/plugin-charts-CDGkx7z5.js +7 -0
- package/dist/assets/plugin-chatbot-BGnkLzFS.js +122 -0
- package/dist/assets/plugin-dashboard-Bj4ldCX6.js +6 -0
- package/dist/assets/plugin-form-_fjHxKTV.js +1 -0
- package/dist/assets/plugin-gantt-zR8DkpEg.js +63 -0
- package/dist/assets/plugin-grid-kkbz4uec.js +9 -0
- package/dist/assets/plugin-kanban-DA0eW6yj.js +1 -0
- package/dist/assets/plugin-map-DukneTNg.js +1 -0
- package/dist/assets/{plugin-markdown-7fyNN0UM.js → plugin-markdown-B7zwZHmn.js} +1 -1
- package/dist/assets/plugin-report-DaPtlsJr.js +59 -0
- package/dist/assets/plugin-timeline-B6rsNNAK.js +1 -0
- package/dist/assets/plugin-tree-DauauLFc.js +1 -0
- package/dist/assets/plugin-view-5qxxRyZZ.js +1 -0
- package/dist/assets/plugins-views-iYcMmImr.js +4 -0
- package/dist/assets/{quadrantDiagram-CIZ2JOQS-C4VzXHnp.js → quadrantDiagram-AXDQQJYC-DUJ_94hm.js} +1 -1
- package/dist/assets/radar-RG4KPBEZ-DWmbpYEk.js +1 -0
- package/dist/assets/railroad-74A4TZTK-xJ7dMu2F.js +1 -0
- package/dist/assets/railroad-abnf-HS5TGJTU-Cw4KG_nE.js +1 -0
- package/dist/assets/railroad-ebnf-LZEXJU2U-C0cgrfTl.js +1 -0
- package/dist/assets/railroad-peg-WCYAUIDC-DOEGG9oQ.js +1 -0
- package/dist/assets/{railroadDiagram-AXF67PYL-DqZ3yKWv.js → railroadDiagram-O6MQD6OU-CEyfAhzM.js} +1 -1
- package/dist/assets/{requirementDiagram-LRYGKXZP-BeH0P3vD.js → requirementDiagram-IS5BZ75X-CAK7hvBg.js} +2 -2
- package/dist/assets/{runtime-metadata-persistence-DpS5GXuQ.js → runtime-metadata-persistence-DYPxFzHI.js} +1 -1
- package/dist/assets/{sankeyDiagram-W5VNT64P-Bu_tPh-A.js → sankeyDiagram-P5KCCOFB-DgYJh7uz.js} +2 -2
- package/dist/assets/{sequenceDiagram-SI44F4Z6-BWEuLn1a.js → sequenceDiagram-WJ2MYXX4-DsQerPtC.js} +1 -1
- package/dist/assets/{src-CY2xhbXR.js → src-CVJP2nIc.js} +1 -1
- package/dist/assets/src-JX1BkhmR.js +17 -0
- package/dist/assets/{src-ClOOPIkS.js → src-S6pzKItc.js} +1 -1
- package/dist/assets/src-_DxAIBqo.js +1 -0
- package/dist/assets/{stateDiagram-OKZ733FA-Cp7aDYsZ.js → stateDiagram-XQSTLZYL-BJndPKik.js} +1 -1
- package/dist/assets/stateDiagram-v2-IH3M54BS-Bi94bTLl.js +1 -0
- package/dist/assets/studioEntry-C6G8U-LG.js +1 -0
- package/dist/assets/submitRedirect-UXd9NsjL.js +1 -0
- package/dist/assets/swimlanes-V6O3JKXN-BiKyiEJr.js +1 -0
- package/dist/assets/swimlanesDiagram-JKAHXJPX-DKIR852g.js +8 -0
- package/dist/assets/{timeline-definition-Z64GVDOM-BcUiJfLU.js → timeline-definition-24CTP7MA-CW5rY3PX.js} +2 -2
- package/dist/assets/treeView-Q6P3EWNA-BcWCBGcU.js +1 -0
- package/dist/assets/treemap-WGGIJYW6-DMTEJzXV.js +1 -0
- package/dist/assets/ui-components-D2lrjG-t.js +43 -0
- package/dist/assets/ui-layout-UUTFXV6S.js +1 -0
- package/dist/assets/use-book-data-qUZAxIs0.js +1 -0
- package/dist/assets/useActionModal-CkM-zGdy.js +1 -0
- package/dist/assets/usePackageL10n-F9isJ9pn.js +1 -0
- package/dist/assets/useSettingsLabel-CSZBfUiw.js +1 -0
- package/dist/assets/utils-MjUhYVsx.js +1 -0
- package/dist/assets/{vendor-charts-BEGSmcjR.js → vendor-charts-CY9WhhzX.js} +1 -1
- package/dist/assets/vendor-i18n-C1AQDWux.js +1 -0
- package/dist/assets/{vendor-markdown-C_Ip9E_I.js → vendor-markdown-BW_XFZ_b.js} +25 -25
- package/dist/assets/vendor-objectstack-BeKUVjuj.js +270 -0
- package/dist/assets/{vennDiagram-T6HMQDX7-BKJsL5fS.js → vennDiagram-4TSXK5OY-C79cMc25.js} +1 -1
- package/dist/assets/wardley-WFR3VGLG-BRyRizpT.js +1 -0
- package/dist/assets/{wardleyDiagram-T6FBY63Y-CZ0aMbYX.js → wardleyDiagram-VM6X3IG4-BAO0_jUk.js} +1 -1
- package/dist/assets/{xychartDiagram-ELKLHX3M-BpK2RmQ_.js → xychartDiagram-S5SC5T6Z-BIRd7YRo.js} +3 -3
- package/dist/eager-closure.json +318 -0
- package/dist/index.html +271 -15
- package/package.json +2 -2
- package/dist/assets/AdapterProvider-3zTVoQKF.js +0 -3
- package/dist/assets/AiPendingActionsPage-DD5DLXIK.js +0 -1
- package/dist/assets/ApiConsolePage-CSQNdOPN.js +0 -1
- package/dist/assets/AppManagementPage-vRCBT69X.js +0 -1
- package/dist/assets/ApprovalsInboxPage-Bft5QF0I.js +0 -1
- package/dist/assets/CreateViewDialog-CW0w7Nxc.js +0 -1
- package/dist/assets/DashboardView-CTBV4_tx.js +0 -1
- package/dist/assets/ExpressionProvider-X1OAB_O-.js +0 -1
- package/dist/assets/FlowRunsPage-CUhBLwm-.js +0 -1
- package/dist/assets/InterfaceListPage-FCdy-_Q-.js +0 -1
- package/dist/assets/ManagedByBadge-Bap9_dqR.js +0 -1
- package/dist/assets/MarketplaceAccessDenied-CrK7hygV.js +0 -1
- package/dist/assets/MarketplaceInstalledPage-Cv-qDRNA.js +0 -1
- package/dist/assets/MarketplacePackagePage-CMS--SE2.js +0 -4
- package/dist/assets/MarketplacePage-njErv-tN.js +0 -1
- package/dist/assets/MetadataInspector-CNeJqkLQ.js +0 -1
- package/dist/assets/MetadataProvider-DwMR1SMR.js +0 -1
- package/dist/assets/ObjectDataPage-BVV4yksz.js +0 -1
- package/dist/assets/PageView-XUBdr6tb.js +0 -1
- package/dist/assets/ProfilePage-ClU0WVRr.js +0 -1
- package/dist/assets/PublicFormsPage-a_MNzdQw.js +0 -1
- package/dist/assets/RecordDetailView-uf81gH3J.js +0 -11
- package/dist/assets/RecordFormPage-CLZcT8Z0.js +0 -1
- package/dist/assets/ReportDefaultInspector-DU2azDYd.js +0 -3
- package/dist/assets/ReportView-oFhBKNBE.js +0 -2
- package/dist/assets/SearchResultsPage-lgNcs7l7.js +0 -1
- package/dist/assets/SettingsHub-TQOc7wH3.js +0 -1
- package/dist/assets/SettingsView-DAje5pDB.js +0 -1
- package/dist/assets/SystemHubPage-DUE-2-vc.js +0 -1
- package/dist/assets/architecture-TIHT7OUA-B8Ln-u1a.js +0 -1
- package/dist/assets/blockDiagram-VBNYF7ZC-l_P_W7_Y.js +0 -132
- package/dist/assets/c4Diagram-5PPSVZJV-CE82HAlO.js +0 -10
- package/dist/assets/channel-DowAYf9b.js +0 -1
- package/dist/assets/chunk-3NCLNEKW-Z5ckM4mG.js +0 -1
- package/dist/assets/chunk-7BUUIJ7U-Bb538aSH.js +0 -1
- package/dist/assets/chunk-7Z6QIM7H-m6s_oalL.js +0 -10
- package/dist/assets/chunk-I66GZJ75-BsY3mBMx.js +0 -127
- package/dist/assets/chunk-J7OUQ5F2-Cl4FNR_k.js +0 -1
- package/dist/assets/chunk-JQJVKLGR-BApWxqMA.js +0 -156
- package/dist/assets/chunk-NSK5VX7P-BBTxIP6Z.js +0 -2
- package/dist/assets/chunk-QR6OTTB3-DJcD7xr-.js +0 -62
- package/dist/assets/chunk-RYQCIY6F-CnMsR_qh.js +0 -1
- package/dist/assets/chunk-UBXNYLIW-B7z1tp3V.js +0 -1
- package/dist/assets/chunk-W5SLKNZC-BnMc5i0B.js +0 -1
- package/dist/assets/chunk-WRU74C26-MrzCPX2E.js +0 -70
- package/dist/assets/chunk-XXDRQBXY-NKBlW2Dm.js +0 -1
- package/dist/assets/chunk-ZIRB5QZD-O39ZBUk3.js +0 -32
- package/dist/assets/classDiagram-JCYQIIEL-C4ADaKBz.js +0 -1
- package/dist/assets/classDiagram-v2-OCEON4UE-C4ADaKBz.js +0 -1
- package/dist/assets/createDerive-xZXxMz1g.js +0 -1
- package/dist/assets/cynefin-VYW2F7L2-exAq6djZ.js +0 -1
- package/dist/assets/cytoscape.esm-B-NFISlW.js +0 -321
- package/dist/assets/dagre-Buvkdvvj.js +0 -1
- package/dist/assets/dagre-VZM6K2ZE-B5E8-xuM.js +0 -4
- package/dist/assets/dist-jor1XT9f.js +0 -5
- package/dist/assets/erDiagram-JOGREHBK-BU4b8mUv.js +0 -85
- package/dist/assets/eventmodeling-45OFAUF4-DVTVIsGT.js +0 -1
- package/dist/assets/flowDiagram-UKHOOZJN-BDHHPApJ.js +0 -1
- package/dist/assets/framework-LCCQTTcs.js +0 -47
- package/dist/assets/getIcon-Bnm_i39L.js +0 -1
- package/dist/assets/gitGraph-TEB2WS4Q-DizXBl0d.js +0 -1
- package/dist/assets/i18n-DGSduXFT.js +0 -9
- package/dist/assets/index-ZtYnn1PE.css +0 -2
- package/dist/assets/index-mpVXni3j.js +0 -2
- package/dist/assets/info-DKCQHKI2-CfAGND28.js +0 -1
- package/dist/assets/infrastructure-CerjT_c2.js +0 -3
- package/dist/assets/map-BaFkSB1l.js +0 -1
- package/dist/assets/mermaid-GHXKKRXX-DQTMu5TJ.js +0 -1
- package/dist/assets/mermaid.core-BwiBFu_S.js +0 -10
- package/dist/assets/metadata-admin-C_DEFfDE.js +0 -25
- package/dist/assets/packet-7NZHBO7P-DeymwuCa.js +0 -1
- package/dist/assets/pie-RZYD4A2V-C2S5u8nr.js +0 -1
- package/dist/assets/plugin-calendar-ClpbcK3u.js +0 -1
- package/dist/assets/plugin-charts-Cq0LpABN.js +0 -7
- package/dist/assets/plugin-chatbot-Cq7rZtnW.js +0 -120
- package/dist/assets/plugin-dashboard-C8Ohdrxi.js +0 -6
- package/dist/assets/plugin-form-B7CBtYvZ.js +0 -1
- package/dist/assets/plugin-gantt-ChkG9_UG.js +0 -64
- package/dist/assets/plugin-grid-D49BBhCX.js +0 -8
- package/dist/assets/plugin-kanban-BsTsRjoP.js +0 -1
- package/dist/assets/plugin-map-CQAe4Yh6.js +0 -1
- package/dist/assets/plugin-report-01bEGHuR.js +0 -59
- package/dist/assets/plugin-timeline-Dw4Lj2Rz.js +0 -1
- package/dist/assets/plugin-tree-DW0XC55y.js +0 -1
- package/dist/assets/plugin-view-B9yCVdSX.js +0 -1
- package/dist/assets/plugins-views-BaBStVok.js +0 -4
- package/dist/assets/radar-I7S5WNFK-DzcfTC8k.js +0 -1
- package/dist/assets/railroad-3IZDKUUU-DT2-gzup.js +0 -1
- package/dist/assets/railroad-abnf-AHOZXSZD-BvCkhVdg.js +0 -1
- package/dist/assets/railroad-ebnf-EBAXGLYW-rvjxEE4k.js +0 -1
- package/dist/assets/railroad-peg-LSFZ7HO6-BIzZt1tD.js +0 -1
- package/dist/assets/skeletons-DVwGbFUS.js +0 -1
- package/dist/assets/src-BA9h8a8o.js +0 -1
- package/dist/assets/src-Ctj_ivDh.js +0 -19
- package/dist/assets/stateDiagram-v2-UEYNNEHI-DaTg8C5m.js +0 -1
- package/dist/assets/swimlanes-SLNWSIFB-wrx1JN6o.js +0 -1
- package/dist/assets/swimlanesDiagram-ULZ7WXOC-Bqz9GVuM.js +0 -8
- package/dist/assets/treeView-QDETBFTQ-DKZwqlNb.js +0 -1
- package/dist/assets/treemap-6X3UGDF4-Bqsldamv.js +0 -1
- package/dist/assets/ui-components-3mb69z8L.js +0 -42
- package/dist/assets/ui-layout-DpuFph25.js +0 -1
- package/dist/assets/use-book-data-BZg_051K.js +0 -1
- package/dist/assets/useActionModal-Z2yDiihK.js +0 -1
- package/dist/assets/usePackageL10n-Cy-u65Zo.js +0 -1
- package/dist/assets/useSettingsLabel-CvZKl8CQ.js +0 -1
- package/dist/assets/vendor-i18n-Cpia2wlg.js +0 -1
- package/dist/assets/vendor-objectstack-DGpW4oR-.js +0 -158
- package/dist/assets/wardley-OPB4EBWU-C_U_bbc2.js +0 -1
- /package/dist/assets/{sizeCapture-X5ZJPWSS-B0uUizjq.js → sizeCapture-INFHLROL-B0uUizjq.js} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{b as t,r as n}from"./vendor-react-CsWFRkED.js";import{R as r,it as i}from"./framework-LCCQTTcs.js";import{Aa as a,Dr as o,Er as s,Ir as c,Ks as l,Ma as u,Or as d,Rs as f,Ti as p,Zo as m,ai as h,ca as g,gc as _,vc as v,xa as y,xo as b,yc as ee}from"./ui-components-3mb69z8L.js";import"./src-Ctj_ivDh.js";var x=e(t(),1),S=[`plugin`,`plugins`,`kind`,`package`];function C(e){return[{method:`POST`,path:`${e}/sign-in/email`,desc:`Sign in (email)`,group:`Auth`,bodyTemplate:{email:`user@example.com`,password:``}},{method:`POST`,path:`${e}/sign-up/email`,desc:`Sign up (email)`,group:`Auth`,bodyTemplate:{email:``,password:``,name:``}},{method:`POST`,path:`${e}/sign-out`,desc:`Sign out`,group:`Auth`},{method:`GET`,path:`${e}/get-session`,desc:`Get session`,group:`Auth`}]}var w={ai:{group:`AI`,defaultRoute:`/api/v1/ai`,endpoints:[{method:`POST`,path:`/chat`,desc:`Chat completion (JSON)`,bodyTemplate:{messages:[{role:`user`,content:``}],stream:!1}},{method:`POST`,path:`/chat/stream`,desc:`Streaming chat (SSE)`,bodyTemplate:{messages:[{role:`user`,content:``}]}},{method:`POST`,path:`/complete`,desc:`Text completion`,bodyTemplate:{prompt:``}},{method:`GET`,path:`/models`,desc:`List available models`},{method:`GET`,path:`/status`,desc:`Active LLM adapter provenance`},{method:`GET`,path:`/effective-model`,desc:`Effective model ids and where they came from`},{method:`POST`,path:`/conversations`,desc:`Create conversation`,bodyTemplate:{}},{method:`GET`,path:`/conversations`,desc:`List conversations`},{method:`GET`,path:`/conversations/:id`,desc:`Get conversation with message history`},{method:`PATCH`,path:`/conversations/:id`,desc:`Update conversation (title, metadata)`,bodyTemplate:{title:``}},{method:`DELETE`,path:`/conversations/:id`,desc:`Delete conversation`},{method:`POST`,path:`/conversations/:id/messages`,desc:`Add message to conversation`,bodyTemplate:{role:`user`,content:``}},{method:`GET`,path:`/conversations/:id/debug`,desc:`Reconcile a build conversation: agent-claimed vs live metadata`},{method:`GET`,path:`/agents`,desc:`List active agents`},{method:`POST`,path:`/agents/:agentName/chat`,desc:`Chat with a named agent (JSON)`,bodyTemplate:{messages:[{role:`user`,content:``}],stream:!1}},{method:`GET`,path:`/assistant`,desc:`Resolve the default assistant and its active skills`},{method:`GET`,path:`/assistant/skills`,desc:`List active skills for a context`},{method:`POST`,path:`/assistant/chat`,desc:`Ambient chat — auto-resolves agent and skills (JSON)`,bodyTemplate:{messages:[{role:`user`,content:``}],stream:!1}},{method:`GET`,path:`/tools`,desc:`List registered AI tools`},{method:`POST`,path:`/tools/:toolName/execute`,desc:`Execute one tool directly (playground)`,bodyTemplate:{parameters:{}}},{method:`GET`,path:`/pending-actions`,desc:`List pending actions awaiting approval`},{method:`GET`,path:`/pending-actions/:id`,desc:`Get one pending action`},{method:`POST`,path:`/pending-actions/:id/approve`,desc:`Approve a pending action and execute it`,bodyTemplate:{}},{method:`POST`,path:`/pending-actions/:id/reject`,desc:`Reject a pending action`,bodyTemplate:{reason:``}},{method:`POST`,path:`/evals/runs`,desc:`Run an eval case — ai:admin, makes paid LLM calls`,bodyTemplate:{caseId:``}},{method:`GET`,path:`/usage`,desc:`AI quota headroom per meter (console usage indicator)`}]},realtime:{group:`Realtime`,defaultRoute:`/api/v1/realtime`,endpoints:[{method:`POST`,path:`/connect`,desc:`Establish realtime connection`,bodyTemplate:{transport:`websocket`}},{method:`POST`,path:`/disconnect`,desc:`Close realtime connection`,bodyTemplate:{connectionId:``}},{method:`POST`,path:`/subscribe`,desc:`Subscribe to channel`,bodyTemplate:{channel:``}},{method:`POST`,path:`/unsubscribe`,desc:`Unsubscribe from channel`,bodyTemplate:{channel:``}},{method:`PUT`,path:`/presence/:channel`,desc:`Set presence state`,bodyTemplate:{status:`online`}},{method:`GET`,path:`/presence/:channel`,desc:`Get channel presence`}]},notification:{group:`Notifications`,defaultRoute:`/api/v1/notifications`,endpoints:[{method:`GET`,path:``,desc:`List notifications`},{method:`POST`,path:`/devices`,desc:`Register device for push`,bodyTemplate:{token:``,platform:`web`}},{method:`DELETE`,path:`/devices/:deviceId`,desc:`Unregister device`},{method:`GET`,path:`/preferences`,desc:`Get notification preferences`},{method:`PATCH`,path:`/preferences`,desc:`Update notification preferences`,bodyTemplate:{email:!0,push:!0}},{method:`POST`,path:`/read`,desc:`Mark notifications as read`,bodyTemplate:{ids:[]}},{method:`POST`,path:`/read/all`,desc:`Mark all as read`}]},analytics:{group:`Analytics`,defaultRoute:`/api/v1/analytics`,endpoints:[{method:`POST`,path:`/query`,desc:`Execute analytics query`,bodyTemplate:{measures:[],dimensions:[]}},{method:`GET`,path:`/meta`,desc:`Get analytics metadata`}]},automation:{group:`Automation`,defaultRoute:`/api/v1/automation`,endpoints:[{method:`POST`,path:`/trigger`,desc:`Trigger automation`,bodyTemplate:{name:``,params:{}}}]},i18n:{group:`i18n`,defaultRoute:`/api/v1/i18n`,endpoints:[{method:`GET`,path:`/locales`,desc:`Get available locales`},{method:`GET`,path:`/translations/:locale`,desc:`Get translations for locale`},{method:`GET`,path:`/labels/:object/:locale`,desc:`Get translated field labels`}]},ui:{group:`UI`,defaultRoute:`/api/v1/ui`,endpoints:[{method:`GET`,path:`/views`,desc:`List views`},{method:`GET`,path:`/views/:id`,desc:`Get view by ID`},{method:`POST`,path:`/views`,desc:`Create view`,bodyTemplate:{name:``,object:``,type:`list`}},{method:`PATCH`,path:`/views/:id`,desc:`Update view`,bodyTemplate:{name:``}},{method:`DELETE`,path:`/views/:id`,desc:`Delete view`}]},"file-storage":{group:`Storage`,defaultRoute:`/api/v1/storage`,endpoints:[{method:`POST`,path:`/upload`,desc:`Upload file (multipart/form-data)`},{method:`GET`,path:`/:fileId`,desc:`Download file`},{method:`DELETE`,path:`/:fileId`,desc:`Delete file`}]}},T={"file-storage":`storage`};function E(e,t){let n=w[e];return n?n.endpoints.map(e=>({method:e.method,path:`${t}${e.path}`,desc:e.desc,group:n.group,...e.bodyTemplate?{bodyTemplate:e.bodyTemplate}:{}})):[]}function te(){let e=i(),[t,n]=(0,x.useState)([]),[a,o]=(0,x.useState)([]),[s,c]=(0,x.useState)(!0),[l,u]=(0,x.useState)(null),d=(0,x.useCallback)(async()=>{c(!0),u(null);let t=`/api/v1`,i=`${t}/discovery`,a=[{method:`GET`,path:i,desc:`API Discovery`,group:`System`},{method:`GET`,path:`${t}/meta/types`,desc:`List metadata types`,group:`Metadata`},{method:`GET`,path:`${t}/packages`,desc:`List packages`,group:`System`},{method:`GET`,path:`/api/v1/health`,desc:`Health check`,group:`System`}];try{let s=`/api/v1/auth`,c={},l={};try{let e=await fetch(i);if(e.ok){let t=await e.json(),n=t?.data??t;l=n?.routes??{},c=n?.services??{},l.auth&&(s=l.auth)}}catch{}let u=[];for(let[e,t]of Object.entries(w)){let n=T[e],i=(n?c[n]:void 0)??c[e],a=i?r(i):!1,o=i?.route??l[e]??t.defaultRoute;a&&u.push(...E(e,o))}let d=e?.getClient?.(),f=[];try{let e=await d?.meta?.getTypes?.();e&&Array.isArray(e.types)?f=e.types:Array.isArray(e)&&(f=e)}catch{}let p=[];try{let e=f.includes(`object`)?`object`:null;if(e&&d?.meta?.getItems){let t=await d.meta.getItems(e),n=[];Array.isArray(t)?n=t:t&&Array.isArray(t.items)?n=t.items:t&&Array.isArray(t.value)&&(n=t.value),p=n.map(e=>e.name||e.id).filter(Boolean)}}catch{}let m=p.flatMap(e=>{let n=e.startsWith(`sys_`)?`Data: system tables`:`Data: ${e}`;return[{method:`GET`,path:`${t}/data/${e}`,desc:`List ${e}`,group:n},{method:`POST`,path:`${t}/data/${e}`,desc:`Create ${e}`,group:n,bodyTemplate:{name:`example`}},{method:`GET`,path:`${t}/data/${e}/:id`,desc:`Get ${e} by ID`,group:n},{method:`PATCH`,path:`${t}/data/${e}/:id`,desc:`Update ${e}`,group:n,bodyTemplate:{name:`updated`}},{method:`DELETE`,path:`${t}/data/${e}/:id`,desc:`Delete ${e}`,group:n}]}),h=f.filter(e=>!S.includes(e)).map(e=>({method:`GET`,path:`${t}/meta/${e}`,desc:`List ${e} metadata`,group:`Metadata`})),g=p.map(e=>({method:`GET`,path:`${t}/meta/object/${e}`,desc:`${e} schema`,group:`Metadata`})),_=[...a,...C(s),...u,...h,...g,...m],v=new Map;for(let e of _){let t=v.get(e.group)||[];t.push(e),v.set(e.group,t)}let y=[`System`,`Auth`,`AI`,`Workflow`,`Realtime`,`Notifications`,`Analytics`,`Automation`,`i18n`,`UI`,`Feed`,`Storage`,`Metadata`],b=Array.from(v.entries()).sort(([e],[t])=>{let n=y.indexOf(e),r=y.indexOf(t);return n!==-1&&r!==-1?n-r:n===-1?r===-1?e.localeCompare(t):1:-1}).map(([e,t])=>({key:e,label:e,endpoints:t}));n(b),o(_)}catch(e){u(e.message||`Failed to discover APIs`)}finally{c(!1)}},[e]);return(0,x.useEffect)(()=>{d()},[d]),{groups:t,allEndpoints:a,loading:s,error:l,refresh:d}}var D=n(),O={GET:`text-emerald-600 bg-emerald-50 border-emerald-200 dark:text-emerald-400 dark:bg-emerald-950/50`,POST:`text-blue-600 bg-blue-50 border-blue-200 dark:text-blue-400 dark:bg-blue-950/50`,PATCH:`text-amber-600 bg-amber-50 border-amber-200 dark:text-amber-400 dark:bg-amber-950/50`,PUT:`text-amber-600 bg-amber-50 border-amber-200 dark:text-amber-400 dark:bg-amber-950/50`,DELETE:`text-red-600 bg-red-50 border-red-200 dark:text-red-400 dark:bg-red-950/50`},ne={2:`text-emerald-600 dark:text-emerald-400`,3:`text-blue-600 dark:text-blue-400`,4:`text-amber-600 dark:text-amber-400`,5:`text-red-600 dark:text-red-400`},re=[{key:`$top`,placeholder:`10`,hint:`limit`},{key:`$skip`,placeholder:`0`,hint:`offset`},{key:`$sort`,placeholder:`name`,hint:`sort field`},{key:`$select`,placeholder:`name,email`,hint:`fields`},{key:`$count`,placeholder:`true`,hint:`total count`},{key:`$filter`,placeholder:`status eq 'active'`,hint:`OData filter`}],k=1;function A(){let e=i()?.getClient?.(),{groups:t,loading:n,refresh:r}=te(),[S,C]=(0,x.useState)(``),[w,T]=(0,x.useState)(new Set),[E,A]=(0,x.useState)(null),[ie,j]=(0,x.useState)(``),[ae,M]=(0,x.useState)(``),[N,P]=(0,x.useState)(``),[F,I]=(0,x.useState)([]),[L,R]=(0,x.useState)(!1),[z,B]=(0,x.useState)(null),[V,H]=(0,x.useState)([]),[U,oe]=(0,x.useState)(null),[W,G]=(0,x.useState)(!1),K=(0,x.useMemo)(()=>{if(!S)return t;let e=S.toLowerCase();return t.map(t=>({...t,endpoints:t.endpoints.filter(t=>t.desc.toLowerCase().includes(e)||t.path.toLowerCase().includes(e)||t.method.toLowerCase().includes(e))})).filter(e=>e.endpoints.length>0)},[t,S]),se=(0,x.useCallback)(e=>{T(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),ce=(0,x.useCallback)(e=>{A(e),j(e.method),M(e.path),P(e.bodyTemplate?JSON.stringify(e.bodyTemplate,null,2):``),I([]),B(null)},[]),q=ie||E?.method||`GET`,J=ae||E?.path||``,Y=(0,x.useMemo)(()=>{let e=F.filter(e=>e.enabled&&e.key.trim());if(e.length===0)return J;let t=e.map(e=>`${encodeURIComponent(e.key)}=${encodeURIComponent(e.value)}`).join(`&`);return`${J}?${t}`},[J,F]),X=(0,x.useCallback)((e=``,t=``)=>{I(n=>[...n,{id:k++,key:e,value:t,enabled:!0}])},[]),le=(0,x.useCallback)(e=>{I(t=>t.filter(t=>t.id!==e))},[]),Z=(0,x.useCallback)((e,t,n)=>{I(r=>r.map(r=>r.id===e?{...r,[t]:n}:r))},[]),ue=(0,x.useCallback)(e=>{I(t=>t.map(t=>t.id===e?{...t,enabled:!t.enabled}:t))},[]),Q=(0,x.useCallback)(async()=>{if(L||!Y)return;let t=`${e?.baseUrl??``}${Y}`;R(!0);let n=performance.now();try{let e={method:q,headers:{"Content-Type":`application/json`}};[`POST`,`PATCH`,`PUT`].includes(q)&&N.trim()&&(e.body=N);let r=await fetch(t,e),i=Math.round(performance.now()-n),a;if((r.headers.get(`content-type`)??``).includes(`json`)){let e=await r.json();a=JSON.stringify(e,null,2)}else a=await r.text();let o={status:r.status,body:a,duration:i};B(o),H(e=>[{id:Date.now(),method:q,url:Y,body:N||void 0,status:r.status,duration:i,response:a,timestamp:new Date},...e].slice(0,50))}catch(e){let t=Math.round(performance.now()-n);B({status:0,body:`Network Error: ${e.message}`,duration:t})}finally{R(!1)}},[e,Y,q,N,L]),de=(0,x.useCallback)(e=>{j(e.method);let[t,n]=e.url.split(`?`);if(M(t),P(e.body||``),n){let e=new URLSearchParams(n),t=[];e.forEach((e,n)=>{t.push({id:k++,key:n,value:e,enabled:!0})}),I(t)}else I([]);B(null),A(null)},[]),fe=(0,x.useCallback)(()=>{z?.body&&(navigator.clipboard.writeText(z.body),G(!0),setTimeout(()=>G(!1),1500))},[z]),$=e=>ne[String(e)[0]]??`text-muted-foreground`;return(0,D.jsxs)(`div`,{className:`flex flex-1 min-h-0 overflow-hidden`,children:[(0,D.jsxs)(`div`,{className:`w-72 shrink-0 border-r flex flex-col overflow-hidden`,children:[(0,D.jsxs)(`div`,{className:`p-3 border-b space-y-2`,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,D.jsx)(`h3`,{className:`text-sm font-semibold text-foreground flex-1`,children:`API Endpoints`}),(0,D.jsx)(`button`,{type:`button`,onClick:r,disabled:n,className:`p-1 rounded hover:bg-muted transition-colors text-muted-foreground hover:text-foreground`,title:`Refresh endpoints`,children:(0,D.jsx)(y,{className:`h-3.5 w-3.5 ${n?`animate-spin`:``}`})})]}),(0,D.jsxs)(`div`,{className:`relative`,children:[(0,D.jsx)(g,{className:`absolute left-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground`}),(0,D.jsx)(`input`,{type:`text`,value:S,onChange:e=>C(e.target.value),placeholder:`Search endpoints...`,className:`w-full rounded-md border bg-background pl-8 pr-3 py-1.5 text-sm focus:outline-none focus:ring-1 focus:ring-ring`})]})]}),(0,D.jsx)(`div`,{className:`flex-1 overflow-auto p-2 space-y-1`,children:n?(0,D.jsxs)(`div`,{className:`flex items-center justify-center py-8 text-muted-foreground text-sm`,children:[(0,D.jsx)(b,{className:`h-4 w-4 animate-spin mr-2`}),`Discovering APIs...`]}):K.length===0?(0,D.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-8 text-muted-foreground text-sm`,children:[(0,D.jsx)(m,{className:`h-6 w-6 opacity-30 mb-2`}),(0,D.jsx)(`span`,{children:S?`No matching endpoints`:`No endpoints found`})]}):K.map(e=>{let t=w.has(e.key)||!!S;return(0,D.jsxs)(s,{open:t,onOpenChange:()=>se(e.key),children:[(0,D.jsx)(d,{asChild:!0,children:(0,D.jsxs)(`button`,{type:`button`,className:`w-full flex items-center gap-1.5 px-2 py-1.5 rounded-md text-xs font-medium text-muted-foreground hover:bg-muted/50 hover:text-foreground transition-colors`,children:[(0,D.jsx)(_,{className:`h-3 w-3 shrink-0 transition-transform duration-200 ${t?`rotate-90`:``}`}),(0,D.jsx)(`span`,{className:`flex-1 text-left truncate`,children:e.label}),(0,D.jsx)(`span`,{className:`shrink-0 text-[10px] tabular-nums opacity-60`,children:e.endpoints.length})]})}),(0,D.jsx)(o,{children:(0,D.jsx)(`div`,{className:`ml-3 space-y-0.5 mt-0.5`,children:e.endpoints.map((e,t)=>(0,D.jsxs)(`button`,{type:`button`,onClick:()=>ce(e),className:`w-full text-left flex items-center gap-1.5 px-2 py-1 rounded text-xs transition-colors ${E===e?`bg-accent text-accent-foreground`:`hover:bg-muted/50 text-muted-foreground hover:text-foreground`}`,children:[(0,D.jsx)(c,{variant:`outline`,className:`font-mono text-[9px] shrink-0 px-1 py-0 ${O[e.method]||``}`,children:e.method}),(0,D.jsx)(`span`,{className:`truncate`,children:e.desc})]},`${e.method}-${e.path}-${t}`))})})]},e.key)})}),(0,D.jsxs)(`div`,{className:`p-3 border-t space-y-2`,children:[(0,D.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,D.jsx)(`h4`,{className:`text-[10px] font-medium text-muted-foreground uppercase tracking-wider`,children:`Query Parameters`}),(0,D.jsxs)(`button`,{type:`button`,onClick:()=>X(),className:`inline-flex items-center gap-0.5 text-[10px] text-muted-foreground hover:text-foreground transition-colors`,children:[(0,D.jsx)(a,{className:`h-3 w-3`}),`Add`]})]}),(0,D.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:re.map(e=>(0,D.jsx)(`button`,{type:`button`,onClick:()=>X(e.key,``),className:`text-[10px] px-1.5 py-0.5 rounded border bg-muted/30 text-muted-foreground hover:text-foreground hover:bg-muted/60 transition-colors font-mono`,title:e.hint,children:e.key},e.key))}),F.length>0&&(0,D.jsx)(`div`,{className:`space-y-1`,children:F.map(e=>(0,D.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,D.jsx)(`input`,{type:`checkbox`,checked:e.enabled,onChange:()=>ue(e.id),className:`h-3 w-3 shrink-0 rounded border accent-primary`}),(0,D.jsx)(`input`,{type:`text`,value:e.key,onChange:t=>Z(e.id,`key`,t.target.value),placeholder:`key`,className:`flex-1 min-w-0 rounded border bg-background px-1.5 py-0.5 text-[10px] font-mono focus:outline-none focus:ring-1 focus:ring-ring`}),(0,D.jsx)(`input`,{type:`text`,value:e.value,onChange:t=>Z(e.id,`value`,t.target.value),placeholder:`value`,className:`flex-1 min-w-0 rounded border bg-background px-1.5 py-0.5 text-[10px] font-mono focus:outline-none focus:ring-1 focus:ring-ring`}),(0,D.jsx)(`button`,{type:`button`,onClick:()=>le(e.id),className:`shrink-0 p-0.5 rounded text-muted-foreground hover:text-destructive transition-colors`,children:(0,D.jsx)(h,{className:`h-3 w-3`})})]},e.id))})]})]}),(0,D.jsxs)(`div`,{className:`flex-1 flex flex-col min-w-0 overflow-hidden`,children:[(0,D.jsxs)(`div`,{className:`p-3 border-b space-y-1`,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,D.jsx)(`select`,{value:q,onChange:e=>j(e.target.value),className:`rounded-md border bg-background px-2 py-1.5 font-mono text-xs font-semibold focus:outline-none focus:ring-1 focus:ring-ring ${O[q]||``}`,children:[`GET`,`POST`,`PATCH`,`PUT`,`DELETE`].map(e=>(0,D.jsx)(`option`,{value:e,children:e},e))}),(0,D.jsx)(`input`,{type:`text`,value:J,onChange:e=>M(e.target.value),className:`flex-1 rounded-md border bg-background px-3 py-1.5 font-mono text-sm focus:outline-none focus:ring-1 focus:ring-ring`,placeholder:`/api/v1/...`,onKeyDown:e=>{e.key===`Enter`&&Q()}}),(0,D.jsxs)(`button`,{type:`button`,onClick:Q,disabled:L||!Y,className:`inline-flex items-center gap-1.5 rounded-md bg-primary px-4 py-1.5 text-sm font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-50 transition-colors`,children:[L?(0,D.jsx)(b,{className:`h-3.5 w-3.5 animate-spin`}):(0,D.jsx)(u,{className:`h-3.5 w-3.5`}),`Send`]})]}),F.some(e=>e.enabled&&e.key.trim())&&(0,D.jsxs)(`div`,{className:`text-[10px] font-mono text-muted-foreground truncate pl-1`,children:[`→ `,Y]})]}),(0,D.jsxs)(`div`,{className:`flex-1 flex flex-col min-h-0 overflow-auto`,children:[[`POST`,`PATCH`,`PUT`].includes(q)&&(0,D.jsxs)(`div`,{className:`p-3 border-b space-y-1`,children:[(0,D.jsx)(`label`,{className:`text-xs font-medium text-muted-foreground`,children:`Request Body (JSON)`}),(0,D.jsx)(`textarea`,{value:N,onChange:e=>P(e.target.value),rows:5,className:`w-full rounded-md border bg-background px-3 py-2 font-mono text-xs focus:outline-none focus:ring-1 focus:ring-ring resize-y`,placeholder:`{ "key": "value" }`})]}),L&&(0,D.jsxs)(`div`,{className:`flex items-center justify-center py-8 text-muted-foreground text-sm`,children:[(0,D.jsx)(b,{className:`h-4 w-4 animate-spin mr-2`}),`Sending request...`]}),z&&!L&&(0,D.jsxs)(`div`,{className:`flex-1 min-h-0 flex flex-col overflow-hidden`,children:[(0,D.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-2 bg-muted/30 border-b`,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-3 text-sm`,children:[(0,D.jsx)(`span`,{className:`font-mono font-semibold ${$(z.status)}`,children:z.status||`ERR`}),(0,D.jsxs)(`span`,{className:`text-muted-foreground flex items-center gap-1`,children:[(0,D.jsx)(l,{className:`h-3 w-3`}),z.duration,`ms`]})]}),(0,D.jsxs)(`button`,{type:`button`,onClick:fe,className:`inline-flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground transition-colors`,children:[W?(0,D.jsx)(ee,{className:`h-3 w-3`}):(0,D.jsx)(f,{className:`h-3 w-3`}),W?`Copied`:`Copy`]})]}),(0,D.jsx)(`pre`,{className:`flex-1 overflow-auto p-3 text-xs font-mono bg-muted/10 whitespace-pre-wrap break-all`,children:z.body})]}),!z&&!L&&(0,D.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-muted-foreground text-sm`,children:(0,D.jsxs)(`div`,{className:`text-center space-y-2`,children:[(0,D.jsx)(m,{className:`h-10 w-10 mx-auto opacity-20`}),(0,D.jsxs)(`p`,{children:[`Select an endpoint or type a URL and click `,(0,D.jsx)(`strong`,{children:`Send`})]}),(0,D.jsx)(`p`,{className:`text-xs opacity-60`,children:`All registered APIs are auto-discovered from the platform`})]})}),V.length>0&&(0,D.jsxs)(`div`,{className:`border-t`,children:[(0,D.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-2`,children:[(0,D.jsxs)(`h4`,{className:`text-xs font-medium text-muted-foreground uppercase tracking-wider`,children:[`History (`,V.length,`)`]}),(0,D.jsxs)(`button`,{type:`button`,onClick:()=>H([]),className:`inline-flex items-center gap-1 text-[10px] text-muted-foreground hover:text-foreground transition-colors`,children:[(0,D.jsx)(p,{className:`h-3 w-3`}),`Clear`]})]}),(0,D.jsx)(`div`,{className:`space-y-0.5 px-2 pb-2 max-h-60 overflow-auto`,children:V.map(e=>(0,D.jsxs)(`div`,{className:`rounded border`,children:[(0,D.jsxs)(`button`,{type:`button`,onClick:()=>oe(U===e.id?null:e.id),className:`w-full flex items-center gap-2 px-2 py-1.5 text-xs hover:bg-muted/30 transition-colors`,children:[U===e.id?(0,D.jsx)(v,{className:`h-3 w-3 shrink-0`}):(0,D.jsx)(_,{className:`h-3 w-3 shrink-0`}),(0,D.jsx)(c,{variant:`outline`,className:`font-mono text-[9px] shrink-0 ${O[e.method]||``}`,children:e.method}),(0,D.jsx)(`span`,{className:`font-mono truncate text-left flex-1`,children:e.url}),(0,D.jsx)(`span`,{className:`ml-auto shrink-0 font-mono ${$(e.status)}`,children:e.status}),(0,D.jsxs)(`span`,{className:`shrink-0 text-muted-foreground`,children:[e.duration,`ms`]}),(0,D.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),de(e)},className:`shrink-0 p-0.5 rounded hover:bg-muted text-muted-foreground hover:text-foreground transition-colors`,title:`Replay request`,children:(0,D.jsx)(u,{className:`h-2.5 w-2.5`})})]}),U===e.id&&(0,D.jsx)(`pre`,{className:`px-3 py-2 text-xs font-mono bg-muted/10 border-t overflow-auto max-h-40 whitespace-pre-wrap break-all`,children:e.response})]},e.id))})]})]})]})]})}export{A as ApiConsolePage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{b as t,h as n,p as r,r as i}from"./vendor-react-CsWFRkED.js";import{A as a,at as o,it as s}from"./framework-LCCQTTcs.js";import{Aa as c,Ao as l,Ar as u,Di as d,Ds as f,Ei as p,Ir as m,La as h,Qr as g,Rn as _,Ti as v,Vi as y,Yi as b,ca as x,jr as S,kr as C}from"./ui-components-3mb69z8L.js";import{r as w}from"./vendor-ui-utils-BFw4cGI6.js";import"./src-Ctj_ivDh.js";var T=e(t(),1);function E(e,t){if(e!=null){if(typeof e==`string`)return e;if(t){let n=t(e.key,{defaultValue:e.defaultValue,...e.params});if(n&&n!==e.key)return n}return e.defaultValue||e.key}}var D=i();function O(e,t){return(e instanceof Error?e.message:String(e??``))||t}function k(){let{t:e}=a(),t=r(),{appName:i}=n(),k=i?`/apps/${i}`:``,{apps:A,refresh:j}=o(),M=s(),N=(0,T.useCallback)(()=>M?.getClient?.()?.meta??null,[M]),P=e(`appManagement.toast.unknownError`,{defaultValue:`unknown error`}),F=(0,T.useCallback)(t=>E(t?.label,e)||t?.name||``,[e]),[I,L]=(0,T.useState)(``),[R,z]=(0,T.useState)(new Set),[B,V]=(0,T.useState)(null),[H,U]=(0,T.useState)(!1),W=(A||[]).filter(t=>{if(!I)return!0;let n=I.toLowerCase();return(t.name||``).toLowerCase().includes(n)||F(t).toLowerCase().includes(n)||(E(t.description,e)||``).toLowerCase().includes(n)}),G=(0,T.useCallback)(e=>{z(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),K=(0,T.useCallback)(()=>{R.size===W.length?z(new Set):z(new Set(W.map(e=>e.name)))},[R.size,W]),q=(0,T.useCallback)(async t=>{let n=N();if(!n){w.error(e(`appManagement.toast.noClient`,{defaultValue:`Cannot reach the metadata service`}));return}U(!0);try{let r=t.active===!1;await n.saveItem(`app`,t.name,{...t,active:r}),w.success(r?e(`appManagement.toast.appEnabled`,{defaultValue:`{{name}} enabled`,name:F(t)}):e(`appManagement.toast.appDisabled`,{defaultValue:`{{name}} disabled`,name:F(t)})),await j()}catch(t){w.error(e(`appManagement.toast.toggleFailed`,{defaultValue:`Failed to toggle app status: {{reason}}`,reason:O(t,P)}))}finally{U(!1)}},[j,N,e,F,P]),J=(0,T.useCallback)(async t=>{let n=N();if(!n){w.error(e(`appManagement.toast.noClient`,{defaultValue:`Cannot reach the metadata service`}));return}U(!0);try{let r=(A||[]).filter(e=>e?.isDefault===!0&&e.name!==t.name);for(let e of r)await n.saveItem(`app`,e.name,{...e,isDefault:!1});await n.saveItem(`app`,t.name,{...t,isDefault:!0}),w.success(e(`appManagement.toast.setDefaultDone`,{defaultValue:`{{name}} set as default`,name:F(t)})),await j()}catch(t){w.error(e(`appManagement.toast.setDefaultFailed`,{defaultValue:`Failed to set default app: {{reason}}`,reason:O(t,P)}))}finally{U(!1)}},[A,j,N,e,F,P]),Y=(0,T.useCallback)(async t=>{if(B!==t.name){V(t.name);return}let n=N();if(!n){w.error(e(`appManagement.toast.noClient`,{defaultValue:`Cannot reach the metadata service`}));return}U(!0);try{await n.deleteItem(`app`,t.name),w.success(e(`appManagement.toast.appDeleted`,{defaultValue:`{{name}} deleted`,name:F(t)})),V(null),await j()}catch(t){w.error(e(`appManagement.toast.deleteFailed`,{defaultValue:`Failed to delete app: {{reason}}`,reason:O(t,P)}))}finally{U(!1)}},[B,j,N,e,F,P]),X=(0,T.useCallback)(async t=>{let n=N();if(!n){w.error(e(`appManagement.toast.noClient`,{defaultValue:`Cannot reach the metadata service`}));return}U(!0);let r=0,i=[];try{let a=new Map((A||[]).map(e=>[e?.name,e]));for(let o of R){let s=a.get(o);if(s)try{await n.saveItem(`app`,o,{...s,active:t}),r+=1}catch(t){i.push(e(`appManagement.toast.bulkFailureEntry`,{defaultValue:`{{name}} ({{reason}})`,name:F(s),reason:O(t,P)}))}}if(r>0&&(w.success(t?e(`appManagement.toast.bulkEnabled`,{defaultValue:`{{n}} apps enabled`,n:r}):e(`appManagement.toast.bulkDisabled`,{defaultValue:`{{n}} apps disabled`,n:r})),z(new Set)),i.length>0){let t=e(`appManagement.toast.bulkFailureJoiner`,{defaultValue:`; `});w.error(e(`appManagement.toast.bulkFailed`,{defaultValue:`Failed for {{n}}: {{details}}`,n:i.length,details:i.join(t)}))}await j()}catch(t){w.error(e(`appManagement.toast.bulkOperationFailed`,{defaultValue:`Bulk operation failed: {{reason}}`,reason:O(t,P)}))}finally{U(!1)}},[A,R,j,N,e,F,P]);return(0,D.jsxs)(`div`,{className:`flex flex-col gap-4 p-4 sm:p-6`,children:[(0,D.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-3`,children:[(0,D.jsxs)(`div`,{className:`min-w-0`,children:[(0,D.jsx)(`h1`,{className:`text-xl sm:text-2xl font-bold tracking-tight`,children:e(`appManagement.title`,{defaultValue:`Applications`})}),(0,D.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1`,children:e(`appManagement.subtitle`,{defaultValue:`Manage all configured applications`})})]}),(0,D.jsxs)(g,{onClick:()=>t(`${k}/create-app`),"data-testid":`create-app-btn`,children:[(0,D.jsx)(c,{className:`h-4 w-4 mr-2`}),e(`appManagement.newApp`,{defaultValue:`New App`})]})]}),(0,D.jsxs)(`div`,{className:`flex flex-col sm:flex-row items-start sm:items-center gap-2`,children:[(0,D.jsxs)(`div`,{className:`relative flex-1 max-w-sm`,children:[(0,D.jsx)(`label`,{htmlFor:`app-search`,className:`sr-only`,children:e(`appManagement.searchLabel`,{defaultValue:`Search apps`})}),(0,D.jsx)(x,{className:`pointer-events-none absolute left-2.5 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground`,"aria-hidden":`true`}),(0,D.jsx)(_,{id:`app-search`,placeholder:e(`appManagement.searchPlaceholder`,{defaultValue:`Search apps…`}),value:I,onChange:e=>L(e.target.value),className:`pl-8`,"data-testid":`app-search-input`})]}),R.size>0&&(0,D.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,D.jsx)(m,{variant:`secondary`,children:e(`appManagement.selectedCount`,{defaultValue:`{{n}} selected`,n:R.size})}),(0,D.jsx)(g,{variant:`outline`,size:`sm`,onClick:()=>X(!0),disabled:H,children:e(`appManagement.bulkEnable`,{defaultValue:`Enable`})}),(0,D.jsx)(g,{variant:`outline`,size:`sm`,onClick:()=>X(!1),disabled:H,children:e(`appManagement.bulkDisable`,{defaultValue:`Disable`})})]})]}),W.length>0&&(0,D.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-muted-foreground`,children:[(0,D.jsx)(C,{id:`select-all-apps`,checked:R.size===W.length&&W.length>0,onCheckedChange:()=>K()}),(0,D.jsx)(`label`,{htmlFor:`select-all-apps`,className:`cursor-pointer`,children:e(`appManagement.selectAll`,{defaultValue:`Select all ({{n}})`,n:W.length})})]}),W.length===0?(0,D.jsxs)(`div`,{className:`text-center py-12 text-muted-foreground`,"data-testid":`no-apps-message`,children:[(0,D.jsx)(l,{className:`h-12 w-12 mx-auto mb-3 opacity-30`}),(0,D.jsx)(`p`,{children:e(`appManagement.empty`,{defaultValue:`No apps found.`})})]}):(0,D.jsx)(`div`,{className:`grid gap-3`,children:W.map(n=>{let r=n.active!==!1,i=n.isDefault===!0,a=B===n.name,o=F(n);return(0,D.jsx)(u,{className:r?``:`opacity-60`,"data-testid":`app-card-${n.name}`,children:(0,D.jsxs)(S,{className:`flex items-center gap-3 py-3 px-4`,children:[(0,D.jsx)(C,{id:`select-app-${n.name}`,checked:R.has(n.name),onCheckedChange:()=>G(n.name),"aria-label":e(`appManagement.selectApp`,{defaultValue:`Select {{name}}`,name:o}),className:`shrink-0`}),(0,D.jsx)(`div`,{className:`flex h-9 w-9 shrink-0 items-center justify-center rounded-lg bg-primary/10 text-primary`,children:(0,D.jsx)(l,{className:`h-4 w-4`})}),(0,D.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,D.jsx)(`span`,{className:`font-medium truncate`,children:o}),i&&(0,D.jsx)(m,{variant:`default`,className:`text-xs`,children:e(`appManagement.defaultBadge`,{defaultValue:`Default`})}),(0,D.jsx)(m,{variant:r?`secondary`:`outline`,className:`text-xs`,children:r?e(`appManagement.active`,{defaultValue:`Active`}):e(`appManagement.inactive`,{defaultValue:`Inactive`})})]}),n.description&&(0,D.jsx)(`p`,{className:`text-xs text-muted-foreground truncate`,children:E(n.description,e)})]}),(0,D.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0`,children:[(0,D.jsx)(g,{variant:`ghost`,size:`icon`,title:e(`appManagement.openApp`,{defaultValue:`Open app`}),"aria-label":e(`appManagement.openAppNamed`,{defaultValue:`Open {{name}}`,name:o}),onClick:()=>t(`/apps/${n._packageId??n.name}`),children:(0,D.jsx)(f,{className:`h-4 w-4`})}),(0,D.jsx)(g,{variant:`ghost`,size:`icon`,title:e(`appManagement.editApp`,{defaultValue:`Edit app`}),"aria-label":e(`appManagement.editAppNamed`,{defaultValue:`Edit {{name}}`,name:o}),onClick:()=>t(`${k}/edit-app/${n.name}`),children:(0,D.jsx)(h,{className:`h-4 w-4`})}),n._packageId?(0,D.jsx)(g,{variant:`ghost`,size:`icon`,title:e(`appManagement.editWithAi`,{defaultValue:`Edit with AI`}),"aria-label":e(`appManagement.editWithAiNamed`,{defaultValue:`Edit {{name}} with AI`,name:o}),onClick:()=>t(`/ai/build?package=${encodeURIComponent(n._packageId)}&new=1`),children:(0,D.jsx)(b,{className:`h-4 w-4`})}):null,(0,D.jsx)(g,{variant:`ghost`,size:`icon`,title:r?e(`appManagement.disableApp`,{defaultValue:`Disable app`}):e(`appManagement.enableApp`,{defaultValue:`Enable app`}),"aria-label":r?e(`appManagement.disableAppNamed`,{defaultValue:`Disable {{name}}`,name:o}):e(`appManagement.enableAppNamed`,{defaultValue:`Enable {{name}}`,name:o}),onClick:()=>q(n),disabled:H,children:r?(0,D.jsx)(p,{className:`h-4 w-4`}):(0,D.jsx)(d,{className:`h-4 w-4`})}),(0,D.jsx)(g,{variant:`ghost`,size:`icon`,title:e(`appManagement.setDefault`,{defaultValue:`Set as default`}),"aria-label":e(`appManagement.setDefaultNamed`,{defaultValue:`Set {{name}} as default`,name:o}),onClick:()=>J(n),disabled:H||i,children:(0,D.jsx)(y,{className:`h-4 w-4 ${i?`fill-current text-yellow-500`:``}`})}),(0,D.jsx)(g,{variant:`ghost`,size:`icon`,title:a?e(`appManagement.confirmDelete`,{defaultValue:`Click again to confirm delete`}):e(`appManagement.deleteApp`,{defaultValue:`Delete app`}),"aria-label":a?e(`appManagement.confirmDeleteNamed`,{defaultValue:`Confirm delete {{name}}`,name:o}):e(`appManagement.deleteAppNamed`,{defaultValue:`Delete {{name}}`,name:o}),onClick:()=>Y(n),disabled:H,className:a?`text-destructive`:``,children:(0,D.jsx)(v,{className:`h-4 w-4`})})]})]})},n.name)})})]})}export{k as AppManagementPage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{a as t,b as n,g as r,h as i,r as a}from"./vendor-react-CsWFRkED.js";import{S as o,v as s,x as ee}from"./infrastructure-CerjT_c2.js";import{A as te,it as ne}from"./framework-LCCQTTcs.js";import{An as re,Ar as ie,Br as ae,Cn as oe,Dn as se,Ds as ce,En as le,Gr as ue,Gt as de,Ht as fe,Ir as c,Jr as pe,Jt as l,Kr as me,Ks as he,Kt as ge,On as u,Qr as d,Qs as _e,Rn as ve,Rs as ye,Sn as be,Tn as xe,Ur as Se,Ut as Ce,Vr as we,Vt as Te,Wr as Ee,Wt as De,Xr as Oe,Xt as ke,Yr as Ae,Yt as je,Zc as Me,Zr as Ne,Zs as Pe,_c as Fe,_t as Ie,ai as Le,bn as Re,ca as ze,gc as Be,jr as Ve,kn as He,kr as Ue,mi as We,ol as f,qi as Ge,qr as Ke,qt as p,ra as qe,sa as Je,sc as Ye,si as Xe,uc as Ze,vn as m,vt as Qe,wn as $e,xa as et,xn as tt,xt as nt,yc as rt,za as it}from"./ui-components-3mb69z8L.js";import{r as h}from"./vendor-ui-utils-BFw4cGI6.js";import"./src-Ctj_ivDh.js";import{r as at,y as ot}from"./RecordDetailView-uf81gH3J.js";var g=e(n(),1),st=`${``.replace(/\/$/,``)}/api/v1`;async function _(e,t){let n=o.get(),r=await fetch(`${st}${e}`,{credentials:`include`,headers:{"Content-Type":`application/json`,...n?{Authorization:`Bearer ${n}`}:{},...t?.headers||{}},...t}),i=null;try{i=await r.json()}catch{}if(!r.ok){let e=i?.code??`HTTP_${r.status}`,t=i?.message??i?.error??r.statusText,n=Error(`${e}: ${t}`);throw n.code=e,n.status=r.status,n.details=i,n}return i}var v={listProcesses(e={}){let t=new URLSearchParams;e.object&&t.set(`object`,e.object),e.activeOnly&&t.set(`activeOnly`,`true`);let n=t.toString();return _(`/approvals/processes${n?`?${n}`:``}`)},listRequests(e={}){let t=new URLSearchParams;e.status&&t.set(`status`,e.status),e.object&&t.set(`object`,e.object),e.recordId&&t.set(`recordId`,e.recordId);let n=Array.isArray(e.approverId)?e.approverId.filter(Boolean).join(`,`):e.approverId;n&&t.set(`approverId`,n),e.submitterId&&t.set(`submitterId`,e.submitterId),e.q?.trim()&&t.set(`q`,e.q.trim()),e.limit!=null&&t.set(`limit`,String(e.limit)),e.offset!=null&&t.set(`offset`,String(e.offset));let r=t.toString();return _(`/approvals/requests${r?`?${r}`:``}`)},async getRequest(e){return{data:await _(`/approvals/requests/${encodeURIComponent(e)}`)}},listActions(e){return _(`/approvals/requests/${encodeURIComponent(e)}/actions`)},async approve(e,t){let n=await _(`/approvals/requests/${encodeURIComponent(e)}/approve`,{method:`POST`,body:JSON.stringify(t)});return{data:n.request,finalized:n.finalized}},async reject(e,t){let n=await _(`/approvals/requests/${encodeURIComponent(e)}/reject`,{method:`POST`,body:JSON.stringify(t)});return{data:n.request,finalized:n.finalized}},async recall(e,t){return{data:(await _(`/approvals/requests/${encodeURIComponent(e)}/recall`,{method:`POST`,body:JSON.stringify(t)})).request,finalized:!0}},async reassign(e,t){return{data:(await _(`/approvals/requests/${encodeURIComponent(e)}/reassign`,{method:`POST`,body:JSON.stringify(t)})).request}},async remind(e,t={}){let n=await _(`/approvals/requests/${encodeURIComponent(e)}/remind`,{method:`POST`,body:JSON.stringify(t)});return{data:n.request,notified:n.notified}},async requestInfo(e,t){return{data:(await _(`/approvals/requests/${encodeURIComponent(e)}/request-info`,{method:`POST`,body:JSON.stringify(t)})).request}},async sendBack(e,t){let n=await _(`/approvals/requests/${encodeURIComponent(e)}/revise`,{method:`POST`,body:JSON.stringify(t)});return{data:n.request,autoRejected:n.autoRejected===!0}},async resubmit(e,t={}){let n=await _(`/approvals/requests/${encodeURIComponent(e)}/resubmit`,{method:`POST`,body:JSON.stringify(t)});return{data:n.request,resumed:n.resumed===!0}},async comment(e,t){return{data:(await _(`/approvals/requests/${encodeURIComponent(e)}/comment`,{method:`POST`,body:JSON.stringify(t)})).request}},async submit(e){return _(`/approvals/requests`,{method:`POST`,body:JSON.stringify(e)})}};function ct(e){if(!e)return[];let t=new Set;e.id&&t.add(e.id),e.email&&t.add(e.email);let n=[...e.roles||[],...typeof e.role==`string`?e.role.split(`,`):[]];for(let e of n){let n=String(e).trim();n&&t.add(`role:${n}`)}return Array.from(t)}function y(e,t){return`${e}::${t}`}function b(e){return typeof e.object_name==`string`&&e.object_name!==``&&typeof e.record_id==`string`&&e.record_id!==``}function lt(e){let t=new Map,n=new Set;for(let r of e){if(!b(r))continue;let e=y(r.object_name,r.record_id);if(n.has(e))continue;n.add(e);let i=t.get(r.object_name);i?i.push(r.record_id):t.set(r.object_name,[r.record_id])}let r=[];for(let[e,n]of t)for(let t=0;t<n.length;t+=100)r.push({objectName:e,ids:n.slice(t,t+100)});return r}function x(e){if(Array.isArray(e))return e;let t=e?.data;return Array.isArray(t)?t:[]}async function S(e,t){let n=new Map,r=lt(t);return await Promise.all(r.map(async({objectName:t,ids:r})=>{let i;try{let n=await e.find(t,{$filter:{id:{$in:r}},$select:[`id`],$top:r.length});i=new Set(x(n).map(e=>e?.id).filter(e=>typeof e==`string`&&e!==``))}catch{return}for(let e of r)n.set(y(t,e),i.has(e))})),n}function ut(e){let t=ne(),[n,r]=(0,g.useState)(()=>new Map),i=(0,g.useRef)(new Set),a=(0,g.useRef)(e);a.current=e;let o=(0,g.useMemo)(()=>e.filter(b).map(e=>y(e.object_name,e.record_id)).join(`|`),[e]);return(0,g.useEffect)(()=>{if(!t)return;let e=a.current.filter(e=>b(e)&&!i.current.has(y(e.object_name,e.record_id)));if(e.length===0)return;for(let t of e)b(t)&&i.current.add(y(t.object_name,t.record_id));let n=!1;return S(t,e).then(e=>{n||e.size===0||r(t=>{let n=new Map(t);for(let[t,r]of e)n.set(t,r);return n})}),()=>{n=!0}},[t,o]),(0,g.useMemo)(()=>({isUnreadable:e=>b(e)&&n.get(y(e.object_name,e.record_id))===!1}),[n])}var C=a(),dt=50,w={pending:`border-amber-200 bg-amber-50 text-amber-700 dark:border-amber-500/30 dark:bg-amber-500/10 dark:text-amber-400`,approved:`border-emerald-200 bg-emerald-50 text-emerald-700 dark:border-emerald-500/30 dark:bg-emerald-500/10 dark:text-emerald-400`,rejected:`border-red-200 bg-red-50 text-red-700 dark:border-red-500/30 dark:bg-red-500/10 dark:text-red-400`,recalled:`border-border bg-muted text-muted-foreground`,returned:`border-violet-200 bg-violet-50 text-violet-700 dark:border-violet-500/30 dark:bg-violet-500/10 dark:text-violet-400`};function ft({status:e,label:t}){return(0,C.jsx)(c,{variant:`outline`,className:f(`font-medium`,w[e]??``),children:t})}function pt(e){if(!e)return`—`;try{return new Date(e).toLocaleString()}catch{return e}}function T(e){return e?e.includes(`@`)?e:e.startsWith(`role:`)?`Role: ${e.slice(5)}`:e.length>14?`${e.slice(0,6)}…${e.slice(-4)}`:e:`—`}function mt(e){return e&&String(e).replace(/^flow:/,``).trim().split(/[_\-\s]+/).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `)||`—`}function ht(e){return e.process_label||mt(e.process_name)}function gt(e){return e.step_label?e.step_label:e.current_step?mt(e.current_step):null}function _t(e){return e.submitter_name||T(e.submitter_id)}function vt(e,t){return t.pending_approver_names?.[e]||T(e)}function yt(e,t){let n=t.pending_approver_groups?.[e];return n&&n.length?n.join(` / `):void 0}function bt(e){let t=[],n=new Map;for(let r of e.pending_approvers||[]){let i=vt(r,e),a=yt(r,e),o=a?`${i} ${a}`:i,s=n.get(o);s?(s.count+=1,r&&!s.title.split(`, `).includes(r)&&(s.title+=`, ${r}`)):(n.set(o,{label:i,group:a,count:1,title:r||i}),t.push(o))}return t.map(e=>n.get(e))}function xt(e){if(e.submitter_name)return!1;let t=(e.submitter_id||``).trim();return!t||t.startsWith(`flow:`)||t.startsWith(`system:`)}function St(e){return e.object_label||e.object_name}function E(e){return e.submitted_at||e.created_at||void 0}function D(e,t){let n=E(e);if(!n)return null;let r=Date.parse(n);return Number.isNaN(r)?null:(t-r)/36e5}function Ct(e,t){if(e.status!==`pending`)return`text-muted-foreground`;let n=D(e,t);return n==null?`text-muted-foreground`:n>72?`text-red-600 dark:text-red-400 font-medium`:n>24?`text-amber-600 dark:text-amber-400`:`text-muted-foreground`}function wt(e){let t=Math.max(1,Math.round(Math.abs(e)/36e5));return t<48?`${t}h`:`${Math.round(t/24)}d`}function Tt(e,t){if(!e)return null;let n=Date.parse(e);return Number.isNaN(n)?null:{overdue:n<t,ms:Math.abs(t-n)}}var Et=new Set([`id`,`created_at`,`updated_at`,`created_by`,`updated_by`,`organization_id`]);function O(e){let t=e.split(`_`).filter(Boolean);return t.length>1&&t[t.length-1].toLowerCase()===`id`&&t.pop(),t.map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `)}function Dt(e,t){if(typeof t==`boolean`)return t?`✓`:`—`;if(typeof t==`number`){if(t>0xe8d4a51000&&/(_at$|_date$|^date_|_time$)/.test(e))try{return new Date(t).toLocaleDateString()}catch{}return t.toLocaleString()}let n=String(t);if(/^\d{4}-\d{2}-\d{2}T\d{2}/.test(n))try{return new Date(n).toLocaleString()}catch{}return n}var k=/^[A-Za-z0-9_-]{15,}$/;function Ot(e,t,n,r=6,i){if(!e||typeof e!=`object`||Array.isArray(e))return[];let a=[];for(let[o,s]of Object.entries(e)){if(Et.has(o)||i&&o===i||s==null||typeof s==`object`||String(s).trim()===``)continue;let e=t?.[o];if(!(!e&&typeof s==`string`&&k.test(s.trim())&&!/^\d+$/.test(s.trim()))&&(a.push([n?.[o]??O(o),e??Dt(o,s)]),a.length>=r))break}return a}var kt=/(amount|total|price|value|cost|sum|budget|salary|fee|revenue|balance|金额|总额|价格|费用|预算|金额)/i;function A(e){let t=e.payload;if(!t||typeof t!=`object`||Array.isArray(t))return null;for(let[n,r]of Object.entries(t)){if(Et.has(n)||!kt.test(n))continue;let t=typeof r==`number`?r:typeof r==`string`&&r.trim()!==``&&Number.isFinite(Number(r))?Number(r):null;if(!(t==null||!Number.isFinite(t)))return{key:n,label:e.payload_labels?.[n]??O(n),value:t,display:e.payload_display?.[n]??t.toLocaleString()}}return null}function j(){let{t:e,language:n}=te(),{user:a}=s(),{appName:o}=i(),[ne,st]=r(),_=(0,g.useMemo)(()=>ct(a),[a]),y=(0,g.useCallback)((t,n,r)=>String(e(`approvalsInbox.${t}`,{defaultValue:n,...r})),[e]),[b,lt]=(0,g.useState)(()=>Date.now());(0,g.useEffect)(()=>{let e=setInterval(()=>lt(Date.now()),6e4);return()=>clearInterval(e)},[]);let x=(0,g.useCallback)(e=>{if(!e)return`—`;let t=Date.parse(e);if(Number.isNaN(t))return e;let r=Math.round((b-t)/1e3);if(r<45)return y(`justNow`,`just now`);let i=Math.round(r/60);if(i<60)return y(`minutesAgo`,`{{count}}m ago`,{count:i});let a=Math.round(i/60);if(a<24)return y(`hoursAgo`,`{{count}}h ago`,{count:a});let o=Math.round(a/24);if(o<30)return y(`daysAgo`,`{{count}}d ago`,{count:o});try{return new Date(e).toLocaleDateString(n)}catch{return e}},[y,n,b]),S=(0,g.useCallback)(e=>{switch(e){case`pending`:return y(`statusPending`,`Pending`);case`approved`:return y(`statusApproved`,`Approved`);case`rejected`:return y(`statusRejected`,`Rejected`);case`recalled`:return y(`statusRecalled`,`Recalled`);case`returned`:return y(`statusReturned`,`Returned for revision`);default:return e}},[y]),w=(0,g.useCallback)((e,t)=>{let n=e?.code??``,r=e?.status??0;return n===`NOT_IMPLEMENTED`||r===501?y(`recallUnavailable`,`Recall is not available on this deployment.`):n===`THROTTLED`||r===429?y(`remindThrottled`,`A reminder was sent recently — try again later.`):r===404?y(`requestGone`,`This request no longer exists. Refresh the list.`):n===`FORBIDDEN`||r===403?y(`notAllowed`,`You are not allowed to perform this action.`):n===`INVALID_STATE`||r===409?y(`alreadyDecided`,`This request was already decided. Refresh the list.`):e?.message||t},[y]),mt=(0,g.useCallback)(e=>e.overdue?y(`slaOverdue`,`SLA overdue {{dur}}`,{dur:wt(e.ms)}):y(`slaRemaining`,`SLA {{dur}} left`,{dur:wt(e.ms)}),[y]),yt=(0,g.useCallback)(e=>`/apps/${o||`setup`}/${encodeURIComponent(e.object_name)}/record/${encodeURIComponent(e.record_id)}`,[o]),[D,Et]=(0,g.useState)(`pending`),[O,Dt]=(0,g.useState)([]),[k,kt]=(0,g.useState)(!1),[j,At]=(0,g.useState)(!1),[jt,M]=(0,g.useState)(null),[Mt,Nt]=(0,g.useState)(null),[Pt,Ft]=(0,g.useState)(0),[N,It]=(0,g.useState)(null),[P,F]=(0,g.useState)(null),[Lt,I]=(0,g.useState)([]),[Rt,zt]=(0,g.useState)(!1),Bt=ut((0,g.useMemo)(()=>P?[...O,P]:O,[O,P])),Vt=(0,g.useMemo)(()=>ee(),[]),Ht=(0,g.useCallback)(async e=>{let t=window.open(``,`_blank`,`noopener`);try{let n=``.replace(/\/$/,``),r=await Vt(`${n}/api/v1/storage/files/${encodeURIComponent(e.id)}/url`);if(!r.ok)throw Error(`HTTP_${r.status}`);let i=await r.json().catch(()=>null),a=i?.data?.url??i?.url;if(!a)throw Error(`NO_URL`);let o=/^https?:\/\//i.test(a)?a:`${n}${a}`;t?t.location.href=o:window.open(o,`_blank`,`noopener`)}catch{t?.close(),h.error(y(`attachmentOpenFailed`,`Could not open the attachment — please try again`))}},[Vt,y]),[L,Ut]=(0,g.useState)(``),[R,Wt]=(0,g.useState)(``),[z,Gt]=(0,g.useState)(`all`),[Kt,qt]=(0,g.useState)(`all`),[B,Jt]=(0,g.useState)(`all`),[Yt,Xt]=(0,g.useState)(`recent`),[V,Zt]=(0,g.useState)(new Set),[Qt,$t]=(0,g.useState)(!1),[H,en]=(0,g.useState)(null),[U,tn]=(0,g.useState)(null),[nn,rn]=(0,g.useState)(null),[W,an]=(0,g.useState)(``),[on,sn]=(0,g.useState)(!1),[cn,G]=(0,g.useState)(-1);(0,g.useEffect)(()=>{if(D===`pending`)return;let e=window.setTimeout(()=>Wt(L),350);return()=>window.clearTimeout(e)},[L,D]);let K=(0,g.useCallback)(async()=>{kt(!0),Nt(null);try{let e=[];if(D===`pending`)e=_.length?(await v.listRequests({status:`pending`,approverId:_})).data:[],Ft(e.length),M(null);else{let t={q:R||void 0,status:B===`all`?void 0:B,limit:dt,offset:0};if(D===`submitted`){let n=a?.id;if(n){let r=await v.listRequests({submitterId:n,...t});e=r.data,M(r.total??r.data.length)}else e=[],M(0)}else{let n=await v.listRequests(t);e=n.data,M(n.total??n.data.length)}_.length&&v.listRequests({status:`pending`,approverId:_}).then(e=>Ft(e.data.length)).catch(()=>{})}e.sort((e,t)=>(E(t)||``).localeCompare(E(e)||``)),Dt(e)}catch(e){Nt(e?.message||String(e)),Dt([])}finally{kt(!1)}},[D,_,a?.id,R,B]);(0,g.useEffect)(()=>{K()},[K]);let ln=(0,g.useCallback)(async()=>{if(!(D===`pending`||j)){At(!0);try{let e=await v.listRequests({submitterId:D===`submitted`?a?.id??void 0:void 0,q:R||void 0,status:B===`all`?void 0:B,limit:dt,offset:O.length});Dt(t=>{let n=new Set(t.map(e=>e.id));return[...t,...e.data.filter(e=>!n.has(e.id))]}),e.total!=null&&M(e.total)}catch(e){h.error(w(e,y(`loadFailed`,`Failed to load request`)))}finally{At(!1)}}},[D,j,a?.id,R,B,O.length,w,y]),q=(0,g.useCallback)(async e=>{It(e),zt(!0);try{let[t,n]=await Promise.all([v.getRequest(e),v.listActions(e)]);F(t.data),I(n.data)}catch(e){h.error(w(e,y(`loadFailed`,`Failed to load request`))),F(null),I([])}finally{zt(!1)}},[w,y]),un=()=>{It(null),F(null),I([])};(0,g.useEffect)(()=>{let e=ne.get(`request`);e&&(st(e=>{let t=new URLSearchParams(e);return t.delete(`request`),t},{replace:!0}),q(e))},[ne]);let J=(0,g.useCallback)(()=>{_.length&&v.listRequests({status:`pending`,approverId:_}).then(e=>Ft(e.data.length)).catch(()=>{})},[_]),dn=(0,g.useCallback)(async e=>{let[t,n]=await Promise.all([v.getRequest(e),v.listActions(e)]);F(t.data),I(n.data),K()},[K]),fn=(0,g.useCallback)(async()=>{if(!P)return;let e=P.id;try{let[t,n]=await Promise.all([v.getRequest(e),v.listActions(e)]);F(t.data),I(n.data),K();let r=new Set(t.data.pending_approvers||[]),i=t.data.status===`pending`&&_.some(e=>r.has(e));if(D===`pending`&&!i){let t=Dn.current,n=t.findIndex(t=>t.id===e),r=t[n+1]??t[n-1];if(r&&r.id!==e){q(r.id);return}un()}}catch{dn(e)}},[P,_,D,K,q,un,dn]),pn=(0,g.useCallback)(async()=>{if(!(!P||!W.trim())){sn(!0);try{await v.comment(P.id,{actor_id:a?.id,comment:W.trim()}),an(``),await dn(P.id)}catch(e){h.error(w(e,y(`actionFailed`,`Action failed`)))}finally{sn(!1)}}},[P,W,a?.id,dn,w,y]),mn=(0,g.useMemo)(()=>{if(!P||P.status!==`pending`)return!1;if(P.viewer)return P.viewer.can_act||!!P.viewer.can_override;let e=new Set(P.pending_approvers||[]);return _.some(t=>e.has(t))},[P,_]),hn=(0,g.useMemo)(()=>!P||P.status!==`pending`?!1:P.viewer?P.viewer.is_submitter:P.submitter_id===a?.id,[P,a?.id]),gn=(0,g.useMemo)(()=>!P||P.status!==`returned`?!1:P.viewer?P.viewer.is_submitter:P.submitter_id===a?.id,[P,a?.id]),_n=(0,g.useMemo)(()=>{let e=new Set;for(let t of O)e.add(ht(t));return Array.from(e).sort()},[O]),vn=(0,g.useMemo)(()=>{let e=new Set;for(let t of O)t.object_name&&e.add(t.object_name);return Array.from(e).sort()},[O]),Y=(0,g.useMemo)(()=>{let e=L.trim().toLowerCase(),t=O.filter(t=>z!==`all`&&ht(t)!==z||Kt!==`all`&&t.object_name!==Kt||B!==`all`&&t.status!==B?!1:D!==`pending`||!e||[t.process_name,t.process_label,t.step_label,t.object_name,t.record_id,t.record_title,t.submitter_id,t.submitter_name,...t.pending_approvers||[]].filter(Boolean).join(` `).toLowerCase().includes(e));if(Yt===`recent`)return t;let n=[...t];return Yt===`amount`?n.sort((e,t)=>{let n=A(e)?.value,r=A(t)?.value;return n==null&&r==null?0:n==null?1:r==null?-1:r-n}):n.sort((e,t)=>(E(e)||``).localeCompare(E(t)||``)),n},[O,L,z,Kt,B,D,Yt]),X=(0,g.useMemo)(()=>N?Y.findIndex(e=>e.id===N):-1,[Y,N]);(0,g.useEffect)(()=>{if(V.size===0)return;let e=new Set(Y.map(e=>e.id)),t=!1,n=new Set;for(let r of V)e.has(r)?n.add(r):t=!0;t&&Zt(n)},[Y,V]),(0,g.useEffect)(()=>{cn>=Y.length&&G(Y.length-1)},[Y.length,cn]);let yn=(0,g.useCallback)(e=>{if(e.status!==`pending`)return!1;let t=new Set(_);return(e.pending_approvers||[]).some(e=>t.has(e))},[_]),Z=(0,g.useCallback)(e=>Array.isArray(e.decision_outputs)&&e.decision_outputs.length>0,[]),bn=(0,g.useCallback)(e=>yn(e)&&!Z(e),[yn,Z]),Q=(0,g.useMemo)(()=>Y.filter(e=>V.has(e.id)&&bn(e)),[Y,V,bn]),$=Y.filter(e=>e.status===`pending`),xn=$.length>0&&$.every(e=>V.has(e.id)),Sn=(0,g.useCallback)(()=>{Zt(e=>{if(xn)return new Set;let t=new Set(e);for(let e of $)t.add(e.id);return t})},[xn,$]),Cn=(0,g.useCallback)(e=>{Zt(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),wn=(0,g.useCallback)(async e=>{let t=Q;if(t.length===0)return;$t(!0);let n=0,r=[];for(let i of t){let t=new Set(i.pending_approvers||[]),o=_.find(e=>t.has(e))||a?.id||``;try{await(e===`approve`?v.approve:v.reject)(i.id,{actor_id:o}),n++}catch{r.push(i.record_title||T(i.record_id))}}if($t(!1),Zt(new Set),r.length===0)h.success(e===`approve`?y(`bulkApproved`,`Approved {{count}} requests`,{count:n}):y(`bulkRejected`,`Rejected {{count}} requests`,{count:n}));else{let e=r.slice(0,3).join(`, `);h.error(y(`bulkPartial`,`{{ok}} succeeded, {{fail}} failed: {{which}}`,{ok:n,fail:r.length,which:e+(r.length>3?`…`:``)}))}K(),J()},[Q,_,a?.id,K,J,y]),Tn=(0,g.useCallback)(async()=>{let e=H;if(!e)return;let t=new Set(e.pending_approvers||[]),n=_.find(e=>t.has(e))||a?.id||``;rn(e.id),en(null);try{let t=await v.approve(e.id,{actor_id:n});h.success(t.finalized?y(`inlineApproved`,`Approved "{{title}}"`,{title:e.record_title||T(e.record_id)}):y(`approvedWaiting`,`Approved — waiting on the remaining approvers`)),K(),J()}catch(e){h.error(w(e,y(`actionFailed`,`Action failed`)))}finally{rn(null)}},[H,_,a?.id,K,J,w,y]),En=(0,g.useCallback)(async()=>{let e=U;if(!e)return;let t=new Set(e.pending_approvers||[]),n=_.find(e=>t.has(e))||a?.id||``;rn(e.id),tn(null);try{await v.reject(e.id,{actor_id:n}),h.success(y(`inlineRejected`,`Rejected "{{title}}"`,{title:e.record_title||T(e.record_id)})),K(),J()}catch(e){h.error(w(e,y(`actionFailed`,`Action failed`)))}finally{rn(null)}},[U,_,a?.id,K,J,w,y]),Dn=(0,g.useRef)(Y);Dn.current=Y;let On=(0,g.useRef)(cn);On.current=cn,(0,g.useEffect)(()=>{let e=e=>{if(N||H||U)return;let t=e.target,n=t?.tagName;if(n===`INPUT`||n===`TEXTAREA`||n===`SELECT`||t?.isContentEditable||document.querySelector(`[role="alertdialog"]`))return;let r=Dn.current;if(!r.length)return;let i=On.current;e.key===`j`||e.key===`ArrowDown`?(e.preventDefault(),G(Math.min(i+1,r.length-1))):e.key===`k`||e.key===`ArrowUp`?(e.preventDefault(),G(Math.max(i-1,0))):e.key===`Enter`&&i>=0&&r[i]?(e.preventDefault(),q(r[i].id)):(e.key===`x`||e.key===` `)&&i>=0&&r[i]&&D===`pending`?(e.preventDefault(),Cn(r[i].id)):e.key===`a`&&i>=0&&r[i]&&bn(r[i])?(e.preventDefault(),en(r[i])):e.key===`r`&&i>=0&&r[i]&&bn(r[i])&&(e.preventDefault(),tn(r[i]))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[N,H,U,D,q,Cn,bn]),(0,g.useEffect)(()=>{if(!N)return;let e=e=>{if(e.key!==`ArrowLeft`&&e.key!==`ArrowRight`)return;let t=e.target,n=t?.tagName;if(n===`INPUT`||n===`TEXTAREA`||n===`SELECT`||t?.isContentEditable||document.querySelector(`[role="alertdialog"]`))return;let r=Dn.current,i=r.findIndex(e=>e.id===N);if(i<0)return;let a=e.key===`ArrowLeft`?r[i-1]:r[i+1];a&&(e.preventDefault(),q(a.id))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[N,q]);let kn=!!L||z!==`all`||Kt!==`all`||B!==`all`,An=e=>{Et(e),Jt(`all`),Gt(`all`),qt(`all`),Ut(``),Xt(`recent`),G(-1)};function jn({r:e}){return(0,C.jsxs)(`div`,{className:`min-w-0`,children:[(0,C.jsx)(`div`,{className:`font-medium truncate`,children:ht(e)}),(0,C.jsxs)(`div`,{className:`text-xs text-muted-foreground truncate`,children:[gt(e)||`—`,(e.round??1)>1&&(0,C.jsx)(`span`,{className:`ml-1.5 text-violet-600 dark:text-violet-400`,children:y(`roundChip`,`Round {{n}}`,{n:e.round})})]})]})}function Mn({r:e}){let n=A(e),r=e.record_title||T(e.record_id);return(0,C.jsxs)(`div`,{className:`min-w-0`,children:[Bt.isUnreadable(e)?(0,C.jsx)(`div`,{className:`text-sm truncate max-w-full`,title:e.record_id,children:r}):(0,C.jsxs)(t,{to:yt(e),onClick:e=>e.stopPropagation(),className:`inline-flex items-center gap-1 text-sm hover:underline truncate max-w-full`,title:e.record_id,children:[(0,C.jsx)(`span`,{className:`truncate`,children:r}),(0,C.jsx)(ce,{className:`h-3 w-3 shrink-0 text-muted-foreground`})]}),(0,C.jsxs)(`div`,{className:`text-xs text-muted-foreground truncate`,children:[St(e),n&&(0,C.jsxs)(`span`,{className:`ml-1.5 font-medium text-foreground`,title:`${n.label}: ${n.display}`,children:[`· `,n.display]})]})]})}function Nn({r:e}){if(!yn(e))return null;let t=nn===e.id,n=Z(e),r=y(`needsDecisionInputs`,`This approval collects decision outputs — open it to decide.`);return(0,C.jsxs)(`div`,{className:`flex items-center gap-1 opacity-0 group-hover:opacity-100 focus-within:opacity-100 transition-opacity`,onClick:e=>e.stopPropagation(),title:n?r:void 0,children:[(0,C.jsx)(d,{size:`sm`,variant:`ghost`,className:`h-7 px-2 text-emerald-700 hover:text-emerald-800 hover:bg-emerald-50 dark:text-emerald-400`,disabled:t||n,onClick:()=>en(e),"aria-label":n?r:y(`approve`,`Approve`),children:(0,C.jsx)(Ye,{className:`h-4 w-4`})}),(0,C.jsx)(d,{size:`sm`,variant:`ghost`,className:`h-7 px-2 text-red-600 hover:text-red-700 hover:bg-red-50 dark:text-red-400`,disabled:t||n,onClick:()=>tn(e),"aria-label":n?r:y(`reject`,`Reject`),children:(0,C.jsx)(_e,{className:`h-4 w-4`})})]})}return(0,C.jsxs)(`div`,{className:`flex flex-col gap-4 sm:gap-6 p-4 sm:p-6 max-w-6xl`,children:[(0,C.jsxs)(`header`,{className:`flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2`,children:[(0,C.jsxs)(`div`,{children:[(0,C.jsxs)(`h1`,{className:`text-2xl font-semibold flex items-center gap-2`,children:[(0,C.jsx)(Ge,{className:`h-6 w-6`}),y(`title`,`Approvals Inbox`)]}),(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:y(`subtitle`,`Review and act on approval requests.`)})]}),(0,C.jsxs)(d,{variant:`outline`,size:`sm`,onClick:K,disabled:k,className:`self-start sm:self-auto`,children:[(0,C.jsx)(et,{className:`h-4 w-4 mr-2 ${k?`animate-spin`:``}`}),y(`refresh`,`Refresh`)]})]}),Mt&&(0,C.jsxs)(ae,{variant:`destructive`,children:[(0,C.jsx)(Ze,{className:`h-4 w-4`}),(0,C.jsx)(we,{children:Mt})]}),(0,C.jsxs)(Te,{value:D,onValueChange:An,children:[(0,C.jsxs)(Ce,{children:[(0,C.jsxs)(De,{value:`pending`,children:[y(`tabMyPending`,`My Pending`),Pt>0&&(0,C.jsx)(c,{variant:`secondary`,className:`ml-2`,children:Pt})]}),(0,C.jsx)(De,{value:`submitted`,children:y(`tabSubmitted`,`Submitted by me`)}),(0,C.jsx)(De,{value:`all`,children:y(`tabAll`,`All`)})]}),(0,C.jsxs)(fe,{value:D,className:`mt-4 space-y-3`,children:[!k&&(O.length>0||D!==`pending`&&(R||B!==`all`))&&(0,C.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,C.jsxs)(`div`,{className:`relative flex-1 min-w-[200px] max-w-sm`,children:[(0,C.jsx)(ze,{className:`absolute left-2.5 top-1/2 -translate-y-1/2 h-3.5 w-3.5 text-muted-foreground`}),(0,C.jsx)(ve,{value:L,onChange:e=>Ut(e.target.value),placeholder:y(`searchPlaceholder`,`Search record, process, requester…`),className:`pl-8 h-8 text-sm`}),L&&(0,C.jsx)(`button`,{type:`button`,onClick:()=>Ut(``),className:`absolute right-2 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground`,"aria-label":y(`clearSearch`,`Clear search`),children:(0,C.jsx)(Le,{className:`h-3.5 w-3.5`})})]}),D!==`pending`&&(0,C.jsxs)(le,{value:B,onValueChange:Jt,children:[(0,C.jsx)(He,{className:`h-8 w-auto min-w-[130px] text-sm`,children:(0,C.jsx)(re,{placeholder:y(`statusFilter`,`Status`)})}),(0,C.jsxs)(se,{children:[(0,C.jsx)(u,{value:`all`,children:y(`allStatuses`,`All statuses`)}),(0,C.jsx)(u,{value:`pending`,children:S(`pending`)}),(0,C.jsx)(u,{value:`approved`,children:S(`approved`)}),(0,C.jsx)(u,{value:`rejected`,children:S(`rejected`)}),(0,C.jsx)(u,{value:`recalled`,children:S(`recalled`)}),(0,C.jsx)(u,{value:`returned`,children:S(`returned`)})]})]}),_n.length>1&&(0,C.jsxs)(le,{value:z,onValueChange:Gt,children:[(0,C.jsx)(He,{className:`h-8 w-auto min-w-[140px] text-sm`,children:(0,C.jsx)(re,{placeholder:y(`processFilter`,`Process`)})}),(0,C.jsxs)(se,{children:[(0,C.jsx)(u,{value:`all`,children:y(`allProcesses`,`All processes`)}),_n.map(e=>(0,C.jsx)(u,{value:e,children:e},e))]})]}),vn.length>1&&(0,C.jsxs)(le,{value:Kt,onValueChange:qt,children:[(0,C.jsx)(He,{className:`h-8 w-auto min-w-[140px] text-sm`,children:(0,C.jsx)(re,{placeholder:y(`objectFilter`,`Object`)})}),(0,C.jsxs)(se,{children:[(0,C.jsx)(u,{value:`all`,children:y(`allObjects`,`All objects`)}),vn.map(e=>(0,C.jsx)(u,{value:e,children:e},e))]})]}),(0,C.jsxs)(le,{value:Yt,onValueChange:e=>Xt(e),children:[(0,C.jsxs)(He,{className:`h-8 w-auto min-w-[120px] text-sm`,children:[(0,C.jsx)(Me,{className:`h-3.5 w-3.5 mr-1 text-muted-foreground`}),(0,C.jsx)(re,{placeholder:y(`sortBy`,`Sort`)})]}),(0,C.jsxs)(se,{children:[(0,C.jsx)(u,{value:`recent`,children:y(`sortRecent`,`Newest first`)}),(0,C.jsx)(u,{value:`oldest`,children:y(`sortOldest`,`Oldest first`)}),(0,C.jsx)(u,{value:`amount`,children:y(`sortAmount`,`Amount (high→low)`)})]})]}),kn&&(0,C.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:y(`filterCount`,`{{shown}} of {{total}}`,{shown:Y.length,total:O.length})})]}),D===`pending`&&V.size>0&&(0,C.jsxs)(`div`,{className:`flex items-center justify-between gap-2 px-3 py-2 rounded-md border bg-accent/30 text-sm`,children:[(0,C.jsxs)(`span`,{children:[(0,C.jsx)(`strong`,{children:V.size}),` `,y(`selected`,`selected`),Q.length!==V.size&&(0,C.jsx)(`span`,{className:`text-muted-foreground ml-1`,children:y(`actionableCount`,`({{count}} actionable)`,{count:Q.length})})]}),(0,C.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,C.jsxs)(Se,{children:[(0,C.jsx)(Ne,{asChild:!0,children:(0,C.jsxs)(d,{size:`sm`,disabled:Qt||Q.length===0,children:[(0,C.jsx)(Ye,{className:`h-3.5 w-3.5 mr-1`}),y(`approveN`,`Approve {{count}}`,{count:Q.length||``})]})}),(0,C.jsxs)(me,{children:[(0,C.jsxs)(Ae,{children:[(0,C.jsx)(Oe,{children:y(`bulkApproveTitle`,`Approve {{count}} requests?`,{count:Q.length})}),(0,C.jsx)(Ke,{children:y(`bulkApproveBody`,`Each request is approved with your identity and its flow continues down the approve branch.`)})]}),(0,C.jsxs)(pe,{children:[(0,C.jsx)(ue,{children:y(`cancel`,`Cancel`)}),(0,C.jsx)(Ee,{onClick:()=>wn(`approve`),children:y(`approveN`,`Approve {{count}}`,{count:Q.length})})]})]})]}),(0,C.jsxs)(Se,{children:[(0,C.jsx)(Ne,{asChild:!0,children:(0,C.jsxs)(d,{size:`sm`,variant:`outline`,disabled:Qt||Q.length===0,className:`border-destructive text-destructive hover:bg-destructive hover:text-destructive-foreground`,children:[(0,C.jsx)(_e,{className:`h-3.5 w-3.5 mr-1`}),y(`rejectN`,`Reject {{count}}`,{count:Q.length||``})]})}),(0,C.jsxs)(me,{children:[(0,C.jsxs)(Ae,{children:[(0,C.jsx)(Oe,{children:y(`bulkRejectTitle`,`Reject {{count}} requests?`,{count:Q.length})}),(0,C.jsx)(Ke,{children:y(`bulkRejectBody`,`This rejects the selected requests and notifies their submitters.`)})]}),(0,C.jsxs)(pe,{children:[(0,C.jsx)(ue,{children:y(`cancel`,`Cancel`)}),(0,C.jsx)(Ee,{onClick:()=>wn(`reject`),className:`bg-destructive text-destructive-foreground hover:bg-destructive/90`,children:y(`rejectN`,`Reject {{count}}`,{count:Q.length})})]})]})]}),(0,C.jsx)(d,{size:`sm`,variant:`ghost`,onClick:()=>Zt(new Set),disabled:Qt,children:y(`clear`,`Clear`)})]})]}),k?(0,C.jsxs)(`div`,{className:`space-y-2`,children:[(0,C.jsx)(m,{className:`h-10 w-full`}),(0,C.jsx)(m,{className:`h-10 w-full`}),(0,C.jsx)(m,{className:`h-10 w-full`})]}):O.length===0?(0,C.jsx)(`div`,{className:`flex items-center justify-center min-h-[240px] rounded-md border border-dashed`,children:(0,C.jsxs)(Ie,{children:[(0,C.jsx)(nt,{children:y(`emptyTitle`,`No requests`)}),(0,C.jsx)(Qe,{children:D===`pending`?y(`emptyPending`,`You're all caught up — nothing is waiting on you.`):y(`emptyOther`,`Nothing here yet.`)}),D===`pending`&&(0,C.jsx)(d,{variant:`link`,size:`sm`,className:`mt-1`,onClick:()=>An(`all`),children:y(`emptyViewAll`,`Browse all requests`)})]})}):Y.length===0?(0,C.jsx)(`div`,{className:`flex items-center justify-center min-h-[160px] rounded-md border border-dashed text-sm text-muted-foreground`,children:y(`noMatches`,`No matches for current filters.`)}):(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(ie,{className:`hidden md:block`,children:(0,C.jsx)(Ve,{className:`p-0`,children:(0,C.jsxs)(de,{children:[(0,C.jsx)(je,{children:(0,C.jsxs)(ke,{children:[D===`pending`&&(0,C.jsx)(l,{className:`w-10`,children:(0,C.jsx)(Ue,{checked:xn,onCheckedChange:Sn,"aria-label":y(`selectAll`,`Select all`),disabled:$.length===0})}),(0,C.jsx)(l,{className:`w-[22%]`,children:y(`colRequest`,`Request`)}),(0,C.jsx)(l,{className:`w-[30%]`,children:y(`colRecord`,`Record`)}),(0,C.jsx)(l,{className:`w-[16%]`,children:y(`colRequester`,`Requester`)}),(0,C.jsx)(l,{className:`w-[110px] min-w-[96px] whitespace-nowrap`,children:y(`colStatus`,`Status`)}),(0,C.jsx)(l,{className:`w-[132px]`,children:y(`colWaiting`,`Submitted`)}),(0,C.jsx)(l,{className:`w-20`,"aria-label":y(`colActions`,`Actions`)})]})}),(0,C.jsx)(ge,{children:Y.map((e,t)=>(0,C.jsxs)(ke,{className:f(`group cursor-pointer hover:bg-accent/50`,cn===t&&`ring-2 ring-inset ring-ring bg-accent/30`),onClick:()=>{G(t),q(e.id)},children:[D===`pending`&&(0,C.jsx)(p,{className:`w-10`,onClick:e=>e.stopPropagation(),children:(0,C.jsx)(Ue,{checked:V.has(e.id),onCheckedChange:()=>Cn(e.id),disabled:e.status!==`pending`,"aria-label":y(`selectRow`,`Select request`)})}),(0,C.jsx)(p,{children:(0,C.jsx)(jn,{r:e})}),(0,C.jsx)(p,{children:(0,C.jsx)(Mn,{r:e})}),(0,C.jsx)(p,{children:xt(e)?(0,C.jsxs)(`div`,{className:`flex items-center gap-1.5 text-sm text-muted-foreground`,children:[(0,C.jsx)(Xe,{className:`h-3.5 w-3.5 shrink-0`}),(0,C.jsx)(`span`,{className:`truncate italic`,children:y(`flowOrigin`,`Flow-initiated`)})]}):(0,C.jsxs)(`div`,{className:`flex items-center gap-1.5 text-sm`,children:[(0,C.jsx)(We,{className:`h-3.5 w-3.5 text-muted-foreground shrink-0`}),(0,C.jsx)(`span`,{className:`truncate`,title:e.submitter_id||``,children:_t(e)})]})}),(0,C.jsx)(p,{children:(0,C.jsx)(ft,{status:e.status,label:S(e.status)})}),(0,C.jsxs)(p,{className:f(`text-xs whitespace-nowrap`,Ct(e,b)),title:pt(E(e)),children:[(0,C.jsx)(he,{className:`h-3 w-3 inline mr-1`}),x(E(e)),e.status===`pending`&&(()=>{let t=Tt(e.sla_due_at,b);return t?(0,C.jsx)(`div`,{className:f(`mt-0.5 text-[10px] font-medium`,t.overdue?`text-red-600 dark:text-red-400`:`text-muted-foreground`),children:mt(t)}):null})()]}),(0,C.jsx)(p,{className:`w-20`,children:(0,C.jsx)(Nn,{r:e})})]},e.id))})]})})}),(0,C.jsx)(`div`,{className:`md:hidden space-y-2`,children:Y.map(e=>(0,C.jsx)(ie,{className:`cursor-pointer active:bg-accent/50`,onClick:()=>void q(e.id),children:(0,C.jsxs)(Ve,{className:`p-3 space-y-1.5`,children:[(0,C.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,C.jsx)(`div`,{className:`font-medium text-sm truncate`,children:ht(e)}),(0,C.jsx)(ft,{status:e.status,label:S(e.status)})]}),(0,C.jsxs)(`div`,{className:`text-sm truncate`,children:[e.record_title||T(e.record_id),(0,C.jsx)(`span`,{className:`text-muted-foreground text-xs ml-1.5`,children:St(e)}),(()=>{let t=A(e);return t?(0,C.jsxs)(`span`,{className:`text-xs ml-1.5 font-medium`,title:t.label,children:[`· `,t.display]}):null})()]}),(0,C.jsxs)(`div`,{className:`flex items-center justify-between text-xs text-muted-foreground`,children:[xt(e)?(0,C.jsxs)(`span`,{className:`inline-flex items-center gap-1 truncate italic`,children:[(0,C.jsx)(Xe,{className:`h-3 w-3`}),y(`flowOrigin`,`Flow-initiated`)]}):(0,C.jsxs)(`span`,{className:`inline-flex items-center gap-1 truncate`,children:[(0,C.jsx)(We,{className:`h-3 w-3`}),_t(e)]}),(0,C.jsxs)(`span`,{className:f(`inline-flex items-center gap-1 whitespace-nowrap`,Ct(e,b)),children:[(0,C.jsx)(he,{className:`h-3 w-3`}),x(E(e))]})]}),yn(e)&&(0,C.jsxs)(`div`,{className:`flex gap-2 pt-1`,onClick:e=>e.stopPropagation(),title:Z(e)?y(`needsDecisionInputs`,`This approval collects decision outputs — open it to decide.`):void 0,children:[(0,C.jsxs)(d,{size:`sm`,className:`h-7 flex-1`,disabled:nn===e.id||Z(e),onClick:()=>en(e),children:[(0,C.jsx)(Ye,{className:`h-3.5 w-3.5 mr-1`}),y(`approve`,`Approve`)]}),(0,C.jsxs)(d,{size:`sm`,variant:`outline`,className:`h-7 flex-1 border-destructive text-destructive`,disabled:nn===e.id||Z(e),onClick:()=>tn(e),children:[(0,C.jsx)(_e,{className:`h-3.5 w-3.5 mr-1`}),y(`reject`,`Reject`)]})]})]})},e.id))}),D!==`pending`&&jt!=null&&(0,C.jsxs)(`div`,{className:`flex items-center justify-center gap-3 py-1`,children:[(0,C.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:y(`loadedOf`,`Loaded {{loaded}} of {{total}}`,{loaded:O.length,total:jt})}),O.length<jt&&(0,C.jsx)(d,{size:`sm`,variant:`outline`,disabled:j,onClick:()=>void ln(),children:j?y(`loadingMore`,`Loading…`):y(`loadMore`,`Load more`)})]}),(0,C.jsx)(`div`,{className:`hidden md:block text-[11px] text-muted-foreground`,children:y(`keyboardHint`,`Keyboard: j/k move · Enter open · x select · a approve · r reject`)})]})]})]}),(0,C.jsx)(Se,{open:!!H,onOpenChange:e=>!e&&en(null),children:(0,C.jsxs)(me,{children:[(0,C.jsxs)(Ae,{children:[(0,C.jsx)(Oe,{children:y(`approveOneTitle`,`Approve "{{title}}"?`,{title:H?H.record_title||T(H.record_id):``})}),(0,C.jsx)(Ke,{children:y(`approveOneBody`,`This approves the request with your identity. To add a comment or attachment, open the request instead.`)})]}),(0,C.jsxs)(pe,{children:[(0,C.jsx)(ue,{children:y(`cancel`,`Cancel`)}),(0,C.jsx)(Ee,{onClick:()=>void Tn(),children:y(`approve`,`Approve`)})]})]})}),(0,C.jsx)(Se,{open:!!U,onOpenChange:e=>!e&&tn(null),children:(0,C.jsxs)(me,{children:[(0,C.jsxs)(Ae,{children:[(0,C.jsx)(Oe,{children:y(`rejectOneTitle`,`Reject "{{title}}"?`,{title:U?U.record_title||T(U.record_id):``})}),(0,C.jsx)(Ke,{children:y(`rejectOneBody`,`This rejects the request and notifies the submitter.`)})]}),(0,C.jsxs)(pe,{children:[(0,C.jsx)(ue,{children:y(`cancel`,`Cancel`)}),(0,C.jsx)(Ee,{onClick:()=>void En(),className:`bg-destructive text-destructive-foreground hover:bg-destructive/90`,children:y(`reject`,`Reject`)})]})]})}),(0,C.jsx)(Re,{open:!!N,onOpenChange:e=>!e&&un(),children:(0,C.jsxs)(tt,{className:`w-full sm:max-w-xl overflow-y-auto`,children:[(0,C.jsxs)(oe,{children:[(0,C.jsx)($e,{children:P?ht(P):y(`drawerTitle`,`Approval Request`)}),(0,C.jsx)(be,{children:P?gt(P)||St(P):``})]}),P&&X>=0&&Y.length>1&&(0,C.jsxs)(`div`,{className:`flex items-center justify-between mt-2 text-xs text-muted-foreground`,children:[(0,C.jsxs)(d,{variant:`ghost`,size:`sm`,className:`h-7 px-2`,disabled:X<=0,onClick:()=>{let e=Y[X-1];e&&q(e.id)},children:[(0,C.jsx)(Fe,{className:`h-4 w-4 mr-0.5`}),y(`prevRequest`,`Previous`)]}),(0,C.jsx)(`span`,{children:y(`positionOf`,`Request {{index}} of {{total}}`,{index:X+1,total:Y.length})}),(0,C.jsxs)(d,{variant:`ghost`,size:`sm`,className:`h-7 px-2`,disabled:X>=Y.length-1,onClick:()=>{let e=Y[X+1];e&&q(e.id)},children:[y(`nextRequest`,`Next`),(0,C.jsx)(Be,{className:`h-4 w-4 ml-0.5`})]})]}),Rt?(0,C.jsxs)(`div`,{className:`space-y-2 mt-6`,children:[(0,C.jsx)(m,{className:`h-6 w-3/4`}),(0,C.jsx)(m,{className:`h-6 w-1/2`}),(0,C.jsx)(m,{className:`h-20 w-full`})]}):P?(0,C.jsxs)(`div`,{className:`space-y-4 mt-6`,children:[(0,C.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-xs text-muted-foreground`,children:[(0,C.jsx)(ft,{status:P.status,label:S(P.status)}),(P.round??1)>1&&(0,C.jsx)(c,{variant:`outline`,className:`text-[10px] border-violet-200 text-violet-700 dark:border-violet-500/30 dark:text-violet-400`,children:y(`roundChip`,`Round {{n}}`,{n:P.round})}),(0,C.jsxs)(`span`,{className:`inline-flex items-center gap-1`,title:pt(E(P)),children:[(0,C.jsx)(he,{className:`h-3 w-3`}),y(`submittedAgo`,`Submitted {{when}}`,{when:x(E(P))})]}),P.completed_at&&(0,C.jsxs)(`span`,{children:[`· `,y(`completedAt`,`Completed {{when}}`,{when:x(P.completed_at)})]}),P.status===`pending`&&(()=>{let e=Tt(P.sla_due_at,b);return e?(0,C.jsx)(c,{variant:`outline`,className:f(`text-[10px]`,e.overdue?`border-red-200 bg-red-50 text-red-700 dark:border-red-500/30 dark:bg-red-500/10 dark:text-red-400`:`border-border text-muted-foreground`),children:mt(e)}):null})()]}),(()=>{let e=A(P),n=Ot(P.payload,P.payload_display,P.payload_labels,6,e?.key);return(0,C.jsx)(ie,{children:(0,C.jsxs)(Ve,{className:`p-4 space-y-3`,children:[(0,C.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,C.jsxs)(`div`,{className:`min-w-0`,children:[Bt.isUnreadable(P)?(0,C.jsx)(`div`,{className:`text-base font-semibold truncate`,children:P.record_title||T(P.record_id)}):(0,C.jsxs)(t,{to:yt(P),className:`text-base font-semibold hover:underline inline-flex items-center gap-1.5`,children:[(0,C.jsx)(`span`,{className:`truncate`,children:P.record_title||T(P.record_id)}),(0,C.jsx)(ce,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground`})]}),(0,C.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:St(P)})]}),(0,C.jsx)(`div`,{className:`text-right text-xs text-muted-foreground shrink-0`,children:(0,C.jsx)(`div`,{className:`inline-flex items-center gap-1`,children:xt(P)?(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(Xe,{className:`h-3 w-3`}),(0,C.jsx)(`span`,{className:`italic`,children:y(`flowOrigin`,`Flow-initiated`)})]}):(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(We,{className:`h-3 w-3`}),(0,C.jsx)(`span`,{title:P.submitter_id||``,children:_t(P)})]})})})]}),e&&(0,C.jsxs)(`div`,{className:`border-t pt-3`,children:[(0,C.jsx)(`div`,{className:`text-[11px] text-muted-foreground`,children:e.label}),(0,C.jsx)(`div`,{className:`text-xl font-semibold tabular-nums`,title:e.display,children:e.display})]}),n.length>0&&(0,C.jsx)(`div`,{className:f(`grid grid-cols-2 gap-x-4 gap-y-2 text-sm`,!e&&`border-t pt-3`),children:n.map(([e,t])=>(0,C.jsxs)(`div`,{className:`min-w-0`,children:[(0,C.jsx)(`div`,{className:`text-[11px] text-muted-foreground`,children:e}),(0,C.jsx)(`div`,{className:`truncate`,title:t,children:t})]},e))}),P.decision_progress&&(()=>{let e=P.decision_progress,t=(P.pending_approvers||[]).length;return(0,C.jsxs)(`div`,{className:`border-t pt-3`,children:[(0,C.jsxs)(`div`,{className:`flex items-baseline justify-between gap-2 mb-1.5`,children:[(0,C.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:e.behavior===`per_group`?y(`progressGroups`,`Sign-off progress — {{got}} of {{need}} groups`,{got:e.got,need:e.need}):y(`progressApprovals`,`Approvals — {{got}} of {{need}}`,{got:e.got,need:e.need})}),e.behavior!==`per_group`&&P.status===`pending`&&t>0&&(0,C.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:y(`progressEligible`,`{{count}} eligible approver(s)`,{count:t})})]}),(0,C.jsx)(`div`,{role:`progressbar`,"aria-valuemin":0,"aria-valuemax":e.need,"aria-valuenow":Math.min(e.got,e.need),"aria-label":y(`progressBar`,`Decision progress`),className:`flex gap-1`,children:e.need>0&&e.need<=12?Array.from({length:e.need}).map((t,n)=>(0,C.jsx)(`div`,{className:f(`h-1.5 flex-1 rounded-full`,n<e.got?`bg-emerald-500`:`bg-muted`)},n)):(0,C.jsx)(`div`,{className:`h-1.5 flex-1 rounded-full bg-muted overflow-hidden`,children:(0,C.jsx)(`div`,{className:`h-full rounded-full bg-emerald-500`,style:{width:`${e.need>0?Math.min(100,e.got/e.need*100):0}%`}})})}),e.groups&&(0,C.jsx)(`div`,{className:`flex flex-wrap gap-1 mt-2`,children:e.groups.map(e=>(0,C.jsxs)(c,{variant:`outline`,className:f(`text-[11px] gap-1`,e.satisfied?`border-emerald-300 text-emerald-700 dark:border-emerald-700 dark:text-emerald-400`:`text-muted-foreground`),title:`${e.got}/${e.need}`,children:[e.satisfied?(0,C.jsx)(rt,{className:`h-3 w-3`}):(0,C.jsx)(Pe,{className:`h-2.5 w-2.5`}),e.group,` `,e.got,`/`,e.need]},e.group))})]})})(),P.status===`pending`&&(P.pending_approvers||[]).length>0&&(0,C.jsxs)(`div`,{className:`border-t pt-3`,children:[(0,C.jsx)(`div`,{className:`text-[11px] text-muted-foreground mb-1`,children:y(`waitingOn`,`Waiting on`)}),(0,C.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:bt(P).map((e,t)=>(0,C.jsxs)(c,{variant:`outline`,className:`text-[11px]`,title:e.title,children:[e.label,e.group&&(0,C.jsxs)(`span`,{className:`ml-1 text-muted-foreground`,children:[`· `,e.group]}),e.count>1&&(0,C.jsxs)(`span`,{className:`ml-1 text-muted-foreground`,children:[`×`,e.count]})]},`${e.label}-${e.group??``}-${t}`))})]})]})})})(),(P.flow_steps?.length??0)>1&&(0,C.jsx)(`div`,{className:`flex items-center px-1`,"aria-label":y(`stepProgress`,`Approval steps`),children:P.flow_steps.map((e,t)=>(0,C.jsxs)(g.Fragment,{children:[t>0&&(0,C.jsx)(`div`,{className:f(`h-px flex-1 mx-2`,e.state===`done`||e.state===`current`?`bg-emerald-300 dark:bg-emerald-700`:`bg-border`)}),(0,C.jsxs)(`div`,{className:`flex items-center gap-1.5 shrink-0`,children:[(0,C.jsx)(`span`,{className:f(`flex items-center justify-center h-5 w-5 rounded-full text-[10px] font-semibold`,e.state===`done`&&`bg-emerald-500 text-white`,e.state===`current`&&`bg-amber-500 text-white ring-2 ring-amber-200 dark:ring-amber-500/30`,e.state===`upcoming`&&`bg-muted text-muted-foreground border`),children:e.state===`done`?(0,C.jsx)(rt,{className:`h-3 w-3`}):t+1}),(0,C.jsx)(`span`,{className:f(`text-xs`,e.state===`current`?`font-medium`:`text-muted-foreground`),children:e.label})]})]},e.id))}),(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`h3`,{className:`text-sm font-semibold mb-3`,children:y(`history`,`Activity`)}),Lt.length===0?(0,C.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:y(`noActions`,`No actions yet.`)}):(0,C.jsx)(`ol`,{className:`relative space-y-3 pl-5 before:absolute before:left-[7px] before:top-1 before:bottom-1 before:w-px before:bg-border`,children:Lt.map(e=>{let t=ot(e),n=t?`bg-amber-500`:e.action===`approve`?`bg-emerald-500`:e.action===`reject`?`bg-destructive`:e.action===`submit`?`bg-blue-500`:e.action===`reassign`?`bg-indigo-500`:e.action===`remind`||e.action===`request_info`?`bg-amber-500`:e.action===`comment`?`bg-slate-400`:e.action===`escalate`?`bg-red-500`:e.action===`revise`?`bg-violet-500`:e.action===`resubmit`?`bg-blue-500`:`bg-muted-foreground`,r=e.actor_id===`system:sla`?y(`systemSlaActor`,`System (SLA)`):e.actor_name??(e.actor_id&&e.actor_id===P.submitter_id?_t(P):T(e.actor_id)),i=e.action===`submit`?y(`actSubmit`,`Submitted`):e.action===`approve`?y(`actApprove`,`Approved`):e.action===`reject`?y(`actReject`,`Rejected`):e.action===`recall`?y(`actRecall`,`Recalled`):e.action===`reassign`?y(`actReassign`,`Reassigned`):e.action===`remind`?y(`actRemind`,`Reminder sent`):e.action===`request_info`?y(`actRequestInfo`,`Requested more info`):e.action===`comment`?y(`actComment`,`Commented`):e.action===`escalate`?y(`actEscalate`,`SLA escalated`):e.action===`revise`?y(`actRevise`,`Sent back for revision`):e.action===`resubmit`?y(`actResubmit`,`Resubmitted`):e.action;return(0,C.jsxs)(`li`,{className:`relative text-xs`,children:[(0,C.jsx)(`span`,{className:`absolute -left-[18px] top-1 h-3 w-3 rounded-full ring-2 ring-background ${n}`,"aria-hidden":!0}),(0,C.jsxs)(`div`,{className:`flex items-baseline gap-1.5 flex-wrap`,children:[(0,C.jsx)(`span`,{className:`font-medium`,children:i}),(0,C.jsx)(`span`,{className:`text-muted-foreground`,children:`·`}),(0,C.jsx)(`span`,{title:e.actor_id||``,children:r}),t&&(0,C.jsxs)(c,{variant:`outline`,className:`gap-1 border-amber-500/60 px-1.5 py-0 text-[10px] font-medium text-amber-700 dark:text-amber-400`,title:y(`viaOverrideHint`,`The actor held no approver slot on this step — admitted by the admin-override path.`),"data-testid":`via-override-chip`,children:[(0,C.jsx)(qe,{className:`h-3 w-3`,"aria-hidden":!0}),y(`viaOverrideChip`,`Admin override`)]}),(0,C.jsx)(`span`,{className:`ml-auto text-muted-foreground text-[10px]`,title:pt(e.created_at),children:x(e.created_at)})]}),(()=>{let t=e;return e.action!==`reassign`||!t.reassign_from&&!t.reassign_to?null:(0,C.jsx)(`div`,{className:`text-muted-foreground mt-0.5`,children:y(`reassignFromTo`,`from {{from}} to {{to}}`,{from:t.reassign_from_name??T(t.reassign_from),to:t.reassign_to_name??T(t.reassign_to)})})})(),e.comment&&(0,C.jsxs)(`div`,{className:`text-muted-foreground italic mt-0.5`,children:[`"`,e.comment,`"`]}),Array.isArray(e.attachments)&&e.attachments.length>0&&(0,C.jsx)(`div`,{className:`flex flex-wrap gap-1.5 mt-1`,children:e.attachments.map((t,n)=>(0,C.jsxs)(`button`,{type:`button`,onClick:()=>void Ht(t),className:`inline-flex items-center gap-1 text-[11px] px-2 py-0.5 rounded-full border text-muted-foreground hover:text-foreground hover:bg-accent transition-colors`,title:t.name||t.id,children:[(0,C.jsx)(it,{className:`h-3 w-3`}),t.name||`${y(`attachmentChip`,`Attachment`)}${e.attachments.length>1?` ${n+1}`:``}`]},t.id||n))})]},e.id)})}),P.status===`pending`&&(mn||hn)&&(0,C.jsxs)(`div`,{className:`flex items-center gap-2 mt-3`,children:[(0,C.jsx)(ve,{value:W,onChange:e=>an(e.target.value),onKeyDown:e=>{e.key===`Enter`&&W.trim()&&(e.preventDefault(),pn())},placeholder:y(`replyPlaceholder`,`Reply on this request…`),className:`h-8 text-sm`}),(0,C.jsx)(d,{size:`sm`,variant:`outline`,className:`h-8 px-2 shrink-0`,disabled:!W.trim()||on,onClick:()=>void pn(),children:(0,C.jsx)(Je,{className:`h-3.5 w-3.5`})})]})]}),P.payload!=null&&(0,C.jsxs)(`details`,{className:`group`,children:[(0,C.jsx)(`summary`,{className:`cursor-pointer text-xs text-muted-foreground hover:text-foreground select-none`,children:y(`rawData`,`Raw data (JSON)`)}),(0,C.jsxs)(`div`,{className:`mt-2`,children:[(0,C.jsx)(`div`,{className:`flex justify-end`,children:(0,C.jsxs)(`button`,{type:`button`,onClick:async()=>{try{await navigator.clipboard.writeText(JSON.stringify(P.payload,null,2)),h.success(y(`copied`,`Copied`))}catch{h.error(y(`copyFailed`,`Copy failed`))}},className:`text-[10px] text-muted-foreground hover:text-foreground inline-flex items-center gap-1`,children:[(0,C.jsx)(ye,{className:`h-3 w-3`}),y(`copy`,`Copy`)]})}),(0,C.jsx)(`pre`,{className:`text-[11px] bg-muted/50 rounded p-2 overflow-auto max-h-48 mt-1`,children:JSON.stringify(P.payload,null,2)})]})]}),P.status===`pending`&&(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(xe,{}),(0,C.jsxs)(`div`,{className:`space-y-3`,children:[(0,C.jsx)(at,{objectName:`sys_approval_request`,record:P,location:`record_section`,label:y(`declaredActions`,`Actions`),onDone:()=>{fn()}}),!mn&&(0,C.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:hn?y(`whyDisabledSubmitter`,`You submitted this request, so you can recall it — but only the assigned approvers can approve or reject.`):y(`whyDisabled`,`Only the assigned approvers can act on this request. It is waiting on: {{who}}.`,{who:(P.pending_approvers||[]).map(e=>vt(e,P)).join(`, `)||`—`})})]})]}),gn&&(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(xe,{}),(0,C.jsxs)(`div`,{className:`space-y-3`,children:[(0,C.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:y(`returnedHint`,`An approver sent this back to you. The record is unlocked — fix the data, then resubmit to start a new approval round.`)}),(0,C.jsxs)(`div`,{className:`flex gap-2 flex-wrap items-center`,children:[(0,C.jsx)(d,{asChild:!0,size:`sm`,variant:`outline`,children:(0,C.jsxs)(t,{to:yt(P),children:[(0,C.jsx)(ce,{className:`h-4 w-4 mr-1`}),y(`editRecordBtn`,`Edit record`)]})}),(0,C.jsx)(at,{objectName:`sys_approval_request`,record:P,location:`record_section`,onDone:()=>{dn(P.id),K()}})]})]})]})]}):null]})})]})}export{j as ApprovalsInboxPage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{b as t,r as n}from"./vendor-react-CsWFRkED.js";import{A as r}from"./framework-LCCQTTcs.js";import{Ao as i,Co as a,Cr as o,Dc as s,Ho as c,Ji as l,Ki as u,Ks as d,Qr as f,Rn as p,Sr as m,Tr as h,br as g,ho as _,kc as v,ol as y,uc as ee,wr as b,xr as x}from"./ui-components-3mb69z8L.js";import{n as S}from"./createDerive-xZXxMz1g.js";import{a as C,i as te,n as w,o as T,r as E,s as D,t as O}from"./plugin-view-B9yCVdSX.js";var k=e(t(),1),A=n();function j({title:e,description:t,icon:n,actions:r,accentColor:i,sticky:a=!1,className:o,"data-testid":s}){return(0,A.jsxs)(`div`,{style:{"--page-header-accent":i||`hsl(var(--primary))`},className:y(`relative shrink-0 border-b bg-background z-10`,a&&`sticky top-0 bg-background/85 backdrop-blur supports-[backdrop-filter]:bg-background/75`,o),"data-testid":s??`page-header`,children:[(0,A.jsx)(`div`,{"aria-hidden":!0,className:`pointer-events-none absolute inset-x-0 top-0 h-[2px] opacity-80`,style:{background:`linear-gradient(90deg, transparent, var(--page-header-accent), transparent)`}}),(0,A.jsxs)(`div`,{className:`flex justify-between items-center gap-3 py-2.5 sm:py-3 px-4 sm:px-6`,children:[(0,A.jsxs)(`div`,{className:`flex items-center gap-3 min-w-0 flex-1`,children:[n&&(0,A.jsx)(`div`,{className:y(`shrink-0 inline-flex items-center justify-center rounded-lg`,`h-9 w-9 sm:h-10 sm:w-10`,`[&_svg]:h-[18px] [&_svg]:w-[18px] sm:[&_svg]:h-5 sm:[&_svg]:w-5`),style:{color:`var(--page-header-accent)`,background:`linear-gradient(135deg, color-mix(in srgb, var(--page-header-accent) 18%, transparent), color-mix(in srgb, var(--page-header-accent) 6%, transparent))`,boxShadow:`inset 0 0 0 1px color-mix(in srgb, var(--page-header-accent) 22%, transparent)`},children:n}),(0,A.jsxs)(`div`,{className:`min-w-0`,children:[(0,A.jsx)(`h1`,{className:`text-base sm:text-lg lg:text-xl font-semibold tracking-tight text-foreground truncate leading-tight`,children:e}),t&&(0,A.jsx)(`p`,{className:`text-xs sm:text-sm text-muted-foreground truncate hidden sm:block max-w-xl mt-0.5`,children:t})]})]}),r&&(0,A.jsx)(`div`,{className:`flex items-center gap-1.5 sm:gap-2 shrink-0`,children:r})]})]})}function M(e){return[{type:`grid`,icon:i,label:e(`console.objectView.viewTypeGrid`),description:e(`console.objectView.viewTypeGridDesc`)},{type:`kanban`,icon:u,label:e(`console.objectView.viewTypeKanban`),description:e(`console.objectView.viewTypeKanbanDesc`)},{type:`calendar`,icon:v,label:e(`console.objectView.viewTypeCalendar`),description:e(`console.objectView.viewTypeCalendarDesc`)},{type:`gallery`,icon:c,label:e(`console.objectView.viewTypeGallery`),description:e(`console.objectView.viewTypeGalleryDesc`)},{type:`timeline`,icon:d,label:e(`console.objectView.viewTypeTimeline`),description:e(`console.objectView.viewTypeTimelineDesc`)},{type:`gantt`,icon:l,label:e(`console.objectView.viewTypeGantt`),description:e(`console.objectView.viewTypeGanttDesc`)},{type:`map`,icon:_,label:e(`console.objectView.viewTypeMap`),description:e(`console.objectView.viewTypeMapDesc`)},{type:`chart`,icon:s,label:e(`console.objectView.viewTypeChart`),description:e(`console.objectView.viewTypeChartDesc`)},{type:`tree`,icon:a,label:e(`console.objectView.viewTypeTree`),description:e(`console.objectView.viewTypeTreeDesc`)}]}function N(e,t){for(let n=1;n<1e3;n++){let r=`${e} ${n}`;if(!t.has(r))return r}return e}var P={kanban:[{key:`groupByField`,i18nKey:`console.objectView.groupByField`,helpI18nKey:`console.objectView.groupByFieldHelp`,filter:e=>e.type===`select`||e.type===`boolean`,preferred:w}],calendar:[{key:`startDateField`,i18nKey:`console.objectView.startDateField`,helpI18nKey:`console.objectView.startDateFieldHelp`,filter:e=>e.type===`date`,preferred:E},{key:`titleField`,i18nKey:`console.objectView.titleField`,helpI18nKey:`console.objectView.titleFieldHelp`,filter:e=>e.type===`text`}],timeline:[{key:`startDateField`,i18nKey:`console.objectView.startDateField`,helpI18nKey:`console.objectView.timelineDateFieldHelp`,filter:e=>e.type===`date`,preferred:E},{key:`titleField`,i18nKey:`console.objectView.titleField`,helpI18nKey:`console.objectView.titleFieldHelp`,filter:e=>e.type===`text`}],gantt:[{key:`startDateField`,i18nKey:`console.objectView.startDateField`,helpI18nKey:`console.objectView.ganttStartDateFieldHelp`,filter:e=>e.type===`date`,preferred:E},{key:`endDateField`,i18nKey:`console.objectView.endDateField`,helpI18nKey:`console.objectView.ganttEndDateFieldHelp`,filter:e=>e.type===`date`,preferred:O},{key:`titleField`,i18nKey:`console.objectView.titleField`,helpI18nKey:`console.objectView.titleFieldHelp`,filter:e=>e.type===`text`}],gallery:[{key:`coverField`,i18nKey:`console.objectView.imageField`,helpI18nKey:`console.objectView.imageFieldHelp`,filter:e=>T(e)}],map:[{key:`latitudeField`,i18nKey:`console.objectView.latitudeField`,helpI18nKey:`console.objectView.latitudeFieldHelp`,filter:e=>e.type===`number`&&C(e,`latitude`)},{key:`longitudeField`,i18nKey:`console.objectView.longitudeField`,helpI18nKey:`console.objectView.longitudeFieldHelp`,filter:e=>e.type===`number`&&C(e,`longitude`)}],chart:[{key:`chartType`,i18nKey:`console.objectView.chartType`,helpI18nKey:`console.objectView.chartTypeHelp`,kind:`enum`,enumOptions:[{value:`bar`,i18nKey:`console.objectView.chartTypeBar`},{value:`line`,i18nKey:`console.objectView.chartTypeLine`},{value:`pie`,i18nKey:`console.objectView.chartTypePie`},{value:`area`,i18nKey:`console.objectView.chartTypeArea`},{value:`scatter`,i18nKey:`console.objectView.chartTypeScatter`}],defaultValue:`bar`},{key:`xAxisField`,i18nKey:`console.objectView.xAxisField`,helpI18nKey:`console.objectView.xAxisFieldHelp`,filter:e=>e.type===`select`||e.type===`boolean`||e.type===`date`||e.type===`text`,preferred:w},{key:`yAxisFields`,i18nKey:`console.objectView.yAxisField`,helpI18nKey:`console.objectView.yAxisFieldHelp`,filter:e=>e.type===`number`}],tree:[{key:`parentField`,i18nKey:`console.objectView.parentField`,helpI18nKey:`console.objectView.parentFieldHelp`,filter:e=>e.rawType===`tree`||e.rawType===`lookup`||e.rawType===`master_detail`}]};function F({open:e,onOpenChange:t,onCreate:n,existingLabels:i,availableTypes:a,objectDef:s}){let{t:c}=r(),l=(0,k.useMemo)(()=>M(c),[c]),u=(0,k.useMemo)(()=>a&&a.length>0?l.filter(e=>a.includes(e.type)):l,[l,a]),d=(i??[]).join(`\0`),_=(0,k.useMemo)(()=>new Set(i??[]),[d]),v=(0,k.useMemo)(()=>s?te(s):[],[s]),[C,w]=(0,k.useState)(u[0]?.type??`grid`),[T,E]=(0,k.useState)(``),[O,j]=(0,k.useState)(!1),[F,I]=(0,k.useState)(``),[L,R]=(0,k.useState)(!1),[ne,z]=(0,k.useState)({});(0,k.useEffect)(()=>{e&&(w(u[0]?.type??`grid`),j(!1),R(!1),z({}))},[e,u]),(0,k.useEffect)(()=>{if(!O){let e=u.find(e=>e.type===C);E(N(e?.label??`View`,_))}},[C,O,u,_]),(0,k.useEffect)(()=>{L||I(S(T))},[T,L]);let B=P[C]??[],V=e=>e.kind===`enum`?(e.enumOptions?.length??0)>0:!s||(e.filter?v.filter(e.filter):v).length>0,H=(0,k.useMemo)(()=>{let e={};return u.forEach(t=>{let n=(P[t.type]??[]).find(e=>!V(e));e[t.type]=n??null}),e},[u,v,s]),U=e=>ne[`${C}.${e}`]??``,W=(e,t)=>z(n=>({...n,[`${C}.${e}`]:t})),G=T.trim(),K=G.length>0&&_.has(G),q=B.every(e=>U(e.key).length>0),J=/^[a-z_][a-z0-9_]*$/,Y=F.trim(),X=Y.length===0,Z=Y.length>0&&!J.test(Y),Q=G.length>0&&!K&&q&&!X&&!Z;(0,k.useEffect)(()=>{B.length!==0&&B.forEach(e=>{if(U(e.key).length>0)return;if(e.kind===`enum`){e.defaultValue&&W(e.key,e.defaultValue);return}let t=e.filter?v.filter(e.filter):v;if(t.length===0)return;if(t.length===1){W(e.key,t[0].value);return}let n=D(t,e.preferred??[]);n&&W(e.key,n)})},[C,v]);let $=()=>{if(!Q)return;let e={};B.forEach(t=>{let n=U(t.key);n&&(e[t.key]=t.key===`yAxisFields`?[n]:n)});let r={type:C,label:G,name:Y};Object.keys(e).length>0&&(r[C]=e),n(r),t(!1)};return(0,A.jsx)(g,{open:e,onOpenChange:t,children:(0,A.jsxs)(x,{className:`sm:max-w-[560px]`,"data-testid":`create-view-dialog`,children:[(0,A.jsxs)(b,{children:[(0,A.jsx)(h,{children:c(`console.objectView.createView`)}),(0,A.jsx)(m,{children:c(`console.objectView.createViewDesc`)})]}),(0,A.jsx)(`div`,{className:`grid grid-cols-4 gap-2 py-2`,"data-testid":`create-view-type-grid`,children:u.map(({type:e,label:t,description:n,icon:r})=>{let i=e===C,a=H[e],o=!!a,s=o?c(`console.objectView.viewTypeUnavailable`,{field:c(a.i18nKey)}):void 0;return(0,A.jsxs)(`button`,{type:`button`,"data-testid":`create-view-type-${e}`,"aria-pressed":i,"aria-disabled":o,disabled:o,title:s,onClick:()=>{o||w(e)},className:y(`group flex flex-col items-start gap-1 rounded-lg border bg-background p-3 text-left transition-colors`,!o&&`hover:border-primary/60 hover:bg-accent/40`,i&&!o?`border-primary ring-2 ring-primary/30 bg-accent/40`:`border-border`,o&&`opacity-50 cursor-not-allowed`),children:[(0,A.jsx)(r,{className:y(`h-5 w-5`,i&&!o?`text-primary`:`text-muted-foreground group-hover:text-foreground`)}),(0,A.jsx)(`div`,{className:`text-xs font-medium leading-tight`,children:t}),(0,A.jsx)(`div`,{className:`text-[10px] leading-tight text-muted-foreground line-clamp-2`,children:o?c(`console.objectView.viewTypeUnavailableShort`):n})]},e)})}),B.length>0&&(0,A.jsx)(`div`,{className:`space-y-3 rounded-md border border-dashed bg-muted/30 p-3`,"data-testid":`create-view-required-fields`,children:B.map(e=>{let t=U(e.key),n=e.kind===`enum`,r=n?[]:e.filter?v.filter(e.filter):v,i=!n&&v.length>0&&r.length===0;return(0,A.jsxs)(`div`,{className:`space-y-1`,children:[(0,A.jsxs)(`label`,{htmlFor:`create-view-required-${e.key}`,className:`text-xs font-medium`,children:[c(e.i18nKey),(0,A.jsx)(`span`,{className:`ml-1 text-destructive`,"aria-hidden":`true`,children:`*`})]}),(0,A.jsxs)(`select`,{id:`create-view-required-${e.key}`,"aria-required":`true`,"data-testid":`create-view-required-${e.key}`,value:t,onChange:t=>W(e.key,t.target.value),disabled:i,className:y(`h-9 w-full rounded-md border bg-background px-2 text-xs`,`border-input`),children:[(0,A.jsx)(`option`,{value:``,children:c(n?`console.objectView.selectOption`:`console.objectView.selectField`)}),n?e.enumOptions.map(e=>(0,A.jsx)(`option`,{value:e.value,children:c(e.i18nKey)},e.value)):r.map(e=>(0,A.jsx)(`option`,{value:e.value,children:e.label},e.value))]}),e.helpI18nKey&&!i&&(0,A.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:c(e.helpI18nKey)}),i&&(0,A.jsxs)(`p`,{className:`flex items-center gap-1 text-[11px] text-destructive`,"data-testid":`create-view-error-no-field-${e.key}`,children:[(0,A.jsx)(ee,{className:`h-3 w-3`}),c(`console.objectView.noEligibleFieldForType`)]})]},e.key)})}),(0,A.jsxs)(`div`,{className:`space-y-1`,children:[(0,A.jsxs)(`label`,{htmlFor:`create-view-name-input`,className:`text-xs font-medium`,children:[c(`console.objectView.title`),(0,A.jsx)(`span`,{className:`ml-1 text-destructive`,"aria-hidden":`true`,children:`*`})]}),(0,A.jsx)(p,{id:`create-view-name-input`,"aria-required":`true`,"data-testid":`create-view-name-input`,autoFocus:!0,value:T,onChange:e=>{E(e.target.value),j(!0)},onKeyDown:e=>{e.key===`Enter`&&Q&&$()},placeholder:c(`console.objectView.newView`),className:`h-9`}),K&&(0,A.jsx)(`p`,{className:`text-[11px] text-destructive`,"data-testid":`create-view-error-duplicate`,children:c(`console.objectView.duplicateViewName`)})]}),(0,A.jsxs)(`div`,{className:`space-y-1`,children:[(0,A.jsxs)(`label`,{htmlFor:`create-view-machine-name-input`,className:`text-xs font-medium`,children:[c(`console.objectView.viewName`),(0,A.jsx)(`span`,{className:`ml-1 text-destructive`,"aria-hidden":`true`,children:`*`})]}),(0,A.jsx)(p,{id:`create-view-machine-name-input`,"aria-required":`true`,"data-testid":`create-view-machine-name-input`,value:F,onChange:e=>{I(e.target.value),R(!0)},onKeyDown:e=>{e.key===`Enter`&&Q&&$()},placeholder:`grid_1`,className:`h-9 font-mono`}),X?(0,A.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,"data-testid":`create-view-machine-name-help`,children:c(`console.objectView.viewNameRequired`)}):Z?(0,A.jsx)(`p`,{className:`text-[11px] text-destructive`,"data-testid":`create-view-error-machine-name`,children:c(`console.objectView.viewNameInvalid`)}):(0,A.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,"data-testid":`create-view-machine-name-help`,children:c(`console.objectView.viewNameHelp`)})]}),(0,A.jsxs)(o,{className:`mt-2`,children:[(0,A.jsx)(f,{type:`button`,variant:`outline`,onClick:()=>t(!1),"data-testid":`create-view-cancel`,children:c(`console.objectView.cancel`)}),(0,A.jsx)(f,{type:`button`,disabled:!Q,onClick:$,"data-testid":`create-view-submit`,children:c(`console.objectView.create`)})]})]})})}export{j as n,F as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{b as n,h as r,r as i}from"./vendor-react-CsWFRkED.js";import{A as a,G as o,at as s,it as c,w as l}from"./framework-LCCQTTcs.js";import{_t as u,jo as d,vt as f,xt as p}from"./ui-components-3mb69z8L.js";import{r as m}from"./vendor-ui-utils-BFw4cGI6.js";import"./AdapterProvider-3zTVoQKF.js";import"./MetadataProvider-DwMR1SMR.js";import{r as h}from"./ExpressionProvider-X1OAB_O-.js";import{t as g}from"./useActionModal-Z2yDiihK.js";import{t as _}from"./utils-CJ4UwXMF.js";import{t as v}from"./preferLocal-CKqyhTP9.js";import{n as y,t as b}from"./MetadataInspector-CNeJqkLQ.js";import{n as x}from"./skeletons-DVwGbFUS.js";import{n as S}from"./plugin-dashboard-C8Ohdrxi.js";import{t as C}from"./useOpenRecordList-DOZu_JZX.js";var w=t({DashboardView:()=>D}),T=e(n(),1),E=i();function D({dataSource:e}){let t=C(),{dashboardName:n}=r(),{showDebug:i}=y(),w=c(),{t:D}=a(),{dashboardLabel:O,dashboardDescription:k}=l(),[A,j]=(0,T.useState)(!0),{modalHandler:M,modalElement:N}=g(w),P=(0,T.useMemo)(()=>({export_dashboard_pdf:async()=>{m.info(D(`dashboardActions.printDialogOpening`));try{return window.print(),{success:!0}}catch(e){return m.error(D(`dashboardActions.exportFailed`,{message:e?.message||String(e)})),{success:!1,error:e?.message||String(e)}}},forecast_dashboard:async()=>(m.info(D(`dashboardActions.forecastSoon`)),{success:!0})}),[D]);(0,T.useEffect)(()=>{j(!0),queueMicrotask(()=>j(!1))},[n]);let{dashboards:F,objects:I}=s(),{app:L}=h(),R=v(F,n,L?._packageId),z=(0,T.useMemo)(()=>new Set((I||[]).map(e=>e?.name).filter(Boolean)),[I]),B=(0,T.useMemo)(()=>{if(!R||z.size===0)return R;let e=R.widgets;if(!Array.isArray(e)||e.length===0)return R;let t=e.filter(e=>{let t=e?.requiresObject??e?.object;return!t||z.has(t)});return t.length===e.length?R:{...R,widgets:t}},[R,z]);return A?(0,E.jsx)(x,{}):R?(0,E.jsxs)(`div`,{className:`flex flex-col h-full overflow-hidden bg-background`,children:[(0,E.jsx)(`div`,{className:`flex flex-col sm:flex-row justify-between sm:items-center gap-3 sm:gap-4 p-4 sm:p-6 border-b shrink-0`,children:(0,E.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(()=>{let e=_((B||R).title,D),t=_(R.label,D),n=O({name:R.name,label:t}),r=e||n||R.name;return(0,E.jsx)(`h1`,{className:`text-lg sm:text-xl md:text-2xl font-bold tracking-tight truncate`,children:r})})(),(()=>{let e=(B||R).description??R.description,t=k({name:R.name,description:_(e,D)});return t?(0,E.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1 line-clamp-2`,children:t}):null})()]})}),(0,E.jsxs)(`div`,{className:`flex-1 overflow-hidden flex flex-col sm:flex-row relative`,children:[(0,E.jsx)(`div`,{className:`flex-1 min-w-0 overflow-auto p-2 sm:p-4 md:p-6`,children:(0,E.jsx)(o,{value:{openRecordList:t},children:(0,E.jsx)(S,{schema:B,dataSource:e,modalHandler:M,scriptHandlers:P,hideHeaderText:!0})})}),(0,E.jsx)(b,{open:i,sections:[{title:`Dashboard Configuration`,data:B}]})]}),N]}):(0,E.jsx)(`div`,{className:`h-full flex items-center justify-center p-8`,children:(0,E.jsxs)(u,{children:[(0,E.jsx)(`div`,{className:`mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-muted`,children:(0,E.jsx)(d,{className:`h-6 w-6 text-muted-foreground`})}),(0,E.jsx)(p,{children:D(`empty.dashboardNotFound`)}),(0,E.jsx)(f,{children:D(`empty.dashboardNotFoundDescription`,{name:n})})]})})}export{w as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{b as t,r as n}from"./vendor-react-CsWFRkED.js";import{jt as r,yr as i}from"./framework-LCCQTTcs.js";var a=e(t(),1),o=n(),s=(0,a.createContext)(null);function c({children:e,user:t={},app:n={},data:c={},features:l={}}){let u=(0,a.useMemo)(()=>({user:t,app:n,data:c,features:l,evaluator:new i({current_user:t,user:t,ctx:{user:t},os:{user:t},app:n,data:c,features:l})}),[t,n,c,l]),d=(0,a.useMemo)(()=>({current_user:t,user:t,ctx:{user:t},os:{user:t},app:n,data:c,features:l}),[t,n,c,l]);return(0,o.jsx)(s.Provider,{value:u,children:(0,o.jsx)(r,{scope:d,children:e})})}function l(){let e=(0,a.useContext)(s);if(!e){let e={user:{},app:{},data:{},features:{}},t={current_user:{},ctx:{user:{}},os:{user:{}},...e};return{...e,evaluator:new i(t)}}return e}function u(e,t){if(e==null||e===!0||e===`true`)return!0;if(e===!1||e===`false`)return!1;try{return t.evaluateCondition(e)}catch{return!0}}export{u as n,l as r,c as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{b as t,r as n}from"./vendor-react-CsWFRkED.js";import{x as r}from"./infrastructure-CerjT_c2.js";import{at as i,it as a}from"./framework-LCCQTTcs.js";import{Ar as o,Bt as s,Cn as c,Gt as l,Hn as u,Ir as d,Jt as f,Ks as p,Kt as m,Ma as h,Mr as g,Nr as _,Pr as v,Qr as y,Qs as b,Rn as x,Sn as S,Xt as C,Yt as w,Zt as T,bn as E,jn as D,jr as O,qt as k,sc as A,si as j,uc as M,vn as N,wn as P,xa as F,xn as I,xo as L}from"./ui-components-3mb69z8L.js";import"./src-Ctj_ivDh.js";import{k as R}from"./RecordDetailView-uf81gH3J.js";var z=e(t(),1),B=n();function V({status:e}){let t={success:{icon:A,cls:`text-emerald-600 border-emerald-300`},completed:{icon:A,cls:`text-emerald-600 border-emerald-300`},failed:{icon:b,cls:`text-red-600 border-red-300`},error:{icon:b,cls:`text-red-600 border-red-300`},running:{icon:L,cls:`text-blue-600 border-blue-300 animate-pulse`},pending:{icon:p,cls:`text-amber-600 border-amber-300`},paused:{icon:p,cls:`text-amber-600 border-amber-300`},skipped:{icon:M,cls:`text-muted-foreground`}}[e]??{icon:M,cls:`text-muted-foreground`},n=t.icon;return(0,B.jsxs)(d,{variant:`outline`,className:`text-[10px] font-mono inline-flex items-center gap-1 ${t.cls}`,children:[(0,B.jsx)(n,{className:`h-3 w-3`}),e]})}function H(e){if(!e)return`—`;try{return new Date(e).toLocaleString()}catch{return e}}function U(e,t){switch(t){case`number`:{if(e===``)return;let t=Number(e);return Number.isNaN(t)?e:t}case`boolean`:return e===`true`;case`object`:case`list`:case`array`:if(e.trim()===``)return;try{return JSON.parse(e)}catch{return e}default:return e}}function W({data:e}){return(0,B.jsx)(`pre`,{className:`rounded border bg-muted/30 p-2 text-xs font-mono overflow-auto whitespace-pre-wrap break-all max-h-96`,children:JSON.stringify(e,null,2)})}function G(){let e=a()?.getClient?.(),[t,n]=(0,z.useState)([]),[r,i]=(0,z.useState)(!0),[s,c]=(0,z.useState)(null),[l,u]=(0,z.useState)(``),[d,f]=(0,z.useState)(0),p=(0,z.useCallback)(async()=>{if(!e?.meta?.getItems){c(`meta.getItems is not available on this client`),i(!1);return}i(!0),c(null);try{let t=await e.meta.getItems(`flow`),r=(Array.isArray(t)?t:Array.isArray(t?.items)?t.items:Array.isArray(t?.value)?t.value:[]).map(e=>({name:e?.spec?.name??e?.name,label:e?.spec?.label,spec:e?.spec??e,updatedAt:e?.updatedAt??e?.updated_at})).filter(e=>e.name);n(r),!l&&r.length>0&&u(r[0].name)}catch(e){c(e?.message??String(e))}finally{i(!1)}},[e,l]);(0,z.useEffect)(()=>{p()},[p]);let m=(0,z.useMemo)(()=>t.find(e=>e.name===l)??null,[t,l]);return(0,B.jsxs)(`div`,{className:`flex flex-col gap-4 p-4 sm:p-6`,children:[(0,B.jsxs)(`div`,{className:`min-w-0`,children:[(0,B.jsxs)(`h1`,{className:`text-xl sm:text-2xl font-bold tracking-tight flex items-center gap-2`,children:[(0,B.jsx)(j,{className:`h-5 w-5`}),`Flow Runs`]}),(0,B.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1`,children:`Pick a flow, trigger a test run with sample inputs, and inspect recent run history`})]}),(0,B.jsxs)(o,{children:[(0,B.jsx)(_,{className:`pb-3`,children:(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(v,{className:`text-base`,children:`Flow`}),(0,B.jsx)(g,{children:`Select a flow definition to test`})]}),(0,B.jsxs)(y,{variant:`outline`,size:`sm`,onClick:p,disabled:r,children:[(0,B.jsx)(F,{className:`h-3.5 w-3.5 mr-2 ${r?`animate-spin`:``}`}),`Refresh`]})]})}),(0,B.jsxs)(O,{children:[r&&(0,B.jsx)(N,{className:`h-9 w-72`}),s&&(0,B.jsx)(`p`,{className:`text-sm text-red-500 font-mono break-all`,children:s}),!r&&!s&&t.length===0&&(0,B.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No flow definitions found.`}),!r&&!s&&t.length>0&&(0,B.jsx)(`select`,{value:l,onChange:e=>u(e.target.value),className:`flex h-9 w-full max-w-md rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm focus:outline-none focus:ring-1 focus:ring-ring`,children:t.map(e=>(0,B.jsx)(`option`,{value:e.name,children:e.label?`${e.label} (${e.name})`:e.name},e.name))})]})]}),m&&(0,B.jsxs)(`div`,{className:`grid gap-4 lg:grid-cols-2`,children:[(0,B.jsx)(K,{client:e,flow:m.spec,onExecuted:()=>f(e=>e+1)}),(0,B.jsx)(q,{client:e,flowName:m.name,refreshKey:d})]})]})}function K({client:e,flow:t,onExecuted:n}){let c=(0,z.useMemo)(()=>(t?.variables??[]).filter(e=>e?.isInput),[t]),l=a(),{objects:f}=i(),m=(0,z.useMemo)(()=>r(),[]),[S,C]=(0,z.useState)({}),[w,E]=(0,z.useState)(!1),[D,k]=(0,z.useState)(null),[j,M]=(0,z.useState)(null),[N,P]=(0,z.useState)(null);(0,z.useEffect)(()=>{C({}),k(null),M(null),P(null)},[t?.name]);let F=(e,t)=>C(n=>({...n,[e]:t}));return(0,B.jsxs)(o,{children:[(0,B.jsxs)(_,{className:`pb-3`,children:[(0,B.jsx)(v,{className:`text-base`,children:`Test Run`}),(0,B.jsx)(g,{children:`Provide input values and invoke the flow`})]}),(0,B.jsxs)(O,{className:`space-y-3`,children:[c.length===0&&(0,B.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`This flow declares no input variables. Click Run to invoke with no parameters.`}),c.map(e=>(0,B.jsxs)(`div`,{className:`grid gap-1.5`,children:[(0,B.jsxs)(u,{htmlFor:`var-${e.name}`,className:`flex items-center gap-2`,children:[(0,B.jsx)(`span`,{className:`font-mono text-xs`,children:e.name}),(0,B.jsx)(d,{variant:`outline`,className:`text-[10px] font-mono`,children:e.type})]}),e.type===`boolean`?(0,B.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,B.jsx)(T,{id:`var-${e.name}`,checked:S[e.name]===`true`,onCheckedChange:t=>F(e.name,t?`true`:`false`)}),(0,B.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:S[e.name]===`true`?`true`:`false`})]}):e.type===`object`||e.type===`list`||e.type===`array`?(0,B.jsx)(s,{id:`var-${e.name}`,placeholder:`JSON ${e.type}`,value:S[e.name]??``,onChange:t=>F(e.name,t.target.value),className:`font-mono text-xs min-h-[80px]`}):(0,B.jsx)(x,{id:`var-${e.name}`,type:e.type===`number`?`number`:`text`,value:S[e.name]??``,onChange:t=>F(e.name,t.target.value)})]},e.name)),(0,B.jsx)(`div`,{className:`pt-1`,children:(0,B.jsxs)(y,{onClick:async()=>{if(!e?.automation?.execute){M(`automation.execute is not available on this client`);return}E(!0),M(null),k(null),P(null);try{let r={};for(let e of c){let t=S[e.name];t!==void 0&&(r[e.name]=U(t,e.type))}let i=await e.automation.execute(t.name,{params:r});k(i),i?.status===`paused`&&i?.screen&&i?.runId&&P({flowName:t.name,runId:i.runId,screen:i.screen}),n?.()}catch(e){M(e?.message??String(e))}finally{E(!1)}},disabled:w,size:`sm`,children:[w?(0,B.jsx)(L,{className:`h-3.5 w-3.5 mr-2 animate-spin`}):(0,B.jsx)(h,{className:`h-3.5 w-3.5 mr-2`}),w?`Running…`:`Run Flow`]})}),(D||j)&&(0,B.jsxs)(`div`,{className:`pt-2 border-t mt-2 space-y-2`,children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-2 text-sm font-medium`,children:[j||D?.success===!1?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(b,{className:`h-4 w-4 text-red-500`}),` Failed`]}):D?.status===`paused`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(p,{className:`h-4 w-4 text-amber-500`}),` Waiting for input`]}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(A,{className:`h-4 w-4 text-emerald-500`}),` Result`]}),typeof D?.durationMs==`number`&&(0,B.jsxs)(d,{variant:`secondary`,className:`text-[10px] font-mono`,children:[D.durationMs,` ms`]})]}),j&&(0,B.jsx)(`p`,{className:`text-sm text-red-500 font-mono break-all`,children:j}),D?.status===`paused`&&D?.screen&&D?.runId&&!N&&(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,B.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`This run is paused at screen `,(0,B.jsx)(`span`,{className:`font-mono`,children:D.screen.nodeId}),`.`]}),(0,B.jsx)(y,{size:`sm`,variant:`outline`,onClick:()=>P({flowName:t.name,runId:D.runId,screen:D.screen}),children:`Continue run`})]}),D&&(0,B.jsx)(W,{data:D})]})]}),(0,B.jsx)(R,{state:N,authFetch:m,baseUrl:``,dataSource:l,objects:f,onClose:()=>{P(null),n?.()},onComplete:()=>{P(null),n?.()}})]})}function q({client:e,flowName:t,refreshKey:n}){let[r,i]=(0,z.useState)([]),[a,s]=(0,z.useState)(!0),[u,p]=(0,z.useState)(null),[h,b]=(0,z.useState)(null),[x,T]=(0,z.useState)(null),[A,j]=(0,z.useState)(!1),[M,R]=(0,z.useState)(null),U=(0,z.useCallback)(async()=>{if(!e?.automation?.listRuns){p(`automation.listRuns is not available on this client`),s(!1);return}s(!0),p(null);try{let n=await e.automation.listRuns(t,{limit:20}),r=Array.isArray(n)?n:n?.items??n?.runs??[];i(r)}catch(e){p(e?.message??String(e))}finally{s(!1)}},[e,t]);(0,z.useEffect)(()=>{U()},[U,n]);let G=async n=>{b(n),T(null),R(null),j(!0);try{let r=await e.automation.getRun(t,n);T(r?.run??r)}catch(e){R(e?.message??String(e))}finally{j(!1)}};return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(o,{children:[(0,B.jsx)(_,{className:`pb-3`,children:(0,B.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(v,{className:`text-base`,children:`Recent Runs`}),(0,B.jsx)(g,{className:`font-mono text-xs`,children:t})]}),(0,B.jsxs)(y,{variant:`outline`,size:`sm`,onClick:U,disabled:a,children:[a?(0,B.jsx)(L,{className:`h-3.5 w-3.5 mr-2 animate-spin`}):(0,B.jsx)(F,{className:`h-3.5 w-3.5 mr-2`}),`Refresh`]})]})}),(0,B.jsxs)(O,{children:[a&&(0,B.jsxs)(`div`,{className:`space-y-2`,children:[(0,B.jsx)(N,{className:`h-8 w-full`}),(0,B.jsx)(N,{className:`h-8 w-full`}),(0,B.jsx)(N,{className:`h-8 w-full`})]}),!a&&u&&(0,B.jsx)(`p`,{className:`text-sm text-red-500 font-mono break-all`,children:u}),!a&&!u&&r.length===0&&(0,B.jsx)(`p`,{className:`text-sm text-muted-foreground py-6 text-center`,children:`No runs yet. Use the Test Run panel to invoke this flow.`}),!a&&!u&&r.length>0&&(0,B.jsxs)(l,{children:[(0,B.jsx)(w,{children:(0,B.jsxs)(C,{children:[(0,B.jsx)(f,{children:`Run`}),(0,B.jsx)(f,{children:`Status`}),(0,B.jsx)(f,{children:`Started`}),(0,B.jsx)(f,{className:`text-right`,children:`Duration`})]})}),(0,B.jsx)(m,{children:r.map(e=>(0,B.jsxs)(C,{className:`cursor-pointer`,onClick:()=>G(e.id),children:[(0,B.jsxs)(k,{className:`font-mono text-xs`,children:[e.id.slice(0,12),`…`]}),(0,B.jsx)(k,{children:(0,B.jsx)(V,{status:e.status})}),(0,B.jsx)(k,{className:`text-xs text-muted-foreground`,children:H(e.startedAt)}),(0,B.jsx)(k,{className:`text-right font-mono text-xs`,children:typeof e.durationMs==`number`?`${e.durationMs} ms`:`—`})]},e.id))})]})]})]}),(0,B.jsx)(E,{open:!!h,onOpenChange:e=>{e||(b(null),T(null))},children:(0,B.jsxs)(I,{side:`right`,className:`w-full sm:max-w-2xl p-0 flex flex-col`,children:[(0,B.jsxs)(c,{className:`p-4 border-b`,children:[(0,B.jsxs)(P,{className:`font-mono text-sm break-all`,children:[`Run `,h]}),(0,B.jsx)(S,{children:x&&(0,B.jsxs)(`span`,{className:`inline-flex items-center gap-2`,children:[(0,B.jsx)(V,{status:x.status}),typeof x.durationMs==`number`&&(0,B.jsxs)(d,{variant:`secondary`,className:`text-[10px] font-mono`,children:[x.durationMs,` ms`]}),(0,B.jsx)(`span`,{className:`text-xs`,children:H(x.startedAt)})]})})]}),(0,B.jsxs)(D,{className:`flex-1 p-4`,children:[A&&(0,B.jsxs)(`div`,{className:`space-y-2`,children:[(0,B.jsx)(N,{className:`h-16 w-full`}),(0,B.jsx)(N,{className:`h-16 w-full`}),(0,B.jsx)(N,{className:`h-16 w-full`})]}),M&&(0,B.jsx)(`p`,{className:`text-sm text-red-500 font-mono break-all`,children:M}),!A&&x&&(0,B.jsx)(`div`,{className:`space-y-3`,children:Array.isArray(x.steps)&&x.steps.length>0?x.steps.map((e,t)=>(0,B.jsxs)(`div`,{className:`rounded-md border p-3 space-y-2`,children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,B.jsxs)(`span`,{className:`text-muted-foreground font-mono text-xs`,children:[`#`,t+1]}),(0,B.jsx)(`span`,{className:`font-mono text-sm font-medium`,children:e.nodeLabel||e.nodeId}),e.nodeType&&(0,B.jsx)(d,{variant:`outline`,className:`text-[10px] font-mono`,children:e.nodeType}),(0,B.jsx)(V,{status:e.status}),typeof e.durationMs==`number`&&(0,B.jsxs)(d,{variant:`secondary`,className:`text-[10px] font-mono ml-auto`,children:[e.durationMs,` ms`]})]}),e.input!==void 0&&(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`div`,{className:`text-[10px] uppercase text-muted-foreground mb-1`,children:`Input`}),(0,B.jsx)(W,{data:e.input})]}),e.output!==void 0&&(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`div`,{className:`text-[10px] uppercase text-muted-foreground mb-1`,children:`Output`}),(0,B.jsx)(W,{data:e.output})]}),e.error&&(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`div`,{className:`text-[10px] uppercase text-red-500 mb-1`,children:`Error`}),(0,B.jsx)(W,{data:e.error})]})]},`${e.nodeId}-${t}`)):(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`div`,{className:`text-[10px] uppercase text-muted-foreground mb-1`,children:`Run`}),(0,B.jsx)(W,{data:x})]})})]})]})})]})}export{G as FlowRunsPage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{b as t,g as n,p as r,r as i}from"./vendor-react-CsWFRkED.js";import{v as a}from"./infrastructure-CerjT_c2.js";import{A as o,Et as s,ar as c,at as l,it as u,xt as d}from"./framework-LCCQTTcs.js";import{Fs as f,_t as p,mt as m,vt as h,xt as g}from"./ui-components-3mb69z8L.js";import"./MetadataProvider-DwMR1SMR.js";import{t as _}from"./RecordDetailView-uf81gH3J.js";import{d as v}from"./plugins-views-BaBStVok.js";var y=e(t(),1),b=[`single`,`group`,`isolated`];function x(e){return e===`group`||e===`isolated`}function S(){let{getAuthConfig:e}=a(),[t,n]=(0,y.useState)(void 0);return(0,y.useEffect)(()=>{let t=!1;return e?.().then(e=>{if(t)return;let r=e?.features?.tenancyPosture;r&&b.includes(r)&&n(r)}).catch(()=>{}),()=>{t=!0}},[e]),t}var C=`uf_`;function w(e){let t={};return e.forEach((e,n)=>{if(n.startsWith(C)&&e!==``){let r=n.slice(3);t[r]=e.split(`,`).map(e=>{try{return decodeURIComponent(e)}catch{return e}})}}),Object.keys(t).length>0?t:void 0}function T(e,t){let n=new URLSearchParams(e);for(let[e,r]of Object.entries(t)){let t=C+e;r&&r.length>0?n.set(t,r.map(e=>encodeURIComponent(String(e))).join(`,`)):n.delete(t)}return n}var E=i();function D(e){return Array.isArray(e?.columns)&&e.columns.length>0}function ee(e,t){let n=e?.listViews||e?.list_views||{},r=(t?[n[`${e?.name}.${t}`],n[t],...t==="default"||t===`list`?[e?.list]:[]]:[e?.list,...Object.values(n)]).filter(Boolean);return r.find(D)??r[0]}function O(e,t){let n=n=>t?.orgAttribution&&e?.fields?.organization_id&&!n.includes(`organization_id`)?[...n,`organization_id`]:n,r=e?.highlightFields;if(Array.isArray(r)&&r.length>0)return n(r.filter(t=>e.fields?.[t]));let i=e?.fields;return i&&typeof i==`object`?n(Object.entries(i).filter(([e,t])=>t&&!t.hidden&&!c(e,t)).map(([e])=>e).slice(0,6)):[]}function k(e,t){let n=e?.fields;if(!(!n||typeof n!=`object`))return Object.entries(n).find(([e,n])=>n&&!n.hidden&&!c(e,n)&&t(e,n))?.[0]}var A=new Set([`select`,`multiselect`,`radio`,`enum`,`boolean`]),j=new Set([`date`,`datetime`,`time`]),M=new Set([`image`,`file`,`attachment`,`avatar`,`photo`]);function N(e){let t=k(e,(e,t)=>A.has(t.type))??k(e,e=>/status|stage|state|priority|category|kind/i.test(e));return t?{groupByField:t}:void 0}function P(e){return k(e,(e,t)=>j.has(t.type))??k(e,e=>/date|due|start|end|deadline|schedule/i.test(e))}function F(e){let t=P(e);return t?{startDateField:t}:void 0}function I(e){let t=k(e,(e,t)=>M.has(t.type));return t?{coverField:t}:void 0}var L=new Set([`location`,`geo`,`geolocation`,`geopoint`,`point`]);function R(e){let t=k(e,(e,t)=>j.has(t.type)&&/start|begin|kickoff/i.test(e))??k(e,(e,t)=>j.has(t.type));if(!t)return;let n=k(e,(e,n)=>j.has(n.type)&&e!==t&&/end|due|finish|deadline|close/i.test(e))??k(e,(e,n)=>j.has(n.type)&&e!==t);if(!n)return;let r=k(e,(e,t)=>(t.type===`number`||t.type===`percent`)&&/progress|percent|complete/i.test(e));return{startDateField:t,endDateField:n,...r?{progressField:r}:{}}}function z(e){let t=k(e,(e,t)=>L.has(t.type))??k(e,e=>/location|address|geo|coords?|place|venue/i.test(e));return t?{locationField:t}:void 0}function B({page:e,className:t,onConfigChange:i,reserveEditAffordance:a}){let{t:c}=o(),{objects:b}=l(),x=u(),C=r(),[k,A]=n(),j=S()===`group`,[M]=y.useState(()=>w(new URLSearchParams(window.location.search))),P=y.useCallback(e=>{A(t=>T(t,e),{replace:!0})},[A]),L=e?.interfaceConfig||{},B=y.useMemo(()=>(b||[]).find(e=>e.name===L.source),[b,L.source]),V=y.useMemo(()=>ee(B,L.sourceView),[B,L.sourceView]),H=L.recordAction===`page`||L.recordAction===`modal`||L.recordAction===`none`?L.recordAction:`drawer`,U=y.useCallback(e=>`/apps/${window.location.pathname.split(`/`)[2]||``}/${L.source}/record/${encodeURIComponent(String(e))}`,[L.source]),W=d({navigation:{mode:H===`none`?`none`:H},objectName:L.source,onNavigate:e=>C(U(e))}),G=k.get(`recordId`),te=y.useCallback((e,t)=>{if(H===`none`)return;let n=e?.id??e?._id;if(t&&(t.metaKey||t.ctrlKey||t.button===1)&&n!=null){window.open(U(n),`_blank`);return}if((H===`drawer`||H===`modal`)&&n!=null){A(e=>{let t=new URLSearchParams(e);return t.set(`recordId`,String(n)),t});return}W.handleClick(e,t)},[H,U,W,A]),ne=y.useCallback(()=>{A(e=>{let t=new URLSearchParams(e);return t.delete(`recordId`),t})},[A]);y.useEffect(()=>{G&&!W.isOpen?W.open({id:G}):!G&&W.isOpen&&W.close()},[G]);let K=B?.name,q=!!V&&!D(V),J=V?.name??(L.sourceView?`${L.source}.${L.sourceView}`:void 0),[Y,X]=y.useState(null);y.useEffect(()=>{let e=!1;if(X(null),!(!K||!L.source||!q||!J))return(async()=>{try{let t=x,n=null;if(typeof t?.listViewOverrides==`function`)try{n=(await t.listViewOverrides(L.source))?.[J]??null}catch{}!D(n)&&typeof t?.getView==`function`&&(n=await t.getView(L.source,J)),!e&&n&&typeof n==`object`&&X(n)}catch{}})(),()=>{e=!0}},[K,L.source,L.sourceView,q,J,x]);let Z=y.useMemo(()=>Y?{...V,...Y}:V,[V,Y]),re=JSON.stringify(Z??null),Q=y.useMemo(()=>{if(!B)return;let e=Z||{},t=L.appearance??e.appearance,n=t?.allowedVisualizations||[],r=new Set(n),i=L.userActions||{},a=e.kanban??(r.has(`kanban`)?N(B):void 0),o=e.calendar??(r.has(`calendar`)?F(B):void 0),s=e.timeline??(r.has(`timeline`)?F(B):void 0),c=e.gallery??(r.has(`gallery`)?I(B):void 0),l=e.gantt??(r.has(`gantt`)?R(B):void 0),u=e.options?.map??(r.has(`map`)?z(B):void 0),d=[...Array.isArray(e.filter)?e.filter:[],...Array.isArray(L.filterBy)?L.filterBy:[]],f=D(L)?L.columns:D(e)?e.columns:O(B,{orgAttribution:j}),p=Array.isArray(L.sort)&&L.sort.length?L.sort:e.sort;return{type:`list-view`,objectName:B.name,viewType:n[0]??e.type??`grid`,columns:f,...d.length?{filter:d}:{},...p?.length?{sort:p}:{},grouping:e.grouping,rowColor:e.rowColor,pagination:e.pagination,searchableFields:e.searchableFields,emptyState:e.emptyState,kanban:a,calendar:o,gallery:c,timeline:s,gantt:l,...u||e.options?{options:{...e.options??{},...u?{map:u}:{}}}:{},userFilters:L.userFilters??e.userFilters,appearance:t,showViewSwitcher:n.length>1,showRecordCount:L.showRecordCount,addRecord:L.addRecord,userActions:{search:i.search!==!1,sort:i.sort!==!1,filter:i.filter===!0,rowHeight:i.rowHeight===!0,group:i.group===!0,hideFields:i.hideFields===!0,rowColor:i.rowColor===!0},allowExport:!1,inlineEdit:i.editInline===!0}},[K,re,L,j]);if(!B||!Q)return(0,E.jsx)(`div`,{className:`h-full flex items-center justify-center p-8`,children:(0,E.jsxs)(p,{children:[(0,E.jsx)(`div`,{className:`mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-muted`,children:(0,E.jsx)(f,{className:`h-6 w-6 text-muted-foreground`})}),(0,E.jsx)(g,{children:c(`empty.objectNotFound`,{defaultValue:`Object Not Found`})}),(0,E.jsx)(h,{children:c(`empty.interfacePageSourceMissing`,{defaultValue:`This interface page references "{{name}}", which is not available.`,name:L.source||`?`})})]})});let $=Array.isArray(L.buttons)&&L.buttons.length?L.buttons.map(e=>(B.actions||[]).find(t=>t?.name===e)).filter(Boolean).map(e=>({...e,locations:[`list_toolbar`]})):[];return(0,E.jsxs)(`div`,{className:t??`h-full flex flex-col`,"data-testid":`interface-list-page`,children:[(0,E.jsxs)(`div`,{className:`pl-4 pt-4 pb-2 shrink-0 flex items-start justify-between gap-3 ${a?`pr-12`:`pr-4`}`,children:[(0,E.jsxs)(`div`,{className:`min-w-0`,children:[(0,E.jsx)(`h1`,{className:`text-lg font-semibold leading-tight`,children:typeof e.label==`string`?e.label:e.name}),typeof e.description==`string`&&e.description&&(0,E.jsx)(`p`,{className:`text-sm text-muted-foreground mt-0.5`,children:e.description})]}),$.length>0&&(0,E.jsx)(`div`,{className:`shrink-0`,"data-testid":`interface-page-buttons`,children:(0,E.jsx)(s,{schema:{type:`action:bar`,location:`list_toolbar`,actions:$,size:`sm`,variant:`outline`}})})]}),(0,E.jsx)(`div`,{className:`flex-1 min-h-0 overflow-auto`,children:(0,E.jsx)(v,{schema:Q,dataSource:x,userFilterSelections:M,onUserFilterSelectionsChange:P,onSortChange:i?e=>i({sort:e}):void 0,onColumnStateChange:i?e=>{e?.order?.length&&i({columns:e.order})}:void 0,onRowClick:H===`none`?void 0:te})}),W.isOverlay&&(0,E.jsx)(m,{...W,setIsOpen:e=>{e||ne()},title:typeof e.label==`string`?e.label:L.source||`Record`,children:e=>(0,E.jsx)(_,{objectNameOverride:L.source,recordIdOverride:String(e?.id??e?._id??G??``),embedded:!0,dataSource:x,objects:b,onEdit:()=>{}})})]})}export{N as a,x as c,I as i,S as l,F as n,T as o,O as r,w as s,B as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./vendor-react-CsWFRkED.js";import{A as t}from"./framework-LCCQTTcs.js";import{Ir as n,_n as r,bo as i,gn as a,hn as o,mn as s,nl as c,oa as l,ol as u,ra as d}from"./ui-components-3mb69z8L.js";var f=e(),p={config:{icon:l,i18nKey:`config`,short:`Admin config`,title:`Administrator configuration`,body:()=>`These rows define how the platform behaves at runtime. Author them here; the runtime data they produce lives in a separate table.`,tone:`border-sky-300/60 bg-sky-50 text-sky-900 hover:bg-sky-100 dark:border-sky-500/40 dark:bg-sky-950/40 dark:text-sky-100`},"engine-owned":{icon:i,i18nKey:`system`,short:`System-managed`,title:`Managed by the platform`,body:()=>`Rows here are created automatically when actions run on the source record. The list below is a read-only monitoring surface — row-level actions (Approve, Recall, Resend, …) live on each row.`,tone:`border-slate-300/60 bg-slate-50 text-slate-900 hover:bg-slate-100 dark:border-slate-500/40 dark:bg-slate-950/40 dark:text-slate-100`},"system-data":{icon:l,i18nKey:`systemWritable`,short:`Platform schema`,title:`Platform-defined, admin-writable`,body:()=>`This object's schema is defined by the platform, but its rows are yours to create and edit here. Who may write is governed by delegated administration and record-level security, not by this badge.`,tone:`border-slate-300/60 bg-slate-50 text-slate-900 hover:bg-slate-100 dark:border-slate-500/40 dark:bg-slate-950/40 dark:text-slate-100`},"append-only":{icon:c,i18nKey:`appendOnly`,short:`Read-only · Audit log`,title:`Read-only historical record`,body:()=>`Immutable audit log. Rows cannot be created, edited, or deleted from the UI — they're written by the platform when events occur. Use Export to download for compliance review.`,tone:`border-zinc-300/60 bg-zinc-50 text-zinc-900 hover:bg-zinc-100 dark:border-zinc-500/40 dark:bg-zinc-950/40 dark:text-zinc-100`},"better-auth":{icon:d,i18nKey:`betterAuth`,short:`Identity`,title:`Managed by the identity provider`,body:e=>`This object's schema is owned by ${e}. Direct edits bypass password hashing, session validation, two-factor checks, and audit hooks. Manage these records through your authentication provider's sign-in, invitation, and security flows instead.`,tone:`border-amber-300/60 bg-amber-50 text-amber-900 hover:bg-amber-100 dark:border-amber-500/40 dark:bg-amber-950/40 dark:text-amber-100`}};function m({managedBy:e,label:i,className:c}){let{t:l}=t();if(!e||e===`platform`)return null;let d=p[e];if(!d)return null;let m=d.icon,h=i??`better-auth`,g=l(`managedByBadge.${d.i18nKey}.short`,{defaultValue:d.short}),_=l(`managedByBadge.${d.i18nKey}.title`,{defaultValue:d.title}),v=l(`managedByBadge.${d.i18nKey}.body`,{defaultValue:d.body(h),provider:h});return(0,f.jsx)(a,{delayDuration:200,children:(0,f.jsxs)(s,{children:[(0,f.jsx)(r,{asChild:!0,children:(0,f.jsxs)(n,{variant:`outline`,"data-testid":`managed-by-badge`,"data-bucket":e,className:u(`gap-1 font-normal text-[11px] leading-none py-0.5 px-1.5 cursor-help`,d.tone,c),children:[(0,f.jsx)(m,{className:`h-3 w-3`,"aria-hidden":`true`}),(0,f.jsx)(`span`,{children:g})]})}),(0,f.jsxs)(o,{side:`bottom`,align:`start`,className:`max-w-xs text-xs leading-relaxed`,children:[(0,f.jsx)(`p`,{className:`font-semibold mb-1`,children:_}),(0,f.jsx)(`p`,{className:`text-muted-foreground`,children:v})]})]})})}export{m as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{h as e,p as t,r as n}from"./vendor-react-CsWFRkED.js";import{S as r}from"./infrastructure-CerjT_c2.js";import{A as i}from"./framework-LCCQTTcs.js";import{Ar as a,Qr as o,bo as s,jr as c}from"./ui-components-3mb69z8L.js";var l={cloudUrl:``,singleEnvironment:!1,defaultOrgId:null,defaultEnvironmentId:null,features:{installLocal:!1,marketplace:!0,aiStudio:!0,autoPublishAiBuilds:!0,customDomain:!1,sso:!1},branding:{productName:`ObjectOS`,productShortName:`ObjectOS`,stage:`preview`,brandColor:`#4F46E5`,pwaThemeColor:`#4f46e5`}},u=[`preview`,`beta`,`ga`];function d(e){return typeof e==`string`&&u.includes(e)}var f={...l};function p(e){f={...f,...e,features:{...f.features,...e.features??{}},branding:{...f.branding,...e.branding??{}}}}async function m(e=``){let t=(e||``).replace(/\/+$/,``);try{let e=await fetch(`${t}/api/v1/runtime/config`,{credentials:`include`,headers:{Accept:`application/json`}});if(!e.ok)return;let n=await e.json();if(!n||typeof n!=`object`)return;p({cloudUrl:typeof n.cloudUrl==`string`?n.cloudUrl.replace(/\/+$/,``):f.cloudUrl,singleEnvironment:!!n.singleEnvironment,defaultOrgId:n.defaultOrgId??f.defaultOrgId??null,defaultEnvironmentId:n.defaultEnvironmentId??f.defaultEnvironmentId??null,features:n.features?{installLocal:!!n.features.installLocal,marketplace:n.features.marketplace!==!1,aiStudio:n.features.aiStudio!==!1,autoPublishAiBuilds:n.features.autoPublishAiBuilds!==!1,customDomain:n.features.customDomain===!0,sso:n.features.sso===!0}:f.features,branding:n.branding?{productName:typeof n.branding.productName==`string`&&n.branding.productName.trim()?n.branding.productName.trim():f.branding.productName,productShortName:typeof n.branding.productShortName==`string`&&n.branding.productShortName.trim()?n.branding.productShortName.trim():f.branding.productShortName,stage:d(n.branding.stage)?n.branding.stage:f.branding.stage,logoUrl:typeof n.branding.logoUrl==`string`&&n.branding.logoUrl.trim()?n.branding.logoUrl.trim():f.branding.logoUrl,faviconUrl:typeof n.branding.faviconUrl==`string`&&n.branding.faviconUrl.trim()?n.branding.faviconUrl.trim():f.branding.faviconUrl,brandColor:typeof n.branding.brandColor==`string`&&n.branding.brandColor.trim()?n.branding.brandColor.trim():f.branding.brandColor,pwaDescription:typeof n.branding.pwaDescription==`string`&&n.branding.pwaDescription.trim()?n.branding.pwaDescription.trim():f.branding.pwaDescription,pwaThemeColor:typeof n.branding.pwaThemeColor==`string`&&n.branding.pwaThemeColor.trim()?n.branding.pwaThemeColor.trim():f.branding.pwaThemeColor}:f.branding})}catch{}}function h(){return f}function g(){return f.branding?.productName||`ObjectOS`}function _(){return f.branding?.productShortName||g()}function v(){return f.branding?.stage??`preview`}function y(){return f.branding?.brandColor||`#4F46E5`}function b(){return f.branding?.logoUrl}function x(){return f.branding?.faviconUrl}function S(){return f.branding?.pwaDescription||`${g()} — runtime console`}function C(){return f.branding?.pwaThemeColor||y()}function w(){return f.cloudUrl??``}var T=``.replace(/\/$/,``),E=`${T}/api/v1/marketplace`;function D(e){let t=r.get();return t?{...e,Authorization:`Bearer ${t}`}:e}function O(e,t){let n=e?.error?.code??e?.code??`HTTP_${t.status}`,r=e?.error?.message??e?.error??e?.message??t.statusText;return{code:String(n),message:typeof r==`string`?r:String(n)}}async function k(e,t){let n=await fetch(`${E}${e}`,{credentials:`omit`,headers:{Accept:`application/json`,...t?.headers||{}},...t}),r=null;try{r=await n.json()}catch{}if(!n.ok){let{code:e,message:t}=O(r,n),i=Error(typeof t==`string`?t:`${e}`);throw i.code=e,i.status=n.status,i}return r?.data??r}async function A(e={}){let t=new URLSearchParams;e.q&&t.set(`q`,e.q),e.category&&t.set(`category`,e.category),e.limit!=null&&t.set(`limit`,String(e.limit)),e.offset!=null&&t.set(`offset`,String(e.offset));let n=t.toString();return k(`/packages${n?`?${n}`:``}`)}async function j(e){return k(`/packages/${encodeURIComponent(e)}`)}async function M(e){if(w()){let t=await fetch(`/api/v1/cloud-connection/install`,{method:`POST`,credentials:`include`,headers:D({Accept:`application/json`,"Content-Type":`application/json`}),body:JSON.stringify({package_id:e.packageId,seed_sample_data:!!e.seedSampleData})}),n=null;try{n=await t.json()}catch{}if(!t.ok||n?.success===!1){let{code:e,message:r}=O(n,t),i=Error(typeof r==`string`?r:`${e}`);throw i.code=e,i.status=t.status,i}return n?.data??n}let t=await fetch(`${T}/api/v1/actions/sys_package/install_package`,{method:`POST`,credentials:`include`,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify({recordId:e.packageId,params:{environment_id:e.environmentId,seed_sample_data:!!e.seedSampleData}})}),n=null;try{n=await t.json()}catch{}let r=n?.data,i=!!r&&typeof r==`object`&&r.success===!1;if(!t.ok||i){let e=O(n,t),a=n?.code??e.code,o=i?r.error??t.statusText:e.message,s=Error(typeof o==`string`?o:`${a}`);throw s.code=a,s.status=t.status,s}return n?.data??n}async function N(){let e=w()||T,t=await fetch(`${e}/api/v1/data/sys_environment?limit=200`,{credentials:`include`,headers:{Accept:`application/json`}});if(!t.ok){let e=Error(`HTTP_${t.status}`);throw e.status=t.status,e}let n=await t.json().catch(()=>({})),r=n?.records??n?.data??n?.items??n??[];return Array.isArray(r)?r:[]}async function P(){let e=w()||T,t=null;try{let n=await fetch(`${e}/api/v1/auth/get-session`,{credentials:`include`,headers:{Accept:`application/json`}});n.ok&&(t=(await n.json().catch(()=>({})))?.user?.id??null)}catch{}if(!t)return new Set;let n=`${e}/api/v1/data/sys_member?limit=200`,r;try{let e=await fetch(n,{credentials:`include`,headers:{Accept:`application/json`}});if(!e.ok)return new Set;r=await e.json().catch(()=>({}))}catch{return new Set}let i=r?.records??r?.data??r?.items??r??[];if(!Array.isArray(i))return new Set;let a=new Set;for(let e of i){if(String(e?.user_id??e?.userId??``)!==t)continue;let n=String(e?.role??``).toLowerCase(),r=e?.organization_id??e?.organizationId;r&&(n===`owner`||n===`admin`)&&a.add(String(r))}return a}function F(e){return`${w()||`https://cloud.objectos.app`}/apps/cloud-control/sys_package/${encodeURIComponent(e)}`}function I(){return`${w()||`https://cloud.objectos.app`}/apps/cloud-control/sys_environment`}async function L(e,t){if(!e)return null;if(w())try{let t=await fetch(`/api/v1/cloud-connection/installation?package_id=${encodeURIComponent(e)}`,{credentials:`include`,headers:D({Accept:`application/json`})});if(!t.ok)return null;let n=await t.json().catch(()=>({})),r=n?.data??n??{};return r.installed?{installationId:String(r.installationId??``),version:String(r.version??`installed`),withSampleData:r.withSampleData===!0}:null}catch{return null}if(!t)return null;let n=T;try{let r=await fetch(`${n}/api/v1/cloud/environments/${encodeURIComponent(t)}/installations/${encodeURIComponent(e)}`,{credentials:`include`,headers:{Accept:`application/json`}});if(!r.ok)return null;let i=await r.json().catch(()=>({})),a=i?.data??i??{};return a.installed?{installationId:String(a.installationId??``),version:String(a.version??`installed`),withSampleData:a.withSampleData===!0}:null}catch{return null}}async function R(e){if(!e)return{ok:!1,error:`installation id required`};let t=w()||T;try{let n=await fetch(`${t}/api/v1/cloud/installations/${encodeURIComponent(e)}/reseed-sample-data`,{method:`POST`,credentials:`include`,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:`{}`}),r=await n.json().catch(()=>({}));return!n.ok||r?.success===!1?{ok:!1,error:O(r,n).message}:{ok:!0}}catch(e){return{ok:!1,error:e?.message||`Network error`}}}async function z(e){if(!e)return{ok:!1,error:`installation id required`};let t=w()||T;try{let n=await fetch(`${t}/api/v1/cloud/installations/${encodeURIComponent(e)}/purge-sample-data`,{method:`POST`,credentials:`include`,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:`{}`}),r=await n.json().catch(()=>({}));return!n.ok||r?.success===!1?{ok:!1,error:O(r,n).message}:{ok:!0,deleted:Number(r?.data?.deleted??0)}}catch(e){return{ok:!1,error:e?.message||`Network error`}}}async function B(){try{let e=await fetch(`${T}/api/v1/cloud-connection/org-packages`,{credentials:`include`,headers:{Accept:`application/json`}});if(!e.ok)return{connected:!1,items:[]};let t=(await e.json().catch(()=>({})))?.data??{},n=Array.isArray(t.items)?t.items:[];return{connected:t.connected===!0,items:n}}catch{return{connected:!1,items:[]}}}async function V(e){let t=await fetch(`${E}/install-local`,{method:`POST`,credentials:`include`,headers:{Accept:`application/json`,"Content-Type":`application/json`},body:JSON.stringify({packageId:e.packageId,...e.versionId?{versionId:e.versionId}:{}})}),n=null;try{n=await t.json()}catch{}if(!t.ok){let{code:e,message:r}=O(n,t),i=Error(typeof r==`string`?r:`${e}`);throw i.code=e,i.status=t.status,i}return n?.data??n}async function H(){try{let e=await fetch(`${E}/install-local`,{credentials:`include`,headers:{Accept:`application/json`}});if(!e.ok)return[];let t=await e.json().catch(()=>({})),n=t?.data?.items??t?.items??[];return Array.isArray(n)?n:[]}catch{return[]}}async function U(){try{let e=await fetch(`${T}/api/v1/cloud-connection/installed`,{credentials:`include`,headers:{Accept:`application/json`}});if(!e.ok)return{connected:!1,items:[]};let t=(await e.json().catch(()=>({})))?.data??{},n=(Array.isArray(t.packages)?t.packages:[]).map(e=>{let t=String(e.packageId??e.package_id??``);return{packageId:t,versionId:String(e.package_version_id??``),manifestId:t,version:String(e.version??`installed`),installedAt:String(e.installed_at??e.installedAt??``),installedBy:e.installed_by??e.installedBy??null,withSampleData:e.with_sample_data===!0||e.withSampleData===!0}});return{connected:t.connected===!0,items:n}}catch{return{connected:!1,items:[]}}}async function W(e){let t=await fetch(`${E}/install-local/${encodeURIComponent(e)}`,{method:`DELETE`,credentials:`include`,headers:{Accept:`application/json`}});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(O(e,t).message)}}async function G(e,t){let n=await fetch(`${E}/install-local/${encodeURIComponent(e)}/${t===`reseed`?`reseed-sample-data`:`purge-sample-data`}`,{method:`POST`,credentials:`include`,headers:{Accept:`application/json`}}),r=await n.json().catch(()=>({}));if(!n.ok){let e=r?.error?.message??n.statusText,t=Error(typeof e==`string`?e:`HTTP_${n.status}`);throw t.code=r?.error?.code??`HTTP_${n.status}`,t}return r?.data??r}function K(e){return G(e,`reseed`)}function q(e){return G(e,`purge`)}var J=n();function Y(){let n=t(),{appName:r}=e(),{t:l}=i(),u=r?`/apps/${r}`:`/`;return(0,J.jsx)(`div`,{className:`container mx-auto max-w-2xl px-6 py-16`,children:(0,J.jsx)(a,{children:(0,J.jsxs)(c,{className:`flex flex-col items-center gap-4 py-12 text-center`,children:[(0,J.jsx)(`div`,{className:`rounded-full bg-muted p-3`,children:(0,J.jsx)(s,{className:`h-6 w-6 text-muted-foreground`})}),(0,J.jsxs)(`div`,{children:[(0,J.jsx)(`h2`,{className:`text-lg font-semibold`,children:l(`marketplace.accessDenied.title`)}),(0,J.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:l(`marketplace.accessDenied.description`)})]}),(0,J.jsx)(o,{variant:`outline`,onClick:()=>n(u),children:l(`marketplace.action.backHome`)})]})})})}export{g as C,h as D,C as E,m as O,v as S,S as T,R as _,j as a,x as b,N as c,H as d,A as f,K as g,z as h,L as i,P as l,q as m,F as n,V as o,B as p,I as r,M as s,Y as t,U as u,W as v,_ as w,b as x,w as y};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{b as n,h as r,p as i,r as a}from"./vendor-react-CsWFRkED.js";import{_ as o}from"./infrastructure-CerjT_c2.js";import{A as s,Gr as c}from"./framework-LCCQTTcs.js";import{Ar as l,Ds as u,Ir as d,Nr as f,Pr as p,Qr as m,Ri as h,Sa as g,Ti as _,el as v,jr as y,uc as b,vn as x}from"./ui-components-3mb69z8L.js";import{d as S,t as C,u as w,v as T}from"./MarketplaceAccessDenied-CrK7hygV.js";var E=e(n(),1),D=a();function O(){let e=i(),{appName:t}=r(),n=o(),{t:a,language:c}=s(),h=t?`/apps/${t}`:``,[v,O]=(0,E.useState)([]),[k,A]=(0,E.useState)(`local`),[j,M]=(0,E.useState)(!0),[N,P]=(0,E.useState)(null),[F,I]=(0,E.useState)(null),L=async()=>{M(!0);try{let e=await w();e.connected?(A(`cloud`),O(e.items)):(A(`local`),O(await S()))}finally{M(!1)}};(0,E.useEffect)(()=>{L()},[]);let R=async e=>{if(confirm(a(`marketplace.uninstall.confirm`,{manifestId:e.manifestId,version:e.version}))){P(e.manifestId),I(null);try{await T(e.manifestId),I({ok:!0,message:a(`marketplace.uninstall.successInList`,{manifestId:e.manifestId})}),await L()}catch(e){I({ok:!1,message:e?.message??String(e)})}finally{P(null)}}};return n?(0,D.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,D.jsx)(`div`,{className:`flex justify-end`,children:(0,D.jsxs)(m,{variant:`outline`,size:`sm`,onClick:()=>void L(),disabled:j,children:[(0,D.jsx)(g,{className:`h-4 w-4 mr-1.5`,"aria-hidden":`true`}),a(`marketplace.refresh`)]})}),F&&(0,D.jsx)(`div`,{className:`rounded-md border p-3 text-sm ${F.ok?`border-green-500/30 bg-green-500/5 text-green-700 dark:text-green-400`:`border-destructive/30 bg-destructive/5 text-destructive`}`,children:(0,D.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,D.jsx)(b,{className:`h-4 w-4 mt-0.5 shrink-0`,"aria-hidden":`true`}),(0,D.jsx)(`div`,{children:F.message})]})}),j&&v.length===0?(0,D.jsx)(`div`,{className:`grid gap-3`,children:Array.from({length:3}).map((e,t)=>(0,D.jsx)(x,{className:`h-20 w-full`},t))}):v.length===0?(0,D.jsxs)(`div`,{className:`text-center py-12 text-sm text-muted-foreground border rounded-md`,children:[(0,D.jsx)(`p`,{children:a(`marketplace.installedEmpty`)}),(0,D.jsx)(m,{variant:`link`,className:`mt-2`,onClick:()=>e(`${h}/system/marketplace`),children:a(`marketplace.browseLink`)})]}):(0,D.jsx)(`div`,{className:`grid gap-3`,children:v.map(t=>(0,D.jsxs)(l,{children:[(0,D.jsxs)(f,{className:`flex flex-row items-start justify-between gap-3 pb-2`,children:[(0,D.jsxs)(`div`,{className:`min-w-0`,children:[(0,D.jsxs)(p,{className:`text-base truncate flex items-center gap-2`,children:[t.manifestId,(0,D.jsx)(d,{variant:`outline`,children:a(`marketplace.versionBadge`,{version:t.version})})]}),(0,D.jsxs)(`div`,{className:`text-xs text-muted-foreground mt-1 flex flex-wrap gap-x-3 gap-y-1`,children:[(0,D.jsx)(`span`,{children:a(`marketplace.installedAt`,{when:new Date(t.installedAt).toLocaleString(c||void 0)})}),t.installedBy&&(0,D.jsx)(`span`,{children:a(`marketplace.installedBy`,{user:t.installedBy})}),(0,D.jsxs)(`span`,{children:[a(`marketplace.installedPackageId`),` `,(0,D.jsx)(`code`,{className:`font-mono`,children:t.packageId})]})]})]}),(0,D.jsxs)(`div`,{className:`flex items-center gap-2 shrink-0`,children:[(0,D.jsxs)(m,{variant:`ghost`,size:`sm`,onClick:()=>e(`${h}/system/marketplace/${t.packageId}`),children:[(0,D.jsx)(u,{className:`h-4 w-4 mr-1.5`,"aria-hidden":`true`}),a(`marketplace.action.details`)]}),k===`local`&&(0,D.jsxs)(m,{variant:`outline`,size:`sm`,onClick:()=>void R(t),disabled:N===t.manifestId,children:[(0,D.jsx)(_,{className:`h-4 w-4 mr-1.5`,"aria-hidden":`true`}),N===t.manifestId?a(`marketplace.action.uninstalling`):a(`marketplace.action.uninstall`)]})]})]}),k===`local`&&(0,D.jsx)(y,{className:`pt-0 text-xs text-muted-foreground`,dangerouslySetInnerHTML:{__html:a(`marketplace.cachedAs`,{path:`.objectstack/installed-packages/${t.manifestId.replace(/[^a-zA-Z0-9._-]/g,`_`)}.json`})}})]},t.manifestId))}),(0,D.jsx)(`p`,{className:`text-xs text-muted-foreground border-t pt-4`,dangerouslySetInnerHTML:{__html:a(`marketplace.installedAdditiveNote`)}})]}):(0,D.jsx)(C,{})}c.register(`marketplace:installed-list`,()=>(0,D.jsx)(O,{}),{namespace:`app-shell`,label:`Installed Marketplace Packages`,category:`plugin`,inputs:[]});var k=t({MarketplaceInstalledPage:()=>A});function A(){let e=i(),{appName:t}=r(),{t:n}=s(),a=t?`/apps/${t}`:``;return(0,D.jsxs)(`div`,{className:`flex flex-col gap-6 p-4 sm:p-6 max-w-5xl`,children:[(0,D.jsxs)(m,{variant:`ghost`,size:`sm`,className:`self-start`,onClick:()=>e(`${a}/system/marketplace`),children:[(0,D.jsx)(v,{className:`h-4 w-4 mr-1.5`,"aria-hidden":`true`}),n(`marketplace.back`)]}),(0,D.jsxs)(`div`,{children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,D.jsx)(h,{className:`h-6 w-6 text-primary`,"aria-hidden":`true`}),(0,D.jsx)(`h1`,{className:`text-xl sm:text-2xl font-bold tracking-tight`,children:n(`marketplace.installedTitle`)})]}),(0,D.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1`,dangerouslySetInnerHTML:{__html:n(`marketplace.installedSubtitle`)}})]}),(0,D.jsx)(O,{})]})}export{k as t};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{o as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{b as n,h as r,p as i,r as a}from"./vendor-react-CsWFRkED.js";import{S as o,_ as s}from"./infrastructure-CerjT_c2.js";import{A as c,Xn as l,at as ee}from"./framework-LCCQTTcs.js";import{An as te,Ar as ne,Cr as re,Dn as ie,Ds as ae,En as oe,Fs as se,Hn as u,Hs as d,Ic as f,Ir as p,Kn as m,Nr as ce,On as le,Os as ue,Pr as de,Qn as fe,Qr as h,Sr as pe,Ti as me,Tr as he,Un as ge,Wn as _e,Za as ve,as as ye,br as be,el as xe,eo as g,jr as Se,js as Ce,kn as we,kr as Te,lc as Ee,li as _,na as De,ol as Oe,ra as v,sc as y,ta as ke,uc as b,vn as x,wr as Ae,xo as S,xr as je}from"./ui-components-3mb69z8L.js";import{r as C}from"./vendor-ui-utils-BFw4cGI6.js";import"./MetadataProvider-DwMR1SMR.js";import{t as Me}from"./assistantBus-DNH-fDWN.js";import{D as w,_ as Ne,a as Pe,c as Fe,d as Ie,g as Le,h as Re,i as T,l as ze,m as Be,n as Ve,o as He,s as Ue,t as We,v as Ge}from"./MarketplaceAccessDenied-CrK7hygV.js";import{n as Ke,t as qe}from"./usePackageL10n-Cy-u65Zo.js";var E=e(n(),1),D=a();function Je(e){let t=e.replace(/\r\n/g,`
|
|
2
|
-
`).split(`
|
|
3
|
-
`),n=[],r=0;for(;r<t.length;){let e=t[r];if(e.startsWith("```")){let i=e.slice(3).trim();r++;let a=[];for(;r<t.length&&!t[r].startsWith("```");)a.push(t[r]),r++;r++,n.push({type:`code`,text:a.join(`
|
|
4
|
-
`),lang:i});continue}let i=/^(#{1,3})\s+(.*)$/.exec(e);if(i){let e=i[1].length;n.push({type:`h${e}`,text:i[2].trim()}),r++;continue}if(/^[-*]\s+/.test(e)){let e=[];for(;r<t.length&&/^[-*]\s+/.test(t[r]);)e.push(t[r].replace(/^[-*]\s+/,``)),r++;n.push({type:`ul`,items:e});continue}if(/^\d+\.\s+/.test(e)){let e=[];for(;r<t.length&&/^\d+\.\s+/.test(t[r]);)e.push(t[r].replace(/^\d+\.\s+/,``)),r++;n.push({type:`ol`,items:e});continue}if(!e.trim()){r++;continue}let a=[];for(;r<t.length&&t[r].trim()&&!/^#{1,3}\s+/.test(t[r])&&!/^[-*]\s+/.test(t[r])&&!/^\d+\.\s+/.test(t[r])&&!t[r].startsWith("```");)a.push(t[r]),r++;n.push({type:`p`,text:a.join(` `)})}return n}function O(e){let t=[],n=e,r=0,i=[{re:/`([^`]+)`/,render:e=>(0,D.jsx)(`code`,{className:`rounded bg-muted px-1.5 py-0.5 font-mono text-[0.85em]`,children:e[1]},`k${r++}`)},{re:/\*\*([^*]+)\*\*/,render:e=>(0,D.jsx)(`strong`,{className:`font-semibold text-foreground`,children:e[1]},`k${r++}`)},{re:/\*([^*]+)\*/,render:e=>(0,D.jsx)(`em`,{children:e[1]},`k${r++}`)},{re:/\[([^\]]+)\]\(([^)]+)\)/,render:e=>(0,D.jsx)(`a`,{href:e[2],target:`_blank`,rel:`noopener noreferrer`,className:`text-violet-600 underline-offset-2 hover:underline dark:text-violet-400`,children:e[1]},`k${r++}`)}];for(;n;){let e=-1,r=null,a=null;for(let t of i){let i=t.re.exec(n);i&&(e===-1||i.index<e)&&(e=i.index,r=i,a=t)}if(!r||!a){t.push(n);break}e>0&&t.push(n.slice(0,e)),t.push(a.render(r)),n=n.slice(e+r[0].length)}return(0,D.jsx)(D.Fragment,{children:t.map((e,t)=>(0,D.jsx)(E.Fragment,{children:e},t))})}function Ye({source:e,className:t}){let n=Je(e);return(0,D.jsx)(`div`,{className:`flex flex-col gap-4 text-sm leading-relaxed text-foreground/90 ${t??``}`,children:n.map((e,t)=>{switch(e.type){case`h1`:return(0,D.jsx)(`h2`,{className:`mt-2 text-xl font-bold tracking-tight`,children:O(e.text??``)},t);case`h2`:return(0,D.jsx)(`h3`,{className:`mt-3 text-base font-semibold tracking-tight`,children:O(e.text??``)},t);case`h3`:return(0,D.jsx)(`h4`,{className:`mt-2 text-sm font-semibold tracking-tight text-foreground/80`,children:O(e.text??``)},t);case`p`:return(0,D.jsx)(`p`,{children:O(e.text??``)},t);case`ul`:return(0,D.jsx)(`ul`,{className:`ml-1 flex list-none flex-col gap-1.5`,children:(e.items??[]).map((e,t)=>(0,D.jsxs)(`li`,{className:`flex gap-2`,children:[(0,D.jsx)(`span`,{"aria-hidden":`true`,className:`mt-1.5 inline-block h-1.5 w-1.5 shrink-0 rounded-full bg-violet-500/70`}),(0,D.jsx)(`span`,{children:O(e)})]},t))},t);case`ol`:return(0,D.jsx)(`ol`,{className:`ml-5 flex list-decimal flex-col gap-1.5 marker:text-muted-foreground`,children:(e.items??[]).map((e,t)=>(0,D.jsx)(`li`,{className:`pl-1`,children:O(e)},t))},t);case`code`:return(0,D.jsx)(`pre`,{className:`overflow-x-auto rounded-lg border bg-muted/40 p-3 text-xs leading-relaxed`,children:(0,D.jsx)(`code`,{className:`font-mono`,children:e.text})},t)}return null})})}var Xe={node:`In-process · full trust`,sandbox:`Sandboxed`,worker:`Out-of-process`};function k({icon:e,label:t,items:n}){return!n||n.length===0?null:(0,D.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,D.jsx)(e,{className:`h-3.5 w-3.5 mt-0.5 text-muted-foreground shrink-0`,"aria-hidden":`true`}),(0,D.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,D.jsx)(`div`,{className:`text-xs font-medium`,children:t}),(0,D.jsx)(`div`,{className:`flex flex-wrap gap-1 mt-0.5`,children:n.map(e=>(0,D.jsx)(`code`,{className:`font-mono text-[11px] px-1 py-0.5 rounded bg-muted break-all`,children:e},e))})]})]})}function Ze({version:e}){let{t}=c();if(!e?.contains_code)return null;let n=e.permissions??{},r=(n.services?.length??0)+(n.hooks?.length??0)+(n.network?.length??0)+(n.fs?.length??0)>0;return(0,D.jsxs)(`div`,{className:`rounded-md border border-amber-500/30 bg-amber-500/5 p-3 space-y-3 text-sm`,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-2 font-medium`,children:[(0,D.jsx)(d,{className:`h-4 w-4 text-amber-600 shrink-0`,"aria-hidden":`true`}),t(`marketplace.disclosure.containsCode`,{defaultValue:`This package contains code`})]}),(0,D.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[e.runtime&&(0,D.jsx)(p,{variant:`outline`,children:t(`marketplace.disclosure.runtime.${e.runtime}`,{defaultValue:Xe[e.runtime]})}),e.platform_verified?(0,D.jsxs)(p,{variant:`outline`,className:`gap-1 border-green-500/40 text-green-700 dark:text-green-400`,children:[(0,D.jsx)(De,{className:`h-3 w-3`,"aria-hidden":`true`}),t(`marketplace.disclosure.reviewed`,{defaultValue:`Reviewed & approved`})]}):(0,D.jsxs)(p,{variant:`outline`,className:`gap-1 border-amber-500/40 text-amber-700 dark:text-amber-400`,children:[(0,D.jsx)(v,{className:`h-3 w-3`,"aria-hidden":`true`}),t(`marketplace.disclosure.unreviewed`,{defaultValue:`Not yet reviewed`})]}),e.signed&&(0,D.jsxs)(p,{variant:`outline`,className:`gap-1`,children:[(0,D.jsx)(y,{className:`h-3 w-3`,"aria-hidden":`true`}),t(`marketplace.disclosure.signed`,{defaultValue:`Signed`})]})]}),r?(0,D.jsxs)(`div`,{className:`space-y-2`,children:[(0,D.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:t(`marketplace.disclosure.grantsIntro`,{defaultValue:`On install, this package will be granted:`})}),(0,D.jsx)(k,{icon:f,label:t(`marketplace.disclosure.services`,{defaultValue:`Platform services`}),items:n.services??void 0}),(0,D.jsx)(k,{icon:_,label:t(`marketplace.disclosure.hooks`,{defaultValue:`Lifecycle hooks`}),items:n.hooks??void 0}),(0,D.jsx)(k,{icon:g,label:t(`marketplace.disclosure.network`,{defaultValue:`Network access`}),items:n.network??void 0}),(0,D.jsx)(k,{icon:ye,label:t(`marketplace.disclosure.fs`,{defaultValue:`Filesystem access`}),items:n.fs??void 0})]}):(0,D.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:t(`marketplace.disclosure.noPermissions`,{defaultValue:`Requests no special permissions.`})})]})}var A=`${``.replace(/\/$/,``)}/api/v1/security/suggested-bindings`;function j(e={}){let t={Accept:`application/json`,...e},n=o.get();return n?{...t,Authorization:`Bearer ${n}`}:t}async function M(e){let t=null;try{t=await e.json()}catch{}if(!e.ok){let n=t?.error?.code??`HTTP_${e.status}`,r=t?.error?.message??t?.error??e.statusText,i=Error(typeof r==`string`?r:String(n));throw i.code=n,i.status=e.status,i}return t?.data??t}async function N(e={}){let t=new URLSearchParams;e.status&&t.set(`status`,e.status),e.packageId&&t.set(`packageId`,e.packageId);let n=t.toString(),r=await M(await fetch(`${A}${n?`?${n}`:``}`,{credentials:`include`,headers:j()}));return Array.isArray(r?.suggestions)?r.suggestions:[]}async function P(e){return(await M(await fetch(`${A}/${encodeURIComponent(e)}/confirm`,{method:`POST`,credentials:`include`,headers:j({"Content-Type":`application/json`})})))?.suggestion}async function F(e){return(await M(await fetch(`${A}/${encodeURIComponent(e)}/dismiss`,{method:`POST`,credentials:`include`,headers:j({"Content-Type":`application/json`})})))?.suggestion}function Qe({packageId:e,strings:t,className:n,onResolved:r}){let[i,a]=(0,E.useState)([]),[o,s]=(0,E.useState)(null),c=(0,E.useCallback)(()=>{let t=!1;return N({status:`pending`,...e?{packageId:e}:{}}).then(e=>{t||a(e)}).catch(()=>{}),()=>{t=!0}},[e]);(0,E.useEffect)(()=>c(),[c]);let l=async(e,n)=>{s(e.id);try{let i=n===`confirm`?await P(e.id):await F(e.id);a(t=>t.filter(t=>t.id!==e.id)),C.success(n===`confirm`?t.confirmedToast(e):t.dismissedToast(e)),r?.(i??e)}catch(e){C.error(e?.message??String(e))}finally{s(null)}};return i.length===0?null:(0,D.jsx)(`div`,{"data-testid":`suggested-bindings-panel`,className:Oe(`rounded-lg border border-amber-300/60 dark:border-amber-700/50 bg-amber-50 dark:bg-amber-950/30 px-3 py-2 space-y-2`,n),children:i.map(e=>(0,D.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,D.jsx)(ke,{className:`h-4 w-4 shrink-0 text-amber-600 dark:text-amber-400`}),(0,D.jsx)(`p`,{className:`flex-1 min-w-0 text-sm text-amber-900 dark:text-amber-200`,children:t.describe(e)}),(0,D.jsx)(h,{size:`sm`,disabled:o===e.id,onClick:()=>l(e,`confirm`),"data-testid":`suggested-binding-confirm-${e.permission_set_name}`,children:o===e.id?t.confirming:t.confirm}),(0,D.jsx)(h,{size:`sm`,variant:`ghost`,disabled:o===e.id,onClick:()=>l(e,`dismiss`),"data-testid":`suggested-binding-dismiss-${e.permission_set_name}`,children:t.dismiss})]},e.id))})}var $e=t({MarketplacePackagePage:()=>et});function et(){let e=i(),{packageId:t,appName:n}=r(),a=s(),{t:o,language:d}=c(),f={describe:e=>o(e.anchor===`guest`?`marketplace.suggestedBindings.promptGuest`:`marketplace.suggestedBindings.promptEveryone`,{set:e.permission_set_name}),confirm:o(`marketplace.suggestedBindings.confirm`),confirming:o(`marketplace.suggestedBindings.confirming`),dismiss:o(`marketplace.suggestedBindings.dismiss`),confirmedToast:e=>o(`marketplace.suggestedBindings.confirmedToast`,{set:e.permission_set_name,anchor:e.anchor}),dismissedToast:e=>o(`marketplace.suggestedBindings.dismissedToast`,{set:e.permission_set_name})},ye=n?`/apps/${n}`:``,{refresh:g}=ee(),[_,De]=(0,E.useState)(null),[Oe,v]=(0,E.useState)(!0),[ke,C]=(0,E.useState)(null),[Je,O]=(0,E.useState)(!1),[Xe,k]=(0,E.useState)([]),[A,j]=(0,E.useState)(!1),[M,N]=(0,E.useState)(null),[P,F]=(0,E.useState)(``),[$e,et]=(0,E.useState)({}),[tt,nt]=(0,E.useState)(!1),[rt,it]=(0,E.useState)(!1),[I,at]=(0,E.useState)(!1),[L,R]=(0,E.useState)(null),[z,ot]=(0,E.useState)(null),[B,V]=(0,E.useState)(null),[H,U]=(0,E.useState)(null),[W,G]=(0,E.useState)(null),[st,ct]=(0,E.useState)([]),[lt,K]=(0,E.useState)(!1),[q,J]=(0,E.useState)(null);(0,E.useEffect)(()=>{if(!w().features.installLocal)return;let e=!1;return(async()=>{let t=await Ie();e||ct(t)})(),()=>{e=!0}},[t,q]),(0,E.useEffect)(()=>{if(!t)return;let e=w().defaultEnvironmentId??``,n=!1;return(async()=>{let r=await T(t,e);n||!r||(V(r),ot(r.version))})(),()=>{n=!0}},[t]),(0,E.useEffect)(()=>{let e=!1;return(async()=>{if(t){v(!0),C(null);try{let n=await Pe(t);e||De(n)}catch(t){e||C(t?.message??String(t))}finally{e||v(!1)}}})(),()=>{e=!0}},[t]);let ut=async()=>{O(!0),R(null),N(null);let e=w().defaultEnvironmentId;if(e){j(!1),F(e),k([]);return}j(!0);try{let[e,n]=await Promise.all([Fe(),ze()]),r=e.filter(e=>{let t=e.organization_id;return t?n.has(String(t)):!1});k(r),et({});let i=t;i&&Promise.all(r.map(async e=>{try{let t=await T(i,e.id);return t?[e.id,t.version]:null}catch{return null}})).then(e=>{let t={};for(let n of e)n&&(t[n[0]]=n[1]);et(t)}),e.length>0&&r.length===0?N(o(`marketplace.install.noPermission`)):r.length===1&&F(r[0].id)}catch(e){let t=e?.status;N(t===401||t===403?o(`marketplace.install.signInFirst`):e?.message??String(e))}finally{j(!1)}},dt=async()=>{if(!(!t||!P)){at(!0),R(null);try{let e=(await Ue({packageId:t,environmentId:P,seedSampleData:tt}))?.installation?.version??_?.package?.latest_version?.version??_?.versions?.[0]?.version??``;ot(e||`installed`);try{let e=w().defaultEnvironmentId||P;if(e){let n=await T(t,e);n&&V(n)}}catch{}let n=w().defaultEnvironmentId;if(!n||n===P)try{if(typeof sessionStorage<`u`)for(let e of Object.keys(sessionStorage))e.startsWith(`objectui:metadata:`)&&sessionStorage.removeItem(e);await g()}catch{}R({ok:!0,message:o(`marketplace.install.success`)}),Me()}catch(e){R({ok:!1,message:e?.message??String(e)})}finally{at(!1)}}},ft=async()=>{if(t){K(!0),J(null);try{let e=await He({packageId:t});try{await g(`app`)}catch{}J({ok:!0,message:o(`marketplace.install.localSuccess`,{version:e.version,name:_?.package?qe(_.package,d).displayName:e.manifestId})}),Me()}catch(e){e?.code;let t=e?.message??String(e);l(e,`MANIFEST_CONFLICT`)?t=o(`marketplace.install.localManifestConflict`,{message:t}):l(e,`UNAUTHENTICATED`)?t=o(`marketplace.install.localUnauthorized`):l(e,`MARKETPLACE_UNAVAILABLE`)&&(t=o(`marketplace.install.localMarketplaceUnavailable`)),J({ok:!1,message:t})}finally{K(!1)}}},pt=async()=>{if(Q&&confirm(o(`marketplace.uninstall.confirm`,{manifestId:Q.manifestId,version:Q.version}))){K(!0),J(null);try{await Ge(Q.manifestId);try{await g(`app`)}catch{}J({ok:!0,message:o(`marketplace.uninstall.successInDetail`,{manifestId:Q.manifestId})})}catch(e){J({ok:!1,message:e?.message??String(e)})}finally{K(!1)}}},mt=async()=>{if(B){U(`reseed`),G(null);try{let e=await Ne(B.installationId);e.ok?(V({...B,withSampleData:!0}),G({ok:!0,text:o(`marketplace.detail.reseedQueued`)})):G({ok:!1,text:e.error||`Re-seed failed`})}finally{U(null)}}},ht=async()=>{if(B&&confirm(o(`marketplace.detail.purgeConfirm`))){U(`purge`),G(null);try{let e=await Re(B.installationId);if(e.ok){V({...B,withSampleData:!1});let t=e.deleted??0;G({ok:!0,text:t>0?o(`marketplace.detail.purgeSuccess`,{count:t}):o(`marketplace.detail.purgeNoData`)})}else G({ok:!1,text:e.error||`Purge failed`})}finally{U(null)}}},gt=async()=>{if(Q){U(`reseed`),G(null);try{let e=await Le(Q.manifestId);ct(e=>e.map(e=>e.manifestId===Q.manifestId?{...e,withSampleData:!0}:e));let t=e.inserted??0,n=e.updated??0,r=e.errors??0,i=o(`marketplace.detail.reseedLocalSuccess`,{inserted:t,updated:n});G(r>0?{ok:!1,text:`${i} ${o(`marketplace.detail.reseedPartialErrors`,{count:r})}`}:{ok:!0,text:i})}catch(e){G({ok:!1,text:e?.message||`Re-seed failed`})}finally{U(null)}}},_t=async()=>{if(Q&&confirm(o(`marketplace.detail.purgeConfirm`))){U(`purge`),G(null);try{let e=await Be(Q.manifestId);ct(e=>e.map(e=>e.manifestId===Q.manifestId?{...e,withSampleData:!1}:e));let t=e.deleted??0;G({ok:!0,text:t>0?o(`marketplace.detail.purgeSuccess`,{count:t}):o(`marketplace.detail.purgeNoData`)})}catch(e){G({ok:!1,text:e?.message||`Purge failed`})}finally{U(null)}}};if(Oe)return(0,D.jsxs)(`div`,{className:`mx-auto w-full max-w-6xl flex flex-col gap-6 p-4 sm:p-6`,children:[(0,D.jsx)(x,{className:`h-8 w-32`}),(0,D.jsx)(x,{className:`h-16 w-full`}),(0,D.jsx)(x,{className:`h-64 w-full`})]});if(ke||!_)return(0,D.jsxs)(`div`,{className:`mx-auto w-full max-w-6xl flex flex-col gap-6 p-4 sm:p-6`,children:[(0,D.jsxs)(h,{variant:`ghost`,size:`sm`,onClick:()=>e(`${ye}/system/marketplace`),children:[(0,D.jsx)(xe,{className:`h-4 w-4 mr-1.5`,"aria-hidden":`true`}),o(`marketplace.back`)]}),(0,D.jsxs)(`div`,{className:`flex items-start gap-3 rounded-md border border-destructive/30 bg-destructive/5 p-4 text-sm`,children:[(0,D.jsx)(b,{className:`h-4 w-4 mt-0.5 text-destructive`,"aria-hidden":`true`}),(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`div`,{className:`font-medium text-destructive`,children:o(`marketplace.load.packageFailed`)}),(0,D.jsx)(`div`,{className:`text-muted-foreground mt-1`,children:ke??o(`marketplace.load.notFound`)})]})]})]});let Y=_.package,X=qe(Y,d),Z=Y.latest_version?.version??_.versions[0]?.version??null,Q=st.find(e=>e.manifestId===Y.manifest_id)??null,vt=!!Y.latest_version?.contains_code,$=!!z&&z!==`installed`&&!!Z&&z!==Z,yt=w().features.installLocal,bt=!Z||lt||I||!yt&&!!z&&!$,xt=yt?{label:o(lt?`marketplace.action.working`:Q?`marketplace.action.reinstall`:`marketplace.action.install`),onClick:ft}:{label:I?o(`marketplace.action.installing`):z?$?o(`marketplace.action.updateTo`,{defaultValue:`Update`}):o(`marketplace.action.installed`,{defaultValue:`Installed`}):o(`marketplace.action.installToCloud`),onClick:ut},St=Y.category?o(`marketplace.category.${Y.category}`,{defaultValue:Y.category}):null;return a?(0,D.jsxs)(`div`,{className:`mx-auto w-full max-w-6xl flex flex-col gap-6 p-4 sm:p-6`,children:[(0,D.jsxs)(h,{variant:`ghost`,size:`sm`,className:`self-start -ml-2 text-muted-foreground hover:text-foreground`,onClick:()=>e(`${ye}/system/marketplace`),children:[(0,D.jsx)(xe,{className:`h-4 w-4 mr-1.5`,"aria-hidden":`true`}),o(`marketplace.back`)]}),(0,D.jsxs)(`div`,{className:`flex items-start gap-5 flex-wrap sm:flex-nowrap rounded-2xl border bg-gradient-to-br from-primary/5 via-background to-background p-6 sm:p-8`,children:[(0,D.jsx)(Ke,{iconUrl:Y.icon_url,displayName:X.displayName,manifestId:Y.manifest_id,className:`h-20 w-20 rounded-2xl shadow-sm ring-1 ring-border shrink-0`,initialClassName:`text-3xl font-bold`}),(0,D.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,D.jsx)(`h1`,{className:`text-2xl sm:text-3xl font-bold tracking-tight truncate`,children:X.displayName||Y.manifest_id}),Y.homepage_url&&(0,D.jsxs)(`a`,{href:Y.homepage_url,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground transition-colors`,title:o(`marketplace.detail.homepage`),children:[(0,D.jsx)(ae,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}),(0,D.jsx)(`span`,{className:`hidden sm:inline`,children:o(`marketplace.detail.homepage`)})]})]}),(0,D.jsxs)(`div`,{className:`text-sm text-muted-foreground mt-2 flex flex-wrap items-center gap-1.5`,children:[(0,D.jsx)(`code`,{className:`font-mono text-xs px-1.5 py-0.5 rounded bg-muted`,children:Y.manifest_id}),Z&&(0,D.jsx)(p,{variant:`outline`,children:o(`marketplace.versionBadge`,{version:Z})}),Y.publisher&&Y.publisher!==`private`&&(0,D.jsx)(p,{variant:Y.publisher===`objectstack`?`default`:`secondary`,children:Y.publisher}),St&&(0,D.jsx)(p,{variant:`outline`,children:St}),Y.license&&(0,D.jsx)(p,{variant:`outline`,className:`font-normal`,children:Y.license}),Q&&(0,D.jsxs)(p,{variant:`default`,className:`bg-green-600 hover:bg-green-600 gap-1`,children:[(0,D.jsx)(y,{className:`h-3 w-3`,"aria-hidden":`true`}),o(`marketplace.detail.installedV`,{version:Q.version})]}),!Q&&z&&(0,D.jsxs)(p,{variant:`default`,className:`bg-green-600 hover:bg-green-600 gap-1`,children:[(0,D.jsx)(y,{className:`h-3 w-3`,"aria-hidden":`true`}),o(`marketplace.detail.installedV`,{version:z})]}),$&&(0,D.jsxs)(p,{variant:`default`,className:`bg-amber-500 hover:bg-amber-500 gap-1`,children:[(0,D.jsx)(Ee,{className:`h-3 w-3`,"aria-hidden":`true`}),o(`marketplace.detail.updateAvailable`,{defaultValue:`Update available`}),` → v`,Z]})]}),X.description&&(0,D.jsx)(`p`,{className:`text-sm sm:text-base text-foreground/80 mt-3 max-w-2xl leading-relaxed`,children:X.description})]}),(0,D.jsxs)(`div`,{className:`flex items-center gap-2 shrink-0 self-start`,children:[(0,D.jsxs)(h,{onClick:xt.onClick,disabled:bt,size:`lg`,className:`min-w-[8rem]`,children:[(0,D.jsx)(Ce,{className:`h-4 w-4 mr-1.5`,"aria-hidden":`true`}),xt.label]}),Q&&(0,D.jsxs)(ge,{children:[(0,D.jsx)(fe,{asChild:!0,children:(0,D.jsx)(h,{variant:`outline`,size:`lg`,className:`px-2.5`,"aria-label":o(`marketplace.detail.moreOptions`),children:(0,D.jsx)(ue,{className:`h-4 w-4`,"aria-hidden":`true`})})}),(0,D.jsxs)(_e,{align:`end`,className:`w-56`,children:[(0,D.jsxs)(m,{onSelect:gt,disabled:H!==null,children:[H===`reseed`?(0,D.jsx)(S,{className:`h-4 w-4 mr-2 animate-spin`,"aria-hidden":`true`}):(0,D.jsx)(se,{className:`h-4 w-4 mr-2`,"aria-hidden":`true`}),Q.withSampleData?o(`marketplace.detail.reseedAgain`):o(`marketplace.detail.addSampleData`)]}),(0,D.jsxs)(m,{onSelect:_t,disabled:H!==null||!Q.withSampleData,className:`text-destructive focus:text-destructive`,children:[H===`purge`?(0,D.jsx)(S,{className:`h-4 w-4 mr-2 animate-spin`,"aria-hidden":`true`}):(0,D.jsx)(me,{className:`h-4 w-4 mr-2`,"aria-hidden":`true`}),o(`marketplace.detail.purgeSampleData`)]}),(0,D.jsxs)(m,{onSelect:pt,disabled:lt,className:`text-destructive focus:text-destructive`,children:[(0,D.jsx)(me,{className:`h-4 w-4 mr-2`,"aria-hidden":`true`}),o(`marketplace.detail.uninstallFromRuntime`)]})]})]}),!Q&&B&&!w().cloudUrl&&(0,D.jsxs)(ge,{children:[(0,D.jsx)(fe,{asChild:!0,children:(0,D.jsx)(h,{variant:`outline`,size:`lg`,className:`px-2.5`,"aria-label":o(`marketplace.detail.moreOptions`),children:(0,D.jsx)(ue,{className:`h-4 w-4`,"aria-hidden":`true`})})}),(0,D.jsxs)(_e,{align:`end`,className:`w-56`,children:[(0,D.jsxs)(m,{onSelect:mt,disabled:H!==null,children:[H===`reseed`?(0,D.jsx)(S,{className:`h-4 w-4 mr-2 animate-spin`,"aria-hidden":`true`}):(0,D.jsx)(se,{className:`h-4 w-4 mr-2`,"aria-hidden":`true`}),B.withSampleData?o(`marketplace.detail.reseedAgain`):o(`marketplace.detail.addSampleData`)]}),(0,D.jsxs)(m,{onSelect:ht,disabled:H!==null||!B.withSampleData,className:`text-destructive focus:text-destructive`,children:[H===`purge`?(0,D.jsx)(S,{className:`h-4 w-4 mr-2 animate-spin`,"aria-hidden":`true`}):(0,D.jsx)(me,{className:`h-4 w-4 mr-2`,"aria-hidden":`true`}),o(`marketplace.detail.purgeSampleData`)]})]})]})]})]}),W&&(0,D.jsxs)(`div`,{role:`status`,className:`flex items-start gap-2 rounded-md border p-3 text-sm ${W.ok?`border-green-500/30 bg-green-500/5 text-green-700 dark:text-green-400`:`border-destructive/30 bg-destructive/5 text-destructive`}`,children:[W.ok?(0,D.jsx)(y,{className:`h-4 w-4 mt-0.5 shrink-0`,"aria-hidden":`true`}):(0,D.jsx)(b,{className:`h-4 w-4 mt-0.5 shrink-0`,"aria-hidden":`true`}),(0,D.jsx)(`div`,{className:`flex-1`,children:W.text}),(0,D.jsx)(`button`,{type:`button`,className:`text-xs underline opacity-60 hover:opacity-100`,onClick:()=>G(null),children:o(`marketplace.action.dismiss`)})]}),q&&(0,D.jsxs)(`div`,{role:`status`,className:`flex items-start gap-2 rounded-md border p-3 text-sm whitespace-pre-wrap ${q.ok?`border-green-500/30 bg-green-500/5 text-green-700 dark:text-green-400`:`border-destructive/30 bg-destructive/5 text-destructive`}`,children:[q.ok?(0,D.jsx)(y,{className:`h-4 w-4 mt-0.5 shrink-0`,"aria-hidden":`true`}):(0,D.jsx)(b,{className:`h-4 w-4 mt-0.5 shrink-0`,"aria-hidden":`true`}),(0,D.jsxs)(`div`,{className:`flex-1`,children:[q.message,q.ok&&(0,D.jsx)(Qe,{packageId:Y.manifest_id,strings:f,className:`mt-2`})]}),(0,D.jsx)(`button`,{type:`button`,className:`text-xs underline opacity-60 hover:opacity-100`,onClick:()=>J(null),children:o(`marketplace.action.dismiss`)})]}),(0,D.jsxs)(`div`,{className:`grid gap-4 lg:grid-cols-3`,children:[(0,D.jsx)(`div`,{className:`lg:col-span-2 space-y-4`,children:(0,D.jsxs)(ne,{children:[(0,D.jsx)(ce,{children:(0,D.jsx)(de,{className:`text-base`,children:o(`marketplace.detail.about`)})}),(0,D.jsx)(Se,{children:X.readme?(0,D.jsx)(Ye,{source:X.readme}):(0,D.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:o(`marketplace.detail.noReadme`)})})]})}),(0,D.jsx)(`div`,{className:`space-y-4`,children:(0,D.jsxs)(ne,{children:[(0,D.jsx)(ce,{children:(0,D.jsx)(de,{className:`text-base`,children:o(`marketplace.detail.versions`)})}),(0,D.jsx)(Se,{children:_.versions.length===0?(0,D.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:o(`marketplace.detail.noApprovedVersions`)}):(0,D.jsx)(`ul`,{className:`space-y-3`,children:_.versions.map(e=>(0,D.jsxs)(`li`,{className:`space-y-1 text-sm`,children:[(0,D.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,D.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,D.jsx)(ve,{className:`h-3.5 w-3.5 text-muted-foreground`,"aria-hidden":`true`}),(0,D.jsxs)(`code`,{className:`font-mono`,children:[`v`,e.version]}),e.is_prerelease&&(0,D.jsx)(p,{variant:`outline`,className:`text-xs`,children:o(`marketplace.detail.prerelease`)})]}),(0,D.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e.published_at?new Date(e.published_at).toLocaleDateString():`—`})]}),e.release_notes&&e.release_notes.trim()&&(0,D.jsx)(`p`,{className:`whitespace-pre-line pl-5 text-xs text-muted-foreground`,children:e.release_notes.trim()})]},e.id))})})]})})]}),(0,D.jsx)(be,{open:Je,onOpenChange:e=>{O(e),e||(R(null),it(!1))},children:(0,D.jsxs)(je,{children:[(0,D.jsxs)(Ae,{children:[(0,D.jsx)(he,{children:o(`marketplace.install.dialogTitle`,{name:X.displayName||Y.manifest_id})}),(0,D.jsx)(pe,{children:w().defaultEnvironmentId?o(`marketplace.install.dialogDescCurrent`,{host:typeof window<`u`?window.location.host:``}):o(`marketplace.install.dialogDescPicker`)})]}),A?(0,D.jsx)(x,{className:`h-10 w-full`}):M?(0,D.jsxs)(`div`,{className:`rounded-md border border-amber-500/30 bg-amber-500/5 p-3 text-sm space-y-2`,children:[(0,D.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,D.jsx)(b,{className:`h-4 w-4 mt-0.5 text-amber-600`,"aria-hidden":`true`}),(0,D.jsx)(`div`,{className:`flex-1`,children:M})]}),(0,D.jsx)(`a`,{href:Ve(Y.id),target:`_blank`,rel:`noopener noreferrer`,children:(0,D.jsxs)(h,{variant:`outline`,size:`sm`,className:`w-full`,children:[(0,D.jsx)(ae,{className:`h-4 w-4 mr-1.5`,"aria-hidden":`true`}),o(`marketplace.action.openOnCloud`)]})})]}):w().defaultEnvironmentId?(0,D.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,D.jsx)(Te,{id:`seed`,checked:tt,onCheckedChange:e=>nt(e===!0)}),(0,D.jsx)(u,{htmlFor:`seed`,className:`text-sm font-normal cursor-pointer`,children:o(`marketplace.install.includeSampleData`)})]}):Xe.length===0?(0,D.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:o(`marketplace.install.noEnvs`)}):(0,D.jsxs)(`div`,{className:`space-y-4`,children:[(0,D.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,D.jsx)(u,{htmlFor:`env-select`,children:o(`marketplace.install.environment`)}),(0,D.jsxs)(oe,{value:P,onValueChange:F,children:[(0,D.jsx)(we,{id:`env-select`,children:(0,D.jsx)(te,{placeholder:o(`marketplace.install.environmentPlaceholder`)})}),(0,D.jsx)(ie,{children:Xe.map(e=>{let t=$e[e.id],n=!!t&&!!Z&&t!==`installed`&&t!==Z;return(0,D.jsxs)(le,{value:e.id,children:[e.display_name||e.hostname||e.id,e.plan&&(0,D.jsxs)(`span`,{className:`text-muted-foreground`,children:[` · `,e.plan]}),t&&(n?(0,D.jsxs)(`span`,{className:`text-amber-600`,children:[` · `,o(`marketplace.install.updateTo`,{defaultValue:`Update → v{{version}}`,version:Z})]}):(0,D.jsxs)(`span`,{className:`text-muted-foreground`,children:[` · `,o(`marketplace.install.installedVersion`,{defaultValue:`Installed v{{version}}`,version:t})]}))]},e.id)})})]})]}),(0,D.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,D.jsx)(Te,{id:`seed`,checked:tt,onCheckedChange:e=>nt(e===!0)}),(0,D.jsx)(u,{htmlFor:`seed`,className:`text-sm font-normal cursor-pointer`,children:o(`marketplace.install.includeSampleData`)})]})]}),vt&&!M&&(0,D.jsxs)(`div`,{className:`space-y-3`,children:[(0,D.jsx)(Ze,{version:Y.latest_version}),(0,D.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,D.jsx)(Te,{id:`ack-perms`,checked:rt,onCheckedChange:e=>it(e===!0)}),(0,D.jsx)(u,{htmlFor:`ack-perms`,className:`text-sm font-normal cursor-pointer leading-snug`,children:o(`marketplace.disclosure.acknowledge`,{defaultValue:`I understand this package runs code and grants the permissions above.`})})]})]}),L&&(0,D.jsx)(`div`,{className:`rounded-md border p-3 text-sm ${L.ok?`border-green-500/30 bg-green-500/5 text-green-700`:`border-destructive/30 bg-destructive/5 text-destructive`}`,children:L.message}),L?.ok===!0&&w().defaultEnvironmentId&&w().defaultEnvironmentId===P&&(0,D.jsx)(Qe,{packageId:Y.manifest_id,strings:f}),(0,D.jsxs)(re,{children:[(0,D.jsx)(h,{variant:`outline`,onClick:()=>O(!1),children:o(`marketplace.action.close`)}),!M&&(0,D.jsx)(h,{onClick:dt,disabled:!P||I||L?.ok===!0||vt&&!rt,children:o(I?`marketplace.action.installing`:`marketplace.action.install`)})]})]})})]}):(0,D.jsx)(We,{})}export{Qe as n,$e as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{b as n,h as r,p as i,r as a}from"./vendor-react-CsWFRkED.js";import{_ as ee}from"./infrastructure-CerjT_c2.js";import{A as o}from"./framework-LCCQTTcs.js";import{Ar as s,Ir as c,Mr as l,Nr as u,Pr as d,Qr as f,Ri as p,Rn as m,Sa as h,Za as g,aa as _,ca as v,jr as y,sc as b,uc as te,vn as x}from"./ui-components-3mb69z8L.js";import{t as ne}from"./assistantBus-DNH-fDWN.js";import{D as re,d as S,f as ie,o as ae,p as oe,s as se,t as C,u as ce}from"./MarketplaceAccessDenied-CrK7hygV.js";import{n as w,t as T}from"./usePackageL10n-Cy-u65Zo.js";var E=t({MarketplacePage:()=>A}),D=e(n(),1),O=a();function k(){let{language:e,t}=o();return n=>{if(!n)return``;let r=new Date(n);if(Number.isNaN(r.getTime()))return``;let i=Math.floor((Date.now()-r.getTime())/864e5);if(i<1)return t(`marketplace.relativeTime.today`);try{let t=new Intl.RelativeTimeFormat(e||`en`,{numeric:`auto`});return i<30?t.format(-i,`day`):i<365?t.format(-Math.floor(i/30),`month`):t.format(-Math.floor(i/365),`year`)}catch{return i<30?t(`marketplace.relativeTime.daysAgo`,{count:i}):i<365?t(`marketplace.relativeTime.monthsAgo`,{count:Math.floor(i/30)}):t(`marketplace.relativeTime.yearsAgo`,{count:Math.floor(i/365)})}}}function A(){let e=i(),{appName:t}=r(),n=ee(),{t:a,language:E}=o(),A=k(),j=t?`/apps/${t}`:``,[M,N]=(0,D.useState)([]),[P,F]=(0,D.useState)(!0),[I,L]=(0,D.useState)(null),[R,z]=(0,D.useState)(``),[B,V]=(0,D.useState)(``),[H,U]=(0,D.useState)([]),[W,le]=(0,D.useState)([]),[G,K]=(0,D.useState)(null),[q,J]=(0,D.useState)(null),[ue,Y]=(0,D.useState)(new Set),de=(0,D.useMemo)(()=>{let e=new Map;for(let t of H)e.set(t.manifestId,t);return e},[H]),X=async()=>{F(!0),L(null);try{let[e,t,n,r]=await Promise.all([ie({limit:100}),S(),oe(),ce()]);N(e.items??[]),U(t),le(n.items??[]);let i=new Set;for(let e of t)i.add(e.manifestId);for(let e of r.items)i.add(e.manifestId);Y(i)}catch(e){L(e?.message??String(e)),N([])}finally{F(!1)}};(0,D.useEffect)(()=>{X()},[]);let fe=async e=>{K(e.id),J(null);try{re().features.installLocal?await ae({packageId:e.manifest_id||e.id,versionId:`latest`}):await se({packageId:e.id,environmentId:``,seedSampleData:!0}),J({ok:!0,text:a(`marketplace.org.installed`,{defaultValue:`Installed ${e.display_name}`,name:e.display_name})}),await X(),ne()}catch(e){J({ok:!1,text:e?.message??String(e)})}finally{K(null)}},Z=(0,D.useMemo)(()=>{let e=new Set;for(let t of M)t.category&&e.add(t.category);return Array.from(e).sort()},[M]),Q=e=>{let t=`marketplace.category.${e}`,n=a(t,{defaultValue:e});return n===t?e:n},$=(0,D.useMemo)(()=>{let e=R.trim().toLowerCase();return M.filter(t=>{if(B&&t.category!==B)return!1;if(!e)return!0;let n=T(t,E);return`${n.displayName} ${t.manifest_id} ${n.description??``}`.toLowerCase().includes(e)})},[M,R,B,E]);return n?(0,O.jsxs)(`div`,{className:`flex flex-col gap-6 p-4 sm:p-6`,children:[(0,O.jsxs)(`div`,{className:`flex items-start justify-between gap-4 flex-wrap`,children:[(0,O.jsxs)(`div`,{className:`min-w-0`,children:[(0,O.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,O.jsx)(p,{className:`h-6 w-6 text-primary`,"aria-hidden":`true`}),(0,O.jsx)(`h1`,{className:`text-xl sm:text-2xl font-bold tracking-tight`,children:a(`marketplace.title`)})]}),(0,O.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1`,children:a(`marketplace.subtitle`)})]}),(0,O.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,O.jsxs)(f,{variant:`outline`,size:`sm`,onClick:()=>e(`${j}/system/marketplace/installed`),children:[(0,O.jsx)(_,{className:`h-4 w-4 mr-1.5`,"aria-hidden":`true`}),H.length>0?a(`marketplace.installedCount`,{count:H.length}):a(`marketplace.installed`)]}),(0,O.jsxs)(f,{variant:`outline`,size:`sm`,onClick:()=>void X(),disabled:P,children:[(0,O.jsx)(h,{className:`h-4 w-4 mr-1.5`,"aria-hidden":`true`}),a(`marketplace.refresh`)]})]})]}),(0,O.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-3`,children:[(0,O.jsxs)(`div`,{className:`relative flex-1`,children:[(0,O.jsx)(v,{className:`absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground`,"aria-hidden":`true`}),(0,O.jsx)(m,{value:R,onChange:e=>z(e.target.value),placeholder:a(`marketplace.searchPlaceholder`),className:`pl-9`,"aria-label":a(`marketplace.searchAria`)})]}),Z.length>0&&(0,O.jsxs)(`div`,{className:`flex flex-wrap gap-1.5`,children:[(0,O.jsx)(f,{size:`sm`,variant:B===``?`default`:`outline`,onClick:()=>V(``),children:a(`marketplace.all`)}),Z.map(e=>(0,O.jsx)(f,{size:`sm`,variant:B===e?`default`:`outline`,onClick:()=>V(e),children:Q(e)},e))]})]}),I&&(0,O.jsxs)(`div`,{className:`flex items-start gap-3 rounded-md border border-destructive/30 bg-destructive/5 p-4 text-sm`,children:[(0,O.jsx)(te,{className:`h-4 w-4 mt-0.5 text-destructive`,"aria-hidden":`true`}),(0,O.jsxs)(`div`,{children:[(0,O.jsx)(`div`,{className:`font-medium text-destructive`,children:a(`marketplace.load.failed`)}),(0,O.jsx)(`div`,{className:`text-muted-foreground mt-1`,children:I}),(0,O.jsx)(`div`,{className:`text-xs text-muted-foreground mt-2`,dangerouslySetInnerHTML:{__html:a(`marketplace.load.failedHint`)}})]})]}),W.length>0&&(0,O.jsxs)(`section`,{className:`flex flex-col gap-3`,children:[(0,O.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,O.jsx)(p,{className:`h-5 w-5 text-primary`,"aria-hidden":`true`}),(0,O.jsx)(`h2`,{className:`text-sm font-semibold`,children:a(`marketplace.org.heading`,{defaultValue:`Your organization`})}),(0,O.jsx)(c,{variant:`secondary`,className:`text-xs`,children:W.length})]}),q&&(0,O.jsx)(`div`,{className:`rounded-md border p-3 text-sm ${q.ok?`border-green-500/30 bg-green-500/5 text-green-700 dark:text-green-400`:`border-destructive/30 bg-destructive/5 text-destructive`}`,children:q.text}),(0,O.jsx)(`div`,{className:`grid gap-4 sm:grid-cols-2 lg:grid-cols-3`,children:W.map(e=>{let t=ue.has(e.manifest_id);return(0,O.jsxs)(s,{className:`flex flex-col`,"data-testid":`org-card-${e.manifest_id}`,children:[(0,O.jsxs)(u,{className:`flex flex-row items-start gap-3 pb-2`,children:[(0,O.jsx)(w,{iconUrl:e.icon_url,displayName:e.display_name,manifestId:e.manifest_id}),(0,O.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,O.jsx)(d,{className:`text-base truncate`,children:e.display_name}),(0,O.jsx)(l,{className:`text-xs truncate`,children:(0,O.jsx)(`code`,{className:`font-mono`,children:e.manifest_id})})]}),e.visibility&&(0,O.jsx)(c,{variant:`outline`,className:`shrink-0 text-xs`,children:e.visibility})]}),(0,O.jsxs)(y,{className:`flex-1 flex flex-col gap-2`,children:[(0,O.jsx)(`p`,{className:`text-sm text-muted-foreground line-clamp-2`,children:e.description||a(`marketplace.noDescription`)}),(0,O.jsxs)(`div`,{className:`flex items-center gap-2 mt-auto pt-2 flex-wrap`,children:[e.latest_version&&(0,O.jsxs)(c,{variant:`outline`,className:`text-xs`,children:[(0,O.jsx)(g,{className:`h-3 w-3 mr-1`,"aria-hidden":`true`}),a(`marketplace.versionBadge`,{version:e.latest_version})]}),(0,O.jsx)(`div`,{className:`ml-auto`,children:t?(0,O.jsxs)(c,{variant:`default`,className:`text-xs bg-green-600 hover:bg-green-600`,children:[(0,O.jsx)(b,{className:`h-3 w-3 mr-1`,"aria-hidden":`true`}),a(`marketplace.org.installedBadge`,{defaultValue:`Installed`})]}):(0,O.jsx)(f,{size:`sm`,onClick:()=>void fe(e),disabled:G===e.id,children:G===e.id?a(`marketplace.org.installing`,{defaultValue:`Installing…`}):a(`marketplace.org.install`,{defaultValue:`Install`})})})]})]})]},e.id)})}),(0,O.jsx)(`div`,{className:`border-b pt-2`})]}),P&&M.length===0?(0,O.jsx)(`div`,{className:`grid gap-4 sm:grid-cols-2 lg:grid-cols-3`,children:Array.from({length:6}).map((e,t)=>(0,O.jsxs)(s,{children:[(0,O.jsxs)(u,{className:`pb-2`,children:[(0,O.jsx)(x,{className:`h-10 w-10 rounded-lg mb-2`}),(0,O.jsx)(x,{className:`h-5 w-3/4`}),(0,O.jsx)(x,{className:`h-4 w-1/2 mt-1`})]}),(0,O.jsx)(y,{children:(0,O.jsx)(x,{className:`h-12 w-full`})})]},t))}):$.length===0?(0,O.jsx)(`div`,{className:`text-center py-12 text-sm text-muted-foreground`,children:M.length===0?a(`marketplace.noApprovedYet`):a(`marketplace.noMatchFilters`)}):(0,O.jsx)(`div`,{className:`grid gap-4 sm:grid-cols-2 lg:grid-cols-3`,children:$.map(t=>{let n=de.get(t.manifest_id),r=T(t,E);return(0,O.jsxs)(s,{className:`cursor-pointer transition-colors hover:bg-accent/50 flex flex-col`,onClick:()=>e(`${j}/system/marketplace/${t.id}`),role:`link`,tabIndex:0,onKeyDown:n=>{(n.key===`Enter`||n.key===` `)&&(n.preventDefault(),e(`${j}/system/marketplace/${t.id}`))},"data-testid":`marketplace-card-${t.manifest_id}`,children:[(0,O.jsxs)(u,{className:`flex flex-row items-start gap-3 pb-2`,children:[(0,O.jsx)(w,{iconUrl:t.icon_url,displayName:r.displayName,manifestId:t.manifest_id}),(0,O.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,O.jsx)(d,{className:`text-base truncate`,children:r.displayName}),(0,O.jsx)(l,{className:`text-xs truncate`,children:(0,O.jsx)(`code`,{className:`font-mono`,children:t.manifest_id})})]}),t.publisher&&t.publisher!==`private`&&(0,O.jsx)(c,{variant:t.publisher===`objectstack`?`default`:`secondary`,className:`shrink-0`,children:t.publisher})]}),(0,O.jsxs)(y,{className:`flex-1 flex flex-col gap-2`,children:[(0,O.jsx)(`p`,{className:`text-sm text-muted-foreground line-clamp-2`,children:r.description||a(`marketplace.noDescription`)}),(0,O.jsxs)(`div`,{className:`flex items-center gap-2 mt-auto pt-2 flex-wrap`,children:[n&&(0,O.jsxs)(c,{variant:`default`,className:`text-xs bg-green-600 hover:bg-green-600`,children:[(0,O.jsx)(b,{className:`h-3 w-3 mr-1`,"aria-hidden":`true`}),a(`marketplace.installedBadge`,{version:n.version})]}),t.latest_version?.version&&(0,O.jsxs)(c,{variant:`outline`,className:`text-xs`,children:[(0,O.jsx)(g,{className:`h-3 w-3 mr-1`,"aria-hidden":`true`}),a(`marketplace.versionBadge`,{version:t.latest_version.version})]}),t.category&&(0,O.jsx)(c,{variant:`outline`,className:`text-xs`,children:Q(t.category)}),t.latest_version?.published_at&&(0,O.jsx)(`span`,{className:`text-xs text-muted-foreground ml-auto`,children:A(t.latest_version.published_at)})]})]})]},t.id)})})]}):(0,O.jsx)(C,{})}export{E as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{b as t,r as n}from"./vendor-react-CsWFRkED.js";import{A as r,Nn as i}from"./framework-LCCQTTcs.js";import{Rs as a,gc as o,vc as s,yc as c}from"./ui-components-3mb69z8L.js";var l=e(t(),1),u=n();function d({sections:e,open:t}){let{t:n}=r(),[i,d]=(0,l.useState)([`0`]),[f,p]=(0,l.useState)(null);if(!t)return null;let m=async(e,t)=>{try{await navigator.clipboard.writeText(JSON.stringify(e,null,2)),p(t),setTimeout(()=>p(null),2e3)}catch(e){console.error(`Failed to copy:`,e)}},h=e=>{d(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])};return(0,u.jsxs)(`div`,{className:`w-80 border-l bg-background p-0 overflow-hidden flex flex-col shrink-0 z-20 transition-all`,children:[(0,u.jsxs)(`div`,{className:`px-4 py-3 border-b bg-muted/5 flex items-center justify-between`,children:[(0,u.jsx)(`span`,{className:`text-xs font-semibold uppercase tracking-wider text-muted-foreground`,children:n(`layout.metadata.panelTitle`)}),(0,u.jsx)(`span`,{className:`text-[10px] text-muted-foreground/60`,children:n(`layout.metadata.jsonBadge`)})]}),(0,u.jsx)(`div`,{className:`flex-1 overflow-auto`,children:e.map((e,t)=>{let r=String(t),l=i.includes(r),d=f===t;return(0,u.jsxs)(`div`,{className:`border-b last:border-b-0`,children:[(0,u.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-3 hover:bg-muted/5 transition-colors`,children:[(0,u.jsxs)(`button`,{type:`button`,onClick:()=>h(r),className:`flex-1 flex items-center justify-between text-left`,children:[(0,u.jsx)(`h4`,{className:`text-xs font-semibold text-foreground`,children:e.title}),l?(0,u.jsx)(s,{className:`h-3 w-3 text-muted-foreground ml-2`}):(0,u.jsx)(o,{className:`h-3 w-3 text-muted-foreground ml-2`})]}),(0,u.jsx)(`button`,{type:`button`,onClick:()=>m(e.data,t),className:`p-1 hover:bg-muted rounded transition-colors ml-2`,title:n(`layout.metadata.copyJson`),children:d?(0,u.jsx)(c,{className:`h-3 w-3 text-green-600`}):(0,u.jsx)(a,{className:`h-3 w-3 text-muted-foreground`})})]}),l&&(0,u.jsx)(`div`,{className:`px-4 pb-4`,children:(0,u.jsx)(`div`,{className:`relative rounded-md border border-border/50 bg-muted/5 overflow-hidden`,children:(0,u.jsx)(`pre`,{className:`text-[11px] leading-relaxed p-3 overflow-auto max-h-96 font-mono text-foreground/90`,children:JSON.stringify(e.data,null,2)})})})]},t)})})]})}function f(){let e=(0,l.useMemo)(()=>{try{return typeof window<`u`&&i(window.location.search).enabled}catch{return!1}},[]),[t,n]=(0,l.useState)(e);return{showDebug:t,toggleDebug:()=>n(e=>!e)}}export{f as n,d as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{b as t,f as n,p as r,r as i}from"./vendor-react-CsWFRkED.js";import{S as a,b as o,v as s,x as c}from"./infrastructure-CerjT_c2.js";import{It as l}from"./vendor-objectstack-DGpW4oR-.js";import{Jt as u,l as d,rt as f}from"./framework-LCCQTTcs.js";import{i as p}from"./plugin-form-B7CBtYvZ.js";import{i as m,r as h}from"./assistantBus-DNH-fDWN.js";var g=e(t(),1),_=i(),v=(0,g.createContext)(!1),y=`preview`,b=`draft`;function x(e){return new URLSearchParams(e).get(y)===b}var S=!1;function C(){S=!0}function w({force:e,children:t}){let i=n(),a=r(),o=(0,g.useMemo)(()=>x(i.search),[i.search]),[s,c]=(0,g.useState)(o);return(0,g.useEffect)(()=>{if(o){c(!0),S=!1;return}if(!s)return;if(S){S=!1,c(!1);return}let e=new URLSearchParams(i.search);e.set(y,b),a(`${i.pathname}?${e.toString()}${i.hash}`,{replace:!0})},[o,s,i.pathname,i.search,i.hash,a]),(0,_.jsx)(v.Provider,{value:e??(o||s),children:t})}function T(){return(0,g.useContext)(v)}var E=c();function D(){return``}function O(e={}){let{previewDrafts:t=!1,environmentId:n,onSaveAdvisory:r}=e,i=new d({baseUrl:D(),previewDrafts:t,fetch:E,...r?{onSaveAdvisory:r}:{}});return n?i.withEnvironment(n):i}var k=3e5,A=[`app`,`view`],j=1e3,M={apps:`app`,objects:`object`,dashboards:`dashboard`,reports:`report`,pages:`page`},N=`objectui:metadata:`,P=`@none`;function F(){try{return o.get()||P}catch{return P}}var I=`@anon`;function L(e){let t=2166136261,n=3266489909;for(let r=0;r<e.length;r+=1){let i=e.charCodeAt(r);t=Math.imul(t^i,16777619),n=Math.imul(n^i,2246822507)}t=Math.imul(t^t>>>15,625341585),n=Math.imul(n^n>>>13,668265263);let r=e=>(e>>>0).toString(36).padStart(7,`0`);return`${r(t)}${r(n)}`}function R(){let e=null;try{e=a.get()}catch{}return e?L(e):I}function z(e,t){return`${N}${e}:${t}:${R()}`}function B(e){return z(e,F())}function V(){if(!(typeof sessionStorage>`u`))try{let e=`:${R()}`;for(let t of Object.keys(sessionStorage))t.startsWith(N)&&!t.endsWith(e)&&sessionStorage.removeItem(t)}catch{}}function H(){try{let e=import.meta;if(e&&e.env&&typeof e.env.MODE==`string`)return e.env.MODE!==`production`}catch{}return!1}var U=H();function W(...e){U&&console.debug(`[MetadataProvider]`,...e)}function G(e){return Array.isArray(e)?e:e&&typeof e==`object`&&`items`in e&&Array.isArray(e.items)?e.items:[]}function K(e){return e==null?null:typeof e==`object`&&`item`in e?e.item??null:e}function q(e){return!!e&&typeof e==`object`&&`name`in e&&typeof e.name==`string`}function J(e){return!!e&&typeof e==`object`&&!!e.viewKind&&!!e.object}function Y(e,t){let n=t.name||`${t.object}.${t.viewKind}`,r=t.config&&typeof t.config==`object`?t.config:{},i={...r,name:n,label:t.label??r.label,isDefault:!!t.isDefault};t.viewKind===`form`?(e.formViews[n]=i,(t.isDefault||!e.form)&&(e.form=i)):(e.listViews[n]=i,t.isDefault&&(e.primary=i))}function X(e,t){if(!e.length||!t.length)return e;let n={},r=new Set;for(let e of t)J(e)&&r.add(e.object);for(let e of t){if(J(e)){Y(n[e.object]||={listViews:{},formViews:{}},e);continue}let t=e?.name||e?.list?.data?.object||e?.form?.data?.object;if(!t||r.has(t))continue;let i=n[t]||={listViews:{},formViews:{}};for(let n of l(t,e))Y(i,n)}return e.map(e=>{let t=n[e.name];if(!t)return e;let r=e.listViews||e.list_views||{},i=e.formViews||e.form_views||{},a={...e,listViews:{...t.listViews,...r}};return(Object.keys(t.formViews).length||Object.keys(i).length)&&(a.formViews={...t.formViews,...i}),t.primary&&!e.list&&(a.list=t.primary),t.form&&!e.form&&(a.form=t.form),a})}function Z(e){if(!e?.length)return e;let t={};for(let n of e){let e=n?.fields;if(!e)continue;let r=Array.isArray(e)?e.map(e=>[e?.name,e]):Object.entries(e);for(let[e,i]of r){let r=i;if(!e||!r?.inlineEdit||r.type!==`master_detail`&&r.type!==`lookup`)continue;let a=r.reference??r.reference_to;a&&(t[a]||=[]).push({childObject:n.name,relationshipField:e,inlineMode:p(n,r.inlineEdit,{relationshipField:e}),...r.inlineTitle?{title:r.inlineTitle}:{},...Array.isArray(r.inlineColumns)?{columns:r.inlineColumns}:{},...typeof r.inlineAmountField==`string`?{amountField:r.inlineAmountField}:{}})}}return Object.keys(t).length?e.map(e=>{let n=t[e.name];if(!n?.length)return e;let r={...e.form||{type:`simple`}},i=Array.isArray(r.subforms)?r.subforms:[],a=new Set(i.map(e=>e.childObject));r.subforms=[...n.filter(e=>!a.has(e.childObject)),...i];let o={...e,form:r};return e.formViews?.default&&(o.formViews={...e.formViews,default:{...e.formViews.default,subforms:r.subforms}}),o}):e}function Q(){return{status:`idle`,items:[],byName:new Map,error:null,fetchedAt:0,promise:null}}function ee(e){if(typeof sessionStorage>`u`)return null;try{let t=sessionStorage.getItem(B(e));if(!t)return null;let n=JSON.parse(t);return Array.isArray(n)?n:null}catch{return null}}function $(e,t,n=F()){if(!(typeof sessionStorage>`u`))try{sessionStorage.setItem(z(e,n),JSON.stringify(t))}catch{}}function te(e){if(!(typeof sessionStorage>`u`))try{sessionStorage.removeItem(z(e,P))}catch{}}function ne({children:e,adapter:t,ttlMs:n=k}){let r=(0,g.useRef)(new Map),i=(0,g.useRef)(new Map),a=(0,g.useRef)(new Set),o=(0,g.useRef)(t);o.current=t;let c=T(),l=(0,g.useMemo)(()=>c?O({previewDrafts:!0}):null,[c]),d=(0,g.useRef)(l);d.current=l;let[p,v]=(0,g.useState)(0),y=(0,g.useCallback)(()=>{typeof queueMicrotask==`function`?queueMicrotask(()=>v(e=>e+1)):Promise.resolve().then(()=>v(e=>e+1))},[]),b=(0,g.useRef)(!1);(0,g.useEffect)(()=>{if(!b.current){b.current=!0;return}r.current.clear(),i.current.clear(),y()},[c,y]);let x=(0,g.useCallback)(e=>{let t=r.current.get(e);return t||(t=Q(),r.current.set(e,t)),t},[]),S=(0,g.useCallback)(e=>{let t=x(e);if(t.promise)return t.promise;if(t.status===`ready`&&Date.now()-t.fetchedAt<n)return W(`cache hit (fresh) type=${e} items=${t.items.length}`),Promise.resolve(t.items);if(t.status===`error`&&Date.now()-t.fetchedAt<j)return W(`cache hit (recent failure) type=${e}`),Promise.resolve(t.items);let r=Date.now();t.status=`loading`,t.error=null;let i=d.current,s=(i?i.list(e):o.current.getClient().meta.getItems(e)).then(n=>{let o=G(n);if(e===`object`)for(let e of o)u(e);t.items=o,t.status=`ready`,t.error=null,t.fetchedAt=Date.now(),t.promise=null,t.byName.clear();for(let e of o)q(e)&&t.byName.set(e.name,e);if(e===`app`&&!i){let t=F();$(e,o,t),t===P?a.current.add(e):a.current.delete(e)}return W(`fetched type=${e} items=${o.length} in ${Date.now()-r}ms`),y(),o}).catch(n=>{let r=n instanceof Error?n:Error(String(n));return t.status=`error`,t.error=r,t.promise=null,t.fetchedAt=Date.now(),W(`fetch failed type=${e}`,r),y(),[]});return t.promise=s,s},[y,x,n]),C=(0,g.useCallback)((e,t)=>{let n=x(e);if(n.byName.has(t))return W(`item cache hit type=${e} name=${t}`),Promise.resolve(n.byName.get(t)??null);let r=i.current.get(e);r||(r=new Map,i.current.set(e,r));let a=r.get(t);if(a)return a;let s=Date.now(),c=d.current,l=(c?c.get(e,t):o.current.getClient().meta.getItem(e,t)).then(i=>{let a=K(i);return a&&n.byName.set(t,a),W(`fetched item type=${e} name=${t} in ${Date.now()-s}ms`),r.delete(t),a}).catch(n=>(r.delete(t),W(`fetch item failed type=${e} name=${t}`,n),null));return r.set(t,l),l},[x]),w=(0,g.useCallback)(async e=>{if(e){let t=x(e);t.fetchedAt=0,t.byName.clear(),await S(e);return}let t=Array.from(r.current.keys()).filter(e=>r.current.get(e).status!==`idle`);await Promise.all(t.map(e=>{let t=r.current.get(e);return t.fetchedAt=0,t.byName.clear(),S(e)}))},[S,x]),E=(0,g.useCallback)((e,t)=>{let n=r.current.get(e);n&&(t?(n.byName.delete(t),n.items=n.items.filter(e=>e?.name!==t),W(`invalidated type=${e} name=${t}`)):(n.status=`idle`,n.items=[],n.byName.clear(),n.error=null,n.fetchedAt=0,W(`invalidated type=${e}`)),y())},[y]);(0,g.useEffect)(()=>{if(c)return h(({type:e})=>{E(e)})},[c,E]),(0,g.useEffect)(()=>m(()=>{try{o.current?.clearCache?.()}catch{}w()}),[w]);let[D,N]=(0,g.useState)(!0),[I,L]=(0,g.useState)(null),{activeOrganization:R}=s(),z=R?.id??null,B=(0,g.useRef)(null);(0,g.useEffect)(()=>{let e=B.current;if(B.current=z,e===null||e===z){if(e===null&&z&&a.current.size>0){for(let e of a.current){let t=r.current.get(e);t&&t.status===`ready`&&t.items.length>0&&$(e,t.items,z),te(e)}a.current.clear()}return}let t=!1;return r.current.clear(),i.current.clear(),N(!0),S(`app`).finally(()=>{t||N(!1)}),y(),()=>{t=!0}},[z,y,S]),(0,g.useEffect)(()=>{let e=!1,t=c?null:ee(`app`);if(V(),t&&t.length>0){let e=x(`app`);e.items=t,e.status=`ready`,e.fetchedAt=0;for(let n of t)q(n)&&e.byName.set(n.name,n);y(),N(!1)}return(async()=>{for(let t of A)try{await S(t),e||L(null)}catch(t){e||L(t instanceof Error?t:Error(String(t)))}e||N(!1)})(),()=>{e=!0}},[t,S,x,y,c]);let H=(0,g.useMemo)(()=>{let e=e=>{let t=x(e);return t.status===`idle`&&S(e),t.items};return{apps:x(`app`).items,get objects(){let t=e(M.objects),n=e(`view`);return Z(n.length?X(t,n):t)},get dashboards(){return e(M.dashboards)},get reports(){return e(M.reports)},get pages(){return e(M.pages)},loading:D,error:I??x(`app`).error,refresh:w,invalidate:E,ensureType:S,getItem:C,getItemsByType:t=>e(t),getTypeStatus:e=>x(e).status}},[p,D,I,S,C,x,w,E]);return(0,_.jsx)(f.Provider,{value:H,children:e})}export{w as a,b as i,O as n,C as o,y as r,T as s,ne as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{b as t,g as n,h as r,p as i,r as a}from"./vendor-react-CsWFRkED.js";import{_ as o,n as ee,t as s,v as c}from"./infrastructure-CerjT_c2.js";import{Mt as l,Rt as u}from"./vendor-objectstack-DGpW4oR-.js";import{A as te,Dn as ne,Ft as d,Ir as re,w as ie,xt as ae}from"./framework-LCCQTTcs.js";import{Aa as oe,Fs as se,Qr as f,_t as p,ai as ce,bo as le,mt as m,ua as ue,vt as h,xt as g}from"./ui-components-3mb69z8L.js";import{i as de,r as _,s as fe}from"./MetadataProvider-DwMR1SMR.js";import{t as pe}from"./RecordDetailView-uf81gH3J.js";import{a as me,i as he,l as ge,n as _e,o as ve,r as ye,s as be}from"./InterfaceListPage-FCdy-_Q-.js";import{t as xe}from"./getIcon-Bnm_i39L.js";import{o as Se}from"./createDerive-xZXxMz1g.js";import{n as Ce,t as we}from"./CreateViewDialog-CW0w7Nxc.js";import{d as Te}from"./plugins-views-BaBStVok.js";import{o as Ee,t as De}from"./runtime-metadata-persistence-DpS5GXuQ.js";import{i as Oe,n as ke,r as v,t as y}from"./drillUrlFilters-DHAQHZbx.js";var b=e(t(),1),x=a(),S=new Set([`select`,`multiselect`,`radio`,`enum`,`boolean`]),C=4,w={"=":`eq`,...Object.fromEntries(Object.entries(y).map(([e,t])=>[t,e]))};function T(e){let t=[];for(let[n,r,i]of e){let e={field:n,operator:u(w[r]??r)};i!==void 0&&(e.value=i);let a=l.safeParse(e);if(!a.success){console.warn(`[ObjectDataPage] Dropped URL filter on "${n}" from the saved view: operator "${r}" has no canonical ViewFilterRule form.`);continue}t.push(a.data)}return t}function Ae(e,t,n){let r=T(n);return{...e,columns:Array.isArray(e.columns)&&e.columns.length>0?e.columns:t,...r.length?{filter:r}:{}}}function E({dataSource:e,objects:t}){let{appName:a,objectName:l}=r(),{t:u}=te(),{objectLabel:y,fieldLabel:w}=ie(),T=i(),[E,D]=n(),{can:O,getObjectApiOperations:k}=ee(),{canRead:A}=s(l??``),{user:j,activeOrganization:M}=c(),N=o(),P=Se(),F=ge()===`group`,I=fe(),[je,L]=b.useState(!1),R=b.useMemo(()=>(t||[]).find(e=>e.name===l),[t,l]),[Me]=b.useState(()=>be(new URLSearchParams(window.location.search))),Ne=b.useCallback(e=>{D(t=>ve(t,e),{replace:!0})},[D]),z=Array.from(E.entries()).filter(([e])=>e.startsWith(`filter[`)).map(([e,t])=>`${e}=${t}`).join(`&`),B=b.useMemo(()=>{let e=Oe(new URLSearchParams(z)),t=e.filter(([e])=>A(e));if(t.length<e.length){let t=e.filter(([e])=>!A(e)).map(([e])=>e);console.warn(`[ObjectDataPage] Dropped URL filter(s) on unreadable field(s): ${t.join(`, `)}`)}return ne(t,{currentUserId:j?.id??null,currentOrgId:M?.id??null})},[z,A,j?.id,M?.id]),Pe=b.useMemo(()=>v(B),[B]),Fe=b.useCallback(e=>{D(t=>ke(new URLSearchParams(t),e))},[D]),V=b.useMemo(()=>ye(R,{orgAttribution:F}).filter(e=>A(e)),[R,A,F]),H=b.useMemo(()=>{let e=R?.fields;if(!e||typeof e!=`object`)return;let t=Object.entries(e).filter(([e,t])=>t&&!t.hidden&&S.has(t.type)&&A(e)).slice(0,C).map(([e])=>({field:e}));return t.length>0?{element:`dropdown`,fields:t}:void 0},[R,A]),U=b.useCallback(e=>`/apps/${a}/${l}/record/${encodeURIComponent(String(e))}`,[a,l]),W=ae({navigation:{mode:`drawer`},objectName:l??``,onNavigate:e=>T(U(e))}),G=E.get(`recordId`),Ie=b.useCallback((e,t)=>{let n=e?.id??e?._id;if(t&&(t.metaKey||t.ctrlKey||t.button===1)&&n!=null){window.open(U(n),`_blank`);return}n!=null&&D(e=>{let t=new URLSearchParams(e);return t.set(`recordId`,String(n)),t})},[U,D]),Le=b.useCallback(()=>{D(e=>{let t=new URLSearchParams(e);return t.delete(`recordId`),t})},[D]);b.useEffect(()=>{G&&!W.isOpen?W.open({id:G}):!G&&W.isOpen&&W.close()},[G]);let K=b.useMemo(()=>me(R),[R]),q=b.useMemo(()=>_e(R),[R]),J=b.useMemo(()=>he(R),[R]),Y=b.useMemo(()=>{let e=[`grid`];return K&&e.push(`kanban`),q&&e.push(`calendar`),J&&e.push(`gallery`),e},[K,q,J]),X=b.useMemo(()=>{if(R)return{type:`list-view`,objectName:R.name,viewType:`grid`,columns:V,...B.length?{filter:B}:{},kanban:K,calendar:q,gallery:J,userFilters:H,appearance:{allowedVisualizations:Y},showViewSwitcher:Y.length>1,userActions:{search:!0,sort:!0,filter:!0,rowHeight:!0,group:!0,hideFields:!0},showRecordCount:!0}},[R,V,B,K,q,J,H,Y]),Re=b.useCallback(async t=>{try{let n=Ae(t,V,B),r=Ee(l??``,n,{name:t.name,label:t.label}),i=await De(`view`,r.name,r,{metadataClient:P,dataSource:e,objectName:l});if(i){let e=I?``:`?${_}=${de}`;T(`../view/${i}${e}`,{relative:`path`})}}catch(e){console.error(`[ObjectDataPage] Failed to save view:`,e)}},[V,B,P,e,T,l,I]),Z=b.useMemo(()=>re(R,R?k(R.name):void 0),[R,k]),Q=!!R&&Z.create&&O(R.name,`create`),$=Q?Z.createPredicates:void 0,ze=d($?.visibleWhen??!0,null,{fallback:!1,warnOnError:!0,label:`builtin:create:visibleWhen`}),Be=d($?.disabledWhen,null,{fallback:!1,warnOnError:!0,label:`builtin:create:disabledWhen`}),Ve=$?.disabledWhen!=null&&Be;return R?O(R.name,`read`)?(0,x.jsxs)(`div`,{className:`h-full flex flex-col bg-background min-w-0 overflow-hidden`,"data-testid":`object-data-page`,children:[(0,x.jsx)(`div`,{className:`hidden sm:block`,children:(0,x.jsx)(Ce,{title:(0,x.jsxs)(`span`,{className:`inline-flex items-center gap-2`,children:[(0,x.jsx)(`span`,{className:`truncate`,children:y(R)}),(0,x.jsx)(`span`,{className:`rounded border px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide text-muted-foreground`,children:u(`console.objectData.badge`,{defaultValue:`Data`})})]}),description:u(`console.objectData.description`,{defaultValue:`URL-defined data slice — not bound to any saved view.`}),icon:b.createElement(xe(R?.icon),{className:`h-4 w-4`}),actions:(0,x.jsxs)(x.Fragment,{children:[Q&&ze&&(0,x.jsxs)(f,{size:`sm`,onClick:()=>T(`../new`,{relative:`path`}),disabled:Ve,className:`shadow-none gap-1.5 h-8 sm:h-9`,"data-testid":`object-data-new-button`,children:[(0,x.jsx)(oe,{className:`h-4 w-4`}),(0,x.jsx)(`span`,{className:`hidden sm:inline`,children:u(`console.objectView.new`)})]}),N&&(0,x.jsxs)(f,{size:`sm`,variant:`outline`,onClick:()=>L(!0),className:`shadow-none gap-1.5 h-8 sm:h-9`,"data-testid":`object-data-save-as-view`,children:[(0,x.jsx)(ue,{className:`h-4 w-4`}),(0,x.jsx)(`span`,{className:`hidden sm:inline`,children:u(`console.objectData.saveAsView`,{defaultValue:`Save as view`})})]})]})})}),B.length>0&&(0,x.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 border-b px-3 sm:px-4 py-2 shrink-0`,"data-testid":`object-data-filter-chips`,children:[(0,x.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:u(`console.objectData.filteredBy`,{defaultValue:`Filtered by`})}),Pe.map(({field:e,text:t})=>(0,x.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full border bg-muted/40 px-2 py-0.5 text-xs`,children:[(0,x.jsx)(`span`,{className:`font-medium`,children:w(R.name,e,e)}),(0,x.jsx)(`span`,{className:`text-muted-foreground`,children:t}),(0,x.jsx)(`button`,{type:`button`,onClick:()=>Fe(e),className:`ml-0.5 rounded-full hover:bg-muted p-0.5`,"aria-label":u(`console.objectData.removeFilter`,{defaultValue:`Remove filter {{field}}`,field:e}),"data-testid":`object-data-remove-filter-${e}`,children:(0,x.jsx)(ce,{className:`h-3 w-3`})})]},e))]}),(0,x.jsx)(`div`,{className:`flex-1 min-h-0 overflow-auto`,children:X&&(0,x.jsx)(Te,{schema:X,dataSource:e,userFilterSelections:Me,onUserFilterSelectionsChange:Ne,onRowClick:Ie})}),W.isOverlay&&(0,x.jsx)(m,{...W,setIsOpen:e=>{e||Le()},title:y(R),children:n=>(0,x.jsx)(pe,{objectNameOverride:R.name,recordIdOverride:String(n?.id??n?._id??G??``),embedded:!0,dataSource:e,objects:t,onEdit:()=>{}})}),N&&(0,x.jsx)(we,{open:je,onOpenChange:L,onCreate:Re,objectDef:R})]}):(0,x.jsx)(`div`,{className:`h-full flex items-center justify-center p-8`,"data-testid":`object-data-403`,children:(0,x.jsxs)(p,{children:[(0,x.jsx)(`div`,{className:`mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-muted`,children:(0,x.jsx)(le,{className:`h-6 w-6 text-muted-foreground`})}),(0,x.jsx)(g,{children:u(`console.objectData.noAccessTitle`,{defaultValue:`Access denied`})}),(0,x.jsx)(h,{children:u(`console.objectData.noAccess`,{defaultValue:`You do not have permission to view this data.`})})]})}):(0,x.jsx)(`div`,{className:`h-full flex items-center justify-center p-8`,children:(0,x.jsxs)(p,{children:[(0,x.jsx)(`div`,{className:`mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-muted`,children:(0,x.jsx)(se,{className:`h-6 w-6 text-muted-foreground`})}),(0,x.jsx)(g,{children:u(`console.objectView.objectNotFound`)}),(0,x.jsx)(h,{children:u(`console.objectView.objectNotFoundDescription`,{objectName:l})})]})})}export{E as ObjectDataPage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{b as n,f as r,g as i,h as a,p as o,r as s}from"./vendor-react-CsWFRkED.js";import{_ as c}from"./infrastructure-CerjT_c2.js";import{A as l,Et as u,at as d,it as f}from"./framework-LCCQTTcs.js";import{La as p,_t as m,ps as h,pt as g,vt as _,xt as v}from"./ui-components-3mb69z8L.js";import"./MetadataProvider-DwMR1SMR.js";import{r as y}from"./ExpressionProvider-X1OAB_O-.js";import{w as b}from"./RecordDetailView-uf81gH3J.js";import{t as x}from"./preferLocal-CKqyhTP9.js";import{t as S}from"./InterfaceListPage-FCdy-_Q-.js";import{n as C,t as w}from"./MetadataInspector-CNeJqkLQ.js";var T=t({PageView:()=>O}),E=e(n(),1),D=s();function O(){let{t:e}=l(),{pageName:t}=a(),[n]=i(),{showDebug:s}=C(),T=o(),O=r(),k=c(),{pages:A,objects:j,getTypeStatus:M}=d(),{app:N}=y(),P=f(),[F,I]=(0,E.useState)(0),L=x(A,t,N?._packageId);if(!L){let n=M?.(`page`);return n===`idle`||n===`loading`?(0,D.jsx)(`div`,{className:`h-full flex items-center justify-center p-8`,"data-testid":`page-loading`,children:(0,D.jsx)(g,{className:`h-5 w-5 text-muted-foreground`})}):(0,D.jsx)(`div`,{className:`h-full flex items-center justify-center p-8`,children:(0,D.jsxs)(m,{children:[(0,D.jsx)(`div`,{className:`mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-muted`,children:(0,D.jsx)(h,{className:`h-6 w-6 text-muted-foreground`})}),(0,D.jsx)(v,{children:e(`empty.pageNotFound`)}),(0,D.jsx)(_,{children:e(`empty.pageNotFoundDescription`,{name:t})})]})})}let R=Object.fromEntries(n.entries()),z=O.pathname.match(/\/apps\/([^/]+)/)?.[1],B=k&&!!z&&!!t;return(0,D.jsx)(b,{dataSource:P,objects:j,onRefresh:()=>I(e=>e+1),children:(0,D.jsxs)(`div`,{className:`flex flex-row h-full w-full overflow-hidden relative`,children:[(0,D.jsxs)(`div`,{className:`flex-1 overflow-auto h-full relative`,children:[B&&(0,D.jsx)(`button`,{type:`button`,onClick:()=>{B&&T(`/apps/${z}/metadata/page/${encodeURIComponent(t)}`)},className:`absolute right-3 top-3 z-30 inline-flex h-7 w-7 items-center justify-center rounded-md border border-input bg-background/90 text-muted-foreground shadow-sm backdrop-blur hover:bg-accent hover:text-accent-foreground`,"data-testid":`page-edit-in-studio-button`,title:e(`common.editInStudio`,{defaultValue:`Edit in studio`}),"aria-label":e(`common.editInStudio`,{defaultValue:`Edit in studio`}),children:(0,D.jsx)(p,{className:`h-3.5 w-3.5`})}),L.interfaceConfig?.source?(0,D.jsx)(S,{page:L,reserveEditAffordance:B},F):(0,D.jsx)(u,{schema:{...L,type:L.type||`page`,pageType:L.type,context:{...L.context,params:R,refreshKey:F}}},F)]}),(0,D.jsx)(w,{open:s,sections:[{title:`Page Configuration`,data:L}]})]})})}export{T as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{b as t,r as n}from"./vendor-react-CsWFRkED.js";import{d as r,v as i}from"./infrastructure-CerjT_c2.js";import{A as a}from"./framework-LCCQTTcs.js";import{Ar as o,Br as s,Hn as c,Ir as l,Lr as u,Mr as d,Nr as f,O as p,Pr as m,Qr as h,Rn as g,Rr as _,Vr as v,ai as y,bo as b,jr as x,mi as S,sc as C,uc as w,vi as T,xo as E,zr as D}from"./ui-components-3mb69z8L.js";var O=e(t(),1),k=n();function A(){let{t:e}=a(),{user:t,updateUser:n,isLoading:b,changePassword:A,setInitialPassword:M,hasLocalPassword:N}=i(),{upload:P}=p(),[F,I]=(0,O.useState)(t?.name??``),[L,R]=(0,O.useState)(!1),[z,B]=(0,O.useState)(null),V=(0,O.useRef)(null),[H,U]=(0,O.useState)(!1),[W,G]=(0,O.useState)(null);return(0,O.useEffect)(()=>{I(t?.name??``)},[t?.name]),t?(0,k.jsxs)(`div`,{className:`flex flex-col gap-4 sm:gap-6 p-4 sm:p-6 max-w-2xl`,children:[(0,k.jsxs)(`div`,{className:`min-w-0`,children:[(0,k.jsx)(`h1`,{className:`text-xl sm:text-2xl font-bold tracking-tight`,children:e(`profile.title`,{defaultValue:`Profile`})}),(0,k.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1`,children:e(`profile.subtitle`,{defaultValue:`Manage your account settings`})})]}),(0,k.jsx)(o,{children:(0,k.jsxs)(x,{className:`pt-6`,children:[(0,k.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,k.jsxs)(u,{className:`h-16 w-16`,children:[(0,k.jsx)(D,{src:t.image??void 0,alt:t.name??`User`}),(0,k.jsx)(_,{className:`text-lg bg-primary text-primary-foreground`,children:r(t)})]}),(0,k.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,k.jsx)(`p`,{className:`text-lg font-semibold truncate`,children:t.name??`User`}),(0,k.jsx)(`p`,{className:`text-sm text-muted-foreground truncate`,children:t.email}),(0,k.jsx)(l,{variant:`secondary`,className:`mt-1`,children:t.role??`member`})]}),(0,k.jsxs)(`div`,{className:`flex flex-col gap-2 shrink-0`,children:[(0,k.jsx)(`input`,{ref:V,type:`file`,accept:`image/*`,className:`hidden`,onChange:async e=>{let t=e.target.files?.[0];if(V.current&&(V.current.value=``),t){U(!0),G(null);try{let e=await P(t);await n({image:e.url})}catch(e){G(e instanceof Error?e.message:String(e))}finally{U(!1)}}},"data-testid":`profile-avatar-file`}),(0,k.jsxs)(h,{type:`button`,variant:`outline`,size:`sm`,disabled:H,onClick:()=>V.current?.click(),"data-testid":`profile-avatar-upload-btn`,children:[H?(0,k.jsx)(E,{className:`mr-2 h-4 w-4 animate-spin`}):(0,k.jsx)(T,{className:`mr-2 h-4 w-4`}),t.image?e(`profile.avatar.replace`,{defaultValue:`Replace`}):e(`profile.avatar.upload`,{defaultValue:`Upload`})]}),t.image&&(0,k.jsxs)(h,{type:`button`,variant:`ghost`,size:`sm`,disabled:H,onClick:async()=>{U(!0),G(null);try{await n({image:null})}catch(e){G(e instanceof Error?e.message:String(e))}finally{U(!1)}},"data-testid":`profile-avatar-remove-btn`,children:[(0,k.jsx)(y,{className:`mr-2 h-4 w-4`}),e(`profile.avatar.remove`,{defaultValue:`Remove`})]})]})]}),W&&(0,k.jsxs)(s,{variant:`destructive`,className:`mt-4`,children:[(0,k.jsx)(w,{className:`h-4 w-4`}),(0,k.jsx)(v,{children:W})]})]})}),(0,k.jsxs)(o,{children:[(0,k.jsxs)(f,{children:[(0,k.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,k.jsx)(S,{className:`h-4 w-4 text-muted-foreground`}),(0,k.jsx)(m,{className:`text-base sm:text-lg`,children:e(`profile.info.title`,{defaultValue:`Personal Information`})})]}),(0,k.jsx)(d,{children:e(`profile.info.description`,{defaultValue:`Update your name and view account details`})})]}),(0,k.jsx)(x,{children:(0,k.jsxs)(`form`,{onSubmit:async e=>{e.preventDefault(),B(null),R(!1);try{await n({name:F}),R(!0)}catch(e){B(e instanceof Error?e.message:String(e))}},className:`space-y-4`,children:[z&&(0,k.jsxs)(s,{variant:`destructive`,children:[(0,k.jsx)(w,{className:`h-4 w-4`}),(0,k.jsx)(v,{children:z})]}),L&&(0,k.jsxs)(s,{children:[(0,k.jsx)(C,{className:`h-4 w-4 text-green-600`}),(0,k.jsx)(v,{className:`text-green-800 dark:text-green-400`,children:e(`profile.info.saved`,{defaultValue:`Profile updated successfully.`})})]}),(0,k.jsxs)(`div`,{className:`space-y-2`,children:[(0,k.jsx)(c,{htmlFor:`profile-name`,children:e(`profile.info.name`,{defaultValue:`Name`})}),(0,k.jsx)(g,{id:`profile-name`,type:`text`,value:F,onChange:e=>I(e.target.value),required:!0,"aria-required":`true`,disabled:b})]}),(0,k.jsxs)(`div`,{className:`space-y-2`,children:[(0,k.jsx)(c,{htmlFor:`profile-email`,children:e(`profile.info.email`,{defaultValue:`Email`})}),(0,k.jsx)(g,{id:`profile-email`,type:`email`,value:t.email,disabled:!0,className:`bg-muted text-muted-foreground`}),(0,k.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`profile.info.emailImmutable`,{defaultValue:`Email cannot be changed.`})})]}),(0,k.jsxs)(`div`,{className:`space-y-2`,children:[(0,k.jsx)(c,{children:e(`profile.info.role`,{defaultValue:`Role`})}),(0,k.jsx)(g,{type:`text`,value:t.role??`member`,disabled:!0,className:`bg-muted text-muted-foreground`})]}),(0,k.jsx)(h,{type:`submit`,disabled:b,className:`w-full sm:w-auto`,children:b?e(`profile.saving`,{defaultValue:`Saving…`}):e(`profile.info.save`,{defaultValue:`Save Changes`})})]})})]}),(0,k.jsx)(j,{changePassword:A,setInitialPassword:M,hasLocalPassword:N})]}):null}function j({changePassword:e,setInitialPassword:t,hasLocalPassword:n,highlight:r,onPasswordSet:i}){let{t:l}=a(),[u,p]=(0,O.useState)(null),[_,y]=(0,O.useState)(``),[S,T]=(0,O.useState)(``),[E,D]=(0,O.useState)(``),[A,j]=(0,O.useState)(!1),[M,N]=(0,O.useState)(null),[P,F]=(0,O.useState)(null);(0,O.useEffect)(()=>{let e=!1;return n().then(t=>{e||p(t)}).catch(()=>{e||p(!1)}),()=>{e=!0}},[n]);let I=()=>{y(``),T(``),D(``)},L=async n=>{if(n.preventDefault(),N(null),F(null),S.length<8){N(l(`profile.password.tooShort`,{defaultValue:`Password must be at least 8 characters`}));return}if(S!==E){N(l(`profile.password.mismatch`,{defaultValue:`Passwords do not match`}));return}j(!0);try{if(u){if(!_){N(l(`profile.password.enterCurrent`,{defaultValue:`Enter your current password`})),j(!1);return}await e(_,S),F(l(`profile.password.changed`,{defaultValue:`Password changed.`}))}else await t(S),F(l(`profile.password.localSet`,{defaultValue:`Local password set. You can now sign in with email and password on this environment.`})),p(!0),i?.();I()}catch(e){N(e instanceof Error?e.message:String(e))}finally{j(!1)}},R=u===null;return(0,k.jsxs)(o,{className:r?`ring-2 ring-amber-300 dark:ring-amber-700`:void 0,children:[(0,k.jsxs)(f,{children:[(0,k.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,k.jsx)(b,{className:`h-4 w-4 text-muted-foreground`}),(0,k.jsx)(m,{className:`text-base sm:text-lg`,children:u?l(`profile.password.changeTitle`,{defaultValue:`Change Password`}):l(`profile.password.setTitle`,{defaultValue:`Set Local Password`})})]}),(0,k.jsx)(d,{children:u?l(`profile.password.changeDescription`,{defaultValue:`Update the password you use to sign in to this environment.`}):l(`profile.password.setDescription`,{defaultValue:`You signed in via single sign-on. Set a local password to also sign in with email and password on this environment.`})})]}),(0,k.jsx)(x,{children:(0,k.jsxs)(`form`,{onSubmit:L,className:`space-y-4 max-w-md`,children:[u&&(0,k.jsxs)(`div`,{className:`space-y-2`,children:[(0,k.jsx)(c,{htmlFor:`current-password`,children:l(`profile.password.current`,{defaultValue:`Current password`})}),(0,k.jsx)(g,{id:`current-password`,type:`password`,autoComplete:`current-password`,value:_,onChange:e=>y(e.target.value),disabled:A||R,required:!0})]}),(0,k.jsxs)(`div`,{className:`space-y-2`,children:[(0,k.jsx)(c,{htmlFor:`new-password`,children:u?l(`profile.password.new`,{defaultValue:`New password`}):l(`profile.password.password`,{defaultValue:`Password`})}),(0,k.jsx)(g,{id:`new-password`,type:`password`,autoComplete:`new-password`,value:S,onChange:e=>T(e.target.value),disabled:A||R,minLength:8,required:!0})]}),(0,k.jsxs)(`div`,{className:`space-y-2`,children:[(0,k.jsx)(c,{htmlFor:`confirm-password`,children:l(`profile.password.confirm`,{defaultValue:`Confirm password`})}),(0,k.jsx)(g,{id:`confirm-password`,type:`password`,autoComplete:`new-password`,value:E,onChange:e=>D(e.target.value),disabled:A||R,minLength:8,required:!0})]}),M&&(0,k.jsxs)(s,{variant:`destructive`,children:[(0,k.jsx)(w,{className:`h-4 w-4`}),(0,k.jsx)(v,{children:M})]}),P&&(0,k.jsxs)(s,{children:[(0,k.jsx)(C,{className:`h-4 w-4`}),(0,k.jsx)(v,{children:P})]}),(0,k.jsx)(h,{type:`submit`,disabled:A||R,className:`w-full sm:w-auto`,children:A?l(`profile.saving`,{defaultValue:`Saving…`}):u?l(`profile.password.changeAction`,{defaultValue:`Change password`}):l(`profile.password.setAction`,{defaultValue:`Set password`})})]})})]})}export{A as ProfilePage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{b as t,r as n}from"./vendor-react-CsWFRkED.js";import{it as r}from"./framework-LCCQTTcs.js";import{Aa as i,Ar as a,Cr as o,Ds as ee,Gt as te,Hn as s,Hs as ne,Ir as re,Jt as c,Kt as ie,Mr as ae,Nr as oe,Oo as se,Pr as ce,Qr as l,Rn as u,Rs as le,Sr as d,Tr as f,Xt as p,Yt as ue,br as m,jr as de,oa as fe,qt as h,wa as pe,wr as g,xa as me,xr as _}from"./ui-components-3mb69z8L.js";import{r as v}from"./vendor-ui-utils-BFw4cGI6.js";import"./src-Ctj_ivDh.js";import{t as he}from"./index-mpVXni3j.js";var y=e(t(),1),b=n();function ge(e){return e?e.replace(/^\/+/,``).match(/^forms\/([^/?#]+)/i)?.[1]??null:null}function x(e){return e.trim().toLowerCase().replace(/[^a-z0-9-_]+/g,`-`).replace(/^-+|-+$/g,``)}function S(){let e=r()?.getClient?.(),[t,n]=(0,y.useState)([]),[S,_e]=(0,y.useState)([]),[C,w]=(0,y.useState)(!0),[T,E]=(0,y.useState)(null),[ve,D]=(0,y.useState)(!1),[O,k]=(0,y.useState)(``),[A,j]=(0,y.useState)(``),[M,N]=(0,y.useState)(!1),[ye,P]=(0,y.useState)(!1),[F,be]=(0,y.useState)(null),[I,L]=(0,y.useState)(``),[R,z]=(0,y.useState)(`thank-you`),[B,V]=(0,y.useState)(``),[H,U]=(0,y.useState)(``),[W,G]=(0,y.useState)(``),[K,q]=(0,y.useState)(null),[J,Y]=(0,y.useState)(!1),X=async()=>{if(!e?.meta?.getItems){E(`meta.getItems is not available on this client`),w(!1);return}w(!0),E(null);try{let t=await e.meta.getItems(`view`),r=Array.isArray(t)?t:Array.isArray(t?.items)?t.items:Array.isArray(t?.value)?t.value:[],i=[],a=[];for(let e of r){let t=e?.spec??e;if(!(t?.sections||t?.groups||t?.form||t?.type===`simple`||t?.type===`tabbed`||t?.type===`wizard`||t?.viewType===`form`))continue;let n=t?.sharing,r=n?.publicLink,o=ge(r);n?.allowAnonymous&&o&&r?i.push({name:t?.name??e?.name,label:t?.label,object:t?.object,slug:o,publicLink:r,updatedAt:e?.updatedAt??e?.updated_at,spec:t}):a.push({name:t?.name??e?.name,label:t?.label,object:t?.object,spec:t})}n(i),_e(a)}catch(e){E(e?.message??String(e))}finally{w(!1)}};(0,y.useEffect)(()=>{X()},[]);let xe=typeof window<`u`?window.location.origin:``,Z=e=>`${xe}/console/f/${e}`,Se=e=>`<iframe src="${Z(e)}" width="100%" height="640" frameborder="0" style="border:0;"></iframe>`,Ce=e=>`<iframe\n src={\`${Z(e)}\`}\n title="Public form"\n style={{ width: '100%', height: 640, border: 0 }}\n/>`,Q=async(e,t)=>{try{await navigator.clipboard.writeText(t),v.success(`Copied ${e}`)}catch{v.error(`Clipboard unavailable`)}},we=async()=>{if(!O||!A)return;let t=S.find(e=>e.name===O);if(!t)return;let n=x(A);if(!n){v.error(`Invalid slug`);return}let r={...t.spec,sharing:{...t.spec.sharing??{},enabled:!0,allowAnonymous:!0,publicLink:`/forms/${n}`}};N(!0);try{await e.meta.saveItem(`view`,t.name,r),v.success(`Published ${t.name}`),D(!1),k(``),j(``),await X()}catch(e){v.error(`Publish failed: ${e?.message??e}`)}finally{N(!1)}},Te=e=>{be(e),L(e.slug);let t=e.spec?.submitBehavior,n=t?.kind??`thank-you`;z(n),V(t?.title??``),U(t?.message??``),G(t?.url??``),q(null),P(!0)},Ee=async()=>{if(!F)return;let t=x(I);if(!t){v.error(`Invalid slug`);return}q(null);let n;switch(R){case`thank-you`:n={kind:`thank-you`},B&&(n.title=B),H&&(n.message=H);break;case`redirect`:{let e=he(W);if(!e.ok){q(e.refusal);return}n={kind:`redirect`,url:e.url};break}case`continue`:case`next-record`:n={kind:R}}let r={...F.spec,sharing:{...F.spec.sharing??{},enabled:!0,allowAnonymous:!0,publicLink:`/forms/${t}`},submitBehavior:n};Y(!0);try{await e.meta.saveItem(`view`,F.name,r),v.success(`Saved ${F.name}`),P(!1),be(null),await X()}catch(e){v.error(`Save failed: ${e?.message??e}`)}finally{Y(!1)}},$=t.length>0;return(0,b.jsxs)(`div`,{className:`flex flex-1 flex-col gap-4 p-4 md:p-6 overflow-auto`,children:[(0,b.jsxs)(a,{children:[(0,b.jsxs)(oe,{className:`flex flex-row items-start justify-between gap-4 space-y-0`,children:[(0,b.jsxs)(`div`,{children:[(0,b.jsxs)(ce,{className:`flex items-center gap-2`,children:[(0,b.jsx)(pe,{className:`h-4 w-4`}),`Public Forms`]}),(0,b.jsx)(ae,{children:`Forms anyone can fill out — no login required. Publish a form to get a shareable link; submissions land directly in the bound object.`})]}),(0,b.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,b.jsxs)(l,{variant:`default`,size:`sm`,onClick:()=>D(!0),disabled:S.length===0,title:S.length===0?`No non-public FormViews available`:`Publish a FormView`,children:[(0,b.jsx)(i,{className:`h-3.5 w-3.5`}),(0,b.jsx)(`span`,{className:`ml-1.5`,children:`Publish form…`})]}),(0,b.jsxs)(l,{variant:`outline`,size:`sm`,onClick:X,disabled:C,children:[(0,b.jsx)(me,{className:`h-3.5 w-3.5 ${C?`animate-spin`:``}`}),(0,b.jsx)(`span`,{className:`ml-1.5`,children:`Refresh`})]})]})]}),(0,b.jsxs)(de,{children:[T&&(0,b.jsx)(`div`,{className:`mb-3 rounded-md border border-destructive/40 bg-destructive/10 p-3 text-sm text-destructive`,children:T}),!C&&!$&&(0,b.jsxs)(`div`,{className:`rounded-md border border-dashed p-6 text-center text-sm text-muted-foreground`,children:[(0,b.jsx)(`p`,{className:`font-medium text-foreground`,children:`No public forms yet`}),(0,b.jsxs)(`p`,{className:`mt-1`,children:[`Click `,(0,b.jsx)(`strong`,{children:`Publish form…`}),` above to share an existing form, or build a new one in Views & Apps and mark it public.`]})]}),$&&(0,b.jsxs)(te,{children:[(0,b.jsx)(ue,{children:(0,b.jsxs)(p,{children:[(0,b.jsx)(c,{children:`Name`}),(0,b.jsx)(c,{children:`Object`}),(0,b.jsx)(c,{children:`Slug`}),(0,b.jsx)(c,{children:`Public URL`}),(0,b.jsx)(c,{className:`text-right`,children:`Actions`})]})}),(0,b.jsx)(ie,{children:t.map(e=>{let t=Z(e.slug);return(0,b.jsxs)(p,{children:[(0,b.jsx)(h,{children:(0,b.jsxs)(`div`,{className:`flex flex-col`,children:[(0,b.jsx)(`span`,{className:`font-medium`,children:e.label??e.name}),(0,b.jsx)(`code`,{className:`text-xs text-muted-foreground`,children:e.name})]})}),(0,b.jsx)(h,{children:e.object?(0,b.jsx)(re,{variant:`secondary`,children:e.object}):(0,b.jsx)(`span`,{className:`text-muted-foreground`,children:`—`})}),(0,b.jsx)(h,{children:(0,b.jsx)(`code`,{className:`text-xs`,children:e.slug})}),(0,b.jsx)(h,{children:(0,b.jsxs)(`a`,{href:t,target:`_blank`,rel:`noreferrer`,className:`inline-flex items-center gap-1 text-xs text-primary underline-offset-2 hover:underline`,children:[t,(0,b.jsx)(ee,{className:`h-3 w-3`})]})}),(0,b.jsx)(h,{className:`text-right`,children:(0,b.jsxs)(`div`,{className:`inline-flex gap-1`,children:[(0,b.jsx)(l,{variant:`ghost`,size:`sm`,title:`Copy URL`,onClick:()=>Q(`URL`,t),children:(0,b.jsx)(se,{className:`h-3.5 w-3.5`})}),(0,b.jsx)(l,{variant:`ghost`,size:`sm`,title:`Copy <iframe> embed`,onClick:()=>Q(`iframe snippet`,Se(e.slug)),children:(0,b.jsx)(ne,{className:`h-3.5 w-3.5`})}),(0,b.jsx)(l,{variant:`ghost`,size:`sm`,title:`Copy React snippet`,onClick:()=>Q(`React snippet`,Ce(e.slug)),children:(0,b.jsx)(le,{className:`h-3.5 w-3.5`})}),(0,b.jsx)(l,{variant:`ghost`,size:`sm`,title:`Edit sharing & post-submit behavior`,onClick:()=>Te(e),children:(0,b.jsx)(fe,{className:`h-3.5 w-3.5`})})]})})]},e.name)})})]})]})]}),(0,b.jsx)(m,{open:ve,onOpenChange:D,children:(0,b.jsxs)(_,{className:`sm:max-w-md`,children:[(0,b.jsxs)(g,{children:[(0,b.jsx)(f,{children:`Publish a FormView`}),(0,b.jsxs)(d,{children:[`Pick an existing FormView and turn it into a public form by enabling `,(0,b.jsx)(`code`,{className:`text-xs`,children:`sharing.allowAnonymous`}),` `,`and setting `,(0,b.jsx)(`code`,{className:`text-xs`,children:`publicLink`}),`.`]})]}),(0,b.jsxs)(`div`,{className:`space-y-3`,children:[(0,b.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,b.jsx)(s,{htmlFor:`publish-view`,children:`FormView`}),(0,b.jsxs)(`select`,{id:`publish-view`,className:`flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm`,value:O,onChange:e=>k(e.target.value),children:[(0,b.jsx)(`option`,{value:``,children:`— Select a FormView —`}),S.map(e=>(0,b.jsxs)(`option`,{value:e.name,children:[e.label??e.name,` (`,e.name,`) `,e.object?`· ${e.object}`:``]},e.name))]})]}),(0,b.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,b.jsx)(s,{htmlFor:`publish-slug`,children:`URL slug`}),(0,b.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,b.jsx)(`span`,{className:`text-xs text-muted-foreground whitespace-nowrap`,children:`/console/f/`}),(0,b.jsx)(u,{id:`publish-slug`,placeholder:`contact-us`,value:A,onChange:e=>j(e.target.value)})]}),(0,b.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Lowercase letters, digits, dashes and underscores only.`})]})]}),(0,b.jsxs)(o,{children:[(0,b.jsx)(l,{variant:`ghost`,onClick:()=>D(!1),disabled:M,children:`Cancel`}),(0,b.jsx)(l,{onClick:we,disabled:M||!O||!A,children:M?`Publishing…`:`Publish`})]})]})}),(0,b.jsx)(m,{open:ye,onOpenChange:P,children:(0,b.jsxs)(_,{className:`sm:max-w-lg`,children:[(0,b.jsxs)(g,{children:[(0,b.jsx)(f,{children:F?`Edit ${F.label??F.name}`:`Edit form`}),(0,b.jsx)(d,{children:`Configure the public URL and what happens after submit.`})]}),(0,b.jsxs)(`div`,{className:`space-y-3`,children:[(0,b.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,b.jsx)(s,{htmlFor:`edit-slug`,children:`URL slug`}),(0,b.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,b.jsx)(`span`,{className:`text-xs text-muted-foreground whitespace-nowrap`,children:`/console/f/`}),(0,b.jsx)(u,{id:`edit-slug`,value:I,onChange:e=>L(e.target.value)})]})]}),(0,b.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,b.jsx)(s,{htmlFor:`edit-behavior`,children:`After submit`}),(0,b.jsxs)(`select`,{id:`edit-behavior`,className:`flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm`,value:R,onChange:e=>{z(e.target.value),q(null)},children:[(0,b.jsx)(`option`,{value:`thank-you`,children:`Show a thank-you panel`}),(0,b.jsx)(`option`,{value:`redirect`,children:`Redirect to a URL`}),(0,b.jsx)(`option`,{value:`continue`,children:`Reset for another response`}),(0,b.jsx)(`option`,{value:`next-record`,children:`Advance to next record (internal queues)`})]})]}),R===`thank-you`&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,b.jsx)(s,{htmlFor:`edit-tytitle`,children:`Title`}),(0,b.jsx)(u,{id:`edit-tytitle`,placeholder:`Thanks!`,value:B,onChange:e=>V(e.target.value)})]}),(0,b.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,b.jsx)(s,{htmlFor:`edit-tymsg`,children:`Message`}),(0,b.jsx)(u,{id:`edit-tymsg`,placeholder:`Your submission has been received.`,value:H,onChange:e=>U(e.target.value)})]})]}),R===`redirect`&&(0,b.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,b.jsx)(s,{htmlFor:`edit-url`,children:`Redirect URL`}),(0,b.jsx)(u,{id:`edit-url`,type:`text`,placeholder:`/thanks`,value:W,onChange:e=>{G(e.target.value),q(null)},"aria-invalid":K?!0:void 0,"aria-describedby":K?`edit-url-refusal`:`edit-url-hint`}),K?(0,b.jsx)(`p`,{id:`edit-url-refusal`,role:`alert`,className:`text-xs text-destructive`,children:K}):(0,b.jsxs)(`p`,{id:`edit-url-hint`,className:`text-xs text-muted-foreground`,children:[`An in-app path, starting with `,(0,b.jsx)(`code`,{children:`/`}),` — interpolate a field of the submitted record as `,(0,b.jsx)(`code`,{children:`{{record.field_name}}`}),`. To send the browser out of the app, use an app navigation item instead.`]})]})]}),(0,b.jsxs)(o,{children:[(0,b.jsx)(l,{variant:`ghost`,onClick:()=>P(!1),disabled:J,children:`Cancel`}),(0,b.jsx)(l,{onClick:Ee,disabled:J||!I,children:J?`Saving…`:`Save`})]})]})})]})}export{S as PublicFormsPage};
|