@nypl/design-system-react-components 1.0.0 → 1.0.3-beta

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 (296) hide show
  1. package/README.md +3 -5
  2. package/dist/components/Checkbox/Checkbox.d.ts +0 -1
  3. package/dist/components/ComponentWrapper/ComponentWrapper.d.ts +8 -0
  4. package/dist/components/Heading/Heading.d.ts +2 -0
  5. package/dist/components/Logo/Logo.d.ts +1 -1
  6. package/dist/components/Logo/LogoSvgs.d.ts +4 -0
  7. package/dist/components/Slider/Slider.d.ts +1 -2
  8. package/dist/components/TextInput/TextInput.d.ts +2 -1
  9. package/dist/design-system-react-components.cjs.development.js +1038 -674
  10. package/dist/design-system-react-components.cjs.development.js.map +1 -1
  11. package/dist/design-system-react-components.cjs.production.min.js +1 -1
  12. package/dist/design-system-react-components.cjs.production.min.js.map +1 -1
  13. package/dist/design-system-react-components.esm.js +1039 -675
  14. package/dist/design-system-react-components.esm.js.map +1 -1
  15. package/dist/hooks/{tests → __tests__}/useCarouselStyles.test.d.ts +0 -0
  16. package/dist/theme/components/button.d.ts +1 -0
  17. package/dist/theme/components/card.d.ts +98 -13
  18. package/dist/theme/components/checkboxGroup.d.ts +1 -1
  19. package/dist/theme/components/global.d.ts +2 -2
  20. package/dist/theme/components/heading.d.ts +4 -16
  21. package/dist/theme/components/image.d.ts +6 -0
  22. package/dist/theme/components/radio.d.ts +8 -0
  23. package/dist/theme/components/radioGroup.d.ts +1 -1
  24. package/dist/theme/components/skipNavigation.d.ts +3 -0
  25. package/dist/theme/components/structuredContent.d.ts +0 -5
  26. package/dist/theme/components/template.d.ts +4 -1
  27. package/dist/utils/utils.d.ts +15 -0
  28. package/package.json +6 -7
  29. package/CHANGELOG.md +0 -1399
  30. package/src/__tests__/fileMock.ts +0 -6
  31. package/src/__tests__/setup.ts +0 -27
  32. package/src/__tests__/utils/utils.test.ts +0 -18
  33. package/src/components/AccessibilityGuide/SkipNavigation.stories.mdx +0 -42
  34. package/src/components/Accordion/Accordion.stories.mdx +0 -361
  35. package/src/components/Accordion/Accordion.test.tsx +0 -237
  36. package/src/components/Accordion/Accordion.tsx +0 -136
  37. package/src/components/Accordion/__snapshots__/Accordion.test.tsx.snap +0 -734
  38. package/src/components/Autosuggest/Autosuggest.stories.mdx +0 -75
  39. package/src/components/Autosuggest/Autosuggest.stories.tsx +0 -211
  40. package/src/components/Autosuggest/_Autosuggest.scss +0 -51
  41. package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +0 -231
  42. package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +0 -144
  43. package/src/components/Breadcrumbs/Breadcrumbs.tsx +0 -98
  44. package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +0 -695
  45. package/src/components/Button/Button.stories.mdx +0 -320
  46. package/src/components/Button/Button.test.tsx +0 -184
  47. package/src/components/Button/Button.tsx +0 -95
  48. package/src/components/Button/__snapshots__/Button.test.tsx.snap +0 -106
  49. package/src/components/ButtonGroup/ButtonGroup.stories.mdx +0 -147
  50. package/src/components/ButtonGroup/ButtonGroup.test.tsx +0 -141
  51. package/src/components/ButtonGroup/ButtonGroup.tsx +0 -99
  52. package/src/components/ButtonGroup/__snapshots__/ButtonGroup.test.tsx.snap +0 -117
  53. package/src/components/Card/Card.stories.mdx +0 -1043
  54. package/src/components/Card/Card.test.tsx +0 -388
  55. package/src/components/Card/Card.tsx +0 -345
  56. package/src/components/Card/__snapshots__/Card.test.tsx.snap +0 -568
  57. package/src/components/Chakra/Box.stories.mdx +0 -52
  58. package/src/components/Chakra/Center.stories.mdx +0 -96
  59. package/src/components/Chakra/Flex.stories.mdx +0 -111
  60. package/src/components/Chakra/Grid.stories.mdx +0 -89
  61. package/src/components/Chakra/Stack.stories.mdx +0 -109
  62. package/src/components/Checkbox/Checkbox.stories.mdx +0 -243
  63. package/src/components/Checkbox/Checkbox.test.tsx +0 -319
  64. package/src/components/Checkbox/Checkbox.tsx +0 -166
  65. package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +0 -616
  66. package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +0 -462
  67. package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +0 -492
  68. package/src/components/CheckboxGroup/CheckboxGroup.tsx +0 -173
  69. package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +0 -1722
  70. package/src/components/ComponentWrapper/ComponentWrapper.test.tsx +0 -163
  71. package/src/components/ComponentWrapper/ComponentWrapper.tsx +0 -67
  72. package/src/components/ComponentWrapper/__snapshots__/ComponentWrapper.test.tsx.snap +0 -98
  73. package/src/components/DatePicker/DatePicker.stories.mdx +0 -452
  74. package/src/components/DatePicker/DatePicker.test.tsx +0 -940
  75. package/src/components/DatePicker/DatePicker.tsx +0 -450
  76. package/src/components/DatePicker/_DatePicker.scss +0 -100
  77. package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +0 -889
  78. package/src/components/Fieldset/Fieldset.stories.mdx +0 -96
  79. package/src/components/Fieldset/Fieldset.test.tsx +0 -155
  80. package/src/components/Fieldset/Fieldset.tsx +0 -55
  81. package/src/components/Fieldset/__snapshots__/Fieldset.test.tsx.snap +0 -89
  82. package/src/components/Form/Form.stories.mdx +0 -426
  83. package/src/components/Form/Form.test.tsx +0 -234
  84. package/src/components/Form/Form.tsx +0 -124
  85. package/src/components/Form/__snapshots__/Form.test.tsx.snap +0 -115
  86. package/src/components/Grid/SimpleGrid.stories.mdx +0 -338
  87. package/src/components/Grid/SimpleGrid.test.tsx +0 -79
  88. package/src/components/Grid/SimpleGrid.tsx +0 -49
  89. package/src/components/Grid/__snapshots__/SimpleGrid.test.tsx.snap +0 -23
  90. package/src/components/Heading/Heading.stories.mdx +0 -184
  91. package/src/components/Heading/Heading.test.tsx +0 -171
  92. package/src/components/Heading/Heading.tsx +0 -101
  93. package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +0 -90
  94. package/src/components/HelperErrorText/HelperErrorText.stories.mdx +0 -172
  95. package/src/components/HelperErrorText/HelperErrorText.test.tsx +0 -114
  96. package/src/components/HelperErrorText/HelperErrorText.tsx +0 -62
  97. package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +0 -93
  98. package/src/components/Hero/Hero.stories.mdx +0 -378
  99. package/src/components/Hero/Hero.test.tsx +0 -611
  100. package/src/components/Hero/Hero.tsx +0 -203
  101. package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +0 -379
  102. package/src/components/HorizontalRule/HorizontalRule.stories.mdx +0 -73
  103. package/src/components/HorizontalRule/HorizontalRule.test.tsx +0 -54
  104. package/src/components/HorizontalRule/HorizontalRule.tsx +0 -27
  105. package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +0 -44
  106. package/src/components/Icons/Icon.stories.mdx +0 -413
  107. package/src/components/Icons/Icon.test.tsx +0 -120
  108. package/src/components/Icons/Icon.tsx +0 -187
  109. package/src/components/Icons/IconSvgs.tsx +0 -64
  110. package/src/components/Icons/__snapshots__/Icon.test.tsx.snap +0 -129
  111. package/src/components/Image/Image.stories.mdx +0 -332
  112. package/src/components/Image/Image.test.tsx +0 -155
  113. package/src/components/Image/Image.tsx +0 -171
  114. package/src/components/Image/__snapshots__/Image.test.tsx.snap +0 -269
  115. package/src/components/Label/Label.stories.mdx +0 -100
  116. package/src/components/Label/Label.test.tsx +0 -116
  117. package/src/components/Label/Label.tsx +0 -55
  118. package/src/components/Label/__snapshots__/Label.test.tsx.snap +0 -45
  119. package/src/components/Link/Link.stories.mdx +0 -249
  120. package/src/components/Link/Link.test.tsx +0 -224
  121. package/src/components/Link/Link.tsx +0 -178
  122. package/src/components/Link/__snapshots__/Link.test.tsx.snap +0 -286
  123. package/src/components/List/List.stories.mdx +0 -393
  124. package/src/components/List/List.test.tsx +0 -265
  125. package/src/components/List/List.tsx +0 -156
  126. package/src/components/List/__snapshots__/List.test.tsx.snap +0 -213
  127. package/src/components/Logo/Logo.stories.mdx +0 -290
  128. package/src/components/Logo/Logo.test.tsx +0 -116
  129. package/src/components/Logo/Logo.tsx +0 -147
  130. package/src/components/Logo/LogoSvgs.tsx +0 -82
  131. package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +0 -142
  132. package/src/components/Modal/Modal.stories.mdx +0 -301
  133. package/src/components/Modal/Modal.test.tsx +0 -157
  134. package/src/components/Modal/Modal.tsx +0 -154
  135. package/src/components/Modal/__snapshots__/Modal.test.tsx.snap +0 -25
  136. package/src/components/Notification/Notification.stories.mdx +0 -358
  137. package/src/components/Notification/Notification.test.tsx +0 -279
  138. package/src/components/Notification/Notification.tsx +0 -224
  139. package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +0 -525
  140. package/src/components/Pagination/Pagination.stories.mdx +0 -184
  141. package/src/components/Pagination/Pagination.test.tsx +0 -419
  142. package/src/components/Pagination/Pagination.tsx +0 -269
  143. package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +0 -544
  144. package/src/components/Placeholder/Placeholder.tsx +0 -19
  145. package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +0 -360
  146. package/src/components/ProgressIndicator/ProgressIndicator.test.tsx +0 -298
  147. package/src/components/ProgressIndicator/ProgressIndicator.tsx +0 -132
  148. package/src/components/ProgressIndicator/__snapshots__/ProgressIndicator.test.tsx.snap +0 -434
  149. package/src/components/Radio/Radio.stories.mdx +0 -216
  150. package/src/components/Radio/Radio.test.tsx +0 -247
  151. package/src/components/Radio/Radio.tsx +0 -128
  152. package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +0 -411
  153. package/src/components/RadioGroup/RadioGroup.stories.mdx +0 -478
  154. package/src/components/RadioGroup/RadioGroup.test.tsx +0 -471
  155. package/src/components/RadioGroup/RadioGroup.tsx +0 -170
  156. package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +0 -1430
  157. package/src/components/SearchBar/SearchBar.stories.mdx +0 -518
  158. package/src/components/SearchBar/SearchBar.test.tsx +0 -435
  159. package/src/components/SearchBar/SearchBar.tsx +0 -210
  160. package/src/components/SearchBar/__snapshots__/SearchBar.test.tsx.snap +0 -1027
  161. package/src/components/Select/Select.stories.mdx +0 -439
  162. package/src/components/Select/Select.test.tsx +0 -358
  163. package/src/components/Select/Select.tsx +0 -181
  164. package/src/components/Select/__snapshots__/Select.test.tsx.snap +0 -885
  165. package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +0 -142
  166. package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +0 -116
  167. package/src/components/SkeletonLoader/SkeletonLoader.tsx +0 -123
  168. package/src/components/SkeletonLoader/__snapshots__/SkeletonLoader.test.tsx.snap +0 -898
  169. package/src/components/SkipNavigation/SkipNavigation.stories.mdx +0 -90
  170. package/src/components/SkipNavigation/SkipNavigation.test.tsx +0 -63
  171. package/src/components/SkipNavigation/SkipNavigation.tsx +0 -51
  172. package/src/components/SkipNavigation/__snapshots__/SkipNavigation.test.tsx.snap +0 -130
  173. package/src/components/Slider/Slider.stories.mdx +0 -628
  174. package/src/components/Slider/Slider.test.tsx +0 -736
  175. package/src/components/Slider/Slider.tsx +0 -322
  176. package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +0 -2153
  177. package/src/components/StatusBadge/StatusBadge.stories.mdx +0 -109
  178. package/src/components/StatusBadge/StatusBadge.test.tsx +0 -70
  179. package/src/components/StatusBadge/StatusBadge.tsx +0 -35
  180. package/src/components/StatusBadge/__snapshots__/StatusBadge.test.tsx.snap +0 -47
  181. package/src/components/StructuredContent/StructuredContent.stories.mdx +0 -567
  182. package/src/components/StructuredContent/StructuredContent.test.tsx +0 -435
  183. package/src/components/StructuredContent/StructuredContent.tsx +0 -139
  184. package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +0 -368
  185. package/src/components/StyleGuide/Bidirectionality.stories.mdx +0 -206
  186. package/src/components/StyleGuide/Breakpoints.stories.mdx +0 -55
  187. package/src/components/StyleGuide/Buttons.stories.mdx +0 -194
  188. package/src/components/StyleGuide/ColorCard.tsx +0 -43
  189. package/src/components/StyleGuide/Colors.stories.mdx +0 -201
  190. package/src/components/StyleGuide/DesignTokens.stories.mdx +0 -193
  191. package/src/components/StyleGuide/Forms.stories.mdx +0 -94
  192. package/src/components/StyleGuide/Iconography.stories.mdx +0 -142
  193. package/src/components/StyleGuide/Spacing.stories.mdx +0 -116
  194. package/src/components/StyleGuide/Typography.stories.mdx +0 -419
  195. package/src/components/Table/Table.stories.mdx +0 -276
  196. package/src/components/Table/Table.test.tsx +0 -208
  197. package/src/components/Table/Table.tsx +0 -131
  198. package/src/components/Table/__snapshots__/Table.test.tsx.snap +0 -1703
  199. package/src/components/Tabs/Tabs.stories.mdx +0 -338
  200. package/src/components/Tabs/Tabs.test.tsx +0 -298
  201. package/src/components/Tabs/Tabs.tsx +0 -264
  202. package/src/components/Tabs/__snapshots__/Tabs.test.tsx.snap +0 -584
  203. package/src/components/Template/Template.stories.mdx +0 -691
  204. package/src/components/Template/Template.test.tsx +0 -309
  205. package/src/components/Template/Template.tsx +0 -326
  206. package/src/components/Template/__snapshots__/Template.test.tsx.snap +0 -342
  207. package/src/components/Text/Text.stories.mdx +0 -103
  208. package/src/components/Text/Text.test.tsx +0 -63
  209. package/src/components/Text/Text.tsx +0 -50
  210. package/src/components/Text/__snapshots__/Text.test.tsx.snap +0 -50
  211. package/src/components/TextInput/TextInput.stories.mdx +0 -268
  212. package/src/components/TextInput/TextInput.test.tsx +0 -451
  213. package/src/components/TextInput/TextInput.tsx +0 -240
  214. package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +0 -264
  215. package/src/components/Toggle/Toggle.stories.mdx +0 -237
  216. package/src/components/Toggle/Toggle.test.tsx +0 -170
  217. package/src/components/Toggle/Toggle.tsx +0 -126
  218. package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +0 -442
  219. package/src/components/VideoPlayer/VideoPlayer.stories.mdx +0 -211
  220. package/src/components/VideoPlayer/VideoPlayer.test.tsx +0 -308
  221. package/src/components/VideoPlayer/VideoPlayer.tsx +0 -188
  222. package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +0 -187
  223. package/src/docs/Chakra.stories.mdx +0 -563
  224. package/src/docs/Welcome.stories.mdx +0 -148
  225. package/src/helpers/types.ts +0 -1
  226. package/src/hooks/tests/useCarouselStyles.test.ts +0 -140
  227. package/src/hooks/tests/useNYPLTheme.test.tsx +0 -36
  228. package/src/hooks/useCarouselStyles.stories.mdx +0 -30
  229. package/src/hooks/useCarouselStyles.ts +0 -35
  230. package/src/hooks/useNYPLTheme.stories.mdx +0 -98
  231. package/src/hooks/useNYPLTheme.ts +0 -91
  232. package/src/hooks/useWindowSize.stories.mdx +0 -23
  233. package/src/hooks/useWindowSize.ts +0 -40
  234. package/src/index.ts +0 -136
  235. package/src/resources.scss +0 -6
  236. package/src/styles/base/_01-breakpoints.scss +0 -27
  237. package/src/styles/base/_02-mixins.scss +0 -103
  238. package/src/styles/base/_place-holder.scss +0 -33
  239. package/src/styles/space/_space-inline.scss +0 -79
  240. package/src/styles/space/_space-inset.scss +0 -57
  241. package/src/styles/space/_space-stack.scss +0 -116
  242. package/src/styles.scss +0 -23
  243. package/src/theme/components/accordion.ts +0 -25
  244. package/src/theme/components/breadcrumb.ts +0 -94
  245. package/src/theme/components/button.ts +0 -132
  246. package/src/theme/components/buttonGroup.ts +0 -10
  247. package/src/theme/components/card.ts +0 -231
  248. package/src/theme/components/checkbox.ts +0 -110
  249. package/src/theme/components/checkboxGroup.ts +0 -10
  250. package/src/theme/components/componentWrapper.ts +0 -14
  251. package/src/theme/components/customTable.ts +0 -77
  252. package/src/theme/components/datePicker.ts +0 -17
  253. package/src/theme/components/fieldset.ts +0 -23
  254. package/src/theme/components/global.ts +0 -91
  255. package/src/theme/components/globalMixins.ts +0 -24
  256. package/src/theme/components/heading.ts +0 -79
  257. package/src/theme/components/helperErrorText.ts +0 -14
  258. package/src/theme/components/hero.ts +0 -238
  259. package/src/theme/components/horizontalRule.ts +0 -17
  260. package/src/theme/components/icon.ts +0 -88
  261. package/src/theme/components/image.ts +0 -135
  262. package/src/theme/components/label.ts +0 -15
  263. package/src/theme/components/link.ts +0 -63
  264. package/src/theme/components/list.ts +0 -88
  265. package/src/theme/components/logo.ts +0 -58
  266. package/src/theme/components/notification.ts +0 -132
  267. package/src/theme/components/pagination.ts +0 -17
  268. package/src/theme/components/progressIndicator.ts +0 -67
  269. package/src/theme/components/radio.ts +0 -103
  270. package/src/theme/components/radioGroup.ts +0 -10
  271. package/src/theme/components/searchBar.ts +0 -19
  272. package/src/theme/components/select.ts +0 -72
  273. package/src/theme/components/skeletonLoader.ts +0 -113
  274. package/src/theme/components/skipNavigation.ts +0 -26
  275. package/src/theme/components/slider.ts +0 -95
  276. package/src/theme/components/statusBadge.ts +0 -26
  277. package/src/theme/components/structuredContent.ts +0 -149
  278. package/src/theme/components/tabs.ts +0 -109
  279. package/src/theme/components/template.ts +0 -114
  280. package/src/theme/components/text.ts +0 -38
  281. package/src/theme/components/textInput.ts +0 -65
  282. package/src/theme/components/toggle.ts +0 -109
  283. package/src/theme/components/videoPlayer.ts +0 -47
  284. package/src/theme/foundations/breakpoints.ts +0 -24
  285. package/src/theme/foundations/colors.ts +0 -212
  286. package/src/theme/foundations/global.ts +0 -43
  287. package/src/theme/foundations/radii.ts +0 -7
  288. package/src/theme/foundations/shadows.ts +0 -5
  289. package/src/theme/foundations/spacing.ts +0 -136
  290. package/src/theme/foundations/typography.ts +0 -107
  291. package/src/theme/index.ts +0 -131
  292. package/src/theme/provider.tsx +0 -9
  293. package/src/theme/types.ts +0 -1
  294. package/src/utils/componentCategories.ts +0 -152
  295. package/src/utils/interfaces.ts +0 -5
  296. package/src/utils/utils.ts +0 -44
@@ -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;