@arbidocs/blocks 0.4.159 → 0.4.161

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 (334) hide show
  1. package/README.md +48 -9
  2. package/dist/{ConnectedNativeDocxComparison-R6RU5TZE.cjs → ConnectedNativeDocxComparison-GLHOGUP6.cjs} +12 -11
  3. package/dist/{ConnectedNativeDocxComparison-R6RU5TZE.cjs.map → ConnectedNativeDocxComparison-GLHOGUP6.cjs.map} +1 -1
  4. package/dist/{ConnectedNativeDocxComparison-XMZ5KLD4.js → ConnectedNativeDocxComparison-LKIMKOTA.js} +11 -10
  5. package/dist/{ConnectedStreamedWordArtifact-IXRJ7MUE.js.map → ConnectedNativeDocxComparison-LKIMKOTA.js.map} +1 -1
  6. package/dist/{ConnectedNativeDocxEditor-NGUK2AX6.js → ConnectedNativeDocxEditor-6LNYWZ3P.js} +10 -9
  7. package/dist/{ConnectedNativeDocxEditor-NGUK2AX6.js.map → ConnectedNativeDocxEditor-6LNYWZ3P.js.map} +1 -1
  8. package/dist/{ConnectedNativeDocxEditor-LBATSM3M.cjs → ConnectedNativeDocxEditor-M3UGWL6K.cjs} +12 -11
  9. package/dist/{ConnectedNativeDocxEditor-LBATSM3M.cjs.map → ConnectedNativeDocxEditor-M3UGWL6K.cjs.map} +1 -1
  10. package/dist/{ConnectedStreamedWordArtifact-IXRJ7MUE.js → ConnectedStreamedWordArtifact-432HT7DK.js} +11 -10
  11. package/dist/{ConnectedNativeDocxComparison-XMZ5KLD4.js.map → ConnectedStreamedWordArtifact-432HT7DK.js.map} +1 -1
  12. package/dist/{ConnectedStreamedWordArtifact-CWFR6A37.cjs → ConnectedStreamedWordArtifact-COEXL5IT.cjs} +12 -11
  13. package/dist/ConnectedStreamedWordArtifact-COEXL5IT.cjs.map +1 -0
  14. package/dist/{FactTextEditor-YESAU2IJ.js → FactTextEditor-ABKKJOCY.js} +2 -2
  15. package/dist/FactTextEditor-ABKKJOCY.js.map +1 -0
  16. package/dist/{FactTextEditor-YUPBCTXK.cjs → FactTextEditor-GYN5RHJT.cjs} +2 -2
  17. package/dist/FactTextEditor-GYN5RHJT.cjs.map +1 -0
  18. package/dist/{WorkspaceTableView-EYLEUZZT.cjs → WorkspaceTableView-AQTF5F6T.cjs} +6 -5
  19. package/dist/WorkspaceTableView-AQTF5F6T.cjs.map +1 -0
  20. package/dist/{WorkspaceTableView-DWUE4VQF.js → WorkspaceTableView-PTB5BPVA.js} +4 -3
  21. package/dist/WorkspaceTableView-PTB5BPVA.js.map +1 -0
  22. package/dist/agents/index.cjs +263 -263
  23. package/dist/agents/index.js +6 -6
  24. package/dist/agents/skills/skillLibrary.d.ts +1 -1
  25. package/dist/{chunk-FPHTSNOE.js → chunk-2AKIMCDD.js} +3 -3
  26. package/dist/{chunk-FPHTSNOE.js.map → chunk-2AKIMCDD.js.map} +1 -1
  27. package/dist/{chunk-YNMO3DSR.js → chunk-2AMYT2HQ.js} +3 -3
  28. package/dist/{chunk-YNMO3DSR.js.map → chunk-2AMYT2HQ.js.map} +1 -1
  29. package/dist/{chunk-MSFQDELO.cjs → chunk-3CUORKDL.cjs} +4 -4
  30. package/dist/{chunk-MSFQDELO.cjs.map → chunk-3CUORKDL.cjs.map} +1 -1
  31. package/dist/{chunk-MNG7N6M2.js → chunk-3PQIWOTZ.js} +122 -57
  32. package/dist/chunk-3PQIWOTZ.js.map +1 -0
  33. package/dist/chunk-5C7DRQQE.cjs +1891 -0
  34. package/dist/chunk-5C7DRQQE.cjs.map +1 -0
  35. package/dist/{chunk-F57LNUSZ.js → chunk-5NWY3FXQ.js} +24 -57
  36. package/dist/chunk-5NWY3FXQ.js.map +1 -0
  37. package/dist/{chunk-ISHFVKVU.js → chunk-5WLORPGX.js} +4 -4
  38. package/dist/{chunk-ISHFVKVU.js.map → chunk-5WLORPGX.js.map} +1 -1
  39. package/dist/{chunk-FAXXN7KI.cjs → chunk-5Y6V7F6W.cjs} +53 -4
  40. package/dist/chunk-5Y6V7F6W.cjs.map +1 -0
  41. package/dist/{chunk-6QAAIDQQ.cjs → chunk-6UTIAHQG.cjs} +60 -60
  42. package/dist/{chunk-6QAAIDQQ.cjs.map → chunk-6UTIAHQG.cjs.map} +1 -1
  43. package/dist/{chunk-KCSIX7CY.js → chunk-6XIXNH26.js} +3 -3
  44. package/dist/{chunk-KCSIX7CY.js.map → chunk-6XIXNH26.js.map} +1 -1
  45. package/dist/{chunk-YBJ4QGNH.cjs → chunk-ANLTECZ6.cjs} +8 -8
  46. package/dist/{chunk-YBJ4QGNH.cjs.map → chunk-ANLTECZ6.cjs.map} +1 -1
  47. package/dist/{chunk-Q2XGM372.cjs → chunk-AR6A2PMV.cjs} +4 -4
  48. package/dist/{chunk-Q2XGM372.cjs.map → chunk-AR6A2PMV.cjs.map} +1 -1
  49. package/dist/{chunk-KBO75NLM.cjs → chunk-AYJZRBHG.cjs} +7 -7
  50. package/dist/{chunk-KBO75NLM.cjs.map → chunk-AYJZRBHG.cjs.map} +1 -1
  51. package/dist/{chunk-FM3IRQJW.cjs → chunk-AYKE6USO.cjs} +12 -12
  52. package/dist/chunk-AYKE6USO.cjs.map +1 -0
  53. package/dist/chunk-BGJZVJJM.cjs +63 -0
  54. package/dist/chunk-BGJZVJJM.cjs.map +1 -0
  55. package/dist/{chunk-ECW2R2KF.cjs → chunk-BPL5RLNN.cjs} +27 -27
  56. package/dist/{chunk-ECW2R2KF.cjs.map → chunk-BPL5RLNN.cjs.map} +1 -1
  57. package/dist/{chunk-CNHUJRQ4.cjs → chunk-EFEFLBRM.cjs} +21 -55
  58. package/dist/chunk-EFEFLBRM.cjs.map +1 -0
  59. package/dist/{chunk-ETZ5A3GU.js → chunk-EVO2UNX3.js} +3 -3
  60. package/dist/chunk-EVO2UNX3.js.map +1 -0
  61. package/dist/{chunk-P6RIBIVN.js → chunk-FMJGVAWX.js} +8 -9
  62. package/dist/chunk-FMJGVAWX.js.map +1 -0
  63. package/dist/chunk-H5542IOD.cjs +108 -0
  64. package/dist/chunk-H5542IOD.cjs.map +1 -0
  65. package/dist/{chunk-VF5EUAIV.js → chunk-H7PHANI4.js} +3 -3
  66. package/dist/chunk-H7PHANI4.js.map +1 -0
  67. package/dist/chunk-HQJL7FSY.js +58 -0
  68. package/dist/chunk-HQJL7FSY.js.map +1 -0
  69. package/dist/{chunk-OFV3PRF2.cjs → chunk-HRDVQERS.cjs} +7 -7
  70. package/dist/{chunk-OFV3PRF2.cjs.map → chunk-HRDVQERS.cjs.map} +1 -1
  71. package/dist/{chunk-3VULDTNL.cjs → chunk-HUNX4CQG.cjs} +4 -4
  72. package/dist/chunk-HUNX4CQG.cjs.map +1 -0
  73. package/dist/{chunk-2BHDRVVL.cjs → chunk-I6I34FDU.cjs} +38 -37
  74. package/dist/chunk-I6I34FDU.cjs.map +1 -0
  75. package/dist/chunk-IWVOZREF.js +12 -0
  76. package/dist/chunk-IWVOZREF.js.map +1 -0
  77. package/dist/chunk-J7YHBMBB.js +1834 -0
  78. package/dist/chunk-J7YHBMBB.js.map +1 -0
  79. package/dist/{chunk-SDOEHEJP.js → chunk-JMQLTMJ7.js} +53 -5
  80. package/dist/chunk-JMQLTMJ7.js.map +1 -0
  81. package/dist/{chunk-TF7HN5EU.js → chunk-JNE2XEXD.js} +12 -12
  82. package/dist/chunk-JNE2XEXD.js.map +1 -0
  83. package/dist/{chunk-QKR5LWDO.js → chunk-K7CZFNJ2.js} +7 -7
  84. package/dist/{chunk-QKR5LWDO.js.map → chunk-K7CZFNJ2.js.map} +1 -1
  85. package/dist/{chunk-4RPBUMHB.cjs → chunk-KMZO5W6D.cjs} +4 -4
  86. package/dist/chunk-KMZO5W6D.cjs.map +1 -0
  87. package/dist/{chunk-FTZ45WHY.js → chunk-KNCJSPXV.js} +5020 -4014
  88. package/dist/chunk-KNCJSPXV.js.map +1 -0
  89. package/dist/{chunk-3OCNUKGX.js → chunk-KQWC4YBX.js} +3 -3
  90. package/dist/{chunk-3OCNUKGX.js.map → chunk-KQWC4YBX.js.map} +1 -1
  91. package/dist/{chunk-TC3RQNEX.cjs → chunk-L4KWTDFE.cjs} +5 -5
  92. package/dist/chunk-L4KWTDFE.cjs.map +1 -0
  93. package/dist/{chunk-VTTZZ4FN.js → chunk-LH3JAZ33.js} +5 -5
  94. package/dist/chunk-LH3JAZ33.js.map +1 -0
  95. package/dist/{chunk-P2YM67Y5.cjs → chunk-LQYPOWKN.cjs} +14 -21
  96. package/dist/chunk-LQYPOWKN.cjs.map +1 -0
  97. package/dist/{chunk-RATEAOKT.js → chunk-NOXGEQQR.js} +7 -13
  98. package/dist/chunk-NOXGEQQR.js.map +1 -0
  99. package/dist/{chunk-NPLGB4LI.cjs → chunk-NUAC5GTQ.cjs} +5115 -4077
  100. package/dist/chunk-NUAC5GTQ.cjs.map +1 -0
  101. package/dist/chunk-NYECCTB3.js +101 -0
  102. package/dist/chunk-NYECCTB3.js.map +1 -0
  103. package/dist/{chunk-GC2FSPSQ.cjs → chunk-O5E3NKPI.cjs} +128 -58
  104. package/dist/chunk-O5E3NKPI.cjs.map +1 -0
  105. package/dist/{chunk-SZOFGU7W.js → chunk-O5XREO7H.js} +3 -3
  106. package/dist/{chunk-SZOFGU7W.js.map → chunk-O5XREO7H.js.map} +1 -1
  107. package/dist/{chunk-OOU4QLRK.cjs → chunk-OHCYJFV2.cjs} +9 -9
  108. package/dist/{chunk-OOU4QLRK.cjs.map → chunk-OHCYJFV2.cjs.map} +1 -1
  109. package/dist/{chunk-DEPF5LQI.js → chunk-OKRYNQPH.js} +3 -3
  110. package/dist/chunk-OKRYNQPH.js.map +1 -0
  111. package/dist/{chunk-KFMRBZQK.js → chunk-PCL7IEZO.js} +21 -20
  112. package/dist/chunk-PCL7IEZO.js.map +1 -0
  113. package/dist/chunk-RFB7B6XG.cjs +169 -0
  114. package/dist/chunk-RFB7B6XG.cjs.map +1 -0
  115. package/dist/{chunk-SZSJGZSO.js → chunk-SQQU3WRB.js} +714 -5
  116. package/dist/chunk-SQQU3WRB.js.map +1 -0
  117. package/dist/{chunk-OALEDG67.cjs → chunk-TNESYDBR.cjs} +5 -5
  118. package/dist/{chunk-OALEDG67.cjs.map → chunk-TNESYDBR.cjs.map} +1 -1
  119. package/dist/chunk-TTS353W2.js +163 -0
  120. package/dist/chunk-TTS353W2.js.map +1 -0
  121. package/dist/{chunk-CROGFB46.cjs → chunk-U7OUZHBH.cjs} +753 -2
  122. package/dist/chunk-U7OUZHBH.cjs.map +1 -0
  123. package/dist/{chunk-BQ77KSXU.js → chunk-UORU5S7Y.js} +3 -3
  124. package/dist/{chunk-BQ77KSXU.js.map → chunk-UORU5S7Y.js.map} +1 -1
  125. package/dist/{chunk-FYZXDZM7.js → chunk-VFF76GTB.js} +4 -4
  126. package/dist/{chunk-FYZXDZM7.js.map → chunk-VFF76GTB.js.map} +1 -1
  127. package/dist/{chunk-E4H5H2C3.cjs → chunk-VYTK2WJB.cjs} +4 -4
  128. package/dist/{chunk-E4H5H2C3.cjs.map → chunk-VYTK2WJB.cjs.map} +1 -1
  129. package/dist/{chunk-XI37A7HH.js → chunk-WKSP73RU.js} +3 -3
  130. package/dist/{chunk-XI37A7HH.js.map → chunk-WKSP73RU.js.map} +1 -1
  131. package/dist/chunk-WP4VIOOA.cjs +15 -0
  132. package/dist/chunk-WP4VIOOA.cjs.map +1 -0
  133. package/dist/{chunk-YF3QUHKN.cjs → chunk-X3XPXEIM.cjs} +14 -15
  134. package/dist/chunk-X3XPXEIM.cjs.map +1 -0
  135. package/dist/{chunk-VZPFYZZU.cjs → chunk-Z2HEBOA3.cjs} +8 -8
  136. package/dist/{chunk-VZPFYZZU.cjs.map → chunk-Z2HEBOA3.cjs.map} +1 -1
  137. package/dist/{chunk-Q7CQYYZW.cjs → chunk-ZMYW5M75.cjs} +5 -5
  138. package/dist/chunk-ZMYW5M75.cjs.map +1 -0
  139. package/dist/{chunk-7UENVUA6.js → chunk-ZW2AWACP.js} +3 -3
  140. package/dist/{chunk-7UENVUA6.js.map → chunk-ZW2AWACP.js.map} +1 -1
  141. package/dist/citations/index.cjs +10 -10
  142. package/dist/citations/index.js +2 -2
  143. package/dist/collaboration/contacts/contact-form.d.ts +47 -0
  144. package/dist/collaboration/contacts/index.d.ts +3 -1
  145. package/dist/collaboration/contacts/invite-plan.d.ts +46 -0
  146. package/dist/collaboration/contacts/parseEmails.d.ts +7 -0
  147. package/dist/collaboration/index.cjs +163 -83
  148. package/dist/collaboration/index.js +2 -2
  149. package/dist/components/ActionLink.d.ts +1 -1
  150. package/dist/components/TeamGrid.d.ts +1 -1
  151. package/dist/components/editorial/{ProfileCard.d.ts → EditorialProfileCard.d.ts} +2 -2
  152. package/dist/components/editorial/index.d.ts +1 -1
  153. package/dist/connect/docx.cjs +14 -13
  154. package/dist/connect/docx.d.ts +1 -1
  155. package/dist/connect/docx.js +10 -9
  156. package/dist/connect/index.cjs +22097 -14743
  157. package/dist/connect/index.cjs.map +1 -1
  158. package/dist/connect/index.d.ts +11 -7
  159. package/dist/connect/index.js +15203 -7912
  160. package/dist/connect/index.js.map +1 -1
  161. package/dist/connect/viewer.cjs +83 -138
  162. package/dist/connect/viewer.cjs.map +1 -1
  163. package/dist/connect/viewer.d.ts +3 -2
  164. package/dist/connect/viewer.js +25 -82
  165. package/dist/connect/viewer.js.map +1 -1
  166. package/dist/connection/ConnectedSettings.d.ts +3 -2
  167. package/dist/connection/ConnectionProvider.d.ts +5 -4
  168. package/dist/connection/StreamedArtifact.d.ts +1 -1
  169. package/dist/connection/billing/index.d.ts +3 -3
  170. package/dist/connection/billing/support.d.ts +4 -7
  171. package/dist/connection/contacts/ConnectedAddContacts.d.ts +9 -0
  172. package/dist/connection/contacts/ConnectedContactCardForm.d.ts +11 -0
  173. package/dist/connection/contacts/ConnectedContactToggle.d.ts +16 -0
  174. package/dist/connection/contacts/ConnectedContactsDirectory.d.ts +10 -0
  175. package/dist/connection/contacts/ImportVcf.d.ts +29 -0
  176. package/dist/connection/contacts/index.d.ts +5 -0
  177. package/dist/connection/defaultHost.d.ts +9 -0
  178. package/dist/connection/docx/ConnectedNativeDocxEditor.d.ts +3 -3
  179. package/dist/connection/docx/support.d.ts +10 -9
  180. package/dist/connection/files/bulk/ConnectedFilesBulkActions.d.ts +22 -0
  181. package/dist/connection/files/bulk/useDocumentBulkActions.d.ts +19 -0
  182. package/dist/connection/files/explorer/FileTiles.d.ts +6 -3
  183. package/dist/connection/files/fields/ConnectedBulkTagEditor.d.ts +16 -0
  184. package/dist/connection/files/fields/ConnectedFieldsEditor.d.ts +40 -0
  185. package/dist/connection/files/fields/ConnectedFieldsManager.d.ts +33 -0
  186. package/dist/connection/files/fields/ConnectedTagEditorDialog.d.ts +20 -0
  187. package/dist/connection/files/fields/ConnectedTagForm.d.ts +54 -0
  188. package/dist/connection/files/fields/DocumentFieldParts.d.ts +33 -0
  189. package/dist/connection/files/fields/DocumentUser.d.ts +11 -0
  190. package/dist/connection/files/fields/documentField.d.ts +48 -0
  191. package/dist/connection/files/fields/useFieldWrites.d.ts +20 -0
  192. package/dist/connection/files/fields/useFieldsApply.d.ts +49 -0
  193. package/dist/connection/files/fields/useMemberLookup.d.ts +3 -0
  194. package/dist/connection/files/grid/ConnectedTagEntity.d.ts +19 -0
  195. package/dist/connection/files/grid/cells.d.ts +85 -0
  196. package/dist/connection/files/grid/documentColumns.d.ts +66 -0
  197. package/dist/connection/files/grid/documentGridBus.d.ts +48 -0
  198. package/dist/connection/files/grid/documentStatus.d.ts +43 -0
  199. package/dist/connection/files/grid/familyMeta.d.ts +21 -0
  200. package/dist/connection/files/grid/tagColumn.d.ts +23 -0
  201. package/dist/connection/files/grid/useDocumentGridSync.d.ts +48 -0
  202. package/dist/connection/files/grid/useDocumentTable.d.ts +30 -0
  203. package/dist/connection/files/index.d.ts +36 -2
  204. package/dist/connection/files/move/ConnectedMoveToFolder.d.ts +31 -0
  205. package/dist/connection/files/page/ConnectedFilesPage.d.ts +86 -0
  206. package/dist/connection/files/page/DocumentsFilterBarActions.d.ts +39 -0
  207. package/dist/connection/files/page/DocumentsUploadButton.d.ts +25 -0
  208. package/dist/connection/files/page/PersistedGridView.d.ts +6 -0
  209. package/dist/connection/files/page/ProgressiveLoadingChip.d.ts +12 -0
  210. package/dist/connection/files/page/useDocumentNavigation.d.ts +20 -0
  211. package/dist/connection/files/review/ConnectedAiReview.d.ts +40 -0
  212. package/dist/connection/files/review/reviewProgress.d.ts +2 -0
  213. package/dist/connection/files/store.d.ts +96 -0
  214. package/dist/connection/files/useDocumentFilters.d.ts +54 -0
  215. package/dist/connection/files/views/ViewSelector.d.ts +33 -0
  216. package/dist/connection/files/views/tableViews.d.ts +22 -0
  217. package/dist/connection/files/views/useTableViews.d.ts +22 -0
  218. package/dist/connection/mail/ConnectedMailbox.d.ts +2 -2
  219. package/dist/connection/messenger/ChatAttachments.d.ts +15 -0
  220. package/dist/connection/messenger/ConnectedChatThread.d.ts +21 -0
  221. package/dist/connection/messenger/ConnectedGroupMembers.d.ts +20 -0
  222. package/dist/connection/messenger/ConnectedMessenger.d.ts +52 -0
  223. package/dist/connection/messenger/index.d.ts +6 -0
  224. package/dist/connection/messenger/types.d.ts +103 -0
  225. package/dist/connection/messenger/useMessengerRows.d.ts +19 -0
  226. package/dist/connection/tags/ConnectedTagsPage.d.ts +2 -35
  227. package/dist/connection/viewer/ConnectedDocumentToolsProvider.d.ts +19 -2
  228. package/dist/connection/viewer/ConnectedDocumentViewer.d.ts +1 -1
  229. package/dist/connection/viewer/support.d.ts +21 -15
  230. package/dist/connection/workspaceData.d.ts +134 -8
  231. package/dist/facts/index.cjs +3 -3
  232. package/dist/facts/index.js +2 -2
  233. package/dist/files/bulk/BulkActionsBar.d.ts +9 -5
  234. package/dist/files/cells/DocumentNameCell.d.ts +4 -2
  235. package/dist/files/cells/MultiSelectCellEditor.d.ts +13 -0
  236. package/dist/files/cells/RelatedDocsCell.d.ts +2 -1
  237. package/dist/files/cells/index.d.ts +1 -0
  238. package/dist/files/documentColumns.d.ts +15 -0
  239. package/dist/files/folders/DocumentsFolderButton.d.ts +26 -0
  240. package/dist/files/folders/FolderTreePicker.d.ts +16 -0
  241. package/dist/files/folders/index.d.ts +2 -0
  242. package/dist/files/index.cjs +430 -434
  243. package/dist/files/index.d.ts +4 -1
  244. package/dist/files/index.js +5 -5
  245. package/dist/files/navigator/DocumentSearchList.d.ts +19 -0
  246. package/dist/files/navigator/ExplorerFileNavigator.d.ts +23 -0
  247. package/dist/files/navigator/NavDocumentPicker.d.ts +15 -0
  248. package/dist/files/navigator/NavigatorPickerBar.d.ts +26 -0
  249. package/dist/files/navigator/index.d.ts +5 -0
  250. package/dist/files/navigator/types.d.ts +7 -0
  251. package/dist/files/tags/BulkTagEditor.d.ts +2 -1
  252. package/dist/files/tags/index.d.ts +0 -2
  253. package/dist/files/visibility.d.ts +6 -5
  254. package/dist/home/StartTiles.d.ts +1 -1
  255. package/dist/home/index.cjs +30 -30
  256. package/dist/home/index.js +5 -5
  257. package/dist/index.cjs +684 -694
  258. package/dist/index.cjs.map +1 -1
  259. package/dist/index.d.ts +2 -1
  260. package/dist/index.js +22 -134
  261. package/dist/index.js.map +1 -1
  262. package/dist/provider/{BlocksProvider.d.ts → environment.d.ts} +8 -10
  263. package/dist/provider/host.d.ts +44 -0
  264. package/dist/retrieval/index.cjs +4 -4
  265. package/dist/retrieval/index.js +2 -2
  266. package/dist/shell/index.cjs +44 -44
  267. package/dist/shell/index.js +3 -3
  268. package/dist/shell/types.d.ts +1 -1
  269. package/dist/site/index.cjs +61 -61
  270. package/dist/site/index.js +2 -2
  271. package/dist/studio/index.cjs +86 -87
  272. package/dist/studio/index.cjs.map +1 -1
  273. package/dist/studio/index.js +15 -16
  274. package/dist/studio/index.js.map +1 -1
  275. package/dist/workflow-canvas/index.cjs +28 -27
  276. package/dist/workflow-canvas/index.cjs.map +1 -1
  277. package/dist/workflow-canvas/index.js +11 -10
  278. package/dist/workflow-canvas/index.js.map +1 -1
  279. package/dist/workspaces/WorkspaceCard.d.ts +1 -1
  280. package/dist/workspaces/index.cjs +20 -20
  281. package/dist/workspaces/index.js +4 -4
  282. package/node_modules/@arbidocs/coedit/package.json +1 -1
  283. package/package.json +5 -5
  284. package/dist/ConnectedStreamedWordArtifact-CWFR6A37.cjs.map +0 -1
  285. package/dist/FactTextEditor-YESAU2IJ.js.map +0 -1
  286. package/dist/FactTextEditor-YUPBCTXK.cjs.map +0 -1
  287. package/dist/WorkspaceTableView-DWUE4VQF.js.map +0 -1
  288. package/dist/WorkspaceTableView-EYLEUZZT.cjs.map +0 -1
  289. package/dist/chunk-2BHDRVVL.cjs.map +0 -1
  290. package/dist/chunk-3VULDTNL.cjs.map +0 -1
  291. package/dist/chunk-4RPBUMHB.cjs.map +0 -1
  292. package/dist/chunk-5ZIYPZYE.js +0 -2748
  293. package/dist/chunk-5ZIYPZYE.js.map +0 -1
  294. package/dist/chunk-6I6CVX5G.cjs +0 -22
  295. package/dist/chunk-6I6CVX5G.cjs.map +0 -1
  296. package/dist/chunk-7NL6WJER.cjs +0 -682
  297. package/dist/chunk-7NL6WJER.cjs.map +0 -1
  298. package/dist/chunk-CB4TIDEX.cjs +0 -54
  299. package/dist/chunk-CB4TIDEX.cjs.map +0 -1
  300. package/dist/chunk-CNHUJRQ4.cjs.map +0 -1
  301. package/dist/chunk-CROGFB46.cjs.map +0 -1
  302. package/dist/chunk-DEPF5LQI.js.map +0 -1
  303. package/dist/chunk-ETZ5A3GU.js.map +0 -1
  304. package/dist/chunk-EYJMMGXF.js +0 -19
  305. package/dist/chunk-EYJMMGXF.js.map +0 -1
  306. package/dist/chunk-F57LNUSZ.js.map +0 -1
  307. package/dist/chunk-FAXXN7KI.cjs.map +0 -1
  308. package/dist/chunk-FM3IRQJW.cjs.map +0 -1
  309. package/dist/chunk-FTZ45WHY.js.map +0 -1
  310. package/dist/chunk-GC2FSPSQ.cjs.map +0 -1
  311. package/dist/chunk-KDLX5AA7.js +0 -49
  312. package/dist/chunk-KDLX5AA7.js.map +0 -1
  313. package/dist/chunk-KFMRBZQK.js.map +0 -1
  314. package/dist/chunk-MNG7N6M2.js.map +0 -1
  315. package/dist/chunk-NPLGB4LI.cjs.map +0 -1
  316. package/dist/chunk-P2YM67Y5.cjs.map +0 -1
  317. package/dist/chunk-P6RIBIVN.js.map +0 -1
  318. package/dist/chunk-Q7CQYYZW.cjs.map +0 -1
  319. package/dist/chunk-QJFJ5JBF.cjs +0 -2838
  320. package/dist/chunk-QJFJ5JBF.cjs.map +0 -1
  321. package/dist/chunk-RATEAOKT.js.map +0 -1
  322. package/dist/chunk-SDOEHEJP.js.map +0 -1
  323. package/dist/chunk-SZSJGZSO.js.map +0 -1
  324. package/dist/chunk-TC3RQNEX.cjs.map +0 -1
  325. package/dist/chunk-TF7HN5EU.js.map +0 -1
  326. package/dist/chunk-VF5EUAIV.js.map +0 -1
  327. package/dist/chunk-VTTZZ4FN.js.map +0 -1
  328. package/dist/chunk-WK6FVIF7.js +0 -654
  329. package/dist/chunk-WK6FVIF7.js.map +0 -1
  330. package/dist/chunk-YF3QUHKN.cjs.map +0 -1
  331. package/dist/connection/ArbiAppProvider.d.ts +0 -16
  332. package/dist/connection/files/support.d.ts +0 -40
  333. package/dist/files/tags/DocTagPopover.d.ts +0 -113
  334. package/dist/files/tags/TagManager.d.ts +0 -54
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/CollectionDetail.tsx","../src/components/Chart.tsx","../src/components/editorial/Eyebrow.tsx","../src/components/editorial/EditorialHeading.tsx","../src/components/editorial/EditorialHero.tsx","../src/components/editorial/EditorialSection.tsx","../src/components/editorial/lists.tsx","../src/components/editorial/Reveal.tsx","../src/components/editorial/PanelGrid.tsx","../src/components/editorial/PullQuote.tsx","../src/components/editorial/ArticleList.tsx","../src/components/editorial/Bands.tsx"],"names":["jsx","Fragment","useMemo","jsxs","cn","useEditorialTone","formatIndex","EditorialToneContext","Check","useRef","useState","useEffect","ArrowUpRight","BlockLink","COLS","BlockImage"],"mappings":"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","file":"chunk-ECW2R2KF.cjs","sourcesContent":["import type { ReactNode } from 'react'\n\nexport interface CollectionDetailContext<T> {\n previous?: T\n next?: T\n}\n\nexport interface CollectionDetailProps<T> {\n /** The collection, supplied by the host (CMS, files, API...). */\n items: T[]\n /** The slug from the host's route. Absent: the list is rendered. */\n slug?: string\n getSlug: (item: T) => string\n renderList: (items: T[]) => ReactNode\n /** One item's page. `previous` / `next` are the neighbours in `items` order. */\n renderDetail: (item: T, context: CollectionDetailContext<T>) => ReactNode\n /** Shown when `slug` matches nothing. */\n renderNotFound?: (slug: string) => ReactNode\n}\n\n/**\n * The list-and-detail page contract for a collection (people, articles, services...). It owns\n * only the slug lookup; the host owns the route, the data and every pixel of both views, so one\n * route (`/things/:slug?`) serves the list and each detail page.\n */\nexport function CollectionDetail<T>({\n items,\n slug,\n getSlug,\n renderList,\n renderDetail,\n renderNotFound,\n}: CollectionDetailProps<T>) {\n if (!slug) return <>{renderList(items)}</>\n const index = items.findIndex((item) => getSlug(item) === slug)\n if (index === -1) {\n return (\n <>\n {renderNotFound ? (\n renderNotFound(slug)\n ) : (\n <p role=\"status\" data-slot=\"collection-not-found\">\n Not found\n </p>\n )}\n </>\n )\n }\n return <>{renderDetail(items[index], { previous: items[index - 1], next: items[index + 1] })}</>\n}\n","import { useMemo } from 'react'\nimport { cn } from '@arbidocs/react/ui'\n\nexport interface ChartSeries {\n key: string\n /** Legend text (defaults to `key`). */\n label?: string\n /** One value per entry of `labels`. */\n values: number[]\n}\n\nexport interface ChartProps {\n type: 'bar' | 'line' | 'pie'\n /** Category (x) labels. For `pie` they name the slices of the first series. */\n labels: string[]\n series: ChartSeries[]\n /** Accessible description of the whole chart. */\n ariaLabel: string\n /** Formats values in axis ticks and slice titles. */\n formatValue?: (value: number) => string\n /** Hide the legend. */\n hideLegend?: boolean\n emptyLabel?: string\n /**\n * Longest category label drawn on the x axis, in characters; longer labels are cut with an\n * ellipsis and carry the full text as a `<title>`. Default: what fits the band (about 5px a\n * character), at least 3.\n */\n maxLabelChars?: number\n className?: string\n testId?: string\n}\n\nconst W = 440\nconst H = 160\nconst PAD = { top: 8, right: 8, bottom: 22, left: 40 }\n\n/** Series colours come from the `--chart-1..5` theme tokens, so charts follow the host theme. */\nconst color = (i: number) => `hsl(var(--chart-${(i % 5) + 1}))`\n\n/** Cut `label` to `max` characters with an ellipsis (the full text stays in a `<title>`). */\nexport function truncateLabel(label: string, max: number): string {\n const chars = Array.from(label)\n return chars.length <= max\n ? label\n : `${chars\n .slice(0, Math.max(1, max - 1))\n .join('')\n .trimEnd()}…`\n}\n\nconst defaultFormat = (v: number) => (v >= 1000 ? `${Math.round(v / 100) / 10}k` : String(v))\n\nfunction polar(cx: number, cy: number, r: number, angle: number): [number, number] {\n return [cx + r * Math.sin(angle), cy - r * Math.cos(angle)]\n}\n\n/**\n * Data-bound bar, line or pie chart in plain SVG. No chart library: it renders from props,\n * is themed by tokens and carries a text alternative (`ariaLabel`, slice and bar `<title>`s).\n */\nexport function Chart({\n type,\n labels,\n series,\n ariaLabel,\n formatValue = defaultFormat,\n hideLegend = false,\n emptyLabel = 'No data',\n maxLabelChars,\n className,\n testId,\n}: ChartProps) {\n const max = useMemo(() => Math.max(...series.flatMap((s) => s.values), 1), [series])\n if (!labels.length || !series.length) {\n return <p className=\"text-sm text-muted-foreground\">{emptyLabel}</p>\n }\n\n const legendItems =\n type === 'pie'\n ? labels.map((label, i) => ({ label, color: color(i) }))\n : series.map((s, i) => ({ label: s.label ?? s.key, color: color(i) }))\n\n let body\n if (type === 'pie') {\n const values = series[0].values\n const total = values.reduce((a, b) => a + Math.max(b, 0), 0)\n const cx = 80\n const cy = 80\n const r = 72\n let angle = 0\n body = (\n <svg viewBox=\"0 0 160 160\" className=\"mx-auto h-40 w-40\" role=\"img\" aria-label={ariaLabel}>\n {total > 0 &&\n values.map((v, i) => {\n const sweep = (Math.max(v, 0) / total) * Math.PI * 2\n if (sweep === 0) return null\n const title = `${labels[i]}: ${formatValue(v)}`\n if (sweep >= Math.PI * 2 - 1e-6) {\n return (\n <circle key={i} cx={cx} cy={cy} r={r} fill={color(i)}>\n <title>{title}</title>\n </circle>\n )\n }\n const [x1, y1] = polar(cx, cy, r, angle)\n const [x2, y2] = polar(cx, cy, r, angle + sweep)\n const d = `M${cx},${cy} L${x1},${y1} A${r},${r} 0 ${sweep > Math.PI ? 1 : 0} 1 ${x2},${y2} Z`\n angle += sweep\n return (\n <path key={i} d={d} fill={color(i)}>\n <title>{title}</title>\n </path>\n )\n })}\n </svg>\n )\n } else {\n const plotW = W - PAD.left - PAD.right\n const plotH = H - PAD.top - PAD.bottom\n const y = (v: number) => PAD.top + plotH - (v / max) * plotH\n const band = plotW / labels.length\n const xCenter = (i: number) => PAD.left + band * i + band / 2\n const maxChars = maxLabelChars ?? Math.max(3, Math.floor((band - 4) / 5))\n body = (\n <svg viewBox={`0 0 ${W} ${H}`} className=\"h-auto w-full\" role=\"img\" aria-label={ariaLabel}>\n {[0, max / 2, max].map((v) => (\n <g key={v}>\n <line\n x1={PAD.left}\n x2={W - PAD.right}\n y1={y(v)}\n y2={y(v)}\n className=\"stroke-border\"\n strokeDasharray=\"2,2\"\n />\n <text\n x={PAD.left - 4}\n y={y(v) + 3}\n textAnchor=\"end\"\n className=\"fill-muted-foreground text-[9px]\"\n >\n {formatValue(v)}\n </text>\n </g>\n ))}\n {labels.map((label, i) => (\n <text\n key={i}\n x={xCenter(i)}\n y={H - 6}\n textAnchor=\"middle\"\n className=\"fill-muted-foreground text-[9px]\"\n >\n {truncateLabel(label, maxChars)}\n {Array.from(label).length > maxChars && <title>{label}</title>}\n </text>\n ))}\n {type === 'bar' &&\n series.map((s, si) => {\n const barW = (band * 0.7) / series.length\n return s.values.map((v, i) => (\n <rect\n key={`${s.key}-${i}`}\n x={xCenter(i) - (band * 0.7) / 2 + si * barW}\n y={y(v)}\n width={barW}\n height={PAD.top + plotH - y(v)}\n fill={color(si)}\n rx={1.5}\n >\n <title>{`${labels[i]} ${s.label ?? s.key}: ${formatValue(v)}`}</title>\n </rect>\n ))\n })}\n {type === 'line' &&\n series.map((s, si) => (\n <g key={s.key}>\n <polyline\n fill=\"none\"\n stroke={color(si)}\n strokeWidth={2}\n points={s.values.map((v, i) => `${xCenter(i)},${y(v)}`).join(' ')}\n />\n {s.values.map((v, i) => (\n <circle key={i} cx={xCenter(i)} cy={y(v)} r={2.5} fill={color(si)}>\n <title>{`${labels[i]} ${s.label ?? s.key}: ${formatValue(v)}`}</title>\n </circle>\n ))}\n </g>\n ))}\n </svg>\n )\n }\n\n return (\n <figure\n className={cn('flex min-w-0 max-w-full flex-col gap-2', className)}\n data-slot=\"chart\"\n data-type={type}\n data-testid={testId}\n >\n {body}\n {!hideLegend && (\n <figcaption className=\"flex flex-wrap justify-center gap-x-4 gap-y-1 text-xs text-muted-foreground\">\n {legendItems.map((item) => (\n <span key={item.label} className=\"inline-flex items-center gap-1.5\">\n <span\n aria-hidden=\"true\"\n className=\"inline-block size-2 rounded-full\"\n style={{ background: item.color }}\n />\n {item.label}\n </span>\n ))}\n </figcaption>\n )}\n </figure>\n )\n}\n","import type { ReactNode } from 'react'\nimport { cn } from '@arbidocs/react/ui'\nimport { formatIndex, useEditorialTone, type EditorialTone } from './tone'\n\nexport interface EyebrowProps {\n children: ReactNode\n /** A number or label before the text: `1` renders `01`. */\n index?: number | string\n /** A short accent rule before the text. */\n rule?: boolean\n tone?: EditorialTone\n className?: string\n testId?: string\n}\n\n/** Small uppercase label above a heading: optional index and accent rule. */\nexport function Eyebrow({ children, index, rule = false, tone, className, testId }: EyebrowProps) {\n const t = useEditorialTone(tone)\n return (\n <p\n className={cn(\n 'flex items-center gap-3 text-xs font-semibold uppercase tracking-wider',\n t.subtle,\n className\n )}\n data-slot=\"eyebrow\"\n data-testid={testId}\n >\n {rule && <span aria-hidden=\"true\" className=\"h-px w-8 shrink-0 bg-primary\" />}\n {index !== undefined && (\n <span className={cn('tabular-nums', t.accent)}>{formatIndex(index)}</span>\n )}\n <span>{children}</span>\n </p>\n )\n}\n","import type { ReactNode } from 'react'\nimport { cn } from '@arbidocs/react/ui'\nimport { Eyebrow } from './Eyebrow'\nimport { useEditorialTone, type EditorialTone } from './tone'\n\nexport interface EditorialHeadingProps {\n eyebrow?: ReactNode\n /** Section number or label shown with the eyebrow. */\n index?: number | string\n title: ReactNode\n lead?: ReactNode\n /** Heading element level (default 2). */\n level?: 1 | 2 | 3\n align?: 'start' | 'center'\n tone?: EditorialTone\n className?: string\n testId?: string\n}\n\n/** Section heading: numbered or labelled eyebrow, display title and lead. */\nexport function EditorialHeading({\n eyebrow,\n index,\n title,\n lead,\n level = 2,\n align = 'start',\n tone,\n className,\n testId,\n}: EditorialHeadingProps) {\n const t = useEditorialTone(tone)\n const Heading = `h${level}` as 'h1' | 'h2' | 'h3'\n return (\n <div\n className={cn('max-w-3xl', align === 'center' && 'mx-auto text-center', className)}\n data-slot=\"editorial-heading\"\n data-testid={testId}\n >\n {(eyebrow || index !== undefined) && (\n <Eyebrow\n index={index}\n tone={tone}\n className={cn('mb-4', align === 'center' && 'justify-center')}\n >\n {eyebrow}\n </Eyebrow>\n )}\n <Heading\n className={cn(\n 'font-display text-3xl font-semibold tracking-tight text-balance sm:text-4xl',\n t.text\n )}\n >\n {title}\n </Heading>\n {lead && <p className={cn('mt-4 text-lg leading-relaxed', t.muted)}>{lead}</p>}\n </div>\n )\n}\n","import type { ReactNode } from 'react'\nimport { cn } from '@arbidocs/react/ui'\nimport { Eyebrow } from './Eyebrow'\nimport { EditorialToneContext, useEditorialTone, type EditorialTone } from './tone'\n\nexport type EditorialSurface = 'plain' | 'muted' | 'inverse'\n\nexport interface EditorialHeroTestIds {\n root: string\n eyebrow: string\n title: string\n lede: string\n actions: string\n aside: string\n}\n\nexport interface EditorialHeroProps {\n eyebrow?: ReactNode\n /** Show the accent rule before the eyebrow. */\n eyebrowRule?: boolean\n /** The headline: text or any node. */\n title: ReactNode\n /** A phrase inside a string `title` set in the italic accent. */\n emphasis?: string\n /** The paragraph under the headline. */\n lede?: ReactNode\n /** Buttons or links under the lede. */\n actions?: ReactNode\n /** Anything under the actions (badges, a trust line). */\n footer?: ReactNode\n /** The figure beside (below on phones) the copy: an image frame, a card, a media slot. */\n aside?: ReactNode\n /** Decoration behind the copy (texture, wash, background image). Hidden from assistive tech. */\n backdrop?: ReactNode\n /** `start` copy, or `center` (no aside). */\n align?: 'start' | 'center'\n /** `page`: a page-opening header band. `cover`: the larger home-page hero. */\n size?: 'page' | 'cover'\n surface?: EditorialSurface\n className?: string\n testId?: string\n testIds?: Partial<EditorialHeroTestIds>\n}\n\nexport const SURFACE_CLASS: Record<EditorialSurface, string> = {\n plain: 'bg-background text-foreground',\n muted: 'bg-muted text-foreground',\n inverse: 'bg-foreground text-background',\n}\n\nexport const SURFACE_TONE: Record<EditorialSurface, EditorialTone> = {\n plain: 'default',\n muted: 'default',\n inverse: 'inverse',\n}\n\nfunction renderTitle(title: ReactNode, emphasis?: string): ReactNode {\n if (typeof title !== 'string' || !emphasis || !title.includes(emphasis)) return title\n const parts = title.split(emphasis)\n return parts.map((part, i) => (\n <span key={i}>\n {part}\n {i < parts.length - 1 && <em className=\"italic text-primary\">{emphasis}</em>}\n </span>\n ))\n}\n\n/**\n * Editorial opening band: eyebrow, display headline with an italic accent phrase, lede, actions\n * and an optional aside (image, card). Covers a page header (no aside, `size=\"page\"`), a split\n * hero (aside) and a centred landing hero (`align=\"center\"`, `size=\"cover\"`).\n */\nexport function EditorialHero({\n eyebrow,\n eyebrowRule = false,\n title,\n emphasis,\n lede,\n actions,\n footer,\n aside,\n backdrop,\n align = 'start',\n size = 'page',\n surface = 'plain',\n className,\n testId,\n testIds,\n}: EditorialHeroProps) {\n const tone = SURFACE_TONE[surface]\n const t = useEditorialTone(tone)\n const centered = align === 'center' && !aside\n const ids = {\n root: testIds?.root ?? testId,\n eyebrow: testIds?.eyebrow ?? (testId ? `${testId}-eyebrow` : undefined),\n title: testIds?.title ?? (testId ? `${testId}-title` : undefined),\n lede: testIds?.lede ?? (testId ? `${testId}-lede` : undefined),\n actions: testIds?.actions ?? (testId ? `${testId}-actions` : undefined),\n aside: testIds?.aside ?? (testId ? `${testId}-aside` : undefined),\n }\n return (\n <EditorialToneContext.Provider value={tone}>\n <section\n className={cn('relative isolate overflow-hidden', SURFACE_CLASS[surface], className)}\n data-slot=\"editorial-hero\"\n data-size={size}\n data-testid={ids.root}\n >\n {backdrop && (\n <div aria-hidden=\"true\" className=\"pointer-events-none absolute inset-0 -z-10\">\n {backdrop}\n </div>\n )}\n <div\n className={cn(\n 'mx-auto max-w-7xl px-5 lg:px-8',\n size === 'cover' ? 'py-16 lg:py-28' : 'py-14 lg:py-24',\n aside && 'grid items-center gap-12 lg:grid-cols-[1.02fr_0.98fr] lg:gap-14'\n )}\n >\n <div className={cn('max-w-3xl', centered && 'mx-auto text-center')}>\n {eyebrow && (\n <Eyebrow\n rule={eyebrowRule}\n tone={tone}\n className={cn('mb-6', centered && 'justify-center')}\n testId={ids.eyebrow}\n >\n {eyebrow}\n </Eyebrow>\n )}\n <h1\n className={cn(\n 'font-display font-semibold tracking-tight text-balance',\n size === 'cover'\n ? 'text-[2.6rem] leading-[1.03] sm:text-6xl lg:text-[4.4rem]'\n : 'text-4xl leading-[1.05] sm:text-5xl',\n t.text\n )}\n data-testid={ids.title}\n >\n {renderTitle(title, emphasis)}\n </h1>\n {lede && (\n <p\n className={cn(\n 'mt-6 max-w-2xl text-lg leading-relaxed',\n centered && 'mx-auto',\n t.muted\n )}\n data-testid={ids.lede}\n >\n {lede}\n </p>\n )}\n {actions && (\n <div\n className={cn(\n 'mt-8 flex flex-col gap-3 sm:flex-row',\n centered && 'sm:justify-center'\n )}\n data-testid={ids.actions}\n >\n {actions}\n </div>\n )}\n {footer && (\n <div className={cn('mt-8', centered && 'flex justify-center')}>{footer}</div>\n )}\n </div>\n {aside && (\n <div\n className=\"relative min-w-0\"\n data-slot=\"editorial-hero-aside\"\n data-testid={ids.aside}\n >\n {aside}\n </div>\n )}\n </div>\n </section>\n </EditorialToneContext.Provider>\n )\n}\n","import type { ReactNode } from 'react'\nimport { cn } from '@arbidocs/react/ui'\nimport { EditorialHeading } from './EditorialHeading'\nimport { SURFACE_CLASS, SURFACE_TONE, type EditorialSurface } from './EditorialHero'\nimport { EditorialToneContext, useEditorialTone } from './tone'\n\nexport interface EditorialSectionProps {\n id?: string\n eyebrow?: ReactNode\n /** Section number or label: `1` renders `01`. */\n index?: number | string\n title?: ReactNode\n lead?: ReactNode\n /** Sits beside the heading from `sm` up (a \"see all\" link or button). */\n action?: ReactNode\n /**\n * `stacked`: heading above the content. `split`: heading column beside the content from `lg`.\n * `split-wide`: the same with a wider content column.\n */\n layout?: 'stacked' | 'split' | 'split-wide'\n /** `plain`, `muted` (tinted band) or `inverse` (dark band on a light theme). */\n surface?: EditorialSurface\n /** Hairline above and below the band. */\n bordered?: boolean\n /** Vertical rhythm. */\n spacing?: 'md' | 'lg'\n /** Backdrop behind the content (texture, image), hidden from assistive tech. */\n backdrop?: ReactNode\n /** Accessible name when there is no `title`. */\n 'aria-label'?: string\n children?: ReactNode\n className?: string\n testId?: string\n}\n\n/**\n * A page band: numbered or labelled heading, optional action, and content stacked below or in a\n * second column. Sets the tone for the parts inside it, so the same list or panel grid reads on\n * a plain, tinted or inverse band.\n */\nexport function EditorialSection({\n id,\n eyebrow,\n index,\n title,\n lead,\n action,\n layout = 'stacked',\n surface = 'plain',\n bordered = false,\n spacing = 'lg',\n backdrop,\n 'aria-label': ariaLabel,\n children,\n className,\n testId,\n}: EditorialSectionProps) {\n const tone = SURFACE_TONE[surface]\n const t = useEditorialTone(tone)\n const hasHeading = Boolean(title || eyebrow || index !== undefined)\n const heading =\n hasHeading && title ? (\n <EditorialHeading eyebrow={eyebrow} index={index} title={title} lead={lead} tone={tone} />\n ) : null\n const split = layout !== 'stacked'\n return (\n <EditorialToneContext.Provider value={tone}>\n <section\n id={id}\n aria-label={title ? undefined : ariaLabel}\n className={cn(\n 'relative isolate overflow-hidden scroll-mt-24',\n SURFACE_CLASS[surface],\n bordered && cn('border-y', t.hairline),\n className\n )}\n data-slot=\"editorial-section\"\n data-testid={testId}\n >\n {backdrop && (\n <div aria-hidden=\"true\" className=\"pointer-events-none absolute inset-0 -z-10\">\n {backdrop}\n </div>\n )}\n <div\n className={cn(\n 'mx-auto max-w-7xl px-5 lg:px-8',\n spacing === 'lg' ? 'py-16 lg:py-24' : 'py-12 lg:py-16',\n split &&\n cn(\n 'grid gap-10 lg:gap-16',\n layout === 'split-wide' ? 'lg:grid-cols-[1fr_1.4fr]' : 'lg:grid-cols-2'\n )\n )}\n >\n {split ? (\n <>\n {heading && <div>{heading}</div>}\n <div className=\"min-w-0\">{children}</div>\n </>\n ) : (\n <>\n {heading && (\n <div className=\"flex flex-col justify-between gap-6 sm:flex-row sm:items-end\">\n {heading}\n {action && <div className=\"shrink-0\">{action}</div>}\n </div>\n )}\n {children && <div className={cn(heading && 'mt-12 lg:mt-14')}>{children}</div>}\n </>\n )}\n </div>\n </section>\n </EditorialToneContext.Provider>\n )\n}\n\nexport interface EditorialProseProps {\n /** One entry per paragraph. */\n paragraphs: ReactNode[]\n /** Two columns from `md` up (paragraphs never split across columns). */\n columns?: 1 | 2\n size?: 'base' | 'lg'\n className?: string\n testId?: string\n}\n\n/** Long-form paragraphs set at a readable measure, in one or two columns. */\nexport function EditorialProse({\n paragraphs,\n columns = 1,\n size = 'base',\n className,\n testId,\n}: EditorialProseProps) {\n const t = useEditorialTone()\n return (\n <div\n className={cn(\n size === 'lg' ? 'text-lg' : 'text-base',\n 'leading-relaxed',\n t.muted,\n columns === 2 ? 'gap-10 md:columns-2' : 'max-w-prose',\n className\n )}\n data-slot=\"editorial-prose\"\n data-testid={testId}\n >\n {paragraphs.map((p, i) => (\n <p key={i} className={cn(columns === 2 ? 'mb-5 break-inside-avoid' : 'mt-5 first:mt-0')}>\n {p}\n </p>\n ))}\n </div>\n )\n}\n","import type { ReactNode } from 'react'\nimport { Check } from 'lucide-react'\nimport { cn } from '@arbidocs/react/ui'\nimport { useEditorialTone } from './tone'\n\nexport interface DefinitionItem {\n term: ReactNode\n description: ReactNode\n /** A leading icon; without one the `dot` marker is used when `marker=\"dot\"`. */\n icon?: ReactNode\n testId?: string\n}\n\nexport interface DefinitionListProps {\n items: DefinitionItem[]\n /**\n * `rows`: each entry is a lifted row with a marker. `ruled`: a spec sheet, term and description\n * side by side between hairlines.\n */\n layout?: 'rows' | 'ruled'\n /** Marker of an entry with no `icon` in the `rows` layout. */\n marker?: 'dot' | 'none'\n className?: string\n testId?: string\n}\n\n/** Term and description pairs (`<dl>`): feature rows, a spec sheet, a definition list. */\nexport function DefinitionList({\n items,\n layout = 'rows',\n marker = 'dot',\n className,\n testId,\n}: DefinitionListProps) {\n const t = useEditorialTone()\n return (\n <dl\n className={cn(layout === 'rows' ? 'space-y-3' : 'divide-y', t.hairline, className)}\n data-slot=\"definition-list\"\n data-layout={layout}\n data-testid={testId}\n >\n {items.map((item, i) =>\n layout === 'rows' ? (\n <div\n key={i}\n className={cn(\n 'flex gap-4 rounded-sm border p-5 transition-colors',\n t.panel,\n t.panelHover\n )}\n data-testid={item.testId ?? (testId ? `${testId}-item-${i}` : undefined)}\n >\n {item.icon ? (\n <span\n className={cn(\n 'flex size-9 shrink-0 items-center justify-center rounded-sm border',\n t.tile\n )}\n aria-hidden=\"true\"\n >\n {item.icon}\n </span>\n ) : (\n marker === 'dot' && (\n <span aria-hidden=\"true\" className=\"mt-2 size-2 shrink-0 rounded-full bg-primary\" />\n )\n )}\n <div className=\"min-w-0\">\n <dt className=\"font-medium\">{item.term}</dt>\n <dd className={cn('mt-0.5 text-sm', t.muted)}>{item.description}</dd>\n </div>\n </div>\n ) : (\n <div\n key={i}\n className=\"grid gap-1 py-4 sm:grid-cols-[minmax(0,1fr)_minmax(0,2fr)] sm:gap-8\"\n data-testid={item.testId ?? (testId ? `${testId}-item-${i}` : undefined)}\n >\n <dt className=\"font-medium\">{item.term}</dt>\n <dd className={cn('text-sm leading-relaxed', t.muted)}>{item.description}</dd>\n </div>\n )\n )}\n </dl>\n )\n}\n\nexport interface CheckListProps {\n items: ReactNode[]\n /** Two columns from `sm` up. */\n columns?: 1 | 2\n /** Replaces the check mark. */\n icon?: ReactNode\n className?: string\n testId?: string\n}\n\n/** A list of points, each with a ringed check mark. */\nexport function CheckList({ items, columns = 1, icon, className, testId }: CheckListProps) {\n const t = useEditorialTone()\n return (\n <ul\n className={cn(columns === 2 ? 'grid gap-4 sm:grid-cols-2' : 'space-y-3', className)}\n data-slot=\"check-list\"\n data-testid={testId}\n >\n {items.map((item, i) => (\n <li\n key={i}\n className={cn('flex items-start gap-3 text-sm leading-relaxed', t.muted)}\n data-testid={testId ? `${testId}-item-${i}` : undefined}\n >\n <span\n aria-hidden=\"true\"\n className={cn(\n 'mt-0.5 flex size-5 shrink-0 items-center justify-center rounded-full border',\n t.tile\n )}\n >\n {icon ?? <Check className=\"size-3\" />}\n </span>\n <span>{item}</span>\n </li>\n ))}\n </ul>\n )\n}\n\nexport interface TagListProps {\n items: string[]\n /** Accessible name of the list. */\n label?: string\n className?: string\n testId?: string\n}\n\n/** Small bordered chips: sectors, focus areas, topics. */\nexport function TagList({ items, label, className, testId }: TagListProps) {\n const t = useEditorialTone()\n if (items.length === 0) return null\n return (\n <ul\n aria-label={label}\n className={cn('flex flex-wrap gap-1.5', className)}\n data-slot=\"tag-list\"\n data-testid={testId}\n >\n {items.map((tag) => (\n <li key={tag} className={cn('rounded-sm border px-2 py-0.5 text-[11px]', t.chip)}>\n {tag}\n </li>\n ))}\n </ul>\n )\n}\n","import { useEffect, useRef, useState, type CSSProperties, type ReactNode } from 'react'\nimport { cn } from '@arbidocs/react/ui'\n\nexport interface RevealProps {\n children: ReactNode\n /** Delay in ms before the reveal starts (stagger siblings with `index * 90`). */\n delay?: number\n className?: string\n testId?: string\n}\n\n/**\n * Fade-and-rise on first scroll into view. Content is fully visible until the part has mounted\n * and found an `IntersectionObserver`, so server rendering, no-JS and jsdom show everything; the\n * hidden state and transition live in `blocks.css` (`[data-reveal]`) and collapse under\n * `prefers-reduced-motion`.\n */\nexport function Reveal({ children, delay = 0, className, testId }: RevealProps) {\n const ref = useRef<HTMLDivElement>(null)\n const [state, setState] = useState<'idle' | 'pending' | 'shown'>('idle')\n\n useEffect(() => {\n const el = ref.current\n if (!el || typeof IntersectionObserver === 'undefined') return\n setState('pending')\n const io = new IntersectionObserver(\n (entries) => {\n if (entries.some((e) => e.isIntersecting)) {\n setState('shown')\n io.disconnect()\n }\n },\n { rootMargin: '0px 0px -90px 0px' }\n )\n io.observe(el)\n return () => io.disconnect()\n }, [])\n\n return (\n <div\n ref={ref}\n data-slot=\"reveal\"\n data-reveal={state === 'idle' ? undefined : state}\n style={delay ? ({ '--reveal-delay': `${delay}ms` } as CSSProperties) : undefined}\n className={cn(className)}\n data-testid={testId}\n >\n {children}\n </div>\n )\n}\n","import type { ReactNode } from 'react'\nimport { ArrowUpRight } from 'lucide-react'\nimport { cn } from '@arbidocs/react/ui'\nimport { BlockLink, type BlockLinkComponent } from '../blockLink'\nimport { CheckList, TagList } from './lists'\nimport { Reveal } from './Reveal'\nimport { EditorialToneContext, formatIndex, useEditorialTone, type EditorialTone } from './tone'\n\nexport interface PanelItem {\n title: ReactNode\n body?: ReactNode\n /** Icon in a bordered tile. */\n icon?: ReactNode\n /** Explicit number or label; with `numbered` on the grid it defaults to the position. */\n index?: number | string\n /** A small label above the title (category). */\n kicker?: ReactNode\n /** Bulleted points under the body. */\n points?: ReactNode[]\n /** Chips at the foot. */\n tags?: string[]\n /** Anything at the foot (a meta line, a link). */\n footer?: ReactNode\n /** Makes the whole panel a link. */\n href?: string\n testId?: string\n}\n\nexport interface PanelGridProps {\n items: PanelItem[]\n columns?: 2 | 3 | 4\n /** `cards`: separate bordered panels. `joined`: one hairline-ruled table of cells. */\n variant?: 'cards' | 'joined'\n /** Number the panels 01, 02, ... */\n numbered?: boolean\n /** Fade each panel in on scroll, staggered. */\n reveal?: boolean\n /** Router link for panels with an `href`. */\n linkComponent?: BlockLinkComponent\n /** Heading level of the panel titles (default 3). */\n headingLevel?: 2 | 3 | 4\n tone?: EditorialTone\n className?: string\n testId?: string\n}\n\nconst COLS: Record<2 | 3 | 4, string> = {\n 2: 'sm:grid-cols-2',\n 3: 'sm:grid-cols-2 lg:grid-cols-3',\n 4: 'sm:grid-cols-2 lg:grid-cols-4',\n}\n\n/**\n * Icon, title and body panels: principles, process steps, capability cards, security pillars,\n * practice areas. Cards or a joined hairline table, optional numbers, bullet points, chips and\n * a link per panel.\n */\nexport function PanelGrid({\n items,\n columns = 3,\n variant = 'cards',\n numbered = false,\n reveal = false,\n linkComponent,\n headingLevel = 3,\n tone,\n className,\n testId,\n}: PanelGridProps) {\n const t = useEditorialTone(tone)\n const Heading = `h${headingLevel}` as 'h2' | 'h3' | 'h4'\n const joined = variant === 'joined'\n return (\n <EditorialToneContext.Provider value={t.tone}>\n <ul\n className={cn(\n 'grid',\n joined ? cn('gap-px overflow-hidden rounded-sm border', t.hairline) : 'gap-4',\n joined && (t.tone === 'inverse' ? 'bg-background/15' : 'bg-border'),\n COLS[columns] ?? COLS[3],\n className\n )}\n data-slot=\"panel-grid\"\n data-variant={variant}\n data-testid={testId}\n >\n {items.map((item, i) => {\n const number = item.index ?? (numbered ? i + 1 : undefined)\n const inner = (\n <div\n className={cn(\n 'group flex h-full flex-col p-6 transition-colors duration-300',\n joined\n ? cn(\n t.tone === 'inverse' ? 'bg-foreground' : 'bg-background',\n item.href && 'hover:bg-muted/40'\n )\n : cn('rounded-sm border', t.panel, item.href && t.panelHover)\n )}\n data-testid={item.testId ?? (testId ? `${testId}-item-${i}` : undefined)}\n >\n {(item.icon || number !== undefined || item.href) && (\n <div className=\"flex items-start justify-between gap-4\">\n {item.icon ? (\n <span\n aria-hidden=\"true\"\n className={cn(\n 'flex size-11 items-center justify-center rounded-sm border',\n t.tile\n )}\n >\n {item.icon}\n </span>\n ) : (\n <span />\n )}\n {number !== undefined ? (\n <span className={cn('font-display text-sm tabular-nums', t.subtle)}>\n {formatIndex(number)}\n </span>\n ) : (\n item.href && (\n <ArrowUpRight\n aria-hidden=\"true\"\n className={cn(\n 'size-4 transition-colors group-hover:text-primary',\n t.subtle\n )}\n />\n )\n )}\n </div>\n )}\n {item.kicker && (\n <p\n className={cn(\n 'text-xs font-semibold uppercase tracking-wider',\n item.icon || number !== undefined ? 'mt-5' : '',\n t.accent\n )}\n >\n {item.kicker}\n </p>\n )}\n <Heading\n className={cn(\n 'font-display text-lg font-semibold leading-snug',\n item.icon || number !== undefined || item.kicker ? 'mt-4' : '',\n t.text\n )}\n >\n {item.title}\n </Heading>\n {item.body && (\n <div className={cn('mt-2 text-sm leading-relaxed', t.muted)}>{item.body}</div>\n )}\n {item.points && item.points.length > 0 && (\n <CheckList\n items={item.points}\n className={cn('mt-4 space-y-2 border-t pt-4', t.hairline)}\n />\n )}\n {item.tags && item.tags.length > 0 && (\n <TagList items={item.tags} className=\"mt-auto pt-5\" />\n )}\n {item.footer && (\n <div className={cn('mt-auto pt-5 text-xs', t.subtle)}>{item.footer}</div>\n )}\n </div>\n )\n const cell = (\n <BlockLink href={item.href} linkComponent={linkComponent} className=\"block h-full\">\n {inner}\n </BlockLink>\n )\n return (\n <li key={i} className=\"min-w-0\">\n {reveal ? (\n <Reveal delay={i * 90} className=\"h-full\">\n {cell}\n </Reveal>\n ) : (\n cell\n )}\n </li>\n )\n })}\n </ul>\n </EditorialToneContext.Provider>\n )\n}\n","import type { ReactNode } from 'react'\nimport { cn } from '@arbidocs/react/ui'\nimport { useEditorialTone } from './tone'\n\nexport interface PullQuoteProps {\n quote: ReactNode\n /** Who said it. */\n attribution?: { name: ReactNode; role?: ReactNode }\n /** Link to the source. */\n cite?: string\n align?: 'start' | 'center'\n size?: 'md' | 'lg'\n className?: string\n testId?: string\n}\n\n/** A large display quotation with an accent rule and attribution. */\nexport function PullQuote({\n quote,\n attribution,\n cite,\n align = 'start',\n size = 'md',\n className,\n testId,\n}: PullQuoteProps) {\n const t = useEditorialTone()\n const centered = align === 'center'\n return (\n <figure\n className={cn(\n 'max-w-3xl',\n centered ? 'mx-auto text-center' : 'border-l-2 border-primary pl-6 lg:pl-8',\n className\n )}\n data-slot=\"pull-quote\"\n data-testid={testId}\n >\n <blockquote\n cite={cite}\n className={cn(\n 'font-display font-medium leading-snug text-balance',\n size === 'lg' ? 'text-3xl sm:text-4xl' : 'text-2xl sm:text-3xl',\n t.text\n )}\n >\n <p>{quote}</p>\n </blockquote>\n {attribution && (\n <figcaption className={cn('mt-5 text-sm', t.muted)}>\n <span className={cn('font-semibold', t.text)}>{attribution.name}</span>\n {attribution.role && <span>, {attribution.role}</span>}\n </figcaption>\n )}\n </figure>\n )\n}\n","import type { ReactNode } from 'react'\nimport { ArrowUpRight } from 'lucide-react'\nimport { cn } from '@arbidocs/react/ui'\nimport { BlockImage } from '../BlockImage'\nimport { BlockLink, type BlockLinkComponent } from '../blockLink'\nimport { useEditorialTone } from './tone'\n\nexport interface ArticleItem {\n title: ReactNode\n summary?: ReactNode\n /** Category or type, shown as an accent label. */\n kicker?: ReactNode\n /** Short facts joined with a middle dot: author, date, reading time. */\n meta?: ReactNode[]\n href?: string\n imageUrl?: string\n imageAlt?: string\n testId?: string\n}\n\nexport interface ArticleListProps {\n items: ArticleItem[]\n /**\n * `cards`: a grid of cards. `rows`: ruled rows (kicker and meta beside the title), best for an\n * archive.\n */\n layout?: 'cards' | 'rows'\n /** `cards` only: the first item is a large card beside a column of the rest from `lg`. */\n featureFirst?: boolean\n columns?: 2 | 3\n linkComponent?: BlockLinkComponent\n /** Rendered instead of the list when `items` is empty. */\n empty?: ReactNode\n className?: string\n testId?: string\n}\n\nconst COLS: Record<2 | 3, string> = {\n 2: 'md:grid-cols-2',\n 3: 'md:grid-cols-2 lg:grid-cols-3',\n}\n\n/** Insight, news or post listing: `meta` joined with a middle dot, linked cards or rows. */\nfunction MetaLine({ meta, className }: { meta?: ReactNode[]; className?: string }) {\n if (!meta || meta.length === 0) return null\n return (\n <p className={className}>\n {meta.map((m, i) => (\n <span key={i}>\n {i > 0 && <span aria-hidden=\"true\"> · </span>}\n {m}\n </span>\n ))}\n </p>\n )\n}\n\n/** Article, insight or news items as cards (optionally with a lead card) or ruled archive rows. */\nexport function ArticleList({\n items,\n layout = 'cards',\n featureFirst = false,\n columns = 3,\n linkComponent,\n empty,\n className,\n testId,\n}: ArticleListProps) {\n const t = useEditorialTone()\n if (items.length === 0) return empty ? <>{empty}</> : null\n\n const idOf = (item: ArticleItem, i: number) =>\n item.testId ?? (testId ? `${testId}-item-${i}` : undefined)\n\n if (layout === 'rows') {\n return (\n <ul\n className={cn('divide-y border-y', t.hairline, className)}\n data-slot=\"article-list\"\n data-layout=\"rows\"\n data-testid={testId}\n >\n {items.map((item, i) => (\n <li key={i}>\n <BlockLink href={item.href} linkComponent={linkComponent} className=\"group block\">\n <article\n className=\"grid gap-2 py-6 transition-colors sm:grid-cols-[10rem_minmax(0,1fr)_auto] sm:gap-8\"\n data-testid={idOf(item, i)}\n >\n <div className=\"space-y-1\">\n {item.kicker && (\n <p className={cn('text-xs font-semibold uppercase tracking-wider', t.accent)}>\n {item.kicker}\n </p>\n )}\n <MetaLine meta={item.meta} className={cn('text-xs', t.subtle)} />\n </div>\n <div className=\"min-w-0\">\n <h3\n className={cn(\n 'font-display text-xl font-semibold leading-snug transition-colors group-hover:text-primary',\n t.text\n )}\n >\n {item.title}\n </h3>\n {item.summary && (\n <p className={cn('mt-2 text-sm leading-relaxed', t.muted)}>{item.summary}</p>\n )}\n </div>\n {item.href && (\n <ArrowUpRight\n aria-hidden=\"true\"\n className={cn(\n 'hidden size-4 transition-colors group-hover:text-primary sm:block',\n t.subtle\n )}\n />\n )}\n </article>\n </BlockLink>\n </li>\n ))}\n </ul>\n )\n }\n\n const card = (item: ArticleItem, i: number, lead: boolean) => (\n <BlockLink href={item.href} linkComponent={linkComponent} className=\"group block h-full\">\n <article\n className={cn(\n 'flex h-full flex-col rounded-sm border transition-colors duration-300',\n t.panel,\n item.href && t.panelHover,\n lead ? 'p-6 lg:p-8' : 'p-6'\n )}\n data-testid={idOf(item, i)}\n >\n {item.imageUrl && (\n <BlockImage\n src={item.imageUrl}\n alt={item.imageAlt ?? ''}\n aspect=\"16:9\"\n rounded=\"none\"\n className=\"mb-5 w-full\"\n />\n )}\n <div className=\"flex items-start justify-between gap-3\">\n {item.kicker ? (\n <p className={cn('text-xs font-semibold uppercase tracking-wider', t.accent)}>\n {item.kicker}\n </p>\n ) : (\n <span />\n )}\n {item.href && (\n <ArrowUpRight\n aria-hidden=\"true\"\n className={cn('size-4 transition-colors group-hover:text-primary', t.subtle)}\n />\n )}\n </div>\n <h3\n className={cn(\n 'mt-3 font-display font-semibold leading-snug',\n lead ? 'text-2xl sm:text-3xl' : 'text-lg',\n t.text\n )}\n >\n {item.title}\n </h3>\n {item.summary && (\n <p\n className={cn(\n 'mt-3 flex-1 text-sm leading-relaxed',\n lead && 'max-w-xl text-base',\n t.muted\n )}\n >\n {item.summary}\n </p>\n )}\n <MetaLine meta={item.meta} className={cn('mt-5 text-xs', t.subtle)} />\n </article>\n </BlockLink>\n )\n\n if (featureFirst && items.length > 1) {\n const [lead, ...rest] = items\n return (\n <div\n className={cn('grid gap-5 lg:grid-cols-[1.4fr_1fr]', className)}\n data-slot=\"article-list\"\n data-layout=\"feature\"\n data-testid={testId}\n >\n <div>{card(lead, 0, true)}</div>\n <ul className=\"grid gap-5\">\n {rest.map((item, i) => (\n <li key={i}>{card(item, i + 1, false)}</li>\n ))}\n </ul>\n </div>\n )\n }\n\n return (\n <ul\n className={cn('grid gap-5', COLS[columns] ?? COLS[3], className)}\n data-slot=\"article-list\"\n data-layout=\"cards\"\n data-testid={testId}\n >\n {items.map((item, i) => (\n <li key={i}>{card(item, i, false)}</li>\n ))}\n </ul>\n )\n}\n","import type { ReactNode } from 'react'\nimport { cn } from '@arbidocs/react/ui'\nimport { SURFACE_CLASS, SURFACE_TONE, type EditorialSurface } from './EditorialHero'\nimport { EditorialToneContext, useEditorialTone } from './tone'\n\nexport interface ProofStripProps {\n /** The lead statement (an icon and a sentence). */\n lead?: ReactNode\n /** Short labels: standards, memberships, clients. */\n items: ReactNode[]\n /** Accessible name of the label list. */\n label?: string\n surface?: EditorialSurface\n className?: string\n testId?: string\n}\n\n/** A thin band of proof points: a lead statement and a row of short uppercase labels. */\nexport function ProofStrip({\n lead,\n items,\n label,\n surface = 'muted',\n className,\n testId,\n}: ProofStripProps) {\n const tone = SURFACE_TONE[surface]\n const t = useEditorialTone(tone)\n return (\n <EditorialToneContext.Provider value={tone}>\n <section\n aria-label={label}\n className={cn('border-y', t.hairline, SURFACE_CLASS[surface], className)}\n data-slot=\"proof-strip\"\n data-testid={testId}\n >\n <div className=\"mx-auto flex max-w-7xl flex-col items-center gap-5 px-5 py-6 lg:flex-row lg:justify-between lg:px-8\">\n {lead && <div className=\"flex items-center gap-2.5 text-sm font-medium\">{lead}</div>}\n <ul className=\"flex flex-wrap items-center justify-center gap-x-6 gap-y-2\">\n {items.map((item, i) => (\n <li\n key={i}\n className={cn('text-xs font-semibold uppercase tracking-wider', t.subtle)}\n >\n {item}\n </li>\n ))}\n </ul>\n </div>\n </section>\n </EditorialToneContext.Provider>\n )\n}\n\nexport interface CtaBandProps {\n title: ReactNode\n lead?: ReactNode\n /** Buttons or links. */\n actions?: ReactNode\n /** Decoration behind the copy (image, texture), hidden from assistive tech. */\n backdrop?: ReactNode\n /** Default `inverse`: a dark closing band. */\n surface?: EditorialSurface\n className?: string\n testId?: string\n}\n\n/** Closing call-to-action band: centred heading, lead and actions over an optional backdrop. */\nexport function CtaBand({\n title,\n lead,\n actions,\n backdrop,\n surface = 'inverse',\n className,\n testId,\n}: CtaBandProps) {\n const tone = SURFACE_TONE[surface]\n const t = useEditorialTone(tone)\n return (\n <EditorialToneContext.Provider value={tone}>\n <section\n className={cn('relative isolate overflow-hidden', SURFACE_CLASS[surface], className)}\n data-slot=\"cta-band\"\n data-testid={testId}\n >\n {backdrop && (\n <div aria-hidden=\"true\" className=\"pointer-events-none absolute inset-0 -z-10\">\n {backdrop}\n </div>\n )}\n <div className=\"mx-auto max-w-4xl px-5 py-20 text-center lg:px-8 lg:py-24\">\n <h2\n className={cn(\n 'font-display text-3xl font-semibold tracking-tight text-balance sm:text-4xl',\n t.text\n )}\n >\n {title}\n </h2>\n {lead && <p className={cn('mx-auto mt-4 max-w-2xl text-lg', t.muted)}>{lead}</p>}\n {actions && (\n <div className=\"mt-8 flex flex-col items-center justify-center gap-3 sm:flex-row\">\n {actions}\n </div>\n )}\n </div>\n </section>\n </EditorialToneContext.Provider>\n )\n}\n"]}
1
+ {"version":3,"sources":["../src/components/CollectionDetail.tsx","../src/components/Chart.tsx","../src/components/editorial/Eyebrow.tsx","../src/components/editorial/EditorialHeading.tsx","../src/components/editorial/EditorialHero.tsx","../src/components/editorial/EditorialSection.tsx","../src/components/editorial/lists.tsx","../src/components/editorial/Reveal.tsx","../src/components/editorial/PanelGrid.tsx","../src/components/editorial/PullQuote.tsx","../src/components/editorial/ArticleList.tsx","../src/components/editorial/Bands.tsx"],"names":["jsx","Fragment","useMemo","jsxs","cn","useEditorialTone","formatIndex","EditorialToneContext","Check","useRef","useState","useEffect","ArrowUpRight","BlockLink","COLS","BlockImage"],"mappings":"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","file":"chunk-BPL5RLNN.cjs","sourcesContent":["import type { ReactNode } from 'react'\n\nexport interface CollectionDetailContext<T> {\n previous?: T\n next?: T\n}\n\nexport interface CollectionDetailProps<T> {\n /** The collection, supplied by the host (CMS, files, API...). */\n items: T[]\n /** The slug from the host's route. Absent: the list is rendered. */\n slug?: string\n getSlug: (item: T) => string\n renderList: (items: T[]) => ReactNode\n /** One item's page. `previous` / `next` are the neighbours in `items` order. */\n renderDetail: (item: T, context: CollectionDetailContext<T>) => ReactNode\n /** Shown when `slug` matches nothing. */\n renderNotFound?: (slug: string) => ReactNode\n}\n\n/**\n * The list-and-detail page contract for a collection (people, articles, services...). It owns\n * only the slug lookup; the host owns the route, the data and every pixel of both views, so one\n * route (`/things/:slug?`) serves the list and each detail page.\n */\nexport function CollectionDetail<T>({\n items,\n slug,\n getSlug,\n renderList,\n renderDetail,\n renderNotFound,\n}: CollectionDetailProps<T>) {\n if (!slug) return <>{renderList(items)}</>\n const index = items.findIndex((item) => getSlug(item) === slug)\n if (index === -1) {\n return (\n <>\n {renderNotFound ? (\n renderNotFound(slug)\n ) : (\n <p role=\"status\" data-slot=\"collection-not-found\">\n Not found\n </p>\n )}\n </>\n )\n }\n return <>{renderDetail(items[index], { previous: items[index - 1], next: items[index + 1] })}</>\n}\n","import { useMemo } from 'react'\nimport { cn } from '@arbidocs/react/ui'\n\nexport interface ChartSeries {\n key: string\n /** Legend text (defaults to `key`). */\n label?: string\n /** One value per entry of `labels`. */\n values: number[]\n}\n\nexport interface ChartProps {\n type: 'bar' | 'line' | 'pie'\n /** Category (x) labels. For `pie` they name the slices of the first series. */\n labels: string[]\n series: ChartSeries[]\n /** Accessible description of the whole chart. */\n ariaLabel: string\n /** Formats values in axis ticks and slice titles. */\n formatValue?: (value: number) => string\n /** Hide the legend. */\n hideLegend?: boolean\n emptyLabel?: string\n /**\n * Longest category label drawn on the x axis, in characters; longer labels are cut with an\n * ellipsis and carry the full text as a `<title>`. Default: what fits the band (about 5px a\n * character), at least 3.\n */\n maxLabelChars?: number\n className?: string\n testId?: string\n}\n\nconst W = 440\nconst H = 160\nconst PAD = { top: 8, right: 8, bottom: 22, left: 40 }\n\n/** Series colours come from the `--chart-1..5` theme tokens, so charts follow the host theme. */\nconst color = (i: number) => `hsl(var(--chart-${(i % 5) + 1}))`\n\n/** Cut `label` to `max` characters with an ellipsis (the full text stays in a `<title>`). */\nexport function truncateLabel(label: string, max: number): string {\n const chars = Array.from(label)\n return chars.length <= max\n ? label\n : `${chars\n .slice(0, Math.max(1, max - 1))\n .join('')\n .trimEnd()}…`\n}\n\nconst defaultFormat = (v: number) => (v >= 1000 ? `${Math.round(v / 100) / 10}k` : String(v))\n\nfunction polar(cx: number, cy: number, r: number, angle: number): [number, number] {\n return [cx + r * Math.sin(angle), cy - r * Math.cos(angle)]\n}\n\n/**\n * Data-bound bar, line or pie chart in plain SVG. No chart library: it renders from props,\n * is themed by tokens and carries a text alternative (`ariaLabel`, slice and bar `<title>`s).\n */\nexport function Chart({\n type,\n labels,\n series,\n ariaLabel,\n formatValue = defaultFormat,\n hideLegend = false,\n emptyLabel = 'No data',\n maxLabelChars,\n className,\n testId,\n}: ChartProps) {\n const max = useMemo(() => Math.max(...series.flatMap((s) => s.values), 1), [series])\n if (!labels.length || !series.length) {\n return <p className=\"text-sm text-muted-foreground\">{emptyLabel}</p>\n }\n\n const legendItems =\n type === 'pie'\n ? labels.map((label, i) => ({ label, color: color(i) }))\n : series.map((s, i) => ({ label: s.label ?? s.key, color: color(i) }))\n\n let body\n if (type === 'pie') {\n const values = series[0].values\n const total = values.reduce((a, b) => a + Math.max(b, 0), 0)\n const cx = 80\n const cy = 80\n const r = 72\n let angle = 0\n body = (\n <svg viewBox=\"0 0 160 160\" className=\"mx-auto h-40 w-40\" role=\"img\" aria-label={ariaLabel}>\n {total > 0 &&\n values.map((v, i) => {\n const sweep = (Math.max(v, 0) / total) * Math.PI * 2\n if (sweep === 0) return null\n const title = `${labels[i]}: ${formatValue(v)}`\n if (sweep >= Math.PI * 2 - 1e-6) {\n return (\n <circle key={i} cx={cx} cy={cy} r={r} fill={color(i)}>\n <title>{title}</title>\n </circle>\n )\n }\n const [x1, y1] = polar(cx, cy, r, angle)\n const [x2, y2] = polar(cx, cy, r, angle + sweep)\n const d = `M${cx},${cy} L${x1},${y1} A${r},${r} 0 ${sweep > Math.PI ? 1 : 0} 1 ${x2},${y2} Z`\n angle += sweep\n return (\n <path key={i} d={d} fill={color(i)}>\n <title>{title}</title>\n </path>\n )\n })}\n </svg>\n )\n } else {\n const plotW = W - PAD.left - PAD.right\n const plotH = H - PAD.top - PAD.bottom\n const y = (v: number) => PAD.top + plotH - (v / max) * plotH\n const band = plotW / labels.length\n const xCenter = (i: number) => PAD.left + band * i + band / 2\n const maxChars = maxLabelChars ?? Math.max(3, Math.floor((band - 4) / 5))\n body = (\n <svg viewBox={`0 0 ${W} ${H}`} className=\"h-auto w-full\" role=\"img\" aria-label={ariaLabel}>\n {[0, max / 2, max].map((v) => (\n <g key={v}>\n <line\n x1={PAD.left}\n x2={W - PAD.right}\n y1={y(v)}\n y2={y(v)}\n className=\"stroke-border\"\n strokeDasharray=\"2,2\"\n />\n <text\n x={PAD.left - 4}\n y={y(v) + 3}\n textAnchor=\"end\"\n className=\"fill-muted-foreground text-[9px]\"\n >\n {formatValue(v)}\n </text>\n </g>\n ))}\n {labels.map((label, i) => (\n <text\n key={i}\n x={xCenter(i)}\n y={H - 6}\n textAnchor=\"middle\"\n className=\"fill-muted-foreground text-[9px]\"\n >\n {truncateLabel(label, maxChars)}\n {Array.from(label).length > maxChars && <title>{label}</title>}\n </text>\n ))}\n {type === 'bar' &&\n series.map((s, si) => {\n const barW = (band * 0.7) / series.length\n return s.values.map((v, i) => (\n <rect\n key={`${s.key}-${i}`}\n x={xCenter(i) - (band * 0.7) / 2 + si * barW}\n y={y(v)}\n width={barW}\n height={PAD.top + plotH - y(v)}\n fill={color(si)}\n rx={1.5}\n >\n <title>{`${labels[i]} ${s.label ?? s.key}: ${formatValue(v)}`}</title>\n </rect>\n ))\n })}\n {type === 'line' &&\n series.map((s, si) => (\n <g key={s.key}>\n <polyline\n fill=\"none\"\n stroke={color(si)}\n strokeWidth={2}\n points={s.values.map((v, i) => `${xCenter(i)},${y(v)}`).join(' ')}\n />\n {s.values.map((v, i) => (\n <circle key={i} cx={xCenter(i)} cy={y(v)} r={2.5} fill={color(si)}>\n <title>{`${labels[i]} ${s.label ?? s.key}: ${formatValue(v)}`}</title>\n </circle>\n ))}\n </g>\n ))}\n </svg>\n )\n }\n\n return (\n <figure\n className={cn('flex min-w-0 max-w-full flex-col gap-2', className)}\n data-slot=\"chart\"\n data-type={type}\n data-testid={testId}\n >\n {body}\n {!hideLegend && (\n <figcaption className=\"flex flex-wrap justify-center gap-x-4 gap-y-1 text-xs text-muted-foreground\">\n {legendItems.map((item) => (\n <span key={item.label} className=\"inline-flex items-center gap-1.5\">\n <span\n aria-hidden=\"true\"\n className=\"inline-block size-2 rounded-full\"\n style={{ background: item.color }}\n />\n {item.label}\n </span>\n ))}\n </figcaption>\n )}\n </figure>\n )\n}\n","import type { ReactNode } from 'react'\nimport { cn } from '@arbidocs/react/ui'\nimport { formatIndex, useEditorialTone, type EditorialTone } from './tone'\n\nexport interface EyebrowProps {\n children: ReactNode\n /** A number or label before the text: `1` renders `01`. */\n index?: number | string\n /** A short accent rule before the text. */\n rule?: boolean\n tone?: EditorialTone\n className?: string\n testId?: string\n}\n\n/** Small uppercase label above a heading: optional index and accent rule. */\nexport function Eyebrow({ children, index, rule = false, tone, className, testId }: EyebrowProps) {\n const t = useEditorialTone(tone)\n return (\n <p\n className={cn(\n 'flex items-center gap-3 text-xs font-semibold uppercase tracking-wider',\n t.subtle,\n className\n )}\n data-slot=\"eyebrow\"\n data-testid={testId}\n >\n {rule && <span aria-hidden=\"true\" className=\"h-px w-8 shrink-0 bg-primary\" />}\n {index !== undefined && (\n <span className={cn('tabular-nums', t.accent)}>{formatIndex(index)}</span>\n )}\n <span>{children}</span>\n </p>\n )\n}\n","import type { ReactNode } from 'react'\nimport { cn } from '@arbidocs/react/ui'\nimport { Eyebrow } from './Eyebrow'\nimport { useEditorialTone, type EditorialTone } from './tone'\n\nexport interface EditorialHeadingProps {\n eyebrow?: ReactNode\n /** Section number or label shown with the eyebrow. */\n index?: number | string\n title: ReactNode\n lead?: ReactNode\n /** Heading element level (default 2). */\n level?: 1 | 2 | 3\n align?: 'start' | 'center'\n tone?: EditorialTone\n className?: string\n testId?: string\n}\n\n/** Section heading: numbered or labelled eyebrow, display title and lead. */\nexport function EditorialHeading({\n eyebrow,\n index,\n title,\n lead,\n level = 2,\n align = 'start',\n tone,\n className,\n testId,\n}: EditorialHeadingProps) {\n const t = useEditorialTone(tone)\n const Heading = `h${level}` as 'h1' | 'h2' | 'h3'\n return (\n <div\n className={cn('max-w-3xl', align === 'center' && 'mx-auto text-center', className)}\n data-slot=\"editorial-heading\"\n data-testid={testId}\n >\n {(eyebrow || index !== undefined) && (\n <Eyebrow\n index={index}\n tone={tone}\n className={cn('mb-4', align === 'center' && 'justify-center')}\n >\n {eyebrow}\n </Eyebrow>\n )}\n <Heading\n className={cn(\n 'font-display text-3xl font-semibold tracking-tight text-balance sm:text-4xl',\n t.text\n )}\n >\n {title}\n </Heading>\n {lead && <p className={cn('mt-4 text-lg leading-relaxed', t.muted)}>{lead}</p>}\n </div>\n )\n}\n","import type { ReactNode } from 'react'\nimport { cn } from '@arbidocs/react/ui'\nimport { Eyebrow } from './Eyebrow'\nimport { EditorialToneContext, useEditorialTone, type EditorialTone } from './tone'\n\nexport type EditorialSurface = 'plain' | 'muted' | 'inverse'\n\nexport interface EditorialHeroTestIds {\n root: string\n eyebrow: string\n title: string\n lede: string\n actions: string\n aside: string\n}\n\nexport interface EditorialHeroProps {\n eyebrow?: ReactNode\n /** Show the accent rule before the eyebrow. */\n eyebrowRule?: boolean\n /** The headline: text or any node. */\n title: ReactNode\n /** A phrase inside a string `title` set in the italic accent. */\n emphasis?: string\n /** The paragraph under the headline. */\n lede?: ReactNode\n /** Buttons or links under the lede. */\n actions?: ReactNode\n /** Anything under the actions (badges, a trust line). */\n footer?: ReactNode\n /** The figure beside (below on phones) the copy: an image frame, a card, a media slot. */\n aside?: ReactNode\n /** Decoration behind the copy (texture, wash, background image). Hidden from assistive tech. */\n backdrop?: ReactNode\n /** `start` copy, or `center` (no aside). */\n align?: 'start' | 'center'\n /** `page`: a page-opening header band. `cover`: the larger home-page hero. */\n size?: 'page' | 'cover'\n surface?: EditorialSurface\n className?: string\n testId?: string\n testIds?: Partial<EditorialHeroTestIds>\n}\n\nexport const SURFACE_CLASS: Record<EditorialSurface, string> = {\n plain: 'bg-background text-foreground',\n muted: 'bg-muted text-foreground',\n inverse: 'bg-foreground text-background',\n}\n\nexport const SURFACE_TONE: Record<EditorialSurface, EditorialTone> = {\n plain: 'default',\n muted: 'default',\n inverse: 'inverse',\n}\n\nfunction renderTitle(title: ReactNode, emphasis?: string): ReactNode {\n if (typeof title !== 'string' || !emphasis || !title.includes(emphasis)) return title\n const parts = title.split(emphasis)\n return parts.map((part, i) => (\n <span key={i}>\n {part}\n {i < parts.length - 1 && <em className=\"italic text-primary\">{emphasis}</em>}\n </span>\n ))\n}\n\n/**\n * Editorial opening band: eyebrow, display headline with an italic accent phrase, lede, actions\n * and an optional aside (image, card). Covers a page header (no aside, `size=\"page\"`), a split\n * hero (aside) and a centred landing hero (`align=\"center\"`, `size=\"cover\"`).\n */\nexport function EditorialHero({\n eyebrow,\n eyebrowRule = false,\n title,\n emphasis,\n lede,\n actions,\n footer,\n aside,\n backdrop,\n align = 'start',\n size = 'page',\n surface = 'plain',\n className,\n testId,\n testIds,\n}: EditorialHeroProps) {\n const tone = SURFACE_TONE[surface]\n const t = useEditorialTone(tone)\n const centered = align === 'center' && !aside\n const ids = {\n root: testIds?.root ?? testId,\n eyebrow: testIds?.eyebrow ?? (testId ? `${testId}-eyebrow` : undefined),\n title: testIds?.title ?? (testId ? `${testId}-title` : undefined),\n lede: testIds?.lede ?? (testId ? `${testId}-lede` : undefined),\n actions: testIds?.actions ?? (testId ? `${testId}-actions` : undefined),\n aside: testIds?.aside ?? (testId ? `${testId}-aside` : undefined),\n }\n return (\n <EditorialToneContext.Provider value={tone}>\n <section\n className={cn('relative isolate overflow-hidden', SURFACE_CLASS[surface], className)}\n data-slot=\"editorial-hero\"\n data-size={size}\n data-testid={ids.root}\n >\n {backdrop && (\n <div aria-hidden=\"true\" className=\"pointer-events-none absolute inset-0 -z-10\">\n {backdrop}\n </div>\n )}\n <div\n className={cn(\n 'mx-auto max-w-7xl px-5 lg:px-8',\n size === 'cover' ? 'py-16 lg:py-28' : 'py-14 lg:py-24',\n aside && 'grid items-center gap-12 lg:grid-cols-[1.02fr_0.98fr] lg:gap-14'\n )}\n >\n <div className={cn('max-w-3xl', centered && 'mx-auto text-center')}>\n {eyebrow && (\n <Eyebrow\n rule={eyebrowRule}\n tone={tone}\n className={cn('mb-6', centered && 'justify-center')}\n testId={ids.eyebrow}\n >\n {eyebrow}\n </Eyebrow>\n )}\n <h1\n className={cn(\n 'font-display font-semibold tracking-tight text-balance',\n size === 'cover'\n ? 'text-[2.6rem] leading-[1.03] sm:text-6xl lg:text-[4.4rem]'\n : 'text-4xl leading-[1.05] sm:text-5xl',\n t.text\n )}\n data-testid={ids.title}\n >\n {renderTitle(title, emphasis)}\n </h1>\n {lede && (\n <p\n className={cn(\n 'mt-6 max-w-2xl text-lg leading-relaxed',\n centered && 'mx-auto',\n t.muted\n )}\n data-testid={ids.lede}\n >\n {lede}\n </p>\n )}\n {actions && (\n <div\n className={cn(\n 'mt-8 flex flex-col gap-3 sm:flex-row',\n centered && 'sm:justify-center'\n )}\n data-testid={ids.actions}\n >\n {actions}\n </div>\n )}\n {footer && (\n <div className={cn('mt-8', centered && 'flex justify-center')}>{footer}</div>\n )}\n </div>\n {aside && (\n <div\n className=\"relative min-w-0\"\n data-slot=\"editorial-hero-aside\"\n data-testid={ids.aside}\n >\n {aside}\n </div>\n )}\n </div>\n </section>\n </EditorialToneContext.Provider>\n )\n}\n","import type { ReactNode } from 'react'\nimport { cn } from '@arbidocs/react/ui'\nimport { EditorialHeading } from './EditorialHeading'\nimport { SURFACE_CLASS, SURFACE_TONE, type EditorialSurface } from './EditorialHero'\nimport { EditorialToneContext, useEditorialTone } from './tone'\n\nexport interface EditorialSectionProps {\n id?: string\n eyebrow?: ReactNode\n /** Section number or label: `1` renders `01`. */\n index?: number | string\n title?: ReactNode\n lead?: ReactNode\n /** Sits beside the heading from `sm` up (a \"see all\" link or button). */\n action?: ReactNode\n /**\n * `stacked`: heading above the content. `split`: heading column beside the content from `lg`.\n * `split-wide`: the same with a wider content column.\n */\n layout?: 'stacked' | 'split' | 'split-wide'\n /** `plain`, `muted` (tinted band) or `inverse` (dark band on a light theme). */\n surface?: EditorialSurface\n /** Hairline above and below the band. */\n bordered?: boolean\n /** Vertical rhythm. */\n spacing?: 'md' | 'lg'\n /** Backdrop behind the content (texture, image), hidden from assistive tech. */\n backdrop?: ReactNode\n /** Accessible name when there is no `title`. */\n 'aria-label'?: string\n children?: ReactNode\n className?: string\n testId?: string\n}\n\n/**\n * A page band: numbered or labelled heading, optional action, and content stacked below or in a\n * second column. Sets the tone for the parts inside it, so the same list or panel grid reads on\n * a plain, tinted or inverse band.\n */\nexport function EditorialSection({\n id,\n eyebrow,\n index,\n title,\n lead,\n action,\n layout = 'stacked',\n surface = 'plain',\n bordered = false,\n spacing = 'lg',\n backdrop,\n 'aria-label': ariaLabel,\n children,\n className,\n testId,\n}: EditorialSectionProps) {\n const tone = SURFACE_TONE[surface]\n const t = useEditorialTone(tone)\n const hasHeading = Boolean(title || eyebrow || index !== undefined)\n const heading =\n hasHeading && title ? (\n <EditorialHeading eyebrow={eyebrow} index={index} title={title} lead={lead} tone={tone} />\n ) : null\n const split = layout !== 'stacked'\n return (\n <EditorialToneContext.Provider value={tone}>\n <section\n id={id}\n aria-label={title ? undefined : ariaLabel}\n className={cn(\n 'relative isolate overflow-hidden scroll-mt-24',\n SURFACE_CLASS[surface],\n bordered && cn('border-y', t.hairline),\n className\n )}\n data-slot=\"editorial-section\"\n data-testid={testId}\n >\n {backdrop && (\n <div aria-hidden=\"true\" className=\"pointer-events-none absolute inset-0 -z-10\">\n {backdrop}\n </div>\n )}\n <div\n className={cn(\n 'mx-auto max-w-7xl px-5 lg:px-8',\n spacing === 'lg' ? 'py-16 lg:py-24' : 'py-12 lg:py-16',\n split &&\n cn(\n 'grid gap-10 lg:gap-16',\n layout === 'split-wide' ? 'lg:grid-cols-[1fr_1.4fr]' : 'lg:grid-cols-2'\n )\n )}\n >\n {split ? (\n <>\n {heading && <div>{heading}</div>}\n <div className=\"min-w-0\">{children}</div>\n </>\n ) : (\n <>\n {heading && (\n <div className=\"flex flex-col justify-between gap-6 sm:flex-row sm:items-end\">\n {heading}\n {action && <div className=\"shrink-0\">{action}</div>}\n </div>\n )}\n {children && <div className={cn(heading && 'mt-12 lg:mt-14')}>{children}</div>}\n </>\n )}\n </div>\n </section>\n </EditorialToneContext.Provider>\n )\n}\n\nexport interface EditorialProseProps {\n /** One entry per paragraph. */\n paragraphs: ReactNode[]\n /** Two columns from `md` up (paragraphs never split across columns). */\n columns?: 1 | 2\n size?: 'base' | 'lg'\n className?: string\n testId?: string\n}\n\n/** Long-form paragraphs set at a readable measure, in one or two columns. */\nexport function EditorialProse({\n paragraphs,\n columns = 1,\n size = 'base',\n className,\n testId,\n}: EditorialProseProps) {\n const t = useEditorialTone()\n return (\n <div\n className={cn(\n size === 'lg' ? 'text-lg' : 'text-base',\n 'leading-relaxed',\n t.muted,\n columns === 2 ? 'gap-10 md:columns-2' : 'max-w-prose',\n className\n )}\n data-slot=\"editorial-prose\"\n data-testid={testId}\n >\n {paragraphs.map((p, i) => (\n <p key={i} className={cn(columns === 2 ? 'mb-5 break-inside-avoid' : 'mt-5 first:mt-0')}>\n {p}\n </p>\n ))}\n </div>\n )\n}\n","import type { ReactNode } from 'react'\nimport { Check } from 'lucide-react'\nimport { cn } from '@arbidocs/react/ui'\nimport { useEditorialTone } from './tone'\n\nexport interface DefinitionItem {\n term: ReactNode\n description: ReactNode\n /** A leading icon; without one the `dot` marker is used when `marker=\"dot\"`. */\n icon?: ReactNode\n testId?: string\n}\n\nexport interface DefinitionListProps {\n items: DefinitionItem[]\n /**\n * `rows`: each entry is a lifted row with a marker. `ruled`: a spec sheet, term and description\n * side by side between hairlines.\n */\n layout?: 'rows' | 'ruled'\n /** Marker of an entry with no `icon` in the `rows` layout. */\n marker?: 'dot' | 'none'\n className?: string\n testId?: string\n}\n\n/** Term and description pairs (`<dl>`): feature rows, a spec sheet, a definition list. */\nexport function DefinitionList({\n items,\n layout = 'rows',\n marker = 'dot',\n className,\n testId,\n}: DefinitionListProps) {\n const t = useEditorialTone()\n return (\n <dl\n className={cn(layout === 'rows' ? 'space-y-3' : 'divide-y', t.hairline, className)}\n data-slot=\"definition-list\"\n data-layout={layout}\n data-testid={testId}\n >\n {items.map((item, i) =>\n layout === 'rows' ? (\n <div\n key={i}\n className={cn(\n 'flex gap-4 rounded-sm border p-5 transition-colors',\n t.panel,\n t.panelHover\n )}\n data-testid={item.testId ?? (testId ? `${testId}-item-${i}` : undefined)}\n >\n {item.icon ? (\n <span\n className={cn(\n 'flex size-9 shrink-0 items-center justify-center rounded-sm border',\n t.tile\n )}\n aria-hidden=\"true\"\n >\n {item.icon}\n </span>\n ) : (\n marker === 'dot' && (\n <span aria-hidden=\"true\" className=\"mt-2 size-2 shrink-0 rounded-full bg-primary\" />\n )\n )}\n <div className=\"min-w-0\">\n <dt className=\"font-medium\">{item.term}</dt>\n <dd className={cn('mt-0.5 text-sm', t.muted)}>{item.description}</dd>\n </div>\n </div>\n ) : (\n <div\n key={i}\n className=\"grid gap-1 py-4 sm:grid-cols-[minmax(0,1fr)_minmax(0,2fr)] sm:gap-8\"\n data-testid={item.testId ?? (testId ? `${testId}-item-${i}` : undefined)}\n >\n <dt className=\"font-medium\">{item.term}</dt>\n <dd className={cn('text-sm leading-relaxed', t.muted)}>{item.description}</dd>\n </div>\n )\n )}\n </dl>\n )\n}\n\nexport interface CheckListProps {\n items: ReactNode[]\n /** Two columns from `sm` up. */\n columns?: 1 | 2\n /** Replaces the check mark. */\n icon?: ReactNode\n className?: string\n testId?: string\n}\n\n/** A list of points, each with a ringed check mark. */\nexport function CheckList({ items, columns = 1, icon, className, testId }: CheckListProps) {\n const t = useEditorialTone()\n return (\n <ul\n className={cn(columns === 2 ? 'grid gap-4 sm:grid-cols-2' : 'space-y-3', className)}\n data-slot=\"check-list\"\n data-testid={testId}\n >\n {items.map((item, i) => (\n <li\n key={i}\n className={cn('flex items-start gap-3 text-sm leading-relaxed', t.muted)}\n data-testid={testId ? `${testId}-item-${i}` : undefined}\n >\n <span\n aria-hidden=\"true\"\n className={cn(\n 'mt-0.5 flex size-5 shrink-0 items-center justify-center rounded-full border',\n t.tile\n )}\n >\n {icon ?? <Check className=\"size-3\" />}\n </span>\n <span>{item}</span>\n </li>\n ))}\n </ul>\n )\n}\n\nexport interface TagListProps {\n items: string[]\n /** Accessible name of the list. */\n label?: string\n className?: string\n testId?: string\n}\n\n/** Small bordered chips: sectors, focus areas, topics. */\nexport function TagList({ items, label, className, testId }: TagListProps) {\n const t = useEditorialTone()\n if (items.length === 0) return null\n return (\n <ul\n aria-label={label}\n className={cn('flex flex-wrap gap-1.5', className)}\n data-slot=\"tag-list\"\n data-testid={testId}\n >\n {items.map((tag) => (\n <li key={tag} className={cn('rounded-sm border px-2 py-0.5 text-[11px]', t.chip)}>\n {tag}\n </li>\n ))}\n </ul>\n )\n}\n","import { useEffect, useRef, useState, type CSSProperties, type ReactNode } from 'react'\nimport { cn } from '@arbidocs/react/ui'\n\nexport interface RevealProps {\n children: ReactNode\n /** Delay in ms before the reveal starts (stagger siblings with `index * 90`). */\n delay?: number\n className?: string\n testId?: string\n}\n\n/**\n * Fade-and-rise on first scroll into view. Content is fully visible until the part has mounted\n * and found an `IntersectionObserver`, so server rendering, no-JS and jsdom show everything; the\n * hidden state and transition live in `blocks.css` (`[data-reveal]`) and collapse under\n * `prefers-reduced-motion`.\n */\nexport function Reveal({ children, delay = 0, className, testId }: RevealProps) {\n const ref = useRef<HTMLDivElement>(null)\n const [state, setState] = useState<'idle' | 'pending' | 'shown'>('idle')\n\n useEffect(() => {\n const el = ref.current\n if (!el || typeof IntersectionObserver === 'undefined') return\n setState('pending')\n const io = new IntersectionObserver(\n (entries) => {\n if (entries.some((e) => e.isIntersecting)) {\n setState('shown')\n io.disconnect()\n }\n },\n { rootMargin: '0px 0px -90px 0px' }\n )\n io.observe(el)\n return () => io.disconnect()\n }, [])\n\n return (\n <div\n ref={ref}\n data-slot=\"reveal\"\n data-reveal={state === 'idle' ? undefined : state}\n style={delay ? ({ '--reveal-delay': `${delay}ms` } as CSSProperties) : undefined}\n className={cn(className)}\n data-testid={testId}\n >\n {children}\n </div>\n )\n}\n","import type { ReactNode } from 'react'\nimport { ArrowUpRight } from 'lucide-react'\nimport { cn } from '@arbidocs/react/ui'\nimport { BlockLink, type BlockLinkComponent } from '../blockLink'\nimport { CheckList, TagList } from './lists'\nimport { Reveal } from './Reveal'\nimport { EditorialToneContext, formatIndex, useEditorialTone, type EditorialTone } from './tone'\n\nexport interface PanelItem {\n title: ReactNode\n body?: ReactNode\n /** Icon in a bordered tile. */\n icon?: ReactNode\n /** Explicit number or label; with `numbered` on the grid it defaults to the position. */\n index?: number | string\n /** A small label above the title (category). */\n kicker?: ReactNode\n /** Bulleted points under the body. */\n points?: ReactNode[]\n /** Chips at the foot. */\n tags?: string[]\n /** Anything at the foot (a meta line, a link). */\n footer?: ReactNode\n /** Makes the whole panel a link. */\n href?: string\n testId?: string\n}\n\nexport interface PanelGridProps {\n items: PanelItem[]\n columns?: 2 | 3 | 4\n /** `cards`: separate bordered panels. `joined`: one hairline-ruled table of cells. */\n variant?: 'cards' | 'joined'\n /** Number the panels 01, 02, ... */\n numbered?: boolean\n /** Fade each panel in on scroll, staggered. */\n reveal?: boolean\n /** Router link for panels with an `href`. */\n linkComponent?: BlockLinkComponent\n /** Heading level of the panel titles (default 3). */\n headingLevel?: 2 | 3 | 4\n tone?: EditorialTone\n className?: string\n testId?: string\n}\n\nconst COLS: Record<2 | 3 | 4, string> = {\n 2: 'sm:grid-cols-2',\n 3: 'sm:grid-cols-2 lg:grid-cols-3',\n 4: 'sm:grid-cols-2 lg:grid-cols-4',\n}\n\n/**\n * Icon, title and body panels: principles, process steps, capability cards, security pillars,\n * practice areas. Cards or a joined hairline table, optional numbers, bullet points, chips and\n * a link per panel.\n */\nexport function PanelGrid({\n items,\n columns = 3,\n variant = 'cards',\n numbered = false,\n reveal = false,\n linkComponent,\n headingLevel = 3,\n tone,\n className,\n testId,\n}: PanelGridProps) {\n const t = useEditorialTone(tone)\n const Heading = `h${headingLevel}` as 'h2' | 'h3' | 'h4'\n const joined = variant === 'joined'\n return (\n <EditorialToneContext.Provider value={t.tone}>\n <ul\n className={cn(\n 'grid',\n joined ? cn('gap-px overflow-hidden rounded-sm border', t.hairline) : 'gap-4',\n joined && (t.tone === 'inverse' ? 'bg-background/15' : 'bg-border'),\n COLS[columns] ?? COLS[3],\n className\n )}\n data-slot=\"panel-grid\"\n data-variant={variant}\n data-testid={testId}\n >\n {items.map((item, i) => {\n const number = item.index ?? (numbered ? i + 1 : undefined)\n const inner = (\n <div\n className={cn(\n 'group flex h-full flex-col p-6 transition-colors duration-300',\n joined\n ? cn(\n t.tone === 'inverse' ? 'bg-foreground' : 'bg-background',\n item.href && 'hover:bg-muted/40'\n )\n : cn('rounded-sm border', t.panel, item.href && t.panelHover)\n )}\n data-testid={item.testId ?? (testId ? `${testId}-item-${i}` : undefined)}\n >\n {(item.icon || number !== undefined || item.href) && (\n <div className=\"flex items-start justify-between gap-4\">\n {item.icon ? (\n <span\n aria-hidden=\"true\"\n className={cn(\n 'flex size-11 items-center justify-center rounded-sm border',\n t.tile\n )}\n >\n {item.icon}\n </span>\n ) : (\n <span />\n )}\n {number !== undefined ? (\n <span className={cn('font-display text-sm tabular-nums', t.subtle)}>\n {formatIndex(number)}\n </span>\n ) : (\n item.href && (\n <ArrowUpRight\n aria-hidden=\"true\"\n className={cn(\n 'size-4 transition-colors group-hover:text-primary',\n t.subtle\n )}\n />\n )\n )}\n </div>\n )}\n {item.kicker && (\n <p\n className={cn(\n 'text-xs font-semibold uppercase tracking-wider',\n item.icon || number !== undefined ? 'mt-5' : '',\n t.accent\n )}\n >\n {item.kicker}\n </p>\n )}\n <Heading\n className={cn(\n 'font-display text-lg font-semibold leading-snug',\n item.icon || number !== undefined || item.kicker ? 'mt-4' : '',\n t.text\n )}\n >\n {item.title}\n </Heading>\n {item.body && (\n <div className={cn('mt-2 text-sm leading-relaxed', t.muted)}>{item.body}</div>\n )}\n {item.points && item.points.length > 0 && (\n <CheckList\n items={item.points}\n className={cn('mt-4 space-y-2 border-t pt-4', t.hairline)}\n />\n )}\n {item.tags && item.tags.length > 0 && (\n <TagList items={item.tags} className=\"mt-auto pt-5\" />\n )}\n {item.footer && (\n <div className={cn('mt-auto pt-5 text-xs', t.subtle)}>{item.footer}</div>\n )}\n </div>\n )\n const cell = (\n <BlockLink href={item.href} linkComponent={linkComponent} className=\"block h-full\">\n {inner}\n </BlockLink>\n )\n return (\n <li key={i} className=\"min-w-0\">\n {reveal ? (\n <Reveal delay={i * 90} className=\"h-full\">\n {cell}\n </Reveal>\n ) : (\n cell\n )}\n </li>\n )\n })}\n </ul>\n </EditorialToneContext.Provider>\n )\n}\n","import type { ReactNode } from 'react'\nimport { cn } from '@arbidocs/react/ui'\nimport { useEditorialTone } from './tone'\n\nexport interface PullQuoteProps {\n quote: ReactNode\n /** Who said it. */\n attribution?: { name: ReactNode; role?: ReactNode }\n /** Link to the source. */\n cite?: string\n align?: 'start' | 'center'\n size?: 'md' | 'lg'\n className?: string\n testId?: string\n}\n\n/** A large display quotation with an accent rule and attribution. */\nexport function PullQuote({\n quote,\n attribution,\n cite,\n align = 'start',\n size = 'md',\n className,\n testId,\n}: PullQuoteProps) {\n const t = useEditorialTone()\n const centered = align === 'center'\n return (\n <figure\n className={cn(\n 'max-w-3xl',\n centered ? 'mx-auto text-center' : 'border-l-2 border-primary pl-6 lg:pl-8',\n className\n )}\n data-slot=\"pull-quote\"\n data-testid={testId}\n >\n <blockquote\n cite={cite}\n className={cn(\n 'font-display font-medium leading-snug text-balance',\n size === 'lg' ? 'text-3xl sm:text-4xl' : 'text-2xl sm:text-3xl',\n t.text\n )}\n >\n <p>{quote}</p>\n </blockquote>\n {attribution && (\n <figcaption className={cn('mt-5 text-sm', t.muted)}>\n <span className={cn('font-semibold', t.text)}>{attribution.name}</span>\n {attribution.role && <span>, {attribution.role}</span>}\n </figcaption>\n )}\n </figure>\n )\n}\n","import type { ReactNode } from 'react'\nimport { ArrowUpRight } from 'lucide-react'\nimport { cn } from '@arbidocs/react/ui'\nimport { BlockImage } from '../BlockImage'\nimport { BlockLink, type BlockLinkComponent } from '../blockLink'\nimport { useEditorialTone } from './tone'\n\nexport interface ArticleItem {\n title: ReactNode\n summary?: ReactNode\n /** Category or type, shown as an accent label. */\n kicker?: ReactNode\n /** Short facts joined with a middle dot: author, date, reading time. */\n meta?: ReactNode[]\n href?: string\n imageUrl?: string\n imageAlt?: string\n testId?: string\n}\n\nexport interface ArticleListProps {\n items: ArticleItem[]\n /**\n * `cards`: a grid of cards. `rows`: ruled rows (kicker and meta beside the title), best for an\n * archive.\n */\n layout?: 'cards' | 'rows'\n /** `cards` only: the first item is a large card beside a column of the rest from `lg`. */\n featureFirst?: boolean\n columns?: 2 | 3\n linkComponent?: BlockLinkComponent\n /** Rendered instead of the list when `items` is empty. */\n empty?: ReactNode\n className?: string\n testId?: string\n}\n\nconst COLS: Record<2 | 3, string> = {\n 2: 'md:grid-cols-2',\n 3: 'md:grid-cols-2 lg:grid-cols-3',\n}\n\n/** Insight, news or post listing: `meta` joined with a middle dot, linked cards or rows. */\nfunction MetaLine({ meta, className }: { meta?: ReactNode[]; className?: string }) {\n if (!meta || meta.length === 0) return null\n return (\n <p className={className}>\n {meta.map((m, i) => (\n <span key={i}>\n {i > 0 && <span aria-hidden=\"true\"> · </span>}\n {m}\n </span>\n ))}\n </p>\n )\n}\n\n/** Article, insight or news items as cards (optionally with a lead card) or ruled archive rows. */\nexport function ArticleList({\n items,\n layout = 'cards',\n featureFirst = false,\n columns = 3,\n linkComponent,\n empty,\n className,\n testId,\n}: ArticleListProps) {\n const t = useEditorialTone()\n if (items.length === 0) return empty ? <>{empty}</> : null\n\n const idOf = (item: ArticleItem, i: number) =>\n item.testId ?? (testId ? `${testId}-item-${i}` : undefined)\n\n if (layout === 'rows') {\n return (\n <ul\n className={cn('divide-y border-y', t.hairline, className)}\n data-slot=\"article-list\"\n data-layout=\"rows\"\n data-testid={testId}\n >\n {items.map((item, i) => (\n <li key={i}>\n <BlockLink href={item.href} linkComponent={linkComponent} className=\"group block\">\n <article\n className=\"grid gap-2 py-6 transition-colors sm:grid-cols-[10rem_minmax(0,1fr)_auto] sm:gap-8\"\n data-testid={idOf(item, i)}\n >\n <div className=\"space-y-1\">\n {item.kicker && (\n <p className={cn('text-xs font-semibold uppercase tracking-wider', t.accent)}>\n {item.kicker}\n </p>\n )}\n <MetaLine meta={item.meta} className={cn('text-xs', t.subtle)} />\n </div>\n <div className=\"min-w-0\">\n <h3\n className={cn(\n 'font-display text-xl font-semibold leading-snug transition-colors group-hover:text-primary',\n t.text\n )}\n >\n {item.title}\n </h3>\n {item.summary && (\n <p className={cn('mt-2 text-sm leading-relaxed', t.muted)}>{item.summary}</p>\n )}\n </div>\n {item.href && (\n <ArrowUpRight\n aria-hidden=\"true\"\n className={cn(\n 'hidden size-4 transition-colors group-hover:text-primary sm:block',\n t.subtle\n )}\n />\n )}\n </article>\n </BlockLink>\n </li>\n ))}\n </ul>\n )\n }\n\n const card = (item: ArticleItem, i: number, lead: boolean) => (\n <BlockLink href={item.href} linkComponent={linkComponent} className=\"group block h-full\">\n <article\n className={cn(\n 'flex h-full flex-col rounded-sm border transition-colors duration-300',\n t.panel,\n item.href && t.panelHover,\n lead ? 'p-6 lg:p-8' : 'p-6'\n )}\n data-testid={idOf(item, i)}\n >\n {item.imageUrl && (\n <BlockImage\n src={item.imageUrl}\n alt={item.imageAlt ?? ''}\n aspect=\"16:9\"\n rounded=\"none\"\n className=\"mb-5 w-full\"\n />\n )}\n <div className=\"flex items-start justify-between gap-3\">\n {item.kicker ? (\n <p className={cn('text-xs font-semibold uppercase tracking-wider', t.accent)}>\n {item.kicker}\n </p>\n ) : (\n <span />\n )}\n {item.href && (\n <ArrowUpRight\n aria-hidden=\"true\"\n className={cn('size-4 transition-colors group-hover:text-primary', t.subtle)}\n />\n )}\n </div>\n <h3\n className={cn(\n 'mt-3 font-display font-semibold leading-snug',\n lead ? 'text-2xl sm:text-3xl' : 'text-lg',\n t.text\n )}\n >\n {item.title}\n </h3>\n {item.summary && (\n <p\n className={cn(\n 'mt-3 flex-1 text-sm leading-relaxed',\n lead && 'max-w-xl text-base',\n t.muted\n )}\n >\n {item.summary}\n </p>\n )}\n <MetaLine meta={item.meta} className={cn('mt-5 text-xs', t.subtle)} />\n </article>\n </BlockLink>\n )\n\n if (featureFirst && items.length > 1) {\n const [lead, ...rest] = items\n return (\n <div\n className={cn('grid gap-5 lg:grid-cols-[1.4fr_1fr]', className)}\n data-slot=\"article-list\"\n data-layout=\"feature\"\n data-testid={testId}\n >\n <div>{card(lead, 0, true)}</div>\n <ul className=\"grid gap-5\">\n {rest.map((item, i) => (\n <li key={i}>{card(item, i + 1, false)}</li>\n ))}\n </ul>\n </div>\n )\n }\n\n return (\n <ul\n className={cn('grid gap-5', COLS[columns] ?? COLS[3], className)}\n data-slot=\"article-list\"\n data-layout=\"cards\"\n data-testid={testId}\n >\n {items.map((item, i) => (\n <li key={i}>{card(item, i, false)}</li>\n ))}\n </ul>\n )\n}\n","import type { ReactNode } from 'react'\nimport { cn } from '@arbidocs/react/ui'\nimport { SURFACE_CLASS, SURFACE_TONE, type EditorialSurface } from './EditorialHero'\nimport { EditorialToneContext, useEditorialTone } from './tone'\n\nexport interface ProofStripProps {\n /** The lead statement (an icon and a sentence). */\n lead?: ReactNode\n /** Short labels: standards, memberships, clients. */\n items: ReactNode[]\n /** Accessible name of the label list. */\n label?: string\n surface?: EditorialSurface\n className?: string\n testId?: string\n}\n\n/** A thin band of proof points: a lead statement and a row of short uppercase labels. */\nexport function ProofStrip({\n lead,\n items,\n label,\n surface = 'muted',\n className,\n testId,\n}: ProofStripProps) {\n const tone = SURFACE_TONE[surface]\n const t = useEditorialTone(tone)\n return (\n <EditorialToneContext.Provider value={tone}>\n <section\n aria-label={label}\n className={cn('border-y', t.hairline, SURFACE_CLASS[surface], className)}\n data-slot=\"proof-strip\"\n data-testid={testId}\n >\n <div className=\"mx-auto flex max-w-7xl flex-col items-center gap-5 px-5 py-6 lg:flex-row lg:justify-between lg:px-8\">\n {lead && <div className=\"flex items-center gap-2.5 text-sm font-medium\">{lead}</div>}\n <ul className=\"flex flex-wrap items-center justify-center gap-x-6 gap-y-2\">\n {items.map((item, i) => (\n <li\n key={i}\n className={cn('text-xs font-semibold uppercase tracking-wider', t.subtle)}\n >\n {item}\n </li>\n ))}\n </ul>\n </div>\n </section>\n </EditorialToneContext.Provider>\n )\n}\n\nexport interface CtaBandProps {\n title: ReactNode\n lead?: ReactNode\n /** Buttons or links. */\n actions?: ReactNode\n /** Decoration behind the copy (image, texture), hidden from assistive tech. */\n backdrop?: ReactNode\n /** Default `inverse`: a dark closing band. */\n surface?: EditorialSurface\n className?: string\n testId?: string\n}\n\n/** Closing call-to-action band: centred heading, lead and actions over an optional backdrop. */\nexport function CtaBand({\n title,\n lead,\n actions,\n backdrop,\n surface = 'inverse',\n className,\n testId,\n}: CtaBandProps) {\n const tone = SURFACE_TONE[surface]\n const t = useEditorialTone(tone)\n return (\n <EditorialToneContext.Provider value={tone}>\n <section\n className={cn('relative isolate overflow-hidden', SURFACE_CLASS[surface], className)}\n data-slot=\"cta-band\"\n data-testid={testId}\n >\n {backdrop && (\n <div aria-hidden=\"true\" className=\"pointer-events-none absolute inset-0 -z-10\">\n {backdrop}\n </div>\n )}\n <div className=\"mx-auto max-w-4xl px-5 py-20 text-center lg:px-8 lg:py-24\">\n <h2\n className={cn(\n 'font-display text-3xl font-semibold tracking-tight text-balance sm:text-4xl',\n t.text\n )}\n >\n {title}\n </h2>\n {lead && <p className={cn('mx-auto mt-4 max-w-2xl text-lg', t.muted)}>{lead}</p>}\n {actions && (\n <div className=\"mt-8 flex flex-col items-center justify-center gap-3 sm:flex-row\">\n {actions}\n </div>\n )}\n </div>\n </section>\n </EditorialToneContext.Provider>\n )\n}\n"]}
@@ -46,7 +46,7 @@ function PromptDialog({
46
46
  }
47
47
  function choiceDialog(request2) {
48
48
  if (typeof document === "undefined") return Promise.resolve(null);
49
- return new Promise((resolve) => {
49
+ return new Promise((resolve2) => {
50
50
  const container = document.createElement("div");
51
51
  document.body.appendChild(container);
52
52
  let settled = false;
@@ -55,7 +55,7 @@ function choiceDialog(request2) {
55
55
  const onSettle = (value) => {
56
56
  if (settled) return;
57
57
  settled = true;
58
- resolve(value);
58
+ resolve2(value);
59
59
  setTimeout(() => {
60
60
  root.unmount();
61
61
  container.remove();
@@ -128,63 +128,29 @@ var defaultEnvironment = {
128
128
  openProject: noop,
129
129
  openWorkspace: noop
130
130
  };
131
- var BlocksContext = react.createContext(defaultEnvironment);
132
- function BlocksProvider({
133
- children,
134
- linkComponent,
135
- navigate,
136
- notify,
137
- confirm,
138
- choose,
139
- runtimeConfig,
140
- openDocument,
141
- openConversation,
142
- openSettings,
143
- openProject,
144
- openWorkspace
145
- }) {
146
- const parent = react.useContext(BlocksContext);
147
- const value = react.useMemo(
148
- () => ({
149
- linkComponent: linkComponent ?? parent.linkComponent,
150
- navigate: navigate ?? parent.navigate,
151
- notify: notify ?? parent.notify,
152
- confirm: confirm ?? parent.confirm,
153
- choose: choose ?? parent.choose,
154
- runtimeConfig: runtimeConfig ?? parent.runtimeConfig,
155
- openDocument: openDocument ?? parent.openDocument,
156
- openConversation: openConversation ?? parent.openConversation,
157
- openSettings: openSettings ? (section) => {
158
- requestSettingsSection(section);
159
- openSettings(section);
160
- } : parent.openSettings,
161
- openProject: openProject ?? parent.openProject,
162
- openWorkspace: openWorkspace ?? parent.openWorkspace
163
- }),
164
- [
165
- parent,
166
- linkComponent,
167
- navigate,
168
- notify,
169
- confirm,
170
- choose,
171
- runtimeConfig,
172
- openDocument,
173
- openConversation,
174
- openSettings,
175
- openProject,
176
- openWorkspace
177
- ]
178
- );
179
- return /* @__PURE__ */ jsxRuntime.jsx(BlocksContext.Provider, { value, children });
131
+ var resolved = /* @__PURE__ */ new WeakMap();
132
+ function resolve(environment) {
133
+ const { openSettings } = environment;
134
+ return {
135
+ ...defaultEnvironment,
136
+ ...environment,
137
+ // The section is recorded for `ConnectedSettingsPage` before the host shows its settings.
138
+ openSettings: openSettings ? (section) => {
139
+ requestSettingsSection(section);
140
+ openSettings(section);
141
+ } : defaultEnvironment.openSettings
142
+ };
180
143
  }
181
144
  function useBlocksEnvironment() {
182
- return react.useContext(BlocksContext);
145
+ const environment = shell.useHostConfigRecord().environment;
146
+ if (!environment) return defaultEnvironment;
147
+ let value = resolved.get(environment);
148
+ if (!value) resolved.set(environment, value = resolve(environment));
149
+ return value;
183
150
  }
184
151
 
185
- exports.BlocksProvider = BlocksProvider;
186
152
  exports.requestSettingsSection = requestSettingsSection;
187
153
  exports.useBlocksEnvironment = useBlocksEnvironment;
188
154
  exports.useRequestedSettingsSection = useRequestedSettingsSection;
189
- //# sourceMappingURL=chunk-CNHUJRQ4.cjs.map
190
- //# sourceMappingURL=chunk-CNHUJRQ4.cjs.map
155
+ //# sourceMappingURL=chunk-EFEFLBRM.cjs.map
156
+ //# sourceMappingURL=chunk-EFEFLBRM.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/provider/dialogs.tsx","../src/provider/settings-section.ts","../src/provider/environment.ts"],"names":["request","useState","jsx","ModalScaffold","Info","AlertCircle","Button","resolve","useSyncExternalStore","notifyStore","useHostConfigRecord"],"mappings":"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","file":"chunk-EFEFLBRM.cjs","sourcesContent":["/**\n * Promise-based prompt dialogs — the blocks replacement for `window.confirm` / `window.alert`.\n * Each call mounts its own short-lived React root, so it works from any event handler with no\n * dialog host in the tree. Hosts reach these through `useBlocksEnvironment().confirm` / `.choose`\n * (the defaults), which lets an app swap in its own dialogs without touching callers.\n *\n * For a confirmation with a loading state, render the declarative {@link ConfirmDialog} instead.\n */\nimport { useState, type ReactElement } from 'react'\nimport { AlertCircle, Info } from 'lucide-react'\nimport { Button } from '@arbidocs/react/ui'\nimport { ModalScaffold } from '../settings/ModalScaffold'\n\ntype ChoiceVariant = 'default' | 'destructive' | 'outline'\n\nexport interface PromptChoice<T extends string> {\n label: string\n value: T\n variant?: ChoiceVariant\n}\n\n/** A dialog offering arbitrary choices (e.g. Overwrite / Skip / Cancel). */\nexport interface ChoiceRequest<T extends string> {\n message: string\n title?: string\n choices: PromptChoice<T>[]\n icon?: 'alert' | 'info'\n /** Dialog test id; each button is `${testId}-${value}-button`. Default `choice-modal`. */\n testId?: string\n}\n\n/**\n * `confirm` — Cancel / Confirm (destructive); `yesno` — No / Yes; `alert` — a single OK\n * (resolves true once acknowledged).\n */\nexport type ConfirmKind = 'confirm' | 'yesno' | 'alert'\n\nexport interface ConfirmRequest {\n message: string\n /** Default: \"Alert\" for `alert`, else \"Confirm\". */\n title?: string\n kind?: ConfirmKind\n}\n\n/** Close animation length before the root is unmounted. */\nconst UNMOUNT_DELAY_MS = 300\n\nfunction PromptDialog<T extends string>({\n request,\n onSettle,\n}: {\n request: ChoiceRequest<T>\n onSettle: (value: T | null) => void\n}): ReactElement {\n const [open, setOpen] = useState(true)\n const { message, title = 'Confirm', choices, icon = 'alert', testId = 'choice-modal' } = request\n const settle = (value: T | null) => {\n setOpen(false)\n onSettle(value)\n }\n return (\n <ModalScaffold\n open={open}\n onOpenChange={(next) => {\n if (!next) settle(null)\n }}\n title={title}\n icon={\n icon === 'info' ? (\n <Info className=\"h-5 w-5 text-blue-text\" aria-hidden=\"true\" />\n ) : (\n <AlertCircle className=\"h-5 w-5\" aria-hidden=\"true\" />\n )\n }\n description={<span className=\"whitespace-pre-line\">{message}</span>}\n showDescription\n testId={testId}\n >\n <ModalScaffold.Footer>\n {choices.map((choice) => (\n <Button\n key={choice.value}\n variant={choice.variant ?? 'default'}\n onClick={() => settle(choice.value)}\n data-testid={`${testId}-${choice.value.toLowerCase()}-button`}\n >\n {choice.label}\n </Button>\n ))}\n </ModalScaffold.Footer>\n </ModalScaffold>\n )\n}\n\n/** Show a choice dialog; resolves with the chosen `value`, or `null` when dismissed. */\nexport function choiceDialog<T extends string>(request: ChoiceRequest<T>): Promise<T | null> {\n if (typeof document === 'undefined') return Promise.resolve(null)\n return new Promise((resolve) => {\n const container = document.createElement('div')\n document.body.appendChild(container)\n let settled = false\n void import('react-dom/client').then(({ createRoot }) => {\n const root = createRoot(container)\n const onSettle = (value: T | null) => {\n if (settled) return\n settled = true\n resolve(value)\n setTimeout(() => {\n root.unmount()\n container.remove()\n }, UNMOUNT_DELAY_MS)\n }\n root.render(<PromptDialog request={request} onSettle={onSettle} />)\n })\n })\n}\n\nconst CONFIRM_CHOICES: Record<\n ConfirmKind,\n PromptChoice<'confirm' | 'cancel' | 'yes' | 'no' | 'ok'>[]\n> = {\n confirm: [\n { label: 'Cancel', value: 'cancel', variant: 'outline' },\n { label: 'Confirm', value: 'confirm', variant: 'destructive' },\n ],\n yesno: [\n { label: 'No', value: 'no', variant: 'outline' },\n { label: 'Yes', value: 'yes' },\n ],\n alert: [{ label: 'OK', value: 'ok' }],\n}\n\nconst CONFIRM_TEST_ID: Record<ConfirmKind, string> = {\n confirm: 'confirmation-modal',\n yesno: 'yes-no-modal',\n alert: 'alert-modal',\n}\n\n/** Show a confirmation; resolves true on Confirm / Yes / OK, false on cancel or dismissal. */\nexport async function confirmDialog(request: ConfirmRequest): Promise<boolean> {\n const kind = request.kind ?? 'confirm'\n const choice = await choiceDialog({\n message: request.message,\n title: request.title ?? (kind === 'alert' ? 'Alert' : 'Confirm'),\n choices: CONFIRM_CHOICES[kind],\n icon: kind === 'alert' ? 'info' : 'alert',\n testId: CONFIRM_TEST_ID[kind],\n })\n return choice === 'confirm' || choice === 'yes' || choice === 'ok'\n}\n","/**\n * The settings section asked for last, so `openSettings(section)` opens that section in every host.\n *\n * `BlocksEnvironment.openSettings` records the section here before the host shows its settings\n * (a panel, a route); a `ConnectedSettingsPage` without its own `section` prop opens at it and\n * follows every later request, even one for the section asked for before. A host that keeps the\n * open section itself (`section` + `onSectionChange`) routes `openSettings` to its own state.\n */\nimport { useSyncExternalStore } from 'react'\n\nexport interface SettingsSectionRequest {\n section: string\n /** Increases with every request, so asking again for the same section is a new request. */\n seq: number\n}\n\nlet request: SettingsSectionRequest | undefined\nconst listeners = new Set<() => void>()\n\n/** Ask for a settings section; no section asks for none (the page stays where it is). */\nexport function requestSettingsSection(section?: string): void {\n if (!section) return\n request = { section, seq: (request?.seq ?? 0) + 1 }\n listeners.forEach((listener) => listener())\n}\n\nfunction subscribe(listener: () => void): () => void {\n listeners.add(listener)\n return () => listeners.delete(listener)\n}\n\nconst snapshot = () => request\n\n/** The last settings-section request (`undefined` until there is one). */\nexport function useRequestedSettingsSection(): SettingsSectionRequest | undefined {\n return useSyncExternalStore(subscribe, snapshot, snapshot)\n}\n","import type { ReactNode } from 'react'\nimport {\n notify as notifyStore,\n useHostConfigRecord,\n type NotifyOptions,\n type NotifyVariant,\n} from '@arbidocs/react/shell'\nimport type { BlockLinkComponent } from '../components/blockLink'\nimport { choiceDialog, confirmDialog, type ChoiceRequest, type ConfirmRequest } from './dialogs'\nimport { requestSettingsSection } from './settings-section'\n\n/** What blocks need from the host's runtime configuration (the app's `config.json`). */\nexport interface BlocksRuntimeConfig {\n /** Origin of the ARBI API; `''` means the page's own origin. */\n apiBaseUrl: string\n /** The deployment's domain, e.g. `www.arbidocs.com` (deep links, key derivation, labels). */\n deploymentDomain: string\n}\n\nexport interface OpenDocumentOptions {\n /** 1-based page to scroll to. */\n page?: number\n /** Passage (chunk) to highlight. */\n passageId?: string\n}\n\n/**\n * The only way blocks reach the host app's environment: the host configuration's `environment`\n * (`<ArbiHost config={{ environment: { navigate, notify, … } }}>`). Blocks never import a router, a\n * toast library or an app store; the host gives what it has, and every field has a safe default so\n * a block renders correctly with no host at all. A nested host overrides only the fields it gives\n * and inherits the rest.\n */\nexport interface BlocksEnvironment {\n /** Router-aware link (keeps navigation in-SPA). Default: a plain `<a href>`. */\n linkComponent?: BlockLinkComponent\n /** Imperative navigation for buttons and keyboard shortcuts. Default: `window.location.assign`. */\n navigate: (href: string) => void\n /** Surface a transient message (and record it in the notification centre). Default: the shared\n * `@arbidocs/react` notify store, rendered by its `<Toaster/>`. */\n notify: (message: ReactNode, kind?: NotifyVariant, options?: NotifyOptions) => void\n /** Ask the user to confirm. Default: the blocks prompt dialog. */\n confirm: (request: ConfirmRequest) => Promise<boolean>\n /** Ask the user to pick one of several choices; `null` when dismissed. Default: the blocks\n * prompt dialog. */\n choose: <T extends string>(request: ChoiceRequest<T>) => Promise<T | null>\n /** Deployment configuration. Default: same-origin API on the page's own host. */\n runtimeConfig: BlocksRuntimeConfig\n /** Open a document (optionally at a page / passage) wherever the host shows documents.\n * Default: no-op. */\n openDocument: (documentId: string, options?: OpenDocumentOptions) => void\n /** Open a conversation thread, optionally scrolled to a message. Default: no-op. */\n openConversation: (conversationId: string, options?: { messageId?: string }) => void\n /**\n * Open the user's settings, optionally at a section (a `ConnectedSettingsPage` section id).\n * The section is always recorded for `ConnectedSettingsPage` first (`requestSettingsSection`);\n * the host's handler then shows its settings. Default: only that record.\n */\n openSettings: (section?: string) => void\n /** Open a project. Default: no-op. */\n openProject: (projectId: string) => void\n /**\n * Show a workspace (its own page). Under `defaultHost`'s sign-in layer the kits select it first\n * (`useConnectedWorkspace().openWorkspace`); a host that keeps its own session switches to it\n * here. `name` is for the host's messages. Default: no-op.\n */\n openWorkspace: (workspaceId: string, options?: { name?: string }) => void\n}\n\nconst noop = () => {}\n\nconst defaultEnvironment: BlocksEnvironment = {\n navigate: (href) => {\n if (typeof window !== 'undefined') window.location.assign(href)\n },\n notify: (message, kind = 'info', options) => {\n notifyStore[kind](message, options)\n },\n confirm: confirmDialog,\n choose: choiceDialog,\n runtimeConfig: {\n apiBaseUrl: '',\n deploymentDomain: typeof window !== 'undefined' ? window.location.host : '',\n },\n openDocument: noop,\n openConversation: noop,\n openSettings: requestSettingsSection,\n openProject: noop,\n openWorkspace: noop,\n}\n\nconst resolved = new WeakMap<object, BlocksEnvironment>()\n\nfunction resolve(environment: Partial<BlocksEnvironment>): BlocksEnvironment {\n const { openSettings } = environment\n return {\n ...defaultEnvironment,\n ...environment,\n // The section is recorded for `ConnectedSettingsPage` before the host shows its settings.\n openSettings: openSettings\n ? (section?: string) => {\n requestSettingsSection(section)\n openSettings(section)\n }\n : defaultEnvironment.openSettings,\n }\n}\n\n/** The host's environment, every field filled in (the defaults where the host gives none). */\nexport function useBlocksEnvironment(): BlocksEnvironment {\n const environment = useHostConfigRecord().environment as Partial<BlocksEnvironment> | undefined\n if (!environment) return defaultEnvironment\n let value = resolved.get(environment)\n if (!value) resolved.set(environment, (value = resolve(environment)))\n return value\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { useBlocksEnvironment } from './chunk-F57LNUSZ.js';
2
+ import { useBlocksEnvironment } from './chunk-5NWY3FXQ.js';
3
3
  import { useCallback, useState, useRef, useEffect } from 'react';
4
4
  import { Check, Copy } from 'lucide-react';
5
5
  import { cn, MarkMenu, Tooltip, TooltipTrigger, TooltipContent } from '@arbidocs/react/ui';
@@ -402,5 +402,5 @@ function NoteMark({
402
402
  }
403
403
 
404
404
  export { DEFAULT_PASSAGE_PILL_LABELS, DEFAULT_QUIET_MARK_LABELS, LabelMark, NoteMark, PassageMark, PassagePill, QuietLink, useCopyText };
405
- //# sourceMappingURL=chunk-ETZ5A3GU.js.map
406
- //# sourceMappingURL=chunk-ETZ5A3GU.js.map
405
+ //# sourceMappingURL=chunk-EVO2UNX3.js.map
406
+ //# sourceMappingURL=chunk-EVO2UNX3.js.map