---
title: "Creating Tabs"
description: "Learn how to promote groups to tabs and structure your documentation with top-level navigation"
---

Tabs are top-level navigation elements that split your documentation into separate sections. Think of tabs as completely independent view modes.

## What Are Tabs?

```
��������������������������������������
� Getting Started �  API  � Guides �  <- Tabs
������������������������������������
� Sidebar Content for selected tab �
�                                  �
� Current tab: Getting Started     �
��������������������������������������
```

Clicking a tab switches the entire sidebar navigation.

## Creating Your First Tab

### Step 1: Define in Configuration

```typescript
export const SIDEBAR_NAVIGATION = {
    docs: {
        defaultTab: {
            label: "Getting Started",
            icon: "",
        },
        groups: [
            {
                id: "quickstart",
                label: "Quick Start",
                tab: true, // <- This makes it a tab!
                autoGenerated: true,
            },
            {
                id: "guides",
                label: "How-To Guides",
                tab: true, // <- Another tab
                autoGenerated: true,
            },
            {
                id: "reference",
                label: "Reference",
                tab: true, // <- Third tab
                autoGenerated: true,
            },
        ],
    },
};
```

**Key:** Set `tab: true` to promote a group to a tab.

### Step 2: Create Folder Structure

```
content/docs/
�� quickstart/           <- Matches "quickstart" tab
�  �� intro.md
�  �� setup.md
�  ��� first-app.md
�� guides/               <- Matches "guides" tab
�  �� authentication.md
�  �� database.md
�  ��� deployment.md
��� reference/            <- Matches "reference" tab
   �� api.md
   �� cli.md
   ��� config.md
```

### Step 3: User Experience

Users see tabs:

```
�������������������������������������
� Quickstart � Guides � Reference �
�������������������������������������

Content below changes based on selected tab.

On Quickstart tab:
�� Introduction
�� Setup
��� First App

On Guides tab:
�� Authentication
�� Database
��� Deployment

On Reference tab:
�� API
�� CLI
��� Config
```

Clicking tabs switches navigation entirely.

## Tab with Nested Groups

Tabs can contain groups (creating another level of navigation):

```typescript
{
    id: "api",
    label: "API",
    tab: true,
    groups: [
        {
            id: "authentication",
            label: "Authentication",
            autoGenerated: true,
        },
        {
            id: "resources",
            label: "Resources",
            groups: [
                { id: "users", label: "Users", autoGenerated: true },
                { id: "posts", label: "Posts", autoGenerated: true },
                { id: "comments", label: "Comments", autoGenerated: true },
            ],
        },
        {
            id: "errors",
            label: "Error Handling",
            autoGenerated: true,
        },
    ],
}
```

**Navigation:**

```
Tabs: [Quickstart] [API] [Reference]

When on API tab, sidebar shows:
�� Authentication
�� Resources
�  �� Users
�  �� Posts
�  ��� Comments
��� Error Handling
```

Tabs + nested groups = powerful organization.

## Tab Icons

Icons help users identify tabs quickly:

```typescript
defaultTab: {
    label: "Getting Started",
    icon: "",  // <- Rocket for quick start
},
groups: [
    {
        id: "getting-started",
        label: "Getting Started",
        tab: true,
        icon: "�",  // <- Book icon
    },
    {
        id: "api",
        label: "API Reference",
        tab: true,
        icon: "�",  // <- Link icon
    },
    {
        id: "examples",
        label: "Examples",
        tab: true,
        icon: "�",  // <- Lightbulb icon
    },
],
```

Icons appear with tab labels. Users recognize patterns:

-  Getting Started
- � API
- � Examples
-  Configuration
- �� Advanced

## Tab Selection State

Tabs remember selection. If user navigates to:

```
/docs/api/endpoints
```

And selects "Reference" tab, sidebar updates but URL pattern changes:

```
/docs/reference/overview
```

**Breadcrumb updates:**

```
Before: Home > Docs > API > Endpoints
After:  Home > Docs > Reference > Overview
```

Each tab maintains its own content and breadcrumb trail.

## Common Tab Structures

### Structure 1: By User Journey

```
Getting Started -> Learn -> Build -> Deploy -> Reference
```

```typescript
groups: [
    { id: "getting-started", label: "Getting Started", tab: true, ... },
    { id: "learn", label: "Learn", tab: true, ... },
    { id: "build", label: "Build", tab: true, ... },
    { id: "deploy", label: "Deploy", tab: true, ... },
    { id: "reference", label: "Reference", tab: true, ... },
]
```

New users start with "Getting Started" tab.
Advanced users jump to "Reference" tab.

### Structure 2: By Audience

```
Users | Developers | Operators
```

```typescript
groups: [
    { id: "users", label: "Users", tab: true, ... },
    { id: "developers", label: "Developers", tab: true, ... },
    { id: "operators", label: "Operators", tab: true, ... },
]
```

Each audience sees relevant content in their tab.

### Structure 3: By Product

```
Core | Extensions | Plugins | Marketplace
```

```typescript
groups: [
    { id: "core", label: "Core", tab: true, ... },
    { id: "extensions", label: "Extensions", tab: true, ... },
    { id: "plugins", label: "Plugins", tab: true, ... },
    { id: "marketplace", label: "Marketplace", tab: true, ... },
]
```

Each product/feature gets its own tab.

### Structure 4: By Version

```
v3 (Current) | v2 (LTS) | v1 (Legacy)
```

```typescript
groups: [
    { id: "v3-current", label: "v3 (Current)", tab: true, ... },
    { id: "v2-lts", label: "v2 (LTS)", tab: true, ... },
    { id: "v1-legacy", label: "v1 (Legacy)", tab: true, ... },
]
```

Users select their version, see relevant docs.

## Switching Between Tabs

### Manual Tab Click

User clicks "API" tab -> sidebar changes -> breadcrumb updates -> URL changes.

```
Was viewing: /docs/guides/authentication
Clicked: API tab
Now viewing: /docs/api/overview (or defaultTab for API)
```

### Default Tab

If user visits `/docs/` (no specific page), they see:

```typescript
defaultTab: { label: "Getting Started", icon: "" }
```

They land on Getting Started tab's first page.

### Deep Linking

Users can share direct links to specific tabs:

```
/docs/api/endpoints -> Opens API tab, shows endpoints
/docs/guides/setup -> Opens Guides tab, shows setup
/docs/reference/config -> Opens Reference tab, shows config
```

Clicking those links automatically switches to correct tab.

## Tab + Manual Control

Mix tabs with manual entries:

```typescript
groups: [
    {
        id: "essentials",
        label: "Essentials",
        tab: true,
        autoGenerated: false,
        entries: [
            { slug: "essentials/why-choose-us" },
            { slug: "essentials/features" },
            { slug: "essentials/pricing" },
        ],
    },
    {
        id: "guides",
        label: "Guides",
        tab: true,
        autoGenerated: true, // Auto-discover all files
    },
    {
        id: "api",
        label: "API",
        tab: true,
        autoGenerated: false,
        entries: [{ slug: "api/authentication" }, { slug: "api/endpoints" }],
    },
];
```

**Result:**

- Essentials tab: 3 specific pages only
- Guides tab: all files appear automatically
- API tab: only listed endpoints appear

## Performance Notes

Each tab loads sidebar content separately:

- **First load:** Tab 1 loads
- **Click Tab 2:** Tab 2's sidebar loads (lazy)
- **Click Tab 3:** Tab 3's sidebar loads (lazy)

No performance impact from multiple tabs.

## Responsive Behavior

On mobile, tabs stack or become dropdowns:

```
Desktop (3+ tabs):
[Getting Started] [API] [Reference] [Advanced]

Tablet (2-3 tabs):
[Getting Started] [API] [Reference] [�� More]

Mobile (1+ tab):
Getting Started ��  (dropdown)
```

Users can still access all tabs on mobile via dropdown.

## Migration: Groups to Tabs

Converting existing groups to tabs:

### Before (No tabs)

```typescript
groups: [
    { id: "intro", label: "Introduction", autoGenerated: true },
    { id: "guides", label: "Guides", autoGenerated: true },
    { id: "reference", label: "Reference", autoGenerated: true },
];
```

Sidebar shows 3 groups, all in same view.

### After (With tabs)

```typescript
groups: [
    { id: "intro", label: "Introduction", tab: true, autoGenerated: true },
    { id: "guides", label: "Guides", tab: true, autoGenerated: true },
    { id: "reference", label: "Reference", tab: true, autoGenerated: true },
];
```

Same content, now organized with tabs. Just add `tab: true`.

## Next Steps

- [Grouping Tabs](/docs/configuration/advanced/tab-management/grouping-tabs)
- [Organization Patterns](/docs/configuration/advanced/tab-management/organization-patterns)
- [Nested Groups](/docs/navigation-system/core-concepts/nested-groups)
