Astro Starlightでトップページに検索バーを表示する
Astro Starlightでトップページに検索バーを表示する
トップページに検索バーを表示する。
Starlightの検索機能
StarlightはデフォルトでPagefindを使用している。そのため、PagefindのUIを設置することで簡単に検索バーを設定できる。
カスタムトップページの作成
まずはカスタムのトップページを作成する。 src/pages/index.astro を作成し、ドキュメントを参考に構築する。
src/pages/index.astro 1:
1
2
3
4
5
6
---
import StarlightPage from "@astrojs/starlight/components/StarlightPage.astro";
---
<StarlightPage frontmatter={{ title: "Welcome to Study Astro", template: "doc" }}>
</StarlightPage>
検索バーを追加し色を指定する
ベースができたのでPagefindのドキュメントを参考に検索バーを追加する。また、Starlightのソースから配色を流用する。Starlightの配色をそのまま利用することで違和感なく表示でき、ライトモード/ダークモードの切り替えにも対応できる。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
---
import StarlightPage from "@astrojs/starlight/components/StarlightPage.astro";
---
<StarlightPage frontmatter={{ title: "Welcome to Study Astro", template: "doc" }}>
<!-- search box -->
<div id="toppage-search" class="search"></div>
</StarlightPage>
<link href="/study-astro/pagefind/pagefind-ui.css" rel="stylesheet">
<script is:inline src="/study-astro/pagefind/pagefind-ui.js"></script>
<script is:inline>
if (window.PagefindUI) {
window.addEventListener('DOMContentLoaded', (event) => {
new PagefindUI({ element: "#toppage-search", showSubResults: true });
});
}
</script>
<style>
#toppage-search {
--pagefind-ui-primary: var(--sl-color-text);
--pagefind-ui-text: var(--sl-color-gray-2);
--pagefind-ui-font: var(--__sl-font);
--pagefind-ui-background: var(--sl-color-black);
--pagefind-ui-border: var(--sl-color-gray-5);
--pagefind-ui-border-width: 1px;
--pagefind-ui-tag: var(--sl-color-gray-5);
--sl-search-cancel-space: 5rem;
}
</style>
GitHub
実際のコードは以下にある。
シンタックスハイライトは
jsxとしたが、実際は.astroファイルである。 ↩︎
This post is licensed under CC BY 4.0 by the author.
