Section
Model Comparison — Vercel
Refined dark monochrome LLM comparison panel — three models compared side by side with hairline borders, generous spacing, and a single teal accent. A 'Best for' metric selector moves the glowing winner marker, animates the metric bars, and updates the recommendation footer.
- Section
- Tailwind
- HTML
- MIT
Preview
Live section
9:41 100%
devsnips.dev/library/tailwind/sections/ai-product/model-comparison/vercel/ fluid · no fixed width 100%
Install
Add to your project
npx devsnips add Tailwind/Sections/AI-Product/model-comparison/vercel Tailwind/Sections/AI-Product/model-comparison/vercel <!--
Snippet Name: Model Comparison — Vercel
Description: Refined dark monochrome model-comparison panel with hairline borders, a single teal accent, an animated metric selector that highlights the winning model per category, and a sliding "best" marker.
Author: DevSnips Contributors
Usage Example: Drop into a dark product shell to compare LLMs. The metric selector and winner marker are fully wired in preview.html.
-->
<div class="relative w-full max-w-5xl" data-cmp="vc">
<!-- Radial glow backdrop -->
<div class="pointer-events-none absolute -inset-px -z-10 rounded-[14px] opacity-60 [background:radial-gradient(60%_60%_at_50%_0%,rgba(255,255,255,0.10),transparent_70%)]" aria-hidden="true"></div>
<!-- Panel -->
<div class="overflow-hidden rounded-[14px] border border-white/10 bg-[#0a0a0a] shadow-[0_0_0_1px_rgba(255,255,255,0.02),0_20px_60px_-20px_rgba(0,0,0,0.9)]">
<!-- Header -->
<div class="flex flex-col gap-3 border-b border-white/[0.07] px-5 py-4 sm:flex-row sm:items-center sm:justify-between">
<div class="flex items-center gap-3">
<div class="flex h-9 w-9 items-center justify-center rounded-lg border border-white/10 bg-white text-black">
<svg class="h-4 w-4" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><rect x="3" y="4" width="7" height="16" /><rect x="14" y="4" width="7" height="16" /><path d="M10 12h4" /></svg>
</div>
<div class="leading-tight">
<p class="font-g text-[15px] font-medium text-white">Model Arena</p>
<p class="vc-mono mt-0.5 text-[11px] text-white/40">
<span class="vc-dot"></span>3 models · live benchmark
</p>
</div>
</div>
<div class="flex items-center gap-2">
<span class="vc-mono rounded-md border border-white/10 bg-white/[0.03] px-2.5 py-1.5 text-[11px] text-white/50">Updated 02:14</span>
<button type="button" aria-label="Export comparison" class="flex h-8 w-8 items-center justify-center rounded-md text-white/50 transition-colors hover:bg-white/[0.06] hover:text-white focus:outline-none focus-visible:ring-2 focus-visible:ring-white/30">
<svg class="h-4 w-4" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="M12 3v12m0 0l-4-4m4 4l4-4M5 21h14" /></svg>
</button>
</div>
</div>
<!-- Best-for metric selector -->
<div class="border-b border-white/[0.07] px-5 py-4">
<p class="vc-mono mb-2 text-[11px] uppercase tracking-wider text-white/35">Highlight best for</p>
<div role="radiogroup" aria-label="Highlight best model for metric" class="flex flex-wrap gap-1.5">
<button type="button" role="radio" aria-checked="true" data-metric="quality" class="cmp-metric vc-mono rounded-full border border-white/10 bg-white/[0.03] px-3 py-1.5 text-[11px] text-white/60 transition-colors hover:border-white/20 hover:text-white focus:outline-none focus-visible:ring-2 focus-visible:ring-white/30">Quality</button>
<button type="button" role="radio" aria-checked="false" data-metric="speed" class="cmp-metric vc-mono rounded-full border border-white/10 bg-white/[0.03] px-3 py-1.5 text-[11px] text-white/60 transition-colors hover:border-white/20 hover:text-white focus:outline-none focus-visible:ring-2 focus-visible:ring-white/30">Speed</button>
<button type="button" role="radio" aria-checked="false" data-metric="context" class="cmp-metric vc-mono rounded-full border border-white/10 bg-white/[0.03] px-3 py-1.5 text-[11px] text-white/60 transition-colors hover:border-white/20 hover:text-white focus:outline-none focus-visible:ring-2 focus-visible:ring-white/30">Context</button>
<button type="button" role="radio" aria-checked="false" data-metric="cost" class="cmp-metric vc-mono rounded-full border border-white/10 bg-white/[0.03] px-3 py-1.5 text-[11px] text-white/60 transition-colors hover:border-white/20 hover:text-white focus:outline-none focus-visible:ring-2 focus-visible:ring-white/30">Cheapest</button>
</div>
</div>
<!-- Model cards -->
<div class="grid gap-px bg-white/[0.07] sm:grid-cols-3" data-cmp-grid>
<!-- GPT-Snip -->
<article class="cmp-card relative bg-[#0a0a0a] p-5" data-model="gpt" data-quality="92" data-speed="58" data-context="78" data-cost="80" data-best="quality">
<div class="flex items-center justify-between">
<div class="flex items-center gap-2">
<span class="flex h-7 w-7 items-center justify-center rounded-md border border-white/10 bg-white/[0.03] font-g text-[12px] font-semibold text-white">G</span>
<p class="font-g text-[14px] font-medium text-white">GPT-Snip</p>
</div>
<span class="cmp-winner vc-mono hidden items-center gap-1 rounded-full bg-[#50e3c2]/10 px-2 py-0.5 text-[10px] font-medium uppercase tracking-wider text-[#50e3c2]"><span class="h-1.5 w-1.5 rounded-full bg-[#50e3c2]" style="box-shadow:0 0 8px #50e3c2"></span>Best</span>
</div>
<dl class="mt-5 space-y-4">
<div>
<dt class="flex items-baseline justify-between"><span class="vc-mono text-[10px] uppercase tracking-wider text-white/35">Context</span><span class="font-g text-[15px] font-medium text-white">128K</span></dt>
<dd class="mt-1.5 h-1 overflow-hidden rounded-full bg-white/[0.06]"><div class="cmp-bar h-full w-0 rounded-full bg-white/40" data-fill="78"></div></dd>
</div>
<div>
<dt class="flex items-baseline justify-between"><span class="vc-mono text-[10px] uppercase tracking-wider text-white/35">Speed</span><span class="font-g text-[15px] font-medium text-white">58 <span class="text-white/40">t/s</span></span></dt>
<dd class="mt-1.5 h-1 overflow-hidden rounded-full bg-white/[0.06]"><div class="cmp-bar h-full w-0 rounded-full bg-white/40" data-fill="58"></div></dd>
</div>
<div>
<dt class="flex items-baseline justify-between"><span class="vc-mono text-[10px] uppercase tracking-wider text-white/35">Cost / 1M</span><span class="font-g text-[15px] font-medium text-white">$8.00</span></dt>
<dd class="mt-1.5 h-1 overflow-hidden rounded-full bg-white/[0.06]"><div class="cmp-bar h-full w-0 rounded-full bg-white/40" data-fill="80"></div></dd>
</div>
<div>
<dt class="flex items-baseline justify-between"><span class="vc-mono text-[10px] uppercase tracking-wider text-white/35">Quality</span><span class="font-g text-[15px] font-medium text-white">92</span></dt>
<dd class="mt-1.5 h-1 overflow-hidden rounded-full bg-white/[0.06]"><div class="cmp-bar h-full w-0 rounded-full bg-white/40" data-fill="92"></div></dd>
</div>
</dl>
<p class="vc-mono mt-5 rounded-md border border-white/[0.07] bg-white/[0.02] px-2.5 py-1.5 text-[11px] leading-snug text-white/50">Best for complex reasoning & long docs.</p>
</article>
<!-- Claude-Snip -->
<article class="cmp-card relative bg-[#0a0a0a] p-5" data-model="claude" data-quality="88" data-speed="72" data-context="95" data-cost="60" data-best="context">
<div class="flex items-center justify-between">
<div class="flex items-center gap-2">
<span class="flex h-7 w-7 items-center justify-center rounded-md border border-white/10 bg-white/[0.03] font-g text-[12px] font-semibold text-white">C</span>
<p class="font-g text-[14px] font-medium text-white">Claude-Snip</p>
</div>
<span class="cmp-winner vc-mono hidden items-center gap-1 rounded-full bg-[#50e3c2]/10 px-2 py-0.5 text-[10px] font-medium uppercase tracking-wider text-[#50e3c2]"><span class="h-1.5 w-1.5 rounded-full bg-[#50e3c2]" style="box-shadow:0 0 8px #50e3c2"></span>Best</span>
</div>
<dl class="mt-5 space-y-4">
<div>
<dt class="flex items-baseline justify-between"><span class="vc-mono text-[10px] uppercase tracking-wider text-white/35">Context</span><span class="font-g text-[15px] font-medium text-white">200K</span></dt>
<dd class="mt-1.5 h-1 overflow-hidden rounded-full bg-white/[0.06]"><div class="cmp-bar h-full w-0 rounded-full bg-white/40" data-fill="95"></div></dd>
</div>
<div>
<dt class="flex items-baseline justify-between"><span class="vc-mono text-[10px] uppercase tracking-wider text-white/35">Speed</span><span class="font-g text-[15px] font-medium text-white">72 <span class="text-white/40">t/s</span></span></dt>
<dd class="mt-1.5 h-1 overflow-hidden rounded-full bg-white/[0.06]"><div class="cmp-bar h-full w-0 rounded-full bg-white/40" data-fill="72"></div></dd>
</div>
<div>
<dt class="flex items-baseline justify-between"><span class="vc-mono text-[10px] uppercase tracking-wider text-white/35">Cost / 1M</span><span class="font-g text-[15px] font-medium text-white">$3.00</span></dt>
<dd class="mt-1.5 h-1 overflow-hidden rounded-full bg-white/[0.06]"><div class="cmp-bar h-full w-0 rounded-full bg-white/40" data-fill="60"></div></dd>
</div>
<div>
<dt class="flex items-baseline justify-between"><span class="vc-mono text-[10px] uppercase tracking-wider text-white/35">Quality</span><span class="font-g text-[15px] font-medium text-white">88</span></dt>
<dd class="mt-1.5 h-1 overflow-hidden rounded-full bg-white/[0.06]"><div class="cmp-bar h-full w-0 rounded-full bg-white/40" data-fill="88"></div></dd>
</div>
</dl>
<p class="vc-mono mt-5 rounded-md border border-white/[0.07] bg-white/[0.02] px-2.5 py-1.5 text-[11px] leading-snug text-white/50">Best for big context & careful writing.</p>
</article>
<!-- Llama-Snip -->
<article class="cmp-card relative bg-[#0a0a0a] p-5" data-model="llama" data-quality="74" data-speed="96" data-context="55" data-cost="95" data-best="cost">
<div class="flex items-center justify-between">
<div class="flex items-center gap-2">
<span class="flex h-7 w-7 items-center justify-center rounded-md border border-white/10 bg-white/[0.03] font-g text-[12px] font-semibold text-white">L</span>
<p class="font-g text-[14px] font-medium text-white">Llama-Snip</p>
</div>
<span class="cmp-winner vc-mono hidden items-center gap-1 rounded-full bg-[#50e3c2]/10 px-2 py-0.5 text-[10px] font-medium uppercase tracking-wider text-[#50e3c2]"><span class="h-1.5 w-1.5 rounded-full bg-[#50e3c2]" style="box-shadow:0 0 8px #50e3c2"></span>Best</span>
</div>
<dl class="mt-5 space-y-4">
<div>
<dt class="flex items-baseline justify-between"><span class="vc-mono text-[10px] uppercase tracking-wider text-white/35">Context</span><span class="font-g text-[15px] font-medium text-white">64K</span></dt>
<dd class="mt-1.5 h-1 overflow-hidden rounded-full bg-white/[0.06]"><div class="cmp-bar h-full w-0 rounded-full bg-white/40" data-fill="55"></div></dd>
</div>
<div>
<dt class="flex items-baseline justify-between"><span class="vc-mono text-[10px] uppercase tracking-wider text-white/35">Speed</span><span class="font-g text-[15px] font-medium text-white">96 <span class="text-white/40">t/s</span></span></dt>
<dd class="mt-1.5 h-1 overflow-hidden rounded-full bg-white/[0.06]"><div class="cmp-bar h-full w-0 rounded-full bg-white/40" data-fill="96"></div></dd>
</div>
<div>
<dt class="flex items-baseline justify-between"><span class="vc-mono text-[10px] uppercase tracking-wider text-white/35">Cost / 1M</span><span class="font-g text-[15px] font-medium text-white">$0.40</span></dt>
<dd class="mt-1.5 h-1 overflow-hidden rounded-full bg-white/[0.06]"><div class="cmp-bar h-full w-0 rounded-full bg-white/40" data-fill="95"></div></dd>
</div>
<div>
<dt class="flex items-baseline justify-between"><span class="vc-mono text-[10px] uppercase tracking-wider text-white/35">Quality</span><span class="font-g text-[15px] font-medium text-white">74</span></dt>
<dd class="mt-1.5 h-1 overflow-hidden rounded-full bg-white/[0.06]"><div class="cmp-bar h-full w-0 rounded-full bg-white/40" data-fill="74"></div></dd>
</div>
</dl>
<p class="vc-mono mt-5 rounded-md border border-white/[0.07] bg-white/[0.02] px-2.5 py-1.5 text-[11px] leading-snug text-white/50">Best for cheap, fast bulk jobs.</p>
</article>
</div>
<!-- Footer recommendation -->
<div class="flex flex-col gap-3 border-t border-white/[0.07] px-5 py-4 sm:flex-row sm:items-center sm:justify-between" data-cmp-rec>
<div class="flex items-center gap-2">
<span class="vc-dot"></span>
<p class="font-g text-[13px] text-white/70">Recommended: <span data-rec-name class="font-medium text-white">GPT-Snip</span> wins on <span data-rec-metric class="text-white">quality</span>.</p>
</div>
<button type="button" class="font-g rounded-lg border border-white/10 bg-white px-4 py-2 text-[13px] font-medium text-black transition-colors hover:bg-white/90 focus:outline-none focus-visible:ring-2 focus-visible:ring-white/40">Pick this model →</button>
</div>
</div>
<style>
[data-cmp="vc"] .vc-mono { font-family: 'Geist Mono', ui-monospace, monospace; }
[data-cmp="vc"] .font-g { font-family: 'Geist', sans-serif; }
[data-cmp="vc"] .vc-dot { display: inline-block; height: 6px; width: 6px; border-radius: 9999px; background: #50e3c2; box-shadow: 0 0 8px #50e3c2; vertical-align: middle; }
[data-cmp="vc"] .cmp-card.is-winner { background: linear-gradient(180deg, rgba(80,227,194,0.06), transparent 60%), #0a0a0a; }
[data-cmp="vc"] .cmp-card.is-winner .cmp-bar { background: #50e3c2 !important; }
[data-cmp="vc"] .cmp-bar { transition: width .7s cubic-bezier(.2,.8,.2,1), background .3s ease; }
[data-cmp="vc"] .cmp-metric[aria-checked="true"] { border-color: rgba(80,227,194,0.4); background: rgba(80,227,194,0.08); color: #50e3c2; }
</style>
<script>
(function () {
var root = document.currentScript.closest('[data-cmp="vc"]');
if (!root) return;
var cards = Array.prototype.slice.call(root.querySelectorAll('[data-cmp-grid] .cmp-card'));
var metrics = Array.prototype.slice.call(root.querySelectorAll('.cmp-metric'));
var recName = root.querySelector('[data-rec-name]');
var recMetric = root.querySelector('[data-rec-metric]');
if (!cards.length || !metrics.length) return;
function valueFor(card, metric) {
var v = parseFloat(card.getAttribute('data-' + metric));
if (metric === 'cost') v = 100 - v;
return v;
}
function applyMetric(metric) {
var best = cards[0], bestVal = -1;
cards.forEach(function (c) {
var v = valueFor(c, metric);
if (v > bestVal) { bestVal = v; best = c; }
c.classList.remove('is-winner');
c.querySelector('.cmp-winner').classList.add('hidden');
c.querySelector('.cmp-winner').classList.remove('inline-flex');
});
best.classList.add('is-winner');
best.querySelector('.cmp-winner').classList.remove('hidden');
best.querySelector('.cmp-winner').classList.add('inline-flex');
var name = best.querySelector('p.font-g').textContent.trim();
if (recName) recName.textContent = name;
if (recMetric) recMetric.textContent = metric === 'cost' ? 'price' : metric;
cards.forEach(function (c) {
c.querySelectorAll('.cmp-bar').forEach(function (bar) { bar.style.width = '0%'; });
});
requestAnimationFrame(function () {
cards.forEach(function (c) {
c.querySelectorAll('.cmp-bar').forEach(function (bar) {
bar.style.width = bar.getAttribute('data-fill') + '%';
});
});
});
}
metrics.forEach(function (m) {
m.addEventListener('click', function () {
metrics.forEach(function (x) { x.setAttribute('aria-checked', 'false'); });
m.setAttribute('aria-checked', 'true');
applyMetric(m.getAttribute('data-metric'));
});
});
var active = metrics.filter(function (m) { return m.getAttribute('aria-checked') === 'true'; })[0] || metrics[0];
applyMetric(active.getAttribute('data-metric'));
})();
</script>
</div> 217 lines UTF-8 · LF · Spaces: 2
Continue browsing