Button tokens are defined in bambi.css (installed by the CLI) and consumed by button.css (installed alongside the component). Component tokens are namespaced --bambi-button-*; intent and state tokens are shared across components.
Override them in :root (global) or on a selector (scoped):
--bambi-button-radius : 9999 px ;
--bambi-state-hover-opacity : 0.85 ;
/* scoped to a container */
--bambi-button-radius : 0 ;
--bambi-intent-primary-bg : oklch ( 55 % 0.2 160 );
Token Default Resolved value --bambi-button-gapvar(--bambi-space-1-5)0.375rem--bambi-button-border-width1px— --bambi-button-line-height1— --bambi-button-font-familyvar(--bambi-font-sans)system-ui, sans-serif--bambi-button-font-weightvar(--bambi-font-weight-medium)500--bambi-button-font-size-smvar(--bambi-text-xs)0.75rem--bambi-button-font-size-mdvar(--bambi-text-sm)0.875rem--bambi-button-font-size-lgvar(--bambi-text-base)1rem
Token Default --bambi-button-padding-sm0.375rem 0.75rem--bambi-button-padding-md0.5rem 1rem--bambi-button-padding-lg0.625rem 1.25rem--bambi-button-padding-icon0.5rem
Token Default Resolved value --bambi-button-radiusvar(--bambi-radius-md)0.5rem
All button sizes share --bambi-button-radius. The loading spinner uses --bambi-radius-full (9999px) directly.
Token Default Resolved value --bambi-button-transitionbackground-color 0.15s ease, border-color 0.15s ease, color 0.15s ease, opacity 0.15s ease— --bambi-state-hover-opacity1— --bambi-button-disabled-opacityvar(--bambi-state-disabled-opacity)0.5--bambi-button-focus-ring-widthvar(--bambi-state-focus-ring-width)2px--bambi-button-focus-ring-offsetvar(--bambi-state-focus-ring-offset)2px--bambi-button-ringvar(--bambi-state-focus-ring)oklch(55% 0.220 271) ¹
¹ Resolves to oklch(65% 0.220 271) in dark mode.
Token Default --bambi-button-spinner-border-width2px--bambi-button-spinner-duration0.6s
Color tokens resolve from the global theme and change between light and dark mode. Values shown are light mode defaults.
Token Default Light value --bambi-intent-primary-bgvar(--bambi-primary)oklch(55% 0.22 250)--bambi-intent-primary-fgvar(--bambi-primary-foreground)oklch(98% 0 0)
Token Default Light value --bambi-intent-secondary-bgvar(--bambi-secondary)oklch(96% 0 0)--bambi-intent-secondary-fgvar(--bambi-secondary-foreground)oklch(9% 0 0)--bambi-bordervar(--bambi-border)oklch(70% 0 0)
Token Default Light value --bambi-primaryvar(--bambi-primary)oklch(55% 0.22 250)--bambi-accentvar(--bambi-accent)oklch(94% 0.008 271)
Token Default Light value --bambi-foregroundvar(--bambi-foreground)oklch(9% 0 0)--bambi-accentvar(--bambi-accent)oklch(93% 0 0)--bambi-accent-foregroundvar(--bambi-accent-foreground)oklch(9% 0 0)
Token Default Light value --bambi-primaryvar(--bambi-primary)oklch(55% 0.22 250)--bambi-button-link-underline-offset4px—
Token Default Light value --bambi-intent-danger-bgvar(--bambi-danger)oklch(55% 0.22 25)--bambi-intent-danger-fgvar(--bambi-danger-foreground)oklch(98% 0 0)
Token Default Light value --bambi-intent-success-bgvar(--bambi-success)oklch(55% 0.17 145)--bambi-intent-success-fgvar(--bambi-success-foreground)oklch(98% 0 0)
Token Default Light value --bambi-intent-warning-bgvar(--bambi-warning)oklch(75% 0.17 70)--bambi-intent-warning-fgvar(--bambi-warning-foreground)oklch(15% 0 0)
--bambi-button-radius : 9999 px ;
--bambi-intent-primary-bg : oklch ( 55 % 0.2 160 ); /* green */
--bambi-intent-primary-fg : oklch ( 98 % 0 0 );
--bambi-button-transition : opacity 0.3 s ease , background-color 0.3 s ease ;
--bambi-button-padding-md : 0.375 rem 0.75 rem ;
--bambi-button-padding-lg : 0.5 rem 1 rem ;