oddsgate-ds 1.0.169 → 1.0.174

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 (268) hide show
  1. package/.babelrc.json +25 -25
  2. package/.editorconfig +12 -12
  3. package/.storybook/main.ts +58 -58
  4. package/.storybook/preview.ts +26 -26
  5. package/README.md +30 -30
  6. package/chromatic.config.json +6 -6
  7. package/dist/cjs/assets/components/quotes.svg +3 -3
  8. package/dist/esm/assets/components/quotes.svg +3 -3
  9. package/dist/public/assets/components/quotes.svg +3 -3
  10. package/dist/public/assets/empty-state.svg +28 -28
  11. package/dist/public/fonts/Nichrome/mdnichrome-bold-webfont.svg +241 -241
  12. package/dist/public/fonts/Nichrome/mdnichrome-regular-webfont.svg +241 -241
  13. package/dist/public/fonts/miewfont/miewfont.svg +38 -38
  14. package/package.json +103 -103
  15. package/prettier.config.js +7 -7
  16. package/public/assets/components/quotes.svg +3 -3
  17. package/public/assets/empty-state.svg +28 -28
  18. package/public/fonts/Nichrome/mdnichrome-bold-webfont.svg +241 -241
  19. package/public/fonts/Nichrome/mdnichrome-regular-webfont.svg +241 -241
  20. package/public/fonts/miewfont/miewfont.svg +38 -38
  21. package/rollup.config.js +98 -98
  22. package/src/components/atoms/Button/Button.component.tsx +60 -60
  23. package/src/components/atoms/Button/Button.interface.ts +29 -29
  24. package/src/components/atoms/Button/Button.stories.tsx +65 -65
  25. package/src/components/atoms/Button/Button.theme.ts +180 -180
  26. package/src/components/atoms/Button/index.ts +1 -1
  27. package/src/components/atoms/CardMarquee/CardMarquee.component.tsx +24 -24
  28. package/src/components/atoms/CardMarquee/CardMarquee.interface.ts +15 -15
  29. package/src/components/atoms/CardMarquee/CardMarquee.stories.tsx +21 -21
  30. package/src/components/atoms/CardMarquee/CardMarquee.theme.ts +48 -48
  31. package/src/components/atoms/CardMarquee/index.ts +1 -1
  32. package/src/components/atoms/Chip/Chip.component.tsx +30 -30
  33. package/src/components/atoms/Chip/Chip.interface.ts +14 -14
  34. package/src/components/atoms/Chip/Chip.stories.tsx +42 -42
  35. package/src/components/atoms/Chip/Chip.theme.ts +57 -57
  36. package/src/components/atoms/Chip/index.ts +1 -1
  37. package/src/components/atoms/CloseButton/CloseButton.component.tsx +17 -17
  38. package/src/components/atoms/CloseButton/CloseButton.interface.ts +9 -9
  39. package/src/components/atoms/CloseButton/CloseButton.stories.tsx +24 -24
  40. package/src/components/atoms/CloseButton/CloseButton.theme.ts +66 -66
  41. package/src/components/atoms/CloseButton/index.ts +1 -1
  42. package/src/components/atoms/Counter/Counter.component.tsx +99 -99
  43. package/src/components/atoms/Counter/Counter.interface.ts +10 -10
  44. package/src/components/atoms/Counter/Counter.stories.tsx +29 -29
  45. package/src/components/atoms/Counter/Counter.theme.ts +27 -27
  46. package/src/components/atoms/Counter/index.ts +1 -1
  47. package/src/components/atoms/EmptyState/EmptyState.component.tsx +27 -27
  48. package/src/components/atoms/EmptyState/EmptyState.interface.ts +10 -10
  49. package/src/components/atoms/EmptyState/EmptyState.stories.tsx +34 -34
  50. package/src/components/atoms/EmptyState/EmptyState.theme.ts +27 -27
  51. package/src/components/atoms/EmptyState/index.ts +1 -1
  52. package/src/components/atoms/Flex/Flex.component.tsx +30 -30
  53. package/src/components/atoms/Flex/Flex.interface.ts +24 -24
  54. package/src/components/atoms/Flex/Flex.theme.ts +12 -12
  55. package/src/components/atoms/Flex/index.ts +1 -1
  56. package/src/components/atoms/FlexGrid/FlexGrid.component.tsx +62 -62
  57. package/src/components/atoms/FlexGrid/FlexGrid.interface.ts +55 -55
  58. package/src/components/atoms/FlexGrid/FlexGrid.stories.tsx +59 -59
  59. package/src/components/atoms/FlexGrid/FlexGrid.theme.ts +82 -82
  60. package/src/components/atoms/FlexGrid/index.ts +1 -1
  61. package/src/components/atoms/FormField/CheckRadioField/CheckRadioField.component.tsx +24 -24
  62. package/src/components/atoms/FormField/CheckRadioField/CheckRadioField.interface.tsx +6 -6
  63. package/src/components/atoms/FormField/CheckRadioField/CheckRadioField.theme.ts +134 -134
  64. package/src/components/atoms/FormField/CheckRadioField/index.ts +1 -1
  65. package/src/components/atoms/FormField/FormField.component.tsx +37 -37
  66. package/src/components/atoms/FormField/FormField.interface.ts +10 -10
  67. package/src/components/atoms/FormField/FormField.stories.tsx +499 -499
  68. package/src/components/atoms/FormField/FormField.theme.tsx +136 -136
  69. package/src/components/atoms/FormField/index.ts +1 -1
  70. package/src/components/atoms/Heading/Heading.component.tsx +18 -18
  71. package/src/components/atoms/Heading/Heading.interface.tsx +21 -21
  72. package/src/components/atoms/Heading/Heading.theme.ts +17 -17
  73. package/src/components/atoms/Heading/index.ts +1 -1
  74. package/src/components/atoms/Icon/Icon.component.tsx +19 -19
  75. package/src/components/atoms/Icon/Icon.interface.ts +8 -8
  76. package/src/components/atoms/Icon/Icon.stories.tsx +26 -26
  77. package/src/components/atoms/Icon/Icon.theme.ts +115 -115
  78. package/src/components/atoms/Icon/index.ts +1 -1
  79. package/src/components/atoms/ImageWrapper/ImageWrapper.component.tsx +42 -42
  80. package/src/components/atoms/ImageWrapper/ImageWrapper.interface.ts +16 -16
  81. package/src/components/atoms/ImageWrapper/ImageWrapper.stories.tsx +27 -27
  82. package/src/components/atoms/ImageWrapper/ImageWrapper.theme.ts +50 -50
  83. package/src/components/atoms/ImageWrapper/index.ts +1 -1
  84. package/src/components/atoms/LegalLinks/LegalLinks.component.tsx +35 -35
  85. package/src/components/atoms/LegalLinks/LegalLinks.interface.ts +12 -12
  86. package/src/components/atoms/LegalLinks/LegalLinks.stories.tsx +43 -43
  87. package/src/components/atoms/LegalLinks/LegalLinks.theme.ts +33 -33
  88. package/src/components/atoms/LegalLinks/index.ts +1 -1
  89. package/src/components/atoms/Loader/Loader.component.tsx +26 -26
  90. package/src/components/atoms/Loader/Loader.interface.ts +10 -10
  91. package/src/components/atoms/Loader/Loader.stories.tsx +33 -33
  92. package/src/components/atoms/Loader/Loader.theme.ts +51 -51
  93. package/src/components/atoms/Loader/index.ts +1 -1
  94. package/src/components/atoms/Marquee/Marquee.component.tsx +32 -32
  95. package/src/components/atoms/Marquee/Marquee.interface.ts +10 -10
  96. package/src/components/atoms/Marquee/Marquee.stories.tsx +20 -20
  97. package/src/components/atoms/Marquee/Marquee.theme.ts +40 -40
  98. package/src/components/atoms/Marquee/index.ts +1 -1
  99. package/src/components/atoms/Quote/Quote.component.tsx +29 -29
  100. package/src/components/atoms/Quote/Quote.interface.ts +10 -10
  101. package/src/components/atoms/Quote/Quote.stories.tsx +25 -25
  102. package/src/components/atoms/Quote/Quote.theme.ts +26 -26
  103. package/src/components/atoms/Quote/index.ts +1 -1
  104. package/src/components/atoms/RichText/RichText.component.tsx +32 -32
  105. package/src/components/atoms/RichText/RichText.interface.ts +11 -11
  106. package/src/components/atoms/RichText/RichText.stories.tsx +73 -73
  107. package/src/components/atoms/RichText/RichText.theme.ts +34 -34
  108. package/src/components/atoms/RichText/index.ts +1 -1
  109. package/src/components/atoms/ScrollingNav/ScrollingNav.component.tsx +18 -18
  110. package/src/components/atoms/ScrollingNav/ScrollingNav.interface.ts +8 -8
  111. package/src/components/atoms/ScrollingNav/ScrollingNav.stories.tsx +44 -44
  112. package/src/components/atoms/ScrollingNav/ScrollingNav.theme.ts +58 -58
  113. package/src/components/atoms/ScrollingNav/index.ts +1 -1
  114. package/src/components/atoms/Separator/Separator.component.tsx +19 -19
  115. package/src/components/atoms/Separator/Separator.interface.tsx +10 -10
  116. package/src/components/atoms/Separator/Separator.stories.tsx +29 -29
  117. package/src/components/atoms/Separator/Separator.theme.ts +9 -9
  118. package/src/components/atoms/Separator/index.ts +1 -1
  119. package/src/components/atoms/SocialLinks/SocialLinks.component.tsx +42 -42
  120. package/src/components/atoms/SocialLinks/SocialLinks.interface.ts +8 -8
  121. package/src/components/atoms/SocialLinks/SocialLinks.stories.tsx +48 -48
  122. package/src/components/atoms/SocialLinks/SocialLinks.theme.ts +80 -80
  123. package/src/components/atoms/SocialLinks/index.ts +1 -1
  124. package/src/components/atoms/Spacer/Spacer.component.tsx +34 -34
  125. package/src/components/atoms/Spacer/Spacer.interface.ts +24 -24
  126. package/src/components/atoms/Spacer/Spacer.stories.tsx +99 -99
  127. package/src/components/atoms/Spacer/Spacer.theme.ts +33 -33
  128. package/src/components/atoms/Spacer/index.ts +1 -1
  129. package/src/components/atoms/Video/Video.component.tsx +116 -116
  130. package/src/components/atoms/Video/Video.interface.ts +13 -13
  131. package/src/components/atoms/Video/Video.stories.tsx +37 -37
  132. package/src/components/atoms/Video/Video.theme.ts +44 -44
  133. package/src/components/atoms/Video/index.ts +1 -1
  134. package/src/components/atoms/VideoEmbed/VideoEmbed.component.tsx +109 -109
  135. package/src/components/atoms/VideoEmbed/VideoEmbed.interface.ts +13 -13
  136. package/src/components/atoms/VideoEmbed/VideoEmbed.stories.tsx +23 -23
  137. package/src/components/atoms/VideoEmbed/VideoEmbed.theme.ts +45 -45
  138. package/src/components/atoms/VideoEmbed/index.ts +1 -1
  139. package/src/components/common/PortalComponent/PortalComponent.tsx +48 -48
  140. package/src/components/common/PortalComponent/index.ts +1 -1
  141. package/src/components/molecules/Accordion/Accordion.component.tsx +58 -58
  142. package/src/components/molecules/Accordion/Accordion.interface.ts +15 -15
  143. package/src/components/molecules/Accordion/Accordion.stories.tsx +100 -100
  144. package/src/components/molecules/Accordion/Accordion.theme.ts +93 -93
  145. package/src/components/molecules/Accordion/index.ts +1 -1
  146. package/src/components/molecules/BlogCard/BlogCard.component.tsx +48 -48
  147. package/src/components/molecules/BlogCard/BlogCard.interface.ts +10 -10
  148. package/src/components/molecules/BlogCard/BlogCard.stories.tsx +37 -37
  149. package/src/components/molecules/BlogCard/BlogCard.theme.ts +41 -41
  150. package/src/components/molecules/BlogCard/index.ts +1 -1
  151. package/src/components/molecules/Card/Card.component.tsx +15 -15
  152. package/src/components/molecules/Card/Card.interface.ts +11 -11
  153. package/src/components/molecules/Card/Card.theme.ts +54 -54
  154. package/src/components/molecules/Card/index.ts +1 -1
  155. package/src/components/molecules/CareersCard/CareersCard.component.tsx +27 -27
  156. package/src/components/molecules/CareersCard/CareersCard.interface.ts +7 -7
  157. package/src/components/molecules/CareersCard/CareersCard.stories.tsx +30 -30
  158. package/src/components/molecules/CareersCard/CareersCard.theme.ts +13 -13
  159. package/src/components/molecules/CareersCard/index.ts +1 -1
  160. package/src/components/molecules/Dropdown/Dropdown.component.tsx +67 -67
  161. package/src/components/molecules/Dropdown/Dropdown.interface.ts +26 -26
  162. package/src/components/molecules/Dropdown/Dropdown.stories.tsx +54 -54
  163. package/src/components/molecules/Dropdown/Dropdown.theme.ts +69 -69
  164. package/src/components/molecules/Dropdown/index.ts +1 -1
  165. package/src/components/molecules/EventsCard/EventsCard.component.tsx +40 -40
  166. package/src/components/molecules/EventsCard/EventsCard.interface.ts +9 -9
  167. package/src/components/molecules/EventsCard/EventsCard.stories.tsx +37 -37
  168. package/src/components/molecules/EventsCard/EventsCard.theme.ts +33 -33
  169. package/src/components/molecules/EventsCard/index.ts +1 -1
  170. package/src/components/molecules/IconBox/IconBox.component.tsx +29 -29
  171. package/src/components/molecules/IconBox/IconBox.interface.tsx +10 -10
  172. package/src/components/molecules/IconBox/IconBox.stories.tsx +23 -23
  173. package/src/components/molecules/IconBox/IconBox.theme.ts +25 -25
  174. package/src/components/molecules/IconBox/index.ts +1 -1
  175. package/src/components/molecules/IconTitle/IconTitle.component.tsx +24 -24
  176. package/src/components/molecules/IconTitle/IconTitle.interface.tsx +10 -10
  177. package/src/components/molecules/IconTitle/IconTitle.stories.tsx +49 -49
  178. package/src/components/molecules/IconTitle/IconTitle.theme.ts +10 -10
  179. package/src/components/molecules/IconTitle/index.ts +1 -1
  180. package/src/components/molecules/LicenseCard/LicenseCard.component.tsx +27 -27
  181. package/src/components/molecules/LicenseCard/LicenseCard.interface.ts +6 -6
  182. package/src/components/molecules/LicenseCard/LicenseCard.stories.tsx +42 -42
  183. package/src/components/molecules/LicenseCard/LicenseCard.theme.ts +28 -28
  184. package/src/components/molecules/LicenseCard/index.ts +1 -1
  185. package/src/components/molecules/LogosCard/LogosCard.component.tsx +14 -14
  186. package/src/components/molecules/LogosCard/LogosCard.interface.ts +8 -8
  187. package/src/components/molecules/LogosCard/LogosCard.stories.tsx +38 -38
  188. package/src/components/molecules/LogosCard/LogosCard.theme.ts +19 -19
  189. package/src/components/molecules/LogosCard/index.ts +1 -1
  190. package/src/components/molecules/Modal/Modal.component.tsx +70 -70
  191. package/src/components/molecules/Modal/Modal.interface.ts +11 -11
  192. package/src/components/molecules/Modal/Modal.stories.tsx +57 -57
  193. package/src/components/molecules/Modal/Modal.theme.ts +55 -55
  194. package/src/components/molecules/Modal/index.ts +1 -1
  195. package/src/components/molecules/NewsCard/NewsCard.component.tsx +55 -55
  196. package/src/components/molecules/NewsCard/NewsCard.interface.ts +9 -9
  197. package/src/components/molecules/NewsCard/NewsCard.stories.tsx +44 -44
  198. package/src/components/molecules/NewsCard/NewsCard.theme.ts +77 -77
  199. package/src/components/molecules/NewsCard/index.ts +1 -1
  200. package/src/components/molecules/OffCanvas/OffCanvas.component.tsx +55 -55
  201. package/src/components/molecules/OffCanvas/OffCanvas.interface.ts +12 -12
  202. package/src/components/molecules/OffCanvas/OffCanvas.stories.tsx +55 -55
  203. package/src/components/molecules/OffCanvas/OffCanvas.theme.ts +50 -50
  204. package/src/components/molecules/OffCanvas/index.ts +1 -1
  205. package/src/components/molecules/ProductCard/ProductCard.component.tsx +60 -60
  206. package/src/components/molecules/ProductCard/ProductCard.interface.ts +7 -7
  207. package/src/components/molecules/ProductCard/ProductCard.stories.tsx +42 -42
  208. package/src/components/molecules/ProductCard/ProductCard.theme.ts +26 -26
  209. package/src/components/molecules/ProductCard/index.ts +1 -1
  210. package/src/components/molecules/ShareModal/ShareModal.component.tsx +167 -167
  211. package/src/components/molecules/ShareModal/ShareModal.interface.ts +9 -9
  212. package/src/components/molecules/ShareModal/ShareModal.stories.tsx +33 -33
  213. package/src/components/molecules/ShareModal/ShareModal.theme.ts +103 -103
  214. package/src/components/molecules/ShareModal/index.ts +1 -1
  215. package/src/components/molecules/TeamCard/TeamCard.component.tsx +31 -31
  216. package/src/components/molecules/TeamCard/TeamCard.interface.ts +7 -7
  217. package/src/components/molecules/TeamCard/TeamCard.stories.tsx +33 -33
  218. package/src/components/molecules/TeamCard/TeamCard.theme.ts +12 -12
  219. package/src/components/molecules/TeamCard/index.ts +1 -1
  220. package/src/components/organisms/CircularSlider/CircularSlider.component.tsx +231 -231
  221. package/src/components/organisms/CircularSlider/CircularSlider.interface.ts +13 -13
  222. package/src/components/organisms/CircularSlider/CircularSlider.stories.tsx +138 -138
  223. package/src/components/organisms/CircularSlider/CircularSlider.theme.ts +126 -126
  224. package/src/components/organisms/CircularSlider/index.ts +1 -1
  225. package/src/components/organisms/Cover/Cover.component.tsx +46 -46
  226. package/src/components/organisms/Cover/Cover.interface.ts +14 -14
  227. package/src/components/organisms/Cover/Cover.stories.tsx +97 -97
  228. package/src/components/organisms/Cover/Cover.theme.ts +49 -49
  229. package/src/components/organisms/Cover/index.ts +1 -1
  230. package/src/components/organisms/ProductsSlider/ProductsSlider.component.tsx +216 -216
  231. package/src/components/organisms/ProductsSlider/ProductsSlider.interface.ts +12 -12
  232. package/src/components/organisms/ProductsSlider/ProductsSlider.stories.tsx +132 -132
  233. package/src/components/organisms/ProductsSlider/ProductsSlider.theme.ts +77 -77
  234. package/src/components/organisms/ProductsSlider/index.ts +1 -1
  235. package/src/components/organisms/ProductsSlider//306/222.js +164 -164
  236. package/src/components/organisms/Slider/Slider.component.tsx +154 -154
  237. package/src/components/organisms/Slider/Slider.interface.ts +19 -19
  238. package/src/components/organisms/Slider/Slider.stories.tsx +146 -146
  239. package/src/components/organisms/Slider/Slider.theme.ts +145 -145
  240. package/src/components/organisms/Slider/Slider.utils.tsx +19 -19
  241. package/src/components/organisms/Slider/index.ts +1 -1
  242. package/src/components/organisms/Tabs/Tabs.component.tsx +88 -88
  243. package/src/components/organisms/Tabs/Tabs.interface.ts +18 -18
  244. package/src/components/organisms/Tabs/Tabs.stories.tsx +118 -118
  245. package/src/components/organisms/Tabs/Tabs.theme.ts +115 -115
  246. package/src/components/organisms/Tabs/index.ts +1 -1
  247. package/src/helpers/clickOutsideToClose.tsx +17 -17
  248. package/src/helpers/events.ts +9 -9
  249. package/src/helpers/exportCSS.tsx +27 -27
  250. package/src/helpers/getIcons.ts +5 -5
  251. package/src/helpers/isTouchDevice.tsx +11 -11
  252. package/src/helpers/useInterval.ts +25 -25
  253. package/src/helpers/useMediaMatch.tsx +26 -26
  254. package/src/helpers/uuid.ts +5 -5
  255. package/src/iconsList.json +1 -1
  256. package/src/index.ts +68 -68
  257. package/src/reportWebVitals.js +13 -13
  258. package/src/stories/Documentation/Colors.stories.tsx +46 -46
  259. package/src/stories/Documentation/Headings.stories.tsx +24 -24
  260. package/src/stories/Documentation/Icons.stories.tsx +73 -73
  261. package/src/stories/Documentation/JWT.stories.tsx +60 -60
  262. package/src/stories/Documentation/Utilities.stories.tsx +65 -65
  263. package/src/styles/Global.ts +301 -301
  264. package/src/styles/grid.ts +70 -70
  265. package/src/styles/reset.ts +47 -47
  266. package/src/styles/utilities.ts +374 -374
  267. package/src/styles/variables.ts +180 -180
  268. package/tsconfig.json +31 -31
@@ -1,88 +1,88 @@
1
- import React, { useEffect, useRef, useState } from 'react'
2
- import {
3
- StyledTabs,
4
- StyledTabsContent,
5
- StyledTabsLinks,
6
- StyledTabsMenu
7
- } from './Tabs.theme'
8
-
9
- import Heading from '@/components/atoms/Heading/Heading.component'
10
- import { ITabs } from './Tabs.interface'
11
- import { debounce } from '@/helpers/events'
12
-
13
- const Tabs = ({ id, title, menu, vertical, className, style }: ITabs) => {
14
- const [active, setActive] = useState(0)
15
- const tabsContent = useRef<HTMLDivElement>();
16
-
17
- const setActiveEl = (item, index) => {
18
- if (item?.onClick) item?.onClick()
19
-
20
- setActive(index);
21
- }
22
-
23
-
24
- const setTabsHeight = debounce(() => {
25
- if (!tabsContent.current) return;
26
-
27
- const heights: number[] = [];
28
- Array.from(tabsContent?.current?.children).map((child: any) => {
29
- heights.push(child?.offsetHeight as number)
30
- })
31
- tabsContent.current.style.height = `${Math.max(...heights)}px`;
32
- }, 250)
33
-
34
- useEffect(()=>{
35
- setTabsHeight();
36
- window.addEventListener('resize', setTabsHeight);
37
-
38
- return () => {
39
- window.removeEventListener('resize', setTabsHeight);
40
- }
41
- }, [])
42
-
43
-
44
- return (
45
- <StyledTabs id={id} $vertical={vertical} className={className} style={style}>
46
- <div>
47
- {title && <Heading tag="h3" size="h1" className='text-uppercase mb-4'>{title}</Heading>}
48
- <StyledTabsMenu align='left'>
49
- {menu &&
50
- menu.map((item, index) => {
51
- return (
52
- <div key={`tab-${item.id}`}>
53
- <StyledTabsLinks
54
- $active={index === active}
55
- className='h3 fw-bold'
56
- onClick={() => {
57
- setActiveEl(item, index);
58
- }}
59
- >
60
- <span>{item.label}</span>
61
- </StyledTabsLinks>
62
- </div>
63
- )
64
- })}
65
- </StyledTabsMenu>
66
- </div>
67
- {menu && (
68
- <div ref={tabsContent as any} className='position-relative'>
69
- {menu.map((item, index) => {
70
- return (
71
- <StyledTabsContent
72
- key={`tab-content-${item.id}`}
73
- $active={index === active}
74
- className='h4'
75
- >
76
-
77
- <div>{item.content}</div>
78
- <Heading tag='span' size='h3' className='color-secondary50 fw-bold mt-5'>{item.label}</Heading>
79
- </StyledTabsContent>
80
- )
81
- })}
82
- </div>
83
- )}
84
- </StyledTabs>
85
- )
86
- }
87
-
88
- export default Tabs
1
+ import React, { useEffect, useRef, useState } from 'react'
2
+ import {
3
+ StyledTabs,
4
+ StyledTabsContent,
5
+ StyledTabsLinks,
6
+ StyledTabsMenu
7
+ } from './Tabs.theme'
8
+
9
+ import Heading from '@/components/atoms/Heading/Heading.component'
10
+ import { ITabs } from './Tabs.interface'
11
+ import { debounce } from '@/helpers/events'
12
+
13
+ const Tabs = ({ id, title, menu, vertical, className, style }: ITabs) => {
14
+ const [active, setActive] = useState(0)
15
+ const tabsContent = useRef<HTMLDivElement>();
16
+
17
+ const setActiveEl = (item, index) => {
18
+ if (item?.onClick) item?.onClick()
19
+
20
+ setActive(index);
21
+ }
22
+
23
+
24
+ const setTabsHeight = debounce(() => {
25
+ if (!tabsContent.current) return;
26
+
27
+ const heights: number[] = [];
28
+ Array.from(tabsContent?.current?.children).map((child: any) => {
29
+ heights.push(child?.offsetHeight as number)
30
+ })
31
+ tabsContent.current.style.height = `${Math.max(...heights)}px`;
32
+ }, 250)
33
+
34
+ useEffect(()=>{
35
+ setTabsHeight();
36
+ window.addEventListener('resize', setTabsHeight);
37
+
38
+ return () => {
39
+ window.removeEventListener('resize', setTabsHeight);
40
+ }
41
+ }, [])
42
+
43
+
44
+ return (
45
+ <StyledTabs id={id} $vertical={vertical} className={className} style={style}>
46
+ <div>
47
+ {title && <Heading tag="h3" size="h1" className='text-uppercase mb-4'>{title}</Heading>}
48
+ <StyledTabsMenu align='left'>
49
+ {menu &&
50
+ menu.map((item, index) => {
51
+ return (
52
+ <div key={`tab-${item.id}`}>
53
+ <StyledTabsLinks
54
+ $active={index === active}
55
+ className='h3 fw-bold'
56
+ onClick={() => {
57
+ setActiveEl(item, index);
58
+ }}
59
+ >
60
+ <span>{item.label}</span>
61
+ </StyledTabsLinks>
62
+ </div>
63
+ )
64
+ })}
65
+ </StyledTabsMenu>
66
+ </div>
67
+ {menu && (
68
+ <div ref={tabsContent as any} className='position-relative'>
69
+ {menu.map((item, index) => {
70
+ return (
71
+ <StyledTabsContent
72
+ key={`tab-content-${item.id}`}
73
+ $active={index === active}
74
+ className='h4'
75
+ >
76
+
77
+ <div>{item.content}</div>
78
+ <Heading tag='span' size='h3' className='color-secondary50 fw-bold mt-5'>{item.label}</Heading>
79
+ </StyledTabsContent>
80
+ )
81
+ })}
82
+ </div>
83
+ )}
84
+ </StyledTabs>
85
+ )
86
+ }
87
+
88
+ export default Tabs
@@ -1,18 +1,18 @@
1
- import { CSSProperties } from 'react';
2
-
3
- export interface ITabs {
4
- id?: string
5
- title?: string
6
- menu?: ITabsItem[]
7
- vertical?: boolean
8
- $vertical?: boolean
9
- className?: string
10
- style?: CSSProperties
11
- }
12
- export interface ITabsItem {
13
- id?: string
14
- label?: string
15
- $active?: boolean
16
- content?: React.ReactNode
17
- onClick?: (event?: React.MouseEvent<HTMLElement>) => void
18
- }
1
+ import { CSSProperties } from 'react';
2
+
3
+ export interface ITabs {
4
+ id?: string
5
+ title?: string
6
+ menu?: ITabsItem[]
7
+ vertical?: boolean
8
+ $vertical?: boolean
9
+ className?: string
10
+ style?: CSSProperties
11
+ }
12
+ export interface ITabsItem {
13
+ id?: string
14
+ label?: string
15
+ $active?: boolean
16
+ content?: React.ReactNode
17
+ onClick?: (event?: React.MouseEvent<HTMLElement>) => void
18
+ }
@@ -1,118 +1,118 @@
1
- import type { Meta, StoryObj } from '@storybook/react'
2
-
3
- import { ITabs } from './Tabs.interface'
4
- import React from 'react'
5
- import RichText from '@/components/atoms/RichText'
6
- import Tabs from './Tabs.component'
7
-
8
- // More on default export: https://storybook.js.org/docs/react/writing-stories/introduction#default-export
9
- export default {
10
- title: 'Components/Tabs',
11
- component: Tabs
12
- } as Meta
13
-
14
- export const Simple: StoryObj<ITabs> = {
15
- render: args => <Tabs {...args}></Tabs>,
16
- args: {
17
- title: 'Lorem ipsum dolor sit amet',
18
- vertical: true,
19
- menu: [
20
- {
21
- id: 'lorem-1',
22
- label: 'Lorem 1',
23
- content: (
24
- <RichText style={{ color: 'var(--color-gray50)' }}>
25
- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
26
- eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
27
- ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
28
- aliquip ex ea commodo consequat. Duis aute irure dolor in
29
- reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
30
- pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
31
- culpa qui officia deserunt mollit anim id est laborum.
32
- </RichText>
33
- ),
34
- onClick: () => {
35
- alert('Tab clicked')
36
- }
37
- },
38
- {
39
- id: 'lorem-2',
40
- label: 'Lorem 2',
41
- content: (
42
- <RichText style={{ color: 'var(--color-gray50)' }}>
43
- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
44
- eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
45
- ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
46
- aliquip ex ea commodo consequat. Duis aute irure dolor in
47
- reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
48
- pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
49
- culpa qui officia deserunt mollit anim id est eiusmod tempor
50
- incididunt ut labore et dolore magna aliqua. Ut enim ad minim
51
- veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex
52
- ea commodo consequat. Duis aute irure dolor in reprehenderit in
53
- voluptate velit esse cillum dolore eu fugiat nulla pariatur.
54
- Excepteur sint occaecat cupidatat non proident, sunt in culpa qui
55
- officia deserunt mollit anim id est laborum.
56
- </RichText>
57
- )
58
- },
59
- {
60
- id: 'lorem-3',
61
- label: 'Lorem 3',
62
- content: (
63
- <RichText style={{ color: 'var(--color-gray50)' }}>
64
- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
65
- eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
66
- ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
67
- aliquip ex ea commodo consequat. Duis aute irure dolor in
68
- </RichText>
69
- )
70
- },
71
- {
72
- id: 'lorem-4',
73
- label: 'Lorem 4',
74
- content: (
75
- <RichText style={{ color: 'var(--color-gray50)' }}>
76
- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
77
- eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
78
- ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
79
- aliquip ex ea commodo consequat. Duis aute irure dolor in
80
- reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
81
- pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
82
- culpa qui officia deserunt mollit anim id est laborum.
83
- </RichText>
84
- )
85
- },
86
- {
87
- id: 'lorem-5',
88
- label: 'Lorem 5',
89
- content: (
90
- <RichText style={{ color: 'var(--color-gray50)' }}>
91
- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
92
- eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
93
- ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
94
- aliquip ex ea commodo consequat. Duis aute irure dolor in
95
- reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
96
- pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
97
- culpa qui officia deserunt mollit anim id est laborum.
98
- </RichText>
99
- )
100
- },
101
- {
102
- id: 'lorem-6',
103
- label: 'Lorem 6',
104
- content: (
105
- <RichText style={{ color: 'var(--color-gray50)' }}>
106
- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
107
- eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
108
- ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
109
- aliquip ex ea commodo consequat. Duis aute irure dolor in
110
- reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
111
- pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
112
- culpa qui officia deserunt mollit anim id est laborum.
113
- </RichText>
114
- )
115
- }
116
- ]
117
- }
118
- }
1
+ import type { Meta, StoryObj } from '@storybook/react'
2
+
3
+ import { ITabs } from './Tabs.interface'
4
+ import React from 'react'
5
+ import RichText from '@/components/atoms/RichText'
6
+ import Tabs from './Tabs.component'
7
+
8
+ // More on default export: https://storybook.js.org/docs/react/writing-stories/introduction#default-export
9
+ export default {
10
+ title: 'Components/Tabs',
11
+ component: Tabs
12
+ } as Meta
13
+
14
+ export const Simple: StoryObj<ITabs> = {
15
+ render: args => <Tabs {...args}></Tabs>,
16
+ args: {
17
+ title: 'Lorem ipsum dolor sit amet',
18
+ vertical: true,
19
+ menu: [
20
+ {
21
+ id: 'lorem-1',
22
+ label: 'Lorem 1',
23
+ content: (
24
+ <RichText style={{ color: 'var(--color-gray50)' }}>
25
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
26
+ eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
27
+ ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
28
+ aliquip ex ea commodo consequat. Duis aute irure dolor in
29
+ reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
30
+ pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
31
+ culpa qui officia deserunt mollit anim id est laborum.
32
+ </RichText>
33
+ ),
34
+ onClick: () => {
35
+ alert('Tab clicked')
36
+ }
37
+ },
38
+ {
39
+ id: 'lorem-2',
40
+ label: 'Lorem 2',
41
+ content: (
42
+ <RichText style={{ color: 'var(--color-gray50)' }}>
43
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
44
+ eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
45
+ ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
46
+ aliquip ex ea commodo consequat. Duis aute irure dolor in
47
+ reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
48
+ pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
49
+ culpa qui officia deserunt mollit anim id est eiusmod tempor
50
+ incididunt ut labore et dolore magna aliqua. Ut enim ad minim
51
+ veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex
52
+ ea commodo consequat. Duis aute irure dolor in reprehenderit in
53
+ voluptate velit esse cillum dolore eu fugiat nulla pariatur.
54
+ Excepteur sint occaecat cupidatat non proident, sunt in culpa qui
55
+ officia deserunt mollit anim id est laborum.
56
+ </RichText>
57
+ )
58
+ },
59
+ {
60
+ id: 'lorem-3',
61
+ label: 'Lorem 3',
62
+ content: (
63
+ <RichText style={{ color: 'var(--color-gray50)' }}>
64
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
65
+ eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
66
+ ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
67
+ aliquip ex ea commodo consequat. Duis aute irure dolor in
68
+ </RichText>
69
+ )
70
+ },
71
+ {
72
+ id: 'lorem-4',
73
+ label: 'Lorem 4',
74
+ content: (
75
+ <RichText style={{ color: 'var(--color-gray50)' }}>
76
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
77
+ eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
78
+ ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
79
+ aliquip ex ea commodo consequat. Duis aute irure dolor in
80
+ reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
81
+ pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
82
+ culpa qui officia deserunt mollit anim id est laborum.
83
+ </RichText>
84
+ )
85
+ },
86
+ {
87
+ id: 'lorem-5',
88
+ label: 'Lorem 5',
89
+ content: (
90
+ <RichText style={{ color: 'var(--color-gray50)' }}>
91
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
92
+ eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
93
+ ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
94
+ aliquip ex ea commodo consequat. Duis aute irure dolor in
95
+ reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
96
+ pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
97
+ culpa qui officia deserunt mollit anim id est laborum.
98
+ </RichText>
99
+ )
100
+ },
101
+ {
102
+ id: 'lorem-6',
103
+ label: 'Lorem 6',
104
+ content: (
105
+ <RichText style={{ color: 'var(--color-gray50)' }}>
106
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
107
+ eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
108
+ ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
109
+ aliquip ex ea commodo consequat. Duis aute irure dolor in
110
+ reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
111
+ pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
112
+ culpa qui officia deserunt mollit anim id est laborum.
113
+ </RichText>
114
+ )
115
+ }
116
+ ]
117
+ }
118
+ }