@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,104 @@
1
+ import * as React from 'react';
2
+ import {classify} from '../../utils/classify';
3
+ import css from './Grid.module.css';
4
+ export type RowProps = {
5
+ className?: string;
6
+ children?: React.ReactNode;
7
+ span?: number;
8
+ offset?: number;
9
+ gridType?: 'small' | 'medium' | 'large' | 'autoFill' | 'autoFit';
10
+ repeatTracks?: string;
11
+ };
12
+ const GRID_SYSTEM_MAP = {
13
+ small: 24,
14
+ medium: 12,
15
+ large: 6,
16
+ autoFill: 'auto-fill',
17
+ autoFit: 'auto-fit',
18
+ };
19
+ export const Row = ({
20
+ className,
21
+ children,
22
+ span = 1,
23
+ gridType = 'medium',
24
+ repeatTracks = '1fr',
25
+ }: RowProps): React.ReactNode => {
26
+ const gridRepeatCount = GRID_SYSTEM_MAP[gridType];
27
+ let columnSpanCount = 0;
28
+ let lastChildColCount = 0;
29
+ const childrenWithProps = React.Children.map(children, (child) => {
30
+ if (React.isValidElement(child)) {
31
+ const {span = 1, offset = 0} = child.props;
32
+
33
+ if (span < 1) {
34
+ console.error(`span can not be less than one`);
35
+ return;
36
+ }
37
+
38
+ if (offset < 0) {
39
+ console.error(`offset can not be negative`);
40
+ return;
41
+ }
42
+
43
+ lastChildColCount = columnSpanCount;
44
+ columnSpanCount = lastChildColCount + offset + span;
45
+ let gridColumnStart = 0,
46
+ gridColumnEnd = 0;
47
+
48
+ if (gridType === 'autoFill' || gridType === 'autoFit') {
49
+ gridColumnStart = 'auto';
50
+ return React.cloneElement(child, {
51
+ gridColumnStart,
52
+ gridColumnEnd: `span ${span}`,
53
+ });
54
+ } else if (
55
+ typeof gridRepeatCount === 'number' &&
56
+ columnSpanCount <= gridRepeatCount
57
+ ) {
58
+ gridColumnStart = lastChildColCount + offset + 1;
59
+ return React.cloneElement(child, {
60
+ gridColumnStart,
61
+ gridColumnEnd: `span ${span}`,
62
+ });
63
+ } else {
64
+ console.error(`number of column exceed ${gridRepeatCount}`);
65
+ }
66
+ }
67
+ });
68
+ return (
69
+ <div
70
+ data-testid="Grid"
71
+ className={classify(css.gridRow, className)}
72
+ style={{
73
+ '--grid-repeat-count': gridRepeatCount,
74
+ '--repeat-tracks': repeatTracks,
75
+ }}
76
+ >
77
+ {childrenWithProps}
78
+ </div>
79
+ );
80
+ };
81
+ export type ColProps = {
82
+ className?: string;
83
+ children?: React.ReactNode;
84
+ span?: number;
85
+ offset?: number;
86
+ gridColumnStart?: number;
87
+ gridColumnEnd?: number;
88
+ };
89
+ export const Col = ({
90
+ className,
91
+ children,
92
+ gridColumnStart,
93
+ gridColumnEnd,
94
+ }: ColProps): React.ReactNode => (
95
+ <div
96
+ className={classify(css.gridColumn, className)}
97
+ style={{
98
+ '--grid-column-start': gridColumnStart,
99
+ '--grid-column-end': gridColumnEnd,
100
+ }}
101
+ >
102
+ {children}
103
+ </div>
104
+ );
@@ -0,0 +1 @@
1
+ export * from './Grid';
@@ -0,0 +1,101 @@
1
+ import {$ReadOnly} from 'utility-types';
2
+ import * as React from 'react';
3
+ import type {ColorTypes} from '../../types/typography';
4
+ import classify from '../../utils/classify';
5
+ import {UnstyledButton} from '../Button';
6
+ import {TEXT_COLORS} from '../Text';
7
+ import type {IconProps, IconSize, IconType} from './';
8
+ import {Icon} from './';
9
+ import css from './ClickableIcon.module.css';
10
+ type ClassNames = $ReadOnly<{
11
+ icon?: string;
12
+ button?: string;
13
+ }>;
14
+ export type ClickableIconProps = IconProps & {
15
+ classNames?: ClassNames;
16
+ };
17
+ export const ClickableIcon: React$AbstractComponent<
18
+ ClickableIconProps,
19
+ HTMLButtonElement
20
+ > = React.forwardRef<ClickableIconProps, HTMLButtonElement>(
21
+ (
22
+ {
23
+ size = 'medium',
24
+ ariaLabel,
25
+ onClick,
26
+ className,
27
+ // Deprecated for Clickable Icon
28
+ classNames,
29
+ ...props
30
+ }: ClickableIconProps,
31
+ ref,
32
+ ) => {
33
+ const onKeyDownHandler = (e) => {
34
+ if (e.key === 'Enter') {
35
+ e.preventDefault();
36
+ onClick && onClick(e);
37
+ }
38
+ };
39
+
40
+ return (
41
+ <UnstyledButton
42
+ {...props}
43
+ onClick={onClick}
44
+ onKeyDown={onKeyDownHandler}
45
+ ariaLabel={ariaLabel}
46
+ className={classify(
47
+ css.button,
48
+ {
49
+ [css.small]: size === 'small',
50
+ [css.medium]: size === 'medium',
51
+ [css.large]: size === 'large',
52
+ },
53
+ classNames?.button,
54
+ )}
55
+ ref={ref}
56
+ >
57
+ <Icon
58
+ size={size}
59
+ className={classNames?.icon || className}
60
+ {...props}
61
+ />
62
+ </UnstyledButton>
63
+ );
64
+ },
65
+ );
66
+ export type CloseIconProps = {
67
+ size?: IconSize;
68
+ type?: IconType;
69
+ color?: ColorTypes;
70
+ onClick?:
71
+ | ((arg0: React.SyntheticEvent<HTMLElement>) => unknown)
72
+ | null
73
+ | undefined;
74
+ className?: string;
75
+ // Deprecated for Clickable Icon
76
+ ariaLabel?: string;
77
+ classNames?: ClassNames;
78
+ };
79
+ export const CloseIcon: React$AbstractComponent<
80
+ CloseIconProps,
81
+ HTMLButtonElement
82
+ > = React.forwardRef<CloseIconProps, HTMLButtonElement>(
83
+ (
84
+ {
85
+ size = 'medium',
86
+ type = 'regular',
87
+ color = TEXT_COLORS.primary,
88
+ ...props
89
+ }: CloseIconProps,
90
+ ref,
91
+ ) => (
92
+ <ClickableIcon
93
+ name="close"
94
+ size={size}
95
+ type={type}
96
+ color={color}
97
+ {...props}
98
+ ref={ref}
99
+ />
100
+ ),
101
+ );
@@ -0,0 +1,71 @@
1
+ import {$Keys} 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 typographyStyle from '../../styles/typography.module.css';
7
+ export const ICON_TYPE = Object.freeze({
8
+ regular: 'regular',
9
+ solid: 'solid',
10
+ duotone: 'duotone',
11
+ brands: 'brands',
12
+ });
13
+ export const ICON_SIZE = Object.freeze({
14
+ small: 'small',
15
+ medium: 'medium',
16
+ large: 'large',
17
+ });
18
+ export type IconSize = $Keys<typeof ICON_SIZE>;
19
+ export type IconType = $Keys<typeof ICON_TYPE>;
20
+ export type IconProps = {
21
+ type?: IconType;
22
+ name: string;
23
+ size?: IconSize;
24
+ color?: ColorTypes;
25
+ className?: string;
26
+ onClick?:
27
+ | ((arg0: React.SyntheticEvent<HTMLElement>) => unknown)
28
+ | null
29
+ | undefined;
30
+ ariaLabel?: string;
31
+ swapOpacity?: boolean;
32
+ style?: Record<string, string>;
33
+ };
34
+ export const Icon: React$AbstractComponent<IconProps, HTMLDivElement> =
35
+ React.forwardRef<IconProps, HTMLDivElement>(
36
+ (
37
+ {
38
+ type = 'regular',
39
+ name = '',
40
+ size = 'medium',
41
+ color = TEXT_COLORS.primary,
42
+ className,
43
+ style,
44
+ onClick,
45
+ swapOpacity,
46
+ }: IconProps,
47
+ forwardRef,
48
+ ) => (
49
+ <>
50
+ {!!name && (
51
+ <div
52
+ className={classify(
53
+ typographyStyle.centerAlignFlex,
54
+ typographyStyle[`${size}Icon`],
55
+ typographyStyle[color],
56
+ className,
57
+ )}
58
+ onClick={onClick}
59
+ ref={forwardRef}
60
+ >
61
+ <i
62
+ className={classify(`fa-${type} fa-${name} `, {
63
+ ['fa-swap-opacity']: swapOpacity,
64
+ })}
65
+ style={style}
66
+ />
67
+ </div>
68
+ )}
69
+ </>
70
+ ),
71
+ );
@@ -0,0 +1,138 @@
1
+ import {TEXT_COLORS} from '../../types/typography';
2
+ import {ICON_SIZE} from './Icon';
3
+ const colorOptions: Array<unknown> = [...Object.values(TEXT_COLORS)];
4
+ const iconSize: Array<unknown> = [...Object.values(ICON_SIZE)];
5
+ export const ICON_DOCS = {
6
+ argTypes: {
7
+ type: {
8
+ description:
9
+ 'Type represents 5 unique icon styles :- Solid, Regular, Light, Thin, Duotone',
10
+ options: ['regular', 'solid', 'duotone', 'brands'],
11
+ control: {
12
+ type: 'select',
13
+ },
14
+ table: {
15
+ type: {
16
+ summary: 'string',
17
+ },
18
+ defaultValue: {
19
+ summary: 'regular',
20
+ },
21
+ },
22
+ },
23
+ name: {
24
+ description:
25
+ 'Icon Name represents name of icon as supported by fontawesome',
26
+ type: {
27
+ required: true,
28
+ },
29
+ table: {
30
+ type: {
31
+ summary: 'string',
32
+ },
33
+ defaultValue: {
34
+ summary: 'face-party',
35
+ },
36
+ },
37
+ },
38
+ color: {
39
+ description: 'Same set of colors as supported in text',
40
+ options: colorOptions,
41
+ control: {
42
+ type: 'select',
43
+ },
44
+ table: {
45
+ type: {
46
+ summary: 'string',
47
+ },
48
+ defaultValue: {
49
+ summary: 'primary',
50
+ },
51
+ },
52
+ },
53
+ size: {
54
+ description:
55
+ 'Icon supports three size variants namely small and medium. `small` < `medium` < `large`',
56
+ options: iconSize,
57
+ control: {
58
+ type: 'select',
59
+ },
60
+ table: {
61
+ type: {
62
+ summary: 'string',
63
+ },
64
+ defaultValue: {
65
+ summary: 'medium',
66
+ },
67
+ },
68
+ },
69
+ swapOpacity: {
70
+ name: 'swapOpacity',
71
+ description: `Swap the default opacity of each layer in a duotone icon.`,
72
+ options: [false, true],
73
+ control: 'boolean',
74
+ table: {
75
+ type: {
76
+ summary: 'boolean',
77
+ },
78
+ defaultValue: {
79
+ summary: false,
80
+ },
81
+ },
82
+ },
83
+ className: {
84
+ description: 'External className to be applied on container',
85
+ control: {
86
+ type: 'text',
87
+ },
88
+ table: {
89
+ type: {
90
+ summary: 'string',
91
+ },
92
+ },
93
+ },
94
+ onClick: {
95
+ description: 'onClick handler',
96
+ action: 'clicked',
97
+ table: {
98
+ type: {
99
+ summary: '(SyntheticEvent<HTMLElement>) => mixed',
100
+ },
101
+ },
102
+ },
103
+ ariaLabel: {
104
+ control: {
105
+ type: 'text',
106
+ },
107
+ description:
108
+ '**aria-label** should be added where `ClickableIcon` and `CloseIcon` is used. This would avoid accessibility violations in screen readers',
109
+ table: {
110
+ type: {
111
+ summary: 'string',
112
+ },
113
+ },
114
+ },
115
+ },
116
+ parameters: {
117
+ componentSubtitle: 'Generates a Icon component',
118
+ docs: {
119
+ description: {
120
+ component: `
121
+ \`\`\`js
122
+ import {
123
+ Icon,
124
+ ClickableIcon,
125
+ CloseIcon,
126
+ SemanticIcon
127
+ } from "@spaced-out/ui-design-system/lib/components/Icon";
128
+ \`\`\`
129
+ Icon component uses <a href="https://fontawesome.com/icons" target="_blank">fontawesome</a> icon internally.
130
+ The name prop has be to consistent with one used in fontawesome.
131
+ `,
132
+ },
133
+ },
134
+ storySource: {
135
+ componentPath: '/src/components/Icon/Icon.js',
136
+ },
137
+ },
138
+ };
@@ -0,0 +1,42 @@
1
+ import {$ReadOnly} from 'utility-types';
2
+ import * as React from 'react';
3
+ import type {AlertSemanticType} from '../../types/common';
4
+ import {TEXT_COLORS} from '../../types/typography';
5
+ import classify from '../../utils/classify';
6
+ import type {IconProps} from './Icon';
7
+ import {Icon} from './Icon';
8
+ import css from './SemanticIcon.module.css';
9
+ type ClassNames = $ReadOnly<{
10
+ wrapper?: string;
11
+ icon?: string;
12
+ }>;
13
+ export type SemanticIconProps = IconProps & {
14
+ classNames?: ClassNames;
15
+ semantic?: AlertSemanticType;
16
+ };
17
+ export const SemanticIcon = ({
18
+ semantic = 'neutral',
19
+ classNames,
20
+ size = 'medium',
21
+ ...iconProps
22
+ }: SemanticIconProps): React.ReactNode => (
23
+ <>
24
+ {!!iconProps.name && (
25
+ <div
26
+ className={classify(
27
+ css.iconContainer,
28
+ css[semantic],
29
+ css[size],
30
+ classNames?.wrapper,
31
+ )}
32
+ >
33
+ <Icon
34
+ {...iconProps}
35
+ className={classify(iconProps.className, classNames?.icon)}
36
+ color={TEXT_COLORS[semantic]}
37
+ size={size === 'large' ? 'medium' : size}
38
+ />
39
+ </div>
40
+ )}
41
+ </>
42
+ );
@@ -0,0 +1,3 @@
1
+ export * from './ClickableIcon';
2
+ export * from './Icon';
3
+ export * from './SemanticIcon';
@@ -0,0 +1,210 @@
1
+ import {$ReadOnly} from 'utility-types';
2
+ import * as React from 'react';
3
+ import type {AlertSemanticType} from '../../types/common';
4
+ import {ALERT_SEMANTIC} from '../../types/common';
5
+ import {TEXT_COLORS} from '../../types/typography';
6
+ import {classify} from '../../utils/classify';
7
+ import type {IconType} from '../Icon';
8
+ import {ClickableIcon, Icon} from '../Icon';
9
+ import {Link} from '../Link';
10
+ import {SubTitleExtraSmall} from '../Text';
11
+ import {Truncate} from '../Truncate';
12
+ import css from './InContextAlert.module.css';
13
+ type ClassNames = $ReadOnly<{
14
+ wrapper?: string;
15
+ alertText?: string;
16
+ actionContainer?: string;
17
+ icon?: string;
18
+ }>;
19
+ type InContextAlertBaseProps = (
20
+ | {
21
+ dismissable: true;
22
+ onCloseClick?:
23
+ | ((arg0: React.SyntheticEvent<HTMLElement>) => unknown)
24
+ | null
25
+ | undefined;
26
+ selfDismiss?: boolean;
27
+ }
28
+ | {
29
+ dismissable?: false;
30
+ }
31
+ ) & {
32
+ classNames?: ClassNames;
33
+ children?: string;
34
+ actionText?: string;
35
+ onAction?:
36
+ | ((arg0: React.SyntheticEvent<HTMLElement>) => unknown)
37
+ | null
38
+ | undefined;
39
+ };
40
+ export type InContextAlertProps = InContextAlertBaseProps & {
41
+ semantic?: AlertSemanticType;
42
+ leftIconName?: string;
43
+ leftIconType?: IconType;
44
+ };
45
+
46
+ const AlertIcon = ({
47
+ semantic,
48
+ leftIconName,
49
+ leftIconType,
50
+ iconClassName,
51
+ }: {
52
+ semantic: AlertSemanticType;
53
+ leftIconName: string;
54
+ leftIconType?: IconType;
55
+ iconClassName?: string;
56
+ }) => {
57
+ switch (semantic) {
58
+ case ALERT_SEMANTIC.neutral:
59
+ return (
60
+ <Icon
61
+ color={TEXT_COLORS.neutral}
62
+ name={leftIconName ? leftIconName : 'face-smile'}
63
+ size="small"
64
+ type={leftIconType}
65
+ className={iconClassName}
66
+ />
67
+ );
68
+
69
+ case ALERT_SEMANTIC.success:
70
+ return (
71
+ <Icon
72
+ name={leftIconName ? leftIconName : 'circle-check'}
73
+ size="small"
74
+ color={TEXT_COLORS.success}
75
+ type={leftIconType}
76
+ className={iconClassName}
77
+ />
78
+ );
79
+
80
+ case ALERT_SEMANTIC.information:
81
+ return (
82
+ <Icon
83
+ name={leftIconName ? leftIconName : 'circle-info'}
84
+ size="small"
85
+ color={TEXT_COLORS.information}
86
+ type={leftIconType}
87
+ className={iconClassName}
88
+ />
89
+ );
90
+
91
+ case ALERT_SEMANTIC.warning:
92
+ return (
93
+ <Icon
94
+ name={leftIconName ? leftIconName : 'circle-exclamation'}
95
+ size="small"
96
+ color={TEXT_COLORS.warning}
97
+ type={leftIconType}
98
+ className={iconClassName}
99
+ />
100
+ );
101
+
102
+ case ALERT_SEMANTIC.danger:
103
+ return (
104
+ <Icon
105
+ name={leftIconName ? leftIconName : 'shield-exclamation'}
106
+ size="small"
107
+ color={TEXT_COLORS.danger}
108
+ type={leftIconType}
109
+ className={iconClassName}
110
+ />
111
+ );
112
+
113
+ default:
114
+ return (
115
+ <Icon
116
+ color={TEXT_COLORS.neutral}
117
+ name={leftIconName ? leftIconName : 'face-smile'}
118
+ size="small"
119
+ type={leftIconType}
120
+ className={iconClassName}
121
+ />
122
+ );
123
+ }
124
+ };
125
+
126
+ export const InContextAlert: React$AbstractComponent<
127
+ InContextAlertProps,
128
+ HTMLDivElement
129
+ > = React.forwardRef<InContextAlertProps, HTMLDivElement>(
130
+ (props: InContextAlertProps, ref): React.ReactNode => {
131
+ const {
132
+ classNames,
133
+ semantic = ALERT_SEMANTIC.neutral,
134
+ dismissable,
135
+ children,
136
+ selfDismiss = false,
137
+ leftIconName = '',
138
+ onCloseClick,
139
+ actionText = '',
140
+ onAction,
141
+ leftIconType,
142
+ } = props;
143
+ const [dismissed, setDismissed] = React.useState(false);
144
+
145
+ const closeClickHandler = (e) => {
146
+ onCloseClick && onCloseClick(e);
147
+ selfDismiss && setDismissed(true);
148
+ };
149
+
150
+ return (
151
+ <>
152
+ {!dismissed && (
153
+ <div
154
+ className={classify(
155
+ css.alertContainer,
156
+ {
157
+ [css.neutral]: semantic === ALERT_SEMANTIC.neutral,
158
+ [css.success]: semantic === ALERT_SEMANTIC.success,
159
+ [css.information]: semantic === ALERT_SEMANTIC.information,
160
+ [css.warning]: semantic === ALERT_SEMANTIC.warning,
161
+ [css.danger]: semantic === ALERT_SEMANTIC.danger,
162
+ },
163
+ classNames?.wrapper,
164
+ )}
165
+ ref={ref}
166
+ >
167
+ <AlertIcon
168
+ semantic={semantic}
169
+ leftIconName={leftIconName}
170
+ leftIconType={leftIconType}
171
+ iconClassName={classNames?.icon}
172
+ />
173
+ {React.Children.count(children) > 0 && (
174
+ <SubTitleExtraSmall className={classify(classNames?.alertText)}>
175
+ <Truncate line={2} wordBreak="initial">
176
+ {children}
177
+ </Truncate>
178
+ </SubTitleExtraSmall>
179
+ )}
180
+ {!!(actionText || dismissable) && (
181
+ <div
182
+ className={classify(
183
+ css.actionContainer,
184
+ classNames?.actionContainer,
185
+ )}
186
+ >
187
+ {!!actionText && (
188
+ <Link onClick={onAction} color="primary">
189
+ {actionText}
190
+ </Link>
191
+ )}
192
+ {!!dismissable && (
193
+ <ClickableIcon
194
+ color={TEXT_COLORS.primary}
195
+ ariaLabel="close"
196
+ name="close"
197
+ size="small"
198
+ type="regular"
199
+ onClick={closeClickHandler}
200
+ className={css.closeIcon}
201
+ />
202
+ )}
203
+ </div>
204
+ )}
205
+ </div>
206
+ )}
207
+ </>
208
+ );
209
+ },
210
+ );
@@ -0,0 +1 @@
1
+ export * from './InContextAlert';