Components / AI Data Visualization
AI Model Comparison Radar
A radar chart comparing multiple AI models across dimensions like speed, accuracy, cost, and reasoning.
Components / AI Data Visualization
A radar chart comparing multiple AI models across dimensions like speed, accuracy, cost, and reasoning.
BENCHMARK SCORE
84.2
PERCENTILE
TOP 1%
Install the core libraries required for this component.
npm install react lucide-react"use client";
import React from "react";
import { Radar } from "lucide-react";
export default function AIModelComparisonRadar() {
const categories = ["Reasoning", "Coding", "Speed", "Context", "Creative"];
const points = [80, 75, 90, 85, 70];
return (
<div className="rounded-xl border border-zinc-200 dark:border-zinc-800 bg-white dark:bg-zinc-950 p-8 shadow-sm w-full max-w-sm mx-auto overflow-hidden">
<div className="flex items-center gap-2 mb-10">
<Radar className="h-4 w-4 text-violet-500" />
<h3 className="text-sm font-bold text-zinc-900 dark:text-zinc-100">Capability Radar</h3>
</div>
<div className="relative aspect-square w-full flex items-center justify-center">
{/* Simple visualization of a radar chart */}
<div className="absolute inset-0 border border-zinc-100 dark:border-zinc-800 rounded-full scale-[0.33]" />
<div className="absolute inset-0 border border-zinc-100 dark:border-zinc-800 rounded-full scale-[0.66]" />
<div className="absolute inset-0 border border-zinc-100 dark:border-zinc-800 rounded-full scale-100" />
<svg viewBox="0 0 100 100" className="w-full h-full -rotate-18 relative z-10">
<polygon
points="50,15 85,35 75,80 25,80 15,35"
className="fill-violet-500/20 stroke-violet-500 stroke-[1.5] transition-all duration-1000"
/>
{categories.map((c, i) => (
<text
key={c}
x={50 + Math.cos((i * 2 * Math.PI) / 5 - Math.PI / 2) * 45}
y={50 + Math.sin((i * 2 * Math.PI) / 5 - Math.PI / 2) * 45}
textAnchor="middle"
className="text-[6px] font-black uppercase tracking-tighter fill-zinc-400 dark:fill-zinc-500"
>
{c}
</text>
))}
</svg>
</div>
<div className="mt-8 grid grid-cols-2 gap-2 text-center">
<div className="p-2 border border-zinc-100 dark:border-zinc-800 rounded-lg">
<p className="text-[9px] font-black text-zinc-400">BENCHMARK SCORE</p>
<p className="text-xs font-bold text-zinc-900 dark:text-zinc-100">84.2</p>
</div>
<div className="p-2 border border-zinc-100 dark:border-zinc-800 rounded-lg bg-zinc-50 dark:bg-zinc-900/50">
<p className="text-[9px] font-black text-zinc-400">PERCENTILE</p>
<p className="text-xs font-bold text-emerald-500">TOP 1%</p>
</div>
</div>
</div>
);
} "use client";
import React from "react";
import { Radar } from "lucide-react";
export default function AIModelComparisonRadar() {
const categories = ["Reasoning", "Coding", "Speed", "Context", "Creative"];
const points = [80, 75, 90, 85, 70];
return (
<div className="rounded-xl border border-zinc-200 dark:border-zinc-800 bg-white dark:bg-zinc-950 p-8 shadow-sm w-full max-w-sm mx-auto overflow-hidden">
<div className="flex items-center gap-2 mb-10">
<Radar className="h-4 w-4 text-violet-500" />
<h3 className="text-sm font-bold text-zinc-900 dark:text-zinc-100">Capability Radar</h3>
</div>
<div className="relative aspect-square w-full flex items-center justify-center">
{/* Simple visualization of a radar chart */}
<div className="absolute inset-0 border border-zinc-100 dark:border-zinc-800 rounded-full scale-[0.33]" />
<div className="absolute inset-0 border border-zinc-100 dark:border-zinc-800 rounded-full scale-[0.66]" />
<div className="absolute inset-0 border border-zinc-100 dark:border-zinc-800 rounded-full scale-100" />
<svg viewBox="0 0 100 100" className="w-full h-full -rotate-18 relative z-10">
<polygon
points="50,15 85,35 75,80 25,80 15,35"
className="fill-violet-500/20 stroke-violet-500 stroke-[1.5] transition-all duration-1000"
/>
{categories.map((c, i) => (
<text
key={c}
x={50 + Math.cos((i * 2 * Math.PI) / 5 - Math.PI / 2) * 45}
y={50 + Math.sin((i * 2 * Math.PI) / 5 - Math.PI / 2) * 45}
textAnchor="middle"
className="text-[6px] font-black uppercase tracking-tighter fill-zinc-400 dark:fill-zinc-500"
>
{c}
</text>
))}
</svg>
</div>
<div className="mt-8 grid grid-cols-2 gap-2 text-center">
<div className="p-2 border border-zinc-100 dark:border-zinc-800 rounded-lg">
<p className="text-[9px] font-black text-zinc-400">BENCHMARK SCORE</p>
<p className="text-xs font-bold text-zinc-900 dark:text-zinc-100">84.2</p>
</div>
<div className="p-2 border border-zinc-100 dark:border-zinc-800 rounded-lg bg-zinc-50 dark:bg-zinc-900/50">
<p className="text-[9px] font-black text-zinc-400">PERCENTILE</p>
<p className="text-xs font-bold text-emerald-500">TOP 1%</p>
</div>
</div>
</div>
);
} Internal functions used to handle component logic.
| Function | Parameters |
|---|---|
| AIModelComparisonRadar() | None |
All variable declarations found in this component.
| Name | Kind | Value |
|---|---|---|
| categories | | ["Reasoning", "Coding", "Speed", "Context", "Creative"] |
| points | | [80, 75, 90, 85, 70] |
Every JSX/HTML tag used in this component, with usage count and source.
| Tag | Count | Type | Source |
|---|---|---|---|
| <Radar> | 1× | | lucide-react |
| <div> | 9× | | Native HTML |
| <h3> | 1× | | Native HTML |
| <p> | 4× | | Native HTML |
| <polygon> | 1× | | Native HTML |
| <svg> | 1× | | Native HTML |
| <text> | 1× | | Native HTML |