Skip to content

radix-ng/primitives

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1,073 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Radix NG

Build Size Version Downloads License Angular Discord Chat

Headless, signals-first UI primitives for Angular.

Radix NG is a low-level UI primitive library for Angular with a focus on accessibility, customization, and developer experience. The primitives are headless β€” they ship no styles and expose state via data-* attributes, so you can use them as the base layer of your design system or adopt them incrementally.

The library grew out of an Angular port of Radix UI; its API and behavior now align primarily with Base UI. Some primitives build on @angular/cdk.

Features

  • 🎯 Headless β€” no styles, full control. State is exposed through data-* attributes.
  • β™Ώ Accessible β€” built to the WAI-ARIA authoring practices, with keyboard navigation and focus management.
  • ⚑ Signals-first β€” modern Angular API (input(), model(), computed(), signal()).
  • 🧩 Composable β€” primitives compose via hostDirectives and shared building blocks.
  • πŸŒ— Theme-ready β€” state-driven styling works with light/dark and any design tokens.
  • πŸ“¦ Tree-shakeable β€” granular secondary entry points (@radix-ng/primitives/<name>).

Installation

npm install @radix-ng/primitives
# or
pnpm add @radix-ng/primitives
# or
yarn add @radix-ng/primitives

Quick start

import { Component } from '@angular/core';
import {
  RdxCollapsibleRootDirective,
  RdxCollapsibleTriggerDirective,
  RdxCollapsibleContentDirective
} from '@radix-ng/primitives/collapsible';

@Component({
  selector: 'app-demo',
  imports: [RdxCollapsibleRootDirective, RdxCollapsibleTriggerDirective, RdxCollapsibleContentDirective],
  template: `
    <div rdxCollapsibleRoot>
      <button rdxCollapsibleTrigger>Toggle</button>
      <div rdxCollapsibleContent>Content</div>
    </div>
  `
})
export class DemoComponent {}

Primitives are headless: style them via the data-* attributes they expose (e.g. [data-state="open"], [data-disabled]) with the tooling of your choice.

Documentation

Components

Status: βœ… Completed Β· πŸš€ In Progress Β· πŸ›  In Review

Core primitives
Primitive Status
Accordion βœ…
Alert Dialog beta
Avatar βœ…
Aspect Ratio βœ…
Button βœ…
Checkbox βœ…
Collapsible βœ…
Context Menu βœ…
Dialog βœ…
DropdownMenu βœ…
Form ?
Hover Card βœ…
Label βœ…
Menubar βœ…
Navigation Menu βœ…
Popover βœ…
Progress βœ…
Radio βœ…
Select beta
Separator βœ…
Slider βœ…
Switch βœ…
Tabs βœ…
Toast
Toggle βœ…
Toggle Group βœ…
Toolbar βœ…
Tooltip βœ…
Dates & inputs
Primitive Status
Calendar βœ…
Date Field βœ…
Date Picker
Date Range Field
Date Range Picker
Editable βœ…
Number Field βœ…
Pagination βœ…
Range Calendar
Stepper βœ…
Time Field βœ…
Utilities
Primitive Status
FocusOutside βœ…
PointerDownOutside βœ…
FocusGuards
FocusScope

Ecosystem

Contributing

Contributions are welcome! The repository is an Nx monorepo:

.
β”œβ”€β”€ apps
β”‚   β”œβ”€β”€ radix-docs         documentation (Astro)
β”‚   β”œβ”€β”€ radix-ssr-testing  SSR tests for unstyled primitives
β”‚   └── radix-storybook    Storybook for primitives
└── packages
    └── primitives         headless primitives (no styling)
pnpm primitives:test       # run tests
pnpm primitives:build      # build the library
pnpm storybook:primitives  # start Storybook

Community

We're excited to see the community adopt Radix NG, raise issues, and provide feedback β€” whether it's a feature request, bug report, or a project to showcase.

Contributor analytics

Repobeats analytics image

License

This project is licensed under the terms of the MIT license.