manifold/web/pages/labs/index.tsx
2022-10-04 18:33:26 -07:00

89 lines
2.5 KiB
TypeScript

import { CHALLENGES_ENABLED } from 'common/challenge'
import { DOMAIN } from 'common/envs/constants'
import Masonry from 'react-masonry-css'
import { Col } from 'web/components/layout/col'
import { Page } from 'web/components/page'
import { SEO } from 'web/components/SEO'
import { SiteLink } from 'web/components/site-link'
import { Title } from 'web/components/title'
export default function LabsPage() {
return (
<Page>
<SEO
title="Manifold labs"
description="Cool experimental features for you to check out!"
url="/labs"
/>
<Col className="px-4">
<Title className="sm:!mt-0" text="🧪 Manifold Labs" />
<Masonry
breakpointCols={{ default: 2, 768: 1 }}
className="-ml-4 flex w-auto"
columnClassName="pl-4 bg-clip-padding"
>
<LabCard
title="🇺🇸 US 2022 Midterms"
description="See Manifold's state-by-state breakdown of senate and governor races"
href="/midterms"
/>
{CHALLENGES_ENABLED && (
<LabCard
title="💥 Challenges"
description="One-on-one bets between friends"
href="/challenges"
/>
)}
<LabCard
title="💸 Manalinks"
description="Send M$ to anyone"
href="/links"
/>
<LabCard
title="💌 Dating"
description="Browse dating profiles and bet on relationships"
href="/date-docs"
/>
<LabCard
title="📈 Stats"
description="Check up on Manifold's usage stats"
href="/stats"
/>
<LabCard
title="🎲 Magic the Guessering"
description="Match MTG card names to their art"
href={`https://${DOMAIN}/mtg/index.html`}
/>
<LabCard title="🐮 Cowp" description="???" href="/cowp" />
</Masonry>
</Col>
</Page>
)
}
const LabCard = (props: {
title: string
description: string
href: string
}) => {
const { title, description, href } = props
return (
<SiteLink
href={href}
className="group mb-4 flex flex-col gap-2 rounded-lg bg-white p-4 shadow-md transition-shadow duration-200 hover:no-underline hover:shadow-lg"
>
<h3 className="text-lg font-semibold group-hover:underline group-hover:decoration-indigo-400 group-hover:decoration-2">
{title}
</h3>
<p className="text-gray-600">{description}</p>
</SiteLink>
)
}