API Reference
Reference exports, options, renderer props, directive names, and default theme names.
API Reference
Package Exports
Main export:
1import {2 DEFAULT_CALLOUT_THEMES,3 DEFAULT_CARD_THEMES,4 DEFAULT_CARDS_THEMES,5 DEFAULT_CELL_THEMES,6 DEFAULT_CODE_LANGS,7 DEFAULT_COLUMNS_THEMES,8 DEFAULT_DETAILS_THEMES,9 DEFAULT_SECTION_THEMES,10 DEFAULT_STEPS_THEMES,11 DEFAULT_TAB_THEMES,12 DEFAULT_TABS_THEMES,13 DEFAULT_TOC_THEMES,14 MarkdownBlock,15 markdownField,16 payloadMarkdown,17} from '@valkyrianlabs/payload-markdown'
Server export:
1import {2 MarkdownBlockComponent,3 MarkdownRenderer,4 PayloadMarkdownField,5} from '@valkyrianlabs/payload-markdown/server'
Advanced export:
1import {2 createPayloadMarkdownIconRegistryEntry,3 createPayloadMarkdownIconRegistrySource,4 vlMdCodeBlockConfig,5 vlMdConfig,6 vlMdTailwindField,7} from '@valkyrianlabs/payload-markdown/advanced'
PayloadMarkdownConfig
1type PayloadMarkdownConfig = {2 code?: MarkdownCodeConfig3 collections?: Partial<Record<CollectionSlug, PayloadMarkdownCollectionConfig | true>>4 config?: ConfigOptions5 enabled?: boolean6 icons?: PayloadMarkdownIconsConfig7 themes?: MarkdownDirectiveThemes8}
PayloadMarkdownIconsConfig
1type PayloadMarkdownIconPack = {2 alias: string3 path: string4}5 6type PayloadMarkdownIconsConfig = {7 baseDir: string8 packs: PayloadMarkdownIconPack[]9}
Icon refs in Markdown use @pack/name, such as @fa-duotone/home. The plugin validates pack aliases, pack paths, icon refs, traversal attempts, unknown packs, and missing SVG files.
PayloadMarkdownCollectionConfig
1type PayloadMarkdownCollectionConfig = {2 code?: MarkdownCodeConfig3 config?: ConfigOptions4 field?: Omit<MarkdownFieldOptions, 'name'>5 fieldName?: string6 installField?: boolean7 installIntoBlocks?: boolean8 themes?: MarkdownDirectiveThemes9}
MarkdownCodeConfig
1type MarkdownCodeConfig = {2 enhanced?: boolean3 fullBleed?: boolean4 langs?: string[]5 lineNumbers?: boolean6 shikiTheme?: string7}
Defaults:
enhanced:truelineNumbers:truewhen enhanced rendering is enabledshikiTheme:github-darkfullBleed:false
MarkdownConfig
1type MarkdownConfig = {2 className?: string3 enableGutter?: boolean4 lead?: ReactNode5 mutedHeadings?: boolean6 size?: 'lg' | 'md' | 'sm'7 variant?: 'blog' | 'compact' | 'docs' | 'unstyled'8 wrapperClassName?: string9 10 // Deprecated aliases11 columnClassName?: string12 fullBleedCode?: boolean13 options?: RenderMarkdownOptions14 sectionClassName?: string15}
ConfigOptions
config can be shared or split by field and block scope:
1type ConfigOptions =2 | MarkdownConfig3 | {4 blocks?: MarkdownConfig5 field?: MarkdownConfig6 }
Renderer Props
1type MarkdownRendererProps = {2 as?: keyof JSX.IntrinsicElements3 collectionSlug?: string4 emptyFallback?: ReactNode5 errorFallback?: ReactNode6 markdown?: null | string7 scope?: 'blocks' | 'field'8} & MarkdownRenderConfig
Markdown Field Options
1type MarkdownFieldOptions = {2 admin?: Partial<TextField['admin']>3 defaultValue?: string4 label?: string5 localized?: boolean6 name?: string7 required?: boolean8}
Directive Names
Layout directives:
section2col3colcell
Static directives:
buttonbuttonscalloutdetailstocstepscardscardtabstab
Close markers:
::::::end:::endcol:::endsection
Directive Theme Groups
1type MarkdownDirectiveThemes = {2 callout?: MarkdownDirectiveThemeGroup3 card?: MarkdownDirectiveThemeGroup4 cards?: MarkdownDirectiveThemeGroup5 cell?: MarkdownDirectiveThemeGroup6 columns?: MarkdownDirectiveThemeGroup7 details?: MarkdownDirectiveThemeGroup8 section?: MarkdownDirectiveThemeGroup9 steps?: MarkdownDirectiveThemeGroup10 tab?: MarkdownDirectiveThemeGroup11 tabs?: MarkdownDirectiveThemeGroup12 toc?: MarkdownDirectiveThemeGroup13}
Theme items use classes:
1type MarkdownDirectiveTheme = {2 classes: string3 label?: string4 name: string5}
Default Theme Names
Callout:
softsolidglass
Card:
defaultmutedglasscyanvioletemeraldamberdanger
Cards:
defaultcompactspaciousfeature-grid
Steps:
defaultmutedglasscyan
Tabs:
defaultmutedglassunderlinepills
Tab:
defaultmutedglass
Details:
defaultmutedglass
TOC:
defaultcompactsidebar
Section:
defaultmutedpanel
Columns:
defaultpanel
Cell:
defaultpanel
