/** * Pure helpers for editable dashboard grid layouts (react-grid-layout style). */ export interface GridItem { id: string; x: number; y: number; w: number; h: number; minW?: number; minH?: number; maxW?: number; maxH?: number; static?: boolean; } export interface LayoutGridOptions { cols?: number; /** Vertical compaction after move/resize */ compact?: boolean; } export declare const DEFAULT_COLS = 12; export declare const DEFAULT_ROW_HEIGHT = 80; export declare const DEFAULT_GAP = 12; export declare function clampItem(item: GridItem, cols?: number): GridItem; export declare function rectsOverlap(a: GridItem, b: GridItem): boolean; export declare function findCollisions(layout: GridItem[], item: GridItem): GridItem[]; /** Push colliding items down (simple collision resolution). The moved item keeps its target slot. */ export declare function resolveCollisions(layout: GridItem[], moved: GridItem, cols?: number): GridItem[]; /** Compact items upward to remove vertical gaps. */ export declare function compactLayout(layout: GridItem[], cols?: number): GridItem[]; export declare function updateItem(layout: GridItem[], id: string, patch: Partial, options?: LayoutGridOptions): GridItem[]; export declare function addItem(layout: GridItem[], item: GridItem, options?: LayoutGridOptions): GridItem[]; export declare function removeItem(layout: GridItem[], id: string, options?: LayoutGridOptions): GridItem[]; export declare function serializeLayout(layout: GridItem[]): string; export declare function parseLayout(json: string): GridItem[]; export declare function layoutBounds(layout: GridItem[]): { cols: number; rows: number; }; export type GridResizeEdge = 'se' | 'e' | 's' | 'sw' | 'w' | 'ne' | 'n' | 'nw'; /** * Compute next x/y/w/h when dragging a resize edge/corner. * Anchors the opposite side for west/north edges. */ export declare function resizeItemByEdge(item: Pick, edge: GridResizeEdge, dx: number, dy: number, cols?: number): Pick; /** * Scale X/W when the column count changes so widgets keep relative proportions. */ export declare function rescaleLayout(layout: GridItem[], fromCols: number, toCols: number, options?: LayoutGridOptions): GridItem[]; export type GridDensity = 'comfortable' | 'default' | 'compact' | 'dense'; export declare const GRID_DENSITY: Record;