Unio Component Library

Design system reference for HTML prototypes. Every component matches the real Nuxt 4 app. Last synced March 2026.

Colors

Primary = Blue-600. Secondary = Emerald. Neutral = Slate. All badge/status colors use color-mix for soft backgrounds.

Primary (Blue)
50
100
200
300
400
500
600 *
700
800
900
Neutral (Slate)
50
100
200
300
400
500
600
700
800
900
Semantic Colors
Success
Warning
Error
Secondary
Text Colors
Highlighted
slate-900
Default
slate-700
Muted
slate-500
Dimmed
slate-400

Typography

Inter via Google Fonts. Weights: 400 (normal), 500 (medium), 600 (semibold), 700 (bold).

Type Scale
28px / Bold Page Heading
20px / Semibold Section Title
16px / Semibold Card Header
15px / Semibold Module Title
14px / Medium Body text, nav items, buttons
13px / Normal Table cells, input text, secondary content
12px / Semibold Table Headers
12px / Medium Badge text, hints, captions

Spacing Scale

Custom "s-prefixed" scale from the real app. Base unit = 4px. Used for padding, gaps, and margins.

Scale
sxxs 4px
sxs 8px
ssm 16px
smd 24px
slg 32px
sxl 48px
s2xl 64px

Icons

Heroicons (primary) + Lucide (secondary). Loaded via Iconify CDN. Never use inline SVGs.

Common Icons (Heroicons)
plus
x-mark
pencil-square
trash
magnifying-glass
funnel
chevron-down
chevron-right
check
ellipsis-vertical
arrow-down-tray
eye
users
home
cog-6-tooth
information-circle
Common Icons (Lucide)
calendar
award
file-text
download
panel-left
chevrons-up-down
chevron-right
external-link

Buttons

All buttons require font-family: inherit and iconify-icon font-size: 20px.

Variants
Sizes
Icon Only

Badges

Pill badges using color-mix for soft backgrounds. No ring/border.

Status Badges
Primary Active Pending Rejected Draft
With Icons
Approved In Progress Declined Under Review

Form Inputs

Always use type="text" for date/time fields. Focus state = blue border + blue ring at 20% opacity.

Text Inputs
We'll never share your email.
Please enter a valid phone number.
Select, Textarea, Search
Checkbox & Radio

Tables

Proper <table> element, not CSS grid. Uppercase headers, hover rows, 13px body text.

Data Table
Name Email Status Role Actions
Sarah Johnson sarah.j@example.com Active Organization Admin
Michael Chen m.chen@example.com Active Staff
Emily Rodriguez e.rod@example.com Pending Member
David Park d.park@example.com Suspended Member

Tabs

Always pill-style with border-radius: 9999px. Never underline-style. Supports icons and count badges.

Text Only
With Icons
With Count Badges

Cards

Basic content container. 8px radius, 1px border, white background.

Card Variants
Simple Card

Basic card with header and body content.

Card with Actions

Card with an action button in the header.

Module Cards

Used on detail pages (member profiles, payment drawers). 12-column grid with gap-ssm (16px). Icon + title header.

Module Grid (6+6 columns)
Personal Info
Full Name Sarah Johnson
Member ID MEM-2024-0847
Status Active
Join Date March 15, 2024
Contact
Email sarah.j@example.com
Phone (555) 123-4567
Address 123 Main St, Toronto, ON M5V 2T6

Section Card

Full table page pattern: header, search/export toolbar, filter bar, data table, pagination.

Complete Table Page
Applications
Active
Applicant Position Status Applied
James Wilson Electrician Under Review Mar 12, 2026
Maria Garcia Plumber Approved Mar 10, 2026
Robert Kim Welder Pending Mar 8, 2026

Modals

Max-width 560px, 16px radius. Cancel = text color (not blue). Close via Escape, backdrop, X, or Cancel.

Form Modal

Drawers

Slide-over panel from the right. Max-width varies (480px default, up to 600px for complex content).

Drawer (Slideover)
Page content underneath the drawer...
Member Details
Name Sarah Johnson
Status Active
Email sarah.j@example.com
Phone (555) 123-4567

Filter Controls

Dashed border when inactive, solid blue border when active. Filter chips show active selections.

Filter Buttons & Chips
Admin Active 2024