diff --git a/app/src/components/ChartLabPanel.tsx b/app/src/components/ChartLabPanel.tsx
index 9c1090b..caf9437 100644
--- a/app/src/components/ChartLabPanel.tsx
+++ b/app/src/components/ChartLabPanel.tsx
@@ -8,6 +8,7 @@ import {
BarChart,
CartesianGrid,
Cell,
+ Defs,
Legend,
Line,
LineChart,
@@ -157,14 +158,40 @@ export function ChartLabPanel() {
const upColor = DAY_COLORS.up;
const downColor = DAY_COLORS.down;
- // Build a custom bar fill that respects up/down.
- const CandleBar = (props: any) => {
+ // Custom shape for OHLC candlestick rendering: wick (high→low line) + body (open↔close rectangle).
+ const CandleShape = (props: any) => {
const { x, y, width, height, payload } = props;
- const fill = payload.c >= payload.o ? upColor : downColor;
+ if (!payload) return null;
+ const isUp = payload.c >= payload.o;
+ const fill = isUp ? upColor : downColor;
+ const bodyTop = Math.min(payload.o, payload.c);
+ const bodyBottom = Math.max(payload.o, payload.c);
+ const bodyHeight = Math.max(bodyBottom - bodyTop, 1); // minimum 1px body
+ const wickTop = payload.h;
+ const wickBottom = payload.l;
+
return (
-
{UI_STRINGS.priceChartCaption}