Getting StartedInstall and bootstrap headless foundations 4
LayoutHeadless structural primitives for expandable and container patterns 6
OverlayHeadless modal and floating layer behavior 3
FeedbackHeadless notification and status communication patterns 5
FormHeadless input and selection contracts 17
UtilityReusable action, identity, and clipboard behavior 6
NavigationHeadless trails, trees, menus, and command surfaces 7

Styling contract

Headless tabs expose stable slot and state attributes without forcing any wrapper shell or default trigger markup.

Stable hooks

HookValuesWhere
data-slottabs, tab-list, tab, tab-panelRoot and all registered parts.
data-selected, data-focused, data-disabledtrue | falseTab triggers.
data-activetrue | falsePanels.
data-orientation, data-activationorientation / activation modeRoot.

CSS starter

tabs.primitive.css

css
[data-slot="tabs"] {
  display: grid;
  gap: 0.75rem;
}

[data-slot="tab-list"] {
  display: flex;
  gap: 0.5rem;
}

[data-slot="tab"][data-selected="true"] {
  background: var(--tng-semantic-background-surface);
}

[data-slot="tab-panel"][hidden] {
  display: none !important;
}

Owner guidance

Prefer styling the explicit slot hooks instead of raw element names. That keeps your tabs contract resilient if you later swap a button trigger for another authored host.