Pixelact Card

PreviousNext

A simple card component.

Docs
pixelact-uicomponent

Preview

Loading preview…
components/ui/pixelact-ui/card.tsx
import { type VariantProps, cva } from "class-variance-authority";

import { cn } from "@/lib/utils";

import {
  Card as ShadcnCard,
  CardAction as ShadcnCardAction,
  CardContent as ShadcnCardContent,
  CardDescription as ShadcnCardDescription,
  CardFooter as ShadcnCardFooter,
  CardHeader as ShadcnCardHeader,
  CardTitle as ShadcnCardTitle,
} from "@/components/ui/card";

import "@/components/ui/pixelact-ui/styles/styles.css";

export const cardVariants = cva("", {
  variants: {
    font: {
      normal: "",
      pixel: "pixel-font",
    },
  },
  defaultVariants: {
    font: "pixel",
  },
});

export interface CardProps
  extends React.ComponentProps<"div">,
    VariantProps<typeof cardVariants> {
  asChild?: boolean;
}

function Card({ ...props }: CardProps) {
  const { className, font } = props;

  return (
    <ShadcnCard
      {...props}
      className={cn(
        "rounded-none border-0 bg-card shadow-(--pixel-box-shadow) box-shadow-margin",
        cardVariants({ font }),
        className
      )}
    />
  );
}

function CardHeader({ ...props }: CardProps) {
  const { className } = props;

  return <ShadcnCardHeader className={cn("", className)} {...props} />;
}

function CardTitle({ ...props }: CardProps) {
  const { className } = props;

  return (
    <ShadcnCardTitle
      className={cn("font-normal text-lg", className)}
      {...props}
    />
  );
}

function CardDescription({ ...props }: CardProps) {
  const { className } = props;

  return <ShadcnCardDescription className={cn(className)} {...props} />;
}

function CardAction({ ...props }: CardProps) {
  const { className } = props;

  return <ShadcnCardAction className={cn(className)} {...props} />;
}

function CardContent({ ...props }: CardProps) {
  const { className } = props;

  return <ShadcnCardContent className={cn(className)} {...props} />;
}

function CardFooter({ ...props }: CardProps) {
  const { className } = props;

  return (
    <ShadcnCardFooter
      data-slot="card-footer"
      className={cn(className)}
      {...props}
    />
  );
}

export {
  Card,
  CardHeader,
  CardFooter,
  CardTitle,
  CardAction,
  CardDescription,
  CardContent,
};

Installation

npx shadcn@latest add @pixelact-ui/card

Usage

import { Card } from "@/components/card"
<Card />