Foundation
PackagesUIComponentsBadges

Tag

カテゴリ分類を視覚的に区別するためのタグコンポーネント。色に意味はなく、分類の識別に使用する。

いつ使うか

  • レコードやアイテムのカテゴリ・分類を視覚的に区別するときに使用する(「staff」「manager」等)
  • テーブルの行やカード内で、項目のカテゴリをインラインで表示するときに使用する
  • 同じ画面に複数のカテゴリが並ぶとき、色で視覚的に区別できるようにする

いつ使わないか

  • 状態の意味(成功・警告・エラー等)を伝えるには StatusBadge を使用する
  • ユーザーがクリックして操作するものには使わない。ボタンやリンクを使用する
  • 数値カウント(通知バッジ等)の表示には使わない

Usage

import { Tag } from '@bi-shop-it/ui/tag';

<Tag label="staff" />
<Tag color="purple" label="manager" />
<Tag color="teal" label="admin" variant="subtle" />

Props

Propデフォルト説明
labelstringタグに表示するテキスト
color'amber' | 'blue' | 'lime' | 'neutral' | 'pink' | 'purple' | 'teal''blue'タグの色。意味ではなく視覚的な区別のために使う
iconIconNameラベルの前に表示するアイコン名
variant'solid' | 'subtle' | 'ghost''solid'視覚的な重み。solid が最も強く、ghost が最も控えめ

variant の使い分け

variant で視覚的な重みを3段階に制御する。同じ画面内でカテゴリの重要度に差をつけたいときに使い分ける。

variant見た目視覚的重み
solid背景色 + ボーダー + テキスト
subtle背景色 + テキスト
ghostテキスト色のみ
solidsubtleghost
<Tag color="blue" label="solid" variant="solid" />
<Tag color="blue" label="subtle" variant="subtle" />
<Tag color="blue" label="ghost" variant="ghost" />

使用例: シフト管理での視覚的階層

勤務タイプなど、同一カテゴリ内で重要度に差がある場合に variant を使い分ける。

勤務有給公休
<Tag color="blue" label="勤務" variant="solid" />
<Tag color="amber" label="有給" variant="subtle" />
<Tag color="neutral" label="公休" variant="ghost" />

color の使い分け

7色のカラーが用意されている。色自体に意味はなく、カテゴリ同士を視覚的に区別するために使い分ける。neutral は低優先度のラベルに適している。

amberlimetealbluepurplepinkneutral
<Tag color="amber" label="amber" />
<Tag color="lime" label="lime" />
<Tag color="teal" label="teal" />
<Tag color="blue" label="blue" />
<Tag color="purple" label="purple" />
<Tag color="pink" label="pink" />
<Tag color="neutral" label="neutral" />

状態

デフォルト

staff
<Tag label="staff" />

With Icon

icon にアイコン名を文字列で指定する。アイコンは装飾的要素として扱われ、aria-hidden="true" が自動付与される。

staffmanageradminguest
<Tag color="blue" icon="User" label="staff" />
<Tag color="purple" icon="Star" label="manager" />
<Tag color="teal" icon="Settings" label="admin" />
<Tag color="amber" icon="LogIn" label="guest" />

ドメインカテゴリのマッピング例

Tag の color はドメインに依存しない。アプリケーション側でドメインカテゴリを color にマッピングして使用する。

staffmanageradminguest
import type { TagColor } from '@bi-shop-it/ui/tag';

// ドメインカテゴリと color のマッピング
const roleColorMap: Record<string, { label: string; color: TagColor }> = {
  staff: { label: 'staff', color: 'blue' },
  manager: { label: 'manager', color: 'purple' },
  admin: { label: 'admin', color: 'teal' },
  guest: { label: 'guest', color: 'amber' },
};

// 使用例
const role = roleColorMap[user.role];
<Tag color={role.color} label={role.label} />;

StatusBadge との使い分け

StatusBadgeTag
目的状態の意味を伝えるカテゴリの視覚的区別
色の意味あり(success = 成功、destructive = エラー等)なし(色はアプリ側で自由に割り当てる)
Prop 名variantcolor + variant
使用例「承認済み」「却下」「レビュー中」「staff」「manager」「admin」

アクセシビリティ

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

  • 装飾アイコンに aria-hidden="true" を自動付与し、スクリーンリーダーから隠す
  • label テキストがスクリーンリーダーで読み上げられるため、色だけに依存しない情報伝達を保証する

利用者が対応すること

  • label はカテゴリの意味が伝わるテキストにすること(色名は避ける)
  • 色の違いだけでカテゴリを区別させない。テキストラベルで必ず意味を伝えること

関連コンポーネント

  • StatusBadge — 状態の意味(成功・警告・エラー等)を伝えるバッジ。Tag は意味を持たない分類用

On this page