UNPKG

@astrojs/starlight

Version:

Build beautiful, high-performance documentation websites with Astro

266 lines (240 loc) 13.1 kB
import { z } from 'astro/zod'; export function ComponentConfigSchema() { return z .object({ /* HEAD ---------------------------------------------------------------------------------------- */ /** * Component rendered inside each page’s `<head>`. * Includes important tags including `<title>`, and `<meta charset="utf-8">`. * * Override this component as a last resort. Prefer the `head` option Starlight config if possible. * * @see {@link https://github.com/withastro/starlight/blob/main/packages/starlight/components/Head.astro `Head` default implementation} */ Head: z.string().default('@astrojs/starlight/components/Head.astro'), /** * Component rendered inside `<head>` that sets up dark/light theme support. * The default implementation includes an inline script and a `<template>` used by the * script in `ThemeSelect.astro`. * * @see {@link https://github.com/withastro/starlight/blob/main/packages/starlight/components/ThemeProvider.astro `ThemeProvider` default implementation} */ ThemeProvider: z.string().default('@astrojs/starlight/components/ThemeProvider.astro'), /* BODY ---------------------------------------------------------------------------------------- */ /** * Component rendered as the first element inside `<body>` which links to the main page * content for accessibility. The default implementation is hidden until a user focuses it * by tabbing with their keyboard. * * @see {@link https://github.com/withastro/starlight/blob/main/packages/starlight/components/SkipLink.astro `SkipLink` default implementation} */ SkipLink: z.string().default('@astrojs/starlight/components/SkipLink.astro'), /* LAYOUT -------------------------------------------------------------------------------------- */ /** * Layout component wrapped around most of the page content. * The default implementation sets up the header–sidebar–main layout and includes * `header` and `sidebar` named slots along with a default slot for the main content. * It also renders `<MobileMenuToggle />` to support toggling the sidebar navigation * on small (mobile) viewports. * * @see {@link https://github.com/withastro/starlight/blob/main/packages/starlight/components/PageFrame.astro `PageFrame` default implementation} */ PageFrame: z.string().default('@astrojs/starlight/components/PageFrame.astro'), /** * Component rendered inside `<PageFrame>` that is responsible for toggling the * sidebar navigation on small (mobile) viewports. * * @see {@link https://github.com/withastro/starlight/blob/main/packages/starlight/components/MobileMenuToggle.astro `MobileMenuToggle` default implementation} */ MobileMenuToggle: z.string().default('@astrojs/starlight/components/MobileMenuToggle.astro'), /** * Layout component wrapped around the main content column and right sidebar (table of contents). * The default implementation handles the switch between a single-column, small-viewport layout * and a two-column, larger-viewport layout. * * @see {@link https://github.com/withastro/starlight/blob/main/packages/starlight/components/TwoColumnContent.astro `TwoColumnContent` default implementation} */ TwoColumnContent: z.string().default('@astrojs/starlight/components/TwoColumnContent.astro'), /* HEADER -------------------------------------------------------------------------------------- */ /** * Header component displayed at the top of every page. * The default implementation displays `<SiteTitle />`, `<Search />`, `<SocialIcons />`, * `<ThemeSelect />`, and `<LanguageSelect />`. * * @see {@link https://github.com/withastro/starlight/blob/main/packages/starlight/components/Header.astro `Header` default implementation} */ Header: z.string().default('@astrojs/starlight/components/Header.astro'), /** * Component rendered at the start of the site header to render the site title. * The default implementation includes logic for rendering logos defined in Starlight config. * * @see {@link https://github.com/withastro/starlight/blob/main/packages/starlight/components/SiteTitle.astro `SiteTitle` default implementation} */ SiteTitle: z.string().default('@astrojs/starlight/components/SiteTitle.astro'), /** * Component used to render Starlight’s search UI. The default implementation includes the * button in the header and the code for displaying a search modal when it is clicked. * * @see {@link https://github.com/withastro/starlight/blob/main/packages/starlight/components/Search.astro `Search` default implementation} */ Search: z.string().default('@astrojs/starlight/components/Search.astro'), /** * Component rendered in the site header including social icon links. The default * implementation uses the `social` option in Starlight config to render icons and links. * * @see {@link https://github.com/withastro/starlight/blob/main/packages/starlight/components/SocialIcons.astro `SocialIcons` default implementation} */ SocialIcons: z.string().default('@astrojs/starlight/components/SocialIcons.astro'), /** * Component rendered in the site header that allows users to select their preferred color scheme. * * @see {@link https://github.com/withastro/starlight/blob/main/packages/starlight/components/ThemeSelect.astro `ThemeSelect` default implementation} */ ThemeSelect: z.string().default('@astrojs/starlight/components/ThemeSelect.astro'), /** * Component rendered in the site header that allows users to switch to a different language. * * @see {@link https://github.com/withastro/starlight/blob/main/packages/starlight/components/LanguageSelect.astro `LanguageSelect` default implementation} */ LanguageSelect: z.string().default('@astrojs/starlight/components/LanguageSelect.astro'), /* SIDEBAR ------------------------------------------------------------------------------------- */ /** * Component rendered before page content that contains global navigation. * The default implementation displays as a sidebar on wide enough viewports and inside a * drop-down menu on small (mobile) viewports. It also renders `<MobileMenuFooter />` to * show additional items inside the mobile menu. * * @see {@link https://github.com/withastro/starlight/blob/main/packages/starlight/components/Sidebar.astro `Sidebar` default implementation} */ Sidebar: z.string().default('@astrojs/starlight/components/Sidebar.astro'), /** * Component rendered at the bottom of the mobile drop-down menu. * The default implementation renders `<ThemeSelect />` and `<LanguageSelect />`. * * @see {@link https://github.com/withastro/starlight/blob/main/packages/starlight/components/MobileMenuFooter.astro `MobileMenuFooter` default implementation} */ MobileMenuFooter: z.string().default('@astrojs/starlight/components/MobileMenuFooter.astro'), /* TOC ----------------------------------------------------------------------------------------- */ /** * Component rendered before the main page’s content to display a table of contents. * The default implementation renders `<TableOfContents />` and `<MobileTableOfContents />`. * * @see {@link https://github.com/withastro/starlight/blob/main/packages/starlight/components/PageSidebar.astro `PageSidebar` default implementation} */ PageSidebar: z.string().default('@astrojs/starlight/components/PageSidebar.astro'), /** * Component that renders the current page’s table of contents on wider viewports. * * @see {@link https://github.com/withastro/starlight/blob/main/packages/starlight/components/TableOfContents.astro `TableOfContents` default implementation} */ TableOfContents: z.string().default('@astrojs/starlight/components/TableOfContents.astro'), /** * Component that renders the current page’s table of contents on small (mobile) viewports. * * @see {@link https://github.com/withastro/starlight/blob/main/packages/starlight/components/MobileTableOfContents.astro `MobileTableOfContents` default implementation} */ MobileTableOfContents: z .string() .default('@astrojs/starlight/components/MobileTableOfContents.astro'), /* CONTENT HEADER ------------------------------------------------------------------------------ */ /** * Banner component rendered at the top of each page. The default implementation uses the * page’s `banner` frontmatter value to decide whether or not to render. * * @see {@link https://github.com/withastro/starlight/blob/main/packages/starlight/components/Banner.astro `Banner` default implementation} */ Banner: z.string().default('@astrojs/starlight/components/Banner.astro'), /** * Layout component used to wrap sections of the main content column. * * @see {@link https://github.com/withastro/starlight/blob/main/packages/starlight/components/ContentPanel.astro `ContentPanel` default implementation} */ ContentPanel: z.string().default('@astrojs/starlight/components/ContentPanel.astro'), /** * Component containing the `<h1>` element for the current page. * * Implementations should ensure they set `id="_top"` on the `<h1>` element as in the default * implementation. * * @see {@link https://github.com/withastro/starlight/blob/main/packages/starlight/components/PageTitle.astro `PageTitle` default implementation} */ PageTitle: z.string().default('@astrojs/starlight/components/PageTitle.astro'), /** * Notice displayed to users on pages where a translation for the current language is not * available. Only used on multilingual sites. * * @see {@link https://github.com/withastro/starlight/blob/main/packages/starlight/components/FallbackContentNotice.astro `FallbackContentNotice` default implementation} */ FallbackContentNotice: z .string() .default('@astrojs/starlight/components/FallbackContentNotice.astro'), /** * Notice displayed to users on draft pages. Only used in development mode. * * @see {@link https://github.com/withastro/starlight/blob/main/packages/starlight/components/DraftContentNotice.astro `DraftContentNotice` default implementation} */ DraftContentNotice: z .string() .default('@astrojs/starlight/components/DraftContentNotice.astro'), /** * Component rendered at the top of the page when `hero` is set in frontmatter. The default * implementation shows a large title, tagline, and call-to-action links alongside an optional image. * * @see {@link https://github.com/withastro/starlight/blob/main/packages/starlight/components/Hero.astro `Hero` default implementation} */ Hero: z.string().default('@astrojs/starlight/components/Hero.astro'), /* CONTENT ------------------------------------------------------------------------------------- */ /** * Component rendered around each page’s main content. * The default implementation sets up basic styles to apply to Markdown content. * * @see {@link https://github.com/withastro/starlight/blob/main/packages/starlight/components/MarkdownContent.astro `MarkdownContent` default implementation} */ MarkdownContent: z.string().default('@astrojs/starlight/components/MarkdownContent.astro'), /* CONTENT FOOTER ------------------------------------------------------------------------------ */ /** * Footer component displayed at the bottom of each documentation page. * The default implementation displays `<LastUpdated />`, `<Pagination />`, and `<EditLink />`. * * @see {@link https://github.com/withastro/starlight/blob/main/packages/starlight/components/Footer.astro `Footer` default implementation} */ Footer: z.string().default('@astrojs/starlight/components/Footer.astro'), /** * Component rendered in the page footer to display the last-updated date. * * @see {@link https://github.com/withastro/starlight/blob/main/packages/starlight/components/LastUpdated.astro `LastUpdated` default implementation} */ LastUpdated: z.string().default('@astrojs/starlight/components/LastUpdated.astro'), /** * Component rendered in the page footer to display navigation arrows between previous/next pages. * * @see {@link https://github.com/withastro/starlight/blob/main/packages/starlight/components/Pagination.astro `Pagination` default implementation} */ Pagination: z.string().default('@astrojs/starlight/components/Pagination.astro'), /** * Component rendered in the page footer to display a link to where the page can be edited. * * @see {@link https://github.com/withastro/starlight/blob/main/packages/starlight/components/EditLink.astro `EditLink` default implementation} */ EditLink: z.string().default('@astrojs/starlight/components/EditLink.astro'), }) .default({}); }