UNPKG

storyblok-rich-text-react-renderer

Version:
212 lines (202 loc) 7.3 kB
declare module 'storyblok-rich-text-react-renderer' { import { ReactNode, JSX } from 'react'; type LinkCustomAttributes = { rel?: string; title?: string; [key: string]: any; }; export type StoryblokRichtextContentType = | 'heading' | 'code_block' | 'paragraph' | 'blockquote' | 'ordered_list' | 'bullet_list' | 'list_item' | 'horizontal_rule' | 'hard_break' | 'image' | 'emoji' | 'table' | 'tableHeader' | 'tableRow' | 'tableCell' | 'blok' | 'text'; export type StoryblokRichtextMark = | 'bold' | 'italic' | 'strike' | 'underline' | 'code' | 'link' | 'styled' | 'subscript' | 'superscript' | 'highlight' | 'textStyle' | 'anchor'; export type StoryblokRichtextContent = { type: StoryblokRichtextContentType; attrs?: { level?: number; class?: string; src?: string; alt?: string; title?: string; name?: string; emoji?: string; fallbackImage?: string; colspan?: number; rowspan?: number; colwidth?: number[]; backgroundColor?: string; order?: number; body?: Array<{ _uid: string; }>; }; marks?: { type: StoryblokRichtextMark; attrs?: { linktype?: string; href?: string; target?: string; anchor?: string; uuid?: string; class?: string; color?: string; id?: string; custom?: LinkCustomAttributes; }; }[]; text?: string; content?: StoryblokRichtextContent[]; }; export type StoryblokRichtext = { type: 'doc'; content: StoryblokRichtextContent[]; }; export const NODE_HEADING = 'heading'; export const NODE_CODEBLOCK = 'code_block'; export const NODE_PARAGRAPH = 'paragraph'; export const NODE_QUOTE = 'blockquote'; export const NODE_OL = 'ordered_list'; export const NODE_UL = 'bullet_list'; export const NODE_LI = 'list_item'; export const NODE_HR = 'horizontal_rule'; export const NODE_BR = 'hard_break'; export const NODE_IMAGE = 'image'; export const NODE_EMOJI = 'emoji'; export const NODE_TABLE = 'table'; export const NODE_TABLE_HEADER = 'tableHeader'; export const NODE_TABLE_ROW = 'tableRow'; export const NODE_TABLE_CELL = 'tableCell'; export const MARK_BOLD = 'bold'; export const MARK_ITALIC = 'italic'; export const MARK_STRIKE = 'strike'; export const MARK_UNDERLINE = 'underline'; export const MARK_CODE = 'code'; export const MARK_LINK = 'link'; export const MARK_STYLED = 'styled'; export const MARK_SUBSCRIPT = 'subscript'; export const MARK_SUPERSCRIPT = 'superscript'; export const MARK_HIGHLIGHT = 'highlight'; export const MARK_TEXT_STYLE = 'textStyle'; export const MARK_ANCHOR = 'anchor'; export interface RenderOptions { blokResolvers?: { [key: string]: (props: Record<string, unknown>) => JSX.Element | null; }; defaultBlokResolver?: ( name: string, props: Record<string, unknown> & { _uid: string } ) => JSX.Element | null; markResolvers?: { [MARK_BOLD]?: (children: ReactNode) => JSX.Element | null; [MARK_CODE]?: (children: ReactNode) => JSX.Element | null; [MARK_ITALIC]?: (children: ReactNode) => JSX.Element | null; [MARK_STRIKE]?: (children: ReactNode) => JSX.Element | null; [MARK_UNDERLINE]?: (children: ReactNode) => JSX.Element | null; [MARK_SUBSCRIPT]?: (children: ReactNode) => JSX.Element | null; [MARK_SUPERSCRIPT]?: (children: ReactNode) => JSX.Element | null; [MARK_LINK]?: ( children: ReactNode, props: { linktype?: string; href?: string; target?: string; anchor?: string; uuid?: string; custom?: LinkCustomAttributes; } ) => JSX.Element | null; [MARK_STYLED]?: (children: ReactNode, props: { class?: string }) => JSX.Element | null; [MARK_HIGHLIGHT]?: ( children: ReactNode, props: { color?: string } ) => JSX.Element | null; [MARK_TEXT_STYLE]?: ( children: ReactNode, props: { color?: string } ) => JSX.Element | null; [MARK_ANCHOR]?: (children: ReactNode, props: { id?: string }) => JSX.Element | null; }; nodeResolvers?: { [NODE_BR]?: () => JSX.Element | null; [NODE_CODEBLOCK]?: ( children: ReactNode, props: { class: string } ) => JSX.Element | null; [NODE_HEADING]?: ( children: ReactNode, props: { level: 1 | 2 | 3 | 4 | 5 | 6 } ) => JSX.Element | null; [NODE_HR]?: () => JSX.Element | null; [NODE_IMAGE]?: ( children: ReactNode, props: { alt?: string; title?: string; src?: string; } ) => JSX.Element | null; [NODE_EMOJI]?: ( children: ReactNode, props: { name?: string; emoji?: string; fallbackImage?: string; } ) => JSX.Element | null; [NODE_TABLE]?: (children: ReactNode) => JSX.Element | null; [NODE_TABLE_HEADER]?: ( children: ReactNode, props: { colspan?: number; rowspan?: number; colwidth?: number[]; backgroundColor?: string; } ) => JSX.Element | null; [NODE_TABLE_ROW]?: (children: ReactNode) => JSX.Element | null; [NODE_TABLE_CELL]?: ( children: ReactNode, props: { colspan?: number; rowspan?: number; colwidth?: number[]; backgroundColor?: string; } ) => JSX.Element | null; [NODE_LI]?: (children: ReactNode) => JSX.Element | null; [NODE_OL]?: (children: ReactNode) => JSX.Element | null; [NODE_PARAGRAPH]?: (children: ReactNode) => JSX.Element | null; [NODE_QUOTE]?: (children: ReactNode) => JSX.Element | null; [NODE_UL]?: (children: ReactNode) => JSX.Element | null; }; defaultStringResolver?: (str: string) => JSX.Element; textResolver?: (str: string) => string; } export function render(document: StoryblokRichtext | unknown, options?: RenderOptions); }