@arbor-education/design-system.components 0.6.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (311) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/bin/createComponent.sh +2 -2
  3. package/dist/components/avatar/Avatar.d.ts +1 -1
  4. package/dist/components/avatar/Avatar.d.ts.map +1 -1
  5. package/dist/components/avatar/Avatar.js +1 -1
  6. package/dist/components/avatar/Avatar.js.map +1 -1
  7. package/dist/components/avatar/Avatar.stories.d.ts.map +1 -1
  8. package/dist/components/avatar/Avatar.stories.js +7 -0
  9. package/dist/components/avatar/Avatar.stories.js.map +1 -1
  10. package/dist/components/badge/Badge.d.ts +12 -0
  11. package/dist/components/badge/Badge.d.ts.map +1 -0
  12. package/dist/components/badge/Badge.js +6 -0
  13. package/dist/components/badge/Badge.js.map +1 -0
  14. package/dist/components/badge/Badge.stories.d.ts +10 -0
  15. package/dist/components/badge/Badge.stories.d.ts.map +1 -0
  16. package/dist/components/badge/Badge.stories.js +51 -0
  17. package/dist/components/badge/Badge.stories.js.map +1 -0
  18. package/dist/components/badge/Badge.test.d.ts +2 -0
  19. package/dist/components/badge/Badge.test.d.ts.map +1 -0
  20. package/dist/components/badge/Badge.test.js +23 -0
  21. package/dist/components/badge/Badge.test.js.map +1 -0
  22. package/dist/components/card/Card.js +1 -1
  23. package/dist/components/card/Card.js.map +1 -1
  24. package/dist/components/combobox/Combobox.d.ts +16 -0
  25. package/dist/components/combobox/Combobox.d.ts.map +1 -0
  26. package/dist/components/combobox/Combobox.js +195 -0
  27. package/dist/components/combobox/Combobox.js.map +1 -0
  28. package/dist/components/combobox/Combobox.stories.d.ts +24 -0
  29. package/dist/components/combobox/Combobox.stories.d.ts.map +1 -0
  30. package/dist/components/combobox/Combobox.stories.js +246 -0
  31. package/dist/components/combobox/Combobox.stories.js.map +1 -0
  32. package/dist/components/combobox/Combobox.test.d.ts +2 -0
  33. package/dist/components/combobox/Combobox.test.d.ts.map +1 -0
  34. package/dist/components/combobox/Combobox.test.js +798 -0
  35. package/dist/components/combobox/Combobox.test.js.map +1 -0
  36. package/dist/components/combobox/ComboboxButtonTrigger.d.ts +28 -0
  37. package/dist/components/combobox/ComboboxButtonTrigger.d.ts.map +1 -0
  38. package/dist/components/combobox/ComboboxButtonTrigger.js +64 -0
  39. package/dist/components/combobox/ComboboxButtonTrigger.js.map +1 -0
  40. package/dist/components/combobox/ComboboxListbox.d.ts +44 -0
  41. package/dist/components/combobox/ComboboxListbox.d.ts.map +1 -0
  42. package/dist/components/combobox/ComboboxListbox.js +37 -0
  43. package/dist/components/combobox/ComboboxListbox.js.map +1 -0
  44. package/dist/components/combobox/ComboboxOptionRow.d.ts +23 -0
  45. package/dist/components/combobox/ComboboxOptionRow.d.ts.map +1 -0
  46. package/dist/components/combobox/ComboboxOptionRow.js +27 -0
  47. package/dist/components/combobox/ComboboxOptionRow.js.map +1 -0
  48. package/dist/components/combobox/ComboboxTrigger.d.ts +35 -0
  49. package/dist/components/combobox/ComboboxTrigger.d.ts.map +1 -0
  50. package/dist/components/combobox/ComboboxTrigger.js +15 -0
  51. package/dist/components/combobox/ComboboxTrigger.js.map +1 -0
  52. package/dist/components/combobox/buildListboxDisplayOptions.d.ts +3 -0
  53. package/dist/components/combobox/buildListboxDisplayOptions.d.ts.map +1 -0
  54. package/dist/components/combobox/buildListboxDisplayOptions.js +13 -0
  55. package/dist/components/combobox/buildListboxDisplayOptions.js.map +1 -0
  56. package/dist/components/combobox/buildListboxDisplayOptions.test.d.ts +2 -0
  57. package/dist/components/combobox/buildListboxDisplayOptions.test.d.ts.map +1 -0
  58. package/dist/components/combobox/buildListboxDisplayOptions.test.js +22 -0
  59. package/dist/components/combobox/buildListboxDisplayOptions.test.js.map +1 -0
  60. package/dist/components/combobox/comboboxKeyboardTypes.d.ts +41 -0
  61. package/dist/components/combobox/comboboxKeyboardTypes.d.ts.map +1 -0
  62. package/dist/components/combobox/comboboxKeyboardTypes.js +2 -0
  63. package/dist/components/combobox/comboboxKeyboardTypes.js.map +1 -0
  64. package/dist/components/combobox/highlightLabel.d.ts +10 -0
  65. package/dist/components/combobox/highlightLabel.d.ts.map +1 -0
  66. package/dist/components/combobox/highlightLabel.js +18 -0
  67. package/dist/components/combobox/highlightLabel.js.map +1 -0
  68. package/dist/components/combobox/normaliseComboboxQuery.d.ts +2 -0
  69. package/dist/components/combobox/normaliseComboboxQuery.d.ts.map +1 -0
  70. package/dist/components/combobox/normaliseComboboxQuery.js +2 -0
  71. package/dist/components/combobox/normaliseComboboxQuery.js.map +1 -0
  72. package/dist/components/combobox/types.d.ts +46 -0
  73. package/dist/components/combobox/types.d.ts.map +1 -0
  74. package/dist/components/combobox/types.js +2 -0
  75. package/dist/components/combobox/types.js.map +1 -0
  76. package/dist/components/combobox/useChipSelection.d.ts +11 -0
  77. package/dist/components/combobox/useChipSelection.d.ts.map +1 -0
  78. package/dist/components/combobox/useChipSelection.js +35 -0
  79. package/dist/components/combobox/useChipSelection.js.map +1 -0
  80. package/dist/components/combobox/useComboboxChipKeyboard.d.ts +3 -0
  81. package/dist/components/combobox/useComboboxChipKeyboard.d.ts.map +1 -0
  82. package/dist/components/combobox/useComboboxChipKeyboard.js +103 -0
  83. package/dist/components/combobox/useComboboxChipKeyboard.js.map +1 -0
  84. package/dist/components/combobox/useComboboxChipKeyboard.test.d.ts +2 -0
  85. package/dist/components/combobox/useComboboxChipKeyboard.test.d.ts.map +1 -0
  86. package/dist/components/combobox/useComboboxChipKeyboard.test.js +116 -0
  87. package/dist/components/combobox/useComboboxChipKeyboard.test.js.map +1 -0
  88. package/dist/components/combobox/useComboboxKeyboard.d.ts +4 -0
  89. package/dist/components/combobox/useComboboxKeyboard.d.ts.map +1 -0
  90. package/dist/components/combobox/useComboboxKeyboard.js +68 -0
  91. package/dist/components/combobox/useComboboxKeyboard.js.map +1 -0
  92. package/dist/components/combobox/useComboboxListboxDom.d.ts +11 -0
  93. package/dist/components/combobox/useComboboxListboxDom.d.ts.map +1 -0
  94. package/dist/components/combobox/useComboboxListboxDom.js +15 -0
  95. package/dist/components/combobox/useComboboxListboxDom.js.map +1 -0
  96. package/dist/components/combobox/useComboboxListboxKeyboard.d.ts +3 -0
  97. package/dist/components/combobox/useComboboxListboxKeyboard.d.ts.map +1 -0
  98. package/dist/components/combobox/useComboboxListboxKeyboard.js +143 -0
  99. package/dist/components/combobox/useComboboxListboxKeyboard.js.map +1 -0
  100. package/dist/components/combobox/useComboboxListboxKeyboard.test.d.ts +2 -0
  101. package/dist/components/combobox/useComboboxListboxKeyboard.test.d.ts.map +1 -0
  102. package/dist/components/combobox/useComboboxListboxKeyboard.test.js +152 -0
  103. package/dist/components/combobox/useComboboxListboxKeyboard.test.js.map +1 -0
  104. package/dist/components/combobox/useComboboxPopoverBehavior.d.ts +38 -0
  105. package/dist/components/combobox/useComboboxPopoverBehavior.d.ts.map +1 -0
  106. package/dist/components/combobox/useComboboxPopoverBehavior.js +104 -0
  107. package/dist/components/combobox/useComboboxPopoverBehavior.js.map +1 -0
  108. package/dist/components/combobox/useComboboxState.d.ts +27 -0
  109. package/dist/components/combobox/useComboboxState.d.ts.map +1 -0
  110. package/dist/components/combobox/useComboboxState.js +122 -0
  111. package/dist/components/combobox/useComboboxState.js.map +1 -0
  112. package/dist/components/combobox/useElementWidth.d.ts +2 -0
  113. package/dist/components/combobox/useElementWidth.d.ts.map +1 -0
  114. package/dist/components/combobox/useElementWidth.js +31 -0
  115. package/dist/components/combobox/useElementWidth.js.map +1 -0
  116. package/dist/components/combobox/useVisibleChips.d.ts +21 -0
  117. package/dist/components/combobox/useVisibleChips.d.ts.map +1 -0
  118. package/dist/components/combobox/useVisibleChips.js +59 -0
  119. package/dist/components/combobox/useVisibleChips.js.map +1 -0
  120. package/dist/components/combobox/useVisibleChips.test.d.ts +2 -0
  121. package/dist/components/combobox/useVisibleChips.test.d.ts.map +1 -0
  122. package/dist/components/combobox/useVisibleChips.test.js +81 -0
  123. package/dist/components/combobox/useVisibleChips.test.js.map +1 -0
  124. package/dist/components/dot/Dot.d.ts +8 -0
  125. package/dist/components/dot/Dot.d.ts.map +1 -0
  126. package/dist/components/dot/Dot.js +6 -0
  127. package/dist/components/dot/Dot.js.map +1 -0
  128. package/dist/components/dot/Dot.stories.d.ts +15 -0
  129. package/dist/components/dot/Dot.stories.d.ts.map +1 -0
  130. package/dist/components/dot/Dot.stories.js +25 -0
  131. package/dist/components/dot/Dot.stories.js.map +1 -0
  132. package/dist/components/dot/Dot.test.d.ts +2 -0
  133. package/dist/components/dot/Dot.test.d.ts.map +1 -0
  134. package/dist/components/dot/Dot.test.js +19 -0
  135. package/dist/components/dot/Dot.test.js.map +1 -0
  136. package/dist/components/formField/FormField.d.ts +8 -4
  137. package/dist/components/formField/FormField.d.ts.map +1 -1
  138. package/dist/components/formField/FormField.js +7 -6
  139. package/dist/components/formField/FormField.js.map +1 -1
  140. package/dist/components/formField/FormField.stories.d.ts +1 -0
  141. package/dist/components/formField/FormField.stories.d.ts.map +1 -1
  142. package/dist/components/formField/FormField.stories.js +13 -1
  143. package/dist/components/formField/FormField.stories.js.map +1 -1
  144. package/dist/components/formField/FormField.test.js +10 -0
  145. package/dist/components/formField/FormField.test.js.map +1 -1
  146. package/dist/components/icon/allowedIcons.d.ts +1 -0
  147. package/dist/components/icon/allowedIcons.d.ts.map +1 -1
  148. package/dist/components/icon/allowedIcons.js +2 -1
  149. package/dist/components/icon/allowedIcons.js.map +1 -1
  150. package/dist/components/progress/Progress.stories.d.ts +49 -49
  151. package/dist/components/row/Row.d.ts +10 -0
  152. package/dist/components/row/Row.d.ts.map +1 -0
  153. package/dist/components/row/Row.js +17 -0
  154. package/dist/components/row/Row.js.map +1 -0
  155. package/dist/components/row/Row.stories.d.ts +15 -0
  156. package/dist/components/row/Row.stories.d.ts.map +1 -0
  157. package/dist/components/row/Row.stories.js +65 -0
  158. package/dist/components/row/Row.stories.js.map +1 -0
  159. package/dist/components/row/Row.test.d.ts +2 -0
  160. package/dist/components/row/Row.test.d.ts.map +1 -0
  161. package/dist/components/row/Row.test.js +62 -0
  162. package/dist/components/row/Row.test.js.map +1 -0
  163. package/dist/components/section/Section.stories.d.ts +27 -0
  164. package/dist/components/section/Section.stories.d.ts.map +1 -1
  165. package/dist/components/section/Section.stories.js +45 -1
  166. package/dist/components/section/Section.stories.js.map +1 -1
  167. package/dist/components/singleUser/SingleUser.d.ts +15 -0
  168. package/dist/components/singleUser/SingleUser.d.ts.map +1 -0
  169. package/dist/components/singleUser/SingleUser.js +9 -0
  170. package/dist/components/singleUser/SingleUser.js.map +1 -0
  171. package/dist/components/singleUser/SingleUser.stories.d.ts +11 -0
  172. package/dist/components/singleUser/SingleUser.stories.d.ts.map +1 -0
  173. package/dist/components/singleUser/SingleUser.stories.js +52 -0
  174. package/dist/components/singleUser/SingleUser.stories.js.map +1 -0
  175. package/dist/components/singleUser/SingleUser.test.d.ts +2 -0
  176. package/dist/components/singleUser/SingleUser.test.d.ts.map +1 -0
  177. package/dist/components/singleUser/SingleUser.test.js +30 -0
  178. package/dist/components/singleUser/SingleUser.test.js.map +1 -0
  179. package/dist/components/table/cellRenderers/SelectDropdownCellRenderer.d.ts.map +1 -1
  180. package/dist/components/table/cellRenderers/SelectDropdownCellRenderer.js +9 -3
  181. package/dist/components/table/cellRenderers/SelectDropdownCellRenderer.js.map +1 -1
  182. package/dist/components/tabs/TabsItem.stories.d.ts +2 -2
  183. package/dist/components/tag/Tag.d.ts +9 -6
  184. package/dist/components/tag/Tag.d.ts.map +1 -1
  185. package/dist/components/tag/Tag.js +8 -2
  186. package/dist/components/tag/Tag.js.map +1 -1
  187. package/dist/components/tag/Tag.stories.d.ts +11 -6
  188. package/dist/components/tag/Tag.stories.d.ts.map +1 -1
  189. package/dist/components/tag/Tag.stories.js +68 -4
  190. package/dist/components/tag/Tag.stories.js.map +1 -1
  191. package/dist/components/tag/Tag.test.js +86 -50
  192. package/dist/components/tag/Tag.test.js.map +1 -1
  193. package/dist/components/toggle/Toggle.d.ts +3 -0
  194. package/dist/components/toggle/Toggle.d.ts.map +1 -0
  195. package/dist/components/toggle/Toggle.js +8 -0
  196. package/dist/components/toggle/Toggle.js.map +1 -0
  197. package/dist/components/toggle/Toggle.stories.d.ts +97 -0
  198. package/dist/components/toggle/Toggle.stories.d.ts.map +1 -0
  199. package/dist/components/toggle/Toggle.stories.js +186 -0
  200. package/dist/components/toggle/Toggle.stories.js.map +1 -0
  201. package/dist/components/toggle/Toggle.test.d.ts +2 -0
  202. package/dist/components/toggle/Toggle.test.d.ts.map +1 -0
  203. package/dist/components/toggle/Toggle.test.js +58 -0
  204. package/dist/components/toggle/Toggle.test.js.map +1 -0
  205. package/dist/index.css +703 -25
  206. package/dist/index.css.map +1 -1
  207. package/dist/index.d.ts +35 -25
  208. package/dist/index.d.ts.map +1 -1
  209. package/dist/index.js +31 -25
  210. package/dist/index.js.map +1 -1
  211. package/dist/mocks/comboboxStoryOptions.d.ts +5 -0
  212. package/dist/mocks/comboboxStoryOptions.d.ts.map +1 -0
  213. package/dist/mocks/comboboxStoryOptions.js +22 -0
  214. package/dist/mocks/comboboxStoryOptions.js.map +1 -0
  215. package/dist/utils/isSelectAllChord.d.ts +5 -0
  216. package/dist/utils/isSelectAllChord.d.ts.map +1 -0
  217. package/dist/utils/isSelectAllChord.js +7 -0
  218. package/dist/utils/isSelectAllChord.js.map +1 -0
  219. package/dist/utils/isSelectAllChord.test.d.ts +2 -0
  220. package/dist/utils/isSelectAllChord.test.d.ts.map +1 -0
  221. package/dist/utils/isSelectAllChord.test.js +19 -0
  222. package/dist/utils/isSelectAllChord.test.js.map +1 -0
  223. package/dist/utils/nextCircularIndex.d.ts +3 -0
  224. package/dist/utils/nextCircularIndex.d.ts.map +1 -0
  225. package/dist/utils/nextCircularIndex.js +10 -0
  226. package/dist/utils/nextCircularIndex.js.map +1 -0
  227. package/dist/utils/nextCircularIndex.test.d.ts +2 -0
  228. package/dist/utils/nextCircularIndex.test.d.ts.map +1 -0
  229. package/dist/utils/nextCircularIndex.test.js +23 -0
  230. package/dist/utils/nextCircularIndex.test.js.map +1 -0
  231. package/dist/utils/scrollElementIntoViewById.d.ts +2 -0
  232. package/dist/utils/scrollElementIntoViewById.d.ts.map +1 -0
  233. package/dist/utils/scrollElementIntoViewById.js +16 -0
  234. package/dist/utils/scrollElementIntoViewById.js.map +1 -0
  235. package/dist/utils/scrollElementIntoViewById.test.d.ts +2 -0
  236. package/dist/utils/scrollElementIntoViewById.test.d.ts.map +1 -0
  237. package/dist/utils/scrollElementIntoViewById.test.js +31 -0
  238. package/dist/utils/scrollElementIntoViewById.test.js.map +1 -0
  239. package/package.json +1 -1
  240. package/src/components/avatar/Avatar.stories.tsx +8 -0
  241. package/src/components/avatar/Avatar.tsx +3 -3
  242. package/src/components/badge/Badge.stories.tsx +74 -0
  243. package/src/components/badge/Badge.test.tsx +28 -0
  244. package/src/components/badge/Badge.tsx +35 -0
  245. package/src/components/badge/badge.scss +86 -0
  246. package/src/components/card/Card.tsx +1 -1
  247. package/src/components/combobox/Combobox.stories.tsx +340 -0
  248. package/src/components/combobox/Combobox.test.tsx +1160 -0
  249. package/src/components/combobox/Combobox.tsx +434 -0
  250. package/src/components/combobox/ComboboxButtonTrigger.tsx +195 -0
  251. package/src/components/combobox/ComboboxListbox.tsx +224 -0
  252. package/src/components/combobox/ComboboxOptionRow.tsx +128 -0
  253. package/src/components/combobox/ComboboxTrigger.tsx +134 -0
  254. package/src/components/combobox/buildListboxDisplayOptions.test.ts +24 -0
  255. package/src/components/combobox/buildListboxDisplayOptions.ts +12 -0
  256. package/src/components/combobox/combobox.scss +390 -0
  257. package/src/components/combobox/comboboxKeyboardTypes.ts +45 -0
  258. package/src/components/combobox/highlightLabel.tsx +42 -0
  259. package/src/components/combobox/normaliseComboboxQuery.ts +1 -0
  260. package/src/components/combobox/types.ts +53 -0
  261. package/src/components/combobox/useChipSelection.ts +53 -0
  262. package/src/components/combobox/useComboboxChipKeyboard.test.tsx +141 -0
  263. package/src/components/combobox/useComboboxChipKeyboard.ts +121 -0
  264. package/src/components/combobox/useComboboxKeyboard.ts +108 -0
  265. package/src/components/combobox/useComboboxListboxDom.ts +36 -0
  266. package/src/components/combobox/useComboboxListboxKeyboard.test.tsx +186 -0
  267. package/src/components/combobox/useComboboxListboxKeyboard.ts +172 -0
  268. package/src/components/combobox/useComboboxPopoverBehavior.ts +179 -0
  269. package/src/components/combobox/useComboboxState.ts +232 -0
  270. package/src/components/combobox/useElementWidth.ts +40 -0
  271. package/src/components/combobox/useVisibleChips.test.tsx +91 -0
  272. package/src/components/combobox/useVisibleChips.ts +100 -0
  273. package/src/components/dot/Dot.stories.tsx +41 -0
  274. package/src/components/dot/Dot.test.tsx +21 -0
  275. package/src/components/dot/Dot.tsx +18 -0
  276. package/src/components/dot/dot.scss +35 -0
  277. package/src/components/formField/FormField.stories.tsx +30 -1
  278. package/src/components/formField/FormField.test.tsx +20 -0
  279. package/src/components/formField/FormField.tsx +11 -5
  280. package/src/components/formField/inputs/number/numberInput.scss +12 -4
  281. package/src/components/icon/allowedIcons.tsx +2 -0
  282. package/src/components/pill/pill.scss +4 -6
  283. package/src/components/row/Row.stories.tsx +85 -0
  284. package/src/components/row/Row.test.tsx +82 -0
  285. package/src/components/row/Row.tsx +54 -0
  286. package/src/components/row/row.scss +61 -0
  287. package/src/components/section/Section.stories.tsx +56 -0
  288. package/src/components/singleUser/SingleUser.stories.tsx +63 -0
  289. package/src/components/singleUser/SingleUser.test.tsx +61 -0
  290. package/src/components/singleUser/SingleUser.tsx +45 -0
  291. package/src/components/singleUser/singleUser.scss +14 -0
  292. package/src/components/table/cellRenderers/SelectDropdownCellRenderer.tsx +19 -3
  293. package/src/components/tag/Tag.stories.tsx +88 -6
  294. package/src/components/tag/Tag.test.tsx +110 -44
  295. package/src/components/tag/Tag.tsx +38 -14
  296. package/src/components/tag/tag.scss +45 -30
  297. package/src/components/toggle/Toggle.stories.tsx +239 -0
  298. package/src/components/toggle/Toggle.test.tsx +66 -0
  299. package/src/components/toggle/Toggle.tsx +12 -0
  300. package/src/components/toggle/toggle.scss +126 -0
  301. package/src/index.scss +6 -0
  302. package/src/index.ts +48 -31
  303. package/src/mocks/comboboxStoryOptions.ts +25 -0
  304. package/src/tokens.scss +33 -4
  305. package/src/utils/isSelectAllChord.test.ts +24 -0
  306. package/src/utils/isSelectAllChord.ts +8 -0
  307. package/src/utils/nextCircularIndex.test.ts +26 -0
  308. package/src/utils/nextCircularIndex.ts +15 -0
  309. package/src/utils/scrollElementIntoViewById.test.ts +38 -0
  310. package/src/utils/scrollElementIntoViewById.ts +20 -0
  311. package/tokens/json/Arbor.json +3828 -3704
package/src/index.ts CHANGED
@@ -1,45 +1,62 @@
1
+ export { Avatar } from 'Components/avatar/Avatar';
2
+ export {
3
+ AvatarGroup,
4
+ type AvatarGroupItem,
5
+ type AvatarGroupListOrder,
6
+ type AvatarGroupOverflowCountProps,
7
+ type AvatarGroupProps,
8
+ } from 'Components/avatarGroup/AvatarGroup';
9
+ export { Banner, BANNER_LEVEL, type BannerProps } from 'Components/banner/Banner';
1
10
  export { Button } from 'Components/button/Button';
2
- export { Heading } from 'Components/heading/Heading';
3
- export { Icon } from 'Components/icon/Icon';
4
11
  export { Card } from 'Components/card/Card';
12
+ export { DatePicker } from 'Components/datePicker/DatePicker';
5
13
  export { Dropdown } from 'Components/dropdown/Dropdown';
6
14
  export { Tag } from 'Components/tag/Tag';
7
- export { Pill } from 'Components/pill/Pill';
8
- export { Section } from 'Components/section/Section';
15
+ export type { TagProps, TagColor } from 'Components/tag/Tag';
16
+ export { Dot } from 'Components/dot/Dot';
17
+ export type { DotColour } from 'Components/dot/Dot';
18
+ export { Badge } from 'Components/badge/Badge';
19
+ export type { BadgeColour, BadgeProps, BadgeSize } from 'Components/badge/Badge';
9
20
  export { Tabs } from 'Components/tabs/Tabs';
10
- export { TextInput } from 'Components/formField/inputs/text/TextInput';
11
- export { TextArea } from 'Components/formField/inputs/textArea/TextArea';
12
21
  export { NumberInput } from 'Components/formField/inputs/number/NumberInput';
22
+ export { EditableText } from 'Components/editableText/EditableText';
23
+ export { Fieldset } from 'Components/formField/fieldset/Fieldset';
13
24
  export { ColourPickerDropdown } from 'Components/formField/inputs/colourPickerDropdown/ColourPickerDropdown';
14
- export { SelectDropdown } from 'Components/formField/inputs/selectDropdown/SelectDropdown';
15
- export { SlideoverManager } from 'Components/slideoverManager/SlideoverManager';
16
- export { Slideover, type SlideoverProps } from 'Components/slideover/Slideover';
17
- export { SlideoverUtils } from 'Utils/SlideoverUtils';
18
25
  export { RadioButtonInput } from 'Components/formField/inputs/radio/RadioButtonInput';
19
- export { Table } from 'Components/table/Table';
20
- export { GridApiContext } from 'Components/table/GridApiContext';
21
- export { Tooltip } from 'Components/tooltip/Tooltip';
22
- export { TooltipWrapper } from 'Components/tooltip/TooltipWrapper';
23
- export { Fieldset } from 'Components/formField/fieldset/Fieldset';
24
- export { Separator } from 'Components/separator/Separator';
26
+ export { SelectDropdown } from 'Components/formField/inputs/selectDropdown/SelectDropdown';
27
+ export { TextInput } from 'Components/formField/inputs/text/TextInput';
28
+ export { TextArea } from 'Components/formField/inputs/textArea/TextArea';
29
+ export { Heading } from 'Components/heading/Heading';
30
+ export { Icon } from 'Components/icon/Icon';
25
31
  export { Modal } from 'Components/modal/Modal';
26
32
  export { ModalManager } from 'Components/modal/modalManager/ModalManager';
27
- export { DSDefaultColDef } from 'Components/table/DSDefaultColDef';
28
- export { DefaultCellRenderer } from 'Components/table/cellRenderers/DefaultCellRenderer';
29
- export { Banner, type BannerProps, BANNER_LEVEL } from 'Components/banner/Banner';
30
- export { EditableText } from 'Components/editableText/EditableText';
33
+ export { Pill } from 'Components/pill/Pill';
31
34
  export { Progress } from 'Components/progress/Progress';
35
+ export { SearchBar } from 'Components/searchBar/SearchBar';
36
+ export { Section } from 'Components/section/Section';
37
+ export { Separator } from 'Components/separator/Separator';
38
+ export { SingleUser, type SingleUserProps } from 'Components/singleUser/SingleUser';
39
+ export { Slideover, type SlideoverProps } from 'Components/slideover/Slideover';
40
+ export { SlideoverManager } from 'Components/slideoverManager/SlideoverManager';
41
+ export { DefaultCellRenderer } from 'Components/table/cellRenderers/DefaultCellRenderer';
42
+ export { DSDefaultColDef } from 'Components/table/DSDefaultColDef';
43
+ export { GridApiContext } from 'Components/table/GridApiContext';
44
+ export { Table } from 'Components/table/Table';
32
45
  export { Toast } from 'Components/toast/Toast';
33
- export { DatePicker } from 'Components/datePicker/DatePicker';
34
- export { Avatar } from 'Components/avatar/Avatar';
35
- export {
36
- AvatarGroup,
37
- type AvatarGroupItem,
38
- type AvatarGroupListOrder,
39
- type AvatarGroupOverflowCountProps,
40
- type AvatarGroupProps,
41
- } from 'Components/avatarGroup/AvatarGroup';
46
+ export { Tooltip } from 'Components/tooltip/Tooltip';
47
+ export { TooltipWrapper } from 'Components/tooltip/TooltipWrapper';
48
+ export { ArborLogo, GovhubLogo, KeyLogo, RobinLogo, SampeopleLogo, TimetablerLogo } from 'Components/userDropdown/assets/logos';
42
49
  export { UserDropdown } from 'Components/userDropdown/UserDropdown';
43
- export { SearchBar } from 'Components/searchBar/SearchBar';
44
50
  export type { UserDropdownUserInfoAction } from 'Components/userDropdown/UserDropdown';
45
- export { ArborLogo, GovhubLogo, KeyLogo, SampeopleLogo, RobinLogo, TimetablerLogo } from 'Components/userDropdown/assets/logos';
51
+ export { Row, type RowProps } from 'Components/row/Row';
52
+ export { Combobox } from 'Components/combobox/Combobox';
53
+ export type {
54
+ ComboboxAriaInvalid,
55
+ ComboboxCreateResult,
56
+ ComboboxOption,
57
+ ComboboxProps,
58
+ ComboboxSearchFn,
59
+ ComboboxSearchType,
60
+ } from 'Components/combobox/types';
61
+ export { Toggle } from 'Components/toggle/Toggle';
62
+ export { SlideoverUtils } from 'Utils/SlideoverUtils';
@@ -0,0 +1,25 @@
1
+ import type { ComboboxOption } from 'Components/combobox/types';
2
+
3
+ export const comboboxPeopleOptions: ComboboxOption[] = [
4
+ { value: 'alice', label: 'Alice Johnson', iconName: 'user' },
5
+ { value: 'bob', label: 'Bob Smith', iconName: 'user' },
6
+ { value: 'charlie', label: 'Charlie Brown', iconName: 'user' },
7
+ { value: 'diana', label: 'Diana Prince', iconName: 'user' },
8
+ { value: 'edward', label: 'Edward Norton', iconName: 'user' },
9
+ ];
10
+
11
+ export const comboboxAsyncSearchOptions: ComboboxOption[] = [
12
+ { value: 'abc', label: 'abc', iconName: 'user' },
13
+ { value: 'abcd', label: 'abcd', iconName: 'user' },
14
+ { value: 'abcde', label: 'abcde', iconName: 'user' },
15
+ { value: 'abcdef', label: 'abcdef', iconName: 'user' },
16
+ { value: 'abcdefg', label: 'abcdefg', iconName: 'user' },
17
+ ];
18
+
19
+ export const comboboxGroupedPeopleOptions: ComboboxOption[] = [
20
+ { value: 'alice', label: 'Alice Johnson', iconName: 'user', group: 'Team A' },
21
+ { value: 'bob', label: 'Bob Smith', iconName: 'user', group: 'Team A' },
22
+ { value: 'charlie', label: 'Charlie Brown', iconName: 'user', group: 'Team B' },
23
+ { value: 'diana', label: 'Diana Prince', iconName: 'user', group: 'Team B' },
24
+ { value: 'edward', label: 'Edward Norton', iconName: 'user' },
25
+ ];
package/src/tokens.scss CHANGED
@@ -157,6 +157,14 @@
157
157
  --avatar-small-size: 1.25rem;
158
158
  --avatar-medium-size: 2rem;
159
159
  --avatar-extra-large-size: 6rem;
160
+ --single-user-color-border: var(--color-grey-100);
161
+ --single-user-color-background: var(--color-grey-050);
162
+ --single-user-color-text: var(--color-grey-900);
163
+ --single-user-radius: var(--border-radius-round);
164
+ --single-user-font-size: var(--font-size-2-13);
165
+ --single-user-spacing-gap: var(--spacing-xsmall);
166
+ --single-user-spacing-padding-inline-end: var(--spacing-small);
167
+ --single-user-border-width: var(--border-weight);
160
168
  --avatar-group-overlap: -2px;
161
169
  --avatar-group-overflow-count-font-size: 0.8125rem;
162
170
  --border-weight: 1px;
@@ -223,6 +231,9 @@
223
231
  --tag-spacing-vertical: var(--spacing-xsmall);
224
232
  --tag-spacing-horizontal: var(--spacing-medium);
225
233
  --tag-spacing-gap-horizontal: var(--spacing-small);
234
+ --tag-selected-color-background: var(--color-grey-200);
235
+ --tag-selected-color-border: var(--color-grey-200);
236
+ --tag-height: var(--size-control-xsmall);
226
237
  --card-focus-color-icon: var(--color-grey-900);
227
238
  --card-focus-color-text: var(--color-grey-900);
228
239
  --card-focus-color-border: var(--color-grey-100);
@@ -241,7 +252,24 @@
241
252
  --card-spacing-gap-vertical: var(--spacing-medium);
242
253
  --card-spacing-gap-horizontal: var(--spacing-large);
243
254
  --page-color-background: var(--color-grey-050);
255
+ --badge-small-size: 1.125rem;
256
+ --badge-small-radius: var(--border-radius-round);
257
+ --badge-small-spacing-horizontal: var(--spacing-xsmall);
258
+ --badge-small-font-size: var(--font-size-1-11);
259
+ --badge-medium-size: 1.25rem;
260
+ --badge-medium-radius: var(--border-radius-round);
261
+ --badge-medium-spacing-horizontal: var(--spacing-xsmall);
262
+ --badge-medium-font-size: var(--font-size-2-13);
263
+ --badge-large-size: 1.5rem;
264
+ --badge-large-radius: var(--border-radius-round);
265
+ --badge-large-spacing-horizontal: var(--spacing-small);
266
+ --badge-large-font-size: var(--font-size-3-14);
267
+ --badge-font-weight: var(--font-weight-semi-bold);
244
268
  --pill-bg: var(--color-mono-white);
269
+ --pill-radius: var(--border-radius-round);
270
+ --pill-spacing-horizontal: var(--spacing-small);
271
+ --pill-spacing-vertical: var(--spacing-xsmall);
272
+ --pill-spacing-gap-horizontal: var(--spacing-small);
245
273
  --pill-checkbox-hover-color-icon: var(--color-grey-900);
246
274
  --pill-checkbox-hover-color-text: var(--color-grey-900);
247
275
  --pill-checkbox-hover-color-border: var(--color-grey-500);
@@ -751,8 +779,8 @@
751
779
  --toggle-on-disabled-color-dot: var(--color-grey-050);
752
780
  --toggle-on-disabled-color-border: var(--color-grey-300);
753
781
  --toggle-on-disabled-color-background: var(--color-grey-300);
754
- --toggle-off-focus-color-dot: var(--color-grey-500);
755
- --toggle-off-focus-color-border: var(--color-grey-500);
782
+ --toggle-off-focus-color-dot: var(--color-grey-600);
783
+ --toggle-off-focus-color-border: var(--color-grey-600);
756
784
  --toggle-off-focus-color-background: var(--color-mono-white);
757
785
  --toggle-off-hover-color-dot: var(--color-grey-600);
758
786
  --toggle-off-hover-color-border: var(--color-grey-600);
@@ -760,8 +788,8 @@
760
788
  --toggle-off-active-color-dot: var(--color-grey-900);
761
789
  --toggle-off-active-color-border: var(--color-grey-900);
762
790
  --toggle-off-active-color-background: var(--color-grey-100);
763
- --toggle-off-default-color-dot: var(--color-grey-500);
764
- --toggle-off-default-color-border: var(--color-grey-500);
791
+ --toggle-off-default-color-dot: var(--color-grey-600);
792
+ --toggle-off-default-color-border: var(--color-grey-600);
765
793
  --toggle-off-default-color-background: var(--color-mono-white);
766
794
  --toggle-off-disabled-color-dot: var(--color-grey-300);
767
795
  --toggle-off-disabled-color-border: var(--color-grey-300);
@@ -1084,6 +1112,7 @@
1084
1112
  --form-field-combobox-placeholder-color-text: var(--color-grey-600);
1085
1113
  --form-field-combobox-placeholder-color-border: var(--color-grey-200);
1086
1114
  --form-field-combobox-placeholder-color-background: var(--color-mono-white);
1115
+ --form-field-combobox-listbox-max-height: 150px;
1087
1116
  --form-field-textarea-error-color-text: var(--color-grey-900);
1088
1117
  --form-field-textarea-error-color-border: var(--color-semantic-destructive-500);
1089
1118
  --form-field-textarea-error-color-background: var(--color-mono-white);
@@ -0,0 +1,24 @@
1
+ import { isSelectAllChord } from 'Utils/isSelectAllChord';
2
+ import { describe, expect, test } from 'vitest';
3
+
4
+ const chord = (init: Partial<KeyboardEvent> & Pick<KeyboardEvent, 'key'>): KeyboardEvent =>
5
+ ({ metaKey: false, ctrlKey: false, ...init } as KeyboardEvent);
6
+
7
+ describe('isSelectAllChord', () => {
8
+ test('true for metaKey + a', () => {
9
+ expect(isSelectAllChord(chord({ key: 'a', metaKey: true }))).toBe(true);
10
+ expect(isSelectAllChord(chord({ key: 'A', metaKey: true }))).toBe(true);
11
+ });
12
+
13
+ test('true for ctrlKey + a', () => {
14
+ expect(isSelectAllChord(chord({ key: 'a', ctrlKey: true }))).toBe(true);
15
+ });
16
+
17
+ test('false without modifier', () => {
18
+ expect(isSelectAllChord(chord({ key: 'a' }))).toBe(false);
19
+ });
20
+
21
+ test('false for other keys with modifier', () => {
22
+ expect(isSelectAllChord(chord({ key: 'b', metaKey: true }))).toBe(false);
23
+ });
24
+ });
@@ -0,0 +1,8 @@
1
+ /**
2
+ * True when the event is Cmd/Ctrl+A (select-all shortcut).
3
+ */
4
+ export function isSelectAllChord(
5
+ e: Pick<KeyboardEvent, 'key' | 'metaKey' | 'ctrlKey'>,
6
+ ): boolean {
7
+ return (e.metaKey || e.ctrlKey) && e.key.toLowerCase() === 'a';
8
+ }
@@ -0,0 +1,26 @@
1
+ import { nextCircularIndex } from 'Utils/nextCircularIndex';
2
+ import { describe, expect, test } from 'vitest';
3
+
4
+ describe('nextCircularIndex', () => {
5
+ test('returns 0 when length is 0', () => {
6
+ expect(nextCircularIndex(3, 0, 'next')).toBe(0);
7
+ expect(nextCircularIndex(3, 0, 'previous')).toBe(0);
8
+ });
9
+
10
+ test('next advances and wraps from last to first', () => {
11
+ expect(nextCircularIndex(0, 3, 'next')).toBe(1);
12
+ expect(nextCircularIndex(1, 3, 'next')).toBe(2);
13
+ expect(nextCircularIndex(2, 3, 'next')).toBe(0);
14
+ });
15
+
16
+ test('previous goes back and wraps from first to last', () => {
17
+ expect(nextCircularIndex(2, 3, 'previous')).toBe(1);
18
+ expect(nextCircularIndex(1, 3, 'previous')).toBe(0);
19
+ expect(nextCircularIndex(0, 3, 'previous')).toBe(2);
20
+ });
21
+
22
+ test('single item wraps to same index for both directions', () => {
23
+ expect(nextCircularIndex(0, 1, 'next')).toBe(0);
24
+ expect(nextCircularIndex(0, 1, 'previous')).toBe(0);
25
+ });
26
+ });
@@ -0,0 +1,15 @@
1
+ export type CircularDirection = 'next' | 'previous';
2
+
3
+ export function nextCircularIndex(
4
+ current: number,
5
+ length: number,
6
+ direction: CircularDirection,
7
+ ): number {
8
+ if (length <= 0) {
9
+ return 0;
10
+ }
11
+ if (direction === 'next') {
12
+ return current < length - 1 ? current + 1 : 0;
13
+ }
14
+ return current > 0 ? current - 1 : length - 1;
15
+ }
@@ -0,0 +1,38 @@
1
+ import { scrollElementIntoViewById } from 'Utils/scrollElementIntoViewById';
2
+ import { afterEach, describe, expect, test, vi } from 'vitest';
3
+
4
+ describe('scrollElementIntoViewById', () => {
5
+ afterEach(() => {
6
+ vi.restoreAllMocks();
7
+ });
8
+
9
+ test('no-op when container is null', () => {
10
+ expect(() => scrollElementIntoViewById(null, 'x')).not.toThrow();
11
+ });
12
+
13
+ test('calls scrollIntoView on matching descendant', () => {
14
+ const container = document.createElement('div');
15
+ const target = document.createElement('div');
16
+ target.id = 'opt-1';
17
+ container.appendChild(target);
18
+ const scrollIntoView = vi.fn();
19
+ target.scrollIntoView = scrollIntoView;
20
+
21
+ scrollElementIntoViewById(container, 'opt-1');
22
+
23
+ expect(scrollIntoView).toHaveBeenCalledWith({ block: 'nearest' });
24
+ });
25
+
26
+ test('escapes id for querySelector', () => {
27
+ const container = document.createElement('div');
28
+ const target = document.createElement('div');
29
+ target.id = 'bad:id';
30
+ container.appendChild(target);
31
+ const scrollIntoView = vi.fn();
32
+ target.scrollIntoView = scrollIntoView;
33
+
34
+ scrollElementIntoViewById(container, 'bad:id');
35
+
36
+ expect(scrollIntoView).toHaveBeenCalled();
37
+ });
38
+ });
@@ -0,0 +1,20 @@
1
+ function escapeCssIdentifier(value: string): string {
2
+ if (typeof CSS !== 'undefined' && typeof CSS.escape === 'function') {
3
+ return CSS.escape(value);
4
+ }
5
+ return value.replace(/[^a-zA-Z0-9_-]/g, ch => `\\${ch}`);
6
+ }
7
+
8
+ export function scrollElementIntoViewById(
9
+ container: Element | null | undefined,
10
+ elementId: string,
11
+ options: ScrollIntoViewOptions = { block: 'nearest' },
12
+ ): void {
13
+ if (!container) {
14
+ return;
15
+ }
16
+ const el = container.querySelector(`#${escapeCssIdentifier(elementId)}`);
17
+ if (el && typeof el.scrollIntoView === 'function') {
18
+ el.scrollIntoView(options);
19
+ }
20
+ }