Ensemble Ops

shadcn as implementation detail

Curated blocks can feel like shadcn without making every primitive public CMS content.

Editors choose product-level Ensemble blocks; the runtime applies shadcn-styled texture where the block contract supports it.

Curated interface

Internal primitives, public wrappers

The runtime coverage manifest classifies raw shadcn primitives as internal or non-public unless wrapped by a contract.

Interface / AccordionInterface / AlertInterface / Alert DialogInterface / Aspect RatioInterface / AvatarInterface / BadgeInterface / BreadcrumbInterface / ButtonInterface / Button GroupInterface / CalendarInterface / CardInterface / CarouselInterface / ChartInterface / CheckboxInterface / CollapsibleInterface / ComboboxInterface / CommandInterface / Context MenuInterface / Data TableInterface / Date PickerInterface / DialogInterface / DirectionInterface / DrawerInterface / Dropdown MenuInterface / EmptyInterface / FieldInterface / Hover CardInterface / InputInterface / Input GroupInterface / Input OtpInterface / ItemInterface / KbdInterface / LabelInterface / MenubarInterface / Native SelectInterface / Navigation MenuInterface / PaginationInterface / PopoverInterface / ProgressInterface / Radio GroupInterface / ResizableInterface / Scroll AreaInterface / SelectInterface / SeparatorInterface / SheetInterface / SidebarInterface / SkeletonInterface / SliderInterface / SonnerInterface / SpinnerInterface / SwitchInterface / TableInterface / TabsInterface / TextareaInterface / ToastInterface / ToggleInterface / Toggle GroupInterface / TooltipInterface / Typography
Tabs-style controlRendered by the wrapper showcase instead of a raw shadcn/tabs CMS block.
Contentready
Rendererready
Validationready
Interface / Dialog

Dialog wrapper

Modal content remains contract-driven while the primitive stays internal.

Interface / Sheet

Sheet wrapper

Side panels can be previewed without exposing raw shadcn/sheet.

Interface / Drawer

Drawer wrapper

Mobile disclosure surfaces keep placement and copy declarative.

Interface / Alert Dialog

Alert dialog wrapper

Confirmation content is visible to QA without raw primitive props.

Interface / Popover

Popover wrapper

Contextual details render through the curated showcase surface.

Interface / Tooltip

Tooltip wrapper

Short help text is represented as accessible wrapper evidence.

Interface / Dropdown Menu

Dropdown menu wrapper

Menu actions stay as simple CMS-authored items.

Interface / Accordion

Accordion wrapper

Grouped disclosure content renders through a semantic summary surface.

Toggle Accordion wrapper

ContentThe message remains structured.

InteractionThe shared pattern owns the behavior.

Interface / Collapsible

Collapsible wrapper

Single-section disclosure behavior stays owned by the runtime.

Toggle Collapsible wrapper

ContentThe message remains structured.

InteractionThe shared pattern owns the behavior.

Interface / Toast

Toast wrapper

Transient feedback can be themed without exposing primitive props.

Toast wrapperTransient feedback can be themed without exposing primitive props.
Interface / Sonner

Sonner wrapper

Notification texture remains an internal implementation detail.

Sonner wrapperNotification texture remains an internal implementation detail.
Interface / Empty

Empty state wrapper

No-data states use contract-authored copy and runtime styling.

Empty state wrapperNo-data states use contract-authored copy and runtime styling.
Interface / Skeleton

Skeleton wrapper

Loading placeholders are theme-aware but not CMS primitives.

Interface / Alert

Alert wrapper

Inline status messages stay themeable and contract-driven.

Interface / Aspect Ratio

Aspect ratio wrapper

Media boxes preserve stable responsive geometry.

Interface / Button Group

Button group wrapper

Grouped actions remain a wrapper concern.

Interface / Chart

Chart wrapper

Chart texture is previewed without exposing chart internals.

Interface / Command

Command wrapper

Command search stays a curated operator surface.

ContentInteractionReview
Interface / Context Menu

Context menu wrapper

Contextual actions render as semantic menus.

Interface / Data Table

Data table wrapper

Operator rows stay contract-backed.

LayerStatus
Contentwrapped
Interactionwrapped
Reviewwrapped
Interface / Direction

Direction wrapper

RTL/LTR treatment is validated as implementation evidence.

RTLLTR safe
Interface / Hover Card

Hover card wrapper

Supplemental details stay in a bounded preview.

Interface / Item

Item wrapper

List item anatomy remains consistent across themes.

  • Content
  • Interaction
  • Review
Interface / Kbd

Keyboard hint wrapper

Keyboard affordances stay accessible and themeable.

CmdKKeyboard hint wrapper
Interface / Menubar

Menubar wrapper

Menu navigation stays semantic.

Interface / Native Select

Native select wrapper

Native selects route through the CMS form-template pattern.

Interface / Navigation Menu

Navigation menu wrapper

Navigation menus remain curated site chrome behavior.

Interface / Resizable

Resizable wrapper

Split panes are represented without raw primitive props.

PrimaryDetail
Interface / Scroll Area

Scroll area wrapper

Overflow content gets bounded responsive treatment.

ContentInteractionReviewContentInteractionReview
Interface / Spinner

Spinner wrapper

Loading feedback is visible through stable status evidence.

Spinner wrapper
Interface / Table

Table wrapper

Simple tabular data stays contract-first.

LayerStatus
Contentwrapped
Interactionwrapped
Reviewwrapped

Wrapper-ready layouts

Bento blocks prove shadcn-like structure can stay contract-first.

Card

Product-level card

The CMS captures title, copy, span, and badges instead of raw component props.

CMS publicWrapper

Metric

Business readable

Editors can reason in blocks, not UI library internals.

Accessible

Theme

Style from JSON

Color, font, scale, and texture still flow from the theme object.

Themeable

Mixed shadcn-styled Ensemble blocks

CMS primitives0 raw

No raw shadcn primitive is public by default.

WrappersCurated

Public blocks map to implementation components.

Keep CMS authoring simple

Component-library detail stays behind explicit Ensemble contracts.