bynana-ui 1.3.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/ascii-text/index.js +3 -0
  2. package/dist/ascii-text/index.js.map +1 -0
  3. package/dist/ascii-text/index.mjs +3 -0
  4. package/dist/ascii-text/index.mjs.map +1 -0
  5. package/dist/blur-fade/index.js +2 -0
  6. package/dist/blur-fade/index.js.map +1 -0
  7. package/dist/blur-fade/index.mjs +2 -0
  8. package/dist/blur-fade/index.mjs.map +1 -0
  9. package/dist/click-spark/index.js +2 -0
  10. package/dist/click-spark/index.js.map +1 -0
  11. package/dist/click-spark/index.mjs +2 -0
  12. package/dist/click-spark/index.mjs.map +1 -0
  13. package/dist/falling-text/index.js +2 -0
  14. package/dist/falling-text/index.js.map +1 -0
  15. package/dist/falling-text/index.mjs +2 -0
  16. package/dist/falling-text/index.mjs.map +1 -0
  17. package/dist/float-effect/index.js +2 -0
  18. package/dist/float-effect/index.js.map +1 -0
  19. package/dist/float-effect/index.mjs +2 -0
  20. package/dist/float-effect/index.mjs.map +1 -0
  21. package/dist/glow-effect/index.js +2 -0
  22. package/dist/glow-effect/index.js.map +1 -0
  23. package/dist/glow-effect/index.mjs +2 -0
  24. package/dist/glow-effect/index.mjs.map +1 -0
  25. package/dist/hamburger-basic/index.js +2 -0
  26. package/dist/hamburger-basic/index.js.map +1 -0
  27. package/dist/hamburger-basic/index.mjs +2 -0
  28. package/dist/hamburger-basic/index.mjs.map +1 -0
  29. package/dist/hamburger-spin/index.js +2 -0
  30. package/dist/hamburger-spin/index.js.map +1 -0
  31. package/dist/hamburger-spin/index.mjs +2 -0
  32. package/dist/hamburger-spin/index.mjs.map +1 -0
  33. package/dist/index.js +19 -9
  34. package/dist/index.js.map +1 -1
  35. package/dist/index.mjs +19 -9
  36. package/dist/index.mjs.map +1 -1
  37. package/dist/infinite-scroll/index.js +11 -0
  38. package/dist/infinite-scroll/index.js.map +1 -0
  39. package/dist/infinite-scroll/index.mjs +11 -0
  40. package/dist/infinite-scroll/index.mjs.map +1 -0
  41. package/dist/input-otp/index.js +2 -0
  42. package/dist/input-otp/index.js.map +1 -0
  43. package/dist/input-otp/index.mjs +2 -0
  44. package/dist/input-otp/index.mjs.map +1 -0
  45. package/dist/multi-step-loader/index.js +2 -0
  46. package/dist/multi-step-loader/index.js.map +1 -0
  47. package/dist/multi-step-loader/index.mjs +2 -0
  48. package/dist/multi-step-loader/index.mjs.map +1 -0
  49. package/dist/pixel-card/index.js +2 -0
  50. package/dist/pixel-card/index.js.map +1 -0
  51. package/dist/pixel-card/index.mjs +2 -0
  52. package/dist/pixel-card/index.mjs.map +1 -0
  53. package/dist/smooth-cursor/index.js +2 -0
  54. package/dist/smooth-cursor/index.js.map +1 -0
  55. package/dist/smooth-cursor/index.mjs +2 -0
  56. package/dist/smooth-cursor/index.mjs.map +1 -0
  57. package/dist/tilted-card/index.js +2 -0
  58. package/dist/tilted-card/index.js.map +1 -0
  59. package/dist/tilted-card/index.mjs +2 -0
  60. package/dist/tilted-card/index.mjs.map +1 -0
  61. package/package.json +16 -2
@@ -0,0 +1,3 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function h(...n){return tailwindMerge.twMerge(clsx.clsx(n))}var u=" .:-=+*#%@";function R({text:n,enableWaves:$=true,asciiFontSize:t=8,textFontSize:o=200,textColor:a="#ffffff",planeBaseHeight:N=.2,className:d}){let x=react.useRef(null),[I,b]=react.useState("");return react.useEffect(()=>{let c=document.createElement("canvas"),e=c.getContext("2d");if(!e)return;e.font=`bold ${o}px monospace`;let A=e.measureText(n),s=Math.ceil(A.width),r=o*1.2;c.width=s,c.height=r,e.fillStyle=a,e.font=`bold ${o}px monospace`,e.textBaseline="middle",e.fillText(n,0,r/2);let l=e.getImageData(0,0,s,r).data,v=Math.floor(s/t),C=Math.floor(r/t),f="";for(let i=0;i<C;i++){for(let p=0;p<v;p++){let w=p*t,m=(i*t*s+w)*4,y=(l[m]+l[m+1]+l[m+2])/3,M=Math.floor(y/255*(u.length-1));f+=u[M];}f+=`
2
+ `;}b(f);},[n,t,o,a]),jsxRuntime.jsx("div",{ref:x,className:h("font-mono whitespace-pre",d),children:jsxRuntime.jsx("pre",{style:{fontSize:`${t}px`,lineHeight:1,color:a},children:I})})}var q=R;exports.ASCIIText=R;exports.default=q;//# sourceMappingURL=index.js.map
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/ascii-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","ASCII_CHARS","ASCIIText","text","enableWaves","asciiFontSize","textFontSize","textColor","planeBaseHeight","className","containerRef","useRef","asciiArt","setAsciiArt","useState","useEffect","canvas","ctx","metrics","width","height","pixels","cols","rows","ascii","y","x","px","idx","brightness","charIdx","jsx","ascii_text_default"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ASCIITextProps {\r\n text: string;\r\n enableWaves?: boolean;\r\n asciiFontSize?: number;\r\n textFontSize?: number;\r\n textColor?: string;\r\n planeBaseHeight?: number;\r\n className?: string;\r\n}\r\n\r\nconst ASCII_CHARS = ' .:-=+*#%@';\r\n\r\nexport function ASCIIText({\r\n text,\r\n enableWaves = true,\r\n asciiFontSize = 8,\r\n textFontSize = 200,\r\n textColor = \"#ffffff\",\r\n planeBaseHeight = 0.2,\r\n className,\r\n}: ASCIITextProps) {\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const [asciiArt, setAsciiArt] = useState<string>(\"\");\r\n\r\n useEffect(() => {\r\n const canvas = document.createElement(\"canvas\");\r\n const ctx = canvas.getContext(\"2d\");\r\n if (!ctx) return;\r\n\r\n // Set canvas size based on text\r\n ctx.font = `bold ${textFontSize}px monospace`;\r\n const metrics = ctx.measureText(text);\r\n const width = Math.ceil(metrics.width);\r\n const height = textFontSize * 1.2;\r\n\r\n canvas.width = width;\r\n canvas.height = height;\r\n\r\n // Draw text\r\n ctx.fillStyle = textColor;\r\n ctx.font = `bold ${textFontSize}px monospace`;\r\n ctx.textBaseline = \"middle\";\r\n ctx.fillText(text, 0, height / 2);\r\n\r\n // Get image data\r\n const imageData = ctx.getImageData(0, 0, width, height);\r\n const pixels = imageData.data;\r\n\r\n // Convert to ASCII\r\n const cols = Math.floor(width / asciiFontSize);\r\n const rows = Math.floor(height / asciiFontSize);\r\n let ascii = \"\";\r\n\r\n for (let y = 0; y < rows; y++) {\r\n for (let x = 0; x < cols; x++) {\r\n const px = x * asciiFontSize;\r\n const py = y * asciiFontSize;\r\n const idx = (py * width + px) * 4;\r\n const brightness = (pixels[idx] + pixels[idx + 1] + pixels[idx + 2]) / 3;\r\n const charIdx = Math.floor((brightness / 255) * (ASCII_CHARS.length - 1));\r\n ascii += ASCII_CHARS[charIdx];\r\n }\r\n ascii += \"\\n\";\r\n }\r\n\r\n setAsciiArt(ascii);\r\n }, [text, asciiFontSize, textFontSize, textColor]);\r\n\r\n return (\r\n <div ref={containerRef} className={cn(\"font-mono whitespace-pre\", className)}>\r\n <pre\r\n style={{\r\n fontSize: `${asciiFontSize}px`,\r\n lineHeight: 1,\r\n color: textColor,\r\n }}\r\n >\r\n {asciiArt}\r\n </pre>\r\n </div>\r\n );\r\n}\r\n\r\nexport default ASCIIText;\r\n"]}
@@ -0,0 +1,3 @@
1
+ import {useRef,useState,useEffect}from'react';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx}from'react/jsx-runtime';function h(...n){return twMerge(clsx(n))}var u=" .:-=+*#%@";function R({text:n,enableWaves:$=true,asciiFontSize:t=8,textFontSize:o=200,textColor:a="#ffffff",planeBaseHeight:N=.2,className:d}){let x=useRef(null),[I,b]=useState("");return useEffect(()=>{let c=document.createElement("canvas"),e=c.getContext("2d");if(!e)return;e.font=`bold ${o}px monospace`;let A=e.measureText(n),s=Math.ceil(A.width),r=o*1.2;c.width=s,c.height=r,e.fillStyle=a,e.font=`bold ${o}px monospace`,e.textBaseline="middle",e.fillText(n,0,r/2);let l=e.getImageData(0,0,s,r).data,v=Math.floor(s/t),C=Math.floor(r/t),f="";for(let i=0;i<C;i++){for(let p=0;p<v;p++){let w=p*t,m=(i*t*s+w)*4,y=(l[m]+l[m+1]+l[m+2])/3,M=Math.floor(y/255*(u.length-1));f+=u[M];}f+=`
2
+ `;}b(f);},[n,t,o,a]),jsx("div",{ref:x,className:h("font-mono whitespace-pre",d),children:jsx("pre",{style:{fontSize:`${t}px`,lineHeight:1,color:a},children:I})})}var q=R;export{R as ASCIIText,q as default};//# sourceMappingURL=index.mjs.map
3
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/ascii-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","ASCII_CHARS","ASCIIText","text","enableWaves","asciiFontSize","textFontSize","textColor","planeBaseHeight","className","containerRef","useRef","asciiArt","setAsciiArt","useState","useEffect","canvas","ctx","metrics","width","height","pixels","cols","rows","ascii","y","x","px","idx","brightness","charIdx","jsx","ascii_text_default"],"mappings":"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","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ASCIITextProps {\r\n text: string;\r\n enableWaves?: boolean;\r\n asciiFontSize?: number;\r\n textFontSize?: number;\r\n textColor?: string;\r\n planeBaseHeight?: number;\r\n className?: string;\r\n}\r\n\r\nconst ASCII_CHARS = ' .:-=+*#%@';\r\n\r\nexport function ASCIIText({\r\n text,\r\n enableWaves = true,\r\n asciiFontSize = 8,\r\n textFontSize = 200,\r\n textColor = \"#ffffff\",\r\n planeBaseHeight = 0.2,\r\n className,\r\n}: ASCIITextProps) {\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const [asciiArt, setAsciiArt] = useState<string>(\"\");\r\n\r\n useEffect(() => {\r\n const canvas = document.createElement(\"canvas\");\r\n const ctx = canvas.getContext(\"2d\");\r\n if (!ctx) return;\r\n\r\n // Set canvas size based on text\r\n ctx.font = `bold ${textFontSize}px monospace`;\r\n const metrics = ctx.measureText(text);\r\n const width = Math.ceil(metrics.width);\r\n const height = textFontSize * 1.2;\r\n\r\n canvas.width = width;\r\n canvas.height = height;\r\n\r\n // Draw text\r\n ctx.fillStyle = textColor;\r\n ctx.font = `bold ${textFontSize}px monospace`;\r\n ctx.textBaseline = \"middle\";\r\n ctx.fillText(text, 0, height / 2);\r\n\r\n // Get image data\r\n const imageData = ctx.getImageData(0, 0, width, height);\r\n const pixels = imageData.data;\r\n\r\n // Convert to ASCII\r\n const cols = Math.floor(width / asciiFontSize);\r\n const rows = Math.floor(height / asciiFontSize);\r\n let ascii = \"\";\r\n\r\n for (let y = 0; y < rows; y++) {\r\n for (let x = 0; x < cols; x++) {\r\n const px = x * asciiFontSize;\r\n const py = y * asciiFontSize;\r\n const idx = (py * width + px) * 4;\r\n const brightness = (pixels[idx] + pixels[idx + 1] + pixels[idx + 2]) / 3;\r\n const charIdx = Math.floor((brightness / 255) * (ASCII_CHARS.length - 1));\r\n ascii += ASCII_CHARS[charIdx];\r\n }\r\n ascii += \"\\n\";\r\n }\r\n\r\n setAsciiArt(ascii);\r\n }, [text, asciiFontSize, textFontSize, textColor]);\r\n\r\n return (\r\n <div ref={containerRef} className={cn(\"font-mono whitespace-pre\", className)}>\r\n <pre\r\n style={{\r\n fontSize: `${asciiFontSize}px`,\r\n lineHeight: 1,\r\n color: textColor,\r\n }}\r\n >\r\n {asciiArt}\r\n </pre>\r\n </div>\r\n );\r\n}\r\n\r\nexport default ASCIIText;\r\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var framerMotion=require('framer-motion'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function r(...e){return tailwindMerge.twMerge(clsx.clsx(e))}function f({children:e,className:n,delay:t=0,duration:o=.8,blur:a=10,inView:i=false,inViewMargin:l="-50px",yOffset:s=6}){let u={hidden:{opacity:0,filter:`blur(${a}px)`,y:s},visible:{opacity:1,filter:"blur(0px)",y:0}};return jsxRuntime.jsx(framerMotion.motion.div,{className:r(n),initial:"hidden",animate:i?void 0:"visible",whileInView:i?"visible":void 0,viewport:{once:true,margin:l},variants:u,transition:{duration:o,delay:t,ease:[.25,.1,.25,1]},children:e})}var w=f;exports.BlurFade=f;exports.default=w;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/blur-fade/index.tsx"],"names":["cn","inputs","twMerge","clsx","BlurFade","children","className","delay","duration","blur","inView","inViewMargin","yOffset","variants","jsx","motion","blur_fade_default"],"mappings":"qNAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCYO,SAASG,CAAAA,CAAS,CACvB,QAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CAAAA,CAAQ,CAAA,CACR,QAAA,CAAAC,CAAAA,CAAW,EAAA,CACX,IAAA,CAAAC,CAAAA,CAAO,EAAA,CACP,MAAA,CAAAC,CAAAA,CAAS,KAAA,CACT,YAAA,CAAAC,CAAAA,CAAe,OAAA,CACf,OAAA,CAAAC,CAAAA,CAAU,CACZ,CAAA,CAAkB,CAChB,IAAMC,CAAAA,CAAW,CACf,MAAA,CAAQ,CACN,OAAA,CAAS,CAAA,CACT,MAAA,CAAQ,CAAA,KAAA,EAAQJ,CAAI,CAAA,GAAA,CAAA,CACpB,CAAA,CAAGG,CACL,CAAA,CACA,OAAA,CAAS,CACP,OAAA,CAAS,CAAA,CACT,MAAA,CAAQ,WAAA,CACR,CAAA,CAAG,CACL,CACF,CAAA,CAEA,OACEE,cAAAA,CAACC,mBAAAA,CAAO,GAAA,CAAP,CACC,SAAA,CAAWf,CAAAA,CAAGM,CAAS,CAAA,CACvB,OAAA,CAAQ,QAAA,CACR,OAAA,CAASI,CAAAA,CAAS,MAAA,CAAY,SAAA,CAC9B,WAAA,CAAaA,CAAAA,CAAS,SAAA,CAAY,MAAA,CAClC,QAAA,CAAU,CAAE,IAAA,CAAM,IAAA,CAAM,MAAA,CAAQC,CAAa,CAAA,CAC7C,QAAA,CAAUE,CAAAA,CACV,UAAA,CAAY,CACV,QAAA,CAAAL,CAAAA,CACA,KAAA,CAAAD,CAAAA,CACA,IAAA,CAAM,CAAC,GAAA,CAAM,EAAA,CAAK,GAAA,CAAM,CAAC,CAC3B,CAAA,CAEC,QAAA,CAAAF,CAAAA,CACH,CAEJ,CAEA,IAAOW,CAAAA,CAAQZ","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { ReactNode } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface BlurFadeProps {\r\n children: ReactNode;\r\n className?: string;\r\n delay?: number;\r\n duration?: number;\r\n blur?: number;\r\n inView?: boolean;\r\n inViewMargin?: string;\r\n yOffset?: number;\r\n}\r\n\r\nexport function BlurFade({\r\n children,\r\n className,\r\n delay = 0,\r\n duration = 0.8,\r\n blur = 10,\r\n inView = false,\r\n inViewMargin = \"-50px\",\r\n yOffset = 6,\r\n}: BlurFadeProps) {\r\n const variants = {\r\n hidden: {\r\n opacity: 0,\r\n filter: `blur(${blur}px)`,\r\n y: yOffset,\r\n },\r\n visible: {\r\n opacity: 1,\r\n filter: \"blur(0px)\",\r\n y: 0,\r\n },\r\n };\r\n\r\n return (\r\n <motion.div\r\n className={cn(className)}\r\n initial=\"hidden\"\r\n animate={inView ? undefined : \"visible\"}\r\n whileInView={inView ? \"visible\" : undefined}\r\n viewport={{ once: true, margin: inViewMargin }}\r\n variants={variants}\r\n transition={{\r\n duration,\r\n delay,\r\n ease: [0.25, 0.1, 0.25, 1],\r\n }}\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default BlurFade;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {motion}from'framer-motion';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx}from'react/jsx-runtime';function r(...e){return twMerge(clsx(e))}function f({children:e,className:n,delay:t=0,duration:o=.8,blur:a=10,inView:i=false,inViewMargin:l="-50px",yOffset:s=6}){let u={hidden:{opacity:0,filter:`blur(${a}px)`,y:s},visible:{opacity:1,filter:"blur(0px)",y:0}};return jsx(motion.div,{className:r(n),initial:"hidden",animate:i?void 0:"visible",whileInView:i?"visible":void 0,viewport:{once:true,margin:l},variants:u,transition:{duration:o,delay:t,ease:[.25,.1,.25,1]},children:e})}var w=f;export{f as BlurFade,w as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/blur-fade/index.tsx"],"names":["cn","inputs","twMerge","clsx","BlurFade","children","className","delay","duration","blur","inView","inViewMargin","yOffset","variants","jsx","motion","blur_fade_default"],"mappings":"oIAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCYO,SAASG,CAAAA,CAAS,CACvB,QAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CAAAA,CAAQ,CAAA,CACR,QAAA,CAAAC,CAAAA,CAAW,EAAA,CACX,IAAA,CAAAC,CAAAA,CAAO,EAAA,CACP,MAAA,CAAAC,CAAAA,CAAS,KAAA,CACT,YAAA,CAAAC,CAAAA,CAAe,OAAA,CACf,OAAA,CAAAC,CAAAA,CAAU,CACZ,CAAA,CAAkB,CAChB,IAAMC,CAAAA,CAAW,CACf,MAAA,CAAQ,CACN,OAAA,CAAS,CAAA,CACT,MAAA,CAAQ,CAAA,KAAA,EAAQJ,CAAI,CAAA,GAAA,CAAA,CACpB,CAAA,CAAGG,CACL,CAAA,CACA,OAAA,CAAS,CACP,OAAA,CAAS,CAAA,CACT,MAAA,CAAQ,WAAA,CACR,CAAA,CAAG,CACL,CACF,CAAA,CAEA,OACEE,GAAAA,CAACC,MAAAA,CAAO,GAAA,CAAP,CACC,SAAA,CAAWf,CAAAA,CAAGM,CAAS,CAAA,CACvB,OAAA,CAAQ,QAAA,CACR,OAAA,CAASI,CAAAA,CAAS,MAAA,CAAY,SAAA,CAC9B,WAAA,CAAaA,CAAAA,CAAS,SAAA,CAAY,MAAA,CAClC,QAAA,CAAU,CAAE,IAAA,CAAM,IAAA,CAAM,MAAA,CAAQC,CAAa,CAAA,CAC7C,QAAA,CAAUE,CAAAA,CACV,UAAA,CAAY,CACV,QAAA,CAAAL,CAAAA,CACA,KAAA,CAAAD,CAAAA,CACA,IAAA,CAAM,CAAC,GAAA,CAAM,EAAA,CAAK,GAAA,CAAM,CAAC,CAC3B,CAAA,CAEC,QAAA,CAAAF,CAAAA,CACH,CAEJ,CAEA,IAAOW,CAAAA,CAAQZ","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { ReactNode } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface BlurFadeProps {\r\n children: ReactNode;\r\n className?: string;\r\n delay?: number;\r\n duration?: number;\r\n blur?: number;\r\n inView?: boolean;\r\n inViewMargin?: string;\r\n yOffset?: number;\r\n}\r\n\r\nexport function BlurFade({\r\n children,\r\n className,\r\n delay = 0,\r\n duration = 0.8,\r\n blur = 10,\r\n inView = false,\r\n inViewMargin = \"-50px\",\r\n yOffset = 6,\r\n}: BlurFadeProps) {\r\n const variants = {\r\n hidden: {\r\n opacity: 0,\r\n filter: `blur(${blur}px)`,\r\n y: yOffset,\r\n },\r\n visible: {\r\n opacity: 1,\r\n filter: \"blur(0px)\",\r\n y: 0,\r\n },\r\n };\r\n\r\n return (\r\n <motion.div\r\n className={cn(className)}\r\n initial=\"hidden\"\r\n animate={inView ? undefined : \"visible\"}\r\n whileInView={inView ? \"visible\" : undefined}\r\n viewport={{ once: true, margin: inViewMargin }}\r\n variants={variants}\r\n transition={{\r\n duration,\r\n delay,\r\n ease: [0.25, 0.1, 0.25, 1],\r\n }}\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default BlurFade;\r\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),jsxRuntime=require('react/jsx-runtime');function z({sparkColor:d="#000000",sparkSize:g=10,sparkRadius:b=15,sparkCount:p=8,duration:h=400,easing:v="ease-out",extraScale:y=1,children:x}){let a=react.useRef(null),m=react.useRef([]),R=react.useRef(null);react.useEffect(()=>{let e=a.current;if(!e)return;let n=e.parentElement;if(!n)return;let r,s=()=>{let{width:c,height:o}=n.getBoundingClientRect();(e.width!==c||e.height!==o)&&(e.width=c,e.height=o);},i=()=>{clearTimeout(r),r=setTimeout(s,100);},t=new ResizeObserver(i);return t.observe(n),s(),()=>{t.disconnect(),clearTimeout(r);}},[]);let T=react.useCallback(e=>{switch(v){case "linear":return e;case "ease-in":return e*e;case "ease-in-out":return e<.5?2*e*e:-1+(4-2*e)*e;default:return e*(2-e)}},[v]);return react.useEffect(()=>{let e=a.current;if(!e)return;let n=e.getContext("2d");if(!n)return;let r,s=i=>{R.current||(R.current=i),n.clearRect(0,0,e.width,e.height),m.current=m.current.filter(t=>{let c=i-t.startTime;if(c>=h)return false;let o=c/h,u=T(o),l=u*b*y,w=g*(1-u),k=t.x+l*Math.cos(t.angle),M=t.y+l*Math.sin(t.angle),S=t.x+(l+w)*Math.cos(t.angle),A=t.y+(l+w)*Math.sin(t.angle);return n.strokeStyle=d,n.lineWidth=2,n.beginPath(),n.moveTo(k,M),n.lineTo(S,A),n.stroke(),true}),r=requestAnimationFrame(s);};return r=requestAnimationFrame(s),()=>{cancelAnimationFrame(r);}},[d,g,b,h,T,y]),jsxRuntime.jsxs("div",{style:{position:"relative",width:"100%",height:"100%"},onClick:e=>{let n=a.current;if(!n)return;let r=n.getBoundingClientRect(),s=e.clientX-r.left,i=e.clientY-r.top,t=performance.now(),c=Array.from({length:p},(o,u)=>({x:s,y:i,angle:2*Math.PI*u/p,startTime:t}));m.current.push(...c);},children:[jsxRuntime.jsx("canvas",{ref:a,style:{width:"100%",height:"100%",display:"block",userSelect:"none",position:"absolute",top:0,left:0,pointerEvents:"none"}}),x]})}var L=z;exports.ClickSpark=z;exports.default=L;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/click-spark/index.tsx"],"names":["ClickSpark","sparkColor","sparkSize","sparkRadius","sparkCount","duration","easing","extraScale","children","canvasRef","useRef","sparksRef","startTimeRef","useEffect","canvas","parent","resizeTimeout","resizeCanvas","width","height","handleResize","ro","easeFunc","useCallback","t","ctx","animationId","draw","timestamp","spark","elapsed","progress","eased","distance","lineLength","x1","y1","x2","y2","jsxs","rect","x","y","now","newSparks","_","i","jsx","click_spark_default"],"mappings":"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","file":"index.js","sourcesContent":["\"use client\";\r\n\r\nimport { useRef, useEffect, useCallback, ReactNode } from \"react\";\r\n\r\ninterface ClickSparkProps {\r\n sparkColor?: string;\r\n sparkSize?: number;\r\n sparkRadius?: number;\r\n sparkCount?: number;\r\n duration?: number;\r\n easing?: string;\r\n extraScale?: number;\r\n children: ReactNode;\r\n}\r\n\r\nexport function ClickSpark({\r\n sparkColor = \"#000000\",\r\n sparkSize = 10,\r\n sparkRadius = 15,\r\n sparkCount = 8,\r\n duration = 400,\r\n easing = \"ease-out\",\r\n extraScale = 1.0,\r\n children,\r\n}: ClickSparkProps) {\r\n const canvasRef = useRef<HTMLCanvasElement>(null);\r\n const sparksRef = useRef<\r\n Array<{\r\n x: number;\r\n y: number;\r\n angle: number;\r\n startTime: number;\r\n }>\r\n >([]);\r\n const startTimeRef = useRef<number | null>(null);\r\n\r\n useEffect(() => {\r\n const canvas = canvasRef.current;\r\n if (!canvas) return;\r\n\r\n const parent = canvas.parentElement;\r\n if (!parent) return;\r\n\r\n let resizeTimeout: ReturnType<typeof setTimeout>;\r\n\r\n const resizeCanvas = () => {\r\n const { width, height } = parent.getBoundingClientRect();\r\n if (canvas.width !== width || canvas.height !== height) {\r\n canvas.width = width;\r\n canvas.height = height;\r\n }\r\n };\r\n\r\n const handleResize = () => {\r\n clearTimeout(resizeTimeout);\r\n resizeTimeout = setTimeout(resizeCanvas, 100);\r\n };\r\n\r\n const ro = new ResizeObserver(handleResize);\r\n ro.observe(parent);\r\n\r\n resizeCanvas();\r\n\r\n return () => {\r\n ro.disconnect();\r\n clearTimeout(resizeTimeout);\r\n };\r\n }, []);\r\n\r\n const easeFunc = useCallback(\r\n (t: number) => {\r\n switch (easing) {\r\n case \"linear\":\r\n return t;\r\n case \"ease-in\":\r\n return t * t;\r\n case \"ease-in-out\":\r\n return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\r\n default:\r\n return t * (2 - t);\r\n }\r\n },\r\n [easing]\r\n );\r\n\r\n useEffect(() => {\r\n const canvas = canvasRef.current;\r\n if (!canvas) return;\r\n const ctx = canvas.getContext(\"2d\");\r\n if (!ctx) return;\r\n\r\n let animationId: number;\r\n\r\n const draw = (timestamp: number) => {\r\n if (!startTimeRef.current) {\r\n startTimeRef.current = timestamp;\r\n }\r\n ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n\r\n sparksRef.current = sparksRef.current.filter((spark) => {\r\n const elapsed = timestamp - spark.startTime;\r\n if (elapsed >= duration) {\r\n return false;\r\n }\r\n\r\n const progress = elapsed / duration;\r\n const eased = easeFunc(progress);\r\n\r\n const distance = eased * sparkRadius * extraScale;\r\n const lineLength = sparkSize * (1 - eased);\r\n\r\n const x1 = spark.x + distance * Math.cos(spark.angle);\r\n const y1 = spark.y + distance * Math.sin(spark.angle);\r\n const x2 = spark.x + (distance + lineLength) * Math.cos(spark.angle);\r\n const y2 = spark.y + (distance + lineLength) * Math.sin(spark.angle);\r\n\r\n ctx.strokeStyle = sparkColor;\r\n ctx.lineWidth = 2;\r\n ctx.beginPath();\r\n ctx.moveTo(x1, y1);\r\n ctx.lineTo(x2, y2);\r\n ctx.stroke();\r\n\r\n return true;\r\n });\r\n\r\n animationId = requestAnimationFrame(draw);\r\n };\r\n\r\n animationId = requestAnimationFrame(draw);\r\n\r\n return () => {\r\n cancelAnimationFrame(animationId);\r\n };\r\n }, [sparkColor, sparkSize, sparkRadius, duration, easeFunc, extraScale]);\r\n\r\n const handleClick = (e: React.MouseEvent) => {\r\n const canvas = canvasRef.current;\r\n if (!canvas) return;\r\n const rect = canvas.getBoundingClientRect();\r\n const x = e.clientX - rect.left;\r\n const y = e.clientY - rect.top;\r\n\r\n const now = performance.now();\r\n const newSparks = Array.from({ length: sparkCount }, (_, i) => ({\r\n x,\r\n y,\r\n angle: (2 * Math.PI * i) / sparkCount,\r\n startTime: now,\r\n }));\r\n\r\n sparksRef.current.push(...newSparks);\r\n };\r\n\r\n return (\r\n <div\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n }}\r\n onClick={handleClick}\r\n >\r\n <canvas\r\n ref={canvasRef}\r\n style={{\r\n width: \"100%\",\r\n height: \"100%\",\r\n display: \"block\",\r\n userSelect: \"none\",\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n pointerEvents: \"none\",\r\n }}\r\n />\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport default ClickSpark;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {useRef,useEffect,useCallback}from'react';import {jsxs,jsx}from'react/jsx-runtime';function z({sparkColor:d="#000000",sparkSize:g=10,sparkRadius:b=15,sparkCount:p=8,duration:h=400,easing:v="ease-out",extraScale:y=1,children:x}){let a=useRef(null),m=useRef([]),R=useRef(null);useEffect(()=>{let e=a.current;if(!e)return;let n=e.parentElement;if(!n)return;let r,s=()=>{let{width:c,height:o}=n.getBoundingClientRect();(e.width!==c||e.height!==o)&&(e.width=c,e.height=o);},i=()=>{clearTimeout(r),r=setTimeout(s,100);},t=new ResizeObserver(i);return t.observe(n),s(),()=>{t.disconnect(),clearTimeout(r);}},[]);let T=useCallback(e=>{switch(v){case "linear":return e;case "ease-in":return e*e;case "ease-in-out":return e<.5?2*e*e:-1+(4-2*e)*e;default:return e*(2-e)}},[v]);return useEffect(()=>{let e=a.current;if(!e)return;let n=e.getContext("2d");if(!n)return;let r,s=i=>{R.current||(R.current=i),n.clearRect(0,0,e.width,e.height),m.current=m.current.filter(t=>{let c=i-t.startTime;if(c>=h)return false;let o=c/h,u=T(o),l=u*b*y,w=g*(1-u),k=t.x+l*Math.cos(t.angle),M=t.y+l*Math.sin(t.angle),S=t.x+(l+w)*Math.cos(t.angle),A=t.y+(l+w)*Math.sin(t.angle);return n.strokeStyle=d,n.lineWidth=2,n.beginPath(),n.moveTo(k,M),n.lineTo(S,A),n.stroke(),true}),r=requestAnimationFrame(s);};return r=requestAnimationFrame(s),()=>{cancelAnimationFrame(r);}},[d,g,b,h,T,y]),jsxs("div",{style:{position:"relative",width:"100%",height:"100%"},onClick:e=>{let n=a.current;if(!n)return;let r=n.getBoundingClientRect(),s=e.clientX-r.left,i=e.clientY-r.top,t=performance.now(),c=Array.from({length:p},(o,u)=>({x:s,y:i,angle:2*Math.PI*u/p,startTime:t}));m.current.push(...c);},children:[jsx("canvas",{ref:a,style:{width:"100%",height:"100%",display:"block",userSelect:"none",position:"absolute",top:0,left:0,pointerEvents:"none"}}),x]})}var L=z;export{z as ClickSpark,L as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/click-spark/index.tsx"],"names":["ClickSpark","sparkColor","sparkSize","sparkRadius","sparkCount","duration","easing","extraScale","children","canvasRef","useRef","sparksRef","startTimeRef","useEffect","canvas","parent","resizeTimeout","resizeCanvas","width","height","handleResize","ro","easeFunc","useCallback","t","ctx","animationId","draw","timestamp","spark","elapsed","progress","eased","distance","lineLength","x1","y1","x2","y2","jsxs","rect","x","y","now","newSparks","_","i","jsx","click_spark_default"],"mappings":"0FAeO,SAASA,CAAAA,CAAW,CACzB,UAAA,CAAAC,CAAAA,CAAa,SAAA,CACb,UAAAC,CAAAA,CAAY,EAAA,CACZ,WAAA,CAAAC,CAAAA,CAAc,EAAA,CACd,UAAA,CAAAC,EAAa,CAAA,CACb,QAAA,CAAAC,CAAAA,CAAW,GAAA,CACX,MAAA,CAAAC,CAAAA,CAAS,WACT,UAAA,CAAAC,CAAAA,CAAa,CAAA,CACb,QAAA,CAAAC,CACF,CAAA,CAAoB,CAClB,IAAMC,CAAAA,CAAYC,MAAAA,CAA0B,IAAI,CAAA,CAC1CC,CAAAA,CAAYD,OAOhB,EAAE,CAAA,CACEE,CAAAA,CAAeF,MAAAA,CAAsB,IAAI,EAE/CG,SAAAA,CAAU,IAAM,CACd,IAAMC,CAAAA,CAASL,CAAAA,CAAU,QACzB,GAAI,CAACK,CAAAA,CAAQ,OAEb,IAAMC,CAAAA,CAASD,EAAO,aAAA,CACtB,GAAI,CAACC,CAAAA,CAAQ,OAEb,IAAIC,EAEEC,CAAAA,CAAe,IAAM,CACzB,GAAM,CAAE,KAAA,CAAAC,EAAO,MAAA,CAAAC,CAAO,CAAA,CAAIJ,CAAAA,CAAO,qBAAA,EAAsB,CAAA,CACnDD,EAAO,KAAA,GAAUI,CAAAA,EAASJ,CAAAA,CAAO,MAAA,GAAWK,CAAAA,IAC9CL,CAAAA,CAAO,MAAQI,CAAAA,CACfJ,CAAAA,CAAO,MAAA,CAASK,CAAAA,EAEpB,CAAA,CAEMC,CAAAA,CAAe,IAAM,CACzB,YAAA,CAAaJ,CAAa,CAAA,CAC1BA,CAAAA,CAAgB,UAAA,CAAWC,EAAc,GAAG,EAC9C,CAAA,CAEMI,CAAAA,CAAK,IAAI,cAAA,CAAeD,CAAY,CAAA,CAC1C,OAAAC,CAAAA,CAAG,OAAA,CAAQN,CAAM,CAAA,CAEjBE,GAAa,CAEN,IAAM,CACXI,CAAAA,CAAG,UAAA,EAAW,CACd,aAAaL,CAAa,EAC5B,CACF,CAAA,CAAG,EAAE,EAEL,IAAMM,CAAAA,CAAWC,WAAAA,CACdC,CAAAA,EAAc,CACb,OAAQlB,GACN,KAAK,QAAA,CACH,OAAOkB,CAAAA,CACT,KAAK,UACH,OAAOA,CAAAA,CAAIA,CAAAA,CACb,KAAK,aAAA,CACH,OAAOA,EAAI,EAAA,CAAM,CAAA,CAAIA,CAAAA,CAAIA,CAAAA,CAAI,EAAA,CAAA,CAAM,CAAA,CAAI,EAAIA,CAAAA,EAAKA,CAAAA,CAClD,QACE,OAAOA,CAAAA,EAAK,CAAA,CAAIA,EACpB,CACF,CAAA,CACA,CAAClB,CAAM,CACT,CAAA,CAEA,OAAAO,SAAAA,CAAU,IAAM,CACd,IAAMC,CAAAA,CAASL,CAAAA,CAAU,QACzB,GAAI,CAACK,CAAAA,CAAQ,OACb,IAAMW,CAAAA,CAAMX,EAAO,UAAA,CAAW,IAAI,CAAA,CAClC,GAAI,CAACW,CAAAA,CAAK,OAEV,IAAIC,CAAAA,CAEEC,CAAAA,CAAQC,CAAAA,EAAsB,CAC7BhB,CAAAA,CAAa,UAChBA,CAAAA,CAAa,OAAA,CAAUgB,CAAAA,CAAAA,CAEzBH,CAAAA,CAAI,SAAA,CAAU,CAAA,CAAG,CAAA,CAAGX,CAAAA,CAAO,KAAA,CAAOA,CAAAA,CAAO,MAAM,CAAA,CAE/CH,CAAAA,CAAU,OAAA,CAAUA,EAAU,OAAA,CAAQ,MAAA,CAAQkB,CAAAA,EAAU,CACtD,IAAMC,CAAAA,CAAUF,EAAYC,CAAAA,CAAM,SAAA,CAClC,GAAIC,CAAAA,EAAWzB,CAAAA,CACb,OAAO,OAGT,IAAM0B,CAAAA,CAAWD,CAAAA,CAAUzB,CAAAA,CACrB2B,CAAAA,CAAQV,CAAAA,CAASS,CAAQ,CAAA,CAEzBE,CAAAA,CAAWD,CAAAA,CAAQ7B,CAAAA,CAAcI,CAAAA,CACjC2B,CAAAA,CAAahC,GAAa,CAAA,CAAI8B,CAAAA,CAAAA,CAE9BG,CAAAA,CAAKN,CAAAA,CAAM,CAAA,CAAII,CAAAA,CAAW,KAAK,GAAA,CAAIJ,CAAAA,CAAM,KAAK,CAAA,CAC9CO,CAAAA,CAAKP,CAAAA,CAAM,EAAII,CAAAA,CAAW,IAAA,CAAK,GAAA,CAAIJ,CAAAA,CAAM,KAAK,CAAA,CAC9CQ,EAAKR,CAAAA,CAAM,CAAA,CAAA,CAAKI,CAAAA,CAAWC,CAAAA,EAAc,IAAA,CAAK,GAAA,CAAIL,EAAM,KAAK,CAAA,CAC7DS,CAAAA,CAAKT,CAAAA,CAAM,CAAA,CAAA,CAAKI,CAAAA,CAAWC,GAAc,IAAA,CAAK,GAAA,CAAIL,CAAAA,CAAM,KAAK,CAAA,CAEnE,OAAAJ,EAAI,WAAA,CAAcxB,CAAAA,CAClBwB,CAAAA,CAAI,SAAA,CAAY,CAAA,CAChBA,CAAAA,CAAI,WAAU,CACdA,CAAAA,CAAI,MAAA,CAAOU,CAAAA,CAAIC,CAAE,CAAA,CACjBX,EAAI,MAAA,CAAOY,CAAAA,CAAIC,CAAE,CAAA,CACjBb,CAAAA,CAAI,MAAA,GAEG,IACT,CAAC,CAAA,CAEDC,CAAAA,CAAc,qBAAA,CAAsBC,CAAI,EAC1C,CAAA,CAEA,OAAAD,CAAAA,CAAc,qBAAA,CAAsBC,CAAI,CAAA,CAEjC,IAAM,CACX,oBAAA,CAAqBD,CAAW,EAClC,CACF,CAAA,CAAG,CAACzB,CAAAA,CAAYC,CAAAA,CAAWC,CAAAA,CAAaE,CAAAA,CAAUiB,CAAAA,CAAUf,CAAU,CAAC,CAAA,CAqBrEgC,IAAAA,CAAC,KAAA,CAAA,CACC,KAAA,CAAO,CACL,QAAA,CAAU,WACV,KAAA,CAAO,MAAA,CACP,MAAA,CAAQ,MACV,CAAA,CACA,OAAA,CAzBiB,GAAwB,CAC3C,IAAMzB,CAAAA,CAASL,CAAAA,CAAU,OAAA,CACzB,GAAI,CAACK,CAAAA,CAAQ,OACb,IAAM0B,CAAAA,CAAO1B,CAAAA,CAAO,qBAAA,GACd2B,CAAAA,CAAI,CAAA,CAAE,OAAA,CAAUD,CAAAA,CAAK,IAAA,CACrBE,CAAAA,CAAI,EAAE,OAAA,CAAUF,CAAAA,CAAK,GAAA,CAErBG,CAAAA,CAAM,WAAA,CAAY,GAAA,GAClBC,CAAAA,CAAY,KAAA,CAAM,IAAA,CAAK,CAAE,MAAA,CAAQxC,CAAW,EAAG,CAACyC,CAAAA,CAAGC,CAAAA,IAAO,CAC9D,CAAA,CAAAL,CAAAA,CACA,EAAAC,CAAAA,CACA,KAAA,CAAQ,CAAA,CAAI,IAAA,CAAK,EAAA,CAAKI,CAAAA,CAAK1C,EAC3B,SAAA,CAAWuC,CACb,CAAA,CAAE,CAAA,CAEFhC,CAAAA,CAAU,OAAA,CAAQ,KAAK,GAAGiC,CAAS,EACrC,CAAA,CAWI,QAAA,CAAA,CAAAG,GAAAA,CAAC,UACC,GAAA,CAAKtC,CAAAA,CACL,KAAA,CAAO,CACL,KAAA,CAAO,MAAA,CACP,OAAQ,MAAA,CACR,OAAA,CAAS,OAAA,CACT,UAAA,CAAY,MAAA,CACZ,QAAA,CAAU,WACV,GAAA,CAAK,CAAA,CACL,IAAA,CAAM,CAAA,CACN,aAAA,CAAe,MACjB,CAAA,CACF,CAAA,CACCD,CAAAA,CAAAA,CACH,CAEJ,CAEA,IAAOwC,CAAAA,CAAQhD","file":"index.mjs","sourcesContent":["\"use client\";\r\n\r\nimport { useRef, useEffect, useCallback, ReactNode } from \"react\";\r\n\r\ninterface ClickSparkProps {\r\n sparkColor?: string;\r\n sparkSize?: number;\r\n sparkRadius?: number;\r\n sparkCount?: number;\r\n duration?: number;\r\n easing?: string;\r\n extraScale?: number;\r\n children: ReactNode;\r\n}\r\n\r\nexport function ClickSpark({\r\n sparkColor = \"#000000\",\r\n sparkSize = 10,\r\n sparkRadius = 15,\r\n sparkCount = 8,\r\n duration = 400,\r\n easing = \"ease-out\",\r\n extraScale = 1.0,\r\n children,\r\n}: ClickSparkProps) {\r\n const canvasRef = useRef<HTMLCanvasElement>(null);\r\n const sparksRef = useRef<\r\n Array<{\r\n x: number;\r\n y: number;\r\n angle: number;\r\n startTime: number;\r\n }>\r\n >([]);\r\n const startTimeRef = useRef<number | null>(null);\r\n\r\n useEffect(() => {\r\n const canvas = canvasRef.current;\r\n if (!canvas) return;\r\n\r\n const parent = canvas.parentElement;\r\n if (!parent) return;\r\n\r\n let resizeTimeout: ReturnType<typeof setTimeout>;\r\n\r\n const resizeCanvas = () => {\r\n const { width, height } = parent.getBoundingClientRect();\r\n if (canvas.width !== width || canvas.height !== height) {\r\n canvas.width = width;\r\n canvas.height = height;\r\n }\r\n };\r\n\r\n const handleResize = () => {\r\n clearTimeout(resizeTimeout);\r\n resizeTimeout = setTimeout(resizeCanvas, 100);\r\n };\r\n\r\n const ro = new ResizeObserver(handleResize);\r\n ro.observe(parent);\r\n\r\n resizeCanvas();\r\n\r\n return () => {\r\n ro.disconnect();\r\n clearTimeout(resizeTimeout);\r\n };\r\n }, []);\r\n\r\n const easeFunc = useCallback(\r\n (t: number) => {\r\n switch (easing) {\r\n case \"linear\":\r\n return t;\r\n case \"ease-in\":\r\n return t * t;\r\n case \"ease-in-out\":\r\n return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\r\n default:\r\n return t * (2 - t);\r\n }\r\n },\r\n [easing]\r\n );\r\n\r\n useEffect(() => {\r\n const canvas = canvasRef.current;\r\n if (!canvas) return;\r\n const ctx = canvas.getContext(\"2d\");\r\n if (!ctx) return;\r\n\r\n let animationId: number;\r\n\r\n const draw = (timestamp: number) => {\r\n if (!startTimeRef.current) {\r\n startTimeRef.current = timestamp;\r\n }\r\n ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n\r\n sparksRef.current = sparksRef.current.filter((spark) => {\r\n const elapsed = timestamp - spark.startTime;\r\n if (elapsed >= duration) {\r\n return false;\r\n }\r\n\r\n const progress = elapsed / duration;\r\n const eased = easeFunc(progress);\r\n\r\n const distance = eased * sparkRadius * extraScale;\r\n const lineLength = sparkSize * (1 - eased);\r\n\r\n const x1 = spark.x + distance * Math.cos(spark.angle);\r\n const y1 = spark.y + distance * Math.sin(spark.angle);\r\n const x2 = spark.x + (distance + lineLength) * Math.cos(spark.angle);\r\n const y2 = spark.y + (distance + lineLength) * Math.sin(spark.angle);\r\n\r\n ctx.strokeStyle = sparkColor;\r\n ctx.lineWidth = 2;\r\n ctx.beginPath();\r\n ctx.moveTo(x1, y1);\r\n ctx.lineTo(x2, y2);\r\n ctx.stroke();\r\n\r\n return true;\r\n });\r\n\r\n animationId = requestAnimationFrame(draw);\r\n };\r\n\r\n animationId = requestAnimationFrame(draw);\r\n\r\n return () => {\r\n cancelAnimationFrame(animationId);\r\n };\r\n }, [sparkColor, sparkSize, sparkRadius, duration, easeFunc, extraScale]);\r\n\r\n const handleClick = (e: React.MouseEvent) => {\r\n const canvas = canvasRef.current;\r\n if (!canvas) return;\r\n const rect = canvas.getBoundingClientRect();\r\n const x = e.clientX - rect.left;\r\n const y = e.clientY - rect.top;\r\n\r\n const now = performance.now();\r\n const newSparks = Array.from({ length: sparkCount }, (_, i) => ({\r\n x,\r\n y,\r\n angle: (2 * Math.PI * i) / sparkCount,\r\n startTime: now,\r\n }));\r\n\r\n sparksRef.current.push(...newSparks);\r\n };\r\n\r\n return (\r\n <div\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n }}\r\n onClick={handleClick}\r\n >\r\n <canvas\r\n ref={canvasRef}\r\n style={{\r\n width: \"100%\",\r\n height: \"100%\",\r\n display: \"block\",\r\n userSelect: \"none\",\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n pointerEvents: \"none\",\r\n }}\r\n />\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport default ClickSpark;\r\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),framerMotion=require('framer-motion'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function o(...s){return tailwindMerge.twMerge(clsx.clsx(s))}function P({text:s,highlightWords:c=[],highlightClass:u="text-primary",trigger:e="auto",delay:m=0,staggerDelay:f=.05,className:p}){let[d,a]=react.useState(e==="auto"),i=react.useRef(null),h=s.split(" ");react.useEffect(()=>{if(e==="scroll"&&i.current){let t=new IntersectionObserver(([n])=>{n.isIntersecting&&a(true);},{threshold:.1});return t.observe(i.current),()=>t.disconnect()}},[e]);let l=()=>{(e==="hover"||e==="click")&&a(true);};return jsxRuntime.jsx("div",{ref:i,className:o("flex flex-wrap gap-2",p),onMouseEnter:e==="hover"?l:void 0,onClick:e==="click"?l:void 0,children:jsxRuntime.jsx(framerMotion.AnimatePresence,{children:h.map((t,n)=>{let y=c.includes(t.toLowerCase());return jsxRuntime.jsx(framerMotion.motion.span,{initial:{opacity:0,y:-50,rotateX:-90},animate:d?{opacity:1,y:0,rotateX:0}:{opacity:0,y:-50,rotateX:-90},transition:{duration:.5,delay:m+n*f,ease:[.25,.46,.45,.94]},className:o(y&&u),children:t},`${t}-${n}`)})})})}var N=P;exports.FallingText=P;exports.default=N;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/falling-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","FallingText","text","highlightWords","highlightClass","trigger","delay","staggerDelay","className","isVisible","setIsVisible","useState","containerRef","useRef","words","useEffect","observer","entry","handleInteraction","jsx","AnimatePresence","word","index","isHighlighted","motion","falling_text_default"],"mappings":"4OAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCWO,SAASG,CAAAA,CAAY,CAC1B,IAAA,CAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CAAiB,EAAC,CAClB,cAAA,CAAAC,CAAAA,CAAiB,cAAA,CACjB,OAAA,CAAAC,CAAAA,CAAU,MAAA,CACV,KAAA,CAAAC,CAAAA,CAAQ,CAAA,CACR,YAAA,CAAAC,CAAAA,CAAe,GAAA,CACf,SAAA,CAAAC,CACF,CAAA,CAAqB,CACnB,GAAM,CAACC,CAAAA,CAAWC,CAAY,CAAA,CAAIC,cAAAA,CAASN,CAAAA,GAAY,MAAM,CAAA,CACvDO,CAAAA,CAAeC,YAAAA,CAAuB,IAAI,CAAA,CAC1CC,CAAAA,CAAQZ,EAAK,KAAA,CAAM,GAAG,CAAA,CAE5Ba,eAAAA,CAAU,IAAM,CACd,GAAIV,CAAAA,GAAY,QAAA,EAAYO,CAAAA,CAAa,OAAA,CAAS,CAChD,IAAMI,CAAAA,CAAW,IAAI,oBAAA,CACnB,CAAC,CAACC,CAAK,CAAA,GAAM,CACPA,CAAAA,CAAM,cAAA,EACRP,CAAAA,CAAa,IAAI,EAErB,CAAA,CACA,CAAE,SAAA,CAAW,EAAI,CACnB,CAAA,CACA,OAAAM,CAAAA,CAAS,OAAA,CAAQJ,CAAAA,CAAa,OAAO,CAAA,CAC9B,IAAMI,CAAAA,CAAS,UAAA,EACxB,CACF,CAAA,CAAG,CAACX,CAAO,CAAC,CAAA,CAEZ,IAAMa,CAAAA,CAAoB,IAAM,CAAA,CAC1Bb,CAAAA,GAAY,OAAA,EAAWA,CAAAA,GAAY,OAAA,GACrCK,CAAAA,CAAa,IAAI,EAErB,CAAA,CAEA,OACES,cAAAA,CAAC,KAAA,CAAA,CACC,GAAA,CAAKP,CAAAA,CACL,SAAA,CAAWf,CAAAA,CAAG,sBAAA,CAAwBW,CAAS,CAAA,CAC/C,YAAA,CAAcH,CAAAA,GAAY,OAAA,CAAUa,CAAAA,CAAoB,MAAA,CACxD,QAASb,CAAAA,GAAY,OAAA,CAAUa,CAAAA,CAAoB,MAAA,CAEnD,QAAA,CAAAC,cAAAA,CAACC,4BAAAA,CAAA,CACE,QAAA,CAAAN,CAAAA,CAAM,GAAA,CAAI,CAACO,CAAAA,CAAMC,CAAAA,GAAU,CAC1B,IAAMC,CAAAA,CAAgBpB,CAAAA,CAAe,QAAA,CAASkB,CAAAA,CAAK,WAAA,EAAa,CAAA,CAChE,OACEF,cAAAA,CAACK,mBAAAA,CAAO,IAAA,CAAP,CAEC,OAAA,CAAS,CAAE,QAAS,CAAA,CAAG,CAAA,CAAG,GAAA,CAAK,OAAA,CAAS,GAAI,CAAA,CAC5C,OAAA,CACEf,CAAAA,CACI,CAAE,OAAA,CAAS,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,OAAA,CAAS,CAAE,CAAA,CAC/B,CAAE,OAAA,CAAS,CAAA,CAAG,CAAA,CAAG,GAAA,CAAK,OAAA,CAAS,GAAI,CAAA,CAEzC,UAAA,CAAY,CACV,QAAA,CAAU,EAAA,CACV,KAAA,CAAOH,CAAAA,CAAQgB,EAAQf,CAAAA,CACvB,IAAA,CAAM,CAAC,GAAA,CAAM,GAAA,CAAM,GAAA,CAAM,GAAI,CAC/B,CAAA,CACA,SAAA,CAAWV,CAAAA,CAAG0B,CAAAA,EAAiBnB,CAAc,CAAA,CAE5C,QAAA,CAAAiB,CAAAA,CAAAA,CAdI,CAAA,EAAGA,CAAI,CAAA,CAAA,EAAIC,CAAK,CAAA,CAevB,CAEJ,CAAC,CAAA,CACH,CAAA,CACF,CAEJ,CAEA,IAAOG,CAAAA,CAAQxB","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface FallingTextProps {\r\n text: string;\r\n highlightWords?: string[];\r\n highlightClass?: string;\r\n trigger?: \"auto\" | \"hover\" | \"click\" | \"scroll\";\r\n delay?: number;\r\n staggerDelay?: number;\r\n className?: string;\r\n}\r\n\r\nexport function FallingText({\r\n text,\r\n highlightWords = [],\r\n highlightClass = \"text-primary\",\r\n trigger = \"auto\",\r\n delay = 0,\r\n staggerDelay = 0.05,\r\n className,\r\n}: FallingTextProps) {\r\n const [isVisible, setIsVisible] = useState(trigger === \"auto\");\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const words = text.split(\" \");\r\n\r\n useEffect(() => {\r\n if (trigger === \"scroll\" && containerRef.current) {\r\n const observer = new IntersectionObserver(\r\n ([entry]) => {\r\n if (entry.isIntersecting) {\r\n setIsVisible(true);\r\n }\r\n },\r\n { threshold: 0.1 }\r\n );\r\n observer.observe(containerRef.current);\r\n return () => observer.disconnect();\r\n }\r\n }, [trigger]);\r\n\r\n const handleInteraction = () => {\r\n if (trigger === \"hover\" || trigger === \"click\") {\r\n setIsVisible(true);\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n ref={containerRef}\r\n className={cn(\"flex flex-wrap gap-2\", className)}\r\n onMouseEnter={trigger === \"hover\" ? handleInteraction : undefined}\r\n onClick={trigger === \"click\" ? handleInteraction : undefined}\r\n >\r\n <AnimatePresence>\r\n {words.map((word, index) => {\r\n const isHighlighted = highlightWords.includes(word.toLowerCase());\r\n return (\r\n <motion.span\r\n key={`${word}-${index}`}\r\n initial={{ opacity: 0, y: -50, rotateX: -90 }}\r\n animate={\r\n isVisible\r\n ? { opacity: 1, y: 0, rotateX: 0 }\r\n : { opacity: 0, y: -50, rotateX: -90 }\r\n }\r\n transition={{\r\n duration: 0.5,\r\n delay: delay + index * staggerDelay,\r\n ease: [0.25, 0.46, 0.45, 0.94],\r\n }}\r\n className={cn(isHighlighted && highlightClass)}\r\n >\r\n {word}\r\n </motion.span>\r\n );\r\n })}\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n\r\nexport default FallingText;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {useState,useRef,useEffect}from'react';import {AnimatePresence,motion}from'framer-motion';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx}from'react/jsx-runtime';function o(...s){return twMerge(clsx(s))}function P({text:s,highlightWords:c=[],highlightClass:u="text-primary",trigger:e="auto",delay:m=0,staggerDelay:f=.05,className:p}){let[d,a]=useState(e==="auto"),i=useRef(null),h=s.split(" ");useEffect(()=>{if(e==="scroll"&&i.current){let t=new IntersectionObserver(([n])=>{n.isIntersecting&&a(true);},{threshold:.1});return t.observe(i.current),()=>t.disconnect()}},[e]);let l=()=>{(e==="hover"||e==="click")&&a(true);};return jsx("div",{ref:i,className:o("flex flex-wrap gap-2",p),onMouseEnter:e==="hover"?l:void 0,onClick:e==="click"?l:void 0,children:jsx(AnimatePresence,{children:h.map((t,n)=>{let y=c.includes(t.toLowerCase());return jsx(motion.span,{initial:{opacity:0,y:-50,rotateX:-90},animate:d?{opacity:1,y:0,rotateX:0}:{opacity:0,y:-50,rotateX:-90},transition:{duration:.5,delay:m+n*f,ease:[.25,.46,.45,.94]},className:o(y&&u),children:t},`${t}-${n}`)})})})}var N=P;export{P as FallingText,N as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/falling-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","FallingText","text","highlightWords","highlightClass","trigger","delay","staggerDelay","className","isVisible","setIsVisible","useState","containerRef","useRef","words","useEffect","observer","entry","handleInteraction","jsx","AnimatePresence","word","index","isHighlighted","motion","falling_text_default"],"mappings":"kMAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCWO,SAASG,CAAAA,CAAY,CAC1B,IAAA,CAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CAAiB,EAAC,CAClB,cAAA,CAAAC,CAAAA,CAAiB,cAAA,CACjB,OAAA,CAAAC,CAAAA,CAAU,MAAA,CACV,KAAA,CAAAC,CAAAA,CAAQ,CAAA,CACR,YAAA,CAAAC,CAAAA,CAAe,GAAA,CACf,SAAA,CAAAC,CACF,CAAA,CAAqB,CACnB,GAAM,CAACC,CAAAA,CAAWC,CAAY,CAAA,CAAIC,QAAAA,CAASN,CAAAA,GAAY,MAAM,CAAA,CACvDO,CAAAA,CAAeC,MAAAA,CAAuB,IAAI,CAAA,CAC1CC,CAAAA,CAAQZ,EAAK,KAAA,CAAM,GAAG,CAAA,CAE5Ba,SAAAA,CAAU,IAAM,CACd,GAAIV,CAAAA,GAAY,QAAA,EAAYO,CAAAA,CAAa,OAAA,CAAS,CAChD,IAAMI,CAAAA,CAAW,IAAI,oBAAA,CACnB,CAAC,CAACC,CAAK,CAAA,GAAM,CACPA,CAAAA,CAAM,cAAA,EACRP,CAAAA,CAAa,IAAI,EAErB,CAAA,CACA,CAAE,SAAA,CAAW,EAAI,CACnB,CAAA,CACA,OAAAM,CAAAA,CAAS,OAAA,CAAQJ,CAAAA,CAAa,OAAO,CAAA,CAC9B,IAAMI,CAAAA,CAAS,UAAA,EACxB,CACF,CAAA,CAAG,CAACX,CAAO,CAAC,CAAA,CAEZ,IAAMa,CAAAA,CAAoB,IAAM,CAAA,CAC1Bb,CAAAA,GAAY,OAAA,EAAWA,CAAAA,GAAY,OAAA,GACrCK,CAAAA,CAAa,IAAI,EAErB,CAAA,CAEA,OACES,GAAAA,CAAC,KAAA,CAAA,CACC,GAAA,CAAKP,CAAAA,CACL,SAAA,CAAWf,CAAAA,CAAG,sBAAA,CAAwBW,CAAS,CAAA,CAC/C,YAAA,CAAcH,CAAAA,GAAY,OAAA,CAAUa,CAAAA,CAAoB,MAAA,CACxD,QAASb,CAAAA,GAAY,OAAA,CAAUa,CAAAA,CAAoB,MAAA,CAEnD,QAAA,CAAAC,GAAAA,CAACC,eAAAA,CAAA,CACE,QAAA,CAAAN,CAAAA,CAAM,GAAA,CAAI,CAACO,CAAAA,CAAMC,CAAAA,GAAU,CAC1B,IAAMC,CAAAA,CAAgBpB,CAAAA,CAAe,QAAA,CAASkB,CAAAA,CAAK,WAAA,EAAa,CAAA,CAChE,OACEF,GAAAA,CAACK,MAAAA,CAAO,IAAA,CAAP,CAEC,OAAA,CAAS,CAAE,QAAS,CAAA,CAAG,CAAA,CAAG,GAAA,CAAK,OAAA,CAAS,GAAI,CAAA,CAC5C,OAAA,CACEf,CAAAA,CACI,CAAE,OAAA,CAAS,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,OAAA,CAAS,CAAE,CAAA,CAC/B,CAAE,OAAA,CAAS,CAAA,CAAG,CAAA,CAAG,GAAA,CAAK,OAAA,CAAS,GAAI,CAAA,CAEzC,UAAA,CAAY,CACV,QAAA,CAAU,EAAA,CACV,KAAA,CAAOH,CAAAA,CAAQgB,EAAQf,CAAAA,CACvB,IAAA,CAAM,CAAC,GAAA,CAAM,GAAA,CAAM,GAAA,CAAM,GAAI,CAC/B,CAAA,CACA,SAAA,CAAWV,CAAAA,CAAG0B,CAAAA,EAAiBnB,CAAc,CAAA,CAE5C,QAAA,CAAAiB,CAAAA,CAAAA,CAdI,CAAA,EAAGA,CAAI,CAAA,CAAA,EAAIC,CAAK,CAAA,CAevB,CAEJ,CAAC,CAAA,CACH,CAAA,CACF,CAEJ,CAEA,IAAOG,CAAAA,CAAQxB","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface FallingTextProps {\r\n text: string;\r\n highlightWords?: string[];\r\n highlightClass?: string;\r\n trigger?: \"auto\" | \"hover\" | \"click\" | \"scroll\";\r\n delay?: number;\r\n staggerDelay?: number;\r\n className?: string;\r\n}\r\n\r\nexport function FallingText({\r\n text,\r\n highlightWords = [],\r\n highlightClass = \"text-primary\",\r\n trigger = \"auto\",\r\n delay = 0,\r\n staggerDelay = 0.05,\r\n className,\r\n}: FallingTextProps) {\r\n const [isVisible, setIsVisible] = useState(trigger === \"auto\");\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const words = text.split(\" \");\r\n\r\n useEffect(() => {\r\n if (trigger === \"scroll\" && containerRef.current) {\r\n const observer = new IntersectionObserver(\r\n ([entry]) => {\r\n if (entry.isIntersecting) {\r\n setIsVisible(true);\r\n }\r\n },\r\n { threshold: 0.1 }\r\n );\r\n observer.observe(containerRef.current);\r\n return () => observer.disconnect();\r\n }\r\n }, [trigger]);\r\n\r\n const handleInteraction = () => {\r\n if (trigger === \"hover\" || trigger === \"click\") {\r\n setIsVisible(true);\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n ref={containerRef}\r\n className={cn(\"flex flex-wrap gap-2\", className)}\r\n onMouseEnter={trigger === \"hover\" ? handleInteraction : undefined}\r\n onClick={trigger === \"click\" ? handleInteraction : undefined}\r\n >\r\n <AnimatePresence>\r\n {words.map((word, index) => {\r\n const isHighlighted = highlightWords.includes(word.toLowerCase());\r\n return (\r\n <motion.span\r\n key={`${word}-${index}`}\r\n initial={{ opacity: 0, y: -50, rotateX: -90 }}\r\n animate={\r\n isVisible\r\n ? { opacity: 1, y: 0, rotateX: 0 }\r\n : { opacity: 0, y: -50, rotateX: -90 }\r\n }\r\n transition={{\r\n duration: 0.5,\r\n delay: delay + index * staggerDelay,\r\n ease: [0.25, 0.46, 0.45, 0.94],\r\n }}\r\n className={cn(isHighlighted && highlightClass)}\r\n >\r\n {word}\r\n </motion.span>\r\n );\r\n })}\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n\r\nexport default FallingText;\r\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var framerMotion=require('framer-motion'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function t(...e){return tailwindMerge.twMerge(clsx.clsx(e))}function m({children:e,className:o,duration:r=5,distance:a=50}){return jsxRuntime.jsx(framerMotion.motion.div,{className:t("relative",o),animate:{y:[0,-a,0]},transition:{duration:r,repeat:1/0,ease:"easeInOut"},children:e})}var N=m;exports.FloatEffect=m;exports.default=N;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/float-effect/index.tsx"],"names":["cn","inputs","twMerge","clsx","FloatEffect","children","className","duration","distance","jsx","motion","float_effect_default"],"mappings":"qNAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCQO,SAASG,CAAAA,CAAY,CAC1B,QAAA,CAAAC,EACA,SAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CAAW,EACX,QAAA,CAAAC,CAAAA,CAAW,EACb,CAAA,CAAqB,CACnB,OACEC,cAAAA,CAACC,mBAAAA,CAAO,IAAP,CACC,SAAA,CAAWV,CAAAA,CAAG,UAAA,CAAYM,CAAS,CAAA,CACnC,OAAA,CAAS,CACP,CAAA,CAAG,CAAC,CAAA,CAAG,CAACE,CAAAA,CAAU,CAAC,CACrB,CAAA,CACA,UAAA,CAAY,CACV,QAAA,CAAAD,EACA,MAAA,CAAQ,CAAA,CAAA,CAAA,CACR,IAAA,CAAM,WACR,EAEC,QAAA,CAAAF,CAAAA,CACH,CAEJ,KAEOM,CAAAA,CAAQP","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { ReactNode } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface FloatEffectProps {\r\n children?: ReactNode;\r\n className?: string;\r\n duration?: number;\r\n distance?: number;\r\n}\r\n\r\nexport function FloatEffect({\r\n children,\r\n className,\r\n duration = 5,\r\n distance = 50,\r\n}: FloatEffectProps) {\r\n return (\r\n <motion.div\r\n className={cn(\"relative\", className)}\r\n animate={{\r\n y: [0, -distance, 0],\r\n }}\r\n transition={{\r\n duration,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n }}\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default FloatEffect;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {motion}from'framer-motion';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx}from'react/jsx-runtime';function t(...e){return twMerge(clsx(e))}function m({children:e,className:o,duration:r=5,distance:a=50}){return jsx(motion.div,{className:t("relative",o),animate:{y:[0,-a,0]},transition:{duration:r,repeat:1/0,ease:"easeInOut"},children:e})}var N=m;export{m as FloatEffect,N as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/float-effect/index.tsx"],"names":["cn","inputs","twMerge","clsx","FloatEffect","children","className","duration","distance","jsx","motion","float_effect_default"],"mappings":"oIAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCQO,SAASG,CAAAA,CAAY,CAC1B,QAAA,CAAAC,EACA,SAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CAAW,EACX,QAAA,CAAAC,CAAAA,CAAW,EACb,CAAA,CAAqB,CACnB,OACEC,GAAAA,CAACC,MAAAA,CAAO,IAAP,CACC,SAAA,CAAWV,CAAAA,CAAG,UAAA,CAAYM,CAAS,CAAA,CACnC,OAAA,CAAS,CACP,CAAA,CAAG,CAAC,CAAA,CAAG,CAACE,CAAAA,CAAU,CAAC,CACrB,CAAA,CACA,UAAA,CAAY,CACV,QAAA,CAAAD,EACA,MAAA,CAAQ,CAAA,CAAA,CAAA,CACR,IAAA,CAAM,WACR,EAEC,QAAA,CAAAF,CAAAA,CACH,CAEJ,KAEOM,CAAAA,CAAQP","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { ReactNode } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface FloatEffectProps {\r\n children?: ReactNode;\r\n className?: string;\r\n duration?: number;\r\n distance?: number;\r\n}\r\n\r\nexport function FloatEffect({\r\n children,\r\n className,\r\n duration = 5,\r\n distance = 50,\r\n}: FloatEffectProps) {\r\n return (\r\n <motion.div\r\n className={cn(\"relative\", className)}\r\n animate={{\r\n y: [0, -distance, 0],\r\n }}\r\n transition={{\r\n duration,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n }}\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default FloatEffect;\r\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var framerMotion=require('framer-motion'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function t(...r){return tailwindMerge.twMerge(clsx.clsx(r))}function c({children:r,className:a,glowColor:e="rgba(255, 255, 255, 0.4)",duration:n=3}){return jsxRuntime.jsx(framerMotion.motion.div,{className:t("relative p-8 rounded-3xl border-2 border-white/30",a),style:{background:"radial-gradient(circle at center, rgba(255,255,255,0.05) 0%, transparent 70%)"},animate:{boxShadow:[`0 0 40px ${e}, 0 0 80px ${e.replace("0.4","0.2")}`,`0 0 80px ${e.replace("0.4","0.8")}, 0 0 160px ${e.replace("0.4","0.5")}`,`0 0 40px ${e}, 0 0 80px ${e.replace("0.4","0.2")}`],borderColor:["rgba(255, 255, 255, 0.3)","rgba(255, 255, 255, 0.6)","rgba(255, 255, 255, 0.3)"]},transition:{duration:n,repeat:1/0,ease:"easeInOut"},children:r})}var b=c;exports.GlowEffect=c;exports.default=b;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/glow-effect/index.tsx"],"names":["cn","inputs","twMerge","clsx","GlowEffect","children","className","glowColor","duration","jsx","motion","glow_effect_default"],"mappings":"qNAGO,SAASA,KAAMC,CAAAA,CAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCQO,SAASG,CAAAA,CAAW,CACzB,QAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CAAY,2BACZ,QAAA,CAAAC,CAAAA,CAAW,CACb,CAAA,CAAoB,CAClB,OACEC,eAACC,mBAAAA,CAAO,GAAA,CAAP,CACC,SAAA,CAAWV,CAAAA,CACT,mDAAA,CACAM,CACF,CAAA,CACA,KAAA,CAAO,CACL,UAAA,CACE,+EACJ,CAAA,CACA,OAAA,CAAS,CACP,SAAA,CAAW,CACT,CAAA,SAAA,EAAYC,CAAS,CAAA,WAAA,EAAcA,CAAAA,CAAU,QAAQ,KAAA,CAAO,KAAK,CAAC,CAAA,CAAA,CAClE,CAAA,SAAA,EAAYA,CAAAA,CAAU,QAAQ,KAAA,CAAO,KAAK,CAAC,CAAA,YAAA,EAAeA,CAAAA,CAAU,OAAA,CAAQ,KAAA,CAAO,KAAK,CAAC,CAAA,CAAA,CACzF,CAAA,SAAA,EAAYA,CAAS,CAAA,WAAA,EAAcA,CAAAA,CAAU,QAAQ,KAAA,CAAO,KAAK,CAAC,CAAA,CACpE,CAAA,CACA,WAAA,CAAa,CACX,0BAAA,CACA,0BAAA,CACA,0BACF,CACF,CAAA,CACA,UAAA,CAAY,CACV,QAAA,CAAAC,CAAAA,CACA,MAAA,CAAQ,CAAA,CAAA,CAAA,CACR,IAAA,CAAM,WACR,CAAA,CAEC,QAAA,CAAAH,CAAAA,CACH,CAEJ,CAEA,IAAOM,CAAAA,CAAQP","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { ReactNode } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GlowEffectProps {\r\n children?: ReactNode;\r\n className?: string;\r\n glowColor?: string;\r\n duration?: number;\r\n}\r\n\r\nexport function GlowEffect({\r\n children,\r\n className,\r\n glowColor = \"rgba(255, 255, 255, 0.4)\",\r\n duration = 3,\r\n}: GlowEffectProps) {\r\n return (\r\n <motion.div\r\n className={cn(\r\n \"relative p-8 rounded-3xl border-2 border-white/30\",\r\n className\r\n )}\r\n style={{\r\n background:\r\n \"radial-gradient(circle at center, rgba(255,255,255,0.05) 0%, transparent 70%)\",\r\n }}\r\n animate={{\r\n boxShadow: [\r\n `0 0 40px ${glowColor}, 0 0 80px ${glowColor.replace(\"0.4\", \"0.2\")}`,\r\n `0 0 80px ${glowColor.replace(\"0.4\", \"0.8\")}, 0 0 160px ${glowColor.replace(\"0.4\", \"0.5\")}`,\r\n `0 0 40px ${glowColor}, 0 0 80px ${glowColor.replace(\"0.4\", \"0.2\")}`,\r\n ],\r\n borderColor: [\r\n \"rgba(255, 255, 255, 0.3)\",\r\n \"rgba(255, 255, 255, 0.6)\",\r\n \"rgba(255, 255, 255, 0.3)\",\r\n ],\r\n }}\r\n transition={{\r\n duration,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n }}\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default GlowEffect;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {motion}from'framer-motion';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx}from'react/jsx-runtime';function t(...r){return twMerge(clsx(r))}function c({children:r,className:a,glowColor:e="rgba(255, 255, 255, 0.4)",duration:n=3}){return jsx(motion.div,{className:t("relative p-8 rounded-3xl border-2 border-white/30",a),style:{background:"radial-gradient(circle at center, rgba(255,255,255,0.05) 0%, transparent 70%)"},animate:{boxShadow:[`0 0 40px ${e}, 0 0 80px ${e.replace("0.4","0.2")}`,`0 0 80px ${e.replace("0.4","0.8")}, 0 0 160px ${e.replace("0.4","0.5")}`,`0 0 40px ${e}, 0 0 80px ${e.replace("0.4","0.2")}`],borderColor:["rgba(255, 255, 255, 0.3)","rgba(255, 255, 255, 0.6)","rgba(255, 255, 255, 0.3)"]},transition:{duration:n,repeat:1/0,ease:"easeInOut"},children:r})}var b=c;export{c as GlowEffect,b as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/glow-effect/index.tsx"],"names":["cn","inputs","twMerge","clsx","GlowEffect","children","className","glowColor","duration","jsx","motion","glow_effect_default"],"mappings":"oIAGO,SAASA,KAAMC,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCQO,SAASG,CAAAA,CAAW,CACzB,QAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CAAY,2BACZ,QAAA,CAAAC,CAAAA,CAAW,CACb,CAAA,CAAoB,CAClB,OACEC,IAACC,MAAAA,CAAO,GAAA,CAAP,CACC,SAAA,CAAWV,CAAAA,CACT,mDAAA,CACAM,CACF,CAAA,CACA,KAAA,CAAO,CACL,UAAA,CACE,+EACJ,CAAA,CACA,OAAA,CAAS,CACP,SAAA,CAAW,CACT,CAAA,SAAA,EAAYC,CAAS,CAAA,WAAA,EAAcA,CAAAA,CAAU,QAAQ,KAAA,CAAO,KAAK,CAAC,CAAA,CAAA,CAClE,CAAA,SAAA,EAAYA,CAAAA,CAAU,QAAQ,KAAA,CAAO,KAAK,CAAC,CAAA,YAAA,EAAeA,CAAAA,CAAU,OAAA,CAAQ,KAAA,CAAO,KAAK,CAAC,CAAA,CAAA,CACzF,CAAA,SAAA,EAAYA,CAAS,CAAA,WAAA,EAAcA,CAAAA,CAAU,QAAQ,KAAA,CAAO,KAAK,CAAC,CAAA,CACpE,CAAA,CACA,WAAA,CAAa,CACX,0BAAA,CACA,0BAAA,CACA,0BACF,CACF,CAAA,CACA,UAAA,CAAY,CACV,QAAA,CAAAC,CAAAA,CACA,MAAA,CAAQ,CAAA,CAAA,CAAA,CACR,IAAA,CAAM,WACR,CAAA,CAEC,QAAA,CAAAH,CAAAA,CACH,CAEJ,CAEA,IAAOM,CAAAA,CAAQP","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { ReactNode } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GlowEffectProps {\r\n children?: ReactNode;\r\n className?: string;\r\n glowColor?: string;\r\n duration?: number;\r\n}\r\n\r\nexport function GlowEffect({\r\n children,\r\n className,\r\n glowColor = \"rgba(255, 255, 255, 0.4)\",\r\n duration = 3,\r\n}: GlowEffectProps) {\r\n return (\r\n <motion.div\r\n className={cn(\r\n \"relative p-8 rounded-3xl border-2 border-white/30\",\r\n className\r\n )}\r\n style={{\r\n background:\r\n \"radial-gradient(circle at center, rgba(255,255,255,0.05) 0%, transparent 70%)\",\r\n }}\r\n animate={{\r\n boxShadow: [\r\n `0 0 40px ${glowColor}, 0 0 80px ${glowColor.replace(\"0.4\", \"0.2\")}`,\r\n `0 0 80px ${glowColor.replace(\"0.4\", \"0.8\")}, 0 0 160px ${glowColor.replace(\"0.4\", \"0.5\")}`,\r\n `0 0 40px ${glowColor}, 0 0 80px ${glowColor.replace(\"0.4\", \"0.2\")}`,\r\n ],\r\n borderColor: [\r\n \"rgba(255, 255, 255, 0.3)\",\r\n \"rgba(255, 255, 255, 0.6)\",\r\n \"rgba(255, 255, 255, 0.3)\",\r\n ],\r\n }}\r\n transition={{\r\n duration,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n }}\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default GlowEffect;\r\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function t(...l){return tailwindMerge.twMerge(clsx.clsx(l))}function p({className:l,onChange:r}){let[e,n]=react.useState(false),s=()=>{let o=!e;n(o),r?.(o);};return jsxRuntime.jsxs("label",{className:t("relative w-10 h-8 bg-transparent cursor-pointer block",l),htmlFor:"burger-basic",children:[jsxRuntime.jsx("input",{type:"checkbox",id:"burger-basic",className:"hidden",checked:e,onChange:s}),jsxRuntime.jsx("span",{className:t("block absolute h-1 w-full bg-black dark:bg-white rounded-lg opacity-100 left-0 transition-all duration-250 ease-in-out","top-0 origin-left",e&&"rotate-45 top-0 left-1.5")}),jsxRuntime.jsx("span",{className:t("block absolute h-1 w-full bg-black dark:bg-white rounded-lg opacity-100 left-0 transition-all duration-250 ease-in-out","top-1/2 -translate-y-1/2 origin-left",e&&"w-0 opacity-0")}),jsxRuntime.jsx("span",{className:t("block absolute h-1 w-full bg-black dark:bg-white rounded-lg opacity-100 left-0 transition-all duration-250 ease-in-out","top-full -translate-y-full origin-left",e&&"-rotate-45 top-7 left-1.5")})]})}var k=p;exports.HamburgerBasic=p;exports.default=k;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/hamburger-basic/index.tsx"],"names":["cn","inputs","twMerge","clsx","HamburgerBasic","className","onChange","isOpen","setIsOpen","useState","handleToggle","newState","jsxs","jsx","hamburger_basic_default"],"mappings":"sMAGO,SAASA,CAAAA,CAAAA,GAAMC,EAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCKO,SAASG,CAAAA,CAAe,CAAE,SAAA,CAAAC,CAAAA,CAAW,QAAA,CAAAC,CAAS,CAAA,CAAwB,CAC3E,GAAM,CAACC,CAAAA,CAAQC,CAAS,CAAA,CAAIC,cAAAA,CAAS,KAAK,CAAA,CAEpCC,CAAAA,CAAe,IAAM,CACzB,IAAMC,CAAAA,CAAW,CAACJ,CAAAA,CAClBC,CAAAA,CAAUG,CAAQ,CAAA,CAClBL,CAAAA,GAAWK,CAAQ,EACrB,EAEA,OACEC,eAAAA,CAAC,OAAA,CAAA,CACC,SAAA,CAAWZ,CAAAA,CACT,uDAAA,CACAK,CACF,CAAA,CACA,OAAA,CAAQ,cAAA,CAER,QAAA,CAAA,CAAAQ,cAAAA,CAAC,OAAA,CAAA,CACC,IAAA,CAAK,WACL,EAAA,CAAG,cAAA,CACH,SAAA,CAAU,QAAA,CACV,OAAA,CAASN,CAAAA,CACT,QAAA,CAAUG,CAAAA,CACZ,CAAA,CACAG,cAAAA,CAAC,MAAA,CAAA,CACC,SAAA,CAAWb,CAAAA,CACT,wHAAA,CACA,oBACAO,CAAAA,EAAU,0BACZ,CAAA,CACF,CAAA,CACAM,cAAAA,CAAC,MAAA,CAAA,CACC,SAAA,CAAWb,CAAAA,CACT,wHAAA,CACA,sCAAA,CACAO,CAAAA,EAAU,eACZ,CAAA,CACF,CAAA,CACAM,eAAC,MAAA,CAAA,CACC,SAAA,CAAWb,CAAAA,CACT,wHAAA,CACA,wCAAA,CACAO,CAAAA,EAAU,2BACZ,CAAA,CACF,CAAA,CAAA,CACF,CAEJ,CAEA,IAAOO,CAAAA,CAAQV","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface HamburgerBasicProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function HamburgerBasic({ className, onChange }: HamburgerBasicProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const handleToggle = () => {\r\n const newState = !isOpen;\r\n setIsOpen(newState);\r\n onChange?.(newState);\r\n };\r\n\r\n return (\r\n <label\r\n className={cn(\r\n \"relative w-10 h-8 bg-transparent cursor-pointer block\",\r\n className\r\n )}\r\n htmlFor=\"burger-basic\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n id=\"burger-basic\"\r\n className=\"hidden\"\r\n checked={isOpen}\r\n onChange={handleToggle}\r\n />\r\n <span\r\n className={cn(\r\n \"block absolute h-1 w-full bg-black dark:bg-white rounded-lg opacity-100 left-0 transition-all duration-250 ease-in-out\",\r\n \"top-0 origin-left\",\r\n isOpen && \"rotate-45 top-0 left-1.5\"\r\n )}\r\n />\r\n <span\r\n className={cn(\r\n \"block absolute h-1 w-full bg-black dark:bg-white rounded-lg opacity-100 left-0 transition-all duration-250 ease-in-out\",\r\n \"top-1/2 -translate-y-1/2 origin-left\",\r\n isOpen && \"w-0 opacity-0\"\r\n )}\r\n />\r\n <span\r\n className={cn(\r\n \"block absolute h-1 w-full bg-black dark:bg-white rounded-lg opacity-100 left-0 transition-all duration-250 ease-in-out\",\r\n \"top-full -translate-y-full origin-left\",\r\n isOpen && \"-rotate-45 top-7 left-1.5\"\r\n )}\r\n />\r\n </label>\r\n );\r\n}\r\n\r\nexport default HamburgerBasic;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {useState}from'react';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsxs,jsx}from'react/jsx-runtime';function t(...l){return twMerge(clsx(l))}function p({className:l,onChange:r}){let[e,n]=useState(false),s=()=>{let o=!e;n(o),r?.(o);};return jsxs("label",{className:t("relative w-10 h-8 bg-transparent cursor-pointer block",l),htmlFor:"burger-basic",children:[jsx("input",{type:"checkbox",id:"burger-basic",className:"hidden",checked:e,onChange:s}),jsx("span",{className:t("block absolute h-1 w-full bg-black dark:bg-white rounded-lg opacity-100 left-0 transition-all duration-250 ease-in-out","top-0 origin-left",e&&"rotate-45 top-0 left-1.5")}),jsx("span",{className:t("block absolute h-1 w-full bg-black dark:bg-white rounded-lg opacity-100 left-0 transition-all duration-250 ease-in-out","top-1/2 -translate-y-1/2 origin-left",e&&"w-0 opacity-0")}),jsx("span",{className:t("block absolute h-1 w-full bg-black dark:bg-white rounded-lg opacity-100 left-0 transition-all duration-250 ease-in-out","top-full -translate-y-full origin-left",e&&"-rotate-45 top-7 left-1.5")})]})}var k=p;export{p as HamburgerBasic,k as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/hamburger-basic/index.tsx"],"names":["cn","inputs","twMerge","clsx","HamburgerBasic","className","onChange","isOpen","setIsOpen","useState","handleToggle","newState","jsxs","jsx","hamburger_basic_default"],"mappings":"mIAGO,SAASA,CAAAA,CAAAA,GAAMC,EAAsB,CAC1C,OAAOC,OAAAA,CAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCKO,SAASG,CAAAA,CAAe,CAAE,SAAA,CAAAC,CAAAA,CAAW,QAAA,CAAAC,CAAS,CAAA,CAAwB,CAC3E,GAAM,CAACC,CAAAA,CAAQC,CAAS,CAAA,CAAIC,QAAAA,CAAS,KAAK,CAAA,CAEpCC,CAAAA,CAAe,IAAM,CACzB,IAAMC,CAAAA,CAAW,CAACJ,CAAAA,CAClBC,CAAAA,CAAUG,CAAQ,CAAA,CAClBL,CAAAA,GAAWK,CAAQ,EACrB,EAEA,OACEC,IAAAA,CAAC,OAAA,CAAA,CACC,SAAA,CAAWZ,CAAAA,CACT,uDAAA,CACAK,CACF,CAAA,CACA,OAAA,CAAQ,cAAA,CAER,QAAA,CAAA,CAAAQ,GAAAA,CAAC,OAAA,CAAA,CACC,IAAA,CAAK,WACL,EAAA,CAAG,cAAA,CACH,SAAA,CAAU,QAAA,CACV,OAAA,CAASN,CAAAA,CACT,QAAA,CAAUG,CAAAA,CACZ,CAAA,CACAG,GAAAA,CAAC,MAAA,CAAA,CACC,SAAA,CAAWb,CAAAA,CACT,wHAAA,CACA,oBACAO,CAAAA,EAAU,0BACZ,CAAA,CACF,CAAA,CACAM,GAAAA,CAAC,MAAA,CAAA,CACC,SAAA,CAAWb,CAAAA,CACT,wHAAA,CACA,sCAAA,CACAO,CAAAA,EAAU,eACZ,CAAA,CACF,CAAA,CACAM,IAAC,MAAA,CAAA,CACC,SAAA,CAAWb,CAAAA,CACT,wHAAA,CACA,wCAAA,CACAO,CAAAA,EAAU,2BACZ,CAAA,CACF,CAAA,CAAA,CACF,CAEJ,CAEA,IAAOO,CAAAA,CAAQV","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface HamburgerBasicProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function HamburgerBasic({ className, onChange }: HamburgerBasicProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const handleToggle = () => {\r\n const newState = !isOpen;\r\n setIsOpen(newState);\r\n onChange?.(newState);\r\n };\r\n\r\n return (\r\n <label\r\n className={cn(\r\n \"relative w-10 h-8 bg-transparent cursor-pointer block\",\r\n className\r\n )}\r\n htmlFor=\"burger-basic\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n id=\"burger-basic\"\r\n className=\"hidden\"\r\n checked={isOpen}\r\n onChange={handleToggle}\r\n />\r\n <span\r\n className={cn(\r\n \"block absolute h-1 w-full bg-black dark:bg-white rounded-lg opacity-100 left-0 transition-all duration-250 ease-in-out\",\r\n \"top-0 origin-left\",\r\n isOpen && \"rotate-45 top-0 left-1.5\"\r\n )}\r\n />\r\n <span\r\n className={cn(\r\n \"block absolute h-1 w-full bg-black dark:bg-white rounded-lg opacity-100 left-0 transition-all duration-250 ease-in-out\",\r\n \"top-1/2 -translate-y-1/2 origin-left\",\r\n isOpen && \"w-0 opacity-0\"\r\n )}\r\n />\r\n <span\r\n className={cn(\r\n \"block absolute h-1 w-full bg-black dark:bg-white rounded-lg opacity-100 left-0 transition-all duration-250 ease-in-out\",\r\n \"top-full -translate-y-full origin-left\",\r\n isOpen && \"-rotate-45 top-7 left-1.5\"\r\n )}\r\n />\r\n </label>\r\n );\r\n}\r\n\r\nexport default HamburgerBasic;\r\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function a(...t){return tailwindMerge.twMerge(clsx.clsx(t))}function u({className:t,onChange:l}){let[e,o]=react.useState(false),s=()=>{let r=!e;o(r),l?.(r);};return jsxRuntime.jsxs("div",{className:a("inline-block",t),children:[jsxRuntime.jsx("input",{type:"checkbox",id:"checkbox-spin",className:"hidden",checked:e,onChange:s}),jsxRuntime.jsxs("label",{htmlFor:"checkbox-spin",className:a("relative w-10 h-10 cursor-pointer flex flex-col items-center justify-center gap-2.5 transition-all duration-500",e&&"rotate-180"),children:[jsxRuntime.jsx("div",{className:a("w-full h-1 bg-black dark:bg-white rounded-md transition-all duration-500 origin-center",e&&"scale-x-[0.6] translate-y-[1px]")}),jsxRuntime.jsx("div",{className:a("w-full h-1 bg-black dark:bg-white rounded-md transition-all duration-500 origin-center",e&&"rotate-90 scale-x-[1.2]")}),jsxRuntime.jsx("div",{className:a("w-full h-1 bg-black dark:bg-white rounded-md transition-all duration-500 origin-center",e&&"scale-x-[0.6] -translate-y-[1px]")})]})]})}var x=u;exports.HamburgerSpin=u;exports.default=x;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/hamburger-spin/index.tsx"],"names":["cn","inputs","twMerge","clsx","HamburgerSpin","className","onChange","isOpen","setIsOpen","useState","handleToggle","newState","jsxs","jsx","hamburger_spin_default"],"mappings":"sMAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCKO,SAASG,CAAAA,CAAc,CAAE,SAAA,CAAAC,CAAAA,CAAW,QAAA,CAAAC,CAAS,CAAA,CAAuB,CACzE,GAAM,CAACC,CAAAA,CAAQC,CAAS,CAAA,CAAIC,cAAAA,CAAS,KAAK,CAAA,CAEpCC,CAAAA,CAAe,IAAM,CACzB,IAAMC,CAAAA,CAAW,CAACJ,CAAAA,CAClBC,CAAAA,CAAUG,CAAQ,CAAA,CAClBL,CAAAA,GAAWK,CAAQ,EACrB,CAAA,CAEA,OACEC,eAAAA,CAAC,KAAA,CAAA,CAAI,UAAWZ,CAAAA,CAAG,cAAA,CAAgBK,CAAS,CAAA,CAC1C,QAAA,CAAA,CAAAQ,cAAAA,CAAC,OAAA,CAAA,CACC,IAAA,CAAK,UAAA,CACL,EAAA,CAAG,eAAA,CACH,SAAA,CAAU,QAAA,CACV,OAAA,CAASN,CAAAA,CACT,QAAA,CAAUG,CAAAA,CACZ,CAAA,CACAE,eAAAA,CAAC,OAAA,CAAA,CACC,OAAA,CAAQ,eAAA,CACR,SAAA,CAAWZ,CAAAA,CACT,iHAAA,CACAO,CAAAA,EAAU,YACZ,CAAA,CAEA,QAAA,CAAA,CAAAM,cAAAA,CAAC,KAAA,CAAA,CACC,SAAA,CAAWb,CAAAA,CACT,wFAAA,CACAO,CAAAA,EAAU,iCACZ,CAAA,CACF,CAAA,CACAM,cAAAA,CAAC,KAAA,CAAA,CACC,SAAA,CAAWb,CAAAA,CACT,wFAAA,CACAO,CAAAA,EAAU,yBACZ,CAAA,CACF,CAAA,CACAM,cAAAA,CAAC,KAAA,CAAA,CACC,SAAA,CAAWb,CAAAA,CACT,wFAAA,CACAO,CAAAA,EAAU,kCACZ,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAEJ,CAEA,IAAOO,CAAAA,CAAQV","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface HamburgerSpinProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function HamburgerSpin({ className, onChange }: HamburgerSpinProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const handleToggle = () => {\r\n const newState = !isOpen;\r\n setIsOpen(newState);\r\n onChange?.(newState);\r\n };\r\n\r\n return (\r\n <div className={cn(\"inline-block\", className)}>\r\n <input\r\n type=\"checkbox\"\r\n id=\"checkbox-spin\"\r\n className=\"hidden\"\r\n checked={isOpen}\r\n onChange={handleToggle}\r\n />\r\n <label\r\n htmlFor=\"checkbox-spin\"\r\n className={cn(\r\n \"relative w-10 h-10 cursor-pointer flex flex-col items-center justify-center gap-2.5 transition-all duration-500\",\r\n isOpen && \"rotate-180\"\r\n )}\r\n >\r\n <div\r\n className={cn(\r\n \"w-full h-1 bg-black dark:bg-white rounded-md transition-all duration-500 origin-center\",\r\n isOpen && \"scale-x-[0.6] translate-y-[1px]\"\r\n )}\r\n />\r\n <div\r\n className={cn(\r\n \"w-full h-1 bg-black dark:bg-white rounded-md transition-all duration-500 origin-center\",\r\n isOpen && \"rotate-90 scale-x-[1.2]\"\r\n )}\r\n />\r\n <div\r\n className={cn(\r\n \"w-full h-1 bg-black dark:bg-white rounded-md transition-all duration-500 origin-center\",\r\n isOpen && \"scale-x-[0.6] -translate-y-[1px]\"\r\n )}\r\n />\r\n </label>\r\n </div>\r\n );\r\n}\r\n\r\nexport default HamburgerSpin;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {useState}from'react';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsxs,jsx}from'react/jsx-runtime';function a(...t){return twMerge(clsx(t))}function u({className:t,onChange:l}){let[e,o]=useState(false),s=()=>{let r=!e;o(r),l?.(r);};return jsxs("div",{className:a("inline-block",t),children:[jsx("input",{type:"checkbox",id:"checkbox-spin",className:"hidden",checked:e,onChange:s}),jsxs("label",{htmlFor:"checkbox-spin",className:a("relative w-10 h-10 cursor-pointer flex flex-col items-center justify-center gap-2.5 transition-all duration-500",e&&"rotate-180"),children:[jsx("div",{className:a("w-full h-1 bg-black dark:bg-white rounded-md transition-all duration-500 origin-center",e&&"scale-x-[0.6] translate-y-[1px]")}),jsx("div",{className:a("w-full h-1 bg-black dark:bg-white rounded-md transition-all duration-500 origin-center",e&&"rotate-90 scale-x-[1.2]")}),jsx("div",{className:a("w-full h-1 bg-black dark:bg-white rounded-md transition-all duration-500 origin-center",e&&"scale-x-[0.6] -translate-y-[1px]")})]})]})}var x=u;export{u as HamburgerSpin,x as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/hamburger-spin/index.tsx"],"names":["cn","inputs","twMerge","clsx","HamburgerSpin","className","onChange","isOpen","setIsOpen","useState","handleToggle","newState","jsxs","jsx","hamburger_spin_default"],"mappings":"mIAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCKO,SAASG,CAAAA,CAAc,CAAE,SAAA,CAAAC,CAAAA,CAAW,QAAA,CAAAC,CAAS,CAAA,CAAuB,CACzE,GAAM,CAACC,CAAAA,CAAQC,CAAS,CAAA,CAAIC,QAAAA,CAAS,KAAK,CAAA,CAEpCC,CAAAA,CAAe,IAAM,CACzB,IAAMC,CAAAA,CAAW,CAACJ,CAAAA,CAClBC,CAAAA,CAAUG,CAAQ,CAAA,CAClBL,CAAAA,GAAWK,CAAQ,EACrB,CAAA,CAEA,OACEC,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAWZ,CAAAA,CAAG,cAAA,CAAgBK,CAAS,CAAA,CAC1C,QAAA,CAAA,CAAAQ,GAAAA,CAAC,OAAA,CAAA,CACC,IAAA,CAAK,UAAA,CACL,EAAA,CAAG,eAAA,CACH,SAAA,CAAU,QAAA,CACV,OAAA,CAASN,CAAAA,CACT,QAAA,CAAUG,CAAAA,CACZ,CAAA,CACAE,IAAAA,CAAC,OAAA,CAAA,CACC,OAAA,CAAQ,eAAA,CACR,SAAA,CAAWZ,CAAAA,CACT,iHAAA,CACAO,CAAAA,EAAU,YACZ,CAAA,CAEA,QAAA,CAAA,CAAAM,GAAAA,CAAC,KAAA,CAAA,CACC,SAAA,CAAWb,CAAAA,CACT,wFAAA,CACAO,CAAAA,EAAU,iCACZ,CAAA,CACF,CAAA,CACAM,GAAAA,CAAC,KAAA,CAAA,CACC,SAAA,CAAWb,CAAAA,CACT,wFAAA,CACAO,CAAAA,EAAU,yBACZ,CAAA,CACF,CAAA,CACAM,GAAAA,CAAC,KAAA,CAAA,CACC,SAAA,CAAWb,CAAAA,CACT,wFAAA,CACAO,CAAAA,EAAU,kCACZ,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAEJ,CAEA,IAAOO,CAAAA,CAAQV","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface HamburgerSpinProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function HamburgerSpin({ className, onChange }: HamburgerSpinProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const handleToggle = () => {\r\n const newState = !isOpen;\r\n setIsOpen(newState);\r\n onChange?.(newState);\r\n };\r\n\r\n return (\r\n <div className={cn(\"inline-block\", className)}>\r\n <input\r\n type=\"checkbox\"\r\n id=\"checkbox-spin\"\r\n className=\"hidden\"\r\n checked={isOpen}\r\n onChange={handleToggle}\r\n />\r\n <label\r\n htmlFor=\"checkbox-spin\"\r\n className={cn(\r\n \"relative w-10 h-10 cursor-pointer flex flex-col items-center justify-center gap-2.5 transition-all duration-500\",\r\n isOpen && \"rotate-180\"\r\n )}\r\n >\r\n <div\r\n className={cn(\r\n \"w-full h-1 bg-black dark:bg-white rounded-md transition-all duration-500 origin-center\",\r\n isOpen && \"scale-x-[0.6] translate-y-[1px]\"\r\n )}\r\n />\r\n <div\r\n className={cn(\r\n \"w-full h-1 bg-black dark:bg-white rounded-md transition-all duration-500 origin-center\",\r\n isOpen && \"rotate-90 scale-x-[1.2]\"\r\n )}\r\n />\r\n <div\r\n className={cn(\r\n \"w-full h-1 bg-black dark:bg-white rounded-md transition-all duration-500 origin-center\",\r\n isOpen && \"scale-x-[0.6] -translate-y-[1px]\"\r\n )}\r\n />\r\n </label>\r\n </div>\r\n );\r\n}\r\n\r\nexport default HamburgerSpin;\r\n"]}