Skip to content

Commit 2f8925b

Browse files
committed
Initial draft for Sustain Africa 2024, pending design updates
1 parent 78cdfba commit 2f8925b

21 files changed

+11533
-1046
lines changed

package-lock.json

+9,698-1,022
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/components/2024/about.js

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import React from "react";
2+
3+
import { aboutus } from "./cloudImages";
4+
5+
function About() {
6+
return (
7+
<section id="about" className="bg-white">
8+
<div className="container px-5 lg:px-0 mx-auto my-10 lg:my-20">
9+
<div className="flex flex-col lg:flex-row lg:justify-between lg:items-center mb-5 lg:mb-10">
10+
<h3 className="font-humane font-medium text-[7rem] md:text-[10rem] lg:text-[20rem] w-[20%] lg:w-full lg:basis-1/4 leading-[0.8] mb-5 lg:mb-0 lg:ml-10 uppercase text-wrap lg:order-last">
11+
About Us
12+
</h3>
13+
<figure className="lg:grow">
14+
<img
15+
alt="Osca Fest 2022 conference at Tech Zone Park"
16+
src={aboutus.groupshot}
17+
className="object-fit w-full h-full"
18+
/>
19+
</figure>
20+
</div>
21+
<div className="lg:w-[800px]">
22+
<blockquote className="font-clashDisplay text-black text-left tracking-tight text-sm md:text-lg lg:text-xl">
23+
Open Source Community Africa is a community aimed at creating and supporting the open source movement within
24+
Africa. As a community, we intend to help integrate the act of open source contribution to African
25+
developers whilst strongly advocating the movement of free and open source software. <br />
26+
<br />
27+
Open Source Festival is a high profile event that would attract student delegates, developers, designers and
28+
corporate organizations on a large scale with series of talks, workshops, and awareness of open-sourced
29+
developer tools. The second edition is going to be a forum for networking, discussions and ideas proration
30+
around latest happenings in technology as well as the growth of open source in Africa. <br />
31+
<br />
32+
Through this festival, we intend to open the eyes of Africans so they can be aware that FUTURE IS OPEN.
33+
</blockquote>
34+
</div>
35+
</div>
36+
</section>
37+
);
38+
}
39+
40+
export default About;

src/components/2024/breadcrumb.js

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import React from "react";
2+
import PropTypes from "prop-types";
3+
4+
function Breadcrumb(props) {
5+
return (
6+
<div>
7+
<section
8+
id={props.name}
9+
className="relative h-[300px] lg:h-[600px] overflow-hidden flex items-center justify-center"
10+
>
11+
<div className="font-humane lg:mt-24 font-medium text-[8rem] md:text-[10rem] lg:text-[20rem] leading-none uppercase">
12+
<h1 className="text-white text-[128px] lg:text-[400px] font-[500] text-center lg:-mb-16">{props.name}</h1>
13+
</div>
14+
<span
15+
className="lg:block w-[400px] lg:w-[600px] h-[400px] lg:h-[600px] z-5 absolute blur-[54px] right-[-170px] top-[-76.95px] lg:top-[-181.36px]"
16+
style={{
17+
background:
18+
"radial-gradient(34.85% 34.85% at 50% 50%, rgba(245, 185, 255, 0.5) 0%, rgba(121, 255, 191, 0.125) 50.52%, rgba(187, 251, 255, 0.02) 100%)"
19+
}}
20+
></span>
21+
<span
22+
className="lg:block w-[400px] lg:w-[600px] h-[400px] lg:h-[600px] z-10 absolute blur-[100px] left-[-252.98px] lg:left-[-48px] top-[100px] lg:top-[477px]"
23+
style={{
24+
background:
25+
"radial-gradient(50% 50% at 50% 50%, rgba(255, 0, 26, 0.41) 0%, rgba(255, 2, 230, 0.27) 50.52%, rgba(212, 0, 255, 0) 100%)"
26+
}}
27+
></span>
28+
</section>
29+
</div>
30+
);
31+
}
32+
33+
Breadcrumb.propTypes = {
34+
name: PropTypes.string.isRequired
35+
};
36+
37+
export default Breadcrumb;

src/components/2024/cloudImages.js

+90
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
const homeBackground = Object.freeze({
2+
background: "https://res.cloudinary.com/osca/image/upload/v1690190185/osf/2023/bpfh7czlmrrggpwv1xrp.png",
3+
logo: "https://res.cloudinary.com/osca/image/upload/q_auto,f_auto/v1576374332/osf/Logo/SVG/orange.svg",
4+
title: "https://res.cloudinary.com/osca/image/upload/v1690190205/osf/2023/vtrenxfs0ba3hoa5strv.png",
5+
titleLarge: "https://res.cloudinary.com/osca/image/upload/v1690190358/osf/2023/l2mwdazkcucaxwijq526.png",
6+
northeastArrow: "https://res.cloudinary.com/osca/image/upload/v1690190353/osf/2023/nnf0gztyck3lgcebm9q3.svg"
7+
});
8+
9+
const aboutus = Object.freeze({
10+
groupshot: "https://res.cloudinary.com/osca/image/upload/v1690190463/osf/2023/exhrzc9ugtt4byofczpo.jpg"
11+
});
12+
13+
const gallery = Object.freeze({
14+
one: "https://res.cloudinary.com/osca/image/upload/v1690189685/osf/2023/gallery/so7vetrt5fjq2q1kvr1h.jpg",
15+
two: "https://res.cloudinary.com/osca/image/upload/v1690197301/osf/2023/gallery/lxrxztohyosqcjm198iu.jpg",
16+
three: "https://res.cloudinary.com/osca/image/upload/v1690197375/osf/2023/gallery/erjzlrsogcu0ephdvjfw.jpg"
17+
});
18+
19+
const speakers = Object.freeze({
20+
dummyImage: "https://res.cloudinary.com/osca/image/upload/v1645997775/osf/2022/Speakers/v0dcxtxhuhxs0iahjfgx.png",
21+
angie: "https://res.cloudinary.com/osca/image/upload/v1690190733/osf/2023/speakers/kn6ss4lzaakkmqblq18i.jpg",
22+
bdougie: "https://res.cloudinary.com/osca/image/upload/v1690190734/osf/2023/speakers/facmfok7k8duydqzpquu.jpg",
23+
jan: "https://res.cloudinary.com/osca/image/upload/v1690190733/osf/2023/speakers/pcnn2bhk0uwlnzlsrnvj.jpg",
24+
regina: "https://res.cloudinary.com/osca/image/upload/v1690190733/osf/2023/speakers/dsbdkuhijvp4ksct1f2p.jpg",
25+
adora: "https://res.cloudinary.com/osca/image/upload/v1690190732/osf/2023/speakers/yqb5td4fqanynpn05xsg.jpg",
26+
aniedi: "https://res.cloudinary.com/osca/image/upload/v1690190732/osf/2023/speakers/l2mt5hxz9siqwsnkuxuy.jpg",
27+
chisom: "https://res.cloudinary.com/osca/image/upload/v1690190731/osf/2023/speakers/yn5xqa8oh1gg9n1zsedz.jpg",
28+
edidiong: "https://res.cloudinary.com/osca/image/upload/v1690190731/osf/2023/speakers/iejjtlbek1rvb67a8g7y.jpg",
29+
john: "https://res.cloudinary.com/osca/image/upload/v1690190731/osf/2023/speakers/y8kdezse5cb9j26h4zfq.jpg",
30+
kelvin: "https://res.cloudinary.com/osca/image/upload/v1690190731/osf/2023/speakers/yit0dea6dnjg5hebjxf2.jpg",
31+
njoku: "https://res.cloudinary.com/osca/image/upload/v1690190730/osf/2023/speakers/ujbq9tnm7eyaveeswf81.jpg",
32+
oluebube: "https://res.cloudinary.com/osca/image/upload/v1690190729/osf/2023/speakers/vzjbizvbqc74eqp3bdjx.jpg",
33+
prosper: "https://res.cloudinary.com/osca/image/upload/v1690190730/osf/2023/speakers/la0th3cgosh17yc8zgxw.jpg",
34+
rachel: "https://res.cloudinary.com/osca/image/upload/v1690190729/osf/2023/speakers/iymtduock6cy33mb73og.jpg",
35+
sodiq: "https://res.cloudinary.com/osca/image/upload/v1690190729/osf/2023/speakers/qg3dz370auadn1g1ievy.jpg",
36+
sultan: "https://res.cloudinary.com/osca/image/upload/v1690190729/osf/2023/speakers/u1gtnoao1hf33fcc3idq.jpg"
37+
});
38+
39+
const sponsors = Object.freeze({
40+
google: "https://res.cloudinary.com/osca/image/upload/v1690190918/osf/2023/sponsors/black/l8axabiu2bkqepwh74vi.svg",
41+
microsoft:
42+
"https://res.cloudinary.com/osca/image/upload/v1690191124/osf/2023/sponsors/black/cerszefzqsirvlmehz3s.svg",
43+
osc: "https://res.cloudinary.com/osca/image/upload/v1690191126/osf/2023/sponsors/black/tiwqzoi8jmvslu7h57tr.svg",
44+
paystack: "https://res.cloudinary.com/osca/image/upload/v1690191125/osf/2023/sponsors/black/vkeyfaxfkgxapxdewcnr.svg",
45+
cannonical:
46+
"https://res.cloudinary.com/osca/image/upload/v1690191123/osf/2023/sponsors/black/eyidgcayxwa9qi8dlhgi.svg",
47+
orbit: "https://res.cloudinary.com/osca/image/upload/v1690191125/osf/2023/sponsors/black/mntfnlsqtfoscbnh39u5.svg",
48+
payday: "https://res.cloudinary.com/osca/image/upload/v1690191128/osf/2023/sponsors/black/isuhzhd1juff8xzy0jp1.svg",
49+
penpot: "https://res.cloudinary.com/osca/image/upload/v1690191125/osf/2023/sponsors/black/yhvtf7cizwydjqbywrsp.svg",
50+
uvm: "https://res.cloudinary.com/osca/image/upload/v1690191125/osf/2023/sponsors/black/hyjgani4og6fzm3prkzx.svg",
51+
axelar: "https://res.cloudinary.com/osca/image/upload/v1690191124/osf/2023/sponsors/black/msmlkhrl0ersqwashxmg.svg",
52+
gnome: "https://res.cloudinary.com/osca/image/upload/v1690191125/osf/2023/sponsors/black/bstnshe4qynnmmccl8pq.svg",
53+
outreachy:
54+
"https://res.cloudinary.com/osca/image/upload/v1690191123/osf/2023/sponsors/black/naihr2bu0nmpgkzqa57p.png",
55+
celo: "https://res.cloudinary.com/osca/image/upload/v1690191123/osf/2023/sponsors/black/por11hc97auinw6sd7q7.png",
56+
cncf: "https://res.cloudinary.com/osca/image/upload/v1690191124/osf/2023/sponsors/black/c3nprzlwrugtqbzfaa0q.svg",
57+
block: "https://res.cloudinary.com/osca/image/upload/v1690191129/osf/2023/sponsors/black/vnzmwny4jclqud3clejf.svg",
58+
polytope: "https://res.cloudinary.com/osca/image/upload/v1690191127/osf/2023/sponsors/black/qv3zynylzhfu0go9zplq.svg",
59+
kora: "https://res.cloudinary.com/osca/image/upload/v1690191123/osf/2023/sponsors/black/bmc4klqnb6phx0imhhs7.svg",
60+
eden: "https://res.cloudinary.com/osca/image/upload/v1690191126/osf/2023/sponsors/black/wpodowvmxhysetnfrsiq.svg",
61+
africantalking:
62+
"https://res.cloudinary.com/osca/image/upload/v1690191123/osf/2023/sponsors/black/ks3rbn2v59dy7k0vet3n.png",
63+
alt: "https://res.cloudinary.com/osca/image/upload/v1690191123/osf/2023/sponsors/black/y6dwwioamdregdfaoves.svg",
64+
etionary: "https://res.cloudinary.com/osca/image/upload/v1690191123/osf/2023/sponsors/black/optcrt9o98rnxuq8z9se.png"
65+
});
66+
67+
const sponsorsColored = Object.freeze({
68+
google: "https://res.cloudinary.com/osca/image/upload/v1690191567/osf/2023/sponsors/colored/qvmihr614247vcwcoaay.svg",
69+
microsoft:
70+
"https://res.cloudinary.com/osca/image/upload/v1690191567/osf/2023/sponsors/colored/d1dq0lgtcufn1py03r6y.svg",
71+
osc: "https://res.cloudinary.com/osca/image/upload/v1690191567/osf/2023/sponsors/colored/dbktrtp6lei5yxrkalwm.svg",
72+
paystack:
73+
"https://res.cloudinary.com/osca/image/upload/v1690191567/osf/2023/sponsors/colored/nrvzehqjp41bx5eeimd6.svg",
74+
cannonical:
75+
"https://res.cloudinary.com/osca/image/upload/v1690191565/osf/2023/sponsors/colored/jsy2lxej5jiedzwrj9tb.svg",
76+
orbit: "https://res.cloudinary.com/osca/image/upload/v1690191567/osf/2023/sponsors/colored/s8yzgqwpqt7hx5ngutms.svg",
77+
uvm: "https://res.cloudinary.com/osca/image/upload/v1690191566/osf/2023/sponsors/colored/mldps2ogz9y33tsoxo3n.svg",
78+
gnome: "https://res.cloudinary.com/osca/image/upload/v1690191565/osf/2023/sponsors/colored/tufjkzn5vfbwaltdpts9.svg",
79+
outreachy:
80+
"https://res.cloudinary.com/osca/image/upload/v1690191564/osf/2023/sponsors/colored/zv2j7oo6w3cw29ijirqp.png",
81+
cncf: "https://res.cloudinary.com/osca/image/upload/v1690191565/osf/2023/sponsors/colored/tsm38rwo28y3ieiweftv.svg",
82+
kora: "https://res.cloudinary.com/osca/image/upload/v1690191565/osf/2023/sponsors/colored/tufjkzn5vfbwaltdpts9.svg",
83+
eden: "https://res.cloudinary.com/osca/image/upload/v1690191565/osf/2023/sponsors/colored/cehhta9hba3dsdalw5li.svg",
84+
africantalking:
85+
"https://res.cloudinary.com/osca/image/upload/v1690191564/osf/2023/sponsors/colored/hvjmtk65l92i2xgw4m33.png",
86+
etionary:
87+
"https://res.cloudinary.com/osca/image/upload/v1690191565/osf/2023/sponsors/colored/upvqd8z06hcchdgfornd.png"
88+
});
89+
90+
export { homeBackground, aboutus, gallery, speakers, sponsors, sponsorsColored };

src/components/2024/footer.js

+136
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
import React from "react";
2+
import PropTypes from "prop-types";
3+
import "@fortawesome/fontawesome-svg-core/styles.css";
4+
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
5+
import { config, library } from "@fortawesome/fontawesome-svg-core";
6+
import { faDiscord, faFacebookSquare, faGithub, faInstagram, faTwitter } from "@fortawesome/free-brands-svg-icons";
7+
import { faCalendar, faEnvelope, faExternalLinkAlt, faMapMarkerAlt } from "@fortawesome/free-solid-svg-icons";
8+
9+
import Gallery from "./gallery";
10+
11+
library.add(
12+
faEnvelope,
13+
faCalendar,
14+
faMapMarkerAlt,
15+
faExternalLinkAlt,
16+
faTwitter,
17+
faFacebookSquare,
18+
faInstagram,
19+
faGithub,
20+
faDiscord
21+
);
22+
config.autoAddCss = false;
23+
24+
function Footer(props) {
25+
return (
26+
<footer className="bg-white">
27+
<div className="container mx-auto px-5 md:px-0 lg:px-0 py-10 lg:py-20 mt-20 lg:mt-16">
28+
<div className="flex sm:flex-row flex-col z-15 justify-between text-sm mb-10 lg:mb-20 text-center md:text-left">
29+
<h1 className="font-humane font-black h-20 lg:h-full text-sship2 md:text-[15rem] lg:text-[25rem] md:mt-24 lg:mt-[155px] uppercase tracking-wide">
30+
Thank You<span className="text-[#F7931E]">.</span>
31+
</h1>
32+
<div className="lg:basis-1/4">
33+
<h1 className="font-clashDisplay font-black p-1 text-xl lg:text-3xl uppercase">🧡 from the osca team</h1>
34+
<div className="z-10 mt-8">
35+
{[
36+
{
37+
route: "https://docs.oscafrica.org/about/community-code-of-conduct",
38+
title: "Code of Conduct"
39+
},
40+
{
41+
route: "/gallery",
42+
title: "Gallery"
43+
},
44+
{
45+
route: "https://oscafrica.org/community",
46+
title: "Community"
47+
},
48+
{
49+
route: "https://opencollective.com/osca",
50+
title: "Open Collective"
51+
},
52+
{
53+
route: "https://blog.oscafrica.org",
54+
title: "Blog"
55+
}
56+
].map((link) => (
57+
<ul className="group m-0 p-0" key={link.title}>
58+
<li className="lg:pr-8 pb-2">
59+
<a
60+
className="group-hover:text-[#F7931E] font-clashDisplay no-underline text-black text-lg"
61+
href={link.route}
62+
>
63+
{link.title}
64+
</a>
65+
</li>
66+
</ul>
67+
))}
68+
</div>
69+
<div className="z-10 mt-8">
70+
{[
71+
{
72+
key: 0,
73+
label: "Email",
74+
faIcon: ["fa", "envelope"],
75+
href: "mailto:[email protected]"
76+
},
77+
{
78+
key: 1,
79+
label: "Twitter",
80+
faIcon: ["fab", "twitter"],
81+
href: "https://twitter.com/oscafest"
82+
},
83+
{
84+
key: 2,
85+
label: "Facebook",
86+
faIcon: ["fab", "facebook-square"],
87+
href: "https://facebook.com/opensourcecommunityafrica"
88+
},
89+
{
90+
key: 3,
91+
label: "Instagram",
92+
faIcon: ["fab", "instagram"],
93+
href: "https://www.instagram.com/oscafrica"
94+
},
95+
{
96+
key: 4,
97+
label: "GitHub",
98+
faIcon: ["fab", "github"],
99+
href: "https://github.com/oscafrica"
100+
},
101+
{
102+
key: 5,
103+
label: "Discord",
104+
faIcon: ["fab", "discord"],
105+
href: "https://discord.gg/open-source-community-africa-676252299093475348"
106+
}
107+
].map((icon) => (
108+
<a
109+
key={icon.key}
110+
aria-label={icon.label}
111+
className="group p-2 no-underline text-black text-lg border mr-3"
112+
href={icon.href}
113+
>
114+
<i>
115+
<FontAwesomeIcon icon={icon.faIcon} className="group-hover:text-[#F7931E]" />
116+
</i>
117+
</a>
118+
))}
119+
</div>
120+
</div>
121+
</div>
122+
{props.showGallery ? <Gallery /> : null}
123+
</div>
124+
</footer>
125+
);
126+
}
127+
128+
Footer.propTypes = {
129+
showGallery: PropTypes.bool
130+
};
131+
132+
Footer.defaultProps = {
133+
showGallery: true
134+
};
135+
136+
export default Footer;

src/components/2024/gallery.js

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import React from "react";
2+
3+
import { gallery } from "./cloudImages";
4+
5+
function Gallery() {
6+
return (
7+
<section id="gallery" className="bg-white">
8+
<div className="grid lg:grid-cols-2 gap-4 lg:gap-6 text-white">
9+
{[
10+
{
11+
day: "Day 0",
12+
tag: "Sustain Africa",
13+
image: gallery.one,
14+
href: "https://flic.kr/s/aHBqjAKNq2"
15+
},
16+
{
17+
day: "Day 1",
18+
tag: "Workshop + Conference",
19+
image: gallery.two,
20+
href: "https://flic.kr/s/aHBqjANqno"
21+
},
22+
{
23+
day: "Day 2",
24+
tag: "Conference",
25+
image: gallery.three,
26+
href: "https://flic.kr/s/aHBqjANxYi"
27+
}
28+
].map((gallery) => (
29+
<a
30+
href={gallery.href}
31+
key={gallery.day}
32+
target="_blank"
33+
rel="noopener noreferrer"
34+
className={`group overflow-hidden p-3 ${gallery.day === "Day 0" ? "lg:col-start-1 lg:col-end-3" : ""}`}
35+
>
36+
<img
37+
className="group-hover:scale-125 transition-all ease-in-out delay-0 mx-auto h-full w-full brightness-75"
38+
src={gallery.image}
39+
alt={`An amazing photograph from ${gallery.tag}.`}
40+
/>
41+
<div className="z-0 -mt-20 px-6 w-auto h-20 text-white relative">
42+
<p className="font-clashDisplay p-1 text-sm lg:text-xs mb-2 table uppercase">{gallery.day}</p>
43+
<h1 className="font-clashDisplay font-bold p-1 text-xl lg:text-2xl table">{gallery.tag}</h1>
44+
</div>
45+
</a>
46+
))}
47+
</div>
48+
</section>
49+
);
50+
}
51+
52+
export default Gallery;

0 commit comments

Comments
 (0)