import { IsString, IsUUID, IsBoolean, IsOptional, IsObject, IsIn } from 'class-validator'; export type PageLayoutType = 'detail' | 'list'; export class CreatePageLayoutDto { @IsString() name: string; @IsUUID() objectId: string; @IsIn(['detail', 'list']) @IsOptional() layoutType?: PageLayoutType = 'detail'; @IsBoolean() @IsOptional() isDefault?: boolean; @IsObject() layoutConfig: { // For detail layouts: grid-based field positions fields: Array<{ fieldId: string; x?: number; y?: number; w?: number; h?: number; // For list layouts: field order (optional, defaults to array index) order?: number; }>; relatedLists?: string[]; }; @IsString() @IsOptional() description?: string; } export class UpdatePageLayoutDto { @IsString() @IsOptional() name?: string; @IsBoolean() @IsOptional() isDefault?: boolean; @IsObject() @IsOptional() layoutConfig?: { fields: Array<{ fieldId: string; x?: number; y?: number; w?: number; h?: number; order?: number; }>; relatedLists?: string[]; }; @IsString() @IsOptional() description?: string; }