Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/data/members.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ export const MEMBER_PRICES = {
export const faq = [
{
question: "How much is membership?",
answer: "$25 dollars for the whole year or $15 dollars per semester",
answer: "$30 dollars for the whole year or $20 dollars per semester",
},
{
question: "What makes Code[Coogs] special?",
Expand Down
76 changes: 60 additions & 16 deletions src/officers/Officers.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -57,12 +57,22 @@ const OfficerCard = (props: OfficerCardProps) => {
<div className="pt-4">
<div className="flex space-x-2 justify-end">
{instagram && (
<a href={instagram} target="_blank" rel="noreferrer" aria-label="Go to our Instagram">
<a
href={instagram}
target="_blank"
rel="noreferrer"
aria-label="Go to our Instagram"
>
<InstagramIcon />
</a>
)}
{linkedin && (
<a href={linkedin} target="_blank" rel="noreferrer" aria-label="Go to our LinkedIn">
<a
href={linkedin}
target="_blank"
rel="noreferrer"
aria-label="Go to our LinkedIn"
>
<LinkedInIcon />
</a>
)}
Expand All @@ -75,7 +85,8 @@ const OfficerCard = (props: OfficerCardProps) => {
const OfficersPage = () => {
const numOfficers = officers.length;
const [semester, setSemester] = useState<number>(numOfficers - 1);
const [officerCardOpacity, setOfficerCardOpacity] = useState<string>("opacity-100");
const [officerCardOpacity, setOfficerCardOpacity] =
useState<string>("opacity-100");

const changeSemester = (newSemester: number) => {
setOfficerCardOpacity("opacity-0");
Expand Down Expand Up @@ -103,8 +114,12 @@ const OfficersPage = () => {
const isVP = (p: string) => /\bvp\b|vice\s*president/i.test(p);

const presidents = currentList.filter((o) => isPresident(o.position));
const vps = currentList.filter((o) => !isPresident(o.position) && isVP(o.position));
const others = currentList.filter((o) => !isPresident(o.position) && !isVP(o.position));
const vps = currentList.filter(
(o) => !isPresident(o.position) && isVP(o.position),
);
const others = currentList.filter(
(o) => !isPresident(o.position) && !isVP(o.position),
);

return (
<div className="text-white p-4">
Expand All @@ -118,25 +133,44 @@ const OfficersPage = () => {
<div className="flex text-lg justify-center items-center space-x-4 my-8">
<div className="flex-1 relative">
<div className="relative flex justify-end">
<span className={"absolute transition-transform duration-300 opacity-30 cursor-pointer translate-x-0 -translate-y-6"} onClick={handleDecrementSemester} onKeyDown={handleDecrementSemester}>
<span
className={
"absolute transition-transform duration-300 opacity-30 cursor-pointer translate-x-0 -translate-y-6"
}
onClick={handleDecrementSemester}
onKeyDown={handleDecrementSemester}
>
{semester - 1 >= 0 && officers[semester - 1].semester}
</span>
<span className={"text-dark-primary opacity-100 z-10"}>
{officers[semester].semester}
</span>
<span className={"absolute transition-transform duration-300 opacity-30 cursor-pointer translate-y-6"} onClick={handleIncrementSemester} onKeyUp={handleIncrementSemester}>
{semester + 1 < numOfficers && officers[semester + 1].semester}
<span
className={
"absolute transition-transform duration-300 opacity-30 cursor-pointer translate-y-6"
}
onClick={handleIncrementSemester}
onKeyUp={handleIncrementSemester}
>
{semester + 1 < numOfficers &&
officers[semester + 1].semester}
</span>
</div>
</div>
<span className="flex-1 text-left relative z-10 ml-4">Officers</span>
<span className="flex-1 text-left relative z-10 ml-4">
Officers
</span>
</div>

{/* President section */}
{presidents.length > 0 && (
<div className="mb-8">
<h2 className="text-2xl text-dark-primary font-bold mb-4">President</h2>
<div className={`flex justify-center transition-opacity duration-500 ${officerCardOpacity}`}>
<h2 className="text-2xl text-dark-primary font-bold mb-4">
President
</h2>
<div
className={`flex justify-center transition-opacity duration-500 ${officerCardOpacity}`}
>
<div className="w-full md:w-1/3">
<div className="grid grid-cols-1 gap-4">
{presidents.map((officer) => (
Expand All @@ -160,8 +194,12 @@ const OfficersPage = () => {
{/* Vice Presidents section (larger title; responsive layout for 3 VPs) */}
{vps.length > 0 && (
<div className="mb-8">
<h2 className="text-2xl text-dark-primary font-bold mb-4">Vice Presidents</h2>
<div className={`transition-opacity duration-500 ${officerCardOpacity}`}>
<h2 className="text-2xl text-dark-primary font-bold mb-4">
Vice Presidents
</h2>
<div
className={`transition-opacity duration-500 ${officerCardOpacity}`}
>
{/* If exactly 3 VPs: show single-row on md+, stacked with top centered on small screens */}
{vps.length === 3 ? (
<>
Expand Down Expand Up @@ -213,7 +251,9 @@ const OfficersPage = () => {
</div>
</>
) : (
<div className={`grid grid-cols-1 md:grid-cols-3 gap-4 transition-opacity duration-500 ${officerCardOpacity}`}>
<div
className={`grid grid-cols-1 md:grid-cols-3 gap-4 transition-opacity duration-500 ${officerCardOpacity}`}
>
{vps.map((officer) => (
<OfficerCard
key={officer.name}
Expand All @@ -235,8 +275,12 @@ const OfficersPage = () => {
{/* Regular officers section */}
{others.length > 0 && (
<div className="mb-8">
<h2 className="text-2xl text-dark-primary font-bold mb-4">Officers</h2>
<div className={`grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4 px-0 md:px-8 ease-in-out transition-opacity duration-500 ${officerCardOpacity}`}>
<h2 className="text-2xl text-dark-primary font-bold mb-4">
Officers
</h2>
<div
className={`grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4 px-0 md:px-8 ease-in-out transition-opacity duration-500 ${officerCardOpacity}`}
>
{others.map((officer) => (
<OfficerCard
key={officer.name}
Expand Down
31 changes: 10 additions & 21 deletions src/opportunities/OpportunitiesInfo.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,40 +4,29 @@ const OpportunitiesRoles = [
{
name: "Intern",
icon: "/assets/opportunities/intern.svg",
year: "Fall 2024",
year: "Spring 2026",
description:
"Gain hands-on experience by working under a director, with the opportunity to grow into an officer role.",
applicationLink: "https://forms.gle/9PZiZkXpjcGVRVzUA",
applicationLink:
"https://docs.google.com/forms/d/e/1FAIpQLSekGmK75Gv-zXcM_2FGh6JrjeQuMYID2OSyIDu3-VrQ8tyCXw/viewform?usp=dialog",
},

{
name: "Team Lead",
name: "Code Coogs Mentorship",
icon: "/assets/opportunities/teamLead.svg",
year: "Fall 2024 - Spring 2025",
year: "Spring 2026",
description:
"Lead a team to create innovative projects and present them to company representatives.",
applicationLink:
"https://docs.google.com/forms/d/e/1FAIpQLSdtJq9k76CMKvqo_MhmHVVGM0ZncKllp5vZ67BRs2IuGBOvsA/viewform",
"Get mentorship from a Code Coogs mentor, get help with resumes, interviews, etc.",
applicationLink: "https://forms.gle/DZ5kgJWWuPsxHFBs8",
},

{
name: "CUES - Advanced Team",
name: "Members Only Teams",
icon: "/assets/opportunities/cues.svg",
year: "Fall 2024 - Spring 2025",
description:
"Partner with UH research faculty to develop a Nigerian employment database.",
applicationLink:
"https://docs.google.com/forms/d/e/1FAIpQLScwDkeMms9bg7D_SZ8mqVCBJWdYoHpaKomR38A0IXZcuJw3og/viewform",
},

{
name: "Committee Position",
icon: "/assets/opportunities/committee.svg",
year: "Fall 2024 - Spring 2025",
description:
"Contribute to workshops, events, web development, and marketing initiatives.",
description: "Become a part of a team and build a fun project together!",
applicationLink:
"https://docs.google.com/forms/d/e/1FAIpQLSe2ek4WWAqtz3If-p55_HuN1DNjL9xHhegTxytHtZDXOb79Bw/viewform",
"https://docs.google.com/forms/d/e/1FAIpQLSfXB-asea_xzEsDefKL5bBQmGolWeslRzXi08b7Bc2m1TO-EA/viewform?usp=dialog",
},
];

Expand Down
Loading