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.
Actions
Things users click to do something.
Forms
Inputs, fields, and form controls.
Input
View docsUse 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 docsUse 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
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 docsBinary toggle.
Radio Group
View docsPick one of several mutually exclusive options.
Switch
View docsToggle a setting on or off.
Select
View docsUse 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 docsUse 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 docsPick 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.
Label
View docsAccessible 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.
Field
View docsForm 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.
Badge
View docsA small status indicator or label.
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 docsUser or entity image with fallback.
Table
View docsUse Table to scan, compare, sort, and act on multiple records.
| Status | ||
|---|---|---|
| Button | Actions | Stable |
| Table | Data display | Stable |
| Dialog | Overlay | Stable |
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 docsUse Calendar for choosing dates where visual date context helps.
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.
Card
View docsA 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 docsVisual dividing line.
Frame
View docsConstrained content frame with consistent padding.
Constrained frame with max-width and padding
Group
View docsHorizontal 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.
Stack
View docsVertical spacing primitive.
Feedback
Inform users of state changes.
Alert
View docsInline message block.
Maintenance window
Connection lost
Usage
- Inline or page-level message the user needs to notice.
- Stays visible until resolved or dismissed.
- Not for notification-panel items.
Toast
View docsTransient notification.
Usage
- Temporary feedback right after an action.
- Short and non-blocking.
- Not for persistent notifications or notification-panel items.
Progress
View docsDeterminate progress indicator.
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 docsIndeterminate loading indicator.
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 docsLoading placeholder.
Empty State
View docsPlaceholder for empty content regions.
No messages
When you receive messages they will appear here.
Navigation
Move between views and pages.
Tabs
View docsSwitch 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 docsPage navigation for long lists.
Command
View docsCommand palette / fuzzy launcher.
Link
View docsInline hyperlink with PRIZM styling.
Read the getting started guide or browse the component catalog to begin.
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 docsUse 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.
Sheet
View docsUse 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 docsFloating 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 docsHover 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.
Hover Card
View docsRich 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.
Kbd
View docsKeyboard shortcut display.
Code
View docsInline 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 docsDisplay and section headings.
Display heading
Section heading
Subsection
Text
View docsBody text primitive.
Default body text at base size.
Muted small text for secondary info.
Semibold emphasis.
Prose
View docsLong-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-zoneanddata-mode - Customise as needed