Button tokens are public component-local CSS custom properties defined on .bambi-button in button.css (installed alongside the component). Global intent and state tokens still come from bambi.css and are shared across components.
Because --bambi-button-* defaults are declared on .bambi-button, override them on .bambi-button, a more specific button selector, or inline style. Override shared intent/state tokens in :root when you want multiple components to inherit the same theme behavior.
--bambi-button-radius : 9999 px ;
--bambi-state-hover-opacity : 0.85 ;
/* scoped to a container */
--bambi-button-radius : 0 ;
/* shared intent token scoped to a container */
--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) ¹--bambi-button-outline-colorvar(--bambi-intent-primary-hover-bg)oklch(49% 0.230 271)
¹ Resolves through --bambi-primary, which maps to --bambi-primary-400 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.220 271)--bambi-intent-primary-fgvar(--bambi-primary-foreground)oklch(100% 0 0)
Token Default Light value --bambi-intent-secondary-bgvar(--bambi-secondary)oklch(95% 0.008 271)--bambi-intent-secondary-fgvar(--bambi-secondary-foreground)oklch(9% 0 0)--bambi-bordervar(--bambi-border)oklch(90% 0.010 271)
Token Default Light value --bambi-button-outline-colorvar(--bambi-intent-primary-hover-bg)oklch(49% 0.230 271)--bambi-button-hover-bgcolor-mix(in oklch, var(--bambi-button-outline-color) 10%, transparent)— --bambi-button-hover-fgvar(--bambi-button-outline-color)oklch(49% 0.230 271)
Token Default Light value --bambi-foregroundvar(--bambi-foreground)oklch(9% 0 0)--bambi-accentvar(--bambi-accent)oklch(94% 0.008 271)--bambi-accent-foregroundvar(--bambi-accent-foreground)oklch(9% 0 0)
Token Default Light value --bambi-primaryvar(--bambi-primary)oklch(55% 0.220 271)--bambi-button-link-underline-offset4px—
Token Default Light value --bambi-intent-danger-bgvar(--bambi-danger)oklch(65% 0.233 28)--bambi-intent-danger-fgvar(--bambi-danger-foreground)oklch(100% 0 0)
Token Default Light value --bambi-intent-success-bgvar(--bambi-success)oklch(73% 0.194 153)--bambi-intent-success-fgvar(--bambi-success-foreground)oklch(9% 0 0)
Token Default Light value --bambi-intent-warning-bgvar(--bambi-warning)oklch(78% 0.159 74)--bambi-intent-warning-fgvar(--bambi-warning-foreground)oklch(9% 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 ;