サイドバー・ドロワーナビゲーション

折りたたみ対応のサイドバーとオーバーレイ型ドロワーを、Mantine・Ant Design・shadcn/ui・MUI・Chakra UI の5種で比較します。 各デモではサイドバーの折りたたみ(アイコンのみ)とドロワー(オーバーレイ)の2パターンを操作できます。

Mantine

NavLink コンポーネントでグループ化されたナビゲーションを構築。Drawer コンポーネントでオーバーレイ型のモバイルナビゲーションも提供。Badge との組み合わせで通知数の表示も容易。

NavLinkDrawerBadgeProvider必須
読み込み中...
tsx
'use client';
import { MantineProvider, NavLink } from '@mantine/core';
import { useState } from 'react';
import '@mantine/core/styles.css';

const navItems = [
  { label: 'ダッシュボード', icon: '📊' },
  { label: 'ユーザー管理', icon: '👥' },
  { label: '設定', icon: '⚙️' },
];

export function MantineSidebarDemo() {
  const [active, setActive] = useState('ダッシュボード');
  return (
    <MantineProvider>
      <div style={{ display: 'flex', height: '100vh' }}>
        <nav style={{ width: 220, background: '#f8fafc', borderRight: '1px solid #e2e8f0', padding: 16 }}>
          {navItems.map((item) => (
            <NavLink
              key={item.label}
              label={item.label}
              leftSection={<span>{item.icon}</span>}
              active={active === item.label}
              onClick={() => setActive(item.label)}
            />
          ))}
        </nav>
        <main style={{ flex: 1, padding: 24 }}>メインコンテンツ</main>
      </div>
    </MantineProvider>
  );
}

🤖 AIプロンプトテンプレート

React + Tailwind CSSで、Mantineを使ったサイドバー・ドロワーナビゲーションUIを実装してください。
- 使用ライブラリ: @mantine/core の NavLink / Drawer / Badge / AppShell、MantineProvider必須
- NavLink の active / variant props でアクティブ項目をハイライトする
- NavLink に leftSection / rightSection を使ってアイコンとバッジ(通知数)を配置する
- セクションラベルで項目をグループ分けして表示する
- Drawer コンポーネントでオーバーレイ型のモバイルナビゲーションを実装し、背景クリックで閉じる
- CSS transition でサイドバーの折りたたみ(アイコンのみ表示)アニメーションを実装する

⚠️ このプロンプトはあくまでたたき台です。AIの回答はモデルやバージョン、会話の文脈によって毎回異なります。意図通りに動かない場合は、条件を追記・修正してお使いください。

ライブラリ比較

項目MantineAnt DesignShadcn/uiMUIChakra UI
サイドバーNavLink 組み合わせLayout.Sider + MenuTailwind 自前実装✅ Drawer コンポーネントTailwind で自前実装
ドロワー✅ Drawer コンポーネント✅ Drawer コンポーネント✅ Sheet(自前実装)✅ Drawer(temporary)✅ Drawer.Root / Content
折りたたみ✅ 手動制御✅ collapsible prop✅ CSS transition⚠️ 手動実装(width切り替え)✅ CSS transition で制御
グループ分け✅ セクション手動✅ Menu type=group✅ 自前マークアップ✅ Divider で区切り✅ 自前マークアップ
バッジ通知✅ Badge コンポーネント✅ Badge コンポーネント✅ 自前スタイル✅ ListItemIcon で対応✅ 自前スタイル
アニメーションCSS transitionCSS transition(組み込み)CSS transition / keyframes✅ デフォルトで付与✅ 組み込み
カスタマイズ性中(style上書き)中(token + CSS)高(完全自前)中(sx prop)✅ emotion + Tailwind で対応

選択のポイント

  • Mantine — NavLink のactive/variant 切り替えが便利で、Drawer も Provider 内で簡単に呼び出せる。サイドバーとドロワーを統一的に管理したい場合に最適。
  • Shadcn/ui — Provider不要でバンドルサイズが最小。Tailwind CSS との親和性が高く、アニメーションやレイアウトを完全に制御したい場合に最適。既存のデザインシステムに合わせやすい。
  • Ant Design — Menu の grouping やネスト構造を宣言的に記述できる。Sider の collapsible 制御が組み込みで、管理画面やエンタープライズ向けに安定した選択肢。
  • Chakra UI — Drawer.Root / Backdrop / Content の複合パターンでオーバーレイナビゲーションを実装。 placement で4方向の展開に対応し、Portal でDOM外にレンダリングするため z-index 問題が起きにくい。 サイドバー本体は Tailwind で自前実装し、ドロワーに Chakra UI を組み合わせる構成が相性よい。
  • MUI — 週670万DLと圧倒的なシェアを誇るMaterial Design準拠のライブラリ。エンタープライズ〜スタートアップまで幅広く採用され、ドキュメントや事例が豊富。Emotion(CSS-in-JS)を使用するため、Tailwind CSS v4との併用時はスタイルをMUI側のpropsで制御することを推奨。

サイドバーは、画面の左右に固定または開閉できるナビゲーションパネルUI。メニュー項目・フィルター・コンテンツ目次などを縦方向に並べる。

管理画面・ドキュメントサイト・ECサイトのカテゴリフィルターなど、階層的なナビゲーションが必要なページで使われる。

主なバリエーション
  • 固定型(常に表示)
  • オーバーレイ型(画面に重なって表示)
  • コラプシブル型(アイコンのみ表示に縮小)
  • レスポンシブ型(スマホでドロワー化)
  • ミニバリアント型(アイコン+ホバーで展開)