Skip to content
fandhe-frontendcore v0.4.3
GitHub

Tabs

fandhe-frontend-pre-styled-ui の tabs mod が提供するスタイル済み Tabs 部品です。WAI-ARIA APG の Tabs パターン(role="tablist"/"tab"/"tabpanel"・aria-selected・相互参照する aria-controls/aria-labelledby)に準拠したマークアップを SSR 時点の静的な選択状態から組み立てます。ページ内に収まるコンテンツ切り替え UI であり、他のセクションを覆うオーバーレイではないため、掲示位置を中和する専用 CSS は不要です。tabs() の第 1 引数 variant(TabsVariant)で下線スタイル(Line、既定)とセグメント/ピル型スタイル(Enclosed、shadcn/ui 既定 variant 相当)を選べます。

関連 API: fandhe-frontend-pre-styled-ui API / fandhe-frontend-headless-ui API

Demo

headless-ui の Tabs(WAI-ARIA Tabs パターン)に pre-styled-ui の data-scope / data-part セレクタ CSS を適用した静的掲示です。variant(line/enclosed)を選べます。

選択中のタブは data-state="active" で強調されます。

Enclosed は選択中 trigger を白背景 + 微小な影で浮き上がらせます。

vertical 対応の Enclosed(区切り線なし・全角丸)。

Features

  • WAI-ARIA APG の Tabs パターン(role="tablist"/"tab"/"tabpanel"、aria-selected、相互参照する aria-controls/aria-labelledby、roving tabindex)に準拠したマークアップを組み立てる。
  • root / list / trigger / content の 4 パーツに加え、選択タブの位置を示す装飾パーツ indicator(opt-in)を持つ 5 パーツ構成。
  • ActivationMode(Automatic/Manual)と Orientation(Horizontal/Vertical)を data-activation-mode / data-orientation として出力する。
  • size / color-palette variant で root にクラスを付与する。
  • data-orientation="vertical" 時は list の下線を右罫線へ、trigger の下線を右側の強調線へ切り替えて縦並び表示する(イシュー #1542)。
  • hover(背景・文字色)・disabled(data-disabled、半透明表示)・focus-visible(trigger/content 双方)を視覚的に反映する(イシュー #1542)。
  • variant で下線スタイル(Line、既定)とセグメント/ピル型スタイル(Enclosed、shadcn/ui 既定 variant 相当。list を淡色の角丸コンテナに、選択中 trigger を白背景 + 微小な影で浮き上がらせる)を選べる(イシュー #2039)。

Anatomy

root
  list
    trigger
  content

API Reference

Arguments

NameTypeDefaultDescription
variantTabsVariantTabsVariant::Lineroot へ付与する見た目 variant(Line/Enclosed)。
sizeSizeSize::Mdroot へ付与するサイズ variant。
paletteColorPalette—root へ付与する配色 variant。
props&TabsProps<'_>—id/selected/orientation/activation_mode/loop_focus/indicator を束ねる SSR 静的設定値。

Data Attributes

PartAttributeObserved Values
contentdata-orientationhorizontal, vertical
contentdata-stateactive, inactive
listdata-activation-modeautomatic
listdata-loop-focustrue
listdata-orientationhorizontal, vertical
rootdata-orientationhorizontal, vertical
triggerdata-disabled(値なし)
triggerdata-orientationhorizontal, vertical
triggerdata-stateactive, inactive
triggerdata-valuearchived, overview, usage

CSS Variables

VariableDefault
--fandhe-tabs-content-paddingvar(--fandhe-space-4) 0
--fandhe-tabs-content-padding-inlinevar(--fandhe-space-4)
--fandhe-tabs-font-sizevar(--fandhe-font-font-size-sm)
--fandhe-tabs-hover-bgvar(--fandhe-color-bg-muted)
--fandhe-tabs-list-backgroundtransparent
--fandhe-tabs-list-border-bottom1px solid var(--fandhe-color-border)
--fandhe-tabs-list-padding0
--fandhe-tabs-list-radius0
--fandhe-tabs-trigger-active-backgroundtransparent
--fandhe-tabs-trigger-active-shadownone
--fandhe-tabs-trigger-backgroundtransparent
--fandhe-tabs-trigger-border-bottom2px solid transparent
--fandhe-tabs-trigger-margin-bottom-1px
--fandhe-tabs-trigger-paddingvar(--fandhe-space-2) var(--fandhe-space-4)
--fandhe-tabs-trigger-radiusvar(--fandhe-radius-sm, 0.25rem) var(--fandhe-radius-sm, 0.25rem) 0 0
--fandhe-tabs-vertical-list-border-inline-end1px solid var(--fandhe-color-border)
--fandhe-tabs-vertical-trigger-border-inline-end2px solid transparent
--fandhe-tabs-vertical-trigger-margin-inline-end-1px
--fandhe-tabs-vertical-trigger-radius-end0
--fandhe-tabs-vertical-trigger-radius-startvar(--fandhe-radius-sm, 0.25rem)

Accessibility

WAI-ARIA

AttributeDescription
role="tablist" / aria-orientationlist に付与。
role="tab" / aria-selected / aria-controlstrigger に付与。選択状態と対応する content の id を表す。
role="tabpanel" / aria-labelledbycontent に付与。対応する trigger の id を指す。