NOIR // NEXTUI

Card

Composable dark card container with header, body, and footer sub-components in the NOIR aesthetic.

$npx @voltenworks/shipui add card --theme noir
Or install the base component for free:
Live Preview
Open full demo
voltenworks.com/shipui/noir/demo/components#04-card
Usage
TSX
<Card card={{
  icon: "◈",
  tag: "Security",
  tagVariant: "violet",
  title: "Zero-trust auth",
  description: "End-to-end encrypted sessions.",
}} />
Variants
<Card card={{ icon: "◈", tag: "Security", tagVariant: "violet", title: "Zero-trust auth", description: "End-to-end encrypted sessions." }} />
<Card card={{ icon: "⬡", tag: "Analytics", tagVariant: "cyan", title: "Real-time data", description: "Live dashboards with sub-second latency." }} />
<Card card={{ icon: "◉", tag: "Uptime", tagVariant: "green", title: "99.99% SLA", description: "Guaranteed availability." }} />
Source
TSX
import { cn } from '@/lib/utils'
import type { CardItem } from '@/types'

interface CardProps {
  card:       CardItem
  className?: string
}

const TAG_CLASS: Record<string, string> = {
  violet: 'card-tag card-tag--violet',
  cyan:   'card-tag card-tag--cyan',
  green:  'card-tag card-tag--green',
  amber:  'card-tag card-tag--amber',
  red:    'card-tag card-tag--red',
}

const ICON_CLASS: Record<string, string> = {
  violet: 'card-icon-el card-icon--violet',
  cyan:   'card-icon-el card-icon--cyan',
  green:  'card-icon-el card-icon--green',
  amber:  'card-icon-el card-icon--amber',
  red:    'card-icon-el card-icon--red',
}

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

  return (
    <div className={cn('noir-card', className)}>
      <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 NOIR // NEXT
NOIR // NEXTUI

Button

Dark-mode button with primary, secondary, and ghost variants in three sizes. Renders as a Next.js Link when an href is provided.

NOIR // NEXTUI

Badge

Inline badge with violet, cyan, green, amber, and red variants for status labels and category tags in the NOIR dark palette.

NOIR // NEXTUI

Text

Polymorphic text primitive with body, caption, label, and code variants styled for the NOIR dark palette.