Tabs
Tabs
Interactive tabbed content panels
Installation
npx @ravikumarsurya/mdx-ui add tabsUsage
Create tabbed content with the Tabs component:
<Tabs defaultValue="npm">
<TabsList>
<TabsTrigger value="npm">npm</TabsTrigger>
<TabsTrigger value="pnpm">pnpm</TabsTrigger>
<TabsTrigger value="yarn">yarn</TabsTrigger>
</TabsList>
<TabsContent value="npm">npm install package-name</TabsContent>
<TabsContent value="pnpm">pnpm add package-name</TabsContent>
<TabsContent value="yarn">yarn add package-name</TabsContent>
</Tabs>Features
- Interactive tab switching
- Keyboard navigation
- ARIA accessibility
- Smooth transitions
- Customizable styling
- Multiple tabs support
Props
Tabs
defaultValue: The default active tab (required)value: Controlled tab value (optional)onValueChange: Callback when tab changes (optional)
TabsTrigger
value: Unique identifier for the tab (required)disabled: Disable the tab (optional)
TabsContent
value: Must match a TabsTrigger value (required)
Examples
Default
npm install @mdx-ui/componentsPackage Manager Tabs
<Tabs defaultValue="npm">
<TabsList>
<TabsTrigger value="npm">npm</TabsTrigger>
<TabsTrigger value="pnpm">pnpm</TabsTrigger>
<TabsTrigger value="yarn">yarn</TabsTrigger>
</TabsList>
<TabsContent value="npm">
\`\`\`bash npm install @ravikumarsurya/mdx-ui \`\`\`
</TabsContent>
<TabsContent value="pnpm">
\`\`\`bash pnpm add @ravikumarsurya/mdx-ui \`\`\`
</TabsContent>
<TabsContent value="yarn">
\`\`\`bash yarn add @ravikumarsurya/mdx-ui \`\`\`
</TabsContent>
</Tabs>Code Examples
<Tabs defaultValue="javascript">
<TabsList>
<TabsTrigger value="javascript">JavaScript</TabsTrigger>
<TabsTrigger value="typescript">TypeScript</TabsTrigger>
<TabsTrigger value="python">Python</TabsTrigger>
</TabsList>
<TabsContent value="javascript">
\`\`\`javascript
function greet(name) {
return \`Hello, \${name}!\`;
}
\`\`\`
</TabsContent>
<TabsContent value="typescript">
\`\`\`typescript
function greet(name: string): string {
return \`Hello, \${name}!\`;
}
\`\`\`
</TabsContent>
<TabsContent value="python">
\`\`\`python
def greet(name):
return f"Hello, {name}!"
\`\`\`
</TabsContent>
</Tabs>Platform-Specific Instructions
<Tabs defaultValue="mac">
<TabsList>
<TabsTrigger value="mac">macOS</TabsTrigger>
<TabsTrigger value="windows">Windows</TabsTrigger>
<TabsTrigger value="linux">Linux</TabsTrigger>
</TabsList>
<TabsContent value="mac">
## macOS Setup
1. Open Terminal
2. Run: \`brew install node\`
3. Verify: \`node --version\`
</TabsContent>
<TabsContent value="windows">
## Windows Setup
1. Download Node.js installer
2. Run the installer
3. Verify: \`node --version\`
</TabsContent>
<TabsContent value="linux">
## Linux Setup
1. Open terminal
2. Run: \`sudo apt install nodejs\`
3. Verify: \`node --version\`
</TabsContent>
</Tabs>Keyboard Navigation
Tab: Move focus to next elementArrow Left/Right: Switch between tabsEnter/Space: Activate focused tab
Accessibility
- Full ARIA support (
role="tablist",role="tab",role="tabpanel") - Keyboard navigation
- Focus management
- Screen reader announcements
- Proper tab indexing
Styling
The tabs component uses Tailwind CSS classes and supports:
- Custom colors
- Different sizes
- Border styles
- Hover and active states
- Dark mode
Best Practices
- Use clear, concise tab labels
- Keep related content together
- Don't nest tabs too deeply
- Provide default tab selection
- Keep tab content focused
Notes
- Based on Radix UI Tabs (if using shadcn/ui base)
- Fully accessible out of the box
- Works with all MDX renderers
- Supports controlled and uncontrolled modes