Owl component library
Every primitive from the locked design system (ADR-007), rendered with working interactions. Flip the theme toggle to verify light + dark. This page is the living integration test — if a primitive is off-system, it shows here.
Foundations
Color tokens (each maps to a CSS variable in globals.css)
--color-bg
--color-surface
--color-sunken
--color-border
--color-text
--color-muted
--color-accent
--color-success
--color-warning
--color-danger
Type scale (Geist + Geist Mono)
Brand marks
Form inputs
As it appears in your PIMS.
Enter a valid email address.
Auto-resizes as you type.
Checkbox · Radio · Toggle
Search · Number (BCS half-steps) · Date
Overlays
Modal · Drawer · Popover · Tooltip
Toasts
SOAP note copied
Formatted for ezyVet.
Capture paused
Microphone access was interrupted.
Sync failed
We couldn’t reach the server.
Draft saved
Data display
Table (sortable, checkbox column, status badge, row menu)
| Status | |||
|---|---|---|---|
| Bella · Feline wellness | Synced | ||
| Rocky · Lameness recheck | Needs review | ||
| Maple · Dental cleaning | Draft |
List rows (inbox)
Bella · Feline wellness
SOAP note ready · 3 keyframes
Rocky · Lameness recheck
Needs review
Cards
Visit summary
Badges
Avatars
Stat blocks
Feedback
Loading skeletons (card · row · text)
Empty state
Inbox zero
Your visits will appear here when you finish a visit with your glasses.
Error states (connection · 404 · 500)
Connection lost
We’ll keep retrying in the background.
Page not found
That visit doesn’t exist.
Something broke
Our team has been notified.
Inline alerts (info · warning · danger)
Heads up
Unconfirmed vital
Copy failed
Specialized
Command palette (⌘K)
Keyboard hints
Recording indicator (ready · recording · paused · syncing · synced)
Status dots (connected · warning · disconnected · danger)