diff --git a/DESIGN.md b/DESIGN.md index 63c828b..d7f96ac 100755 --- a/DESIGN.md +++ b/DESIGN.md @@ -40,7 +40,8 @@ Never Inter, Arial, or system defaults for headings (Impeccable anti-slop rule). 5. Don't nest cards inside cards. Don't put gray text on colored fills. ## Included -Primitives: Button, Card, Input, Badge, Dialog, DropdownMenu, Table, Toaster. +Primitives: Button, Card, Input, Select (themed Radix popover), Textarea, Label, +Badge, Dialog, DropdownMenu, Table, Toaster, Spinner, EmptyState, StatCard. Motion: FadeIn, Stagger/StaggerItem. Animated: AnimatedNumber, SpotlightCard. Blocks: AppShell, CommandPalette, Hero, FeatureGrid, Pricing. diff --git a/package.json b/package.json index b0c2e97..1a89d00 100755 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@jason/ui-kit", - "version": "0.3.0", - "description": "Shared design foundation — branded tokens, Tailwind preset, shadcn-style components, motion, app shell + marketing blocks. Guarded by Impeccable.", + "version": "0.4.0", + "description": "Shared design foundation \u2014 branded tokens, Tailwind preset, shadcn-style components, motion, app shell + marketing blocks. Guarded by Impeccable.", "type": "module", "license": "MIT", "author": "Jason ", diff --git a/src/components/empty-state.tsx b/src/components/empty-state.tsx new file mode 100755 index 0000000..a572bfb --- /dev/null +++ b/src/components/empty-state.tsx @@ -0,0 +1,31 @@ +import * as React from "react"; +import { Inbox, type LucideIcon } from "lucide-react"; +import { cn } from "../lib/cn"; + +export interface EmptyStateProps { + icon?: LucideIcon; + title: string; + hint?: string; + /** Optional call-to-action (e.g. a