Playground

Base surfaces

Sunken recedes, raised sits above the page, flat is just an outline.

Brand surfaces

Neon is the bright brand green; deep is the dark brand green with light content. Both support interactive hover/pressed states.

Elevated surfaces

Increasing elevation: action → modeless → fixed → modal. Modeless dark inverts the content.

Interactive

Pass interactive (or onClick) so neon, deep and action surfaces respond on hover and press. Hover the cards below.

When to Use

Best for

  • Wrapping any block of content in the correct surface for its elevation
  • Cards, panels, popovers, sticky bars, modals — pick the matching variant
  • Interactive cards (neon / deep / action) that respond to hover and press

Consider alternatives when

  • You need an action trigger with a label — use a Button
  • The element is purely text — style it directly, no surface needed

Props

PropTypeRequiredDescription
variant"sunken" | "raised" | "flat" | "neon" | "deep" | "action" | "modeless" | "modeless-dark" | "sticky" | "fixed" | "modal"NoSurface treatment (default: "raised")
interactivebooleanNoEnable hover/pressed feedback (neon, deep, action)
onClick() => voidNoClick handler — also makes the container keyboard-operable
radiusnumberNoCorner radius token (default: 24)
paddingnumberNoInner padding — a spacing token value (omit for none)
clipbooleanNoClip children to the rounded corners (default: true)
childrenReactNodeNoContent

Import

import { Container } from '@/components/Container/eshop';

Wrap in <div data-platform="eshop"> so the surface tokens resolve to the eShop foundation values.

Design Tokens

PurposeToken
Fill (per variant)var(--color-fill-surface-{variant})
Border (per variant)var(--color-border-surface-{variant}) (via outline)
Flat bordervar(--color-border-neutral)
Neon fillvar(--color-fill-surface-brand-bold)
Deep fillvar(--color-fill-surface-brand-dark)
Elevationvar(--surface-shadow-{action|modeless|fixed|modal})
Sticky blurvar(--surface-blur-sticky)
Content (on-dark variants)var(--color-content-on-dark-primary)
Radius (default)var(--primitive-radius-24)
Page tokens