@arbor-education/design-system.components 0.5.5 → 0.7.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 (341) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/dist/components/avatar/Avatar.d.ts +1 -1
  3. package/dist/components/avatar/Avatar.d.ts.map +1 -1
  4. package/dist/components/avatar/Avatar.js +1 -1
  5. package/dist/components/avatar/Avatar.js.map +1 -1
  6. package/dist/components/avatar/Avatar.stories.d.ts.map +1 -1
  7. package/dist/components/avatar/Avatar.stories.js +7 -0
  8. package/dist/components/avatar/Avatar.stories.js.map +1 -1
  9. package/dist/components/avatarGroup/AvatarGroup.d.ts +32 -0
  10. package/dist/components/avatarGroup/AvatarGroup.d.ts.map +1 -0
  11. package/dist/components/avatarGroup/AvatarGroup.js +37 -0
  12. package/dist/components/avatarGroup/AvatarGroup.js.map +1 -0
  13. package/dist/components/avatarGroup/AvatarGroup.stories.d.ts +14 -0
  14. package/dist/components/avatarGroup/AvatarGroup.stories.d.ts.map +1 -0
  15. package/dist/components/avatarGroup/AvatarGroup.stories.js +91 -0
  16. package/dist/components/avatarGroup/AvatarGroup.stories.js.map +1 -0
  17. package/dist/components/avatarGroup/AvatarGroup.test.d.ts +2 -0
  18. package/dist/components/avatarGroup/AvatarGroup.test.d.ts.map +1 -0
  19. package/dist/components/avatarGroup/AvatarGroup.test.js +155 -0
  20. package/dist/components/avatarGroup/AvatarGroup.test.js.map +1 -0
  21. package/dist/components/avatarGroup/avatarGroupOverflow.d.ts +8 -0
  22. package/dist/components/avatarGroup/avatarGroupOverflow.d.ts.map +1 -0
  23. package/dist/components/avatarGroup/avatarGroupOverflow.js +14 -0
  24. package/dist/components/avatarGroup/avatarGroupOverflow.js.map +1 -0
  25. package/dist/components/avatarGroup/collectAvatarGroupChildren.d.ts +4 -0
  26. package/dist/components/avatarGroup/collectAvatarGroupChildren.d.ts.map +1 -0
  27. package/dist/components/avatarGroup/collectAvatarGroupChildren.js +26 -0
  28. package/dist/components/avatarGroup/collectAvatarGroupChildren.js.map +1 -0
  29. package/dist/components/avatarGroup/useAvatarGroupItems.d.ts +9 -0
  30. package/dist/components/avatarGroup/useAvatarGroupItems.d.ts.map +1 -0
  31. package/dist/components/avatarGroup/useAvatarGroupItems.js +24 -0
  32. package/dist/components/avatarGroup/useAvatarGroupItems.js.map +1 -0
  33. package/dist/components/badge/Badge.d.ts +12 -0
  34. package/dist/components/badge/Badge.d.ts.map +1 -0
  35. package/dist/components/badge/Badge.js +6 -0
  36. package/dist/components/badge/Badge.js.map +1 -0
  37. package/dist/components/badge/Badge.stories.d.ts +10 -0
  38. package/dist/components/badge/Badge.stories.d.ts.map +1 -0
  39. package/dist/components/badge/Badge.stories.js +51 -0
  40. package/dist/components/badge/Badge.stories.js.map +1 -0
  41. package/dist/components/badge/Badge.test.d.ts +2 -0
  42. package/dist/components/badge/Badge.test.d.ts.map +1 -0
  43. package/dist/components/badge/Badge.test.js +23 -0
  44. package/dist/components/badge/Badge.test.js.map +1 -0
  45. package/dist/components/card/Card.js +1 -1
  46. package/dist/components/card/Card.js.map +1 -1
  47. package/dist/components/combobox/Combobox.d.ts +16 -0
  48. package/dist/components/combobox/Combobox.d.ts.map +1 -0
  49. package/dist/components/combobox/Combobox.js +195 -0
  50. package/dist/components/combobox/Combobox.js.map +1 -0
  51. package/dist/components/combobox/Combobox.stories.d.ts +24 -0
  52. package/dist/components/combobox/Combobox.stories.d.ts.map +1 -0
  53. package/dist/components/combobox/Combobox.stories.js +246 -0
  54. package/dist/components/combobox/Combobox.stories.js.map +1 -0
  55. package/dist/components/combobox/Combobox.test.d.ts +2 -0
  56. package/dist/components/combobox/Combobox.test.d.ts.map +1 -0
  57. package/dist/components/combobox/Combobox.test.js +798 -0
  58. package/dist/components/combobox/Combobox.test.js.map +1 -0
  59. package/dist/components/combobox/ComboboxButtonTrigger.d.ts +28 -0
  60. package/dist/components/combobox/ComboboxButtonTrigger.d.ts.map +1 -0
  61. package/dist/components/combobox/ComboboxButtonTrigger.js +64 -0
  62. package/dist/components/combobox/ComboboxButtonTrigger.js.map +1 -0
  63. package/dist/components/combobox/ComboboxListbox.d.ts +44 -0
  64. package/dist/components/combobox/ComboboxListbox.d.ts.map +1 -0
  65. package/dist/components/combobox/ComboboxListbox.js +37 -0
  66. package/dist/components/combobox/ComboboxListbox.js.map +1 -0
  67. package/dist/components/combobox/ComboboxOptionRow.d.ts +23 -0
  68. package/dist/components/combobox/ComboboxOptionRow.d.ts.map +1 -0
  69. package/dist/components/combobox/ComboboxOptionRow.js +27 -0
  70. package/dist/components/combobox/ComboboxOptionRow.js.map +1 -0
  71. package/dist/components/combobox/ComboboxTrigger.d.ts +35 -0
  72. package/dist/components/combobox/ComboboxTrigger.d.ts.map +1 -0
  73. package/dist/components/combobox/ComboboxTrigger.js +15 -0
  74. package/dist/components/combobox/ComboboxTrigger.js.map +1 -0
  75. package/dist/components/combobox/buildListboxDisplayOptions.d.ts +3 -0
  76. package/dist/components/combobox/buildListboxDisplayOptions.d.ts.map +1 -0
  77. package/dist/components/combobox/buildListboxDisplayOptions.js +13 -0
  78. package/dist/components/combobox/buildListboxDisplayOptions.js.map +1 -0
  79. package/dist/components/combobox/buildListboxDisplayOptions.test.d.ts +2 -0
  80. package/dist/components/combobox/buildListboxDisplayOptions.test.d.ts.map +1 -0
  81. package/dist/components/combobox/buildListboxDisplayOptions.test.js +22 -0
  82. package/dist/components/combobox/buildListboxDisplayOptions.test.js.map +1 -0
  83. package/dist/components/combobox/comboboxKeyboardTypes.d.ts +41 -0
  84. package/dist/components/combobox/comboboxKeyboardTypes.d.ts.map +1 -0
  85. package/dist/components/combobox/comboboxKeyboardTypes.js +2 -0
  86. package/dist/components/combobox/comboboxKeyboardTypes.js.map +1 -0
  87. package/dist/components/combobox/highlightLabel.d.ts +10 -0
  88. package/dist/components/combobox/highlightLabel.d.ts.map +1 -0
  89. package/dist/components/combobox/highlightLabel.js +18 -0
  90. package/dist/components/combobox/highlightLabel.js.map +1 -0
  91. package/dist/components/combobox/normaliseComboboxQuery.d.ts +2 -0
  92. package/dist/components/combobox/normaliseComboboxQuery.d.ts.map +1 -0
  93. package/dist/components/combobox/normaliseComboboxQuery.js +2 -0
  94. package/dist/components/combobox/normaliseComboboxQuery.js.map +1 -0
  95. package/dist/components/combobox/types.d.ts +46 -0
  96. package/dist/components/combobox/types.d.ts.map +1 -0
  97. package/dist/components/combobox/types.js +2 -0
  98. package/dist/components/combobox/types.js.map +1 -0
  99. package/dist/components/combobox/useChipSelection.d.ts +11 -0
  100. package/dist/components/combobox/useChipSelection.d.ts.map +1 -0
  101. package/dist/components/combobox/useChipSelection.js +35 -0
  102. package/dist/components/combobox/useChipSelection.js.map +1 -0
  103. package/dist/components/combobox/useComboboxChipKeyboard.d.ts +3 -0
  104. package/dist/components/combobox/useComboboxChipKeyboard.d.ts.map +1 -0
  105. package/dist/components/combobox/useComboboxChipKeyboard.js +103 -0
  106. package/dist/components/combobox/useComboboxChipKeyboard.js.map +1 -0
  107. package/dist/components/combobox/useComboboxChipKeyboard.test.d.ts +2 -0
  108. package/dist/components/combobox/useComboboxChipKeyboard.test.d.ts.map +1 -0
  109. package/dist/components/combobox/useComboboxChipKeyboard.test.js +116 -0
  110. package/dist/components/combobox/useComboboxChipKeyboard.test.js.map +1 -0
  111. package/dist/components/combobox/useComboboxKeyboard.d.ts +4 -0
  112. package/dist/components/combobox/useComboboxKeyboard.d.ts.map +1 -0
  113. package/dist/components/combobox/useComboboxKeyboard.js +68 -0
  114. package/dist/components/combobox/useComboboxKeyboard.js.map +1 -0
  115. package/dist/components/combobox/useComboboxListboxDom.d.ts +11 -0
  116. package/dist/components/combobox/useComboboxListboxDom.d.ts.map +1 -0
  117. package/dist/components/combobox/useComboboxListboxDom.js +15 -0
  118. package/dist/components/combobox/useComboboxListboxDom.js.map +1 -0
  119. package/dist/components/combobox/useComboboxListboxKeyboard.d.ts +3 -0
  120. package/dist/components/combobox/useComboboxListboxKeyboard.d.ts.map +1 -0
  121. package/dist/components/combobox/useComboboxListboxKeyboard.js +143 -0
  122. package/dist/components/combobox/useComboboxListboxKeyboard.js.map +1 -0
  123. package/dist/components/combobox/useComboboxListboxKeyboard.test.d.ts +2 -0
  124. package/dist/components/combobox/useComboboxListboxKeyboard.test.d.ts.map +1 -0
  125. package/dist/components/combobox/useComboboxListboxKeyboard.test.js +152 -0
  126. package/dist/components/combobox/useComboboxListboxKeyboard.test.js.map +1 -0
  127. package/dist/components/combobox/useComboboxPopoverBehavior.d.ts +38 -0
  128. package/dist/components/combobox/useComboboxPopoverBehavior.d.ts.map +1 -0
  129. package/dist/components/combobox/useComboboxPopoverBehavior.js +104 -0
  130. package/dist/components/combobox/useComboboxPopoverBehavior.js.map +1 -0
  131. package/dist/components/combobox/useComboboxState.d.ts +27 -0
  132. package/dist/components/combobox/useComboboxState.d.ts.map +1 -0
  133. package/dist/components/combobox/useComboboxState.js +122 -0
  134. package/dist/components/combobox/useComboboxState.js.map +1 -0
  135. package/dist/components/combobox/useElementWidth.d.ts +2 -0
  136. package/dist/components/combobox/useElementWidth.d.ts.map +1 -0
  137. package/dist/components/combobox/useElementWidth.js +31 -0
  138. package/dist/components/combobox/useElementWidth.js.map +1 -0
  139. package/dist/components/combobox/useVisibleChips.d.ts +21 -0
  140. package/dist/components/combobox/useVisibleChips.d.ts.map +1 -0
  141. package/dist/components/combobox/useVisibleChips.js +59 -0
  142. package/dist/components/combobox/useVisibleChips.js.map +1 -0
  143. package/dist/components/combobox/useVisibleChips.test.d.ts +2 -0
  144. package/dist/components/combobox/useVisibleChips.test.d.ts.map +1 -0
  145. package/dist/components/combobox/useVisibleChips.test.js +81 -0
  146. package/dist/components/combobox/useVisibleChips.test.js.map +1 -0
  147. package/dist/components/dot/Dot.d.ts +8 -0
  148. package/dist/components/dot/Dot.d.ts.map +1 -0
  149. package/dist/components/dot/Dot.js +6 -0
  150. package/dist/components/dot/Dot.js.map +1 -0
  151. package/dist/components/dot/Dot.stories.d.ts +15 -0
  152. package/dist/components/dot/Dot.stories.d.ts.map +1 -0
  153. package/dist/components/dot/Dot.stories.js +25 -0
  154. package/dist/components/dot/Dot.stories.js.map +1 -0
  155. package/dist/components/dot/Dot.test.d.ts +2 -0
  156. package/dist/components/dot/Dot.test.d.ts.map +1 -0
  157. package/dist/components/dot/Dot.test.js +19 -0
  158. package/dist/components/dot/Dot.test.js.map +1 -0
  159. package/dist/components/formField/FormField.d.ts +8 -4
  160. package/dist/components/formField/FormField.d.ts.map +1 -1
  161. package/dist/components/formField/FormField.js +7 -6
  162. package/dist/components/formField/FormField.js.map +1 -1
  163. package/dist/components/formField/FormField.stories.d.ts +1 -0
  164. package/dist/components/formField/FormField.stories.d.ts.map +1 -1
  165. package/dist/components/formField/FormField.stories.js +13 -1
  166. package/dist/components/formField/FormField.stories.js.map +1 -1
  167. package/dist/components/formField/FormField.test.js +10 -0
  168. package/dist/components/formField/FormField.test.js.map +1 -1
  169. package/dist/components/icon/allowedIcons.d.ts +1 -0
  170. package/dist/components/icon/allowedIcons.d.ts.map +1 -1
  171. package/dist/components/icon/allowedIcons.js +2 -1
  172. package/dist/components/icon/allowedIcons.js.map +1 -1
  173. package/dist/components/progress/Progress.stories.d.ts +49 -49
  174. package/dist/components/singleUser/SingleUser.d.ts +15 -0
  175. package/dist/components/singleUser/SingleUser.d.ts.map +1 -0
  176. package/dist/components/singleUser/SingleUser.js +9 -0
  177. package/dist/components/singleUser/SingleUser.js.map +1 -0
  178. package/dist/components/singleUser/SingleUser.stories.d.ts +11 -0
  179. package/dist/components/singleUser/SingleUser.stories.d.ts.map +1 -0
  180. package/dist/components/singleUser/SingleUser.stories.js +52 -0
  181. package/dist/components/singleUser/SingleUser.stories.js.map +1 -0
  182. package/dist/components/singleUser/SingleUser.test.d.ts +2 -0
  183. package/dist/components/singleUser/SingleUser.test.d.ts.map +1 -0
  184. package/dist/components/singleUser/SingleUser.test.js +30 -0
  185. package/dist/components/singleUser/SingleUser.test.js.map +1 -0
  186. package/dist/components/table/Table.d.ts +1 -0
  187. package/dist/components/table/Table.d.ts.map +1 -1
  188. package/dist/components/table/Table.js +2 -0
  189. package/dist/components/table/Table.js.map +1 -1
  190. package/dist/components/table/Table.stories.d.ts.map +1 -1
  191. package/dist/components/table/Table.stories.js +447 -77
  192. package/dist/components/table/Table.stories.js.map +1 -1
  193. package/dist/components/table/Table.test.js +1 -1
  194. package/dist/components/table/Table.test.js.map +1 -1
  195. package/dist/components/table/TableSettingsDropdown.d.ts.map +1 -0
  196. package/dist/components/table/{pagination/TableSettingsDropdown.js → TableSettingsDropdown.js} +6 -6
  197. package/dist/components/table/TableSettingsDropdown.js.map +1 -0
  198. package/dist/components/table/cellRenderers/SelectDropdownCellRenderer.d.ts +2 -5
  199. package/dist/components/table/cellRenderers/SelectDropdownCellRenderer.d.ts.map +1 -1
  200. package/dist/components/table/cellRenderers/SelectDropdownCellRenderer.js +7 -5
  201. package/dist/components/table/cellRenderers/SelectDropdownCellRenderer.js.map +1 -1
  202. package/dist/components/tabs/TabsItem.stories.d.ts +2 -2
  203. package/dist/components/tag/Tag.d.ts +9 -6
  204. package/dist/components/tag/Tag.d.ts.map +1 -1
  205. package/dist/components/tag/Tag.js +8 -2
  206. package/dist/components/tag/Tag.js.map +1 -1
  207. package/dist/components/tag/Tag.stories.d.ts +11 -6
  208. package/dist/components/tag/Tag.stories.d.ts.map +1 -1
  209. package/dist/components/tag/Tag.stories.js +68 -4
  210. package/dist/components/tag/Tag.stories.js.map +1 -1
  211. package/dist/components/tag/Tag.test.js +86 -50
  212. package/dist/components/tag/Tag.test.js.map +1 -1
  213. package/dist/components/toggle/Toggle.d.ts +3 -0
  214. package/dist/components/toggle/Toggle.d.ts.map +1 -0
  215. package/dist/components/toggle/Toggle.js +8 -0
  216. package/dist/components/toggle/Toggle.js.map +1 -0
  217. package/dist/components/toggle/Toggle.stories.d.ts +97 -0
  218. package/dist/components/toggle/Toggle.stories.d.ts.map +1 -0
  219. package/dist/components/toggle/Toggle.stories.js +186 -0
  220. package/dist/components/toggle/Toggle.stories.js.map +1 -0
  221. package/dist/components/toggle/Toggle.test.d.ts +2 -0
  222. package/dist/components/toggle/Toggle.test.d.ts.map +1 -0
  223. package/dist/components/toggle/Toggle.test.js +58 -0
  224. package/dist/components/toggle/Toggle.test.js.map +1 -0
  225. package/dist/index.css +689 -25
  226. package/dist/index.css.map +1 -1
  227. package/dist/index.d.ts +34 -24
  228. package/dist/index.d.ts.map +1 -1
  229. package/dist/index.js +30 -24
  230. package/dist/index.js.map +1 -1
  231. package/dist/mocks/comboboxStoryOptions.d.ts +5 -0
  232. package/dist/mocks/comboboxStoryOptions.d.ts.map +1 -0
  233. package/dist/mocks/comboboxStoryOptions.js +22 -0
  234. package/dist/mocks/comboboxStoryOptions.js.map +1 -0
  235. package/dist/utils/isSelectAllChord.d.ts +5 -0
  236. package/dist/utils/isSelectAllChord.d.ts.map +1 -0
  237. package/dist/utils/isSelectAllChord.js +7 -0
  238. package/dist/utils/isSelectAllChord.js.map +1 -0
  239. package/dist/utils/isSelectAllChord.test.d.ts +2 -0
  240. package/dist/utils/isSelectAllChord.test.d.ts.map +1 -0
  241. package/dist/utils/isSelectAllChord.test.js +19 -0
  242. package/dist/utils/isSelectAllChord.test.js.map +1 -0
  243. package/dist/utils/nextCircularIndex.d.ts +3 -0
  244. package/dist/utils/nextCircularIndex.d.ts.map +1 -0
  245. package/dist/utils/nextCircularIndex.js +10 -0
  246. package/dist/utils/nextCircularIndex.js.map +1 -0
  247. package/dist/utils/nextCircularIndex.test.d.ts +2 -0
  248. package/dist/utils/nextCircularIndex.test.d.ts.map +1 -0
  249. package/dist/utils/nextCircularIndex.test.js +23 -0
  250. package/dist/utils/nextCircularIndex.test.js.map +1 -0
  251. package/dist/utils/scrollElementIntoViewById.d.ts +2 -0
  252. package/dist/utils/scrollElementIntoViewById.d.ts.map +1 -0
  253. package/dist/utils/scrollElementIntoViewById.js +16 -0
  254. package/dist/utils/scrollElementIntoViewById.js.map +1 -0
  255. package/dist/utils/scrollElementIntoViewById.test.d.ts +2 -0
  256. package/dist/utils/scrollElementIntoViewById.test.d.ts.map +1 -0
  257. package/dist/utils/scrollElementIntoViewById.test.js +31 -0
  258. package/dist/utils/scrollElementIntoViewById.test.js.map +1 -0
  259. package/package.json +1 -1
  260. package/src/components/avatar/Avatar.stories.tsx +8 -0
  261. package/src/components/avatar/Avatar.tsx +3 -3
  262. package/src/components/avatarGroup/AvatarGroup.stories.tsx +218 -0
  263. package/src/components/avatarGroup/AvatarGroup.test.tsx +298 -0
  264. package/src/components/avatarGroup/AvatarGroup.tsx +127 -0
  265. package/src/components/avatarGroup/avatarGroup.scss +31 -0
  266. package/src/components/avatarGroup/avatarGroupOverflow.ts +29 -0
  267. package/src/components/avatarGroup/collectAvatarGroupChildren.ts +30 -0
  268. package/src/components/avatarGroup/useAvatarGroupItems.ts +39 -0
  269. package/src/components/badge/Badge.stories.tsx +74 -0
  270. package/src/components/badge/Badge.test.tsx +28 -0
  271. package/src/components/badge/Badge.tsx +35 -0
  272. package/src/components/badge/badge.scss +86 -0
  273. package/src/components/card/Card.tsx +1 -1
  274. package/src/components/combobox/Combobox.stories.tsx +340 -0
  275. package/src/components/combobox/Combobox.test.tsx +1160 -0
  276. package/src/components/combobox/Combobox.tsx +434 -0
  277. package/src/components/combobox/ComboboxButtonTrigger.tsx +195 -0
  278. package/src/components/combobox/ComboboxListbox.tsx +224 -0
  279. package/src/components/combobox/ComboboxOptionRow.tsx +128 -0
  280. package/src/components/combobox/ComboboxTrigger.tsx +134 -0
  281. package/src/components/combobox/buildListboxDisplayOptions.test.ts +24 -0
  282. package/src/components/combobox/buildListboxDisplayOptions.ts +12 -0
  283. package/src/components/combobox/combobox.scss +390 -0
  284. package/src/components/combobox/comboboxKeyboardTypes.ts +45 -0
  285. package/src/components/combobox/highlightLabel.tsx +42 -0
  286. package/src/components/combobox/normaliseComboboxQuery.ts +1 -0
  287. package/src/components/combobox/types.ts +53 -0
  288. package/src/components/combobox/useChipSelection.ts +53 -0
  289. package/src/components/combobox/useComboboxChipKeyboard.test.tsx +141 -0
  290. package/src/components/combobox/useComboboxChipKeyboard.ts +121 -0
  291. package/src/components/combobox/useComboboxKeyboard.ts +108 -0
  292. package/src/components/combobox/useComboboxListboxDom.ts +36 -0
  293. package/src/components/combobox/useComboboxListboxKeyboard.test.tsx +186 -0
  294. package/src/components/combobox/useComboboxListboxKeyboard.ts +172 -0
  295. package/src/components/combobox/useComboboxPopoverBehavior.ts +179 -0
  296. package/src/components/combobox/useComboboxState.ts +232 -0
  297. package/src/components/combobox/useElementWidth.ts +40 -0
  298. package/src/components/combobox/useVisibleChips.test.tsx +91 -0
  299. package/src/components/combobox/useVisibleChips.ts +100 -0
  300. package/src/components/dot/Dot.stories.tsx +41 -0
  301. package/src/components/dot/Dot.test.tsx +21 -0
  302. package/src/components/dot/Dot.tsx +18 -0
  303. package/src/components/dot/dot.scss +35 -0
  304. package/src/components/formField/FormField.stories.tsx +30 -1
  305. package/src/components/formField/FormField.test.tsx +20 -0
  306. package/src/components/formField/FormField.tsx +11 -5
  307. package/src/components/formField/inputs/number/numberInput.scss +12 -4
  308. package/src/components/icon/allowedIcons.tsx +2 -0
  309. package/src/components/pill/pill.scss +4 -6
  310. package/src/components/singleUser/SingleUser.stories.tsx +63 -0
  311. package/src/components/singleUser/SingleUser.test.tsx +61 -0
  312. package/src/components/singleUser/SingleUser.tsx +45 -0
  313. package/src/components/singleUser/singleUser.scss +14 -0
  314. package/src/components/table/Table.stories.tsx +678 -265
  315. package/src/components/table/Table.test.tsx +1 -1
  316. package/src/components/table/Table.tsx +2 -0
  317. package/src/components/table/{pagination/TableSettingsDropdown.tsx → TableSettingsDropdown.tsx} +1 -1
  318. package/src/components/table/cellRenderers/SelectDropdownCellRenderer.tsx +42 -12
  319. package/src/components/tag/Tag.stories.tsx +88 -6
  320. package/src/components/tag/Tag.test.tsx +110 -44
  321. package/src/components/tag/Tag.tsx +38 -14
  322. package/src/components/tag/tag.scss +45 -30
  323. package/src/components/toggle/Toggle.stories.tsx +239 -0
  324. package/src/components/toggle/Toggle.test.tsx +66 -0
  325. package/src/components/toggle/Toggle.tsx +12 -0
  326. package/src/components/toggle/toggle.scss +126 -0
  327. package/src/global.scss +1 -1
  328. package/src/index.scss +6 -0
  329. package/src/index.ts +47 -24
  330. package/src/mocks/comboboxStoryOptions.ts +25 -0
  331. package/src/tokens.scss +35 -4
  332. package/src/utils/isSelectAllChord.test.ts +24 -0
  333. package/src/utils/isSelectAllChord.ts +8 -0
  334. package/src/utils/nextCircularIndex.test.ts +26 -0
  335. package/src/utils/nextCircularIndex.ts +15 -0
  336. package/src/utils/scrollElementIntoViewById.test.ts +38 -0
  337. package/src/utils/scrollElementIntoViewById.ts +20 -0
  338. package/tokens/json/Arbor.json +3816 -3680
  339. package/dist/components/table/pagination/TableSettingsDropdown.d.ts.map +0 -1
  340. package/dist/components/table/pagination/TableSettingsDropdown.js.map +0 -1
  341. /package/dist/components/table/{pagination/TableSettingsDropdown.d.ts → TableSettingsDropdown.d.ts} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,44 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.7.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#135](https://github.com/arbor-education/design-system.components/pull/135) [`d02b004`](https://github.com/arbor-education/design-system.components/commit/d02b00496098a69abf0ebdbf79ddd2efd8b59591) Thanks [@danielpeplow](https://github.com/danielpeplow)! - MIS-66716 - Combobox initial build and Tag/Dot API updates
8
+
9
+ Breaking changes:
10
+
11
+ - `Tag` no longer accepts `text`; pass the label as `children`.
12
+ - `Tag` no longer accepts `dotColour`; use `slotStart={<Dot colour="..." />}` instead.
13
+ - `DotColour` should be imported from the package entrypoint or `Components/dot/Dot`, not from `Tag`.
14
+
15
+ - [#138](https://github.com/arbor-education/design-system.components/pull/138) [`fbda9be`](https://github.com/arbor-education/design-system.components/commit/fbda9be94f236ec1f8849c9502c502a5143b1ea5) Thanks [@danielpeplow](https://github.com/danielpeplow)! - MIS-66719 - Initial build of single user
16
+
17
+ **Avatar (consumer-visible DOM, minor release)**
18
+
19
+ - Root element is now a `<span>` instead of a `<div>` so the component can nest correctly in phrasing-only contexts (for example inside `SingleUser`).
20
+ - **Styling:** target `.ds-avatar`; selectors such as `div.ds-avatar` will no longer match.
21
+ - **Snapshots:** tests that assert the root tag name may need updating.
22
+ - Documented for consumers; released as a **minor** per team policy.
23
+
24
+ ### Patch Changes
25
+
26
+ - [#149](https://github.com/arbor-education/design-system.components/pull/149) [`7c4abca`](https://github.com/arbor-education/design-system.components/commit/7c4abcab8e82f0ee48b35565373432c8bd160584) Thanks [@AmeeMorris](https://github.com/AmeeMorris)! - MIS-69108 toggle component
27
+
28
+ ## 0.6.0
29
+
30
+ ### Minor Changes
31
+
32
+ - [#137](https://github.com/arbor-education/design-system.components/pull/137) [`8c3b2af`](https://github.com/arbor-education/design-system.components/commit/8c3b2af56ed440f42b0ae61c6364733af95ca4df) Thanks [@danielpeplow](https://github.com/danielpeplow)! - MIS-66718 - Initial build of AvatarGroup
33
+
34
+ - Removed collecting avatars that are not mounted in the DOM; while keeping the same exposed a11y behaviour (visible avatars plus overflow count).
35
+
36
+ ### Patch Changes
37
+
38
+ - [#143](https://github.com/arbor-education/design-system.components/pull/143) [`f02430e`](https://github.com/arbor-education/design-system.components/commit/f02430e74b51f0d10012b33cb39abc0c5680fd26) Thanks [@rickbairstow](https://github.com/rickbairstow)! - MIS-69938 Expose the TableSettingsDropdown component for use within Tables
39
+
40
+ - [#141](https://github.com/arbor-education/design-system.components/pull/141) [`6488a86`](https://github.com/arbor-education/design-system.components/commit/6488a8649bf024d2482de646b577b0589781866b) Thanks [@AmeeMorris](https://github.com/AmeeMorris)! - MIS-69652 add invalid state and example to story for SelectDropdownCellRenderers
41
+
3
42
  ## 0.5.5
4
43
 
5
44
  ### Patch Changes
@@ -6,6 +6,6 @@ export type AvatarProps = {
6
6
  alt?: string;
7
7
  initials?: string;
8
8
  className?: string;
9
- } & React.HTMLAttributes<HTMLDivElement>;
9
+ } & React.HTMLAttributes<HTMLSpanElement>;
10
10
  export declare const Avatar: (props: AvatarProps) => import("react/jsx-runtime").JSX.Element;
11
11
  //# sourceMappingURL=Avatar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../src/components/avatar/Avatar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,aAAa,CAAC;AAEtE,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;AAEzC,eAAO,MAAM,MAAM,GAAI,OAAO,WAAW,4CAsDxC,CAAC"}
1
+ {"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../src/components/avatar/Avatar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,aAAa,CAAC;AAEtE,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;AAE1C,eAAO,MAAM,MAAM,GAAI,OAAO,WAAW,4CAsDxC,CAAC"}
@@ -12,6 +12,6 @@ export const Avatar = (props) => {
12
12
  }
13
13
  return (_jsx("span", { className: "ds-avatar__placeholder", "aria-label": alt || 'User avatar', children: _jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", className: "ds-avatar__placeholder-icon", children: _jsx("path", { d: "M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z" }) }) }));
14
14
  };
15
- return (_jsx("div", { className: classNames('ds-avatar', `ds-avatar--${size}`, className), ...rest, children: renderContent() }));
15
+ return (_jsx("span", { className: classNames('ds-avatar', `ds-avatar--${size}`, className), ...rest, children: renderContent() }));
16
16
  };
17
17
  //# sourceMappingURL=Avatar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Avatar.js","sourceRoot":"","sources":["../../../src/components/avatar/Avatar.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAY1B,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,KAAkB,EAAE,EAAE;IAC3C,MAAM,EACJ,IAAI,GAAG,QAAQ,EACf,GAAG,EACH,GAAG,GAAG,EAAE,EACR,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,GAAG,KAAK,CAAC;IAEV,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,IAAI,GAAG,EAAE,CAAC;YACR,OAAO,CACL,cACE,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,GAAG,EACR,SAAS,EAAC,kBAAkB,GAC5B,CACH,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CACL,eAAM,SAAS,EAAC,qBAAqB,gBAAa,GAAG,YAClD,QAAQ,GACJ,CACR,CAAC;QACJ,CAAC;QAED,OAAO,CACL,eAAM,SAAS,EAAC,wBAAwB,gBAAa,GAAG,IAAI,aAAa,YACvE,cACE,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,cAAc,EACnB,SAAS,EAAC,6BAA6B,YAEvC,eAAM,CAAC,EAAC,+GAA+G,GAAG,GACtH,GACD,CACR,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,CACL,cACE,SAAS,EAAE,UAAU,CACnB,WAAW,EACX,cAAc,IAAI,EAAE,EACpB,SAAS,CACV,KACG,IAAI,YAEP,aAAa,EAAE,GACZ,CACP,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"Avatar.js","sourceRoot":"","sources":["../../../src/components/avatar/Avatar.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAY1B,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,KAAkB,EAAE,EAAE;IAC3C,MAAM,EACJ,IAAI,GAAG,QAAQ,EACf,GAAG,EACH,GAAG,GAAG,EAAE,EACR,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,GAAG,KAAK,CAAC;IAEV,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,IAAI,GAAG,EAAE,CAAC;YACR,OAAO,CACL,cACE,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,GAAG,EACR,SAAS,EAAC,kBAAkB,GAC5B,CACH,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CACL,eAAM,SAAS,EAAC,qBAAqB,gBAAa,GAAG,YAClD,QAAQ,GACJ,CACR,CAAC;QACJ,CAAC;QAED,OAAO,CACL,eAAM,SAAS,EAAC,wBAAwB,gBAAa,GAAG,IAAI,aAAa,YACvE,cACE,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,cAAc,EACnB,SAAS,EAAC,6BAA6B,YAEvC,eAAM,CAAC,EAAC,+GAA+G,GAAG,GACtH,GACD,CACR,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,CACL,eACE,SAAS,EAAE,UAAU,CACnB,WAAW,EACX,cAAc,IAAI,EAAE,EACpB,SAAS,CACV,KACG,IAAI,YAEP,aAAa,EAAE,GACX,CACR,CAAC;AACJ,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Avatar.stories.d.ts","sourceRoot":"","sources":["../../../src/components/avatar/Avatar.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,MAAM,CAU7B,CAAC;AAEF,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,MAAM,CAAC,CAAC;AAErC,eAAO,MAAM,OAAO,EAAE,KAMrB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAM1B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAKzB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAMnB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAMpB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAMnB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAMxB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAStB,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"Avatar.stories.d.ts","sourceRoot":"","sources":["../../../src/components/avatar/Avatar.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,MAAM,CAkB7B,CAAC;AAEF,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,MAAM,CAAC,CAAC;AAErC,eAAO,MAAM,OAAO,EAAE,KAMrB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAM1B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAKzB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAMnB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAMpB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAMnB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAMxB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAStB,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -4,6 +4,13 @@ const meta = {
4
4
  title: 'Components/Avatar',
5
5
  component: Avatar,
6
6
  tags: ['autodocs'],
7
+ parameters: {
8
+ docs: {
9
+ description: {
10
+ component: 'Renders a user avatar as a `<span>`',
11
+ },
12
+ },
13
+ },
7
14
  argTypes: {
8
15
  size: {
9
16
  control: 'select',
@@ -1 +1 @@
1
- {"version":3,"file":"Avatar.stories.js","sourceRoot":"","sources":["../../../src/components/avatar/Avatar.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,MAAM,IAAI,GAAwB;IAChC,KAAK,EAAE,mBAAmB;IAC1B,SAAS,EAAE,MAAM;IACjB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,OAAO,EAAE,QAAQ;YACjB,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC;SACrD;KACF;CACF,CAAC;AAIF,MAAM,CAAC,MAAM,OAAO,GAAU;IAC5B,IAAI,EAAE;QACJ,IAAI,EAAE,QAAQ;QACd,GAAG,EAAE,iCAAiC;QACtC,GAAG,EAAE,aAAa;KACnB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAU;IACjC,IAAI,EAAE;QACJ,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;QACd,GAAG,EAAE,sBAAsB;KAC5B;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAU;IAChC,IAAI,EAAE;QACJ,IAAI,EAAE,QAAQ;QACd,GAAG,EAAE,aAAa;KACnB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAU;IAC1B,IAAI,EAAE;QACJ,IAAI,EAAE,OAAO;QACb,GAAG,EAAE,iCAAiC;QACtC,GAAG,EAAE,aAAa;KACnB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAU;IAC3B,IAAI,EAAE;QACJ,IAAI,EAAE,QAAQ;QACd,GAAG,EAAE,iCAAiC;QACtC,GAAG,EAAE,aAAa;KACnB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAU;IAC1B,IAAI,EAAE;QACJ,IAAI,EAAE,OAAO;QACb,GAAG,EAAE,iCAAiC;QACtC,GAAG,EAAE,aAAa;KACnB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAU;IAC/B,IAAI,EAAE;QACJ,IAAI,EAAE,aAAa;QACnB,GAAG,EAAE,iCAAiC;QACtC,GAAG,EAAE,aAAa;KACnB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAU;IAC7B,MAAM,EAAE,GAAG,EAAE,CAAC,CACZ,eAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,aAChE,KAAC,MAAM,IAAC,IAAI,EAAC,OAAO,EAAC,GAAG,EAAC,iCAAiC,EAAC,GAAG,EAAC,cAAc,GAAG,EAChF,KAAC,MAAM,IAAC,IAAI,EAAC,QAAQ,EAAC,GAAG,EAAC,iCAAiC,EAAC,GAAG,EAAC,eAAe,GAAG,EAClF,KAAC,MAAM,IAAC,IAAI,EAAC,OAAO,EAAC,GAAG,EAAC,iCAAiC,EAAC,GAAG,EAAC,cAAc,GAAG,EAChF,KAAC,MAAM,IAAC,IAAI,EAAC,aAAa,EAAC,GAAG,EAAC,iCAAiC,EAAC,GAAG,EAAC,oBAAoB,GAAG,IACxF,CACP;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"Avatar.stories.js","sourceRoot":"","sources":["../../../src/components/avatar/Avatar.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,MAAM,IAAI,GAAwB;IAChC,KAAK,EAAE,mBAAmB;IAC1B,SAAS,EAAE,MAAM;IACjB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,WAAW,EAAE;gBACX,SAAS,EACP,qCAAqC;aACxC;SACF;KACF;IACD,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,OAAO,EAAE,QAAQ;YACjB,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC;SACrD;KACF;CACF,CAAC;AAIF,MAAM,CAAC,MAAM,OAAO,GAAU;IAC5B,IAAI,EAAE;QACJ,IAAI,EAAE,QAAQ;QACd,GAAG,EAAE,iCAAiC;QACtC,GAAG,EAAE,aAAa;KACnB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAU;IACjC,IAAI,EAAE;QACJ,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;QACd,GAAG,EAAE,sBAAsB;KAC5B;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAU;IAChC,IAAI,EAAE;QACJ,IAAI,EAAE,QAAQ;QACd,GAAG,EAAE,aAAa;KACnB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAU;IAC1B,IAAI,EAAE;QACJ,IAAI,EAAE,OAAO;QACb,GAAG,EAAE,iCAAiC;QACtC,GAAG,EAAE,aAAa;KACnB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAU;IAC3B,IAAI,EAAE;QACJ,IAAI,EAAE,QAAQ;QACd,GAAG,EAAE,iCAAiC;QACtC,GAAG,EAAE,aAAa;KACnB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAU;IAC1B,IAAI,EAAE;QACJ,IAAI,EAAE,OAAO;QACb,GAAG,EAAE,iCAAiC;QACtC,GAAG,EAAE,aAAa;KACnB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAU;IAC/B,IAAI,EAAE;QACJ,IAAI,EAAE,aAAa;QACnB,GAAG,EAAE,iCAAiC;QACtC,GAAG,EAAE,aAAa;KACnB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAU;IAC7B,MAAM,EAAE,GAAG,EAAE,CAAC,CACZ,eAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,aAChE,KAAC,MAAM,IAAC,IAAI,EAAC,OAAO,EAAC,GAAG,EAAC,iCAAiC,EAAC,GAAG,EAAC,cAAc,GAAG,EAChF,KAAC,MAAM,IAAC,IAAI,EAAC,QAAQ,EAAC,GAAG,EAAC,iCAAiC,EAAC,GAAG,EAAC,eAAe,GAAG,EAClF,KAAC,MAAM,IAAC,IAAI,EAAC,OAAO,EAAC,GAAG,EAAC,iCAAiC,EAAC,GAAG,EAAC,cAAc,GAAG,EAChF,KAAC,MAAM,IAAC,IAAI,EAAC,aAAa,EAAC,GAAG,EAAC,iCAAiC,EAAC,GAAG,EAAC,oBAAoB,GAAG,IACxF,CACP;CACF,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { type AvatarSize } from '../avatar/Avatar';
2
+ import React from 'react';
3
+ import { type AvatarGroupListOrder } from './avatarGroupOverflow';
4
+ import { type AvatarGroupItem } from './useAvatarGroupItems';
5
+ export type { AvatarGroupItem, AvatarGroupListOrder };
6
+ export type AvatarGroupOverflowCountProps = {
7
+ count: number;
8
+ overflowCountLabel?: string | ((count: number) => string);
9
+ className?: string;
10
+ presentAllUpdatesToScreenReader?: boolean;
11
+ };
12
+ declare function AvatarGroupOverflowCount({ count, overflowCountLabel, className, presentAllUpdatesToScreenReader, }: AvatarGroupOverflowCountProps): import("react/jsx-runtime").JSX.Element;
13
+ type AvatarGroupSharedProps = {
14
+ showMaxItems?: number;
15
+ listOrder?: AvatarGroupListOrder;
16
+ label?: string;
17
+ overflowCountLabel?: string | ((count: number) => string);
18
+ presentAllUpdatesToScreenReader?: boolean;
19
+ size?: AvatarSize;
20
+ className?: string;
21
+ };
22
+ export type AvatarGroupProps = AvatarGroupSharedProps & ({
23
+ items: readonly AvatarGroupItem[];
24
+ children?: undefined;
25
+ } | {
26
+ children: React.ReactNode;
27
+ items?: undefined;
28
+ }) & Omit<React.HTMLAttributes<HTMLUListElement>, 'children'>;
29
+ export declare const AvatarGroup: React.ForwardRefExoticComponent<AvatarGroupProps & React.RefAttributes<HTMLUListElement>> & {
30
+ OverflowCount: typeof AvatarGroupOverflowCount;
31
+ };
32
+ //# sourceMappingURL=AvatarGroup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AvatarGroup.d.ts","sourceRoot":"","sources":["../../../src/components/avatarGroup/AvatarGroup.tsx"],"names":[],"mappings":"AACA,OAAO,EAAU,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAgC,KAAK,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAEhG,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAElF,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,CAAC;AAEtD,MAAM,MAAM,6BAA6B,GAAG;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+BAA+B,CAAC,EAAE,OAAO,CAAC;CAC3C,CAAC;AAeF,iBAAS,wBAAwB,CAAC,EAChC,KAAK,EACL,kBAAkB,EAClB,SAAS,EACT,+BAAuC,GACxC,EAAE,6BAA6B,2CAa/B;AAED,KAAK,sBAAsB,GAAG;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;IAC1D,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAC1C,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,sBAAsB,GACjD,CACE;IAAE,KAAK,EAAE,SAAS,eAAe,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,GAC3D;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,CAAA;CAAE,CACnD,GACC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAAE,UAAU,CAAC,CAAC;AA4D7D,eAAO,MAAM,WAAW;;CAEtB,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import classNames from 'classnames';
3
+ import { Avatar } from '../avatar/Avatar';
4
+ import React from 'react';
5
+ import { partitionAvatarGroupOverflow } from './avatarGroupOverflow';
6
+ import { collectAvatarsFromChildren } from './collectAvatarGroupChildren';
7
+ import { useAvatarGroupItems } from './useAvatarGroupItems';
8
+ function resolveOverflowAriaLabel(count, overflowCountLabel) {
9
+ if (typeof overflowCountLabel === 'function') {
10
+ return overflowCountLabel(count);
11
+ }
12
+ if (typeof overflowCountLabel === 'string') {
13
+ return overflowCountLabel;
14
+ }
15
+ return `plus ${count} more`;
16
+ }
17
+ function AvatarGroupOverflowCount({ count, overflowCountLabel, className, presentAllUpdatesToScreenReader = false, }) {
18
+ return (_jsxs("span", { role: "status", className: classNames('ds-avatar-group__overflow-count', className), "aria-label": resolveOverflowAriaLabel(count, overflowCountLabel), "aria-live": presentAllUpdatesToScreenReader ? 'polite' : undefined, "aria-atomic": presentAllUpdatesToScreenReader ? 'true' : undefined, children: ["+", count] }));
19
+ }
20
+ const AvatarGroupRoot = React.forwardRef(({ items, children, size: groupSize, showMaxItems, listOrder = 'ascending', label, overflowCountLabel, presentAllUpdatesToScreenReader = false, className, ...rest }, ref) => {
21
+ const sourceItems = React.useMemo(() => {
22
+ if (children != null) {
23
+ return collectAvatarsFromChildren(children);
24
+ }
25
+ return items ?? [];
26
+ }, [children, items]);
27
+ const normalized = useAvatarGroupItems(sourceItems, groupSize);
28
+ const { visibleItems, overflowCount } = React.useMemo(() => partitionAvatarGroupOverflow(normalized, showMaxItems, listOrder), [normalized, showMaxItems, listOrder]);
29
+ return (_jsxs("ul", { ref: ref, role: "list", className: classNames('ds-avatar-group', className), "aria-label": label, ...rest, children: [visibleItems.map(entry => (_jsx("li", { className: "ds-avatar-group__item", children: _jsx(Avatar, { ...entry.avatarProps }) }, entry.key))), overflowCount > 0
30
+ ? (_jsx("li", { className: "ds-avatar-group__overflow", children: _jsx(AvatarGroupOverflowCount, { count: overflowCount, overflowCountLabel: overflowCountLabel, presentAllUpdatesToScreenReader: presentAllUpdatesToScreenReader }) }))
31
+ : null] }));
32
+ });
33
+ AvatarGroupRoot.displayName = 'AvatarGroup';
34
+ export const AvatarGroup = Object.assign(AvatarGroupRoot, {
35
+ OverflowCount: AvatarGroupOverflowCount,
36
+ });
37
+ //# sourceMappingURL=AvatarGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AvatarGroup.js","sourceRoot":"","sources":["../../../src/components/avatarGroup/AvatarGroup.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ import { AvatarGroup } from './AvatarGroup';
3
+ declare const meta: Meta<typeof AvatarGroup>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof AvatarGroup>;
6
+ export declare const FromProps: Story;
7
+ export declare const SizeOverridesPerAvatar: Story;
8
+ export declare const ComposableChildren: Story;
9
+ export declare const ComposableChildrenDescending: Story;
10
+ export declare const AscendingWithOverflow: Story;
11
+ export declare const DescendingWithOverflow: Story;
12
+ export declare const CustomOverflowLabel: Story;
13
+ export declare const AnnouncedOverflowUpdates: Story;
14
+ //# sourceMappingURL=AvatarGroup.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AvatarGroup.stories.d.ts","sourceRoot":"","sources":["../../../src/components/avatarGroup/AvatarGroup.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,WAAW,CAIlC,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,WAAW,CAAC,CAAC;AAI1C,eAAO,MAAM,SAAS,EAAE,KAWvB,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,KA0BpC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,KA6ChC,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,KA+B1C,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,KAenC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,KAepC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,KAqBjC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,KAuBtC,CAAC"}
@@ -0,0 +1,91 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Avatar } from '../avatar/Avatar';
3
+ import { AvatarGroup } from './AvatarGroup';
4
+ const meta = {
5
+ title: 'Components/AvatarGroup',
6
+ component: AvatarGroup,
7
+ tags: ['autodocs'],
8
+ };
9
+ export default meta;
10
+ const sampleSrc = (id) => `https://i.pravatar.cc/150?img=${id}`;
11
+ export const FromProps = {
12
+ render: () => (_jsx(AvatarGroup, { label: "Team from props", items: [
13
+ { src: sampleSrc(1), alt: 'Member 1' },
14
+ { src: sampleSrc(2), alt: 'Member 2' },
15
+ { initials: 'CM', alt: 'Chris Montgomery' },
16
+ ] })),
17
+ };
18
+ export const SizeOverridesPerAvatar = {
19
+ name: 'Size Override',
20
+ render: () => (_jsx(AvatarGroup, { label: "All medium even though children are set as small", size: "medium", showMaxItems: 4, items: [
21
+ _jsx(Avatar, { size: "small", initials: "S1", alt: "Small 1" }, "1"),
22
+ _jsx(Avatar, { size: "small", initials: "S2", alt: "Small 2" }, "2"),
23
+ { size: 'small', initials: 'S3', alt: 'Small 3' },
24
+ { size: 'small', initials: 'S4', alt: 'Small 4' },
25
+ { size: 'small', initials: 'S5', alt: 'Small 5' },
26
+ ] })),
27
+ };
28
+ export const ComposableChildren = {
29
+ name: 'Composable Children',
30
+ parameters: {
31
+ docs: {
32
+ description: {
33
+ story: 'Pass `<Avatar />` nodes as `children`.',
34
+ },
35
+ },
36
+ },
37
+ render: () => (_jsxs(AvatarGroup, { label: "Team (children API)", showMaxItems: 3, listOrder: "ascending", children: [_jsxs(_Fragment, { children: [_jsx(Avatar, { size: "small", initials: "A", alt: "User A" }), _jsx(Avatar, { size: "small", initials: "B", alt: "User B" })] }), _jsx(Avatar, { size: "small", initials: "C", alt: "User C" }), _jsx(Avatar, { size: "small", initials: "D", alt: "User D" }), _jsx(Avatar, { size: "small", initials: "E", alt: "User E" })] })),
38
+ };
39
+ export const ComposableChildrenDescending = {
40
+ name: 'Composed + Descending Order',
41
+ render: () => (_jsxs(AvatarGroup, { label: "Last three visible", size: "medium", showMaxItems: 3, listOrder: "descending", children: [_jsx(Avatar, { initials: "A", alt: "User A" }), _jsx(Avatar, { initials: "B", alt: "User B" }), _jsx(Avatar, { initials: "C", alt: "User C" }), _jsx(Avatar, { initials: "D", alt: "User D" }), _jsx(Avatar, { initials: "E", alt: "User E" })] })),
42
+ };
43
+ export const AscendingWithOverflow = {
44
+ render: () => (_jsx(AvatarGroup, { label: "Ascending overflow", listOrder: "ascending", showMaxItems: 3, items: [
45
+ { initials: 'A', alt: 'User A' },
46
+ { initials: 'B', alt: 'User B' },
47
+ { initials: 'C', alt: 'User C' },
48
+ { initials: 'D', alt: 'User D' },
49
+ { initials: 'E', alt: 'User E' },
50
+ ] })),
51
+ };
52
+ export const DescendingWithOverflow = {
53
+ render: () => (_jsx(AvatarGroup, { label: "Descending overflow", listOrder: "descending", showMaxItems: 3, items: [
54
+ { initials: 'A', alt: 'User A' },
55
+ { initials: 'B', alt: 'User B' },
56
+ { initials: 'C', alt: 'User C' },
57
+ { initials: 'D', alt: 'User D' },
58
+ { initials: 'E', alt: 'User E' },
59
+ ] })),
60
+ };
61
+ export const CustomOverflowLabel = {
62
+ parameters: {
63
+ docs: {
64
+ description: {
65
+ story: 'Custom `overflowCountLabel` values replace the full screen-reader label for the overflow badge instead of appending to the visible `+N` text.',
66
+ },
67
+ },
68
+ },
69
+ render: () => (_jsx(AvatarGroup, { label: "Custom overflow copy", showMaxItems: 2, overflowCountLabel: n => `${n} more students`, items: [
70
+ { initials: 'J', alt: 'Jacob' },
71
+ { initials: 'E', alt: 'Edward' },
72
+ { initials: 'B', alt: 'Bella' },
73
+ ] })),
74
+ };
75
+ export const AnnouncedOverflowUpdates = {
76
+ name: 'Announced Overflow Updates',
77
+ parameters: {
78
+ docs: {
79
+ description: {
80
+ story: 'Enables polite live announcements for the built-in overflow badge. Overflow members are not rendered; only the count is shown.',
81
+ },
82
+ },
83
+ },
84
+ render: () => (_jsx(AvatarGroup, { label: "Live updates team", showMaxItems: 2, presentAllUpdatesToScreenReader: true, items: [
85
+ { initials: 'A', alt: 'User A' },
86
+ { initials: 'B', alt: 'User B' },
87
+ { initials: 'C', alt: 'User C' },
88
+ { initials: 'D', alt: 'User D' },
89
+ ] })),
90
+ };
91
+ //# sourceMappingURL=AvatarGroup.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AvatarGroup.stories.js","sourceRoot":"","sources":["../../../src/components/avatarGroup/AvatarGroup.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,IAAI,GAA6B;IACrC,KAAK,EAAE,wBAAwB;IAC/B,SAAS,EAAE,WAAW;IACtB,IAAI,EAAE,CAAC,UAAU,CAAC;CACnB,CAAC;AAEF,eAAe,IAAI,CAAC;AAIpB,MAAM,SAAS,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,iCAAiC,EAAE,EAAE,CAAC;AAExE,MAAM,CAAC,MAAM,SAAS,GAAU;IAC9B,MAAM,EAAE,GAAG,EAAE,CAAC,CACZ,KAAC,WAAW,IACV,KAAK,EAAC,iBAAiB,EACvB,KAAK,EAAE;YACL,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE;YACtC,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE;YACtC,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,kBAAkB,EAAE;SAC5C,GACD,CACH;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAU;IAC3C,IAAI,EAAE,eAAe;IACrB,MAAM,EAAE,GAAG,EAAE,CAAC,CACZ,KAAC,WAAW,IACV,KAAK,EAAC,kDAAkD,EACxD,IAAI,EAAC,QAAQ,EACb,YAAY,EAAE,CAAC,EACf,KAAK,EAAE;YACL,KAAC,MAAM,IAEL,IAAI,EAAC,OAAO,EACZ,QAAQ,EAAC,IAAI,EACb,GAAG,EAAC,SAAS,IAHT,GAAG,CAIP;YACF,KAAC,MAAM,IAEL,IAAI,EAAC,OAAO,EACZ,QAAQ,EAAC,IAAI,EACb,GAAG,EAAC,SAAS,IAHT,GAAG,CAIP;YACF,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE;YACjD,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE;YACjD,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE;SAClD,GACD,CACH;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAU;IACvC,IAAI,EAAE,qBAAqB;IAC3B,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,WAAW,EAAE;gBACX,KAAK,EACH,wCAAwC;aAC3C;SACF;KACF;IACD,MAAM,EAAE,GAAG,EAAE,CAAC,CACZ,MAAC,WAAW,IACV,KAAK,EAAC,qBAAqB,EAC3B,YAAY,EAAE,CAAC,EACf,SAAS,EAAC,WAAW,aAErB,8BACE,KAAC,MAAM,IACL,IAAI,EAAC,OAAO,EACZ,QAAQ,EAAC,GAAG,EACZ,GAAG,EAAC,QAAQ,GACZ,EACF,KAAC,MAAM,IACL,IAAI,EAAC,OAAO,EACZ,QAAQ,EAAC,GAAG,EACZ,GAAG,EAAC,QAAQ,GACZ,IACD,EACH,KAAC,MAAM,IACL,IAAI,EAAC,OAAO,EACZ,QAAQ,EAAC,GAAG,EACZ,GAAG,EAAC,QAAQ,GACZ,EACF,KAAC,MAAM,IACL,IAAI,EAAC,OAAO,EACZ,QAAQ,EAAC,GAAG,EACZ,GAAG,EAAC,QAAQ,GACZ,EACF,KAAC,MAAM,IACL,IAAI,EAAC,OAAO,EACZ,QAAQ,EAAC,GAAG,EACZ,GAAG,EAAC,QAAQ,GACZ,IACU,CACf;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAU;IACjD,IAAI,EAAE,6BAA6B;IACnC,MAAM,EAAE,GAAG,EAAE,CAAC,CACZ,MAAC,WAAW,IACV,KAAK,EAAC,oBAAoB,EAC1B,IAAI,EAAC,QAAQ,EACb,YAAY,EAAE,CAAC,EACf,SAAS,EAAC,YAAY,aAEtB,KAAC,MAAM,IACL,QAAQ,EAAC,GAAG,EACZ,GAAG,EAAC,QAAQ,GACZ,EACF,KAAC,MAAM,IACL,QAAQ,EAAC,GAAG,EACZ,GAAG,EAAC,QAAQ,GACZ,EACF,KAAC,MAAM,IACL,QAAQ,EAAC,GAAG,EACZ,GAAG,EAAC,QAAQ,GACZ,EACF,KAAC,MAAM,IACL,QAAQ,EAAC,GAAG,EACZ,GAAG,EAAC,QAAQ,GACZ,EACF,KAAC,MAAM,IACL,QAAQ,EAAC,GAAG,EACZ,GAAG,EAAC,QAAQ,GACZ,IACU,CACf;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAU;IAC1C,MAAM,EAAE,GAAG,EAAE,CAAC,CACZ,KAAC,WAAW,IACV,KAAK,EAAC,oBAAoB,EAC1B,SAAS,EAAC,WAAW,EACrB,YAAY,EAAE,CAAC,EACf,KAAK,EAAE;YACL,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE;YAChC,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE;YAChC,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE;YAChC,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE;YAChC,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE;SACjC,GACD,CACH;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAU;IAC3C,MAAM,EAAE,GAAG,EAAE,CAAC,CACZ,KAAC,WAAW,IACV,KAAK,EAAC,qBAAqB,EAC3B,SAAS,EAAC,YAAY,EACtB,YAAY,EAAE,CAAC,EACf,KAAK,EAAE;YACL,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE;YAChC,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE;YAChC,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE;YAChC,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE;YAChC,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE;SACjC,GACD,CACH;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAU;IACxC,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,WAAW,EAAE;gBACX,KAAK,EACH,+IAA+I;aAClJ;SACF;KACF;IACD,MAAM,EAAE,GAAG,EAAE,CAAC,CACZ,KAAC,WAAW,IACV,KAAK,EAAC,sBAAsB,EAC5B,YAAY,EAAE,CAAC,EACf,kBAAkB,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,gBAAgB,EAC7C,KAAK,EAAE;YACL,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE;YAC/B,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE;YAChC,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE;SAChC,GACD,CACH;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAU;IAC7C,IAAI,EAAE,4BAA4B;IAClC,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,WAAW,EAAE;gBACX,KAAK,EACH,gIAAgI;aACnI;SACF;KACF;IACD,MAAM,EAAE,GAAG,EAAE,CAAC,CACZ,KAAC,WAAW,IACV,KAAK,EAAC,mBAAmB,EACzB,YAAY,EAAE,CAAC,EACf,+BAA+B,QAC/B,KAAK,EAAE;YACL,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE;YAChC,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE;YAChC,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE;YAChC,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE;SACjC,GACD,CACH;CACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ import '@testing-library/jest-dom/vitest';
2
+ //# sourceMappingURL=AvatarGroup.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AvatarGroup.test.d.ts","sourceRoot":"","sources":["../../../src/components/avatarGroup/AvatarGroup.test.tsx"],"names":[],"mappings":"AAQA,OAAO,kCAAkC,CAAC"}
@@ -0,0 +1,155 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ import { describe, expect, test, vi } from 'vitest';
4
+ import { render, screen, within } from '@testing-library/react';
5
+ import { Avatar } from '../avatar/Avatar';
6
+ import { AvatarGroup } from './AvatarGroup';
7
+ import { partitionAvatarGroupOverflow } from './avatarGroupOverflow';
8
+ import { collectAvatarsFromChildren } from './collectAvatarGroupChildren';
9
+ import '@testing-library/jest-dom/vitest';
10
+ const fourPeople = [
11
+ { initials: 'A', alt: 'User A' },
12
+ { initials: 'B', alt: 'User B' },
13
+ { initials: 'C', alt: 'User C' },
14
+ { initials: 'D', alt: 'User D' },
15
+ ];
16
+ describe('partitionAvatarGroupOverflow', () => {
17
+ const mockItems = (n) => Array.from({ length: n }, (_, i) => ({
18
+ key: String(i),
19
+ avatarProps: { alt: `User ${i}` },
20
+ }));
21
+ test('ascending keeps head visible and counts overflow', () => {
22
+ const items = mockItems(4);
23
+ const { visibleItems, overflowCount } = partitionAvatarGroupOverflow(items, 2, 'ascending');
24
+ expect(visibleItems.map(x => x.key)).toEqual(['0', '1']);
25
+ expect(overflowCount).toBe(2);
26
+ });
27
+ test('descending keeps tail visible and counts overflow', () => {
28
+ const items = mockItems(4);
29
+ const { visibleItems, overflowCount } = partitionAvatarGroupOverflow(items, 2, 'descending');
30
+ expect(visibleItems.map(x => x.key)).toEqual(['2', '3']);
31
+ expect(overflowCount).toBe(2);
32
+ });
33
+ test('no overflow when showMaxItems omits or covers all', () => {
34
+ const items = mockItems(3);
35
+ expect(partitionAvatarGroupOverflow(items, undefined, 'ascending').overflowCount).toBe(0);
36
+ expect(partitionAvatarGroupOverflow(items, 10, 'ascending').overflowCount).toBe(0);
37
+ });
38
+ test('floors decimal values and treats negative values as show all', () => {
39
+ const items = mockItems(4);
40
+ const decimalResult = partitionAvatarGroupOverflow(items, 2.9, 'ascending');
41
+ const negativeResult = partitionAvatarGroupOverflow(items, -1, 'descending');
42
+ expect(decimalResult.visibleItems.map(x => x.key)).toEqual(['0', '1']);
43
+ expect(decimalResult.overflowCount).toBe(2);
44
+ expect(negativeResult.visibleItems.map(x => x.key)).toEqual(['0', '1', '2', '3']);
45
+ expect(negativeResult.overflowCount).toBe(0);
46
+ });
47
+ });
48
+ describe('AvatarGroup', () => {
49
+ test('renders avatar props objects', () => {
50
+ render(_jsx(AvatarGroup, { items: [
51
+ { initials: 'CM', alt: 'Chris M' },
52
+ { initials: 'JD', alt: 'Jay D' },
53
+ ] }));
54
+ expect(screen.getByLabelText('Chris M')).toBeInTheDocument();
55
+ expect(screen.getByLabelText('Jay D')).toBeInTheDocument();
56
+ });
57
+ test('renders pre-built Avatar elements', () => {
58
+ render(_jsx(AvatarGroup, { items: [
59
+ _jsx(Avatar, { initials: "X", alt: "Xavier" }, "one"),
60
+ _jsx(Avatar, { initials: "Y", alt: "Yolanda" }, "two"),
61
+ ] }));
62
+ expect(screen.getByLabelText('Xavier')).toBeInTheDocument();
63
+ expect(screen.getByLabelText('Yolanda')).toBeInTheDocument();
64
+ });
65
+ test('mixes Avatar elements and props objects', () => {
66
+ render(_jsx(AvatarGroup, { items: [
67
+ _jsx(Avatar, { initials: "E", alt: "Element user" }, "e"),
68
+ { initials: 'P', alt: 'Props user' },
69
+ ] }));
70
+ expect(screen.getByLabelText('Element user')).toBeInTheDocument();
71
+ expect(screen.getByLabelText('Props user')).toBeInTheDocument();
72
+ });
73
+ test('applies showMaxItems and overflow +N with default aria-label', () => {
74
+ render(_jsx(AvatarGroup, { items: fourPeople, showMaxItems: 2, listOrder: "ascending" }));
75
+ expect(screen.getByText('+2')).toBeInTheDocument();
76
+ const overflow = screen.getByRole('status', { name: 'plus 2 more' });
77
+ expect(overflow).toBeInTheDocument();
78
+ expect(screen.getByLabelText('User A')).toBeInTheDocument();
79
+ expect(screen.getByLabelText('User B')).toBeInTheDocument();
80
+ expect(screen.queryByLabelText('User C')).not.toBeInTheDocument();
81
+ expect(screen.queryByLabelText('User D')).not.toBeInTheDocument();
82
+ });
83
+ test('descending shows last N avatars in the main list', () => {
84
+ const { container } = render(_jsx(AvatarGroup, { items: fourPeople, showMaxItems: 2, listOrder: "descending" }));
85
+ const visibleLis = container.querySelectorAll('.ds-avatar-group > .ds-avatar-group__item');
86
+ expect(visibleLis).toHaveLength(2);
87
+ expect(within(visibleLis[0]).getByText('C')).toBeInTheDocument();
88
+ expect(within(visibleLis[1]).getByText('D')).toBeInTheDocument();
89
+ expect(screen.queryByLabelText('User A')).not.toBeInTheDocument();
90
+ expect(screen.queryByLabelText('User B')).not.toBeInTheDocument();
91
+ });
92
+ test('overflowCountLabel string override', () => {
93
+ render(_jsx(AvatarGroup, { items: fourPeople, showMaxItems: 2, overflowCountLabel: "two teammates not shown" }));
94
+ expect(screen.getByRole('status', { name: 'two teammates not shown' })).toBeInTheDocument();
95
+ });
96
+ test('overflowCountLabel function override', () => {
97
+ render(_jsx(AvatarGroup, { items: fourPeople, showMaxItems: 2, overflowCountLabel: n => `${n} extra` }));
98
+ expect(screen.getByRole('status', { name: '2 extra' })).toBeInTheDocument();
99
+ });
100
+ test('outer list uses aria-label from label prop', () => {
101
+ render(_jsx(AvatarGroup, { label: "Project contributors", items: [{ initials: 'Z', alt: 'Zed' }] }));
102
+ const list = screen.getByRole('list', { name: 'Project contributors' });
103
+ expect(list).toHaveAttribute('role', 'list');
104
+ });
105
+ test('forwards refs to the root list element', () => {
106
+ const ref = React.createRef();
107
+ render(_jsx(AvatarGroup, { ref: ref, label: "Ref team", items: [{ initials: 'Z', alt: 'Zed' }] }));
108
+ expect(ref.current).toHaveAttribute('role', 'list');
109
+ });
110
+ test('AvatarGroup.OverflowCount standalone uses status semantics', () => {
111
+ render(_jsx(AvatarGroup.OverflowCount, { count: 5, overflowCountLabel: "five more wolves" }));
112
+ const overflow = screen.getByRole('status', { name: 'five more wolves' });
113
+ expect(overflow).toHaveTextContent('+5');
114
+ expect(overflow).not.toHaveAttribute('aria-live');
115
+ expect(overflow).not.toHaveAttribute('aria-atomic');
116
+ });
117
+ test('AvatarGroup.OverflowCount can announce all updates to screen readers', () => {
118
+ render(_jsx(AvatarGroup.OverflowCount, { count: 5, overflowCountLabel: "five more wolves", presentAllUpdatesToScreenReader: true }));
119
+ const overflow = screen.getByRole('status', { name: 'five more wolves' });
120
+ expect(overflow).toHaveAttribute('aria-live', 'polite');
121
+ expect(overflow).toHaveAttribute('aria-atomic', 'true');
122
+ });
123
+ test('group prop plumbs live-region behaviour to the built-in overflow badge', () => {
124
+ render(_jsx(AvatarGroup, { items: fourPeople, showMaxItems: 2, presentAllUpdatesToScreenReader: true }));
125
+ const overflow = screen.getByRole('status', { name: 'plus 2 more' });
126
+ expect(overflow).toHaveAttribute('aria-live', 'polite');
127
+ expect(overflow).toHaveAttribute('aria-atomic', 'true');
128
+ });
129
+ test('size on group overrides avatar size', () => {
130
+ const { container } = render(_jsx(AvatarGroup, { size: "large", items: [
131
+ { initials: 'S', alt: 'Small marked', size: 'small' },
132
+ _jsx(Avatar, { initials: "M", alt: "Medium marked", size: "medium" }, "m"),
133
+ ] }));
134
+ const avatars = container.querySelectorAll('.ds-avatar--large');
135
+ expect(avatars).toHaveLength(2);
136
+ });
137
+ test('renders avatars from children with fragments and overflow', () => {
138
+ render(_jsxs(AvatarGroup, { label: "Composable team", showMaxItems: 2, size: "medium", children: [_jsxs(_Fragment, { children: [_jsx(Avatar, { initials: "A", alt: "User A" }), _jsx(Avatar, { initials: "B", alt: "User B" })] }), _jsx(Avatar, { initials: "C", alt: "User C" })] }));
139
+ expect(screen.getByRole('list', { name: 'Composable team' })).toBeInTheDocument();
140
+ expect(screen.getByLabelText('User A')).toBeInTheDocument();
141
+ expect(screen.getByLabelText('User B')).toBeInTheDocument();
142
+ expect(screen.getByText('+1')).toBeInTheDocument();
143
+ expect(screen.queryByLabelText('User C')).not.toBeInTheDocument();
144
+ });
145
+ });
146
+ describe('collectAvatarsFromChildren', () => {
147
+ test('warns in development when non-Avatar React elements are passed', () => {
148
+ const warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => { });
149
+ const result = collectAvatarsFromChildren(_jsxs(_Fragment, { children: [_jsx(Avatar, { initials: "A", alt: "User A" }), _jsx("span", { children: "Ignored child" })] }));
150
+ expect(result).toHaveLength(1);
151
+ expect(warnSpy).toHaveBeenCalledWith('AvatarGroup only collects `<Avatar />` children when using the children API.');
152
+ warnSpy.mockRestore();
153
+ });
154
+ });
155
+ //# sourceMappingURL=AvatarGroup.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AvatarGroup.test.js","sourceRoot":"","sources":["../../../src/components/avatarGroup/AvatarGroup.test.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { AvatarGroupNormalizedEntry } from './useAvatarGroupItems';
2
+ export type AvatarGroupListOrder = 'ascending' | 'descending';
3
+ export type AvatarGroupOverflowPartition = {
4
+ visibleItems: AvatarGroupNormalizedEntry[];
5
+ overflowCount: number;
6
+ };
7
+ export declare function partitionAvatarGroupOverflow(items: readonly AvatarGroupNormalizedEntry[], showMaxItems: number | undefined, listOrder?: AvatarGroupListOrder): AvatarGroupOverflowPartition;
8
+ //# sourceMappingURL=avatarGroupOverflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatarGroupOverflow.d.ts","sourceRoot":"","sources":["../../../src/components/avatarGroup/avatarGroupOverflow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAExE,MAAM,MAAM,oBAAoB,GAAG,WAAW,GAAG,YAAY,CAAC;AAE9D,MAAM,MAAM,4BAA4B,GAAG;IACzC,YAAY,EAAE,0BAA0B,EAAE,CAAC;IAC3C,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,SAAS,0BAA0B,EAAE,EAC5C,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,SAAS,GAAE,oBAAkC,GAC5C,4BAA4B,CAe9B"}
@@ -0,0 +1,14 @@
1
+ export function partitionAvatarGroupOverflow(items, showMaxItems, listOrder = 'ascending') {
2
+ const total = items.length;
3
+ const maxItems = showMaxItems == null || !Number.isFinite(showMaxItems) || showMaxItems < 0
4
+ ? total
5
+ : Math.floor(showMaxItems);
6
+ const visibleCount = Math.min(total, maxItems);
7
+ const overflowCount = total - visibleCount;
8
+ const startIndex = listOrder === 'ascending' ? 0 : overflowCount;
9
+ return {
10
+ visibleItems: items.slice(startIndex, startIndex + visibleCount),
11
+ overflowCount,
12
+ };
13
+ }
14
+ //# sourceMappingURL=avatarGroupOverflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatarGroupOverflow.js","sourceRoot":"","sources":["../../../src/components/avatarGroup/avatarGroupOverflow.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,4BAA4B,CAC1C,KAA4C,EAC5C,YAAgC,EAChC,YAAkC,WAAW;IAE7C,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;IAC3B,MAAM,QAAQ,GACV,YAAY,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,YAAY,GAAG,CAAC;QAC1E,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAE/C,MAAM,aAAa,GAAG,KAAK,GAAG,YAAY,CAAC;IAC3C,MAAM,UAAU,GAAG,SAAS,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;IAEjE,OAAO;QACL,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,GAAG,YAAY,CAAC;QAChE,aAAa;KACd,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import type { AvatarGroupItem } from './useAvatarGroupItems';
3
+ export declare function collectAvatarsFromChildren(children: React.ReactNode): AvatarGroupItem[];
4
+ //# sourceMappingURL=collectAvatarGroupChildren.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collectAvatarGroupChildren.d.ts","sourceRoot":"","sources":["../../../src/components/avatarGroup/collectAvatarGroupChildren.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,GAAG,eAAe,EAAE,CAyBvF"}
@@ -0,0 +1,26 @@
1
+ import { Avatar } from '../avatar/Avatar';
2
+ import React from 'react';
3
+ export function collectAvatarsFromChildren(children) {
4
+ const out = [];
5
+ const walk = (node) => {
6
+ React.Children.forEach(node, (child) => {
7
+ if (child == null || typeof child === 'boolean') {
8
+ return;
9
+ }
10
+ if (React.isValidElement(child) && child.type === React.Fragment) {
11
+ walk(child.props.children);
12
+ return;
13
+ }
14
+ if (React.isValidElement(child) && child.type === Avatar) {
15
+ out.push(child);
16
+ return;
17
+ }
18
+ if (React.isValidElement(child) && process.env.NODE_ENV !== 'production') {
19
+ console.warn('AvatarGroup only collects `<Avatar />` children when using the children API.');
20
+ }
21
+ });
22
+ };
23
+ walk(children);
24
+ return out;
25
+ }
26
+ //# sourceMappingURL=collectAvatarGroupChildren.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collectAvatarGroupChildren.js","sourceRoot":"","sources":["../../../src/components/avatarGroup/collectAvatarGroupChildren.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAoB,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,UAAU,0BAA0B,CAAC,QAAyB;IAClE,MAAM,GAAG,GAAsB,EAAE,CAAC;IAElC,MAAM,IAAI,GAAG,CAAC,IAAqB,EAAE,EAAE;QACrC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;YACrC,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;gBAChD,OAAO;YACT,CAAC;YACD,IAAI,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACjE,IAAI,CAAE,KAAK,CAAC,KAAwC,CAAC,QAAQ,CAAC,CAAC;gBAC/D,OAAO;YACT,CAAC;YACD,IAAI,KAAK,CAAC,cAAc,CAAc,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACtE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAChB,OAAO;YACT,CAAC;YAED,IAAI,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;gBACzE,OAAO,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC;YAC/F,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,IAAI,CAAC,QAAQ,CAAC,CAAC;IACf,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { type AvatarProps, type AvatarSize } from '../avatar/Avatar';
2
+ import React from 'react';
3
+ export type AvatarGroupItem = React.ReactElement<AvatarProps> | AvatarProps;
4
+ export type AvatarGroupNormalizedEntry = {
5
+ key: string;
6
+ avatarProps: AvatarProps;
7
+ };
8
+ export declare function useAvatarGroupItems(items: readonly AvatarGroupItem[], groupSize: AvatarSize | undefined): AvatarGroupNormalizedEntry[];
9
+ //# sourceMappingURL=useAvatarGroupItems.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAvatarGroupItems.d.ts","sourceRoot":"","sources":["../../../src/components/avatarGroup/useAvatarGroupItems.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACrF,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,MAAM,eAAe,GAAG,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC;AAE5E,MAAM,MAAM,0BAA0B,GAAG;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,WAAW,CAAC;CAC1B,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,SAAS,eAAe,EAAE,EACjC,SAAS,EAAE,UAAU,GAAG,SAAS,GAChC,0BAA0B,EAAE,CAyB9B"}