Nova UI - Modern Angular UI Library
October 5, 2025 ยท View on GitHub
A modern Angular 20 UI component library built with signals, standalone components, and a CSS-first theming approach.
โจ Features
- ๐จ CSS-First Theming - Simple, customizable CSS variables
- ๐ Dark Mode Support - Built-in light and dark themes
- ๐ฆ Tree-shakeable - Import only what you need
- ๐ง Fully Typed - Complete TypeScript support
- โก Angular 20 - Built with latest Angular features and signals
- ๐ Standalone Components - No NgModules required
- โ๏ธ Signal-based State - Modern reactive patterns
๐ Quick Start
Installation
npm install ngx-nova-ui
Basic Setup
- Import the CSS in your
styles.css:
@import 'ngx-nova-ui/src/lib/styles/nova-ui.scss';
- Import components as needed:
import { NovaButton } from 'ngx-nova-ui';
@Component({
selector: 'app-root',
imports: [NovaButton],
template: `<nova-button>Click me</nova-button>`,
})
export class AppComponent {}
Using Components
<nova-button variant="primary" (clicked)="handleClick()"> Click me </nova-button>
Customizing Theme
Override CSS variables in your styles:
:root {
--nova-primary: #4f46e5;
--nova-primary-foreground: #ffffff;
--nova-radius: 0.5rem;
}
/* Dark mode is applied automatically with .dark class */
.dark {
--nova-background: #09090b;
--nova-foreground: #fafafa;
}
๐ CSS Variables
The library provides a comprehensive set of CSS variables for colors, spacing, typography, and more. All variables use the --nova- prefix for easy identification.
๐ ๏ธ Development
Development Server
ng serve
Navigate to http://localhost:4200/. The application will automatically reload if you change any of the source files.
Building the Library
# Build library only
npm run build
# Build library
npm run build:all
Running Tests
# Unit tests
npm test
# Storybook
npm run storybook
๐ Dark Mode
Use the theme service to toggle dark mode:
import { NovaThemeService } from 'ngx-nova-ui';
export class AppComponent {
private themeService = inject(NovaThemeService);
toggleTheme() {
this.themeService.toggleMode();
}
setDarkMode() {
this.themeService.setMode('dark');
}
}
๐๏ธ Project Structure
ngx-nova-ui-workspace/
โโโ projects/
โ โโโ ngx-nova-ui/ # Library source
โ โโโ src/
โ โ โโโ lib/
โ โ โ โโโ components/ # UI components
โ โ โ โโโ services/ # Theme service
โ โ โ โโโ styles/ # CSS with variables
โ โ โโโ public-api.ts # Public exports
โ โโโ ng-package.json # Library config
โโโ .storybook/ # Storybook configuration
๐ฆ Available Components
- NovaButton - Button component with variants and sizes
- More components coming soon!
๐ค Contributing
Contributions are welcome! Please read our contributing guidelines before submitting PRs.
๐ License
MIT License - see LICENSE file for details
๐ Acknowledgments
CSS variables approach inspired by modern CSS-first design systems.
Built with โค๏ธ using Angular 20