// components/card.ts import type { VariantProps } from 'class-variance-authority'; import { cva, cx } from 'class-variance-authority'; import { cn } from '@/lib/utils'; /** * Box */ export type BoxProps = VariantProps; export const box = cva(['box', 'box-border'], { variants: { margin: { 0: 'm-0', 2: 'm-2', 4: 'm-4', 8: 'm-8' }, padding: { 0: 'p-0', 2: 'p-2', 4: 'p-4', 8: 'p-8' }, }, defaultVariants: { margin: 0, padding: 0, }, }); /** * Card */ type CardBaseProps = VariantProps; const cardBase = cva(['card', 'border-solid', 'border-slate-300', 'rounded'], { variants: { shadow: { md: 'drop-shadow-md', lg: 'drop-shadow-lg', xl: 'drop-shadow-xl', }, }, }); export interface CardProps extends BoxProps, CardBaseProps {} export const card = ({ margin, padding, shadow }: CardProps = {}) => cx(box({ margin, padding }), cardBase({ shadow })); type CardBlankProps = { number?: number; className?: string; }; /** * CardBlank 空的卡片,用于占位 * @param props * @returns */ export const CardBlank = (props: CardBlankProps) => { const { number = 4, className } = props; return ( <> {new Array(number).fill(0).map((_, index) => { return
; })} ); };