Chart Guidelines
The design system behind Composio chart cards — surface, type, color, the dither engine, chrome rules, and how each template implements them.
Anatomy — the tokens on a real card
Placeholder cards rendered by the real engine, one concern per figure. Red spans are measurements (px in the 1200×675 frame); red tags name the rule at that exact spot.
Surface & spacing
Typography
Two faces only: Geist Sans for names and titles, JetBrains Mono for every number, unit, and piece of chrome. Sans never exceeds weight 600; mono carries all uppercase+tracking treatments. Specimens below render in the real faces on the card ground.
Color
Seven dither seeds carry every mark. A series owns one color; the engine varies only its alpha (the “color vs opacity” rule), which is why the same chart reads correctly at any density. Each swatch below is painted live with the engine's own Bayer math — solid origin accent, dissolving fade.
The dither engine
Data & chrome rules
- Sort largest-first; the vertical-bars Δ bracket reads best from the first row and worst from the last.
- Distinct items take distinct hues; the same item keeps its hue across every panel of a card.
- grey is reserved for “Other”, worst, and no-data.
- Titles in sentence case — CSS title-cases them and preserves existing caps (DeepSeek, V4).
- Formatters are declarative JSON ({prefix, suffix, decimals, locale, plus}), never code.
- Logos come from the embedded asset: library or data: URIs; external URLs are dropped.
- Footer branding (wordmark, badge pill) is hidden by default and opt-in per card.
How the templates achieve it
Six templates implement the system; each one's job is to spend the tokens above on its data shape. Numbers here are the implementation constants in standalone/gen.mjs.