Skip to content

Commit 0ba756f

Browse files
authored
Implement Mastercraft Web Design from Figma File (#246)
* create header section * description section init build * Cuririculum accordion build * instructors & pricing section build * next cohort section build * Footer & Portfolio section build * add seo meta data * build mastercraft landing page init * whatWeOffer section build * student showcase build init * FAQ and testimonial sections build
1 parent c28a4bb commit 0ba756f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+1895
-630
lines changed

public/check.png

247 Bytes
Loading

public/check.svg

Lines changed: 3 additions & 0 deletions
Loading

public/syt.png

10.8 KB
Loading

src/assets/images/icons/award.svg

Lines changed: 3 additions & 0 deletions
Loading

src/assets/images/icons/book.svg

Lines changed: 10 additions & 0 deletions
Loading

src/assets/images/icons/calendar.svg

Lines changed: 3 additions & 0 deletions
Loading

src/assets/images/icons/check.svg

Lines changed: 3 additions & 0 deletions
Loading

src/assets/images/icons/dotpoints.svg

Lines changed: 3 additions & 0 deletions
Loading

src/assets/images/icons/folder.svg

Lines changed: 3 additions & 0 deletions
Loading

src/assets/images/icons/index.js

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,27 @@
1-
// import arrowRight from "./arrow-right.svg";
2-
// import arrowCircleLeft from "./ArrowCircleLeft.svg";
3-
// import arrowCircleRight from "./ArrowCircleRight.svg";
1+
import award from "./award.svg";
2+
import book from "./book.svg";
43
import briefcase from "./briefcase.svg";
5-
// import cancel from "./cancel.svg";
6-
// import closeIcon from "./close-icon.svg";
7-
// import greyLinkedin from "./linkedin-grey.svg";
4+
import calendar from "./calendar.svg";
5+
import check from "./check.svg";
6+
import dotpoints from "./dotpoints.svg";
7+
import folder from "./folder.svg";
88
import sytLogoGreen from "./logo-green-bg.svg";
99
import sytLogoWhite from "./logo-white-bg.svg";
10-
// import menu from "./menu.svg";
11-
// import search from "./search.svg";
1210
import teams from "./teams.svg";
13-
// import greyTwitter from "./twitter-grey.svg";
1411
import upleft from "./up-left.svg";
1512
import upleftGreen from "./upleft-green.svg";
1613

17-
export { briefcase, sytLogoGreen, sytLogoWhite, teams, upleft, upleftGreen };
14+
export {
15+
award,
16+
briefcase,
17+
book,
18+
calendar,
19+
check,
20+
dotpoints,
21+
folder,
22+
sytLogoGreen,
23+
sytLogoWhite,
24+
teams,
25+
upleft,
26+
upleftGreen,
27+
};
Loading
Loading
305 KB
Loading

src/assets/images/portfolio.png

207 KB
Loading
-293 Bytes
Binary file not shown.

src/assets/images/resources-page/arrow.svg

Lines changed: 0 additions & 9 deletions
This file was deleted.
219 KB
Loading
-106 KB
Binary file not shown.
-71 KB
Binary file not shown.
-94.8 KB
Binary file not shown.
-68.4 KB
Binary file not shown.
Loading
Binary file not shown.
257 KB
Loading
Lines changed: 4 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,4 @@
1-
import arrowRight from "./arrow-right.png";
2-
import arrow from "./arrow.svg";
3-
4-
import course1 from "./course1.png";
5-
import course2 from "./course2.png";
6-
import course3 from "./course3.png";
7-
import course4 from "./course4.png";
8-
import earthMoon from "./earth_moon.png";
9-
import search from "./search-icon.svg";
10-
11-
export {
12-
earthMoon,
13-
search,
14-
arrowRight,
15-
course1,
16-
course2,
17-
course3,
18-
course4,
19-
arrow,
20-
};
1+
export { default as backend } from "./backend.png";
2+
export { default as dataScience } from "./data-science.png";
3+
export { default as frontend } from "./frontend.png";
4+
export { default as productDesign } from "./product-design.png";
Loading

src/assets/images/resources-page/search-icon.svg

Lines changed: 0 additions & 3 deletions
This file was deleted.
Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
import { useState } from "react";
2+
import { FiPlusCircle, FiMinusCircle } from "react-icons/fi";
3+
4+
function CurriculumAccordion() {
5+
const [activeQuestion, setActiveQuestion] = useState(null);
6+
const questions = [
7+
{
8+
id: 1,
9+
title: "Introduction to Product Design",
10+
description:
11+
"Yes, you can try us for free for 30 days. If you want, we’ll provide you with a free, personalized 30-minute onboarding call to get you up and running as soon as possible.",
12+
},
13+
{
14+
id: 2,
15+
title: "UX Research",
16+
description:
17+
"Yes, you can try us for free for 30 days. If you want, we’ll provide you with a free, personalized 30-minute onboarding call to get you up and running as soon as possible.",
18+
},
19+
{
20+
id: 3,
21+
title: "IA & Ideation",
22+
description:
23+
"Yes, you can try us for free for 30 days. If you want, we’ll provide you with a free, personalized 30-minute onboarding call to get you up and running as soon as possible.",
24+
},
25+
{
26+
id: 4,
27+
title: "User Flows & Wireframes",
28+
description:
29+
"Yes, you can try us for free for 30 days. If you want, we’ll provide you with a free, personalized 30-minute onboarding call to get you up and running as soon as possible.",
30+
},
31+
{
32+
id: 5,
33+
title: "Color & Typography",
34+
description:
35+
"Yes, you can try us for free for 30 days. If you want, we’ll provide you with a free, personalized 30-minute onboarding call to get you up and running as soon as possible.",
36+
},
37+
{
38+
id: 6,
39+
title: "UI Components",
40+
description:
41+
"Yes, you can try us for free for 30 days. If you want, we’ll provide you with a free, personalized 30-minute onboarding call to get you up and running as soon as possible.",
42+
},
43+
];
44+
45+
const toggleQuestion = (index) => {
46+
setActiveQuestion(activeQuestion === index ? null : index);
47+
};
48+
49+
return (
50+
<div className="flex flex-col justify-center w-full max-w-full mx-auto font-openSans">
51+
{questions.map((question, index) => (
52+
<div
53+
key={question.id}
54+
className={`${activeQuestion === index ? "bg-white rounded-lg" : "bg-transparent"} border-b px-4 py-3`}
55+
>
56+
<h2 id={`flush-heading${index + 1}`}>
57+
<button
58+
aria-label={question.title}
59+
className={`group relative flex w-full md:items-center rounded-none text-left text-base md:text-lg transition ${
60+
activeQuestion === index
61+
? ""
62+
: "overflow-anchor:none hover:z-[2] focus:z-[3]"
63+
} focus:outline-none ${
64+
activeQuestion === index
65+
? "font-normal"
66+
: "&:not([data-te-collapse-collapsed]):text-primary"
67+
} ${
68+
activeQuestion === index
69+
? "boxShadow:inset_0_-1px_0_rgba(229,231,235)"
70+
: "&:not([data-te-collapse-collapsed]):boxShadow:inset_0_-1px_0_rgba(229,231,235)"
71+
} dark:&:not([data-te-collapse-collapsed]):text-primary-400`}
72+
type="button"
73+
data-te-collapse-init
74+
data-te-target={`#flush-collapse${index + 1}`}
75+
aria-expanded={activeQuestion === index ? "true" : "false"}
76+
aria-controls={`flush-collapse${index + 1}`}
77+
onClick={() => toggleQuestion(index)}
78+
>
79+
<h4 className="font-openSans">
80+
Week {question.id}:{" "}
81+
<span className="font-semibold">{question.title}</span>
82+
</h4>
83+
<span className="ml-auto h-10 w-10 shrink-0 text-black rounded-md flex md:items-center justify-center overflow-hidden">
84+
{activeQuestion === index ? (
85+
<FiMinusCircle />
86+
) : (
87+
<FiPlusCircle />
88+
)}
89+
</span>
90+
</button>
91+
</h2>
92+
<div
93+
id={`flush-collapse${index + 1}`}
94+
className={`${
95+
activeQuestion === index ? "" : "invisible hidden"
96+
} border-0`}
97+
data-te-collapse-item
98+
data-te-collapse-show
99+
aria-labelledby={`flush-heading${index + 1}`}
100+
data-te-parent="#accordionFlushExample"
101+
>
102+
<p className="font-openSans text-base text-gray-600 font-normal">
103+
{question.description}
104+
</p>
105+
</div>
106+
</div>
107+
))}
108+
</div>
109+
);
110+
}
111+
112+
export default CurriculumAccordion;
113+
114+
// CurriculumAccordion.propTypes = {
115+
// questions: PropTypes.arrayOf(
116+
// PropTypes.shape({
117+
// id: PropTypes.number,
118+
// question: PropTypes.string,
119+
// answer: PropTypes.string,
120+
// })
121+
// ),
122+
// };
123+
124+
// CurriculumAccordion.defaultProps = {
125+
// questions: [],
126+
// };

0 commit comments

Comments
 (0)