コンポーネントにより、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
を必要とします。
上のコードは、ページに以下のタブを生成します。
カード
<Card>
コンポーネントを使用すると、Starlightのスタイルに合わせたボックス内にコンテンツを表示できます。十分なスペースがある場合は、複数のカードを<CardGrid>
コンポーネントで囲むことで、カードを並べて表示できます。
<Card>
はtitle
を必須とし、また任意でStarlightの組み込みアイコンの1つを名前に設定したicon
属性を含められます。
上のコードにより、ページに以下が生成されます。
確認しよう
強調したい興味深いコンテンツ。
リンクカード
<LinkCard>
を使用すると、他のページへのリンクを目立たせることができます。
<LinkCard>
はtitle
とhref
属性を必須とします。短いdescription
や、target
など他のリンク属性も指定できます。
十分なスペースがある場合、<CardGrid>
により複数の<LinkCard>
をグループ化して、カードを並べて表示できます。
上のコードにより、ページに以下が生成されます。
アイコン
Starlightは、<Icon>
コンポーネントを通じてコンテンツ内に表示可能な、一般的なアイコンのセットを提供しています。
<Icon>
はname
を必須とし、任意でlabel
、size
、color
属性を含められます。
上のコードにより、ページに以下が生成されます。
すべてのアイコン
以下に、利用可能なすべてのアイコンとその名前を示します。アイコンをクリックすると、対応するコンポーネントのコードをコピーできます。