@nypl/design-system-react-components 1.0.2 → 1.0.4

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 (309) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/README.md +171 -135
  3. package/dist/__tests__/mediaMatchMock.d.ts +79 -0
  4. package/dist/components/Card/Card.d.ts +8 -6
  5. package/dist/components/Heading/Heading.d.ts +6 -0
  6. package/dist/components/Icons/Icon.d.ts +1 -1
  7. package/dist/components/Icons/IconSvgs.d.ts +10 -0
  8. package/dist/components/Logo/Logo.d.ts +1 -1
  9. package/dist/components/Logo/LogoSvgs.d.ts +3 -0
  10. package/dist/components/Slider/Slider.d.ts +1 -2
  11. package/dist/components/Table/Table.d.ts +3 -2
  12. package/dist/components/Text/Text.d.ts +6 -0
  13. package/dist/components/TextInput/TextInput.d.ts +2 -1
  14. package/dist/design-system-react-components.cjs.development.js +1700 -878
  15. package/dist/design-system-react-components.cjs.development.js.map +1 -1
  16. package/dist/design-system-react-components.cjs.production.min.js +1 -1
  17. package/dist/design-system-react-components.cjs.production.min.js.map +1 -1
  18. package/dist/design-system-react-components.esm.js +1672 -881
  19. package/dist/design-system-react-components.esm.js.map +1 -1
  20. package/dist/hooks/{tests → __tests__}/useCarouselStyles.test.d.ts +0 -0
  21. package/dist/hooks/__tests__/useNYPLBreakpoints.test.d.ts +1 -0
  22. package/dist/hooks/useNYPLBreakpoints.d.ts +13 -0
  23. package/dist/index.d.ts +2 -1
  24. package/dist/resources.scss +0 -4
  25. package/dist/styles.css +3 -2
  26. package/dist/theme/components/button.d.ts +7 -2
  27. package/dist/theme/components/checkbox.d.ts +1 -0
  28. package/dist/theme/components/customTable.d.ts +522 -34
  29. package/dist/theme/components/datePicker.d.ts +1 -0
  30. package/dist/theme/components/global.d.ts +5 -2
  31. package/dist/theme/components/heading.d.ts +5 -1
  32. package/dist/theme/components/image.d.ts +18 -0
  33. package/dist/theme/components/radio.d.ts +9 -0
  34. package/dist/theme/components/searchBar.d.ts +6 -0
  35. package/dist/theme/components/select.d.ts +4 -5
  36. package/dist/theme/components/structuredContent.d.ts +117 -17
  37. package/dist/theme/components/template.d.ts +4 -1
  38. package/dist/theme/components/text.d.ts +5 -1
  39. package/dist/theme/components/textInput.d.ts +4 -0
  40. package/dist/theme/components/toggle.d.ts +1 -0
  41. package/dist/theme/provider.d.ts +2 -1
  42. package/package.json +16 -16
  43. package/src/__tests__/fileMock.ts +0 -6
  44. package/src/__tests__/setup.ts +0 -27
  45. package/src/__tests__/utils/utils.test.ts +0 -18
  46. package/src/components/AccessibilityGuide/SkipNavigation.stories.mdx +0 -42
  47. package/src/components/Accordion/Accordion.stories.mdx +0 -333
  48. package/src/components/Accordion/Accordion.test.tsx +0 -237
  49. package/src/components/Accordion/Accordion.tsx +0 -137
  50. package/src/components/Accordion/__snapshots__/Accordion.test.tsx.snap +0 -734
  51. package/src/components/Autosuggest/Autosuggest.stories.mdx +0 -75
  52. package/src/components/Autosuggest/Autosuggest.stories.tsx +0 -211
  53. package/src/components/Autosuggest/_Autosuggest.scss +0 -51
  54. package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +0 -231
  55. package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +0 -144
  56. package/src/components/Breadcrumbs/Breadcrumbs.tsx +0 -98
  57. package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +0 -695
  58. package/src/components/Button/Button.stories.mdx +0 -320
  59. package/src/components/Button/Button.test.tsx +0 -184
  60. package/src/components/Button/Button.tsx +0 -95
  61. package/src/components/Button/__snapshots__/Button.test.tsx.snap +0 -106
  62. package/src/components/ButtonGroup/ButtonGroup.stories.mdx +0 -178
  63. package/src/components/ButtonGroup/ButtonGroup.test.tsx +0 -141
  64. package/src/components/ButtonGroup/ButtonGroup.tsx +0 -100
  65. package/src/components/ButtonGroup/__snapshots__/ButtonGroup.test.tsx.snap +0 -117
  66. package/src/components/Card/Card.stories.mdx +0 -1041
  67. package/src/components/Card/Card.test.tsx +0 -388
  68. package/src/components/Card/Card.tsx +0 -346
  69. package/src/components/Card/__snapshots__/Card.test.tsx.snap +0 -568
  70. package/src/components/Chakra/Box.stories.mdx +0 -52
  71. package/src/components/Chakra/Center.stories.mdx +0 -96
  72. package/src/components/Chakra/Flex.stories.mdx +0 -111
  73. package/src/components/Chakra/Grid.stories.mdx +0 -89
  74. package/src/components/Chakra/Stack.stories.mdx +0 -109
  75. package/src/components/Checkbox/Checkbox.stories.mdx +0 -243
  76. package/src/components/Checkbox/Checkbox.test.tsx +0 -350
  77. package/src/components/Checkbox/Checkbox.tsx +0 -152
  78. package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +0 -661
  79. package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +0 -462
  80. package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +0 -492
  81. package/src/components/CheckboxGroup/CheckboxGroup.tsx +0 -173
  82. package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +0 -1842
  83. package/src/components/ComponentWrapper/ComponentWrapper.test.tsx +0 -163
  84. package/src/components/ComponentWrapper/ComponentWrapper.tsx +0 -76
  85. package/src/components/ComponentWrapper/__snapshots__/ComponentWrapper.test.tsx.snap +0 -103
  86. package/src/components/DatePicker/DatePicker.stories.mdx +0 -452
  87. package/src/components/DatePicker/DatePicker.test.tsx +0 -940
  88. package/src/components/DatePicker/DatePicker.tsx +0 -450
  89. package/src/components/DatePicker/_DatePicker.scss +0 -100
  90. package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +0 -908
  91. package/src/components/Fieldset/Fieldset.stories.mdx +0 -96
  92. package/src/components/Fieldset/Fieldset.test.tsx +0 -155
  93. package/src/components/Fieldset/Fieldset.tsx +0 -55
  94. package/src/components/Fieldset/__snapshots__/Fieldset.test.tsx.snap +0 -89
  95. package/src/components/Form/Form.stories.mdx +0 -426
  96. package/src/components/Form/Form.test.tsx +0 -234
  97. package/src/components/Form/Form.tsx +0 -124
  98. package/src/components/Form/__snapshots__/Form.test.tsx.snap +0 -115
  99. package/src/components/Grid/SimpleGrid.stories.mdx +0 -336
  100. package/src/components/Grid/SimpleGrid.test.tsx +0 -79
  101. package/src/components/Grid/SimpleGrid.tsx +0 -49
  102. package/src/components/Grid/__snapshots__/SimpleGrid.test.tsx.snap +0 -23
  103. package/src/components/Heading/Heading.stories.mdx +0 -187
  104. package/src/components/Heading/Heading.test.tsx +0 -171
  105. package/src/components/Heading/Heading.tsx +0 -104
  106. package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +0 -90
  107. package/src/components/HelperErrorText/HelperErrorText.stories.mdx +0 -172
  108. package/src/components/HelperErrorText/HelperErrorText.test.tsx +0 -114
  109. package/src/components/HelperErrorText/HelperErrorText.tsx +0 -62
  110. package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +0 -93
  111. package/src/components/Hero/Hero.stories.mdx +0 -378
  112. package/src/components/Hero/Hero.test.tsx +0 -611
  113. package/src/components/Hero/Hero.tsx +0 -203
  114. package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +0 -379
  115. package/src/components/HorizontalRule/HorizontalRule.stories.mdx +0 -73
  116. package/src/components/HorizontalRule/HorizontalRule.test.tsx +0 -54
  117. package/src/components/HorizontalRule/HorizontalRule.tsx +0 -27
  118. package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +0 -44
  119. package/src/components/Icons/Icon.stories.mdx +0 -413
  120. package/src/components/Icons/Icon.test.tsx +0 -120
  121. package/src/components/Icons/Icon.tsx +0 -187
  122. package/src/components/Icons/IconSvgs.tsx +0 -64
  123. package/src/components/Icons/__snapshots__/Icon.test.tsx.snap +0 -129
  124. package/src/components/Image/Image.stories.mdx +0 -332
  125. package/src/components/Image/Image.test.tsx +0 -155
  126. package/src/components/Image/Image.tsx +0 -171
  127. package/src/components/Image/__snapshots__/Image.test.tsx.snap +0 -269
  128. package/src/components/Label/Label.stories.mdx +0 -100
  129. package/src/components/Label/Label.test.tsx +0 -116
  130. package/src/components/Label/Label.tsx +0 -55
  131. package/src/components/Label/__snapshots__/Label.test.tsx.snap +0 -45
  132. package/src/components/Link/Link.stories.mdx +0 -249
  133. package/src/components/Link/Link.test.tsx +0 -224
  134. package/src/components/Link/Link.tsx +0 -178
  135. package/src/components/Link/__snapshots__/Link.test.tsx.snap +0 -286
  136. package/src/components/List/List.stories.mdx +0 -393
  137. package/src/components/List/List.test.tsx +0 -265
  138. package/src/components/List/List.tsx +0 -156
  139. package/src/components/List/__snapshots__/List.test.tsx.snap +0 -213
  140. package/src/components/Logo/Logo.stories.mdx +0 -295
  141. package/src/components/Logo/Logo.test.tsx +0 -116
  142. package/src/components/Logo/Logo.tsx +0 -151
  143. package/src/components/Logo/LogoSvgs.tsx +0 -90
  144. package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +0 -142
  145. package/src/components/Modal/Modal.stories.mdx +0 -294
  146. package/src/components/Modal/Modal.test.tsx +0 -157
  147. package/src/components/Modal/Modal.tsx +0 -154
  148. package/src/components/Modal/__snapshots__/Modal.test.tsx.snap +0 -25
  149. package/src/components/Notification/Notification.stories.mdx +0 -358
  150. package/src/components/Notification/Notification.test.tsx +0 -279
  151. package/src/components/Notification/Notification.tsx +0 -224
  152. package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +0 -525
  153. package/src/components/Pagination/Pagination.stories.mdx +0 -184
  154. package/src/components/Pagination/Pagination.test.tsx +0 -419
  155. package/src/components/Pagination/Pagination.tsx +0 -269
  156. package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +0 -544
  157. package/src/components/Placeholder/Placeholder.tsx +0 -19
  158. package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +0 -360
  159. package/src/components/ProgressIndicator/ProgressIndicator.test.tsx +0 -298
  160. package/src/components/ProgressIndicator/ProgressIndicator.tsx +0 -132
  161. package/src/components/ProgressIndicator/__snapshots__/ProgressIndicator.test.tsx.snap +0 -434
  162. package/src/components/Radio/Radio.stories.mdx +0 -216
  163. package/src/components/Radio/Radio.test.tsx +0 -247
  164. package/src/components/Radio/Radio.tsx +0 -119
  165. package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +0 -451
  166. package/src/components/RadioGroup/RadioGroup.stories.mdx +0 -479
  167. package/src/components/RadioGroup/RadioGroup.test.tsx +0 -471
  168. package/src/components/RadioGroup/RadioGroup.tsx +0 -171
  169. package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +0 -1550
  170. package/src/components/SearchBar/SearchBar.stories.mdx +0 -518
  171. package/src/components/SearchBar/SearchBar.test.tsx +0 -435
  172. package/src/components/SearchBar/SearchBar.tsx +0 -210
  173. package/src/components/SearchBar/__snapshots__/SearchBar.test.tsx.snap +0 -1049
  174. package/src/components/Select/Select.stories.mdx +0 -439
  175. package/src/components/Select/Select.test.tsx +0 -358
  176. package/src/components/Select/Select.tsx +0 -183
  177. package/src/components/Select/__snapshots__/Select.test.tsx.snap +0 -895
  178. package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +0 -142
  179. package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +0 -116
  180. package/src/components/SkeletonLoader/SkeletonLoader.tsx +0 -123
  181. package/src/components/SkeletonLoader/__snapshots__/SkeletonLoader.test.tsx.snap +0 -898
  182. package/src/components/SkipNavigation/SkipNavigation.stories.mdx +0 -90
  183. package/src/components/SkipNavigation/SkipNavigation.test.tsx +0 -63
  184. package/src/components/SkipNavigation/SkipNavigation.tsx +0 -51
  185. package/src/components/SkipNavigation/__snapshots__/SkipNavigation.test.tsx.snap +0 -130
  186. package/src/components/Slider/Slider.stories.mdx +0 -628
  187. package/src/components/Slider/Slider.test.tsx +0 -736
  188. package/src/components/Slider/Slider.tsx +0 -322
  189. package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +0 -2186
  190. package/src/components/StatusBadge/StatusBadge.stories.mdx +0 -109
  191. package/src/components/StatusBadge/StatusBadge.test.tsx +0 -70
  192. package/src/components/StatusBadge/StatusBadge.tsx +0 -35
  193. package/src/components/StatusBadge/__snapshots__/StatusBadge.test.tsx.snap +0 -47
  194. package/src/components/StructuredContent/StructuredContent.stories.mdx +0 -567
  195. package/src/components/StructuredContent/StructuredContent.test.tsx +0 -435
  196. package/src/components/StructuredContent/StructuredContent.tsx +0 -139
  197. package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +0 -368
  198. package/src/components/StyleGuide/Bidirectionality.stories.mdx +0 -206
  199. package/src/components/StyleGuide/Breakpoints.stories.mdx +0 -55
  200. package/src/components/StyleGuide/Buttons.stories.mdx +0 -194
  201. package/src/components/StyleGuide/ColorCard.tsx +0 -43
  202. package/src/components/StyleGuide/Colors.stories.mdx +0 -201
  203. package/src/components/StyleGuide/DesignTokens.stories.mdx +0 -193
  204. package/src/components/StyleGuide/Forms.stories.mdx +0 -94
  205. package/src/components/StyleGuide/Iconography.stories.mdx +0 -142
  206. package/src/components/StyleGuide/Spacing.stories.mdx +0 -116
  207. package/src/components/StyleGuide/Typography.stories.mdx +0 -419
  208. package/src/components/Table/Table.stories.mdx +0 -272
  209. package/src/components/Table/Table.test.tsx +0 -241
  210. package/src/components/Table/Table.tsx +0 -152
  211. package/src/components/Table/__snapshots__/Table.test.tsx.snap +0 -1703
  212. package/src/components/Tabs/Tabs.stories.mdx +0 -338
  213. package/src/components/Tabs/Tabs.test.tsx +0 -298
  214. package/src/components/Tabs/Tabs.tsx +0 -264
  215. package/src/components/Tabs/__snapshots__/Tabs.test.tsx.snap +0 -584
  216. package/src/components/Template/Template.stories.mdx +0 -695
  217. package/src/components/Template/Template.test.tsx +0 -309
  218. package/src/components/Template/Template.tsx +0 -326
  219. package/src/components/Template/__snapshots__/Template.test.tsx.snap +0 -342
  220. package/src/components/Text/Text.stories.mdx +0 -103
  221. package/src/components/Text/Text.test.tsx +0 -63
  222. package/src/components/Text/Text.tsx +0 -50
  223. package/src/components/Text/__snapshots__/Text.test.tsx.snap +0 -50
  224. package/src/components/TextInput/TextInput.stories.mdx +0 -268
  225. package/src/components/TextInput/TextInput.test.tsx +0 -451
  226. package/src/components/TextInput/TextInput.tsx +0 -240
  227. package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +0 -274
  228. package/src/components/Toggle/Toggle.stories.mdx +0 -237
  229. package/src/components/Toggle/Toggle.test.tsx +0 -170
  230. package/src/components/Toggle/Toggle.tsx +0 -128
  231. package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +0 -470
  232. package/src/components/VideoPlayer/VideoPlayer.stories.mdx +0 -212
  233. package/src/components/VideoPlayer/VideoPlayer.test.tsx +0 -308
  234. package/src/components/VideoPlayer/VideoPlayer.tsx +0 -188
  235. package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +0 -192
  236. package/src/docs/Chakra.stories.mdx +0 -563
  237. package/src/docs/Welcome.stories.mdx +0 -148
  238. package/src/helpers/types.ts +0 -1
  239. package/src/hooks/tests/useCarouselStyles.test.ts +0 -140
  240. package/src/hooks/tests/useNYPLTheme.test.tsx +0 -36
  241. package/src/hooks/useCarouselStyles.stories.mdx +0 -30
  242. package/src/hooks/useCarouselStyles.ts +0 -35
  243. package/src/hooks/useNYPLTheme.stories.mdx +0 -98
  244. package/src/hooks/useNYPLTheme.ts +0 -91
  245. package/src/hooks/useWindowSize.stories.mdx +0 -23
  246. package/src/hooks/useWindowSize.ts +0 -40
  247. package/src/index.ts +0 -136
  248. package/src/resources.scss +0 -6
  249. package/src/styles/base/_01-breakpoints.scss +0 -27
  250. package/src/styles/base/_02-mixins.scss +0 -103
  251. package/src/styles/base/_place-holder.scss +0 -33
  252. package/src/styles/space/_space-inline.scss +0 -79
  253. package/src/styles/space/_space-inset.scss +0 -57
  254. package/src/styles/space/_space-stack.scss +0 -116
  255. package/src/styles.scss +0 -23
  256. package/src/theme/components/accordion.ts +0 -25
  257. package/src/theme/components/breadcrumb.ts +0 -94
  258. package/src/theme/components/button.ts +0 -133
  259. package/src/theme/components/buttonGroup.ts +0 -10
  260. package/src/theme/components/card.ts +0 -237
  261. package/src/theme/components/checkbox.ts +0 -110
  262. package/src/theme/components/checkboxGroup.ts +0 -10
  263. package/src/theme/components/componentWrapper.ts +0 -14
  264. package/src/theme/components/customTable.ts +0 -77
  265. package/src/theme/components/datePicker.ts +0 -17
  266. package/src/theme/components/fieldset.ts +0 -23
  267. package/src/theme/components/global.ts +0 -91
  268. package/src/theme/components/globalMixins.ts +0 -24
  269. package/src/theme/components/heading.ts +0 -79
  270. package/src/theme/components/helperErrorText.ts +0 -14
  271. package/src/theme/components/hero.ts +0 -238
  272. package/src/theme/components/horizontalRule.ts +0 -17
  273. package/src/theme/components/icon.ts +0 -88
  274. package/src/theme/components/image.ts +0 -136
  275. package/src/theme/components/label.ts +0 -15
  276. package/src/theme/components/link.ts +0 -63
  277. package/src/theme/components/list.ts +0 -88
  278. package/src/theme/components/logo.ts +0 -58
  279. package/src/theme/components/notification.ts +0 -132
  280. package/src/theme/components/pagination.ts +0 -17
  281. package/src/theme/components/progressIndicator.ts +0 -67
  282. package/src/theme/components/radio.ts +0 -103
  283. package/src/theme/components/radioGroup.ts +0 -10
  284. package/src/theme/components/searchBar.ts +0 -19
  285. package/src/theme/components/select.ts +0 -72
  286. package/src/theme/components/skeletonLoader.ts +0 -113
  287. package/src/theme/components/skipNavigation.ts +0 -29
  288. package/src/theme/components/slider.ts +0 -95
  289. package/src/theme/components/statusBadge.ts +0 -26
  290. package/src/theme/components/structuredContent.ts +0 -149
  291. package/src/theme/components/tabs.ts +0 -109
  292. package/src/theme/components/template.ts +0 -114
  293. package/src/theme/components/text.ts +0 -38
  294. package/src/theme/components/textInput.ts +0 -65
  295. package/src/theme/components/toggle.ts +0 -109
  296. package/src/theme/components/videoPlayer.ts +0 -47
  297. package/src/theme/foundations/breakpoints.ts +0 -24
  298. package/src/theme/foundations/colors.ts +0 -212
  299. package/src/theme/foundations/global.ts +0 -43
  300. package/src/theme/foundations/radii.ts +0 -7
  301. package/src/theme/foundations/shadows.ts +0 -5
  302. package/src/theme/foundations/spacing.ts +0 -136
  303. package/src/theme/foundations/typography.ts +0 -107
  304. package/src/theme/index.ts +0 -131
  305. package/src/theme/provider.tsx +0 -9
  306. package/src/theme/types.ts +0 -1
  307. package/src/utils/componentCategories.ts +0 -152
  308. package/src/utils/interfaces.ts +0 -5
  309. package/src/utils/utils.ts +0 -84
@@ -1,140 +0,0 @@
1
- import { renderHook, act } from "@testing-library/react-hooks";
2
- import useCarouselStyles from "../useCarouselStyles";
3
-
4
- describe("useCarouselStyles hook", () => {
5
- it("returns two functions and a CSS style object", () => {
6
- const { result } = renderHook(() => useCarouselStyles());
7
-
8
- expect(typeof result.current.nextSlide).toEqual("function");
9
- expect(typeof result.current.prevSlide).toEqual("function");
10
- expect(result.current.carouselStyle).toEqual({
11
- marginLeft: "-0%",
12
- transition: "all .5s",
13
- });
14
- });
15
-
16
- it("updates the style object when the nextSlide function is clicked", () => {
17
- // Mocking we have an array of five slides.
18
- const slides = [1, 2, 3, 4, 5];
19
- const { result } = renderHook(() => useCarouselStyles(slides.length));
20
- const nextSlide = result.current.nextSlide;
21
-
22
- // Start at the first slide.
23
- expect(result.current.carouselStyle).toEqual({
24
- marginLeft: "-0%",
25
- transition: "all .5s",
26
- });
27
-
28
- act(() => nextSlide());
29
- // Each slide takes up a width of 100% by default.
30
- // So now we move by 100% to the left for the next slide.
31
- expect(result.current.carouselStyle).toEqual({
32
- marginLeft: "-100%",
33
- transition: "all .5s",
34
- });
35
-
36
- act(() => nextSlide());
37
- // Move on to the next slide.
38
- expect(result.current.carouselStyle).toEqual({
39
- marginLeft: "-200%",
40
- transition: "all .5s",
41
- });
42
-
43
- // We now click through all five slides and we expect to wrap around
44
- // back to the first slide which starts at "-0%" (the negative value
45
- // is set for direction but -0 is still 0).
46
- act(() => nextSlide());
47
- act(() => nextSlide());
48
- act(() => nextSlide());
49
- expect(result.current.carouselStyle).toEqual({
50
- marginLeft: "-0%",
51
- transition: "all .5s",
52
- });
53
- });
54
-
55
- it("updates the style object when the prevSlide function is clicked", () => {
56
- // Mocking we have an array of five slides.
57
- const slides = [1, 2, 3, 4, 5];
58
- const { result } = renderHook(() => useCarouselStyles(slides.length));
59
- const prevSlide = result.current.prevSlide;
60
-
61
- // Start at the first slide.
62
- expect(result.current.carouselStyle).toEqual({
63
- marginLeft: "-0%",
64
- transition: "all .5s",
65
- });
66
-
67
- act(() => prevSlide());
68
- // We started on the first slide and nwo we expect to wrap around
69
- // to the last element.
70
- expect(result.current.carouselStyle).toEqual({
71
- marginLeft: "-400%",
72
- transition: "all .5s",
73
- });
74
-
75
- act(() => prevSlide());
76
- // Move on to the previous slide.
77
- expect(result.current.carouselStyle).toEqual({
78
- marginLeft: "-300%",
79
- transition: "all .5s",
80
- });
81
-
82
- // We now clicked through all five slides and we expect to
83
- // be at the first slide.
84
- act(() => prevSlide());
85
- act(() => prevSlide());
86
- act(() => prevSlide());
87
- expect(result.current.carouselStyle).toEqual({
88
- marginLeft: "-0%",
89
- transition: "all .5s",
90
- });
91
- });
92
-
93
- it("resets the slide back to the first slide", () => {
94
- // Mocking we have an array of five slides.
95
- const slides = [1, 2, 3, 4, 5];
96
- const { result } = renderHook(() => useCarouselStyles(slides.length));
97
- const { nextSlide, goToStart } = result.current;
98
-
99
- // Start at the first slide.
100
- expect(result.current.carouselStyle).toEqual({
101
- marginLeft: "-0%",
102
- transition: "all .5s",
103
- });
104
-
105
- // Move on to the third slide.
106
- act(() => nextSlide());
107
- act(() => nextSlide());
108
- act(() => nextSlide());
109
- expect(result.current.carouselStyle).toEqual({
110
- marginLeft: "-300%",
111
- transition: "all .5s",
112
- });
113
-
114
- act(() => goToStart());
115
- expect(result.current.carouselStyle).toEqual({
116
- marginLeft: "-0%",
117
- transition: "all .5s",
118
- });
119
- });
120
-
121
- it("can set a custom slide count and slide width", () => {
122
- const slides = [1, 2, 3];
123
- const slideWidth = 50;
124
- const { result } = renderHook(() =>
125
- useCarouselStyles(slides.length, slideWidth)
126
- );
127
-
128
- expect(result.current.carouselStyle).toEqual({
129
- marginLeft: "-0%",
130
- transition: "all .5s",
131
- });
132
-
133
- act(() => result.current.nextSlide());
134
- // Since each slide is of length 50, we expect to move by a 50%.
135
- expect(result.current.carouselStyle).toEqual({
136
- marginLeft: "-50%",
137
- transition: "all .5s",
138
- });
139
- });
140
- });
@@ -1,36 +0,0 @@
1
- import React from "react";
2
- import { renderHook } from "@testing-library/react-hooks";
3
-
4
- import useNYPLTheme from "../useNYPLTheme";
5
- import DSProvider from "../../theme/provider";
6
-
7
- describe("useNYPLTheme", () => {
8
- it("returns an empty object when not used inside a DSProvider component", () => {
9
- const warn = jest.spyOn(console, "warn");
10
- const { result } = renderHook(() => useNYPLTheme());
11
-
12
- expect(warn).toHaveBeenCalledWith(
13
- "NYPL Reservoir useNYPLTheme: hook must be used inside of `<DSProvider />`."
14
- );
15
- expect(result.current).toEqual({});
16
- });
17
-
18
- it("returns an object with NYPL styles", () => {
19
- const { result } = renderHook(() => useNYPLTheme(), {
20
- wrapper: ({ children }) => <DSProvider>{children}</DSProvider>,
21
- });
22
- const allKeys = Object.keys(result.current);
23
- const colorsKeys = Object.keys((result.current as any).colors);
24
-
25
- expect(allKeys).toEqual([
26
- "breakpoints",
27
- "colors",
28
- "fontSizes",
29
- "fontWeights",
30
- "fonts",
31
- "radii",
32
- "space",
33
- ]);
34
- expect(colorsKeys).toEqual(["brand", "section", "transparent", "ui"]);
35
- });
36
- });
@@ -1,30 +0,0 @@
1
- import { Meta, Description } from "@storybook/addon-docs";
2
-
3
- import { getCategory } from "../utils/componentCategories";
4
-
5
- <Meta title={getCategory("useCarouselStyles")} />
6
-
7
- # useCarouselStyles
8
-
9
- | Hook Version | DS Version |
10
- | ------------ | ---------- |
11
- | Added | `0.25.2` |
12
- | Latest | `0.25.2` |
13
-
14
- This custom hook, inspired by this [codesandbox example](https://codesandbox.io/s/fxjeo),
15
- exposes functions used for carousel-like components that have sliding features.
16
- The two main functions are `prevSlide` and `nextSlide` used for buttons to
17
- navigate between slides, and a `carouselStyle` style object for the main wrapper
18
- element. If the carousel should programmatically slide to the first slide, use
19
- the `goToStart` function.
20
-
21
- ## Usage
22
-
23
- For a full implementation examle, view the [`Tabs` component](https://github.com/NYPL/nypl-design-system/blob/development/src/components/Tabs/Tabs.tsx).
24
-
25
- ```tsx
26
- const { prevSlide, nextSlide, carouselStyle, goToStart } = useCarouselStyles(
27
- slidesCount,
28
- slideWidth
29
- );
30
- ```
@@ -1,35 +0,0 @@
1
- import React from "react";
2
-
3
- /**
4
- * Custom hook that controls the sliding function for the carousel wrapper.
5
- * This returns functions to use for the "previous" and "next" buttons as well
6
- * as a CSS style object that should be use to transition between slides. There
7
- * is also a function to programmatically slide to the first slide.
8
- * Inspired by: https://codesandbox.io/s/fxjeo
9
- */
10
- export const useCarouselStyles = (slidesCount = 0, slideWidth = 100) => {
11
- const [currentSlide, setCurrentSlide] = React.useState(0);
12
- // This wraps around to the last slide if this is invoked while the
13
- // first slide is active.
14
- const prevSlide = () => {
15
- setCurrentSlide((slide) => (slide === 0 ? slidesCount - 1 : slide - 1));
16
- };
17
- // This wraps around to the first slide if this is invoked while the
18
- // last slide is active.
19
- const nextSlide = () => {
20
- setCurrentSlide((slide) => (slide === slidesCount - 1 ? 0 : slide + 1));
21
- };
22
- const goToStart = () => {
23
- setCurrentSlide(0);
24
- };
25
- // Updates the left margin for the carousel so the elements can
26
- // slide inside the container.
27
- const carouselStyle = {
28
- transition: "all .5s",
29
- marginLeft: `-${currentSlide * slideWidth}%`,
30
- };
31
-
32
- return { prevSlide, nextSlide, carouselStyle, goToStart };
33
- };
34
-
35
- export default useCarouselStyles;
@@ -1,98 +0,0 @@
1
- import { Meta } from "@storybook/addon-docs";
2
- import { getCategory } from "../utils/componentCategories";
3
-
4
- <Meta title={getCategory("useNYPLTheme")} />
5
-
6
- # useNYPLTheme
7
-
8
- | Hook Version | DS Version |
9
- | ------------ | ---------- |
10
- | Added | `0.25.2` |
11
- | Latest | `0.25.2` |
12
-
13
- This custom hook is based on Chakra UI's `useTheme` hook. If your application
14
- does not use CSS or SCSS files and you want to write CSS-in-JS styles in your
15
- React components, the `useNYPLTheme` hook will provide you with NYPL-specific
16
- style values.
17
-
18
- ## Usage
19
-
20
- This hook depends on the `DSProvider` component and if the function is used
21
- outside of this wrapper component, then the theme object will be empty. After
22
- importing and rendering the `DSProvider` wrapper component, your children
23
- components can use this hook function.
24
-
25
- ```tsx
26
- import { useNYPLTheme } from "@nypl/design-system-react-components";
27
- // ...
28
-
29
- const theme = useNYPLTheme();
30
- ```
31
-
32
- The `theme` variable will be a JS object with design token style values.
33
- This will allow you to use NYPL-specific styles in your components through CSS-in-JS.
34
-
35
- ```ts
36
- // theme:
37
- {
38
- breakpoints: { ... },
39
- colors: {
40
- brand: { ... },
41
- section: { ... },
42
- transparent: { ... },
43
- ui: { ... },
44
- },
45
- fontSizes: { ... },
46
- fontWeights: { ... },
47
- fonts: { ... },
48
- radii: { ... },
49
- space: { ... },
50
- }
51
- ```
52
-
53
- 1. NYPL DS Components
54
-
55
- All DS components _should_ be used with their current styles. If a DS component
56
- needs an updated style, first contact the Design System and UX teams about this
57
- update. If you really _need_ to update a style and there is no available
58
- variant, then you can add styles directly as style prop.
59
-
60
- For example, if the `Heading` component should render the text in NYPL's green
61
- color used for "success primary" and add a bold font weight, then you can do
62
- the following:
63
-
64
- ```tsx
65
- const theme = useNYPLTheme();
66
-
67
- // ...
68
- return (
69
- <div>
70
- <Heading
71
- level={2}
72
- color={theme.colors.ui.success.primary}
73
- fontWeight={theme.fontWeights.bold}
74
- >
75
- Get a Digital Library Card Today in a Few Easy Steps
76
- </Heading>
77
-
78
- {/* Other components */}
79
- </div>
80
- );
81
- ```
82
-
83
- Of course, you can destructure the `theme` object to only get the object keys
84
- you need for your component (this is a general example). Log the object to the
85
- console to see all the available styles.
86
-
87
- 2. HTML Components
88
-
89
- Use the `style` attribute in HTML components to add inline styles.
90
-
91
- ```tsx
92
- <p style={{ color: theme.colors.ui.success.primary }}>
93
- If you are 13 or older and live, work, attend school, or pay property taxes in
94
- New York State, you can get a free digital library card right now using this
95
- online form. Visitors to New York State can also use this form to apply for a
96
- temporary card.
97
- </p>
98
- ```
@@ -1,91 +0,0 @@
1
- import { useTheme } from "@chakra-ui/react";
2
-
3
- /**
4
- * A custom hook that returns the Chakra-based NYPL theme object. This must be
5
- * used inside a component that is wrapped in the `DSProvider` component, so
6
- * that the theme object can be available to use.
7
- */
8
- function useNYPLTheme() {
9
- const theme = useTheme();
10
- if (!theme || Object.keys(theme).length === 0) {
11
- console.warn(
12
- "NYPL Reservoir useNYPLTheme: hook must be used inside of `<DSProvider />`."
13
- );
14
- return {};
15
- }
16
-
17
- // Chakra provides a lot of their own styles but
18
- // only NYPL styles should be exported.
19
- return {
20
- // base, sm, md, lg, xl, 2xl
21
- breakpoints: theme.breakpoints,
22
- colors: {
23
- // primary, secondary
24
- brand: theme.colors.brand,
25
- // blogs, books-and-more, education, locations,
26
- // research, research-library, whats-on
27
- section: theme.colors.section,
28
- transparent: theme.colors.transparent,
29
- // black, disabled, error, focus, gray, link,
30
- // status, success, test, warning, white
31
- ui: theme.colors.ui,
32
- },
33
- fontSizes: {
34
- "-3": theme.fontSizes["-3"],
35
- "-2": theme.fontSizes["-2"],
36
- "-1": theme.fontSizes["-1"],
37
- "0": theme.fontSizes["0"],
38
- "1": theme.fontSizes["1"],
39
- "2": theme.fontSizes["2"],
40
- "3": theme.fontSizes["3"],
41
- "4": theme.fontSizes["4"],
42
- // default
43
- breadcrumbs: theme.fontSizes.breadcrumbs,
44
- // default
45
- button: theme.fontSizes.button,
46
- // primary, secondary, tertiary, callout
47
- heading: theme.fontSizes.heading,
48
- // default
49
- helper: theme.fontSizes.helper,
50
- // default, secondary
51
- label: theme.fontSizes.label,
52
- // default, caption, tag, mini
53
- text: theme.fontSizes.text,
54
- },
55
- fontWeights: {
56
- light: theme.fontWeights.light,
57
- regular: theme.fontWeights.regular,
58
- medium: theme.fontWeights.medium,
59
- bold: theme.fontWeights.bold,
60
- // default, lastChild
61
- breadcrumbs: theme.fontWeights.breadcrumbs,
62
- // default
63
- button: theme.fontWeights.button,
64
- // primary, secondary, tertiary, callout
65
- heading: theme.fontWeights.heading,
66
- // default
67
- helper: theme.fontWeights.helper,
68
- // default
69
- label: theme.fontWeights.label,
70
- // default, caption, tag, mini
71
- text: theme.fontWeights.text,
72
- },
73
- fonts: {
74
- body: theme.fonts.body,
75
- heading: theme.fonts.heading,
76
- },
77
- radii: theme.radii,
78
- space: {
79
- xxs: theme.space.xxs,
80
- xs: theme.space.xs,
81
- s: theme.space.s,
82
- m: theme.space.m,
83
- l: theme.space.l,
84
- xl: theme.space.xl,
85
- xxl: theme.space.xxl,
86
- xxxl: theme.space.xxxl,
87
- },
88
- };
89
- }
90
-
91
- export default useNYPLTheme;
@@ -1,23 +0,0 @@
1
- import { Meta } from "@storybook/addon-docs";
2
- import { getCategory } from "../utils/componentCategories";
3
-
4
- <Meta title={getCategory("useWindowSize")} />
5
-
6
- # useWindowSize
7
-
8
- | Hook Version | DS Version |
9
- | ------------ | ---------- |
10
- | Added | `0.25.2` |
11
- | Latest | `0.25.2` |
12
-
13
- This hook is based on [Typescript hooks](https://usehooks-typescript.com/react-hook/use-window-size).
14
- It returns an object with `width` and `height` properties that can be used to
15
- update a component's UI based on the size of the browser window.
16
-
17
- ## Usage
18
-
19
- For an example implementation, view the [`Tabs` component](https://github.com/NYPL/nypl-design-system/blob/development/src/components/Tabs/Tabs.tsx).
20
-
21
- ```tsx
22
- const { height, width } = useWindowSize();
23
- ```
@@ -1,40 +0,0 @@
1
- import React from "react";
2
-
3
- interface WindowSize {
4
- width: number;
5
- height: number;
6
- }
7
-
8
- /**
9
- * React hook used to get the window size on device resizing.
10
- * Based on https://usehooks-typescript.com/react-hook/use-window-size
11
- */
12
- function useWindowSize(): WindowSize {
13
- const [windowSize, setWindowSize] = React.useState<WindowSize>({
14
- width: 0,
15
- height: 0,
16
- });
17
-
18
- React.useEffect(() => {
19
- const handler = () => {
20
- setWindowSize({
21
- width: window.innerWidth,
22
- height: window.innerHeight,
23
- });
24
- };
25
-
26
- // Set size at the first client-side load
27
- handler();
28
-
29
- window.addEventListener("resize", handler);
30
-
31
- // Remove event listener on cleanup
32
- return () => {
33
- window.removeEventListener("resize", handler);
34
- };
35
- }, []);
36
-
37
- return windowSize;
38
- }
39
-
40
- export default useWindowSize;
package/src/index.ts DELETED
@@ -1,136 +0,0 @@
1
- import "./styles.scss";
2
-
3
- // Note that the NYPL Design System directly re-exports the following
4
- // components for usage in consuming applications.
5
- export {
6
- Box,
7
- Center,
8
- Circle,
9
- Flex,
10
- Grid,
11
- GridItem,
12
- HStack,
13
- Spacer,
14
- Square,
15
- Stack,
16
- VStack,
17
- } from "@chakra-ui/react";
18
- export {
19
- default as Accordion,
20
- AccordionTypes,
21
- } from "./components/Accordion/Accordion";
22
- export {
23
- default as Breadcrumbs,
24
- BreadcrumbsTypes,
25
- } from "./components/Breadcrumbs/Breadcrumbs";
26
- export { default as Button, ButtonTypes } from "./components/Button/Button";
27
- export { default as ButtonGroup } from "./components/ButtonGroup/ButtonGroup";
28
- export {
29
- default as Card,
30
- CardActions,
31
- CardContent,
32
- CardHeading,
33
- } from "./components/Card/Card";
34
- export { default as Checkbox } from "./components/Checkbox/Checkbox";
35
- export { default as CheckboxGroup } from "./components/CheckboxGroup/CheckboxGroup";
36
- export {
37
- default as DatePicker,
38
- DatePickerTypes,
39
- FullDateType,
40
- } from "./components/DatePicker/DatePicker";
41
- export { default as DSProvider } from "./theme/provider";
42
- export { default as Fieldset } from "./components/Fieldset/Fieldset";
43
- export { default as Form, FormField, FormRow } from "./components/Form/Form";
44
- export {
45
- default as Heading,
46
- HeadingSizes,
47
- HeadingLevels,
48
- } from "./components/Heading/Heading";
49
- export { default as HelperErrorText } from "./components/HelperErrorText/HelperErrorText";
50
- export { default as Hero, HeroTypes } from "./components/Hero/Hero";
51
- export { default as HorizontalRule } from "./components/HorizontalRule/HorizontalRule";
52
- export {
53
- default as Icon,
54
- IconAlign,
55
- IconColors,
56
- IconNames,
57
- IconRotationTypes,
58
- IconSizes,
59
- IconTypes,
60
- } from "./components/Icons/Icon";
61
- export {
62
- default as Image,
63
- ImageRatios,
64
- ImageSizes,
65
- ImageTypes,
66
- } from "./components/Image/Image";
67
- export { default as Label } from "./components/Label/Label";
68
- export { LayoutTypes } from "./helpers/types";
69
- export { default as Link, LinkTypes } from "./components/Link/Link";
70
- export { default as List, ListTypes } from "./components/List/List";
71
- export { default as Logo, LogoNames, LogoSizes } from "./components/Logo/Logo";
72
- export { ModalTrigger, useModal } from "./components/Modal/Modal";
73
- export {
74
- default as Notification,
75
- NotificationTypes,
76
- } from "./components/Notification/Notification";
77
- export { default as Pagination } from "./components/Pagination/Pagination";
78
- export {
79
- default as ProgressIndicator,
80
- ProgressIndicatorSizes,
81
- ProgressIndicatorTypes,
82
- } from "./components/ProgressIndicator/ProgressIndicator";
83
- export { default as Radio } from "./components/Radio/Radio";
84
- export { default as RadioGroup } from "./components/RadioGroup/RadioGroup";
85
- export { default as SearchBar } from "./components/SearchBar/SearchBar";
86
- export { default as Select, LabelPositions } from "./components/Select/Select";
87
- export { default as SimpleGrid, GridGaps } from "./components/Grid/SimpleGrid";
88
- export {
89
- default as SkeletonLoader,
90
- SkeletonLoaderImageRatios,
91
- } from "./components/SkeletonLoader/SkeletonLoader";
92
- export { default as SkipNavigation } from "./components/SkipNavigation/SkipNavigation";
93
- export { default as Slider } from "./components/Slider/Slider";
94
- export {
95
- default as StatusBadge,
96
- StatusBadgeTypes,
97
- } from "./components/StatusBadge/StatusBadge";
98
- export {
99
- default as StructuredContent,
100
- StructuredContentImagePosition,
101
- } from "./components/StructuredContent/StructuredContent";
102
- export {
103
- default as Tabs,
104
- TabList,
105
- Tab,
106
- TabPanels,
107
- TabPanel,
108
- } from "./components/Tabs/Tabs";
109
- export {
110
- TemplateAppContainer,
111
- Template,
112
- TemplateAboveHeader,
113
- TemplateHeader,
114
- TemplateBreakout,
115
- TemplateContent,
116
- TemplateContentTop,
117
- TemplateContentPrimary,
118
- TemplateContentSidebar,
119
- TemplateFooter,
120
- } from "./components/Template/Template";
121
- export { default as Text, TextSizes } from "./components/Text/Text";
122
- export {
123
- default as TextInput,
124
- TextInputRefType,
125
- TextInputTypes,
126
- } from "./components/TextInput/TextInput";
127
- export { default as Toggle, ToggleSizes } from "./components/Toggle/Toggle";
128
- export { default as useCarouselStyles } from "./hooks/useCarouselStyles";
129
- export { default as useNYPLTheme } from "./hooks/useNYPLTheme";
130
- export { default as useWindowSize } from "./hooks/useWindowSize";
131
- export {
132
- default as VideoPlayer,
133
- VideoPlayerAspectRatios,
134
- VideoPlayerTypes,
135
- } from "./components/VideoPlayer/VideoPlayer";
136
- export { default as Table } from "./components/Table/Table";
@@ -1,6 +0,0 @@
1
- // Resources to export as sass mixins
2
- @import "./styles/base/01-breakpoints";
3
- @import "./styles/base/02-mixins";
4
- @import "./styles/space/space-inline";
5
- @import "./styles/space/space-inset";
6
- @import "./styles/space/space-stack";
@@ -1,27 +0,0 @@
1
- /**
2
- * Breakpoint Configuration
3
- * @see https://github.com/Team-Sass/breakpoint/wiki
4
- */
5
-
6
- // Global Breakpoints
7
-
8
- // Avoid using in favor of atomic, content-specific, breakpoints.
9
- // These should be used for generic code, like layouts and typography, only.
10
- // The CSS variables and the Sass variables below need to stay in sync.
11
- // Sass' breakpoint() mixin doesn't work without Sass variables.
12
- // CSS variables expose the breakpoint variables to consumers.
13
- :root {
14
- --nypl-breakpoint-small: 320px;
15
- --nypl-breakpoint-medium: 600px;
16
- --nypl-breakpoint-large: 960px;
17
- --nypl-breakpoint-xl: 1280px;
18
- }
19
-
20
- $nypl-breakpoint-small: 320px;
21
- $nypl-breakpoint-medium: 600px;
22
- $nypl-breakpoint-large: 960px;
23
- $nypl-breakpoint-xl: 1280px;
24
- // The max-width breakpoint is used when the design should be applied at
25
- // whatever the largest breakpoint is regardless of actual pixel value,
26
- // e.g. removing outer margin on body wrapper.
27
- $nypl-max-width: $nypl-breakpoint-xl;