mirror of https://github.com/vuejs/vitepress
feat: improve typescript support for config file (#465)
parent
51978a3ff5
commit
ba41bb9055
@ -1,146 +1 @@
|
|||||||
export namespace DefaultTheme {
|
export { DefaultTheme } from '../shared'
|
||||||
export interface Config {
|
|
||||||
logo?: string
|
|
||||||
nav?: NavItem[] | false
|
|
||||||
sidebar?: SideBarConfig | MultiSideBarConfig
|
|
||||||
|
|
||||||
/**
|
|
||||||
* GitHub repository following the format <user>/<project>.
|
|
||||||
*
|
|
||||||
* @example `"vuejs/vue-next"`
|
|
||||||
*/
|
|
||||||
repo?: string
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Customize the header label. Defaults to GitHub/Gitlab/Bitbucket
|
|
||||||
* depending on the provided repo.
|
|
||||||
*
|
|
||||||
* @example `"Contribute!"`
|
|
||||||
*/
|
|
||||||
repoLabel?: string
|
|
||||||
|
|
||||||
/**
|
|
||||||
* If your docs are in a different repository from your main project.
|
|
||||||
*
|
|
||||||
* @example `"vuejs/docs-next"`
|
|
||||||
*/
|
|
||||||
docsRepo?: string
|
|
||||||
|
|
||||||
/**
|
|
||||||
* If your docs are not at the root of the repo.
|
|
||||||
*
|
|
||||||
* @example `"docs"`
|
|
||||||
*/
|
|
||||||
docsDir?: string
|
|
||||||
|
|
||||||
/**
|
|
||||||
* If your docs are in a different branch. Defaults to `master`.
|
|
||||||
*
|
|
||||||
* @example `"next"`
|
|
||||||
*/
|
|
||||||
docsBranch?: string
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Enable links to edit pages at the bottom of the page.
|
|
||||||
*/
|
|
||||||
editLinks?: boolean
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Custom text for edit link. Defaults to "Edit this page".
|
|
||||||
*/
|
|
||||||
editLinkText?: string
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Show last updated time at the bottom of the page. Defaults to `false`.
|
|
||||||
* If given a string, it will be displayed as a prefix (default value:
|
|
||||||
* "Last Updated").
|
|
||||||
*/
|
|
||||||
lastUpdated?: string | boolean
|
|
||||||
|
|
||||||
prevLinks?: boolean
|
|
||||||
nextLinks?: boolean
|
|
||||||
|
|
||||||
locales?: Record<string, LocaleConfig & Omit<Config, 'locales'>>
|
|
||||||
|
|
||||||
algolia?: AlgoliaSearchOptions
|
|
||||||
|
|
||||||
carbonAds?: {
|
|
||||||
carbon: string
|
|
||||||
custom?: string
|
|
||||||
placement: string
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// navbar --------------------------------------------------------------------
|
|
||||||
|
|
||||||
export type NavItem = NavItemWithLink | NavItemWithChildren
|
|
||||||
|
|
||||||
export interface NavItemBase {
|
|
||||||
text: string
|
|
||||||
target?: string
|
|
||||||
rel?: string
|
|
||||||
ariaLabel?: string
|
|
||||||
activeMatch?: string
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface NavItemWithLink extends NavItemBase {
|
|
||||||
link: string
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface NavItemWithChildren extends NavItemBase {
|
|
||||||
items: NavItemWithLink[]
|
|
||||||
}
|
|
||||||
|
|
||||||
// sidebar -------------------------------------------------------------------
|
|
||||||
|
|
||||||
export type SideBarConfig = SideBarItem[] | 'auto' | false
|
|
||||||
|
|
||||||
export interface MultiSideBarConfig {
|
|
||||||
[path: string]: SideBarConfig
|
|
||||||
}
|
|
||||||
|
|
||||||
export type SideBarItem = SideBarLink | SideBarGroup
|
|
||||||
|
|
||||||
export interface SideBarLink {
|
|
||||||
text: string
|
|
||||||
link: string
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface SideBarGroup {
|
|
||||||
text: string
|
|
||||||
link?: string
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @default false
|
|
||||||
*/
|
|
||||||
collapsable?: boolean
|
|
||||||
|
|
||||||
children: SideBarItem[]
|
|
||||||
}
|
|
||||||
|
|
||||||
// algolia ------------------------------------------------------------------
|
|
||||||
// partially copied from @docsearch/react/dist/esm/DocSearch.d.ts
|
|
||||||
export interface AlgoliaSearchOptions {
|
|
||||||
appId?: string
|
|
||||||
apiKey: string
|
|
||||||
indexName: string
|
|
||||||
placeholder?: string
|
|
||||||
searchParameters?: any
|
|
||||||
disableUserPersonalization?: boolean
|
|
||||||
initialQuery?: string
|
|
||||||
}
|
|
||||||
|
|
||||||
// locales -------------------------------------------------------------------
|
|
||||||
|
|
||||||
export interface LocaleConfig {
|
|
||||||
/**
|
|
||||||
* Text for the language dropdown.
|
|
||||||
*/
|
|
||||||
selectText?: string
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Label for this locale in the language dropdown.
|
|
||||||
*/
|
|
||||||
label?: string
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -0,0 +1,146 @@
|
|||||||
|
export namespace DefaultTheme {
|
||||||
|
export interface Config {
|
||||||
|
logo?: string
|
||||||
|
nav?: NavItem[] | false
|
||||||
|
sidebar?: SideBarConfig | MultiSideBarConfig
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GitHub repository following the format <user>/<project>.
|
||||||
|
*
|
||||||
|
* @example `"vuejs/vue-next"`
|
||||||
|
*/
|
||||||
|
repo?: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Customize the header label. Defaults to GitHub/Gitlab/Bitbucket
|
||||||
|
* depending on the provided repo.
|
||||||
|
*
|
||||||
|
* @example `"Contribute!"`
|
||||||
|
*/
|
||||||
|
repoLabel?: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If your docs are in a different repository from your main project.
|
||||||
|
*
|
||||||
|
* @example `"vuejs/docs-next"`
|
||||||
|
*/
|
||||||
|
docsRepo?: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If your docs are not at the root of the repo.
|
||||||
|
*
|
||||||
|
* @example `"docs"`
|
||||||
|
*/
|
||||||
|
docsDir?: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If your docs are in a different branch. Defaults to `master`.
|
||||||
|
*
|
||||||
|
* @example `"next"`
|
||||||
|
*/
|
||||||
|
docsBranch?: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enable links to edit pages at the bottom of the page.
|
||||||
|
*/
|
||||||
|
editLinks?: boolean
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Custom text for edit link. Defaults to "Edit this page".
|
||||||
|
*/
|
||||||
|
editLinkText?: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show last updated time at the bottom of the page. Defaults to `false`.
|
||||||
|
* If given a string, it will be displayed as a prefix (default value:
|
||||||
|
* "Last Updated").
|
||||||
|
*/
|
||||||
|
lastUpdated?: string | boolean
|
||||||
|
|
||||||
|
prevLinks?: boolean
|
||||||
|
nextLinks?: boolean
|
||||||
|
|
||||||
|
locales?: Record<string, LocaleConfig & Omit<Config, 'locales'>>
|
||||||
|
|
||||||
|
algolia?: AlgoliaSearchOptions
|
||||||
|
|
||||||
|
carbonAds?: {
|
||||||
|
carbon: string
|
||||||
|
custom?: string
|
||||||
|
placement: string
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// navbar --------------------------------------------------------------------
|
||||||
|
|
||||||
|
export type NavItem = NavItemWithLink | NavItemWithChildren
|
||||||
|
|
||||||
|
export interface NavItemBase {
|
||||||
|
text: string
|
||||||
|
target?: string
|
||||||
|
rel?: string
|
||||||
|
ariaLabel?: string
|
||||||
|
activeMatch?: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface NavItemWithLink extends NavItemBase {
|
||||||
|
link: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface NavItemWithChildren extends NavItemBase {
|
||||||
|
items: NavItemWithLink[]
|
||||||
|
}
|
||||||
|
|
||||||
|
// sidebar -------------------------------------------------------------------
|
||||||
|
|
||||||
|
export type SideBarConfig = SideBarItem[] | 'auto' | false
|
||||||
|
|
||||||
|
export interface MultiSideBarConfig {
|
||||||
|
[path: string]: SideBarConfig
|
||||||
|
}
|
||||||
|
|
||||||
|
export type SideBarItem = SideBarLink | SideBarGroup
|
||||||
|
|
||||||
|
export interface SideBarLink {
|
||||||
|
text: string
|
||||||
|
link: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface SideBarGroup {
|
||||||
|
text: string
|
||||||
|
link?: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @default false
|
||||||
|
*/
|
||||||
|
collapsable?: boolean
|
||||||
|
|
||||||
|
children: SideBarItem[]
|
||||||
|
}
|
||||||
|
|
||||||
|
// algolia ------------------------------------------------------------------
|
||||||
|
// partially copied from @docsearch/react/dist/esm/DocSearch.d.ts
|
||||||
|
export interface AlgoliaSearchOptions {
|
||||||
|
appId?: string
|
||||||
|
apiKey: string
|
||||||
|
indexName: string
|
||||||
|
placeholder?: string
|
||||||
|
searchParameters?: any
|
||||||
|
disableUserPersonalization?: boolean
|
||||||
|
initialQuery?: string
|
||||||
|
}
|
||||||
|
|
||||||
|
// locales -------------------------------------------------------------------
|
||||||
|
|
||||||
|
export interface LocaleConfig {
|
||||||
|
/**
|
||||||
|
* Text for the language dropdown.
|
||||||
|
*/
|
||||||
|
selectText?: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Label for this locale in the language dropdown.
|
||||||
|
*/
|
||||||
|
label?: string
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue