@edvisor/product-language 0.3.0 → 0.3.1

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 (278) hide show
  1. package/index.d.ts +2 -0
  2. package/index.js +7914 -0
  3. package/lib/components/alert-banner/alert-banner.d.ts +11 -0
  4. package/lib/components/alert-banner/alert-level-flags.d.ts +13 -0
  5. package/lib/components/alert-banner/index.d.ts +1 -0
  6. package/lib/components/badge/badge-type-flags.d.ts +18 -0
  7. package/lib/components/badge/badge.d.ts +5 -0
  8. package/lib/components/badge/index.d.ts +1 -0
  9. package/{src/lib/components/card/atoms/card-frame.tsx → lib/components/card/atoms/card-frame.d.ts} +7 -17
  10. package/lib/components/card/atoms/index.d.ts +1 -0
  11. package/lib/components/card/card.d.ts +14 -0
  12. package/lib/components/card/components/card-alert-banner-slot.d.ts +5 -0
  13. package/lib/components/card/components/card-controls-slot.d.ts +4 -0
  14. package/lib/components/card/components/card-section-slot.d.ts +11 -0
  15. package/lib/components/card/components/index.d.ts +3 -0
  16. package/lib/components/card/index.d.ts +2 -0
  17. package/lib/components/card/molecules/index.d.ts +1 -0
  18. package/lib/components/card/molecules/left-right-card.d.ts +16 -0
  19. package/lib/components/checkbox/checkbox.d.ts +10 -0
  20. package/lib/components/checkbox/helpers.d.ts +12 -0
  21. package/lib/components/checkbox/index.d.ts +1 -0
  22. package/lib/components/divider/divider-type-flags.d.ts +9 -0
  23. package/lib/components/divider/divider.d.ts +7 -0
  24. package/lib/components/divider/index.d.ts +1 -0
  25. package/lib/components/flag/flag-size-flags.d.ts +12 -0
  26. package/lib/components/flag/flag.d.ts +9 -0
  27. package/lib/components/flag/flag.list.d.ts +781 -0
  28. package/lib/components/flag/index.d.ts +1 -0
  29. package/lib/components/icon/icon-list.d.ts +131 -0
  30. package/lib/components/icon/icon.d.ts +131 -0
  31. package/lib/components/icon/index.d.ts +1 -0
  32. package/lib/components/index.d.ts +17 -0
  33. package/lib/components/input-field/components/index.d.ts +2 -0
  34. package/lib/components/input-field/components/labeled-input.d.ts +10 -0
  35. package/lib/components/input-field/components/stepper.d.ts +7 -0
  36. package/lib/components/input-field/index.d.ts +3 -0
  37. package/lib/components/input-field/input-field.d.ts +25 -0
  38. package/lib/components/input-field/input-number.d.ts +18 -0
  39. package/lib/components/input-field/input-text.d.ts +14 -0
  40. package/lib/components/layout/flex.d.ts +16 -0
  41. package/lib/components/layout/grid-layout.d.ts +11 -0
  42. package/lib/components/layout/index.d.ts +3 -0
  43. package/lib/components/layout/left-right-layout.d.ts +34 -0
  44. package/lib/components/link/index.d.ts +1 -0
  45. package/lib/components/link/link.d.ts +14 -0
  46. package/lib/components/molecules/avatar/avatar-size-flags.d.ts +12 -0
  47. package/lib/components/molecules/avatar/avatar.d.ts +12 -0
  48. package/lib/components/molecules/avatar/index.d.ts +1 -0
  49. package/lib/components/molecules/button/button-flags.d.ts +44 -0
  50. package/lib/components/molecules/button/button.d.ts +12 -0
  51. package/lib/components/molecules/button/index.d.ts +1 -0
  52. package/lib/components/molecules/index.d.ts +3 -0
  53. package/lib/components/molecules/input-checkbox/index.d.ts +1 -0
  54. package/lib/components/molecules/input-checkbox/input-checkbox.d.ts +8 -0
  55. package/lib/components/organisms/index.d.ts +1 -0
  56. package/lib/components/organisms/multi-choice-list/index.d.ts +1 -0
  57. package/lib/components/organisms/multi-choice-list/multi-choice-list.d.ts +10 -0
  58. package/lib/components/spinner/index.d.ts +1 -0
  59. package/lib/components/spinner/spinner-size-flags.d.ts +10 -0
  60. package/lib/components/spinner/spinner.d.ts +9 -0
  61. package/lib/components/tabs/components/index.d.ts +1 -0
  62. package/lib/components/tabs/components/tab.d.ts +7 -0
  63. package/lib/components/tabs/index.d.ts +1 -0
  64. package/lib/components/tabs/tabs.d.ts +15 -0
  65. package/lib/components/tag/components/close-button.d.ts +8 -0
  66. package/lib/components/tag/components/index.d.ts +2 -0
  67. package/lib/components/tag/components/tag-label.d.ts +8 -0
  68. package/lib/components/tag/index.d.ts +1 -0
  69. package/lib/components/tag/tag.d.ts +10 -0
  70. package/lib/components/thumbnail/index.d.ts +1 -0
  71. package/lib/components/thumbnail/thumbnail-size-flags.d.ts +10 -0
  72. package/lib/components/thumbnail/thumbnail.d.ts +10 -0
  73. package/lib/components/typography/index.d.ts +1 -0
  74. package/lib/components/typography/typography.d.ts +24 -0
  75. package/lib/foundations/color-system/base-palette/base-palette.d.ts +76 -0
  76. package/lib/foundations/color-system/base-palette/index.d.ts +1 -0
  77. package/lib/foundations/color-system/color-guidelines/color-guidelines.d.ts +132 -0
  78. package/lib/foundations/color-system/color-guidelines/index.d.ts +1 -0
  79. package/lib/foundations/color-system/components/color-sample.d.ts +17 -0
  80. package/lib/foundations/color-system/components/index.d.ts +1 -0
  81. package/lib/foundations/color-system/index.d.ts +1 -0
  82. package/lib/foundations/index.d.ts +4 -0
  83. package/lib/foundations/shadows/components.d.ts +8 -0
  84. package/lib/foundations/shadows/index.d.ts +1 -0
  85. package/lib/foundations/shadows/shadows.d.ts +8 -0
  86. package/lib/foundations/spacing/index.d.ts +1 -0
  87. package/lib/foundations/spacing/spacing-guidelines.d.ts +22 -0
  88. package/lib/foundations/spacing/spacing.d.ts +18 -0
  89. package/lib/foundations/typography/constants.d.ts +22 -0
  90. package/lib/foundations/typography/fonts.d.ts +1 -0
  91. package/lib/foundations/typography/index.d.ts +1 -0
  92. package/lib/foundations/typography/text-aspect-flags.d.ts +19 -0
  93. package/lib/foundations/typography/typography.d.ts +24 -0
  94. package/lib/helpers/generic-types.d.ts +21 -0
  95. package/lib/helpers/index.d.ts +6 -0
  96. package/lib/helpers/nothing.d.ts +8 -0
  97. package/{src/lib/helpers/numbers.ts → lib/helpers/numbers.d.ts} +50 -67
  98. package/lib/helpers/safe-navigation.d.ts +15 -0
  99. package/lib/helpers/slots.d.ts +23 -0
  100. package/lib/helpers/strings.d.ts +1 -0
  101. package/package.json +11 -3
  102. package/.babelrc +0 -12
  103. package/.eslintrc.json +0 -147
  104. package/.storybook/main.js +0 -57
  105. package/.storybook/manager.js +0 -7
  106. package/.storybook/preview.js +0 -15
  107. package/.storybook/tsconfig.json +0 -30
  108. package/jest.config.ts +0 -15
  109. package/jest.setup.ts +0 -2
  110. package/project.json +0 -96
  111. package/release-it.json +0 -18
  112. package/src/README.md +0 -61
  113. package/src/assets/svg/example_icon.svg +0 -3
  114. package/src/assets/svg/example_icon_white.svg +0 -3
  115. package/src/assets/svg/spinner.svg +0 -3
  116. package/src/assets/svg/spinner_white.svg +0 -3
  117. package/src/helpers/index.ts +0 -4
  118. package/src/helpers/playground.ts +0 -16
  119. package/src/helpers/talesOf.tsx +0 -42
  120. package/src/index.ts +0 -2
  121. package/src/lib/components/README.md +0 -49
  122. package/src/lib/components/alert-banner/alert-banner.tsx +0 -34
  123. package/src/lib/components/alert-banner/alert-level-flags.ts +0 -77
  124. package/src/lib/components/alert-banner/index.ts +0 -1
  125. package/src/lib/components/badge/badge-type-flags.ts +0 -72
  126. package/src/lib/components/badge/badge.test.tsx +0 -29
  127. package/src/lib/components/badge/badge.tsx +0 -22
  128. package/src/lib/components/badge/index.ts +0 -1
  129. package/src/lib/components/badge/stories/badge.stories.mdx +0 -44
  130. package/src/lib/components/badge/stories/components.tsx +0 -49
  131. package/src/lib/components/card/atoms/index.ts +0 -1
  132. package/src/lib/components/card/card.test.tsx +0 -162
  133. package/src/lib/components/card/card.tsx +0 -78
  134. package/src/lib/components/card/components/card-alert-banner-slot.tsx +0 -16
  135. package/src/lib/components/card/components/card-controls-slot.tsx +0 -19
  136. package/src/lib/components/card/components/card-section-slot.tsx +0 -51
  137. package/src/lib/components/card/components/index.ts +0 -3
  138. package/src/lib/components/card/index.ts +0 -2
  139. package/src/lib/components/card/molecules/index.ts +0 -1
  140. package/src/lib/components/card/molecules/left-right-card.test.tsx +0 -89
  141. package/src/lib/components/card/molecules/left-right-card.tsx +0 -63
  142. package/src/lib/components/card/storybook/card.stories.mdx +0 -100
  143. package/src/lib/components/card/storybook/components.tsx +0 -223
  144. package/src/lib/components/checkbox/checkbox.test.tsx +0 -39
  145. package/src/lib/components/checkbox/checkbox.tsx +0 -63
  146. package/src/lib/components/checkbox/helpers.tsx +0 -100
  147. package/src/lib/components/checkbox/index.tsx +0 -1
  148. package/src/lib/components/checkbox/stories/checkbox.stories.mdx +0 -57
  149. package/src/lib/components/checkbox/stories/components.tsx +0 -84
  150. package/src/lib/components/divider/divider-type-flags.tsx +0 -37
  151. package/src/lib/components/divider/divider.test.tsx +0 -34
  152. package/src/lib/components/divider/divider.tsx +0 -37
  153. package/src/lib/components/divider/index.tsx +0 -1
  154. package/src/lib/components/divider/stories/components.tsx +0 -13
  155. package/src/lib/components/divider/stories/divider.stories.mdx +0 -44
  156. package/src/lib/components/flag/flag-size-flags.tsx +0 -55
  157. package/src/lib/components/flag/flag.list.tsx +0 -788
  158. package/src/lib/components/flag/flag.test.tsx +0 -65
  159. package/src/lib/components/flag/flag.tsx +0 -97
  160. package/src/lib/components/flag/index.tsx +0 -1
  161. package/src/lib/components/flag/stories/components.tsx +0 -403
  162. package/src/lib/components/flag/stories/flag.stories.mdx +0 -48
  163. package/src/lib/components/flag/stories/playGround-select.tsx +0 -145
  164. package/src/lib/components/icon/icon-list.tsx +0 -135
  165. package/src/lib/components/icon/icon.test.tsx +0 -48
  166. package/src/lib/components/icon/icon.tsx +0 -181
  167. package/src/lib/components/icon/index.tsx +0 -1
  168. package/src/lib/components/icon/stories/components.tsx +0 -282
  169. package/src/lib/components/icon/stories/icon.stories.mdx +0 -65
  170. package/src/lib/components/index.ts +0 -19
  171. package/src/lib/components/input-field/components/index.ts +0 -2
  172. package/src/lib/components/input-field/components/labeled-input.tsx +0 -54
  173. package/src/lib/components/input-field/components/stepper.tsx +0 -60
  174. package/src/lib/components/input-field/index.ts +0 -6
  175. package/src/lib/components/input-field/input-field.test.tsx +0 -107
  176. package/src/lib/components/input-field/input-field.tsx +0 -126
  177. package/src/lib/components/input-field/input-number.tsx +0 -41
  178. package/src/lib/components/input-field/input-text.tsx +0 -30
  179. package/src/lib/components/input-field/storybook/components.tsx +0 -327
  180. package/src/lib/components/input-field/storybook/input-field.stories.mdx +0 -113
  181. package/src/lib/components/layout/flex.tsx +0 -22
  182. package/src/lib/components/layout/grid-layout.tsx +0 -40
  183. package/src/lib/components/layout/index.ts +0 -3
  184. package/src/lib/components/layout/left-right-layout.tsx +0 -67
  185. package/src/lib/components/link/index.ts +0 -1
  186. package/src/lib/components/link/link.test.tsx +0 -29
  187. package/src/lib/components/link/link.tsx +0 -56
  188. package/src/lib/components/link/storybook/link.stories.mdx +0 -52
  189. package/src/lib/components/molecules/avatar/avatar-size-flags.tsx +0 -55
  190. package/src/lib/components/molecules/avatar/avatar.test.tsx +0 -114
  191. package/src/lib/components/molecules/avatar/avatar.tsx +0 -80
  192. package/src/lib/components/molecules/avatar/index.tsx +0 -1
  193. package/src/lib/components/molecules/avatar/stories/avatar.stories.mdx +0 -52
  194. package/src/lib/components/molecules/avatar/stories/components.tsx +0 -36
  195. package/src/lib/components/molecules/button/button-flags.tsx +0 -340
  196. package/src/lib/components/molecules/button/button.test.tsx +0 -77
  197. package/src/lib/components/molecules/button/button.tsx +0 -214
  198. package/src/lib/components/molecules/button/index.tsx +0 -1
  199. package/src/lib/components/molecules/button/stories/button.stories.mdx +0 -105
  200. package/src/lib/components/molecules/button/stories/components.tsx +0 -84
  201. package/src/lib/components/molecules/index.ts +0 -3
  202. package/src/lib/components/molecules/input-checkbox/index.tsx +0 -1
  203. package/src/lib/components/molecules/input-checkbox/input-checkbox.test.tsx +0 -34
  204. package/src/lib/components/molecules/input-checkbox/input-checkbox.tsx +0 -49
  205. package/src/lib/components/molecules/input-checkbox/stories/components.tsx +0 -53
  206. package/src/lib/components/molecules/input-checkbox/stories/input-checkbox.stories.mdx +0 -49
  207. package/src/lib/components/organisms/index.ts +0 -1
  208. package/src/lib/components/organisms/multi-choice-list/index.tsx +0 -1
  209. package/src/lib/components/organisms/multi-choice-list/multi-choice-list.test.tsx +0 -33
  210. package/src/lib/components/organisms/multi-choice-list/multi-choice-list.tsx +0 -52
  211. package/src/lib/components/organisms/multi-choice-list/stories/components.tsx +0 -124
  212. package/src/lib/components/organisms/multi-choice-list/stories/multi-choice-list.stories.mdx +0 -99
  213. package/src/lib/components/spinner/index.tsx +0 -1
  214. package/src/lib/components/spinner/spinner-size-flags.tsx +0 -39
  215. package/src/lib/components/spinner/spinner.test.tsx +0 -31
  216. package/src/lib/components/spinner/spinner.tsx +0 -54
  217. package/src/lib/components/spinner/stories/components.tsx +0 -39
  218. package/src/lib/components/spinner/stories/spinner.stories.mdx +0 -35
  219. package/src/lib/components/tabs/components/index.ts +0 -1
  220. package/src/lib/components/tabs/components/tab.tsx +0 -62
  221. package/src/lib/components/tabs/index.tsx +0 -1
  222. package/src/lib/components/tabs/storybook/components.tsx +0 -282
  223. package/src/lib/components/tabs/storybook/tabs.stories.mdx +0 -97
  224. package/src/lib/components/tabs/tabs.test.tsx +0 -86
  225. package/src/lib/components/tabs/tabs.tsx +0 -101
  226. package/src/lib/components/tag/components/close-button.tsx +0 -85
  227. package/src/lib/components/tag/components/index.ts +0 -2
  228. package/src/lib/components/tag/components/tag-label.tsx +0 -44
  229. package/src/lib/components/tag/index.tsx +0 -1
  230. package/src/lib/components/tag/stories/components.tsx +0 -86
  231. package/src/lib/components/tag/stories/tag.stories.mdx +0 -42
  232. package/src/lib/components/tag/tag.test.tsx +0 -36
  233. package/src/lib/components/tag/tag.tsx +0 -33
  234. package/src/lib/components/thumbnail/index.tsx +0 -1
  235. package/src/lib/components/thumbnail/stories/thumbnail.stories.mdx +0 -34
  236. package/src/lib/components/thumbnail/thumbnail-size-flags.tsx +0 -41
  237. package/src/lib/components/thumbnail/thumbnail.test.tsx +0 -51
  238. package/src/lib/components/thumbnail/thumbnail.tsx +0 -45
  239. package/src/lib/components/typography/index.ts +0 -1
  240. package/src/lib/components/typography/storybook/components.tsx +0 -288
  241. package/src/lib/components/typography/storybook/typography.stories.mdx +0 -90
  242. package/src/lib/components/typography/typography.test.tsx +0 -97
  243. package/src/lib/components/typography/typography.tsx +0 -99
  244. package/src/lib/foundations/color-system/base-palette/base-palette.stories.tsx +0 -123
  245. package/src/lib/foundations/color-system/base-palette/base-palette.ts +0 -93
  246. package/src/lib/foundations/color-system/base-palette/index.ts +0 -1
  247. package/src/lib/foundations/color-system/color-guidelines/color-guidelines.stories.mdx +0 -85
  248. package/src/lib/foundations/color-system/color-guidelines/color-guidelines.stories.tsx +0 -231
  249. package/src/lib/foundations/color-system/color-guidelines/color-guidelines.ts +0 -160
  250. package/src/lib/foundations/color-system/color-guidelines/index.ts +0 -1
  251. package/src/lib/foundations/color-system/components/color-sample.tsx +0 -99
  252. package/src/lib/foundations/color-system/components/index.ts +0 -1
  253. package/src/lib/foundations/color-system/index.ts +0 -1
  254. package/src/lib/foundations/index.ts +0 -4
  255. package/src/lib/foundations/shadows/components.tsx +0 -59
  256. package/src/lib/foundations/shadows/index.ts +0 -1
  257. package/src/lib/foundations/shadows/shadows.stories.mdx +0 -71
  258. package/src/lib/foundations/shadows/shadows.tsx +0 -47
  259. package/src/lib/foundations/spacing/index.ts +0 -1
  260. package/src/lib/foundations/spacing/spacing-guidelines.ts +0 -24
  261. package/src/lib/foundations/spacing/spacing.stories.mdx +0 -51
  262. package/src/lib/foundations/spacing/spacing.ts +0 -18
  263. package/src/lib/foundations/typography/constants.ts +0 -25
  264. package/src/lib/foundations/typography/fonts.ts +0 -205
  265. package/src/lib/foundations/typography/index.tsx +0 -1
  266. package/src/lib/foundations/typography/text-aspect-flags.ts +0 -61
  267. package/src/lib/foundations/typography/typography.tsx +0 -102
  268. package/src/lib/helpers/generic-types.ts +0 -44
  269. package/src/lib/helpers/index.ts +0 -6
  270. package/src/lib/helpers/nothing.tsx +0 -18
  271. package/src/lib/helpers/safe-navigation.ts +0 -44
  272. package/src/lib/helpers/slots.test.tsx +0 -98
  273. package/src/lib/helpers/slots.tsx +0 -157
  274. package/src/lib/helpers/strings.test.ts +0 -47
  275. package/src/lib/helpers/strings.ts +0 -16
  276. package/tsconfig.json +0 -35
  277. package/tsconfig.lib.json +0 -28
  278. package/tsconfig.spec.json +0 -21
@@ -1,86 +0,0 @@
1
- import { Playground } from 'storybook-addon-jarle-monaco'
2
- import { Canvas } from '@storybook/addon-docs'
3
- import { Tag } from '../tag'
4
- import { Card } from 'components/card'
5
- import styled from 'styled-components'
6
- import { Margin, Padding, Surface } from '@foundations'
7
-
8
- const WrapperStories = styled(Card)`
9
- width: 240px;
10
- height: 238px;
11
- padding: ${Padding.l};
12
- background: ${Surface.Default.Default};
13
- `
14
- const TagMarginBottom24 = styled(Tag)`
15
- margin-bottom: ${Margin.l};
16
- `
17
-
18
- const onClickHandler = () => {
19
- alert('Close button clicked')
20
- }
21
-
22
- export const SelectedTagHTMLExample = () => {
23
- return (
24
- <WrapperStories heading="Selected (2)">
25
- <TagMarginBottom24 closable onClick={onClickHandler}>Toronto, ON, Canada</TagMarginBottom24>
26
- <TagMarginBottom24 closable onClick={onClickHandler}>Melbourne NSW, Australia</TagMarginBottom24>
27
- </WrapperStories>
28
- )
29
- }
30
-
31
- export const TagExample = () => (
32
- <Playground
33
- code={`
34
- /* Edit this code sample! */
35
- <div style={{display:'flex', gap:'24px'}}>
36
- <Tag >Label</Tag>
37
- <Tag disabled >Label</Tag>
38
- <Tag closable onClick={onClickHandler}>Label</Tag>
39
- <Tag closable disabled>Label</Tag>
40
- </div>
41
- `}
42
- providerProps={{
43
- renderAsComponent: true,
44
- scope: {
45
- Tag,
46
- Canvas,
47
- onClickHandler
48
- },
49
- }}
50
- />
51
- )
52
-
53
- export const WorkedExample = () => (
54
- <Playground
55
- code={`
56
- const [selectedCities, setSelected] = useState([
57
- { id: 1, name: 'Vancouver, BC', disabled: true },
58
- { id: 2, name: 'Montreal, QC'},
59
- { id: 3, name: 'Toronto, ON'},
60
- ]);
61
-
62
- <div style={{display:'flex', gap:'24px'}}>
63
- {selectedCities.map((city, index) => {
64
- return (
65
- <Tag
66
- closable
67
- disabled={city.disabled}
68
- key={city.id}
69
- onClick={() => {
70
- setSelected( prevCities => prevCities.filter( filteredCity => filteredCity.id !== city.id ) )
71
- }}
72
- >{city.name}</Tag>
73
- )
74
- })}
75
- </div>
76
- `}
77
- providerProps={{
78
- renderAsComponent: true,
79
- scope: {
80
- Tag,
81
- Canvas,
82
- onClickHandler
83
- },
84
- }}
85
- />
86
- )
@@ -1,42 +0,0 @@
1
- import { Canvas, Meta, Story, ArgsTable } from '@storybook/addon-docs'
2
- import { Tag } from '../index'
3
- import { TagExample, SelectedTagHTMLExample, WorkedExample } from './components'
4
-
5
- <Meta title="Components/Tag" component={Tag} />
6
-
7
- # Tag
8
-
9
- For more details, check out the component page on [Figma](https://www.figma.com/file/ue1CurHfZ426o2T2l8Dk64/Edvisor-Product-Language?node-id=1545%3A4278)
10
-
11
- ## How to use
12
-
13
- ```javascript
14
- // Import the component
15
- import { Tag } from '@edvisor/product-language'
16
-
17
- // Render the default component
18
- <Tag>Label</Tag>
19
-
20
- ```
21
-
22
- ## Properties
23
-
24
- The available optional properties are as follows.
25
-
26
- | Prop | Type | Description |
27
- | ------------ | ---------- | ---------------------------------------------------- |
28
- | `closable?` | `boolean` | Add a close button to the tag |
29
- | `disabled?` | `boolean` | Disabled the tag |
30
- | `className?` | `string` | Add the class to the tag |
31
- | `onClick?` | `function` | Called when the close button is clicked |
32
-
33
- ## Example
34
-
35
- <SelectedTagHTMLExample />
36
-
37
-
38
- ## Playground
39
-
40
- Tags
41
-
42
- <WorkedExample />
@@ -1,36 +0,0 @@
1
- //tag.test
2
- import { render, screen } from '@testing-library/react'
3
- import userEvent from '@testing-library/user-event'
4
- import { Tag } from './index'
5
-
6
- describe('Tag Tests', () => {
7
- it('should render Tag with given Text', async () => {
8
- render(<Tag>Test</Tag>)
9
- expect(screen.getByText('Test')).toBeInTheDocument()
10
- expect(screen.queryByRole('button')).not.toBeInTheDocument()
11
- })
12
-
13
- it('should render a disabled Tag with the close button and with given Text', async () => {
14
- render(
15
- <Tag disabled closable>
16
- Close
17
- </Tag>
18
- )
19
- expect(screen.getByText('Close')).toBeInTheDocument()
20
- expect(screen.queryByRole('button')).toBeInTheDocument()
21
- })
22
-
23
- it('should render the Tag with close button and handle event after click', async () => {
24
- const spyOnClick = jest.fn()
25
- render(
26
- <Tag closable onClick={spyOnClick}>
27
- Clicked
28
- </Tag>
29
- )
30
- expect(screen.getByText('Clicked')).toBeInTheDocument()
31
-
32
- const closeIcon = screen.queryByRole('button') as HTMLElement
33
- await userEvent.click(closeIcon)
34
- expect(spyOnClick).toHaveBeenCalled()
35
- })
36
- })
@@ -1,33 +0,0 @@
1
- import { FC, PropsWithChildren, is } from '@helpers'
2
- import { Padding } from '@foundations'
3
- import styled from 'styled-components'
4
- import { Flex } from 'components/layout'
5
- import { CloseButton, TagLabel } from './components'
6
- import { HTMLAttributes } from 'react'
7
-
8
- const TagFrame = styled(Flex)`
9
- flex-direction: row;
10
- align-items: stretch;
11
- padding: ${Padding.none};
12
- width: fit-content;
13
- `
14
-
15
- interface IProps extends HTMLAttributes<HTMLDivElement>, PropsWithChildren {
16
- closable?: boolean
17
- disabled?: boolean
18
- className?: string
19
- onClick?: () => void
20
- }
21
-
22
- export const Tag: FC<IProps> = (props) => {
23
- const { disabled, closable, onClick, ...domProps } = props
24
-
25
- return (
26
- <TagFrame {...domProps} className={props.className}>
27
- <TagLabel disabled={disabled} closable={closable}>
28
- {props.children}
29
- </TagLabel>
30
- {is(closable) && <CloseButton {...props} />}
31
- </TagFrame>
32
- )
33
- }
@@ -1 +0,0 @@
1
- export * from './thumbnail'
@@ -1,34 +0,0 @@
1
- import { Canvas, Meta, Story, ArgsTable } from '@storybook/addon-docs';
2
- import { Thumbnail } from '../index'
3
- import { SpaceAround } from '../../layout'
4
-
5
- <Meta
6
- title="Components/Thumbnail"
7
- component={Thumbnail}
8
- />
9
-
10
- # Thumbnail
11
-
12
- For more details, check out the component page on [Figma](https://www.figma.com/file/ue1CurHfZ426o2T2l8Dk64/Edvisor-Product-Language?node-id=1545%3A4445)
13
-
14
- ## How to use
15
-
16
- ```javascript
17
- // Import the component
18
- import { Thumbnail } from './index'
19
-
20
-
21
- // Render the component sending the required parameters
22
- <Thumbnail imageUrl='https://blog.edvisor.io/hubfs/Edvisor%20Smi.png'/>
23
- ```
24
- ## Good Practices
25
- - You can send the `imageLabel` propertie as an `alt` propertie in order to set and alternative text to image
26
-
27
- ## Examples
28
-
29
- <Canvas>
30
- <Thumbnail large imageUrl='https://blog.edvisor.io/hubfs/Edvisor%20Smi.png'/>
31
- <Thumbnail medium imageUrl='https://blog.edvisor.io/hubfs/Edvisor%20Smi.png'/>
32
- <Thumbnail small imageUrl='https://blog.edvisor.io/hubfs/Edvisor%20Smi.png'/>
33
- </Canvas>
34
-
@@ -1,41 +0,0 @@
1
- // this file was generated, but it is safe to modify
2
- import { bitwiseOr, MappedEnum, RequireOnlyOne, PropsWithChildren } from '@helpers'
3
-
4
- const enum ThumbnailSize {
5
- small = 1,
6
- medium = 2,
7
- large = 4,
8
- }
9
-
10
- type ThumbnailSizes<T> = MappedEnum<typeof ThumbnailSize, T>
11
-
12
- function toThumbnailSize(n: number): ThumbnailSize {
13
- switch (n) {
14
- case ThumbnailSize.small:
15
- return ThumbnailSize.small
16
- case ThumbnailSize.medium:
17
- return ThumbnailSize.medium
18
- case ThumbnailSize.large:
19
- return ThumbnailSize.large
20
- default:
21
- return ThumbnailSize.medium
22
- }
23
- }
24
-
25
- const ThumbnailSizeValues = {
26
- [ThumbnailSize.small]: '40px',
27
- [ThumbnailSize.medium]: '60px',
28
- [ThumbnailSize.large]: '80px',
29
- }
30
-
31
-
32
- export type ThumbnailSizeProps = Partial<RequireOnlyOne<ThumbnailSizes<boolean>>> &
33
- PropsWithChildren
34
-
35
- export function getValuesBySize(props: ThumbnailSizeProps): string {
36
- return ThumbnailSizeValues[
37
- toThumbnailSize(
38
- bitwiseOr([props.small, props.medium, props.large])
39
- )
40
- ]
41
- }
@@ -1,51 +0,0 @@
1
- import {render, screen } from '@testing-library/react'
2
- import { Thumbnail } from './index'
3
-
4
- describe('Thumbnail Tests', () => {
5
- describe('Thumbnail Tests', () => {
6
- it('should render the Thumbnail with size small', () => {
7
- render(
8
- <Thumbnail
9
- imageUrl='https://blog.edvisor.io/hubfs/Edvisor%20Smi.png'
10
- small
11
- />
12
- )
13
-
14
- expect(screen.getByRole('img')).toBeInTheDocument()
15
- expect(screen.getByTestId('thumbnail-test')).toHaveStyle('height: 40px')
16
- })
17
-
18
- it('should render the Thumbnail with size medium', () => {
19
- render(
20
- <Thumbnail
21
- imageUrl='https://blog.edvisor.io/hubfs/Edvisor%20Smi.png'
22
- medium
23
- />
24
- )
25
-
26
- expect(screen.getByRole('img')).toBeInTheDocument()
27
- expect(screen.getByTestId('thumbnail-test')).toHaveStyle('height: 60px')
28
- })
29
-
30
- it('should render the Thumbnail with size large', () => {
31
- render(
32
- <Thumbnail
33
- imageUrl='https://blog.edvisor.io/hubfs/Edvisor%20Smi.png'
34
- large
35
- />
36
- )
37
-
38
- expect(screen.getByRole('img')).toBeInTheDocument()
39
- expect(screen.getByTestId('thumbnail-test')).toHaveStyle('height: 80px')
40
- })
41
-
42
- it('should not render the Thumbnail without imageUrl', () => {
43
- render(
44
- <Thumbnail />
45
- )
46
-
47
- const thumbnailElement = screen.queryByText('thumbnail-test')
48
- expect(thumbnailElement).not.toBeInTheDocument()
49
- })
50
- })
51
- })
@@ -1,45 +0,0 @@
1
- import styled from 'styled-components'
2
- import { FC, isNil, Nothing } from '@helpers'
3
- import { Borders, Padding } from '@foundations'
4
- import { SpaceAround } from '../layout/'
5
- import { ThumbnailSizeProps, getValuesBySize } from './thumbnail-size-flags'
6
-
7
- const Box = styled(SpaceAround)<{ size: string }>`
8
- width: ${({ size }) => size};
9
- height: ${({ size }) => size};
10
- border-radius: 6px;
11
- border: 1px solid ${Borders.Default};
12
- padding: ${Padding.xs};
13
- box-sizing: border-box;
14
- `
15
-
16
- const Image = styled.img`
17
- width: 100%;
18
- height: 100%;
19
- `
20
-
21
- interface IThumbnailProps {
22
- imageUrl?: string;
23
- imageLabel?: string;
24
- className?: string;
25
- }
26
- type IProps = IThumbnailProps & ThumbnailSizeProps
27
-
28
- export const Thumbnail: FC<IProps> = (props) => {
29
- const { imageUrl, imageLabel = imageUrl, className = '' } = props
30
- const size = getValuesBySize(props)
31
-
32
- if (isNil(imageUrl)) {
33
- return <Nothing/>
34
- }
35
-
36
- return (
37
- <Box
38
- size={size}
39
- data-testid="thumbnail-test"
40
- className={className}
41
- >
42
- <Image src={imageUrl} alt={imageLabel}/>
43
- </Box>
44
- )
45
- }
@@ -1 +0,0 @@
1
- export * from './typography'
@@ -1,288 +0,0 @@
1
- import { Actions, Borders, Surface, Text } from 'foundations/color-system'
2
- import { Margin, Padding } from 'foundations/spacing'
3
- import styled from 'styled-components'
4
- import { is } from '@helpers'
5
- import {
6
- Display,
7
- Heading1,
8
- Heading2,
9
- Heading3,
10
- Heading4,
11
- Body,
12
- BodyLarge,
13
- Caption,
14
- Label,
15
- } from '../typography'
16
- import { Typography } from '@foundations'
17
- import { Flex } from 'components/layout'
18
- import { useState } from 'react'
19
- import { StoryComponent } from '@stories'
20
-
21
- const Table = styled.div`
22
- background: ${Surface.Default};
23
- border-radius: 6px;
24
- `
25
-
26
- const Row = styled.div<{ gray?: boolean }>`
27
- display: flex;
28
- flex-direction: row;
29
- background-color: ${(props) => (is(props.gray) ? Surface.Default.Subdued : Surface.Default)};
30
- border-bottom: 1px solid ${Borders.Default.Subdued};
31
- `
32
-
33
- const Column = styled.div`
34
- ${Typography.Body}
35
- display: flex;
36
- padding: ${Padding.l};
37
- flex: 1;
38
- align-items: center;
39
- justify-content: center;
40
- justify-content: space-between;
41
- &:nth-child(1) {
42
- flex: 2;
43
- }
44
- `
45
-
46
- const HeaderColumn = styled(Column)`
47
- color: ${Text.Subdued};
48
- `
49
-
50
- export const Button = styled.div<{ critical?: boolean, primary?: boolean }>`
51
- background: ${({ critical, primary }) => {
52
- if (is(critical)) {
53
- return Actions.Critical.Default
54
- } else if (is(primary)) {
55
- return Actions.Primary.Default
56
- } else {
57
- return Actions.Secondary.Default
58
- }
59
- }};
60
- border: 1px solid ${({ critical, primary }) => {
61
- if (is(critical)) {
62
- return 'none'
63
- } else if (is(primary)) {
64
- return 'none'
65
- } else {
66
- return Borders.Default
67
- }
68
- }};
69
- box-sizing: border-box;
70
- cursor: pointer;
71
-
72
- display: flex;
73
- flex-direction: row;
74
- justify-content: center;
75
- align-items: center;
76
- padding: ${Padding.xs} ${Padding.m};
77
-
78
- border-radius: 6px;
79
- margin-right: ${Margin.s};
80
- `
81
-
82
- const Header = () => (
83
- <Row>
84
- <HeaderColumn><Label subdued>Typographic System</Label></HeaderColumn>
85
- <HeaderColumn><Label subdued>Weight</Label></HeaderColumn>
86
- <HeaderColumn><Label subdued>Size</Label></HeaderColumn>
87
- <HeaderColumn><Label subdued>Line Height</Label></HeaderColumn>
88
- <HeaderColumn><Label subdued>Spacing</Label></HeaderColumn>
89
- </Row>
90
- )
91
-
92
- const toTextAspectProps = (aspect: string) => {
93
- switch (aspect) {
94
- case 'subdued': return { subdued: true }
95
- case 'light': return { light: true }
96
- case 'critical': return { critical: true }
97
- case 'success': return { success: true }
98
- case 'onPrimary': return { onPrimary: true }
99
- case 'onCritical': return { onCritical: true }
100
- default: return {}
101
- }
102
- }
103
-
104
- const toButtonProps = (aspect: string) => {
105
- switch (aspect) {
106
- case 'onPrimary': return { primary: true }
107
- case 'onCritical': return { critical: true }
108
- default: return {}
109
- }
110
- }
111
-
112
- export const TypographyTable: StoryComponent = () => {
113
- const [aspect, setAspect] = useState('')
114
-
115
- return (
116
- <div>
117
- <Flex>
118
- <Button onClick={() => setAspect('default')}>
119
- <Body>Default</Body>
120
- </Button>
121
- <Button onClick={() => setAspect('subdued')}>
122
- <Body subdued>Subdued</Body>
123
- </Button>
124
- <Button onClick={() => setAspect('light')}>
125
- <Body light>Light</Body>
126
- </Button>
127
- <Button onClick={() => setAspect('critical')}>
128
- <Body critical>Critical</Body>
129
- </Button>
130
- <Button onClick={() => setAspect('success')}>
131
- <Body success>Success</Body>
132
- </Button>
133
- <Button primary onClick={() => setAspect('onPrimary')}>
134
- <Body onPrimary>OnPrimary</Body>
135
- </Button>
136
- <Button critical onClick={() => setAspect('onCritical')}>
137
- <Body onCritical>OnCritical</Body>
138
- </Button>
139
- </Flex>
140
- <Table>
141
- <Header />
142
- <Row gray>
143
- <Column>
144
- <Button {...toButtonProps(aspect)}>
145
- <Display {...toTextAspectProps(aspect)}>Display1</Display>
146
- </Button>
147
- </Column>
148
- <Column>Regular 400</Column>
149
- <Column>36px (2.25rem)</Column>
150
- <Column>44px</Column>
151
- <Column>0 px</Column>
152
- </Row>
153
- <Row>
154
- <Column>
155
- <Button {...toButtonProps(aspect)}>
156
- <Heading1 {...toTextAspectProps(aspect)}>Heading1</Heading1>
157
- </Button>
158
- </Column>
159
- <Column>Semibold 600</Column>
160
- <Column>28px (1.75rem)</Column>
161
- <Column>32px</Column>
162
- <Column>0 px</Column>
163
- </Row>
164
- <Row>
165
- <Column>
166
- <Button {...toButtonProps(aspect)}>
167
- <Heading2 {...toTextAspectProps(aspect)}>Heading2</Heading2>
168
- </Button>
169
- </Column>
170
- <Column>Semibold 600</Column>
171
- <Column>20px (1.25rem)</Column>
172
- <Column>28px</Column>
173
- <Column>0 px</Column>
174
- </Row>
175
- <Row>
176
- <Column>
177
- <Button {...toButtonProps(aspect)}>
178
- <Heading3 {...toTextAspectProps(aspect)}>Heading3</Heading3>
179
- </Button>
180
- </Column>
181
- <Column>Semibold 600</Column>
182
- <Column>16px (1 rem)</Column>
183
- <Column>24px</Column>
184
- <Column>0 px</Column>
185
- </Row>
186
- <Row>
187
- <Column>
188
- <Button {...toButtonProps(aspect)}>
189
- <Heading4 {...toTextAspectProps(aspect)}>Heading4</Heading4>
190
- </Button>
191
- </Column>
192
- <Column>Semibold 600</Column>
193
- <Column>14px (0.875rem)</Column>
194
- <Column>20px</Column>
195
- <Column>0 px</Column>
196
- </Row>
197
- <Row gray>
198
- <Column>
199
- <Button {...toButtonProps(aspect)}>
200
- <BodyLarge strong {...toTextAspectProps(aspect)}>BodyLarge/Strong</BodyLarge>
201
- </Button>
202
- </Column>
203
- <Column>Semibold 600</Column>
204
- <Column>18px (1.125rem)</Column>
205
- <Column>28px</Column>
206
- <Column>0 px</Column>
207
- </Row>
208
- <Row gray>
209
- <Column>
210
- <Button {...toButtonProps(aspect)}>
211
- <BodyLarge {...toTextAspectProps(aspect)}>BodyLarge/Default</BodyLarge>
212
- </Button>
213
- </Column>
214
- <Column>Regular 400</Column>
215
- <Column>18px (1.125rem)</Column>
216
- <Column>28px</Column>
217
- <Column>0 px</Column>
218
- </Row>
219
- <Row gray>
220
- <Column>
221
- <Button {...toButtonProps(aspect)}>
222
- <Body strong {...toTextAspectProps(aspect)}>Body Strong</Body>
223
- </Button>
224
- </Column>
225
- <Column>Medium 500</Column>
226
- <Column>14px (0.875rem)</Column>
227
- <Column>20px</Column>
228
- <Column>0 px</Column>
229
- </Row>
230
- <Row gray>
231
- <Column>
232
- <Button {...toButtonProps(aspect)}>
233
- <Body {...toTextAspectProps(aspect)}>Body default</Body>
234
- </Button>
235
- </Column>
236
- <Column>Regular 400</Column>
237
- <Column>14px (0.875rem)</Column>
238
- <Column>20px</Column>
239
- <Column>0 px</Column>
240
- </Row>
241
- <Row gray>
242
- <Column>
243
- <Button {...toButtonProps(aspect)}>
244
- <Caption {...toTextAspectProps(aspect)}>Caption</Caption>
245
- </Button>
246
- </Column>
247
- <Column>Regular 400</Column>
248
- <Column>13px (0.8125rem)</Column>
249
- <Column>16px</Column>
250
- <Column>0 px</Column>
251
- </Row>
252
- <Row>
253
- <Column>
254
- <Button {...toButtonProps(aspect)}>
255
- <Label strong {...toTextAspectProps(aspect)}>Label/Strong</Label>
256
- </Button>
257
- </Column>
258
- <Column>Medium 500</Column>
259
- <Column>14px (0.875rem)</Column>
260
- <Column>20px</Column>
261
- <Column>0 px</Column>
262
- </Row>
263
- <Row>
264
- <Column>
265
- <Button {...toButtonProps(aspect)}>
266
- <Label {...toTextAspectProps(aspect)}>Label/Default</Label>
267
- </Button>
268
- </Column>
269
- <Column>Regular 400</Column>
270
- <Column>14px (0.875rem)</Column>
271
- <Column>20px</Column>
272
- <Column>0 px</Column>
273
- </Row>
274
- <Row>
275
- <Column>
276
- <Button {...toButtonProps(aspect)}>
277
- <Label subtle {...toTextAspectProps(aspect)}>Label/Subtle</Label>
278
- </Button>
279
- </Column>
280
- <Column>Regular 400</Column>
281
- <Column>13px (0.8125rem)</Column>
282
- <Column>16px</Column>
283
- <Column>0 px</Column>
284
- </Row>
285
- </Table>
286
- </div>
287
- )
288
- }