@arbidocs/blocks 0.4.141 → 0.4.143

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 (222) hide show
  1. package/dist/agents/index.cjs +440 -436
  2. package/dist/agents/index.js +12 -8
  3. package/dist/chat/index.cjs +139 -138
  4. package/dist/chat/index.js +4 -3
  5. package/dist/{chunk-S24XEVPS.cjs → chunk-464YPRAE.cjs} +33 -2
  6. package/dist/chunk-464YPRAE.cjs.map +1 -0
  7. package/dist/{chunk-7YLJHTDC.cjs → chunk-5A2QQAF5.cjs} +11 -11
  8. package/dist/{chunk-7YLJHTDC.cjs.map → chunk-5A2QQAF5.cjs.map} +1 -1
  9. package/dist/{chunk-ON3TKY5Y.js → chunk-5YHEHEJT.js} +242 -4
  10. package/dist/chunk-5YHEHEJT.js.map +1 -0
  11. package/dist/chunk-76L6LOP3.cjs +308 -0
  12. package/dist/chunk-76L6LOP3.cjs.map +1 -0
  13. package/dist/chunk-AHDJXIUB.cjs +25 -0
  14. package/dist/chunk-AHDJXIUB.cjs.map +1 -0
  15. package/dist/chunk-AOSUHWIL.js +98 -0
  16. package/dist/chunk-AOSUHWIL.js.map +1 -0
  17. package/dist/{chunk-YFF3GTJQ.js → chunk-C44TDH54.js} +14 -1613
  18. package/dist/chunk-C44TDH54.js.map +1 -0
  19. package/dist/{chunk-GFRQG36Y.cjs → chunk-COCGRJLA.cjs} +213 -57
  20. package/dist/chunk-COCGRJLA.cjs.map +1 -0
  21. package/dist/chunk-CQCC7LE7.js +210 -0
  22. package/dist/chunk-CQCC7LE7.js.map +1 -0
  23. package/dist/{chunk-UGCKUXRV.js → chunk-CSI2B2H5.js} +3 -3
  24. package/dist/{chunk-UGCKUXRV.js.map → chunk-CSI2B2H5.js.map} +1 -1
  25. package/dist/{chunk-R26BK7YL.cjs → chunk-DTROMMDX.cjs} +4 -4
  26. package/dist/{chunk-R26BK7YL.cjs.map → chunk-DTROMMDX.cjs.map} +1 -1
  27. package/dist/{chunk-65THHQVB.cjs → chunk-ECW2R2KF.cjs} +27 -27
  28. package/dist/{chunk-65THHQVB.cjs.map → chunk-ECW2R2KF.cjs.map} +1 -1
  29. package/dist/{chunk-RI6DZA5X.js → chunk-EF4ZLKRM.js} +3 -3
  30. package/dist/{chunk-RI6DZA5X.js.map → chunk-EF4ZLKRM.js.map} +1 -1
  31. package/dist/{chunk-WS5EX7DN.cjs → chunk-EYKISBDO.cjs} +5 -5
  32. package/dist/{chunk-WS5EX7DN.cjs.map → chunk-EYKISBDO.cjs.map} +1 -1
  33. package/dist/chunk-FJETR2AS.js +561 -0
  34. package/dist/chunk-FJETR2AS.js.map +1 -0
  35. package/dist/{chunk-JO3EMZ4X.js → chunk-GWSGIZQ5.js} +3 -3
  36. package/dist/{chunk-JO3EMZ4X.js.map → chunk-GWSGIZQ5.js.map} +1 -1
  37. package/dist/{chunk-O6W6RW3B.js → chunk-H4D7WKDY.js} +207 -54
  38. package/dist/chunk-H4D7WKDY.js.map +1 -0
  39. package/dist/{chunk-OAQEUTNJ.cjs → chunk-HAOKT4LC.cjs} +5 -5
  40. package/dist/{chunk-OAQEUTNJ.cjs.map → chunk-HAOKT4LC.cjs.map} +1 -1
  41. package/dist/{chunk-YWY2KIX2.js → chunk-IJST4EBM.js} +13 -9
  42. package/dist/chunk-IJST4EBM.js.map +1 -0
  43. package/dist/{chunk-3RJN2VTL.js → chunk-IXWJGOM2.js} +3 -3
  44. package/dist/{chunk-3RJN2VTL.js.map → chunk-IXWJGOM2.js.map} +1 -1
  45. package/dist/{chunk-CYNF5PZI.js → chunk-J5CWKFSC.js} +3 -3
  46. package/dist/{chunk-CYNF5PZI.js.map → chunk-J5CWKFSC.js.map} +1 -1
  47. package/dist/{chunk-OWCEQKAR.cjs → chunk-JSTKEZBS.cjs} +21 -318
  48. package/dist/chunk-JSTKEZBS.cjs.map +1 -0
  49. package/dist/{chunk-TP6PLDNM.cjs → chunk-KMZWKSKO.cjs} +8 -8
  50. package/dist/{chunk-TP6PLDNM.cjs.map → chunk-KMZWKSKO.cjs.map} +1 -1
  51. package/dist/{chunk-C4WSHRR6.cjs → chunk-KPZZ5FHE.cjs} +32 -12
  52. package/dist/chunk-KPZZ5FHE.cjs.map +1 -0
  53. package/dist/{chunk-CKCBBYTA.js → chunk-KSHKTOY2.js} +5 -205
  54. package/dist/chunk-KSHKTOY2.js.map +1 -0
  55. package/dist/chunk-LJJJ6CYH.cjs +62 -0
  56. package/dist/chunk-LJJJ6CYH.cjs.map +1 -0
  57. package/dist/chunk-LPYEUD2D.cjs +1627 -0
  58. package/dist/chunk-LPYEUD2D.cjs.map +1 -0
  59. package/dist/chunk-MHFF5N65.cjs +101 -0
  60. package/dist/chunk-MHFF5N65.cjs.map +1 -0
  61. package/dist/{chunk-GYAUJ4KT.js → chunk-MTSKK3BN.js} +32 -3
  62. package/dist/chunk-MTSKK3BN.js.map +1 -0
  63. package/dist/chunk-NHZK64TQ.js +75 -0
  64. package/dist/chunk-NHZK64TQ.js.map +1 -0
  65. package/dist/{chunk-BPBSSMRB.js → chunk-NRFAWUVD.js} +3 -3
  66. package/dist/{chunk-BPBSSMRB.js.map → chunk-NRFAWUVD.js.map} +1 -1
  67. package/dist/chunk-NWNVWO6L.cjs +80 -0
  68. package/dist/chunk-NWNVWO6L.cjs.map +1 -0
  69. package/dist/{chunk-CQ4MFKFC.cjs → chunk-O2GW5IY6.cjs} +90 -86
  70. package/dist/chunk-O2GW5IY6.cjs.map +1 -0
  71. package/dist/{chunk-3BFGL2JL.cjs → chunk-ODRHHWHY.cjs} +4 -4
  72. package/dist/{chunk-3BFGL2JL.cjs.map → chunk-ODRHHWHY.cjs.map} +1 -1
  73. package/dist/{chunk-Y3KA6X7B.js → chunk-OVR3XMYL.js} +4 -4
  74. package/dist/{chunk-Y3KA6X7B.js.map → chunk-OVR3XMYL.js.map} +1 -1
  75. package/dist/{chunk-Y5KTM3V5.js → chunk-PDKM27DF.js} +17 -295
  76. package/dist/chunk-PDKM27DF.js.map +1 -0
  77. package/dist/{chunk-OAL3B2ZU.cjs → chunk-PLJ7PHWU.cjs} +5 -5
  78. package/dist/{chunk-OAL3B2ZU.cjs.map → chunk-PLJ7PHWU.cjs.map} +1 -1
  79. package/dist/{chunk-2UUNSHDI.cjs → chunk-RB7GX2VT.cjs} +59 -1682
  80. package/dist/chunk-RB7GX2VT.cjs.map +1 -0
  81. package/dist/chunk-RFIBUWLF.cjs +232 -0
  82. package/dist/chunk-RFIBUWLF.cjs.map +1 -0
  83. package/dist/chunk-RLWIUUQ5.js +23 -0
  84. package/dist/chunk-RLWIUUQ5.js.map +1 -0
  85. package/dist/{chunk-MIDXCYZB.cjs → chunk-RQ2Y7USX.cjs} +15 -235
  86. package/dist/chunk-RQ2Y7USX.cjs.map +1 -0
  87. package/dist/chunk-SV65E4QW.js +58 -0
  88. package/dist/chunk-SV65E4QW.js.map +1 -0
  89. package/dist/{chunk-LYUO3E6V.js → chunk-SZOFGU7W.js} +3 -3
  90. package/dist/{chunk-LYUO3E6V.js.map → chunk-SZOFGU7W.js.map} +1 -1
  91. package/dist/chunk-T5B7FM7S.js +1602 -0
  92. package/dist/chunk-T5B7FM7S.js.map +1 -0
  93. package/dist/{chunk-YNIBUKV5.js → chunk-TBEVGWY3.js} +32 -14
  94. package/dist/chunk-TBEVGWY3.js.map +1 -0
  95. package/dist/{chunk-MJCCBMM5.cjs → chunk-TC3RQNEX.cjs} +6 -80
  96. package/dist/chunk-TC3RQNEX.cjs.map +1 -0
  97. package/dist/chunk-TZGBRLPK.js +288 -0
  98. package/dist/chunk-TZGBRLPK.js.map +1 -0
  99. package/dist/chunk-U6YVZDOV.cjs +574 -0
  100. package/dist/chunk-U6YVZDOV.cjs.map +1 -0
  101. package/dist/{chunk-QIMVTGKS.cjs → chunk-U73KPFYH.cjs} +255 -2
  102. package/dist/chunk-U73KPFYH.cjs.map +1 -0
  103. package/dist/{chunk-HFGXA5CL.cjs → chunk-UTTTJSQU.cjs} +4 -4
  104. package/dist/{chunk-HFGXA5CL.cjs.map → chunk-UTTTJSQU.cjs.map} +1 -1
  105. package/dist/{chunk-DLBUFHLY.js → chunk-VTTZZ4FN.js} +4 -74
  106. package/dist/chunk-VTTZZ4FN.js.map +1 -0
  107. package/dist/{chunk-5FTIHRZH.cjs → chunk-XVUOMWMD.cjs} +4 -4
  108. package/dist/{chunk-5FTIHRZH.cjs.map → chunk-XVUOMWMD.cjs.map} +1 -1
  109. package/dist/{chunk-3ZYOASAX.js → chunk-Y4ATWQGV.js} +3 -3
  110. package/dist/{chunk-3ZYOASAX.js.map → chunk-Y4ATWQGV.js.map} +1 -1
  111. package/dist/{chunk-444XKG46.js → chunk-YKQ2DPIP.js} +3 -3
  112. package/dist/{chunk-444XKG46.js.map → chunk-YKQ2DPIP.js.map} +1 -1
  113. package/dist/{chunk-HEMU73OP.cjs → chunk-YSHIC4NJ.cjs} +4 -4
  114. package/dist/{chunk-HEMU73OP.cjs.map → chunk-YSHIC4NJ.cjs.map} +1 -1
  115. package/dist/{chunk-5BXEYYH6.js → chunk-ZM26YEOT.js} +3 -3
  116. package/dist/{chunk-5BXEYYH6.js.map → chunk-ZM26YEOT.js.map} +1 -1
  117. package/dist/citations/index.cjs +12 -12
  118. package/dist/citations/index.js +3 -3
  119. package/dist/connect/docx.cjs +36 -7
  120. package/dist/connect/docx.cjs.map +1 -1
  121. package/dist/connect/docx.d.ts +9 -2
  122. package/dist/connect/docx.js +30 -6
  123. package/dist/connect/docx.js.map +1 -1
  124. package/dist/connect/index.cjs +805 -630
  125. package/dist/connect/index.cjs.map +1 -1
  126. package/dist/connect/index.d.ts +2 -0
  127. package/dist/connect/index.js +639 -509
  128. package/dist/connect/index.js.map +1 -1
  129. package/dist/connection/ConnectedSettings.d.ts +3 -2
  130. package/dist/connection/docx/ConnectedNativeDocxComparison.d.ts +5 -0
  131. package/dist/connection/docx/ConnectedNativeDocxEditor.d.ts +16 -0
  132. package/dist/connection/{ConnectedStreamedWordArtifact.d.ts → docx/ConnectedStreamedWordArtifact.d.ts} +1 -1
  133. package/dist/connection/docx/support.d.ts +27 -0
  134. package/dist/connection/docx/useConnectedDocxReferences.d.ts +2 -0
  135. package/dist/connection/docx/useConnectedHouseTemplate.d.ts +2 -0
  136. package/dist/connection/settings-page/ConnectedAccountSettings.d.ts +35 -0
  137. package/dist/connection/settings-page/ConnectedMailSettings.d.ts +13 -0
  138. package/dist/connection/settings-page/ConnectedPremiumModels.d.ts +1 -0
  139. package/dist/connection/settings-page/ConnectedPrivacySettings.d.ts +12 -0
  140. package/dist/connection/settings-page/ConnectedSettingsPage.d.ts +29 -0
  141. package/dist/connection/settings-page/SessionStatusIcon.d.ts +7 -0
  142. package/dist/connection/settings-page/index.d.ts +6 -0
  143. package/dist/docx/index.cjs +17 -63
  144. package/dist/docx/index.cjs.map +1 -1
  145. package/dist/docx/index.d.ts +1 -0
  146. package/dist/docx/index.js +2 -64
  147. package/dist/docx/index.js.map +1 -1
  148. package/dist/docx/template/candidates.d.ts +16 -0
  149. package/dist/facts/index.cjs +4 -4
  150. package/dist/facts/index.js +3 -3
  151. package/dist/files/index.cjs +3 -3
  152. package/dist/files/index.js +2 -2
  153. package/dist/home/index.cjs +20 -20
  154. package/dist/home/index.js +4 -4
  155. package/dist/index.cjs +793 -755
  156. package/dist/index.cjs.map +1 -1
  157. package/dist/index.d.ts +2 -0
  158. package/dist/index.js +25 -19
  159. package/dist/index.js.map +1 -1
  160. package/dist/lib/deep-link.d.ts +46 -0
  161. package/dist/lib/sidebar-mode.d.ts +1 -3
  162. package/dist/lib/use-close-on-escape.d.ts +6 -0
  163. package/dist/provider/BlocksProvider.d.ts +5 -1
  164. package/dist/provider/settings-section.d.ts +9 -0
  165. package/dist/retrieval/index.cjs +4 -4
  166. package/dist/retrieval/index.js +2 -2
  167. package/dist/settings/AppearanceSettings.d.ts +18 -0
  168. package/dist/settings/ServerConnectionControls.d.ts +16 -0
  169. package/dist/settings/SettingsPage.d.ts +31 -0
  170. package/dist/settings/index.cjs +189 -251
  171. package/dist/settings/index.cjs.map +1 -1
  172. package/dist/settings/index.d.ts +3 -1
  173. package/dist/settings/index.js +89 -200
  174. package/dist/settings/index.js.map +1 -1
  175. package/dist/shell/ShellSidebar.d.ts +37 -0
  176. package/dist/shell/Sidebar.d.ts +6 -6
  177. package/dist/shell/index.cjs +63 -50
  178. package/dist/shell/index.d.ts +4 -1
  179. package/dist/shell/index.js +5 -4
  180. package/dist/shell/types.d.ts +18 -0
  181. package/dist/shell/use-sidebar-controller.d.ts +59 -0
  182. package/dist/site/index.cjs +74 -73
  183. package/dist/site/index.js +3 -2
  184. package/dist/studio/index.cjs +80 -78
  185. package/dist/studio/index.cjs.map +1 -1
  186. package/dist/studio/index.js +10 -8
  187. package/dist/studio/index.js.map +1 -1
  188. package/dist/workflow-canvas/index.cjs +64 -60
  189. package/dist/workflow-canvas/index.cjs.map +1 -1
  190. package/dist/workflow-canvas/index.js +12 -8
  191. package/dist/workflow-canvas/index.js.map +1 -1
  192. package/dist/workspaces/index.cjs +3 -3
  193. package/dist/workspaces/index.js +2 -2
  194. package/node_modules/@arbidocs/coedit/package.json +1 -1
  195. package/package.json +4 -4
  196. package/dist/chunk-2UUNSHDI.cjs.map +0 -1
  197. package/dist/chunk-4TR5QCCX.cjs +0 -43
  198. package/dist/chunk-4TR5QCCX.cjs.map +0 -1
  199. package/dist/chunk-7NDW4KF4.cjs +0 -112
  200. package/dist/chunk-7NDW4KF4.cjs.map +0 -1
  201. package/dist/chunk-C4WSHRR6.cjs.map +0 -1
  202. package/dist/chunk-CKCBBYTA.js.map +0 -1
  203. package/dist/chunk-CQ4MFKFC.cjs.map +0 -1
  204. package/dist/chunk-DLBUFHLY.js.map +0 -1
  205. package/dist/chunk-ETXYVO6E.js +0 -109
  206. package/dist/chunk-ETXYVO6E.js.map +0 -1
  207. package/dist/chunk-GFRQG36Y.cjs.map +0 -1
  208. package/dist/chunk-GYAUJ4KT.js.map +0 -1
  209. package/dist/chunk-MCKOZACC.js +0 -41
  210. package/dist/chunk-MCKOZACC.js.map +0 -1
  211. package/dist/chunk-MIDXCYZB.cjs.map +0 -1
  212. package/dist/chunk-MJCCBMM5.cjs.map +0 -1
  213. package/dist/chunk-O6W6RW3B.js.map +0 -1
  214. package/dist/chunk-ON3TKY5Y.js.map +0 -1
  215. package/dist/chunk-OWCEQKAR.cjs.map +0 -1
  216. package/dist/chunk-QIMVTGKS.cjs.map +0 -1
  217. package/dist/chunk-S24XEVPS.cjs.map +0 -1
  218. package/dist/chunk-Y5KTM3V5.js.map +0 -1
  219. package/dist/chunk-YFF3GTJQ.js.map +0 -1
  220. package/dist/chunk-YNIBUKV5.js.map +0 -1
  221. package/dist/chunk-YWY2KIX2.js.map +0 -1
  222. package/dist/connection/ConnectedNativeDocxEditor.d.ts +0 -6
@@ -1,8 +1,10 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkR26BK7YL_cjs = require('./chunk-R26BK7YL.cjs');
4
+ var chunkAHDJXIUB_cjs = require('./chunk-AHDJXIUB.cjs');
5
+ var chunkDTROMMDX_cjs = require('./chunk-DTROMMDX.cjs');
5
6
  var chunkB6MVQCXW_cjs = require('./chunk-B6MVQCXW.cjs');
7
+ var chunkFX3K6LNZ_cjs = require('./chunk-FX3K6LNZ.cjs');
6
8
  var chunkMHVNT4J3_cjs = require('./chunk-MHVNT4J3.cjs');
7
9
  var react = require('react');
8
10
  var lucideReact = require('lucide-react');
@@ -102,7 +104,6 @@ function SidebarRoot({
102
104
  mode,
103
105
  expanded,
104
106
  isHovering = false,
105
- isPeeking = false,
106
107
  onBackdropClick,
107
108
  hasRailBackdrop = false,
108
109
  onMouseEnter,
@@ -166,18 +167,16 @@ function SidebarRoot({
166
167
  "nav",
167
168
  {
168
169
  ...common,
169
- className: ui.cn(navBase, "absolute left-0 top-0 z-[45]", isPeeking && "shadow-xl", className),
170
+ className: ui.cn(navBase, "absolute left-0 top-0 z-[45]", className),
170
171
  style: {
171
- width: isPeeking ? EXPANDED_WIDTH : "0px",
172
+ width: "0px",
172
173
  minWidth: 0,
173
- paddingLeft: isPeeking ? "0.75rem" : 0,
174
- paddingRight: isPeeking ? "0.75rem" : 0,
175
- borderRightWidth: isPeeking ? void 0 : 0,
176
- pointerEvents: isPeeking ? "auto" : "none"
174
+ paddingLeft: 0,
175
+ paddingRight: 0,
176
+ borderRightWidth: 0,
177
+ pointerEvents: "none"
177
178
  },
178
- inert: !isPeeking,
179
- onMouseEnter,
180
- onMouseLeave,
179
+ inert: true,
181
180
  children
182
181
  }
183
182
  );
@@ -246,7 +245,13 @@ function SidebarHeader({ children, className, "data-testid": testId }) {
246
245
  }
247
246
  );
248
247
  }
249
- function SidebarNav({ items, children, className, "data-testid": testId }) {
248
+ function SidebarNav({
249
+ items,
250
+ sections,
251
+ children,
252
+ className,
253
+ "data-testid": testId
254
+ }) {
250
255
  const { expanded } = useSidebarContext();
251
256
  return /* @__PURE__ */ jsxRuntime.jsxs(
252
257
  "div",
@@ -256,6 +261,16 @@ function SidebarNav({ items, children, className, "data-testid": testId }) {
256
261
  className: ui.cn("flex flex-shrink-0 flex-col gap-0.5", !expanded && "items-center", className),
257
262
  children: [
258
263
  items?.map((item) => /* @__PURE__ */ jsxRuntime.jsx(SidebarNavItem, { ...item }, item.id)),
264
+ sections?.map((section) => /* @__PURE__ */ jsxRuntime.jsx(
265
+ SidebarGroup,
266
+ {
267
+ label: section.label,
268
+ ariaLabel: section.ariaLabel,
269
+ "data-testid": section.testId,
270
+ children: section.items.map((item) => /* @__PURE__ */ jsxRuntime.jsx(SidebarNavItem, { ...item }, item.id))
271
+ },
272
+ section.id
273
+ )),
259
274
  children
260
275
  ]
261
276
  }
@@ -320,6 +335,11 @@ function SidebarFooter({ children, className, "data-testid": testId }) {
320
335
  }
321
336
  );
322
337
  }
338
+ var INDICATOR_TONES = {
339
+ progress: "bg-primary",
340
+ error: "bg-red-solid",
341
+ attention: "bg-yellow-solid"
342
+ };
323
343
  function SidebarNavItem({
324
344
  label,
325
345
  icon,
@@ -331,6 +351,7 @@ function SidebarNavItem({
331
351
  testId,
332
352
  disabled = false,
333
353
  trailing,
354
+ indicator,
334
355
  className,
335
356
  tooltip
336
357
  }) {
@@ -339,7 +360,7 @@ function SidebarNavItem({
339
360
  const tip = expanded ? void 0 : tooltip ?? label;
340
361
  if (!expanded) {
341
362
  const railButton = /* @__PURE__ */ jsxRuntime.jsx(
342
- chunkR26BK7YL_cjs.ActionLink,
363
+ chunkDTROMMDX_cjs.ActionLink,
343
364
  {
344
365
  href,
345
366
  onSelect,
@@ -354,7 +375,20 @@ function SidebarNavItem({
354
375
  disabled && "pointer-events-none cursor-not-allowed opacity-30",
355
376
  className
356
377
  ),
357
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex size-5 items-center justify-center", children: icon })
378
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex size-5 items-center justify-center", children: indicator ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
379
+ icon,
380
+ /* @__PURE__ */ jsxRuntime.jsx(
381
+ "div",
382
+ {
383
+ "data-slot": "sidebar-nav-indicator",
384
+ "data-tone": indicator,
385
+ className: ui.cn(
386
+ "absolute -right-1 -top-1 size-2.5 rounded-full border border-sidebar",
387
+ INDICATOR_TONES[indicator]
388
+ )
389
+ }
390
+ )
391
+ ] }) : icon })
358
392
  }
359
393
  );
360
394
  if (!tip) return railButton;
@@ -384,7 +418,7 @@ function SidebarNavItem({
384
418
  );
385
419
  if (href && !disabled && !trailing) {
386
420
  return /* @__PURE__ */ jsxRuntime.jsxs(
387
- chunkR26BK7YL_cjs.ActionLink,
421
+ chunkDTROMMDX_cjs.ActionLink,
388
422
  {
389
423
  href,
390
424
  onSelect,
@@ -415,7 +449,7 @@ function SidebarNavItem({
415
449
  className: ui.cn(rowClass, "relative"),
416
450
  children: [
417
451
  /* @__PURE__ */ jsxRuntime.jsx(
418
- chunkR26BK7YL_cjs.ActionLink,
452
+ chunkDTROMMDX_cjs.ActionLink,
419
453
  {
420
454
  href,
421
455
  onSelect,
@@ -536,6 +570,163 @@ var Sidebar = {
536
570
  BadgeRow: SidebarBadgeRow,
537
571
  DrawerHeader: SidebarDrawerHeader
538
572
  };
573
+ function ShellSidebar({
574
+ controller,
575
+ drawerLogo,
576
+ drawerCloseTestId,
577
+ header,
578
+ items,
579
+ sections,
580
+ navClassName,
581
+ tips,
582
+ footer,
583
+ ...rootProps
584
+ }) {
585
+ if (controller.layout.hidden) return null;
586
+ return /* @__PURE__ */ jsxRuntime.jsxs(Sidebar.Root, { ...controller.rootProps, ...rootProps, children: [
587
+ controller.isDrawer && drawerLogo && /* @__PURE__ */ jsxRuntime.jsx(
588
+ Sidebar.DrawerHeader,
589
+ {
590
+ logo: drawerLogo,
591
+ onClose: controller.closeDrawer,
592
+ "data-testid": drawerCloseTestId
593
+ }
594
+ ),
595
+ header && /* @__PURE__ */ jsxRuntime.jsx(Sidebar.Header, { children: header }),
596
+ /* @__PURE__ */ jsxRuntime.jsx(Sidebar.Nav, { items, sections, className: navClassName }),
597
+ (tips || footer) && /* @__PURE__ */ jsxRuntime.jsxs(Sidebar.Footer, { children: [
598
+ controller.tipsVisible && tips,
599
+ footer
600
+ ] })
601
+ ] });
602
+ }
603
+ function useCloseOnEscape(isActive, onClose) {
604
+ const onCloseRef = react.useRef(onClose);
605
+ react.useEffect(() => {
606
+ onCloseRef.current = onClose;
607
+ });
608
+ react.useEffect(() => {
609
+ if (!isActive) return;
610
+ const onKeyDown = (e) => {
611
+ if (e.key === "Escape" && !e.defaultPrevented) onCloseRef.current();
612
+ };
613
+ document.addEventListener("keydown", onKeyDown);
614
+ return () => document.removeEventListener("keydown", onKeyDown);
615
+ }, [isActive]);
616
+ }
617
+ function resolveSidebarLayout(input) {
618
+ const { isSmallScreen, isDrawerRequested, isCollapsed, isPinned, isHovering } = input;
619
+ const canPin = isPinned && !isSmallScreen && !input.isNarrow;
620
+ const drawerOpen = isSmallScreen && isDrawerRequested;
621
+ const effectiveCollapsed = isCollapsed || isSmallScreen && !drawerOpen;
622
+ const hovering = isHovering && !isSmallScreen;
623
+ let mode;
624
+ if (drawerOpen) mode = "drawer";
625
+ else if (effectiveCollapsed) mode = "collapsed";
626
+ else if (canPin) mode = "pinned";
627
+ else mode = "rail";
628
+ const expanded = drawerOpen || !effectiveCollapsed && (canPin || hovering);
629
+ return { mode, expanded, hidden: isSmallScreen && !drawerOpen, hovering };
630
+ }
631
+ function useSidebarSettle(expanded, settleMs = 300) {
632
+ const [labelsExpanded, setLabelsExpanded] = react.useState(expanded);
633
+ const [tipsVisible, setTipsVisible] = react.useState(expanded);
634
+ const labelsTimer = react.useRef(null);
635
+ const tipsTimer = react.useRef(null);
636
+ react.useEffect(() => {
637
+ if (labelsTimer.current) clearTimeout(labelsTimer.current);
638
+ if (expanded) setLabelsExpanded(true);
639
+ else labelsTimer.current = setTimeout(() => setLabelsExpanded(false), settleMs);
640
+ return () => {
641
+ if (labelsTimer.current) clearTimeout(labelsTimer.current);
642
+ };
643
+ }, [expanded, settleMs]);
644
+ react.useEffect(() => {
645
+ if (tipsTimer.current) clearTimeout(tipsTimer.current);
646
+ if (expanded) tipsTimer.current = setTimeout(() => setTipsVisible(true), settleMs);
647
+ else setTipsVisible(false);
648
+ return () => {
649
+ if (tipsTimer.current) clearTimeout(tipsTimer.current);
650
+ };
651
+ }, [expanded, settleMs]);
652
+ return { labelsExpanded, tipsVisible };
653
+ }
654
+
655
+ // src/shell/use-sidebar-controller.ts
656
+ var isMenuOpen = () => typeof document !== "undefined" && document.querySelector('[role="menu"][data-state="open"]') !== null;
657
+ function useSidebarController(options = {}) {
658
+ const [storedPinned, setPinned] = chunkAHDJXIUB_cjs.useControllableState(
659
+ options.isPinned,
660
+ options.defaultPinned ?? true,
661
+ options.onPinnedChange
662
+ );
663
+ const [isHovering, setHovering] = chunkAHDJXIUB_cjs.useControllableState(
664
+ options.isHovering,
665
+ false,
666
+ options.onHoveringChange
667
+ );
668
+ const [isDrawerOpen, setDrawerOpen] = chunkAHDJXIUB_cjs.useControllableState(
669
+ options.isDrawerOpen,
670
+ false,
671
+ options.onDrawerOpenChange
672
+ );
673
+ const isSmallScreen = chunkFX3K6LNZ_cjs.useIsPhone();
674
+ const isNarrow = chunkFX3K6LNZ_cjs.useIsNarrow() || !!options.forceRail;
675
+ const isTouch = chunkFX3K6LNZ_cjs.useIsTouchScreen();
676
+ const layout = resolveSidebarLayout({
677
+ isSmallScreen,
678
+ isDrawerRequested: isDrawerOpen,
679
+ isCollapsed: false,
680
+ isPinned: storedPinned,
681
+ isHovering,
682
+ isNarrow
683
+ });
684
+ const isDrawer = layout.mode === "drawer";
685
+ const { labelsExpanded, tipsVisible } = useSidebarSettle(layout.expanded);
686
+ const isPointerOver = react.useRef(false);
687
+ const closeDrawer = react.useCallback(() => setDrawerOpen(false), [setDrawerOpen]);
688
+ const openDrawer = react.useCallback(() => setDrawerOpen(true), [setDrawerOpen]);
689
+ useCloseOnEscape(layout.mode === "rail" && layout.hovering, () => setHovering(false));
690
+ react.useEffect(() => {
691
+ if (isDrawerOpen && !isSmallScreen) setDrawerOpen(false);
692
+ }, [isDrawerOpen, isSmallScreen, setDrawerOpen]);
693
+ const onMouseEnter = () => {
694
+ if (isTouch) return;
695
+ isPointerOver.current = true;
696
+ if (!isSmallScreen && !isNarrow && !isMenuOpen()) setHovering(true);
697
+ };
698
+ const onMouseLeave = () => {
699
+ if (isTouch) return;
700
+ isPointerOver.current = false;
701
+ if (!isSmallScreen) setHovering(false);
702
+ };
703
+ return {
704
+ layout,
705
+ expanded: labelsExpanded,
706
+ tipsVisible,
707
+ isDrawer,
708
+ isSmallScreen,
709
+ isNarrow,
710
+ isPinned: storedPinned && !isNarrow,
711
+ rootProps: {
712
+ mode: layout.mode,
713
+ expanded: labelsExpanded,
714
+ isHovering: layout.hovering,
715
+ onBackdropClick: isDrawer ? closeDrawer : () => setHovering(false),
716
+ hasRailBackdrop: isTouch,
717
+ onMouseEnter,
718
+ onMouseLeave
719
+ },
720
+ openDrawer,
721
+ closeDrawer,
722
+ togglePin: () => isNarrow ? setHovering(!isHovering) : setPinned(!storedPinned),
723
+ expand: () => isNarrow ? setHovering(true) : setPinned(true),
724
+ afterNavigate: () => {
725
+ if (!isPointerOver.current && !storedPinned) setHovering(false);
726
+ if (isDrawer) closeDrawer();
727
+ }
728
+ };
729
+ }
539
730
  var PULSE_STYLES = {
540
731
  active: "animate-pulse-attention text-primary",
541
732
  success: "animate-pulse-attention text-green-text",
@@ -861,7 +1052,7 @@ function MobileTabBar({
861
1052
  className
862
1053
  ),
863
1054
  children: items.map((item) => /* @__PURE__ */ jsxRuntime.jsxs(
864
- chunkR26BK7YL_cjs.ActionLink,
1055
+ chunkDTROMMDX_cjs.ActionLink,
865
1056
  {
866
1057
  href: item.href,
867
1058
  onSelect: item.onSelect,
@@ -1497,44 +1688,6 @@ function TipCard({
1497
1688
  }
1498
1689
  );
1499
1690
  }
1500
- function resolveSidebarLayout(input) {
1501
- const { isSmallScreen, isDrawerRequested, isCollapsed, isPinned, isHovering } = input;
1502
- const isPeeking = input.isPeeking ?? false;
1503
- const canPin = isPinned && !isSmallScreen && !input.isNarrow;
1504
- const drawerOpen = isSmallScreen && isDrawerRequested;
1505
- const effectiveCollapsed = isCollapsed || isSmallScreen && !drawerOpen;
1506
- const hovering = isHovering && !isSmallScreen;
1507
- let mode;
1508
- if (drawerOpen) mode = "drawer";
1509
- else if (effectiveCollapsed) mode = "collapsed";
1510
- else if (canPin) mode = "pinned";
1511
- else mode = "rail";
1512
- const expanded = drawerOpen || canPin || !isCollapsed && isHovering || isCollapsed && isPeeking;
1513
- return { mode, expanded, hidden: isSmallScreen && !drawerOpen, hovering };
1514
- }
1515
- function useSidebarSettle(expanded, settleMs = 300) {
1516
- const [labelsExpanded, setLabelsExpanded] = react.useState(expanded);
1517
- const [tipsVisible, setTipsVisible] = react.useState(expanded);
1518
- const labelsTimer = react.useRef(null);
1519
- const tipsTimer = react.useRef(null);
1520
- react.useEffect(() => {
1521
- if (labelsTimer.current) clearTimeout(labelsTimer.current);
1522
- if (expanded) setLabelsExpanded(true);
1523
- else labelsTimer.current = setTimeout(() => setLabelsExpanded(false), settleMs);
1524
- return () => {
1525
- if (labelsTimer.current) clearTimeout(labelsTimer.current);
1526
- };
1527
- }, [expanded, settleMs]);
1528
- react.useEffect(() => {
1529
- if (tipsTimer.current) clearTimeout(tipsTimer.current);
1530
- if (expanded) tipsTimer.current = setTimeout(() => setTipsVisible(true), settleMs);
1531
- else setTipsVisible(false);
1532
- return () => {
1533
- if (tipsTimer.current) clearTimeout(tipsTimer.current);
1534
- };
1535
- }, [expanded, settleMs]);
1536
- return { labelsExpanded, tipsVisible };
1537
- }
1538
1691
  var VARIANT_TONE = {
1539
1692
  info: "bg-blue-bg text-primary border-blue-border",
1540
1693
  warning: "bg-yellow-bg text-yellow-text border-yellow-border",
@@ -1690,6 +1843,7 @@ exports.OfflinePill = OfflinePill;
1690
1843
  exports.RemoteControlPill = RemoteControlPill;
1691
1844
  exports.STATUS_ROW_BASE_CLASS = STATUS_ROW_BASE_CLASS;
1692
1845
  exports.STATUS_ROW_TONES = STATUS_ROW_TONES;
1846
+ exports.ShellSidebar = ShellSidebar;
1693
1847
  exports.Sidebar = Sidebar;
1694
1848
  exports.SidebarBadgeRow = SidebarBadgeRow;
1695
1849
  exports.SidebarRowAction = SidebarRowAction;
@@ -1703,8 +1857,10 @@ exports.initInstallPrompt = initInstallPrompt;
1703
1857
  exports.isIosDevice = isIosDevice;
1704
1858
  exports.promptAppInstall = promptAppInstall;
1705
1859
  exports.resolveSidebarLayout = resolveSidebarLayout;
1860
+ exports.useCloseOnEscape = useCloseOnEscape;
1706
1861
  exports.useInstallPrompt = useInstallPrompt;
1707
1862
  exports.useSidebarContext = useSidebarContext;
1863
+ exports.useSidebarController = useSidebarController;
1708
1864
  exports.useSidebarSettle = useSidebarSettle;
1709
- //# sourceMappingURL=chunk-GFRQG36Y.cjs.map
1710
- //# sourceMappingURL=chunk-GFRQG36Y.cjs.map
1865
+ //# sourceMappingURL=chunk-COCGRJLA.cjs.map
1866
+ //# sourceMappingURL=chunk-COCGRJLA.cjs.map