export interface StringPropDefinition { type: 'String'; required: boolean; placeholder?: string; description?: string; default?: string; enum?: string[]; i18n?: boolean; } export interface NumberPropDefinition { type: 'Number'; required: boolean; description?: string; default?: number; enum?: number[]; } export interface BooleanPropDefinition { type: 'Boolean'; required: boolean; description?: string; default?: boolean; } export interface ComponentsPropDefinition { type: 'List of Components'; required: boolean; description?: string; } export type MetaPropDefinition = StringPropDefinition | NumberPropDefinition | BooleanPropDefinition | ComponentsPropDefinition; export type MetaPropsDefinition = { [Key in keyof Props]: MetaPropDefinition; }; export type ComponentPlacement = 'root' | 'child'; export interface FontMeta { name: string; webSafe: boolean; } export declare const FONT_SIZES: number[]; export interface WysiwygTemplate { name: string; description: string; content?: string; recommended?: boolean; iconUrl?: string; config: WysiwygConfig; } export interface WysiwygDefinitions { fonts: FontMeta[]; components: Record; templates: WysiwygTemplate[]; } export type WysiwygComponentCategory = 'container' | 'section' | 'list' | 'basic'; export interface WysiwygComponentMeta { editor: { displayName: string; category: WysiwygComponentCategory; description: string; image?: string; }; placements: ComponentPlacement[]; propsDefinition: MetaPropsDefinition; } export interface Color { main: string; light?: string; dark?: string; } export interface ModePalette { primary?: Color; secondary?: Color; background?: { paper: string; default: string; }; success?: Color; warning?: Color; error?: Color; info?: Color; action?: { active: string; }; text?: { primary: string; secondary: string; money: string; disabled: string; }; divider?: string; perks?: { level1: string; level2: string; level3: string; level4: string; level5: string; }; avatar?: { avatar1: string; avatar2: string; avatar3: string; avatar4: string; avatar5: string; avatar6: string; avatar7: string; avatar8: string; }; } export type WysiwygConfigComponentProp = string | number | boolean | WysiwygConfigComponent[]; export type WysiwygConfigComponentProps = Record; export interface WysiwygConfigComponent { id: string; name: Name; props: WysiwygConfigComponentProps; } export interface WysiwygConfigPage extends WysiwygConfigComponent<'Page'> { id: string; name: 'Page'; props: { title: string; path: string; elements: WysiwygConfigComponent[]; }; } export type WysiwygPaletteMode = 'light' | 'dark'; export interface WysiwygConfigThemeFont { base: string; baseSize: number; } export interface WysiwygConfigThemePalette { dark: ModePalette; light: ModePalette; } export interface WysiwygConfigPageTemplate { head?: string; } export interface WysiwygConfigTheme { lockedColorMode: WysiwygPaletteMode | null; font: WysiwygConfigThemeFont; palette: WysiwygConfigThemePalette; } export interface WysiwygPagesConfig { template: WysiwygConfigPageTemplate; structure: WysiwygConfigPage[]; } export interface WysiwygConfig { theme: WysiwygConfigTheme; pages: WysiwygPagesConfig; }