Parent
#6 — BarChart — reusable vertical bar chart component
What to build
Render actual bars from BarItem[] data using 8-block unicode precision (▁▂▃▄▅▆▇█). Each bar occupies a column of computed width, with 1-space gap between bars. Bar height proportional to value / maxValue, mapped to 8 equal-sized buckets per text row. Any positive value gets at least ▁.
Y-axis with auto-density (every 1st/2nd/3rd row based on height) and configurable yAxisSpacing override. Y-axis values formatted via formatValue callback (default: String(Math.round(v))). Range configurable via minValue/maxValue options (default: 0-based from data). Y-axis separator string configurable via yAxisSeparator (default: " │ ").
Acceptance criteria
Blocked by
Parent
#6 — BarChart — reusable vertical bar chart component
What to build
Render actual bars from
BarItem[]data using 8-block unicode precision (▁▂▃▄▅▆▇█). Each bar occupies a column of computed width, with 1-space gap between bars. Bar height proportional tovalue / maxValue, mapped to 8 equal-sized buckets per text row. Any positive value gets at least▁.Y-axis with auto-density (every 1st/2nd/3rd row based on height) and configurable
yAxisSpacingoverride. Y-axis values formatted viaformatValuecallback (default:String(Math.round(v))). Range configurable viaminValue/maxValueoptions (default: 0-based from data). Y-axis separator string configurable viayAxisSeparator(default:" │ ").Acceptance criteria
yAxisSpacingoverrides auto-densityyAxisSeparatoroverrides defaultformatValuecallback formats y-axis tick labelsminValue/maxValueclamp/expand the y-axis rangeBlocked by