Skip to main content
Button tokens control the appearance of the Button component in its primary, secondary, ghost, and danger variants.

Tokens

How to override

Use ThemeProvider to override component tokens for a subtree:
import { ThemeProvider } from "@servicetitan/anvil2";

<ThemeProvider
  theme={{
    component: {
      ButtonPrimaryForegroundColor: {
        value: "#ff0055",
        extensions: { appearance: { dark: { value: "#ff6688" } } },
      },
    },
  }}
>
  {/* children */}
</ThemeProvider>;
The -hover, -active, and -disabled variants of any token can be overridden the same way. To theme every component at once, override tier-2 semantic tokens instead — see Design Tokens.

Interactive states

Interactive state tokens follow a -hover / -active / -disabled suffix on the base token name. For example, button.primary.background.color has siblings button.primary.background.color-hover, ...color-active, and ...color-disabled. The table above surfaces these via the State column.
Last modified on April 21, 2026