Side Nav
同一画面内で縦に並ぶビューを切り替えるための、カード左端に配置する縦型ナビゲーション。選択しても URL は変わらず、同じカード内の右側の表示領域だけが切り替わります。カイクラの管理画面での利用を想定しています。
プレビュー
管理画面のサイドナビ例。1 番上の「顧客情報管理」が選択中の状態。
状態
Item は Normal / Hover / Current の 3 状態を持ちます。Current (選択中) は左に 2px の Action Primary ボーダーと 16% 透過の青背景・青文字で表示。
Normal
Hover
Current (選択中)
実装例
"use client";
import { SideNav, SideNavList, SideNavItem, SideNavPanel } from "@/components/SideNav";
export function AdminScreen() {
return (
<Card>
<SideNav defaultValue="customers">
<SideNavList ariaLabel="管理メニュー">
<SideNavItem value="customers" label="顧客情報管理" />
<SideNavItem value="users" label="システムユーザー管理" />
<SideNavItem value="calls" label="会話履歴管理" />
<SideNavItem value="settings" label="環境設定" />
</SideNavList>
<SideNavPanel value="customers">顧客情報管理の内容</SideNavPanel>
<SideNavPanel value="users">システムユーザー管理の内容</SideNavPanel>
<SideNavPanel value="calls">会話履歴管理の内容</SideNavPanel>
<SideNavPanel value="settings">環境設定の内容</SideNavPanel>
</SideNav>
</Card>
);
}仕様
Side Nav (枠)
- width272px (width/col/2)
- height配置先の高さいっぱい
- background#FFFFFF (bg/surface)
- border-right1px solid #D1D5DB (border/default)
- padding8px 0 (spacing/xxs)
- gap (項目間)0 (spacing/none)
- shadow0 1px 2px 0 rgba(31,41,55,.30) (LAYER1)
Item
- 要素button (画面遷移しないため a は使わない)
- 土台Radix Tabs (orientation=vertical)
- height40px
- padding8px 32px (spacing/xxs・spacing/m)
- gap (label ↔ chevron)8px
- chevron size12px (caret-right)
- label14px / Medium / #1F2937 (text/primary)
- Hover bgrgba(31, 41, 55, 0.08)
- Current bgrgba(0, 102, 204, 0.16)
- Current text / chevron#0066CC (action/primary)
- Current border-left2px solid #0066CC
アクセシビリティ
- コンテナrole="tablist" + aria-orientation="vertical"
- 項目role="tab" + aria-selected + aria-controls
- 表示領域role="tabpanel" + aria-labelledby (Radix が自動配線)
- キーボード↑↓ で項目を移動、Enter / Space で切り替え
- activationModemanual (矢印キーで移動しただけでは切り替わらない)
利用基準
使うべき時
- 同一画面内で縦に並ぶビューを切り替える操作に使う
- 管理画面など、切り替え対象が多く一覧性が必要な場面に使う
- 表示中のビューに対応する項目を Current 状態にする
- ラベルは切り替え先のビュー名をそのまま使い、省略しない
使わない時
- URL が変わる画面遷移に使う → Navigation-Menu を使用
- 切り替え対象が少なくナビゲーションが不要な場合に使う → Tabs を使用
- Side Nav で切り替えたビューの中で、さらに Side Nav を使う → Tabs を使用
- Current 状態の項目を同時に 2 つ以上にする