Accordion
Compare one-open-at-a-time and independently expandable disclosure sections. Use Arrow keys, Home, End, Enter, and Space to navigate.
Hydro UI · component gallery
A hands-on catalogue of the native-first controls, disclosure patterns, overlays, and feedback primitives in Hydro UI. Try each control with a mouse, keyboard, or touch input.
Compare one-open-at-a-time and independently expandable disclosure sections. Use Arrow keys, Home, End, Enter, and Space to navigate.
Independent choices with native form behavior, including the tri-state indeterminate presentation.
The group derives its state from its member checkboxes.
Editable listboxes demonstrate prefix, contains, and unfiltered matching alongside inline completion and multiple selection. Use Select when typing is not part of the choice.
Type ca to see accent-insensitive matching. The trigger opens the custom listbox; the input stays editable.
Delete or Backspace with an empty input removes the last token.
Open the native dialog and manual modal paths to compare focus handoff, scroll lock, focus containment, and dismissal behavior.
Menu items, checkbox items, radio items, groups, separators, and disabled actions all share the same roving keyboard model.
Without close-on-select, checkbox actions leave the menu open.
Shared label, description, required, and error relationships wrap native or headless controls without taking over their behavior.
Native spinbuttons cover valid, empty, read-only, disabled, and non-empty configurations with step-aware increment controls.
Clearing this field restores its minimum on blur.
Native Popover API and manual fallback paths use the same light dismiss behavior and collision-aware placement.
Mutually exclusive choices with selection-bound roving focus. Both native and button-based radio items remain form-compatible.
Choose a delivery plan.
Select-only comboboxes support grouped options, multiple values, typeahead, disabled options, and selection-on-move.
Enter or Space toggles an option without closing the listbox.
Keyboard, pointer, and touch dragging work across horizontal, vertical, RTL, formatted, and disabled configurations.
Arrow keys change by 5; Page Up and Page Down use the large step.
Use a switch for an immediate binary setting. The native variant is the default; the button variant is a single toggle-button surface with a hidden form control.
Press Space to toggle; Enter intentionally does not toggle it.
Horizontal automatic activation and vertical manual activation share the same native tab and tabpanel semantics.
Enqueue persistent status and alert notifications to compare politeness, actions, generated close controls, positions, and the F8 focus hotkey.
Status is polite; alert is assertive. Toasts dismiss after the default duration; press F8 to focus the newest status toast.
Focus or hover a trigger to reveal supplemental, non-interactive text. These examples use all four preferred placements.
Keep component behavior headless: use the generated --hui-* aliases for visual values and target data-* or ARIA attributes for state.
.my-surface {
background: var(--hui-color-surface);
color: var(--hui-color-foreground);
border: var(--hui-border-width-thin) solid var(--hui-color-border);
}
.my-surface[data-state="open"] {
border-color: var(--hui-color-interactive);
}<div class="hidden data-[state=open]:block"
data-state="open">
Open content
</div>
<button class="aria-disabled:opacity-50"
aria-disabled="true">
Disabled action
</button>