Skip to content
Components

Infinite Canvas

ExperimentalExperimental — the contract and the rendering can change without notice. Own the installed copy before shipping it.

Pan-and-zoom spatial workspace for arranging content without fixed bounds.

Composition

Spatial workspace

  • <InfiniteCanvas>
    • <InfiniteCanvasContent>
      • <InfiniteCanvasItem>
        • draggable node
        </InfiniteCanvasItem>
      </InfiniteCanvasContent>
    • <InfiniteCanvasControls />
    </InfiniteCanvas>

Installation

The Control UI source installs this primitive from src/registry/sources/control-ui/ui/infinite-canvas.tsx.

Registry command
See registry manifest

Dependencies

Canvas gridsrc/registry/lib/canvas-grid.tsUtil
ButtonbuttonPrimitive

Raw code

Primary installed source

src/registry/sources/control-ui/ui/infinite-canvas.tsx

Knobs

Typed custom properties the recipe paints with. Set one on the root — style, a utility class, or a skin — and every slot inherits it.

--cui-infinite-canvas-* · 11 knobsHow the cascade resolves
--cui-infinite-canvas-radius<length-percentage>max( var(--radius-panel), calc( var(--cui-infinite-canvas-controls-radius) + clamp(0px, calc(var(--cui-infinite-canvas-controls-radius) * 1000), var(--spacing) * 2) ) )
--cui-infinite-canvas-background<color>var(--canvas)
--cui-infinite-canvas-grid-dot-color<color>var(--canvas-grid-dot)
--cui-infinite-canvas-border-color<color>var(--border)
--cui-infinite-canvas-padding<length-percentage>max( calc(var(--spacing) * 2), calc(var(--cui-infinite-canvas-radius) - var(--cui-infinite-canvas-controls-radius)) )
--cui-infinite-canvas-controls-item-radius<length-percentage>min(var(--radius-sm), calc(var(--control-h-sm) / 2))
--cui-infinite-canvas-controls-padding<length-percentage>calc(var(--spacing) * 1)
--cui-infinite-canvas-controls-radius<length-percentage>calc( var(--cui-infinite-canvas-controls-item-radius) + clamp(0px, calc(var(--cui-infinite-canvas-controls-item-radius) * 1000), var(--cui-infinite-canvas-controls-padding)) )
--cui-infinite-canvas-controls-background<color>var(--card)
--cui-infinite-canvas-controls-border-color<color>var(--border)
--cui-infinite-canvas-controls-shadow*var(--shadow-sm)