Tabs

Tabsは、関連するコンテンツをパネルごとに切り替えて表示するナビゲーションコンポーネントです。 3つのバリアントと4つのサイズで、さまざまなレイアウトに対応します。

3
Variants
4
Sizes
2
Orientation
Radix
Base

Playground

Preview
D

Account settings content

Variant
Size
Color
Options
<Tabs defaultValue="account">
  <TabsList>
    <TabsTrigger value="account">Account</TabsTrigger>
    <TabsTrigger value="settings">Settings</TabsTrigger>
    <TabsTrigger value="notifications">Notifications</TabsTrigger>
  </TabsList>
  <TabsContent value="account">
    <p className="text-sm text-text-muted">Account settings content</p>
  </TabsContent>
  <TabsContent value="settings">
    <p className="text-sm text-text-muted">General settings content</p>
  </TabsContent>
  <TabsContent value="notifications">
    <p className="text-sm text-text-muted">Notification preferences</p>
  </TabsContent>
</Tabs>

Variants

line

Content for tab 1

enclosed

Content for tab 1

pill

Content for tab 1

Sizes

sm
高さ32px
フォント13px
横パディング12px
md
高さ36px
フォント13px
横パディング14px
default
高さ40px
フォント14px
横パディング16px
lg
高さ48px
フォント16px
横パディング24px

Features

Fitted

Account content

With Icons

Account settings

Disabled

Active tab content

API

Component Structure

Tabs— Radix Tabs
.ListProps.TriggerProps.ContentProps

Props

Tabs (Root)

defaultValueundefined
string

デフォルトで選択されるタブの値(非制御モード)

valueundefined
string

選択されたタブの値(制御モード)

onValueChangeundefined
(value: string) => void

タブ変更時のコールバック

orientation"horizontal"
"horizontal" | "vertical"

タブの向き

activationMode"automatic"
"automatic" | "manual"

タブの活性化モード(automaticはフォーカスで即切替、manualはEnter/Space)

TabsList

variant"line"
"line" | "enclosed" | "pill"

タブリストのビジュアルスタイル

size"default"
"sm" | "md" | "default" | "lg"

タブトリガーのサイズ

color"default"
"default" | "primary"

アクティブインジケーターの色(lineバリアント専用)

radius"md"
"none" | "sm" | "base" | "md" | "lg" | "xl" | "2xl" | "3xl" | "full"

角丸設定(enclosed: 上部角丸 none〜xl、pill: コンテナ角丸 全9段階)

fittedfalse
boolean

タブを親の幅いっぱいに均等配置

TabsTrigger

value
string

タブの一意な識別値(必須)

disabledfalse
boolean

タブを無効化

TabsContent

value
string

対応するタブの値(必須)

forceMountundefined
boolean

非アクティブ時もDOMに保持(アニメーション用)

Tabs vs Segmented

似たような見た目ですが、用途と構造が異なります。適切なコンポーネントを選択してください。

用途

Tabs: コンテンツナビゲーション

Segmented: 値の選択(フィルター、切替)

構造

Tabs: TabList + TabPanel の組み合わせ

Segmented: 単独コンポーネント

結果

Tabs: パネルの切替表示

Segmented: 同じエリア内のデータ変更

配置

Tabs: ページ/セクションの上部

Segmented: コンテンツ内、どこでも

Radix Primitive

Tabs: @radix-ui/react-tabs

Segmented: RadioGroup

使い分けのポイント: Tabsは「異なるコンテンツパネルを切り替える」場合に使用。 Segmentedは「同じコンテンツエリア内で表示を変える」場合に使用します。 見た目が似ている場合(Tabs pill vs Segmented default)でも、TabsContentパネルの有無で選択してください。