@arbidocs/blocks 0.5.106 → 0.5.107

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 (249) hide show
  1. package/README.md +60 -6
  2. package/dist/{ConnectedCallDock-P7LK2HYF.cjs → ConnectedCallDock-H3WWFGXF.cjs} +8 -8
  3. package/dist/{ConnectedCallDock-P7LK2HYF.cjs.map → ConnectedCallDock-H3WWFGXF.cjs.map} +1 -1
  4. package/dist/{ConnectedCallDock-NEZJNTKH.js → ConnectedCallDock-TDYRHPAK.js} +6 -6
  5. package/dist/{ConnectedCallDock-NEZJNTKH.js.map → ConnectedCallDock-TDYRHPAK.js.map} +1 -1
  6. package/dist/{ConnectedCallRoom-FXTR4YFI.cjs → ConnectedCallRoom-55O5OUN7.cjs} +7 -7
  7. package/dist/{ConnectedCallRoom-FXTR4YFI.cjs.map → ConnectedCallRoom-55O5OUN7.cjs.map} +1 -1
  8. package/dist/{ConnectedCallRoom-K3X6ICCG.js → ConnectedCallRoom-Z6F6WCLH.js} +6 -6
  9. package/dist/{ConnectedCallRoom-K3X6ICCG.js.map → ConnectedCallRoom-Z6F6WCLH.js.map} +1 -1
  10. package/dist/{ConnectedNativeDocxComparison-7VJKOKYU.cjs → ConnectedNativeDocxComparison-DGBZJ4XA.cjs} +10 -10
  11. package/dist/{ConnectedNativeDocxComparison-7VJKOKYU.cjs.map → ConnectedNativeDocxComparison-DGBZJ4XA.cjs.map} +1 -1
  12. package/dist/{ConnectedNativeDocxComparison-FENZYWDH.js → ConnectedNativeDocxComparison-NVZRVNOS.js} +9 -9
  13. package/dist/{ConnectedNativeDocxComparison-FENZYWDH.js.map → ConnectedNativeDocxComparison-NVZRVNOS.js.map} +1 -1
  14. package/dist/{ConnectedNativeDocxEditor-HB5BHGZ2.cjs → ConnectedNativeDocxEditor-R4WINUUB.cjs} +10 -10
  15. package/dist/{ConnectedNativeDocxEditor-HB5BHGZ2.cjs.map → ConnectedNativeDocxEditor-R4WINUUB.cjs.map} +1 -1
  16. package/dist/{ConnectedNativeDocxEditor-CNQAMO2N.js → ConnectedNativeDocxEditor-RSVBN7DY.js} +8 -8
  17. package/dist/{ConnectedNativeDocxEditor-CNQAMO2N.js.map → ConnectedNativeDocxEditor-RSVBN7DY.js.map} +1 -1
  18. package/dist/{ConnectedProductionSetDialog-O4FWTZNF.js → ConnectedProductionSetDialog-2DFBXE2X.js} +5 -5
  19. package/dist/{ConnectedProductionSetDialog-O4FWTZNF.js.map → ConnectedProductionSetDialog-2DFBXE2X.js.map} +1 -1
  20. package/dist/{ConnectedProductionSetDialog-ENAIZWPK.cjs → ConnectedProductionSetDialog-KYDPQ7SG.cjs} +6 -6
  21. package/dist/{ConnectedProductionSetDialog-ENAIZWPK.cjs.map → ConnectedProductionSetDialog-KYDPQ7SG.cjs.map} +1 -1
  22. package/dist/{ConnectedStreamedWordArtifact-ILMKFCDC.js → ConnectedStreamedWordArtifact-HLJ5IIOU.js} +9 -9
  23. package/dist/ConnectedStreamedWordArtifact-HLJ5IIOU.js.map +1 -0
  24. package/dist/{ConnectedStreamedWordArtifact-BF6JET2D.cjs → ConnectedStreamedWordArtifact-JQ34AOUU.cjs} +10 -10
  25. package/dist/ConnectedStreamedWordArtifact-JQ34AOUU.cjs.map +1 -0
  26. package/dist/{DocumentReviewCard-UOLXZKZE.js → DocumentReviewCard-7JSXRJZ2.js} +6 -6
  27. package/dist/{DocumentReviewCard-UOLXZKZE.js.map → DocumentReviewCard-7JSXRJZ2.js.map} +1 -1
  28. package/dist/{DocumentReviewCard-QVQ2LGFH.cjs → DocumentReviewCard-C4HVT3WM.cjs} +8 -8
  29. package/dist/{DocumentReviewCard-QVQ2LGFH.cjs.map → DocumentReviewCard-C4HVT3WM.cjs.map} +1 -1
  30. package/dist/{FilesViewerDialog-5ELQYWAZ.js → FilesViewerDialog-IMQTZWKD.js} +16 -16
  31. package/dist/{FilesViewerDialog-5ELQYWAZ.js.map → FilesViewerDialog-IMQTZWKD.js.map} +1 -1
  32. package/dist/{FilesViewerDialog-XNGHHWYS.cjs → FilesViewerDialog-UP7GFHYN.cjs} +23 -23
  33. package/dist/{FilesViewerDialog-XNGHHWYS.cjs.map → FilesViewerDialog-UP7GFHYN.cjs.map} +1 -1
  34. package/dist/{RechartsRenderer-EJRIFAAP.js → RechartsRenderer-23OF4H6X.js} +3 -3
  35. package/dist/{RechartsRenderer-EJRIFAAP.js.map → RechartsRenderer-23OF4H6X.js.map} +1 -1
  36. package/dist/{RechartsRenderer-CNFQ5EHF.cjs → RechartsRenderer-GIRCW7DB.cjs} +4 -4
  37. package/dist/{RechartsRenderer-CNFQ5EHF.cjs.map → RechartsRenderer-GIRCW7DB.cjs.map} +1 -1
  38. package/dist/{WorkspaceTableView-HRCV6WR7.cjs → WorkspaceTableView-PJM47B5F.cjs} +8 -8
  39. package/dist/{WorkspaceTableView-HRCV6WR7.cjs.map → WorkspaceTableView-PJM47B5F.cjs.map} +1 -1
  40. package/dist/{WorkspaceTableView-DIMTW5P5.js → WorkspaceTableView-YDA7A4UJ.js} +6 -6
  41. package/dist/{WorkspaceTableView-DIMTW5P5.js.map → WorkspaceTableView-YDA7A4UJ.js.map} +1 -1
  42. package/dist/{ai-E6FA4Y4J.cjs → ai-ADS6YSS2.cjs} +17 -17
  43. package/dist/ai-ADS6YSS2.cjs.map +1 -0
  44. package/dist/{ai-WASSGEMI.js → ai-KHWTGBT5.js} +9 -9
  45. package/dist/ai-KHWTGBT5.js.map +1 -0
  46. package/dist/auth/index.cjs +32 -32
  47. package/dist/auth/index.js +1 -1
  48. package/dist/calls/index.cjs +49 -49
  49. package/dist/calls/index.js +10 -10
  50. package/dist/{chunk-VJAMDAR6.cjs → chunk-22KAKJ3W.cjs} +4 -4
  51. package/dist/{chunk-VJAMDAR6.cjs.map → chunk-22KAKJ3W.cjs.map} +1 -1
  52. package/dist/{chunk-DEIF2VAA.js → chunk-3GFQNJYE.js} +3 -3
  53. package/dist/{chunk-DEIF2VAA.js.map → chunk-3GFQNJYE.js.map} +1 -1
  54. package/dist/{chunk-LUO46ELJ.cjs → chunk-3YZKDCWY.cjs} +2 -2
  55. package/dist/chunk-3YZKDCWY.cjs.map +1 -0
  56. package/dist/{chunk-5OUOPKGE.cjs → chunk-45OU2UAA.cjs} +18 -18
  57. package/dist/{chunk-5OUOPKGE.cjs.map → chunk-45OU2UAA.cjs.map} +1 -1
  58. package/dist/{chunk-JXKNPKU6.cjs → chunk-4CIVQWAX.cjs} +4 -4
  59. package/dist/{chunk-JXKNPKU6.cjs.map → chunk-4CIVQWAX.cjs.map} +1 -1
  60. package/dist/{chunk-VOI26MXJ.cjs → chunk-5AC52BHL.cjs} +16 -16
  61. package/dist/{chunk-VOI26MXJ.cjs.map → chunk-5AC52BHL.cjs.map} +1 -1
  62. package/dist/{chunk-OG3TI5GX.js → chunk-6M5NAAWX.js} +47 -5
  63. package/dist/chunk-6M5NAAWX.js.map +1 -0
  64. package/dist/{chunk-IIUEDF3F.js → chunk-6ZYOUT73.js} +7 -7
  65. package/dist/{chunk-IIUEDF3F.js.map → chunk-6ZYOUT73.js.map} +1 -1
  66. package/dist/{chunk-TRI3LQVR.js → chunk-7S7YVBFK.js} +5 -5
  67. package/dist/{chunk-TRI3LQVR.js.map → chunk-7S7YVBFK.js.map} +1 -1
  68. package/dist/{chunk-QN5GTCPB.cjs → chunk-7V4OCZS6.cjs} +8 -8
  69. package/dist/{chunk-QN5GTCPB.cjs.map → chunk-7V4OCZS6.cjs.map} +1 -1
  70. package/dist/{chunk-S7NJVJJX.cjs → chunk-AHMRYY7J.cjs} +25 -25
  71. package/dist/{chunk-S7NJVJJX.cjs.map → chunk-AHMRYY7J.cjs.map} +1 -1
  72. package/dist/{chunk-GK5BMDS6.js → chunk-AVGHTUPE.js} +4 -4
  73. package/dist/{chunk-GK5BMDS6.js.map → chunk-AVGHTUPE.js.map} +1 -1
  74. package/dist/{chunk-RAYNCZ7O.js → chunk-AZCMKGDG.js} +3 -3
  75. package/dist/{chunk-RAYNCZ7O.js.map → chunk-AZCMKGDG.js.map} +1 -1
  76. package/dist/{chunk-IJVU5MZA.js → chunk-BAUZUIHB.js} +5 -5
  77. package/dist/{chunk-IJVU5MZA.js.map → chunk-BAUZUIHB.js.map} +1 -1
  78. package/dist/{chunk-2VHZUSFW.js → chunk-BBWLFK3C.js} +3 -3
  79. package/dist/{chunk-2VHZUSFW.js.map → chunk-BBWLFK3C.js.map} +1 -1
  80. package/dist/{chunk-MW7FGIF4.cjs → chunk-BFVCYBND.cjs} +9 -9
  81. package/dist/{chunk-MW7FGIF4.cjs.map → chunk-BFVCYBND.cjs.map} +1 -1
  82. package/dist/{chunk-7ONU7EWY.js → chunk-BH6IKGZ3.js} +5 -5
  83. package/dist/{chunk-7ONU7EWY.js.map → chunk-BH6IKGZ3.js.map} +1 -1
  84. package/dist/{chunk-RNX5LAQK.cjs → chunk-C42WBPH4.cjs} +7 -7
  85. package/dist/{chunk-RNX5LAQK.cjs.map → chunk-C42WBPH4.cjs.map} +1 -1
  86. package/dist/{chunk-LM5CPXJO.cjs → chunk-CRLFLMTK.cjs} +19 -13
  87. package/dist/chunk-CRLFLMTK.cjs.map +1 -0
  88. package/dist/{chunk-CWC6W2NE.cjs → chunk-D35EHOK5.cjs} +11 -11
  89. package/dist/{chunk-CWC6W2NE.cjs.map → chunk-D35EHOK5.cjs.map} +1 -1
  90. package/dist/{chunk-BMHW7WTF.js → chunk-DBKZANTC.js} +4 -4
  91. package/dist/{chunk-BMHW7WTF.js.map → chunk-DBKZANTC.js.map} +1 -1
  92. package/dist/{chunk-Q5U6Y2NO.js → chunk-E2P4JJLJ.js} +4 -45
  93. package/dist/chunk-E2P4JJLJ.js.map +1 -0
  94. package/dist/{chunk-D3GZWKHW.cjs → chunk-EKSHUNJI.cjs} +9 -9
  95. package/dist/{chunk-D3GZWKHW.cjs.map → chunk-EKSHUNJI.cjs.map} +1 -1
  96. package/dist/{chunk-5XQNXDST.js → chunk-FPOKWML2.js} +18 -5
  97. package/dist/chunk-FPOKWML2.js.map +1 -0
  98. package/dist/{chunk-M4TM3K52.cjs → chunk-FSXQHEFQ.cjs} +16 -16
  99. package/dist/{chunk-M4TM3K52.cjs.map → chunk-FSXQHEFQ.cjs.map} +1 -1
  100. package/dist/{chunk-35BADIIF.cjs → chunk-GX75YCWJ.cjs} +23 -23
  101. package/dist/{chunk-35BADIIF.cjs.map → chunk-GX75YCWJ.cjs.map} +1 -1
  102. package/dist/{chunk-7IF3E3I2.cjs → chunk-I7CJDF3V.cjs} +4 -4
  103. package/dist/{chunk-7IF3E3I2.cjs.map → chunk-I7CJDF3V.cjs.map} +1 -1
  104. package/dist/{chunk-KYLQRS3O.js → chunk-IHOV6OTA.js} +4 -4
  105. package/dist/{chunk-KYLQRS3O.js.map → chunk-IHOV6OTA.js.map} +1 -1
  106. package/dist/{chunk-OXHAZN43.cjs → chunk-IXL2KJOZ.cjs} +26 -26
  107. package/dist/{chunk-OXHAZN43.cjs.map → chunk-IXL2KJOZ.cjs.map} +1 -1
  108. package/dist/{chunk-632JXVXY.js → chunk-KIXFXCHL.js} +15 -9
  109. package/dist/chunk-KIXFXCHL.js.map +1 -0
  110. package/dist/{chunk-PIWT2GCY.cjs → chunk-LFYKB7KF.cjs} +15 -15
  111. package/dist/{chunk-PIWT2GCY.cjs.map → chunk-LFYKB7KF.cjs.map} +1 -1
  112. package/dist/{chunk-7Q6EVFMT.js → chunk-LYW5A35J.js} +9 -9
  113. package/dist/{chunk-7Q6EVFMT.js.map → chunk-LYW5A35J.js.map} +1 -1
  114. package/dist/chunk-NFK2SEUD.js +577 -0
  115. package/dist/chunk-NFK2SEUD.js.map +1 -0
  116. package/dist/{chunk-TJQMC7GJ.cjs → chunk-NNBL3HPG.cjs} +4 -4
  117. package/dist/{chunk-TJQMC7GJ.cjs.map → chunk-NNBL3HPG.cjs.map} +1 -1
  118. package/dist/{chunk-Y5P5ZMHQ.js → chunk-NWBCZ4PA.js} +4 -4
  119. package/dist/{chunk-Y5P5ZMHQ.js.map → chunk-NWBCZ4PA.js.map} +1 -1
  120. package/dist/{chunk-5UMZXDGL.cjs → chunk-O27K7KTZ.cjs} +161 -7
  121. package/dist/chunk-O27K7KTZ.cjs.map +1 -0
  122. package/dist/{chunk-GARDQALH.js → chunk-OLAYDOPC.js} +5 -5
  123. package/dist/{chunk-GARDQALH.js.map → chunk-OLAYDOPC.js.map} +1 -1
  124. package/dist/chunk-ORELHENJ.cjs +594 -0
  125. package/dist/chunk-ORELHENJ.cjs.map +1 -0
  126. package/dist/{chunk-NUOMPVKQ.js → chunk-OWHO2TO3.js} +3 -3
  127. package/dist/{chunk-NUOMPVKQ.js.map → chunk-OWHO2TO3.js.map} +1 -1
  128. package/dist/{chunk-6XNWGOS3.cjs → chunk-PHDUN4SG.cjs} +187 -80
  129. package/dist/chunk-PHDUN4SG.cjs.map +1 -0
  130. package/dist/{chunk-KGUBKE3V.cjs → chunk-PL7O3RJJ.cjs} +48 -4
  131. package/dist/chunk-PL7O3RJJ.cjs.map +1 -0
  132. package/dist/{chunk-BH4MK2J5.js → chunk-QG6MRLZG.js} +2 -2
  133. package/dist/chunk-QG6MRLZG.js.map +1 -0
  134. package/dist/{chunk-YPTZNQPJ.cjs → chunk-RCZRI72J.cjs} +4 -4
  135. package/dist/{chunk-YPTZNQPJ.cjs.map → chunk-RCZRI72J.cjs.map} +1 -1
  136. package/dist/{chunk-E7STRFBT.cjs → chunk-SCLGUHLU.cjs} +4 -4
  137. package/dist/{chunk-E7STRFBT.cjs.map → chunk-SCLGUHLU.cjs.map} +1 -1
  138. package/dist/{chunk-EOTJX536.js → chunk-T5ZMG6MC.js} +3 -3
  139. package/dist/{chunk-EOTJX536.js.map → chunk-T5ZMG6MC.js.map} +1 -1
  140. package/dist/{chunk-LWEX3AOZ.js → chunk-TG4IICWO.js} +4 -4
  141. package/dist/{chunk-LWEX3AOZ.js.map → chunk-TG4IICWO.js.map} +1 -1
  142. package/dist/{chunk-ET3W24JV.js → chunk-TNKPQ3EF.js} +9 -9
  143. package/dist/{chunk-ET3W24JV.js.map → chunk-TNKPQ3EF.js.map} +1 -1
  144. package/dist/{chunk-QFKL4HV2.js → chunk-U5F5P4YU.js} +118 -15
  145. package/dist/chunk-U5F5P4YU.js.map +1 -0
  146. package/dist/{chunk-N52PBUAP.cjs → chunk-U6LQ6Z3P.cjs} +10 -10
  147. package/dist/{chunk-N52PBUAP.cjs.map → chunk-U6LQ6Z3P.cjs.map} +1 -1
  148. package/dist/{chunk-JNVJQCGF.cjs → chunk-UCA4JLLJ.cjs} +4 -4
  149. package/dist/{chunk-JNVJQCGF.cjs.map → chunk-UCA4JLLJ.cjs.map} +1 -1
  150. package/dist/{chunk-3RUQHIDC.js → chunk-UQ2OBHMV.js} +7 -7
  151. package/dist/{chunk-3RUQHIDC.js.map → chunk-UQ2OBHMV.js.map} +1 -1
  152. package/dist/{chunk-VYJF4ZQY.cjs → chunk-V6C2MBFY.cjs} +3 -2
  153. package/dist/chunk-V6C2MBFY.cjs.map +1 -0
  154. package/dist/{chunk-O4X7HXLF.cjs → chunk-VCEX7COE.cjs} +2 -45
  155. package/dist/chunk-VCEX7COE.cjs.map +1 -0
  156. package/dist/{chunk-QTSNHGSI.js → chunk-WFM6E7DD.js} +3 -3
  157. package/dist/{chunk-QTSNHGSI.js.map → chunk-WFM6E7DD.js.map} +1 -1
  158. package/dist/{chunk-SY2WD6VA.cjs → chunk-WI3BVKEC.cjs} +5 -5
  159. package/dist/{chunk-SY2WD6VA.cjs.map → chunk-WI3BVKEC.cjs.map} +1 -1
  160. package/dist/{chunk-LWCLAAEX.js → chunk-WJHRWXWJ.js} +3 -3
  161. package/dist/{chunk-LWCLAAEX.js.map → chunk-WJHRWXWJ.js.map} +1 -1
  162. package/dist/{chunk-FVZ2CN4A.js → chunk-WQH2WWZE.js} +3 -2
  163. package/dist/chunk-WQH2WWZE.js.map +1 -0
  164. package/dist/{chunk-V2CKYM4B.cjs → chunk-XHN5KOI2.cjs} +9 -9
  165. package/dist/{chunk-V2CKYM4B.cjs.map → chunk-XHN5KOI2.cjs.map} +1 -1
  166. package/dist/{chunk-DBHBJIF4.js → chunk-YJWAGXYM.js} +3 -3
  167. package/dist/{chunk-DBHBJIF4.js.map → chunk-YJWAGXYM.js.map} +1 -1
  168. package/dist/{chunk-KUI2IC7W.js → chunk-YLKHTBYA.js} +3 -3
  169. package/dist/{chunk-KUI2IC7W.js.map → chunk-YLKHTBYA.js.map} +1 -1
  170. package/dist/{chunk-73FJ6L6I.cjs → chunk-ZMVF7EYJ.cjs} +18 -5
  171. package/dist/chunk-ZMVF7EYJ.cjs.map +1 -0
  172. package/dist/{chunk-CEVVGJQX.js → chunk-ZNY5W3VX.js} +162 -9
  173. package/dist/chunk-ZNY5W3VX.js.map +1 -0
  174. package/dist/connect/docx.cjs +13 -13
  175. package/dist/connect/docx.js +9 -9
  176. package/dist/connect/index.cjs +1100 -884
  177. package/dist/connect/index.cjs.map +1 -1
  178. package/dist/connect/index.d.ts +1 -0
  179. package/dist/connect/index.js +475 -274
  180. package/dist/connect/index.js.map +1 -1
  181. package/dist/connect/viewer.cjs +12 -12
  182. package/dist/connect/viewer.js +10 -10
  183. package/dist/connection/account-cluster/ConnectedAccountCluster.d.ts +1 -1
  184. package/dist/connection/dashboards/ConnectedDashboardsPage.d.ts +13 -2
  185. package/dist/connection/dashboards/index.d.ts +1 -1
  186. package/dist/connection/dashboards/templates.d.ts +14 -3
  187. package/dist/connection/remote-control/ConnectedRemoteControlConsent.d.ts +17 -0
  188. package/dist/connection/remote-control/ConnectedRemoteControlIndicator.d.ts +8 -0
  189. package/dist/connection/remote-control/ConnectedRemoteControlSwitch.d.ts +1 -0
  190. package/dist/connection/remote-control/index.d.ts +4 -0
  191. package/dist/connection/remote-control/remoteControl.d.ts +40 -0
  192. package/dist/connection/routes/useDeepLinkSync.d.ts +4 -1
  193. package/dist/connection/runtime/ConnectedAppRuntime.d.ts +1 -1
  194. package/dist/connection/settings-page/settingsSections.d.ts +1 -1
  195. package/dist/connection/tags/ConnectedTagTable.d.ts +1 -1
  196. package/dist/dashboards/index.cjs +327 -116
  197. package/dist/dashboards/index.cjs.map +1 -1
  198. package/dist/dashboards/index.js +311 -101
  199. package/dist/dashboards/index.js.map +1 -1
  200. package/dist/embed/index.cjs +21 -21
  201. package/dist/embed/index.js +14 -14
  202. package/dist/guided/GuidedCursor.d.ts +21 -0
  203. package/dist/guided/cursor.d.ts +56 -0
  204. package/dist/guided/index.d.ts +5 -0
  205. package/dist/guided/runner.d.ts +30 -0
  206. package/dist/guided/sequences.d.ts +80 -0
  207. package/dist/guided/surfaces.d.ts +13 -0
  208. package/dist/guided/useGuidedRuns.d.ts +3 -0
  209. package/dist/index.cjs +171 -135
  210. package/dist/index.d.ts +1 -0
  211. package/dist/index.js +7 -7
  212. package/dist/provider/host.d.ts +6 -0
  213. package/dist/settings/PlanBadge.d.ts +1 -1
  214. package/dist/settings/TipsEditor.d.ts +6 -3
  215. package/dist/settings/index.cjs +152 -151
  216. package/dist/settings/index.js +3 -2
  217. package/dist/shell/index.cjs +46 -46
  218. package/dist/shell/index.js +3 -3
  219. package/dist/studio/index.cjs +15 -15
  220. package/dist/studio/index.js +9 -9
  221. package/dist/styles.css +1 -1
  222. package/dist/workflow-canvas/index.cjs +25 -25
  223. package/dist/workflow-canvas/index.js +13 -13
  224. package/node_modules/@arbidocs/coedit/package.json +1 -1
  225. package/package.json +5 -5
  226. package/dist/ConnectedStreamedWordArtifact-BF6JET2D.cjs.map +0 -1
  227. package/dist/ConnectedStreamedWordArtifact-ILMKFCDC.js.map +0 -1
  228. package/dist/ai-E6FA4Y4J.cjs.map +0 -1
  229. package/dist/ai-WASSGEMI.js.map +0 -1
  230. package/dist/chunk-5UMZXDGL.cjs.map +0 -1
  231. package/dist/chunk-5XQNXDST.js.map +0 -1
  232. package/dist/chunk-632JXVXY.js.map +0 -1
  233. package/dist/chunk-6XNWGOS3.cjs.map +0 -1
  234. package/dist/chunk-73FJ6L6I.cjs.map +0 -1
  235. package/dist/chunk-BH4MK2J5.js.map +0 -1
  236. package/dist/chunk-C4TGESIB.cjs +0 -260
  237. package/dist/chunk-C4TGESIB.cjs.map +0 -1
  238. package/dist/chunk-CEVVGJQX.js.map +0 -1
  239. package/dist/chunk-FVZ2CN4A.js.map +0 -1
  240. package/dist/chunk-KGUBKE3V.cjs.map +0 -1
  241. package/dist/chunk-LM5CPXJO.cjs.map +0 -1
  242. package/dist/chunk-LUO46ELJ.cjs.map +0 -1
  243. package/dist/chunk-MHFWGIF4.js +0 -254
  244. package/dist/chunk-MHFWGIF4.js.map +0 -1
  245. package/dist/chunk-O4X7HXLF.cjs.map +0 -1
  246. package/dist/chunk-OG3TI5GX.js.map +0 -1
  247. package/dist/chunk-Q5U6Y2NO.js.map +0 -1
  248. package/dist/chunk-QFKL4HV2.js.map +0 -1
  249. package/dist/chunk-VYJF4ZQY.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/connection/dashboards/templates.ts","../../src/connection/dashboards/ConnectedDashboardsPage.tsx"],"names":["DashboardGrid","DashboardCell","jsx","DashboardPanel","jsxs","Fragment","Button","Pencil","ArrowUp","ArrowDown","Trash2","DropdownMenu","DropdownMenuTrigger","Plus","DropdownMenuContent","DropdownMenuItem","useBlocksEnvironment","useDashboardStore","useSavedDashboards","useSaveDashboard","useDeleteDashboard","useState","useMemo","useEffect","PageHeader","Label","Input","Dialog","DialogContent","DialogHeader","DialogTitle","DialogDescription","PanelEditor","DialogFooter","ArrowLeft","EmptyState","LayoutDashboard","Card"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * The starting point a new dashboard is offered by default: one panel of each kind over the\n * built-in sources. A site passes its own (`ConnectedDashboardsPage templates`), in its words.\n */\nimport type { DashboardSpec, PanelSpec } from '@arbidocs/react'\n\n/** A fresh panel id. */\nexport function newPanelId(): string {\n return `pnl-${Math.random().toString(36).slice(2, 10)}`\n}\n\n/** A new panel: a bar chart of the documents by type, ready to be changed. */\nexport function newPanel(): PanelSpec {\n return {\n id: newPanelId(),\n title: 'New panel',\n source: { id: 'documents' },\n chart: { type: 'bar', x: 'type' },\n width: 6,\n }\n}\n\nexport const OVERVIEW_DASHBOARD: DashboardSpec = {\n version: 1,\n title: 'Overview',\n description: 'Documents, threads, projects and AI usage at a glance.',\n panels: [\n {\n id: 'documents',\n title: 'Documents',\n source: { id: 'documents' },\n chart: { type: 'metric' },\n width: 3,\n },\n {\n id: 'threads',\n title: 'Threads',\n source: { id: 'conversations' },\n chart: { type: 'metric' },\n width: 3,\n },\n {\n id: 'projects',\n title: 'Projects',\n source: { id: 'projects' },\n chart: { type: 'metric' },\n width: 3,\n },\n {\n id: 'ai-usage',\n title: 'AI usage this period',\n source: { id: 'usage' },\n chart: { type: 'metric', aggregate: 'sum', y: 'spend' },\n width: 3,\n },\n {\n id: 'threads-over-time',\n title: 'Threads started',\n source: { id: 'conversations' },\n chart: { type: 'line', x: 'created', bucket: 'month' },\n width: 6,\n },\n {\n id: 'usage-by-model',\n title: 'AI usage by model',\n source: { id: 'usage' },\n chart: {\n type: 'bar',\n x: 'day',\n bucket: 'day',\n series: 'model',\n y: 'spend',\n aggregate: 'sum',\n stacked: true,\n },\n width: 6,\n },\n {\n id: 'documents-by-type',\n title: 'Documents by type',\n source: { id: 'documents' },\n chart: { type: 'bar', x: 'type', limit: 8 },\n width: 6,\n },\n {\n id: 'projects-by-stage',\n title: 'Projects by stage',\n source: { id: 'projects' },\n chart: { type: 'donut', x: 'stage' },\n width: 6,\n },\n {\n id: 'due',\n title: 'Due dates',\n source: { id: 'conversations' },\n chart: {\n type: 'table',\n columns: ['title', 'due', 'status', 'owner'],\n filters: [{ field: 'due', op: 'not_empty' }],\n orderBy: { field: 'due' },\n },\n width: 12,\n },\n ],\n}\n","/**\n * `ConnectedDashboardsPage`: the saved dashboards, one open to read, and an editor to build them.\n * The list, a dashboard's grid of `DashboardPanel`s, and its edit mode (panels added and changed with\n * `PanelEditor`, moved, removed, then saved) are one kit. Dashboards are kept by the host's store\n * (`useDashboardStore`: by default a database of the open workspace).\n *\n * Generic: the page's words come in through `labels`, and a site's own starting points (its\n * vocabulary, its fields) through `templates`.\n */\nimport { useEffect, useMemo, useState } from 'react'\nimport { ArrowDown, ArrowLeft, ArrowUp, LayoutDashboard, Pencil, Plus, Trash2 } from 'lucide-react'\nimport {\n useDashboardStore,\n useDeleteDashboard,\n useSaveDashboard,\n useSavedDashboards,\n type DashboardSpec,\n type PanelSpec,\n type SavedDashboard,\n} from '@arbidocs/react'\nimport {\n Button,\n Card,\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n Input,\n Label,\n} from '@arbidocs/react/ui'\nimport { EmptyState } from '../../components/EmptyState'\nimport { PageHeader } from '../../components/PageHeader'\nimport { DashboardCell, DashboardGrid } from '../../dashboards/DashboardGrid'\nimport { useBlocksEnvironment } from '../../provider/environment'\nimport { DashboardPanel, type DashboardPanelLabels } from './DashboardPanel'\nimport { PanelEditor, type PanelEditorLabels } from './PanelEditor'\nimport { newPanel, OVERVIEW_DASHBOARD } from './templates'\n\nexport interface DashboardsPageLabels {\n title: string\n description: string\n newDashboard: string\n blank: string\n untitled: string\n empty: string\n emptyDescription: string\n loadError: string\n panels: (count: number) => string\n back: string\n edit: string\n delete: string\n confirmDelete: (title: string) => string\n save: string\n saving: string\n cancel: string\n dashboardTitle: string\n dashboardDescription: string\n addPanel: string\n editPanel: string\n editPanelDescription: string\n panelDone: string\n moveUp: string\n moveDown: string\n removePanel: string\n noPanels: string\n saved: string\n saveFailed: string\n}\n\nexport const DEFAULT_DASHBOARDS_PAGE_LABELS: DashboardsPageLabels = {\n title: 'Dashboards',\n description: 'Charts and figures from your documents, threads, projects, AI usage and databases.',\n newDashboard: 'New dashboard',\n blank: 'Blank dashboard',\n untitled: 'Untitled dashboard',\n empty: 'No dashboards yet',\n emptyDescription: 'Start from a template or a blank page, then add charts, figures and tables.',\n loadError: 'The dashboards could not be loaded.',\n panels: (count) => `${count} ${count === 1 ? 'panel' : 'panels'}`,\n back: 'All dashboards',\n edit: 'Edit',\n delete: 'Delete',\n confirmDelete: (title) => `Delete the dashboard “${title}”? Its panels go with it.`,\n save: 'Save',\n saving: 'Saving…',\n cancel: 'Cancel',\n dashboardTitle: 'Name',\n dashboardDescription: 'Description',\n addPanel: 'Add a panel',\n editPanel: 'Panel',\n editPanelDescription: 'Choose the data, how to show it, and what to measure.',\n panelDone: 'Done',\n moveUp: 'Move up',\n moveDown: 'Move down',\n removePanel: 'Remove the panel',\n noPanels: 'No panels yet. Add one to start.',\n saved: 'Dashboard saved',\n saveFailed: 'The dashboard could not be saved',\n}\n\nexport interface ConnectedDashboardsPageProps {\n /** Starting points for a new dashboard. Default: an overview of the built-in sources. */\n templates?: readonly DashboardSpec[]\n /** The open dashboard (controlled, for a route): `null` is the list. */\n dashboardId?: string | null\n onDashboardChange?: (id: string | null) => void\n labels?: Partial<DashboardsPageLabels>\n panelLabels?: Partial<DashboardPanelLabels>\n editorLabels?: Partial<PanelEditorLabels>\n testId?: string\n}\n\n/** What is being edited: a saved dashboard (`id`) or a new one. */\ninterface Draft {\n id?: string\n spec: DashboardSpec\n}\n\nfunction PanelsGrid({\n spec,\n panelLabels,\n editing,\n testId,\n}: {\n spec: DashboardSpec\n panelLabels?: Partial<DashboardPanelLabels>\n editing?: {\n l: DashboardsPageLabels\n onEdit: (index: number) => void\n onMove: (index: number, by: -1 | 1) => void\n onRemove: (index: number) => void\n }\n testId?: string\n}) {\n return (\n <DashboardGrid testId={testId && `${testId}-grid`}>\n {spec.panels.map((panel, i) => (\n <DashboardCell key={panel.id} width={panel.width}>\n <DashboardPanel\n panel={panel}\n labels={panelLabels}\n testId={testId && `${testId}-panel-${panel.id}`}\n actions={\n editing && (\n <>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"size-7\"\n aria-label={editing.l.editPanel}\n onClick={() => editing.onEdit(i)}\n >\n <Pencil className=\"size-3.5\" />\n </Button>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"size-7\"\n aria-label={editing.l.moveUp}\n disabled={i === 0}\n onClick={() => editing.onMove(i, -1)}\n >\n <ArrowUp className=\"size-3.5\" />\n </Button>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"size-7\"\n aria-label={editing.l.moveDown}\n disabled={i === spec.panels.length - 1}\n onClick={() => editing.onMove(i, 1)}\n >\n <ArrowDown className=\"size-3.5\" />\n </Button>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"size-7\"\n aria-label={editing.l.removePanel}\n onClick={() => editing.onRemove(i)}\n >\n <Trash2 className=\"size-3.5\" />\n </Button>\n </>\n )\n }\n />\n </DashboardCell>\n ))}\n </DashboardGrid>\n )\n}\n\nfunction NewDashboardButton({\n templates,\n l,\n onCreate,\n testId,\n}: {\n templates: readonly DashboardSpec[]\n l: DashboardsPageLabels\n onCreate: (spec: DashboardSpec) => void\n testId?: string\n}) {\n const blank: DashboardSpec = { version: 1, title: l.untitled, panels: [] }\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button data-testid={testId && `${testId}-new`}>\n <Plus className=\"size-4\" /> {l.newDashboard}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onSelect={() => onCreate(blank)}>{l.blank}</DropdownMenuItem>\n {templates.map((t, i) => (\n <DropdownMenuItem\n key={`${t.title}-${i}`}\n onSelect={() => onCreate(t)}\n data-testid={testId && `${testId}-template-${i}`}\n >\n {t.title}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n\nexport function ConnectedDashboardsPage({\n templates = [OVERVIEW_DASHBOARD],\n dashboardId,\n onDashboardChange,\n labels,\n panelLabels,\n editorLabels,\n testId = 'dashboards',\n}: ConnectedDashboardsPageProps) {\n const l = { ...DEFAULT_DASHBOARDS_PAGE_LABELS, ...labels }\n const { confirm, notify } = useBlocksEnvironment()\n const store = useDashboardStore()\n const saved = useSavedDashboards(store)\n const save = useSaveDashboard(store)\n const remove = useDeleteDashboard(store)\n\n const [ownOpenId, setOwnOpenId] = useState<string | null>(null)\n const openId = dashboardId === undefined ? ownOpenId : dashboardId\n const setOpenId = (id: string | null) => {\n setOwnOpenId(id)\n onDashboardChange?.(id)\n }\n const [draft, setDraft] = useState<Draft | null>(null)\n const [editingPanel, setEditingPanel] = useState<{ index: number; panel: PanelSpec } | null>(null)\n\n const open = useMemo(() => saved.data?.find((d) => d.id === openId), [saved.data, openId])\n // A dashboard deleted elsewhere (or a stale link): back to the list.\n useEffect(() => {\n if (openId && saved.data && !open && !draft) setOwnOpenId(null)\n }, [openId, saved.data, open, draft])\n\n const startEditing = (d: SavedDashboard | Draft) => setDraft({ id: d.id, spec: d.spec })\n const createFrom = (spec: DashboardSpec) =>\n setDraft({ spec: { ...spec, panels: spec.panels.map((p) => ({ ...p })) } })\n\n const updateDraft = (patch: Partial<DashboardSpec>) =>\n setDraft((d) => (d ? { ...d, spec: { ...d.spec, ...patch } } : d))\n const setPanels = (panels: PanelSpec[]) => updateDraft({ panels })\n\n const commit = async () => {\n if (!draft) return\n try {\n const result = await save.mutateAsync({\n id: draft.id,\n spec: { ...draft.spec, title: draft.spec.title.trim() || l.untitled },\n })\n setDraft(null)\n setOpenId(result.id)\n notify(l.saved, 'success')\n } catch (error) {\n notify(`${l.saveFailed}: ${error instanceof Error ? error.message : String(error)}`, 'error')\n }\n }\n\n const deleteOpen = async (d: SavedDashboard) => {\n if (!(await confirm({ message: l.confirmDelete(d.spec.title), kind: 'yesno' }))) return\n await remove.mutateAsync(d.id)\n setOpenId(null)\n }\n\n let content\n if (draft) {\n const panels = draft.spec.panels\n content = (\n <div className=\"space-y-6\" data-testid={`${testId}-editor`}>\n <PageHeader\n title={draft.spec.title || l.untitled}\n actions={\n <div className=\"flex gap-2\">\n <Button variant=\"ghost\" onClick={() => setDraft(null)}>\n {l.cancel}\n </Button>\n <Button\n onClick={() => void commit()}\n disabled={save.isPending}\n data-testid={`${testId}-save`}\n >\n {save.isPending ? l.saving : l.save}\n </Button>\n </div>\n }\n />\n <div className=\"grid gap-4 sm:grid-cols-2\">\n <div className=\"flex flex-col gap-1.5\">\n <Label htmlFor={`${testId}-name`}>{l.dashboardTitle}</Label>\n <Input\n id={`${testId}-name`}\n value={draft.spec.title}\n onChange={(e) => updateDraft({ title: e.target.value })}\n data-testid={`${testId}-name`}\n />\n </div>\n <div className=\"flex flex-col gap-1.5\">\n <Label htmlFor={`${testId}-about`}>{l.dashboardDescription}</Label>\n <Input\n id={`${testId}-about`}\n value={draft.spec.description ?? ''}\n onChange={(e) => updateDraft({ description: e.target.value || undefined })}\n />\n </div>\n </div>\n {panels.length ? (\n <PanelsGrid\n spec={draft.spec}\n panelLabels={panelLabels}\n testId={testId}\n editing={{\n l,\n onEdit: (index) => setEditingPanel({ index, panel: panels[index] }),\n onMove: (index, by) => {\n const next = [...panels]\n const [moved] = next.splice(index, 1)\n next.splice(index + by, 0, moved)\n setPanels(next)\n },\n onRemove: (index) => setPanels(panels.filter((_, i) => i !== index)),\n }}\n />\n ) : (\n <p className=\"text-sm text-muted-foreground\">{l.noPanels}</p>\n )}\n <Button\n variant=\"outline\"\n onClick={() => setEditingPanel({ index: panels.length, panel: newPanel() })}\n data-testid={`${testId}-add-panel`}\n >\n <Plus className=\"size-4\" /> {l.addPanel}\n </Button>\n <Dialog open={editingPanel !== null} onOpenChange={(o) => !o && setEditingPanel(null)}>\n <DialogContent className=\"max-h-[90dvh] max-w-5xl overflow-y-auto\">\n <DialogHeader>\n <DialogTitle>{l.editPanel}</DialogTitle>\n <DialogDescription>{l.editPanelDescription}</DialogDescription>\n </DialogHeader>\n {editingPanel && (\n <PanelEditor\n value={editingPanel.panel}\n onChange={(panel) => setEditingPanel({ ...editingPanel, panel })}\n labels={editorLabels}\n testId={`${testId}-panel-editor`}\n />\n )}\n <DialogFooter>\n <Button variant=\"ghost\" onClick={() => setEditingPanel(null)}>\n {l.cancel}\n </Button>\n <Button\n data-testid={`${testId}-panel-done`}\n onClick={() => {\n if (!editingPanel) return\n const next = [...panels]\n next[editingPanel.index] = editingPanel.panel\n setPanels(next)\n setEditingPanel(null)\n }}\n >\n {l.panelDone}\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n </div>\n )\n } else if (open) {\n content = (\n <div className=\"space-y-6\" data-testid={`${testId}-view`}>\n <PageHeader\n title={open.spec.title}\n description={open.spec.description}\n leading={\n <Button variant=\"ghost\" size=\"icon\" aria-label={l.back} onClick={() => setOpenId(null)}>\n <ArrowLeft className=\"size-4\" />\n </Button>\n }\n actions={\n <div className=\"flex gap-2\">\n <Button\n variant=\"outline\"\n onClick={() => startEditing(open)}\n data-testid={`${testId}-edit`}\n >\n <Pencil className=\"size-4\" /> {l.edit}\n </Button>\n <Button\n variant=\"ghost\"\n onClick={() => void deleteOpen(open)}\n data-testid={`${testId}-delete`}\n >\n <Trash2 className=\"size-4\" /> {l.delete}\n </Button>\n </div>\n }\n />\n <PanelsGrid spec={open.spec} panelLabels={panelLabels} testId={testId} />\n </div>\n )\n } else {\n const list = saved.data ?? []\n content = (\n <div className=\"space-y-6\" data-testid={`${testId}-list`}>\n <PageHeader\n title={l.title}\n description={l.description}\n actions={\n <NewDashboardButton templates={templates} l={l} onCreate={createFrom} testId={testId} />\n }\n />\n {saved.isError ? (\n <p className=\"text-sm text-destructive\" role=\"alert\">\n {l.loadError}\n </p>\n ) : saved.isLoading ? (\n <div className=\"grid gap-4 sm:grid-cols-2 lg:grid-cols-3\">\n {[0, 1, 2].map((i) => (\n <div key={i} className=\"h-24 animate-pulse rounded-xl bg-muted\" />\n ))}\n </div>\n ) : list.length === 0 ? (\n <EmptyState\n icon={LayoutDashboard}\n title={l.empty}\n description={l.emptyDescription}\n action={<NewDashboardButton templates={templates} l={l} onCreate={createFrom} />}\n testId={`${testId}-empty`}\n />\n ) : (\n <ul className=\"grid gap-4 sm:grid-cols-2 lg:grid-cols-3\">\n {list.map((d) => (\n <li key={d.id}>\n <Card variant=\"elevated\" className=\"card-hover h-full rounded-xl p-0\">\n <button\n type=\"button\"\n className=\"flex size-full flex-col items-start gap-1 rounded-xl p-5 text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n onClick={() => setOpenId(d.id)}\n data-testid={`${testId}-open-${d.id}`}\n >\n <span className=\"flex items-center gap-2 font-medium text-foreground\">\n <LayoutDashboard className=\"size-4 text-muted-foreground\" />\n {d.spec.title}\n </span>\n {d.spec.description && (\n <span className=\"line-clamp-2 text-sm text-muted-foreground\">\n {d.spec.description}\n </span>\n )}\n <span className=\"text-xs text-muted-foreground\">\n {l.panels(d.spec.panels.length)}\n </span>\n </button>\n </Card>\n </li>\n ))}\n </ul>\n )}\n </div>\n )\n }\n\n return <div data-testid={testId}>{content}</div>\n}\n"]}
1
+ {"version":3,"sources":["../../src/connection/dashboards/templates.ts","../../src/connection/dashboards/ConnectedDashboardsPage.tsx"],"names":["DEFAULT_DOCUMENTS_SOURCE_LABELS","DEFAULT_WORKFLOWS_SOURCE_LABELS","DEFAULT_ACTIVITY_SOURCE_LABELS","DashboardGrid","panel","DashboardCell","jsx","DashboardPanel","jsxs","Fragment","Button","Pencil","ArrowUp","ArrowDown","Trash2","DropdownMenu","DropdownMenuTrigger","Plus","DropdownMenuContent","DropdownMenuItem","useBlocksEnvironment","useFeature","useDashboardStore","useSavedDashboards","useSaveDashboard","useDeleteDashboard","useState","useMemo","useEffect","PageHeader","Label","Input","Dialog","DialogContent","DialogHeader","DialogTitle","DialogDescription","PanelEditor","DialogFooter","ArrowLeft","MoreHorizontal","EmptyState","LayoutDashboard","Card","cn"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * The starting points a new dashboard is offered by default (`DASHBOARD_TEMPLATES`): an overview,\n * then one dashboard per area (documents, tags and facts, workflows, AI usage, recent activity),\n * over the built-in sources and their default words. A site passes its own\n * (`ConnectedDashboardsPage templates`), in its words.\n */\nimport {\n DEFAULT_ACTIVITY_SOURCE_LABELS,\n DEFAULT_DOCUMENTS_SOURCE_LABELS,\n DEFAULT_WORKFLOWS_SOURCE_LABELS,\n type ChartSpec,\n type DashboardSpec,\n type PanelSpec,\n} from '@arbidocs/react'\n\n/** A fresh panel id. */\nexport function newPanelId(): string {\n return `pnl-${Math.random().toString(36).slice(2, 10)}`\n}\n\n/** A new panel: a bar chart of the documents by type, ready to be changed. */\nexport function newPanel(): PanelSpec {\n return {\n id: newPanelId(),\n title: 'New panel',\n source: { id: 'documents' },\n chart: { type: 'bar', x: 'type' },\n width: 6,\n }\n}\n\n/** A panel of `source`, `width` columns wide. */\nconst panel = (\n id: string,\n title: string,\n source: string,\n chart: ChartSpec,\n width = 6\n): PanelSpec => ({ id, title, source: { id: source }, chart, width })\n\n/** One figure, a quarter of the row by default. */\nconst metric = (\n id: string,\n title: string,\n source: string,\n chart: Omit<ChartSpec, 'type'> = {},\n width = 3\n): PanelSpec => panel(id, title, source, { type: 'metric', ...chart }, width)\n\nconst FAILED_DOCUMENT = DEFAULT_DOCUMENTS_SOURCE_LABELS.statuses.failed\nconst FAILED_RUN = DEFAULT_WORKFLOWS_SOURCE_LABELS.results.failed\nconst WORKFLOW_RUN = DEFAULT_ACTIVITY_SOURCE_LABELS.kinds.workflow_run\n\nconst DOCUMENTS_BY_TYPE = panel('documents-by-type', 'Documents by type', 'documents', {\n type: 'bar',\n x: 'type',\n limit: 8,\n})\nconst DOCUMENTS_BY_STATUS = panel('documents-by-status', 'Documents by status', 'documents', {\n type: 'donut',\n x: 'status',\n})\nconst AI_USAGE_BY_MODEL = panel('usage-by-model', 'AI usage by model', 'usage', {\n type: 'bar',\n x: 'day',\n bucket: 'day',\n series: 'model',\n y: 'spend',\n aggregate: 'sum',\n stacked: true,\n})\nconst WORKFLOW_RUNS_BY_DAY = panel(\n 'workflow-runs-by-day',\n 'Workflow runs by day',\n 'activity',\n {\n type: 'bar',\n x: 'when',\n bucket: 'day',\n series: 'status',\n stacked: true,\n filters: [{ field: 'kind', op: 'eq', value: WORKFLOW_RUN }],\n },\n 12\n)\n\nexport const OVERVIEW_DASHBOARD: DashboardSpec = {\n version: 1,\n title: 'Overview',\n description: 'Documents, threads, facts and AI usage at a glance.',\n panels: [\n metric('documents', 'Documents', 'documents'),\n metric('threads', 'Threads', 'conversations'),\n metric('facts', 'Facts', 'facts'),\n metric('ai-usage', 'AI usage this period', 'usage', { aggregate: 'sum', y: 'spend' }),\n panel('threads-over-time', 'Threads started', 'conversations', {\n type: 'line',\n x: 'created',\n bucket: 'month',\n }),\n AI_USAGE_BY_MODEL,\n DOCUMENTS_BY_TYPE,\n DOCUMENTS_BY_STATUS,\n panel(\n 'due',\n 'Due dates',\n 'conversations',\n {\n type: 'table',\n columns: ['title', 'due', 'status', 'owner'],\n filters: [{ field: 'due', op: 'not_empty' }],\n orderBy: { field: 'due' },\n },\n 12\n ),\n ],\n}\n\nconst DOCUMENTS_DASHBOARD: DashboardSpec = {\n version: 1,\n title: 'Documents',\n description: 'What the workspace holds: status, type, folders, who added what, and when.',\n panels: [\n metric('documents', 'Documents', 'documents'),\n metric('pages', 'Pages', 'documents', { aggregate: 'sum', y: 'pages' }),\n metric('size', 'Stored', 'documents', { aggregate: 'sum', y: 'size' }),\n metric('failed', 'Failed to process', 'documents', {\n filters: [{ field: 'status', op: 'eq', value: FAILED_DOCUMENT }],\n }),\n DOCUMENTS_BY_STATUS,\n DOCUMENTS_BY_TYPE,\n panel('documents-added', 'Documents added', 'documents', {\n type: 'line',\n x: 'created',\n bucket: 'month',\n }),\n panel('documents-by-folder', 'Documents by folder', 'documents', {\n type: 'bar',\n x: 'folder',\n limit: 10,\n }),\n panel('documents-by-person', 'Added by', 'documents', { type: 'bar', x: 'createdBy' }),\n panel('documents-by-kind', 'Kinds of document', 'documents', {\n type: 'donut',\n x: 'nature',\n limit: 8,\n }),\n panel(\n 'latest-documents',\n 'Latest documents',\n 'documents',\n {\n type: 'table',\n columns: ['name', 'type', 'status', 'createdBy', 'created'],\n orderBy: { field: 'created', direction: 'desc' },\n limit: 10,\n },\n 12\n ),\n ],\n}\n\nconst TAGS_FACTS_DASHBOARD: DashboardSpec = {\n version: 1,\n title: 'Tags and facts',\n description: 'How the workspace is organised: its tags and what carries them, and its facts.',\n panels: [\n metric('tags', 'Tags', 'tags'),\n metric('facts', 'Facts', 'facts'),\n metric('confirmed-facts', 'Confirmed facts', 'facts', {\n filters: [{ field: 'confirmed', op: 'eq', value: true }],\n }),\n metric('dated-facts', 'Dated facts', 'facts', {\n filters: [{ field: 'date', op: 'not_empty' }],\n }),\n panel('most-used-tags', 'Most used tags', 'tags', {\n type: 'bar',\n x: 'name',\n y: 'documents',\n aggregate: 'sum',\n limit: 10,\n // Tags on no document yet are not \"used\": none at all shows the empty state.\n filters: [{ field: 'documents', op: 'gt', value: 0 }],\n }),\n panel('tags-by-kind', 'Tags by kind', 'tags', { type: 'donut', x: 'kind' }),\n panel('facts-by-tag', 'Facts by tag', 'facts', { type: 'bar', x: 'tags', limit: 10 }),\n panel('facts-added', 'Facts added', 'facts', { type: 'line', x: 'created', bucket: 'month' }),\n panel(\n 'latest-facts',\n 'Latest facts',\n 'facts',\n {\n type: 'table',\n columns: ['text', 'tags', 'date', 'createdBy'],\n orderBy: { field: 'created', direction: 'desc' },\n limit: 10,\n },\n 12\n ),\n ],\n}\n\nconst WORKFLOWS_DASHBOARD: DashboardSpec = {\n version: 1,\n title: 'Workflows',\n description: 'Your workflows: what starts them, how their runs end, and what runs next.',\n panels: [\n metric('workflows', 'Workflows', 'workflows', {}, 4),\n metric(\n 'workflows-on',\n 'Switched on',\n 'workflows',\n {\n filters: [{ field: 'active', op: 'eq', value: true }],\n },\n 4\n ),\n metric(\n 'workflows-failed',\n 'Last run failed',\n 'workflows',\n {\n filters: [{ field: 'lastResult', op: 'eq', value: FAILED_RUN }],\n },\n 4\n ),\n panel('workflows-by-result', 'Last run result', 'workflows', {\n type: 'donut',\n x: 'lastResult',\n }),\n panel('workflows-by-trigger', 'What starts them', 'workflows', { type: 'bar', x: 'trigger' }),\n WORKFLOW_RUNS_BY_DAY,\n panel(\n 'next-runs',\n 'Next runs',\n 'workflows',\n {\n type: 'table',\n columns: ['name', 'trigger', 'nextRun', 'lastResult'],\n filters: [{ field: 'nextRun', op: 'not_empty' }],\n orderBy: { field: 'nextRun' },\n limit: 10,\n },\n 12\n ),\n ],\n}\n\nconst AI_USAGE_DASHBOARD: DashboardSpec = {\n version: 1,\n title: 'AI usage',\n description: 'What the AI has done and cost this period, by day, model and project.',\n panels: [\n metric('ai-spend', 'AI usage this period', 'usage', { aggregate: 'sum', y: 'spend' }, 4),\n metric('ai-tokens', 'Tokens', 'usage', { aggregate: 'sum', y: 'tokens' }, 4),\n metric('ai-requests', 'Requests', 'usage', { aggregate: 'sum', y: 'requests' }, 4),\n panel(\n 'spend-by-day',\n 'AI usage by day',\n 'usage',\n { type: 'line', x: 'day', bucket: 'day', y: 'spend', aggregate: 'sum' },\n 12\n ),\n AI_USAGE_BY_MODEL,\n panel('tokens-by-model', 'Tokens by model', 'usage', {\n type: 'bar',\n x: 'model',\n y: 'tokens',\n aggregate: 'sum',\n limit: 6,\n }),\n panel(\n 'spend-by-project',\n 'AI usage by project',\n 'usage',\n { type: 'bar', x: 'project', y: 'spend', aggregate: 'sum' },\n 12\n ),\n ],\n}\n\nconst ACTIVITY_DASHBOARD: DashboardSpec = {\n version: 1,\n title: 'Recent activity',\n description: 'The latest activity in the workspace: who did what, where, and when.',\n panels: [\n panel(\n 'activity-by-day',\n 'Activity by day',\n 'activity',\n { type: 'bar', x: 'when', bucket: 'day', series: 'area', stacked: true },\n 12\n ),\n panel('activity-by-area', 'Activity by area', 'activity', { type: 'donut', x: 'area' }),\n panel('activity-by-person', 'Activity by person', 'activity', {\n type: 'bar',\n x: 'person',\n limit: 10,\n }),\n WORKFLOW_RUNS_BY_DAY,\n panel(\n 'latest-activity',\n 'Latest activity',\n 'activity',\n {\n type: 'table',\n columns: ['when', 'person', 'kind', 'item', 'status'],\n orderBy: { field: 'when', direction: 'desc' },\n limit: 15,\n },\n 12\n ),\n ],\n}\n\n/**\n * The templates a host's features allow: one with a panel over the workflows source only while\n * the `workflows` feature is on.\n */\nexport function templatesFor(\n templates: readonly DashboardSpec[],\n features: { workflows: boolean }\n): readonly DashboardSpec[] {\n return features.workflows\n ? templates\n : templates.filter((t) => !t.panels.some((p) => p.source.id === 'workflows'))\n}\n\n/** The default templates under \"New dashboard\", in order (`templatesFor` narrows them). */\nexport const DASHBOARD_TEMPLATES: readonly DashboardSpec[] = [\n OVERVIEW_DASHBOARD,\n DOCUMENTS_DASHBOARD,\n TAGS_FACTS_DASHBOARD,\n WORKFLOWS_DASHBOARD,\n AI_USAGE_DASHBOARD,\n ACTIVITY_DASHBOARD,\n]\n","/**\n * `ConnectedDashboardsPage`: the saved dashboards, one open to read, and an editor to build them.\n * The list, a dashboard's grid of `DashboardPanel`s, and its edit mode (panels added and changed with\n * `PanelEditor`, moved, removed, then saved) are one kit. Dashboards are kept by the host's store\n * (`useDashboardStore`: by default a database of the open workspace).\n *\n * Generic: the page's words come in through `labels`, and a site's own starting points (its\n * vocabulary, its fields) through `templates`.\n */\nimport { useEffect, useMemo, useState } from 'react'\nimport {\n ArrowDown,\n ArrowLeft,\n ArrowUp,\n LayoutDashboard,\n MoreHorizontal,\n Pencil,\n Plus,\n Trash2,\n} from 'lucide-react'\nimport {\n useFeature,\n useDashboardStore,\n useDeleteDashboard,\n useSaveDashboard,\n useSavedDashboards,\n type DashboardSpec,\n type PanelSpec,\n type SavedDashboard,\n} from '@arbidocs/react'\nimport {\n Button,\n Card,\n cn,\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n Input,\n Label,\n} from '@arbidocs/react/ui'\nimport { EmptyState } from '../../components/EmptyState'\nimport { PageHeader } from '../../components/PageHeader'\nimport { DashboardCell, DashboardGrid } from '../../dashboards/DashboardGrid'\nimport { useBlocksEnvironment } from '../../provider/environment'\nimport { DashboardPanel, type DashboardPanelLabels } from './DashboardPanel'\nimport { PanelEditor, type PanelEditorLabels } from './PanelEditor'\nimport { DASHBOARD_TEMPLATES, newPanel, templatesFor } from './templates'\n\nexport interface DashboardsPageLabels {\n title: string\n description: string\n newDashboard: string\n blank: string\n untitled: string\n empty: string\n emptyDescription: string\n loadError: string\n panels: (count: number) => string\n back: string\n edit: string\n /** The \"…\" menu of an open dashboard (its rarer actions: delete). */\n more: string\n delete: string\n confirmDelete: (title: string) => string\n save: string\n saving: string\n cancel: string\n dashboardTitle: string\n dashboardDescription: string\n addPanel: string\n editPanel: string\n editPanelDescription: string\n panelDone: string\n moveUp: string\n moveDown: string\n removePanel: string\n noPanels: string\n saved: string\n saveFailed: string\n}\n\nexport const DEFAULT_DASHBOARDS_PAGE_LABELS: DashboardsPageLabels = {\n title: 'Dashboards',\n description:\n 'Charts and figures from your documents, threads, tags, facts, workflows, AI usage and databases.',\n newDashboard: 'New dashboard',\n blank: 'Blank dashboard',\n untitled: 'Untitled dashboard',\n empty: 'No dashboards yet',\n emptyDescription: 'Start from a template or a blank page, then add charts, figures and tables.',\n loadError: 'The dashboards could not be loaded.',\n panels: (count) => `${count} ${count === 1 ? 'panel' : 'panels'}`,\n back: 'All dashboards',\n edit: 'Edit',\n more: 'More dashboard actions',\n delete: 'Delete',\n confirmDelete: (title) => `Delete the dashboard “${title}”? Its panels go with it.`,\n save: 'Save',\n saving: 'Saving…',\n cancel: 'Cancel',\n dashboardTitle: 'Name',\n dashboardDescription: 'Description',\n addPanel: 'Add a panel',\n editPanel: 'Panel',\n editPanelDescription: 'Choose the data, how to show it, and what to measure.',\n panelDone: 'Done',\n moveUp: 'Move up',\n moveDown: 'Move down',\n removePanel: 'Remove the panel',\n noPanels: 'No panels yet. Add one to start.',\n saved: 'Dashboard saved',\n saveFailed: 'The dashboard could not be saved',\n}\n\nexport interface ConnectedDashboardsPageProps {\n /**\n * Starting points for a new dashboard. Default: an overview and one per area (documents, tags and\n * facts, workflows, AI usage, recent activity) over the built-in sources; Workflows only while\n * the host's `workflows` feature is on.\n */\n templates?: readonly DashboardSpec[]\n /** The open dashboard (controlled, for a route): `null` is the list. */\n dashboardId?: string | null\n onDashboardChange?: (id: string | null) => void\n labels?: Partial<DashboardsPageLabels>\n panelLabels?: Partial<DashboardPanelLabels>\n editorLabels?: Partial<PanelEditorLabels>\n /**\n * Classes on the page's scrolling frame, merged over its padding (`p-4 sm:p-6`): a host whose\n * own frame pads its pages passes `p-0`.\n */\n className?: string\n testId?: string\n}\n\n/** What is being edited: a saved dashboard (`id`) or a new one. */\ninterface Draft {\n id?: string\n spec: DashboardSpec\n}\n\nfunction PanelsGrid({\n spec,\n panelLabels,\n editing,\n testId,\n}: {\n spec: DashboardSpec\n panelLabels?: Partial<DashboardPanelLabels>\n editing?: {\n l: DashboardsPageLabels\n onEdit: (index: number) => void\n onMove: (index: number, by: -1 | 1) => void\n onRemove: (index: number) => void\n }\n testId?: string\n}) {\n return (\n <DashboardGrid testId={testId && `${testId}-grid`}>\n {spec.panels.map((panel, i) => (\n <DashboardCell key={panel.id} width={panel.width}>\n <DashboardPanel\n panel={panel}\n labels={panelLabels}\n testId={testId && `${testId}-panel-${panel.id}`}\n actions={\n editing && (\n <>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"size-7\"\n aria-label={editing.l.editPanel}\n onClick={() => editing.onEdit(i)}\n >\n <Pencil className=\"size-3.5\" />\n </Button>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"size-7\"\n aria-label={editing.l.moveUp}\n disabled={i === 0}\n onClick={() => editing.onMove(i, -1)}\n >\n <ArrowUp className=\"size-3.5\" />\n </Button>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"size-7\"\n aria-label={editing.l.moveDown}\n disabled={i === spec.panels.length - 1}\n onClick={() => editing.onMove(i, 1)}\n >\n <ArrowDown className=\"size-3.5\" />\n </Button>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"size-7\"\n aria-label={editing.l.removePanel}\n onClick={() => editing.onRemove(i)}\n >\n <Trash2 className=\"size-3.5\" />\n </Button>\n </>\n )\n }\n />\n </DashboardCell>\n ))}\n </DashboardGrid>\n )\n}\n\nfunction NewDashboardButton({\n templates,\n l,\n onCreate,\n testId,\n}: {\n templates: readonly DashboardSpec[]\n l: DashboardsPageLabels\n onCreate: (spec: DashboardSpec) => void\n testId?: string\n}) {\n const blank: DashboardSpec = { version: 1, title: l.untitled, panels: [] }\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button data-testid={testId && `${testId}-new`}>\n <Plus className=\"size-4\" /> {l.newDashboard}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onSelect={() => onCreate(blank)}>{l.blank}</DropdownMenuItem>\n {templates.map((t, i) => (\n <DropdownMenuItem\n key={`${t.title}-${i}`}\n onSelect={() => onCreate(t)}\n data-testid={testId && `${testId}-template-${i}`}\n >\n {t.title}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n\nexport function ConnectedDashboardsPage({\n templates: siteTemplates,\n dashboardId,\n onDashboardChange,\n labels,\n panelLabels,\n editorLabels,\n className,\n testId = 'dashboards',\n}: ConnectedDashboardsPageProps) {\n const l = { ...DEFAULT_DASHBOARDS_PAGE_LABELS, ...labels }\n const { confirm, notify } = useBlocksEnvironment()\n const workflowsOn = useFeature('workflows')\n const templates = siteTemplates ?? templatesFor(DASHBOARD_TEMPLATES, { workflows: workflowsOn })\n const store = useDashboardStore()\n const saved = useSavedDashboards(store)\n const save = useSaveDashboard(store)\n const remove = useDeleteDashboard(store)\n\n const [ownOpenId, setOwnOpenId] = useState<string | null>(null)\n const openId = dashboardId === undefined ? ownOpenId : dashboardId\n const setOpenId = (id: string | null) => {\n setOwnOpenId(id)\n onDashboardChange?.(id)\n }\n const [draft, setDraft] = useState<Draft | null>(null)\n const [editingPanel, setEditingPanel] = useState<{ index: number; panel: PanelSpec } | null>(null)\n\n const open = useMemo(() => saved.data?.find((d) => d.id === openId), [saved.data, openId])\n // A dashboard deleted elsewhere (or a stale link): back to the list.\n useEffect(() => {\n if (openId && saved.data && !open && !draft) setOwnOpenId(null)\n }, [openId, saved.data, open, draft])\n\n const startEditing = (d: SavedDashboard | Draft) => setDraft({ id: d.id, spec: d.spec })\n const createFrom = (spec: DashboardSpec) =>\n setDraft({ spec: { ...spec, panels: spec.panels.map((p) => ({ ...p })) } })\n\n const updateDraft = (patch: Partial<DashboardSpec>) =>\n setDraft((d) => (d ? { ...d, spec: { ...d.spec, ...patch } } : d))\n const setPanels = (panels: PanelSpec[]) => updateDraft({ panels })\n\n const commit = async () => {\n if (!draft) return\n try {\n const result = await save.mutateAsync({\n id: draft.id,\n spec: { ...draft.spec, title: draft.spec.title.trim() || l.untitled },\n })\n setDraft(null)\n setOpenId(result.id)\n notify(l.saved, 'success')\n } catch (error) {\n notify(`${l.saveFailed}: ${error instanceof Error ? error.message : String(error)}`, 'error')\n }\n }\n\n const deleteOpen = async (d: SavedDashboard) => {\n if (!(await confirm({ message: l.confirmDelete(d.spec.title), kind: 'yesno' }))) return\n await remove.mutateAsync(d.id)\n setOpenId(null)\n }\n\n let content\n if (draft) {\n const panels = draft.spec.panels\n content = (\n <div className=\"space-y-6\" data-testid={`${testId}-editor`}>\n <PageHeader\n title={draft.spec.title || l.untitled}\n actions={\n <div className=\"flex gap-2\">\n <Button variant=\"ghost\" onClick={() => setDraft(null)}>\n {l.cancel}\n </Button>\n <Button\n onClick={() => void commit()}\n disabled={save.isPending}\n data-testid={`${testId}-save`}\n >\n {save.isPending ? l.saving : l.save}\n </Button>\n </div>\n }\n />\n <div className=\"grid gap-4 sm:grid-cols-2\">\n <div className=\"flex flex-col gap-1.5\">\n <Label htmlFor={`${testId}-name`}>{l.dashboardTitle}</Label>\n <Input\n id={`${testId}-name`}\n value={draft.spec.title}\n onChange={(e) => updateDraft({ title: e.target.value })}\n data-testid={`${testId}-name`}\n />\n </div>\n <div className=\"flex flex-col gap-1.5\">\n <Label htmlFor={`${testId}-about`}>{l.dashboardDescription}</Label>\n <Input\n id={`${testId}-about`}\n value={draft.spec.description ?? ''}\n onChange={(e) => updateDraft({ description: e.target.value || undefined })}\n />\n </div>\n </div>\n {panels.length ? (\n <PanelsGrid\n spec={draft.spec}\n panelLabels={panelLabels}\n testId={testId}\n editing={{\n l,\n onEdit: (index) => setEditingPanel({ index, panel: panels[index] }),\n onMove: (index, by) => {\n const next = [...panels]\n const [moved] = next.splice(index, 1)\n next.splice(index + by, 0, moved)\n setPanels(next)\n },\n onRemove: (index) => setPanels(panels.filter((_, i) => i !== index)),\n }}\n />\n ) : (\n <p className=\"text-sm text-muted-foreground\">{l.noPanels}</p>\n )}\n <Button\n variant=\"outline\"\n onClick={() => setEditingPanel({ index: panels.length, panel: newPanel() })}\n data-testid={`${testId}-add-panel`}\n >\n <Plus className=\"size-4\" /> {l.addPanel}\n </Button>\n <Dialog open={editingPanel !== null} onOpenChange={(o) => !o && setEditingPanel(null)}>\n <DialogContent className=\"max-h-[90dvh] max-w-5xl overflow-y-auto\">\n <DialogHeader>\n <DialogTitle>{l.editPanel}</DialogTitle>\n <DialogDescription>{l.editPanelDescription}</DialogDescription>\n </DialogHeader>\n {editingPanel && (\n <PanelEditor\n value={editingPanel.panel}\n onChange={(panel) => setEditingPanel({ ...editingPanel, panel })}\n labels={editorLabels}\n testId={`${testId}-panel-editor`}\n />\n )}\n <DialogFooter>\n <Button variant=\"ghost\" onClick={() => setEditingPanel(null)}>\n {l.cancel}\n </Button>\n <Button\n data-testid={`${testId}-panel-done`}\n onClick={() => {\n if (!editingPanel) return\n const next = [...panels]\n next[editingPanel.index] = editingPanel.panel\n setPanels(next)\n setEditingPanel(null)\n }}\n >\n {l.panelDone}\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n </div>\n )\n } else if (open) {\n content = (\n <div className=\"space-y-6\" data-testid={`${testId}-view`}>\n <PageHeader\n title={open.spec.title}\n description={open.spec.description}\n leading={\n <Button variant=\"ghost\" size=\"icon\" aria-label={l.back} onClick={() => setOpenId(null)}>\n <ArrowLeft className=\"size-4\" />\n </Button>\n }\n actions={\n <div className=\"flex gap-2\">\n <Button\n variant=\"outline\"\n onClick={() => startEditing(open)}\n data-testid={`${testId}-edit`}\n >\n <Pencil className=\"size-4\" /> {l.edit}\n </Button>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n aria-label={l.more}\n data-testid={`${testId}-more`}\n >\n <MoreHorizontal className=\"size-4\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem\n onSelect={() => void deleteOpen(open)}\n className=\"text-destructive focus:text-destructive\"\n data-testid={`${testId}-delete`}\n >\n <Trash2 className=\"size-4\" /> {l.delete}\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n }\n />\n <PanelsGrid spec={open.spec} panelLabels={panelLabels} testId={testId} />\n </div>\n )\n } else {\n const list = saved.data ?? []\n content = (\n <div className=\"space-y-6\" data-testid={`${testId}-list`}>\n <PageHeader\n title={l.title}\n description={l.description}\n actions={\n <NewDashboardButton templates={templates} l={l} onCreate={createFrom} testId={testId} />\n }\n />\n {saved.isError ? (\n <p className=\"text-sm text-destructive\" role=\"alert\">\n {l.loadError}\n </p>\n ) : saved.isLoading ? (\n <div className=\"grid gap-4 sm:grid-cols-2 lg:grid-cols-3\">\n {[0, 1, 2].map((i) => (\n <div key={i} className=\"h-24 animate-pulse rounded-xl bg-muted\" />\n ))}\n </div>\n ) : list.length === 0 ? (\n <EmptyState\n icon={LayoutDashboard}\n title={l.empty}\n description={l.emptyDescription}\n action={<NewDashboardButton templates={templates} l={l} onCreate={createFrom} />}\n testId={`${testId}-empty`}\n />\n ) : (\n <ul className=\"grid gap-4 sm:grid-cols-2 lg:grid-cols-3\">\n {list.map((d) => (\n <li key={d.id}>\n <Card variant=\"elevated\" className=\"card-hover h-full rounded-xl p-0\">\n <button\n type=\"button\"\n className=\"flex size-full flex-col items-start gap-1 rounded-xl p-5 text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n onClick={() => setOpenId(d.id)}\n data-testid={`${testId}-open-${d.id}`}\n >\n <span className=\"flex items-center gap-2 font-medium text-foreground\">\n <LayoutDashboard className=\"size-4 text-muted-foreground\" />\n {d.spec.title}\n </span>\n {d.spec.description && (\n <span className=\"line-clamp-2 text-sm text-muted-foreground\">\n {d.spec.description}\n </span>\n )}\n <span className=\"text-xs text-muted-foreground\">\n {l.panels(d.spec.panels.length)}\n </span>\n </button>\n </Card>\n </li>\n ))}\n </ul>\n )}\n </div>\n )\n }\n\n // The page scrolls and pads itself, as the other kit pages do, so a host only mounts it.\n return (\n <div\n className={cn('h-full min-h-0 w-full overflow-y-auto p-4 sm:p-6', className)}\n data-testid={testId}\n >\n {content}\n </div>\n )\n}\n"]}