Every part of the dossier can be moved: control blocks dock in the title, top, bottom and side bars, in the thumbnail rail or under a card's header, or float over the pages; the rail and the cards change sides, float and resize.

1 · try it

preset

The window's parts in the title bar, every control in the tray, notes on the left and findings on the right.

consulting-agreement.pdf
4 detected
CONSULTING AGREEMENT

This Consulting Agreement is entered into on August 1, 2026 by and between:

Consultant: Jordan Avery Consulting LLC, located at 4200 Bridgeway Blvd, Sausalito, CA, and

Client: Northwind Trading Co., located at 88 Harbor Point Rd, Seattle, WA.

1. Services. Consultant shall provide the services described in Schedule A.

2. Terms. Fees of $12,500 are due within 30 days of invoice.

3. Terms. Fees of $12,500 are due within 30 days of invoice.

// 4 detected
⋮⋮ / ⋯
Drag a grip to move a block, the rail or a card. Only the grip drags; everything else still clicks.
drop strips
While you drag, empty bars appear as dashed strips over the pages (top, left, right), and the rail and cards show a drop slot.
⇄ / ⇅ · ↓
A floating block switches between horizontal and vertical, and ↓ puts it back where it started.
double-click
Double-click any grip to put that part back in its default place.
edges
Drag the edge of the rail or a docked card that faces the pages, or the corner of a floating card. Arrow keys resize a focused edge.
remembered
The arrangement is kept per viewer (layoutStorageKey); this page starts from each preset instead.

2 · where everything can go

title bar
window dots, file name and status reorder here only · any control block can dock here
top bar
any block · hidden while empty
left side bar
any block, vertical · hidden while empty
rail
left or right · resize · blocks dock in it
card
docked left or right · resize the inner edge · blocks dock under its header
pages
floating blocks (⇄ / ⇅, ↓) · floating cards (corner resize)
card
docked right
right side bar
any block, vertical
bottom bar (tray)
the // comment stays at its left · any block · the default home
alert line
above the tray, when there is one
The window's own parts stay in the title bar; any block can join them.Drop a block over the pages to float it; drop a card there to float it as a window.
whattitletopbottomsidesrail / cardfloatresize
tools, panels, view, zoom, commandsyesyesyes (home)yes, verticalyesyes, ⇄ / ⇅—
window dots, file name, statusreorder only——————
thumbnail rail———left or right of the pages——width
notes, findings cards———left or right of the pages—yeswidth; + height when floating

3 · states

progress
Click Analyze. The fill is the dark cyan ink under white text; the rest keeps dark text on pale cyan. The middle one is disabled while running, as apps do, and keeps its full colour.
hover each
4 detected
Quiet controls turn grey, selected ones take a deeper shade of their colour, bordered pickers (page chips, thumbnails) turn cyan, and the green call to action darkens with its text staying dark. Grips stay faint until their block is hovered.

4 · how it's built

This section is drawn with the kit's own diagram blocks (LayerStack, Comparison, DataTable), the same ones that build design pages.

shells

  • DyniaDossier
  • DyniaDashboard
  • DyniaDiagramPage
build on

blocks

  • FindingsList
  • DataTable
  • BarSeries
  • LayerStack
  • Comparison
  • ControlGroup
  • docking hooks

showcases (this page)

  • DyniaDockingShowcase
  • stories
build on

primitives

  • Button
  • Chip · Tag
  • Surface
  • Heading
  • Connector
  • Table
  • Callout
  • DockGrip
build on

tokens

  • DYNIA
  • dyniaVars()
  • --dy-radius

Utility classes scanned by each app (not recommended)

every app

  • scans the kit's source
  • content globs to set up

Each app repeats the setup, and a missed glob drops styles without an error.

One scoped stylesheet (recommended)

DyniaStyles

  • dy- classes
  • --dy-* variables
  • one fragment per layer

It works wherever the kit renders, and a test keeps every class in exactly one fragment.

Layer, contents, import

layerholdsimport
tokensthe colours, type and corner radius as --dy-* variables@n-uf/dynia/tokens
primitivesapp-agnostic pieces with no data semantics@n-uf/dynia/primitives
blockscompositions of primitives: cards, lists, tables, charts, window chrome, docking@n-uf/dynia/blocks
shellswhole screens: they arrange blocks and render the stylesheet@n-uf/dynia/shells