Level bar
Compact level visualization used on /problems cards and session list rows. Four vertical segments fill in brand orange to encode L1–L4 difficulty without a numeric label.
Preview
L1
L2
L3
L4
Source
apps/docs/app/recipes/lvl-bar/recipe.tsxexport default function LvlBarRecipe() {
return (
<div className="border-stroke bg-surface-2 flex flex-wrap items-center gap-6 rounded-2xl border p-5">
{([1, 2, 3, 4] as const).map((level) => (
<div key={level} className="flex items-center gap-2">
<div className="inline-flex gap-0.5">
{[1, 2, 3, 4].map((seg) => (
<span
key={seg}
className={`block h-3 w-1 rounded-[1px] ${seg <= level ? 'bg-brand' : 'bg-stroke'}`}
/>
))}
</div>
<span className="text-ink-3 tracking-label text-2xs font-mono font-bold uppercase">
L{level}
</span>
</div>
))}
</div>
);
}
export default function LvlBarRecipe() {
return (
<div className="border-stroke bg-surface-2 flex flex-wrap items-center gap-6 rounded-2xl border p-5">
{([1, 2, 3, 4] as const).map((level) => (
<div key={level} className="flex items-center gap-2">
<div className="inline-flex gap-0.5">
{[1, 2, 3, 4].map((seg) => (
<span
key={seg}
className={`block h-3 w-1 rounded-[1px] ${seg <= level ? 'bg-brand' : 'bg-stroke'}`}
/>
))}
</div>
<span className="text-ink-3 tracking-label text-2xs font-mono font-bold uppercase">
L{level}
</span>
</div>
))}
</div>
);
}