Skip to content

Commit 19762ff

Browse files
authored
Merge branch 'main' into sc-6804/hero-and-custom
2 parents 42937b6 + 8564868 commit 19762ff

File tree

10 files changed

+225
-27
lines changed

10 files changed

+225
-27
lines changed

.vscode/settings.json

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
{
22
"cSpell.words": ["frontmatter", "Roboto", "tailwindcss"],
3+
"cSpell.words": [
4+
"fortawesome",
5+
"frontmatter",
6+
"lpignore",
7+
"Roboto",
8+
"tailwindcss"
9+
],
310
"workbench.colorCustomizations": {
411
"activityBar.activeBackground": "#4b2c8d",
512
"activityBar.background": "#4b2c8d",
@@ -19,5 +26,8 @@
1926
"titleBar.inactiveBackground": "#36206699",
2027
"titleBar.inactiveForeground": "#e7e7e799"
2128
},
22-
"peacock.color": "#362066"
29+
"peacock.color": "#362066",
30+
"files.associations": {
31+
"*.css": "postcss"
32+
}
2333
}

package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@
2323
"typecheck": "tsc --noEmit"
2424
},
2525
"dependencies": {
26+
"@fortawesome/fontawesome-svg-core": "^6.4.2",
27+
"@fortawesome/free-brands-svg-icons": "^6.4.2",
28+
"@fortawesome/react-fontawesome": "^0.2.0",
2629
"@headlessui/react": "^1.7.17",
2730
"@heroicons/react": "^2.0.18",
2831
"@mdx-js/react": "^2.3.0",

src/components/layout/Footer.tsx

Lines changed: 36 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,71 +1,86 @@
11
import React from "react"
2-
import "./css/footer.css"
32
import { LaunchWareLogoLight } from "./LaunchWareLogoLight"
43
import { Link } from "gatsby"
4+
import { companySocialProfiles, getCompanySocialProfile } from "../../configuration/getCompanySocialProfile"
5+
import { CompanySocialIcon } from "../social/CompanySocialIcon"
6+
import { companyContactInformation } from "../../configuration/companyContactInformation"
7+
8+
import "./css/footer.css"
59

610
const Footer = () => {
11+
const socialListItems = Object.keys(companySocialProfiles).map((network: string) => {
12+
return <li key={network}><CompanySocialIcon network={network} /></li>
13+
})
14+
715
return (
816
<footer className="footer">
917
<div className="footer_container">
1018
<div className="footer_logo-container">
1119
<LaunchWareLogoLight className="footer_logo" />
1220
</div>
1321
<div className="footer_grid">
14-
<nav className="footer_group">
22+
<nav className="footer_group footer_group__serve">
1523
<h3 className="footer_headline">How we serve</h3>
1624
<ul className="footer_link-list">
17-
<li>
25+
<li className="footer_link-list-item">
1826
<Link to="/services">Services</Link>
1927
</li>
20-
<li>
28+
<li className="footer_link-list-item">
2129
<Link to="/capabilities">Capabilities</Link>
2230
</li>
23-
<li>
31+
<li className="footer_link-list-item">
2432
<Link to="/case-studies">Case Studies</Link>
2533
</li>
26-
<li>
34+
<li className="footer_link-list-item">
2735
<a href="#">Book Your Launch Call</a>
2836
</li>
2937
</ul>
3038
</nav>
3139

32-
<nav className="footer_group">
40+
<nav className="footer_group footer_group__who">
3341
<h3 className="footer_headline">Who we are</h3>
3442
<ul className="footer_link-list">
35-
<li>
43+
<li className="footer_link-list-item">
3644
<Link to="/about">About</Link>
3745
</li>
38-
<li>
46+
<li className="footer_link-list-item">
3947
<Link to="/careers">Careers</Link>
4048
</li>
41-
<li>
49+
<li className="footer_link-list-item">
4250
<Link to="/blog">Insight</Link>
4351
</li>
44-
<li>
52+
<li className="footer_link-list-item">
4553
<a href="#">Book Your Launch Call</a>
4654
</li>
4755
</ul>
4856
</nav>
4957

50-
<div className="footer_group">
58+
<div className="footer_group footer_group__connect">
5159
<h3 className="footer_headline">Connect</h3>
52-
<p><a href="tel:50855555555">Change Phone Number</a></p>
53-
<p><a href="mailto:[email protected]">[email protected]</a></p>
60+
<p><a href={`tel:${companyContactInformation.phone}`}> {companyContactInformation.phone}</a></p>
61+
<p><a href={`mailto:${companyContactInformation.email}`}>{companyContactInformation.email}</a></p>
5462
<ul className="footer_social-list">
55-
<li></li>
63+
{socialListItems}
5664
</ul>
5765
</div>
5866

59-
<form className="footer_group">
67+
<form className="footer_group footer_group__last">
6068
<h3 className="footer_headline">Stay in our orbit</h3>
61-
<input type="email" placeholder="Email" />
62-
<input type="submit" className="button button__full-width" value="Submit" data-lpignore="true" />
63-
<p>By submitting this form, you confirm that you have read and agree to the Terms & Conditions.</p>
69+
<input type="email" placeholder="Email" className="footer_opt-in-email" />
70+
<input type="submit" className="button button__full-width footer_button" value="Submit" data-lpignore="true" />
71+
<p className="footer_opt-in-terms">By submitting this form, you confirm that you have read and agree to the Terms & Conditions.</p>
6472
</form>
6573
</div>
66-
<p className="footer_copyright-notice">&copy; {new Date().getFullYear()} LaunchWare. All rights reserved.</p>
74+
75+
<div className="footer_legal">
76+
<p className="footer_copyright-notice">&copy; {new Date().getFullYear()} LaunchWare. All rights reserved.</p>
77+
<ul className="footer_legal-links">
78+
<li><Link to="/disclaimer">Disclaimer</Link></li>
79+
<li><Link to="/cookies">Cookies</Link></li>
80+
</ul>
81+
</div>
6782
</div>
68-
</footer>
83+
</footer >
6984
)
7085
}
7186

src/components/layout/css/footer.css

Lines changed: 71 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,82 @@
66
@apply pad-container;
77
}
88

9+
.footer_grid {
10+
@apply w-full grid text-center lg:text-left lg:gap-20 lg:grid-cols-5 grid-cols-1;
11+
}
12+
13+
.footer_group {
14+
@apply col-span-1;
15+
}
16+
17+
.footer_group__serve {
18+
@apply order-3 lg:order-1 mb-6 lg:mb-0;
19+
}
20+
21+
.footer_group__who {
22+
@apply order-4 lg:order-2 mb-12 lg:mb-0;
23+
}
24+
25+
.footer_group__connect {
26+
@apply order-1 lg:order-3;
27+
}
28+
29+
.footer_group__last {
30+
@apply lg:col-span-2 col-span-1 order-2 lg:order-4 my-12 lg:my-0 max-w-sm mx-auto;
31+
}
32+
933
.footer_headline {
10-
@apply font-semibold;
34+
@apply font-semibold pb-6;
35+
}
36+
37+
.footer_link-list-item {
38+
@apply mb-3 font-thin block;
1139
}
1240

1341
.footer_logo {
14-
@apply block mb-12;
42+
@apply inline-block mb-12;
43+
}
44+
45+
.footer_logo-container {
46+
@apply text-center lg:text-left;
47+
}
48+
49+
.footer_group__connect li, .footer_group__connect p {
50+
@apply mb-3;
51+
}
52+
53+
.footer_social-list li {
54+
@apply inline-block mr-3;
55+
}
56+
57+
.footer_legal {
58+
@apply text-launch-black-50 text-center lg:text-left flex flex-wrap lg:flex-nowrap justify-between mt-8;
1559
}
1660

1761
.footer_copyright-notice {
18-
@apply text-launch-black-30 ;
62+
@apply w-full flex-grow-0;
63+
}
64+
65+
.footer_legal-links {
66+
@apply flex-grow lg:w-1/2 lg:text-right;
67+
}
68+
69+
.footer_legal-links li, .footer_copyright-notice {
70+
@apply mb-4 lg:mb-0;
71+
}
72+
73+
.footer_legal-links li {
74+
@apply inline-block mx-2 lg:ml-0 lg:mr-4;
75+
}
76+
77+
.footer_opt-in-terms {
78+
@apply text-launch-black-50;
79+
}
80+
81+
.footer_opt-in-email {
82+
@apply bg-launch-black border-white border rounded-md block w-full py-1 pl-2 focus:ring-white focus:outline-none focus:ring-2;
83+
}
84+
85+
.footer_button {
86+
@apply my-2;
1987
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import React from "react"
2+
3+
import { getCompanySocialProfile } from "../../configuration/getCompanySocialProfile";
4+
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"
5+
6+
export const CompanySocialIcon = ({ network }: { network: string }) => {
7+
const { icon, url } = getCompanySocialProfile(network);
8+
return <a href={url}><FontAwesomeIcon icon={icon} /></a>
9+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
export const companyContactInformation = {
2+
phone: "CHANGE NUMBER",
3+
4+
mailingAddress: {
5+
streetAddress: "71 Summer Street",
6+
streetAddress2: "3rd Floor",
7+
city: "Boston",
8+
state: "MA",
9+
zipCode: "02021",
10+
},
11+
};
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import {
2+
faXTwitter,
3+
faFacebook,
4+
faYoutube,
5+
faLinkedin,
6+
faInstagram,
7+
} from "@fortawesome/free-brands-svg-icons";
8+
9+
export class SocialProfileNotFoundError extends Error {
10+
constructor(network: string) {
11+
super(`Social profile not found for network: ${network}`);
12+
}
13+
}
14+
15+
export const companySocialProfiles = {
16+
linkedIn: {
17+
icon: faLinkedin,
18+
url: "https://www.linkedin.com/company/launchware/",
19+
},
20+
x: {
21+
icon: faXTwitter,
22+
url: "https://twitter.com/launchware",
23+
},
24+
facebook: {
25+
icon: faFacebook,
26+
url: "https://www.facebook.com/LaunchWare/",
27+
},
28+
youtube: {
29+
icon: faYoutube,
30+
url: "https://www.youtube.com/@LaunchWareSoftwareDevelopment",
31+
},
32+
instagram: {
33+
icon: faInstagram,
34+
url: "https://www.instagram.com/launchware/",
35+
},
36+
} as Record<string, { icon: any; url: string }>;
37+
38+
export const getCompanySocialProfile = (network: string) => {
39+
const result = companySocialProfiles[network];
40+
41+
if (!result) {
42+
throw new SocialProfileNotFoundError(network);
43+
}
44+
45+
return result;
46+
};

src/css/buttons.css

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1-
.button {
1+
.button,
2+
input.button {
23
@apply bg-launch-orange text-white font-bold py-2 px-3 rounded-md hover:text-launch-orange hover:bg-white border-launch-orange border-x-2 border-y-2;
34
}
5+
6+
.button__full-width {
7+
@apply w-full;
8+
}

src/css/index.css

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
@layer utilities {
88
.pad-container {
9-
@apply px-2 sm:px-10 max-w-7xl;
9+
@apply px-4 sm:px-10 max-w-7xl mx-auto;
1010
}
1111

1212
.parent-section {
@@ -59,3 +59,8 @@ body {
5959
display: block;
6060
margin: auto;
6161
}
62+
63+
[data-lastpass-icon-root],
64+
[data-lastpass-root] {
65+
display: none !important;
66+
}

yarn.lock

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1201,6 +1201,32 @@
12011201
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.49.0.tgz#86f79756004a97fa4df866835093f1df3d03c333"
12021202
integrity sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==
12031203

1204+
"@fortawesome/[email protected]":
1205+
version "6.4.2"
1206+
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.4.2.tgz#1766039cad33f8ad87f9467b98e0d18fbc8f01c5"
1207+
integrity sha512-1DgP7f+XQIJbLFCTX1V2QnxVmpLdKdzzo2k8EmvDOePfchaIGQ9eCHj2up3/jNEbZuBqel5OxiaOJf37TWauRA==
1208+
1209+
"@fortawesome/fontawesome-svg-core@^6.4.2":
1210+
version "6.4.2"
1211+
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.4.2.tgz#37f4507d5ec645c8b50df6db14eced32a6f9be09"
1212+
integrity sha512-gjYDSKv3TrM2sLTOKBc5rH9ckje8Wrwgx1CxAPbN5N3Fm4prfi7NsJVWd1jklp7i5uSCVwhZS5qlhMXqLrpAIg==
1213+
dependencies:
1214+
"@fortawesome/fontawesome-common-types" "6.4.2"
1215+
1216+
"@fortawesome/free-brands-svg-icons@^6.4.2":
1217+
version "6.4.2"
1218+
resolved "https://registry.yarnpkg.com/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.4.2.tgz#9b8e78066ea6dd563da5dfa686615791d0f7cc71"
1219+
integrity sha512-LKOwJX0I7+mR/cvvf6qIiqcERbdnY+24zgpUSouySml+5w8B4BJOx8EhDR/FTKAu06W12fmUIcv6lzPSwYKGGg==
1220+
dependencies:
1221+
"@fortawesome/fontawesome-common-types" "6.4.2"
1222+
1223+
"@fortawesome/react-fontawesome@^0.2.0":
1224+
version "0.2.0"
1225+
resolved "https://registry.yarnpkg.com/@fortawesome/react-fontawesome/-/react-fontawesome-0.2.0.tgz#d90dd8a9211830b4e3c08e94b63a0ba7291ddcf4"
1226+
integrity sha512-uHg75Rb/XORTtVt7OS9WoK8uM276Ufi7gCzshVWkUJbHhh3svsUUeqXerrM96Wm7fRiDzfKRwSoahhMIkGAYHw==
1227+
dependencies:
1228+
prop-types "^15.8.1"
1229+
12041230
"@gatsbyjs/parcel-namer-relative-to-cwd@^2.12.0":
12051231
version "2.12.0"
12061232
resolved "https://registry.yarnpkg.com/@gatsbyjs/parcel-namer-relative-to-cwd/-/parcel-namer-relative-to-cwd-2.12.0.tgz#4bd49fb678e739624d0bc39c3376b4781bf6a0ee"

0 commit comments

Comments
 (0)