Bullet Chart
A value against a target over qualitative ranges, one compact row per measure on a shared scale — a dashboard-friendly replacement for a row of gauges. Drawn as SVG by the component, rendered on the server and themed by the design tokens.
Part of @tectra-ng/charts (npm install @tectra-ng/charts, also included in tectra-ng).
Basic
Each row has the ranges as shaded bands (the first, the darkest, is "poor"), the value as a bar and the target as a mark. ranges and max are shared by every row.
| Category | Value | Target |
|---|---|---|
| Revenue | 78% | 90% |
| New clients | 64% | 70% |
| Retention | 93% | 88% |
| NPS | 51% | 75% |
Own ranges
ranges on an item override the shared ones, so each measure keeps its own thresholds on the common scale.
| Category | Value | Target |
|---|---|---|
| Search | 320 | 400 |
| Checkout | 610 | 500 |
| Profile | 180 | 250 |
Colors
color on an item paints its value bar — for example by status.
| Category | Value | Target |
|---|---|---|
| Uptime | 96 | 99 |
| Latency | 72 | 80 |
| Errors | 38 | 60 |
Events
barClick reports the clicked row with its value and target.
| Category | Value | Target |
|---|---|---|
| Sales | 64 | 70 |
| Leads | 82 | 75 |
Click a row.
Loading and empty
loading keeps the size with a skeleton; empty items show "No data".
Live
New items redraw in place — value bars slide to their new length.
| Category | Value | Target |
|---|---|---|
| North | 20 | 70 |
| South | 43 | 60 |
| East | 71 | 80 |
Accessibility
Tab to the chart: ↑/↓ walk the rows and each one is announced with its value and target; Home / End jump to the ends. Screen readers also get a summary and a hidden table.
| Category | Value | Target |
|---|---|---|
| Velocity | 62 | 70 |
| Quality | 81 | 75 |
Design tokens
dt sets the row height, the range shades, the bar and target size and colour of one chart.
| Category | Value | Target |
|---|---|---|
| Clarity | 74 | 80 |
| Speed | 58 | 65 |
Pass through
pt reaches the parts — range, bar, target, grid, axis, plot, tooltip and more.
| Category | Value | Target |
|---|---|---|
| Plan A | 66 | 75 |
| Plan B | 88 | 80 |
Unstyled
unstyled removes the tectra styles: no tokens, no rounding, no motion — the geometry, the tooltip and the keyboard stay, ready for your own CSS.
| Category | Value | Target |
|---|---|---|
| A | 55 | 65 |
| B | 80 | 70 |