diff --git a/README.md b/README.md index cb0a6a9..b5d0edd 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,8 @@ Zaati OS is an open-source, private-by-default personal operating system. Schedu You choose the LLM. You own the data. You control the deployment. Zaati OS has no hosted account, required telemetry, central database, or platform fee. +Explore the [three populated dashboard examples](examples/README.md), with local screenshots, forkable JSON compositions, and a documented [design system](docs/design-system.md). Run `npm run examples` after installing dependencies. +
= 0 ? "text-positive-foreground" : "text-destructive")}> +
{metric.change > 0 ? "+" : ""}
{formatValue(metric.change, metric.format === "percent" ? "percent" : "number", instance)}
diff --git a/src/components/ChartVisual.tsx b/src/components/ChartVisual.tsx
index 808082e..c886f33 100644
--- a/src/components/ChartVisual.tsx
+++ b/src/components/ChartVisual.tsx
@@ -96,6 +96,8 @@ export default function ChartVisual({
function DonutVisual({ block, descriptionId, instance }: { block: DonutChartBlock; descriptionId: string; instance: InstanceConfig }) {
const [activeIndex, setActiveIndex] = useState
-
+
+ )
+ })}
+ {block.bars.map((bar, index) => {
+ const valueY = yPosition(bar.value, range.min, range.max)
+ const x = plot.left + index * slot + (slot - barWidth) / 2
+ const y = Math.min(valueY, baseline)
+ const barHeight = Math.max(1, Math.abs(baseline - valueY))
+ return (
+
-
-
-
- {block.bars.map((bar) => (
- Category
- Value
-
-
- ))}
-
- {bar.label}
- {format(bar.value, valueFormat, instance)}
- View data
+
+
+
+
+
+
+ {block.bars.map((bar) => (
+ Category
+ Value
+
+
+ ))}
+
+ {bar.label}
+ {format(bar.value, valueFormat, instance)}
+