コンポーネントにより、UI やスタイリングの一部を一貫性を保って簡単に再利用できます。例として、リンクカードやYouTubeの埋め込みなどが考えられます。StarlightはMDXファイルでのコンポーネントの使用をサポートしており、すぐに使える一般的なコンポーネントもいくつか提供しています。
コンポーネントの作り方について、詳しくはAstroドキュメントを参照してください。
コンポーネントを使う
コンポーネントは、MDXファイルにインポートしてJSXタグとしてレンダリングすることで使用できます。HTMLタグのように見えますが、import
文の名前と同じ大文字で始まります。
StarlightはAstro製であるため、サポート対象のUIフレームワーク(React、Preact、Svelte、Vue、Solid、Lit、Alpine)で作成されたコンポーネントであればMDXファイルで使用できます。MDXでのコンポーネントの使用について、詳しくはAstroドキュメントを参照してください。
Starlightのスタイルとの互換性
Starlightは、Markdownコンテンツにデフォルトのスタイルを適用します。たとえば、要素間にマージンを追加します。これらのスタイルがコンポーネントの見た目と競合する場合は、not-content
クラスをコンポーネントに設定してスタイルを無効化してください。
組み込みのコンポーネント
Starlightは、一般的なドキュメントのユースケースに対して組み込みのコンポーネントをいくつか提供しています。これらのコンポーネントは、@astrojs/starlight/components
パッケージから利用できます。
タブ
<Tabs>
と<TabItem>
コンポーネントを使用して、タブインターフェースを表示できます。各<TabItem>
は、ユーザーに表示するlabel
を必要とします。また、任意のicon
属性を指定すると、ラベルの横にStarlightの組み込みアイコンを1つ含められます。
上のコードは、ページに以下のタブを生成します。
カード
<Card>
コンポーネントを使用すると、Starlightのスタイルに合わせたボックス内にコンテンツを表示できます。十分なスペースがある場合は、複数のカードを<CardGrid>
コンポーネントで囲むことで、カードを並べて表示できます。
<Card>
はtitle
を必須とし、また任意でStarlightの組み込みアイコンの1つを名前に設定したicon
属性を含められます。
上のコードにより、ページに以下が生成されます。
確認しよう
強調したい興味深いコンテンツ。
リンクカード
<LinkCard>
を使用すると、他のページへのリンクを目立たせることができます。
<LinkCard>
はtitle
とhref
属性を必須とします。短いdescription
や、target
など他のリンク属性も指定できます。
十分なスペースがある場合、<CardGrid>
により複数の<LinkCard>
をグループ化して、カードを並べて表示できます。
上のコードにより、ページに以下が生成されます。
補足情報
「警告」や「吹き出し」とも呼ばれる補足情報(Asides)は、ページのメインコンテンツと並べて補助的な情報を表示するのに便利です。
<Aside>
には、note
(デフォルト)、tip
、caution
、danger
のいずれかのtype
を任意で指定できます。title
属性を設定すると、補足情報のデフォルトのタイトルが上書きされます。
上のコードにより、ページに以下が生成されます。
Starlightは、<Aside>
コンポーネントの代わりとして、MarkdownやMDXで補足情報をレンダリングするためのカスタム構文も提供しています。カスタム構文の詳細については、「Markdownでのコンテンツ作成」ガイドを参照してください。
コード
ファイルやデータベース、APIなど、外部ソースからのデータをレンダリングするためMarkdownのコードブロックを使用できない場合に、<Code>
コンポーネントを使用してシンタックスハイライトされたコードをレンダリングできます。
<Code>
がサポートするプロパティの詳細については、Expressive Codeの「Code Component」ドキュメントを参照してください。
上のコードにより、ページに以下が生成されます。
インポートされたコード
Viteの?raw
インポートサフィックスを使用して、任意のコードファイルを文字列としてインポートできます。
上のコードにより、ページに以下が生成されます。
ファイルツリー
<FileTree>
コンポーネントにより、ファイルアイコンと折りたたみ可能なサブディレクトリを使ってディレクトリの構造を表示できます。
<FileTree>
内でMarkdownの順序なしリストを使い、ファイルとディレクトリの構造を指定します。サブディレクトリを作成するにはリストをネストさせます。あるいは、リストアイテムの最後に/
を追加することで、中身を指定しないディレクトリとしてレンダリングできます。
以下の構文により、ファイルツリーの見た目をカスタマイズできます。
- 名前を太字にして、ファイルやディレクトリをハイライトできます。たとえば
**README.md**
のようにします。
- 名前の後ろにテキストを追加して、ファイルやディレクトリにコメントを追加できます。
...
または…
を名前として使用して、ファイルやディレクトリのプレースホルダーを追加できます。
上のコードにより、ページに以下が生成されます。
- astro.config.mjs
- package.json
- README.md
ディレクトリsrc
ディレクトリpages/
ステップ
<Steps>
コンポーネントにより、順序のあるタスクのリストをスタイリングできます。これは、各ステップを明確に強調する必要があるような、複雑なステップバイステップのガイドに便利です。
<Steps>
でMarkdown標準の順序付きリストをラップします。<Steps>
内では、通常のMarkdownの構文はすべて使用できます。
上のコードにより、ページに以下が生成されます。
-
MDXファイルにコンポーネントをインポートします。
-
順序付きリストの各アイテムを<Steps>
でラップします。
アイコン
Starlightは、<Icon>
コンポーネントを通じてコンテンツ内に表示可能な、一般的なアイコンのセットを提供しています。
<Icon>
はname
を必須とし、任意でlabel
、size
、color
属性を含められます。
上のコードにより、ページに以下が生成されます。
すべてのアイコン
以下に、利用可能なすべてのアイコンとその名前を示します。アイコンをクリックすると、対応するコンポーネントのコードをコピーできます。