@nypl/design-system-react-components 0.25.0 → 0.25.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 (392) hide show
  1. package/CHANGELOG.md +142 -1
  2. package/README.md +98 -50
  3. package/dist/components/Accordion/Accordion.d.ts +14 -14
  4. package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +15 -14
  5. package/dist/components/Breadcrumbs/BreadcrumbsTypes.d.ts +6 -0
  6. package/dist/components/Button/Button.d.ts +13 -8
  7. package/dist/components/Button/ButtonTypes.d.ts +3 -1
  8. package/dist/components/Card/Card.d.ts +36 -52
  9. package/dist/components/Card/CardTypes.d.ts +2 -17
  10. package/dist/components/Checkbox/Checkbox.d.ts +17 -13
  11. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +45 -0
  12. package/dist/components/CheckboxGroup/CheckboxGroupLayoutTypes.d.ts +4 -0
  13. package/dist/components/ComponentWrapper/ComponentWrapper.d.ts +15 -0
  14. package/dist/components/DatePicker/DatePicker.d.ts +37 -35
  15. package/dist/components/Fieldset/Fieldset.d.ts +25 -0
  16. package/dist/components/Form/Form.d.ts +13 -8
  17. package/dist/components/Form/FormTypes.d.ts +2 -8
  18. package/dist/components/Grid/GridTypes.d.ts +9 -0
  19. package/dist/components/Grid/SimpleGrid.d.ts +14 -0
  20. package/dist/components/Heading/Heading.d.ts +4 -4
  21. package/dist/components/HelperErrorText/HelperErrorText.d.ts +17 -14
  22. package/dist/components/Hero/Hero.d.ts +19 -14
  23. package/dist/components/Hero/HeroTypes.d.ts +10 -5
  24. package/dist/components/HorizontalRule/HorizontalRule.d.ts +10 -9
  25. package/dist/components/Icons/Icon.d.ts +19 -14
  26. package/dist/components/Icons/IconSvgs.d.ts +11 -0
  27. package/dist/components/Icons/IconTypes.d.ts +89 -64
  28. package/dist/components/Image/Image.d.ts +19 -9
  29. package/dist/components/Image/ImageTypes.d.ts +20 -0
  30. package/dist/components/Label/Label.d.ts +5 -17
  31. package/dist/components/Link/Link.d.ts +12 -12
  32. package/dist/components/List/List.d.ts +19 -14
  33. package/dist/components/Notification/Notification.d.ts +37 -16
  34. package/dist/components/Pagination/Pagination.d.ts +16 -13
  35. package/dist/components/Pagination/Pagination.stories.d.ts +2 -0
  36. package/dist/components/ProgressIndicator/ProgressIndicator.d.ts +29 -0
  37. package/dist/components/ProgressIndicator/ProgressIndicatorTypes.d.ts +8 -0
  38. package/dist/components/Radio/Radio.d.ts +2 -0
  39. package/dist/components/RadioGroup/RadioGroup.d.ts +4 -2
  40. package/dist/components/SearchBar/SearchBar.d.ts +45 -27
  41. package/dist/components/Select/Select.d.ts +34 -35
  42. package/dist/components/Select/SelectTypes.d.ts +4 -0
  43. package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +18 -14
  44. package/dist/components/SkeletonLoader/SkeletonLoaderTypes.d.ts +2 -2
  45. package/dist/components/Slider/Slider.d.ts +57 -0
  46. package/dist/components/StatusBadge/StatusBadge.d.ts +8 -6
  47. package/dist/components/StatusBadge/StatusBadgeTypes.d.ts +5 -0
  48. package/dist/components/StyleGuide/ColorCard.d.ts +12 -0
  49. package/dist/components/Tabs/Tabs.d.ts +1 -1
  50. package/dist/components/Template/Template.d.ts +91 -0
  51. package/dist/components/Text/Text.d.ts +16 -0
  52. package/dist/components/Text/TextTypes.d.ts +6 -0
  53. package/dist/components/TextInput/TextInput.d.ts +44 -31
  54. package/dist/components/TextInput/TextInputTypes.d.ts +5 -0
  55. package/dist/components/VideoPlayer/VideoPlayer.d.ts +6 -8
  56. package/dist/components/VideoPlayer/VideoPlayerTypes.d.ts +2 -2
  57. package/dist/design-system-react-components.cjs.development.js +6473 -2630
  58. package/dist/design-system-react-components.cjs.development.js.map +1 -1
  59. package/dist/design-system-react-components.cjs.production.min.js +1 -1
  60. package/dist/design-system-react-components.cjs.production.min.js.map +1 -1
  61. package/dist/design-system-react-components.esm.js +6463 -2631
  62. package/dist/design-system-react-components.esm.js.map +1 -1
  63. package/dist/hooks/tests/useCarouselStyles.test.d.ts +1 -0
  64. package/dist/hooks/useCarouselStyles.d.ts +16 -0
  65. package/dist/hooks/useNYPLTheme.d.ts +54 -0
  66. package/dist/hooks/useWindowSize.d.ts +10 -0
  67. package/dist/index.d.ts +19 -7
  68. package/dist/resources.scss +180 -170
  69. package/dist/styles.css +1 -1
  70. package/dist/theme/components/accordion.d.ts +25 -0
  71. package/dist/theme/components/breadcrumb.d.ts +90 -0
  72. package/dist/theme/components/button.d.ts +39 -15
  73. package/dist/theme/components/card.d.ts +168 -0
  74. package/dist/theme/components/checkbox.d.ts +12 -8
  75. package/dist/theme/components/checkboxGroup.d.ts +12 -0
  76. package/dist/theme/components/componentWrapper.d.ts +11 -0
  77. package/dist/theme/components/datePicker.d.ts +16 -0
  78. package/dist/theme/components/fieldset.d.ts +27 -0
  79. package/dist/theme/components/global.d.ts +65 -0
  80. package/dist/theme/components/globalMixins.d.ts +23 -0
  81. package/dist/theme/components/heading.d.ts +55 -20
  82. package/dist/theme/components/helperErrorText.d.ts +10 -0
  83. package/dist/theme/components/hero.d.ts +493 -0
  84. package/dist/theme/components/horizontalRule.d.ts +14 -0
  85. package/dist/theme/components/icon.d.ts +13 -0
  86. package/dist/theme/components/image.d.ts +31 -0
  87. package/dist/theme/components/label.d.ts +18 -0
  88. package/dist/theme/components/link.d.ts +49 -0
  89. package/dist/theme/components/list.d.ts +89 -0
  90. package/dist/theme/components/notification.d.ts +75 -0
  91. package/dist/theme/components/pagination.d.ts +19 -0
  92. package/dist/theme/components/progressIndicator.d.ts +50 -0
  93. package/dist/theme/components/radio.d.ts +8 -7
  94. package/dist/theme/components/radioGroup.d.ts +12 -0
  95. package/dist/theme/components/searchBar.d.ts +20 -0
  96. package/dist/theme/components/select.d.ts +67 -0
  97. package/dist/theme/components/skeletonLoader.d.ts +98 -0
  98. package/dist/theme/components/slider.d.ts +51 -0
  99. package/dist/theme/components/statusBadge.d.ts +25 -0
  100. package/dist/theme/components/tabs.d.ts +63 -12
  101. package/dist/theme/components/template.d.ts +105 -0
  102. package/dist/theme/components/text.d.ts +20 -0
  103. package/dist/theme/components/textInput.d.ts +112 -0
  104. package/dist/theme/components/videoPlayer.d.ts +40 -0
  105. package/dist/theme/foundations/breakpoints.d.ts +8 -8
  106. package/dist/theme/foundations/global.d.ts +8 -0
  107. package/dist/theme/foundations/radii.d.ts +5 -0
  108. package/dist/theme/foundations/shadows.d.ts +4 -0
  109. package/dist/theme/foundations/spacing.d.ts +16 -16
  110. package/dist/utils/utils.d.ts +6 -0
  111. package/package.json +72 -82
  112. package/src/__tests__/setup.ts +2 -2
  113. package/src/components/Accordion/Accordion.stories.mdx +223 -34
  114. package/src/components/Accordion/Accordion.test.tsx +135 -19
  115. package/src/components/Accordion/Accordion.tsx +81 -56
  116. package/src/components/Autosuggest/Autosuggest.stories.mdx +4 -4
  117. package/src/components/Autosuggest/Autosuggest.stories.tsx +3 -2
  118. package/src/components/Autosuggest/_Autosuggest.scss +5 -5
  119. package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +48 -50
  120. package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +54 -25
  121. package/src/components/Breadcrumbs/Breadcrumbs.tsx +75 -73
  122. package/src/components/Breadcrumbs/BreadcrumbsTypes.tsx +6 -0
  123. package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +298 -0
  124. package/src/components/Button/Button.stories.mdx +45 -36
  125. package/src/components/Button/Button.test.tsx +37 -11
  126. package/src/components/Button/Button.tsx +22 -34
  127. package/src/components/Button/ButtonTypes.tsx +2 -0
  128. package/src/components/Button/__snapshots__/Button.test.tsx.snap +50 -8
  129. package/src/components/Card/Card.stories.mdx +314 -273
  130. package/src/components/Card/Card.test.tsx +157 -91
  131. package/src/components/Card/Card.tsx +195 -145
  132. package/src/components/Card/CardTypes.tsx +2 -19
  133. package/src/components/Card/__snapshots__/Card.test.tsx.snap +410 -0
  134. package/src/components/CardEdition/CardEdition.stories.tsx +26 -53
  135. package/src/components/CardEdition/CardEdition.test.tsx +23 -31
  136. package/src/components/CardEdition/_CardEdition.scss +22 -23
  137. package/src/components/Chakra/Box.stories.mdx +15 -16
  138. package/src/components/Chakra/Center.stories.mdx +56 -24
  139. package/src/components/Chakra/Grid.stories.mdx +92 -0
  140. package/src/components/Chakra/Stack.stories.mdx +38 -21
  141. package/src/components/Checkbox/Checkbox.stories.mdx +33 -11
  142. package/src/components/Checkbox/Checkbox.test.tsx +47 -2
  143. package/src/components/Checkbox/Checkbox.tsx +44 -41
  144. package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +92 -7
  145. package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +329 -0
  146. package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +372 -0
  147. package/src/components/CheckboxGroup/CheckboxGroup.tsx +152 -0
  148. package/src/components/CheckboxGroup/CheckboxGroupLayoutTypes.tsx +4 -0
  149. package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +1326 -0
  150. package/src/components/ComponentWrapper/ComponentWrapper.tsx +63 -0
  151. package/src/components/DatePicker/DatePicker.stories.mdx +163 -62
  152. package/src/components/DatePicker/DatePicker.test.tsx +264 -64
  153. package/src/components/DatePicker/DatePicker.tsx +165 -134
  154. package/src/components/DatePicker/_DatePicker.scss +33 -66
  155. package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +818 -0
  156. package/src/components/Fieldset/Fieldset.stories.mdx +55 -0
  157. package/src/components/Fieldset/Fieldset.test.tsx +125 -0
  158. package/src/components/Fieldset/Fieldset.tsx +52 -0
  159. package/src/components/Fieldset/__snapshots__/Fieldset.test.tsx.snap +68 -0
  160. package/src/components/Form/Form.stories.mdx +70 -27
  161. package/src/components/Form/Form.test.tsx +58 -45
  162. package/src/components/Form/Form.tsx +50 -21
  163. package/src/components/Form/FormTypes.tsx +3 -8
  164. package/src/components/Form/__snapshots__/Form.test.tsx.snap +24 -14
  165. package/src/components/Grid/GridTypes.tsx +9 -0
  166. package/src/components/Grid/SimpleGrid.stories.mdx +268 -0
  167. package/src/components/Grid/SimpleGrid.test.tsx +66 -0
  168. package/src/components/Grid/SimpleGrid.tsx +37 -0
  169. package/src/components/Grid/__snapshots__/SimpleGrid.test.tsx.snap +8 -0
  170. package/src/components/Heading/Heading.stories.mdx +3 -3
  171. package/src/components/Heading/Heading.tsx +12 -6
  172. package/src/components/HelperErrorText/HelperErrorText.stories.mdx +124 -0
  173. package/src/components/HelperErrorText/HelperErrorText.test.tsx +39 -44
  174. package/src/components/HelperErrorText/HelperErrorText.tsx +37 -39
  175. package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +25 -0
  176. package/src/components/Hero/Hero.stories.mdx +198 -121
  177. package/src/components/Hero/Hero.test.tsx +537 -107
  178. package/src/components/Hero/Hero.tsx +79 -92
  179. package/src/components/Hero/HeroTypes.tsx +18 -5
  180. package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +307 -0
  181. package/src/components/HorizontalRule/HorizontalRule.stories.mdx +8 -6
  182. package/src/components/HorizontalRule/HorizontalRule.test.tsx +33 -28
  183. package/src/components/HorizontalRule/HorizontalRule.tsx +27 -29
  184. package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +27 -9
  185. package/src/components/Icons/Icon.stories.mdx +94 -77
  186. package/src/components/Icons/Icon.test.tsx +48 -22
  187. package/src/components/Icons/Icon.tsx +78 -61
  188. package/src/components/Icons/IconSvgs.tsx +22 -0
  189. package/src/components/Icons/IconTypes.tsx +91 -64
  190. package/src/components/Image/Image.stories.mdx +220 -0
  191. package/src/components/Image/Image.test.tsx +131 -29
  192. package/src/components/Image/Image.tsx +84 -56
  193. package/src/components/Image/ImageTypes.ts +22 -0
  194. package/src/components/Image/__snapshots__/Image.test.tsx.snap +190 -0
  195. package/src/components/Input/Input.stories.tsx +23 -67
  196. package/src/components/Input/Input.test.tsx +4 -4
  197. package/src/components/Input/_Input.scss +23 -14
  198. package/src/components/Label/Label.stories.mdx +28 -7
  199. package/src/components/Label/Label.test.tsx +43 -12
  200. package/src/components/Label/Label.tsx +21 -34
  201. package/src/components/Label/__snapshots__/Label.test.tsx.snap +41 -0
  202. package/src/components/Link/Link.stories.mdx +41 -41
  203. package/src/components/Link/Link.test.tsx +33 -44
  204. package/src/components/Link/Link.tsx +117 -100
  205. package/src/components/List/List.stories.mdx +124 -51
  206. package/src/components/List/List.test.tsx +142 -63
  207. package/src/components/List/List.tsx +89 -93
  208. package/src/components/List/__snapshots__/List.test.tsx.snap +109 -0
  209. package/src/components/Modal/Modal.stories.mdx +3 -3
  210. package/src/components/Modal/_Modal.scss +2 -2
  211. package/src/components/Notification/Notification.stories.mdx +119 -111
  212. package/src/components/Notification/Notification.test.tsx +102 -126
  213. package/src/components/Notification/Notification.tsx +157 -161
  214. package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +159 -8
  215. package/src/components/Pagination/Pagination.stories.mdx +26 -27
  216. package/src/components/Pagination/Pagination.stories.tsx +11 -16
  217. package/src/components/Pagination/Pagination.test.tsx +276 -140
  218. package/src/components/Pagination/Pagination.tsx +174 -154
  219. package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +285 -0
  220. package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +292 -0
  221. package/src/components/ProgressIndicator/ProgressIndicator.test.tsx +225 -0
  222. package/src/components/ProgressIndicator/ProgressIndicator.tsx +126 -0
  223. package/src/components/ProgressIndicator/ProgressIndicatorTypes.ts +8 -0
  224. package/src/components/ProgressIndicator/__snapshots__/ProgressIndicator.test.tsx.snap +357 -0
  225. package/src/components/Radio/Radio.test.tsx +20 -4
  226. package/src/components/Radio/Radio.tsx +6 -3
  227. package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +3 -0
  228. package/src/components/RadioGroup/RadioGroup.stories.mdx +4 -5
  229. package/src/components/RadioGroup/RadioGroup.test.tsx +24 -1
  230. package/src/components/RadioGroup/RadioGroup.tsx +21 -29
  231. package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +42 -72
  232. package/src/components/SearchBar/SearchBar.Test.tsx +170 -16
  233. package/src/components/SearchBar/SearchBar.stories.mdx +294 -219
  234. package/src/components/SearchBar/SearchBar.tsx +161 -46
  235. package/src/components/Select/Select.stories.mdx +188 -170
  236. package/src/components/Select/Select.test.tsx +132 -375
  237. package/src/components/Select/Select.tsx +121 -165
  238. package/src/components/Select/SelectTypes.tsx +5 -0
  239. package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +33 -76
  240. package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +97 -177
  241. package/src/components/SkeletonLoader/SkeletonLoader.tsx +75 -70
  242. package/src/components/SkeletonLoader/SkeletonLoaderTypes.tsx +2 -2
  243. package/src/components/SkeletonLoader/__snapshots__/SkeletonLoader.test.tsx.snap +739 -0
  244. package/src/components/Slider/Slider.stories.mdx +529 -0
  245. package/src/components/Slider/Slider.test.tsx +653 -0
  246. package/src/components/Slider/Slider.tsx +303 -0
  247. package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +1946 -0
  248. package/src/components/StatusBadge/StatusBadge.stories.mdx +91 -0
  249. package/src/components/StatusBadge/StatusBadge.test.tsx +35 -7
  250. package/src/components/StatusBadge/StatusBadge.tsx +24 -25
  251. package/src/components/StatusBadge/StatusBadgeTypes.tsx +5 -0
  252. package/src/components/StatusBadge/__snapshots__/StatusBadge.test.tsx.snap +28 -0
  253. package/src/components/StyleGuide/Bidirectionality.stories.mdx +17 -17
  254. package/src/components/StyleGuide/Breakpoints.stories.mdx +34 -10
  255. package/src/components/StyleGuide/Buttons.stories.mdx +102 -86
  256. package/src/components/StyleGuide/ColorCard.tsx +46 -0
  257. package/src/components/StyleGuide/Colors.stories.mdx +196 -0
  258. package/src/components/StyleGuide/DesignTokens.stories.mdx +170 -0
  259. package/src/components/StyleGuide/Forms.stories.mdx +9 -7
  260. package/src/components/StyleGuide/Iconography.stories.mdx +119 -127
  261. package/src/components/StyleGuide/Spacing.stories.mdx +31 -23
  262. package/src/components/StyleGuide/Typography.stories.mdx +202 -189
  263. package/src/components/StyleGuide/UIDocCard.tsx +1 -1
  264. package/src/components/Tabs/Tabs.stories.mdx +73 -11
  265. package/src/components/Tabs/Tabs.tsx +88 -67
  266. package/src/components/Template/Template.stories.mdx +572 -0
  267. package/src/components/Template/Template.test.tsx +124 -0
  268. package/src/components/Template/Template.tsx +226 -0
  269. package/src/components/Text/Text.stories.mdx +70 -0
  270. package/src/components/Text/Text.test.tsx +63 -0
  271. package/src/components/Text/Text.tsx +55 -0
  272. package/src/components/Text/TextTypes.tsx +6 -0
  273. package/src/components/Text/__snapshots__/Text.test.tsx.snap +33 -0
  274. package/src/components/TextInput/TextInput.stories.mdx +89 -90
  275. package/src/components/TextInput/TextInput.test.tsx +84 -85
  276. package/src/components/TextInput/TextInput.tsx +121 -95
  277. package/src/components/TextInput/TextInputTypes.tsx +8 -0
  278. package/src/components/VideoPlayer/VideoPlayer.stories.mdx +17 -4
  279. package/src/components/VideoPlayer/VideoPlayer.test.tsx +54 -53
  280. package/src/components/VideoPlayer/VideoPlayer.tsx +50 -51
  281. package/src/components/VideoPlayer/VideoPlayerTypes.tsx +2 -2
  282. package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +91 -0
  283. package/src/docs/Chakra.stories.mdx +246 -65
  284. package/src/docs/Intro.stories.mdx +18 -13
  285. package/src/hooks/tests/useCarouselStyles.test.ts +140 -0
  286. package/src/hooks/tests/useNYPLTheme.test.tsx +36 -0
  287. package/src/hooks/useCarouselStyles.ts +34 -0
  288. package/src/hooks/useNYPLTheme.ts +67 -0
  289. package/src/hooks/useWindowSize.ts +40 -0
  290. package/src/index.ts +39 -16
  291. package/src/resources.scss +5 -5
  292. package/src/styles/base/{_02-breakpoints.scss → _01-breakpoints.scss} +9 -10
  293. package/src/styles/base/{_03-mixins.scss → _02-mixins.scss} +16 -5
  294. package/src/styles/base/_03-base.scss +25 -0
  295. package/src/styles/base/{_05-focus.scss → _04-focus.scss} +0 -15
  296. package/src/styles/base/_place-holder.scss +14 -3
  297. package/src/styles/{03-space → space}/_space-inline.scss +14 -14
  298. package/src/styles/{03-space → space}/_space-inset.scss +10 -10
  299. package/src/styles/space/_space-stack.scss +116 -0
  300. package/src/styles.scss +13 -62
  301. package/src/theme/components/accordion.ts +30 -0
  302. package/src/theme/components/breadcrumb.ts +77 -0
  303. package/src/theme/components/button.ts +91 -71
  304. package/src/theme/components/card.ts +174 -0
  305. package/src/theme/components/checkbox.ts +22 -29
  306. package/src/theme/components/checkboxGroup.ts +8 -0
  307. package/src/theme/components/componentWrapper.ts +10 -0
  308. package/src/theme/components/datePicker.ts +17 -0
  309. package/src/theme/components/fieldset.ts +18 -0
  310. package/src/theme/components/global.ts +82 -0
  311. package/src/theme/components/globalMixins.ts +24 -0
  312. package/src/theme/components/heading.ts +25 -13
  313. package/src/theme/components/helperErrorText.ts +9 -0
  314. package/src/theme/components/hero.ts +240 -0
  315. package/src/theme/components/horizontalRule.ts +13 -0
  316. package/src/theme/components/icon.ts +79 -0
  317. package/src/theme/components/image.ts +116 -0
  318. package/src/theme/components/label.ts +10 -0
  319. package/src/theme/components/link.ts +51 -0
  320. package/src/theme/components/list.ts +73 -0
  321. package/src/theme/components/notification.ts +93 -0
  322. package/src/theme/components/pagination.ts +20 -0
  323. package/src/theme/components/progressIndicator.ts +62 -0
  324. package/src/theme/components/radio.ts +22 -33
  325. package/src/theme/components/radioGroup.ts +8 -0
  326. package/src/theme/components/searchBar.ts +21 -0
  327. package/src/theme/components/select.ts +53 -0
  328. package/src/theme/components/skeletonLoader.ts +107 -0
  329. package/src/theme/components/slider.ts +79 -0
  330. package/src/theme/components/statusBadge.ts +26 -0
  331. package/src/theme/components/tabs.ts +102 -69
  332. package/src/theme/components/template.ts +114 -0
  333. package/src/theme/components/text.ts +31 -0
  334. package/src/theme/components/textInput.ts +62 -0
  335. package/src/theme/components/videoPlayer.ts +49 -0
  336. package/src/theme/foundations/breakpoints.ts +8 -8
  337. package/src/theme/foundations/colors.ts +29 -13
  338. package/src/theme/foundations/global.ts +8 -0
  339. package/src/theme/foundations/radii.ts +6 -0
  340. package/src/theme/foundations/shadows.ts +5 -0
  341. package/src/theme/foundations/spacing.ts +24 -24
  342. package/src/theme/index.ts +74 -13
  343. package/src/utils/componentCategories.ts +12 -5
  344. package/src/utils/utils.ts +13 -0
  345. package/dist/components/Accordion/Accordion.stories.d.ts +0 -6
  346. package/dist/components/HelperErrorText/HelperErrorText.stories.d.ts +0 -16
  347. package/dist/components/Image/Image.stories.d.ts +0 -18
  348. package/dist/components/List/List.stories.d.ts +0 -7
  349. package/dist/components/StatusBadge/StatusBadge.stories.d.ts +0 -8
  350. package/dist/components/StyleGuide/Colors.stories.d.ts +0 -25
  351. package/dist/components/Template/Template.stories.d.ts +0 -30
  352. package/dist/theme/components/customRadioGroup.d.ts +0 -17
  353. package/src/components/Accordion/Accordion.stories.tsx +0 -66
  354. package/src/components/Accordion/_Accordion.scss +0 -81
  355. package/src/components/Breadcrumbs/_Breadcrumbs.scss +0 -97
  356. package/src/components/Button/_Button.scss +0 -56
  357. package/src/components/Card/_Card.scss +0 -308
  358. package/src/components/Form/_Form.scss +0 -67
  359. package/src/components/HelperErrorText/HelperErrorText.stories.tsx +0 -48
  360. package/src/components/HelperErrorText/_HelperErrorText.scss +0 -9
  361. package/src/components/Hero/_Hero.scss +0 -256
  362. package/src/components/HorizontalRule/_HorizontalRule.scss +0 -15
  363. package/src/components/Icons/_Icons.scss +0 -116
  364. package/src/components/Image/Image.stories.tsx +0 -54
  365. package/src/components/Image/_Image.scss +0 -38
  366. package/src/components/Label/_Label.scss +0 -22
  367. package/src/components/Link/_Link.scss +0 -73
  368. package/src/components/List/List.stories.tsx +0 -139
  369. package/src/components/List/_List.scss +0 -76
  370. package/src/components/Notification/_Notification.scss +0 -110
  371. package/src/components/Pagination/_Pagination.scss +0 -40
  372. package/src/components/SearchBar/_SearchBar.scss +0 -16
  373. package/src/components/Select/_Select.scss +0 -82
  374. package/src/components/SkeletonLoader/_SkeletonLoader.scss +0 -142
  375. package/src/components/StatusBadge/StatusBadge.stories.tsx +0 -34
  376. package/src/components/StatusBadge/_StatusBadge.scss +0 -23
  377. package/src/components/StyleGuide/Colors.stories.tsx +0 -289
  378. package/src/components/Template/Template.stories.tsx +0 -86
  379. package/src/components/Template/_Template.scss +0 -63
  380. package/src/components/TextInput/_TextInput.scss +0 -59
  381. package/src/components/VideoPlayer/_VideoPlayer.scss +0 -38
  382. package/src/styles/01-colors/_colors-brand.scss +0 -56
  383. package/src/styles/01-colors/_colors-utility.scss +0 -65
  384. package/src/styles/02-typography/_type-scale.css +0 -11
  385. package/src/styles/02-typography/_type-weight.css +0 -7
  386. package/src/styles/02-typography/_typefaces.css +0 -4
  387. package/src/styles/03-space/_space-stack.scss +0 -116
  388. package/src/styles/03-space/_space.css +0 -30
  389. package/src/styles/base/_04-base.scss +0 -19
  390. package/src/styles/base/_card-grid.scss +0 -78
  391. package/src/styles/base/_typography.scss +0 -11
  392. package/src/theme/components/customRadioGroup.ts +0 -18
@@ -0,0 +1,140 @@
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
+ });
@@ -0,0 +1,36 @@
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
+ "The `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.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
+ });
@@ -0,0 +1,34 @@
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.
7
+ * Inspired by: https://codesandbox.io/s/fxjeo
8
+ */
9
+ const useCarouselStyles = (slidesCount = 0, slideWidth = 100) => {
10
+ const [currentSlide, setCurrentSlide] = React.useState(0);
11
+ // This wraps around to the last slide if this is invoked while the
12
+ // first slide is active.
13
+ const prevSlide = () => {
14
+ setCurrentSlide((slide) => (slide === 0 ? slidesCount - 1 : slide - 1));
15
+ };
16
+ // This wraps around to the first slide if this is invoked while the
17
+ // last slide is active.
18
+ const nextSlide = () => {
19
+ setCurrentSlide((slide) => (slide === slidesCount - 1 ? 0 : slide + 1));
20
+ };
21
+ const goToStart = () => {
22
+ setCurrentSlide(0);
23
+ };
24
+ // Updates the left margin for the carousel so the elements can
25
+ // slide inside the container.
26
+ const carouselStyle = {
27
+ transition: "all .5s",
28
+ marginLeft: `-${currentSlide * slideWidth}%`,
29
+ };
30
+
31
+ return { prevSlide, nextSlide, carouselStyle, goToStart };
32
+ };
33
+
34
+ export default useCarouselStyles;
@@ -0,0 +1,67 @@
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
+ "The `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, locations, research,
26
+ // 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.xs,
36
+ "-1": theme.fontSizes.sm,
37
+ "0": theme.fontSizes.md,
38
+ "1": theme.fontSizes.lg,
39
+ "2": theme.fontSizes["2"],
40
+ "3": theme.fontSizes["3"],
41
+ "4": theme.fontSizes["4"],
42
+ },
43
+ fontWeights: {
44
+ light: theme.fontWeights.light,
45
+ regular: theme.fontWeights.regular,
46
+ medium: theme.fontWeights.medium,
47
+ bold: theme.fontWeights.bold,
48
+ },
49
+ fonts: {
50
+ body: theme.fonts.body,
51
+ heading: theme.fonts.heading,
52
+ },
53
+ radii: theme.radii,
54
+ space: {
55
+ xxs: theme.space.xxs,
56
+ xs: theme.space.xs,
57
+ s: theme.space.s,
58
+ m: theme.space.m,
59
+ l: theme.space.l,
60
+ xl: theme.space.xl,
61
+ xxl: theme.space.xxl,
62
+ xxxl: theme.space.xxxl,
63
+ },
64
+ };
65
+ }
66
+
67
+ export default useNYPLTheme;
@@ -0,0 +1,40 @@
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 CHANGED
@@ -4,16 +4,20 @@ import "./styles.scss";
4
4
  // components for usage in consuming applications.
5
5
  export {
6
6
  Box,
7
+ ButtonGroup,
7
8
  Center,
8
9
  Circle,
10
+ Grid,
11
+ GridItem,
12
+ HStack,
9
13
  Square,
10
14
  Stack,
11
- HStack,
12
15
  VStack,
13
16
  } from "@chakra-ui/react";
14
17
  export { default as Accordion } from "./components/Accordion/Accordion";
15
18
  export { default as Breadcrumbs } from "./components/Breadcrumbs/Breadcrumbs";
16
- export { default as Button, ButtonGroup } from "./components/Button/Button";
19
+ export { ColorVariants } from "./components/Breadcrumbs/BreadcrumbsTypes";
20
+ export { default as Button } from "./components/Button/Button";
17
21
  export { ButtonTypes } from "./components/Button/ButtonTypes";
18
22
  export {
19
23
  default as Card,
@@ -21,17 +25,18 @@ export {
21
25
  CardContent,
22
26
  CardHeading,
23
27
  } from "./components/Card/Card";
24
- export {
25
- CardImageRatios,
26
- CardImageSizes,
27
- CardLayouts,
28
- } from "./components/Card/CardTypes";
28
+ export { CardLayouts } from "./components/Card/CardTypes";
29
29
  export { default as CardEdition } from "./components/CardEdition/CardEdition";
30
30
  export { default as Checkbox } from "./components/Checkbox/Checkbox";
31
+ export { default as CheckboxGroup } from "./components/CheckboxGroup/CheckboxGroup";
32
+ export { CheckboxGroupLayoutTypes } from "./components/CheckboxGroup/CheckboxGroupLayoutTypes";
31
33
  export { default as DatePicker } from "./components/DatePicker/DatePicker";
32
34
  export { DatePickerTypes } from "./components/DatePicker/DatePickerTypes";
35
+ export { default as DSProvider } from "./theme/provider";
36
+ export { default as Fieldset } from "./components/Fieldset/Fieldset";
33
37
  export { default as Form, FormField, FormRow } from "./components/Form/Form";
34
38
  export { FormSpacing } from "./components/Form/FormTypes";
39
+ export { GridGaps } from "./components/Grid/GridTypes";
35
40
  export { default as Heading } from "./components/Heading/Heading";
36
41
  export {
37
42
  HeadingDisplaySizes,
@@ -43,13 +48,20 @@ export { HeroTypes } from "./components/Hero/HeroTypes";
43
48
  export { default as HorizontalRule } from "./components/HorizontalRule/HorizontalRule";
44
49
  export { default as Icon } from "./components/Icons/Icon";
45
50
  export {
51
+ IconAlign,
52
+ IconColors,
46
53
  IconNames,
47
- LogoNames,
48
54
  IconRotationTypes,
49
- IconColors,
50
55
  IconSizes,
56
+ IconTypes,
57
+ LogoNames,
51
58
  } from "./components/Icons/IconTypes";
52
59
  export { default as Image } from "./components/Image/Image";
60
+ export {
61
+ ImageRatios,
62
+ ImageSizes,
63
+ ImageTypes,
64
+ } from "./components/Image/ImageTypes";
53
65
  export { default as Input } from "./components/Input/Input";
54
66
  export { InputTypes } from "./components/Input/InputTypes";
55
67
  export { default as Label } from "./components/Label/Label";
@@ -58,24 +70,22 @@ export { LinkTypes } from "./components/Link/LinkTypes";
58
70
  export { default as List } from "./components/List/List";
59
71
  export { ListTypes } from "./components/List/ListTypes";
60
72
  export { default as Modal } from "./components/Modal/Modal";
61
- export {
62
- default as Notification,
63
- NotificationContent,
64
- NotificationHeading,
65
- } from "./components/Notification/Notification";
73
+ export { default as Notification } from "./components/Notification/Notification";
66
74
  export { NotificationTypes } from "./components/Notification/NotificationTypes";
67
75
  export { default as Pagination } from "./components/Pagination/Pagination";
68
76
  export { default as Radio } from "./components/Radio/Radio";
69
77
  export { default as RadioGroup } from "./components/RadioGroup/RadioGroup";
70
78
  export { RadioGroupLayoutTypes } from "./components/RadioGroup/RadioGroupLayoutTypes";
71
79
  export { default as SearchBar } from "./components/SearchBar/SearchBar";
80
+ export { default as Select } from "./components/Select/Select";
81
+ export { default as SimpleGrid } from "./components/Grid/SimpleGrid";
72
82
  export { default as SkeletonLoader } from "./components/SkeletonLoader/SkeletonLoader";
73
83
  export {
74
84
  SkeletonLoaderImageRatios,
75
85
  SkeletonLoaderLayouts,
76
86
  } from "./components/SkeletonLoader/SkeletonLoaderTypes";
77
- export { default as Select } from "./components/Select/Select";
78
87
  export { default as StatusBadge } from "./components/StatusBadge/StatusBadge";
88
+ export { StatusBadgeTypes } from "./components/StatusBadge/StatusBadgeTypes";
79
89
  export {
80
90
  Tabs,
81
91
  TabList,
@@ -83,14 +93,27 @@ export {
83
93
  TabPanels,
84
94
  TabPanel,
85
95
  } from "./components/Tabs/Tabs";
96
+ export {
97
+ TemplateAppContainer,
98
+ Template,
99
+ TemplateHeader,
100
+ TemplateBreakout,
101
+ TemplateContent,
102
+ TemplateContentTop,
103
+ TemplateContentPrimary,
104
+ TemplateContentSidebar,
105
+ TemplateFooter,
106
+ } from "./components/Template/Template";
107
+ export { default as Text } from "./components/Text/Text";
108
+ export { TextDisplaySizes } from "./components/Text/TextTypes";
86
109
  export {
87
110
  default as TextInput,
88
111
  TextInputRefType,
89
112
  } from "./components/TextInput/TextInput";
90
113
  export { TextInputTypes } from "./components/TextInput/TextInputTypes";
114
+ export { default as useNYPLTheme } from "./hooks/useNYPLTheme";
91
115
  export { default as VideoPlayer } from "./components/VideoPlayer/VideoPlayer";
92
116
  export {
93
117
  VideoPlayerAspectRatios,
94
118
  VideoPlayerTypes,
95
119
  } from "./components/VideoPlayer/VideoPlayerTypes";
96
- export { default as DSProvider } from "./theme/provider";
@@ -1,6 +1,6 @@
1
1
  // Resources to export as sass mixins
2
- @import "./styles/03-space/space-inline.scss";
3
- @import "./styles/03-space/space-inset.scss";
4
- @import "./styles/03-space/space-stack.scss";
5
- @import "./styles/base/02-breakpoints.scss";
6
- @import "./styles/base/03-mixins.scss";
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,7 +1,6 @@
1
1
  /**
2
2
  * Breakpoint Configuration
3
3
  * @see https://github.com/Team-Sass/breakpoint/wiki
4
- *
5
4
  */
6
5
 
7
6
  // Global Breakpoints
@@ -12,17 +11,17 @@
12
11
  // Sass' breakpoint() mixin doesn't work without Sass variables.
13
12
  // CSS variables expose the breakpoint variables to consumers.
14
13
  :root {
15
- --breakpoint-small: 320px;
16
- --breakpoint-medium: 600px;
17
- --breakpoint-large: 960px;
18
- --breakpoint-xl: 1280px;
14
+ --nypl-breakpoint-small: 320px;
15
+ --nypl-breakpoint-medium: 600px;
16
+ --nypl-breakpoint-large: 960px;
17
+ --nypl-breakpoint-xl: 1280px;
19
18
  }
20
19
 
21
- $breakpoint-small: 320px;
22
- $breakpoint-medium: 600px;
23
- $breakpoint-large: 960px;
24
- $breakpoint-xl: 1280px;
20
+ $nypl-breakpoint-small: 320px;
21
+ $nypl-breakpoint-medium: 600px;
22
+ $nypl-breakpoint-large: 960px;
23
+ $nypl-breakpoint-xl: 1280px;
25
24
  // The max-width breakpoint is used when the design should be applied at
26
25
  // whatever the largest breakpoint is regardless of actual pixel value,
27
26
  // e.g. removing outer margin on body wrapper.
28
- $max-width: $breakpoint-xl;
27
+ $nypl-max-width: $nypl-breakpoint-xl;
@@ -3,7 +3,7 @@
3
3
 
4
4
  /// Mixin - Clearfix.
5
5
  /// Adds clearfix based on http://bourbon.io/docs/#clearfix
6
- /// use example = @include clearfix
6
+ /// use example = @include clearfix
7
7
 
8
8
  @mixin clearfix {
9
9
  &::after {
@@ -29,10 +29,10 @@
29
29
  /// Outer container mixin for large screens
30
30
  @mixin wrapper(
31
31
  $container-max-width: $max-width,
32
- $outer-container-break: $breakpoint-small,
32
+ $outer-container-break: $nypl-breakpoint-small,
33
33
  $v-margin: 0,
34
34
  $v-padding: 0,
35
- $h-padding: var(--space)
35
+ $h-padding: var(--nypl-space-s)
36
36
  ) {
37
37
  margin: #{$v-margin} auto;
38
38
  max-width: #{$container-max-width};
@@ -41,12 +41,12 @@
41
41
  }
42
42
 
43
43
  .container {
44
- @include space-inset-s;
44
+ padding: var(--nypl-space-s);
45
45
  }
46
46
 
47
47
  /// Use the breakout mixin for elements that should be edge-to-edge
48
48
  /// Even when a parent container uses the wrapper mixin
49
- @mixin breakout($v-padding: var(--space)) {
49
+ @mixin breakout($v-padding: var(--nypl-space-s)) {
50
50
  margin-left: calc(-50vw + 50%);
51
51
  margin-right: calc(-50vw + 50%);
52
52
  }
@@ -61,6 +61,17 @@
61
61
  word-wrap: normal;
62
62
  }
63
63
 
64
+ // Focus state mixin
65
+ @mixin focus-outline($darkBackground: false) {
66
+ outline: 2px solid var(--nypl-colors-ui-focus);
67
+ outline-offset: 2px;
68
+ z-index: 9999;
69
+
70
+ @if $darkBackground {
71
+ outline-color: var(--nypl-colors-ui-white);
72
+ }
73
+ }
74
+
64
75
  //Convert pixel values to rem
65
76
  @function to-rem($size) {
66
77
  @return $size / 16px * 1rem;
@@ -0,0 +1,25 @@
1
+ // Kept for backwards compatibility.
2
+ .nypl-ds {
3
+ box-sizing: border-box;
4
+ color: var(--nypl-colors-ui-black);
5
+ font-family: var(--nypl-fonts-body);
6
+
7
+ // Sets up the base font-size, 1rem, for the system
8
+ font-size: 16px;
9
+ font-weight: 300;
10
+ line-height: 1.5;
11
+
12
+ // Users with non-overlay scrollbars have a small horizontal scrollbar from
13
+ // our breakout mixin. Fix identified here: https://cloudfour.com/thinks/breaking-out-with-viewport-units-and-calc/#one-big-dumb-caveat
14
+ overflow-x: hidden;
15
+
16
+ p {
17
+ margin: 0 0 var(--nypl-space-s);
18
+ }
19
+
20
+ *,
21
+ *::after,
22
+ *::before {
23
+ box-sizing: inherit;
24
+ }
25
+ }
@@ -1,14 +1,3 @@
1
- // Focus state mixin
2
- @mixin focus-outline($darkBackground: false) {
3
- outline: 2px solid var(--ui-focus);
4
- outline-offset: 2px;
5
- z-index: 9999;
6
-
7
- @if $darkBackground {
8
- outline-color: var(--ui-white);
9
- }
10
- }
11
-
12
1
  // Apply :focus behavior to focusable elements only (For IE 11)
13
2
  .nypl-ds {
14
3
  input,
@@ -31,7 +20,3 @@
31
20
  }
32
21
  }
33
22
  }
34
-
35
- .focus {
36
- @include focus-outline;
37
- }
@@ -1,8 +1,19 @@
1
1
  .placeholder {
2
- --color-place-holder: var(--ui-gray-light);
2
+ --color-place-holder: var(--nypl-colors-ui-gray-dark);
3
3
 
4
- @include space-stack-page;
5
- @include space-inset-s;
4
+ margin-bottom: var(--nypl-space-l);
5
+ @include breakpoint($nypl-breakpoint-large) {
6
+ margin-bottom: var(--nypl-space-xl);
7
+ }
8
+
9
+ &--full {
10
+ margin-bottom: var(--nypl-space-xxl);
11
+ @include breakpoint($nypl-breakpoint-large) {
12
+ margin-bottom: var(--nypl-space-xxxl);
13
+ }
14
+ }
15
+
16
+ padding: var(--nypl-space-s);
6
17
 
7
18
  align-items: center;
8
19
  border: 4px dashed var(--color-place-holder);
@@ -1,11 +1,11 @@
1
1
  /**
2
- * $space-xxs: $space / 4; // 4px
3
- * $space-xs: $space / 2; // 8px
4
- * $space-s: $space * 1; // 16px
5
- * $space-m: $space * 1.5; // 24px
6
- * $space-l: $space * 2; // 32px
7
- * $space-xl: $space * 3; // 48px
8
- * $space-xxl: $space * 4; // 64px
2
+ * --nypl-space-xxs: --nypl-space-s / 4 // 4px or 0.25rem
3
+ * --nypl-space-xs: --nypl-space-s / 2 // 8px or 0.5rem
4
+ * --nypl-space-s: --nypl-space-s * 1; // 16px or 1rem
5
+ * --nypl-space-m: --nypl-space * 1.5; // 24px or 1.5rem
6
+ * --nypl-space-l: --nypl-space * 2; // 32px or 2rem
7
+ * --nypl-space-xl: --nypl-space * 3; // 48px or 3rem
8
+ * --nypl-space-xxl: --nypl-space * 4; // 64px or 4rem
9
9
  */
10
10
 
11
11
  @mixin space-inline-none {
@@ -13,31 +13,31 @@
13
13
  }
14
14
 
15
15
  @mixin space-inline-xxs {
16
- margin-right: var(--space-xxs);
16
+ margin-right: var(--nypl-space-xxs);
17
17
  }
18
18
 
19
19
  @mixin space-inline-xs {
20
- margin-right: var(--space-xs);
20
+ margin-right: var(--nypl-space-xs);
21
21
  }
22
22
 
23
23
  @mixin space-inline-s {
24
- margin-right: var(--space-s);
24
+ margin-right: var(--nypl-space-s);
25
25
  }
26
26
 
27
27
  @mixin space-inline-m {
28
- margin-right: var(--space-m);
28
+ margin-right: var(--nypl-space-m);
29
29
  }
30
30
 
31
31
  @mixin space-inline-l {
32
- margin-right: var(--space-l);
32
+ margin-right: var(--nypl-space-l);
33
33
  }
34
34
 
35
35
  @mixin space-inline-xl {
36
- margin-right: var(--space-xl);
36
+ margin-right: var(--nypl-space-xl);
37
37
  }
38
38
 
39
39
  @mixin space-inline-xxl {
40
- margin-right: var(--space-xxl);
40
+ margin-right: var(--nypl-space-xxl);
41
41
  }
42
42
 
43
43
  @mixin get-space-inline($id) {