My App
BoardKitFrontend

useGrid

Grid visibility, snap-to-grid, and grid size

useGrid controls the grid overlay and snap-to-grid behavior.

Signature

function useGrid(): UseGridResult;

Return Type

interface UseGridResult {
    gridConfig: GridConfig;
    toggleGrid: () => void;
    toggleSnap: () => void;
    setGridSize: (size: number) => void;
}
interface GridConfig {
    enabled: boolean;
    size: number;          // default: 20
    snapEnabled: boolean;
    snapThreshold: number; // default: 5
    visible: boolean;
}
PropertyDescription
gridConfigCurrent grid configuration
toggleGridToggle grid enabled/visible state
toggleSnapToggle snap-to-grid independently
setGridSizeChange the grid cell size (in world units)

Usage

import { useGrid } from '@hfu.digital/boardkit-react';

function GridControls() {
    const { gridConfig, toggleGrid, toggleSnap, setGridSize } = useGrid();

    return (
        <div>
            <button onClick={toggleGrid}>
                Grid: {gridConfig.enabled ? 'On' : 'Off'}
            </button>
            <button onClick={toggleSnap}>
                Snap: {gridConfig.snapEnabled ? 'On' : 'Off'}
            </button>
            <select
                value={gridConfig.size}
                onChange={(e) => setGridSize(Number(e.target.value))}
            >
                <option value={10}>10px</option>
                <option value={20}>20px (default)</option>
                <option value={40}>40px</option>
            </select>
        </div>
    );
}

Behavior

  • toggleGrid() enables/disables the grid and its visibility together
  • toggleSnap() toggles snap independently (useful for visible grid without snap, or snap without visible grid)
  • When snap is enabled, element positions are rounded to the nearest grid intersection during creation and movement

On this page