HomePluginsToolsGuidesPortfolioWorkflowAboutWork with usContact
GetSet

We build and fix production web applications, and publish the UI packages and free browser tools on this site.

info@get-set.it

Explore

  • Plugins
  • Tools
  • Guides
  • Portfolio

Company

  • About
  • Workflow
  • Work with us
  • Contact

Legal

  • Terms
  • Privacy
  • Accessibility
  • Cookies

© 2026 GetSet

We're on npm

Your Bundle

Your bundle is empty

Add plugins from the catalog to build one combined CDN link — like picking font families.

Browse plugins
Layout Plugin

GS Tabs

Tabs with line, pill, enclosed and segment variants, a sliding indicator, vertical mode, lazy panels and closable/addable/draggable tabs.

Latest: v1.0.3
Downloads last month: 60
Visit Demo Website

Install Package

npm i @get-set/gs-tabs
or via CDN
<link rel="stylesheet" href="https://cdn.get-set.it/gs-tabs/latest/gs-tabs.min.css">
<script src="https://cdn.get-set.it/gs-tabs/latest/gs-tabs.min.js"></script>
Interactive Playground

Live Sandbox

Tabs.jsx
1
2
3
4
5
6
7
8
9
import Tabs from '@get-set/gs-tabs';

export default function App() {
  return (
    <Tabs>
      <div className="content">Your Tabs content</div>
    </Tabs>
  );
}
Live Preview

Options

Configuration Values

Reference?Reference option.
Active Tab?Controlled active tab id (or index).
Default Active Tab?Uncontrolled initial active tab id (or index).
Orientation?Layout axis of the tablist.
Tab Position?Tablist placement relative to the panels.
Variant?Visual variant. Default: 'line'.
Size?Size preset. Default: 'md'.
Align?Tab distribution within the tablist.
Animation?Panel transition name.
Animation Duration?Panel transition duration in ms.
Animation Easing?CSS easing applied to the panel transition + indicator slide.
Add Button Label?Label / HTML for the add button.
Overflow?How to handle tabs exceeding the tablist width.
Theme?Visual theme. `auto` follows prefers-color-scheme.
Accent?Accent color (CSS var --gst-accent) for the indicator / active tab.
Class Name?Extra class name applied to the root.

Feature Flags

API Specifications

OptionTypeDefaultDescription
referencestringnoneReference.
tabsGSTabConfig[]noneTab definitions as a config array. When omitted, tabs are read from the markup children (native) / rendered children (React).
activeTabstring | numbernoneControlled active tab id (or index). When provided, fully controlled.
defaultActiveTabstring | numbernoneUncontrolled initial active tab id (or index). Default: first enabled.
orientationGSTabsOrientation'horizontal'Layout axis of the tablist. Default: 'horizontal'.
tabPositionGSTabsPosition'top'Tablist placement relative to the panels. Default: 'top'.
variantGSTabsVariant'line'Visual variant. Default: 'line'.
sizeGSTabsSize'md'Size preset. Default: 'md'.
alignGSTabsAlign'start'Tab distribution within the tablist. Default: 'start'.
stretchbooleanfalseStretch tabs to fill the tablist (shorthand for align:'stretch').
lazybooleanfalseMount a panel only the first time its tab is activated. Default: false (all panels mounted up-front).
keepMountedbooleantrueKeep a lazily-mounted panel in the DOM after it is deactivated (hidden). Default: true. When false, inactive lazy panels are unmounted.
animationGSTabsAnimation | false'fade'Panel transition name. `false` disables panel motion. Default: 'fade'.
animationDurationnumber | GSTabsAnimationDuration260Panel transition duration in ms. Default: 260.
animationEasingstring'cubic-bezier(.4,0,.2,1)'CSS easing applied to the panel transition + indicator slide.
animatedIndicatorbooleantrueAnimate the active-indicator bar sliding between tabs (line / underline variants). Default: true.
reducedMotion'auto' | boolean'auto'Honor `prefers-reduced-motion`. `'auto'` follows the OS setting; `true` always reduces; `false` never reduces. Default: 'auto'.
closablebooleanfalseShow a close (×) button on every tab. Per-tab `closable` overrides this.
addablebooleanfalseShow a trailing "add tab" (+) button. Default: false.
addButtonLabelstring'+'Label / HTML for the add button. Default: '+'.
draggablebooleanfalseReorder tabs by dragging them. Default: false.
overflowGSTabsOverflow'scroll'How to handle tabs exceeding the tablist width. `scroll` shows prev/next scroll buttons; `menu` collapses overflow into a dropdown; `wrap` wraps to multiple rows; `none` clips. Default: 'scroll'.
themeGSTabsTheme'auto'Visual theme. `auto` follows prefers-color-scheme. Default: 'auto'.
accentstringnoneAccent color (CSS var --gst-accent) for the indicator / active tab.
rtlbooleanfalseRight-to-left layout. Default: false.
customClassGSTabsCustomClassnonePer-part class overrides.
classNamestringnoneExtra class name applied to the root.

Technical Features

4 Variants

Line, pill, enclosed and segment styles.

Sliding Indicator

Animated active-tab underline / pill.

Lazy Panels

Mount panel content only when first shown.

Draggable Tabs

Reorder, add and close tabs inline.

We build and maintain these packages. If you want this kind of work on your own product, we’re available.

Work with us Contact us