Button
A focusable, disable-able discrete command control.
Overview and interactive previews for the unstyled Base prototype library.
Base prescribes no default visual language. It provides testable interaction semantics that can move across hosts. Each card below shows one basic demo for quick browsing; API documentation and code examples stay on the individual prototype pages.
The Base entities currently remain in the draft catalog lifecycle. These previews describe the current official working surface, not a frozen stable API guarantee.
The stable 0.2.0 package exports 16 intentionally documented component families: Button, Toggle, Switch, Tabs, Checkbox, Dialog, Dropdown Menu, Select, Hover Card, Tooltip, Transition, Separator, Scroll Area, Textarea, Live Region, and Async Region. Non-component behaviors and tools exports are library utilities and do not require component detail routes.
Package exports and the CLI registry are related but not identical inventories. The CLI calls the package’s dropdown family base-dropdown; its base-tabs facade currently omits the optional Indicator authoring surface; and it has no base-scroll-area facade, while exposing the complete brutalist-scroll-area projection. Those differences are stated on the affected detail pages instead of being hidden or treated as missing protocols.
For interactive families, the Base prototype should stop at semantics that are broadly reusable. For Dropdown Menu, that boundary is:
closeOnItemCommit / closeOnCommit, openEntry / openEntryValue)It does not, at this layer, define persistent selection, checkbox/radio item semantics, or submenu anatomy. The transient active navigation state is kept internal for now instead of being committed as root API. Those should be composed above base prototypes instead of being precommitted here.
select is the current probe for a slightly different boundary: it still stays protocol-first, but it explicitly keeps a value presentation part inside the family. That part is used to validate Proto UI’s current value-class component path, where selected text is owned by the prototype and refreshed through explicit update-driven re-render instead of being pushed entirely to the host app.
radio-group validates group-owned single selection without borrowing Checkbox’s item-local toggle ownership or claiming native form behavior. Root preserves empty and unmatched values, Collection and Focus Roving coordinate selected-or-first entry and wrapped keyboard movement, Items derive their radio state, and Indicators remain visual-only descendants.
textarea exercises a host-mediated native-control boundary: Root owns one logical multiline editor while its renderer stays contentless, and the adapter selects the physical host target. The current Web profile uses one native textarea across Web Component, React, and Vue. It keeps controlled/uncontrolled ownership stable, normalizes input/change/IME signals, preserves the active editing session, restores unaccepted controlled proposals after composition, and projects properties, focus, and accessibility without claiming form submission, rich text, auto-resize, system editing chrome, or live-region semantics.
Base Table has a draft passive-structure protocol, a host-neutral Table Structure Module, five Base identities, and bounded Web Component ARIA projection evidence. It is not part of the released 0.2 package inventory, CLI facades, or interactive previews. React, Vue, Vue 2, CLI, and design-language work remain planned; the current slice is not a stable or cross-Adapter conformance claim.
A focusable, disable-able discrete command control.
A button-like control with persistent active state.
A root-owned on/off value control.
Single selection, focus navigation, and panel projection.
Checkbox state with an Indicator projection.
Group-owned selection, roving focus, and derived Indicators.
Modal layering, close requests, and focus return.
Collection navigation, typeahead, and commit-close behavior.
Value selection, list navigation, and value display.
A pointer- and focus-driven non-modal overlay.
Delay, warm-window, and accessible-description coordination.
Enter, exit, and presence lifecycle semantics.
Non-interactive orientation and decorative separation semantics.
A viewport-owned, host-projected scrolling domain.
Controlled status and alert announcement channels.
Busy-state projection and asynchronous result announcements.
Host-mediated native multiline text editing.
Host-owned images, alternative text, and loading status.