// types shared between server and client import type { MarkdownSfcBlocks } from '@mdit-vue/plugin-sfc' import type { UseDarkOptions } from '@vueuse/core' import type { SSRContext } from 'vue/server-renderer' export type { DefaultTheme } from './default-theme.js' export type Awaitable = T | PromiseLike export interface PageData { relativePath: string filePath: string // differs from relativePath in case of path rewrites title: string titleTemplate?: string | boolean description: string headers: Header[] frontmatter: Record params?: Record isNotFound?: boolean lastUpdated?: number } export interface Header { /** * The level of the header * * `1` to `6` for `

` to `

` */ level: number /** * The title of the header */ title: string /** * The slug of the header * * Typically the `id` attr of the header anchor */ slug: string /** * Link of the header * * Typically using `#${slug}` as the anchor hash */ link: string /** * The children of the header */ children: Header[] } export interface SiteData { base: string cleanUrls?: boolean lang: string dir: string title: string titleTemplate?: string | boolean description: string head: HeadConfig[] appearance: | boolean | 'dark' | (Omit & { initialValue?: 'dark' }) themeConfig: ThemeConfig scrollOffset: | number | string | string[] | { selector: string | string[]; padding: number } locales: LocaleConfig localeIndex?: string contentProps?: Record } export type HeadConfig = | [string, Record] | [string, Record, string] export interface PageDataPayload { path: string pageData: PageData } export interface SSGContext extends SSRContext { content: string } export interface LocaleSpecificConfig { lang?: string dir?: string title?: string titleTemplate?: string | boolean description?: string head?: HeadConfig[] themeConfig?: ThemeConfig } export type LocaleConfig = Record< string, LocaleSpecificConfig & { label: string; link?: string } > // Manually declaring all properties as rollup-plugin-dts // is unable to merge augmented module declarations export interface MarkdownEnv { /** * The raw Markdown content without frontmatter */ content?: string /** * The excerpt that extracted by `@mdit-vue/plugin-frontmatter` * * - Would be the rendered HTML when `renderExcerpt` is enabled * - Would be the raw Markdown when `renderExcerpt` is disabled */ excerpt?: string /** * The frontmatter that extracted by `@mdit-vue/plugin-frontmatter` */ frontmatter?: Record /** * The headers that extracted by `@mdit-vue/plugin-headers` */ headers?: Header[] /** * SFC blocks that extracted by `@mdit-vue/plugin-sfc` */ sfcBlocks?: MarkdownSfcBlocks /** * The title that extracted by `@mdit-vue/plugin-title` */ title?: string path: string relativePath: string cleanUrls: boolean links?: string[] includes?: string[] realPath?: string }