Communitygithub.com

coastdigitalgroup/coastai-skills

コンパクトで排他的なセレクター(セグメントコントロールやボタングループ)のための体系的なフレームワークを設計し、レイアウト、状態遷移モデル、アクセシビリティパターンを定義します。

coastai-skills とは?

Segmented Control Systemは、デザインシステムにおいてコンパクトで排他的な選択UIを構築するための体系的な方法論を提供します。これは、ラジオグループ的な値選択やタブリスト的なビュー切り替えなど、セマンティックな意図に応じて適切なARIAパターン(role="radiogroup" または role="tablist")を選択することを促します。本スキルは、Track、Segments、Active Indicator の3層からなるビジュアルアナトミー、ホバーやフォーカスなどの各状態におけるスタイル定義、スライディングインジケーターのアニメーション設計、およびレスポンシブ動作(フルワイド展開やドロップダウンへのフォールバック)をカバーしています。特にWCAG AA準拠のコントラスト比、Cumulative Layout Shift(CLS)を防ぐハードウェアアクセラレーションCSSプロパティの使用、prefers-reduced-motionへの対応など、アクセシビリティとパフォーマンスに重点を置いています。Claude CodeやCursorなどのAIエージェントがUIコンポーネントを生成する際、このスキームに従うことで視覚的一貫性とアクセシブルなインタラクションを保証できます。

対応~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/coastdigitalgroup/coastai-skills/tree/HEAD/website-design/segmented-control-system

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

セグメントコントロールシステム

目的

Segmented Control Systemは、コンパクトで排他的なセレクター(ボタングループ、スライディングトグル、セグメントボタンとも呼ばれる)のためのデザイン方法論を提供します。ナビゲーションメニューやコンテンツパネルタブとは異なり、セグメントコントロールは単一のコンテキストやフォーム内でインライン修飾子として機能します。ユーザーは、限られた空間フットプリント内で、表示形式を即座に変更したり、単一のデータセットをフィルタリングしたり、入力オプションを選択したりできます。

体系的なアプローチにより、これらのコントロールは一貫性のある視覚的関係、明確なインタラクティブアフォーダンス、シームレスなレイアウトスケーリング、そして適切なセマンティックアクセシビリティパターンを備え、汎用ボタンやタブナビゲーションと誤認されるのを防ぎます。

ユースケース

  • ビューの切り替え: 同一コンテンツの表示形式を切り替える(例:「グリッド vs. リスト vs. マップ」または「ボード vs. カレンダー」)。
  • 料金・請求トグル: 請求頻度を選択する(例:「月額 vs. 年額」)。価格表示が直接変更されます。
  • マイクロフィルタリング/サブセグメント化: アクティブなリストを特定のサブカテゴリ内でフィルタリングする(例:メッセージの「すべて vs. 未読 vs. スター付き」)。
  • インラインオプション選択: フォーム内で嵩張るドロップダウンセレクトメニューを、2〜5つの優先度の高い選択肢に置き換える(例:「小 vs. 中 vs. 大」)。
  • インタラクティブ状態スイッチャー: ライブチャート内のアクティブなメトリクスパラメータを変更する(例:「7日 vs. 30日 vs. 1年」の期間)。

使用すべきでないケース

  • フルページナビゲーション: アイテムをクリックするとページURLが変更されたり、現在のビューコンテキストからユーザーが移動する場合は、site-navigation-system を使用します。
  • 大規模コンテンツパネル切り替え: オプションの切り替えによって、複雑なレイアウトのまったく異なるコンテンツブロック(設定パネルやドキュメントタブなど)が表示される場合は、tab-ui-system を使用します。
  • 多数のオプション: オプションが5つを超える場合は、視覚的な混雑やテキストの水平方向のはみ出しを防ぐために、ドロップダウン選択またはフィルタードロワーを使用します。
  • 複数選択設定: ユーザーが同時に複数のアクティブオプションを選択できる場合は、グループ化されたチェックボックスまたはタグ(badge-and-tag-system)を使用します。
  • バイナリ動的トグル: 即座にバックグラウンドプロセスをトリガーするオン/オフ設定(例:「通知を有効にする」)の場合は、標準のトグルスイッチ(accessible-switch-implementation)を使用します。

入力

  1. オプションインベントリ: 排他的なラベル、アイコン、または値のリスト(通常2〜5項目)。
  2. コントロールスコープ: コントロールがフォーム入力、レイアウトビューモディファイア、メトリクススイッチャーのいずれとして機能するか。
  3. コンテナ制約: 正確な幅とレイアウト環境(例:検索の隣にインライン、価格カード内で中央揃え、モバイルでは全幅)。
  4. スタイルトークン: タイポグラフィスケール、スペーシング変数(fluid-spacing-system)、インタラクティブ状態(interactive-state-system)、およびカラートークン。

出力

  1. コントロールアナトミー仕様: Track(背景コンテナ)、Segments(個々のボタン)、Active Indicator(スライドまたはハイライトされた背景)の視覚的定義。
  2. 行動ARIAマッピング: 正しいARIAロール(role="radiogroup" と role="tablist" のどちらか)とキーボードナビゲーションルールの選択。
  3. 状態遷移マトリックス: Default、Hover、Active/Selected、Focus、Disabled各状態のスタイル定義。
  4. レスポンシブフロールール: 水平スケーリング、全幅フルード動作、モバイルでのリフローまたは <select> へのフォールバックの仕様。

ワークフロー

1. セマンティックな意図を特定する

コントロールが値を変更するのか、表示ビューを変更するのかを判断します。

  • フォーム入力またはマイクロフィルター: 意味的にラジオグループとして機能します。送信時に保存または送信される値を変更するか、インラインリストを即座に再フィルタリングします。
  • ビューコントローラー: 意味的にタブリストとして機能します。同じコンテナ内でアクティブな可視パネルまたはプレゼンテーションを切り替えます。

2. ビジュアルアナトミーを設計する

高度に洗練された統一されたビジュアルコンポーネントを構築します。デザインは3つのコアレイヤーで構成されます。

  • Track: 微妙な背景色(例:低コントラストのグレー)、小さなパディング(通常2px〜4px)、角丸(半角丸またはピル型)を持つ単一の水平コンテナ。
  • Segments: Track内に肩を並べて配置されたボタン。均等幅(両端揃え)であるか、一貫したパディングでコンテンツ幅に適応する必要があります。
  • Active Indicator: アクティブなテキストの下に配置され、視覚的に浮き上がらせる、明確な背景(多くの場合白またはプライマリテーマカラー)と微妙なシャドウ(elevation-and-depth-system)を持つスライドする物理的なカードまたはハイライト。

3. 状態とモーションのコレオグラフィを確立する

すべてのインタラクションフェーズに対して個別の視覚的フィードバックを設定します。

  • Default状態: 非アクティブなテキストは、少なくとも4.5:1の十分なコントラスト比を持つセカンダリニュートラルカラーを使用します。
  • Hover状態: ターゲットセグメントに微妙なホバー背景ハイライトを表示し、クリック可能であることを示します。
  • Selected状態: テキストがプライマリ/太字スタイルに変わり、Active Indicatorがその後ろにスライドします。
  • Focus状態: キーボードナビゲート時、アクティブセグメントの周りに明確で高コントラストなフォーカスアウトラインを描画します。フォーカスインジケーターがTrack境界の外にはみ出さないようにします。
  • Disabled状態: 透明度を下げ(通常40%)、カーソルポインターを無効にします。

4. コードとハンドオフの注釈

実装のための構造的要件を注釈します。

  • 等幅分布: 必要に応じてセグメントを均等に配置するためのフレックスボックス配置(flex: 1 1 0%)を指定します。
  • スライディングインジケーターのトランジション: スライディングアクティブインジケーターカードにCSSトランジションルール(transition: transform 0.2s cubic-bezier(0.4, 0, 0.2, 1))を指定します。left/widthプロパティを直接変更する代わりに、ハードウェアアクセラレーションされるプロパティ(transform と opacity)を使用して、Cumulative Layout Shift(CLS)をトリガーしないようにします。

5. レスポンシブ動作を計画する

小さなビューポートでセグメントコントロールがどのように縮小するかを定義します。

  • フルード両端揃え: モバイル画面ではTrackとSegmentsを100%幅に拡張し、全幅のボトムバーまたはヘッダーコンポーネントとして動作させます。
  • ラベル切り詰めと最小幅: セグメントの最小幅を厳格に適用し、テキストの折り返しによってボタン内で複数行にならないようにします。
  • オーバーフロードロップダウンフォールバック: 320pxビューポート内でオプションが視覚的に崩れずに収まらない場合は、レスポンシブCSSメディアクエリを使用して、セグメントコントロールのレイアウトをネイティブの <select> ドロップダウンに切り替えます。

決定ルール

ラジオグループ vs. タブリストパターン

基準ラジオグループパターンを使用(role="radiogroup")タブリストパターンを使用(role="tablist")
主要機能データプロパティを編集するか、リストをインラインでフィルタリングします。異なるレイアウトビューまたはパネルを切り替えます。
フォーム統合<form>内に統合されるか、入力として機能します。標準フォームの外側。レイアウトビューモードを管理します。
ARIAロール親: role="radiogroup"、子: role="radio"、aria-checked="true/false" を使用。親: role="tablist"、子: role="tab"、aria-selected="true/false" を使用。
キーボードナビゲーション矢印キーで選択が即座に移動。Tabでグループを終了。矢印キーでフォーカスが即座に移動。Space/Enterでアクティブ化。

ビジュアルレイアウト: 固定等幅 vs. 自動フルード幅

  • 固定等幅: 短く均一なラベル(例:「7D」「30D」「90D」または「グリッド」「リスト」)に最適。すべてのセグメントが同じ幅で、視覚的対称性を提供します。
  • 自動フルード幅: ラベルの文字長が大きく異なる場合(例:「すべてのアイテム」と「保留中の確認」)に最適。各セグメントは、一貫したパディング(例:12px 16px)でテキストを包み込みます。

制約

  • コントラスト比: アクティブおよび非アクティブなテキストセグメントは、背景に対してWCAG AA最低コントラスト比 4.5:1 を満たす必要があります。
  • タッチターゲット寸法: 個々のセグメントは、最小インタラクティブ領域 24x24px(WCAG 2.2 SC 2.5.8)を提供する必要がありますが、モバイルでのシームレスなフィンガータップのために、40px〜44pxの最小高さを強く推奨します。
  • フォーカスインジケーター: キーボードフォーカスは、現在選択されているセグメントまたはアクティブなフォーカスターゲットに明確に表示される必要があります。フォーカスリングが隣接するセグメントにクリップされたり隠れたりしないようにします。
  • テキストの折り返し禁止: セグメントテキストは単一行である必要があり、ボタン内で複数行に折り返してはなりません。これは垂直リズムを崩し、視覚的な重なりを引き起こします。
  • モーションの低減: アニメーション化されたスライディングインジケーターが実装されている場合は、@media (prefers-reduced-motion: reduce) を介してユーザーのOS設定を尊重し、スライディング効果を無効にして、代わりに透明度またはアウトラインハイライトを即座に切り替えます。

よくある失敗パターン

  • レイアウトシフト(CLS): アクティブセグメントを変更するとアクティブボタンの幅が変わり、隣接する要素が左右に移動します。
  • ナビゲーションの誤認識: 主要なグローバルページナビゲーションをセグメントコントロールのようにスタイリングし、ユーザーがページ内で即座にコンテンツが変更されることを期待させて混乱させます。
  • 選択状態のアフォーダンス欠如: 微妙なフォントウェイト変更や低コントラストのインジケーターのみを使用し、ロービジョンユーザーがどのオプションが選択されているかを識別するのを困難にします。
  • キーボードトラップ: コントロール内に標準のキーボード矢印キーをバインドせず、キーボードのみのユーザーがすべてのオプションを個別に Tab で移動することを強制します。
  • モバイルでの潰れ: 4セグメントのコントロールがモバイルで縮小し、ラベルが重なったり、判読できないほど切り詰められたり、Trackの境界外にクリップされたりすることを許容します。

検証基準

  • コントロールの機能に基づいて、明確なセマンティックARIAパターン(ラジオグループ vs. タブリスト)が選択されている。
  • 個々のセグメントが最小24x24pxのタッチターゲットサイズを満たしている(モバイルでは44pxを推奨)。
  • 非アクティブおよびアクティブなテキストのコントラストがWCAG AA準拠(>= 4.5:1比)である。
  • アクティブインジケーターは、スライディングトランジション中にハードウェアアクセラレーションCSSプロパティ(transform)を使用して、Cumulative Layout Shift(CLS)を防止している。
  • レスポンシブ動作が定義されている(フルード両端揃え、最小幅、またはドロップダウンセレクトフォールバック)。
  • セグメント内のテキストは単一行のままで、垂直方向の折り返しやクリッピングがない。
  • @media (prefers-reduced-motion: reduce) トランジションフォールバックが明示的に処理されている。

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for progressive disclosure using accordions, ensuring structural integrity, visual affordances, and accessibility across different content densities and devices.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for long-form content, managing readability, vertical rhythm, and information density to ensure a superior reading experience.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for informational elements that communicate state (Badges) and categorization (Tags) with clarity and accessibility.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for non-overlay notifications, managing global announcements and contextual inline alerts to communicate system states without interrupting the user's flow.

coastdigitalgroup/coastai-skills

Design and implement a systematic, asymmetrical bento-grid layout framework to organize diverse content types cohesively while maintaining strict visual hierarchy, logical focus order, and responsive flexibility.

coastdigitalgroup/coastai-skills

Design a responsive, mobile-first bottom navigation bar and persistent action dock system for mobile websites and web applications, establishing spatial anchors, tab bar anatomy, badge indicators, thumb-zone ergonomics, safe area inset handling, active/inactive state contrast, and desktop responsive adaptation rules.

coastdigitalgroup/coastai-skills

Design a mobile-first bottom sheet overlay system with configurable detents, drag affordances, safe area padding, responsive desktop modal/popover adaptation, and WCAG AA accessibility compliance.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for secondary navigation trails that provide orientation, context, and one-click access to parent levels in deep information architectures.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for buttons and interactive triggers, managing visual hierarchy, variant logic, and action grouping to ensure clear intent and accessible interaction.

coastdigitalgroup/coastai-skills

Design a systematic framework for date and time selection, managing calendar grids, range pickers, and scheduling interfaces to ensure precision and accessibility.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for modular content containers that maintain hierarchy, structural integrity, and action alignment across variable content and responsive viewports.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for horizontal discovery components, managing navigation affordances, scroll behavior, and accessibility to ensure effective content density without compromising usability.

coastdigitalgroup/coastai-skills

Design a systematic, highly accessible, and developer-friendly UI layout framework for code blocks, snippet showcases, multi-file code tabs, line-highlighting, diff views, and syntax token contrast in technical documentation and developer platforms.

coastdigitalgroup/coastai-skills

Design a systematic framework for global command menus (Cmd+K panels) that combines keyboard-driven navigation, command execution, and shortcut discovery into an accessible, responsive overlay.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for threaded conversations, managing nesting depths, action hierarchies, and community signaling to foster engagement and readability.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for side-by-side comparison interfaces, managing high attribute density and responsive complexity to support informed decision-making.

coastdigitalgroup/coastai-skills

Design and implement a systematic framework for user privacy, managing consent banners, preference centers, and persistent privacy controls to balance legal compliance with user trust.

coastdigitalgroup/coastai-skills

Design and implement a systematic, highly accessible, and responsive visual layout framework for conversational chat widgets, live chat boxes, and chatbot panels that ensures clear message scannability, native focus flow, and seamless mobile keyboard adaptation.

coastdigitalgroup/coastai-skills

Design a systematic, accessible, and high-conversion framework for custom select dropdowns and comboboxes, defining anatomy, states, search-filtering, and responsive mobile-adaptive patterns.

coastdigitalgroup/coastai-skills

Design and implement a systematic color palette that ensures WCAG 2.2 accessibility compliance. Trigger this skill when asked to define brand colors, create UI themes, or establish a visual system for a website.

関連スキル