oddsgate-ds 1.0.168 → 1.0.171
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.
- package/.babelrc.json +25 -25
- package/.editorconfig +12 -12
- package/.storybook/main.ts +58 -58
- package/.storybook/preview.ts +26 -26
- package/README.md +30 -30
- package/chromatic.config.json +6 -6
- package/dist/cjs/assets/components/quotes.svg +3 -3
- package/dist/cjs/index.js +4 -4
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/components/molecules/EventsCard/EventsCard.component.d.ts +1 -1
- package/dist/cjs/types/components/molecules/EventsCard/EventsCard.interface.d.ts +1 -0
- package/dist/esm/assets/components/quotes.svg +3 -3
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/components/molecules/EventsCard/EventsCard.component.d.ts +1 -1
- package/dist/esm/types/components/molecules/EventsCard/EventsCard.interface.d.ts +1 -0
- package/dist/public/assets/components/quotes.svg +3 -3
- package/dist/public/assets/empty-state.svg +28 -28
- package/dist/public/fonts/Nichrome/mdnichrome-bold-webfont.svg +241 -241
- package/dist/public/fonts/Nichrome/mdnichrome-regular-webfont.svg +241 -241
- package/dist/public/fonts/miewfont/miewfont.svg +38 -38
- package/dist/types.d.ts +2 -1
- package/package.json +103 -103
- package/prettier.config.js +7 -7
- package/public/assets/components/quotes.svg +3 -3
- package/public/assets/empty-state.svg +28 -28
- package/public/fonts/Nichrome/mdnichrome-bold-webfont.svg +241 -241
- package/public/fonts/Nichrome/mdnichrome-regular-webfont.svg +241 -241
- package/public/fonts/miewfont/miewfont.svg +38 -38
- package/rollup.config.js +98 -98
- package/src/components/atoms/Button/Button.component.tsx +60 -60
- package/src/components/atoms/Button/Button.interface.ts +29 -29
- package/src/components/atoms/Button/Button.stories.tsx +65 -65
- package/src/components/atoms/Button/Button.theme.ts +180 -180
- package/src/components/atoms/Button/index.ts +1 -1
- package/src/components/atoms/CardMarquee/CardMarquee.component.tsx +24 -24
- package/src/components/atoms/CardMarquee/CardMarquee.interface.ts +15 -15
- package/src/components/atoms/CardMarquee/CardMarquee.stories.tsx +21 -21
- package/src/components/atoms/CardMarquee/CardMarquee.theme.ts +48 -48
- package/src/components/atoms/CardMarquee/index.ts +1 -1
- package/src/components/atoms/Chip/Chip.component.tsx +30 -30
- package/src/components/atoms/Chip/Chip.interface.ts +14 -14
- package/src/components/atoms/Chip/Chip.stories.tsx +42 -42
- package/src/components/atoms/Chip/Chip.theme.ts +57 -57
- package/src/components/atoms/Chip/index.ts +1 -1
- package/src/components/atoms/CloseButton/CloseButton.component.tsx +17 -17
- package/src/components/atoms/CloseButton/CloseButton.interface.ts +9 -9
- package/src/components/atoms/CloseButton/CloseButton.stories.tsx +24 -24
- package/src/components/atoms/CloseButton/CloseButton.theme.ts +66 -66
- package/src/components/atoms/CloseButton/index.ts +1 -1
- package/src/components/atoms/Counter/Counter.component.tsx +99 -99
- package/src/components/atoms/Counter/Counter.interface.ts +10 -10
- package/src/components/atoms/Counter/Counter.stories.tsx +29 -29
- package/src/components/atoms/Counter/Counter.theme.ts +27 -27
- package/src/components/atoms/Counter/index.ts +1 -1
- package/src/components/atoms/EmptyState/EmptyState.component.tsx +27 -27
- package/src/components/atoms/EmptyState/EmptyState.interface.ts +10 -10
- package/src/components/atoms/EmptyState/EmptyState.stories.tsx +34 -34
- package/src/components/atoms/EmptyState/EmptyState.theme.ts +27 -27
- package/src/components/atoms/EmptyState/index.ts +1 -1
- package/src/components/atoms/Flex/Flex.component.tsx +30 -30
- package/src/components/atoms/Flex/Flex.interface.ts +24 -24
- package/src/components/atoms/Flex/Flex.theme.ts +12 -12
- package/src/components/atoms/Flex/index.ts +1 -1
- package/src/components/atoms/FlexGrid/FlexGrid.component.tsx +62 -62
- package/src/components/atoms/FlexGrid/FlexGrid.interface.ts +55 -55
- package/src/components/atoms/FlexGrid/FlexGrid.stories.tsx +59 -59
- package/src/components/atoms/FlexGrid/FlexGrid.theme.ts +82 -82
- package/src/components/atoms/FlexGrid/index.ts +1 -1
- package/src/components/atoms/FormField/CheckRadioField/CheckRadioField.component.tsx +24 -24
- package/src/components/atoms/FormField/CheckRadioField/CheckRadioField.interface.tsx +6 -6
- package/src/components/atoms/FormField/CheckRadioField/CheckRadioField.theme.ts +134 -134
- package/src/components/atoms/FormField/CheckRadioField/index.ts +1 -1
- package/src/components/atoms/FormField/FormField.component.tsx +37 -37
- package/src/components/atoms/FormField/FormField.interface.ts +10 -10
- package/src/components/atoms/FormField/FormField.stories.tsx +499 -499
- package/src/components/atoms/FormField/FormField.theme.tsx +136 -136
- package/src/components/atoms/FormField/index.ts +1 -1
- package/src/components/atoms/Heading/Heading.component.tsx +18 -18
- package/src/components/atoms/Heading/Heading.interface.tsx +21 -21
- package/src/components/atoms/Heading/Heading.theme.ts +17 -17
- package/src/components/atoms/Heading/index.ts +1 -1
- package/src/components/atoms/Icon/Icon.component.tsx +19 -19
- package/src/components/atoms/Icon/Icon.interface.ts +8 -8
- package/src/components/atoms/Icon/Icon.stories.tsx +26 -26
- package/src/components/atoms/Icon/Icon.theme.ts +115 -115
- package/src/components/atoms/Icon/index.ts +1 -1
- package/src/components/atoms/ImageWrapper/ImageWrapper.component.tsx +42 -42
- package/src/components/atoms/ImageWrapper/ImageWrapper.interface.ts +16 -16
- package/src/components/atoms/ImageWrapper/ImageWrapper.stories.tsx +27 -27
- package/src/components/atoms/ImageWrapper/ImageWrapper.theme.ts +50 -50
- package/src/components/atoms/ImageWrapper/index.ts +1 -1
- package/src/components/atoms/LegalLinks/LegalLinks.component.tsx +35 -35
- package/src/components/atoms/LegalLinks/LegalLinks.interface.ts +12 -12
- package/src/components/atoms/LegalLinks/LegalLinks.stories.tsx +43 -43
- package/src/components/atoms/LegalLinks/LegalLinks.theme.ts +34 -23
- package/src/components/atoms/LegalLinks/index.ts +1 -1
- package/src/components/atoms/Loader/Loader.component.tsx +26 -26
- package/src/components/atoms/Loader/Loader.interface.ts +10 -10
- package/src/components/atoms/Loader/Loader.stories.tsx +33 -33
- package/src/components/atoms/Loader/Loader.theme.ts +51 -51
- package/src/components/atoms/Loader/index.ts +1 -1
- package/src/components/atoms/Marquee/Marquee.component.tsx +32 -32
- package/src/components/atoms/Marquee/Marquee.interface.ts +10 -10
- package/src/components/atoms/Marquee/Marquee.stories.tsx +20 -20
- package/src/components/atoms/Marquee/Marquee.theme.ts +40 -40
- package/src/components/atoms/Marquee/index.ts +1 -1
- package/src/components/atoms/Quote/Quote.component.tsx +29 -29
- package/src/components/atoms/Quote/Quote.interface.ts +10 -10
- package/src/components/atoms/Quote/Quote.stories.tsx +25 -25
- package/src/components/atoms/Quote/Quote.theme.ts +26 -26
- package/src/components/atoms/Quote/index.ts +1 -1
- package/src/components/atoms/RichText/RichText.component.tsx +32 -32
- package/src/components/atoms/RichText/RichText.interface.ts +11 -11
- package/src/components/atoms/RichText/RichText.stories.tsx +73 -73
- package/src/components/atoms/RichText/RichText.theme.ts +34 -34
- package/src/components/atoms/RichText/index.ts +1 -1
- package/src/components/atoms/ScrollingNav/ScrollingNav.component.tsx +18 -18
- package/src/components/atoms/ScrollingNav/ScrollingNav.interface.ts +8 -8
- package/src/components/atoms/ScrollingNav/ScrollingNav.stories.tsx +44 -44
- package/src/components/atoms/ScrollingNav/ScrollingNav.theme.ts +58 -58
- package/src/components/atoms/ScrollingNav/index.ts +1 -1
- package/src/components/atoms/Separator/Separator.component.tsx +19 -19
- package/src/components/atoms/Separator/Separator.interface.tsx +10 -10
- package/src/components/atoms/Separator/Separator.stories.tsx +29 -29
- package/src/components/atoms/Separator/Separator.theme.ts +9 -9
- package/src/components/atoms/Separator/index.ts +1 -1
- package/src/components/atoms/SocialLinks/SocialLinks.component.tsx +42 -42
- package/src/components/atoms/SocialLinks/SocialLinks.interface.ts +8 -8
- package/src/components/atoms/SocialLinks/SocialLinks.stories.tsx +48 -48
- package/src/components/atoms/SocialLinks/SocialLinks.theme.ts +80 -80
- package/src/components/atoms/SocialLinks/index.ts +1 -1
- package/src/components/atoms/Spacer/Spacer.component.tsx +34 -34
- package/src/components/atoms/Spacer/Spacer.interface.ts +24 -24
- package/src/components/atoms/Spacer/Spacer.stories.tsx +99 -99
- package/src/components/atoms/Spacer/Spacer.theme.ts +33 -33
- package/src/components/atoms/Spacer/index.ts +1 -1
- package/src/components/atoms/Video/Video.component.tsx +116 -116
- package/src/components/atoms/Video/Video.interface.ts +13 -13
- package/src/components/atoms/Video/Video.stories.tsx +37 -37
- package/src/components/atoms/Video/Video.theme.ts +44 -44
- package/src/components/atoms/Video/index.ts +1 -1
- package/src/components/atoms/VideoEmbed/VideoEmbed.component.tsx +109 -109
- package/src/components/atoms/VideoEmbed/VideoEmbed.interface.ts +13 -13
- package/src/components/atoms/VideoEmbed/VideoEmbed.stories.tsx +23 -23
- package/src/components/atoms/VideoEmbed/VideoEmbed.theme.ts +45 -45
- package/src/components/atoms/VideoEmbed/index.ts +1 -1
- package/src/components/common/PortalComponent/PortalComponent.tsx +48 -48
- package/src/components/common/PortalComponent/index.ts +1 -1
- package/src/components/molecules/Accordion/Accordion.component.tsx +58 -58
- package/src/components/molecules/Accordion/Accordion.interface.ts +15 -15
- package/src/components/molecules/Accordion/Accordion.stories.tsx +100 -100
- package/src/components/molecules/Accordion/Accordion.theme.ts +93 -93
- package/src/components/molecules/Accordion/index.ts +1 -1
- package/src/components/molecules/BlogCard/BlogCard.component.tsx +48 -48
- package/src/components/molecules/BlogCard/BlogCard.interface.ts +10 -10
- package/src/components/molecules/BlogCard/BlogCard.stories.tsx +37 -37
- package/src/components/molecules/BlogCard/BlogCard.theme.ts +41 -41
- package/src/components/molecules/BlogCard/index.ts +1 -1
- package/src/components/molecules/Card/Card.component.tsx +15 -15
- package/src/components/molecules/Card/Card.interface.ts +11 -11
- package/src/components/molecules/Card/Card.theme.ts +54 -54
- package/src/components/molecules/Card/index.ts +1 -1
- package/src/components/molecules/CareersCard/CareersCard.component.tsx +27 -27
- package/src/components/molecules/CareersCard/CareersCard.interface.ts +7 -7
- package/src/components/molecules/CareersCard/CareersCard.stories.tsx +30 -30
- package/src/components/molecules/CareersCard/CareersCard.theme.ts +13 -13
- package/src/components/molecules/CareersCard/index.ts +1 -1
- package/src/components/molecules/Dropdown/Dropdown.component.tsx +67 -67
- package/src/components/molecules/Dropdown/Dropdown.interface.ts +26 -26
- package/src/components/molecules/Dropdown/Dropdown.stories.tsx +54 -54
- package/src/components/molecules/Dropdown/Dropdown.theme.ts +69 -69
- package/src/components/molecules/Dropdown/index.ts +1 -1
- package/src/components/molecules/EventsCard/EventsCard.component.tsx +41 -40
- package/src/components/molecules/EventsCard/EventsCard.interface.ts +10 -9
- package/src/components/molecules/EventsCard/EventsCard.stories.tsx +38 -37
- package/src/components/molecules/EventsCard/EventsCard.theme.ts +33 -33
- package/src/components/molecules/EventsCard/index.ts +1 -1
- package/src/components/molecules/IconBox/IconBox.component.tsx +29 -29
- package/src/components/molecules/IconBox/IconBox.interface.tsx +10 -10
- package/src/components/molecules/IconBox/IconBox.stories.tsx +23 -23
- package/src/components/molecules/IconBox/IconBox.theme.ts +25 -25
- package/src/components/molecules/IconBox/index.ts +1 -1
- package/src/components/molecules/IconTitle/IconTitle.component.tsx +24 -24
- package/src/components/molecules/IconTitle/IconTitle.interface.tsx +10 -10
- package/src/components/molecules/IconTitle/IconTitle.stories.tsx +49 -49
- package/src/components/molecules/IconTitle/IconTitle.theme.ts +10 -10
- package/src/components/molecules/IconTitle/index.ts +1 -1
- package/src/components/molecules/LicenseCard/LicenseCard.component.tsx +27 -27
- package/src/components/molecules/LicenseCard/LicenseCard.interface.ts +6 -6
- package/src/components/molecules/LicenseCard/LicenseCard.stories.tsx +42 -42
- package/src/components/molecules/LicenseCard/LicenseCard.theme.ts +28 -28
- package/src/components/molecules/LicenseCard/index.ts +1 -1
- package/src/components/molecules/LogosCard/LogosCard.component.tsx +14 -14
- package/src/components/molecules/LogosCard/LogosCard.interface.ts +8 -8
- package/src/components/molecules/LogosCard/LogosCard.stories.tsx +38 -38
- package/src/components/molecules/LogosCard/LogosCard.theme.ts +19 -19
- package/src/components/molecules/LogosCard/index.ts +1 -1
- package/src/components/molecules/Modal/Modal.component.tsx +70 -70
- package/src/components/molecules/Modal/Modal.interface.ts +11 -11
- package/src/components/molecules/Modal/Modal.stories.tsx +57 -57
- package/src/components/molecules/Modal/Modal.theme.ts +55 -55
- package/src/components/molecules/Modal/index.ts +1 -1
- package/src/components/molecules/NewsCard/NewsCard.component.tsx +55 -55
- package/src/components/molecules/NewsCard/NewsCard.interface.ts +9 -9
- package/src/components/molecules/NewsCard/NewsCard.stories.tsx +44 -44
- package/src/components/molecules/NewsCard/NewsCard.theme.ts +77 -77
- package/src/components/molecules/NewsCard/index.ts +1 -1
- package/src/components/molecules/OffCanvas/OffCanvas.component.tsx +55 -55
- package/src/components/molecules/OffCanvas/OffCanvas.interface.ts +12 -12
- package/src/components/molecules/OffCanvas/OffCanvas.stories.tsx +55 -55
- package/src/components/molecules/OffCanvas/OffCanvas.theme.ts +50 -50
- package/src/components/molecules/OffCanvas/index.ts +1 -1
- package/src/components/molecules/ProductCard/ProductCard.component.tsx +60 -60
- package/src/components/molecules/ProductCard/ProductCard.interface.ts +7 -7
- package/src/components/molecules/ProductCard/ProductCard.stories.tsx +42 -42
- package/src/components/molecules/ProductCard/ProductCard.theme.ts +26 -26
- package/src/components/molecules/ProductCard/index.ts +1 -1
- package/src/components/molecules/ShareModal/ShareModal.component.tsx +167 -167
- package/src/components/molecules/ShareModal/ShareModal.interface.ts +9 -9
- package/src/components/molecules/ShareModal/ShareModal.stories.tsx +33 -33
- package/src/components/molecules/ShareModal/ShareModal.theme.ts +103 -103
- package/src/components/molecules/ShareModal/index.ts +1 -1
- package/src/components/molecules/TeamCard/TeamCard.component.tsx +31 -31
- package/src/components/molecules/TeamCard/TeamCard.interface.ts +7 -7
- package/src/components/molecules/TeamCard/TeamCard.stories.tsx +33 -33
- package/src/components/molecules/TeamCard/TeamCard.theme.ts +12 -12
- package/src/components/molecules/TeamCard/index.ts +1 -1
- package/src/components/organisms/CircularSlider/CircularSlider.component.tsx +231 -231
- package/src/components/organisms/CircularSlider/CircularSlider.interface.ts +13 -13
- package/src/components/organisms/CircularSlider/CircularSlider.stories.tsx +138 -138
- package/src/components/organisms/CircularSlider/CircularSlider.theme.ts +126 -126
- package/src/components/organisms/CircularSlider/index.ts +1 -1
- package/src/components/organisms/Cover/Cover.component.tsx +46 -46
- package/src/components/organisms/Cover/Cover.interface.ts +14 -14
- package/src/components/organisms/Cover/Cover.stories.tsx +97 -97
- package/src/components/organisms/Cover/Cover.theme.ts +49 -49
- package/src/components/organisms/Cover/index.ts +1 -1
- package/src/components/organisms/ProductsSlider/ProductsSlider.component.tsx +216 -216
- package/src/components/organisms/ProductsSlider/ProductsSlider.interface.ts +12 -12
- package/src/components/organisms/ProductsSlider/ProductsSlider.stories.tsx +132 -132
- package/src/components/organisms/ProductsSlider/ProductsSlider.theme.ts +77 -77
- package/src/components/organisms/ProductsSlider/index.ts +1 -1
- package/src/components/organisms/ProductsSlider//306/222.js +164 -164
- package/src/components/organisms/Slider/Slider.component.tsx +154 -154
- package/src/components/organisms/Slider/Slider.interface.ts +19 -19
- package/src/components/organisms/Slider/Slider.stories.tsx +146 -146
- package/src/components/organisms/Slider/Slider.theme.ts +145 -145
- package/src/components/organisms/Slider/Slider.utils.tsx +19 -19
- package/src/components/organisms/Slider/index.ts +1 -1
- package/src/components/organisms/Tabs/Tabs.component.tsx +88 -88
- package/src/components/organisms/Tabs/Tabs.interface.ts +18 -18
- package/src/components/organisms/Tabs/Tabs.stories.tsx +118 -118
- package/src/components/organisms/Tabs/Tabs.theme.ts +115 -115
- package/src/components/organisms/Tabs/index.ts +1 -1
- package/src/helpers/clickOutsideToClose.tsx +17 -17
- package/src/helpers/events.ts +9 -9
- package/src/helpers/exportCSS.tsx +27 -27
- package/src/helpers/getIcons.ts +5 -5
- package/src/helpers/isTouchDevice.tsx +11 -11
- package/src/helpers/useInterval.ts +25 -25
- package/src/helpers/useMediaMatch.tsx +26 -26
- package/src/helpers/uuid.ts +5 -5
- package/src/iconsList.json +1 -1
- package/src/index.ts +68 -68
- package/src/reportWebVitals.js +13 -13
- package/src/stories/Documentation/Colors.stories.tsx +46 -46
- package/src/stories/Documentation/Headings.stories.tsx +24 -24
- package/src/stories/Documentation/Icons.stories.tsx +73 -73
- package/src/stories/Documentation/JWT.stories.tsx +60 -60
- package/src/stories/Documentation/Utilities.stories.tsx +65 -65
- package/src/styles/Global.ts +301 -301
- package/src/styles/grid.ts +70 -70
- package/src/styles/reset.ts +47 -47
- package/src/styles/utilities.ts +374 -374
- package/src/styles/variables.ts +180 -180
- 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
|
+
}
|