diff --git a/frontend/src/assets/sf_mini.png b/frontend/src/assets/sf_mini.png new file mode 100644 index 0000000..198533b Binary files /dev/null and b/frontend/src/assets/sf_mini.png differ diff --git a/frontend/src/components/ui/Saajan.tsx b/frontend/src/components/ui/Saajan.tsx new file mode 100644 index 0000000..0f973ee --- /dev/null +++ b/frontend/src/components/ui/Saajan.tsx @@ -0,0 +1,53 @@ +import { useEffect, useState } from "react"; +import sf_mini from "../../assets/sf_mini.png"; + +interface SaajanProps { + message: string; + position?: "top" | "left" | "right" | "bottom"; +} + +export default function Saajan({ message, position = "right" }: SaajanProps) { + const [animate, setAnimate] = useState(false); + const [tooltipPosition, setTooltipPosition] = + useState("tooltip-right"); + const [alignment, setAlignment] = useState("justify-start"); + + useEffect(() => { + setAnimate(true); + const timeout = setTimeout(() => { + setAnimate(false); + }, 1000); + + return () => { + clearTimeout(timeout); + }; + }, []); + + useEffect(() => { + setTooltipPosition(`tooltip-${position}`); + if (position === "top") { + setAlignment("justify-center"); + } + if (position === "right") { + setAlignment("justify-start"); + } + if (position === "left") { + setAlignment("justify-end"); + } + }, [position]); + + return ( +
+
+ saajan +
+
+ ); +}