Tabs

Segmented navigation. Built from two Figma components in sequence: the Tab Item (Active, Default, Hover states) and the Tabs container that groups them. All values pulled directly from the LUSTER Figma variables.

Home
Figma Properties
State: Active
Background: #6741D9
Text / Icon: #F2EDFF
Padding: 8px 12px · Gap: 8px
Font: Inter 400 / 16px

Component · Tab Item (Variants)

A single tab pill with a label and chevron. Three states: Active (filled purple), Default (grey), Hover (grey with purple text).

Home
Active
Home
Default
Home
Hover

Component · Tabs

A row of Tab Items grouped in the Tabs container. Click a tab to make it active.

Home
Profile
Messages

Design Tokens

Token names mirror the LUSTER Figma variable paths one-to-one. Values shown are the Diamond brand, Light mode defaults (the Figma file's default mode). Other brands (Amber, Opal) and Dark mode resolve to different values via the Color Theme & Component Brand collections.

Token NameFigma VariableDefault Value
--tabsItemActiveBgColortabs/Item/active/bg/color#6741D9
--tabsItemActiveTitleFontColortabs/Item/active/title/font/color#F2EDFF
--tabsItemActiveIconColortabs/Item/active/icon/color#F2EDFF
--tabsItemDefaultBgColortabs/Item/default/bg/color#ACADB2
--tabsItemDefaultTitleFontColortabs/Item/default/title/font/color#24242C
--tabsItemDefaultIconColortabs/Item/default/icon/color#24242C
--tabsItemHoverBgColortabs/Item/hover/bg/color#ACADB2
--tabsItemHoverTitleFontColortabs/Item/hover/title/font/color#794DFF
--tabsItemHoverIconColortabs/Item/hover/icon/color#794DFF
--tabsBgColortabs/bg/color#ACADB2
--tabsBorderRadiustabs/border/radius0px
--tabsItemsBorderRadiustabs/Items/border/radius0px
--tabGaptab/gap8px
--tabPaddingXtab/padding/x12px
--tabPaddingYtab/padding/y8px
--tabItemsGaptab/items/gap20px
--tabItemsPaddingXtab/items/padding/x4px
--tabItemsPaddingYtab/items/padding/y4px
--bodyFontSizetypography/body/font/size16px
--bodyFontLineHeighttypography/body/font/lineHeight19px
--bodyFontWeighttypography/body/font/weight400
--bodyFontFamilybody/font/familyInter

Usage Guidelines

✓ DO

Keep exactly one tab Active at a time within a Tabs group.

✓ DO

Use short, parallel labels so tabs read as a set.

✗ DON'T

Don't use Tabs for unrelated destinations — use the Navbar.

✗ DON'T

Don't exceed ~5 tabs — consider a dropdown for overflow.

Implementation

Values shown are the Diamond brand, Light mode defaults (the Figma file's default mode). Other brands (Amber, Opal) and Dark mode resolve to different values via the Color Theme & Component Brand collections.

import './Tabs.css';

export const Tabs = ({ items, value, onChange }) => (
  <div className="tabs" role="tablist">
    {items.map(it => (
      <button
        key={it.value}
        role="tab"
        aria-selected={value === it.value}
        className={`tab-item ${value === it.value ? 'active' : 'default'}`}
        onClick={() => onChange(it.value)}
      >
        {it.label}{it.hasMenu && <ChevronDown/>}
      </button>
    ))}
  </div>
);