Providence UI — Design System Showcase

This page should only use real tokens + utilities. If something looks wrong, it’s a strong signal a token/class is missing or mapped incorrectly.

shadcn mapping
semantic tokens
Token Sanity Check (runtime)
If values are (unset), you’re missing CSS variables. If things render transparent, check your --*-rgb formatting (must be space-separated).

Core shadcn tokens

values pulled from :root at runtime
--bg...
--fg...
--bg-rgb...
--fg-rgb...
--card...
--card-fg...
--popover...
--popover-fg...
--border...
--input...
--ring...
--primary...
--primary-fg...
--secondary...
--secondary-fg...
--muted...
--muted-fg...
--accent...
--accent-fg...
--danger...
--danger-fg...

State + selection aliases (your custom hooks)

values pulled from :root at runtime
--selection...
--selection-hover...
--selection-active...
--selection-fg...
--link...
--link-hover...
--link-active...
--brand...
--brand-hover...
--brand-active...
--brand-fg...

RGB companions (must be SPACE-separated)

values pulled from :root at runtime
--rgb-bg...
--rgb-fg...
--rgb-primary...
--rgb-success...
--rgb-warning...
--rgb-danger...
--rgb-brand...
--primary-rgb...
--accent-rgb...
--danger-rgb...
--ring-rgb...
Typography (actual classes)
This section should use your existing typography utilities (.heading-1..6, .text-lead, .text-body, .text-small, .text-micro, .text-label, .text-subtitle). If anything here doesn’t exist, it will look “unstyled”.

Heading 1

Heading 2

Heading 3

Heading 4

Heading 5

Heading 6

Lead / Body

Providence OS provides a clean, accessible foundation for enterprise-grade interfaces.

The quick brown fox jumps over the lazy dog. This block is meant to reveal spacing, line-height, and contrast choices.

Small text for secondary information, helper copy, and captions.

Micro / Labels

Label text (forms, table headers, metadata)

Version 1.0.0 • Last updated 2 minutes ago

Inline link using primary and muted link.

If you want a dedicated .link class, this is a good place to decide it.

Semantic Color Roles (Tailwind → shadcn mapping)
These swatches must use only mapped semantic roles: background/foreground/card/popover/primary/secondary/muted/accent/destructive, plus border/input/ring. If you see “missing” colors here, your Tailwind preset likely needs a mapping, not your components.

background

Base app background

bg-background

card

Card surface

bg-card

popover

Menus, popovers, dropdowns

bg-popover

primary

CTA background

bg-primary

secondary

Soft button background

bg-secondary

accent (selection surface)

Command/Select hover + selected rows

bg-accent

muted

Muted surface

bg-muted

destructive

Danger/Destructive background

bg-destructive

border / input preview

border-input + border-border

bg-background border border-input

Foreground pairings (shadcn convention)

text-primary-foreground

Primary background contrast

text-secondary-foreground

Secondary background contrast

text-accent-foreground

Selection surface contrast

Note: Your prestige brass is intentionally not mapped to shadcn accent. Use CSS vars (--brand) or a dedicated utility if you want it in the UI.

Utilities (layout + motion)
Uses your current Tailwind plugin utilities: .stack-2/3/4/6/8, .transition-fast/standard/slow, .card-base, .card-hover. If anything here doesn’t render, it’s missing from the preset/plugin.

Stacks

Item A
Item B
Item C

.stack-4

Card base + hover

.card-base

Should use bg-card + border-border

.card-hover

Hover should lift/soft shadow smoothly (transition-standard)

.card-interactive

Hover lifts + shows primary border hint

.surface-elevated

Default elevated surface (no hover effects)

Transitions

transition-fast

hover scale

transition-standard

hover scale

transition-slow

hover scale

Cluster (new)

Cluster-4
Item
Item
Item

Semantic Spacing

.card-padding (24px)

.card-padding-lg (32px)

.element-spacing (mb-24px)

Buttons — variants + states
This is where “gold ghost buttons” show up if accent is wrong. We display all shadcn button variants and common states (default/hover/active/disabled/focus).

Variants

States (forced)

Default
Hover (forced)
Active (forced)
Sizes
Disabled
Focus ring
Badges, Callouts & Text Utilities
Utility classes from utilities.css handling badges, status blocks, and text truncation/formatting.

Utility Badges (Class-based)

PrimaryAccentMutedBrandDanger
PrimaryMutedBrandDanger

These use .badge .badge-* classes, separate from shadcn Component.

Text Utilities

Press ⌘K to open command.

Use console.log() for debug.

This text should truncate because it is way too long.

Callouts

Default Callout

Generic information block.

Warning Callout

Something needs attention.

Danger Callout

Critical failure occurred.

Success Callout

Operation completed successfully.

Forms — System (Zod + React Hook Form)
A complete schema-driven form system with validation, error handling, layouts and inline editing.

Personal Information

This will be displayed publicly on your profile.

We will send notifications to this address.

Role & Bio

Brief description for your profile card.

Preferences

Manage your app experience.

Receive daily digest emails.

Select your preferred interface theme.

Interactive Inline Editing

Click text to edit. Focus management and validation included.

Ken
Adams
Head of Operations
Callouts
Standard alert/callout blocks.

Default Callout

Generic information block.

Warning Callout

Something needs attention.

Danger Callout

Critical failure occurred.

Success Callout

Operation completed successfully.

Forms — components + states
Shows normal/hover/focus/invalid/disabled. If hover/focus is “transparent border only”, you’re still missing either accent mapping or rgb var formatting.

This is the new .field-help class.

Error helper text (you may want a dedicated class for this).

Checkbox / Switch

Radio group

Select (selection surface)

Hover/selected rows should use accent (neutral slate), not brand brass.

Selection Surfaces — Command / Menus / Selected rows
This is the canonical “does accent mapping work?” section. Selected/hovered items must use bg-accent + text-accent-foreground.

Command

DropdownMenu

Hover rows should be neutral slate (accent), not gold.

ContextMenu

Right click here
Overlays — Dialog / Sheet / Popover / Tooltip
These are sensitive to popover/card tokens, border, ring, and accent selection.
Data + Navigation
Tables, pagination, breadcrumbs, menubar, navigation menu. Focus is text contrast + borders + muted surfaces.

Breadcrumb

Menubar + NavigationMenu

Table + Pagination

A list of your recent invoices.
InvoiceStatusMethodAmount
INV-001PaidCredit Card$250.00
INV-002PendingPayPal$150.00

Skeleton + Avatar

CN

Skeletons often reveal if muted/foreground are mis-mapped.

Component coverage (misc)
A broad sweep to catch subtle token issues: borders, popover bg, selection surfaces, focus rings.

Calendar

February 2026

Accordion

Tabs

Make changes to your account here.

ScrollArea

Tags

Tag 24
Tag 23
Tag 22
Tag 21
Tag 20
Tag 19
Tag 18
Tag 17
Tag 16
Tag 15
Tag 14
Tag 13
Tag 12
Tag 11
Tag 10
Tag 9
Tag 8
Tag 7
Tag 6
Tag 5
Tag 4
Tag 3
Tag 2
Tag 1

Carousel

1
2
3
4
5

Resizable + Drawer

One
Two
Three
Missing-class hints
If you want this page to act as a spec, these are common gaps teams discover next.

If something here looked “unstyled”, you may be missing:

  • A dedicated .cluster-* utility (you used cluster-4 in the old page, but your preset only defines stacks + transitions + card-base/hover).
  • A dedicated .divider utility (replace with <Separator /> or define it).
  • A dedicated .focus-ring utility (shadcn uses focus-visible ring classes; you can wrap them as a utility if you want consistency).
  • A branded “brass” utility (e.g. .text-brand, .bg-brand-subtle) that uses --brand instead of hijacking accent.
  • Semantic form patterns (e.g. .field, .field-label, .field-help) if you want consistent spacing/typography on forms.
Data Tables
Our DataTable component wraps TanStack Table with a standard shell, supporting pagination, sorting, selection, and customizable toolbars.

1. Minimal (No Toolbar/Actions)

The simplest variant just needs data and columns. Suitable for read-only lists or small datasets.

INV-001
1/15/2024
success
medium
Ken Adams
ken99@yahoo.com
$316.00
INV-002
2/10/2024
success
low
Abe Lincoln
Abe45@gmail.com
$242.00
INV-003
3/21/2024
processing
high
Monserrat Banks
Monserrat44@gmail.com
$837.00
Showing 1-3 of 3 total rows

Rows per page

2. Selection & Bulk Actions

Add a selection column and pass bulkActions. The bulk action bar appears when rows are selected.

Invoices
Select rows to see bulk actions.
INV-001
1/15/2024
success
medium
Ken Adams
ken99@yahoo.com
$316.00
INV-002
2/10/2024
success
low
Abe Lincoln
Abe45@gmail.com
$242.00
INV-003
3/21/2024
processing
high
Monserrat Banks
Monserrat44@gmail.com
$837.00
INV-004
4/5/2024
success
medium
Silas Marner
Silas22@gmail.com
$874.00
INV-005
4/12/2024
failed
high
Carmella Soprano
carmella@hotmail.com
$721.00
INV-006
5/1/2024
pending
low
Ken Adams
ken99@yahoo.com
$116.00
Showing 1-6 of 6 total rows

Rows per page

3. Comprehensive (CRM Mode)

Full power: Column Pinning, Resizing, Inline Editing,Saved Views, and complex filtering. Try double-clicking the 'Amount' or 'Invoice' cells to edit.

Recent Payments
Manage your payment history.
INV-001
1/15/2024
success
medium
Ken Adams
ken99@yahoo.com
$316.00
INV-002
2/10/2024
success
low
Abe Lincoln
Abe45@gmail.com
$242.00
INV-003
3/21/2024
processing
high
Monserrat Banks
Monserrat44@gmail.com
$837.00
INV-004
4/5/2024
success
medium
Silas Marner
Silas22@gmail.com
$874.00
INV-005
4/12/2024
failed
high
Carmella Soprano
carmella@hotmail.com
$721.00
INV-006
5/1/2024
pending
low
Ken Adams
ken99@yahoo.com
$116.00
Showing 1-6 of 6 total rows

Rows per page