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,19 +1,19 @@
1
- import { colors, radius, shadows, spaces } from '@/styles/variables';
2
- import styled, { css } from 'styled-components';
3
-
4
- import { ILogosCard } from './LogosCard.interface';
5
-
6
- export const StyledLogosCard = styled.div<ILogosCard>`
7
- display: inline-flex;
8
- vertical-align: middle;
9
- width: 100%;
10
- max-width: 140px;
11
-
12
- overflow: hidden;
13
- margin: ${spaces[2]} 1.5rem;
14
-
15
- & img{
16
- object-fit: contain;
17
- aspect-ratio: 16/8;
18
- }
19
- `;
1
+ import { colors, radius, shadows, spaces } from '@/styles/variables';
2
+ import styled, { css } from 'styled-components';
3
+
4
+ import { ILogosCard } from './LogosCard.interface';
5
+
6
+ export const StyledLogosCard = styled.div<ILogosCard>`
7
+ display: inline-flex;
8
+ vertical-align: middle;
9
+ width: 100%;
10
+ max-width: 140px;
11
+
12
+ overflow: hidden;
13
+ margin: ${spaces[2]} 1.5rem;
14
+
15
+ & img{
16
+ object-fit: contain;
17
+ aspect-ratio: 16/8;
18
+ }
19
+ `;
@@ -1 +1 @@
1
- export { default } from "./LogosCard.component";
1
+ export { default } from "./LogosCard.component";
@@ -1,70 +1,70 @@
1
- import React, { useEffect, useMemo } from 'react'
2
- import {
3
- StyledContent,
4
- StyledOverlay,
5
- StyledTitle,
6
- StyledWrapper
7
- } from './Modal.theme'
8
-
9
- import Heading from '../../atoms/Heading'
10
- import { IModal } from './Modal.interface'
11
- import Icon from '../../atoms/Icon'
12
- import IconTitle from '../IconTitle/IconTitle.component'
13
- import PortalComponent from '../../common/PortalComponent'
14
- import { getId } from '@/helpers/uuid'
15
-
16
- const Modal = ({
17
- title,
18
- open = false,
19
- onClose,
20
- hideCloseIcon = false,
21
- children,
22
- ...props
23
- }: IModal) => {
24
- const wrapperId = useMemo(() => getId(), [])
25
-
26
- const handleCloseClick = (e: any) => {
27
- e.preventDefault()
28
-
29
- if (typeof onClose == 'function') onClose()
30
- }
31
-
32
- if (!open) return null
33
-
34
- return (
35
- <PortalComponent wrapperId={wrapperId}>
36
- <StyledOverlay onClick={(e: any) => handleCloseClick(e)} />
37
- <StyledWrapper {...props}>
38
- <StyledTitle className="d-flex align-items-center">
39
- {title && (
40
- <div className="flex-grow-1">
41
- <IconTitle
42
- icon={
43
- <Icon
44
- icon="icon-product"
45
- style={{ color: 'white', fontSize: '3.6rem' }}
46
- />
47
- }
48
- className="color-white"
49
- >
50
- <Heading tag="span" size="texts" className="fw-semibold">
51
- {title}
52
- </Heading>
53
- </IconTitle>
54
- </div>
55
- )}
56
- {!hideCloseIcon && (
57
- <Icon
58
- icon="icon-close"
59
- className="color-white flex-shrink-1"
60
- onClick={() => onClose && onClose()}
61
- />
62
- )}
63
- </StyledTitle>
64
- <StyledContent>{children}</StyledContent>
65
- </StyledWrapper>
66
- </PortalComponent>
67
- )
68
- }
69
-
70
- export default Modal
1
+ import React, { useEffect, useMemo } from 'react'
2
+ import {
3
+ StyledContent,
4
+ StyledOverlay,
5
+ StyledTitle,
6
+ StyledWrapper
7
+ } from './Modal.theme'
8
+
9
+ import Heading from '../../atoms/Heading'
10
+ import { IModal } from './Modal.interface'
11
+ import Icon from '../../atoms/Icon'
12
+ import IconTitle from '../IconTitle/IconTitle.component'
13
+ import PortalComponent from '../../common/PortalComponent'
14
+ import { getId } from '@/helpers/uuid'
15
+
16
+ const Modal = ({
17
+ title,
18
+ open = false,
19
+ onClose,
20
+ hideCloseIcon = false,
21
+ children,
22
+ ...props
23
+ }: IModal) => {
24
+ const wrapperId = useMemo(() => getId(), [])
25
+
26
+ const handleCloseClick = (e: any) => {
27
+ e.preventDefault()
28
+
29
+ if (typeof onClose == 'function') onClose()
30
+ }
31
+
32
+ if (!open) return null
33
+
34
+ return (
35
+ <PortalComponent wrapperId={wrapperId}>
36
+ <StyledOverlay onClick={(e: any) => handleCloseClick(e)} />
37
+ <StyledWrapper {...props}>
38
+ <StyledTitle className="d-flex align-items-center">
39
+ {title && (
40
+ <div className="flex-grow-1">
41
+ <IconTitle
42
+ icon={
43
+ <Icon
44
+ icon="icon-product"
45
+ style={{ color: 'white', fontSize: '3.6rem' }}
46
+ />
47
+ }
48
+ className="color-white"
49
+ >
50
+ <Heading tag="span" size="texts" className="fw-semibold">
51
+ {title}
52
+ </Heading>
53
+ </IconTitle>
54
+ </div>
55
+ )}
56
+ {!hideCloseIcon && (
57
+ <Icon
58
+ icon="icon-close"
59
+ className="color-white flex-shrink-1"
60
+ onClick={() => onClose && onClose()}
61
+ />
62
+ )}
63
+ </StyledTitle>
64
+ <StyledContent>{children}</StyledContent>
65
+ </StyledWrapper>
66
+ </PortalComponent>
67
+ )
68
+ }
69
+
70
+ export default Modal
@@ -1,11 +1,11 @@
1
- import { CSSProperties } from 'react';
2
-
3
- export type IModal = {
4
- title?: string
5
- open?: boolean
6
- onClose?: () => void
7
- hideCloseIcon?: boolean
8
- className?: string
9
- style?: CSSProperties
10
- children?: React.ReactNode;
11
- }
1
+ import { CSSProperties } from 'react';
2
+
3
+ export type IModal = {
4
+ title?: string
5
+ open?: boolean
6
+ onClose?: () => void
7
+ hideCloseIcon?: boolean
8
+ className?: string
9
+ style?: CSSProperties
10
+ children?: React.ReactNode;
11
+ }
@@ -1,57 +1,57 @@
1
- import type { Meta, StoryObj } from '@storybook/react'
2
- import React, { useState } from 'react'
3
-
4
- import Button from '../../atoms/Button'
5
- import Flex from '../../atoms/Flex'
6
- import { IModal } from './Modal.interface'
7
- import Modal from './Modal.component'
8
- import RichText from '../../atoms/RichText'
9
-
10
- export default {
11
- title: 'Components/Modal',
12
- component: Modal,
13
- tags: ['autodocs']
14
- } as Meta
15
-
16
- export const Simple: StoryObj<IModal> = {
17
- render: args => {
18
- const [isOpen, setIsOpen] = useState(false)
19
- return (
20
- <div
21
- style={{
22
- width: '600px',
23
- minHeight: '400px',
24
- margin: 'auto'
25
- }}
26
- >
27
- <Button onClick={() => setIsOpen(true)}>Open</Button>
28
- <Modal
29
- title={'Ainda não está registado?'}
30
- open={isOpen}
31
- onClose={() => setIsOpen(false)}
32
- style={{ width: '90vw' }}
33
- {...args}
34
- >
35
- <RichText style={{ color: '$gray400' }}>
36
- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
37
- eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
38
- ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
39
- aliquip ex ea commodo consequat. Duis aute irure dolor in
40
- reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
41
- pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
42
- culpa qui officia deserunt mollit anim id est laborum.
43
- </RichText>
44
-
45
- <Flex style={{ marginTop: '$8' }} align={'center'}>
46
- <Button variant={'primary'}>Lorem ipsum</Button>
47
- <RichText style={{ fontWeight: '600' }}>ou</RichText>
48
- <Button outlined={true} variant={'primary'}>
49
- dolor sit amet
50
- </Button>
51
- </Flex>
52
- </Modal>
53
- </div>
54
- )
55
- },
56
- args: {}
57
- }
1
+ import type { Meta, StoryObj } from '@storybook/react'
2
+ import React, { useState } from 'react'
3
+
4
+ import Button from '../../atoms/Button'
5
+ import Flex from '../../atoms/Flex'
6
+ import { IModal } from './Modal.interface'
7
+ import Modal from './Modal.component'
8
+ import RichText from '../../atoms/RichText'
9
+
10
+ export default {
11
+ title: 'Components/Modal',
12
+ component: Modal,
13
+ tags: ['autodocs']
14
+ } as Meta
15
+
16
+ export const Simple: StoryObj<IModal> = {
17
+ render: args => {
18
+ const [isOpen, setIsOpen] = useState(false)
19
+ return (
20
+ <div
21
+ style={{
22
+ width: '600px',
23
+ minHeight: '400px',
24
+ margin: 'auto'
25
+ }}
26
+ >
27
+ <Button onClick={() => setIsOpen(true)}>Open</Button>
28
+ <Modal
29
+ title={'Ainda não está registado?'}
30
+ open={isOpen}
31
+ onClose={() => setIsOpen(false)}
32
+ style={{ width: '90vw' }}
33
+ {...args}
34
+ >
35
+ <RichText style={{ color: '$gray400' }}>
36
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
37
+ eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
38
+ ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
39
+ aliquip ex ea commodo consequat. Duis aute irure dolor in
40
+ reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
41
+ pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
42
+ culpa qui officia deserunt mollit anim id est laborum.
43
+ </RichText>
44
+
45
+ <Flex style={{ marginTop: '$8' }} align={'center'}>
46
+ <Button variant={'primary'}>Lorem ipsum</Button>
47
+ <RichText style={{ fontWeight: '600' }}>ou</RichText>
48
+ <Button outlined={true} variant={'primary'}>
49
+ dolor sit amet
50
+ </Button>
51
+ </Flex>
52
+ </Modal>
53
+ </div>
54
+ )
55
+ },
56
+ args: {}
57
+ }
@@ -1,55 +1,55 @@
1
- import { colors, radius, spaces, zIndexes } from '@/styles/variables';
2
- import styled, { css } from 'styled-components';
3
-
4
- import { IModal } from './Modal.interface';
5
-
6
- export const StyledOverlay = styled.div<IModal>`
7
- position: fixed;
8
- top: 0;
9
- right: 0;
10
- bottom: 0;
11
- left: 0;
12
- background-color: rgba(0, 0, 0, .30);
13
- z-index: 100;
14
- `;
15
-
16
- export const StyledWrapper = styled.div<IModal>`
17
- position: fixed;
18
- top: 50%;
19
- left: 50%;
20
-
21
- width: 30rem;
22
- max-height: 85vh;
23
- max-width: 90%;
24
-
25
- margin-top: -5vh;
26
-
27
- border-radius: ${radius.md};
28
- background-color: ${colors.gray10};
29
- box-shadow: 0px 4px 25px rgba(45, 46, 69, 0.1);
30
- animation: all 0.3s cubic-bezier(0.22, 1, 0.36, 1);
31
-
32
- // among other things, prevents text alignment inconsistencies when dialog cant be centered in the viewport evenly.
33
- // affects animated and non-animated dialogs alike.
34
- transform: translate(-50%, -50%);
35
- will-change: transform;
36
- overflow: hidden;
37
- overflow-y: auto;
38
- z-index: 101;
39
-
40
- &:focus {
41
- outline: none
42
- }
43
- `;
44
-
45
- export const StyledTitle = styled.div<IModal>`
46
- color: ${colors.secondary50};
47
- background-color: ${colors.third50};
48
- padding: ${spaces[3]};
49
- `;
50
-
51
-
52
- export const StyledContent = styled.div<IModal>`
53
- padding: ${spaces[5]};
54
- contain: paint;
55
- `;
1
+ import { colors, radius, spaces, zIndexes } from '@/styles/variables';
2
+ import styled, { css } from 'styled-components';
3
+
4
+ import { IModal } from './Modal.interface';
5
+
6
+ export const StyledOverlay = styled.div<IModal>`
7
+ position: fixed;
8
+ top: 0;
9
+ right: 0;
10
+ bottom: 0;
11
+ left: 0;
12
+ background-color: rgba(0, 0, 0, .30);
13
+ z-index: 100;
14
+ `;
15
+
16
+ export const StyledWrapper = styled.div<IModal>`
17
+ position: fixed;
18
+ top: 50%;
19
+ left: 50%;
20
+
21
+ width: 30rem;
22
+ max-height: 85vh;
23
+ max-width: 90%;
24
+
25
+ margin-top: -5vh;
26
+
27
+ border-radius: ${radius.md};
28
+ background-color: ${colors.gray10};
29
+ box-shadow: 0px 4px 25px rgba(45, 46, 69, 0.1);
30
+ animation: all 0.3s cubic-bezier(0.22, 1, 0.36, 1);
31
+
32
+ // among other things, prevents text alignment inconsistencies when dialog cant be centered in the viewport evenly.
33
+ // affects animated and non-animated dialogs alike.
34
+ transform: translate(-50%, -50%);
35
+ will-change: transform;
36
+ overflow: hidden;
37
+ overflow-y: auto;
38
+ z-index: 101;
39
+
40
+ &:focus {
41
+ outline: none
42
+ }
43
+ `;
44
+
45
+ export const StyledTitle = styled.div<IModal>`
46
+ color: ${colors.secondary50};
47
+ background-color: ${colors.third50};
48
+ padding: ${spaces[3]};
49
+ `;
50
+
51
+
52
+ export const StyledContent = styled.div<IModal>`
53
+ padding: ${spaces[5]};
54
+ contain: paint;
55
+ `;
@@ -1 +1 @@
1
- export { default } from './Modal.component'
1
+ export { default } from './Modal.component'
@@ -1,55 +1,55 @@
1
- import Chip from '@/components/atoms/Chip/Chip.component'
2
- import Heading from '@/components/atoms/Heading'
3
- import { INewsCard } from './NewsCard.interface'
4
- import ImageWrapper from '@/components/atoms/ImageWrapper'
5
- import React from 'react'
6
-
7
- import { StyledNewsCard } from './NewsCard.theme'
8
-
9
- const NewsCard = ({
10
- variant,
11
- date,
12
- category,
13
- title,
14
- imageElement,
15
- linkElement,
16
- description,
17
- ...props
18
- }: INewsCard) => {
19
- return (
20
- <StyledNewsCard
21
- $variant={variant}
22
- imageElement={
23
- <>
24
- <ImageWrapper aspectRatioHeight={63}>{imageElement}</ImageWrapper>
25
- </>
26
- }
27
- >
28
- <div>
29
- <Heading
30
- tag={'h3'}
31
- size={variant === 'featured' ? 'h3' : 'h4'}
32
- className={'fw-bold textEllipsis'}
33
- >
34
- {title}
35
- </Heading>
36
- <Heading tag={'span'} size={'captions'} className={'textEllipsis mt-3'}>
37
- {description}
38
- </Heading>
39
- </div>
40
- {date && (
41
- <Heading
42
- tag={'span'}
43
- size={variant === 'featured' ? 'h5' : 'texts'}
44
- className={'fw-bold mt-4'}
45
- >
46
- {date}
47
- </Heading>
48
- )}
49
-
50
- {linkElement}
51
- </StyledNewsCard>
52
- )
53
- }
54
-
55
- export default NewsCard
1
+ import Chip from '@/components/atoms/Chip/Chip.component'
2
+ import Heading from '@/components/atoms/Heading'
3
+ import { INewsCard } from './NewsCard.interface'
4
+ import ImageWrapper from '@/components/atoms/ImageWrapper'
5
+ import React from 'react'
6
+
7
+ import { StyledNewsCard } from './NewsCard.theme'
8
+
9
+ const NewsCard = ({
10
+ variant,
11
+ date,
12
+ category,
13
+ title,
14
+ imageElement,
15
+ linkElement,
16
+ description,
17
+ ...props
18
+ }: INewsCard) => {
19
+ return (
20
+ <StyledNewsCard
21
+ $variant={variant}
22
+ imageElement={
23
+ <>
24
+ <ImageWrapper aspectRatioHeight={63}>{imageElement}</ImageWrapper>
25
+ </>
26
+ }
27
+ >
28
+ <div>
29
+ <Heading
30
+ tag={'h3'}
31
+ size={variant === 'featured' ? 'h3' : 'h4'}
32
+ className={'fw-bold textEllipsis'}
33
+ >
34
+ {title}
35
+ </Heading>
36
+ <Heading tag={'span'} size={'captions'} className={'textEllipsis mt-3'}>
37
+ {description}
38
+ </Heading>
39
+ </div>
40
+ {date && (
41
+ <Heading
42
+ tag={'span'}
43
+ size={variant === 'featured' ? 'h5' : 'texts'}
44
+ className={'fw-bold mt-4'}
45
+ >
46
+ {date}
47
+ </Heading>
48
+ )}
49
+
50
+ {linkElement}
51
+ </StyledNewsCard>
52
+ )
53
+ }
54
+
55
+ export default NewsCard
@@ -1,9 +1,9 @@
1
- import { ICard } from '../Card/Card.interface';
2
-
3
- export interface INewsCard extends ICard {
4
- date?: string,
5
- category?: string
6
- title?: string
7
- description?: string | React.ReactElement
8
- linkElement?: React.ReactElement
9
- }
1
+ import { ICard } from '../Card/Card.interface';
2
+
3
+ export interface INewsCard extends ICard {
4
+ date?: string,
5
+ category?: string
6
+ title?: string
7
+ description?: string | React.ReactElement
8
+ linkElement?: React.ReactElement
9
+ }
@@ -1,44 +1,44 @@
1
- import type { Meta, StoryObj } from '@storybook/react'
2
-
3
- import { INewsCard } from './NewsCard.interface'
4
- import NewsCard from './NewsCard.component'
5
- import React from 'react'
6
-
7
- // More on default export: https://storybook.js.org/docs/react/writing-stories/introduction#default-export
8
- export default {
9
- title: 'Components/NewsCard',
10
- component: NewsCard,
11
- tags: ['autodocs']
12
- } as Meta
13
-
14
- const image = (
15
- <img
16
- width="100%"
17
- height="100%"
18
- sizes="100vw"
19
- decoding="async"
20
- src="/assets/placeholder.png"
21
- alt="Empty state"
22
- />
23
- )
24
-
25
- export const Simple: StoryObj<INewsCard> = {
26
- render: args => <NewsCard {...args} style={{ maxWidth: '320px' }}></NewsCard>,
27
- args: {
28
- date: '24 nov 23',
29
- category: 'Category name',
30
- title: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.',
31
- imageElement: image,
32
- linkElement: <a href="#" className="linker"></a>
33
- }
34
- }
35
-
36
- export const Featured: StoryObj<INewsCard> = {
37
- render: args => (
38
- <NewsCard {...args} style={{ maxWidth: '620px' }}></NewsCard>
39
- ),
40
- args: {
41
- ...Simple.args,
42
- variant: "featured"
43
- }
44
- }
1
+ import type { Meta, StoryObj } from '@storybook/react'
2
+
3
+ import { INewsCard } from './NewsCard.interface'
4
+ import NewsCard from './NewsCard.component'
5
+ import React from 'react'
6
+
7
+ // More on default export: https://storybook.js.org/docs/react/writing-stories/introduction#default-export
8
+ export default {
9
+ title: 'Components/NewsCard',
10
+ component: NewsCard,
11
+ tags: ['autodocs']
12
+ } as Meta
13
+
14
+ const image = (
15
+ <img
16
+ width="100%"
17
+ height="100%"
18
+ sizes="100vw"
19
+ decoding="async"
20
+ src="/assets/placeholder.png"
21
+ alt="Empty state"
22
+ />
23
+ )
24
+
25
+ export const Simple: StoryObj<INewsCard> = {
26
+ render: args => <NewsCard {...args} style={{ maxWidth: '320px' }}></NewsCard>,
27
+ args: {
28
+ date: '24 nov 23',
29
+ category: 'Category name',
30
+ title: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.',
31
+ imageElement: image,
32
+ linkElement: <a href="#" className="linker"></a>
33
+ }
34
+ }
35
+
36
+ export const Featured: StoryObj<INewsCard> = {
37
+ render: args => (
38
+ <NewsCard {...args} style={{ maxWidth: '620px' }}></NewsCard>
39
+ ),
40
+ args: {
41
+ ...Simple.args,
42
+ variant: "featured"
43
+ }
44
+ }