@nolebase/vitepress-plugin-page-properties
Version:
A VitePress plugin that renders frontmatter as page properties, and makes them editable.
76 lines (64 loc) • 1.52 kB
TypeScript
interface TagsProperty<K extends PropertyKey> {
type: 'tags'
key: K
title: string
omitEmpty?: boolean
}
interface PlainProperty<K extends PropertyKey> {
type: 'plain'
key: K
title: string
omitEmpty?: boolean
}
interface DatetimeProperty<K extends PropertyKey> {
type: 'datetime'
key: K
title: string
formatAsFrom?: boolean
dateFnsLocaleName?: import('./types').LocaleName
format?: string
omitEmpty?: boolean
}
interface ProgressProperty<K extends PropertyKey> {
type: 'progress'
key: K
title: string
omitEmpty?: boolean
}
interface LinkProperty<K extends PropertyKey> {
type: 'link'
key: K
title: string
omitEmpty?: boolean
}
interface DynamicProperty<K extends PropertyKey> {
type: 'dynamic'
key: K | string
title: string
options:
DynamicWordsCountProperty |
DynamicReadingTimeProperty
}
interface DynamicWordsCountProperty {
type: 'wordsCount'
}
interface DynamicReadingTimeProperty {
type: 'readingTime'
dateFnsLocaleName?: import('./types').LocaleName
}
type Property<K extends PropertyKey> =
TagsProperty<K> |
PlainProperty<K> |
DatetimeProperty<K> |
ProgressProperty<K> |
LinkProperty<K> |
DynamicProperty<K>
type PropertyType = Property<PropertyKey>['type']
type DynamicPropertyType = DynamicProperty<PropertyKey>['options']['type']
declare module 'virtual:nolebase-page-properties' {
const pagePropertiesData: Record<string, {
wordsCount: number
readingTime: number
}>
export default pagePropertiesData
}