foundry-component-library 0.2.14 → 0.2.16
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/components/Awards/index.tsx +3 -3
- package/lib/components/Awards/styles.module.scss +6 -0
- package/lib/components/Footer/index.tsx +9 -3
- package/lib/components/Header/index.tsx +3 -1
- package/lib/components/PartnerNetwork/index.tsx +1 -6
- package/lib/components/PartnerNetwork/styles.module.scss +5 -12
- package/lib/components/ServiceHubsTeaserEffects/styles.module.scss +7 -12
- package/lib/components/Tiles/styles.module.scss +1 -0
- package/lib/components/case/Other/index.tsx +2 -2
- package/lib/components/case/Top/styles.module.scss +11 -13
- package/lib/components/cases/Top/Dropdown.tsx +32 -9
- package/lib/components/contact/Accounts/index.tsx +0 -7
- package/lib/queries/client.ts +2 -1
- package/lib/queries/getCases.ts +1 -0
- package/lib/queries/getCasesPage.ts +1 -0
- package/package.json +1 -1
|
@@ -38,7 +38,7 @@ const Awards = ({
|
|
|
38
38
|
if (!awards) return null;
|
|
39
39
|
|
|
40
40
|
// Duplicate awards to create seamless looping
|
|
41
|
-
const marqueeItems = [...awards, ...awards];
|
|
41
|
+
const marqueeItems = awards.length < 5 ? awards : [...awards, ...awards];
|
|
42
42
|
|
|
43
43
|
return (
|
|
44
44
|
<motion.div
|
|
@@ -52,9 +52,9 @@ const Awards = ({
|
|
|
52
52
|
<Container noMobilePadding>
|
|
53
53
|
<div className={styles.marqueeWrapper}>
|
|
54
54
|
<motion.div
|
|
55
|
-
className={styles.marquee}
|
|
55
|
+
className={`${styles.marquee} ${awards.length < 5 ? styles.noAnimation : ""}`}
|
|
56
56
|
variants={marqueeVariants}
|
|
57
|
-
animate="animate">
|
|
57
|
+
animate={awards.length < 5 ? "" : "animate"}>
|
|
58
58
|
{marqueeItems.map((award, i) => {
|
|
59
59
|
const { image, heading, text } = award;
|
|
60
60
|
if (!image) return null;
|
|
@@ -34,11 +34,17 @@
|
|
|
34
34
|
gap: 48px;
|
|
35
35
|
width: max-content;
|
|
36
36
|
animation: marquee 20s linear infinite;
|
|
37
|
+
min-width: 100%;
|
|
37
38
|
|
|
38
39
|
@media #{$QUERY-sm} {
|
|
39
40
|
gap: 24px;
|
|
40
41
|
animation-duration: 16s;
|
|
41
42
|
}
|
|
43
|
+
|
|
44
|
+
&.noAnimation {
|
|
45
|
+
animation: none;
|
|
46
|
+
gap: 0;
|
|
47
|
+
}
|
|
42
48
|
}
|
|
43
49
|
|
|
44
50
|
/* Remove if using marquee (track should scroll) */
|
|
@@ -87,13 +87,19 @@ function Footer({
|
|
|
87
87
|
<div className={styles.socialHeading}>Follow Us</div>
|
|
88
88
|
<ul className={styles.menuSocial}>
|
|
89
89
|
<li className={styles.menuItem}>
|
|
90
|
-
<Link href={instagram}>
|
|
90
|
+
<Link href={instagram} target="_blank">
|
|
91
|
+
Instagram
|
|
92
|
+
</Link>
|
|
91
93
|
</li>
|
|
92
94
|
<li className={styles.menuItem}>
|
|
93
|
-
<Link href={facebook}>
|
|
95
|
+
<Link href={facebook} target="_blank">
|
|
96
|
+
Facebook
|
|
97
|
+
</Link>
|
|
94
98
|
</li>
|
|
95
99
|
<li className={styles.menuItem}>
|
|
96
|
-
<Link href={linkedin}>
|
|
100
|
+
<Link href={linkedin} target="_blank">
|
|
101
|
+
LinkedIn
|
|
102
|
+
</Link>
|
|
97
103
|
</li>
|
|
98
104
|
</ul>
|
|
99
105
|
</div>
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import TextSection from "../TextSection";
|
|
2
2
|
import styles from "./styles.module.scss";
|
|
3
3
|
import Container from "../Container";
|
|
4
|
-
import { NextImage } from "../../types";
|
|
5
4
|
|
|
6
5
|
const PartnerNetwork = ({
|
|
7
6
|
caption,
|
|
8
7
|
heading,
|
|
9
8
|
text,
|
|
10
9
|
partners,
|
|
11
|
-
Image,
|
|
12
10
|
}: {
|
|
13
11
|
caption?: string;
|
|
14
12
|
heading?: string;
|
|
@@ -18,7 +16,6 @@ const PartnerNetwork = ({
|
|
|
18
16
|
sourceUrl: string;
|
|
19
17
|
};
|
|
20
18
|
}[];
|
|
21
|
-
Image: NextImage;
|
|
22
19
|
}) => {
|
|
23
20
|
if (!partners) return;
|
|
24
21
|
|
|
@@ -31,9 +28,7 @@ const PartnerNetwork = ({
|
|
|
31
28
|
{partners.map((partner) => {
|
|
32
29
|
return (
|
|
33
30
|
<div key={partner.image?.sourceUrl} className={styles.partner}>
|
|
34
|
-
<
|
|
35
|
-
<Image src={partner.image?.sourceUrl || ""} alt="" fill />
|
|
36
|
-
</div>
|
|
31
|
+
<img src={partner.image?.sourceUrl || ""} alt="" />
|
|
37
32
|
</div>
|
|
38
33
|
);
|
|
39
34
|
})}
|
|
@@ -28,6 +28,9 @@
|
|
|
28
28
|
}
|
|
29
29
|
.partner {
|
|
30
30
|
width: 33.333%;
|
|
31
|
+
display: flex;
|
|
32
|
+
align-items: center;
|
|
33
|
+
justify-content: center;
|
|
31
34
|
|
|
32
35
|
@media #{$QUERY-sm} {
|
|
33
36
|
width: calc(50% - 12px);
|
|
@@ -35,19 +38,9 @@
|
|
|
35
38
|
align-items: center;
|
|
36
39
|
justify-content: center;
|
|
37
40
|
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
.image {
|
|
41
|
-
position: relative;
|
|
42
|
-
width: 200px;
|
|
43
|
-
height: 40px;
|
|
44
|
-
max-width: 100%;
|
|
45
|
-
|
|
46
|
-
@media #{$QUERY-sm} {
|
|
47
|
-
width: 120px;
|
|
48
|
-
}
|
|
49
41
|
|
|
50
42
|
img {
|
|
51
|
-
|
|
43
|
+
max-width: 100%;
|
|
44
|
+
max-height: 75px;
|
|
52
45
|
}
|
|
53
46
|
}
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
@media #{$QUERY-sm} {
|
|
20
20
|
padding-bottom: 32px;
|
|
21
|
+
gap: 0;
|
|
21
22
|
}
|
|
22
23
|
}
|
|
23
24
|
|
|
@@ -32,21 +33,15 @@
|
|
|
32
33
|
z-index: 1;
|
|
33
34
|
}
|
|
34
35
|
|
|
35
|
-
@media
|
|
36
|
-
|
|
36
|
+
@media #{$QUERY-md} {
|
|
37
|
+
width: calc(50% - 12px);
|
|
37
38
|
height: 300px;
|
|
38
39
|
}
|
|
39
40
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
&:last-child {
|
|
47
|
-
@media #{$QUERY-sm} {
|
|
48
|
-
margin-right: 20px;
|
|
49
|
-
}
|
|
41
|
+
@media #{$QUERY-sm} {
|
|
42
|
+
width: 100%;
|
|
43
|
+
height: auto;
|
|
44
|
+
aspect-ratio: 1 / 1;
|
|
50
45
|
}
|
|
51
46
|
}
|
|
52
47
|
|
|
@@ -38,9 +38,9 @@ function Other({
|
|
|
38
38
|
onMouseMove={handleMouseMove}
|
|
39
39
|
onMouseUp={handleMouseUp}
|
|
40
40
|
onMouseLeave={handleMouseUp}
|
|
41
|
-
style={dragStyle as React.CSSProperties}
|
|
42
|
-
>
|
|
41
|
+
style={dragStyle as React.CSSProperties}>
|
|
43
42
|
{cases.map((item) => {
|
|
43
|
+
if (!item) return;
|
|
44
44
|
const { thumbnailImage, mainImage } = item.case;
|
|
45
45
|
|
|
46
46
|
return (
|
|
@@ -137,17 +137,14 @@
|
|
|
137
137
|
}
|
|
138
138
|
|
|
139
139
|
.awards {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
@media #{$QUERY-sm} {
|
|
145
|
-
gap: 16px;
|
|
146
|
-
}
|
|
140
|
+
width: 300px;
|
|
141
|
+
position: relative;
|
|
142
|
+
top: -2px;
|
|
147
143
|
}
|
|
148
144
|
|
|
149
145
|
.award {
|
|
150
146
|
display: flex;
|
|
147
|
+
align-items: center;
|
|
151
148
|
|
|
152
149
|
@media #{$QUERY-sm} {
|
|
153
150
|
max-width: 106px;
|
|
@@ -164,12 +161,10 @@
|
|
|
164
161
|
}
|
|
165
162
|
|
|
166
163
|
.awardImage {
|
|
167
|
-
|
|
168
|
-
|
|
164
|
+
width: 100px;
|
|
165
|
+
height: 100px;
|
|
169
166
|
flex-shrink: 0;
|
|
170
167
|
position: relative;
|
|
171
|
-
max-height: 100px;
|
|
172
|
-
max-width: 100%;
|
|
173
168
|
|
|
174
169
|
img {
|
|
175
170
|
width: 100%;
|
|
@@ -179,11 +174,14 @@
|
|
|
179
174
|
}
|
|
180
175
|
|
|
181
176
|
.awardHeading {
|
|
182
|
-
|
|
183
|
-
margin-bottom: 10px;
|
|
177
|
+
margin-bottom: 5px;
|
|
184
178
|
font-family: $font-secondary;
|
|
185
179
|
}
|
|
186
180
|
|
|
181
|
+
.awardText {
|
|
182
|
+
font-size: 14px;
|
|
183
|
+
}
|
|
184
|
+
|
|
187
185
|
.mainImage {
|
|
188
186
|
position: relative;
|
|
189
187
|
width: 100%;
|
|
@@ -6,6 +6,31 @@ import CaretDown from "../../../assets/svg/caret-down.svg";
|
|
|
6
6
|
import useClickOutside from "../../../hooks/useClickOutside";
|
|
7
7
|
import { NextRouter } from "../../../types";
|
|
8
8
|
|
|
9
|
+
const servicesDisplayLabels: Record<string, string> = {
|
|
10
|
+
"Brand Identity": "Brand Identity",
|
|
11
|
+
"Advertising & Campaigning": "Advertising & Campaigning",
|
|
12
|
+
"Strategy & Growth": "Strategy & Growth",
|
|
13
|
+
"Social Media & Influencer Marketing": "Social Media & Influencer Marketing",
|
|
14
|
+
"Media & Performance": "Media & Performance",
|
|
15
|
+
"Content Creation & Production": "Content Creation & Production",
|
|
16
|
+
"B2B & Thought-Leadership": "B2B & Thought-Leadership",
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
const industriesDisplayLabels: Record<string, string> = {
|
|
20
|
+
"Banken & Versicherungen": "Banking & Insurance",
|
|
21
|
+
FMCG: "FMCG",
|
|
22
|
+
"Gesundheit & Wellness": "Health & Wellness",
|
|
23
|
+
"Handel & E-Commerce": "Retail & E-Commerce",
|
|
24
|
+
Lifestyle: "Lifestyle",
|
|
25
|
+
"Mobilität & Transport": "Mobility & Transport",
|
|
26
|
+
"Forschung & Bildung": "Research & Education",
|
|
27
|
+
"Hospitality & Real Estate": "Hospitality & Real Estate",
|
|
28
|
+
"Öffentlicher Sektor & Non-Profit": "Public Sector & Non-Profit",
|
|
29
|
+
Versorgungsunternehmen: "Utilities",
|
|
30
|
+
"Konsumgüter & Technologie": "Consumer Goods & Technology",
|
|
31
|
+
Dienstleister: "Service Providers",
|
|
32
|
+
};
|
|
33
|
+
|
|
9
34
|
const Dropdown = ({
|
|
10
35
|
heading,
|
|
11
36
|
items,
|
|
@@ -47,12 +72,10 @@ const Dropdown = ({
|
|
|
47
72
|
return (
|
|
48
73
|
<div
|
|
49
74
|
className={`${styles.dropdown} ${isOpen ? styles.active : ""}`}
|
|
50
|
-
ref={ref}
|
|
51
|
-
>
|
|
75
|
+
ref={ref}>
|
|
52
76
|
<button
|
|
53
77
|
onClick={toggleOpen}
|
|
54
|
-
className={`${styles.dropdownHeading} ${isOpen ? styles.active : ""}`}
|
|
55
|
-
>
|
|
78
|
+
className={`${styles.dropdownHeading} ${isOpen ? styles.active : ""}`}>
|
|
56
79
|
<span>{items.includes(selected.tag) ? selected.tag : heading}</span>
|
|
57
80
|
<CaretDown />
|
|
58
81
|
</button>
|
|
@@ -64,8 +87,7 @@ const Dropdown = ({
|
|
|
64
87
|
animate={{ opacity: 1, y: 0 }}
|
|
65
88
|
exit={{ opacity: 0, y: -5 }}
|
|
66
89
|
transition={{ duration: 0.2 }}
|
|
67
|
-
className={styles.dropdownInner}
|
|
68
|
-
>
|
|
90
|
+
className={styles.dropdownInner}>
|
|
69
91
|
{items.map((option) => (
|
|
70
92
|
<motion.li
|
|
71
93
|
key={option}
|
|
@@ -79,9 +101,10 @@ const Dropdown = ({
|
|
|
79
101
|
}}
|
|
80
102
|
className={`${styles.option} ${
|
|
81
103
|
selected.tag === option ? styles.active : ""
|
|
82
|
-
}`}
|
|
83
|
-
|
|
84
|
-
|
|
104
|
+
}`}>
|
|
105
|
+
{heading === "Industry"
|
|
106
|
+
? industriesDisplayLabels[option]
|
|
107
|
+
: servicesDisplayLabels[option]}
|
|
85
108
|
</motion.li>
|
|
86
109
|
))}
|
|
87
110
|
</motion.ul>
|
|
@@ -27,13 +27,6 @@ function Accounts({
|
|
|
27
27
|
<Container>
|
|
28
28
|
<h2 className={styles.heading}>{bankTitle}</h2>
|
|
29
29
|
<div className={styles.wrapper}>
|
|
30
|
-
<div className={styles.column}>
|
|
31
|
-
<div className={`${styles.subheading}`}>{berlinHeading}</div>
|
|
32
|
-
<div
|
|
33
|
-
className={styles.text}
|
|
34
|
-
dangerouslySetInnerHTML={{ __html: berlinDetails }}
|
|
35
|
-
/>
|
|
36
|
-
</div>
|
|
37
30
|
<div className={styles.column}>
|
|
38
31
|
<div className={`${styles.subheading}`}>{swissHeading}</div>
|
|
39
32
|
<div
|
package/lib/queries/client.ts
CHANGED
|
@@ -8,13 +8,14 @@ const headers: Record<string, string> = {
|
|
|
8
8
|
|
|
9
9
|
if (process.env.WP_PREVIEW_USER && process.env.WP_PREVIEW_PASS) {
|
|
10
10
|
const auth = Buffer.from(`admin:${process.env.WP_PREVIEW_PASS}`).toString(
|
|
11
|
-
"base64"
|
|
11
|
+
"base64",
|
|
12
12
|
);
|
|
13
13
|
headers["Authorization"] = `Basic ${auth}`;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
const graphqlClient = new GraphQLClient(`${baseUrl}/graphql`, {
|
|
17
17
|
headers,
|
|
18
|
+
errorPolicy: "all",
|
|
18
19
|
});
|
|
19
20
|
|
|
20
21
|
export default graphqlClient;
|
package/lib/queries/getCases.ts
CHANGED
|
@@ -95,6 +95,7 @@ export default async function getCasesPage({
|
|
|
95
95
|
hasCategoryTerm ? "caseCategory: $categorySlug" : "",
|
|
96
96
|
exclude ? "notIn: $exclude" : "",
|
|
97
97
|
"language: $language",
|
|
98
|
+
"orderby: { field: MENU_ORDER, order: ASC }",
|
|
98
99
|
page
|
|
99
100
|
? `offsetPagination:{ offset: ${(page - 1) * perPage}, size: ${perPage} }`
|
|
100
101
|
: "",
|