Jump to a component
Core · Actions
ProviderButton
ProviderButton is the button for signing in with Apple or Google, in the provider's own mark and colours as each provider sets them.
Live, from @anicanon/sakuga 2.0.0
Sakuga for iOS and Android is coming
iOS
Coming soon
ProviderButton for iOS is in the roughs. The tokens it will read are the ones on this page, the same on every platform.
Android
Coming soon
ProviderButton for Android is in the roughs. The tokens it will read are the ones on this page, the same on every platform.
- Use it for
- Signing in or creating an account with Apple or Google.
Guidelines
providerisappleorgoogle. Apple's is white on Dark and black on Light; Google's is its own dark or light button with a grey edge. Sakuga sets only the size and the shape.- It takes none of Button's variants, icons or trailing value: the provider decides how it looks, so nothing can be combined with it.
- Apple and Google sit as equals, the same size, Apple first. The labels are "Continue with Apple" and "Continue with Google", which it shows when given no label.
size="lg"(the default) on sign-in pages;mdwhere it sits in a row of settings.shape="pill"on phones,fullWidthin a sign-in column.- Apple's white button is Apple's, not the view's primary action: a view can have both.
- Pressing sinks it to 97% on
motion-instant, like Button.
import { ProviderButton } from '@anicanon/sakuga/ui';
export default function ProviderButtonExample() {
return (
<>
<ProviderButton provider="apple" style={{ flex: 1 }} />
<ProviderButton provider="google" style={{ flex: 1 }} />
<ProviderButton provider="apple" shape="pill" fullWidth />
<ProviderButton provider="google" shape="pill" fullWidth />
</>
);
}PropsProviderButtonProps
providerrequired'apple' | 'google'size'md' | 'lg'shape'rounded' | 'pill'fullWidthbooleanchildrenReactNodeclassNamestringEach token reads a role, and the role lands on a value in each theme. Change the role and every component that reads it follows.
Colour
provider-button-apple-bgProviderButton apple: Apple's fill, white on Dark and black on Light, as Apple asks.action-primaryneutral-925#0b0a10action-primaryneutral-0#ffffffprovider-button-apple-fgProviderButton apple: label and mark.text-inverseneutral-0#fffffftext-inverseneutral-925#0b0a10provider-button-google-bgProviderButton google: Google's fill. Google's own colours, read straight from the core: a provider's brand is theirs.neutral-0#ffffffgoogle-ink#131314provider-button-google-fgProviderButton google: label. Google's own colours, read straight from the core: a provider's brand is theirs.google-paper-text#1f1f1fgoogle-ink-text#e3e3e3provider-button-google-edgeProviderButton google: the 1px edge. Google's own colours, read straight from the core: a provider's brand is theirs.google-paper-edge#747775google-ink-edge#8e918fSpace and shape
provider-button-radiusradius-mdprovider-button-pill-radiusradius-fullprovider-button-height-mdsize-control-mdprovider-button-height-lgsize-control-lgprovider-button-gapgap-mdprovider-button-padding-xinset-xlprovider-button-padding-x-mdinset-lgprovider-button-active-scalescale-pressprovider-button-disabled-opacityopacity-disabledprovider-button-google-inset-ring-widthline-hairlineprovider-button-forced-edge-widthline-hairlineType
provider-button-fonttext-subtitle-smprovider-button-font-size-mdtext-label-bold-sizeprovider-button-line-height-mdtext-label-bold-line-heightMotion
provider-button-durationmotion-fastprovider-button-easingease-standardprovider-button-active-durationmotion-instantChecked automatically with axe-core 4.11.4 against WCAG 2.2 A and AA, on the live preview above, in light and dark, on 26 October 2026.
- Result
- No issues found, in light or in dark.
- By design
- A native button (a link with
href): Tab reaches it, Enter activates it, and Space does too on a button;disabledtakes a button out of the tab order. A screen reader hears its label ("Continue with Apple"); the provider's mark is hidden. Withhrefanddisabledit is a disabled button. Under reduced motion its press does not scale, and in forced colours it keeps an edge. - Not tested
- The automated check doesn't test keyboard use, focus order or what a screen reader says. The lines above are the design system's own account of them.