NOIR // NEXTUI
Card
Composable dark card container with header, body, and footer sub-components in the NOIR aesthetic.
$
Or install the base component for free:
Live Preview
Open full demoUsage
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>
)
}
Works withNext.js 15React 19Tailwind v4TypeScript 5
More from NOIR // NEXT
Button
Dark-mode button with primary, secondary, and ghost variants in three sizes. Renders as a Next.js Link when an href is provided.
Badge
Inline badge with violet, cyan, green, amber, and red variants for status labels and category tags in the NOIR dark palette.
Text
Polymorphic text primitive with body, caption, label, and code variants styled for the NOIR dark palette.