# Tabs
> Switch between related panels.
Import from `@aspyn-io/kit`. Scaffold source: `npx shadcn@latest add https://design.aspyn.io/r/tabs.json`
## Install
```tsx
import { Tabs, TabsList, TabsTrigger, TabsContent } from "@aspyn-io/kit";
```
### Basic
```tsx
Overview
Analytics
…
…
```
### URL-synced tabs (Next.js)
Drive the active tab from the URL so views are shareable and survive refresh.
```tsx
"use client";
import { useRouter, useSearchParams } from "next/navigation";
const router = useRouter();
const tab = useSearchParams().get("tab") ?? "overview";
router.push(`?tab=${v}`)}>…
```
### Vertical
Set orientation="vertical" for a side-by-side list and content panel.
```tsx
General
Billing
Team
…
```
### With icons
Add a leading icon inside each trigger.
```tsx
Account
```
### Disabled tab
Disable a trigger to keep its view unavailable.
```tsx
Reports
```
## Notes
- Arrow keys move between triggers; Home/End jump to first/last (Radix).