shadcn.io is an independent project built on shadcn/ui
All, Active and Completed share the row in three equal columns. All is selected and lists Review pull request #123, Update documentation and Fix bug in authentication, each with a dot.
Use equal tabs for a few status filters of the same list. A Select is smaller when the filters will not fit a row. On Svelte, Ark UI does not filter the tasks.
Installation
Anatomy

Usage
<Tabs class="w-full max-w-md" defaultValue="all"><TabsList class="grid w-full grid-cols-3"><TabsTrigger value="all">All</TabsTrigger><TabsTrigger value="active">Active</TabsTrigger><TabsTrigger value="completed">Completed</TabsTrigger></TabsList>{#each panels as panel (panel.value)}<TabsContent value={panel.value}><div class="rounded-lg border bg-card p-6 text-card-foreground shadow-sm"><h3 class="mb-4 font-semibold text-lg">{panel.title}</h3><div class="flex flex-col gap-3">{#each panel.items as task (task.title)}<div class="flex items-center gap-3 rounded-md border p-3"><div class={cn(
"size-2 rounded-full",
task.done ? "bg-success" : "bg-info"
)}></div><span class="text-sm">{task.title}</span></div>{/each}</div></div></TabsContent>{/each}</Tabs>FAQ
How do the triggers become equal width?
TabsList has grid w-full grid-cols-3. There are three triggers, so each one fills a column.
Which tab is selected first?
All, the default value on Tabs. The group is w-full max-w-md, and each panel matches its trigger: all, active and completed.
What happens if I add a fourth trigger?
grid-cols-3 is three columns, so a fourth trigger wraps to a second row. Change it to grid-cols-4 along with the new trigger.
What does each panel show?
A bordered bg-card block with a heading and task rows filtered from one tasks array. All shows three, Active the two that are not done and Completed the one that is.
API Reference
Tabs
Sets defaultValue="all", value="all", value="active", value="completed" and value={panel.value}. The rest is on the Tabs page.





