2026-05-15 14:45:35 +00:00
# Nova Design System (NDS)
2026-05-15 14:32:15 +00:00
2026-06-04 12:13:30 +00:00
Nova Design System (NDS) is a lightweight, responsive UI component library built with **Astro ** . It is developed primarily for internal and personal projects, and is publicly available for reference and contributions.
2026-05-15 14:45:35 +00:00
---
## Table of Contents
2026-06-04 12:13:30 +00:00
2026-05-15 14:45:35 +00:00
1. [Overview ](#overview )
2. [Project Status ](#project-status )
3. [Core Principles ](#core-principles )
4. [Available Components ](#available-components )
2026-06-04 12:13:30 +00:00
5. [Design Tokens ](#design-tokens )
6. [Installation ](#installation )
7. [Usage ](#usage )
8. [Development ](#development )
9. [License ](#license )
2026-05-15 14:45:35 +00:00
---
## Overview
2026-06-04 12:13:30 +00:00
NDS provides a focused set of reusable Astro components with centralized design tokens, light/dark theming, and a strong focus on consistency and maintainability. The component documentation and showcase are also built with Astro.
2026-05-15 14:45:35 +00:00
## Project Status
2026-06-09 14:47:58 +02:00
> **ALPHA** — The library is under active development. Current version: `0.03.0`. Component APIs, token naming, and internal architecture may change before a stable release.
2026-05-15 14:45:35 +00:00
## Core Principles
2026-06-04 12:13:30 +00:00
- **Responsive Architecture:** Components are built mobile-first and work correctly across modern screen sizes.
- **Security-Centric:** Unsafe patterns (injection, untrusted rendering) are avoided by design.
- **Native Theming:** All styling relies on centralized design tokens and supports Light and Dark modes.
- **Type Safety:** Written in TypeScript for stronger reliability and a better developer experience.
- **Consistency First:** Shared tokens, naming conventions, and reusable patterns take priority over one-off styles.
2026-05-15 14:45:35 +00:00
## Available Components
2026-06-04 12:13:30 +00:00
These are the components currently implemented in `src/components/` :
| Component | Category |
|---|---|
| `Button` | Actions |
| `Toggle` | Actions |
2026-06-09 14:47:58 +02:00
| `NumericStepper` | Actions |
| `Tab` / `TabItem` / `TabContent` | Navigation |
2026-06-04 12:13:30 +00:00
| `Link` | Layout |
2026-06-09 14:47:58 +02:00
| `ListItem` / `ListItemTitle` / `ListItemSubtitle` | Data Display |
| `Notification` | Feedback |
| `LoadingBar` | Feedback |
2026-06-04 12:13:30 +00:00
| `Icons` | Utility |
2026-06-09 14:47:58 +02:00
> Components such as Navbar, Sidebar, Card, and Modal are planned but not yet implemented.
2026-06-04 12:13:30 +00:00
## Design Tokens
All styling is controlled via CSS custom properties prefixed with `--nds-` , defined in `src/styles/tokens/` :
| File | Contents |
|---|---|
| `_colors.scss` | Color palette and semantic colors (`success` , `warning` , `error` , `info` ) |
| `_spacing.scss` | Base spacing scale, border radius, and border width |
| `_typography.scss` | Font families, sizes, and weights |
**Rules: **
- Never hardcode colors, spacing, or radii in component styles when a token exists.
- Never override tokens locally in component scope unless explicitly supported.
- All global token changes must go through the core styling system.
2026-05-15 14:45:35 +00:00
## Installation
2026-06-09 14:47:58 +02:00
Requires **Node.js >= 22.12.0 ** .
2026-05-15 14:45:35 +00:00
``` bash
2026-06-04 12:13:30 +00:00
npm install @unkn0wndo3s/nova-design-system
2026-05-15 14:45:35 +00:00
```
No extra Vite de-optimization configuration is required.
## Usage
2026-06-04 12:13:30 +00:00
Import components directly from the package:
2026-05-15 14:45:35 +00:00
2026-06-04 12:13:30 +00:00
``` astro
---
import { Button } from '@unkn0wndo3s/nova-design-system';
---
2026-05-15 14:45:35 +00:00
2026-06-04 12:13:30 +00:00
<Button>Click me</Button>
2026-05-15 14:45:35 +00:00
```
2026-06-04 12:13:30 +00:00
``` astro
---
2026-06-09 14:47:58 +02:00
import { Notification } from '@unkn0wndo3s/nova-design-system';
2026-06-04 12:13:30 +00:00
---
2026-05-15 14:45:35 +00:00
2026-06-09 14:47:58 +02:00
<Notification type="warning">
2026-06-04 12:13:30 +00:00
This is a warning message.
2026-06-09 14:47:58 +02:00
</Notification>
2026-06-04 12:13:30 +00:00
```
2026-05-15 14:45:35 +00:00
2026-06-04 12:13:30 +00:00
## Development
2026-05-15 14:45:35 +00:00
### Clone the repository
2026-06-04 12:13:30 +00:00
2026-05-15 14:45:35 +00:00
``` bash
2026-06-04 12:13:30 +00:00
git clone https://git.novaprojects.dev/unkn0wn/nova-design-system.git
2026-05-15 14:45:35 +00:00
```
### Install dependencies
2026-06-04 12:13:30 +00:00
2026-05-15 14:45:35 +00:00
``` bash
npm install
```
2026-06-04 12:13:30 +00:00
### Start the dev server
2026-05-15 14:45:35 +00:00
``` bash
2026-06-04 12:13:30 +00:00
npm run dev
2026-05-15 14:45:35 +00:00
```
### Useful scripts
2026-06-04 12:13:30 +00:00
2026-05-15 14:45:35 +00:00
``` bash
2026-06-04 12:13:30 +00:00
npm run build # Build the project
2026-06-09 14:47:58 +02:00
npm run preview # Preview the production build
2026-05-15 14:45:35 +00:00
```
2026-06-04 12:13:30 +00:00
### Project Structure
```
src/
2026-06-09 14:47:58 +02:00
├── components/ # Astro components
2026-06-04 12:13:30 +00:00
│ ├── Button/
│ ├── Icons/
│ ├── Link/
│ ├── ListItem/
2026-06-09 14:47:58 +02:00
│ ├── LoadingBar/
2026-06-04 12:13:30 +00:00
│ ├── Notifications/
│ ├── Tabs/
│ ├── Toggle/
2026-06-09 14:47:58 +02:00
│ ├── numericStepper/
2026-06-04 12:13:30 +00:00
│ └── index.ts
2026-06-09 14:47:58 +02:00
├── layouts/ # Astro layouts
├── pages/ # Documentation pages
2026-06-04 12:13:30 +00:00
├── styles/
│ ├── tokens/
│ │ ├── _colors.scss
│ │ ├── _spacing.scss
│ │ └── _typography.scss
│ └── index.scss
└── index.ts
```
## Contributing
Contributions are welcome. To report a bug, suggest a feature, or open a Pull Request, follow the repository contribution rules and templates.
**Icon Contribution Policy: ** By contributing a custom icon to NDS, you agree that it may be used within the design system under the repository license and contribution policy.
2026-05-15 14:45:35 +00:00
## License
2026-06-04 12:13:30 +00:00
This project is **not distributed under a standard open-source license ** . Usage, redistribution, commercial use, and derivative work rules are defined in `LICENSE.md` . Read that file carefully before using the library in a product or service.