68 lines
1.5 KiB
TypeScript
68 lines
1.5 KiB
TypeScript
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'
|
|
} |