import { ReactNode } from 'react' import Image from 'next/image' import system from '~/config/system.json' import profilePics from '~/utils/profiles' import styles from './InfoBar.module.css' interface ArbitraryChildrenProps { children: ReactNode } interface SideNoteProps { text: string } interface PostInfoPros { publishedDate: Date, authorName: string } interface SystemMemberInfoProps { memberName: string } type InfobarProps = ( ArbitraryChildrenProps | SideNoteProps | PostInfoPros | SystemMemberInfoProps ) export default function InfoBar(props: InfobarProps) { if ('text' in props) { return ( ) } if ('authorName' in props) { const authorKey = props.authorName.toLowerCase() const author = system.members.find((member) => member.name === props.authorName) const style = { '--author-color': author?.color } as React.CSSProperties const picture = profilePics[authorKey] return ( ) } if ('memberName' in props) { const memberKey = props.memberName.toLowerCase() const member = system.members.find((member) => member.name === props.memberName) const style = { '--member-color': member?.color } as React.CSSProperties const picture = profilePics[memberKey] return ( ) } if ('children' in props) { return ( ) } throw new Error('Unknown infobar type') }