diff --git a/package-lock.json b/package-lock.json index 3adf528e7..caa6985ae 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@once-ui-system/magic-portfolio", - "version": "1.3.0", + "version": "2.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@once-ui-system/magic-portfolio", - "version": "1.3.0", + "version": "2.0.0", "dependencies": { "@floating-ui/react-dom": "^2.1.2", "@mdx-js/loader": "^3.1.0", diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 6abaa10c7..ff8667c2f 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -3,7 +3,7 @@ import "@/once-ui/tokens/index.scss"; import classNames from "classnames"; -import { Footer, Header, RouteGuard } from "@/components"; +import { Footer, Header, RouteGuard, CustomCursor } from "@/components"; import { baseURL, effects, style, font, home } from "@/app/resources"; import { Background, Column, Flex, ThemeProvider, ToastProvider } from "@/once-ui/components"; @@ -71,6 +71,7 @@ export default async function RootLayout({ children }: RootLayoutProps) { + { + const cursorRef = useRef(null); + + useEffect(() => { + // Hide the default cursor + document.body.style.cursor = "none"; + const moveCursor = (e: MouseEvent) => { + if (cursorRef.current) { + // Center the custom cursor on the pointer + cursorRef.current.style.transform = `translate3d(${e.clientX - 10}px, ${e.clientY - 10}px, 0)`; + } + }; + document.addEventListener("mousemove", moveCursor); + return () => { + document.body.style.cursor = ""; + document.removeEventListener("mousemove", moveCursor); + }; + }, []); + + return
; +}; + +export default CustomCursor; diff --git a/src/components/index.ts b/src/components/index.ts index abafa481d..4d53a541e 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -4,3 +4,4 @@ export { Mailchimp } from "@/components/Mailchimp"; export { ProjectCard } from "@/components/ProjectCard"; export { HeadingLink } from "@/components/HeadingLink"; export { RouteGuard } from "@/components/RouteGuard"; +export { default as CustomCursor } from "@/components/CustomCursor";