Documentation Index
Fetch the complete documentation index at: https://mintlify.com/RtlZeroMemory/Rezi/llms.txt
Use this file to discover all available pages before exploring further.
The Bar Chart widget renders horizontal or vertical bars with automatic scaling, labels, and value display.
Basic Usage
import { ui } from "@rezi-ui/core";
ui.barChart({
data: [
{ label: "Product A", value: 45 },
{ label: "Product B", value: 32 },
{ label: "Product C", value: 58 },
],
});
Props
Data items to display. Each item has:
label: string - Item label
value: number - Item value
variant?: BadgeVariant - Optional color variant
orientation
horizontal | vertical
default:"horizontal"
Chart orientation.
Show numeric values on bars.
Maximum bar length in cells. Auto-scales if omitted.
Enable sub-cell rendering for smoother bars.
Rendering mode for highRes mode. One of "braille", "sextant", "quadrant", "halfblock".
Optional style override for chart.
type BarChartItem = {
label: string;
value: number;
variant?: "default" | "success" | "warning" | "error" | "info";
};
Basic Data
ui.barChart({
data: [
{ label: "Mon", value: 12 },
{ label: "Tue", value: 19 },
{ label: "Wed", value: 15 },
{ label: "Thu", value: 25 },
{ label: "Fri", value: 22 },
],
});
Colored Bars
ui.barChart({
data: [
{ label: "Passed", value: 85, variant: "success" },
{ label: "Failed", value: 12, variant: "error" },
{ label: "Skipped", value: 3, variant: "warning" },
],
});
Orientation
Horizontal (Default)
Bars extend to the right:
ui.barChart({
orientation: "horizontal",
data: [
{ label: "Alpha", value: 40 },
{ label: "Beta", value: 65 },
{ label: "Gamma", value: 30 },
],
});
Output:
Alpha ████████████████████ 40
Beta █████████████████████████████████ 65
Gamma ███████████████ 30
Vertical
Bars extend upward:
ui.barChart({
orientation: "vertical",
data: [
{ label: "Q1", value: 20 },
{ label: "Q2", value: 35 },
{ label: "Q3", value: 28 },
{ label: "Q4", value: 42 },
],
});
Display Options
Hide Values
ui.barChart({
data: items,
showValues: false,
});
Hide Labels
ui.barChart({
data: items,
showLabels: false,
});
Fixed Bar Length
ui.barChart({
data: items,
maxBarLength: 40, // All bars scale to 40 cells max
});
High-Resolution Mode
Enable sub-cell rendering for smoother bars:
ui.barChart({
data: items,
highRes: true,
blitter: "sextant", // 2x3 sub-cell blocks
});
Best blitters for bar charts:
"sextant" - Best balance of resolution and visibility
"halfblock" - Good for horizontal bars
"quadrant" - Good for vertical bars
Examples
Test Results
function testResultsChart(results: {
passed: number;
failed: number;
skipped: number;
}): VNode {
return ui.column({ gap: 1 }, [
ui.text("Test Results", { variant: "heading" }),
ui.barChart({
data: [
{ label: "Passed", value: results.passed, variant: "success" },
{ label: "Failed", value: results.failed, variant: "error" },
{ label: "Skipped", value: results.skipped, variant: "warning" },
],
maxBarLength: 50,
}),
]);
}
Resource Usage
function resourceChart(resources: Array<{
name: string;
used: number;
total: number;
}>): VNode {
const data = resources.map((r) => ({
label: r.name,
value: (r.used / r.total) * 100,
variant: r.used / r.total > 0.9 ? "error" : "success",
}));
return ui.column({ gap: 1 }, [
ui.text("Resource Usage", { variant: "heading" }),
ui.barChart({
data,
showValues: true,
}),
]);
}
Sales Comparison
function salesComparison(sales: Array<{
product: string;
amount: number;
}>): VNode {
const sorted = [...sales].sort((a, b) => b.amount - a.amount);
return ui.column({ gap: 1 }, [
ui.text("Top Products", { variant: "heading" }),
ui.barChart({
orientation: "horizontal",
data: sorted.slice(0, 10).map((s) => ({
label: s.product,
value: s.amount,
})),
maxBarLength: 60,
highRes: true,
blitter: "sextant",
}),
]);
}
Vertical Timeline
function activityTimeline(hours: Array<{
hour: string;
events: number;
}>): VNode {
return ui.column({ gap: 1 }, [
ui.text("Hourly Activity", { variant: "heading" }),
ui.barChart({
orientation: "vertical",
data: hours.map((h) => ({
label: h.hour,
value: h.events,
})),
showValues: true,
}),
]);
}
Threshold Coloring
function metricChart(
metrics: Array<{ name: string; value: number }>,
thresholds: { warning: number; error: number }
): VNode {
const data = metrics.map((m) => {
let variant: BarChartItem["variant"] = "success";
if (m.value >= thresholds.error) {
variant = "error";
} else if (m.value >= thresholds.warning) {
variant = "warning";
}
return {
label: m.name,
value: m.value,
variant,
};
});
return ui.barChart({ data });
}
Compact Dashboard
function compactMetrics(metrics: Record<string, number>): VNode {
return ui.column({ gap: 1 }, [
ui.text("System Metrics", { variant: "heading" }),
ui.barChart({
data: Object.entries(metrics).map(([label, value]) => ({
label,
value,
})),
showLabels: true,
showValues: true,
maxBarLength: 30,
}),
]);
}
Stacked View Simulation
function categoryBreakdown(
categories: Array<{ name: string; values: number[] }>
): VNode {
return ui.column({ gap: 2 }, [
ui.text("Category Breakdown", { variant: "heading" }),
...categories.map((cat) =>
ui.column({ gap: 0, key: cat.name }, [
ui.text(cat.name, { style: { bold: true } }),
ui.barChart({
data: cat.values.map((v, i) => ({
label: `Item ${i + 1}`,
value: v,
})),
showLabels: false,
maxBarLength: 40,
}),
])
),
]);
}
Styling
Custom Colors
ui.barChart({
data: items,
style: {
fg: "#3b82f6",
bold: true,
},
});
Per-Item Variants
Use the variant field for semantic colors:
const data: BarChartItem[] = [
{ label: "Low", value: 20, variant: "success" },
{ label: "Medium", value: 50, variant: "warning" },
{ label: "High", value: 80, variant: "error" },
];
ui.barChart({ data });
- Standard mode: Instant for any reasonable dataset
- High-res mode: Best for < 100 items
- Vertical orientation: Requires more vertical space
See Also