@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
@@ -70,12 +70,20 @@ export const animalCrossing = [
70
70
  {
71
71
  label: "Mr. Resetti",
72
72
  content:
73
- "<strong>Mr. Resetti</strong>, full name Sonny Resetti, is a fictional character from the Animal Crossing series of video games by Nintendo. His first appearance was in the Nintendo 64 game Dōbutsu no Mori, released in Europe and North America on the GameCube as Animal Crossing.",
73
+ "<strong>Mr. Resetti</strong>, full name Sonny Resetti, is a fictional " +
74
+ "character from the Animal Crossing series of video games by Nintendo. " +
75
+ "His first appearance was in the Nintendo 64 game Dōbutsu no Mori, " +
76
+ "released in Europe and North America on the GameCube as Animal Crossing.",
74
77
  },
75
78
  {
76
79
  label: "Zucker",
77
80
  content:
78
- "<strong>Zucker</strong> is a lazy octopus villager who first appeared in New Leaf. His Japanese name and general appearance refers to the Japanese snack takoyaki, which is a fried ball of dough commonly filled with minced octopus. His catchphrase is a reference to how he is an underwater animal. He has the same initial phrase as Bertha. He has the nature hobby.",
81
+ "<strong>Zucker</strong> is a lazy octopus villager who first appeared " +
82
+ "in New Leaf. His Japanese name and general appearance refers to the " +
83
+ "Japanese snack takoyaki, which is a fried ball of dough commonly " +
84
+ "filled with minced octopus. His catchphrase is a reference to how he " +
85
+ "is an underwater animal. He has the same initial phrase as Bertha. He " +
86
+ "has the nature hobby.",
79
87
  },
80
88
  ];
81
89
 
@@ -100,8 +108,13 @@ _Note: this is the recommended approach._
100
108
 
101
109
  We recommended passing in the data for the `Tabs` component through the `data`
102
110
  prop. This allows the consumer to pass in well-formed data and always generate
103
- the correct DOM. Internally in the DS `Tabs` component, we map through the data
104
- array and generate the appropriate components needed for the layout.
111
+ the correct DOM.
112
+
113
+ Internally in the DS `Tabs` component:
114
+
115
+ - we map through the data array and generate the appropriate components needed
116
+ for the layout.
117
+ - adds the carousel feature for the mobile view.
105
118
 
106
119
  Note that HTML is allowed in the `content` property in each object as part of the
107
120
  string or as straight HTML.
@@ -122,12 +135,36 @@ const animalCrossing = [
122
135
  content:
123
136
  "<p>Totakeke, more commonly known as <b>K.K. Slider or K.K.</b>, is ...",
124
137
  },
138
+ {
139
+ label: "Mr. Resetti",
140
+ content:
141
+ "<strong>Mr. Resetti</strong>, full name Sonny Resetti, is a ...",
142
+ },
143
+ {
144
+ label: "Zucker",
145
+ content:
146
+ "<strong>Zucker</strong> is a lazy octopus villager who first ...",
147
+ },
125
148
  ];
126
149
 
127
150
  // ...
128
151
  <Tabs contentData={animalCrossing} />;
129
152
  ```
130
153
 
154
+ ## Responsive Mobile Carousel
155
+
156
+ For both, the `contentData` prop approach and the children component approach
157
+ (described below in this document), the mobile carousel feature is built. This
158
+ adds "previous" and "next" arrows in the tab list for users to scroll through
159
+ all the tabs while the panel stays static.
160
+
161
+ Note that for the children component approach, we expect a `TabList` component
162
+ to be passed or else the mobile carousel will _not_ be built. More on this in
163
+ the [With Children Components](#with-children-components) section.
164
+
165
+ To view and test this in Storybook, go to the "Canvas" tab and change the
166
+ viewport in the Storybook toolbar at the top of the page.
167
+
131
168
  ## With Callback Event Function
132
169
 
133
170
  If you need to keep track of the index of current tab that was selected, pass
@@ -178,7 +215,10 @@ available components, you will probably have to iterate or map through an array
178
215
  to get the desired outcome. The DS `Tabs` component does this internally for
179
216
  you so this should be a last resort option.
180
217
 
181
- Make sure all five components are imported to use this approach.
218
+ Make sure that:
219
+
220
+ - all five components are imported to use this approach.
221
+ - the structure follows the example below for the mobile carousel to render properly.
182
222
 
183
223
  ```jsx
184
224
  import {
@@ -197,11 +237,16 @@ import {
197
237
  <Tab>Tom Nook</Tab>
198
238
  <Tab>Isabelle</Tab>
199
239
  <Tab>K.K. Slider</Tab>
240
+ <Tab>Mr. Resetti</Tab>
241
+ <Tab>Zucker</Tab>
200
242
  </TabList>
201
243
  <TabPanels>
202
244
  <TabPanel>
203
- Tom Nook, known in Japan as Tanukichi, is a fictional character in the
204
- Animal Crossing series who operates the village store.
245
+ <p>
246
+ Tom Nook, <b>known in Japan as Tanukichi</b>, is a fictional
247
+ character in the Animal Crossing series who operates the village
248
+ store.
249
+ </p>
205
250
  </TabPanel>
206
251
  <TabPanel>
207
252
  Isabelle, known as Shizue in Japan, is a fictional character from the
@@ -210,10 +255,27 @@ import {
210
255
  serves as the secretary to the player character.
211
256
  </TabPanel>
212
257
  <TabPanel>
213
- Totakeke, more commonly known as K.K. Slider or K.K., is a fictional
214
- character within the Animal Crossing franchise. One of the franchise's
215
- most popular characters, he debuted in the title Animal Crossing, and
216
- has appeared in every installment since.
258
+ <p>
259
+ Totakeke, more commonly known as <b>K.K. Slider or K.K.</b>, is a
260
+ fictional character within the Animal Crossing franchise. One of the
261
+ franchise's most popular characters, he debuted in the title Animal
262
+ Crossing, and has appeared in every installment since.
263
+ </p>
264
+ </TabPanel>
265
+ <TabPanel>
266
+ <strong>Mr. Resetti</strong>, full name Sonny Resetti, is a fictional
267
+ character from the Animal Crossing series of video games by Nintendo.
268
+ His first appearance was in the Nintendo 64 game Dōbutsu no Mori,
269
+ released in Europe and North America on the GameCube as Animal
270
+ Crossing.
271
+ </TabPanel>
272
+ <TabPanel>
273
+ <strong>Zucker</strong> is a lazy octopus villager who first appeared
274
+ in New Leaf. His Japanese name and general appearance refers to the
275
+ Japanese snack takoyaki, which is a fried ball of dough commonly
276
+ filled with minced octopus. His catchphrase is a reference to how he
277
+ is an underwater animal. He has the same initial phrase as Bertha. He
278
+ has the nature hobby.
217
279
  </TabPanel>
218
280
  </TabPanels>
219
281
  </Tabs>
@@ -1,19 +1,21 @@
1
1
  import * as React from "react";
2
2
  import {
3
3
  Box,
4
- Tabs as ChakraTabs,
5
- TabList,
6
4
  Tab,
5
+ TabList,
7
6
  TabPanels,
8
7
  TabPanel,
8
+ Tabs as ChakraTabs,
9
9
  useMultiStyleConfig,
10
10
  } from "@chakra-ui/react";
11
11
 
12
12
  import generateUUID from "../../helpers/generateUUID";
13
- import { IconNames, IconRotationTypes } from "../Icons/IconTypes";
13
+ import { IconNames, IconRotationTypes, IconSizes } from "../Icons/IconTypes";
14
14
  import Icon from "../Icons/Icon";
15
15
  import { ButtonTypes } from "../Button/ButtonTypes";
16
16
  import Button from "../Button/Button";
17
+ import useCarouselStyles from "../../hooks/useCarouselStyles";
18
+ import useWindowSize from "../../hooks/useWindowSize";
17
19
 
18
20
  // The general shape of the data object for each Tab.
19
21
  export interface TabsContentDataProps {
@@ -44,7 +46,7 @@ const onClickHash = (tabHash) => {
44
46
  };
45
47
 
46
48
  /**
47
- * This returns an object with `Tab` and `TabPanel` components to render in
49
+ * This returns an object with `Tab` and `TabPanel` components to rendered in
48
50
  * `TabList` and `TabPanels` components respectively.
49
51
  */
50
52
  const getElementsFromContentData = (data, useHash) => {
@@ -61,8 +63,7 @@ const getElementsFromContentData = (data, useHash) => {
61
63
  "needed, consider other navigational patterns."
62
64
  );
63
65
  }
64
-
65
- data.map((tab, index) => {
66
+ data.forEach((tab, index) => {
66
67
  let tempPanel;
67
68
  // For URL hash enabled tabs, we need to add a custom `onClick` to handle the URL hash.
68
69
  const tempTab = (
@@ -89,7 +90,10 @@ const getElementsFromContentData = (data, useHash) => {
89
90
  panels.push(tempPanel);
90
91
  });
91
92
 
92
- return { tabs, panels };
93
+ return {
94
+ tabs: <TabList>{tabs}</TabList>,
95
+ panels: <TabPanels>{panels}</TabPanels>,
96
+ };
93
97
  };
94
98
 
95
99
  /**
@@ -104,7 +108,7 @@ const getElementsFromChildren = (children) => {
104
108
  return {};
105
109
  }
106
110
 
107
- children.map((child) => {
111
+ children.forEach((child) => {
108
112
  if (child.type === TabList || child.props.mdxType === "TabList") {
109
113
  tabs.push(child);
110
114
 
@@ -139,9 +143,68 @@ function Tabs(props: React.PropsWithChildren<TabsProps>) {
139
143
  useHash = false,
140
144
  } = props;
141
145
  const styles = useMultiStyleConfig("Tabs", {});
146
+ // Just an estimate of the tab width for the mobile carousel.
147
+ const initTabWidth = 65;
148
+ // An estimate for the tab width for larger device widths.
149
+ const mediumTabWidth = 40;
150
+ const [tabWidth, setTabWidth] = React.useState(initTabWidth);
151
+ const windowDimensions = useWindowSize();
142
152
  const { tabs, panels } = contentData
143
153
  ? getElementsFromContentData(contentData, useHash)
144
154
  : getElementsFromChildren(children);
155
+ // `tabs` is an array for the children component approach but an object for
156
+ // the `contentData` prop approach. We need to get the right props key value
157
+ // to set the carousel's length.
158
+ const tabProps = tabs[0] ? tabs[0]?.props : (tabs as any).props;
159
+ const { prevSlide, nextSlide, carouselStyle, goToStart } = useCarouselStyles(
160
+ tabProps?.children?.length,
161
+ tabWidth
162
+ );
163
+ React.useEffect(() => {
164
+ if (windowDimensions.width > 320) {
165
+ setTabWidth(mediumTabWidth);
166
+ } else {
167
+ setTabWidth(initTabWidth);
168
+ }
169
+ // If we are on larger viewports, reset the carousel so all tabs display.
170
+ if (windowDimensions.width > 600) {
171
+ goToStart();
172
+ }
173
+ }, [goToStart, windowDimensions.width]);
174
+ const previousButton = (
175
+ <Button
176
+ buttonType={ButtonTypes.Primary}
177
+ attributes={{
178
+ "aria-label": "Previous",
179
+ ...styles.buttonArrows,
180
+ left: "0",
181
+ }}
182
+ onClick={prevSlide}
183
+ >
184
+ <Icon
185
+ name={IconNames.Arrow}
186
+ iconRotation={IconRotationTypes.Rotate90}
187
+ size={IconSizes.Small}
188
+ />
189
+ </Button>
190
+ );
191
+ const nextButton = (
192
+ <Button
193
+ buttonType={ButtonTypes.Primary}
194
+ attributes={{
195
+ "aria-label": "Next",
196
+ ...styles.buttonArrows,
197
+ right: "0",
198
+ }}
199
+ onClick={nextSlide}
200
+ >
201
+ <Icon
202
+ name={IconNames.Arrow}
203
+ iconRotation={IconRotationTypes.Rotate270}
204
+ size={IconSizes.Small}
205
+ />
206
+ </Button>
207
+ );
145
208
 
146
209
  if (children && contentData?.length) {
147
210
  console.warn(
@@ -152,69 +215,27 @@ function Tabs(props: React.PropsWithChildren<TabsProps>) {
152
215
  return (
153
216
  <ChakraTabs
154
217
  id={id}
155
- // The following lazy loads each panel whenever it is needed.
156
- isLazy
157
218
  onChange={onChange}
158
219
  defaultIndex={defaultIndex}
159
220
  variant="enclosed"
221
+ // The following lazy loads each panel whenever it is needed.
222
+ isLazy
160
223
  >
161
- {contentData ? (
162
- <>
163
- <Box
164
- __css={styles.tablistWrapper}
165
- sx={{
166
- "&::-webkit-scrollbar": {
167
- display: "none",
168
- },
169
- }}
170
- >
171
- <Button
172
- buttonType={ButtonTypes.Primary}
173
- attributes={{
174
- "aria-label": "Previous",
175
- ...styles.buttonArrows,
176
- }}
177
- >
178
- <Icon
179
- name={IconNames.arrow}
180
- decorative={true}
181
- iconRotation={IconRotationTypes.rotate90}
182
- modifiers={["small"]}
183
- />
184
- </Button>
185
- <TabList>{tabs}</TabList>
186
- <Button
187
- buttonType={ButtonTypes.Primary}
188
- attributes={{
189
- "aria-label": "Next",
190
- ...styles.buttonArrows,
191
- }}
192
- >
193
- <Icon
194
- name={IconNames.arrow}
195
- decorative={true}
196
- iconRotation={IconRotationTypes.rotate270}
197
- modifiers={["small"]}
198
- />
199
- </Button>
200
- </Box>
201
- <TabPanels>{panels}</TabPanels>
202
- </>
203
- ) : (
204
- <>
205
- <Box
206
- __css={styles.tablistWrapper}
207
- sx={{
208
- "&::-webkit-scrollbar": {
209
- display: "none",
210
- },
211
- }}
212
- >
213
- {tabs}
214
- </Box>
215
- {panels}
216
- </>
217
- )}
224
+ <Box
225
+ __css={styles.tablistWrapper}
226
+ sx={{
227
+ "&::-webkit-scrollbar": {
228
+ display: "none",
229
+ },
230
+ }}
231
+ >
232
+ {previousButton}
233
+ <Box __css={styles.carouselParent}>
234
+ <Box {...carouselStyle}>{tabs}</Box>
235
+ </Box>
236
+ {nextButton}
237
+ </Box>
238
+ {panels}
218
239
  </ChakraTabs>
219
240
  );
220
241
  }