@arbor-education/design-system.components 0.25.9 → 1.0.1

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 (461) hide show
  1. package/.gather/instructions/project-overview.md +1 -1
  2. package/.github/workflows/release.yml +3 -1
  3. package/.storybook/main.ts +12 -6
  4. package/CHANGELOG.md +20 -0
  5. package/CONTRIBUTING.md +7 -5
  6. package/component-library.md +97 -3
  7. package/dist/components/emptyState/EmptyState.d.ts +22 -0
  8. package/dist/components/emptyState/EmptyState.d.ts.map +1 -0
  9. package/dist/components/emptyState/EmptyState.js +11 -0
  10. package/dist/components/emptyState/EmptyState.js.map +1 -0
  11. package/dist/components/emptyState/EmptyState.stories.d.ts +117 -0
  12. package/dist/components/emptyState/EmptyState.stories.d.ts.map +1 -0
  13. package/dist/components/emptyState/EmptyState.stories.js +332 -0
  14. package/dist/components/emptyState/EmptyState.stories.js.map +1 -0
  15. package/dist/components/emptyState/EmptyState.test.d.ts +2 -0
  16. package/dist/components/emptyState/EmptyState.test.d.ts.map +1 -0
  17. package/dist/components/emptyState/EmptyState.test.js +80 -0
  18. package/dist/components/emptyState/EmptyState.test.js.map +1 -0
  19. package/dist/components/favourite/FavouriteButton.d.ts +18 -0
  20. package/dist/components/favourite/FavouriteButton.d.ts.map +1 -0
  21. package/dist/components/favourite/FavouriteButton.js +16 -0
  22. package/dist/components/favourite/FavouriteButton.js.map +1 -0
  23. package/dist/components/favourite/FavouriteButton.test.d.ts +2 -0
  24. package/dist/components/favourite/FavouriteButton.test.d.ts.map +1 -0
  25. package/dist/components/favourite/FavouriteButton.test.js +37 -0
  26. package/dist/components/favourite/FavouriteButton.test.js.map +1 -0
  27. package/dist/components/filterBar/FilterBar.d.ts +1 -1
  28. package/dist/components/filterBar/FilterBar.stories.d.ts +1 -1
  29. package/dist/components/icon/Icon.d.ts +1 -1
  30. package/dist/components/icon/Icon.d.ts.map +1 -1
  31. package/dist/components/icon/Icon.js +1 -1
  32. package/dist/components/icon/Icon.js.map +1 -1
  33. package/dist/components/pill/Pill.d.ts +3 -2
  34. package/dist/components/pill/Pill.d.ts.map +1 -1
  35. package/dist/components/pill/Pill.js +15 -9
  36. package/dist/components/pill/Pill.js.map +1 -1
  37. package/dist/components/pill/Pill.stories.d.ts +21 -3
  38. package/dist/components/pill/Pill.stories.d.ts.map +1 -1
  39. package/dist/components/pill/Pill.stories.js +275 -40
  40. package/dist/components/pill/Pill.stories.js.map +1 -1
  41. package/dist/components/pill/Pill.test.js +64 -3
  42. package/dist/components/pill/Pill.test.js.map +1 -1
  43. package/dist/components/sideNavigation/SideNavigation.d.ts +34 -0
  44. package/dist/components/sideNavigation/SideNavigation.d.ts.map +1 -0
  45. package/dist/components/sideNavigation/SideNavigation.js +30 -0
  46. package/dist/components/sideNavigation/SideNavigation.js.map +1 -0
  47. package/dist/components/sideNavigation/SideNavigation.stories.d.ts +72 -0
  48. package/dist/components/sideNavigation/SideNavigation.stories.d.ts.map +1 -0
  49. package/dist/components/sideNavigation/SideNavigation.stories.js +298 -0
  50. package/dist/components/sideNavigation/SideNavigation.stories.js.map +1 -0
  51. package/dist/components/sideNavigation/SideNavigation.test.d.ts +2 -0
  52. package/dist/components/sideNavigation/SideNavigation.test.d.ts.map +1 -0
  53. package/dist/components/sideNavigation/SideNavigation.test.js +74 -0
  54. package/dist/components/sideNavigation/SideNavigation.test.js.map +1 -0
  55. package/dist/components/sideNavigation/SideNavigationContext.d.ts +10 -0
  56. package/dist/components/sideNavigation/SideNavigationContext.d.ts.map +1 -0
  57. package/dist/components/sideNavigation/SideNavigationContext.js +15 -0
  58. package/dist/components/sideNavigation/SideNavigationContext.js.map +1 -0
  59. package/dist/components/{sidebarNav/SidebarNavGroup.d.ts → sideNavigation/SideNavigationGroup.d.ts} +3 -3
  60. package/dist/components/sideNavigation/SideNavigationGroup.d.ts.map +1 -0
  61. package/dist/components/sideNavigation/SideNavigationGroup.js +16 -0
  62. package/dist/components/sideNavigation/SideNavigationGroup.js.map +1 -0
  63. package/dist/components/sideNavigation/SideNavigationGroup.test.d.ts +2 -0
  64. package/dist/components/sideNavigation/SideNavigationGroup.test.d.ts.map +1 -0
  65. package/dist/components/sideNavigation/SideNavigationGroup.test.js +58 -0
  66. package/dist/components/sideNavigation/SideNavigationGroup.test.js.map +1 -0
  67. package/dist/components/{sidebarNav/SidebarNavItem.d.ts → sideNavigation/SideNavigationItem.d.ts} +11 -12
  68. package/dist/components/sideNavigation/SideNavigationItem.d.ts.map +1 -0
  69. package/dist/components/sideNavigation/SideNavigationItem.js +28 -0
  70. package/dist/components/sideNavigation/SideNavigationItem.js.map +1 -0
  71. package/dist/components/sideNavigation/SideNavigationItem.test.d.ts +2 -0
  72. package/dist/components/sideNavigation/SideNavigationItem.test.d.ts.map +1 -0
  73. package/dist/components/sideNavigation/SideNavigationItem.test.js +65 -0
  74. package/dist/components/sideNavigation/SideNavigationItem.test.js.map +1 -0
  75. package/dist/components/sideNavigation/SideNavigationItemFavourite.d.ts +8 -0
  76. package/dist/components/sideNavigation/SideNavigationItemFavourite.d.ts.map +1 -0
  77. package/dist/components/{sidebarNav/SidebarNavItemFavourite.js → sideNavigation/SideNavigationItemFavourite.js} +5 -5
  78. package/dist/components/sideNavigation/SideNavigationItemFavourite.js.map +1 -0
  79. package/dist/components/sideNavigation/SideNavigationItemFavourite.test.d.ts +2 -0
  80. package/dist/components/sideNavigation/SideNavigationItemFavourite.test.d.ts.map +1 -0
  81. package/dist/components/sideNavigation/SideNavigationItemFavourite.test.js +31 -0
  82. package/dist/components/sideNavigation/SideNavigationItemFavourite.test.js.map +1 -0
  83. package/dist/components/sideNavigation/SideNavigationTitle.d.ts +4 -0
  84. package/dist/components/sideNavigation/SideNavigationTitle.d.ts.map +1 -0
  85. package/dist/components/sideNavigation/SideNavigationTitle.js +7 -0
  86. package/dist/components/sideNavigation/SideNavigationTitle.js.map +1 -0
  87. package/dist/components/sideNavigation/SideNavigationTitle.test.d.ts +2 -0
  88. package/dist/components/sideNavigation/SideNavigationTitle.test.d.ts.map +1 -0
  89. package/dist/components/sideNavigation/SideNavigationTitle.test.js +22 -0
  90. package/dist/components/sideNavigation/SideNavigationTitle.test.js.map +1 -0
  91. package/dist/components/sideNavigation/SideNavigationTooltip.d.ts +7 -0
  92. package/dist/components/sideNavigation/SideNavigationTooltip.d.ts.map +1 -0
  93. package/dist/components/{sidebarNav/SidebarNavTooltip.js → sideNavigation/SideNavigationTooltip.js} +2 -2
  94. package/dist/components/sideNavigation/SideNavigationTooltip.js.map +1 -0
  95. package/dist/components/sideNavigation/SideNavigationTooltip.test.d.ts +2 -0
  96. package/dist/components/sideNavigation/SideNavigationTooltip.test.d.ts.map +1 -0
  97. package/dist/components/sideNavigation/SideNavigationTooltip.test.js +26 -0
  98. package/dist/components/sideNavigation/SideNavigationTooltip.test.js.map +1 -0
  99. package/dist/components/sideNavigation/resolvePanelItemProps.d.ts +4 -0
  100. package/dist/components/sideNavigation/resolvePanelItemProps.d.ts.map +1 -0
  101. package/dist/components/{sidebarNav → sideNavigation}/resolvePanelItemProps.js +5 -4
  102. package/dist/components/sideNavigation/resolvePanelItemProps.js.map +1 -0
  103. package/dist/components/sideNavigation/resolvePanelItemProps.test.d.ts.map +1 -0
  104. package/dist/components/{sidebarNav → sideNavigation}/resolvePanelItemProps.test.js +18 -4
  105. package/dist/components/sideNavigation/resolvePanelItemProps.test.js.map +1 -0
  106. package/dist/components/sideNavigation/types.d.ts +47 -0
  107. package/dist/components/sideNavigation/types.d.ts.map +1 -0
  108. package/dist/components/sideNavigation/types.js +2 -0
  109. package/dist/components/sideNavigation/types.js.map +1 -0
  110. package/dist/components/sidebar/Sidebar.d.ts +13 -0
  111. package/dist/components/sidebar/Sidebar.d.ts.map +1 -0
  112. package/dist/components/sidebar/Sidebar.js +9 -0
  113. package/dist/components/sidebar/Sidebar.js.map +1 -0
  114. package/dist/components/sidebar/Sidebar.stories.d.ts +48 -0
  115. package/dist/components/sidebar/Sidebar.stories.d.ts.map +1 -0
  116. package/dist/components/sidebar/Sidebar.stories.js +444 -0
  117. package/dist/components/sidebar/Sidebar.stories.js.map +1 -0
  118. package/dist/components/sidebar/Sidebar.test.d.ts +2 -0
  119. package/dist/components/sidebar/Sidebar.test.d.ts.map +1 -0
  120. package/dist/components/sidebar/Sidebar.test.js +81 -0
  121. package/dist/components/sidebar/Sidebar.test.js.map +1 -0
  122. package/dist/components/sidebar/SidebarItem.d.ts +7 -0
  123. package/dist/components/sidebar/SidebarItem.d.ts.map +1 -0
  124. package/dist/components/sidebar/SidebarItem.js +11 -0
  125. package/dist/components/sidebar/SidebarItem.js.map +1 -0
  126. package/dist/components/singleUser/SingleUser.d.ts +1 -1
  127. package/dist/components/table/Table.d.ts.map +1 -1
  128. package/dist/components/table/Table.js +2 -1
  129. package/dist/components/table/Table.js.map +1 -1
  130. package/dist/components/table/Table.stories.d.ts.map +1 -1
  131. package/dist/components/table/Table.stories.js +24 -70
  132. package/dist/components/table/Table.stories.js.map +1 -1
  133. package/dist/components/table/cellEditors/DateCellEditor.stories.d.ts.map +1 -1
  134. package/dist/components/table/cellEditors/DateCellEditor.stories.js +16 -13
  135. package/dist/components/table/cellEditors/DateCellEditor.stories.js.map +1 -1
  136. package/dist/components/table/cellRenderers/BooleanCellRenderer.stories.d.ts.map +1 -1
  137. package/dist/components/table/cellRenderers/BooleanCellRenderer.stories.js +6 -7
  138. package/dist/components/table/cellRenderers/BooleanCellRenderer.stories.js.map +1 -1
  139. package/dist/components/table/cellRenderers/ButtonCellRenderer.stories.d.ts.map +1 -1
  140. package/dist/components/table/cellRenderers/ButtonCellRenderer.stories.js +7 -8
  141. package/dist/components/table/cellRenderers/ButtonCellRenderer.stories.js.map +1 -1
  142. package/dist/components/table/cellRenderers/CheckboxCellRenderer.stories.d.ts.map +1 -1
  143. package/dist/components/table/cellRenderers/CheckboxCellRenderer.stories.js +7 -8
  144. package/dist/components/table/cellRenderers/CheckboxCellRenderer.stories.js.map +1 -1
  145. package/dist/components/table/cellRenderers/InlineTextCellRenderer.stories.d.ts.map +1 -1
  146. package/dist/components/table/cellRenderers/InlineTextCellRenderer.stories.js +7 -8
  147. package/dist/components/table/cellRenderers/InlineTextCellRenderer.stories.js.map +1 -1
  148. package/dist/components/table/cellRenderers/NumberInputCellRenderer.stories.d.ts.map +1 -1
  149. package/dist/components/table/cellRenderers/NumberInputCellRenderer.stories.js +12 -15
  150. package/dist/components/table/cellRenderers/NumberInputCellRenderer.stories.js.map +1 -1
  151. package/dist/components/table/cellRenderers/SelectDropdownCellRenderer.stories.d.ts.map +1 -1
  152. package/dist/components/table/cellRenderers/SelectDropdownCellRenderer.stories.js +19 -29
  153. package/dist/components/table/cellRenderers/SelectDropdownCellRenderer.stories.js.map +1 -1
  154. package/dist/components/table/columnTypes.d.ts +3 -0
  155. package/dist/components/table/columnTypes.d.ts.map +1 -0
  156. package/dist/components/table/columnTypes.js +55 -0
  157. package/dist/components/table/columnTypes.js.map +1 -0
  158. package/dist/components/tabs/TabsItem.stories.d.ts +2 -2
  159. package/dist/components/toast/Toast.d.ts +11 -2
  160. package/dist/components/toast/Toast.d.ts.map +1 -1
  161. package/dist/components/toast/Toast.js +5 -3
  162. package/dist/components/toast/Toast.js.map +1 -1
  163. package/dist/components/toast/Toast.stories.d.ts +15 -3
  164. package/dist/components/toast/Toast.stories.d.ts.map +1 -1
  165. package/dist/components/toast/Toast.stories.js +43 -41
  166. package/dist/components/toast/Toast.stories.js.map +1 -1
  167. package/dist/components/toast/Toast.test.js +19 -4
  168. package/dist/components/toast/Toast.test.js.map +1 -1
  169. package/dist/components/toast/ToastAction.d.ts +7 -0
  170. package/dist/components/toast/ToastAction.d.ts.map +1 -0
  171. package/dist/components/toast/ToastAction.js +9 -0
  172. package/dist/components/toast/ToastAction.js.map +1 -0
  173. package/dist/components/toggleGroup/ToggleGroup.stories.js +1 -1
  174. package/dist/components/toggleGroup/ToggleGroup.stories.js.map +1 -1
  175. package/dist/components/tooltip/TooltipWrapper.d.ts +1 -0
  176. package/dist/components/tooltip/TooltipWrapper.d.ts.map +1 -1
  177. package/dist/components/tooltip/TooltipWrapper.js +2 -2
  178. package/dist/components/tooltip/TooltipWrapper.js.map +1 -1
  179. package/dist/components/widget/Widget.d.ts +18 -0
  180. package/dist/components/widget/Widget.d.ts.map +1 -0
  181. package/dist/components/widget/Widget.js +51 -0
  182. package/dist/components/widget/Widget.js.map +1 -0
  183. package/dist/components/widget/Widget.stories.d.ts +128 -0
  184. package/dist/components/widget/Widget.stories.d.ts.map +1 -0
  185. package/dist/components/widget/Widget.stories.js +417 -0
  186. package/dist/components/widget/Widget.stories.js.map +1 -0
  187. package/dist/components/widget/Widget.test.d.ts +2 -0
  188. package/dist/components/widget/Widget.test.d.ts.map +1 -0
  189. package/dist/components/widget/Widget.test.js +110 -0
  190. package/dist/components/widget/Widget.test.js.map +1 -0
  191. package/dist/components/widget/WidgetBody.d.ts +6 -0
  192. package/dist/components/widget/WidgetBody.d.ts.map +1 -0
  193. package/dist/components/widget/WidgetBody.js +20 -0
  194. package/dist/components/widget/WidgetBody.js.map +1 -0
  195. package/dist/components/widget/WidgetContext.d.ts +20 -0
  196. package/dist/components/widget/WidgetContext.d.ts.map +1 -0
  197. package/dist/components/widget/WidgetContext.js +10 -0
  198. package/dist/components/widget/WidgetContext.js.map +1 -0
  199. package/dist/components/widget/WidgetHeader.d.ts +8 -0
  200. package/dist/components/widget/WidgetHeader.d.ts.map +1 -0
  201. package/dist/components/widget/WidgetHeader.js +56 -0
  202. package/dist/components/widget/WidgetHeader.js.map +1 -0
  203. package/dist/components/widget/types.d.ts +43 -0
  204. package/dist/components/widget/types.d.ts.map +1 -0
  205. package/dist/components/widget/types.js +2 -0
  206. package/dist/components/widget/types.js.map +1 -0
  207. package/dist/components/widgetCalendar/WidgetCalendar.d.ts +35 -0
  208. package/dist/components/widgetCalendar/WidgetCalendar.d.ts.map +1 -0
  209. package/dist/components/widgetCalendar/WidgetCalendar.js +22 -0
  210. package/dist/components/widgetCalendar/WidgetCalendar.js.map +1 -0
  211. package/dist/components/widgetCalendar/WidgetCalendar.stories.d.ts +60 -0
  212. package/dist/components/widgetCalendar/WidgetCalendar.stories.d.ts.map +1 -0
  213. package/dist/components/widgetCalendar/WidgetCalendar.stories.js +140 -0
  214. package/dist/components/widgetCalendar/WidgetCalendar.stories.js.map +1 -0
  215. package/dist/components/widgetCalendar/WidgetCalendar.test.d.ts +2 -0
  216. package/dist/components/widgetCalendar/WidgetCalendar.test.d.ts.map +1 -0
  217. package/dist/components/widgetCalendar/WidgetCalendar.test.js +88 -0
  218. package/dist/components/widgetCalendar/WidgetCalendar.test.js.map +1 -0
  219. package/dist/components/widgetCalendar/WidgetCalendarItem.d.ts +17 -0
  220. package/dist/components/widgetCalendar/WidgetCalendarItem.d.ts.map +1 -0
  221. package/dist/components/widgetCalendar/WidgetCalendarItem.js +25 -0
  222. package/dist/components/widgetCalendar/WidgetCalendarItem.js.map +1 -0
  223. package/dist/components/widgetFavourites/WidgetFavourites.d.ts +12 -0
  224. package/dist/components/widgetFavourites/WidgetFavourites.d.ts.map +1 -0
  225. package/dist/components/widgetFavourites/WidgetFavourites.js +23 -0
  226. package/dist/components/widgetFavourites/WidgetFavourites.js.map +1 -0
  227. package/dist/components/widgetFavourites/WidgetFavourites.stories.d.ts +84 -0
  228. package/dist/components/widgetFavourites/WidgetFavourites.stories.d.ts.map +1 -0
  229. package/dist/components/widgetFavourites/WidgetFavourites.stories.js +210 -0
  230. package/dist/components/widgetFavourites/WidgetFavourites.stories.js.map +1 -0
  231. package/dist/components/widgetFavourites/WidgetFavourites.test.d.ts +2 -0
  232. package/dist/components/widgetFavourites/WidgetFavourites.test.d.ts.map +1 -0
  233. package/dist/components/widgetFavourites/WidgetFavourites.test.js +67 -0
  234. package/dist/components/widgetFavourites/WidgetFavourites.test.js.map +1 -0
  235. package/dist/components/widgetFavourites/WidgetFavouritesItem.d.ts +3 -0
  236. package/dist/components/widgetFavourites/WidgetFavouritesItem.d.ts.map +1 -0
  237. package/dist/components/widgetFavourites/WidgetFavouritesItem.js +10 -0
  238. package/dist/components/widgetFavourites/WidgetFavouritesItem.js.map +1 -0
  239. package/dist/components/widgetFavourites/types.d.ts +25 -0
  240. package/dist/components/widgetFavourites/types.d.ts.map +1 -0
  241. package/dist/components/widgetFavourites/types.js +2 -0
  242. package/dist/components/widgetFavourites/types.js.map +1 -0
  243. package/dist/components/widgetNotifications/WidgetNotifications.d.ts +33 -0
  244. package/dist/components/widgetNotifications/WidgetNotifications.d.ts.map +1 -0
  245. package/dist/components/widgetNotifications/WidgetNotifications.js +18 -0
  246. package/dist/components/widgetNotifications/WidgetNotifications.js.map +1 -0
  247. package/dist/components/widgetNotifications/WidgetNotifications.stories.d.ts +60 -0
  248. package/dist/components/widgetNotifications/WidgetNotifications.stories.d.ts.map +1 -0
  249. package/dist/components/widgetNotifications/WidgetNotifications.stories.js +269 -0
  250. package/dist/components/widgetNotifications/WidgetNotifications.stories.js.map +1 -0
  251. package/dist/components/widgetNotifications/WidgetNotifications.test.d.ts +2 -0
  252. package/dist/components/widgetNotifications/WidgetNotifications.test.d.ts.map +1 -0
  253. package/dist/components/widgetNotifications/WidgetNotifications.test.js +79 -0
  254. package/dist/components/widgetNotifications/WidgetNotifications.test.js.map +1 -0
  255. package/dist/components/widgetNotifications/WidgetNotificationsItem.d.ts +14 -0
  256. package/dist/components/widgetNotifications/WidgetNotificationsItem.d.ts.map +1 -0
  257. package/dist/components/widgetNotifications/WidgetNotificationsItem.js +14 -0
  258. package/dist/components/widgetNotifications/WidgetNotificationsItem.js.map +1 -0
  259. package/dist/index.css +756 -78
  260. package/dist/index.css.map +1 -1
  261. package/dist/index.d.ts +15 -9
  262. package/dist/index.d.ts.map +1 -1
  263. package/dist/index.js +15 -8
  264. package/dist/index.js.map +1 -1
  265. package/dist/utils/favourites/favouriteConstants.d.ts +12 -0
  266. package/dist/utils/favourites/favouriteConstants.d.ts.map +1 -0
  267. package/dist/utils/favourites/favouriteConstants.js +16 -0
  268. package/dist/utils/favourites/favouriteConstants.js.map +1 -0
  269. package/dist/utils/favourites/favouriteConstants.test.d.ts +2 -0
  270. package/dist/utils/favourites/favouriteConstants.test.d.ts.map +1 -0
  271. package/dist/utils/favourites/favouriteConstants.test.js +12 -0
  272. package/dist/utils/favourites/favouriteConstants.test.js.map +1 -0
  273. package/dist/utils/hooks/useControllableBoolean.d.ts.map +1 -0
  274. package/dist/utils/hooks/useControllableBoolean.js.map +1 -0
  275. package/dist/utils/hooks/useControllableBoolean.test.d.ts +2 -0
  276. package/dist/utils/hooks/useControllableBoolean.test.d.ts.map +1 -0
  277. package/dist/utils/hooks/useControllableBoolean.test.js +34 -0
  278. package/dist/utils/hooks/useControllableBoolean.test.js.map +1 -0
  279. package/package.json +10 -11
  280. package/src/components/emptyState/EmptyState.stories.tsx +487 -0
  281. package/src/components/emptyState/EmptyState.test.tsx +140 -0
  282. package/src/components/emptyState/EmptyState.tsx +84 -0
  283. package/src/components/emptyState/emptyState.scss +63 -0
  284. package/src/components/favourite/FavouriteButton.test.tsx +83 -0
  285. package/src/components/favourite/FavouriteButton.tsx +70 -0
  286. package/src/components/favourite/favouriteButton.scss +37 -0
  287. package/src/components/icon/Icon.tsx +2 -2
  288. package/src/components/link/link.scss +26 -0
  289. package/src/components/pill/Pill.stories.tsx +432 -41
  290. package/src/components/pill/Pill.test.tsx +74 -3
  291. package/src/components/pill/Pill.tsx +26 -11
  292. package/src/components/sideNavigation/SideNavigation.stories.tsx +578 -0
  293. package/src/components/sideNavigation/SideNavigation.test.tsx +109 -0
  294. package/src/components/sideNavigation/SideNavigation.tsx +98 -0
  295. package/src/components/sideNavigation/SideNavigationContext.tsx +25 -0
  296. package/src/components/sideNavigation/SideNavigationGroup.test.tsx +103 -0
  297. package/src/components/{sidebarNav/SidebarNavGroup.tsx → sideNavigation/SideNavigationGroup.tsx} +8 -8
  298. package/src/components/sideNavigation/SideNavigationItem.test.tsx +137 -0
  299. package/src/components/sideNavigation/SideNavigationItem.tsx +125 -0
  300. package/src/components/sideNavigation/SideNavigationItemFavourite.test.tsx +54 -0
  301. package/src/components/{sidebarNav/SidebarNavItemFavourite.tsx → sideNavigation/SideNavigationItemFavourite.tsx} +7 -7
  302. package/src/components/sideNavigation/SideNavigationTitle.test.tsx +23 -0
  303. package/src/components/sideNavigation/SideNavigationTitle.tsx +13 -0
  304. package/src/components/sideNavigation/SideNavigationTooltip.test.tsx +44 -0
  305. package/src/components/{sidebarNav/SidebarNavTooltip.tsx → sideNavigation/SideNavigationTooltip.tsx} +2 -2
  306. package/src/components/{sidebarNav → sideNavigation}/resolvePanelItemProps.test.ts +20 -4
  307. package/src/components/{sidebarNav → sideNavigation}/resolvePanelItemProps.ts +8 -7
  308. package/src/components/{sidebarNav/sidebarNav.scss → sideNavigation/sideNavigation.scss} +37 -136
  309. package/src/components/sideNavigation/types.ts +56 -0
  310. package/src/components/sidebar/Sidebar.stories.tsx +670 -0
  311. package/src/components/sidebar/Sidebar.test.tsx +155 -0
  312. package/src/components/sidebar/Sidebar.tsx +27 -0
  313. package/src/components/sidebar/SidebarItem.tsx +64 -0
  314. package/src/components/sidebar/sidebar.scss +65 -0
  315. package/src/components/table/Table.stories.tsx +24 -73
  316. package/src/components/table/Table.tsx +2 -0
  317. package/src/components/table/cellEditors/DateCellEditor.stories.tsx +16 -14
  318. package/src/components/table/cellRenderers/BooleanCellRenderer.stories.tsx +6 -7
  319. package/src/components/table/cellRenderers/ButtonCellRenderer.stories.tsx +7 -8
  320. package/src/components/table/cellRenderers/CheckboxCellRenderer.stories.tsx +7 -8
  321. package/src/components/table/cellRenderers/InlineTextCellRenderer.stories.tsx +7 -8
  322. package/src/components/table/cellRenderers/NumberInputCellRenderer.stories.tsx +12 -15
  323. package/src/components/table/cellRenderers/SelectDropdownCellRenderer.stories.tsx +19 -29
  324. package/src/components/table/columnTypes.ts +56 -0
  325. package/src/components/toast/Toast.stories.tsx +75 -67
  326. package/src/components/toast/Toast.test.tsx +40 -10
  327. package/src/components/toast/Toast.tsx +19 -5
  328. package/src/components/toast/ToastAction.tsx +17 -0
  329. package/src/components/toast/toast.scss +37 -0
  330. package/src/components/toggleGroup/ToggleGroup.stories.tsx +1 -1
  331. package/src/components/tooltip/TooltipWrapper.tsx +3 -1
  332. package/src/components/widget/Widget.stories.tsx +600 -0
  333. package/src/components/widget/Widget.test.tsx +263 -0
  334. package/src/components/widget/Widget.tsx +102 -0
  335. package/src/components/widget/WidgetBody.tsx +66 -0
  336. package/src/components/widget/WidgetContext.tsx +31 -0
  337. package/src/components/widget/WidgetHeader.tsx +155 -0
  338. package/src/components/widget/types.ts +47 -0
  339. package/src/components/widget/widget.scss +218 -0
  340. package/src/components/widgetCalendar/WidgetCalendar.stories.tsx +241 -0
  341. package/src/components/widgetCalendar/WidgetCalendar.test.tsx +137 -0
  342. package/src/components/widgetCalendar/WidgetCalendar.tsx +105 -0
  343. package/src/components/widgetCalendar/WidgetCalendarItem.tsx +105 -0
  344. package/src/components/widgetCalendar/widgetCalendar.scss +124 -0
  345. package/src/components/widgetFavourites/WidgetFavourites.stories.tsx +341 -0
  346. package/src/components/widgetFavourites/WidgetFavourites.test.tsx +127 -0
  347. package/src/components/widgetFavourites/WidgetFavourites.tsx +83 -0
  348. package/src/components/widgetFavourites/WidgetFavouritesItem.tsx +37 -0
  349. package/src/components/widgetFavourites/types.ts +26 -0
  350. package/src/components/widgetFavourites/widgetFavourites.scss +84 -0
  351. package/src/components/widgetNotifications/WidgetNotifications.stories.tsx +417 -0
  352. package/src/components/widgetNotifications/WidgetNotifications.test.tsx +152 -0
  353. package/src/components/widgetNotifications/WidgetNotifications.tsx +112 -0
  354. package/src/components/widgetNotifications/WidgetNotificationsItem.tsx +88 -0
  355. package/src/components/widgetNotifications/widgetNotifications.scss +186 -0
  356. package/src/docs/Contributing.mdx +1 -1
  357. package/src/index.scss +9 -1
  358. package/src/index.ts +22 -18
  359. package/src/tokens.scss +12 -2
  360. package/src/utils/favourites/favouriteConstants.test.ts +19 -0
  361. package/src/utils/favourites/favouriteConstants.ts +21 -0
  362. package/src/utils/hooks/useControllableBoolean.test.ts +48 -0
  363. package/dist/components/sidebarNav/SidebarNav.d.ts +0 -46
  364. package/dist/components/sidebarNav/SidebarNav.d.ts.map +0 -1
  365. package/dist/components/sidebarNav/SidebarNav.js +0 -102
  366. package/dist/components/sidebarNav/SidebarNav.js.map +0 -1
  367. package/dist/components/sidebarNav/SidebarNav.stories.d.ts +0 -61
  368. package/dist/components/sidebarNav/SidebarNav.stories.d.ts.map +0 -1
  369. package/dist/components/sidebarNav/SidebarNav.stories.js +0 -253
  370. package/dist/components/sidebarNav/SidebarNav.stories.js.map +0 -1
  371. package/dist/components/sidebarNav/SidebarNav.test.d.ts +0 -2
  372. package/dist/components/sidebarNav/SidebarNav.test.d.ts.map +0 -1
  373. package/dist/components/sidebarNav/SidebarNav.test.js +0 -240
  374. package/dist/components/sidebarNav/SidebarNav.test.js.map +0 -1
  375. package/dist/components/sidebarNav/SidebarNavContext.d.ts +0 -13
  376. package/dist/components/sidebarNav/SidebarNavContext.d.ts.map +0 -1
  377. package/dist/components/sidebarNav/SidebarNavContext.js +0 -15
  378. package/dist/components/sidebarNav/SidebarNavContext.js.map +0 -1
  379. package/dist/components/sidebarNav/SidebarNavGroup.d.ts.map +0 -1
  380. package/dist/components/sidebarNav/SidebarNavGroup.js +0 -16
  381. package/dist/components/sidebarNav/SidebarNavGroup.js.map +0 -1
  382. package/dist/components/sidebarNav/SidebarNavItem.d.ts.map +0 -1
  383. package/dist/components/sidebarNav/SidebarNavItem.js +0 -44
  384. package/dist/components/sidebarNav/SidebarNavItem.js.map +0 -1
  385. package/dist/components/sidebarNav/SidebarNavItemFavourite.d.ts +0 -8
  386. package/dist/components/sidebarNav/SidebarNavItemFavourite.d.ts.map +0 -1
  387. package/dist/components/sidebarNav/SidebarNavItemFavourite.js.map +0 -1
  388. package/dist/components/sidebarNav/SidebarNavPanel.d.ts +0 -4
  389. package/dist/components/sidebarNav/SidebarNavPanel.d.ts.map +0 -1
  390. package/dist/components/sidebarNav/SidebarNavPanel.js +0 -9
  391. package/dist/components/sidebarNav/SidebarNavPanel.js.map +0 -1
  392. package/dist/components/sidebarNav/SidebarNavPanelNav.d.ts +0 -10
  393. package/dist/components/sidebarNav/SidebarNavPanelNav.d.ts.map +0 -1
  394. package/dist/components/sidebarNav/SidebarNavPanelNav.js +0 -21
  395. package/dist/components/sidebarNav/SidebarNavPanelNav.js.map +0 -1
  396. package/dist/components/sidebarNav/SidebarNavRail.d.ts +0 -6
  397. package/dist/components/sidebarNav/SidebarNavRail.d.ts.map +0 -1
  398. package/dist/components/sidebarNav/SidebarNavRail.js +0 -7
  399. package/dist/components/sidebarNav/SidebarNavRail.js.map +0 -1
  400. package/dist/components/sidebarNav/SidebarNavRailItem.d.ts +0 -10
  401. package/dist/components/sidebarNav/SidebarNavRailItem.d.ts.map +0 -1
  402. package/dist/components/sidebarNav/SidebarNavRailItem.js +0 -25
  403. package/dist/components/sidebarNav/SidebarNavRailItem.js.map +0 -1
  404. package/dist/components/sidebarNav/SidebarNavRailList.d.ts +0 -4
  405. package/dist/components/sidebarNav/SidebarNavRailList.d.ts.map +0 -1
  406. package/dist/components/sidebarNav/SidebarNavRailList.js +0 -7
  407. package/dist/components/sidebarNav/SidebarNavRailList.js.map +0 -1
  408. package/dist/components/sidebarNav/SidebarNavRailSlot.d.ts +0 -6
  409. package/dist/components/sidebarNav/SidebarNavRailSlot.d.ts.map +0 -1
  410. package/dist/components/sidebarNav/SidebarNavRailSlot.js +0 -7
  411. package/dist/components/sidebarNav/SidebarNavRailSlot.js.map +0 -1
  412. package/dist/components/sidebarNav/SidebarNavSeparator.d.ts +0 -6
  413. package/dist/components/sidebarNav/SidebarNavSeparator.d.ts.map +0 -1
  414. package/dist/components/sidebarNav/SidebarNavSeparator.js +0 -8
  415. package/dist/components/sidebarNav/SidebarNavSeparator.js.map +0 -1
  416. package/dist/components/sidebarNav/SidebarNavTitle.d.ts +0 -4
  417. package/dist/components/sidebarNav/SidebarNavTitle.d.ts.map +0 -1
  418. package/dist/components/sidebarNav/SidebarNavTitle.js +0 -7
  419. package/dist/components/sidebarNav/SidebarNavTitle.js.map +0 -1
  420. package/dist/components/sidebarNav/SidebarNavTooltip.d.ts +0 -7
  421. package/dist/components/sidebarNav/SidebarNavTooltip.d.ts.map +0 -1
  422. package/dist/components/sidebarNav/SidebarNavTooltip.js.map +0 -1
  423. package/dist/components/sidebarNav/SidebarNavTrigger.d.ts +0 -8
  424. package/dist/components/sidebarNav/SidebarNavTrigger.d.ts.map +0 -1
  425. package/dist/components/sidebarNav/SidebarNavTrigger.js +0 -15
  426. package/dist/components/sidebarNav/SidebarNavTrigger.js.map +0 -1
  427. package/dist/components/sidebarNav/index.d.ts +0 -4
  428. package/dist/components/sidebarNav/index.d.ts.map +0 -1
  429. package/dist/components/sidebarNav/index.js +0 -3
  430. package/dist/components/sidebarNav/index.js.map +0 -1
  431. package/dist/components/sidebarNav/resolvePanelItemProps.d.ts +0 -4
  432. package/dist/components/sidebarNav/resolvePanelItemProps.d.ts.map +0 -1
  433. package/dist/components/sidebarNav/resolvePanelItemProps.js.map +0 -1
  434. package/dist/components/sidebarNav/resolvePanelItemProps.test.d.ts.map +0 -1
  435. package/dist/components/sidebarNav/resolvePanelItemProps.test.js.map +0 -1
  436. package/dist/components/sidebarNav/types.d.ts +0 -100
  437. package/dist/components/sidebarNav/types.d.ts.map +0 -1
  438. package/dist/components/sidebarNav/types.js +0 -4
  439. package/dist/components/sidebarNav/types.js.map +0 -1
  440. package/dist/components/sidebarNav/useControllableBoolean.d.ts.map +0 -1
  441. package/dist/components/sidebarNav/useControllableBoolean.js.map +0 -1
  442. package/src/components/sidebarNav/SidebarNav.stories.tsx +0 -484
  443. package/src/components/sidebarNav/SidebarNav.test.tsx +0 -611
  444. package/src/components/sidebarNav/SidebarNav.tsx +0 -230
  445. package/src/components/sidebarNav/SidebarNavContext.tsx +0 -28
  446. package/src/components/sidebarNav/SidebarNavItem.tsx +0 -162
  447. package/src/components/sidebarNav/SidebarNavPanel.tsx +0 -20
  448. package/src/components/sidebarNav/SidebarNavPanelNav.tsx +0 -55
  449. package/src/components/sidebarNav/SidebarNavRail.tsx +0 -20
  450. package/src/components/sidebarNav/SidebarNavRailItem.tsx +0 -83
  451. package/src/components/sidebarNav/SidebarNavRailList.tsx +0 -11
  452. package/src/components/sidebarNav/SidebarNavRailSlot.tsx +0 -15
  453. package/src/components/sidebarNav/SidebarNavSeparator.tsx +0 -19
  454. package/src/components/sidebarNav/SidebarNavTitle.tsx +0 -13
  455. package/src/components/sidebarNav/SidebarNavTrigger.tsx +0 -52
  456. package/src/components/sidebarNav/index.ts +0 -6
  457. package/src/components/sidebarNav/types.ts +0 -126
  458. /package/dist/components/{sidebarNav → sideNavigation}/resolvePanelItemProps.test.d.ts +0 -0
  459. /package/dist/{components/sidebarNav → utils/hooks}/useControllableBoolean.d.ts +0 -0
  460. /package/dist/{components/sidebarNav → utils/hooks}/useControllableBoolean.js +0 -0
  461. /package/src/{components/sidebarNav → utils/hooks}/useControllableBoolean.ts +0 -0
@@ -0,0 +1,44 @@
1
+ import '@testing-library/jest-dom/vitest';
2
+ import { render, screen } from '@testing-library/react';
3
+ import userEvent from '@testing-library/user-event';
4
+ import { Tooltip as TooltipPrimitive } from 'radix-ui';
5
+ import { describe, expect, test } from 'vitest';
6
+ import { SideNavigationTooltip } from './SideNavigationTooltip.js';
7
+
8
+ const renderWithProvider = (ui: React.ReactElement) => render(
9
+ <TooltipPrimitive.Provider>{ui}</TooltipPrimitive.Provider>,
10
+ );
11
+
12
+ describe('SideNavigationTooltip', () => {
13
+ test('renders the trigger children', () => {
14
+ renderWithProvider(
15
+ <SideNavigationTooltip label="Add to favourites">
16
+ <button type="button">Star</button>
17
+ </SideNavigationTooltip>,
18
+ );
19
+ expect(screen.getByRole('button', { name: 'Star' })).toBeInTheDocument();
20
+ });
21
+
22
+ test('shows the label as tooltip content on hover', async () => {
23
+ renderWithProvider(
24
+ <SideNavigationTooltip label="Add to favourites">
25
+ <button type="button">Star</button>
26
+ </SideNavigationTooltip>,
27
+ );
28
+
29
+ await userEvent.hover(screen.getByRole('button', { name: 'Star' }));
30
+ expect(await screen.findByRole('tooltip')).toHaveTextContent('Add to favourites');
31
+ });
32
+
33
+ test('defaults to the right side and can be overridden', async () => {
34
+ renderWithProvider(
35
+ <SideNavigationTooltip label="Remove from favourites" side="left">
36
+ <button type="button">Star</button>
37
+ </SideNavigationTooltip>,
38
+ );
39
+
40
+ await userEvent.hover(screen.getByRole('button', { name: 'Star' }));
41
+ await screen.findByRole('tooltip');
42
+ expect(document.querySelector('.ds-tooltip__content')).toHaveAttribute('data-side', 'left');
43
+ });
44
+ });
@@ -2,13 +2,13 @@ import { TooltipContent } from 'Components/tooltip/TooltipContent.js';
2
2
  import { TooltipTrigger } from 'Components/tooltip/TooltipTrigger.js';
3
3
  import { Tooltip as TooltipPrimitive } from 'radix-ui';
4
4
 
5
- export type SidebarNavTooltipProps = {
5
+ export type SideNavigationTooltipProps = {
6
6
  label: string;
7
7
  children: React.ReactElement;
8
8
  side?: 'left' | 'right';
9
9
  };
10
10
 
11
- export const SidebarNavTooltip = (props: SidebarNavTooltipProps) => {
11
+ export const SideNavigationTooltip = (props: SideNavigationTooltipProps) => {
12
12
  const { label, children, side = 'right' } = props;
13
13
 
14
14
  return (
@@ -2,7 +2,7 @@ import { describe, expect, test } from 'vitest';
2
2
  import { resolvePanelItemProps } from './resolvePanelItemProps.js';
3
3
 
4
4
  describe('resolvePanelItemProps', () => {
5
- test('maps href item to link variant with top-level onClick', () => {
5
+ test('maps href item to link variant with onClick in linkElementProps', () => {
6
6
  const onClick = () => {};
7
7
  const props = resolvePanelItemProps({
8
8
  type: 'item',
@@ -16,11 +16,27 @@ describe('resolvePanelItemProps', () => {
16
16
  itemId: 'daily',
17
17
  children: 'Daily Attendance',
18
18
  href: '/daily',
19
- onClick,
19
+ linkElementProps: { onClick },
20
+ });
21
+ });
22
+
23
+ test('maps href item with no onClick to link variant with no linkElementProps', () => {
24
+ const props = resolvePanelItemProps({
25
+ type: 'item',
26
+ id: 'daily',
27
+ label: 'Daily Attendance',
28
+ href: '/daily',
29
+ });
30
+
31
+ expect(props).toEqual({
32
+ itemId: 'daily',
33
+ children: 'Daily Attendance',
34
+ href: '/daily',
35
+ linkElementProps: undefined,
20
36
  });
21
37
  });
22
38
 
23
- test('maps onClick-only item to button variant with top-level onClick', () => {
39
+ test('maps onClick-only item to button variant with onClick in linkElementProps', () => {
24
40
  const onClick = () => {};
25
41
  const props = resolvePanelItemProps({
26
42
  type: 'item',
@@ -33,7 +49,7 @@ describe('resolvePanelItemProps', () => {
33
49
  itemId: 'action',
34
50
  children: 'Run action',
35
51
  linkElement: 'button',
36
- onClick,
52
+ linkElementProps: { onClick },
37
53
  });
38
54
  });
39
55
 
@@ -1,7 +1,7 @@
1
- import type { SidebarNavItemProps } from './SidebarNavItem.js';
2
- import type { SidebarNavItemNode } from './types.js';
1
+ import type { SideNavigationItemProps } from './SideNavigationItem.js';
2
+ import type { SideNavigationItemNode } from './types.js';
3
3
 
4
- export function resolvePanelItemProps(node: SidebarNavItemNode): SidebarNavItemProps {
4
+ export function resolvePanelItemProps(node: SideNavigationItemNode): SideNavigationItemProps {
5
5
  const base = {
6
6
  itemId: node.id,
7
7
  current: node.current,
@@ -11,6 +11,7 @@ export function resolvePanelItemProps(node: SidebarNavItemNode): SidebarNavItemP
11
11
  };
12
12
 
13
13
  const hasHref = 'href' in node && node.href != null;
14
+ const onClick = node.onClick;
14
15
 
15
16
  if (node.canFavourite) {
16
17
  if (hasHref) {
@@ -19,7 +20,7 @@ export function resolvePanelItemProps(node: SidebarNavItemNode): SidebarNavItemP
19
20
  canFavourite: true,
20
21
  favouriteTooltip: node.favouriteTooltip,
21
22
  href: node.href,
22
- onClick: node.onClick,
23
+ linkElementProps: onClick ? { onClick } : undefined,
23
24
  linkProps: node.linkProps,
24
25
  };
25
26
  }
@@ -29,7 +30,7 @@ export function resolvePanelItemProps(node: SidebarNavItemNode): SidebarNavItemP
29
30
  canFavourite: true,
30
31
  favouriteTooltip: node.favouriteTooltip,
31
32
  linkElement: 'button',
32
- onClick: node.onClick,
33
+ linkElementProps: { onClick },
33
34
  };
34
35
  }
35
36
 
@@ -37,7 +38,7 @@ export function resolvePanelItemProps(node: SidebarNavItemNode): SidebarNavItemP
37
38
  return {
38
39
  ...base,
39
40
  href: node.href,
40
- onClick: node.onClick,
41
+ linkElementProps: onClick ? { onClick } : undefined,
41
42
  linkProps: node.linkProps,
42
43
  };
43
44
  }
@@ -45,6 +46,6 @@ export function resolvePanelItemProps(node: SidebarNavItemNode): SidebarNavItemP
45
46
  return {
46
47
  ...base,
47
48
  linkElement: 'button',
48
- onClick: node.onClick,
49
+ linkElementProps: { onClick },
49
50
  };
50
51
  }
@@ -1,151 +1,37 @@
1
- .ds-sidebar-nav {
2
- display: flex;
3
- height: 100%;
4
- }
5
-
6
- .ds-sidebar-nav__rail {
7
- margin: 0;
8
- width: var(--sidebar-nav-rail-width);
9
- display: flex;
10
- flex-direction: column;
11
- align-items: center;
12
- padding: var(--spacing-small);
13
- gap: var(--spacing-large);
14
- box-sizing: border-box;
15
- border-right: var(--border-weight) solid var(--page-base-color-border);
16
- }
17
-
18
- .ds-sidebar-nav__rail-list {
19
- list-style: none;
20
- margin: 0;
21
- padding: 0;
22
- width: 100%;
23
- display: flex;
24
- flex-direction: column;
25
- align-items: center;
26
- gap: var(--spacing-large);
27
- }
28
-
29
- .ds-sidebar-nav__rail-list-item {
30
- display: flex;
31
- justify-content: center;
32
- width: 100%;
33
- }
34
-
35
- .ds-sidebar-nav__rail-item {
36
- position: relative;
37
- display: inline-flex;
38
- align-items: center;
39
- justify-content: center;
40
- width: var(--sidebar-nav-rail-item-size);
41
- height: var(--sidebar-nav-rail-item-size);
42
- background: transparent;
43
- border: 0;
44
- padding: 0;
45
- border-radius: var(--border-radius-round);
46
- color: var(--sidebar-nav-rail-item-color-icon);
47
- cursor: pointer;
48
- text-decoration: none;
49
-
50
- &:hover,
51
- &:active,
52
- &[data-state='delayed-open'],
53
- &[data-state='instant-open'],
54
- &[data-state='open'] {
55
- color: var(--sidebar-nav-rail-item-color-icon-hover);
56
- background: var(--sidebar-nav-rail-item-color-background-hover);
57
- }
58
-
59
- &:focus {
60
- outline: none;
61
- }
62
-
63
- &:focus-visible {
64
- outline: none;
65
- box-shadow: 0 0 0 var(--focus-border) var(--focus-color-focus);
66
- }
67
- }
68
-
69
- .ds-sidebar-nav__rail-item--selected {
70
- color: var(--sidebar-nav-rail-item-color-icon-selected);
71
- background: var(--sidebar-nav-rail-item-color-background-selected);
72
-
73
- &:hover,
74
- &:active,
75
- &[data-state='delayed-open'],
76
- &[data-state='instant-open'],
77
- &[data-state='open'] {
78
- color: var(--sidebar-nav-rail-item-color-icon-selected);
79
- background: var(--sidebar-nav-rail-item-color-background-selected);
80
- }
81
- }
82
-
83
- .ds-sidebar-nav__rail-badge-anchor {
84
- display: inline-flex;
85
- align-items: center;
86
- justify-content: center;
87
- width: 100%;
88
- height: 100%;
89
- }
90
-
91
- .ds-sidebar-nav__rail-item .ds-badge {
92
- position: absolute;
93
- top: var(--spacing-xsmall);
94
- right: var(--spacing-xsmall);
95
- }
96
-
97
- .ds-sidebar-nav__panel {
1
+ .ds-side-navigation {
98
2
  width: var(--sidebar-nav-panel-width);
99
3
  gap: var(--sidebar-nav-panel-gap);
4
+ padding: var(--spacing-small);
5
+ box-sizing: border-box;
100
6
  overflow: auto;
101
7
  }
102
8
 
103
- .ds-sidebar-nav__panel[aria-hidden='true'] {
9
+ .ds-side-navigation[aria-hidden='true'] {
104
10
  display: none;
105
11
  }
106
12
 
107
- .ds-sidebar-nav__title {
108
- min-height: var(--sidebar-nav-title-min-height);
109
- padding: var(--sidebar-nav-title-padding-block) var(--sidebar-nav-title-padding-inline-end)
110
- var(--sidebar-nav-title-padding-block) var(--sidebar-nav-title-padding-inline-start);
111
- display: flex;
112
- align-items: center;
113
- justify-content: flex-start;
114
- margin: 0;
115
- border-bottom: var(--border-weight) solid var(--page-base-color-border);
116
- font-family: var(--type-headings-h6-family, var(--font-family-standard));
117
- font-size: var(--type-headings-h6-size, var(--font-size-4-16));
118
- font-weight: var(--type-headings-h6-weight, var(--font-weight-semi-bold));
119
- line-height: var(--type-headings-h6-line-height, 1.25);
120
- }
121
-
122
- .ds-sidebar-nav__nav {
123
- padding: var(--spacing-small);
124
- box-sizing: border-box;
125
- }
126
-
127
- .ds-sidebar-nav__list,
128
- .ds-sidebar-nav__group-children {
13
+ .ds-side-navigation__list,
14
+ .ds-side-navigation__group-children {
129
15
  list-style: none;
130
16
  margin: 0;
131
17
  padding: 0;
132
18
  }
133
19
 
134
- .ds-sidebar-nav__list {
20
+ .ds-side-navigation__list {
135
21
  display: flex;
136
22
  flex-direction: column;
137
23
  gap: var(--spacing-xsmall);
138
24
  }
139
25
 
140
- .ds-sidebar-nav__list-item {
26
+ .ds-side-navigation__list-item {
141
27
  display: block;
142
28
  }
143
29
 
144
- .ds-sidebar-nav__item {
30
+ .ds-side-navigation__item {
145
31
  position: relative;
146
32
  }
147
33
 
148
- .ds-sidebar-nav__group-link {
34
+ .ds-side-navigation__group-link {
149
35
  width: 100%;
150
36
  display: flex;
151
37
  border: 0;
@@ -175,31 +61,31 @@
175
61
  }
176
62
  }
177
63
 
178
- .ds-sidebar-nav__group-chevron {
64
+ .ds-side-navigation__group-chevron {
179
65
  flex-shrink: 0;
180
66
  transition: transform 0.16s ease;
181
67
  }
182
68
 
183
- .ds-sidebar-nav__group-link[aria-expanded='true'] .ds-sidebar-nav__group-chevron {
69
+ .ds-side-navigation__group-link[aria-expanded='true'] .ds-side-navigation__group-chevron {
184
70
  transform: rotate(90deg);
185
71
  }
186
72
 
187
- .ds-sidebar-nav__group-children {
73
+ .ds-side-navigation__group-children {
188
74
  display: flex;
189
75
  flex-direction: column;
190
76
  gap: var(--spacing-xsmall);
191
77
  padding-left: var(--spacing-medium);
192
78
  }
193
79
 
194
- .ds-sidebar-nav__group-children[aria-hidden='true'] {
80
+ .ds-side-navigation__group-children[aria-hidden='true'] {
195
81
  display: none;
196
82
  }
197
83
 
198
- .ds-sidebar-nav__group-children .ds-sidebar-nav__group-link {
84
+ .ds-side-navigation__group-children .ds-side-navigation__group-link {
199
85
  padding-left: var(--spacing-small);
200
86
  }
201
87
 
202
- .ds-sidebar-nav__item-link {
88
+ .ds-side-navigation__item-link {
203
89
  width: 100%;
204
90
  display: flex;
205
91
  align-items: center;
@@ -227,26 +113,26 @@
227
113
  }
228
114
  }
229
115
 
230
- .ds-sidebar-nav__group-children .ds-sidebar-nav__item-link {
116
+ .ds-side-navigation__group-children .ds-side-navigation__item-link {
231
117
  padding-left: var(--spacing-xlarge);
232
118
  }
233
119
 
234
- .ds-sidebar-nav__item-link--current {
120
+ .ds-side-navigation__item-link--current {
235
121
  background: var(--color-brand-050);
236
122
  color: var(--color-brand-800);
237
123
  font-weight: var(--font-weight-semi-bold);
238
124
  }
239
125
 
240
- .ds-sidebar-nav__item--has-favourite .ds-sidebar-nav__item-link {
126
+ .ds-side-navigation__item--has-favourite .ds-side-navigation__item-link {
241
127
  padding-right: calc(var(--size-control-xsmall) + var(--spacing-small));
242
128
  }
243
129
 
244
- .ds-sidebar-nav__group-label {
130
+ .ds-side-navigation__group-label {
245
131
  font-size: var(--type-body-p-size);
246
132
  font-weight: var(--font-weight-semi-bold);
247
133
  }
248
134
 
249
- .ds-sidebar-nav__item-favourite {
135
+ .ds-side-navigation__item-favourite {
250
136
  position: absolute;
251
137
  right: 0;
252
138
  top: 50%;
@@ -278,6 +164,21 @@
278
164
  }
279
165
  }
280
166
 
281
- .ds-sidebar-nav__item-link--current + .ds-sidebar-nav__item-favourite {
167
+ .ds-side-navigation__item-link--current + .ds-side-navigation__item-favourite {
282
168
  color: var(--color-brand-600);
283
169
  }
170
+
171
+ .ds-side-navigation__title {
172
+ min-height: var(--sidebar-nav-title-min-height);
173
+ padding: var(--sidebar-nav-title-padding-block) var(--sidebar-nav-title-padding-inline-end)
174
+ var(--sidebar-nav-title-padding-block) var(--sidebar-nav-title-padding-inline-start);
175
+ display: flex;
176
+ align-items: center;
177
+ justify-content: flex-start;
178
+ margin: 0;
179
+ border-bottom: var(--border-weight) solid var(--page-base-color-border);
180
+ font-family: var(--type-headings-h6-family, var(--font-family-standard));
181
+ font-size: var(--type-headings-h6-size, var(--font-size-4-16));
182
+ font-weight: var(--type-headings-h6-weight, var(--font-weight-semi-bold));
183
+ line-height: var(--type-headings-h6-line-height, 1.25);
184
+ }
@@ -0,0 +1,56 @@
1
+ import type { AnchorHTMLAttributes } from 'react';
2
+
3
+ export type SideNavigationLinkProps = Omit<
4
+ AnchorHTMLAttributes<HTMLAnchorElement>,
5
+ 'href' | 'children' | 'className'
6
+ > & Record<`data-${string}`, string | number | boolean | undefined>;
7
+
8
+ export type SideNavigationRenderLinkArgs = {
9
+ href: string;
10
+ className: string;
11
+ children: React.ReactNode;
12
+ ariaCurrent?: 'page';
13
+ onClick?: React.MouseEventHandler;
14
+ linkProps?: SideNavigationLinkProps;
15
+ linkElementProps?: Omit<
16
+ AnchorHTMLAttributes<HTMLAnchorElement>,
17
+ 'href' | 'className' | 'children'
18
+ >;
19
+ };
20
+
21
+ type SideNavigationItemNodeFavouriteFields
22
+ = | { canFavourite?: false; favouriteTooltip?: never }
23
+ | { canFavourite: true; favouriteTooltip: string };
24
+
25
+ type SideNavigationItemNodeLinkFields = {
26
+ href: string;
27
+ onClick?: React.MouseEventHandler;
28
+ };
29
+
30
+ type SideNavigationItemNodeButtonFields = {
31
+ href?: never;
32
+ onClick: React.MouseEventHandler;
33
+ };
34
+
35
+ export type SideNavigationItemNode = {
36
+ type: 'item';
37
+ id: string;
38
+ label: string;
39
+ current?: boolean;
40
+ linkProps?: SideNavigationLinkProps;
41
+ isPressed?: boolean;
42
+ onFavouriteClick?: React.MouseEventHandler<HTMLButtonElement>;
43
+ } & SideNavigationItemNodeFavouriteFields
44
+ & (SideNavigationItemNodeLinkFields | SideNavigationItemNodeButtonFields);
45
+
46
+ export type SideNavigationGroupNode = {
47
+ type: 'group';
48
+ id: string;
49
+ label: string;
50
+ children: SideNavigationNode[];
51
+ defaultExpanded?: boolean;
52
+ expanded?: boolean;
53
+ onExpandedChange?: (expanded: boolean) => void;
54
+ };
55
+
56
+ export type SideNavigationNode = SideNavigationItemNode | SideNavigationGroupNode;