@hyphen/hyphen-components 2.9.0

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 (319) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +70 -0
  3. package/package.json +138 -0
  4. package/src/components/Alert/Alert.constants.ts +19 -0
  5. package/src/components/Alert/Alert.mdx +29 -0
  6. package/src/components/Alert/Alert.module.scss +74 -0
  7. package/src/components/Alert/Alert.stories.tsx +102 -0
  8. package/src/components/Alert/Alert.test.tsx +187 -0
  9. package/src/components/Alert/Alert.tsx +157 -0
  10. package/src/components/Alert/Alert.types.ts +14 -0
  11. package/src/components/Badge/Badge.mdx +28 -0
  12. package/src/components/Badge/Badge.module.scss +155 -0
  13. package/src/components/Badge/Badge.stories.tsx +52 -0
  14. package/src/components/Badge/Badge.test.tsx +74 -0
  15. package/src/components/Badge/Badge.tsx +70 -0
  16. package/src/components/Box/Box.mdx +259 -0
  17. package/src/components/Box/Box.module.scss +16 -0
  18. package/src/components/Box/Box.stories.tsx +1679 -0
  19. package/src/components/Box/Box.test.tsx +478 -0
  20. package/src/components/Box/Box.tsx +636 -0
  21. package/src/components/Button/Button.constants.ts +10 -0
  22. package/src/components/Button/Button.mdx +71 -0
  23. package/src/components/Button/Button.module.scss +312 -0
  24. package/src/components/Button/Button.stories.tsx +117 -0
  25. package/src/components/Button/Button.test.tsx +460 -0
  26. package/src/components/Button/Button.tsx +241 -0
  27. package/src/components/Card/Card.mdx +46 -0
  28. package/src/components/Card/Card.module.scss +6 -0
  29. package/src/components/Card/Card.stories.tsx +101 -0
  30. package/src/components/Card/Card.test.tsx +11 -0
  31. package/src/components/Card/Card.tsx +61 -0
  32. package/src/components/Card/components/CardFooter/CardFooter.test.tsx +11 -0
  33. package/src/components/Card/components/CardFooter/CardFooter.tsx +35 -0
  34. package/src/components/Card/components/CardHeader/CardHeader.test.tsx +23 -0
  35. package/src/components/Card/components/CardHeader/CardHeader.tsx +54 -0
  36. package/src/components/Card/components/CardSection/CardSection.test.tsx +28 -0
  37. package/src/components/Card/components/CardSection/CardSection.tsx +102 -0
  38. package/src/components/Card/components/index.ts +3 -0
  39. package/src/components/CheckboxInput/CheckboxInput.mdx +98 -0
  40. package/src/components/CheckboxInput/CheckboxInput.stories.tsx +254 -0
  41. package/src/components/CheckboxInput/CheckboxInput.test.tsx +436 -0
  42. package/src/components/CheckboxInput/CheckboxInput.tsx +171 -0
  43. package/src/components/CheckboxInput/components/Checkbox.module.scss +174 -0
  44. package/src/components/CheckboxInput/components/Checkbox.test.tsx +201 -0
  45. package/src/components/CheckboxInput/components/Checkbox.tsx +176 -0
  46. package/src/components/CheckboxInput/components/CheckboxIcon.tsx +71 -0
  47. package/src/components/DateInput/DateInput.mdx +61 -0
  48. package/src/components/DateInput/DateInput.stories.tsx +168 -0
  49. package/src/components/DateInput/DateInput.test.tsx +258 -0
  50. package/src/components/DateInput/DateInput.tsx +189 -0
  51. package/src/components/DatePicker/DatePicker.mdx +52 -0
  52. package/src/components/DatePicker/DatePicker.module.scss +603 -0
  53. package/src/components/DatePicker/DatePicker.stories.tsx +199 -0
  54. package/src/components/DatePicker/DatePicker.test.tsx +26 -0
  55. package/src/components/DatePicker/DatePicker.tsx +138 -0
  56. package/src/components/Details/Details.mdx +30 -0
  57. package/src/components/Details/Details.module.scss +32 -0
  58. package/src/components/Details/Details.stories.tsx +38 -0
  59. package/src/components/Details/Details.test.tsx +189 -0
  60. package/src/components/Details/Details.tsx +51 -0
  61. package/src/components/Details/DetailsSummary.tsx +65 -0
  62. package/src/components/Drawer/Drawer.mdx +117 -0
  63. package/src/components/Drawer/Drawer.module.scss +96 -0
  64. package/src/components/Drawer/Drawer.stories.tsx +380 -0
  65. package/src/components/Drawer/Drawer.test.tsx +90 -0
  66. package/src/components/Drawer/Drawer.tsx +249 -0
  67. package/src/components/FormControl/FormControl.tsx +78 -0
  68. package/src/components/FormLabel/FormLabel.mdx +24 -0
  69. package/src/components/FormLabel/FormLabel.module.scss +19 -0
  70. package/src/components/FormLabel/FormLabel.stories.tsx +20 -0
  71. package/src/components/FormLabel/FormLabel.test.tsx +35 -0
  72. package/src/components/FormLabel/FormLabel.tsx +96 -0
  73. package/src/components/Formik/Formik.mdx +10 -0
  74. package/src/components/Formik/Formik.stories.tsx +307 -0
  75. package/src/components/Formik/FormikCheckboxInput/FormikCheckboxInput.test.tsx +172 -0
  76. package/src/components/Formik/FormikCheckboxInput/FormikCheckboxInput.tsx +41 -0
  77. package/src/components/Formik/FormikRadioGroup/FormikRadioGroup.test.tsx +205 -0
  78. package/src/components/Formik/FormikRadioGroup/FormikRadioGroup.tsx +37 -0
  79. package/src/components/Formik/FormikSelectInput/FormikSelectInput.test.tsx +210 -0
  80. package/src/components/Formik/FormikSelectInput/FormikSelectInput.tsx +41 -0
  81. package/src/components/Formik/FormikSelectInputInset/FormikSelectInputInset.test.tsx +153 -0
  82. package/src/components/Formik/FormikSelectInputInset/FormikSelectInputInset.tsx +44 -0
  83. package/src/components/Formik/FormikSelectInputNative/FormikSelectInputNative.test.tsx +161 -0
  84. package/src/components/Formik/FormikSelectInputNative/FormikSelectInputNative.tsx +46 -0
  85. package/src/components/Formik/FormikTextInput/FormikTextInput.test.tsx +176 -0
  86. package/src/components/Formik/FormikTextInput/FormikTextInput.tsx +38 -0
  87. package/src/components/Formik/FormikTextInputInset/FormikTextInputInset.test.tsx +170 -0
  88. package/src/components/Formik/FormikTextInputInset/FormikTextInputInset.tsx +42 -0
  89. package/src/components/Formik/FormikTextareaInput/FormikTextareaInput.test.tsx +186 -0
  90. package/src/components/Formik/FormikTextareaInput/FormikTextareaInput.tsx +42 -0
  91. package/src/components/Formik/FormikTextareaInputInset/FormikTextareaInputInset.test.tsx +179 -0
  92. package/src/components/Formik/FormikTextareaInputInset/FormikTextareaInputInset.tsx +42 -0
  93. package/src/components/Formik/FormikTimePicker/FormikTimePicker.test.tsx +224 -0
  94. package/src/components/Formik/FormikTimePicker/FormikTimePicker.tsx +37 -0
  95. package/src/components/Formik/FormikTimePickerNative/FormikTimePickerNative.test.tsx +175 -0
  96. package/src/components/Formik/FormikTimePickerNative/FormikTimePickerNative.tsx +38 -0
  97. package/src/components/Formik/FormikToggle/FormikToggle.test.tsx +172 -0
  98. package/src/components/Formik/FormikToggle/FormikToggle.tsx +38 -0
  99. package/src/components/Heading/Heading.constants.ts +19 -0
  100. package/src/components/Heading/Heading.mdx +35 -0
  101. package/src/components/Heading/Heading.module.scss +5 -0
  102. package/src/components/Heading/Heading.stories.tsx +90 -0
  103. package/src/components/Heading/Heading.test.tsx +67 -0
  104. package/src/components/Heading/Heading.tsx +67 -0
  105. package/src/components/HelpText/HelpText.module.scss +14 -0
  106. package/src/components/HelpText/HelpText.tsx +33 -0
  107. package/src/components/Icon/Icon.mdx +40 -0
  108. package/src/components/Icon/Icon.stories.tsx +72 -0
  109. package/src/components/Icon/Icon.test.tsx +30 -0
  110. package/src/components/Icon/Icon.tsx +61 -0
  111. package/src/components/InputValidationMessage/InputValidationMessage.module.scss +3 -0
  112. package/src/components/InputValidationMessage/InputValidationMessage.tsx +27 -0
  113. package/src/components/Modal/Modal.mdx +60 -0
  114. package/src/components/Modal/Modal.module.scss +135 -0
  115. package/src/components/Modal/Modal.stories.tsx +194 -0
  116. package/src/components/Modal/Modal.test.tsx +81 -0
  117. package/src/components/Modal/Modal.tsx +174 -0
  118. package/src/components/Modal/components/ModalBody/ModalBody.test.tsx +20 -0
  119. package/src/components/Modal/components/ModalBody/ModalBody.tsx +24 -0
  120. package/src/components/Modal/components/ModalFooter/ModalFooter.test.tsx +32 -0
  121. package/src/components/Modal/components/ModalFooter/ModalFooter.tsx +37 -0
  122. package/src/components/Modal/components/ModalHeader/ModalHeader.test.tsx +29 -0
  123. package/src/components/Modal/components/ModalHeader/ModalHeader.tsx +58 -0
  124. package/src/components/Modal/components/index.ts +5 -0
  125. package/src/components/Pagination/Pagination.mdx +26 -0
  126. package/src/components/Pagination/Pagination.stories.tsx +55 -0
  127. package/src/components/Pagination/Pagination.test.tsx +225 -0
  128. package/src/components/Pagination/Pagination.tsx +162 -0
  129. package/src/components/Pagination/Pagination.utilities.test.ts +133 -0
  130. package/src/components/Pagination/Pagination.utilities.ts +101 -0
  131. package/src/components/Popover/Popover.mdx +104 -0
  132. package/src/components/Popover/Popover.module.scss +74 -0
  133. package/src/components/Popover/Popover.stories.tsx +471 -0
  134. package/src/components/Popover/Popover.test.tsx +128 -0
  135. package/src/components/Popover/Popover.tsx +277 -0
  136. package/src/components/RadioGroup/RadioGroup.mdx +81 -0
  137. package/src/components/RadioGroup/RadioGroup.module.scss +23 -0
  138. package/src/components/RadioGroup/RadioGroup.stories.tsx +375 -0
  139. package/src/components/RadioGroup/RadioGroup.test.tsx +282 -0
  140. package/src/components/RadioGroup/RadioGroup.tsx +145 -0
  141. package/src/components/RadioGroup/RadioInput/RadioInput.module.scss +114 -0
  142. package/src/components/RadioGroup/RadioInput/RadioInput.test.tsx +156 -0
  143. package/src/components/RadioGroup/RadioInput/RadioInput.tsx +148 -0
  144. package/src/components/RadioGroup/RadioInput/RadioInputIcon.tsx +59 -0
  145. package/src/components/ResponsiveProvider/ResponsiveProvider.mdx +36 -0
  146. package/src/components/ResponsiveProvider/ResponsiveProvider.stories.tsx +54 -0
  147. package/src/components/ResponsiveProvider/ResponsiveProvider.test.tsx +70 -0
  148. package/src/components/ResponsiveProvider/ResponsiveProvider.tsx +73 -0
  149. package/src/components/SelectInput/SelectInput.mdx +115 -0
  150. package/src/components/SelectInput/SelectInput.module.scss +357 -0
  151. package/src/components/SelectInput/SelectInput.stories.tsx +373 -0
  152. package/src/components/SelectInput/SelectInput.test.tsx +403 -0
  153. package/src/components/SelectInput/SelectInput.tsx +245 -0
  154. package/src/components/SelectInputInset/SelectInputInset.mdx +56 -0
  155. package/src/components/SelectInputInset/SelectInputInset.module.scss +397 -0
  156. package/src/components/SelectInputInset/SelectInputInset.stories.tsx +189 -0
  157. package/src/components/SelectInputInset/SelectInputInset.test.tsx +305 -0
  158. package/src/components/SelectInputInset/SelectInputInset.tsx +235 -0
  159. package/src/components/SelectInputNative/SelectInputNative.mdx +87 -0
  160. package/src/components/SelectInputNative/SelectInputNative.module.scss +356 -0
  161. package/src/components/SelectInputNative/SelectInputNative.stories.tsx +282 -0
  162. package/src/components/SelectInputNative/SelectInputNative.test.tsx +341 -0
  163. package/src/components/SelectInputNative/SelectInputNative.tsx +121 -0
  164. package/src/components/Spinner/Spinner.mdx +29 -0
  165. package/src/components/Spinner/Spinner.module.scss +16 -0
  166. package/src/components/Spinner/Spinner.stories.tsx +48 -0
  167. package/src/components/Spinner/Spinner.test.tsx +47 -0
  168. package/src/components/Spinner/Spinner.tsx +116 -0
  169. package/src/components/Table/Table.mdx +216 -0
  170. package/src/components/Table/Table.module.scss +61 -0
  171. package/src/components/Table/Table.stories.tsx +884 -0
  172. package/src/components/Table/Table.test.tsx +437 -0
  173. package/src/components/Table/Table.tsx +171 -0
  174. package/src/components/Table/TableBody/TableBody.module.scss +19 -0
  175. package/src/components/Table/TableBody/TableBody.test.tsx +38 -0
  176. package/src/components/Table/TableBody/TableBody.tsx +96 -0
  177. package/src/components/Table/TableBody/TableBodyCell/TableBodyCell.module.scss +47 -0
  178. package/src/components/Table/TableBody/TableBodyCell/TableBodyCell.test.tsx +81 -0
  179. package/src/components/Table/TableBody/TableBodyCell/TableBodyCell.tsx +94 -0
  180. package/src/components/Table/TableHead/TableHead.test.tsx +20 -0
  181. package/src/components/Table/TableHead/TableHead.tsx +78 -0
  182. package/src/components/Table/TableHead/TableHeaderCell/TableHeaderCell.module.scss +72 -0
  183. package/src/components/Table/TableHead/TableHeaderCell/TableHeaderCell.test.tsx +187 -0
  184. package/src/components/Table/TableHead/TableHeaderCell/TableHeaderCell.tsx +192 -0
  185. package/src/components/Table/common/TableRow/TableRow.module.scss +5 -0
  186. package/src/components/Table/common/TableRow/TableRow.test.tsx +52 -0
  187. package/src/components/Table/common/TableRow/TableRow.tsx +155 -0
  188. package/src/components/TextInput/TextInput.mdx +96 -0
  189. package/src/components/TextInput/TextInput.module.scss +405 -0
  190. package/src/components/TextInput/TextInput.stories.tsx +268 -0
  191. package/src/components/TextInput/TextInput.test.tsx +231 -0
  192. package/src/components/TextInput/TextInput.tsx +263 -0
  193. package/src/components/TextInputInset/TextInputInset.mdx +62 -0
  194. package/src/components/TextInputInset/TextInputInset.module.scss +418 -0
  195. package/src/components/TextInputInset/TextInputInset.stories.tsx +213 -0
  196. package/src/components/TextInputInset/TextInputInset.test.tsx +222 -0
  197. package/src/components/TextInputInset/TextInputInset.tsx +261 -0
  198. package/src/components/TextareaInput/TextareaInput.mdx +117 -0
  199. package/src/components/TextareaInput/TextareaInput.module.scss +275 -0
  200. package/src/components/TextareaInput/TextareaInput.stories.tsx +293 -0
  201. package/src/components/TextareaInput/TextareaInput.test.tsx +195 -0
  202. package/src/components/TextareaInput/TextareaInput.tsx +182 -0
  203. package/src/components/TextareaInputInset/TextareaInputInset.mdx +55 -0
  204. package/src/components/TextareaInputInset/TextareaInputInset.module.scss +337 -0
  205. package/src/components/TextareaInputInset/TextareaInputInset.stories.tsx +160 -0
  206. package/src/components/TextareaInputInset/TextareaInputInset.test.tsx +199 -0
  207. package/src/components/TextareaInputInset/TextareaInputInset.tsx +213 -0
  208. package/src/components/ThemeProvider/ThemeProvider.mdx +11 -0
  209. package/src/components/ThemeProvider/ThemeProvider.stories.tsx +56 -0
  210. package/src/components/ThemeProvider/ThemeProvider.tsx +75 -0
  211. package/src/components/TimePicker/TimePicker.mdx +75 -0
  212. package/src/components/TimePicker/TimePicker.stories.tsx +149 -0
  213. package/src/components/TimePicker/TimePicker.test.tsx +97 -0
  214. package/src/components/TimePicker/TimePicker.tsx +83 -0
  215. package/src/components/TimePickerNative/TimePickerNative.mdx +67 -0
  216. package/src/components/TimePickerNative/TimePickerNative.stories.tsx +151 -0
  217. package/src/components/TimePickerNative/TimePickerNative.test.tsx +117 -0
  218. package/src/components/TimePickerNative/TimePickerNative.tsx +93 -0
  219. package/src/components/Toast/Toast.mdx +134 -0
  220. package/src/components/Toast/Toast.store.ts +280 -0
  221. package/src/components/Toast/Toast.stories.tsx +283 -0
  222. package/src/components/Toast/Toast.test.tsx +784 -0
  223. package/src/components/Toast/Toast.types.ts +98 -0
  224. package/src/components/Toast/ToastContainer.tsx +170 -0
  225. package/src/components/Toast/ToastNotification.module.scss +63 -0
  226. package/src/components/Toast/ToastNotification.tsx +176 -0
  227. package/src/components/Toast/index.ts +4 -0
  228. package/src/components/Toast/toast.ts +102 -0
  229. package/src/components/Toast/useToasts.ts +102 -0
  230. package/src/components/Toggle/Toggle.mdx +51 -0
  231. package/src/components/Toggle/Toggle.module.scss +294 -0
  232. package/src/components/Toggle/Toggle.stories.tsx +128 -0
  233. package/src/components/Toggle/Toggle.test.tsx +308 -0
  234. package/src/components/Toggle/Toggle.tsx +184 -0
  235. package/src/constants/keyCodes.ts +2 -0
  236. package/src/docs/Brands.mdx +153 -0
  237. package/src/docs/Colors.mdx +158 -0
  238. package/src/docs/DesignTokens.mdx +415 -0
  239. package/src/docs/GetStarted.mdx +47 -0
  240. package/src/docs/intro.mdx +12 -0
  241. package/src/fonts/AvenirBold.otf +0 -0
  242. package/src/fonts/AvenirBold.woff +0 -0
  243. package/src/fonts/AvenirBold.woff2 +0 -0
  244. package/src/fonts/AvenirLight.otf +0 -0
  245. package/src/fonts/AvenirLight.woff +0 -0
  246. package/src/fonts/AvenirLight.woff2 +0 -0
  247. package/src/fonts/AvenirRegular.otf +0 -0
  248. package/src/fonts/AvenirRegular.woff +0 -0
  249. package/src/fonts/AvenirRegular.woff2 +0 -0
  250. package/src/fonts/Geist-Bold.otf +0 -0
  251. package/src/fonts/Geist-Bold.woff +0 -0
  252. package/src/fonts/Geist-Bold.woff2 +0 -0
  253. package/src/fonts/Geist-Medium.otf +0 -0
  254. package/src/fonts/Geist-Medium.woff +0 -0
  255. package/src/fonts/Geist-Medium.woff2 +0 -0
  256. package/src/fonts/Geist-Regular.otf +0 -0
  257. package/src/fonts/Geist-Regular.woff +0 -0
  258. package/src/fonts/Geist-Regular.woff2 +0 -0
  259. package/src/fonts/Geist-SemiBold.otf +0 -0
  260. package/src/fonts/Geist-SemiBold.woff +0 -0
  261. package/src/fonts/Geist-SemiBold.woff2 +0 -0
  262. package/src/fonts/GeistMono-Regular.otf +0 -0
  263. package/src/fonts/GeistMono-Regular.woff +0 -0
  264. package/src/fonts/GeistMono-Regular.woff2 +0 -0
  265. package/src/hooks/index.ts +4 -0
  266. package/src/hooks/useBreakpoint/useBreakpoint.mdx +26 -0
  267. package/src/hooks/useBreakpoint/useBreakpoint.stories.tsx +30 -0
  268. package/src/hooks/useBreakpoint/useBreakpoint.test.tsx +19 -0
  269. package/src/hooks/useBreakpoint/useBreakpoint.ts +50 -0
  270. package/src/hooks/useIsomorphicLayoutEffect/useIsomorphicLayouEffect.ts +5 -0
  271. package/src/hooks/useOpenClose/useOpenClose.mdx +15 -0
  272. package/src/hooks/useOpenClose/useOpenClose.stories.tsx +41 -0
  273. package/src/hooks/useOpenClose/useOpenClose.test.tsx +119 -0
  274. package/src/hooks/useOpenClose/useOpenClose.tsx +95 -0
  275. package/src/hooks/useWindowSize/useWindowSize.mdx +25 -0
  276. package/src/hooks/useWindowSize/useWindowSize.stories.tsx +35 -0
  277. package/src/hooks/useWindowSize/useWindowSize.ts +24 -0
  278. package/src/index.ts +48 -0
  279. package/src/lib/cssShorthandToClasses.test.ts +149 -0
  280. package/src/lib/cssShorthandToClasses.ts +133 -0
  281. package/src/lib/doesStringIncludeCssUnit.ts +6 -0
  282. package/src/lib/generateResponsiveClasses.test.ts +24 -0
  283. package/src/lib/generateResponsiveClasses.ts +30 -0
  284. package/src/lib/getAutoCompleteValue.test.ts +27 -0
  285. package/src/lib/getAutoCompleteValue.ts +12 -0
  286. package/src/lib/getColumnKeys.ts +27 -0
  287. package/src/lib/getDimensionCss.test.ts +148 -0
  288. package/src/lib/getDimensionCss.ts +73 -0
  289. package/src/lib/getElementType.test.tsx +42 -0
  290. package/src/lib/getElementType.ts +42 -0
  291. package/src/lib/getFlexCss.test.ts +122 -0
  292. package/src/lib/getFlexCss.ts +67 -0
  293. package/src/lib/index.ts +15 -0
  294. package/src/lib/isFunction.ts +6 -0
  295. package/src/lib/mergeRefs.ts +15 -0
  296. package/src/lib/prefersReducedMotion.ts +12 -0
  297. package/src/lib/react-children-utilities/filter.ts +12 -0
  298. package/src/lib/react-children-utilities/index.ts +1 -0
  299. package/src/lib/reactRouterClickHandler.ts +37 -0
  300. package/src/lib/resolveValue.ts +7 -0
  301. package/src/lib/tokens.ts +139 -0
  302. package/src/modes.ts +8 -0
  303. package/src/styles/animation.scss +152 -0
  304. package/src/styles/cursor.scss +43 -0
  305. package/src/styles/display.scss +119 -0
  306. package/src/styles/flex.scss +453 -0
  307. package/src/styles/fonts.scss +44 -0
  308. package/src/styles/globals/utilities.scss +4 -0
  309. package/src/styles/mixins.scss +14 -0
  310. package/src/styles/overflow.scss +41 -0
  311. package/src/styles/position.scss +45 -0
  312. package/src/styles/reset.scss +108 -0
  313. package/src/styles/text-align.scss +21 -0
  314. package/src/styles/utilities.scss +9 -0
  315. package/src/styles/variables/forms.scss +71 -0
  316. package/src/styles/variables/index.scss +3 -0
  317. package/src/styles/white-space.scss +21 -0
  318. package/src/types/index.ts +201 -0
  319. package/src/types/lib.types.ts +3 -0
@@ -0,0 +1,158 @@
1
+ import { ColorPalette, ColorItem, Meta } from '@storybook/addon-docs';
2
+ import designTokens from '@hyphen/hyphen-design-tokens/build/json/variables.json';
3
+
4
+ <Meta title="Foundation/Colors" />
5
+
6
+ ## Base Colors
7
+
8
+ <ColorPalette>
9
+ <ColorItem
10
+ title="color-base-white"
11
+ subtitle="White"
12
+ colors={[designTokens.color.base.white.value]}
13
+ />
14
+ <ColorItem
15
+ title="color-base-black"
16
+ subtitle="Black"
17
+ colors={[designTokens.color.base.black.value]}
18
+ />
19
+ <ColorItem
20
+ title="color-base-magenta"
21
+ subtitle="Black"
22
+ colors={[designTokens.color.base.magenta.value]}
23
+ />
24
+ <ColorItem
25
+ title="color-base-grey"
26
+ subtitle="Grey"
27
+ colors={Object.keys(designTokens.color.base.grey).reduce((acc, item, i) => {
28
+ acc[item] = Object.keys(designTokens.color.base.grey).map(
29
+ (g) => designTokens.color.base.grey[g].value
30
+ )[i];
31
+ return acc;
32
+ }, {})}
33
+ />
34
+ <ColorItem
35
+ title="color-base-primary"
36
+ subtitle="Primary"
37
+ colors={Object.keys(designTokens.color.base.primary).reduce(
38
+ (acc, item, i) => {
39
+ acc[item] = Object.keys(designTokens.color.base.primary).map(
40
+ (g) => designTokens.color.base.primary[g].value
41
+ )[i];
42
+ return acc;
43
+ },
44
+ {}
45
+ )}
46
+ />
47
+ <ColorItem
48
+ title="color-base-red"
49
+ subtitle="Red"
50
+ colors={Object.keys(designTokens.color.base.red).reduce((acc, item, i) => {
51
+ acc[item] = Object.keys(designTokens.color.base.red).map(
52
+ (g) => designTokens.color.base.red[g].value
53
+ )[i];
54
+ return acc;
55
+ }, {})}
56
+ />
57
+ <ColorItem
58
+ title="color-base-yellow"
59
+ subtitle="Primary"
60
+ colors={Object.keys(designTokens.color.base.yellow).reduce(
61
+ (acc, item, i) => {
62
+ acc[item] = Object.keys(designTokens.color.base.yellow).map(
63
+ (g) => designTokens.color.base.yellow[g].value
64
+ )[i];
65
+ return acc;
66
+ },
67
+ {}
68
+ )}
69
+ />
70
+ <ColorItem
71
+ title="color-base-green"
72
+ subtitle="Green"
73
+ colors={Object.keys(designTokens.color.base.green).reduce(
74
+ (acc, item, i) => {
75
+ acc[item] = Object.keys(designTokens.color.base.green).map(
76
+ (g) => designTokens.color.base.green[g].value
77
+ )[i];
78
+ return acc;
79
+ },
80
+ {}
81
+ )}
82
+ />
83
+ <ColorItem
84
+ title="color-base-blue"
85
+ subtitle="Blue"
86
+ colors={Object.keys(designTokens.color.base.blue).reduce(
87
+ (acc, item, i) => {
88
+ acc[item] = Object.keys(designTokens.color.base.blue).map(
89
+ (g) => designTokens.color.base.blue[g].value
90
+ )[i];
91
+ return acc;
92
+ },
93
+ {}
94
+ )}
95
+ />
96
+ <ColorItem
97
+ title="color-base-purple"
98
+ subtitle="Purple"
99
+ colors={Object.keys(designTokens.color.base.purple).reduce(
100
+ (acc, item, i) => {
101
+ acc[item] = Object.keys(designTokens.color.base.purple).map(
102
+ (g) => designTokens.color.base.purple[g].value
103
+ )[i];
104
+ return acc;
105
+ },
106
+ {}
107
+ )}
108
+ />
109
+
110
+ </ColorPalette>
111
+
112
+ ## Backgrounds
113
+
114
+ <ColorPalette>
115
+ <ColorItem
116
+ title="Backgrounds"
117
+ subtitle="used for backgrounds"
118
+ colors={Object.keys(designTokens.color.background).reduce(
119
+ (acc, item, i) => {
120
+ acc[item] = Object.keys(designTokens.color.background).map(
121
+ (g) => designTokens.color.background[g].value
122
+ )[i];
123
+ return acc;
124
+ },
125
+ {}
126
+ )}
127
+ />
128
+ </ColorPalette>
129
+
130
+ ## Borders
131
+
132
+ <ColorPalette>
133
+ <ColorItem
134
+ title="Backgrounds"
135
+ subtitle="used for borders"
136
+ colors={Object.keys(designTokens.color.border).reduce((acc, item, i) => {
137
+ acc[item] = Object.keys(designTokens.color.border).map(
138
+ (g) => designTokens.color.border[g].value
139
+ )[i];
140
+ return acc;
141
+ }, {})}
142
+ />
143
+ </ColorPalette>
144
+
145
+ ## Text
146
+
147
+ <ColorPalette>
148
+ <ColorItem
149
+ title="Text"
150
+ subtitle="used for text"
151
+ colors={Object.keys(designTokens.color.font).reduce((acc, item, i) => {
152
+ acc[item] = Object.keys(designTokens.color.font).map(
153
+ (g) => designTokens.color.font[g].value
154
+ )[i];
155
+ return acc;
156
+ }, {})}
157
+ />
158
+ </ColorPalette>
@@ -0,0 +1,415 @@
1
+ import { Meta } from '@storybook/blocks';
2
+ import designTokens from '@hyphen/hyphen-design-tokens/build/json/variables.json';
3
+
4
+ <Meta title="Foundation/Design Tokens" />
5
+
6
+ # Design Tokens
7
+
8
+ Design tokens are an abstraction of design decisions made to construct and maintain an application design system. Spacing, color, typography, styles and animation are represented as data, in our case json. They’re used in place of hard-coded values in order to ensure flexibility and unity across all our product experiences.
9
+
10
+ Design tokens are directly integrated into our component library and cover properties like spacing, color and component state.
11
+
12
+ We use [Style Dictionary](https://amzn.github.io/style-dictionary/) to generate style definitions across all platforms from a single source - removing roadblocks, errors, and inefficiencies across our workflow.
13
+
14
+ ## Source on Github
15
+
16
+ [Hyphen Design Tokens](https://github.com/hyphen/hyphen-design-tokens) are available as an [npm package](https://www.npmjs.com/package/@hyphen/hyphen-design-tokens) so that you can create a Hyphen unified product experience for your platform of choice.
17
+
18
+ ## Border Radius
19
+
20
+ Use these tokens for `border-radius`. They are defined in `rem`, which means they will scale when adjusting the root font size. Pixel values are calculated with a root font size of `16px`.
21
+
22
+ <table width="100%">
23
+ <thead>
24
+ <tr>
25
+ <th>token name</th>
26
+ <th>prop value</th>
27
+ <th>value</th>
28
+ <th>px</th>
29
+ </tr>
30
+ </thead>
31
+ <tbody>
32
+ {Object.entries(designTokens.size['border-radius']).map(
33
+ ([name, entry], i) => (
34
+ <tr key={i}>
35
+ <td>
36
+ <code>{`size-border-radius-${name}`}</code>
37
+ </td>
38
+ <td>
39
+ <code>{name}</code>
40
+ </td>
41
+ <td>{entry.value}</td>
42
+ <td>{name !== 'circle' ? entry.original.value * 16 : ''}</td>
43
+ </tr>
44
+ )
45
+ )}
46
+ </tbody>
47
+ </table>
48
+
49
+ ## Border Width
50
+
51
+ Use these tokens for `border-width`.
52
+
53
+ <table width="100%">
54
+ <thead>
55
+ <tr>
56
+ <th>token name</th>
57
+ <th>prop value</th>
58
+ <th>value</th>
59
+ </tr>
60
+ </thead>
61
+ <tbody>
62
+ {Object.entries(designTokens.size['border-width']).map(
63
+ ([name, entry], i) => (
64
+ <tr key={i}>
65
+ <td>
66
+ <code>{`size-border-width-${name}`}</code>
67
+ </td>
68
+ <td>
69
+ <code>{name}</code>
70
+ </td>
71
+ <td>{entry.value}</td>
72
+ </tr>
73
+ )
74
+ )}
75
+ </tbody>
76
+ </table>
77
+
78
+ ## Box Shadow
79
+
80
+ Used these tokens to set the outer shadow of an element.
81
+
82
+ <table width="100%">
83
+ <thead>
84
+ <tr>
85
+ <th>token name</th>
86
+ <th>prop value</th>
87
+ <th>value</th>
88
+ </tr>
89
+ </thead>
90
+ <tbody>
91
+ {Object.entries(designTokens.size['box-shadow']).map(([name, entry], i) => (
92
+ <tr key={i}>
93
+ <td>
94
+ <code>{`size-box-shadow-${name}`}</code>
95
+ </td>
96
+ <td>
97
+ <code>{name}</code>
98
+ </td>
99
+ <td>{entry.original.value}</td>
100
+ </tr>
101
+ ))}
102
+ </tbody>
103
+ </table>
104
+
105
+ ## Breakpoints
106
+
107
+ Hyphen components follow a "mobile-first" approach, where styles are set with mobile devices considered first. Then styling adjustments are made as each minimum viewport width &mdash; the breakpoint &mdash; is reached.
108
+
109
+ The following breakpoints are used in utility classes, but you can use them to modify your application depending on the user's viewport size.
110
+
111
+ <table width="100%">
112
+ <thead>
113
+ <tr>
114
+ <th>token name</th>
115
+ <th>value</th>
116
+ </tr>
117
+ </thead>
118
+ <tbody>
119
+ {Object.entries(designTokens.size.breakpoint).map(([name, entry], i) => (
120
+ <tr key={i}>
121
+ <td>
122
+ <code>{`size-breakpoint-${name}`}</code>
123
+ </td>
124
+ <td>{entry.original.value}px</td>
125
+ </tr>
126
+ ))}
127
+ </tbody>
128
+ </table>
129
+
130
+ ## Dimension
131
+
132
+ Dimension tokens are intended for use with `width` and `height` properties. They are defined in `rem`, which means they will scale when adjusting the root font size. Pixel values are calculated with a root font size of `16px`.
133
+
134
+ <table width="100%">
135
+ <thead>
136
+ <tr>
137
+ <th>token name</th>
138
+ <th>prop value</th>
139
+ <th>value</th>
140
+ <th>px</th>
141
+ </tr>
142
+ </thead>
143
+ <tbody>
144
+ {Object.entries(designTokens.size.dimension).map(([name, entry], i) => {
145
+ return (
146
+ <tr key={i}>
147
+ <td>
148
+ <code>{`size-dimension-${name}`}</code>
149
+ </td>
150
+ <td>
151
+ <code>{name}</code>
152
+ </td>
153
+ <td>{entry.value}</td>
154
+ <td>
155
+ {name === 'base'
156
+ ? '16'
157
+ : ['inherit', 'auto'].includes(name)
158
+ ? ''
159
+ : entry.original.value * 16}
160
+ </td>
161
+ </tr>
162
+ );
163
+ })}
164
+ </tbody>
165
+ </table>
166
+
167
+ <table width="100%">
168
+ <thead>
169
+ <tr>
170
+ <th>token name</th>
171
+ <th>prop value</th>
172
+ <th>value</th>
173
+ <th>px</th>
174
+ </tr>
175
+ </thead>
176
+ <tbody>
177
+ {Object.entries(designTokens.size.percentage).map(([name, entry], i) => {
178
+ return (
179
+ <tr key={i}>
180
+ <td>
181
+ <code>{`size-percentage-${name}`}</code>
182
+ </td>
183
+ <td>
184
+ <code>{name}</code>
185
+ </td>
186
+ <td>{entry.original.value}%</td>
187
+ <td>
188
+ {name === 'base'
189
+ ? '16'
190
+ : ['inherit', 'auto'].includes(name)
191
+ ? ''
192
+ : entry.original.value * 16}
193
+ </td>
194
+ </tr>
195
+ );
196
+ })}
197
+ </tbody>
198
+ </table>
199
+
200
+ ## Font Family
201
+
202
+ Use these tokens for `font-family`.
203
+
204
+ <table>
205
+ <thead>
206
+ <tr>
207
+ <th>token name</th>
208
+ <th>prop value</th>
209
+ <th>value</th>
210
+ </tr>
211
+ </thead>
212
+ <tbody>
213
+ {Object.entries(designTokens.assets['font-family']).map(
214
+ ([name, entry], i) => (
215
+ <tr key={i}>
216
+ <td>
217
+ <code>{`asset-font-family-${name}`}</code>
218
+ </td>
219
+ <td>
220
+ <code>{name}</code>
221
+ </td>
222
+ <td>{entry.value}</td>
223
+ </tr>
224
+ )
225
+ )}
226
+ </tbody>
227
+ </table>
228
+
229
+ ## Font Size
230
+
231
+ Use these tokens for `font-size`. They are defined in `rem`, which means they will scale when adjusting the root font size. Pixel values are calculated with a root font size of `16px`.
232
+
233
+ <table width="100%">
234
+ <thead>
235
+ <tr>
236
+ <th>token name</th>
237
+ <th>prop value</th>
238
+ <th>value</th>
239
+ <th>px</th>
240
+ </tr>
241
+ </thead>
242
+ <tbody>
243
+ {Object.entries(designTokens.size['font-size']).map(([name, entry], i) => (
244
+ <tr key={i}>
245
+ <td>
246
+ <code>{`size-font-size-${name}`}</code>
247
+ </td>
248
+ <td>
249
+ <code>{name}</code>
250
+ </td>
251
+ <td>{entry.value}</td>
252
+ <td>
253
+ {name === 'base'
254
+ ? '16'
255
+ : name === 'inherit'
256
+ ? ''
257
+ : entry.original.value * 16}
258
+ </td>
259
+ </tr>
260
+ ))}
261
+ </tbody>
262
+ </table>
263
+
264
+ ## Font Weight
265
+
266
+ Use these tokens for `font-weight`.
267
+
268
+ <table width="100%">
269
+ <thead>
270
+ <tr>
271
+ <th>token name</th>
272
+ <th>prop value</th>
273
+ <th>value</th>
274
+ </tr>
275
+ </thead>
276
+ <tbody>
277
+ {Object.entries(designTokens.size['font-weight']).map(
278
+ ([name, entry], i) => (
279
+ <tr key={i}>
280
+ <td>
281
+ <code>{`size-font-weight-${name}`}</code>
282
+ </td>
283
+ <td>
284
+ <code>{name}</code>
285
+ </td>
286
+ <td>{entry.original.value}</td>
287
+ </tr>
288
+ )
289
+ )}
290
+ </tbody>
291
+ </table>
292
+
293
+ ## Heading Size
294
+
295
+ Use these tokens for the `font-size` of Headings. They are defined in `rem`, which means they will scale when adjusting the root font size. Pixel values are calculated with a root font size of `16px`.
296
+
297
+ <table width="100%">
298
+ <thead>
299
+ <tr>
300
+ <th>token name</th>
301
+ <th>prop value</th>
302
+ <th>value</th>
303
+ <th>px</th>
304
+ </tr>
305
+ </thead>
306
+ <tbody>
307
+ {Object.entries(designTokens.size.heading).map(([name, entry], i) => (
308
+ <tr key={i}>
309
+ <td>
310
+ <code>{`size-heading-${name}`}</code>
311
+ </td>
312
+ <td>
313
+ <code>{name}</code>
314
+ </td>
315
+ <td>{entry.value}</td>
316
+ <td>
317
+ {name === 'base'
318
+ ? '16'
319
+ : name === 'inherit'
320
+ ? ''
321
+ : entry.original.value * 16}
322
+ </td>
323
+ </tr>
324
+ ))}
325
+ </tbody>
326
+ </table>
327
+
328
+ ## Line Height
329
+
330
+ Used these tokens to set the line-heights of elements.
331
+
332
+ <table width="100%">
333
+ <thead>
334
+ <tr>
335
+ <th>token name</th>
336
+ <th>prop value</th>
337
+ <th>value</th>
338
+ </tr>
339
+ </thead>
340
+ <tbody>
341
+ {Object.entries(designTokens.size['line-height']).map(
342
+ ([name, entry], i) => (
343
+ <tr key={i}>
344
+ <td>
345
+ <code>{`size-line-height-${name}`}</code>
346
+ </td>
347
+ <td>
348
+ <code>{name}</code>
349
+ </td>
350
+ <td>{entry.original.value}</td>
351
+ </tr>
352
+ )
353
+ )}
354
+ </tbody>
355
+ </table>
356
+
357
+ ## Spacing
358
+
359
+ Spacing tokens are intended for use with `margin` and `padding` properties. They are defined in `rem`, which means they will scale when adjusting the root font size. Pixel values are calculated with a root font size of `16px`.
360
+
361
+ <table width="100%">
362
+ <thead>
363
+ <tr>
364
+ <th>token name</th>
365
+ <th>prop value</th>
366
+ <th>value</th>
367
+ <th>px</th>
368
+ </tr>
369
+ </thead>
370
+ <tbody>
371
+ {Object.entries(designTokens.size.spacing).map(([name, entry], i) => {
372
+ return (
373
+ <tr key={i}>
374
+ <td>
375
+ <code>{`size-spacing-${name}`}</code>
376
+ </td>
377
+ <td>
378
+ <code>{name}</code>
379
+ </td>
380
+ <td>{entry.value}</td>
381
+ <td>
382
+ {name === 'base'
383
+ ? '16'
384
+ : ['inherit', 'auto'].includes(name)
385
+ ? ''
386
+ : entry.original.value * 16}
387
+ </td>
388
+ </tr>
389
+ );
390
+ })}
391
+ </tbody>
392
+ </table>
393
+
394
+ ## Z-Index
395
+
396
+ Used these tokens to set the z-index order of layering elements.
397
+
398
+ <table width="100%">
399
+ <thead>
400
+ <tr>
401
+ <th>token name</th>
402
+ <th>value</th>
403
+ </tr>
404
+ </thead>
405
+ <tbody>
406
+ {Object.entries(designTokens.size['z-index']).map(([name, entry], i) => (
407
+ <tr key={i}>
408
+ <td>
409
+ <code>{`size-z-index-${name}`}</code>
410
+ </td>
411
+ <td>{entry.original.value}</td>
412
+ </tr>
413
+ ))}
414
+ </tbody>
415
+ </table>
@@ -0,0 +1,47 @@
1
+ import { Meta } from '@storybook/blocks';
2
+
3
+ <Meta title="About/Get Started" />
4
+
5
+ # Get Started
6
+
7
+ ### 1. Install
8
+
9
+ `yarn add @hyphen/hyphen-components`
10
+
11
+ or
12
+
13
+ `npm install @hyphen/hyphen-components`
14
+
15
+ ### 2. Import Global CSS
16
+
17
+ ```jsx
18
+ import '@hyphen/hyphen-components/dist/css/utilities.css';
19
+ import '@hyphen/hyphen-components/dist/css/variables.css';
20
+ import '@hyphen/hyphen-components/dist/css/index.css';
21
+ ```
22
+
23
+ ### 3. Import Global CSS Reset (Optional)
24
+
25
+ ```jsx
26
+ import '@hyphen/hyphen-components/dist/css/reset.css';
27
+ ```
28
+
29
+ ### 4. Import Font (Optional)
30
+
31
+ ```jsx
32
+ import '@hyphen/hyphen-components/dist/css/fonts';
33
+ ```
34
+
35
+ ### 5. Basic Usage
36
+
37
+ ```jsx
38
+ import React from 'react';
39
+ import ReactDOM from 'react-dom';
40
+ import { Box } from '@hyphen/hyphen-components';
41
+
42
+ function App() {
43
+ return <Box>Hello World</Box>;
44
+ }
45
+
46
+ ReactDOM.render(<App />, document.querySelector('#app'));
47
+ ```
@@ -0,0 +1,12 @@
1
+ import { Meta } from '@storybook/blocks';
2
+
3
+ <Meta title="About/Introduction" />
4
+
5
+ # Hyphen Design System
6
+
7
+ Welcome to the Hyphen Design System, whose purpose is to help us deliver high quality Hyphen branded applications, faster and better. It consists of the following:
8
+
9
+ - [Hyphen Components](https://github.com/hyphen/hyphen-components) - an open source, react-based, component library for Hyphen applications and websites.
10
+ - [Hyphen Design Tokens](https://github.com/hyphen/hyphen-design-tokens) - A central location to store shared attributes of the Hyphen Design System. These include things like color, fonts, spacing, and more.
11
+
12
+ ❤️ The Hyphen Team
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,4 @@
1
+ export * from './useBreakpoint/useBreakpoint';
2
+ export * from './useOpenClose/useOpenClose';
3
+ export * from './useWindowSize/useWindowSize';
4
+ export * from './useIsomorphicLayoutEffect/useIsomorphicLayouEffect';