Toggle
押下状態を持つ 2 状態ボタンの unstyled 部品です。ネイティブ <button> 自身が押下状態を表し、hidden input を持たずフォーム送信に参加しません(「オン/オフ設定」を表す Switch とは異なる意味論です)。
Themes 版(fandhe-frontend-pre-styled-ui)はこの構造へ既定 CSS を追加するだけの薄いラッパーであり、CSS は持ちません。スタイル済みの表示例は Toggle を参照してください。
関連 API: fandhe-frontend-headless-ui API
Demo
枠線・余白は docs サイト側のデモ枠であり、fandhe-frontend-headless-ui 自体はスタイルを持ちません。
Features
- Root(`<button type="button">`)/Indicator の 2 anatomy パーツと、押下状態機械 `Toggle` を提供する。「ボタンの押下状態」を表し、hidden input を持たずフォーム送信に参加しない(ark-ui 準拠)。
- `data-state`(`"on"`/`"off"`)と `aria-pressed`(`"true"`/`"false"`)・`data-pressed`(存在属性)を併記する。`crate::switch::Switch` と同じ状態機械(`Checkable`)を再利用しつつ、公開 HTML の語彙は分離している。
- `indicator` は `data-state` のみを出力する最小主義パーツであり、on/off に応じた表示/非表示切り替えは styled 層 CSS の責務とする。
- 複数 Toggle 間の roving focus(矢印キー移動)は単体コンポーネントのため不要であり、本コンポーネントのスコープ外。
Anatomy
root
indicatorAPI Reference
Arguments
| Name | Type | Default | Description |
|---|---|---|---|
| pressed | bool | false | 押下状態。`data-state`(on/off)・`aria-pressed`・`data-pressed` へ反映する。 |
| disabled | bool | false | 無効化状態。ネイティブ `disabled`・`aria-disabled` 相当(`data-disabled`)を付与する。 |
Data Attributes
| Part | Attribute | Observed Values |
|---|---|---|
| indicator | data-state | on |
| root | data-pressed | |
| root | data-state | on |
Examples
無効化状態
`disabled = true` を渡すとネイティブ `disabled` 属性と `data-disabled` が付与され、フォーカス・押下操作を受け付けなくなります。
Accessibility
Keyboard Interactions
| Key | Description |
|---|---|
| Tab / Space / Enter | `root` はネイティブ `<button type="button">` であり、フォーカス・押下操作はブラウザ既定動作で成立する(`disabled` のときはフォーカス対象から除外される)。 |
WAI-ARIA
| Attribute | Description |
|---|---|
| aria-pressed | `root` へ現在の押下状態(`"true"`/`"false"`)を付与する。 |