// types shared between server and client export interface LocaleConfig { lang: string title?: string description?: string head?: HeadConfig[] label?: string selectText?: string } export interface SiteData { base: string /** * Language of the site as it should be set on the `html` element. * @example `en-US`, `zh-CN` */ lang: string title: string description: string head: HeadConfig[] themeConfig: ThemeConfig locales: Record /** * Available locales for the site when it has defined `locales` in its * `themeConfig`. This object is otherwise empty. Keys are paths like `/` or * `/zh/`. */ langs: Record< string, { /** * Lang attribute as set on the `` element. * @example `en-US`, `zh-CN` */ lang: string /** * Label to display in the language menu. * @example `English', `简体中文` */ label: string } > customData: any } export type HeadConfig = | [string, Record] | [string, Record, string] export interface PageData { relativePath: string title: string description: string headers: Header[] frontmatter: Record lastUpdated: number } export interface Header { level: number title: string slug: string }