--- import Layout from "../layouts/Layout.astro"; import Button from "../components/Button/button.astro"; import Badge from "../components/Badge/badge.astro"; import Avatar from "../components/Avatar/avatar.astro"; import Toggle from "../components/Toggle/toggle.astro"; import Checkbox from "../components/Checkbox/checkbox.astro"; import Radio from "../components/Radio/radio.astro"; import TextField from "../components/textField/textField.astro"; import Select from "../components/Select/select.astro"; import SelectOption from "../components/Select/selectOption.astro"; import NumericStepper from "../components/numericStepper/numericStepper.astro"; import Tab from "../components/Tabs/tab.astro"; import TabItem from "../components/Tabs/tabItem.astro"; import TabContent from "../components/Tabs/tabContent.astro"; import Link from "../components/Link/link.astro"; import Breadcrumb from "../components/Breadcrumb/breadcrumb.astro"; import BreadcrumbItem from "../components/Breadcrumb/breadcrumbItem.astro"; import Pagination from "../components/pagination/pagination.astro"; import PaginationNumber from "../components/pagination/paginationNumber.astro"; import Navbar from "../components/Navbar/navbar.astro"; import Sidebar from "../components/Sidebar/sidebar.astro"; import SidebarItem from "../components/Sidebar/sidebarItem.astro"; import Card from "../components/Card/card.astro"; import ListItem from "../components/ListItem/listItem.astro"; import ListItemTitle from "../components/ListItem/listItemTitle.astro"; import ListItemSubtitle from "../components/ListItem/listItemSubtitle.astro"; import Notification from "../components/Notifications/notification.astro"; import LoadingBar from "../components/LoadingBar/loadingBar.astro"; import Tooltip from "../components/Tooltip/tooltip.astro"; import Modal from "../components/Modal/modal.astro"; import { 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, } from "../components/Icons/index.ts"; const tones = [ "primary", "neutral", "success", "warning", "error", "info", ] as const; const btnTypes = ["primary", "secondary", "ghost", "danger"] as const; const sizes = ["sm", "md", "lg"] as const; const notifTypes = ["info", "success", "warning", "error"] as const; const notifMessages: Record = { info: "Information about the operation.", success: "The operation completed successfully.", warning: "A warning occurred. Please check the details.", error: "An error occurred. Please try again.", }; const tooltipPositions = ["top", "bottom", "left", "right"] as const; const iconLib = [ { name: "Arrow2", Icon: Arrow2Icon }, { name: "Bin", Icon: BinIcon }, { name: "Burger", Icon: BurgerIcon }, { name: "Calendar", Icon: CalendarIcon }, { name: "Check", Icon: CheckIcon }, { name: "Close", Icon: CloseIcon }, { name: "Code", Icon: CodeIcon }, { name: "Cube", Icon: CubeIcon }, { name: "Download", Icon: DownloadIcon }, { name: "Filter", Icon: FilterIcon }, { name: "Help", Icon: HelpIcon }, { name: "Home", Icon: HomeIcon }, { name: "Link", Icon: LinkIcon }, { name: "Minus", Icon: MinusIcon }, { name: "More", Icon: MoreIcon }, { name: "Overview", Icon: OverviewIcon }, { name: "Plus", Icon: PlusIcon }, { name: "Profile", Icon: ProfileIcon }, { name: "Search", Icon: SearchIcon }, { name: "Settings", Icon: SettingsIcon }, { name: "Share", Icon: ShareIcon }, { name: "Shield", Icon: ShieldIcon }, { name: "Sort", Icon: SortIcon }, { name: "Stats", Icon: StatsIcon }, { name: "Upload", Icon: UploadIcon }, ] as const; const tokenColors = [ "text", "neutral", "background", "surface", "surface-2", "border", "primary", "secondary", "accent", "primary-soft", "success-medium", "warning-medium", "error-medium", "info-medium", ]; const spacingScale = [ ["3xs", "2"], ["2xs", "4"], ["xs", "8"], ["sm", "12"], ["md", "16"], ["lg", "24"], ["xl", "32"], ["2xl", "48"], ["3xl", "64"], ]; const radiusScale = ["xs", "sm", "md", "lg", "xl", "2xl", "full"]; ---
Nova Design System v0.06

Foundations

Design tokens — type, color, spacing, radius, elevation.

Type scale — Intel One Mono (display) · Geist (UI)
text-5xlNova 52px
text-4xlNova 40px
text-3xlNova 30px
text-2xlNova 22px
text-xlNova 18px
text-lgNova 16px
text-baseNova 14px
text-labelNova 13px 600
text-smNova 12px
Color tokens (adapt to theme)
{ tokenColors.map((t) => (
{t}
)) }
Spacing scale
{ spacingScale.map(([n, px]) => (
spacing-{n} · {px}px
)) }
Radius scale
{ radiusScale.map((n) => (
{n}
)) }
Elevation
{ (["sm", "md", "lg"] as const).map((n) => (
shadow-{n}
)) }

Button

Variants, sizes, icon and disabled states.

Variants × md
{ btnTypes.map((t) => ( )) }
Sizes (primary)
{ sizes.map((s) => ( )) }
With icon · icon-only
Disabled
{ btnTypes.map((t) => ( )) }

Badge

Tones × soft / solid.

Soft
{ tones.map((t) => ( {t} )) }
Solid
{ tones.map((t) => ( {t} )) }

Toggle · Checkbox · Radio

Selection controls in every state.

Toggle — off / on
Checkbox — unchecked / checked / disabled
Unchecked Checked Disabled
Radio group
On-demand Reserved Spot

TextField

Text, email, password, textarea.

Fields

Select

Default and disabled.

Select

Numeric stepper

Increment / decrement control.

Stepper

Avatar

Photo and initials.

Types

Loading bar

Determinate and indeterminate.

Known 75% · indeterminate

List item

Title and subtitle rows.

List
api-gateway Edge routing · eu-west-1 postgres-main Database · eu-west-1 redis-cache Cache · eu-west-1

Tabs

Underline tabs with panels (interactive).

Tabs + content
Images Videos Documents

🖼️ Image gallery content.

🎬 Video player here.

📄 Document list here.

Pagination

Page numbers with disabled edges.

Pagination
1 2 3 4 5

Notification

Info, success, warning and error.

All types
{ notifTypes.map((t) => ( {notifMessages[t]} )) }

Tooltip

Four positions — hover the buttons.

Positions
{ tooltipPositions.map((pos) => ( )) }

Card

With cover, plain and with footer actions.

Cover · plain · with footer
Live

Navbar · Sidebar

App chrome.

Sidebar
Overview Metrics Security Settings

Icons

25 line icons at 16 / 24 / 32 px.

Arrow2 — orientations × 16 / 24 / 32
{ ([16, 24, 32] as const).map((s) => ( )) }
Library — 25 icons at 24px
{ iconLib.map(({ name, Icon }) => (
{name}
)) }
Sizes — 16 / 24 / 32
{ [SearchIcon, SettingsIcon, ShareIcon, DownloadIcon].map( (Icon) => ( <> ), ) }