diff --git a/client/public/godot-1.png b/client/public/godot-1.png new file mode 100644 index 0000000..863dadf Binary files /dev/null and b/client/public/godot-1.png differ diff --git a/client/public/godot-2.png b/client/public/godot-2.png new file mode 100644 index 0000000..863dadf Binary files /dev/null and b/client/public/godot-2.png differ diff --git a/client/public/trophy.png b/client/public/trophy.png new file mode 100644 index 0000000..5deddb1 Binary files /dev/null and b/client/public/trophy.png differ diff --git a/client/public/unity-logo.png b/client/public/unity-logo.png new file mode 100644 index 0000000..1ecf784 Binary files /dev/null and b/client/public/unity-logo.png differ diff --git a/client/src/pages/landing.tsx b/client/src/pages/landing.tsx new file mode 100644 index 0000000..1af1dcb --- /dev/null +++ b/client/src/pages/landing.tsx @@ -0,0 +1,196 @@ +import Image from "next/image"; + +export default function Landing() { + const pageTitle = "Game Development UWA"; + const description = + "Little eye catching intro about what the club does here. Maybe " + + "something about the purpose of the club, maybe something about the " + + "type of events that the club runs."; + const btnList = [ + { name: "More about us", link: "" }, + { name: "Join our Discord", link: "" }, + ]; + const mainPic = { + url: "/placeholder.png", + alt: "placeholder", + }; + + type cardImage = { + url: string; + width: number; + height: number; + alt: string; + }; + + type cardType = { + id: number; + title: string; + description: string; + type: string; + image: cardImage | null; + row: number; + gridColumn: string; + }; + const eventCards = [ + { + id: 1, + title: "Game Jams", + description: + "Compete with a team over a short time period to develop your own game! Each game jam has a different theme so be prepared to think creatively.", + type: "default", + image: { + url: "/trophy.png", + width: 97, + height: 121, + alt: "Trophy", + }, + row: 1, + gridColumn: "702fr", + }, + { + id: 2, + title: "Social Events", + description: + "Meet other folks interested in game dev, play games, and maybe even recruit members for your next game jam team :P", + type: "default", + image: null, + row: 1, + gridColumn: "513fr", + }, + { + id: 3, + title: "Other Event Type", + description: + "Some other event type that the club runs! I'm not sure what, but this section might look better with four boxes…", + type: "default", + image: null, + row: 2, + gridColumn: "233fr", + }, + { + id: 4, + title: "Workshops", + description: + "Learn core Game Development technologies, such as Godot, Unity and more. Most workshops are presented by committee members with the chance to produce your own small game.", + type: "special-border", + image: null, + row: 2, + gridColumn: "275fr", + }, + ]; + + const logoImages = [ + { url: "/godot-1.png", alt: "Godot Logo", position: "start" }, + { url: "/unity-logo.png", alt: "Unity Logo", position: "end" }, + { url: "/godot-1.png", alt: "Godot Logo", position: "start" }, + ]; + + const row1Cards = eventCards.filter((card) => card.row === 1); + const row2Cards = eventCards.filter((card) => card.row === 2); + + const renderCardHeader = (card: cardType) => { + if (card.type === "special-border") { + return ( +
+
+ {card.title} +
+
+ ); + } + + return ( +
+ {card.title} +
+ ); + }; + + const renderCard = (card: cardType) => ( +
+ {renderCardHeader(card)} + +
+
+ +

{card.description}

+ {card.image && ( + {card.image.alt} + )} +
+
+
+ ); + + return ( +
+
+
+
+

{pageTitle}

+

+ {description} +

+
+ {btnList.map((item, i) => ( + + ))} +
+
+ +
+ {mainPic.alt} +
+
+
+ +
+
+
+ {row1Cards.map(renderCard)} +
+ +
+ {row2Cards.map(renderCard)} + +
+ {logoImages.map((logo, index) => ( + {logo.alt} + ))} +
+
+
+
+
+ ); +}