diff --git a/databi/src/components/MetricCard.jsx b/databi/src/components/MetricCard.jsx
index 96af163..579cb80 100644
--- a/databi/src/components/MetricCard.jsx
+++ b/databi/src/components/MetricCard.jsx
@@ -65,10 +65,11 @@ function MetricSubValues({ items }) {
}
function MetricDelta({ compact = false, item }) {
+ const tone = item.deltaTone || (String(item.delta || "").trim().startsWith("-") ? "down" : "up");
return (
-
+
{item.caption}
- {item.delta ? `${item.deltaTone === "down" ? "↓" : "↑"} ${item.delta.replace(/^[-+]/, "")}` : "--"}
+ {item.delta ? `${tone === "down" ? "↓" : "↑"} ${item.delta.replace(/^[-+]/, "")}` : "--"}
);
}
diff --git a/databi/src/components/MetricCard.test.jsx b/databi/src/components/MetricCard.test.jsx
new file mode 100644
index 0000000..515fc23
--- /dev/null
+++ b/databi/src/components/MetricCard.test.jsx
@@ -0,0 +1,10 @@
+import { render, screen } from "@testing-library/react";
+import { expect, test } from "vitest";
+import { MetricCard } from "./MetricCard.jsx";
+
+test("renders a down arrow when delta text is negative", () => {
+ render(
);
+
+ expect(screen.getByText("↓ 39.27%")).toBeInTheDocument();
+});
+