Foundation
PackagesUIComponents

Sidebar

画面左に固定配置される縦長のナビゲーション領域。開閉によるアイコンのみ表示に対応する。

いつ使うか

  • アプリケーションの主要ナビゲーションを画面左に配置する
  • AppShellsidebar スロットに渡して使用する

いつ使わないか

  • ヘッダー内の水平ナビゲーションには使わない。Nav を使用する
  • 一時的なメニュー(右クリックメニュー等)には使わない。DropdownMenu を使用する

Usage

import { SideNav, SideNavItem } from '@bi-shop-it/ui/side-nav';
import {
  Sidebar,
  SidebarContent,
  SidebarFooter,
  SidebarHeader,
  SidebarToggle,
} from '@bi-shop-it/ui/sidebar';

<Sidebar>
  <SidebarHeader>
    <SidebarToggle />
  </SidebarHeader>
  <SidebarContent>
    <SideNav>
      <SideNavItem href="/home" icon="Home" isActive>
        ホーム
      </SideNavItem>
      <SideNavItem href="/notes" icon="File">
        読書ノート
      </SideNavItem>
    </SideNav>
  </SidebarContent>
  <SidebarFooter>
    <SideNav>
      <SideNavItem href="/settings" icon="Settings">
        設定
      </SideNavItem>
    </SideNav>
  </SidebarFooter>
</Sidebar>;

コンポーネント構成

コンポーネントエクスポート元説明
Sidebar@bi-shop-it/ui/sidebar最外殻。開閉状態を管理する
SidebarHeader@bi-shop-it/ui/sidebar上部の固定領域
SidebarContent@bi-shop-it/ui/sidebarスクロール可能な中央領域
SidebarFooter@bi-shop-it/ui/sidebar下部の固定領域
SidebarToggle@bi-shop-it/ui/sidebar開閉ボタン
SideNav@bi-shop-it/ui/side-nav縦並びナビゲーションリスト
SideNavItem@bi-shop-it/ui/side-nav個別のナビゲーションリンク

Props

Propデフォルト説明
childrenReactNodeSidebarHeader, SidebarContent, SidebarFooter を配置する
defaultCollapsedbooleanfalse初期状態で折りたたむかどうか

SidebarToggle

Propデフォルト説明
collapseLabelstring'閉じる'展開時のアクセシビリティラベル
expandLabelstring'開く'折りたたみ時のアクセシビリティラベル

SideNavItem

Propデフォルト説明
childrenReactNodeリンクのラベルテキスト
hrefstringリンク先のURL
iconIconName左側に表示するアイコン
isActivebooleanfalse現在のページかどうか

バリエーション

デフォルト

トグルボタンをクリックすると、ラベルが非表示になりアイコンのみの表示に切り替わる。

<Sidebar>
  <SidebarHeader>
    <SidebarToggle />
  </SidebarHeader>
  <SidebarContent>
    <SideNav>
      <SideNavItem href="/home" icon="Home" isActive>
        ホーム
      </SideNavItem>
      <SideNavItem href="/notes" icon="File">
        読書ノート
      </SideNavItem>
      <SideNavItem href="/search" icon="Search">
        検索
      </SideNavItem>
      <SideNavItem href="/favorites" icon="Star">
        お気に入り
      </SideNavItem>
    </SideNav>
  </SidebarContent>
  <SidebarFooter>
    <SideNav>
      <SideNavItem href="/settings" icon="Settings">
        設定
      </SideNavItem>
    </SideNav>
  </SidebarFooter>
</Sidebar>

AppShell との組み合わせ

import { AppShell } from '@bi-shop-it/ui/app-shell';

<AppShell
  header={<Header />}
  sidebar={
    <Sidebar>
      <SidebarContent>
        <SideNav>
          <SideNavItem href="/home" icon="Home">
            ホーム
          </SideNavItem>
        </SideNav>
      </SidebarContent>
    </Sidebar>
  }
>
  {children}
</AppShell>;

アクセシビリティ

コンポーネントが内部で処理すること

  • Sidebar<aside> 要素としてレンダリングされ、ランドマークとして認識される
  • SideNav<nav aria-label="サイドナビゲーション"> でランドマークを提供する
  • SideNavItem はアクティブ時に aria-current="page" を付与する
  • SidebarToggle は状態に応じた aria-label を提供する
  • アイコンに aria-hidden="true" を付与し、スクリーンリーダーから隠す

利用者が対応すること

  • 特になし

関連コンポーネント

  • Nav — ヘッダー内の水平ナビゲーションに使用する
  • AppShell — Sidebar を sidebar スロットに渡してレイアウトを構成する

On this page