@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,56 @@
1
+ import {$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 css from './CircularLoader.module.css';
6
+ export type CircularLoaderProps = {
7
+ size?: 'large' | 'medium' | 'small';
8
+ className?: string;
9
+ ariaLabel?: string;
10
+ // TODO: update it to permissible colors
11
+ colorToken?: $Keys<typeof COLORS>;
12
+ };
13
+ export const CircularLoader: React$AbstractComponent<
14
+ CircularLoaderProps,
15
+ HTMLDivElement
16
+ > = React.forwardRef<CircularLoaderProps, HTMLDivElement>(
17
+ (
18
+ {
19
+ size = 'medium',
20
+ className,
21
+ colorToken = 'colorTextClickable',
22
+ ariaLabel = 'Loading',
23
+ }: CircularLoaderProps,
24
+ ref,
25
+ ): React.ReactNode => (
26
+ <div
27
+ className={classify(
28
+ css.container,
29
+ {
30
+ [css.mediumContainer]: size === 'medium',
31
+ [css.smallContainer]: size === 'small',
32
+ },
33
+ className,
34
+ )}
35
+ ref={ref}
36
+ aria-label={ariaLabel}
37
+ role="alert"
38
+ aria-busy="true"
39
+ >
40
+ <div className={css.spinLoader} aria-hidden="true">
41
+ <div
42
+ className={css.outerCircle}
43
+ style={{
44
+ '--color': COLORS[colorToken],
45
+ }}
46
+ ></div>
47
+ <div
48
+ className={css.ellipse}
49
+ style={{
50
+ '--color': COLORS[colorToken],
51
+ }}
52
+ ></div>
53
+ </div>
54
+ </div>
55
+ ),
56
+ );
@@ -0,0 +1 @@
1
+ export {CircularLoader} from './CircularLoader';
@@ -0,0 +1,134 @@
1
+ import {$ReadOnly, $Values} from 'utility-types';
2
+ import * as React from 'react';
3
+ import classify from '../../utils/classify';
4
+ import {UnstyledButton} from '../Button';
5
+ import type {IconType} from '../Icon';
6
+ import {Icon} from '../Icon';
7
+ import {Truncate} from '../Truncate';
8
+ import css from './CollapsibleCard.module.css';
9
+ export const COLLAPSIBLE_CARD_SEMANTIC = Object.freeze({
10
+ neutral: 'neutral',
11
+ success: 'success',
12
+ information: 'information',
13
+ warning: 'warning',
14
+ danger: 'danger',
15
+ });
16
+ type ClassNames = $ReadOnly<{
17
+ wrapper?: string;
18
+ title?: string;
19
+ content?: string;
20
+ }>;
21
+ export type CollapsibleCardSemanticType = $Values<
22
+ typeof COLLAPSIBLE_CARD_SEMANTIC
23
+ >;
24
+ export type CollapsibleCardProps = {
25
+ id?: string;
26
+ title: React.ReactNode;
27
+ children: React.ReactNode;
28
+ classNames?: ClassNames;
29
+ isOpen?: boolean;
30
+ headerIconName?: string;
31
+ headerIconType?: IconType;
32
+ semantic?: CollapsibleCardSemanticType;
33
+ onChange?:
34
+ | ((
35
+ e: React.SyntheticEvent<HTMLElement>,
36
+ isOpen: boolean,
37
+ id?: string,
38
+ ) => unknown)
39
+ | null
40
+ | undefined;
41
+ };
42
+ export type CollapsibleCardActionProps = {
43
+ children: React.ReactNode;
44
+ className?: string;
45
+ };
46
+ export const CollapsibleCardAction = ({
47
+ children,
48
+ className,
49
+ }: CollapsibleCardActionProps): React.ReactNode => (
50
+ <div className={classify(css.actionContainer, className)}>{children}</div>
51
+ );
52
+ export type CollapsibleCardContentProps = {
53
+ children: React.ReactNode;
54
+ className?: string;
55
+ };
56
+ export const CollapsibleCardContent = ({
57
+ children,
58
+ className,
59
+ }: CollapsibleCardActionProps): React.ReactNode => (
60
+ <div className={classify(css.contentContainer, className)}>{children}</div>
61
+ );
62
+ export const CollapsibleCard: React$AbstractComponent<
63
+ CollapsibleCardProps,
64
+ HTMLDivElement
65
+ > = React.forwardRef<CollapsibleCardProps, HTMLDivElement>(
66
+ (
67
+ {
68
+ id,
69
+ isOpen,
70
+ onChange,
71
+ classNames,
72
+ title,
73
+ children,
74
+ semantic = 'neutral',
75
+ headerIconName,
76
+ headerIconType = 'solid',
77
+ }: CollapsibleCardProps,
78
+ ref,
79
+ ): React.ReactNode => {
80
+ const [collapsibleCardIsOpen, setCollapsibleCardIsOpen] = React.useState(
81
+ Boolean(isOpen),
82
+ );
83
+ React.useEffect(() => {
84
+ setCollapsibleCardIsOpen(Boolean(isOpen));
85
+ }, [isOpen]);
86
+ return (
87
+ <div
88
+ data-testid="CollapsibleCard"
89
+ className={classify(css.wrapper, classNames?.wrapper)}
90
+ ref={ref}
91
+ >
92
+ <UnstyledButton
93
+ className={classify(
94
+ css.header,
95
+ {
96
+ [css.isOpen]: collapsibleCardIsOpen,
97
+ },
98
+ classNames?.title,
99
+ )}
100
+ onClick={(e) => {
101
+ onChange?.(e, !collapsibleCardIsOpen, id);
102
+ setCollapsibleCardIsOpen(!collapsibleCardIsOpen);
103
+ }}
104
+ >
105
+ <div className={css.headerContent}>
106
+ {!!headerIconName && (
107
+ <div className={classify(css.iconContainer, css[semantic])}>
108
+ <Icon
109
+ name={headerIconName}
110
+ type={headerIconType}
111
+ size="small"
112
+ className={css[semantic]}
113
+ />
114
+ </div>
115
+ )}
116
+
117
+ <Truncate>{title}</Truncate>
118
+ </div>
119
+
120
+ {collapsibleCardIsOpen ? (
121
+ <Icon name="chevron-up" color="secondary" size="small" />
122
+ ) : (
123
+ <Icon name="chevron-down" color="secondary" size="small" />
124
+ )}
125
+ </UnstyledButton>
126
+ {collapsibleCardIsOpen && (
127
+ <div className={classify(css.content, classNames?.content)}>
128
+ {children}
129
+ </div>
130
+ )}
131
+ </div>
132
+ );
133
+ },
134
+ );
@@ -0,0 +1 @@
1
+ export * from './CollapsibleCard';
@@ -0,0 +1,292 @@
1
+ import {$ReadOnly} from 'utility-types';
2
+ import * as React from 'react';
3
+ import classify from '../../utils/classify';
4
+ import {Dropdown} from '../Dropdown';
5
+ import type {IconType} from '../Icon';
6
+ import type {InputOnChangeParamsType} from '../Input';
7
+ import {Input} from '../Input';
8
+ import type {MenuOption, MenuProps} from '../Menu';
9
+ import {BodySmall, FormLabelSmall} from '../Text';
10
+ import css from './Combobox.module.css';
11
+ type InputClassNames = $ReadOnly<{
12
+ box?: string;
13
+ iconLeft?: string;
14
+ iconRight?: string;
15
+ wrapper?: string;
16
+ }>;
17
+ type DropdownClassNames = $ReadOnly<{
18
+ wrapper?: string;
19
+ box?: string;
20
+ iconRight?: string;
21
+ }>;
22
+ type ClassNames = $ReadOnly<{
23
+ wrapper?: string;
24
+ box?: string;
25
+ input?: InputClassNames;
26
+ dropdown?: DropdownClassNames;
27
+ }>;
28
+ export type ComboboxProps = {
29
+ /* Combobox props */
30
+ classNames?: ClassNames;
31
+ disabled?: boolean;
32
+ type?: 'text' | 'tel';
33
+ label?: string | React.ReactNode;
34
+ size?: 'medium' | 'small';
35
+ onContainerClick?:
36
+ | ((arg0: React.SyntheticEvent<HTMLElement>) => unknown)
37
+ | null
38
+ | undefined;
39
+ locked?: boolean;
40
+ error?: boolean;
41
+ errorText?: string;
42
+ helperText?: string | React.ReactNode;
43
+ required?: boolean;
44
+ readOnly?: boolean;
45
+ boxRef?: (arg0: HTMLElement | null | undefined) => unknown;
46
+ value: {
47
+ dropdown?: string;
48
+ input?: string;
49
+ };
50
+ onChange: (arg0: {
51
+ input: string;
52
+ dropdown: string;
53
+ inputChange?: InputOnChangeParamsType;
54
+ dropdownOption?: MenuOption;
55
+ }) => unknown;
56
+
57
+ /* Input props */
58
+ inputPlaceholder?: string;
59
+ onInputFocus?: (e: React.SyntheticEvent<HTMLInputElement>) => unknown;
60
+ onInputBlur?: (e: React.SyntheticEvent<HTMLInputElement>) => unknown;
61
+ onInputKeyDown?: (e: React.KeyboardEvent<HTMLInputElement>) => unknown;
62
+ onInputContainerClick?:
63
+ | ((arg0: React.SyntheticEvent<HTMLElement>) => unknown)
64
+ | null
65
+ | undefined;
66
+ inputName?: string;
67
+ iconLeftName?: string;
68
+ iconLeftType?: IconType;
69
+ iconRightName?: string;
70
+ iconRightType?: IconType;
71
+ onIconRightClick?:
72
+ | ((arg0: React.SyntheticEvent<HTMLElement>) => unknown)
73
+ | null
74
+ | undefined;
75
+ inputBoxRef?: (arg0: HTMLElement | null | undefined) => unknown;
76
+ minLength?: string;
77
+ maxLength?: string;
78
+ pattern?: string;
79
+ min?: string;
80
+ max?: string;
81
+
82
+ /* Dropdown props */
83
+ menu?: MenuProps;
84
+ onMenuOpen?: () => unknown;
85
+ onMenuClose?: () => unknown;
86
+ scrollMenuToBottom?: boolean;
87
+ onDropdownFocus?: (e: React.SyntheticEvent<HTMLInputElement>) => unknown;
88
+ onDropdownBlur?: (e: React.SyntheticEvent<HTMLInputElement>) => unknown;
89
+ onDropdownKeyDown?: (e: React.KeyboardEvent<HTMLInputElement>) => unknown;
90
+ onDropdownContainerClick?:
91
+ | ((arg0: React.SyntheticEvent<HTMLElement>) => unknown)
92
+ | null
93
+ | undefined;
94
+ dropdownName?: string;
95
+ dropdownPlaceholder?: string;
96
+ dropdownBoxRef?: (arg0: HTMLElement | null | undefined) => unknown;
97
+ };
98
+ export const Combobox: React$AbstractComponent<ComboboxProps, HTMLDivElement> =
99
+ React.forwardRef<ComboboxProps, HTMLDivElement>(
100
+ (props: ComboboxProps, ref) => {
101
+ const {
102
+ value,
103
+ onChange,
104
+ classNames,
105
+ disabled,
106
+ type = 'text',
107
+ label,
108
+ inputPlaceholder,
109
+ size = 'medium',
110
+ onContainerClick,
111
+ onInputFocus,
112
+ onInputBlur,
113
+ onInputKeyDown,
114
+ onInputContainerClick,
115
+ inputName,
116
+ locked,
117
+ error,
118
+ errorText,
119
+ helperText,
120
+ required,
121
+ iconLeftName,
122
+ iconLeftType,
123
+ iconRightName,
124
+ iconRightType,
125
+ onIconRightClick,
126
+ readOnly,
127
+ boxRef,
128
+ inputBoxRef,
129
+ minLength,
130
+ maxLength,
131
+ pattern,
132
+ min,
133
+ max,
134
+ menu,
135
+ onMenuOpen,
136
+ onMenuClose,
137
+ scrollMenuToBottom,
138
+ onDropdownFocus,
139
+ onDropdownBlur,
140
+ onDropdownKeyDown,
141
+ onDropdownContainerClick,
142
+ dropdownName,
143
+ dropdownPlaceholder,
144
+ dropdownBoxRef,
145
+ } = props;
146
+ const inputRef = React.useRef();
147
+ const dropdownRef = React.useRef();
148
+ const {input: inputValue, dropdown: dropdownInputText} = value;
149
+
150
+ const handleInputChange = (evt, isEnter) => {
151
+ onChange({
152
+ dropdown: dropdownInputText || '',
153
+ input: evt.target.value,
154
+ inputChange: {
155
+ evt,
156
+ isEnter,
157
+ },
158
+ });
159
+ };
160
+
161
+ const handleDropdownChange = (option) => {
162
+ onChange({
163
+ dropdown: option.label || '',
164
+ input: inputValue || '',
165
+ dropdownOption: option,
166
+ });
167
+ };
168
+
169
+ /* Handling locked functionality at Combobox level */
170
+ React.useEffect(() => {
171
+ if (locked) {
172
+ inputRef.current && (inputRef.current.disabled = true);
173
+ dropdownRef.current && (dropdownRef.current.disabled = true);
174
+ } else {
175
+ inputRef.current && (inputRef.current.disabled = false);
176
+ dropdownRef.current && (dropdownRef.current.disabled = false);
177
+ }
178
+ }, [locked]);
179
+ return (
180
+ <div ref={ref} className={classify(css.wrapper, classNames?.wrapper)}>
181
+ {Boolean(label) && (
182
+ <div className={css.info}>
183
+ <div className={css.infoContent}>
184
+ <FormLabelSmall color="secondary">{label ?? ''}</FormLabelSmall>
185
+ &nbsp;
186
+ {required && <FormLabelSmall color="danger">*</FormLabelSmall>}
187
+ </div>
188
+ </div>
189
+ )}
190
+ <div
191
+ className={classify(
192
+ css.box,
193
+ {
194
+ [css.withError]: error ?? false,
195
+ },
196
+ classNames?.box,
197
+ )}
198
+ onClick={!(disabled || locked) ? onContainerClick : null}
199
+ ref={boxRef}
200
+ >
201
+ <Dropdown
202
+ ref={dropdownRef}
203
+ menu={menu}
204
+ boxRef={dropdownBoxRef}
205
+ placeholder={dropdownPlaceholder}
206
+ readOnly={readOnly}
207
+ classNames={{
208
+ wrapper: classify(
209
+ css.dropdownWrapper,
210
+ classNames?.dropdown?.wrapper,
211
+ ),
212
+ box: classify(
213
+ css.dropdownBox,
214
+ {
215
+ [css.disabled]: disabled ?? null,
216
+ [css.locked]: locked ?? null,
217
+ },
218
+ classNames?.dropdown?.box,
219
+ ),
220
+ iconRight: css.chevron,
221
+ }}
222
+ disabled={disabled}
223
+ size={size}
224
+ onMenuOpen={onMenuOpen}
225
+ onMenuClose={onMenuClose}
226
+ onChange={handleDropdownChange}
227
+ scrollMenuToBottom={scrollMenuToBottom}
228
+ dropdownInputText={dropdownInputText}
229
+ onFocus={onDropdownFocus}
230
+ onBlur={onDropdownBlur}
231
+ onKeyDown={onDropdownKeyDown}
232
+ onContainerClick={onDropdownContainerClick}
233
+ name={dropdownName}
234
+ />
235
+ <Input
236
+ ref={inputRef}
237
+ boxRef={inputBoxRef}
238
+ name={inputName}
239
+ placeholder={inputPlaceholder}
240
+ onFocus={onInputFocus}
241
+ onBlur={onInputBlur}
242
+ onChange={handleInputChange}
243
+ onKeyDown={onInputKeyDown}
244
+ onContainerClick={onInputContainerClick}
245
+ value={inputValue}
246
+ type={type}
247
+ error={error}
248
+ disabled={disabled}
249
+ readOnly={readOnly}
250
+ classNames={{
251
+ wrapper: classify(css.inputWrapper, classNames?.input?.wrapper),
252
+ box: classify(
253
+ css.inputBox,
254
+ {
255
+ [css.disabled]: disabled ?? null,
256
+ [css.locked]: locked ?? null,
257
+ },
258
+ classNames?.input?.box,
259
+ ),
260
+ iconLeft: classNames?.input?.iconLeft,
261
+ iconRight: classNames?.input?.iconRight,
262
+ }}
263
+ size={size}
264
+ iconLeftName={iconLeftName}
265
+ iconLeftType={iconLeftType}
266
+ iconRightName={iconRightName}
267
+ iconRightType={iconRightType}
268
+ onIconRightClick={onIconRightClick}
269
+ minLength={minLength}
270
+ maxLength={maxLength}
271
+ pattern={pattern}
272
+ min={min}
273
+ max={max}
274
+ />
275
+ </div>
276
+ {(Boolean(helperText) || error) && (
277
+ <div className={css.info}>
278
+ {error && errorText ? (
279
+ <BodySmall color="danger">{errorText}</BodySmall>
280
+ ) : typeof helperText === 'string' ? (
281
+ <BodySmall color={disabled ? 'disabled' : 'secondary'}>
282
+ {helperText}
283
+ </BodySmall>
284
+ ) : (
285
+ helperText
286
+ )}
287
+ </div>
288
+ )}
289
+ </div>
290
+ );
291
+ },
292
+ );
@@ -0,0 +1,205 @@
1
+ import type {MenuOption} from '../Menu';
2
+ export const defaultOptions: MenuOption[] = [
3
+ {
4
+ key: '1',
5
+ label: 'Option one',
6
+ iconLeft: 'coffee',
7
+ },
8
+ {
9
+ key: '2',
10
+ label: 'Option two',
11
+ iconLeft: 'user',
12
+ },
13
+ {
14
+ key: '4',
15
+ label: 'Option three',
16
+ iconLeft: 'face-party',
17
+ },
18
+ {
19
+ key: '5',
20
+ label: 'Option five(disabled)',
21
+ disabled: true,
22
+ iconLeft: 'flag',
23
+ },
24
+ {
25
+ key: '6',
26
+ label: 'Option six(disabled) very long option that would truncate',
27
+ disabled: true,
28
+ iconLeft: 'camera',
29
+ },
30
+ {
31
+ key: '7',
32
+ label: 'Option seven',
33
+ iconLeft: 'coffee',
34
+ },
35
+ {
36
+ key: '8',
37
+ label: 'Option eight',
38
+ iconLeft: 'user',
39
+ },
40
+ {
41
+ key: '9',
42
+ label: 'Option nine',
43
+ iconLeft: 'face-party',
44
+ },
45
+ ];
46
+ export const currencyOptions: MenuOption[] = [
47
+ {
48
+ key: 'USD',
49
+ label: 'USD',
50
+ iconLeft: 'dollar-sign',
51
+ },
52
+ {
53
+ key: 'JPY',
54
+ label: 'JPY',
55
+ iconLeft: 'yen-sign',
56
+ },
57
+ {
58
+ key: 'KRW',
59
+ label: 'KRW',
60
+ iconLeft: 'won-sign',
61
+ },
62
+ {
63
+ key: 'KRW',
64
+ label: 'KRW',
65
+ iconLeft: 'won-sign',
66
+ },
67
+ {
68
+ key: 'GBP',
69
+ label: 'GBP',
70
+ iconLeft: 'sterling-sign',
71
+ },
72
+ {
73
+ key: 'INR',
74
+ label: 'INR',
75
+ iconLeft: 'indian-rupee-sign',
76
+ },
77
+ {
78
+ key: 'EUR',
79
+ label: 'EUR',
80
+ iconLeft: 'euro-sign',
81
+ },
82
+ {
83
+ key: 'CHF',
84
+ label: 'CHF',
85
+ iconLeft: 'franc-sign',
86
+ },
87
+ ];
88
+ export const phoneNumberOptions: MenuOption[] = [
89
+ {
90
+ key: 'US',
91
+ label: '+1 (United States)',
92
+ },
93
+ {
94
+ key: 'GB',
95
+ label: '+44 (United Kingdom)',
96
+ },
97
+ {
98
+ key: 'JP',
99
+ label: '+81 (Japan)',
100
+ },
101
+ {
102
+ key: 'KR',
103
+ label: '+82 (South Korea)',
104
+ },
105
+ {
106
+ key: 'IN',
107
+ label: '+91 (India)',
108
+ },
109
+ {
110
+ key: 'FR',
111
+ label: '+33 (France)',
112
+ },
113
+ {
114
+ key: 'DE',
115
+ label: '+49 (Germany)',
116
+ },
117
+ ];
118
+
119
+ /**
120
+ * Format phone numbers according to country-specific patterns
121
+ * @param {string} phoneNumber - The phone number to format
122
+ * @param {string} locale - The locale/country code (e.g., 'US', 'GB', 'JP')
123
+ * @returns {string} - Formatted phone number
124
+ */
125
+ export const formatPhoneNumber = (
126
+ phoneNumber: string,
127
+ locale: string = 'US',
128
+ ): string => {
129
+ // Remove all non-numeric characters
130
+ const cleaned = phoneNumber.replace(/\D/g, '');
131
+ // Format patterns for different locales
132
+ const patterns = {
133
+ // North America
134
+ US: {
135
+ // United States
136
+ pattern: /(\d{3})(\d{3})(\d{4})/,
137
+ format: '($1) $2-$3',
138
+ countryCode: '+1',
139
+ },
140
+ CA: {
141
+ // Canada
142
+ pattern: /(\d{3})(\d{3})(\d{4})/,
143
+ format: '($1) $2-$3',
144
+ countryCode: '+1',
145
+ },
146
+ // Europe
147
+ GB: {
148
+ // United Kingdom
149
+ pattern: /(\d{2})(\d{4})(\d{4})/,
150
+ format: '$1 $2 $3',
151
+ countryCode: '+44',
152
+ },
153
+ DE: {
154
+ // Germany
155
+ pattern: /(\d{3})(\d{4})(\d{4})/,
156
+ format: '$1 $2 $3',
157
+ countryCode: '+49',
158
+ },
159
+ FR: {
160
+ // France
161
+ pattern: /(\d{1})(\d{2})(\d{2})(\d{2})(\d{2})/,
162
+ format: '$1 $2 $3 $4 $5',
163
+ countryCode: '+33',
164
+ },
165
+ // Asia
166
+ JP: {
167
+ // Japan
168
+ pattern: /(\d{2})(\d{4})(\d{4})/,
169
+ format: '$1-$2-$3',
170
+ countryCode: '+81',
171
+ },
172
+ KR: {
173
+ // South Korea
174
+ pattern: /(\d{3})(\d{4})(\d{4})/,
175
+ format: '$1-$2-$3',
176
+ countryCode: '+82',
177
+ },
178
+ CN: {
179
+ // China
180
+ pattern: /(\d{3})(\d{4})(\d{4})/,
181
+ format: '$1 $2 $3',
182
+ countryCode: '+86',
183
+ },
184
+ IN: {
185
+ // India
186
+ pattern: /(\d{3})(\d{3})(\d{4})/,
187
+ format: '$1 $2 $3',
188
+ countryCode: '+91',
189
+ },
190
+ };
191
+ // Get the formatting rule for the locale
192
+ const rule = patterns[locale] || patterns.US; // Default to US formatting
193
+
194
+ // If number starts with country code, remove it for formatting
195
+ let numberToFormat = cleaned;
196
+ const countryCode = rule.countryCode.replace('+', '');
197
+
198
+ if (cleaned.startsWith(countryCode)) {
199
+ numberToFormat = cleaned.slice(countryCode.length);
200
+ }
201
+
202
+ // Format the number according to the pattern
203
+ const formatted = numberToFormat.replace(rule.pattern, rule.format);
204
+ return formatted;
205
+ };
@@ -0,0 +1 @@
1
+ export * from './Combobox';
@@ -0,0 +1,12 @@
1
+ import * as React from 'react';
2
+ export type ConditionalWrapperProps = {
3
+ condition?: boolean;
4
+ wrapper?: (children: React.ReactNode) => React.ReactNode;
5
+ children?: React.ReactNode;
6
+ };
7
+ export const ConditionalWrapper = ({
8
+ condition,
9
+ wrapper,
10
+ children,
11
+ }: ConditionalWrapperProps): React.ReactNode =>
12
+ condition ? wrapper?.(children) : children;
@@ -0,0 +1 @@
1
+ export {ConditionalWrapper} from './ConditionalWrapper';