@edvisor/product-language 0.9.0 → 0.10.2

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 (407) hide show
  1. package/.babelrc +12 -0
  2. package/.eslintrc.json +147 -0
  3. package/.release-it.json +17 -0
  4. package/.storybook/main.js +57 -0
  5. package/.storybook/manager.js +7 -0
  6. package/.storybook/preview.js +15 -0
  7. package/.storybook/tsconfig.json +30 -0
  8. package/jest.config.ts +15 -0
  9. package/jest.setup.ts +2 -0
  10. package/package.json +2 -27
  11. package/project.json +98 -0
  12. package/src/README.md +61 -0
  13. package/src/assets/svg/example_icon.svg +3 -0
  14. package/src/assets/svg/example_icon_white.svg +3 -0
  15. package/src/assets/svg/spinner.svg +3 -0
  16. package/src/assets/svg/spinner_white.svg +3 -0
  17. package/src/helpers/index.ts +4 -0
  18. package/src/helpers/playground.ts +26 -0
  19. package/src/helpers/talesOf.tsx +42 -0
  20. package/src/index.ts +2 -0
  21. package/src/lib/components/README.md +49 -0
  22. package/src/lib/components/alert-banner/alert-banner.test.tsx +93 -0
  23. package/src/lib/components/alert-banner/alert-banner.tsx +117 -0
  24. package/src/lib/components/alert-banner/alert-level-flags.ts +101 -0
  25. package/src/lib/components/alert-banner/index.ts +1 -0
  26. package/src/lib/components/alert-banner/storybook/alert-banner.stories.mdx +67 -0
  27. package/src/lib/components/alert-banner/storybook/components.tsx +124 -0
  28. package/src/lib/components/badge/badge-type-flags.ts +72 -0
  29. package/src/lib/components/badge/badge.test.tsx +29 -0
  30. package/src/lib/components/badge/badge.tsx +22 -0
  31. package/src/lib/components/badge/index.ts +1 -0
  32. package/src/lib/components/badge/stories/badge.stories.mdx +44 -0
  33. package/src/lib/components/badge/stories/components.tsx +49 -0
  34. package/{lib/components/card/atoms/card-frame.d.ts → src/lib/components/card/atoms/card-frame.tsx} +16 -7
  35. package/src/lib/components/card/atoms/index.ts +1 -0
  36. package/src/lib/components/card/card.test.tsx +162 -0
  37. package/src/lib/components/card/card.tsx +78 -0
  38. package/src/lib/components/card/components/card-alert-banner-slot.tsx +16 -0
  39. package/src/lib/components/card/components/card-controls-slot.tsx +19 -0
  40. package/src/lib/components/card/components/card-section-slot.tsx +51 -0
  41. package/src/lib/components/card/components/index.ts +3 -0
  42. package/src/lib/components/card/index.ts +3 -0
  43. package/src/lib/components/card/molecules/index.ts +1 -0
  44. package/src/lib/components/card/molecules/left-right-card.test.tsx +89 -0
  45. package/src/lib/components/card/molecules/left-right-card.tsx +63 -0
  46. package/src/lib/components/card/storybook/card.stories.mdx +100 -0
  47. package/src/lib/components/card/storybook/components.tsx +227 -0
  48. package/src/lib/components/checkbox/checkbox.test.tsx +39 -0
  49. package/src/lib/components/checkbox/checkbox.tsx +70 -0
  50. package/src/lib/components/checkbox/helpers.tsx +98 -0
  51. package/src/lib/components/checkbox/index.tsx +1 -0
  52. package/src/lib/components/checkbox/stories/checkbox.stories.mdx +57 -0
  53. package/src/lib/components/checkbox/stories/components.tsx +84 -0
  54. package/src/lib/components/date-picker/components/custom-calendar.tsx +193 -0
  55. package/src/lib/components/date-picker/components/index.ts +1 -0
  56. package/src/lib/components/date-picker/data-picker.test.tsx +220 -0
  57. package/src/lib/components/date-picker/date-picker.tsx +10 -0
  58. package/src/lib/components/date-picker/helpers/date-picker-factory.tsx +210 -0
  59. package/src/lib/components/date-picker/index.ts +1 -0
  60. package/src/lib/components/date-picker/storybook/components.tsx +259 -0
  61. package/src/lib/components/date-picker/storybook/date-picker.stories.mdx +133 -0
  62. package/src/lib/components/divider/divider-type-flags.tsx +37 -0
  63. package/src/lib/components/divider/divider.test.tsx +34 -0
  64. package/src/lib/components/divider/divider.tsx +37 -0
  65. package/src/lib/components/divider/index.tsx +1 -0
  66. package/src/lib/components/divider/stories/components.tsx +13 -0
  67. package/src/lib/components/divider/stories/divider.stories.mdx +44 -0
  68. package/src/lib/components/flag/flag-size-flags.tsx +55 -0
  69. package/src/lib/components/flag/flag.list.tsx +788 -0
  70. package/src/lib/components/flag/flag.test.tsx +65 -0
  71. package/src/lib/components/flag/flag.tsx +97 -0
  72. package/src/lib/components/flag/index.tsx +1 -0
  73. package/src/lib/components/flag/stories/components.tsx +403 -0
  74. package/src/lib/components/flag/stories/flag.stories.mdx +48 -0
  75. package/src/lib/components/flag/stories/playGround-select.tsx +145 -0
  76. package/src/lib/components/icon/icon-list.tsx +135 -0
  77. package/src/lib/components/icon/icon.test.tsx +47 -0
  78. package/src/lib/components/icon/icon.tsx +181 -0
  79. package/src/lib/components/icon/index.tsx +1 -0
  80. package/src/lib/components/icon/stories/components.tsx +282 -0
  81. package/src/lib/components/icon/stories/icon.stories.mdx +65 -0
  82. package/src/lib/components/index.ts +26 -0
  83. package/src/lib/components/input-field/components/index.ts +2 -0
  84. package/src/lib/components/input-field/components/labeled-input.tsx +57 -0
  85. package/src/lib/components/input-field/components/stepper.tsx +64 -0
  86. package/src/lib/components/input-field/index.ts +6 -0
  87. package/src/lib/components/input-field/input-field.test.tsx +107 -0
  88. package/src/lib/components/input-field/input-field.tsx +154 -0
  89. package/src/lib/components/input-field/input-number.tsx +41 -0
  90. package/src/lib/components/input-field/input-text.tsx +30 -0
  91. package/src/lib/components/input-field/storybook/components.tsx +367 -0
  92. package/src/lib/components/input-field/storybook/input-field.stories.mdx +120 -0
  93. package/src/lib/components/layout/flex.tsx +22 -0
  94. package/src/lib/components/layout/grid-layout.tsx +40 -0
  95. package/src/lib/components/layout/index.ts +3 -0
  96. package/src/lib/components/layout/left-right-layout.tsx +67 -0
  97. package/src/lib/components/link/index.ts +1 -0
  98. package/src/lib/components/link/link.test.tsx +29 -0
  99. package/src/lib/components/link/link.tsx +56 -0
  100. package/src/lib/components/link/storybook/link.stories.mdx +52 -0
  101. package/src/lib/components/modal/index.ts +3 -0
  102. package/src/lib/components/modal/modal-base.tsx +129 -0
  103. package/src/lib/components/modal/modal-destructive.tsx +70 -0
  104. package/src/lib/components/modal/modal.test.tsx +138 -0
  105. package/src/lib/components/modal/modal.tsx +114 -0
  106. package/src/lib/components/modal/storybook/components.tsx +105 -0
  107. package/src/lib/components/modal/storybook/modal-destructive.stories.mdx +31 -0
  108. package/src/lib/components/modal/storybook/modal.stories.mdx +50 -0
  109. package/src/lib/components/molecules/avatar/avatar-size-flags.tsx +55 -0
  110. package/src/lib/components/molecules/avatar/avatar.test.tsx +114 -0
  111. package/src/lib/components/molecules/avatar/avatar.tsx +80 -0
  112. package/src/lib/components/molecules/avatar/index.tsx +1 -0
  113. package/src/lib/components/molecules/avatar/stories/avatar.stories.mdx +52 -0
  114. package/src/lib/components/molecules/avatar/stories/components.tsx +36 -0
  115. package/src/lib/components/molecules/button/button-flags.tsx +340 -0
  116. package/src/lib/components/molecules/button/button.test.tsx +77 -0
  117. package/src/lib/components/molecules/button/button.tsx +212 -0
  118. package/src/lib/components/molecules/button/index.tsx +1 -0
  119. package/src/lib/components/molecules/button/stories/button.stories.mdx +105 -0
  120. package/src/lib/components/molecules/button/stories/components.tsx +90 -0
  121. package/src/lib/components/molecules/index.ts +3 -0
  122. package/src/lib/components/molecules/input-checkbox/index.tsx +1 -0
  123. package/src/lib/components/molecules/input-checkbox/input-checkbox.test.tsx +34 -0
  124. package/src/lib/components/molecules/input-checkbox/input-checkbox.tsx +50 -0
  125. package/src/lib/components/molecules/input-checkbox/stories/components.tsx +53 -0
  126. package/src/lib/components/molecules/input-checkbox/stories/input-checkbox.stories.mdx +49 -0
  127. package/src/lib/components/organisms/choice-list/choice-list.test.tsx +36 -0
  128. package/src/lib/components/organisms/choice-list/choice-list.tsx +72 -0
  129. package/src/lib/components/organisms/choice-list/index.tsx +1 -0
  130. package/src/lib/components/organisms/choice-list/stories/choice-list.stories.mdx +57 -0
  131. package/src/lib/components/organisms/choice-list/stories/components.tsx +45 -0
  132. package/src/lib/components/organisms/index.ts +2 -0
  133. package/src/lib/components/organisms/multi-choice-list/index.tsx +1 -0
  134. package/src/lib/components/organisms/multi-choice-list/multi-choice-list.test.tsx +33 -0
  135. package/src/lib/components/organisms/multi-choice-list/multi-choice-list.tsx +53 -0
  136. package/src/lib/components/organisms/multi-choice-list/stories/components.tsx +124 -0
  137. package/src/lib/components/organisms/multi-choice-list/stories/multi-choice-list.stories.mdx +99 -0
  138. package/src/lib/components/progress-bar/index.ts +1 -0
  139. package/src/lib/components/progress-bar/progress-bar-size-flags.tsx +37 -0
  140. package/src/lib/components/progress-bar/progress-bar.test.tsx +66 -0
  141. package/src/lib/components/progress-bar/progress-bar.tsx +42 -0
  142. package/src/lib/components/progress-bar/storybook/components.tsx +62 -0
  143. package/src/lib/components/progress-bar/storybook/progress-bar.stories.mdx +43 -0
  144. package/{lib/components/spinner/index.d.ts → src/lib/components/radio-button/index.tsx} +1 -1
  145. package/src/lib/components/radio-button/radio-button.tsx +135 -0
  146. package/src/lib/components/radio-button/radio.test.tsx +59 -0
  147. package/src/lib/components/radio-button/stories/components.tsx +36 -0
  148. package/src/lib/components/radio-button/stories/radio-button.stories.mdx +44 -0
  149. package/src/lib/components/range-slider/components/bar-chart.tsx +50 -0
  150. package/src/lib/components/range-slider/components/handle.tsx +58 -0
  151. package/src/lib/components/range-slider/components/rail.tsx +44 -0
  152. package/src/lib/components/range-slider/components/slider-component.tsx +98 -0
  153. package/src/lib/components/range-slider/components/slider-inputs.tsx +150 -0
  154. package/src/lib/components/range-slider/components/tick.tsx +51 -0
  155. package/src/lib/components/range-slider/components/track.tsx +67 -0
  156. package/src/lib/components/range-slider/index.tsx +2 -0
  157. package/src/lib/components/range-slider/range-slider.test.tsx +185 -0
  158. package/src/lib/components/range-slider/range-slider.tsx +132 -0
  159. package/src/lib/components/range-slider/slider.test.tsx +89 -0
  160. package/src/lib/components/range-slider/slider.tsx +80 -0
  161. package/src/lib/components/range-slider/stories/components.tsx +179 -0
  162. package/src/lib/components/range-slider/stories/range-slider.stories.mdx +84 -0
  163. package/src/lib/components/range-slider/types.ts +18 -0
  164. package/src/lib/components/select/components/menu-container.tsx +69 -0
  165. package/src/lib/components/select/components/menu-list.tsx +195 -0
  166. package/src/lib/components/select/components/menu-row.tsx +43 -0
  167. package/src/lib/components/select/components/menu.tsx +151 -0
  168. package/src/lib/components/select/components/option.tsx +91 -0
  169. package/src/lib/components/select/components/select-label.tsx +10 -0
  170. package/src/lib/components/select/components/value-component-multi.tsx +40 -0
  171. package/src/lib/components/select/components/value-component-single.tsx +27 -0
  172. package/src/lib/components/select/components/value.tsx +370 -0
  173. package/src/lib/components/select/index.tsx +3 -0
  174. package/src/lib/components/select/select.test.tsx +148 -0
  175. package/src/lib/components/select/select.tsx +337 -0
  176. package/src/lib/components/select/storybook/components.tsx +999 -0
  177. package/src/lib/components/select/storybook/radio-group.tsx +157 -0
  178. package/src/lib/components/select/storybook/select.stories.mdx +172 -0
  179. package/src/lib/components/select/types.ts +149 -0
  180. package/src/lib/components/select/utils.ts +101 -0
  181. package/src/lib/components/spinner/index.tsx +1 -0
  182. package/src/lib/components/spinner/spinner-size-flags.tsx +39 -0
  183. package/src/lib/components/spinner/spinner.test.tsx +31 -0
  184. package/src/lib/components/spinner/spinner.tsx +54 -0
  185. package/src/lib/components/spinner/stories/components.tsx +39 -0
  186. package/src/lib/components/spinner/stories/spinner.stories.mdx +35 -0
  187. package/src/lib/components/tabs/components/index.ts +1 -0
  188. package/src/lib/components/tabs/components/tab.tsx +85 -0
  189. package/src/lib/components/tabs/index.tsx +1 -0
  190. package/src/lib/components/tabs/storybook/components.tsx +317 -0
  191. package/src/lib/components/tabs/storybook/tabs.stories.mdx +105 -0
  192. package/src/lib/components/tabs/tabs.test.tsx +86 -0
  193. package/src/lib/components/tabs/tabs.tsx +115 -0
  194. package/src/lib/components/tag/components/close-button.tsx +85 -0
  195. package/src/lib/components/tag/components/index.ts +2 -0
  196. package/src/lib/components/tag/components/tag-label.tsx +45 -0
  197. package/src/lib/components/tag/index.tsx +1 -0
  198. package/src/lib/components/tag/stories/components.tsx +86 -0
  199. package/src/lib/components/tag/stories/tag.stories.mdx +42 -0
  200. package/src/lib/components/tag/tag.test.tsx +36 -0
  201. package/src/lib/components/tag/tag.tsx +33 -0
  202. package/src/lib/components/thumbnail/index.tsx +1 -0
  203. package/src/lib/components/thumbnail/stories/thumbnail.stories.mdx +44 -0
  204. package/src/lib/components/thumbnail/thumbnail-size-flags.tsx +41 -0
  205. package/src/lib/components/thumbnail/thumbnail.test.tsx +51 -0
  206. package/src/lib/components/thumbnail/thumbnail.tsx +44 -0
  207. package/src/lib/components/tooltip/index.tsx +1 -0
  208. package/src/lib/components/tooltip/stories/components.tsx +224 -0
  209. package/src/lib/components/tooltip/stories/tooltip.stories.mdx +63 -0
  210. package/src/lib/components/tooltip/tooltip.test.tsx +22 -0
  211. package/src/lib/components/tooltip/tooltip.tsx +179 -0
  212. package/src/lib/components/tree-view/components/tree-node.tsx +203 -0
  213. package/src/lib/components/tree-view/helper.tsx +171 -0
  214. package/src/lib/components/tree-view/index.ts +2 -0
  215. package/src/lib/components/tree-view/stories/components.tsx +640 -0
  216. package/src/lib/components/tree-view/stories/tree-view.stories.mdx +127 -0
  217. package/src/lib/components/tree-view/tree-view.test.tsx +146 -0
  218. package/src/lib/components/tree-view/tree-view.tsx +168 -0
  219. package/src/lib/components/tree-view/types.tsx +70 -0
  220. package/src/lib/components/typography/index.ts +1 -0
  221. package/src/lib/components/typography/storybook/components.tsx +288 -0
  222. package/src/lib/components/typography/storybook/typography.stories.mdx +90 -0
  223. package/src/lib/components/typography/typography.test.tsx +97 -0
  224. package/src/lib/components/typography/typography.tsx +99 -0
  225. package/src/lib/foundations/color-system/base-palette/base-palette.stories.tsx +123 -0
  226. package/src/lib/foundations/color-system/base-palette/base-palette.ts +93 -0
  227. package/src/lib/foundations/color-system/base-palette/index.ts +1 -0
  228. package/src/lib/foundations/color-system/color-guidelines/color-guidelines.stories.mdx +85 -0
  229. package/src/lib/foundations/color-system/color-guidelines/color-guidelines.stories.tsx +231 -0
  230. package/src/lib/foundations/color-system/color-guidelines/color-guidelines.ts +160 -0
  231. package/src/lib/foundations/color-system/color-guidelines/index.ts +1 -0
  232. package/src/lib/foundations/color-system/components/color-sample.tsx +99 -0
  233. package/src/lib/foundations/color-system/components/index.ts +1 -0
  234. package/src/lib/foundations/color-system/index.ts +1 -0
  235. package/src/lib/foundations/index.ts +4 -0
  236. package/src/lib/foundations/shadows/components.tsx +59 -0
  237. package/src/lib/foundations/shadows/index.ts +1 -0
  238. package/src/lib/foundations/shadows/shadows.stories.mdx +71 -0
  239. package/src/lib/foundations/shadows/shadows.tsx +47 -0
  240. package/src/lib/foundations/spacing/index.ts +1 -0
  241. package/src/lib/foundations/spacing/spacing-guidelines.ts +37 -0
  242. package/src/lib/foundations/spacing/spacing.stories.mdx +51 -0
  243. package/src/lib/foundations/spacing/spacing.ts +18 -0
  244. package/src/lib/foundations/typography/constants.ts +25 -0
  245. package/src/lib/foundations/typography/fonts.ts +205 -0
  246. package/src/lib/foundations/typography/index.tsx +1 -0
  247. package/src/lib/foundations/typography/text-aspect-flags.ts +61 -0
  248. package/src/lib/foundations/typography/typography.tsx +102 -0
  249. package/src/lib/helpers/generic-types.ts +44 -0
  250. package/src/lib/helpers/index.ts +8 -0
  251. package/src/lib/helpers/isReactElementOfType.test.tsx +108 -0
  252. package/src/lib/helpers/isReactElementOfType.ts +42 -0
  253. package/src/lib/helpers/nothing.tsx +22 -0
  254. package/{lib/helpers/numbers.d.ts → src/lib/helpers/numbers.ts} +67 -50
  255. package/src/lib/helpers/safe-navigation.ts +57 -0
  256. package/src/lib/helpers/slots.tsx +126 -0
  257. package/src/lib/helpers/strings.test.ts +47 -0
  258. package/src/lib/helpers/strings.ts +16 -0
  259. package/src/lib/helpers/useInputElementState.ts +56 -0
  260. package/src/lib/helpers/useKeyDown.ts +17 -0
  261. package/tsconfig.json +35 -0
  262. package/tsconfig.lib.json +28 -0
  263. package/tsconfig.spec.json +21 -0
  264. package/index.d.ts +0 -2
  265. package/index.js +0 -11246
  266. package/lib/components/alert-banner/alert-banner.d.ts +0 -15
  267. package/lib/components/alert-banner/alert-level-flags.d.ts +0 -18
  268. package/lib/components/alert-banner/index.d.ts +0 -1
  269. package/lib/components/badge/badge-type-flags.d.ts +0 -18
  270. package/lib/components/badge/badge.d.ts +0 -5
  271. package/lib/components/badge/index.d.ts +0 -1
  272. package/lib/components/card/atoms/index.d.ts +0 -1
  273. package/lib/components/card/card.d.ts +0 -14
  274. package/lib/components/card/components/card-alert-banner-slot.d.ts +0 -6
  275. package/lib/components/card/components/card-controls-slot.d.ts +0 -5
  276. package/lib/components/card/components/card-section-slot.d.ts +0 -11
  277. package/lib/components/card/components/index.d.ts +0 -3
  278. package/lib/components/card/index.d.ts +0 -3
  279. package/lib/components/card/molecules/index.d.ts +0 -1
  280. package/lib/components/card/molecules/left-right-card.d.ts +0 -16
  281. package/lib/components/checkbox/checkbox.d.ts +0 -11
  282. package/lib/components/checkbox/helpers.d.ts +0 -12
  283. package/lib/components/checkbox/index.d.ts +0 -1
  284. package/lib/components/date-picker/components/custom-calendar.d.ts +0 -6
  285. package/lib/components/date-picker/components/index.d.ts +0 -1
  286. package/lib/components/date-picker/date-picker.d.ts +0 -4
  287. package/lib/components/date-picker/helpers/date-picker-factory.d.ts +0 -34
  288. package/lib/components/date-picker/index.d.ts +0 -1
  289. package/lib/components/divider/divider-type-flags.d.ts +0 -9
  290. package/lib/components/divider/divider.d.ts +0 -7
  291. package/lib/components/divider/index.d.ts +0 -1
  292. package/lib/components/flag/flag-size-flags.d.ts +0 -12
  293. package/lib/components/flag/flag.d.ts +0 -9
  294. package/lib/components/flag/flag.list.d.ts +0 -782
  295. package/lib/components/flag/index.d.ts +0 -1
  296. package/lib/components/icon/icon-list.d.ts +0 -132
  297. package/lib/components/icon/icon.d.ts +0 -131
  298. package/lib/components/icon/index.d.ts +0 -1
  299. package/lib/components/index.d.ts +0 -24
  300. package/lib/components/input-field/components/index.d.ts +0 -2
  301. package/lib/components/input-field/components/labeled-input.d.ts +0 -10
  302. package/lib/components/input-field/components/stepper.d.ts +0 -7
  303. package/lib/components/input-field/index.d.ts +0 -3
  304. package/lib/components/input-field/input-field.d.ts +0 -26
  305. package/lib/components/input-field/input-number.d.ts +0 -18
  306. package/lib/components/input-field/input-text.d.ts +0 -14
  307. package/lib/components/layout/flex.d.ts +0 -16
  308. package/lib/components/layout/grid-layout.d.ts +0 -11
  309. package/lib/components/layout/index.d.ts +0 -3
  310. package/lib/components/layout/left-right-layout.d.ts +0 -34
  311. package/lib/components/link/index.d.ts +0 -1
  312. package/lib/components/link/link.d.ts +0 -14
  313. package/lib/components/modal/index.d.ts +0 -3
  314. package/lib/components/modal/modal-base.d.ts +0 -28
  315. package/lib/components/modal/modal-destructive.d.ts +0 -11
  316. package/lib/components/modal/modal.d.ts +0 -13
  317. package/lib/components/molecules/avatar/avatar-size-flags.d.ts +0 -12
  318. package/lib/components/molecules/avatar/avatar.d.ts +0 -12
  319. package/lib/components/molecules/avatar/index.d.ts +0 -1
  320. package/lib/components/molecules/button/button-flags.d.ts +0 -44
  321. package/lib/components/molecules/button/button.d.ts +0 -12
  322. package/lib/components/molecules/button/index.d.ts +0 -1
  323. package/lib/components/molecules/index.d.ts +0 -3
  324. package/lib/components/molecules/input-checkbox/index.d.ts +0 -1
  325. package/lib/components/molecules/input-checkbox/input-checkbox.d.ts +0 -8
  326. package/lib/components/organisms/choice-list/choice-list.d.ts +0 -9
  327. package/lib/components/organisms/choice-list/index.d.ts +0 -1
  328. package/lib/components/organisms/index.d.ts +0 -2
  329. package/lib/components/organisms/multi-choice-list/index.d.ts +0 -1
  330. package/lib/components/organisms/multi-choice-list/multi-choice-list.d.ts +0 -11
  331. package/lib/components/radio-button/index.d.ts +0 -1
  332. package/lib/components/radio-button/radio-button.d.ts +0 -10
  333. package/lib/components/range-slider/components/bar-chart.d.ts +0 -8
  334. package/lib/components/range-slider/components/handle.d.ts +0 -12
  335. package/lib/components/range-slider/components/rail.d.ts +0 -9
  336. package/lib/components/range-slider/components/slider-component.d.ts +0 -12
  337. package/lib/components/range-slider/components/slider-inputs.d.ts +0 -14
  338. package/lib/components/range-slider/components/tick.d.ts +0 -10
  339. package/lib/components/range-slider/components/track.d.ts +0 -11
  340. package/lib/components/range-slider/index.d.ts +0 -2
  341. package/lib/components/range-slider/range-slider.d.ts +0 -15
  342. package/lib/components/range-slider/slider.d.ts +0 -11
  343. package/lib/components/range-slider/types.d.ts +0 -11
  344. package/lib/components/select/components/menu-container.d.ts +0 -3
  345. package/lib/components/select/components/menu-list.d.ts +0 -3
  346. package/lib/components/select/components/menu-row.d.ts +0 -9
  347. package/lib/components/select/components/menu.d.ts +0 -3
  348. package/lib/components/select/components/option.d.ts +0 -13
  349. package/lib/components/select/components/select-label.d.ts +0 -1
  350. package/lib/components/select/components/value-component-multi.d.ts +0 -4
  351. package/lib/components/select/components/value-component-single.d.ts +0 -4
  352. package/lib/components/select/components/value.d.ts +0 -4
  353. package/lib/components/select/index.d.ts +0 -3
  354. package/lib/components/select/select.d.ts +0 -10
  355. package/lib/components/select/types.d.ts +0 -133
  356. package/lib/components/select/utils.d.ts +0 -15
  357. package/lib/components/spinner/spinner-size-flags.d.ts +0 -10
  358. package/lib/components/spinner/spinner.d.ts +0 -9
  359. package/lib/components/tabs/components/index.d.ts +0 -1
  360. package/lib/components/tabs/components/tab.d.ts +0 -8
  361. package/lib/components/tabs/index.d.ts +0 -1
  362. package/lib/components/tabs/tabs.d.ts +0 -16
  363. package/lib/components/tag/components/close-button.d.ts +0 -8
  364. package/lib/components/tag/components/index.d.ts +0 -2
  365. package/lib/components/tag/components/tag-label.d.ts +0 -8
  366. package/lib/components/tag/index.d.ts +0 -1
  367. package/lib/components/tag/tag.d.ts +0 -10
  368. package/lib/components/thumbnail/index.d.ts +0 -1
  369. package/lib/components/thumbnail/thumbnail-size-flags.d.ts +0 -10
  370. package/lib/components/thumbnail/thumbnail.d.ts +0 -10
  371. package/lib/components/tooltip/index.d.ts +0 -1
  372. package/lib/components/tooltip/tooltip.d.ts +0 -26
  373. package/lib/components/tree-view/components/tree-node.d.ts +0 -3
  374. package/lib/components/tree-view/helper.d.ts +0 -12
  375. package/lib/components/tree-view/index.d.ts +0 -2
  376. package/lib/components/tree-view/tree-view.d.ts +0 -3
  377. package/lib/components/tree-view/types.d.ts +0 -63
  378. package/lib/components/typography/index.d.ts +0 -1
  379. package/lib/components/typography/typography.d.ts +0 -24
  380. package/lib/foundations/color-system/base-palette/base-palette.d.ts +0 -76
  381. package/lib/foundations/color-system/base-palette/index.d.ts +0 -1
  382. package/lib/foundations/color-system/color-guidelines/color-guidelines.d.ts +0 -133
  383. package/lib/foundations/color-system/color-guidelines/index.d.ts +0 -1
  384. package/lib/foundations/color-system/components/color-sample.d.ts +0 -17
  385. package/lib/foundations/color-system/components/index.d.ts +0 -1
  386. package/lib/foundations/color-system/index.d.ts +0 -1
  387. package/lib/foundations/index.d.ts +0 -4
  388. package/lib/foundations/shadows/components.d.ts +0 -8
  389. package/lib/foundations/shadows/index.d.ts +0 -1
  390. package/lib/foundations/shadows/shadows.d.ts +0 -8
  391. package/lib/foundations/spacing/index.d.ts +0 -1
  392. package/lib/foundations/spacing/spacing-guidelines.d.ts +0 -33
  393. package/lib/foundations/spacing/spacing.d.ts +0 -18
  394. package/lib/foundations/typography/constants.d.ts +0 -22
  395. package/lib/foundations/typography/fonts.d.ts +0 -1
  396. package/lib/foundations/typography/index.d.ts +0 -1
  397. package/lib/foundations/typography/text-aspect-flags.d.ts +0 -19
  398. package/lib/foundations/typography/typography.d.ts +0 -24
  399. package/lib/helpers/generic-types.d.ts +0 -21
  400. package/lib/helpers/index.d.ts +0 -8
  401. package/lib/helpers/isReactElementOfType.d.ts +0 -8
  402. package/lib/helpers/nothing.d.ts +0 -10
  403. package/lib/helpers/safe-navigation.d.ts +0 -17
  404. package/lib/helpers/slots.d.ts +0 -17
  405. package/lib/helpers/strings.d.ts +0 -1
  406. package/lib/helpers/useInputElementState.d.ts +0 -30
  407. package/lib/helpers/useKeyDown.d.ts +0 -1
@@ -0,0 +1,100 @@
1
+ import { Meta, Canvas } from '@storybook/addon-docs';
2
+ import { AlertBanner } from 'components/alert-banner'
3
+ import {
4
+ CardExample,
5
+ SectionsExample,
6
+ AlertBannerExample,
7
+ LeftRightLayoutExample,
8
+ CardControlsExample,
9
+ SectionsHeadingActionsExample,
10
+ } from './components'
11
+
12
+ <Meta title="Components/Card"/>
13
+
14
+ # Card
15
+
16
+ Cards are used to group similar things together.
17
+
18
+ ## How to Use It
19
+
20
+ ```tsx
21
+ import { Card } from '@edvisor/product-language'
22
+
23
+ <Card heading='Heading'>
24
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit.
25
+ </Card>
26
+ ```
27
+
28
+ ### Card
29
+
30
+ A simple card with a heading and content.
31
+
32
+ <CardExample />
33
+
34
+ ### Card with Sections
35
+
36
+ You can divide a card's body up into sections.
37
+
38
+ <SectionsExample />
39
+
40
+ ### Card with Heading Actions
41
+
42
+ Any heading in a Card can have an action
43
+
44
+ <AlertBanner warning>
45
+ HeadingAction is a slot, so its children will always render in the same place regardless of where you use it.
46
+ </AlertBanner>
47
+
48
+ <SectionsHeadingActionsExample />
49
+
50
+ ### Card with Controls
51
+
52
+ Primary controls go on the bottom of the card.
53
+
54
+ <AlertBanner warning>
55
+ Controls is a slot, so its children will always render in the same place regardless of where you use it.
56
+ </AlertBanner>
57
+
58
+ <CardControlsExample />
59
+
60
+ ### Card with Alert Banner
61
+
62
+ You can grab the user's attention with a banner.
63
+
64
+ <AlertBanner warning>
65
+ AlertBanner is a slot, so its children will always render in the same place regardless of where you use it.
66
+ </AlertBanner>
67
+
68
+ <AlertBannerExample />
69
+
70
+ ### Card with a Layout
71
+
72
+ You can add a layout to a card. In this case we've added a 1:2 ratio "left/right" layout.
73
+
74
+ <LeftRightLayoutExample />
75
+
76
+ ## API
77
+
78
+ ### `Card`
79
+
80
+ Extends `HTMLAttributes<HTMLDivElement>`
81
+
82
+ | Prop | Type | Description |
83
+ | --------- | ---------- | -------------------------- |
84
+ | `heading` | `boolean?` | Adds a heading to the card |
85
+
86
+ ### `Card.Section`
87
+
88
+ Extends `HTMLAttributes<HTMLDivElement>`
89
+
90
+ | Prop | Type | Description |
91
+ | --------- | ---------- | ------------------------------- |
92
+ | `heading` | `boolean?` | Adds a heading to the section |
93
+
94
+ ### Slots
95
+
96
+ | Slot | Description |
97
+ | --------------- | ----------------------------------------------------------- |
98
+ | `Controls` | Adds controls to the bottom of the card |
99
+ | `HeadingAction` | Adds UI directly across from the card or sections's heading |
100
+ | `AlertBanner` | Adds an alert banner above the heading |
@@ -0,0 +1,227 @@
1
+ import styled from 'styled-components'
2
+
3
+ import { Margin, Surface } from '@foundations'
4
+ import { CardPlayground } from '@stories'
5
+
6
+ import { leftRightLayoutGenerator } from 'components/layout'
7
+ import { Body, Heading3 } from 'components/typography'
8
+ import { InputField as InputFieldBase } from 'components/input-field'
9
+
10
+ import { Card } from '../card'
11
+ import { LeftRightCard } from '../molecules/left-right-card'
12
+
13
+ const InputField = styled(InputFieldBase)`
14
+ margin-bottom: ${Margin.xxs}
15
+ `
16
+
17
+ export const CardExample = () => (
18
+ <CardPlayground
19
+ code={`
20
+ <Card heading='Heading'>
21
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit.
22
+ </Card>
23
+ `}
24
+ providerProps={{
25
+ renderAsComponent: true,
26
+ scope: {
27
+ Card,
28
+ },
29
+ }}
30
+ />
31
+ )
32
+
33
+ export const SectionsExample = () => (
34
+ <CardPlayground
35
+ code={`
36
+ <Card heading='Sections!'>
37
+ If you include section slots, plain children won't render.
38
+ <Card.Section heading='Subheading 1'>
39
+ This is a section.
40
+ </Card.Section>
41
+ <Card.Section heading='Subheading 2'>
42
+ This is another section.
43
+ </Card.Section>
44
+ </Card>
45
+ `}
46
+ providerProps={{
47
+ renderAsComponent: true,
48
+ scope: {
49
+ Card,
50
+ },
51
+ }}
52
+ />
53
+ )
54
+
55
+ export const CardControlsExample = () => (
56
+ <CardPlayground
57
+ code={`
58
+ const handleCancel = () => alert('Cancel');
59
+ const handleConfirm = () => alert('Confirm');
60
+
61
+ <Card heading='Controls!'>
62
+ <Card.Controls>
63
+ <button onClick={handleCancel}>Cancel</button>
64
+ <button onClick={handleConfirm}>Confirm</button>
65
+ </Card.Controls>
66
+ Notice that the controls render below this text, even though they are above this text in the JSX. That's because Controls is a slot, it is only telling Card what we want to render, not where we want to render it.
67
+ </Card>
68
+ `}
69
+ providerProps={{
70
+ renderAsComponent: true,
71
+ scope: {
72
+ Card,
73
+ },
74
+ }}
75
+ />
76
+ )
77
+
78
+ export const CardHeadingActionExample = () => (
79
+ <CardPlayground
80
+ code={`
81
+ <Card heading='Heading Actions!'>
82
+ If you include section slots, plain children won't render.
83
+ <Card.HeadingAction><button>Activate</button></Card.HeadingAction>
84
+ </Card>
85
+ `}
86
+ providerProps={{
87
+ renderAsComponent: true,
88
+ scope: {
89
+ Card,
90
+ },
91
+ }}
92
+ />
93
+ )
94
+
95
+ export const SectionsHeadingActionsExample = () => (
96
+ <CardPlayground
97
+ code={`
98
+ <Card heading='Heading Actions'>
99
+ <Card.HeadingAction><button>Action</button></Card.HeadingAction>
100
+
101
+ <Card.Section heading='Subheading 1'>
102
+ This is a section.
103
+ <Card.HeadingAction><button>Action</button></Card.HeadingAction>
104
+ </Card.Section>
105
+
106
+ <Card.Section heading='Subheading 2'>
107
+ This is another section.
108
+ <Card.HeadingAction><button>Action</button></Card.HeadingAction>
109
+ </Card.Section>
110
+ </Card>
111
+ `}
112
+ providerProps={{
113
+ renderAsComponent: true,
114
+ scope: {
115
+ Card,
116
+ },
117
+ }}
118
+ />
119
+ )
120
+
121
+ export const AlertBannerExample = () => (
122
+ <CardPlayground
123
+ code={`
124
+ <Card heading='Heading'>
125
+ <Card.AlertBanner info>Seriously though, if you change the student's age or nationality you will regret it.</Card.AlertBanner>
126
+ Disaster can strike at any moment.
127
+ </Card>
128
+ `}
129
+ providerProps={{
130
+ renderAsComponent: true,
131
+ scope: {
132
+ Card,
133
+ },
134
+ }}
135
+ />
136
+ )
137
+
138
+ const { Layout } = leftRightLayoutGenerator()
139
+
140
+ const GreyBox = styled.div`
141
+ background-color: ${Surface.Neutral};
142
+ height: 100%;
143
+ `
144
+
145
+ export const LeftRightLayoutExample = () => (
146
+ <CardPlayground
147
+ code={`
148
+ <Card>
149
+ <Layout>
150
+ <Layout.Left>
151
+ <Heading3>Personal Information</Heading3>
152
+ <Body subdued>This information will be seen by your colleagues and students.</Body>
153
+ </Layout.Left>
154
+ <Layout.Right>
155
+ <form id='my-form' onSubmit={(e) => e.preventDefault()}>
156
+ <InputField
157
+ label='First name'
158
+ />
159
+ <InputField
160
+ label='Last name'
161
+ />
162
+ <InputField
163
+ type='email'
164
+ required
165
+ label='Email'
166
+ />
167
+ </form>
168
+ </Layout.Right>
169
+ </Layout>
170
+ <Card.Controls>
171
+ <button>Cancel</button>
172
+ <button form='my-form' type='submit'>Confirm</button>
173
+ </Card.Controls>
174
+ </Card>
175
+ `}
176
+ providerProps={{
177
+ renderAsComponent: true,
178
+ scope: {
179
+ Card,
180
+ Layout,
181
+ InputField,
182
+ Heading3,
183
+ Body,
184
+ },
185
+ }}
186
+ />
187
+ )
188
+
189
+ export const LeftRightCardExample = () => (
190
+ <CardPlayground
191
+ code={`
192
+ <LeftRightCard
193
+ heading='Personal Information'
194
+ helpText='This information will be seen by your colleagues and students.'
195
+ >
196
+ <LeftRightCard.Right>
197
+ <form id='my-form-2' onSubmit={(e) => e.preventDefault()}>
198
+ <InputField
199
+ label='First name'
200
+ />
201
+ <InputField
202
+ label='Last name'
203
+ />
204
+ <InputField
205
+ type='email'
206
+ required
207
+ label='Email'
208
+ />
209
+ </form>
210
+ </LeftRightCard.Right>
211
+ <LeftRightCard.Controls>
212
+ <button>Cancel</button>
213
+ <button form='my-form-2' type='submit'>Confirm</button>
214
+ </LeftRightCard.Controls>
215
+ </LeftRightCard>
216
+ `}
217
+ providerProps={{
218
+ renderAsComponent: true,
219
+ scope: {
220
+ LeftRightCard,
221
+ GreyBox,
222
+ Body,
223
+ InputField,
224
+ },
225
+ }}
226
+ />
227
+ )
@@ -0,0 +1,39 @@
1
+ import { render, screen } from '@testing-library/react'
2
+ import userEvent from '@testing-library/user-event'
3
+ import { Checkbox } from './checkbox'
4
+
5
+ describe('Checkbox Input Tests', () => {
6
+ it('should render the component and handle event after click', async () => {
7
+ const spyOnChange = jest.fn()
8
+ render(
9
+ <Checkbox
10
+ onChange={spyOnChange}
11
+ />
12
+ )
13
+
14
+ expect(spyOnChange).not.toHaveBeenCalled()
15
+ const myComponent = screen.getByRole('checkbox')
16
+
17
+ expect(myComponent).toBeInTheDocument()
18
+
19
+ await userEvent.click(myComponent)
20
+ expect(spyOnChange).toHaveBeenCalled()
21
+ })
22
+
23
+ it('should not handle event after click if checkbox has disabled', async () => {
24
+ const spyOnChange = jest.fn()
25
+ render(
26
+ <Checkbox
27
+ disabled
28
+ onChange={spyOnChange}
29
+ />
30
+ )
31
+
32
+ expect(spyOnChange).not.toHaveBeenCalled()
33
+ const myComponent = screen.getByRole('checkbox')
34
+
35
+ userEvent.click(myComponent)
36
+
37
+ expect(spyOnChange).not.toHaveBeenCalled()
38
+ })
39
+ })
@@ -0,0 +1,70 @@
1
+ import { InputHTMLAttributes } from 'react'
2
+ import styled from 'styled-components'
3
+ import { Margin, Padding, Focused } from '@foundations'
4
+ import { FC, is, isDefined } from '@helpers'
5
+ import {
6
+ getDisabledStyles,
7
+ getInvalidStyles,
8
+ getDefaultStyles,
9
+ } from './helpers'
10
+
11
+ const CustomizedCheckbox = styled.input<{indeterminate: boolean, error?: boolean}>`
12
+ appearance: none;
13
+ position: relative;
14
+ box-sizing: content-box;
15
+ width: 18px;
16
+ height: 18px;
17
+ margin: ${Margin.none};
18
+ padding: ${Padding.none};
19
+ border-radius: 4px;
20
+ user-select: none;
21
+ vertical-align: bottom;
22
+ display: inline-block;
23
+
24
+ ${({ disabled, indeterminate, error }) => {
25
+ if (is(disabled)) {
26
+ return getDisabledStyles(indeterminate)
27
+ } else if (is(error)) {
28
+ return getInvalidStyles(indeterminate)
29
+ } else {
30
+ return getDefaultStyles(indeterminate)
31
+ }
32
+ }}
33
+
34
+ :focus-visible {
35
+ outline: 2px solid ${Focused.Default};
36
+ outline-offset: 1px;
37
+ }
38
+ `
39
+
40
+ export interface ICheckboxProps {
41
+ disabled?: boolean
42
+ checked?: boolean
43
+ indeterminate?: boolean
44
+ error?: boolean
45
+ className?: string
46
+ }
47
+
48
+ export type IProps = ICheckboxProps & InputHTMLAttributes<HTMLInputElement>
49
+
50
+ export const Checkbox: FC<IProps> = (props: IProps) => {
51
+ const {
52
+ error,
53
+ indeterminate,
54
+ ...htmlProps
55
+ } = props
56
+
57
+ return (
58
+ <CustomizedCheckbox
59
+ {...htmlProps}
60
+ type='checkbox'
61
+ error={error}
62
+ indeterminate={is(indeterminate)}
63
+ ref={input => {
64
+ if (isDefined(input)) {
65
+ input.indeterminate = is(props.indeterminate)
66
+ }
67
+ }}
68
+ />
69
+ )
70
+ }
@@ -0,0 +1,98 @@
1
+ import { css } from 'styled-components'
2
+ import { Surface, Borders, Actions, Interactive, Icons } from '@foundations'
3
+ import { Hex, is, isNil } from '@helpers'
4
+
5
+ interface ICheckedProps {
6
+ checked?: boolean;
7
+ }
8
+
9
+ const indeterminateSvg = `
10
+ <svg xmlns='http://www.w3.org/2000/svg' width='12' height='10' viewBox='0 0 10 8'>
11
+ <rect fill='white' width='10' height='2' rx='1'/>
12
+ </svg>
13
+ `
14
+ const checkSvg = `
15
+ <svg xmlns='http://www.w3.org/2000/svg' width='10' height='12' viewBox='0 0 10 8'>
16
+ <path d='M4.50846 7.37941C4.0689 7.81898 3.35108 7.81898 2.91151 7.37941L0.330581 4.79848C-0.110194 4.35892 -0.110194 3.64109 0.330581 3.20153C0.770146 2.76196 1.48797 2.76196 1.92753 3.20153L3.70999 4.98399L8.07338 0.620598C8.51294 0.181033 9.23076 0.181033 9.67033 0.620598C10.1099 1.06016 10.1099 1.77798 9.67033 2.21755L4.50846 7.37941Z' fill='white'/>
17
+ </svg>`
18
+
19
+ function getCheckMark (indeterminate: boolean) {
20
+ return css`
21
+ ::before {
22
+ position: absolute;
23
+ content: url("data:image/svg+xml,${indeterminate ? indeterminateSvg : checkSvg}");
24
+ left: ${indeterminate ? 3 : 4}px;
25
+ top: ${indeterminate ? 6 : 3}px;
26
+ }
27
+ `
28
+ }
29
+
30
+ /** the reason I have this isNil to test
31
+ * whether `checked` was passes is this:
32
+ *
33
+ * if the user passed "checked" then
34
+ * they expect the checked styles to be
35
+ * seen if and only if checked is true.
36
+ * In that case I don't add the :checked
37
+ * selector because the user doesn't want
38
+ * the styles to depend on the browser's
39
+ * idea of the state of the button.
40
+ */
41
+ function getCheckedStyles (indeterminate: boolean, color: Hex) {
42
+ return css<{ checked?: boolean }>`
43
+ ${({ checked }) => isNil(checked)
44
+ ? css`
45
+ :checked {
46
+ background: ${color};
47
+ border: 2px solid ${color};
48
+ ${getCheckMark(indeterminate)}
49
+ }
50
+ `
51
+ : is(checked) || is(indeterminate)
52
+ ? css`
53
+ background: ${color};
54
+ border: 2px solid ${color};
55
+ ${getCheckMark(indeterminate)}
56
+ `
57
+ : ''
58
+ }
59
+ `
60
+ }
61
+
62
+ export const getHoverStyles = (indeterminate: boolean) => css`
63
+ background: ${Surface.Default.Hover};
64
+
65
+ ${getCheckedStyles(indeterminate, Interactive.Default.Hover)}
66
+ `
67
+
68
+ export const getDisabledStyles = (indeterminate: boolean) => css`
69
+ pointer-events: none;
70
+ background: ${(props: ICheckedProps) =>
71
+ is(props.checked) || is(indeterminate)
72
+ ? `${Borders.Default.Default}`
73
+ : `${Surface.Default.Subdued}`};
74
+ border: 2px solid ${Borders.Default.Default};
75
+
76
+ ${getCheckedStyles(indeterminate, Icons.Disabled)}
77
+ `
78
+
79
+ export const getDefaultStyles = (indeterminate: boolean) => css`
80
+ background: ${Surface.Default.Default};
81
+ border: 2px solid ${Interactive.Default.Disabled};
82
+
83
+ ${getCheckedStyles(indeterminate, Interactive.Default.Default)}
84
+
85
+ :hover {
86
+ ${getHoverStyles(indeterminate)}
87
+ }
88
+ `
89
+
90
+ export const getInvalidStyles = (indeterminate: boolean) => css`
91
+ background: ${(props: ICheckedProps) =>
92
+ (is(props.checked) || is(indeterminate))
93
+ ? `${Actions.Critical.Default}`
94
+ : `${Surface.Critical.Subdued}`};
95
+ border: 2px solid ${Borders.Critical.Default};
96
+
97
+ ${getCheckedStyles(indeterminate, Icons.Critical)}
98
+ `
@@ -0,0 +1 @@
1
+ export * from './checkbox'
@@ -0,0 +1,57 @@
1
+ import { Canvas, Meta, Story } from '@storybook/addon-docs';
2
+ import { Checkbox } from '../checkbox'
3
+ import { IntegratedExample, CheckboxExample, LimitationsExample } from './components'
4
+
5
+ <Meta
6
+ title="Components/Checkbox"
7
+ component={Checkbox}
8
+ />
9
+
10
+ # Checkbox
11
+
12
+ Checkboxes are most commonly used to give users a way to make a range of selections (zero, one, or multiple). They may also be used as a way to have users indicate they agree to specific terms and services.
13
+
14
+ For more details, check out the component page on [Figma](https://www.figma.com/file/ue1CurHfZ426o2T2l8Dk64/Edvisor-Product-Language?node-id=1008%3A1257)
15
+
16
+ ## How to use
17
+
18
+ ```tsx
19
+ import { Checkbox } from './index'
20
+
21
+ <Checkbox />
22
+ ```
23
+
24
+ ### Typical Usage
25
+
26
+ Checkbox is "drop-in" compatible with an html input checkbox.
27
+
28
+ <IntegratedExample />
29
+
30
+ ### Modifiers
31
+
32
+ Control the appearance of the checkbox with its modifiers.
33
+
34
+ <CheckboxExample />
35
+
36
+ ## API
37
+
38
+ Extends `HTMLAttributes<HTMLInputElement>`
39
+
40
+ | Name | Type | Description |
41
+ | ----------- | --------- | ------------------------------------------------------------------- |
42
+ | `checked?` | `boolean` | Set checkbox as filled |
43
+ | `disabled?` | `boolean` | Set checkbox as a disabled way (can't click or interact with that) |
44
+ | `error?` | `boolean` | Useful to work inside a form or show some feedback from user action |
45
+ | `onChange?` | `event` | You can listen the changes from the component |
46
+
47
+ ## Changelog
48
+
49
+ ### [0.1.0]
50
+ - replace the checkbox implementation with an input type=checkbox styled to look like what we need
51
+
52
+ ### [0.0.1]
53
+ - update checkbox to behave more like html input with type='checkbox'
54
+
55
+ ### [0.0.0]
56
+ - Offer the "indeterminate" style
57
+ - Get feedback from the component usage (we can migrate to just rendering with css pseudo elements if necessary)
@@ -0,0 +1,84 @@
1
+ import { Margin, } from '@foundations'
2
+ import { If } from '@helpers'
3
+ import { Button } from 'components/molecules/button'
4
+ import { Caption, Label } from 'components/typography'
5
+ import { Playground } from 'storybook-addon-jarle-monaco'
6
+ import styled from 'styled-components'
7
+ import { Checkbox as Base } from '../checkbox'
8
+
9
+ const Checkbox = styled(Base)`
10
+ display: inline-block;
11
+ `
12
+
13
+ export const CheckboxExample = () => (
14
+ <Playground
15
+ code={`
16
+ <>
17
+ <Checkbox />
18
+ <Checkbox checked readOnly />
19
+ <Checkbox disabled />
20
+ <Checkbox checked disabled readOnly />
21
+ <Checkbox error />
22
+ <Checkbox checked error readOnly />
23
+ </>
24
+ `}
25
+ providerProps={{
26
+ renderAsComponent: true,
27
+ scope: {
28
+ Checkbox,
29
+ },
30
+ }}
31
+ />
32
+ )
33
+
34
+ const Fields = styled.div`
35
+ margin-bottom: ${Margin.s};
36
+ `
37
+
38
+ export const IntegratedExample = () => (
39
+ <Playground
40
+ code={`
41
+ /* Edit this code sample! */
42
+ const [withError, setWithError] = useState(false);
43
+ const [accepted, setAccepted] = useState(false);
44
+
45
+ <form onSubmit={(e) => {
46
+ e.preventDefault()
47
+ }}
48
+ >
49
+ <Fields>
50
+ {/* try replacing Checkbox with input */}
51
+ <Checkbox
52
+ id="accept_terms"
53
+ type="checkbox"
54
+ checked={accepted}
55
+ onInvalid={(e) => {
56
+ setWithError(true)
57
+ }}
58
+ error={withError}
59
+ onChange={(e) => {
60
+ setAccepted(!accepted)
61
+ setWithError(false)
62
+ }}
63
+ required
64
+ />
65
+ <label htmlFor="accept_terms"><Label as='span'>I accept these terms.</Label></label>
66
+ <If is={accepted}><Caption subdued>You have accepted the terms.</Caption></If>
67
+ </Fields>
68
+ <Button type='button' onClick={() => setAccepted(false)}>Clear</Button>
69
+ <Button primary type="submit">Submit</Button>
70
+ </form>
71
+ `}
72
+ providerProps={{
73
+ renderAsComponent: true,
74
+ scope: {
75
+ Checkbox,
76
+ Caption,
77
+ Button,
78
+ If,
79
+ Label,
80
+ Fields,
81
+ },
82
+ }}
83
+ />
84
+ )