@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,31 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { DatePicker } from '.';
4
+ import { Box } from '../../layout/Box';
5
+ const meta = {
6
+ title: 'Elements/Fields/DatePicker',
7
+ component: DatePicker,
8
+ tags: ['autodocs'],
9
+ };
10
+ export default meta;
11
+ const StatefulDatePicker = (props) => {
12
+ const [date, setDate] = useState(new Date());
13
+ return (_jsx(DatePicker, Object.assign({}, props, { value: date, onChange: (d) => {
14
+ setDate(d);
15
+ } })));
16
+ };
17
+ export const Default = {
18
+ render: () => (_jsx(Box, Object.assign({ sx: { height: '500px' } }, { children: _jsx(StatefulDatePicker, { placeholder: "test" }) }))),
19
+ };
20
+ export const Inline = {
21
+ render: () => (_jsx(Box, Object.assign({ sx: { height: '500px' } }, { children: _jsx(StatefulDatePicker, { inline: true }) }))),
22
+ };
23
+ export const HighlightedDates = {
24
+ render: () => {
25
+ const highlightedDate1 = new Date();
26
+ highlightedDate1.setDate(highlightedDate1.getDate() + 1);
27
+ const highlightedDate2 = new Date();
28
+ highlightedDate2.setDate(highlightedDate2.getDate() - 1);
29
+ return (_jsx(Box, Object.assign({ sx: { height: '500px' } }, { children: _jsx(StatefulDatePicker, { inline: true, highlightDates: [highlightedDate1, highlightedDate2] }) })));
30
+ },
31
+ };
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ import 'react-datepicker/dist/react-datepicker.css';
3
+ import { TextInputProps } from '../TextInput';
4
+ import { BoxProps } from '../../layout/Box';
5
+ export declare const InputWrapper: React.ForwardRefExoticComponent<{
6
+ onChange?: ((e: React.ChangeEvent) => void) | undefined;
7
+ onClick?: ((e: React.MouseEvent) => void) | undefined;
8
+ value?: string | undefined;
9
+ children: React.ReactElement;
10
+ } & React.RefAttributes<any>>;
11
+ export declare const DatePicker: React.FC<{
12
+ value: Date;
13
+ onChange: (date: Date) => void;
14
+ minDate?: Date;
15
+ maxDate?: Date;
16
+ inline?: boolean;
17
+ highlightDates?: Date[];
18
+ wrapperProps?: BoxProps;
19
+ inputProps?: Partial<TextInputProps>;
20
+ }>;
@@ -0,0 +1,48 @@
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 "react/jsx-runtime";
13
+ import React from 'react';
14
+ import _ReactDatePicker from 'react-datepicker';
15
+ import 'react-datepicker/dist/react-datepicker.css';
16
+ import { TextInput } from '../TextInput';
17
+ import _CalendarIcon from '@mui/icons-material/CalendarMonth';
18
+ import { Box } from '../../layout/Box';
19
+ import { importedDefaultComponentShim } from '../../../../utils/misc';
20
+ const CalendarIcon = importedDefaultComponentShim(_CalendarIcon);
21
+ const ReactDatePicker = importedDefaultComponentShim(_ReactDatePicker);
22
+ export const InputWrapper = React.forwardRef(({ onChange, value, children, onClick }, ref) => {
23
+ return React.cloneElement(children, {
24
+ value: value,
25
+ onChangeRaw: onChange,
26
+ ref: ref,
27
+ leftIcon: CalendarIcon,
28
+ onClick,
29
+ });
30
+ });
31
+ const PermissiveTextInput = TextInput;
32
+ const areDatesEqual = (d1, d2) => {
33
+ const serializeDate = (d) => `${d.getFullYear()} ${d.getMonth()} ${d.getDate()}`;
34
+ return serializeDate(d1) === serializeDate(d2);
35
+ };
36
+ export const DatePicker = (_a) => {
37
+ var { value, wrapperProps, inputProps, highlightDates } = _a, rest = __rest(_a, ["value", "wrapperProps", "inputProps", "highlightDates"]);
38
+ const highlightDateSet = new Set(highlightDates === null || highlightDates === void 0 ? void 0 : highlightDates.map((d) => d.toDateString()));
39
+ return (_jsx(Box, Object.assign({}, wrapperProps, { children: _jsx(ReactDatePicker, Object.assign({ calendarClassName: "ndlib-date-picker", selected: value, dayClassName: (date) => {
40
+ if (areDatesEqual(date, value)) {
41
+ return '';
42
+ }
43
+ if (highlightDateSet.has(date.toDateString())) {
44
+ return 'ndlib-date-picker-highlight';
45
+ }
46
+ return '';
47
+ }, customInput: _jsx(InputWrapper, { children: _jsx(PermissiveTextInput, Object.assign({}, inputProps)) }) }, rest)) })));
48
+ };
@@ -0,0 +1,7 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { MonthPicker } from '.';
3
+ declare const meta: Meta<typeof MonthPicker>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof MonthPicker>;
6
+ export declare const Default: Story;
7
+ export declare const Inline: Story;
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { MonthPicker } from '.';
4
+ import { Box } from '../../layout/Box';
5
+ const meta = {
6
+ title: 'Elements/Fields/MonthPicker',
7
+ component: MonthPicker,
8
+ tags: ['autodocs'],
9
+ };
10
+ export default meta;
11
+ const StatefulMonthPicker = (props) => {
12
+ const [date, setDate] = useState(new Date());
13
+ return _jsx(MonthPicker, Object.assign({}, props, { value: date, onChange: setDate }));
14
+ };
15
+ export const Default = {
16
+ render: () => (_jsx(Box, Object.assign({ sx: { height: '500px' } }, { children: _jsx(StatefulMonthPicker, {}) }))),
17
+ };
18
+ export const Inline = {
19
+ render: () => (_jsx(Box, Object.assign({ sx: { height: '500px' } }, { children: _jsx(StatefulMonthPicker, { inline: true }) }))),
20
+ };
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import 'react-datepicker/dist/react-datepicker.css';
3
+ import { TextInputProps } from '../TextInput';
4
+ import { BoxProps } from '../../layout/Box';
5
+ export declare const MonthPicker: React.FC<{
6
+ value: Date;
7
+ onChange: (date: Date) => void;
8
+ minDate?: Date;
9
+ maxDate?: Date;
10
+ inline?: boolean;
11
+ inputProps?: Partial<TextInputProps>;
12
+ wrapperProps?: BoxProps;
13
+ }>;
@@ -0,0 +1,24 @@
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 "react/jsx-runtime";
13
+ import _ReactDatePicker from 'react-datepicker';
14
+ import 'react-datepicker/dist/react-datepicker.css';
15
+ import { TextInput } from '../TextInput';
16
+ import { InputWrapper } from '../DatePicker';
17
+ import { Box } from '../../layout/Box';
18
+ import { importedDefaultComponentShim } from '../../../../utils/misc';
19
+ const ReactDatePicker = importedDefaultComponentShim(_ReactDatePicker);
20
+ const PermissiveTextInput = TextInput;
21
+ export const MonthPicker = (_a) => {
22
+ var { value, inputProps, wrapperProps } = _a, rest = __rest(_a, ["value", "inputProps", "wrapperProps"]);
23
+ return (_jsx(Box, Object.assign({}, wrapperProps, { children: _jsx(ReactDatePicker, Object.assign({ calendarClassName: "ndlib-date-picker", selected: value, customInput: _jsx(InputWrapper, { children: _jsx(PermissiveTextInput, Object.assign({}, inputProps)) }), showMonthYearPicker: true }, rest)) })));
24
+ };
@@ -0,0 +1,6 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { Radio } from './index';
3
+ declare const meta: Meta<typeof Radio>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof Radio>;
6
+ export declare const Default: Story;
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Radio } from './index';
3
+ import { useState } from 'react';
4
+ import { Row } from '../../layout/Row';
5
+ const meta = {
6
+ title: 'Elements/Fields/Radio',
7
+ component: Radio,
8
+ tags: ['autodocs'],
9
+ };
10
+ export default meta;
11
+ const StatefulRadio = (props) => {
12
+ const [checked, setChecked] = useState(false);
13
+ return _jsx(Radio, Object.assign({}, props, { checked: checked, onChange: setChecked }));
14
+ };
15
+ export const Default = {
16
+ render: () => (_jsx(Row, { children: _jsx(StatefulRadio, {}) })),
17
+ };
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import { StyledElementProps } from '../../../../theme';
3
+ type RadioProps = StyledElementProps<HTMLInputElement, {
4
+ checked: boolean;
5
+ onChange: (value: boolean) => void;
6
+ }, string>;
7
+ export declare const Radio: React.FC<RadioProps>;
8
+ export {};
@@ -0,0 +1,22 @@
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 { useTheme } from '../../../../theme';
14
+ export const Radio = (_a) => {
15
+ var { checked, onChange, sx } = _a, rest = __rest(_a, ["checked", "onChange", "sx"]);
16
+ const theme = useTheme();
17
+ return (_jsx("input", Object.assign({ type: "radio", onChange: (e) => {
18
+ onChange(e.target.checked);
19
+ }, checked: checked, sx: Object.assign({ margin: '0px', height: '1.25rem', width: '1.25rem', cursor: 'pointer', ':hover': {
20
+ boxShadow: theme.boxShadow,
21
+ } }, sx) }, rest)));
22
+ };
@@ -0,0 +1,6 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { RadioGroup } from './index';
3
+ declare const meta: Meta<typeof RadioGroup>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof RadioGroup>;
6
+ export declare const Default: Story;
@@ -0,0 +1,23 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { RadioGroup } from './index';
3
+ import { useState } from 'react';
4
+ import { Row } from '../../layout/Row';
5
+ const meta = {
6
+ title: 'Elements/Fields/RadioGroup',
7
+ component: RadioGroup,
8
+ tags: ['autodocs'],
9
+ };
10
+ export default meta;
11
+ const options = [
12
+ { value: 'orange', label: 'Orange' },
13
+ { value: 'apple', label: 'Apple' },
14
+ { value: 'strawberry', label: 'Strawberry' },
15
+ { value: 'pineapple', label: 'Pineapple' },
16
+ ];
17
+ const StatefulRadioGroup = (props) => {
18
+ const [checked, setChecked] = useState(new Set());
19
+ return (_jsx(RadioGroup, Object.assign({}, props, { checked: checked, options: options, onChange: setChecked })));
20
+ };
21
+ export const Default = {
22
+ render: () => (_jsx(Row, { children: _jsx(StatefulRadioGroup, {}) })),
23
+ };
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import { StyledElementProps } from '../../../../theme';
3
+ import { Key } from '../option';
4
+ type Option = {
5
+ value: Key;
6
+ label: string;
7
+ };
8
+ type RadioGroupProps = StyledElementProps<HTMLDivElement, {
9
+ onChange: (value: Key) => void;
10
+ options: Option[];
11
+ checked?: Key;
12
+ }, string>;
13
+ export declare const RadioGroup: React.FC<RadioGroupProps>;
14
+ export {};
@@ -0,0 +1,28 @@
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 "react/jsx-runtime";
13
+ import { Row } from '../../layout/Row';
14
+ import { Label } from '../../text/Label';
15
+ import { Group } from '../../Group';
16
+ import { GROUP_TYPE } from '../../Group';
17
+ import { Column } from '../../layout/Column';
18
+ import { TYPOGRAPHY_TYPE, getTypographyStyles, } from '../../../../theme/typography';
19
+ import { Radio } from '../Radio';
20
+ export const RadioGroup = (_a) => {
21
+ var { options, checked, onChange } = _a, rest = __rest(_a, ["options", "checked", "onChange"]);
22
+ return (_jsx(Column, Object.assign({}, rest, { children: options.map((option) => (_jsx(Group, Object.assign({ type: GROUP_TYPE.RAW }, { children: ({ labelTargetId }) => (_jsxs(Row, Object.assign({ sx: {
23
+ mb: 2,
24
+ alignItems: 'center',
25
+ } }, { children: [_jsx(Radio, { onChange: () => {
26
+ onChange(option.value);
27
+ }, checked: checked === option.value, id: labelTargetId, sx: { mr: 2 } }), _jsx(Label, Object.assign({ sx: Object.assign({ cursor: 'pointer' }, getTypographyStyles(TYPOGRAPHY_TYPE.PARAGRAPH_MEDIUM)) }, { children: option.label }))] }))) }), option.value))) })));
28
+ };
@@ -0,0 +1,8 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { Select } from './index';
3
+ declare const meta: Meta<typeof Select>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof Select>;
6
+ export declare const Default: Story;
7
+ export declare const WithLabel: Story;
8
+ export declare const InvertedColors: Story;
@@ -0,0 +1,39 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import AppleIcon from '@mui/icons-material/Apple';
3
+ import { INPUT_SIZE } from '../TextInput';
4
+ import { Select } from './index';
5
+ import { useState } from 'react';
6
+ import { Column } from '../../layout/Column';
7
+ import { Group } from '../../Group';
8
+ import { Heading, HEADING_SIZE } from '../../text/Heading';
9
+ import { COLOR } from '../../../../theme/colors';
10
+ const meta = {
11
+ title: 'Elements/Fields/Select',
12
+ component: Select,
13
+ tags: ['autodocs'],
14
+ };
15
+ export default meta;
16
+ const sizes = [
17
+ { label: 'Large', size: INPUT_SIZE.LG },
18
+ { label: 'Medium', size: INPUT_SIZE.MD },
19
+ { label: 'Small', size: INPUT_SIZE.SM },
20
+ ];
21
+ const options = [
22
+ { value: 'orange', label: 'Orange' },
23
+ { value: 'apple', label: 'Apple' },
24
+ { value: 'strawberry', label: 'Strawberry' },
25
+ { value: 'pineapple', label: 'Pineapple' },
26
+ ];
27
+ const StatefulSelect = (props) => {
28
+ const [value, setValue] = useState('');
29
+ return (_jsx(Select, Object.assign({ options: options }, props, { value: value, onSelectOption: setValue, placeholder: "Select A Fruit..." })));
30
+ };
31
+ export const Default = {
32
+ render: () => (_jsx(Column, { children: sizes.map((size) => (_jsxs(Group, { children: [_jsx(Heading, Object.assign({ size: HEADING_SIZE.MD }, { children: size.label })), _jsx(StatefulSelect, { size: size.size, leftIcon: AppleIcon, sx: { mt: 2 } })] }))) })),
33
+ };
34
+ export const WithLabel = {
35
+ render: () => (_jsx(Column, { children: sizes.map((size) => (_jsxs(Group, { children: [_jsx(Heading, Object.assign({ size: HEADING_SIZE.MD }, { children: size.label })), _jsx(StatefulSelect, { size: size.size, leftIcon: AppleIcon, sx: { mt: 2 }, label: "Fruit" })] }))) })),
36
+ };
37
+ export const InvertedColors = {
38
+ render: () => (_jsx(Column, Object.assign({ sx: { backgroundColor: COLOR.BLACK, p: 4 } }, { children: sizes.map((size) => (_jsxs(Group, { children: [_jsx(Heading, Object.assign({ size: HEADING_SIZE.MD, sx: { color: COLOR.WHITE } }, { children: size.label })), _jsx(StatefulSelect, { inverted: true, size: size.size, leftIcon: AppleIcon, sx: { mt: 2 }, label: "Fruit" })] }))) }))),
39
+ };
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ import { StyledElementProps } from '../../../../theme';
3
+ import { INPUT_SIZE } from '../TextInput';
4
+ import { BasicOption, Key, RenderOption, RenderOptionLabel } from '../option';
5
+ type SelectProps<Value extends Key, Option extends BasicOption<Value>> = StyledElementProps<HTMLSelectElement, {
6
+ placeholder?: string;
7
+ size?: INPUT_SIZE;
8
+ leftIcon?: React.FC<any>;
9
+ value: Value;
10
+ label?: string;
11
+ inverted?: boolean;
12
+ onSelectOption: (value: Value) => void;
13
+ options: Option[];
14
+ renderOption?: RenderOption<Value, Option>;
15
+ renderOptionLabel?: RenderOptionLabel<Option>;
16
+ }, string>;
17
+ export declare function Select<Value extends Key, Option extends BasicOption<Value>>({ size: sizeParam, placeholder, leftIcon, value, label, onSelectOption, options, renderOption, inverted, renderOptionLabel: renderOptionLabelParam, sx, }: SelectProps<Value, Option>): React.JSX.Element;
18
+ export {};
@@ -0,0 +1,178 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "theme-ui/jsx-runtime";
2
+ import { useMemo, useState } from 'react';
3
+ import _ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';
4
+ import { useFloating, size as sizeMiddleware, offset, autoPlacement, } from '@floating-ui/react';
5
+ import { TYPOGRAPHY_TYPE, getTypographyStyles, } from '../../../../theme/typography';
6
+ import { useTheme } from '../../../../theme';
7
+ import { INPUT_SIZE, labelOffsetMap, labelTypographyMap } from '../TextInput';
8
+ import { ListBox } from '../../ListBox';
9
+ import { BUTTON_SIZE, BUTTON_TYPE, Button } from '../../Button';
10
+ import { defaultRenderOptionLabel, getOptionId, } from '../option';
11
+ import { KEY_CODES, importedDefaultComponentShim } from '../../../../utils/misc';
12
+ import { COLOR } from '../../../../theme/colors';
13
+ import { Box } from '../../layout/Box';
14
+ import { Label } from '../../text/Label';
15
+ import { useUniqueId } from '../../../providers/uniqueIds';
16
+ const ArrowDropDownIcon = importedDefaultComponentShim(_ArrowDropDownIcon);
17
+ const typographyMap = {
18
+ [INPUT_SIZE.SM]: TYPOGRAPHY_TYPE.PARAGRAPH_SMALL,
19
+ [INPUT_SIZE.MD]: TYPOGRAPHY_TYPE.PARAGRAPH_MEDIUM,
20
+ [INPUT_SIZE.LG]: TYPOGRAPHY_TYPE.PARAGRAPH_LARGE,
21
+ };
22
+ const defaultHeight = {
23
+ [INPUT_SIZE.SM]: '2.25rem',
24
+ [INPUT_SIZE.MD]: '2.5rem',
25
+ [INPUT_SIZE.LG]: '3rem',
26
+ };
27
+ const buttonSizeMap = {
28
+ [INPUT_SIZE.SM]: BUTTON_SIZE.SM,
29
+ [INPUT_SIZE.MD]: BUTTON_SIZE.MD,
30
+ [INPUT_SIZE.LG]: BUTTON_SIZE.LG,
31
+ };
32
+ const DEFAULT_WIDTH = '16rem';
33
+ export function Select({ size: sizeParam, placeholder, leftIcon, value, label, onSelectOption, options, renderOption, inverted, renderOptionLabel: renderOptionLabelParam, sx, }) {
34
+ const theme = useTheme();
35
+ const listboxId = useUniqueId('select-list-box');
36
+ const inputId = useUniqueId('select-input');
37
+ const [isOpen, setIsOpen] = useState(false);
38
+ const [stagedOptionValue, setStagedOptionValue] = useState();
39
+ const currentOption = useMemo(() => {
40
+ return options.find((option) => option.value === value);
41
+ }, [options, value]);
42
+ const getNextOptionValue = () => {
43
+ if (stagedOptionValue) {
44
+ const currentIndex = options
45
+ .map((option) => option.value)
46
+ .indexOf(stagedOptionValue);
47
+ const nextIndex = Math.min(currentIndex + 1, options.length - 1);
48
+ return options[nextIndex].value;
49
+ }
50
+ else {
51
+ setIsOpen(true);
52
+ return options[0].value;
53
+ }
54
+ };
55
+ const getPrevOptionValue = () => {
56
+ if (stagedOptionValue) {
57
+ const currentIndex = options
58
+ .map((option) => option.value)
59
+ .indexOf(stagedOptionValue);
60
+ const nextIndex = Math.max(currentIndex - 1, 0);
61
+ return options[nextIndex].value;
62
+ }
63
+ else {
64
+ setIsOpen(true);
65
+ return options[options.length - 1].value;
66
+ }
67
+ };
68
+ const [dropdownMinWidth, setDropdownMinWidth] = useState('0px');
69
+ const { refs, floatingStyles } = useFloating({
70
+ placement: 'bottom-start',
71
+ middleware: [
72
+ offset(2),
73
+ sizeMiddleware({
74
+ apply({ rects }) {
75
+ setDropdownMinWidth(`${rects.reference.width}px`);
76
+ },
77
+ }),
78
+ autoPlacement({
79
+ allowedPlacements: ['top-start', 'bottom-start'],
80
+ }),
81
+ ],
82
+ });
83
+ const close = () => {
84
+ setStagedOptionValue(undefined);
85
+ setIsOpen(false);
86
+ };
87
+ const open = () => {
88
+ setStagedOptionValue(stagedOptionValue || value || options[0].value);
89
+ setIsOpen(true);
90
+ };
91
+ const onKeyDown = (e) => {
92
+ if (e.key === KEY_CODES.ARROW_DOWN) {
93
+ const nextValue = getNextOptionValue();
94
+ setStagedOptionValue(nextValue);
95
+ }
96
+ if (e.key === KEY_CODES.ARROW_UP) {
97
+ const prevValue = getPrevOptionValue();
98
+ setStagedOptionValue(prevValue);
99
+ }
100
+ if (e.key === KEY_CODES.ENTER) {
101
+ if (!isOpen) {
102
+ open();
103
+ }
104
+ if (isOpen && stagedOptionValue && onSelectOption) {
105
+ onSelectOption(stagedOptionValue);
106
+ close();
107
+ }
108
+ }
109
+ if (e.key === KEY_CODES.ESCAPE) {
110
+ close();
111
+ }
112
+ };
113
+ const size = sizeParam || INPUT_SIZE.MD;
114
+ const buttonSize = buttonSizeMap[size];
115
+ const height = defaultHeight[size];
116
+ const typography = typographyMap[size];
117
+ const typographyStyles = getTypographyStyles(typography);
118
+ const renderOptionLabel = renderOptionLabelParam || defaultRenderOptionLabel;
119
+ const focusStyles = {
120
+ boxShadow: inverted ? theme.boxShadow.INVERTED : theme.boxShadow.NORMAL,
121
+ };
122
+ return (_jsxs(Box, Object.assign({ sx: Object.assign({ width: DEFAULT_WIDTH, position: 'relative', borderRadius: '4px', backgroundColor: inverted ? COLOR.DARK_GRAY : COLOR.WHITE, ':hover fieldset': focusStyles, ':focus fieldset': focusStyles }, sx) }, { children: [_jsx("fieldset", Object.assign({ sx: {
123
+ textAlign: 'left',
124
+ position: 'absolute',
125
+ inset: '-4px 0px 0px 0px',
126
+ margin: '0px',
127
+ padding: '0px 0.5rem',
128
+ pointerEvents: 'none',
129
+ borderRadius: 'inherit',
130
+ borderStyle: 'solid',
131
+ borderWidth: '1px',
132
+ overflow: 'hidden',
133
+ minWidth: '0%',
134
+ borderColor: inverted ? COLOR.GRAY : COLOR.LIGHT_GRAY,
135
+ zIndex: theme.zIndex.ELEVATED,
136
+ } }, { children: _jsx("legend", Object.assign({ style: {
137
+ width: 'auto',
138
+ float: 'unset',
139
+ overflow: 'hidden',
140
+ position: 'relative',
141
+ display: 'block',
142
+ padding: '0',
143
+ height: '8px',
144
+ fontSize: '0.75em',
145
+ visibility: 'hidden',
146
+ whiteSpace: 'nowrap',
147
+ } }, { children: label && (_jsx(Label, Object.assign({ standalone: true, sx: {
148
+ px: 1,
149
+ position: 'relative',
150
+ display: 'inline-flex',
151
+ opacity: '0',
152
+ visibility: 'hidden',
153
+ }, typography: labelTypographyMap[size] }, { children: label }))) })) })), _jsx(Label, Object.assign({ htmlFor: inputId, typography: labelTypographyMap[size], sx: {
154
+ position: 'absolute',
155
+ left: '0.5rem',
156
+ lineHeight: 1,
157
+ zIndex: theme.zIndex.ELEVATED,
158
+ color: inverted ? COLOR.EXTRA_LIGHT_GRAY : COLOR.PRIMARY,
159
+ px: 1,
160
+ top: labelOffsetMap[size],
161
+ } }, { children: label })), _jsx(Button, Object.assign({ ref: refs.setReference, disableFocusStyles: true, role: "combobox", "aria-controls": listboxId, "aria-expanded": isOpen, "aria-autocomplete": "none", "aria-activedescendant": isOpen && stagedOptionValue
162
+ ? getOptionId(stagedOptionValue)
163
+ : undefined, type: BUTTON_TYPE.OUTLINE, size: buttonSize, onBlur: () => close(), onFocus: () => open(), onKeyDown: onKeyDown, onMouseDown: () => {
164
+ if (!isOpen) {
165
+ open();
166
+ }
167
+ else {
168
+ close();
169
+ }
170
+ }, color: inverted ? COLOR.EXTRA_LIGHT_GRAY : COLOR.TEXT, sx: Object.assign({ height, width: '100%', border: 'solid 0px', flexDirection: 'row', alignItems: 'center', position: 'relative', zIndex: theme.zIndex.NORMAL, background: 'none' }, typographyStyles), leftIcon: leftIcon, rightIcon: ArrowDropDownIcon }, { children: currentOption ? renderOptionLabel(currentOption) : placeholder })), isOpen && (_jsx(ListBox, { id: listboxId, options: options, selected: value, focused: stagedOptionValue, selectOption: (option) => {
171
+ onSelectOption && onSelectOption(option.value);
172
+ close();
173
+ }, ref: refs.setFloating, renderOption: renderOption, sx: {
174
+ zIndex: theme.zIndex.DIALOG,
175
+ }, style: Object.assign(Object.assign({ minWidth: dropdownMinWidth }, floatingStyles), { boxShadow: inverted
176
+ ? theme.boxShadow.INVERTED
177
+ : theme.boxShadow.NORMAL }) }))] })));
178
+ }
@@ -0,0 +1,9 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { TextInput } from '.';
3
+ declare const meta: Meta<typeof TextInput>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof TextInput>;
6
+ export declare const Default: Story;
7
+ export declare const WithLabel: Story;
8
+ export declare const Inverted: Story;
9
+ export declare const Disabled: Story;
@@ -0,0 +1,35 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import SearchIcon from '@mui/icons-material/Search';
3
+ import { INPUT_SIZE, TextInput } from '.';
4
+ import { useState } from 'react';
5
+ import { Column } from '../../layout/Column';
6
+ import { Group } from '../../Group';
7
+ import { Heading, HEADING_SIZE } from '../../text/Heading';
8
+ import { COLOR } from '../../../../theme/colors';
9
+ const meta = {
10
+ title: 'Elements/Fields/TextInput',
11
+ component: TextInput,
12
+ tags: ['autodocs'],
13
+ };
14
+ export default meta;
15
+ const sizes = [
16
+ { label: 'Large', size: INPUT_SIZE.LG },
17
+ { label: 'Medium', size: INPUT_SIZE.MD },
18
+ { label: 'Small', size: INPUT_SIZE.SM },
19
+ ];
20
+ const StatefulInput = (props) => {
21
+ const [value, setValue] = useState('');
22
+ return _jsx(TextInput, Object.assign({ value: value, onChange: setValue }, props));
23
+ };
24
+ export const Default = {
25
+ render: () => (_jsx(Column, { children: sizes.map((size) => (_jsxs(Group, { children: [_jsx(Heading, Object.assign({ size: HEADING_SIZE.MD }, { children: size.label })), _jsx(StatefulInput, { size: size.size, leftIcon: SearchIcon, placeholder: "Placeholder", sx: { mt: 2 } })] }))) })),
26
+ };
27
+ export const WithLabel = {
28
+ render: () => (_jsx(Column, { children: sizes.map((size) => (_jsxs(Group, { children: [_jsx(Heading, Object.assign({ size: HEADING_SIZE.MD }, { children: size.label })), _jsx(StatefulInput, { size: size.size, leftIcon: SearchIcon, label: "Search", placeholder: "Placeholder", sx: { mt: 2 } })] }))) })),
29
+ };
30
+ export const Inverted = {
31
+ render: () => (_jsx(Column, Object.assign({ sx: { backgroundColor: COLOR.BLACK, p: 2 } }, { children: sizes.map((size) => (_jsxs(Group, { children: [_jsx(Heading, Object.assign({ size: HEADING_SIZE.MD, sx: { color: COLOR.WHITE } }, { children: size.label })), _jsx(StatefulInput, { inverted: true, size: size.size, leftIcon: SearchIcon, placeholder: "Placeholder", label: "Search", sx: { mt: 2 } })] }))) }))),
32
+ };
33
+ export const Disabled = {
34
+ render: () => (_jsx(Column, Object.assign({ sx: { p: 2 } }, { children: sizes.map((size) => (_jsxs(Group, { children: [_jsx(Heading, Object.assign({ size: HEADING_SIZE.MD, sx: { color: COLOR.WHITE } }, { children: size.label })), _jsx(StatefulInput, { disabled: true, size: size.size, leftIcon: SearchIcon, placeholder: "Placeholder", label: "Search", sx: { mt: 2 } })] }))) }))),
35
+ };
@@ -0,0 +1,45 @@
1
+ import React from 'react';
2
+ import { TYPOGRAPHY_TYPE } from '../../../../theme/typography';
3
+ import { StyledElementProps } from '../../../../theme';
4
+ export declare enum INPUT_SIZE {
5
+ SM = "sm",
6
+ MD = "md",
7
+ LG = "lg"
8
+ }
9
+ export declare const labelTypographyMap: {
10
+ sm: TYPOGRAPHY_TYPE;
11
+ md: TYPOGRAPHY_TYPE;
12
+ lg: TYPOGRAPHY_TYPE;
13
+ };
14
+ export declare const labelOffsetMap: {
15
+ sm: string;
16
+ md: string;
17
+ lg: string;
18
+ };
19
+ export type TextInputProps = StyledElementProps<HTMLInputElement, {
20
+ size?: INPUT_SIZE;
21
+ leftIcon?: React.FC<any>;
22
+ inline?: boolean;
23
+ inverted?: boolean;
24
+ label?: string;
25
+ disabled?: boolean;
26
+ value: string;
27
+ onChange?: (value: string) => void;
28
+ onChangeRaw?: (e: string | React.ChangeEvent) => void;
29
+ }, string>;
30
+ export declare const TextInput: React.ForwardRefExoticComponent<{
31
+ sx?: import("../../../../theme").StylesProp | undefined;
32
+ children?: string | undefined;
33
+ } & Omit<React.HTMLAttributes<HTMLInputElement>, "children" | "onChange"> & {
34
+ size?: INPUT_SIZE | undefined;
35
+ leftIcon?: React.FC<any> | undefined;
36
+ inline?: boolean | undefined;
37
+ inverted?: boolean | undefined;
38
+ label?: string | undefined;
39
+ disabled?: boolean | undefined;
40
+ value: string;
41
+ onChange?: ((value: string) => void) | undefined;
42
+ onChangeRaw?: ((e: string | React.ChangeEvent) => void) | undefined;
43
+ } & {
44
+ htmlFor?: string | undefined;
45
+ } & React.RefAttributes<any>>;