PRIZM 4.0DSTA

D Experience

Components

Browse every component available for D Experience projects — PRIZM core styled with D Experience tokens, plus D Experience local components.

Use the left navigation to jump to a component. The ◇ marker means a D Experience local component — reusable in D Experience, not a PRIZM core component.

◇ D Experience local

Jump to component

Components preview

Light mode is the default for D Experience systems. Dark mode is optional for preview/testing only.

Components preview — light or dark

Actions

Things users click to do something.

Button

View docs

Trigger an action. Six visual variants and four sizes.

Rule: Use one clear primary action per section or decision point.

Usage guidancePlacement, pairing, and button style rules.

Bottom-right action group; Outline before primary.

Button style usage

  • Primary— main action.
  • Outline— alternative or cancel.
  • Ghost / subtle— quiet supporting action.
  • Destructive— risky or irreversible action.
  • Link / text— navigation or inline action, not form submission.

Icons in buttons

  • Text-only is the default; add an icon only when it improves recognition or repeated scanning.
  • The text label stays the source of meaning.
  • Leading icon— object or action, e.g. Add, Download.
  • Trailing icon— direction or state, e.g. Next, External link, Dropdown.

Icon-only buttons

  • For compact secondary or utility actions only.
  • Not for the main primary CTA, form submit, or unclear destructive actions.
  • Always give an accessible label (aria-label) and a tooltip on hover/focus.

Examples

For spacing and horizontal alignment of related controls, see Group.

Forms

Inputs, fields, and form controls.

Use Input for short, single-line text or numeric values.

Usage

  • For short, single-line values.
  • Pair with a label; add helper or error text when needed.
  • Disabled = not editable and skipped on submit; read-only = focusable and submitted, just not editable.
Examples & variantsLabels, required fields, and validation states.

Labels & validation

Fields marked with * are required.

Enter a valid 6-digit reference.

Red text or border signals a validation error only — never use it to mark a field required. If most fields are required, mark the optional ones instead.

Textarea

View docs

Use Textarea for longer free-text responses.

Usage

  • For multi-line text entry.
  • Show a character count only when a length limit matters.
  • Over the limit, show an error and the exceeded count — never silently block typing.
Examples & variantsCharacter count, within-limit and over-limit states.

Character count

0 / 200
10 characters over the limit.210 / 200

Show a count only when a limit matters. Over the limit, show the error and exceeded count — keep letting the user type and edit down.

Checkbox

View docs

Binary toggle.

Radio Group

View docs

Pick one of several mutually exclusive options.

Switch

View docs

Toggle a setting on or off.

Select

View docs

Use Select when users choose one option from a short, fixed list.

Usage

  • Use for a short, fixed list of options.
  • For search or long lists, use Combobox.
Behaviour notesPopup placement and alignment.
  • Menu opens below the trigger and matches its width.

Combobox

View docs

Use Combobox when users need to search, filter, or type to find an option.

Usage

  • Use when search or typeahead helps — long or unfamiliar lists.
  • Avoid for simple 2–5 option choices — use Select.
Behaviour notesPopup placement and alignment.
  • Popup aligns to the trigger and stays clear of screen edges.

Slider

View docs

Pick a numeric value within a range.

Usage

  • Show the selected value when it matters — don't rely on a hover-only value.
  • Plain slider for approximate values; pair with a text input when an exact value is needed.
  • A range slider with two handles is an optional min–max variant.

Accessible label for form controls.

Usage

  • Always pair a label with its control.
  • Mark required fields with * — or, if most are required, mark the optional ones instead.
  • State the required/optional convention once near the top of the form.

Form field wrapper with label, hint, and error.

Used as the prefix for issue IDs. Cannot be changed later.

Usage

  • Groups a label, control, and helper or error text as one unit.
  • Keeps spacing and error states consistent across the form.
  • Follow the form's required/optional convention — see Label.

Data display

Surface information visually.

A small status indicator or label.

SolidOutlineSubtleSuccessWarningDangerInfo

Usage

  • Use for status, count, or short metadata.
  • Not decoration — every badge should carry meaning.
  • Avoid crowding a row; colour must communicate meaning.

Avatar

View docs

User or entity image with fallback.

ALJDMKOP

Use Table to scan, compare, sort, and act on multiple records.

Status
ButtonActionsStable
TableData displayStable
DialogOverlayStable

Usage

  • Make only task-relevant columns sortable, with a consistent affordance.
  • Show one active sort and its direction; keep other columns neutral or plain.
  • Reveal bulk actions only after rows are selected.
Behaviour notesSorting, bulk actions, and action placement.
  • Show sortable affordances only where sorting helps the task.
  • The active sort must show its direction and set aria-sort.
  • Non-sortable columns should not show a sort icon.
  • Bulk actions appear only after row selection.
  • Table-level actions, search, filter, and settings belong in the table toolbar.
  • Row actions stay close to the row.

Calendar

View docs

Use Calendar for choosing dates where visual date context helps.

Su
Mo
Tu
We
Th
Fr
Sa
Behaviour notesDate range, month/year navigation, and typed-date input.
  • Single date, date range, and month/year navigation.
  • Offer an optional typed-date input for users who already know the date.
  • Keep typed input and the visible calendar in sync so they never disagree.

Layout

Structure and spacing primitives.

A container with surface, border, and structured slots.

Card title

A short description of what this card contains.

The body of the card. Cards group related information into a single visual unit.

Separator

View docs

Visual dividing line.

PRIZM 4.0
A DSTA design system.
DocsComponentsSource

Constrained content frame with consistent padding.

Constrained frame with max-width and padding

Horizontal grouping of related controls.

Grouping guidance
  • Use Group to align related buttons or controls in one row.
  • Keep spacing consistent.
  • Allow wrapping/stacking on smaller screens.
  • Group controls arrangement only; it does not define page-level action placement.
  • For button order, placement and action behaviour, see Button usage guidance.

Usage

  • Aligns related controls or buttons in one row.
  • Does not define page-level action placement.
  • For action order and placement, see Button usage guidance.

Vertical spacing primitive.

Feedback

Inform users of state changes.

Inline message block.

Usage

  • Inline or page-level message the user needs to notice.
  • Stays visible until resolved or dismissed.
  • Not for notification-panel items.

Transient notification.

Usage

  • Temporary feedback right after an action.
  • Short and non-blocking.
  • Not for persistent notifications or notification-panel items.

Progress

View docs

Determinate progress indicator.

30%
65%
92%

Usage

  • Use for determinate progress — a known percentage or step.
  • Show the percentage or step text when it helps.
  • Keep the value visible; don't reveal it only on hover.

Spinner

View docs

Indeterminate loading indicator.

LoadingLoadingLoadingLoadingLoading…

Usage

  • Use for indeterminate loading of unknown duration.
  • If the percentage is known, use Progress instead.
  • Add short loading text when the wait isn't instant.

Skeleton

View docs

Loading placeholder.

Empty State

View docs

Placeholder for empty content regions.

No messages

When you receive messages they will appear here.

Navigation

Move between views and pages.

Left Navigation Rail

D Experience local

Expanded by default on desktop; users can collapse to an icon rail. Labels remain available on hover/focus.

D Experience local

Persistent D Experience app navigation for section-level workflows, expanded by default on desktop and collapsible to an icon rail.

Usage

  • Desktop is expanded by default; users can collapse to an icon rail.
  • Collapsed rail keeps labels available on hover/focus.
  • Supports active state, number badges, and dot indicators.
Usage notes

Use when — D Experience app screens need persistent section-level navigation.

Do not use when — public website pages, small embedded tools, modal-only flows, or simple single-page tasks.

Badges — use numbers for actionable counts, dots for attention states, hide 0, badges are not active states.

Responsive — desktop uses expanded/collapsible rail; mobile may use drawer/sheet.

Switch between related views.

Overview panel content.

Usage

  • Switch between related views in the same context.
  • Not primary navigation.
  • Keep labels short; do not hide critical actions in tabs.

Pagination

View docs

Page navigation for long lists.

Command

View docs

Command palette / fuzzy launcher.

No results found.
Navigation
DashboardView today’s activity
CalendarUpcoming events and meetings
SettingsAccount and workspace preferences
Documentation
Getting startedInstall PRIZM and ship your first component
Theming guideTokens, modes, and the four-variant system
↑↓ navigate select
5 results

Overlay

Floating UI layered above content. Open below and left-aligned to the trigger, never covering it; close on outside click and Escape.

Dialog

View docs

Use Dialog for focused decisions or short tasks.

Usage

  • Use for a focused decision or short task.
  • Not for long or complex forms.
  • Actions bottom-right: Outline/Cancel before Primary; destructive last with a specific label.

Use Sheet for side tasks, filters, details, or mobile drawer content.

Usage

  • Use for side tasks, filters, details, or a mobile drawer.
  • Not when the task needs full-page focus.
  • Keep close and Escape behaviour clear.

Popover

View docs

Floating contextual panel.

Usage

  • Holds richer content anchored to a trigger — short forms or details.
  • Opens near the trigger (usually bottom-start) and flips/shifts at edges.
  • Portaled so it isn't clipped by the container or preview frame.

Tooltip

View docs

Hover label for compact UI elements.

Usage

  • Brief help text on hover or focus — not for rich content or actions.
  • Opens near the trigger and flips/shifts to stay in view.
  • Keep it short; never hide essential actions in a tooltip.

Context Menu

View docs

Right-click action menu.

Right-click here

Usage

  • Secondary or contextual actions on right-click.
  • Right-click must not be the only path — also offer a visible trigger or overflow menu.
  • Make the target area and right-click behaviour clear.

Hover Card

View docs

Rich preview on hover.

Usage

  • Shows richer preview content on hover, not actions.
  • Opens near the trigger and flips/shifts at edges.
  • For click-triggered content, use Popover.

Typography

Text-shaped content primitives.

Keyboard shortcut display.

SaveS

Inline and block code.

Use the cn() utility to merge class names.

import { cn } from "@/lib/utils";

const classes = cn("base-class", condition && "conditional-class");

Heading

View docs

Display and section headings.

Display heading

Section heading

Subsection

Body text primitive.

Default body text at base size.

Muted small text for secondary info.

Semibold emphasis.

Long-form content block.

Getting started

PRIZM provides a set of accessible, themeable components for building D Experience interfaces.

  • Copy components into your project
  • Apply design tokens via data-zone and data-mode
  • Customise as needed