Foundation
PackagesUIComponentsButtons

IconLinkButton

アイコンのみで構成されるリンクコンポーネント。省スペースなナビゲーションに使用する。

いつ使うか

  • アイコンだけで遷移先が十分に伝わるナビゲーションに使用する(ホーム、設定、外部リンク等)
  • テーブル行やツールバーなど、スペースが限られた箇所でのページ遷移に使用する
  • 見た目はアイコンボタンだが、意味的にはナビゲーションである場合に使用する

いつ使わないか

  • アイコンだけでは遷移先が伝わりにくい場合は使わない。ActionLinkButton でテキストラベル付きのリンクを使用する
  • ページ遷移を伴わないアクション(送信、削除等)には使わない。IconButton を使用する
  • インラインのテキストリンクには使わない。テキストリンクコンポーネントを使用する

Usage

import { IconLinkButton } from '@bi-shop-it/ui/icon-link-button';

<IconLinkButton aria-label="ホームへ" href="/" icon="Home" />;

UIProviderの設定

IconLinkButtonUIProvider から注入されたリンクコンポーネントを使用する。Next.jsの場合は next/link を注入することで、クライアントサイドナビゲーションが有効になる。

// app/layout.tsx
import { UIProvider } from '@bi-shop-it/ui/provider';
import Link from 'next/link';

const RootLayout = ({ children }) => (
  <UIProvider linkComponent={Link}>{children}</UIProvider>
);

UIProvider を設定しない場合は、通常の <a> タグとして動作する。

Props

Propデフォルト説明
aria-labelstring必須。スクリーンリーダーに読み上げられるリンクの説明
hrefstring遷移先のURL
iconIconName表示するアイコン名
variant'primary' | 'secondary' | 'destructive' | 'ghost' | 'outline''ghost'ボタンのスタイル
size'sm' | 'md' | 'lg''md'ボタンのサイズ

状態

デフォルト

<IconLinkButton aria-label="ホームへ" href="/" icon="Home" />

Variants

<IconLinkButton aria-label="ホームへ" href="/" icon="Home" variant="primary" />
<IconLinkButton aria-label="ダウンロード" href="/download" icon="Download" variant="secondary" />
<IconLinkButton aria-label="削除ページへ" href="/delete" icon="Trash2" variant="destructive" />
<IconLinkButton aria-label="詳細を見る" href="/detail" icon="ExternalLink" variant="ghost" />
<IconLinkButton aria-label="設定" href="/settings" icon="Settings" variant="outline" />

Size

<IconLinkButton aria-label="設定" href="/settings" icon="Settings" size="sm" variant="outline" />
<IconLinkButton aria-label="設定" href="/settings" icon="Settings" size="md" variant="outline" />
<IconLinkButton aria-label="設定" href="/settings" icon="Settings" size="lg" variant="outline" />

IconButton との使い分け

基準IconButtonIconLinkButton
目的アクション実行(編集、削除、コピー)ページ遷移(ホーム、設定、外部リンク)
HTML要素<button><a>(UIProvider経由で next/link 等)
isLoadingありなし
disabledありなし
onClickありなし
hrefなしあり

アクセシビリティ

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

  • <a> 要素として描画されるため、スクリーンリーダーがリンクとして認識する
  • aria-label<a> 要素に付与し、アイコンのみでもアクセシブルネームを提供する

利用者が対応すること

  • aria-label に遷移先が明確に伝わるテキストを指定すること(「ホームへ」「設定を開く」等。「リンク」「アイコン」は避ける)
  • アイコンだけでは遷移先が伝わりにくい場合は、ActionLinkButton の使用を検討すること
  • Tooltip と組み合わせて、ホバー時に遷移先を視覚的にも伝えることを推奨する

関連コンポーネント

  • IconButton — ページ遷移を伴わないアイコンボタン。アクション実行に使用する
  • ActionLinkButton — テキストラベル付きのリンクボタン。遷移先を明示したい場合に使用する

On this page