DECK // NEXTUI

Card

Composable card with Card, CardHeader, CardBody, and CardFooter sub-components. Dark woodgrain surfaces with spray-paint accent borders.

$npx @voltenworks/shipui add card --theme deck
Or install the base component for free:
Live Preview
Open full demo
voltenworks.com/shipui/deck/demo/components#04-card
Usage
TSX
<Card><CardHeader>Title</CardHeader><CardBody>Content</CardBody><CardFooter>Footer</CardFooter></Card>
Variants
<Card><CardBody>Simple card with body only</CardBody></Card>
<Card><CardHeader>Drop In</CardHeader><CardBody>Card content here.</CardBody><CardFooter>Read more</CardFooter></Card>
Source
TSX
import { cn } from '@/lib/utils'
import type { CardItem } from '@/types'

interface CardProps {
  card:       CardItem
  className?: string
}

const TAG_CLASS: Record<string, string> = {
  orange: 'card-tag card-tag--orange',
  yellow: 'card-tag card-tag--yellow',
  ink:    'card-tag card-tag--ink',
  dim:    'card-tag card-tag--dim',
}

const ICON_CLASS: Record<string, string> = {
  orange: 'card-icon card-icon--orange',
  yellow: 'card-icon card-icon--yellow',
  ink:    'card-icon card-icon--orange',
  dim:    'card-icon card-icon--yellow',
}

export function Card({ card, className }: CardProps): React.JSX.Element {
  const tagClass  = TAG_CLASS[card.tagVariant]  ?? 'card-tag card-tag--orange'
  const iconClass = ICON_CLASS[card.tagVariant] ?? 'card-icon card-icon--orange'

  return (
    <div className={cn('deck-card', className)}>
      <span className="card-num">{card.num}</span>
      <span className={iconClass}>{card.icon}</span>
      <span className={tagClass}>{card.tag}</span>
      <h3 className="card-title">{card.title}</h3>
      <p className="card-description">{card.description}</p>
    </div>
  )
}
Preview in theme demoGet full theme, $29
Works withNext.js 15React 19Tailwind v4TypeScript 5
More from DECK // NEXT
DECK // NEXTUI

Button

Skate deck art button with primary, secondary, and ghost variants in three sizes. Rough-cut clip-path corners, spray-paint orange accent. Renders as a Next.js Link when an href is provided.

DECK // NEXTUI

Badge

Spray-paint styled badge with four color variants: orange, yellow, ink, and dim. Suited for category labels, tags, and status indicators.

DECK // NEXTUI

Text

Polymorphic text primitive with body, caption, label, and code variants. IBM Plex Mono body font. Renders as p, span, or div via the `as` prop.