@spaced-out/ui-design-system 0.3.38-beta.0 → 0.3.39-beta.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 (307) hide show
  1. package/.cspell/custom-words.txt +4 -0
  2. package/.github/workflows/publish_to_npm.yml +32 -4
  3. package/CHANGELOG.md +16 -0
  4. package/dts-generator/.editorconfig +10 -0
  5. package/dts-generator/.gitattributes +4 -0
  6. package/dts-generator/README.md +63 -0
  7. package/dts-generator/convert.js +101 -0
  8. package/dts-generator/package.json +16 -0
  9. package/gulpfile.js +20 -1
  10. package/lib/components/Avatar/Avatar.d.ts +264 -0
  11. package/lib/components/Avatar/index.d.ts +1 -0
  12. package/lib/components/AvatarGroup/AvatarGroup.d.ts +161 -0
  13. package/lib/components/AvatarGroup/index.d.ts +1 -0
  14. package/lib/components/Badge/Badge.d.ts +138 -0
  15. package/lib/components/Badge/index.d.ts +1 -0
  16. package/lib/components/Banner/Banner.d.ts +52 -0
  17. package/lib/components/Banner/index.d.ts +1 -0
  18. package/lib/components/Breadcrumbs/BreadcrumbLink/BreadcrumbLink.d.ts +50 -0
  19. package/lib/components/Breadcrumbs/BreadcrumbLink/index.d.ts +1 -0
  20. package/lib/components/Breadcrumbs/Breadcrumbs.d.ts +64 -0
  21. package/lib/components/Breadcrumbs/index.d.ts +2 -0
  22. package/lib/components/Button/Button.d.ts +288 -0
  23. package/lib/components/Button/index.d.ts +14 -0
  24. package/lib/components/ButtonDropdown/ButtonDropdown.d.ts +192 -0
  25. package/lib/components/ButtonDropdown/SimpleButtonDropdown.d.ts +148 -0
  26. package/lib/components/ButtonDropdown/index.d.ts +2 -0
  27. package/lib/components/ButtonTabs/ButtonTab/ButtonTab.d.ts +82 -0
  28. package/lib/components/ButtonTabs/ButtonTab/index.d.ts +1 -0
  29. package/lib/components/ButtonTabs/ButtonTabDropdown.d.ts +118 -0
  30. package/lib/components/ButtonTabs/ButtonTabs.d.ts +113 -0
  31. package/lib/components/ButtonTabs/index.d.ts +2 -0
  32. package/lib/components/Card/Card.d.ts +163 -0
  33. package/lib/components/Card/index.d.ts +1 -0
  34. package/lib/components/Charts/ChartTooltip/index.d.ts +10 -0
  35. package/lib/components/Charts/ChartWrapper/ChartWrapper.d.ts +184 -0
  36. package/lib/components/Charts/ChartWrapper/index.d.ts +1 -0
  37. package/lib/components/Charts/ColumnChart/ColumnChart.d.ts +111 -0
  38. package/lib/components/Charts/ColumnChart/index.d.ts +1 -0
  39. package/lib/components/Charts/DonutChart/DonutChart.d.ts +142 -0
  40. package/lib/components/Charts/DonutChart/index.d.ts +1 -0
  41. package/lib/components/Charts/FunnelChart/FunnelChart.d.ts +99 -0
  42. package/lib/components/Charts/FunnelChart/index.d.ts +1 -0
  43. package/lib/components/Charts/LineChart/LineChart.d.ts +97 -0
  44. package/lib/components/Charts/LineChart/index.d.ts +1 -0
  45. package/lib/components/Charts/SpiderChart/SpiderChart.d.ts +95 -0
  46. package/lib/components/Charts/SpiderChart/index.d.ts +1 -0
  47. package/lib/components/Charts/index.d.ts +7 -0
  48. package/lib/components/ChatBubble/ChatBubble.d.ts +203 -0
  49. package/lib/components/ChatBubble/index.d.ts +1 -0
  50. package/lib/components/Checkbox/Checkbox.d.ts +165 -0
  51. package/lib/components/Checkbox/CheckboxGroup.d.ts +113 -0
  52. package/lib/components/Checkbox/index.d.ts +2 -0
  53. package/lib/components/Chip/Chip.d.ts +181 -0
  54. package/lib/components/Chip/index.d.ts +2 -0
  55. package/lib/components/CircularLoader/CircularLoader.d.ts +56 -0
  56. package/lib/components/CircularLoader/index.d.ts +1 -0
  57. package/lib/components/CollapsibleCard/CollapsibleCard.d.ts +134 -0
  58. package/lib/components/CollapsibleCard/index.d.ts +1 -0
  59. package/lib/components/Combobox/Combobox.d.ts +292 -0
  60. package/lib/components/Combobox/helper.d.ts +205 -0
  61. package/lib/components/Combobox/index.d.ts +1 -0
  62. package/lib/components/ConditionalWrapper/ConditionalWrapper.d.ts +12 -0
  63. package/lib/components/ConditionalWrapper/index.d.ts +1 -0
  64. package/lib/components/DateRangePicker/Calendar.d.ts +119 -0
  65. package/lib/components/DateRangePicker/DateRangePicker.d.ts +196 -0
  66. package/lib/components/DateRangePicker/DateRangeWrapper.d.ts +311 -0
  67. package/lib/components/DateRangePicker/Day.d.ts +70 -0
  68. package/lib/components/DateRangePicker/index.d.ts +1 -0
  69. package/lib/components/Dialog/Dialog.d.ts +208 -0
  70. package/lib/components/Dialog/index.d.ts +1 -0
  71. package/lib/components/Disclaimer/Disclaimer.d.ts +32 -0
  72. package/lib/components/Disclaimer/index.d.ts +1 -0
  73. package/lib/components/Dropdown/Dropdown.d.ts +145 -0
  74. package/lib/components/Dropdown/SimpleDropdown.d.ts +142 -0
  75. package/lib/components/Dropdown/index.d.ts +2 -0
  76. package/lib/components/EmptyState/EmptyImages/CalendarEmptyImage.d.ts +108 -0
  77. package/lib/components/EmptyState/EmptyImages/ChartEmptyImage.d.ts +194 -0
  78. package/lib/components/EmptyState/EmptyImages/DataEmptyImage.d.ts +116 -0
  79. package/lib/components/EmptyState/EmptyImages/FileEmptyImage.d.ts +133 -0
  80. package/lib/components/EmptyState/EmptyImages/MessageEmptyImage.d.ts +64 -0
  81. package/lib/components/EmptyState/EmptyImages/UploadEmptyImage.d.ts +67 -0
  82. package/lib/components/EmptyState/EmptyImages/index.d.ts +6 -0
  83. package/lib/components/EmptyState/EmptyState.d.ts +82 -0
  84. package/lib/components/EmptyState/index.d.ts +1 -0
  85. package/lib/components/ErrorMessage/ErrorImages/ForbiddenImage.d.ts +85 -0
  86. package/lib/components/ErrorMessage/ErrorImages/NotFoundImage.d.ts +117 -0
  87. package/lib/components/ErrorMessage/ErrorImages/ServerErrorImage.d.ts +237 -0
  88. package/lib/components/ErrorMessage/ErrorImages/UnauthorizedImage.d.ts +73 -0
  89. package/lib/components/ErrorMessage/ErrorImages/index.d.ts +4 -0
  90. package/lib/components/ErrorMessage/ErrorMessage.d.ts +86 -0
  91. package/lib/components/ErrorMessage/index.d.ts +1 -0
  92. package/lib/components/FileUpload/FileBlock/FileBlock.d.ts +137 -0
  93. package/lib/components/FileUpload/FileBlock/index.d.ts +1 -0
  94. package/lib/components/FileUpload/FileUpload.d.ts +190 -0
  95. package/lib/components/FileUpload/index.d.ts +2 -0
  96. package/lib/components/FocusManager/FocusManager.d.ts +52 -0
  97. package/lib/components/FocusManager/index.d.ts +1 -0
  98. package/lib/components/FocusManagerWithArrowKeyNavigation/FocusManagerWithArrowKeyNavigation.d.ts +137 -0
  99. package/lib/components/FocusManagerWithArrowKeyNavigation/index.d.ts +1 -0
  100. package/lib/components/FormTitleWrapper/FormTitleWrapper.d.ts +62 -0
  101. package/lib/components/FormTitleWrapper/index.d.ts +1 -0
  102. package/lib/components/Grid/Grid.d.ts +104 -0
  103. package/lib/components/Grid/index.d.ts +1 -0
  104. package/lib/components/Icon/ClickableIcon.d.ts +101 -0
  105. package/lib/components/Icon/Icon.d.ts +71 -0
  106. package/lib/components/Icon/Icon.docs.d.ts +138 -0
  107. package/lib/components/Icon/SemanticIcon.d.ts +42 -0
  108. package/lib/components/Icon/index.d.ts +3 -0
  109. package/lib/components/InContextAlert/InContextAlert.d.ts +210 -0
  110. package/lib/components/InContextAlert/index.d.ts +1 -0
  111. package/lib/components/InlineDropdown/InlineDropdown.d.ts +146 -0
  112. package/lib/components/InlineDropdown/SimpleInlineDropdown.d.ts +145 -0
  113. package/lib/components/InlineDropdown/index.d.ts +2 -0
  114. package/lib/components/Input/Input.d.ts +327 -0
  115. package/lib/components/Input/index.d.ts +1 -0
  116. package/lib/components/KPIBox/KPIBox.d.ts +89 -0
  117. package/lib/components/KPIBox/index.d.ts +1 -0
  118. package/lib/components/LinearLoader/LinearLoader.d.ts +44 -0
  119. package/lib/components/LinearLoader/index.d.ts +1 -0
  120. package/lib/components/Link/Link.d.ts +225 -0
  121. package/lib/components/Link/index.d.ts +1 -0
  122. package/lib/components/Menu/Menu.d.ts +379 -0
  123. package/lib/components/Menu/MenuOptionButton.d.ts +199 -0
  124. package/lib/components/Menu/index.d.ts +2 -0
  125. package/lib/components/Modal/Modal.d.ts +354 -0
  126. package/lib/components/Modal/index.d.ts +14 -0
  127. package/lib/components/Notification/Notification.d.ts +147 -0
  128. package/lib/components/Notification/index.d.ts +1 -0
  129. package/lib/components/OptionButton/OptionButton.d.ts +150 -0
  130. package/lib/components/OptionButton/SimpleOptionButton.d.ts +150 -0
  131. package/lib/components/OptionButton/index.d.ts +2 -0
  132. package/lib/components/PageTitle/PageTitle.d.ts +256 -0
  133. package/lib/components/PageTitle/index.d.ts +1 -0
  134. package/lib/components/Pagination/Pagination.d.ts +144 -0
  135. package/lib/components/Pagination/PaginationItem.d.ts +136 -0
  136. package/lib/components/Pagination/index.d.ts +1 -0
  137. package/lib/components/Panel/Panel.d.ts +168 -0
  138. package/lib/components/Panel/index.d.ts +9 -0
  139. package/lib/components/ProgressDonut/ProgressDonut.d.ts +102 -0
  140. package/lib/components/ProgressDonut/index.d.ts +1 -0
  141. package/lib/components/PromptChip/PromptChip.d.ts +167 -0
  142. package/lib/components/PromptChip/index.d.ts +1 -0
  143. package/lib/components/PromptInput/PromptInput.d.ts +189 -0
  144. package/lib/components/PromptInput/index.d.ts +1 -0
  145. package/lib/components/RadioButton/RadioButton.d.ts +132 -0
  146. package/lib/components/RadioButton/RadioGroup.d.ts +88 -0
  147. package/lib/components/RadioButton/index.d.ts +2 -0
  148. package/lib/components/RadioTile/RadioTile.d.ts +109 -0
  149. package/lib/components/RadioTile/index.d.ts +1 -0
  150. package/lib/components/RangeSlider/RangeSlider.d.ts +207 -0
  151. package/lib/components/RangeSlider/index.d.ts +1 -0
  152. package/lib/components/Rating/Rating.d.ts +131 -0
  153. package/lib/components/Rating/index.d.ts +1 -0
  154. package/lib/components/ScoreBar/ScoreBar.d.ts +122 -0
  155. package/lib/components/ScoreBar/index.d.ts +1 -0
  156. package/lib/components/SearchInput/SearchInput.d.ts +79 -0
  157. package/lib/components/SearchInput/index.d.ts +2 -0
  158. package/lib/components/Separator/Separator.d.ts +51 -0
  159. package/lib/components/Separator/index.d.ts +1 -0
  160. package/lib/components/Shimmer/Shimmer.d.ts +131 -0
  161. package/lib/components/Shimmer/index.d.ts +1 -0
  162. package/lib/components/SideMenuLink/SideMenuLink.d.ts +336 -0
  163. package/lib/components/SideMenuLink/index.d.ts +1 -0
  164. package/lib/components/StatusIndicator/StatusIndicator.d.ts +60 -0
  165. package/lib/components/StatusIndicator/index.d.ts +1 -0
  166. package/lib/components/Stepper/Step/Step.d.ts +119 -0
  167. package/lib/components/Stepper/Step/StepContent.d.ts +35 -0
  168. package/lib/components/Stepper/Step/StepLabel.d.ts +35 -0
  169. package/lib/components/Stepper/Step/index.d.ts +3 -0
  170. package/lib/components/Stepper/Stepper.d.ts +60 -0
  171. package/lib/components/Stepper/index.d.ts +2 -0
  172. package/lib/components/StickyBar/StickyBar.d.ts +55 -0
  173. package/lib/components/StickyBar/index.d.ts +1 -0
  174. package/lib/components/SubMenu/SubMenu.d.ts +89 -0
  175. package/lib/components/SubMenu/SubMenuGroup.d.ts +156 -0
  176. package/lib/components/SubMenu/SubMenuItem.d.ts +161 -0
  177. package/lib/components/SubMenu/SubMenuLink.d.ts +81 -0
  178. package/lib/components/SubMenu/index.d.ts +4 -0
  179. package/lib/components/Table/Cell.d.ts +107 -0
  180. package/lib/components/Table/DefaultRow.d.ts +144 -0
  181. package/lib/components/Table/DefaultTableHeader.d.ts +236 -0
  182. package/lib/components/Table/StaticTable.d.ts +198 -0
  183. package/lib/components/Table/Table.d.ts +113 -0
  184. package/lib/components/Table/Table.docs.d.ts +532 -0
  185. package/lib/components/Table/TableActionBar.d.ts +48 -0
  186. package/lib/components/Table/TableBottomBar.d.ts +20 -0
  187. package/lib/components/Table/TableTopBar.d.ts +20 -0
  188. package/lib/components/Table/dummyTableData.d.ts +2189 -0
  189. package/lib/components/Table/hooks.d.ts +98 -0
  190. package/lib/components/Table/index.d.ts +8 -0
  191. package/lib/components/Tabs/Tab/Tab.d.ts +146 -0
  192. package/lib/components/Tabs/Tab/index.d.ts +1 -0
  193. package/lib/components/Tabs/TabList/TabDropdown.d.ts +100 -0
  194. package/lib/components/Tabs/TabList/TabList.d.ts +157 -0
  195. package/lib/components/Tabs/TabList/index.d.ts +1 -0
  196. package/lib/components/Tabs/index.d.ts +2 -0
  197. package/lib/components/Text/Text.d.ts +1021 -0
  198. package/lib/components/Text/index.d.ts +30 -0
  199. package/lib/components/TextTile/TextTile.d.ts +40 -0
  200. package/lib/components/TextTile/index.d.ts +1 -0
  201. package/lib/components/Textarea/Textarea.d.ts +132 -0
  202. package/lib/components/Textarea/index.d.ts +2 -0
  203. package/lib/components/Timeline/Timeline.d.ts +40 -0
  204. package/lib/components/Timeline/TimelineItem/TimelineItem.d.ts +121 -0
  205. package/lib/components/Timeline/TimelineItem/index.d.ts +1 -0
  206. package/lib/components/Timeline/index.d.ts +2 -0
  207. package/lib/components/Toast/Toast.d.ts +248 -0
  208. package/lib/components/Toast/ToastContainer.d.ts +140 -0
  209. package/lib/components/Toast/ToastManager.d.ts +58 -0
  210. package/lib/components/Toast/index.d.ts +10 -0
  211. package/lib/components/Toggle/Toggle.d.ts +111 -0
  212. package/lib/components/Toggle/index.d.ts +1 -0
  213. package/lib/components/TokenListInput/TokenListInput.d.ts +333 -0
  214. package/lib/components/TokenListInput/TokenValueChips.d.ts +64 -0
  215. package/lib/components/TokenListInput/index.d.ts +1 -0
  216. package/lib/components/Tooltip/Tooltip.d.ts +186 -0
  217. package/lib/components/Tooltip/index.d.ts +1 -0
  218. package/lib/components/Truncate/Truncate.d.ts +87 -0
  219. package/lib/components/Truncate/index.d.ts +2 -0
  220. package/lib/components/TruncatedTextWithTooltip/TruncatedTextWithTooltip.d.ts +95 -0
  221. package/lib/components/TruncatedTextWithTooltip/index.d.ts +1 -0
  222. package/lib/components/Typeahead/SimpleTypeahead.d.ts +141 -0
  223. package/lib/components/Typeahead/Typeahead.d.ts +217 -0
  224. package/lib/components/Typeahead/index.d.ts +2 -0
  225. package/lib/components/WeekdayPicker/WeekdayPicker.d.ts +242 -0
  226. package/lib/components/WeekdayPicker/index.d.ts +1 -0
  227. package/lib/components/index.d.ts +71 -0
  228. package/lib/hooks/index.d.ts +12 -0
  229. package/lib/hooks/useArbitraryOptionAddition/index.d.ts +1 -0
  230. package/lib/hooks/useArbitraryOptionAddition/useArbitraryOptionAddition.d.ts +124 -0
  231. package/lib/hooks/useCopyToClipboard/index.d.ts +1 -0
  232. package/lib/hooks/useCopyToClipboard/useCopyToClipboard.d.ts +27 -0
  233. package/lib/hooks/useFileUpload/index.d.ts +1 -0
  234. package/lib/hooks/useFileUpload/useFileUpload.d.ts +342 -0
  235. package/lib/hooks/useFilteredOptions/index.d.ts +1 -0
  236. package/lib/hooks/useFilteredOptions/useFilteredOptions.d.ts +87 -0
  237. package/lib/hooks/useInputState/index.d.ts +1 -0
  238. package/lib/hooks/useInputState/useInputState.d.ts +22 -0
  239. package/lib/hooks/useLockedBody/index.d.ts +1 -0
  240. package/lib/hooks/useLockedBody/useLockedBody.d.ts +46 -0
  241. package/lib/hooks/useModal/index.d.ts +1 -0
  242. package/lib/hooks/useModal/useModal.d.ts +32 -0
  243. package/lib/hooks/useMountTransition/index.d.ts +24 -0
  244. package/lib/hooks/usePagination/index.d.ts +1 -0
  245. package/lib/hooks/usePagination/usePagination.d.ts +140 -0
  246. package/lib/hooks/useToastPortal/index.d.ts +1 -0
  247. package/lib/hooks/useToastPortal/useToastPortal.d.ts +31 -0
  248. package/lib/hooks/useToggle/index.d.ts +1 -0
  249. package/lib/hooks/useToggle/useToggle.d.ts +11 -0
  250. package/lib/hooks/useWindowSize/index.d.ts +1 -0
  251. package/lib/hooks/useWindowSize/useWindowSize.d.ts +28 -0
  252. package/lib/index.d.ts +5 -0
  253. package/lib/styles/index.d.ts +267 -0
  254. package/lib/styles/variables/_border.d.ts +12 -0
  255. package/lib/styles/variables/_color.d.ts +104 -0
  256. package/lib/styles/variables/_elevation.d.ts +7 -0
  257. package/lib/styles/variables/_font.d.ts +30 -0
  258. package/lib/styles/variables/_motion.d.ts +6 -0
  259. package/lib/styles/variables/_opacity.d.ts +15 -0
  260. package/lib/styles/variables/_shadow.d.ts +24 -0
  261. package/lib/styles/variables/_size.d.ts +57 -0
  262. package/lib/styles/variables/_space.d.ts +12 -0
  263. package/lib/types/charts.d.ts +225 -0
  264. package/lib/types/common.d.ts +10 -0
  265. package/lib/types/date-range-picker.d.ts +17 -0
  266. package/lib/types/date-range-picker.js.flow +2 -3
  267. package/lib/types/index.d.ts +6 -0
  268. package/lib/types/menu.d.ts +13 -0
  269. package/lib/types/toast.d.ts +32 -0
  270. package/lib/types/typography.d.ts +17 -0
  271. package/lib/utils/array/are-arrays-equal.d.ts +11 -0
  272. package/lib/utils/array/index.d.ts +1 -0
  273. package/lib/utils/charts/charts.d.ts +102 -0
  274. package/lib/utils/charts/columnChart.d.ts +51 -0
  275. package/lib/utils/charts/donutChart.d.ts +116 -0
  276. package/lib/utils/charts/funnelChart.d.ts +94 -0
  277. package/lib/utils/charts/helpers.d.ts +44 -0
  278. package/lib/utils/charts/index.d.ts +7 -0
  279. package/lib/utils/charts/lineChart.d.ts +44 -0
  280. package/lib/utils/charts/spiderChart.d.ts +46 -0
  281. package/lib/utils/charts/typography.d.ts +42 -0
  282. package/lib/utils/classify/index.d.ts +27 -0
  283. package/lib/utils/click-away/click-away.d.ts +194 -0
  284. package/lib/utils/click-away/index.d.ts +1 -0
  285. package/lib/utils/date-range-picker/date-range-picker.d.ts +391 -0
  286. package/lib/utils/date-range-picker/index.d.ts +2 -0
  287. package/lib/utils/date-range-picker/timezones.d.ts +262 -0
  288. package/lib/utils/dom/dom.d.ts +245 -0
  289. package/lib/utils/dom/index.d.ts +1 -0
  290. package/lib/utils/helpers/helpers.d.ts +48 -0
  291. package/lib/utils/helpers/index.d.ts +1 -0
  292. package/lib/utils/index.d.ts +14 -0
  293. package/lib/utils/makeClassNameComponent/index.d.ts +1 -0
  294. package/lib/utils/makeClassNameComponent/makeClassNameComponent.d.ts +73 -0
  295. package/lib/utils/menu/index.d.ts +1 -0
  296. package/lib/utils/merge-refs/index.d.ts +1 -0
  297. package/lib/utils/merge-refs/merge-refs.d.ts +15 -0
  298. package/lib/utils/rating/index.d.ts +1 -0
  299. package/lib/utils/rating/rating.d.ts +31 -0
  300. package/lib/utils/score-bar/index.d.ts +1 -0
  301. package/lib/utils/score-bar/score-bar.d.ts +54 -0
  302. package/lib/utils/string/index.d.ts +1 -0
  303. package/lib/utils/string/string.d.ts +30 -0
  304. package/lib/utils/token-list-input/token-list-input.d.ts +32 -0
  305. package/lib/utils/tokens/index.d.ts +1 -0
  306. package/lib/utils/tokens/tokens.d.ts +230 -0
  307. package/package.json +5 -5
@@ -0,0 +1,161 @@
1
+ import * as React from 'react';
2
+ import {colorBackgroundTertiary} from '../../styles/variables/_color';
3
+ import {
4
+ spaceSmall,
5
+ spaceXSmall,
6
+ spaceXXSmall,
7
+ } from '../../styles/variables/_space';
8
+ import classify from '../../utils/classify';
9
+ import type {AvatarSize} from '../Avatar';
10
+ import {BaseAvatar} from '../Avatar';
11
+ import type {PlacementType} from '../Tooltip';
12
+ import {Tooltip} from '../Tooltip';
13
+ import css from './AvatarGroup.module.css';
14
+ const COLOR_SEQUENCE = ['blue', 'green', 'orange', 'red', 'gray'];
15
+ export type AvatarGroupProps = {
16
+ children?: React.ReactNode;
17
+ size?: AvatarSize;
18
+ borderColor?: string;
19
+ maxTooltipLines?: number;
20
+ placement?: PlacementType;
21
+ maxAvatars?: number;
22
+ tooltipElevation?: string;
23
+ };
24
+ export const AvatarGroup: React$AbstractComponent<
25
+ AvatarGroupProps,
26
+ HTMLDivElement
27
+ > = React.forwardRef<AvatarGroupProps, HTMLDivElement>(
28
+ (
29
+ {
30
+ children,
31
+ size = 'medium',
32
+ borderColor = colorBackgroundTertiary,
33
+ maxTooltipLines = 7,
34
+ placement = 'top',
35
+ maxAvatars = 5,
36
+ tooltipElevation,
37
+ }: AvatarGroupProps,
38
+ ref,
39
+ ): React.ReactNode => {
40
+ const childAvatarCount = React.Children.count(children);
41
+ const leftOverlap = {
42
+ small: spaceXXSmall,
43
+ medium: `${parseInt(spaceSmall) / 2}px`,
44
+ large: spaceXSmall,
45
+ extraLarge: spaceSmall,
46
+ };
47
+ let colorIndex = -1;
48
+
49
+ const avatarInGroup = (child, index, color) => {
50
+ const {classNames, text} = child.props;
51
+ const {wrapper, ...restClassNames} = classNames || {};
52
+ const avatar = React.cloneElement(child, {
53
+ size,
54
+ classNames: {
55
+ wrapper: classify(css.avatarInGroup, wrapper),
56
+ ...restClassNames,
57
+ },
58
+ style: {
59
+ borderColor,
60
+ marginLeft: `-${index !== 0 ? leftOverlap[size] : 0}`,
61
+ },
62
+ color,
63
+ });
64
+ return text ? (
65
+ <Tooltip body={text} placement={placement} elevation={tooltipElevation}>
66
+ {avatar}
67
+ </Tooltip>
68
+ ) : (
69
+ avatar
70
+ );
71
+ };
72
+
73
+ const childrenArray = React.Children.toArray(children);
74
+ const totalAvatarCount = childrenArray.length;
75
+
76
+ const plusAvatar = () => {
77
+ const nameList = [];
78
+
79
+ for (let i = maxAvatars - 1; i < totalAvatarCount; i++) {
80
+ const child = childrenArray[i];
81
+ const {text} = child.props;
82
+
83
+ if (text) {
84
+ nameList.push(text);
85
+ }
86
+ }
87
+
88
+ const NameListNode = () => (
89
+ <span>
90
+ {nameList.map((name) => (
91
+ <React.Fragment key={name}>
92
+ {name}
93
+ <br />
94
+ </React.Fragment>
95
+ ))}
96
+ </span>
97
+ );
98
+
99
+ return (
100
+ <Tooltip
101
+ body={<NameListNode />}
102
+ bodyMaxLines={maxTooltipLines}
103
+ placement={placement}
104
+ elevation={tooltipElevation}
105
+ >
106
+ <div className={css.plusAvatar}>
107
+ <BaseAvatar
108
+ size={size}
109
+ color="gray"
110
+ text={`+${childAvatarCount - maxAvatars + 1}`}
111
+ classNames={{
112
+ wrapper: css.avatarInGroup,
113
+ }}
114
+ style={{
115
+ borderColor,
116
+ marginLeft: `-${leftOverlap[size]}`,
117
+ }}
118
+ />
119
+ </div>
120
+ </Tooltip>
121
+ );
122
+ };
123
+
124
+ const childrenWithProps = React.Children.map(children, (child, index) => {
125
+ const {imageSrc} = child.props;
126
+
127
+ if (!imageSrc) {
128
+ colorIndex++;
129
+
130
+ if (colorIndex === COLOR_SEQUENCE.length) {
131
+ colorIndex = 0;
132
+ }
133
+ }
134
+
135
+ const color = COLOR_SEQUENCE[colorIndex];
136
+
137
+ if (childAvatarCount <= maxAvatars) {
138
+ return avatarInGroup(child, index, color);
139
+ } else {
140
+ if (index < maxAvatars - 1) {
141
+ return avatarInGroup(child, index, color);
142
+ } else if (index === maxAvatars) {
143
+ return plusAvatar();
144
+ }
145
+ }
146
+ });
147
+ return (
148
+ <div
149
+ className={classify(css.avatarGroupContainer, {
150
+ [css.extraLargeSize]: size === 'extraLarge',
151
+ [css.largeSize]: size === 'large',
152
+ [css.mediumSize]: size === 'medium',
153
+ [css.smallSize]: size === 'small',
154
+ })}
155
+ ref={ref}
156
+ >
157
+ {childrenWithProps}
158
+ </div>
159
+ );
160
+ },
161
+ );
@@ -0,0 +1 @@
1
+ export * from './AvatarGroup';
@@ -0,0 +1,138 @@
1
+ import {$ReadOnly, $Keys} from 'utility-types';
2
+ import * as React from 'react';
3
+ import {
4
+ colorDanger,
5
+ colorDangerLightest,
6
+ colorGrayLightest,
7
+ colorInformation,
8
+ colorInformationLightest,
9
+ colorNeutral,
10
+ colorNeutralLightest,
11
+ colorSuccess,
12
+ colorSuccessLightest,
13
+ colorWarning,
14
+ colorWarningLightest,
15
+ } from '../../styles/variables/_color';
16
+ import classify from '../../utils/classify';
17
+ import type {IconSize, IconType} from '../Icon';
18
+ import {Icon} from '../Icon';
19
+ import {ButtonTextSmall} from '../Text';
20
+ import css from './Badge.module.css';
21
+ type ClassNames = $ReadOnly<{
22
+ wrapper?: string;
23
+ text?: string;
24
+ icon?: string;
25
+ }>;
26
+ export const BADGE_COLOR = Object.freeze({
27
+ gray: colorGrayLightest,
28
+ red: colorDangerLightest,
29
+ redDark: colorDanger,
30
+ orange: colorWarningLightest,
31
+ orangeDark: colorWarning,
32
+ green: colorSuccessLightest,
33
+ greenDark: colorSuccess,
34
+ blue: colorInformationLightest,
35
+ blueDark: colorInformation,
36
+ indigo: colorNeutralLightest,
37
+ indigoDark: colorNeutral,
38
+ });
39
+ export type BadgeColorType = $Keys<typeof BADGE_COLOR>;
40
+ export type BaseBadgeProps = {
41
+ classNames?: ClassNames;
42
+ fill?: BadgeColorType;
43
+ };
44
+ export type BadgeProps = BaseBadgeProps & {
45
+ text: string;
46
+ };
47
+ export type IconBadgeProps = BaseBadgeProps & {
48
+ iconName: string;
49
+ iconType?: IconType;
50
+ iconSize?: IconSize;
51
+ onClick?:
52
+ | ((arg0: React.SyntheticEvent<HTMLElement>) => unknown)
53
+ | null
54
+ | undefined;
55
+ ariaLabel?: string;
56
+ };
57
+ export const Badge: React$AbstractComponent<BadgeProps, HTMLDivElement> =
58
+ React.forwardRef<BadgeProps, HTMLDivElement>(
59
+ ({classNames, text, fill = 'gray'}: BadgeProps, ref): React.ReactNode => {
60
+ const isDark = fill.includes('Dark');
61
+ return (
62
+ <div
63
+ data-testid="Badge"
64
+ style={{
65
+ '--wrapperBgColor': BADGE_COLOR[fill],
66
+ }}
67
+ className={classify(
68
+ css.badgeWrapper,
69
+ {
70
+ [css.fixedWidth]: text.length <= 2,
71
+ },
72
+ classNames?.wrapper,
73
+ )}
74
+ ref={ref}
75
+ >
76
+ <ButtonTextSmall
77
+ className={classify(
78
+ {
79
+ [css.dark]: isDark,
80
+ [css.light]: !isDark,
81
+ },
82
+ classNames?.text,
83
+ )}
84
+ >
85
+ {text}
86
+ </ButtonTextSmall>
87
+ </div>
88
+ );
89
+ },
90
+ );
91
+ export const IconBadge: React$AbstractComponent<
92
+ IconBadgeProps,
93
+ HTMLDivElement
94
+ > = React.forwardRef<IconBadgeProps, HTMLDivElement>(
95
+ (
96
+ {
97
+ classNames,
98
+ fill = 'gray',
99
+ iconName,
100
+ iconSize = 'small',
101
+ iconType = 'solid',
102
+ ariaLabel,
103
+ onClick,
104
+ }: IconBadgeProps,
105
+ ref,
106
+ ): React.ReactNode => {
107
+ const isDark = fill.includes('Dark');
108
+ return (
109
+ <div
110
+ data-testid="Badge"
111
+ style={{
112
+ '--wrapperBgColor': BADGE_COLOR[fill],
113
+ }}
114
+ className={classify(
115
+ css.badgeWrapper,
116
+ css.iconContainer,
117
+ classNames?.wrapper,
118
+ )}
119
+ ref={ref}
120
+ >
121
+ <Icon
122
+ name={iconName}
123
+ type={iconType}
124
+ size={iconSize}
125
+ ariaLabel={ariaLabel}
126
+ onClick={onClick}
127
+ className={classify(
128
+ {
129
+ [css.dark]: isDark,
130
+ [css.light]: !isDark,
131
+ },
132
+ classNames?.icon,
133
+ )}
134
+ />
135
+ </div>
136
+ );
137
+ },
138
+ );
@@ -0,0 +1 @@
1
+ export * from './Badge';
@@ -0,0 +1,52 @@
1
+ import * as React from 'react';
2
+ import {ALERT_SEMANTIC} from '../../types/common';
3
+ import classify from '../../utils/classify';
4
+ import type {InContextAlertProps} from '../InContextAlert';
5
+ import {InContextAlert} from '../InContextAlert';
6
+ import css from './Banner.module.css';
7
+ export type BannerProps = InContextAlertProps & {
8
+ alignment?: 'top' | 'bottom';
9
+ };
10
+ export const Banner: React$AbstractComponent<BannerProps, HTMLDivElement> =
11
+ React.forwardRef<BannerProps, HTMLDivElement>(
12
+ (
13
+ {
14
+ classNames,
15
+ semantic,
16
+ leftIconType = 'solid',
17
+ alignment = 'top',
18
+ ...props
19
+ }: BannerProps,
20
+ ref,
21
+ ): React.ReactNode => (
22
+ <>
23
+ <InContextAlert
24
+ {...props}
25
+ leftIconType={leftIconType}
26
+ semantic={semantic}
27
+ ref={ref}
28
+ classNames={{
29
+ ...classNames,
30
+ wrapper: classify(
31
+ css.bannerContainer,
32
+ {
33
+ [css.neutral]: semantic === ALERT_SEMANTIC.neutral,
34
+ [css.success]: semantic === ALERT_SEMANTIC.success,
35
+ [css.information]: semantic === ALERT_SEMANTIC.information,
36
+ [css.warning]: semantic === ALERT_SEMANTIC.warning,
37
+ [css.danger]: semantic === ALERT_SEMANTIC.danger,
38
+ [css.topAligned]: alignment === 'top',
39
+ [css.bottomAligned]: alignment === 'bottom',
40
+ },
41
+ classNames?.wrapper,
42
+ ),
43
+ alertText: classify(classNames?.alertText),
44
+ actionContainer: classify(
45
+ css.alertContainer,
46
+ classNames?.actionContainer,
47
+ ),
48
+ }}
49
+ />
50
+ </>
51
+ ),
52
+ );
@@ -0,0 +1 @@
1
+ export * from './Banner';
@@ -0,0 +1,50 @@
1
+ import * as React from 'react';
2
+ import classify from '../../../utils/classify';
3
+ import type {LinkProps} from '../../Link';
4
+ import {Link} from '../../Link';
5
+ import css from './BreadcrumbLink.module.css';
6
+ export type BreadcrumbLinkProps = LinkProps & {
7
+ isActive?: boolean;
8
+ id: string;
9
+ onClick?: (arg0: React.SyntheticEvent<HTMLElement>, id: string) => unknown;
10
+ };
11
+ export const BreadcrumbLink: React$AbstractComponent<
12
+ BreadcrumbLinkProps,
13
+ HTMLAnchorElement | null | undefined
14
+ > = React.forwardRef<BreadcrumbLinkProps, HTMLAnchorElement | null | undefined>(
15
+ (
16
+ {
17
+ id,
18
+ className,
19
+ as,
20
+ underline = false,
21
+ isActive,
22
+ onClick,
23
+ href,
24
+ to,
25
+ ...props
26
+ }: BreadcrumbLinkProps,
27
+ ref,
28
+ ) => (
29
+ <Link
30
+ {...props}
31
+ to={to ?? href}
32
+ data-testid="BreadcrumbLink"
33
+ ref={ref}
34
+ as={as || 'subTitleExtraSmall'}
35
+ underline={underline}
36
+ disabled={isActive}
37
+ className={classify(
38
+ css.breadcrumbLink,
39
+ {
40
+ [css.active]: isActive ?? window.location.href.includes(to ?? href),
41
+ },
42
+ className,
43
+ )}
44
+ onClick={(e) => {
45
+ onClick?.(e, id);
46
+ }}
47
+ />
48
+ ),
49
+ );
50
+ BreadcrumbLink.displayName = 'BreadcrumbLink';
@@ -0,0 +1 @@
1
+ export * from './BreadcrumbLink';
@@ -0,0 +1,64 @@
1
+ import {$ReadOnly} from 'utility-types';
2
+ import * as React from 'react';
3
+ import classify from '../../utils/classify';
4
+ import {Icon} from '../Icon';
5
+ import type {BaseLinkProps} from '../Link';
6
+ import css from './Breadcrumbs.module.css';
7
+ type ClassNames = $ReadOnly<{
8
+ wrapper?: string;
9
+ }>;
10
+ export type BreadcrumbsProps = {
11
+ classNames?: ClassNames;
12
+ children: React.ReactNode;
13
+ linkComponent?: React.AbstractComponent<
14
+ BaseLinkProps,
15
+ HTMLAnchorElement | null | undefined
16
+ >;
17
+ };
18
+
19
+ const BreadcrumbSeparator = (): React.ReactNode => (
20
+ <Icon
21
+ className={css.separator}
22
+ name="chevron-right"
23
+ size="small"
24
+ color="secondary"
25
+ />
26
+ );
27
+
28
+ export const Breadcrumbs: React$AbstractComponent<
29
+ BreadcrumbsProps,
30
+ HTMLDivElement
31
+ > = React.forwardRef<BreadcrumbsProps, HTMLDivElement>(
32
+ ({classNames, children, linkComponent}: BreadcrumbsProps, ref) => {
33
+ const total = React.Children.count(children);
34
+ return (
35
+ <div
36
+ ref={ref}
37
+ data-testid="Breadcrumbs"
38
+ className={classify(css.wrapper, classNames?.wrapper)}
39
+ >
40
+ {React.Children.map(
41
+ children,
42
+ (
43
+ child,
44
+ idx, // eslint-disable-next-line react/no-array-index-key
45
+ ) => (
46
+ <React.Fragment key={`crumb-${idx}`}>
47
+ {/*add linkComponent to BreadcrumbLinks only,
48
+ otherwise return original element */}
49
+ {React.isValidElement(child) &&
50
+ child?.type?.displayName === 'BreadcrumbLink'
51
+ ? React.cloneElement(child, {
52
+ linkComponent,
53
+ })
54
+ : child}
55
+
56
+ {/*Add Separator*/}
57
+ {idx < total - 1 && <BreadcrumbSeparator aria-hidden />}
58
+ </React.Fragment>
59
+ ),
60
+ )}
61
+ </div>
62
+ );
63
+ },
64
+ );
@@ -0,0 +1,2 @@
1
+ export * from './BreadcrumbLink';
2
+ export * from './Breadcrumbs';