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.
@@ -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}>Instagram</Link>
90
+ <Link href={instagram} target="_blank">
91
+ Instagram
92
+ </Link>
91
93
  </li>
92
94
  <li className={styles.menuItem}>
93
- <Link href={facebook}>Facebook</Link>
95
+ <Link href={facebook} target="_blank">
96
+ Facebook
97
+ </Link>
94
98
  </li>
95
99
  <li className={styles.menuItem}>
96
- <Link href={linkedin}>LinkedIn</Link>
100
+ <Link href={linkedin} target="_blank">
101
+ LinkedIn
102
+ </Link>
97
103
  </li>
98
104
  </ul>
99
105
  </div>
@@ -21,7 +21,9 @@ function Header({ Link }: { Link: NextLink }) {
21
21
  autoPlay
22
22
  muted
23
23
  playsInline
24
- {...{ "webkit-playsinline": "true" }}
24
+ {...{
25
+ "webkit-playsinline": "true",
26
+ }}
25
27
  />
26
28
  Foundry
27
29
  </Link>
@@ -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
- <div className={styles.image}>
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
- object-fit: contain;
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 screen and (max-width: $screen-sm) {
36
- max-width: 80%;
36
+ @media #{$QUERY-md} {
37
+ width: calc(50% - 12px);
37
38
  height: 300px;
38
39
  }
39
40
 
40
- &:first-child {
41
- @media #{$QUERY-sm} {
42
- margin-left: 20px;
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
 
@@ -97,4 +97,5 @@
97
97
 
98
98
  .tailsText {
99
99
  margin-bottom: 30px;
100
+ text-align: center;
100
101
  }
@@ -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
- display: flex;
141
- flex-wrap: wrap;
142
- gap: 40px;
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
- // width: 100px;
168
- // height: 100px;
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
- font-weight: bold;
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
- {option}
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
@@ -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;
@@ -49,6 +49,7 @@ export default async function getCases({
49
49
  hasCategoryTerm ? "caseCategory: $categorySlug" : "",
50
50
  exclude ? "notIn: $exclude" : "",
51
51
  "language: $language",
52
+ "orderby: { field: MENU_ORDER, order: ASC }",
52
53
  ].filter(Boolean);
53
54
 
54
55
  const whereClause =
@@ -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
  : "",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "foundry-component-library",
3
- "version": "0.2.14",
3
+ "version": "0.2.16",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",