SPB Git forge

spb/ai-atlas

Public
41commits 1branches 0releases
4.6 MBsize
maindefault branch
12 days agolast push
HTML 77.2% TypeScript 10.5% Python 9.6% JavaScript 2.5%
1.2 KB · 30 lines tsx
Raw Blame History
1import { cn } from '@/lib/cn';23/** Honest empty state: when a source/API is unavailable we say so instead of inventing numbers (CLAUDE.md non-negotiable 4). */4export function Unavailable({ what = 'Data', className, compact = false, reason }: { what?: string; className?: string; compact?: boolean; reason?: string }) {5  return (6    <div className={cn('border border-dashed border-rule-strong text-ink-3', compact ? 'inline-block px-2 py-0.5 text-xs' : 'px-5 py-8 text-center text-sm', className)} role="status">7      {what} unavailable8      {reason && !compact && <span className="mt-1 block text-xs text-ink-3">{reason}</span>}9    </div>10  );11}1213/** Inline dash for a missing value inside tables/specs. */14export function Missing({ className }: { className?: string }) {15  return (16    <span className={cn('text-ink-3', className)} aria-label="unavailable">17      —18    </span>19  );20}2122export function EmptyState({ title, children, className }: { title: string; children?: React.ReactNode; className?: string }) {23  return (24    <div className={cn('border-y border-rule px-2 py-10 text-center', className)}>25      <p className="text-sm font-medium text-ink">{title}</p>26      {children && <div className="mt-2 text-sm text-ink-3">{children}</div>}27    </div>28  );29}30