@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
@@ -21,7 +21,8 @@ const DESCRIPTION_INTRO = [
21
21
  'The cell `value` (or `valueFormatted`) must be a `ButtonProps` object — the renderer spreads it',
22
22
  'directly onto `Button`, so all button variants, sizes, and handlers are supported.',
23
23
  '',
24
- 'Register it via the string key `dsButtonCellRenderer` (pre-registered by Arbor\'s `Table`) or by importing the component directly.',
24
+ 'Register it via `type: \'dsButtonColumn\'` on the column definition (pre-registered by Arbor\'s `Table`),',
25
+ 'via the string key `dsButtonCellRenderer`, or by importing the component directly.',
25
26
  ].join('\n');
26
27
 
27
28
  const USAGE_GUIDANCE = [
@@ -56,7 +57,7 @@ const DEVELOPER_NOTES = [
56
57
  ' {',
57
58
  " colId: 'viewAction',",
58
59
  " headerName: '',",
59
- " cellRenderer: 'dsButtonCellRenderer',",
60
+ " type: 'dsButtonColumn',",
60
61
  ' valueGetter: (params) => ({',
61
62
  " children: 'View',",
62
63
  " variant: 'secondary',",
@@ -199,7 +200,7 @@ const colDefs = [
199
200
  {
200
201
  colId: 'action',
201
202
  headerName: '',
202
- cellRenderer: 'dsButtonCellRenderer',
203
+ type: 'dsButtonColumn',
203
204
  valueGetter: (params) => ({
204
205
  children: 'Enrol',
205
206
  variant: 'primary',
@@ -282,8 +283,7 @@ function ButtonCellRendererExample() {
282
283
  headerName: '',
283
284
  flex: 1,
284
285
  maxWidth: 180,
285
- editable: false,
286
- cellRenderer: 'dsButtonCellRenderer',
286
+ type: 'dsButtonColumn',
287
287
  valueGetter: (params) => ({
288
288
  children: 'View details',
289
289
  variant: 'secondary',
@@ -314,8 +314,7 @@ export default ButtonCellRendererExample;
314
314
  headerName: '',
315
315
  flex: 1,
316
316
  maxWidth: 180,
317
- editable: false,
318
- cellRenderer: 'dsButtonCellRenderer',
317
+ type: 'dsButtonColumn',
319
318
  valueGetter: params => ({
320
319
  children: 'View details',
321
320
  variant: 'secondary',
@@ -329,5 +328,5 @@ export default ButtonCellRendererExample;
329
328
  />
330
329
  ),
331
330
  },
332
- '`dsButtonCellRenderer` wired up inside a full `Table`. The action column uses `valueGetter` to return a `ButtonProps` object per row — `onClick` closes over `params.data` so each button knows its row. Click a button and check the browser console.',
331
+ '`type: \'dsButtonColumn\'` wired up inside a full `Table`. The action column uses `valueGetter` to return a `ButtonProps` object per row — `onClick` closes over `params.data` so each button knows its row. Click a button and check the browser console.',
333
332
  );
@@ -21,7 +21,8 @@ const DESCRIPTION_INTRO = [
21
21
  '`CheckboxCellRenderer` is an AG Grid cell renderer that renders an editable Arbor `CheckboxInput`',
22
22
  'inside a table cell. On toggle, it calls `node.setDataValue` to update the row data in-place.',
23
23
  '',
24
- 'Register it via the string key `dsCheckboxCellRenderer` (pre-registered by Arbor\'s `Table`) or by importing the component directly.',
24
+ 'Register it via `type: \'dsCheckboxColumn\'` on the column definition (pre-registered by Arbor\'s `Table`),',
25
+ 'via the string key `dsCheckboxCellRenderer`, or by importing the component directly.',
25
26
  ].join('\n');
26
27
 
27
28
  const USAGE_GUIDANCE = [
@@ -61,7 +62,7 @@ const DEVELOPER_NOTES = [
61
62
  ' {',
62
63
  " field: 'isEnrolled',",
63
64
  " headerName: 'Enrolled',",
64
- " cellRenderer: 'dsCheckboxCellRenderer',",
65
+ " type: 'dsCheckboxColumn',",
65
66
  ' // optional extra CheckboxInput props:',
66
67
  ' cellRendererParams: { disabled: isReadOnly },',
67
68
  ' },',
@@ -230,7 +231,7 @@ const colDefs = [
230
231
  {
231
232
  field: 'isEnrolled',
232
233
  headerName: 'Enrolled',
233
- cellRenderer: 'dsCheckboxCellRenderer',
234
+ type: 'dsCheckboxColumn',
234
235
  },
235
236
  ];
236
237
  `.trim(),
@@ -300,8 +301,7 @@ function CheckboxCellRendererExample() {
300
301
  field: 'enrolled',
301
302
  headerName: 'Enrolled',
302
303
  flex: 1,
303
- editable: false,
304
- cellRenderer: 'dsCheckboxCellRenderer',
304
+ type: 'dsCheckboxColumn',
305
305
  },
306
306
  ]}
307
307
  defaultColDef={{ flex: 1, minWidth: 120 }}
@@ -324,8 +324,7 @@ export default CheckboxCellRendererExample;
324
324
  field: 'enrolled',
325
325
  headerName: 'Enrolled',
326
326
  flex: 1,
327
- editable: false,
328
- cellRenderer: 'dsCheckboxCellRenderer',
327
+ type: 'dsCheckboxColumn',
329
328
  },
330
329
  ]}
331
330
  defaultColDef={{ flex: 1, minWidth: 120 }}
@@ -333,5 +332,5 @@ export default CheckboxCellRendererExample;
333
332
  />
334
333
  ),
335
334
  },
336
- '`dsCheckboxCellRenderer` wired up inside a full `Table`. Click a checkbox to toggle the value — AG Grid calls `node.setDataValue` which updates the row data in-place. The `headerName` ("Enrolled") becomes the checkbox `aria-label`.',
335
+ '`type: \'dsCheckboxColumn\'` wired up inside a full `Table`. Click a checkbox to toggle the value — AG Grid calls `node.setDataValue` which updates the row data in-place. The `headerName` ("Enrolled") becomes the checkbox `aria-label`.',
337
336
  );
@@ -21,7 +21,8 @@ const DESCRIPTION_INTRO = [
21
21
  'inside a table cell for inline text editing. Pressing Enter commits the current value via',
22
22
  '`node.setDataValue`. The input is pre-populated from `valueFormatted ?? value`.',
23
23
  '',
24
- 'Register it via the string key `dsInlineTextCellRenderer` (pre-registered by Arbor\'s `Table`) or by importing the component directly.',
24
+ 'Register it via `type: \'dsInlineTextColumn\'` on the column definition (pre-registered by Arbor\'s `Table`),',
25
+ 'via the string key `dsInlineTextCellRenderer`, or by importing the component directly.',
25
26
  ].join('\n');
26
27
 
27
28
  const USAGE_GUIDANCE = [
@@ -60,7 +61,7 @@ const DEVELOPER_NOTES = [
60
61
  ' {',
61
62
  " field: 'forename',",
62
63
  " headerName: 'First name',",
63
- " cellRenderer: 'dsInlineTextCellRenderer',",
64
+ " type: 'dsInlineTextColumn',",
64
65
  ' },',
65
66
  '];',
66
67
  '```',
@@ -206,7 +207,7 @@ const colDefs = [
206
207
  {
207
208
  field: 'forename',
208
209
  headerName: 'First name',
209
- cellRenderer: 'dsInlineTextCellRenderer',
210
+ type: 'dsInlineTextColumn',
210
211
  },
211
212
  ];
212
213
  `.trim(),
@@ -255,8 +256,7 @@ function InlineTextCellRendererExample() {
255
256
  field: 'forename',
256
257
  headerName: 'First Name',
257
258
  flex: 1,
258
- editable: false,
259
- cellRenderer: 'dsInlineTextCellRenderer',
259
+ type: 'dsInlineTextColumn',
260
260
  },
261
261
  ]}
262
262
  defaultColDef={{ flex: 1, minWidth: 120 }}
@@ -279,8 +279,7 @@ export default InlineTextCellRendererExample;
279
279
  field: 'forename',
280
280
  headerName: 'First Name',
281
281
  flex: 1,
282
- editable: false,
283
- cellRenderer: 'dsInlineTextCellRenderer',
282
+ type: 'dsInlineTextColumn',
284
283
  },
285
284
  ]}
286
285
  defaultColDef={{ flex: 1, minWidth: 120 }}
@@ -288,5 +287,5 @@ export default InlineTextCellRendererExample;
288
287
  />
289
288
  ),
290
289
  },
291
- '`dsInlineTextCellRenderer` wired up inside a full `Table`. Click into any First Name cell to start editing — the `TextInput` is always visible. Press Enter to commit the value via `node.setDataValue`, updating the row data in-place.',
290
+ '`type: \'dsInlineTextColumn\'` wired up inside a full `Table`. Click into any First Name cell to start editing — the `TextInput` is always visible. Press Enter to commit the value via `node.setDataValue`, updating the row data in-place.',
292
291
  );
@@ -21,7 +21,8 @@ const DESCRIPTION_INTRO = [
21
21
  '`NumberInputCellRenderer` is an AG Grid cell renderer that renders an editable Arbor `NumberInput`',
22
22
  'permanently inside a table cell. On change, it calls `node.setDataValue` to update the row data in-place.',
23
23
  '',
24
- 'Register it via the string key `dsNumberInputCellRenderer` (pre-registered by Arbor\'s `Table`) or by importing the component directly.',
24
+ 'Register it via `type: \'dsNumberInputColumn\'` on the column definition (pre-registered by Arbor\'s `Table`),',
25
+ 'via the string key `dsNumberInputCellRenderer`, or by importing the component directly.',
25
26
  ].join('\n');
26
27
 
27
28
  const USAGE_GUIDANCE = [
@@ -61,7 +62,7 @@ const DEVELOPER_NOTES = [
61
62
  ' {',
62
63
  " field: 'quantity',",
63
64
  " headerName: 'Quantity',",
64
- " cellRenderer: 'dsNumberInputCellRenderer',",
65
+ " type: 'dsNumberInputColumn',",
65
66
  ' cellRendererParams: { min: 0, max: 100 },',
66
67
  ' },',
67
68
  '];',
@@ -293,17 +294,15 @@ function NumberInputCellRendererExample() {
293
294
  field: 'sessions',
294
295
  headerName: 'Sessions',
295
296
  flex: 1,
296
- editable: false,
297
- cellRenderer: 'dsNumberInputCellRenderer',
298
- cellRendererParams: { min: 0, suppressCellFocusAndFocusFirstElement: true },
297
+ type: 'dsNumberInputColumn',
298
+ cellRendererParams: { min: 0 },
299
299
  },
300
300
  {
301
301
  field: 'score',
302
302
  headerName: 'Score (/100)',
303
303
  flex: 1,
304
- editable: false,
305
- cellRenderer: 'dsNumberInputCellRenderer',
306
- cellRendererParams: { min: 0, max: 100, suppressCellFocusAndFocusFirstElement: true },
304
+ type: 'dsNumberInputColumn',
305
+ cellRendererParams: { min: 0, max: 100 },
307
306
  },
308
307
  ]}
309
308
  defaultColDef={{ flex: 1, minWidth: 120 }}
@@ -324,17 +323,15 @@ function NumberInputCellRendererExample() {
324
323
  field: 'sessions',
325
324
  headerName: 'Sessions',
326
325
  flex: 1,
327
- editable: false,
328
- cellRenderer: 'dsNumberInputCellRenderer',
329
- cellRendererParams: { min: 0, suppressCellFocusAndFocusFirstElement: true },
326
+ type: 'dsNumberInputColumn',
327
+ cellRendererParams: { min: 0 },
330
328
  },
331
329
  {
332
330
  field: 'score',
333
331
  headerName: 'Score (/100)',
334
332
  flex: 1,
335
- editable: false,
336
- cellRenderer: 'dsNumberInputCellRenderer',
337
- cellRendererParams: { min: 0, max: 100, suppressCellFocusAndFocusFirstElement: true },
333
+ type: 'dsNumberInputColumn',
334
+ cellRendererParams: { min: 0, max: 100 },
338
335
  },
339
336
  ]}
340
337
  defaultColDef={{ flex: 1, minWidth: 120 }}
@@ -342,5 +339,5 @@ function NumberInputCellRendererExample() {
342
339
  />
343
340
  ),
344
341
  },
345
- '`dsNumberInputCellRenderer` wired up inside a full `Table`. Sessions has `min={0}`; Score has `min={0}` and `max={100}`. Edit any cell — AG Grid calls `node.setDataValue` which updates the row data in-place.',
342
+ '`type: \'dsNumberInputColumn\'` wired up inside a full `Table`. Sessions has `min={0}`; Score has `min={0}` and `max={100}`. Edit any cell — AG Grid calls `node.setDataValue` which updates the row data in-place.',
346
343
  );
@@ -23,7 +23,8 @@ const DESCRIPTION_INTRO = [
23
23
  'dropdown when the user presses Enter in the focused cell. On selection, it calls `node.setDataValue`',
24
24
  'to update the row data in-place.',
25
25
  '',
26
- 'Register it via the string key `dsSelectDropdownCellRenderer` (pre-registered by Arbor\'s `Table`) or by importing the component directly.',
26
+ 'Register it via `type: \'dsSelectDropdownColumn\'` on the column definition (pre-registered by Arbor\'s `Table`),',
27
+ 'via the string key `dsSelectDropdownCellRenderer`, or by importing the component directly.',
27
28
  ].join('\n');
28
29
 
29
30
  const USAGE_GUIDANCE = [
@@ -63,7 +64,7 @@ const DEVELOPER_NOTES = [
63
64
  ' {',
64
65
  " field: 'status',",
65
66
  " headerName: 'Status',",
66
- " cellRenderer: 'dsSelectDropdownCellRenderer',",
67
+ " type: 'dsSelectDropdownColumn',",
67
68
  ' cellRendererParams: {',
68
69
  ' options: [',
69
70
  " { label: 'Active', value: 'active' },",
@@ -273,7 +274,7 @@ const colDefs = [
273
274
  {
274
275
  field: 'status',
275
276
  headerName: 'Status',
276
- cellRenderer: 'dsSelectDropdownCellRenderer',
277
+ type: 'dsSelectDropdownColumn',
277
278
  cellRendererParams: {
278
279
  options: [
279
280
  { label: 'Active', value: 'active' },
@@ -414,8 +415,7 @@ function SelectDropdownCellRendererExample() {
414
415
  field: 'status',
415
416
  headerName: 'Status',
416
417
  flex: 1,
417
- editable: false,
418
- cellRenderer: 'dsSelectDropdownCellRenderer',
418
+ type: 'dsSelectDropdownColumn',
419
419
  cellRendererParams: { options: statusOptions },
420
420
  },
421
421
  ]}
@@ -439,8 +439,7 @@ export default SelectDropdownCellRendererExample;
439
439
  field: 'status',
440
440
  headerName: 'Status',
441
441
  flex: 1,
442
- editable: false,
443
- cellRenderer: 'dsSelectDropdownCellRenderer',
442
+ type: 'dsSelectDropdownColumn',
444
443
  cellRendererParams: { options: STATUS_OPTIONS },
445
444
  },
446
445
  ]}
@@ -449,7 +448,7 @@ export default SelectDropdownCellRendererExample;
449
448
  />
450
449
  ),
451
450
  },
452
- '`dsSelectDropdownCellRenderer` wired up inside a full `Table`. Click a Status dropdown to select a new value — the selection is committed to the row via `node.setDataValue`. Press Enter in a focused Status cell to open the dropdown via keyboard.',
451
+ '`type: \'dsSelectDropdownColumn\'` wired up inside a full `Table`. Click a Status dropdown to select a new value — the selection is committed to the row via `node.setDataValue`. Press Enter in a focused Status cell to open the dropdown via keyboard.',
453
452
  );
454
453
 
455
454
  const STATUS_BACKGROUND_COLORS: Record<string, string> = {
@@ -480,8 +479,7 @@ const columnDefs = [
480
479
  field: 'status',
481
480
  headerName: 'Status',
482
481
  flex: 1,
483
- editable: false,
484
- cellRenderer: 'dsSelectDropdownCellRenderer',
482
+ type: 'dsSelectDropdownColumn',
485
483
  // Per-row params: derive the cell background from the row's current value.
486
484
  cellRendererParams: (params) => ({
487
485
  options: statusOptions,
@@ -505,8 +503,7 @@ const columnDefs = [
505
503
  field: 'status',
506
504
  headerName: 'Status',
507
505
  flex: 1,
508
- editable: false,
509
- cellRenderer: 'dsSelectDropdownCellRenderer',
506
+ type: 'dsSelectDropdownColumn',
510
507
  cellRendererParams: (params: { value?: string }) => ({
511
508
  options: STATUS_OPTIONS,
512
509
  backgroundColor: params.value ? STATUS_BACKGROUND_COLORS[params.value] : undefined,
@@ -555,7 +552,7 @@ const columnDefs = [
555
552
  {
556
553
  field: 'english',
557
554
  headerName: 'English',
558
- cellRenderer: 'dsSelectDropdownCellRenderer',
555
+ type: 'dsSelectDropdownColumn',
559
556
  cellRendererParams: {
560
557
  options: gradeOptions,
561
558
  iconClickOnly: true,
@@ -583,24 +580,21 @@ const columnDefs = [
583
580
  field: 'english',
584
581
  headerName: 'English',
585
582
  flex: 1,
586
- editable: false,
587
- cellRenderer: 'dsSelectDropdownCellRenderer',
583
+ type: 'dsSelectDropdownColumn',
588
584
  cellRendererParams: { options: GRADE_OPTIONS, iconClickOnly: true },
589
585
  },
590
586
  {
591
587
  field: 'maths',
592
588
  headerName: 'Maths',
593
589
  flex: 1,
594
- editable: false,
595
- cellRenderer: 'dsSelectDropdownCellRenderer',
590
+ type: 'dsSelectDropdownColumn',
596
591
  cellRendererParams: { options: GRADE_OPTIONS, iconClickOnly: true },
597
592
  },
598
593
  {
599
594
  field: 'science',
600
595
  headerName: 'Science',
601
596
  flex: 1,
602
- editable: false,
603
- cellRenderer: 'dsSelectDropdownCellRenderer',
597
+ type: 'dsSelectDropdownColumn',
604
598
  cellRendererParams: { options: GRADE_OPTIONS, iconClickOnly: true },
605
599
  },
606
600
  ]}
@@ -648,7 +642,7 @@ const columnDefs = [
648
642
  {
649
643
  field: 'english',
650
644
  headerName: 'English',
651
- cellRenderer: 'dsSelectDropdownCellRenderer',
645
+ type: 'dsSelectDropdownColumn',
652
646
  cellRendererParams: (params) => ({
653
647
  options: gradeOptions,
654
648
  backgroundColor: GRADE_BACKGROUND_COLORS[params.value],
@@ -679,8 +673,7 @@ const columnDefs = [
679
673
  field: 'english',
680
674
  headerName: 'English',
681
675
  flex: 1,
682
- editable: false,
683
- cellRenderer: 'dsSelectDropdownCellRenderer',
676
+ type: 'dsSelectDropdownColumn',
684
677
  cellRendererParams: (params: { value?: string }) => ({
685
678
  options: GRADE_OPTIONS,
686
679
  backgroundColor: params.value ? GRADE_BACKGROUND_COLORS[params.value] : undefined,
@@ -693,8 +686,7 @@ const columnDefs = [
693
686
  field: 'maths',
694
687
  headerName: 'Maths',
695
688
  flex: 1,
696
- editable: false,
697
- cellRenderer: 'dsSelectDropdownCellRenderer',
689
+ type: 'dsSelectDropdownColumn',
698
690
  cellRendererParams: (params: { value?: string }) => ({
699
691
  options: GRADE_OPTIONS,
700
692
  backgroundColor: params.value ? GRADE_BACKGROUND_COLORS[params.value] : undefined,
@@ -707,8 +699,7 @@ const columnDefs = [
707
699
  field: 'science',
708
700
  headerName: 'Science',
709
701
  flex: 1,
710
- editable: false,
711
- cellRenderer: 'dsSelectDropdownCellRenderer',
702
+ type: 'dsSelectDropdownColumn',
712
703
  cellRendererParams: (params: { value?: string }) => ({
713
704
  options: GRADE_OPTIONS,
714
705
  backgroundColor: params.value ? GRADE_BACKGROUND_COLORS[params.value] : undefined,
@@ -742,7 +733,7 @@ const columnDefs = [
742
733
  {
743
734
  field: 'status',
744
735
  headerName: 'Status',
745
- cellRenderer: 'dsSelectDropdownCellRenderer',
736
+ type: 'dsSelectDropdownColumn',
746
737
  cellRendererParams: {
747
738
  options: statusOptions,
748
739
  onCloseAutoFocus: (event) => {
@@ -767,8 +758,7 @@ const columnDefs = [
767
758
  field: 'status',
768
759
  headerName: 'Status',
769
760
  flex: 1,
770
- editable: false,
771
- cellRenderer: 'dsSelectDropdownCellRenderer',
761
+ type: 'dsSelectDropdownColumn',
772
762
  cellRendererParams: {
773
763
  options: STATUS_OPTIONS,
774
764
  onCloseAutoFocus: (event: Event) => {
@@ -0,0 +1,56 @@
1
+ import { type ColDef } from 'ag-grid-community';
2
+ import { ComboboxCellRenderer } from 'Components/table/cellRenderers/ComboboxCellRenderer.js';
3
+
4
+ export const columnTypes: Record<string, ColDef> = {
5
+ dsBooleanColumn: {
6
+ cellRenderer: 'dsBooleanCellRenderer',
7
+ editable: false,
8
+ },
9
+ dsButtonColumn: {
10
+ cellRenderer: 'dsButtonCellRenderer',
11
+ editable: false,
12
+ cellRendererParams: {
13
+ suppressCellFocusAndFocusFirstElement: true,
14
+ },
15
+ },
16
+ dsCheckboxColumn: {
17
+ cellRenderer: 'dsCheckboxCellRenderer',
18
+ editable: false,
19
+ cellRendererParams: {
20
+ suppressCellFocusAndFocusFirstElement: true,
21
+ },
22
+ },
23
+ dsComboboxColumn: {
24
+ cellRenderer: 'dsComboboxCellRenderer',
25
+ editable: false,
26
+ ...ComboboxCellRenderer.colDefDefaults,
27
+ },
28
+ dsDateColumn: {
29
+ cellEditor: 'dsDateCellEditor',
30
+ editable: true,
31
+ valueFormatter: params =>
32
+ params.value instanceof Date
33
+ ? params.value.toLocaleDateString('en-GB')
34
+ : params.value,
35
+ },
36
+ dsInlineTextColumn: {
37
+ cellRenderer: 'dsInlineTextCellRenderer',
38
+ editable: false,
39
+ cellRendererParams: {
40
+ suppressCellFocusAndFocusFirstElement: true,
41
+ },
42
+ },
43
+ dsNumberColumn: {
44
+ cellEditor: 'dsNumberCellEditor',
45
+ editable: true,
46
+ },
47
+ dsNumberInputColumn: {
48
+ cellRenderer: 'dsNumberInputCellRenderer',
49
+ editable: false,
50
+ cellRendererParams: { suppressCellFocusAndFocusFirstElement: true },
51
+ },
52
+ dsSelectDropdownColumn: {
53
+ cellRenderer: 'dsSelectDropdownCellRenderer',
54
+ editable: false,
55
+ },
56
+ };