メインコンテンツまでスキップ

「designsystem」タグのついた14記事

全てのタグを見る

Button からデザインシステムへ

Button で学んだデザイントークン・cva・cn・Slot・型のパターンを、デザイントークン / プリミティブ / パターンの 3 階層からなる 1 つのデザインシステムとしてまとめる最終章。チーム運用のポイントと次のステップも紹介します。

cva:宣言的なバリアント管理とその仕組み

この章では、cva(class-variance-authority)によるスタイルバリアントの宣言的な管理について学びます。cva が内部で何をしているのか、競合解決を「やらないこと」まで理解します。

Radix UI の Slot:asChild パターンと要素の置換

この章では、radix-ui の Slot と asChild パターンについて学びます。スタイルを保ったままレンダリングされる HTML 要素を差し替える「合成(composition)」の考え方を解説します。

ref の転送:React 19 のやり方

この章では、ref を使って DOM 要素にアクセスする方法について学びます。React 19 で ref が通常の prop になった新しい書き方を本筋に、従来の forwardRef も押さえます。

shadcn/ui Button で学ぶデザインシステム設計

React 19 / Tailwind CSS v4 / 最新の shadcn/ui に対応。Button を題材に、デザイントークン・cva・cn・Radix Slot を通じて、デザインシステムに沿った再利用可能なコンポーネント設計を学ぶ全 13 章のガイド。

Tailwind CSS の基礎:ユーティリティファースト

Tailwind CSS のユーティリティファーストの考え方を、shadcn/ui Button の実クラス列を分解しながら学ぶ章。レイアウト・状態修飾子 (hover / focus-visible / disabled)・スペーシングスケール・デザイントークンの入り口を解説します。

TypeScript との連携:型安全なコンポーネント

この章では、shadcn/ui の Button を支える TypeScript の型について学びます。React.ComponentProps・VariantProps・交差型による props 定義と、React 19 で forwardRef のジェネリクスが不要になった理由を解説します。

デザインシステムとデザイントークン

bg-primary の色がどこから来るのかを解説する章。デザイントークンの 2 階層(プリミティブ / セマンティック)、OKLCH カラー、Tailwind v4 の @theme inline によるトークン定義、ライト / ダークテーマの仕組みを学びます。

実践演習:ゼロから Button コンポーネントを作る

素の button から始めて、Tailwind のデザイントークン・cva・cn・asChild (Slot)・TypeScript の型を 1 ステップずつ重ね、shadcn/ui 流の Button コンポーネントをゼロから完成させる実践演習。success バリアントやローディング状態の追加課題つき。

本書の目的と学べること

shadcn/ui の Button を題材にデザインシステム設計を学ぶガイドの導入章。本書の目的・対象読者・全 13 章の構成と、なぜ Button がコンポーネント設計の題材として最適なのかを説明します。

発展編:他のコンポーネントへの応用

Button で学んだ cva・cn・Slot・デザイントークンのパターンを Badge・Input・Card・Alert に応用する章。コンポーネントごとのパターン選択ガイドと設計のベストプラクティスをまとめます。