import { Card, CardContent, CardHeader, CardTitle, EmptyState } from "@godxjp/ui/data-display";
import { Button } from "@godxjp/ui/general";
import { Flex, PageContainer, ResponsiveGrid } from "@godxjp/ui/layout";
import {
AlertTriangle,
Archive,
CheckCircle2,
Inbox,
Info,
Plus,
SearchX,
XCircle,
} from "lucide-react";
/**
* EmptyState — centred zero-state with icon, title, description, and an optional
* CTA. Use for non-DataTable lists / zero-state pages (DataTable embeds its own).
*
* Heading hierarchy: the title is a real heading (default `
`). Pick
* `titleLevel` for a VALID page outline (page `` → section `` → nested
* ``), never for visual size — the size is fixed by tokens. Below, the page
* title is `` (PageContainer) and each case owns a ``
* (``), so the empty-state titles are `titleLevel={3}` — or `titleAs="p"`
* when the message is not itself a heading. Composed only from real @godxjp/ui.
*/
export default function Demo() {
return (
{/* page — the empty condition IS the page's primary job (onboarding). */}
page:主要な空状態(オンボーディング)
新規請求書
}
/>
{/* page — post-search zero result with a clear recovery. */}
page:検索結果ゼロ
{/* section — restrained spacing for a subsection inside a normal page. */}
section:セクション内の空状態
{/* compact — secondary content; no medallion, minimal padding, and the
message is NOT a heading (titleAs="p") because the card already has one. */}
compact:補助的な空状態
{/* tone — a semantic confirmation zero-state. */}
tone:承認済み(success)
{/* tone — the remaining four steps. tone tints the icon medallion only; the copy still
carries the meaning, so a zero-state never relies on colour alone. */}
tone:warning / destructive / info / muted(既定)
);
}