import { type ButtonHTMLAttributes, type ReactNode } from 'react';
import { type VariantProps } from 'class-variance-authority';
declare const rootVariants: (props?: ({
provider?: "apple" | "google" | null | undefined;
appearance?: "light" | "dark" | null | undefined;
size?: "sm" | "md" | "lg" | null | undefined;
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
export type SocialSignInProvider = 'apple' | 'google';
/**
* Brand surface variant — independent of the kit theme. Apple HIG:
* `light` = white button + black mark/text, `dark` = black button +
* white mark/text. Google: `light` = white/neutral button, `dark` =
* Google-blue button. Pick the appearance that contrasts with your
* auth-card background; do NOT bind it to `useTheme()`. Defaults to
* `'light'`. Derived from `rootVariants` so the prop union tracks the
* CVA option list automatically.
*/
export type SocialSignInAppearance = NonNullable['appearance']>;
/** Button size. Defaults to `'md'`. Derived from `rootVariants`. */
export type SocialSignInSize = NonNullable['size']>;
export interface SocialSignInButtonProps extends Omit, 'children'>, Omit, 'provider'> {
/**
* Which identity provider this button represents. Drives the brand
* mark, the surface colour token, and the default i18n verb + name.
* Designed extensible — the union and the CVA option list grow
* together when a new provider (e.g. `'microsoft'`) is added.
*/
provider: SocialSignInProvider;
/**
* Swaps the brand mark for the kit Spinner (size-matched), sets
* `aria-busy` and `aria-disabled`, and ignores activation so the user
* cannot double-submit the OAuth redirect. The label stays visible and
* the button stays focusable, so keyboard focus stays on it. Changed in
* 1.72.0: before, it set native `disabled`, which dropped focus.
*/
loading?: boolean;
/**
* Override the visible label. When omitted, reads
* `socialSignInButton.` ("Sign in with Apple" / "Sign in
* with Google"). Override only to switch the verb to "Continue with"
* — never for marketing copy, and the provider NAME ("Apple" /
* "Google") must stay verbatim per brand rules.
*/
label?: ReactNode;
/**
* Fired when the component detects the user cancelled an in-flight
* sign-in — typically by pressing browser back after the OAuth
* redirect, which restores the page from bfcache with `loading` still
* true. Wire this to your loading-state setter so the button returns
* to idle. Only fires when `loading` is currently true; never on first
* mount. Mirrors SignInWithAlfadocsButton — the component does not
* reset state it doesn't own.
*/
onLoadingCancelled?: () => void;
}
export declare const SocialSignInButton: import("react").ForwardRefExoticComponent>;
export {};
//# sourceMappingURL=social-sign-in-button.d.ts.map