Compare commits

...

23 Commits

Author SHA1 Message Date
unkn0wn 94acacbd6c fix: update current version to 1.2.1 in project status section of README.md
Deploy Documentation / check-and-deploy (push) Successful in 11s
2026-06-24 09:23:50 +02:00
unkn0wn 6811dda340 fix: update version to 1.2.1 in package.json and related components
Deploy Documentation / check-and-deploy (push) Successful in 11s
Publish to npm / check-and-publish (push) Successful in 19s
2026-06-24 09:21:40 +02:00
unkn0wn bd0e5b0191 fix: refactor modal close button to use icon directly and remove unnecessary button element 2026-06-24 09:20:43 +02:00
unkn0wn 23a4175bc6 fix: remove paths filter from deployment trigger and update layout title and badge version
Deploy Documentation / check-and-deploy (push) Successful in 10s
2026-06-24 09:15:47 +02:00
unkn0wn 30a3b32d13 fix: remove version check condition from deployment step 2026-06-24 09:01:01 +02:00
unkn0wn 0405565fd1 fix: update deployment step to delete existing files before copying new documentation 2026-06-24 09:00:23 +02:00
unkn0wn 352ec260fa fix: remove conditional checks for version changes in deploy workflow 2026-06-24 08:58:45 +02:00
unkn0wn 53b3ee4301 fix: update deploy workflow to install Node.js requirements before checkout 2026-06-24 08:57:03 +02:00
unkn0wn 88d56bbd38 fix: remove version check step from deploy workflow 2026-06-24 08:55:19 +02:00
unkn0wn a40c1d1a7e fix: update git clone URL in deploy workflow 2026-06-24 08:54:42 +02:00
unkn0wn 237abcbd63 fix: replace actions/checkout with custom checkout logic in deploy workflow 2026-06-24 08:53:17 +02:00
unkn0wn 4777b1c68e fix: update deploy workflow to remove unnecessary comments and adjust container settings 2026-06-24 08:51:49 +02:00
unkn0wn 4adc9b9eb6 fix: update deploy workflow to use container volumes and clean up comments 2026-06-24 08:46:21 +02:00
unkn0wn acc9bcb98b fix: clean up old documentation files before deployment 2026-06-24 08:38:40 +02:00
unkn0wn 33131a8275 feat: add workflow_dispatch trigger to deploy documentation workflow 2026-06-24 08:32:01 +02:00
unkn0wn 131d8376d4 feat: add GitHub Actions workflow for documentation deployment 2026-06-24 08:24:04 +02:00
unkn0wn 71effe979a chore: update version to 1.2.0 and fix license field in package.json
Publish to npm / check-and-publish (push) Successful in 19s
2026-06-24 07:59:21 +02:00
unkn0wn 06a1695be4 fix: add missing newline at end of package.json
Publish to npm / check-and-publish (push) Successful in 20s
2026-06-24 07:56:06 +02:00
unkn0wn 734a593834 chore: update package.json with repository, bugs, homepage, and keywords information 2026-06-24 07:54:03 +02:00
unkn0wn a2ae6ce8a2 chore: bump version to 1.1.1 and update files list in package.json 2026-06-24 07:51:44 +02:00
unkn0wn 078b1d6e85 refactor: update attribution and README to reflect removal of custom icon components and source from Lucide 2026-06-24 07:45:35 +02:00
unkn0wn 5bcf5b20a0 chore: bump version to 1.01.0 in package.json
Publish to npm / check-and-publish (push) Successful in 20s
2026-06-24 07:14:02 +02:00
unkn0wn e0ed0f557b fix: align export statements formatting in index.ts 2026-06-24 07:13:37 +02:00
7 changed files with 186 additions and 101 deletions
+37
View File
@@ -0,0 +1,37 @@
name: Deploy Documentation
on:
push:
branches:
- main
workflow_dispatch:
jobs:
check-and-deploy:
runs-on: host
steps:
- name: Install Node.js requirements for Actions
run: |
if ! command -v node &> /dev/null; then
apk add --no-cache nodejs npm
fi
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 2
- name: Install dependencies
run: npm ci --legacy-peer-deps
- name: Build documentation
run: npm run build
- name: Deploy to Apache volume
run: |
find /var/www/design-system -mindepth 1 -delete
cp -r dist/. /var/www/design-system/
chmod -R 755 /var/www/design-system/
+8 -32
View File
@@ -1,42 +1,18 @@
# Attribution
This file lists all third-party icons used within Nova Design System (NDS) that are not proprietary to the project, as referenced in `LICENSE.md` (section 4.1).
This file lists all third-party assets used within Nova Design System (NDS) that are not proprietary to the project, as referenced in `LICENSE.md` (section 4.1).
All third-party icons used in NDS currently originate from **[Iconify](https://iconify.design/)**, specifically from the **[Lucide](https://lucide.dev/)** icon set (Iconify prefix: `lucide`, license: ISC — no attribution required, commercial use allowed).
## Icons
Any icon **not listed in this file** is an icon created specifically for NDS and falls under section 4.2 of `LICENSE.md` instead.
As of version `1.00.3`, NDS no longer ships a custom set of per-icon SVG wrapper components. All icons rendered inside NDS components (e.g. `Select`, `Avatar`, `Notification`, `numericStepper`, `Modal`) are sourced directly from the **[Lucide](https://lucide.dev/)** icon set via the **[`@lucide/astro`](https://www.npmjs.com/package/@lucide/astro)** package (license: **ISC** — no attribution required, commercial use allowed).
## Icon List
This means there is no longer a per-component mapping to maintain here: any icon visible in NDS is a Lucide icon, used directly through `@lucide/astro`. The previous standalone `Icons` component family (`Arrow2Icon`, `BinIcon`, `BurgerIcon`, `SortIcon`, `UploadIcon`, etc.) has been removed from the package.
| Icon (used in NDS) | Source | Icon Set / Link |
|---|---|---|
| `Arrow2Icon` (Chevron) | Iconify | Lucide — [chevron-down](https://icon-sets.iconify.design/lucide/chevron-down/) |
| `BinIcon` | Iconify | Lucide — [trash-2](https://icon-sets.iconify.design/lucide/trash-2/) |
| `BurgerIcon` | Iconify | Lucide — [menu](https://icon-sets.iconify.design/lucide/menu/) |
| `CalendarIcon` | Iconify | Lucide — [calendar](https://icon-sets.iconify.design/lucide/calendar/) |
| `CheckIcon` | Iconify | Lucide — [check](https://icon-sets.iconify.design/lucide/check/) |
| `CloseIcon` | Iconify | Lucide — [x](https://icon-sets.iconify.design/lucide/x/) |
| `CodeIcon` | Iconify | Lucide — [code](https://icon-sets.iconify.design/lucide/code/) |
| `CubeIcon` | Iconify | Lucide — [box](https://icon-sets.iconify.design/lucide/box/) |
| `DownloadIcon` | Iconify | Lucide — [download](https://icon-sets.iconify.design/lucide/download/) |
| `FilterIcon` | Iconify | Lucide — [filter](https://icon-sets.iconify.design/lucide/filter/) |
| `HelpIcon` | Iconify | Lucide — [circle-help](https://icon-sets.iconify.design/lucide/circle-help/) |
| `HomeIcon` | Iconify | Lucide — [house](https://icon-sets.iconify.design/lucide/house/) |
| `LinkIcon` | Iconify | Lucide — [link](https://icon-sets.iconify.design/lucide/link/) |
| `MinusIcon` | Iconify | Lucide — [minus](https://icon-sets.iconify.design/lucide/minus/) |
| `MoreIcon` | Iconify | Lucide — [ellipsis](https://icon-sets.iconify.design/lucide/ellipsis/) |
| `OverviewIcon` | Iconify | Lucide — [layout-dashboard](https://icon-sets.iconify.design/lucide/layout-dashboard/) |
| `PlusIcon` | Iconify | Lucide — [plus](https://icon-sets.iconify.design/lucide/plus/) |
| `ProfileIcon` | Iconify | Lucide — [user](https://icon-sets.iconify.design/lucide/user/) |
| `SearchIcon` | Iconify | Lucide — [search](https://icon-sets.iconify.design/lucide/search/) |
| `SettingsIcon` | Iconify | Lucide — [settings](https://icon-sets.iconify.design/lucide/settings/) |
| `ShareIcon` | Iconify | Lucide — [share-2](https://icon-sets.iconify.design/lucide/share-2/) |
| `ShieldIcon` | Iconify | Lucide — [shield](https://icon-sets.iconify.design/lucide/shield/) |
| `SortIcon` | Iconify | Lucide — [arrow-up-down](https://icon-sets.iconify.design/lucide/arrow-up-down/) |
| `StatsIcon` | Iconify | Lucide — [bar-chart-3](https://icon-sets.iconify.design/lucide/bar-chart-3/) |
| `UploadIcon` | Iconify | Lucide — [upload](https://icon-sets.iconify.design/lucide/upload/) |
## Custom Assets
Any icon or asset **not covered above** is created specifically for NDS and falls under section 4.2 of `LICENSE.md` instead. At the time of writing, there are no remaining custom (non-Lucide) icons in the project.
## Notes
- The Lucide icon set is released under the ISC license, which permits commercial use without requiring attribution. This file is maintained anyway for transparency and traceability.
- This file must be kept up to date whenever a new third-party icon is added to NDS.
- This file must be kept up to date whenever a new third-party icon set or asset is added to NDS.
+65 -24
View File
@@ -6,15 +6,15 @@ Nova Design System (NDS) is a lightweight, responsive UI component library built
## Table of Contents
1. [Overview](#overview)
2. [Project Status](#project-status)
3. [Core Principles](#core-principles)
4. [Available Components](#available-components)
5. [Design Tokens](#design-tokens)
6. [Installation](#installation)
7. [Usage](#usage)
8. [Development](#development)
9. [License](#license)
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)
---
@@ -23,8 +23,7 @@ Nova Design System (NDS) is a lightweight, responsive UI component library built
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.
## Project Status
> **ALPHA** — The library is under active development. Current version: `0.05.0`. Component APIs, token naming, and internal architecture may change before a stable release.
> **ALPHA** — The library is under active development. Current version: `1.2.1`. Component APIs, token naming, and internal architecture may change before a stable release.
## Core Principles
@@ -36,35 +35,46 @@ NDS provides a focused set of reusable Astro components with centralized design
## Available Components
These are the components currently implemented in `src/components/`:
These are the components currently exported from the package (`src/components/index.ts`):
| Component | Category |
|---|---|
| -------------------------------------------------- | ------------ |
| `Button` | Actions |
| `Toggle` | Actions |
| `NumericStepper` | Actions |
| `Select` / `SelectOption` | Actions |
| `Avatar` | Data Display |
| `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 |
| `Icons``Arrow2Icon`, `BinIcon`, `BurgerIcon`, `CalendarIcon`, `CheckIcon`, `CloseIcon`, `CodeIcon`, `CubeIcon`, `DownloadIcon`, `FilterIcon`, `HelpIcon`, `HomeIcon`, `LinkIcon`, `MinusIcon`, `MoreIcon`, `OverviewIcon`, `PlusIcon`, `ProfileIcon`, `SearchIcon`, `SettingsIcon`, `ShareIcon`, `ShieldIcon`, `SortIcon`, `StatsIcon`, `UploadIcon` | Utility |
| `Tooltip` | Feedback |
| `Modal` | Overlay |
> Components such as Navbar, Sidebar, Card, and Modal are planned but not yet implemented.
> 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.
## 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.
@@ -101,6 +111,27 @@ import { Notification } from '@unkn0wndo3s/nova-design-system';
</Notification>
```
```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>
```
## Development
### Clone the repository
@@ -130,21 +161,31 @@ npm run preview # Preview the production build
### Project Structure
```
```text
src/
├── components/ # Astro components
│ ├── Avatar/
│ ├── Badge/
│ ├── Breadcrumb/
│ ├── Button/
│ ├── Icons/
│ ├── Card/
│ ├── Checkbox/
│ ├── Link/
│ ├── ListItem/
│ ├── LoadingBar/
│ ├── Modal/
│ ├── Navbar/
│ ├── Notifications/
│ ├── Select/
│ ├── Tabs/
│ ├── Toggle/
│ ├── numericStepper/
── index.ts # Auto-generated barrel — do not edit manually
── pagination/
│ ├── Radio/
│ ├── Select/
│ ├── Sidebar/
│ ├── Tabs/
│ ├── textField/
│ ├── Toggle/
│ ├── Tooltip/
│ └── index.ts
├── layouts/ # Astro layouts
├── pages/ # Documentation pages
├── styles/
@@ -160,7 +201,7 @@ src/
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.
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.
## License
+26 -4
View File
@@ -1,9 +1,26 @@
{
"name": "@unkn0wndo3s/nova-design-system",
"type": "module",
"version": "1.00.3",
"main": "./src/index.ts",
"version": "1.2.1",
"description": "Nova Design System — Astro component library",
"license": "LICENSE.md",
"author": "Unkn0wn",
"main": "./src/index.ts",
"repository": {
"type": "git",
"url": "https://git.novaprojects.dev/unkn0wn/nova-design-system.git"
},
"bugs": {
"url": "https://git.novaprojects.dev/unkn0wn/nova-design-system/issues"
},
"homepage": "https://git.novaprojects.dev/unkn0wn/nova-design-system#readme",
"keywords": [
"astro",
"astro-components",
"design-system",
"ui-library",
"nova"
],
"engines": {
"node": ">=22.12.0"
},
@@ -12,7 +29,9 @@
"./styles": "./src/styles/index.scss"
},
"files": [
"src"
"src",
"LICENSE.md",
"README.md"
],
"scripts": {
"dev": "astro dev",
@@ -21,10 +40,13 @@
"astro": "astro"
},
"dependencies": {
"@lucide/astro": "^1.21.0",
"@lucide/astro": "^1.21.0"
},
"peerDependencies": {
"astro": "^7.0.0"
},
"devDependencies": {
"astro": "^7.0.0",
"sass": "^1.99.0"
}
}
+1 -3
View File
@@ -20,9 +20,7 @@ const hasFooter = Astro.slots.has("footer");
>
<div class="modal__head">
<span class="modal__title">{title}</span>
<button class="modal__close" data-modal-close aria-label="Close">
<XIcon size={18} />
</button>
<XIcon data-modal-close class="modal__close" size={18} aria-label="Close"/>
</div>
<div class="modal__body"><slot /></div>
{
+29 -18
View File
@@ -1,18 +1,29 @@
export { default as Notification } from './Notifications/notification.astro';
export { default as Toggle } from './Toggle/toggle.astro';
export { default as Tab } from './Tabs/tab.astro';
export { default as TabItem } from './Tabs/tabItem.astro';
export { default as TabContent } from './Tabs/tabContent.astro';
export { default as Button } from './Button/button.astro';
export { default as Link } from './Link/link.astro';
export { default as ListItem } from './ListItem/listItem.astro';
export { default as ListItemTitle } from './ListItem/listItemTitle.astro';
export { default as ListItemSubtitle } from './ListItem/listItemSubtitle.astro';
export { default as LoadingBar } from './LoadingBar/loadingBar.astro';
export { default as NumericStepper } from './numericStepper/numericStepper.astro';
export { default as Avatar } from './Avatar/avatar.astro';
export { default as Select } from './Select/select.astro';
export { default as SelectOption } from './Select/selectOption.astro';
export { default as TextField } from './textField/textField.astro';
export { default as Pagination } from './pagination/pagination.astro';
export { default as PaginationNumber } from './pagination/paginationNumber.astro';
export { default as Notification } from "./Notifications/notification.astro";
export { default as Toggle } from "./Toggle/toggle.astro";
export { default as Tab } from "./Tabs/tab.astro";
export { default as TabItem } from "./Tabs/tabItem.astro";
export { default as TabContent } from "./Tabs/tabContent.astro";
export { default as Button } from "./Button/button.astro";
export { default as Link } from "./Link/link.astro";
export { default as ListItem } from "./ListItem/listItem.astro";
export { default as ListItemTitle } from "./ListItem/listItemTitle.astro";
export { default as ListItemSubtitle } from "./ListItem/listItemSubtitle.astro";
export { default as LoadingBar } from "./LoadingBar/loadingBar.astro";
export { default as NumericStepper } from "./numericStepper/numericStepper.astro";
export { default as Avatar } from "./Avatar/avatar.astro";
export { default as Select } from "./Select/select.astro";
export { default as SelectOption } from "./Select/selectOption.astro";
export { default as TextField } from "./textField/textField.astro";
export { default as Pagination } from "./pagination/pagination.astro";
export { default as PaginationNumber } from "./pagination/paginationNumber.astro";
export { default as Badge } from "./Badge/badge.astro";
export { default as Sidebar } from "./Sidebar/sidebar.astro";
export { default as SidebarItem } from "./Sidebar/sidebarItem.astro";
export { default as Tooltip } from "./Tooltip/tooltip.astro";
export { default as Modal } from "./Modal/modal.astro";
export { default as Radio } from "./Radio/radio.astro";
export { default as Card } from "./Card/card.astro";
export { default as Breadcrumb } from "./Breadcrumb/breadcrumb.astro";
export { default as BreadcrumbItem } from "./Breadcrumb/breadcrumbItem.astro";
export { default as Checkbox } from "./Checkbox/checkbox.astro";
export { default as Navbar } from "./Navbar/navbar.astro";
+2 -2
View File
@@ -82,13 +82,13 @@ const spacingScale = [
const radiusScale = ["xs", "sm", "md", "lg", "xl", "2xl", "full"];
---
<Layout title="Nova Design System — Gallery">
<Layout title="Nova Design System v1.2.1">
<div class="g-page">
<header class="g-topbar">
<div class="g-brand">
<span class="g-mark"></span>
<span class="g-name">Nova Design System</span>
<Badge type="primary" variant="soft">v0.06</Badge>
<Badge type="primary" variant="soft">v1.2.1</Badge>
</div>
<Button type="secondary" size="sm" id="theme-btn">Toggle theme</Button>
</header>