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

Drawer styling

Drawer exposes data attributes on each primitive for targeted styling. The styled <tng-drawer> component applies sensible defaults.

Primitive data hooks

SelectorAttributeValues
[tngDrawerContainer]data-slot"drawer-container"
[tngDrawerContainer]data-direction"ltr" | "rtl"
[tngDrawer]data-slot"drawer"
[tngDrawer]data-state"open" | "closed"
[tngDrawer]data-position"start" | "end"
[tngDrawer]data-mode"overlay" | "push" | "side"
[tngDrawer]data-side"left" | "right"
[tngDrawer]data-disabledPresent when disabled
[tngDrawerContent]data-slot"drawer-content"

Component CSS classes

The <tng-drawer> component renders on the :host element with semantic token defaults for background, border, and padding. Override styles via ::ng-deep or custom CSS targeting data-slot / data-state attributes.

Starter CSS

Baseline styles for building a drawer layout from the headless primitives.

drawer.css

css
/* Drawer container layout */
[data-slot="drawer-container"] {
  display: flex;
  min-height: 100vh;
  position: relative;
}

/* Drawer panel */
[data-slot="drawer"] {
  background: var(--tng-semantic-background-surface);
  border-right: 1px solid var(--tng-semantic-border-subtle);
  min-width: 16rem;
  padding: 1rem;
  transition: transform 0.3s ease;
}

[data-slot="drawer"][data-state="closed"] {
  display: none;
}

[data-slot="drawer"][data-position="end"] {
  border-left: 1px solid var(--tng-semantic-border-subtle);
  border-right: none;
}

/* Drawer content */
[data-slot="drawer-content"] {
  flex: 1;
  padding: 1rem;
  transition: margin 0.3s ease;
}