# astro-ui — AI Component Reference # Paste this into v0, Cursor, Copilot, Claude, or any AI tool. # Use Astro components for anything that doesn't need JavaScript. # Use shadcn/ui React components (from @/components/ui/) for anything interactive. ## Import path All Astro components: @/components/astro/ComponentName.astro All React components: @/components/ui/component-name.tsx ## Decision rule No JS needed (visual/structural) → use Astro version Needs JS (state, events, open/close) → use React shadcn/ui version ## Astro Components ### Button import Button from '@/components/astro/Button.astro' props: variant?='default'|'destructive'|'outline'|'secondary'|'ghost'|'link', size?='default'|'sm'|'lg'|'icon', href?, type?='button'|'submit'|'reset', disabled? renders when href is set, ### Badge import Badge from '@/components/astro/Badge.astro' props: variant?='default'|'secondary'|'destructive'|'outline' Label Error ### Card import Card from '@/components/astro/Card.astro' import CardHeader from '@/components/astro/CardHeader.astro' import CardTitle from '@/components/astro/CardTitle.astro' import CardDescription from '@/components/astro/CardDescription.astro' import CardContent from '@/components/astro/CardContent.astro' import CardFooter from '@/components/astro/CardFooter.astro' TitleSubtitle Body here Footer actions ### Alert import Alert from '@/components/astro/Alert.astro' import AlertTitle from '@/components/astro/AlertTitle.astro' import AlertDescription from '@/components/astro/AlertDescription.astro' props: variant?='default'|'destructive' Heads upDetails here. ErrorSomething failed. ### Avatar import Avatar from '@/components/astro/Avatar.astro' props: src?, alt?, fallback?, size?='sm'|'default'|'lg' ### Breadcrumb import Breadcrumb from '@/components/astro/Breadcrumb.astro' props: items: { label: string; href?: string }[] — last item is current page (no link) ### Input import Input from '@/components/astro/Input.astro' props: type?='text', placeholder?, value?, name?, id?, required?, disabled? ### Textarea import Textarea from '@/components/astro/Textarea.astro' props: placeholder?, rows?=3, value?, name?, id?, required?, disabled?