mcpField
S
shadcn-ui

shadcn-ui

github.com/jezwebデザイン・UI1.1k3.6k 回インストール3 週間前に更新
リポジトリ

shadcn-ui について

テーマ基盤を備えた React プロジェクトに shadcn/ui コンポーネントを追加、調整するスキルです。依存順序や一般的な問題への対処、再利用できる UI パターンを扱います。

主な機能

  1. 01依存関係に沿ったコンポーネント導入
  2. 02セマンティックなテーマトークンでのバリアント拡張
  3. 03一般的なコンポーネント不具合への対処
  4. 04コンポーネントを UI パターンに組み合わせ

活用シーン

  1. 01検証付きフォームとフィードバックの構築
  2. 02ソートや検索に対応したデータテーブルの作成
  3. 03CRUD ダイアログや設定ページの組み立て

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/jezweb/claude-skills --skill shadcn-ui

インストール後、Claude Code で/shadcn-uiを入力して読み込まれたか確認します。

同梱ファイルreferences/component-catalogue.mdreferences/recipes.md

詳細

shadcn/ui コンポーネント

テーマ設定済みの React プロジェクトに shadcn/ui コンポーネントを追加します。このスキルは、tailwind-theme-builder が CSS 変数、ThemeProvider、ダークモードを設定した後に実行します。コンポーネントのインストール、カスタマイズ、コンポーネントを組み合わせた実用的なパターンの構築を行います。

前提条件:テーマの基盤(CSS 変数、components.json、cn() ユーティリティ)が必要です。まだ設定されていない場合は、まず tailwind-theme-builder を使用してください。

インストール順序

依存関係の順にコンポーネントをインストールします。まず基盤コンポーネントをインストールし、その後に機能コンポーネントをインストールします。

基盤(最初にインストール)
pnpm dlx shadcn@latest add button
pnpm dlx shadcn@latest add input label
pnpm dlx shadcn@latest add card
機能コンポーネント(必要に応じてインストール)
# Forms
pnpm dlx shadcn@latest add form        # needs: react-hook-form, zod, @hookform/resolvers
pnpm dlx shadcn@latest add textarea select checkbox switch

# Feedback
pnpm dlx shadcn@latest add toast        # needs: sonner
pnpm dlx shadcn@latest add alert badge

# Overlay
pnpm dlx shadcn@latest add dialog sheet popover dropdown-menu

# Data Display
pnpm dlx shadcn@latest add table        # for data tables, also: @tanstack/react-table
pnpm dlx shadcn@latest add tabs separator avatar

# Navigation
pnpm dlx shadcn@latest add navigation-menu command
外部依存関係
コンポーネント必要な依存関係
Formreact-hook-form、zod、@hookform/resolvers
Toastsonner
Data Table@tanstack/react-table
Commandcmdk
Date Pickerdate-fns(任意)

外部依存関係は個別にインストールします:pnpm add react-hook-form zod @hookform/resolvers

既知の注意点

よくあるバグを防ぐための修正事項を記載します。

Radix Select — 空文字列は使用不可
// Don't use empty string values
<SelectItem value="">All</SelectItem>           // BREAKS

// Use sentinel value
<SelectItem value="__any__">All</SelectItem>    // WORKS
const actual = value === "__any__" ? "" : value
React Hook Form — Null 値
// Don't spread {...field} — it passes null which Input rejects
<Input
  value={field.value ?? ''}
  onChange={field.onChange}
  onBlur={field.onBlur}
  name={field.name}
  ref={field.ref}
/>
Lucide Icons — ツリーシェイキング
// Don't use dynamic import — icons get tree-shaken in production
import * as LucideIcons from 'lucide-react'
const Icon = LucideIcons[iconName]  // BREAKS in prod

// Use explicit map
import { Home, Users, Settings, type LucideIcon } from 'lucide-react'
const ICON_MAP: Record<string, LucideIcon> = { Home, Users, Settings }
const Icon = ICON_MAP[iconName]
Dialog の幅のオーバーライド
// Default sm:max-w-lg won't be overridden by max-w-6xl
<DialogContent className="max-w-6xl">       // DOESN'T WORK

// Use same breakpoint prefix
<DialogContent className="sm:max-w-6xl">    // WORKS

コンポーネントのカスタマイズ

shadcn コンポーネントは、テーマのセマンティック CSS トークンを使用します。カスタマイズするには:

バリアントの拡張

src/components/ui/ 内のコンポーネントファイルを編集して、カスタムバリアントを追加します。

// button.tsx — add a "brand" variant
const buttonVariants = cva("...", {
  variants: {
    variant: {
      default: "bg-primary text-primary-foreground",
      brand: "bg-brand text-brand-foreground hover:bg-brand/90",
      // ... existing variants
    },
  },
})
色のオーバーライド

テーマのセマンティックトークンを使用し、Tailwind の色を直接指定しないでください。

// Don't use raw colours
<Button className="bg-blue-500">             // WRONG

// Use semantic tokens
<Button className="bg-primary">              // RIGHT
<Card className="bg-card text-card-foreground">  // RIGHT

ワークフロー

ステップ 1:必要なコンポーネントを確認する

プロジェクトに必要な UI パターンを判断します。

必要なものコンポーネント
バリデーション付きフォームForm, Input, Label, Select, Textarea, Button, Toast
ソート可能なデータ表示Table, Badge, Pagination
管理用 CRUD インターフェースDialog, Form, Table, Button, Toast
マーケティング/ランディングページCard, Button, Badge, Separator
設定/環境設定Tabs, Form, Switch, Select, Toast
ナビゲーションNavigationMenu(デスクトップ)、Sheet(モバイル)、ModeToggle
ステップ 2:コンポーネントをインストールする

まず基盤コンポーネントをインストールし、次に特定したニーズに応じて機能コンポーネントをインストールします。上記のコマンドを使用してください。

ステップ 3:レシピを構築する

コンポーネントを組み合わせて、実用的なパターンを構築します。動作する完全な例は references/recipes.md を参照してください。

  • お問い合わせフォーム — Form + Input + Textarea + Button + Toast
  • データテーブル — Table + 列のソート + Pagination + 検索
  • モーダル CRUD — Dialog + Form + Button
  • ナビゲーション — Sheet + NavigationMenu + ModeToggle
  • 設定ページ — Tabs + Form + Switch + Select + Toast
ステップ 4:カスタマイズする

テーマのセマンティックトークンを使用して、プロジェクト固有の色とバリアントを適用します。

参考ファイル

用途参照先
コンポーネントの選択、インストールコマンド、propsreferences/component-catalogue.md
UI パターン全体の構築references/recipes.md

コメント