@arbor-education/design-system.components 4.6.0 → 4.7.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (275) hide show
  1. package/.changeset/twenty-groups-wonder.md +5 -0
  2. package/.changeset/yellow-falcons-search.md +5 -0
  3. package/dist/components/button/Button.story.d.ts +47 -0
  4. package/dist/components/button/Button.story.d.ts.map +1 -0
  5. package/dist/components/button/Button.story.js +123 -0
  6. package/dist/components/button/Button.story.js.map +1 -0
  7. package/dist/components/button/ButtonUsageExample.d.ts +2 -0
  8. package/dist/components/button/ButtonUsageExample.d.ts.map +1 -0
  9. package/dist/components/button/ButtonUsageExample.js +11 -0
  10. package/dist/components/button/ButtonUsageExample.js.map +1 -0
  11. package/dist/components/combobox/useElementWidth.d.ts +2 -0
  12. package/dist/components/combobox/useElementWidth.d.ts.map +1 -0
  13. package/dist/components/combobox/useElementWidth.js +31 -0
  14. package/dist/components/combobox/useElementWidth.js.map +1 -0
  15. package/dist/components/combobox/useVisibleChips.d.ts +21 -0
  16. package/dist/components/combobox/useVisibleChips.d.ts.map +1 -0
  17. package/dist/components/combobox/useVisibleChips.js +59 -0
  18. package/dist/components/combobox/useVisibleChips.js.map +1 -0
  19. package/dist/components/combobox/useVisibleChips.test.d.ts +2 -0
  20. package/dist/components/combobox/useVisibleChips.test.d.ts.map +1 -0
  21. package/dist/components/combobox/useVisibleChips.test.js +81 -0
  22. package/dist/components/combobox/useVisibleChips.test.js.map +1 -0
  23. package/dist/components/heading/HeadingInnerContainer.d.ts +5 -0
  24. package/dist/components/heading/HeadingInnerContainer.d.ts.map +1 -0
  25. package/dist/components/heading/HeadingInnerContainer.js +7 -0
  26. package/dist/components/heading/HeadingInnerContainer.js.map +1 -0
  27. package/dist/components/icoText/IcoText.d.ts +37 -0
  28. package/dist/components/icoText/IcoText.d.ts.map +1 -0
  29. package/dist/components/icoText/IcoText.js +29 -0
  30. package/dist/components/icoText/IcoText.js.map +1 -0
  31. package/dist/components/icoText/IcoText.stories.d.ts +60 -0
  32. package/dist/components/icoText/IcoText.stories.d.ts.map +1 -0
  33. package/dist/components/icoText/IcoText.stories.js +319 -0
  34. package/dist/components/icoText/IcoText.stories.js.map +1 -0
  35. package/dist/components/icoText/IcoText.test.d.ts +2 -0
  36. package/dist/components/icoText/IcoText.test.d.ts.map +1 -0
  37. package/dist/components/icoText/IcoText.test.js +27 -0
  38. package/dist/components/icoText/IcoText.test.js.map +1 -0
  39. package/dist/components/pill/Pill.d.ts.map +1 -1
  40. package/dist/components/pill/Pill.js +1 -1
  41. package/dist/components/pill/Pill.js.map +1 -1
  42. package/dist/components/sidebarNav/SidebarNav.d.ts +46 -0
  43. package/dist/components/sidebarNav/SidebarNav.d.ts.map +1 -0
  44. package/dist/components/sidebarNav/SidebarNav.js +102 -0
  45. package/dist/components/sidebarNav/SidebarNav.js.map +1 -0
  46. package/dist/components/sidebarNav/SidebarNav.stories.d.ts +61 -0
  47. package/dist/components/sidebarNav/SidebarNav.stories.d.ts.map +1 -0
  48. package/dist/components/sidebarNav/SidebarNav.stories.js +253 -0
  49. package/dist/components/sidebarNav/SidebarNav.stories.js.map +1 -0
  50. package/dist/components/sidebarNav/SidebarNav.test.d.ts +2 -0
  51. package/dist/components/sidebarNav/SidebarNav.test.d.ts.map +1 -0
  52. package/dist/components/sidebarNav/SidebarNav.test.js +240 -0
  53. package/dist/components/sidebarNav/SidebarNav.test.js.map +1 -0
  54. package/dist/components/sidebarNav/SidebarNavContext.d.ts +13 -0
  55. package/dist/components/sidebarNav/SidebarNavContext.d.ts.map +1 -0
  56. package/dist/components/sidebarNav/SidebarNavContext.js +15 -0
  57. package/dist/components/sidebarNav/SidebarNavContext.js.map +1 -0
  58. package/dist/components/sidebarNav/SidebarNavGroup.d.ts +10 -0
  59. package/dist/components/sidebarNav/SidebarNavGroup.d.ts.map +1 -0
  60. package/dist/components/sidebarNav/SidebarNavGroup.js +16 -0
  61. package/dist/components/sidebarNav/SidebarNavGroup.js.map +1 -0
  62. package/dist/components/sidebarNav/SidebarNavItem.d.ts +32 -0
  63. package/dist/components/sidebarNav/SidebarNavItem.d.ts.map +1 -0
  64. package/dist/components/sidebarNav/SidebarNavItem.js +44 -0
  65. package/dist/components/sidebarNav/SidebarNavItem.js.map +1 -0
  66. package/dist/components/sidebarNav/SidebarNavItemFavourite.d.ts +8 -0
  67. package/dist/components/sidebarNav/SidebarNavItemFavourite.d.ts.map +1 -0
  68. package/dist/components/sidebarNav/SidebarNavItemFavourite.js +14 -0
  69. package/dist/components/sidebarNav/SidebarNavItemFavourite.js.map +1 -0
  70. package/dist/components/sidebarNav/SidebarNavPanel.d.ts +4 -0
  71. package/dist/components/sidebarNav/SidebarNavPanel.d.ts.map +1 -0
  72. package/dist/components/sidebarNav/SidebarNavPanel.js +9 -0
  73. package/dist/components/sidebarNav/SidebarNavPanel.js.map +1 -0
  74. package/dist/components/sidebarNav/SidebarNavPanelNav.d.ts +10 -0
  75. package/dist/components/sidebarNav/SidebarNavPanelNav.d.ts.map +1 -0
  76. package/dist/components/sidebarNav/SidebarNavPanelNav.js +21 -0
  77. package/dist/components/sidebarNav/SidebarNavPanelNav.js.map +1 -0
  78. package/dist/components/sidebarNav/SidebarNavRail.d.ts +6 -0
  79. package/dist/components/sidebarNav/SidebarNavRail.d.ts.map +1 -0
  80. package/dist/components/sidebarNav/SidebarNavRail.js +7 -0
  81. package/dist/components/sidebarNav/SidebarNavRail.js.map +1 -0
  82. package/dist/components/sidebarNav/SidebarNavRailItem.d.ts +10 -0
  83. package/dist/components/sidebarNav/SidebarNavRailItem.d.ts.map +1 -0
  84. package/dist/components/sidebarNav/SidebarNavRailItem.js +25 -0
  85. package/dist/components/sidebarNav/SidebarNavRailItem.js.map +1 -0
  86. package/dist/components/sidebarNav/SidebarNavRailList.d.ts +4 -0
  87. package/dist/components/sidebarNav/SidebarNavRailList.d.ts.map +1 -0
  88. package/dist/components/sidebarNav/SidebarNavRailList.js +7 -0
  89. package/dist/components/sidebarNav/SidebarNavRailList.js.map +1 -0
  90. package/dist/components/sidebarNav/SidebarNavRailSlot.d.ts +6 -0
  91. package/dist/components/sidebarNav/SidebarNavRailSlot.d.ts.map +1 -0
  92. package/dist/components/sidebarNav/SidebarNavRailSlot.js +7 -0
  93. package/dist/components/sidebarNav/SidebarNavRailSlot.js.map +1 -0
  94. package/dist/components/sidebarNav/SidebarNavSeparator.d.ts +6 -0
  95. package/dist/components/sidebarNav/SidebarNavSeparator.d.ts.map +1 -0
  96. package/dist/components/sidebarNav/SidebarNavSeparator.js +8 -0
  97. package/dist/components/sidebarNav/SidebarNavSeparator.js.map +1 -0
  98. package/dist/components/sidebarNav/SidebarNavTitle.d.ts +4 -0
  99. package/dist/components/sidebarNav/SidebarNavTitle.d.ts.map +1 -0
  100. package/dist/components/sidebarNav/SidebarNavTitle.js +7 -0
  101. package/dist/components/sidebarNav/SidebarNavTitle.js.map +1 -0
  102. package/dist/components/sidebarNav/SidebarNavTooltip.d.ts +7 -0
  103. package/dist/components/sidebarNav/SidebarNavTooltip.d.ts.map +1 -0
  104. package/dist/components/sidebarNav/SidebarNavTooltip.js +9 -0
  105. package/dist/components/sidebarNav/SidebarNavTooltip.js.map +1 -0
  106. package/dist/components/sidebarNav/SidebarNavTrigger.d.ts +8 -0
  107. package/dist/components/sidebarNav/SidebarNavTrigger.d.ts.map +1 -0
  108. package/dist/components/sidebarNav/SidebarNavTrigger.js +15 -0
  109. package/dist/components/sidebarNav/SidebarNavTrigger.js.map +1 -0
  110. package/dist/components/sidebarNav/index.d.ts +4 -0
  111. package/dist/components/sidebarNav/index.d.ts.map +1 -0
  112. package/dist/components/sidebarNav/index.js +3 -0
  113. package/dist/components/sidebarNav/index.js.map +1 -0
  114. package/dist/components/sidebarNav/resolvePanelItemProps.d.ts +4 -0
  115. package/dist/components/sidebarNav/resolvePanelItemProps.d.ts.map +1 -0
  116. package/dist/components/sidebarNav/resolvePanelItemProps.js +43 -0
  117. package/dist/components/sidebarNav/resolvePanelItemProps.js.map +1 -0
  118. package/dist/components/sidebarNav/resolvePanelItemProps.test.d.ts +2 -0
  119. package/dist/components/sidebarNav/resolvePanelItemProps.test.d.ts.map +1 -0
  120. package/dist/components/sidebarNav/resolvePanelItemProps.test.js +52 -0
  121. package/dist/components/sidebarNav/resolvePanelItemProps.test.js.map +1 -0
  122. package/dist/components/sidebarNav/types.d.ts +100 -0
  123. package/dist/components/sidebarNav/types.d.ts.map +1 -0
  124. package/dist/components/sidebarNav/types.js +4 -0
  125. package/dist/components/sidebarNav/types.js.map +1 -0
  126. package/dist/components/sidebarNav/useControllableBoolean.d.ts +9 -0
  127. package/dist/components/sidebarNav/useControllableBoolean.d.ts.map +1 -0
  128. package/dist/components/sidebarNav/useControllableBoolean.js +15 -0
  129. package/dist/components/sidebarNav/useControllableBoolean.js.map +1 -0
  130. package/dist/components/slideover/Slideover.stories.d.ts +10 -0
  131. package/dist/components/slideover/Slideover.stories.d.ts.map +1 -0
  132. package/dist/components/slideover/Slideover.stories.js +12 -0
  133. package/dist/components/slideover/Slideover.stories.js.map +1 -0
  134. package/dist/components/table/BulkActionsDropdown.d.ts +12 -0
  135. package/dist/components/table/BulkActionsDropdown.d.ts.map +1 -0
  136. package/dist/components/table/BulkActionsDropdown.js +11 -0
  137. package/dist/components/table/BulkActionsDropdown.js.map +1 -0
  138. package/dist/components/table/HideColumnsDropdown.d.ts +9 -0
  139. package/dist/components/table/HideColumnsDropdown.d.ts.map +1 -0
  140. package/dist/components/table/HideColumnsDropdown.js +33 -0
  141. package/dist/components/table/HideColumnsDropdown.js.map +1 -0
  142. package/dist/components/table/Table.d.ts +1 -1
  143. package/dist/components/table/Table.stories.d.ts.map +1 -1
  144. package/dist/components/table/Table.stories.js +0 -5
  145. package/dist/components/table/Table.stories.js.map +1 -1
  146. package/dist/components/table/Table.test.js +0 -5
  147. package/dist/components/table/Table.test.js.map +1 -1
  148. package/dist/components/table/cellRenderers/SelectDropdownCellEditor.d.ts +8 -0
  149. package/dist/components/table/cellRenderers/SelectDropdownCellEditor.d.ts.map +1 -0
  150. package/dist/components/table/cellRenderers/SelectDropdownCellEditor.js +19 -0
  151. package/dist/components/table/cellRenderers/SelectDropdownCellEditor.js.map +1 -0
  152. package/dist/components/table/hooks/useHistory.d.ts +20 -0
  153. package/dist/components/table/hooks/useHistory.d.ts.map +1 -0
  154. package/dist/components/table/hooks/useHistory.js +73 -0
  155. package/dist/components/table/hooks/useHistory.js.map +1 -0
  156. package/dist/components/table/hooks/useTableHistory.d.ts +21 -0
  157. package/dist/components/table/hooks/useTableHistory.d.ts.map +1 -0
  158. package/dist/components/table/hooks/useTableHistory.js +88 -0
  159. package/dist/components/table/hooks/useTableHistory.js.map +1 -0
  160. package/dist/components/table/pagination/TableSettingsDropdown.d.ts +2 -0
  161. package/dist/components/table/pagination/TableSettingsDropdown.d.ts.map +1 -0
  162. package/dist/components/table/pagination/TableSettingsDropdown.js +42 -0
  163. package/dist/components/table/pagination/TableSettingsDropdown.js.map +1 -0
  164. package/dist/components/table/tableHeader/TableHeader.d.ts +14 -0
  165. package/dist/components/table/tableHeader/TableHeader.d.ts.map +1 -0
  166. package/dist/components/table/tableHeader/TableHeader.js +55 -0
  167. package/dist/components/table/tableHeader/TableHeader.js.map +1 -0
  168. package/dist/components/table/tableHeader/index.d.ts +2 -0
  169. package/dist/components/table/tableHeader/index.d.ts.map +1 -0
  170. package/dist/components/table/tableHeader/index.js +2 -0
  171. package/dist/components/table/tableHeader/index.js.map +1 -0
  172. package/dist/components/table/tableTheme.d.ts +2 -0
  173. package/dist/components/table/tableTheme.d.ts.map +1 -0
  174. package/dist/components/table/tableTheme.js +18 -0
  175. package/dist/components/table/tableTheme.js.map +1 -0
  176. package/dist/components/table/types.d.ts +169 -0
  177. package/dist/components/table/types.d.ts.map +1 -0
  178. package/dist/components/table/types.js +11 -0
  179. package/dist/components/table/types.js.map +1 -0
  180. package/dist/components/table/utils/setAgGridLicenseKey.d.ts +2 -0
  181. package/dist/components/table/utils/setAgGridLicenseKey.d.ts.map +1 -0
  182. package/dist/components/table/utils/setAgGridLicenseKey.js +11 -0
  183. package/dist/components/table/utils/setAgGridLicenseKey.js.map +1 -0
  184. package/dist/layoutTest.stories.d.ts +6 -0
  185. package/dist/layoutTest.stories.d.ts.map +1 -0
  186. package/dist/layoutTest.stories.js +9 -0
  187. package/dist/layoutTest.stories.js.map +1 -0
  188. package/dist/pages/assessmentBuilderPage/AssessmentBuilderPage.d.ts +39 -0
  189. package/dist/pages/assessmentBuilderPage/AssessmentBuilderPage.d.ts.map +1 -0
  190. package/dist/pages/assessmentBuilderPage/AssessmentBuilderPage.js +112 -0
  191. package/dist/pages/assessmentBuilderPage/AssessmentBuilderPage.js.map +1 -0
  192. package/dist/pages/assessmentBuilderPage/AssessmentBuilderPage.stories.d.ts +184 -0
  193. package/dist/pages/assessmentBuilderPage/AssessmentBuilderPage.stories.d.ts.map +1 -0
  194. package/dist/pages/assessmentBuilderPage/AssessmentBuilderPage.stories.js +317 -0
  195. package/dist/pages/assessmentBuilderPage/AssessmentBuilderPage.stories.js.map +1 -0
  196. package/dist/pages/assessmentBuilderPage/AssessmentBuilderPage.test.d.ts +2 -0
  197. package/dist/pages/assessmentBuilderPage/AssessmentBuilderPage.test.d.ts.map +1 -0
  198. package/dist/pages/assessmentBuilderPage/AssessmentBuilderPage.test.js +160 -0
  199. package/dist/pages/assessmentBuilderPage/AssessmentBuilderPage.test.js.map +1 -0
  200. package/dist/pages/assessmentSettingsPage/AssessmentSettingsPage.d.ts +11 -0
  201. package/dist/pages/assessmentSettingsPage/AssessmentSettingsPage.d.ts.map +1 -0
  202. package/dist/pages/assessmentSettingsPage/AssessmentSettingsPage.js +13 -0
  203. package/dist/pages/assessmentSettingsPage/AssessmentSettingsPage.js.map +1 -0
  204. package/dist/pages/assessmentSettingsPage/AssessmentSettingsPage.stories.d.ts +174 -0
  205. package/dist/pages/assessmentSettingsPage/AssessmentSettingsPage.stories.d.ts.map +1 -0
  206. package/dist/pages/assessmentSettingsPage/AssessmentSettingsPage.stories.js +212 -0
  207. package/dist/pages/assessmentSettingsPage/AssessmentSettingsPage.stories.js.map +1 -0
  208. package/dist/pages/assessmentSettingsPage/AssessmentSettingsPage.test.d.ts +2 -0
  209. package/dist/pages/assessmentSettingsPage/AssessmentSettingsPage.test.d.ts.map +1 -0
  210. package/dist/pages/assessmentSettingsPage/AssessmentSettingsPage.test.js +84 -0
  211. package/dist/pages/assessmentSettingsPage/AssessmentSettingsPage.test.js.map +1 -0
  212. package/dist/pages/assessmentsPage/AssessmentsPage.d.ts +16 -0
  213. package/dist/pages/assessmentsPage/AssessmentsPage.d.ts.map +1 -0
  214. package/dist/pages/assessmentsPage/AssessmentsPage.js +31 -0
  215. package/dist/pages/assessmentsPage/AssessmentsPage.js.map +1 -0
  216. package/dist/pages/assessmentsPage/AssessmentsPage.stories.d.ts +162 -0
  217. package/dist/pages/assessmentsPage/AssessmentsPage.stories.d.ts.map +1 -0
  218. package/dist/pages/assessmentsPage/AssessmentsPage.stories.js +290 -0
  219. package/dist/pages/assessmentsPage/AssessmentsPage.stories.js.map +1 -0
  220. package/dist/pages/assessmentsPage/AssessmentsPage.test.d.ts +2 -0
  221. package/dist/pages/assessmentsPage/AssessmentsPage.test.d.ts.map +1 -0
  222. package/dist/pages/assessmentsPage/AssessmentsPage.test.js +109 -0
  223. package/dist/pages/assessmentsPage/AssessmentsPage.test.js.map +1 -0
  224. package/dist/pages/customReportWriterPage/CustomReportWriterPage.d.ts +40 -0
  225. package/dist/pages/customReportWriterPage/CustomReportWriterPage.d.ts.map +1 -0
  226. package/dist/pages/customReportWriterPage/CustomReportWriterPage.js +156 -0
  227. package/dist/pages/customReportWriterPage/CustomReportWriterPage.js.map +1 -0
  228. package/dist/pages/customReportWriterPage/CustomReportWriterPage.stories.d.ts +239 -0
  229. package/dist/pages/customReportWriterPage/CustomReportWriterPage.stories.d.ts.map +1 -0
  230. package/dist/pages/customReportWriterPage/CustomReportWriterPage.stories.js +318 -0
  231. package/dist/pages/customReportWriterPage/CustomReportWriterPage.stories.js.map +1 -0
  232. package/dist/pages/customReportWriterPage/CustomReportWriterPage.test.d.ts +2 -0
  233. package/dist/pages/customReportWriterPage/CustomReportWriterPage.test.d.ts.map +1 -0
  234. package/dist/pages/customReportWriterPage/CustomReportWriterPage.test.js +183 -0
  235. package/dist/pages/customReportWriterPage/CustomReportWriterPage.test.js.map +1 -0
  236. package/dist/pages/gradeSetsPage/GradeSetsPage.d.ts +26 -0
  237. package/dist/pages/gradeSetsPage/GradeSetsPage.d.ts.map +1 -0
  238. package/dist/pages/gradeSetsPage/GradeSetsPage.js +33 -0
  239. package/dist/pages/gradeSetsPage/GradeSetsPage.js.map +1 -0
  240. package/dist/pages/gradeSetsPage/GradeSetsPage.stories.d.ts +176 -0
  241. package/dist/pages/gradeSetsPage/GradeSetsPage.stories.d.ts.map +1 -0
  242. package/dist/pages/gradeSetsPage/GradeSetsPage.stories.js +237 -0
  243. package/dist/pages/gradeSetsPage/GradeSetsPage.stories.js.map +1 -0
  244. package/dist/pages/gradeSetsPage/GradeSetsPage.test.d.ts +2 -0
  245. package/dist/pages/gradeSetsPage/GradeSetsPage.test.d.ts.map +1 -0
  246. package/dist/pages/gradeSetsPage/GradeSetsPage.test.js +91 -0
  247. package/dist/pages/gradeSetsPage/GradeSetsPage.test.js.map +1 -0
  248. package/dist/pages/studentProfilePage/StudentProfilePage.d.ts +48 -0
  249. package/dist/pages/studentProfilePage/StudentProfilePage.d.ts.map +1 -0
  250. package/dist/pages/studentProfilePage/StudentProfilePage.js +52 -0
  251. package/dist/pages/studentProfilePage/StudentProfilePage.js.map +1 -0
  252. package/dist/pages/studentProfilePage/StudentProfilePage.stories.d.ts +218 -0
  253. package/dist/pages/studentProfilePage/StudentProfilePage.stories.d.ts.map +1 -0
  254. package/dist/pages/studentProfilePage/StudentProfilePage.stories.js +273 -0
  255. package/dist/pages/studentProfilePage/StudentProfilePage.stories.js.map +1 -0
  256. package/dist/pages/studentProfilePage/StudentProfilePage.test.d.ts +2 -0
  257. package/dist/pages/studentProfilePage/StudentProfilePage.test.d.ts.map +1 -0
  258. package/dist/pages/studentProfilePage/StudentProfilePage.test.js +197 -0
  259. package/dist/pages/studentProfilePage/StudentProfilePage.test.js.map +1 -0
  260. package/dist/utils/PopupParentContext.d.ts +3 -0
  261. package/dist/utils/PopupParentContext.d.ts.map +1 -0
  262. package/dist/utils/PopupParentContext.js +6 -0
  263. package/dist/utils/PopupParentContext.js.map +1 -0
  264. package/dist/utils/PopupParentContext.stories.d.ts +17 -0
  265. package/dist/utils/PopupParentContext.stories.d.ts.map +1 -0
  266. package/dist/utils/PopupParentContext.stories.js +266 -0
  267. package/dist/utils/PopupParentContext.stories.js.map +1 -0
  268. package/dist/utils/getDefaultPopupParent.d.ts +2 -0
  269. package/dist/utils/getDefaultPopupParent.d.ts.map +1 -0
  270. package/dist/utils/getDefaultPopupParent.js +19 -0
  271. package/dist/utils/getDefaultPopupParent.js.map +1 -0
  272. package/package.json +4 -4
  273. package/src/components/pill/Pill.tsx +1 -0
  274. package/src/components/table/Table.stories.tsx +0 -5
  275. package/src/components/table/Table.test.tsx +0 -5
@@ -0,0 +1,253 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Controls, Heading as DocHeading, Primary as DocPrimary, Markdown, Stories, Subtitle, Title, } from '@storybook/addon-docs/blocks';
3
+ import { Badge } from '../badge/Badge.js';
4
+ import { Icon } from '../icon/Icon.js';
5
+ import { useMemo, useState } from 'react';
6
+ import { fn } from 'storybook/test';
7
+ import { SidebarNav } from './SidebarNav.js';
8
+ const DESCRIPTION_INTRO = [
9
+ 'SidebarNav is a two-part navigation pattern: a fixed icon rail for global shortcuts and an expandable',
10
+ 'panel for hierarchical section links. Place a `<Separator />` after the burger to divide the panel toggle',
11
+ 'from the rest of the rail icons.',
12
+ ].join('\n');
13
+ const USAGE_GUIDANCE = [
14
+ '### When to use',
15
+ '',
16
+ '- **Application shell navigation** — persistent rail icons (home, favourites, calendar) plus contextual section nav',
17
+ '- **MIS module navigation** — attendance, students, or reporting areas with grouped links',
18
+ '- **Favourites on leaf links** — `canFavourite` on panel items for user-pinned pages',
19
+ '',
20
+ '---',
21
+ '',
22
+ '### When NOT to use',
23
+ '',
24
+ '| Situation | Use instead |',
25
+ '|---|---|',
26
+ '| Horizontal top-level product nav | [`Menubar`](?path=/docs/components-menubar--docs) or app header patterns |',
27
+ '| Single flat list of links | [`Tabs`](?path=/docs/components-tabs--docs) or plain links |',
28
+ '| Account / settings menu | [`Dropdown`](?path=/docs/components-dropdown--docs) |',
29
+ ].join('\n');
30
+ const DEVELOPER_NOTES = [
31
+ '### Rail layout',
32
+ '',
33
+ 'The rail is a single vertical column. Compose **`Trigger` → `SidebarNav.Separator` → `RailList`** (icon rows).',
34
+ 'Insert additional `<SidebarNav.Separator />` siblings between `RailList` blocks when Figma shows a break',
35
+ '(e.g. main shortcuts, emergency alert, help). `RailItem` and `RailSlot` each render their own',
36
+ '`<li>` row wrapper — do not add `ds-sidebar-nav__*` layout classes in consumer code. Use `RailSlot` for other',
37
+ 'custom rail rows inside `RailList`.',
38
+ '',
39
+ 'The rail `<nav>` defaults to `aria-label="Sidebar rail"`; the panel links nav defaults to `"Sidebar links"`.',
40
+ 'Override via `ariaLabel` on `SidebarNav.Rail` or `SidebarNav.PanelNav` when needed.',
41
+ '',
42
+ '### Config-driven API',
43
+ '',
44
+ 'Pass `railItems` as an ordered array of item configs and `{ type: \'separator\', id }` entries. Use',
45
+ '`opensPanel: true` on the burger item to render the panel trigger. Use `renderItem` for custom rail rows.',
46
+ '',
47
+ '### Favourites',
48
+ '',
49
+ 'Panel leaf items support `canFavourite`, `isPressed`, `onFavouriteClick`, and required `favouriteTooltip` when',
50
+ '`canFavourite` is true (sets `aria-label` and shows a tooltip on hover/focus). The favourite `<button>` is a',
51
+ 'sibling of the link (not inside the `<a>`), with `aria-pressed` reflecting state. Persistence is the',
52
+ 'consumer\'s responsibility.',
53
+ '',
54
+ 'The panel toggle (`SidebarNav.Trigger`) always shows tooltip **Show/hide sub navigation** (override via `tooltip` prop).',
55
+ '',
56
+ '### `renderLink`',
57
+ '',
58
+ 'Provide `renderLink` at the root to integrate with your router. Panel items also support `linkElement="button"`',
59
+ 'with `linkElementProps` for SPA actions without a URL. Data-driven items accept `href` and/or `onClick`.',
60
+ 'Top-level `onClick` takes precedence over `linkElementProps.onClick` when both are set.',
61
+ 'When `renderLink` is set, both `linkProps` and `linkElementProps` are forwarded in the args — spread them onto your router link (same order as the default `<a>`: `linkProps` then `linkElementProps`).',
62
+ 'Also spread `ariaLabel`, `ariaCurrent`, and `onClick` from the args as appropriate.',
63
+ '',
64
+ 'Pass `railItems={[]}` to render an intentionally empty data-driven rail. Omit `railItems` to compose the rail with JSX children.',
65
+ '',
66
+ 'For data-driven rail items, pass `iconColor` as a design-token CSS value (e.g. `var(--icons-icon-default)` or `var(--color-semantic-warning-600)`), not hardcoded hex.',
67
+ '',
68
+ 'The root provider passes shared state (panel open/closed, `renderLink`) to rail and panel subcomponents.',
69
+ '',
70
+ '---',
71
+ '',
72
+ '### Test IDs',
73
+ '',
74
+ '| Element | `data-testid` |',
75
+ '|---|---|',
76
+ '| Root | `sidebar-nav` |',
77
+ '| Rail | `sidebar-nav-rail` |',
78
+ '| Panel / trigger | `sidebar-nav-panel`, `sidebar-nav-panel-trigger`, `sidebar-nav-panel-trigger-{id}` |',
79
+ '| Rail item | `sidebar-nav-rail-item-{id}` |',
80
+ '| Rail separator | `sidebar-nav-rail-separator-{id}` |',
81
+ '| Panel item / favourite | `sidebar-nav-panel-item-{itemId}`, `sidebar-nav-panel-item-favourite-{itemId}` — `itemId` is required on composable `SidebarNav.Item` |',
82
+ ].join('\n');
83
+ const RELATED_COMPONENTS = [
84
+ '## Related components',
85
+ '',
86
+ '[Dropdown](?path=/docs/components-dropdown--docs) · [Tooltip](?path=/docs/components-tooltip--docs) ·',
87
+ '[Badge](?path=/docs/components-badge--docs) · [Separator](?path=/docs/components-separator--docs) ·',
88
+ '[IconText](?path=/docs/components-icontext--docs)',
89
+ ].join('\n');
90
+ const PROPS_INTRO = 'The preview below is wired to the **Controls** panel where applicable.';
91
+ function SidebarNavDocsPage() {
92
+ return (_jsxs(_Fragment, { children: [_jsx(Title, {}), _jsx(Subtitle, {}), _jsx(Markdown, { children: DESCRIPTION_INTRO }), _jsx(DocHeading, { children: "Interactive example" }), _jsx(Markdown, { children: PROPS_INTRO }), _jsx(DocPrimary, {}), _jsx(Controls, {}), _jsx(DocHeading, { children: "Usage guidance" }), _jsx(Markdown, { children: USAGE_GUIDANCE }), _jsx(DocHeading, { children: "Developer notes" }), _jsx(Markdown, { children: DEVELOPER_NOTES }), _jsx(DocHeading, { children: "Examples" }), _jsx(Stories, { title: "" }), _jsx(Markdown, { children: RELATED_COMPONENTS })] }));
93
+ }
94
+ const meta = {
95
+ title: 'Components/SidebarNav',
96
+ component: SidebarNav,
97
+ parameters: {
98
+ layout: 'padded',
99
+ docs: {
100
+ page: SidebarNavDocsPage,
101
+ },
102
+ },
103
+ tags: ['autodocs'],
104
+ args: {
105
+ onExpandedChange: fn(),
106
+ },
107
+ argTypes: {
108
+ defaultExpanded: {
109
+ control: 'boolean',
110
+ description: 'Initial panel open state when uncontrolled.',
111
+ table: { defaultValue: { summary: 'true' } },
112
+ },
113
+ children: { control: false },
114
+ railItems: { control: false },
115
+ panelNavItems: { control: false },
116
+ renderLink: { control: false },
117
+ },
118
+ };
119
+ export default meta;
120
+ const withDescription = (story, description) => ({
121
+ ...story,
122
+ parameters: {
123
+ ...story.parameters,
124
+ docs: {
125
+ ...story.parameters?.docs,
126
+ description: { story: description },
127
+ },
128
+ },
129
+ });
130
+ const storyWrapperStyle = { height: 640 };
131
+ const basePanelNavItems = [
132
+ {
133
+ type: 'group',
134
+ id: 'registers',
135
+ label: 'Registers',
136
+ defaultExpanded: true,
137
+ children: [
138
+ { type: 'item', id: 'covid', label: 'Covid-19 Dashboard', href: '/covid' },
139
+ {
140
+ type: 'item',
141
+ id: 'daily',
142
+ label: 'Daily Attendance',
143
+ href: '/daily',
144
+ current: true,
145
+ canFavourite: true,
146
+ isPressed: false,
147
+ favouriteTooltip: 'Add to favourites',
148
+ },
149
+ { type: 'item', id: 'quick', label: 'Quick Follow-Up', href: '/quick' },
150
+ ],
151
+ },
152
+ {
153
+ type: 'group',
154
+ id: 'absentees',
155
+ label: 'Absentees',
156
+ children: [
157
+ { type: 'item', id: 'late', label: 'Latecomers', href: '/latecomers' },
158
+ { type: 'item', id: 'stats', label: 'Statistics', href: '/statistics' },
159
+ ],
160
+ },
161
+ ];
162
+ const figmaRailItems = [
163
+ {
164
+ id: 'burger',
165
+ label: 'Show/hide sub navigation',
166
+ iconName: 'menu',
167
+ opensPanel: true,
168
+ },
169
+ { type: 'separator', id: 'after-burger' },
170
+ { id: 'favourites', label: 'Favourites', iconName: 'favourite-outline', href: '/favourites' },
171
+ {
172
+ id: 'notifications',
173
+ label: 'Notifications',
174
+ iconName: 'message-square-more',
175
+ href: '/notifications',
176
+ badgeContent: _jsx(Badge, { size: "sm", colour: "salmon", children: "6" }),
177
+ },
178
+ { id: 'calendar', label: 'My Calendar', iconName: 'date', href: '/calendar' },
179
+ { type: 'separator', id: 'before-emergency' },
180
+ {
181
+ id: 'emergency',
182
+ label: 'Emergency Alerts',
183
+ iconName: 'triangle-alert',
184
+ href: '/emergency',
185
+ },
186
+ { type: 'separator', id: 'before-help' },
187
+ {
188
+ id: 'help',
189
+ label: 'Help & Learn with Arbor',
190
+ iconName: 'circle-help',
191
+ href: '/help',
192
+ },
193
+ ];
194
+ const SidebarNavShell = ({ children }) => (_jsx("div", { style: storyWrapperStyle, children: children }));
195
+ /** Figma rail: burger → separator → shortcuts → separator → emergency → separator → help. */
196
+ const FigmaRailComposition = () => (_jsxs(_Fragment, { children: [_jsx(SidebarNav.Trigger, { children: _jsx(Icon, { name: "menu", size: 24 }) }), _jsx(SidebarNav.Separator, { id: "after-burger" }), _jsxs(SidebarNav.RailList, { children: [_jsx(SidebarNav.RailItem, { href: "/favourites", "aria-label": "Favourites", children: _jsx(Icon, { name: "favourite-outline", size: 24 }) }), _jsxs(SidebarNav.RailItem, { href: "/notifications", "aria-label": "Notifications", children: [_jsx(Icon, { name: "message-square-more", size: 24 }), _jsx(Badge, { size: "sm", colour: "salmon", children: "6" })] }), _jsx(SidebarNav.RailItem, { href: "/calendar", "aria-label": "My Calendar", children: _jsx(Icon, { name: "date", size: 24 }) })] }), _jsx(SidebarNav.Separator, { id: "before-emergency" }), _jsx(SidebarNav.RailList, { children: _jsx(SidebarNav.RailItem, { href: "/emergency", "aria-label": "Emergency Alerts", children: _jsx(Icon, { name: "triangle-alert", size: 24 }) }) }), _jsx(SidebarNav.Separator, { id: "before-help" }), _jsx(SidebarNav.RailList, { children: _jsx(SidebarNav.RailItem, { href: "/help", "aria-label": "Help & Learn with Arbor", children: _jsx(Icon, { name: "circle-help", size: 24 }) }) })] }));
197
+ const DefaultTemplate = () => (_jsx(SidebarNavShell, { children: _jsxs(SidebarNav, { children: [_jsx(SidebarNav.Rail, { children: _jsx(FigmaRailComposition, {}) }), _jsxs(SidebarNav.Panel, { children: [_jsx(SidebarNav.Title, { children: "Attendance" }), _jsx(SidebarNav.PanelNav, { items: basePanelNavItems })] })] }) }));
198
+ const CollapsedPanelTemplate = () => (_jsx(SidebarNavShell, { children: _jsxs(SidebarNav, { defaultExpanded: false, children: [_jsxs(SidebarNav.Rail, { children: [_jsx(SidebarNav.Trigger, { children: _jsx(Icon, { name: "menu", size: 24 }) }), _jsx(SidebarNav.Separator, { id: "after-burger" }), _jsx(SidebarNav.RailList, { children: _jsx(SidebarNav.RailItem, { href: "/favourites", "aria-label": "Favourites", children: _jsx(Icon, { name: "favourite-outline", size: 24 }) }) })] }), _jsxs(SidebarNav.Panel, { children: [_jsx(SidebarNav.Title, { children: "Attendance" }), _jsx(SidebarNav.PanelNav, { items: [] })] })] }) }));
199
+ const ConfigDrivenTemplate = () => (_jsx(SidebarNavShell, { children: _jsx(SidebarNav, { railItems: figmaRailItems, panelTitle: "Attendance", panelNavItems: basePanelNavItems }) }));
200
+ const WithFavouritesTemplate = () => {
201
+ const [favourites, setFavourites] = useState({ daily: true });
202
+ const toggle = (id) => {
203
+ setFavourites(prev => ({ ...prev, [id]: !prev[id] }));
204
+ };
205
+ return (_jsx(SidebarNavShell, { children: _jsxs(SidebarNav, { children: [_jsxs(SidebarNav.Rail, { children: [_jsx(SidebarNav.Trigger, { children: _jsx(Icon, { name: "menu", size: 24 }) }), _jsx(SidebarNav.Separator, { id: "after-burger" })] }), _jsxs(SidebarNav.Panel, { children: [_jsx(SidebarNav.Title, { children: "Attendance" }), _jsxs(SidebarNav.PanelNav, { children: [_jsx(SidebarNav.Item, { href: "/daily", itemId: "daily", current: true, canFavourite: true, isPressed: Boolean(favourites.daily), favouriteTooltip: favourites.daily ? 'Remove from favourites' : 'Add to favourites', onFavouriteClick: () => toggle('daily'), children: "Daily Attendance" }), _jsx(SidebarNav.Item, { href: "/quick", itemId: "quick", children: "Quick Follow-Up" })] })] })] }) }));
206
+ };
207
+ const ConfigDrivenWithFavouritesTemplate = () => {
208
+ const [favourites, setFavourites] = useState({ daily: true });
209
+ const panelNavItems = useMemo(() => basePanelNavItems.map(node => (node.type === 'group'
210
+ ? {
211
+ ...node,
212
+ children: node.children.map((child) => {
213
+ if (child.id !== 'daily') {
214
+ return child;
215
+ }
216
+ return {
217
+ ...child,
218
+ canFavourite: true,
219
+ isPressed: Boolean(favourites.daily),
220
+ favouriteTooltip: favourites.daily ? 'Remove from favourites' : 'Add to favourites',
221
+ onFavouriteClick: () => setFavourites(prev => ({ ...prev, daily: !prev.daily })),
222
+ };
223
+ }),
224
+ }
225
+ : node)), [favourites.daily]);
226
+ return (_jsx(SidebarNavShell, { children: _jsx(SidebarNav, { railItems: figmaRailItems, panelTitle: "Attendance", panelNavItems: panelNavItems }) }));
227
+ };
228
+ const WithRenderLinkTemplate = () => (_jsx(SidebarNavShell, { children: _jsxs(SidebarNav, { renderLink: ({ href, className, children, ariaCurrent, ariaLabel, onClick, linkProps, linkElementProps, }) => (_jsx("a", { href: href, className: className, "aria-current": ariaCurrent, "aria-label": ariaLabel, "data-router-link": "true", onClick: onClick ?? (e => e.preventDefault()), ...linkProps, ...linkElementProps, children: children })), children: [_jsxs(SidebarNav.Rail, { children: [_jsx(SidebarNav.Trigger, { children: _jsx(Icon, { name: "menu", size: 24 }) }), _jsx(SidebarNav.Separator, { id: "after-burger" })] }), _jsx(SidebarNav.Panel, { children: _jsx(SidebarNav.PanelNav, { items: [{ type: 'item', id: 'home', label: 'Home', href: '/' }] }) })] }) }));
229
+ export const Default = withDescription({
230
+ render: DefaultTemplate,
231
+ parameters: { controls: { disable: true } },
232
+ }, 'Composed rail: `Trigger`, separators between `RailList` sections (favourites/notifications/calendar, emergency, help). Panel uses `Trigger` ↔ `Panel` via context (`aria-controls` / `aria-expanded`).');
233
+ export const CollapsedPanel = withDescription({
234
+ render: CollapsedPanelTemplate,
235
+ parameters: { controls: { disable: true } },
236
+ }, 'Panel hidden by default (`defaultExpanded={false}`). Use the burger trigger to open the panel.');
237
+ export const ConfigDriven = withDescription({
238
+ render: ConfigDrivenTemplate,
239
+ parameters: { controls: { disable: true } },
240
+ }, 'Same Figma rail order via `railItems` (burger, `{ type: \'separator\' }` entries, then icons). Compare with **Default** for the composed `RailList` + `Separator` pattern.');
241
+ export const WithFavourites = withDescription({
242
+ render: WithFavouritesTemplate,
243
+ parameters: { controls: { disable: true } },
244
+ }, 'Composable panel items with `canFavourite`, `isPressed`, and `onFavouriteClick`. State is mocked in the story — wire to your store or API in MIS.');
245
+ export const ConfigDrivenWithFavourites = withDescription({
246
+ render: ConfigDrivenWithFavouritesTemplate,
247
+ parameters: { controls: { disable: true } },
248
+ }, 'Config-driven rail (`figmaRailItems`) and `panelNavItems` with favourite props merged from local state.');
249
+ export const WithRenderLink = withDescription({
250
+ render: WithRenderLinkTemplate,
251
+ parameters: { controls: { disable: true } },
252
+ }, 'Root `renderLink` replaces default `<a>` elements for router integration.');
253
+ //# sourceMappingURL=SidebarNav.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarNav.stories.js","sourceRoot":"","sources":["../../../src/components/sidebarNav/SidebarNav.stories.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import '@testing-library/jest-dom/vitest';
2
+ //# sourceMappingURL=SidebarNav.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarNav.test.d.ts","sourceRoot":"","sources":["../../../src/components/sidebarNav/SidebarNav.test.tsx"],"names":[],"mappings":"AAAA,OAAO,kCAAkC,CAAC"}
@@ -0,0 +1,240 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import '@testing-library/jest-dom/vitest';
3
+ import { render, screen } from '@testing-library/react';
4
+ import userEvent from '@testing-library/user-event';
5
+ import { Icon } from '../icon/Icon.js';
6
+ import { describe, expect, test, vi } from 'vitest';
7
+ import { SidebarNav } from './SidebarNav.js';
8
+ describe('SidebarNav', () => {
9
+ test('toggles panel visibility via trigger (uncontrolled)', async () => {
10
+ render(_jsxs(SidebarNav, { defaultExpanded: false, children: [_jsx(SidebarNav.Rail, { children: _jsx(SidebarNav.Trigger, { children: _jsx(Icon, { name: "menu", size: 24 }) }) }), _jsxs(SidebarNav.Panel, { children: [_jsx(SidebarNav.Title, { children: "Attendance" }), _jsx(SidebarNav.PanelNav, { items: [] })] })] }));
11
+ const panel = screen.getByTestId('sidebar-nav-panel');
12
+ expect(panel).toHaveAttribute('aria-hidden', 'true');
13
+ const trigger = screen.getByRole('button', { name: 'Show/hide sub navigation' });
14
+ await userEvent.click(trigger);
15
+ expect(panel).toHaveAttribute('aria-hidden', 'false');
16
+ expect(screen.getByText('Attendance')).toBeInTheDocument();
17
+ await userEvent.click(trigger);
18
+ expect(panel).toHaveAttribute('aria-hidden', 'true');
19
+ });
20
+ test('expands and collapses groups in place', async () => {
21
+ render(_jsxs(SidebarNav, { children: [_jsx(SidebarNav.Rail, { children: _jsx(SidebarNav.Trigger, { children: _jsx(Icon, { name: "menu", size: 24 }) }) }), _jsx(SidebarNav.Panel, { children: _jsx(SidebarNav.PanelNav, { items: [
22
+ {
23
+ type: 'group',
24
+ id: 'registers',
25
+ label: 'Registers',
26
+ children: [
27
+ { type: 'item', id: 'daily', label: 'Daily attendance', href: '/daily' },
28
+ ],
29
+ },
30
+ ] }) })] }));
31
+ const registersTrigger = screen.getByRole('button', { name: 'Registers' });
32
+ const groupChildren = document.getElementById(registersTrigger.getAttribute('aria-controls'));
33
+ expect(groupChildren).toHaveAttribute('aria-hidden', 'true');
34
+ await userEvent.click(registersTrigger);
35
+ expect(groupChildren).toHaveAttribute('aria-hidden', 'false');
36
+ expect(screen.getByText('Daily attendance')).toBeInTheDocument();
37
+ await userEvent.click(registersTrigger);
38
+ expect(groupChildren).toHaveAttribute('aria-hidden', 'true');
39
+ });
40
+ test('renders group row as a button with aria-expanded', () => {
41
+ render(_jsxs(SidebarNav, { children: [_jsx(SidebarNav.Rail, { children: _jsx(SidebarNav.Trigger, { children: _jsx(Icon, { name: "menu", size: 24 }) }) }), _jsx(SidebarNav.Panel, { children: _jsx(SidebarNav.PanelNav, { items: [
42
+ {
43
+ type: 'group',
44
+ id: 'registers',
45
+ label: 'Registers',
46
+ children: [],
47
+ },
48
+ ] }) })] }));
49
+ const registers = screen.getByRole('button', { name: 'Registers' });
50
+ expect(registers).toHaveAttribute('aria-expanded', 'false');
51
+ expect(registers.tagName).toBe('BUTTON');
52
+ });
53
+ test('supports nested groups (sub-sub menus)', async () => {
54
+ render(_jsxs(SidebarNav, { children: [_jsx(SidebarNav.Rail, { children: _jsx(SidebarNav.Trigger, { children: _jsx(Icon, { name: "menu", size: 24 }) }) }), _jsx(SidebarNav.Panel, { children: _jsx(SidebarNav.PanelNav, { items: [
55
+ {
56
+ type: 'group',
57
+ id: 'a',
58
+ label: 'A',
59
+ children: [
60
+ {
61
+ type: 'group',
62
+ id: 'b',
63
+ label: 'B',
64
+ children: [{ type: 'item', id: 'c', label: 'C', href: '/c' }],
65
+ },
66
+ ],
67
+ },
68
+ ] }) })] }));
69
+ const triggerA = screen.getByRole('button', { name: 'A' });
70
+ const groupAChildren = document.getElementById(triggerA.getAttribute('aria-controls'));
71
+ const triggerB = screen.getByRole('button', { name: 'B', hidden: true });
72
+ const groupC = document.getElementById(triggerB.getAttribute('aria-controls'));
73
+ expect(groupC).toHaveAttribute('aria-hidden', 'true');
74
+ await userEvent.click(triggerA);
75
+ expect(groupAChildren).toHaveAttribute('aria-hidden', 'false');
76
+ expect(groupC).toHaveAttribute('aria-hidden', 'true');
77
+ await userEvent.click(screen.getByRole('button', { name: 'B' }));
78
+ expect(groupC).toHaveAttribute('aria-hidden', 'false');
79
+ expect(screen.getByText('C')).toBeInTheDocument();
80
+ });
81
+ test('uses renderLink for leaf items', () => {
82
+ const renderLink = vi.fn(({ href, className, children, ariaCurrent, onClick, linkProps, }) => (_jsx("a", { href: href, className: className, "data-custom-link": "true", ...(ariaCurrent ? { 'aria-current': ariaCurrent } : {}), ...linkProps, onClick: onClick, children: children })));
83
+ render(_jsxs(SidebarNav, { renderLink: renderLink, children: [_jsx(SidebarNav.Rail, { children: _jsx(SidebarNav.Trigger, { children: _jsx(Icon, { name: "menu", size: 24 }) }) }), _jsx(SidebarNav.Panel, { children: _jsx(SidebarNav.PanelNav, { items: [
84
+ { type: 'item', id: 'home', label: 'Home', href: '/' },
85
+ ] }) })] }));
86
+ expect(screen.getByText('Home').closest('a')).toHaveAttribute('data-custom-link', 'true');
87
+ expect(renderLink).toHaveBeenCalledWith(expect.objectContaining({
88
+ linkProps: undefined,
89
+ }));
90
+ });
91
+ test('passes linkProps through renderLink for panel items', () => {
92
+ const renderLink = vi.fn(({ href, className, children, linkProps }) => (_jsx("a", { href: href, className: className, "data-custom-link": "true", ...linkProps, children: children })));
93
+ render(_jsxs(SidebarNav, { renderLink: renderLink, children: [_jsx(SidebarNav.Rail, { children: _jsx(SidebarNav.Trigger, { children: _jsx(Icon, { name: "menu", size: 24 }) }) }), _jsx(SidebarNav.Panel, { children: _jsx(SidebarNav.PanelNav, { children: _jsx(SidebarNav.Item, { itemId: "daily", href: "/daily", linkProps: { 'data-track': 'daily' }, children: "Daily Attendance" }) }) })] }));
94
+ expect(screen.getByRole('link', { name: 'Daily Attendance' })).toHaveAttribute('data-track', 'daily');
95
+ expect(renderLink).toHaveBeenCalledWith(expect.objectContaining({
96
+ linkProps: { 'data-track': 'daily' },
97
+ }));
98
+ });
99
+ test('passes linkElementProps through renderLink for panel items', () => {
100
+ const renderLink = vi.fn(({ href, className, children, linkProps, linkElementProps }) => (_jsx("a", { href: href, className: className, "data-custom-link": "true", ...linkProps, ...linkElementProps, children: children })));
101
+ render(_jsxs(SidebarNav, { renderLink: renderLink, children: [_jsx(SidebarNav.Rail, { children: _jsx(SidebarNav.Trigger, { children: _jsx(Icon, { name: "menu", size: 24 }) }) }), _jsx(SidebarNav.Panel, { children: _jsx(SidebarNav.PanelNav, { children: _jsx(SidebarNav.Item, { itemId: "daily", href: "/daily", linkElementProps: { 'aria-describedby': 'daily-desc' }, children: "Daily Attendance" }) }) })] }));
102
+ expect(screen.getByRole('link', { name: 'Daily Attendance' })).toHaveAttribute('aria-describedby', 'daily-desc');
103
+ expect(renderLink).toHaveBeenCalledWith(expect.objectContaining({
104
+ linkElementProps: { 'aria-describedby': 'daily-desc' },
105
+ }));
106
+ });
107
+ test('passes ariaLabel through renderLink for rail items', () => {
108
+ const renderLink = vi.fn(({ href, className, children, ariaLabel, onClick }) => (_jsx("a", { href: href, className: className, "aria-label": ariaLabel, "data-custom-link": "true", onClick: onClick, children: children })));
109
+ render(_jsx(SidebarNav, { renderLink: renderLink, children: _jsx(SidebarNav.Rail, { children: _jsx(SidebarNav.RailList, { children: _jsx(SidebarNav.RailItem, { href: "/favourites", "aria-label": "Favourites", children: _jsx(Icon, { name: "favourite-outline", size: 24 }) }) }) }) }));
110
+ expect(screen.getByRole('link', { name: 'Favourites' })).toHaveAttribute('data-custom-link', 'true');
111
+ expect(renderLink).toHaveBeenCalledWith(expect.objectContaining({
112
+ ariaLabel: 'Favourites',
113
+ }));
114
+ });
115
+ test('renders onClick-only panel items as buttons', async () => {
116
+ const onClick = vi.fn();
117
+ render(_jsxs(SidebarNav, { children: [_jsx(SidebarNav.Rail, { children: _jsx(SidebarNav.Trigger, { children: _jsx(Icon, { name: "menu", size: 24 }) }) }), _jsx(SidebarNav.Panel, { children: _jsx(SidebarNav.PanelNav, { items: [
118
+ { type: 'item', id: 'action', label: 'Run action', onClick },
119
+ ] }) })] }));
120
+ const action = screen.getByRole('button', { name: 'Run action' });
121
+ expect(action.tagName).toBe('BUTTON');
122
+ await userEvent.click(action);
123
+ expect(onClick).toHaveBeenCalled();
124
+ });
125
+ test('renders composable button items via linkElement', async () => {
126
+ const onClick = vi.fn();
127
+ render(_jsxs(SidebarNav, { children: [_jsx(SidebarNav.Rail, { children: _jsx(SidebarNav.Trigger, { children: _jsx(Icon, { name: "menu", size: 24 }) }) }), _jsx(SidebarNav.Panel, { children: _jsx(SidebarNav.PanelNav, { children: _jsx(SidebarNav.Item, { itemId: "action", linkElement: "button", linkElementProps: { onClick }, children: "Run action" }) }) })] }));
128
+ await userEvent.click(screen.getByRole('button', { name: 'Run action' }));
129
+ expect(onClick).toHaveBeenCalled();
130
+ });
131
+ test('prefers top-level onClick over linkElementProps.onClick when both are provided', async () => {
132
+ const topLevelOnClick = vi.fn();
133
+ const linkElementPropsOnClick = vi.fn();
134
+ render(_jsxs(SidebarNav, { children: [_jsx(SidebarNav.Rail, { children: _jsx(SidebarNav.Trigger, { children: _jsx(Icon, { name: "menu", size: 24 }) }) }), _jsx(SidebarNav.Panel, { children: _jsx(SidebarNav.PanelNav, { children: _jsx(SidebarNav.Item, { itemId: "action", linkElement: "button", onClick: topLevelOnClick, linkElementProps: { onClick: linkElementPropsOnClick }, children: "Run action" }) }) })] }));
135
+ await userEvent.click(screen.getByRole('button', { name: 'Run action' }));
136
+ expect(topLevelOnClick).toHaveBeenCalledTimes(1);
137
+ expect(linkElementPropsOnClick).not.toHaveBeenCalled();
138
+ });
139
+ test('assigns distinct test ids to composable items via required itemId', () => {
140
+ render(_jsxs(SidebarNav, { children: [_jsx(SidebarNav.Rail, { children: _jsx(SidebarNav.Trigger, { children: _jsx(Icon, { name: "menu", size: 24 }) }) }), _jsx(SidebarNav.Panel, { children: _jsxs(SidebarNav.PanelNav, { children: [_jsx(SidebarNav.Item, { itemId: "first", linkElement: "button", linkElementProps: { onClick: vi.fn() }, children: "First action" }), _jsx(SidebarNav.Item, { itemId: "second", linkElement: "button", linkElementProps: { onClick: vi.fn() }, children: "Second action" })] }) })] }));
141
+ expect(screen.getByTestId('sidebar-nav-panel-item-first')).toBeInTheDocument();
142
+ expect(screen.getByTestId('sidebar-nav-panel-item-second')).toBeInTheDocument();
143
+ });
144
+ test('warns when composable Rail is wrapped and hybrid panel mode is used', () => {
145
+ const warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => { });
146
+ render(_jsx(SidebarNav, { panelTitle: "Attendance", panelNavItems: [], children: _jsx(_Fragment, { children: _jsx(SidebarNav.Rail, { children: _jsx(SidebarNav.Trigger, { children: _jsx(Icon, { name: "menu", size: 24 }) }) }) }) }));
147
+ expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining('SidebarNav.Rail must be a direct child of SidebarNav'));
148
+ warnSpy.mockRestore();
149
+ });
150
+ test('does not warn for rail-only data-driven sidebar', () => {
151
+ const warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => { });
152
+ render(_jsx(SidebarNav, { railItems: [
153
+ {
154
+ id: 'burger',
155
+ label: 'Show/hide sub navigation',
156
+ iconName: 'menu',
157
+ opensPanel: true,
158
+ },
159
+ ] }));
160
+ expect(warnSpy).not.toHaveBeenCalled();
161
+ warnSpy.mockRestore();
162
+ });
163
+ test('defaults rail nav aria-label to Sidebar rail', () => {
164
+ render(_jsx(SidebarNav, { defaultExpanded: false, children: _jsx(SidebarNav.Rail, { children: _jsx(SidebarNav.Trigger, { children: _jsx(Icon, { name: "menu", size: 24 }) }) }) }));
165
+ expect(screen.getByRole('navigation', { name: 'Sidebar rail' })).toBeInTheDocument();
166
+ });
167
+ test('allows overriding rail nav aria-label', () => {
168
+ render(_jsx(SidebarNav, { defaultExpanded: false, children: _jsx(SidebarNav.Rail, { ariaLabel: "App shortcuts", children: _jsx(SidebarNav.Trigger, { children: _jsx(Icon, { name: "menu", size: 24 }) }) }) }));
169
+ expect(screen.getByRole('navigation', { name: 'App shortcuts' })).toBeInTheDocument();
170
+ });
171
+ test('uses data-driven railItems when an empty array is passed', () => {
172
+ render(_jsx(SidebarNav, { railItems: [], panelTitle: "Attendance", panelNavItems: [] }));
173
+ expect(screen.getByTestId('sidebar-nav-rail')).toBeInTheDocument();
174
+ expect(screen.queryByTestId('sidebar-nav-rail-item-burger')).not.toBeInTheDocument();
175
+ expect(screen.getByText('Attendance')).toBeInTheDocument();
176
+ });
177
+ test('prefixes data-driven trigger test id with entry id', () => {
178
+ render(_jsx(SidebarNav, { railItems: [
179
+ {
180
+ id: 'burger',
181
+ label: 'Show/hide sub navigation',
182
+ iconName: 'menu',
183
+ opensPanel: true,
184
+ },
185
+ ], panelNavItems: [] }));
186
+ expect(screen.getByTestId('sidebar-nav-panel-trigger-burger')).toBeInTheDocument();
187
+ });
188
+ test('renders favourite button outside the item link with aria-pressed', async () => {
189
+ const onFavouriteClick = vi.fn();
190
+ render(_jsxs(SidebarNav, { children: [_jsx(SidebarNav.Rail, { children: _jsx(SidebarNav.Trigger, { children: _jsx(Icon, { name: "menu", size: 24 }) }) }), _jsx(SidebarNav.Panel, { children: _jsx(SidebarNav.PanelNav, { items: [
191
+ {
192
+ type: 'item',
193
+ id: 'daily',
194
+ label: 'Daily Attendance',
195
+ href: '/daily',
196
+ canFavourite: true,
197
+ isPressed: true,
198
+ favouriteTooltip: 'Remove from favourites',
199
+ onFavouriteClick,
200
+ },
201
+ ] }) })] }));
202
+ const listItem = screen.getByTestId('sidebar-nav-panel-item-daily');
203
+ const link = screen.getByRole('link', { name: 'Daily Attendance' });
204
+ const favourite = screen.getByTestId('sidebar-nav-panel-item-favourite-daily');
205
+ expect(listItem).toContainElement(link);
206
+ expect(listItem).toContainElement(favourite);
207
+ expect(favourite).not.toContainElement(link);
208
+ expect(link).not.toContainElement(favourite);
209
+ expect(favourite).toHaveAttribute('aria-pressed', 'true');
210
+ await userEvent.click(favourite);
211
+ expect(onFavouriteClick).toHaveBeenCalled();
212
+ });
213
+ test('uses favouriteTooltip as aria-label on favourite button', () => {
214
+ render(_jsxs(SidebarNav, { children: [_jsx(SidebarNav.Rail, { children: _jsx(SidebarNav.Trigger, { children: _jsx(Icon, { name: "menu", size: 24 }) }) }), _jsx(SidebarNav.Panel, { children: _jsx(SidebarNav.PanelNav, { items: [
215
+ {
216
+ type: 'item',
217
+ id: 'daily',
218
+ label: 'Daily Attendance',
219
+ href: '/daily',
220
+ canFavourite: true,
221
+ isPressed: false,
222
+ favouriteTooltip: 'Add to favourites',
223
+ },
224
+ ] }) })] }));
225
+ expect(screen.getByTestId('sidebar-nav-panel-item-favourite-daily')).toHaveAttribute('aria-label', 'Add to favourites');
226
+ });
227
+ test('does not render favourite button when canFavourite is false', () => {
228
+ render(_jsxs(SidebarNav, { children: [_jsx(SidebarNav.Rail, { children: _jsx(SidebarNav.Trigger, { children: _jsx(Icon, { name: "menu", size: 24 }) }) }), _jsx(SidebarNav.Panel, { children: _jsx(SidebarNav.PanelNav, { items: [
229
+ {
230
+ type: 'item',
231
+ id: 'daily',
232
+ label: 'Daily Attendance',
233
+ href: '/daily',
234
+ canFavourite: false,
235
+ },
236
+ ] }) })] }));
237
+ expect(screen.queryByTestId('sidebar-nav-panel-item-favourite-daily')).not.toBeInTheDocument();
238
+ });
239
+ });
240
+ //# sourceMappingURL=SidebarNav.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarNav.test.js","sourceRoot":"","sources":["../../../src/components/sidebarNav/SidebarNav.test.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { SidebarNavRenderLinkArgs } from './types.js';
2
+ export type SidebarNavContextValue = {
3
+ expanded: boolean;
4
+ setExpanded: (expanded: boolean) => void;
5
+ panelId: string;
6
+ renderLink?: (args: SidebarNavRenderLinkArgs) => React.ReactElement;
7
+ };
8
+ export declare function SidebarNavProvider(props: {
9
+ value: SidebarNavContextValue;
10
+ children: React.ReactNode;
11
+ }): import("react/jsx-runtime").JSX.Element;
12
+ export declare function useSidebarNavContext(): SidebarNavContextValue;
13
+ //# sourceMappingURL=SidebarNavContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarNavContext.d.ts","sourceRoot":"","sources":["../../../src/components/sidebarNav/SidebarNavContext.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE3D,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,wBAAwB,KAAK,KAAK,CAAC,YAAY,CAAC;CACrE,CAAC;AAIF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,sBAAsB,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,2CAOrG;AAED,wBAAgB,oBAAoB,2BAMnC"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createContext, useContext } from 'react';
3
+ const SidebarNavContext = createContext(null);
4
+ export function SidebarNavProvider(props) {
5
+ const { value, children } = props;
6
+ return (_jsx(SidebarNavContext.Provider, { value: value, children: children }));
7
+ }
8
+ export function useSidebarNavContext() {
9
+ const ctx = useContext(SidebarNavContext);
10
+ if (!ctx) {
11
+ throw new Error('SidebarNav components must be used within <SidebarNav>.');
12
+ }
13
+ return ctx;
14
+ }
15
+ //# sourceMappingURL=SidebarNavContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarNavContext.js","sourceRoot":"","sources":["../../../src/components/sidebarNav/SidebarNavContext.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAUlD,MAAM,iBAAiB,GAAG,aAAa,CAAgC,IAAI,CAAC,CAAC;AAE7E,MAAM,UAAU,kBAAkB,CAAC,KAAmE;IACpG,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAClC,OAAO,CACL,KAAC,iBAAiB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YACrC,QAAQ,GACkB,CAC9B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,MAAM,GAAG,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAC1C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { HTMLAttributes } from 'react';
2
+ export type SidebarNavGroupProps = {
3
+ label: string;
4
+ expanded?: boolean;
5
+ defaultExpanded?: boolean;
6
+ onExpandedChange?: (expanded: boolean) => void;
7
+ children: React.ReactNode;
8
+ } & Omit<HTMLAttributes<HTMLLIElement>, 'children'>;
9
+ export declare const SidebarNavGroup: (props: SidebarNavGroupProps) => import("react/jsx-runtime").JSX.Element;
10
+ //# sourceMappingURL=SidebarNavGroup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarNavGroup.d.ts","sourceRoot":"","sources":["../../../src/components/sidebarNav/SidebarNavGroup.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAI5C,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,UAAU,CAAC,CAAC;AAEpD,eAAO,MAAM,eAAe,GAAI,OAAO,oBAAoB,4CA4C1D,CAAC"}