@arolariu/components
Version:
🎨 60+ beautiful, accessible React components built on Radix UI. TypeScript-first, tree-shakeable, SSR-ready. Perfect for modern web apps, design systems & rapid prototyping. Zero config, maximum flexibility! ⚡
1 lines • 23.9 kB
Source Map (JSON)
{"version":3,"file":"components\\ui\\hole-background.cjs","sources":["webpack://@arolariu/components/webpack/runtime/define_property_getters","webpack://@arolariu/components/webpack/runtime/has_own_property","webpack://@arolariu/components/webpack/runtime/make_namespace_object","webpack://@arolariu/components/./src/components/ui/hole-background.tsx"],"sourcesContent":["__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","\n\nimport * as React from \"react\";\nimport { motion } from \"motion/react\";\n\nimport { cn } from \"@/lib/utils\";\n\ninterface HoleBackgroundProps extends React.HTMLAttributes<HTMLCanvasElement> {\n strokeColor?: string;\n numberOfLines?: number;\n numberOfDiscs?: number;\n particleRGBColor?: [number, number, number];\n}\n\nconst HoleBackground = React.forwardRef<HTMLCanvasElement, HoleBackgroundProps>(\n (\n {\n strokeColor = \"#737373\",\n numberOfLines = 50,\n numberOfDiscs = 50,\n particleRGBColor = [255, 255, 255],\n className,\n children,\n ...props\n },\n ref,\n ) => {\n const canvasRef = React.useRef<HTMLCanvasElement>(null);\n React.useImperativeHandle(\n ref,\n () => canvasRef.current as HTMLCanvasElement,\n );\n\n const animationFrameIdRef = React.useRef<number>(0);\n const stateRef = React.useRef<any>({\n discs: [] as any[],\n lines: [] as any[],\n particles: [] as any[],\n clip: {},\n startDisc: {},\n endDisc: {},\n rect: { width: 0, height: 0 },\n render: { width: 0, height: 0, dpi: 1 },\n particleArea: {},\n linesCanvas: null,\n });\n\n const linear = (p: number) => p;\n const easeInExpo = (p: number) => (p === 0 ? 0 : Math.pow(2, 10 * (p - 1)));\n\n const tweenValue = React.useCallback(\n (start: number, end: number, p: number, ease: \"inExpo\" | null = null) => {\n const delta = end - start;\n const easeFn = ease === \"inExpo\" ? easeInExpo : linear;\n return start + delta * easeFn(p);\n },\n [],\n );\n\n const tweenDisc = React.useCallback(\n (disc: any) => {\n const { startDisc, endDisc } = stateRef.current;\n disc.x = tweenValue(startDisc.x, endDisc.x, disc.p);\n disc.y = tweenValue(startDisc.y, endDisc.y, disc.p, \"inExpo\");\n disc.w = tweenValue(startDisc.w, endDisc.w, disc.p);\n disc.h = tweenValue(startDisc.h, endDisc.h, disc.p);\n },\n [tweenValue],\n );\n\n const setSize = React.useCallback(() => {\n const canvas = canvasRef.current;\n if (!canvas) return;\n const rect = canvas.getBoundingClientRect();\n stateRef.current.rect = { width: rect.width, height: rect.height };\n stateRef.current.render = {\n width: rect.width,\n height: rect.height,\n dpi: window.devicePixelRatio || 1,\n };\n canvas.width =\n stateRef.current.render.width * stateRef.current.render.dpi;\n canvas.height =\n stateRef.current.render.height * stateRef.current.render.dpi;\n }, []);\n\n const setDiscs = React.useCallback(() => {\n const { width, height } = stateRef.current.rect;\n stateRef.current.discs = [];\n stateRef.current.startDisc = {\n x: width * 0.5,\n y: height * 0.45,\n w: width * 0.75,\n h: height * 0.7,\n };\n stateRef.current.endDisc = {\n x: width * 0.5,\n y: height * 0.95,\n w: 0,\n h: 0,\n };\n let prevBottom = height;\n stateRef.current.clip = {};\n for (let i = 0; i < numberOfDiscs; i++) {\n const p = i / numberOfDiscs;\n const disc = { p, x: 0, y: 0, w: 0, h: 0 };\n tweenDisc(disc);\n const bottom = disc.y + disc.h;\n if (bottom <= prevBottom) {\n stateRef.current.clip = { disc: { ...disc }, i };\n }\n prevBottom = bottom;\n stateRef.current.discs.push(disc);\n }\n const clipPath = new Path2D();\n const disc = stateRef.current.clip.disc;\n clipPath.ellipse(disc.x, disc.y, disc.w, disc.h, 0, 0, Math.PI * 2);\n clipPath.rect(disc.x - disc.w, 0, disc.w * 2, disc.y);\n stateRef.current.clip.path = clipPath;\n }, [tweenDisc]);\n\n const setLines = React.useCallback(() => {\n const { width, height } = stateRef.current.rect;\n stateRef.current.lines = [];\n const linesAngle = (Math.PI * 2) / numberOfLines;\n for (let i = 0; i < numberOfLines; i++) {\n stateRef.current.lines.push([]);\n }\n stateRef.current.discs.forEach((disc: any) => {\n for (let i = 0; i < numberOfLines; i++) {\n const angle = i * linesAngle;\n const p = {\n x: disc.x + Math.cos(angle) * disc.w,\n y: disc.y + Math.sin(angle) * disc.h,\n };\n stateRef.current.lines[i].push(p);\n }\n });\n const offCanvas = document.createElement(\"canvas\");\n offCanvas.width = width;\n offCanvas.height = height;\n const ctx = offCanvas.getContext(\"2d\");\n if (!ctx) return;\n stateRef.current.lines.forEach((line: any) => {\n ctx.save();\n let lineIsIn = false;\n line.forEach((p1: any, j: number) => {\n if (j === 0) return;\n const p0 = line[j - 1];\n if (\n !lineIsIn &&\n (ctx.isPointInPath(stateRef.current.clip.path, p1.x, p1.y) ||\n ctx.isPointInStroke(stateRef.current.clip.path, p1.x, p1.y))\n ) {\n lineIsIn = true;\n } else if (lineIsIn) {\n ctx.clip(stateRef.current.clip.path);\n }\n ctx.beginPath();\n ctx.moveTo(p0.x, p0.y);\n ctx.lineTo(p1.x, p1.y);\n ctx.strokeStyle = strokeColor;\n ctx.lineWidth = 2;\n ctx.stroke();\n ctx.closePath();\n });\n ctx.restore();\n });\n stateRef.current.linesCanvas = offCanvas;\n }, [strokeColor]);\n\n const initParticle = React.useCallback((start: boolean = false) => {\n const sx =\n stateRef.current.particleArea.sx +\n stateRef.current.particleArea.sw * Math.random();\n const ex =\n stateRef.current.particleArea.ex +\n stateRef.current.particleArea.ew * Math.random();\n const dx = ex - sx;\n const y = start\n ? stateRef.current.particleArea.h * Math.random()\n : stateRef.current.particleArea.h;\n const r = 0.5 + Math.random() * 4;\n const vy = 0.5 + Math.random();\n return {\n x: sx,\n sx,\n dx,\n y,\n vy,\n p: 0,\n r,\n c: `rgba(${particleRGBColor[0]}, ${particleRGBColor[1]}, ${\n particleRGBColor[2]\n }, ${Math.random()})`,\n };\n }, []);\n\n const setParticles = React.useCallback(() => {\n const { width, height } = stateRef.current.rect;\n stateRef.current.particles = [];\n const disc = stateRef.current.clip.disc;\n stateRef.current.particleArea = {\n sw: disc.w * 0.5,\n ew: disc.w * 2,\n h: height * 0.85,\n };\n stateRef.current.particleArea.sx =\n (width - stateRef.current.particleArea.sw) / 2;\n stateRef.current.particleArea.ex =\n (width - stateRef.current.particleArea.ew) / 2;\n const totalParticles = 100;\n for (let i = 0; i < totalParticles; i++) {\n stateRef.current.particles.push(initParticle(true));\n }\n }, [initParticle]);\n\n const drawDiscs = React.useCallback(\n (ctx: CanvasRenderingContext2D) => {\n ctx.strokeStyle = strokeColor;\n ctx.lineWidth = 2;\n const outerDisc = stateRef.current.startDisc;\n ctx.beginPath();\n ctx.ellipse(\n outerDisc.x,\n outerDisc.y,\n outerDisc.w,\n outerDisc.h,\n 0,\n 0,\n Math.PI * 2,\n );\n ctx.stroke();\n ctx.closePath();\n stateRef.current.discs.forEach((disc: any, i: number) => {\n if (i % 5 !== 0) return;\n if (disc.w < stateRef.current.clip.disc.w - 5) {\n ctx.save();\n ctx.clip(stateRef.current.clip.path);\n }\n ctx.beginPath();\n ctx.ellipse(disc.x, disc.y, disc.w, disc.h, 0, 0, Math.PI * 2);\n ctx.stroke();\n ctx.closePath();\n if (disc.w < stateRef.current.clip.disc.w - 5) {\n ctx.restore();\n }\n });\n },\n [strokeColor],\n );\n\n const drawLines = React.useCallback((ctx: CanvasRenderingContext2D) => {\n if (stateRef.current.linesCanvas) {\n ctx.drawImage(stateRef.current.linesCanvas, 0, 0);\n }\n }, []);\n\n const drawParticles = React.useCallback((ctx: CanvasRenderingContext2D) => {\n ctx.save();\n ctx.clip(stateRef.current.clip.path);\n stateRef.current.particles.forEach((particle: any) => {\n ctx.fillStyle = particle.c;\n ctx.beginPath();\n ctx.rect(particle.x, particle.y, particle.r, particle.r);\n ctx.closePath();\n ctx.fill();\n });\n ctx.restore();\n }, []);\n\n const moveDiscs = React.useCallback(() => {\n stateRef.current.discs.forEach((disc: any) => {\n disc.p = (disc.p + 0.001) % 1;\n tweenDisc(disc);\n });\n }, [tweenDisc]);\n\n const moveParticles = React.useCallback(() => {\n stateRef.current.particles.forEach((particle: any, idx: number) => {\n particle.p = 1 - particle.y / stateRef.current.particleArea.h;\n particle.x = particle.sx + particle.dx * particle.p;\n particle.y -= particle.vy;\n if (particle.y < 0) {\n stateRef.current.particles[idx] = initParticle();\n }\n });\n }, [initParticle]);\n\n const tick = React.useCallback(() => {\n const canvas = canvasRef.current;\n if (!canvas) return;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return;\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.save();\n ctx.scale(stateRef.current.render.dpi, stateRef.current.render.dpi);\n moveDiscs();\n moveParticles();\n drawDiscs(ctx);\n drawLines(ctx);\n drawParticles(ctx);\n ctx.restore();\n animationFrameIdRef.current = requestAnimationFrame(tick);\n }, [moveDiscs, moveParticles, drawDiscs, drawLines, drawParticles]);\n\n const init = React.useCallback(() => {\n setSize();\n setDiscs();\n setLines();\n setParticles();\n }, [setSize, setDiscs, setLines, setParticles]);\n\n React.useEffect(() => {\n const canvas = canvasRef.current;\n if (!canvas) return;\n init();\n tick();\n const handleResize = () => {\n setSize();\n setDiscs();\n setLines();\n setParticles();\n };\n window.addEventListener(\"resize\", handleResize);\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n cancelAnimationFrame(animationFrameIdRef.current);\n };\n }, [init, tick, setSize, setDiscs, setLines, setParticles]);\n\n return (\n <div\n className={cn(\n \"relative size-full overflow-hidden\",\n 'before:content-[\"\"] before:absolute before:top-1/2 before:left-1/2 before:block before:size-[140%] dark:before:[background:radial-gradient(ellipse_at_50%_55%,transparent_10%,black_50%)] before:[background:radial-gradient(ellipse_at_50%_55%,transparent_10%,white_50%)] before:[transform:translate3d(-50%,-50%,0)]',\n 'after:content-[\"\"] after:absolute after:z-[5] after:top-1/2 after:left-1/2 after:block after:size-full after:[background:radial-gradient(ellipse_at_50%_75%,#a900ff_20%,transparent_75%)] after:[transform:translate3d(-50%,-50%,0)] after:mix-blend-overlay',\n className,\n )}\n >\n {children}\n <canvas\n ref={canvasRef}\n className=\"absolute inset-0 block size-full dark:opacity-20 opacity-10\"\n {...props}\n />\n <motion.div\n className={cn(\n \"absolute top-[-71.5%] left-1/2 z-[3] w-[30%] h-[140%] rounded-b-full blur-3xl opacity-75 dark:mix-blend-plus-lighter mix-blend-plus-darker [transform:translate3d(-50%,0,0)] [background-position:0%_100%] [background-size:100%_200%]\",\n \"dark:[background:linear-gradient(20deg,#00f8f1,#ffbd1e20_16.5%,#fe848f_33%,#fe848f20_49.5%,#00f8f1_66%,#00f8f160_85.5%,#ffbd1e_100%)_0_100%_/_100%_200%] [background:linear-gradient(20deg,#00f8f1,#ffbd1e40_16.5%,#fe848f_33%,#fe848f40_49.5%,#00f8f1_66%,#00f8f180_85.5%,#ffbd1e_100%)_0_100%_/_100%_200%]\",\n )}\n animate={{ backgroundPosition: \"0% 300%\" }}\n transition={{ duration: 5, ease: \"linear\", repeat: Infinity }}\n />\n <div className=\"absolute top-0 left-0 z-[7] size-full dark:[background:repeating-linear-gradient(transparent,transparent_1px,white_1px,white_2px)] mix-blend-overlay opacity-50\" />\n </div>\n );\n },\n);\n\nexport { HoleBackground, type HoleBackgroundProps };\n"],"names":["__webpack_require__","definition","key","Object","obj","prop","Symbol","HoleBackground","React","strokeColor","numberOfLines","numberOfDiscs","particleRGBColor","className","children","props","ref","canvasRef","animationFrameIdRef","stateRef","linear","p","easeInExpo","Math","tweenValue","start","end","ease","delta","easeFn","tweenDisc","disc","startDisc","endDisc","setSize","canvas","rect","window","setDiscs","width","height","prevBottom","i","bottom","clipPath","Path2D","setLines","linesAngle","angle","offCanvas","document","ctx","line","lineIsIn","p1","j","p0","initParticle","sx","ex","dx","y","r","vy","setParticles","totalParticles","drawDiscs","outerDisc","drawLines","drawParticles","particle","moveDiscs","moveParticles","idx","tick","requestAnimationFrame","init","handleResize","cancelAnimationFrame","cn","motion","Infinity"],"mappings":"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"}