v1.0
Registry / Page 03·04

Board

Themed primitives for custom grids and multiple drop targets.

Use Board.Root, Target, and Item when a single dashboard or list preset is too restrictive. Targets share one board, so widgets can move between them.

Preview

Svelte Example.svelte
Press Enter to grab or resize widgets. Once grabbed, use Arrow keys to move/resize the widget, Enter to confirm the action, or Esc to cancel it.

Planned

Write the docs

Ready

Record the demo

Installation

Start with a Tailwind project configured for shadcn and its theme variables. This copies editable source into your components directory; it does not install a second theme.

npx shadcn-svelte@latest add https://flexiboards.dev/r/svelte/flexi-board.json

API

PartUnderlying APIDefaults
RootFlexiBoardTheme foreground; widgets fully draggable.
TargetFlexiTargetMuted, bordered container; padded grid with a minimum drop area and gap-3.
ItemFlexiWidgetCard surface, border, radius, and grabbed/shadow styles.
Grabber / ResizerGrabber / ResizerLabeled, focus-visible handle buttons.

Props pass through to the underlying primitive. Controller bindings and onfirstcreate callbacks remain available. Item class functions receive the widget controller.

Choosing a layout

Configure each target with a flow grid or a free-form grid. Use unique, stable target keys for persistence. Set the target identifier with key.

Style the outer target with containerClass; class styles the grid itself. Put target headings in the header snippet so they are rendered outside the widget declarations.

Behavior

The source wrappers style the underlying Flexiboards components. Use the existing canDrop, widget defaults, layout callbacks, and controller APIs for application rules. Explicit configuration overrides the wrappers’ defaults.

Resizing is opt-in here: set resizability="both" on an item (or through widget defaults) and add a Resizer. Dashboard enables it for you.

Application layout

Compose targets into your application’s board layout. Add your own headings, navigation, and actions around them.

Motion

Movement uses short CSS transitions by default and respects reduced motion. Compare presets or disable transitions.