agentic-ui logoagentic-ui

Tabs

Tab navigation for switching between content panels. Use the wrapper or compose TabsList/TabsTab/TabsPanel with a raw base-ui Root.

High-level wrapper

Use tabs to organize related content into separate panels.
import { Tabs } from "@brijbyte/agentic-ui/tabs";

import "@brijbyte/agentic-ui/tabs.css";

const ITEMS = [
  { value: "overview", label: "Overview", content: "Use tabs to organize related content into separate panels." },
  { value: "usage", label: "Usage", content: "Pass an items array with value, label, and content for each tab." },
  { value: "api", label: "API", content: "See TabsProps. All base-ui Tabs.Root props are forwarded." },
  { value: "disabled", label: "Disabled", content: "", disabled: true },
];

export default function HighLevelDemo() {
  return <Tabs items={ITEMS} />;
}

Composed: base-ui Root + styled parts

Panel A — composed with a raw Tabs.Root from base-ui.
import { Tabs as BaseTabs } from "@base-ui/react/tabs";
import { TabsList, TabsTab, TabsPanel } from "@brijbyte/agentic-ui/tabs";

import "@brijbyte/agentic-ui/tabs.css";

export default function ComposedDemo() {
  return (
    <BaseTabs.Root defaultValue="a">
      <TabsList>
        <TabsTab value="a">Tab A</TabsTab>
        <TabsTab value="b">Tab B</TabsTab>
        <TabsTab value="c" disabled>
          Disabled
        </TabsTab>
      </TabsList>
      <TabsPanel value="a">
        Panel A — composed with a raw{" "}
        <code style={{ fontFamily: "var(--font-mono)", fontSize: "var(--font-size-xs)", color: "var(--color-code)" }}>Tabs.Root</code> from
        base-ui.
      </TabsPanel>
      <TabsPanel value="b">Panel B — styled parts applied as native base-ui components.</TabsPanel>
    </BaseTabs.Root>
  );
}

API Reference

Tab navigation for switching between content panels. Each tab can have
an optional icon and can be individually disabled.

PropTypeDefault
items*TabItem[]

Array of tab definitions to render.

valuestring

Currently active tab value (controlled).

defaultValuestring

Initially active tab value (uncontrolled). Defaults to the first item.

onValueChange((value: unknown, eventDetails: unknown) => void)

Called when the active tab changes. eventDetails is the base-ui event details object.

classNamestring

Styled Parts

base-ui docs ↗

Pre-styled wrappers around the corresponding base-ui parts. All base-ui props are forwarded.

CSS Class Names

Available as keys on the TabsStyles object. Each key maps to a hashed CSS module class name at runtime.

listpanelroottab