Skip to content
Aggarly OS
  • Getting Started
    • Introduction
  • Foundations
    • Colors
    • Spacing
    • Radius
    • Typography
    • Shadows
    • Z-Index
    • Gradients
    • Tokens
    • RTL & Direction
    • Theming
  • Layout
    • Containers
    • Grid System
    • Layout Utilities
  • Components
    • Alerts
    • Avatars
    • Buttons
    • Button Group
    • Badges
    • Inputs
    • Select
    • Checkbox
    • Counters-timers
    • Radio
    • Switch
    • Stepper
    • Select-pro
    • Cards
    • Modals
    • Dropdown
    • Popover
    • Tooltip
    • Accordion
    • Breadcrumb
    • Tabs
    • Navbar
    • List Group
    • Toasts
    • Skeleton
    • Pagination
    • Progress
    • Table
    • Icons
    • Form
    • Ribbons
    • Spinner
    • Offcanvas
    • Feedback
    • Grid
    • Data UI
  • Data UI
    • Overview
  • Platform
    • Reference DataCore
  • Widgets
    • KPI
    • Analytics
    • Behavior
  • Brand
    • Logo
    • Brand Usage
Components/Tabs

Tabs

Tabs provide enterprise-grade navigation for dense workflows in Aggarly Platform: student profiles, therapy plans, billing, documentation, exports, and admin settings. This system supports multiple variants, sizes, tones, vertical navigation, and scrollable arrow tabs.

Default Tabs

Underline tabs with an animated indicator and full keyboard navigation.

Overview is typically the default tab for student context.
Show code
Default tabs (JSX)
import { Tabs, TabsList, TabsTrigger, TabsPanel } from "@/design-system/components/Tabs";

export function Example() {
  return (
    <Tabs defaultValue="overview" tone="primary" variant="default">
      <TabsList ariaLabel="Student tabs">
        <TabsTrigger value="overview">Overview</TabsTrigger>
        <TabsTrigger value="notes">Notes</TabsTrigger>
        <TabsTrigger value="documents">Documents</TabsTrigger>
        <TabsTrigger value="settings">Settings</TabsTrigger>
      </TabsList>

      <TabsPanel value="overview">Overview content…</TabsPanel>
      <TabsPanel value="notes">Notes content…</TabsPanel>
      <TabsPanel value="documents">Documents content…</TabsPanel>
      <TabsPanel value="settings">Settings content…</TabsPanel>
    </Tabs>
  );
}

Justify Tabs

Equal-width tabs for dashboards and time-range selectors.

Week view.
Show code
Justify tabs (JSX)
import { Tabs, TabsList, TabsTrigger, TabsPanel } from "@/design-system/components/Tabs";

export function Example() {
  return (
    <Tabs defaultValue="week" variant="default" justify="stretch" tone="neutral">
      <TabsList ariaLabel="Time range tabs">
        <TabsTrigger value="day">Day</TabsTrigger>
        <TabsTrigger value="week">Week</TabsTrigger>
        <TabsTrigger value="month">Month</TabsTrigger>
        <TabsTrigger value="quarter">Quarter</TabsTrigger>
      </TabsList>

      <TabsPanel value="day">Day view…</TabsPanel>
      <TabsPanel value="week">Week view…</TabsPanel>
      <TabsPanel value="month">Month view…</TabsPanel>
      <TabsPanel value="quarter">Quarter view…</TabsPanel>
    </Tabs>
  );
}

Pills Tabs

Premium pill style. Great for light navigation or status switching.

Active cases.
Show code
Pills tabs (JSX)
import { Tabs, TabsList, TabsTrigger, TabsPanel } from "@/design-system/components/Tabs";

export function Example() {
  return (
    <Tabs defaultValue="active" variant="pills" tone="primary">
      <TabsList ariaLabel="Status tabs">
        <TabsTrigger value="active">Active</TabsTrigger>
        <TabsTrigger value="paused">Paused</TabsTrigger>
        <TabsTrigger value="archived">Archived</TabsTrigger>
      </TabsList>

      <TabsPanel value="active">Active…</TabsPanel>
      <TabsPanel value="paused">Paused…</TabsPanel>
      <TabsPanel value="archived">Archived…</TabsPanel>
    </Tabs>
  );
}

Segmented Tabs

Compact segmented control for small filter sets (excellent for toolbars).

All results.
Show code
Segmented tabs (JSX)
import { Tabs, TabsList, TabsTrigger, TabsPanel } from "@/design-system/components/Tabs";

export function Example() {
  return (
    <Tabs defaultValue="all" variant="segmented" tone="neutral" size="sm">
      <TabsList ariaLabel="Filters">
        <TabsTrigger value="all">All</TabsTrigger>
        <TabsTrigger value="mine">Mine</TabsTrigger>
        <TabsTrigger value="team">Team</TabsTrigger>
      </TabsList>

      <TabsPanel value="all">All results…</TabsPanel>
      <TabsPanel value="mine">My results…</TabsPanel>
      <TabsPanel value="team">Team results…</TabsPanel>
    </Tabs>
  );
}

Vertical Nav Tabs

Enterprise left-navigation tabs (orientation=vertical + variant=nav).

Profile content with identity + contacts.
Show code
Vertical nav tabs (JSX)
import { Tabs, TabsList, TabsTrigger, TabsPanel } from "@/design-system/components/Tabs";

export function Example() {
  return (
    <Tabs defaultValue="profile" variant="nav" orientation="vertical" tone="primary">
      <TabsList ariaLabel="Student navigation">
        <TabsTrigger value="profile">Profile</TabsTrigger>
        <TabsTrigger value="plan">Therapy plan</TabsTrigger>
        <TabsTrigger value="billing">Billing</TabsTrigger>
        <TabsTrigger value="audit">Audit log</TabsTrigger>
      </TabsList>

      <TabsPanel value="profile">Profile…</TabsPanel>
      <TabsPanel value="plan">Plan…</TabsPanel>
      <TabsPanel value="billing">Billing…</TabsPanel>
      <TabsPanel value="audit">Audit…</TabsPanel>
    </Tabs>
  );
}

Card Header Tabs

Tabs embedded into a card container for premium page sections.

Card header tabs are ideal for reports and administrative dashboards.
Show code
Card header tabs (JSX)
import { Tabs, TabsList, TabsTrigger, TabsPanel } from "@/design-system/components/Tabs";

export function Example() {
  return (
    <Tabs defaultValue="summary" variant="card" tone="neutral">
      <TabsList ariaLabel="Report tabs">
        <TabsTrigger value="summary">Summary</TabsTrigger>
        <TabsTrigger value="goals">Goals</TabsTrigger>
        <TabsTrigger value="sessions">Sessions</TabsTrigger>
      </TabsList>

      <TabsPanel value="summary">Summary…</TabsPanel>
      <TabsPanel value="goals">Goals…</TabsPanel>
      <TabsPanel value="sessions">Sessions…</TabsPanel>
    </Tabs>
  );
}

Arrow Nav Tabs

Scrollable tablist with arrow buttons for overflow-heavy navigation.

Scrollable tabs example.
Show code
Arrow nav tabs (JSX)
import { Tabs, TabsList, TabsTrigger, TabsPanel } from "@/design-system/components/Tabs";

export function Example() {
  return (
    <Tabs defaultValue="tab-1" variant="default" tone="neutral">
      <TabsList ariaLabel="Scrollable tabs" scrollable showArrows>
        <TabsTrigger value="tab-1">Overview</TabsTrigger>
        <TabsTrigger value="tab-2">Notes</TabsTrigger>
        <TabsTrigger value="tab-3">Documents</TabsTrigger>
        <TabsTrigger value="tab-4">Billing</TabsTrigger>
        <TabsTrigger value="tab-5">Sessions</TabsTrigger>
        <TabsTrigger value="tab-6">Progress</TabsTrigger>
        <TabsTrigger value="tab-7">Exports</TabsTrigger>
        <TabsTrigger value="tab-8">Audit</TabsTrigger>
      </TabsList>

      <TabsPanel value="tab-1">Overview…</TabsPanel>
      <TabsPanel value="tab-2">Notes…</TabsPanel>
      <TabsPanel value="tab-3">Documents…</TabsPanel>
      <TabsPanel value="tab-4">Billing…</TabsPanel>
      <TabsPanel value="tab-5">Sessions…</TabsPanel>
      <TabsPanel value="tab-6">Progress…</TabsPanel>
      <TabsPanel value="tab-7">Exports…</TabsPanel>
      <TabsPanel value="tab-8">Audit…</TabsPanel>
    </Tabs>
  );
}

Custom Hover Tabs

Premium hover emphasis (enterprise polish) with an animated underline.

Hover variant content.
Show code
Hover tabs (JSX)
import { Tabs, TabsList, TabsTrigger, TabsPanel } from "@/design-system/components/Tabs";

export function Example() {
  return (
    <Tabs defaultValue="profile" variant="hover" tone="primary">
      <TabsList ariaLabel="Profile tabs">
        <TabsTrigger value="profile">Profile</TabsTrigger>
        <TabsTrigger value="plan">Plan</TabsTrigger>
        <TabsTrigger value="docs">Docs</TabsTrigger>
      </TabsList>

      <TabsPanel value="profile">Profile…</TabsPanel>
      <TabsPanel value="plan">Plan…</TabsPanel>
      <TabsPanel value="docs">Docs…</TabsPanel>
    </Tabs>
  );
}

Border Top Nav

Top border indicator pattern (often used in admin/billing contexts).

Claims.
Show code
Topline tabs (JSX)
import { Tabs, TabsList, TabsTrigger, TabsPanel } from "@/design-system/components/Tabs";

export function Example() {
  return (
    <Tabs defaultValue="claims" variant="topline" tone="warning">
      <TabsList ariaLabel="Billing tabs">
        <TabsTrigger value="claims">Claims</TabsTrigger>
        <TabsTrigger value="auths">Authorizations</TabsTrigger>
        <TabsTrigger value="invoices">Invoices</TabsTrigger>
      </TabsList>

      <TabsPanel value="claims">Claims…</TabsPanel>
      <TabsPanel value="auths">Authorizations…</TabsPanel>
      <TabsPanel value="invoices">Invoices…</TabsPanel>
    </Tabs>
  );
}

Colored Nav

Active tab gets a stronger tone-tinted background for clearer state.

Open queue.
Show code
Colored tabs (JSX)
import { Tabs, TabsList, TabsTrigger, TabsPanel } from "@/design-system/components/Tabs";

export function Example() {
  return (
    <Tabs defaultValue="open" variant="colored" tone="success">
      <TabsList ariaLabel="Work queue">
        <TabsTrigger value="open">Open</TabsTrigger>
        <TabsTrigger value="review">Needs review</TabsTrigger>
        <TabsTrigger value="done">Completed</TabsTrigger>
      </TabsList>

      <TabsPanel value="open">Open queue…</TabsPanel>
      <TabsPanel value="review">Review queue…</TabsPanel>
      <TabsPanel value="done">Completed…</TabsPanel>
    </Tabs>
  );
}