import React from "react"; import { memo, useState } from "react"; import { useConstCallback } from "powerhooks"; import { keyframes } from "tss-react"; import keycloakifyLogoHeroMovingPngUrl from "./keycloakify-logo-hero-moving.png"; import keycloakifyLogoHeroStillPngUrl from "./keycloakify-logo-hero-still.png"; import { makeStyles } from "./tss"; export type Props = { style?: React.CSSProperties; id?: string; onLoad?: () => void; }; export const KeycloakifyRotatingLogo = memo((props: Props) => { const { id, style, onLoad: onLoadProp } = props; const [isImageLoaded, setIsImageLoaded] = useState(false); const onLoad = useConstCallback(() => { setIsImageLoaded(true); onLoadProp?.(); }); const { classes } = useStyles({ isImageLoaded }); return (
{"Rotating {"keyhole"}
); }); const useStyles = makeStyles<{ isImageLoaded: boolean }>({ name: { KeycloakifyRotatingLogo } })((_theme, { isImageLoaded }) => ({ root: { position: "relative" }, rotatingImg: { animation: `${keyframes({ from: { transform: "rotate(0deg)" }, to: { transform: "rotate(360deg)" } })} infinite 20s linear`, width: isImageLoaded ? "100%" : undefined, height: isImageLoaded ? "auto" : undefined }, stillImg: { position: "absolute", top: "0", left: "0", width: isImageLoaded ? "100%" : undefined, height: isImageLoaded ? "auto" : undefined } }));