SuperCat Design System · Primitives · iPad-grade

Tabs .ktab

One primitive, four variants. Underline tabs for primary view switching, pill tabs for the Settings-screen pattern, segmented control for inline toggles, vertical tabs for sidebar nav. Tabs are navigation — hover and active both lift to brand crimson. The underline bar slides between items with a 320 ms emphasized easing, overlaying the baseline.

01 · Underline 02 · Pills 03 · Segmented 04 · Vertical 05 · Sizes 06 · Composition 07 · Functional demo
01

Underline — the default

The everyday tab pattern for primary view switching. Hairline baseline across the whole row; active item gets a 3 px crimson bar that slides between items, overlaying the baseline. Optional left icon and right count badge per item.

Plain.ktab
With count badges.ktab-count
With icons.ktab-icon
02

Pills — the Settings-screen pattern

Wraps onto multiple rows; ideal for many-option tab strips. Active pill is filled with brand crimson and cream text — strong wayfinding, matches the Settings-screen pattern in the App. Hover lifts text to crimson on a faint paper tint.

Settings · 12 sections.ktab.ktab-pills
Pills with count badges.ktab-pills + .ktab-count
03

Segmented control — inline toggle group

Compact iOS-style. Paper-2 background, active item lifts to a card-on-paper with a soft shadow. Use for view-mode switches, density toggles, narrow sets of mutually exclusive choices.

View mode.ktab.ktab-seg
04

Vertical — sidebar / secondary nav

Items stack; the indicator is on the left edge. Used inside narrow rails (Settings sidebar, App secondary nav). Active row also gets a faint paper-2 fill for confident wayfinding.

Settings nav.ktab.ktab-vertical
Data Import

Configure imports

The vertical-tab pattern is for tall, narrow nav contexts. The right pane updates based on the active tab.
05

Sizes — sm · default · lg

Three heights: 32 (sm) · 44 (default, iPad-grade) · 52 (lg, for hero rows). All three variants pick up the size modifier.

Underline.ktab-sm · default · .ktab-lg
06

Composition — tabs + card + table

Real-world: tabs sit above a card, the card embeds a table edge-to-edge via .kc-body-flush. One coherent surface.

Order # Customer Submitted Status Total
112625-10Brent Sanders2025-11-26 · 14:39 Confirmed$12,480.00
112625-9Lina Park2025-11-26 · 14:30 Confirmed$8,940.50
112625-8Howard & Co.2025-11-26 · 14:22 Pending$3,612.00
07

Functional demo — click to switch

Click the underline tabs below to switch panels. The primitive itself is markup-only; this small script toggles aria-selected and shows the right [role=tabpanel]. Drop in any framework's state bindings and it works the same way.

Past 30 days

Overview

Pipeline summary, win rate, recent activity. Switching tabs swaps this content with the matching panel below — the primitive doesn't care what's inside.

Next · .kdt table · .kc card · .kb button · App screens (next)