Skip to content

Modern Angular 20 UI component library with signal-based architecture, standalone components, and CSS-first theming

License

Notifications You must be signed in to change notification settings

lebocow/ngx-nova-ui

Repository files navigation

Nova UI - Modern Angular UI Library

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

  1. Import the CSS in your styles.css:
@import'ngx-nova-ui/src/lib/styles/nova-ui.scss';
  1. Import components as needed:
import{NovaButton}from'ngx-nova-ui'; @Component({selector: 'app-root',imports: [NovaButton],template: `<nova-button>Click me</nova-button>`,})exportclassAppComponent{}

Using Components

<nova-buttonvariant="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';exportclassAppComponent{privatethemeService=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

About

Modern Angular 20 UI component library with signal-based architecture, standalone components, and CSS-first theming

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published