@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
@@ -0,0 +1,37 @@
1
+ import type { ReactNode } from 'react';
2
+ import { type SidebarRootProps } from './Sidebar';
3
+ import type { SidebarController } from './use-sidebar-controller';
4
+ import type { NavItem, NavSection } from './types';
5
+ export interface ShellSidebarProps extends Pick<SidebarRootProps, 'className' | 'aria-label' | 'labels' | 'backdropTestId'> {
6
+ /** From `useSidebarController`: layout, hover/pin/drawer behaviour. */
7
+ controller: SidebarController;
8
+ /** Brand mark of the phone drawer's header (logo + close). Omit for no drawer header. */
9
+ drawerLogo?: ReactNode;
10
+ /** `data-testid` of the drawer's close button. */
11
+ drawerCloseTestId?: string;
12
+ /** Top block (workspace switcher, ask field, pin toggle). Read `controller.expanded` for the rail. */
13
+ header?: ReactNode;
14
+ /** Rows as data. */
15
+ items?: NavItem[];
16
+ /** Labelled groups of rows as data, after `items`. */
17
+ sections?: NavSection[];
18
+ navClassName?: string;
19
+ /**
20
+ * Width-bound cards at the top of the footer (smart tips, notices): shown only once the panel
21
+ * has settled open, and gone the instant it starts to close.
22
+ */
23
+ tips?: ReactNode;
24
+ /** The rest of the footer (status rows, account rows). */
25
+ footer?: ReactNode;
26
+ /** Root `data-testid` (default `sidebar`). */
27
+ 'data-testid'?: string;
28
+ }
29
+ /**
30
+ * The whole sidebar from a controller and data: `Sidebar.Root` in the resolved mode, the phone
31
+ * drawer header, the header slot, the nav rows/groups and the footer. Renders nothing while the
32
+ * layout is hidden (a phone with the drawer closed), so no clipped rows carry duplicate test ids.
33
+ *
34
+ * const sidebar = useSidebarController({ isPinned, onPinnedChange: setPinned })
35
+ * <ShellSidebar controller={sidebar} header={…} items={nav} footer={…} />
36
+ */
37
+ export declare function ShellSidebar({ controller, drawerLogo, drawerCloseTestId, header, items, sections, navClassName, tips, footer, ...rootProps }: ShellSidebarProps): import("react").JSX.Element | null;
@@ -1,15 +1,13 @@
1
1
  import { type ReactNode } from 'react';
2
2
  import { DEFAULT_SIDEBAR_LABELS, SidebarRowHoverContext, useSidebarContext, type SidebarLabels } from './sidebar-context';
3
3
  import type { SidebarMode } from '../lib/sidebar-mode';
4
- import type { NavItem } from './types';
4
+ import type { NavItem, NavSection } from './types';
5
5
  export interface SidebarRootProps {
6
6
  mode: SidebarMode;
7
7
  /** Labels visible. Provided to every part through context. */
8
8
  expanded: boolean;
9
9
  /** `rail` mode: floats open to full width. */
10
10
  isHovering?: boolean;
11
- /** `collapsed` mode: revealed (peek) at full width. */
12
- isPeeking?: boolean;
13
11
  onBackdropClick?: () => void;
14
12
  /** `rail` mode on touch: the floated-open rail dims the content behind it; tapping it closes. */
15
13
  hasRailBackdrop?: boolean;
@@ -24,7 +22,7 @@ export interface SidebarRootProps {
24
22
  /** Drawer backdrop id (default `sidebar-backdrop`). */
25
23
  backdropTestId?: string;
26
24
  }
27
- declare function SidebarRoot({ mode, expanded, isHovering, isPeeking, onBackdropClick, hasRailBackdrop, onMouseEnter, onMouseLeave, children, className, 'aria-label': ariaLabelProp, labels, 'data-testid': testId, backdropTestId, }: SidebarRootProps): import("react").JSX.Element;
25
+ declare function SidebarRoot({ mode, expanded, isHovering, onBackdropClick, hasRailBackdrop, onMouseEnter, onMouseLeave, children, className, 'aria-label': ariaLabelProp, labels, 'data-testid': testId, backdropTestId, }: SidebarRootProps): import("react").JSX.Element;
28
26
  export interface SidebarSectionProps {
29
27
  children: ReactNode;
30
28
  className?: string;
@@ -35,8 +33,10 @@ export interface SidebarNavProps extends Omit<SidebarSectionProps, 'children'> {
35
33
  children?: ReactNode;
36
34
  /** Rows as data. Children render after them. */
37
35
  items?: NavItem[];
36
+ /** Labelled groups of rows as data (each a `Sidebar.Group`), after `items`. */
37
+ sections?: NavSection[];
38
38
  }
39
- declare function SidebarNav({ items, children, className, 'data-testid': testId }: SidebarNavProps): import("react").JSX.Element;
39
+ declare function SidebarNav({ items, sections, children, className, 'data-testid': testId, }: SidebarNavProps): import("react").JSX.Element;
40
40
  export interface SidebarGroupProps extends SidebarSectionProps {
41
41
  /** Group heading. Shown above the rows when expanded; a thin divider stands in on the rail. */
42
42
  label?: ReactNode;
@@ -64,7 +64,7 @@ export type SidebarNavItemProps = Omit<NavItem, 'id'> & {
64
64
  * The expanded row is a div with role="button" (not a native <button>) so an interactive
65
65
  * `trailing` control can be nested without producing button-in-button markup.
66
66
  */
67
- declare function SidebarNavItem({ label, icon, active, onSelect, href, count, countIcon, testId, disabled, trailing, className, tooltip, }: SidebarNavItemProps): import("react").JSX.Element;
67
+ declare function SidebarNavItem({ label, icon, active, onSelect, href, count, countIcon, testId, disabled, trailing, indicator, className, tooltip, }: SidebarNavItemProps): import("react").JSX.Element;
68
68
  export interface SidebarPinToggleProps {
69
69
  isPinned: boolean;
70
70
  onToggle: () => void;
@@ -1,17 +1,18 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkGFRQG36Y_cjs = require('../chunk-GFRQG36Y.cjs');
4
+ var chunkCOCGRJLA_cjs = require('../chunk-COCGRJLA.cjs');
5
5
  var chunkV46W7YLI_cjs = require('../chunk-V46W7YLI.cjs');
6
- require('../chunk-R26BK7YL.cjs');
6
+ require('../chunk-AHDJXIUB.cjs');
7
+ require('../chunk-DTROMMDX.cjs');
7
8
  var chunk2EI7NCUA_cjs = require('../chunk-2EI7NCUA.cjs');
9
+ var chunk7RGLTF76_cjs = require('../chunk-7RGLTF76.cjs');
8
10
  var chunk5UHAWSEX_cjs = require('../chunk-5UHAWSEX.cjs');
9
11
  var chunkB6MVQCXW_cjs = require('../chunk-B6MVQCXW.cjs');
10
12
  var chunkFX3K6LNZ_cjs = require('../chunk-FX3K6LNZ.cjs');
11
- var chunk7RGLTF76_cjs = require('../chunk-7RGLTF76.cjs');
12
13
  require('../chunk-PPCATBOY.cjs');
13
14
  require('../chunk-MHVNT4J3.cjs');
14
- require('../chunk-C4WSHRR6.cjs');
15
+ require('../chunk-KPZZ5FHE.cjs');
15
16
  require('../chunk-ULWRNGGE.cjs');
16
17
  require('../chunk-DES3K4SD.cjs');
17
18
 
@@ -19,155 +20,167 @@ require('../chunk-DES3K4SD.cjs');
19
20
 
20
21
  Object.defineProperty(exports, "ActionCluster", {
21
22
  enumerable: true,
22
- get: function () { return chunkGFRQG36Y_cjs.ActionCluster; }
23
+ get: function () { return chunkCOCGRJLA_cjs.ActionCluster; }
23
24
  });
24
25
  Object.defineProperty(exports, "AskField", {
25
26
  enumerable: true,
26
- get: function () { return chunkGFRQG36Y_cjs.AskField; }
27
+ get: function () { return chunkCOCGRJLA_cjs.AskField; }
27
28
  });
28
29
  Object.defineProperty(exports, "AskRow", {
29
30
  enumerable: true,
30
- get: function () { return chunkGFRQG36Y_cjs.AskRow; }
31
+ get: function () { return chunkCOCGRJLA_cjs.AskRow; }
31
32
  });
32
33
  Object.defineProperty(exports, "AskTrigger", {
33
34
  enumerable: true,
34
- get: function () { return chunkGFRQG36Y_cjs.AskTrigger; }
35
+ get: function () { return chunkCOCGRJLA_cjs.AskTrigger; }
35
36
  });
36
37
  Object.defineProperty(exports, "DEFAULT_ASK_FIELD_LABELS", {
37
38
  enumerable: true,
38
- get: function () { return chunkGFRQG36Y_cjs.DEFAULT_ASK_FIELD_LABELS; }
39
+ get: function () { return chunkCOCGRJLA_cjs.DEFAULT_ASK_FIELD_LABELS; }
39
40
  });
40
41
  Object.defineProperty(exports, "DEFAULT_INSTALL_PROMPT_LABELS", {
41
42
  enumerable: true,
42
- get: function () { return chunkGFRQG36Y_cjs.DEFAULT_INSTALL_PROMPT_LABELS; }
43
+ get: function () { return chunkCOCGRJLA_cjs.DEFAULT_INSTALL_PROMPT_LABELS; }
43
44
  });
44
45
  Object.defineProperty(exports, "DEFAULT_MOBILE_BARS_LABELS", {
45
46
  enumerable: true,
46
- get: function () { return chunkGFRQG36Y_cjs.DEFAULT_MOBILE_BARS_LABELS; }
47
+ get: function () { return chunkCOCGRJLA_cjs.DEFAULT_MOBILE_BARS_LABELS; }
47
48
  });
48
49
  Object.defineProperty(exports, "DEFAULT_OFFLINE_PILL_LABELS", {
49
50
  enumerable: true,
50
- get: function () { return chunkGFRQG36Y_cjs.DEFAULT_OFFLINE_PILL_LABELS; }
51
+ get: function () { return chunkCOCGRJLA_cjs.DEFAULT_OFFLINE_PILL_LABELS; }
51
52
  });
52
53
  Object.defineProperty(exports, "DEFAULT_REMOTE_CONTROL_PILL_LABELS", {
53
54
  enumerable: true,
54
- get: function () { return chunkGFRQG36Y_cjs.DEFAULT_REMOTE_CONTROL_PILL_LABELS; }
55
+ get: function () { return chunkCOCGRJLA_cjs.DEFAULT_REMOTE_CONTROL_PILL_LABELS; }
55
56
  });
56
57
  Object.defineProperty(exports, "DEFAULT_SIDEBAR_LABELS", {
57
58
  enumerable: true,
58
- get: function () { return chunkGFRQG36Y_cjs.DEFAULT_SIDEBAR_LABELS; }
59
+ get: function () { return chunkCOCGRJLA_cjs.DEFAULT_SIDEBAR_LABELS; }
59
60
  });
60
61
  Object.defineProperty(exports, "DEFAULT_TIP_CARD_LABELS", {
61
62
  enumerable: true,
62
- get: function () { return chunkGFRQG36Y_cjs.DEFAULT_TIP_CARD_LABELS; }
63
+ get: function () { return chunkCOCGRJLA_cjs.DEFAULT_TIP_CARD_LABELS; }
63
64
  });
64
65
  Object.defineProperty(exports, "INSTALL_PROMPT_DISMISSED_KEY", {
65
66
  enumerable: true,
66
- get: function () { return chunkGFRQG36Y_cjs.INSTALL_PROMPT_DISMISSED_KEY; }
67
+ get: function () { return chunkCOCGRJLA_cjs.INSTALL_PROMPT_DISMISSED_KEY; }
67
68
  });
68
69
  Object.defineProperty(exports, "InfoBar", {
69
70
  enumerable: true,
70
- get: function () { return chunkGFRQG36Y_cjs.InfoBar; }
71
+ get: function () { return chunkCOCGRJLA_cjs.InfoBar; }
71
72
  });
72
73
  Object.defineProperty(exports, "InstallPrompt", {
73
74
  enumerable: true,
74
- get: function () { return chunkGFRQG36Y_cjs.InstallPrompt; }
75
+ get: function () { return chunkCOCGRJLA_cjs.InstallPrompt; }
75
76
  });
76
77
  Object.defineProperty(exports, "MobileAppBar", {
77
78
  enumerable: true,
78
- get: function () { return chunkGFRQG36Y_cjs.MobileAppBar; }
79
+ get: function () { return chunkCOCGRJLA_cjs.MobileAppBar; }
79
80
  });
80
81
  Object.defineProperty(exports, "MobileTabBar", {
81
82
  enumerable: true,
82
- get: function () { return chunkGFRQG36Y_cjs.MobileTabBar; }
83
+ get: function () { return chunkCOCGRJLA_cjs.MobileTabBar; }
83
84
  });
84
85
  Object.defineProperty(exports, "NotificationBell", {
85
86
  enumerable: true,
86
- get: function () { return chunkGFRQG36Y_cjs.NotificationBell; }
87
+ get: function () { return chunkCOCGRJLA_cjs.NotificationBell; }
87
88
  });
88
89
  Object.defineProperty(exports, "OfflinePill", {
89
90
  enumerable: true,
90
- get: function () { return chunkGFRQG36Y_cjs.OfflinePill; }
91
+ get: function () { return chunkCOCGRJLA_cjs.OfflinePill; }
91
92
  });
92
93
  Object.defineProperty(exports, "RemoteControlPill", {
93
94
  enumerable: true,
94
- get: function () { return chunkGFRQG36Y_cjs.RemoteControlPill; }
95
+ get: function () { return chunkCOCGRJLA_cjs.RemoteControlPill; }
95
96
  });
96
97
  Object.defineProperty(exports, "STATUS_ROW_BASE_CLASS", {
97
98
  enumerable: true,
98
- get: function () { return chunkGFRQG36Y_cjs.STATUS_ROW_BASE_CLASS; }
99
+ get: function () { return chunkCOCGRJLA_cjs.STATUS_ROW_BASE_CLASS; }
99
100
  });
100
101
  Object.defineProperty(exports, "STATUS_ROW_TONES", {
101
102
  enumerable: true,
102
- get: function () { return chunkGFRQG36Y_cjs.STATUS_ROW_TONES; }
103
+ get: function () { return chunkCOCGRJLA_cjs.STATUS_ROW_TONES; }
104
+ });
105
+ Object.defineProperty(exports, "ShellSidebar", {
106
+ enumerable: true,
107
+ get: function () { return chunkCOCGRJLA_cjs.ShellSidebar; }
103
108
  });
104
109
  Object.defineProperty(exports, "Sidebar", {
105
110
  enumerable: true,
106
- get: function () { return chunkGFRQG36Y_cjs.Sidebar; }
111
+ get: function () { return chunkCOCGRJLA_cjs.Sidebar; }
107
112
  });
108
113
  Object.defineProperty(exports, "SidebarBadgeRow", {
109
114
  enumerable: true,
110
- get: function () { return chunkGFRQG36Y_cjs.SidebarBadgeRow; }
115
+ get: function () { return chunkCOCGRJLA_cjs.SidebarBadgeRow; }
111
116
  });
112
117
  Object.defineProperty(exports, "SidebarRowAction", {
113
118
  enumerable: true,
114
- get: function () { return chunkGFRQG36Y_cjs.SidebarRowAction; }
119
+ get: function () { return chunkCOCGRJLA_cjs.SidebarRowAction; }
115
120
  });
116
121
  Object.defineProperty(exports, "SidebarRowHoverContext", {
117
122
  enumerable: true,
118
- get: function () { return chunkGFRQG36Y_cjs.SidebarRowHoverContext; }
123
+ get: function () { return chunkCOCGRJLA_cjs.SidebarRowHoverContext; }
119
124
  });
120
125
  Object.defineProperty(exports, "SplitLayout", {
121
126
  enumerable: true,
122
- get: function () { return chunkGFRQG36Y_cjs.SplitLayout; }
127
+ get: function () { return chunkCOCGRJLA_cjs.SplitLayout; }
123
128
  });
124
129
  Object.defineProperty(exports, "StatusBadge", {
125
130
  enumerable: true,
126
- get: function () { return chunkGFRQG36Y_cjs.StatusBadge; }
131
+ get: function () { return chunkCOCGRJLA_cjs.StatusBadge; }
127
132
  });
128
133
  Object.defineProperty(exports, "StatusRow", {
129
134
  enumerable: true,
130
- get: function () { return chunkGFRQG36Y_cjs.StatusRow; }
135
+ get: function () { return chunkCOCGRJLA_cjs.StatusRow; }
131
136
  });
132
137
  Object.defineProperty(exports, "TipCard", {
133
138
  enumerable: true,
134
- get: function () { return chunkGFRQG36Y_cjs.TipCard; }
139
+ get: function () { return chunkCOCGRJLA_cjs.TipCard; }
135
140
  });
136
141
  Object.defineProperty(exports, "UserMenu", {
137
142
  enumerable: true,
138
- get: function () { return chunkGFRQG36Y_cjs.UserMenu; }
143
+ get: function () { return chunkCOCGRJLA_cjs.UserMenu; }
139
144
  });
140
145
  Object.defineProperty(exports, "getInstallInstructions", {
141
146
  enumerable: true,
142
- get: function () { return chunkGFRQG36Y_cjs.getInstallInstructions; }
147
+ get: function () { return chunkCOCGRJLA_cjs.getInstallInstructions; }
143
148
  });
144
149
  Object.defineProperty(exports, "initInstallPrompt", {
145
150
  enumerable: true,
146
- get: function () { return chunkGFRQG36Y_cjs.initInstallPrompt; }
151
+ get: function () { return chunkCOCGRJLA_cjs.initInstallPrompt; }
147
152
  });
148
153
  Object.defineProperty(exports, "isIosDevice", {
149
154
  enumerable: true,
150
- get: function () { return chunkGFRQG36Y_cjs.isIosDevice; }
155
+ get: function () { return chunkCOCGRJLA_cjs.isIosDevice; }
151
156
  });
152
157
  Object.defineProperty(exports, "promptAppInstall", {
153
158
  enumerable: true,
154
- get: function () { return chunkGFRQG36Y_cjs.promptAppInstall; }
159
+ get: function () { return chunkCOCGRJLA_cjs.promptAppInstall; }
155
160
  });
156
161
  Object.defineProperty(exports, "resolveSidebarLayout", {
157
162
  enumerable: true,
158
- get: function () { return chunkGFRQG36Y_cjs.resolveSidebarLayout; }
163
+ get: function () { return chunkCOCGRJLA_cjs.resolveSidebarLayout; }
164
+ });
165
+ Object.defineProperty(exports, "useCloseOnEscape", {
166
+ enumerable: true,
167
+ get: function () { return chunkCOCGRJLA_cjs.useCloseOnEscape; }
159
168
  });
160
169
  Object.defineProperty(exports, "useInstallPrompt", {
161
170
  enumerable: true,
162
- get: function () { return chunkGFRQG36Y_cjs.useInstallPrompt; }
171
+ get: function () { return chunkCOCGRJLA_cjs.useInstallPrompt; }
163
172
  });
164
173
  Object.defineProperty(exports, "useSidebarContext", {
165
174
  enumerable: true,
166
- get: function () { return chunkGFRQG36Y_cjs.useSidebarContext; }
175
+ get: function () { return chunkCOCGRJLA_cjs.useSidebarContext; }
176
+ });
177
+ Object.defineProperty(exports, "useSidebarController", {
178
+ enumerable: true,
179
+ get: function () { return chunkCOCGRJLA_cjs.useSidebarController; }
167
180
  });
168
181
  Object.defineProperty(exports, "useSidebarSettle", {
169
182
  enumerable: true,
170
- get: function () { return chunkGFRQG36Y_cjs.useSidebarSettle; }
183
+ get: function () { return chunkCOCGRJLA_cjs.useSidebarSettle; }
171
184
  });
172
185
  Object.defineProperty(exports, "DEFAULT_WORKSPACE_KIND_LABELS", {
173
186
  enumerable: true,
@@ -205,6 +218,14 @@ Object.defineProperty(exports, "FilterInput", {
205
218
  enumerable: true,
206
219
  get: function () { return chunk2EI7NCUA_cjs.FilterInput; }
207
220
  });
221
+ Object.defineProperty(exports, "DEFAULT_TAB_HEADER_LABELS", {
222
+ enumerable: true,
223
+ get: function () { return chunk7RGLTF76_cjs.DEFAULT_TAB_HEADER_LABELS; }
224
+ });
225
+ Object.defineProperty(exports, "TabHeader", {
226
+ enumerable: true,
227
+ get: function () { return chunk7RGLTF76_cjs.TabHeader; }
228
+ });
208
229
  Object.defineProperty(exports, "DEFAULT_DOCK_WIDTH", {
209
230
  enumerable: true,
210
231
  get: function () { return chunk5UHAWSEX_cjs.DEFAULT_DOCK_WIDTH; }
@@ -277,13 +298,5 @@ Object.defineProperty(exports, "useMediaQuery", {
277
298
  enumerable: true,
278
299
  get: function () { return chunkFX3K6LNZ_cjs.useMediaQuery; }
279
300
  });
280
- Object.defineProperty(exports, "DEFAULT_TAB_HEADER_LABELS", {
281
- enumerable: true,
282
- get: function () { return chunk7RGLTF76_cjs.DEFAULT_TAB_HEADER_LABELS; }
283
- });
284
- Object.defineProperty(exports, "TabHeader", {
285
- enumerable: true,
286
- get: function () { return chunk7RGLTF76_cjs.TabHeader; }
287
- });
288
301
  //# sourceMappingURL=index.cjs.map
289
302
  //# sourceMappingURL=index.cjs.map
@@ -1,6 +1,8 @@
1
1
  export { Shell, PageContainer, SidebarToggleButton, DEFAULT_SIDEBAR_TOGGLE_BUTTON_LABELS, DEFAULT_OVERLAY_ZONE_ID, DEFAULT_PAGE_CONTAINER_PADDING, useOverlayZoneId, type ShellRootProps, type ShellContentProps, type ShellTopbarProps, type ShellDockProps, type PageContainerProps, type SidebarToggleButtonProps, type SidebarToggleButtonLabels, } from './Shell';
2
2
  export { Sidebar, SidebarRowHoverContext, DEFAULT_SIDEBAR_LABELS, useSidebarContext, type SidebarRootProps, type SidebarNavProps, type SidebarNavItemProps, type SidebarSectionProps, type SidebarGroupProps, type SidebarPinToggleProps, type SidebarDrawerHeaderProps, type SidebarLabels, } from './Sidebar';
3
3
  export { SidebarBadgeRow, type SidebarBadgeRowProps } from './SidebarBadgeRow';
4
+ export { ShellSidebar, type ShellSidebarProps } from './ShellSidebar';
5
+ export { useSidebarController, type SidebarController, type SidebarControllerRootProps, type UseSidebarControllerOptions, } from './use-sidebar-controller';
4
6
  export { SidebarRowAction, type SidebarRowActionProps, type SidebarRowActionPulse, } from './SidebarRowAction';
5
7
  export { WorkspaceSwitcher, WorkspaceIdentity, workspaceKindMeta, workspaceKindColor, DEFAULT_WORKSPACE_KIND_LABELS, DEFAULT_WORKSPACE_SWITCHER_LABELS, type WorkspaceSwitcherProps, type WorkspaceIdentityProps, type WorkspaceKindLabels, type WorkspaceSwitcherLabels, } from './Workspace';
6
8
  export { AskField, AskTrigger, AskRow, DEFAULT_ASK_FIELD_LABELS, type AskFieldLabels, type AskFieldProps, type AskTriggerProps, type AskRowProps, } from './AskField';
@@ -16,8 +18,9 @@ export { OfflinePill, DEFAULT_OFFLINE_PILL_LABELS, type OfflinePillLabels, type
16
18
  export { RemoteControlPill, DEFAULT_REMOTE_CONTROL_PILL_LABELS, type RemoteControlPillLabels, type RemoteControlPillProps, } from './RemoteControlPill';
17
19
  export { TipCard, DEFAULT_TIP_CARD_LABELS, type TipCardLabels, type TipCardProps } from './TipCard';
18
20
  export { TabHeader, DEFAULT_TAB_HEADER_LABELS, type Tab, type TabHeaderLabels, type TabHeaderProps, } from './TabHeader';
19
- export type { NavItem, ShellActionLayout, ShellRecentWorkspace, ShellWorkspace, ShellWorkspaceKind, } from './types';
21
+ export type { NavItem, NavItemIndicator, NavSection, ShellActionLayout, ShellRecentWorkspace, ShellWorkspace, ShellWorkspaceKind, } from './types';
20
22
  export { useDrawerBehavior } from '../lib/use-drawer';
23
+ export { useCloseOnEscape } from '../lib/use-close-on-escape';
21
24
  export { BREAKPOINT_QUERIES, useMediaQuery, useIsPhone, useIsNarrow, useIsTouchScreen, } from '../lib/use-media-query';
22
25
  export { resolveSidebarLayout, useSidebarSettle, type SidebarLayout, type SidebarMode, type SidebarModeInput, } from '../lib/sidebar-mode';
23
26
  export { InfoBar, type InfoBarProps, type InfoBarVariant } from './InfoBar';
@@ -1,15 +1,16 @@
1
1
  "use client";
2
- export { ActionCluster, AskField, AskRow, AskTrigger, DEFAULT_ASK_FIELD_LABELS, DEFAULT_INSTALL_PROMPT_LABELS, DEFAULT_MOBILE_BARS_LABELS, DEFAULT_OFFLINE_PILL_LABELS, DEFAULT_REMOTE_CONTROL_PILL_LABELS, DEFAULT_SIDEBAR_LABELS, DEFAULT_TIP_CARD_LABELS, INSTALL_PROMPT_DISMISSED_KEY, InfoBar, InstallPrompt, MobileAppBar, MobileTabBar, NotificationBell, OfflinePill, RemoteControlPill, STATUS_ROW_BASE_CLASS, STATUS_ROW_TONES, Sidebar, SidebarBadgeRow, SidebarRowAction, SidebarRowHoverContext, SplitLayout, StatusBadge, StatusRow, TipCard, UserMenu, getInstallInstructions, initInstallPrompt, isIosDevice, promptAppInstall, resolveSidebarLayout, useInstallPrompt, useSidebarContext, useSidebarSettle } from '../chunk-O6W6RW3B.js';
2
+ export { ActionCluster, AskField, AskRow, AskTrigger, DEFAULT_ASK_FIELD_LABELS, DEFAULT_INSTALL_PROMPT_LABELS, DEFAULT_MOBILE_BARS_LABELS, DEFAULT_OFFLINE_PILL_LABELS, DEFAULT_REMOTE_CONTROL_PILL_LABELS, DEFAULT_SIDEBAR_LABELS, DEFAULT_TIP_CARD_LABELS, INSTALL_PROMPT_DISMISSED_KEY, InfoBar, InstallPrompt, MobileAppBar, MobileTabBar, NotificationBell, OfflinePill, RemoteControlPill, STATUS_ROW_BASE_CLASS, STATUS_ROW_TONES, ShellSidebar, Sidebar, SidebarBadgeRow, SidebarRowAction, SidebarRowHoverContext, SplitLayout, StatusBadge, StatusRow, TipCard, UserMenu, getInstallInstructions, initInstallPrompt, isIosDevice, promptAppInstall, resolveSidebarLayout, useCloseOnEscape, useInstallPrompt, useSidebarContext, useSidebarController, useSidebarSettle } from '../chunk-H4D7WKDY.js';
3
3
  export { DEFAULT_WORKSPACE_KIND_LABELS, DEFAULT_WORKSPACE_SWITCHER_LABELS, WorkspaceIdentity, WorkspaceSwitcher, workspaceKindColor, workspaceKindMeta } from '../chunk-A3XPS2EU.js';
4
- import '../chunk-444XKG46.js';
4
+ import '../chunk-RLWIUUQ5.js';
5
+ import '../chunk-YKQ2DPIP.js';
5
6
  export { DEFAULT_FILTER_FIELDS, DEFAULT_FILTER_INPUT_LABELS, FilterInput } from '../chunk-YU2KUMGE.js';
7
+ export { DEFAULT_TAB_HEADER_LABELS, TabHeader } from '../chunk-4WWM3GQ5.js';
6
8
  export { DEFAULT_DOCK_WIDTH, Toaster } from '../chunk-OKERRHLH.js';
7
9
  export { DEFAULT_OVERLAY_ZONE_ID, DEFAULT_PAGE_CONTAINER_PADDING, DEFAULT_SIDEBAR_TOGGLE_BUTTON_LABELS, PageContainer, SHELL_BOTTOM_INSET_VAR, Shell, SidebarToggleButton, ToolButton, useDrawerBehavior, useOverlayZoneId, useShellBottomInset } from '../chunk-7XF5SFJ2.js';
8
10
  export { BREAKPOINT_QUERIES, useIsNarrow, useIsPhone, useIsTouchScreen, useMediaQuery } from '../chunk-SLSBJRWW.js';
9
- export { DEFAULT_TAB_HEADER_LABELS, TabHeader } from '../chunk-4WWM3GQ5.js';
10
11
  import '../chunk-NPLYHR2E.js';
11
12
  import '../chunk-7F6CBP3Z.js';
12
- import '../chunk-YNIBUKV5.js';
13
+ import '../chunk-TBEVGWY3.js';
13
14
  import '../chunk-TX2ZICS7.js';
14
15
  import '../chunk-VUNV25KB.js';
15
16
  //# sourceMappingURL=index.js.map
@@ -32,6 +32,24 @@ export interface NavItem {
32
32
  disabled?: boolean;
33
33
  /** Inline control after the count; may be interactive (the row is not a native button). */
34
34
  trailing?: ReactNode;
35
+ /**
36
+ * Status dot on the icon of the icon-only rail, where `trailing` has no room (work in
37
+ * progress, a failure, something waiting). The expanded row shows `trailing` instead.
38
+ */
39
+ indicator?: NavItemIndicator;
40
+ }
41
+ export type NavItemIndicator = 'progress' | 'error' | 'attention';
42
+ /** A labelled group of sidebar rows (`Sidebar.Nav` `sections`). */
43
+ export interface NavSection {
44
+ /** Stable key. */
45
+ id: string;
46
+ /** Heading shown when expanded; a divider stands in on the rail. Omit for an unlabelled run. */
47
+ label?: ReactNode;
48
+ /** Accessible name when `label` is not plain text. */
49
+ ariaLabel?: string;
50
+ items: NavItem[];
51
+ /** `data-testid` of the group. */
52
+ testId?: string;
35
53
  }
36
54
  export type ShellActionLayout = 'bar' | 'sidebar' | 'rail' | 'drawer';
37
55
  /** Workspace visibility: drives the initial-badge tone and the small type glyph. */
@@ -0,0 +1,59 @@
1
+ import { type SidebarLayout } from '../lib/sidebar-mode';
2
+ import type { SidebarRootProps } from './Sidebar';
3
+ export interface UseSidebarControllerOptions {
4
+ /** Pinned open (desktop). Controlled when set; otherwise kept here, seeded by `defaultPinned`. */
5
+ isPinned?: boolean;
6
+ /** Default `true`. */
7
+ defaultPinned?: boolean;
8
+ onPinnedChange?: (isPinned: boolean) => void;
9
+ /** The rail is floated open (hover, or its toggle at a narrow width). Controlled when set. */
10
+ isHovering?: boolean;
11
+ onHoveringChange?: (isHovering: boolean) => void;
12
+ /** The phone drawer is open. Controlled when set (the app bar's menu button opens it). */
13
+ isDrawerOpen?: boolean;
14
+ onDrawerOpenChange?: (isDrawerOpen: boolean) => void;
15
+ /**
16
+ * Keep the sidebar a rail even when pinned, on top of the tablet width (for example while a
17
+ * docked panel squeezes the content). The stored pin is left untouched.
18
+ */
19
+ forceRail?: boolean;
20
+ }
21
+ /** The `Sidebar.Root` props the controller resolves. */
22
+ export type SidebarControllerRootProps = Pick<SidebarRootProps, 'mode' | 'expanded' | 'isHovering' | 'onBackdropClick' | 'hasRailBackdrop' | 'onMouseEnter' | 'onMouseLeave'>;
23
+ export interface SidebarController {
24
+ layout: SidebarLayout;
25
+ /** Labels shown (settled: they stay on until the closing transition ends). */
26
+ expanded: boolean;
27
+ /** Width-bound content (tips, notices) may show: on once fully open, off as closing starts. */
28
+ tipsVisible: boolean;
29
+ /** The phone drawer is showing. */
30
+ isDrawer: boolean;
31
+ isSmallScreen: boolean;
32
+ /** Tablet width (or `forceRail`): pinning is ignored and the sidebar stays a rail. */
33
+ isNarrow: boolean;
34
+ /** The pin as it applies (always off while narrow). */
35
+ isPinned: boolean;
36
+ /** Spread onto `Sidebar.Root` (or pass the controller to `ShellSidebar`). */
37
+ rootProps: SidebarControllerRootProps;
38
+ openDrawer: () => void;
39
+ closeDrawer: () => void;
40
+ /** The pin toggle: pins/unpins, or floats the rail open/closed while narrow. */
41
+ togglePin: () => void;
42
+ /** Open from the rail (its ask button): pins, or floats the rail open while narrow. */
43
+ expand: () => void;
44
+ /** After a nav row is chosen: closes the drawer, and a floated rail the pointer has left. */
45
+ afterNavigate: () => void;
46
+ }
47
+ /**
48
+ * Sidebar behaviour as one hook, shared by every shell: resolves the layout (drawer / pinned /
49
+ * rail) for the viewport, settles labels and tips around the width transition, and owns the hover,
50
+ * pin and drawer rules:
51
+ * - touch: the rail opens only through its toggle, never by the emulated mouseenter of a tap;
52
+ * - narrow: a pointer drifting over the rail does not float the labels over the content;
53
+ * - Escape closes a floated rail; the drawer closes itself when the viewport grows past a phone;
54
+ * - choosing a row closes the drawer, and a floated rail unless the pointer is still over it.
55
+ *
56
+ * State is controlled per field (`isPinned`, `isHovering`, `isDrawerOpen`) so an app can keep it
57
+ * in its own store, or uncontrolled for a shell that does not care.
58
+ */
59
+ export declare function useSidebarController(options?: UseSidebarControllerOptions): SidebarController;