# 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).