@spaced-out/ui-design-system 0.3.45 → 0.3.47-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 (528) hide show
  1. package/.all-contributorsrc +9 -0
  2. package/CHANGELOG.md +19 -0
  3. package/README.md +1 -0
  4. package/gulpfile.js +5 -2
  5. package/lib/components/Avatar/Avatar.js +14 -19
  6. package/lib/components/AvatarGroup/AvatarGroup.js +4 -7
  7. package/lib/components/AvatarGroup/AvatarGroup.js.flow +2 -2
  8. package/lib/components/Badge/Badge.js +6 -11
  9. package/lib/components/BadgedIcon/BadgedIcon.js +2 -4
  10. package/lib/components/Banner/Banner.js +5 -7
  11. package/lib/components/Breadcrumbs/BreadcrumbLink/BreadcrumbLink.js +4 -6
  12. package/lib/components/Breadcrumbs/Breadcrumbs.js +4 -7
  13. package/lib/components/Button/Button.js +8 -14
  14. package/lib/components/ButtonDropdown/ButtonDropdown.js +29 -21
  15. package/lib/components/ButtonDropdown/ButtonDropdown.js.flow +58 -33
  16. package/lib/components/ButtonDropdown/ButtonDropdown.module.css +8 -1
  17. package/lib/components/ButtonDropdown/SimpleButtonDropdown.js +6 -5
  18. package/lib/components/ButtonDropdown/SimpleButtonDropdown.js.flow +6 -1
  19. package/lib/components/ButtonTabs/ButtonTab/ButtonTab.js +5 -7
  20. package/lib/components/ButtonTabs/ButtonTabDropdown.js +16 -10
  21. package/lib/components/ButtonTabs/ButtonTabDropdown.js.flow +40 -24
  22. package/lib/components/ButtonTabs/ButtonTabDropdown.module.css +4 -0
  23. package/lib/components/ButtonTabs/ButtonTabs.js +8 -9
  24. package/lib/components/ButtonTabs/ButtonTabs.js.flow +4 -0
  25. package/lib/components/Card/Card.js +7 -11
  26. package/lib/components/Charts/ChartTooltip/index.js +3 -5
  27. package/lib/components/Charts/ChartWrapper/ChartWrapper.js +5 -13
  28. package/lib/components/Charts/ColumnChart/ColumnChart.js +2 -6
  29. package/lib/components/Charts/DonutChart/DonutChart.js +2 -6
  30. package/lib/components/Charts/FunnelChart/FunnelChart.js +2 -7
  31. package/lib/components/Charts/LineChart/LineChart.js +2 -6
  32. package/lib/components/Charts/SpiderChart/SpiderChart.js +2 -7
  33. package/lib/components/ChatBubble/ChatBubble.js +5 -8
  34. package/lib/components/Checkbox/Checkbox.js +8 -7
  35. package/lib/components/Checkbox/CheckboxGroup.js +5 -8
  36. package/lib/components/Chip/Chip.js +5 -8
  37. package/lib/components/CircularLoader/CircularLoader.js +4 -7
  38. package/lib/components/CollapsibleCard/CollapsibleCard.js +5 -9
  39. package/lib/components/Combobox/Combobox.js +4 -7
  40. package/lib/components/Combobox/helper.js +3 -7
  41. package/lib/components/ConditionalWrapper/ConditionalWrapper.js +1 -3
  42. package/lib/components/DateRangePicker/Calendar.js +2 -5
  43. package/lib/components/DateRangePicker/DateRangePicker.js +4 -8
  44. package/lib/components/DateRangePicker/DateRangeWrapper.js +5 -7
  45. package/lib/components/DateRangePicker/Day.js +2 -6
  46. package/lib/components/Dialog/Dialog.js +4 -6
  47. package/lib/components/Disclaimer/Disclaimer.js +5 -7
  48. package/lib/components/Dropdown/Dropdown.js +28 -15
  49. package/lib/components/Dropdown/Dropdown.js.flow +57 -32
  50. package/lib/components/Dropdown/Dropdown.module.css +5 -0
  51. package/lib/components/Dropdown/SimpleDropdown.js +5 -5
  52. package/lib/components/Dropdown/SimpleDropdown.js.flow +4 -0
  53. package/lib/components/EmptyState/EmptyImages/CalendarEmptyImage.js +1 -3
  54. package/lib/components/EmptyState/EmptyImages/ChartEmptyImage.js +1 -3
  55. package/lib/components/EmptyState/EmptyImages/DataEmptyImage.js +1 -3
  56. package/lib/components/EmptyState/EmptyImages/FileEmptyImage.js +1 -3
  57. package/lib/components/EmptyState/EmptyImages/MessageEmptyImage.js +1 -3
  58. package/lib/components/EmptyState/EmptyImages/UploadEmptyImage.js +1 -3
  59. package/lib/components/EmptyState/EmptyState.js +5 -7
  60. package/lib/components/ErrorMessage/ErrorImages/ForbiddenImage.js +1 -3
  61. package/lib/components/ErrorMessage/ErrorImages/NotFoundImage.js +1 -3
  62. package/lib/components/ErrorMessage/ErrorImages/ServerErrorImage.js +1 -3
  63. package/lib/components/ErrorMessage/ErrorImages/UnauthorizedImage.js +1 -3
  64. package/lib/components/ErrorMessage/ErrorMessage.js +5 -7
  65. package/lib/components/FileUpload/FileBlock/FileBlock.js +3 -6
  66. package/lib/components/FileUpload/FileUpload.js +12 -6
  67. package/lib/components/FilterButtonOverlay/FilterButtonOverlay.js +5 -7
  68. package/lib/components/FocusManager/FocusManager.js +3 -4
  69. package/lib/components/FocusManagerWithArrowKeyNavigation/FocusManagerWithArrowKeyNavigation.js +4 -6
  70. package/lib/components/FormTitleWrapper/FormTitleWrapper.js +4 -7
  71. package/lib/components/Grid/Grid.js +3 -5
  72. package/lib/components/Icon/ClickableIcon.js +6 -9
  73. package/lib/components/Icon/Icon.docs.js +2 -4
  74. package/lib/components/Icon/Icon.js +6 -11
  75. package/lib/components/Icon/SemanticIcon.js +3 -4
  76. package/lib/components/InContextAlert/InContextAlert.js +4 -7
  77. package/lib/components/InfinitePagination/InfinitePagination.js +4 -8
  78. package/lib/components/InlineDropdown/InlineDropdown.js +30 -15
  79. package/lib/components/InlineDropdown/InlineDropdown.js.flow +57 -30
  80. package/lib/components/InlineDropdown/InlineDropdown.module.css +5 -0
  81. package/lib/components/InlineDropdown/SimpleInlineDropdown.js +5 -5
  82. package/lib/components/InlineDropdown/SimpleInlineDropdown.js.flow +4 -0
  83. package/lib/components/Input/Input.js +6 -10
  84. package/lib/components/KPIBox/KPIBox.js +5 -7
  85. package/lib/components/LinearLoader/LinearLoader.js +4 -7
  86. package/lib/components/Link/Link.js +7 -12
  87. package/lib/components/Menu/Menu.js +7 -7
  88. package/lib/components/Menu/MenuOptionButton.js +3 -4
  89. package/lib/components/Modal/Modal.js +4 -5
  90. package/lib/components/Notification/Notification.js +5 -9
  91. package/lib/components/OptionButton/OptionButton.js +5 -7
  92. package/lib/components/OptionButton/SimpleOptionButton.js +3 -5
  93. package/lib/components/PageTitle/PageTitle.js +6 -9
  94. package/lib/components/Pagination/Pagination.js +5 -7
  95. package/lib/components/Pagination/PaginationItem.js +2 -4
  96. package/lib/components/Panel/Panel.js +4 -6
  97. package/lib/components/ProgressDonut/ProgressDonut.js +4 -7
  98. package/lib/components/PromptChip/PromptChip.js +5 -9
  99. package/lib/components/PromptInput/PromptInput.js +4 -7
  100. package/lib/components/RadioButton/RadioButton.js +12 -7
  101. package/lib/components/RadioButton/RadioGroup.js +11 -8
  102. package/lib/components/RadioTile/RadioTile.js +5 -7
  103. package/lib/components/RangeSlider/RangeSlider.js +5 -8
  104. package/lib/components/Rating/Rating.js +5 -9
  105. package/lib/components/ScoreBar/ScoreBar.js +6 -11
  106. package/lib/components/SearchInput/SearchInput.js +5 -7
  107. package/lib/components/Separator/Separator.js +5 -9
  108. package/lib/components/Shimmer/Shimmer.js +5 -10
  109. package/lib/components/SideMenuLink/SideMenuLink.js +5 -8
  110. package/lib/components/StatusIndicator/StatusIndicator.js +6 -9
  111. package/lib/components/Stepper/Step/Step.js +4 -7
  112. package/lib/components/Stepper/Step/StepContent.js +2 -4
  113. package/lib/components/Stepper/Step/StepLabel.js +2 -4
  114. package/lib/components/Stepper/Stepper.js +4 -7
  115. package/lib/components/StickyBar/StickyBar.js +5 -7
  116. package/lib/components/SubMenu/SubMenu.js +4 -7
  117. package/lib/components/SubMenu/SubMenuGroup.js +3 -5
  118. package/lib/components/SubMenu/SubMenuItem.js +7 -10
  119. package/lib/components/SubMenu/SubMenuLink.js +4 -7
  120. package/lib/components/Table/Cell.js +8 -12
  121. package/lib/components/Table/DefaultRow.js +9 -6
  122. package/lib/components/Table/DefaultTableHeader.js +4 -8
  123. package/lib/components/Table/StaticTable.js +9 -13
  124. package/lib/components/Table/StaticTable.js.flow +1 -1
  125. package/lib/components/Table/Table.docs.js +3 -4
  126. package/lib/components/Table/Table.docs.js.flow +1 -1
  127. package/lib/components/Table/Table.js +4 -3
  128. package/lib/components/Table/TableActionBar.js +3 -4
  129. package/lib/components/Table/TableBottomBar.js +3 -4
  130. package/lib/components/Table/TableTopBar.js +3 -4
  131. package/lib/components/Table/dummyTableData.js +2 -4
  132. package/lib/components/Table/hooks.js +2 -4
  133. package/lib/components/Tabs/Tab/Tab.js +6 -10
  134. package/lib/components/Tabs/TabList/TabDropdown.js +17 -11
  135. package/lib/components/Tabs/TabList/TabDropdown.js.flow +38 -22
  136. package/lib/components/Tabs/TabList/TabDropdown.module.css +4 -0
  137. package/lib/components/Tabs/TabList/TabList.js +9 -11
  138. package/lib/components/Tabs/TabList/TabList.js.flow +4 -0
  139. package/lib/components/Text/Text.js +48 -75
  140. package/lib/components/TextTile/TextTile.js +4 -7
  141. package/lib/components/Textarea/Textarea.js +4 -6
  142. package/lib/components/Timeline/Timeline.js +4 -8
  143. package/lib/components/Timeline/TimelineItem/TimelineItem.js +3 -6
  144. package/lib/components/Toast/Toast.js +8 -12
  145. package/lib/components/Toast/ToastContainer.js +3 -6
  146. package/lib/components/Toast/ToastManager.js +5 -10
  147. package/lib/components/Toggle/Toggle.js +12 -7
  148. package/lib/components/TokenListInput/TokenListInput.js +33 -14
  149. package/lib/components/TokenListInput/TokenListInput.js.flow +58 -32
  150. package/lib/components/TokenListInput/TokenListInput.module.css +5 -0
  151. package/lib/components/TokenListInput/TokenValueChips.js +1 -3
  152. package/lib/components/Tooltip/Tooltip.js +9 -9
  153. package/lib/components/Tooltip/Tooltip.js.flow +2 -2
  154. package/lib/components/Truncate/Truncate.js +6 -10
  155. package/lib/components/TruncatedTextWithTooltip/TruncatedTextWithTooltip.js +3 -4
  156. package/lib/components/Typeahead/SimpleTypeahead.js +6 -6
  157. package/lib/components/Typeahead/SimpleTypeahead.js.flow +4 -0
  158. package/lib/components/Typeahead/Typeahead.js +30 -15
  159. package/lib/components/Typeahead/Typeahead.js.flow +58 -30
  160. package/lib/components/Typeahead/Typeahead.module.css +5 -0
  161. package/lib/components/WeekdayPicker/WeekdayPicker.js +5 -9
  162. package/lib/hooks/index.js +11 -0
  163. package/lib/hooks/index.js.flow +1 -0
  164. package/lib/hooks/useArbitraryOptionAddition/useArbitraryOptionAddition.js +0 -1
  165. package/lib/hooks/useCopyToClipboard/useCopyToClipboard.js +0 -2
  166. package/lib/hooks/useDebounce/useDebounce.js +1 -3
  167. package/lib/hooks/useFileUpload/useFileUpload.js +2 -4
  168. package/lib/hooks/useFilteredOptions/useFilteredOptions.js +1 -4
  169. package/lib/hooks/useInfiniteScroll/useInfiniteScroll.js +1 -3
  170. package/lib/hooks/useInputState/useInputState.js +1 -3
  171. package/lib/hooks/useLockedBody/useLockedBody.js +0 -1
  172. package/lib/hooks/useModal/useModal.js +0 -1
  173. package/lib/hooks/useMountTransition/index.js +1 -3
  174. package/lib/hooks/usePagination/usePagination.js +0 -1
  175. package/lib/hooks/useReferenceElementWidth/index.js +16 -0
  176. package/lib/hooks/useReferenceElementWidth/index.js.flow +3 -0
  177. package/lib/hooks/useReferenceElementWidth/useReferenceElementWidth.js +21 -0
  178. package/lib/hooks/useReferenceElementWidth/useReferenceElementWidth.js.flow +23 -0
  179. package/lib/hooks/useResizeObserver/useResizeObserver.js +1 -3
  180. package/lib/hooks/useToastPortal/useToastPortal.js +0 -1
  181. package/lib/hooks/useToggle/useToggle.js +0 -1
  182. package/lib/hooks/useWindowSize/useWindowSize.js +0 -1
  183. package/lib/styles/index.js +267 -535
  184. package/lib/styles/variables/_border.js +12 -25
  185. package/lib/styles/variables/_color.js +104 -209
  186. package/lib/styles/variables/_elevation.js +7 -15
  187. package/lib/styles/variables/_font.js +30 -61
  188. package/lib/styles/variables/_motion.js +6 -13
  189. package/lib/styles/variables/_opacity.js +15 -31
  190. package/lib/styles/variables/_shadow.js +24 -49
  191. package/lib/styles/variables/_size.js +57 -115
  192. package/lib/styles/variables/_space.js +12 -25
  193. package/lib/types/charts.js +1 -0
  194. package/lib/types/common.js +2 -4
  195. package/lib/types/menu.js +1 -0
  196. package/lib/types/toast.js +4 -8
  197. package/lib/types/typography.js +2 -4
  198. package/lib/utils/array/are-arrays-equal.js +0 -1
  199. package/lib/utils/charts/charts.js +4 -8
  200. package/lib/utils/charts/columnChart.js +1 -4
  201. package/lib/utils/charts/donutChart.js +2 -4
  202. package/lib/utils/charts/funnelChart.js +0 -4
  203. package/lib/utils/charts/helpers.js +9 -17
  204. package/lib/utils/charts/lineChart.js +0 -2
  205. package/lib/utils/charts/spiderChart.js +2 -3
  206. package/lib/utils/charts/typography.js +7 -14
  207. package/lib/utils/classify/index.js +2 -4
  208. package/lib/utils/click-away/click-away.js +50 -56
  209. package/lib/utils/date-range-picker/date-range-picker.js +6 -14
  210. package/lib/utils/date-range-picker/timezones.js +2 -5
  211. package/lib/utils/dom/dom.js +0 -1
  212. package/lib/utils/helpers/helpers.js +0 -1
  213. package/lib/utils/makeClassNameComponent/makeClassNameComponent.js +3 -4
  214. package/lib/utils/menu/menu.js +1 -3
  215. package/lib/utils/rating/rating.js +2 -5
  216. package/lib/utils/score-bar/score-bar.js +2 -4
  217. package/lib/utils/string/string.js +0 -1
  218. package/lib/utils/token-list-input/token-list-input.js +1 -3
  219. package/lib/utils/tokens/tokens.js +1 -3
  220. package/package.json +7 -7
  221. package/lib/components/Avatar/Avatar.d.ts +0 -263
  222. package/lib/components/Avatar/index.d.ts +0 -1
  223. package/lib/components/AvatarGroup/AvatarGroup.d.ts +0 -161
  224. package/lib/components/AvatarGroup/index.d.ts +0 -1
  225. package/lib/components/Badge/Badge.d.ts +0 -138
  226. package/lib/components/Badge/index.d.ts +0 -1
  227. package/lib/components/BadgedIcon/BadgedIcon.d.ts +0 -70
  228. package/lib/components/BadgedIcon/index.d.ts +0 -1
  229. package/lib/components/Banner/Banner.d.ts +0 -52
  230. package/lib/components/Banner/index.d.ts +0 -1
  231. package/lib/components/Breadcrumbs/BreadcrumbLink/BreadcrumbLink.d.ts +0 -50
  232. package/lib/components/Breadcrumbs/BreadcrumbLink/index.d.ts +0 -1
  233. package/lib/components/Breadcrumbs/Breadcrumbs.d.ts +0 -64
  234. package/lib/components/Breadcrumbs/index.d.ts +0 -2
  235. package/lib/components/Button/Button.d.ts +0 -288
  236. package/lib/components/Button/index.d.ts +0 -14
  237. package/lib/components/ButtonDropdown/ButtonDropdown.d.ts +0 -192
  238. package/lib/components/ButtonDropdown/SimpleButtonDropdown.d.ts +0 -148
  239. package/lib/components/ButtonDropdown/index.d.ts +0 -2
  240. package/lib/components/ButtonTabs/ButtonTab/ButtonTab.d.ts +0 -82
  241. package/lib/components/ButtonTabs/ButtonTab/index.d.ts +0 -1
  242. package/lib/components/ButtonTabs/ButtonTabDropdown.d.ts +0 -118
  243. package/lib/components/ButtonTabs/ButtonTabs.d.ts +0 -113
  244. package/lib/components/ButtonTabs/index.d.ts +0 -2
  245. package/lib/components/Card/Card.d.ts +0 -163
  246. package/lib/components/Card/index.d.ts +0 -1
  247. package/lib/components/Charts/ChartTooltip/index.d.ts +0 -10
  248. package/lib/components/Charts/ChartWrapper/ChartWrapper.d.ts +0 -184
  249. package/lib/components/Charts/ChartWrapper/index.d.ts +0 -1
  250. package/lib/components/Charts/ColumnChart/ColumnChart.d.ts +0 -111
  251. package/lib/components/Charts/ColumnChart/index.d.ts +0 -1
  252. package/lib/components/Charts/DonutChart/DonutChart.d.ts +0 -142
  253. package/lib/components/Charts/DonutChart/index.d.ts +0 -1
  254. package/lib/components/Charts/FunnelChart/FunnelChart.d.ts +0 -99
  255. package/lib/components/Charts/FunnelChart/index.d.ts +0 -1
  256. package/lib/components/Charts/LineChart/LineChart.d.ts +0 -97
  257. package/lib/components/Charts/LineChart/index.d.ts +0 -1
  258. package/lib/components/Charts/SpiderChart/SpiderChart.d.ts +0 -95
  259. package/lib/components/Charts/SpiderChart/index.d.ts +0 -1
  260. package/lib/components/Charts/index.d.ts +0 -7
  261. package/lib/components/ChatBubble/ChatBubble.d.ts +0 -203
  262. package/lib/components/ChatBubble/index.d.ts +0 -1
  263. package/lib/components/Checkbox/Checkbox.d.ts +0 -165
  264. package/lib/components/Checkbox/CheckboxGroup.d.ts +0 -113
  265. package/lib/components/Checkbox/index.d.ts +0 -2
  266. package/lib/components/Chip/Chip.d.ts +0 -202
  267. package/lib/components/Chip/index.d.ts +0 -2
  268. package/lib/components/CircularLoader/CircularLoader.d.ts +0 -56
  269. package/lib/components/CircularLoader/index.d.ts +0 -1
  270. package/lib/components/CollapsibleCard/CollapsibleCard.d.ts +0 -134
  271. package/lib/components/CollapsibleCard/index.d.ts +0 -1
  272. package/lib/components/Combobox/Combobox.d.ts +0 -292
  273. package/lib/components/Combobox/helper.d.ts +0 -205
  274. package/lib/components/Combobox/index.d.ts +0 -1
  275. package/lib/components/ConditionalWrapper/ConditionalWrapper.d.ts +0 -12
  276. package/lib/components/ConditionalWrapper/index.d.ts +0 -1
  277. package/lib/components/DateRangePicker/Calendar.d.ts +0 -97
  278. package/lib/components/DateRangePicker/DateRangePicker.d.ts +0 -196
  279. package/lib/components/DateRangePicker/DateRangeWrapper.d.ts +0 -347
  280. package/lib/components/DateRangePicker/Day.d.ts +0 -70
  281. package/lib/components/DateRangePicker/index.d.ts +0 -1
  282. package/lib/components/Dialog/Dialog.d.ts +0 -208
  283. package/lib/components/Dialog/index.d.ts +0 -1
  284. package/lib/components/Disclaimer/Disclaimer.d.ts +0 -32
  285. package/lib/components/Disclaimer/index.d.ts +0 -1
  286. package/lib/components/Dropdown/Dropdown.d.ts +0 -145
  287. package/lib/components/Dropdown/SimpleDropdown.d.ts +0 -142
  288. package/lib/components/Dropdown/index.d.ts +0 -2
  289. package/lib/components/EmptyState/EmptyImages/CalendarEmptyImage.d.ts +0 -108
  290. package/lib/components/EmptyState/EmptyImages/ChartEmptyImage.d.ts +0 -194
  291. package/lib/components/EmptyState/EmptyImages/DataEmptyImage.d.ts +0 -116
  292. package/lib/components/EmptyState/EmptyImages/FileEmptyImage.d.ts +0 -133
  293. package/lib/components/EmptyState/EmptyImages/MessageEmptyImage.d.ts +0 -64
  294. package/lib/components/EmptyState/EmptyImages/UploadEmptyImage.d.ts +0 -67
  295. package/lib/components/EmptyState/EmptyImages/index.d.ts +0 -6
  296. package/lib/components/EmptyState/EmptyState.d.ts +0 -82
  297. package/lib/components/EmptyState/index.d.ts +0 -1
  298. package/lib/components/ErrorMessage/ErrorImages/ForbiddenImage.d.ts +0 -85
  299. package/lib/components/ErrorMessage/ErrorImages/NotFoundImage.d.ts +0 -117
  300. package/lib/components/ErrorMessage/ErrorImages/ServerErrorImage.d.ts +0 -237
  301. package/lib/components/ErrorMessage/ErrorImages/UnauthorizedImage.d.ts +0 -73
  302. package/lib/components/ErrorMessage/ErrorImages/index.d.ts +0 -4
  303. package/lib/components/ErrorMessage/ErrorMessage.d.ts +0 -86
  304. package/lib/components/ErrorMessage/index.d.ts +0 -1
  305. package/lib/components/FileUpload/FileBlock/FileBlock.d.ts +0 -137
  306. package/lib/components/FileUpload/FileBlock/index.d.ts +0 -1
  307. package/lib/components/FileUpload/FileUpload.d.ts +0 -190
  308. package/lib/components/FileUpload/index.d.ts +0 -2
  309. package/lib/components/FilterButtonOverlay/FilterButtonOverlay.d.ts +0 -130
  310. package/lib/components/FilterButtonOverlay/index.d.ts +0 -1
  311. package/lib/components/FocusManager/FocusManager.d.ts +0 -52
  312. package/lib/components/FocusManager/index.d.ts +0 -1
  313. package/lib/components/FocusManagerWithArrowKeyNavigation/FocusManagerWithArrowKeyNavigation.d.ts +0 -137
  314. package/lib/components/FocusManagerWithArrowKeyNavigation/index.d.ts +0 -1
  315. package/lib/components/FormTitleWrapper/FormTitleWrapper.d.ts +0 -62
  316. package/lib/components/FormTitleWrapper/index.d.ts +0 -1
  317. package/lib/components/Grid/Grid.d.ts +0 -104
  318. package/lib/components/Grid/index.d.ts +0 -1
  319. package/lib/components/Icon/ClickableIcon.d.ts +0 -106
  320. package/lib/components/Icon/Icon.d.ts +0 -71
  321. package/lib/components/Icon/Icon.docs.d.ts +0 -152
  322. package/lib/components/Icon/SemanticIcon.d.ts +0 -42
  323. package/lib/components/Icon/index.d.ts +0 -3
  324. package/lib/components/InContextAlert/InContextAlert.d.ts +0 -210
  325. package/lib/components/InContextAlert/index.d.ts +0 -1
  326. package/lib/components/InfinitePagination/InfinitePagination.d.ts +0 -112
  327. package/lib/components/InfinitePagination/index.d.ts +0 -1
  328. package/lib/components/InlineDropdown/InlineDropdown.d.ts +0 -146
  329. package/lib/components/InlineDropdown/SimpleInlineDropdown.d.ts +0 -145
  330. package/lib/components/InlineDropdown/index.d.ts +0 -2
  331. package/lib/components/Input/Input.d.ts +0 -327
  332. package/lib/components/Input/index.d.ts +0 -1
  333. package/lib/components/KPIBox/KPIBox.d.ts +0 -89
  334. package/lib/components/KPIBox/index.d.ts +0 -1
  335. package/lib/components/LinearLoader/LinearLoader.d.ts +0 -44
  336. package/lib/components/LinearLoader/index.d.ts +0 -1
  337. package/lib/components/Link/Link.d.ts +0 -225
  338. package/lib/components/Link/index.d.ts +0 -1
  339. package/lib/components/Menu/Menu.d.ts +0 -379
  340. package/lib/components/Menu/MenuOptionButton.d.ts +0 -199
  341. package/lib/components/Menu/index.d.ts +0 -2
  342. package/lib/components/Modal/Modal.d.ts +0 -362
  343. package/lib/components/Modal/index.d.ts +0 -14
  344. package/lib/components/Notification/Notification.d.ts +0 -147
  345. package/lib/components/Notification/index.d.ts +0 -1
  346. package/lib/components/OptionButton/OptionButton.d.ts +0 -150
  347. package/lib/components/OptionButton/SimpleOptionButton.d.ts +0 -150
  348. package/lib/components/OptionButton/index.d.ts +0 -2
  349. package/lib/components/PageTitle/PageTitle.d.ts +0 -256
  350. package/lib/components/PageTitle/index.d.ts +0 -1
  351. package/lib/components/Pagination/Pagination.d.ts +0 -144
  352. package/lib/components/Pagination/PaginationItem.d.ts +0 -136
  353. package/lib/components/Pagination/index.d.ts +0 -1
  354. package/lib/components/Panel/Panel.d.ts +0 -168
  355. package/lib/components/Panel/index.d.ts +0 -9
  356. package/lib/components/ProgressDonut/ProgressDonut.d.ts +0 -102
  357. package/lib/components/ProgressDonut/index.d.ts +0 -1
  358. package/lib/components/PromptChip/PromptChip.d.ts +0 -167
  359. package/lib/components/PromptChip/index.d.ts +0 -1
  360. package/lib/components/PromptInput/PromptInput.d.ts +0 -189
  361. package/lib/components/PromptInput/index.d.ts +0 -1
  362. package/lib/components/RadioButton/RadioButton.d.ts +0 -132
  363. package/lib/components/RadioButton/RadioGroup.d.ts +0 -88
  364. package/lib/components/RadioButton/index.d.ts +0 -2
  365. package/lib/components/RadioTile/RadioTile.d.ts +0 -109
  366. package/lib/components/RadioTile/index.d.ts +0 -1
  367. package/lib/components/RangeSlider/RangeSlider.d.ts +0 -207
  368. package/lib/components/RangeSlider/index.d.ts +0 -1
  369. package/lib/components/Rating/Rating.d.ts +0 -131
  370. package/lib/components/Rating/index.d.ts +0 -1
  371. package/lib/components/ScoreBar/ScoreBar.d.ts +0 -122
  372. package/lib/components/ScoreBar/index.d.ts +0 -1
  373. package/lib/components/SearchInput/SearchInput.d.ts +0 -79
  374. package/lib/components/SearchInput/index.d.ts +0 -2
  375. package/lib/components/Separator/Separator.d.ts +0 -51
  376. package/lib/components/Separator/index.d.ts +0 -1
  377. package/lib/components/Shimmer/Shimmer.d.ts +0 -131
  378. package/lib/components/Shimmer/index.d.ts +0 -1
  379. package/lib/components/SideMenuLink/SideMenuLink.d.ts +0 -336
  380. package/lib/components/SideMenuLink/index.d.ts +0 -1
  381. package/lib/components/StatusIndicator/StatusIndicator.d.ts +0 -60
  382. package/lib/components/StatusIndicator/index.d.ts +0 -1
  383. package/lib/components/Stepper/Step/Step.d.ts +0 -119
  384. package/lib/components/Stepper/Step/StepContent.d.ts +0 -35
  385. package/lib/components/Stepper/Step/StepLabel.d.ts +0 -35
  386. package/lib/components/Stepper/Step/index.d.ts +0 -3
  387. package/lib/components/Stepper/Stepper.d.ts +0 -60
  388. package/lib/components/Stepper/index.d.ts +0 -2
  389. package/lib/components/StickyBar/StickyBar.d.ts +0 -55
  390. package/lib/components/StickyBar/index.d.ts +0 -1
  391. package/lib/components/SubMenu/SubMenu.d.ts +0 -89
  392. package/lib/components/SubMenu/SubMenuGroup.d.ts +0 -156
  393. package/lib/components/SubMenu/SubMenuItem.d.ts +0 -161
  394. package/lib/components/SubMenu/SubMenuLink.d.ts +0 -81
  395. package/lib/components/SubMenu/index.d.ts +0 -4
  396. package/lib/components/Table/Cell.d.ts +0 -107
  397. package/lib/components/Table/DefaultRow.d.ts +0 -145
  398. package/lib/components/Table/DefaultTableHeader.d.ts +0 -237
  399. package/lib/components/Table/StaticTable.d.ts +0 -205
  400. package/lib/components/Table/Table.d.ts +0 -114
  401. package/lib/components/Table/Table.docs.d.ts +0 -544
  402. package/lib/components/Table/TableActionBar.d.ts +0 -48
  403. package/lib/components/Table/TableBottomBar.d.ts +0 -20
  404. package/lib/components/Table/TableTopBar.d.ts +0 -20
  405. package/lib/components/Table/dummyTableData.d.ts +0 -2189
  406. package/lib/components/Table/hooks.d.ts +0 -98
  407. package/lib/components/Table/index.d.ts +0 -8
  408. package/lib/components/Tabs/Tab/Tab.d.ts +0 -146
  409. package/lib/components/Tabs/Tab/index.d.ts +0 -1
  410. package/lib/components/Tabs/TabList/TabDropdown.d.ts +0 -100
  411. package/lib/components/Tabs/TabList/TabList.d.ts +0 -157
  412. package/lib/components/Tabs/TabList/index.d.ts +0 -1
  413. package/lib/components/Tabs/index.d.ts +0 -2
  414. package/lib/components/Text/Text.d.ts +0 -1021
  415. package/lib/components/Text/index.d.ts +0 -30
  416. package/lib/components/TextTile/TextTile.d.ts +0 -40
  417. package/lib/components/TextTile/index.d.ts +0 -1
  418. package/lib/components/Textarea/Textarea.d.ts +0 -132
  419. package/lib/components/Textarea/index.d.ts +0 -2
  420. package/lib/components/Timeline/Timeline.d.ts +0 -40
  421. package/lib/components/Timeline/TimelineItem/TimelineItem.d.ts +0 -121
  422. package/lib/components/Timeline/TimelineItem/index.d.ts +0 -1
  423. package/lib/components/Timeline/index.d.ts +0 -2
  424. package/lib/components/Toast/Toast.d.ts +0 -248
  425. package/lib/components/Toast/ToastContainer.d.ts +0 -140
  426. package/lib/components/Toast/ToastManager.d.ts +0 -58
  427. package/lib/components/Toast/index.d.ts +0 -10
  428. package/lib/components/Toggle/Toggle.d.ts +0 -111
  429. package/lib/components/Toggle/index.d.ts +0 -1
  430. package/lib/components/TokenListInput/TokenListInput.d.ts +0 -351
  431. package/lib/components/TokenListInput/TokenValueChips.d.ts +0 -60
  432. package/lib/components/TokenListInput/index.d.ts +0 -1
  433. package/lib/components/Tooltip/Tooltip.d.ts +0 -186
  434. package/lib/components/Tooltip/index.d.ts +0 -1
  435. package/lib/components/Truncate/Truncate.d.ts +0 -87
  436. package/lib/components/Truncate/index.d.ts +0 -2
  437. package/lib/components/TruncatedTextWithTooltip/TruncatedTextWithTooltip.d.ts +0 -95
  438. package/lib/components/TruncatedTextWithTooltip/index.d.ts +0 -1
  439. package/lib/components/Typeahead/SimpleTypeahead.d.ts +0 -141
  440. package/lib/components/Typeahead/Typeahead.d.ts +0 -217
  441. package/lib/components/Typeahead/index.d.ts +0 -2
  442. package/lib/components/WeekdayPicker/WeekdayPicker.d.ts +0 -242
  443. package/lib/components/WeekdayPicker/index.d.ts +0 -1
  444. package/lib/components/index.d.ts +0 -74
  445. package/lib/hooks/index.d.ts +0 -15
  446. package/lib/hooks/useArbitraryOptionAddition/index.d.ts +0 -1
  447. package/lib/hooks/useArbitraryOptionAddition/useArbitraryOptionAddition.d.ts +0 -124
  448. package/lib/hooks/useCopyToClipboard/index.d.ts +0 -1
  449. package/lib/hooks/useCopyToClipboard/useCopyToClipboard.d.ts +0 -27
  450. package/lib/hooks/useDebounce/index.d.ts +0 -1
  451. package/lib/hooks/useDebounce/useDebounce.d.ts +0 -13
  452. package/lib/hooks/useFileUpload/index.d.ts +0 -1
  453. package/lib/hooks/useFileUpload/useFileUpload.d.ts +0 -342
  454. package/lib/hooks/useFilteredOptions/index.d.ts +0 -1
  455. package/lib/hooks/useFilteredOptions/useFilteredOptions.d.ts +0 -87
  456. package/lib/hooks/useInfiniteScroll/index.d.ts +0 -1
  457. package/lib/hooks/useInfiniteScroll/useInfiniteScroll.d.ts +0 -77
  458. package/lib/hooks/useInputState/index.d.ts +0 -1
  459. package/lib/hooks/useInputState/useInputState.d.ts +0 -22
  460. package/lib/hooks/useLockedBody/index.d.ts +0 -1
  461. package/lib/hooks/useLockedBody/useLockedBody.d.ts +0 -46
  462. package/lib/hooks/useModal/index.d.ts +0 -1
  463. package/lib/hooks/useModal/useModal.d.ts +0 -32
  464. package/lib/hooks/useMountTransition/index.d.ts +0 -24
  465. package/lib/hooks/usePagination/index.d.ts +0 -1
  466. package/lib/hooks/usePagination/usePagination.d.ts +0 -140
  467. package/lib/hooks/useResizeObserver/index.d.ts +0 -1
  468. package/lib/hooks/useResizeObserver/useResizeObserver.d.ts +0 -22
  469. package/lib/hooks/useToastPortal/index.d.ts +0 -1
  470. package/lib/hooks/useToastPortal/useToastPortal.d.ts +0 -31
  471. package/lib/hooks/useToggle/index.d.ts +0 -1
  472. package/lib/hooks/useToggle/useToggle.d.ts +0 -11
  473. package/lib/hooks/useWindowSize/index.d.ts +0 -1
  474. package/lib/hooks/useWindowSize/useWindowSize.d.ts +0 -28
  475. package/lib/index.d.ts +0 -5
  476. package/lib/styles/index.d.ts +0 -267
  477. package/lib/styles/variables/_border.d.ts +0 -12
  478. package/lib/styles/variables/_color.d.ts +0 -104
  479. package/lib/styles/variables/_elevation.d.ts +0 -7
  480. package/lib/styles/variables/_font.d.ts +0 -30
  481. package/lib/styles/variables/_motion.d.ts +0 -6
  482. package/lib/styles/variables/_opacity.d.ts +0 -15
  483. package/lib/styles/variables/_shadow.d.ts +0 -24
  484. package/lib/styles/variables/_size.d.ts +0 -57
  485. package/lib/styles/variables/_space.d.ts +0 -12
  486. package/lib/types/charts.d.ts +0 -225
  487. package/lib/types/common.d.ts +0 -10
  488. package/lib/types/date-range-picker.d.ts +0 -17
  489. package/lib/types/index.d.ts +0 -6
  490. package/lib/types/menu.d.ts +0 -13
  491. package/lib/types/toast.d.ts +0 -32
  492. package/lib/types/typography.d.ts +0 -17
  493. package/lib/utils/array/are-arrays-equal.d.ts +0 -11
  494. package/lib/utils/array/index.d.ts +0 -1
  495. package/lib/utils/charts/charts.d.ts +0 -102
  496. package/lib/utils/charts/columnChart.d.ts +0 -51
  497. package/lib/utils/charts/donutChart.d.ts +0 -116
  498. package/lib/utils/charts/funnelChart.d.ts +0 -94
  499. package/lib/utils/charts/helpers.d.ts +0 -44
  500. package/lib/utils/charts/index.d.ts +0 -7
  501. package/lib/utils/charts/lineChart.d.ts +0 -44
  502. package/lib/utils/charts/spiderChart.d.ts +0 -46
  503. package/lib/utils/charts/typography.d.ts +0 -42
  504. package/lib/utils/classify/index.d.ts +0 -27
  505. package/lib/utils/click-away/click-away.d.ts +0 -194
  506. package/lib/utils/click-away/index.d.ts +0 -1
  507. package/lib/utils/date-range-picker/date-range-picker.d.ts +0 -411
  508. package/lib/utils/date-range-picker/index.d.ts +0 -2
  509. package/lib/utils/date-range-picker/timezones.d.ts +0 -262
  510. package/lib/utils/dom/dom.d.ts +0 -245
  511. package/lib/utils/dom/index.d.ts +0 -1
  512. package/lib/utils/helpers/helpers.d.ts +0 -48
  513. package/lib/utils/helpers/index.d.ts +0 -1
  514. package/lib/utils/index.d.ts +0 -14
  515. package/lib/utils/makeClassNameComponent/index.d.ts +0 -1
  516. package/lib/utils/makeClassNameComponent/makeClassNameComponent.d.ts +0 -73
  517. package/lib/utils/menu/index.d.ts +0 -1
  518. package/lib/utils/merge-refs/index.d.ts +0 -1
  519. package/lib/utils/merge-refs/merge-refs.d.ts +0 -15
  520. package/lib/utils/rating/index.d.ts +0 -1
  521. package/lib/utils/rating/rating.d.ts +0 -31
  522. package/lib/utils/score-bar/index.d.ts +0 -1
  523. package/lib/utils/score-bar/score-bar.d.ts +0 -54
  524. package/lib/utils/string/index.d.ts +0 -1
  525. package/lib/utils/string/string.d.ts +0 -30
  526. package/lib/utils/token-list-input/token-list-input.d.ts +0 -32
  527. package/lib/utils/tokens/index.d.ts +0 -1
  528. package/lib/utils/tokens/tokens.d.ts +0 -230
@@ -1,140 +0,0 @@
1
- import React, {useEffect, useReducer, useRef} from 'react';
2
- // @ts-expect-error[untyped-import]
3
- import {createPortal} from 'react-dom';
4
- import type {actionTypes, contentTypes, optionTypes} from 'src/types/toast';
5
- import {useToastPortal} from '../../hooks';
6
- import {classify} from '../../utils/classify';
7
- import {toastManager} from './';
8
- import css from './ToastContainer.module.css';
9
- const ADD = 'ADD';
10
- const REMOVE = 'REMOVE';
11
- type stateTypes = optionTypes & {
12
- content?: contentTypes;
13
- };
14
- type MapperValues = optionTypes & {
15
- content: contentTypes;
16
- };
17
- type Actions = {
18
- type: actionTypes;
19
- data: stateTypes;
20
- };
21
-
22
- const reducer = (state: stateTypes[], action: Actions) => {
23
- const {type, data} = action;
24
-
25
- if (type === ADD) {
26
- if (
27
- /* $FlowIgnore */
28
- state.filter((i) => i.uniqueCode && i.uniqueCode === data.uniqueCode)
29
- .length
30
- ) {
31
- return state;
32
- }
33
-
34
- return [...state, data];
35
- } else if (type === REMOVE) {
36
- return state.filter((i) => i.id !== data.id);
37
- }
38
-
39
- return state;
40
- };
41
-
42
- export const ToastContainer = (): null | React$Portal => {
43
- const [data, dispatch] = useReducer(reducer, []);
44
- const toastRef = useRef<HTMLDivElement | null>(null);
45
- const {loaded} = useToastPortal({
46
- toastRef,
47
- });
48
-
49
- const callback = (
50
- actionType: actionTypes,
51
- content: contentTypes,
52
- options: optionTypes,
53
- ) => {
54
- if (actionType === ADD) {
55
- dispatch({
56
- type: ADD,
57
- data: {
58
- content,
59
- ...options,
60
- key: `${options.id}`,
61
- },
62
- });
63
- }
64
-
65
- if (actionType === REMOVE) {
66
- dispatch({
67
- type: REMOVE,
68
- data: {
69
- id: options.id,
70
- },
71
- });
72
- }
73
-
74
- if (options.autoClose) {
75
- window.setTimeout(() => {
76
- dispatch({
77
- type: REMOVE,
78
- data: {
79
- id: options.id,
80
- },
81
- });
82
- }, options.timeout);
83
- }
84
- };
85
-
86
- useEffect(() => {
87
- toastManager.subscribe(callback);
88
- }, []);
89
-
90
- const positionMaintainer = () => {
91
- const mapper = {};
92
-
93
- /* $FlowIgnore */
94
- data.map(({position, ...rest}: optionTypes) => {
95
- if (position) {
96
- if (!mapper[position]) {
97
- mapper[position] = [];
98
- }
99
-
100
- mapper[position].push(rest);
101
- }
102
- });
103
- return mapper;
104
- };
105
-
106
- const markup = () => {
107
- const mapper = positionMaintainer();
108
- return Object.keys(mapper).map((position) => {
109
- const content = mapper[position].map(
110
- (
111
- {content, id}: MapperValues, // $FlowFixMe
112
- ) =>
113
- React.cloneElement(content, {
114
- key: id,
115
- onClose: () =>
116
- dispatch({
117
- type: REMOVE,
118
- data: {
119
- id,
120
- },
121
- }),
122
- }),
123
- );
124
- return (
125
- <div
126
- key={position.toString()}
127
- className={classify(css.toastContainer, css[position])}
128
- >
129
- {content}
130
- </div>
131
- );
132
- });
133
- };
134
-
135
- if (!toastRef.current) {
136
- return null;
137
- }
138
-
139
- return loaded ? createPortal(markup(), toastRef.current) : null;
140
- };
@@ -1,58 +0,0 @@
1
- import type {
2
- callbackFuncTypes,
3
- contentTypes,
4
- ToastOptions,
5
- } from '../../types/toast';
6
- import {uuid} from '../../utils/helpers';
7
- const DEFAULT_AUTOCLOSE_TIME = 8000; // default auto close time for with autoClose = true (be default true) but timeout not passed.
8
-
9
- export const POSITIONS = {
10
- TOP_CENTER: 'topCenter',
11
- TOP_LEFT: 'topLeft',
12
- TOP_RIGHT: 'topRight',
13
- BOTTOM_LEFT: 'bottomLeft',
14
- BOTTOM_RIGHT: 'bottomRight',
15
- BOTTOM_CENTER: 'bottomCenter',
16
- };
17
- export const ACTIONS = {
18
- ADD: 'ADD',
19
- REMOVE: 'REMOVE',
20
- };
21
- const defaultOptions: ToastOptions = {
22
- autoClose: true,
23
- timeout: DEFAULT_AUTOCLOSE_TIME,
24
- position: POSITIONS.BOTTOM_LEFT,
25
- };
26
- export const toastManager: {
27
- add(content: contentTypes, options?: ToastOptions): string;
28
- remove(id: string): boolean;
29
- subscribe(callback: callbackFuncTypes): void;
30
- } = (() => {
31
- let callbackFn: callbackFuncTypes;
32
- const manager = {
33
- subscribe(callback: callbackFuncTypes): void {
34
- callbackFn = callback;
35
- },
36
-
37
- add(content: contentTypes, options?: ToastOptions): string {
38
- const mergedOptions = {...defaultOptions, ...options};
39
- const toastId = uuid();
40
- callbackFn &&
41
- callbackFn(ACTIONS.ADD, content, {...mergedOptions, id: toastId});
42
- return toastId;
43
- },
44
-
45
- remove(id: string) {
46
- callbackFn(ACTIONS.REMOVE, null, {
47
- id,
48
- });
49
- return true;
50
- },
51
- };
52
- return manager;
53
- })();
54
- export const toastApi = {
55
- show: (content: contentTypes, options?: ToastOptions): string =>
56
- toastManager.add(content, options),
57
- remove: (id: string): boolean => toastManager.remove(id),
58
- };
@@ -1,10 +0,0 @@
1
- export type {ToastProps, ToastSemanticType} from './Toast';
2
- export {
3
- Toast,
4
- TOAST_SEMANTIC,
5
- ToastBody,
6
- ToastFooter,
7
- ToastTitle,
8
- } from './Toast';
9
- export {ToastContainer} from './ToastContainer';
10
- export {toastApi, toastManager} from './ToastManager';
@@ -1,111 +0,0 @@
1
- import {$ReadOnly} from 'utility-types';
2
- import * as React from 'react';
3
- import classify from '../../utils/classify';
4
- import css from './Toggle.module.css';
5
-
6
- /**
7
- * Note:
8
- * Do not wrap Toggle in a label. For simplicity's sake, Toggle uses an
9
- * internal label tag to handle click delegation to the hidden input, and
10
- * nesting labels is a bad idea.
11
- */
12
- type ClassNames = $ReadOnly<{
13
- wrapper?: string;
14
- label?: string;
15
- }>;
16
- export type ToggleProps = {
17
- name?: string;
18
- classNames?: ClassNames;
19
- children?: React.ReactNode;
20
- checked?: boolean;
21
- onChange?: (arg0: {value: string; checked: boolean}) => unknown;
22
- disabled?: boolean;
23
- focused?: boolean;
24
- value?: string;
25
- ariaLabel?: string;
26
- labelPosition?: 'left' | 'right';
27
- };
28
- export const Toggle: React$AbstractComponent<ToggleProps, HTMLInputElement> =
29
- React.forwardRef<ToggleProps, HTMLInputElement>(
30
- (
31
- {
32
- name = 'toggle',
33
- value = '',
34
- classNames,
35
- children,
36
- disabled,
37
- checked,
38
- focused,
39
- onChange,
40
- ariaLabel,
41
- labelPosition = 'right',
42
- ...props
43
- }: ToggleProps,
44
- forwardRef,
45
- ): React.ReactNode => {
46
- const toggleInput = React.createRef<HTMLInputElement>();
47
- React.useImperativeHandle(forwardRef, () => toggleInput.current);
48
-
49
- const handleOnChange = () => {
50
- if (!disabled) {
51
- onChange &&
52
- onChange({
53
- value,
54
- checked: !checked,
55
- });
56
- }
57
- };
58
-
59
- const onWrapClickHandler = (e) => {
60
- e.nativeEvent.stopImmediatePropagation();
61
- toggleInput.current?.click();
62
- };
63
-
64
- React.useEffect(() => {
65
- if (toggleInput.current && focused) {
66
- toggleInput.current.focus();
67
- }
68
- }, [focused]);
69
- return (
70
- <div
71
- className={classify(
72
- css.container,
73
- {
74
- [css.disabled]: disabled,
75
- },
76
- classNames?.wrapper,
77
- )}
78
- onClick={onWrapClickHandler}
79
- >
80
- {labelPosition === 'left' && React.Children.count(children) > 0 && (
81
- <div className={classify(css.toggleLabel, classNames?.label)}>
82
- {children}
83
- </div>
84
- )}
85
- <span className={css.toggleWrap}>
86
- <input
87
- type="checkbox"
88
- name={name}
89
- value={value}
90
- checked={checked}
91
- onChange={handleOnChange}
92
- ref={toggleInput}
93
- disabled={disabled}
94
- aria-label={ariaLabel || children}
95
- {...props}
96
- />
97
- <span
98
- className={classify(css.toggle, {
99
- [css.disabledButton]: disabled,
100
- })}
101
- />
102
- </span>
103
- {labelPosition === 'right' && React.Children.count(children) > 0 && (
104
- <div className={classify(css.toggleLabel, classNames?.label)}>
105
- {children}
106
- </div>
107
- )}
108
- </div>
109
- );
110
- },
111
- );
@@ -1 +0,0 @@
1
- export * from './Toggle';
@@ -1,351 +0,0 @@
1
- import {$ReadOnly} from 'utility-types';
2
- import * as React from 'react';
3
- import {
4
- // $FlowFixMe[untyped-import]
5
- autoUpdate, // $FlowFixMe[untyped-import]
6
- flip, // $FlowFixMe[untyped-import]
7
- offset, // $FlowFixMe[untyped-import]
8
- useFloating,
9
- } from '@floating-ui/react';
10
- import without from 'lodash/without';
11
- import {sizeFluid} from '../../styles/variables/_size';
12
- import {spaceNone, spaceXXSmall} from '../../styles/variables/_space';
13
- import {TEXT_COLORS} from '../../types/typography';
14
- import classify from '../../utils/classify';
15
- import {ClickAway} from '../../utils/click-away';
16
- import type {ClickAwayRefType} from '../../utils/click-away/click-away';
17
- import {mergeRefs} from '../../utils/merge-refs';
18
- import {
19
- getFirstOption,
20
- getFirstOptionFromGroup,
21
- } from '../../utils/token-list-input/token-list-input';
22
- import {ANCHOR_POSITION_TYPE, STRATEGY_TYPE} from '../ButtonDropdown';
23
- import {CircularLoader} from '../CircularLoader';
24
- import {Icon} from '../Icon';
25
- import type {InputProps} from '../Input';
26
- import type {BaseMenuProps} from '../Menu';
27
- import {Menu} from '../Menu';
28
- import {BodySmall} from '../Text';
29
- import type {ResolveTokenValueProps} from './TokenValueChips';
30
- import {TokenValueChips} from './TokenValueChips';
31
- import css from './TokenListInput.module.css';
32
- export const DEFAULT_LIMIT_VALUE = 100;
33
- type ClassNames = $ReadOnly<{
34
- wrapper?: string;
35
- box?: string;
36
- input?: string;
37
- }>;
38
- export type TokenListMenuOptionTypes<T> = {
39
- options?: Array<T>;
40
- groupTitleOptions?: Array<TokenGroupTitleOption<T>>;
41
- resolveLabel?: (option: T) => string;
42
- };
43
- export type TokenGroupTitleOption<T> = {
44
- groupTitle?: React.ReactNode;
45
- options?: Array<T>;
46
- showLineDivider?: boolean;
47
- };
48
- export type TokenListMenuProps<T> = BaseMenuProps & TokenListMenuOptionTypes<T>;
49
- // TODO: use Generics with Constraints when we have typescript.
50
- export type Props<T> = {
51
- classNames?: ClassNames;
52
- clickAwayRef?: ClickAwayRefType;
53
- disabled?: boolean;
54
- // disables user interaction with the input
55
- error?: boolean;
56
- errorText?: string;
57
- focusOnMount?: boolean;
58
- helperText?: string;
59
- inputValue?: string;
60
- inputPlaceholder?: string;
61
- limit?: number;
62
- // maximum number of values
63
- isLoading?: boolean;
64
- locked?: boolean;
65
- onChange: (values: Array<T>) => unknown;
66
- // an onChange handler
67
- onInputBlur?: (e: React.SyntheticEvent<HTMLInputElement>) => unknown;
68
- onInputChange?: (value: string) => unknown;
69
- onInputFocus?: (e: React.SyntheticEvent<HTMLInputElement>) => unknown;
70
- placeholder?: string;
71
- size?: 'medium' | 'small';
72
- tabIndex?: number;
73
- values: Array<T>;
74
- // a list of options representing the current value of the input
75
- menu?: TokenListMenuProps<T>;
76
- onMenuOpen?: () => unknown;
77
- onMenuClose?: () => unknown;
78
- resolveTokenValue?: (arg0: ResolveTokenValueProps<T>) => React.ReactNode;
79
- inputProps?: InputProps;
80
- };
81
- export function TokenListInput<T>(props: Props<T>): React.ReactNode {
82
- const {
83
- classNames,
84
- clickAwayRef,
85
- disabled = false,
86
- error,
87
- errorText,
88
- focusOnMount,
89
- helperText,
90
- inputValue = '',
91
- inputPlaceholder = '',
92
- limit = DEFAULT_LIMIT_VALUE,
93
- isLoading,
94
- locked,
95
- onChange,
96
- menu,
97
- onMenuOpen,
98
- onMenuClose,
99
- onInputBlur,
100
- onInputChange,
101
- onInputFocus,
102
- placeholder,
103
- size = 'medium',
104
- tabIndex,
105
- values,
106
- resolveTokenValue,
107
- inputProps,
108
- } = props;
109
- const menuRef = React.useRef<HTMLDivElement | null>(null);
110
- const {x, y, refs, strategy} = useFloating({
111
- open: true,
112
- strategy: STRATEGY_TYPE.absolute,
113
- placement: ANCHOR_POSITION_TYPE.bottomStart,
114
- whileElementsMounted: autoUpdate,
115
- middleware: [flip(), offset(parseInt(spaceXXSmall))],
116
- });
117
- const inputRef = React.useRef<HTMLInputElement | null | undefined>();
118
-
119
- const onOpenToggle = (isOpen) => {
120
- if (isOpen) {
121
- onMenuOpen?.();
122
- inputRef.current?.focus();
123
- } else {
124
- onMenuClose?.();
125
- inputRef.current?.blur();
126
- }
127
- };
128
-
129
- React.useEffect(() => {
130
- if (focusOnMount) {
131
- inputRef.current?.focus();
132
- }
133
- }, [focusOnMount]);
134
-
135
- const addValue = (value: T) => {
136
- if (locked || !value || value.disabled) {
137
- return; // Prevent adding values when disabled or locked
138
- }
139
-
140
- onInputChange?.('');
141
- // $FlowFixMe[incompatible-use] - token has key property
142
- const existingToken = values.find((token) => token.key === value.key);
143
-
144
- if (!existingToken) {
145
- onChange([...values, value]);
146
- }
147
-
148
- setTimeout(() => {
149
- inputRef.current && inputRef.current.focus();
150
- }, 0);
151
- };
152
-
153
- const removeValue = (value: T) => {
154
- !disabled && !locked && onChange(without(values, value));
155
- setTimeout(() => {
156
- inputRef.current && inputRef.current.focus();
157
- }, 0);
158
- };
159
-
160
- const hideInput = values.length >= limit || disabled || locked;
161
-
162
- const handleInputKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {
163
- const value = event.currentTarget.value;
164
- const key = event.key;
165
-
166
- // Note: adding this Enter key handler to handle the case where the user is typing a new value
167
- // and presses Enter to add the value to the list (maintain parity with the old TokenListInput)
168
- if (key === 'Enter') {
169
- if (value.trim()) {
170
- event.preventDefault();
171
- let firstOption = null;
172
-
173
- if (menu?.options && menu.options.length > 0) {
174
- //$FlowFixMe
175
- firstOption = getFirstOption(menu.options);
176
- } else if (
177
- menu?.groupTitleOptions &&
178
- menu.groupTitleOptions.length > 0
179
- ) {
180
- //$FlowFixMe
181
- firstOption = getFirstOptionFromGroup(menu.groupTitleOptions);
182
- }
183
-
184
- if (firstOption) {
185
- //$FlowFixMe
186
- addValue(firstOption);
187
- }
188
- }
189
- } else if (key === 'Backspace') {
190
- if (inputValue === '' && values.length > 0) {
191
- onChange(values.slice(0, -1));
192
- }
193
- } else if (key === 'Escape') {
194
- event.preventDefault();
195
- setTimeout(() => {
196
- inputRef.current && inputRef.current.blur();
197
- }, 0);
198
- }
199
- };
200
-
201
- return (
202
- <ClickAway
203
- closeOnEscapeKeypress={true}
204
- onChange={onOpenToggle}
205
- clickAwayRef={clickAwayRef}
206
- >
207
- {({isOpen, onOpen, clickAway, boundaryRef, triggerRef}) => (
208
- <>
209
- <div
210
- className={classify(css.tokenListContainer, classNames?.wrapper)}
211
- ref={menuRef}
212
- >
213
- <div
214
- onClick={() => {
215
- if (disabled || locked || values.length >= limit) {
216
- return;
217
- }
218
-
219
- if (!isOpen) {
220
- onOpen();
221
- }
222
- }}
223
- onFocus={(e) => {
224
- if (disabled || locked || values.length >= limit) {
225
- return;
226
- }
227
-
228
- if (!isOpen) {
229
- onOpen();
230
- }
231
-
232
- onInputFocus?.(e);
233
- }}
234
- onBlur={(e) => {
235
- onInputBlur?.(e);
236
- }}
237
- className={classify(
238
- css.box,
239
- {
240
- [css.inputDisabled]: disabled,
241
- [css.medium]: size === 'medium',
242
- [css.small]: size === 'small',
243
- [css.withError]: error,
244
- [css.inputLocked]: locked,
245
- },
246
- classNames?.box,
247
- )}
248
- ref={mergeRefs([refs.setReference, triggerRef])}
249
- >
250
- <TokenValueChips
251
- values={values}
252
- resolveTokenValue={resolveTokenValue}
253
- disabled={disabled}
254
- locked={locked}
255
- onDismiss={removeValue}
256
- />
257
- {!hideInput && (
258
- <input
259
- {...inputProps}
260
- ref={inputRef}
261
- type="text"
262
- readOnly={locked}
263
- value={inputValue}
264
- placeholder={
265
- values.length === 0
266
- ? placeholder || inputPlaceholder
267
- : inputPlaceholder
268
- }
269
- onChange={(event) => {
270
- onInputChange?.(event.target.value);
271
- !isOpen && onOpen();
272
- }}
273
- disabled={disabled || locked}
274
- tabIndex={tabIndex}
275
- data-qa-id="token-list-input"
276
- onKeyDown={handleInputKeyDown}
277
- className={classify(
278
- {
279
- [css.inputMedium]: size === 'medium',
280
- [css.inputSmall]: size === 'small',
281
- },
282
- classNames?.input,
283
- )}
284
- autoComplete="off"
285
- />
286
- )}
287
- {isLoading && (
288
- <div className={css.loaderContainer}>
289
- <CircularLoader size="small" colorToken="colorFillPrimary" />
290
- </div>
291
- )}
292
- {locked && (
293
- <Icon
294
- name="lock"
295
- color={disabled ? 'disabled' : 'secondary'}
296
- size="small"
297
- className={css.lockIcon}
298
- />
299
- )}
300
- </div>
301
- {!isOpen && (Boolean(helperText) || errorText) && (
302
- <div className={css.footerTextContainer}>
303
- {error && errorText ? (
304
- <BodySmall color={TEXT_COLORS.danger}>{errorText}</BodySmall>
305
- ) : typeof helperText === 'string' ? (
306
- <BodySmall color={TEXT_COLORS.secondary}>
307
- {helperText}
308
- </BodySmall>
309
- ) : (
310
- helperText
311
- )}
312
- </div>
313
- )}
314
- {!locked && isOpen && menu && (
315
- <div
316
- ref={mergeRefs([refs.setFloating, boundaryRef])}
317
- style={{
318
- position: strategy,
319
- top: y ?? spaceNone,
320
- left: x ?? spaceNone,
321
- width: sizeFluid,
322
- }}
323
- >
324
- {/* $FlowFixMe[incompatible-type] Menu expects MenuOption but receives T */}
325
- {/* $FlowFixMe[prop-missing] MenuOption properties are missing in T */}
326
- <Menu
327
- {...menu}
328
- onSelect={(option) => {
329
- if (values.length >= limit) {
330
- return;
331
- }
332
-
333
- // $FlowFixMe[incompatible-call] option from Menu is MenuOption but addValue expects T
334
- // $FlowFixMe[prop-missing] MenuOption properties are missing in T
335
- addValue(option);
336
- clickAway();
337
- inputRef.current?.focus();
338
- }}
339
- size={menu.size || size}
340
- onTabOut={clickAway}
341
- ref={menuRef}
342
- />
343
- </div>
344
- )}
345
- </div>
346
- </>
347
- )}
348
- </ClickAway>
349
- );
350
- }
351
- TokenListInput.displayName = 'TokenListInput';