Getting StartedInstallation and setup guides 5
LayoutWorkflow and structural layout components 7
OverlayModal and floating layer surfaces 3
FeedbackStatus, empty, progress, and loading placeholder patterns 5
FormInput and selection components 17
UtilityGeneral-purpose interface utilities 7
NavigationMenu surfaces and hierarchical actions 7

Styling contract

Context Menu styling relies on public slot and state attributes so custom themes can style target affordances and menu surfaces without private DOM coupling. The wrapper adds a minimum panel skin, but placement and item treatments still live on those public hooks.

CSS contract table

SelectorApplied onPurpose
[data-slot='context-menu-trigger']Context target surfaceRight-click affordance and focus ring styling.
[data-slot='menu'][data-state='open']Context menu panelPanel visibility, border, spacing, and background surface.
[data-slot='menu-item']Action itemTypography, spacing, and pointer affordance for actions.
[data-slot='menu-item'][data-active]Action itemKeyboard-active state from arrow traversal.
[data-slot='menu-item'][aria-expanded='true']Submenu trigger itemExpanded state for nested context menus.
[data-slot='menu-item'][aria-disabled='true']Disabled action itemDimmed visual affordance for non-interactive actions.
[data-slot='menu-group-label'], [data-slot='menu-separator']Menu sub-elementsSection labeling and separation inside larger action groups.

Example style contract

context-menu.contract.css

css
.context-shell {
  position: relative;
}

[data-slot="context-menu-trigger"] {
  cursor: context-menu;
}

.context-shell [data-slot="menu"] {
  left: 0;
  position: absolute;
  top: calc(100% + 0.42rem);
}

.context-shell [data-slot="menu"][data-state="open"] {
  box-shadow: 0 14px 34px -22px color-mix(in srgb, var(--tng-semantic-foreground-primary) 38%, transparent);
}

.context-shell [data-slot="menu-item"] {
  border-radius: 0.55rem;
  min-height: 2rem;
  padding: 0.42rem 0.65rem;
}

.context-shell [data-slot="menu-item"][data-active],
.context-shell [data-slot="menu-item"][aria-expanded="true"] {
  background: color-mix(in srgb, var(--tng-semantic-accent-brand) 15%, transparent);
}

.context-shell [data-slot="menu-item"][aria-disabled="true"] {
  opacity: 0.55;
}