# Docs - [Introduction](/docs): Zyeon UI — components with source, prompt, and concept map included. - **Buttons** - [Effect Button](/docs/buttons/effect-button): One button, seven visual effects — shimmer, shine, spotlight, glow, gradient, glass and ripple as cva variants. - [Stateful Button](/docs/buttons/stateful-button): An action button with a built-in idle → loading → success/error state machine — stable width, live-region announcements, auto-reset. - [Slide to Confirm](/docs/buttons/slide-to-confirm): A drag-to-the-end confirmation control — a track and thumb that replace a risky one-tap action with a deliberate slide gesture. - [Theme Toggle](/docs/buttons/theme-toggle-button): A sun/moon theme toggle button with a rotate-and-scale cross-fade — fully controlled and host-agnostic, wire it to any theme provider. - [Magnetic Button](/docs/buttons/magnetic-button): A button that drifts toward the cursor within a sensing radius, then springs back on leave. - [Copy Button](/docs/buttons/copy-button): A ghost icon or label button that writes text to the clipboard and flashes a timed "Copied" confirmation. - [Scroll to Top](/docs/buttons/scroll-to-top): A floating button that fades in past a scroll threshold and smoothly scrolls its container back to the top. - [Like Button](/docs/buttons/like-button): A social toggle that fills its icon, bursts a ring of particles and rolls the counter on every tap. - [Share Button](/docs/buttons/share-button): A share trigger whose targets fan out on an arc or a rail, one 40ms step apart, with outside-click and Esc dismissal. - [Download Button](/docs/buttons/download-button): A download CTA that fills like a liquid gauge as the transfer advances, then settles into a checked or retryable state. - [Split Button](/docs/buttons/split-button): A primary action welded to an arrow segment that opens its own keyboard-navigable action menu. - [Gradient Border Button](/docs/buttons/gradient-border-button): A rotating conic-gradient ring around a solid core, so the border carries the colour and the label keeps full contrast. - [FAB Menu](/docs/buttons/fab-menu): A floating action button that fans a labelled column of secondary actions upward, with staggered entry and focus handling. - [Hold to Confirm](/docs/buttons/hold-to-confirm): A press-and-hold confirmation button — a charge bar that replaces a risky one-tap action with a deliberate hold gesture. - [Border Trace Button](/docs/buttons/border-trace-button): A native button whose token-colored border segment traces the control on hover or keyboard focus. - [Install PWA Button](/docs/buttons/install-pwa-button): An "Install app" button that catches beforeinstallprompt at module scope, hides itself when it cannot act, and falls back to written steps on iOS. - [Record Button](/docs/buttons/record-button): A record control with a real idle → recording → processing → done state machine, drift-free elapsed timer, and an optional hold-to-record gesture with slide-away cancel. - [Button Group](/docs/buttons/button-group): A welded row or column of independent actions — 1px seams, outer corners only, an unclipped focus ring, and a measured unweld when the row stops fitting. - [Toggle Group](/docs/buttons/toggle-group): A row or column of independent aria-pressed toggles — one tab stop per option, optional min/max limits that refuse out loud, and per-item disabled reasons. - [Export Button](/docs/buttons/export-button): An export menu for a data table — row scope, a column subset, a live size estimate on every format, and a row that generates, ticks or turns into Retry without the menu closing under it. - [Oauth Buttons](/docs/buttons/oauth-buttons): A third-party sign-in row whose brand colours arrive as props — one provider goes in flight, the rest lock without ever going natively disabled, and the last-used one stays marked. - [Payment Buttons](/docs/buttons/payment-buttons): An express-checkout wallet row — availability decides what is offered at all, brand paint and marks arrive as props, and a dismissed sheet is never dressed up as a failure. - [Print Button](/docs/buttons/print-button): A print trigger that prepares the page before the dialog opens — a cancellable async hook, a print scope class, and a restore raced between afterprint, the print media query and a timeout. - [Follow Button](/docs/buttons/follow-button): A follow / unfollow toggle with the hover-to-unfollow reveal, an optimistic follower count that rolls back when the request is refused, and a busy state that never uses native disabled. - [Vote Buttons](/docs/buttons/vote-buttons): An up and down vote pair with the score between them — exclusive directions, optimistic score maths where a swap is worth two points, and a rollback when the server refuses. - [Add to Calendar](/docs/buttons/add-to-calendar): A split button that writes one event to Google, Outlook, Office 365 or Yahoo — and generates a spec-correct .ics in the browser for Apple Calendar and everything else. - **Inputs** - [Rating](/docs/inputs/rating): A star rating that is both an accessible input (whole or half steps) and a fractional read-only display. - [Tags Input](/docs/inputs/tags-input): A chips input for free-form multi-value entry — Enter or comma commits, paste splits, duplicates shake, maxTags caps with a counter. - [Dropzone](/docs/inputs/dropzone): A drag-and-drop file picker built on a native file input — per-file accept, size and count validation with visible rejection reasons. - [Password Input](/docs/inputs/password-input): A styled password field with a show/hide toggle and an optional heuristic strength meter. - [Search Input](/docs/inputs/search-input): A styled search field with an icon, a clear button that appears once there's a value, an optional loading spinner, and a decorative shortcut hint. - [Autosize Textarea](/docs/inputs/autosize-textarea): A textarea that grows with its content, from a minimum row count up to a capped maximum before it scrolls internally. - [Number Input](/docs/inputs/number-input): A capsule quantity stepper — decrement/input/increment — with clamping, boundary-disabled buttons, and keyboard arrow stepping. - [Swatch Picker](/docs/inputs/swatch-picker): An accessible grid of preset color swatches — radiogroup semantics, roving tabindex, and a contrast-safe selected check mark. - [OTP Input](/docs/inputs/otp-input): A segmented verification-code field with auto-advance, paste-to-fill, optional grouping and masking. - [Range Slider](/docs/inputs/range-slider): A two-thumb range selector with a minimum gap, value bubbles, marks and full keyboard control. - [Toggle Switch](/docs/inputs/toggle-switch): A switch with a sliding knob, Check/X icons fading inside the track, three sizes and a loading state. - [Currency Input](/docs/inputs/currency-input): A money field that stays raw while you type and normalizes with Intl.NumberFormat on blur — grouping, fixed decimals, clamping, and a number | null value. - [Phone Input](/docs/inputs/phone-input): A country dial-code picker fused to a number field — searchable self-drawn listbox, keyboard driven, emitting an E.164 string on every change. - [Inline Edit](/docs/inputs/inline-edit): Click-to-edit text that swaps a button for an input in place — pending state on async saves, rollback with the failure reason, and no width jump. - [Choice Cards](/docs/inputs/choice-cards): A card-shaped radio or checkbox group — icon, title, description and badge per option, with roving-tabindex keyboard selection. - [Filter Chips](/docs/inputs/filter-chips): A wrapping row of toggle chips for narrowing a list — per-facet counts, single or multi select, and a Clear all that only appears when something is on. - [Signature Pad](/docs/inputs/signature-pad): A canvas signature capture surface with pointer-drawn strokes, undo/clear, and a PNG data URL export. - [Combobox](/docs/inputs/combobox): A searchable dropdown selector — single or multi-select, grouped, creatable, with keyboard-driven filtering. - [Date Range Picker](/docs/inputs/date-range-picker): A two-month range calendar with preset shortcuts (Today / Last 7 days / Last 30 days / This month / Last month) — the standard filter for SaaS reports and dashboards. - [Time Picker](/docs/inputs/time-picker): A segmented hour:minute input — type digits or arrow-step, plus a clock-button dropdown of minuteStep candidates — always normalized to 24-hour "HH:mm" regardless of display format. - [Color Picker](/docs/inputs/color-picker): A hex-driven color picker — saturation/value area, hue and alpha sliders, a format-aware text field, quick swatches, and an optional native eyedropper. - [Prompt Input](/docs/inputs/prompt-input): An autosizing chat input with attachments, streaming stop/send, IME-safe submit and a character counter. - [Mention Input](/docs/inputs/mention-input): A plain-text textarea where a trigger character (default @) opens a caret-anchored, filtered picker — mentions, or repurposed for slash commands. - [API Key Field](/docs/inputs/api-key-field): A settings-page secret field — fixed-length mask, reveal/hide with optional auto re-mask, copy-to-clipboard with a visible failure fallback, and a two-step confirm before regenerating. - [Form Wizard](/docs/inputs/form-wizard): A multi-step form state machine — per-step validation gates (sync or async), focus moved to the first failing field, and a self-contained progress rail. - [File Upload List](/docs/inputs/file-upload-list): An upload queue — per-file progress, pause/resume, retry, cancel and remove, with a byte-weighted batch summary and throttled announcements. - [Checkbox Tree](/docs/inputs/checkbox-tree): A multi-select hierarchical picker with parent-child cascade, derived indeterminate parents, and full WAI-ARIA tree keyboard navigation. - [Duration Input](/docs/inputs/duration-input): A duration field that normalizes to seconds — segmented h/m/s spinbuttons that carry (type 90 minutes, get 1h 30m), or a free-text mode that parses "1h30", "90m" and "1:30". - [Masked Input](/docs/inputs/masked-input): A generic pattern-masked text field — 9/A/* slots with literal separators, both the masked and the bare value on every change, and a caret that survives edits in the middle of the string. - [Filter Bar](/docs/inputs/filter-bar): A composable filter bar for the toolbar above a table: an add-filter menu, one editable chip per active filter, and portalled editors for select, multiselect, date range, text and boolean fields. - [Emoji Picker](/docs/inputs/emoji-picker): A full emoji panel — category nav, search, skin tone, recents and a windowed, arrow-key-navigable grid, inline or portalled. - [Form Field](/docs/inputs/form-field): A label + control wrapper that wires id, aria-describedby, invalid, required, disabled and a character counter onto whatever control you put inside it. - [Credit Card Form](/docs/inputs/credit-card-form): Card entry with brand-aware grouping and maxLength, a Luhn check, MM/YY with a real expiry rule, blur-time errors and auto-advance — UI only, real payments belong in Stripe Elements. - [Availability Picker](/docs/inputs/availability-picker): A week × time-slot grid you brush with the pointer to declare when you are free — paint/erase strokes, keyboard painting, blocked slots and an optional group heatmap. - [Environment Variables](/docs/inputs/environment-variables): A four-state configuration panel with secret masking, explicit reveal, and guarded clipboard actions. - [Slug Input](/docs/inputs/slug-input): A URL field that transliterates the title as you type, detaches the moment you edit it by hand, and debounces an availability check with clickable -2 / -3 suggestions. - [Unit Input](/docs/inputs/unit-input): A number-plus-unit field for design tokens — 12px, 1.5rem, 50% — with arrow/wheel stepping, optional conversion on unit switch, and an auto state. - [Repeater Field](/docs/inputs/repeater-field): A generic controlled array field — add, remove, move, and drag-sort rows of any shape, with min/max clamping and stable row ids that never remount a focused input. - [Timezone Picker](/docs/inputs/timezone-picker): A searchable IANA time-zone field — ~90 zones grouped Popular / All, each row showing that zone's live local time and GMT offset, with a portalled panel that no overflow-hidden card can clip. - [Cron Input](/docs/inputs/cron-input): A visual builder for five-field cron — presets, hour/minute dropdowns and weekday/month chips write the expression, pasting an expression parses straight back into them, with a plain-English summary and the next runs underneath. - [Address Form](/docs/inputs/address-form): A postal address form whose rows, row order, labels and validation all come from the country — state dropdown and ZIP+4 in the US, postcode-first in Japan, no postal code at all in Hong Kong. - [Rich Text Toolbar](/docs/inputs/rich-text-toolbar): An editor-agnostic formatting bar — grouped toggle buttons that never steal the selection, collapse into an overflow menu, and walk on one tab stop. - [JSON Editor](/docs/inputs/json-editor): A textarea-based JSON editor with live syntax validation, exact line and column reporting, a synced line gutter, optional schema checking, and format/minify/copy/reset tools. - [Query Builder](/docs/inputs/query-builder): A recursive AND/OR condition tree — the operator menu follows the field's type, any condition can be turned into a nested group up to a depth cap, and a read-only SQL-ish expression shows exactly what the tree means. - [Pin Pad](/docs/inputs/pin-pad): A touch-first numeric keypad for PIN entry — big keys, masked dot indicator, optional shuffled layout, and pending/error states. - [Percent Allocator](/docs/inputs/percent-allocator): Split a total across rows with largest-remainder rebalancing, per-row locks and min/max limits — the shares always add up to the target exactly. - [Markdown Editor](/docs/inputs/markdown-editor): A textarea-based Markdown editor with a selection-aware toggling toolbar, ⌘B/⌘I/⌘K shortcuts and a dependency-free preview renderer. - [Language Picker](/docs/inputs/language-picker): An interface-language field that lists every option under its own name — 简体中文 next to Chinese (Simplified) — with endonym, English name and BCP 47 tag all searchable, RTL rows rendered in their own direction, optional translation completeness and a browser-language matching ladder. - [Dimension Input](/docs/inputs/dimension-input): A paired width × height field with a real aspect-ratio lock — the ratio is frozen when you lock it, and min/max rolls the edited side back instead of letting its partner escape. - [Gradient Picker](/docs/inputs/gradient-picker): A CSS gradient editor — draggable stop rail, angle dial, per-stop colour editing, and a live read-only linear/radial/conic CSS string. - [Shortcut Recorder](/docs/inputs/shortcut-recorder): A field that captures a keyboard shortcut by pressing it — swallows every key while recording, waits for a real key past the modifiers, and tells reserved combos apart from ones that would override an existing binding. - [CSV Import](/docs/inputs/csv-import): A three-step CSV importer — RFC 4180 parsing, delimiter and BOM detection, auto-guessed column mapping with duplicate and required gates, and a capped preview that reports ragged rows by line number. - [Recurrence Picker](/docs/inputs/recurrence-picker): A calendar-language repeat editor that writes an RFC 5545 RRULE — frequency, interval, weekdays, “second Tuesday” / “last day of the month”, and a Never / N times / until-date ending — with the next dates previewed from the same evaluator. - [Seat Picker](/docs/inputs/seat-picker): A zoomable SVG venue map for picking seats — arrow-key navigation across sections, rows and seats, a spoken name on every seat, shape + pattern status encoding, a list fallback, and out-loud refusals for max-seat and orphan-seat rules. - [Variant Selector](/docs/inputs/variant-selector): Multi-dimension product options resolved against a sparse SKU matrix — impossible combinations stay in place struck through, availability converges from either direction, and every dead end names the way out. - [Model Selector](/docs/inputs/model-selector): An LLM model picker where every option carries its context window, per-million input/output rate, capability set and whether your key can actually call it — and those fields drive the filtering. - [Date Picker](/docs/inputs/date-picker): A typeable single-date field with a calendar panel — Intl-driven formatting and parsing, a complete keyboard grid, and refusals that keep what you typed. - [Input Group](/docs/inputs/input-group): A composable affix shell for one field — static text, icon slots and interactive trailing controls flush inside a single border, with size, invalid and disabled flowing down to every slot. - [Icon Picker](/docs/inputs/icon-picker): A searchable icon grid in a popover — the pickable set is a name → component map you supply, paged into bounded windows, with combobox keyboard navigation and recents. - [Multi Select](/docs/inputs/multi-select): A multi-selection field: removable chips with a +N collapse in the trigger, a searchable checkbox listbox, select-all / clear, group headings, and a cap that refuses out loud. - [Checkbox Group](/docs/inputs/checkbox-group): A flat fieldset of checkboxes with a genuinely indeterminate select-all, per-row descriptions, shift-range selection, and min/max limits that answer with a message instead of a dead control. - [Assignee Picker](/docs/inputs/assignee-picker): A people picker with searchable presence-aware rows, a first-class Unassigned option, a recently-assigned shortcut group, single or multi assignment, blocked rows that say why, and four data states. - [Password Generator](/docs/inputs/password-generator): A crypto-backed password generator with a length slider, required character sets, look-alike exclusion, a live entropy readout and an explicit refusal for impossible rule sets. - [Key Value Editor](/docs/inputs/key-value-editor): An editable list of flat key/value pairs — drag or Alt+Arrow to reorder, switch a row off instead of deleting it, paste a block of Key: value lines, and see both halves of every duplicate key. - [Sort Builder](/docs/inputs/sort-builder): A multi-key sort composer — ordered field plus direction rules, drag or keyboard reprioritising, direction wording that follows the field type, and a live plain-language summary of the whole chain. - [Cascading Select](/docs/inputs/cascading-select): Dependent selects — country then region then city: each rung loads from the one above, changing an upper rung clears the lower ones out loud, and an answer for a rung the reader already left is discarded. - [Business Hours](/docs/inputs/business-hours): A weekly opening-hours editor — per-day open/closed switches, split shifts, blocks that cross midnight, overlap detection that follows the spill into the next day, and a plain-language summary. - [Datetime Picker](/docs/inputs/datetime-picker): A calendar grid beside an hour/minute/second ladder that emits one Date — min and max bound the combined instant, not the day, so the max day narrows the hours. - [Period Picker](/docs/inputs/period-picker): A whole-period picker — week, month, quarter or year — whose grid changes shape per granularity and whose value carries the resolved start and end instants. - [Code Input](/docs/inputs/code-input): A monospace code field with an aligned line gutter, indent-aware Tab, bracket auto-close, regex syntax tinting and error markers fed by a diagnostics prop. - [Matrix Rating](/docs/inputs/matrix-rating): A survey matrix: statements down the side, one shared scale across the top, one native radio group per row, a pinned scale, answered-row progress, and a stacked fallback instead of sideways scrolling. - [Transfer List](/docs/inputs/transfer-list): A dual listbox: two multi-selectable panes with per-side search and counts, move / move-all buttons between them, and a keyboard move that reports what travelled and where focus landed. - [Schema Form](/docs/inputs/schema-form): A form generated from a zod object schema — one control per field type, required markers and every verdict read from that same schema, typed values on submit, and an explicit notice for shapes it will not guess at. - [Font Picker](/docs/inputs/font-picker): A typeface field where every option is rendered in its own face — grouped sans / serif / mono / display, previewed with your own pangram, with system stacks always present and remote families fetched through an injected loader that reports loading and failure per font. - [Poll Composer](/docs/inputs/poll-composer): A create-a-poll form — a question, 2 to 10 reorderable option rows, duplicate answers marked on both halves, an allow-multiple switch, a duration menu and a live ballot preview, emitting a typed draft on every edit. - [Calculator Input](/docs/inputs/calculator-input): A number field that does arithmetic — type =2+3*4 or plain 2+3*4 and it commits 14, parsed by a hand-rolled parser that never calls eval. - [Coordinates Input](/docs/inputs/coordinates-input): A latitude/longitude pair that reads decimal degrees or DMS in either field, re-prints between the two on a toggle, names the field that leaves ±90 / ±180, and splits a pasted pair across both inputs. - [Meeting Planner](/docs/inputs/meeting-planner): Find a time across time zones — participant rows over one shared 24-hour track, a draggable column that reads the same instant in every zone, hour snapping with Shift for half hours, and working hours derived from Intl. - [Char Counter](/docs/inputs/char-counter): A character budget for any input or textarea — grapheme-accurate counting, a warning band, an explicit over-limit state, and a hard cap that trims the paste instead of swallowing it. - [Country Picker](/docs/inputs/country-picker): A country field whose value is always the ISO 3166-1 alpha-2 code — 243 countries, searchable by name, either ISO code or calling code, pinned rows on top and UN M49 region groups. - [Tax ID Input](/docs/inputs/tax-id-input): A tax identifier field that knows what it is asking for — the country picks the local name, prefix and mask, and validation runs that jurisdiction's real checksum instead of a generic regex. - [Bank Details Form](/docs/inputs/bank-details-form): Payout details whose fields follow the country — IBAN and BIC for SEPA, sort code and account number for the UK, routing and account number for the US — with a real mod-97 IBAN check, the ABA weighted checksum, and the account masked after entry. - [Username Availability](/docs/inputs/username-availability): A controlled handle field that gates a debounced availability check behind local rules, names the rule that broke, tells unreachable apart from taken, and shows the normalised handle before submit. - **Display** - [Number Ticker](/docs/display/number-ticker): A count-up number that eases from 0 to its target the first time it scrolls into view — Intl-formatted, prefix/suffix aware. - [Status Badge](/docs/display/status-badge): A presence and health indicator — colored dot or tinted pill, with status colors mapped to theme tokens and an optional liveness pulse. - [Avatar Group](/docs/display/avatar-group): An overlapping avatar stack with ring cutouts, letter fallbacks for broken images, and a computed +N overflow chip. - [Timeline](/docs/display/timeline): A contract-driven vertical timeline with done, active and upcoming milestones and four data states. - [Kbd](/docs/display/kbd): Keyboard keycap and key-combination display, rendered as real `` markup with platform-aware glyphs for mod/cmd/ctrl/alt. - [Credit Card](/docs/display/credit-card): A flippable bank card display — masked number, holder and expiry on the front, magstripe and a hidden CVC placeholder on the back. - [Accordion](/docs/display/accordion): A zero-dependency accessible disclosure list — single or multiple expansion, grid-rows animation, and full APG keyboard support. - [Empty State](/docs/display/empty-state): A centered empty-state panel — icon chip, title, description and up to two actions — for any non-data-contract blank surface. - [Chat Bubble](/docs/display/chat-bubble): A single message bubble — role-based alignment and color, avatar slot, and a bouncing typing indicator — for assembling chat and support message lists. - [Relative Time](/docs/display/relative-time): Auto-refreshing "time ago" text — renders a real `