diff --git a/packages/types/src/config.ts b/packages/types/src/config.ts new file mode 100644 index 0000000..50d6a2f --- /dev/null +++ b/packages/types/src/config.ts @@ -0,0 +1,18 @@ +import type { IParagraphStyleOptions } from 'docx' + +// Normal paragraphs. +export type ThemeKey = 'normal' | +// Heading. +'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'h7' | 'h8' | 'h9' | +// Table header and imageFooter. +'tableHeader' | 'imageFooter' | +// Title, subtitle, and cover info. +'title' | 'subtitle' | 'coverInfo' | +// Content and abstract. +'contentTitle' | 'abstractTitle' | 'keywords' | +// Code, mark. +'code' | 'mark' + +export interface ThemeConfig extends IParagraphStyleOptions { + id: ThemeKey +} diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index c9f6f04..a7ad1e2 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -1 +1,2 @@ export * from './types' +export * from './config' diff --git a/packages/types/src/types.ts b/packages/types/src/types.ts index 465df98..a6c6a78 100644 --- a/packages/types/src/types.ts +++ b/packages/types/src/types.ts @@ -1,3 +1,5 @@ +import type { IRunOptions } from 'docx' + export interface ReportConfig{ title: string logo?: string @@ -11,4 +13,28 @@ export interface ReportConfig{ export interface ReportMarkdown{ raw: string frontmatter: ReportConfig + content: ReportMarkdownSection[] +} + +export type MarkdownItTokenType = 'strong_open' | 'em_open' | 's_open' | 'mark_open' | 'html_inline' | 'text' | 'code_inline' + +export interface ContentBase{ + type: string + children?: ContentBase[] +} + +export interface ReportMarkdownSection extends ContentBase { + type: 'section' + children: ReportMarkdownParagraph[] +} + +export interface ReportMarkdownParagraph extends ContentBase{ + type: 'paragraph' | 'heading' + children: ReportMarkdownParagraphChild[] + level?: number +} + +export interface ReportMarkdownParagraphChild extends ContentBase{ + type: 'text' | 'image' + config: IRunOptions }