Skip to content
Component installs need the registry setup— the Base UI shadcn project, the @vegastack namespace and the Cloudflare Access service token.
VegaStack Design

Elevation

Flat bordered surfaces, one overlay shadow, and one opt-in primary-action finish.

Last updated

VegaStack is flat by default. Borders separate surfaces; shadow communicates either a real overlay layer or the explicitly approved primary-action finish. There is no generic elevation ramp.

Overlay surface

Floating panel — popover, dialog, menu.

--shadow-overlay

Resolved tokens

TokenLightDark
--shadow-overlay0 4px 14px -4px oklch(0.13 0.002 75 / 0.1), 0 2px 4px -2px oklch(0.13 0.002 75 / 0.06)0 8px 28px -6px oklch(0 0 0 / 0.48), 0 2px 8px -2px oklch(0 0 0 / 0.4)

The one role

  • shadow-overlay — portaled popovers, menus, tooltips, dialogs, sheets, and similar surfaces that genuinely float above the page.

That is the whole list. The shadow-lit action finish (and the Button finish prop that applied it) was retired on 2026-09-07, so flat-by-default now has no exception at all.

Cards, panels, rows, inputs, and resting controls use border-border without a drop shadow. Sticky surfaces gain a separating border when they detach from adjacent content; they do not acquire an invented elevation tier.

Equal-elevation nesting

Do not nest a bordered card inside another bordered card at the same visual elevation. Group the content with spacing, a divider, or a deliberately different surface role. When a nested region is necessary, its border/radius must communicate hierarchy rather than duplicate the outer container.

Stacking bands

Three bands, all tokens: z-(--z-raised) for a local raise inside a component, z-(--z-overlay) for portaled surfaces, and z-(--z-toast) for the toast stack alone. Within a band, DOM order resolves nesting. Raw z-index ladders are forbidden.

The toast band exists because DOM order cannot express its rule. The toast viewport mounts with the app provider, before any dialog opens, so on mount order alone every later dialog would cover it — yet a toast fired from inside a modal has to stay visible. One band above the portal band is the whole of that exception, and nothing else may claim it.

Do
Use border-border for flat surfaces and shadow-overlay for real overlays — nothing else casts a shadow.
Don't
Create shadow-sm/md/lg tiers, elevate cards, or nest equal-elevation cards.

On this page