@objectstack/console 17.3.0 → 17.4.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 (188) hide show
  1. package/CHANGELOG.md +87 -0
  2. package/dist/.objectui-sha +1 -1
  3. package/dist/assets/{ActionResultDialog-CQwenjVA.js → ActionResultDialog-Bsr2GS71.js} +1 -1
  4. package/dist/assets/{AiPendingActionsPage-7gZ8zlOy.js → AiPendingActionsPage-DB-UVcdM.js} +1 -1
  5. package/dist/assets/{ApiConsolePage-DUF0ysH7.js → ApiConsolePage-Bzqo2owc.js} +1 -1
  6. package/dist/assets/{AppDocsIndex-CP_AVG4X.js → AppDocsIndex-KhVqdZ-P.js} +1 -1
  7. package/dist/assets/{AppManagementPage-BJktnoa5.js → AppManagementPage-CsZ0LMQn.js} +1 -1
  8. package/dist/assets/{ApprovalsInboxPage-DlnxY-uy.js → ApprovalsInboxPage-D_LOnhJ7.js} +1 -1
  9. package/dist/assets/{AuditLogPage-DIJPRjji.js → AuditLogPage-B9eqwuzl.js} +1 -1
  10. package/dist/assets/{ComponentNavView-C84QByT7.js → ComponentNavView-DeokLfkW.js} +1 -1
  11. package/dist/assets/{CreateViewDialog-Zbd9Cagm.js → CreateViewDialog-BMdQ4ZYy.js} +1 -1
  12. package/dist/assets/{DashboardView-UyKHklBx.js → DashboardView-DHZboRi8.js} +1 -1
  13. package/dist/assets/{DeveloperHubPage-BRyNdrCJ.js → DeveloperHubPage-C_VYirN0.js} +1 -1
  14. package/dist/assets/{DocPage-Bx8ZXCYt.js → DocPage-_9x-3Dbi.js} +1 -1
  15. package/dist/assets/{DocShell-Ipy_IDvh.js → DocShell-D4dSPfBz.js} +1 -1
  16. package/dist/assets/{DocsIndex-CmY-7OQR.js → DocsIndex-CJVRa_hE.js} +1 -1
  17. package/dist/assets/{DocsLayout-BNsSvaz2.js → DocsLayout-C-tYgUZv.js} +1 -1
  18. package/dist/assets/{DocsSlug-Cb_NMM1k.js → DocsSlug-DmyGpfEy.js} +1 -1
  19. package/dist/assets/{ExpressionProvider-DqGWVuxV.js → ExpressionProvider-B6z09kM6.js} +1 -1
  20. package/dist/assets/{FlowRunsPage-B6ustUgi.js → FlowRunsPage-OjGJi-JU.js} +1 -1
  21. package/dist/assets/{IntegrationsPage-chOxmiyU.js → IntegrationsPage-CrDMDe62.js} +1 -1
  22. package/dist/assets/{InterfaceListPage-DVETnQm5.js → InterfaceListPage-P3y6hqTX.js} +1 -1
  23. package/dist/assets/{MarketplaceInstalledPage-DA5pjhAz.js → MarketplaceInstalledPage-CQek7WnV.js} +1 -1
  24. package/dist/assets/{MarketplacePackagePage-dCIVHBFi.js → MarketplacePackagePage-DL2ivKSc.js} +1 -1
  25. package/dist/assets/{MarketplacePage-wJb6g1p7.js → MarketplacePage-B-6EokyB.js} +1 -1
  26. package/dist/assets/{MetadataInspector-Cu-n1FYz.js → MetadataInspector-IQGUoLyp.js} +1 -1
  27. package/dist/assets/{ObjectDataPage-CP-YSZYQ.js → ObjectDataPage-Bmc3RQhM.js} +1 -1
  28. package/dist/assets/{PageView-B1_ibRuM.js → PageView-DzUZqB_h.js} +1 -1
  29. package/dist/assets/{ProfilePage-DEr5iZVB.js → ProfilePage-NklCqPxc.js} +1 -1
  30. package/dist/assets/{PublicFormsPage-CBcKQbNl.js → PublicFormsPage-CItIvcLQ.js} +1 -1
  31. package/dist/assets/RecordDetailView-XWxuegfV.js +3 -0
  32. package/dist/assets/{RecordFormPage-CGQlYWDk.js → RecordFormPage-B-yrhs7J.js} +1 -1
  33. package/dist/assets/{ReportDefaultInspector-R_p6YStL.js → ReportDefaultInspector-D5Kro5_t.js} +1 -1
  34. package/dist/assets/{ReportView-BTMrtcGH.js → ReportView-COpZ8PQT.js} +1 -1
  35. package/dist/assets/{RuntimeDraftBar-agGU39FL.js → RuntimeDraftBar-CSVtuByp.js} +1 -1
  36. package/dist/assets/{SchemaForm-DJbupOno.js → SchemaForm-DIsxxOZF.js} +1 -1
  37. package/dist/assets/{SearchResultsPage-CHhZUc6L.js → SearchResultsPage-B2r6kgni.js} +1 -1
  38. package/dist/assets/{SettingsHub-BGLR_gS7.js → SettingsHub-DQz2HDtZ.js} +1 -1
  39. package/dist/assets/{SettingsView-Bq-7Zkzs.js → SettingsView-BfOEalDW.js} +1 -1
  40. package/dist/assets/{SkeletonDetail-B4-UKxai.js → SkeletonDetail-DMOa5zcl.js} +1 -1
  41. package/dist/assets/{SystemHubPage-CVZVag1e.js → SystemHubPage-DM2VRSIP.js} +1 -1
  42. package/dist/assets/{abnfDiagram-VCTEODGH-DUS5D5dU.js → abnfDiagram-VCTEODGH-DaPlU6Hz.js} +1 -1
  43. package/dist/assets/{app-shell-eager-leaves-BB0oaPx6.js → app-shell-eager-leaves-wjbiJgVZ.js} +1 -1
  44. package/dist/assets/architectureDiagram-5GKGNRK7-Cq014PwG.js +36 -0
  45. package/dist/assets/{blockDiagram-OSKFZWR5-Bz2hnVmp.js → blockDiagram-OSKFZWR5-vtlcoeZc.js} +1 -1
  46. package/dist/assets/{c4Diagram-7LVT6UL2-DU3u1Y6c.js → c4Diagram-7LVT6UL2-BrdwRG2M.js} +1 -1
  47. package/dist/assets/channel-D2IgUFnY.js +1 -0
  48. package/dist/assets/{chunk-3NF5O7KM-B8Q7HUio.js → chunk-3NF5O7KM-CjWAf_Jo.js} +1 -1
  49. package/dist/assets/{chunk-4HAMMTFA-BPKwX4iB.js → chunk-4HAMMTFA-BtV_msXT.js} +1 -1
  50. package/dist/assets/chunk-75Z2AOVW-DdRL9yNr.js +2 -0
  51. package/dist/assets/chunk-CLGD4ZFX-De9kMAXh.js +1 -0
  52. package/dist/assets/{chunk-DU6HZSFF-BkY4hAzc.js → chunk-DU6HZSFF-DqjylQO-.js} +1 -1
  53. package/dist/assets/chunk-F27PBJKO-tEB_K-iD.js +1 -0
  54. package/dist/assets/{chunk-GMAD6QVW-DZo_NykZ.js → chunk-GMAD6QVW-BMzd_HHM.js} +1 -1
  55. package/dist/assets/{chunk-GVQU2GXP-9ELY9S6X.js → chunk-GVQU2GXP-B1p1nHC0.js} +1 -1
  56. package/dist/assets/{chunk-H2I77ZZE-vCr_buP7.js → chunk-H2I77ZZE-ioXC4dHO.js} +1 -1
  57. package/dist/assets/{chunk-HLEWEB6X-iPkY2ESt.js → chunk-HLEWEB6X-zZ3ZMup3.js} +1 -1
  58. package/dist/assets/chunk-L3NEJ4N5-DePXufTQ.js +1 -0
  59. package/dist/assets/{chunk-LQGUR6SS-iVI0GACK.js → chunk-LQGUR6SS-BUWUp_dz.js} +1 -1
  60. package/dist/assets/{chunk-OSK3NFVY-DcRwXCQD.js → chunk-OSK3NFVY-L7nTUJKT.js} +2 -2
  61. package/dist/assets/{chunk-P2QGCYS3-nx2-dM5t.js → chunk-P2QGCYS3-BG-i3rdI.js} +1 -1
  62. package/dist/assets/{chunk-POPQ4Y6H-BxLOacOG.js → chunk-POPQ4Y6H-DLEB8EqK.js} +1 -1
  63. package/dist/assets/{chunk-PWAF6VOD-2mst9kZu.js → chunk-PWAF6VOD-Be_prJjm.js} +1 -1
  64. package/dist/assets/{chunk-SVP7TREG-C3BMpr4x.js → chunk-SVP7TREG-BdJpxJji.js} +1 -1
  65. package/dist/assets/chunk-XXDRQBXY-CEXsCcSu.js +1 -0
  66. package/dist/assets/{chunk-ZLD2IHE6-ZFqtFJbj.js → chunk-ZLD2IHE6-BLIPZykR.js} +1 -1
  67. package/dist/assets/classDiagram-CYGNFDIV-BielDdJQ.js +1 -0
  68. package/dist/assets/classDiagram-v2-TLXNO2FR-BielDdJQ.js +1 -0
  69. package/dist/assets/cose-bilkent-JH36ORCC-CnLWv9XE.js +1 -0
  70. package/dist/assets/{createDerive-Best2JCj.js → createDerive-DtfnFzGm.js} +1 -1
  71. package/dist/assets/{cynefinDiagram-5FMLGOSQ-Lnly8IJd.js → cynefinDiagram-5FMLGOSQ-Do1SZz4I.js} +1 -1
  72. package/dist/assets/{dagre-OS7QT2EB-CdXLxmTK.js → dagre-OS7QT2EB-CqmZ9Y9O.js} +1 -1
  73. package/dist/assets/data-adapter-1YRpH3h_.js +5 -0
  74. package/dist/assets/{default-inspector-registry-DeEG98bO.js → default-inspector-registry-CmSpNwTr.js} +1 -1
  75. package/dist/assets/{diagram-S7CK7UJ4-DE8I3gxQ.js → diagram-S7CK7UJ4-CMpcDWop.js} +1 -1
  76. package/dist/assets/{diagram-UQ7AKVKN-D2xQpbEq.js → diagram-UQ7AKVKN-DLK_4yej.js} +1 -1
  77. package/dist/assets/{diagram-VSXAHHWV-DnttDSlO.js → diagram-VSXAHHWV-MAILxw0S.js} +1 -1
  78. package/dist/assets/diagram-VX7I27RA-DGiXGVX7.js +24 -0
  79. package/dist/assets/{diagram-Z3DM3KII-BgB9f0Nv.js → diagram-Z3DM3KII-BywboeGI.js} +1 -1
  80. package/dist/assets/dist-B88JFSFg.js +5 -0
  81. package/dist/assets/{ebnfDiagram-PWID7BFC-32WvKbS2.js → ebnfDiagram-PWID7BFC-DdMLbnuP.js} +1 -1
  82. package/dist/assets/{erDiagram-2YWLMYGG-Dwf8uAdl.js → erDiagram-2YWLMYGG-O6raGx2P.js} +1 -1
  83. package/dist/assets/flowDiagram-T62WH6J4-CkAxOnqU.js +1 -0
  84. package/dist/assets/framework-DFE_Mws9.js +36 -0
  85. package/dist/assets/{ganttDiagram-EL5Y4UJY-DqYIE0Cu.js → ganttDiagram-EL5Y4UJY-Dijdjc50.js} +2 -2
  86. package/dist/assets/{getIcon-CgyYxSEC.js → getIcon-B4Pp7Q-0.js} +1 -1
  87. package/dist/assets/gitGraphDiagram-WWUBYQGX-Cfl4OIGG.js +106 -0
  88. package/dist/assets/{highlighted-body-OFNGDK62-BxO9mjPI.js → highlighted-body-OFNGDK62-BlqGRgbU.js} +1 -1
  89. package/dist/assets/{i18n-Cfqor-xb.js → i18n-DGcOKnTh.js} +1 -1
  90. package/dist/assets/{i18n-locales-Bz4c8KXc.js → i18n-locales-BBA090ve.js} +10 -10
  91. package/dist/assets/index-C5Fu9Kda.css +2 -0
  92. package/dist/assets/index-ClPLLRzK.js +20 -0
  93. package/dist/assets/{infoDiagram-FKFFQAWI-Cr1-5_Am.js → infoDiagram-FKFFQAWI-oOVNWlVA.js} +1 -1
  94. package/dist/assets/{infrastructure-CIpDEFyQ.js → infrastructure-B4zG1jNa.js} +2 -2
  95. package/dist/assets/{ishikawaDiagram-5VMMS53U-Bsjx7BsE.js → ishikawaDiagram-5VMMS53U-BUfTfup1.js} +1 -1
  96. package/dist/assets/{journeyDiagram-EYS64GPL-1scn5Z5c.js → journeyDiagram-EYS64GPL-4fyU8Ui9.js} +2 -2
  97. package/dist/assets/{kanban-definition-UXKFOSKX-DjLQAv5U.js → kanban-definition-UXKFOSKX-qwquHo2y.js} +1 -1
  98. package/dist/assets/mermaid-GHXKKRXX-_UhQGe8N.js +1 -0
  99. package/dist/assets/{mermaid.core-pW40dd4u.js → mermaid.core-RfBGJVq5.js} +2 -2
  100. package/dist/assets/{metadata-admin-pawEBYI9.js → metadata-admin-Bo-vWW2Z.js} +3 -3
  101. package/dist/assets/{mindmap-definition-THT77NOG-CUcYMB9H.js → mindmap-definition-THT77NOG-cOVHgGB_.js} +1 -1
  102. package/dist/assets/{pegDiagram-XKGWAZYB-CT1r3sRa.js → pegDiagram-XKGWAZYB-DQikOuPL.js} +1 -1
  103. package/dist/assets/{pieDiagram-E7YTZNPT-CSi-V1LQ.js → pieDiagram-E7YTZNPT-Cu9wPXiv.js} +2 -2
  104. package/dist/assets/plugin-calendar-DqlnPeWE.js +1 -0
  105. package/dist/assets/plugin-charts-hJ5C1pY-.js +7 -0
  106. package/dist/assets/{plugin-chatbot-BGnkLzFS.js → plugin-chatbot-BeSLDg4N.js} +5 -5
  107. package/dist/assets/plugin-dashboard-d1o52lHr.js +6 -0
  108. package/dist/assets/{plugin-form-_fjHxKTV.js → plugin-form-D8x_rH5w.js} +1 -1
  109. package/dist/assets/plugin-gantt-B2GTMGPH.js +63 -0
  110. package/dist/assets/plugin-grid-DGXy_yQF.js +9 -0
  111. package/dist/assets/{plugin-kanban-DA0eW6yj.js → plugin-kanban-CVf6Nj3e.js} +1 -1
  112. package/dist/assets/plugin-map-hkbw1bGS.js +1 -0
  113. package/dist/assets/{plugin-markdown-B7zwZHmn.js → plugin-markdown-Bdb2UThR.js} +4 -4
  114. package/dist/assets/plugin-report-CelulaB7.js +59 -0
  115. package/dist/assets/{plugin-timeline-B6rsNNAK.js → plugin-timeline-DTcJ-hts.js} +1 -1
  116. package/dist/assets/plugin-tree-Bk5vG9la.js +1 -0
  117. package/dist/assets/{plugin-view-5qxxRyZZ.js → plugin-view-CKs41t7o.js} +1 -1
  118. package/dist/assets/plugins-views-DZmsFOak.js +4 -0
  119. package/dist/assets/{quadrantDiagram-AXDQQJYC-DUJ_94hm.js → quadrantDiagram-AXDQQJYC-DqTU6p89.js} +3 -3
  120. package/dist/assets/{railroadDiagram-O6MQD6OU-CEyfAhzM.js → railroadDiagram-O6MQD6OU-CHGgIBKb.js} +1 -1
  121. package/dist/assets/{requirementDiagram-IS5BZ75X-CAK7hvBg.js → requirementDiagram-IS5BZ75X-B20mHS5h.js} +1 -1
  122. package/dist/assets/{runtime-metadata-persistence-DYPxFzHI.js → runtime-metadata-persistence-DzS2YaNb.js} +1 -1
  123. package/dist/assets/{sankeyDiagram-P5KCCOFB-DgYJh7uz.js → sankeyDiagram-P5KCCOFB-oqGY91Cw.js} +3 -3
  124. package/dist/assets/{sequenceDiagram-WJ2MYXX4-DsQerPtC.js → sequenceDiagram-WJ2MYXX4-CVMm7Aid.js} +1 -1
  125. package/dist/assets/{src-CVJP2nIc.js → src-D7tZqf12.js} +1 -1
  126. package/dist/assets/{src-_DxAIBqo.js → src-DCXZnd2l.js} +1 -1
  127. package/dist/assets/{src-S6pzKItc.js → src-DEMdKbQy.js} +1 -1
  128. package/dist/assets/src-hcMLuWxG.js +17 -0
  129. package/dist/assets/stateDiagram-XQSTLZYL-3oM7IdVe.js +1 -0
  130. package/dist/assets/stateDiagram-v2-IH3M54BS-BznjPAgb.js +1 -0
  131. package/dist/assets/studioEntry-BUFsLXCL.js +1 -0
  132. package/dist/assets/{submitRedirect-UXd9NsjL.js → submitRedirect-7ExeC4kw.js} +1 -1
  133. package/dist/assets/{swimlanes-V6O3JKXN-BiKyiEJr.js → swimlanes-V6O3JKXN-Djgbrkmh.js} +1 -1
  134. package/dist/assets/swimlanesDiagram-JKAHXJPX-DHJJ3qZq.js +8 -0
  135. package/dist/assets/{timeline-definition-24CTP7MA-CW5rY3PX.js → timeline-definition-24CTP7MA-k2lbfDvL.js} +2 -2
  136. package/dist/assets/ui-components-CMHDBJEm.js +37 -0
  137. package/dist/assets/{ui-layout-UUTFXV6S.js → ui-layout-Jk_qY9Ni.js} +1 -1
  138. package/dist/assets/{use-book-data-qUZAxIs0.js → use-book-data-CM73PGvc.js} +1 -1
  139. package/dist/assets/{useActionModal-CkM-zGdy.js → useActionModal-D_iilsul.js} +1 -1
  140. package/dist/assets/{usePackageL10n-F9isJ9pn.js → usePackageL10n-BfPqgsRL.js} +1 -1
  141. package/dist/assets/{useSettingsLabel-CSZBfUiw.js → useSettingsLabel-CW2sBbmj.js} +1 -1
  142. package/dist/assets/vendor-charts-BBlPrtHS.js +67 -0
  143. package/dist/assets/{vendor-i18n-C1AQDWux.js → vendor-i18n-CzBLXLJU.js} +1 -1
  144. package/dist/assets/vendor-objectstack-BU0HrnMy.js +270 -0
  145. package/dist/assets/{vendor-zod-r9lyeyrU.js → vendor-zod-Bwe8XZZa.js} +3 -3
  146. package/dist/assets/{vennDiagram-4TSXK5OY-C79cMc25.js → vennDiagram-4TSXK5OY-zweM554s.js} +1 -1
  147. package/dist/assets/{wardleyDiagram-VM6X3IG4-BAO0_jUk.js → wardleyDiagram-VM6X3IG4-Dg9r6Ajz.js} +1 -1
  148. package/dist/assets/{xychartDiagram-S5SC5T6Z-BIRd7YRo.js → xychartDiagram-S5SC5T6Z-CraplxeN.js} +2 -2
  149. package/dist/eager-closure.json +87 -87
  150. package/dist/index.html +4 -4
  151. package/package.json +1 -1
  152. package/dist/assets/RecordDetailView-A8bbPnkK.js +0 -3
  153. package/dist/assets/architectureDiagram-5GKGNRK7-mGW8P1lC.js +0 -36
  154. package/dist/assets/channel-FD4s9EIH.js +0 -1
  155. package/dist/assets/chunk-75Z2AOVW-CkSdnmiC.js +0 -2
  156. package/dist/assets/chunk-CLGD4ZFX-BTkDISwp.js +0 -1
  157. package/dist/assets/chunk-F27PBJKO-DUKg0YWV.js +0 -1
  158. package/dist/assets/chunk-L3NEJ4N5-Bzz35TZJ.js +0 -1
  159. package/dist/assets/chunk-XXDRQBXY-iNC8aYmk.js +0 -1
  160. package/dist/assets/classDiagram-CYGNFDIV-D5Pd2TCl.js +0 -1
  161. package/dist/assets/classDiagram-v2-TLXNO2FR-D5Pd2TCl.js +0 -1
  162. package/dist/assets/cose-bilkent-JH36ORCC-CPQv9aQH.js +0 -1
  163. package/dist/assets/data-adapter-DL25qpAe.js +0 -5
  164. package/dist/assets/diagram-VX7I27RA-BSEwkn7K.js +0 -24
  165. package/dist/assets/dist-BpPy7hlB.js +0 -5
  166. package/dist/assets/flowDiagram-T62WH6J4-CqVSNJ8T.js +0 -1
  167. package/dist/assets/framework-BfSv4Kb0.js +0 -36
  168. package/dist/assets/gitGraphDiagram-WWUBYQGX-D1dYmoGu.js +0 -106
  169. package/dist/assets/index-BU-FzlQ6.js +0 -20
  170. package/dist/assets/index-_VyGO4ms.css +0 -2
  171. package/dist/assets/mermaid-GHXKKRXX-NzEcDxBh.js +0 -1
  172. package/dist/assets/plugin-calendar-BwiiCIjv.js +0 -1
  173. package/dist/assets/plugin-charts-CDGkx7z5.js +0 -7
  174. package/dist/assets/plugin-dashboard-Bj4ldCX6.js +0 -6
  175. package/dist/assets/plugin-gantt-zR8DkpEg.js +0 -63
  176. package/dist/assets/plugin-grid-kkbz4uec.js +0 -9
  177. package/dist/assets/plugin-map-DukneTNg.js +0 -1
  178. package/dist/assets/plugin-report-DaPtlsJr.js +0 -59
  179. package/dist/assets/plugin-tree-DauauLFc.js +0 -1
  180. package/dist/assets/plugins-views-iYcMmImr.js +0 -4
  181. package/dist/assets/src-JX1BkhmR.js +0 -17
  182. package/dist/assets/stateDiagram-XQSTLZYL-BJndPKik.js +0 -1
  183. package/dist/assets/stateDiagram-v2-IH3M54BS-Bi94bTLl.js +0 -1
  184. package/dist/assets/studioEntry-C6G8U-LG.js +0 -1
  185. package/dist/assets/swimlanesDiagram-JKAHXJPX-DKIR852g.js +0 -8
  186. package/dist/assets/ui-components-D2lrjG-t.js +0 -43
  187. package/dist/assets/vendor-charts-CY9WhhzX.js +0 -67
  188. package/dist/assets/vendor-objectstack-BeKUVjuj.js +0 -270
@@ -1 +1 @@
1
- import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{b as t,g as n,p as r,r as i}from"./vendor-react-CsWFRkED.js";import{g as a}from"./infrastructure-CIpDEFyQ.js";import{Cr as o,J as s,ar as c,ht as l,q as u,ut as d}from"./framework-BfSv4Kb0.js";import{y as f}from"./i18n-locales-Bz4c8KXc.js";import{Ms as p,dt as m,ht as h,mt as g,vt as _}from"./ui-components-D2lrjG-t.js";import{t as v}from"./RecordDetailView-A8bbPnkK.js";import{f as ee}from"./plugins-views-iYcMmImr.js";var y=e(t(),1),b=[`single`,`group`,`isolated`];function x(e){return e===`group`||e===`isolated`}function S(){let{getAuthConfig:e}=a(),[t,n]=(0,y.useState)(void 0);return(0,y.useEffect)(()=>{let t=!1;return e?.().then(e=>{if(t)return;let r=e?.features?.tenancyPosture;r&&b.includes(r)&&n(r)}).catch(()=>{}),()=>{t=!0}},[e]),t}var C=`uf_`;function w(e){let t={};return e.forEach((e,n)=>{if(n.startsWith(C)&&e!==``){let r=n.slice(3);t[r]=e.split(`,`).map(e=>{try{return decodeURIComponent(e)}catch{return e}})}}),Object.keys(t).length>0?t:void 0}function T(e,t){let n=new URLSearchParams(e);for(let[e,r]of Object.entries(t)){let t=C+e;r&&r.length>0?n.set(t,r.map(e=>encodeURIComponent(String(e))).join(`,`)):n.delete(t)}return n}var E=i();function D(e){return Array.isArray(e?.columns)&&e.columns.length>0}function O(e,t){let n=e?.listViews||e?.list_views||{},r=(t?[n[`${e?.name}.${t}`],n[t],...t==="default"||t===`list`?[e?.list]:[]]:[e?.list,...Object.values(n)]).filter(Boolean);return r.find(D)??r[0]}function 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(c(e,r.filter(t=>e.fields?.[t])));let i=e?.fields;return i&&typeof i==`object`?n(c(e,Object.entries(i).filter(([e,t])=>t&&!t.hidden&&!o(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&&!o(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:t,onConfigChange:i,reserveEditAffordance:a}){let{t:o}=f(),{objects:c}=s(),b=u(),x=r(),[C,A]=n(),j=S()===`group`,[M]=y.useState(()=>w(new URLSearchParams(window.location.search))),N=y.useCallback(e=>{A(t=>T(t,e),{replace:!0})},[A]),F=e?.interfaceConfig||{},R=y.useMemo(()=>(c||[]).find(e=>e.name===F.source),[c,F.source]),V=y.useMemo(()=>O(R,F.sourceView),[R,F.sourceView]),H=F.recordAction===`page`||F.recordAction===`modal`||F.recordAction===`none`?F.recordAction:`drawer`,U=y.useCallback(e=>`/apps/${window.location.pathname.split(`/`)[2]||``}/${F.source}/record/${encodeURIComponent(String(e))}`,[F.source]),W=d({navigation:{mode:H===`none`?`none`:H},objectName:F.source,onNavigate:e=>x(U(e))}),G=C.get(`recordId`),te=y.useCallback((e,t)=>{if(H===`none`)return;let n=e?.id??e?._id;if(t&&(t.metaKey||t.ctrlKey||t.button===1)&&n!=null){window.open(U(n),`_blank`);return}if((H===`drawer`||H===`modal`)&&n!=null){A(e=>{let t=new URLSearchParams(e);return t.set(`recordId`,String(n)),t});return}W.handleClick(e,t)},[H,U,W,A]),ne=y.useCallback(()=>{A(e=>{let t=new URLSearchParams(e);return t.delete(`recordId`),t})},[A]);y.useEffect(()=>{G&&!W.isOpen?W.open({id:G}):!G&&W.isOpen&&W.close()},[G]);let K=R?.name,q=!!V&&!D(V),J=V?.name??(F.sourceView?`${F.source}.${F.sourceView}`:void 0),[Y,X]=y.useState(null);y.useEffect(()=>{let e=!1;if(X(null),!(!K||!F.source||!q||!J))return(async()=>{try{let t=b,n=null;if(typeof t?.listViewOverrides==`function`)try{n=(await t.listViewOverrides(F.source))?.[J]??null}catch{}!D(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,b]);let Z=y.useMemo(()=>Y?{...V,...Y}:V,[V,Y]),re=JSON.stringify(Z??null),Q=y.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=D(F)?F.columns:D(e)?e.columns:k(R,{orgAttribution:j}),p=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:f,...d.length?{filter:d}:{},...p?.length?{sort:p}:{},grouping:e.grouping,rowColor:e.rowColor,pagination:e.pagination,searchableFields:e.searchableFields,emptyState:e.emptyState,kanban:a,calendar:o,gallery:c,timeline:s,gantt:l,...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,E.jsx)(`div`,{className:`h-full flex items-center justify-center p-8`,children:(0,E.jsxs)(g,{children:[(0,E.jsx)(`div`,{className:`mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-muted`,children:(0,E.jsx)(p,{className:`h-6 w-6 text-muted-foreground`})}),(0,E.jsx)(_,{children:o(`empty.objectNotFound`,{defaultValue:`Object Not Found`})}),(0,E.jsx)(h,{children:o(`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,E.jsxs)(`div`,{className:t??`h-full flex flex-col`,"data-testid":`interface-list-page`,children:[(0,E.jsxs)(`div`,{className:`pl-4 pt-4 pb-2 shrink-0 flex items-start justify-between gap-3 ${a?`pr-12`:`pr-4`}`,children:[(0,E.jsxs)(`div`,{className:`min-w-0`,children:[(0,E.jsx)(`h1`,{className:`text-lg font-semibold leading-tight`,children:typeof e.label==`string`?e.label:e.name}),typeof e.description==`string`&&e.description&&(0,E.jsx)(`p`,{className:`text-sm text-muted-foreground mt-0.5`,children:e.description})]}),$.length>0&&(0,E.jsx)(`div`,{className:`shrink-0`,"data-testid":`interface-page-buttons`,children:(0,E.jsx)(l,{schema:{type:`action:bar`,location:`list_toolbar`,actions:$,size:`sm`,variant:`outline`}})})]}),(0,E.jsx)(`div`,{className:`flex-1 min-h-0 overflow-auto`,children:(0,E.jsx)(ee,{schema:Q,dataSource:b,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,E.jsx)(m,{...W,setIsOpen:e=>{e||ne()},title:typeof e.label==`string`?e.label:F.source||`Record`,children:e=>(0,E.jsx)(v,{objectNameOverride:F.source,recordIdOverride:String(e?.id??e?._id??G??``),embedded:!0,dataSource:b,objects:c,onEdit:()=>{}})})]})}export{P as a,x as c,L as i,S as l,I as n,T as o,k as r,w as s,V as t};
1
+ import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{b as t,g as n,p as r,r as i}from"./vendor-react-CsWFRkED.js";import{g as a}from"./infrastructure-B4zG1jNa.js";import{Er as o,J as s,cr as c,ht as l,q as u,ut as d}from"./framework-DFE_Mws9.js";import{y as f}from"./i18n-locales-BBA090ve.js";import{Ms as p,dt as m,ht as h,mt as g,vt as _}from"./ui-components-CMHDBJEm.js";import{t as v}from"./RecordDetailView-XWxuegfV.js";import{f as ee}from"./plugins-views-DZmsFOak.js";var y=e(t(),1),b=[`single`,`group`,`isolated`];function x(e){return e===`group`||e===`isolated`}function S(){let{getAuthConfig:e}=a(),[t,n]=(0,y.useState)(void 0);return(0,y.useEffect)(()=>{let t=!1;return e?.().then(e=>{if(t)return;let r=e?.features?.tenancyPosture;r&&b.includes(r)&&n(r)}).catch(()=>{}),()=>{t=!0}},[e]),t}var C=`uf_`;function w(e){let t={};return e.forEach((e,n)=>{if(n.startsWith(C)&&e!==``){let r=n.slice(3);t[r]=e.split(`,`).map(e=>{try{return decodeURIComponent(e)}catch{return e}})}}),Object.keys(t).length>0?t:void 0}function T(e,t){let n=new URLSearchParams(e);for(let[e,r]of Object.entries(t)){let t=C+e;r&&r.length>0?n.set(t,r.map(e=>encodeURIComponent(String(e))).join(`,`)):n.delete(t)}return n}var E=i();function D(e){return Array.isArray(e?.columns)&&e.columns.length>0}function O(e,t){let n=e?.listViews||e?.list_views||{},r=(t?[n[`${e?.name}.${t}`],n[t],...t==="default"||t===`list`?[e?.list]:[]]:[e?.list,...Object.values(n)]).filter(Boolean);return r.find(D)??r[0]}function 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(c(e,r.filter(t=>e.fields?.[t])));let i=e?.fields;return i&&typeof i==`object`?n(c(e,Object.entries(i).filter(([e,t])=>t&&!t.hidden&&!o(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&&!o(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:t,onConfigChange:i,reserveEditAffordance:a}){let{t:o}=f(),{objects:c}=s(),b=u(),x=r(),[C,A]=n(),j=S()===`group`,[M]=y.useState(()=>w(new URLSearchParams(window.location.search))),N=y.useCallback(e=>{A(t=>T(t,e),{replace:!0})},[A]),F=e?.interfaceConfig||{},R=y.useMemo(()=>(c||[]).find(e=>e.name===F.source),[c,F.source]),V=y.useMemo(()=>O(R,F.sourceView),[R,F.sourceView]),H=F.recordAction===`page`||F.recordAction===`modal`||F.recordAction===`none`?F.recordAction:`drawer`,U=y.useCallback(e=>`/apps/${window.location.pathname.split(`/`)[2]||``}/${F.source}/record/${encodeURIComponent(String(e))}`,[F.source]),W=d({navigation:{mode:H===`none`?`none`:H},objectName:F.source,onNavigate:e=>x(U(e))}),G=C.get(`recordId`),te=y.useCallback((e,t)=>{if(H===`none`)return;let n=e?.id??e?._id;if(t&&(t.metaKey||t.ctrlKey||t.button===1)&&n!=null){window.open(U(n),`_blank`);return}if((H===`drawer`||H===`modal`)&&n!=null){A(e=>{let t=new URLSearchParams(e);return t.set(`recordId`,String(n)),t});return}W.handleClick(e,t)},[H,U,W,A]),ne=y.useCallback(()=>{A(e=>{let t=new URLSearchParams(e);return t.delete(`recordId`),t})},[A]);y.useEffect(()=>{G&&!W.isOpen?W.open({id:G}):!G&&W.isOpen&&W.close()},[G]);let K=R?.name,q=!!V&&!D(V),J=V?.name??(F.sourceView?`${F.source}.${F.sourceView}`:void 0),[Y,X]=y.useState(null);y.useEffect(()=>{let e=!1;if(X(null),!(!K||!F.source||!q||!J))return(async()=>{try{let t=b,n=null;if(typeof t?.listViewOverrides==`function`)try{n=(await t.listViewOverrides(F.source))?.[J]??null}catch{}!D(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,b]);let Z=y.useMemo(()=>Y?{...V,...Y}:V,[V,Y]),re=JSON.stringify(Z??null),Q=y.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=D(F)?F.columns:D(e)?e.columns:k(R,{orgAttribution:j}),p=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:f,...d.length?{filter:d}:{},...p?.length?{sort:p}:{},grouping:e.grouping,rowColor:e.rowColor,pagination:e.pagination,searchableFields:e.searchableFields,emptyState:e.emptyState,kanban:a,calendar:o,gallery:c,timeline:s,gantt:l,...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,E.jsx)(`div`,{className:`h-full flex items-center justify-center p-8`,children:(0,E.jsxs)(g,{children:[(0,E.jsx)(`div`,{className:`mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-muted`,children:(0,E.jsx)(p,{className:`h-6 w-6 text-muted-foreground`})}),(0,E.jsx)(_,{children:o(`empty.objectNotFound`,{defaultValue:`Object Not Found`})}),(0,E.jsx)(h,{children:o(`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,E.jsxs)(`div`,{className:t??`h-full flex flex-col`,"data-testid":`interface-list-page`,children:[(0,E.jsxs)(`div`,{className:`pl-4 pt-4 pb-2 shrink-0 flex items-start justify-between gap-3 ${a?`pr-12`:`pr-4`}`,children:[(0,E.jsxs)(`div`,{className:`min-w-0`,children:[(0,E.jsx)(`h1`,{className:`text-lg font-semibold leading-tight`,children:typeof e.label==`string`?e.label:e.name}),typeof e.description==`string`&&e.description&&(0,E.jsx)(`p`,{className:`text-sm text-muted-foreground mt-0.5`,children:e.description})]}),$.length>0&&(0,E.jsx)(`div`,{className:`shrink-0`,"data-testid":`interface-page-buttons`,children:(0,E.jsx)(l,{schema:{type:`action:bar`,location:`list_toolbar`,actions:$,size:`sm`,variant:`outline`}})})]}),(0,E.jsx)(`div`,{className:`flex-1 min-h-0 overflow-auto`,children:(0,E.jsx)(ee,{schema:Q,dataSource:b,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,E.jsx)(m,{...W,setIsOpen:e=>{e||ne()},title:typeof e.label==`string`?e.label:F.source||`Record`,children:e=>(0,E.jsx)(v,{objectNameOverride:F.source,recordIdOverride:String(e?.id??e?._id??G??``),embedded:!0,dataSource:b,objects:c,onEdit:()=>{}})})]})}export{P as a,x as c,L as i,S as l,I as n,T as o,k as r,w as s,V as t};
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-C0FnF6B9.js";import{h as t,p as n,r}from"./vendor-react-CsWFRkED.js";import{y as i}from"./i18n-locales-Bz4c8KXc.js";import{Fi as a,Qc as o,Xr as s}from"./ui-components-D2lrjG-t.js";import{t as c}from"./app-shell-eager-leaves-BB0oaPx6.js";var l=e({MarketplaceInstalledPage:()=>d}),u=r();function d(){let e=n(),{appName:r}=t(),{t:l}=i(),d=r?`/apps/${r}`:``;return(0,u.jsxs)(`div`,{className:`flex flex-col gap-6 p-4 sm:p-6 max-w-5xl`,children:[(0,u.jsxs)(s,{variant:`ghost`,size:`sm`,className:`self-start`,onClick:()=>e(`${d}/system/marketplace`),children:[(0,u.jsx)(o,{className:`h-4 w-4 mr-1.5`,"aria-hidden":`true`}),l(`marketplace.back`)]}),(0,u.jsxs)(`div`,{children:[(0,u.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,u.jsx)(a,{className:`h-6 w-6 text-primary`,"aria-hidden":`true`}),(0,u.jsx)(`h1`,{className:`text-xl sm:text-2xl font-bold tracking-tight`,children:l(`marketplace.installedTitle`)})]}),(0,u.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1`,dangerouslySetInnerHTML:{__html:l(`marketplace.installedSubtitle`)}})]}),(0,u.jsx)(c,{})]})}export{l as t};
1
+ import{r as e}from"./rolldown-runtime-C0FnF6B9.js";import{h as t,p as n,r}from"./vendor-react-CsWFRkED.js";import{y as i}from"./i18n-locales-BBA090ve.js";import{Fi as a,Qc as o,Xr as s}from"./ui-components-CMHDBJEm.js";import{t as c}from"./app-shell-eager-leaves-wjbiJgVZ.js";var l=e({MarketplaceInstalledPage:()=>d}),u=r();function d(){let e=n(),{appName:r}=t(),{t:l}=i(),d=r?`/apps/${r}`:``;return(0,u.jsxs)(`div`,{className:`flex flex-col gap-6 p-4 sm:p-6 max-w-5xl`,children:[(0,u.jsxs)(s,{variant:`ghost`,size:`sm`,className:`self-start`,onClick:()=>e(`${d}/system/marketplace`),children:[(0,u.jsx)(o,{className:`h-4 w-4 mr-1.5`,"aria-hidden":`true`}),l(`marketplace.back`)]}),(0,u.jsxs)(`div`,{children:[(0,u.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,u.jsx)(a,{className:`h-6 w-6 text-primary`,"aria-hidden":`true`}),(0,u.jsx)(`h1`,{className:`text-xl sm:text-2xl font-bold tracking-tight`,children:l(`marketplace.installedTitle`)})]}),(0,u.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1`,dangerouslySetInnerHTML:{__html:l(`marketplace.installedSubtitle`)}})]}),(0,u.jsx)(c,{})]})}export{l as t};
@@ -1,4 +1,4 @@
1
- import{o as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{b as n,h as r,p as i,r as a}from"./vendor-react-CsWFRkED.js";import{h as ee}from"./infrastructure-CIpDEFyQ.js";import{u as te}from"./data-adapter-DL25qpAe.js";import{J as ne}from"./framework-BfSv4Kb0.js";import{y as re}from"./i18n-locales-Bz4c8KXc.js";import{$i as ie,Bn as o,Cr as ae,Dn as oe,Dr as s,En as se,Hn as ce,Ja as le,Mr as ue,Ms as de,On as fe,Or as pe,Os as me,Pc as c,Pr as l,Qc as he,Si as u,Sr as ge,Tn as _e,Ts as ve,Vn as ye,Wn as d,Xn as be,Xr as f,Za as p,br as xe,ea as Se,gn as m,ic as h,jr as Ce,kr as we,ns as Te,oc as Ee,oi as g,sc as _,vo as v,vr as De,wn as Oe,ws as ke,xr as Ae,yr as je,zs as y}from"./ui-components-D2lrjG-t.js";import{t as Me}from"./assistantBus-DNH-fDWN.js";import{M as Ne,_ as Pe,a as b,c as Fe,f as Ie,g as Le,h as Re,i as ze,k as x,l as Be,n as Ve,o as He,r as Ue,s as We,u as Ge,v as Ke,y as qe}from"./app-shell-eager-leaves-BB0oaPx6.js";import{i as Je,n as Ye,r as Xe,t as Ze}from"./usePackageL10n-F9isJ9pn.js";var S=e(n(),1),C=a();function w(e){let t=e.replace(/\r\n/g,`
1
+ import{o as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{b as n,h as r,p as i,r as a}from"./vendor-react-CsWFRkED.js";import{h as ee}from"./infrastructure-B4zG1jNa.js";import{u as te}from"./data-adapter-1YRpH3h_.js";import{J as ne}from"./framework-DFE_Mws9.js";import{y as re}from"./i18n-locales-BBA090ve.js";import{$i as ie,Bn as o,Cr as ae,Dn as oe,Dr as s,En as se,Hn as ce,Ja as le,Mr as ue,Ms as de,On as fe,Or as pe,Os as me,Pc as c,Pr as l,Qc as he,Si as u,Sr as ge,Tn as _e,Ts as ve,Vn as ye,Wn as d,Xn as be,Xr as f,Za as p,br as xe,ea as Se,gn as m,ic as h,jr as Ce,kr as we,ns as Te,oc as Ee,oi as g,sc as _,vo as v,vr as De,wn as Oe,ws as ke,xr as Ae,yr as je,zs as y}from"./ui-components-CMHDBJEm.js";import{t as Me}from"./assistantBus-DNH-fDWN.js";import{M as Ne,_ as Pe,a as b,c as Fe,f as Ie,g as Le,h as Re,i as ze,k as x,l as Be,n as Ve,o as He,r as Ue,s as We,u as Ge,v as Ke,y as qe}from"./app-shell-eager-leaves-wjbiJgVZ.js";import{i as Je,n as Ye,r as Xe,t as Ze}from"./usePackageL10n-BfPqgsRL.js";var S=e(n(),1),C=a();function w(e){let t=e.replace(/\r\n/g,`
2
2
  `).split(`
3
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
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 T(e){let t=[],n=e,r=0,i=[{re:/`([^`]+)`/,render:e=>(0,C.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,C.jsx)(`strong`,{className:`font-semibold text-foreground`,children:e[1]},`k${r++}`)},{re:/\*([^*]+)\*/,render:e=>(0,C.jsx)(`em`,{children:e[1]},`k${r++}`)},{re:/\[([^\]]+)\]\(([^)]+)\)/,render:e=>(0,C.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,C.jsx)(C.Fragment,{children:t.map((e,t)=>(0,C.jsx)(S.Fragment,{children:e},t))})}function Qe({source:e,className:t}){let n=w(e);return(0,C.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,C.jsx)(`h2`,{className:`mt-2 text-xl font-bold tracking-tight`,children:T(e.text??``)},t);case`h2`:return(0,C.jsx)(`h3`,{className:`mt-3 text-base font-semibold tracking-tight`,children:T(e.text??``)},t);case`h3`:return(0,C.jsx)(`h4`,{className:`mt-2 text-sm font-semibold tracking-tight text-foreground/80`,children:T(e.text??``)},t);case`p`:return(0,C.jsx)(`p`,{children:T(e.text??``)},t);case`ul`:return(0,C.jsx)(`ul`,{className:`ml-1 flex list-none flex-col gap-1.5`,children:(e.items??[]).map((e,t)=>(0,C.jsxs)(`li`,{className:`flex gap-2`,children:[(0,C.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,C.jsx)(`span`,{children:T(e)})]},t))},t);case`ol`:return(0,C.jsx)(`ol`,{className:`ml-5 flex list-decimal flex-col gap-1.5 marker:text-muted-foreground`,children:(e.items??[]).map((e,t)=>(0,C.jsx)(`li`,{className:`pl-1`,children:T(e)},t))},t);case`code`:return(0,C.jsx)(`pre`,{className:`overflow-x-auto rounded-lg border bg-muted/40 p-3 text-xs leading-relaxed`,children:(0,C.jsx)(`code`,{className:`font-mono`,children:e.text})},t)}return null})})}var $e={node:`In-process · full trust`,sandbox:`Sandboxed`,worker:`Out-of-process`};function E({icon:e,label:t,items:n}){return!n||n.length===0?null:(0,C.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,C.jsx)(e,{className:`h-3.5 w-3.5 mt-0.5 text-muted-foreground shrink-0`,"aria-hidden":`true`}),(0,C.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,C.jsx)(`div`,{className:`text-xs font-medium`,children:t}),(0,C.jsx)(`div`,{className:`flex flex-wrap gap-1 mt-0.5`,children:n.map(e=>(0,C.jsx)(`code`,{className:`font-mono text-[11px] px-1 py-0.5 rounded bg-muted break-all`,children:e},e))})]})]})}function et({version:e}){let{t}=re();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,C.jsxs)(`div`,{className:`rounded-md border border-amber-500/30 bg-amber-500/5 p-3 space-y-3 text-sm`,children:[(0,C.jsxs)(`div`,{className:`flex items-center gap-2 font-medium`,children:[(0,C.jsx)(y,{className:`h-4 w-4 text-amber-600 shrink-0`,"aria-hidden":`true`}),t(`marketplace.disclosure.containsCode`,{defaultValue:`This package contains code`})]}),(0,C.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[e.runtime&&(0,C.jsx)(l,{variant:`outline`,children:t(`marketplace.disclosure.runtime.${e.runtime}`,{defaultValue:$e[e.runtime]})}),e.platform_verified?(0,C.jsxs)(l,{variant:`outline`,className:`gap-1 border-green-500/40 text-green-700 dark:text-green-400`,children:[(0,C.jsx)(ie,{className:`h-3 w-3`,"aria-hidden":`true`}),t(`marketplace.disclosure.reviewed`,{defaultValue:`Reviewed & approved`})]}):(0,C.jsxs)(l,{variant:`outline`,className:`gap-1 border-amber-500/40 text-amber-700 dark:text-amber-400`,children:[(0,C.jsx)(Se,{className:`h-3 w-3`,"aria-hidden":`true`}),t(`marketplace.disclosure.unreviewed`,{defaultValue:`Not yet reviewed`})]}),e.signed&&(0,C.jsxs)(l,{variant:`outline`,className:`gap-1`,children:[(0,C.jsx)(h,{className:`h-3 w-3`,"aria-hidden":`true`}),t(`marketplace.disclosure.signed`,{defaultValue:`Signed`})]})]}),r?(0,C.jsxs)(`div`,{className:`space-y-2`,children:[(0,C.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:t(`marketplace.disclosure.grantsIntro`,{defaultValue:`On install, this package will be granted:`})}),(0,C.jsx)(E,{icon:c,label:t(`marketplace.disclosure.services`,{defaultValue:`Platform services`}),items:n.services??void 0}),(0,C.jsx)(E,{icon:g,label:t(`marketplace.disclosure.hooks`,{defaultValue:`Lifecycle hooks`}),items:n.hooks??void 0}),(0,C.jsx)(E,{icon:p,label:t(`marketplace.disclosure.network`,{defaultValue:`Network access`}),items:n.network??void 0}),(0,C.jsx)(E,{icon:Te,label:t(`marketplace.disclosure.fs`,{defaultValue:`Filesystem access`}),items:n.fs??void 0})]}):(0,C.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:t(`marketplace.disclosure.noPermissions`,{defaultValue:`Requests no special permissions.`})})]})}var D=t({MarketplacePackagePage:()=>O});function O(){let e=i(),{packageId:t,appName:n}=r(),{isAdmin:a,isResolved:ie}=ee(),{t:c,language:p}=re(),Se={describe:e=>c(e.anchor===`guest`?`marketplace.suggestedBindings.promptGuest`:`marketplace.suggestedBindings.promptEveryone`,{set:e.permission_set_name}),confirm:c(`marketplace.suggestedBindings.confirm`),confirming:c(`marketplace.suggestedBindings.confirming`),dismiss:c(`marketplace.suggestedBindings.dismiss`),confirmedToast:e=>c(`marketplace.suggestedBindings.confirmedToast`,{set:e.permission_set_name,anchor:e.anchor}),dismissedToast:e=>c(`marketplace.suggestedBindings.dismissedToast`,{set:e.permission_set_name})},Te=n?`/apps/${n}`:``,{refresh:g}=ne(),y=Ne(),[w,T]=(0,S.useState)(null),[$e,E]=(0,S.useState)(y),[D,O]=(0,S.useState)(null),[tt,k]=(0,S.useState)(!1),[nt,rt]=(0,S.useState)([]),[it,A]=(0,S.useState)(!1),[j,M]=(0,S.useState)(null),[N,P]=(0,S.useState)(``),[at,ot]=(0,S.useState)({}),[F,st]=(0,S.useState)(!1),[ct,lt]=(0,S.useState)(!1),[I,ut]=(0,S.useState)(!1),[L,R]=(0,S.useState)(null),[z,dt]=(0,S.useState)(null),[B,V]=(0,S.useState)(null),[H,U]=(0,S.useState)(null),[W,G]=(0,S.useState)(null),[ft,pt]=(0,S.useState)([]),[mt,K]=(0,S.useState)(!1),[q,J]=(0,S.useState)(null);(0,S.useEffect)(()=>{if(!x().features.installLocal||!y||!a)return;let e=!1;return(async()=>{let t=await Ie();e||pt(t)})(),()=>{e=!0}},[t,q,y,a]),(0,S.useEffect)(()=>{if(!t||!y||!a)return;let e=x().defaultEnvironmentId??``,n=!1;return(async()=>{let r=await b(t,e);n||!r||(V(r),dt(r.version))})(),()=>{n=!0}},[t,y,a]),(0,S.useEffect)(()=>{let e=!1;return(async()=>{if(t&&y&&a){E(!0),O(null);try{let n=await He(t);e||T(n)}catch(t){e||O(t?.message??String(t))}finally{e||E(!1)}}})(),()=>{e=!0}},[t,y,a]);let ht=async()=>{k(!0),R(null),M(null);let e=x().defaultEnvironmentId;if(e){A(!1),P(e),rt([]);return}A(!0);try{let[e,n]=await Promise.all([Be(),Ge()]),r=e.filter(e=>{let t=e.organization_id;return t?n.has(String(t)):!1});rt(r),ot({});let i=t;i&&Promise.all(r.map(async e=>{try{let t=await b(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]);ot(t)}),e.length>0&&r.length===0?M(c(`marketplace.install.noPermission`)):r.length===1&&P(r[0].id)}catch(e){let t=e?.status;M(t===401||t===403?c(`marketplace.install.signInFirst`):e?.message??String(e))}finally{A(!1)}},gt=async()=>{if(!(!t||!N)){ut(!0),R(null);try{let e=(await Fe({packageId:t,environmentId:N,seedSampleData:F}))?.installation?.version??w?.package?.latest_version?.version??w?.versions?.[0]?.version??``;dt(e||`installed`);try{let e=x().defaultEnvironmentId||N;if(e){let n=await b(t,e);n&&V(n)}}catch{}let n=x().defaultEnvironmentId;if(!n||n===N)try{if(typeof sessionStorage<`u`)for(let e of Object.keys(sessionStorage))e.startsWith(`objectui:metadata:`)&&sessionStorage.removeItem(e);await g()}catch{}R({ok:!0,message:c(`marketplace.install.success`)}),Me()}catch(e){R({ok:!1,message:e?.message??String(e)})}finally{ut(!1)}}},_t=async()=>{if(t){K(!0),J(null);try{let e=await We({packageId:t});try{await g(`app`)}catch{}J({ok:!0,message:c(`marketplace.install.localSuccess`,{version:e.version,name:w?.package?Ze(w.package,p).displayName:e.manifestId})}),Me()}catch(e){e?.code;let t=e?.message??String(e);te(e,`MANIFEST_CONFLICT`)?t=c(`marketplace.install.localManifestConflict`,{message:t}):te(e,`UNAUTHENTICATED`)?t=c(`marketplace.install.localUnauthorized`):te(e,`MARKETPLACE_UNAVAILABLE`)&&(t=c(`marketplace.install.localMarketplaceUnavailable`)),J({ok:!1,message:t})}finally{K(!1)}}},vt=async()=>{if(Q&&confirm(c(`marketplace.uninstall.confirm`,{manifestId:Q.manifestId,version:Q.version}))){K(!0),J(null);try{await qe(Q.manifestId);try{await g(`app`)}catch{}J({ok:!0,message:c(`marketplace.uninstall.successInDetail`,{manifestId:Q.manifestId})})}catch(e){J({ok:!1,message:e?.message??String(e)})}finally{K(!1)}}},yt=async()=>{if(B){U(`reseed`),G(null);try{let e=await Ke(B.installationId);e.ok?(V({...B,withSampleData:!0}),G({ok:!0,text:c(`marketplace.detail.reseedQueued`)})):G({ok:!1,text:e.error||`Re-seed failed`})}finally{U(null)}}},bt=async()=>{if(B&&confirm(c(`marketplace.detail.purgeConfirm`))){U(`purge`),G(null);try{let e=await Le(B.installationId);if(e.ok){V({...B,withSampleData:!1});let t=e.deleted??0;G({ok:!0,text:t>0?c(`marketplace.detail.purgeSuccess`,{count:t}):c(`marketplace.detail.purgeNoData`)})}else G({ok:!1,text:e.error||`Purge failed`})}finally{U(null)}}},xt=async()=>{if(Q){U(`reseed`),G(null);try{let e=await Pe(Q.manifestId);pt(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=c(`marketplace.detail.reseedLocalSuccess`,{inserted:t,updated:n});G(r>0?{ok:!1,text:`${i} ${c(`marketplace.detail.reseedPartialErrors`,{count:r})}`}:{ok:!0,text:i})}catch(e){G({ok:!1,text:e?.message||`Re-seed failed`})}finally{U(null)}}},St=async()=>{if(Q&&confirm(c(`marketplace.detail.purgeConfirm`))){U(`purge`),G(null);try{let e=await Re(Q.manifestId);pt(e=>e.map(e=>e.manifestId===Q.manifestId?{...e,withSampleData:!1}:e));let t=e.deleted??0;G({ok:!0,text:t>0?c(`marketplace.detail.purgeSuccess`,{count:t}):c(`marketplace.detail.purgeNoData`)})}catch(e){G({ok:!1,text:e?.message||`Purge failed`})}finally{U(null)}}};if(!y)return(0,C.jsx)(Ye,{});if(!ie)return(0,C.jsx)(Xe,{});if(!a)return(0,C.jsx)(Ue,{});if($e)return(0,C.jsxs)(`div`,{className:`mx-auto w-full max-w-6xl flex flex-col gap-6 p-4 sm:p-6`,children:[(0,C.jsx)(m,{className:`h-8 w-32`}),(0,C.jsx)(m,{className:`h-16 w-full`}),(0,C.jsx)(m,{className:`h-64 w-full`})]});if(D||!w)return(0,C.jsxs)(`div`,{className:`mx-auto w-full max-w-6xl flex flex-col gap-6 p-4 sm:p-6`,children:[(0,C.jsxs)(f,{variant:`ghost`,size:`sm`,onClick:()=>e(`${Te}/system/marketplace`),children:[(0,C.jsx)(he,{className:`h-4 w-4 mr-1.5`,"aria-hidden":`true`}),c(`marketplace.back`)]}),(0,C.jsxs)(`div`,{className:`flex items-start gap-3 rounded-md border border-destructive/30 bg-destructive/5 p-4 text-sm`,children:[(0,C.jsx)(_,{className:`h-4 w-4 mt-0.5 text-destructive`,"aria-hidden":`true`}),(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`div`,{className:`font-medium text-destructive`,children:c(`marketplace.load.packageFailed`)}),(0,C.jsx)(`div`,{className:`text-muted-foreground mt-1`,children:D??c(`marketplace.load.notFound`)})]})]})]});let Y=w.package,X=Ze(Y,p),Z=Y.latest_version?.version??w.versions[0]?.version??null,Q=ft.find(e=>e.manifestId===Y.manifest_id)??null,Ct=!!Y.latest_version?.contains_code,$=!!z&&z!==`installed`&&!!Z&&z!==Z,wt=x().features.installLocal,Tt=!Z||mt||I||!wt&&!!z&&!$,Et=wt?{label:c(mt?`marketplace.action.working`:Q?`marketplace.action.reinstall`:`marketplace.action.install`),onClick:_t}:{label:I?c(`marketplace.action.installing`):z?$?c(`marketplace.action.updateTo`,{defaultValue:`Update`}):c(`marketplace.action.installed`,{defaultValue:`Installed`}):c(`marketplace.action.installToCloud`),onClick:ht},Dt=Y.category?c(`marketplace.category.${Y.category}`,{defaultValue:Y.category}):null;return(0,C.jsxs)(`div`,{className:`mx-auto w-full max-w-6xl flex flex-col gap-6 p-4 sm:p-6`,children:[(0,C.jsxs)(f,{variant:`ghost`,size:`sm`,className:`self-start -ml-2 text-muted-foreground hover:text-foreground`,onClick:()=>e(`${Te}/system/marketplace`),children:[(0,C.jsx)(he,{className:`h-4 w-4 mr-1.5`,"aria-hidden":`true`}),c(`marketplace.back`)]}),(0,C.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,C.jsx)(Je,{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,C.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,C.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,C.jsx)(`h1`,{className:`text-2xl sm:text-3xl font-bold tracking-tight truncate`,children:X.displayName||Y.manifest_id}),Y.homepage_url&&(0,C.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:c(`marketplace.detail.homepage`),children:[(0,C.jsx)(ke,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}),(0,C.jsx)(`span`,{className:`hidden sm:inline`,children:c(`marketplace.detail.homepage`)})]})]}),(0,C.jsxs)(`div`,{className:`text-sm text-muted-foreground mt-2 flex flex-wrap items-center gap-1.5`,children:[(0,C.jsx)(`code`,{className:`font-mono text-xs px-1.5 py-0.5 rounded bg-muted`,children:Y.manifest_id}),Z&&(0,C.jsx)(l,{variant:`outline`,children:c(`marketplace.versionBadge`,{version:Z})}),Y.publisher&&Y.publisher!==`private`&&(0,C.jsx)(l,{variant:Y.publisher===`objectstack`?`default`:`secondary`,children:Y.publisher}),Dt&&(0,C.jsx)(l,{variant:`outline`,children:Dt}),Y.license&&(0,C.jsx)(l,{variant:`outline`,className:`font-normal`,children:Y.license}),Q&&(0,C.jsxs)(l,{variant:`default`,className:`bg-green-600 hover:bg-green-600 gap-1`,children:[(0,C.jsx)(h,{className:`h-3 w-3`,"aria-hidden":`true`}),c(`marketplace.detail.installedV`,{version:Q.version})]}),!Q&&z&&(0,C.jsxs)(l,{variant:`default`,className:`bg-green-600 hover:bg-green-600 gap-1`,children:[(0,C.jsx)(h,{className:`h-3 w-3`,"aria-hidden":`true`}),c(`marketplace.detail.installedV`,{version:z})]}),$&&(0,C.jsxs)(l,{variant:`default`,className:`bg-amber-500 hover:bg-amber-500 gap-1`,children:[(0,C.jsx)(Ee,{className:`h-3 w-3`,"aria-hidden":`true`}),c(`marketplace.detail.updateAvailable`,{defaultValue:`Update available`}),` → v`,Z]})]}),X.description&&(0,C.jsx)(`p`,{className:`text-sm sm:text-base text-foreground/80 mt-3 max-w-2xl leading-relaxed`,children:X.description})]}),(0,C.jsxs)(`div`,{className:`flex items-center gap-2 shrink-0 self-start`,children:[(0,C.jsxs)(f,{onClick:Et.onClick,disabled:Tt,size:`lg`,className:`min-w-[8rem]`,children:[(0,C.jsx)(me,{className:`h-4 w-4 mr-1.5`,"aria-hidden":`true`}),Et.label]}),Q&&(0,C.jsxs)(ye,{children:[(0,C.jsx)(be,{asChild:!0,children:(0,C.jsx)(f,{variant:`outline`,size:`lg`,className:`px-2.5`,"aria-label":c(`marketplace.detail.moreOptions`),children:(0,C.jsx)(ve,{className:`h-4 w-4`,"aria-hidden":`true`})})}),(0,C.jsxs)(ce,{align:`end`,className:`w-56`,children:[(0,C.jsxs)(d,{onSelect:xt,disabled:H!==null,children:[H===`reseed`?(0,C.jsx)(v,{className:`h-4 w-4 mr-2 animate-spin`,"aria-hidden":`true`}):(0,C.jsx)(de,{className:`h-4 w-4 mr-2`,"aria-hidden":`true`}),Q.withSampleData?c(`marketplace.detail.reseedAgain`):c(`marketplace.detail.addSampleData`)]}),(0,C.jsxs)(d,{onSelect:St,disabled:H!==null||!Q.withSampleData,className:`text-destructive focus:text-destructive`,children:[H===`purge`?(0,C.jsx)(v,{className:`h-4 w-4 mr-2 animate-spin`,"aria-hidden":`true`}):(0,C.jsx)(u,{className:`h-4 w-4 mr-2`,"aria-hidden":`true`}),c(`marketplace.detail.purgeSampleData`)]}),(0,C.jsxs)(d,{onSelect:vt,disabled:mt,className:`text-destructive focus:text-destructive`,children:[(0,C.jsx)(u,{className:`h-4 w-4 mr-2`,"aria-hidden":`true`}),c(`marketplace.detail.uninstallFromRuntime`)]})]})]}),!Q&&B&&!x().cloudUrl&&(0,C.jsxs)(ye,{children:[(0,C.jsx)(be,{asChild:!0,children:(0,C.jsx)(f,{variant:`outline`,size:`lg`,className:`px-2.5`,"aria-label":c(`marketplace.detail.moreOptions`),children:(0,C.jsx)(ve,{className:`h-4 w-4`,"aria-hidden":`true`})})}),(0,C.jsxs)(ce,{align:`end`,className:`w-56`,children:[(0,C.jsxs)(d,{onSelect:yt,disabled:H!==null,children:[H===`reseed`?(0,C.jsx)(v,{className:`h-4 w-4 mr-2 animate-spin`,"aria-hidden":`true`}):(0,C.jsx)(de,{className:`h-4 w-4 mr-2`,"aria-hidden":`true`}),B.withSampleData?c(`marketplace.detail.reseedAgain`):c(`marketplace.detail.addSampleData`)]}),(0,C.jsxs)(d,{onSelect:bt,disabled:H!==null||!B.withSampleData,className:`text-destructive focus:text-destructive`,children:[H===`purge`?(0,C.jsx)(v,{className:`h-4 w-4 mr-2 animate-spin`,"aria-hidden":`true`}):(0,C.jsx)(u,{className:`h-4 w-4 mr-2`,"aria-hidden":`true`}),c(`marketplace.detail.purgeSampleData`)]})]})]})]})]}),W&&(0,C.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,C.jsx)(h,{className:`h-4 w-4 mt-0.5 shrink-0`,"aria-hidden":`true`}):(0,C.jsx)(_,{className:`h-4 w-4 mt-0.5 shrink-0`,"aria-hidden":`true`}),(0,C.jsx)(`div`,{className:`flex-1`,children:W.text}),(0,C.jsx)(`button`,{type:`button`,className:`text-xs underline opacity-60 hover:opacity-100`,onClick:()=>G(null),children:c(`marketplace.action.dismiss`)})]}),q&&(0,C.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,C.jsx)(h,{className:`h-4 w-4 mt-0.5 shrink-0`,"aria-hidden":`true`}):(0,C.jsx)(_,{className:`h-4 w-4 mt-0.5 shrink-0`,"aria-hidden":`true`}),(0,C.jsxs)(`div`,{className:`flex-1`,children:[q.message,q.ok&&(0,C.jsx)(Ve,{packageId:Y.manifest_id,strings:Se,className:`mt-2`})]}),(0,C.jsx)(`button`,{type:`button`,className:`text-xs underline opacity-60 hover:opacity-100`,onClick:()=>J(null),children:c(`marketplace.action.dismiss`)})]}),(0,C.jsxs)(`div`,{className:`grid gap-4 lg:grid-cols-3`,children:[(0,C.jsx)(`div`,{className:`lg:col-span-2 space-y-4`,children:(0,C.jsxs)(pe,{children:[(0,C.jsx)(Ce,{children:(0,C.jsx)(ue,{className:`text-base`,children:c(`marketplace.detail.about`)})}),(0,C.jsx)(we,{children:X.readme?(0,C.jsx)(Qe,{source:X.readme}):(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:c(`marketplace.detail.noReadme`)})})]})}),(0,C.jsx)(`div`,{className:`space-y-4`,children:(0,C.jsxs)(pe,{children:[(0,C.jsx)(Ce,{children:(0,C.jsx)(ue,{className:`text-base`,children:c(`marketplace.detail.versions`)})}),(0,C.jsx)(we,{children:w.versions.length===0?(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:c(`marketplace.detail.noApprovedVersions`)}):(0,C.jsx)(`ul`,{className:`space-y-3`,children:w.versions.map(e=>(0,C.jsxs)(`li`,{className:`space-y-1 text-sm`,children:[(0,C.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,C.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,C.jsx)(le,{className:`h-3.5 w-3.5 text-muted-foreground`,"aria-hidden":`true`}),(0,C.jsxs)(`code`,{className:`font-mono`,children:[`v`,e.version]}),e.is_prerelease&&(0,C.jsx)(l,{variant:`outline`,className:`text-xs`,children:c(`marketplace.detail.prerelease`)})]}),(0,C.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e.published_at?new Date(e.published_at).toLocaleDateString():`—`})]}),e.release_notes&&e.release_notes.trim()&&(0,C.jsx)(`p`,{className:`whitespace-pre-line pl-5 text-xs text-muted-foreground`,children:e.release_notes.trim()})]},e.id))})})]})})]}),(0,C.jsx)(De,{open:tt,onOpenChange:e=>{k(e),e||(R(null),lt(!1))},children:(0,C.jsxs)(je,{children:[(0,C.jsxs)(ge,{children:[(0,C.jsx)(ae,{children:c(`marketplace.install.dialogTitle`,{name:X.displayName||Y.manifest_id})}),(0,C.jsx)(xe,{children:x().defaultEnvironmentId?c(`marketplace.install.dialogDescCurrent`,{host:typeof window<`u`?window.location.host:``}):c(`marketplace.install.dialogDescPicker`)})]}),it?(0,C.jsx)(m,{className:`h-10 w-full`}):j?(0,C.jsxs)(`div`,{className:`rounded-md border border-amber-500/30 bg-amber-500/5 p-3 text-sm space-y-2`,children:[(0,C.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,C.jsx)(_,{className:`h-4 w-4 mt-0.5 text-amber-600`,"aria-hidden":`true`}),(0,C.jsx)(`div`,{className:`flex-1`,children:j})]}),ze()?(0,C.jsx)(`a`,{href:ze(),target:`_blank`,rel:`noopener noreferrer`,children:(0,C.jsxs)(f,{variant:`outline`,size:`sm`,className:`w-full`,children:[(0,C.jsx)(ke,{className:`h-4 w-4 mr-1.5`,"aria-hidden":`true`}),c(`marketplace.action.openOnCloud`)]})}):null]}):x().defaultEnvironmentId?(0,C.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,C.jsx)(s,{id:`seed`,checked:F,onCheckedChange:e=>st(e===!0)}),(0,C.jsx)(o,{htmlFor:`seed`,className:`text-sm font-normal cursor-pointer`,children:c(`marketplace.install.includeSampleData`)})]}):nt.length===0?(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:c(`marketplace.install.noEnvs`)}):(0,C.jsxs)(`div`,{className:`space-y-4`,children:[(0,C.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,C.jsx)(o,{htmlFor:`env-select`,children:c(`marketplace.install.environment`)}),(0,C.jsxs)(Oe,{value:N,onValueChange:P,children:[(0,C.jsx)(oe,{id:`env-select`,children:(0,C.jsx)(fe,{placeholder:c(`marketplace.install.environmentPlaceholder`)})}),(0,C.jsx)(_e,{children:nt.map(e=>{let t=at[e.id],n=!!t&&!!Z&&t!==`installed`&&t!==Z;return(0,C.jsxs)(se,{value:e.id,children:[e.display_name||e.hostname||e.id,e.plan&&(0,C.jsxs)(`span`,{className:`text-muted-foreground`,children:[` · `,e.plan]}),t&&(n?(0,C.jsxs)(`span`,{className:`text-amber-600`,children:[` · `,c(`marketplace.install.updateTo`,{defaultValue:`Update → v{{version}}`,version:Z})]}):(0,C.jsxs)(`span`,{className:`text-muted-foreground`,children:[` · `,c(`marketplace.install.installedVersion`,{defaultValue:`Installed v{{version}}`,version:t})]}))]},e.id)})})]})]}),(0,C.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,C.jsx)(s,{id:`seed`,checked:F,onCheckedChange:e=>st(e===!0)}),(0,C.jsx)(o,{htmlFor:`seed`,className:`text-sm font-normal cursor-pointer`,children:c(`marketplace.install.includeSampleData`)})]})]}),Ct&&!j&&(0,C.jsxs)(`div`,{className:`space-y-3`,children:[(0,C.jsx)(et,{version:Y.latest_version}),(0,C.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,C.jsx)(s,{id:`ack-perms`,checked:ct,onCheckedChange:e=>lt(e===!0)}),(0,C.jsx)(o,{htmlFor:`ack-perms`,className:`text-sm font-normal cursor-pointer leading-snug`,children:c(`marketplace.disclosure.acknowledge`,{defaultValue:`I understand this package runs code and grants the permissions above.`})})]})]}),L&&(0,C.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&&x().defaultEnvironmentId&&x().defaultEnvironmentId===N&&(0,C.jsx)(Ve,{packageId:Y.manifest_id,strings:Se}),(0,C.jsxs)(Ae,{children:[(0,C.jsx)(f,{variant:`outline`,onClick:()=>k(!1),children:c(`marketplace.action.close`)}),!j&&(0,C.jsx)(f,{onClick:gt,disabled:!N||I||L?.ok===!0||Ct&&!ct,children:c(I?`marketplace.action.installing`:`marketplace.action.install`)})]})]})})]})}export{D as t};
@@ -1 +1 @@
1
- import{o as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{b as n,h as r,p as i,r as a}from"./vendor-react-CsWFRkED.js";import{h as ee}from"./infrastructure-CIpDEFyQ.js";import{y as o}from"./i18n-locales-Bz4c8KXc.js";import{Ar as s,Fi as c,In as te,Ja as l,Mr as u,Or as d,Pr as f,Xr as p,aa as ne,gn as m,ic as h,jr as g,kr as _,na as re,sc as ie,ya as ae}from"./ui-components-D2lrjG-t.js";import{t as oe}from"./assistantBus-DNH-fDWN.js";import{M as se,c as ce,d as v,f as y,k as b,m as x,p as S,r as le,s as ue,x as C}from"./app-shell-eager-leaves-BB0oaPx6.js";import{i as w,n as T,r as E,t as D}from"./usePackageL10n-F9isJ9pn.js";var O=t({MarketplacePage:()=>j}),k=e(n(),1),A=a();function de(){let{language:e,t}=o();return n=>{if(!n)return``;let r=new Date(n);if(Number.isNaN(r.getTime()))return``;let i=Math.floor((Date.now()-r.getTime())/864e5);if(i<1)return t(`marketplace.relativeTime.today`);try{let t=new Intl.RelativeTimeFormat(e||`en`,{numeric:`auto`});return i<30?t.format(-i,`day`):i<365?t.format(-Math.floor(i/30),`month`):t.format(-Math.floor(i/365),`year`)}catch{return i<30?t(`marketplace.relativeTime.daysAgo`,{count:i}):i<365?t(`marketplace.relativeTime.monthsAgo`,{count:Math.floor(i/30)}):t(`marketplace.relativeTime.yearsAgo`,{count:Math.floor(i/365)})}}}function j(){let e=i(),{appName:t}=r(),{isAdmin:n,isResolved:a}=ee(),{t:O,language:j}=o(),fe=de(),M=t?`/apps/${t}`:``,N=se(),P=C(),[F,I]=(0,k.useState)([]),[L,R]=(0,k.useState)(N),[z,B]=(0,k.useState)(null),[V,pe]=(0,k.useState)(``),[H,U]=(0,k.useState)(``),[W,me]=(0,k.useState)([]),[G,he]=(0,k.useState)([]),[K,q]=(0,k.useState)(null),[J,Y]=(0,k.useState)(null),[ge,_e]=(0,k.useState)(new Set),ve=(0,k.useMemo)(()=>{let e=new Map;for(let t of W)e.set(t.manifestId,t);return e},[W]),X=async()=>{R(!0),B(null);try{let[e,t,n,r]=await Promise.all([S({limit:100}),y(),x(),v()]);I(e.items??[]),me(t),he(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);_e(i)}catch(e){B(e?.message??String(e)),I([])}finally{R(!1)}};(0,k.useEffect)(()=>{N&&X()},[N]);let ye=async e=>{q(e.id),Y(null);try{b().features.installLocal?await ue({packageId:e.manifest_id||e.id,versionId:`latest`}):await ce({packageId:e.id,environmentId:``,seedSampleData:!0}),Y({ok:!0,text:O(`marketplace.org.installed`,{defaultValue:`Installed ${e.display_name}`,name:e.display_name})}),await X(),oe()}catch(e){Y({ok:!1,text:e?.message??String(e)})}finally{q(null)}},Z=(0,k.useMemo)(()=>{let e=new Set;for(let t of F)t.category&&e.add(t.category);return Array.from(e).sort()},[F]),Q=e=>{let t=`marketplace.category.${e}`,n=O(t,{defaultValue:e});return n===t?e:n},$=(0,k.useMemo)(()=>{let e=V.trim().toLowerCase();return F.filter(t=>{if(H&&t.category!==H)return!1;if(!e)return!0;let n=D(t,j);return`${n.displayName} ${t.manifest_id} ${n.description??``}`.toLowerCase().includes(e)})},[F,V,H,j]);return N?a?n?(0,A.jsxs)(`div`,{className:`flex flex-col gap-6 p-4 sm:p-6`,children:[(0,A.jsxs)(`div`,{className:`flex items-start justify-between gap-4 flex-wrap`,children:[(0,A.jsxs)(`div`,{className:`min-w-0`,children:[(0,A.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,A.jsx)(c,{className:`h-6 w-6 text-primary`,"aria-hidden":`true`}),(0,A.jsx)(`h1`,{className:`text-xl sm:text-2xl font-bold tracking-tight`,children:O(`marketplace.title`)})]}),(0,A.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1`,children:O(`marketplace.subtitle`)})]}),(0,A.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,A.jsxs)(p,{variant:`outline`,size:`sm`,onClick:()=>e(`${M}/system/marketplace/installed`),children:[(0,A.jsx)(re,{className:`h-4 w-4 mr-1.5`,"aria-hidden":`true`}),W.length>0?O(`marketplace.installedCount`,{count:W.length}):O(`marketplace.installed`)]}),(0,A.jsxs)(p,{variant:`outline`,size:`sm`,onClick:()=>void X(),disabled:L,children:[(0,A.jsx)(ae,{className:`h-4 w-4 mr-1.5`,"aria-hidden":`true`}),O(`marketplace.refresh`)]})]})]}),(0,A.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-3`,children:[(0,A.jsxs)(`div`,{className:`relative flex-1`,children:[(0,A.jsx)(ne,{className:`absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground`,"aria-hidden":`true`}),(0,A.jsx)(te,{value:V,onChange:e=>pe(e.target.value),placeholder:O(`marketplace.searchPlaceholder`),className:`pl-9`,"aria-label":O(`marketplace.searchAria`)})]}),Z.length>0&&(0,A.jsxs)(`div`,{className:`flex flex-wrap gap-1.5`,children:[(0,A.jsx)(p,{size:`sm`,variant:H===``?`default`:`outline`,onClick:()=>U(``),children:O(`marketplace.all`)}),Z.map(e=>(0,A.jsx)(p,{size:`sm`,variant:H===e?`default`:`outline`,onClick:()=>U(e),children:Q(e)},e))]})]}),z&&(0,A.jsxs)(`div`,{className:`flex items-start gap-3 rounded-md border border-destructive/30 bg-destructive/5 p-4 text-sm`,children:[(0,A.jsx)(ie,{className:`h-4 w-4 mt-0.5 text-destructive`,"aria-hidden":`true`}),(0,A.jsxs)(`div`,{children:[(0,A.jsx)(`div`,{className:`font-medium text-destructive`,children:O(`marketplace.load.failed`)}),(0,A.jsx)(`div`,{className:`text-muted-foreground mt-1`,children:z}),(0,A.jsx)(`div`,{className:`text-xs text-muted-foreground mt-2`,"data-testid":`marketplace-load-hint`,children:P?O(`marketplace.load.failedHintConfigured`,{url:P}):O(`marketplace.load.failedHintSameOrigin`)})]})]}),G.length>0&&(0,A.jsxs)(`section`,{className:`flex flex-col gap-3`,children:[(0,A.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,A.jsx)(c,{className:`h-5 w-5 text-primary`,"aria-hidden":`true`}),(0,A.jsx)(`h2`,{className:`text-sm font-semibold`,children:O(`marketplace.org.heading`,{defaultValue:`Your organization`})}),(0,A.jsx)(f,{variant:`secondary`,className:`text-xs`,children:G.length})]}),J&&(0,A.jsx)(`div`,{className:`rounded-md border p-3 text-sm ${J.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:J.text}),(0,A.jsx)(`div`,{className:`grid gap-4 sm:grid-cols-2 lg:grid-cols-3`,children:G.map(e=>{let t=ge.has(e.manifest_id);return(0,A.jsxs)(d,{className:`flex flex-col`,"data-testid":`org-card-${e.manifest_id}`,children:[(0,A.jsxs)(g,{className:`flex flex-row items-start gap-3 pb-2`,children:[(0,A.jsx)(w,{iconUrl:e.icon_url,displayName:e.display_name,manifestId:e.manifest_id}),(0,A.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,A.jsx)(u,{className:`text-base truncate`,children:e.display_name}),(0,A.jsx)(s,{className:`text-xs truncate`,children:(0,A.jsx)(`code`,{className:`font-mono`,children:e.manifest_id})})]}),e.visibility&&(0,A.jsx)(f,{variant:`outline`,className:`shrink-0 text-xs`,children:e.visibility})]}),(0,A.jsxs)(_,{className:`flex-1 flex flex-col gap-2`,children:[(0,A.jsx)(`p`,{className:`text-sm text-muted-foreground line-clamp-2`,children:e.description||O(`marketplace.noDescription`)}),(0,A.jsxs)(`div`,{className:`flex items-center gap-2 mt-auto pt-2 flex-wrap`,children:[e.latest_version&&(0,A.jsxs)(f,{variant:`outline`,className:`text-xs`,children:[(0,A.jsx)(l,{className:`h-3 w-3 mr-1`,"aria-hidden":`true`}),O(`marketplace.versionBadge`,{version:e.latest_version})]}),(0,A.jsx)(`div`,{className:`ml-auto`,children:t?(0,A.jsxs)(f,{variant:`default`,className:`text-xs bg-green-600 hover:bg-green-600`,children:[(0,A.jsx)(h,{className:`h-3 w-3 mr-1`,"aria-hidden":`true`}),O(`marketplace.org.installedBadge`,{defaultValue:`Installed`})]}):(0,A.jsx)(p,{size:`sm`,onClick:()=>void ye(e),disabled:K===e.id,children:K===e.id?O(`marketplace.org.installing`,{defaultValue:`Installing…`}):O(`marketplace.org.install`,{defaultValue:`Install`})})})]})]})]},e.id)})}),(0,A.jsx)(`div`,{className:`border-b pt-2`})]}),L&&F.length===0?(0,A.jsx)(`div`,{className:`grid gap-4 sm:grid-cols-2 lg:grid-cols-3`,children:Array.from({length:6}).map((e,t)=>(0,A.jsxs)(d,{children:[(0,A.jsxs)(g,{className:`pb-2`,children:[(0,A.jsx)(m,{className:`h-10 w-10 rounded-lg mb-2`}),(0,A.jsx)(m,{className:`h-5 w-3/4`}),(0,A.jsx)(m,{className:`h-4 w-1/2 mt-1`})]}),(0,A.jsx)(_,{children:(0,A.jsx)(m,{className:`h-12 w-full`})})]},t))}):$.length===0?(0,A.jsx)(`div`,{className:`text-center py-12 text-sm text-muted-foreground`,children:F.length===0?O(`marketplace.noApprovedYet`):O(`marketplace.noMatchFilters`)}):(0,A.jsx)(`div`,{className:`grid gap-4 sm:grid-cols-2 lg:grid-cols-3`,children:$.map(t=>{let n=ve.get(t.manifest_id),r=D(t,j);return(0,A.jsxs)(d,{className:`cursor-pointer transition-colors hover:bg-accent/50 flex flex-col`,onClick:()=>e(`${M}/system/marketplace/${t.id}`),role:`link`,tabIndex:0,onKeyDown:n=>{(n.key===`Enter`||n.key===` `)&&(n.preventDefault(),e(`${M}/system/marketplace/${t.id}`))},"data-testid":`marketplace-card-${t.manifest_id}`,children:[(0,A.jsxs)(g,{className:`flex flex-row items-start gap-3 pb-2`,children:[(0,A.jsx)(w,{iconUrl:t.icon_url,displayName:r.displayName,manifestId:t.manifest_id}),(0,A.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,A.jsx)(u,{className:`text-base truncate`,children:r.displayName}),(0,A.jsx)(s,{className:`text-xs truncate`,children:(0,A.jsx)(`code`,{className:`font-mono`,children:t.manifest_id})})]}),t.publisher&&t.publisher!==`private`&&(0,A.jsx)(f,{variant:t.publisher===`objectstack`?`default`:`secondary`,className:`shrink-0`,children:t.publisher})]}),(0,A.jsxs)(_,{className:`flex-1 flex flex-col gap-2`,children:[(0,A.jsx)(`p`,{className:`text-sm text-muted-foreground line-clamp-2`,children:r.description||O(`marketplace.noDescription`)}),(0,A.jsxs)(`div`,{className:`flex items-center gap-2 mt-auto pt-2 flex-wrap`,children:[n&&(0,A.jsxs)(f,{variant:`default`,className:`text-xs bg-green-600 hover:bg-green-600`,children:[(0,A.jsx)(h,{className:`h-3 w-3 mr-1`,"aria-hidden":`true`}),O(`marketplace.installedBadge`,{version:n.version})]}),t.latest_version?.version&&(0,A.jsxs)(f,{variant:`outline`,className:`text-xs`,children:[(0,A.jsx)(l,{className:`h-3 w-3 mr-1`,"aria-hidden":`true`}),O(`marketplace.versionBadge`,{version:t.latest_version.version})]}),t.category&&(0,A.jsx)(f,{variant:`outline`,className:`text-xs`,children:Q(t.category)}),t.latest_version?.published_at&&(0,A.jsx)(`span`,{className:`text-xs text-muted-foreground ml-auto`,children:fe(t.latest_version.published_at)})]})]})]},t.id)})})]}):(0,A.jsx)(le,{}):(0,A.jsx)(E,{}):(0,A.jsx)(T,{})}export{O as t};
1
+ import{o as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{b as n,h as r,p as i,r as a}from"./vendor-react-CsWFRkED.js";import{h as ee}from"./infrastructure-B4zG1jNa.js";import{y as o}from"./i18n-locales-BBA090ve.js";import{Ar as s,Fi as c,In as te,Ja as l,Mr as u,Or as d,Pr as f,Xr as p,aa as ne,gn as m,ic as h,jr as g,kr as _,na as re,sc as ie,ya as ae}from"./ui-components-CMHDBJEm.js";import{t as oe}from"./assistantBus-DNH-fDWN.js";import{M as se,c as ce,d as v,f as y,k as b,m as x,p as S,r as le,s as ue,x as C}from"./app-shell-eager-leaves-wjbiJgVZ.js";import{i as w,n as T,r as E,t as D}from"./usePackageL10n-BfPqgsRL.js";var O=t({MarketplacePage:()=>j}),k=e(n(),1),A=a();function de(){let{language:e,t}=o();return n=>{if(!n)return``;let r=new Date(n);if(Number.isNaN(r.getTime()))return``;let i=Math.floor((Date.now()-r.getTime())/864e5);if(i<1)return t(`marketplace.relativeTime.today`);try{let t=new Intl.RelativeTimeFormat(e||`en`,{numeric:`auto`});return i<30?t.format(-i,`day`):i<365?t.format(-Math.floor(i/30),`month`):t.format(-Math.floor(i/365),`year`)}catch{return i<30?t(`marketplace.relativeTime.daysAgo`,{count:i}):i<365?t(`marketplace.relativeTime.monthsAgo`,{count:Math.floor(i/30)}):t(`marketplace.relativeTime.yearsAgo`,{count:Math.floor(i/365)})}}}function j(){let e=i(),{appName:t}=r(),{isAdmin:n,isResolved:a}=ee(),{t:O,language:j}=o(),fe=de(),M=t?`/apps/${t}`:``,N=se(),P=C(),[F,I]=(0,k.useState)([]),[L,R]=(0,k.useState)(N),[z,B]=(0,k.useState)(null),[V,pe]=(0,k.useState)(``),[H,U]=(0,k.useState)(``),[W,me]=(0,k.useState)([]),[G,he]=(0,k.useState)([]),[K,q]=(0,k.useState)(null),[J,Y]=(0,k.useState)(null),[ge,_e]=(0,k.useState)(new Set),ve=(0,k.useMemo)(()=>{let e=new Map;for(let t of W)e.set(t.manifestId,t);return e},[W]),X=async()=>{R(!0),B(null);try{let[e,t,n,r]=await Promise.all([S({limit:100}),y(),x(),v()]);I(e.items??[]),me(t),he(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);_e(i)}catch(e){B(e?.message??String(e)),I([])}finally{R(!1)}};(0,k.useEffect)(()=>{N&&X()},[N]);let ye=async e=>{q(e.id),Y(null);try{b().features.installLocal?await ue({packageId:e.manifest_id||e.id,versionId:`latest`}):await ce({packageId:e.id,environmentId:``,seedSampleData:!0}),Y({ok:!0,text:O(`marketplace.org.installed`,{defaultValue:`Installed ${e.display_name}`,name:e.display_name})}),await X(),oe()}catch(e){Y({ok:!1,text:e?.message??String(e)})}finally{q(null)}},Z=(0,k.useMemo)(()=>{let e=new Set;for(let t of F)t.category&&e.add(t.category);return Array.from(e).sort()},[F]),Q=e=>{let t=`marketplace.category.${e}`,n=O(t,{defaultValue:e});return n===t?e:n},$=(0,k.useMemo)(()=>{let e=V.trim().toLowerCase();return F.filter(t=>{if(H&&t.category!==H)return!1;if(!e)return!0;let n=D(t,j);return`${n.displayName} ${t.manifest_id} ${n.description??``}`.toLowerCase().includes(e)})},[F,V,H,j]);return N?a?n?(0,A.jsxs)(`div`,{className:`flex flex-col gap-6 p-4 sm:p-6`,children:[(0,A.jsxs)(`div`,{className:`flex items-start justify-between gap-4 flex-wrap`,children:[(0,A.jsxs)(`div`,{className:`min-w-0`,children:[(0,A.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,A.jsx)(c,{className:`h-6 w-6 text-primary`,"aria-hidden":`true`}),(0,A.jsx)(`h1`,{className:`text-xl sm:text-2xl font-bold tracking-tight`,children:O(`marketplace.title`)})]}),(0,A.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1`,children:O(`marketplace.subtitle`)})]}),(0,A.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,A.jsxs)(p,{variant:`outline`,size:`sm`,onClick:()=>e(`${M}/system/marketplace/installed`),children:[(0,A.jsx)(re,{className:`h-4 w-4 mr-1.5`,"aria-hidden":`true`}),W.length>0?O(`marketplace.installedCount`,{count:W.length}):O(`marketplace.installed`)]}),(0,A.jsxs)(p,{variant:`outline`,size:`sm`,onClick:()=>void X(),disabled:L,children:[(0,A.jsx)(ae,{className:`h-4 w-4 mr-1.5`,"aria-hidden":`true`}),O(`marketplace.refresh`)]})]})]}),(0,A.jsxs)(`div`,{className:`flex flex-col sm:flex-row gap-3`,children:[(0,A.jsxs)(`div`,{className:`relative flex-1`,children:[(0,A.jsx)(ne,{className:`absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground`,"aria-hidden":`true`}),(0,A.jsx)(te,{value:V,onChange:e=>pe(e.target.value),placeholder:O(`marketplace.searchPlaceholder`),className:`pl-9`,"aria-label":O(`marketplace.searchAria`)})]}),Z.length>0&&(0,A.jsxs)(`div`,{className:`flex flex-wrap gap-1.5`,children:[(0,A.jsx)(p,{size:`sm`,variant:H===``?`default`:`outline`,onClick:()=>U(``),children:O(`marketplace.all`)}),Z.map(e=>(0,A.jsx)(p,{size:`sm`,variant:H===e?`default`:`outline`,onClick:()=>U(e),children:Q(e)},e))]})]}),z&&(0,A.jsxs)(`div`,{className:`flex items-start gap-3 rounded-md border border-destructive/30 bg-destructive/5 p-4 text-sm`,children:[(0,A.jsx)(ie,{className:`h-4 w-4 mt-0.5 text-destructive`,"aria-hidden":`true`}),(0,A.jsxs)(`div`,{children:[(0,A.jsx)(`div`,{className:`font-medium text-destructive`,children:O(`marketplace.load.failed`)}),(0,A.jsx)(`div`,{className:`text-muted-foreground mt-1`,children:z}),(0,A.jsx)(`div`,{className:`text-xs text-muted-foreground mt-2`,"data-testid":`marketplace-load-hint`,children:P?O(`marketplace.load.failedHintConfigured`,{url:P}):O(`marketplace.load.failedHintSameOrigin`)})]})]}),G.length>0&&(0,A.jsxs)(`section`,{className:`flex flex-col gap-3`,children:[(0,A.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,A.jsx)(c,{className:`h-5 w-5 text-primary`,"aria-hidden":`true`}),(0,A.jsx)(`h2`,{className:`text-sm font-semibold`,children:O(`marketplace.org.heading`,{defaultValue:`Your organization`})}),(0,A.jsx)(f,{variant:`secondary`,className:`text-xs`,children:G.length})]}),J&&(0,A.jsx)(`div`,{className:`rounded-md border p-3 text-sm ${J.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:J.text}),(0,A.jsx)(`div`,{className:`grid gap-4 sm:grid-cols-2 lg:grid-cols-3`,children:G.map(e=>{let t=ge.has(e.manifest_id);return(0,A.jsxs)(d,{className:`flex flex-col`,"data-testid":`org-card-${e.manifest_id}`,children:[(0,A.jsxs)(g,{className:`flex flex-row items-start gap-3 pb-2`,children:[(0,A.jsx)(w,{iconUrl:e.icon_url,displayName:e.display_name,manifestId:e.manifest_id}),(0,A.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,A.jsx)(u,{className:`text-base truncate`,children:e.display_name}),(0,A.jsx)(s,{className:`text-xs truncate`,children:(0,A.jsx)(`code`,{className:`font-mono`,children:e.manifest_id})})]}),e.visibility&&(0,A.jsx)(f,{variant:`outline`,className:`shrink-0 text-xs`,children:e.visibility})]}),(0,A.jsxs)(_,{className:`flex-1 flex flex-col gap-2`,children:[(0,A.jsx)(`p`,{className:`text-sm text-muted-foreground line-clamp-2`,children:e.description||O(`marketplace.noDescription`)}),(0,A.jsxs)(`div`,{className:`flex items-center gap-2 mt-auto pt-2 flex-wrap`,children:[e.latest_version&&(0,A.jsxs)(f,{variant:`outline`,className:`text-xs`,children:[(0,A.jsx)(l,{className:`h-3 w-3 mr-1`,"aria-hidden":`true`}),O(`marketplace.versionBadge`,{version:e.latest_version})]}),(0,A.jsx)(`div`,{className:`ml-auto`,children:t?(0,A.jsxs)(f,{variant:`default`,className:`text-xs bg-green-600 hover:bg-green-600`,children:[(0,A.jsx)(h,{className:`h-3 w-3 mr-1`,"aria-hidden":`true`}),O(`marketplace.org.installedBadge`,{defaultValue:`Installed`})]}):(0,A.jsx)(p,{size:`sm`,onClick:()=>void ye(e),disabled:K===e.id,children:K===e.id?O(`marketplace.org.installing`,{defaultValue:`Installing…`}):O(`marketplace.org.install`,{defaultValue:`Install`})})})]})]})]},e.id)})}),(0,A.jsx)(`div`,{className:`border-b pt-2`})]}),L&&F.length===0?(0,A.jsx)(`div`,{className:`grid gap-4 sm:grid-cols-2 lg:grid-cols-3`,children:Array.from({length:6}).map((e,t)=>(0,A.jsxs)(d,{children:[(0,A.jsxs)(g,{className:`pb-2`,children:[(0,A.jsx)(m,{className:`h-10 w-10 rounded-lg mb-2`}),(0,A.jsx)(m,{className:`h-5 w-3/4`}),(0,A.jsx)(m,{className:`h-4 w-1/2 mt-1`})]}),(0,A.jsx)(_,{children:(0,A.jsx)(m,{className:`h-12 w-full`})})]},t))}):$.length===0?(0,A.jsx)(`div`,{className:`text-center py-12 text-sm text-muted-foreground`,children:F.length===0?O(`marketplace.noApprovedYet`):O(`marketplace.noMatchFilters`)}):(0,A.jsx)(`div`,{className:`grid gap-4 sm:grid-cols-2 lg:grid-cols-3`,children:$.map(t=>{let n=ve.get(t.manifest_id),r=D(t,j);return(0,A.jsxs)(d,{className:`cursor-pointer transition-colors hover:bg-accent/50 flex flex-col`,onClick:()=>e(`${M}/system/marketplace/${t.id}`),role:`link`,tabIndex:0,onKeyDown:n=>{(n.key===`Enter`||n.key===` `)&&(n.preventDefault(),e(`${M}/system/marketplace/${t.id}`))},"data-testid":`marketplace-card-${t.manifest_id}`,children:[(0,A.jsxs)(g,{className:`flex flex-row items-start gap-3 pb-2`,children:[(0,A.jsx)(w,{iconUrl:t.icon_url,displayName:r.displayName,manifestId:t.manifest_id}),(0,A.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,A.jsx)(u,{className:`text-base truncate`,children:r.displayName}),(0,A.jsx)(s,{className:`text-xs truncate`,children:(0,A.jsx)(`code`,{className:`font-mono`,children:t.manifest_id})})]}),t.publisher&&t.publisher!==`private`&&(0,A.jsx)(f,{variant:t.publisher===`objectstack`?`default`:`secondary`,className:`shrink-0`,children:t.publisher})]}),(0,A.jsxs)(_,{className:`flex-1 flex flex-col gap-2`,children:[(0,A.jsx)(`p`,{className:`text-sm text-muted-foreground line-clamp-2`,children:r.description||O(`marketplace.noDescription`)}),(0,A.jsxs)(`div`,{className:`flex items-center gap-2 mt-auto pt-2 flex-wrap`,children:[n&&(0,A.jsxs)(f,{variant:`default`,className:`text-xs bg-green-600 hover:bg-green-600`,children:[(0,A.jsx)(h,{className:`h-3 w-3 mr-1`,"aria-hidden":`true`}),O(`marketplace.installedBadge`,{version:n.version})]}),t.latest_version?.version&&(0,A.jsxs)(f,{variant:`outline`,className:`text-xs`,children:[(0,A.jsx)(l,{className:`h-3 w-3 mr-1`,"aria-hidden":`true`}),O(`marketplace.versionBadge`,{version:t.latest_version.version})]}),t.category&&(0,A.jsx)(f,{variant:`outline`,className:`text-xs`,children:Q(t.category)}),t.latest_version?.published_at&&(0,A.jsx)(`span`,{className:`text-xs text-muted-foreground ml-auto`,children:fe(t.latest_version.published_at)})]})]})]},t.id)})})]}):(0,A.jsx)(le,{}):(0,A.jsx)(E,{}):(0,A.jsx)(T,{})}export{O as t};
@@ -1 +1 @@
1
- import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{b as t,r as n}from"./vendor-react-CsWFRkED.js";import{Nn as r}from"./framework-BfSv4Kb0.js";import{y as i}from"./i18n-locales-Bz4c8KXc.js";import{Fs as a,gc as o,hc as s,pc as c}from"./ui-components-D2lrjG-t.js";var l=e(t(),1),u=n();function d({sections:e,open:t}){let{t:n}=i(),[r,d]=(0,l.useState)([`0`]),[f,p]=(0,l.useState)(null);if(!t)return null;let m=async(e,t)=>{try{await navigator.clipboard.writeText(JSON.stringify(e,null,2)),p(t),setTimeout(()=>p(null),2e3)}catch(e){console.error(`Failed to copy:`,e)}},h=e=>{d(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])};return(0,u.jsxs)(`div`,{className:`w-80 border-l bg-background p-0 overflow-hidden flex flex-col shrink-0 z-20 transition-all`,children:[(0,u.jsxs)(`div`,{className:`px-4 py-3 border-b bg-muted/5 flex items-center justify-between`,children:[(0,u.jsx)(`span`,{className:`text-xs font-semibold uppercase tracking-wider text-muted-foreground`,children:n(`layout.metadata.panelTitle`)}),(0,u.jsx)(`span`,{className:`text-[10px] text-muted-foreground/60`,children:n(`layout.metadata.jsonBadge`)})]}),(0,u.jsx)(`div`,{className:`flex-1 overflow-auto`,children:e.map((e,t)=>{let i=String(t),l=r.includes(i),d=f===t;return(0,u.jsxs)(`div`,{className:`border-b last:border-b-0`,children:[(0,u.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-3 hover:bg-muted/5 transition-colors`,children:[(0,u.jsxs)(`button`,{type:`button`,onClick:()=>h(i),className:`flex-1 flex items-center justify-between text-left`,children:[(0,u.jsx)(`h4`,{className:`text-xs font-semibold text-foreground`,children:e.title}),l?(0,u.jsx)(s,{className:`h-3 w-3 text-muted-foreground ml-2`}):(0,u.jsx)(c,{className:`h-3 w-3 text-muted-foreground ml-2`})]}),(0,u.jsx)(`button`,{type:`button`,onClick:()=>m(e.data,t),className:`p-1 hover:bg-muted rounded transition-colors ml-2`,title:n(`layout.metadata.copyJson`),children:d?(0,u.jsx)(o,{className:`h-3 w-3 text-green-600`}):(0,u.jsx)(a,{className:`h-3 w-3 text-muted-foreground`})})]}),l&&(0,u.jsx)(`div`,{className:`px-4 pb-4`,children:(0,u.jsx)(`div`,{className:`relative rounded-md border border-border/50 bg-muted/5 overflow-hidden`,children:(0,u.jsx)(`pre`,{className:`text-[11px] leading-relaxed p-3 overflow-auto max-h-96 font-mono text-foreground/90`,children:JSON.stringify(e.data,null,2)})})})]},t)})})]})}function f(){let e=(0,l.useMemo)(()=>{try{return typeof window<`u`&&r(window.location.search).enabled}catch{return!1}},[]),[t,n]=(0,l.useState)(e);return{showDebug:t,toggleDebug:()=>n(e=>!e)}}export{f as n,d as t};
1
+ import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{b as t,r as n}from"./vendor-react-CsWFRkED.js";import{In as r}from"./framework-DFE_Mws9.js";import{y as i}from"./i18n-locales-BBA090ve.js";import{Fs as a,gc as o,hc as s,pc as c}from"./ui-components-CMHDBJEm.js";var l=e(t(),1),u=n();function d({sections:e,open:t}){let{t:n}=i(),[r,d]=(0,l.useState)([`0`]),[f,p]=(0,l.useState)(null);if(!t)return null;let m=async(e,t)=>{try{await navigator.clipboard.writeText(JSON.stringify(e,null,2)),p(t),setTimeout(()=>p(null),2e3)}catch(e){console.error(`Failed to copy:`,e)}},h=e=>{d(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])};return(0,u.jsxs)(`div`,{className:`w-80 border-l bg-background p-0 overflow-hidden flex flex-col shrink-0 z-20 transition-all`,children:[(0,u.jsxs)(`div`,{className:`px-4 py-3 border-b bg-muted/5 flex items-center justify-between`,children:[(0,u.jsx)(`span`,{className:`text-xs font-semibold uppercase tracking-wider text-muted-foreground`,children:n(`layout.metadata.panelTitle`)}),(0,u.jsx)(`span`,{className:`text-[10px] text-muted-foreground/60`,children:n(`layout.metadata.jsonBadge`)})]}),(0,u.jsx)(`div`,{className:`flex-1 overflow-auto`,children:e.map((e,t)=>{let i=String(t),l=r.includes(i),d=f===t;return(0,u.jsxs)(`div`,{className:`border-b last:border-b-0`,children:[(0,u.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-3 hover:bg-muted/5 transition-colors`,children:[(0,u.jsxs)(`button`,{type:`button`,onClick:()=>h(i),className:`flex-1 flex items-center justify-between text-left`,children:[(0,u.jsx)(`h4`,{className:`text-xs font-semibold text-foreground`,children:e.title}),l?(0,u.jsx)(s,{className:`h-3 w-3 text-muted-foreground ml-2`}):(0,u.jsx)(c,{className:`h-3 w-3 text-muted-foreground ml-2`})]}),(0,u.jsx)(`button`,{type:`button`,onClick:()=>m(e.data,t),className:`p-1 hover:bg-muted rounded transition-colors ml-2`,title:n(`layout.metadata.copyJson`),children:d?(0,u.jsx)(o,{className:`h-3 w-3 text-green-600`}):(0,u.jsx)(a,{className:`h-3 w-3 text-muted-foreground`})})]}),l&&(0,u.jsx)(`div`,{className:`px-4 pb-4`,children:(0,u.jsx)(`div`,{className:`relative rounded-md border border-border/50 bg-muted/5 overflow-hidden`,children:(0,u.jsx)(`pre`,{className:`text-[11px] leading-relaxed p-3 overflow-auto max-h-96 font-mono text-foreground/90`,children:JSON.stringify(e.data,null,2)})})})]},t)})})]})}function f(){let e=(0,l.useMemo)(()=>{try{return typeof window<`u`&&r(window.location.search).enabled}catch{return!1}},[]),[t,n]=(0,l.useState)(e);return{showDebug:t,toggleDebug:()=>n(e=>!e)}}export{f as n,d as t};
@@ -1 +1 @@
1
- import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{b as t,g as n,h as r,p as i,r as a}from"./vendor-react-CsWFRkED.js";import{g as o,h as ee,n as s,t as c}from"./infrastructure-CIpDEFyQ.js";import{jn as l,wn as u}from"./vendor-objectstack-BeKUVjuj.js";import{Dn as te,Et as d,Hr as ne,ut as f}from"./framework-BfSv4Kb0.js";import{u as re,y as ie}from"./i18n-locales-Bz4c8KXc.js";import{Da as ae,Ms as oe,Xr as p,_o as se,dt as ce,ht as m,mt as h,ni as le,sa as ue,vt as g}from"./ui-components-D2lrjG-t.js";import{l as de,o as _,p as fe,u as pe}from"./createDerive-Best2JCj.js";import{t as me}from"./RecordDetailView-A8bbPnkK.js";import{a as he,i as ge,l as _e,n as ve,o as ye,r as be,s as xe}from"./InterfaceListPage-DVETnQm5.js";import{t as Se}from"./getIcon-CgyYxSEC.js";import{n as Ce,t as we}from"./CreateViewDialog-Zbd9Cagm.js";import{f as Te}from"./plugins-views-iYcMmImr.js";import{o as Ee,t as De}from"./runtime-metadata-persistence-DYPxFzHI.js";import{i as Oe,n as ke,r as v,t as y}from"./drillUrlFilters-DHAQHZbx.js";var b=e(t(),1),x=a(),S=new Set([`select`,`multiselect`,`radio`,`enum`,`boolean`]),C=4,w={"=":`eq`,...Object.fromEntries(Object.entries(y).map(([e,t])=>[t,e]))};function T(e){let t=[];for(let[n,r,i]of e){let e={field:n,operator:l(w[r]??r)};i!==void 0&&(e.value=i);let a=u.safeParse(e);if(!a.success){console.warn(`[ObjectDataPage] Dropped URL filter on "${n}" from the saved view: operator "${r}" has no canonical ViewFilterRule form.`);continue}t.push(a.data)}return t}function Ae(e,t,n){let r=T(n);return{...e,columns:Array.isArray(e.columns)&&e.columns.length>0?e.columns:t,...r.length?{filter:r}:{}}}function E({dataSource:e,objects:t}){let{appName:a,objectName:l}=r(),{t:u}=ie(),{objectLabel:y,fieldLabel:w}=re(),T=i(),[E,D]=n(),{can:O,getObjectApiOperations:k}=s(),{canRead:A}=c(l??``),{user:j,activeOrganization:M}=o(),{isAdmin:N}=ee(),P=_(),F=_e()===`group`,I=fe(),[je,L]=b.useState(!1),R=b.useMemo(()=>(t||[]).find(e=>e.name===l),[t,l]),[Me]=b.useState(()=>xe(new URLSearchParams(window.location.search))),Ne=b.useCallback(e=>{D(t=>ye(t,e),{replace:!0})},[D]),z=Array.from(E.entries()).filter(([e])=>e.startsWith(`filter[`)).map(([e,t])=>`${e}=${t}`).join(`&`),B=b.useMemo(()=>{let e=Oe(new URLSearchParams(z)),t=e.filter(([e])=>A(e));if(t.length<e.length){let t=e.filter(([e])=>!A(e)).map(([e])=>e);console.warn(`[ObjectDataPage] Dropped URL filter(s) on unreadable field(s): ${t.join(`, `)}`)}return te(t,{currentUserId:j?.id??null,currentOrgId:M?.id??null})},[z,A,j?.id,M?.id]),Pe=b.useMemo(()=>v(B),[B]),Fe=b.useCallback(e=>{D(t=>ke(new URLSearchParams(t),e))},[D]),V=b.useMemo(()=>be(R,{orgAttribution:F}).filter(e=>A(e)),[R,A,F]),H=b.useMemo(()=>{let e=R?.fields;if(!e||typeof e!=`object`)return;let t=Object.entries(e).filter(([e,t])=>t&&!t.hidden&&S.has(t.type)&&A(e)).slice(0,C).map(([e])=>({field:e}));return t.length>0?{element:`dropdown`,fields:t}:void 0},[R,A]),U=b.useCallback(e=>`/apps/${a}/${l}/record/${encodeURIComponent(String(e))}`,[a,l]),W=f({navigation:{mode:`drawer`},objectName:l??``,onNavigate:e=>T(U(e))}),G=E.get(`recordId`),Ie=b.useCallback((e,t)=>{let n=e?.id??e?._id;if(t&&(t.metaKey||t.ctrlKey||t.button===1)&&n!=null){window.open(U(n),`_blank`);return}n!=null&&D(e=>{let t=new URLSearchParams(e);return t.set(`recordId`,String(n)),t})},[U,D]),Le=b.useCallback(()=>{D(e=>{let t=new URLSearchParams(e);return t.delete(`recordId`),t})},[D]);b.useEffect(()=>{G&&!W.isOpen?W.open({id:G}):!G&&W.isOpen&&W.close()},[G]);let K=b.useMemo(()=>he(R),[R]),q=b.useMemo(()=>ve(R),[R]),J=b.useMemo(()=>ge(R),[R]),Y=b.useMemo(()=>{let e=[`grid`];return K&&e.push(`kanban`),q&&e.push(`calendar`),J&&e.push(`gallery`),e},[K,q,J]),X=b.useMemo(()=>{if(R)return{type:`list-view`,objectName:R.name,viewType:`grid`,columns:V,...B.length?{filter:B}:{},kanban:K,calendar:q,gallery:J,userFilters:H,appearance:{allowedVisualizations:Y},showViewSwitcher:Y.length>1,userActions:{search:!0,sort:!0,filter:!0,rowHeight:!0,group:!0,hideFields:!0},showRecordCount:!0}},[R,V,B,K,q,J,H,Y]),Re=b.useCallback(async t=>{try{let n=Ae(t,V,B),r=Ee(l??``,n,{name:t.name,label:t.label}),i=await De(`view`,r.name,r,{metadataClient:P,dataSource:e,objectName:l});if(i){let e=I?``:`?${de}=${pe}`;T(`../view/${i}${e}`,{relative:`path`})}}catch(e){console.error(`[ObjectDataPage] Failed to save view:`,e)}},[V,B,P,e,T,l,I]),Z=b.useMemo(()=>ne(R,R?k(R.name):void 0),[R,k]),Q=!!R&&Z.create&&O(R.name,`create`),$=Q?Z.createPredicates:void 0,ze=d($?.visibleWhen??!0,null,{fallback:!1,warnOnError:!0,label:`builtin:create:visibleWhen`}),Be=d($?.disabledWhen,null,{fallback:!1,warnOnError:!0,label:`builtin:create:disabledWhen`}),Ve=$?.disabledWhen!=null&&Be;return R?O(R.name,`read`)?(0,x.jsxs)(`div`,{className:`h-full flex flex-col bg-background min-w-0 overflow-hidden`,"data-testid":`object-data-page`,children:[(0,x.jsx)(`div`,{className:`hidden sm:block`,children:(0,x.jsx)(Ce,{title:(0,x.jsxs)(`span`,{className:`inline-flex items-center gap-2`,children:[(0,x.jsx)(`span`,{className:`truncate`,children:y(R)}),(0,x.jsx)(`span`,{className:`rounded border px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide text-muted-foreground`,children:u(`console.objectData.badge`,{defaultValue:`Data`})})]}),subtitle:u(`console.objectData.description`,{defaultValue:`URL-defined data slice — not bound to any saved view.`}),icon:b.createElement(Se(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)(ae,{className:`h-4 w-4`}),(0,x.jsx)(`span`,{className:`hidden sm:inline`,children:u(`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:u(`console.objectData.saveAsView`,{defaultValue:`Save as view`})})]})]})})}),B.length>0&&(0,x.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 border-b px-3 sm:px-4 py-2 shrink-0`,"data-testid":`object-data-filter-chips`,children:[(0,x.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:u(`console.objectData.filteredBy`,{defaultValue:`Filtered by`})}),Pe.map(({field:e,text:t})=>(0,x.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full border bg-muted/40 px-2 py-0.5 text-xs`,children:[(0,x.jsx)(`span`,{className:`font-medium`,children:w(R.name,e,e)}),(0,x.jsx)(`span`,{className:`text-muted-foreground`,children:t}),(0,x.jsx)(`button`,{type:`button`,onClick:()=>Fe(e),className:`ml-0.5 rounded-full hover:bg-muted p-0.5`,"aria-label":u(`console.objectData.removeFilter`,{defaultValue:`Remove filter {{field}}`,field:e}),"data-testid":`object-data-remove-filter-${e}`,children:(0,x.jsx)(le,{className:`h-3 w-3`})})]},e))]}),(0,x.jsx)(`div`,{className:`flex-1 min-h-0 overflow-auto`,children:X&&(0,x.jsx)(Te,{schema:X,dataSource:e,userFilterSelections:Me,onUserFilterSelectionsChange:Ne,onRowClick:Ie})}),W.isOverlay&&(0,x.jsx)(ce,{...W,setIsOpen:e=>{e||Le()},title:y(R),children:n=>(0,x.jsx)(me,{objectNameOverride:R.name,recordIdOverride:String(n?.id??n?._id??G??``),embedded:!0,dataSource:e,objects:t,onEdit:()=>{}})}),N&&(0,x.jsx)(we,{open:je,onOpenChange:L,onCreate:Re,objectDef:R})]}):(0,x.jsx)(`div`,{className:`h-full flex items-center justify-center p-8`,"data-testid":`object-data-403`,children:(0,x.jsxs)(h,{children:[(0,x.jsx)(`div`,{className:`mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-muted`,children:(0,x.jsx)(se,{className:`h-6 w-6 text-muted-foreground`})}),(0,x.jsx)(g,{children:u(`console.objectData.noAccessTitle`,{defaultValue:`Access denied`})}),(0,x.jsx)(m,{children:u(`console.objectData.noAccess`,{defaultValue:`You do not have permission to view this data.`})})]})}):(0,x.jsx)(`div`,{className:`h-full flex items-center justify-center p-8`,children:(0,x.jsxs)(h,{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)(oe,{className:`h-6 w-6 text-muted-foreground`})}),(0,x.jsx)(g,{children:u(`console.objectView.objectNotFound`)}),(0,x.jsx)(m,{children:u(`console.objectView.objectNotFoundDescription`,{objectName:l})})]})})}export{E as ObjectDataPage};
1
+ import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{b as t,g as n,h as r,p as i,r as a}from"./vendor-react-CsWFRkED.js";import{g as o,h as ee,n as s,t as c}from"./infrastructure-B4zG1jNa.js";import{Mn as l,Tn as u}from"./vendor-objectstack-BU0HrnMy.js";import{An as te,Et as d,Gr as ne,ut as f}from"./framework-DFE_Mws9.js";import{u as re,y as ie}from"./i18n-locales-BBA090ve.js";import{Da as ae,Ms as oe,Xr as p,_o as se,dt as ce,ht as m,mt as h,ni as le,sa as ue,vt as g}from"./ui-components-CMHDBJEm.js";import{l as de,o as _,p as fe,u as pe}from"./createDerive-DtfnFzGm.js";import{t as me}from"./RecordDetailView-XWxuegfV.js";import{a as he,i as ge,l as _e,n as ve,o as ye,r as be,s as xe}from"./InterfaceListPage-P3y6hqTX.js";import{t as Se}from"./getIcon-B4Pp7Q-0.js";import{n as Ce,t as we}from"./CreateViewDialog-BMdQ4ZYy.js";import{f as Te}from"./plugins-views-DZmsFOak.js";import{o as Ee,t as De}from"./runtime-metadata-persistence-DzS2YaNb.js";import{i as Oe,n as ke,r as v,t as y}from"./drillUrlFilters-DHAQHZbx.js";var b=e(t(),1),x=a(),S=new Set([`select`,`multiselect`,`radio`,`enum`,`boolean`]),C=4,w={"=":`eq`,...Object.fromEntries(Object.entries(y).map(([e,t])=>[t,e]))};function T(e){let t=[];for(let[n,r,i]of e){let e={field:n,operator:l(w[r]??r)};i!==void 0&&(e.value=i);let a=u.safeParse(e);if(!a.success){console.warn(`[ObjectDataPage] Dropped URL filter on "${n}" from the saved view: operator "${r}" has no canonical ViewFilterRule form.`);continue}t.push(a.data)}return t}function Ae(e,t,n){let r=T(n);return{...e,columns:Array.isArray(e.columns)&&e.columns.length>0?e.columns:t,...r.length?{filter:r}:{}}}function E({dataSource:e,objects:t}){let{appName:a,objectName:l}=r(),{t:u}=ie(),{objectLabel:y,fieldLabel:w}=re(),T=i(),[E,D]=n(),{can:O,getObjectApiOperations:k}=s(),{canRead:A}=c(l??``),{user:j,activeOrganization:M}=o(),{isAdmin:N}=ee(),P=_(),F=_e()===`group`,I=fe(),[je,L]=b.useState(!1),R=b.useMemo(()=>(t||[]).find(e=>e.name===l),[t,l]),[Me]=b.useState(()=>xe(new URLSearchParams(window.location.search))),Ne=b.useCallback(e=>{D(t=>ye(t,e),{replace:!0})},[D]),z=Array.from(E.entries()).filter(([e])=>e.startsWith(`filter[`)).map(([e,t])=>`${e}=${t}`).join(`&`),B=b.useMemo(()=>{let e=Oe(new URLSearchParams(z)),t=e.filter(([e])=>A(e));if(t.length<e.length){let t=e.filter(([e])=>!A(e)).map(([e])=>e);console.warn(`[ObjectDataPage] Dropped URL filter(s) on unreadable field(s): ${t.join(`, `)}`)}return te(t,{currentUserId:j?.id??null,currentOrgId:M?.id??null})},[z,A,j?.id,M?.id]),Pe=b.useMemo(()=>v(B),[B]),Fe=b.useCallback(e=>{D(t=>ke(new URLSearchParams(t),e))},[D]),V=b.useMemo(()=>be(R,{orgAttribution:F}).filter(e=>A(e)),[R,A,F]),H=b.useMemo(()=>{let e=R?.fields;if(!e||typeof e!=`object`)return;let t=Object.entries(e).filter(([e,t])=>t&&!t.hidden&&S.has(t.type)&&A(e)).slice(0,C).map(([e])=>({field:e}));return t.length>0?{element:`dropdown`,fields:t}:void 0},[R,A]),U=b.useCallback(e=>`/apps/${a}/${l}/record/${encodeURIComponent(String(e))}`,[a,l]),W=f({navigation:{mode:`drawer`},objectName:l??``,onNavigate:e=>T(U(e))}),G=E.get(`recordId`),Ie=b.useCallback((e,t)=>{let n=e?.id??e?._id;if(t&&(t.metaKey||t.ctrlKey||t.button===1)&&n!=null){window.open(U(n),`_blank`);return}n!=null&&D(e=>{let t=new URLSearchParams(e);return t.set(`recordId`,String(n)),t})},[U,D]),Le=b.useCallback(()=>{D(e=>{let t=new URLSearchParams(e);return t.delete(`recordId`),t})},[D]);b.useEffect(()=>{G&&!W.isOpen?W.open({id:G}):!G&&W.isOpen&&W.close()},[G]);let K=b.useMemo(()=>he(R),[R]),q=b.useMemo(()=>ve(R),[R]),J=b.useMemo(()=>ge(R),[R]),Y=b.useMemo(()=>{let e=[`grid`];return K&&e.push(`kanban`),q&&e.push(`calendar`),J&&e.push(`gallery`),e},[K,q,J]),X=b.useMemo(()=>{if(R)return{type:`list-view`,objectName:R.name,viewType:`grid`,columns:V,...B.length?{filter:B}:{},kanban:K,calendar:q,gallery:J,userFilters:H,appearance:{allowedVisualizations:Y},showViewSwitcher:Y.length>1,userActions:{search:!0,sort:!0,filter:!0,rowHeight:!0,group:!0,hideFields:!0},showRecordCount:!0}},[R,V,B,K,q,J,H,Y]),Re=b.useCallback(async t=>{try{let n=Ae(t,V,B),r=Ee(l??``,n,{name:t.name,label:t.label}),i=await De(`view`,r.name,r,{metadataClient:P,dataSource:e,objectName:l});if(i){let e=I?``:`?${de}=${pe}`;T(`../view/${i}${e}`,{relative:`path`})}}catch(e){console.error(`[ObjectDataPage] Failed to save view:`,e)}},[V,B,P,e,T,l,I]),Z=b.useMemo(()=>ne(R,R?k(R.name):void 0),[R,k]),Q=!!R&&Z.create&&O(R.name,`create`),$=Q?Z.createPredicates:void 0,ze=d($?.visibleWhen??!0,null,{fallback:!1,warnOnError:!0,label:`builtin:create:visibleWhen`}),Be=d($?.disabledWhen,null,{fallback:!1,warnOnError:!0,label:`builtin:create:disabledWhen`}),Ve=$?.disabledWhen!=null&&Be;return R?O(R.name,`read`)?(0,x.jsxs)(`div`,{className:`h-full flex flex-col bg-background min-w-0 overflow-hidden`,"data-testid":`object-data-page`,children:[(0,x.jsx)(`div`,{className:`hidden sm:block`,children:(0,x.jsx)(Ce,{title:(0,x.jsxs)(`span`,{className:`inline-flex items-center gap-2`,children:[(0,x.jsx)(`span`,{className:`truncate`,children:y(R)}),(0,x.jsx)(`span`,{className:`rounded border px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide text-muted-foreground`,children:u(`console.objectData.badge`,{defaultValue:`Data`})})]}),subtitle:u(`console.objectData.description`,{defaultValue:`URL-defined data slice — not bound to any saved view.`}),icon:b.createElement(Se(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)(ae,{className:`h-4 w-4`}),(0,x.jsx)(`span`,{className:`hidden sm:inline`,children:u(`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:u(`console.objectData.saveAsView`,{defaultValue:`Save as view`})})]})]})})}),B.length>0&&(0,x.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 border-b px-3 sm:px-4 py-2 shrink-0`,"data-testid":`object-data-filter-chips`,children:[(0,x.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:u(`console.objectData.filteredBy`,{defaultValue:`Filtered by`})}),Pe.map(({field:e,text:t})=>(0,x.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full border bg-muted/40 px-2 py-0.5 text-xs`,children:[(0,x.jsx)(`span`,{className:`font-medium`,children:w(R.name,e,e)}),(0,x.jsx)(`span`,{className:`text-muted-foreground`,children:t}),(0,x.jsx)(`button`,{type:`button`,onClick:()=>Fe(e),className:`ml-0.5 rounded-full hover:bg-muted p-0.5`,"aria-label":u(`console.objectData.removeFilter`,{defaultValue:`Remove filter {{field}}`,field:e}),"data-testid":`object-data-remove-filter-${e}`,children:(0,x.jsx)(le,{className:`h-3 w-3`})})]},e))]}),(0,x.jsx)(`div`,{className:`flex-1 min-h-0 overflow-auto`,children:X&&(0,x.jsx)(Te,{schema:X,dataSource:e,userFilterSelections:Me,onUserFilterSelectionsChange:Ne,onRowClick:Ie})}),W.isOverlay&&(0,x.jsx)(ce,{...W,setIsOpen:e=>{e||Le()},title:y(R),children:n=>(0,x.jsx)(me,{objectNameOverride:R.name,recordIdOverride:String(n?.id??n?._id??G??``),embedded:!0,dataSource:e,objects:t,onEdit:()=>{}})}),N&&(0,x.jsx)(we,{open:je,onOpenChange:L,onCreate:Re,objectDef:R})]}):(0,x.jsx)(`div`,{className:`h-full flex items-center justify-center p-8`,"data-testid":`object-data-403`,children:(0,x.jsxs)(h,{children:[(0,x.jsx)(`div`,{className:`mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-muted`,children:(0,x.jsx)(se,{className:`h-6 w-6 text-muted-foreground`})}),(0,x.jsx)(g,{children:u(`console.objectData.noAccessTitle`,{defaultValue:`Access denied`})}),(0,x.jsx)(m,{children:u(`console.objectData.noAccess`,{defaultValue:`You do not have permission to view this data.`})})]})}):(0,x.jsx)(`div`,{className:`h-full flex items-center justify-center p-8`,children:(0,x.jsxs)(h,{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)(oe,{className:`h-6 w-6 text-muted-foreground`})}),(0,x.jsx)(g,{children:u(`console.objectView.objectNotFound`)}),(0,x.jsx)(m,{children:u(`console.objectView.objectNotFoundDescription`,{objectName:l})})]})})}export{E as ObjectDataPage};
@@ -1 +1 @@
1
- import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{b as t,f as n,g as r,h as i,p as a,r as o}from"./vendor-react-CsWFRkED.js";import{h as s}from"./infrastructure-CIpDEFyQ.js";import{J as c,ht as l,q as u}from"./framework-BfSv4Kb0.js";import{y as d}from"./i18n-locales-Bz4c8KXc.js";import{Pa as f,ht as p,mt as m,us as h,ut as g,vt as _}from"./ui-components-D2lrjG-t.js";import{a as v}from"./ExpressionProvider-DqGWVuxV.js";import{w as y}from"./RecordDetailView-A8bbPnkK.js";import{t as b}from"./preferLocal-CKqyhTP9.js";import{t as x}from"./InterfaceListPage-DVETnQm5.js";import{n as S,t as C}from"./MetadataInspector-Cu-n1FYz.js";var w=e(t(),1),T=o();function E(){let{t:e}=d(),{pageName:t}=i(),[o]=r(),{showDebug:E}=S(),D=a(),O=n(),{isAdmin:k}=s(),{pages:A,objects:j,getTypeStatus:M}=c(),{app:N}=v(),P=u(),[F,I]=(0,w.useState)(0),L=b(A,t,N?._packageId);if(!L){let n=M?.(`page`);return n===`idle`||n===`loading`?(0,T.jsx)(`div`,{className:`h-full flex items-center justify-center p-8`,"data-testid":`page-loading`,children:(0,T.jsx)(g,{className:`h-5 w-5 text-muted-foreground`})}):(0,T.jsx)(`div`,{className:`h-full flex items-center justify-center p-8`,children:(0,T.jsxs)(m,{children:[(0,T.jsx)(`div`,{className:`mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-muted`,children:(0,T.jsx)(h,{className:`h-6 w-6 text-muted-foreground`})}),(0,T.jsx)(_,{children:e(`empty.pageNotFound`)}),(0,T.jsx)(p,{children:e(`empty.pageNotFoundDescription`,{name:t})})]})})}let R=Object.fromEntries(o.entries()),z=O.pathname.match(/\/apps\/([^/]+)/)?.[1],B=k&&!!z&&!!t;return(0,T.jsx)(y,{dataSource:P,objects:j,onRefresh:()=>I(e=>e+1),children:(0,T.jsxs)(`div`,{className:`flex flex-row h-full w-full overflow-hidden relative`,children:[(0,T.jsxs)(`div`,{className:`flex-1 overflow-auto h-full relative`,children:[B&&(0,T.jsx)(`button`,{type:`button`,onClick:()=>{B&&D(`/apps/${z}/metadata/page/${encodeURIComponent(t)}`)},className:`absolute right-3 top-3 z-30 inline-flex h-7 w-7 items-center justify-center rounded-md border border-input bg-background/90 text-muted-foreground shadow-sm backdrop-blur hover:bg-accent hover:text-accent-foreground`,"data-testid":`page-edit-in-studio-button`,title:e(`common.editInStudio`,{defaultValue:`Edit in studio`}),"aria-label":e(`common.editInStudio`,{defaultValue:`Edit in studio`}),children:(0,T.jsx)(f,{className:`h-3.5 w-3.5`})}),L.interfaceConfig?.source?(0,T.jsx)(x,{page:L,reserveEditAffordance:B},F):(0,T.jsx)(l,{schema:{...L,type:L.type||`page`,pageType:L.type,context:{...L.context,params:R,refreshKey:F}}},F)]}),(0,T.jsx)(C,{open:E,sections:[{title:`Page Configuration`,data:L}]})]})})}export{E as PageView};
1
+ import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{b as t,f as n,g as r,h as i,p as a,r as o}from"./vendor-react-CsWFRkED.js";import{h as s}from"./infrastructure-B4zG1jNa.js";import{J as c,ht as l,q as u}from"./framework-DFE_Mws9.js";import{y as d}from"./i18n-locales-BBA090ve.js";import{Pa as f,ht as p,mt as m,us as h,ut as g,vt as _}from"./ui-components-CMHDBJEm.js";import{a as v}from"./ExpressionProvider-B6z09kM6.js";import{w as y}from"./RecordDetailView-XWxuegfV.js";import{t as b}from"./preferLocal-CKqyhTP9.js";import{t as x}from"./InterfaceListPage-P3y6hqTX.js";import{n as S,t as C}from"./MetadataInspector-IQGUoLyp.js";var w=e(t(),1),T=o();function E(){let{t:e}=d(),{pageName:t}=i(),[o]=r(),{showDebug:E}=S(),D=a(),O=n(),{isAdmin:k}=s(),{pages:A,objects:j,getTypeStatus:M}=c(),{app:N}=v(),P=u(),[F,I]=(0,w.useState)(0),L=b(A,t,N?._packageId);if(!L){let n=M?.(`page`);return n===`idle`||n===`loading`?(0,T.jsx)(`div`,{className:`h-full flex items-center justify-center p-8`,"data-testid":`page-loading`,children:(0,T.jsx)(g,{className:`h-5 w-5 text-muted-foreground`})}):(0,T.jsx)(`div`,{className:`h-full flex items-center justify-center p-8`,children:(0,T.jsxs)(m,{children:[(0,T.jsx)(`div`,{className:`mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-muted`,children:(0,T.jsx)(h,{className:`h-6 w-6 text-muted-foreground`})}),(0,T.jsx)(_,{children:e(`empty.pageNotFound`)}),(0,T.jsx)(p,{children:e(`empty.pageNotFoundDescription`,{name:t})})]})})}let R=Object.fromEntries(o.entries()),z=O.pathname.match(/\/apps\/([^/]+)/)?.[1],B=k&&!!z&&!!t;return(0,T.jsx)(y,{dataSource:P,objects:j,onRefresh:()=>I(e=>e+1),children:(0,T.jsxs)(`div`,{className:`flex flex-row h-full w-full overflow-hidden relative`,children:[(0,T.jsxs)(`div`,{className:`flex-1 overflow-auto h-full relative`,children:[B&&(0,T.jsx)(`button`,{type:`button`,onClick:()=>{B&&D(`/apps/${z}/metadata/page/${encodeURIComponent(t)}`)},className:`absolute right-3 top-3 z-30 inline-flex h-7 w-7 items-center justify-center rounded-md border border-input bg-background/90 text-muted-foreground shadow-sm backdrop-blur hover:bg-accent hover:text-accent-foreground`,"data-testid":`page-edit-in-studio-button`,title:e(`common.editInStudio`,{defaultValue:`Edit in studio`}),"aria-label":e(`common.editInStudio`,{defaultValue:`Edit in studio`}),children:(0,T.jsx)(f,{className:`h-3.5 w-3.5`})}),L.interfaceConfig?.source?(0,T.jsx)(x,{page:L,reserveEditAffordance:B},F):(0,T.jsx)(l,{schema:{...L,type:L.type||`page`,pageType:L.type,context:{...L.context,params:R,refreshKey:F}}},F)]}),(0,T.jsx)(C,{open:E,sections:[{title:`Page Configuration`,data:L}]})]})})}export{E as PageView};
@@ -1 +1 @@
1
- import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{b as t,r as n}from"./vendor-react-CsWFRkED.js";import{g as r,l as i}from"./infrastructure-CIpDEFyQ.js";import{y as a}from"./i18n-locales-Bz4c8KXc.js";import{Ar as o,Bn as s,Fr as c,In as l,Ir as u,Lr as d,Mr as f,Or as p,Pr as m,Rr as h,T as g,Xr as _,_o as v,di as y,hi as b,ic as x,jr as S,kr as C,ni as w,sc as T,vo as E,zr as D}from"./ui-components-D2lrjG-t.js";var O=e(t(),1),k=n();function A(){let{t:e}=a(),{user:t,updateUser:n,isLoading:v,changePassword:A,setInitialPassword:M,hasLocalPassword:N}=r(),{upload:P}=g(),[F,I]=(0,O.useState)(t?.name??``),[L,R]=(0,O.useState)(!1),[z,B]=(0,O.useState)(null),V=(0,O.useRef)(null),[H,U]=(0,O.useState)(!1),[W,G]=(0,O.useState)(null);return(0,O.useEffect)(()=>{I(t?.name??``)},[t?.name]),t?(0,k.jsxs)(`div`,{className:`flex flex-col gap-4 sm:gap-6 p-4 sm:p-6 max-w-2xl`,children:[(0,k.jsxs)(`div`,{className:`min-w-0`,children:[(0,k.jsx)(`h1`,{className:`text-xl sm:text-2xl font-bold tracking-tight`,children:e(`profile.title`,{defaultValue:`Profile`})}),(0,k.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1`,children:e(`profile.subtitle`,{defaultValue:`Manage your account settings`})})]}),(0,k.jsx)(p,{children:(0,k.jsxs)(C,{className:`pt-6`,children:[(0,k.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,k.jsxs)(c,{className:`h-16 w-16`,children:[(0,k.jsx)(d,{src:t.image??void 0,alt:t.name??`User`}),(0,k.jsx)(u,{className:`text-lg bg-primary text-primary-foreground`,children:i(t)})]}),(0,k.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,k.jsx)(`p`,{className:`text-lg font-semibold truncate`,children:t.name??`User`}),(0,k.jsx)(`p`,{className:`text-sm text-muted-foreground truncate`,children:t.email}),(0,k.jsx)(m,{variant:`secondary`,className:`mt-1`,children:t.role??`member`})]}),(0,k.jsxs)(`div`,{className:`flex flex-col gap-2 shrink-0`,children:[(0,k.jsx)(`input`,{ref:V,type:`file`,accept:`image/*`,className:`hidden`,onChange:async e=>{let t=e.target.files?.[0];if(V.current&&(V.current.value=``),t){U(!0),G(null);try{let e=await P(t);await n({image:e.url})}catch(e){G(e instanceof Error?e.message:String(e))}finally{U(!1)}}},"data-testid":`profile-avatar-file`}),(0,k.jsxs)(_,{type:`button`,variant:`outline`,size:`sm`,disabled:H,onClick:()=>V.current?.click(),"data-testid":`profile-avatar-upload-btn`,children:[H?(0,k.jsx)(E,{className:`mr-2 h-4 w-4 animate-spin`}):(0,k.jsx)(b,{className:`mr-2 h-4 w-4`}),t.image?e(`profile.avatar.replace`,{defaultValue:`Replace`}):e(`profile.avatar.upload`,{defaultValue:`Upload`})]}),t.image&&(0,k.jsxs)(_,{type:`button`,variant:`ghost`,size:`sm`,disabled:H,onClick:async()=>{U(!0),G(null);try{await n({image:null})}catch(e){G(e instanceof Error?e.message:String(e))}finally{U(!1)}},"data-testid":`profile-avatar-remove-btn`,children:[(0,k.jsx)(w,{className:`mr-2 h-4 w-4`}),e(`profile.avatar.remove`,{defaultValue:`Remove`})]})]})]}),W&&(0,k.jsxs)(h,{variant:`destructive`,className:`mt-4`,children:[(0,k.jsx)(T,{className:`h-4 w-4`}),(0,k.jsx)(D,{children:W})]})]})}),(0,k.jsxs)(p,{children:[(0,k.jsxs)(S,{children:[(0,k.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,k.jsx)(y,{className:`h-4 w-4 text-muted-foreground`}),(0,k.jsx)(f,{className:`text-base sm:text-lg`,children:e(`profile.info.title`,{defaultValue:`Personal Information`})})]}),(0,k.jsx)(o,{children:e(`profile.info.description`,{defaultValue:`Update your name and view account details`})})]}),(0,k.jsx)(C,{children:(0,k.jsxs)(`form`,{onSubmit:async e=>{e.preventDefault(),B(null),R(!1);try{await n({name:F}),R(!0)}catch(e){B(e instanceof Error?e.message:String(e))}},className:`space-y-4`,children:[z&&(0,k.jsxs)(h,{variant:`destructive`,children:[(0,k.jsx)(T,{className:`h-4 w-4`}),(0,k.jsx)(D,{children:z})]}),L&&(0,k.jsxs)(h,{children:[(0,k.jsx)(x,{className:`h-4 w-4 text-green-600`}),(0,k.jsx)(D,{className:`text-green-800 dark:text-green-400`,children:e(`profile.info.saved`,{defaultValue:`Profile updated successfully.`})})]}),(0,k.jsxs)(`div`,{className:`space-y-2`,children:[(0,k.jsx)(s,{htmlFor:`profile-name`,children:e(`profile.info.name`,{defaultValue:`Name`})}),(0,k.jsx)(l,{id:`profile-name`,type:`text`,value:F,onChange:e=>I(e.target.value),required:!0,"aria-required":`true`,disabled:v})]}),(0,k.jsxs)(`div`,{className:`space-y-2`,children:[(0,k.jsx)(s,{htmlFor:`profile-email`,children:e(`profile.info.email`,{defaultValue:`Email`})}),(0,k.jsx)(l,{id:`profile-email`,type:`email`,value:t.email,disabled:!0,className:`bg-muted text-muted-foreground`}),(0,k.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`profile.info.emailImmutable`,{defaultValue:`Email cannot be changed.`})})]}),(0,k.jsxs)(`div`,{className:`space-y-2`,children:[(0,k.jsx)(s,{children:e(`profile.info.role`,{defaultValue:`Role`})}),(0,k.jsx)(l,{type:`text`,value:t.role??`member`,disabled:!0,className:`bg-muted text-muted-foreground`})]}),(0,k.jsx)(_,{type:`submit`,disabled:v,className:`w-full sm:w-auto`,children:v?e(`profile.saving`,{defaultValue:`Saving…`}):e(`profile.info.save`,{defaultValue:`Save Changes`})})]})})]}),(0,k.jsx)(j,{changePassword:A,setInitialPassword:M,hasLocalPassword:N})]}):null}function j({changePassword:e,setInitialPassword:t,hasLocalPassword:n,highlight:r,onPasswordSet:i}){let{t:c}=a(),[u,d]=(0,O.useState)(null),[m,g]=(0,O.useState)(``),[y,b]=(0,O.useState)(``),[w,E]=(0,O.useState)(``),[A,j]=(0,O.useState)(!1),[M,N]=(0,O.useState)(null),[P,F]=(0,O.useState)(null);(0,O.useEffect)(()=>{let e=!1;return n().then(t=>{e||d(t)}).catch(()=>{e||d(!1)}),()=>{e=!0}},[n]);let I=()=>{g(``),b(``),E(``)},L=async n=>{if(n.preventDefault(),N(null),F(null),y.length<8){N(c(`profile.password.tooShort`,{defaultValue:`Password must be at least 8 characters`}));return}if(y!==w){N(c(`profile.password.mismatch`,{defaultValue:`Passwords do not match`}));return}j(!0);try{if(u){if(!m){N(c(`profile.password.enterCurrent`,{defaultValue:`Enter your current password`})),j(!1);return}await e(m,y),F(c(`profile.password.changed`,{defaultValue:`Password changed.`}))}else await t(y),F(c(`profile.password.localSet`,{defaultValue:`Local password set. You can now sign in with email and password on this environment.`})),d(!0),i?.();I()}catch(e){N(e instanceof Error?e.message:String(e))}finally{j(!1)}},R=u===null;return(0,k.jsxs)(p,{className:r?`ring-2 ring-amber-300 dark:ring-amber-700`:void 0,children:[(0,k.jsxs)(S,{children:[(0,k.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,k.jsx)(v,{className:`h-4 w-4 text-muted-foreground`}),(0,k.jsx)(f,{className:`text-base sm:text-lg`,children:u?c(`profile.password.changeTitle`,{defaultValue:`Change Password`}):c(`profile.password.setTitle`,{defaultValue:`Set Local Password`})})]}),(0,k.jsx)(o,{children:u?c(`profile.password.changeDescription`,{defaultValue:`Update the password you use to sign in to this environment.`}):c(`profile.password.setDescription`,{defaultValue:`You signed in via single sign-on. Set a local password to also sign in with email and password on this environment.`})})]}),(0,k.jsx)(C,{children:(0,k.jsxs)(`form`,{onSubmit:L,className:`space-y-4 max-w-md`,children:[u&&(0,k.jsxs)(`div`,{className:`space-y-2`,children:[(0,k.jsx)(s,{htmlFor:`current-password`,children:c(`profile.password.current`,{defaultValue:`Current password`})}),(0,k.jsx)(l,{id:`current-password`,type:`password`,autoComplete:`current-password`,value:m,onChange:e=>g(e.target.value),disabled:A||R,required:!0})]}),(0,k.jsxs)(`div`,{className:`space-y-2`,children:[(0,k.jsx)(s,{htmlFor:`new-password`,children:u?c(`profile.password.new`,{defaultValue:`New password`}):c(`profile.password.password`,{defaultValue:`Password`})}),(0,k.jsx)(l,{id:`new-password`,type:`password`,autoComplete:`new-password`,value:y,onChange:e=>b(e.target.value),disabled:A||R,minLength:8,required:!0})]}),(0,k.jsxs)(`div`,{className:`space-y-2`,children:[(0,k.jsx)(s,{htmlFor:`confirm-password`,children:c(`profile.password.confirm`,{defaultValue:`Confirm password`})}),(0,k.jsx)(l,{id:`confirm-password`,type:`password`,autoComplete:`new-password`,value:w,onChange:e=>E(e.target.value),disabled:A||R,minLength:8,required:!0})]}),M&&(0,k.jsxs)(h,{variant:`destructive`,children:[(0,k.jsx)(T,{className:`h-4 w-4`}),(0,k.jsx)(D,{children:M})]}),P&&(0,k.jsxs)(h,{children:[(0,k.jsx)(x,{className:`h-4 w-4`}),(0,k.jsx)(D,{children:P})]}),(0,k.jsx)(_,{type:`submit`,disabled:A||R,className:`w-full sm:w-auto`,children:A?c(`profile.saving`,{defaultValue:`Saving…`}):u?c(`profile.password.changeAction`,{defaultValue:`Change password`}):c(`profile.password.setAction`,{defaultValue:`Set password`})})]})})]})}export{A as ProfilePage};
1
+ import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{b as t,r as n}from"./vendor-react-CsWFRkED.js";import{g as r,l as i}from"./infrastructure-B4zG1jNa.js";import{y as a}from"./i18n-locales-BBA090ve.js";import{Ar as o,Bn as s,Fr as c,In as l,Ir as u,Lr as d,Mr as f,Or as p,Pr as m,Rr as h,T as g,Xr as _,_o as v,di as y,hi as b,ic as x,jr as S,kr as C,ni as w,sc as T,vo as E,zr as D}from"./ui-components-CMHDBJEm.js";var O=e(t(),1),k=n();function A(){let{t:e}=a(),{user:t,updateUser:n,isLoading:v,changePassword:A,setInitialPassword:M,hasLocalPassword:N}=r(),{upload:P}=g(),[F,I]=(0,O.useState)(t?.name??``),[L,R]=(0,O.useState)(!1),[z,B]=(0,O.useState)(null),V=(0,O.useRef)(null),[H,U]=(0,O.useState)(!1),[W,G]=(0,O.useState)(null);return(0,O.useEffect)(()=>{I(t?.name??``)},[t?.name]),t?(0,k.jsxs)(`div`,{className:`flex flex-col gap-4 sm:gap-6 p-4 sm:p-6 max-w-2xl`,children:[(0,k.jsxs)(`div`,{className:`min-w-0`,children:[(0,k.jsx)(`h1`,{className:`text-xl sm:text-2xl font-bold tracking-tight`,children:e(`profile.title`,{defaultValue:`Profile`})}),(0,k.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1`,children:e(`profile.subtitle`,{defaultValue:`Manage your account settings`})})]}),(0,k.jsx)(p,{children:(0,k.jsxs)(C,{className:`pt-6`,children:[(0,k.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,k.jsxs)(c,{className:`h-16 w-16`,children:[(0,k.jsx)(d,{src:t.image??void 0,alt:t.name??`User`}),(0,k.jsx)(u,{className:`text-lg bg-primary text-primary-foreground`,children:i(t)})]}),(0,k.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,k.jsx)(`p`,{className:`text-lg font-semibold truncate`,children:t.name??`User`}),(0,k.jsx)(`p`,{className:`text-sm text-muted-foreground truncate`,children:t.email}),(0,k.jsx)(m,{variant:`secondary`,className:`mt-1`,children:t.role??`member`})]}),(0,k.jsxs)(`div`,{className:`flex flex-col gap-2 shrink-0`,children:[(0,k.jsx)(`input`,{ref:V,type:`file`,accept:`image/*`,className:`hidden`,onChange:async e=>{let t=e.target.files?.[0];if(V.current&&(V.current.value=``),t){U(!0),G(null);try{let e=await P(t);await n({image:e.url})}catch(e){G(e instanceof Error?e.message:String(e))}finally{U(!1)}}},"data-testid":`profile-avatar-file`}),(0,k.jsxs)(_,{type:`button`,variant:`outline`,size:`sm`,disabled:H,onClick:()=>V.current?.click(),"data-testid":`profile-avatar-upload-btn`,children:[H?(0,k.jsx)(E,{className:`mr-2 h-4 w-4 animate-spin`}):(0,k.jsx)(b,{className:`mr-2 h-4 w-4`}),t.image?e(`profile.avatar.replace`,{defaultValue:`Replace`}):e(`profile.avatar.upload`,{defaultValue:`Upload`})]}),t.image&&(0,k.jsxs)(_,{type:`button`,variant:`ghost`,size:`sm`,disabled:H,onClick:async()=>{U(!0),G(null);try{await n({image:null})}catch(e){G(e instanceof Error?e.message:String(e))}finally{U(!1)}},"data-testid":`profile-avatar-remove-btn`,children:[(0,k.jsx)(w,{className:`mr-2 h-4 w-4`}),e(`profile.avatar.remove`,{defaultValue:`Remove`})]})]})]}),W&&(0,k.jsxs)(h,{variant:`destructive`,className:`mt-4`,children:[(0,k.jsx)(T,{className:`h-4 w-4`}),(0,k.jsx)(D,{children:W})]})]})}),(0,k.jsxs)(p,{children:[(0,k.jsxs)(S,{children:[(0,k.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,k.jsx)(y,{className:`h-4 w-4 text-muted-foreground`}),(0,k.jsx)(f,{className:`text-base sm:text-lg`,children:e(`profile.info.title`,{defaultValue:`Personal Information`})})]}),(0,k.jsx)(o,{children:e(`profile.info.description`,{defaultValue:`Update your name and view account details`})})]}),(0,k.jsx)(C,{children:(0,k.jsxs)(`form`,{onSubmit:async e=>{e.preventDefault(),B(null),R(!1);try{await n({name:F}),R(!0)}catch(e){B(e instanceof Error?e.message:String(e))}},className:`space-y-4`,children:[z&&(0,k.jsxs)(h,{variant:`destructive`,children:[(0,k.jsx)(T,{className:`h-4 w-4`}),(0,k.jsx)(D,{children:z})]}),L&&(0,k.jsxs)(h,{children:[(0,k.jsx)(x,{className:`h-4 w-4 text-green-600`}),(0,k.jsx)(D,{className:`text-green-800 dark:text-green-400`,children:e(`profile.info.saved`,{defaultValue:`Profile updated successfully.`})})]}),(0,k.jsxs)(`div`,{className:`space-y-2`,children:[(0,k.jsx)(s,{htmlFor:`profile-name`,children:e(`profile.info.name`,{defaultValue:`Name`})}),(0,k.jsx)(l,{id:`profile-name`,type:`text`,value:F,onChange:e=>I(e.target.value),required:!0,"aria-required":`true`,disabled:v})]}),(0,k.jsxs)(`div`,{className:`space-y-2`,children:[(0,k.jsx)(s,{htmlFor:`profile-email`,children:e(`profile.info.email`,{defaultValue:`Email`})}),(0,k.jsx)(l,{id:`profile-email`,type:`email`,value:t.email,disabled:!0,className:`bg-muted text-muted-foreground`}),(0,k.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`profile.info.emailImmutable`,{defaultValue:`Email cannot be changed.`})})]}),(0,k.jsxs)(`div`,{className:`space-y-2`,children:[(0,k.jsx)(s,{children:e(`profile.info.role`,{defaultValue:`Role`})}),(0,k.jsx)(l,{type:`text`,value:t.role??`member`,disabled:!0,className:`bg-muted text-muted-foreground`})]}),(0,k.jsx)(_,{type:`submit`,disabled:v,className:`w-full sm:w-auto`,children:v?e(`profile.saving`,{defaultValue:`Saving…`}):e(`profile.info.save`,{defaultValue:`Save Changes`})})]})})]}),(0,k.jsx)(j,{changePassword:A,setInitialPassword:M,hasLocalPassword:N})]}):null}function j({changePassword:e,setInitialPassword:t,hasLocalPassword:n,highlight:r,onPasswordSet:i}){let{t:c}=a(),[u,d]=(0,O.useState)(null),[m,g]=(0,O.useState)(``),[y,b]=(0,O.useState)(``),[w,E]=(0,O.useState)(``),[A,j]=(0,O.useState)(!1),[M,N]=(0,O.useState)(null),[P,F]=(0,O.useState)(null);(0,O.useEffect)(()=>{let e=!1;return n().then(t=>{e||d(t)}).catch(()=>{e||d(!1)}),()=>{e=!0}},[n]);let I=()=>{g(``),b(``),E(``)},L=async n=>{if(n.preventDefault(),N(null),F(null),y.length<8){N(c(`profile.password.tooShort`,{defaultValue:`Password must be at least 8 characters`}));return}if(y!==w){N(c(`profile.password.mismatch`,{defaultValue:`Passwords do not match`}));return}j(!0);try{if(u){if(!m){N(c(`profile.password.enterCurrent`,{defaultValue:`Enter your current password`})),j(!1);return}await e(m,y),F(c(`profile.password.changed`,{defaultValue:`Password changed.`}))}else await t(y),F(c(`profile.password.localSet`,{defaultValue:`Local password set. You can now sign in with email and password on this environment.`})),d(!0),i?.();I()}catch(e){N(e instanceof Error?e.message:String(e))}finally{j(!1)}},R=u===null;return(0,k.jsxs)(p,{className:r?`ring-2 ring-amber-300 dark:ring-amber-700`:void 0,children:[(0,k.jsxs)(S,{children:[(0,k.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,k.jsx)(v,{className:`h-4 w-4 text-muted-foreground`}),(0,k.jsx)(f,{className:`text-base sm:text-lg`,children:u?c(`profile.password.changeTitle`,{defaultValue:`Change Password`}):c(`profile.password.setTitle`,{defaultValue:`Set Local Password`})})]}),(0,k.jsx)(o,{children:u?c(`profile.password.changeDescription`,{defaultValue:`Update the password you use to sign in to this environment.`}):c(`profile.password.setDescription`,{defaultValue:`You signed in via single sign-on. Set a local password to also sign in with email and password on this environment.`})})]}),(0,k.jsx)(C,{children:(0,k.jsxs)(`form`,{onSubmit:L,className:`space-y-4 max-w-md`,children:[u&&(0,k.jsxs)(`div`,{className:`space-y-2`,children:[(0,k.jsx)(s,{htmlFor:`current-password`,children:c(`profile.password.current`,{defaultValue:`Current password`})}),(0,k.jsx)(l,{id:`current-password`,type:`password`,autoComplete:`current-password`,value:m,onChange:e=>g(e.target.value),disabled:A||R,required:!0})]}),(0,k.jsxs)(`div`,{className:`space-y-2`,children:[(0,k.jsx)(s,{htmlFor:`new-password`,children:u?c(`profile.password.new`,{defaultValue:`New password`}):c(`profile.password.password`,{defaultValue:`Password`})}),(0,k.jsx)(l,{id:`new-password`,type:`password`,autoComplete:`new-password`,value:y,onChange:e=>b(e.target.value),disabled:A||R,minLength:8,required:!0})]}),(0,k.jsxs)(`div`,{className:`space-y-2`,children:[(0,k.jsx)(s,{htmlFor:`confirm-password`,children:c(`profile.password.confirm`,{defaultValue:`Confirm password`})}),(0,k.jsx)(l,{id:`confirm-password`,type:`password`,autoComplete:`new-password`,value:w,onChange:e=>E(e.target.value),disabled:A||R,minLength:8,required:!0})]}),M&&(0,k.jsxs)(h,{variant:`destructive`,children:[(0,k.jsx)(T,{className:`h-4 w-4`}),(0,k.jsx)(D,{children:M})]}),P&&(0,k.jsxs)(h,{children:[(0,k.jsx)(x,{className:`h-4 w-4`}),(0,k.jsx)(D,{children:P})]}),(0,k.jsx)(_,{type:`submit`,disabled:A||R,className:`w-full sm:w-auto`,children:A?c(`profile.saving`,{defaultValue:`Saving…`}):u?c(`profile.password.changeAction`,{defaultValue:`Change password`}):c(`profile.password.setAction`,{defaultValue:`Set password`})})]})})]})}export{A as ProfilePage};
@@ -1 +1 @@
1
- import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{b as t,r as n}from"./vendor-react-CsWFRkED.js";import{q as r}from"./framework-BfSv4Kb0.js";import{Ar as i,Bn as a,Cr as o,Da as ee,Fs as te,Gt as s,In as c,Jt as l,Kt as u,Mr as ne,Or as re,Pr as ie,Sr as d,To as ae,Ut as oe,Wt as se,Xr as f,br as p,jr as ce,kr as le,qt as ue,ra as de,va as fe,vr as m,ws as pe,xa as me,xr as h,yr as g,zs as he}from"./ui-components-D2lrjG-t.js";import{r as _}from"./vendor-ui-utils-BFw4cGI6.js";import"./src-JX1BkhmR.js";import{t as ge}from"./submitRedirect-UXd9NsjL.js";var v=e(t(),1),y=n();function _e(e){return e?e.replace(/^\/+/,``).match(/^forms\/([^/?#]+)/i)?.[1]??null:null}function b(e){return e.trim().toLowerCase().replace(/[^a-z0-9-_]+/g,`-`).replace(/^-+|-+$/g,``)}function x(){let e=r()?.getClient?.(),[t,n]=(0,v.useState)([]),[x,ve]=(0,v.useState)([]),[S,C]=(0,v.useState)(!0),[w,T]=(0,v.useState)(null),[ye,E]=(0,v.useState)(!1),[D,O]=(0,v.useState)(``),[k,A]=(0,v.useState)(``),[j,M]=(0,v.useState)(!1),[be,N]=(0,v.useState)(!1),[P,F]=(0,v.useState)(null),[I,L]=(0,v.useState)(``),[R,z]=(0,v.useState)(`thank-you`),[B,V]=(0,v.useState)(``),[H,U]=(0,v.useState)(``),[W,G]=(0,v.useState)(``),[K,q]=(0,v.useState)(null),[J,Y]=(0,v.useState)(!1),X=async()=>{if(!e?.meta?.getItems){T(`meta.getItems is not available on this client`),C(!1);return}C(!0),T(null);try{let t=await e.meta.getItems(`view`),r=Array.isArray(t)?t:Array.isArray(t?.items)?t.items:Array.isArray(t?.value)?t.value:[],i=[],a=[];for(let e of r){let t=e?.spec??e;if(!(t?.sections||t?.groups||t?.form||t?.type===`simple`||t?.type===`tabbed`||t?.type===`wizard`||t?.viewType===`form`))continue;let n=t?.sharing,r=n?.publicLink,o=_e(r);n?.allowAnonymous&&o&&r?i.push({name:t?.name??e?.name,label:t?.label,object:t?.object,slug:o,publicLink:r,updatedAt:e?.updatedAt??e?.updated_at,spec:t}):a.push({name:t?.name??e?.name,label:t?.label,object:t?.object,spec:t})}n(i),ve(a)}catch(e){T(e?.message??String(e))}finally{C(!1)}};(0,v.useEffect)(()=>{X()},[]);let xe=typeof window<`u`?window.location.origin:``,Z=e=>`${xe}/console/f/${e}`,Se=e=>`<iframe src="${Z(e)}" width="100%" height="640" frameborder="0" style="border:0;"></iframe>`,Ce=e=>`<iframe\n src={\`${Z(e)}\`}\n title="Public form"\n style={{ width: '100%', height: 640, border: 0 }}\n/>`,Q=async(e,t)=>{try{await navigator.clipboard.writeText(t),_.success(`Copied ${e}`)}catch{_.error(`Clipboard unavailable`)}},we=async()=>{if(!D||!k)return;let t=x.find(e=>e.name===D);if(!t)return;let n=b(k);if(!n){_.error(`Invalid slug`);return}let r={...t.spec,sharing:{...t.spec.sharing??{},enabled:!0,allowAnonymous:!0,publicLink:`/forms/${n}`}};M(!0);try{await e.meta.saveItem(`view`,t.name,r),_.success(`Published ${t.name}`),E(!1),O(``),A(``),await X()}catch(e){_.error(`Publish failed: ${e?.message??e}`)}finally{M(!1)}},Te=e=>{F(e),L(e.slug);let t=e.spec?.submitBehavior,n=t?.kind??`thank-you`;z(n),V(t?.title??``),U(t?.message??``),G(t?.url??``),q(null),N(!0)},Ee=async()=>{if(!P)return;let t=b(I);if(!t){_.error(`Invalid slug`);return}q(null);let n;switch(R){case`thank-you`:n={kind:`thank-you`},B&&(n.title=B),H&&(n.message=H);break;case`redirect`:{let e=ge(W);if(!e.ok){q(e.refusal);return}n={kind:`redirect`,url:e.url};break}case`continue`:case`next-record`:n={kind:R}}let r={...P.spec,sharing:{...P.spec.sharing??{},enabled:!0,allowAnonymous:!0,publicLink:`/forms/${t}`},submitBehavior:n};Y(!0);try{await e.meta.saveItem(`view`,P.name,r),_.success(`Saved ${P.name}`),N(!1),F(null),await X()}catch(e){_.error(`Save failed: ${e?.message??e}`)}finally{Y(!1)}},$=t.length>0;return(0,y.jsxs)(`div`,{className:`flex flex-1 flex-col gap-4 p-4 md:p-6 overflow-auto`,children:[(0,y.jsxs)(re,{children:[(0,y.jsxs)(ce,{className:`flex flex-row items-start justify-between gap-4 space-y-0`,children:[(0,y.jsxs)(`div`,{children:[(0,y.jsxs)(ne,{className:`flex items-center gap-2`,children:[(0,y.jsx)(me,{className:`h-4 w-4`}),`Public Forms`]}),(0,y.jsx)(i,{children:`Forms anyone can fill out — no login required. Publish a form to get a shareable link; submissions land directly in the bound object.`})]}),(0,y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,y.jsxs)(f,{variant:`default`,size:`sm`,onClick:()=>E(!0),disabled:x.length===0,title:x.length===0?`No non-public FormViews available`:`Publish a FormView`,children:[(0,y.jsx)(ee,{className:`h-3.5 w-3.5`}),(0,y.jsx)(`span`,{className:`ml-1.5`,children:`Publish form…`})]}),(0,y.jsxs)(f,{variant:`outline`,size:`sm`,onClick:X,disabled:S,children:[(0,y.jsx)(fe,{className:`h-3.5 w-3.5 ${S?`animate-spin`:``}`}),(0,y.jsx)(`span`,{className:`ml-1.5`,children:`Refresh`})]})]})]}),(0,y.jsxs)(le,{children:[w&&(0,y.jsx)(`div`,{className:`mb-3 rounded-md border border-destructive/40 bg-destructive/10 p-3 text-sm text-destructive`,children:w}),!S&&!$&&(0,y.jsxs)(`div`,{className:`rounded-md border border-dashed p-6 text-center text-sm text-muted-foreground`,children:[(0,y.jsx)(`p`,{className:`font-medium text-foreground`,children:`No public forms yet`}),(0,y.jsxs)(`p`,{className:`mt-1`,children:[`Click `,(0,y.jsx)(`strong`,{children:`Publish form…`}),` above to share an existing form, or build a new one in Views & Apps and mark it public.`]})]}),$&&(0,y.jsxs)(oe,{children:[(0,y.jsx)(ue,{children:(0,y.jsxs)(l,{children:[(0,y.jsx)(u,{children:`Name`}),(0,y.jsx)(u,{children:`Object`}),(0,y.jsx)(u,{children:`Slug`}),(0,y.jsx)(u,{children:`Public URL`}),(0,y.jsx)(u,{className:`text-right`,children:`Actions`})]})}),(0,y.jsx)(se,{children:t.map(e=>{let t=Z(e.slug);return(0,y.jsxs)(l,{children:[(0,y.jsx)(s,{children:(0,y.jsxs)(`div`,{className:`flex flex-col`,children:[(0,y.jsx)(`span`,{className:`font-medium`,children:e.label??e.name}),(0,y.jsx)(`code`,{className:`text-xs text-muted-foreground`,children:e.name})]})}),(0,y.jsx)(s,{children:e.object?(0,y.jsx)(ie,{variant:`secondary`,children:e.object}):(0,y.jsx)(`span`,{className:`text-muted-foreground`,children:`—`})}),(0,y.jsx)(s,{children:(0,y.jsx)(`code`,{className:`text-xs`,children:e.slug})}),(0,y.jsx)(s,{children:(0,y.jsxs)(`a`,{href:t,target:`_blank`,rel:`noreferrer`,className:`inline-flex items-center gap-1 text-xs text-primary underline-offset-2 hover:underline`,children:[t,(0,y.jsx)(pe,{className:`h-3 w-3`})]})}),(0,y.jsx)(s,{className:`text-right`,children:(0,y.jsxs)(`div`,{className:`inline-flex gap-1`,children:[(0,y.jsx)(f,{variant:`ghost`,size:`sm`,title:`Copy URL`,onClick:()=>Q(`URL`,t),children:(0,y.jsx)(ae,{className:`h-3.5 w-3.5`})}),(0,y.jsx)(f,{variant:`ghost`,size:`sm`,title:`Copy <iframe> embed`,onClick:()=>Q(`iframe snippet`,Se(e.slug)),children:(0,y.jsx)(he,{className:`h-3.5 w-3.5`})}),(0,y.jsx)(f,{variant:`ghost`,size:`sm`,title:`Copy React snippet`,onClick:()=>Q(`React snippet`,Ce(e.slug)),children:(0,y.jsx)(te,{className:`h-3.5 w-3.5`})}),(0,y.jsx)(f,{variant:`ghost`,size:`sm`,title:`Edit sharing & post-submit behavior`,onClick:()=>Te(e),children:(0,y.jsx)(de,{className:`h-3.5 w-3.5`})})]})})]},e.name)})})]})]})]}),(0,y.jsx)(m,{open:ye,onOpenChange:E,children:(0,y.jsxs)(g,{className:`sm:max-w-md`,children:[(0,y.jsxs)(d,{children:[(0,y.jsx)(o,{children:`Publish a FormView`}),(0,y.jsxs)(p,{children:[`Pick an existing FormView and turn it into a public form by enabling `,(0,y.jsx)(`code`,{className:`text-xs`,children:`sharing.allowAnonymous`}),` `,`and setting `,(0,y.jsx)(`code`,{className:`text-xs`,children:`publicLink`}),`.`]})]}),(0,y.jsxs)(`div`,{className:`space-y-3`,children:[(0,y.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,y.jsx)(a,{htmlFor:`publish-view`,children:`FormView`}),(0,y.jsxs)(`select`,{id:`publish-view`,className:`flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm`,value:D,onChange:e=>O(e.target.value),children:[(0,y.jsx)(`option`,{value:``,children:`— Select a FormView —`}),x.map(e=>(0,y.jsxs)(`option`,{value:e.name,children:[e.label??e.name,` (`,e.name,`) `,e.object?`· ${e.object}`:``]},e.name))]})]}),(0,y.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,y.jsx)(a,{htmlFor:`publish-slug`,children:`URL slug`}),(0,y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,y.jsx)(`span`,{className:`text-xs text-muted-foreground whitespace-nowrap`,children:`/console/f/`}),(0,y.jsx)(c,{id:`publish-slug`,placeholder:`contact-us`,value:k,onChange:e=>A(e.target.value)})]}),(0,y.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Lowercase letters, digits, dashes and underscores only.`})]})]}),(0,y.jsxs)(h,{children:[(0,y.jsx)(f,{variant:`ghost`,onClick:()=>E(!1),disabled:j,children:`Cancel`}),(0,y.jsx)(f,{onClick:we,disabled:j||!D||!k,children:j?`Publishing…`:`Publish`})]})]})}),(0,y.jsx)(m,{open:be,onOpenChange:N,children:(0,y.jsxs)(g,{className:`sm:max-w-lg`,children:[(0,y.jsxs)(d,{children:[(0,y.jsx)(o,{children:P?`Edit ${P.label??P.name}`:`Edit form`}),(0,y.jsx)(p,{children:`Configure the public URL and what happens after submit.`})]}),(0,y.jsxs)(`div`,{className:`space-y-3`,children:[(0,y.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,y.jsx)(a,{htmlFor:`edit-slug`,children:`URL slug`}),(0,y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,y.jsx)(`span`,{className:`text-xs text-muted-foreground whitespace-nowrap`,children:`/console/f/`}),(0,y.jsx)(c,{id:`edit-slug`,value:I,onChange:e=>L(e.target.value)})]})]}),(0,y.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,y.jsx)(a,{htmlFor:`edit-behavior`,children:`After submit`}),(0,y.jsxs)(`select`,{id:`edit-behavior`,className:`flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm`,value:R,onChange:e=>{z(e.target.value),q(null)},children:[(0,y.jsx)(`option`,{value:`thank-you`,children:`Show a thank-you panel`}),(0,y.jsx)(`option`,{value:`redirect`,children:`Redirect to a URL`}),(0,y.jsx)(`option`,{value:`continue`,children:`Reset for another response`}),(0,y.jsx)(`option`,{value:`next-record`,children:`Advance to next record (internal queues)`})]})]}),R===`thank-you`&&(0,y.jsxs)(y.Fragment,{children:[(0,y.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,y.jsx)(a,{htmlFor:`edit-tytitle`,children:`Title`}),(0,y.jsx)(c,{id:`edit-tytitle`,placeholder:`Thanks!`,value:B,onChange:e=>V(e.target.value)})]}),(0,y.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,y.jsx)(a,{htmlFor:`edit-tymsg`,children:`Message`}),(0,y.jsx)(c,{id:`edit-tymsg`,placeholder:`Your submission has been received.`,value:H,onChange:e=>U(e.target.value)})]})]}),R===`redirect`&&(0,y.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,y.jsx)(a,{htmlFor:`edit-url`,children:`Redirect URL`}),(0,y.jsx)(c,{id:`edit-url`,type:`text`,placeholder:`/thanks`,value:W,onChange:e=>{G(e.target.value),q(null)},"aria-invalid":K?!0:void 0,"aria-describedby":K?`edit-url-refusal`:`edit-url-hint`}),K?(0,y.jsx)(`p`,{id:`edit-url-refusal`,role:`alert`,className:`text-xs text-destructive`,children:K}):(0,y.jsxs)(`p`,{id:`edit-url-hint`,className:`text-xs text-muted-foreground`,children:[`An in-app path, starting with `,(0,y.jsx)(`code`,{children:`/`}),` — interpolate a field of the submitted record as `,(0,y.jsx)(`code`,{children:`{{record.field_name}}`}),`. To send the browser out of the app, use an app navigation item instead.`]})]})]}),(0,y.jsxs)(h,{children:[(0,y.jsx)(f,{variant:`ghost`,onClick:()=>N(!1),disabled:J,children:`Cancel`}),(0,y.jsx)(f,{onClick:Ee,disabled:J||!I,children:J?`Saving…`:`Save`})]})]})})]})}export{x as PublicFormsPage};
1
+ import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{b as t,r as n}from"./vendor-react-CsWFRkED.js";import{q as r}from"./framework-DFE_Mws9.js";import{Ar as i,Bn as a,Cr as o,Da as ee,Fs as te,Gt as s,In as c,Jt as l,Kt as u,Mr as ne,Or as re,Pr as ie,Sr as d,To as ae,Ut as oe,Wt as se,Xr as f,br as p,jr as ce,kr as le,qt as ue,ra as de,va as fe,vr as m,ws as pe,xa as me,xr as h,yr as g,zs as he}from"./ui-components-CMHDBJEm.js";import{r as _}from"./vendor-ui-utils-BFw4cGI6.js";import"./src-hcMLuWxG.js";import{t as ge}from"./submitRedirect-7ExeC4kw.js";var v=e(t(),1),y=n();function _e(e){return e?e.replace(/^\/+/,``).match(/^forms\/([^/?#]+)/i)?.[1]??null:null}function b(e){return e.trim().toLowerCase().replace(/[^a-z0-9-_]+/g,`-`).replace(/^-+|-+$/g,``)}function x(){let e=r()?.getClient?.(),[t,n]=(0,v.useState)([]),[x,ve]=(0,v.useState)([]),[S,C]=(0,v.useState)(!0),[w,T]=(0,v.useState)(null),[ye,E]=(0,v.useState)(!1),[D,O]=(0,v.useState)(``),[k,A]=(0,v.useState)(``),[j,M]=(0,v.useState)(!1),[be,N]=(0,v.useState)(!1),[P,F]=(0,v.useState)(null),[I,L]=(0,v.useState)(``),[R,z]=(0,v.useState)(`thank-you`),[B,V]=(0,v.useState)(``),[H,U]=(0,v.useState)(``),[W,G]=(0,v.useState)(``),[K,q]=(0,v.useState)(null),[J,Y]=(0,v.useState)(!1),X=async()=>{if(!e?.meta?.getItems){T(`meta.getItems is not available on this client`),C(!1);return}C(!0),T(null);try{let t=await e.meta.getItems(`view`),r=Array.isArray(t)?t:Array.isArray(t?.items)?t.items:Array.isArray(t?.value)?t.value:[],i=[],a=[];for(let e of r){let t=e?.spec??e;if(!(t?.sections||t?.groups||t?.form||t?.type===`simple`||t?.type===`tabbed`||t?.type===`wizard`||t?.viewType===`form`))continue;let n=t?.sharing,r=n?.publicLink,o=_e(r);n?.allowAnonymous&&o&&r?i.push({name:t?.name??e?.name,label:t?.label,object:t?.object,slug:o,publicLink:r,updatedAt:e?.updatedAt??e?.updated_at,spec:t}):a.push({name:t?.name??e?.name,label:t?.label,object:t?.object,spec:t})}n(i),ve(a)}catch(e){T(e?.message??String(e))}finally{C(!1)}};(0,v.useEffect)(()=>{X()},[]);let xe=typeof window<`u`?window.location.origin:``,Z=e=>`${xe}/console/f/${e}`,Se=e=>`<iframe src="${Z(e)}" width="100%" height="640" frameborder="0" style="border:0;"></iframe>`,Ce=e=>`<iframe\n src={\`${Z(e)}\`}\n title="Public form"\n style={{ width: '100%', height: 640, border: 0 }}\n/>`,Q=async(e,t)=>{try{await navigator.clipboard.writeText(t),_.success(`Copied ${e}`)}catch{_.error(`Clipboard unavailable`)}},we=async()=>{if(!D||!k)return;let t=x.find(e=>e.name===D);if(!t)return;let n=b(k);if(!n){_.error(`Invalid slug`);return}let r={...t.spec,sharing:{...t.spec.sharing??{},enabled:!0,allowAnonymous:!0,publicLink:`/forms/${n}`}};M(!0);try{await e.meta.saveItem(`view`,t.name,r),_.success(`Published ${t.name}`),E(!1),O(``),A(``),await X()}catch(e){_.error(`Publish failed: ${e?.message??e}`)}finally{M(!1)}},Te=e=>{F(e),L(e.slug);let t=e.spec?.submitBehavior,n=t?.kind??`thank-you`;z(n),V(t?.title??``),U(t?.message??``),G(t?.url??``),q(null),N(!0)},Ee=async()=>{if(!P)return;let t=b(I);if(!t){_.error(`Invalid slug`);return}q(null);let n;switch(R){case`thank-you`:n={kind:`thank-you`},B&&(n.title=B),H&&(n.message=H);break;case`redirect`:{let e=ge(W);if(!e.ok){q(e.refusal);return}n={kind:`redirect`,url:e.url};break}case`continue`:case`next-record`:n={kind:R}}let r={...P.spec,sharing:{...P.spec.sharing??{},enabled:!0,allowAnonymous:!0,publicLink:`/forms/${t}`},submitBehavior:n};Y(!0);try{await e.meta.saveItem(`view`,P.name,r),_.success(`Saved ${P.name}`),N(!1),F(null),await X()}catch(e){_.error(`Save failed: ${e?.message??e}`)}finally{Y(!1)}},$=t.length>0;return(0,y.jsxs)(`div`,{className:`flex flex-1 flex-col gap-4 p-4 md:p-6 overflow-auto`,children:[(0,y.jsxs)(re,{children:[(0,y.jsxs)(ce,{className:`flex flex-row items-start justify-between gap-4 space-y-0`,children:[(0,y.jsxs)(`div`,{children:[(0,y.jsxs)(ne,{className:`flex items-center gap-2`,children:[(0,y.jsx)(me,{className:`h-4 w-4`}),`Public Forms`]}),(0,y.jsx)(i,{children:`Forms anyone can fill out — no login required. Publish a form to get a shareable link; submissions land directly in the bound object.`})]}),(0,y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,y.jsxs)(f,{variant:`default`,size:`sm`,onClick:()=>E(!0),disabled:x.length===0,title:x.length===0?`No non-public FormViews available`:`Publish a FormView`,children:[(0,y.jsx)(ee,{className:`h-3.5 w-3.5`}),(0,y.jsx)(`span`,{className:`ml-1.5`,children:`Publish form…`})]}),(0,y.jsxs)(f,{variant:`outline`,size:`sm`,onClick:X,disabled:S,children:[(0,y.jsx)(fe,{className:`h-3.5 w-3.5 ${S?`animate-spin`:``}`}),(0,y.jsx)(`span`,{className:`ml-1.5`,children:`Refresh`})]})]})]}),(0,y.jsxs)(le,{children:[w&&(0,y.jsx)(`div`,{className:`mb-3 rounded-md border border-destructive/40 bg-destructive/10 p-3 text-sm text-destructive`,children:w}),!S&&!$&&(0,y.jsxs)(`div`,{className:`rounded-md border border-dashed p-6 text-center text-sm text-muted-foreground`,children:[(0,y.jsx)(`p`,{className:`font-medium text-foreground`,children:`No public forms yet`}),(0,y.jsxs)(`p`,{className:`mt-1`,children:[`Click `,(0,y.jsx)(`strong`,{children:`Publish form…`}),` above to share an existing form, or build a new one in Views & Apps and mark it public.`]})]}),$&&(0,y.jsxs)(oe,{children:[(0,y.jsx)(ue,{children:(0,y.jsxs)(l,{children:[(0,y.jsx)(u,{children:`Name`}),(0,y.jsx)(u,{children:`Object`}),(0,y.jsx)(u,{children:`Slug`}),(0,y.jsx)(u,{children:`Public URL`}),(0,y.jsx)(u,{className:`text-right`,children:`Actions`})]})}),(0,y.jsx)(se,{children:t.map(e=>{let t=Z(e.slug);return(0,y.jsxs)(l,{children:[(0,y.jsx)(s,{children:(0,y.jsxs)(`div`,{className:`flex flex-col`,children:[(0,y.jsx)(`span`,{className:`font-medium`,children:e.label??e.name}),(0,y.jsx)(`code`,{className:`text-xs text-muted-foreground`,children:e.name})]})}),(0,y.jsx)(s,{children:e.object?(0,y.jsx)(ie,{variant:`secondary`,children:e.object}):(0,y.jsx)(`span`,{className:`text-muted-foreground`,children:`—`})}),(0,y.jsx)(s,{children:(0,y.jsx)(`code`,{className:`text-xs`,children:e.slug})}),(0,y.jsx)(s,{children:(0,y.jsxs)(`a`,{href:t,target:`_blank`,rel:`noreferrer`,className:`inline-flex items-center gap-1 text-xs text-primary underline-offset-2 hover:underline`,children:[t,(0,y.jsx)(pe,{className:`h-3 w-3`})]})}),(0,y.jsx)(s,{className:`text-right`,children:(0,y.jsxs)(`div`,{className:`inline-flex gap-1`,children:[(0,y.jsx)(f,{variant:`ghost`,size:`sm`,title:`Copy URL`,onClick:()=>Q(`URL`,t),children:(0,y.jsx)(ae,{className:`h-3.5 w-3.5`})}),(0,y.jsx)(f,{variant:`ghost`,size:`sm`,title:`Copy <iframe> embed`,onClick:()=>Q(`iframe snippet`,Se(e.slug)),children:(0,y.jsx)(he,{className:`h-3.5 w-3.5`})}),(0,y.jsx)(f,{variant:`ghost`,size:`sm`,title:`Copy React snippet`,onClick:()=>Q(`React snippet`,Ce(e.slug)),children:(0,y.jsx)(te,{className:`h-3.5 w-3.5`})}),(0,y.jsx)(f,{variant:`ghost`,size:`sm`,title:`Edit sharing & post-submit behavior`,onClick:()=>Te(e),children:(0,y.jsx)(de,{className:`h-3.5 w-3.5`})})]})})]},e.name)})})]})]})]}),(0,y.jsx)(m,{open:ye,onOpenChange:E,children:(0,y.jsxs)(g,{className:`sm:max-w-md`,children:[(0,y.jsxs)(d,{children:[(0,y.jsx)(o,{children:`Publish a FormView`}),(0,y.jsxs)(p,{children:[`Pick an existing FormView and turn it into a public form by enabling `,(0,y.jsx)(`code`,{className:`text-xs`,children:`sharing.allowAnonymous`}),` `,`and setting `,(0,y.jsx)(`code`,{className:`text-xs`,children:`publicLink`}),`.`]})]}),(0,y.jsxs)(`div`,{className:`space-y-3`,children:[(0,y.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,y.jsx)(a,{htmlFor:`publish-view`,children:`FormView`}),(0,y.jsxs)(`select`,{id:`publish-view`,className:`flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm`,value:D,onChange:e=>O(e.target.value),children:[(0,y.jsx)(`option`,{value:``,children:`— Select a FormView —`}),x.map(e=>(0,y.jsxs)(`option`,{value:e.name,children:[e.label??e.name,` (`,e.name,`) `,e.object?`· ${e.object}`:``]},e.name))]})]}),(0,y.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,y.jsx)(a,{htmlFor:`publish-slug`,children:`URL slug`}),(0,y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,y.jsx)(`span`,{className:`text-xs text-muted-foreground whitespace-nowrap`,children:`/console/f/`}),(0,y.jsx)(c,{id:`publish-slug`,placeholder:`contact-us`,value:k,onChange:e=>A(e.target.value)})]}),(0,y.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Lowercase letters, digits, dashes and underscores only.`})]})]}),(0,y.jsxs)(h,{children:[(0,y.jsx)(f,{variant:`ghost`,onClick:()=>E(!1),disabled:j,children:`Cancel`}),(0,y.jsx)(f,{onClick:we,disabled:j||!D||!k,children:j?`Publishing…`:`Publish`})]})]})}),(0,y.jsx)(m,{open:be,onOpenChange:N,children:(0,y.jsxs)(g,{className:`sm:max-w-lg`,children:[(0,y.jsxs)(d,{children:[(0,y.jsx)(o,{children:P?`Edit ${P.label??P.name}`:`Edit form`}),(0,y.jsx)(p,{children:`Configure the public URL and what happens after submit.`})]}),(0,y.jsxs)(`div`,{className:`space-y-3`,children:[(0,y.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,y.jsx)(a,{htmlFor:`edit-slug`,children:`URL slug`}),(0,y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,y.jsx)(`span`,{className:`text-xs text-muted-foreground whitespace-nowrap`,children:`/console/f/`}),(0,y.jsx)(c,{id:`edit-slug`,value:I,onChange:e=>L(e.target.value)})]})]}),(0,y.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,y.jsx)(a,{htmlFor:`edit-behavior`,children:`After submit`}),(0,y.jsxs)(`select`,{id:`edit-behavior`,className:`flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm`,value:R,onChange:e=>{z(e.target.value),q(null)},children:[(0,y.jsx)(`option`,{value:`thank-you`,children:`Show a thank-you panel`}),(0,y.jsx)(`option`,{value:`redirect`,children:`Redirect to a URL`}),(0,y.jsx)(`option`,{value:`continue`,children:`Reset for another response`}),(0,y.jsx)(`option`,{value:`next-record`,children:`Advance to next record (internal queues)`})]})]}),R===`thank-you`&&(0,y.jsxs)(y.Fragment,{children:[(0,y.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,y.jsx)(a,{htmlFor:`edit-tytitle`,children:`Title`}),(0,y.jsx)(c,{id:`edit-tytitle`,placeholder:`Thanks!`,value:B,onChange:e=>V(e.target.value)})]}),(0,y.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,y.jsx)(a,{htmlFor:`edit-tymsg`,children:`Message`}),(0,y.jsx)(c,{id:`edit-tymsg`,placeholder:`Your submission has been received.`,value:H,onChange:e=>U(e.target.value)})]})]}),R===`redirect`&&(0,y.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,y.jsx)(a,{htmlFor:`edit-url`,children:`Redirect URL`}),(0,y.jsx)(c,{id:`edit-url`,type:`text`,placeholder:`/thanks`,value:W,onChange:e=>{G(e.target.value),q(null)},"aria-invalid":K?!0:void 0,"aria-describedby":K?`edit-url-refusal`:`edit-url-hint`}),K?(0,y.jsx)(`p`,{id:`edit-url-refusal`,role:`alert`,className:`text-xs text-destructive`,children:K}):(0,y.jsxs)(`p`,{id:`edit-url-hint`,className:`text-xs text-muted-foreground`,children:[`An in-app path, starting with `,(0,y.jsx)(`code`,{children:`/`}),` — interpolate a field of the submitted record as `,(0,y.jsx)(`code`,{children:`{{record.field_name}}`}),`. To send the browser out of the app, use an app navigation item instead.`]})]})]}),(0,y.jsxs)(h,{children:[(0,y.jsx)(f,{variant:`ghost`,onClick:()=>N(!1),disabled:J,children:`Cancel`}),(0,y.jsx)(f,{onClick:Ee,disabled:J||!I,children:J?`Saving…`:`Save`})]})]})})]})}export{x as PublicFormsPage};