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-06-24 07:45:35 +02:00
1. [Overview ](#user-content-overview )
2. [Project Status ](#user-content-project-status )
3. [Core Principles ](#user-content-core-principles )
4. [Available Components ](#user-content-available-components )
5. [Design Tokens ](#user-content-design-tokens )
6. [Installation ](#user-content-installation )
7. [Usage ](#user-content-usage )
8. [Development ](#user-content-development )
9. [License ](#user-content-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-24 07:45:35 +02:00
> **ALPHA** — The library is under active development. Current version: `1.01.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-24 07:45:35 +02:00
These are the components currently exported from the package (`src/components/index.ts` ):
| Component | Category |
| -------------------------------------------------- | ------------ |
| `Button` | Actions |
| `Toggle` | Actions |
| `NumericStepper` | Actions |
| `Select` / `SelectOption` | Actions |
| `TextField` | Forms |
| `Checkbox` | Forms |
| `Radio` | Forms |
| `Tab` / `TabItem` / `TabContent` | Navigation |
| `Link` | Navigation |
| `Breadcrumb` / `BreadcrumbItem` | Navigation |
| `Pagination` / `PaginationNumber` | Navigation |
| `Navbar` | Navigation |
| `Sidebar` / `SidebarItem` | Navigation |
| `Avatar` | Data Display |
| `Badge` | Data Display |
| `Card` | Data Display |
| `ListItem` / `ListItemTitle` / `ListItemSubtitle` | Data Display |
| `Notification` | Feedback |
| `LoadingBar` | Feedback |
| `Tooltip` | Feedback |
| `Modal` | Overlay |
> Icons are no longer shipped as standalone NDS components. As of `1.00.3`, all icons used internally (e.g. in `Select`, `Avatar`, `Notification`, `numericStepper`) come directly from the **[`@lucide/astro`](https://www.npmjs.com/package/@lucide/astro)** package. See `ATTRIBUTION.md` for details.
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/` :
2026-06-24 07:45:35 +02:00
| 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 |
2026-06-04 12:13:30 +00:00
**Rules: **
2026-06-24 07:45:35 +02:00
2026-06-04 12:13:30 +00:00
- 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-24 07:45:35 +02:00
``` astro
---
import { Modal } from '@unkn0wndo3s/nova-design-system';
---
<Modal>
This is a modal dialog.
</Modal>
```
``` astro
---
import { Breadcrumb, BreadcrumbItem } from '@unkn0wndo3s/nova-design-system';
---
<Breadcrumb>
<BreadcrumbItem href="/">Home</BreadcrumbItem>
<BreadcrumbItem href="/docs">Docs</BreadcrumbItem>
</Breadcrumb>
```
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
2026-06-24 07:45:35 +02:00
``` text
2026-06-04 12:13:30 +00:00
src/
2026-06-24 07:45:35 +02:00
├── components/ # Astro components
2026-06-16 14:18:17 +02:00
│ ├── Avatar/
2026-06-24 07:45:35 +02:00
│ ├── Badge/
│ ├── Breadcrumb/
2026-06-04 12:13:30 +00:00
│ ├── Button/
2026-06-24 07:45:35 +02:00
│ ├── Card/
│ ├── Checkbox/
2026-06-04 12:13:30 +00:00
│ ├── Link/
│ ├── ListItem/
2026-06-09 14:47:58 +02:00
│ ├── LoadingBar/
2026-06-24 07:45:35 +02:00
│ ├── Modal/
│ ├── Navbar/
2026-06-04 12:13:30 +00:00
│ ├── Notifications/
2026-06-24 07:45:35 +02:00
│ ├── numericStepper/
│ ├── pagination/
│ ├── Radio/
2026-06-16 14:18:17 +02:00
│ ├── Select/
2026-06-24 07:45:35 +02:00
│ ├── Sidebar/
2026-06-04 12:13:30 +00:00
│ ├── Tabs/
2026-06-24 07:45:35 +02:00
│ ├── textField/
2026-06-04 12:13:30 +00:00
│ ├── Toggle/
2026-06-24 07:45:35 +02:00
│ ├── Tooltip/
│ └── index.ts
├── 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.
2026-06-24 07:45:35 +02:00
NDS no longer maintains a custom set of icon components — icons are sourced from the * * [Lucide ](https://lucide.dev/ )** icon set via `@lucide/astro` . If a needed icon isn't in Lucide, open an issue to discuss it before adding any new icon dependency.
2026-06-04 12:13:30 +00:00
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.