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

API reference

Collapsible exposes a small headless primitive trio and a wrapper component. The wrapper owns a baseline trigger shell, while the primitive stays available for fully custom markup.

tngCollapsible (directive)

Attach on a container element to reflect root state. Pair it with tngCollapsibleTrigger and tngCollapsibleContent when you want full control over the markup.

Primitive attachment

html
<section tngCollapsible [open]="open()">
  <button
    tngCollapsibleTrigger
    [open]="open()"
    [contentId]="contentId"
    (click)="open.set(!open())"
  >
    Release flow
  </button>

  <ol
    tngCollapsibleContent
    [id]="contentId"
    [open]="open()"
    aria-label="Release flow"
  >
    <li>Draft</li>
    <li>Review</li>
    <li>Publish</li>
  </ol>
</section>
SurfaceValuePurpose
Inputopen, disabledMirrors into data-state and data-disabled.
Selector[tngCollapsible]Attach collapsible semantics without imposing markup.
Export aliastngCollapsibleReference directive instance from templates if needed.

tng-collapsible (component)

Wrapper that renders the trigger button, generated content id wiring, and a baseline shell around projected content.

Component state

ts
import { Component, signal } from '@angular/core';
import { TngCollapsibleComponent } from '@tailng-ui/components';

@Component({
  selector: 'app-collapsible-api-demo',
  standalone: true,
  imports: [TngCollapsibleComponent],
  templateUrl: './collapsible-api-demo.component.html',
})
export class CollapsibleApiDemoComponent {
  readonly open = signal(false);
}

Component attachment

html
<tng-collapsible title="Checkout steps" [open]="open()" (openChange)="open.set($event)">
  <ol>
    <li data-state="current"><span>1</span> Shipping</li>
    <li data-state="upcoming"><span>2</span> Payment</li>
    <li data-state="upcoming"><span>3</span> Confirmation</li>
  </ol>
</tng-collapsible>
InputTypeDefaultNotes
contentIdstringGenerated idOverrides the generated content id if you need a stable external hook.
disabledbooleanfalseLocks the trigger and keeps the current open state unchanged.
openbooleanfalseControls whether the projected content is visible.
titlestring'Collapsible'Visible trigger label rendered inside the wrapper trigger.
openChangeEventEmitter<boolean>n/aEmits the next requested open state when the trigger is activated.