v0.10.0 · Angular 21

Behaviour for the interfaces you own.

Quartz gives Angular design systems accessible interaction primitives — not another visual language to undo.

Signals firstSSR safeUnstyled
behaviour.preview.tsLive

const volume = signal(50);

// keyboard, pointer, RTL and ARIA

<div qzSlider [(value)]="volume">

// headless hooks, consumer visuals

<button qzSliderThumb aria-label="Volume"></button>

17

Primitives

10

Core APIs

A11y

Built in

Ergonomic API

Less ceremony.
More control.

Compose sophisticated UI behaviour with concise TypeScript while the markup and visual treatment remain entirely yours.

Signals reactive stateSSR guarded DOM
save-profile.ts

import { signal } from '@angular/core';
import { CheckboxDirective, SliderDirective, SliderThumbDirective } from '@quartz-headless/primitives';

@Component({
  imports: [CheckboxDirective, SliderDirective, SliderThumbDirective],
  template: `
    <button qzCheckbox [(checked)]="accepted">Accept</button>

    <div qzSlider [(value)]="volume">
      <button qzSliderThumb aria-label="Volume"></button>
    </div>
  `,
})
export class PreferencesComponent {
  accepted = signal(false);
  volume = signal(50);
}
Ready when you are

Start with behaviour.
Make it yours.

Install one primitive or copy its source. Quartz works with the visual system you already trust.

$ npm install @quartz-headless/core @quartz-headless/primitives

© 2024 Quartz Headless. Built by Andersseen.