Krizaka
Documentation

Iso

The isometric kit: luminous objects built from the Krizaka vocabulary (hexagons, cut corners, the node) on a perspective grid — a hero driven by data (IsoHub) or composed from primitives.

WebBetaLayout

Web only — React, from @krizaka/ui/iso. Beta: its API may still change in a minor version.

When to use

  • The hero illustration of a product or marketing page: what the product is, drawn as one object with two to four satellites.
  • To show a flow toward or out of something (requests into a server, support toward a creator) with values written on it.
  • An architecture teaser where a diagram would be too much: one object per layer, named on hover and focus.

When not to use

  • For a real architecture or data flow the reader must study: draw a schema with a text version.
  • As the background of a section: the light, the dome and the grid of a backdrop are lighter.Use instead: Section backdrop
  • More than one per screen: the hero object is unique, the rest of the page stays calm.

Installation

Install

npm install @krizaka/ui@beta @krizaka/tailwind@beta @krizaka/tokens@beta tailwindcss

Styles

@import "tailwindcss";
@import "@krizaka/tailwind";
@import "@krizaka/ui/tailwind.css";

Import

import { IsoHub, IsoScene, IsoPrism, IsoStack, IsoDome, IsoTile, IsoLink, IsoNode, IsoLabel } from "@krizaka/ui/iso";

Examples

Sovereign servers (Orazaka)

Three named stages under a dome, a lit core; chats and documents flow in, answers flow out. Hover or tab to explore.

A stack of three servers — gateway, models, data — under a dome; chats and documents flow in, answers flow out.

Support toward a creator (Orochia)

The creator in the centre, tips, unlocks, auctions and challenges flowing toward them, their amounts on the links, 90 % pinned above.

A creator at the centre receives tips, unlocks, auction bids and challenge pledges; 90 % of each goes to them.

Composed by hand

The primitives — scene, links, dome, prisms, node, tiles — painted back to front with an entrance order.

Still frame

animated={false}: the composed picture prefers-reduced-motion shows.

Props

IsoDome

A dome of light over what it protects: a rim on the floor, a glass arc, a sheen that travels along it. Draw its rim before the objects it covers and the dome after them (part="rim", part="arc"), or let IsoHub do it.

PropTypeDefaultDescription
animatedbooleantrueMotion: a sheen travels along the dome. false keeps it still.
atVec2[0, 0]Its centre on the floor plan.
heightnumber250Its height.
labelstring—Its name ("Your infrastructure") — passed translated; shown at the top of the dome, always.
part"both" | "rim" | "arc"bothrim (the floor ellipse, drawn first), arc (the glass, drawn last) or both.
radiusnumber158The radius of its rim on the floor.

IsoHub

The hero, driven by data: a stack under an optional dome, satellites on both sides, a flow of light between each satellite and the centre. Objects are painted back to front and the camera frames exactly what is drawn.

PropTypeDefaultDescription
layersrequiredreadonly IsoLayer[]—The hero object in the centre: its stages, bottom first.
anglesreadonly number[]—The angle of each satellite, in degrees (0: lower right, 90: lower left, 180: upper left, 270: upper right), to place them by hand.
animatedbooleantrueMotion (entrance, breathing, flow, float). false draws the still frame — the one prefers-reduced-motion shows.
corestring | booleantrueA lit core on top of the stack; a string names it.
descriptionstring—A longer text version of what the scene shows, read by assistive technology.
domestring | boolean—A dome over the centre: true, or its name ("Your servers").
extentnumber240Half the size of the floor, in world units: what the camera frames.
gridbooleantrueThe perspective grid on the floor, fading into the page.
highlight{ readonly strong?: string; readonly text: string; }—A label pinned above the centre, its first part in the accent: { strong: "90 %", text: "to the creator" }.
labelstring—The accessible name of the scene ("A server stack under a dome") — passed translated. Without it the scene is decorative.
radiusnumber210The distance of the satellites from the centre.
satellitesreadonly IsoSatellite[][]The objects around the centre, joined to it by flows of light. The first half stands on the left, the rest on the right, top to bottom: never in front of the hero, never hidden behind it.
shapeIsoShapecutThe footprint of the stages.
sizenumber120The width of the stages.
stepnumber40The spacing of the grid's lines.
topnumber260Height above the floor the camera keeps in view, in world units.

IsoLabel

A label in a pill, always visible, pinned to a point of the scene (a share, a name).

PropTypeDefaultDescription
atrequiredVec2—Where, on the floor plan.
textrequiredstring—The text — passed translated.
strongstring—A first part in the accent, bolder ("90 %" before " to the creator").
znumber0Its height.

IsoLink

A dotted link on the floor, light flowing along it and particles crossing it — a flow between two objects.

PropTypeDefaultDescription
fromrequiredVec2—Where it starts, on the floor plan.
torequiredVec2—Where it ends, on the floor plan.
animatedbooleantrueMotion: the flow and the particles. false draws them still, resting along the link.
direction"in" | "out"outWhich way the light flows: out from from to to, in back.
durationnumber3.6Seconds a particle takes to cross it.
labelstring—A value written on it ("90 %", "Tips") — passed translated.
particlesnumber2Particles of light travelling along it (0: only the dashes flow).
route"elbow" | "straight"elbowelbow follows the floor's axes, like a circuit; straight goes directly.
znumber0The height it runs at.

IsoNode

The Krizaka node: a point of light in the accent, breathing in its glow.

PropTypeDefaultDescription
animatedbooleantrueMotion: the glow breathes. false keeps it still.
atVec2[0, 0]Where, on the floor plan.
glownumber70The radius of its glow (0: none).
indexnumber0Its rank in the entrance.
rnumber7The radius of the node.
znumber0Its height.

IsoPrism

A vertical prism — hexagonal, cut-corner or rectangular — that stacks with others on z.

PropTypeDefaultDescription
heightrequirednumber—Its height.
animatedbooleantrueMotion: entrance and loops. false keeps this object still.
atVec2[0, 0]The centre of its footprint on the floor plan (x, y).
classNamestring—Extra classes on the object's group.
cutnumber—The size of the 45° cut (shape="cut"); a sixth of the smaller side by default.
indexnumber0Its rank in the entrance: objects rise into place one after the other.
labelstring—The name shown when the pointer (or the focus) lifts the object — passed translated. It also makes it focusable.
materialIsoMaterialbaseHow it is lit.
shapeIsoShapecuthex · cut (45° cut corners) · rect.
sizenumber | Vec2120Its width (a number: square or hexagon's diameter) or width × depth.
stripboolean—A dotted light strip around its front (the LEDs of a server), blinking slowly.
znumber0The height of its base above the floor.

IsoScene

The stage: an isometric camera over a perspective grid that fades into the page. Its animations pause off screen and wait for the page to settle (MotionObserver); everything stops under prefers-reduced-motion.

PropTypeDefaultDescription
animatedbooleantrueMotion (entrance, breathing, flow, float). false draws the still frame — the one prefers-reduced-motion shows.
childrenReactNode—The objects, painted in order: put the farthest first (or use IsoHub, which sorts them).
descriptionstring—A longer text version of what the scene shows, read by assistive technology.
extentnumber240Half the size of the floor, in world units: what the camera frames.
gridbooleantrueThe perspective grid on the floor, fading into the page.
labelstring—The accessible name of the scene ("A server stack under a dome") — passed translated. Without it the scene is decorative.
stepnumber40The spacing of the grid's lines.
topnumber260Height above the floor the camera keeps in view, in world units.

IsoStack

A stack of stages on a plinth with a lit core on top — a server, a model, a pile of layers — driven by data.

PropTypeDefaultDescription
layersrequiredreadonly IsoLayer[]—The stages, bottom first; they stack one after the other at the entrance.
animatedbooleantrueMotion: entrance and loops. false keeps the stack still.
atVec2[0, 0]The centre of the stack on the floor plan.
corestring | booleantrueA lit hexagonal core on top, its node glowing; a string names it.
gapnumber4The space between two stages.
indexnumber0The rank of the first stage in the scene's entrance.
plinthbooleantrueA hexagonal plinth under the stack.
shapeIsoShapecutThe footprint of the stages.
sizenumber120The width of the stages.

IsoTile

A satellite: a thin cut-corner tile that floats beside the hero object, a pictogram on its top.

PropTypeDefaultDescription
atrequiredVec2—Its centre on the floor plan.
animatedbooleantrueMotion: entrance and loops. false keeps this object still.
classNamestring—Extra classes on the object's group.
floatbooleantrueIt floats gently.
glyphIsoGlyphnoneThe pictogram on its top.
indexnumber0Its rank in the entrance: objects rise into place one after the other.
labelstring—The name shown when the pointer (or the focus) lifts the object — passed translated. It also makes it focusable.
materialIsoMaterialaccentHow it is lit.
sizeVec2[76, 52]Width × depth.
znumber90The height it floats at.

Accessibility

  • A named scene is a group with its label and its description (<desc>); an unnamed one is decorative (aria-hidden).
  • Each named object is an image (role="img") named by its label and focusable; the drawn labels are decorative copies.
  • Under prefers-reduced-motion (and with animated={false}) the scene is a composed still frame: objects in place, light resting along the links — not an animation cut halfway.
  • Server-rendered static SVG, no client JavaScript; with MotionObserver mounted its loops pause off screen and wait for the page to settle.

Keyboard

KeysAction
TabVisits each named object of the scene: it lifts and shows its label, as under the pointer.

Best practices

  • Start with IsoHub: stages, satellites and a highlight are data; the hub places satellites on both sides (never in front of the hero, never hidden behind it) and frames exactly what it draws.
  • Name the scene (label) and say in description what it shows; name the objects (label) to make them explorable with the pointer and the keyboard — leave everything unnamed for a purely decorative scene.
  • Put the scene in a brand (.brand-<id>): the light, the core and the flows follow the accent, in both themes.
  • Composing by hand: paint back to front, and number the entrance with index so objects rise in a meaningful order.
  • Pass words translated: labels, values on links, the highlight.

Generated from the code of @krizaka/ui 2.3.0: its meta.ts, its examples and its types.Edit this documentation on GitHub

On this page