@ndlib/component-library 0.0.7-9.1

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 (290) hide show
  1. package/README.md +101 -0
  2. package/dist/FontLoader.d.ts +1 -0
  3. package/dist/FontLoader.js +4 -0
  4. package/dist/components/composites/Card/Card.stories.d.ts +13 -0
  5. package/dist/components/composites/Card/Card.stories.js +122 -0
  6. package/dist/components/composites/Card/Card.test.d.ts +1 -0
  7. package/dist/components/composites/Card/Card.test.js +37 -0
  8. package/dist/components/composites/Card/index.d.ts +36 -0
  9. package/dist/components/composites/Card/index.js +89 -0
  10. package/dist/components/composites/DragDropList/DragDropList.stories.d.ts +7 -0
  11. package/dist/components/composites/DragDropList/DragDropList.stories.js +32 -0
  12. package/dist/components/composites/DragDropList/index.d.ts +25 -0
  13. package/dist/components/composites/DragDropList/index.js +48 -0
  14. package/dist/components/composites/DropdownLinks/DropdownLinks.stories.d.ts +8 -0
  15. package/dist/components/composites/DropdownLinks/DropdownLinks.stories.js +25 -0
  16. package/dist/components/composites/DropdownLinks/DropdownLinks.test.d.ts +1 -0
  17. package/dist/components/composites/DropdownLinks/DropdownLinks.test.js +27 -0
  18. package/dist/components/composites/DropdownLinks/index.d.ts +15 -0
  19. package/dist/components/composites/DropdownLinks/index.js +28 -0
  20. package/dist/components/composites/EmptyState/EmptyState.stories.d.ts +10 -0
  21. package/dist/components/composites/EmptyState/EmptyState.stories.js +31 -0
  22. package/dist/components/composites/EmptyState/EmptyState.test.d.ts +1 -0
  23. package/dist/components/composites/EmptyState/EmptyState.test.js +20 -0
  24. package/dist/components/composites/EmptyState/index.d.ts +15 -0
  25. package/dist/components/composites/EmptyState/index.js +32 -0
  26. package/dist/components/composites/Modal/Modal.stories.d.ts +6 -0
  27. package/dist/components/composites/Modal/Modal.stories.js +40 -0
  28. package/dist/components/composites/Modal/index.d.ts +21 -0
  29. package/dist/components/composites/Modal/index.js +64 -0
  30. package/dist/components/composites/NavMenu/NavMenu.stories.d.ts +6 -0
  31. package/dist/components/composites/NavMenu/NavMenu.stories.js +12 -0
  32. package/dist/components/composites/NavMenu/NavMenu.test.d.ts +1 -0
  33. package/dist/components/composites/NavMenu/NavMenu.test.js +96 -0
  34. package/dist/components/composites/NavMenu/demo.d.ts +1 -0
  35. package/dist/components/composites/NavMenu/demo.js +172 -0
  36. package/dist/components/composites/NavMenu/index.d.ts +5 -0
  37. package/dist/components/composites/NavMenu/index.js +52 -0
  38. package/dist/components/composites/Seo/SeoDataDisplay/index.d.ts +2 -0
  39. package/dist/components/composites/Seo/SeoDataDisplay/index.js +9 -0
  40. package/dist/components/composites/Seo/index.d.ts +11 -0
  41. package/dist/components/composites/Seo/index.js +16 -0
  42. package/dist/components/composites/Seo/seo.stories.d.ts +6 -0
  43. package/dist/components/composites/Seo/seo.stories.js +12 -0
  44. package/dist/components/composites/Seo/seo.test.d.ts +1 -0
  45. package/dist/components/composites/Seo/seo.test.js +56 -0
  46. package/dist/components/composites/Seo/siteMetadata.d.ts +9 -0
  47. package/dist/components/composites/Seo/siteMetadata.js +16 -0
  48. package/dist/components/composites/SnackBar/SnackBar.stories.d.ts +8 -0
  49. package/dist/components/composites/SnackBar/SnackBar.stories.js +20 -0
  50. package/dist/components/composites/SnackBar/SnackBar.test.d.ts +1 -0
  51. package/dist/components/composites/SnackBar/SnackBar.test.js +75 -0
  52. package/dist/components/composites/SnackBar/examples.d.ts +3 -0
  53. package/dist/components/composites/SnackBar/examples.js +35 -0
  54. package/dist/components/composites/SnackBar/index.d.ts +1 -0
  55. package/dist/components/composites/SnackBar/index.js +45 -0
  56. package/dist/components/composites/StructuredData/StructuredData.stories.d.ts +6 -0
  57. package/dist/components/composites/StructuredData/StructuredData.stories.js +12 -0
  58. package/dist/components/composites/StructuredData/StructuredData.test.d.ts +1 -0
  59. package/dist/components/composites/StructuredData/StructuredData.test.js +48 -0
  60. package/dist/components/composites/StructuredData/StructuredDataDisplay/index.d.ts +2 -0
  61. package/dist/components/composites/StructuredData/StructuredDataDisplay/index.js +37 -0
  62. package/dist/components/composites/StructuredData/index.d.ts +38 -0
  63. package/dist/components/composites/StructuredData/index.js +58 -0
  64. package/dist/components/composites/StructuredData/sdEvent/index.d.ts +13 -0
  65. package/dist/components/composites/StructuredData/sdEvent/index.js +16 -0
  66. package/dist/components/composites/StructuredData/sdEvent/makeEventSchema.d.ts +15 -0
  67. package/dist/components/composites/StructuredData/sdEvent/makeEventSchema.js +16 -0
  68. package/dist/components/composites/StructuredData/sdNews/index.d.ts +11 -0
  69. package/dist/components/composites/StructuredData/sdNews/index.js +14 -0
  70. package/dist/components/composites/StructuredData/sdNews/makeNewsSchema.d.ts +12 -0
  71. package/dist/components/composites/StructuredData/sdNews/makeNewsSchema.js +11 -0
  72. package/dist/components/composites/StructuredData/sdWebsite/index.d.ts +8 -0
  73. package/dist/components/composites/StructuredData/sdWebsite/index.js +11 -0
  74. package/dist/components/composites/StructuredData/sdWebsite/makeWebPageSchema.d.ts +9 -0
  75. package/dist/components/composites/StructuredData/sdWebsite/makeWebPageSchema.js +9 -0
  76. package/dist/components/composites/StructuredData/siteMetadata.d.ts +9 -0
  77. package/dist/components/composites/StructuredData/siteMetadata.js +12 -0
  78. package/dist/components/elements/Alerts/Alert.stories.d.ts +9 -0
  79. package/dist/components/elements/Alerts/Alert.stories.js +41 -0
  80. package/dist/components/elements/Alerts/Alerts.stories.d.ts +6 -0
  81. package/dist/components/elements/Alerts/Alerts.stories.js +12 -0
  82. package/dist/components/elements/Alerts/Alerts.test.d.ts +1 -0
  83. package/dist/components/elements/Alerts/Alerts.test.js +61 -0
  84. package/dist/components/elements/Alerts/index.d.ts +14 -0
  85. package/dist/components/elements/Alerts/index.js +64 -0
  86. package/dist/components/elements/ArrowLink/ArrowLink.stories.d.ts +6 -0
  87. package/dist/components/elements/ArrowLink/ArrowLink.stories.js +12 -0
  88. package/dist/components/elements/ArrowLink/ArrowLink.test.d.ts +1 -0
  89. package/dist/components/elements/ArrowLink/ArrowLink.test.js +34 -0
  90. package/dist/components/elements/ArrowLink/index.d.ts +7 -0
  91. package/dist/components/elements/ArrowLink/index.js +39 -0
  92. package/dist/components/elements/BrandingBar/BrandingBar.stories.d.ts +6 -0
  93. package/dist/components/elements/BrandingBar/BrandingBar.stories.js +11 -0
  94. package/dist/components/elements/BrandingBar/index.d.ts +2 -0
  95. package/dist/components/elements/BrandingBar/index.js +52 -0
  96. package/dist/components/elements/Button/Button.stories.d.ts +15 -0
  97. package/dist/components/elements/Button/Button.stories.js +88 -0
  98. package/dist/components/elements/Button/Button.test.d.ts +1 -0
  99. package/dist/components/elements/Button/Button.test.js +39 -0
  100. package/dist/components/elements/Button/index.d.ts +49 -0
  101. package/dist/components/elements/Button/index.js +138 -0
  102. package/dist/components/elements/Dropdown/Dropdown.stories.d.ts +7 -0
  103. package/dist/components/elements/Dropdown/Dropdown.stories.js +20 -0
  104. package/dist/components/elements/Dropdown/index.d.ts +24 -0
  105. package/dist/components/elements/Dropdown/index.js +87 -0
  106. package/dist/components/elements/Fields/AutoComplete/AutoComplete.stories.d.ts +6 -0
  107. package/dist/components/elements/Fields/AutoComplete/AutoComplete.stories.js +60 -0
  108. package/dist/components/elements/Fields/AutoComplete/index.d.ts +11 -0
  109. package/dist/components/elements/Fields/AutoComplete/index.js +26 -0
  110. package/dist/components/elements/Fields/Checkbox/Checkbox.stories.d.ts +6 -0
  111. package/dist/components/elements/Fields/Checkbox/Checkbox.stories.js +17 -0
  112. package/dist/components/elements/Fields/Checkbox/index.d.ts +8 -0
  113. package/dist/components/elements/Fields/Checkbox/index.js +22 -0
  114. package/dist/components/elements/Fields/CheckboxGroup/CheckboxGroup.stories.d.ts +7 -0
  115. package/dist/components/elements/Fields/CheckboxGroup/CheckboxGroup.stories.js +26 -0
  116. package/dist/components/elements/Fields/CheckboxGroup/index.d.ts +16 -0
  117. package/dist/components/elements/Fields/CheckboxGroup/index.js +49 -0
  118. package/dist/components/elements/Fields/DatePicker/DatePicker.stories.d.ts +8 -0
  119. package/dist/components/elements/Fields/DatePicker/DatePicker.stories.js +31 -0
  120. package/dist/components/elements/Fields/DatePicker/index.d.ts +20 -0
  121. package/dist/components/elements/Fields/DatePicker/index.js +48 -0
  122. package/dist/components/elements/Fields/MonthPicker/MonthPicker.stories.d.ts +7 -0
  123. package/dist/components/elements/Fields/MonthPicker/MonthPicker.stories.js +20 -0
  124. package/dist/components/elements/Fields/MonthPicker/index.d.ts +13 -0
  125. package/dist/components/elements/Fields/MonthPicker/index.js +24 -0
  126. package/dist/components/elements/Fields/Radio/Radio.stories.d.ts +6 -0
  127. package/dist/components/elements/Fields/Radio/Radio.stories.js +17 -0
  128. package/dist/components/elements/Fields/Radio/index.d.ts +8 -0
  129. package/dist/components/elements/Fields/Radio/index.js +22 -0
  130. package/dist/components/elements/Fields/RadioGroup/RadioGroup.stories.d.ts +6 -0
  131. package/dist/components/elements/Fields/RadioGroup/RadioGroup.stories.js +23 -0
  132. package/dist/components/elements/Fields/RadioGroup/index.d.ts +14 -0
  133. package/dist/components/elements/Fields/RadioGroup/index.js +28 -0
  134. package/dist/components/elements/Fields/Select/Select.stories.d.ts +8 -0
  135. package/dist/components/elements/Fields/Select/Select.stories.js +39 -0
  136. package/dist/components/elements/Fields/Select/index.d.ts +18 -0
  137. package/dist/components/elements/Fields/Select/index.js +178 -0
  138. package/dist/components/elements/Fields/TextInput/TextInput.stories.d.ts +9 -0
  139. package/dist/components/elements/Fields/TextInput/TextInput.stories.js +35 -0
  140. package/dist/components/elements/Fields/TextInput/index.d.ts +45 -0
  141. package/dist/components/elements/Fields/TextInput/index.js +119 -0
  142. package/dist/components/elements/Fields/option.d.ts +16 -0
  143. package/dist/components/elements/Fields/option.js +3 -0
  144. package/dist/components/elements/Group/index.d.ts +22 -0
  145. package/dist/components/elements/Group/index.js +69 -0
  146. package/dist/components/elements/Icon/Icon.stories.d.ts +7 -0
  147. package/dist/components/elements/Icon/Icon.stories.js +29 -0
  148. package/dist/components/elements/Icon/Icon.test.d.ts +1 -0
  149. package/dist/components/elements/Icon/Icon.test.js +26 -0
  150. package/dist/components/elements/Icon/index.d.ts +10 -0
  151. package/dist/components/elements/Icon/index.js +34 -0
  152. package/dist/components/elements/Link/Link.stories.d.ts +6 -0
  153. package/dist/components/elements/Link/Link.stories.js +21 -0
  154. package/dist/components/elements/Link/Link.test.d.ts +1 -0
  155. package/dist/components/elements/Link/Link.test.js +58 -0
  156. package/dist/components/elements/Link/index.d.ts +14 -0
  157. package/dist/components/elements/Link/index.js +41 -0
  158. package/dist/components/elements/List/List.stories.d.ts +10 -0
  159. package/dist/components/elements/List/List.stories.js +37 -0
  160. package/dist/components/elements/List/List.test.d.ts +1 -0
  161. package/dist/components/elements/List/List.test.js +24 -0
  162. package/dist/components/elements/List/index.d.ts +27 -0
  163. package/dist/components/elements/List/index.js +103 -0
  164. package/dist/components/elements/ListBox/Listbox.stories.d.ts +6 -0
  165. package/dist/components/elements/ListBox/Listbox.stories.js +17 -0
  166. package/dist/components/elements/ListBox/index.d.ts +33 -0
  167. package/dist/components/elements/ListBox/index.js +51 -0
  168. package/dist/components/elements/Markdown/Markdown.stories.d.ts +10 -0
  169. package/dist/components/elements/Markdown/Markdown.stories.js +97 -0
  170. package/dist/components/elements/Markdown/Markdown.test.d.ts +1 -0
  171. package/dist/components/elements/Markdown/Markdown.test.js +91 -0
  172. package/dist/components/elements/Markdown/index.d.ts +21 -0
  173. package/dist/components/elements/Markdown/index.js +75 -0
  174. package/dist/components/elements/Pill/Pill.stories.d.ts +8 -0
  175. package/dist/components/elements/Pill/Pill.stories.js +40 -0
  176. package/dist/components/elements/Pill/Pill.test.d.ts +1 -0
  177. package/dist/components/elements/Pill/Pill.test.js +18 -0
  178. package/dist/components/elements/Pill/index.d.ts +21 -0
  179. package/dist/components/elements/Pill/index.js +117 -0
  180. package/dist/components/elements/Spinner/Spinner.stories.d.ts +7 -0
  181. package/dist/components/elements/Spinner/Spinner.stories.js +26 -0
  182. package/dist/components/elements/Spinner/Spinner.test.d.ts +1 -0
  183. package/dist/components/elements/Spinner/Spinner.test.js +9 -0
  184. package/dist/components/elements/Spinner/index.d.ts +14 -0
  185. package/dist/components/elements/Spinner/index.js +49 -0
  186. package/dist/components/elements/TabList/TabList.stories.d.ts +6 -0
  187. package/dist/components/elements/TabList/TabList.stories.js +12 -0
  188. package/dist/components/elements/TabList/TabList.test.d.ts +1 -0
  189. package/dist/components/elements/TabList/TabList.test.js +19 -0
  190. package/dist/components/elements/TabList/example.d.ts +7 -0
  191. package/dist/components/elements/TabList/example.js +36 -0
  192. package/dist/components/elements/TabList/index.d.ts +10 -0
  193. package/dist/components/elements/TabList/index.js +30 -0
  194. package/dist/components/elements/Table/Table.stories.d.ts +10 -0
  195. package/dist/components/elements/Table/Table.stories.js +96 -0
  196. package/dist/components/elements/Table/Table.test.d.ts +1 -0
  197. package/dist/components/elements/Table/Table.test.js +36 -0
  198. package/dist/components/elements/Table/index.d.ts +30 -0
  199. package/dist/components/elements/Table/index.js +100 -0
  200. package/dist/components/elements/layout/Box.d.ts +9 -0
  201. package/dist/components/elements/layout/Box.js +3 -0
  202. package/dist/components/elements/layout/Box.stories.d.ts +6 -0
  203. package/dist/components/elements/layout/Box.stories.js +12 -0
  204. package/dist/components/elements/layout/Column.d.ts +8 -0
  205. package/dist/components/elements/layout/Column.js +19 -0
  206. package/dist/components/elements/layout/Flex.stories.d.ts +10 -0
  207. package/dist/components/elements/layout/Flex.stories.js +26 -0
  208. package/dist/components/elements/layout/Flex.test.d.ts +1 -0
  209. package/dist/components/elements/layout/Flex.test.js +34 -0
  210. package/dist/components/elements/layout/Row.d.ts +20 -0
  211. package/dist/components/elements/layout/Row.js +52 -0
  212. package/dist/components/elements/text/Heading/Heading.stories.d.ts +8 -0
  213. package/dist/components/elements/text/Heading/Heading.stories.js +35 -0
  214. package/dist/components/elements/text/Heading/Heading.test.d.ts +1 -0
  215. package/dist/components/elements/text/Heading/Heading.test.js +51 -0
  216. package/dist/components/elements/text/Heading/index.d.ts +20 -0
  217. package/dist/components/elements/text/Heading/index.js +62 -0
  218. package/dist/components/elements/text/Inline/Inline.stories.d.ts +6 -0
  219. package/dist/components/elements/text/Inline/Inline.stories.js +12 -0
  220. package/dist/components/elements/text/Inline/index.d.ts +6 -0
  221. package/dist/components/elements/text/Inline/index.js +21 -0
  222. package/dist/components/elements/text/Label/Label.stories.d.ts +6 -0
  223. package/dist/components/elements/text/Label/Label.stories.js +20 -0
  224. package/dist/components/elements/text/Label/Label.test.d.ts +1 -0
  225. package/dist/components/elements/text/Label/Label.test.js +56 -0
  226. package/dist/components/elements/text/Label/index.d.ts +20 -0
  227. package/dist/components/elements/text/Label/index.js +38 -0
  228. package/dist/components/elements/text/Paragraph/Paragraph.stories.d.ts +6 -0
  229. package/dist/components/elements/text/Paragraph/Paragraph.stories.js +25 -0
  230. package/dist/components/elements/text/Paragraph/Paragraph.test.d.ts +1 -0
  231. package/dist/components/elements/text/Paragraph/Paragraph.test.js +9 -0
  232. package/dist/components/elements/text/Paragraph/index.d.ts +14 -0
  233. package/dist/components/elements/text/Paragraph/index.js +29 -0
  234. package/dist/components/elements/text/ReadMore/ReadMore.stories.d.ts +8 -0
  235. package/dist/components/elements/text/ReadMore/ReadMore.stories.js +26 -0
  236. package/dist/components/elements/text/ReadMore/index.d.ts +12 -0
  237. package/dist/components/elements/text/ReadMore/index.js +71 -0
  238. package/dist/components/providers/alerts.d.ts +41 -0
  239. package/dist/components/providers/alerts.js +133 -0
  240. package/dist/components/providers/componentConfig.d.ts +25 -0
  241. package/dist/components/providers/componentConfig.js +37 -0
  242. package/dist/components/providers/dialogs.d.ts +9 -0
  243. package/dist/components/providers/dialogs.js +32 -0
  244. package/dist/components/providers/env.d.ts +14 -0
  245. package/dist/components/providers/env.js +25 -0
  246. package/dist/components/providers/media.d.ts +8 -0
  247. package/dist/components/providers/media.js +43 -0
  248. package/dist/components/providers/menu.d.ts +46 -0
  249. package/dist/components/providers/menu.js +304 -0
  250. package/dist/components/providers/snackBar.d.ts +23 -0
  251. package/dist/components/providers/snackBar.js +53 -0
  252. package/dist/components/providers/ui.d.ts +18 -0
  253. package/dist/components/providers/ui.js +16 -0
  254. package/dist/components/providers/uniqueIds.d.ts +3 -0
  255. package/dist/components/providers/uniqueIds.js +23 -0
  256. package/dist/components/providers/uniqueIds.test.d.ts +1 -0
  257. package/dist/components/providers/uniqueIds.test.js +26 -0
  258. package/dist/index.d.ts +53 -0
  259. package/dist/index.js +51 -0
  260. package/dist/theme/Color.stories.d.ts +5 -0
  261. package/dist/theme/Color.stories.js +63 -0
  262. package/dist/theme/GlobalStyles.d.ts +1 -0
  263. package/dist/theme/GlobalStyles.js +167 -0
  264. package/dist/theme/Typography.stories.d.ts +5 -0
  265. package/dist/theme/Typography.stories.js +44 -0
  266. package/dist/theme/colors.d.ts +51 -0
  267. package/dist/theme/colors.js +97 -0
  268. package/dist/theme/custom.d.ts +11 -0
  269. package/dist/theme/custom.js +13 -0
  270. package/dist/theme/index.d.ts +185 -0
  271. package/dist/theme/index.js +25 -0
  272. package/dist/theme/spacing.d.ts +0 -0
  273. package/dist/theme/spacing.js +1 -0
  274. package/dist/theme/typography.d.ts +100 -0
  275. package/dist/theme/typography.js +206 -0
  276. package/dist/utils/hooks/useCheckMidClick.d.ts +8 -0
  277. package/dist/utils/hooks/useCheckMidClick.js +17 -0
  278. package/dist/utils/hooks/useCheckMidKeyPress.d.ts +9 -0
  279. package/dist/utils/hooks/useCheckMidKeyPress.js +23 -0
  280. package/dist/utils/hooks/useHover.d.ts +7 -0
  281. package/dist/utils/hooks/useHover.js +12 -0
  282. package/dist/utils/hooks/useStorage.d.ts +14 -0
  283. package/dist/utils/hooks/useStorage.js +37 -0
  284. package/dist/utils/misc.d.ts +14 -0
  285. package/dist/utils/misc.js +19 -0
  286. package/dist/utils/sortByKey.d.ts +12 -0
  287. package/dist/utils/sortByKey.js +20 -0
  288. package/dist/utils/test.d.ts +2 -0
  289. package/dist/utils/test.js +9 -0
  290. package/package.json +98 -0
@@ -0,0 +1,119 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import { jsx as _jsx, jsxs as _jsxs } from "theme-ui/jsx-runtime";
13
+ import React from 'react';
14
+ import { TYPOGRAPHY_TYPE, getIconSize, getTypographyStyles, } from '../../../../theme/typography';
15
+ import { useTheme } from '../../../../theme';
16
+ import { Icon } from '../../Icon';
17
+ import { COLOR } from '../../../../theme/colors';
18
+ import { Label } from '../../text/Label';
19
+ import { useUniqueId } from '../../../providers/uniqueIds';
20
+ export var INPUT_SIZE;
21
+ (function (INPUT_SIZE) {
22
+ INPUT_SIZE["SM"] = "sm";
23
+ INPUT_SIZE["MD"] = "md";
24
+ INPUT_SIZE["LG"] = "lg";
25
+ })(INPUT_SIZE || (INPUT_SIZE = {}));
26
+ const typographyMap = {
27
+ [INPUT_SIZE.SM]: TYPOGRAPHY_TYPE.PARAGRAPH_SMALL,
28
+ [INPUT_SIZE.MD]: TYPOGRAPHY_TYPE.PARAGRAPH_MEDIUM,
29
+ [INPUT_SIZE.LG]: TYPOGRAPHY_TYPE.PARAGRAPH_LARGE,
30
+ };
31
+ export const labelTypographyMap = {
32
+ [INPUT_SIZE.SM]: TYPOGRAPHY_TYPE.CONTROL_SMALL,
33
+ [INPUT_SIZE.MD]: TYPOGRAPHY_TYPE.CONTROL_SMALL,
34
+ [INPUT_SIZE.LG]: TYPOGRAPHY_TYPE.CONTROL_MEDIUM,
35
+ };
36
+ export const labelOffsetMap = {
37
+ [INPUT_SIZE.SM]: '-0.375rem',
38
+ [INPUT_SIZE.MD]: '-0.45rem',
39
+ [INPUT_SIZE.LG]: '-0.5rem',
40
+ };
41
+ const defaultPaddingX = {
42
+ [INPUT_SIZE.SM]: 2,
43
+ [INPUT_SIZE.MD]: 3,
44
+ [INPUT_SIZE.LG]: 3,
45
+ };
46
+ const defaultHeight = {
47
+ [INPUT_SIZE.SM]: '2.25rem',
48
+ [INPUT_SIZE.MD]: '2.5rem',
49
+ [INPUT_SIZE.LG]: '3rem',
50
+ };
51
+ export const TextInput = React.forwardRef((_a, ref) => {
52
+ var { value, label, onChange, onChangeRaw, onClick, inline, inverted, size: sizeParam, leftIcon, sx, disabled } = _a, rest = __rest(_a, ["value", "label", "onChange", "onChangeRaw", "onClick", "inline", "inverted", "size", "leftIcon", "sx", "disabled"]);
53
+ const id = useUniqueId('text-input');
54
+ const theme = useTheme();
55
+ const size = sizeParam || INPUT_SIZE.MD;
56
+ const display = inline === false ? 'flex' : 'inline-flex';
57
+ const paddingX = defaultPaddingX[size];
58
+ const height = defaultHeight[size];
59
+ const typography = typographyMap[size];
60
+ const typographyStyles = getTypographyStyles(typography);
61
+ const focusStyles = disabled
62
+ ? {}
63
+ : {
64
+ boxShadow: inverted
65
+ ? theme.boxShadow.INVERTED
66
+ : theme.boxShadow.NORMAL,
67
+ };
68
+ return (_jsxs("div", Object.assign({ ref: ref, onClick: onClick, id: id, sx: Object.assign(Object.assign({ height,
69
+ display, px: paddingX, backgroundColor: inverted ? COLOR.DARK_GRAY : COLOR.WHITE, borderRadius: '4px', flexDirection: 'row', position: 'relative', alignItems: 'center', ':hover': focusStyles, ':focus': focusStyles }, typographyStyles), sx) }, { children: [_jsx("fieldset", Object.assign({ sx: {
70
+ textAlign: 'left',
71
+ position: 'absolute',
72
+ inset: '-4px 0px 0px 0px',
73
+ margin: '0px',
74
+ padding: '0px 0.5rem',
75
+ pointerEvents: 'none',
76
+ borderRadius: 'inherit',
77
+ borderStyle: 'solid',
78
+ borderWidth: '1px',
79
+ overflow: 'hidden',
80
+ minWidth: '0%',
81
+ borderColor: inverted ? COLOR.GRAY : COLOR.LIGHT_GRAY,
82
+ zIndex: theme.zIndex.ELEVATED,
83
+ }, "aria-ignore": true }, { children: _jsx("legend", Object.assign({ style: {
84
+ width: 'auto',
85
+ float: 'unset',
86
+ overflow: 'hidden',
87
+ position: 'relative',
88
+ display: 'block',
89
+ padding: '0',
90
+ height: '8px',
91
+ fontSize: '0.75em',
92
+ visibility: 'hidden',
93
+ whiteSpace: 'nowrap',
94
+ } }, { children: label && (_jsx(Label, Object.assign({ standalone: true, "aria-hidden": "true", sx: {
95
+ px: 1,
96
+ position: 'relative',
97
+ display: 'inline-flex',
98
+ opacity: '0',
99
+ visibility: 'hidden',
100
+ }, typography: labelTypographyMap[size] }, { children: label }))) })) })), leftIcon && (_jsx(Icon, { icon: leftIcon, color: inverted ? COLOR.EXTRA_LIGHT_GRAY : COLOR.TEXT, sx: {
101
+ mr: 2,
102
+ fontSize: getIconSize(typographyStyles.fontSize),
103
+ } })), _jsx("input", Object.assign({ value: value, onChange: (event) => {
104
+ onChange && onChange(event.target.value);
105
+ onChangeRaw && onChangeRaw(event);
106
+ }, sx: Object.assign(Object.assign({ px: 0, py: 0, width: '100%', border: 'none', backgroundColor: inverted ? COLOR.DARK_GRAY : COLOR.WHITE, color: inverted ? COLOR.EXTRA_LIGHT_GRAY : COLOR.TEXT }, typographyStyles), { '::placeholder': {
107
+ color: inverted ? COLOR.LIGHT_GRAY : COLOR.GRAY,
108
+ }, ':focus': {
109
+ outline: 'none',
110
+ } }), disabled: disabled }, rest)), label && (_jsx(Label, Object.assign({ htmlFor: id, typography: labelTypographyMap[size], sx: {
111
+ position: 'absolute',
112
+ color: inverted ? COLOR.EXTRA_LIGHT_GRAY : COLOR.ND_PROVOST_BLUE,
113
+ left: '0.5rem',
114
+ lineHeight: 1,
115
+ zIndex: theme.zIndex.ELEVATED,
116
+ px: 1,
117
+ top: labelOffsetMap[size],
118
+ } }, { children: label })))] })));
119
+ });
@@ -0,0 +1,16 @@
1
+ /// <reference types="react" />
2
+ export type Key = string | number;
3
+ export interface BasicOption<Value extends Key> {
4
+ value: Value;
5
+ label?: string;
6
+ onClick?: () => void;
7
+ }
8
+ export type RenderOption<Value extends Key, Option extends BasicOption<Value>> = (params: {
9
+ option: Option;
10
+ selected?: boolean;
11
+ focused?: boolean;
12
+ }) => React.ReactNode;
13
+ export type RenderOptionLabel<Option extends BasicOption<Key>> = (option: Option) => string;
14
+ export declare const getOptionId: (value: Key) => string;
15
+ export declare const defaultRenderOption: RenderOption<Key, any>;
16
+ export declare const defaultRenderOptionLabel: RenderOptionLabel<any>;
@@ -0,0 +1,3 @@
1
+ export const getOptionId = (value) => `option-id-${value}`;
2
+ export const defaultRenderOption = ({ option }) => option.label;
3
+ export const defaultRenderOptionLabel = (option) => option.label;
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ import { StyledElementProps } from '../../../theme';
3
+ type GroupContextType = {
4
+ level: number;
5
+ labelId: string;
6
+ trackHeadingRendered: () => void;
7
+ labelTargetId: string;
8
+ type?: GROUP_TYPE;
9
+ };
10
+ export declare enum GROUP_TYPE {
11
+ REGION = "region",
12
+ GROUP = "group",
13
+ RAW = "raw"
14
+ }
15
+ export declare const useGroup: () => GroupContextType;
16
+ type GroupProps = Omit<StyledElementProps<HTMLDivElement, {
17
+ type?: GROUP_TYPE;
18
+ }>, 'children'> & {
19
+ children: React.ReactNode | ((context: GroupContextType) => React.ReactNode);
20
+ };
21
+ export declare const Group: React.FC<GroupProps>;
22
+ export {};
@@ -0,0 +1,69 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import { jsx as _jsx } from "theme-ui/jsx-runtime";
13
+ import React, { useEffect, useMemo, useRef } from 'react';
14
+ import { useEnvironment } from '../../providers/env';
15
+ export var GROUP_TYPE;
16
+ (function (GROUP_TYPE) {
17
+ GROUP_TYPE["REGION"] = "region";
18
+ GROUP_TYPE["GROUP"] = "group";
19
+ GROUP_TYPE["RAW"] = "raw";
20
+ })(GROUP_TYPE || (GROUP_TYPE = {}));
21
+ const GROUP_TYPE_ROLE_MAP = {
22
+ [GROUP_TYPE.REGION]: 'region',
23
+ [GROUP_TYPE.GROUP]: 'group',
24
+ [GROUP_TYPE.RAW]: 'group',
25
+ };
26
+ const GroupContext = React.createContext({
27
+ level: 0,
28
+ labelId: '',
29
+ labelTargetId: '',
30
+ trackHeadingRendered: () => { },
31
+ });
32
+ export const useGroup = () => React.useContext(GroupContext);
33
+ export const Group = (_a) => {
34
+ var { type: typeProp, children, sx } = _a, rest = __rest(_a, ["type", "children", "sx"]);
35
+ const { level: parentLevel } = useGroup();
36
+ const { flagInDevelopment } = useEnvironment();
37
+ const type = typeProp || GROUP_TYPE.REGION;
38
+ const randomSlug = useMemo(() => Math.random().toString().slice(2), []);
39
+ const labelId = `group-label-${randomSlug}`;
40
+ const labelTargetId = `labeled-${randomSlug}`;
41
+ const headingRenderTracker = useRef({
42
+ hasHeadingRendered: false,
43
+ });
44
+ const trackHeadingRendered = () => {
45
+ headingRenderTracker.current.hasHeadingRendered = true;
46
+ };
47
+ useEffect(() => {
48
+ if (type === GROUP_TYPE.REGION) {
49
+ setTimeout(() => {
50
+ if (!headingRenderTracker.current.hasHeadingRendered) {
51
+ flagInDevelopment('Every <Group> component of type "region" must render a <Heading> component within it');
52
+ }
53
+ }, 500);
54
+ }
55
+ }, [flagInDevelopment, type]);
56
+ const level = Math.min(parentLevel + (type === GROUP_TYPE.REGION ? 1 : 0), 5);
57
+ const contextValue = {
58
+ level,
59
+ type,
60
+ trackHeadingRendered,
61
+ labelId,
62
+ labelTargetId,
63
+ };
64
+ const Main = (_jsx(GroupContext.Provider, Object.assign({ value: contextValue }, { children: typeof children === 'function' ? children(contextValue) : children })));
65
+ if (type === GROUP_TYPE.RAW) {
66
+ return Main;
67
+ }
68
+ return (_jsx("div", Object.assign({ role: GROUP_TYPE_ROLE_MAP[type], "aria-labelledby": labelId, sx: Object.assign({ my: 2 }, sx) }, rest, { children: Main })));
69
+ };
@@ -0,0 +1,7 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { Icon } from './';
3
+ declare const meta: Meta<typeof Icon>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof Icon>;
6
+ export declare const Default: Story;
7
+ export declare const CustomColor: Story;
@@ -0,0 +1,29 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { GROUP_TYPE, Group } from '../Group';
3
+ import { HEADING_SIZE, Heading } from '../text/Heading';
4
+ import { Column } from '../layout/Column';
5
+ import { Icon } from './';
6
+ import AccessAlarmIcon from '@mui/icons-material/AccessAlarm';
7
+ import { COLOR } from '../../../theme/colors';
8
+ import { FONT_SIZE } from '../../../theme/typography';
9
+ const meta = {
10
+ title: 'Elements/Icon',
11
+ component: Icon,
12
+ };
13
+ export default meta;
14
+ const sizes = [
15
+ { size: FONT_SIZE.XXL, label: 'XX Large' },
16
+ { size: FONT_SIZE.XL, label: 'X Large' },
17
+ { size: FONT_SIZE.LG, label: 'Large' },
18
+ { size: FONT_SIZE.ML, label: 'Medium Large' },
19
+ { size: FONT_SIZE.MD, label: 'Medium' },
20
+ { size: FONT_SIZE.MS, label: 'Medium Small' },
21
+ { size: FONT_SIZE.SM, label: 'Small' },
22
+ { size: FONT_SIZE.XS, label: 'X Small' },
23
+ ];
24
+ export const Default = {
25
+ render: () => (_jsx(Column, { children: sizes.map((size) => (_jsxs(Group, Object.assign({ type: GROUP_TYPE.REGION }, { children: [_jsx(Heading, Object.assign({ size: HEADING_SIZE.MD }, { children: size.label })), _jsx(Icon, { icon: AccessAlarmIcon, size: size.size })] })))) })),
26
+ };
27
+ export const CustomColor = {
28
+ render: () => (_jsx(Icon, { icon: AccessAlarmIcon, color: COLOR.SECONDARY, size: FONT_SIZE.LG })),
29
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,26 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { render } from '../../../utils/test';
3
+ import { Icon } from '.';
4
+ import { SPACING } from '../../../theme';
5
+ import { FONT_SIZE, fontSizeMap } from '../../../theme/typography';
6
+ const MockIcon = () => {
7
+ return _jsx("div", { children: "Mock Icon" });
8
+ };
9
+ describe('Icon', () => {
10
+ it('renders component passed to it', () => {
11
+ const { getByText } = render(_jsx(Icon, { icon: MockIcon }));
12
+ expect(getByText('Mock Icon')).toBeInTheDocument();
13
+ });
14
+ it('passes font size to outer wrapper', () => {
15
+ const { container } = render(_jsx(Icon, { icon: MockIcon, size: FONT_SIZE.MD }));
16
+ expect(container.childNodes[0]).toHaveStyle({
17
+ fontSize: fontSizeMap[FONT_SIZE.MD],
18
+ });
19
+ });
20
+ it('passes custom styles to outer wrapper', () => {
21
+ const { container } = render(_jsx(Icon, { icon: MockIcon, sx: { p: 1 } }));
22
+ expect(container.childNodes[0]).toHaveStyle({
23
+ padding: SPACING[1],
24
+ });
25
+ });
26
+ });
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { COLOR } from '../../../theme/colors';
3
+ import { StyledElementProps } from '../../../theme';
4
+ import { FONT_SIZE } from '../../../theme/typography';
5
+ export type IconProps = StyledElementProps<HTMLDivElement, {
6
+ icon: React.FC<any>;
7
+ size?: FONT_SIZE;
8
+ color?: COLOR;
9
+ }>;
10
+ export declare const Icon: React.FC<IconProps>;
@@ -0,0 +1,34 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import { jsx as _jsx } from "theme-ui/jsx-runtime";
13
+ import React from 'react';
14
+ import { COLOR, colors } from '../../../theme/colors';
15
+ import { useEnvironment } from '../../providers/env';
16
+ export const Icon = (_a) => {
17
+ var { icon, size, color, sx, onClick } = _a, rest = __rest(_a, ["icon", "size", "color", "sx", "onClick"]);
18
+ const InnerComponent = icon;
19
+ const { flagInDevelopment } = useEnvironment();
20
+ if (onClick && !rest['aria-label']) {
21
+ flagInDevelopment('Icon component with onClick should have an aria-label and tabIndex={0}');
22
+ }
23
+ return (_jsx("div", Object.assign({ tabIndex: onClick ? 0 : undefined, role: onClick ? 'button' : 'none', sx: Object.assign(Object.assign({}, sx), { fontSize: size, display: 'flex', alignItems: 'center', justifyContent: 'center', ':hover': onClick
24
+ ? {
25
+ cursor: 'pointer',
26
+ transform: 'scale(1.05)',
27
+ }
28
+ : {} }) }, rest, { children: React.createElement(InnerComponent, {
29
+ fontSize: 'inherit',
30
+ style: {
31
+ color: colors[color || COLOR.PRIMARY],
32
+ },
33
+ }) })));
34
+ };
@@ -0,0 +1,6 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { Link } from '.';
3
+ declare const meta: Meta<typeof Link>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof Link>;
6
+ export declare const Default: Story;
@@ -0,0 +1,21 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Link, LINK_SIZE } from '.';
3
+ import { Group } from '../Group';
4
+ import { HEADING_SIZE, Heading } from '../text/Heading';
5
+ import { Column } from '../layout/Column';
6
+ const meta = {
7
+ title: 'Elements/Link',
8
+ component: Link,
9
+ };
10
+ export default meta;
11
+ const sizes = [
12
+ { size: LINK_SIZE.LG, label: 'Large' },
13
+ { size: LINK_SIZE.MD, label: 'Medium' },
14
+ { size: LINK_SIZE.SM, label: 'Small' },
15
+ ];
16
+ export const Default = {
17
+ render: () => (_jsx(Column, { children: sizes.map((size) => (_jsxs(Group, { children: [_jsx(Heading, Object.assign({ size: HEADING_SIZE.MD }, { children: size.label })), _jsx(Link, Object.assign({ size: size.size, to: "/" }, { children: "Click Me" }))] }))) })),
18
+ args: {
19
+ children: 'Click Me',
20
+ },
21
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,58 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { render } from '../../../utils/test';
3
+ import { Link } from '.';
4
+ import { DefaultLink } from '../../providers/componentConfig';
5
+ const CUSTOM_INTERNAL_TEST_ID = 'internal-link-test-id';
6
+ const CUSTOM_EXTERNAL_TEST_ID = 'external-link-test-id';
7
+ const CustomInternalLink = (props) => {
8
+ return _jsx(DefaultLink, Object.assign({ "data-testid": CUSTOM_INTERNAL_TEST_ID }, props));
9
+ };
10
+ const CustomExternalLink = (props) => {
11
+ return _jsx(DefaultLink, Object.assign({ "data-testid": CUSTOM_EXTERNAL_TEST_ID }, props));
12
+ };
13
+ describe('Link', () => {
14
+ it('renders default external link component without throwing', () => {
15
+ const { getByRole } = render(_jsx(Link, Object.assign({ to: "https://google.com" }, { children: "Foo" })));
16
+ expect(getByRole('link')).toBeInTheDocument();
17
+ });
18
+ it('renders default internal link component without throwing', () => {
19
+ const { getByRole } = render(_jsx(Link, Object.assign({ to: "/test/path" }, { children: "Foo" })));
20
+ expect(getByRole('link')).toBeInTheDocument();
21
+ });
22
+ it('renders custom external component if passed', () => {
23
+ const { getByTestId } = render(_jsx(Link, Object.assign({ to: "https://google.com" }, { children: "Foo" })), {
24
+ components: {
25
+ link: {
26
+ externalLinkComponent: CustomExternalLink,
27
+ internalLinkComponent: CustomInternalLink,
28
+ },
29
+ },
30
+ });
31
+ expect(getByTestId(CUSTOM_EXTERNAL_TEST_ID)).toBeDefined();
32
+ expect(() => getByTestId(CUSTOM_INTERNAL_TEST_ID)).toThrow();
33
+ });
34
+ it('renders custom internal component if passed', () => {
35
+ const { getByTestId } = render(_jsx(Link, Object.assign({ to: "/test/route" }, { children: "Foo" })), {
36
+ components: {
37
+ link: {
38
+ externalLinkComponent: CustomExternalLink,
39
+ internalLinkComponent: CustomInternalLink,
40
+ },
41
+ },
42
+ });
43
+ expect(getByTestId(CUSTOM_INTERNAL_TEST_ID)).toBeDefined();
44
+ expect(() => getByTestId(CUSTOM_EXTERNAL_TEST_ID)).toThrow();
45
+ });
46
+ it('passes styles to custom component', () => {
47
+ const { getByTestId } = render(_jsxs(_Fragment, { children: [_jsx(Link, Object.assign({ to: "https://google.com", sx: { mt: 1 } }, { children: "Foo" })), _jsx(Link, Object.assign({ to: "/test/route", sx: { mt: 1 } }, { children: "Foo" }))] }), {
48
+ components: {
49
+ link: {
50
+ externalLinkComponent: CustomExternalLink,
51
+ internalLinkComponent: CustomInternalLink,
52
+ },
53
+ },
54
+ });
55
+ expect(getByTestId(CUSTOM_EXTERNAL_TEST_ID)).toHaveStyle(`margin-top: 0.25rem`);
56
+ expect(getByTestId(CUSTOM_INTERNAL_TEST_ID)).toHaveStyle(`margin-top: 0.25rem`);
57
+ });
58
+ });
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import { StyledElementProps } from '../../../theme';
3
+ type LinkProps = StyledElementProps<HTMLSpanElement, {
4
+ to: string;
5
+ target?: string;
6
+ size?: LINK_SIZE;
7
+ }>;
8
+ export declare enum LINK_SIZE {
9
+ SM = "sm",
10
+ MD = "md",
11
+ LG = "lg"
12
+ }
13
+ export declare const Link: React.FC<LinkProps>;
14
+ export {};
@@ -0,0 +1,41 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import { jsx as _jsx } from "theme-ui/jsx-runtime";
13
+ import { useComponentConfig } from '../../providers/componentConfig';
14
+ import { COLOR } from '../../../theme/colors';
15
+ import { TYPOGRAPHY_TYPE, getTypographyStyles } from '../../../theme/typography';
16
+ export var LINK_SIZE;
17
+ (function (LINK_SIZE) {
18
+ LINK_SIZE["SM"] = "sm";
19
+ LINK_SIZE["MD"] = "md";
20
+ LINK_SIZE["LG"] = "lg";
21
+ })(LINK_SIZE || (LINK_SIZE = {}));
22
+ const SIZE_TYPOGRAPHY_MAP = {
23
+ [LINK_SIZE.SM]: TYPOGRAPHY_TYPE.CONTROL_SMALL,
24
+ [LINK_SIZE.MD]: TYPOGRAPHY_TYPE.CONTROL_MEDIUM,
25
+ [LINK_SIZE.LG]: TYPOGRAPHY_TYPE.CONTROL_LARGE,
26
+ };
27
+ export const Link = (_a) => {
28
+ var { size, to, sx, target } = _a, rest = __rest(_a, ["size", "to", "sx", "target"]);
29
+ const { link } = useComponentConfig();
30
+ const typography = SIZE_TYPOGRAPHY_MAP[size || LINK_SIZE.MD];
31
+ const InternalLink = link.internalLinkComponent;
32
+ const ExternalLink = link.externalLinkComponent;
33
+ const isExternal = link.externalMatcher.test(to);
34
+ const styles = Object.assign(Object.assign({ color: COLOR.ND_BLUE_LIGHT, textDecoration: 'none' }, getTypographyStyles(typography)), sx);
35
+ if (isExternal) {
36
+ return _jsx(ExternalLink, Object.assign({ to: to }, rest, { sx: styles, target: target }));
37
+ }
38
+ else {
39
+ return _jsx(InternalLink, Object.assign({ to: to }, rest, { sx: styles, target: target }));
40
+ }
41
+ };
@@ -0,0 +1,10 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { List } from './index';
3
+ declare const meta: Meta<typeof List>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof List>;
6
+ export declare const Default: Story;
7
+ export declare const Sizes: Story;
8
+ export declare const Ordered: Story;
9
+ export declare const CustomIcon: Story;
10
+ export declare const CustomIconPerItem: Story;
@@ -0,0 +1,37 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import ChevronRightIcon from '@mui/icons-material/ChevronRight';
3
+ import BookmarkIcon from '@mui/icons-material/Bookmark';
4
+ import BookmarkBorderIcon from '@mui/icons-material/BookmarkBorder';
5
+ import { LIST_SIZE, List, ListItem } from './index';
6
+ import { Row } from '../layout/Row';
7
+ import { Column } from '../layout/Column';
8
+ import { HEADING_SIZE, Heading } from '../text/Heading';
9
+ import { GROUP_TYPE, Group } from '../Group';
10
+ import { COLOR } from '../../..';
11
+ import { FONT_SIZE } from '../../../theme/typography';
12
+ const meta = {
13
+ title: 'Elements/List',
14
+ component: List,
15
+ tags: ['autodocs'],
16
+ };
17
+ export default meta;
18
+ export const Default = {
19
+ render: () => (_jsx(Row, { children: _jsxs(List, { children: [_jsx(ListItem, Object.assign({ index: 0 }, { children: "List Item 1" })), _jsx(ListItem, Object.assign({ index: 1 }, { children: "List Item 2" })), _jsxs(ListItem, Object.assign({ index: 2 }, { children: ["List Item 3", _jsxs(List, { children: [_jsx(ListItem, Object.assign({ index: 0 }, { children: "List Item 3.1" })), _jsx(ListItem, Object.assign({ index: 1 }, { children: "List Item 3.2" }))] })] }))] }) })),
20
+ };
21
+ const sizes = [
22
+ { size: LIST_SIZE.LG, label: 'Large' },
23
+ { size: LIST_SIZE.MD, label: 'Medium' },
24
+ { size: LIST_SIZE.SM, label: 'Small' },
25
+ ];
26
+ export const Sizes = {
27
+ render: () => (_jsx(Column, { children: sizes.map((size, i) => (_jsxs(Group, Object.assign({ type: GROUP_TYPE.REGION, sx: { mt: 3 } }, { children: [_jsx(Heading, Object.assign({ size: HEADING_SIZE.MD }, { children: size.label })), _jsx(Row, Object.assign({ sx: { mt: 2 } }, { children: _jsxs(List, Object.assign({ size: size.size }, { children: [_jsx(ListItem, Object.assign({ index: 0 }, { children: "List Item 1" })), _jsx(ListItem, Object.assign({ index: 1 }, { children: "List Item 2" })), _jsx(ListItem, Object.assign({ index: 2 }, { children: "List Item 3" }))] })) }))] }), i))) })),
28
+ };
29
+ export const Ordered = {
30
+ render: () => (_jsx(Row, { children: _jsxs(List, Object.assign({ icon: ChevronRightIcon, ordered: true }, { children: [_jsx(ListItem, Object.assign({ index: 0 }, { children: "List Item 1" })), _jsx(ListItem, Object.assign({ index: 1 }, { children: "List Item 2" })), _jsx(ListItem, Object.assign({ index: 2 }, { children: "List Item 3" }))] })) })),
31
+ };
32
+ export const CustomIcon = {
33
+ render: () => (_jsx(Row, { children: _jsxs(List, Object.assign({ icon: ChevronRightIcon, iconColor: COLOR.PRIMARY }, { children: [_jsx(ListItem, Object.assign({ index: 0 }, { children: "List Item 1" })), _jsx(ListItem, Object.assign({ index: 1 }, { children: "List Item 2" })), _jsx(ListItem, Object.assign({ index: 2 }, { children: "List Item 3" }))] })) })),
34
+ };
35
+ export const CustomIconPerItem = {
36
+ render: () => (_jsx(Row, { children: _jsxs(List, Object.assign({ iconSize: FONT_SIZE.ML }, { children: [_jsx(ListItem, Object.assign({ index: 0, icon: BookmarkIcon, onIconClick: () => { }, iconLabel: "Unfavorite" }, { children: "Favorite 1" })), _jsx(ListItem, Object.assign({ index: 1, icon: BookmarkIcon, onIconClick: () => { }, iconLabel: "Favorite" }, { children: "Favorited 2" })), _jsx(ListItem, Object.assign({ index: 2, icon: BookmarkBorderIcon, onIconClick: () => { }, iconLabel: "Favorite" }, { children: "Not Favorited" }))] })) })),
37
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,24 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
+ import { render } from '../../../utils/test';
12
+ import { List, ListItem } from '.';
13
+ const MockIcon = () => _jsx("div", { "data-testid": "mock-icon" });
14
+ describe('List', () => {
15
+ it('renders children inside list', () => {
16
+ const { getByRole, getAllByRole } = render(_jsxs(List, { children: [_jsx(ListItem, Object.assign({ index: 0 }, { children: "Item 1" })), _jsx(ListItem, Object.assign({ index: 1 }, { children: "Item 2" }))] }));
17
+ expect(getByRole('list')).toBeDefined();
18
+ expect(getAllByRole('listitem')).toHaveLength(2);
19
+ });
20
+ it('renders custom component if provided', () => __awaiter(void 0, void 0, void 0, function* () {
21
+ const { getAllByTestId } = render(_jsxs(List, Object.assign({ icon: MockIcon }, { children: [_jsx(ListItem, Object.assign({ index: 0 }, { children: "Item 1" })), _jsx(ListItem, Object.assign({ index: 1 }, { children: "Item 2" }))] })));
22
+ expect(getAllByTestId('mock-icon')).toHaveLength(2);
23
+ }));
24
+ });
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+ import { StyledElementProps } from '../../../theme';
3
+ import { COLOR } from '../../..';
4
+ import { FONT_SIZE } from '../../../theme/typography';
5
+ type ListProps = StyledElementProps<HTMLUListElement, {
6
+ ordered?: boolean;
7
+ size?: LIST_SIZE;
8
+ icon?: React.FC<any>;
9
+ iconColor?: COLOR;
10
+ iconSize?: FONT_SIZE;
11
+ }>;
12
+ export declare enum LIST_SIZE {
13
+ SM = "sm",
14
+ MD = "md",
15
+ LG = "lg"
16
+ }
17
+ export declare const List: React.FC<ListProps>;
18
+ type ListItemProps = StyledElementProps<HTMLLIElement, {
19
+ index: number;
20
+ icon?: React.FC<any>;
21
+ iconSize?: FONT_SIZE;
22
+ iconColor?: COLOR;
23
+ iconLabel?: string;
24
+ onIconClick?: () => void;
25
+ }>;
26
+ export declare const ListItem: React.FC<ListItemProps>;
27
+ export {};