@hellobetterdigitalnz/selwynui 0.0.1-5 → 0.0.1-7
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/package.json +2 -1
- package/src/Components/DataDisplay/DetailsCard/DetailsCard.stories.tsx +7 -3
- package/src/Components/DataDisplay/DetailsCard/DetailsCard.tsx +10 -38
- package/src/Components/DataDisplay/DetailsCard/DetailsCardProps.tsx +7 -1
- package/src/Components/DataDisplay/DetailsCard/detailsCard.module.scss +10 -10
- package/src/Components/DataDisplay/ImageContent/ImageContent.stories.tsx +33 -2
- package/src/Components/DataDisplay/ImageContent/ImageContent.tsx +62 -30
- package/src/Components/DataDisplay/ImageContent/ImageContentProps.tsx +2 -1
- package/src/Components/DataDisplay/ImageContent/imageContent.module.scss +116 -56
- package/src/Components/DataDisplay/Pathway/Pathway.stories.tsx +50 -13
- package/src/Components/DataDisplay/Pathway/Pathway.tsx +15 -4
- package/src/Components/DataDisplay/index.ts +0 -1
- package/src/Components/DataDisplay/slider.scss +2 -0
- package/src/Components/Layout/Footer/Footer.stories.tsx +1 -1
- package/src/Components/Layout/Header/Header.stories.tsx +34 -7
- package/src/Components/Layout/Header/HeaderRightItem.tsx +2 -2
- package/src/Components/Layout/Header/MobileNavigation/MobileNavigation.tsx +25 -0
- package/src/Components/Layout/Header/MobileNavigation/MobileNavigationItem.tsx +17 -0
- package/src/Components/Layout/Header/MobileNavigation/MobileNavigationItemProps.tsx +5 -0
- package/src/Components/Layout/Header/MobileNavigation/MobileNavigationProps.tsx +8 -0
- package/src/Components/Layout/Header/MobileNavigation/MobileSubNavigation/MobileSubNavigation.tsx +21 -0
- package/src/Components/Layout/Header/MobileNavigation/MobileSubNavigation/MobileSubNavigationItem.tsx +17 -0
- package/src/Components/Layout/Header/MobileNavigation/MobileSubNavigation/MobileSubNavigationItemProps.tsx +5 -0
- package/src/Components/Layout/Header/MobileNavigation/MobileSubNavigation/MobileSubNavigationProps.tsx +9 -0
- package/src/Components/Layout/Header/MobileNavigation/MobileWhatuOverlay.tsx +18 -0
- package/src/Components/Layout/Header/MobileNavigation/mobileNavigation.module.scss +62 -0
- package/src/Components/Layout/Header/header.module.scss +16 -2
- package/src/Components/Layout/Header/header.scss +15 -0
- package/src/Components/Layout/HeroBanner/HeroBanner.tsx +10 -0
- package/src/Components/Layout/HeroBanner/HeroBannerProps.tsx +1 -1
- package/src/Components/Layout/HeroBanner/heroBanner.module.scss +48 -13
- package/src/Components/Layout/index.ts +0 -1
- package/src/Components/Shared/Container/container.module.scss +3 -3
- package/src/Components/index.ts +5 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hellobetterdigitalnz/selwynui",
|
|
3
|
-
"version": "0.0.1-
|
|
3
|
+
"version": "0.0.1-7",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.cjs.js",
|
|
6
6
|
"module": "dist/index.es.js",
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
"react-dom": "^19.2.0",
|
|
30
30
|
"react-icons": "^5.5.0",
|
|
31
31
|
"sass": "^1.94.1",
|
|
32
|
+
"slick-carousel": "^1.8.1",
|
|
32
33
|
"vite-plugin-dts": "^4.5.4"
|
|
33
34
|
},
|
|
34
35
|
"peerDependencies": {
|
|
@@ -13,11 +13,15 @@ type Story = StoryObj<typeof DetailsCard>
|
|
|
13
13
|
|
|
14
14
|
export const live: Story = {
|
|
15
15
|
args: {
|
|
16
|
-
|
|
17
|
-
title: "This is a card title that is quite long and probably wraps over a few lines",
|
|
16
|
+
title: "Listing Name",
|
|
18
17
|
image:"./img/card-one.png",
|
|
19
|
-
link:
|
|
18
|
+
link: {
|
|
19
|
+
title: 'Learn more',
|
|
20
|
+
href: '/',
|
|
21
|
+
target: '',
|
|
22
|
+
},
|
|
20
23
|
variation: 'short'
|
|
24
|
+
|
|
21
25
|
},
|
|
22
26
|
};
|
|
23
27
|
|
|
@@ -11,11 +11,14 @@ const DetailsCard = (props: DetailsCardProps) => {
|
|
|
11
11
|
image = '',
|
|
12
12
|
variation= 'long',
|
|
13
13
|
link = '',
|
|
14
|
-
category = 'all'
|
|
14
|
+
category = 'all',
|
|
15
|
+
pillar = 'visit'
|
|
15
16
|
} = props;
|
|
16
17
|
|
|
17
18
|
const classes = [
|
|
18
19
|
styles.detailsCard,
|
|
20
|
+
`${pillar}--light`,
|
|
21
|
+
"visit",
|
|
19
22
|
"detailsCard",
|
|
20
23
|
];
|
|
21
24
|
|
|
@@ -24,11 +27,10 @@ const DetailsCard = (props: DetailsCardProps) => {
|
|
|
24
27
|
}
|
|
25
28
|
|
|
26
29
|
|
|
27
|
-
return
|
|
28
|
-
|
|
29
|
-
<a href={link} className={`${styles.cardWrap} ${styles.detailsCardWithLink}`}>
|
|
30
|
+
return <div className={cx(classes)} id={category}>
|
|
31
|
+
<a href={link.href} target={link.target} rel={link.rel} className={`${styles.cardWrap} ${styles.detailsCardWithLink}`}>
|
|
30
32
|
{image && <div className={styles.cardImage}>
|
|
31
|
-
<img src={image} />
|
|
33
|
+
<img src={image} alt={title} />
|
|
32
34
|
</div>}
|
|
33
35
|
|
|
34
36
|
<div className={styles.cardContent}>
|
|
@@ -43,45 +45,15 @@ const DetailsCard = (props: DetailsCardProps) => {
|
|
|
43
45
|
{description}
|
|
44
46
|
</div>}
|
|
45
47
|
</div>
|
|
46
|
-
{link && <div className={styles.cardLink}>
|
|
47
|
-
|
|
48
|
+
{link.title && <div className={styles.cardLink}>
|
|
49
|
+
{link.title}
|
|
48
50
|
<span>
|
|
49
51
|
<ArrowRight />
|
|
50
52
|
</span>
|
|
51
53
|
</div>}
|
|
52
54
|
</div>
|
|
53
55
|
</a>
|
|
54
|
-
</div>
|
|
55
|
-
<div className={styles.cardWrap}>
|
|
56
|
-
{image && <div className={styles.cardImage}>
|
|
57
|
-
<img src={image} />
|
|
58
|
-
</div>}
|
|
59
|
-
|
|
60
|
-
<div className={styles.cardContent}>
|
|
61
|
-
<div className={styles.cardBody}>
|
|
62
|
-
{date && <div className={styles.cardDate}>
|
|
63
|
-
<p>{date}</p>
|
|
64
|
-
</div>}
|
|
65
|
-
{title && <div className={`${styles.cardTitle} typography`}>
|
|
66
|
-
<h6>{title}</h6>
|
|
67
|
-
</div>}
|
|
68
|
-
{description && <div className={`${styles.cardDesc} typography`}>
|
|
69
|
-
{description}
|
|
70
|
-
</div>}
|
|
71
|
-
</div>
|
|
72
|
-
{link && <div className={styles.cardLink}>
|
|
73
|
-
<a href={link}>
|
|
74
|
-
Learn more
|
|
75
|
-
<span>
|
|
76
|
-
<ArrowRight />
|
|
77
|
-
</span>
|
|
78
|
-
</a>
|
|
79
|
-
</div>}
|
|
80
|
-
</div>
|
|
81
|
-
</div>
|
|
82
|
-
</div>}
|
|
83
|
-
|
|
84
|
-
</>
|
|
56
|
+
</div>
|
|
85
57
|
}
|
|
86
58
|
|
|
87
59
|
export default DetailsCard;
|
|
@@ -3,7 +3,13 @@ interface DetailsCardProps {
|
|
|
3
3
|
title?:string,
|
|
4
4
|
description?:string,
|
|
5
5
|
date?: string,
|
|
6
|
-
link?:
|
|
6
|
+
link?: {
|
|
7
|
+
title?: string;
|
|
8
|
+
href?: string;
|
|
9
|
+
target?: "_blank" | "_self" | "_parent" | "_top";
|
|
10
|
+
rel?: string;
|
|
11
|
+
};
|
|
12
|
+
pillar?: 'visit' | 'live' | 'business' | 'participate' | 'taste'
|
|
7
13
|
image?:string,
|
|
8
14
|
variation?: "long" | "short";
|
|
9
15
|
category?: 'all' | 'adventure' | 'ski' | 'nature',
|
|
@@ -9,16 +9,20 @@
|
|
|
9
9
|
min-height: 274px;
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
+
&:hover {
|
|
13
|
+
background-color: var(--pathway-card-hover-bg);
|
|
14
|
+
border:1px solid var(--pathway-card-hover-text);
|
|
15
|
+
|
|
16
|
+
.cardContent {
|
|
17
|
+
color: var(--pathway-card-hover-text);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
}
|
|
21
|
+
|
|
12
22
|
}
|
|
13
23
|
|
|
14
24
|
.detailsCardWithLink {
|
|
15
25
|
color: var(--pathway-card-text);
|
|
16
|
-
transition: all ease 0.3s;
|
|
17
|
-
|
|
18
|
-
&:hover {
|
|
19
|
-
background-color: var(--pathway-card-hover-bg);
|
|
20
|
-
color: var(--pathway-card-hover-text);
|
|
21
|
-
}
|
|
22
26
|
}
|
|
23
27
|
|
|
24
28
|
.cardImage {
|
|
@@ -58,10 +62,6 @@
|
|
|
58
62
|
.detailsCardShort & {
|
|
59
63
|
min-height: 274px;
|
|
60
64
|
}
|
|
61
|
-
|
|
62
|
-
&:hover {
|
|
63
|
-
border-radius: 12px;
|
|
64
|
-
}
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
.cardContent {
|
|
@@ -78,6 +78,33 @@ const ImageContentMaskedTemplate: Story = {
|
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
+
const ImageContentFluidTemplate : Story = {
|
|
82
|
+
render: () => {
|
|
83
|
+
|
|
84
|
+
return (
|
|
85
|
+
<>
|
|
86
|
+
<ElementHolder
|
|
87
|
+
paddingTop={'none'}
|
|
88
|
+
paddingBottom={'none'}
|
|
89
|
+
pillar={'taste'}
|
|
90
|
+
level={'primary'}
|
|
91
|
+
>
|
|
92
|
+
<ImageContent
|
|
93
|
+
rendition={'fluid'}
|
|
94
|
+
pillar={'live'}
|
|
95
|
+
imageSrc={'https://images.pexels.com/photos/1563356/pexels-photo-1563356.jpeg'}
|
|
96
|
+
title={'Lorem'}
|
|
97
|
+
boldTitle={'ipsum dolor'}
|
|
98
|
+
displayFullLogo={false}
|
|
99
|
+
content={'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat'}
|
|
100
|
+
action={<Button style={'solid'} pillar={'taste'} level={"secondary"} label={'LOREM IPSUM'}/>}
|
|
101
|
+
/>
|
|
102
|
+
</ElementHolder>
|
|
103
|
+
</>
|
|
104
|
+
)
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
81
108
|
const ImageContentFullTemplate: Story = {
|
|
82
109
|
render: () => {
|
|
83
110
|
|
|
@@ -111,8 +138,8 @@ const ImageContentFullTemplate: Story = {
|
|
|
111
138
|
label:'What are you doing'
|
|
112
139
|
}
|
|
113
140
|
]}
|
|
114
|
-
imageBorder={'top'}
|
|
115
|
-
alignment={'
|
|
141
|
+
imageBorder={'top-right'}
|
|
142
|
+
alignment={'right'}
|
|
116
143
|
imageSrc={'https://images.pexels.com/photos/1563356/pexels-photo-1563356.jpeg'}
|
|
117
144
|
/>
|
|
118
145
|
</ElementHolder>
|
|
@@ -162,4 +189,8 @@ export const ImageContentMaskedComponent = {
|
|
|
162
189
|
|
|
163
190
|
export const ImageContentFullTemplateComponent ={
|
|
164
191
|
...ImageContentFullTemplate
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
export const ImageContentFluidTemplateComponent ={
|
|
195
|
+
...ImageContentFluidTemplate
|
|
165
196
|
}
|
|
@@ -10,7 +10,6 @@ const ImageContent = (props: ImageContentProps) => {
|
|
|
10
10
|
const {
|
|
11
11
|
pillar,
|
|
12
12
|
displayFullLogo = false,
|
|
13
|
-
displayIconWithTitle = false,
|
|
14
13
|
title,
|
|
15
14
|
boldTitle,
|
|
16
15
|
content,
|
|
@@ -18,34 +17,33 @@ const ImageContent = (props: ImageContentProps) => {
|
|
|
18
17
|
images,
|
|
19
18
|
imageSrc,
|
|
20
19
|
alignment = "right",
|
|
21
|
-
imageBorder = "
|
|
20
|
+
imageBorder = "top-right",
|
|
22
21
|
rendition = "contained",
|
|
23
22
|
list,
|
|
24
23
|
} = props;
|
|
25
24
|
|
|
25
|
+
const pillarLogo = (
|
|
26
|
+
<div className={`${styles.pillarlogo} ${!displayFullLogo ? styles.pillarlogoFull : ''}`}>
|
|
27
|
+
<PillarLogo brandPillar={pillar} brandFullLogo={displayFullLogo}/>
|
|
28
|
+
{!displayFullLogo && <p>
|
|
29
|
+
{pillar === "main" && "Visit"}
|
|
30
|
+
{pillar === "live" && "Live"}
|
|
31
|
+
{pillar === "visit" && "Vist"}
|
|
32
|
+
{pillar === "taste" && "Taste"}
|
|
33
|
+
{pillar === "business" && "Business"}
|
|
34
|
+
{pillar === "participate" && "Participate"}
|
|
35
|
+
</p>}
|
|
36
|
+
</div>
|
|
37
|
+
)
|
|
38
|
+
|
|
26
39
|
|
|
27
40
|
if (rendition === 'full'){
|
|
28
|
-
return <div className={`${styles.imageContent} ${styles.imageContentFull}
|
|
41
|
+
return <div className={`${styles.imageContent} ${styles.imageContentFull} ${styles[imageBorder]} `}>
|
|
29
42
|
<Container>
|
|
30
43
|
<div className={styles.imageContentWrapper}>
|
|
31
|
-
<div className={styles.imageWrapper}>
|
|
32
|
-
<div className={styles.imageHolder}>
|
|
33
|
-
{imageSrc && <img src={imageSrc}/>}
|
|
34
|
-
</div>
|
|
35
|
-
</div>
|
|
36
44
|
<div className={styles.content}>
|
|
37
45
|
<div className={styles.contentWrapper}>
|
|
38
|
-
|
|
39
|
-
<PillarLogo brandPillar={pillar} brandFullLogo={displayFullLogo}/>
|
|
40
|
-
{!displayFullLogo && <p>
|
|
41
|
-
{pillar === "main" && "Visit"}
|
|
42
|
-
{pillar === "live" && "Live"}
|
|
43
|
-
{pillar === "visit" && "Vist"}
|
|
44
|
-
{pillar === "taste" && "Taste"}
|
|
45
|
-
{pillar === "business" && "Business"}
|
|
46
|
-
{pillar === "participate" && "Participate"}
|
|
47
|
-
</p>}
|
|
48
|
-
</div>
|
|
46
|
+
{pillarLogo}
|
|
49
47
|
<div className={styles.title}>
|
|
50
48
|
<h3>
|
|
51
49
|
{title}
|
|
@@ -73,6 +71,11 @@ const ImageContent = (props: ImageContentProps) => {
|
|
|
73
71
|
</div>}
|
|
74
72
|
</div>
|
|
75
73
|
</div>
|
|
74
|
+
<div className={styles.imageWrapper}>
|
|
75
|
+
<div className={styles.imageHolder}>
|
|
76
|
+
{imageSrc && <img src={imageSrc}/>}
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
76
79
|
</div>
|
|
77
80
|
</Container>
|
|
78
81
|
<div className={styles.svgBackgroundPillar}>
|
|
@@ -81,6 +84,45 @@ const ImageContent = (props: ImageContentProps) => {
|
|
|
81
84
|
</div>
|
|
82
85
|
}
|
|
83
86
|
|
|
87
|
+
if(rendition === "fluid"){
|
|
88
|
+
return <div className={`${styles.imageContent} ${styles.imageContentFluid} ${styles[alignment]}`}>
|
|
89
|
+
<Container>
|
|
90
|
+
<div className={styles.imageContentWrapper}>
|
|
91
|
+
<div className={styles.imageWrapper}>
|
|
92
|
+
<div className={styles.imageHolder}>
|
|
93
|
+
{imageSrc && <img src={imageSrc}/>}
|
|
94
|
+
<div className={styles.clipPath}>
|
|
95
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="362" height="725" viewBox="0 0 362 725" fill="none">
|
|
96
|
+
<path d="M0 0C0 296.003 141.877 559.012 361.463 725H0V0Z" fill="currentColor"/>
|
|
97
|
+
</svg>
|
|
98
|
+
</div>
|
|
99
|
+
</div>
|
|
100
|
+
</div>
|
|
101
|
+
<div className={styles.content}>
|
|
102
|
+
<div className={styles.contentWrapper}>
|
|
103
|
+
{pillarLogo}
|
|
104
|
+
<div className={styles.title}>
|
|
105
|
+
<h3>
|
|
106
|
+
{title}
|
|
107
|
+
{boldTitle && (<>
|
|
108
|
+
<br/>
|
|
109
|
+
<span>{boldTitle}</span>
|
|
110
|
+
</>)}
|
|
111
|
+
</h3>
|
|
112
|
+
</div>
|
|
113
|
+
<div className={styles.desc}>
|
|
114
|
+
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
|
|
115
|
+
</div>
|
|
116
|
+
{action && <div className={styles.action}>
|
|
117
|
+
{action}
|
|
118
|
+
</div>}
|
|
119
|
+
</div>
|
|
120
|
+
</div>
|
|
121
|
+
</div>
|
|
122
|
+
</Container>
|
|
123
|
+
</div>
|
|
124
|
+
}
|
|
125
|
+
|
|
84
126
|
if (rendition === 'masked'){
|
|
85
127
|
return (
|
|
86
128
|
<div className={`${styles.imageContent} ${styles.maskedImageContent} ${styles[alignment]}`}>
|
|
@@ -95,17 +137,7 @@ const ImageContent = (props: ImageContentProps) => {
|
|
|
95
137
|
{/* CONTENT */}
|
|
96
138
|
<div className={styles.content}>
|
|
97
139
|
<div className={styles.contentWrapper}>
|
|
98
|
-
|
|
99
|
-
<PillarLogo brandPillar={pillar} brandFullLogo={displayFullLogo}/>
|
|
100
|
-
{!displayFullLogo && <p>
|
|
101
|
-
{pillar === "main" && "Visit"}
|
|
102
|
-
{pillar === "live" && "Live"}
|
|
103
|
-
{pillar === "visit" && "Vist"}
|
|
104
|
-
{pillar === "taste" && "Taste"}
|
|
105
|
-
{pillar === "business" && "Business"}
|
|
106
|
-
{pillar === "participate" && "Participate"}
|
|
107
|
-
</p>}
|
|
108
|
-
</div>
|
|
140
|
+
{pillarLogo}
|
|
109
141
|
<div className={styles.title}>
|
|
110
142
|
<h4>{title}</h4>
|
|
111
143
|
</div>
|
|
@@ -10,6 +10,7 @@ export type PillarType =
|
|
|
10
10
|
|
|
11
11
|
export type RenditionType =
|
|
12
12
|
| "full"
|
|
13
|
+
| "fluid"
|
|
13
14
|
| "contained"
|
|
14
15
|
| "masked";
|
|
15
16
|
|
|
@@ -34,7 +35,7 @@ export interface ImageContentProps {
|
|
|
34
35
|
images?: ImageSet;
|
|
35
36
|
imageSrc?:string;
|
|
36
37
|
alignment?: 'left' | 'right';
|
|
37
|
-
imageBorder?: 'top' | 'bottom'
|
|
38
|
+
imageBorder?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left'
|
|
38
39
|
rendition?: RenditionType;
|
|
39
40
|
list?: Item[];
|
|
40
41
|
}
|
|
@@ -157,6 +157,7 @@
|
|
|
157
157
|
// full image
|
|
158
158
|
&.imageContentFull{
|
|
159
159
|
position: relative;
|
|
160
|
+
overflow: hidden;
|
|
160
161
|
|
|
161
162
|
.svgBackgroundPillar{
|
|
162
163
|
position: absolute;
|
|
@@ -174,71 +175,51 @@
|
|
|
174
175
|
}
|
|
175
176
|
}
|
|
176
177
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
}
|
|
178
|
+
&.top-left{
|
|
179
|
+
.imageHolder{
|
|
180
|
+
border-radius: 200px 0 0 0;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
183
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
}
|
|
184
|
+
&.top-right{
|
|
185
|
+
.imageHolder{
|
|
186
|
+
border-radius: 0 200px 0 0;
|
|
188
187
|
}
|
|
189
188
|
}
|
|
190
189
|
|
|
191
|
-
&.bottom{
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
border-radius: 0px 0px 500px 0px;
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
&.right{
|
|
199
|
-
.imageHolder {
|
|
200
|
-
border-radius: 0px 0px 0px 500px;
|
|
201
|
-
}
|
|
190
|
+
&.bottom-right{
|
|
191
|
+
.imageHolder{
|
|
192
|
+
border-radius: 0 0 200px 0;
|
|
202
193
|
}
|
|
203
194
|
}
|
|
204
195
|
|
|
205
|
-
&.left{
|
|
206
|
-
.
|
|
207
|
-
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
.imageHolder {
|
|
211
|
-
height: 100%;
|
|
212
|
-
position: absolute;
|
|
213
|
-
width: calc(50vw + 10px);
|
|
214
|
-
right: 0;
|
|
215
|
-
left: unset;
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
.content{
|
|
219
|
-
padding-left: 0;
|
|
220
|
-
padding-right: 0;
|
|
196
|
+
&.bottom-left{
|
|
197
|
+
.imageHolder{
|
|
198
|
+
border-radius: 0 0 0 200px;
|
|
221
199
|
}
|
|
222
|
-
|
|
223
200
|
}
|
|
224
201
|
|
|
225
202
|
.imageContentWrapper{
|
|
226
203
|
margin: 0px;
|
|
227
|
-
min-height: 935px;
|
|
228
204
|
}
|
|
229
205
|
|
|
230
206
|
.imageWrapper{
|
|
231
207
|
position: relative;
|
|
232
208
|
padding: 0px;
|
|
209
|
+
//width: 100%;
|
|
210
|
+
z-index: 1;
|
|
211
|
+
margin-top: 0;
|
|
212
|
+
width: calc(100% + 32px);
|
|
213
|
+
margin-left: -16px;
|
|
214
|
+
margin-right: -15px;
|
|
233
215
|
}
|
|
234
216
|
|
|
235
217
|
.imageHolder {
|
|
236
218
|
padding: 0;
|
|
237
219
|
height: 100%;
|
|
238
|
-
|
|
239
|
-
width:
|
|
240
|
-
|
|
241
|
-
overflow: hidden;
|
|
220
|
+
width: 100%;
|
|
221
|
+
min-width: 50vw;
|
|
222
|
+
min-height: 380px;
|
|
242
223
|
|
|
243
224
|
|
|
244
225
|
&::before {
|
|
@@ -254,8 +235,9 @@
|
|
|
254
235
|
}
|
|
255
236
|
|
|
256
237
|
.content{
|
|
257
|
-
padding:
|
|
258
|
-
padding-
|
|
238
|
+
padding-top: 32px;
|
|
239
|
+
padding-bottom: 32px;
|
|
240
|
+
padding-right: 0px;
|
|
259
241
|
|
|
260
242
|
.desc{
|
|
261
243
|
}
|
|
@@ -290,7 +272,65 @@
|
|
|
290
272
|
|
|
291
273
|
}
|
|
292
274
|
|
|
293
|
-
|
|
275
|
+
//Fluid
|
|
276
|
+
&.imageContentFluid{
|
|
277
|
+
overflow-x: hidden;
|
|
278
|
+
|
|
279
|
+
.pillarlogo{
|
|
280
|
+
display: flex;
|
|
281
|
+
margin-bottom: 48px;
|
|
282
|
+
align-items: center;
|
|
283
|
+
|
|
284
|
+
p{
|
|
285
|
+
margin-left: 16px;
|
|
286
|
+
font-size: 18px;
|
|
287
|
+
font-style: normal;
|
|
288
|
+
font-weight: 700;
|
|
289
|
+
line-height: 140%;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
&.pillarlogoFull{
|
|
293
|
+
svg{
|
|
294
|
+
width: 32px;
|
|
295
|
+
height: 32px;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
svg{
|
|
299
|
+
width: 160px;
|
|
300
|
+
height: 54px;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
.imageContentWrapper{
|
|
306
|
+
min-height: 725px;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
.imageHolder{
|
|
310
|
+
min-width: 50vw;
|
|
311
|
+
border-radius: 0;
|
|
312
|
+
width: calc(100% + 32px);
|
|
313
|
+
margin-left: -16px;
|
|
314
|
+
margin-right: -16px;
|
|
315
|
+
position: relative;
|
|
316
|
+
|
|
317
|
+
.clipPath{
|
|
318
|
+
position: absolute;
|
|
319
|
+
top: 0;
|
|
320
|
+
bottom: 0;
|
|
321
|
+
color: var(--color-block-bg);
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
.content{
|
|
327
|
+
padding-top: 32px;
|
|
328
|
+
padding-bottom: 32px;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
@media screen and (min-width: 1200px){
|
|
294
334
|
|
|
295
335
|
&Wrapper{
|
|
296
336
|
margin: 0 -52px;
|
|
@@ -353,23 +393,43 @@
|
|
|
353
393
|
margin-bottom: 48px;
|
|
354
394
|
}
|
|
355
395
|
|
|
356
|
-
&.left{
|
|
396
|
+
&.top-left{
|
|
397
|
+
.imageHolder{
|
|
398
|
+
border-radius: 500px 0 0 0;
|
|
399
|
+
}
|
|
400
|
+
}
|
|
357
401
|
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
width: calc(50vw + 10px);
|
|
362
|
-
right: 0;
|
|
363
|
-
left: unset;
|
|
402
|
+
&.top-right{
|
|
403
|
+
.imageHolder{
|
|
404
|
+
border-radius: 0 500px 0 0;
|
|
364
405
|
}
|
|
406
|
+
}
|
|
365
407
|
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
408
|
+
&.bottom-right{
|
|
409
|
+
.imageHolder{
|
|
410
|
+
border-radius: 0 0 500px 0;
|
|
369
411
|
}
|
|
412
|
+
}
|
|
370
413
|
|
|
414
|
+
&.bottom-left{
|
|
415
|
+
.imageHolder{
|
|
416
|
+
border-radius: 0 0 0 500px;
|
|
417
|
+
}
|
|
371
418
|
}
|
|
372
419
|
|
|
420
|
+
.imageContentWrapper{
|
|
421
|
+
margin: 0px;
|
|
422
|
+
min-height: 935px;
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
.imageWrapper{
|
|
426
|
+
width: 50%;
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
.content{
|
|
430
|
+
padding-right: 198px;
|
|
431
|
+
}
|
|
432
|
+
|
|
373
433
|
}
|
|
374
434
|
|
|
375
435
|
}
|
|
@@ -1,27 +1,64 @@
|
|
|
1
|
+
import React from 'react'
|
|
1
2
|
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
3
|
import Pathway from './Pathway';
|
|
3
|
-
import {
|
|
4
|
+
import {ElementHolder} from "../../Shared";
|
|
4
5
|
|
|
5
6
|
const meta : Meta<typeof Pathway> = {
|
|
6
7
|
title: "Form / Pathway",
|
|
7
8
|
component: Pathway,
|
|
8
|
-
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
export default meta;
|
|
12
12
|
type Story = StoryObj<typeof Pathway>
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
14
|
+
const GridTemplate: Story = {
|
|
15
|
+
render : () =>{
|
|
16
|
+
|
|
17
|
+
return <ElementHolder paddingTop={'md'} paddingBottom={"md"}>
|
|
18
|
+
<Pathway
|
|
19
|
+
title={'Food and drink'}
|
|
20
|
+
description={'Find the ideal event venues in Selwyn, where beautiful landscapes blend with top-notch facilities. '}
|
|
21
|
+
variation={'grid'}
|
|
22
|
+
filters={["all", "adventure", "ski", "nature", "city"]}
|
|
23
|
+
cards={
|
|
24
|
+
[
|
|
25
|
+
{ title: "Ballooning Canterbury", link: "#", image: "./img/card-one.png", category: "adventure", pillar: "live" },
|
|
26
|
+
{ title: "Ski Resort", link: "#", image: "./img/card-two.png", category: "ski" },
|
|
27
|
+
{ title: "Nature Walk", link: "#", image: "./img/card-three.png", category: "nature" },
|
|
28
|
+
{ title: "City Tour", link: "#", image: "./img/card-four.png" }
|
|
29
|
+
]
|
|
30
|
+
}
|
|
31
|
+
/>
|
|
32
|
+
</ElementHolder>
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
const CarouselTemplate: Story = {
|
|
37
|
+
render : () =>{
|
|
38
|
+
|
|
39
|
+
return <ElementHolder paddingTop={'md'} paddingBottom={"md"}>
|
|
40
|
+
<Pathway
|
|
41
|
+
title={'Food and drink'}
|
|
42
|
+
description={'Find the ideal event venues in Selwyn, where beautiful landscapes blend with top-notch facilities. '}
|
|
43
|
+
variation={'carousel'}
|
|
44
|
+
cards={
|
|
45
|
+
[
|
|
46
|
+
{ title: "Ballooning Canterbury", link: "#", image: "./img/card-one.png", category: "adventure", pillar: "live" },
|
|
21
47
|
{ title: "Ski Resort", link: "#", image: "./img/card-two.png", category: "ski" },
|
|
22
48
|
{ title: "Nature Walk", link: "#", image: "./img/card-three.png", category: "nature" },
|
|
23
|
-
{ title: "City Tour", link: "#", image: "./img/card-four.png" }
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
49
|
+
{ title: "City Tour", link: "#", image: "./img/card-four.png" }
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
/>
|
|
53
|
+
</ElementHolder>
|
|
54
|
+
}
|
|
27
55
|
};
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
export const GridView = {
|
|
59
|
+
...GridTemplate,
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export const CarouselView = {
|
|
63
|
+
...CarouselTemplate,
|
|
64
|
+
}
|
|
@@ -2,7 +2,6 @@ import cx from "classnames";
|
|
|
2
2
|
import PathwayProps from './PathwayProps';
|
|
3
3
|
import styles from "./pathway.module.scss";
|
|
4
4
|
import cslx from "clsx";
|
|
5
|
-
import ElementHolder from "../../Shared/ElementHolder/ElementHolder";
|
|
6
5
|
import Container from "../../Shared/Container/Container";
|
|
7
6
|
import DetailsCard from "../DetailsCard/DetailsCard";
|
|
8
7
|
import { CaretDown } from "../../Icons";
|
|
@@ -29,10 +28,22 @@ const Pathway = (props:PathwayProps) => {
|
|
|
29
28
|
const classes = [styles.pathway, "pathway", variation === "carousel" && styles.pathwayCarousel];
|
|
30
29
|
|
|
31
30
|
return (
|
|
32
|
-
<
|
|
31
|
+
<div>
|
|
33
32
|
<Container>
|
|
34
33
|
{variation === "carousel" ? (
|
|
35
|
-
<div className={cx(classes)}>
|
|
34
|
+
<div className={cx(classes)}>
|
|
35
|
+
<div className={styles.contentWrapper}>
|
|
36
|
+
<div className={styles.content}>
|
|
37
|
+
<div className={styles.pathwayTitle}><h3>{title}</h3></div>
|
|
38
|
+
<div className={styles.pathwayDescription}><p>{description}</p></div>
|
|
39
|
+
</div>
|
|
40
|
+
<div className={styles.silderNav}>
|
|
41
|
+
</div>
|
|
42
|
+
</div>
|
|
43
|
+
{/*<div className={styles.}>*/}
|
|
44
|
+
|
|
45
|
+
{/*</div>*/}
|
|
46
|
+
</div>
|
|
36
47
|
) : (
|
|
37
48
|
<div className={cslx(classes)}>
|
|
38
49
|
<div className={styles.pathwayTitle}><h3>{title}</h3></div>
|
|
@@ -76,7 +87,7 @@ const Pathway = (props:PathwayProps) => {
|
|
|
76
87
|
</div>
|
|
77
88
|
)}
|
|
78
89
|
</Container>
|
|
79
|
-
</
|
|
90
|
+
</div>
|
|
80
91
|
);
|
|
81
92
|
};
|
|
82
93
|
|
|
@@ -19,6 +19,5 @@ export { default as PromoBannerBlock } from './PromoBannerBlock/PromoBannerBlock
|
|
|
19
19
|
export type { default as PromoBannerBlockProps } from './PromoBannerBlock/PromoBannerBlockProps';
|
|
20
20
|
|
|
21
21
|
//ImageContent
|
|
22
|
-
|
|
23
22
|
export {default as ImageContent} from './ImageContent/ImageContent'
|
|
24
23
|
export type {default as ImageContentProps} from './ImageContent/ImageContentProps'
|
|
@@ -5,6 +5,10 @@ import HeaderRight from "./HeaderRight";
|
|
|
5
5
|
import HeaderRightItem from "./HeaderRightItem";
|
|
6
6
|
import MagnifyingGlass from "./MagnifyingGlass/MagnifyingGlass";
|
|
7
7
|
import MegaMenu from "./MegaMenu/MegaMenu";
|
|
8
|
+
import {List} from "../../Icons";
|
|
9
|
+
import "./header.scss"
|
|
10
|
+
import MobileNavigation from "./MobileNavigation/MobileNavigation";
|
|
11
|
+
import MobileNavigationItem from "./MobileNavigation/MobileNavigationItem";
|
|
8
12
|
|
|
9
13
|
|
|
10
14
|
const meta: Meta = {
|
|
@@ -28,7 +32,7 @@ const logo = (
|
|
|
28
32
|
|
|
29
33
|
const logoSmall = (
|
|
30
34
|
<a href={"/"}>
|
|
31
|
-
<img src={'/img/waikirikiri-full-logo.svg'} width={110} height={
|
|
35
|
+
<img src={'/img/waikirikiri-full-logo.svg'} width={110} height={34} alt={'Hello Better'}/>
|
|
32
36
|
</a>
|
|
33
37
|
);
|
|
34
38
|
|
|
@@ -39,25 +43,48 @@ const HeaderTemplate: Story = {
|
|
|
39
43
|
// @ts-ignore
|
|
40
44
|
return <Header logo={logo} logoSmall={logoSmall}>
|
|
41
45
|
<HeaderRight>
|
|
42
|
-
<HeaderRightItem menuDropdown={<MegaMenu pillar={'live'}/>}>
|
|
46
|
+
<HeaderRightItem extraClass={'desktop-item'} menuDropdown={<MegaMenu pillar={'live'}/>}>
|
|
43
47
|
Participate
|
|
44
48
|
</HeaderRightItem>
|
|
45
|
-
<HeaderRightItem>
|
|
49
|
+
<HeaderRightItem extraClass={'desktop-item'}>
|
|
46
50
|
Business
|
|
47
51
|
</HeaderRightItem>
|
|
48
|
-
<HeaderRightItem>
|
|
52
|
+
<HeaderRightItem extraClass={'desktop-item'}>
|
|
49
53
|
Live
|
|
50
54
|
</HeaderRightItem>
|
|
51
|
-
<HeaderRightItem>
|
|
55
|
+
<HeaderRightItem extraClass={'desktop-item'}>
|
|
52
56
|
Visit
|
|
53
57
|
</HeaderRightItem>
|
|
54
|
-
<HeaderRightItem>
|
|
58
|
+
<HeaderRightItem extraClass={'desktop-item'}>
|
|
55
59
|
Taste
|
|
56
60
|
</HeaderRightItem>
|
|
57
|
-
<HeaderRightItem>
|
|
61
|
+
<HeaderRightItem extraClass={'desktop-item'}>
|
|
58
62
|
<MagnifyingGlass/>
|
|
59
63
|
</HeaderRightItem>
|
|
64
|
+
<HeaderRightItem extraClass={'mobile-item'}>
|
|
65
|
+
<List/>
|
|
66
|
+
</HeaderRightItem>
|
|
60
67
|
</HeaderRight>
|
|
68
|
+
<MobileNavigation>
|
|
69
|
+
<li>
|
|
70
|
+
<MobileNavigationItem label={'Attractions'}/>
|
|
71
|
+
</li>
|
|
72
|
+
<li>
|
|
73
|
+
<MobileNavigationItem label={'Eateries'}/>
|
|
74
|
+
</li>
|
|
75
|
+
<li>
|
|
76
|
+
<MobileNavigationItem label={'Accommodation'}/>
|
|
77
|
+
</li>
|
|
78
|
+
<li>
|
|
79
|
+
<MobileNavigationItem label={'Why visit Selwyn'}/>
|
|
80
|
+
</li>
|
|
81
|
+
<li>
|
|
82
|
+
<MobileNavigationItem label={'Events'}/>
|
|
83
|
+
</li>
|
|
84
|
+
<li>
|
|
85
|
+
<MobileNavigationItem label={'Venues'}/>
|
|
86
|
+
</li>
|
|
87
|
+
</MobileNavigation>
|
|
61
88
|
</Header>
|
|
62
89
|
},
|
|
63
90
|
};
|
|
@@ -3,8 +3,8 @@ import HeaderRightItemProps from "./HeaderRightItemProps.tsx";
|
|
|
3
3
|
|
|
4
4
|
const HeaderRightItem = (props : HeaderRightItemProps) =>{
|
|
5
5
|
const { href , target, children, extraClass, icon, menuDropdown, active } = props
|
|
6
|
-
return <div className={`${styles.headerBottomItemHolder} ${active && styles.active}`}>
|
|
7
|
-
<a href={href} target={target} className={`${styles.headerBottomItem}
|
|
6
|
+
return <div className={`${styles.headerBottomItemHolder} ${extraClass} ${active && styles.active}`}>
|
|
7
|
+
<a href={href} target={target} className={`${styles.headerBottomItem} headerBottomItem`}>
|
|
8
8
|
{icon && <div className={styles.icon}>
|
|
9
9
|
{icon}
|
|
10
10
|
</div>}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import MobileNavigationProps from "./MobileNavigationProps.tsx";
|
|
2
|
+
import styles from './mobileNavigation.module.scss'
|
|
3
|
+
import {Container} from "../../../Shared";
|
|
4
|
+
import MobileWhatuOverlay from "./MobileWhatuOverlay.tsx";
|
|
5
|
+
|
|
6
|
+
const MobileNavigation = (props : MobileNavigationProps) => {
|
|
7
|
+
|
|
8
|
+
const {
|
|
9
|
+
children,
|
|
10
|
+
extraClass
|
|
11
|
+
} = props
|
|
12
|
+
|
|
13
|
+
return <div className={`${styles.mobileNavigation} ${extraClass} mobileNavigation`}>
|
|
14
|
+
<Container>
|
|
15
|
+
<ul className={`${styles.mobileNavigationWrapper} mobileNavigationWrapper`}>
|
|
16
|
+
{children}
|
|
17
|
+
</ul>
|
|
18
|
+
</Container>
|
|
19
|
+
<div className={styles.svg}>
|
|
20
|
+
<MobileWhatuOverlay/>
|
|
21
|
+
</div>
|
|
22
|
+
</div>
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export default MobileNavigation;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import styles from './mobileNavigation.module.scss'
|
|
2
|
+
import MobileNavigationItemProps from "./MobileNavigationItemProps.tsx";
|
|
3
|
+
import ArrowRight from "../../../Icons/Arrows/ArrowRight/ArrowRight.tsx";
|
|
4
|
+
|
|
5
|
+
const MobileNavigationItem = (props : MobileNavigationItemProps) => {
|
|
6
|
+
|
|
7
|
+
const {label} = props
|
|
8
|
+
|
|
9
|
+
return <div className={styles.mobileNavItem}>
|
|
10
|
+
<div className={styles.mobileNavItemWrapper}>
|
|
11
|
+
<h6>{label}</h6>
|
|
12
|
+
<ArrowRight type={'light'}/>
|
|
13
|
+
</div>
|
|
14
|
+
</div>
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export default MobileNavigationItem;
|
package/src/Components/Layout/Header/MobileNavigation/MobileSubNavigation/MobileSubNavigation.tsx
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import MobileSubNavigationProps from "./MobileSubNavigationProps.tsx";
|
|
2
|
+
import styles from '../mobileNavigation.module.scss'
|
|
3
|
+
import {Container} from "../../../Shared";
|
|
4
|
+
|
|
5
|
+
const MobileSubNavigation = (props : MobileSubNavigationProps) => {
|
|
6
|
+
|
|
7
|
+
const {
|
|
8
|
+
children,
|
|
9
|
+
extraClass
|
|
10
|
+
} = props
|
|
11
|
+
|
|
12
|
+
return <div className={`${styles.MobileSubNavigation} ${extraClass} MobileSubNavigation`}>
|
|
13
|
+
<Container>
|
|
14
|
+
<ul className={`${styles.MobileSubNavigationWrapper} MobileSubNavigationWrapper`}>
|
|
15
|
+
{children}
|
|
16
|
+
</ul>
|
|
17
|
+
</Container>
|
|
18
|
+
</div>
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export default MobileSubNavigation;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import styles from '././mobileNavigation.module.scss'
|
|
2
|
+
import MobileNavigationItemProps from "./MobileNavigationItemProps.tsx";
|
|
3
|
+
import ArrowRight from "../../../Icons/Arrows/ArrowRight/ArrowRight.tsx";
|
|
4
|
+
|
|
5
|
+
const MobileNavigationItem = (props : MobileNavigationItemProps) => {
|
|
6
|
+
|
|
7
|
+
const {label} = props
|
|
8
|
+
|
|
9
|
+
return <div className={styles.mobileNavItem}>
|
|
10
|
+
<div className={styles.mobileNavItemWrapper}>
|
|
11
|
+
<h6>{label}</h6>
|
|
12
|
+
<ArrowRight type={'light'}/>
|
|
13
|
+
</div>
|
|
14
|
+
</div>
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export default MobileNavigationItem;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const MobileWhatuOverlay = () =>{
|
|
2
|
+
return <svg xmlns="http://www.w3.org/2000/svg" width="741" height="340" viewBox="0 0 741 340" fill="none">
|
|
3
|
+
<g opacity="0.1">
|
|
4
|
+
<path opacity="0.5" d="M0 113.209C68.1991 113.209 123.5 163.901 123.5 226.417H0V113.209Z" fill="currentColor"/>
|
|
5
|
+
<path opacity="0.25" d="M247 113.209C178.801 113.209 123.5 163.901 123.5 226.417H247V113.209Z" fill="currentColor"/>
|
|
6
|
+
<path opacity="0.5" d="M741 226.417C672.801 226.417 617.5 175.725 617.5 113.209H741V226.417Z" fill="currentColor"/>
|
|
7
|
+
<path opacity="0.75" d="M123.5 226.416C191.699 226.416 247 277.109 247 339.624H123.5V226.416Z" fill="currentColor"/>
|
|
8
|
+
<path opacity="0.5" d="M247 339.624C315.199 339.624 370.5 288.932 370.5 226.416H247V339.624Z" fill="currentColor"/>
|
|
9
|
+
<path opacity="0.25" d="M494 339.625C425.801 339.625 370.5 288.932 370.5 226.417H494V339.625Z" fill="currentColor"/>
|
|
10
|
+
<path opacity="0.75" d="M617.5 226.417C549.301 226.417 494 277.109 494 339.625H617.5V226.417Z" fill="currentColor"/>
|
|
11
|
+
<path opacity="0.25" d="M494 0.000656128C562.199 0.000656128 617.5 50.6932 617.5 113.209H494V0.000656128Z" fill="currentColor"/>
|
|
12
|
+
<path opacity="0.5" d="M370.5 226.417C438.699 226.417 494 175.725 494 113.209H370.5V226.417Z" fill="currentColor"/>
|
|
13
|
+
<path opacity="0.75" d="M247 113.208C315.199 113.208 370.5 62.5158 370.5 0H247V113.208Z" fill="currentColor"/>
|
|
14
|
+
</g>
|
|
15
|
+
</svg>
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export default MobileWhatuOverlay
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
.mobileNavigation{
|
|
2
|
+
position: absolute;
|
|
3
|
+
top: 61px;
|
|
4
|
+
right: 0;
|
|
5
|
+
left: 0;
|
|
6
|
+
height: calc(100vh - 59px);
|
|
7
|
+
background: var(--header-bg);
|
|
8
|
+
border-radius: 0 0 200px 0;
|
|
9
|
+
overflow-x: hidden;
|
|
10
|
+
|
|
11
|
+
.mobileNavigationWrapper{
|
|
12
|
+
padding-top: 48px;
|
|
13
|
+
list-style: none;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.mobileNavItemWrapper{
|
|
17
|
+
display: flex;
|
|
18
|
+
align-items: center;
|
|
19
|
+
justify-content: space-between;
|
|
20
|
+
cursor: pointer;
|
|
21
|
+
color: var(--header-color);
|
|
22
|
+
transition: all 0.3s ease-in-out;
|
|
23
|
+
|
|
24
|
+
svg {
|
|
25
|
+
margin-left: 16px;
|
|
26
|
+
transition: transform 0.3s ease-in-out;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
&:hover {
|
|
30
|
+
svg {
|
|
31
|
+
animation: wiggle 0.6s ease-in-out infinite;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
h6{
|
|
36
|
+
font-size: var(--font-size-h6);
|
|
37
|
+
line-height: var(--line-height-h6);
|
|
38
|
+
font-weight: var(--font-weight-h6);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.svg{
|
|
46
|
+
position: absolute;
|
|
47
|
+
left: 0;
|
|
48
|
+
bottom: 0;
|
|
49
|
+
right: 0;
|
|
50
|
+
color: var(--header-color);
|
|
51
|
+
|
|
52
|
+
svg{
|
|
53
|
+
width: 100%;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
@keyframes wiggle {
|
|
59
|
+
0%, 100% { transform: translateX(0); }
|
|
60
|
+
25% { transform: translateX(-4px); }
|
|
61
|
+
75% { transform: translateX(4px); }
|
|
62
|
+
}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
.header{
|
|
2
2
|
background: var(--header-bg);
|
|
3
|
+
backdrop-filter: blur(10px);
|
|
4
|
+
border-bottom: 1px solid var(--color-taste);
|
|
3
5
|
|
|
4
6
|
.headerWrapper{
|
|
5
7
|
display: flex;
|
|
6
8
|
align-items: flex-end;
|
|
7
9
|
justify-content: space-between;
|
|
8
|
-
min-height:
|
|
10
|
+
min-height: 60px;
|
|
9
11
|
}
|
|
10
12
|
|
|
11
13
|
.headerLogo{
|
|
@@ -32,7 +34,7 @@
|
|
|
32
34
|
}
|
|
33
35
|
|
|
34
36
|
.headerBottomItemHolder{
|
|
35
|
-
padding: 0 12px
|
|
37
|
+
padding: 0 12px 12px 12px;
|
|
36
38
|
transition: all 0.3s ease-in;
|
|
37
39
|
|
|
38
40
|
a{
|
|
@@ -90,6 +92,7 @@
|
|
|
90
92
|
|
|
91
93
|
|
|
92
94
|
@media screen and (min-width: 1648px) {
|
|
95
|
+
|
|
93
96
|
.headerRightWrapper{
|
|
94
97
|
display: flex;
|
|
95
98
|
align-items: center;
|
|
@@ -103,6 +106,11 @@
|
|
|
103
106
|
|
|
104
107
|
|
|
105
108
|
@media screen and (min-width: 992px) {
|
|
109
|
+
|
|
110
|
+
.headerWrapper{
|
|
111
|
+
min-height: 96px;
|
|
112
|
+
}
|
|
113
|
+
|
|
106
114
|
.logo {
|
|
107
115
|
display: block;
|
|
108
116
|
}
|
|
@@ -110,6 +118,12 @@
|
|
|
110
118
|
.logoSmall {
|
|
111
119
|
display: none;
|
|
112
120
|
}
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
.headerBottomItemHolder {
|
|
124
|
+
padding-bottom:30px ;
|
|
125
|
+
}
|
|
126
|
+
|
|
113
127
|
}
|
|
114
128
|
|
|
115
129
|
}
|
|
@@ -24,6 +24,11 @@ const HeroBanner = (props : HeroBannerProps) => {
|
|
|
24
24
|
</div>
|
|
25
25
|
<div className={styles.heroImg}>
|
|
26
26
|
<img src={backgroundImg} alt="hero banner" />
|
|
27
|
+
<div className={styles.clipPath}>
|
|
28
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 911 725" fill="none">
|
|
29
|
+
<path d="M911 0C470.407 -4.11029e-07 102.958 311.255 18.3389 725H0V0H911Z" fill="currentColor"/>
|
|
30
|
+
</svg>
|
|
31
|
+
</div>
|
|
27
32
|
</div>
|
|
28
33
|
</div>
|
|
29
34
|
</Container>
|
|
@@ -46,6 +51,11 @@ const HeroBanner = (props : HeroBannerProps) => {
|
|
|
46
51
|
</div>
|
|
47
52
|
<div className={styles.heroImg}>
|
|
48
53
|
<img src={backgroundImg} alt="hero banner" />
|
|
54
|
+
<div className={styles.clipPath}>
|
|
55
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 911 600" fill="none">
|
|
56
|
+
<path d="M911 0C516.03 -3.68467e-07 179.841 250.132 53.4912 600H0V0H911Z" fill="currentColor"/>
|
|
57
|
+
</svg>
|
|
58
|
+
</div>
|
|
49
59
|
</div>
|
|
50
60
|
</div>
|
|
51
61
|
</Container>
|
|
@@ -59,6 +59,7 @@
|
|
|
59
59
|
|
|
60
60
|
&Medium{
|
|
61
61
|
position: relative;
|
|
62
|
+
overflow-x: hidden;
|
|
62
63
|
|
|
63
64
|
.heroWrapper{
|
|
64
65
|
display: flex;
|
|
@@ -70,7 +71,7 @@
|
|
|
70
71
|
flex-direction: column;
|
|
71
72
|
justify-content: center;
|
|
72
73
|
width: 100%;
|
|
73
|
-
padding:
|
|
74
|
+
padding: 20px 0 20px 0;
|
|
74
75
|
color: var(--color-text);
|
|
75
76
|
|
|
76
77
|
h1{
|
|
@@ -95,23 +96,41 @@
|
|
|
95
96
|
|
|
96
97
|
}
|
|
97
98
|
|
|
98
|
-
.heroImg{
|
|
99
|
-
border-radius: 500px 0 0 0;
|
|
99
|
+
.heroImg {
|
|
100
100
|
overflow: hidden;
|
|
101
|
-
width: calc(100% +
|
|
102
|
-
margin-left: -
|
|
103
|
-
margin-right: -
|
|
101
|
+
width: calc(100% + 32px);
|
|
102
|
+
margin-left: -16px;
|
|
103
|
+
margin-right: -16px;
|
|
104
|
+
position: relative;
|
|
104
105
|
|
|
105
|
-
img{
|
|
106
|
+
img {
|
|
106
107
|
height: 100%;
|
|
107
108
|
width: 100%;
|
|
108
109
|
object-fit: cover;
|
|
109
110
|
object-position: center;
|
|
110
111
|
min-height: 360px;
|
|
112
|
+
display: block;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.clipPath {
|
|
116
|
+
position: absolute;
|
|
117
|
+
top: 0;
|
|
118
|
+
left: 0;
|
|
119
|
+
bottom: 0;
|
|
120
|
+
//width: 100%;
|
|
121
|
+
height: 100%;
|
|
122
|
+
color: var(--color-block-bg);
|
|
123
|
+
pointer-events: none;
|
|
124
|
+
|
|
125
|
+
svg{
|
|
126
|
+
height: 100%;
|
|
127
|
+
}
|
|
128
|
+
|
|
111
129
|
}
|
|
112
130
|
}
|
|
113
131
|
|
|
114
132
|
|
|
133
|
+
|
|
115
134
|
}
|
|
116
135
|
}
|
|
117
136
|
|
|
@@ -120,7 +139,7 @@
|
|
|
120
139
|
|
|
121
140
|
.heroWrapper{
|
|
122
141
|
display: flex;
|
|
123
|
-
min-height:
|
|
142
|
+
min-height: 600px;
|
|
124
143
|
flex-wrap: wrap;
|
|
125
144
|
|
|
126
145
|
.content{
|
|
@@ -154,11 +173,11 @@
|
|
|
154
173
|
}
|
|
155
174
|
|
|
156
175
|
.heroImg{
|
|
157
|
-
border-radius: 500px 0 0 0;
|
|
158
176
|
overflow: hidden;
|
|
159
|
-
width: calc(100% +
|
|
160
|
-
margin-left: -
|
|
161
|
-
margin-right: -
|
|
177
|
+
width: calc(100% + 32px);
|
|
178
|
+
margin-left: -16px;
|
|
179
|
+
margin-right: -16px;
|
|
180
|
+
position: relative;
|
|
162
181
|
|
|
163
182
|
img{
|
|
164
183
|
width: 100%;
|
|
@@ -167,6 +186,22 @@
|
|
|
167
186
|
object-position: center;
|
|
168
187
|
}
|
|
169
188
|
|
|
189
|
+
.clipPath {
|
|
190
|
+
position: absolute;
|
|
191
|
+
top: 0;
|
|
192
|
+
left: 0;
|
|
193
|
+
bottom: 0;
|
|
194
|
+
width: 100%;
|
|
195
|
+
//height: 100%;
|
|
196
|
+
color: var(--color-block-bg);
|
|
197
|
+
pointer-events: none;
|
|
198
|
+
|
|
199
|
+
svg{
|
|
200
|
+
height: 100%;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
}
|
|
204
|
+
|
|
170
205
|
|
|
171
206
|
}
|
|
172
207
|
|
|
@@ -180,7 +215,7 @@
|
|
|
180
215
|
|
|
181
216
|
.content {
|
|
182
217
|
width: 50%;
|
|
183
|
-
padding:
|
|
218
|
+
padding: 60px 0;
|
|
184
219
|
|
|
185
220
|
p{
|
|
186
221
|
margin-top: 90px;
|
|
@@ -27,6 +27,5 @@ export { default as HeroBanner } from './HeroBanner/HeroBanner';
|
|
|
27
27
|
export type { default as HeroBannerProps } from './HeroBanner/HeroBannerProps';
|
|
28
28
|
|
|
29
29
|
// Megamenu
|
|
30
|
-
|
|
31
30
|
export { default as MegaMenu} from './Header/MegaMenu/MegaMenu.tsx'
|
|
32
31
|
export type { default as MegaMenuProps } from './Header/MegaMenu/MegaMenuProps.tsx'
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
.container {
|
|
2
|
-
padding: 0px
|
|
2
|
+
padding: 0px 16px 0 16px;
|
|
3
3
|
margin: 0px auto;
|
|
4
4
|
|
|
5
5
|
&.default{
|
|
6
|
-
max-width:
|
|
6
|
+
max-width: 1432px;
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
@media screen and (min-width: 1748px) {
|
|
10
|
-
padding: 0px
|
|
10
|
+
padding: 0px 16px 0 16px;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
}
|