Deck Docs

Theming

Color scheme and CSS token overrides for built-in Feedback SDK widgets.

Theming

Theming applies to built-in widgets (FeedbackDialog, ThumbsFeedback). Headless UIs style themselves.

When headless is set on DeckProvider, no theme stylesheet or scope wrapper is injected.

Color scheme

// Default / normal light appearance
<DeckProvider colorScheme="light" …>

// Dark surfaces
<DeckProvider colorScheme="dark" …>

// Follow the OS
<DeckProvider colorScheme="system" …>

Token overrides

Pass partial tokens on theme. Overrides win over scheme defaults.

<DeckProvider
  colorScheme="light"
  theme={{
    fontFamily: "Inter, sans-serif", // or "inherit"
    primary: "#5B21B6",
    primaryForeground: "#ffffff",
    background: "#ffffff",
    foreground: "#0f172a",
    border: "#e2e8f0",
    radius: "12px",
  }}
>

Token → CSS variable map

Token propCSS variableRole
fontFamily--deck-fb-fontFont stack
background--deck-fb-bgSurface
foreground--deck-fb-fgPrimary text
muted--deck-fb-mutedSecondary text
label--deck-fb-labelField labels
border--deck-fb-borderBorders
primary--deck-fb-primaryPrimary button / selected
primaryForeground--deck-fb-primary-fgText on primary
secondary--deck-fb-secondarySecondary fills
danger--deck-fb-dangerErrors
overlay--deck-fb-overlayModal scrim
elevated--deck-fb-elevatedSubtle elevated background
radius--deck-fb-radiusDialog radius
radiusSm--deck-fb-radius-smControl radius

Tokens are applied on .deck-feedback-scope. You can also set the CSS variables in your own stylesheet:

.deck-feedback-scope {
  --deck-fb-font: inherit;
  --deck-fb-primary: #5b21b6;
}

Use className on DeckProvider to target that scope from host CSS.

Exports for advanced use

import {
  DECK_FEEDBACK_CSS_VARS,
  DECK_FEEDBACK_DEFAULT_THEMES,
  themeTokensToCssVars,
  resolveColorScheme,
  getDeckFeedbackBaseStylesheet,
} from "@deck-io/feedback";

Most apps only need colorScheme and optional theme props.

Next

Where feedback goes