基礎
Theme Provider
ライト・ダーク・OS 連動の表示モードを管理する部品。選んだモードを <html> の data-theme 属性に反映し、localStorage に保存して次回の表示にも引き継ぎます。アプリ全体のテーマ色の上書きもここで指定します。React と Vue 向けで、Web Components では属性と CSS 変数を直接使います。
ReactVue
Storybook で見る プレイグラウンド
使用例
<ThemeProvider
defaultMode="system"
colors={{ primary: '#115e59', 'on-primary': '#ffffff' }}
>
<App />
</ThemeProvider> 設定できる項目
| 名前 | 型 | 既定値 | 説明 |
|---|---|---|---|
children 必須 | ReactNode | — | |
defaultMode | ThemeMode | — | Initial mode before any stored preference is read. |
enablePersistence | boolean | — | Persist the user's choice to localStorage. Default: true. |
storageKey | string | — | localStorage key. Default: `lily-theme`. |
colors | ThemeColorOverrides | — | App-wide color-token overrides applied in both schemes. |
light | ThemeColorOverrides | — | App-wide color-token overrides applied only in the light scheme. |
dark | ThemeColorOverrides | — | App-wide color-token overrides applied only in the dark scheme. |
アクセシビリティ
- 文字と背景の明るさの差をしっかり取り、読みやすくしています。ライトでもダークでも、見やすさの国際基準 WCAG の最高ランク AAA(明るさの差が 7:1 以上)を満たします。
- マウスがなくても、キーボードだけですべての操作ができます。
- いまどこを操作しているかを示す枠(フォーカスの囲み)が、常にはっきり見えます。
- 利用者が「画面の動きを減らす」設定にしているときは、過剰なアニメーションを止めます。
どのコンポーネントも、だれにとっても使いやすいように、見やすさの国際基準 WCAG の最高ランク AAA(WCAG 2.1 AAA)を満たすよう作っています。