oddsgate-ds 1.0.24 → 1.0.26
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/dist/cjs/index.js +5 -5
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/components/molecules/ProductCard/ProductCard.component.d.ts +4 -0
- package/dist/cjs/types/components/molecules/ProductCard/ProductCard.interface.d.ts +6 -0
- package/dist/{esm/types/components/molecules/ProjectCard/ProjectCard.stories.d.ts → cjs/types/components/molecules/ProductCard/ProductCard.stories.d.ts} +2 -2
- package/dist/cjs/types/components/molecules/ProductCard/ProductCard.theme.d.ts +4 -0
- package/dist/cjs/types/components/molecules/ProductCard/index.d.ts +1 -0
- package/dist/cjs/types/index.d.ts +1 -1
- package/dist/esm/index.js +5 -5
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/components/molecules/ProductCard/ProductCard.component.d.ts +4 -0
- package/dist/esm/types/components/molecules/ProductCard/ProductCard.interface.d.ts +6 -0
- package/dist/{cjs/types/components/molecules/ProjectCard/ProjectCard.stories.d.ts → esm/types/components/molecules/ProductCard/ProductCard.stories.d.ts} +2 -2
- package/dist/esm/types/components/molecules/ProductCard/ProductCard.theme.d.ts +4 -0
- package/dist/esm/types/components/molecules/ProductCard/index.d.ts +1 -0
- package/dist/esm/types/index.d.ts +1 -1
- package/dist/types.d.ts +4 -6
- package/package.json +1 -1
- package/src/components/atoms/Button/Button.theme.ts +2 -2
- package/src/components/atoms/SocialLinks/SocialLinks.theme.ts +1 -1
- package/src/components/molecules/ProductCard/ProductCard.component.tsx +31 -0
- package/src/components/molecules/ProductCard/ProductCard.interface.ts +6 -0
- package/src/components/molecules/ProductCard/ProductCard.stories.tsx +33 -0
- package/src/components/molecules/ProductCard/ProductCard.theme.ts +27 -0
- package/src/components/molecules/ProductCard/index.ts +1 -0
- package/src/components/organisms/CircularSlider/CircularSlider.component.tsx +38 -19
- package/src/components/organisms/CircularSlider/CircularSlider.stories.tsx +7 -11
- package/src/components/organisms/CircularSlider/CircularSlider.theme.ts +20 -18
- package/src/components/organisms/Tabs/Tabs.theme.ts +2 -1
- package/src/index.ts +1 -1
- package/src/styles/utilities.ts +7 -0
- package/dist/cjs/types/components/molecules/ProjectCard/ProjectCard.component.d.ts +0 -4
- package/dist/cjs/types/components/molecules/ProjectCard/ProjectCard.interface.d.ts +0 -8
- package/dist/cjs/types/components/molecules/ProjectCard/ProjectCard.theme.d.ts +0 -3
- package/dist/cjs/types/components/molecules/ProjectCard/index.d.ts +0 -1
- package/dist/esm/types/components/molecules/ProjectCard/ProjectCard.component.d.ts +0 -4
- package/dist/esm/types/components/molecules/ProjectCard/ProjectCard.interface.d.ts +0 -8
- package/dist/esm/types/components/molecules/ProjectCard/ProjectCard.theme.d.ts +0 -3
- package/dist/esm/types/components/molecules/ProjectCard/index.d.ts +0 -1
- package/src/components/molecules/ProjectCard/ProjectCard.component.tsx +0 -45
- package/src/components/molecules/ProjectCard/ProjectCard.interface.ts +0 -8
- package/src/components/molecules/ProjectCard/ProjectCard.stories.tsx +0 -72
- package/src/components/molecules/ProjectCard/ProjectCard.theme.ts +0 -61
- package/src/components/molecules/ProjectCard/index.ts +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { StoryObj } from '@storybook/react';
|
|
2
|
-
import {
|
|
2
|
+
import { IProductCard } from './ProductCard.interface';
|
|
3
3
|
declare const _default: import("@storybook/types").ComponentAnnotations<import("@storybook/react").ReactRenderer, import("@storybook/types").Args>;
|
|
4
4
|
export default _default;
|
|
5
|
-
export declare const Simple: StoryObj<
|
|
5
|
+
export declare const Simple: StoryObj<IProductCard>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { IProductCard } from './ProductCard.interface';
|
|
3
|
+
export declare const StyledProductCard: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, IProductCard>> & string;
|
|
4
|
+
export declare const StyledProductCardWrapper: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, IProductCard>> & string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from "./ProductCard.component";
|
|
@@ -35,7 +35,7 @@ export { default as IconTitle } from './components/molecules/IconTitle';
|
|
|
35
35
|
export { default as BlogCard } from './components/molecules/BlogCard';
|
|
36
36
|
export { default as TeamCard } from './components/molecules/TeamCard';
|
|
37
37
|
export { default as LogosCard } from './components/molecules/LogosCard';
|
|
38
|
-
export { default as
|
|
38
|
+
export { default as ProductCard } from './components/molecules/ProductCard';
|
|
39
39
|
export { default as Slider } from './components/organisms/Slider';
|
|
40
40
|
export { default as Cover } from './components/organisms/Cover';
|
|
41
41
|
export { default as Tabs } from './components/organisms/Tabs';
|
package/dist/types.d.ts
CHANGED
|
@@ -511,14 +511,12 @@ interface ILogosCard {
|
|
|
511
511
|
|
|
512
512
|
declare const LogosCard: ({ imageElement, title, className, style, ...props }: ILogosCard) => React__default.JSX.Element;
|
|
513
513
|
|
|
514
|
-
interface
|
|
515
|
-
category?: string;
|
|
514
|
+
interface IProductCard extends ICard {
|
|
516
515
|
title?: string;
|
|
517
|
-
|
|
518
|
-
linkElement?: React.ReactElement;
|
|
516
|
+
description?: string | React.ReactElement;
|
|
519
517
|
}
|
|
520
518
|
|
|
521
|
-
declare const
|
|
519
|
+
declare const ProductCard: ({ title, imageElement, description, className, style, ...props }: IProductCard) => React__default.JSX.Element;
|
|
522
520
|
|
|
523
521
|
interface ISlider {
|
|
524
522
|
$responsiveCSS?: string;
|
|
@@ -590,4 +588,4 @@ declare const GlobalStyles: React$1.NamedExoticComponent<styled_components.Execu
|
|
|
590
588
|
|
|
591
589
|
declare function clickOutSideToClose(ref: React.RefObject<HTMLDivElement>, closeFunction: () => void): void;
|
|
592
590
|
|
|
593
|
-
export { Accordion, AccordionItem, BlogCard, Button, CheckRadioField, Chip, CircularSlider, CloseButton, Column, Counter, Cover, Dropdown, DropdownItem, EmptyState, Flex, FormField, GlobalStyles, Heading, Icon, IconBox, IconTitle, ImageWrapper, Loader, LogosCard, Marquee, Modal, OffCanvas, PortalComponent,
|
|
591
|
+
export { Accordion, AccordionItem, BlogCard, Button, CheckRadioField, Chip, CircularSlider, CloseButton, Column, Counter, Cover, Dropdown, DropdownItem, EmptyState, Flex, FormField, GlobalStyles, Heading, Icon, IconBox, IconTitle, ImageWrapper, Loader, LogosCard, Marquee, Modal, OffCanvas, PortalComponent, ProductCard, Quote, RichText, Row, ScrollingNav, Separator, ShareModal, Slider, SocialLinks, Spacer, Tabs, TeamCard, Video, VideoEmbed, clickOutSideToClose, iconsList, variables };
|
package/package.json
CHANGED
|
@@ -63,7 +63,7 @@ export const StyledButton = styled.a<IButtonSC>`
|
|
|
63
63
|
${fontSize('h5')};
|
|
64
64
|
font-weight: 700;
|
|
65
65
|
text-transform:uppercase;
|
|
66
|
-
padding:
|
|
66
|
+
padding: 10px 20px;
|
|
67
67
|
border-radius: 50px;
|
|
68
68
|
|
|
69
69
|
${props.$mode === "light" ? `
|
|
@@ -99,7 +99,7 @@ export const StyledButton = styled.a<IButtonSC>`
|
|
|
99
99
|
color: ${colors.secondary50};
|
|
100
100
|
|
|
101
101
|
&:hover{
|
|
102
|
-
color: ${colors.
|
|
102
|
+
color: ${colors.primary50};
|
|
103
103
|
}
|
|
104
104
|
`}
|
|
105
105
|
`;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { StyledProductCard, StyledProductCardWrapper } from './ProductCard.theme'
|
|
2
|
+
|
|
3
|
+
import Heading from '@/components/atoms/Heading'
|
|
4
|
+
import { IProductCard } from './ProductCard.interface'
|
|
5
|
+
import ImageWrapper from '@/components/atoms/ImageWrapper'
|
|
6
|
+
import React from 'react'
|
|
7
|
+
import RichText from '@/components/atoms/RichText/RichText.component'
|
|
8
|
+
|
|
9
|
+
const ProductCard = ({
|
|
10
|
+
title,
|
|
11
|
+
imageElement,
|
|
12
|
+
description,
|
|
13
|
+
className,
|
|
14
|
+
style,
|
|
15
|
+
...props
|
|
16
|
+
}: IProductCard) => {
|
|
17
|
+
|
|
18
|
+
return (
|
|
19
|
+
<StyledProductCard className={className} style={style}>
|
|
20
|
+
<StyledProductCardWrapper>
|
|
21
|
+
<Heading tag={'h3'} size={'h3'} className={'fw-bold'}>
|
|
22
|
+
{title}
|
|
23
|
+
</Heading>
|
|
24
|
+
{imageElement}
|
|
25
|
+
</StyledProductCardWrapper>
|
|
26
|
+
{description && <RichText tag='p' className='color-secondary50 mt-4'>{description}</RichText>}
|
|
27
|
+
</StyledProductCard>
|
|
28
|
+
)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export default ProductCard
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react'
|
|
2
|
+
|
|
3
|
+
import { IProductCard } from './ProductCard.interface'
|
|
4
|
+
import ProductCard from './ProductCard.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/ProductCard',
|
|
10
|
+
component: ProductCard,
|
|
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<IProductCard> = {
|
|
26
|
+
render: args => <ProductCard {...args} style={{ maxWidth: '320px' }}></ProductCard>,
|
|
27
|
+
args: {
|
|
28
|
+
title: 'Lorem ipsum',
|
|
29
|
+
imageElement: image,
|
|
30
|
+
description:
|
|
31
|
+
'Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique. Cras vel facilisis tellus, id iaculis risus. Vestibulum non mollis ipsum. Vestibulum faucibus nisl sit amet magna interdum tristique.',
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { colors, radius } from '@/styles/variables';
|
|
2
|
+
import styled, { css } from 'styled-components';
|
|
3
|
+
|
|
4
|
+
import { IProductCard } from './ProductCard.interface';
|
|
5
|
+
|
|
6
|
+
export const StyledProductCard = styled.div <IProductCard>`
|
|
7
|
+
text-align:center;
|
|
8
|
+
|
|
9
|
+
& picture{
|
|
10
|
+
width: 100%;
|
|
11
|
+
max-width: 10rem;
|
|
12
|
+
|
|
13
|
+
&img{
|
|
14
|
+
object-fit: contain;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
`;
|
|
18
|
+
|
|
19
|
+
export const StyledProductCardWrapper = styled.div<IProductCard>`
|
|
20
|
+
display:flex;
|
|
21
|
+
flex-flow:column;
|
|
22
|
+
align-items: center;
|
|
23
|
+
gap: 1rem;
|
|
24
|
+
background-color: ${colors.primary50};
|
|
25
|
+
padding: 2rem;
|
|
26
|
+
border-radius: ${radius.md};
|
|
27
|
+
`;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from "./ProductCard.component";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useEffect, useRef } from 'react'
|
|
1
|
+
import React, { useEffect, useRef, useState } from 'react'
|
|
2
2
|
import {
|
|
3
3
|
StyledCircularSlider,
|
|
4
4
|
StyledCircularSliderContent,
|
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
StyledCircularSliderWrapper
|
|
8
8
|
} from './CircularSlider.theme'
|
|
9
9
|
|
|
10
|
+
import Heading from '@/components/atoms/Heading/Heading.component';
|
|
10
11
|
import { ICircularSlider } from './CircularSlider.interface'
|
|
11
12
|
|
|
12
13
|
const CircularSlider = ({
|
|
@@ -15,14 +16,28 @@ const CircularSlider = ({
|
|
|
15
16
|
className,
|
|
16
17
|
}: ICircularSlider) => {
|
|
17
18
|
|
|
19
|
+
const [slideContent, setSlideContent] = useState({
|
|
20
|
+
name: '',
|
|
21
|
+
role: '',
|
|
22
|
+
});
|
|
18
23
|
const slider = useRef<HTMLDivElement>();
|
|
19
24
|
const wrapper = useRef<HTMLDivElement>();
|
|
20
25
|
const slidesHolder = useRef<HTMLDivElement>();
|
|
26
|
+
const contentHolder = useRef<HTMLDivElement>();
|
|
21
27
|
|
|
22
|
-
const sliderSize =
|
|
23
|
-
const slideSize = 15
|
|
28
|
+
const sliderSize = 1;
|
|
29
|
+
const slideSize = 0.15;
|
|
24
30
|
|
|
25
31
|
|
|
32
|
+
//force 12 items
|
|
33
|
+
if (content && content.length < 12) {
|
|
34
|
+
let counter = 0;
|
|
35
|
+
for (let i = content.length; i <= 12; i++) {
|
|
36
|
+
content[i] = content[counter];
|
|
37
|
+
counter++;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
26
41
|
useEffect(() => {
|
|
27
42
|
if (!slidesHolder.current) return //bail out;
|
|
28
43
|
|
|
@@ -34,8 +49,8 @@ const CircularSlider = ({
|
|
|
34
49
|
|
|
35
50
|
let currentAngle = -90;
|
|
36
51
|
|
|
37
|
-
|
|
38
|
-
const stepAngle = 0.52;
|
|
52
|
+
const stepAngle = 2 * Math.PI / slidesHolder?.current?.children.length;
|
|
53
|
+
// const stepAngle = 0.52;
|
|
39
54
|
|
|
40
55
|
let currentSlide = 0;
|
|
41
56
|
|
|
@@ -81,11 +96,19 @@ const CircularSlider = ({
|
|
|
81
96
|
}
|
|
82
97
|
|
|
83
98
|
const addStyle = () => {
|
|
84
|
-
|
|
99
|
+
setTimeout(() => {
|
|
100
|
+
contentHolder?.current?.classList.add('active');
|
|
101
|
+
}, 400);
|
|
102
|
+
|
|
103
|
+
content && setSlideContent(content[currentSlide] as any)
|
|
104
|
+
slides[currentSlide].classList.add('active');
|
|
85
105
|
slides[currentSlide].style.height = slides[currentSlide].style.width = slidesSize + 20 + 'px';
|
|
86
106
|
};
|
|
87
107
|
const removeStyle = () => {
|
|
88
|
-
|
|
108
|
+
contentHolder?.current?.classList.remove('active');
|
|
109
|
+
|
|
110
|
+
content && setSlideContent(content[currentSlide] as any)
|
|
111
|
+
slides[currentSlide].classList.remove('active');
|
|
89
112
|
slides[currentSlide].style.height = slides[currentSlide].style.width = slidesSize + 'px';
|
|
90
113
|
};
|
|
91
114
|
|
|
@@ -131,18 +154,17 @@ const CircularSlider = ({
|
|
|
131
154
|
}
|
|
132
155
|
}, [])
|
|
133
156
|
|
|
157
|
+
if (!content) return <></>
|
|
134
158
|
|
|
135
159
|
return (
|
|
136
|
-
<StyledCircularSlider ref={slider as any}>
|
|
160
|
+
<StyledCircularSlider ref={slider as any} className={className} style={style}>
|
|
161
|
+
<StyledCircularSliderContent ref={contentHolder as any}>
|
|
162
|
+
<div>
|
|
163
|
+
<Heading tag="span" size="h2" className='color-primary50 fw-bold'>{slideContent?.name}</Heading>
|
|
164
|
+
<Heading tag="span" size="h4" className='color-secondary50'>{slideContent?.role}</Heading>
|
|
165
|
+
</div>
|
|
166
|
+
</StyledCircularSliderContent>
|
|
137
167
|
<StyledCircularSliderWrapper ref={wrapper as any}>
|
|
138
|
-
{/* <div className="controls">
|
|
139
|
-
<div className="controls__left">
|
|
140
|
-
<div className="icon-wrapper">left</div>
|
|
141
|
-
</div>
|
|
142
|
-
<div className="controls__right">
|
|
143
|
-
<div className="icon-wrapper">right</div>
|
|
144
|
-
</div>
|
|
145
|
-
</div> */}
|
|
146
168
|
<StyledCircularSliderSlides ref={slidesHolder as any}>
|
|
147
169
|
{content?.map((item, index) => {
|
|
148
170
|
return (
|
|
@@ -150,9 +172,6 @@ const CircularSlider = ({
|
|
|
150
172
|
)
|
|
151
173
|
})}
|
|
152
174
|
</StyledCircularSliderSlides>
|
|
153
|
-
<StyledCircularSliderContent>
|
|
154
|
-
|
|
155
|
-
</StyledCircularSliderContent>
|
|
156
175
|
</StyledCircularSliderWrapper>
|
|
157
176
|
</StyledCircularSlider>
|
|
158
177
|
|
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
import type { Meta, StoryObj } from '@storybook/react'
|
|
2
2
|
|
|
3
|
-
import Button from '../../atoms/Button/Button.component'
|
|
4
3
|
import CircularSlider from './CircularSlider.component'
|
|
5
|
-
import Flex from '../../atoms/Flex/Flex.component'
|
|
6
4
|
import { ICircularSlider } from './CircularSlider.interface'
|
|
7
5
|
import React from 'react'
|
|
8
|
-
import RichText from '../../atoms/RichText/RichText.component'
|
|
9
|
-
import Video from '../../atoms/Video/Video.component'
|
|
10
6
|
|
|
11
7
|
// More on default export: https://storybook.js.org/docs/react/writing-stories/introduction#default-export
|
|
12
8
|
export default {
|
|
@@ -35,37 +31,37 @@ export const Simple: StoryObj<ICircularSlider> = {
|
|
|
35
31
|
args: {
|
|
36
32
|
content: [
|
|
37
33
|
{
|
|
38
|
-
name: "My name",
|
|
34
|
+
name: "My name 1",
|
|
39
35
|
role: "My role",
|
|
40
36
|
img: image
|
|
41
37
|
},
|
|
42
38
|
{
|
|
43
|
-
name: "My name",
|
|
39
|
+
name: "My name 2",
|
|
44
40
|
role: "My role",
|
|
45
41
|
img: image
|
|
46
42
|
},
|
|
47
43
|
{
|
|
48
|
-
name: "My name",
|
|
44
|
+
name: "My name 3",
|
|
49
45
|
role: "My role",
|
|
50
46
|
img: image
|
|
51
47
|
},
|
|
52
48
|
{
|
|
53
|
-
name: "My name",
|
|
49
|
+
name: "My name 4",
|
|
54
50
|
role: "My role",
|
|
55
51
|
img: image
|
|
56
52
|
},
|
|
57
53
|
{
|
|
58
|
-
name: "My name",
|
|
54
|
+
name: "My name 5",
|
|
59
55
|
role: "My role",
|
|
60
56
|
img: image
|
|
61
57
|
},
|
|
62
58
|
{
|
|
63
|
-
name: "My name",
|
|
59
|
+
name: "My name 6",
|
|
64
60
|
role: "My role",
|
|
65
61
|
img: image
|
|
66
62
|
},
|
|
67
63
|
{
|
|
68
|
-
name: "My name",
|
|
64
|
+
name: "My name 7",
|
|
69
65
|
role: "My role",
|
|
70
66
|
img: image
|
|
71
67
|
}
|
|
@@ -1,31 +1,22 @@
|
|
|
1
1
|
import { ICircularSlider } from './CircularSlider.interface';
|
|
2
|
-
import { StyledVideo } from '../../atoms/Video/Video.theme';
|
|
3
2
|
import styled from 'styled-components';
|
|
4
3
|
|
|
5
4
|
export const StyledCircularSlider = styled.div<ICircularSlider>`
|
|
6
5
|
width: 100%;
|
|
7
|
-
min-height: 100vh;
|
|
8
6
|
overflow: hidden;
|
|
9
|
-
display: flex;
|
|
10
|
-
justify-content: center;
|
|
11
|
-
align-items: flex-end;
|
|
12
|
-
|
|
13
7
|
`;
|
|
14
8
|
|
|
15
9
|
export const StyledCircularSliderWrapper = styled.div<ICircularSlider>`
|
|
16
|
-
|
|
17
|
-
margin-right: 0;
|
|
10
|
+
position: relative;
|
|
18
11
|
display: flex;
|
|
19
12
|
justify-content: center;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
transform:
|
|
13
|
+
margin: 0 auto;
|
|
14
|
+
margin-right: 0;
|
|
15
|
+
top: 50%;
|
|
16
|
+
transform: translate(65%, -50%);
|
|
24
17
|
`;
|
|
25
18
|
|
|
26
19
|
export const StyledCircularSliderSlides = styled.div<ICircularSlider>`
|
|
27
|
-
border-radius: 50%;
|
|
28
|
-
border: 2px solid #8EB8E5;
|
|
29
20
|
transform-origin: center;
|
|
30
21
|
display: flex;
|
|
31
22
|
justify-content: center;
|
|
@@ -35,11 +26,8 @@ export const StyledCircularSliderSlides = styled.div<ICircularSlider>`
|
|
|
35
26
|
transform: rotate(-90deg);
|
|
36
27
|
`;
|
|
37
28
|
export const StyledCircularSliderSlide = styled.div<ICircularSlider>`
|
|
38
|
-
border-radius: 50%;
|
|
39
|
-
border: 2px solid #7C99B4;
|
|
40
29
|
position: absolute;
|
|
41
30
|
transform-origin: center;
|
|
42
|
-
background-color: #222;
|
|
43
31
|
transition: .3s linear all;
|
|
44
32
|
filter: brightness(70%);
|
|
45
33
|
|
|
@@ -47,12 +35,26 @@ export const StyledCircularSliderSlide = styled.div<ICircularSlider>`
|
|
|
47
35
|
pointer-events:none;
|
|
48
36
|
}
|
|
49
37
|
|
|
50
|
-
&.
|
|
38
|
+
&.active{
|
|
51
39
|
filter: brightness(100%);
|
|
52
40
|
}
|
|
53
41
|
`;
|
|
54
42
|
|
|
55
43
|
export const StyledCircularSliderContent = styled.div<ICircularSlider>`
|
|
44
|
+
position: absolute;
|
|
45
|
+
top: 50%;
|
|
46
|
+
left:33.333%;
|
|
56
47
|
|
|
48
|
+
width: 25%;
|
|
49
|
+
text-align: center;
|
|
50
|
+
|
|
51
|
+
opacity: 0;
|
|
52
|
+
transform: translateY(5%);
|
|
53
|
+
transition: all 0.3s ease;
|
|
54
|
+
|
|
55
|
+
&.active{
|
|
56
|
+
opacity: 1;
|
|
57
|
+
transform: translateY(-50%);
|
|
58
|
+
}
|
|
57
59
|
`;
|
|
58
60
|
|
|
@@ -22,7 +22,7 @@ export const StyledTabsLinks = styled.a<ITabsItem>`
|
|
|
22
22
|
align-items: center;
|
|
23
23
|
justify-content: space-between;
|
|
24
24
|
width: 100%;
|
|
25
|
-
color: ${colors.
|
|
25
|
+
color: ${colors.secondary50};
|
|
26
26
|
background-color: ${colors.third10};
|
|
27
27
|
padding: 8px 18px;
|
|
28
28
|
border-radius: 50px;
|
|
@@ -71,6 +71,7 @@ export const StyledTabs = styled.div<ITabs>`
|
|
|
71
71
|
|
|
72
72
|
${StyledTabsMenu}{
|
|
73
73
|
flex-flow: column;
|
|
74
|
+
align-items: stretch;
|
|
74
75
|
justify-content: flex-start;
|
|
75
76
|
}
|
|
76
77
|
}
|
package/src/index.ts
CHANGED
|
@@ -41,7 +41,7 @@ export { default as IconTitle } from './components/molecules/IconTitle'
|
|
|
41
41
|
export { default as BlogCard } from './components/molecules/BlogCard'
|
|
42
42
|
export { default as TeamCard } from './components/molecules/TeamCard'
|
|
43
43
|
export { default as LogosCard } from './components/molecules/LogosCard'
|
|
44
|
-
export { default as
|
|
44
|
+
export { default as ProductCard } from './components/molecules/ProductCard'
|
|
45
45
|
// //organisms
|
|
46
46
|
export { default as Slider } from './components/organisms/Slider'
|
|
47
47
|
export { default as Cover } from './components/organisms/Cover'
|
package/src/styles/utilities.ts
CHANGED
|
@@ -68,6 +68,7 @@ export const utilities: {
|
|
|
68
68
|
values: {
|
|
69
69
|
relative: "relative",
|
|
70
70
|
absolute: "absolute",
|
|
71
|
+
sticky: "sticky",
|
|
71
72
|
fixed: "fixed"
|
|
72
73
|
},
|
|
73
74
|
},
|
|
@@ -210,6 +211,12 @@ export const utilities: {
|
|
|
210
211
|
class: "ms",
|
|
211
212
|
values: spacers
|
|
212
213
|
},
|
|
214
|
+
"negative-margin-start": {
|
|
215
|
+
responsive: true,
|
|
216
|
+
property: "margin-left",
|
|
217
|
+
class: "ms-neg",
|
|
218
|
+
values: spacesNegative
|
|
219
|
+
},
|
|
213
220
|
"padding": {
|
|
214
221
|
responsive: true,
|
|
215
222
|
property: "padding",
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
import { IProjectCard } from './ProjectCard.interface';
|
|
3
|
-
export declare const StyledProjectCard: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("../Card/Card.interface").ICard, IProjectCard>> & string & Omit<({ variant, imageElement, children, className, style, ...props }: import("../Card/Card.interface").ICard) => import("react").JSX.Element, keyof import("react").Component<any, {}, any>>;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default } from "./ProjectCard.component";
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
import { IProjectCard } from './ProjectCard.interface';
|
|
3
|
-
export declare const StyledProjectCard: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("../Card/Card.interface").ICard, IProjectCard>> & string & Omit<({ variant, imageElement, children, className, style, ...props }: import("../Card/Card.interface").ICard) => import("react").JSX.Element, keyof import("react").Component<any, {}, any>>;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default } from "./ProjectCard.component";
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import Button from '@/components/atoms/Button/Button.component'
|
|
2
|
-
import Chip from '@/components/atoms/Chip/Chip.component'
|
|
3
|
-
import Heading from '@/components/atoms/Heading'
|
|
4
|
-
import { IProjectCard } from './ProjectCard.interface'
|
|
5
|
-
import Icon from '@/components/atoms/Icon/Icon.component'
|
|
6
|
-
import ImageWrapper from '@/components/atoms/ImageWrapper'
|
|
7
|
-
import React from 'react'
|
|
8
|
-
import Separator from '@/components/atoms/Separator/Separator.component'
|
|
9
|
-
import { StyledProjectCard } from './ProjectCard.theme'
|
|
10
|
-
|
|
11
|
-
const ProjectCard = ({
|
|
12
|
-
variant,
|
|
13
|
-
category,
|
|
14
|
-
title,
|
|
15
|
-
imageElement,
|
|
16
|
-
linkElement,
|
|
17
|
-
buttonLabel,
|
|
18
|
-
...props
|
|
19
|
-
}: IProjectCard) => {
|
|
20
|
-
return (
|
|
21
|
-
<StyledProjectCard
|
|
22
|
-
variant={variant}
|
|
23
|
-
imageElement={
|
|
24
|
-
<ImageWrapper aspectRatioHeight={variant === 'featured' ? 40 : 82}>
|
|
25
|
-
{imageElement}
|
|
26
|
-
</ImageWrapper>
|
|
27
|
-
}
|
|
28
|
-
{...props}
|
|
29
|
-
>
|
|
30
|
-
<div className="w-100">
|
|
31
|
-
<div className="d-flex align-items-center justify-content-between mb-4">
|
|
32
|
-
<Heading tag={'h3'} size={'h5'} className={'textEllipsis'}>
|
|
33
|
-
{title}
|
|
34
|
-
</Heading>
|
|
35
|
-
<Icon icon="icon-forward-arrow"></Icon>
|
|
36
|
-
</div>
|
|
37
|
-
|
|
38
|
-
<Separator color="#fff" height="1px" />
|
|
39
|
-
{linkElement}
|
|
40
|
-
</div>
|
|
41
|
-
</StyledProjectCard>
|
|
42
|
-
)
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
export default ProjectCard
|