import React, { useState } from "react"; import AfterHoursContent, { metadata as afterHoursMetadata, } from "../content/playground/after-hours.event.mdx"; import AltTab, { metadata as altTabEventMetadata, } from "../content/playground/alt-tab.event.mdx"; import CodeyInfo, { metadata as codeyMetadata, } from "../content/playground/codey.team-member.mdx"; import Duties, { metadata as dutiesOrganizedContentMetadata, } from "../content/playground/constitution/duties-of-officers.section.mdx"; import ExecutiveCouncil, { metadata as executiveCouncilOrganizedContentMetadata, } from "../content/playground/constitution/executive-council.section.mdx"; import Membership, { metadata as membershipOrganizedContentMetadata, } from "../content/playground/constitution/membership.section.mdx"; import Name, { metadata as nameOrganizedContentMetadata, } from "../content/playground/constitution/name.section.mdx"; import Officers, { metadata as officersOrganizedContentMetadata, } from "../content/playground/constitution/officers.section.mdx"; import Purpose, { metadata as purposeOrganizedContentMetadata, } from "../content/playground/constitution/purpose.section.mdx"; import { metadata as dogeMetadata } from "../content/playground/doge.team-member.mdx"; import OOTBReact, { metadata as OOTBReactEventMetadata, } from "../content/playground/ootb-react.event.mdx"; import TempTechTalk, { metadata as tempTechTalkMetadata, } from "../content/playground/temp.talk.mdx"; import UnavailableContent, { metadata as unavailableMetadata, } from "../content/playground/unavailable.news.mdx"; import { Button } from "./Button"; import { EventCard } from "./EventCard"; import { EventDescriptionCard } from "./EventDescriptionCard"; import { Link } from "./Link"; import { MiniEventCard } from "./MiniEventCard"; import { MiniTechTalkCard } from "./MiniTechTalkCard"; import { NewsCard } from "./NewsCard"; import { OrganizedContent, LinkProps, createReadAllSection, } from "./OrganizedContent"; import { TeamMember } from "./TeamMember"; import { TeamMemberCard } from "./TeamMemberCard"; import { TechTalkCard } from "./TechTalkCard"; import styles from "./playground.module.css"; const events = [ { Content: OOTBReact, metadata: OOTBReactEventMetadata }, { Content: AfterHoursContent, metadata: afterHoursMetadata }, { Content: AltTab, metadata: altTabEventMetadata }, ]; const constitution = [ { Content: Name, ...nameOrganizedContentMetadata }, { Content: Purpose, ...purposeOrganizedContentMetadata }, { Content: Membership, ...membershipOrganizedContentMetadata }, { Content: Officers, ...officersOrganizedContentMetadata }, { Content: Duties, ...dutiesOrganizedContentMetadata }, { Content: ExecutiveCouncil, ...executiveCouncilOrganizedContentMetadata, }, ]; export function MiniEventCardDemo() { return (
{events.map(({ Content, metadata }) => ( } key={metadata.name + metadata.date.toString()} /> ))}
); } export function NewsCardDemo() { return (
News
Updates from our execs


); } export function ButtonDemo() { return ( <>

Standard buttons

Small buttons

); } export function EventDescriptionCardDemo() { return (
{events.map(({ metadata }) => ( ))}
); } export function EventCardDemo() { return ( <> {events.map(({ Content, metadata }) => ( ))} ); } export function TeamMemberDemo() { return (

Programme Committee


); } export function TeamMemberCardDemo() { return (
); } export function LinkDemo() { return (
Elections

To find out when and where the next elections will be held, keep an eye on the News. For details on the elections, read our{" "} Constitution .

); } export function OrganizedContentDemo() { const sections = [...constitution]; const readAllSection = createReadAllSection( constitution.map(({ id, title, Content }) => ({ Content, section: { id, title }, })), true ); sections.unshift({ ...readAllSection.section, Content: readAllSection.Content, }); const [id, setId] = useState(sections[0].id); function FakeLink({ className, id, children }: LinkProps) { return (
setId(id)}> {children}
); } // eslint-disable-next-line @typescript-eslint/no-non-null-assertion const Content = sections.find( ({ id: sectionId }) => sectionId === id )!.Content; return ( ); } export function TechTalkDemo() { const poster = tempTechTalkMetadata.thumbnails.large ?? tempTechTalkMetadata.thumbnails.small; return (
); } export function MiniTechTalkDemo() { return (
); }