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.
Files changed (54) hide show
  1. package/lib/assets/svg/close.svg +3 -3
  2. package/lib/components/Awards/index.tsx +10 -2
  3. package/lib/components/Awards/styles.module.scss +0 -1
  4. package/lib/components/Capabilities/Item.tsx +7 -1
  5. package/lib/components/Capabilities/styles.module.scss +0 -1
  6. package/lib/components/CaseStudyTeaser/index.tsx +5 -1
  7. package/lib/components/CaseStudyTeaser/styles.module.scss +4 -2
  8. package/lib/components/ContactTeaser/styles.module.scss +1 -1
  9. package/lib/components/DoubleTiles/styles.module.scss +0 -1
  10. package/lib/components/Footer/styles.module.scss +12 -9
  11. package/lib/components/Header/index.tsx +1 -1
  12. package/lib/components/Header/styles.module.scss +4 -1
  13. package/lib/components/Hero/styles.module.scss +1 -0
  14. package/lib/components/HubsAccordion/Hub.tsx +11 -3
  15. package/lib/components/HubsAccordion/minus.svg +4 -0
  16. package/lib/components/HubsAccordion/plus.svg +5 -0
  17. package/lib/components/HubsAccordion/styles.module.scss +4 -17
  18. package/lib/components/ImageTitle/styles.module.scss +0 -1
  19. package/lib/components/LargeText/styles.module.scss +0 -1
  20. package/lib/components/LogoSection/styles.module.scss +7 -1
  21. package/lib/components/Management/styles.module.scss +0 -1
  22. package/lib/components/OfficesTeaser/styles.module.scss +2 -1
  23. package/lib/components/PartnerNetwork/styles.module.scss +7 -0
  24. package/lib/components/ServiceHubsTeaser/Tile.tsx +14 -3
  25. package/lib/components/ServiceHubsTeaser/index.tsx +4 -0
  26. package/lib/components/ServiceHubsTeaser/styles.module.scss +25 -1
  27. package/lib/components/TeamBenefits/styles.module.scss +0 -1
  28. package/lib/components/TeamPhotos/styles.module.scss +0 -1
  29. package/lib/components/TextSection/styles.module.scss +0 -1
  30. package/lib/components/Tiles/Tile.tsx +30 -5
  31. package/lib/components/Tiles/index.tsx +3 -0
  32. package/lib/components/Tiles/styles.module.scss +39 -1
  33. package/lib/components/case/Content/Results/styles.module.scss +0 -1
  34. package/lib/components/case/Content/styles.module.scss +0 -1
  35. package/lib/components/case/Other/index.tsx +33 -25
  36. package/lib/components/case/Top/styles.module.scss +1 -0
  37. package/lib/components/cases/Items/More.tsx +5 -3
  38. package/lib/components/cases/Items/index.tsx +13 -11
  39. package/lib/components/contact/Accounts/styles.module.scss +9 -2
  40. package/lib/components/contact/Contacts/styles.module.scss +0 -2
  41. package/lib/components/contact/Offices/styles.module.scss +0 -1
  42. package/lib/components/news/Posts/styles.module.scss +0 -1
  43. package/lib/components/single/Content/styles.module.scss +6 -0
  44. package/lib/components/single/Other/index.tsx +29 -21
  45. package/lib/components/single/Top/styles.module.scss +1 -0
  46. package/lib/queries/getAboutPage.ts +2 -0
  47. package/lib/queries/getCases.ts +3 -0
  48. package/lib/queries/getCasesPage.ts +3 -0
  49. package/lib/queries/getHomePage.ts +12 -0
  50. package/lib/queries/getHubBySlug.ts +6 -0
  51. package/lib/queries/getHubs.ts +6 -0
  52. package/lib/queries/getHubsPage.ts +3 -0
  53. package/lib/types/index.ts +3 -0
  54. package/package.json +1 -1
@@ -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="4" stroke-linecap="round" stroke-linejoin="round"/>
3
- <path d="M17.5703 17.5664L29.3554 29.3515" stroke="#491B11" stroke-width="4" stroke-linecap="square" stroke-linejoin="round"/>
4
- <path d="M17.5703 29.3516L29.3554 17.5665" stroke="#491B11" stroke-width="4" stroke-linecap="square" stroke-linejoin="round"/>
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 className={styles.awards}>
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
 
@@ -10,7 +10,6 @@
10
10
 
11
11
  .heading {
12
12
  font-size: 42px;
13
- font-family: $font-secondary;
14
13
  color: $color-brown;
15
14
  margin-bottom: 64px;
16
15
  line-height: 1.3;
@@ -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={item.case?.mainImage?.sourceUrl || ""}
120
+ src={
121
+ thumbnailImage?.sourceUrl ||
122
+ mainImage?.sourceUrl ||
123
+ ""
124
+ }
119
125
  alt={item.title}
120
126
  fill
121
127
  />
@@ -38,7 +38,6 @@
38
38
 
39
39
  .title {
40
40
  font-size: 34px;
41
- font-family: $font-secondary;
42
41
 
43
42
  @media #{$QUERY-md} {
44
43
  font-size: 18px;
@@ -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={el.case?.mainImage?.sourceUrl || ""}
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;
@@ -21,11 +21,11 @@
21
21
  }
22
22
 
23
23
  .heading {
24
- font-family: $font-secondary;
25
24
  font-size: 54px;
26
25
  color: $color-brown;
27
26
  margin-bottom: 24px;
28
27
  white-space: pre-wrap;
28
+ line-height: 1.1;
29
29
 
30
30
  @media #{$QUERY-sm} {
31
31
  font-size: 32px;
@@ -24,7 +24,6 @@
24
24
  box-sizing: border-box;
25
25
  background-color: $color-pink;
26
26
  color: $color-brown;
27
- font-family: $font-secondary;
28
27
  flex-shrink: 0;
29
28
 
30
29
  @media screen and (max-width: $screen-sm) {
@@ -8,7 +8,7 @@
8
8
  z-index: 4;
9
9
 
10
10
  @media #{$QUERY-sm} {
11
- padding: 30px 20px 48px;
11
+ padding: 48px 0;
12
12
  }
13
13
  }
14
14
 
@@ -40,14 +40,18 @@
40
40
  }
41
41
  }
42
42
 
43
- .logoText {
44
- font-size: 34px;
45
- font-family: $font-secondary;
46
- margin-bottom: 48px;
43
+ .logo {
44
+ width: 412px;
45
+ max-width: 100%;
47
46
 
48
- @media screen and (max-width: $screen-md) {
49
- font-size: 30px;
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 loop />
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
  }
@@ -69,6 +69,7 @@
69
69
  font-size: 200px;
70
70
  font-weight: 400;
71
71
  color: $color-white;
72
+ font-family: $font-secondary;
72
73
 
73
74
  @media screen and (max-width: $screen-md) {
74
75
  font-size: 120px;
@@ -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 && <span>-</span>}
50
- {!isActive && <span>+</span>}
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={item.case?.mainImage?.sourceUrl || ""}
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: 46px;
93
- height: 46px;
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 {
@@ -38,7 +38,6 @@
38
38
  }
39
39
 
40
40
  .heading {
41
- font-family: $font-secondary;
42
41
  font-size: 42px;
43
42
  color: $color-brown;
44
43
  margin-bottom: 42px;
@@ -23,7 +23,6 @@
23
23
  .wrapper {
24
24
  text-align: center;
25
25
  font-size: 54px;
26
- font-family: $font-secondary;
27
26
  margin: auto;
28
27
  line-height: 1;
29
28
  display: flex;
@@ -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
 
@@ -34,7 +34,6 @@
34
34
  }
35
35
 
36
36
  .quote {
37
- font-family: $font-secondary;
38
37
  font-size: 42px;
39
38
  margin-bottom: 25px;
40
39
  line-height: 1.2;
@@ -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
- font-family: $font-secondary;
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.text}>{text}</div>
46
- <div>
47
- <Plus />
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
+ }
@@ -29,7 +29,6 @@
29
29
  background-color: $color-pink;
30
30
  color: $color-brown;
31
31
  font-size: 28px;
32
- font-family: $font-secondary;
33
32
  flex-shrink: 0;
34
33
 
35
34
  @media screen and (max-width: $screen-md) {
@@ -2,7 +2,6 @@
2
2
 
3
3
  .heading {
4
4
  font-size: 42px;
5
- font-family: $font-secondary;
6
5
  margin-bottom: 55px;
7
6
  color: $color-brown;
8
7
 
@@ -46,7 +46,6 @@
46
46
  }
47
47
 
48
48
  .heading {
49
- font-family: $font-secondary;
50
49
  font-size: 54px;
51
50
  line-height: 1.2;
52
51
  color: $color-brown;
@@ -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 className={`${styles.tile} ${styles[background]}`}>
13
- <div className={styles.text}>{text}</div>
14
- <div>
15
- <Plus />
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
- </div>
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
+ }
@@ -29,6 +29,5 @@
29
29
 
30
30
  .heading {
31
31
  font-size: 34px;
32
- font-family: $font-secondary;
33
32
  margin-bottom: 20px;
34
33
  }
@@ -47,7 +47,6 @@
47
47
  h4,
48
48
  h5,
49
49
  h6 {
50
- font-family: $font-secondary;
51
50
  font-size: 42px;
52
51
  font-weight: 400;
53
52
  margin-bottom: 32px;
@@ -40,33 +40,41 @@ function Other({
40
40
  onMouseLeave={handleMouseUp}
41
41
  style={dragStyle as React.CSSProperties}
42
42
  >
43
- {cases.map((item) => (
44
- <div key={item.id} className={styles.case}>
45
- <Link href={item.uri}>
46
- <div className={styles.image}>
47
- {item.case.mainImage && (
48
- <Image
49
- className={styles.image}
50
- src={item.case.mainImage.sourceUrl}
51
- alt={item.title || ""}
52
- width={308}
53
- height={220}
54
- />
55
- )}
56
- </div>
57
- <div className={styles.texts}>
58
- <div>
59
- <div className={styles.title}>{item.title}</div>
60
- {item.case.excerpt && <div>{item.case.excerpt}</div>}
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.more}>
63
- {translate("See More")}
64
- <Arrow />
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
- </div>
67
- </Link>
68
- </div>
69
- ))}
74
+ </Link>
75
+ </div>
76
+ );
77
+ })}
70
78
  </div>
71
79
  <div className={styles.buttonWrapper}>
72
80
  <Link className={styles.button} href="/cases">
@@ -65,6 +65,7 @@
65
65
  max-width: 100%;
66
66
  color: $color-brown;
67
67
  font-weight: 400;
68
+ font-family: $font-secondary;
68
69
 
69
70
  @media #{$QUERY-sm} {
70
71
  font-size: 32px;
@@ -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 && mainImage.sourceUrl && (
67
+ {!thumbnailVideo && (mainImage || thumbnailImage) && (
68
68
  <div className={styles.imageWrapper}>
69
69
  <Image
70
70
  className={styles.image}
71
- src={mainImage.sourceUrl}
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
- {mainImage.sourceUrl && (
97
- <Image
98
- className={styles.image}
99
- src={mainImage.sourceUrl}
100
- alt={item.title || ""}
101
- width={720}
102
- height={490}
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: 28px;
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;
@@ -72,7 +72,6 @@
72
72
 
73
73
  .heading {
74
74
  font-size: 42px;
75
- font-family: $font-secondary;
76
75
  color: $color-brown;
77
76
  }
78
77
 
@@ -75,7 +75,6 @@
75
75
  a {
76
76
  font-size: 42px;
77
77
  line-height: 1.2;
78
- font-family: $font-secondary;
79
78
  font-weight: 400;
80
79
  margin-bottom: 15px;
81
80
  color: $color-brown;
@@ -6,6 +6,12 @@
6
6
  @media #{$QUERY-sm} {
7
7
  padding-bottom: 90px;
8
8
  }
9
+
10
+ h1,
11
+ h2,
12
+ h3 {
13
+ margin-bottom: 1rem;
14
+ }
9
15
  }
10
16
 
11
17
  .section {
@@ -25,27 +25,35 @@ function Other({
25
25
  </div>
26
26
  </div>
27
27
  <div className={styles.cases}>
28
- {cases.map((item) => (
29
- <div key={item.id} className={styles.case}>
30
- <Link href={item.uri}>
31
- <div className={styles.image}>
32
- {item.case.mainImage && (
33
- <Image
34
- className={styles.image}
35
- src={item.case.mainImage.sourceUrl}
36
- alt={item.title || ""}
37
- width={400}
38
- height={490}
39
- />
40
- )}
41
- </div>
42
- <div className={styles.texts}>
43
- <div>{item.title}</div>
44
- <Arrow />
45
- </div>
46
- </Link>
47
- </div>
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>
@@ -83,6 +83,7 @@
83
83
  line-height: 1.2;
84
84
  font-weight: bold;
85
85
  margin-bottom: 0;
86
+ font-family: $font-secondary;
86
87
 
87
88
  &.isCase {
88
89
  margin-bottom: 50px;
@@ -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
@@ -70,6 +70,9 @@ export default async function getCases({
70
70
  thumbnailVideo{
71
71
  mediaItemUrl
72
72
  }
73
+ thumbnailImage {
74
+ sourceUrl
75
+ }
73
76
  mainImage {
74
77
  sourceUrl
75
78
  }
@@ -137,6 +137,9 @@ export default async function getCasesPage({
137
137
  thumbnailVideo{
138
138
  mediaItemUrl
139
139
  }
140
+ thumbnailImage {
141
+ sourceUrl
142
+ }
140
143
  mainImage {
141
144
  sourceUrl
142
145
  }
@@ -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
  }
@@ -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
  }
@@ -145,6 +145,9 @@ export default async function getCasesPage(
145
145
  title
146
146
  uri
147
147
  case {
148
+ thumbnailImage {
149
+ sourceUrl
150
+ }
148
151
  mainImage {
149
152
  sourceUrl
150
153
  }
@@ -230,6 +230,9 @@ export type Case = {
230
230
  thumbnailVideo?: {
231
231
  mediaItemUrl: string;
232
232
  };
233
+ thumbnailImage?: {
234
+ sourceUrl: string;
235
+ };
233
236
  mainImage?: {
234
237
  sourceUrl: string;
235
238
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "foundry-component-library",
3
- "version": "0.1.11",
3
+ "version": "0.1.13",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",