diff --git a/site/src/routes/docs/+layout.svelte b/site/src/routes/docs/+layout.svelte index 28b912732..ad4816c88 100644 --- a/site/src/routes/docs/+layout.svelte +++ b/site/src/routes/docs/+layout.svelte @@ -1,9 +1,9 @@ -{#snippet navLinkSnippet(navLink: NormalizedNavLink)} +{#snippet navLinkSnippet(navLink: NavLink)} {#if "items" in navLink}
  • diff --git a/site/src/routes/docs/settings.ts b/site/src/routes/docs/settings.ts index 7fb5b9edc..a02245fff 100644 --- a/site/src/routes/docs/settings.ts +++ b/site/src/routes/docs/settings.ts @@ -1,6 +1,6 @@ -import type { NavLink } from "./utils"; +import type { RawNavLink } from "./utils"; -export const navLinks: NavLink[] = [ +export const navLinks: RawNavLink[] = [ { label: "Getting Started", items: ["getting-started/add-machines"], diff --git a/site/src/routes/docs/utils.ts b/site/src/routes/docs/utils.ts index a94092c26..545eda21c 100644 --- a/site/src/routes/docs/utils.ts +++ b/site/src/routes/docs/utils.ts @@ -8,61 +8,59 @@ export const articles = Object.fromEntries( ).map(([key, fn]) => [key.slice("./".length, -".md".length), fn]), ); -export type NavLink = +export type RawNavLink = | string | { label: string; - items: NavLink[]; + items: RawNavLink[]; collapsed?: boolean; - badge?: Badge; + badge?: RawBadge; } | { label: string; autogenerate: { directory: string }; collapsed?: boolean; - badge?: Badge; + badge?: RawBadge; } | { label?: string; slug: string; - badge?: Badge; + badge?: RawBadge; } | { label: string; link: string; - badge?: Badge; + badge?: RawBadge; }; -export type NormalizedNavLink = +export type NavLink = | { label: string; - items: NormalizedNavLink[]; + items: NavLink[]; collapsed: boolean; - badge?: NormalizedBadge; + badge?: Badge; } | { label: string; link: string; - badge?: NormalizedBadge; + badge?: Badge; external: boolean; }; -export type Badge = string | NormalizedBadge; +export type RawBadge = string | Badge; -export type NormalizedBadge = { +export type Badge = { text: string; variant: "caution" | "normal"; }; export async function normalizeNavLinks( - navLinks: NavLink[], -): Promise { + navLinks: RawNavLink[], +): Promise { return await Promise.all(navLinks.map(normalizeNavLink)); } -export async function normalizeNavLink( - navLink: NavLink, -): Promise { +export async function normalizeNavLink(navLink: RawNavLink): Promise { if (typeof navLink === "string") { const article = articles[navLink]; if (!article) { @@ -122,7 +120,7 @@ export async function normalizeNavLink( } if (titleMissing) throw new Error("Aborting due to errors."); - const items: NormalizedNavLink[] = await Promise.all( + const items: NavLink[] = await Promise.all( frontmatters .sort((a, b) => { const orderA = a.frontmatter.order; @@ -162,9 +160,7 @@ export async function normalizeNavLink( }; } -export function normalizeBadge( - badge: Badge | undefined, -): NormalizedBadge | undefined { +export function normalizeBadge(badge: RawBadge | undefined): Badge | undefined { if (!badge) { return undefined; }