Skip to content

Commit 9307860

Browse files
committed
fix(rankings): prevent chart label collisions
1 parent d8ab3b5 commit 9307860

2 files changed

Lines changed: 21 additions & 21 deletions

File tree

src/components/charts/ModelChartLabel.tsx

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -74,23 +74,23 @@ export function ModelChartLabel({ modelId, placement, value, viewBox }: ModelCha
7474
: placement.textAnchor === 'end'
7575
? x - labelWidth
7676
: x
77-
const showLeader = Math.abs(placement.dy) > 20 || Math.abs(placement.dx) > 12
77+
const leaderEndX =
78+
placement.textAnchor === 'start' ? x - 3 : placement.textAnchor === 'end' ? x + 3 : x
79+
const leaderEndY = y + (placement.dy < 0 ? 3 : placement.dy > 0 ? -10 : -3)
7880

7981
return (
8082
<g>
81-
{showLeader && (
82-
<line
83-
x1={pointX}
84-
y1={pointY}
85-
x2={x}
86-
y2={y + (placement.dy < 0 ? 3 : -10)}
87-
stroke="var(--color-text-muted)"
88-
strokeDasharray="4 4"
89-
strokeOpacity={0.45}
90-
strokeWidth={0.6}
91-
pointerEvents="none"
92-
/>
93-
)}
83+
<line
84+
x1={pointX}
85+
y1={pointY}
86+
x2={leaderEndX}
87+
y2={leaderEndY}
88+
stroke="var(--color-text-muted)"
89+
strokeDasharray="4 4"
90+
strokeOpacity={0.45}
91+
strokeWidth={0.6}
92+
pointerEvents="none"
93+
/>
9494
{/* biome-ignore lint/a11y/useSemanticElements: SVG labels cannot render HTML buttons. */}
9595
<g
9696
role="button"

src/lib/model-price-intelligence-index.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ const selectedModels: SelectedModel[] = [
3131
labelDx: -8,
3232
labelDy: 18,
3333
labelAnchor: 'end',
34-
linearLabelDx: 18,
35-
linearLabelDy: 28,
34+
linearLabelDx: 150,
35+
linearLabelDy: 16,
3636
linearLabelAnchor: 'start',
3737
},
3838
{
@@ -63,8 +63,8 @@ const selectedModels: SelectedModel[] = [
6363
labelDx: -12,
6464
labelDy: 24,
6565
labelAnchor: 'end',
66-
linearLabelDx: -16,
67-
linearLabelDy: 34,
66+
linearLabelDx: -20,
67+
linearLabelDy: 0,
6868
linearLabelAnchor: 'end',
6969
},
7070
{
@@ -101,11 +101,11 @@ const selectedModels: SelectedModel[] = [
101101
{ modelId: 'gemini-3-6-flash', labelDx: -18, labelDy: 24, labelAnchor: 'end' },
102102
{ modelId: 'grok-4-5', labelDx: 18, labelDy: -24, labelAnchor: 'start' },
103103
{ modelId: 'claude-haiku-4-5', labelDx: -10, labelDy: -10, labelAnchor: 'end' },
104-
{ modelId: 'claude-sonnet-5', labelDx: 8, labelDy: -10, labelAnchor: 'start' },
104+
{ modelId: 'claude-sonnet-5', labelDx: 8, labelDy: 22, labelAnchor: 'start' },
105105
{
106106
modelId: 'qwen3-7-max',
107107
labelDx: -10,
108-
labelDy: -28,
108+
labelDy: 24,
109109
labelAnchor: 'end',
110110
usdPriceOverride: {
111111
input: 2.5,
@@ -116,7 +116,7 @@ const selectedModels: SelectedModel[] = [
116116
{ modelId: 'gemini-3-1-pro-preview', labelDx: 8, labelDy: 18, labelAnchor: 'start' },
117117
{ modelId: 'gpt-5-6-terra', labelDx: 8, labelDy: -32, labelAnchor: 'start' },
118118
{ modelId: 'kimi-k3', labelDx: -8, labelDy: -42, labelAnchor: 'end' },
119-
{ modelId: 'claude-opus-5', labelDx: -8, labelDy: 18, labelAnchor: 'end' },
119+
{ modelId: 'claude-opus-5', labelDx: -8, labelDy: 34, labelAnchor: 'end' },
120120
{ modelId: 'gpt-5-6-sol', labelDx: 8, labelDy: -10, labelAnchor: 'start' },
121121
]
122122

0 commit comments

Comments
 (0)