@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,245 @@
1
+ import {$Shape} from 'utility-types';
2
+ export type Placement = 'top' | 'left' | 'right' | 'bottom';
3
+ export type ArrowPosition = 'start' | 'center' | 'end';
4
+ export type Justify = ArrowPosition;
5
+ export type PositionedPlacement = {
6
+ placement: Placement;
7
+ x: number;
8
+ y: number;
9
+ };
10
+ export function createElement(
11
+ document: Document,
12
+ type: string,
13
+ props: Record<string, unknown>,
14
+ ): HTMLElement {
15
+ const el = document.createElement(type);
16
+ return Object.assign(el, props);
17
+ }
18
+ export function pageHeight(): number {
19
+ const {body, documentElement} = window.document;
20
+ return Math.max(
21
+ body.scrollHeight,
22
+ body.clientHeight,
23
+ documentElement.scrollHeight,
24
+ documentElement.clientHeight,
25
+ );
26
+ }
27
+ export function getFixedAnchorPosition(
28
+ element: HTMLElement,
29
+ placement: Placement = 'top',
30
+ pad: number = 0,
31
+ justify: Justify = 'center',
32
+ ): PositionedPlacement {
33
+ const rect = element.getBoundingClientRect();
34
+ const docX = rect.left;
35
+ const docY = rect.top;
36
+ let x, y;
37
+
38
+ switch (placement) {
39
+ case 'bottom':
40
+ y = docY + rect.height + pad;
41
+
42
+ switch (justify) {
43
+ case 'start':
44
+ x = docX;
45
+ break;
46
+
47
+ case 'center':
48
+ x = docX + rect.width / 2;
49
+ break;
50
+
51
+ case 'end':
52
+ default:
53
+ x = docX + rect.width;
54
+ break;
55
+ }
56
+
57
+ break;
58
+
59
+ case 'left':
60
+ x = docX - pad;
61
+
62
+ switch (justify) {
63
+ case 'start':
64
+ y = docY;
65
+ break;
66
+
67
+ case 'center':
68
+ y = docY + rect.height / 2;
69
+ break;
70
+
71
+ case 'end':
72
+ default:
73
+ y = docY + rect.height;
74
+ break;
75
+ }
76
+
77
+ break;
78
+
79
+ case 'right':
80
+ x = docX + rect.width + pad;
81
+ y = docY + rect.height / 2;
82
+ break;
83
+
84
+ default:
85
+ y = docY - pad;
86
+
87
+ switch (justify) {
88
+ case 'start':
89
+ x = docX;
90
+ break;
91
+
92
+ case 'center':
93
+ x = docX + rect.width / 2;
94
+ break;
95
+
96
+ case 'end':
97
+ default:
98
+ x = docX + rect.width;
99
+ break;
100
+ }
101
+
102
+ break;
103
+ }
104
+
105
+ return {
106
+ x,
107
+ y,
108
+ placement,
109
+ };
110
+ }
111
+ export function getAnchorPosition(
112
+ element: HTMLElement,
113
+ placement: Placement = 'top',
114
+ pad: number = 0,
115
+ justify: Justify = 'center',
116
+ ): PositionedPlacement {
117
+ const position = getFixedAnchorPosition(element, placement, pad, justify);
118
+ const documentStyle = window.document.documentElement.style;
119
+ return {
120
+ ...position,
121
+ x: position.x + window.pageXOffset - pxToNumber(documentStyle.paddingLeft),
122
+ y: position.y + window.pageYOffset - pxToNumber(documentStyle.paddingTop),
123
+ };
124
+ }
125
+ export function pxToNumber(px: string): number {
126
+ return parseFloat(px.replace('px', '') || '0');
127
+ }
128
+ // TODO (kyle): add more handler types?
129
+ type Handlers = $Shape<{
130
+ click: (arg0: MouseEvent) => unknown;
131
+ mousedown: (arg0: MouseEvent) => unknown;
132
+ mouseup: (arg0: MouseEvent) => unknown;
133
+ pointerdown: (arg0: PointerEvent) => unknown;
134
+ pointerup: (arg0: PointerEvent) => unknown;
135
+ pointercancel: (arg0: PointerEvent) => unknown;
136
+ [key: string]: (arg0: Event) => unknown;
137
+ }>;
138
+ export function listen(
139
+ target: EventTarget,
140
+ handlers: Handlers,
141
+ options?: EventListenerOptionsOrUseCapture,
142
+ hook: 'addEventListener' | 'removeEventListener' = 'addEventListener',
143
+ ) {
144
+ for (const eventName in handlers) {
145
+ // $FlowFixMe indexing valid EventTarget properties
146
+ target[hook](eventName, handlers[eventName], options);
147
+ }
148
+ }
149
+ export function forget(
150
+ target: EventTarget,
151
+ events: Handlers,
152
+ options: EventListenerOptionsOrUseCapture,
153
+ ): void {
154
+ return listen(target, events, options, 'removeEventListener');
155
+ }
156
+ type MixedEvent = React.SyntheticEvent<EventTarget> | Event;
157
+ export function stopEvent(event: MixedEvent) {
158
+ event.stopPropagation();
159
+ }
160
+ export function stopEventImmediately(event: React.SyntheticEvent<EventTarget>) {
161
+ event.nativeEvent.stopImmediatePropagation();
162
+ }
163
+ export function cancelEvent(event: MixedEvent) {
164
+ event.stopPropagation();
165
+ event.preventDefault();
166
+ }
167
+ export function requestPointerLock(element: Element): Promise<void> {
168
+ return new Promise((resolve, reject) => {
169
+ const handleChange = () => {
170
+ // $FlowIssue
171
+ if (document.pointerLockElement === element) {
172
+ resolve();
173
+ removeHandlers();
174
+ }
175
+ };
176
+
177
+ const handleError = () => {
178
+ reject();
179
+ removeHandlers();
180
+ };
181
+
182
+ const removeHandlers = () => {
183
+ // $FlowFixMe
184
+ forget(document, {
185
+ pointerlockchange: handleChange,
186
+ pointerlockerror: handleError,
187
+ });
188
+ };
189
+
190
+ // $FlowFixMe
191
+ listen(document, {
192
+ pointerlockchange: handleChange,
193
+ pointerlockerror: handleError,
194
+ });
195
+ element.requestPointerLock();
196
+ });
197
+ }
198
+ export function checkDateInputSupport(): boolean {
199
+ const input = window.document.createElement('input');
200
+ input.setAttribute('type', 'date');
201
+ const notADateValue = 'not-a-date';
202
+ input.setAttribute('value', notADateValue);
203
+ return input.value !== notADateValue;
204
+ }
205
+ //reference: https://stackoverflow.com/a/10199306
206
+ export const getListPasteHandler = ({
207
+ listItemSeparatorRegex = /[\,\n]/,
208
+ handleValue,
209
+ }: {
210
+ listItemSeparatorRegex?: RegExp;
211
+ handleValue?: (arg0: string[]) => unknown;
212
+ }): ((arg0: ClipboardEvent) => unknown) => {
213
+ const handlePaste = (event: ClipboardEvent) => {
214
+ const value = event.clipboardData?.getData('text');
215
+
216
+ if (!value || !value.length) {
217
+ return;
218
+ }
219
+
220
+ //do nothing if the copied string fails the regex test
221
+ if (!listItemSeparatorRegex.test(value)) {
222
+ return;
223
+ }
224
+
225
+ event.preventDefault();
226
+ const parsedValues = value
227
+ .split(listItemSeparatorRegex)
228
+ .reduce((acc, val) => {
229
+ const newVal = val.trim();
230
+
231
+ if (
232
+ // value exists
233
+ !!newVal.length && // value not already in queue
234
+ !acc.includes(newVal)
235
+ ) {
236
+ acc.push(newVal);
237
+ }
238
+
239
+ return acc;
240
+ }, []);
241
+ handleValue?.(parsedValues);
242
+ };
243
+
244
+ return handlePaste;
245
+ };
@@ -0,0 +1 @@
1
+ export * from './dom';
@@ -0,0 +1,48 @@
1
+ export const uuid = (): string => {
2
+ let dt = new Date().getTime();
3
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
4
+ const r = (dt + Math.random() * 16) % 16 | 0;
5
+ dt = Math.floor(dt / 16);
6
+ return (c === 'x' ? r : (r & 0x3) | 0x8).toString(16);
7
+ });
8
+ };
9
+ export const range = (start: number, end: number): Array<number> => {
10
+ const length = end - start + 1;
11
+ return Array.from(
12
+ {
13
+ length,
14
+ },
15
+ (_, i) => start + i,
16
+ );
17
+ };
18
+ export const convertFileSize = (fileSize: number = 0): string => {
19
+ let sizeInBytes = fileSize;
20
+
21
+ // Check if the file size is less than 1024
22
+ if (sizeInBytes < 0) {
23
+ sizeInBytes = Math.abs(sizeInBytes);
24
+ }
25
+
26
+ // Handle the case where the file size is 0 or negative
27
+ if (sizeInBytes <= 0) {
28
+ return '0 B';
29
+ }
30
+
31
+ // Check if the file size is less than 1024
32
+ if (sizeInBytes < 1024) {
33
+ // Return the file size in bytes
34
+ return sizeInBytes.toString() + ' B';
35
+ } // Check if the file size is less than 1048576
36
+ else if (sizeInBytes < 1048576) {
37
+ // Return the file size in KB
38
+ return (sizeInBytes / 1024).toFixed(1) + ' KB';
39
+ } // Check if the file size is less than 1073741824
40
+ else if (sizeInBytes < 1073741824) {
41
+ // Return the file size in MB
42
+ return (sizeInBytes / 1048576).toFixed(1) + ' MB';
43
+ } // Otherwise, the file size is greater than or equal to 1073741824
44
+ else {
45
+ // Return the file size in GB
46
+ return (sizeInBytes / 1073741824).toFixed(1) + ' GB';
47
+ }
48
+ };
@@ -0,0 +1 @@
1
+ export * from './helpers';
@@ -0,0 +1,14 @@
1
+ export * from './array';
2
+ export * from './charts';
3
+ export * from './classify';
4
+ export * from './click-away';
5
+ export * from './date-range-picker';
6
+ export * from './dom';
7
+ export * from './helpers';
8
+ export * from './makeClassNameComponent';
9
+ export * from './menu';
10
+ export * from './merge-refs';
11
+ export * from './rating';
12
+ export * from './score-bar';
13
+ export * from './string';
14
+ export * from './tokens';
@@ -0,0 +1 @@
1
+ export * from './makeClassNameComponent';
@@ -0,0 +1,73 @@
1
+ import {$ReadOnly} from 'utility-types';
2
+ import * as React from 'react';
3
+ import classify from '../classify';
4
+ export function nameHoc<C, T extends React.ComponentType<C>, C2>(
5
+ WrapperComponent: T,
6
+ WrappedComponent: React.ComponentType<C2>,
7
+ hocName: string,
8
+ ): T {
9
+ const wrappedComponentName =
10
+ WrappedComponent.displayName || WrappedComponent.name || 'Component';
11
+ WrapperComponent.displayName = `${hocName}(${wrappedComponentName})`;
12
+ return WrapperComponent;
13
+ }
14
+ export type ClassNameComponent<
15
+ T = 'div',
16
+ I = React.ElementRef<T>,
17
+ > = React.AbstractComponent<
18
+ JSX.LibraryManagedAttributes<T, React.ComponentProps<T>>,
19
+ I
20
+ >;
21
+ export function makeClassNameComponent<C extends string>(
22
+ baseClassName: string, // $FlowFixMe not sure how to type this correctly
23
+ ComponentType: C = 'div',
24
+ name?: string,
25
+ ): React.AbstractComponent<
26
+ JSX.LibraryManagedAttributes<C, React.ComponentProps<C>>,
27
+ React.ElementRef<C>
28
+ > {
29
+ return React.forwardRef(
30
+ // $FlowFixMe[escaped-generic]
31
+ nameComponent(
32
+ (
33
+ {className, ...props},
34
+ ref, // $FlowFixMe[escaped-generic]
35
+ ) => (
36
+ <ComponentType
37
+ {...props}
38
+ ref={ref}
39
+ className={classify(baseClassName, className)}
40
+ />
41
+ ),
42
+ `CNC(${name || ComponentType})`,
43
+ ),
44
+ );
45
+ }
46
+ export function makeClassNameComponentCustom<
47
+ C extends $ReadOnly<{
48
+ className?: string;
49
+ }>,
50
+ B,
51
+ >(
52
+ baseClassName: string,
53
+ ComponentType: React.AbstractComponent<C, B>,
54
+ ): React.AbstractComponent<C, B> {
55
+ return React.forwardRef(
56
+ nameHoc(
57
+ ({className, ...props}, ref) => (
58
+ <ComponentType
59
+ {...props}
60
+ ref={ref}
61
+ className={classify(baseClassName, className)}
62
+ />
63
+ ),
64
+ ComponentType,
65
+ 'CNC',
66
+ ),
67
+ );
68
+ }
69
+
70
+ function nameComponent(component, name) {
71
+ component.displayName = name;
72
+ return component;
73
+ }
@@ -0,0 +1 @@
1
+ export * from './menu';
@@ -0,0 +1 @@
1
+ export * from './merge-refs';
@@ -0,0 +1,15 @@
1
+ export function mergeRefs(
2
+ refs: Array<{
3
+ current: HTMLElement | null | undefined;
4
+ }>,
5
+ ): (value: HTMLElement | null | undefined) => void {
6
+ return (value) => {
7
+ refs.forEach((ref) => {
8
+ if (typeof ref === 'function') {
9
+ ref(value);
10
+ } else if (ref != null) {
11
+ ref.current = value;
12
+ }
13
+ });
14
+ };
15
+ }
@@ -0,0 +1 @@
1
+ export * from './rating';
@@ -0,0 +1,31 @@
1
+ export const RATING_ERRORS = Object.freeze({
2
+ INVALID_RANGE: {
3
+ type: 'INVALID_RANGE',
4
+ description:
5
+ "Given rating's stop value cannot come before the start value.",
6
+ },
7
+ INVALID_RATING_LABELS: {
8
+ type: 'INVALID_RATING_LABELS',
9
+ description: 'Given rating labels are invalid.',
10
+ },
11
+ });
12
+ export const RATINGS: Array<string> = [
13
+ 'Not-Qualified',
14
+ 'Proficient',
15
+ 'Silver',
16
+ 'Gold',
17
+ 'Platinum',
18
+ 'Diamond',
19
+ ];
20
+ export const getRatingLabel = (
21
+ rating: number,
22
+ labels: Array<string>,
23
+ ): string => {
24
+ if (rating <= 0) {
25
+ return labels[0];
26
+ } else if (rating >= labels.length) {
27
+ return labels.slice(-1)[0];
28
+ } else {
29
+ return labels[rating];
30
+ }
31
+ };
@@ -0,0 +1 @@
1
+ export * from './score-bar';
@@ -0,0 +1,54 @@
1
+ import type {
2
+ ScoreBarColorMap,
3
+ ScoreBarLabelMap,
4
+ } from '../../components/ScoreBar';
5
+
6
+ const getValidRange = (
7
+ score: number,
8
+ totalBars: number,
9
+ keys: Array<string>,
10
+ ): string => {
11
+ const scorePercentage = (100 * score) / totalBars;
12
+
13
+ for (const key of keys) {
14
+ if (scorePercentage <= Number(key)) {
15
+ return key;
16
+ }
17
+ }
18
+
19
+ return [...keys].pop() || '';
20
+ };
21
+
22
+ export const getColorByScorePercentage = (
23
+ totalBars: number,
24
+ score: number,
25
+ currentBarNumber: number,
26
+ colorMap: ScoreBarColorMap,
27
+ ): string => {
28
+ if (score <= 0) {
29
+ return colorMap.inactive;
30
+ }
31
+
32
+ const validRange = getValidRange(score, totalBars, Object.keys(colorMap));
33
+ const validColor = colorMap[validRange];
34
+ return currentBarNumber < score ? validColor : colorMap.inactive;
35
+ };
36
+ export const getLabelByScorePercentage = (
37
+ score: number,
38
+ totalBars: number,
39
+ labelMap?: ScoreBarLabelMap,
40
+ ): string => {
41
+ if (!labelMap) {
42
+ return '';
43
+ }
44
+
45
+ const validRange = getValidRange(score, totalBars, Object.keys(labelMap));
46
+ const validLabel = labelMap[validRange];
47
+ return validLabel || '';
48
+ };
49
+ export const SCORE_BAR_ERRORS = Object.freeze({
50
+ INVALID_BAR_COUNT: {
51
+ type: 'INVALID_BAR_COUNT',
52
+ description: 'totalBars can not be less than 1',
53
+ },
54
+ });
@@ -0,0 +1 @@
1
+ export * from './string';
@@ -0,0 +1,30 @@
1
+ export const capitalize = (word: string): string => {
2
+ if (!word) {
3
+ return '';
4
+ }
5
+
6
+ return word
7
+ .toLowerCase()
8
+ .replace(/\w/, (firstLetter) => firstLetter.toUpperCase());
9
+ };
10
+ export const escapeRegExp = (str: string): string =>
11
+ str.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
12
+ export const formatWord = (word: string, count: number): string =>
13
+ count === 1 ? word : word + 's';
14
+ export const truncateString = (
15
+ inputString: string,
16
+ maxLength: number,
17
+ ): string => {
18
+ if (inputString.length > maxLength) {
19
+ return inputString.substring(0, maxLength - 3) + '...';
20
+ }
21
+
22
+ return inputString;
23
+ };
24
+ export const appendPx = (value?: number | string): string => {
25
+ if (typeof value === 'number') {
26
+ return `${value}px`;
27
+ }
28
+
29
+ return value ?? '';
30
+ };
@@ -0,0 +1,32 @@
1
+ import * as React from 'react';
2
+ type V = {
3
+ key: string;
4
+ label: string;
5
+ arbitrary?: boolean;
6
+ multiarbitrary?: boolean;
7
+ };
8
+ type Group<V> = {
9
+ options: Array<V>;
10
+ groupTitle?: React.ReactNode;
11
+ };
12
+ export const getFirstOption = (options: Array<V>): V | null => {
13
+ // pick the first option from the options
14
+ if (options.length > 0) {
15
+ return options[0];
16
+ }
17
+
18
+ return null;
19
+ };
20
+ export const getFirstOptionFromGroup = (
21
+ groupTitleOptions: Array<Group<V>>,
22
+ ): V | null => {
23
+ if (groupTitleOptions.length > 0) {
24
+ const firstGroup = groupTitleOptions[0];
25
+
26
+ if (firstGroup.options && firstGroup.options.length > 0) {
27
+ return firstGroup.options[0];
28
+ }
29
+ }
30
+
31
+ return null;
32
+ };
@@ -0,0 +1 @@
1
+ export * from './tokens';