Astro Starlight(Tailwand v3)にshadcn/uiを導入する
Astro StarlightとTailwind CSSを使用したプロジェクトに、shadcn/uiを導入する方法を紹介します。
shadcn/uiは、美しくカスタマイズ可能なUIコンポーネントを提供するライブラリです。
Starlightは現状、Tailwind CSS v3を使用しているため、shadcn/uiも同様にTailwind CSS v3で導入します。
前提条件
- 既にAstro Starlightプロジェクトが作成されていること
- Tailwind CSS v3が導入されていること
shadcn/uiの導入
-
プロジェクトのルートディレクトリにある
tsconfig.json
ファイルを開き、以下のコードを追加してパスを解決します:tsconfig.json {"compilerOptions": {// ..."baseUrl": ".","paths": {"@/*": ["./src/*"]}// ...}} -
shadcn/uiをセットアップするために、以下のコマンドを実行します:
Terminal window Terminal window Terminal window
-
このコマンドを実行すると、プロジェクトの設定に関するいくつかの質問が表示されます。
プロジェクトに適した選択肢を選んでください。
私は下記のように選択しました。
-
reactがインストールされていない場合、以下のコマンドを実行してreactをインストールします:
Terminal window pnpm astro add reactTerminal window npx astro add reactTerminal window yarn astro add react
-
shadcn/uiを追加すると下記のようにCSSが追加されます。
src/styles/tailwind.css @tailwind base;@tailwind components;@tailwind utilities;@layer base {:root {--background: 0 0% 100%;--foreground: 240 10% 3.9%;--card: 0 0% 100%;--card-foreground: 240 10% 3.9%;--popover: 0 0% 100%;--popover-foreground: 240 10% 3.9%;--primary: 240 5.9% 10%;--primary-foreground: 0 0% 98%;--secondary: 240 4.8% 95.9%;--secondary-foreground: 240 5.9% 10%;--muted: 240 4.8% 95.9%;--muted-foreground: 240 3.8% 46.1%;--accent: 240 4.8% 95.9%;--accent-foreground: 240 5.9% 10%;--destructive: 0 84.2% 60.2%;--destructive-foreground: 0 0% 98%;--border: 240 5.9% 90%;--input: 240 5.9% 90%;--ring: 240 10% 3.9%;--chart-1: 12 76% 61%;--chart-2: 173 58% 39%;--chart-3: 197 37% 24%;--chart-4: 43 74% 66%;--chart-5: 27 87% 67%;--radius: 0.5rem}.dark {--background: 240 10% 3.9%;--foreground: 0 0% 98%;--card: 240 10% 3.9%;--card-foreground: 0 0% 98%;--popover: 240 10% 3.9%;--popover-foreground: 0 0% 98%;--primary: 0 0% 98%;--primary-foreground: 240 5.9% 10%;--secondary: 240 3.7% 15.9%;--secondary-foreground: 0 0% 98%;--muted: 240 3.7% 15.9%;--muted-foreground: 240 5% 64.9%;--accent: 240 3.7% 15.9%;--accent-foreground: 0 0% 98%;--destructive: 0 62.8% 30.6%;--destructive-foreground: 0 0% 98%;--border: 240 3.7% 15.9%;--input: 240 3.7% 15.9%;--ring: 240 4.9% 83.9%;--chart-1: 220 70% 50%;--chart-2: 160 60% 45%;--chart-3: 30 80% 55%;--chart-4: 280 65% 60%;--chart-5: 340 75% 55%}}@layer base {* {@apply border-border;}body {@apply bg-background text-foreground;}}いくつかのカスタムプロパティが追加され、ダークモードのスタイルも追加されます。
これによってStarlightのデフォルトのスタイルが上書きされます。
適宜カスタマイズしましょう。
ちなみに、Starlightとshadcn/uiはダークモードとライトモードの設定が逆なので入れ替えておく必要があります。
フレームワーク ダークモード ライトモード Starlight :root :root[data-theme=“light”] shadcn/ui .dark :root 注記:
- shadcn/uiの元の設定(ダークモード: .dark、ライトモード: :root)を変更しています。
- ダークモードとライトモードの設定を統一するために、shadcn/uiの
.dark
を:root
に、:root
を:root[data-theme="light"]
に変更しています。 - この変更により、StarlightとshadcnのCSS設定が一致し、両フレームワークで同じセレクタを使用してダークモードとライトモードのスタイルを定義できるようになります。
コンポーネントの追加
セットアップが完了したら、shadcn/uiのコンポーネントを追加できます。
例えば、Buttonコンポーネントを追加するには以下のコマンドを実行します。
コンポーネントの使用
追加したコンポーネントは、以下のように使用できます。
例えば、src/docs/index.mdx
ファイル
import { Button } from "@/components/ui/button"
<Button>Click me</Button>