@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,39 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { fireEvent } from '@testing-library/react';
3
+ import { vi } from 'vitest';
4
+ import { render } from '../../../utils/test';
5
+ import { Button } from '.';
6
+ const MockPrimaryIcon = () => _jsx("div", { children: "Mock Primary Icon" });
7
+ const MockLeftIcon = () => _jsx("div", { children: "Mock Left Icon" });
8
+ const MockRightIcon = () => _jsx("div", { children: "Mock Right Icon" });
9
+ describe('Button', () => {
10
+ const mockClickHandler = vi.fn();
11
+ afterEach(() => {
12
+ vi.resetAllMocks();
13
+ });
14
+ it('renders without throwing an error', () => {
15
+ const { getByText } = render(_jsx(Button, { children: "Foo" }));
16
+ expect(getByText('Foo')).toBeInTheDocument();
17
+ });
18
+ it('renders icon component passed to it', () => {
19
+ const { getByText } = render(_jsxs(_Fragment, { children: [_jsx(Button, Object.assign({ leftIcon: MockLeftIcon }, { children: "Click Me" })), _jsx(Button, Object.assign({ primaryIcon: MockPrimaryIcon }, { children: "Click Me" })), _jsx(Button, Object.assign({ rightIcon: MockRightIcon }, { children: "Click Me" }))] }));
20
+ expect(getByText('Mock Primary Icon')).toBeDefined();
21
+ expect(getByText('Mock Left Icon')).toBeDefined();
22
+ expect(getByText('Mock Right Icon')).toBeDefined();
23
+ });
24
+ it('responds to click handlers', () => {
25
+ const { getByRole } = render(_jsx(Button, { onClick: mockClickHandler }));
26
+ fireEvent.click(getByRole('button'));
27
+ expect(mockClickHandler).toHaveBeenCalledTimes(1);
28
+ });
29
+ it('does not respond to click handler when disabled', () => {
30
+ const { getByRole } = render(_jsx(Button, { onClick: mockClickHandler, disabled: true }));
31
+ fireEvent.click(getByRole('button'));
32
+ expect(mockClickHandler).not.toHaveBeenCalled();
33
+ });
34
+ it('does not respond to click handler when loading', () => {
35
+ const { getByRole } = render(_jsx(Button, { onClick: mockClickHandler, loading: true }));
36
+ fireEvent.click(getByRole('button'));
37
+ expect(mockClickHandler).not.toHaveBeenCalled();
38
+ });
39
+ });
@@ -0,0 +1,49 @@
1
+ import React from 'react';
2
+ import { StyledElementProps } from '../../../theme';
3
+ import { COLOR } from '../../../theme/colors';
4
+ export declare enum BUTTON_SIZE {
5
+ SM = "sm",
6
+ MD = "md",
7
+ LG = "lg"
8
+ }
9
+ export declare enum BUTTON_TYPE {
10
+ DEFAULT = "default",
11
+ TEXT = "text",
12
+ OUTLINE = "outline"
13
+ }
14
+ export type ButtonProps = StyledElementProps<HTMLButtonElement, {
15
+ size?: BUTTON_SIZE;
16
+ type?: BUTTON_TYPE;
17
+ color?: COLOR;
18
+ textColor?: COLOR;
19
+ customColor?: string;
20
+ primaryIcon?: React.FC<any>;
21
+ leftIcon?: React.FC<any>;
22
+ rightIcon?: React.FC<any>;
23
+ accessibleLabel?: string;
24
+ loading?: boolean;
25
+ disabled?: boolean;
26
+ disableFocusStyles?: boolean;
27
+ }>;
28
+ export declare const Button: React.ForwardRefExoticComponent<{
29
+ sx?: import("../../../theme").StylesProp | undefined;
30
+ children?: React.ReactNode;
31
+ } & Omit<React.HTMLAttributes<HTMLButtonElement>, "children" | "onChange"> & {
32
+ size?: BUTTON_SIZE | undefined;
33
+ type?: BUTTON_TYPE | undefined;
34
+ color?: COLOR | undefined;
35
+ textColor?: COLOR | undefined;
36
+ customColor?: string | undefined;
37
+ primaryIcon?: React.FC<any> | undefined;
38
+ leftIcon?: React.FC<any> | undefined;
39
+ rightIcon?: React.FC<any> | undefined;
40
+ accessibleLabel?: string | undefined;
41
+ loading?: boolean | undefined;
42
+ disabled?: boolean | undefined;
43
+ disableFocusStyles?: boolean | undefined;
44
+ } & {
45
+ htmlFor?: string | undefined;
46
+ } & React.RefAttributes<HTMLButtonElement>>;
47
+ type LinkButtonProps = Omit<ButtonProps, 'type' | 'color' | 'textColor'>;
48
+ export declare const LinkButton: React.FC<LinkButtonProps>;
49
+ export {};
@@ -0,0 +1,138 @@
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 { useTheme } from '../../../theme';
15
+ import { COLOR } from '../../../theme/colors';
16
+ import { TYPOGRAPHY_TYPE, getIconSize, getTypographyStyles, } from '../../../theme/typography';
17
+ import { Icon } from '../Icon';
18
+ import { useEnvironment } from '../../providers/env';
19
+ import { SPINNER_SIZE, Spinner } from '../Spinner';
20
+ export var BUTTON_SIZE;
21
+ (function (BUTTON_SIZE) {
22
+ BUTTON_SIZE["SM"] = "sm";
23
+ BUTTON_SIZE["MD"] = "md";
24
+ BUTTON_SIZE["LG"] = "lg";
25
+ })(BUTTON_SIZE || (BUTTON_SIZE = {}));
26
+ const typographyMap = {
27
+ [BUTTON_SIZE.SM]: TYPOGRAPHY_TYPE.CONTROL_SMALL,
28
+ [BUTTON_SIZE.MD]: TYPOGRAPHY_TYPE.CONTROL_MEDIUM,
29
+ [BUTTON_SIZE.LG]: TYPOGRAPHY_TYPE.CONTROL_LARGE,
30
+ };
31
+ const defaultPaddingX = {
32
+ [BUTTON_SIZE.SM]: 2,
33
+ [BUTTON_SIZE.MD]: 3,
34
+ [BUTTON_SIZE.LG]: 4,
35
+ };
36
+ const defaultHeight = {
37
+ [BUTTON_SIZE.SM]: '2rem',
38
+ [BUTTON_SIZE.MD]: '2.5rem',
39
+ [BUTTON_SIZE.LG]: '3rem',
40
+ };
41
+ const iconMargin = {
42
+ [BUTTON_SIZE.SM]: 1,
43
+ [BUTTON_SIZE.MD]: 2,
44
+ [BUTTON_SIZE.LG]: 2,
45
+ };
46
+ export var BUTTON_TYPE;
47
+ (function (BUTTON_TYPE) {
48
+ BUTTON_TYPE["DEFAULT"] = "default";
49
+ BUTTON_TYPE["TEXT"] = "text";
50
+ BUTTON_TYPE["OUTLINE"] = "outline";
51
+ })(BUTTON_TYPE || (BUTTON_TYPE = {}));
52
+ export const Button = React.forwardRef((_a, ref) => {
53
+ var { size: sizeParam, type: typeParam, color, customColor, textColor: textColorParam, primaryIcon, leftIcon, rightIcon, disabled: disabledParam, children, sx, loading, disableFocusStyles } = _a, rest = __rest(_a, ["size", "type", "color", "customColor", "textColor", "primaryIcon", "leftIcon", "rightIcon", "disabled", "children", "sx", "loading", "disableFocusStyles"]);
54
+ const disabled = disabledParam || loading;
55
+ const theme = useTheme();
56
+ const { flagInDevelopment } = useEnvironment();
57
+ let bg = COLOR.PRIMARY;
58
+ let borderColor = COLOR.TRANSPARENT;
59
+ let cursor = 'pointer';
60
+ let textColor = COLOR.BACKGROUND;
61
+ let hoverShadow = theme.boxShadow.NORMAL;
62
+ let hoverDecoration = undefined;
63
+ let hoverTransform = 'scale(1.03)';
64
+ const isTextButton = typeParam === BUTTON_TYPE.TEXT;
65
+ const isIconButton = primaryIcon;
66
+ const type = typeParam || BUTTON_TYPE.DEFAULT;
67
+ const size = sizeParam || BUTTON_SIZE.MD;
68
+ const paddingX = isIconButton || isTextButton ? 0 : defaultPaddingX[size];
69
+ const height = isTextButton ? undefined : defaultHeight[size];
70
+ const width = primaryIcon ? height : undefined;
71
+ if (isIconButton && !rest['aria-label']) {
72
+ flagInDevelopment('Icon buttons should include aria-label prop for accessibility');
73
+ }
74
+ if (isIconButton) {
75
+ hoverTransform = 'scale(1.05)';
76
+ }
77
+ if (type === BUTTON_TYPE.DEFAULT) {
78
+ bg = color || COLOR.SECONDARY;
79
+ textColor = COLOR.BLACK;
80
+ }
81
+ if (type === BUTTON_TYPE.TEXT) {
82
+ bg = COLOR.TRANSPARENT;
83
+ textColor = color || COLOR.PRIMARY;
84
+ hoverShadow = undefined;
85
+ hoverDecoration = 'underline';
86
+ }
87
+ if (type === BUTTON_TYPE.OUTLINE) {
88
+ bg = COLOR.BACKGROUND;
89
+ textColor = color || COLOR.TEXT;
90
+ borderColor = textColor;
91
+ }
92
+ if (textColorParam) {
93
+ textColor = textColorParam;
94
+ }
95
+ if (disabled) {
96
+ cursor = 'not-allowed';
97
+ if (bg === COLOR.BACKGROUND || bg === COLOR.TRANSPARENT) {
98
+ textColor = COLOR.GRAY;
99
+ }
100
+ else {
101
+ bg = COLOR.GRAY;
102
+ }
103
+ }
104
+ const typography = typographyMap[size];
105
+ const typographyStyles = getTypographyStyles(typography);
106
+ let body = children;
107
+ if (primaryIcon) {
108
+ body = (_jsx(Icon, { icon: primaryIcon, size: getIconSize(typographyStyles.fontSize), color: textColor }));
109
+ }
110
+ if (loading) {
111
+ body = (_jsxs("div", Object.assign({ sx: {
112
+ position: 'relative',
113
+ display: 'flex',
114
+ alignItems: 'center',
115
+ justifyContent: 'center',
116
+ } }, { children: [_jsx(Spinner, { size: SPINNER_SIZE.SM, color: textColor, sx: { position: 'absolute' } }), _jsx("div", Object.assign({ sx: { visibility: 'hidden' } }, { children: body }))] })));
117
+ }
118
+ const hoverStyles = !disabled
119
+ ? {
120
+ boxShadow: hoverShadow,
121
+ transform: hoverTransform,
122
+ textDecoration: hoverDecoration,
123
+ }
124
+ : undefined;
125
+ return (_jsxs("button", Object.assign({ ref: ref, tabIndex: disabled ? -1 : 0, disabled: disabled, css: {
126
+ backgroundColor: customColor,
127
+ }, sx: Object.assign(Object.assign({ cursor, bg: customColor ? undefined : bg, color: textColor, px: paddingX, width: width, height: height, border: 'solid 1px', borderRadius: '4px', borderColor, display: 'flex', flexDirection: 'row', alignItems: 'center', justifyContent: 'center', ':hover': !disableFocusStyles ? hoverStyles : {}, ':focus': !disableFocusStyles ? hoverStyles : {} }, typographyStyles), sx) }, rest, { children: [leftIcon && (_jsx(Icon, { icon: leftIcon, size: typographyStyles.fontSize, sx: { mr: iconMargin[size] }, color: textColor })), _jsx("div", Object.assign({ css: {
128
+ flexGrow: 1,
129
+ justifyContent: 'flex-start',
130
+ textOverflow: 'ellipsis',
131
+ whiteSpace: 'nowrap',
132
+ overflow: 'hidden',
133
+ textAlign: 'start',
134
+ } }, { children: body })), rightIcon && (_jsx(Icon, { icon: rightIcon, size: typographyStyles.fontSize, sx: { ml: iconMargin[size] }, color: textColor }))] })));
135
+ });
136
+ export const LinkButton = (props) => {
137
+ return (_jsx(Button, Object.assign({}, props, { color: COLOR.ND_BLUE_BRIGHT, textColor: COLOR.WHITE })));
138
+ };
@@ -0,0 +1,7 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { Dropdown } from '.';
3
+ declare const meta: Meta<typeof Dropdown>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof Dropdown>;
6
+ export declare const Default: Story;
7
+ export declare const MatchWidth: Story;
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';
3
+ import { Button } from '../../elements/Button';
4
+ import { Box } from '../../elements/layout/Box';
5
+ import { Dropdown } from '.';
6
+ import { Paragraph } from '../text/Paragraph';
7
+ const meta = {
8
+ title: 'Elements/Dropdown',
9
+ component: Dropdown,
10
+ tags: ['autodocs'],
11
+ };
12
+ export default meta;
13
+ const lorem = `Lorem ipsum dolor sit amet, consectetur adipiscing elit.
14
+ Nullam id nunc vitae magna aliquam aliquet. In hac habitasse platea dictumst.`;
15
+ export const Default = {
16
+ render: () => (_jsx(Box, Object.assign({ sx: { width: '200px', height: '200px' } }, { children: _jsx(Dropdown, { renderAnchor: ({ anchorProps }) => (_jsx(Button, Object.assign({}, anchorProps, { rightIcon: ArrowDropDownIcon }, { children: "Open Dropdown" }))), renderDropdown: () => _jsx(Paragraph, { children: lorem }) }) }))),
17
+ };
18
+ export const MatchWidth = {
19
+ render: () => (_jsx(Box, Object.assign({ sx: { width: '200px', height: '200px' } }, { children: _jsx(Dropdown, { matchWidth: true, renderAnchor: ({ anchorProps }) => (_jsx(Button, Object.assign({}, anchorProps, { rightIcon: ArrowDropDownIcon }, { children: "Open Dropdown" }))), renderDropdown: () => _jsx(Paragraph, { children: lorem }) }) }))),
20
+ };
@@ -0,0 +1,24 @@
1
+ import React from 'react';
2
+ import { StyledElementProps } from '../../../theme';
3
+ type AnchorProps = Omit<React.HTMLAttributes<HTMLButtonElement>, 'color'>;
4
+ type AnchorRenderFn = (params: {
5
+ anchorProps: AnchorProps;
6
+ isOpen: boolean;
7
+ setIsOpen: (isOpen: boolean) => void;
8
+ }) => React.ReactNode;
9
+ type DropdownRenderFn = (params: {
10
+ styles: React.CSSProperties;
11
+ ref: React.Ref<any>;
12
+ isOpen: boolean;
13
+ setIsOpen: (isOpen: boolean) => void;
14
+ id: string;
15
+ }) => React.ReactNode;
16
+ type DropdownProps = StyledElementProps<HTMLDivElement, {
17
+ renderAnchor: AnchorRenderFn;
18
+ renderDropdown: DropdownRenderFn;
19
+ shouldRenderDropdownContainer?: boolean;
20
+ matchWidth?: boolean;
21
+ }>;
22
+ export declare const Overlay: React.FC<StyledElementProps<HTMLDivElement>>;
23
+ export declare const Dropdown: React.FC<DropdownProps>;
24
+ export {};
@@ -0,0 +1,87 @@
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, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
13
+ import { useCallback, useMemo, useState } from 'react';
14
+ import { useTheme } from '../../../theme';
15
+ import { autoPlacement, offset, size, useFloating } from '@floating-ui/react';
16
+ import { Box } from '../../elements/layout/Box';
17
+ import { useUniqueId } from '../../providers/uniqueIds';
18
+ import { Z_INDEX } from '../../../theme/custom';
19
+ import { COLOR } from '../../../theme/colors';
20
+ export const Overlay = (props) => (_jsx(Box, Object.assign({}, props, { sx: {
21
+ position: 'fixed',
22
+ top: 0,
23
+ left: 0,
24
+ width: '100vw',
25
+ height: '100vh',
26
+ zIndex: Z_INDEX.ELEVATED,
27
+ } })));
28
+ export const Dropdown = (_a) => {
29
+ var { renderAnchor, renderDropdown, matchWidth, shouldRenderDropdownContainer = true } = _a, rest = __rest(_a, ["renderAnchor", "renderDropdown", "matchWidth", "shouldRenderDropdownContainer"]);
30
+ const [isOpen, setIsOpen] = useState(false);
31
+ const [dropdownMinWidth, setDropdownMinWidth] = useState('0px');
32
+ const [dropdownMaxWidth, setDropdownMaxWidth] = useState();
33
+ const dropdownId = useUniqueId('dropdown');
34
+ const anchorId = useUniqueId('dropdown-anchor');
35
+ const { boxShadow } = useTheme();
36
+ const { refs, floatingStyles } = useFloating({
37
+ placement: 'bottom-start',
38
+ middleware: [
39
+ offset(2),
40
+ size({
41
+ apply({ rects }) {
42
+ setDropdownMinWidth(`${rects.reference.width}px`);
43
+ if (matchWidth) {
44
+ setDropdownMaxWidth(`${rects.reference.width}px`);
45
+ }
46
+ },
47
+ }),
48
+ autoPlacement({
49
+ allowedPlacements: [
50
+ 'top-start',
51
+ 'bottom-start',
52
+ 'top-end',
53
+ 'bottom-end',
54
+ ],
55
+ }),
56
+ ],
57
+ });
58
+ const dropdownBoxStyles = Object.assign(Object.assign({}, floatingStyles), { minWidth: dropdownMinWidth, maxWidth: dropdownMaxWidth, zIndex: Z_INDEX.DIALOG, backgroundColor: COLOR.WHITE, boxShadow: boxShadow.NORMAL });
59
+ const onClick = useCallback(() => {
60
+ setIsOpen(!isOpen);
61
+ }, [isOpen]);
62
+ const dropdownAnchorProps = useMemo(() => ({
63
+ id: anchorId,
64
+ 'aria-haspopup': true,
65
+ 'aria-expanded': isOpen,
66
+ 'aria-owns': dropdownId,
67
+ ref: refs.setReference,
68
+ onClick,
69
+ }), [refs, onClick, anchorId, isOpen, dropdownId]);
70
+ return (_jsxs(Box, Object.assign({}, rest, { children: [renderAnchor({
71
+ anchorProps: dropdownAnchorProps,
72
+ isOpen,
73
+ setIsOpen,
74
+ }), isOpen && (_jsxs(_Fragment, { children: [shouldRenderDropdownContainer ? (_jsx(Box, Object.assign({ id: dropdownId, ref: refs.setFloating, style: dropdownBoxStyles }, { children: renderDropdown({
75
+ styles: dropdownBoxStyles,
76
+ ref: refs.setFloating,
77
+ setIsOpen,
78
+ isOpen,
79
+ id: dropdownId,
80
+ }) }))) : (renderDropdown({
81
+ styles: dropdownBoxStyles,
82
+ ref: refs.setFloating,
83
+ isOpen,
84
+ setIsOpen,
85
+ id: dropdownId,
86
+ })), _jsx(Overlay, { onClick: () => setIsOpen(false) })] }))] })));
87
+ };
@@ -0,0 +1,6 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { AutoComplete } from '.';
3
+ declare const meta: Meta<typeof AutoComplete>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof AutoComplete>;
6
+ export declare const Default: Story;
@@ -0,0 +1,60 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { AutoComplete } from '.';
3
+ import { Paragraph, PARAGRAPH_SIZE } from '../../text/Paragraph';
4
+ import { HEADING_SIZE, Heading } from '../../text/Heading';
5
+ import { Column } from '../../layout/Column';
6
+ import { Row } from '../../layout/Row';
7
+ const options = [
8
+ {
9
+ label: 'Cucumber',
10
+ value: 'Cucumber',
11
+ },
12
+ {
13
+ label: 'Egg Plant',
14
+ value: 'Egg Plant',
15
+ },
16
+ {
17
+ label: 'Napa',
18
+ value: 'Napa',
19
+ },
20
+ {
21
+ label: 'Cabbage',
22
+ value: 'Cabbage',
23
+ },
24
+ {
25
+ label: 'Broccoli',
26
+ value: 'Broccoli',
27
+ },
28
+ {
29
+ label: 'Radish',
30
+ value: 'Radish',
31
+ },
32
+ {
33
+ label: 'Cauliflower',
34
+ value: 'Cauliflower',
35
+ },
36
+ {
37
+ label: 'Beet',
38
+ value: 'Beet',
39
+ },
40
+ {
41
+ label: 'Tomato',
42
+ value: 'Tomato',
43
+ },
44
+ {
45
+ label: 'Zuchinni',
46
+ value: 'Zuchinni',
47
+ },
48
+ ];
49
+ function onSelect() {
50
+ return console.log('clicked');
51
+ }
52
+ const meta = {
53
+ title: 'Elements/Fields/AutoComplete',
54
+ component: AutoComplete,
55
+ tags: ['autodocs'],
56
+ };
57
+ export default meta;
58
+ export const Default = {
59
+ render: () => (_jsx(_Fragment, { children: _jsx(Row, Object.assign({ justify: "space-between" }, { children: _jsxs(Column, { children: [_jsx(Heading, Object.assign({ size: HEADING_SIZE.LG }, { children: "Vegetables" })), _jsx("br", {}), _jsx(AutoComplete, { options: options, value: "cucumber", onSelect: onSelect }), _jsx("br", {}), _jsx(Paragraph, Object.assign({ size: PARAGRAPH_SIZE.LG }, { children: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris ultrices venenatis purus at porta. Etiam congue sapien leo, sed malesuada justo commodo in. Nunc consequat, massa non cursus posuere, magna eros lacinia lectus, eget lobortis mi erat ut justo. Maecenas nisi mi, mollis sed ornare vitae, pharetra sed augue. Curabitur mollis orci risus, sed imperdiet nisi aliquet et. Ut non elit nec magna rhoncus maximus sit amet ut dui. Mauris sit amet eleifend lectus. Aliquam consectetur posuere libero eu ultricies. Etiam rutrum non orci nec vulputate. Sed vel accumsan diam. Cras aliquet eros eros, sit amet pharetra eros tincidunt ut. Vestibulum est erat, eleifend dapibus eros vel, elementum vehicula risus. Etiam blandit condimentum sodales. Donec non libero in orci aliquam egestas fringilla eget purus. Suspendisse pellentesque at ligula ut accumsan." }))] }) })) })),
60
+ };
@@ -0,0 +1,11 @@
1
+ interface Option {
2
+ label: string;
3
+ value: string;
4
+ }
5
+ interface AutoCompleteProps {
6
+ value: string;
7
+ options: Option[];
8
+ onSelect: (option: string) => any;
9
+ }
10
+ export declare const AutoComplete: ({ value, options, onSelect, }: AutoCompleteProps) => import("react/jsx-runtime").JSX.Element;
11
+ export default AutoComplete;
@@ -0,0 +1,26 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { COLOR } from '../../../../theme/colors';
4
+ import { ListBox } from '../../ListBox';
5
+ import { TextInput } from '../../Fields/TextInput';
6
+ export const AutoComplete = ({ value, options, onSelect, }) => {
7
+ const [inputValue, setInputValue] = useState(value);
8
+ const [filteredOptions, setFilteredOptions] = useState(options);
9
+ const [showOptions, setShowOptions] = useState(false);
10
+ const handleChange = (value) => {
11
+ setInputValue(value);
12
+ const newFilteredOptions = options.filter((option) => option.label.toLowerCase().includes(value.toLowerCase()));
13
+ setFilteredOptions(newFilteredOptions);
14
+ setShowOptions(true);
15
+ };
16
+ const handleSelect = (selectedOption) => {
17
+ setShowOptions(false);
18
+ setInputValue(selectedOption.label);
19
+ onSelect(selectedOption.value);
20
+ };
21
+ return (_jsxs("div", { children: [_jsx(TextInput, { value: inputValue, onChange: handleChange }), showOptions && (_jsx(ListBox, { options: filteredOptions, selectOption: handleSelect, sx: {
22
+ bg: COLOR.PRIMARY,
23
+ marginTop: 2,
24
+ } }))] }));
25
+ };
26
+ export default AutoComplete;
@@ -0,0 +1,6 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { Checkbox } from './index';
3
+ declare const meta: Meta<typeof Checkbox>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof Checkbox>;
6
+ export declare const Default: Story;
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Checkbox } from './index';
3
+ import { useState } from 'react';
4
+ import { Row } from '../../layout/Row';
5
+ const meta = {
6
+ title: 'Elements/Fields/Checkbox',
7
+ component: Checkbox,
8
+ tags: ['autodocs'],
9
+ };
10
+ export default meta;
11
+ const StatefulCheckbox = (props) => {
12
+ const [checked, setChecked] = useState(false);
13
+ return _jsx(Checkbox, Object.assign({}, props, { checked: checked, onChange: setChecked }));
14
+ };
15
+ export const Default = {
16
+ render: () => (_jsx(Row, { children: _jsx(StatefulCheckbox, {}) })),
17
+ };
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import { StyledElementProps } from '../../../../theme';
3
+ type CheckboxProps = StyledElementProps<HTMLInputElement, {
4
+ checked: boolean;
5
+ onChange: (value: boolean) => void;
6
+ }, string>;
7
+ export declare const Checkbox: React.FC<CheckboxProps>;
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 Checkbox = (_a) => {
15
+ var { checked, onChange, sx } = _a, rest = __rest(_a, ["checked", "onChange", "sx"]);
16
+ const theme = useTheme();
17
+ return (_jsx("input", Object.assign({ type: "checkbox", 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,7 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { CheckboxGroup } from './index';
3
+ declare const meta: Meta<typeof CheckboxGroup>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof CheckboxGroup>;
6
+ export declare const Default: Story;
7
+ export declare const Columns: Story;
@@ -0,0 +1,26 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { CheckboxGroup } from './index';
3
+ import { useState } from 'react';
4
+ import { Row } from '../../layout/Row';
5
+ const meta = {
6
+ title: 'Elements/Fields/CheckboxGroup',
7
+ component: CheckboxGroup,
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 StatefulCheckboxGroup = (props) => {
18
+ const [checked, setChecked] = useState(new Set());
19
+ return (_jsx(CheckboxGroup, Object.assign({}, props, { checkedOptions: checked, options: options, onChange: setChecked })));
20
+ };
21
+ export const Default = {
22
+ render: () => (_jsx(Row, { children: _jsx(StatefulCheckboxGroup, {}) })),
23
+ };
24
+ export const Columns = {
25
+ render: () => (_jsx(Row, { children: _jsx(StatefulCheckboxGroup, { columns: 2 }) })),
26
+ };
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ import { StyledElementProps, StylesProp } from '../../../../theme';
3
+ import { Key } from '../option';
4
+ type Option = {
5
+ value: Key;
6
+ label: string;
7
+ };
8
+ type CheckboxGroupProps = StyledElementProps<HTMLDivElement, {
9
+ onChange: (value: Set<Key>) => void;
10
+ options: Option[];
11
+ checkedOptions?: Set<Key>;
12
+ columnStyles: StylesProp;
13
+ columns?: number;
14
+ }, string>;
15
+ export declare const CheckboxGroup: React.FC<CheckboxGroupProps>;
16
+ export {};
@@ -0,0 +1,49 @@
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 { useMemo } from 'react';
14
+ import { Row } from '../../layout/Row';
15
+ import { Checkbox } from '../Checkbox';
16
+ import { Label } from '../../text/Label';
17
+ import { Group } from '../../Group';
18
+ import { GROUP_TYPE } from '../../Group';
19
+ import { Column } from '../../layout/Column';
20
+ import { TYPOGRAPHY_TYPE, getTypographyStyles, } from '../../../../theme/typography';
21
+ export const CheckboxGroup = (_a) => {
22
+ var { options, checkedOptions, columns: columnsProp, columnStyles, onChange } = _a, rest = __rest(_a, ["options", "checkedOptions", "columns", "columnStyles", "onChange"]);
23
+ const columns = columnsProp || 1;
24
+ const optionsByColumn = useMemo(() => {
25
+ const optionsByColumn = [];
26
+ for (let i = 0; i < options.length; i++) {
27
+ const maxPerColumn = Math.ceil(options.length / columns);
28
+ const columnIndex = Math.floor(i / maxPerColumn);
29
+ if (optionsByColumn[columnIndex] === undefined) {
30
+ optionsByColumn[columnIndex] = [];
31
+ }
32
+ optionsByColumn[columnIndex].push(options[i]);
33
+ }
34
+ return optionsByColumn;
35
+ }, [options, columns]);
36
+ return (_jsx(Row, Object.assign({}, rest, { children: optionsByColumn.map((options, index) => (_jsx(Column, Object.assign({ grow: 1, sx: Object.assign({ mr: 4 }, columnStyles) }, { children: options.map((option) => (_jsx(Group, Object.assign({ type: GROUP_TYPE.RAW }, { children: ({ labelTargetId }) => (_jsxs(Row, Object.assign({ sx: {
37
+ mb: 2,
38
+ alignItems: 'center',
39
+ } }, { children: [_jsx(Checkbox, { onChange: (checked) => {
40
+ const updatedSet = new Set(checkedOptions || []);
41
+ if (checked) {
42
+ updatedSet.add(option.value);
43
+ }
44
+ else {
45
+ updatedSet.delete(option.value);
46
+ }
47
+ onChange(updatedSet);
48
+ }, checked: !!(checkedOptions === null || checkedOptions === void 0 ? void 0 : checkedOptions.has(option.value)), id: labelTargetId, sx: { mr: 2 } }), _jsx(Label, Object.assign({ sx: Object.assign({ cursor: 'pointer' }, getTypographyStyles(TYPOGRAPHY_TYPE.CONDENSED_TEXT_MEDIUM)) }, { children: option.label }))] }))) }), option.value))) }), index))) })));
49
+ };
@@ -0,0 +1,8 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { DatePicker } from '.';
3
+ declare const meta: Meta<typeof DatePicker>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof DatePicker>;
6
+ export declare const Default: Story;
7
+ export declare const Inline: Story;
8
+ export declare const HighlightedDates: Story;