mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-02-11 02:20:08 +00:00
46 lines
1.2 KiB
TypeScript
46 lines
1.2 KiB
TypeScript
import type { CSSProperties } from 'vue'
|
|
|
|
interface GridOptions {
|
|
/** Minimum width for each grid item (default: 15rem) */
|
|
minWidth?: string
|
|
/** Maximum width for each grid item (default: 1fr) */
|
|
maxWidth?: string
|
|
/** Padding around the grid (default: 0) */
|
|
padding?: string
|
|
/** Gap between grid items (default: 1rem) */
|
|
gap?: string
|
|
/** Fixed number of columns (overrides auto-fill with minmax) */
|
|
columns?: number
|
|
}
|
|
|
|
/**
|
|
* Creates CSS grid styles for responsive grid layouts
|
|
* @param options Grid configuration options
|
|
* @returns CSS properties object for grid styling
|
|
*/
|
|
export function createGridStyle(options: GridOptions = {}): CSSProperties {
|
|
const {
|
|
minWidth = '15rem',
|
|
maxWidth = '1fr',
|
|
padding = '0',
|
|
gap = '1rem',
|
|
columns
|
|
} = options
|
|
|
|
// Runtime validation for columns
|
|
if (columns !== undefined && columns < 1) {
|
|
console.warn('createGridStyle: columns must be >= 1, defaulting to 1')
|
|
}
|
|
|
|
const gridTemplateColumns = columns
|
|
? `repeat(${Math.max(1, columns ?? 1)}, 1fr)`
|
|
: `repeat(auto-fill, minmax(${minWidth}, ${maxWidth}))`
|
|
|
|
return {
|
|
display: 'grid',
|
|
gridTemplateColumns,
|
|
padding,
|
|
gap
|
|
}
|
|
}
|