oddsgate-ds 1.0.174 → 1.0.176

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 (305) 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/cjs/index.js +1 -1
  9. package/dist/cjs/index.js.map +1 -1
  10. package/dist/cjs/types/components/atoms/AwardBadge/AwardBadge.component.d.ts +11 -0
  11. package/dist/cjs/types/components/atoms/AwardBadge/AwardBadge.interface.d.ts +4 -0
  12. package/dist/cjs/types/components/atoms/AwardBadge/AwardBadge.theme.d.ts +3 -0
  13. package/dist/cjs/types/components/atoms/AwardBadge/index.d.ts +1 -0
  14. package/dist/cjs/types/components/molecules/AwardCard/AwardCard.component.d.ts +15 -0
  15. package/dist/cjs/types/components/molecules/AwardCard/AwardCard.interface.d.ts +10 -0
  16. package/dist/cjs/types/components/molecules/AwardCard/AwardCard.theme.d.ts +6 -0
  17. package/dist/cjs/types/components/molecules/AwardCard/index.d.ts +1 -0
  18. package/dist/cjs/types/components/organisms/Slider/Slider.component.d.ts +1 -1
  19. package/dist/cjs/types/components/organisms/Slider/Slider.interface.d.ts +3 -0
  20. package/dist/cjs/types/index.d.ts +2 -0
  21. package/dist/esm/assets/components/quotes.svg +3 -3
  22. package/dist/esm/index.js +5 -5
  23. package/dist/esm/index.js.map +1 -1
  24. package/dist/esm/types/components/atoms/AwardBadge/AwardBadge.component.d.ts +11 -0
  25. package/dist/esm/types/components/atoms/AwardBadge/AwardBadge.interface.d.ts +4 -0
  26. package/dist/esm/types/components/atoms/AwardBadge/AwardBadge.theme.d.ts +3 -0
  27. package/dist/esm/types/components/atoms/AwardBadge/index.d.ts +1 -0
  28. package/dist/esm/types/components/molecules/AwardCard/AwardCard.component.d.ts +15 -0
  29. package/dist/esm/types/components/molecules/AwardCard/AwardCard.interface.d.ts +10 -0
  30. package/dist/esm/types/components/molecules/AwardCard/AwardCard.theme.d.ts +6 -0
  31. package/dist/esm/types/components/molecules/AwardCard/index.d.ts +1 -0
  32. package/dist/esm/types/components/organisms/Slider/Slider.component.d.ts +1 -1
  33. package/dist/esm/types/components/organisms/Slider/Slider.interface.d.ts +3 -0
  34. package/dist/esm/types/index.d.ts +2 -0
  35. package/dist/public/assets/components/quotes.svg +3 -3
  36. package/dist/public/assets/empty-state.svg +28 -28
  37. package/dist/public/fonts/Nichrome/mdnichrome-bold-webfont.svg +241 -241
  38. package/dist/public/fonts/Nichrome/mdnichrome-regular-webfont.svg +241 -241
  39. package/dist/public/fonts/miewfont/miewfont.svg +38 -38
  40. package/dist/types.d.ts +41 -2
  41. package/package.json +103 -103
  42. package/prettier.config.js +7 -7
  43. package/public/assets/components/quotes.svg +3 -3
  44. package/public/assets/empty-state.svg +28 -28
  45. package/public/fonts/Nichrome/mdnichrome-bold-webfont.svg +241 -241
  46. package/public/fonts/Nichrome/mdnichrome-regular-webfont.svg +241 -241
  47. package/public/fonts/miewfont/miewfont.svg +38 -38
  48. package/rollup.config.js +98 -98
  49. package/src/components/atoms/AwardBadge/AwardBadge.component.tsx +25 -0
  50. package/src/components/atoms/AwardBadge/AwardBadge.interface.ts +4 -0
  51. package/src/components/atoms/AwardBadge/AwardBadge.stories.tsx +48 -0
  52. package/src/components/atoms/AwardBadge/AwardBadge.theme.ts +28 -0
  53. package/src/components/atoms/AwardBadge/index.ts +1 -0
  54. package/src/components/atoms/Button/Button.component.tsx +60 -60
  55. package/src/components/atoms/Button/Button.interface.ts +29 -29
  56. package/src/components/atoms/Button/Button.stories.tsx +65 -65
  57. package/src/components/atoms/Button/Button.theme.ts +180 -180
  58. package/src/components/atoms/Button/index.ts +1 -1
  59. package/src/components/atoms/CardMarquee/CardMarquee.component.tsx +24 -24
  60. package/src/components/atoms/CardMarquee/CardMarquee.interface.ts +15 -15
  61. package/src/components/atoms/CardMarquee/CardMarquee.stories.tsx +21 -21
  62. package/src/components/atoms/CardMarquee/CardMarquee.theme.ts +48 -48
  63. package/src/components/atoms/CardMarquee/index.ts +1 -1
  64. package/src/components/atoms/Chip/Chip.component.tsx +30 -30
  65. package/src/components/atoms/Chip/Chip.interface.ts +14 -14
  66. package/src/components/atoms/Chip/Chip.stories.tsx +42 -42
  67. package/src/components/atoms/Chip/Chip.theme.ts +57 -57
  68. package/src/components/atoms/Chip/index.ts +1 -1
  69. package/src/components/atoms/CloseButton/CloseButton.component.tsx +17 -17
  70. package/src/components/atoms/CloseButton/CloseButton.interface.ts +9 -9
  71. package/src/components/atoms/CloseButton/CloseButton.stories.tsx +24 -24
  72. package/src/components/atoms/CloseButton/CloseButton.theme.ts +66 -66
  73. package/src/components/atoms/CloseButton/index.ts +1 -1
  74. package/src/components/atoms/Counter/Counter.component.tsx +99 -99
  75. package/src/components/atoms/Counter/Counter.interface.ts +10 -10
  76. package/src/components/atoms/Counter/Counter.stories.tsx +29 -29
  77. package/src/components/atoms/Counter/Counter.theme.ts +27 -27
  78. package/src/components/atoms/Counter/index.ts +1 -1
  79. package/src/components/atoms/EmptyState/EmptyState.component.tsx +27 -27
  80. package/src/components/atoms/EmptyState/EmptyState.interface.ts +10 -10
  81. package/src/components/atoms/EmptyState/EmptyState.stories.tsx +34 -34
  82. package/src/components/atoms/EmptyState/EmptyState.theme.ts +27 -27
  83. package/src/components/atoms/EmptyState/index.ts +1 -1
  84. package/src/components/atoms/Flex/Flex.component.tsx +30 -30
  85. package/src/components/atoms/Flex/Flex.interface.ts +24 -24
  86. package/src/components/atoms/Flex/Flex.theme.ts +12 -12
  87. package/src/components/atoms/Flex/index.ts +1 -1
  88. package/src/components/atoms/FlexGrid/FlexGrid.component.tsx +62 -62
  89. package/src/components/atoms/FlexGrid/FlexGrid.interface.ts +55 -55
  90. package/src/components/atoms/FlexGrid/FlexGrid.stories.tsx +59 -59
  91. package/src/components/atoms/FlexGrid/FlexGrid.theme.ts +82 -82
  92. package/src/components/atoms/FlexGrid/index.ts +1 -1
  93. package/src/components/atoms/FormField/CheckRadioField/CheckRadioField.component.tsx +24 -24
  94. package/src/components/atoms/FormField/CheckRadioField/CheckRadioField.interface.tsx +6 -6
  95. package/src/components/atoms/FormField/CheckRadioField/CheckRadioField.theme.ts +134 -134
  96. package/src/components/atoms/FormField/CheckRadioField/index.ts +1 -1
  97. package/src/components/atoms/FormField/FormField.component.tsx +37 -37
  98. package/src/components/atoms/FormField/FormField.interface.ts +10 -10
  99. package/src/components/atoms/FormField/FormField.stories.tsx +499 -499
  100. package/src/components/atoms/FormField/FormField.theme.tsx +136 -136
  101. package/src/components/atoms/FormField/index.ts +1 -1
  102. package/src/components/atoms/Heading/Heading.component.tsx +18 -18
  103. package/src/components/atoms/Heading/Heading.interface.tsx +21 -21
  104. package/src/components/atoms/Heading/Heading.theme.ts +17 -17
  105. package/src/components/atoms/Heading/index.ts +1 -1
  106. package/src/components/atoms/Icon/Icon.component.tsx +19 -19
  107. package/src/components/atoms/Icon/Icon.interface.ts +8 -8
  108. package/src/components/atoms/Icon/Icon.stories.tsx +26 -26
  109. package/src/components/atoms/Icon/Icon.theme.ts +115 -115
  110. package/src/components/atoms/Icon/index.ts +1 -1
  111. package/src/components/atoms/ImageWrapper/ImageWrapper.component.tsx +42 -42
  112. package/src/components/atoms/ImageWrapper/ImageWrapper.interface.ts +16 -16
  113. package/src/components/atoms/ImageWrapper/ImageWrapper.stories.tsx +27 -27
  114. package/src/components/atoms/ImageWrapper/ImageWrapper.theme.ts +50 -50
  115. package/src/components/atoms/ImageWrapper/index.ts +1 -1
  116. package/src/components/atoms/LegalLinks/LegalLinks.component.tsx +35 -35
  117. package/src/components/atoms/LegalLinks/LegalLinks.interface.ts +12 -12
  118. package/src/components/atoms/LegalLinks/LegalLinks.stories.tsx +43 -43
  119. package/src/components/atoms/LegalLinks/LegalLinks.theme.ts +33 -33
  120. package/src/components/atoms/LegalLinks/index.ts +1 -1
  121. package/src/components/atoms/Loader/Loader.component.tsx +26 -26
  122. package/src/components/atoms/Loader/Loader.interface.ts +10 -10
  123. package/src/components/atoms/Loader/Loader.stories.tsx +33 -33
  124. package/src/components/atoms/Loader/Loader.theme.ts +51 -51
  125. package/src/components/atoms/Loader/index.ts +1 -1
  126. package/src/components/atoms/Marquee/Marquee.component.tsx +32 -32
  127. package/src/components/atoms/Marquee/Marquee.interface.ts +10 -10
  128. package/src/components/atoms/Marquee/Marquee.stories.tsx +20 -20
  129. package/src/components/atoms/Marquee/Marquee.theme.ts +40 -40
  130. package/src/components/atoms/Marquee/index.ts +1 -1
  131. package/src/components/atoms/Quote/Quote.component.tsx +29 -29
  132. package/src/components/atoms/Quote/Quote.interface.ts +10 -10
  133. package/src/components/atoms/Quote/Quote.stories.tsx +25 -25
  134. package/src/components/atoms/Quote/Quote.theme.ts +26 -26
  135. package/src/components/atoms/Quote/index.ts +1 -1
  136. package/src/components/atoms/RichText/RichText.component.tsx +32 -32
  137. package/src/components/atoms/RichText/RichText.interface.ts +11 -11
  138. package/src/components/atoms/RichText/RichText.stories.tsx +73 -73
  139. package/src/components/atoms/RichText/RichText.theme.ts +34 -34
  140. package/src/components/atoms/RichText/index.ts +1 -1
  141. package/src/components/atoms/ScrollingNav/ScrollingNav.component.tsx +18 -18
  142. package/src/components/atoms/ScrollingNav/ScrollingNav.interface.ts +8 -8
  143. package/src/components/atoms/ScrollingNav/ScrollingNav.stories.tsx +44 -44
  144. package/src/components/atoms/ScrollingNav/ScrollingNav.theme.ts +58 -58
  145. package/src/components/atoms/ScrollingNav/index.ts +1 -1
  146. package/src/components/atoms/Separator/Separator.component.tsx +19 -19
  147. package/src/components/atoms/Separator/Separator.interface.tsx +10 -10
  148. package/src/components/atoms/Separator/Separator.stories.tsx +29 -29
  149. package/src/components/atoms/Separator/Separator.theme.ts +9 -9
  150. package/src/components/atoms/Separator/index.ts +1 -1
  151. package/src/components/atoms/SocialLinks/SocialLinks.component.tsx +42 -42
  152. package/src/components/atoms/SocialLinks/SocialLinks.interface.ts +8 -8
  153. package/src/components/atoms/SocialLinks/SocialLinks.stories.tsx +48 -48
  154. package/src/components/atoms/SocialLinks/SocialLinks.theme.ts +80 -80
  155. package/src/components/atoms/SocialLinks/index.ts +1 -1
  156. package/src/components/atoms/Spacer/Spacer.component.tsx +34 -34
  157. package/src/components/atoms/Spacer/Spacer.interface.ts +24 -24
  158. package/src/components/atoms/Spacer/Spacer.stories.tsx +99 -99
  159. package/src/components/atoms/Spacer/Spacer.theme.ts +33 -33
  160. package/src/components/atoms/Spacer/index.ts +1 -1
  161. package/src/components/atoms/Video/Video.component.tsx +116 -116
  162. package/src/components/atoms/Video/Video.interface.ts +13 -13
  163. package/src/components/atoms/Video/Video.stories.tsx +37 -37
  164. package/src/components/atoms/Video/Video.theme.ts +44 -44
  165. package/src/components/atoms/Video/index.ts +1 -1
  166. package/src/components/atoms/VideoEmbed/VideoEmbed.component.tsx +109 -109
  167. package/src/components/atoms/VideoEmbed/VideoEmbed.interface.ts +13 -13
  168. package/src/components/atoms/VideoEmbed/VideoEmbed.stories.tsx +23 -23
  169. package/src/components/atoms/VideoEmbed/VideoEmbed.theme.ts +45 -45
  170. package/src/components/atoms/VideoEmbed/index.ts +1 -1
  171. package/src/components/common/PortalComponent/PortalComponent.tsx +48 -48
  172. package/src/components/common/PortalComponent/index.ts +1 -1
  173. package/src/components/molecules/Accordion/Accordion.component.tsx +58 -58
  174. package/src/components/molecules/Accordion/Accordion.interface.ts +15 -15
  175. package/src/components/molecules/Accordion/Accordion.stories.tsx +100 -100
  176. package/src/components/molecules/Accordion/Accordion.theme.ts +93 -93
  177. package/src/components/molecules/Accordion/index.ts +1 -1
  178. package/src/components/molecules/AwardCard/AwardCard.component.tsx +51 -0
  179. package/src/components/molecules/AwardCard/AwardCard.interface.ts +10 -0
  180. package/src/components/molecules/AwardCard/AwardCard.stories.tsx +34 -0
  181. package/src/components/molecules/AwardCard/AwardCard.theme.ts +33 -0
  182. package/src/components/molecules/AwardCard/index.ts +1 -0
  183. package/src/components/molecules/BlogCard/BlogCard.component.tsx +48 -48
  184. package/src/components/molecules/BlogCard/BlogCard.interface.ts +10 -10
  185. package/src/components/molecules/BlogCard/BlogCard.stories.tsx +37 -37
  186. package/src/components/molecules/BlogCard/BlogCard.theme.ts +41 -41
  187. package/src/components/molecules/BlogCard/index.ts +1 -1
  188. package/src/components/molecules/Card/Card.component.tsx +15 -15
  189. package/src/components/molecules/Card/Card.interface.ts +11 -11
  190. package/src/components/molecules/Card/Card.theme.ts +54 -54
  191. package/src/components/molecules/Card/index.ts +1 -1
  192. package/src/components/molecules/CareersCard/CareersCard.component.tsx +27 -27
  193. package/src/components/molecules/CareersCard/CareersCard.interface.ts +7 -7
  194. package/src/components/molecules/CareersCard/CareersCard.stories.tsx +30 -30
  195. package/src/components/molecules/CareersCard/CareersCard.theme.ts +13 -13
  196. package/src/components/molecules/CareersCard/index.ts +1 -1
  197. package/src/components/molecules/Dropdown/Dropdown.component.tsx +67 -67
  198. package/src/components/molecules/Dropdown/Dropdown.interface.ts +26 -26
  199. package/src/components/molecules/Dropdown/Dropdown.stories.tsx +54 -54
  200. package/src/components/molecules/Dropdown/Dropdown.theme.ts +69 -69
  201. package/src/components/molecules/Dropdown/index.ts +1 -1
  202. package/src/components/molecules/EventsCard/EventsCard.component.tsx +40 -40
  203. package/src/components/molecules/EventsCard/EventsCard.interface.ts +9 -9
  204. package/src/components/molecules/EventsCard/EventsCard.stories.tsx +37 -37
  205. package/src/components/molecules/EventsCard/EventsCard.theme.ts +33 -33
  206. package/src/components/molecules/EventsCard/index.ts +1 -1
  207. package/src/components/molecules/IconBox/IconBox.component.tsx +29 -29
  208. package/src/components/molecules/IconBox/IconBox.interface.tsx +10 -10
  209. package/src/components/molecules/IconBox/IconBox.stories.tsx +23 -23
  210. package/src/components/molecules/IconBox/IconBox.theme.ts +25 -25
  211. package/src/components/molecules/IconBox/index.ts +1 -1
  212. package/src/components/molecules/IconTitle/IconTitle.component.tsx +24 -24
  213. package/src/components/molecules/IconTitle/IconTitle.interface.tsx +10 -10
  214. package/src/components/molecules/IconTitle/IconTitle.stories.tsx +49 -49
  215. package/src/components/molecules/IconTitle/IconTitle.theme.ts +10 -10
  216. package/src/components/molecules/IconTitle/index.ts +1 -1
  217. package/src/components/molecules/LicenseCard/LicenseCard.component.tsx +27 -27
  218. package/src/components/molecules/LicenseCard/LicenseCard.interface.ts +6 -6
  219. package/src/components/molecules/LicenseCard/LicenseCard.stories.tsx +42 -42
  220. package/src/components/molecules/LicenseCard/LicenseCard.theme.ts +28 -28
  221. package/src/components/molecules/LicenseCard/index.ts +1 -1
  222. package/src/components/molecules/LogosCard/LogosCard.component.tsx +14 -14
  223. package/src/components/molecules/LogosCard/LogosCard.interface.ts +8 -8
  224. package/src/components/molecules/LogosCard/LogosCard.stories.tsx +38 -38
  225. package/src/components/molecules/LogosCard/LogosCard.theme.ts +19 -19
  226. package/src/components/molecules/LogosCard/index.ts +1 -1
  227. package/src/components/molecules/Modal/Modal.component.tsx +70 -70
  228. package/src/components/molecules/Modal/Modal.interface.ts +11 -11
  229. package/src/components/molecules/Modal/Modal.stories.tsx +57 -57
  230. package/src/components/molecules/Modal/Modal.theme.ts +55 -55
  231. package/src/components/molecules/Modal/index.ts +1 -1
  232. package/src/components/molecules/NewsCard/NewsCard.component.tsx +55 -55
  233. package/src/components/molecules/NewsCard/NewsCard.interface.ts +9 -9
  234. package/src/components/molecules/NewsCard/NewsCard.stories.tsx +44 -44
  235. package/src/components/molecules/NewsCard/NewsCard.theme.ts +77 -77
  236. package/src/components/molecules/NewsCard/index.ts +1 -1
  237. package/src/components/molecules/OffCanvas/OffCanvas.component.tsx +55 -55
  238. package/src/components/molecules/OffCanvas/OffCanvas.interface.ts +12 -12
  239. package/src/components/molecules/OffCanvas/OffCanvas.stories.tsx +55 -55
  240. package/src/components/molecules/OffCanvas/OffCanvas.theme.ts +50 -50
  241. package/src/components/molecules/OffCanvas/index.ts +1 -1
  242. package/src/components/molecules/ProductCard/ProductCard.component.tsx +60 -60
  243. package/src/components/molecules/ProductCard/ProductCard.interface.ts +7 -7
  244. package/src/components/molecules/ProductCard/ProductCard.stories.tsx +42 -42
  245. package/src/components/molecules/ProductCard/ProductCard.theme.ts +26 -26
  246. package/src/components/molecules/ProductCard/index.ts +1 -1
  247. package/src/components/molecules/ShareModal/ShareModal.component.tsx +167 -167
  248. package/src/components/molecules/ShareModal/ShareModal.interface.ts +9 -9
  249. package/src/components/molecules/ShareModal/ShareModal.stories.tsx +33 -33
  250. package/src/components/molecules/ShareModal/ShareModal.theme.ts +103 -103
  251. package/src/components/molecules/ShareModal/index.ts +1 -1
  252. package/src/components/molecules/TeamCard/TeamCard.component.tsx +31 -31
  253. package/src/components/molecules/TeamCard/TeamCard.interface.ts +7 -7
  254. package/src/components/molecules/TeamCard/TeamCard.stories.tsx +33 -33
  255. package/src/components/molecules/TeamCard/TeamCard.theme.ts +12 -12
  256. package/src/components/molecules/TeamCard/index.ts +1 -1
  257. package/src/components/organisms/CircularSlider/CircularSlider.component.tsx +231 -231
  258. package/src/components/organisms/CircularSlider/CircularSlider.interface.ts +13 -13
  259. package/src/components/organisms/CircularSlider/CircularSlider.stories.tsx +138 -138
  260. package/src/components/organisms/CircularSlider/CircularSlider.theme.ts +126 -126
  261. package/src/components/organisms/CircularSlider/index.ts +1 -1
  262. package/src/components/organisms/Cover/Cover.component.tsx +46 -46
  263. package/src/components/organisms/Cover/Cover.interface.ts +14 -14
  264. package/src/components/organisms/Cover/Cover.stories.tsx +97 -97
  265. package/src/components/organisms/Cover/Cover.theme.ts +49 -49
  266. package/src/components/organisms/Cover/index.ts +1 -1
  267. package/src/components/organisms/ProductsSlider/ProductsSlider.component.tsx +216 -216
  268. package/src/components/organisms/ProductsSlider/ProductsSlider.interface.ts +12 -12
  269. package/src/components/organisms/ProductsSlider/ProductsSlider.stories.tsx +132 -132
  270. package/src/components/organisms/ProductsSlider/ProductsSlider.theme.ts +77 -77
  271. package/src/components/organisms/ProductsSlider/index.ts +1 -1
  272. package/src/components/organisms/ProductsSlider//306/222.js +164 -164
  273. package/src/components/organisms/Slider/Slider.component.tsx +156 -154
  274. package/src/components/organisms/Slider/Slider.interface.ts +23 -19
  275. package/src/components/organisms/Slider/Slider.stories.tsx +223 -146
  276. package/src/components/organisms/Slider/Slider.theme.ts +144 -145
  277. package/src/components/organisms/Slider/Slider.utils.tsx +19 -19
  278. package/src/components/organisms/Slider/index.ts +1 -1
  279. package/src/components/organisms/Tabs/Tabs.component.tsx +88 -88
  280. package/src/components/organisms/Tabs/Tabs.interface.ts +18 -18
  281. package/src/components/organisms/Tabs/Tabs.stories.tsx +118 -118
  282. package/src/components/organisms/Tabs/Tabs.theme.ts +115 -115
  283. package/src/components/organisms/Tabs/index.ts +1 -1
  284. package/src/helpers/clickOutsideToClose.tsx +17 -17
  285. package/src/helpers/events.ts +9 -9
  286. package/src/helpers/exportCSS.tsx +27 -27
  287. package/src/helpers/getIcons.ts +5 -5
  288. package/src/helpers/isTouchDevice.tsx +11 -11
  289. package/src/helpers/useInterval.ts +25 -25
  290. package/src/helpers/useMediaMatch.tsx +26 -26
  291. package/src/helpers/uuid.ts +5 -5
  292. package/src/iconsList.json +1 -1
  293. package/src/index.ts +70 -68
  294. package/src/reportWebVitals.js +13 -13
  295. package/src/stories/Documentation/Colors.stories.tsx +46 -46
  296. package/src/stories/Documentation/Headings.stories.tsx +24 -24
  297. package/src/stories/Documentation/Icons.stories.tsx +73 -73
  298. package/src/stories/Documentation/JWT.stories.tsx +60 -60
  299. package/src/stories/Documentation/Utilities.stories.tsx +65 -65
  300. package/src/styles/Global.ts +301 -301
  301. package/src/styles/grid.ts +70 -70
  302. package/src/styles/reset.ts +47 -47
  303. package/src/styles/utilities.ts +374 -374
  304. package/src/styles/variables.ts +180 -180
  305. package/tsconfig.json +31 -31
@@ -1,164 +1,164 @@
1
- import React, { useEffect, useMemo, useRef, useState } from 'react'
2
- import {
3
- StyledProductsSlider,
4
- StyledProductsSliderContent,
5
- StyledProductsSliderSlide,
6
- StyledProductsSliderSlides,
7
- StyledProductsSliderWrapper
8
- } from './ProductsSlider.theme'
9
-
10
- import Heading from '@/components/atoms/Heading/Heading.component';
11
- import { IProductsSlider } from './ProductsSlider.interface'
12
- import ProductCard from '@/components/molecules/ProductCard/ProductCard.component';
13
- import { debounce } from '@/helpers/events';
14
- import useMediaMatch from '@/helpers/useMediaMatch';
15
-
16
- const ProductsSlider = ({
17
- content,
18
- style,
19
- className,
20
- }: IProductsSlider) => {
21
-
22
- const [activeElement, setActiveElement] = useState(content && content[0]);
23
- const slider = useRef<HTMLDivElement>();
24
- const wrapper = useRef<HTMLDivElement>();
25
- const slidesHolder = useRef<HTMLDivElement>();
26
- const contentHolder = useRef<HTMLDivElement>();
27
- const isMobile = useMediaMatch();
28
-
29
-
30
- //force 26 items
31
- const newContent = useMemo(() => {
32
- if (isMobile) {
33
- return content;
34
- } else if (content && content.length < 26) {
35
- let counter = 0;
36
- for (let i = content.length; i <= 26; i++) {
37
- content[i] = content[counter];
38
- counter++;
39
- }
40
- return content;
41
- }
42
- }, [isMobile, content])
43
-
44
- useEffect(() => {
45
- const _options = {
46
- type: "equal", // compact, equal
47
- size: 1, // 0, 1
48
- reflection: 0.6, // 0, 1
49
- rotateY: 0, // 0, 360
50
- reverse: false,
51
- shiftX: 0,
52
- shiftY: 0,
53
- }
54
-
55
- const render = () => {
56
- if (!slidesHolder.current) return //bail out;
57
-
58
- const targetBound = slidesHolder?.current.getBoundingClientRect();
59
- const childItems = Array.prototype.slice.call(slidesHolder?.current?.children);
60
-
61
- let coordinates = equalCoordinates(childItems.length, targetBound.width / 2, targetBound.height, targetBound.width / 2, targetBound.height)
62
-
63
- childItems.forEach((child, index) => {
64
- if (coordinates[index]) {
65
- const left = coordinates[index][0] - (child.clientWidth / 2) + _options.shiftX;
66
- const top = coordinates[index][1] - (child.clientHeight / 2) + _options.shiftY;
67
- child.style.left = left + "px";
68
- child.style.top = top + "px";
69
- }
70
- })
71
- }
72
-
73
- const _computeDpt = (r1, r2, theta, rotateY = 0) => {
74
- const dpt_sin = Math.pow(r1 * Math.sin(theta + rotateY), 2)
75
- const dpt_cos = Math.pow(r2 * Math.cos(theta + rotateY), 2)
76
- return Math.sqrt(dpt_sin + dpt_cos)
77
- }
78
-
79
- const equalCoordinates = (n, r1, r2, centerX, centerY) => {
80
- // type options
81
- let reflection = -(_options.reflection);
82
-
83
- let deltaTheta = 0.001
84
-
85
- let coordinates: number[][] = [];
86
- let theta = 0;
87
-
88
- const twoPi = (Math.PI * 2 * _options.size);
89
- const numIntegrals = Math.round(twoPi / deltaTheta);
90
-
91
- let circ = 0;
92
- let dpt = 0;
93
-
94
- /* integrate over the ellipse to get the circumference */
95
- for (let i = 1; i < numIntegrals; i++) {
96
- theta += i * deltaTheta;
97
- dpt = _computeDpt(r1, r2, theta);
98
- circ += dpt;
99
- }
100
-
101
- let nextPoint = 0;
102
- let run = 0;
103
- theta = 0;
104
-
105
- const rotateY = (Math.PI / 2 * (_options.rotateY * 4 / 360));
106
- for (let i = 0; i < numIntegrals; i++) {
107
- theta += deltaTheta;
108
- let subIntegral = n * run / circ;
109
- if (subIntegral >= nextPoint) {
110
- let x: number = Math.floor((centerX - r1 * Math.cos(theta + rotateY)) * 100) / 100;
111
- let y: number = Math.floor((centerY + r2 * Math.sin(theta + rotateY) * reflection) * 100) / 100;
112
- coordinates.push([x, y]);
113
-
114
- nextPoint++;
115
- }
116
-
117
- run += _computeDpt(r1, r2, theta, rotateY);
118
- }
119
-
120
- return coordinates;
121
- }
122
-
123
- render();
124
- window.addEventListener("resize", render);
125
-
126
- return () => {
127
- window.removeEventListener('resize', render)
128
- }
129
- }, [isMobile])
130
-
131
- if (!content) return <></>
132
-
133
- return (
134
- <StyledProductsSlider ref={slider as any} className={className} style={style}>
135
- <StyledProductsSliderWrapper ref={wrapper as any}>
136
- <StyledProductsSliderSlides ref={slidesHolder as any}>
137
- {newContent?.map((item, index) => {
138
- return (
139
- <StyledProductsSliderSlide key={`ProductCard-${index}`}>
140
- <ProductCard
141
- imageElement={item.imageElement}
142
- title={item.title}
143
- description={isMobile ? item?.description : ""}
144
- />
145
- </StyledProductsSliderSlide>
146
- )
147
- })}
148
- </StyledProductsSliderSlides>
149
- </StyledProductsSliderWrapper>
150
- {!isMobile && (
151
- <StyledProductsSliderContent ref={contentHolder as any}>
152
- <Heading tag="h5" size="h5">
153
- <strong>{activeElement?.title}</strong>
154
- <br />
155
- {activeElement?.description}
156
- </Heading>
157
- </StyledProductsSliderContent>
158
- )}
159
- </StyledProductsSlider>
160
-
161
- )
162
- }
163
-
164
- export default ProductsSlider
1
+ import React, { useEffect, useMemo, useRef, useState } from 'react'
2
+ import {
3
+ StyledProductsSlider,
4
+ StyledProductsSliderContent,
5
+ StyledProductsSliderSlide,
6
+ StyledProductsSliderSlides,
7
+ StyledProductsSliderWrapper
8
+ } from './ProductsSlider.theme'
9
+
10
+ import Heading from '@/components/atoms/Heading/Heading.component';
11
+ import { IProductsSlider } from './ProductsSlider.interface'
12
+ import ProductCard from '@/components/molecules/ProductCard/ProductCard.component';
13
+ import { debounce } from '@/helpers/events';
14
+ import useMediaMatch from '@/helpers/useMediaMatch';
15
+
16
+ const ProductsSlider = ({
17
+ content,
18
+ style,
19
+ className,
20
+ }: IProductsSlider) => {
21
+
22
+ const [activeElement, setActiveElement] = useState(content && content[0]);
23
+ const slider = useRef<HTMLDivElement>();
24
+ const wrapper = useRef<HTMLDivElement>();
25
+ const slidesHolder = useRef<HTMLDivElement>();
26
+ const contentHolder = useRef<HTMLDivElement>();
27
+ const isMobile = useMediaMatch();
28
+
29
+
30
+ //force 26 items
31
+ const newContent = useMemo(() => {
32
+ if (isMobile) {
33
+ return content;
34
+ } else if (content && content.length < 26) {
35
+ let counter = 0;
36
+ for (let i = content.length; i <= 26; i++) {
37
+ content[i] = content[counter];
38
+ counter++;
39
+ }
40
+ return content;
41
+ }
42
+ }, [isMobile, content])
43
+
44
+ useEffect(() => {
45
+ const _options = {
46
+ type: "equal", // compact, equal
47
+ size: 1, // 0, 1
48
+ reflection: 0.6, // 0, 1
49
+ rotateY: 0, // 0, 360
50
+ reverse: false,
51
+ shiftX: 0,
52
+ shiftY: 0,
53
+ }
54
+
55
+ const render = () => {
56
+ if (!slidesHolder.current) return //bail out;
57
+
58
+ const targetBound = slidesHolder?.current.getBoundingClientRect();
59
+ const childItems = Array.prototype.slice.call(slidesHolder?.current?.children);
60
+
61
+ let coordinates = equalCoordinates(childItems.length, targetBound.width / 2, targetBound.height, targetBound.width / 2, targetBound.height)
62
+
63
+ childItems.forEach((child, index) => {
64
+ if (coordinates[index]) {
65
+ const left = coordinates[index][0] - (child.clientWidth / 2) + _options.shiftX;
66
+ const top = coordinates[index][1] - (child.clientHeight / 2) + _options.shiftY;
67
+ child.style.left = left + "px";
68
+ child.style.top = top + "px";
69
+ }
70
+ })
71
+ }
72
+
73
+ const _computeDpt = (r1, r2, theta, rotateY = 0) => {
74
+ const dpt_sin = Math.pow(r1 * Math.sin(theta + rotateY), 2)
75
+ const dpt_cos = Math.pow(r2 * Math.cos(theta + rotateY), 2)
76
+ return Math.sqrt(dpt_sin + dpt_cos)
77
+ }
78
+
79
+ const equalCoordinates = (n, r1, r2, centerX, centerY) => {
80
+ // type options
81
+ let reflection = -(_options.reflection);
82
+
83
+ let deltaTheta = 0.001
84
+
85
+ let coordinates: number[][] = [];
86
+ let theta = 0;
87
+
88
+ const twoPi = (Math.PI * 2 * _options.size);
89
+ const numIntegrals = Math.round(twoPi / deltaTheta);
90
+
91
+ let circ = 0;
92
+ let dpt = 0;
93
+
94
+ /* integrate over the ellipse to get the circumference */
95
+ for (let i = 1; i < numIntegrals; i++) {
96
+ theta += i * deltaTheta;
97
+ dpt = _computeDpt(r1, r2, theta);
98
+ circ += dpt;
99
+ }
100
+
101
+ let nextPoint = 0;
102
+ let run = 0;
103
+ theta = 0;
104
+
105
+ const rotateY = (Math.PI / 2 * (_options.rotateY * 4 / 360));
106
+ for (let i = 0; i < numIntegrals; i++) {
107
+ theta += deltaTheta;
108
+ let subIntegral = n * run / circ;
109
+ if (subIntegral >= nextPoint) {
110
+ let x: number = Math.floor((centerX - r1 * Math.cos(theta + rotateY)) * 100) / 100;
111
+ let y: number = Math.floor((centerY + r2 * Math.sin(theta + rotateY) * reflection) * 100) / 100;
112
+ coordinates.push([x, y]);
113
+
114
+ nextPoint++;
115
+ }
116
+
117
+ run += _computeDpt(r1, r2, theta, rotateY);
118
+ }
119
+
120
+ return coordinates;
121
+ }
122
+
123
+ render();
124
+ window.addEventListener("resize", render);
125
+
126
+ return () => {
127
+ window.removeEventListener('resize', render)
128
+ }
129
+ }, [isMobile])
130
+
131
+ if (!content) return <></>
132
+
133
+ return (
134
+ <StyledProductsSlider ref={slider as any} className={className} style={style}>
135
+ <StyledProductsSliderWrapper ref={wrapper as any}>
136
+ <StyledProductsSliderSlides ref={slidesHolder as any}>
137
+ {newContent?.map((item, index) => {
138
+ return (
139
+ <StyledProductsSliderSlide key={`ProductCard-${index}`}>
140
+ <ProductCard
141
+ imageElement={item.imageElement}
142
+ title={item.title}
143
+ description={isMobile ? item?.description : ""}
144
+ />
145
+ </StyledProductsSliderSlide>
146
+ )
147
+ })}
148
+ </StyledProductsSliderSlides>
149
+ </StyledProductsSliderWrapper>
150
+ {!isMobile && (
151
+ <StyledProductsSliderContent ref={contentHolder as any}>
152
+ <Heading tag="h5" size="h5">
153
+ <strong>{activeElement?.title}</strong>
154
+ <br />
155
+ {activeElement?.description}
156
+ </Heading>
157
+ </StyledProductsSliderContent>
158
+ )}
159
+ </StyledProductsSlider>
160
+
161
+ )
162
+ }
163
+
164
+ export default ProductsSlider
@@ -1,154 +1,156 @@
1
- import React, { useEffect } from 'react'
2
-
3
- import Button from '@/components/atoms/Button/Button.component'
4
- import { ISlider } from './Slider.interface'
5
- import Icon from '@/components/atoms/Icon/Icon.component'
6
- import { StyledSlider } from './Slider.theme'
7
- import isTouchDevice from '@/helpers/isTouchDevice'
8
- import { useBlazeSlider } from './Slider.utils'
9
-
10
- const Slider = ({
11
- arrows,
12
- dots,
13
- slidesToShow,
14
- slidesToScroll,
15
- infinite,
16
- autoplay,
17
- spacing,
18
- mediaQueries,
19
- mobileOnly,
20
- className,
21
- style,
22
- children,
23
- onSlide,
24
- ...props
25
- }: ISlider) => {
26
- let responsive: any = []
27
- let responsiveCSS: string = ''
28
- let elRef: any = null
29
- let sliderRef: any = null
30
-
31
- const isMobile = isTouchDevice();
32
-
33
- const setConfig = () => {
34
- if (sliderRef?.current) sliderRef.current.destroy()
35
- responsiveCSS = `
36
- --slides-to-show: ${slidesToShow ? slidesToShow : 4} !important;
37
- --slide-gap: ${spacing ? spacing : '1rem'} !important;
38
- `
39
-
40
- if (mediaQueries) {
41
- const responsiveKeys = Object.keys(mediaQueries).reverse()
42
- const responsiveValues = Object.values(mediaQueries).reverse()
43
-
44
- mediaQueries &&
45
- responsiveKeys.map((value: string, index: number) => {
46
- responsive[`(max-width: ${value}px)`] = {
47
- slidesToShow: responsiveValues[index].slidesToShow
48
- }
49
- responsiveCSS += `@media screen and (max-width:${value}px){
50
- --slides-to-show: ${responsiveValues[index].slidesToShow} !important;
51
- }`
52
- })
53
- }
54
-
55
- const refs = useBlazeSlider({
56
- all: {
57
- // layout
58
- slidesToShow: slidesToShow ? slidesToShow : 4,
59
- slidesToScroll: slidesToScroll ? slidesToScroll : 1,
60
- slideGap: spacing ? spacing : '1rem',
61
-
62
- // loop
63
- loop: infinite,
64
-
65
- // autoplay
66
- enableAutoplay: autoplay ? autoplay : false,
67
- stopAutoplayOnInteraction: false,
68
- autoplayInterval: 3000,
69
- autoplayDirection: 'to left',
70
-
71
- // pagination
72
- enablePagination: dots,
73
-
74
- // transition
75
- transitionDuration: 500,
76
- transitionTimingFunction: 'ease'
77
- },
78
- ...responsive,
79
- onSlide: (
80
- pageIndex: number,
81
- firstVisibleSlideIndex: number,
82
- lastVisibleSlideIndex: number
83
- ) => {
84
- if (onSlide) onSlide
85
- }
86
- })
87
-
88
- elRef = refs.elRef
89
- sliderRef = refs.sliderRef
90
- }
91
-
92
- // useEffect(() => {
93
- // if (sliderRef && sliderRef.current) {
94
- // console.log(sliderRef?.current)
95
- // sliderRef.current.destroy()
96
- // setConfig()
97
- // }
98
- // }, [
99
- // arrows,
100
- // dots,
101
- // slidesToShow,
102
- // slidesToScroll,
103
- // infinite,
104
- // spacing,
105
- // mediaQueries
106
- // ])
107
-
108
- if (mobileOnly) {
109
- isMobile && setConfig();
110
- } else {
111
- setConfig();
112
- }
113
-
114
- return (
115
- <StyledSlider
116
- $responsiveCSS={responsiveCSS}
117
- $mobileOnly={mobileOnly}
118
- className={className}
119
- style={style}
120
- >
121
- <div className="blaze-slider" ref={elRef}>
122
- <div className="blaze-container">
123
- <div className="blaze-track-container">
124
- <div className="blaze-track">{children}</div>
125
- </div>
126
- </div>
127
-
128
- {React.Children.count(children) > 1 && (
129
- <div className="blaze-controls">
130
- {dots && <div className="blaze-pagination"></div>}
131
- <div className="blaze-arrows">
132
- {arrows && (
133
- <Button
134
- variant="icon"
135
- leftIcon={<Icon icon="icon-left-chevron" />}
136
- className="blaze-prev"
137
- ></Button>
138
- )}
139
- {arrows && (
140
- <Button
141
- variant="icon"
142
- leftIcon={<Icon icon="icon-right-chevron" />}
143
- className="blaze-next"
144
- ></Button>
145
- )}
146
- </div>
147
- </div>
148
- )}
149
- </div>
150
- </StyledSlider>
151
- )
152
- }
153
-
154
- export default Slider
1
+ import React, { useEffect } from 'react'
2
+
3
+ import Button from '@/components/atoms/Button/Button.component'
4
+ import { ISlider } from './Slider.interface'
5
+ import Icon from '@/components/atoms/Icon/Icon.component'
6
+ import { StyledSlider } from './Slider.theme'
7
+ import isTouchDevice from '@/helpers/isTouchDevice'
8
+ import { useBlazeSlider } from './Slider.utils'
9
+
10
+ const Slider = ({
11
+ arrows,
12
+ dots,
13
+ slidesToShow,
14
+ slidesToScroll,
15
+ infinite,
16
+ autoplay,
17
+ spacing,
18
+ mediaQueries,
19
+ mobileOnly,
20
+ className,
21
+ style,
22
+ children,
23
+ onSlide,
24
+ variant = 'default',
25
+ ...props
26
+ }: ISlider) => {
27
+ let responsive: any = []
28
+ let responsiveCSS: string = ''
29
+ let elRef: any = null
30
+ let sliderRef: any = null
31
+
32
+ const isMobile = isTouchDevice();
33
+
34
+ const setConfig = () => {
35
+ if (sliderRef?.current) sliderRef.current.destroy()
36
+ responsiveCSS = `
37
+ --slides-to-show: ${slidesToShow ? slidesToShow : 4} !important;
38
+ --slide-gap: ${spacing ? spacing : '1rem'} !important;
39
+ `
40
+
41
+ if (mediaQueries) {
42
+ const responsiveKeys = Object.keys(mediaQueries).reverse()
43
+ const responsiveValues = Object.values(mediaQueries).reverse()
44
+
45
+ mediaQueries &&
46
+ responsiveKeys.map((value: string, index: number) => {
47
+ responsive[`(max-width: ${value}px)`] = {
48
+ slidesToShow: responsiveValues[index].slidesToShow
49
+ }
50
+ responsiveCSS += `@media screen and (max-width:${value}px){
51
+ --slides-to-show: ${responsiveValues[index].slidesToShow} !important;
52
+ }`
53
+ })
54
+ }
55
+
56
+ const refs = useBlazeSlider({
57
+ all: {
58
+ // layout
59
+ slidesToShow: slidesToShow ? slidesToShow : 4,
60
+ slidesToScroll: slidesToScroll ? slidesToScroll : 1,
61
+ slideGap: spacing ? spacing : '1rem',
62
+
63
+ // loop
64
+ loop: infinite,
65
+
66
+ // autoplay
67
+ enableAutoplay: autoplay ? autoplay : false,
68
+ stopAutoplayOnInteraction: false,
69
+ autoplayInterval: 3000,
70
+ autoplayDirection: 'to left',
71
+
72
+ // pagination
73
+ enablePagination: dots,
74
+
75
+ // transition
76
+ transitionDuration: 500,
77
+ transitionTimingFunction: 'ease'
78
+ },
79
+ ...responsive,
80
+ onSlide: (
81
+ pageIndex: number,
82
+ firstVisibleSlideIndex: number,
83
+ lastVisibleSlideIndex: number
84
+ ) => {
85
+ if (onSlide) onSlide
86
+ }
87
+ })
88
+
89
+ elRef = refs.elRef
90
+ sliderRef = refs.sliderRef
91
+ }
92
+
93
+ // useEffect(() => {
94
+ // if (sliderRef && sliderRef.current) {
95
+ // console.log(sliderRef?.current)
96
+ // sliderRef.current.destroy()
97
+ // setConfig()
98
+ // }
99
+ // }, [
100
+ // arrows,
101
+ // dots,
102
+ // slidesToShow,
103
+ // slidesToScroll,
104
+ // infinite,
105
+ // spacing,
106
+ // mediaQueries
107
+ // ])
108
+
109
+ if (mobileOnly) {
110
+ isMobile && setConfig();
111
+ } else {
112
+ setConfig();
113
+ }
114
+
115
+ return (
116
+ <StyledSlider
117
+ $responsiveCSS={responsiveCSS}
118
+ $mobileOnly={mobileOnly}
119
+ $variant={variant}
120
+ className={className}
121
+ style={style}
122
+ >
123
+ <div className="blaze-slider" ref={elRef}>
124
+ <div className="blaze-container">
125
+ <div className="blaze-track-container">
126
+ <div className="blaze-track">{children}</div>
127
+ </div>
128
+ </div>
129
+
130
+ {React.Children.count(children) > 1 && (
131
+ <div className="blaze-controls">
132
+ {dots && <div className="blaze-pagination"></div>}
133
+ <div className="blaze-arrows">
134
+ {arrows && (
135
+ <Button
136
+ variant="icon"
137
+ leftIcon={<Icon icon="icon-left-chevron" />}
138
+ className="blaze-prev"
139
+ ></Button>
140
+ )}
141
+ {arrows && (
142
+ <Button
143
+ variant="icon"
144
+ leftIcon={<Icon icon="icon-right-chevron" />}
145
+ className="blaze-next"
146
+ ></Button>
147
+ )}
148
+ </div>
149
+ </div>
150
+ )}
151
+ </div>
152
+ </StyledSlider>
153
+ )
154
+ }
155
+
156
+ export default Slider