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
14px / 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

The app's real icon set, pulled from icons.ts (Heroicons + Lucide via Iconify). Names shown are the semantic keys the app references (e.g. ICON.members) — not the raw icon names. Never use inline SVGs.

Navigation & Modules
dashboard
members
dispatch
dues
payment
agreements
events
reports
documents
projects
profile
locals
skills
contractors
settings
notifications
help
menu
Actions
add
edit
delete
copy
download
upload
print
search
filter
reload
menuActions
view
eyeOff
close
x
paperClip
Status & Feedback
check
error
info
delinquency
comingSoon
star
starFilled
pin
flag
ban
clock
loading
award
lock
aiSparkles
Arrows, Chevrons & Sorting
arrowUp
arrowDown
arrowRight
arrowUpRight
chevronUp
chevronDown
chevronLeft
chevronRight
chevronUpDown
sortUp
sortDown
sortNeutral
Export & Data
exportCsv
exportExcel
exportPdf
receipt
dollarSign
tag
email
phone
contact
mapPin
briefcase
calendar

Buttons

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

Variants
Sizes
Icon Only

Action Icon

Icon-only button that turns primary on hover. Always paired with a tooltip. Used across tables and module headers.

Row (hover for tooltip + color)
View Edit Duplicate More

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

Form Field

Wrapper for any input: label, required marker, hint text, and error state. The real app's most-used form component — wraps inputs, selects, and textareas.

Default
Required + Hint
Found on the member's dues card.
Error State
Enter a valid email address.

Search Input

Standardized search field: leading magnifier, larger size, and a / keyboard hint (becomes a clear button when typing).

Default

Checkbox & Radio

Selection controls. Primary fill when selected. Checkbox for multi-select, radio for one-of-many.

Checkbox
Radio

Switch

Toggle for on/off settings. Primary fill when on. Use for instant-apply settings, not form submission.

States
With Setting Label

Input Number

Numeric input with stepper buttons. Used for quantities, counts, and amounts.

Stepper

Tables

Proper <table> element, not CSS grid. Normal-case headers (14px/600, slate-900), 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

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

Entity Badge

Color-coded badge driven by an entity's assigned color (via data-entity-color in the real app). Same pill shape, accented per entity.

By Entity Color
Carpenters Electricians Operators Welders Unassigned

Coming Soon Badge

Blue rocket badge marking a gated-but-visible feature under roadmap preview.

Badge
Coming Soon

Avatar

Circular user representation. Initials on a soft tint, or an icon fallback. Three sizes.

Sizes & Colors
SJ MC ER DP

Chip

Small indicator anchored to another element — a count badge or a status dot.

Count & Dot
5 SJ

Field Value

Read-only label/value pair for detail views. Stacked by default, or inline. Falls back to "–" when empty.

Stacked & Inline
Union Number 100482
Status Active
Local: Local 904

Stat Card

Dashboard summary card: tinted icon tile, title, optional description, a large value, and an optional action link. Six tones.

Tones
Members

Active this month

1,284
Dues Collected

June 2026

$84,210
In Arrears

Members overdue

37

Timeline

Vertical sequence of events. Filled dots for completed, muted for upcoming.

Activity
Application submitted
Jun 12, 9:14am
Screening passed
Jun 14, 2:30pm
Dispatch pending
Awaiting confirmation

Alert

Inline message banner with a leading icon and soft tinted background. Five colors: info, success, warning, error, neutral.

Variants
Heads Up
This member's address hasn't been verified yet.
Saved
Dispatch confirmation sent to the member.
Dues Overdue
This member is three months in arrears.
Couldn't Process
The payment was declined. Try a different method.
Reminder
Screening closes Friday at 5pm.

Tooltip

Dark label on hover. Used on icon-only buttons and truncated text. Dark slate background, white text.

Static (always shown)
Edit Member
On Hover (hover the button)
Edit Member

Skeleton

Loading placeholder with a subtle shimmer. Mirror the shape of the content that's loading.

Text Lines
Card Placeholder

Progress

Linear progress bar. Primary fill on a muted track.

Values

Empty State

The "nothing here yet" placeholder for empty modules and tables: a dimmed icon over a muted message.

No Results
No dispatches found.

Tabs

The standard tab style: a 3px primary underline on the active tab. Inactive tabs use default (darker) text and get a soft primary-tint pill on hover. This is the only tab style — pill tabs are retired.

Tabs (hover an inactive tab)

Stepper

Horizontal progress through a sequence. Completed steps fill primary; the current step is outlined.

Three Steps
Status
2Dispatch
3Payments

Filters

A Filters toggle button sits in the table toolbar next to Export (both outline buttons). Clicking Filters reveals the filter panel below. The button turns primary once any filter is applied.

Toolbar — Filters next to Export
Active — filters applied, panel open
Expanded filter panel (per-column pickers)

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. Standard width 576px (real app's max-w-xl). Footer button hierarchy: Save = primary (filled blue), Cancel = outline, any in-between action (e.g. Save Draft) = soft grey. Primary action on the right.

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

Popover

Floating panel anchored to a trigger. Richer than a tooltip — can hold formatted content.

Panel
Dues Status
Paid through May 2026. Next charge posts June 30. No outstanding arrears.

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

The ModuleBase pattern for detail pages (member profiles, payment drawers). Rounded-2xl (16px) card with inner shadow, a primary-colored header icon, 16px title, and a subtle 50%-opacity header divider. Body padding 24px. Active state shows a 2px primary border. Sits in a 12-column grid (gap-ssm / 16px).

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
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

Separator

Divider line between content. Plain, or with a centered label.

Plain & Labeled

Member Details

Icon Header

Small section header: a round neutral icon chip beside a muted title. Used inside modules and drawers.

Header
Identification