-
Notifications
You must be signed in to change notification settings - Fork 2
Issue 14 create first two sections of landing page #31
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
baa6e2b
f277762
63f020f
8c94fbc
663a4f8
26c1760
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Please use the different coloured version of this from the figma. You can export the image from the figma and swap it out for this one. |
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Please move this into |
| Original file line number | Diff line number | Diff line change | ||
|---|---|---|---|---|
| @@ -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."; | ||||
|
Comment on lines
+4
to
+8
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. As these only get used once, they don't need to be defined as constants. Constants should only really be used for things that get reused. Instead, you can just write the title and description wherever you would use the constants. |
||||
| const btnList = [ | ||||
| { name: "More about us", link: "" }, | ||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Please link this to the committee/about page! |
||||
| { name: "Join our Discord", link: "" }, | ||||
| ]; | ||||
| const mainPic = { | ||||
| url: "/placeholder.png", | ||||
| alt: "placeholder", | ||||
| }; | ||||
|
|
||||
|
Comment on lines
+13
to
+17
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This probably also doesn't need to be defined as a const unless we resuse this information somewhere else |
||||
| 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; | ||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't think the gridColumn value ever actually gets used when rendering the cards. Please either remove it or use it when rendering the cards. |
||||
| }; | ||||
| 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 ( | ||||
| <div | ||||
| style={{ | ||||
| clipPath: | ||||
| "polygon(0% 0%, 71% 0%, 78% 8px, 100% 8px, 100% calc(100% - 8px), 0% calc(100% - 8px))", | ||||
| }} | ||||
| className="relative bg-purple-400 p-[1px]" | ||||
| > | ||||
| <div | ||||
| style={{ | ||||
| clipPath: | ||||
| "polygon(1px 1px, calc(71% - 1px) 1px, calc(78% - 1px) 8px, calc(100% - 1px) 8px, calc(100% - 1px) calc(100% - 8px - 1px), 1px calc(100% - 8px - 1px))", | ||||
| }} | ||||
| className="bg-[#0d1025] p-4 pt-3 font-jersey10 font-semibold text-purple-300" | ||||
| > | ||||
| {card.title} | ||||
| </div> | ||||
| </div> | ||||
| ); | ||||
| } | ||||
|
|
||||
| return ( | ||||
| <div className="rounded-md border border-purple-400 px-4 py-2 font-jersey10 font-semibold text-purple-300"> | ||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Text in the title of the event type cards should be white, as in the figma. The background of the card title section should also be a dark purple. Please also change this over for the card with the special border. It may also look better if you increase the font size of the title a bit. |
||||
| {card.title} | ||||
| </div> | ||||
| ); | ||||
| }; | ||||
|
|
||||
| const renderCard = (card: cardType) => ( | ||||
| <div key={card.id} className="flex flex-col"> | ||||
| {renderCardHeader(card)} | ||||
|
|
||||
| <div className="mt-4 rounded-md border border-[#1B1F4C] bg-[#0f132e] p-4 text-gray-200"> | ||||
| <div className="flex gap-2"> | ||||
| <span>▶</span> | ||||
| <p>{card.description}</p> | ||||
| {card.image && ( | ||||
| <Image | ||||
| src={card.image.url} | ||||
| width={card.image.width} | ||||
| height={card.image.height} | ||||
| alt={card.image.alt} | ||||
| className="opacity-60" | ||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't think changing the opacity is necessary here. We should be able to get the desired colour by using the image imported from the figma
Suggested change
|
||||
| /> | ||||
| )} | ||||
| </div> | ||||
| </div> | ||||
| </div> | ||||
| ); | ||||
|
|
||||
| return ( | ||||
| <div> | ||||
| <section className="flex w-full justify-center bg-[#182150] px-12 py-10"> | ||||
| <div className="flex w-full max-w-[1440px] flex-col items-center justify-between gap-12 md:flex-row"> | ||||
| <div className="flex max-w-lg flex-col gap-6 text-white"> | ||||
| <h1 className="font-jersey10 text-4xl font-bold">{pageTitle}</h1> | ||||
| <p className="font-sans text-base leading-relaxed text-white/80"> | ||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think that |
||||
| {description} | ||||
| </p> | ||||
| <div className="mt-4 flex gap-4"> | ||||
| {btnList.map((item, i) => ( | ||||
| <button | ||||
| key={i} | ||||
| className="rounded-lg border border-[#9CA4FD] px-6 py-3 font-jersey10 font-medium text-white transition hover:bg-[#9CA4FD]" | ||||
| > | ||||
| {item.name} > | ||||
| </button> | ||||
|
Comment on lines
+154
to
+159
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Please use the existing button component here, so you wont need to include all the styling. The first button should have the filled variant (which should already be the default) and the second button should have the outline variant. Don't worry if the buttons don't look like the figma yet, they should be updated in an upcoming PR |
||||
| ))} | ||||
| </div> | ||||
| </div> | ||||
|
|
||||
| <div className="flex h-[280px] w-[400px] items-center justify-center rounded-xl bg-[#cfc2ff]"> | ||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Please use tailwind utility classes here, instead of arbitrary px classes. This will be better for scaling and is generally better practice. Please also change over all other uses of arbitrary classes in this file that you can :)
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Please use the custom project colours wherever you can. There should be a matching colour for this somewhere. If one doesn't exist (and you are reusing this colour in other places), you can create one.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Also - the main image should take up the entire space of the div here, inside of being centered inside of the div. You should be able to remove the div that is wrapping the image and just use an Image component. |
||||
| <Image src={mainPic.url} width={80} height={80} alt={mainPic.alt} /> | ||||
| </div> | ||||
| </div> | ||||
| </section> | ||||
|
|
||||
| <section className="bg-[#0d1025] py-16"> | ||||
| <div className="container mx-auto px-6 lg:px-12"> | ||||
| <div className="grid grid-cols-1 gap-10 md:grid-cols-2"> | ||||
| {row1Cards.map(renderCard)} | ||||
| </div> | ||||
|
|
||||
| <div className="mt-10 grid grid-cols-1 gap-10 md:grid-cols-[233fr_275fr_111fr]"> | ||||
| {row2Cards.map(renderCard)} | ||||
|
|
||||
| <div className="flex flex-row items-center justify-center gap-4 md:hidden lg:flex lg:flex-col lg:items-start"> | ||||
| {logoImages.map((logo, index) => ( | ||||
| <Image | ||||
| key={index} | ||||
| src={logo.url} | ||||
| width={135} | ||||
| height={46} | ||||
| alt={logo.alt} | ||||
| className={`${index < logoImages.length - 1 ? "lg:mb-5" : ""} ${logo.position === "end" ? "lg:self-end" : ""}`} | ||||
| /> | ||||
| ))} | ||||
| </div> | ||||
| </div> | ||||
| </div> | ||||
| </section> | ||||
| </div> | ||||
| ); | ||||
| } | ||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please delete one of these and change the name to godot.png! We only need one :)