generated from nhcarrigan/template
feat: add team page
This commit is contained in:
parent
516a022553
commit
e12220441a
@ -1,7 +1,11 @@
|
|||||||
/** @type {import('next').NextConfig} */
|
/** @type {import('next').NextConfig} */
|
||||||
const nextConfig = {
|
const nextConfig = {
|
||||||
images: {
|
images: {
|
||||||
domains: ['cdn.nhcarrigan.com']
|
remotePatterns: [
|
||||||
|
{
|
||||||
|
hostname: "cdn.nhcarrigan.com"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
38
src/app/team/page.tsx
Normal file
38
src/app/team/page.tsx
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
import { Certification } from "@/components/cert";
|
||||||
|
import { Game } from "@/components/game";
|
||||||
|
import { Member } from "@/components/member";
|
||||||
|
import { Rule } from "@/components/rule";
|
||||||
|
import { Certifications } from "@/config/Certifications";
|
||||||
|
import { Games } from "@/config/Games";
|
||||||
|
import { TeamMembers } from "@/config/TeamMembers";
|
||||||
|
import { Charm } from "next/font/google";
|
||||||
|
|
||||||
|
const Team = (): JSX.Element => {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<main className="w-[95%] text-center max-w-4xl m-auto mt-16 mb-16 rounded-lg">
|
||||||
|
<h1 className="text-5xl">Our Team</h1>
|
||||||
|
<section>
|
||||||
|
<p className="mb-2">
|
||||||
|
Meet the people behind nhcarrigan's success!
|
||||||
|
</p>
|
||||||
|
<Rule />
|
||||||
|
<div className="w-full">
|
||||||
|
{TeamMembers.map((member) => (
|
||||||
|
<Member
|
||||||
|
key={member.name}
|
||||||
|
name={member.name}
|
||||||
|
url={member.url}
|
||||||
|
avatar={member.avatar}
|
||||||
|
joinDate={member.joinDate}
|
||||||
|
role={member.role}
|
||||||
|
/>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</main>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Team;
|
46
src/components/member.tsx
Normal file
46
src/components/member.tsx
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
import Image from "next/image";
|
||||||
|
import { useState } from "react";
|
||||||
|
|
||||||
|
interface MemberProps {
|
||||||
|
name: string;
|
||||||
|
avatar: string;
|
||||||
|
role: string;
|
||||||
|
url: string;
|
||||||
|
joinDate: Date;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const Member = (props: MemberProps): JSX.Element => {
|
||||||
|
const { name, avatar, role, url, joinDate } = props;
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="flex items-start gap-2.5 pb-10 w-full">
|
||||||
|
<Image
|
||||||
|
className="rounded-full"
|
||||||
|
src={`https://cdn.nhcarrigan.com/avatars/${avatar}`}
|
||||||
|
alt={`${name}'s avatar.`}
|
||||||
|
width={75}
|
||||||
|
height={75}
|
||||||
|
/>
|
||||||
|
<div className="flex flex-col w-full leading-1.5 p-4 border-gray-200 bg-gray-100 rounded-e-xl rounded-es-xl dark:bg-gray-700">
|
||||||
|
<div>
|
||||||
|
<a
|
||||||
|
className="text-sm font-semibold text-[#abfcec]"
|
||||||
|
href={url}
|
||||||
|
target="noopener noreferrer"
|
||||||
|
>
|
||||||
|
{name}
|
||||||
|
</a>
|
||||||
|
<p className="text-sm font-normal text-gray-500 dark:text-gray-400">
|
||||||
|
{joinDate.toLocaleDateString("en-GB", {
|
||||||
|
month: "long",
|
||||||
|
year: "numeric",
|
||||||
|
})}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<p className="text-sm font-normal py-2.5 text-gray-900 dark:text-white">
|
||||||
|
{role}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
@ -5,5 +5,6 @@ export const NavItems = [
|
|||||||
{ href: "/contact", text: "Contact" },
|
{ href: "/contact", text: "Contact" },
|
||||||
{ href: "/certs", text: "Certifications" },
|
{ href: "/certs", text: "Certifications" },
|
||||||
{ href: "/reviews", text: "Reviews" },
|
{ href: "/reviews", text: "Reviews" },
|
||||||
{ href: "/games", text: "Games"}
|
{ href: "/games", text: "Games"},
|
||||||
|
{ href: "/team", text: "Our Team" }
|
||||||
].sort((a, b) => a.text.localeCompare(b.text));
|
].sort((a, b) => a.text.localeCompare(b.text));
|
||||||
|
@ -41,7 +41,7 @@ export const Donate: {
|
|||||||
} = {
|
} = {
|
||||||
icon: faMoneyBill,
|
icon: faMoneyBill,
|
||||||
link: "https://docs.nhcarrigan.com/#/donate",
|
link: "https://docs.nhcarrigan.com/#/donate",
|
||||||
label: "Support Our Work 💜",
|
label: "Donate 💜",
|
||||||
alt: "Money Icon",
|
alt: "Money Icon",
|
||||||
color: "#003600",
|
color: "#003600",
|
||||||
background: `linear-gradient(
|
background: `linear-gradient(
|
||||||
|
36
src/config/TeamMembers.ts
Normal file
36
src/config/TeamMembers.ts
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
export const TeamMembers: {
|
||||||
|
name: string;
|
||||||
|
avatar: string;
|
||||||
|
role: string;
|
||||||
|
url: string;
|
||||||
|
joinDate: Date;
|
||||||
|
}[] = [
|
||||||
|
{
|
||||||
|
name: "Naomi Carrigan",
|
||||||
|
avatar: "naomi.png",
|
||||||
|
role: "Founder / CEO",
|
||||||
|
url: "https://chat.nhcarrigan.com",
|
||||||
|
joinDate: new Date("April 1, 2020")
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Denna",
|
||||||
|
avatar: "denna.png",
|
||||||
|
role: "Chief Financial Officer",
|
||||||
|
url: "https://denna.nhcarrigan.com",
|
||||||
|
joinDate: new Date("April 2, 2020")
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Tim",
|
||||||
|
avatar: "tim.png",
|
||||||
|
role: "Chief Technical Officer",
|
||||||
|
url: "https://chat.nhcarrigan.com",
|
||||||
|
joinDate: new Date("April 2, 2020")
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Anna",
|
||||||
|
avatar: "anna.png",
|
||||||
|
role: "Software Engineering Intern",
|
||||||
|
url: "https://chat.nhcarrigan.com",
|
||||||
|
joinDate: new Date("August 29, 2023")
|
||||||
|
}
|
||||||
|
]
|
Loading…
x
Reference in New Issue
Block a user