@objectstack/console 17.6.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.
Files changed (277) hide show
  1. package/CHANGELOG.md +428 -0
  2. package/dist/.objectstack-injection.json +2 -2
  3. package/dist/.objectui-sha +1 -1
  4. package/dist/assets/{ActionResultDialog-4kHDGnT3.js → ActionResultDialog-ChYnuROr.js} +3 -3
  5. package/dist/assets/{AiPendingActionsPage-JjOddm0h.js → AiPendingActionsPage-Dh3-i4BB.js} +1 -1
  6. package/dist/assets/{ApiConsolePage-BgS26lbp.js → ApiConsolePage-CKYEqlMs.js} +1 -1
  7. package/dist/assets/{AppDocsIndex-BDoH5ECM.js → AppDocsIndex-B5Tky2xg.js} +1 -1
  8. package/dist/assets/{AppManagementPage-CCgKmNTj.js → AppManagementPage-ZwyvnHpM.js} +1 -1
  9. package/dist/assets/ApprovalsInboxPage-DD4fe0Em.js +1 -0
  10. package/dist/assets/AuditLogPage-Sed6iMqP.js +1 -0
  11. package/dist/assets/BookPage-DYjUsQIc.js +1 -0
  12. package/dist/assets/{ComponentNavView-B5g9c6fx.js → ComponentNavView-DrlxM4SY.js} +1 -1
  13. package/dist/assets/CreateViewDialog-Cp72x_O7.js +1 -0
  14. package/dist/assets/{DashboardView-BOcovpPd.js → DashboardView-juicRxcP.js} +1 -1
  15. package/dist/assets/DocPage-CxJaQ-pC.js +1 -0
  16. package/dist/assets/{DocsIndex-DwW2QsYY.js → DocsIndex-LALVtIVR.js} +1 -1
  17. package/dist/assets/{DocsLayout-D63StSgd.js → DocsLayout-BAwlJQQf.js} +1 -1
  18. package/dist/assets/{DocsSlug-CP9fcabi.js → DocsSlug-CkF1E-Zs.js} +1 -1
  19. package/dist/assets/ExpressionProvider-Dr0e99r1.js +1 -0
  20. package/dist/assets/FlowRunsPage-R3W3t2s4.js +1 -0
  21. package/dist/assets/{IntegrationsPage-DvG0x0Nb.js → IntegrationsPage-DIuFLEbF.js} +2 -2
  22. package/dist/assets/InterfaceListPage-BfoCldGu.js +1 -0
  23. package/dist/assets/{MarketplaceInstalledPage-B7KETQG2.js → MarketplaceInstalledPage-DyjhcUNB.js} +1 -1
  24. package/dist/assets/MarketplacePackagePage-BbO27Pgs.js +4 -0
  25. package/dist/assets/MarketplacePage-DO2_b64U.js +1 -0
  26. package/dist/assets/{MetadataInspector-EP0I3-Kq.js → MetadataInspector-BQyu9pOE.js} +1 -1
  27. package/dist/assets/ObjectDataPage-DIY-yefK.js +1 -0
  28. package/dist/assets/PageView-C-qWu3Jw.js +1 -0
  29. package/dist/assets/ProfilePage-Qp8DL8CF.js +1 -0
  30. package/dist/assets/{PublicFormsPage-D3uCTR-8.js → PublicFormsPage-D3AT2EH9.js} +1 -1
  31. package/dist/assets/RecordDetailView-B3XBEgk2.js +3 -0
  32. package/dist/assets/{RecordFormPage-kiJI-ieF.js → RecordFormPage-CcoZfUJ3.js} +1 -1
  33. package/dist/assets/ReportDefaultInspector-DVcWM6sh.js +1 -0
  34. package/dist/assets/ReportView-pJCFptzp.js +2 -0
  35. package/dist/assets/RuntimeDraftBar-DObTyFu2.js +1 -0
  36. package/dist/assets/SchemaForm-BWSWYMLE.js +3 -0
  37. package/dist/assets/SearchResultsPage-ChVIzFob.js +1 -0
  38. package/dist/assets/{SettingsHub-DP1mrzEN.js → SettingsHub-CPP9FDe8.js} +1 -1
  39. package/dist/assets/{SettingsView-u7mc6pcc.js → SettingsView-CrHAROu9.js} +1 -1
  40. package/dist/assets/{SkeletonDetail-DIwlbHTr.js → SkeletonDetail-CP-35B8x.js} +1 -1
  41. package/dist/assets/{af-DPUgkQl0.js → af-Bhbso4Pg.js} +1 -1
  42. package/dist/assets/ai-BAPiCsNk.js +3 -0
  43. package/dist/assets/app-shell-eager-leaves-D9tgfJOe.js +1 -0
  44. package/dist/assets/{ar-B-6GTIRU.js → ar-DG8TAFtm.js} +1 -1
  45. package/dist/assets/{ar-DZ-wEl298ti.js → ar-DZ-BtSien-d.js} +1 -1
  46. package/dist/assets/{ar-EG-YBT90_S0.js → ar-EG-DpXC0zoY.js} +1 -1
  47. package/dist/assets/{ar-MA-3uT-EYh6.js → ar-MA-D1qVJLyE.js} +1 -1
  48. package/dist/assets/{ar-SA-SiQsjhhc.js → ar-SA-BIYKNgv8.js} +1 -1
  49. package/dist/assets/{ar-TN-CfzXjKzS.js → ar-TN-mUR5Mq3s.js} +1 -1
  50. package/dist/assets/{az-BqAfcNza.js → az-B7IqwHGK.js} +1 -1
  51. package/dist/assets/{be-CQgWXa9_.js → be-CnZyPaSX.js} +1 -1
  52. package/dist/assets/{be-tarask-BmNg0Sir.js → be-tarask--uMMCC7l.js} +1 -1
  53. package/dist/assets/{bg-D3evgRuS.js → bg-CZwuirtY.js} +1 -1
  54. package/dist/assets/{bn-uItkARwm.js → bn-BbOX0r-z.js} +1 -1
  55. package/dist/assets/{bs-DueReOpO.js → bs-B5W75cYR.js} +1 -1
  56. package/dist/assets/{ca-Cr3AHktR.js → ca-Be69LdIM.js} +1 -1
  57. package/dist/assets/{ckb-CTi5BET7.js → ckb-B-nKM1Vn.js} +1 -1
  58. package/dist/assets/{createDerive-CjN1i5vn.js → createDerive-CynsXU-B.js} +1 -1
  59. package/dist/assets/{cs-43mFX9jr.js → cs-qHngxH7l.js} +1 -1
  60. package/dist/assets/{cy-BBSkg3F8.js → cy-DscO2Pgf.js} +1 -1
  61. package/dist/assets/{da-C5oA5qcs.js → da-vibkaLMF.js} +1 -1
  62. package/dist/assets/data-adapter-BDsrq0TX.js +2 -0
  63. package/dist/assets/{de-AT-CApxwJzu.js → de-AT--JneEuBw.js} +1 -1
  64. package/dist/assets/{de-CPtbLlAf.js → de-BCT78XYW.js} +1 -1
  65. package/dist/assets/default-inspector-registry-Dktr6x_q.js +1 -0
  66. package/dist/assets/dist-yh3dYtHt.js +14 -0
  67. package/dist/assets/drillUrlFilters-N0RngQg6.js +1 -0
  68. package/dist/assets/{el-Dto2xBQU.js → el-Cl0y9T2b.js} +1 -1
  69. package/dist/assets/en-AU-By42tTB7.js +1 -0
  70. package/dist/assets/{en-CA-DKuJPN1U.js → en-CA-BqEEoj-Y.js} +1 -1
  71. package/dist/assets/en-GB-Cx8B9nkB.js +1 -0
  72. package/dist/assets/en-IE-CX9nv6uO.js +1 -0
  73. package/dist/assets/en-IN-ByGSBHa4.js +1 -0
  74. package/dist/assets/en-NZ-BPMwa2ZN.js +1 -0
  75. package/dist/assets/en-ZA-lj_N4R6c.js +1 -0
  76. package/dist/assets/{eo-BL8JXIWd.js → eo-oOXROuhF.js} +1 -1
  77. package/dist/assets/{es-BnoaNxsu.js → es-EudscwjH.js} +1 -1
  78. package/dist/assets/{et-tPYLNenO.js → et-CB-5LLh6.js} +1 -1
  79. package/dist/assets/{eu-CUBG6bT0.js → eu-B4-hcseX.js} +1 -1
  80. package/dist/assets/{fa-IR-Rr2d9xSs.js → fa-IR-CogavcMJ.js} +1 -1
  81. package/dist/assets/{fi-B0NVIZsV.js → fi-CIBE0mYa.js} +1 -1
  82. package/dist/assets/{formatLong-1-gt9bpo.js → formatLong-qqgm7lV1.js} +1 -1
  83. package/dist/assets/{fr-CA-CBDvLXFg.js → fr-CA-BugXMutW.js} +1 -1
  84. package/dist/assets/{fr-BbhHek8e.js → fr-CDReXYWW.js} +1 -1
  85. package/dist/assets/{fr-CH-WPNmwPn7.js → fr-CH-fiTiB6X1.js} +1 -1
  86. package/dist/assets/framework-CAuH4h0L.js +35 -0
  87. package/dist/assets/{fy-DvOBbvEF.js → fy-t_GzIAg_.js} +1 -1
  88. package/dist/assets/{gd-BQPiTPX5.js → gd-CSncIxtN.js} +1 -1
  89. package/dist/assets/getIcon-BDkBRQFw.js +1 -0
  90. package/dist/assets/{gl-BJCXK8uO.js → gl-_138Mj2S.js} +1 -1
  91. package/dist/assets/{gu-CctPRz3V.js → gu-COfH-YUT.js} +1 -1
  92. package/dist/assets/{he-CVFMk6p2.js → he-BXL4lOKY.js} +1 -1
  93. package/dist/assets/{hi-Ba30-RwS.js → hi-kXuYI0TJ.js} +1 -1
  94. package/dist/assets/{highlighted-body-OFNGDK62-BQ57IrBV.js → highlighted-body-OFNGDK62-CK7x7Gzm.js} +1 -1
  95. package/dist/assets/{hr-BZUqTbZs.js → hr-DAOsQWzI.js} +1 -1
  96. package/dist/assets/{ht-BLe05tPx.js → ht-Ch8SKz8p.js} +1 -1
  97. package/dist/assets/{hu-2CQ_Mkww.js → hu-q6W_rWPT.js} +1 -1
  98. package/dist/assets/{hy-CclcPG4H.js → hy-0M8OmwnM.js} +1 -1
  99. package/dist/assets/{i18n-BnUsCaSC.js → i18n-DTfZonAM.js} +3 -3
  100. package/dist/assets/i18n-locale-ar-O6rs-Cir.js +4 -0
  101. package/dist/assets/i18n-locale-de-CMc1jk4a.js +4 -0
  102. package/dist/assets/i18n-locale-en-CbRQO81h.js +4 -0
  103. package/dist/assets/i18n-locale-es-t47nyoCX.js +4 -0
  104. package/dist/assets/i18n-locale-fr-E425EqJM.js +4 -0
  105. package/dist/assets/i18n-locale-ja-y_fk77fz.js +4 -0
  106. package/dist/assets/i18n-locale-ko-CdnY2uCg.js +4 -0
  107. package/dist/assets/i18n-locale-pt-BaUOXS6y.js +4 -0
  108. package/dist/assets/i18n-locale-ru-pFlhX9wg.js +4 -0
  109. package/dist/assets/i18n-locale-zh-Dkj4ROTN.js +4 -0
  110. package/dist/assets/i18n-runtime-CdWyaiOD.js +1 -0
  111. package/dist/assets/{id-6JLB8s-f.js → id-BM_H1_jv.js} +1 -1
  112. package/dist/assets/index-ocmkyCt6.js +19 -0
  113. package/dist/assets/index-v2Ijn9Gr.css +2 -0
  114. package/dist/assets/{infrastructure-Cc34lEqb.js → infrastructure-CSnL6ntj.js} +2 -2
  115. package/dist/assets/integration-7NqwVHuJ.js +1 -0
  116. package/dist/assets/{is-to0CWzm1.js → is-B_7jXZfS.js} +1 -1
  117. package/dist/assets/isSameWeek-D90tBsli.js +1 -0
  118. package/dist/assets/{it-ea0B8Ujp.js → it-CBM0J9cD.js} +1 -1
  119. package/dist/assets/{it-CH-DhdfjP5Z.js → it-CH-BQltCNsR.js} +1 -1
  120. package/dist/assets/{ja-B1bzkgDW.js → ja-DBjnsx21.js} +1 -1
  121. package/dist/assets/{ja-Hira-CMrY5hXO.js → ja-Hira-BZfSmj1i.js} +1 -1
  122. package/dist/assets/{ka-DKSXLnXP.js → ka-HwpuKgUY.js} +1 -1
  123. package/dist/assets/{kk-DHwMv8Dn.js → kk-DLKA9paj.js} +1 -1
  124. package/dist/assets/{km-tpLG1xNr.js → km-BU5kermq.js} +1 -1
  125. package/dist/assets/{kn-MLreVnHA.js → kn-BNFqbCoi.js} +1 -1
  126. package/dist/assets/{ko-CI0DBazn.js → ko-D8n4uMqQ.js} +1 -1
  127. package/dist/assets/{lb-CmL572Xe.js → lb-B1empQ7m.js} +1 -1
  128. package/dist/assets/{lt-DRtUOLdw.js → lt-gMukpK3G.js} +1 -1
  129. package/dist/assets/{lv-COSHgkOP.js → lv-D2O5AnsZ.js} +1 -1
  130. package/dist/assets/{match-BQoOW8Cj.js → match-BTF6WqJh.js} +1 -1
  131. package/dist/assets/{match-B-ergJQb.js → match-Cyum2eeW.js} +1 -1
  132. package/dist/assets/{match-dfBS0YSQ.js → match-ScHH8kYk.js} +1 -1
  133. package/dist/assets/mermaid-GHXKKRXX-D4H6EVJQ.js +1 -0
  134. package/dist/assets/metadata-admin-CEhVmXFv.js +9 -0
  135. package/dist/assets/{mk-B0IH_YL_.js → mk-D-Zl0xVN.js} +1 -1
  136. package/dist/assets/{mn-P-QdQ2n3.js → mn-jJbTslgD.js} +1 -1
  137. package/dist/assets/{ms-CtyEOINy.js → ms-CUuJHLA4.js} +1 -1
  138. package/dist/assets/{mt-DfuZ2HRm.js → mt-yIcbfxKY.js} +1 -1
  139. package/dist/assets/{nb-2Hp-5Tnt.js → nb-D9WNypoj.js} +1 -1
  140. package/dist/assets/{nl-BE-mmxbfNoR.js → nl-BE-B1vKiw2h.js} +1 -1
  141. package/dist/assets/{nl-CZ_nLREz.js → nl-DC7b5e90.js} +1 -1
  142. package/dist/assets/{nn-ccWhYsNa.js → nn-uP4yJ9s0.js} +1 -1
  143. package/dist/assets/{oc-z504BFRV.js → oc-DHTqadJI.js} +1 -1
  144. package/dist/assets/{pl-DeQ7ASt-.js → pl-Bxnnizf5.js} +1 -1
  145. package/dist/assets/plugin-calendar-b7C35ANT.js +1 -0
  146. package/dist/assets/plugin-charts-b-yVtmdI.js +7 -0
  147. package/dist/assets/{plugin-chatbot-Ck47EhDX.js → plugin-chatbot-D1KW_oIO.js} +8 -8
  148. package/dist/assets/plugin-dashboard-DTkPoPEb.js +6 -0
  149. package/dist/assets/plugin-form-UIRm-FpQ.js +1 -0
  150. package/dist/assets/plugin-gantt-9dtc8zzX.js +63 -0
  151. package/dist/assets/plugin-grid-Cp4RKtMJ.js +10 -0
  152. package/dist/assets/plugin-kanban-B2JOPZIJ.js +1 -0
  153. package/dist/assets/plugin-map-CBJcVJYk.js +1 -0
  154. package/dist/assets/{plugin-markdown-BOkHcir_.js → plugin-markdown-CNlDzqP-.js} +1 -1
  155. package/dist/assets/plugin-report-IZzgQb-Q.js +59 -0
  156. package/dist/assets/plugin-timeline-DsmtjcJ3.js +1 -0
  157. package/dist/assets/plugin-tree-DTRPBdhe.js +1 -0
  158. package/dist/assets/plugin-view-D9ixsNDG.js +1 -0
  159. package/dist/assets/plugins-views-CnvkdSJK.js +3 -0
  160. package/dist/assets/{pt-BR-D80_lPYF.js → pt-BR-D416seHT.js} +1 -1
  161. package/dist/assets/{pt-CJJ1RmXd.js → pt-DwHBy9_c.js} +1 -1
  162. package/dist/assets/{ro-EuFb2TCj.js → ro-DDf1X3Np.js} +1 -1
  163. package/dist/assets/{ru-CMaVQScp.js → ru-8eM3mcgK.js} +1 -1
  164. package/dist/assets/{runtime-metadata-persistence-ClOTznqa.js → runtime-metadata-persistence-DX29lQ62.js} +1 -1
  165. package/dist/assets/{se-DsfdKLdF.js → se-D4JvQeRX.js} +1 -1
  166. package/dist/assets/{sk-BNV9omI8.js → sk-DvpgttGI.js} +1 -1
  167. package/dist/assets/{sl-DJS_nINU.js → sl-B3gCZ-_a.js} +1 -1
  168. package/dist/assets/{sq-HEgjcbHe.js → sq-CVaTmL0V.js} +1 -1
  169. package/dist/assets/{sr-CO0CFu4X.js → sr-CnH5Ffyz.js} +1 -1
  170. package/dist/assets/{sr-Latn-eE1Idzey.js → sr-Latn-Dw9w61q6.js} +1 -1
  171. package/dist/assets/src-BUry7633.js +2 -0
  172. package/dist/assets/{src-BU7L2v4J.js → src-DMDT5a27.js} +1 -1
  173. package/dist/assets/src-ZxH3AOCu.js +16 -0
  174. package/dist/assets/{studioEntry-WeMfaSGn.js → studioEntry-DAqcBFtr.js} +1 -1
  175. package/dist/assets/{submitRedirect-C2lfZSHt.js → submitRedirect-iy0oOi7I.js} +1 -1
  176. package/dist/assets/{sv-5uTzgQT3.js → sv-CU7wdxyK.js} +1 -1
  177. package/dist/assets/{ta-BzgdkBZG.js → ta-DPH6q0HR.js} +1 -1
  178. package/dist/assets/{te-Ct_pl7ZJ.js → te-BSaThkGV.js} +1 -1
  179. package/dist/assets/{th-DouAlk0-.js → th-NXP8_Qb8.js} +1 -1
  180. package/dist/assets/{tr-3XNBsI40.js → tr-DDXoH663.js} +1 -1
  181. package/dist/assets/types-zod-ChJ30y25.js +1 -0
  182. package/dist/assets/{ug-B9n24h9G.js → ug-Guus6pPe.js} +1 -1
  183. package/dist/assets/ui-components-D8wcRNrt.js +37 -0
  184. package/dist/assets/ui-layout-BYO3rRIl.js +1 -0
  185. package/dist/assets/{uk-DCAenByf.js → uk-uiy4vsp8.js} +1 -1
  186. package/dist/assets/use-book-data-DFTswcKm.js +1 -0
  187. package/dist/assets/{useActionModal-Blp4rhOk.js → useActionModal-h52Z5Pkl.js} +1 -1
  188. package/dist/assets/useCanAuthorMetadata-TDrVrYGB.js +1 -0
  189. package/dist/assets/useDatasetCatalog-BOd0Ybr1.js +1 -0
  190. package/dist/assets/{useNavTargetLabel-BOJncjIb.js → useNavTargetLabel-D8lRdb6O.js} +1 -1
  191. package/dist/assets/useOpenRecordList-C7oqUD3F.js +1 -0
  192. package/dist/assets/{usePackageL10n-Ci9uVkRZ.js → usePackageL10n-Jl2XiF2F.js} +1 -1
  193. package/dist/assets/{useSettingsLabel-CeMnMWsh.js → useSettingsLabel-CSpBDTdy.js} +1 -1
  194. package/dist/assets/{uz-Cyrl-JSeHEqu-.js → uz-Cyrl-Cmb5bvbf.js} +1 -1
  195. package/dist/assets/{uz-DT3s9bZS.js → uz-DJWxoTz4.js} +1 -1
  196. package/dist/assets/vendor-objectstack-C4eD5dbT.js +139 -0
  197. package/dist/assets/{vi-D2p-h6bY.js → vi-Bb3QoIJC.js} +1 -1
  198. package/dist/assets/{zh-CN-DHOKqAit.js → zh-CN-C-Hts1ZR.js} +1 -1
  199. package/dist/assets/{zh-HK-D4iIPY7I.js → zh-HK-CtBAZ_ZS.js} +1 -1
  200. package/dist/assets/{zh-TW-gORQ_tZh.js → zh-TW-B7DDahD-.js} +1 -1
  201. package/dist/chunk-membership.json +28 -26
  202. package/dist/eager-closure.json +107 -101
  203. package/dist/index.html +4 -4
  204. package/dist/sdui.manifest.json +486 -63
  205. package/package.json +1 -1
  206. package/dist/assets/ApprovalsInboxPage-C6S1vk0X.js +0 -1
  207. package/dist/assets/AuditLogPage-v2dKXMuk.js +0 -1
  208. package/dist/assets/BookPage-DwFMcTSN.js +0 -1
  209. package/dist/assets/CreateViewDialog-D3l-tYHM.js +0 -1
  210. package/dist/assets/DocPage-B6AkH5WI.js +0 -1
  211. package/dist/assets/ExpressionProvider-CrL6jhVq.js +0 -1
  212. package/dist/assets/FlowRunsPage-CxdaiUyk.js +0 -1
  213. package/dist/assets/InterfaceListPage-C4wPYohR.js +0 -1
  214. package/dist/assets/MarketplacePackagePage-CfgKDpNH.js +0 -4
  215. package/dist/assets/MarketplacePage-DNEyU5AE.js +0 -1
  216. package/dist/assets/ObjectDataPage-CykEm9MD.js +0 -1
  217. package/dist/assets/PageView-C6u86tni.js +0 -1
  218. package/dist/assets/ProfilePage-C3SjXMzi.js +0 -1
  219. package/dist/assets/RecordDetailView-DgR_zhP4.js +0 -3
  220. package/dist/assets/ReportDefaultInspector-BIinF0EQ.js +0 -1
  221. package/dist/assets/ReportView-BREO-ADE.js +0 -2
  222. package/dist/assets/RuntimeDraftBar-BCWfd2yS.js +0 -1
  223. package/dist/assets/SchemaForm-C4uMMZ13.js +0 -3
  224. package/dist/assets/SearchResultsPage-C6Hw_Lpn.js +0 -1
  225. package/dist/assets/ai-DPBykF2N.js +0 -3
  226. package/dist/assets/app-shell-eager-leaves-Cf2bM6uT.js +0 -1
  227. package/dist/assets/data-adapter-Cymvlczj.js +0 -1
  228. package/dist/assets/default-inspector-registry-Bs6GBn00.js +0 -1
  229. package/dist/assets/dist-BF-ssUpn.js +0 -14
  230. package/dist/assets/drillUrlFilters-hi-2d3DW.js +0 -1
  231. package/dist/assets/en-AU-FVwCiDJO.js +0 -1
  232. package/dist/assets/en-GB-DQ_y5VbJ.js +0 -1
  233. package/dist/assets/en-IE-DaXOhsZW.js +0 -1
  234. package/dist/assets/en-IN-CnRZnAom.js +0 -1
  235. package/dist/assets/en-NZ-CBZLEToK.js +0 -1
  236. package/dist/assets/en-ZA-BE59v0wZ.js +0 -1
  237. package/dist/assets/framework-DFR4HNtj.js +0 -35
  238. package/dist/assets/getIcon-Cfwf-Egt.js +0 -1
  239. package/dist/assets/i18n-locale-ar-92O_xtDZ.js +0 -4
  240. package/dist/assets/i18n-locale-de-T5ic3yH9.js +0 -4
  241. package/dist/assets/i18n-locale-en-rxr7WJYl.js +0 -4
  242. package/dist/assets/i18n-locale-es-D_WOifJ_.js +0 -4
  243. package/dist/assets/i18n-locale-fr-3cvyjMkp.js +0 -4
  244. package/dist/assets/i18n-locale-ja-DXlIkB8I.js +0 -4
  245. package/dist/assets/i18n-locale-ko-DngRpS45.js +0 -4
  246. package/dist/assets/i18n-locale-pt-BkPaFCqZ.js +0 -4
  247. package/dist/assets/i18n-locale-ru-E5wLh-y6.js +0 -4
  248. package/dist/assets/i18n-locale-zh-BL4_Yand.js +0 -4
  249. package/dist/assets/i18n-runtime-97_bDVjP.js +0 -1
  250. package/dist/assets/index-Cadlh4t_.css +0 -2
  251. package/dist/assets/index-D98sa5GF.js +0 -20
  252. package/dist/assets/integration-CeAF4JFT.js +0 -1
  253. package/dist/assets/isSameWeek-DBXaA1Gd.js +0 -1
  254. package/dist/assets/mermaid-GHXKKRXX-Bb17TtNP.js +0 -1
  255. package/dist/assets/metadata-admin-CABUxbJl.js +0 -9
  256. package/dist/assets/plugin-calendar-Cn5HaZU8.js +0 -1
  257. package/dist/assets/plugin-charts-B6RcFWbo.js +0 -7
  258. package/dist/assets/plugin-dashboard-DjEx8e5Y.js +0 -6
  259. package/dist/assets/plugin-form-CLDvL0up.js +0 -1
  260. package/dist/assets/plugin-gantt-CrVrxVdi.js +0 -63
  261. package/dist/assets/plugin-grid-D2rmQEW_.js +0 -11
  262. package/dist/assets/plugin-kanban-BUNHFfIC.js +0 -1
  263. package/dist/assets/plugin-map-y-7RQQC5.js +0 -1
  264. package/dist/assets/plugin-report-mT3jpna0.js +0 -59
  265. package/dist/assets/plugin-timeline-B1EF83D3.js +0 -1
  266. package/dist/assets/plugin-tree-MTHUt3_S.js +0 -1
  267. package/dist/assets/plugin-view-DHJI-ahf.js +0 -1
  268. package/dist/assets/plugins-views-CfkgqD30.js +0 -3
  269. package/dist/assets/src-BUtIBFDA.js +0 -1
  270. package/dist/assets/src-C0eXlKtx.js +0 -16
  271. package/dist/assets/types-zod-DXpXw10W.js +0 -1
  272. package/dist/assets/ui-components-D6cEVg0T.js +0 -37
  273. package/dist/assets/ui-layout-DgVDuPEM.js +0 -1
  274. package/dist/assets/use-book-data-CwRldFxP.js +0 -1
  275. package/dist/assets/useCanAuthorMetadata-BxCMgFRf.js +0 -1
  276. package/dist/assets/useOpenRecordList-BrwJFojQ.js +0 -1
  277. package/dist/assets/vendor-objectstack-DFqu45yM.js +0 -138
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@objectstack/console",
3
- "version": "17.6.0",
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{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-Cc34lEqb.js";import{$ as l,$t as ee,An as te,Bn as ne,Br as re,Et as ie,Fn as ae,In as oe,Jn as se,Ln as ce,Mn as le,Nn as ue,On as u,Pn as de,Qt as fe,Rn as d,Tt as pe,Vr as me,Zt as he,_i as ge,an as _e,ci as ve,di as ye,en as be,fi as xe,gi as Se,hi as Ce,in as f,jn as we,kt as Te,mi as Ee,nn as De,on as Oe,pi as ke,ri as p,rn as m,si as Ae,tn as je,ui as Me,vi as Ne,xi as h,yi as g,zn as Pe,zr as Fe}from"./ui-components-D6cEVg0T.js";import{K as Ie}from"./framework-DFR4HNtj.js";import{p as Le,t as Re,w as ze}from"./i18n-runtime-97_bDVjP.js";import{r as _}from"./vendor-ui-utils-DIUdEYii.js";import{t as Be}from"./vendor-icon-arrow-up-down-DdDqplfV.js";import{t as Ve}from"./vendor-icon-check-vpu9Zukp.js";import{t as He}from"./vendor-icon-chevron-left-KnDcuFH1.js";import{t as Ue}from"./vendor-icon-chevron-right-DbnKwHYQ.js";import{t as We}from"./vendor-icon-circle-alert-D1XTr_X9.js";import{t as Ge}from"./vendor-icon-circle-check-Bq3OcFQN.js";import{t as Ke}from"./vendor-icon-circle-x-Nkh1Yr7N.js";import{t as qe}from"./vendor-icon-circle-5-gUQbxi.js";import{t as Je}from"./vendor-icon-clock-CTLnah0r.js";import{t as Ye}from"./vendor-icon-copy-B5M-KdZo.js";import{t as Xe}from"./vendor-icon-external-link-SBKz5x6R.js";import{t as v}from"./vendor-icon-link-2-off-Donc5rrk.js";import{t as Ze}from"./vendor-icon-paperclip-zxZDBuvr.js";import{t as Qe}from"./vendor-icon-refresh-cw-BGjSPEfJ.js";import{t as $e}from"./vendor-icon-search-B2Uqtp_W.js";import{t as et}from"./vendor-icon-send-BlZYLCTK.js";import{t as tt}from"./vendor-icon-shield-alert-CJYtPI9w.js";import{t as nt}from"./vendor-icon-square-check-big-B4UVzWzR.js";import{t as rt}from"./vendor-icon-trash-BLsWkwB9.js";import{t as it}from"./vendor-icon-user-IWwlLQut.js";import{t as at}from"./vendor-icon-workflow-B9ASq0nN.js";import{t as ot}from"./vendor-icon-x-CcLtgRNL.js";import"./src-C0eXlKtx.js";import{r as st,y as ct}from"./RecordDetailView-DgR_zhP4.js";import{t as lt}from"./studioEntry-WeMfaSGn.js";import{n as ut,t as dt}from"./contracts-DieHW666.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=Ie(),[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}=Le();return(0,y.useMemo)(()=>e(ht,gt,D,dt.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}=ze();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=Ie(),[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:h(`font-medium`,wt[e]??``),children:t})}function Et({label:e,className:t}){return(0,j.jsxs)(`div`,{className:h(`flex items-center gap-1.5 text-muted-foreground min-w-0`,t),title:e,children:[(0,j.jsx)(rt,{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:h(`flex items-center gap-1.5 text-muted-foreground min-w-0`,t),title:e,children:[(0,j.jsx)(v,{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 P(e){return e.process_label||N(e.process_name)}function kt(e){return e.step_label?e.step_label:e.current_step?N(e.current_step):null}function At(e){return e.submitter_name||M(e.submitter_id)}function jt(e,t){return t.pending_approver_names?.[e]||M(e)}function Mt(e,t){let n=t.pending_approver_groups?.[e];return n&&n.length?n.join(` / `):void 0}function Nt(e){let t=[],n=new Map;for(let r of e.pending_approvers||[]){let i=jt(r,e),a=Mt(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 Pt(e){if(e.submitter_name)return!1;let t=(e.submitter_id||``).trim();return!t||t.startsWith(`flow:`)||t.startsWith(`system:`)}function Ft(e){return e.object_label||e.object_name}function F(e){return e.submitted_at||e.created_at||void 0}function It(e,t){let n=F(e);if(!n)return null;let r=Date.parse(n);return Number.isNaN(r)?null:(t-r)/36e5}function Lt(e,t){if(e.status!==`pending`)return`text-muted-foreground`;let n=It(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 Rt(e){let t=Math.max(1,Math.round(Math.abs(e)/36e5));return t<48?`${t}h`:`${Math.round(t/24)}d`}function zt(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 Bt=new Set([`id`,`created_at`,`updated_at`,`created_by`,`updated_by`,`organization_id`]);function Vt(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(Bt.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]??Vt(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(Bt.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]??Vt(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:P(e)}),(0,j.jsxs)(`div`,{className:`text-xs text-muted-foreground truncate`,children:[kt(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,Re()),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)(Xe,{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:[Ft(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)(Ge,{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)(Ke,{className:`h-4 w-4`})})]})}function Yt(){let{t:e}=ze(),i=Re(),{user:a}=s(),{appName:c}=n(),[Ie,Le]=t(),v=(0,y.useMemo)(()=>ft(a),[a]),{systemPermissions:rt}=l(),dt=lt(rt),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`,ut.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:Rt(e.ms)}):b(`slaRemaining`,`SLA {{dur}} left`,{dur:Rt(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,Mt]=(0,y.useState)(!1),[It,Bt]=(0,y.useState)(!1),[Vt,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(),_.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()=>{Mt(!0),Wt(null);try{let e=[];if(k===`pending`)e=v.length?(await S.listRequests({status:`pending`,approverId:v})).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)}v.length&&S.listRequests({status:`pending`,approverId:v}).then(e=>Xt(e.data.length)).catch(()=>{})}e.sort((e,t)=>(F(t)||``).localeCompare(F(e)||``)),wt(e)}catch(e){Wt(e?.message||String(e)),wt([])}finally{Mt(!1)}},[k,v,a?.id,dn,V]);(0,y.useEffect)(()=>{K()},[K]);let Mn=(0,y.useCallback)(async()=>{if(!(k===`pending`||It)){Bt(!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){_.error(E(e,b(`loadFailed`,`Failed to load request`)))}finally{Bt(!1)}}},[k,It,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){_.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=Ie.get(`request`);e&&(Le(e=>{let t=new URLSearchParams(e);return t.delete(`request`),t},{replace:!0}),q(e))},[Ie]);let J=(0,y.useCallback)(()=>{v.length&&S.listRequests({status:`pending`,approverId:v}).then(e=>Xt(e.data.length)).catch(()=>{})},[v]),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`&&v.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,v,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){_.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 v.some(t=>e.has(t))},[R,v]),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(P(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`&&P(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)=>(F(e)||``).localeCompare(F(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(v);return(e.pending_approvers||[]).some(e=>t.has(e))},[v]),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=v.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)_.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(`, `);_.error(b(`bulkPartial`,`{{ok}} succeeded, {{fail}} failed: {{which}}`,{ok:n,fail:r.length,which:e+(r.length>3?`…`:``)}))}K(),J()},[Q,v,a?.id,K,J,b]),Jn=(0,y.useCallback)(async()=>{let e=U;if(!e)return;let t=new Set(e.pending_approvers||[]),n=v.find(e=>t.has(e))||a?.id||``;En(e.id),Cn(null);try{let t=await S.approve(e.id,{actor_id:n});_.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){_.error(E(e,b(`actionFailed`,`Action failed`)))}finally{En(null)}},[U,v,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=v.find(e=>t.has(e))||a?.id||``;En(e.id),wn(null);try{await S.reject(e.id,{actor_id:n}),_.success(b(`inlineRejected`,`Rejected "{{title}}"`,{title:e.record_title||M(e.record_id)})),K(),J()}catch(e){_.error(E(e,b(`actionFailed`,`Action failed`)))}finally{En(null)}},[W,v,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)(nt,{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)(Qe,{className:`h-4 w-4 mr-2 ${N?`animate-spin`:``}`}),b(`refresh`,`Refresh`)]})]}),Ht&&(0,j.jsxs)(Ae,{variant:`destructive`,children:[(0,j.jsx)(We,{className:`h-4 w-4`}),(0,j.jsx)(ve,{children:Ht})]}),(0,j.jsxs)(he,{value:k,onValueChange:$n,children:[(0,j.jsxs)(ee,{children:[(0,j.jsxs)(be,{value:`pending`,children:[b(`tabMyPending`,`My Pending`),Yt>0&&(0,j.jsx)(p,{variant:`secondary`,className:`ml-2`,children:Yt})]}),(0,j.jsx)(be,{value:`submitted`,children:b(`tabSubmitted`,`Submitted by me`)}),(0,j.jsx)(be,{value:`all`,children:b(`tabAll`,`All`)})]}),(0,j.jsxs)(fe,{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)($e,{className:`absolute left-2.5 top-1/2 -translate-y-1/2 h-3.5 w-3.5 text-muted-foreground`}),(0,j.jsx)(se,{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)(ot,{className:`h-3.5 w-3.5`})})]}),k!==`pending`&&(0,j.jsxs)(oe,{value:V,onValueChange:_n,children:[(0,j.jsx)(Pe,{className:`h-8 w-auto min-w-[130px] text-sm`,children:(0,j.jsx)(ne,{placeholder:b(`statusFilter`,`Status`)})}),(0,j.jsxs)(ce,{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)(oe,{value:pn,onValueChange:mn,children:[(0,j.jsx)(Pe,{className:`h-8 w-auto min-w-[140px] text-sm`,children:(0,j.jsx)(ne,{placeholder:b(`processFilter`,`Process`)})}),(0,j.jsxs)(ce,{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)(oe,{value:hn,onValueChange:gn,children:[(0,j.jsx)(Pe,{className:`h-8 w-auto min-w-[140px] text-sm`,children:(0,j.jsx)(ne,{placeholder:b(`objectFilter`,`Object`)})}),(0,j.jsxs)(ce,{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)(oe,{value:vn,onValueChange:e=>yn(e),children:[(0,j.jsxs)(Pe,{className:`h-8 w-auto min-w-[120px] text-sm`,children:[(0,j.jsx)(Be,{className:`h-3.5 w-3.5 mr-1 text-muted-foreground`}),(0,j.jsx)(ne,{placeholder:b(`sortBy`,`Sort`)})]}),(0,j.jsxs)(ce,{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)(Me,{children:[(0,j.jsx)(Ne,{asChild:!0,children:(0,j.jsxs)(g,{size:`sm`,disabled:xn||Q.length===0,children:[(0,j.jsx)(Ge,{className:`h-3.5 w-3.5 mr-1`}),b(`approveN`,`Approve {{count}}`,{count:Q.length||``})]})}),(0,j.jsxs)(ke,{children:[(0,j.jsxs)(Se,{children:[(0,j.jsx)(ge,{children:b(`bulkApproveTitle`,`Approve {{count}} requests?`,{count:Q.length})}),(0,j.jsx)(Ee,{children:b(`bulkApproveBody`,`Each request is approved with your identity and its flow continues down the approve branch.`)})]}),(0,j.jsxs)(Ce,{children:[(0,j.jsx)(xe,{children:b(`cancel`,`Cancel`)}),(0,j.jsx)(ye,{onClick:()=>qn(`approve`),children:b(`approveN`,`Approve {{count}}`,{count:Q.length})})]})]})]}),(0,j.jsxs)(Me,{children:[(0,j.jsx)(Ne,{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)(Ke,{className:`h-3.5 w-3.5 mr-1`}),b(`rejectN`,`Reject {{count}}`,{count:Q.length||``})]})}),(0,j.jsxs)(ke,{children:[(0,j.jsxs)(Se,{children:[(0,j.jsx)(ge,{children:b(`bulkRejectTitle`,`Reject {{count}} requests?`,{count:Q.length})}),(0,j.jsx)(Ee,{children:b(`bulkRejectBody`,`This rejects the selected requests and notifies their submitters.`)})]}),(0,j.jsxs)(Ce,{children:[(0,j.jsx)(xe,{children:b(`cancel`,`Cancel`)}),(0,j.jsx)(ye,{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)(pe,{children:[(0,j.jsx)(Te,{children:b(`emptyTitle`,`No requests`)}),(0,j.jsx)(ie,{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)(re,{className:`hidden md:block`,children:(0,j.jsx)(me,{className:`p-0`,children:(0,j.jsxs)(je,{children:[(0,j.jsx)(_e,{children:(0,j.jsxs)(Oe,{children:[k===`pending`&&(0,j.jsx)(f,{className:`w-10`,children:(0,j.jsx)(Fe,{checked:Wn,onCheckedChange:Gn,"aria-label":b(`selectAll`,`Select all`),disabled:$.length===0})}),(0,j.jsx)(f,{className:`w-[22%]`,children:b(`colRequest`,`Request`)}),(0,j.jsx)(f,{className:`w-[30%]`,children:b(`colRecord`,`Record`)}),(0,j.jsx)(f,{className:`w-[16%]`,children:b(`colRequester`,`Requester`)}),(0,j.jsx)(f,{className:`w-[110px] min-w-[96px] whitespace-nowrap`,children:b(`colStatus`,`Status`)}),(0,j.jsx)(f,{className:`w-[132px]`,children:b(`colWaiting`,`Submitted`)}),(0,j.jsx)(f,{className:`w-20`,"aria-label":b(`colActions`,`Actions`)})]})}),(0,j.jsx)(De,{children:Y.map((e,t)=>(0,j.jsxs)(Oe,{className:h(`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)(Fe,{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:Pt(e)?(0,j.jsxs)(`div`,{className:`flex items-center gap-1.5 text-sm text-muted-foreground`,children:[(0,j.jsx)(at,{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)(it,{className:`h-3.5 w-3.5 text-muted-foreground shrink-0`}),(0,j.jsx)(`span`,{className:`truncate`,title:e.submitter_id||``,children:At(e)})]})}),(0,j.jsx)(m,{children:(0,j.jsx)(Tt,{status:e.status,label:T(e.status)})}),(0,j.jsxs)(m,{className:h(`text-xs whitespace-nowrap`,Lt(e,x)),title:Ot(F(e),i),children:[(0,j.jsx)(Je,{className:`h-3 w-3 inline mr-1`}),w(F(e)),e.status===`pending`&&(()=>{let t=zt(e.sla_due_at,x);return t?(0,j.jsx)(`div`,{className:h(`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)(re,{className:`cursor-pointer active:bg-accent/50`,onClick:()=>void q(e.id),children:(0,j.jsxs)(me,{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:P(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:Ft(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:[Pt(e)?(0,j.jsxs)(`span`,{className:`inline-flex items-center gap-1 truncate italic`,children:[(0,j.jsx)(at,{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)(it,{className:`h-3 w-3`}),At(e)]}),(0,j.jsxs)(`span`,{className:h(`inline-flex items-center gap-1 whitespace-nowrap`,Lt(e,x)),children:[(0,j.jsx)(Je,{className:`h-3 w-3`}),w(F(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)(Ge,{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)(Ke,{className:`h-3.5 w-3.5 mr-1`}),b(`reject`,`Reject`)]})]})]})},e.id))}),k!==`pending`&&Vt!=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:Vt})}),A.length<Vt&&(0,j.jsx)(g,{size:`sm`,variant:`outline`,disabled:It,onClick:()=>void Mn(),children:It?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)(Me,{open:!!U,onOpenChange:e=>!e&&Cn(null),children:(0,j.jsxs)(ke,{children:[(0,j.jsxs)(Se,{children:[(0,j.jsx)(ge,{children:b(`approveOneTitle`,`Approve "{{title}}"?`,{title:U?U.record_title||M(U.record_id):``})}),(0,j.jsx)(Ee,{children:b(`approveOneBody`,`This approves the request with your identity. To add a comment or attachment, open the request instead.`)})]}),(0,j.jsxs)(Ce,{children:[(0,j.jsx)(xe,{children:b(`cancel`,`Cancel`)}),(0,j.jsx)(ye,{onClick:()=>void Jn(),children:b(`approve`,`Approve`)})]})]})}),(0,j.jsx)(Me,{open:!!W,onOpenChange:e=>!e&&wn(null),children:(0,j.jsxs)(ke,{children:[(0,j.jsxs)(Se,{children:[(0,j.jsx)(ge,{children:b(`rejectOneTitle`,`Reject "{{title}}"?`,{title:W?W.record_title||M(W.record_id):``})}),(0,j.jsx)(Ee,{children:b(`rejectOneBody`,`This rejects the request and notifies the submitter.`)})]}),(0,j.jsxs)(Ce,{children:[(0,j.jsx)(xe,{children:b(`cancel`,`Cancel`)}),(0,j.jsx)(ye,{onClick:()=>void Yn(),className:`bg-destructive text-destructive-foreground hover:bg-destructive/90`,children:b(`reject`,`Reject`)})]})]})}),(0,j.jsx)(te,{open:!!L,onOpenChange:e=>!e&&Nn(),children:(0,j.jsxs)(we,{className:`w-full sm:max-w-xl overflow-y-auto`,children:[(0,j.jsxs)(ue,{children:[(0,j.jsx)(de,{children:R?P(R):b(`drawerTitle`,`Approval Request`)}),(0,j.jsx)(le,{children:R?kt(R)||Ft(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)(He,{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)(Ue,{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(F(R),i),children:[(0,j.jsx)(Je,{className:`h-3 w-3`}),b(`submittedAgo`,`Submitted {{when}}`,{when:w(F(R))})]}),R.completed_at&&(0,j.jsxs)(`span`,{children:[`· `,b(`completedAt`,`Completed {{when}}`,{when:w(R.completed_at)})]}),R.status===`pending`&&(()=>{let e=zt(R.sla_due_at,x);return e?(0,j.jsx)(p,{variant:`outline`,className:h(`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)(re,{children:(0,j.jsxs)(me,{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)(Xe,{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:[Ft(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:Pt(R)?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(at,{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)(it,{className:`h-3 w-3`}),(0,j.jsx)(`span`,{title:R.submitter_id||``,children:At(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:h(`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:h(`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:h(`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)(Ve,{className:`h-3 w-3`}):(0,j.jsx)(qe,{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:Nt(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:h(`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)(Ve,{className:`h-3 w-3`}):t+1}),r&&(0,j.jsx)(`div`,{className:h(`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:h(`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=ct(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?At(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)(tt,{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)(Ze,{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)(se,{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)(et,{className:`h-3.5 w-3.5`})})]})]}),dt&&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)),_.success(b(`copied`,`Copied`))}catch{_.error(b(`copyFailed`,`Copy failed`))}},className:`text-[10px] text-muted-foreground hover:text-foreground inline-flex items-center gap-1`,children:[(0,j.jsx)(Ye,{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)(ae,{}),(0,j.jsxs)(`div`,{className:`space-y-3`,children:[(0,j.jsx)(st,{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=>jt(e,R)).join(`, `)||`—`})})]})]}),zn&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(ae,{}),(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)(Xe,{className:`h-4 w-4 mr-1`}),b(`editRecordBtn`,`Edit record`)]})}),(0,j.jsx)(st,{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{An as r,Bn as i,Br as a,Et as ee,Fn as o,In as te,Jn as s,Ln as ne,Mn as re,Nn as ie,On as ae,Pn as oe,Qn as c,Rn as l,Tt as u,Vr as d,an as se,ci as ce,in as f,jn as le,kt as p,nn as ue,on as m,ri as h,rn as g,si as _,tn as de,yi as v,zn as fe}from"./ui-components-D6cEVg0T.js";import{t as y}from"./i18n-runtime-97_bDVjP.js";import{t as b}from"./vendor-icon-circle-alert-D1XTr_X9.js";import{t as x}from"./vendor-icon-refresh-cw-BGjSPEfJ.js";import{t as S}from"./vendor-icon-scroll-text-DENjQLzo.js";import{t as C}from"./vendor-icon-search-B2Uqtp_W.js";import{t as w}from"./vendor-icon-x-CcLtgRNL.js";var T=e(n(),1),pe=[`create`,`update`,`delete`,`login`,`logout`,`config_change`,`import`],E={create:`default`,update:`secondary`,delete:`destructive`,login:`outline`,logout:`outline`,config_change:`secondary`,import:`outline`},D=t(),me=`${``.replace(/\/$/,``)}/api/v1`,O=50;function k(e,t){if(!e)return`—`;try{return new Date(e).toLocaleString(t)}catch{return e}}function A(e,t=24){return e?e.length>t?`${e.slice(0,t-1)}…`:e:`—`}function j(e){if(!e)return``;try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}}function M(){let e=y(),[t,n]=(0,T.useState)([]),[M,N]=(0,T.useState)(!1),[P,F]=(0,T.useState)(null),[I,L]=(0,T.useState)(`all`),[R,z]=(0,T.useState)(``),[B,V]=(0,T.useState)(``),[H,U]=(0,T.useState)(``),[W,G]=(0,T.useState)(``),[K,q]=(0,T.useState)(0),[J,Y]=(0,T.useState)(!1),[X,Z]=(0,T.useState)(null),Q=(0,T.useCallback)(async()=>{N(!0),F(null);try{let e={};I&&I!==`all`&&(e.action=I),R.trim()&&(e.object_name=R.trim()),B.trim()&&(e.user_id=B.trim()),H&&(e.created_at={...e.created_at||{},$gte:H}),W&&(e.created_at={...e.created_at||{},$lte:`${W}T23:59:59`});let t=new URLSearchParams;Object.keys(e).length>0&&t.set(`$filter`,JSON.stringify(e)),t.set(`$orderby`,`created_at desc`),t.set(`$top`,`51`),t.set(`$skip`,String(K*O));let r=await fetch(`${me}/data/sys_audit_log?${t.toString()}`,{credentials:`include`});if(!r.ok){let e=await r.text().catch(()=>``);throw Error(`HTTP ${r.status}: ${e.slice(0,200)||r.statusText}`)}let i=await r.json(),a=Array.isArray(i)?i:Array.isArray(i?.records)?i.records:Array.isArray(i?.data)?i.data:[];Y(a.length>O),n(a.slice(0,O))}catch(e){console.warn(`[AuditLogPage] load failed:`,e),F(e?.message||`Failed to load audit log`),n([]),Y(!1)}finally{N(!1)}},[I,R,B,H,W,K]);(0,T.useEffect)(()=>{Q()},[Q]);let he=(0,T.useCallback)(()=>{L(`all`),z(``),V(``),U(``),G(``),q(0)},[]),$=(0,T.useMemo)(()=>{let e=0;return I!==`all`&&(e+=1),R.trim()&&(e+=1),B.trim()&&(e+=1),H&&(e+=1),W&&(e+=1),e},[I,R,B,H,W]);return(0,D.jsxs)(`div`,{className:`p-6 space-y-4 max-w-screen-2xl mx-auto`,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,D.jsx)(S,{className:`h-6 w-6 text-muted-foreground`}),(0,D.jsxs)(`div`,{className:`flex-1`,children:[(0,D.jsx)(`h1`,{className:`text-2xl font-semibold tracking-tight`,children:`Audit Log`}),(0,D.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Read-only system activity and record changes. Newest first.`})]}),(0,D.jsxs)(v,{variant:`outline`,size:`sm`,onClick:Q,disabled:M,children:[(0,D.jsx)(x,{className:`h-4 w-4 mr-1 ${M?`animate-spin`:``}`}),`Refresh`]})]}),(0,D.jsx)(a,{children:(0,D.jsxs)(d,{className:`p-4 grid grid-cols-1 md:grid-cols-5 gap-3`,children:[(0,D.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,D.jsx)(c,{className:`text-xs`,children:`Action`}),(0,D.jsxs)(te,{value:I,onValueChange:e=>{L(e),q(0)},children:[(0,D.jsx)(fe,{className:`h-9`,children:(0,D.jsx)(i,{})}),(0,D.jsxs)(ne,{children:[(0,D.jsx)(l,{value:`all`,children:`All actions`}),pe.map(e=>(0,D.jsx)(l,{value:e,children:e},e))]})]})]}),(0,D.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,D.jsx)(c,{className:`text-xs`,children:`Object`}),(0,D.jsx)(s,{placeholder:`e.g. account`,value:R,onChange:e=>{z(e.target.value),q(0)},className:`h-9`})]}),(0,D.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,D.jsx)(c,{className:`text-xs`,children:`Actor (user id)`}),(0,D.jsx)(s,{placeholder:`user id`,value:B,onChange:e=>{V(e.target.value),q(0)},className:`h-9`})]}),(0,D.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,D.jsx)(c,{className:`text-xs`,children:`From`}),(0,D.jsx)(s,{type:`date`,value:H,onChange:e=>{U(e.target.value),q(0)},className:`h-9`})]}),(0,D.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,D.jsx)(c,{className:`text-xs`,children:`To`}),(0,D.jsx)(s,{type:`date`,value:W,onChange:e=>{G(e.target.value),q(0)},className:`h-9`})]}),$>0&&(0,D.jsx)(`div`,{className:`md:col-span-5 flex justify-end`,children:(0,D.jsxs)(v,{variant:`ghost`,size:`sm`,onClick:he,children:[(0,D.jsx)(w,{className:`h-4 w-4 mr-1`}),`Clear filters (`,$,`)`]})})]})}),P&&(0,D.jsxs)(_,{variant:`destructive`,children:[(0,D.jsx)(b,{className:`h-4 w-4`}),(0,D.jsx)(ce,{children:P})]}),(0,D.jsx)(a,{children:(0,D.jsx)(d,{className:`p-0`,children:M&&t.length===0?(0,D.jsx)(`div`,{className:`p-6 space-y-2`,children:Array.from({length:6}).map((e,t)=>(0,D.jsx)(ae,{className:`h-9 w-full`},t))}):t.length===0?(0,D.jsx)(`div`,{className:`p-12`,children:(0,D.jsxs)(u,{children:[(0,D.jsx)(C,{className:`h-8 w-8 text-muted-foreground mb-3`}),(0,D.jsx)(p,{children:`No audit entries`}),(0,D.jsx)(ee,{children:$>0?`Try clearing filters or widening the date range.`:`Events will appear here once tracked objects are modified.`})]})}):(0,D.jsxs)(de,{children:[(0,D.jsx)(se,{children:(0,D.jsxs)(m,{children:[(0,D.jsx)(f,{className:`w-[180px]`,children:`Timestamp`}),(0,D.jsx)(f,{className:`w-[130px]`,children:`Action`}),(0,D.jsx)(f,{children:`Object`}),(0,D.jsx)(f,{children:`Record`}),(0,D.jsx)(f,{children:`Actor`}),(0,D.jsx)(f,{className:`w-[130px]`,children:`IP`})]})}),(0,D.jsx)(ue,{children:t.map(t=>{let n=E[t.action||``]||`outline`;return(0,D.jsxs)(m,{className:`cursor-pointer`,onClick:()=>Z(t),children:[(0,D.jsx)(g,{className:`font-mono text-xs`,children:k(t.created_at,e)}),(0,D.jsx)(g,{children:(0,D.jsx)(h,{variant:n,children:t.action||`—`})}),(0,D.jsx)(g,{children:t.object_name||`—`}),(0,D.jsx)(g,{className:`font-mono text-xs`,children:A(t.record_id,18)}),(0,D.jsx)(g,{className:`font-mono text-xs`,children:A(t.user_id,18)}),(0,D.jsx)(g,{className:`font-mono text-xs`,children:t.ip_address||`—`})]},t.id)})})]})})}),(t.length>0||K>0)&&(0,D.jsxs)(`div`,{className:`flex items-center justify-between text-sm text-muted-foreground`,children:[(0,D.jsxs)(`span`,{children:[`Page `,K+1,J?``:` · end`]}),(0,D.jsxs)(`div`,{className:`flex gap-2`,children:[(0,D.jsx)(v,{variant:`outline`,size:`sm`,disabled:K===0||M,onClick:()=>q(e=>Math.max(0,e-1)),children:`Previous`}),(0,D.jsx)(v,{variant:`outline`,size:`sm`,disabled:!J||M,onClick:()=>q(e=>e+1),children:`Next`})]})]}),(0,D.jsx)(r,{open:!!X,onOpenChange:e=>!e&&Z(null),children:(0,D.jsxs)(le,{side:`right`,className:`sm:max-w-2xl w-full overflow-y-auto`,children:[(0,D.jsxs)(ie,{children:[(0,D.jsxs)(oe,{className:`flex items-center gap-2`,children:[(0,D.jsx)(h,{variant:X&&E[X.action||``]||`outline`,children:X?.action||`—`}),X?.object_name||`Audit Event`]}),(0,D.jsx)(re,{children:X?.id?(0,D.jsx)(`span`,{className:`font-mono text-xs`,children:X.id}):null})]}),X&&(0,D.jsxs)(`div`,{className:`mt-6 space-y-5`,children:[(0,D.jsxs)(`div`,{className:`grid grid-cols-2 gap-3 text-sm`,children:[(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:`Timestamp`}),(0,D.jsx)(`div`,{className:`font-mono`,children:k(X.created_at,e)})]}),(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:`IP Address`}),(0,D.jsx)(`div`,{className:`font-mono`,children:X.ip_address||`—`})]}),(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:`Actor (user_id)`}),(0,D.jsx)(`div`,{className:`font-mono break-all`,children:X.user_id||`—`})]}),(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:`Tenant`}),(0,D.jsx)(`div`,{className:`font-mono break-all`,children:X.tenant_id||`—`})]}),(0,D.jsxs)(`div`,{className:`col-span-2`,children:[(0,D.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:`Target record`}),(0,D.jsxs)(`div`,{className:`font-mono text-sm break-all`,children:[X.object_name||`—`,` / `,X.record_id||`—`]})]}),X.user_agent&&(0,D.jsxs)(`div`,{className:`col-span-2`,children:[(0,D.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:`User Agent`}),(0,D.jsx)(`div`,{className:`font-mono text-xs break-all`,children:X.user_agent})]})]}),(X.old_value||X.new_value)&&(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(o,{}),(0,D.jsxs)(`div`,{className:`space-y-3`,children:[(0,D.jsx)(`div`,{className:`text-sm font-medium`,children:`Change payload`}),X.old_value&&(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`div`,{className:`text-xs text-muted-foreground mb-1`,children:`Before`}),(0,D.jsx)(`pre`,{className:`rounded-md bg-muted p-3 text-xs font-mono whitespace-pre-wrap max-h-64 overflow-auto`,children:j(X.old_value)})]}),X.new_value&&(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`div`,{className:`text-xs text-muted-foreground mb-1`,children:`After`}),(0,D.jsx)(`pre`,{className:`rounded-md bg-muted p-3 text-xs font-mono whitespace-pre-wrap max-h-64 overflow-auto`,children:j(X.new_value)})]})]})]}),X.metadata&&(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(o,{}),(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`div`,{className:`text-sm font-medium mb-2`,children:`Metadata`}),(0,D.jsx)(`pre`,{className:`rounded-md bg-muted p-3 text-xs font-mono whitespace-pre-wrap max-h-48 overflow-auto`,children:j(X.metadata)})]})]})]})]})})]})}export{M as AuditLogPage};
@@ -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"./vendor-icon-lock-B_psRnly.js";import{t as l}from"./DocShell-Bzl3QS30.js";import{a as u,d,n as f,s as p,u as m}from"./use-book-data-CwRldFxP.js";var h=e(i(),1),g=r();function _({name:e,message:t}){return(0,g.jsx)(l,{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)(c,{className:`h-10 w-10 text-muted-foreground`}),(0,g.jsx)(`h1`,{className:`text-lg font-semibold`,children:`You do not have access to this documentation`}),t?(0,g.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:t}):null]})})}function v(){let{slug:e,appName:r}=n(),{books:i,docs:c,state:_}=f(),v=(0,h.useMemo)(()=>i.find(t=>u(t)===e),[i,e]),y=(0,h.useMemo)(()=>v?p(m(v,d(v,c))):void 0,[v,c]);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)(l,{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.`]})]})})})}export{_ as n,v 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{Ar as r,Fr as i,Jn as a,Mr as o,Nr as s,Pr as c,jr as l,xi as u,yi as d}from"./ui-components-D6cEVg0T.js";import{w as f}from"./i18n-runtime-97_bDVjP.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 h}from"./vendor-icon-circle-alert-D1XTr_X9.js";import{t as g}from"./vendor-icon-clock-CTLnah0r.js";import{t as _}from"./vendor-icon-image-D2YAsa8l.js";import{t as v}from"./vendor-icon-layout-grid-B3quJ1GF.js";import{t as y}from"./vendor-icon-list-tree-Br55vyL9.js";import{t as b}from"./vendor-icon-map-DsFP3Vmp.js";import{t as x}from"./vendor-icon-square-chart-gantt-D3I-7xgm.js";import{t as S}from"./vendor-icon-square-kanban-ZFRnbY0T.js";import{n as ee}from"./createDerive-CjN1i5vn.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-DHJI-ahf.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":s}){return(0,j.jsxs)(`div`,{style:{"--page-header-accent":i||`hsl(var(--primary))`},className:u(`relative shrink-0 border-b bg-background z-10`,a&&`sticky top-0 bg-background/85 backdrop-blur supports-[backdrop-filter]:bg-background/75`,o),"data-testid":s??`page-header`,children:[(0,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:u(`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:v,label:e(`console.objectView.viewTypeGrid`),description:e(`console.objectView.viewTypeGridDesc`)},kanban:{icon:S,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:_,label:e(`console.objectView.viewTypeGallery`),description:e(`console.objectView.viewTypeGalleryDesc`)},timeline:{icon:g,label:e(`console.objectView.viewTypeTimeline`),description:e(`console.objectView.viewTypeTimelineDesc`)},gantt:{icon:x,label:e(`console.objectView.viewTypeGantt`),description:e(`console.objectView.viewTypeGanttDesc`)},map:{icon:b,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:y,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:g}){let{t:_}=f(),v=(0,A.useMemo)(()=>te(_),[_]),y=(0,A.useMemo)(()=>m&&m.length>0?v.filter(e=>m.includes(e.type)):v,[v,m]),b=(p??[]).join(`\0`),x=(0,A.useMemo)(()=>new Set(p??[]),[b]),S=(0,A.useMemo)(()=>g?w(g):[],[g]),[C,T]=(0,A.useState)(y[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),[ne,z]=(0,A.useState)({});(0,A.useEffect)(()=>{e&&(T(y[0]?.type??`grid`),M(!1),R(!1),z({}))},[e,y]),(0,A.useEffect)(()=>{if(!k){let e=y.find(e=>e.type===C);D(N(e?.label??`View`,x))}},[C,k,y,x]),(0,A.useEffect)(()=>{L||I(ee(E))},[E,L]);let B=P[C]??[],V=e=>e.kind===`enum`?(e.enumOptions?.length??0)>0:!g||(e.filter?S.filter(e.filter):S).length>0,H=(0,A.useMemo)(()=>{let e={};return y.forEach(t=>{let n=(P[t.type]??[]).find(e=>!V(e));e[t.type]=n??null}),e},[y,S,g]),U=e=>ne[`${C}.${e}`]??``,W=(e,t)=>z(n=>({...n,[`${C}.${e}`]:t})),G=E.trim(),K=G.length>0&&x.has(G),q=B.every(e=>U(e.key).length>0),J=/^[a-z_][a-z0-9_]*$/,Y=F.trim(),X=Y.length===0,Z=Y.length>0&&!J.test(Y),Q=G.length>0&&!K&&q&&!X&&!Z;(0,A.useEffect)(()=>{B.length!==0&&B.forEach(e=>{if(U(e.key).length>0)return;if(e.kind===`enum`){e.defaultValue&&W(e.key,e.defaultValue);return}let t=e.filter?S.filter(e.filter):S;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,S]);let $=()=>{if(!Q)return;let e={};B.forEach(t=>{let n=U(t.key);n&&(e[t.key]=t.key===`yAxisFields`?[n]:n)});let r={type:C,label:G,name:Y};Object.keys(e).length>0&&(r[C]=e),n(r),t(!1)};return(0,j.jsx)(r,{open:e,onOpenChange:t,children:(0,j.jsxs)(l,{className:`sm:max-w-[560px]`,"data-testid":`create-view-dialog`,children:[(0,j.jsxs)(c,{children:[(0,j.jsx)(i,{children:_(`console.objectView.createView`)}),(0,j.jsx)(o,{children:_(`console.objectView.createViewDesc`)})]}),(0,j.jsx)(`div`,{className:`grid grid-cols-4 gap-2 py-2`,"data-testid":`create-view-type-grid`,children:y.map(({type:e,label:t,description:n,icon:r})=>{let i=e===C,a=H[e],o=!!a,s=o?_(`console.objectView.viewTypeUnavailable`,{field:_(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:s,onClick:()=>{o||T(e)},className:u(`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:u(`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?_(`console.objectView.viewTypeUnavailableShort`):n})]},e)})}),B.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:B.map(e=>{let t=U(e.key),n=e.kind===`enum`,r=n?[]:e.filter?S.filter(e.filter):S,i=!n&&S.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:[_(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:u(`h-9 w-full rounded-md border bg-background px-2 text-xs`,`border-input`),children:[(0,j.jsx)(`option`,{value:``,children:_(n?`console.objectView.selectOption`:`console.objectView.selectField`)}),n?e.enumOptions.map(e=>(0,j.jsx)(`option`,{value:e.value,children:_(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:_(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)(h,{className:`h-3 w-3`}),_(`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:[_(`console.objectView.title`),(0,j.jsx)(`span`,{className:`ml-1 text-destructive`,"aria-hidden":`true`,children:`*`})]}),(0,j.jsx)(a,{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:_(`console.objectView.newView`),className:`h-9`}),K&&(0,j.jsx)(`p`,{className:`text-[11px] text-destructive`,"data-testid":`create-view-error-duplicate`,children:_(`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:[_(`console.objectView.viewName`),(0,j.jsx)(`span`,{className:`ml-1 text-destructive`,"aria-hidden":`true`,children:`*`})]}),(0,j.jsx)(a,{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:_(`console.objectView.viewNameRequired`)}):Z?(0,j.jsx)(`p`,{className:`text-[11px] text-destructive`,"data-testid":`create-view-error-machine-name`,children:_(`console.objectView.viewNameInvalid`)}):(0,j.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,"data-testid":`create-view-machine-name-help`,children:_(`console.objectView.viewNameHelp`)})]}),(0,j.jsxs)(s,{className:`mt-2`,children:[(0,j.jsx)(d,{type:`button`,variant:`outline`,onClick:()=>t(!1),"data-testid":`create-view-cancel`,children:_(`console.objectView.cancel`)}),(0,j.jsx)(d,{type:`button`,disabled:!Q,onClick:$,"data-testid":`create-view-submit`,children:_(`console.objectView.create`)})]})]})})}export{M as n,F as t};
@@ -1 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{a as t,d as n,p as r,r as i,t as a,v as o}from"./vendor-react-BggL7APJ.js";import{K as s}from"./framework-DFR4HNtj.js";import{w as c}from"./i18n-runtime-97_bDVjP.js";import{t as l}from"./vendor-icon-chevron-down-BEf_jTEE.js";import{t as u}from"./vendor-icon-circle-alert-D1XTr_X9.js";import{t as d}from"./vendor-icon-external-link-SBKz5x6R.js";import{t as f}from"./vendor-icon-file-question-mark-CDRVvH3W.js";import{t as p}from"./vendor-icon-loader-circle-D3PsuVaD.js";import{t as m}from"./vendor-icon-menu-9YHQR0RT.js";import"./src-C0eXlKtx.js";import{t as h}from"./DocShell-Bzl3QS30.js";import{a as g,d as _,i as v,n as y,u as b}from"./use-book-data-CwRldFxP.js";import{r as x,t as S}from"./plugin-markdown-BOkHcir_.js";import{n as C}from"./BookPage-DwFMcTSN.js";var w=e(o(),1),T=/(^```[^\n]*\n[\s\S]*?\n```[ \t]*$|^~~~[^\n]*\n[\s\S]*?\n~~~[ \t]*$)/m,E=/(`[^`\n]+`)/,D=/\]\((?:\.\/)?([a-z][a-z0-9_]*)\.md(#[^)\s]*)?\)/g;function O(e){return e.split(E).map((e,t)=>t%2==1?e:e.replace(D,`](/docs/$1$2)`)).join(``)}function k(e){let t=[],n=e;for(;;){let e=T.exec(n);if(!e||e.index===void 0)return t.push(O(n)),t.join(``);t.push(O(n.slice(0,e.index)),e[0]),n=n.slice(e.index+e[0].length)}}var A=a();function j({book:e,activeDoc:t,docHref:n}){return(0,A.jsxs)(`nav`,{"aria-label":e.label??e.name,className:`text-sm`,children:[e.label?(0,A.jsx)(`div`,{className:`mb-3 px-2 text-sm font-semibold text-foreground`,children:e.label}):null,(0,A.jsx)(`div`,{className:`space-y-5`,children:e.groups.map(e=>(0,A.jsxs)(`div`,{children:[(0,A.jsx)(`div`,{className:`mb-1 px-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground`,children:e.label}),(0,A.jsx)(`ul`,{className:`space-y-0.5`,children:e.entries.map((e,r)=>{if(e.separator)return(0,A.jsx)(`li`,{className:`my-1.5 border-t border-border/60`,"aria-hidden":!0},`sep-${r}`);if(e.href)return(0,A.jsx)(`li`,{children:(0,A.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,A.jsx)(`span`,{className:`truncate`,children:e.label??e.href}),(0,A.jsx)(d,{className:`h-3 w-3 shrink-0 opacity-60`})]})},`ext-${r}`);if(!e.doc)return null;let a=e.doc===t;return(0,A.jsx)(`li`,{children:(0,A.jsx)(i,{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 M(){let{slug:e,name:i,appName:a}=r(),o=n(),d=s(),{t:T}=c(),[E,D]=(0,w.useState)(null),[O,M]=(0,w.useState)(`loading`),[N,P]=(0,w.useState)(``);(0,w.useEffect)(()=>{let e=!1;async function t(){if(i&&d){M(`loading`);try{let t=await d.getClient().meta.getItem(`doc`,i,a?{packageId:a}:void 0),n=t?.item??t?.data??t;if(e)return;n&&typeof n.content==`string`?(D({name:i,label:n.label,content:n.content}),M(`ready`)):M(`missing`)}catch(t){if(e)return;let n=t?.httpStatus;if(n===401||n===403){P(t?.message??``),M(`refused`);return}n===404||/not found/i.test(t?.message??``)?M(`missing`):(P(t?.message??`Failed to load documentation`),M(`error`))}}}return t(),()=>{e=!0}},[i,a,d]);let F=(0,w.useCallback)(e=>{document.getElementById(e)?.scrollIntoView({behavior:`smooth`,block:`start`}),window.history.replaceState(null,``,`${window.location.pathname}${window.location.search}#${e}`)},[]),I=(0,w.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(),o(t)):t.startsWith(`#`)&&(e.preventDefault(),F(decodeURIComponent(t.slice(1)))))},[o,F]),L=(0,w.useCallback)((e,t)=>{e.defaultPrevented||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||e.button!==0||(e.preventDefault(),F(t))},[F]),R=(0,w.useMemo)(()=>x(E?.content??``),[E?.content]),z=T(`help.onThisPage`,{defaultValue:`On this page`}),{books:B,docs:V}=y(),H=a?`/apps/${a}/docs`:`/docs`,U=(0,w.useMemo)(()=>{let t=B.find(t=>g(t)===e);return t?b(t,_(t,V)):null},[B,V,e]),W=(0,w.useCallback)(t=>`${H}/${e}/${t}`,[H,e]),G=(0,w.useMemo)(()=>e&&!U?v(e,B):null,[e,U,B]);return G&&i?(0,A.jsx)(t,{to:`${H}/${g(G)}/${i}`,replace:!0}):O===`loading`?(0,A.jsx)(`div`,{className:`flex h-full items-center justify-center p-10 text-muted-foreground`,children:(0,A.jsx)(p,{className:`h-5 w-5 animate-spin`,"aria-label":`Loading documentation`})}):O===`missing`?(0,A.jsx)(h,{breadcrumb:i,children:(0,A.jsxs)(`div`,{className:`mx-auto flex max-w-3xl flex-col items-center gap-3 p-10 text-center`,children:[(0,A.jsx)(f,{className:`h-10 w-10 text-muted-foreground`}),(0,A.jsx)(`h1`,{className:`text-lg font-semibold`,children:`Documentation not found`}),(0,A.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`No document named `,(0,A.jsx)(`code`,{className:`rounded bg-muted px-1 py-0.5`,children:i}),` is installed. It may belong to a package that is not installed, or it was removed in a newer version.`]})]})}):O===`refused`?(0,A.jsx)(C,{name:i,message:N}):O===`error`?(0,A.jsx)(h,{breadcrumb:i,children:(0,A.jsxs)(`div`,{className:`mx-auto flex max-w-3xl flex-col items-center gap-3 p-10 text-center`,children:[(0,A.jsx)(u,{className:`h-10 w-10 text-destructive`}),(0,A.jsx)(`h1`,{className:`text-lg font-semibold`,children:`Failed to load documentation`}),(0,A.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:N})]})}):(0,A.jsxs)(h,{breadcrumb:E?.label??i,children:[U?(0,A.jsxs)(`details`,{className:`group mx-auto max-w-6xl px-4 pt-4 sm:px-6 lg:hidden`,children:[(0,A.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,A.jsx)(m,{className:`h-4 w-4 text-muted-foreground`}),(0,A.jsx)(`span`,{className:`truncate`,children:U.label??`Contents`}),(0,A.jsx)(l,{className:`ml-auto h-4 w-4 text-muted-foreground transition-transform group-open:rotate-180`})]}),(0,A.jsx)(`div`,{className:`mt-2 rounded-md border p-3`,children:(0,A.jsx)(j,{book:U,activeDoc:i,docHref:W})})]}):null,(0,A.jsxs)(`div`,{className:`mx-auto flex gap-8 p-4 sm:p-6 ${U?`max-w-6xl`:`max-w-5xl`}`,children:[U?(0,A.jsx)(`aside`,{className:`hidden w-56 shrink-0 lg:block`,children:(0,A.jsx)(`nav`,{className:`sticky top-20 max-h-[calc(100vh-6rem)] overflow-auto pr-1`,children:(0,A.jsx)(j,{book:U,activeDoc:i,docHref:W})})}):null,(0,A.jsx)(`article`,{className:`min-w-0 max-w-3xl flex-1 [&_h1]:scroll-mt-24 [&_h2]:scroll-mt-24 [&_h3]:scroll-mt-24`,onClick:I,children:(0,A.jsx)(S,{schema:{type:`markdown`,content:k(E?.content??``)}})}),R.length>=3?(0,A.jsx)(`aside`,{className:`hidden xl:block w-56 shrink-0`,children:(0,A.jsxs)(`nav`,{"aria-label":z,className:`sticky top-20 max-h-[calc(100vh-6rem)] overflow-auto`,children:[(0,A.jsx)(`div`,{className:`mb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground`,children:z}),(0,A.jsx)(`ul`,{className:`border-l border-border text-sm`,children:R.map(e=>(0,A.jsx)(`li`,{style:{paddingLeft:(e.depth-2)*12},children:(0,A.jsx)(`a`,{href:`#${e.id}`,onClick:t=>L(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{M 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{bt as r}from"./vendor-objectstack-DFqu45yM.js";import{$ as i}from"./ui-components-D6cEVg0T.js";import{Mt as a,Wi as o,_t as s,br as c}from"./framework-DFR4HNtj.js";var l=e(n(),1),u=t(),d=(0,l.createContext)(null);function f({user:e={},features:t={},permissions:n}={}){let r=o(e,n);return{current_user:r,user:r,ctx:{user:r},os:{user:r},features:t}}var p=new WeakMap;function m(e){let t=p.get(e);if(t===void 0){try{t=r(e)}catch(e){console.error(`[object-ui] current_user.can(object, verb) is not bound: the permissions payload was refused — ${e instanceof Error?e.message:String(e)}`),t=null}p.set(e,t)}return t??void 0}function h(){let{isLoaded:e,effectiveObjects:t}=i();return e&&t?m(t):void 0}function g(e={}){return new c(f(e))}function _({children:e,user:t={},app:n={},data:r={},features:i={}}){let o=h(),s=(0,l.useMemo)(()=>({user:t,app:n,data:r,features:i,evaluator:g({user:t,features:i,permissions:o})}),[t,n,r,i,o]),c=(0,l.useMemo)(()=>f({user:t,features:i,permissions:o}),[t,i,o]);return(0,u.jsx)(d.Provider,{value:s,children:(0,u.jsx)(a,{scope:c,children:e})})}function v(){let e=(0,l.useContext)(d);if(!e){let e={user:{},features:{}};return{...e,app:{},data:{},evaluator:g(e)}}return e}var y=`app-shell:visible`;function b(e,t,n=`visible`){if(e==null||e===!0||e===`true`)return!0;if(e===!1||e===`false`)return!1;let r=t=>s(y,void 0,n,e,t,`app-shell`);try{return t.evaluateCondition(e,{onFault:r})}catch(e){return r(e),!0}}function x(e,t){return e?.hidden!==!0&&b(e?.visibleWhen,t,`visibleWhen`)}export{v as a,x as i,g as n,h as o,b as r,_ 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-Cc34lEqb.js";import{An as i,Br as a,Hr as o,Jn as s,Mn as c,Nn as l,On as u,Pn as d,Qn as f,Ur as p,Vn as m,Vr as h,Wr as g,Xt as _,an as v,in as y,jn as b,nn as x,on as S,ri as C,rn as w,sn as T,tn as E,yi as D}from"./ui-components-D6cEVg0T.js";import{K as O,q as k}from"./framework-DFR4HNtj.js";import{t as A}from"./i18n-runtime-97_bDVjP.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-C0eXlKtx.js";import{O as z}from"./RecordDetailView-DgR_zhP4.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)(C,{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),[s,c]=(0,B.useState)(null),[l,d]=(0,B.useState)(``),[f,m]=(0,B.useState)(0),_=(0,B.useCallback)(async()=>{if(!e?.meta?.getItems){c(`meta.getItems is not available on this client`),i(!1);return}i(!0),c(null);try{let t=await e.meta.getItems(`flow`),r=(Array.isArray(t)?t:Array.isArray(t?.items)?t.items:[]).map(e=>({name:e?.spec?.name??e?.name,label:e?.spec?.label,spec:e?.spec??e,updatedAt:e?.updatedAt??e?.updated_at})).filter(e=>e.name);n(r),!l&&r.length>0&&d(r[0].name)}catch(e){c(e?.message??String(e))}finally{i(!1)}},[e,l]);(0,B.useEffect)(()=>{_()},[_]);let v=(0,B.useMemo)(()=>t.find(e=>e.name===l)??null,[t,l]);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)(a,{children:[(0,V.jsx)(p,{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)(g,{className:`text-base`,children:`Flow`}),(0,V.jsx)(o,{children:`Select a flow definition to test`})]}),(0,V.jsxs)(D,{variant:`outline`,size:`sm`,onClick:_,disabled:r,children:[(0,V.jsx)(L,{className:`h-3.5 w-3.5 mr-2 ${r?`animate-spin`:``}`}),`Refresh`]})]})}),(0,V.jsxs)(h,{children:[r&&(0,V.jsx)(u,{className:`h-9 w-72`}),s&&(0,V.jsx)(`p`,{className:`text-sm text-red-500 font-mono break-all`,children:s}),!r&&!s&&t.length===0&&(0,V.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No flow definitions found.`}),!r&&!s&&t.length>0&&(0,V.jsx)(`select`,{value:l,onChange:e=>d(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))})]})]}),v&&(0,V.jsxs)(`div`,{className:`grid gap-4 lg:grid-cols-2`,children:[(0,V.jsx)(q,{client:e,flow:v.spec,onExecuted:()=>m(e=>e+1)}),(0,V.jsx)(J,{client:e,flowName:v.name,refreshKey:f})]})]})}function q({client:e,flow:t,onExecuted:n}){let i=(0,B.useMemo)(()=>(t?.variables??[]).filter(e=>e?.isInput),[t]),c=O(),{objects:l}=k(),u=(0,B.useMemo)(()=>r(),[]),[d,m]=(0,B.useState)({}),[v,y]=(0,B.useState)(!1),[b,x]=(0,B.useState)(null),[S,w]=(0,B.useState)(null),[E,A]=(0,B.useState)(null);(0,B.useEffect)(()=>{m({}),x(null),w(null),A(null)},[t?.name]);let j=(e,t)=>m(n=>({...n,[e]:t}));return(0,V.jsxs)(a,{children:[(0,V.jsxs)(p,{className:`pb-3`,children:[(0,V.jsx)(g,{className:`text-base`,children:`Test Run`}),(0,V.jsx)(o,{children:`Provide input values and invoke the flow`})]}),(0,V.jsxs)(h,{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)(f,{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)(C,{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)(T,{id:`var-${e.name}`,checked:d[e.name]===`true`,onCheckedChange:t=>j(e.name,t?`true`:`false`)}),(0,V.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:d[e.name]===`true`?`true`:`false`})]}):e.type===`object`||e.type===`list`||e.type===`array`?(0,V.jsx)(_,{id:`var-${e.name}`,placeholder:`JSON ${e.type}`,value:d[e.name]??``,onChange:t=>j(e.name,t.target.value),className:`font-mono text-xs min-h-[80px]`}):(0,V.jsx)(s,{id:`var-${e.name}`,type:e.type===`number`?`number`:`text`,value:d[e.name]??``,onChange:t=>j(e.name,t.target.value)})]},e.name)),(0,V.jsx)(`div`,{className:`pt-1`,children:(0,V.jsxs)(D,{onClick:async()=>{if(!e?.automation?.execute){w(`automation.execute is not available on this client`);return}y(!0),w(null),x(null),A(null);try{let r={};for(let e of i){let t=d[e.name];t!==void 0&&(r[e.name]=W(t,e.type))}let a=await e.automation.execute(t.name,{params:r});x(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{y(!1)}},disabled:v,size:`sm`,children:[v?(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`}),v?`Running…`:`Run Flow`]})}),(b||S)&&(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:[S||b?.success===!1?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(N,{className:`h-4 w-4 text-red-500`}),` Failed`]}):b?.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 b?.durationMs==`number`&&(0,V.jsxs)(C,{variant:`secondary`,className:`text-[10px] font-mono`,children:[b.durationMs,` ms`]})]}),S&&(0,V.jsx)(`p`,{className:`text-sm text-red-500 font-mono break-all`,children:S}),b?.status===`paused`&&b?.screen&&b?.runId&&!E&&(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:b.screen.nodeId}),`.`]}),(0,V.jsx)(D,{size:`sm`,variant:`outline`,onClick:()=>A({flowName:t.name,runId:b.runId,screen:b.screen}),children:`Continue run`})]}),b&&(0,V.jsx)(G,{data:b})]})]}),(0,V.jsx)(z,{state:E,authFetch:u,baseUrl:``,dataSource:c,objects:l,onClose:()=>{A(null),n?.()},onComplete:()=>{A(null),n?.()}})]})}function J({client:e,flowName:t,refreshKey:n}){let r=A(),[s,f]=(0,B.useState)([]),[_,T]=(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`),T(!1);return}T(!0),k(null);try{let n=await e.automation.listRuns(t,{limit:20}),r=Array.isArray(n)?n:n?.items??n?.runs??[];f(r)}catch(e){k(e?.message??String(e))}finally{T(!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)(a,{children:[(0,V.jsx)(p,{className:`pb-3`,children:(0,V.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,V.jsxs)(`div`,{children:[(0,V.jsx)(g,{className:`text-base`,children:`Recent Runs`}),(0,V.jsx)(o,{className:`font-mono text-xs`,children:t})]}),(0,V.jsxs)(D,{variant:`outline`,size:`sm`,onClick:K,disabled:_,children:[_?(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)(h,{children:[_&&(0,V.jsxs)(`div`,{className:`space-y-2`,children:[(0,V.jsx)(u,{className:`h-8 w-full`}),(0,V.jsx)(u,{className:`h-8 w-full`}),(0,V.jsx)(u,{className:`h-8 w-full`})]}),!_&&O&&(0,V.jsx)(`p`,{className:`text-sm text-red-500 font-mono break-all`,children:O}),!_&&!O&&s.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.`}),!_&&!O&&s.length>0&&(0,V.jsxs)(E,{children:[(0,V.jsx)(v,{children:(0,V.jsxs)(S,{children:[(0,V.jsx)(y,{children:`Run`}),(0,V.jsx)(y,{children:`Status`}),(0,V.jsx)(y,{children:`Started`}),(0,V.jsx)(y,{className:`text-right`,children:`Duration`})]})}),(0,V.jsx)(x,{children:s.map(e=>(0,V.jsxs)(S,{className:`cursor-pointer`,onClick:()=>q(e.id),children:[(0,V.jsxs)(w,{className:`font-mono text-xs`,children:[e.id.slice(0,12),`…`]}),(0,V.jsx)(w,{children:(0,V.jsx)(H,{status:e.status})}),(0,V.jsx)(w,{className:`text-xs text-muted-foreground`,children:U(e.startedAt,r)}),(0,V.jsx)(w,{className:`text-right font-mono text-xs`,children:typeof e.durationMs==`number`?`${e.durationMs} ms`:`—`})]},e.id))})]})]})]}),(0,V.jsx)(i,{open:!!j,onOpenChange:e=>{e||(M(null),P(null))},children:(0,V.jsxs)(b,{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)(d,{className:`font-mono text-sm break-all`,children:[`Run `,j]}),(0,V.jsx)(c,{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)(C,{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)(m,{className:`flex-1 p-4`,children:[I&&(0,V.jsxs)(`div`,{className:`space-y-2`,children:[(0,V.jsx)(u,{className:`h-16 w-full`}),(0,V.jsx)(u,{className:`h-16 w-full`}),(0,V.jsx)(u,{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)(C,{variant:`outline`,className:`text-[10px] font-mono`,children:e.nodeType}),(0,V.jsx)(H,{status:e.status}),typeof e.durationMs==`number`&&(0,V.jsxs)(C,{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-Cc34lEqb.js";import{Et as o,Tt as s,kt as c,yt as l}from"./ui-components-D6cEVg0T.js";import{K as u,Lr as d,gt as f,lt as p,oi as m,q as h}from"./framework-DFR4HNtj.js";import{w as g}from"./i18n-runtime-97_bDVjP.js";import{t as _}from"./vendor-icon-database-C8JGjSkn.js";import{t as v}from"./RecordDetailView-DgR_zhP4.js";import{t as y}from"./plugins-views-CfkgqD30.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(d(e,r.filter(t=>e.fields?.[t])));let i=e?.fields;return i&&typeof i==`object`?n(d(e,Object.entries(i).filter(([e,t])=>t&&!t.hidden&&!m(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&&!m(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:d}=g(),{objects:m}=h(),x=u(),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(()=>(m||[]).find(e=>e.name===F.source),[m,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)(s,{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)(c,{children:d(`empty.objectNotFound`,{defaultValue:`Object Not Found`})}),(0,D.jsx)(o,{children:d(`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)(f,{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)(l,{...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:m,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-Cc34lEqb.js";import{$n as te,Ar as ne,Bn as re,Br as ie,Fr as ae,In as oe,Ln as se,Mr as ce,Nr as le,On as o,Pr as ue,Qn as s,Rn as de,Ur as fe,Vr as pe,Wr as me,cr as he,er as ge,jr as _e,nr as c,ri as l,yi as u,zn as ve,zr as ye}from"./ui-components-D6cEVg0T.js";import{Kr as d,q as be}from"./framework-DFR4HNtj.js";import{t as xe,w as Se}from"./i18n-runtime-97_bDVjP.js";import{t as Ce}from"./vendor-icon-arrow-left-DmGEbpkA.js";import{t as we}from"./vendor-icon-boxes-D-Ov3dJw.js";import{t as f}from"./vendor-icon-circle-alert-D1XTr_X9.js";import{t as Te}from"./vendor-icon-circle-arrow-up-bx9jlxK3.js";import{t as p}from"./vendor-icon-circle-check-Bq3OcFQN.js";import{t as m}from"./vendor-icon-code-xml-C9EWHSC8.js";import{t as Ee}from"./vendor-icon-database-C8JGjSkn.js";import{t as De}from"./vendor-icon-download-C3csYSaD.js";import{t as Oe}from"./vendor-icon-ellipsis-BjiiCS3N.js";import{t as ke}from"./vendor-icon-external-link-SBKz5x6R.js";import{t as Ae}from"./vendor-icon-folder-tree-BQ1wv9bt.js";import{t as h}from"./vendor-icon-loader-circle-D3PsuVaD.js";import{t as je}from"./vendor-icon-network-6ADGC5P5.js";import{t as Me}from"./vendor-icon-package-B6zAlWd3.js";import{t as g}from"./vendor-icon-shield-alert-CJYtPI9w.js";import{t as _}from"./vendor-icon-shield-check-CdDzbial.js";import{t as v}from"./vendor-icon-trash-BLsWkwB9.js";import{t as y}from"./vendor-icon-webhook-B43SyK1w.js";import{t as Ne}from"./assistantBus-DoNtw1Tf.js";import{M as Pe,_ as Fe,a as Ie,c as Le,f as Re,g as ze,h as Be,i as Ve,k as b,l as He,n as Ue,o as We,r as Ge,s as Ke,u as qe,v as Je,y as Ye}from"./app-shell-eager-leaves-Cf2bM6uT.js";import{i as Xe,n as Ze,r as Qe,t as $e}from"./usePackageL10n-Ci9uVkRZ.js";var x=e(a(),1),S=i();function C(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 w(e){let t=[],n=e,r=0,i=[{re:/`([^`]+)`/,render:e=>(0,S.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,S.jsx)(`strong`,{className:`font-semibold text-foreground`,children:e[1]},`k${r++}`)},{re:/\*([^*]+)\*/,render:e=>(0,S.jsx)(`em`,{children:e[1]},`k${r++}`)},{re:/\[([^\]]+)\]\(([^)]+)\)/,render:e=>(0,S.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,S.jsx)(S.Fragment,{children:t.map((e,t)=>(0,S.jsx)(x.Fragment,{children:e},t))})}function et({source:e,className:t}){let n=C(e);return(0,S.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,S.jsx)(`h2`,{className:`mt-2 text-xl font-bold tracking-tight`,children:w(e.text??``)},t);case`h2`:return(0,S.jsx)(`h3`,{className:`mt-3 text-base font-semibold tracking-tight`,children:w(e.text??``)},t);case`h3`:return(0,S.jsx)(`h4`,{className:`mt-2 text-sm font-semibold tracking-tight text-foreground/80`,children:w(e.text??``)},t);case`p`:return(0,S.jsx)(`p`,{children:w(e.text??``)},t);case`ul`:return(0,S.jsx)(`ul`,{className:`ml-1 flex list-none flex-col gap-1.5`,children:(e.items??[]).map((e,t)=>(0,S.jsxs)(`li`,{className:`flex gap-2`,children:[(0,S.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,S.jsx)(`span`,{children:w(e)})]},t))},t);case`ol`:return(0,S.jsx)(`ol`,{className:`ml-5 flex list-decimal flex-col gap-1.5 marker:text-muted-foreground`,children:(e.items??[]).map((e,t)=>(0,S.jsx)(`li`,{className:`pl-1`,children:w(e)},t))},t);case`code`:return(0,S.jsx)(`pre`,{className:`overflow-x-auto rounded-lg border bg-muted/40 p-3 text-xs leading-relaxed`,children:(0,S.jsx)(`code`,{className:`font-mono`,children:e.text})},t)}return null})})}var tt={node:`In-process · full trust`,sandbox:`Sandboxed`,worker:`Out-of-process`};function T({icon:e,label:t,items:n}){return!n||n.length===0?null:(0,S.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,S.jsx)(e,{className:`h-3.5 w-3.5 mt-0.5 text-muted-foreground shrink-0`,"aria-hidden":`true`}),(0,S.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,S.jsx)(`div`,{className:`text-xs font-medium`,children:t}),(0,S.jsx)(`div`,{className:`flex flex-wrap gap-1 mt-0.5`,children:n.map(e=>(0,S.jsx)(`code`,{className:`font-mono text-[11px] px-1 py-0.5 rounded bg-muted break-all`,children:e},e))})]})]})}function nt({version:e}){let{t}=Se();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,S.jsxs)(`div`,{className:`rounded-md border border-amber-500/30 bg-amber-500/5 p-3 space-y-3 text-sm`,children:[(0,S.jsxs)(`div`,{className:`flex items-center gap-2 font-medium`,children:[(0,S.jsx)(m,{className:`h-4 w-4 text-amber-600 shrink-0`,"aria-hidden":`true`}),t(`marketplace.disclosure.containsCode`,{defaultValue:`This package contains code`})]}),(0,S.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[e.runtime&&(0,S.jsx)(l,{variant:`outline`,children:t(`marketplace.disclosure.runtime.${e.runtime}`,{defaultValue:tt[e.runtime]})}),e.platform_verified?(0,S.jsxs)(l,{variant:`outline`,className:`gap-1 border-green-500/40 text-green-700 dark:text-green-400`,children:[(0,S.jsx)(_,{className:`h-3 w-3`,"aria-hidden":`true`}),t(`marketplace.disclosure.reviewed`,{defaultValue:`Reviewed & approved`})]}):(0,S.jsxs)(l,{variant:`outline`,className:`gap-1 border-amber-500/40 text-amber-700 dark:text-amber-400`,children:[(0,S.jsx)(g,{className:`h-3 w-3`,"aria-hidden":`true`}),t(`marketplace.disclosure.unreviewed`,{defaultValue:`Not yet reviewed`})]}),e.signed&&(0,S.jsxs)(l,{variant:`outline`,className:`gap-1`,children:[(0,S.jsx)(p,{className:`h-3 w-3`,"aria-hidden":`true`}),t(`marketplace.disclosure.signed`,{defaultValue:`Signed`})]})]}),r?(0,S.jsxs)(`div`,{className:`space-y-2`,children:[(0,S.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:t(`marketplace.disclosure.grantsIntro`,{defaultValue:`This package requests:`})}),(0,S.jsx)(T,{icon:we,label:t(`marketplace.disclosure.services`,{defaultValue:`Platform services`}),items:n.services??void 0}),(0,S.jsx)(T,{icon:y,label:t(`marketplace.disclosure.hooks`,{defaultValue:`Lifecycle hooks`}),items:n.hooks??void 0}),(0,S.jsx)(T,{icon:je,label:t(`marketplace.disclosure.network`,{defaultValue:`Network access`}),items:n.network??void 0}),(0,S.jsx)(T,{icon:Ae,label:t(`marketplace.disclosure.fs`,{defaultValue:`Filesystem access`}),items:n.fs??void 0}),(0,S.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,S.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:t(`marketplace.disclosure.noPermissions`,{defaultValue:`Requests no special permissions.`})})]})}var E=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*)?$/;function D(e){let t=E.exec(e.trim());return t?{core:[Number(t[1]),Number(t[2]),Number(t[3])],prerelease:t[4]?t[4].split(`.`):[]}:null}var O=/^\d+$/;function rt(e,t){let n=O.test(e),r=O.test(t);return n&&r?Math.sign(Number(e)-Number(t)):n?-1:r?1:e<t?-1:+(e>t)}function k(e,t){let n=D(e),r=D(t);if(!n||!r)return null;for(let e=0;e<3;e+=1)if(n.core[e]!==r.core[e])return n.core[e]<r.core[e]?-1:1;if(n.prerelease.length===0||r.prerelease.length===0)return n.prerelease.length===r.prerelease.length?0:n.prerelease.length===0?1:-1;let i=Math.min(n.prerelease.length,r.prerelease.length);for(let e=0;e<i;e+=1){let t=rt(n.prerelease[e],r.prerelease[e]);if(t!==0)return t}return n.prerelease.length===r.prerelease.length?0:n.prerelease.length<r.prerelease.length?-1:1}function it(e,t){return k(e,t)===1}var A=t({MarketplacePackagePage:()=>j});function j(){let e=n(),{packageId:t,appName:i}=r(),{isAdmin:a,isResolved:we}=ee(),{t:m,language:Ae}=Se(),je=xe(),g={describe:e=>m(e.anchor===`guest`?`marketplace.suggestedBindings.promptGuest`:`marketplace.suggestedBindings.promptEveryone`,{set:e.permission_set_name}),confirm:m(`marketplace.suggestedBindings.confirm`),confirming:m(`marketplace.suggestedBindings.confirming`),dismiss:m(`marketplace.suggestedBindings.dismiss`),confirmedToast:e=>m(`marketplace.suggestedBindings.confirmedToast`,{set:e.permission_set_name,anchor:e.anchor}),dismissedToast:e=>m(`marketplace.suggestedBindings.dismissedToast`,{set:e.permission_set_name})},_=i?`/apps/${i}`:``,{refresh:y}=be(),C=Pe(),[w,tt]=(0,x.useState)(null),[T,E]=(0,x.useState)(C),[D,O]=(0,x.useState)(null),[rt,k]=(0,x.useState)(!1),[A,j]=(0,x.useState)([]),[at,M]=(0,x.useState)(!1),[N,P]=(0,x.useState)(null),[F,ot]=(0,x.useState)(``),[st,ct]=(0,x.useState)({}),[lt,ut]=(0,x.useState)(!1),[dt,ft]=(0,x.useState)(!1),[I,pt]=(0,x.useState)(!1),[L,R]=(0,x.useState)(null),[z,mt]=(0,x.useState)(null),[B,V]=(0,x.useState)(null),[H,U]=(0,x.useState)(null),[W,G]=(0,x.useState)(null),[ht,gt]=(0,x.useState)(!1),[_t,vt]=(0,x.useState)([]),[yt,K]=(0,x.useState)(!1),[q,J]=(0,x.useState)(null);(0,x.useEffect)(()=>{if(!b().features.installLocal||!C||!a)return;let e=!1;return(async()=>{let t=await Re();e||vt(t)})(),()=>{e=!0}},[t,q,C,a]),(0,x.useEffect)(()=>{if(!t||!C||!a)return;let e=b().defaultEnvironmentId??``,n=!1;return(async()=>{let r=await Ie(t,e);!n&&r&&(V(r),mt(r.version))})(),()=>{n=!0}},[t,C,a]),(0,x.useEffect)(()=>{let e=!1;return(async()=>{if(t&&C&&a){E(!0),O(null);try{let n=await We(t);e||tt(n)}catch(t){e||O(t?.message??String(t))}finally{e||E(!1)}}})(),()=>{e=!0}},[t,C,a]);let bt=async()=>{k(!0),R(null),P(null);let e=b().defaultEnvironmentId;if(e){M(!1),ot(e),j([]);return}M(!0);try{let[e,n]=await Promise.all([He(),qe()]),r=e.filter(e=>{let t=e.organization_id;return t?n.has(String(t)):!1});j(r),ct({});let i=t;i&&Promise.all(r.map(async e=>{try{let t=await Ie(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]);ct(t)}),e.length>0&&r.length===0?P(m(`marketplace.install.noPermission`)):r.length===1&&ot(r[0].id)}catch(e){let t=e?.status;P(t===401||t===403?m(`marketplace.install.signInFirst`):e?.message??String(e))}finally{M(!1)}},xt=async()=>{if(t&&F){pt(!0),R(null);try{let e=(await Le({packageId:t,environmentId:F,seedSampleData:lt}))?.installation?.version??w?.package?.latest_version?.version??w?.versions?.[0]?.version??``;mt(e||`installed`);try{let e=b().defaultEnvironmentId||F;if(e){let n=await Ie(t,e);n&&V(n)}}catch{}let n=b().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 y()}catch{}R({ok:!0,message:m(`marketplace.install.success`)}),Ne()}catch(e){R({ok:!1,message:e?.message??String(e)})}finally{pt(!1)}}},St=async()=>{if(t){K(!0),J(null);try{let e=await Ke({packageId:t});try{await y(`app`)}catch{}J({ok:!0,message:m(`marketplace.install.localSuccess`,{version:e.version,name:w?.package?$e(w.package,Ae).displayName:e.manifestId})}),Ne()}catch(e){e?.code;let t=e?.message??String(e);d(e,`MANIFEST_CONFLICT`)?t=m(`marketplace.install.localManifestConflict`,{message:t}):d(e,`UNAUTHENTICATED`)?t=m(`marketplace.install.localUnauthorized`):d(e,`MARKETPLACE_UNAVAILABLE`)&&(t=m(`marketplace.install.localMarketplaceUnavailable`)),J({ok:!1,message:t})}finally{K(!1)}}},Ct=async()=>{if(Q&&confirm(m(`marketplace.uninstall.confirm`,{manifestId:Q.manifestId,version:Q.version}))){K(!0),J(null);try{await Ye(Q.manifestId);try{await y(`app`)}catch{}J({ok:!0,message:m(`marketplace.uninstall.successInDetail`,{manifestId:Q.manifestId})})}catch(e){J({ok:!1,message:e?.message??String(e)})}finally{K(!1)}}},wt=async()=>{if(B){U(`reseed`),G(null);try{let e=await Je(B.installationId);e.ok?(V({...B,withSampleData:!0}),G({ok:!0,text:m(`marketplace.detail.reseedQueued`)})):d(e,`ENVIRONMENT_KERNEL_UNAVAILABLE`)?(gt(!0),G({ok:!1,text:m(`marketplace.detail.sampleDataKernelUnavailable`)})):G({ok:!1,text:e.error||`Re-seed failed`})}finally{U(null)}}},Tt=async()=>{if(B&&confirm(m(`marketplace.detail.purgeConfirm`))){U(`purge`),G(null);try{let e=await ze(B.installationId);if(e.ok){V({...B,withSampleData:!1});let t=e.deleted??0;G({ok:!0,text:t>0?m(`marketplace.detail.purgeSuccess`,{count:t}):m(`marketplace.detail.purgeNoData`)})}else d(e,`ENVIRONMENT_KERNEL_UNAVAILABLE`)?(gt(!0),G({ok:!1,text:m(`marketplace.detail.sampleDataKernelUnavailable`)})):G({ok:!1,text:e.error||`Purge failed`})}finally{U(null)}}},Et=async()=>{if(Q){U(`reseed`),G(null);try{let e=await Fe(Q.manifestId);vt(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=m(`marketplace.detail.reseedLocalSuccess`,{inserted:t,updated:n});G(r>0?{ok:!1,text:`${i} ${m(`marketplace.detail.reseedPartialErrors`,{count:r})}`}:{ok:!0,text:i})}catch(e){G({ok:!1,text:e?.message||`Re-seed failed`})}finally{U(null)}}},Dt=async()=>{if(Q&&confirm(m(`marketplace.detail.purgeConfirm`))){U(`purge`),G(null);try{let e=await Be(Q.manifestId);vt(e=>e.map(e=>e.manifestId===Q.manifestId?{...e,withSampleData:!1}:e));let t=e.deleted??0;G({ok:!0,text:t>0?m(`marketplace.detail.purgeSuccess`,{count:t}):m(`marketplace.detail.purgeNoData`)})}catch(e){G({ok:!1,text:e?.message||`Purge failed`})}finally{U(null)}}};if(!C)return(0,S.jsx)(Ze,{});if(!we)return(0,S.jsx)(Qe,{});if(!a)return(0,S.jsx)(Ge,{});if(T)return(0,S.jsxs)(`div`,{className:`mx-auto w-full max-w-6xl flex flex-col gap-6 p-4 sm:p-6`,children:[(0,S.jsx)(o,{className:`h-8 w-32`}),(0,S.jsx)(o,{className:`h-16 w-full`}),(0,S.jsx)(o,{className:`h-64 w-full`})]});if(D||!w)return(0,S.jsxs)(`div`,{className:`mx-auto w-full max-w-6xl flex flex-col gap-6 p-4 sm:p-6`,children:[(0,S.jsxs)(u,{variant:`ghost`,size:`sm`,onClick:()=>e(`${_}/system/marketplace`),children:[(0,S.jsx)(Ce,{className:`h-4 w-4 mr-1.5`,"aria-hidden":`true`}),m(`marketplace.back`)]}),(0,S.jsxs)(`div`,{className:`flex items-start gap-3 rounded-md border border-destructive/30 bg-destructive/5 p-4 text-sm`,children:[(0,S.jsx)(f,{className:`h-4 w-4 mt-0.5 text-destructive`,"aria-hidden":`true`}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`div`,{className:`font-medium text-destructive`,children:m(`marketplace.load.packageFailed`)}),(0,S.jsx)(`div`,{className:`text-muted-foreground mt-1`,children:D??m(`marketplace.load.notFound`)})]})]})]});let Y=w.package,X=$e(Y,Ae),Z=Y.latest_version?.version??w.versions[0]?.version??null,Q=_t.find(e=>e.manifestId===Y.manifest_id)??null,Ot=!!Y.latest_version?.contains_code,$=!!z&&!!Z&&it(Z,z),kt=b().features.installLocal,At=!Z||yt||I||!kt&&!!z&&!$,jt=kt?{label:m(yt?`marketplace.action.working`:Q?`marketplace.action.reinstall`:`marketplace.action.install`),onClick:St}:{label:I?m(`marketplace.action.installing`):z?$?m(`marketplace.action.updateTo`,{defaultValue:`Update`}):m(`marketplace.action.installed`,{defaultValue:`Installed`}):m(`marketplace.action.installToCloud`),onClick:bt},Mt=Y.category?m(`marketplace.category.${Y.category}`,{defaultValue:Y.category}):null;return(0,S.jsxs)(`div`,{className:`mx-auto w-full max-w-6xl flex flex-col gap-6 p-4 sm:p-6`,children:[(0,S.jsxs)(u,{variant:`ghost`,size:`sm`,className:`self-start -ml-2 text-muted-foreground hover:text-foreground`,onClick:()=>e(`${_}/system/marketplace`),children:[(0,S.jsx)(Ce,{className:`h-4 w-4 mr-1.5`,"aria-hidden":`true`}),m(`marketplace.back`)]}),(0,S.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,S.jsx)(Xe,{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,S.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,S.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,S.jsx)(`h1`,{className:`text-2xl sm:text-3xl font-bold tracking-tight truncate`,children:X.displayName||Y.manifest_id}),Y.homepage_url&&(0,S.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:m(`marketplace.detail.homepage`),children:[(0,S.jsx)(ke,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}),(0,S.jsx)(`span`,{className:`hidden sm:inline`,children:m(`marketplace.detail.homepage`)})]})]}),(0,S.jsxs)(`div`,{className:`text-sm text-muted-foreground mt-2 flex flex-wrap items-center gap-1.5`,children:[(0,S.jsx)(`code`,{className:`font-mono text-xs px-1.5 py-0.5 rounded bg-muted`,children:Y.manifest_id}),Z&&(0,S.jsx)(l,{variant:`outline`,children:m(`marketplace.versionBadge`,{version:Z})}),Y.publisher&&Y.publisher!==`private`&&(0,S.jsx)(l,{variant:Y.publisher===`objectstack`?`default`:`secondary`,children:Y.publisher}),Mt&&(0,S.jsx)(l,{variant:`outline`,children:Mt}),Y.license&&(0,S.jsx)(l,{variant:`outline`,className:`font-normal`,children:Y.license}),Q&&(0,S.jsxs)(l,{variant:`default`,className:`bg-green-600 hover:bg-green-600 gap-1`,children:[(0,S.jsx)(p,{className:`h-3 w-3`,"aria-hidden":`true`}),m(`marketplace.detail.installedV`,{version:Q.version})]}),!Q&&z&&(0,S.jsxs)(l,{variant:`default`,className:`bg-green-600 hover:bg-green-600 gap-1`,children:[(0,S.jsx)(p,{className:`h-3 w-3`,"aria-hidden":`true`}),m(`marketplace.detail.installedV`,{version:z})]}),$&&(0,S.jsxs)(l,{variant:`default`,className:`bg-amber-500 hover:bg-amber-500 gap-1`,children:[(0,S.jsx)(Te,{className:`h-3 w-3`,"aria-hidden":`true`}),m(`marketplace.detail.updateAvailable`,{defaultValue:`Update available`}),` → v`,Z]})]}),X.description&&(0,S.jsx)(`p`,{className:`text-sm sm:text-base text-foreground/80 mt-3 max-w-2xl leading-relaxed`,children:X.description})]}),(0,S.jsxs)(`div`,{className:`flex items-center gap-2 shrink-0 self-start`,children:[(0,S.jsxs)(u,{onClick:jt.onClick,disabled:At,size:`lg`,className:`min-w-[8rem]`,children:[(0,S.jsx)(De,{className:`h-4 w-4 mr-1.5`,"aria-hidden":`true`}),jt.label]}),Q&&(0,S.jsxs)(te,{children:[(0,S.jsx)(he,{asChild:!0,children:(0,S.jsx)(u,{variant:`outline`,size:`lg`,className:`px-2.5`,"aria-label":m(`marketplace.detail.moreOptions`),children:(0,S.jsx)(Oe,{className:`h-4 w-4`,"aria-hidden":`true`})})}),(0,S.jsxs)(ge,{align:`end`,className:`w-56`,children:[(0,S.jsxs)(c,{onSelect:Et,disabled:H!==null,children:[H===`reseed`?(0,S.jsx)(h,{className:`h-4 w-4 mr-2 animate-spin`,"aria-hidden":`true`}):(0,S.jsx)(Ee,{className:`h-4 w-4 mr-2`,"aria-hidden":`true`}),Q.withSampleData?m(`marketplace.detail.reseedAgain`):m(`marketplace.detail.addSampleData`)]}),(0,S.jsxs)(c,{onSelect:Dt,disabled:H!==null||!Q.withSampleData,className:`text-destructive focus:text-destructive`,children:[H===`purge`?(0,S.jsx)(h,{className:`h-4 w-4 mr-2 animate-spin`,"aria-hidden":`true`}):(0,S.jsx)(v,{className:`h-4 w-4 mr-2`,"aria-hidden":`true`}),m(`marketplace.detail.purgeSampleData`)]}),(0,S.jsxs)(c,{onSelect:Ct,disabled:yt,className:`text-destructive focus:text-destructive`,children:[(0,S.jsx)(v,{className:`h-4 w-4 mr-2`,"aria-hidden":`true`}),m(`marketplace.detail.uninstallFromRuntime`)]})]})]}),!Q&&B&&!b().cloudUrl&&(0,S.jsxs)(te,{children:[(0,S.jsx)(he,{asChild:!0,children:(0,S.jsx)(u,{variant:`outline`,size:`lg`,className:`px-2.5`,"aria-label":m(`marketplace.detail.moreOptions`),children:(0,S.jsx)(Oe,{className:`h-4 w-4`,"aria-hidden":`true`})})}),(0,S.jsxs)(ge,{align:`end`,className:`w-56`,children:[(0,S.jsxs)(c,{onSelect:wt,disabled:H!==null||ht,children:[H===`reseed`?(0,S.jsx)(h,{className:`h-4 w-4 mr-2 animate-spin`,"aria-hidden":`true`}):(0,S.jsx)(Ee,{className:`h-4 w-4 mr-2`,"aria-hidden":`true`}),B.withSampleData?m(`marketplace.detail.reseedAgain`):m(`marketplace.detail.addSampleData`)]}),(0,S.jsxs)(c,{onSelect:Tt,disabled:H!==null||ht||!B.withSampleData,className:`text-destructive focus:text-destructive`,children:[H===`purge`?(0,S.jsx)(h,{className:`h-4 w-4 mr-2 animate-spin`,"aria-hidden":`true`}):(0,S.jsx)(v,{className:`h-4 w-4 mr-2`,"aria-hidden":`true`}),m(`marketplace.detail.purgeSampleData`)]})]})]})]})]}),W&&(0,S.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,S.jsx)(p,{className:`h-4 w-4 mt-0.5 shrink-0`,"aria-hidden":`true`}):(0,S.jsx)(f,{className:`h-4 w-4 mt-0.5 shrink-0`,"aria-hidden":`true`}),(0,S.jsx)(`div`,{className:`flex-1`,children:W.text}),(0,S.jsx)(`button`,{type:`button`,className:`text-xs underline opacity-60 hover:opacity-100`,onClick:()=>G(null),children:m(`marketplace.action.dismiss`)})]}),q&&(0,S.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,S.jsx)(p,{className:`h-4 w-4 mt-0.5 shrink-0`,"aria-hidden":`true`}):(0,S.jsx)(f,{className:`h-4 w-4 mt-0.5 shrink-0`,"aria-hidden":`true`}),(0,S.jsxs)(`div`,{className:`flex-1`,children:[q.message,q.ok&&(0,S.jsx)(Ue,{packageId:Y.manifest_id,strings:g,className:`mt-2`})]}),(0,S.jsx)(`button`,{type:`button`,className:`text-xs underline opacity-60 hover:opacity-100`,onClick:()=>J(null),children:m(`marketplace.action.dismiss`)})]}),(0,S.jsxs)(`div`,{className:`grid gap-4 lg:grid-cols-3`,children:[(0,S.jsx)(`div`,{className:`lg:col-span-2 space-y-4`,children:(0,S.jsxs)(ie,{children:[(0,S.jsx)(fe,{children:(0,S.jsx)(me,{className:`text-base`,children:m(`marketplace.detail.about`)})}),(0,S.jsx)(pe,{children:X.readme?(0,S.jsx)(et,{source:X.readme}):(0,S.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:m(`marketplace.detail.noReadme`)})})]})}),(0,S.jsx)(`div`,{className:`space-y-4`,children:(0,S.jsxs)(ie,{children:[(0,S.jsx)(fe,{children:(0,S.jsx)(me,{className:`text-base`,children:m(`marketplace.detail.versions`)})}),(0,S.jsx)(pe,{children:w.versions.length===0?(0,S.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:m(`marketplace.detail.noApprovedVersions`)}):(0,S.jsx)(`ul`,{className:`space-y-3`,children:w.versions.map(e=>(0,S.jsxs)(`li`,{className:`space-y-1 text-sm`,children:[(0,S.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,S.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,S.jsx)(Me,{className:`h-3.5 w-3.5 text-muted-foreground`,"aria-hidden":`true`}),(0,S.jsxs)(`code`,{className:`font-mono`,children:[`v`,e.version]}),e.is_prerelease&&(0,S.jsx)(l,{variant:`outline`,className:`text-xs`,children:m(`marketplace.detail.prerelease`)})]}),(0,S.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e.published_at?new Date(e.published_at).toLocaleDateString(je):`—`})]}),e.release_notes&&e.release_notes.trim()&&(0,S.jsx)(`p`,{className:`whitespace-pre-line pl-5 text-xs text-muted-foreground`,children:e.release_notes.trim()})]},e.id))})})]})})]}),(0,S.jsx)(ne,{open:rt,onOpenChange:e=>{k(e),e||(R(null),ft(!1))},children:(0,S.jsxs)(_e,{children:[(0,S.jsxs)(ue,{children:[(0,S.jsx)(ae,{children:m(`marketplace.install.dialogTitle`,{name:X.displayName||Y.manifest_id})}),(0,S.jsx)(ce,{children:b().defaultEnvironmentId?m(`marketplace.install.dialogDescCurrent`,{host:typeof window<`u`?window.location.host:``}):m(`marketplace.install.dialogDescPicker`)})]}),at?(0,S.jsx)(o,{className:`h-10 w-full`}):N?(0,S.jsxs)(`div`,{className:`rounded-md border border-amber-500/30 bg-amber-500/5 p-3 text-sm space-y-2`,children:[(0,S.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,S.jsx)(f,{className:`h-4 w-4 mt-0.5 text-amber-600`,"aria-hidden":`true`}),(0,S.jsx)(`div`,{className:`flex-1`,children:N})]}),Ve()?(0,S.jsx)(`a`,{href:Ve(),target:`_blank`,rel:`noopener noreferrer`,children:(0,S.jsxs)(u,{variant:`outline`,size:`sm`,className:`w-full`,children:[(0,S.jsx)(ke,{className:`h-4 w-4 mr-1.5`,"aria-hidden":`true`}),m(`marketplace.action.openOnCloud`)]})}):null]}):b().defaultEnvironmentId?(0,S.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,S.jsx)(ye,{id:`seed`,checked:lt,onCheckedChange:e=>ut(e===!0)}),(0,S.jsx)(s,{htmlFor:`seed`,className:`text-sm font-normal cursor-pointer`,children:m(`marketplace.install.includeSampleData`)})]}):A.length===0?(0,S.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:m(`marketplace.install.noEnvs`)}):(0,S.jsxs)(`div`,{className:`space-y-4`,children:[(0,S.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,S.jsx)(s,{htmlFor:`env-select`,children:m(`marketplace.install.environment`)}),(0,S.jsxs)(oe,{value:F,onValueChange:ot,children:[(0,S.jsx)(ve,{id:`env-select`,children:(0,S.jsx)(re,{placeholder:m(`marketplace.install.environmentPlaceholder`)})}),(0,S.jsx)(se,{children:A.map(e=>{let t=st[e.id],n=!!t&&!!Z&&it(Z,t);return(0,S.jsxs)(de,{value:e.id,children:[e.display_name||e.hostname||e.id,e.plan&&(0,S.jsxs)(`span`,{className:`text-muted-foreground`,children:[` · `,e.plan]}),t&&(n?(0,S.jsxs)(`span`,{className:`text-amber-600`,children:[` · `,m(`marketplace.install.updateTo`,{defaultValue:`Update → v{{version}}`,version:Z})]}):(0,S.jsxs)(`span`,{className:`text-muted-foreground`,children:[` · `,m(`marketplace.install.installedVersion`,{defaultValue:`Installed v{{version}}`,version:t})]}))]},e.id)})})]})]}),(0,S.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,S.jsx)(ye,{id:`seed`,checked:lt,onCheckedChange:e=>ut(e===!0)}),(0,S.jsx)(s,{htmlFor:`seed`,className:`text-sm font-normal cursor-pointer`,children:m(`marketplace.install.includeSampleData`)})]})]}),Ot&&!N&&(0,S.jsxs)(`div`,{className:`space-y-3`,children:[(0,S.jsx)(nt,{version:Y.latest_version}),(0,S.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,S.jsx)(ye,{id:`ack-perms`,checked:dt,onCheckedChange:e=>ft(e===!0)}),(0,S.jsx)(s,{htmlFor:`ack-perms`,className:`text-sm font-normal cursor-pointer leading-snug`,children:m(`marketplace.disclosure.acknowledge`,{defaultValue:`I understand this package runs code and grants the permissions above.`})})]})]}),L&&(0,S.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&&b().defaultEnvironmentId&&b().defaultEnvironmentId===F&&(0,S.jsx)(Ue,{packageId:Y.manifest_id,strings:g}),(0,S.jsxs)(le,{children:[(0,S.jsx)(u,{variant:`outline`,onClick:()=>k(!1),children:m(`marketplace.action.close`)}),!N&&(0,S.jsx)(u,{onClick:xt,disabled:!F||I||L?.ok===!0||Ot&&!dt,children:m(I?`marketplace.action.installing`:`marketplace.action.install`)})]})]})})]})}export{A as t};
@@ -1 +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-Cc34lEqb.js";import{Br as o,Hr as s,Jn as te,On as c,Ur as l,Vr as u,Wr as d,ri as f,yi as p}from"./ui-components-D6cEVg0T.js";import{t as m,w as h}from"./i18n-runtime-97_bDVjP.js";import{t as ne}from"./vendor-icon-circle-alert-D1XTr_X9.js";import{t as g}from"./vendor-icon-circle-check-Bq3OcFQN.js";import{t as _}from"./vendor-icon-package-B6zAlWd3.js";import{t as re}from"./vendor-icon-refresh-ccw-QRCaXN-I.js";import{t as ie}from"./vendor-icon-search-B2Uqtp_W.js";import{t as ae}from"./vendor-icon-settings-CYQ7xc_F.js";import{t as v}from"./vendor-icon-store-CwiX9Ffi.js";import{t as oe}from"./assistantBus-DoNtw1Tf.js";import{M as se,c as y,d as b,f as x,k as ce,m as le,p as ue,r as de,s as fe,x as S}from"./app-shell-eager-leaves-Cf2bM6uT.js";import{i as C,n as w,r as T,t as E}from"./usePackageL10n-Ci9uVkRZ.js";var D=t({MarketplacePage:()=>A}),O=e(a(),1),k=i();function pe(){let{t:e}=h(),t=m();return n=>{if(!n)return``;let r=new Date(n);if(Number.isNaN(r.getTime()))return``;let i=Math.floor((Date.now()-r.getTime())/864e5);if(i<1)return e(`marketplace.relativeTime.today`);try{let e=new Intl.RelativeTimeFormat(t,{numeric:`auto`});return i<30?e.format(-i,`day`):i<365?e.format(-Math.floor(i/30),`month`):e.format(-Math.floor(i/365),`year`)}catch{return i<30?e(`marketplace.relativeTime.daysAgo`,{count:i}):i<365?e(`marketplace.relativeTime.monthsAgo`,{count:Math.floor(i/30)}):e(`marketplace.relativeTime.yearsAgo`,{count:Math.floor(i/365)})}}}function A(){let e=n(),{appName:t}=r(),{isAdmin:i,isResolved:a}=ee(),{t:m,language:D}=h(),A=pe(),j=t?`/apps/${t}`:``,M=se(),N=S(),[P,F]=(0,O.useState)([]),[I,L]=(0,O.useState)(M),[R,z]=(0,O.useState)(null),[B,me]=(0,O.useState)(``),[V,H]=(0,O.useState)(``),[U,he]=(0,O.useState)([]),[W,ge]=(0,O.useState)([]),[G,K]=(0,O.useState)(null),[q,J]=(0,O.useState)(null),[_e,ve]=(0,O.useState)(new Set),Y=(0,O.useMemo)(()=>{let e=new Map;for(let t of U)e.set(t.manifestId,t);return e},[U]),X=async()=>{L(!0),z(null);try{let[e,t,n,r]=await Promise.all([ue({limit:100}),x(),le(),b()]);F(e.items??[]),he(t),ge(n.items??[]);let i=new Set;for(let e of t)i.add(e.manifestId);for(let e of r.items)i.add(e.manifestId);ve(i)}catch(e){z(e?.message??String(e)),F([])}finally{L(!1)}};(0,O.useEffect)(()=>{M&&X()},[M]);let ye=async e=>{K(e.id),J(null);try{ce().features.installLocal?await fe({packageId:e.manifest_id||e.id,versionId:`latest`}):await y({packageId:e.id,environmentId:``,seedSampleData:!0}),J({ok:!0,text:m(`marketplace.org.installed`,{defaultValue:`Installed ${e.display_name}`,name:e.display_name})}),await X(),oe()}catch(e){J({ok:!1,text:e?.message??String(e)})}finally{K(null)}},Z=(0,O.useMemo)(()=>{let e=new Set;for(let t of P)t.category&&e.add(t.category);return Array.from(e).sort()},[P]),Q=e=>{let t=`marketplace.category.${e}`,n=m(t,{defaultValue:e});return n===t?e:n},$=(0,O.useMemo)(()=>{let e=B.trim().toLowerCase();return P.filter(t=>{if(V&&t.category!==V)return!1;if(!e)return!0;let n=E(t,D);return`${n.displayName} ${t.manifest_id} ${n.description??``}`.toLowerCase().includes(e)})},[P,B,V,D]);return M?a?i?(0,k.jsxs)(`div`,{className:`flex flex-col gap-6 p-4 sm:p-6`,children:[(0,k.jsxs)(`div`,{className:`flex items-start justify-between gap-4 flex-wrap`,children:[(0,k.jsxs)(`div`,{className:`min-w-0`,children:[(0,k.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,k.jsx)(v,{className:`h-6 w-6 text-primary`,"aria-hidden":`true`}),(0,k.jsx)(`h1`,{className:`text-xl sm:text-2xl font-bold tracking-tight`,children:m(`marketplace.title`)})]}),(0,k.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1`,children:m(`marketplace.subtitle`)})]}),(0,k.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,k.jsxs)(p,{variant:`outline`,size:`sm`,onClick:()=>e(`${j}/system/marketplace/installed`),children:[(0,k.jsx)(ae,{className:`h-4 w-4 mr-1.5`,"aria-hidden":`true`}),U.length>0?m(`marketplace.installedCount`,{count:U.length}):m(`marketplace.installed`)]}),(0,k.jsxs)(p,{variant:`outline`,size:`sm`,onClick:()=>void X(),disabled:I,children:[(0,k.jsx)(re,{className:`h-4 w-4 mr-1.5`,"aria-hidden":`true`}),m(`marketplace.refresh`)]})]})]}),(0,k.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-3`,children:[(0,k.jsxs)(`div`,{className:`relative flex-1`,children:[(0,k.jsx)(ie,{className:`absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground`,"aria-hidden":`true`}),(0,k.jsx)(te,{value:B,onChange:e=>me(e.target.value),placeholder:m(`marketplace.searchPlaceholder`),className:`pl-9`,"aria-label":m(`marketplace.searchAria`)})]}),Z.length>0&&(0,k.jsxs)(`div`,{className:`flex flex-wrap gap-1.5`,children:[(0,k.jsx)(p,{size:`sm`,variant:V===``?`default`:`outline`,onClick:()=>H(``),children:m(`marketplace.all`)}),Z.map(e=>(0,k.jsx)(p,{size:`sm`,variant:V===e?`default`:`outline`,onClick:()=>H(e),children:Q(e)},e))]})]}),R&&(0,k.jsxs)(`div`,{className:`flex items-start gap-3 rounded-md border border-destructive/30 bg-destructive/5 p-4 text-sm`,children:[(0,k.jsx)(ne,{className:`h-4 w-4 mt-0.5 text-destructive`,"aria-hidden":`true`}),(0,k.jsxs)(`div`,{children:[(0,k.jsx)(`div`,{className:`font-medium text-destructive`,children:m(`marketplace.load.failed`)}),(0,k.jsx)(`div`,{className:`text-muted-foreground mt-1`,children:R}),(0,k.jsx)(`div`,{className:`text-xs text-muted-foreground mt-2`,"data-testid":`marketplace-load-hint`,children:N?m(`marketplace.load.failedHintConfigured`,{url:N}):m(`marketplace.load.failedHintSameOrigin`)})]})]}),W.length>0&&(0,k.jsxs)(`section`,{className:`flex flex-col gap-3`,children:[(0,k.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,k.jsx)(v,{className:`h-5 w-5 text-primary`,"aria-hidden":`true`}),(0,k.jsx)(`h2`,{className:`text-sm font-semibold`,children:m(`marketplace.org.heading`,{defaultValue:`Your organization`})}),(0,k.jsx)(f,{variant:`secondary`,className:`text-xs`,children:W.length})]}),q&&(0,k.jsx)(`div`,{className:`rounded-md border p-3 text-sm ${q.ok?`border-green-500/30 bg-green-500/5 text-green-700 dark:text-green-400`:`border-destructive/30 bg-destructive/5 text-destructive`}`,children:q.text}),(0,k.jsx)(`div`,{className:`grid gap-4 sm:grid-cols-2 lg:grid-cols-3`,children:W.map(e=>{let t=_e.has(e.manifest_id);return(0,k.jsxs)(o,{className:`flex flex-col`,"data-testid":`org-card-${e.manifest_id}`,children:[(0,k.jsxs)(l,{className:`flex flex-row items-start gap-3 pb-2`,children:[(0,k.jsx)(C,{iconUrl:e.icon_url,displayName:e.display_name,manifestId:e.manifest_id}),(0,k.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,k.jsx)(d,{className:`text-base truncate`,children:e.display_name}),(0,k.jsx)(s,{className:`text-xs truncate`,children:(0,k.jsx)(`code`,{className:`font-mono`,children:e.manifest_id})})]}),e.visibility&&(0,k.jsx)(f,{variant:`outline`,className:`shrink-0 text-xs`,children:e.visibility})]}),(0,k.jsxs)(u,{className:`flex-1 flex flex-col gap-2`,children:[(0,k.jsx)(`p`,{className:`text-sm text-muted-foreground line-clamp-2`,children:e.description||m(`marketplace.noDescription`)}),(0,k.jsxs)(`div`,{className:`flex items-center gap-2 mt-auto pt-2 flex-wrap`,children:[e.latest_version&&(0,k.jsxs)(f,{variant:`outline`,className:`text-xs`,children:[(0,k.jsx)(_,{className:`h-3 w-3 mr-1`,"aria-hidden":`true`}),m(`marketplace.versionBadge`,{version:e.latest_version})]}),(0,k.jsx)(`div`,{className:`ml-auto`,children:t?(0,k.jsxs)(f,{variant:`default`,className:`text-xs bg-green-600 hover:bg-green-600`,children:[(0,k.jsx)(g,{className:`h-3 w-3 mr-1`,"aria-hidden":`true`}),m(`marketplace.org.installedBadge`,{defaultValue:`Installed`})]}):(0,k.jsx)(p,{size:`sm`,onClick:()=>void ye(e),disabled:G===e.id,children:G===e.id?m(`marketplace.org.installing`,{defaultValue:`Installing…`}):m(`marketplace.org.install`,{defaultValue:`Install`})})})]})]})]},e.id)})}),(0,k.jsx)(`div`,{className:`border-b pt-2`})]}),I&&P.length===0?(0,k.jsx)(`div`,{className:`grid gap-4 sm:grid-cols-2 lg:grid-cols-3`,children:Array.from({length:6}).map((e,t)=>(0,k.jsxs)(o,{children:[(0,k.jsxs)(l,{className:`pb-2`,children:[(0,k.jsx)(c,{className:`h-10 w-10 rounded-lg mb-2`}),(0,k.jsx)(c,{className:`h-5 w-3/4`}),(0,k.jsx)(c,{className:`h-4 w-1/2 mt-1`})]}),(0,k.jsx)(u,{children:(0,k.jsx)(c,{className:`h-12 w-full`})})]},t))}):$.length===0?(0,k.jsx)(`div`,{className:`text-center py-12 text-sm text-muted-foreground`,children:P.length===0?m(`marketplace.noApprovedYet`):m(`marketplace.noMatchFilters`)}):(0,k.jsx)(`div`,{className:`grid gap-4 sm:grid-cols-2 lg:grid-cols-3`,children:$.map(t=>{let n=Y.get(t.manifest_id),r=E(t,D);return(0,k.jsxs)(o,{className:`cursor-pointer transition-colors hover:bg-accent/50 flex flex-col`,onClick:()=>e(`${j}/system/marketplace/${t.id}`),role:`link`,tabIndex:0,onKeyDown:n=>{(n.key===`Enter`||n.key===` `)&&(n.preventDefault(),e(`${j}/system/marketplace/${t.id}`))},"data-testid":`marketplace-card-${t.manifest_id}`,children:[(0,k.jsxs)(l,{className:`flex flex-row items-start gap-3 pb-2`,children:[(0,k.jsx)(C,{iconUrl:t.icon_url,displayName:r.displayName,manifestId:t.manifest_id}),(0,k.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,k.jsx)(d,{className:`text-base truncate`,children:r.displayName}),(0,k.jsx)(s,{className:`text-xs truncate`,children:(0,k.jsx)(`code`,{className:`font-mono`,children:t.manifest_id})})]}),t.publisher&&t.publisher!==`private`&&(0,k.jsx)(f,{variant:t.publisher===`objectstack`?`default`:`secondary`,className:`shrink-0`,children:t.publisher})]}),(0,k.jsxs)(u,{className:`flex-1 flex flex-col gap-2`,children:[(0,k.jsx)(`p`,{className:`text-sm text-muted-foreground line-clamp-2`,children:r.description||m(`marketplace.noDescription`)}),(0,k.jsxs)(`div`,{className:`flex items-center gap-2 mt-auto pt-2 flex-wrap`,children:[n&&(0,k.jsxs)(f,{variant:`default`,className:`text-xs bg-green-600 hover:bg-green-600`,children:[(0,k.jsx)(g,{className:`h-3 w-3 mr-1`,"aria-hidden":`true`}),m(`marketplace.installedBadge`,{version:n.version})]}),t.latest_version?.version&&(0,k.jsxs)(f,{variant:`outline`,className:`text-xs`,children:[(0,k.jsx)(_,{className:`h-3 w-3 mr-1`,"aria-hidden":`true`}),m(`marketplace.versionBadge`,{version:t.latest_version.version})]}),t.category&&(0,k.jsx)(f,{variant:`outline`,className:`text-xs`,children:Q(t.category)}),t.latest_version?.published_at&&(0,k.jsx)(`span`,{className:`text-xs text-muted-foreground ml-auto`,children:A(t.latest_version.published_at)})]})]})]},t.id)})})]}):(0,k.jsx)(de,{}):(0,k.jsx)(T,{}):(0,k.jsx)(w,{})}export{D 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-Cc34lEqb.js";import{Ri as s,xi as c}from"./vendor-objectstack-DFqu45yM.js";import{$ as l,Et as u,Q as te,Tt as d,kt as f,yi as p,yt as ne}from"./ui-components-D6cEVg0T.js";import{Fi as re,It as m,Wn as ie,lt as ae}from"./framework-DFR4HNtj.js";import{f as oe,w as se}from"./i18n-runtime-97_bDVjP.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-CjN1i5vn.js";import{t as he}from"./RecordDetailView-DgR_zhP4.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-C4wPYohR.js";import{t as Ce}from"./getIcon-Cfwf-Egt.js";import{n as we,t as Te}from"./CreateViewDialog-D3l-tYHM.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-CfkgqD30.js";import{o as v,t as y}from"./runtime-metadata-persistence-ClOTznqa.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)(p,{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)(p,{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)(d,{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)(f,{children:c(`console.objectData.noAccessTitle`,{defaultValue:`Access denied`})}),(0,x.jsx)(u,{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)(d,{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)(f,{children:c(`console.objectView.objectNotFound`)}),(0,x.jsx)(u,{children:c(`console.objectView.objectNotFoundDescription`,{objectName:s})})]})})}export{E as ObjectDataPage};
@@ -1 +0,0 @@
1
- import{d as e,m as t,p as n,t as r,u as i}from"./vendor-react-BggL7APJ.js";import{f as a}from"./infrastructure-Cc34lEqb.js";import{Et as o,Tt as s,kt as c,vt as l}from"./ui-components-D6cEVg0T.js";import{K as u,gt as d,h as f,q as p}from"./framework-DFR4HNtj.js";import{w as m}from"./i18n-runtime-97_bDVjP.js";import{t as h}from"./vendor-icon-file-text-7BKAVNof.js";import{t as g}from"./vendor-icon-pencil-CMubUBjW.js";import{a as _}from"./ExpressionProvider-CrL6jhVq.js";import{w as v}from"./RecordDetailView-DgR_zhP4.js";import{t as y}from"./preferLocal-DEJV3KIq.js";import{t as b}from"./InterfaceListPage-C4wPYohR.js";import{t as x}from"./useCanAuthorMetadata-BxCMgFRf.js";import{n as S,t as C}from"./MetadataInspector-EP0I3-Kq.js";var w=r();function T(){f({objectName:`*`})}function E(){let{t:r}=m(),{pageName:f}=n(),[E]=t(),{showDebug:D}=S(),O=e(),k=i(),{isAdmin:A}=a(),j=x(),{pages:M,objects:N,getTypeStatus:P}=p(),{app:F}=_(),I=u(),L=y(M,f,F?._packageId);if(!L){let e=P?.(`page`);return e===`idle`||e===`loading`?(0,w.jsx)(`div`,{className:`h-full flex items-center justify-center p-8`,"data-testid":`page-loading`,children:(0,w.jsx)(l,{className:`h-5 w-5 text-muted-foreground`})}):(0,w.jsx)(`div`,{className:`h-full flex items-center justify-center p-8`,children:(0,w.jsxs)(s,{children:[(0,w.jsx)(`div`,{className:`mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-muted`,children:(0,w.jsx)(h,{className:`h-6 w-6 text-muted-foreground`})}),(0,w.jsx)(c,{children:r(`empty.pageNotFound`)}),(0,w.jsx)(o,{children:r(`empty.pageNotFoundDescription`,{name:f})})]})})}let R=Object.fromEntries(E.entries()),z=k.pathname.match(/\/apps\/([^/]+)/)?.[1],B=A&&j&&!!z&&!!f;return(0,w.jsx)(v,{dataSource:I,objects:N,onRefresh:T,children:(0,w.jsxs)(`div`,{className:`flex flex-row h-full w-full overflow-hidden relative`,children:[(0,w.jsxs)(`div`,{className:`flex-1 overflow-auto h-full relative`,children:[B&&(0,w.jsx)(`button`,{type:`button`,onClick:()=>{B&&O(`/apps/${z}/metadata/page/${encodeURIComponent(f)}`)},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:r(`common.editInStudio`,{defaultValue:`Edit in studio`}),"aria-label":r(`common.editInStudio`,{defaultValue:`Edit in studio`}),children:(0,w.jsx)(g,{className:`h-3.5 w-3.5`})}),L.interfaceConfig?.source?(0,w.jsx)(b,{page:L,reserveEditAffordance:B}):(0,w.jsx)(d,{schema:{...L,type:L.type||`page`,pageType:L.type,context:{params:R}}})]}),(0,w.jsx)(C,{open:D,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-Cc34lEqb.js";import{$ as a,Br as o,Ei as s,Hr as c,Jn as l,Qn as u,Ur as d,Vr as f,Wr as p,ai as m,ci as h,ii as g,oi as _,ri as v,si as y,yi as b}from"./ui-components-D6cEVg0T.js";import{K as x,a as S,o as C}from"./framework-DFR4HNtj.js";import{w}from"./i18n-runtime-97_bDVjP.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}=s(),[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)(o,{children:(0,P.jsxs)(f,{className:`pt-6`,children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,P.jsxs)(g,{className:`h-16 w-16`,children:[(0,P.jsx)(_,{src:t.image??void 0,alt:t.name??`User`}),(0,P.jsx)(m,{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)(v,{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)(b,{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)(b,{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)(y,{variant:`destructive`,className:`mt-4`,children:[(0,P.jsx)(T,{className:`h-4 w-4`}),(0,P.jsx)(h,{children:G})]})]})}),(0,P.jsxs)(o,{children:[(0,P.jsxs)(d,{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)(p,{className:`text-base sm:text-lg`,children:e(`profile.info.title`,{defaultValue:`Personal Information`})})]}),(0,P.jsx)(c,{children:e(`profile.info.description`,{defaultValue:`Update your name and view account details`})})]}),(0,P.jsx)(f,{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)(y,{variant:`destructive`,children:[(0,P.jsx)(T,{className:`h-4 w-4`}),(0,P.jsx)(h,{children:B})]}),I&&(0,P.jsxs)(y,{children:[(0,P.jsx)(E,{className:`h-4 w-4 text-green-600`}),(0,P.jsx)(h,{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)(u,{htmlFor:`profile-name`,children:e(`profile.info.name`,{defaultValue:`Name`})}),(0,P.jsx)(l,{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)(u,{htmlFor:`profile-email`,children:e(`profile.info.email`,{defaultValue:`Email`})}),(0,P.jsx)(l,{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)(u,{children:e(`profile.info.role`,{defaultValue:`Role`})}),(0,P.jsx)(l,{type:`text`,value:t.role??`member`,disabled:!0,className:`bg-muted text-muted-foreground`})]}),(0,P.jsx)(b,{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(),[s,l]=(0,N.useState)(null),[m,g]=(0,N.useState)(L),[_,v]=(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;l(r),g(r),v(!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 s&&s.length>0&&!e.includes(s)?[s,...e]:[...e]},[n,s]);if(!r||!_||n===null)return null;let V=i(`sys_user`,`locale`,`write`),H=m!==(s??L);return(0,P.jsxs)(o,{children:[(0,P.jsxs)(d,{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)(p,{className:`text-base sm:text-lg`,children:t(`profile.language.title`,{defaultValue:`Language`})})]}),(0,P.jsx)(c,{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)(f,{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:m===L?null:m}),l(m),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)(y,{variant:`destructive`,children:[(0,P.jsx)(T,{className:`h-4 w-4`}),(0,P.jsx)(h,{children:M})]}),A&&(0,P.jsxs)(y,{children:[(0,P.jsx)(E,{className:`h-4 w-4 text-green-600`}),(0,P.jsx)(h,{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)(u,{htmlFor:`profile-language`,children:t(`profile.language.label`,{defaultValue:`Preferred language`})}),(0,P.jsxs)(`select`,{id:`profile-language`,"data-testid":`profile-language-select`,value:m,onChange:e=>{g(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)(b,{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(),[s,m]=(0,N.useState)(null),[g,_]=(0,N.useState)(``),[v,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||m(t)}).catch(()=>{e||m(!1)}),()=>{e=!0}},[n]);let I=()=>{_(``),x(``),C(``)},L=async n=>{if(n.preventDefault(),j(null),F(null),v.length<8){j(a(`profile.password.tooShort`,{defaultValue:`Password must be at least 8 characters`}));return}if(v!==S){j(a(`profile.password.mismatch`,{defaultValue:`Passwords do not match`}));return}O(!0);try{if(s){if(!g){j(a(`profile.password.enterCurrent`,{defaultValue:`Enter your current password`})),O(!1);return}await e(g,v),F(a(`profile.password.changed`,{defaultValue:`Password changed.`}))}else await t(v),F(a(`profile.password.localSet`,{defaultValue:`Local password set. You can now sign in with email and password on this environment.`})),m(!0),i?.();I()}catch(e){j(e instanceof Error?e.message:String(e))}finally{O(!1)}},R=s===null;return(0,P.jsxs)(o,{className:r?`ring-2 ring-amber-300 dark:ring-amber-700`:void 0,children:[(0,P.jsxs)(d,{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)(p,{className:`text-base sm:text-lg`,children:s?a(`profile.password.changeTitle`,{defaultValue:`Change Password`}):a(`profile.password.setTitle`,{defaultValue:`Set Local Password`})})]}),(0,P.jsx)(c,{children:s?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)(f,{children:(0,P.jsxs)(`form`,{onSubmit:L,className:`space-y-4 max-w-md`,children:[s&&(0,P.jsxs)(`div`,{className:`space-y-2`,children:[(0,P.jsx)(u,{htmlFor:`current-password`,children:a(`profile.password.current`,{defaultValue:`Current password`})}),(0,P.jsx)(l,{id:`current-password`,type:`password`,autoComplete:`current-password`,value:g,onChange:e=>_(e.target.value),disabled:D||R,required:!0})]}),(0,P.jsxs)(`div`,{className:`space-y-2`,children:[(0,P.jsx)(u,{htmlFor:`new-password`,children:s?a(`profile.password.new`,{defaultValue:`New password`}):a(`profile.password.password`,{defaultValue:`Password`})}),(0,P.jsx)(l,{id:`new-password`,type:`password`,autoComplete:`new-password`,value:v,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)(u,{htmlFor:`confirm-password`,children:a(`profile.password.confirm`,{defaultValue:`Confirm password`})}),(0,P.jsx)(l,{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)(y,{variant:`destructive`,children:[(0,P.jsx)(T,{className:`h-4 w-4`}),(0,P.jsx)(h,{children:A})]}),M&&(0,P.jsxs)(y,{children:[(0,P.jsx)(E,{className:`h-4 w-4`}),(0,P.jsx)(h,{children:M})]}),(0,P.jsx)(b,{type:`submit`,disabled:D||R,className:`w-full sm:w-auto`,children:D?a(`profile.saving`,{defaultValue:`Saving…`}):s?a(`profile.password.changeAction`,{defaultValue:`Change password`}):a(`profile.password.setAction`,{defaultValue:`Set password`})})]})})]})}export{F as ProfilePage};