Get up and running in minutes.
Install the package, register one provider, and import only the components you need. Every component is standalone, tree-shakeable, and typed from the ground up.
Install the package
Add Zyra NG UI to your Angular workspace.
npm install zyra-ng-uiRegister the provider
Enable the token-driven theme service once during app bootstrap.
// app.config.ts
import { provideZyra } from 'zyra-ng-ui';
export const appConfig: ApplicationConfig = {
providers: [
provideRouter(routes),
provideZyra({ theme: 'light' }),
],
};Import and use
Drop any component directly into your standalone imports array.
import { ZyraButton, ZyraCard } from 'zyra-ng-ui';
@Component({
standalone: true,
imports: [ZyraButton, ZyraCard],
template: `
<zyra-card padding="lg">
<zyra-button variant="primary">Get started</zyra-button>
</zyra-card>
`,
})
export class MyComponent {}/ Components
All 16 components
Every component is a standalone import — add only what your feature needs. Click any name to open its interactive playground.
| Component | Selector | Import name | Category |
|---|---|---|---|
| Button | zyra-button | ZyraButton | Actions |
| Chip | zyra-chip | ZyraChip | Actions |
| Badge | zyra-badge | ZyraBadge | Status |
| Avatar | zyra-avatar | ZyraAvatar | Identity |
| Card | zyra-card | ZyraCard | Layout |
| Accordion | zyra-accordion | ZyraAccordion | Layout |
| Divider | zyra-divider | ZyraDivider | Layout |
| Input | zyra-input | ZyraInput | Forms |
| Form Field | zyra-form-field | ZyraFormField | Forms |
| Toggle | zyra-toggle | ZyraToggle | Forms |
| Spinner | zyra-spinner | ZyraSpinner | Feedback |
| Progress | zyra-progress | ZyraProgress | Feedback |
| Alert | zyra-alert | ZyraAlert | Feedback |
| Toast | zyra-toast-container | ZyraToastContainer | Feedback |
| Tooltip | zyra-tooltip | ZyraTooltip | Overlays |
| Modal | zyra-modal | ZyraModal | Overlays |
/ Theming
Customize the token layer
Zyra UI uses CSS custom properties as its design token system. Override any --zyr-* variable in your global stylesheet to instantly restyle every component.
Override tokens in CSS
/* global styles.css — override any token */
:root {
--zyr-accent: #7c3aed;
--zyr-accent-muted: #ede9fe;
--zyr-radius-md: 6px;
--zyr-font-body: 'Inter', sans-serif;
}Switch themes at runtime
import { inject } from '@angular/core';
import { ZyraThemeService } from 'zyra-ng-ui';
const theme = inject(ZyraThemeService);
theme.setTheme('dark'); // force dark
theme.setTheme('light'); // force light
theme.toggle(); // switch between both--zyr-accent--zyr-bg--zyr-bg-2--zyr-bg-3--zyr-text--zyr-text-muted--zyr-border--zyr-success--zyr-warning--zyr-danger--zyr-info--zyr-font-body--zyr-font-display--zyr-font-mono--zyr-radius-sm--zyr-radius-md--zyr-radius-lg--zyr-transition-base--zyr-transition-fast/ FAQ
Common questions
input(), model(), output(), and computed() — which requires Angular 17+. Angular 21 is recommended for the best experience. zyra-ng-ui and you're set. imports array of any module. The standalone architecture does not prevent module-based usage. --zyr-accent in your global styles. Zyra UI derives every accent-tinted surface — muted backgrounds, borders, focus rings — from that single variable, so one change cascades through the entire system. theme.setTheme('dark') via the injected ZyraThemeService and every component switches immediately. The theme service also exposes a toggle() method for a one-line light/dark toggle. Ready to build?
Browse the interactive playground for every component and copy the code you need.