oddsgate-ds 1.0.174 → 1.0.175
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 +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/components/atoms/AwardBadge/AwardBadge.component.d.ts +11 -0
- package/dist/cjs/types/components/atoms/AwardBadge/AwardBadge.interface.d.ts +4 -0
- package/dist/cjs/types/components/atoms/AwardBadge/AwardBadge.theme.d.ts +3 -0
- package/dist/cjs/types/components/atoms/AwardBadge/index.d.ts +1 -0
- package/dist/cjs/types/components/molecules/AwardCard/AwardCard.component.d.ts +15 -0
- package/dist/cjs/types/components/molecules/AwardCard/AwardCard.interface.d.ts +10 -0
- package/dist/cjs/types/components/molecules/AwardCard/AwardCard.theme.d.ts +6 -0
- package/dist/cjs/types/components/molecules/AwardCard/index.d.ts +1 -0
- package/dist/cjs/types/components/organisms/Slider/Slider.component.d.ts +1 -1
- package/dist/cjs/types/components/organisms/Slider/Slider.interface.d.ts +3 -0
- package/dist/esm/assets/components/quotes.svg +3 -3
- package/dist/esm/index.js +5 -5
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/components/atoms/AwardBadge/AwardBadge.component.d.ts +11 -0
- package/dist/esm/types/components/atoms/AwardBadge/AwardBadge.interface.d.ts +4 -0
- package/dist/esm/types/components/atoms/AwardBadge/AwardBadge.theme.d.ts +3 -0
- package/dist/esm/types/components/atoms/AwardBadge/index.d.ts +1 -0
- package/dist/esm/types/components/molecules/AwardCard/AwardCard.component.d.ts +15 -0
- package/dist/esm/types/components/molecules/AwardCard/AwardCard.interface.d.ts +10 -0
- package/dist/esm/types/components/molecules/AwardCard/AwardCard.theme.d.ts +6 -0
- package/dist/esm/types/components/molecules/AwardCard/index.d.ts +1 -0
- package/dist/esm/types/components/organisms/Slider/Slider.component.d.ts +1 -1
- package/dist/esm/types/components/organisms/Slider/Slider.interface.d.ts +3 -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 +4 -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/AwardBadge/AwardBadge.component.tsx +25 -0
- package/src/components/atoms/AwardBadge/AwardBadge.interface.ts +4 -0
- package/src/components/atoms/AwardBadge/AwardBadge.stories.tsx +48 -0
- package/src/components/atoms/AwardBadge/AwardBadge.theme.ts +28 -0
- package/src/components/atoms/AwardBadge/index.ts +1 -0
- 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 +33 -33
- 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/AwardCard/AwardCard.component.tsx +51 -0
- package/src/components/molecules/AwardCard/AwardCard.interface.ts +10 -0
- package/src/components/molecules/AwardCard/AwardCard.stories.tsx +34 -0
- package/src/components/molecules/AwardCard/AwardCard.theme.ts +33 -0
- package/src/components/molecules/AwardCard/index.ts +1 -0
- 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 +40 -40
- package/src/components/molecules/EventsCard/EventsCard.interface.ts +9 -9
- package/src/components/molecules/EventsCard/EventsCard.stories.tsx +37 -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 +156 -154
- package/src/components/organisms/Slider/Slider.interface.ts +23 -19
- package/src/components/organisms/Slider/Slider.stories.tsx +223 -146
- package/src/components/organisms/Slider/Slider.theme.ts +144 -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,58 +1,58 @@
|
|
|
1
|
-
import { IAccordion, IAccordionItem } from './Accordion.interface'
|
|
2
|
-
import React, { useRef, useState } from 'react'
|
|
3
|
-
import {
|
|
4
|
-
StyledAccordion,
|
|
5
|
-
StyledAccordionContent,
|
|
6
|
-
StyledAccordionItem,
|
|
7
|
-
StyledAccordionTitle
|
|
8
|
-
} from './Accordion.theme'
|
|
9
|
-
|
|
10
|
-
import Icon from '@/components/atoms/Icon/Icon.component'
|
|
11
|
-
import Separator from '@/components/atoms/Separator/Separator.component'
|
|
12
|
-
|
|
13
|
-
export const Accordion = ({ className, style, children }: IAccordion) => {
|
|
14
|
-
return (
|
|
15
|
-
<StyledAccordion className={className} style={style}>
|
|
16
|
-
{children}
|
|
17
|
-
</StyledAccordion>
|
|
18
|
-
)
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export const AccordionItem = ({
|
|
22
|
-
title,
|
|
23
|
-
className,
|
|
24
|
-
style,
|
|
25
|
-
children
|
|
26
|
-
}: IAccordionItem) => {
|
|
27
|
-
const [active, setActive] = useState(false)
|
|
28
|
-
const contentEl = useRef<HTMLInputElement>(null)
|
|
29
|
-
|
|
30
|
-
return (
|
|
31
|
-
<StyledAccordionItem
|
|
32
|
-
active={active ? true : undefined}
|
|
33
|
-
className={className}
|
|
34
|
-
style={style}
|
|
35
|
-
>
|
|
36
|
-
<StyledAccordionTitle
|
|
37
|
-
className={`h4 fw-bold`}
|
|
38
|
-
onClick={() => {
|
|
39
|
-
setActive(!active)
|
|
40
|
-
}}
|
|
41
|
-
>
|
|
42
|
-
<span>{title}</span>
|
|
43
|
-
<Icon className={active ? 'icon-arrowDown' : 'icon-arrowUp'} />
|
|
44
|
-
</StyledAccordionTitle>
|
|
45
|
-
<StyledAccordionContent
|
|
46
|
-
ref={contentEl}
|
|
47
|
-
style={
|
|
48
|
-
active
|
|
49
|
-
? { height: contentEl?.current?.scrollHeight }
|
|
50
|
-
: { height: '0px' }
|
|
51
|
-
}
|
|
52
|
-
>
|
|
53
|
-
<Separator height="1rem"></Separator>
|
|
54
|
-
{children}
|
|
55
|
-
</StyledAccordionContent>
|
|
56
|
-
</StyledAccordionItem>
|
|
57
|
-
)
|
|
58
|
-
}
|
|
1
|
+
import { IAccordion, IAccordionItem } from './Accordion.interface'
|
|
2
|
+
import React, { useRef, useState } from 'react'
|
|
3
|
+
import {
|
|
4
|
+
StyledAccordion,
|
|
5
|
+
StyledAccordionContent,
|
|
6
|
+
StyledAccordionItem,
|
|
7
|
+
StyledAccordionTitle
|
|
8
|
+
} from './Accordion.theme'
|
|
9
|
+
|
|
10
|
+
import Icon from '@/components/atoms/Icon/Icon.component'
|
|
11
|
+
import Separator from '@/components/atoms/Separator/Separator.component'
|
|
12
|
+
|
|
13
|
+
export const Accordion = ({ className, style, children }: IAccordion) => {
|
|
14
|
+
return (
|
|
15
|
+
<StyledAccordion className={className} style={style}>
|
|
16
|
+
{children}
|
|
17
|
+
</StyledAccordion>
|
|
18
|
+
)
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export const AccordionItem = ({
|
|
22
|
+
title,
|
|
23
|
+
className,
|
|
24
|
+
style,
|
|
25
|
+
children
|
|
26
|
+
}: IAccordionItem) => {
|
|
27
|
+
const [active, setActive] = useState(false)
|
|
28
|
+
const contentEl = useRef<HTMLInputElement>(null)
|
|
29
|
+
|
|
30
|
+
return (
|
|
31
|
+
<StyledAccordionItem
|
|
32
|
+
active={active ? true : undefined}
|
|
33
|
+
className={className}
|
|
34
|
+
style={style}
|
|
35
|
+
>
|
|
36
|
+
<StyledAccordionTitle
|
|
37
|
+
className={`h4 fw-bold`}
|
|
38
|
+
onClick={() => {
|
|
39
|
+
setActive(!active)
|
|
40
|
+
}}
|
|
41
|
+
>
|
|
42
|
+
<span>{title}</span>
|
|
43
|
+
<Icon className={active ? 'icon-arrowDown' : 'icon-arrowUp'} />
|
|
44
|
+
</StyledAccordionTitle>
|
|
45
|
+
<StyledAccordionContent
|
|
46
|
+
ref={contentEl}
|
|
47
|
+
style={
|
|
48
|
+
active
|
|
49
|
+
? { height: contentEl?.current?.scrollHeight }
|
|
50
|
+
: { height: '0px' }
|
|
51
|
+
}
|
|
52
|
+
>
|
|
53
|
+
<Separator height="1rem"></Separator>
|
|
54
|
+
{children}
|
|
55
|
+
</StyledAccordionContent>
|
|
56
|
+
</StyledAccordionItem>
|
|
57
|
+
)
|
|
58
|
+
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { CSSProperties } from 'react';
|
|
2
|
-
|
|
3
|
-
export interface IAccordion {
|
|
4
|
-
className?: string
|
|
5
|
-
style?: CSSProperties
|
|
6
|
-
children?: React.ReactNode;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export interface IAccordionItem {
|
|
10
|
-
active?: boolean
|
|
11
|
-
title?: string
|
|
12
|
-
className?: string
|
|
13
|
-
style?: CSSProperties
|
|
14
|
-
children?: React.ReactNode;
|
|
15
|
-
}
|
|
1
|
+
import { CSSProperties } from 'react';
|
|
2
|
+
|
|
3
|
+
export interface IAccordion {
|
|
4
|
+
className?: string
|
|
5
|
+
style?: CSSProperties
|
|
6
|
+
children?: React.ReactNode;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export interface IAccordionItem {
|
|
10
|
+
active?: boolean
|
|
11
|
+
title?: string
|
|
12
|
+
className?: string
|
|
13
|
+
style?: CSSProperties
|
|
14
|
+
children?: React.ReactNode;
|
|
15
|
+
}
|
|
@@ -1,100 +1,100 @@
|
|
|
1
|
-
import { Accordion, AccordionItem } from './Accordion.component'
|
|
2
|
-
import type { Meta, StoryObj } from '@storybook/react'
|
|
3
|
-
|
|
4
|
-
import { IAccordion } from './Accordion.interface'
|
|
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/Accordion',
|
|
10
|
-
component: Accordion,
|
|
11
|
-
tags: ['autodocs']
|
|
12
|
-
} as Meta
|
|
13
|
-
|
|
14
|
-
export const Simple: StoryObj<IAccordion> = {
|
|
15
|
-
render: args => (
|
|
16
|
-
<Accordion {...args}>
|
|
17
|
-
<AccordionItem title="Lorem ipsum dolor sit amet, consectetur adipiscing elit.">
|
|
18
|
-
<p>
|
|
19
|
-
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
20
|
-
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique.
|
|
21
|
-
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
22
|
-
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique
|
|
23
|
-
</p>
|
|
24
|
-
</AccordionItem>
|
|
25
|
-
<AccordionItem title="Lorem ipsum dolor sit amet, consectetur adipiscing elit.">
|
|
26
|
-
<p>
|
|
27
|
-
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
28
|
-
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique.
|
|
29
|
-
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
30
|
-
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique
|
|
31
|
-
</p>
|
|
32
|
-
</AccordionItem>
|
|
33
|
-
<AccordionItem title="Lorem ipsum dolor sit amet, consectetur adipiscing elit.">
|
|
34
|
-
<p>
|
|
35
|
-
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
36
|
-
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique.
|
|
37
|
-
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
38
|
-
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique
|
|
39
|
-
</p>
|
|
40
|
-
</AccordionItem>
|
|
41
|
-
<AccordionItem title="Lorem ipsum dolor sit amet, consectetur adipiscing elit.">
|
|
42
|
-
<p>
|
|
43
|
-
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
44
|
-
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique.
|
|
45
|
-
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
46
|
-
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique
|
|
47
|
-
</p>
|
|
48
|
-
</AccordionItem>
|
|
49
|
-
<AccordionItem title="Lorem ipsum dolor sit amet, consectetur adipiscing elit.">
|
|
50
|
-
<p>
|
|
51
|
-
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
52
|
-
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique.
|
|
53
|
-
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
54
|
-
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique
|
|
55
|
-
</p>
|
|
56
|
-
</AccordionItem>
|
|
57
|
-
<AccordionItem title="Lorem ipsum dolor sit amet, consectetur adipiscing elit.">
|
|
58
|
-
<p>
|
|
59
|
-
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
60
|
-
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique.
|
|
61
|
-
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
62
|
-
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique
|
|
63
|
-
</p>
|
|
64
|
-
</AccordionItem>
|
|
65
|
-
<AccordionItem title="Lorem ipsum dolor sit amet, consectetur adipiscing elit.">
|
|
66
|
-
<p>
|
|
67
|
-
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
68
|
-
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique.
|
|
69
|
-
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
70
|
-
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique
|
|
71
|
-
</p>
|
|
72
|
-
</AccordionItem>
|
|
73
|
-
<AccordionItem title="Lorem ipsum dolor sit amet, consectetur adipiscing elit.">
|
|
74
|
-
<p>
|
|
75
|
-
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
76
|
-
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique.
|
|
77
|
-
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
78
|
-
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique
|
|
79
|
-
</p>
|
|
80
|
-
</AccordionItem>
|
|
81
|
-
<AccordionItem title="Lorem ipsum dolor sit amet, consectetur adipiscing elit.">
|
|
82
|
-
<p>
|
|
83
|
-
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
84
|
-
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique.
|
|
85
|
-
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
86
|
-
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique
|
|
87
|
-
</p>
|
|
88
|
-
</AccordionItem>
|
|
89
|
-
<AccordionItem title="Lorem ipsum dolor sit amet, consectetur adipiscing elit.">
|
|
90
|
-
<p>
|
|
91
|
-
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
92
|
-
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique.
|
|
93
|
-
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
94
|
-
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique
|
|
95
|
-
</p>
|
|
96
|
-
</AccordionItem>
|
|
97
|
-
</Accordion>
|
|
98
|
-
),
|
|
99
|
-
args: {}
|
|
100
|
-
}
|
|
1
|
+
import { Accordion, AccordionItem } from './Accordion.component'
|
|
2
|
+
import type { Meta, StoryObj } from '@storybook/react'
|
|
3
|
+
|
|
4
|
+
import { IAccordion } from './Accordion.interface'
|
|
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/Accordion',
|
|
10
|
+
component: Accordion,
|
|
11
|
+
tags: ['autodocs']
|
|
12
|
+
} as Meta
|
|
13
|
+
|
|
14
|
+
export const Simple: StoryObj<IAccordion> = {
|
|
15
|
+
render: args => (
|
|
16
|
+
<Accordion {...args}>
|
|
17
|
+
<AccordionItem title="Lorem ipsum dolor sit amet, consectetur adipiscing elit.">
|
|
18
|
+
<p>
|
|
19
|
+
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
20
|
+
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique.
|
|
21
|
+
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
22
|
+
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique
|
|
23
|
+
</p>
|
|
24
|
+
</AccordionItem>
|
|
25
|
+
<AccordionItem title="Lorem ipsum dolor sit amet, consectetur adipiscing elit.">
|
|
26
|
+
<p>
|
|
27
|
+
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
28
|
+
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique.
|
|
29
|
+
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
30
|
+
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique
|
|
31
|
+
</p>
|
|
32
|
+
</AccordionItem>
|
|
33
|
+
<AccordionItem title="Lorem ipsum dolor sit amet, consectetur adipiscing elit.">
|
|
34
|
+
<p>
|
|
35
|
+
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
36
|
+
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique.
|
|
37
|
+
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
38
|
+
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique
|
|
39
|
+
</p>
|
|
40
|
+
</AccordionItem>
|
|
41
|
+
<AccordionItem title="Lorem ipsum dolor sit amet, consectetur adipiscing elit.">
|
|
42
|
+
<p>
|
|
43
|
+
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
44
|
+
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique.
|
|
45
|
+
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
46
|
+
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique
|
|
47
|
+
</p>
|
|
48
|
+
</AccordionItem>
|
|
49
|
+
<AccordionItem title="Lorem ipsum dolor sit amet, consectetur adipiscing elit.">
|
|
50
|
+
<p>
|
|
51
|
+
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
52
|
+
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique.
|
|
53
|
+
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
54
|
+
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique
|
|
55
|
+
</p>
|
|
56
|
+
</AccordionItem>
|
|
57
|
+
<AccordionItem title="Lorem ipsum dolor sit amet, consectetur adipiscing elit.">
|
|
58
|
+
<p>
|
|
59
|
+
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
60
|
+
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique.
|
|
61
|
+
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
62
|
+
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique
|
|
63
|
+
</p>
|
|
64
|
+
</AccordionItem>
|
|
65
|
+
<AccordionItem title="Lorem ipsum dolor sit amet, consectetur adipiscing elit.">
|
|
66
|
+
<p>
|
|
67
|
+
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
68
|
+
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique.
|
|
69
|
+
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
70
|
+
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique
|
|
71
|
+
</p>
|
|
72
|
+
</AccordionItem>
|
|
73
|
+
<AccordionItem title="Lorem ipsum dolor sit amet, consectetur adipiscing elit.">
|
|
74
|
+
<p>
|
|
75
|
+
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
76
|
+
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique.
|
|
77
|
+
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
78
|
+
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique
|
|
79
|
+
</p>
|
|
80
|
+
</AccordionItem>
|
|
81
|
+
<AccordionItem title="Lorem ipsum dolor sit amet, consectetur adipiscing elit.">
|
|
82
|
+
<p>
|
|
83
|
+
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
84
|
+
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique.
|
|
85
|
+
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
86
|
+
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique
|
|
87
|
+
</p>
|
|
88
|
+
</AccordionItem>
|
|
89
|
+
<AccordionItem title="Lorem ipsum dolor sit amet, consectetur adipiscing elit.">
|
|
90
|
+
<p>
|
|
91
|
+
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
92
|
+
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique.
|
|
93
|
+
Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis
|
|
94
|
+
ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique
|
|
95
|
+
</p>
|
|
96
|
+
</AccordionItem>
|
|
97
|
+
</Accordion>
|
|
98
|
+
),
|
|
99
|
+
args: {}
|
|
100
|
+
}
|
|
@@ -1,93 +1,93 @@
|
|
|
1
|
-
import { IAccordion, IAccordionItem } from './Accordion.interface';
|
|
2
|
-
import { colors, easeOutExpo, responsiveMedia, responsiveMediaMax } from '@/styles/variables';
|
|
3
|
-
import styled, { css } from 'styled-components';
|
|
4
|
-
|
|
5
|
-
export const StyledAccordionTitle = styled.span<IAccordionItem>`
|
|
6
|
-
display: block;
|
|
7
|
-
position: relative;
|
|
8
|
-
|
|
9
|
-
padding-right: 6rem;
|
|
10
|
-
|
|
11
|
-
cursor: pointer;
|
|
12
|
-
transition: font-weight .4s ease-in-out;
|
|
13
|
-
|
|
14
|
-
& i {
|
|
15
|
-
position: absolute;
|
|
16
|
-
top: 50%;
|
|
17
|
-
right: 8px;
|
|
18
|
-
|
|
19
|
-
display: flex;
|
|
20
|
-
align-items: center;
|
|
21
|
-
justify-content: center;
|
|
22
|
-
|
|
23
|
-
width: 4rem;
|
|
24
|
-
height: 4rem;
|
|
25
|
-
border-radius: 100%;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
font-size: 1.2rem;
|
|
29
|
-
color: ${colors.secondary50};
|
|
30
|
-
background: ${colors.third10};
|
|
31
|
-
|
|
32
|
-
transform: translateY(-50%);
|
|
33
|
-
transform-origin: center;
|
|
34
|
-
|
|
35
|
-
transition: all 0.6s ${easeOutExpo};
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
`
|
|
39
|
-
|
|
40
|
-
export const StyledAccordionContent = styled.div<IAccordionItem>`
|
|
41
|
-
position: relative;
|
|
42
|
-
display: grid;
|
|
43
|
-
grid-template-rows: 0fr;
|
|
44
|
-
overflow: hidden;
|
|
45
|
-
transition: all 0.5s linear;
|
|
46
|
-
|
|
47
|
-
${({ active }) => active && `
|
|
48
|
-
grid-template-rows: 1fr;
|
|
49
|
-
`}
|
|
50
|
-
|
|
51
|
-
@media only screen and (max-width: ${responsiveMediaMax}) {
|
|
52
|
-
padding-right: 6rem;
|
|
53
|
-
}
|
|
54
|
-
`
|
|
55
|
-
|
|
56
|
-
export const StyledAccordionItem = styled.li<IAccordionItem>`
|
|
57
|
-
position: relative;
|
|
58
|
-
width: 100%;
|
|
59
|
-
padding: 2rem 2.4rem;
|
|
60
|
-
border-radius: 50px;
|
|
61
|
-
color: ${colors.third50};
|
|
62
|
-
background-color: ${colors.secondary50};
|
|
63
|
-
margin-bottom: 1rem;
|
|
64
|
-
transition: all 0.6s ${easeOutExpo};
|
|
65
|
-
|
|
66
|
-
&:hover{
|
|
67
|
-
color: ${colors.primary50};
|
|
68
|
-
& ${StyledAccordionTitle} {
|
|
69
|
-
i{
|
|
70
|
-
background: ${colors.primary50};
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
${({ active }) => active && `
|
|
76
|
-
color: ${colors.third10};
|
|
77
|
-
& ${StyledAccordionTitle} {
|
|
78
|
-
i{
|
|
79
|
-
background: ${colors.third10};
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
`}
|
|
83
|
-
|
|
84
|
-
`
|
|
85
|
-
|
|
86
|
-
export const StyledAccordion = styled.ul<IAccordion>`
|
|
87
|
-
display: block;
|
|
88
|
-
text-align: left;
|
|
89
|
-
margin: auto;
|
|
90
|
-
list-style: none;
|
|
91
|
-
padding: 0;
|
|
92
|
-
`;
|
|
93
|
-
|
|
1
|
+
import { IAccordion, IAccordionItem } from './Accordion.interface';
|
|
2
|
+
import { colors, easeOutExpo, responsiveMedia, responsiveMediaMax } from '@/styles/variables';
|
|
3
|
+
import styled, { css } from 'styled-components';
|
|
4
|
+
|
|
5
|
+
export const StyledAccordionTitle = styled.span<IAccordionItem>`
|
|
6
|
+
display: block;
|
|
7
|
+
position: relative;
|
|
8
|
+
|
|
9
|
+
padding-right: 6rem;
|
|
10
|
+
|
|
11
|
+
cursor: pointer;
|
|
12
|
+
transition: font-weight .4s ease-in-out;
|
|
13
|
+
|
|
14
|
+
& i {
|
|
15
|
+
position: absolute;
|
|
16
|
+
top: 50%;
|
|
17
|
+
right: 8px;
|
|
18
|
+
|
|
19
|
+
display: flex;
|
|
20
|
+
align-items: center;
|
|
21
|
+
justify-content: center;
|
|
22
|
+
|
|
23
|
+
width: 4rem;
|
|
24
|
+
height: 4rem;
|
|
25
|
+
border-radius: 100%;
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
font-size: 1.2rem;
|
|
29
|
+
color: ${colors.secondary50};
|
|
30
|
+
background: ${colors.third10};
|
|
31
|
+
|
|
32
|
+
transform: translateY(-50%);
|
|
33
|
+
transform-origin: center;
|
|
34
|
+
|
|
35
|
+
transition: all 0.6s ${easeOutExpo};
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
`
|
|
39
|
+
|
|
40
|
+
export const StyledAccordionContent = styled.div<IAccordionItem>`
|
|
41
|
+
position: relative;
|
|
42
|
+
display: grid;
|
|
43
|
+
grid-template-rows: 0fr;
|
|
44
|
+
overflow: hidden;
|
|
45
|
+
transition: all 0.5s linear;
|
|
46
|
+
|
|
47
|
+
${({ active }) => active && `
|
|
48
|
+
grid-template-rows: 1fr;
|
|
49
|
+
`}
|
|
50
|
+
|
|
51
|
+
@media only screen and (max-width: ${responsiveMediaMax}) {
|
|
52
|
+
padding-right: 6rem;
|
|
53
|
+
}
|
|
54
|
+
`
|
|
55
|
+
|
|
56
|
+
export const StyledAccordionItem = styled.li<IAccordionItem>`
|
|
57
|
+
position: relative;
|
|
58
|
+
width: 100%;
|
|
59
|
+
padding: 2rem 2.4rem;
|
|
60
|
+
border-radius: 50px;
|
|
61
|
+
color: ${colors.third50};
|
|
62
|
+
background-color: ${colors.secondary50};
|
|
63
|
+
margin-bottom: 1rem;
|
|
64
|
+
transition: all 0.6s ${easeOutExpo};
|
|
65
|
+
|
|
66
|
+
&:hover{
|
|
67
|
+
color: ${colors.primary50};
|
|
68
|
+
& ${StyledAccordionTitle} {
|
|
69
|
+
i{
|
|
70
|
+
background: ${colors.primary50};
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
${({ active }) => active && `
|
|
76
|
+
color: ${colors.third10};
|
|
77
|
+
& ${StyledAccordionTitle} {
|
|
78
|
+
i{
|
|
79
|
+
background: ${colors.third10};
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
`}
|
|
83
|
+
|
|
84
|
+
`
|
|
85
|
+
|
|
86
|
+
export const StyledAccordion = styled.ul<IAccordion>`
|
|
87
|
+
display: block;
|
|
88
|
+
text-align: left;
|
|
89
|
+
margin: auto;
|
|
90
|
+
list-style: none;
|
|
91
|
+
padding: 0;
|
|
92
|
+
`;
|
|
93
|
+
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { Accordion, AccordionItem } from './Accordion.component'
|
|
1
|
+
export { Accordion, AccordionItem } from './Accordion.component'
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import {
|
|
2
|
+
StyledAwardCard,
|
|
3
|
+
StyledAwardCardAwardBadgeWrapper,
|
|
4
|
+
StyledAwardCardImageAndBadgeWrapper,
|
|
5
|
+
StyledAwardCardWrapper
|
|
6
|
+
} from './AwardCard.theme'
|
|
7
|
+
|
|
8
|
+
import Heading from '@/components/atoms/Heading'
|
|
9
|
+
import { IAwardCard } from './AwardCard.interface'
|
|
10
|
+
import React from 'react'
|
|
11
|
+
import AwardBadge from '@/components/atoms/AwardBadge'
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Renders an award card component displaying a title, an image, and an optional badge (chip).
|
|
15
|
+
*
|
|
16
|
+
* @param {IAwardCard} props - The props for the AwardCard component.
|
|
17
|
+
* @param {string} props.title - The title to display on the card.
|
|
18
|
+
* @param {React.ReactNode} props.imageElement - The image or element to display in the card.
|
|
19
|
+
* @param {string} [props.className] - Optional additional class name(s) for the card.
|
|
20
|
+
* @param {React.CSSProperties} [props.style] - Optional inline styles for the card.
|
|
21
|
+
* @param {{ variant: string; label: string }} [props.chip] - Optional chip object to display a badge, with variant and label.
|
|
22
|
+
* @returns {JSX.Element} The rendered AwardCard component.
|
|
23
|
+
*/
|
|
24
|
+
const AwardCard = ({
|
|
25
|
+
title,
|
|
26
|
+
imageElement,
|
|
27
|
+
className,
|
|
28
|
+
style,
|
|
29
|
+
chip,
|
|
30
|
+
...props
|
|
31
|
+
}: IAwardCard) => {
|
|
32
|
+
return (
|
|
33
|
+
<StyledAwardCard className={className} style={style}>
|
|
34
|
+
<StyledAwardCardWrapper>
|
|
35
|
+
<Heading tag={'h5'} size={'h5'} className={'fw-bold'}>
|
|
36
|
+
{title}
|
|
37
|
+
</Heading>
|
|
38
|
+
<StyledAwardCardImageAndBadgeWrapper>
|
|
39
|
+
{imageElement}
|
|
40
|
+
{chip && (
|
|
41
|
+
<StyledAwardCardAwardBadgeWrapper>
|
|
42
|
+
<AwardBadge variant={chip?.variant} label={chip?.label} />
|
|
43
|
+
</StyledAwardCardAwardBadgeWrapper>
|
|
44
|
+
)}
|
|
45
|
+
</StyledAwardCardImageAndBadgeWrapper>
|
|
46
|
+
</StyledAwardCardWrapper>
|
|
47
|
+
</StyledAwardCard>
|
|
48
|
+
)
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export default AwardCard
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react'
|
|
2
|
+
|
|
3
|
+
import { IAwardCard } from './AwardCard.interface'
|
|
4
|
+
import AwardCard from './AwardCard.component'
|
|
5
|
+
import React from 'react'
|
|
6
|
+
|
|
7
|
+
export default {
|
|
8
|
+
title: 'Components/AwardCard',
|
|
9
|
+
component: AwardCard,
|
|
10
|
+
tags: ['autodocs']
|
|
11
|
+
} as Meta
|
|
12
|
+
|
|
13
|
+
const image = (
|
|
14
|
+
<img
|
|
15
|
+
width="100%"
|
|
16
|
+
height="100%"
|
|
17
|
+
sizes="100vw"
|
|
18
|
+
decoding="async"
|
|
19
|
+
src="/assets/placeholder.png"
|
|
20
|
+
alt="Empty state"
|
|
21
|
+
/>
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
export const Simple: StoryObj<IAwardCard> = {
|
|
25
|
+
render: args => <AwardCard {...args} style={{ maxWidth: '302px' }} />,
|
|
26
|
+
args: {
|
|
27
|
+
title: 'Cras vel facilisis tellus',
|
|
28
|
+
imageElement: image,
|
|
29
|
+
chip: {
|
|
30
|
+
label: 'New',
|
|
31
|
+
variant: 'primary'
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import styled from 'styled-components'
|
|
2
|
+
import { colors } from '@/styles/variables'
|
|
3
|
+
import { IAwardCard } from './AwardCard.interface'
|
|
4
|
+
|
|
5
|
+
export const StyledAwardCard = styled.div<IAwardCard>`
|
|
6
|
+
& img {
|
|
7
|
+
width: 100%;
|
|
8
|
+
object-fit: contain;
|
|
9
|
+
aspect-ratio: 2.74 / 1;
|
|
10
|
+
}
|
|
11
|
+
`
|
|
12
|
+
|
|
13
|
+
export const StyledAwardCardWrapper = styled.div<IAwardCard>`
|
|
14
|
+
display: flex;
|
|
15
|
+
flex-direction: column;
|
|
16
|
+
justify-content: space-between;
|
|
17
|
+
gap: 1.125rem;
|
|
18
|
+
background-color: ${colors.third10};
|
|
19
|
+
padding: 0.75rem 1rem 1rem 0.75rem;
|
|
20
|
+
border-radius: 0 60px;
|
|
21
|
+
height: 100%;
|
|
22
|
+
`
|
|
23
|
+
|
|
24
|
+
export const StyledAwardCardImageAndBadgeWrapper = styled.div`
|
|
25
|
+
display: flex;
|
|
26
|
+
flex-direction: column;
|
|
27
|
+
align-items: center;
|
|
28
|
+
gap: 1.125rem;
|
|
29
|
+
`
|
|
30
|
+
|
|
31
|
+
export const StyledAwardCardAwardBadgeWrapper = styled.div`
|
|
32
|
+
margin-left: auto;
|
|
33
|
+
`
|