"use client"
import { StatusBadge } from "@/components/ui/status-badge"
import { Badge, BadgeCount } from "@/components/ui/badge"
import { Button } from "@/components/ui/button"
import { Kbd, KbdGroup } from "@/components/ui/kbd"
import { Skeleton } from "@/components/ui/skeleton"
import { cn } from "@/lib/utils"
const BADGE_VARIANTS = [
{ variant: "default" as const, label: "Default" },
{ variant: "secondary" as const, label: "Secondary" },
{ variant: "outline" as const, label: "Outline" },
{ variant: "destructive" as const, label: "Destructive" },
{ variant: "ghost" as const, label: "Ghost" },
{ variant: "link" as const, label: "Link" },
]
const SEMANTIC_STATUS_EXAMPLES = [
{ label: "Compliant", tone: "success" as const, icon: "fa-circle-check" },
{ label: "In review", tone: "info" as const, icon: "fa-clock" },
{ label: "Draft", tone: "neutral" as const, icon: "fa-pen" },
{ label: "Due soon", tone: "warning" as const, icon: "fa-triangle-exclamation" },
{ label: "Non-compliant", tone: "danger" as const, icon: "fa-circle-xmark" },
]
export function BadgeVariantsPreview() {
return (
{BADGE_VARIANTS.map(({ variant, label }) => (
{label}
))}
)
}
export function BadgeSizesPreview() {
return (
)
}
export function BadgeWithIconPreview() {
return (
PT
Fall 2026
Overdue
)
}
function IconBadgeAnchor({ children, className }: { children: React.ReactNode; className?: string }) {
return {children}
}
function NotificationBellButton({ label }: { label: string }) {
return (
)
}
export function BadgeCountIndicatorPreview() {
return (
)
}
export function BadgeCountOverlayPreview() {
return (
3
)
}
export function BadgeCountPreview() {
return (
24 placements
Question 3 of 20
)
}
export function BadgeCountOnlyPreview() {
return (
)
}
export function StatusBadgeSemanticPreview() {
return (
{SEMANTIC_STATUS_EXAMPLES.map((item) => (
))}
{SEMANTIC_STATUS_EXAMPLES.map((item) => (
))}
)
}
export function StatusBadgeProductPreview() {
return (
)
}
export function SkeletonTextPreview() {
return (
)
}
export function SkeletonListRowPreview() {
return (
)
}
export function SkeletonTableRowPreview() {
return (
)
}
export function SkeletonFormPreview() {
return (
)
}
/** @deprecated Use SkeletonListRowPreview */
export const SkeletonCardPreview = SkeletonListRowPreview
export function KbdTilePreview() {
return (
Open search
⌘
K
)
}
/** @deprecated Use KbdTilePreview */
export const KbdPreview = KbdTilePreview
export function KbdBareInButtonPreview() {
return (
)
}
export function KbdGroupPreview() {
return (
⌘
⇧
P
)
}
export function KbdSymbolsPreview() {
return (
⌘
⌥
⇧
⌃
⏎
⌫
)
}