diff --git a/apps/desktop/src/renderer/src/modules/entry-content/components/EntryTitle.tsx b/apps/desktop/src/renderer/src/modules/entry-content/components/EntryTitle.tsx index 59dba3c38..8d191421c 100644 --- a/apps/desktop/src/renderer/src/modules/entry-content/components/EntryTitle.tsx +++ b/apps/desktop/src/renderer/src/modules/entry-content/components/EntryTitle.tsx @@ -103,12 +103,14 @@ export const EntryTitle = ({ entryId, compact }: EntryLinkProps) => { href={populatedFullHref ?? "#"} target="_blank" rel="noopener noreferrer" - className={"select-text break-words text-2xl font-medium leading-normal"} + className={ + "select-text break-words text-2xl font-medium leading-normal hover:before:-inset-x-3" + } > diff --git a/packages/components/src/ui/effect/MagneticHoverEffect.tsx b/packages/components/src/ui/effect/MagneticHoverEffect.tsx index 2eda09aa3..4552a59f9 100644 --- a/packages/components/src/ui/effect/MagneticHoverEffect.tsx +++ b/packages/components/src/ui/effect/MagneticHoverEffect.tsx @@ -16,9 +16,16 @@ export const MagneticHoverEffect = ({ const itemRef = useRef(null) - const handleMouseEnter = () => { + const handleMouseEnter = (e: React.MouseEvent) => { if (!itemRef.current) return + const rect = itemRef.current.getBoundingClientRect() + + const x = ((e.clientX - rect.left) / rect.width) * 100 + const y = ((e.clientY - rect.top) / rect.height) * 100 + itemRef.current.style.transition = "transform 0.2s cubic-bezier(0.33, 1, 0.68, 1)" + itemRef.current.style.setProperty("--origin-x", `${x}%`) + itemRef.current.style.setProperty("--origin-y", `${y}%`) } const handleMouseLeave = () => { @@ -50,7 +57,7 @@ export const MagneticHoverEffect = ({ className={cn( "relative !cursor-none", "inline-block transition-all duration-200 ease-out", - "before:absolute before:-inset-x-2 before:inset-y-0 before:z-[-1] before:origin-center before:scale-[0.92] before:rounded-xl before:bg-black/[0.03] before:opacity-0 before:backdrop-blur before:transition-all before:duration-200 hover:before:scale-100 hover:before:opacity-100 dark:before:bg-white/[0.10]", + "before:absolute before:-inset-x-2 before:inset-y-0 before:z-[-1] before:scale-0 before:rounded-xl before:bg-black/[0.03] before:opacity-0 before:backdrop-blur before:transition-all before:duration-200 before:[transform-origin:var(--origin-x)_var(--origin-y)] hover:before:scale-100 hover:before:opacity-100 dark:before:bg-white/[0.10]", rest.className, )} >