react-gsi
Version:
React bindings for the 'Sign in With Google for Web' API
80 lines (68 loc) • 3.15 kB
TypeScript
/// <reference types="gsi" />
/// <reference types="react" />
import * as react_jsx_runtime from 'react/jsx-runtime';
import * as react from 'react';
import { ReactNode, PropsWithChildren } from 'react';
declare const GSI_BUTTON_DEFAULT_CONFIGURATION: GsiButtonConfiguration;
interface GsiButtonProps {
readonly configuration?: GsiButtonConfiguration;
readonly fallback?: ReactNode;
}
declare function GsiButton(props: GsiButtonProps): react_jsx_runtime.JSX.Element;
interface UseRenderButtonProps {
readonly parent: HTMLElement;
readonly configuration: GsiButtonConfiguration;
readonly onRender?: () => void;
}
declare function useRenderButton(props: UseRenderButtonProps): void;
type ScriptStatus = ScriptIdleStatus | ScriptLoadingStatus | ScriptLoadedStatus | ScriptErrorStatus;
interface ScriptIdleStatus {
readonly type: 'idle';
}
interface ScriptLoadingStatus {
readonly type: 'loading';
}
interface ScriptLoadedStatus {
readonly type: 'loaded';
readonly event: Event;
}
interface ScriptErrorStatus {
readonly type: 'error';
readonly event: ErrorEvent;
}
declare function isIdle(status: ScriptStatus): status is ScriptIdleStatus;
declare function isLoading(status: ScriptStatus): status is ScriptLoadingStatus;
declare function isLoaded(status: ScriptStatus): status is ScriptLoadedStatus;
declare function isError(status: ScriptStatus): status is ScriptErrorStatus;
type ScriptFallback<T extends ScriptStatus> = (status: T) => ReactNode;
interface GsiClientProps {
readonly fallback?: ReactNode;
readonly idle?: ScriptFallback<ScriptIdleStatus>;
readonly loading?: ScriptFallback<ScriptLoadingStatus>;
readonly error?: ScriptFallback<ScriptErrorStatus>;
}
declare function GsiClient(props: PropsWithChildren<GsiClientProps>): react_jsx_runtime.JSX.Element;
interface UseScriptReturn {
readonly status: ScriptStatus;
}
declare const GOOGLE_GSI_CLIENT_URL = "https://accounts.google.com/gsi/client";
interface UseGsiClientProps {
readonly src?: string;
}
declare function useGsiClient(props?: UseGsiClientProps): UseScriptReturn;
interface UseOneTapProps {
readonly show?: boolean;
readonly onNotify?: MomentListener;
}
interface UseOneTapReturn {
readonly prompt: () => void;
readonly cancel: () => void;
}
declare function useOneTap(props?: UseOneTapProps): UseOneTapReturn;
interface IdTokenProviderProps {
readonly configuration: IdConfiguration;
}
declare function IdTokenProvider(props: PropsWithChildren<IdTokenProviderProps>): react_jsx_runtime.JSX.Element;
declare const IdTokenContext: react.Context<CredentialResponse | null>;
declare function useIdToken(): CredentialResponse | null;
export { GOOGLE_GSI_CLIENT_URL, GSI_BUTTON_DEFAULT_CONFIGURATION, GsiButton, GsiButtonProps, GsiClient, GsiClientProps, IdTokenContext, IdTokenProvider, IdTokenProviderProps, ScriptErrorStatus, ScriptFallback, ScriptIdleStatus, ScriptLoadedStatus, ScriptLoadingStatus, ScriptStatus, UseGsiClientProps, UseOneTapProps, UseOneTapReturn, UseRenderButtonProps, isError, isIdle, isLoaded, isLoading, useGsiClient, useIdToken, useOneTap, useRenderButton };