Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions astro.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -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',
},
Expand Down
88 changes: 88 additions & 0 deletions src/components/starlight/Header.astro
Original file line number Diff line number Diff line change
@@ -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';
---

<div class="fg-header">
<div class="fg-title sl-flex">
<SiteTitle />
</div>
<div class="fg-search sl-flex print:hidden">
{shouldRenderSearch && <Search class="fg-search-control" />}
</div>
<div class="fg-right sl-hidden md:sl-flex print:hidden">
<div class="fg-social sl-flex">
<SocialIcons />
</div>
<ThemeSelect />
<LanguageSelect />
</div>
</div>

<style>
.fg-header {
display: flex;
align-items: center;
gap: var(--sl-nav-gap);
min-width: 0;
width: 100%;
}

.fg-title {
flex: 0 0 auto;
min-width: max-content;
overflow: visible;
}

.fg-search {
flex: 1 1 16rem;
min-width: 0;
}

.fg-search :global(site-search) {
display: block;
width: 100%;
}

.fg-search :global(button[data-open-modal]) {
max-width: 22rem;
}

.fg-right,
.fg-social {
align-items: center;
gap: 1rem;
}

.fg-right {
flex: 0 0 auto;
margin-inline-start: auto;
min-width: max-content;
}

.fg-social::after {
content: '';
height: 2rem;
border-inline-end: 1px solid var(--sl-color-gray-5);
}

@media (max-width: 63.999rem) {
.fg-search {
flex-basis: 14rem;
}
}

@media (max-width: 50rem) {
.fg-search :global(button[data-open-modal]) {
max-width: 100%;
}
}
</style>
11 changes: 11 additions & 0 deletions src/components/starlight/MarkdownContent.astro
Original file line number Diff line number Diff line change
@@ -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 }
: {};
---

<div class="sl-markdown-content" {...dataAttributes}><slot /></div>
23 changes: 23 additions & 0 deletions src/components/starlight/PageTitle.astro
Original file line number Diff line number Diff line change
@@ -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 }
: {};
---

<h1 id={PAGE_TITLE_ID} {...dataAttributes}>{Astro.locals.starlightRoute.entry.data.title}</h1>

<style>
@layer starlight.core {
h1 {
margin-top: 1rem;
font-size: var(--sl-text-h1);
line-height: var(--sl-line-height-headings);
font-weight: 600;
color: var(--sl-color-white);
}
}
</style>
25 changes: 21 additions & 4 deletions src/components/starlight/SiteTitle.astro
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,24 @@ const docsHref = 'https://docs.firegiant.com/';

<style>
.site-title {
--logo-height: calc(var(--sl-nav-height) - 2 * var(--sl-nav-pad-y));
align-items: center;
gap: 1rem;
min-width: max-content;
flex-shrink: 0;
white-space: nowrap;
}

.site-title a {
display: flex;
align-items: center;
flex-shrink: 0;
}

.firegiant-logo {
color: var(--sl-color-white);
}

.docs-logo {
color: var(--sl-color-text-accent);
}
Expand All @@ -37,15 +47,22 @@ const docsHref = 'https://docs.firegiant.com/';
}
/* Adjust svg sizes to full nav height */
.site-title :global(svg) {
--display-height: 1.75rem;
/* `auto` ensures the `<svg>` scales down on really narrow viewports */
display: block;
width: auto;
height: auto;
margin-block: calc((var(--sl-nav-height) - var(--display-height)) / 2);
height: var(--logo-height);
max-width: none;
transition: transform 0.18s cubic-bezier(0.23, 1, 0.32, 1);
}

.site-title a:hover :global(svg) {
--hover-offset: 0.15rem;
transform: translateY(calc(var(--hover-offset) * -1));
}

@media (max-width: 64rem) {
.site-title {
--logo-height: 1.625rem;
gap: 0.75rem;
}
}
</style>
1 change: 0 additions & 1 deletion src/styles/custom.css
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,6 @@ body {
font-family: Plex, var(--__sl-font);
}


/* Home
============================= */

Expand Down
8 changes: 8 additions & 0 deletions src/utils/pagefind.ts
Original file line number Diff line number Diff line change
@@ -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));
}
Loading