@spaced-out/ui-design-system 0.3.38 → 0.3.39

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 +21 -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 +1 -1
@@ -0,0 +1,136 @@
1
+ import * as React from 'react';
2
+ import classify from '../../utils/classify';
3
+ import {Button} from '../Button';
4
+ import {ButtonTextSmall} from '../Text';
5
+ import type {PaginationItemProps} from './Pagination';
6
+ import css from './Pagination.module.css';
7
+ export const PaginationButton = (
8
+ props: PaginationItemProps,
9
+ ): React.ReactNode => {
10
+ const {disabled, onClick, page, selected, type} = props;
11
+ const paginationBtnRef = React.useRef(null);
12
+ React.useEffect(() => {
13
+ if (selected) {
14
+ paginationBtnRef.current?.blur();
15
+ }
16
+ }, [selected]);
17
+
18
+ switch (type) {
19
+ case 'first':
20
+ return (
21
+ <Button
22
+ classNames={{
23
+ icon: classify(css.icon, {
24
+ [css.disabled]: disabled,
25
+ }),
26
+ wrapper: classify(css.paginatorButton, {
27
+ [css.disabled]: disabled,
28
+ }),
29
+ }}
30
+ type={selected ? 'secondary' : 'ghost'}
31
+ size="small"
32
+ onClick={onClick}
33
+ disabled={disabled}
34
+ ref={paginationBtnRef}
35
+ iconLeftName="chevrons-left"
36
+ ariaLabel="First page"
37
+ ></Button>
38
+ );
39
+
40
+ case 'previous':
41
+ return (
42
+ <Button
43
+ classNames={{
44
+ icon: classify(css.icon, {
45
+ [css.disabled]: disabled,
46
+ }),
47
+ wrapper: classify(css.paginatorButton, {
48
+ [css.disabled]: disabled,
49
+ }),
50
+ }}
51
+ type={selected ? 'secondary' : 'ghost'}
52
+ size="small"
53
+ onClick={onClick}
54
+ disabled={disabled}
55
+ ref={paginationBtnRef}
56
+ iconLeftName="chevron-left"
57
+ ariaLabel="Previous page"
58
+ ></Button>
59
+ );
60
+
61
+ case 'page':
62
+ return (
63
+ <Button
64
+ classNames={{
65
+ wrapper: classify(css.paginatorButton, {
66
+ [css.selected]: selected,
67
+ }),
68
+ }}
69
+ type={selected ? 'secondary' : 'ghost'}
70
+ size="small"
71
+ onClick={onClick}
72
+ disabled={disabled}
73
+ ref={paginationBtnRef}
74
+ tabIndex={selected ? -1 : 0}
75
+ >
76
+ {page}
77
+ </Button>
78
+ );
79
+
80
+ case 'start-ellipsis':
81
+ case 'end-ellipsis':
82
+ return (
83
+ <div className={classify(css.separator)}>
84
+ <ButtonTextSmall color="disabled">...</ButtonTextSmall>
85
+ </div>
86
+ );
87
+
88
+ case 'next':
89
+ return (
90
+ <Button
91
+ classNames={{
92
+ icon: classify(css.icon, {
93
+ [css.disabled]: disabled,
94
+ }),
95
+ wrapper: classify(css.paginatorButton, {
96
+ [css.disabled]: disabled,
97
+ }),
98
+ }}
99
+ type={selected ? 'secondary' : 'ghost'}
100
+ size="small"
101
+ onClick={onClick}
102
+ disabled={disabled}
103
+ ref={paginationBtnRef}
104
+ iconLeftName="chevron-right"
105
+ ariaLabel="Next page"
106
+ ></Button>
107
+ );
108
+
109
+ case 'last':
110
+ return (
111
+ <Button
112
+ classNames={{
113
+ icon: classify(css.icon, {
114
+ [css.disabled]: disabled,
115
+ }),
116
+ wrapper: classify(css.paginatorButton, {
117
+ [css.disabled]: disabled,
118
+ }),
119
+ }}
120
+ type={selected ? 'secondary' : 'ghost'}
121
+ size="small"
122
+ onClick={onClick}
123
+ disabled={disabled}
124
+ ref={paginationBtnRef}
125
+ iconLeftName="chevrons-right"
126
+ ariaLabel="Last page"
127
+ ></Button>
128
+ );
129
+
130
+ default:
131
+ break;
132
+ }
133
+ };
134
+ export const PaginationItem = (props: PaginationItemProps): React.ReactNode => (
135
+ <PaginationButton {...props} />
136
+ );
@@ -0,0 +1 @@
1
+ export * from './Pagination';
@@ -0,0 +1,168 @@
1
+ import {$ReadOnly} from 'utility-types';
2
+ import * as React from 'react';
3
+ import useMountTransition from '../../hooks/useMountTransition';
4
+ import {
5
+ motionDurationNormal,
6
+ motionDurationSlow,
7
+ } from '../../styles/variables/_motion';
8
+ import {
9
+ spaceFluid,
10
+ spaceNegFluid,
11
+ spaceNone,
12
+ } from '../../styles/variables/_space';
13
+ import classify from '../../utils/classify';
14
+ import {Button} from '../Button';
15
+ import type {ModalProps} from '../Modal';
16
+ import {Modal} from '../Modal';
17
+ import {Truncate} from '../Truncate';
18
+ import css from './Panel.module.css';
19
+ export type PanelSize = 'small' | 'medium' | 'large';
20
+ export type PanelAnchor = 'left' | 'right';
21
+ export type PanelHeaderProps = {
22
+ children?: React.ReactNode;
23
+ hideCloseBtn?: boolean;
24
+ onCloseButtonClick?:
25
+ | ((arg0: React.SyntheticEvent<HTMLElement>) => unknown)
26
+ | null
27
+ | undefined;
28
+ className?: string;
29
+ size?: 'medium' | 'small';
30
+ };
31
+ type FooterClassNames = $ReadOnly<{
32
+ wrapper?: string;
33
+ actions?: string;
34
+ }>;
35
+ export type PanelFooterProps = {
36
+ children?: React.ReactNode;
37
+ classNames?: FooterClassNames;
38
+ };
39
+ export type PanelBodyProps = {
40
+ children?: React.ReactNode;
41
+ className?: string;
42
+ };
43
+ export type PanelProps = ModalProps & {
44
+ allowBackgroundInteraction?: boolean;
45
+ size?: PanelSize;
46
+ anchor?: PanelAnchor;
47
+ };
48
+
49
+ const getDefaultPanelAnimation = (anchor: PanelAnchor) => ({
50
+ // Configure both open and close durations:
51
+ duration: {
52
+ open: parseInt(motionDurationSlow),
53
+ close: parseInt(motionDurationNormal),
54
+ },
55
+ initial: {
56
+ transform: `translateX(${anchor === 'right' ? spaceFluid : spaceNegFluid})`,
57
+ },
58
+ open: {
59
+ transform: `translateX(${spaceNone})`,
60
+ },
61
+ close: {
62
+ transform: `translateX(${anchor === 'right' ? spaceFluid : spaceNegFluid})`,
63
+ },
64
+ });
65
+
66
+ export const PanelHeader = ({
67
+ children,
68
+ hideCloseBtn,
69
+ onCloseButtonClick,
70
+ className,
71
+ size,
72
+ }: PanelHeaderProps): React.ReactNode => (
73
+ <>
74
+ {React.Children.count(children) > 0 && (
75
+ <div className={classify(css.panelHeader, className)}>
76
+ <div className={css.headerContent}>
77
+ <Truncate>{children}</Truncate>
78
+ </div>
79
+ {!hideCloseBtn && (
80
+ <Button
81
+ iconLeftName="xmark"
82
+ type="ghost"
83
+ onClick={onCloseButtonClick}
84
+ ariaLabel="Close Button"
85
+ size={size}
86
+ ></Button>
87
+ )}
88
+ </div>
89
+ )}
90
+ </>
91
+ );
92
+ export const PanelBody: React$AbstractComponent<
93
+ PanelBodyProps,
94
+ HTMLDivElement
95
+ > = React.forwardRef<PanelBodyProps, HTMLDivElement>(
96
+ ({children, className}: PanelBodyProps, ref): React.ReactNode => (
97
+ <div ref={ref} className={classify(css.panelBody, className)}>
98
+ {children}
99
+ </div>
100
+ ),
101
+ );
102
+ export const PanelFooter = ({
103
+ children,
104
+ classNames,
105
+ }: PanelFooterProps): React.ReactNode => (
106
+ <>
107
+ {React.Children.count(children) > 0 && (
108
+ <div className={classify(css.panelFooter, classNames?.wrapper)}>
109
+ <div className={classify(css.panelFooterActions, classNames?.actions)}>
110
+ {children}
111
+ </div>
112
+ </div>
113
+ )}
114
+ </>
115
+ );
116
+ export const Panel = ({
117
+ children,
118
+ isOpen = false,
119
+ size = 'medium',
120
+ anchor = 'left',
121
+ onClose,
122
+ hideBackdrop = true,
123
+ classNames,
124
+ customAnimation,
125
+ tapOutsideToClose = true,
126
+ allowBackgroundInteraction,
127
+ ...restPanelProps
128
+ }: PanelProps): React.ReactNode => {
129
+ const isTransitioning = useMountTransition(
130
+ isOpen,
131
+ parseInt(motionDurationNormal),
132
+ );
133
+ const defaultPanelAnimation = getDefaultPanelAnimation(anchor);
134
+ return (
135
+ <Modal
136
+ isOpen={isOpen}
137
+ onClose={onClose}
138
+ hideBackdrop={hideBackdrop}
139
+ tapOutsideToClose={allowBackgroundInteraction ? false : tapOutsideToClose}
140
+ allowBackgroundInteraction={allowBackgroundInteraction}
141
+ {...restPanelProps}
142
+ classNames={{
143
+ container: classify(
144
+ css.panelContainer,
145
+ {
146
+ [css.in]: isTransitioning,
147
+ [css.open]: isOpen,
148
+ },
149
+ classNames?.container,
150
+ ),
151
+ content: classify(
152
+ css.panel,
153
+ css[anchor],
154
+ {
155
+ [css.medium]: size === 'medium',
156
+ [css.small]: size === 'small',
157
+ [css.large]: size === 'large',
158
+ },
159
+ classNames?.content,
160
+ ),
161
+ backdrop: classify(classNames?.backdrop),
162
+ }}
163
+ customAnimation={customAnimation || defaultPanelAnimation}
164
+ >
165
+ {children}
166
+ </Modal>
167
+ );
168
+ };
@@ -0,0 +1,9 @@
1
+ export type {
2
+ PanelAnchor,
3
+ PanelBodyProps,
4
+ PanelFooterProps,
5
+ PanelHeaderProps,
6
+ PanelProps,
7
+ PanelSize,
8
+ } from './Panel';
9
+ export {Panel, PanelBody, PanelFooter, PanelHeader} from './Panel';
@@ -0,0 +1,102 @@
1
+ import {$ReadOnly, $Keys} from 'utility-types';
2
+ import * as React from 'react';
3
+ import * as COLORS from '../../styles/variables/_color';
4
+ import classify from '../../utils/classify';
5
+ import {BodyLargeBold} from '../Text';
6
+ import css from './ProgressDonut.module.css';
7
+ const STROKE_WIDTH = 8;
8
+ const MIN_PERCENTAGE = 0;
9
+ const DIVISOR_TWO = 2;
10
+ const MAX_PERCENTAGE = 100;
11
+ const SUCCESS_THRESHOLD = 80;
12
+ const LARGE_DONUT_SIZE = 72;
13
+ const INFO_THRESHOLD = 50;
14
+ const WARNING_THRESHOLD = 30;
15
+ type ClassNames = $ReadOnly<{
16
+ wrapper?: string;
17
+ }>;
18
+ export type ProgressDonutProps = {
19
+ classNames?: ClassNames;
20
+ color?: $Keys<typeof COLORS>;
21
+ percentage: number;
22
+ };
23
+
24
+ const getProgressDonutColor = (percentage: number): string => {
25
+ if (percentage >= SUCCESS_THRESHOLD) {
26
+ return COLORS.colorSuccess;
27
+ } else if (percentage >= INFO_THRESHOLD && percentage < SUCCESS_THRESHOLD) {
28
+ return COLORS.colorInformation;
29
+ } else if (percentage >= WARNING_THRESHOLD && percentage < INFO_THRESHOLD) {
30
+ return COLORS.colorWarning;
31
+ } else {
32
+ return COLORS.colorDanger;
33
+ }
34
+ };
35
+
36
+ export const ProgressDonut: React$AbstractComponent<
37
+ ProgressDonutProps,
38
+ HTMLDivElement
39
+ > = React.forwardRef<ProgressDonutProps, HTMLDivElement>(
40
+ ({classNames, percentage = 0, color = ''}: ProgressDonutProps, ref) => {
41
+ const donutPercentage = React.useMemo(
42
+ () => Math.min(Math.max(percentage, MIN_PERCENTAGE), MAX_PERCENTAGE),
43
+ [percentage],
44
+ );
45
+ const donutColor = React.useMemo(
46
+ () => getProgressDonutColor(donutPercentage),
47
+ [donutPercentage],
48
+ );
49
+ const radius = React.useMemo(
50
+ () => (LARGE_DONUT_SIZE - STROKE_WIDTH) / DIVISOR_TWO,
51
+ [LARGE_DONUT_SIZE],
52
+ );
53
+ const circumference = React.useMemo(
54
+ () => DIVISOR_TWO * Math.PI * radius,
55
+ [radius],
56
+ );
57
+ const offset = React.useMemo(
58
+ () => circumference - (donutPercentage / MAX_PERCENTAGE) * circumference,
59
+ [circumference, donutPercentage],
60
+ );
61
+ return (
62
+ <div
63
+ ref={ref}
64
+ data-testid="ProgressDonut"
65
+ className={classify(css.wrapper, classNames?.wrapper)}
66
+ >
67
+ <div className={css.donutChart}>
68
+ <svg
69
+ width={LARGE_DONUT_SIZE}
70
+ height={LARGE_DONUT_SIZE}
71
+ viewBox={`0 0 ${LARGE_DONUT_SIZE} ${LARGE_DONUT_SIZE}`}
72
+ className={css.donutChartSvg}
73
+ >
74
+ <circle
75
+ className={css.donutChartBackground}
76
+ cx={LARGE_DONUT_SIZE / DIVISOR_TWO}
77
+ cy={LARGE_DONUT_SIZE / DIVISOR_TWO}
78
+ r={radius}
79
+ strokeWidth={STROKE_WIDTH}
80
+ />
81
+ <circle
82
+ className={css.donutChartForeground}
83
+ cx={LARGE_DONUT_SIZE / DIVISOR_TWO}
84
+ cy={LARGE_DONUT_SIZE / DIVISOR_TWO}
85
+ r={radius}
86
+ strokeWidth={STROKE_WIDTH}
87
+ strokeDasharray={circumference}
88
+ strokeDashoffset={
89
+ donutPercentage === MIN_PERCENTAGE ? circumference : offset
90
+ }
91
+ stroke={COLORS[color] || donutColor}
92
+ strokeLinecap="round"
93
+ />
94
+ </svg>
95
+ <BodyLargeBold className={css.donutChartPercentage}>
96
+ {`${donutPercentage}%`}
97
+ </BodyLargeBold>
98
+ </div>
99
+ </div>
100
+ );
101
+ },
102
+ );
@@ -0,0 +1 @@
1
+ export * from './ProgressDonut';
@@ -0,0 +1,167 @@
1
+ import {$ReadOnly, $Values} from 'utility-types';
2
+ import * as React from 'react';
3
+ import type {ColorTypes} from '../../types/typography';
4
+ import {TEXT_COLORS} from '../../types/typography';
5
+ import {classify} from '../../utils/classify';
6
+ import {ConditionalWrapper} from '../ConditionalWrapper';
7
+ import type {IconType} from '../Icon';
8
+ import {CloseIcon, Icon, ICON_SIZE, ICON_TYPE} from '../Icon';
9
+ import type {BaseTooltipProps} from '../Tooltip';
10
+ import {Tooltip} from '../Tooltip';
11
+ import css from './PromptChip.module.css';
12
+ type ClassNames = $ReadOnly<{
13
+ icon?: string;
14
+ wrapper?: string;
15
+ children?: string;
16
+ container?: string;
17
+ }>;
18
+ export const PROMPT_CHIP_TYPE = Object.freeze({
19
+ primary: 'primary',
20
+ secondary: 'secondary',
21
+ });
22
+ export type PromptChipType = $Values<typeof PROMPT_CHIP_TYPE>;
23
+ export type PromptChipProps = (
24
+ | {
25
+ onDismiss?:
26
+ | ((arg0: React.SyntheticEvent<HTMLElement>) => unknown)
27
+ | null
28
+ | undefined;
29
+ dismissable: true;
30
+ selfDismiss?: boolean;
31
+ }
32
+ | {
33
+ dismissable?: false;
34
+ }
35
+ ) & {
36
+ classNames?: ClassNames;
37
+ type?: PromptChipType;
38
+ onClick?:
39
+ | ((arg0: React.SyntheticEvent<HTMLElement>) => unknown)
40
+ | null
41
+ | undefined;
42
+ iconName?: string;
43
+ iconType?: IconType;
44
+ children?: React.ReactNode;
45
+ iconColor?: ColorTypes;
46
+ rightSlot?: React.ReactNode;
47
+ showInfoIcon?: boolean;
48
+ infoIconTooltip?: BaseTooltipProps;
49
+ };
50
+ export const PromptChip: React$AbstractComponent<
51
+ PromptChipProps,
52
+ HTMLDivElement
53
+ > = React.forwardRef<PromptChipProps, HTMLDivElement>(
54
+ (props: PromptChipProps, ref): React.ReactNode => {
55
+ const {
56
+ type = PROMPT_CHIP_TYPE.primary,
57
+ onClick,
58
+ iconType = ICON_TYPE.solid,
59
+ iconName = 'lightbulb',
60
+ children,
61
+ iconColor,
62
+ rightSlot,
63
+ onDismiss,
64
+ classNames,
65
+ dismissable,
66
+ selfDismiss,
67
+ showInfoIcon,
68
+ infoIconTooltip,
69
+ } = props;
70
+ const [dismissed, setDismissed] = React.useState(false);
71
+
72
+ const closeClickHandler = (e) => {
73
+ e.stopPropagation();
74
+ onDismiss?.(e);
75
+ selfDismiss && setDismissed(true);
76
+ };
77
+
78
+ return (
79
+ <>
80
+ {!dismissed && (
81
+ <div
82
+ ref={ref}
83
+ data-testid="Prompt-Chip"
84
+ className={classify(
85
+ css.promptChipWrapper,
86
+ {
87
+ [css.primary]: type === PROMPT_CHIP_TYPE.primary,
88
+ [css.secondary]: type === PROMPT_CHIP_TYPE.secondary,
89
+ },
90
+ classNames?.wrapper,
91
+ )}
92
+ onClick={(event) => {
93
+ onClick?.(event);
94
+ }}
95
+ tabIndex={onClick ? 0 : undefined}
96
+ role="button"
97
+ >
98
+ <div
99
+ className={classify(
100
+ css.promptChipContainer,
101
+ {
102
+ [css.promptChipContainerHover]: !!onClick,
103
+ },
104
+ classNames?.container,
105
+ )}
106
+ >
107
+ <div className={css.leftSection}>
108
+ <Icon
109
+ size={ICON_SIZE.small}
110
+ name={iconName}
111
+ type={iconType}
112
+ color={iconColor}
113
+ className={classify(
114
+ {
115
+ [css.chipIconDefaultColor]: !iconColor,
116
+ },
117
+ classNames?.icon,
118
+ )}
119
+ />
120
+ {!!children && (
121
+ <div
122
+ className={classify(
123
+ css.childrenWrapper,
124
+ classNames?.children,
125
+ )}
126
+ >
127
+ {children}
128
+ </div>
129
+ )}
130
+ </div>
131
+ <div className={css.rightSection}>
132
+ {rightSlot ? rightSlot : null}
133
+ {!!showInfoIcon && (
134
+ <ConditionalWrapper
135
+ condition={
136
+ infoIconTooltip &&
137
+ typeof infoIconTooltip === 'object' &&
138
+ Object.keys(infoIconTooltip).length > 0
139
+ }
140
+ wrapper={(children) => (
141
+ <Tooltip {...infoIconTooltip}>{children}</Tooltip>
142
+ )}
143
+ >
144
+ <Icon
145
+ size={ICON_SIZE.small}
146
+ name="info-circle"
147
+ color={TEXT_COLORS.primary}
148
+ className={classNames?.icon}
149
+ />
150
+ </ConditionalWrapper>
151
+ )}
152
+ {!!dismissable && (
153
+ <CloseIcon
154
+ size={ICON_SIZE.small}
155
+ onClick={closeClickHandler}
156
+ ariaLabel="Dismiss"
157
+ className={css.dismissIcon}
158
+ />
159
+ )}
160
+ </div>
161
+ </div>
162
+ </div>
163
+ )}
164
+ </>
165
+ );
166
+ },
167
+ );
@@ -0,0 +1 @@
1
+ export * from './PromptChip';