Files
cstb-next/src/components/window/Card.tsx
2024-10-28 15:05:56 +08:00

43 lines
1.2 KiB
TypeScript

import { ReactNode } from "react"
import clsx from "clsx"
interface CardProps {
children?: ReactNode
className?: string
type?: string
onClick?: () => void
}
const Card = ({ children }: CardProps) => {
return (
<div
className="dark:from-black/10 dark:to-black/5 dark:border-white/[6%] px-3 pt-3 pb-4 flex flex-col gap-2.5 border w-full rounded-lg bg-white/40 border-black/[6%]"
data-tauri-drag-region
>
{children}
</div>
)
}
const CardHeader = ({ children }: CardProps) => {
return <div className="flex items-center gap-1.5 tracking-wide">{children}</div>
}
const CardIcon = ({ children, type, className, ...rest }: CardProps) => {
return (
<div className={clsx("flex gap-1.5 items-center font-semibold", type === "menu" && "transition cursor-pointer hover:bg-black/5 px-2 py-1 rounded-md active:scale-95", className)} {...rest}>
{children}
</div>
)
}
const CardTool = ({ children }: CardProps) => {
return <div className="flex items-center justify-end flex-grow gap-2">{children}</div>
}
const CardBody = ({ children }: CardProps) => {
return <div className="w-full h-full text-sm tracking-wide text-zinc-800">{children}</div>
}
export { Card, CardHeader, CardIcon, CardTool, CardBody }