shadcn.io is an independent project built on shadcn/ui
Technologies heads a bordered panel. Inside, badges sit on one line, starting with React, Next.js, TypeScript and Tailwind CSS. The line scrolls sideways.
Keep tags on one scrolling line when wrapping would break a filter row. A Toggle Group fits if each tag is a control. In React, Ark UI does not choose which badges appear.
Installation
Anatomy

Usage
<div className="flex w-full max-w-md flex-col gap-2">
<h3 className="font-semibold text-sm">Technologies</h3>
<ScrollArea className="w-full whitespace-nowrap rounded-md border bg-background">
<div className="flex w-max gap-2 p-4">
{tags.map((tag) => (
<Badge key={tag} variant="secondary">
{tag}
</Badge>
))}
</div>
</ScrollArea>
</div>FAQ
Why do the badges stay on one line?
ScrollArea has whitespace-nowrap, and the inner row is flex w-max gap-2. w-max sizes the row to the badges, so the extra width scrolls. The frame is w-full, inside a max-w-md column.
What does each tag look like?
A Badge with variant secondary. There are twenty names, from React through CI/CD. p-4 on the row insets the first and last badge from the border.
Where is the sideways bar?
Both bars are already rendered. The wide row scrolls on the inline axis without a second ScrollBar.
Does the Technologies heading scroll?
No. The h3 is before ScrollArea, with font-semibold text-sm. Only the badge row is inside the area.
API Reference
Scroll Area
No extra props in this demo. The rest is on the Scroll Area page.
Badge
Sets variant="secondary". The rest is on the Badge page.







