saturation/uisaturation/ui
DocsComponentsBlocksPagesEmails
GitHub

Sections

IntroductionComponentsInstallationMCPThemingDesignComposing a Detail Panel

Components

Components

General

AvatarBadgeButtonKbdProgressSeparatorSkeletonSpin ResolveSpinnerSplit ButtonSync ButtonTypography

Forms & Inputs

Address LookupCalendar PickerCheckboxColor PickerComboboxDate PickerEmoji PickerFavicon SearchFieldInputInput GroupInput OTPRadio GroupSelectSliderSwitchTextareaToggleToggle Group

Data Display

AccordionAlertCardChartComparison SliderCredit CardData TableEmptyItemMarkdownSaturation Credit CardStatus BadgeTableTree

Detail Panels

Detail FieldDetail HeroDetail Toolbar

Navigation

BreadcrumbCommandMenubarNavigation MenuPaginationTabs

Overlays

CollapsibleContext MenuDialogDropdown MenuHover CardSheet

Layout

Button GroupFont ProviderWizard Split Layout

Feedback

Sonner

Animation & Effects

Animated GroupAnimated ListAnimated NumberBeamBlur FadeBorder TrailGlow EffectLiquid MetalLoading StateParallaxPixelProgressive BlurRippleSpotlightText EffectText Shimmer

Productivity

Agent ChatAI Chat InputCoding AgentFiltersFull CalendarKanbanNovel Editor
Docs/Components/Detail Field

Detail Field

The detail-sidebar field row — def-driven editors plus hover affordances (copy, lock, view, provenance marker).

Loading...

Installation

pnpm dlx shadcn@latest add @saturation-ui/detail-field

Tailwind v4 — Source Scanning

The public shadcn registry installs component source into your project. If Tailwind v4 isn't scanning your components directory, add this to your CSS entry file:

@source "../components";

This ensures all utility classes in CVA variants and data attribute selectors are included in your build.

Usage

import {
  DetailField,
  type FieldDef,
} from "@/components/ui/detail-field"
<DetailField
  def={{ label: "Status", icon: <CircleDotIcon />, kind: "select", options: STATUS_OPTS }}
  value={record.status}
  onChange={(v) => update("status", v)}
/>

Not the shadcn form Field family — that is vertical form anatomy. DetailField is the detail-panel ROW: icon + 140px label column + value cell + hover affordances.

Sub-parts

EditableText (inline click-to-edit text/textarea: hover pencil, Enter/Escape semantics, debounced autosave, link mode) and PanelEditorCell (click-to-edit host for self-anchoring popover editors) are the field's editor primitives. They are exported from the package and installable via the CLI (editable-text, panel-editor-cell) but are implementation detail of the field system, not standalone surface.

API Reference

Def mode

PropTypeDefaultDescription
defFieldDef—The field definition: label, icon, kind (text · longtext · email · phone · url · date · currency · select · ref · tags · unit), state (editable · readonly · computed), plus inline affordances (lock, source, navTo, tint) and editor payload (options / entities / search). Unavailable in children mode.
valueFieldValue—Controlled value (string, RefValue, or TagsValue).
onChange(v: FieldValue) => void—Change handler.
onOpen(id: string) => void—Fired when a ref field's name link is clicked (deep-link).
editorsDetailFieldEditors—Injected editors for the data-coupled kinds (date / ref / tags / unit). Without one, the kit renders a formatted read-only value and warns in dev. Apps typically bake these into a wrapper once.

Children mode (row anatomy)

PropTypeDefaultDescription
childrenReactNode—Custom value cell — the row anatomy (icon + 140px label + hover affordances) is unchanged. Mutually exclusive with def at the type level.
labelstring—Row label (falls back to def.label in def mode).
iconReactNode—Row icon, normalized to 15px (falls back to def.icon).
isLocked / lockReason / onUnlock…—Hover lock affordance with optional click-to-unlock.
copyValuestring—Hover copy button (auto-derived in def mode: email/phone always; non-editable scalars).
onView / viewLabel…—Hover deep-link (↗) affordance.
aiMarker / aiBeam / aiBeamActive…—Provenance marker slot + fill-choreography beam.
computedboolean—Muted non-editable tint on the value cell.
PreviousDate PickerNextDetail Hero

On This Page

  • Installation
  • Usage
  • Sub-parts
  • API Reference
  • Def mode
  • Children mode (row anatomy)
Description
Camera package — week 3
Status
Email
doug@soundmixer.biz
Amount
$4,250.00