Basics
Input
Text input with label, hint, error, clearable, prefix/suffix slots, and multiline (textarea) mode.
<z-input label="Username" placeholder="Enter username" clearable>
<span slot="prefix">@</span>
</z-input>
<z-input label="Password" type="password"></z-input>
<z-input label="Bio" multiline></z-input>
Select
Dropdown select with keyboard navigation. Uses FloatingPosition + FocusTrap primitives.
<z-select placeholder="Choose a fruit...">
<z-option value="apple">Apple</z-option>
<z-option value="banana">Banana</z-option>
</z-select>
<!-- 前端搜索:searchable 即可 -->
<z-select searchable placeholder="Search a country...">
<z-option value="cn">China</z-option>
<z-option value="us">United States</z-option>
</z-select>
<!-- 后端搜索:search-mode="backend",监听 z-search 自行 fetch,替换 z-option -->
<z-select searchable search-mode="backend"></z-select>
// 或使用回调(property,返回 Promise 时自动重建选项并管理 loading)
select.remoteMethod = async (q) => fetch(`/api/options?q=${q}`).json()
Checkbox
Standard checkbox with indeterminate state support.
<z-checkbox value="agree">I agree</z-checkbox>
<z-checkbox checked>Pre-checked</z-checkbox>
<z-checkbox disabled>Disabled</z-checkbox>
Radio / RadioGroup
Radio buttons managed by a RadioGroup container. Supports vertical and horizontal layouts, keyboard navigation.
Vertical (default)
Horizontal
<z-radio-group name="fruit" value="apple">
<z-radio value="apple">Apple</z-radio>
<z-radio value="banana">Banana</z-radio>
</z-radio-group>
<!-- horizontal layout -->
<z-radio-group orientation="horizontal">...</z-radio-group>
Switch
Toggle switch with smooth thumb animation. Two sizes, supports form participation via hidden native input.
<z-switch>Wi-Fi</z-switch>
<z-switch size="sm">Small switch</z-switch>
<z-switch checked disabled>Disabled on</z-switch>