All files / core/blong-browser/src/components/SocialLoginButton SocialLoginButton.tsx

0% Statements 0/2
0% Branches 0/5
0% Functions 0/2
0% Lines 0/2

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69                                                                                                                                         
/**
 * SocialLoginButton — reusable "Continue with Google" button.
 *
 * Uses the primereact Button wrapper with an inline Google "G" mark so it works
 * with any theme (PrimeIcons has no brand glyph).
 */
import './SocialLoginButton.css';
 
import {Button} from '../Button/Button.js';
 
export interface ISocialLoginButtonProps {
    onClick?: () => void;
    /** Default: 'Continue with Google'. */
    label?: string;
    loading?: boolean;
    disabled?: boolean;
    className?: string;
}
 
function GoogleMark() {
    return (
        <svg
            className="blong-social-login__mark"
            viewBox="0 0 48 48"
            aria-hidden="true"
        >
            <path
                fill="#EA4335"
                d="M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z"
            />
            <path
                fill="#4285F4"
                d="M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z"
            />
            <path
                fill="#FBBC05"
                d="M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z"
            />
            <path
                fill="#34A853"
                d="M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z"
            />
        </svg>
    );
}
 
export function SocialLoginButton({
    onClick,
    label = 'Continue with Google',
    loading,
    disabled,
    className,
}: ISocialLoginButtonProps) {
    return (
        <Button
            type="button"
            outlined
            label={label}
            loading={loading}
            disabled={disabled}
            className={`blong-social-login__button ${className ?? ''}`}
            onClick={onClick}
            data-testid="google-login-button"
        >
            {!loading && <GoogleMark />}
        </Button>
    );
}