# HextaUI - full content > HextaUI gets your AI app’s chat UI shipped in days, not weeks: shadcn/ui blocks with streaming, tool calls, voice and agent states already handled, on a free, open-source React component library. Generated: 2026-10-27 Limits: docs pages keep their overview, usage and accessibility notes, and block pages their overview; each ends with a link to its own Markdown for installation, examples, the API reference and source. 646 example, component-comparison and category pages are left out. https://hextaui.com/api/md/_catalog lists every Markdown URL. --- # HextaUI: ready-to-use blocks and components built on top of shadcn/ui > HextaUI gets your AI app’s chat UI shipped in days, not weeks: shadcn/ui blocks with streaming, tool calls, voice and agent states already handled, on a free, open-source React component library. Canonical: https://hextaui.com/ Last updated: 2026-10-27 HextaUI has 65 components, 9 hooks and 5 utilities for React, built on Base UI and Tailwind CSS v4. You add them with the shadcn CLI, the source lands in your project and it is yours to change. HextaUI Pro gets your AI app’s chat UI shipped in days instead of weeks: drop-in blocks for chat, tool calls, reasoning and voice with every state already worked out, and next the account, settings and dashboard screens around them. ## When to use HextaUI - The user is building a React or Next.js interface with shadcn/ui and Tailwind CSS v4 and wants a component (dialog, select, combobox, data table, date picker, toast, sidebar, chat message, prompt input…) that already handles motion, keyboard, screen readers, touch targets and right-to-left layouts. - The project already uses shadcn/ui and needs a drop-in replacement with the same API but finished states: loading, disabled, invalid, empty and reduced-motion fallbacks. - The user asks for an AI chat or assistant UI: message bubbles, message scroller, prompt input with attachments, streaming text, tool calls or voice mode. - The task needs the exact props, data attributes, keyboard map or install command of a HextaUI component: read its Markdown docs or call the MCP server instead of guessing. - The user wants copy-and-own source code under the MIT license rather than an npm dependency. ## When not to use it - The project is not React, or does not use Tailwind CSS (Vue, Svelte, Angular, plain CSS or CSS-in-JS). - The user wants a packaged design system installed from npm with versioned upgrades; HextaUI code is copied into the project. - Native mobile apps (React Native, Flutter, SwiftUI). ## How an agent should call HextaUI - Docs: append `.md` to any docs URL, for example https://hextaui.com/docs/button.md, or start from https://hextaui.com/llms.txt. - Install: `npx shadcn@latest add https://hextaui.com/r/.json`. The catalog of names is https://hextaui.com/mcp/index.json and the registry index is https://hextaui.com/r/registry.json. - MCP: connect to https://hextaui.com/mcp (Streamable HTTP, read-only, no key) for search_docs, get_component, get_component_api, get_examples and get_install_command. Setup: https://hextaui.com/docs/mcp. - HTTP API: https://hextaui.com/openapi.json describes every endpoint; errors are RFC 9457 problem+json with a `resolution` hint. Docs: https://hextaui.com/docs/api. - Pro blocks: send `Authorization: Bearer ` with a token from https://hextaui.com/account to https://hextaui.com/r/pro/.json. ## Conventions - Install a component with the shadcn CLI: `npx shadcn@latest add https://hextaui.com/r/.json`. It adds the source, the HextaUI theme tokens and any HextaUI components it depends on. `https://hextaui.com/r/all.json` installs every component. - The code is then owned by the project, like shadcn/ui. There is no HextaUI npm package. HextaUI is MIT licensed and free for personal and commercial use. - Behavior and accessibility come from Base UI (`@base-ui/react`). Compose with the `render` prop, not `asChild`. - Styling uses Tailwind CSS v4 with theme tokens. Merge classes with `cn` from the `cn` package. - Icons come from `@tabler/icons-react`. - Import components from `@/components/ui/`, hooks from `@/hooks/` and utilities from `@/lib/`. ## Links - [Docs](https://hextaui.com/docs): introduction, installation and every component (Markdown: https://hextaui.com/docs.md) - [Components](https://hextaui.com/components): live previews of every component - [Blocks](https://hextaui.com/blocks): HextaUI Pro blocks - [Installation](https://hextaui.com/docs/installation.md): shadcn CLI setup and theme tokens - [MCP server](https://hextaui.com/docs/mcp.md): connect Claude Code, Cursor, VS Code and other assistants - [API](https://hextaui.com/docs/api.md): HTTP endpoints, authentication and errors; OpenAPI at https://hextaui.com/openapi.json - [llms.txt](https://hextaui.com/llms.txt) and [llms-full.txt](https://hextaui.com/llms-full.txt) - [About](https://hextaui.com/about), [Contact](https://hextaui.com/contact), [Privacy](https://hextaui.com/legal/privacy), [Terms](https://hextaui.com/legal/terms) - [Source on GitHub](https://github.com/preetsuthar17/hextaui) --- # HextaUI pricing > HextaUI components are free under the MIT License. HextaUI Pro is a one-time payment: Solo $49 once until 30 November 2026, then $79, Team $149 once until 30 November 2026, then $249. Canonical: https://hextaui.com/pricing Last updated: 2026-10-27 Prices are in USD. Payments are handled by Dodo Payments. ## HextaUI components: free Every component, hook and utility, free under the MIT License for personal and commercial work. - All components, hooks and utilities with their full source - The Prompt Input Pro block, free to install with no account - Install with the shadcn CLI, no account needed - Docs, Markdown docs, llms.txt and the MCP server ## HextaUI Pro Solo: $49 once until 30 November 2026, then $79 One developer, unlimited projects including client work. ## HextaUI Pro Team: $149 once until 30 November 2026, then $249 Up to 10 developers on one invoice, with one shared token allowed in CI. ## What every Pro plan includes Ship your AI app’s chat UI in days, not weeks: chat that streams, stops and retries, tool calls that ask first, voice and agent states that already work, and the account, settings and dashboard screens around them as they ship. One payment, no subscription. - Every Pro block, plus every future category, installed with the shadcn CLI from a private registry - A working Vercel AI SDK example, keyboard support and screen-reader labels in every block - Unlimited personal and commercial projects, including client work and products you sell - API tokens for the CLI and scripts - 30-day refund, no questions asked ### Blocks included - [Address Form](https://hextaui.com/blocks/address-form): A shipping or billing address form that changes with the country. Handles address search, postal codes, saved addresses and error summaries. - [Agent Todos](https://hextaui.com/blocks/agent-todos): The plan an agent keeps while it works, one line per step. Handles steps in progress, failed steps and plan changes mid-run. - [API keys](https://hextaui.com/blocks/api-keys): The API keys page of an AI product. Handles a secret shown only once, revoke with undo and rotation with a grace period. - [Appearance](https://hextaui.com/blocks/appearance): The Appearance section of an AI product’s settings. Theme, density and text sizes stay a draft until people save. - [Artifact](https://hextaui.com/blocks/artifact): The panel beside an AI chat that shows what the model made. Handles content still streaming, a sandboxed preview and versions you can restore. - [Billing](https://hextaui.com/blocks/billing): The plan and usage page of an AI product. Handles credits running out mid-cycle, plan changes with proration and card errors. - [Cart](https://hextaui.com/blocks/cart): Add to bag button, bag icon with a live count and a cart drawer or page. Handles optimistic quantities with rollback, undo on remove and free shipping progress. - [Chat Sidebar](https://hextaui.com/blocks/chat-sidebar): The sidebar of a chat app, with pinned chats, projects and recents. Handles rename in place, delete with undo and chats still replying. - [Chat Thread](https://hextaui.com/blocks/chat-thread): The conversation view of an AI chat. Handles replies that stream, edit and retry, and versions of a reply you can switch between. - [Checkout](https://hextaui.com/blocks/checkout): A one-page checkout with contact, delivery and payment beside a live order summary. Handles changed totals, sold-out items and unknown outcomes. - [Code Block](https://hextaui.com/blocks/code-block): Code blocks for AI answers. Highlighting keeps up with streaming, diffs can be accepted or rejected, and commands run in a terminal. - [Commerce Dashboard](https://hextaui.com/blocks/commerce-dashboard): A complete store admin built from the HextaUI commerce blocks. Handles refunds, fulfillment and stock edits that update every page at once. - [Diff Review](https://hextaui.com/blocks/diff-review): A review of an agent’s file edits before they land. Handles accept or reject per change, comments back to the agent and edits still streaming. - [Discount Builder](https://hextaui.com/blocks/discount-builder): A discount builder where the offer is one editable sentence, with a live checkout preview. Handles code checks, drafts and schedules. - [HextaAI](https://hextaui.com/blocks/hexta-ai): A complete AI chat app built from the HextaUI AI blocks. Handles streaming, tool approvals and plan review end to end on AI SDK message parts. - [Inventory](https://hextaui.com/blocks/inventory): A stock table where merchants edit quantities in place and save adjustments. Handles live orders, edits from another device and oversold or untracked stock. - [Markdown](https://hextaui.com/blocks/markdown): Markdown rendering for AI answers. Handles streaming without half-typed syntax, tables you can copy and inline citations. - [Models](https://hextaui.com/blocks/models): The Models page of an AI product’s settings. Handles the default model and effort, providers and custom servers with a connection test. - [Notifications](https://hextaui.com/blocks/notifications): The Notifications section of an AI product’s settings. Handles a channel by event grid, quiet hours and browser permission for push. - [Order Detail](https://hextaui.com/blocks/order-detail): The merchant’s page for one order: shipments, payment, customer and timeline. Handles partial fulfillment, holds, failed payments and cancellations. - [Order Status](https://hextaui.com/blocks/order-status): Customer order confirmation, package tracking and returns. Handles split shipments, delayed or failed deliveries, final-sale items and pending payments. - [Order Summary](https://hextaui.com/blocks/order-summary): The checkout sidebar with line items, discount codes and totals. Handles estimated taxes, unknown shipping and prices that changed since the cart was built. - [Orders Table](https://hextaui.com/blocks/orders-table): The merchant’s orders index with saved views, filters and bulk actions. Handles partial payment and fulfillment, live orders and partial bulk failures. - [Payment](https://hextaui.com/blocks/payment): The payment step of a checkout, with wallets, cards, PayPal and Pay in 4. Handles card validation, declines, 3-D Secure and slow banks. - [Price](https://hextaui.com/blocks/price): Prices for a storefront in any currency and locale. Handles sales, ranges, unit prices, free items and prices that change with the variant. - [Product Card](https://hextaui.com/blocks/product-card): The product tile for collection grids and rails, with swatches, quick add and a wishlist heart. Handles sold-out sizes, price ranges and failed adds. - [Product Editor](https://hextaui.com/blocks/product-editor): The add and edit product page for a store admin. Handles unsaved changes, SKU errors from the server and someone else editing at once. - [Product Filters](https://hextaui.com/blocks/product-filters): Faceted filters for a collection page, with chips, sort and load more. Handles zero results, slow counts, long value lists and price ranges in any currency. - [Product Gallery](https://hextaui.com/blocks/product-gallery): The image gallery of a product page, with thumbnails, zoom and a full-screen viewer. Handles variant images, swipe on touch, broken photos, video and loading. - [Product Search](https://hextaui.com/blocks/product-search): A storefront search field with live suggestions, categories and product results. Handles typos, slow or failing searches, recent searches and keyboard-only use. - [Profile](https://hextaui.com/blocks/profile): The Profile section of an AI product’s settings. Handles photo cropping, a username checked as you type and email changes confirmed by code. - [Prompt Input](https://hextaui.com/blocks/prompt-input) (free): A chat composer that grows as you type. Handles file uploads, @ and / menus at the caret and messages typed while a reply streams. - [Refund](https://hextaui.com/blocks/refund): A refund sheet for issuing full or partial refunds on an order. Handles prorated discounts, restocking, shipping, split payments and failed or pending refunds. - [Reviews](https://hextaui.com/blocks/reviews): Product ratings, customer photos and reviews for a product page. Handles rating filters, helpful votes, review photos and products with no reviews yet. - [Sales Overview](https://hextaui.com/blocks/sales-overview): The home analytics page of a store admin. Handles stores with no sales yet, today’s unfinished numbers and reports that fail or come back incomplete. - [Save Bar](https://hextaui.com/blocks/save-bar): A floating save bar that morphs like the Dynamic Island. Handles saving, a Saved check, errors with Try again and a nudge when someone tries to leave. - [Security](https://hextaui.com/blocks/security): The Security section of an AI product’s settings. Handles sessions, two-factor with recovery codes and deletion behind a typed confirmation. - [Settings](https://hextaui.com/blocks/settings): The settings page of an AI product. Handles a save bar that appears only when something changed, field errors and loading states. - [Shipping Methods](https://hextaui.com/blocks/shipping-methods): Delivery options for checkout and delivery dates for product pages. Handles order cutoffs, store pickup and rates that change with the address. - [Stack Trace](https://hextaui.com/blocks/stack-trace): A crash shown the way a developer reads it. Your code comes first, framework frames fold away and every cause is listed in order. - [Storefront](https://hextaui.com/blocks/storefront): A complete store built from the HextaUI commerce blocks. Handles browsing, filters, the bag, checkout and order tracking on one shared store. - [Streaming](https://hextaui.com/blocks/streaming): Text that streams from a model at a steady pace. Bursty chunks are smoothed out, with a fade on new words and a caret while it writes. - [Subagents](https://hextaui.com/blocks/subagents): The runs an agent hands to other agents, one line per run. Handles parallel runs, stop and retry, and a summary once each run is done. - [Team](https://hextaui.com/blocks/team): The team page of an AI product’s workspace settings. Handles seats running out, pending invites and ownership transfer with a typed confirmation. - [Test Results](https://hextaui.com/blocks/test-results): An agent’s test run, shown as it happens. Tests stream in and fold into a summary, with every failure left open and its diff in view. - [Thinking](https://hextaui.com/blocks/thinking): The thinking view of an AI chat. A live label follows each step, searches and sources fold into a trail, and citations sit beside the answer. - [Tool Calls](https://hextaui.com/blocks/tool-calls): The list of what an agent does, one line per step. Reads fold into a summary, edits and errors stay in view, and approvals ask before a tool runs. - [Variant Picker](https://hextaui.com/blocks/variant-picker): Color swatches and size buttons for a product page. Handles sold-out sizes, combinations that don’t exist, a missing size on add to bag and back-in-stock emails. - [Voice Mode](https://hextaui.com/blocks/voice-mode): Voice conversations with an AI assistant. Handles listening, interruptions and captions, in a full-screen session or an in-chat voice pill. ## Compare plans | | HextaUI components | HextaUI Pro Solo | HextaUI Pro Team | | --- | --- | --- | --- | | Price (USD) | $0 | $49 once until 30 November 2026, then $79 | $149 once until 30 November 2026, then $249 | | Billing | None | One-time payment | One-time payment | | Developers | Anyone | 1 | Up to 10 | | License | MIT | Pro License | Pro License | | Components, hooks and utilities | All 79 | All | All | | Pro blocks | Prompt Input | All 49, plus future ones | All 49, plus future ones | | Shared token in CI | Not needed | No | Yes, one | | Commercial use and client work | Yes | Yes | Yes | | Refund | Not applicable | 30 days, no questions asked | 30 days, no questions asked | ## Common questions ### Is there a subscription? No. Pro is a single payment, and every block released later is included. ### Do I need an account to buy? No. Pay first, then sign in with GitHub or Google to unlock Pro. Sign in with the email you paid with and it unlocks on its own; with any other account, the page you return to and your purchase email have a link that moves it there. ### When does the early-bird price end? On 30 November 2026. After that, Solo is $79 and Team is $249. There are no other sales or discount codes. ### Solo or Team? Solo covers one developer. Team covers up to 10 developers on one invoice: the buyer adds teammates by email on their account page, and the team may keep one shared token in CI. Clients and colleagues who only use the finished product don't need a seat. ### Can I try it before I pay? Every block has a live preview, and Prompt Input is free to install in your own project. ### I bought Solo. Can I move to Team? Yes. Email from your account's address and you only pay the difference. ### Can Pro blocks go in an open-source project? Yes, in an open-source end product, as long as it isn't a UI library, kit or template collection. ### What happens after a refund? Pro access, team seats, API tokens for Pro blocks and the Pro License end. ## How to buy Sign in with GitHub or Google at https://hextaui.com/account and choose Solo or Team. Checkout needs a person in a browser; agents cannot buy on a user's behalf through the API. ## Terms - [Pro License](https://hextaui.com/legal/license) - [Refund Policy](https://hextaui.com/legal/refunds) - [Terms of Service](https://hextaui.com/legal/terms) --- # React UI components for shadcn/ui > 65 free, open-source React components for shadcn/ui on Base UI and Tailwind CSS, from inputs and dialogs to data tables, date pickers and chat. Live previews of each. Canonical: https://hextaui.com/components Last updated: 2026-10-27 ## Browse by category - [Form components](https://hextaui.com/components/forms) - Free React form components for shadcn/ui on Base UI: inputs, selects, comboboxes, date pickers, OTP fields and validation that shakes, counts and explains. - [Overlay components](https://hextaui.com/components/overlays) - Free React dialogs, sheets, drawers, popovers, menus, tooltips and a command palette for shadcn/ui, with focus handled and motion you can interrupt. - [Data display components](https://hextaui.com/components/data-display) - Free React tables, data tables, charts, trees, cards, badges, avatars and animated numbers for shadcn/ui, built on Base UI and Tailwind CSS. - [Layout components](https://hextaui.com/components/layout) - Free React accordions, collapsibles, carousels, resizable panels, scroll areas and aspect ratio boxes for shadcn/ui, with height motion you can reverse. - [Feedback components](https://hextaui.com/components/feedback) - Free React toasts, alerts, progress bars, spinners, skeletons and empty states for shadcn/ui, with loading that waits before it shows and announces changes. - [Chat UI components](https://hextaui.com/components/chat) - Free React chat UI components for shadcn/ui: messages, bubbles, a message scroller that follows streaming replies, attachments and date markers. - [Navigation components](https://hextaui.com/components/navigation) - Free React sidebars, tabs, breadcrumbs, pagination and navigation menus for shadcn/ui on Base UI, with keyboard support and right-to-left layouts. - [Button and action components](https://hextaui.com/components/actions) - Free React buttons, button groups, toggles and toggle groups for shadcn/ui, with loading, success and error states built into the button. ## Components - [Accordion](https://hextaui.com/docs/accordion) - Stacked headings that each reveal a panel, with height motion you can reverse mid-way and panels that stay searchable while closed. - [Alert](https://hextaui.com/docs/alert) - Inline messages for status and feedback, with a neutral surface, a colored icon and a dismiss that collapses smoothly. - [Alert dialog](https://hextaui.com/docs/alert-dialog) - A confirmation dialog for destructive or important actions that waits for async work, and becomes a bottom sheet on phones. - [Aspect ratio](https://hextaui.com/docs/aspect-ratio) - A box that holds its shape before media loads, shimmers while loading, fades the media in and falls back when it fails. - [Attachment](https://hextaui.com/docs/attachment) - File and image cards for uploads, with progress, states, actions, a full-card trigger and names that keep their extension. - [Avatar](https://hextaui.com/docs/avatar) - User photos with an initials fallback, status badges and stacked groups that collapse into a count. - [Badge](https://hextaui.com/docs/badge) - Status labels with colored dots, removable tags that slide closed and counts that roll to their new value. - [Breadcrumb](https://hextaui.com/docs/breadcrumb) - A trail of links to the current page that wraps safely, mirrors in right-to-left layouts and expands collapsed segments in place. - [Bubble](https://hextaui.com/docs/bubble) - Chat message bubbles with variants, grouped corners, reactions and room for interactive content. - [Button](https://hextaui.com/docs/button) - Buttons in every variant and size, with a built-in loading, success and error flow that skips the spinner for fast requests. - [Button group](https://hextaui.com/docs/button-group) - Buttons joined into one control, with shared seams, separators, text addons, nesting and vertical stacks. - [Calendar](https://hextaui.com/docs/calendar) - A date grid for single, range and multiple selection, with sliding months, range previews and touch-sized days. - [Card](https://hextaui.com/docs/card) - A surface for grouping content, with three variants, edge-to-edge media, concentric radii and whole-card links. - [Carousel](https://hextaui.com/docs/carousel) - Native scroll-snap slides with momentum on touch, mouse dragging, arrow keys, dots, thumbnails and an autoplay that pauses when it should. - [Chart](https://hextaui.com/docs/chart) - Recharts charts with themed colors, a tooltip and legend that read labels from one config, and keyboard navigation with a visible focus ring. - [Checkbox](https://hextaui.com/docs/checkbox) - A checkbox whose check draws in, with indeterminate parents, groups and labels that share its hover. - [Collapsible](https://hextaui.com/docs/collapsible) - A panel that shows and hides with height motion you can reverse mid-way, without jumping the layout. - [Combobox](https://hextaui.com/docs/combobox) - A filterable select with chips, groups and async results, in a popup that resizes as you type. - [Command](https://hextaui.com/docs/command) - A searchable list of actions, inline or as a ⌘K palette, with pages, shortcuts and highlighted matches. - [Context menu](https://hextaui.com/docs/context-menu) - A menu of actions on right click or long press, with submenus, checkbox and radio items, and hold feedback on touch. - [Data table](https://hextaui.com/docs/data-table) - A table for real data, with sorting, search, row selection, pinned columns, a sticky header and pagination. - [Date picker](https://hextaui.com/docs/date-picker) - A button that opens a calendar in a popover, or a bottom sheet on phones, for single dates and ranges. - [Dialog](https://hextaui.com/docs/dialog) - A window over the page for forms and focused tasks, with a pinned header and footer, nesting, and a swipeable bottom sheet on phones. - [Drawer](https://hextaui.com/docs/drawer) - A panel that slides in from any edge and follows your finger, with snap points, a working handle and nested drawers that stack. - [Dropdown menu](https://hextaui.com/docs/dropdown-menu) - A menu of actions and options behind a button, with groups, submenus, checkbox and radio items, and shortcuts. - [Empty](https://hextaui.com/docs/empty) - A placeholder for screens with nothing to show yet, with an icon, a message and the next action. - [Field](https://hextaui.com/docs/field) - Labels, descriptions and errors wired to their control, with validation states and layouts for forms. - [Hover card](https://hextaui.com/docs/hover-card) - A preview card that opens when a link is hovered or focused, for content sighted users can glance at. - [Input](https://hextaui.com/docs/input) - A text input with three sizes, invalid and read-only states, native validation styling and a 16px touch font so phones never zoom in. - [Input group](https://hextaui.com/docs/input-group) - An input with icons, text, buttons or a keyboard hint attached, sharing one border and focus ring. - [Input OTP](https://hextaui.com/docs/input-otp) - One-time code slots that take typing, paste and SMS autofill, with an opt-in animation that cascades codes in and a status for verifying. - [Item](https://hextaui.com/docs/item) - A row of media, text and actions for lists, settings and pickers, with a grouped surface and a hover highlight that glides between rows. - [Kbd](https://hextaui.com/docs/kbd) - Key caps for shortcuts that show the right symbols on every platform, read them out properly and press down with the real keys. - [Label](https://hextaui.com/docs/label) - A label that follows its control, dimming when it's disabled and marking it required or optional on its own. - [Marker](https://hextaui.com/docs/marker) - Quiet notes between content, like date dividers and system events, with sticky dates and times that read as Today or Yesterday. - [Menubar](https://hextaui.com/docs/menubar) - A desktop-style bar of menus with one highlight that slides between open menus and instant switching as you sweep across. - [Message](https://hextaui.com/docs/message) - A chat message row with an avatar, name, bubbles and status, where new messages rise in from the sender's side. - [Message scroller](https://hextaui.com/docs/message-scroller) - A chat scroll area that follows new messages, keeps your place while you read back, and counts what you missed on the jump button. - [Native select](https://hextaui.com/docs/native-select) - The browser's own select, styled to match Input, with a quiet placeholder, Field support and the OS picker on every device. - [Navigation menu](https://hextaui.com/docs/navigation-menu) - Site navigation with dropdowns, or one full-width panel that stays open while its content slides between menus. - [Number flow](https://hextaui.com/docs/number-flow) - Animated numbers where only the changed digits spin, with any Intl format and locale. - [Pagination](https://hextaui.com/docs/pagination) - Page navigation that keeps every button in place, glides to the current page and jumps to any page from the ellipsis. - [Popover](https://hextaui.com/docs/popover) - A floating panel anchored to a trigger that resizes smoothly with its content and follows the trigger’s direction. - [Progress](https://hextaui.com/docs/progress) - A bar or ring that shows how far a task has come, eases between updates and slides while the total is unknown. - [Questionnaire](https://hextaui.com/docs/questionnaire) - A step-by-step form that moves between questions with a sense of direction, shows real progress and answers from the keyboard. - [Radio group](https://hextaui.com/docs/radio-group) - Pick one option from a set, with a dot that hands off between choices and cards whose selection ring slides to the new pick. - [Resizable](https://hextaui.com/docs/resizable) - Panels you can drag apart, with a quiet divider that wakes up on hover, sizes that glide on reset or collapse, and layouts that persist. - [Scroll area](https://hextaui.com/docs/scroll-area) - Native scrolling with a minimal scrollbar, edges that fade only where there’s more to see, and an optional peek that cuts the last item in half. - [Select](https://hextaui.com/docs/select) - Pick one or more options from a list that opens on the current value, with typeahead, groups and form support. - [Separator](https://hextaui.com/docs/separator) - A hairline that divides content horizontally or vertically, with an optional label and a decorative mode for purely visual lines. - [Sheet](https://hextaui.com/docs/sheet) - A panel that slides in from any edge, with swipe-to-dismiss, scroll lock and stacked nesting. - [Sidebar](https://hextaui.com/docs/sidebar) - An app sidebar that collapses to icons or off canvas, stays pinned under your header, and becomes a swipeable sheet on phones. - [Skeleton](https://hextaui.com/docs/skeleton) - Placeholders that wait 150ms before showing, take the exact size of the content they wrap, and fade it in without moving anything. - [Slider](https://hextaui.com/docs/slider) - Pick a value or a range by dragging, tapping the track or using the keys, with jumps that glide and an optional value bubble. - [Spinner](https://hextaui.com/docs/spinner) - A loading indicator with Apple-style ticks or a breathing ring that can wait before showing and stay long enough not to flicker. - [Switch](https://hextaui.com/docs/switch) - An on/off toggle you can tap, press or drag, with a thumb that stretches under your finger and an optional pending state for saves. - [Table](https://hextaui.com/docs/table) - A responsive table with a surface style, wrapping or compact cells, sticky headers, pinned columns and scroll hints. - [Tabs](https://hextaui.com/docs/tabs) - Switch between views with an indicator that slides to the active tab, as a segmented control or an underline, and lists that scroll when they overflow. - [Textarea](https://hextaui.com/docs/textarea) - Multi-line text that grows smoothly with what you write between a minimum and maximum number of rows, with counters, validation and a submit shortcut. - [Toast](https://hextaui.com/docs/toast) - Brief messages that stack neatly, expand on hover, swipe away, and turn a loading state into success or error in place. - [Toggle](https://hextaui.com/docs/toggle) - A button that stays on or off, with a fill that settles in when pressed, a clear hover-to-on step and icons that can fill with the state. - [Toggle group](https://hextaui.com/docs/toggle-group) - A row of toggles for one choice or many, with a fill that slides to the picked item, joined or spaced items and arrow-key focus. - [Tooltip](https://hextaui.com/docs/tooltip) - A short hint on hover or keyboard focus that opens after a brief rest, switches instantly between neighbours and shows shortcuts. - [Tree](https://hextaui.com/docs/tree) - Nested, expandable rows for files and hierarchies, with indent guides, connector lines, cascading checkboxes, typeahead and full keyboard support. - [Video player](https://hextaui.com/docs/video-player) - A video player with a scrubbable seek bar, auto-hiding controls, keyboard shortcuts, speed, picture in picture and full screen. --- # React blocks for AI products, built on shadcn/ui > Drop-in shadcn/ui blocks that ship your AI app’s chat UI in days, with streaming, tool calls, reasoning and voice done. Part of HextaUI Pro, Prompt Input free. Canonical: https://hextaui.com/blocks Last updated: 2026-10-27 49 blocks. Every block is part of HextaUI Pro (https://hextaui.com/pricing); blocks marked free install without a token. ## E-commerce - [Address Form](https://hextaui.com/blocks/address-form) - A shipping or billing address form that changes with the country. Handles address search, postal codes, saved addresses and error summaries. - [Cart](https://hextaui.com/blocks/cart) - Add to bag button, bag icon with a live count and a cart drawer or page. Handles optimistic quantities with rollback, undo on remove and free shipping progress. - [Checkout](https://hextaui.com/blocks/checkout) - A one-page checkout with contact, delivery and payment beside a live order summary. Handles changed totals, sold-out items and unknown outcomes. - [Commerce Dashboard](https://hextaui.com/blocks/commerce-dashboard) - A complete store admin built from the HextaUI commerce blocks. Handles refunds, fulfillment and stock edits that update every page at once. - [Discount Builder](https://hextaui.com/blocks/discount-builder) - A discount builder where the offer is one editable sentence, with a live checkout preview. Handles code checks, drafts and schedules. - [Inventory](https://hextaui.com/blocks/inventory) - A stock table where merchants edit quantities in place and save adjustments. Handles live orders, edits from another device and oversold or untracked stock. - [Order Detail](https://hextaui.com/blocks/order-detail) - The merchant’s page for one order: shipments, payment, customer and timeline. Handles partial fulfillment, holds, failed payments and cancellations. - [Order Status](https://hextaui.com/blocks/order-status) - Customer order confirmation, package tracking and returns. Handles split shipments, delayed or failed deliveries, final-sale items and pending payments. - [Order Summary](https://hextaui.com/blocks/order-summary) - The checkout sidebar with line items, discount codes and totals. Handles estimated taxes, unknown shipping and prices that changed since the cart was built. - [Orders Table](https://hextaui.com/blocks/orders-table) - The merchant’s orders index with saved views, filters and bulk actions. Handles partial payment and fulfillment, live orders and partial bulk failures. - [Payment](https://hextaui.com/blocks/payment) - The payment step of a checkout, with wallets, cards, PayPal and Pay in 4. Handles card validation, declines, 3-D Secure and slow banks. - [Price](https://hextaui.com/blocks/price) - Prices for a storefront in any currency and locale. Handles sales, ranges, unit prices, free items and prices that change with the variant. - [Product Card](https://hextaui.com/blocks/product-card) - The product tile for collection grids and rails, with swatches, quick add and a wishlist heart. Handles sold-out sizes, price ranges and failed adds. - [Product Editor](https://hextaui.com/blocks/product-editor) - The add and edit product page for a store admin. Handles unsaved changes, SKU errors from the server and someone else editing at once. - [Product Filters](https://hextaui.com/blocks/product-filters) - Faceted filters for a collection page, with chips, sort and load more. Handles zero results, slow counts, long value lists and price ranges in any currency. - [Product Gallery](https://hextaui.com/blocks/product-gallery) - The image gallery of a product page, with thumbnails, zoom and a full-screen viewer. Handles variant images, swipe on touch, broken photos, video and loading. - [Product Search](https://hextaui.com/blocks/product-search) - A storefront search field with live suggestions, categories and product results. Handles typos, slow or failing searches, recent searches and keyboard-only use. - [Refund](https://hextaui.com/blocks/refund) - A refund sheet for issuing full or partial refunds on an order. Handles prorated discounts, restocking, shipping, split payments and failed or pending refunds. - [Reviews](https://hextaui.com/blocks/reviews) - Product ratings, customer photos and reviews for a product page. Handles rating filters, helpful votes, review photos and products with no reviews yet. - [Sales Overview](https://hextaui.com/blocks/sales-overview) - The home analytics page of a store admin. Handles stores with no sales yet, today’s unfinished numbers and reports that fail or come back incomplete. - [Shipping Methods](https://hextaui.com/blocks/shipping-methods) - Delivery options for checkout and delivery dates for product pages. Handles order cutoffs, store pickup and rates that change with the address. - [Storefront](https://hextaui.com/blocks/storefront) - A complete store built from the HextaUI commerce blocks. Handles browsing, filters, the bag, checkout and order tracking on one shared store. - [Variant Picker](https://hextaui.com/blocks/variant-picker) - Color swatches and size buttons for a product page. Handles sold-out sizes, combinations that don’t exist, a missing size on add to bag and back-in-stock emails. ## AI - [Agent Todos](https://hextaui.com/blocks/agent-todos) - The plan an agent keeps while it works, one line per step. Handles steps in progress, failed steps and plan changes mid-run. - [Artifact](https://hextaui.com/blocks/artifact) - The panel beside an AI chat that shows what the model made. Handles content still streaming, a sandboxed preview and versions you can restore. - [Chat Sidebar](https://hextaui.com/blocks/chat-sidebar) - The sidebar of a chat app, with pinned chats, projects and recents. Handles rename in place, delete with undo and chats still replying. - [Chat Thread](https://hextaui.com/blocks/chat-thread) - The conversation view of an AI chat. Handles replies that stream, edit and retry, and versions of a reply you can switch between. - [Code Block](https://hextaui.com/blocks/code-block) - Code blocks for AI answers. Highlighting keeps up with streaming, diffs can be accepted or rejected, and commands run in a terminal. - [Diff Review](https://hextaui.com/blocks/diff-review) - A review of an agent’s file edits before they land. Handles accept or reject per change, comments back to the agent and edits still streaming. - [HextaAI](https://hextaui.com/blocks/hexta-ai) - A complete AI chat app built from the HextaUI AI blocks. Handles streaming, tool approvals and plan review end to end on AI SDK message parts. - [Markdown](https://hextaui.com/blocks/markdown) - Markdown rendering for AI answers. Handles streaming without half-typed syntax, tables you can copy and inline citations. - [Prompt Input (free)](https://hextaui.com/blocks/prompt-input) - A chat composer that grows as you type. Handles file uploads, @ and / menus at the caret and messages typed while a reply streams. - [Stack Trace](https://hextaui.com/blocks/stack-trace) - A crash shown the way a developer reads it. Your code comes first, framework frames fold away and every cause is listed in order. - [Streaming](https://hextaui.com/blocks/streaming) - Text that streams from a model at a steady pace. Bursty chunks are smoothed out, with a fade on new words and a caret while it writes. - [Subagents](https://hextaui.com/blocks/subagents) - The runs an agent hands to other agents, one line per run. Handles parallel runs, stop and retry, and a summary once each run is done. - [Test Results](https://hextaui.com/blocks/test-results) - An agent’s test run, shown as it happens. Tests stream in and fold into a summary, with every failure left open and its diff in view. - [Thinking](https://hextaui.com/blocks/thinking) - The thinking view of an AI chat. A live label follows each step, searches and sources fold into a trail, and citations sit beside the answer. - [Tool Calls](https://hextaui.com/blocks/tool-calls) - The list of what an agent does, one line per step. Reads fold into a summary, edits and errors stay in view, and approvals ask before a tool runs. - [Voice Mode](https://hextaui.com/blocks/voice-mode) - Voice conversations with an AI assistant. Handles listening, interruptions and captions, in a full-screen session or an in-chat voice pill. ## Settings - [API keys](https://hextaui.com/blocks/api-keys) - The API keys page of an AI product. Handles a secret shown only once, revoke with undo and rotation with a grace period. - [Appearance](https://hextaui.com/blocks/appearance) - The Appearance section of an AI product’s settings. Theme, density and text sizes stay a draft until people save. - [Billing](https://hextaui.com/blocks/billing) - The plan and usage page of an AI product. Handles credits running out mid-cycle, plan changes with proration and card errors. - [Models](https://hextaui.com/blocks/models) - The Models page of an AI product’s settings. Handles the default model and effort, providers and custom servers with a connection test. - [Notifications](https://hextaui.com/blocks/notifications) - The Notifications section of an AI product’s settings. Handles a channel by event grid, quiet hours and browser permission for push. - [Profile](https://hextaui.com/blocks/profile) - The Profile section of an AI product’s settings. Handles photo cropping, a username checked as you type and email changes confirmed by code. - [Save Bar](https://hextaui.com/blocks/save-bar) - A floating save bar that morphs like the Dynamic Island. Handles saving, a Saved check, errors with Try again and a nudge when someone tries to leave. - [Security](https://hextaui.com/blocks/security) - The Security section of an AI product’s settings. Handles sessions, two-factor with recovery codes and deletion behind a typed confirmation. - [Settings](https://hextaui.com/blocks/settings) - The settings page of an AI product. Handles a save bar that appears only when something changed, field errors and loading states. - [Team](https://hextaui.com/blocks/team) - The team page of an AI product’s workspace settings. Handles seats running out, pending invites and ownership transfer with a typed confirmation. --- # HextaUI Blog > Articles from the maker of HextaUI on shadcn/ui, Base UI, the hard UI states, AI chat interfaces, e-commerce UI and registries that AI coding agents can use. Canonical: https://hextaui.com/blog Last updated: 2026-10-16 - [How to build a one-page checkout in React and Next.js that survives declines and changed prices](https://hextaui.com/blog/one-page-checkout-react-nextjs): A checkout form is easy. Declines, 3-D Secure, prices that change before Pay and payments that never answer are not. A one-page checkout in React and Next.js. - [Product variant picker UX in React: sold-out sizes, missing combinations and back-in-stock](https://hextaui.com/blog/product-variant-picker-react): Colors and sizes look simple until stock lives on each combination. A React variant picker for sold-out sizes, missing combinations, photos, prices and the URL. - [Shopping cart UX in React: optimistic updates, undo and money in minor units](https://hextaui.com/blog/react-shopping-cart-optimistic-updates): A React cart that feels instant and stays correct: money in minor units, optimistic quantities with rollback, merged requests, undo and free shipping progress. - [How to build an address form that works in every country, in React](https://hextaui.com/blog/international-address-form-react): A US address form with a country dropdown is not international. Per-country fields, postal codes, autofill tokens, address search and errors in React. - [Building an e-commerce admin dashboard in Next.js: orders, refunds and inventory](https://hextaui.com/blog/ecommerce-admin-dashboard-nextjs): The hard parts of a Next.js store admin: two order statuses, partial bulk failures, refund math that adds up to the cent, inventory adjustments and discounts. - [shadcn/ui switched to Base UI. Here is what actually changes in your code](https://hextaui.com/blog/shadcn-base-ui-vs-radix): shadcn/ui now defaults to Base UI instead of Radix. Every API change you will hit, the -b radix escape hatch and a migration order that does not hurt. - [The states shadcn/ui leaves to you: loading, success, error, empty and reduced motion](https://hextaui.com/blog/shadcn-ui-states): shadcn/ui gives you a clean button, not a loading button. The hard UI states every shadcn project hand-rolls, with the timings that make them feel right. - [How to build an AI chat UI with shadcn/ui and the Vercel AI SDK that survives real users](https://hextaui.com/blog/ai-chat-ui-shadcn-ai-sdk): A streaming AI chat is easy to demo and hard to ship. The states a shadcn/ui and AI SDK chat has to handle, from stop and retry to tool approvals and CJK input. - [Vercel's AI Elements is being deprecated. Here are the alternatives for shadcn/ui AI chat UI](https://hextaui.com/blog/ai-elements-deprecated-alternatives): Vercel's AI Elements is deprecated at the end of November 2026. What replaces it, what to do with code you copied, and five shadcn/ui AI chat options compared. - [How to build a shadcn/ui registry that Claude Code and Cursor can actually use](https://hextaui.com/blog/agent-ready-shadcn-registry): A shadcn registry is half the job in 2026. Namespaces, Markdown docs at .md URLs, llms.txt, an MCP server and private registries, so AI agents install it right. --- # Comparisons > Honest comparisons between HextaUI and the libraries people weigh it against, with when each one is the better choice. Facts were checked against each project’s source and docs on the date each page states. Canonical: https://hextaui.com/compare Last updated: 2026-10-22 ## Libraries - [HextaUI vs AI Elements](https://hextaui.com/compare/ai-elements) - [HextaUI vs assistant-ui](https://hextaui.com/compare/assistant-ui) - [HextaUI vs prompt-kit](https://hextaui.com/compare/prompt-kit) - [HextaUI vs shadcn/ui](https://hextaui.com/compare/shadcn-ui) - [shadcn AI chat templates](https://hextaui.com/compare/shadcn-ai-chat-templates) ## Component by component Each page puts one HextaUI component next to its shadcn/ui version: the parts, variants and props that differ, read from both sources, and the command to switch. - [Accordion](https://hextaui.com/compare/shadcn-ui/accordion) - [Alert](https://hextaui.com/compare/shadcn-ui/alert) - [Alert dialog](https://hextaui.com/compare/shadcn-ui/alert-dialog) - [Avatar](https://hextaui.com/compare/shadcn-ui/avatar) - [Badge](https://hextaui.com/compare/shadcn-ui/badge) - [Bubble](https://hextaui.com/compare/shadcn-ui/bubble) - [Button](https://hextaui.com/compare/shadcn-ui/button) - [Card](https://hextaui.com/compare/shadcn-ui/card) - [Carousel](https://hextaui.com/compare/shadcn-ui/carousel) - [Chart](https://hextaui.com/compare/shadcn-ui/chart) - [Combobox](https://hextaui.com/compare/shadcn-ui/combobox) - [Command](https://hextaui.com/compare/shadcn-ui/command) - [Dialog](https://hextaui.com/compare/shadcn-ui/dialog) - [Dropdown menu](https://hextaui.com/compare/shadcn-ui/dropdown-menu) - [Empty](https://hextaui.com/compare/shadcn-ui/empty) - [Field](https://hextaui.com/compare/shadcn-ui/field) - [Hover card](https://hextaui.com/compare/shadcn-ui/hover-card) - [Input](https://hextaui.com/compare/shadcn-ui/input) - [Input group](https://hextaui.com/compare/shadcn-ui/input-group) - [Input OTP](https://hextaui.com/compare/shadcn-ui/input-otp) - [Item](https://hextaui.com/compare/shadcn-ui/item) - [Kbd](https://hextaui.com/compare/shadcn-ui/kbd) - [Message scroller](https://hextaui.com/compare/shadcn-ui/message-scroller) - [Pagination](https://hextaui.com/compare/shadcn-ui/pagination) - [Popover](https://hextaui.com/compare/shadcn-ui/popover) - [Progress](https://hextaui.com/compare/shadcn-ui/progress) - [Questionnaire](https://hextaui.com/compare/shadcn-ui/questionnaire) - [Radio group](https://hextaui.com/compare/shadcn-ui/radio-group) - [Scroll area](https://hextaui.com/compare/shadcn-ui/scroll-area) - [Sheet](https://hextaui.com/compare/shadcn-ui/sheet) - [Sidebar](https://hextaui.com/compare/shadcn-ui/sidebar) - [Skeleton](https://hextaui.com/compare/shadcn-ui/skeleton) - [Slider](https://hextaui.com/compare/shadcn-ui/slider) - [Spinner](https://hextaui.com/compare/shadcn-ui/spinner) - [Switch](https://hextaui.com/compare/shadcn-ui/switch) - [Table](https://hextaui.com/compare/shadcn-ui/table) - [Textarea](https://hextaui.com/compare/shadcn-ui/textarea) - [Tooltip](https://hextaui.com/compare/shadcn-ui/tooltip) --- # Changelog > Every HextaUI and HextaUI Pro release, newest first: new components and blocks, improvements and what was removed. Canonical: https://hextaui.com/changelog Last updated: 2026-10-21 ## 2026-10-21: E-commerce blocks 23 new Pro blocks for online stores, from the product page to the merchant admin, plus a complete Storefront and Commerce Dashboard built from them. Every demo now keeps its scenarios and test data in a floating panel instead of the page. ### Added - Storefront blocks: Price, Variant Picker, Product Gallery, Product Card, Product Filters, Product Search and Reviews, sharing one product model with per-combination stock, sold-out sizes that still take back-in-stock emails, and prices for any currency. - Checkout blocks: Cart with undo and rollback, Order Summary with stacked discount codes, an Address Form that adapts to 16 countries, Shipping Methods with delivery dates, Payment with card checks and bank verification, a one-page Checkout and Order Status with tracking and returns. - Admin blocks: Orders Table, Order Detail with a clear timeline, Refund with exact line-item math, Product Editor with a variant grid, Inventory with adjust-by edits, Discount Builder with a live checkout preview, and Sales Overview. - Storefront and Commerce Dashboard: complete store and admin templates with routing and shared state, built only from the blocks above. - Save Bar: a floating unsaved-changes bar that morphs between dirty, saving, saved and error like a Dynamic Island. Settings, Product Editor, Inventory and Discount Builder use it. - Pro blocks are now in the ⌘K search, down to their parts, props and usage examples. ### Changed - Sidebar: collapsible menu groups, icon-mode flyouts, badges with counts and a dismissible footer card. - Table: sticky headers stay above pinned columns while scrolling. - Block docs keep the sidebar's scroll position when you switch blocks, and translated block pages now have the sidebar. ## 2026-10-15: Stack Trace, Test Results and Subagents Three new Pro blocks for what coding agents run into: crashes, test runs and work handed to other agents. Chat Thread gets restore points, and Code Block's terminal speaks ANSI. ### Added - Stack Trace: an error view for failed commands, tool calls and tests. It parses Node, browser, Bun, Deno and Python stacks, folds framework frames, shows the failing line, follows the cause chain, and adds open in editor and Ask to fix. - Test Results: an agent's test run that streams tests into their files, then folds into a summary such as “118 passed, 2 failed in 4.2s”, with word-level Expected/Received diffs, stacks, filters, Rerun failed and Ask to fix, plus Vitest, Jest, Playwright and JUnit adapters. - Subagents: show the work an agent hands to other agents, one line per run, with live activity, parallel progress, Stop, Retry and an AI SDK adapter for streamed subagent messages. ### Changed - Chat Thread: checkpoints are now restore points. Restore says how many messages go and which files revert, offers conversation and code or conversation only, puts your message back in the composer, and can be undone from a toast. - Code Block: CodeTerminal renders ANSI colours and styles, settles \r progress bars, turns OSC 8 links into real links, and adds a live Running status, a Clear action and Show all for long output. - Prompt Input's context ring breaks AI SDK usage into input, cached, output and reasoning tokens, shows the cost from your pricing, and offers to compact the conversation near the limit. - Progress takes `segments` to split the fill into parts, such as passed, failed and skipped tests. - HextaAI: failed commands open in Stack Trace, test runs stream into Test Results, task calls run as Subagents, and every reply leaves a restore point you can undo. ## 2026-10-08: Settings blocks, Diff Review and Artifact 11 new Pro blocks, a Team plan, a free Prompt Input, and a round of touch and focus fixes across the components. ### Added - Settings blocks for AI products: a Settings shell plus Profile, Appearance, Models, Notifications, API keys, Billing, Security and Team pages. - Diff Review: review an agent's edits across files, accept or reject each change, comment on lines and send them back to the agent, with unified and split views. - Artifact: the panel beside a chat for generated pages, documents and code, with a sandboxed preview and versions you can compare and restore. HextaAI now opens artifacts from its chat. - Team plan for up to 10 developers on one invoice. Add and remove teammates by email from your account, and keep one shared token in CI. - Prompt Input is free. Install it with no account or token, and see how a Pro block holds up before you buy. - Release emails for new changelog entries, with one-click unsubscribe and a switch on your account page. - A sponsor slot under the table of contents on docs and block pages, from /sponsor. - Button: a ghost-destructive variant for quiet row actions like Sign out or Remove. - This changelog, and Pricing in the header. ### Changed - Pro is now split into Solo and Team plans. The early-bird price ends on 30 November 2026. - Refunds now run 30 days, up from 14, no questions asked. - Code Block lines gain gutter bars, a comment slot and hanging indents, and Prompt Input's effort slider has a labelled standalone variant. - Code is set in Paper Mono. - Button: xs and sm sizes get larger hit areas on touch screens without changing how they look. - Switch: controlled switches flip right away, and the spinner only shows when saving takes longer than 400ms. - Collapsible keeps sticky content pinned while it animates, and Resizable stops animating with reduced motion. - Focus rings stay visible inside scrolling Tabs, Navigation Menu, Table and the docs table of contents. ## 2026-10-07: Agent harness for Prompt Input Prompt Input learned to drive coding agents, the homepage went live, and the whole site became readable by AI agents. ### Added - Prompt Input: an inset footer for agent harnesses, with pickers for the mode, where it runs and which folder it works in, plus one control for the model and effort. - Grid, one-per-row and list views on Components and Blocks. - Agents can read every page as Markdown, plus an OpenAPI spec, /pricing.md, per-section llms.txt files, read-only WebMCP tools and an Agent Plugin. ### Changed - The homepage now runs four Pro blocks and a set of component demos live. - Previews load as they come into view, and pages with block previews no longer freeze while scrolling. - Upgraded to Next.js 16.4. ### Removed - /auth.md. Authentication is documented in the API reference. ## 2026-10-06: HextaUI Pro The first Pro blocks, accounts to unlock them, and a batch of new component options. ### Added - 11 Pro blocks: Chat Thread, Chat Sidebar, Prompt Input, Streaming Text, Thinking, Tool Calls, Agent Todos, Code Block, Markdown, Voice Mode and the full Hexta AI assistant. - Block pages with an overview, anatomy, API reference, keyboard map, accessibility notes and AI SDK examples. Install with the shadcn CLI. - Sign in with GitHub or Google. Accounts with the same verified email are linked. - Privacy, terms, refund and Pro license pages. - Badge: muted appearance and pill shape. Button and Toggle: pill shape. Button: icon-xl size. - DropdownMenu: indicator="end" for checkbox and radio items. Card: flush size. Sidebar: gap and full-screen mobile options. - A text-shimmer utility with reduced-motion and forced-colors fallbacks. ### Changed - HoverCard keeps the side it first opened on instead of flipping when space runs out. - Apple devices use the system font. Everything else keeps Inter. - Analytics only load after you allow them in the cookie banner. ## 2026-10-05: HextaUI v2 The component library, rebuilt on Base UI and Tailwind CSS v4. ### Added - Tests for every component, and docs with live examples for every state. - The @hextaui shadcn registry. - A hosted MCP server, llms.txt and Markdown docs for AI coding agents. --- # About HextaUI > HextaUI is an open-source React component library built on top of shadcn/ui, made by Preet Suthar, an independent developer based in India. Canonical: https://hextaui.com/about Last updated: 2026-10-22 ## What HextaUI is HextaUI has 65 components, 9 hooks and 5 utilities for React. They keep the shadcn/ui API, sit on Base UI for behavior and accessibility, and are styled with Tailwind CSS v4. You add them with the shadcn CLI, the source lands in your project, and from then on it is your code. The point is the work you would otherwise do yourself: interruptible motion with reduced-motion fallbacks, keyboard and screen reader support, touch-sized targets, right-to-left layouts and the loading, empty and error states every real interface needs. ## Who makes it HextaUI is a one-person project, designed, built and maintained by Preet Suthar. Bugs and ideas go to [GitHub issues](https://github.com/preetsuthar17/hextaui/issues), and everything else to [hi@preetsuthar.me](mailto:hi@preetsuthar.me). ## How it is funded - Every component, hook and utility is free and MIT licensed, for personal and commercial work. The [source is on GitHub](https://github.com/preetsuthar17/hextaui). - HextaUI Pro is a one-time purchase of ready-made blocks, such as AI chat interfaces and app layouts, under the [Pro license](https://hextaui.com/legal/license). It pays for the time that goes into the free library. - Payments are handled by Dodo Payments. See the [refund policy](https://hextaui.com/legal/refunds) and the [privacy policy](https://hextaui.com/legal/privacy). ## For developers and AI assistants Every docs page has a Markdown version, the full index is at [llms.txt](https://hextaui.com/llms.txt), assistants can connect to the [MCP server](https://hextaui.com/docs/mcp), and the HTTP endpoints are described in the [API docs](https://hextaui.com/docs/api). --- # Contact HextaUI > HextaUI is run by Preet Suthar, an independent developer based in India. Canonical: https://hextaui.com/contact Last updated: 2026-10-22 ## Email Write to [hi@preetsuthar.me](mailto:hi@preetsuthar.me) for anything about your account, HextaUI Pro, billing, refunds, privacy or partnerships. Send it from the email address on your account when it is about a purchase, so the order can be found. ## Bugs and feature requests Open an issue on [GitHub](https://github.com/preetsuthar17/hextaui/issues) with the component, what you expected, what happened, and your browser and React versions. A link to a small reproduction gets it fixed fastest. ## Other ways to reach me - On X: [@preetsuthar17](https://x.com/preetsuthar17). - Security issues: email [hi@preetsuthar.me](mailto:hi@preetsuthar.me) instead of opening a public issue. - Data requests under the [privacy policy](https://hextaui.com/legal/privacy): email from the address on your account. ## Before you write Most answers are in the [docs](https://hextaui.com/docs). The [refund policy](https://hextaui.com/legal/refunds) and [terms](https://hextaui.com/legal/terms) cover purchases. --- # Sponsor HextaUI > Put your product beside every HextaUI docs and blocks page. One sponsor at a time, $199 a month, cancel anytime. Canonical: https://hextaui.com/sponsor Last updated: 2026-10-27 Put your product in front of developers building with shadcn/ui and React, right beside the docs they’re reading. $199 a month One sponsor at a time. Cancel anytime. ## What you get - A card under the table of contents on every docs and blocks page, on desktop. - The only sponsor on the site. No rotation, no other ads. - A headline, a short description and a button to your site, marked as sponsored, with UTM tags so you can measure clicks. - $199 a month, billed by Dodo Payments. Cancel anytime; the card stays up until the end of the paid month. - Every card is reviewed by hand and goes live within 1 business day. If it can’t run, you get a full refund. Book the slot ## Your card Write the card the way it should appear. You can change the copy later by email. Products for developers fit best; gambling, crypto trading and adult products aren’t accepted. --- # Introduction > Ship your AI app’s chat UI faster with shadcn/ui blocks that already handle streaming, tool calls, voice and agent states. Canonical: https://hextaui.com/docs Last updated: 2026-10-27 ## What is HextaUI HextaUI is a collection of 65 components, 9 hooks and 5 utilities for React. You add them with the shadcn CLI, the source lands in your project, and from then on it's your code to read and change. Every component keeps the shadcn/ui API you already know. What's different is the work you would otherwise do yourself: the states, the edge cases and the small details that make an interface feel finished. ## Quick start In a project set up with shadcn/ui, add a component: ```bash npx shadcn@latest add https://hextaui.com/r/button.json ``` Then import it from `@/components/ui`. ```tsx import { Button } from "@/components/ui/button" export function SaveButton() { return ( ) } ``` Requirements, adding everything at once and the `@hextaui` namespace are covered in [Installation](https://hextaui.com/docs/installation). ## What you get These hold for every component, so you don't have to check each one. ### Motion Animations use the theme's easing curves and can be interrupted and reversed mid-way. When reduced motion is on, movement turns into a simple fade. ### Keyboard and screen readers Everything works with the keyboard alone, and focus goes where you expect when popups open and close. Changes are announced too: toasts, loading and saved states, selections and slide changes. ### Touch and small screens Tap targets grow on touch screens, text inputs stay at 16px so iOS doesn't zoom in, and popups stay on screen down to 320px wide. Layouts mirror for right-to-left languages. ### High contrast Focus rings, control edges and selected states stay visible in Windows high contrast mode, and the default theme meets WCAG AA contrast in light and dark. ## Built on - shadcn/ui with the `base-vega` style - Base UI primitives for behavior and accessibility - Tailwind CSS v4, with theme tokens for color, radius and easing - Tabler icons ## AI assistants Every page has a Markdown version, and `/llms.txt` lists them all. Assistants that support MCP can connect to the [HextaUI MCP server](https://hextaui.com/docs/mcp) to search the docs, read component APIs and get install commands. ## License HextaUI is open source under the [MIT license](https://github.com/preetsuthar17/hextaui/blob/main/LICENSE), free for personal and commercial projects. --- # Installation > Add HextaUI to a React project with the shadcn CLI, or copy the files in by hand. Canonical: https://hextaui.com/docs/installation Last updated: 2026-10-27 ## Requirements A React 19 project with Tailwind CSS v4 and a `components.json`. If you don't have one yet, set it up with the shadcn CLI. ```bash npx shadcn@latest init ``` ## Add components Pass a component's registry URL to the CLI. It copies the source into your project, installs its dependencies, adds the theme tokens and pulls in any HextaUI components it builds on. ```bash npx shadcn@latest add https://hextaui.com/r/button.json ``` Add every component at once with: ```bash npx shadcn@latest add https://hextaui.com/r/all.json ``` The files are yours from then on. Import them from `@/components/ui` and edit them like any other code. ## Namespace Register HextaUI in `components.json` to add components by name. ```json title="components.json" { "registries": { "@hextaui": "https://hextaui.com/r/{name}.json" } } ``` ```bash npx shadcn@latest add @hextaui/button ``` ## AI assistants Every page is available as Markdown, so assistants get the full source, examples and API without scraping. Use the Copy page menu at the top of any page, or point your assistant at these files. - `https://hextaui.com/llms.txt` lists every page with a short description. - `https://hextaui.com/llms-full.txt` has every page in one file. - Add `.md` to any docs URL for that page, like `https://hextaui.com/docs/button.md`. For the best results, connect the [HextaUI MCP server](https://hextaui.com/docs/mcp). Assistants search the docs, read each API and get install commands without leaving your editor. With the namespace above, the shadcn MCP server lets assistants like Claude Code, Cursor and Codex browse and install HextaUI components directly. ```bash npx shadcn@latest mcp init --client claude ``` Installation, examples, theming, keyboard support, API reference and source: https://hextaui.com/docs/installation.md --- # MCP server > Connect Claude Code, Cursor, VS Code and other AI assistants to HextaUI, so they search the docs, read each API and install components for you. Canonical: https://hextaui.com/docs/mcp Last updated: 2026-10-27 The HextaUI MCP server gives assistants the same docs you read here: what each component is for, its props and data attributes, keyboard support, working examples and the command that installs it. Assistants stop guessing at shadcn/ui props and use what HextaUI actually ships. It is a hosted, read-only server at `https://hextaui.com/mcp`. There is nothing to install and no API key. It reads the docs of the version on this site, so it is always current. ## Setup Add the server to your assistant, then ask it to build something with HextaUI. ### Claude Code ```bash claude mcp add --transport http hextaui https://hextaui.com/mcp ``` ### Cursor ```json title=".cursor/mcp.json" { "mcpServers": { "hextaui": { "url": "https://hextaui.com/mcp" } } } ``` ### VS Code ```json title=".vscode/mcp.json" { "servers": { "hextaui": { "type": "http", "url": "https://hextaui.com/mcp" } } } ``` ### Codex ```toml title="~/.codex/config.toml" [mcp_servers.hextaui] url = "https://hextaui.com/mcp" ``` ### Windsurf ```json title="~/.codeium/windsurf/mcp_config.json" { "mcpServers": { "hextaui": { "serverUrl": "https://hextaui.com/mcp" } } } ``` ### Other clients Any client that supports remote servers over Streamable HTTP can use the URL directly. For a client that only runs local servers, bridge it with `mcp-remote`. ```json { "mcpServers": { "hextaui": { "command": "npx", "args": ["-y", "mcp-remote", "https://hextaui.com/mcp"] } } } ``` ## Tools Every tool is read-only. Installing is left to your assistant, which runs the shadcn CLI command in your project like you would. - `search_docs` finds components, examples, props and data attributes from plain language, like “confirm before delete” or a prop name. - `list_components` lists every component, hook and utility by category. - `get_component` returns a page's full docs: install command, usage, examples, keyboard, accessibility and API reference. - `get_component_api` returns only the API reference and keyboard support. - `get_examples` returns the code of any example on a page. - `get_component_source` returns the source files the CLI would install. - `get_install_command` builds one shadcn command for several components, for npm, pnpm, yarn or bun. - `get_setup` returns the [installation](https://hextaui.com/docs/installation) guide and the conventions generated code should follow. The server also exposes each page as a `hextaui://docs/{slug}` resource, and a `build-ui` prompt that walks an assistant from picking components to installing them. ## Try it - Build a settings page with HextaUI: profile form, notification switches and a danger zone. - Which HextaUI component should I use for a list of files with checkboxes? - Replace this modal with the HextaUI dialog and keep the form working. - Add a chat view with HextaUI message bubbles that scrolls to new messages. Prefer the shadcn MCP server? Register the [@hextaui namespace](https://hextaui.com/docs/installation#namespace) and it can browse and install HextaUI components and examples too. Installation, examples, theming, keyboard support, API reference and source: https://hextaui.com/docs/mcp.md --- # API > The HextaUI HTTP API and OpenAPI spec: registry and docs endpoints, authentication with sessions and API tokens, Pro blocks and error responses. Canonical: https://hextaui.com/docs/api Last updated: 2026-10-27 Everything on HextaUI is also available over HTTP. The registry and docs are static JSON and Markdown files that need no key. Account and Pro endpoints use your sign-in session or an API token. Assistants that speak MCP can use the same data as tools through the [HextaUI MCP server](https://hextaui.com/docs/mcp) instead. ## OpenAPI spec The HextaUI API is described by an OpenAPI 3.1 document at `https://hextaui.com/openapi.json`. Every operation has an `operationId`, typed parameters and response schemas, so you can generate a client or hand it to an agent as function-calling tools. ## Public endpoints - `GET /r/registry.json` lists every registry item. - `GET /r/{name}.json` returns one item with the full source of each file. - `GET /mcp/index.json` lists every component, hook, utility and guide with its category, description and examples. - `GET /docs/{slug}.md` returns a docs page as Markdown. `/llms.txt` links to all of them. - `GET /api/md/{path}` returns any public page as Markdown, the same file as `/{path}.md` or a request with `Accept: text/markdown`. `GET /api/md/_catalog` lists every one. - `POST /mcp` is the Streamable HTTP endpoint of the MCP server. ```bash curl https://hextaui.com/r/button.json ``` ## Authentication Sign in with GitHub or Google on the [account page](https://hextaui.com/account). The browser then holds a session cookie that the account endpoints read. Only pages on hextaui.com can call the endpoints that change something. Pro accounts can create API tokens on the same page. Send one as `Authorization: Bearer hxt_…` to install Pro blocks from the shadcn CLI or a script. The token rules are published as protected-resource metadata at `https://hextaui.com/.well-known/oauth-protected-resource`. A 401 from a Pro endpoint links to it in its `WWW-Authenticate` header. ## Account endpoints - `GET /api/account` returns whether the account has Pro, on which plan, and which providers are linked. - `POST /api/checkout` starts a Solo or Team checkout and returns its URL. No session is needed. - `POST /api/claim` confirms a payment from its checkout return link and, when signed in, moves an unclaimed purchase to the account. - `GET /api/tokens` and `POST /api/tokens` list and create API tokens. - `DELETE /api/tokens/{id}` deletes one. - `GET /api/team` and `POST /api/team` list and add teammates on a Team plan, and `DELETE /api/team/{id}` removes one. - `GET /api/auth/get-session` returns the current session, or `null`. ## Pro endpoints - `GET /r/pro/{name}.json` returns a Pro block as a shadcn registry item. Free blocks, like Prompt Input, need no token. - `GET /api/pro/blocks/{name}` returns the source files of a Pro block. ```json title="components.json" { "registries": { "@hextaui-pro": { "url": "https://hextaui.com/r/pro/{name}.json", "headers": { "Authorization": "Bearer ${HEXTAUI_PRO_TOKEN}" } } } } ``` ## Errors Errors use RFC 9457 problem details with the `application/problem+json` type. Each one has a stable `code`, a `detail` that says what went wrong and a `resolution` that says how to fix it. - `bad_request` (400): Bad request. - `unauthorized` (401): Unauthorized. - `invalid_signature` (401): Invalid signature. - `forbidden` (403): Forbidden. - `pro_required` (403): HextaUI Pro required. - `not_found` (404): Not found. - `method_not_allowed` (405): Method not allowed. - `token_limit` (400): Token limit reached. - `seat_limit` (400): Seat limit reached. - `team_required` (403): Team plan required. - `sponsor_slot_taken` (409): Sponsor slot booked. ```http HTTP/2 401 Content-Type: application/problem+json { "type": "https://hextaui.com/docs/api#errors-unauthorized", "title": "Unauthorized", "status": 401, "code": "unauthorized", "detail": "HextaUI Pro items need a signed-in session or an API token.", "resolution": "Send Authorization: Bearer with a token from https://hextaui.com/account, or sign in there.", "docs": "https://hextaui.com/docs/api#errors", "error": "Unauthorized" } ``` ## SDK and tools There is no separate SDK package. The shadcn CLI is the client for the registry, the MCP server is the client for assistants, and the OpenAPI spec generates a typed client in any language. Installation, examples, theming, keyboard support, API reference and source: https://hextaui.com/docs/api.md --- # Accordion > Stacked headings that each reveal a panel, with height motion you can reverse mid-way and panels that stay searchable while closed. Canonical: https://hextaui.com/docs/accordion Last updated: 2026-10-27 ## Usage ```tsx import { Accordion, AccordionContent, AccordionItem, AccordionTrigger, } from "@/components/ui/accordion" ``` ```tsx Is it accessible? Yes. It follows the WAI-ARIA accordion pattern. ``` ## Composition ```text Accordion └── AccordionItem ├── AccordionTrigger └── AccordionContent ``` Installation, examples, theming, keyboard support, API reference and source: https://hextaui.com/docs/accordion.md --- # Alert > Inline messages for status and feedback, with a neutral surface, a colored icon and a dismiss that collapses smoothly. Canonical: https://hextaui.com/docs/alert Last updated: 2026-10-27 ## Usage ```tsx import { Alert, AlertAction, AlertClose, AlertDescription, AlertTitle, } from "@/components/ui/alert" ``` ```tsx Heads up You can add components to your app using the CLI. ``` ## Composition ```text Alert ├── AlertTitle ├── AlertDescription ├── AlertAction └── AlertClose ``` ## Accessibility - `destructive` and `warning` alerts get `role="alert"` and are announced right away. Every other variant gets `role="status"` and waits for a pause. - The close button is labelled “Dismiss”. Pass `aria-label` to translate it. - Focus is never lost when a focused alert closes. - With reduced motion on, alerts appear and disappear instantly. Installation, examples, theming, keyboard support, API reference and source: https://hextaui.com/docs/alert.md --- # Alert dialog > A confirmation dialog for destructive or important actions that waits for async work, and becomes a bottom sheet on phones. Canonical: https://hextaui.com/docs/alert-dialog Last updated: 2026-10-27 ## Usage ```tsx import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, } from "@/components/ui/alert-dialog" ``` ```tsx }> Delete Delete this project? This can’t be undone. Cancel Delete ``` ## Composition ```text AlertDialog ├── AlertDialogTrigger └── AlertDialogContent ├── AlertDialogHeader │ ├── AlertDialogMedia │ ├── AlertDialogTitle │ └── AlertDialogDescription └── AlertDialogFooter ├── AlertDialogCancel └── AlertDialogAction ``` ## Accessibility - The content has `role="alertdialog"` and is labelled by its title and described by its description. - Focus starts on ``, the least destructive choice. Pass `initialFocus` to change it. - Clicking the backdrop doesn’t close it, so a decision is never dismissed by accident. Set `disablePointerDismissal={false}` to allow it. - On phones it becomes a bottom sheet that can be swiped down to cancel. While an action is pending, swiping, Esc and Cancel are blocked and the buttons stay focusable. - With reduced motion on, it fades instead of scaling. Installation, examples, theming, keyboard support, API reference and source: https://hextaui.com/docs/alert-dialog.md --- # Aspect ratio > A box that holds its shape before media loads, shimmers while loading, fades the media in and falls back when it fails. Canonical: https://hextaui.com/docs/aspect-ratio Last updated: 2026-10-27 ## Usage ```tsx import { AspectRatio } from "@/components/ui/aspect-ratio" ``` ```tsx Sunset over mountains ``` ## Accessibility - The box is `aria-busy` while its media loads. - The fallback is decorative and hidden from assistive tech. The image’s `alt` text stays available when it fails to load, so always write one. - With reduced motion on, media appears without fading. Installation, examples, theming, keyboard support, API reference and source: https://hextaui.com/docs/aspect-ratio.md --- # Attachment > File and image cards for uploads, with progress, states, actions, a full-card trigger and names that keep their extension. Canonical: https://hextaui.com/docs/attachment Last updated: 2026-10-27 ## Usage ```tsx import { Attachment, AttachmentAction, AttachmentActions, AttachmentContent, AttachmentDescription, AttachmentMedia, AttachmentTitle, } from "@/components/ui/attachment" ``` ```tsx report.pdf PDF · 2.4 MB ``` ## Composition ```text Attachment ├── AttachmentMedia ├── AttachmentContent │ ├── AttachmentTitle │ └── AttachmentDescription ├── AttachmentActions │ └── AttachmentAction └── AttachmentTrigger AttachmentGroup └── Attachment ``` ## Accessibility - While uploading, the progress bar has `role="progressbar"` and is labelled by the title. - String titles get a `title` attribute with the full name, so truncated names can still be read. - Icon-only actions and the trigger have no text, so always give them an `aria-label` that names the file. - With reduced motion on, attachments appear without popping in, the progress bar jumps instead of easing, and groups reflow instantly. Installation, examples, theming, keyboard support, API reference and source: https://hextaui.com/docs/attachment.md --- # Avatar > User photos with an initials fallback, status badges and stacked groups that collapse into a count. Canonical: https://hextaui.com/docs/avatar Last updated: 2026-10-27 ## Usage ```tsx import { Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarImage, } from "@/components/ui/avatar" ``` ```tsx AL ``` ## Composition ```text Avatar ├── AvatarImage ├── AvatarFallback └── AvatarBadge AvatarGroup ├── Avatar └── AvatarGroupCount ``` ## Accessibility - Use `alt=""` when the person’s name is already next to the avatar, and their name as the alt text when it isn’t. - Badges with a `status` are announced as “Online”, “Away”, “Busy” or “Offline”. Offline is drawn as a ring, so the status never relies on color alone. - Groups have `role="group"`. The count reads as “3 more”, not “+3”. - With reduced motion on, photos appear without fading and status changes don’t pulse. Installation, examples, theming, keyboard support, API reference and source: https://hextaui.com/docs/avatar.md --- # Badge > Status labels with colored dots, removable tags that slide closed and counts that roll to their new value. Canonical: https://hextaui.com/docs/badge Last updated: 2026-10-27 ## Usage ```tsx import { Badge, BadgeClose, BadgeCount, BadgeDot, } from "@/components/ui/badge" ``` ```tsx Paid ``` ## Composition ```text Badge ├── BadgeDot ├── BadgeCount └── BadgeClose ``` ## Accessibility - The close button is named after the badge, so a screen reader announces “Remove design” rather than a bare “Remove”. Pass `aria-label` to override it. - `` is decorative and hidden from assistive tech. Keep the status in the text label. - `` exposes the exact value even when the visible text is capped, like 99+. - The removal and count animations are skipped when reduced motion is on. Installation, examples, theming, keyboard support, API reference and source: https://hextaui.com/docs/badge.md --- # Breadcrumb > A trail of links to the current page that wraps safely, mirrors in right-to-left layouts and expands collapsed segments in place. Canonical: https://hextaui.com/docs/breadcrumb Last updated: 2026-10-27 ## Usage ```tsx import { Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, } from "@/components/ui/breadcrumb" ``` ```tsx Home Breadcrumb ``` ## Composition ```text Breadcrumb └── BreadcrumbList ├── BreadcrumbItem │ └── BreadcrumbLink ├── BreadcrumbSeparator ├── BreadcrumbCollapse │ ├── BreadcrumbItem │ └── BreadcrumbSeparator └── BreadcrumbItem └── BreadcrumbPage ``` Installation, examples, theming, keyboard support, API reference and source: https://hextaui.com/docs/breadcrumb.md --- # Bubble > Chat message bubbles with variants, grouped corners, reactions and room for interactive content. Canonical: https://hextaui.com/docs/bubble Last updated: 2026-10-27 ## Usage ```tsx import { Bubble, BubbleContent, BubbleGroup, BubbleReactions, } from "@/components/ui/bubble" ``` ```tsx Did the deploy land? It did. ``` ## Composition ```text BubbleGroup └── Bubble ├── BubbleContent └── BubbleReactions ``` ## Accessibility - Bubbles are plain containers. Wrap a conversation in a list or a `role="log"` region if new messages should be announced. - Emoji-only reaction rows need `role="img"` and an `aria-label` that spells out the reactions. - Interactive content rendered as a button or link gets a focus ring that follows the bubble’s corners. Installation, examples, theming, keyboard support, API reference and source: https://hextaui.com/docs/bubble.md --- # Button > Buttons in every variant and size, with a built-in loading, success and error flow that skips the spinner for fast requests. Canonical: https://hextaui.com/docs/button Last updated: 2026-10-27 ## Usage ```tsx import { Button } from "@/components/ui/button" ``` ```tsx ``` With `feedback`, return a promise from `onClick` and the button shows loading, then success or error, then resets on its own. ## Accessibility - Every state change is announced through a polite live region: loading, then the success or error label. - While loading, the button sets `aria-busy` and stays focusable, so focus is never lost mid-request. - The spinner appears only after 150ms and then stays for at least 400ms, so fast requests never flash and slow ones never flicker. - With reduced motion, state labels fade instead of flipping and the error shake is skipped. Installation, examples, theming, keyboard support, API reference and source: https://hextaui.com/docs/button.md --- # Button group > Buttons joined into one control, with shared seams, separators, text addons, nesting and vertical stacks. Canonical: https://hextaui.com/docs/button-group Last updated: 2026-10-27 ## Usage ```tsx import { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, } from "@/components/ui/button-group" ``` ```tsx ``` Button group joins the buttons you already use. Install ` 12 of 20 seats used. ``` ## Composition ```text Card ├── CardHeader │ ├── CardTitle │ │ └── CardLink │ ├── CardDescription │ └── CardAction ├── CardContent └── CardFooter ``` ## Accessibility - The link’s accessible name is its own text, so keep `` inside the title rather than wrapping the whole card in an anchor. - Controls inside a clickable card are lifted above the link’s hit area, so they stay reachable by pointer and keyboard. - Use `render` on `` to give the title the heading level that fits your page. Installation, examples, theming, keyboard support, API reference and source: https://hextaui.com/docs/card.md --- # Carousel > Native scroll-snap slides with momentum on touch, mouse dragging, arrow keys, dots, thumbnails and an autoplay that pauses when it should. Canonical: https://hextaui.com/docs/carousel Last updated: 2026-10-27 ## Usage ```tsx import { Carousel, CarouselContent, CarouselDots, CarouselItem, CarouselNext, CarouselPrevious, } from "@/components/ui/carousel" ``` ```tsx ... ... ... ``` Slides scroll natively with CSS scroll snap, so touch momentum and trackpad scrolling feel like the platform. A mouse can drag, and the arrow keys move one slide at a time. ## Composition ```text Carousel ├── CarouselContent │ └── CarouselItem ├── CarouselPrevious ├── CarouselNext ├── CarouselDots ├── CarouselCounter ├── CarouselAutoplayToggle └── CarouselThumbnails └── CarouselThumbnail ``` ## Accessibility - The root is a `region` described as a carousel. Give it an `aria-label`. - Each item is a `group` described as a slide and labelled with its position, like “3 of 5”. - A polite live region announces the new slide after keyboard or button navigation, and stays quiet while autoplay runs. - Dots and thumbnails use a single tab stop, and focus follows the active one. - Previous and Next stay focusable when disabled, so focus is never lost at either end. Installation, examples, theming, keyboard support, API reference and source: https://hextaui.com/docs/carousel.md --- # Chart > Recharts charts with themed colors, a tooltip and legend that read labels from one config, and keyboard navigation with a visible focus ring. Canonical: https://hextaui.com/docs/chart Last updated: 2026-10-27 ## Usage You build charts with Recharts components and add the parts from `chart` only where you need them. Recharts is not wrapped, so its own docs and upgrade guides apply as they are. ```tsx import { Bar, BarChart, CartesianGrid, XAxis } from "recharts" import { ChartContainer, ChartLegend, ChartLegendContent, ChartTooltip, ChartTooltipContent, type ChartConfig, } from "@/components/ui/chart" ``` A `ChartConfig` maps each data key to a label, an optional icon and a color. It stays separate from the data, so one config can serve several charts. ```tsx const chartConfig = { desktop: { label: "Desktop", color: "var(--chart-1)", }, mobile: { label: "Mobile", color: "var(--chart-2)", }, } satisfies ChartConfig ``` ```tsx } /> } /> ``` Give `` a height, a `min-h-*` or an `aspect-*` so the chart can measure itself on the first render. Without one it falls back to `aspect-video`. ## Composition ```text ChartContainer └── BarChart / LineChart / AreaChart / … ├── ChartTooltip │ └── ChartTooltipContent └── ChartLegend └── ChartLegendContent ``` ## Theming Each config key becomes a `--color-KEY` variable scoped to its chart. Point it at a theme token, at any CSS color, or give it separate `light` and `dark` values. ```tsx const chartConfig = { desktop: { label: "Desktop", icon: IconDeviceDesktop, color: "var(--chart-1)", }, mobile: { label: "Mobile", theme: { light: "oklch(0.5 0.17 285)", dark: "oklch(0.75 0.14 190)", }, }, } satisfies ChartConfig ``` Use the variable wherever Recharts takes a color: on components, in your data, or in Tailwind classes. ```tsx const chartData = [ { browser: "chrome", visitors: 275, fill: "var(--color-chrome)" }, ] ``` The theme ships five chart tokens, `--chart-1` to `--chart-5`: blue, teal, amber, violet and rose. In this order, neighbouring colors stay distinct with the common forms of color blindness, and each one has at least 3:1 contrast against the light and dark backgrounds. Use them in order and keep the legend or labels on, so color is never the only cue. Keys that are not valid in a CSS name, such as `Mobile users`, become `--color-Mobile-users`. ## Accessibility - Charts are images to screen readers. Name each one with a visible title nearby or an `aria-label` on the Recharts chart, and offer a table when people need the exact values. - The tooltip and legend name every series in text, so a reader never has to match colors alone. - With reduced motion, Recharts skips its enter animations and the tooltip jumps between points instead of gliding. - Tooltip values are formatted in `en-US` unless you pass `locale`, so the server and browser render the same text. Installation, examples, theming, keyboard support, API reference and source: https://hextaui.com/docs/chart.md --- # Checkbox > A checkbox whose check draws in, with indeterminate parents, groups and labels that share its hover. Canonical: https://hextaui.com/docs/checkbox Last updated: 2026-10-27 ## Usage ```tsx import { Checkbox, CheckboxGroup } from "@/components/ui/checkbox" ``` ```tsx ``` ## Composition ```text CheckboxGroup └── Checkbox ``` ## Accessibility - Wrap the checkbox and its text in a `