@objectstack/console 17.5.0 → 17.7.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 +806 -0
- package/dist/.objectstack-injection.json +2 -2
- package/dist/.objectui-sha +1 -1
- package/dist/assets/{ActionResultDialog-CLdIyOW6.js → ActionResultDialog-ChYnuROr.js} +3 -3
- package/dist/assets/{AiPendingActionsPage-OKYz66yR.js → AiPendingActionsPage-Dh3-i4BB.js} +1 -1
- package/dist/assets/{ApiConsolePage-CcrKovu8.js → ApiConsolePage-CKYEqlMs.js} +1 -1
- package/dist/assets/AppDocsIndex-B5Tky2xg.js +1 -0
- package/dist/assets/{AppManagementPage-D_xz8cTZ.js → AppManagementPage-ZwyvnHpM.js} +1 -1
- package/dist/assets/ApprovalsInboxPage-DD4fe0Em.js +1 -0
- package/dist/assets/{AuditLogPage-CoghqsZb.js → AuditLogPage-Sed6iMqP.js} +1 -1
- package/dist/assets/BookPage-DYjUsQIc.js +1 -0
- package/dist/assets/{ComponentNavView-BxsixSU9.js → ComponentNavView-DrlxM4SY.js} +1 -1
- package/dist/assets/CreateViewDialog-Cp72x_O7.js +1 -0
- package/dist/assets/DashboardView-juicRxcP.js +1 -0
- package/dist/assets/DocPage-CxJaQ-pC.js +1 -0
- package/dist/assets/{DocsIndex-B2zw_HAp.js → DocsIndex-LALVtIVR.js} +1 -1
- package/dist/assets/{DocsLayout-DezZ8x7_.js → DocsLayout-BAwlJQQf.js} +1 -1
- package/dist/assets/DocsSlug-CkF1E-Zs.js +1 -0
- package/dist/assets/ExpressionProvider-Dr0e99r1.js +1 -0
- package/dist/assets/FlowRunsPage-R3W3t2s4.js +1 -0
- package/dist/assets/{IntegrationsPage-2leVkVDH.js → IntegrationsPage-DIuFLEbF.js} +2 -2
- package/dist/assets/InterfaceListPage-BfoCldGu.js +1 -0
- package/dist/assets/{MarketplaceInstalledPage-EPPHSitW.js → MarketplaceInstalledPage-DyjhcUNB.js} +1 -1
- package/dist/assets/MarketplacePackagePage-BbO27Pgs.js +4 -0
- package/dist/assets/{MarketplacePage-BnQKykgv.js → MarketplacePage-DO2_b64U.js} +1 -1
- package/dist/assets/{MetadataInspector-BWxLkr0O.js → MetadataInspector-BQyu9pOE.js} +1 -1
- package/dist/assets/ObjectDataPage-DIY-yefK.js +1 -0
- package/dist/assets/PageView-C-qWu3Jw.js +1 -0
- package/dist/assets/ProfilePage-Qp8DL8CF.js +1 -0
- package/dist/assets/{PublicFormsPage-DlE6tck_.js → PublicFormsPage-D3AT2EH9.js} +1 -1
- package/dist/assets/RecordDetailView-B3XBEgk2.js +3 -0
- package/dist/assets/RecordFormPage-CcoZfUJ3.js +1 -0
- package/dist/assets/ReportDefaultInspector-DVcWM6sh.js +1 -0
- package/dist/assets/ReportView-pJCFptzp.js +2 -0
- package/dist/assets/RuntimeDraftBar-DObTyFu2.js +1 -0
- package/dist/assets/SchemaForm-BWSWYMLE.js +3 -0
- package/dist/assets/SearchResultsPage-ChVIzFob.js +1 -0
- package/dist/assets/{SettingsHub-BGKIj-Zq.js → SettingsHub-CPP9FDe8.js} +1 -1
- package/dist/assets/SettingsView-CrHAROu9.js +1 -0
- package/dist/assets/{SkeletonDetail-C8fMI-Mu.js → SkeletonDetail-CP-35B8x.js} +1 -1
- package/dist/assets/{af-BfSmLD34.js → af-Bhbso4Pg.js} +1 -1
- package/dist/assets/ai-BAPiCsNk.js +3 -0
- package/dist/assets/app-shell-eager-leaves-D9tgfJOe.js +1 -0
- package/dist/assets/{ar-B9ttrM75.js → ar-DG8TAFtm.js} +1 -1
- package/dist/assets/{ar-DZ-C1rn-cyl.js → ar-DZ-BtSien-d.js} +1 -1
- package/dist/assets/{ar-EG-BaDxKP_o.js → ar-EG-DpXC0zoY.js} +1 -1
- package/dist/assets/{ar-MA-DbxNEcmd.js → ar-MA-D1qVJLyE.js} +1 -1
- package/dist/assets/{ar-SA-DeC5LXcX.js → ar-SA-BIYKNgv8.js} +1 -1
- package/dist/assets/{ar-TN-C9KpTFJz.js → ar-TN-mUR5Mq3s.js} +1 -1
- package/dist/assets/{az-cMerDwRO.js → az-B7IqwHGK.js} +1 -1
- package/dist/assets/{be-ZTSbszQh.js → be-CnZyPaSX.js} +1 -1
- package/dist/assets/{be-tarask-BXZEUrgX.js → be-tarask--uMMCC7l.js} +1 -1
- package/dist/assets/{bg-BDogpmn5.js → bg-CZwuirtY.js} +1 -1
- package/dist/assets/{bn-Cz04uxmh.js → bn-BbOX0r-z.js} +1 -1
- package/dist/assets/{bs-CpFnCl-j.js → bs-B5W75cYR.js} +1 -1
- package/dist/assets/{ca-CHC4M52Z.js → ca-Be69LdIM.js} +1 -1
- package/dist/assets/{ckb-Dxw-RNm8.js → ckb-B-nKM1Vn.js} +1 -1
- package/dist/assets/contracts-DieHW666.js +1 -0
- package/dist/assets/{createDerive-DvA_JGNq.js → createDerive-CynsXU-B.js} +1 -1
- package/dist/assets/{cs-DsFaJ5Z7.js → cs-qHngxH7l.js} +1 -1
- package/dist/assets/{cy-FH4JFDTs.js → cy-DscO2Pgf.js} +1 -1
- package/dist/assets/{da-D1pVjaAq.js → da-vibkaLMF.js} +1 -1
- package/dist/assets/data-adapter-BDsrq0TX.js +2 -0
- package/dist/assets/{de-AT-DUMQCisj.js → de-AT--JneEuBw.js} +1 -1
- package/dist/assets/{de-DKrxSvnP.js → de-BCT78XYW.js} +1 -1
- package/dist/assets/default-inspector-registry-Dktr6x_q.js +1 -0
- package/dist/assets/dist-yh3dYtHt.js +14 -0
- package/dist/assets/drillUrlFilters-N0RngQg6.js +1 -0
- package/dist/assets/{el-l3-bHySV.js → el-Cl0y9T2b.js} +1 -1
- package/dist/assets/en-AU-By42tTB7.js +1 -0
- package/dist/assets/{en-CA-DGH5NF0a.js → en-CA-BqEEoj-Y.js} +1 -1
- package/dist/assets/en-GB-Cx8B9nkB.js +1 -0
- package/dist/assets/en-IE-CX9nv6uO.js +1 -0
- package/dist/assets/en-IN-ByGSBHa4.js +1 -0
- package/dist/assets/en-NZ-BPMwa2ZN.js +1 -0
- package/dist/assets/en-ZA-lj_N4R6c.js +1 -0
- package/dist/assets/{eo-CL6CXHZx.js → eo-oOXROuhF.js} +1 -1
- package/dist/assets/{es-BIJ0rksI.js → es-EudscwjH.js} +1 -1
- package/dist/assets/{et-BGgMzjm1.js → et-CB-5LLh6.js} +1 -1
- package/dist/assets/{eu-CqvAoRrX.js → eu-B4-hcseX.js} +1 -1
- package/dist/assets/{fa-IR-DNz3oA1-.js → fa-IR-CogavcMJ.js} +1 -1
- package/dist/assets/{fi-DNSfKWuW.js → fi-CIBE0mYa.js} +1 -1
- package/dist/assets/{formatLong-CHb9WA3O.js → formatLong-qqgm7lV1.js} +1 -1
- package/dist/assets/{fr-CA-CotiswPx.js → fr-CA-BugXMutW.js} +1 -1
- package/dist/assets/{fr-DYRJCirJ.js → fr-CDReXYWW.js} +1 -1
- package/dist/assets/{fr-CH-CpiEYWpc.js → fr-CH-fiTiB6X1.js} +1 -1
- package/dist/assets/framework-CAuH4h0L.js +35 -0
- package/dist/assets/{fy-B69yM3FE.js → fy-t_GzIAg_.js} +1 -1
- package/dist/assets/{gd-BAy8AsX6.js → gd-CSncIxtN.js} +1 -1
- package/dist/assets/{getIcon-BEVyC4y3.js → getIcon-BDkBRQFw.js} +1 -1
- package/dist/assets/{gl-soLn_weL.js → gl-_138Mj2S.js} +1 -1
- package/dist/assets/{gu-B19Yo9yC.js → gu-COfH-YUT.js} +1 -1
- package/dist/assets/{he-DYTPo33p.js → he-BXL4lOKY.js} +1 -1
- package/dist/assets/{hi-D2dIK7Oy.js → hi-kXuYI0TJ.js} +1 -1
- package/dist/assets/{highlighted-body-OFNGDK62-CExufvVt.js → highlighted-body-OFNGDK62-CK7x7Gzm.js} +1 -1
- package/dist/assets/{hr-BV-VOPMu.js → hr-DAOsQWzI.js} +1 -1
- package/dist/assets/{ht-C7MM4qkS.js → ht-Ch8SKz8p.js} +1 -1
- package/dist/assets/{hu-Rha1m2Ym.js → hu-q6W_rWPT.js} +1 -1
- package/dist/assets/{hy-CiTNgbdV.js → hy-0M8OmwnM.js} +1 -1
- package/dist/assets/i18n-DTfZonAM.js +17 -0
- package/dist/assets/i18n-locale-ar-O6rs-Cir.js +4 -0
- package/dist/assets/i18n-locale-de-CMc1jk4a.js +4 -0
- package/dist/assets/i18n-locale-en-CbRQO81h.js +4 -0
- package/dist/assets/i18n-locale-es-t47nyoCX.js +4 -0
- package/dist/assets/i18n-locale-fr-E425EqJM.js +4 -0
- package/dist/assets/i18n-locale-ja-y_fk77fz.js +4 -0
- package/dist/assets/i18n-locale-ko-CdnY2uCg.js +4 -0
- package/dist/assets/i18n-locale-pt-BaUOXS6y.js +4 -0
- package/dist/assets/i18n-locale-ru-pFlhX9wg.js +4 -0
- package/dist/assets/i18n-locale-zh-Dkj4ROTN.js +4 -0
- package/dist/assets/i18n-runtime-CdWyaiOD.js +1 -0
- package/dist/assets/{id-Cijsfjt-.js → id-BM_H1_jv.js} +1 -1
- package/dist/assets/index-ocmkyCt6.js +19 -0
- package/dist/assets/index-v2Ijn9Gr.css +2 -0
- package/dist/assets/{infrastructure-BHSync5f.js → infrastructure-CSnL6ntj.js} +2 -2
- package/dist/assets/integration-7NqwVHuJ.js +1 -0
- package/dist/assets/{is-xS1WTyeC.js → is-B_7jXZfS.js} +1 -1
- package/dist/assets/isSameWeek-D90tBsli.js +1 -0
- package/dist/assets/{it-C2i_c9sd.js → it-CBM0J9cD.js} +1 -1
- package/dist/assets/{it-CH-l516ZNXj.js → it-CH-BQltCNsR.js} +1 -1
- package/dist/assets/{ja-D9_ewLny.js → ja-DBjnsx21.js} +1 -1
- package/dist/assets/{ja-Hira-D_6ExgHw.js → ja-Hira-BZfSmj1i.js} +1 -1
- package/dist/assets/{ka-BYHGyees.js → ka-HwpuKgUY.js} +1 -1
- package/dist/assets/{kk-CbTFtuqb.js → kk-DLKA9paj.js} +1 -1
- package/dist/assets/{km-Dr2gwhIn.js → km-BU5kermq.js} +1 -1
- package/dist/assets/{kn-CprH8JD7.js → kn-BNFqbCoi.js} +1 -1
- package/dist/assets/{ko-CsFS2u5i.js → ko-D8n4uMqQ.js} +1 -1
- package/dist/assets/{lb-CbFKN7Ob.js → lb-B1empQ7m.js} +1 -1
- package/dist/assets/{lt-Bq0xkLp0.js → lt-gMukpK3G.js} +1 -1
- package/dist/assets/{lv-Cj6vg6Qo.js → lv-D2O5AnsZ.js} +1 -1
- package/dist/assets/{match-CiPp9BME.js → match-BTF6WqJh.js} +1 -1
- package/dist/assets/{match-C_jFGO9e.js → match-Cyum2eeW.js} +1 -1
- package/dist/assets/{match-Co4ivumx.js → match-ScHH8kYk.js} +1 -1
- package/dist/assets/mermaid-GHXKKRXX-D4H6EVJQ.js +1 -0
- package/dist/assets/metadata-admin-CEhVmXFv.js +9 -0
- package/dist/assets/{mk-MXFM99YL.js → mk-D-Zl0xVN.js} +1 -1
- package/dist/assets/{mn-D5Q9B6Jt.js → mn-jJbTslgD.js} +1 -1
- package/dist/assets/{ms-CCzPRldx.js → ms-CUuJHLA4.js} +1 -1
- package/dist/assets/{mt-mjJpN6xW.js → mt-yIcbfxKY.js} +1 -1
- package/dist/assets/{nb-BIlNqdEb.js → nb-D9WNypoj.js} +1 -1
- package/dist/assets/{nl-BE-FwXjQsmV.js → nl-BE-B1vKiw2h.js} +1 -1
- package/dist/assets/{nl-D2uBtIxG.js → nl-DC7b5e90.js} +1 -1
- package/dist/assets/{nn-B0loJ7SV.js → nn-uP4yJ9s0.js} +1 -1
- package/dist/assets/{oc-U7-yH1sO.js → oc-DHTqadJI.js} +1 -1
- package/dist/assets/{pl-mTy0JYgi.js → pl-Bxnnizf5.js} +1 -1
- package/dist/assets/plugin-calendar-b7C35ANT.js +1 -0
- package/dist/assets/plugin-charts-b-yVtmdI.js +7 -0
- package/dist/assets/plugin-chatbot-D1KW_oIO.js +122 -0
- package/dist/assets/plugin-dashboard-DTkPoPEb.js +6 -0
- package/dist/assets/plugin-form-UIRm-FpQ.js +1 -0
- package/dist/assets/plugin-gantt-9dtc8zzX.js +63 -0
- package/dist/assets/plugin-grid-Cp4RKtMJ.js +10 -0
- package/dist/assets/plugin-kanban-B2JOPZIJ.js +1 -0
- package/dist/assets/plugin-map-CBJcVJYk.js +1 -0
- package/dist/assets/{plugin-markdown-D1nTQc1T.js → plugin-markdown-CNlDzqP-.js} +1 -1
- package/dist/assets/plugin-report-IZzgQb-Q.js +59 -0
- package/dist/assets/plugin-timeline-DsmtjcJ3.js +1 -0
- package/dist/assets/plugin-tree-DTRPBdhe.js +1 -0
- package/dist/assets/plugin-view-D9ixsNDG.js +1 -0
- package/dist/assets/plugins-views-CnvkdSJK.js +3 -0
- package/dist/assets/{pt-BR-2KtO5Js1.js → pt-BR-D416seHT.js} +1 -1
- package/dist/assets/{pt-Bet5OOQf.js → pt-DwHBy9_c.js} +1 -1
- package/dist/assets/{ro-37U6sgzi.js → ro-DDf1X3Np.js} +1 -1
- package/dist/assets/{ru-CyuAY-5E.js → ru-8eM3mcgK.js} +1 -1
- package/dist/assets/{runtime-metadata-persistence-afAW-MeD.js → runtime-metadata-persistence-DX29lQ62.js} +1 -1
- package/dist/assets/{se-DeJabuC6.js → se-D4JvQeRX.js} +1 -1
- package/dist/assets/{sk-DWEpjfkR.js → sk-DvpgttGI.js} +1 -1
- package/dist/assets/{sl-4oSvNhIR.js → sl-B3gCZ-_a.js} +1 -1
- package/dist/assets/{sq-BjkBCaXW.js → sq-CVaTmL0V.js} +1 -1
- package/dist/assets/{sr-Dxm1DsRS.js → sr-CnH5Ffyz.js} +1 -1
- package/dist/assets/{sr-Latn-Dawg6oP2.js → sr-Latn-Dw9w61q6.js} +1 -1
- package/dist/assets/src-BUry7633.js +2 -0
- package/dist/assets/{src-C8NYjdVm.js → src-DMDT5a27.js} +1 -1
- package/dist/assets/src-ZxH3AOCu.js +16 -0
- package/dist/assets/{studioEntry-nXQP3iL0.js → studioEntry-DAqcBFtr.js} +1 -1
- package/dist/assets/{submitRedirect-jK-cEIbP.js → submitRedirect-iy0oOi7I.js} +1 -1
- package/dist/assets/{sv-CROOGJGz.js → sv-CU7wdxyK.js} +1 -1
- package/dist/assets/{ta-BZnTmFI_.js → ta-DPH6q0HR.js} +1 -1
- package/dist/assets/{te-BN0v0x5t.js → te-BSaThkGV.js} +1 -1
- package/dist/assets/{th-CBjKhp_U.js → th-NXP8_Qb8.js} +1 -1
- package/dist/assets/{tr-x0Ne4N4H.js → tr-DDXoH663.js} +1 -1
- package/dist/assets/types-zod-ChJ30y25.js +1 -0
- package/dist/assets/{ug-sgzNhsKo.js → ug-Guus6pPe.js} +1 -1
- package/dist/assets/ui-components-D8wcRNrt.js +37 -0
- package/dist/assets/ui-layout-BYO3rRIl.js +1 -0
- package/dist/assets/{uk-o_DQ5VHJ.js → uk-uiy4vsp8.js} +1 -1
- package/dist/assets/use-book-data-DFTswcKm.js +1 -0
- package/dist/assets/{useActionModal-CSvbHkQ7.js → useActionModal-h52Z5Pkl.js} +1 -1
- package/dist/assets/useCanAuthorMetadata-TDrVrYGB.js +1 -0
- package/dist/assets/useDatasetCatalog-BOd0Ybr1.js +1 -0
- package/dist/assets/useNavSelDeepLink-67Y4qCNO.js +1 -0
- package/dist/assets/useNavTargetLabel-D8lRdb6O.js +1 -0
- package/dist/assets/useOpenRecordList-C7oqUD3F.js +1 -0
- package/dist/assets/{usePackageL10n-CMx66am-.js → usePackageL10n-Jl2XiF2F.js} +1 -1
- package/dist/assets/{useSettingsLabel-Kkr2q0Oo.js → useSettingsLabel-CSpBDTdy.js} +1 -1
- package/dist/assets/{uz-Cyrl-DbtkQtz_.js → uz-Cyrl-Cmb5bvbf.js} +1 -1
- package/dist/assets/{uz-Be41d4jl.js → uz-DJWxoTz4.js} +1 -1
- package/dist/assets/vendor-objectstack-C4eD5dbT.js +139 -0
- package/dist/assets/{vi-84mZmklk.js → vi-Bb3QoIJC.js} +1 -1
- package/dist/assets/{zh-CN-DD1reegJ.js → zh-CN-C-Hts1ZR.js} +1 -1
- package/dist/assets/{zh-HK-B05u30WI.js → zh-HK-CtBAZ_ZS.js} +1 -1
- package/dist/assets/{zh-TW-Bb-WimPD.js → zh-TW-B7DDahD-.js} +1 -1
- package/dist/chunk-membership.json +116 -104
- package/dist/eager-closure.json +126 -120
- package/dist/index.html +4 -4
- package/dist/sdui.manifest.json +998 -115
- package/package.json +1 -1
- package/dist/assets/AppDocsIndex-F4zDq2zz.js +0 -1
- package/dist/assets/ApprovalsInboxPage-DrEUmaDb.js +0 -1
- package/dist/assets/CreateViewDialog-xyKlpLEW.js +0 -1
- package/dist/assets/DashboardView-CGC-_Om8.js +0 -1
- package/dist/assets/DocPage-CIZE5kdj.js +0 -1
- package/dist/assets/DocsSlug-DXdFdwlS.js +0 -1
- package/dist/assets/ExpressionProvider-DZfMwyMs.js +0 -1
- package/dist/assets/FlowRunsPage-CvY3nJMF.js +0 -1
- package/dist/assets/InterfaceListPage-BdECC_i3.js +0 -1
- package/dist/assets/MarketplacePackagePage-C7NOu2Ir.js +0 -4
- package/dist/assets/ObjectDataPage-BIzp65Mo.js +0 -1
- package/dist/assets/PageView-CVLgCRSF.js +0 -1
- package/dist/assets/ProfilePage-D2qGgxPK.js +0 -1
- package/dist/assets/RecordDetailView-DQKydU7X.js +0 -3
- package/dist/assets/RecordFormPage-BTjwxJIA.js +0 -1
- package/dist/assets/ReportDefaultInspector-DdsQAkd7.js +0 -1
- package/dist/assets/ReportView-GIdKJdOt.js +0 -2
- package/dist/assets/RuntimeDraftBar-BbMdi3Kp.js +0 -1
- package/dist/assets/SchemaForm-C8X1ve4p.js +0 -3
- package/dist/assets/SearchResultsPage-Jwhqsdyo.js +0 -1
- package/dist/assets/SettingsView-D8SMKdrc.js +0 -1
- package/dist/assets/app-shell-eager-leaves-CDVclng4.js +0 -1
- package/dist/assets/appRoute-DbnWDEa1.js +0 -1
- package/dist/assets/data-adapter-DMbe6Njk.js +0 -1
- package/dist/assets/default-inspector-registry-CpL3fFhl.js +0 -1
- package/dist/assets/dist-BXrEV1ag.js +0 -13
- package/dist/assets/drillUrlFilters-hi-2d3DW.js +0 -1
- package/dist/assets/en-AU-C6x7mDhH.js +0 -1
- package/dist/assets/en-GB-0-nho2eK.js +0 -1
- package/dist/assets/en-IE-2fC3BkfV.js +0 -1
- package/dist/assets/en-IN-C1QcFhxn.js +0 -1
- package/dist/assets/en-NZ-C80ptZT7.js +0 -1
- package/dist/assets/en-ZA-ByZDrjeb.js +0 -1
- package/dist/assets/framework-DcWkeiND.js +0 -35
- package/dist/assets/i18n-CEKxYdmD.js +0 -9
- package/dist/assets/i18n-locale-ar-DN7sl3GF.js +0 -4
- package/dist/assets/i18n-locale-de-C40JErvb.js +0 -4
- package/dist/assets/i18n-locale-en-CITPDIHy.js +0 -4
- package/dist/assets/i18n-locale-es-C8DdWN6c.js +0 -4
- package/dist/assets/i18n-locale-fr-COIdEZZl.js +0 -4
- package/dist/assets/i18n-locale-ja-DYF_rU_s.js +0 -4
- package/dist/assets/i18n-locale-ko-B-ODYAtX.js +0 -4
- package/dist/assets/i18n-locale-pt-CK1SyBIm.js +0 -4
- package/dist/assets/i18n-locale-ru-jLzvShMO.js +0 -4
- package/dist/assets/i18n-locale-zh-Bf9Gbbvl.js +0 -4
- package/dist/assets/i18n-runtime-CTgAQF4N.js +0 -1
- package/dist/assets/index-CLyvpiGc.css +0 -2
- package/dist/assets/index-CfnfGw5W.js +0 -20
- package/dist/assets/isSameWeek-DWYeNyh8.js +0 -1
- package/dist/assets/mermaid-GHXKKRXX-DVLc_uym.js +0 -1
- package/dist/assets/metadata-admin-CybaOCdO.js +0 -9
- package/dist/assets/nav-selection-Dzm_mA3C.js +0 -1
- package/dist/assets/plugin-calendar-CKRBcML7.js +0 -1
- package/dist/assets/plugin-charts-DGTJxXCB.js +0 -7
- package/dist/assets/plugin-chatbot-DwtwNA-y.js +0 -122
- package/dist/assets/plugin-dashboard-C1AYKmGX.js +0 -6
- package/dist/assets/plugin-form-CV8ZY04-.js +0 -1
- package/dist/assets/plugin-gantt-BRIb2_8G.js +0 -63
- package/dist/assets/plugin-grid-C9h7mRVv.js +0 -11
- package/dist/assets/plugin-kanban-BcJ0Dhys.js +0 -1
- package/dist/assets/plugin-map-D24ZUOUj.js +0 -1
- package/dist/assets/plugin-report-BfGintAq.js +0 -59
- package/dist/assets/plugin-timeline-CbBRq_qt.js +0 -1
- package/dist/assets/plugin-tree-BNX2A5J5.js +0 -1
- package/dist/assets/plugin-view-DzWQWYyH.js +0 -1
- package/dist/assets/plugins-views-DraK4xz0.js +0 -3
- package/dist/assets/src-B8lv0plz.js +0 -18
- package/dist/assets/src-DoDvT77T.js +0 -1
- package/dist/assets/types-zod-Y2RwUUeJ.js +0 -1
- package/dist/assets/ui-components-BTB1NkUW.js +0 -37
- package/dist/assets/ui-layout-bZfafwJa.js +0 -1
- package/dist/assets/use-book-data-C3eyZJSG.js +0 -1
- package/dist/assets/useOpenRecordList-B5-qaFUx.js +0 -1
- package/dist/assets/vendor-objectstack-XuWC71M9.js +0 -266
- package/dist/assets/vendor-zod-CHLW1iCr.js +0 -64
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@objectstack/console",
|
|
3
|
-
"version": "17.
|
|
3
|
+
"version": "17.7.0",
|
|
4
4
|
"description": "Prebuilt Console SPA pinned to this framework release, installed as a dependency of @objectstack/cli. Source of truth: @object-ui/console (https://github.com/objectstack-ai/objectui).",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://github.com/objectstack-ai/objectstack/tree/main/packages/console",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{a as t,p as n,r,t as i,v as a}from"./vendor-react-BggL7APJ.js";import{t as o}from"./vendor-icon-book-open-DKPXYwQK.js";import{t as s}from"./vendor-icon-loader-circle-D3PsuVaD.js";import{t as c}from"./DocShell-Bzl3QS30.js";import{a as l,c as u,n as d}from"./use-book-data-C3eyZJSG.js";var f=e(a(),1),p=i();function m(){let{appName:e}=n(),{books:i,docs:a,state:m}=d(),h=(0,f.useMemo)(()=>i.filter(t=>u(t)===e),[i,e]),g=(0,f.useMemo)(()=>l(h,a),[h,a]);return m===`loading`?(0,p.jsx)(`div`,{className:`flex h-full items-center justify-center p-10 text-muted-foreground`,children:(0,p.jsx)(s,{className:`h-5 w-5 animate-spin`,"aria-label":`Loading documentation`})}):g.length===1?(0,p.jsx)(t,{to:`/apps/${e}/docs/${g[0].slug}`,replace:!0}):(0,p.jsx)(c,{children:(0,p.jsx)(`div`,{className:`mx-auto max-w-3xl p-4 sm:p-6`,children:g.length===0?(0,p.jsxs)(`div`,{className:`flex flex-col items-center gap-3 py-16 text-center text-muted-foreground`,children:[(0,p.jsx)(o,{className:`h-10 w-10`}),(0,p.jsx)(`p`,{className:`text-sm`,children:`This app does not ship any documentation yet.`}),(0,p.jsx)(r,{to:`/docs`,className:`text-sm font-medium text-primary hover:underline`,children:`Browse all documentation`})]}):(0,p.jsx)(`ul`,{className:`grid gap-3 sm:grid-cols-2`,children:g.map(t=>(0,p.jsx)(`li`,{children:(0,p.jsxs)(r,{to:`/apps/${e}/docs/${t.slug}`,className:`flex h-full items-start gap-3 rounded-md border border-border p-3 hover:bg-muted/50`,children:[(0,p.jsx)(o,{className:`mt-0.5 h-5 w-5 shrink-0 text-muted-foreground`}),(0,p.jsxs)(`div`,{className:`min-w-0`,children:[(0,p.jsx)(`div`,{className:`text-sm font-semibold`,children:t.label}),t.description?(0,p.jsx)(`div`,{className:`mt-0.5 line-clamp-2 text-xs text-muted-foreground`,children:t.description}):t.subtitle?(0,p.jsx)(`div`,{className:`mt-0.5 truncate font-mono text-[11px] text-muted-foreground/70`,children:t.subtitle}):null,(0,p.jsxs)(`div`,{className:`mt-1 text-xs text-muted-foreground/80`,children:[t.docCount,` `,t.docCount===1?`article`:`articles`]})]})]})},t.name))})})})}export{m as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{m as t,p as n,r,t as i,v as a}from"./vendor-react-BggL7APJ.js";import{a as o,p as s,v as c}from"./infrastructure-BHSync5f.js";import{a as l,o as ee}from"./vendor-objectstack-XuWC71M9.js";import{$ as te,$t as ne,An as re,Br as ie,Dn as u,Fn as ae,In as oe,Ln as d,Mn as se,Nn as ce,Ot as le,Pn as ue,Qt as de,Rn as fe,Rr as pe,Tt as me,Xt as he,Zt as ge,_i as _e,an as ve,bi as f,di as ye,en as be,fi as xe,gi as Se,hi as Ce,in as we,jn as Te,kn as Ee,li as De,mi as Oe,ni as p,nn as m,oi as ke,pi as Ae,qn as je,rn as h,si as Me,tn as Ne,ui as Pe,vi as g,wt as Fe,zn as Ie,zr as Le}from"./ui-components-BTB1NkUW.js";import{G as Re}from"./framework-DcWkeiND.js";import{p as _,t as ze,w as Be}from"./i18n-runtime-CTgAQF4N.js";import{r as v}from"./vendor-ui-utils-DIUdEYii.js";import{t as Ve}from"./vendor-icon-arrow-up-down-DdDqplfV.js";import{t as He}from"./vendor-icon-check-vpu9Zukp.js";import{t as Ue}from"./vendor-icon-chevron-left-KnDcuFH1.js";import{t as We}from"./vendor-icon-chevron-right-DbnKwHYQ.js";import{t as Ge}from"./vendor-icon-circle-alert-D1XTr_X9.js";import{t as Ke}from"./vendor-icon-circle-check-Bq3OcFQN.js";import{t as qe}from"./vendor-icon-circle-x-Nkh1Yr7N.js";import{t as Je}from"./vendor-icon-circle-5-gUQbxi.js";import{t as Ye}from"./vendor-icon-clock-CTLnah0r.js";import{t as Xe}from"./vendor-icon-copy-B5M-KdZo.js";import{t as Ze}from"./vendor-icon-external-link-SBKz5x6R.js";import{t as Qe}from"./vendor-icon-link-2-off-Donc5rrk.js";import{t as $e}from"./vendor-icon-paperclip-zxZDBuvr.js";import{t as et}from"./vendor-icon-refresh-cw-BGjSPEfJ.js";import{t as tt}from"./vendor-icon-search-B2Uqtp_W.js";import{t as nt}from"./vendor-icon-send-BlZYLCTK.js";import{t as rt}from"./vendor-icon-shield-alert-CJYtPI9w.js";import{t as it}from"./vendor-icon-square-check-big-B4UVzWzR.js";import{t as at}from"./vendor-icon-trash-BLsWkwB9.js";import{t as ot}from"./vendor-icon-user-IWwlLQut.js";import{t as st}from"./vendor-icon-workflow-B9ASq0nN.js";import{t as ct}from"./vendor-icon-x-CcLtgRNL.js";import"./src-B8lv0plz.js";import{r as lt,y as ut}from"./RecordDetailView-DQKydU7X.js";import{t as dt}from"./studioEntry-nXQP3iL0.js";var y=e(a(),1),b=`${``.replace(/\/$/,``)}/api/v1`;async function x(e,t){let n=c.get(),r=await fetch(`${b}${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 S={listProcesses(e={}){let t=new URLSearchParams;e.object&&t.set(`object`,e.object),e.activeOnly&&t.set(`activeOnly`,`true`);let n=t.toString();return x(`/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 x(`/approvals/requests${r?`?${r}`:``}`)},async getRequest(e){return{data:await x(`/approvals/requests/${encodeURIComponent(e)}`)}},listActions(e){return x(`/approvals/requests/${encodeURIComponent(e)}/actions`)},async approve(e,t){let n=await x(`/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 x(`/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 x(`/approvals/requests/${encodeURIComponent(e)}/recall`,{method:`POST`,body:JSON.stringify(t)})).request,finalized:!0}},async reassign(e,t){return{data:(await x(`/approvals/requests/${encodeURIComponent(e)}/reassign`,{method:`POST`,body:JSON.stringify(t)})).request}},async remind(e,t={}){let n=await x(`/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 x(`/approvals/requests/${encodeURIComponent(e)}/request-info`,{method:`POST`,body:JSON.stringify(t)})).request}},async sendBack(e,t){let n=await x(`/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 x(`/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 x(`/approvals/requests/${encodeURIComponent(e)}/comment`,{method:`POST`,body:JSON.stringify(t)})).request}},async submit(e){return x(`/approvals/requests`,{method:`POST`,body:JSON.stringify(e)})}};function ft(e){if(!e)return[];let t=new Set;e.id&&t.add(e.id),e.email&&t.add(e.email);let n=[...e.positions||[],...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 C(e,t){return`${e}::${t}`}function w(e){return typeof e.object_name==`string`&&e.object_name!==``&&typeof e.record_id==`string`&&e.record_id!==``}function T(e){let t=new Map,n=new Set;for(let r of e){if(!w(r))continue;let e=C(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 E(e){if(Array.isArray(e))return e;let t=e?.data;return Array.isArray(t)?t:[]}async function pt(e,t){let n=new Map,r=T(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(E(n).map(e=>e?.id).filter(e=>typeof e==`string`&&e!==``))}catch{return}for(let e of r)n.set(C(t,e),i.has(e))})),n}function mt(e){let t=Re(),[n,r]=(0,y.useState)(()=>new Map),i=(0,y.useRef)(new Set),a=(0,y.useRef)(e);a.current=e;let o=(0,y.useMemo)(()=>e.filter(w).map(e=>C(e.object_name,e.record_id)).join(`|`),[e]);return(0,y.useEffect)(()=>{if(!t)return;let e=a.current.filter(e=>w(e)&&!i.current.has(C(e.object_name,e.record_id)));if(e.length===0)return;for(let t of e)w(t)&&i.current.add(C(t.object_name,t.record_id));let n=!1;return pt(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,y.useMemo)(()=>({isUnreadable:e=>w(e)&&n.get(C(e.object_name,e.record_id))===!1}),[n])}var ht=`sys_approval_request`,gt=`cancel_reason`,D=`record_deleted`;function _t(e){return e?.status===`cancelled`&&e?.cancel_reason===`record_deleted`}function vt(){let{fieldOptionLabel:e}=_();return(0,y.useMemo)(()=>e(ht,gt,D,l.record_deleted),[e])}function yt(e,t){return!e||_t(e)||typeof e.record_title==`string`&&e.record_title.trim()!==``?!1:t}function bt(){let{t:e}=Be();return(0,y.useMemo)(()=>String(e(`approvalsInbox.recordUnresolvable`,{defaultValue:`This record cannot be opened`})),[e])}var O=new Set;function k(e){let t=e?.fields;if(!t||typeof t!=`object`)return O;let n=new Set;if(Array.isArray(t))for(let e of t){if(!e||typeof e!=`object`)continue;let t=e,r=t.name;typeof r==`string`&&r!==``&&t.hidden===!0&&n.add(r)}else for(let[e,r]of Object.entries(t))r&&typeof r==`object`&&r.hidden===!0&&n.add(e);return n.size>0?n:O}async function xt(e,t){if(typeof e?.getObjectSchema!=`function`)return O;try{return k(await e.getObjectSchema(t))}catch{return O}}function A(e){let t=[],n=new Set;for(let r of e)typeof r!=`string`||r===``||n.has(r)||(n.add(r),t.push(r));return t}function St(e){let t=Re(),[n,r]=(0,y.useState)(()=>new Map),i=(0,y.useRef)(new Set),a=(0,y.useRef)(e);a.current=e;let o=(0,y.useMemo)(()=>A(e).join(`|`),[e]);return(0,y.useEffect)(()=>{if(!t)return;let e=A(a.current).filter(e=>!i.current.has(e));if(e.length===0)return;for(let t of e)i.current.add(t);let n=!1;return Promise.all(e.map(async e=>[e,await xt(t,e)])).then(e=>{n||r(t=>{let n=new Map(t);for(let[t,r]of e)n.set(t,r);return n})}),()=>{n=!0}},[t,o]),(0,y.useMemo)(()=>({forObject:e=>typeof e==`string`&&e!==``?n.get(e)??O:O}),[n])}var j=i(),Ct=50,wt={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`,cancelled:`border-border bg-muted text-muted-foreground`};function Tt({status:e,label:t}){return(0,j.jsx)(p,{variant:`outline`,className:f(`font-medium`,wt[e]??``),children:t})}function Et({label:e,className:t}){return(0,j.jsxs)(`div`,{className:f(`flex items-center gap-1.5 text-muted-foreground min-w-0`,t),title:e,children:[(0,j.jsx)(at,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":`true`}),(0,j.jsx)(`span`,{className:`truncate italic`,children:e})]})}function Dt({label:e,className:t}){return(0,j.jsxs)(`div`,{className:f(`flex items-center gap-1.5 text-muted-foreground min-w-0`,t),title:e,children:[(0,j.jsx)(Qe,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":`true`}),(0,j.jsx)(`span`,{className:`truncate italic`,children:e})]})}function Ot(e,t){if(!e)return`—`;try{return new Date(e).toLocaleString(t)}catch{return e}}function M(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 N(e){return e&&String(e).replace(/^flow:/,``).trim().split(/[_\-\s]+/).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `)||`—`}function kt(e){return e.process_label||N(e.process_name)}function At(e){return e.step_label?e.step_label:e.current_step?N(e.current_step):null}function jt(e){return e.submitter_name||M(e.submitter_id)}function Mt(e,t){return t.pending_approver_names?.[e]||M(e)}function Nt(e,t){let n=t.pending_approver_groups?.[e];return n&&n.length?n.join(` / `):void 0}function Pt(e){let t=[],n=new Map;for(let r of e.pending_approvers||[]){let i=Mt(r,e),a=Nt(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 Ft(e){if(e.submitter_name)return!1;let t=(e.submitter_id||``).trim();return!t||t.startsWith(`flow:`)||t.startsWith(`system:`)}function It(e){return e.object_label||e.object_name}function P(e){return e.submitted_at||e.created_at||void 0}function Lt(e,t){let n=P(e);if(!n)return null;let r=Date.parse(n);return Number.isNaN(r)?null:(t-r)/36e5}function Rt(e,t){if(e.status!==`pending`)return`text-muted-foreground`;let n=Lt(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 zt(e){let t=Math.max(1,Math.round(Math.abs(e)/36e5));return t<48?`${t}h`:`${Math.round(t/24)}d`}function Bt(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 Vt=new Set([`id`,`created_at`,`updated_at`,`created_by`,`updated_by`,`organization_id`]);function F(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 I(e,t,n){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(n)}catch{}return t.toLocaleString(n)}let r=String(t);if(/^\d{4}-\d{2}-\d{2}T\d{2}/.test(r))try{return new Date(r).toLocaleString(n)}catch{}return r}var Ht=/^[A-Za-z0-9_-]{15,}$/;function Ut(e,t,n,r,i=6,a,o){if(!e||typeof e!=`object`||Array.isArray(e))return[];let s=[];for(let[c,l]of Object.entries(e)){if(Vt.has(c)||o?.has(c)||a&&c===a||l==null||typeof l==`object`||String(l).trim()===``)continue;let e=n?.[c];if((e||typeof l!=`string`||!Ht.test(l.trim())||/^\d+$/.test(l.trim()))&&(s.push([r?.[c]??F(c),e??I(c,l,t)]),s.length>=i))break}return s}var Wt=/(amount|total|price|value|cost|sum|budget|salary|fee|revenue|balance|金额|总额|价格|费用|预算|金额)/i;function Gt(e,t,n){let r=e.payload;if(!r||typeof r!=`object`||Array.isArray(r))return null;for(let[i,a]of Object.entries(r)){if(Vt.has(i)||t.has(i)||!Wt.test(i))continue;let r=typeof a==`number`?a:typeof a==`string`&&a.trim()!==``&&Number.isFinite(Number(a))?Number(a):null;if(r!=null&&Number.isFinite(r))return{key:i,label:e.payload_labels?.[i]??F(i),value:r,display:e.payload_display?.[i]??r.toLocaleString(n)}}return null}function Kt({r:e,tr:t}){return(0,j.jsxs)(`div`,{className:`min-w-0`,children:[(0,j.jsx)(`div`,{className:`font-medium truncate`,children:kt(e)}),(0,j.jsxs)(`div`,{className:`text-xs text-muted-foreground truncate`,children:[At(e)||`—`,(e.round??1)>1&&(0,j.jsx)(`span`,{className:`ml-1.5 text-violet-600 dark:text-violet-400`,children:t(`roundChip`,`Round {{n}}`,{n:e.round})})]})]})}function qt({r:e,href:t,hiddenKeys:n,deadLabel:i,unresolvableLabel:a}){let o=Gt(e,n,ze()),s=e.record_title||M(e.record_id);return(0,j.jsxs)(`div`,{className:`min-w-0`,children:[i===null?a===null?t===null?(0,j.jsx)(`div`,{className:`text-sm truncate max-w-full`,title:s,children:s}):(0,j.jsxs)(r,{to:t,onClick:e=>e.stopPropagation(),className:`inline-flex items-center gap-1 text-sm hover:underline truncate max-w-full`,title:s,children:[(0,j.jsx)(`span`,{className:`truncate`,children:s}),(0,j.jsx)(Ze,{className:`h-3 w-3 shrink-0 text-muted-foreground`})]}):(0,j.jsx)(Dt,{label:a,className:`text-sm max-w-full`}):(0,j.jsx)(Et,{label:i,className:`text-sm max-w-full`}),(0,j.jsxs)(`div`,{className:`text-xs text-muted-foreground truncate`,children:[It(e),i!==null&&e.record_title&&(0,j.jsxs)(`span`,{className:`ml-1.5`,children:[`· `,e.record_title]}),o&&(0,j.jsxs)(`span`,{className:`ml-1.5 font-medium text-foreground`,title:`${o.label}: ${o.display}`,children:[`· `,o.display]})]})]})}function Jt({r:e,actionable:t,busy:n,needsInputs:r,tr:i,onApprove:a,onReject:o}){if(!t)return null;let s=i(`needsDecisionInputs`,`This approval collects decision outputs — open it to decide.`);return(0,j.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:r?s:void 0,children:[(0,j.jsx)(g,{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:n||r,onClick:()=>a(e),"aria-label":r?s:i(`approve`,`Approve`),children:(0,j.jsx)(Ke,{className:`h-4 w-4`})}),(0,j.jsx)(g,{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:n||r,onClick:()=>o(e),"aria-label":r?s:i(`reject`,`Reject`),children:(0,j.jsx)(qe,{className:`h-4 w-4`})})]})}function Yt(){let{t:e}=Be(),i=ze(),{user:a}=s(),{appName:c}=n(),[l,Re]=t(),_=(0,y.useMemo)(()=>ft(a),[a]),{systemPermissions:Qe}=te(),at=dt(Qe),b=(0,y.useCallback)((t,n,r)=>String(e(`approvalsInbox.${t}`,{defaultValue:n,...r})),[e]),[x,C]=(0,y.useState)(()=>Date.now());(0,y.useEffect)(()=>{let e=setInterval(()=>C(Date.now()),6e4);return()=>clearInterval(e)},[]);let w=(0,y.useCallback)(e=>{if(!e)return`—`;let t=Date.parse(e);if(Number.isNaN(t))return e;let n=Math.round((x-t)/1e3);if(n<45)return b(`justNow`,`just now`);let r=Math.round(n/60);if(r<60)return b(`minutesAgo`,`{{count}}m ago`,{count:r});let a=Math.round(r/60);if(a<24)return b(`hoursAgo`,`{{count}}h ago`,{count:a});let o=Math.round(a/24);if(o<30)return b(`daysAgo`,`{{count}}d ago`,{count:o});try{return new Date(e).toLocaleDateString(i)}catch{return e}},[b,i,x]),T=(0,y.useCallback)(e=>{switch(e){case`pending`:return b(`statusPending`,`Pending`);case`approved`:return b(`statusApproved`,`Approved`);case`rejected`:return b(`statusRejected`,`Rejected`);case`recalled`:return b(`statusRecalled`,`Recalled`);case`returned`:return b(`statusReturned`,`Returned for revision`);case`cancelled`:return b(`statusCancelled`,ee.cancelled);default:return e}},[b]),E=(0,y.useCallback)((e,t)=>{let n=e?.code??``,r=e?.status??0;return n===`NOT_IMPLEMENTED`||r===501?b(`recallUnavailable`,`Recall is not available on this deployment.`):n===`THROTTLED`||r===429?b(`remindThrottled`,`A reminder was sent recently — try again later.`):r===404?b(`requestGone`,`This request no longer exists. Refresh the list.`):n===`FORBIDDEN`||r===403?b(`notAllowed`,`You are not allowed to perform this action.`):n===`INVALID_STATE`||r===409?b(`alreadyDecided`,`This request was already decided. Refresh the list.`):e?.message||t},[b]),pt=(0,y.useCallback)(e=>e.overdue?b(`slaOverdue`,`SLA overdue {{dur}}`,{dur:zt(e.ms)}):b(`slaRemaining`,`SLA {{dur}} left`,{dur:zt(e.ms)}),[b]),ht=(0,y.useCallback)(e=>`/apps/${c||`setup`}/${encodeURIComponent(e.object_name)}/record/${encodeURIComponent(e.record_id)}`,[c]),gt=vt(),D=(0,y.useCallback)(e=>_t(e)?gt:null,[gt]),O=bt(),[k,xt]=(0,y.useState)(`pending`),[A,wt]=(0,y.useState)([]),[N,Nt]=(0,y.useState)(!1),[Lt,Vt]=(0,y.useState)(!1),[F,I]=(0,y.useState)(null),[Ht,Wt]=(0,y.useState)(null),[Yt,Xt]=(0,y.useState)(0),[L,Zt]=(0,y.useState)(null),[R,Qt]=(0,y.useState)(null),[$t,en]=(0,y.useState)([]),[tn,nn]=(0,y.useState)(!1),rn=(0,y.useMemo)(()=>R?[...A,R]:A,[A,R]),an=mt(rn),on=(0,y.useCallback)(e=>yt(e,!!e&&an.isUnreadable(e))?O:null,[an,O]),z=St((0,y.useMemo)(()=>rn.map(e=>e.object_name),[rn])),sn=z.forObject(R?.object_name),cn=(0,y.useMemo)(()=>o(),[]),ln=(0,y.useCallback)(async e=>{let t=window.open(``,`_blank`,`noopener`);try{let n=``.replace(/\/$/,``),r=await cn(`${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(),v.error(b(`attachmentOpenFailed`,`Could not open the attachment — please try again`))}},[cn,b]),[B,un]=(0,y.useState)(``),[dn,fn]=(0,y.useState)(``),[pn,mn]=(0,y.useState)(`all`),[hn,gn]=(0,y.useState)(`all`),[V,_n]=(0,y.useState)(`all`),[vn,yn]=(0,y.useState)(`recent`),[H,bn]=(0,y.useState)(new Set),[xn,Sn]=(0,y.useState)(!1),[U,Cn]=(0,y.useState)(null),[W,wn]=(0,y.useState)(null),[Tn,En]=(0,y.useState)(null),[G,Dn]=(0,y.useState)(``),[On,kn]=(0,y.useState)(!1),[An,jn]=(0,y.useState)(-1);(0,y.useEffect)(()=>{if(k===`pending`)return;let e=window.setTimeout(()=>fn(B),350);return()=>window.clearTimeout(e)},[B,k]);let K=(0,y.useCallback)(async()=>{Nt(!0),Wt(null);try{let e=[];if(k===`pending`)e=_.length?(await S.listRequests({status:`pending`,approverId:_})).data:[],Xt(e.length),I(null);else{let t={q:dn||void 0,status:V===`all`?void 0:V,limit:Ct,offset:0};if(k===`submitted`){let n=a?.id;if(n){let r=await S.listRequests({submitterId:n,...t});e=r.data,I(r.total??r.data.length)}else e=[],I(0)}else{let n=await S.listRequests(t);e=n.data,I(n.total??n.data.length)}_.length&&S.listRequests({status:`pending`,approverId:_}).then(e=>Xt(e.data.length)).catch(()=>{})}e.sort((e,t)=>(P(t)||``).localeCompare(P(e)||``)),wt(e)}catch(e){Wt(e?.message||String(e)),wt([])}finally{Nt(!1)}},[k,_,a?.id,dn,V]);(0,y.useEffect)(()=>{K()},[K]);let Mn=(0,y.useCallback)(async()=>{if(!(k===`pending`||Lt)){Vt(!0);try{let e=await S.listRequests({submitterId:k===`submitted`?a?.id??void 0:void 0,q:dn||void 0,status:V===`all`?void 0:V,limit:Ct,offset:A.length});wt(t=>{let n=new Set(t.map(e=>e.id));return[...t,...e.data.filter(e=>!n.has(e.id))]}),e.total!=null&&I(e.total)}catch(e){v.error(E(e,b(`loadFailed`,`Failed to load request`)))}finally{Vt(!1)}}},[k,Lt,a?.id,dn,V,A.length,E,b]),q=(0,y.useCallback)(async e=>{Zt(e),nn(!0);try{let[t,n]=await Promise.all([S.getRequest(e),S.listActions(e)]);Qt(t.data),en(n.data)}catch(e){v.error(E(e,b(`loadFailed`,`Failed to load request`))),Qt(null),en([])}finally{nn(!1)}},[E,b]),Nn=()=>{Zt(null),Qt(null),en([])};(0,y.useEffect)(()=>{let e=l.get(`request`);e&&(Re(e=>{let t=new URLSearchParams(e);return t.delete(`request`),t},{replace:!0}),q(e))},[l]);let J=(0,y.useCallback)(()=>{_.length&&S.listRequests({status:`pending`,approverId:_}).then(e=>Xt(e.data.length)).catch(()=>{})},[_]),Pn=(0,y.useCallback)(async e=>{let[t,n]=await Promise.all([S.getRequest(e),S.listActions(e)]);Qt(t.data),en(n.data),K()},[K]),Fn=(0,y.useCallback)(async()=>{if(!R)return;let e=R.id;try{let[t,n]=await Promise.all([S.getRequest(e),S.listActions(e)]);Qt(t.data),en(n.data),K();let r=new Set(t.data.pending_approvers||[]),i=t.data.status===`pending`&&_.some(e=>r.has(e));if(k===`pending`&&!i){let t=Xn.current,n=t.findIndex(t=>t.id===e),r=t[n+1]??t[n-1];if(r&&r.id!==e){q(r.id);return}Nn()}}catch{Pn(e)}},[R,_,k,K,q,Nn,Pn]),In=(0,y.useCallback)(async()=>{if(R&&G.trim()){kn(!0);try{await S.comment(R.id,{actor_id:a?.id,comment:G.trim()}),Dn(``),await Pn(R.id)}catch(e){v.error(E(e,b(`actionFailed`,`Action failed`)))}finally{kn(!1)}}},[R,G,a?.id,Pn,E,b]),Ln=(0,y.useMemo)(()=>{if(!R||R.status!==`pending`)return!1;if(R.viewer)return R.viewer.can_act||!!R.viewer.can_override;let e=new Set(R.pending_approvers||[]);return _.some(t=>e.has(t))},[R,_]),Rn=(0,y.useMemo)(()=>!R||R.status!==`pending`?!1:R.viewer?R.viewer.is_submitter:R.submitter_id===a?.id,[R,a?.id]),zn=(0,y.useMemo)(()=>!R||R.status!==`returned`?!1:R.viewer?R.viewer.is_submitter:R.submitter_id===a?.id,[R,a?.id]),Bn=(0,y.useMemo)(()=>{let e=new Set;for(let t of A)e.add(kt(t));return Array.from(e).sort()},[A]),Vn=(0,y.useMemo)(()=>{let e=new Set;for(let t of A)t.object_name&&e.add(t.object_name);return Array.from(e).sort()},[A]),Y=(0,y.useMemo)(()=>{let e=B.trim().toLowerCase(),t=A.filter(t=>pn!==`all`&&kt(t)!==pn||hn!==`all`&&t.object_name!==hn||V!==`all`&&t.status!==V?!1:k!==`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(vn===`recent`)return t;let n=[...t];return vn===`amount`?n.sort((e,t)=>{let n=Gt(e,z.forObject(e.object_name),i)?.value,r=Gt(t,z.forObject(t.object_name),i)?.value;return n==null&&r==null?0:n==null?1:r==null?-1:r-n}):n.sort((e,t)=>(P(e)||``).localeCompare(P(t)||``)),n},[A,B,pn,hn,V,k,vn,z,i]),X=(0,y.useMemo)(()=>L?Y.findIndex(e=>e.id===L):-1,[Y,L]);(0,y.useEffect)(()=>{if(H.size===0)return;let e=new Set(Y.map(e=>e.id)),t=!1,n=new Set;for(let r of H)e.has(r)?n.add(r):t=!0;t&&bn(n)},[Y,H]),(0,y.useEffect)(()=>{An>=Y.length&&jn(Y.length-1)},[Y.length,An]);let Hn=(0,y.useCallback)(e=>{if(e.status!==`pending`)return!1;let t=new Set(_);return(e.pending_approvers||[]).some(e=>t.has(e))},[_]),Z=(0,y.useCallback)(e=>Array.isArray(e.decision_outputs)&&e.decision_outputs.length>0,[]),Un=(0,y.useCallback)(e=>Hn(e)&&!Z(e),[Hn,Z]),Q=(0,y.useMemo)(()=>Y.filter(e=>H.has(e.id)&&Un(e)),[Y,H,Un]),$=Y.filter(e=>e.status===`pending`),Wn=$.length>0&&$.every(e=>H.has(e.id)),Gn=(0,y.useCallback)(()=>{bn(e=>{if(Wn)return new Set;let t=new Set(e);for(let e of $)t.add(e.id);return t})},[Wn,$]),Kn=(0,y.useCallback)(e=>{bn(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),qn=(0,y.useCallback)(async e=>{let t=Q;if(t.length===0)return;Sn(!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`?S.approve:S.reject)(i.id,{actor_id:o}),n++}catch{r.push(i.record_title||M(i.record_id))}}if(Sn(!1),bn(new Set),r.length===0)v.success(e===`approve`?b(`bulkApproved`,`Approved {{count}} requests`,{count:n}):b(`bulkRejected`,`Rejected {{count}} requests`,{count:n}));else{let e=r.slice(0,3).join(`, `);v.error(b(`bulkPartial`,`{{ok}} succeeded, {{fail}} failed: {{which}}`,{ok:n,fail:r.length,which:e+(r.length>3?`…`:``)}))}K(),J()},[Q,_,a?.id,K,J,b]),Jn=(0,y.useCallback)(async()=>{let e=U;if(!e)return;let t=new Set(e.pending_approvers||[]),n=_.find(e=>t.has(e))||a?.id||``;En(e.id),Cn(null);try{let t=await S.approve(e.id,{actor_id:n});v.success(t.finalized?b(`inlineApproved`,`Approved "{{title}}"`,{title:e.record_title||M(e.record_id)}):b(`approvedWaiting`,`Approved — waiting on the remaining approvers`)),K(),J()}catch(e){v.error(E(e,b(`actionFailed`,`Action failed`)))}finally{En(null)}},[U,_,a?.id,K,J,E,b]),Yn=(0,y.useCallback)(async()=>{let e=W;if(!e)return;let t=new Set(e.pending_approvers||[]),n=_.find(e=>t.has(e))||a?.id||``;En(e.id),wn(null);try{await S.reject(e.id,{actor_id:n}),v.success(b(`inlineRejected`,`Rejected "{{title}}"`,{title:e.record_title||M(e.record_id)})),K(),J()}catch(e){v.error(E(e,b(`actionFailed`,`Action failed`)))}finally{En(null)}},[W,_,a?.id,K,J,E,b]),Xn=(0,y.useRef)(Y);Xn.current=Y;let Zn=(0,y.useRef)(An);Zn.current=An,(0,y.useEffect)(()=>{let e=e=>{if(L||U||W)return;let t=e.target,n=t?.tagName;if(n===`INPUT`||n===`TEXTAREA`||n===`SELECT`||t?.isContentEditable||document.querySelector(`[role="alertdialog"]`))return;let r=Xn.current;if(!r.length)return;let i=Zn.current;e.key===`j`||e.key===`ArrowDown`?(e.preventDefault(),jn(Math.min(i+1,r.length-1))):e.key===`k`||e.key===`ArrowUp`?(e.preventDefault(),jn(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]&&k===`pending`?(e.preventDefault(),Kn(r[i].id)):e.key===`a`&&i>=0&&r[i]&&Un(r[i])?(e.preventDefault(),Cn(r[i])):e.key===`r`&&i>=0&&r[i]&&Un(r[i])&&(e.preventDefault(),wn(r[i]))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[L,U,W,k,q,Kn,Un]),(0,y.useEffect)(()=>{if(!L)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=Xn.current,i=r.findIndex(e=>e.id===L);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)},[L,q]);let Qn=!!B||pn!==`all`||hn!==`all`||V!==`all`,$n=e=>{xt(e),_n(`all`),mn(`all`),gn(`all`),un(``),yn(`recent`),jn(-1)};return(0,j.jsxs)(`div`,{className:`flex flex-col gap-4 sm:gap-6 p-4 sm:p-6 max-w-6xl`,children:[(0,j.jsxs)(`header`,{className:`flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsxs)(`h1`,{className:`text-2xl font-semibold flex items-center gap-2`,children:[(0,j.jsx)(it,{className:`h-6 w-6`}),b(`title`,`Approvals Inbox`)]}),(0,j.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:b(`subtitle`,`Review and act on approval requests.`)})]}),(0,j.jsxs)(g,{variant:`outline`,size:`sm`,onClick:K,disabled:N,className:`self-start sm:self-auto`,children:[(0,j.jsx)(et,{className:`h-4 w-4 mr-2 ${N?`animate-spin`:``}`}),b(`refresh`,`Refresh`)]})]}),Ht&&(0,j.jsxs)(ke,{variant:`destructive`,children:[(0,j.jsx)(Ge,{className:`h-4 w-4`}),(0,j.jsx)(Me,{children:Ht})]}),(0,j.jsxs)(he,{value:k,onValueChange:$n,children:[(0,j.jsxs)(de,{children:[(0,j.jsxs)(ne,{value:`pending`,children:[b(`tabMyPending`,`My Pending`),Yt>0&&(0,j.jsx)(p,{variant:`secondary`,className:`ml-2`,children:Yt})]}),(0,j.jsx)(ne,{value:`submitted`,children:b(`tabSubmitted`,`Submitted by me`)}),(0,j.jsx)(ne,{value:`all`,children:b(`tabAll`,`All`)})]}),(0,j.jsxs)(ge,{value:k,className:`mt-4 space-y-3`,children:[!N&&(A.length>0||k!==`pending`&&(dn||V!==`all`))&&(0,j.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,j.jsxs)(`div`,{className:`relative flex-1 min-w-[200px] max-w-sm`,children:[(0,j.jsx)(tt,{className:`absolute left-2.5 top-1/2 -translate-y-1/2 h-3.5 w-3.5 text-muted-foreground`}),(0,j.jsx)(je,{value:B,onChange:e=>un(e.target.value),placeholder:b(`searchPlaceholder`,`Search record, process, requester…`),className:`pl-8 h-8 text-sm`}),B&&(0,j.jsx)(`button`,{type:`button`,onClick:()=>un(``),className:`absolute right-2 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground`,"aria-label":b(`clearSearch`,`Clear search`),children:(0,j.jsx)(ct,{className:`h-3.5 w-3.5`})})]}),k!==`pending`&&(0,j.jsxs)(ae,{value:V,onValueChange:_n,children:[(0,j.jsx)(fe,{className:`h-8 w-auto min-w-[130px] text-sm`,children:(0,j.jsx)(Ie,{placeholder:b(`statusFilter`,`Status`)})}),(0,j.jsxs)(oe,{children:[(0,j.jsx)(d,{value:`all`,children:b(`allStatuses`,`All statuses`)}),(0,j.jsx)(d,{value:`pending`,children:T(`pending`)}),(0,j.jsx)(d,{value:`approved`,children:T(`approved`)}),(0,j.jsx)(d,{value:`rejected`,children:T(`rejected`)}),(0,j.jsx)(d,{value:`recalled`,children:T(`recalled`)}),(0,j.jsx)(d,{value:`returned`,children:T(`returned`)})]})]}),Bn.length>1&&(0,j.jsxs)(ae,{value:pn,onValueChange:mn,children:[(0,j.jsx)(fe,{className:`h-8 w-auto min-w-[140px] text-sm`,children:(0,j.jsx)(Ie,{placeholder:b(`processFilter`,`Process`)})}),(0,j.jsxs)(oe,{children:[(0,j.jsx)(d,{value:`all`,children:b(`allProcesses`,`All processes`)}),Bn.map(e=>(0,j.jsx)(d,{value:e,children:e},e))]})]}),Vn.length>1&&(0,j.jsxs)(ae,{value:hn,onValueChange:gn,children:[(0,j.jsx)(fe,{className:`h-8 w-auto min-w-[140px] text-sm`,children:(0,j.jsx)(Ie,{placeholder:b(`objectFilter`,`Object`)})}),(0,j.jsxs)(oe,{children:[(0,j.jsx)(d,{value:`all`,children:b(`allObjects`,`All objects`)}),Vn.map(e=>(0,j.jsx)(d,{value:e,children:e},e))]})]}),(0,j.jsxs)(ae,{value:vn,onValueChange:e=>yn(e),children:[(0,j.jsxs)(fe,{className:`h-8 w-auto min-w-[120px] text-sm`,children:[(0,j.jsx)(Ve,{className:`h-3.5 w-3.5 mr-1 text-muted-foreground`}),(0,j.jsx)(Ie,{placeholder:b(`sortBy`,`Sort`)})]}),(0,j.jsxs)(oe,{children:[(0,j.jsx)(d,{value:`recent`,children:b(`sortRecent`,`Newest first`)}),(0,j.jsx)(d,{value:`oldest`,children:b(`sortOldest`,`Oldest first`)}),(0,j.jsx)(d,{value:`amount`,children:b(`sortAmount`,`Amount (high→low)`)})]})]}),Qn&&(0,j.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:b(`filterCount`,`{{shown}} of {{total}}`,{shown:Y.length,total:A.length})})]}),k===`pending`&&H.size>0&&(0,j.jsxs)(`div`,{className:`flex items-center justify-between gap-2 px-3 py-2 rounded-md border bg-accent/30 text-sm`,children:[(0,j.jsxs)(`span`,{children:[(0,j.jsx)(`strong`,{children:H.size}),` `,b(`selected`,`selected`),Q.length!==H.size&&(0,j.jsx)(`span`,{className:`text-muted-foreground ml-1`,children:b(`actionableCount`,`({{count}} actionable)`,{count:Q.length})})]}),(0,j.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,j.jsxs)(De,{children:[(0,j.jsx)(_e,{asChild:!0,children:(0,j.jsxs)(g,{size:`sm`,disabled:xn||Q.length===0,children:[(0,j.jsx)(Ke,{className:`h-3.5 w-3.5 mr-1`}),b(`approveN`,`Approve {{count}}`,{count:Q.length||``})]})}),(0,j.jsxs)(xe,{children:[(0,j.jsxs)(Ce,{children:[(0,j.jsx)(Se,{children:b(`bulkApproveTitle`,`Approve {{count}} requests?`,{count:Q.length})}),(0,j.jsx)(Ae,{children:b(`bulkApproveBody`,`Each request is approved with your identity and its flow continues down the approve branch.`)})]}),(0,j.jsxs)(Oe,{children:[(0,j.jsx)(ye,{children:b(`cancel`,`Cancel`)}),(0,j.jsx)(Pe,{onClick:()=>qn(`approve`),children:b(`approveN`,`Approve {{count}}`,{count:Q.length})})]})]})]}),(0,j.jsxs)(De,{children:[(0,j.jsx)(_e,{asChild:!0,children:(0,j.jsxs)(g,{size:`sm`,variant:`outline`,disabled:xn||Q.length===0,className:`border-destructive text-destructive hover:bg-destructive hover:text-destructive-foreground`,children:[(0,j.jsx)(qe,{className:`h-3.5 w-3.5 mr-1`}),b(`rejectN`,`Reject {{count}}`,{count:Q.length||``})]})}),(0,j.jsxs)(xe,{children:[(0,j.jsxs)(Ce,{children:[(0,j.jsx)(Se,{children:b(`bulkRejectTitle`,`Reject {{count}} requests?`,{count:Q.length})}),(0,j.jsx)(Ae,{children:b(`bulkRejectBody`,`This rejects the selected requests and notifies their submitters.`)})]}),(0,j.jsxs)(Oe,{children:[(0,j.jsx)(ye,{children:b(`cancel`,`Cancel`)}),(0,j.jsx)(Pe,{onClick:()=>qn(`reject`),className:`bg-destructive text-destructive-foreground hover:bg-destructive/90`,children:b(`rejectN`,`Reject {{count}}`,{count:Q.length})})]})]})]}),(0,j.jsx)(g,{size:`sm`,variant:`ghost`,onClick:()=>bn(new Set),disabled:xn,children:b(`clear`,`Clear`)})]})]}),N?(0,j.jsxs)(`div`,{className:`space-y-2`,children:[(0,j.jsx)(u,{className:`h-10 w-full`}),(0,j.jsx)(u,{className:`h-10 w-full`}),(0,j.jsx)(u,{className:`h-10 w-full`})]}):A.length===0?(0,j.jsx)(`div`,{className:`flex items-center justify-center min-h-[240px] rounded-md border border-dashed`,children:(0,j.jsxs)(Fe,{children:[(0,j.jsx)(le,{children:b(`emptyTitle`,`No requests`)}),(0,j.jsx)(me,{children:k===`pending`?b(`emptyPending`,`You're all caught up — nothing is waiting on you.`):b(`emptyOther`,`Nothing here yet.`)}),k===`pending`&&(0,j.jsx)(g,{variant:`link`,size:`sm`,className:`mt-1`,onClick:()=>$n(`all`),children:b(`emptyViewAll`,`Browse all requests`)})]})}):Y.length===0?(0,j.jsx)(`div`,{className:`flex items-center justify-center min-h-[160px] rounded-md border border-dashed text-sm text-muted-foreground`,children:b(`noMatches`,`No matches for current filters.`)}):(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(Le,{className:`hidden md:block`,children:(0,j.jsx)(ie,{className:`p-0`,children:(0,j.jsxs)(be,{children:[(0,j.jsx)(we,{children:(0,j.jsxs)(ve,{children:[k===`pending`&&(0,j.jsx)(h,{className:`w-10`,children:(0,j.jsx)(pe,{checked:Wn,onCheckedChange:Gn,"aria-label":b(`selectAll`,`Select all`),disabled:$.length===0})}),(0,j.jsx)(h,{className:`w-[22%]`,children:b(`colRequest`,`Request`)}),(0,j.jsx)(h,{className:`w-[30%]`,children:b(`colRecord`,`Record`)}),(0,j.jsx)(h,{className:`w-[16%]`,children:b(`colRequester`,`Requester`)}),(0,j.jsx)(h,{className:`w-[110px] min-w-[96px] whitespace-nowrap`,children:b(`colStatus`,`Status`)}),(0,j.jsx)(h,{className:`w-[132px]`,children:b(`colWaiting`,`Submitted`)}),(0,j.jsx)(h,{className:`w-20`,"aria-label":b(`colActions`,`Actions`)})]})}),(0,j.jsx)(Ne,{children:Y.map((e,t)=>(0,j.jsxs)(ve,{className:f(`group cursor-pointer hover:bg-accent/50`,An===t&&`ring-2 ring-inset ring-ring bg-accent/30`),onClick:()=>{jn(t),q(e.id)},children:[k===`pending`&&(0,j.jsx)(m,{className:`w-10`,onClick:e=>e.stopPropagation(),children:(0,j.jsx)(pe,{checked:H.has(e.id),onCheckedChange:()=>Kn(e.id),disabled:e.status!==`pending`,"aria-label":b(`selectRow`,`Select request`)})}),(0,j.jsx)(m,{children:(0,j.jsx)(Kt,{r:e,tr:b})}),(0,j.jsx)(m,{children:(0,j.jsx)(qt,{r:e,href:D(e)!==null||an.isUnreadable(e)?null:ht(e),hiddenKeys:z.forObject(e.object_name),deadLabel:D(e),unresolvableLabel:on(e)})}),(0,j.jsx)(m,{children:Ft(e)?(0,j.jsxs)(`div`,{className:`flex items-center gap-1.5 text-sm text-muted-foreground`,children:[(0,j.jsx)(st,{className:`h-3.5 w-3.5 shrink-0`}),(0,j.jsx)(`span`,{className:`truncate italic`,children:b(`flowOrigin`,`Flow-initiated`)})]}):(0,j.jsxs)(`div`,{className:`flex items-center gap-1.5 text-sm`,children:[(0,j.jsx)(ot,{className:`h-3.5 w-3.5 text-muted-foreground shrink-0`}),(0,j.jsx)(`span`,{className:`truncate`,title:e.submitter_id||``,children:jt(e)})]})}),(0,j.jsx)(m,{children:(0,j.jsx)(Tt,{status:e.status,label:T(e.status)})}),(0,j.jsxs)(m,{className:f(`text-xs whitespace-nowrap`,Rt(e,x)),title:Ot(P(e),i),children:[(0,j.jsx)(Ye,{className:`h-3 w-3 inline mr-1`}),w(P(e)),e.status===`pending`&&(()=>{let t=Bt(e.sla_due_at,x);return t?(0,j.jsx)(`div`,{className:f(`mt-0.5 text-[10px] font-medium`,t.overdue?`text-red-600 dark:text-red-400`:`text-muted-foreground`),children:pt(t)}):null})()]}),(0,j.jsx)(m,{className:`w-20`,children:(0,j.jsx)(Jt,{r:e,actionable:Hn(e),busy:Tn===e.id,needsInputs:Z(e),tr:b,onApprove:Cn,onReject:wn})})]},e.id))})]})})}),(0,j.jsx)(`div`,{className:`md:hidden space-y-2`,children:Y.map(e=>(0,j.jsx)(Le,{className:`cursor-pointer active:bg-accent/50`,onClick:()=>void q(e.id),children:(0,j.jsxs)(ie,{className:`p-3 space-y-1.5`,children:[(0,j.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,j.jsx)(`div`,{className:`font-medium text-sm truncate`,children:kt(e)}),(0,j.jsx)(Tt,{status:e.status,label:T(e.status)})]}),(()=>{let t=D(e),n=on(e);return(0,j.jsxs)(`div`,{className:`text-sm truncate`,children:[t===null?n===null?e.record_title||M(e.record_id):(0,j.jsx)(`span`,{className:`italic text-muted-foreground`,children:n}):(0,j.jsx)(`span`,{className:`italic text-muted-foreground`,children:t}),(0,j.jsx)(`span`,{className:`text-muted-foreground text-xs ml-1.5`,children:It(e)}),t!==null&&e.record_title&&(0,j.jsxs)(`span`,{className:`text-muted-foreground text-xs ml-1.5`,children:[`· `,e.record_title]}),(()=>{let t=Gt(e,z.forObject(e.object_name),i);return t?(0,j.jsxs)(`span`,{className:`text-xs ml-1.5 font-medium`,title:t.label,children:[`· `,t.display]}):null})()]})})(),(0,j.jsxs)(`div`,{className:`flex items-center justify-between text-xs text-muted-foreground`,children:[Ft(e)?(0,j.jsxs)(`span`,{className:`inline-flex items-center gap-1 truncate italic`,children:[(0,j.jsx)(st,{className:`h-3 w-3`}),b(`flowOrigin`,`Flow-initiated`)]}):(0,j.jsxs)(`span`,{className:`inline-flex items-center gap-1 truncate`,children:[(0,j.jsx)(ot,{className:`h-3 w-3`}),jt(e)]}),(0,j.jsxs)(`span`,{className:f(`inline-flex items-center gap-1 whitespace-nowrap`,Rt(e,x)),children:[(0,j.jsx)(Ye,{className:`h-3 w-3`}),w(P(e))]})]}),Hn(e)&&(0,j.jsxs)(`div`,{className:`flex gap-2 pt-1`,onClick:e=>e.stopPropagation(),title:Z(e)?b(`needsDecisionInputs`,`This approval collects decision outputs — open it to decide.`):void 0,children:[(0,j.jsxs)(g,{size:`sm`,className:`h-7 flex-1`,disabled:Tn===e.id||Z(e),onClick:()=>Cn(e),children:[(0,j.jsx)(Ke,{className:`h-3.5 w-3.5 mr-1`}),b(`approve`,`Approve`)]}),(0,j.jsxs)(g,{size:`sm`,variant:`outline`,className:`h-7 flex-1 border-destructive text-destructive`,disabled:Tn===e.id||Z(e),onClick:()=>wn(e),children:[(0,j.jsx)(qe,{className:`h-3.5 w-3.5 mr-1`}),b(`reject`,`Reject`)]})]})]})},e.id))}),k!==`pending`&&F!=null&&(0,j.jsxs)(`div`,{className:`flex items-center justify-center gap-3 py-1`,children:[(0,j.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:b(`loadedOf`,`Loaded {{loaded}} of {{total}}`,{loaded:A.length,total:F})}),A.length<F&&(0,j.jsx)(g,{size:`sm`,variant:`outline`,disabled:Lt,onClick:()=>void Mn(),children:Lt?b(`loadingMore`,`Loading…`):b(`loadMore`,`Load more`)})]}),(0,j.jsx)(`div`,{className:`hidden md:block text-[11px] text-muted-foreground`,children:b(`keyboardHint`,`Keyboard: j/k move · Enter open · x select · a approve · r reject`)})]})]})]}),(0,j.jsx)(De,{open:!!U,onOpenChange:e=>!e&&Cn(null),children:(0,j.jsxs)(xe,{children:[(0,j.jsxs)(Ce,{children:[(0,j.jsx)(Se,{children:b(`approveOneTitle`,`Approve "{{title}}"?`,{title:U?U.record_title||M(U.record_id):``})}),(0,j.jsx)(Ae,{children:b(`approveOneBody`,`This approves the request with your identity. To add a comment or attachment, open the request instead.`)})]}),(0,j.jsxs)(Oe,{children:[(0,j.jsx)(ye,{children:b(`cancel`,`Cancel`)}),(0,j.jsx)(Pe,{onClick:()=>void Jn(),children:b(`approve`,`Approve`)})]})]})}),(0,j.jsx)(De,{open:!!W,onOpenChange:e=>!e&&wn(null),children:(0,j.jsxs)(xe,{children:[(0,j.jsxs)(Ce,{children:[(0,j.jsx)(Se,{children:b(`rejectOneTitle`,`Reject "{{title}}"?`,{title:W?W.record_title||M(W.record_id):``})}),(0,j.jsx)(Ae,{children:b(`rejectOneBody`,`This rejects the request and notifies the submitter.`)})]}),(0,j.jsxs)(Oe,{children:[(0,j.jsx)(ye,{children:b(`cancel`,`Cancel`)}),(0,j.jsx)(Pe,{onClick:()=>void Yn(),className:`bg-destructive text-destructive-foreground hover:bg-destructive/90`,children:b(`reject`,`Reject`)})]})]})}),(0,j.jsx)(Ee,{open:!!L,onOpenChange:e=>!e&&Nn(),children:(0,j.jsxs)(re,{className:`w-full sm:max-w-xl overflow-y-auto`,children:[(0,j.jsxs)(se,{children:[(0,j.jsx)(ce,{children:R?kt(R):b(`drawerTitle`,`Approval Request`)}),(0,j.jsx)(Te,{children:R?At(R)||It(R):``})]}),R&&X>=0&&Y.length>1&&(0,j.jsxs)(`div`,{className:`flex items-center justify-between mt-2 text-xs text-muted-foreground`,children:[(0,j.jsxs)(g,{variant:`ghost`,size:`sm`,className:`h-7 px-2`,disabled:X<=0,onClick:()=>{let e=Y[X-1];e&&q(e.id)},children:[(0,j.jsx)(Ue,{className:`h-4 w-4 mr-0.5`}),b(`prevRequest`,`Previous`)]}),(0,j.jsx)(`span`,{children:b(`positionOf`,`Request {{index}} of {{total}}`,{index:X+1,total:Y.length})}),(0,j.jsxs)(g,{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:[b(`nextRequest`,`Next`),(0,j.jsx)(We,{className:`h-4 w-4 ml-0.5`})]})]}),tn?(0,j.jsxs)(`div`,{className:`space-y-2 mt-6`,children:[(0,j.jsx)(u,{className:`h-6 w-3/4`}),(0,j.jsx)(u,{className:`h-6 w-1/2`}),(0,j.jsx)(u,{className:`h-20 w-full`})]}):R?(0,j.jsxs)(`div`,{className:`space-y-4 mt-6`,children:[(0,j.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-xs text-muted-foreground`,children:[(0,j.jsx)(Tt,{status:R.status,label:T(R.status)}),(R.round??1)>1&&(0,j.jsx)(p,{variant:`outline`,className:`text-[10px] border-violet-200 text-violet-700 dark:border-violet-500/30 dark:text-violet-400`,children:b(`roundChip`,`Round {{n}}`,{n:R.round})}),(0,j.jsxs)(`span`,{className:`inline-flex items-center gap-1`,title:Ot(P(R),i),children:[(0,j.jsx)(Ye,{className:`h-3 w-3`}),b(`submittedAgo`,`Submitted {{when}}`,{when:w(P(R))})]}),R.completed_at&&(0,j.jsxs)(`span`,{children:[`· `,b(`completedAt`,`Completed {{when}}`,{when:w(R.completed_at)})]}),R.status===`pending`&&(()=>{let e=Bt(R.sla_due_at,x);return e?(0,j.jsx)(p,{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:pt(e)}):null})()]}),(()=>{let e=Gt(R,sn,i),t=Ut(R.payload,i,R.payload_display,R.payload_labels,6,e?.key,sn);return(0,j.jsx)(Le,{children:(0,j.jsxs)(ie,{className:`p-4 space-y-3`,children:[(0,j.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,j.jsxs)(`div`,{className:`min-w-0`,children:[D(R)===null?on(R)===null?an.isUnreadable(R)?(0,j.jsx)(`div`,{className:`text-base font-semibold truncate`,children:R.record_title||M(R.record_id)}):(0,j.jsxs)(r,{to:ht(R),className:`text-base font-semibold hover:underline inline-flex items-center gap-1.5`,children:[(0,j.jsx)(`span`,{className:`truncate`,children:R.record_title||M(R.record_id)}),(0,j.jsx)(Ze,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground`})]}):(0,j.jsx)(Dt,{label:on(R),className:`text-base font-semibold`}):(0,j.jsx)(Et,{label:D(R),className:`text-base font-semibold`}),(0,j.jsxs)(`div`,{className:`text-xs text-muted-foreground`,children:[It(R),D(R)!==null&&R.record_title&&(0,j.jsxs)(`span`,{className:`ml-1.5`,children:[`· `,R.record_title]})]})]}),(0,j.jsx)(`div`,{className:`text-right text-xs text-muted-foreground shrink-0`,children:(0,j.jsx)(`div`,{className:`inline-flex items-center gap-1`,children:Ft(R)?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(st,{className:`h-3 w-3`}),(0,j.jsx)(`span`,{className:`italic`,children:b(`flowOrigin`,`Flow-initiated`)})]}):(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(ot,{className:`h-3 w-3`}),(0,j.jsx)(`span`,{title:R.submitter_id||``,children:jt(R)})]})})})]}),e&&(0,j.jsxs)(`div`,{className:`border-t pt-3`,children:[(0,j.jsx)(`div`,{className:`text-[11px] text-muted-foreground`,children:e.label}),(0,j.jsx)(`div`,{className:`text-xl font-semibold tabular-nums`,title:e.display,children:e.display})]}),t.length>0&&(0,j.jsx)(`div`,{className:f(`grid grid-cols-2 gap-x-4 gap-y-2 text-sm`,!e&&`border-t pt-3`),children:t.map(([e,t])=>(0,j.jsxs)(`div`,{className:`min-w-0`,children:[(0,j.jsx)(`div`,{className:`text-[11px] text-muted-foreground`,children:e}),(0,j.jsx)(`div`,{className:`truncate`,title:t,children:t})]},e))}),R.decision_progress&&(()=>{let e=R.decision_progress,t=(R.pending_approvers||[]).length;return(0,j.jsxs)(`div`,{className:`border-t pt-3`,children:[(0,j.jsxs)(`div`,{className:`flex items-baseline justify-between gap-2 mb-1.5`,children:[(0,j.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:e.behavior===`per_group`?b(`progressGroups`,`Sign-off progress — {{got}} of {{need}} groups`,{got:e.got,need:e.need}):b(`progressApprovals`,`Approvals — {{got}} of {{need}}`,{got:e.got,need:e.need})}),e.behavior!==`per_group`&&R.status===`pending`&&t>0&&(0,j.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:b(`progressEligible`,`{{count}} eligible approver(s)`,{count:t})})]}),(0,j.jsx)(`div`,{role:`progressbar`,"aria-valuemin":0,"aria-valuemax":e.need,"aria-valuenow":Math.min(e.got,e.need),"aria-label":b(`progressBar`,`Decision progress`),className:`flex gap-1`,children:e.need>0&&e.need<=12?Array.from({length:e.need}).map((t,n)=>(0,j.jsx)(`div`,{className:f(`h-1.5 flex-1 rounded-full`,n<e.got?`bg-emerald-500`:`bg-muted`)},n)):(0,j.jsx)(`div`,{className:`h-1.5 flex-1 rounded-full bg-muted overflow-hidden`,children:(0,j.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,j.jsx)(`div`,{className:`flex flex-wrap gap-1 mt-2`,children:e.groups.map(e=>(0,j.jsxs)(p,{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,j.jsx)(He,{className:`h-3 w-3`}):(0,j.jsx)(Je,{className:`h-2.5 w-2.5`}),e.group,` `,e.got,`/`,e.need]},e.group))})]})})(),R.status===`pending`&&(R.pending_approvers||[]).length>0&&(0,j.jsxs)(`div`,{className:`border-t pt-3`,children:[(0,j.jsx)(`div`,{className:`text-[11px] text-muted-foreground mb-1`,children:b(`waitingOn`,`Waiting on`)}),(0,j.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:Pt(R).map((e,t)=>(0,j.jsxs)(p,{variant:`outline`,className:`text-[11px]`,title:e.title,children:[e.label,e.group&&(0,j.jsxs)(`span`,{className:`ml-1 text-muted-foreground`,children:[`· `,e.group]}),e.count>1&&(0,j.jsxs)(`span`,{className:`ml-1 text-muted-foreground`,children:[`×`,e.count]})]},`${e.label}-${e.group??``}-${t}`))})]})]})})})(),(R.flow_steps?.length??0)>1&&(0,j.jsx)(`ol`,{className:`flex flex-col px-1`,"aria-label":b(`stepProgress`,`Approval steps`),children:R.flow_steps.map((e,t,n)=>{let r=n[t+1];return(0,j.jsxs)(`li`,{className:`flex items-start gap-2`,children:[(0,j.jsxs)(`div`,{className:`flex flex-col items-center self-stretch`,children:[(0,j.jsx)(`span`,{className:f(`flex items-center justify-center h-5 w-5 shrink-0 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,j.jsx)(He,{className:`h-3 w-3`}):t+1}),r&&(0,j.jsx)(`div`,{className:f(`w-px flex-1 min-h-3 my-1`,r.state===`done`||r.state===`current`?`bg-emerald-300 dark:bg-emerald-700`:`bg-border`)})]}),(0,j.jsx)(`span`,{className:f(`min-w-0 flex-1 pt-0.5 text-xs break-words`,e.state===`current`?`font-medium`:`text-muted-foreground`),children:e.label})]},e.id)})}),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`h3`,{className:`text-sm font-semibold mb-3`,children:b(`history`,`Activity`)}),$t.length===0?(0,j.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:b(`noActions`,`No actions yet.`)}):(0,j.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:$t.map(e=>{let t=ut(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`?b(`systemSlaActor`,`System (SLA)`):e.actor_name??(e.actor_id&&e.actor_id===R.submitter_id?jt(R):M(e.actor_id)),a=e.action===`submit`?b(`actSubmit`,`Submitted`):e.action===`approve`?b(`actApprove`,`Approved`):e.action===`reject`?b(`actReject`,`Rejected`):e.action===`recall`?b(`actRecall`,`Recalled`):e.action===`reassign`?b(`actReassign`,`Reassigned`):e.action===`remind`?b(`actRemind`,`Reminder sent`):e.action===`request_info`?b(`actRequestInfo`,`Requested more info`):e.action===`comment`?b(`actComment`,`Commented`):e.action===`escalate`?b(`actEscalate`,`SLA escalated`):e.action===`revise`?b(`actRevise`,`Sent back for revision`):e.action===`resubmit`?b(`actResubmit`,`Resubmitted`):e.action;return(0,j.jsxs)(`li`,{className:`relative text-xs`,children:[(0,j.jsx)(`span`,{className:`absolute -left-[18px] top-1 h-3 w-3 rounded-full ring-2 ring-background ${n}`,"aria-hidden":!0}),(0,j.jsxs)(`div`,{className:`flex items-baseline gap-1.5 flex-wrap`,children:[(0,j.jsx)(`span`,{className:`font-medium`,children:a}),(0,j.jsx)(`span`,{className:`text-muted-foreground`,children:`·`}),(0,j.jsx)(`span`,{title:e.actor_id||``,children:r}),t&&(0,j.jsxs)(p,{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:b(`viaOverrideHint`,`The actor held no approver slot on this step — admitted by the admin-override path.`),"data-testid":`via-override-chip`,children:[(0,j.jsx)(rt,{className:`h-3 w-3`,"aria-hidden":!0}),b(`viaOverrideChip`,`Admin override`)]}),(0,j.jsx)(`span`,{className:`ml-auto text-muted-foreground text-[10px]`,title:Ot(e.created_at,i),children:w(e.created_at)})]}),(()=>{let t=e;return e.action!==`reassign`||!t.reassign_from&&!t.reassign_to?null:(0,j.jsx)(`div`,{className:`text-muted-foreground mt-0.5`,children:b(`reassignFromTo`,`from {{from}} to {{to}}`,{from:t.reassign_from_name??M(t.reassign_from),to:t.reassign_to_name??M(t.reassign_to)})})})(),e.comment&&(0,j.jsxs)(`div`,{className:`text-muted-foreground italic mt-0.5`,children:[`"`,e.comment,`"`]}),Array.isArray(e.attachments)&&e.attachments.length>0&&(0,j.jsx)(`div`,{className:`flex flex-wrap gap-1.5 mt-1`,children:e.attachments.map((t,n)=>(0,j.jsxs)(`button`,{type:`button`,onClick:()=>void ln(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,j.jsx)($e,{className:`h-3 w-3`}),t.name||`${b(`attachmentChip`,`Attachment`)}${e.attachments.length>1?` ${n+1}`:``}`]},t.id||n))})]},e.id)})}),R.status===`pending`&&(Ln||Rn)&&(0,j.jsxs)(`div`,{className:`flex items-center gap-2 mt-3`,children:[(0,j.jsx)(je,{value:G,onChange:e=>Dn(e.target.value),onKeyDown:e=>{e.key===`Enter`&&G.trim()&&(e.preventDefault(),In())},placeholder:b(`replyPlaceholder`,`Reply on this request…`),className:`h-8 text-sm`}),(0,j.jsx)(g,{size:`sm`,variant:`outline`,className:`h-8 px-2 shrink-0`,disabled:!G.trim()||On,onClick:()=>void In(),children:(0,j.jsx)(nt,{className:`h-3.5 w-3.5`})})]})]}),at&&R.payload!=null&&(0,j.jsxs)(`details`,{className:`group`,children:[(0,j.jsx)(`summary`,{className:`cursor-pointer text-xs text-muted-foreground hover:text-foreground select-none`,children:b(`rawData`,`Raw data (JSON)`)}),(0,j.jsxs)(`div`,{className:`mt-2`,children:[(0,j.jsx)(`div`,{className:`flex justify-end`,children:(0,j.jsxs)(`button`,{type:`button`,onClick:async()=>{try{await navigator.clipboard.writeText(JSON.stringify(R.payload,null,2)),v.success(b(`copied`,`Copied`))}catch{v.error(b(`copyFailed`,`Copy failed`))}},className:`text-[10px] text-muted-foreground hover:text-foreground inline-flex items-center gap-1`,children:[(0,j.jsx)(Xe,{className:`h-3 w-3`}),b(`copy`,`Copy`)]})}),(0,j.jsx)(`pre`,{className:`text-[11px] bg-muted/50 rounded p-2 overflow-auto max-h-48 mt-1`,children:JSON.stringify(R.payload,null,2)})]})]}),R.status===`pending`&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(ue,{}),(0,j.jsxs)(`div`,{className:`space-y-3`,children:[(0,j.jsx)(lt,{objectName:`sys_approval_request`,record:R,location:`record_section`,label:b(`declaredActions`,`Actions`),onDone:()=>{Fn()}}),!Ln&&(0,j.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:Rn?b(`whyDisabledSubmitter`,`You submitted this request, so you can recall it — but only the assigned approvers can approve or reject.`):b(`whyDisabled`,`Only the assigned approvers can act on this request. It is waiting on: {{who}}.`,{who:(R.pending_approvers||[]).map(e=>Mt(e,R)).join(`, `)||`—`})})]})]}),zn&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(ue,{}),(0,j.jsxs)(`div`,{className:`space-y-3`,children:[(0,j.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:b(`returnedHint`,`An approver sent this back to you. The record is unlocked — fix the data, then resubmit to start a new approval round.`)}),(0,j.jsxs)(`div`,{className:`flex gap-2 flex-wrap items-center`,children:[(0,j.jsx)(g,{asChild:!0,size:`sm`,variant:`outline`,children:(0,j.jsxs)(r,{to:ht(R),children:[(0,j.jsx)(Ze,{className:`h-4 w-4 mr-1`}),b(`editRecordBtn`,`Edit record`)]})}),(0,j.jsx)(lt,{objectName:`sys_approval_request`,record:R,location:`record_section`,onDone:()=>{Pn(R.id),K()}})]})]})]})]}):null]})})]})}export{Yt as ApprovalsInboxPage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{t,v as n}from"./vendor-react-BggL7APJ.js";import{Ar as r,Mr as i,Nr as a,Pr as o,bi as s,jr as c,kr as l,qn as u,vi as d}from"./ui-components-BTB1NkUW.js";import{w as f}from"./i18n-runtime-CTgAQF4N.js";import{t as p}from"./vendor-icon-calendar-BsoUBIef.js";import{t as m}from"./vendor-icon-chart-column-DicJIApF.js";import{t as ee}from"./vendor-icon-circle-alert-D1XTr_X9.js";import{t as h}from"./vendor-icon-clock-CTLnah0r.js";import{t as g}from"./vendor-icon-image-D2YAsa8l.js";import{t as _}from"./vendor-icon-layout-grid-B3quJ1GF.js";import{t as v}from"./vendor-icon-list-tree-Br55vyL9.js";import{t as y}from"./vendor-icon-map-DsFP3Vmp.js";import{t as b}from"./vendor-icon-square-chart-gantt-D3I-7xgm.js";import{t as x}from"./vendor-icon-square-kanban-ZFRnbY0T.js";import{n as S}from"./createDerive-DvA_JGNq.js";import{a as C,i as w,n as T,o as E,r as D,s as O,t as k}from"./plugin-view-DzWQWYyH.js";var A=e(n(),1),j=t();function M({title:e,subtitle:t,icon:n,actions:r,accentColor:i,sticky:a=!1,className:o,"data-testid":c}){return(0,j.jsxs)(`div`,{style:{"--page-header-accent":i||`hsl(var(--primary))`},className:s(`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":c??`page-header`,children:[(0,j.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,j.jsxs)(`div`,{className:`flex justify-between items-center gap-3 py-2.5 sm:py-3 px-4 sm:px-6`,children:[(0,j.jsxs)(`div`,{className:`flex items-center gap-3 min-w-0 flex-1`,children:[n&&(0,j.jsx)(`div`,{className:s(`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,j.jsxs)(`div`,{className:`min-w-0`,children:[(0,j.jsx)(`h1`,{className:`text-base sm:text-lg lg:text-xl font-semibold tracking-tight text-foreground truncate leading-tight`,children:e}),t&&(0,j.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,j.jsx)(`div`,{className:`flex items-center gap-1.5 sm:gap-2 shrink-0`,children:r})]})]})}function te(e){let t={grid:{icon:_,label:e(`console.objectView.viewTypeGrid`),description:e(`console.objectView.viewTypeGridDesc`)},kanban:{icon:x,label:e(`console.objectView.viewTypeKanban`),description:e(`console.objectView.viewTypeKanbanDesc`)},calendar:{icon:p,label:e(`console.objectView.viewTypeCalendar`),description:e(`console.objectView.viewTypeCalendarDesc`)},gallery:{icon:g,label:e(`console.objectView.viewTypeGallery`),description:e(`console.objectView.viewTypeGalleryDesc`)},timeline:{icon:h,label:e(`console.objectView.viewTypeTimeline`),description:e(`console.objectView.viewTypeTimelineDesc`)},gantt:{icon:b,label:e(`console.objectView.viewTypeGantt`),description:e(`console.objectView.viewTypeGanttDesc`)},map:{icon:y,label:e(`console.objectView.viewTypeMap`),description:e(`console.objectView.viewTypeMapDesc`)},chart:{icon:m,label:e(`console.objectView.viewTypeChart`),description:e(`console.objectView.viewTypeChartDesc`)},tree:{icon:v,label:e(`console.objectView.viewTypeTree`),description:e(`console.objectView.viewTypeTreeDesc`)}};return Object.entries(t).map(([e,t])=>({type:e,...t}))}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:T}],calendar:[{key:`startDateField`,i18nKey:`console.objectView.startDateField`,helpI18nKey:`console.objectView.startDateFieldHelp`,filter:e=>e.type===`date`,preferred:D},{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:D},{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:D},{key:`endDateField`,i18nKey:`console.objectView.endDateField`,helpI18nKey:`console.objectView.ganttEndDateFieldHelp`,filter:e=>e.type===`date`,preferred:k},{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=>E(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:T},{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:p,availableTypes:m,objectDef:h}){let{t:g}=f(),_=(0,A.useMemo)(()=>te(g),[g]),v=(0,A.useMemo)(()=>m&&m.length>0?_.filter(e=>m.includes(e.type)):_,[_,m]),y=(p??[]).join(`\0`),b=(0,A.useMemo)(()=>new Set(p??[]),[y]),x=(0,A.useMemo)(()=>h?w(h):[],[h]),[C,T]=(0,A.useState)(v[0]?.type??`grid`),[E,D]=(0,A.useState)(``),[k,M]=(0,A.useState)(!1),[F,I]=(0,A.useState)(``),[L,R]=(0,A.useState)(!1),[z,B]=(0,A.useState)({});(0,A.useEffect)(()=>{e&&(T(v[0]?.type??`grid`),M(!1),R(!1),B({}))},[e,v]),(0,A.useEffect)(()=>{if(!k){let e=v.find(e=>e.type===C);D(N(e?.label??`View`,b))}},[C,k,v,b]),(0,A.useEffect)(()=>{L||I(S(E))},[E,L]);let V=P[C]??[],ne=e=>e.kind===`enum`?(e.enumOptions?.length??0)>0:!h||(e.filter?x.filter(e.filter):x).length>0,H=(0,A.useMemo)(()=>{let e={};return v.forEach(t=>{let n=(P[t.type]??[]).find(e=>!ne(e));e[t.type]=n??null}),e},[v,x,h]),U=e=>z[`${C}.${e}`]??``,W=(e,t)=>B(n=>({...n,[`${C}.${e}`]:t})),G=E.trim(),K=G.length>0&&b.has(G),q=V.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,A.useEffect)(()=>{V.length!==0&&V.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?x.filter(e.filter):x;if(t.length===0)return;if(t.length===1){W(e.key,t[0].value);return}let n=O(t,e.preferred??[]);n&&W(e.key,n)})},[C,x]);let $=()=>{if(!Q)return;let e={};V.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,j.jsx)(l,{open:e,onOpenChange:t,children:(0,j.jsxs)(r,{className:`sm:max-w-[560px]`,"data-testid":`create-view-dialog`,children:[(0,j.jsxs)(a,{children:[(0,j.jsx)(o,{children:g(`console.objectView.createView`)}),(0,j.jsx)(c,{children:g(`console.objectView.createViewDesc`)})]}),(0,j.jsx)(`div`,{className:`grid grid-cols-4 gap-2 py-2`,"data-testid":`create-view-type-grid`,children:v.map(({type:e,label:t,description:n,icon:r})=>{let i=e===C,a=H[e],o=!!a,c=o?g(`console.objectView.viewTypeUnavailable`,{field:g(a.i18nKey)}):void 0;return(0,j.jsxs)(`button`,{type:`button`,"data-testid":`create-view-type-${e}`,"aria-pressed":i,"aria-disabled":o,disabled:o,title:c,onClick:()=>{o||T(e)},className:s(`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,j.jsx)(r,{className:s(`h-5 w-5`,i&&!o?`text-primary`:`text-muted-foreground group-hover:text-foreground`)}),(0,j.jsx)(`div`,{className:`text-xs font-medium leading-tight`,children:t}),(0,j.jsx)(`div`,{className:`text-[10px] leading-tight text-muted-foreground line-clamp-2`,children:o?g(`console.objectView.viewTypeUnavailableShort`):n})]},e)})}),V.length>0&&(0,j.jsx)(`div`,{className:`space-y-3 rounded-md border border-dashed bg-muted/30 p-3`,"data-testid":`create-view-required-fields`,children:V.map(e=>{let t=U(e.key),n=e.kind===`enum`,r=n?[]:e.filter?x.filter(e.filter):x,i=!n&&x.length>0&&r.length===0;return(0,j.jsxs)(`div`,{className:`space-y-1`,children:[(0,j.jsxs)(`label`,{htmlFor:`create-view-required-${e.key}`,className:`text-xs font-medium`,children:[g(e.i18nKey),(0,j.jsx)(`span`,{className:`ml-1 text-destructive`,"aria-hidden":`true`,children:`*`})]}),(0,j.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:s(`h-9 w-full rounded-md border bg-background px-2 text-xs`,`border-input`),children:[(0,j.jsx)(`option`,{value:``,children:g(n?`console.objectView.selectOption`:`console.objectView.selectField`)}),n?e.enumOptions.map(e=>(0,j.jsx)(`option`,{value:e.value,children:g(e.i18nKey)},e.value)):r.map(e=>(0,j.jsx)(`option`,{value:e.value,children:e.label},e.value))]}),e.helpI18nKey&&!i&&(0,j.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:g(e.helpI18nKey)}),i&&(0,j.jsxs)(`p`,{className:`flex items-center gap-1 text-[11px] text-destructive`,"data-testid":`create-view-error-no-field-${e.key}`,children:[(0,j.jsx)(ee,{className:`h-3 w-3`}),g(`console.objectView.noEligibleFieldForType`)]})]},e.key)})}),(0,j.jsxs)(`div`,{className:`space-y-1`,children:[(0,j.jsxs)(`label`,{htmlFor:`create-view-name-input`,className:`text-xs font-medium`,children:[g(`console.objectView.title`),(0,j.jsx)(`span`,{className:`ml-1 text-destructive`,"aria-hidden":`true`,children:`*`})]}),(0,j.jsx)(u,{id:`create-view-name-input`,"aria-required":`true`,"data-testid":`create-view-name-input`,autoFocus:!0,value:E,onChange:e=>{D(e.target.value),M(!0)},onKeyDown:e=>{e.key===`Enter`&&Q&&$()},placeholder:g(`console.objectView.newView`),className:`h-9`}),K&&(0,j.jsx)(`p`,{className:`text-[11px] text-destructive`,"data-testid":`create-view-error-duplicate`,children:g(`console.objectView.duplicateViewName`)})]}),(0,j.jsxs)(`div`,{className:`space-y-1`,children:[(0,j.jsxs)(`label`,{htmlFor:`create-view-machine-name-input`,className:`text-xs font-medium`,children:[g(`console.objectView.viewName`),(0,j.jsx)(`span`,{className:`ml-1 text-destructive`,"aria-hidden":`true`,children:`*`})]}),(0,j.jsx)(u,{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,j.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,"data-testid":`create-view-machine-name-help`,children:g(`console.objectView.viewNameRequired`)}):Z?(0,j.jsx)(`p`,{className:`text-[11px] text-destructive`,"data-testid":`create-view-error-machine-name`,children:g(`console.objectView.viewNameInvalid`)}):(0,j.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,"data-testid":`create-view-machine-name-help`,children:g(`console.objectView.viewNameHelp`)})]}),(0,j.jsxs)(i,{className:`mt-2`,children:[(0,j.jsx)(d,{type:`button`,variant:`outline`,onClick:()=>t(!1),"data-testid":`create-view-cancel`,children:g(`console.objectView.cancel`)}),(0,j.jsx)(d,{type:`button`,disabled:!Q,onClick:$,"data-testid":`create-view-submit`,children:g(`console.objectView.create`)})]})]})})}export{M as n,F as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{p as t,t as n,v as r}from"./vendor-react-BggL7APJ.js";import{Dn as i,Ot as a,Tt as o,wt as s}from"./ui-components-BTB1NkUW.js";import{G as c,K as l,L as u}from"./framework-DcWkeiND.js";import{f as d,w as f}from"./i18n-runtime-CTgAQF4N.js";import{r as p}from"./vendor-ui-utils-DIUdEYii.js";import{t as m}from"./vendor-icon-layout-dashboard-wba2hvZp.js";import{a as h}from"./ExpressionProvider-DZfMwyMs.js";import{t as g}from"./useActionModal-CSvbHkQ7.js";import{t as _}from"./preferLocal-DEJV3KIq.js";import{n as v}from"./utils-MjUhYVsx.js";import{n as y,t as b}from"./MetadataInspector-BWxLkr0O.js";import{n as x}from"./plugin-dashboard-C1AYKmGX.js";import{t as S}from"./useOpenRecordList-B5-qaFUx.js";var C=n();function w({cards:e=6}){return(0,C.jsxs)(`div`,{className:`w-full space-y-6 p-4 sm:p-6`,children:[(0,C.jsxs)(`div`,{className:`space-y-2`,children:[(0,C.jsx)(i,{className:`h-7 w-56`}),(0,C.jsx)(i,{className:`h-4 w-80`})]}),(0,C.jsx)(`div`,{className:`grid grid-cols-2 md:grid-cols-4 gap-4`,children:Array.from({length:4}).map((e,t)=>(0,C.jsxs)(`div`,{className:`rounded-lg border p-4 space-y-2`,children:[(0,C.jsx)(i,{className:`h-4 w-20`}),(0,C.jsx)(i,{className:`h-8 w-24`}),(0,C.jsx)(i,{className:`h-3 w-16`})]},`stat-${t}`))}),(0,C.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4`,children:Array.from({length:e}).map((e,t)=>(0,C.jsxs)(`div`,{className:`rounded-lg border p-4 space-y-3`,children:[(0,C.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,C.jsx)(i,{className:`h-5 w-32`}),(0,C.jsx)(i,{className:`h-5 w-5 rounded-full`})]}),(0,C.jsx)(i,{className:`h-40 w-full`}),(0,C.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,C.jsx)(i,{className:`h-3 w-16`}),(0,C.jsx)(i,{className:`h-3 w-12`})]})]},`widget-${t}`))})]})}var T=e(r(),1);function E({dataSource:e}){let n=S(),{dashboardName:r}=t(),{showDebug:i}=y(),E=c(),{t:D}=f(),{dashboardLabel:O,dashboardDescription:k}=d(),[A,j]=(0,T.useState)(!0),{modalHandler:M,modalElement:N}=g(E),P=(0,T.useMemo)(()=>({export_dashboard_pdf:async()=>{p.info(D(`dashboardActions.printDialogOpening`));try{return window.print(),{success:!0}}catch(e){return p.error(D(`dashboardActions.exportFailed`,{message:e?.message||String(e)})),{success:!1,error:e?.message||String(e)}}},forecast_dashboard:async()=>(p.info(D(`dashboardActions.forecastSoon`)),{success:!0})}),[D]);(0,T.useEffect)(()=>{j(!0),queueMicrotask(()=>j(!1))},[r]);let{dashboards:F,objects:I}=l(),{app:L}=h(),R=_(F,r,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,C.jsx)(w,{}):R?(0,C.jsxs)(`div`,{className:`flex flex-col h-full overflow-hidden bg-background`,children:[(0,C.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,C.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(()=>{let e=v(R.label,D),t=O({name:R.name,label:e})||R.name;return(0,C.jsx)(`h1`,{className:`text-lg sm:text-xl md:text-2xl font-bold tracking-tight truncate`,children:t})})(),(()=>{let e=(B||R).description??R.description,t=k({name:R.name,description:v(e,D)});return t?(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1 line-clamp-2`,children:t}):null})()]})}),(0,C.jsxs)(`div`,{className:`flex-1 overflow-hidden flex flex-col sm:flex-row relative`,children:[(0,C.jsx)(`div`,{className:`flex-1 min-w-0 overflow-auto p-2 sm:p-4 md:p-6`,children:(0,C.jsx)(u,{value:{openRecordList:n},children:(0,C.jsx)(x,{schema:B,dataSource:e,modalHandler:M,scriptHandlers:P,hideHeaderText:!0})})}),(0,C.jsx)(b,{open:i,sections:[{title:`Dashboard Configuration`,data:B}]})]}),N]}):(0,C.jsx)(`div`,{className:`h-full flex items-center justify-center p-8`,children:(0,C.jsxs)(s,{children:[(0,C.jsx)(`div`,{className:`mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-muted`,children:(0,C.jsx)(m,{className:`h-6 w-6 text-muted-foreground`})}),(0,C.jsx)(a,{children:D(`empty.dashboardNotFound`)}),(0,C.jsx)(o,{children:D(`empty.dashboardNotFoundDescription`,{name:r})})]})})}export{E as DashboardView};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{d as t,p as n,r,t as i,v as a}from"./vendor-react-BggL7APJ.js";import{G as o}from"./framework-DcWkeiND.js";import{w as s}from"./i18n-runtime-CTgAQF4N.js";import{t as c}from"./vendor-icon-chevron-down-BEf_jTEE.js";import{t as l}from"./vendor-icon-circle-alert-D1XTr_X9.js";import{t as u}from"./vendor-icon-external-link-SBKz5x6R.js";import{t as d}from"./vendor-icon-file-question-mark-CDRVvH3W.js";import{t as f}from"./vendor-icon-loader-circle-D3PsuVaD.js";import{t as p}from"./vendor-icon-menu-9YHQR0RT.js";import"./src-B8lv0plz.js";import{t as m}from"./DocShell-Bzl3QS30.js";import{i as h,l as g,n as _,u as v}from"./use-book-data-C3eyZJSG.js";import{r as y,t as b}from"./plugin-markdown-D1nTQc1T.js";var x=e(a(),1),S=/(^```[^\n]*\n[\s\S]*?\n```[ \t]*$|^~~~[^\n]*\n[\s\S]*?\n~~~[ \t]*$)/m,C=/(`[^`\n]+`)/,w=/\]\((?:\.\/)?([a-z][a-z0-9_]*)\.md(#[^)\s]*)?\)/g;function T(e){return e.split(C).map((e,t)=>t%2==1?e:e.replace(w,`](/docs/$1$2)`)).join(``)}function E(e){let t=[],n=e;for(;;){let e=S.exec(n);if(!e||e.index===void 0)return t.push(T(n)),t.join(``);t.push(T(n.slice(0,e.index)),e[0]),n=n.slice(e.index+e[0].length)}}var D=i();function O({book:e,activeDoc:t,docHref:n}){return(0,D.jsxs)(`nav`,{"aria-label":e.label??e.name,className:`text-sm`,children:[e.label?(0,D.jsx)(`div`,{className:`mb-3 px-2 text-sm font-semibold text-foreground`,children:e.label}):null,(0,D.jsx)(`div`,{className:`space-y-5`,children:e.groups.map(e=>(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`div`,{className:`mb-1 px-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground`,children:e.label}),(0,D.jsx)(`ul`,{className:`space-y-0.5`,children:e.entries.map((e,i)=>{if(e.separator)return(0,D.jsx)(`li`,{className:`my-1.5 border-t border-border/60`,"aria-hidden":!0},`sep-${i}`);if(e.href)return(0,D.jsx)(`li`,{children:(0,D.jsxs)(`a`,{href:e.href,target:`_blank`,rel:`noreferrer`,className:`flex items-center gap-1.5 rounded px-2 py-1 text-muted-foreground hover:bg-muted/50 hover:text-foreground`,children:[(0,D.jsx)(`span`,{className:`truncate`,children:e.label??e.href}),(0,D.jsx)(u,{className:`h-3 w-3 shrink-0 opacity-60`})]})},`ext-${i}`);if(!e.doc)return null;let a=e.doc===t;return(0,D.jsx)(`li`,{children:(0,D.jsx)(r,{to:n(e.doc),"aria-current":a?`page`:void 0,className:`block truncate rounded px-2 py-1 transition ${a?`bg-primary/10 font-medium text-foreground`:`text-muted-foreground hover:bg-muted/50 hover:text-foreground`}`,children:e.label??e.doc})},e.doc)})})]},e.key))})]})}function k(){let{slug:e,name:r,appName:i}=n(),a=t(),u=o(),{t:S}=s(),[C,w]=(0,x.useState)(null),[T,k]=(0,x.useState)(`loading`),[A,j]=(0,x.useState)(``);(0,x.useEffect)(()=>{let e=!1;async function t(){if(r&&u){k(`loading`);try{let t=await u.getClient().meta.getItem(`doc`,r,i?{packageId:i}:void 0),n=t?.item??t?.data??t;if(e)return;n&&typeof n.content==`string`?(w({name:r,label:n.label,content:n.content}),k(`ready`)):k(`missing`)}catch(t){if(e)return;(t?.status??t?.response?.status)===404||/not found/i.test(t?.message??``)?k(`missing`):(j(t?.message??`Failed to load documentation`),k(`error`))}}}return t(),()=>{e=!0}},[r,i,u]);let M=(0,x.useCallback)(e=>{document.getElementById(e)?.scrollIntoView({behavior:`smooth`,block:`start`}),window.history.replaceState(null,``,`${window.location.pathname}${window.location.search}#${e}`)},[]),N=(0,x.useCallback)(e=>{if(e.defaultPrevented||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||e.button!==0)return;let t=e.target.closest(`a`)?.getAttribute(`href`);t&&(t.startsWith(`/docs/`)?(e.preventDefault(),a(t)):t.startsWith(`#`)&&(e.preventDefault(),M(decodeURIComponent(t.slice(1)))))},[a,M]),P=(0,x.useCallback)((e,t)=>{e.defaultPrevented||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||e.button!==0||(e.preventDefault(),M(t))},[M]),F=(0,x.useMemo)(()=>y(C?.content??``),[C?.content]),I=S(`help.onThisPage`,{defaultValue:`On this page`}),{books:L,docs:R}=_(),z=i?`/apps/${i}/docs`:`/docs`,B=(0,x.useMemo)(()=>{let t=L.find(t=>h(t)===e);return t?g(t,v(t,R)):null},[L,R,e]),V=(0,x.useCallback)(t=>`${z}/${e}/${t}`,[z,e]);return T===`loading`?(0,D.jsx)(`div`,{className:`flex h-full items-center justify-center p-10 text-muted-foreground`,children:(0,D.jsx)(f,{className:`h-5 w-5 animate-spin`,"aria-label":`Loading documentation`})}):T===`missing`?(0,D.jsx)(m,{breadcrumb:r,children:(0,D.jsxs)(`div`,{className:`mx-auto flex max-w-3xl flex-col items-center gap-3 p-10 text-center`,children:[(0,D.jsx)(d,{className:`h-10 w-10 text-muted-foreground`}),(0,D.jsx)(`h1`,{className:`text-lg font-semibold`,children:`Documentation not found`}),(0,D.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`No document named `,(0,D.jsx)(`code`,{className:`rounded bg-muted px-1 py-0.5`,children:r}),` is installed. It may belong to a package that is not installed, or it was removed in a newer version.`]})]})}):T===`error`?(0,D.jsx)(m,{breadcrumb:r,children:(0,D.jsxs)(`div`,{className:`mx-auto flex max-w-3xl flex-col items-center gap-3 p-10 text-center`,children:[(0,D.jsx)(l,{className:`h-10 w-10 text-destructive`}),(0,D.jsx)(`h1`,{className:`text-lg font-semibold`,children:`Failed to load documentation`}),(0,D.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:A})]})}):(0,D.jsxs)(m,{breadcrumb:C?.label??r,children:[B?(0,D.jsxs)(`details`,{className:`group mx-auto max-w-6xl px-4 pt-4 sm:px-6 lg:hidden`,children:[(0,D.jsxs)(`summary`,{className:`flex cursor-pointer list-none items-center gap-2 rounded-md border bg-muted/30 px-3 py-2 text-sm font-medium [&::-webkit-details-marker]:hidden`,children:[(0,D.jsx)(p,{className:`h-4 w-4 text-muted-foreground`}),(0,D.jsx)(`span`,{className:`truncate`,children:B.label??`Contents`}),(0,D.jsx)(c,{className:`ml-auto h-4 w-4 text-muted-foreground transition-transform group-open:rotate-180`})]}),(0,D.jsx)(`div`,{className:`mt-2 rounded-md border p-3`,children:(0,D.jsx)(O,{book:B,activeDoc:r,docHref:V})})]}):null,(0,D.jsxs)(`div`,{className:`mx-auto flex gap-8 p-4 sm:p-6 ${B?`max-w-6xl`:`max-w-5xl`}`,children:[B?(0,D.jsx)(`aside`,{className:`hidden w-56 shrink-0 lg:block`,children:(0,D.jsx)(`nav`,{className:`sticky top-20 max-h-[calc(100vh-6rem)] overflow-auto pr-1`,children:(0,D.jsx)(O,{book:B,activeDoc:r,docHref:V})})}):null,(0,D.jsx)(`article`,{className:`min-w-0 max-w-3xl flex-1 [&_h1]:scroll-mt-24 [&_h2]:scroll-mt-24 [&_h3]:scroll-mt-24`,onClick:N,children:(0,D.jsx)(b,{schema:{type:`markdown`,content:E(C?.content??``)}})}),F.length>=3?(0,D.jsx)(`aside`,{className:`hidden xl:block w-56 shrink-0`,children:(0,D.jsxs)(`nav`,{"aria-label":I,className:`sticky top-20 max-h-[calc(100vh-6rem)] overflow-auto`,children:[(0,D.jsx)(`div`,{className:`mb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground`,children:I}),(0,D.jsx)(`ul`,{className:`border-l border-border text-sm`,children:F.map(e=>(0,D.jsx)(`li`,{style:{paddingLeft:(e.depth-2)*12},children:(0,D.jsx)(`a`,{href:`#${e.id}`,onClick:t=>P(t,e.id),className:`-ml-px block border-l border-transparent py-0.5 pl-3 text-muted-foreground hover:border-primary hover:text-foreground`,children:e.text})},e.id))})]})}):null]})]})}export{k as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{a as t,p as n,t as r,v as i}from"./vendor-react-BggL7APJ.js";import{t as a}from"./vendor-icon-book-open-DKPXYwQK.js";import{t as o}from"./vendor-icon-file-question-mark-CDRVvH3W.js";import{t as s}from"./vendor-icon-loader-circle-D3PsuVaD.js";import{t as c}from"./DocShell-Bzl3QS30.js";import{i as l,l as u,n as d,o as f,s as p,u as m}from"./use-book-data-C3eyZJSG.js";var h=e(i(),1),g=r();function _(){let{slug:e,appName:r}=n(),{books:i,docs:p,state:_}=d(),v=(0,h.useMemo)(()=>i.find(t=>l(t)===e),[i,e]),y=(0,h.useMemo)(()=>v?f(u(v,m(v,p))):void 0,[v,p]);if(_===`loading`)return(0,g.jsx)(`div`,{className:`flex h-full items-center justify-center p-10 text-muted-foreground`,children:(0,g.jsx)(s,{className:`h-5 w-5 animate-spin`,"aria-label":`Loading documentation`})});if(v&&y){let n=r?`/apps/${r}/docs`:`/docs`;return(0,g.jsx)(t,{to:`${n}/${e}/${y}`,replace:!0})}return(0,g.jsx)(c,{breadcrumb:v?v.label??e:e,children:(0,g.jsx)(`div`,{className:`mx-auto flex max-w-3xl flex-col items-center gap-3 p-10 text-center`,children:v?(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(a,{className:`h-10 w-10 text-muted-foreground`}),(0,g.jsx)(`h1`,{className:`text-lg font-semibold`,children:v.label??e}),(0,g.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`This book has no documents yet.`})]}):(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(o,{className:`h-10 w-10 text-muted-foreground`}),(0,g.jsx)(`h1`,{className:`text-lg font-semibold`,children:`Book not found`}),(0,g.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`No book named `,(0,g.jsx)(`code`,{className:`rounded bg-muted px-1 py-0.5`,children:e}),` is installed.`]})]})})})}function v(){let{slug:e,appName:r}=n(),{books:i,docs:a,state:u}=d();if(u===`loading`)return(0,g.jsx)(`div`,{className:`flex h-full items-center justify-center p-10 text-muted-foreground`,children:(0,g.jsx)(s,{className:`h-5 w-5 animate-spin`,"aria-label":`Loading documentation`})});if(e&&i.some(t=>l(t)===e))return(0,g.jsx)(_,{});let f=r?`/apps/${r}/docs`:`/docs`,m=e?p(e,i,a):null;return m&&e?(0,g.jsx)(t,{to:`${f}/${l(m)}/${e}`,replace:!0}):(0,g.jsx)(c,{breadcrumb:e,children:(0,g.jsxs)(`div`,{className:`mx-auto flex max-w-3xl flex-col items-center gap-3 p-10 text-center`,children:[(0,g.jsx)(o,{className:`h-10 w-10 text-muted-foreground`}),(0,g.jsx)(`h1`,{className:`text-lg font-semibold`,children:`Documentation not found`}),(0,g.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`No book or document named `,(0,g.jsx)(`code`,{className:`rounded bg-muted px-1 py-0.5`,children:e}),` is installed.`]})]})})}export{v as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{t,v as n}from"./vendor-react-BggL7APJ.js";import{gt as r,jt as i,wr as a}from"./framework-DcWkeiND.js";var o=e(n(),1),s=t(),c=(0,o.createContext)(null);function l({user:e={},features:t={}}={}){return{current_user:e,user:e,ctx:{user:e},os:{user:e},features:t}}function u(e={}){return new a(l(e))}function d({children:e,user:t={},app:n={},data:r={},features:a={}}){let d=(0,o.useMemo)(()=>({user:t,app:n,data:r,features:a,evaluator:u({user:t,features:a})}),[t,n,r,a]),f=(0,o.useMemo)(()=>l({user:t,features:a}),[t,a]);return(0,s.jsx)(c.Provider,{value:d,children:(0,s.jsx)(i,{scope:f,children:e})})}function f(){let e=(0,o.useContext)(c);if(!e){let e={user:{},features:{}};return{...e,app:{},data:{},evaluator:u(e)}}return e}var p=`app-shell:visible`;function m(e,t,n=`visible`){if(e==null||e===!0||e===`true`)return!0;if(e===!1||e===`false`)return!1;let i=t=>r(p,void 0,n,e,t,`app-shell`);try{return t.evaluateCondition(e,{onFault:i})}catch(e){return i(e),!0}}function h(e,t){return e?.hidden!==!0&&m(e?.visibleWhen,t,`visibleWhen`)}export{f as a,h as i,u as n,m as r,d as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{t,v as n}from"./vendor-react-BggL7APJ.js";import{a as r}from"./infrastructure-BHSync5f.js";import{An as i,Bn as a,Br as o,Dn as s,Hr as c,Mn as l,Nn as u,Ur as d,Vr as f,Yt as p,Zn as m,an as h,en as g,in as _,jn as v,kn as y,ni as b,nn as x,on as S,qn as C,rn as w,tn as T,vi as E,zr as D}from"./ui-components-BTB1NkUW.js";import{G as O,K as k}from"./framework-DcWkeiND.js";import{t as A}from"./i18n-runtime-CTgAQF4N.js";import{t as j}from"./vendor-icon-circle-alert-D1XTr_X9.js";import{t as M}from"./vendor-icon-circle-check-Bq3OcFQN.js";import{t as N}from"./vendor-icon-circle-x-Nkh1Yr7N.js";import{t as P}from"./vendor-icon-clock-CTLnah0r.js";import{t as F}from"./vendor-icon-loader-circle-D3PsuVaD.js";import{t as I}from"./vendor-icon-play-BfFoh-7G.js";import{t as L}from"./vendor-icon-refresh-cw-BGjSPEfJ.js";import{t as R}from"./vendor-icon-workflow-B9ASq0nN.js";import"./src-B8lv0plz.js";import{O as z}from"./RecordDetailView-DQKydU7X.js";var B=e(n(),1),V=t();function H({status:e}){let t={success:{icon:M,cls:`text-emerald-600 border-emerald-300`},completed:{icon:M,cls:`text-emerald-600 border-emerald-300`},failed:{icon:N,cls:`text-red-600 border-red-300`},error:{icon:N,cls:`text-red-600 border-red-300`},running:{icon:F,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:j,cls:`text-muted-foreground`}}[e]??{icon:j,cls:`text-muted-foreground`},n=t.icon;return(0,V.jsxs)(b,{variant:`outline`,className:`text-[10px] font-mono inline-flex items-center gap-1 ${t.cls}`,children:[(0,V.jsx)(n,{className:`h-3 w-3`}),e]})}function U(e,t){if(!e)return`—`;try{return new Date(e).toLocaleString(t)}catch{return e}}function W(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 G({data:e}){return(0,V.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 K(){let e=O()?.getClient?.(),[t,n]=(0,B.useState)([]),[r,i]=(0,B.useState)(!0),[a,l]=(0,B.useState)(null),[u,p]=(0,B.useState)(``),[m,h]=(0,B.useState)(0),g=(0,B.useCallback)(async()=>{if(!e?.meta?.getItems){l(`meta.getItems is not available on this client`),i(!1);return}i(!0),l(null);try{let t=await e.meta.getItems(`flow`),r=(Array.isArray(t)?t:Array.isArray(t?.items)?t.items:[]).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),!u&&r.length>0&&p(r[0].name)}catch(e){l(e?.message??String(e))}finally{i(!1)}},[e,u]);(0,B.useEffect)(()=>{g()},[g]);let _=(0,B.useMemo)(()=>t.find(e=>e.name===u)??null,[t,u]);return(0,V.jsxs)(`div`,{className:`flex flex-col gap-4 p-4 sm:p-6`,children:[(0,V.jsxs)(`div`,{className:`min-w-0`,children:[(0,V.jsxs)(`h1`,{className:`text-xl sm:text-2xl font-bold tracking-tight flex items-center gap-2`,children:[(0,V.jsx)(R,{className:`h-5 w-5`}),`Flow Runs`]}),(0,V.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,V.jsxs)(D,{children:[(0,V.jsx)(c,{className:`pb-3`,children:(0,V.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[(0,V.jsxs)(`div`,{children:[(0,V.jsx)(d,{className:`text-base`,children:`Flow`}),(0,V.jsx)(f,{children:`Select a flow definition to test`})]}),(0,V.jsxs)(E,{variant:`outline`,size:`sm`,onClick:g,disabled:r,children:[(0,V.jsx)(L,{className:`h-3.5 w-3.5 mr-2 ${r?`animate-spin`:``}`}),`Refresh`]})]})}),(0,V.jsxs)(o,{children:[r&&(0,V.jsx)(s,{className:`h-9 w-72`}),a&&(0,V.jsx)(`p`,{className:`text-sm text-red-500 font-mono break-all`,children:a}),!r&&!a&&t.length===0&&(0,V.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No flow definitions found.`}),!r&&!a&&t.length>0&&(0,V.jsx)(`select`,{value:u,onChange:e=>p(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,V.jsx)(`option`,{value:e.name,children:e.label?`${e.label} (${e.name})`:e.name},e.name))})]})]}),_&&(0,V.jsxs)(`div`,{className:`grid gap-4 lg:grid-cols-2`,children:[(0,V.jsx)(q,{client:e,flow:_.spec,onExecuted:()=>h(e=>e+1)}),(0,V.jsx)(J,{client:e,flowName:_.name,refreshKey:m})]})]})}function q({client:e,flow:t,onExecuted:n}){let i=(0,B.useMemo)(()=>(t?.variables??[]).filter(e=>e?.isInput),[t]),a=O(),{objects:s}=k(),l=(0,B.useMemo)(()=>r(),[]),[u,h]=(0,B.useState)({}),[g,_]=(0,B.useState)(!1),[v,y]=(0,B.useState)(null),[x,w]=(0,B.useState)(null),[T,A]=(0,B.useState)(null);(0,B.useEffect)(()=>{h({}),y(null),w(null),A(null)},[t?.name]);let j=(e,t)=>h(n=>({...n,[e]:t}));return(0,V.jsxs)(D,{children:[(0,V.jsxs)(c,{className:`pb-3`,children:[(0,V.jsx)(d,{className:`text-base`,children:`Test Run`}),(0,V.jsx)(f,{children:`Provide input values and invoke the flow`})]}),(0,V.jsxs)(o,{className:`space-y-3`,children:[i.length===0&&(0,V.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`This flow declares no input variables. Click Run to invoke with no parameters.`}),i.map(e=>(0,V.jsxs)(`div`,{className:`grid gap-1.5`,children:[(0,V.jsxs)(m,{htmlFor:`var-${e.name}`,className:`flex items-center gap-2`,children:[(0,V.jsx)(`span`,{className:`font-mono text-xs`,children:e.name}),(0,V.jsx)(b,{variant:`outline`,className:`text-[10px] font-mono`,children:e.type})]}),e.type===`boolean`?(0,V.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,V.jsx)(S,{id:`var-${e.name}`,checked:u[e.name]===`true`,onCheckedChange:t=>j(e.name,t?`true`:`false`)}),(0,V.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:u[e.name]===`true`?`true`:`false`})]}):e.type===`object`||e.type===`list`||e.type===`array`?(0,V.jsx)(p,{id:`var-${e.name}`,placeholder:`JSON ${e.type}`,value:u[e.name]??``,onChange:t=>j(e.name,t.target.value),className:`font-mono text-xs min-h-[80px]`}):(0,V.jsx)(C,{id:`var-${e.name}`,type:e.type===`number`?`number`:`text`,value:u[e.name]??``,onChange:t=>j(e.name,t.target.value)})]},e.name)),(0,V.jsx)(`div`,{className:`pt-1`,children:(0,V.jsxs)(E,{onClick:async()=>{if(!e?.automation?.execute){w(`automation.execute is not available on this client`);return}_(!0),w(null),y(null),A(null);try{let r={};for(let e of i){let t=u[e.name];t!==void 0&&(r[e.name]=W(t,e.type))}let a=await e.automation.execute(t.name,{params:r});y(a),a?.status===`paused`&&a?.screen&&a?.runId&&A({flowName:t.name,runId:a.runId,screen:a.screen}),n?.()}catch(e){w(e?.message??String(e))}finally{_(!1)}},disabled:g,size:`sm`,children:[g?(0,V.jsx)(F,{className:`h-3.5 w-3.5 mr-2 animate-spin`}):(0,V.jsx)(I,{className:`h-3.5 w-3.5 mr-2`}),g?`Running…`:`Run Flow`]})}),(v||x)&&(0,V.jsxs)(`div`,{className:`pt-2 border-t mt-2 space-y-2`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-2 text-sm font-medium`,children:[x||v?.success===!1?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(N,{className:`h-4 w-4 text-red-500`}),` Failed`]}):v?.status===`paused`?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(P,{className:`h-4 w-4 text-amber-500`}),` Waiting for input`]}):(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(M,{className:`h-4 w-4 text-emerald-500`}),` Result`]}),typeof v?.durationMs==`number`&&(0,V.jsxs)(b,{variant:`secondary`,className:`text-[10px] font-mono`,children:[v.durationMs,` ms`]})]}),x&&(0,V.jsx)(`p`,{className:`text-sm text-red-500 font-mono break-all`,children:x}),v?.status===`paused`&&v?.screen&&v?.runId&&!T&&(0,V.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,V.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`This run is paused at screen `,(0,V.jsx)(`span`,{className:`font-mono`,children:v.screen.nodeId}),`.`]}),(0,V.jsx)(E,{size:`sm`,variant:`outline`,onClick:()=>A({flowName:t.name,runId:v.runId,screen:v.screen}),children:`Continue run`})]}),v&&(0,V.jsx)(G,{data:v})]})]}),(0,V.jsx)(z,{state:T,authFetch:l,baseUrl:``,dataSource:a,objects:s,onClose:()=>{A(null),n?.()},onComplete:()=>{A(null),n?.()}})]})}function J({client:e,flowName:t,refreshKey:n}){let r=A(),[p,m]=(0,B.useState)([]),[S,C]=(0,B.useState)(!0),[O,k]=(0,B.useState)(null),[j,M]=(0,B.useState)(null),[N,P]=(0,B.useState)(null),[I,R]=(0,B.useState)(!1),[z,W]=(0,B.useState)(null),K=(0,B.useCallback)(async()=>{if(!e?.automation?.listRuns){k(`automation.listRuns is not available on this client`),C(!1);return}C(!0),k(null);try{let n=await e.automation.listRuns(t,{limit:20}),r=Array.isArray(n)?n:n?.items??n?.runs??[];m(r)}catch(e){k(e?.message??String(e))}finally{C(!1)}},[e,t]);(0,B.useEffect)(()=>{K()},[K,n]);let q=async n=>{M(n),P(null),W(null),R(!0);try{let r=await e.automation.getRun(t,n);P(r?.run??r)}catch(e){W(e?.message??String(e))}finally{R(!1)}};return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(D,{children:[(0,V.jsx)(c,{className:`pb-3`,children:(0,V.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,V.jsxs)(`div`,{children:[(0,V.jsx)(d,{className:`text-base`,children:`Recent Runs`}),(0,V.jsx)(f,{className:`font-mono text-xs`,children:t})]}),(0,V.jsxs)(E,{variant:`outline`,size:`sm`,onClick:K,disabled:S,children:[S?(0,V.jsx)(F,{className:`h-3.5 w-3.5 mr-2 animate-spin`}):(0,V.jsx)(L,{className:`h-3.5 w-3.5 mr-2`}),`Refresh`]})]})}),(0,V.jsxs)(o,{children:[S&&(0,V.jsxs)(`div`,{className:`space-y-2`,children:[(0,V.jsx)(s,{className:`h-8 w-full`}),(0,V.jsx)(s,{className:`h-8 w-full`}),(0,V.jsx)(s,{className:`h-8 w-full`})]}),!S&&O&&(0,V.jsx)(`p`,{className:`text-sm text-red-500 font-mono break-all`,children:O}),!S&&!O&&p.length===0&&(0,V.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.`}),!S&&!O&&p.length>0&&(0,V.jsxs)(g,{children:[(0,V.jsx)(_,{children:(0,V.jsxs)(h,{children:[(0,V.jsx)(w,{children:`Run`}),(0,V.jsx)(w,{children:`Status`}),(0,V.jsx)(w,{children:`Started`}),(0,V.jsx)(w,{className:`text-right`,children:`Duration`})]})}),(0,V.jsx)(T,{children:p.map(e=>(0,V.jsxs)(h,{className:`cursor-pointer`,onClick:()=>q(e.id),children:[(0,V.jsxs)(x,{className:`font-mono text-xs`,children:[e.id.slice(0,12),`…`]}),(0,V.jsx)(x,{children:(0,V.jsx)(H,{status:e.status})}),(0,V.jsx)(x,{className:`text-xs text-muted-foreground`,children:U(e.startedAt,r)}),(0,V.jsx)(x,{className:`text-right font-mono text-xs`,children:typeof e.durationMs==`number`?`${e.durationMs} ms`:`—`})]},e.id))})]})]})]}),(0,V.jsx)(y,{open:!!j,onOpenChange:e=>{e||(M(null),P(null))},children:(0,V.jsxs)(i,{side:`right`,className:`w-full sm:max-w-2xl p-0 flex flex-col`,children:[(0,V.jsxs)(l,{className:`p-4 border-b`,children:[(0,V.jsxs)(u,{className:`font-mono text-sm break-all`,children:[`Run `,j]}),(0,V.jsx)(v,{children:N&&(0,V.jsxs)(`span`,{className:`inline-flex items-center gap-2`,children:[(0,V.jsx)(H,{status:N.status}),typeof N.durationMs==`number`&&(0,V.jsxs)(b,{variant:`secondary`,className:`text-[10px] font-mono`,children:[N.durationMs,` ms`]}),(0,V.jsx)(`span`,{className:`text-xs`,children:U(N.startedAt,r)})]})})]}),(0,V.jsxs)(a,{className:`flex-1 p-4`,children:[I&&(0,V.jsxs)(`div`,{className:`space-y-2`,children:[(0,V.jsx)(s,{className:`h-16 w-full`}),(0,V.jsx)(s,{className:`h-16 w-full`}),(0,V.jsx)(s,{className:`h-16 w-full`})]}),z&&(0,V.jsx)(`p`,{className:`text-sm text-red-500 font-mono break-all`,children:z}),!I&&N&&(0,V.jsx)(`div`,{className:`space-y-3`,children:Array.isArray(N.steps)&&N.steps.length>0?N.steps.map((e,t)=>(0,V.jsxs)(`div`,{className:`rounded-md border p-3 space-y-2`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,V.jsxs)(`span`,{className:`text-muted-foreground font-mono text-xs`,children:[`#`,t+1]}),(0,V.jsx)(`span`,{className:`font-mono text-sm font-medium`,children:e.nodeLabel||e.nodeId}),e.nodeType&&(0,V.jsx)(b,{variant:`outline`,className:`text-[10px] font-mono`,children:e.nodeType}),(0,V.jsx)(H,{status:e.status}),typeof e.durationMs==`number`&&(0,V.jsxs)(b,{variant:`secondary`,className:`text-[10px] font-mono ml-auto`,children:[e.durationMs,` ms`]})]}),e.input!==void 0&&(0,V.jsxs)(`div`,{children:[(0,V.jsx)(`div`,{className:`text-[10px] uppercase text-muted-foreground mb-1`,children:`Input`}),(0,V.jsx)(G,{data:e.input})]}),e.output!==void 0&&(0,V.jsxs)(`div`,{children:[(0,V.jsx)(`div`,{className:`text-[10px] uppercase text-muted-foreground mb-1`,children:`Output`}),(0,V.jsx)(G,{data:e.output})]}),e.error&&(0,V.jsxs)(`div`,{children:[(0,V.jsx)(`div`,{className:`text-[10px] uppercase text-red-500 mb-1`,children:`Error`}),(0,V.jsx)(G,{data:e.error})]})]},`${e.nodeId}-${t}`)):(0,V.jsxs)(`div`,{children:[(0,V.jsx)(`div`,{className:`text-[10px] uppercase text-muted-foreground mb-1`,children:`Run`}),(0,V.jsx)(G,{data:N})]})})]})]})})]})}export{K as FlowRunsPage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{d as t,m as n,t as r,v as i}from"./vendor-react-BggL7APJ.js";import{p as a}from"./infrastructure-BHSync5f.js";import{Ot as o,Tt as s,vt as c,wt as l}from"./ui-components-BTB1NkUW.js";import{Fr as u,G as d,K as f,ct as p,ht as m,ii as h}from"./framework-DcWkeiND.js";import{w as g}from"./i18n-runtime-CTgAQF4N.js";import{t as _}from"./vendor-icon-database-C8JGjSkn.js";import{t as v}from"./RecordDetailView-DQKydU7X.js";import{t as y}from"./plugins-views-DraK4xz0.js";var b=e(i(),1),x=[`single`,`group`,`isolated`];function S(e){return e===`group`||e===`isolated`}function C(){let{getAuthConfig:e}=a(),[t,n]=(0,b.useState)(void 0);return(0,b.useEffect)(()=>{let t=!1;return e?.().then(e=>{if(t)return;let r=e?.features?.tenancyPosture;r&&x.includes(r)&&n(r)}).catch(()=>{}),()=>{t=!0}},[e]),t}var w=`uf_`;function T(e){let t={};return e.forEach((e,n)=>{if(n.startsWith(w)&&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 E(e,t){let n=new URLSearchParams(e);for(let[e,r]of Object.entries(t)){let t=w+e;r&&r.length>0?n.set(t,r.map(e=>encodeURIComponent(String(e))).join(`,`)):n.delete(t)}return n}var D=r();function O(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(O)??r[0]}function k(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(u(e,r.filter(t=>e.fields?.[t])));let i=e?.fields;return i&&typeof i==`object`?n(u(e,Object.entries(i).filter(([e,t])=>t&&!t.hidden&&!h(e,t)).map(([e])=>e)).slice(0,6)):[]}function A(e,t){let n=e?.fields;if(n&&typeof n==`object`)return Object.entries(n).find(([e,n])=>n&&!n.hidden&&!h(e,n)&&t(e,n))?.[0]}var j=new Set([`select`,`multiselect`,`radio`,`enum`,`boolean`]),M=new Set([`date`,`datetime`,`time`]),N=new Set([`image`,`file`,`attachment`,`avatar`,`photo`]);function P(e){let t=A(e,(e,t)=>j.has(t.type))??A(e,e=>/status|stage|state|priority|category|kind/i.test(e));return t?{groupByField:t}:void 0}function F(e){return A(e,(e,t)=>M.has(t.type))??A(e,e=>/date|due|start|end|deadline|schedule/i.test(e))}function I(e){let t=F(e);return t?{startDateField:t}:void 0}function L(e){let t=A(e,(e,t)=>N.has(t.type));return t?{coverField:t}:void 0}var R=new Set([`location`,`geo`,`geolocation`,`geopoint`,`point`]);function z(e){let t=A(e,(e,t)=>M.has(t.type)&&/start|begin|kickoff/i.test(e))??A(e,(e,t)=>M.has(t.type));if(!t)return;let n=A(e,(e,n)=>M.has(n.type)&&e!==t&&/end|due|finish|deadline|close/i.test(e))??A(e,(e,n)=>M.has(n.type)&&e!==t);if(!n)return;let r=A(e,(e,t)=>(t.type===`number`||t.type===`percent`)&&/progress|percent|complete/i.test(e));return{startDateField:t,endDateField:n,...r?{progressField:r}:{}}}function B(e){let t=A(e,(e,t)=>R.has(t.type))??A(e,e=>/location|address|geo|coords?|place|venue/i.test(e));if(t)return{locationField:t}}function V({page:e,className:r,onConfigChange:i,reserveEditAffordance:a}){let{t:u}=g(),{objects:h}=f(),x=d(),S=t(),[w,A]=n(),j=C()===`group`,[M]=b.useState(()=>T(new URLSearchParams(window.location.search))),N=b.useCallback(e=>{A(t=>E(t,e),{replace:!0})},[A]),F=e?.interfaceConfig||{},R=b.useMemo(()=>(h||[]).find(e=>e.name===F.source),[h,F.source]),V=b.useMemo(()=>ee(R,F.sourceView),[R,F.sourceView]),H=F.recordAction===`page`||F.recordAction===`modal`||F.recordAction===`none`?F.recordAction:`drawer`,U=b.useCallback(e=>`/apps/${window.location.pathname.split(`/`)[2]||``}/${F.source}/record/${encodeURIComponent(String(e))}`,[F.source]),W=p({navigation:{mode:H===`none`?`none`:H},objectName:F.source,onNavigate:e=>S(U(e))}),G=w.get(`recordId`),te=b.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=b.useCallback(()=>{A(e=>{let t=new URLSearchParams(e);return t.delete(`recordId`),t})},[A]);b.useEffect(()=>{G&&!W.isOpen?W.open({id:G}):!G&&W.isOpen&&W.close()},[G]);let K=R?.name,q=!!V&&!O(V),J=V?.name??(F.sourceView?`${F.source}.${F.sourceView}`:void 0),[Y,X]=b.useState(null);b.useEffect(()=>{let e=!1;if(X(null),K&&F.source&&q&&J)return(async()=>{try{let t=x,n=null;if(typeof t?.listViewOverrides==`function`)try{n=(await t.listViewOverrides(F.source))?.[J]??null}catch{}!O(n)&&typeof t?.getView==`function`&&(n=await t.getView(F.source,J)),!e&&n&&typeof n==`object`&&X(n)}catch{}})(),()=>{e=!0}},[K,F.source,F.sourceView,q,J,x]);let Z=b.useMemo(()=>Y?{...V,...Y}:V,[V,Y]),re=JSON.stringify(Z??null),Q=b.useMemo(()=>{if(!R)return;let e=Z||{},t=F.appearance??e.appearance,n=t?.allowedVisualizations||[],r=new Set(n),i=F.userActions||{},a=e.kanban??(r.has(`kanban`)?P(R):void 0),o=e.calendar??(r.has(`calendar`)?I(R):void 0),s=e.timeline??(r.has(`timeline`)?I(R):void 0),c=e.gallery??(r.has(`gallery`)?L(R):void 0),l=e.gantt??(r.has(`gantt`)?z(R):void 0),u=e.options?.map??(r.has(`map`)?B(R):void 0),d=[...Array.isArray(e.filter)?e.filter:[],...Array.isArray(F.filterBy)?F.filterBy:[]],f=!O(F)&&O(e),p=O(F)?F.columns:f?e.columns:k(R,{orgAttribution:j}),m=Array.isArray(F.sort)&&F.sort.length?F.sort:e.sort;return{type:`list-view`,objectName:R.name,viewType:n[0]??e.type??`grid`,columns:p,...f&&e.hiddenFields!==void 0?{hiddenFields:e.hiddenFields}:{},...f&&e.fieldOrder!==void 0?{fieldOrder:e.fieldOrder}:{},...d.length?{filter:d}:{},...m?.length?{sort:m}:{},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,...e.map?{map:e.map}:{},...u||e.options?{options:{...e.options??{},...u?{map:u}:{}}}:{},userFilters:F.userFilters??e.userFilters,appearance:t,showViewSwitcher:n.length>1,showRecordCount:F.showRecordCount,addRecord:F.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,F,j]);if(!R||!Q)return(0,D.jsx)(`div`,{className:`h-full flex items-center justify-center p-8`,children:(0,D.jsxs)(l,{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)(_,{className:`h-6 w-6 text-muted-foreground`})}),(0,D.jsx)(o,{children:u(`empty.objectNotFound`,{defaultValue:`Object Not Found`})}),(0,D.jsx)(s,{children:u(`empty.interfacePageSourceMissing`,{defaultValue:`This interface page references "{{name}}", which is not available.`,name:F.source||`?`})})]})});let $=Array.isArray(F.buttons)&&F.buttons.length?F.buttons.map(e=>(R.actions||[]).find(t=>t?.name===e)).filter(Boolean).map(e=>({...e,locations:[`list_toolbar`]})):[];return(0,D.jsxs)(`div`,{className:r??`h-full flex flex-col`,"data-testid":`interface-list-page`,children:[(0,D.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,D.jsxs)(`div`,{className:`min-w-0`,children:[(0,D.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,D.jsx)(`p`,{className:`text-sm text-muted-foreground mt-0.5`,children:e.description})]}),$.length>0&&(0,D.jsx)(`div`,{className:`shrink-0`,"data-testid":`interface-page-buttons`,children:(0,D.jsx)(m,{schema:{type:`action:bar`,location:`list_toolbar`,actions:$,size:`sm`,variant:`outline`}})})]}),(0,D.jsx)(`div`,{className:`flex-1 min-h-0 overflow-auto`,children:(0,D.jsx)(y,{schema:Q,dataSource:x,userFilterSelections:M,onUserFilterSelectionsChange:N,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,D.jsx)(c,{...W,setIsOpen:e=>{e||ne()},title:typeof e.label==`string`?e.label:F.source||`Record`,children:e=>(0,D.jsx)(v,{objectNameOverride:F.source,recordIdOverride:String(e?.id??e?._id??G??``),embedded:!0,dataSource:x,objects:h,onEdit:()=>{}})})]})}export{P as a,S as c,L as i,C as l,I as n,E as o,k as r,T as s,V as t};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{o as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{d as n,p as r,t as i,v as a}from"./vendor-react-BggL7APJ.js";import{f as ee}from"./infrastructure-BHSync5f.js";import{$n as te,Ar as ne,Br as re,Dn as o,Fn as ie,Hr as ae,In as oe,Ln as se,Mr as ce,Nr as le,Pr as ue,Qn as de,Rn as fe,Rr as s,Ur as pe,Zn as c,jr as me,kr as he,ni as l,sr as ge,tr as u,vi as d,zn as _e,zr as ve}from"./ui-components-BTB1NkUW.js";import{K as ye,Wr as f}from"./framework-DcWkeiND.js";import{t as be,w as xe}from"./i18n-runtime-CTgAQF4N.js";import{t as Se}from"./vendor-icon-arrow-left-DmGEbpkA.js";import{t as Ce}from"./vendor-icon-boxes-D-Ov3dJw.js";import{t as p}from"./vendor-icon-circle-alert-D1XTr_X9.js";import{t as we}from"./vendor-icon-circle-arrow-up-bx9jlxK3.js";import{t as m}from"./vendor-icon-circle-check-Bq3OcFQN.js";import{t as h}from"./vendor-icon-code-xml-C9EWHSC8.js";import{t as Te}from"./vendor-icon-database-C8JGjSkn.js";import{t as Ee}from"./vendor-icon-download-C3csYSaD.js";import{t as De}from"./vendor-icon-ellipsis-BjiiCS3N.js";import{t as Oe}from"./vendor-icon-external-link-SBKz5x6R.js";import{t as g}from"./vendor-icon-folder-tree-BQ1wv9bt.js";import{t as _}from"./vendor-icon-loader-circle-D3PsuVaD.js";import{t as ke}from"./vendor-icon-network-6ADGC5P5.js";import{t as Ae}from"./vendor-icon-package-B6zAlWd3.js";import{t as v}from"./vendor-icon-shield-alert-CJYtPI9w.js";import{t as y}from"./vendor-icon-shield-check-CdDzbial.js";import{t as b}from"./vendor-icon-trash-BLsWkwB9.js";import{t as x}from"./vendor-icon-webhook-B43SyK1w.js";import{t as je}from"./assistantBus-DoNtw1Tf.js";import{M as Me,_ as Ne,a as S,c as Pe,f as Fe,g as Ie,h as Le,i as Re,k as C,l as ze,n as Be,o as Ve,r as He,s as Ue,u as We,v as Ge,y as Ke}from"./app-shell-eager-leaves-CDVclng4.js";import{i as qe,n as Je,r as Ye,t as Xe}from"./usePackageL10n-CMx66am-.js";var w=e(a(),1),T=i();function E(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 D(e){let t=[],n=e,r=0,i=[{re:/`([^`]+)`/,render:e=>(0,T.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,T.jsx)(`strong`,{className:`font-semibold text-foreground`,children:e[1]},`k${r++}`)},{re:/\*([^*]+)\*/,render:e=>(0,T.jsx)(`em`,{children:e[1]},`k${r++}`)},{re:/\[([^\]]+)\]\(([^)]+)\)/,render:e=>(0,T.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,T.jsx)(T.Fragment,{children:t.map((e,t)=>(0,T.jsx)(w.Fragment,{children:e},t))})}function Ze({source:e,className:t}){let n=E(e);return(0,T.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,T.jsx)(`h2`,{className:`mt-2 text-xl font-bold tracking-tight`,children:D(e.text??``)},t);case`h2`:return(0,T.jsx)(`h3`,{className:`mt-3 text-base font-semibold tracking-tight`,children:D(e.text??``)},t);case`h3`:return(0,T.jsx)(`h4`,{className:`mt-2 text-sm font-semibold tracking-tight text-foreground/80`,children:D(e.text??``)},t);case`p`:return(0,T.jsx)(`p`,{children:D(e.text??``)},t);case`ul`:return(0,T.jsx)(`ul`,{className:`ml-1 flex list-none flex-col gap-1.5`,children:(e.items??[]).map((e,t)=>(0,T.jsxs)(`li`,{className:`flex gap-2`,children:[(0,T.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,T.jsx)(`span`,{children:D(e)})]},t))},t);case`ol`:return(0,T.jsx)(`ol`,{className:`ml-5 flex list-decimal flex-col gap-1.5 marker:text-muted-foreground`,children:(e.items??[]).map((e,t)=>(0,T.jsx)(`li`,{className:`pl-1`,children:D(e)},t))},t);case`code`:return(0,T.jsx)(`pre`,{className:`overflow-x-auto rounded-lg border bg-muted/40 p-3 text-xs leading-relaxed`,children:(0,T.jsx)(`code`,{className:`font-mono`,children:e.text})},t)}return null})})}var Qe={node:`In-process · full trust`,sandbox:`Sandboxed`,worker:`Out-of-process`};function O({icon:e,label:t,items:n}){return!n||n.length===0?null:(0,T.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,T.jsx)(e,{className:`h-3.5 w-3.5 mt-0.5 text-muted-foreground shrink-0`,"aria-hidden":`true`}),(0,T.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,T.jsx)(`div`,{className:`text-xs font-medium`,children:t}),(0,T.jsx)(`div`,{className:`flex flex-wrap gap-1 mt-0.5`,children:n.map(e=>(0,T.jsx)(`code`,{className:`font-mono text-[11px] px-1 py-0.5 rounded bg-muted break-all`,children:e},e))})]})]})}function $e({version:e}){let{t}=xe();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,T.jsxs)(`div`,{className:`rounded-md border border-amber-500/30 bg-amber-500/5 p-3 space-y-3 text-sm`,children:[(0,T.jsxs)(`div`,{className:`flex items-center gap-2 font-medium`,children:[(0,T.jsx)(h,{className:`h-4 w-4 text-amber-600 shrink-0`,"aria-hidden":`true`}),t(`marketplace.disclosure.containsCode`,{defaultValue:`This package contains code`})]}),(0,T.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[e.runtime&&(0,T.jsx)(l,{variant:`outline`,children:t(`marketplace.disclosure.runtime.${e.runtime}`,{defaultValue:Qe[e.runtime]})}),e.platform_verified?(0,T.jsxs)(l,{variant:`outline`,className:`gap-1 border-green-500/40 text-green-700 dark:text-green-400`,children:[(0,T.jsx)(y,{className:`h-3 w-3`,"aria-hidden":`true`}),t(`marketplace.disclosure.reviewed`,{defaultValue:`Reviewed & approved`})]}):(0,T.jsxs)(l,{variant:`outline`,className:`gap-1 border-amber-500/40 text-amber-700 dark:text-amber-400`,children:[(0,T.jsx)(v,{className:`h-3 w-3`,"aria-hidden":`true`}),t(`marketplace.disclosure.unreviewed`,{defaultValue:`Not yet reviewed`})]}),e.signed&&(0,T.jsxs)(l,{variant:`outline`,className:`gap-1`,children:[(0,T.jsx)(m,{className:`h-3 w-3`,"aria-hidden":`true`}),t(`marketplace.disclosure.signed`,{defaultValue:`Signed`})]})]}),r?(0,T.jsxs)(`div`,{className:`space-y-2`,children:[(0,T.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:t(`marketplace.disclosure.grantsIntro`,{defaultValue:`This package requests:`})}),(0,T.jsx)(O,{icon:Ce,label:t(`marketplace.disclosure.services`,{defaultValue:`Platform services`}),items:n.services??void 0}),(0,T.jsx)(O,{icon:x,label:t(`marketplace.disclosure.hooks`,{defaultValue:`Lifecycle hooks`}),items:n.hooks??void 0}),(0,T.jsx)(O,{icon:ke,label:t(`marketplace.disclosure.network`,{defaultValue:`Network access`}),items:n.network??void 0}),(0,T.jsx)(O,{icon:g,label:t(`marketplace.disclosure.fs`,{defaultValue:`Filesystem access`}),items:n.fs??void 0}),(0,T.jsx)(`div`,{className:`text-[11px] text-muted-foreground/80 leading-snug`,children:t(`marketplace.disclosure.notEnforced`,{defaultValue:`Recorded at install, and re-confirmed if a later version asks for more — but the runtime does not yet restrict the package to this list.`})})]}):(0,T.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:t(`marketplace.disclosure.noPermissions`,{defaultValue:`Requests no special permissions.`})})]})}var k=t({MarketplacePackagePage:()=>A});function A(){let e=n(),{packageId:t,appName:i}=r(),{isAdmin:a,isResolved:Ce}=ee(),{t:h,language:g}=xe(),ke=be(),v={describe:e=>h(e.anchor===`guest`?`marketplace.suggestedBindings.promptGuest`:`marketplace.suggestedBindings.promptEveryone`,{set:e.permission_set_name}),confirm:h(`marketplace.suggestedBindings.confirm`),confirming:h(`marketplace.suggestedBindings.confirming`),dismiss:h(`marketplace.suggestedBindings.dismiss`),confirmedToast:e=>h(`marketplace.suggestedBindings.confirmedToast`,{set:e.permission_set_name,anchor:e.anchor}),dismissedToast:e=>h(`marketplace.suggestedBindings.dismissedToast`,{set:e.permission_set_name})},y=i?`/apps/${i}`:``,{refresh:x}=ye(),E=Me(),[D,Qe]=(0,w.useState)(null),[O,k]=(0,w.useState)(E),[A,et]=(0,w.useState)(null),[tt,j]=(0,w.useState)(!1),[nt,rt]=(0,w.useState)([]),[it,M]=(0,w.useState)(!1),[N,P]=(0,w.useState)(null),[F,at]=(0,w.useState)(``),[ot,st]=(0,w.useState)({}),[ct,lt]=(0,w.useState)(!1),[ut,dt]=(0,w.useState)(!1),[I,ft]=(0,w.useState)(!1),[L,R]=(0,w.useState)(null),[z,pt]=(0,w.useState)(null),[B,V]=(0,w.useState)(null),[H,U]=(0,w.useState)(null),[W,G]=(0,w.useState)(null),[mt,ht]=(0,w.useState)(!1),[gt,_t]=(0,w.useState)([]),[vt,K]=(0,w.useState)(!1),[q,J]=(0,w.useState)(null);(0,w.useEffect)(()=>{if(!C().features.installLocal||!E||!a)return;let e=!1;return(async()=>{let t=await Fe();e||_t(t)})(),()=>{e=!0}},[t,q,E,a]),(0,w.useEffect)(()=>{if(!t||!E||!a)return;let e=C().defaultEnvironmentId??``,n=!1;return(async()=>{let r=await S(t,e);!n&&r&&(V(r),pt(r.version))})(),()=>{n=!0}},[t,E,a]),(0,w.useEffect)(()=>{let e=!1;return(async()=>{if(t&&E&&a){k(!0),et(null);try{let n=await Ve(t);e||Qe(n)}catch(t){e||et(t?.message??String(t))}finally{e||k(!1)}}})(),()=>{e=!0}},[t,E,a]);let yt=async()=>{j(!0),R(null),P(null);let e=C().defaultEnvironmentId;if(e){M(!1),at(e),rt([]);return}M(!0);try{let[e,n]=await Promise.all([ze(),We()]),r=e.filter(e=>{let t=e.organization_id;return t?n.has(String(t)):!1});rt(r),st({});let i=t;i&&Promise.all(r.map(async e=>{try{let t=await S(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]);st(t)}),e.length>0&&r.length===0?P(h(`marketplace.install.noPermission`)):r.length===1&&at(r[0].id)}catch(e){let t=e?.status;P(t===401||t===403?h(`marketplace.install.signInFirst`):e?.message??String(e))}finally{M(!1)}},bt=async()=>{if(t&&F){ft(!0),R(null);try{let e=(await Pe({packageId:t,environmentId:F,seedSampleData:ct}))?.installation?.version??D?.package?.latest_version?.version??D?.versions?.[0]?.version??``;pt(e||`installed`);try{let e=C().defaultEnvironmentId||F;if(e){let n=await S(t,e);n&&V(n)}}catch{}let n=C().defaultEnvironmentId;if(!n||n===F)try{if(typeof sessionStorage<`u`)for(let e of Object.keys(sessionStorage))e.startsWith(`objectui:metadata:`)&&sessionStorage.removeItem(e);await x()}catch{}R({ok:!0,message:h(`marketplace.install.success`)}),je()}catch(e){R({ok:!1,message:e?.message??String(e)})}finally{ft(!1)}}},xt=async()=>{if(t){K(!0),J(null);try{let e=await Ue({packageId:t});try{await x(`app`)}catch{}J({ok:!0,message:h(`marketplace.install.localSuccess`,{version:e.version,name:D?.package?Xe(D.package,g).displayName:e.manifestId})}),je()}catch(e){e?.code;let t=e?.message??String(e);f(e,`MANIFEST_CONFLICT`)?t=h(`marketplace.install.localManifestConflict`,{message:t}):f(e,`UNAUTHENTICATED`)?t=h(`marketplace.install.localUnauthorized`):f(e,`MARKETPLACE_UNAVAILABLE`)&&(t=h(`marketplace.install.localMarketplaceUnavailable`)),J({ok:!1,message:t})}finally{K(!1)}}},St=async()=>{if(Q&&confirm(h(`marketplace.uninstall.confirm`,{manifestId:Q.manifestId,version:Q.version}))){K(!0),J(null);try{await Ke(Q.manifestId);try{await x(`app`)}catch{}J({ok:!0,message:h(`marketplace.uninstall.successInDetail`,{manifestId:Q.manifestId})})}catch(e){J({ok:!1,message:e?.message??String(e)})}finally{K(!1)}}},Ct=async()=>{if(B){U(`reseed`),G(null);try{let e=await Ge(B.installationId);e.ok?(V({...B,withSampleData:!0}),G({ok:!0,text:h(`marketplace.detail.reseedQueued`)})):f(e,`ENVIRONMENT_KERNEL_UNAVAILABLE`)?(ht(!0),G({ok:!1,text:h(`marketplace.detail.sampleDataKernelUnavailable`)})):G({ok:!1,text:e.error||`Re-seed failed`})}finally{U(null)}}},wt=async()=>{if(B&&confirm(h(`marketplace.detail.purgeConfirm`))){U(`purge`),G(null);try{let e=await Ie(B.installationId);if(e.ok){V({...B,withSampleData:!1});let t=e.deleted??0;G({ok:!0,text:t>0?h(`marketplace.detail.purgeSuccess`,{count:t}):h(`marketplace.detail.purgeNoData`)})}else f(e,`ENVIRONMENT_KERNEL_UNAVAILABLE`)?(ht(!0),G({ok:!1,text:h(`marketplace.detail.sampleDataKernelUnavailable`)})):G({ok:!1,text:e.error||`Purge failed`})}finally{U(null)}}},Tt=async()=>{if(Q){U(`reseed`),G(null);try{let e=await Ne(Q.manifestId);_t(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=h(`marketplace.detail.reseedLocalSuccess`,{inserted:t,updated:n});G(r>0?{ok:!1,text:`${i} ${h(`marketplace.detail.reseedPartialErrors`,{count:r})}`}:{ok:!0,text:i})}catch(e){G({ok:!1,text:e?.message||`Re-seed failed`})}finally{U(null)}}},Et=async()=>{if(Q&&confirm(h(`marketplace.detail.purgeConfirm`))){U(`purge`),G(null);try{let e=await Le(Q.manifestId);_t(e=>e.map(e=>e.manifestId===Q.manifestId?{...e,withSampleData:!1}:e));let t=e.deleted??0;G({ok:!0,text:t>0?h(`marketplace.detail.purgeSuccess`,{count:t}):h(`marketplace.detail.purgeNoData`)})}catch(e){G({ok:!1,text:e?.message||`Purge failed`})}finally{U(null)}}};if(!E)return(0,T.jsx)(Je,{});if(!Ce)return(0,T.jsx)(Ye,{});if(!a)return(0,T.jsx)(He,{});if(O)return(0,T.jsxs)(`div`,{className:`mx-auto w-full max-w-6xl flex flex-col gap-6 p-4 sm:p-6`,children:[(0,T.jsx)(o,{className:`h-8 w-32`}),(0,T.jsx)(o,{className:`h-16 w-full`}),(0,T.jsx)(o,{className:`h-64 w-full`})]});if(A||!D)return(0,T.jsxs)(`div`,{className:`mx-auto w-full max-w-6xl flex flex-col gap-6 p-4 sm:p-6`,children:[(0,T.jsxs)(d,{variant:`ghost`,size:`sm`,onClick:()=>e(`${y}/system/marketplace`),children:[(0,T.jsx)(Se,{className:`h-4 w-4 mr-1.5`,"aria-hidden":`true`}),h(`marketplace.back`)]}),(0,T.jsxs)(`div`,{className:`flex items-start gap-3 rounded-md border border-destructive/30 bg-destructive/5 p-4 text-sm`,children:[(0,T.jsx)(p,{className:`h-4 w-4 mt-0.5 text-destructive`,"aria-hidden":`true`}),(0,T.jsxs)(`div`,{children:[(0,T.jsx)(`div`,{className:`font-medium text-destructive`,children:h(`marketplace.load.packageFailed`)}),(0,T.jsx)(`div`,{className:`text-muted-foreground mt-1`,children:A??h(`marketplace.load.notFound`)})]})]})]});let Y=D.package,X=Xe(Y,g),Z=Y.latest_version?.version??D.versions[0]?.version??null,Q=gt.find(e=>e.manifestId===Y.manifest_id)??null,Dt=!!Y.latest_version?.contains_code,$=!!z&&z!==`installed`&&!!Z&&z!==Z,Ot=C().features.installLocal,kt=!Z||vt||I||!Ot&&!!z&&!$,At=Ot?{label:h(vt?`marketplace.action.working`:Q?`marketplace.action.reinstall`:`marketplace.action.install`),onClick:xt}:{label:I?h(`marketplace.action.installing`):z?$?h(`marketplace.action.updateTo`,{defaultValue:`Update`}):h(`marketplace.action.installed`,{defaultValue:`Installed`}):h(`marketplace.action.installToCloud`),onClick:yt},jt=Y.category?h(`marketplace.category.${Y.category}`,{defaultValue:Y.category}):null;return(0,T.jsxs)(`div`,{className:`mx-auto w-full max-w-6xl flex flex-col gap-6 p-4 sm:p-6`,children:[(0,T.jsxs)(d,{variant:`ghost`,size:`sm`,className:`self-start -ml-2 text-muted-foreground hover:text-foreground`,onClick:()=>e(`${y}/system/marketplace`),children:[(0,T.jsx)(Se,{className:`h-4 w-4 mr-1.5`,"aria-hidden":`true`}),h(`marketplace.back`)]}),(0,T.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,T.jsx)(qe,{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,T.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,T.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,T.jsx)(`h1`,{className:`text-2xl sm:text-3xl font-bold tracking-tight truncate`,children:X.displayName||Y.manifest_id}),Y.homepage_url&&(0,T.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:h(`marketplace.detail.homepage`),children:[(0,T.jsx)(Oe,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}),(0,T.jsx)(`span`,{className:`hidden sm:inline`,children:h(`marketplace.detail.homepage`)})]})]}),(0,T.jsxs)(`div`,{className:`text-sm text-muted-foreground mt-2 flex flex-wrap items-center gap-1.5`,children:[(0,T.jsx)(`code`,{className:`font-mono text-xs px-1.5 py-0.5 rounded bg-muted`,children:Y.manifest_id}),Z&&(0,T.jsx)(l,{variant:`outline`,children:h(`marketplace.versionBadge`,{version:Z})}),Y.publisher&&Y.publisher!==`private`&&(0,T.jsx)(l,{variant:Y.publisher===`objectstack`?`default`:`secondary`,children:Y.publisher}),jt&&(0,T.jsx)(l,{variant:`outline`,children:jt}),Y.license&&(0,T.jsx)(l,{variant:`outline`,className:`font-normal`,children:Y.license}),Q&&(0,T.jsxs)(l,{variant:`default`,className:`bg-green-600 hover:bg-green-600 gap-1`,children:[(0,T.jsx)(m,{className:`h-3 w-3`,"aria-hidden":`true`}),h(`marketplace.detail.installedV`,{version:Q.version})]}),!Q&&z&&(0,T.jsxs)(l,{variant:`default`,className:`bg-green-600 hover:bg-green-600 gap-1`,children:[(0,T.jsx)(m,{className:`h-3 w-3`,"aria-hidden":`true`}),h(`marketplace.detail.installedV`,{version:z})]}),$&&(0,T.jsxs)(l,{variant:`default`,className:`bg-amber-500 hover:bg-amber-500 gap-1`,children:[(0,T.jsx)(we,{className:`h-3 w-3`,"aria-hidden":`true`}),h(`marketplace.detail.updateAvailable`,{defaultValue:`Update available`}),` → v`,Z]})]}),X.description&&(0,T.jsx)(`p`,{className:`text-sm sm:text-base text-foreground/80 mt-3 max-w-2xl leading-relaxed`,children:X.description})]}),(0,T.jsxs)(`div`,{className:`flex items-center gap-2 shrink-0 self-start`,children:[(0,T.jsxs)(d,{onClick:At.onClick,disabled:kt,size:`lg`,className:`min-w-[8rem]`,children:[(0,T.jsx)(Ee,{className:`h-4 w-4 mr-1.5`,"aria-hidden":`true`}),At.label]}),Q&&(0,T.jsxs)(de,{children:[(0,T.jsx)(ge,{asChild:!0,children:(0,T.jsx)(d,{variant:`outline`,size:`lg`,className:`px-2.5`,"aria-label":h(`marketplace.detail.moreOptions`),children:(0,T.jsx)(De,{className:`h-4 w-4`,"aria-hidden":`true`})})}),(0,T.jsxs)(te,{align:`end`,className:`w-56`,children:[(0,T.jsxs)(u,{onSelect:Tt,disabled:H!==null,children:[H===`reseed`?(0,T.jsx)(_,{className:`h-4 w-4 mr-2 animate-spin`,"aria-hidden":`true`}):(0,T.jsx)(Te,{className:`h-4 w-4 mr-2`,"aria-hidden":`true`}),Q.withSampleData?h(`marketplace.detail.reseedAgain`):h(`marketplace.detail.addSampleData`)]}),(0,T.jsxs)(u,{onSelect:Et,disabled:H!==null||!Q.withSampleData,className:`text-destructive focus:text-destructive`,children:[H===`purge`?(0,T.jsx)(_,{className:`h-4 w-4 mr-2 animate-spin`,"aria-hidden":`true`}):(0,T.jsx)(b,{className:`h-4 w-4 mr-2`,"aria-hidden":`true`}),h(`marketplace.detail.purgeSampleData`)]}),(0,T.jsxs)(u,{onSelect:St,disabled:vt,className:`text-destructive focus:text-destructive`,children:[(0,T.jsx)(b,{className:`h-4 w-4 mr-2`,"aria-hidden":`true`}),h(`marketplace.detail.uninstallFromRuntime`)]})]})]}),!Q&&B&&!C().cloudUrl&&(0,T.jsxs)(de,{children:[(0,T.jsx)(ge,{asChild:!0,children:(0,T.jsx)(d,{variant:`outline`,size:`lg`,className:`px-2.5`,"aria-label":h(`marketplace.detail.moreOptions`),children:(0,T.jsx)(De,{className:`h-4 w-4`,"aria-hidden":`true`})})}),(0,T.jsxs)(te,{align:`end`,className:`w-56`,children:[(0,T.jsxs)(u,{onSelect:Ct,disabled:H!==null||mt,children:[H===`reseed`?(0,T.jsx)(_,{className:`h-4 w-4 mr-2 animate-spin`,"aria-hidden":`true`}):(0,T.jsx)(Te,{className:`h-4 w-4 mr-2`,"aria-hidden":`true`}),B.withSampleData?h(`marketplace.detail.reseedAgain`):h(`marketplace.detail.addSampleData`)]}),(0,T.jsxs)(u,{onSelect:wt,disabled:H!==null||mt||!B.withSampleData,className:`text-destructive focus:text-destructive`,children:[H===`purge`?(0,T.jsx)(_,{className:`h-4 w-4 mr-2 animate-spin`,"aria-hidden":`true`}):(0,T.jsx)(b,{className:`h-4 w-4 mr-2`,"aria-hidden":`true`}),h(`marketplace.detail.purgeSampleData`)]})]})]})]})]}),W&&(0,T.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,T.jsx)(m,{className:`h-4 w-4 mt-0.5 shrink-0`,"aria-hidden":`true`}):(0,T.jsx)(p,{className:`h-4 w-4 mt-0.5 shrink-0`,"aria-hidden":`true`}),(0,T.jsx)(`div`,{className:`flex-1`,children:W.text}),(0,T.jsx)(`button`,{type:`button`,className:`text-xs underline opacity-60 hover:opacity-100`,onClick:()=>G(null),children:h(`marketplace.action.dismiss`)})]}),q&&(0,T.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,T.jsx)(m,{className:`h-4 w-4 mt-0.5 shrink-0`,"aria-hidden":`true`}):(0,T.jsx)(p,{className:`h-4 w-4 mt-0.5 shrink-0`,"aria-hidden":`true`}),(0,T.jsxs)(`div`,{className:`flex-1`,children:[q.message,q.ok&&(0,T.jsx)(Be,{packageId:Y.manifest_id,strings:v,className:`mt-2`})]}),(0,T.jsx)(`button`,{type:`button`,className:`text-xs underline opacity-60 hover:opacity-100`,onClick:()=>J(null),children:h(`marketplace.action.dismiss`)})]}),(0,T.jsxs)(`div`,{className:`grid gap-4 lg:grid-cols-3`,children:[(0,T.jsx)(`div`,{className:`lg:col-span-2 space-y-4`,children:(0,T.jsxs)(ve,{children:[(0,T.jsx)(ae,{children:(0,T.jsx)(pe,{className:`text-base`,children:h(`marketplace.detail.about`)})}),(0,T.jsx)(re,{children:X.readme?(0,T.jsx)(Ze,{source:X.readme}):(0,T.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:h(`marketplace.detail.noReadme`)})})]})}),(0,T.jsx)(`div`,{className:`space-y-4`,children:(0,T.jsxs)(ve,{children:[(0,T.jsx)(ae,{children:(0,T.jsx)(pe,{className:`text-base`,children:h(`marketplace.detail.versions`)})}),(0,T.jsx)(re,{children:D.versions.length===0?(0,T.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:h(`marketplace.detail.noApprovedVersions`)}):(0,T.jsx)(`ul`,{className:`space-y-3`,children:D.versions.map(e=>(0,T.jsxs)(`li`,{className:`space-y-1 text-sm`,children:[(0,T.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,T.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,T.jsx)(Ae,{className:`h-3.5 w-3.5 text-muted-foreground`,"aria-hidden":`true`}),(0,T.jsxs)(`code`,{className:`font-mono`,children:[`v`,e.version]}),e.is_prerelease&&(0,T.jsx)(l,{variant:`outline`,className:`text-xs`,children:h(`marketplace.detail.prerelease`)})]}),(0,T.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e.published_at?new Date(e.published_at).toLocaleDateString(ke):`—`})]}),e.release_notes&&e.release_notes.trim()&&(0,T.jsx)(`p`,{className:`whitespace-pre-line pl-5 text-xs text-muted-foreground`,children:e.release_notes.trim()})]},e.id))})})]})})]}),(0,T.jsx)(he,{open:tt,onOpenChange:e=>{j(e),e||(R(null),dt(!1))},children:(0,T.jsxs)(ne,{children:[(0,T.jsxs)(le,{children:[(0,T.jsx)(ue,{children:h(`marketplace.install.dialogTitle`,{name:X.displayName||Y.manifest_id})}),(0,T.jsx)(me,{children:C().defaultEnvironmentId?h(`marketplace.install.dialogDescCurrent`,{host:typeof window<`u`?window.location.host:``}):h(`marketplace.install.dialogDescPicker`)})]}),it?(0,T.jsx)(o,{className:`h-10 w-full`}):N?(0,T.jsxs)(`div`,{className:`rounded-md border border-amber-500/30 bg-amber-500/5 p-3 text-sm space-y-2`,children:[(0,T.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,T.jsx)(p,{className:`h-4 w-4 mt-0.5 text-amber-600`,"aria-hidden":`true`}),(0,T.jsx)(`div`,{className:`flex-1`,children:N})]}),Re()?(0,T.jsx)(`a`,{href:Re(),target:`_blank`,rel:`noopener noreferrer`,children:(0,T.jsxs)(d,{variant:`outline`,size:`sm`,className:`w-full`,children:[(0,T.jsx)(Oe,{className:`h-4 w-4 mr-1.5`,"aria-hidden":`true`}),h(`marketplace.action.openOnCloud`)]})}):null]}):C().defaultEnvironmentId?(0,T.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,T.jsx)(s,{id:`seed`,checked:ct,onCheckedChange:e=>lt(e===!0)}),(0,T.jsx)(c,{htmlFor:`seed`,className:`text-sm font-normal cursor-pointer`,children:h(`marketplace.install.includeSampleData`)})]}):nt.length===0?(0,T.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:h(`marketplace.install.noEnvs`)}):(0,T.jsxs)(`div`,{className:`space-y-4`,children:[(0,T.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,T.jsx)(c,{htmlFor:`env-select`,children:h(`marketplace.install.environment`)}),(0,T.jsxs)(ie,{value:F,onValueChange:at,children:[(0,T.jsx)(fe,{id:`env-select`,children:(0,T.jsx)(_e,{placeholder:h(`marketplace.install.environmentPlaceholder`)})}),(0,T.jsx)(oe,{children:nt.map(e=>{let t=ot[e.id],n=!!t&&!!Z&&t!==`installed`&&t!==Z;return(0,T.jsxs)(se,{value:e.id,children:[e.display_name||e.hostname||e.id,e.plan&&(0,T.jsxs)(`span`,{className:`text-muted-foreground`,children:[` · `,e.plan]}),t&&(n?(0,T.jsxs)(`span`,{className:`text-amber-600`,children:[` · `,h(`marketplace.install.updateTo`,{defaultValue:`Update → v{{version}}`,version:Z})]}):(0,T.jsxs)(`span`,{className:`text-muted-foreground`,children:[` · `,h(`marketplace.install.installedVersion`,{defaultValue:`Installed v{{version}}`,version:t})]}))]},e.id)})})]})]}),(0,T.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,T.jsx)(s,{id:`seed`,checked:ct,onCheckedChange:e=>lt(e===!0)}),(0,T.jsx)(c,{htmlFor:`seed`,className:`text-sm font-normal cursor-pointer`,children:h(`marketplace.install.includeSampleData`)})]})]}),Dt&&!N&&(0,T.jsxs)(`div`,{className:`space-y-3`,children:[(0,T.jsx)($e,{version:Y.latest_version}),(0,T.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,T.jsx)(s,{id:`ack-perms`,checked:ut,onCheckedChange:e=>dt(e===!0)}),(0,T.jsx)(c,{htmlFor:`ack-perms`,className:`text-sm font-normal cursor-pointer leading-snug`,children:h(`marketplace.disclosure.acknowledge`,{defaultValue:`I understand this package runs code and grants the permissions above.`})})]})]}),L&&(0,T.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&&C().defaultEnvironmentId&&C().defaultEnvironmentId===F&&(0,T.jsx)(Be,{packageId:Y.manifest_id,strings:v}),(0,T.jsxs)(ce,{children:[(0,T.jsx)(d,{variant:`outline`,onClick:()=>j(!1),children:h(`marketplace.action.close`)}),!N&&(0,T.jsx)(d,{onClick:bt,disabled:!F||I||L?.ok===!0||Dt&&!ut,children:h(I?`marketplace.action.installing`:`marketplace.action.install`)})]})]})})]})}export{k as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{d as t,m as n,p as r,t as i,v as a}from"./vendor-react-BggL7APJ.js";import{f as ee,p as o}from"./infrastructure-BHSync5f.js";import{Ar as s,hr as c}from"./vendor-objectstack-XuWC71M9.js";import{$ as l,Ot as u,Q as te,Tt as d,vi as f,vt as ne,wt as p}from"./ui-components-BTB1NkUW.js";import{Ft as m,Ni as re,Yn as ie,ct as ae}from"./framework-DcWkeiND.js";import{f as oe,w as se}from"./i18n-runtime-CTgAQF4N.js";import{t as ce}from"./vendor-icon-database-C8JGjSkn.js";import{t as h}from"./vendor-icon-lock-B_psRnly.js";import{t as le}from"./vendor-icon-plus-BlfcDDsa.js";import{t as ue}from"./vendor-icon-save-CuavGNuU.js";import{t as de}from"./vendor-icon-x-CcLtgRNL.js";import{l as fe,o as g,p as pe,u as me}from"./createDerive-DvA_JGNq.js";import{t as he}from"./RecordDetailView-DQKydU7X.js";import{a as ge,i as _e,l as ve,n as ye,o as be,r as xe,s as Se}from"./InterfaceListPage-BdECC_i3.js";import{t as Ce}from"./getIcon-BEVyC4y3.js";import{n as we,t as Te}from"./CreateViewDialog-xyKlpLEW.js";import{a as Ee,n as De,r as Oe,t as _}from"./drillUrlFilters-hi-2d3DW.js";import{t as ke}from"./plugins-views-DraK4xz0.js";import{o as v,t as y}from"./runtime-metadata-persistence-afAW-MeD.js";var b=e(a(),1),x=i(),S=new Set([`select`,`multiselect`,`radio`,`enum`,`boolean`]),C=4,w={"=":`eq`,...Object.fromEntries(Object.entries(_).map(([e,t])=>[t,e]))};function T(e){let t=[];for(let[n,r,i]of e){let e={field:n,operator:s(w[r]??r)};i!==void 0&&(e.value=i);let a=c.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:i}){let{appName:a,objectName:s}=r(),{t:c}=se(),{objectLabel:_,fieldLabel:w}=oe(),T=t(),[E,D]=n(),{can:O,getObjectApiOperations:k}=l(),{canRead:A}=te(s??``),{user:j,activeOrganization:M}=o(),{isAdmin:N}=ee(),P=g(),F=ve()===`group`,I=pe(),[je,L]=b.useState(!1),R=b.useMemo(()=>(i||[]).find(e=>e.name===s),[i,s]),[Me]=b.useState(()=>Se(new URLSearchParams(window.location.search))),Ne=b.useCallback(e=>{D(t=>be(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=Ee(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 ie(t,{currentUserId:j?.id??null,currentOrgId:M?.id??null})},[z,A,j?.id,M?.id]),Pe=b.useMemo(()=>Oe(B),[B]),Fe=b.useCallback(e=>{D(t=>De(new URLSearchParams(t),e))},[D]),V=b.useMemo(()=>xe(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}/${s}/record/${encodeURIComponent(String(e))}`,[a,s]),W=ae({navigation:{mode:`drawer`},objectName:s??``,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(()=>ge(R),[R]),q=b.useMemo(()=>ye(R),[R]),J=b.useMemo(()=>_e(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=v(s??``,n,{name:t.name,label:t.label}),i=await y(`view`,r.name,r,{metadataClient:P,dataSource:e,objectName:s});if(i){let e=I?``:`?${fe}=${me}`;T(`../view/${i}${e}`,{relative:`path`})}}catch(e){console.error(`[ObjectDataPage] Failed to save view:`,e)}},[V,B,P,e,T,s,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=m($?.visibleWhen??!0,null,{fallback:!1,warnOnError:!0,label:`builtin:create:visibleWhen`}),Be=m($?.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)(we,{title:(0,x.jsxs)(`span`,{className:`inline-flex items-center gap-2`,children:[(0,x.jsx)(`span`,{className:`truncate`,children:_(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:c(`console.objectData.badge`,{defaultValue:`Data`})})]}),subtitle:c(`console.objectData.description`,{defaultValue:`URL-defined data slice — not bound to any saved view.`}),icon:b.createElement(Ce(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)(le,{className:`h-4 w-4`}),(0,x.jsx)(`span`,{className:`hidden sm:inline`,children:c(`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:c(`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:c(`console.objectData.filteredBy`,{defaultValue:`Filtered by`})}),Pe.map(({field:e,text:t,textKey:n})=>(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:n?c(n):t}),(0,x.jsx)(`button`,{type:`button`,onClick:()=>Fe(e),className:`ml-0.5 rounded-full hover:bg-muted p-0.5`,"aria-label":c(`console.objectData.removeFilter`,{defaultValue:`Remove filter {{field}}`,field:e}),"data-testid":`object-data-remove-filter-${e}`,children:(0,x.jsx)(de,{className:`h-3 w-3`})})]},e))]}),(0,x.jsx)(`div`,{className:`flex-1 min-h-0 overflow-auto`,children:X&&(0,x.jsx)(ke,{schema:X,dataSource:e,userFilterSelections:Me,onUserFilterSelectionsChange:Ne,onRowClick:Ie})}),W.isOverlay&&(0,x.jsx)(ne,{...W,setIsOpen:e=>{e||Le()},title:_(R),children:t=>(0,x.jsx)(he,{objectNameOverride:R.name,recordIdOverride:String(t?.id??t?._id??G??``),embedded:!0,dataSource:e,objects:i,onEdit:()=>{}})}),N&&(0,x.jsx)(Te,{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)(h,{className:`h-6 w-6 text-muted-foreground`})}),(0,x.jsx)(u,{children:c(`console.objectData.noAccessTitle`,{defaultValue:`Access denied`})}),(0,x.jsx)(d,{children:c(`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)(ce,{className:`h-6 w-6 text-muted-foreground`})}),(0,x.jsx)(u,{children:c(`console.objectView.objectNotFound`)}),(0,x.jsx)(d,{children:c(`console.objectView.objectNotFoundDescription`,{objectName:s})})]})})}export{E as ObjectDataPage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{d as t,m as n,p as r,t as i,u as a,v as o}from"./vendor-react-BggL7APJ.js";import{f as s}from"./infrastructure-BHSync5f.js";import{Ot as c,Tt as l,_t as u,wt as d}from"./ui-components-BTB1NkUW.js";import{G as f,K as p,ht as m}from"./framework-DcWkeiND.js";import{w as h}from"./i18n-runtime-CTgAQF4N.js";import{t as g}from"./vendor-icon-file-text-7BKAVNof.js";import{t as _}from"./vendor-icon-pencil-CMubUBjW.js";import{a as v}from"./ExpressionProvider-DZfMwyMs.js";import{w as y}from"./RecordDetailView-DQKydU7X.js";import{t as b}from"./preferLocal-DEJV3KIq.js";import{t as x}from"./InterfaceListPage-BdECC_i3.js";import{n as S,t as C}from"./MetadataInspector-BWxLkr0O.js";var w=e(o(),1),T=i();function E(){let{t:e}=h(),{pageName:i}=r(),[o]=n(),{showDebug:E}=S(),D=t(),O=a(),{isAdmin:k}=s(),{pages:A,objects:j,getTypeStatus:M}=p(),{app:N}=v(),P=f(),[F,I]=(0,w.useState)(0),L=b(A,i,N?._packageId);if(!L){let t=M?.(`page`);return t===`idle`||t===`loading`?(0,T.jsx)(`div`,{className:`h-full flex items-center justify-center p-8`,"data-testid":`page-loading`,children:(0,T.jsx)(u,{className:`h-5 w-5 text-muted-foreground`})}):(0,T.jsx)(`div`,{className:`h-full flex items-center justify-center p-8`,children:(0,T.jsxs)(d,{children:[(0,T.jsx)(`div`,{className:`mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-muted`,children:(0,T.jsx)(g,{className:`h-6 w-6 text-muted-foreground`})}),(0,T.jsx)(c,{children:e(`empty.pageNotFound`)}),(0,T.jsx)(l,{children:e(`empty.pageNotFoundDescription`,{name:i})})]})})}let R=Object.fromEntries(o.entries()),z=O.pathname.match(/\/apps\/([^/]+)/)?.[1],B=k&&!!z&&!!i;return(0,T.jsx)(y,{dataSource:P,objects:j,onRefresh:()=>I(e=>e+1),children:(0,T.jsxs)(`div`,{className:`flex flex-row h-full w-full overflow-hidden relative`,children:[(0,T.jsxs)(`div`,{className:`flex-1 overflow-auto h-full relative`,children:[B&&(0,T.jsx)(`button`,{type:`button`,onClick:()=>{B&&D(`/apps/${z}/metadata/page/${encodeURIComponent(i)}`)},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,T.jsx)(_,{className:`h-3.5 w-3.5`})}),L.interfaceConfig?.source?(0,T.jsx)(x,{page:L,reserveEditAffordance:B},F):(0,T.jsx)(m,{schema:{...L,type:L.type||`page`,pageType:L.type,context:{params:R,refreshKey:F}}},F)]}),(0,T.jsx)(C,{open:E,sections:[{title:`Page Configuration`,data:L}]})]})})}export{E as PageView};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{t,v as n}from"./vendor-react-BggL7APJ.js";import{o as r,p as i}from"./infrastructure-BHSync5f.js";import{$ as a,Br as o,Hr as s,Ti as c,Ur as l,Vr as u,Zn as d,ai as f,ii as p,ni as m,oi as h,qn as g,ri as _,si as v,vi as y,zr as b}from"./ui-components-BTB1NkUW.js";import{G as x,a as S,o as C}from"./framework-DcWkeiND.js";import{w}from"./i18n-runtime-CTgAQF4N.js";import{t as T}from"./vendor-icon-circle-alert-D1XTr_X9.js";import{t as E}from"./vendor-icon-circle-check-Bq3OcFQN.js";import{t as D}from"./vendor-icon-globe-BaOanPH5.js";import{t as O}from"./vendor-icon-loader-circle-D3PsuVaD.js";import{t as k}from"./vendor-icon-lock-B_psRnly.js";import{t as A}from"./vendor-icon-upload-BZ3rElxe.js";import{t as j}from"./vendor-icon-user-IWwlLQut.js";import{t as M}from"./vendor-icon-x-CcLtgRNL.js";var N=e(n(),1),P=t();function F(){let{t:e}=w(),{user:t,updateUser:n,isLoading:a,changePassword:x,setInitialPassword:S,hasLocalPassword:C}=i(),{upload:D}=c(),[k,F]=(0,N.useState)(t?.name??``),[I,L]=(0,N.useState)(!1),[B,V]=(0,N.useState)(null),H=(0,N.useRef)(null),[U,W]=(0,N.useState)(!1),[G,K]=(0,N.useState)(null);return(0,N.useEffect)(()=>{F(t?.name??``)},[t?.name]),t?(0,P.jsxs)(`div`,{className:`flex flex-col gap-4 sm:gap-6 p-4 sm:p-6 max-w-2xl`,children:[(0,P.jsxs)(`div`,{className:`min-w-0`,children:[(0,P.jsx)(`h1`,{className:`text-xl sm:text-2xl font-bold tracking-tight`,children:e(`profile.title`,{defaultValue:`Profile`})}),(0,P.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1`,children:e(`profile.subtitle`,{defaultValue:`Manage your account settings`})})]}),(0,P.jsx)(b,{children:(0,P.jsxs)(o,{className:`pt-6`,children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,P.jsxs)(_,{className:`h-16 w-16`,children:[(0,P.jsx)(f,{src:t.image??void 0,alt:t.name??`User`}),(0,P.jsx)(p,{className:`text-lg bg-primary text-primary-foreground`,children:r(t)})]}),(0,P.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,P.jsx)(`p`,{className:`text-lg font-semibold truncate`,children:t.name??`User`}),(0,P.jsx)(`p`,{className:`text-sm text-muted-foreground truncate`,children:t.email}),(0,P.jsx)(m,{variant:`secondary`,className:`mt-1`,children:t.role??`member`})]}),(0,P.jsxs)(`div`,{className:`flex flex-col gap-2 shrink-0`,children:[(0,P.jsx)(`input`,{ref:H,type:`file`,accept:`image/*`,className:`hidden`,onChange:async e=>{let t=e.target.files?.[0];if(H.current&&(H.current.value=``),t){W(!0),K(null);try{let e=await D(t);await n({image:e.url})}catch(e){K(e instanceof Error?e.message:String(e))}finally{W(!1)}}},"data-testid":`profile-avatar-file`}),(0,P.jsxs)(y,{type:`button`,variant:`outline`,size:`sm`,disabled:U,onClick:()=>H.current?.click(),"data-testid":`profile-avatar-upload-btn`,children:[U?(0,P.jsx)(O,{className:`mr-2 h-4 w-4 animate-spin`}):(0,P.jsx)(A,{className:`mr-2 h-4 w-4`}),t.image?e(`profile.avatar.replace`,{defaultValue:`Replace`}):e(`profile.avatar.upload`,{defaultValue:`Upload`})]}),t.image&&(0,P.jsxs)(y,{type:`button`,variant:`ghost`,size:`sm`,disabled:U,onClick:async()=>{W(!0),K(null);try{await n({image:null})}catch(e){K(e instanceof Error?e.message:String(e))}finally{W(!1)}},"data-testid":`profile-avatar-remove-btn`,children:[(0,P.jsx)(M,{className:`mr-2 h-4 w-4`}),e(`profile.avatar.remove`,{defaultValue:`Remove`})]})]})]}),G&&(0,P.jsxs)(h,{variant:`destructive`,className:`mt-4`,children:[(0,P.jsx)(T,{className:`h-4 w-4`}),(0,P.jsx)(v,{children:G})]})]})}),(0,P.jsxs)(b,{children:[(0,P.jsxs)(s,{children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,P.jsx)(j,{className:`h-4 w-4 text-muted-foreground`}),(0,P.jsx)(l,{className:`text-base sm:text-lg`,children:e(`profile.info.title`,{defaultValue:`Personal Information`})})]}),(0,P.jsx)(u,{children:e(`profile.info.description`,{defaultValue:`Update your name and view account details`})})]}),(0,P.jsx)(o,{children:(0,P.jsxs)(`form`,{onSubmit:async e=>{e.preventDefault(),V(null),L(!1);try{await n({name:k}),L(!0)}catch(e){V(e instanceof Error?e.message:String(e))}},className:`space-y-4`,children:[B&&(0,P.jsxs)(h,{variant:`destructive`,children:[(0,P.jsx)(T,{className:`h-4 w-4`}),(0,P.jsx)(v,{children:B})]}),I&&(0,P.jsxs)(h,{children:[(0,P.jsx)(E,{className:`h-4 w-4 text-green-600`}),(0,P.jsx)(v,{className:`text-green-800 dark:text-green-400`,children:e(`profile.info.saved`,{defaultValue:`Profile updated successfully.`})})]}),(0,P.jsxs)(`div`,{className:`space-y-2`,children:[(0,P.jsx)(d,{htmlFor:`profile-name`,children:e(`profile.info.name`,{defaultValue:`Name`})}),(0,P.jsx)(g,{id:`profile-name`,type:`text`,value:k,onChange:e=>F(e.target.value),required:!0,"aria-required":`true`,disabled:a})]}),(0,P.jsxs)(`div`,{className:`space-y-2`,children:[(0,P.jsx)(d,{htmlFor:`profile-email`,children:e(`profile.info.email`,{defaultValue:`Email`})}),(0,P.jsx)(g,{id:`profile-email`,type:`email`,value:t.email,disabled:!0,className:`bg-muted text-muted-foreground`}),(0,P.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`profile.info.emailImmutable`,{defaultValue:`Email cannot be changed.`})})]}),(0,P.jsxs)(`div`,{className:`space-y-2`,children:[(0,P.jsx)(d,{children:e(`profile.info.role`,{defaultValue:`Role`})}),(0,P.jsx)(g,{type:`text`,value:t.role??`member`,disabled:!0,className:`bg-muted text-muted-foreground`})]}),(0,P.jsx)(y,{type:`submit`,disabled:a,className:`w-full sm:w-auto`,children:a?e(`profile.saving`,{defaultValue:`Saving…`}):e(`profile.info.save`,{defaultValue:`Save Changes`})})]})})]}),(0,P.jsx)(R,{userId:t.id}),(0,P.jsx)(z,{changePassword:x,setInitialPassword:S,hasLocalPassword:C})]}):null}function I(e){try{let t=new Intl.DisplayNames([e],{type:`language`}).of(e);return!t||t===e?e:t.charAt(0).toLocaleUpperCase(e)+t.slice(1)}catch{return e}}var L=``;function R({userId:e}){let{t,offerableLanguages:n}=w(),r=x(),{checkField:i}=a(),[c,f]=(0,N.useState)(null),[p,m]=(0,N.useState)(L),[g,_]=(0,N.useState)(!1),[O,k]=(0,N.useState)(!1),[A,j]=(0,N.useState)(!1),[M,F]=(0,N.useState)(null),[R,z]=(0,N.useState)(null);(0,N.useEffect)(()=>{if(!r||!e)return;let t=!1;return r.findOne(`sys_user`,e).then(e=>{if(t)return;let n=e?.locale,r=typeof n==`string`&&n.length>0?n:L;f(r),m(r),_(!0)}).catch(e=>{t||console.warn(`[profile] Could not read your language preference:`,e)}),()=>{t=!0}},[r,e]);let B=(0,N.useMemo)(()=>{let e=n??[];return c&&c.length>0&&!e.includes(c)?[c,...e]:[...e]},[n,c]);if(!r||!g||n===null)return null;let V=i(`sys_user`,`locale`,`write`),H=p!==(c??L);return(0,P.jsxs)(b,{children:[(0,P.jsxs)(s,{children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,P.jsx)(D,{className:`h-4 w-4 text-muted-foreground`}),(0,P.jsx)(l,{className:`text-base sm:text-lg`,children:t(`profile.language.title`,{defaultValue:`Language`})})]}),(0,P.jsx)(u,{children:t(`profile.language.description`,{defaultValue:`The language used for notifications and messages sent to you. The interface language is chosen separately, from the globe menu.`})})]}),(0,P.jsx)(o,{children:(0,P.jsxs)(`form`,{onSubmit:async t=>{t.preventDefault(),F(null),z(null),j(!1),k(!0);try{await r.update(`sys_user`,e,{locale:p===L?null:p}),f(p),j(!0)}catch(e){let t=S(e)?.find(e=>e.field===`locale`);t&&t.message?z(t.message):F(C(e)??(e instanceof Error?e.message:String(e)))}finally{k(!1)}},className:`space-y-4 max-w-md`,children:[M&&(0,P.jsxs)(h,{variant:`destructive`,children:[(0,P.jsx)(T,{className:`h-4 w-4`}),(0,P.jsx)(v,{children:M})]}),A&&(0,P.jsxs)(h,{children:[(0,P.jsx)(E,{className:`h-4 w-4 text-green-600`}),(0,P.jsx)(v,{className:`text-green-800 dark:text-green-400`,children:t(`profile.language.saved`,{defaultValue:`Language preference updated.`})})]}),(0,P.jsxs)(`div`,{className:`space-y-2`,children:[(0,P.jsx)(d,{htmlFor:`profile-language`,children:t(`profile.language.label`,{defaultValue:`Preferred language`})}),(0,P.jsxs)(`select`,{id:`profile-language`,"data-testid":`profile-language-select`,value:p,onChange:e=>{m(e.target.value),z(null),j(!1)},disabled:!V||O,"aria-invalid":R?!0:void 0,"aria-describedby":R?`profile-language-error`:void 0,className:`flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50`,children:[(0,P.jsx)(`option`,{value:L,children:t(`profile.language.systemDefault`,{defaultValue:`Use the deployment default`})}),B.map(e=>(0,P.jsx)(`option`,{value:e,children:I(e)},e))]}),R&&(0,P.jsx)(`p`,{id:`profile-language-error`,className:`text-sm text-destructive`,children:R}),!V&&(0,P.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:t(`profile.language.readOnly`,{defaultValue:`Your administrator manages the language for your account.`})})]}),V&&(0,P.jsx)(y,{type:`submit`,disabled:O||!H,className:`w-full sm:w-auto`,children:O?t(`profile.saving`,{defaultValue:`Saving…`}):t(`profile.language.save`,{defaultValue:`Save`})})]})})]})}function z({changePassword:e,setInitialPassword:t,hasLocalPassword:n,highlight:r,onPasswordSet:i}){let{t:a}=w(),[c,f]=(0,N.useState)(null),[p,m]=(0,N.useState)(``),[_,x]=(0,N.useState)(``),[S,C]=(0,N.useState)(``),[D,O]=(0,N.useState)(!1),[A,j]=(0,N.useState)(null),[M,F]=(0,N.useState)(null);(0,N.useEffect)(()=>{let e=!1;return n().then(t=>{e||f(t)}).catch(()=>{e||f(!1)}),()=>{e=!0}},[n]);let I=()=>{m(``),x(``),C(``)},L=async n=>{if(n.preventDefault(),j(null),F(null),_.length<8){j(a(`profile.password.tooShort`,{defaultValue:`Password must be at least 8 characters`}));return}if(_!==S){j(a(`profile.password.mismatch`,{defaultValue:`Passwords do not match`}));return}O(!0);try{if(c){if(!p){j(a(`profile.password.enterCurrent`,{defaultValue:`Enter your current password`})),O(!1);return}await e(p,_),F(a(`profile.password.changed`,{defaultValue:`Password changed.`}))}else await t(_),F(a(`profile.password.localSet`,{defaultValue:`Local password set. You can now sign in with email and password on this environment.`})),f(!0),i?.();I()}catch(e){j(e instanceof Error?e.message:String(e))}finally{O(!1)}},R=c===null;return(0,P.jsxs)(b,{className:r?`ring-2 ring-amber-300 dark:ring-amber-700`:void 0,children:[(0,P.jsxs)(s,{children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,P.jsx)(k,{className:`h-4 w-4 text-muted-foreground`}),(0,P.jsx)(l,{className:`text-base sm:text-lg`,children:c?a(`profile.password.changeTitle`,{defaultValue:`Change Password`}):a(`profile.password.setTitle`,{defaultValue:`Set Local Password`})})]}),(0,P.jsx)(u,{children:c?a(`profile.password.changeDescription`,{defaultValue:`Update the password you use to sign in to this environment.`}):a(`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,P.jsx)(o,{children:(0,P.jsxs)(`form`,{onSubmit:L,className:`space-y-4 max-w-md`,children:[c&&(0,P.jsxs)(`div`,{className:`space-y-2`,children:[(0,P.jsx)(d,{htmlFor:`current-password`,children:a(`profile.password.current`,{defaultValue:`Current password`})}),(0,P.jsx)(g,{id:`current-password`,type:`password`,autoComplete:`current-password`,value:p,onChange:e=>m(e.target.value),disabled:D||R,required:!0})]}),(0,P.jsxs)(`div`,{className:`space-y-2`,children:[(0,P.jsx)(d,{htmlFor:`new-password`,children:c?a(`profile.password.new`,{defaultValue:`New password`}):a(`profile.password.password`,{defaultValue:`Password`})}),(0,P.jsx)(g,{id:`new-password`,type:`password`,autoComplete:`new-password`,value:_,onChange:e=>x(e.target.value),disabled:D||R,minLength:8,required:!0})]}),(0,P.jsxs)(`div`,{className:`space-y-2`,children:[(0,P.jsx)(d,{htmlFor:`confirm-password`,children:a(`profile.password.confirm`,{defaultValue:`Confirm password`})}),(0,P.jsx)(g,{id:`confirm-password`,type:`password`,autoComplete:`new-password`,value:S,onChange:e=>C(e.target.value),disabled:D||R,minLength:8,required:!0})]}),A&&(0,P.jsxs)(h,{variant:`destructive`,children:[(0,P.jsx)(T,{className:`h-4 w-4`}),(0,P.jsx)(v,{children:A})]}),M&&(0,P.jsxs)(h,{children:[(0,P.jsx)(E,{className:`h-4 w-4`}),(0,P.jsx)(v,{children:M})]}),(0,P.jsx)(y,{type:`submit`,disabled:D||R,className:`w-full sm:w-auto`,children:D?a(`profile.saving`,{defaultValue:`Saving…`}):c?a(`profile.password.changeAction`,{defaultValue:`Change password`}):a(`profile.password.setAction`,{defaultValue:`Set password`})})]})})]})}export{F as ProfilePage};
|