export type PaperSize = 'A4' | 'Letter'; export type StyleCategory = string; export interface DocxBorder { color: string; space: number; style: string; // 'single' | 'double' | 'dotted' | 'dashed' size: number; } export interface DocxStyleConfig { font: string; size: number; // in pt color: string; bold?: boolean; italic?: boolean; underline?: boolean; allCaps?: boolean; smallCaps?: boolean; tracking?: number; // Letter spacing align?: 'left' | 'center' | 'right' | 'both'; // 'both' is justify spacing?: { before: number; after: number; line: number }; border?: { top?: DocxBorder; bottom?: DocxBorder; left?: DocxBorder; right?: DocxBorder; }; shading?: { fill: string; // Hex color color: string; // usually 'auto' style: string; // usually 'clear' }; } export interface StyleOption { id: string; name: string; category: StyleCategory; description: string; vibe: string; googleFontsImport: string; // Word Export Configuration wordConfig: { heading1: DocxStyleConfig; heading2: DocxStyleConfig; body: DocxStyleConfig; accentColor: string; // Used for graphical elements }; // CSS for Web Preview (Must match wordConfig manually for fidelity) previewCss: string; } export interface GenerationConfig { styleId: string; paperSize: PaperSize; content: string; } export enum AppState { UPLOAD = 'UPLOAD', CONFIG = 'CONFIG', GENERATING = 'GENERATING', PREVIEW = 'PREVIEW', ERROR = 'ERROR' }