2024-09-27 15:28:32 +08:00
|
|
|
import { ReactNode } from "react"
|
2024-09-20 23:15:42 +08:00
|
|
|
|
|
|
|
|
interface CardProps {
|
2024-09-27 15:28:32 +08:00
|
|
|
children?: ReactNode
|
|
|
|
|
className?: string
|
|
|
|
|
onClick?: () => void
|
2024-09-20 23:15:42 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const Card = ({ children }: CardProps) => {
|
|
|
|
|
return (
|
|
|
|
|
<div
|
2024-10-06 19:36:47 +08:00
|
|
|
className="dark:from-black/10 dark:to-black/5 dark:border-white/[6%] px-4 pt-3 pb-4 flex flex-col gap-2 border w-full rounded-lg bg-white/40 border-black/[6%]"
|
2024-09-20 23:15:42 +08:00
|
|
|
data-tauri-drag-region
|
|
|
|
|
>
|
|
|
|
|
{children}
|
|
|
|
|
</div>
|
2024-09-27 15:28:32 +08:00
|
|
|
)
|
|
|
|
|
}
|
2024-09-20 23:15:42 +08:00
|
|
|
|
|
|
|
|
const CardHeader = ({ children }: CardProps) => {
|
2024-09-27 15:28:32 +08:00
|
|
|
return <div className="flex items-center gap-2.5 tracking-wide">{children}</div>
|
|
|
|
|
}
|
2024-09-20 23:15:42 +08:00
|
|
|
|
2024-09-27 15:28:32 +08:00
|
|
|
const CardIcon = ({ children, ...rest }: CardProps) => {
|
2024-09-20 23:15:42 +08:00
|
|
|
return (
|
2024-09-27 15:28:32 +08:00
|
|
|
<div className="flex gap-1.5 items-center font-semibold" {...rest}>
|
2024-09-20 23:15:42 +08:00
|
|
|
{children}
|
|
|
|
|
</div>
|
2024-09-27 15:28:32 +08:00
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const CardTool = ({ children }: CardProps) => {
|
|
|
|
|
return <div className="flex items-center justify-end flex-grow gap-2">{children}</div>
|
|
|
|
|
}
|
2024-09-20 23:15:42 +08:00
|
|
|
|
|
|
|
|
const CardBody = ({ children }: CardProps) => {
|
2024-09-27 15:28:32 +08:00
|
|
|
return <div className="w-full h-full text-sm tracking-wide text-zinc-800">{children}</div>
|
|
|
|
|
}
|
2024-09-20 23:15:42 +08:00
|
|
|
|
2024-09-27 15:28:32 +08:00
|
|
|
export { Card, CardHeader, CardIcon, CardTool, CardBody }
|