diff --git a/astro.config.mjs b/astro.config.mjs index 63295c2..1ec2e4e 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -45,6 +45,10 @@ export default defineConfig({ components: { // Override the default `Head` component to add our page tracking. Head: './src/components/starlight/Head.astro', + Header: './src/components/starlight/Header.astro', + // Boost schema reference pages in Pagefind results. + MarkdownContent: './src/components/starlight/MarkdownContent.astro', + PageTitle: './src/components/starlight/PageTitle.astro', // Override the default `SiteTitle` component to link to both firegiant.com and docs.firegiant.com. SiteTitle: './src/components/starlight/SiteTitle.astro', }, diff --git a/src/components/starlight/Header.astro b/src/components/starlight/Header.astro new file mode 100644 index 0000000..58bc454 --- /dev/null +++ b/src/components/starlight/Header.astro @@ -0,0 +1,88 @@ +--- +import config from 'virtual:starlight/user-config'; + +import LanguageSelect from 'virtual:starlight/components/LanguageSelect'; +import Search from 'virtual:starlight/components/Search'; +import SiteTitle from 'virtual:starlight/components/SiteTitle'; +import SocialIcons from 'virtual:starlight/components/SocialIcons'; +import ThemeSelect from 'virtual:starlight/components/ThemeSelect'; + +const shouldRenderSearch = + config.pagefind || config.components.Search !== '@astrojs/starlight/components/Search.astro'; +--- + +
+
+ +
+ +
+
+ +
+ + +
+
+ + diff --git a/src/components/starlight/MarkdownContent.astro b/src/components/starlight/MarkdownContent.astro new file mode 100644 index 0000000..8c0aa59 --- /dev/null +++ b/src/components/starlight/MarkdownContent.astro @@ -0,0 +1,11 @@ +--- +import '@astrojs/starlight/style/markdown.css'; +import { PRIORITY_PAGEFIND_CONTENT_WEIGHT, isPrioritySearchSlug } from '../../utils/pagefind'; + +const slug = Astro.locals.starlightRoute.entry.slug; +const dataAttributes = isPrioritySearchSlug(slug) + ? { 'data-pagefind-weight': PRIORITY_PAGEFIND_CONTENT_WEIGHT } + : {}; +--- + +
diff --git a/src/components/starlight/PageTitle.astro b/src/components/starlight/PageTitle.astro new file mode 100644 index 0000000..a8265fa --- /dev/null +++ b/src/components/starlight/PageTitle.astro @@ -0,0 +1,23 @@ +--- +import { PRIORITY_PAGEFIND_TITLE_WEIGHT, isPrioritySearchSlug } from '../../utils/pagefind'; + +const PAGE_TITLE_ID = '_top'; +const slug = Astro.locals.starlightRoute.entry.slug; +const dataAttributes = isPrioritySearchSlug(slug) + ? { 'data-pagefind-weight': PRIORITY_PAGEFIND_TITLE_WEIGHT } + : {}; +--- + +

{Astro.locals.starlightRoute.entry.data.title}

+ + diff --git a/src/components/starlight/SiteTitle.astro b/src/components/starlight/SiteTitle.astro index 505c986..e8328df 100644 --- a/src/components/starlight/SiteTitle.astro +++ b/src/components/starlight/SiteTitle.astro @@ -14,14 +14,24 @@ const docsHref = 'https://docs.firegiant.com/'; diff --git a/src/styles/custom.css b/src/styles/custom.css index bf4d203..090cf63 100644 --- a/src/styles/custom.css +++ b/src/styles/custom.css @@ -60,7 +60,6 @@ body { font-family: Plex, var(--__sl-font); } - /* Home ============================= */ diff --git a/src/utils/pagefind.ts b/src/utils/pagefind.ts new file mode 100644 index 0000000..e261089 --- /dev/null +++ b/src/utils/pagefind.ts @@ -0,0 +1,8 @@ +const PRIORITY_SEARCH_PREFIXES = ['wix/schema/', 'firegiant/schema/'] as const; + +export const PRIORITY_PAGEFIND_CONTENT_WEIGHT = '8'; +export const PRIORITY_PAGEFIND_TITLE_WEIGHT = '10'; + +export function isPrioritySearchSlug(slug: string): boolean { + return PRIORITY_SEARCH_PREFIXES.some((prefix) => slug.startsWith(prefix)); +}