# Tabs > AstrolTabs: Blazor tabs with icons, badges, disabled tabs, keyboard (arrows, Home, End), @bind-ActiveTabIndex and panels that keep their state. Source page: https://doc.astrolui.com/basic-component/tabs Accessible tabs, underlined or as buttons. ## 1. Demo AstrolTabs Each **AstrolContentTab** is a tab: its **Title** (with optional **Icon** and **Badge**) goes in the list and its content in the panel. With focus on the list, the arrows, **Home** and **End** change tab and skip disabled ones. ```razor @using Astrol.Component.Basic.Tabs

Name, email and phone...

The last orders...

...
@code { private int active; } ``` The customer's name, email and phone. The customer's last orders. ## 2. Buttons and panels that keep their state **Pills** shows the tabs as buttons. By default only the active panel exists; with **KeepAlive** the others stay hidden in the page and keep what was typed: type something, switch tab and come back. ```razor @* Pills: buttons instead of underline. KeepAlive: hidden tabs keep what was typed *@ ... ``` Type something and switch tab Go back to «Notes»: the text is still there. ### Supported parameters **AstrolTabs** - ActiveTabIndex **(int)**, active tab from 0; binds with **@bind-ActiveTabIndex** (default **0**). - Pills **(bool)**, tabs as rounded buttons (default **false**, underlined). - KeepAlive **(bool)**, keeps inactive panels hidden so they keep their state (default **false**). - AriaLabel **(string)**, accessible text of the tab list. - Class **(string)**, extra css class. - SelectAsync(int) **(method)**, activates a tab from code. **AstrolContentTab** - Title **(string)**, tab text. - Icon **(string)**, **astrol-*** icon (optional). - Badge **(string)**, short text next to the title, e.g. a counter (optional). - Disabled **(bool)**, disabled tab (default **false**). - ChildContent **(RenderFragment)**, panel content. Tabs follow the order in which they are created; one that appears later (inside an **@if**) is added at the end.