foundry-component-library 0.1.11 → 0.1.13
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/lib/assets/svg/close.svg +3 -3
- package/lib/components/Awards/index.tsx +10 -2
- package/lib/components/Awards/styles.module.scss +0 -1
- package/lib/components/Capabilities/Item.tsx +7 -1
- package/lib/components/Capabilities/styles.module.scss +0 -1
- package/lib/components/CaseStudyTeaser/index.tsx +5 -1
- package/lib/components/CaseStudyTeaser/styles.module.scss +4 -2
- package/lib/components/ContactTeaser/styles.module.scss +1 -1
- package/lib/components/DoubleTiles/styles.module.scss +0 -1
- package/lib/components/Footer/styles.module.scss +12 -9
- package/lib/components/Header/index.tsx +1 -1
- package/lib/components/Header/styles.module.scss +4 -1
- package/lib/components/Hero/styles.module.scss +1 -0
- package/lib/components/HubsAccordion/Hub.tsx +11 -3
- package/lib/components/HubsAccordion/minus.svg +4 -0
- package/lib/components/HubsAccordion/plus.svg +5 -0
- package/lib/components/HubsAccordion/styles.module.scss +4 -17
- package/lib/components/ImageTitle/styles.module.scss +0 -1
- package/lib/components/LargeText/styles.module.scss +0 -1
- package/lib/components/LogoSection/styles.module.scss +7 -1
- package/lib/components/Management/styles.module.scss +0 -1
- package/lib/components/OfficesTeaser/styles.module.scss +2 -1
- package/lib/components/PartnerNetwork/styles.module.scss +7 -0
- package/lib/components/ServiceHubsTeaser/Tile.tsx +14 -3
- package/lib/components/ServiceHubsTeaser/index.tsx +4 -0
- package/lib/components/ServiceHubsTeaser/styles.module.scss +25 -1
- package/lib/components/TeamBenefits/styles.module.scss +0 -1
- package/lib/components/TeamPhotos/styles.module.scss +0 -1
- package/lib/components/TextSection/styles.module.scss +0 -1
- package/lib/components/Tiles/Tile.tsx +30 -5
- package/lib/components/Tiles/index.tsx +3 -0
- package/lib/components/Tiles/styles.module.scss +39 -1
- package/lib/components/case/Content/Results/styles.module.scss +0 -1
- package/lib/components/case/Content/styles.module.scss +0 -1
- package/lib/components/case/Other/index.tsx +33 -25
- package/lib/components/case/Top/styles.module.scss +1 -0
- package/lib/components/cases/Items/More.tsx +5 -3
- package/lib/components/cases/Items/index.tsx +13 -11
- package/lib/components/contact/Accounts/styles.module.scss +9 -2
- package/lib/components/contact/Contacts/styles.module.scss +0 -2
- package/lib/components/contact/Offices/styles.module.scss +0 -1
- package/lib/components/news/Posts/styles.module.scss +0 -1
- package/lib/components/single/Content/styles.module.scss +6 -0
- package/lib/components/single/Other/index.tsx +29 -21
- package/lib/components/single/Top/styles.module.scss +1 -0
- package/lib/queries/getAboutPage.ts +2 -0
- package/lib/queries/getCases.ts +3 -0
- package/lib/queries/getCasesPage.ts +3 -0
- package/lib/queries/getHomePage.ts +12 -0
- package/lib/queries/getHubBySlug.ts +6 -0
- package/lib/queries/getHubs.ts +6 -0
- package/lib/queries/getHubsPage.ts +3 -0
- package/lib/types/index.ts +3 -0
- package/package.json +1 -1
package/lib/assets/svg/close.svg
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<svg width="47" height="47" viewBox="0 0 47 47" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
-
<path d="M38.1942 38.1923C46.3301 30.0564 46.3301 16.8655 38.1942 8.72955C30.0582 0.593625 16.8673 0.593625 8.73139 8.72955C0.595468 16.8655 0.595468 30.0564 8.73139 38.1923C16.8673 46.3282 30.0582 46.3282 38.1942 38.1923Z" stroke="#491B11" stroke-width="
|
|
3
|
-
<path d="M17.5703 17.5664L29.3554 29.3515" stroke="#491B11" stroke-width="
|
|
4
|
-
<path d="M17.5703 29.3516L29.3554 17.5665" stroke="#491B11" stroke-width="
|
|
2
|
+
<path d="M38.1942 38.1923C46.3301 30.0564 46.3301 16.8655 38.1942 8.72955C30.0582 0.593625 16.8673 0.593625 8.73139 8.72955C0.595468 16.8655 0.595468 30.0564 8.73139 38.1923C16.8673 46.3282 30.0582 46.3282 38.1942 38.1923Z" stroke="#491B11" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
|
|
3
|
+
<path d="M17.5703 17.5664L29.3554 29.3515" stroke="#491B11" stroke-width="3" stroke-linecap="square" stroke-linejoin="round"/>
|
|
4
|
+
<path d="M17.5703 29.3516L29.3554 17.5665" stroke="#491B11" stroke-width="3" stroke-linecap="square" stroke-linejoin="round"/>
|
|
5
5
|
</svg>
|
|
@@ -5,6 +5,7 @@ import Container from "../Container";
|
|
|
5
5
|
import { NextImage } from "../../types";
|
|
6
6
|
import useDrag from "../../hooks/useDrag";
|
|
7
7
|
import WavyText from "../TextAnimations/WavyText";
|
|
8
|
+
import { motion } from "framer-motion";
|
|
8
9
|
|
|
9
10
|
const Awards = ({
|
|
10
11
|
heading,
|
|
@@ -28,7 +29,14 @@ const Awards = ({
|
|
|
28
29
|
if (!awards) return;
|
|
29
30
|
|
|
30
31
|
return (
|
|
31
|
-
<div
|
|
32
|
+
<motion.div
|
|
33
|
+
className={styles.awards}
|
|
34
|
+
initial={{ opacity: 0, y: -5 }}
|
|
35
|
+
animate={{ opacity: 1, y: 0 }}
|
|
36
|
+
transition={{
|
|
37
|
+
duration: 1,
|
|
38
|
+
}}
|
|
39
|
+
>
|
|
32
40
|
<Container>
|
|
33
41
|
{heading && <WavyText className={styles.heading} text={heading} />}
|
|
34
42
|
</Container>
|
|
@@ -59,7 +67,7 @@ const Awards = ({
|
|
|
59
67
|
})}
|
|
60
68
|
</div>
|
|
61
69
|
</Container>
|
|
62
|
-
</div>
|
|
70
|
+
</motion.div>
|
|
63
71
|
);
|
|
64
72
|
};
|
|
65
73
|
|
|
@@ -104,6 +104,8 @@ const Item = ({
|
|
|
104
104
|
>
|
|
105
105
|
{Link &&
|
|
106
106
|
cases.map((item) => {
|
|
107
|
+
const { thumbnailImage, mainImage } = item.case;
|
|
108
|
+
|
|
107
109
|
return (
|
|
108
110
|
<Link
|
|
109
111
|
href={item.uri}
|
|
@@ -115,7 +117,11 @@ const Item = ({
|
|
|
115
117
|
<div className={styles.caseImage}>
|
|
116
118
|
{Image && (
|
|
117
119
|
<Image
|
|
118
|
-
src={
|
|
120
|
+
src={
|
|
121
|
+
thumbnailImage?.sourceUrl ||
|
|
122
|
+
mainImage?.sourceUrl ||
|
|
123
|
+
""
|
|
124
|
+
}
|
|
119
125
|
alt={item.title}
|
|
120
126
|
fill
|
|
121
127
|
/>
|
|
@@ -45,11 +45,15 @@ const CaseStudyTeaser = ({
|
|
|
45
45
|
}}
|
|
46
46
|
>
|
|
47
47
|
{cases.map((el) => {
|
|
48
|
+
const { thumbnailImage, mainImage } = el.case;
|
|
49
|
+
|
|
48
50
|
return (
|
|
49
51
|
<div key={el.id} className={styles.case}>
|
|
50
52
|
<Image
|
|
51
53
|
className={styles.image}
|
|
52
|
-
src={
|
|
54
|
+
src={
|
|
55
|
+
thumbnailImage?.sourceUrl || mainImage?.sourceUrl || ""
|
|
56
|
+
}
|
|
53
57
|
alt={el.title}
|
|
54
58
|
fill
|
|
55
59
|
/>
|
|
@@ -11,7 +11,6 @@
|
|
|
11
11
|
|
|
12
12
|
.heading {
|
|
13
13
|
font-size: 42px;
|
|
14
|
-
font-family: $font-secondary;
|
|
15
14
|
color: $color-brown;
|
|
16
15
|
margin-bottom: 64px;
|
|
17
16
|
|
|
@@ -51,6 +50,10 @@
|
|
|
51
50
|
|
|
52
51
|
&:hover {
|
|
53
52
|
width: 500px;
|
|
53
|
+
|
|
54
|
+
@media screen and (max-width: $screen-sm) {
|
|
55
|
+
width: 360px;
|
|
56
|
+
}
|
|
54
57
|
}
|
|
55
58
|
|
|
56
59
|
&:after {
|
|
@@ -83,7 +86,6 @@
|
|
|
83
86
|
|
|
84
87
|
.title {
|
|
85
88
|
font-size: 42px;
|
|
86
|
-
font-family: $font-secondary;
|
|
87
89
|
margin-bottom: 40px;
|
|
88
90
|
line-height: 1.2;
|
|
89
91
|
width: 300px;
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
z-index: 4;
|
|
9
9
|
|
|
10
10
|
@media #{$QUERY-sm} {
|
|
11
|
-
padding:
|
|
11
|
+
padding: 48px 0;
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
|
|
@@ -40,14 +40,18 @@
|
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
.
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
margin-bottom: 48px;
|
|
43
|
+
.logo {
|
|
44
|
+
width: 412px;
|
|
45
|
+
max-width: 100%;
|
|
47
46
|
|
|
48
|
-
@media screen and (max-width: $screen-
|
|
49
|
-
|
|
47
|
+
@media screen and (max-width: $screen-sm) {
|
|
48
|
+
margin-bottom: 2rem;
|
|
50
49
|
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.logoText {
|
|
53
|
+
font-size: 24px;
|
|
54
|
+
margin-bottom: 48px;
|
|
51
55
|
|
|
52
56
|
@media screen and (max-width: $screen-sm) {
|
|
53
57
|
display: none;
|
|
@@ -89,8 +93,6 @@
|
|
|
89
93
|
}
|
|
90
94
|
|
|
91
95
|
.email {
|
|
92
|
-
font-size: 14px;
|
|
93
|
-
|
|
94
96
|
&:hover {
|
|
95
97
|
color: $color-pink;
|
|
96
98
|
}
|
|
@@ -128,6 +130,7 @@
|
|
|
128
130
|
|
|
129
131
|
@media #{$QUERY-sm} {
|
|
130
132
|
margin-bottom: 10px;
|
|
133
|
+
font-weight: 400;
|
|
131
134
|
}
|
|
132
135
|
|
|
133
136
|
a {
|
|
@@ -16,7 +16,7 @@ function Header({ Link }: { Link: NextLink }) {
|
|
|
16
16
|
<div className={styles.wrapper}>
|
|
17
17
|
<div className={styles.left}>
|
|
18
18
|
<Link href="/">
|
|
19
|
-
<video src="/logo.mp4" autoPlay muted
|
|
19
|
+
<video src="/logo.mp4" autoPlay muted />
|
|
20
20
|
Foundry
|
|
21
21
|
</Link>
|
|
22
22
|
</div>
|
|
@@ -21,6 +21,10 @@
|
|
|
21
21
|
font-size: 0;
|
|
22
22
|
margin-left: -50px;
|
|
23
23
|
|
|
24
|
+
@media #{$QUERY-sm} {
|
|
25
|
+
margin-left: -68px;
|
|
26
|
+
}
|
|
27
|
+
|
|
24
28
|
video {
|
|
25
29
|
width: 250px;
|
|
26
30
|
height: 47px;
|
|
@@ -131,7 +135,6 @@
|
|
|
131
135
|
}
|
|
132
136
|
|
|
133
137
|
.menuList {
|
|
134
|
-
font-family: $font-secondary;
|
|
135
138
|
color: $color-brown;
|
|
136
139
|
padding-top: 20px;
|
|
137
140
|
}
|
|
@@ -4,6 +4,8 @@ import { NextImage, NextLink, type Hub } from "../../types";
|
|
|
4
4
|
import styles from "./styles.module.scss";
|
|
5
5
|
import Arrow from "../../assets/svg/arrow.svg";
|
|
6
6
|
import useDrag from "../../hooks/useDrag";
|
|
7
|
+
import Plus from "./plus.svg";
|
|
8
|
+
import Minus from "./minus.svg";
|
|
7
9
|
|
|
8
10
|
const Hub = ({
|
|
9
11
|
hub,
|
|
@@ -46,8 +48,8 @@ const Hub = ({
|
|
|
46
48
|
}
|
|
47
49
|
}}
|
|
48
50
|
>
|
|
49
|
-
{isActive && <
|
|
50
|
-
{!isActive && <
|
|
51
|
+
{isActive && <Minus />}
|
|
52
|
+
{!isActive && <Plus />}
|
|
51
53
|
</button>
|
|
52
54
|
</div>
|
|
53
55
|
<div className={styles.rows}>
|
|
@@ -88,6 +90,8 @@ const Hub = ({
|
|
|
88
90
|
}}
|
|
89
91
|
>
|
|
90
92
|
{customFields.relatedWork.map((item) => {
|
|
93
|
+
const { thumbnailImage, mainImage } = item.case;
|
|
94
|
+
|
|
91
95
|
return (
|
|
92
96
|
<Link
|
|
93
97
|
href={item.uri}
|
|
@@ -98,7 +102,11 @@ const Hub = ({
|
|
|
98
102
|
>
|
|
99
103
|
<div className={styles.caseImage}>
|
|
100
104
|
<Image
|
|
101
|
-
src={
|
|
105
|
+
src={
|
|
106
|
+
thumbnailImage?.sourceUrl ||
|
|
107
|
+
mainImage?.sourceUrl ||
|
|
108
|
+
""
|
|
109
|
+
}
|
|
102
110
|
alt={item.title}
|
|
103
111
|
fill
|
|
104
112
|
/>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg width="52" height="50" viewBox="0 0 52 50" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M25.9988 45.8327C37.609 45.8327 47.021 36.5053 47.021 24.9993C47.021 13.4934 37.609 4.16602 25.9988 4.16602C14.3885 4.16602 4.97656 13.4934 4.97656 24.9993C4.97656 36.5053 14.3885 45.8327 25.9988 45.8327Z" stroke="#491B11" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
|
|
3
|
+
<path d="M17.5898 25H34.4076" stroke="#491B11" stroke-width="4" stroke-linecap="square" stroke-linejoin="round"/>
|
|
4
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg width="52" height="50" viewBox="0 0 52 50" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M25.9988 45.8327C37.609 45.8327 47.021 36.5053 47.021 24.9993C47.021 13.4934 37.609 4.16602 25.9988 4.16602C14.3885 4.16602 4.97656 13.4934 4.97656 24.9993C4.97656 36.5053 14.3885 45.8327 25.9988 45.8327Z" stroke="#491B11" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
|
|
3
|
+
<path d="M26 16.666V33.3327" stroke="#491B11" stroke-width="4" stroke-linecap="square" stroke-linejoin="round"/>
|
|
4
|
+
<path d="M17.5898 25H34.4076" stroke="#491B11" stroke-width="4" stroke-linecap="square" stroke-linejoin="round"/>
|
|
5
|
+
</svg>
|
|
@@ -16,10 +16,6 @@
|
|
|
16
16
|
.rows {
|
|
17
17
|
display: block;
|
|
18
18
|
}
|
|
19
|
-
|
|
20
|
-
.icon span {
|
|
21
|
-
top: -2px;
|
|
22
|
-
}
|
|
23
19
|
}
|
|
24
20
|
|
|
25
21
|
&:before {
|
|
@@ -58,7 +54,6 @@
|
|
|
58
54
|
|
|
59
55
|
.title {
|
|
60
56
|
font-size: 42px;
|
|
61
|
-
font-family: $font-secondary;
|
|
62
57
|
width: 360px;
|
|
63
58
|
|
|
64
59
|
@media #{$QUERY-md} {
|
|
@@ -89,19 +84,15 @@
|
|
|
89
84
|
}
|
|
90
85
|
|
|
91
86
|
.icon {
|
|
92
|
-
width:
|
|
93
|
-
height:
|
|
94
|
-
border-radius: 50%;
|
|
95
|
-
border: solid 2px $color-brown;
|
|
87
|
+
width: 52px;
|
|
88
|
+
height: 50px;
|
|
96
89
|
display: flex;
|
|
97
90
|
align-items: center;
|
|
98
91
|
justify-content: center;
|
|
99
|
-
font-size: 32px;
|
|
100
|
-
line-height: 10px;
|
|
101
|
-
background-color: transparent;
|
|
102
92
|
cursor: pointer;
|
|
103
|
-
color: $color-brown;
|
|
104
93
|
flex-shrink: 0;
|
|
94
|
+
background-color: transparent;
|
|
95
|
+
border: none;
|
|
105
96
|
|
|
106
97
|
@media #{$QUERY-sm} {
|
|
107
98
|
width: 24px;
|
|
@@ -110,10 +101,6 @@
|
|
|
110
101
|
position: relative;
|
|
111
102
|
top: 8px;
|
|
112
103
|
}
|
|
113
|
-
|
|
114
|
-
span {
|
|
115
|
-
position: relative;
|
|
116
|
-
}
|
|
117
104
|
}
|
|
118
105
|
|
|
119
106
|
.rows {
|
|
@@ -15,13 +15,19 @@
|
|
|
15
15
|
.dropdown {
|
|
16
16
|
position: relative;
|
|
17
17
|
width: 150px;
|
|
18
|
+
transition: width 0.3s;
|
|
18
19
|
|
|
19
20
|
@media #{$QUERY-sm} {
|
|
20
|
-
width: 132px;
|
|
21
|
+
width: 132px !important;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
&:hover {
|
|
25
|
+
width: 200px;
|
|
21
26
|
}
|
|
22
27
|
|
|
23
28
|
&.active {
|
|
24
29
|
z-index: 3;
|
|
30
|
+
width: 200px;
|
|
25
31
|
}
|
|
26
32
|
}
|
|
27
33
|
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
.officesTeaser {
|
|
4
4
|
display: flex;
|
|
5
5
|
padding: 64px 0;
|
|
6
|
+
overflow: hidden;
|
|
6
7
|
|
|
7
8
|
@media #{$QUERY-xl} {
|
|
8
9
|
display: block;
|
|
@@ -26,7 +27,7 @@
|
|
|
26
27
|
|
|
27
28
|
.heading {
|
|
28
29
|
font-size: 42px;
|
|
29
|
-
|
|
30
|
+
line-height: 1.1;
|
|
30
31
|
white-space: pre-wrap;
|
|
31
32
|
color: $color-brown;
|
|
32
33
|
|
|
@@ -31,6 +31,9 @@
|
|
|
31
31
|
|
|
32
32
|
@media #{$QUERY-sm} {
|
|
33
33
|
width: calc(50% - 12px);
|
|
34
|
+
display: flex;
|
|
35
|
+
align-items: center;
|
|
36
|
+
justify-content: center;
|
|
34
37
|
}
|
|
35
38
|
}
|
|
36
39
|
|
|
@@ -40,6 +43,10 @@
|
|
|
40
43
|
height: 40px;
|
|
41
44
|
max-width: 100%;
|
|
42
45
|
|
|
46
|
+
@media #{$QUERY-sm} {
|
|
47
|
+
width: 120px;
|
|
48
|
+
}
|
|
49
|
+
|
|
43
50
|
img {
|
|
44
51
|
object-fit: contain;
|
|
45
52
|
}
|
|
@@ -3,6 +3,7 @@ import styles from "./styles.module.scss";
|
|
|
3
3
|
import Plus from "../../assets/svg/plus.svg";
|
|
4
4
|
import { NextLink } from "../../types";
|
|
5
5
|
import { motion } from "framer-motion";
|
|
6
|
+
import Arrow from "../../assets/svg/arrow.svg";
|
|
6
7
|
|
|
7
8
|
const Tile = ({
|
|
8
9
|
text,
|
|
@@ -11,6 +12,7 @@ const Tile = ({
|
|
|
11
12
|
i,
|
|
12
13
|
onClick,
|
|
13
14
|
Link,
|
|
15
|
+
hoverText,
|
|
14
16
|
}: {
|
|
15
17
|
text: string;
|
|
16
18
|
background: "pink" | "yellow" | "brown" | "blue";
|
|
@@ -18,6 +20,7 @@ const Tile = ({
|
|
|
18
20
|
i: number;
|
|
19
21
|
onClick?: MouseEventHandler<HTMLAnchorElement>;
|
|
20
22
|
Link: NextLink;
|
|
23
|
+
hoverText: string;
|
|
21
24
|
}) => {
|
|
22
25
|
return (
|
|
23
26
|
<motion.div
|
|
@@ -42,9 +45,17 @@ const Tile = ({
|
|
|
42
45
|
draggable="false"
|
|
43
46
|
className={`${styles.tile} ${styles[background]}`}
|
|
44
47
|
>
|
|
45
|
-
<div className={styles.
|
|
46
|
-
|
|
47
|
-
<
|
|
48
|
+
<div className={styles.face}>
|
|
49
|
+
<div className={styles.text}>{text}</div>
|
|
50
|
+
<div>
|
|
51
|
+
<Plus />
|
|
52
|
+
</div>
|
|
53
|
+
</div>
|
|
54
|
+
<div className={styles.tails}>
|
|
55
|
+
<div className={styles.tailsText}>{hoverText}</div>
|
|
56
|
+
<div>
|
|
57
|
+
Learn More <Arrow />
|
|
58
|
+
</div>
|
|
48
59
|
</div>
|
|
49
60
|
</Link>
|
|
50
61
|
</motion.div>
|
|
@@ -21,6 +21,9 @@ const ServiceHubsTeaser = ({
|
|
|
21
21
|
id: string;
|
|
22
22
|
uri: string;
|
|
23
23
|
title: string;
|
|
24
|
+
customFieldsHub: {
|
|
25
|
+
heading: string;
|
|
26
|
+
};
|
|
24
27
|
}[];
|
|
25
28
|
Link: NextLink;
|
|
26
29
|
}) => {
|
|
@@ -53,6 +56,7 @@ const ServiceHubsTeaser = ({
|
|
|
53
56
|
<Tile
|
|
54
57
|
key={tile.id}
|
|
55
58
|
text={tile.title}
|
|
59
|
+
hoverText={tile.customFieldsHub.heading}
|
|
56
60
|
background={background}
|
|
57
61
|
href={tile.uri}
|
|
58
62
|
i={i}
|
|
@@ -61,7 +61,6 @@
|
|
|
61
61
|
background-color: $color-pink;
|
|
62
62
|
color: $color-brown;
|
|
63
63
|
font-size: 34px;
|
|
64
|
-
font-family: $font-secondary;
|
|
65
64
|
width: 100%;
|
|
66
65
|
height: 100%;
|
|
67
66
|
|
|
@@ -91,6 +90,16 @@
|
|
|
91
90
|
stroke: $color-white;
|
|
92
91
|
}
|
|
93
92
|
}
|
|
93
|
+
|
|
94
|
+
&:hover {
|
|
95
|
+
.face {
|
|
96
|
+
display: none;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.tails {
|
|
100
|
+
display: block;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
94
103
|
}
|
|
95
104
|
|
|
96
105
|
.text {
|
|
@@ -100,3 +109,18 @@
|
|
|
100
109
|
margin-bottom: 0;
|
|
101
110
|
}
|
|
102
111
|
}
|
|
112
|
+
|
|
113
|
+
.face {
|
|
114
|
+
display: block;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.tails {
|
|
118
|
+
text-align: left;
|
|
119
|
+
padding-left: 30px;
|
|
120
|
+
display: none;
|
|
121
|
+
font-size: 34px;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.tailsText {
|
|
125
|
+
margin-bottom: 30px;
|
|
126
|
+
}
|
|
@@ -1,20 +1,45 @@
|
|
|
1
1
|
import styles from "./styles.module.scss";
|
|
2
2
|
import Plus from "../../assets/svg/plus.svg";
|
|
3
|
+
import { motion } from "framer-motion";
|
|
3
4
|
|
|
4
5
|
const Tile = ({
|
|
5
6
|
text,
|
|
6
7
|
background,
|
|
8
|
+
hoverText,
|
|
9
|
+
i,
|
|
7
10
|
}: {
|
|
8
11
|
text: string;
|
|
12
|
+
hoverText: string;
|
|
9
13
|
background: "pink" | "yellow" | "brown";
|
|
14
|
+
i: number;
|
|
10
15
|
}) => {
|
|
11
16
|
return (
|
|
12
|
-
<div
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
17
|
+
<motion.div
|
|
18
|
+
className={`${styles.tile} ${styles[background]}`}
|
|
19
|
+
whileHover={{
|
|
20
|
+
scale: 1.08,
|
|
21
|
+
rotate: i % 2 === 0 ? -3 : 3,
|
|
22
|
+
boxShadow: "0px 10px 20px rgba(0,0,0,0.2)",
|
|
23
|
+
y: [0, Math.random() * 12 - 6, 0],
|
|
24
|
+
transition: {
|
|
25
|
+
y: {
|
|
26
|
+
duration: 2,
|
|
27
|
+
repeat: Infinity,
|
|
28
|
+
ease: "easeInOut",
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
}}
|
|
32
|
+
>
|
|
33
|
+
<div className={styles.face}>
|
|
34
|
+
<div className={styles.text}>{text}</div>
|
|
35
|
+
<div>
|
|
36
|
+
<Plus />
|
|
37
|
+
</div>
|
|
16
38
|
</div>
|
|
17
|
-
|
|
39
|
+
<div className={styles.tails}>
|
|
40
|
+
<div className={styles.tailsText}>{hoverText}</div>
|
|
41
|
+
</div>
|
|
42
|
+
</motion.div>
|
|
18
43
|
);
|
|
19
44
|
};
|
|
20
45
|
|
|
@@ -11,6 +11,7 @@ const Tiles = ({
|
|
|
11
11
|
}: {
|
|
12
12
|
tiles: {
|
|
13
13
|
heading?: string;
|
|
14
|
+
hoverText?: string;
|
|
14
15
|
}[];
|
|
15
16
|
}) => {
|
|
16
17
|
const sectionRef = useRef(null);
|
|
@@ -43,7 +44,9 @@ const Tiles = ({
|
|
|
43
44
|
<Tile
|
|
44
45
|
key={tile.heading}
|
|
45
46
|
text={tile.heading || ""}
|
|
47
|
+
hoverText={tile.hoverText || ""}
|
|
46
48
|
background={background}
|
|
49
|
+
i={i}
|
|
47
50
|
/>
|
|
48
51
|
);
|
|
49
52
|
})}
|
|
@@ -20,7 +20,6 @@
|
|
|
20
20
|
background-color: $color-pink;
|
|
21
21
|
color: $color-brown;
|
|
22
22
|
font-size: 42px;
|
|
23
|
-
font-family: $font-secondary;
|
|
24
23
|
flex-shrink: 0;
|
|
25
24
|
|
|
26
25
|
@media screen and (max-width: $screen-sm) {
|
|
@@ -45,6 +44,16 @@
|
|
|
45
44
|
stroke: $color-pink;
|
|
46
45
|
}
|
|
47
46
|
}
|
|
47
|
+
|
|
48
|
+
&:hover {
|
|
49
|
+
.face {
|
|
50
|
+
display: none;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.tails {
|
|
54
|
+
display: block;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
48
57
|
}
|
|
49
58
|
|
|
50
59
|
.text {
|
|
@@ -58,3 +67,32 @@
|
|
|
58
67
|
margin-bottom: 0;
|
|
59
68
|
}
|
|
60
69
|
}
|
|
70
|
+
|
|
71
|
+
.face {
|
|
72
|
+
display: block;
|
|
73
|
+
|
|
74
|
+
@media #{$QUERY-sm} {
|
|
75
|
+
font-size: 35px;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
svg {
|
|
79
|
+
@media #{$QUERY-sm} {
|
|
80
|
+
width: 42px;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.tails {
|
|
86
|
+
text-align: left;
|
|
87
|
+
padding: 30px;
|
|
88
|
+
display: none;
|
|
89
|
+
font-size: 34px;
|
|
90
|
+
|
|
91
|
+
@media screen and (max-width: $screen-sm) {
|
|
92
|
+
font-size: 25px;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.tailsText {
|
|
97
|
+
margin-bottom: 30px;
|
|
98
|
+
}
|
|
@@ -40,33 +40,41 @@ function Other({
|
|
|
40
40
|
onMouseLeave={handleMouseUp}
|
|
41
41
|
style={dragStyle as React.CSSProperties}
|
|
42
42
|
>
|
|
43
|
-
{cases.map((item) =>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
43
|
+
{cases.map((item) => {
|
|
44
|
+
const { thumbnailImage, mainImage } = item.case;
|
|
45
|
+
|
|
46
|
+
return (
|
|
47
|
+
<div key={item.id} className={styles.case}>
|
|
48
|
+
<Link href={item.uri}>
|
|
49
|
+
<div className={styles.image}>
|
|
50
|
+
{item.case.mainImage && (
|
|
51
|
+
<Image
|
|
52
|
+
className={styles.image}
|
|
53
|
+
src={
|
|
54
|
+
thumbnailImage?.sourceUrl ||
|
|
55
|
+
mainImage?.sourceUrl ||
|
|
56
|
+
""
|
|
57
|
+
}
|
|
58
|
+
alt={item.title || ""}
|
|
59
|
+
width={308}
|
|
60
|
+
height={220}
|
|
61
|
+
/>
|
|
62
|
+
)}
|
|
61
63
|
</div>
|
|
62
|
-
<div className={styles.
|
|
63
|
-
|
|
64
|
-
|
|
64
|
+
<div className={styles.texts}>
|
|
65
|
+
<div>
|
|
66
|
+
<div className={styles.title}>{item.title}</div>
|
|
67
|
+
{item.case.excerpt && <div>{item.case.excerpt}</div>}
|
|
68
|
+
</div>
|
|
69
|
+
<div className={styles.more}>
|
|
70
|
+
{translate("See More")}
|
|
71
|
+
<Arrow />
|
|
72
|
+
</div>
|
|
65
73
|
</div>
|
|
66
|
-
</
|
|
67
|
-
</
|
|
68
|
-
|
|
69
|
-
)
|
|
74
|
+
</Link>
|
|
75
|
+
</div>
|
|
76
|
+
);
|
|
77
|
+
})}
|
|
70
78
|
</div>
|
|
71
79
|
<div className={styles.buttonWrapper}>
|
|
72
80
|
<Link className={styles.button} href="/cases">
|
|
@@ -56,7 +56,7 @@ const More = ({
|
|
|
56
56
|
<>
|
|
57
57
|
{cases.map((item) => {
|
|
58
58
|
if (!item.case) return null;
|
|
59
|
-
const { thumbnailVideo, mainImage } = item.case;
|
|
59
|
+
const { thumbnailVideo, thumbnailImage, mainImage } = item.case;
|
|
60
60
|
|
|
61
61
|
return (
|
|
62
62
|
<div key={item.id} className={styles.case}>
|
|
@@ -64,11 +64,13 @@ const More = ({
|
|
|
64
64
|
{thumbnailVideo && (
|
|
65
65
|
<Video url={thumbnailVideo.mediaItemUrl} Image={Image} />
|
|
66
66
|
)}
|
|
67
|
-
{!thumbnailVideo && mainImage
|
|
67
|
+
{!thumbnailVideo && (mainImage || thumbnailImage) && (
|
|
68
68
|
<div className={styles.imageWrapper}>
|
|
69
69
|
<Image
|
|
70
70
|
className={styles.image}
|
|
71
|
-
src={
|
|
71
|
+
src={
|
|
72
|
+
thumbnailImage?.sourceUrl || mainImage?.sourceUrl || ""
|
|
73
|
+
}
|
|
72
74
|
alt={item.title || ""}
|
|
73
75
|
width={720}
|
|
74
76
|
height={490}
|
|
@@ -79,7 +79,7 @@ function Cases({
|
|
|
79
79
|
<div className={styles.wrapper}>
|
|
80
80
|
{cases.map((item) => {
|
|
81
81
|
if (!item.case) return null;
|
|
82
|
-
const { thumbnailVideo, mainImage } = item.case;
|
|
82
|
+
const { thumbnailVideo, mainImage, thumbnailImage } = item.case;
|
|
83
83
|
|
|
84
84
|
return (
|
|
85
85
|
<div key={item.id} className={styles.case}>
|
|
@@ -91,17 +91,19 @@ function Cases({
|
|
|
91
91
|
Image={Image}
|
|
92
92
|
/>
|
|
93
93
|
)}
|
|
94
|
-
{!thumbnailVideo && mainImage && (
|
|
94
|
+
{!thumbnailVideo && (thumbnailImage || mainImage) && (
|
|
95
95
|
<div className={styles.imageWrapper}>
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
96
|
+
<Image
|
|
97
|
+
className={styles.image}
|
|
98
|
+
src={
|
|
99
|
+
thumbnailImage?.sourceUrl ||
|
|
100
|
+
mainImage?.sourceUrl ||
|
|
101
|
+
""
|
|
102
|
+
}
|
|
103
|
+
alt={item.title || ""}
|
|
104
|
+
width={720}
|
|
105
|
+
height={490}
|
|
106
|
+
/>
|
|
105
107
|
</div>
|
|
106
108
|
)}
|
|
107
109
|
<div className={styles.texts}>
|
|
@@ -14,10 +14,9 @@
|
|
|
14
14
|
font-size: 42px;
|
|
15
15
|
margin-bottom: 46px;
|
|
16
16
|
font-weight: 400;
|
|
17
|
-
font-family: $font-secondary;
|
|
18
17
|
|
|
19
18
|
@media #{$QUERY-sm} {
|
|
20
|
-
font-size:
|
|
19
|
+
font-size: 24px;
|
|
21
20
|
margin-bottom: 32px;
|
|
22
21
|
}
|
|
23
22
|
}
|
|
@@ -57,11 +56,19 @@
|
|
|
57
56
|
font-size: 20px;
|
|
58
57
|
font-weight: 500px;
|
|
59
58
|
margin-bottom: 16px;
|
|
59
|
+
|
|
60
|
+
@media #{$QUERY-sm} {
|
|
61
|
+
font-size: 18px;
|
|
62
|
+
}
|
|
60
63
|
}
|
|
61
64
|
|
|
62
65
|
.text {
|
|
63
66
|
font-size: 18px;
|
|
64
67
|
|
|
68
|
+
@media #{$QUERY-sm} {
|
|
69
|
+
font-size: 16px;
|
|
70
|
+
}
|
|
71
|
+
|
|
65
72
|
strong {
|
|
66
73
|
font-weight: bold;
|
|
67
74
|
}
|
|
@@ -12,7 +12,6 @@
|
|
|
12
12
|
|
|
13
13
|
.title {
|
|
14
14
|
font-size: 42px;
|
|
15
|
-
font-family: $font-secondary;
|
|
16
15
|
margin-bottom: 46px;
|
|
17
16
|
font-weight: 400;
|
|
18
17
|
|
|
@@ -60,7 +59,6 @@
|
|
|
60
59
|
|
|
61
60
|
.heading {
|
|
62
61
|
font-size: 34px;
|
|
63
|
-
font-family: $font-secondary;
|
|
64
62
|
font-weight: 400;
|
|
65
63
|
line-height: 1.2;
|
|
66
64
|
margin-bottom: 24px;
|
|
@@ -25,27 +25,35 @@ function Other({
|
|
|
25
25
|
</div>
|
|
26
26
|
</div>
|
|
27
27
|
<div className={styles.cases}>
|
|
28
|
-
{cases.map((item) =>
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
28
|
+
{cases.map((item) => {
|
|
29
|
+
const { thumbnailImage, mainImage } = item.case;
|
|
30
|
+
|
|
31
|
+
return (
|
|
32
|
+
<div key={item.id} className={styles.case}>
|
|
33
|
+
<Link href={item.uri}>
|
|
34
|
+
<div className={styles.image}>
|
|
35
|
+
{item.case.mainImage && (
|
|
36
|
+
<Image
|
|
37
|
+
className={styles.image}
|
|
38
|
+
src={
|
|
39
|
+
thumbnailImage?.sourceUrl ||
|
|
40
|
+
mainImage?.sourceUrl ||
|
|
41
|
+
""
|
|
42
|
+
}
|
|
43
|
+
alt={item.title || ""}
|
|
44
|
+
width={400}
|
|
45
|
+
height={490}
|
|
46
|
+
/>
|
|
47
|
+
)}
|
|
48
|
+
</div>
|
|
49
|
+
<div className={styles.texts}>
|
|
50
|
+
<div>{item.title}</div>
|
|
51
|
+
<Arrow />
|
|
52
|
+
</div>
|
|
53
|
+
</Link>
|
|
54
|
+
</div>
|
|
55
|
+
);
|
|
56
|
+
})}
|
|
49
57
|
</div>
|
|
50
58
|
</div>
|
|
51
59
|
</Container>
|
|
@@ -19,6 +19,7 @@ type AboutPage = {
|
|
|
19
19
|
tilesHeading?: string;
|
|
20
20
|
tiles?: {
|
|
21
21
|
heading?: string;
|
|
22
|
+
hoverText?: string;
|
|
22
23
|
}[];
|
|
23
24
|
quotes?: {
|
|
24
25
|
name?: string;
|
|
@@ -119,6 +120,7 @@ export default async function getAboutPage({
|
|
|
119
120
|
tilesHeading
|
|
120
121
|
tiles {
|
|
121
122
|
heading
|
|
123
|
+
hoverText
|
|
122
124
|
}
|
|
123
125
|
quotes {
|
|
124
126
|
name
|
package/lib/queries/getCases.ts
CHANGED
|
@@ -29,6 +29,9 @@ type HomePage = {
|
|
|
29
29
|
title: string;
|
|
30
30
|
case: {
|
|
31
31
|
caption: string;
|
|
32
|
+
thumbnailImage: {
|
|
33
|
+
sourceUrl: string;
|
|
34
|
+
};
|
|
32
35
|
mainImage: {
|
|
33
36
|
sourceUrl: string;
|
|
34
37
|
};
|
|
@@ -68,6 +71,9 @@ type HomePage = {
|
|
|
68
71
|
id: string;
|
|
69
72
|
title: string;
|
|
70
73
|
uri: string;
|
|
74
|
+
customFieldsHub: {
|
|
75
|
+
heading: string;
|
|
76
|
+
};
|
|
71
77
|
}[];
|
|
72
78
|
posts: PostPreview[];
|
|
73
79
|
contactPage: {
|
|
@@ -146,6 +152,9 @@ export default async function getHomePage({
|
|
|
146
152
|
title
|
|
147
153
|
case {
|
|
148
154
|
caption
|
|
155
|
+
thumbnailImage {
|
|
156
|
+
sourceUrl
|
|
157
|
+
}
|
|
149
158
|
mainImage {
|
|
150
159
|
sourceUrl
|
|
151
160
|
}
|
|
@@ -187,6 +196,9 @@ export default async function getHomePage({
|
|
|
187
196
|
id
|
|
188
197
|
title
|
|
189
198
|
uri
|
|
199
|
+
customFieldsHub {
|
|
200
|
+
heading
|
|
201
|
+
}
|
|
190
202
|
}
|
|
191
203
|
}
|
|
192
204
|
posts(first: 3, where: {language: ${language}}) {
|
|
@@ -50,6 +50,9 @@ export default async function getCaseBySlug({
|
|
|
50
50
|
title
|
|
51
51
|
uri
|
|
52
52
|
case {
|
|
53
|
+
thumbnailImage {
|
|
54
|
+
sourceUrl
|
|
55
|
+
}
|
|
53
56
|
mainImage {
|
|
54
57
|
sourceUrl
|
|
55
58
|
}
|
|
@@ -64,6 +67,9 @@ export default async function getCaseBySlug({
|
|
|
64
67
|
title
|
|
65
68
|
uri
|
|
66
69
|
case {
|
|
70
|
+
thumbnailImage {
|
|
71
|
+
sourceUrl
|
|
72
|
+
}
|
|
67
73
|
mainImage {
|
|
68
74
|
sourceUrl
|
|
69
75
|
}
|
package/lib/queries/getHubs.ts
CHANGED
|
@@ -56,6 +56,9 @@ export default async function getCases(): Promise<{
|
|
|
56
56
|
title
|
|
57
57
|
uri
|
|
58
58
|
case {
|
|
59
|
+
thumbnailImage {
|
|
60
|
+
sourceUrl
|
|
61
|
+
}
|
|
59
62
|
mainImage {
|
|
60
63
|
sourceUrl
|
|
61
64
|
}
|
|
@@ -70,6 +73,9 @@ export default async function getCases(): Promise<{
|
|
|
70
73
|
title
|
|
71
74
|
uri
|
|
72
75
|
case {
|
|
76
|
+
thumbnailImage {
|
|
77
|
+
sourceUrl
|
|
78
|
+
}
|
|
73
79
|
mainImage {
|
|
74
80
|
sourceUrl
|
|
75
81
|
}
|
package/lib/types/index.ts
CHANGED