diff --git a/frontend/src/types/cad.types.ts b/frontend/src/types/cad.types.ts new file mode 100644 index 0000000..ced82a7 --- /dev/null +++ b/frontend/src/types/cad.types.ts @@ -0,0 +1,75 @@ +/** + * Shared CAD type definitions — single source of truth. + * Import from here instead of duplicating interfaces across services/components. + */ + +export interface CADLayer { + id: string; + name: string; + visible: boolean; + locked: boolean; + color?: string; + lineType?: string; + transparency?: number; + sortOrder?: number; +} + +export interface CADProperties { + fill?: string; + stroke?: string; + strokeWidth?: number; + rotation?: number; + lineType?: 'solid' | 'dashed' | 'dotted'; + radius?: number; + x1?: number; + y1?: number; + x2?: number; + y2?: number; + points?: Array<{ x: number; y: number }>; + text?: string; + fontSize?: number; + startAngle?: number; + endAngle?: number; + [key: string]: unknown; +} + +export interface CADElement { + id: string; + type: string; + layerId: string; + x: number; + y: number; + width: number; + height: number; + properties: CADProperties; +} + +export interface ExportData { + version: string; + exportedAt: number; + projectMeta: Record; + layers: CADLayer[]; + elements: CADElement[]; +} + +export interface ImportData { + version: string; + exportedAt: number; + projectMeta: Record; + layers: CADLayer[]; + elements: CADElement[]; +} + +export interface ExportOptions { + includeHiddenLayers?: boolean; + includeInvisibleElements?: boolean; + pageSize?: 'a4' | 'a3' | 'letter'; + landscape?: boolean; +} + +/** Unified return type for all export functions. */ +export interface ExportResult { + success: boolean; + data?: string; + error?: string; +}