Kumo Svelte
  • Home
  • Installation
  • Colors
  • Accessibility
  • Changelog
  • Autocomplete
  • Badge
  • Banner
  • Breadcrumbs
  • Button
  • Checkbox
  • Clipboard Text
  • Cloudflare Logo
  • CodeHighlighted
  • Collapsible
  • Combobox
  • Command Palette
  • Date Picker
  • Dialog
  • Dropdown
  • Empty
  • Flow
  • Grid
  • Input
  • InputArea
  • InputGroup
  • Label
  • Layer Card
  • Link
  • Loader
  • MenuBar
  • Meter
  • Pagination
  • Popover
  • Radio
  • Select
  • Sensitive Input
  • Sidebar
  • Skeleton Line
  • Switch
  • Table
  • Table of Contents
  • Tabs
  • Text
  • Toast
  • Toolbar
  • Tooltip
  • Charts
  • Colors
  • Timeseries
  • Maps
  • Sankey
  • Custom Chart
  • Page Header
  • Resource List
  • Delete Resource
Tabs
kumo-svelte

Tabs

A set of layered sections of content, known as tab panels, displayed one at a time.

Segmented (default)

Underline

<script lang="ts">
  import * as Tabs from "kumo-svelte/components/tabs";
</script>

<div class="flex flex-col gap-6">
  <div>
    <p class="mb-2 text-sm text-kumo-subtle">Segmented (default)</p>
    <Tabs.Root variant="segmented" value="tab1">
      <Tabs.List>
        <Tabs.Trigger value="tab1">Tab 1</Tabs.Trigger>
        <Tabs.Trigger value="tab2">Tab 2</Tabs.Trigger>
        <Tabs.Trigger value="tab3">Tab 3</Tabs.Trigger>
      </Tabs.List>
    </Tabs.Root>
  </div>
  <div>
    <p class="mb-2 text-sm text-kumo-subtle">Underline</p>
    <Tabs.Root variant="underline" value="tab1">
      <Tabs.List>
        <Tabs.Trigger value="tab1">Tab 1</Tabs.Trigger>
        <Tabs.Trigger value="tab2">Tab 2</Tabs.Trigger>
        <Tabs.Trigger value="tab3">Tab 3</Tabs.Trigger>
      </Tabs.List>
    </Tabs.Root>
  </div>
</div>

Import

import * as Tabs from "kumo-svelte/components/tabs";

Usage

<script lang="ts">
  import * as Tabs from "kumo-svelte/components/tabs";
</script>

<Tabs.Root value="overview">
  <Tabs.List>
    <Tabs.Trigger value="overview">Overview</Tabs.Trigger>
    <Tabs.Trigger value="settings">Settings</Tabs.Trigger>
  </Tabs.List>
  <Tabs.Content value="overview">Overview content</Tabs.Content>
  <Tabs.Content value="settings">Settings content</Tabs.Content>
</Tabs.Root>

Examples

Variants

Segmented (Default)

A pill-shaped indicator slides between tabs on a subtle background.

<script lang="ts">
  import * as Tabs from "kumo-svelte/components/tabs";
</script>

<Tabs.Root variant="segmented" value="tab1">
  <Tabs.List>
    <Tabs.Trigger value="tab1">Tab 1</Tabs.Trigger>
    <Tabs.Trigger value="tab2">Tab 2</Tabs.Trigger>
    <Tabs.Trigger value="tab3">Tab 3</Tabs.Trigger>
  </Tabs.List>
</Tabs.Root>

Underline

A bottom border with a primary-colored indicator. The active tab has bolder text for emphasis.

<script lang="ts">
  import * as Tabs from "kumo-svelte/components/tabs";
</script>

<Tabs.Root variant="underline" value="tab1">
  <Tabs.List>
    <Tabs.Trigger value="tab1">Tab 1</Tabs.Trigger>
    <Tabs.Trigger value="tab2">Tab 2</Tabs.Trigger>
    <Tabs.Trigger value="tab3">Tab 3</Tabs.Trigger>
  </Tabs.List>
</Tabs.Root>

Small Size

Use size="sm" for a compact tab bar that matches Input size="sm" height.

Segmented sm

Underline sm

<script lang="ts">
  import * as Tabs from "kumo-svelte/components/tabs";
</script>

<div class="flex flex-col gap-6">
  <div>
    <p class="mb-2 text-sm text-kumo-subtle">Segmented sm</p>
    <Tabs.Root variant="segmented" size="sm" value="tab1">
      <Tabs.List>
        <Tabs.Trigger value="tab1">Tab 1</Tabs.Trigger>
        <Tabs.Trigger value="tab2">Tab 2</Tabs.Trigger>
        <Tabs.Trigger value="tab3">Tab 3</Tabs.Trigger>
      </Tabs.List>
    </Tabs.Root>
  </div>
  <div>
    <p class="mb-2 text-sm text-kumo-subtle">Underline sm</p>
    <Tabs.Root variant="underline" size="sm" value="tab1">
      <Tabs.List>
        <Tabs.Trigger value="tab1">Tab 1</Tabs.Trigger>
        <Tabs.Trigger value="tab2">Tab 2</Tabs.Trigger>
        <Tabs.Trigger value="tab3">Tab 3</Tabs.Trigger>
      </Tabs.List>
    </Tabs.Root>
  </div>
</div>

Controlled

Use bind:value for controlled state.

Active tab: tab1

<script lang="ts">
  import * as Tabs from "kumo-svelte/components/tabs";
  let activeTab = $state("tab1");
</script>

<div class="space-y-4">
  <Tabs.Root bind:value={activeTab}>
    <Tabs.List>
      <Tabs.Trigger value="tab1">Tab 1</Tabs.Trigger>
      <Tabs.Trigger value="tab2">Tab 2</Tabs.Trigger>
      <Tabs.Trigger value="tab3">Tab 3</Tabs.Trigger>
    </Tabs.List>
  </Tabs.Root>
  <p class="text-sm text-kumo-subtle">Active tab: <code class="text-sm">{activeTab}</code></p>
</div>

Many Tabs

Tabs automatically scroll horizontally when there are many items.

<script lang="ts">
  import * as Tabs from "kumo-svelte/components/tabs";
  const items = [
    { value: "overview", label: "Overview" },
    { value: "analytics", label: "Analytics" },
    { value: "reports", label: "Reports" },
    { value: "notifications", label: "Notifications" },
    { value: "settings", label: "Settings" },
    { value: "billing", label: "Billing" },
    { value: "security", label: "Security" },
    { value: "integrations", label: "Integrations" },
  ];
</script>

<div class="w-full max-w-md">
  <Tabs.Root value="overview">
    <Tabs.List>
      {#each items as item (item.value)}
        <Tabs.Trigger value={item.value}>{item.label}</Tabs.Trigger>
      {/each}
    </Tabs.List>
  </Tabs.Root>
</div>

API Reference

Tabs

No component-specific props. This component accepts child content or standard forwarded attributes.

Tabs.Content

No component-specific props. This component accepts child content or standard forwarded attributes.

Tabs.List

PropTypeDefault
sizeKumoTabsSize—
variantKumoTabsVariant—

Tabs.Root

PropTypeDefault
activateOnFocusboolean—
indicatorClassNamestring—
sizeKumoTabsSizeKUMO_TABS_DEFAULT_VARIANTS.size
variantKumoTabsVariantKUMO_TABS_DEFAULT_VARIANTS.variant

Tabs.Trigger

PropTypeDefault
sizeKumoTabsSize—
variantKumoTabsVariant—

On this page

  • Import
  • Usage
  • Examples
    • Variants
    • Small Size
    • Controlled
    • Many Tabs
  • API Reference
    • Tabs
    • Tabs.Content
    • Tabs.List
    • Tabs.Root
    • Tabs.Trigger