66 lines
1.9 KiB
TypeScript
66 lines
1.9 KiB
TypeScript
"use client"
|
|
|
|
import { CheckIcon, CloseIcon, HeartIcon } from "@/components/Icons"
|
|
import Caption from "@/components/TempDesignSystem/Text/Caption"
|
|
import Footnote from "@/components/TempDesignSystem/Text/Footnote"
|
|
|
|
import styles from "./card.module.css"
|
|
|
|
import type { CheckboxCardProps } from "./card"
|
|
|
|
export default function CheckboxCard({
|
|
Icon = HeartIcon,
|
|
declined = false,
|
|
list,
|
|
name = "join",
|
|
saving = false,
|
|
subtitle,
|
|
text,
|
|
title,
|
|
}: CheckboxCardProps) {
|
|
return (
|
|
<label className={styles.checkbox} data-declined={declined} htmlFor={name}>
|
|
<header className={styles.header}>
|
|
<Caption className={styles.title} textTransform="bold" uppercase>
|
|
{title}
|
|
</Caption>
|
|
{subtitle ? (
|
|
<Caption
|
|
className={styles.subtitle}
|
|
color={saving ? "baseTextAccent" : "uiTextHighContrast"}
|
|
textTransform="bold"
|
|
>
|
|
{subtitle}
|
|
</Caption>
|
|
) : null}
|
|
<Icon
|
|
className={styles.icon}
|
|
color="uiTextHighContrast"
|
|
height={32}
|
|
width={32}
|
|
/>
|
|
</header>
|
|
{list ? (
|
|
<ul className={styles.list}>
|
|
{list.map((listItem) => (
|
|
<li key={listItem.title} className={styles.listItem}>
|
|
{declined ? (
|
|
<CloseIcon
|
|
color="uiTextMediumContrast"
|
|
height={20}
|
|
width={20}
|
|
/>
|
|
) : (
|
|
<CheckIcon color="baseIconLowContrast" height={20} width={20} />
|
|
)}
|
|
<Footnote color="uiTextMediumContrast">{listItem.title}</Footnote>
|
|
</li>
|
|
))}
|
|
</ul>
|
|
) : null}
|
|
{text ? <Footnote color="uiTextMediumContrast">{text}</Footnote> : null}
|
|
<input aria-hidden id={name} hidden name={name} type="checkbox" />
|
|
</label>
|
|
)
|
|
}
|