[ rules ]

A taste system disguised as charts.

Three constraints. Break any one and it becomes another chart library. Keep them and the page looks typeset, not plotted.

01

Glyphs do the drawing.

Borders are dashes and plus signs. Bars and cells are characters. To animate, change a color or swap a glyph. Anything monospace will host it: markdown, a README, a terminal.

[ LOAD ]
  1. cpu 72
  2. ram 34
  3. ssd 91

02

The frame is the brand.

Every graph sits in a dashed edge with a [ TITLE ] and corner marks. Swap the mark. Keep the discipline. The wrapper is Graph; compose with Body, Rule, Track, Tick.

[ FRAME ]

Graph · GraphBody · GraphRule · GraphTrack

Dashed edge. [ TITLE ]. Corner marks. This is Graph.

03

One accent, on purpose.

Unused rows recede. Color is a decision. Default is palette="mono". Pass duo or multi only when a second series earns its keep. Entrances stay under 220ms.

[ BUNDLE ]
  • docs
  • site
  • pkg
  • js
  • css
  • images

[ do ]

Let unused rows go quiet.

Accent the current step, the amount due, the series that changed. Everything else stays muted ink on the dashed rail.

[ don't ]

Do not plot in SVG.

No canvas, no chart config object, no rainbow series. If it cannot be typed, it does not belong in the frame.