# Cuelark UI: full reference > Open-source React components for shadcn/ui: an AI agent UI kit (chat, reasoning, tool calls, plans, citations, traces), GSAP-animated effects and accessible Radix primitives. Themeable with CSS variables, installed as source with the shadcn CLI. ## Accordion An accordion lets readers scan a list of headings and open only what they need. Cuelark's accordion adds CSS-counter numbering, a plus that turns into a close mark, and three surface styles, while each trigger stays inside a real heading for a clean document outline. Install: `npx shadcn@latest add https://ui.cuelark.com/r/accordion.json` · Docs: https://ui.cuelark.com/components/accordion ```tsx import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "@/components/ui/accordion"; Is it accessible? Yes. It follows the WAI-ARIA accordion pattern. ``` ### Props - `Accordion.variant` (`"lined" | "dashed" | "separated"`, default `"lined"`): Divider style between items. - `Accordion.numbered` (`boolean`, default `false`): Prefix triggers with 01, 02, … via CSS counters. - `AccordionItem.value` (`string`): Unique value of the item. ### Accessibility - Triggers are buttons inside

headings with aria-expanded and aria-controls. - Space and Enter toggle; arrow keys, Home and End move between triggers. - Height animations are skipped when the user prefers reduced motion. ## Alert Alerts call out information inline: a notice, a success, a warning, an error. The tone is carried by a rail and icon while text stays readable, and dismissible alerts fold away smoothly. Install: `npx shadcn@latest add https://ui.cuelark.com/r/alert.json` · Docs: https://ui.cuelark.com/components/alert ```tsx import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert"; Usage at 90% Upgrade to avoid throttling. ``` ### Props - `Alert.tone` (`"info" | "success" | "warning" | "destructive" | "neutral"`, default `"info"`): Color and icon. - `Alert.icon` (`ReactNode | null`): Custom icon, or null for none. - `Alert.onDismiss` (`() => void`): Adds a close button. ### Accessibility - Warnings and errors use role=alert; others use role=status. - Color is never the only signal: each tone has an icon. ## Alert Dialog An alert dialog interrupts to confirm something that cannot be undone. Unlike a dialog it can't be dismissed by clicking outside. Cuelark's drops in slightly heavier than a dialog, and the destructive tone adds a red rail along the top. Install: `npx shadcn@latest add https://ui.cuelark.com/r/alert-dialog.json` · Docs: https://ui.cuelark.com/components/alert-dialog ```tsx import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogTitle, AlertDialogTrigger } from "@/components/ui/alert-dialog"; Delete project? Cancel Delete ``` ### Props - `AlertDialogContent.tone` (`"default" | "destructive"`, default `"default"`): Destructive adds a red top rail. - `AlertDialogAction.variant` (`"primary" | "destructive"`, default `"primary"`): Button style. ### Accessibility - role=alertdialog; focus starts on Cancel, the safe choice. - Outside clicks do not close it; Esc does. ## Animated Icon Animated Icon brings any icon to life with GSAP: react-icons, lucide-react, an installed Cuelark icon or a raw SVG. Leave the animation on auto and it reads the icon's name to pick a motion that means something: bells ring, arrows nudge in their direction, gears turn, send icons fly off and return, refresh spins, charts grow, eyes blink, flags wave, pins drop. Or choose from 30 named animations, triggered on hover, click, mount, scroll or loop. Install: `npx shadcn@latest add https://ui.cuelark.com/r/animated-icon.json` · Docs: https://ui.cuelark.com/components/animated-icon ```tsx import { AnimatedIcon } from "@/components/ui/animated-icon"; ``` ### Props - `AnimatedIcon.animation` (`string`, default `"auto"`): auto, pop, ring, nudge-right, turn, fly, spin, twinkle, zoom, blink, wave, grow, drive, drop, draw and more. - `AnimatedIcon.trigger` (`"hover" | "click" | "mount" | "inView" | "loop"`, default `"hover"`): When it plays. - `AnimatedIcon.name` (`string`): Icon name for auto mode; read from the child when omitted. - `AnimatedIcon.duration` (`number`): Override seconds. ### Accessibility - Decorative motion only; the icon keeps its own label. - With reduced motion or --cl-motion: 0 the effect stays still and the content remains fully usable. ## Animated List Animated List turns a list into a live feed: new items spring in at the top while the others glide down to make room. Use it for notifications, activity streams and transactions on landing pages and dashboards. Install: `npx shadcn@latest add https://ui.cuelark.com/r/animated-list.json` · Docs: https://ui.cuelark.com/components/animated-list ```tsx import { AnimatedList } from "@/components/ui/animated-list"; {notifications} ``` ### Props - `AnimatedList.interval` (`number`, default `1400`): ms between items. - `AnimatedList.loop` (`boolean`, default `true`): Cycle forever. - `AnimatedList.max` (`number`, default `5`): Visible items. ### Accessibility - A polite live region; consider loop={false} for screen-reader heavy pages. - With reduced motion or --cl-motion: 0 the effect stays still and the content remains fully usable. ## Artifact Artifact presents what an agent produced (a document, a component, a chart) in a panel beside the conversation, with a header of actions and a full-screen toggle. Install: `npx shadcn@latest add https://ui.cuelark.com/r/artifact.json` · Docs: https://ui.cuelark.com/components/artifact ```tsx import { Artifact } from "@/components/ui/artifact"; … ``` ### Props - `Artifact.title · kind` (`ReactNode · string`): Header. - `Artifact.onClose · onDownload` (`() => void`): Actions. - `Artifact.actions` (`ReactNode`): Extra buttons. ### Accessibility - Fully keyboard operable with visible focus. - Live regions announce streaming updates politely. ## Aspect Ratio Aspect Ratio reserves space for images, video and embeds at a fixed ratio, so the page does not jump while media loads, which also protects your Cumulative Layout Shift score. Install: `npx shadcn@latest add https://ui.cuelark.com/r/aspect-ratio.json` · Docs: https://ui.cuelark.com/components/aspect-ratio ```tsx import { AspectRatio } from "@/components/ui/aspect-ratio"; ``` ### Props - `AspectRatio.ratio` (`number`, default `1`): Width divided by height. ### Accessibility - Purely layout; give media its own alt text. ## Avatar Avatars represent people and teams. Cuelark avatars fall back to initials in a tint derived from the name, show presence dots, and AvatarGroup stacks people that fan apart on hover and collapses extras into +N. Install: `npx shadcn@latest add https://ui.cuelark.com/r/avatar.json` · Docs: https://ui.cuelark.com/components/avatar ```tsx import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; ``` ### Props - `Avatar.size` (`"xs" | "sm" | "md" | "lg" | "xl"`, default `"md"`): Size. - `Avatar.shape` (`"circle" | "square"`, default `"circle"`): Shape. - `Avatar.status` (`"online" | "away" | "busy" | "offline"`): Presence dot. - `AvatarFallback.name` (`string`): Initials and a deterministic tint. - `AvatarGroup.max` (`number`): Show this many, then +N. ### Accessibility - Give AvatarImage an alt with the person's name. - Status dots have a text label. ## Badge Badges label status, category or version at a glance. Cuelark badges come in soft tinted tones, an optional status dot with a live pulse, and a mono uppercase style for version tags and metadata. Install: `npx shadcn@latest add https://ui.cuelark.com/r/badge.json` · Docs: https://ui.cuelark.com/components/badge ```tsx import { Badge } from "@/components/ui/badge"; Live ``` ### Props - `Badge.variant` (`"neutral" | "primary" | "success" | "warning" | "destructive" | "outline" | "solid"`, default `"neutral"`): Color tone. - `Badge.size` (`"sm" | "md"`, default `"md"`): Height and text size. - `Badge.dot` (`boolean | "pulse"`, default `false`): Leading status dot; pulse adds a ping. - `Badge.mono` (`boolean`, default `false`): Mono, uppercase, tracked text. - `Badge.asChild` (`boolean`, default `false`): Render the child element (e.g. a link) with badge styles. ### Accessibility - The status dot is decorative (aria-hidden); the text carries the meaning. - The pulse animation is hidden for users who prefer reduced motion. - Badge links get a visible focus outline. ## Border Beam Border Beam draws a short comet of light that laps the border of its parent. Use it to mark the recommended plan, a new feature or an active state. It is one masked conic gradient rotated by GSAP: no SVG, no layout cost. Install: `npx shadcn@latest add https://ui.cuelark.com/r/border-beam.json` · Docs: https://ui.cuelark.com/components/border-beam ```tsx import { BorderBeam } from "@/components/ui/border-beam";
…
``` ### Props - `BorderBeam.duration` (`number`, default `6`): Seconds per lap. - `BorderBeam.color` (`string`, default `"var(--signal)"`): Beam color. - `BorderBeam.size` (`number`, default `0.18`): Beam length (0–1 of the border). ### Accessibility - Decorative and aria-hidden. - With reduced motion or --cl-motion: 0 the effect stays still and the content remains fully usable. ## Branch Branch lets people move between alternative versions of a message (regenerations or edits) with a small “2 / 3” control; the version slides in from the direction you moved. Install: `npx shadcn@latest add https://ui.cuelark.com/r/branch.json` · Docs: https://ui.cuelark.com/components/branch ```tsx import { Branch } from "@/components/ui/branch"; v1

,

v2

]} /> ``` ### Props - `Branch.versions` (`ReactNode[]`): Alternatives. - `Branch.defaultIndex · onIndexChange` (`number`): Selection. ### Accessibility - Fully keyboard operable with visible focus. - Live regions announce streaming updates politely. ## Breadcrumb Breadcrumbs show where a page sits in the site hierarchy and give one-click routes back up. Pair the component with BreadcrumbList JSON-LD (this site does) and Google shows the same trail in search results. Install: `npx shadcn@latest add https://ui.cuelark.com/r/breadcrumb.json` · Docs: https://ui.cuelark.com/components/breadcrumb ```tsx import { Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator } from "@/components/ui/breadcrumb"; Home Docs ``` ### Props - `BreadcrumbLink.asChild` (`boolean`, default `false`): Use your router's Link. - `BreadcrumbSeparator.children` (`ReactNode`, default `"/"`): Custom separator. ### Accessibility - A