bynana-ui 1.4.0 → 1.5.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 (73) hide show
  1. package/dist/animated-circular-progress/index.js +2 -0
  2. package/dist/animated-circular-progress/index.js.map +1 -0
  3. package/dist/animated-circular-progress/index.mjs +2 -0
  4. package/dist/animated-circular-progress/index.mjs.map +1 -0
  5. package/dist/contribution-graph/index.js +2 -0
  6. package/dist/contribution-graph/index.js.map +1 -0
  7. package/dist/contribution-graph/index.mjs +2 -0
  8. package/dist/contribution-graph/index.mjs.map +1 -0
  9. package/dist/elastic-slider/index.js +2 -0
  10. package/dist/elastic-slider/index.js.map +1 -0
  11. package/dist/elastic-slider/index.mjs +2 -0
  12. package/dist/elastic-slider/index.mjs.map +1 -0
  13. package/dist/hamburger-3d/index.js +2 -0
  14. package/dist/hamburger-3d/index.js.map +1 -0
  15. package/dist/hamburger-3d/index.mjs +2 -0
  16. package/dist/hamburger-3d/index.mjs.map +1 -0
  17. package/dist/hamburger-elastic/index.js +2 -0
  18. package/dist/hamburger-elastic/index.js.map +1 -0
  19. package/dist/hamburger-elastic/index.mjs +2 -0
  20. package/dist/hamburger-elastic/index.mjs.map +1 -0
  21. package/dist/hamburger-morph/index.js +2 -0
  22. package/dist/hamburger-morph/index.js.map +1 -0
  23. package/dist/hamburger-morph/index.mjs +2 -0
  24. package/dist/hamburger-morph/index.mjs.map +1 -0
  25. package/dist/hamburger-spring/index.js +2 -0
  26. package/dist/hamburger-spring/index.js.map +1 -0
  27. package/dist/hamburger-spring/index.mjs +2 -0
  28. package/dist/hamburger-spring/index.mjs.map +1 -0
  29. package/dist/hamburger-stagger/index.js +2 -0
  30. package/dist/hamburger-stagger/index.js.map +1 -0
  31. package/dist/hamburger-stagger/index.mjs +2 -0
  32. package/dist/hamburger-stagger/index.mjs.map +1 -0
  33. package/dist/hamburger-wave/index.js +2 -0
  34. package/dist/hamburger-wave/index.js.map +1 -0
  35. package/dist/hamburger-wave/index.mjs +2 -0
  36. package/dist/hamburger-wave/index.mjs.map +1 -0
  37. package/dist/index.js +13 -11
  38. package/dist/index.js.map +1 -1
  39. package/dist/index.mjs +13 -11
  40. package/dist/index.mjs.map +1 -1
  41. package/dist/loader/index.js +2 -0
  42. package/dist/loader/index.js.map +1 -0
  43. package/dist/loader/index.mjs +2 -0
  44. package/dist/loader/index.mjs.map +1 -0
  45. package/dist/loading-invert/index.js +4 -0
  46. package/dist/loading-invert/index.js.map +1 -0
  47. package/dist/loading-invert/index.mjs +4 -0
  48. package/dist/loading-invert/index.mjs.map +1 -0
  49. package/dist/scroll-velocity/index.js +2 -0
  50. package/dist/scroll-velocity/index.js.map +1 -0
  51. package/dist/scroll-velocity/index.mjs +2 -0
  52. package/dist/scroll-velocity/index.mjs.map +1 -0
  53. package/dist/shimmer-effect/index.js +2 -0
  54. package/dist/shimmer-effect/index.js.map +1 -0
  55. package/dist/shimmer-effect/index.mjs +2 -0
  56. package/dist/shimmer-effect/index.mjs.map +1 -0
  57. package/dist/social-button/index.js +2 -0
  58. package/dist/social-button/index.js.map +1 -0
  59. package/dist/social-button/index.mjs +2 -0
  60. package/dist/social-button/index.mjs.map +1 -0
  61. package/dist/text-cursor/index.js +2 -0
  62. package/dist/text-cursor/index.js.map +1 -0
  63. package/dist/text-cursor/index.mjs +2 -0
  64. package/dist/text-cursor/index.mjs.map +1 -0
  65. package/dist/theme-toggler/index.js +2 -0
  66. package/dist/theme-toggler/index.js.map +1 -0
  67. package/dist/theme-toggler/index.mjs +2 -0
  68. package/dist/theme-toggler/index.mjs.map +1 -0
  69. package/dist/v0-button/index.js +2 -0
  70. package/dist/v0-button/index.js.map +1 -0
  71. package/dist/v0-button/index.mjs +2 -0
  72. package/dist/v0-button/index.mjs.map +1 -0
  73. package/package.json +19 -2
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),framerMotion=require('framer-motion'),jsxRuntime=require('react/jsx-runtime');function A(...s){return s.filter(Boolean).join(" ")}function j({max:s=100,min:i=0,value:d=0,gaugePrimaryColor:h="#a1a1aa",gaugeSecondaryColor:P="#27272a",className:M,size:e=200,strokeWidth:a=8,showValue:V=true,duration:b=2,autoAnimate:u=true}){let[p,x]=react.useState(u?i:d),n=(e-a)/2,o=2*Math.PI*n,y=framerMotion.useMotionValue(p),v=framerMotion.useSpring(y,{damping:30,stiffness:100}),k=framerMotion.useTransform(v,[i,s],[0,o]),I=framerMotion.useTransform(v,t=>Math.round(t));return react.useEffect(()=>{if(u){let t=setInterval(()=>{x(l=>{let c=l+1;return c>s?i:c});},b*10);return ()=>clearInterval(t)}else x(d);},[u,d,s,i,b]),react.useEffect(()=>{y.set(p);},[p,y]),jsxRuntime.jsxs("div",{className:A("relative flex items-center justify-center",M),style:{width:e,height:e},children:[jsxRuntime.jsxs("svg",{width:e,height:e,className:"transform -rotate-90",children:[jsxRuntime.jsx("circle",{cx:e/2,cy:e/2,r:n,stroke:P,strokeWidth:a,fill:"none",className:"opacity-20"}),jsxRuntime.jsx(framerMotion.motion.circle,{cx:e/2,cy:e/2,r:n,stroke:h,strokeWidth:a,fill:"none",strokeLinecap:"round",strokeDasharray:o,strokeDashoffset:framerMotion.useTransform(k,t=>o-t),className:"transition-all duration-300 ease-in-out",style:{filter:"drop-shadow(0 0 6px rgba(59, 130, 246, 0.4))"}}),jsxRuntime.jsx(framerMotion.motion.circle,{cx:e/2,cy:e/2,r:n,stroke:h,strokeWidth:a/2,fill:"none",strokeLinecap:"round",strokeDasharray:o,strokeDashoffset:framerMotion.useTransform(k,t=>o-t),className:"opacity-50 blur-sm"})]}),V&&jsxRuntime.jsxs("div",{className:"absolute inset-0 flex flex-col items-center justify-center",children:[jsxRuntime.jsx(framerMotion.motion.span,{className:"text-3xl font-semibold text-zinc-900 dark:text-zinc-100",style:{fontSize:e/8},children:I}),jsxRuntime.jsx("span",{className:"text-sm text-zinc-500",style:{fontSize:e/16},children:u?"Auto":"%"})]}),jsxRuntime.jsx("div",{className:"absolute inset-0",children:[...Array(8)].map((t,l)=>{let c=l*45-90,w=e/2+(n+a)*Math.cos(c*Math.PI/180),C=e/2+(n+a)*Math.sin(c*Math.PI/180);return jsxRuntime.jsx(framerMotion.motion.div,{className:"absolute w-1 h-1 bg-zinc-500 rounded-full",style:{left:w-2,top:C-2},animate:{opacity:[.3,1,.3],scale:[.8,1.2,.8]},transition:{duration:2,repeat:1/0,delay:l*.2}},l)})})]})}var T=j;exports.AnimatedCircularProgressBar=j;exports.default=T;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/animated-circular-progress/index.tsx"],"names":["cn","classes","AnimatedCircularProgressBar","max","min","value","gaugePrimaryColor","gaugeSecondaryColor","className","size","strokeWidth","showValue","duration","autoAnimate","currentValue","setCurrentValue","useState","radius","circumference","motionValue","useMotionValue","springValue","useSpring","strokeDasharray","useTransform","displayValue","latest","useEffect","interval","prev","next","jsxs","jsx","motion","_","i","angle","x","y","animated_circular_progress_default"],"mappings":"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","file":"index.js","sourcesContent":["\"use client\";\r\n\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { motion, useMotionValue, useSpring, useTransform } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface AnimatedCircularProgressBarProps {\r\n max?: number;\r\n min?: number;\r\n value?: number;\r\n gaugePrimaryColor?: string;\r\n gaugeSecondaryColor?: string;\r\n className?: string;\r\n size?: number;\r\n strokeWidth?: number;\r\n showValue?: boolean;\r\n duration?: number;\r\n autoAnimate?: boolean;\r\n}\r\n\r\nexport function AnimatedCircularProgressBar({\r\n max = 100,\r\n min = 0,\r\n value = 0,\r\n gaugePrimaryColor = \"#a1a1aa\",\r\n gaugeSecondaryColor = \"#27272a\",\r\n className,\r\n size = 200,\r\n strokeWidth = 8,\r\n showValue = true,\r\n duration = 2,\r\n autoAnimate = true,\r\n}: AnimatedCircularProgressBarProps) {\r\n const [currentValue, setCurrentValue] = useState(autoAnimate ? min : value);\r\n \r\n const radius = (size - strokeWidth) / 2;\r\n const circumference = 2 * Math.PI * radius;\r\n \r\n const motionValue = useMotionValue(currentValue);\r\n const springValue = useSpring(motionValue, {\r\n damping: 30,\r\n stiffness: 100,\r\n });\r\n \r\n const strokeDasharray = useTransform(\r\n springValue,\r\n [min, max],\r\n [0, circumference]\r\n );\r\n \r\n const displayValue = useTransform(springValue, (latest) => Math.round(latest));\r\n\r\n useEffect(() => {\r\n if (autoAnimate) {\r\n const interval = setInterval(() => {\r\n setCurrentValue(prev => {\r\n const next = prev + 1;\r\n if (next > max) {\r\n return min;\r\n }\r\n return next;\r\n });\r\n }, duration * 10);\r\n\r\n return () => clearInterval(interval);\r\n } else {\r\n setCurrentValue(value);\r\n }\r\n }, [autoAnimate, value, max, min, duration]);\r\n\r\n useEffect(() => {\r\n motionValue.set(currentValue);\r\n }, [currentValue, motionValue]);\r\n\r\n return (\r\n <div \r\n className={cn(\"relative flex items-center justify-center\", className)}\r\n style={{ width: size, height: size }}\r\n >\r\n <svg\r\n width={size}\r\n height={size}\r\n className=\"transform -rotate-90\"\r\n >\r\n <circle\r\n cx={size / 2}\r\n cy={size / 2}\r\n r={radius}\r\n stroke={gaugeSecondaryColor}\r\n strokeWidth={strokeWidth}\r\n fill=\"none\"\r\n className=\"opacity-20\"\r\n />\r\n \r\n <motion.circle\r\n cx={size / 2}\r\n cy={size / 2}\r\n r={radius}\r\n stroke={gaugePrimaryColor}\r\n strokeWidth={strokeWidth}\r\n fill=\"none\"\r\n strokeLinecap=\"round\"\r\n strokeDasharray={circumference}\r\n strokeDashoffset={useTransform(strokeDasharray, (latest) => circumference - latest)}\r\n className=\"transition-all duration-300 ease-in-out\"\r\n style={{\r\n filter: \"drop-shadow(0 0 6px rgba(59, 130, 246, 0.4))\",\r\n }}\r\n />\r\n \r\n <motion.circle\r\n cx={size / 2}\r\n cy={size / 2}\r\n r={radius}\r\n stroke={gaugePrimaryColor}\r\n strokeWidth={strokeWidth / 2}\r\n fill=\"none\"\r\n strokeLinecap=\"round\"\r\n strokeDasharray={circumference}\r\n strokeDashoffset={useTransform(strokeDasharray, (latest) => circumference - latest)}\r\n className=\"opacity-50 blur-sm\"\r\n />\r\n </svg>\r\n \r\n {showValue && (\r\n <div className=\"absolute inset-0 flex flex-col items-center justify-center\">\r\n <motion.span \r\n className=\"text-3xl font-semibold text-zinc-900 dark:text-zinc-100\"\r\n style={{ fontSize: size / 8 }}\r\n >\r\n {displayValue}\r\n </motion.span>\r\n <span \r\n className=\"text-sm text-zinc-500\"\r\n style={{ fontSize: size / 16 }}\r\n >\r\n {autoAnimate ? \"Auto\" : \"%\"}\r\n </span>\r\n </div>\r\n )}\r\n \r\n <div className=\"absolute inset-0\">\r\n {[...Array(8)].map((_, i) => {\r\n const angle = (i * 45) - 90;\r\n const x = size / 2 + (radius + strokeWidth) * Math.cos((angle * Math.PI) / 180);\r\n const y = size / 2 + (radius + strokeWidth) * Math.sin((angle * Math.PI) / 180);\r\n \r\n return (\r\n <motion.div\r\n key={i}\r\n className=\"absolute w-1 h-1 bg-zinc-500 rounded-full\"\r\n style={{\r\n left: x - 2,\r\n top: y - 2,\r\n }}\r\n animate={{\r\n opacity: [0.3, 1, 0.3],\r\n scale: [0.8, 1.2, 0.8],\r\n }}\r\n transition={{\r\n duration: 2,\r\n repeat: Infinity,\r\n delay: i * 0.2,\r\n }}\r\n />\r\n );\r\n })}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default AnimatedCircularProgressBar;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {useState,useEffect}from'react';import {useMotionValue,useSpring,useTransform,motion}from'framer-motion';import {jsxs,jsx}from'react/jsx-runtime';function A(...s){return s.filter(Boolean).join(" ")}function j({max:s=100,min:i=0,value:d=0,gaugePrimaryColor:h="#a1a1aa",gaugeSecondaryColor:P="#27272a",className:M,size:e=200,strokeWidth:a=8,showValue:V=true,duration:b=2,autoAnimate:u=true}){let[p,x]=useState(u?i:d),n=(e-a)/2,o=2*Math.PI*n,y=useMotionValue(p),v=useSpring(y,{damping:30,stiffness:100}),k=useTransform(v,[i,s],[0,o]),I=useTransform(v,t=>Math.round(t));return useEffect(()=>{if(u){let t=setInterval(()=>{x(l=>{let c=l+1;return c>s?i:c});},b*10);return ()=>clearInterval(t)}else x(d);},[u,d,s,i,b]),useEffect(()=>{y.set(p);},[p,y]),jsxs("div",{className:A("relative flex items-center justify-center",M),style:{width:e,height:e},children:[jsxs("svg",{width:e,height:e,className:"transform -rotate-90",children:[jsx("circle",{cx:e/2,cy:e/2,r:n,stroke:P,strokeWidth:a,fill:"none",className:"opacity-20"}),jsx(motion.circle,{cx:e/2,cy:e/2,r:n,stroke:h,strokeWidth:a,fill:"none",strokeLinecap:"round",strokeDasharray:o,strokeDashoffset:useTransform(k,t=>o-t),className:"transition-all duration-300 ease-in-out",style:{filter:"drop-shadow(0 0 6px rgba(59, 130, 246, 0.4))"}}),jsx(motion.circle,{cx:e/2,cy:e/2,r:n,stroke:h,strokeWidth:a/2,fill:"none",strokeLinecap:"round",strokeDasharray:o,strokeDashoffset:useTransform(k,t=>o-t),className:"opacity-50 blur-sm"})]}),V&&jsxs("div",{className:"absolute inset-0 flex flex-col items-center justify-center",children:[jsx(motion.span,{className:"text-3xl font-semibold text-zinc-900 dark:text-zinc-100",style:{fontSize:e/8},children:I}),jsx("span",{className:"text-sm text-zinc-500",style:{fontSize:e/16},children:u?"Auto":"%"})]}),jsx("div",{className:"absolute inset-0",children:[...Array(8)].map((t,l)=>{let c=l*45-90,w=e/2+(n+a)*Math.cos(c*Math.PI/180),C=e/2+(n+a)*Math.sin(c*Math.PI/180);return jsx(motion.div,{className:"absolute w-1 h-1 bg-zinc-500 rounded-full",style:{left:w-2,top:C-2},animate:{opacity:[.3,1,.3],scale:[.8,1.2,.8]},transition:{duration:2,repeat:1/0,delay:l*.2}},l)})})]})}var T=j;export{j as AnimatedCircularProgressBar,T as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/animated-circular-progress/index.tsx"],"names":["cn","classes","AnimatedCircularProgressBar","max","min","value","gaugePrimaryColor","gaugeSecondaryColor","className","size","strokeWidth","showValue","duration","autoAnimate","currentValue","setCurrentValue","useState","radius","circumference","motionValue","useMotionValue","springValue","useSpring","strokeDasharray","useTransform","displayValue","latest","useEffect","interval","prev","next","jsxs","jsx","motion","_","i","angle","x","y","animated_circular_progress_default"],"mappings":"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","file":"index.mjs","sourcesContent":["\"use client\";\r\n\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { motion, useMotionValue, useSpring, useTransform } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface AnimatedCircularProgressBarProps {\r\n max?: number;\r\n min?: number;\r\n value?: number;\r\n gaugePrimaryColor?: string;\r\n gaugeSecondaryColor?: string;\r\n className?: string;\r\n size?: number;\r\n strokeWidth?: number;\r\n showValue?: boolean;\r\n duration?: number;\r\n autoAnimate?: boolean;\r\n}\r\n\r\nexport function AnimatedCircularProgressBar({\r\n max = 100,\r\n min = 0,\r\n value = 0,\r\n gaugePrimaryColor = \"#a1a1aa\",\r\n gaugeSecondaryColor = \"#27272a\",\r\n className,\r\n size = 200,\r\n strokeWidth = 8,\r\n showValue = true,\r\n duration = 2,\r\n autoAnimate = true,\r\n}: AnimatedCircularProgressBarProps) {\r\n const [currentValue, setCurrentValue] = useState(autoAnimate ? min : value);\r\n \r\n const radius = (size - strokeWidth) / 2;\r\n const circumference = 2 * Math.PI * radius;\r\n \r\n const motionValue = useMotionValue(currentValue);\r\n const springValue = useSpring(motionValue, {\r\n damping: 30,\r\n stiffness: 100,\r\n });\r\n \r\n const strokeDasharray = useTransform(\r\n springValue,\r\n [min, max],\r\n [0, circumference]\r\n );\r\n \r\n const displayValue = useTransform(springValue, (latest) => Math.round(latest));\r\n\r\n useEffect(() => {\r\n if (autoAnimate) {\r\n const interval = setInterval(() => {\r\n setCurrentValue(prev => {\r\n const next = prev + 1;\r\n if (next > max) {\r\n return min;\r\n }\r\n return next;\r\n });\r\n }, duration * 10);\r\n\r\n return () => clearInterval(interval);\r\n } else {\r\n setCurrentValue(value);\r\n }\r\n }, [autoAnimate, value, max, min, duration]);\r\n\r\n useEffect(() => {\r\n motionValue.set(currentValue);\r\n }, [currentValue, motionValue]);\r\n\r\n return (\r\n <div \r\n className={cn(\"relative flex items-center justify-center\", className)}\r\n style={{ width: size, height: size }}\r\n >\r\n <svg\r\n width={size}\r\n height={size}\r\n className=\"transform -rotate-90\"\r\n >\r\n <circle\r\n cx={size / 2}\r\n cy={size / 2}\r\n r={radius}\r\n stroke={gaugeSecondaryColor}\r\n strokeWidth={strokeWidth}\r\n fill=\"none\"\r\n className=\"opacity-20\"\r\n />\r\n \r\n <motion.circle\r\n cx={size / 2}\r\n cy={size / 2}\r\n r={radius}\r\n stroke={gaugePrimaryColor}\r\n strokeWidth={strokeWidth}\r\n fill=\"none\"\r\n strokeLinecap=\"round\"\r\n strokeDasharray={circumference}\r\n strokeDashoffset={useTransform(strokeDasharray, (latest) => circumference - latest)}\r\n className=\"transition-all duration-300 ease-in-out\"\r\n style={{\r\n filter: \"drop-shadow(0 0 6px rgba(59, 130, 246, 0.4))\",\r\n }}\r\n />\r\n \r\n <motion.circle\r\n cx={size / 2}\r\n cy={size / 2}\r\n r={radius}\r\n stroke={gaugePrimaryColor}\r\n strokeWidth={strokeWidth / 2}\r\n fill=\"none\"\r\n strokeLinecap=\"round\"\r\n strokeDasharray={circumference}\r\n strokeDashoffset={useTransform(strokeDasharray, (latest) => circumference - latest)}\r\n className=\"opacity-50 blur-sm\"\r\n />\r\n </svg>\r\n \r\n {showValue && (\r\n <div className=\"absolute inset-0 flex flex-col items-center justify-center\">\r\n <motion.span \r\n className=\"text-3xl font-semibold text-zinc-900 dark:text-zinc-100\"\r\n style={{ fontSize: size / 8 }}\r\n >\r\n {displayValue}\r\n </motion.span>\r\n <span \r\n className=\"text-sm text-zinc-500\"\r\n style={{ fontSize: size / 16 }}\r\n >\r\n {autoAnimate ? \"Auto\" : \"%\"}\r\n </span>\r\n </div>\r\n )}\r\n \r\n <div className=\"absolute inset-0\">\r\n {[...Array(8)].map((_, i) => {\r\n const angle = (i * 45) - 90;\r\n const x = size / 2 + (radius + strokeWidth) * Math.cos((angle * Math.PI) / 180);\r\n const y = size / 2 + (radius + strokeWidth) * Math.sin((angle * Math.PI) / 180);\r\n \r\n return (\r\n <motion.div\r\n key={i}\r\n className=\"absolute w-1 h-1 bg-zinc-500 rounded-full\"\r\n style={{\r\n left: x - 2,\r\n top: y - 2,\r\n }}\r\n animate={{\r\n opacity: [0.3, 1, 0.3],\r\n scale: [0.8, 1.2, 0.8],\r\n }}\r\n transition={{\r\n duration: 2,\r\n repeat: Infinity,\r\n delay: i * 0.2,\r\n }}\r\n />\r\n );\r\n })}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default AnimatedCircularProgressBar;\r\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),framerMotion=require('framer-motion'),jsxRuntime=require('react/jsx-runtime');function m(...r){return r.filter(Boolean).join(" ")}function p({data:r,weeks:a=52,className:s,colors:n=["bg-zinc-100 dark:bg-zinc-800","bg-emerald-200 dark:bg-emerald-900","bg-emerald-300 dark:bg-emerald-700","bg-emerald-400 dark:bg-emerald-500","bg-emerald-500 dark:bg-emerald-400"]}){let d=react.useMemo(()=>r||Array.from({length:a*7},()=>Math.floor(Math.random()*5)),[r,a]),c=o=>n[Math.min(o,n.length-1)];return jsxRuntime.jsx("div",{className:m("overflow-x-auto",s),children:jsxRuntime.jsx("div",{className:"flex gap-1",children:Array.from({length:a}).map((o,t)=>jsxRuntime.jsx("div",{className:"flex flex-col gap-1",children:Array.from({length:7}).map((b,i)=>{let l=t*7+i,g=d[l]||0;return jsxRuntime.jsx(framerMotion.motion.div,{className:m("w-3 h-3 rounded-sm",c(g)),initial:{scale:0,opacity:0},animate:{scale:1,opacity:1},transition:{delay:l*.002,type:"spring",stiffness:300,damping:20},whileHover:{scale:1.3}},i)})},t))})})}var y=p;exports.ContributionGraph=p;exports.default=y;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/contribution-graph/index.tsx"],"names":["cn","classes","ContributionGraph","data","weeks","className","colors","contributions","useMemo","getColor","level","jsx","_","weekIndex","dayIndex","index","motion","contribution_graph_default"],"mappings":"+KAKA,SAASA,CAAAA,CAAAA,GAAMC,EAAyC,CACtD,OAAOA,EAAQ,MAAA,CAAO,OAAO,EAAE,IAAA,CAAK,GAAG,CACzC,CASO,SAASC,EAAkB,CAChC,IAAA,CAAAC,EACA,KAAA,CAAAC,CAAAA,CAAQ,GACR,SAAA,CAAAC,CAAAA,CACA,OAAAC,CAAAA,CAAS,CACP,+BACA,oCAAA,CACA,oCAAA,CACA,qCACA,oCACF,CACF,EAA2B,CACzB,IAAMC,CAAAA,CAAgBC,aAAAA,CAAQ,IACxBL,CAAAA,EACG,KAAA,CAAM,KAAK,CAAE,MAAA,CAAQC,EAAQ,CAAE,CAAA,CAAG,IAAM,IAAA,CAAK,KAAA,CAAM,KAAK,MAAA,EAAO,CAAI,CAAC,CAAC,CAAA,CAC3E,CAACD,CAAAA,CAAMC,CAAK,CAAC,CAAA,CAEVK,CAAAA,CAAYC,GAAkBJ,CAAAA,CAAO,IAAA,CAAK,IAAII,CAAAA,CAAOJ,CAAAA,CAAO,OAAS,CAAC,CAAC,EAE7E,OACEK,cAAAA,CAAC,OAAI,SAAA,CAAWX,CAAAA,CAAG,kBAAmBK,CAAS,CAAA,CAC7C,SAAAM,cAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,YAAA,CACZ,eAAM,IAAA,CAAK,CAAE,OAAQP,CAAM,CAAC,EAAE,GAAA,CAAI,CAACQ,EAAGC,CAAAA,GACrCF,cAAAA,CAAC,OAAoB,SAAA,CAAU,qBAAA,CAC5B,eAAM,IAAA,CAAK,CAAE,OAAQ,CAAE,CAAC,EAAE,GAAA,CAAI,CAACC,EAAGE,CAAAA,GAAa,CAC9C,IAAMC,CAAAA,CAAQF,CAAAA,CAAY,EAAIC,CAAAA,CACxBJ,CAAAA,CAAQH,EAAcQ,CAAK,CAAA,EAAK,EACtC,OACEJ,cAAAA,CAACK,oBAAO,GAAA,CAAP,CAEC,UAAWhB,CAAAA,CACT,oBAAA,CACAS,EAASC,CAAK,CAChB,EACA,OAAA,CAAS,CAAE,MAAO,CAAA,CAAG,OAAA,CAAS,CAAE,CAAA,CAChC,OAAA,CAAS,CAAE,KAAA,CAAO,CAAA,CAAG,QAAS,CAAE,CAAA,CAChC,WAAY,CACV,KAAA,CAAOK,EAAQ,IAAA,CACf,IAAA,CAAM,SACN,SAAA,CAAW,GAAA,CACX,QAAS,EACX,CAAA,CACA,WAAY,CAAE,KAAA,CAAO,GAAI,CAAA,CAAA,CAbpBD,CAcP,CAEJ,CAAC,CAAA,CAAA,CAtBOD,CAuBV,CACD,CAAA,CACH,EACF,CAEJ,KAEOI,CAAAA,CAAQf","file":"index.js","sourcesContent":["\"use client\";\r\n\r\nimport { useMemo } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface ContributionGraphProps {\r\n data?: number[];\r\n weeks?: number;\r\n className?: string;\r\n colors?: string[];\r\n}\r\n\r\nexport function ContributionGraph({\r\n data,\r\n weeks = 52,\r\n className,\r\n colors = [\r\n \"bg-zinc-100 dark:bg-zinc-800\",\r\n \"bg-emerald-200 dark:bg-emerald-900\",\r\n \"bg-emerald-300 dark:bg-emerald-700\",\r\n \"bg-emerald-400 dark:bg-emerald-500\",\r\n \"bg-emerald-500 dark:bg-emerald-400\",\r\n ],\r\n}: ContributionGraphProps) {\r\n const contributions = useMemo(() => {\r\n if (data) return data;\r\n return Array.from({ length: weeks * 7 }, () => Math.floor(Math.random() * 5));\r\n }, [data, weeks]);\r\n\r\n const getColor = (level: number) => colors[Math.min(level, colors.length - 1)];\r\n\r\n return (\r\n <div className={cn(\"overflow-x-auto\", className)}>\r\n <div className=\"flex gap-1\">\r\n {Array.from({ length: weeks }).map((_, weekIndex) => (\r\n <div key={weekIndex} className=\"flex flex-col gap-1\">\r\n {Array.from({ length: 7 }).map((_, dayIndex) => {\r\n const index = weekIndex * 7 + dayIndex;\r\n const level = contributions[index] || 0;\r\n return (\r\n <motion.div\r\n key={dayIndex}\r\n className={cn(\r\n \"w-3 h-3 rounded-sm\",\r\n getColor(level)\r\n )}\r\n initial={{ scale: 0, opacity: 0 }}\r\n animate={{ scale: 1, opacity: 1 }}\r\n transition={{\r\n delay: index * 0.002,\r\n type: \"spring\",\r\n stiffness: 300,\r\n damping: 20,\r\n }}\r\n whileHover={{ scale: 1.3 }}\r\n />\r\n );\r\n })}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default ContributionGraph;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {useMemo}from'react';import {motion}from'framer-motion';import {jsx}from'react/jsx-runtime';function m(...r){return r.filter(Boolean).join(" ")}function p({data:r,weeks:a=52,className:s,colors:n=["bg-zinc-100 dark:bg-zinc-800","bg-emerald-200 dark:bg-emerald-900","bg-emerald-300 dark:bg-emerald-700","bg-emerald-400 dark:bg-emerald-500","bg-emerald-500 dark:bg-emerald-400"]}){let d=useMemo(()=>r||Array.from({length:a*7},()=>Math.floor(Math.random()*5)),[r,a]),c=o=>n[Math.min(o,n.length-1)];return jsx("div",{className:m("overflow-x-auto",s),children:jsx("div",{className:"flex gap-1",children:Array.from({length:a}).map((o,t)=>jsx("div",{className:"flex flex-col gap-1",children:Array.from({length:7}).map((b,i)=>{let l=t*7+i,g=d[l]||0;return jsx(motion.div,{className:m("w-3 h-3 rounded-sm",c(g)),initial:{scale:0,opacity:0},animate:{scale:1,opacity:1},transition:{delay:l*.002,type:"spring",stiffness:300,damping:20},whileHover:{scale:1.3}},i)})},t))})})}var y=p;export{p as ContributionGraph,y as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/contribution-graph/index.tsx"],"names":["cn","classes","ContributionGraph","data","weeks","className","colors","contributions","useMemo","getColor","level","jsx","_","weekIndex","dayIndex","index","motion","contribution_graph_default"],"mappings":"mGAKA,SAASA,CAAAA,CAAAA,GAAMC,EAAyC,CACtD,OAAOA,EAAQ,MAAA,CAAO,OAAO,EAAE,IAAA,CAAK,GAAG,CACzC,CASO,SAASC,EAAkB,CAChC,IAAA,CAAAC,EACA,KAAA,CAAAC,CAAAA,CAAQ,GACR,SAAA,CAAAC,CAAAA,CACA,OAAAC,CAAAA,CAAS,CACP,+BACA,oCAAA,CACA,oCAAA,CACA,qCACA,oCACF,CACF,EAA2B,CACzB,IAAMC,CAAAA,CAAgBC,OAAAA,CAAQ,IACxBL,CAAAA,EACG,KAAA,CAAM,KAAK,CAAE,MAAA,CAAQC,EAAQ,CAAE,CAAA,CAAG,IAAM,IAAA,CAAK,KAAA,CAAM,KAAK,MAAA,EAAO,CAAI,CAAC,CAAC,CAAA,CAC3E,CAACD,CAAAA,CAAMC,CAAK,CAAC,CAAA,CAEVK,CAAAA,CAAYC,GAAkBJ,CAAAA,CAAO,IAAA,CAAK,IAAII,CAAAA,CAAOJ,CAAAA,CAAO,OAAS,CAAC,CAAC,EAE7E,OACEK,GAAAA,CAAC,OAAI,SAAA,CAAWX,CAAAA,CAAG,kBAAmBK,CAAS,CAAA,CAC7C,SAAAM,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,YAAA,CACZ,eAAM,IAAA,CAAK,CAAE,OAAQP,CAAM,CAAC,EAAE,GAAA,CAAI,CAACQ,EAAGC,CAAAA,GACrCF,GAAAA,CAAC,OAAoB,SAAA,CAAU,qBAAA,CAC5B,eAAM,IAAA,CAAK,CAAE,OAAQ,CAAE,CAAC,EAAE,GAAA,CAAI,CAACC,EAAGE,CAAAA,GAAa,CAC9C,IAAMC,CAAAA,CAAQF,CAAAA,CAAY,EAAIC,CAAAA,CACxBJ,CAAAA,CAAQH,EAAcQ,CAAK,CAAA,EAAK,EACtC,OACEJ,GAAAA,CAACK,OAAO,GAAA,CAAP,CAEC,UAAWhB,CAAAA,CACT,oBAAA,CACAS,EAASC,CAAK,CAChB,EACA,OAAA,CAAS,CAAE,MAAO,CAAA,CAAG,OAAA,CAAS,CAAE,CAAA,CAChC,OAAA,CAAS,CAAE,KAAA,CAAO,CAAA,CAAG,QAAS,CAAE,CAAA,CAChC,WAAY,CACV,KAAA,CAAOK,EAAQ,IAAA,CACf,IAAA,CAAM,SACN,SAAA,CAAW,GAAA,CACX,QAAS,EACX,CAAA,CACA,WAAY,CAAE,KAAA,CAAO,GAAI,CAAA,CAAA,CAbpBD,CAcP,CAEJ,CAAC,CAAA,CAAA,CAtBOD,CAuBV,CACD,CAAA,CACH,EACF,CAEJ,KAEOI,CAAAA,CAAQf","file":"index.mjs","sourcesContent":["\"use client\";\r\n\r\nimport { useMemo } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface ContributionGraphProps {\r\n data?: number[];\r\n weeks?: number;\r\n className?: string;\r\n colors?: string[];\r\n}\r\n\r\nexport function ContributionGraph({\r\n data,\r\n weeks = 52,\r\n className,\r\n colors = [\r\n \"bg-zinc-100 dark:bg-zinc-800\",\r\n \"bg-emerald-200 dark:bg-emerald-900\",\r\n \"bg-emerald-300 dark:bg-emerald-700\",\r\n \"bg-emerald-400 dark:bg-emerald-500\",\r\n \"bg-emerald-500 dark:bg-emerald-400\",\r\n ],\r\n}: ContributionGraphProps) {\r\n const contributions = useMemo(() => {\r\n if (data) return data;\r\n return Array.from({ length: weeks * 7 }, () => Math.floor(Math.random() * 5));\r\n }, [data, weeks]);\r\n\r\n const getColor = (level: number) => colors[Math.min(level, colors.length - 1)];\r\n\r\n return (\r\n <div className={cn(\"overflow-x-auto\", className)}>\r\n <div className=\"flex gap-1\">\r\n {Array.from({ length: weeks }).map((_, weekIndex) => (\r\n <div key={weekIndex} className=\"flex flex-col gap-1\">\r\n {Array.from({ length: 7 }).map((_, dayIndex) => {\r\n const index = weekIndex * 7 + dayIndex;\r\n const level = contributions[index] || 0;\r\n return (\r\n <motion.div\r\n key={dayIndex}\r\n className={cn(\r\n \"w-3 h-3 rounded-sm\",\r\n getColor(level)\r\n )}\r\n initial={{ scale: 0, opacity: 0 }}\r\n animate={{ scale: 1, opacity: 1 }}\r\n transition={{\r\n delay: index * 0.002,\r\n type: \"spring\",\r\n stiffness: 300,\r\n damping: 20,\r\n }}\r\n whileHover={{ scale: 1.3 }}\r\n />\r\n );\r\n })}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default ContributionGraph;\r\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),framerMotion=require('framer-motion'),jsxRuntime=require('react/jsx-runtime');function l(...n){return n.filter(Boolean).join(" ")}function w({defaultValue:n=50,min:s=0,max:o=100,step:m=1,onChange:g,className:f,trackClassName:p,thumbClassName:b}){let[r,h]=react.useState(n),[e,t]=react.useState(false),u=(r-s)/(o-s)*100,v=N=>{let c=Number(N.target.value);h(c),g?.(c);};return jsxRuntime.jsxs("div",{className:l("relative w-full h-12 flex items-center",f),children:[jsxRuntime.jsx("div",{className:l("absolute w-full h-2 rounded-full bg-zinc-200 dark:bg-zinc-800",p),children:jsxRuntime.jsx(framerMotion.motion.div,{className:"h-full rounded-full bg-zinc-900 dark:bg-zinc-100",style:{width:`${u}%`},animate:{scaleY:e?1.5:1},transition:{type:"spring",stiffness:400,damping:25}})}),jsxRuntime.jsx(framerMotion.motion.div,{className:l("absolute w-6 h-6 rounded-full bg-zinc-900 dark:bg-zinc-100 shadow-lg cursor-grab","border-2 border-white dark:border-zinc-900",b),style:{left:`calc(${u}% - 12px)`},animate:{scale:e?1.3:1,y:e?-4:0},transition:{type:"spring",stiffness:500,damping:30}}),jsxRuntime.jsx("input",{type:"range",min:s,max:o,step:m,value:r,onChange:v,onMouseDown:()=>t(true),onMouseUp:()=>t(false),onTouchStart:()=>t(true),onTouchEnd:()=>t(false),className:"absolute w-full h-full opacity-0 cursor-grab active:cursor-grabbing"}),jsxRuntime.jsx(framerMotion.motion.span,{className:"absolute -top-8 left-1/2 -translate-x-1/2 text-sm font-medium text-zinc-900 dark:text-zinc-100",animate:{opacity:e?1:0,y:e?0:10},transition:{duration:.2},children:r})]})}var S=w;exports.ElasticSlider=w;exports.default=S;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/elastic-slider/index.tsx"],"names":["cn","classes","ElasticSlider","defaultValue","min","max","step","onChange","className","trackClassName","thumbClassName","value","setValue","useState","isDragging","setIsDragging","percentage","handleChange","e","newValue","jsxs","jsx","motion","elastic_slider_default"],"mappings":"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","file":"index.js","sourcesContent":["\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion, useMotionValue, useTransform, animate } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface ElasticSliderProps {\r\n defaultValue?: number;\r\n min?: number;\r\n max?: number;\r\n step?: number;\r\n onChange?: (value: number) => void;\r\n className?: string;\r\n trackClassName?: string;\r\n thumbClassName?: string;\r\n}\r\n\r\nexport function ElasticSlider({\r\n defaultValue = 50,\r\n min = 0,\r\n max = 100,\r\n step = 1,\r\n onChange,\r\n className,\r\n trackClassName,\r\n thumbClassName,\r\n}: ElasticSliderProps) {\r\n const [value, setValue] = useState(defaultValue);\r\n const [isDragging, setIsDragging] = useState(false);\r\n \r\n const percentage = ((value - min) / (max - min)) * 100;\r\n\r\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const newValue = Number(e.target.value);\r\n setValue(newValue);\r\n onChange?.(newValue);\r\n };\r\n\r\n return (\r\n <div className={cn(\"relative w-full h-12 flex items-center\", className)}>\r\n <div className={cn(\r\n \"absolute w-full h-2 rounded-full bg-zinc-200 dark:bg-zinc-800\",\r\n trackClassName\r\n )}>\r\n <motion.div\r\n className=\"h-full rounded-full bg-zinc-900 dark:bg-zinc-100\"\r\n style={{ width: `${percentage}%` }}\r\n animate={{ scaleY: isDragging ? 1.5 : 1 }}\r\n transition={{ type: \"spring\", stiffness: 400, damping: 25 }}\r\n />\r\n </div>\r\n \r\n <motion.div\r\n className={cn(\r\n \"absolute w-6 h-6 rounded-full bg-zinc-900 dark:bg-zinc-100 shadow-lg cursor-grab\",\r\n \"border-2 border-white dark:border-zinc-900\",\r\n thumbClassName\r\n )}\r\n style={{ left: `calc(${percentage}% - 12px)` }}\r\n animate={{ \r\n scale: isDragging ? 1.3 : 1,\r\n y: isDragging ? -4 : 0\r\n }}\r\n transition={{ type: \"spring\", stiffness: 500, damping: 30 }}\r\n />\r\n \r\n <input\r\n type=\"range\"\r\n min={min}\r\n max={max}\r\n step={step}\r\n value={value}\r\n onChange={handleChange}\r\n onMouseDown={() => setIsDragging(true)}\r\n onMouseUp={() => setIsDragging(false)}\r\n onTouchStart={() => setIsDragging(true)}\r\n onTouchEnd={() => setIsDragging(false)}\r\n className=\"absolute w-full h-full opacity-0 cursor-grab active:cursor-grabbing\"\r\n />\r\n \r\n <motion.span\r\n className=\"absolute -top-8 left-1/2 -translate-x-1/2 text-sm font-medium text-zinc-900 dark:text-zinc-100\"\r\n animate={{ opacity: isDragging ? 1 : 0, y: isDragging ? 0 : 10 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n {value}\r\n </motion.span>\r\n </div>\r\n );\r\n}\r\n\r\nexport default ElasticSlider;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {useState}from'react';import {motion}from'framer-motion';import {jsxs,jsx}from'react/jsx-runtime';function l(...n){return n.filter(Boolean).join(" ")}function w({defaultValue:n=50,min:s=0,max:o=100,step:m=1,onChange:g,className:f,trackClassName:p,thumbClassName:b}){let[r,h]=useState(n),[e,t]=useState(false),u=(r-s)/(o-s)*100,v=N=>{let c=Number(N.target.value);h(c),g?.(c);};return jsxs("div",{className:l("relative w-full h-12 flex items-center",f),children:[jsx("div",{className:l("absolute w-full h-2 rounded-full bg-zinc-200 dark:bg-zinc-800",p),children:jsx(motion.div,{className:"h-full rounded-full bg-zinc-900 dark:bg-zinc-100",style:{width:`${u}%`},animate:{scaleY:e?1.5:1},transition:{type:"spring",stiffness:400,damping:25}})}),jsx(motion.div,{className:l("absolute w-6 h-6 rounded-full bg-zinc-900 dark:bg-zinc-100 shadow-lg cursor-grab","border-2 border-white dark:border-zinc-900",b),style:{left:`calc(${u}% - 12px)`},animate:{scale:e?1.3:1,y:e?-4:0},transition:{type:"spring",stiffness:500,damping:30}}),jsx("input",{type:"range",min:s,max:o,step:m,value:r,onChange:v,onMouseDown:()=>t(true),onMouseUp:()=>t(false),onTouchStart:()=>t(true),onTouchEnd:()=>t(false),className:"absolute w-full h-full opacity-0 cursor-grab active:cursor-grabbing"}),jsx(motion.span,{className:"absolute -top-8 left-1/2 -translate-x-1/2 text-sm font-medium text-zinc-900 dark:text-zinc-100",animate:{opacity:e?1:0,y:e?0:10},transition:{duration:.2},children:r})]})}var S=w;export{w as ElasticSlider,S as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/elastic-slider/index.tsx"],"names":["cn","classes","ElasticSlider","defaultValue","min","max","step","onChange","className","trackClassName","thumbClassName","value","setValue","useState","isDragging","setIsDragging","percentage","handleChange","e","newValue","jsxs","jsx","motion","elastic_slider_default"],"mappings":"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","file":"index.mjs","sourcesContent":["\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion, useMotionValue, useTransform, animate } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface ElasticSliderProps {\r\n defaultValue?: number;\r\n min?: number;\r\n max?: number;\r\n step?: number;\r\n onChange?: (value: number) => void;\r\n className?: string;\r\n trackClassName?: string;\r\n thumbClassName?: string;\r\n}\r\n\r\nexport function ElasticSlider({\r\n defaultValue = 50,\r\n min = 0,\r\n max = 100,\r\n step = 1,\r\n onChange,\r\n className,\r\n trackClassName,\r\n thumbClassName,\r\n}: ElasticSliderProps) {\r\n const [value, setValue] = useState(defaultValue);\r\n const [isDragging, setIsDragging] = useState(false);\r\n \r\n const percentage = ((value - min) / (max - min)) * 100;\r\n\r\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const newValue = Number(e.target.value);\r\n setValue(newValue);\r\n onChange?.(newValue);\r\n };\r\n\r\n return (\r\n <div className={cn(\"relative w-full h-12 flex items-center\", className)}>\r\n <div className={cn(\r\n \"absolute w-full h-2 rounded-full bg-zinc-200 dark:bg-zinc-800\",\r\n trackClassName\r\n )}>\r\n <motion.div\r\n className=\"h-full rounded-full bg-zinc-900 dark:bg-zinc-100\"\r\n style={{ width: `${percentage}%` }}\r\n animate={{ scaleY: isDragging ? 1.5 : 1 }}\r\n transition={{ type: \"spring\", stiffness: 400, damping: 25 }}\r\n />\r\n </div>\r\n \r\n <motion.div\r\n className={cn(\r\n \"absolute w-6 h-6 rounded-full bg-zinc-900 dark:bg-zinc-100 shadow-lg cursor-grab\",\r\n \"border-2 border-white dark:border-zinc-900\",\r\n thumbClassName\r\n )}\r\n style={{ left: `calc(${percentage}% - 12px)` }}\r\n animate={{ \r\n scale: isDragging ? 1.3 : 1,\r\n y: isDragging ? -4 : 0\r\n }}\r\n transition={{ type: \"spring\", stiffness: 500, damping: 30 }}\r\n />\r\n \r\n <input\r\n type=\"range\"\r\n min={min}\r\n max={max}\r\n step={step}\r\n value={value}\r\n onChange={handleChange}\r\n onMouseDown={() => setIsDragging(true)}\r\n onMouseUp={() => setIsDragging(false)}\r\n onTouchStart={() => setIsDragging(true)}\r\n onTouchEnd={() => setIsDragging(false)}\r\n className=\"absolute w-full h-full opacity-0 cursor-grab active:cursor-grabbing\"\r\n />\r\n \r\n <motion.span\r\n className=\"absolute -top-8 left-1/2 -translate-x-1/2 text-sm font-medium text-zinc-900 dark:text-zinc-100\"\r\n animate={{ opacity: isDragging ? 1 : 0, y: isDragging ? 0 : 10 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n {value}\r\n </motion.span>\r\n </div>\r\n );\r\n}\r\n\r\nexport default ElasticSlider;\r\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),framerMotion=require('framer-motion'),jsxRuntime=require('react/jsx-runtime');function d(...t){return t.filter(Boolean).join(" ")}function u({className:t,onChange:n}){let[e,s]=react.useState(false);return jsxRuntime.jsxs("button",{onClick:()=>{let i=!e;s(i),n?.(i);},className:d("relative w-12 h-12 bg-transparent cursor-pointer flex flex-col items-center justify-center gap-2 p-2",t),style:{transformStyle:"preserve-3d",perspective:"800px"},"aria-label":"Toggle menu",children:[jsxRuntime.jsx(framerMotion.motion.div,{className:"w-8 h-0.5 bg-black dark:bg-white rounded",animate:e?{width:10,height:10,borderRadius:"50%",y:-6}:{width:32,height:2,borderRadius:"4px",y:0},transition:{duration:.3,ease:"easeInOut"}}),jsxRuntime.jsx(framerMotion.motion.div,{className:"w-8 h-0.5 bg-black dark:bg-white rounded",animate:e?{width:10,height:10,borderRadius:"50%",x:-8,y:6}:{width:32,height:2,borderRadius:"4px",x:0,y:0},transition:{duration:.35,ease:"easeInOut"}}),jsxRuntime.jsx(framerMotion.motion.div,{className:"w-8 h-0.5 bg-black dark:bg-white rounded",animate:e?{width:10,height:10,borderRadius:"50%",x:8,y:6}:{width:32,height:2,borderRadius:"4px",x:0,y:0},transition:{duration:.4,ease:"easeInOut"}})]})}var m=u;exports.Hamburger3D=u;exports.default=m;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hamburger-3d/index.tsx"],"names":["cn","classes","Hamburger3D","className","onChange","isOpen","setIsOpen","useState","jsxs","newState","jsx","motion","hamburger_3d_default"],"mappings":"+KAKA,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAyC,CACtD,OAAOA,CAAAA,CAAQ,OAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CACzC,CAOO,SAASC,CAAAA,CAAY,CAAE,SAAA,CAAAC,CAAAA,CAAW,SAAAC,CAAS,CAAA,CAAqB,CACrE,GAAM,CAACC,EAAQC,CAAS,CAAA,CAAIC,eAAS,KAAK,CAAA,CAQ1C,OACEC,eAAAA,CAAC,QAAA,CAAA,CACC,OAAA,CARiB,IAAM,CACzB,IAAMC,EAAW,CAACJ,CAAAA,CAClBC,EAAUG,CAAQ,CAAA,CAClBL,IAAWK,CAAQ,EACrB,EAKI,SAAA,CAAWT,CAAAA,CACT,uGACAG,CACF,CAAA,CACA,MAAO,CAAE,cAAA,CAAgB,aAAA,CAAe,WAAA,CAAa,OAAQ,CAAA,CAC7D,aAAW,aAAA,CAEX,QAAA,CAAA,CAAAO,eAACC,mBAAAA,CAAO,GAAA,CAAP,CACC,SAAA,CAAU,0CAAA,CACV,QAASN,CAAAA,CAAS,CAChB,MAAO,EAAA,CACP,MAAA,CAAQ,GACR,YAAA,CAAc,KAAA,CACd,EAAG,EACL,CAAA,CAAI,CACF,KAAA,CAAO,EAAA,CACP,MAAA,CAAQ,EACR,YAAA,CAAc,KAAA,CACd,EAAG,CACL,CAAA,CACA,WAAY,CAAE,QAAA,CAAU,GAAK,IAAA,CAAM,WAAY,EACjD,CAAA,CACAK,cAAAA,CAACC,oBAAO,GAAA,CAAP,CACC,UAAU,0CAAA,CACV,OAAA,CAASN,EAAS,CAChB,KAAA,CAAO,GACP,MAAA,CAAQ,EAAA,CACR,aAAc,KAAA,CACd,CAAA,CAAG,GACH,CAAA,CAAG,CACL,EAAI,CACF,KAAA,CAAO,GACP,MAAA,CAAQ,CAAA,CACR,aAAc,KAAA,CACd,CAAA,CAAG,EACH,CAAA,CAAG,CACL,CAAA,CACA,UAAA,CAAY,CAAE,QAAA,CAAU,IAAM,IAAA,CAAM,WAAY,EAClD,CAAA,CACAK,cAAAA,CAACC,oBAAO,GAAA,CAAP,CACC,UAAU,0CAAA,CACV,OAAA,CAASN,EAAS,CAChB,KAAA,CAAO,GACP,MAAA,CAAQ,EAAA,CACR,aAAc,KAAA,CACd,CAAA,CAAG,CAAA,CACH,CAAA,CAAG,CACL,CAAA,CAAI,CACF,KAAA,CAAO,EAAA,CACP,OAAQ,CAAA,CACR,YAAA,CAAc,MACd,CAAA,CAAG,CAAA,CACH,EAAG,CACL,CAAA,CACA,WAAY,CAAE,QAAA,CAAU,GAAK,IAAA,CAAM,WAAY,EACjD,CAAA,CAAA,CACF,CAEJ,CAEA,IAAOO,CAAAA,CAAQV","file":"index.js","sourcesContent":["\"use client\";\r\n\r\nimport { useState, useEffect, useRef } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface Hamburger3DProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function Hamburger3D({ className, onChange }: Hamburger3DProps) {\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 <button\r\n onClick={handleToggle}\r\n className={cn(\r\n \"relative w-12 h-12 bg-transparent cursor-pointer flex flex-col items-center justify-center gap-2 p-2\",\r\n className\r\n )}\r\n style={{ transformStyle: \"preserve-3d\", perspective: \"800px\" }}\r\n aria-label=\"Toggle menu\"\r\n >\r\n <motion.div\r\n className=\"w-8 h-0.5 bg-black dark:bg-white rounded\"\r\n animate={isOpen ? { \r\n width: 10, \r\n height: 10, \r\n borderRadius: \"50%\",\r\n y: -6 \r\n } : { \r\n width: 32, \r\n height: 2, \r\n borderRadius: \"4px\",\r\n y: 0 \r\n }}\r\n transition={{ duration: 0.3, ease: \"easeInOut\" }}\r\n />\r\n <motion.div\r\n className=\"w-8 h-0.5 bg-black dark:bg-white rounded\"\r\n animate={isOpen ? { \r\n width: 10, \r\n height: 10, \r\n borderRadius: \"50%\",\r\n x: -8,\r\n y: 6 \r\n } : { \r\n width: 32, \r\n height: 2, \r\n borderRadius: \"4px\",\r\n x: 0,\r\n y: 0 \r\n }}\r\n transition={{ duration: 0.35, ease: \"easeInOut\" }}\r\n />\r\n <motion.div\r\n className=\"w-8 h-0.5 bg-black dark:bg-white rounded\"\r\n animate={isOpen ? { \r\n width: 10, \r\n height: 10, \r\n borderRadius: \"50%\",\r\n x: 8,\r\n y: 6 \r\n } : { \r\n width: 32, \r\n height: 2, \r\n borderRadius: \"4px\",\r\n x: 0,\r\n y: 0 \r\n }}\r\n transition={{ duration: 0.4, ease: \"easeInOut\" }}\r\n />\r\n </button>\r\n );\r\n}\r\n\r\nexport default Hamburger3D;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {useState}from'react';import {motion}from'framer-motion';import {jsxs,jsx}from'react/jsx-runtime';function d(...t){return t.filter(Boolean).join(" ")}function u({className:t,onChange:n}){let[e,s]=useState(false);return jsxs("button",{onClick:()=>{let i=!e;s(i),n?.(i);},className:d("relative w-12 h-12 bg-transparent cursor-pointer flex flex-col items-center justify-center gap-2 p-2",t),style:{transformStyle:"preserve-3d",perspective:"800px"},"aria-label":"Toggle menu",children:[jsx(motion.div,{className:"w-8 h-0.5 bg-black dark:bg-white rounded",animate:e?{width:10,height:10,borderRadius:"50%",y:-6}:{width:32,height:2,borderRadius:"4px",y:0},transition:{duration:.3,ease:"easeInOut"}}),jsx(motion.div,{className:"w-8 h-0.5 bg-black dark:bg-white rounded",animate:e?{width:10,height:10,borderRadius:"50%",x:-8,y:6}:{width:32,height:2,borderRadius:"4px",x:0,y:0},transition:{duration:.35,ease:"easeInOut"}}),jsx(motion.div,{className:"w-8 h-0.5 bg-black dark:bg-white rounded",animate:e?{width:10,height:10,borderRadius:"50%",x:8,y:6}:{width:32,height:2,borderRadius:"4px",x:0,y:0},transition:{duration:.4,ease:"easeInOut"}})]})}var m=u;export{u as Hamburger3D,m as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hamburger-3d/index.tsx"],"names":["cn","classes","Hamburger3D","className","onChange","isOpen","setIsOpen","useState","jsxs","newState","jsx","motion","hamburger_3d_default"],"mappings":"yGAKA,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAyC,CACtD,OAAOA,CAAAA,CAAQ,OAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CACzC,CAOO,SAASC,CAAAA,CAAY,CAAE,SAAA,CAAAC,CAAAA,CAAW,SAAAC,CAAS,CAAA,CAAqB,CACrE,GAAM,CAACC,EAAQC,CAAS,CAAA,CAAIC,SAAS,KAAK,CAAA,CAQ1C,OACEC,IAAAA,CAAC,QAAA,CAAA,CACC,OAAA,CARiB,IAAM,CACzB,IAAMC,EAAW,CAACJ,CAAAA,CAClBC,EAAUG,CAAQ,CAAA,CAClBL,IAAWK,CAAQ,EACrB,EAKI,SAAA,CAAWT,CAAAA,CACT,uGACAG,CACF,CAAA,CACA,MAAO,CAAE,cAAA,CAAgB,aAAA,CAAe,WAAA,CAAa,OAAQ,CAAA,CAC7D,aAAW,aAAA,CAEX,QAAA,CAAA,CAAAO,IAACC,MAAAA,CAAO,GAAA,CAAP,CACC,SAAA,CAAU,0CAAA,CACV,QAASN,CAAAA,CAAS,CAChB,MAAO,EAAA,CACP,MAAA,CAAQ,GACR,YAAA,CAAc,KAAA,CACd,EAAG,EACL,CAAA,CAAI,CACF,KAAA,CAAO,EAAA,CACP,MAAA,CAAQ,EACR,YAAA,CAAc,KAAA,CACd,EAAG,CACL,CAAA,CACA,WAAY,CAAE,QAAA,CAAU,GAAK,IAAA,CAAM,WAAY,EACjD,CAAA,CACAK,GAAAA,CAACC,OAAO,GAAA,CAAP,CACC,UAAU,0CAAA,CACV,OAAA,CAASN,EAAS,CAChB,KAAA,CAAO,GACP,MAAA,CAAQ,EAAA,CACR,aAAc,KAAA,CACd,CAAA,CAAG,GACH,CAAA,CAAG,CACL,EAAI,CACF,KAAA,CAAO,GACP,MAAA,CAAQ,CAAA,CACR,aAAc,KAAA,CACd,CAAA,CAAG,EACH,CAAA,CAAG,CACL,CAAA,CACA,UAAA,CAAY,CAAE,QAAA,CAAU,IAAM,IAAA,CAAM,WAAY,EAClD,CAAA,CACAK,GAAAA,CAACC,OAAO,GAAA,CAAP,CACC,UAAU,0CAAA,CACV,OAAA,CAASN,EAAS,CAChB,KAAA,CAAO,GACP,MAAA,CAAQ,EAAA,CACR,aAAc,KAAA,CACd,CAAA,CAAG,CAAA,CACH,CAAA,CAAG,CACL,CAAA,CAAI,CACF,KAAA,CAAO,EAAA,CACP,OAAQ,CAAA,CACR,YAAA,CAAc,MACd,CAAA,CAAG,CAAA,CACH,EAAG,CACL,CAAA,CACA,WAAY,CAAE,QAAA,CAAU,GAAK,IAAA,CAAM,WAAY,EACjD,CAAA,CAAA,CACF,CAEJ,CAEA,IAAOO,CAAAA,CAAQV","file":"index.mjs","sourcesContent":["\"use client\";\r\n\r\nimport { useState, useEffect, useRef } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface Hamburger3DProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function Hamburger3D({ className, onChange }: Hamburger3DProps) {\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 <button\r\n onClick={handleToggle}\r\n className={cn(\r\n \"relative w-12 h-12 bg-transparent cursor-pointer flex flex-col items-center justify-center gap-2 p-2\",\r\n className\r\n )}\r\n style={{ transformStyle: \"preserve-3d\", perspective: \"800px\" }}\r\n aria-label=\"Toggle menu\"\r\n >\r\n <motion.div\r\n className=\"w-8 h-0.5 bg-black dark:bg-white rounded\"\r\n animate={isOpen ? { \r\n width: 10, \r\n height: 10, \r\n borderRadius: \"50%\",\r\n y: -6 \r\n } : { \r\n width: 32, \r\n height: 2, \r\n borderRadius: \"4px\",\r\n y: 0 \r\n }}\r\n transition={{ duration: 0.3, ease: \"easeInOut\" }}\r\n />\r\n <motion.div\r\n className=\"w-8 h-0.5 bg-black dark:bg-white rounded\"\r\n animate={isOpen ? { \r\n width: 10, \r\n height: 10, \r\n borderRadius: \"50%\",\r\n x: -8,\r\n y: 6 \r\n } : { \r\n width: 32, \r\n height: 2, \r\n borderRadius: \"4px\",\r\n x: 0,\r\n y: 0 \r\n }}\r\n transition={{ duration: 0.35, ease: \"easeInOut\" }}\r\n />\r\n <motion.div\r\n className=\"w-8 h-0.5 bg-black dark:bg-white rounded\"\r\n animate={isOpen ? { \r\n width: 10, \r\n height: 10, \r\n borderRadius: \"50%\",\r\n x: 8,\r\n y: 6 \r\n } : { \r\n width: 32, \r\n height: 2, \r\n borderRadius: \"4px\",\r\n x: 0,\r\n y: 0 \r\n }}\r\n transition={{ duration: 0.4, ease: \"easeInOut\" }}\r\n />\r\n </button>\r\n );\r\n}\r\n\r\nexport default Hamburger3D;\r\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),framerMotion=require('framer-motion'),jsxRuntime=require('react/jsx-runtime');function l(...t){return t.filter(Boolean).join(" ")}function c({className:t,onChange:r}){let[e,o]=react.useState(false);return jsxRuntime.jsxs("button",{onClick:()=>{let i=!e;o(i),r?.(i);},className:l("relative w-12 h-12 bg-transparent cursor-pointer flex flex-col items-center justify-center gap-2",t),"aria-label":"Toggle menu",children:[jsxRuntime.jsx(framerMotion.motion.div,{className:"w-full h-1 bg-black dark:bg-white rounded-full origin-center",animate:e?{rotateX:90,y:0,opacity:0}:{rotateX:0,y:0,opacity:1},transition:{duration:.3,type:"spring",stiffness:300,damping:30}}),jsxRuntime.jsx(framerMotion.motion.div,{className:"w-full h-1 bg-black dark:bg-white rounded-full origin-center",animate:e?{scaleY:3}:{scaleY:1},transition:{duration:.6,type:"spring",stiffness:200,damping:15}}),jsxRuntime.jsx(framerMotion.motion.div,{className:"w-full h-1 bg-black dark:bg-white rounded-full origin-center",animate:e?{rotateX:90,y:0,opacity:0}:{rotateX:0,y:0,opacity:1},transition:{duration:.3,type:"spring",stiffness:300,damping:30}})]})}var d=c;exports.HamburgerElastic=c;exports.default=d;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hamburger-elastic/index.tsx"],"names":["cn","classes","HamburgerElastic","className","onChange","isOpen","setIsOpen","useState","jsxs","newState","jsx","motion","hamburger_elastic_default"],"mappings":"+KAKA,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAyC,CACtD,OAAOA,CAAAA,CAAQ,MAAA,CAAO,OAAO,EAAE,IAAA,CAAK,GAAG,CACzC,CAOO,SAASC,EAAiB,CAAE,SAAA,CAAAC,CAAAA,CAAW,QAAA,CAAAC,CAAS,CAAA,CAA0B,CAC/E,GAAM,CAACC,CAAAA,CAAQC,CAAS,CAAA,CAAIC,cAAAA,CAAS,KAAK,CAAA,CAQ1C,OACEC,eAAAA,CAAC,QAAA,CAAA,CACC,QARiB,IAAM,CACzB,IAAMC,CAAAA,CAAW,CAACJ,CAAAA,CAClBC,CAAAA,CAAUG,CAAQ,CAAA,CAClBL,CAAAA,GAAWK,CAAQ,EACrB,CAAA,CAKI,UAAWT,CAAAA,CACT,kGAAA,CACAG,CACF,CAAA,CACA,aAAW,aAAA,CAEX,QAAA,CAAA,CAAAO,eAACC,mBAAAA,CAAO,GAAA,CAAP,CACC,SAAA,CAAU,8DAAA,CACV,OAAA,CAASN,CAAAA,CAAS,CAAE,OAAA,CAAS,EAAA,CAAI,EAAG,CAAA,CAAG,OAAA,CAAS,CAAE,CAAA,CAAI,CAAE,OAAA,CAAS,CAAA,CAAG,EAAG,CAAA,CAAG,OAAA,CAAS,CAAE,CAAA,CACrF,UAAA,CAAY,CAAE,QAAA,CAAU,EAAA,CAAK,IAAA,CAAM,QAAA,CAAU,UAAW,GAAA,CAAK,OAAA,CAAS,EAAG,CAAA,CAC3E,CAAA,CACAK,eAACC,mBAAAA,CAAO,GAAA,CAAP,CACC,SAAA,CAAU,+DACV,OAAA,CAASN,CAAAA,CAAS,CAAE,MAAA,CAAQ,CAAE,EAAI,CAAE,MAAA,CAAQ,CAAE,CAAA,CAC9C,WAAY,CAAE,QAAA,CAAU,GAAK,IAAA,CAAM,QAAA,CAAU,UAAW,GAAA,CAAK,OAAA,CAAS,EAAG,CAAA,CAC3E,EACAK,cAAAA,CAACC,mBAAAA,CAAO,IAAP,CACC,SAAA,CAAU,+DACV,OAAA,CAASN,CAAAA,CAAS,CAAE,OAAA,CAAS,GAAI,CAAA,CAAG,CAAA,CAAG,QAAS,CAAE,CAAA,CAAI,CAAE,OAAA,CAAS,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,QAAS,CAAE,CAAA,CACrF,WAAY,CAAE,QAAA,CAAU,GAAK,IAAA,CAAM,QAAA,CAAU,SAAA,CAAW,GAAA,CAAK,QAAS,EAAG,CAAA,CAC3E,GACF,CAEJ,KAEOO,CAAAA,CAAQV","file":"index.js","sourcesContent":["\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface HamburgerElasticProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function HamburgerElastic({ className, onChange }: HamburgerElasticProps) {\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 <button\r\n onClick={handleToggle}\r\n className={cn(\r\n \"relative w-12 h-12 bg-transparent cursor-pointer flex flex-col items-center justify-center gap-2\",\r\n className\r\n )}\r\n aria-label=\"Toggle menu\"\r\n >\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { rotateX: 90, y: 0, opacity: 0 } : { rotateX: 0, y: 0, opacity: 1 }}\r\n transition={{ duration: 0.3, type: \"spring\", stiffness: 300, damping: 30 }}\r\n />\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { scaleY: 3 } : { scaleY: 1 }}\r\n transition={{ duration: 0.6, type: \"spring\", stiffness: 200, damping: 15 }}\r\n />\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { rotateX: 90, y: 0, opacity: 0 } : { rotateX: 0, y: 0, opacity: 1 }}\r\n transition={{ duration: 0.3, type: \"spring\", stiffness: 300, damping: 30 }}\r\n />\r\n </button>\r\n );\r\n}\r\n\r\nexport default HamburgerElastic;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {useState}from'react';import {motion}from'framer-motion';import {jsxs,jsx}from'react/jsx-runtime';function l(...t){return t.filter(Boolean).join(" ")}function c({className:t,onChange:r}){let[e,o]=useState(false);return jsxs("button",{onClick:()=>{let i=!e;o(i),r?.(i);},className:l("relative w-12 h-12 bg-transparent cursor-pointer flex flex-col items-center justify-center gap-2",t),"aria-label":"Toggle menu",children:[jsx(motion.div,{className:"w-full h-1 bg-black dark:bg-white rounded-full origin-center",animate:e?{rotateX:90,y:0,opacity:0}:{rotateX:0,y:0,opacity:1},transition:{duration:.3,type:"spring",stiffness:300,damping:30}}),jsx(motion.div,{className:"w-full h-1 bg-black dark:bg-white rounded-full origin-center",animate:e?{scaleY:3}:{scaleY:1},transition:{duration:.6,type:"spring",stiffness:200,damping:15}}),jsx(motion.div,{className:"w-full h-1 bg-black dark:bg-white rounded-full origin-center",animate:e?{rotateX:90,y:0,opacity:0}:{rotateX:0,y:0,opacity:1},transition:{duration:.3,type:"spring",stiffness:300,damping:30}})]})}var d=c;export{c as HamburgerElastic,d as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hamburger-elastic/index.tsx"],"names":["cn","classes","HamburgerElastic","className","onChange","isOpen","setIsOpen","useState","jsxs","newState","jsx","motion","hamburger_elastic_default"],"mappings":"yGAKA,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAyC,CACtD,OAAOA,CAAAA,CAAQ,MAAA,CAAO,OAAO,EAAE,IAAA,CAAK,GAAG,CACzC,CAOO,SAASC,EAAiB,CAAE,SAAA,CAAAC,CAAAA,CAAW,QAAA,CAAAC,CAAS,CAAA,CAA0B,CAC/E,GAAM,CAACC,CAAAA,CAAQC,CAAS,CAAA,CAAIC,QAAAA,CAAS,KAAK,CAAA,CAQ1C,OACEC,IAAAA,CAAC,QAAA,CAAA,CACC,QARiB,IAAM,CACzB,IAAMC,CAAAA,CAAW,CAACJ,CAAAA,CAClBC,CAAAA,CAAUG,CAAQ,CAAA,CAClBL,CAAAA,GAAWK,CAAQ,EACrB,CAAA,CAKI,UAAWT,CAAAA,CACT,kGAAA,CACAG,CACF,CAAA,CACA,aAAW,aAAA,CAEX,QAAA,CAAA,CAAAO,IAACC,MAAAA,CAAO,GAAA,CAAP,CACC,SAAA,CAAU,8DAAA,CACV,OAAA,CAASN,CAAAA,CAAS,CAAE,OAAA,CAAS,EAAA,CAAI,EAAG,CAAA,CAAG,OAAA,CAAS,CAAE,CAAA,CAAI,CAAE,OAAA,CAAS,CAAA,CAAG,EAAG,CAAA,CAAG,OAAA,CAAS,CAAE,CAAA,CACrF,UAAA,CAAY,CAAE,QAAA,CAAU,EAAA,CAAK,IAAA,CAAM,QAAA,CAAU,UAAW,GAAA,CAAK,OAAA,CAAS,EAAG,CAAA,CAC3E,CAAA,CACAK,IAACC,MAAAA,CAAO,GAAA,CAAP,CACC,SAAA,CAAU,+DACV,OAAA,CAASN,CAAAA,CAAS,CAAE,MAAA,CAAQ,CAAE,EAAI,CAAE,MAAA,CAAQ,CAAE,CAAA,CAC9C,WAAY,CAAE,QAAA,CAAU,GAAK,IAAA,CAAM,QAAA,CAAU,UAAW,GAAA,CAAK,OAAA,CAAS,EAAG,CAAA,CAC3E,EACAK,GAAAA,CAACC,MAAAA,CAAO,IAAP,CACC,SAAA,CAAU,+DACV,OAAA,CAASN,CAAAA,CAAS,CAAE,OAAA,CAAS,GAAI,CAAA,CAAG,CAAA,CAAG,QAAS,CAAE,CAAA,CAAI,CAAE,OAAA,CAAS,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,QAAS,CAAE,CAAA,CACrF,WAAY,CAAE,QAAA,CAAU,GAAK,IAAA,CAAM,QAAA,CAAU,SAAA,CAAW,GAAA,CAAK,QAAS,EAAG,CAAA,CAC3E,GACF,CAEJ,KAEOO,CAAAA,CAAQV","file":"index.mjs","sourcesContent":["\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface HamburgerElasticProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function HamburgerElastic({ className, onChange }: HamburgerElasticProps) {\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 <button\r\n onClick={handleToggle}\r\n className={cn(\r\n \"relative w-12 h-12 bg-transparent cursor-pointer flex flex-col items-center justify-center gap-2\",\r\n className\r\n )}\r\n aria-label=\"Toggle menu\"\r\n >\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { rotateX: 90, y: 0, opacity: 0 } : { rotateX: 0, y: 0, opacity: 1 }}\r\n transition={{ duration: 0.3, type: \"spring\", stiffness: 300, damping: 30 }}\r\n />\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { scaleY: 3 } : { scaleY: 1 }}\r\n transition={{ duration: 0.6, type: \"spring\", stiffness: 200, damping: 15 }}\r\n />\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { rotateX: 90, y: 0, opacity: 0 } : { rotateX: 0, y: 0, opacity: 1 }}\r\n transition={{ duration: 0.3, type: \"spring\", stiffness: 300, damping: 30 }}\r\n />\r\n </button>\r\n );\r\n}\r\n\r\nexport default HamburgerElastic;\r\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),framerMotion=require('framer-motion'),jsxRuntime=require('react/jsx-runtime');function o(...n){return n.filter(Boolean).join(" ")}function c({className:n,onChange:r}){let[e,s]=react.useState(false);return jsxRuntime.jsxs("button",{onClick:()=>{let i=!e;s(i),r?.(i);},className:o("relative w-12 h-12 bg-transparent cursor-pointer flex flex-col items-center justify-center gap-2",n),"aria-label":"Toggle menu",children:[jsxRuntime.jsx(framerMotion.motion.div,{className:"w-full h-1 bg-black dark:bg-white rounded-full origin-center",animate:e?{scaleX:0}:{scaleX:1},transition:{duration:.3,type:"spring",stiffness:400,damping:30}}),jsxRuntime.jsx(framerMotion.motion.div,{className:"w-full h-1 bg-black dark:bg-white rounded-full origin-center",animate:e?{scaleX:1.2}:{scaleX:1},transition:{duration:.4,type:"spring",stiffness:200,damping:20}}),jsxRuntime.jsx(framerMotion.motion.div,{className:"w-full h-1 bg-black dark:bg-white rounded-full origin-center",animate:e?{scaleX:0}:{scaleX:1},transition:{duration:.3,delay:.05,type:"spring",stiffness:400,damping:30}})]})}var p=c;exports.HamburgerMorph=c;exports.default=p;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hamburger-morph/index.tsx"],"names":["cn","classes","HamburgerMorph","className","onChange","isOpen","setIsOpen","useState","jsxs","newState","jsx","motion","hamburger_morph_default"],"mappings":"+KAKA,SAASA,CAAAA,CAAAA,GAAMC,EAAyC,CACtD,OAAOA,CAAAA,CAAQ,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CACzC,CAOO,SAASC,CAAAA,CAAe,CAAE,SAAA,CAAAC,EAAW,QAAA,CAAAC,CAAS,CAAA,CAAwB,CAC3E,GAAM,CAACC,CAAAA,CAAQC,CAAS,CAAA,CAAIC,eAAS,KAAK,CAAA,CAQ1C,OACEC,eAAAA,CAAC,UACC,OAAA,CARiB,IAAM,CACzB,IAAMC,EAAW,CAACJ,CAAAA,CAClBC,CAAAA,CAAUG,CAAQ,EAClBL,CAAAA,GAAWK,CAAQ,EACrB,CAAA,CAKI,UAAWT,CAAAA,CACT,kGAAA,CACAG,CACF,CAAA,CACA,aAAW,aAAA,CAEX,QAAA,CAAA,CAAAO,cAAAA,CAACC,mBAAAA,CAAO,IAAP,CACC,SAAA,CAAU,8DAAA,CACV,OAAA,CAASN,EAAS,CAAE,MAAA,CAAQ,CAAE,CAAA,CAAI,CAAE,MAAA,CAAQ,CAAE,CAAA,CAC9C,UAAA,CAAY,CAAE,QAAA,CAAU,EAAA,CAAK,IAAA,CAAM,QAAA,CAAU,UAAW,GAAA,CAAK,OAAA,CAAS,EAAG,CAAA,CAC3E,EACAK,cAAAA,CAACC,mBAAAA,CAAO,GAAA,CAAP,CACC,UAAU,8DAAA,CACV,OAAA,CAASN,CAAAA,CAAS,CAAE,OAAQ,GAAI,CAAA,CAAI,CAAE,MAAA,CAAQ,CAAE,CAAA,CAChD,UAAA,CAAY,CAAE,QAAA,CAAU,GAAK,IAAA,CAAM,QAAA,CAAU,SAAA,CAAW,GAAA,CAAK,QAAS,EAAG,CAAA,CAC3E,CAAA,CACAK,cAAAA,CAACC,oBAAO,GAAA,CAAP,CACC,SAAA,CAAU,8DAAA,CACV,QAASN,CAAAA,CAAS,CAAE,MAAA,CAAQ,CAAE,EAAI,CAAE,MAAA,CAAQ,CAAE,CAAA,CAC9C,WAAY,CAAE,QAAA,CAAU,EAAA,CAAK,KAAA,CAAO,IAAM,IAAA,CAAM,QAAA,CAAU,SAAA,CAAW,GAAA,CAAK,QAAS,EAAG,CAAA,CACxF,GACF,CAEJ,KAEOO,CAAAA,CAAQV","file":"index.js","sourcesContent":["\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface HamburgerMorphProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function HamburgerMorph({ className, onChange }: HamburgerMorphProps) {\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 <button\r\n onClick={handleToggle}\r\n className={cn(\r\n \"relative w-12 h-12 bg-transparent cursor-pointer flex flex-col items-center justify-center gap-2\",\r\n className\r\n )}\r\n aria-label=\"Toggle menu\"\r\n >\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { scaleX: 0 } : { scaleX: 1 }}\r\n transition={{ duration: 0.3, type: \"spring\", stiffness: 400, damping: 30 }}\r\n />\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { scaleX: 1.2 } : { scaleX: 1 }}\r\n transition={{ duration: 0.4, type: \"spring\", stiffness: 200, damping: 20 }}\r\n />\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { scaleX: 0 } : { scaleX: 1 }}\r\n transition={{ duration: 0.3, delay: 0.05, type: \"spring\", stiffness: 400, damping: 30 }}\r\n />\r\n </button>\r\n );\r\n}\r\n\r\nexport default HamburgerMorph;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {useState}from'react';import {motion}from'framer-motion';import {jsxs,jsx}from'react/jsx-runtime';function o(...n){return n.filter(Boolean).join(" ")}function c({className:n,onChange:r}){let[e,s]=useState(false);return jsxs("button",{onClick:()=>{let i=!e;s(i),r?.(i);},className:o("relative w-12 h-12 bg-transparent cursor-pointer flex flex-col items-center justify-center gap-2",n),"aria-label":"Toggle menu",children:[jsx(motion.div,{className:"w-full h-1 bg-black dark:bg-white rounded-full origin-center",animate:e?{scaleX:0}:{scaleX:1},transition:{duration:.3,type:"spring",stiffness:400,damping:30}}),jsx(motion.div,{className:"w-full h-1 bg-black dark:bg-white rounded-full origin-center",animate:e?{scaleX:1.2}:{scaleX:1},transition:{duration:.4,type:"spring",stiffness:200,damping:20}}),jsx(motion.div,{className:"w-full h-1 bg-black dark:bg-white rounded-full origin-center",animate:e?{scaleX:0}:{scaleX:1},transition:{duration:.3,delay:.05,type:"spring",stiffness:400,damping:30}})]})}var p=c;export{c as HamburgerMorph,p as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hamburger-morph/index.tsx"],"names":["cn","classes","HamburgerMorph","className","onChange","isOpen","setIsOpen","useState","jsxs","newState","jsx","motion","hamburger_morph_default"],"mappings":"yGAKA,SAASA,CAAAA,CAAAA,GAAMC,EAAyC,CACtD,OAAOA,CAAAA,CAAQ,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CACzC,CAOO,SAASC,CAAAA,CAAe,CAAE,SAAA,CAAAC,EAAW,QAAA,CAAAC,CAAS,CAAA,CAAwB,CAC3E,GAAM,CAACC,CAAAA,CAAQC,CAAS,CAAA,CAAIC,SAAS,KAAK,CAAA,CAQ1C,OACEC,IAAAA,CAAC,UACC,OAAA,CARiB,IAAM,CACzB,IAAMC,EAAW,CAACJ,CAAAA,CAClBC,CAAAA,CAAUG,CAAQ,EAClBL,CAAAA,GAAWK,CAAQ,EACrB,CAAA,CAKI,UAAWT,CAAAA,CACT,kGAAA,CACAG,CACF,CAAA,CACA,aAAW,aAAA,CAEX,QAAA,CAAA,CAAAO,GAAAA,CAACC,MAAAA,CAAO,IAAP,CACC,SAAA,CAAU,8DAAA,CACV,OAAA,CAASN,EAAS,CAAE,MAAA,CAAQ,CAAE,CAAA,CAAI,CAAE,MAAA,CAAQ,CAAE,CAAA,CAC9C,UAAA,CAAY,CAAE,QAAA,CAAU,EAAA,CAAK,IAAA,CAAM,QAAA,CAAU,UAAW,GAAA,CAAK,OAAA,CAAS,EAAG,CAAA,CAC3E,EACAK,GAAAA,CAACC,MAAAA,CAAO,GAAA,CAAP,CACC,UAAU,8DAAA,CACV,OAAA,CAASN,CAAAA,CAAS,CAAE,OAAQ,GAAI,CAAA,CAAI,CAAE,MAAA,CAAQ,CAAE,CAAA,CAChD,UAAA,CAAY,CAAE,QAAA,CAAU,GAAK,IAAA,CAAM,QAAA,CAAU,SAAA,CAAW,GAAA,CAAK,QAAS,EAAG,CAAA,CAC3E,CAAA,CACAK,GAAAA,CAACC,OAAO,GAAA,CAAP,CACC,SAAA,CAAU,8DAAA,CACV,QAASN,CAAAA,CAAS,CAAE,MAAA,CAAQ,CAAE,EAAI,CAAE,MAAA,CAAQ,CAAE,CAAA,CAC9C,WAAY,CAAE,QAAA,CAAU,EAAA,CAAK,KAAA,CAAO,IAAM,IAAA,CAAM,QAAA,CAAU,SAAA,CAAW,GAAA,CAAK,QAAS,EAAG,CAAA,CACxF,GACF,CAEJ,KAEOO,CAAAA,CAAQV","file":"index.mjs","sourcesContent":["\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface HamburgerMorphProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function HamburgerMorph({ className, onChange }: HamburgerMorphProps) {\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 <button\r\n onClick={handleToggle}\r\n className={cn(\r\n \"relative w-12 h-12 bg-transparent cursor-pointer flex flex-col items-center justify-center gap-2\",\r\n className\r\n )}\r\n aria-label=\"Toggle menu\"\r\n >\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { scaleX: 0 } : { scaleX: 1 }}\r\n transition={{ duration: 0.3, type: \"spring\", stiffness: 400, damping: 30 }}\r\n />\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { scaleX: 1.2 } : { scaleX: 1 }}\r\n transition={{ duration: 0.4, type: \"spring\", stiffness: 200, damping: 20 }}\r\n />\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { scaleX: 0 } : { scaleX: 1 }}\r\n transition={{ duration: 0.3, delay: 0.05, type: \"spring\", stiffness: 400, damping: 30 }}\r\n />\r\n </button>\r\n );\r\n}\r\n\r\nexport default HamburgerMorph;\r\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),framerMotion=require('framer-motion'),jsxRuntime=require('react/jsx-runtime');function l(...n){return n.filter(Boolean).join(" ")}function g({className:n,onChange:r}){let[e,o]=react.useState(false);return jsxRuntime.jsxs("button",{onClick:()=>{let i=!e;o(i),r?.(i);},className:l("relative w-12 h-12 bg-transparent cursor-pointer flex flex-col items-center justify-center gap-2 p-2",n),"aria-label":"Toggle menu",children:[jsxRuntime.jsx(framerMotion.motion.div,{className:"w-full h-1 bg-black dark:bg-white rounded-full origin-center",animate:e?{y:-12,rotation:90,scaleX:.8}:{y:0,rotation:0,scaleX:1},transition:{duration:.5,type:"spring",stiffness:200,damping:15}}),jsxRuntime.jsx(framerMotion.motion.div,{className:"w-full h-1 bg-black dark:bg-white rounded-full origin-center",animate:e?{rotation:90,scaleX:.8}:{rotation:0,scaleX:1},transition:{duration:.5,type:"spring",stiffness:200,damping:15}}),jsxRuntime.jsx(framerMotion.motion.div,{className:"w-full h-1 bg-black dark:bg-white rounded-full origin-center",animate:e?{y:12,rotation:90,scaleX:.8}:{y:0,rotation:0,scaleX:1},transition:{duration:.5,type:"spring",stiffness:200,damping:15}})]})}var d=g;exports.HamburgerSpring=g;exports.default=d;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hamburger-spring/index.tsx"],"names":["cn","classes","HamburgerSpring","className","onChange","isOpen","setIsOpen","useState","jsxs","newState","jsx","motion","hamburger_spring_default"],"mappings":"+KAKA,SAASA,KAAMC,CAAAA,CAAyC,CACtD,OAAOA,CAAAA,CAAQ,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CACzC,CAOO,SAASC,CAAAA,CAAgB,CAAE,SAAA,CAAAC,CAAAA,CAAW,QAAA,CAAAC,CAAS,EAAyB,CAC7E,GAAM,CAACC,CAAAA,CAAQC,CAAS,EAAIC,cAAAA,CAAS,KAAK,CAAA,CAQ1C,OACEC,gBAAC,QAAA,CAAA,CACC,OAAA,CARiB,IAAM,CACzB,IAAMC,EAAW,CAACJ,CAAAA,CAClBC,CAAAA,CAAUG,CAAQ,EAClBL,CAAAA,GAAWK,CAAQ,EACrB,CAAA,CAKI,SAAA,CAAWT,EACT,sGAAA,CACAG,CACF,CAAA,CACA,YAAA,CAAW,cAEX,QAAA,CAAA,CAAAO,cAAAA,CAACC,oBAAO,GAAA,CAAP,CACC,UAAU,8DAAA,CACV,OAAA,CAASN,EAAS,CAAE,CAAA,CAAG,IAAK,QAAA,CAAU,EAAA,CAAI,OAAQ,EAAI,CAAA,CAAI,CAAE,CAAA,CAAG,CAAA,CAAG,QAAA,CAAU,CAAA,CAAG,OAAQ,CAAE,CAAA,CACzF,WAAY,CAAE,QAAA,CAAU,GAAK,IAAA,CAAM,QAAA,CAAU,SAAA,CAAW,GAAA,CAAK,QAAS,EAAG,CAAA,CAC3E,EACAK,cAAAA,CAACC,mBAAAA,CAAO,IAAP,CACC,SAAA,CAAU,8DAAA,CACV,OAAA,CAASN,EAAS,CAAE,QAAA,CAAU,GAAI,MAAA,CAAQ,EAAI,EAAI,CAAE,QAAA,CAAU,EAAG,MAAA,CAAQ,CAAE,EAC3E,UAAA,CAAY,CAAE,SAAU,EAAA,CAAK,IAAA,CAAM,SAAU,SAAA,CAAW,GAAA,CAAK,OAAA,CAAS,EAAG,EAC3E,CAAA,CACAK,cAAAA,CAACC,oBAAO,GAAA,CAAP,CACC,UAAU,8DAAA,CACV,OAAA,CAASN,CAAAA,CAAS,CAAE,EAAG,EAAA,CAAI,QAAA,CAAU,GAAI,MAAA,CAAQ,EAAI,EAAI,CAAE,CAAA,CAAG,CAAA,CAAG,QAAA,CAAU,EAAG,MAAA,CAAQ,CAAE,EACxF,UAAA,CAAY,CAAE,SAAU,EAAA,CAAK,IAAA,CAAM,SAAU,SAAA,CAAW,GAAA,CAAK,QAAS,EAAG,CAAA,CAC3E,GACF,CAEJ,KAEOO,CAAAA,CAAQV","file":"index.js","sourcesContent":["\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface HamburgerSpringProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function HamburgerSpring({ className, onChange }: HamburgerSpringProps) {\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 <button\r\n onClick={handleToggle}\r\n className={cn(\r\n \"relative w-12 h-12 bg-transparent cursor-pointer flex flex-col items-center justify-center gap-2 p-2\",\r\n className\r\n )}\r\n aria-label=\"Toggle menu\"\r\n >\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { y: -12, rotation: 90, scaleX: 0.8 } : { y: 0, rotation: 0, scaleX: 1 }}\r\n transition={{ duration: 0.5, type: \"spring\", stiffness: 200, damping: 15 }}\r\n />\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { rotation: 90, scaleX: 0.8 } : { rotation: 0, scaleX: 1 }}\r\n transition={{ duration: 0.5, type: \"spring\", stiffness: 200, damping: 15 }}\r\n />\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { y: 12, rotation: 90, scaleX: 0.8 } : { y: 0, rotation: 0, scaleX: 1 }}\r\n transition={{ duration: 0.5, type: \"spring\", stiffness: 200, damping: 15 }}\r\n />\r\n </button>\r\n );\r\n}\r\n\r\nexport default HamburgerSpring;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {useState}from'react';import {motion}from'framer-motion';import {jsxs,jsx}from'react/jsx-runtime';function l(...n){return n.filter(Boolean).join(" ")}function g({className:n,onChange:r}){let[e,o]=useState(false);return jsxs("button",{onClick:()=>{let i=!e;o(i),r?.(i);},className:l("relative w-12 h-12 bg-transparent cursor-pointer flex flex-col items-center justify-center gap-2 p-2",n),"aria-label":"Toggle menu",children:[jsx(motion.div,{className:"w-full h-1 bg-black dark:bg-white rounded-full origin-center",animate:e?{y:-12,rotation:90,scaleX:.8}:{y:0,rotation:0,scaleX:1},transition:{duration:.5,type:"spring",stiffness:200,damping:15}}),jsx(motion.div,{className:"w-full h-1 bg-black dark:bg-white rounded-full origin-center",animate:e?{rotation:90,scaleX:.8}:{rotation:0,scaleX:1},transition:{duration:.5,type:"spring",stiffness:200,damping:15}}),jsx(motion.div,{className:"w-full h-1 bg-black dark:bg-white rounded-full origin-center",animate:e?{y:12,rotation:90,scaleX:.8}:{y:0,rotation:0,scaleX:1},transition:{duration:.5,type:"spring",stiffness:200,damping:15}})]})}var d=g;export{g as HamburgerSpring,d as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hamburger-spring/index.tsx"],"names":["cn","classes","HamburgerSpring","className","onChange","isOpen","setIsOpen","useState","jsxs","newState","jsx","motion","hamburger_spring_default"],"mappings":"yGAKA,SAASA,KAAMC,CAAAA,CAAyC,CACtD,OAAOA,CAAAA,CAAQ,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CACzC,CAOO,SAASC,CAAAA,CAAgB,CAAE,SAAA,CAAAC,CAAAA,CAAW,QAAA,CAAAC,CAAS,EAAyB,CAC7E,GAAM,CAACC,CAAAA,CAAQC,CAAS,EAAIC,QAAAA,CAAS,KAAK,CAAA,CAQ1C,OACEC,KAAC,QAAA,CAAA,CACC,OAAA,CARiB,IAAM,CACzB,IAAMC,EAAW,CAACJ,CAAAA,CAClBC,CAAAA,CAAUG,CAAQ,EAClBL,CAAAA,GAAWK,CAAQ,EACrB,CAAA,CAKI,SAAA,CAAWT,EACT,sGAAA,CACAG,CACF,CAAA,CACA,YAAA,CAAW,cAEX,QAAA,CAAA,CAAAO,GAAAA,CAACC,OAAO,GAAA,CAAP,CACC,UAAU,8DAAA,CACV,OAAA,CAASN,EAAS,CAAE,CAAA,CAAG,IAAK,QAAA,CAAU,EAAA,CAAI,OAAQ,EAAI,CAAA,CAAI,CAAE,CAAA,CAAG,CAAA,CAAG,QAAA,CAAU,CAAA,CAAG,OAAQ,CAAE,CAAA,CACzF,WAAY,CAAE,QAAA,CAAU,GAAK,IAAA,CAAM,QAAA,CAAU,SAAA,CAAW,GAAA,CAAK,QAAS,EAAG,CAAA,CAC3E,EACAK,GAAAA,CAACC,MAAAA,CAAO,IAAP,CACC,SAAA,CAAU,8DAAA,CACV,OAAA,CAASN,EAAS,CAAE,QAAA,CAAU,GAAI,MAAA,CAAQ,EAAI,EAAI,CAAE,QAAA,CAAU,EAAG,MAAA,CAAQ,CAAE,EAC3E,UAAA,CAAY,CAAE,SAAU,EAAA,CAAK,IAAA,CAAM,SAAU,SAAA,CAAW,GAAA,CAAK,OAAA,CAAS,EAAG,EAC3E,CAAA,CACAK,GAAAA,CAACC,OAAO,GAAA,CAAP,CACC,UAAU,8DAAA,CACV,OAAA,CAASN,CAAAA,CAAS,CAAE,EAAG,EAAA,CAAI,QAAA,CAAU,GAAI,MAAA,CAAQ,EAAI,EAAI,CAAE,CAAA,CAAG,CAAA,CAAG,QAAA,CAAU,EAAG,MAAA,CAAQ,CAAE,EACxF,UAAA,CAAY,CAAE,SAAU,EAAA,CAAK,IAAA,CAAM,SAAU,SAAA,CAAW,GAAA,CAAK,QAAS,EAAG,CAAA,CAC3E,GACF,CAEJ,KAEOO,CAAAA,CAAQV","file":"index.mjs","sourcesContent":["\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface HamburgerSpringProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function HamburgerSpring({ className, onChange }: HamburgerSpringProps) {\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 <button\r\n onClick={handleToggle}\r\n className={cn(\r\n \"relative w-12 h-12 bg-transparent cursor-pointer flex flex-col items-center justify-center gap-2 p-2\",\r\n className\r\n )}\r\n aria-label=\"Toggle menu\"\r\n >\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { y: -12, rotation: 90, scaleX: 0.8 } : { y: 0, rotation: 0, scaleX: 1 }}\r\n transition={{ duration: 0.5, type: \"spring\", stiffness: 200, damping: 15 }}\r\n />\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { rotation: 90, scaleX: 0.8 } : { rotation: 0, scaleX: 1 }}\r\n transition={{ duration: 0.5, type: \"spring\", stiffness: 200, damping: 15 }}\r\n />\r\n <motion.div\r\n className=\"w-full h-1 bg-black dark:bg-white rounded-full origin-center\"\r\n animate={isOpen ? { y: 12, rotation: 90, scaleX: 0.8 } : { y: 0, rotation: 0, scaleX: 1 }}\r\n transition={{ duration: 0.5, type: \"spring\", stiffness: 200, damping: 15 }}\r\n />\r\n </button>\r\n );\r\n}\r\n\r\nexport default HamburgerSpring;\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 r(...t){return t.filter(Boolean).join(" ")}function g({className:t,onChange:o}){let[e,n]=react.useState(false),s=()=>{let l=!e;n(l),o?.(l);};return jsxRuntime.jsxs("label",{className:r("w-12 h-8 cursor-pointer relative block",t),htmlFor:"burger-stagger",children:[jsxRuntime.jsx("input",{type:"checkbox",id:"burger-stagger",className:"hidden w-full h-full",checked:e,onChange:s}),jsxRuntime.jsx("span",{className:r("block absolute w-full rounded-lg border-[3px] border-black dark:border-white bg-black dark:bg-white transition-all duration-150 ease-in-out","top-0 right-0 origin-right",e&&"w-1/2 top-1/2 -translate-y-[30%] rotate-[40deg]")}),jsxRuntime.jsx("span",{className:r("block absolute w-full rounded-lg border-[3px] border-black dark:border-white bg-black dark:bg-white transition-all duration-150 ease-in-out","top-1/2 -translate-y-1/2")}),jsxRuntime.jsx("span",{className:r("block absolute w-full rounded-lg border-[3px] border-black dark:border-white bg-black dark:bg-white transition-all duration-150 ease-in-out","top-full right-0 origin-right -translate-y-full",e&&"w-1/2 top-1/2 -translate-y-[70%] -rotate-[40deg]")})]})}var u=g;exports.HamburgerStagger=g;exports.default=u;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hamburger-stagger/index.tsx"],"names":["cn","classes","HamburgerStagger","className","onChange","isOpen","setIsOpen","useState","handleToggle","newState","jsxs","jsx","hamburger_stagger_default"],"mappings":"yIAIA,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAyC,CACtD,OAAOA,CAAAA,CAAQ,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CACzC,CAOO,SAASC,CAAAA,CAAiB,CAAE,SAAA,CAAAC,EAAW,QAAA,CAAAC,CAAS,CAAA,CAA0B,CAC/E,GAAM,CAACC,EAAQC,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,gBAAC,OAAA,CAAA,CACC,SAAA,CAAWV,CAAAA,CACT,wCAAA,CACAG,CACF,CAAA,CACA,QAAQ,gBAAA,CAER,QAAA,CAAA,CAAAQ,cAAAA,CAAC,OAAA,CAAA,CACC,IAAA,CAAK,UAAA,CACL,GAAG,gBAAA,CACH,SAAA,CAAU,sBAAA,CACV,OAAA,CAASN,CAAAA,CACT,QAAA,CAAUG,EACZ,CAAA,CACAG,cAAAA,CAAC,MAAA,CAAA,CACC,SAAA,CAAWX,CAAAA,CACT,6IAAA,CACA,6BACAK,CAAAA,EAAU,iDACZ,CAAA,CACF,CAAA,CACAM,cAAAA,CAAC,MAAA,CAAA,CACC,UAAWX,CAAAA,CACT,6IAAA,CACA,0BACF,CAAA,CACF,CAAA,CACAW,cAAAA,CAAC,QACC,SAAA,CAAWX,CAAAA,CACT,6IAAA,CACA,iDAAA,CACAK,CAAAA,EAAU,kDACZ,EACF,CAAA,CAAA,CACF,CAEJ,CAEA,IAAOO,CAAAA,CAAQV","file":"index.js","sourcesContent":["\"use client\";\r\n\r\nimport { useState } from \"react\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface HamburgerStaggerProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function HamburgerStagger({ className, onChange }: HamburgerStaggerProps) {\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 \"w-12 h-8 cursor-pointer relative block\",\r\n className\r\n )}\r\n htmlFor=\"burger-stagger\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n id=\"burger-stagger\"\r\n className=\"hidden w-full h-full\"\r\n checked={isOpen}\r\n onChange={handleToggle}\r\n />\r\n <span\r\n className={cn(\r\n \"block absolute w-full rounded-lg border-[3px] border-black dark:border-white bg-black dark:bg-white transition-all duration-150 ease-in-out\",\r\n \"top-0 right-0 origin-right\",\r\n isOpen && \"w-1/2 top-1/2 -translate-y-[30%] rotate-[40deg]\"\r\n )}\r\n />\r\n <span\r\n className={cn(\r\n \"block absolute w-full rounded-lg border-[3px] border-black dark:border-white bg-black dark:bg-white transition-all duration-150 ease-in-out\",\r\n \"top-1/2 -translate-y-1/2\"\r\n )}\r\n />\r\n <span\r\n className={cn(\r\n \"block absolute w-full rounded-lg border-[3px] border-black dark:border-white bg-black dark:bg-white transition-all duration-150 ease-in-out\",\r\n \"top-full right-0 origin-right -translate-y-full\",\r\n isOpen && \"w-1/2 top-1/2 -translate-y-[70%] -rotate-[40deg]\"\r\n )}\r\n />\r\n </label>\r\n );\r\n}\r\n\r\nexport default HamburgerStagger;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {useState}from'react';import {jsxs,jsx}from'react/jsx-runtime';function r(...t){return t.filter(Boolean).join(" ")}function g({className:t,onChange:o}){let[e,n]=useState(false),s=()=>{let l=!e;n(l),o?.(l);};return jsxs("label",{className:r("w-12 h-8 cursor-pointer relative block",t),htmlFor:"burger-stagger",children:[jsx("input",{type:"checkbox",id:"burger-stagger",className:"hidden w-full h-full",checked:e,onChange:s}),jsx("span",{className:r("block absolute w-full rounded-lg border-[3px] border-black dark:border-white bg-black dark:bg-white transition-all duration-150 ease-in-out","top-0 right-0 origin-right",e&&"w-1/2 top-1/2 -translate-y-[30%] rotate-[40deg]")}),jsx("span",{className:r("block absolute w-full rounded-lg border-[3px] border-black dark:border-white bg-black dark:bg-white transition-all duration-150 ease-in-out","top-1/2 -translate-y-1/2")}),jsx("span",{className:r("block absolute w-full rounded-lg border-[3px] border-black dark:border-white bg-black dark:bg-white transition-all duration-150 ease-in-out","top-full right-0 origin-right -translate-y-full",e&&"w-1/2 top-1/2 -translate-y-[70%] -rotate-[40deg]")})]})}var u=g;export{g as HamburgerStagger,u as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hamburger-stagger/index.tsx"],"names":["cn","classes","HamburgerStagger","className","onChange","isOpen","setIsOpen","useState","handleToggle","newState","jsxs","jsx","hamburger_stagger_default"],"mappings":"sEAIA,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAyC,CACtD,OAAOA,CAAAA,CAAQ,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CACzC,CAOO,SAASC,CAAAA,CAAiB,CAAE,SAAA,CAAAC,EAAW,QAAA,CAAAC,CAAS,CAAA,CAA0B,CAC/E,GAAM,CAACC,EAAQC,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,KAAC,OAAA,CAAA,CACC,SAAA,CAAWV,CAAAA,CACT,wCAAA,CACAG,CACF,CAAA,CACA,QAAQ,gBAAA,CAER,QAAA,CAAA,CAAAQ,GAAAA,CAAC,OAAA,CAAA,CACC,IAAA,CAAK,UAAA,CACL,GAAG,gBAAA,CACH,SAAA,CAAU,sBAAA,CACV,OAAA,CAASN,CAAAA,CACT,QAAA,CAAUG,EACZ,CAAA,CACAG,GAAAA,CAAC,MAAA,CAAA,CACC,SAAA,CAAWX,CAAAA,CACT,6IAAA,CACA,6BACAK,CAAAA,EAAU,iDACZ,CAAA,CACF,CAAA,CACAM,GAAAA,CAAC,MAAA,CAAA,CACC,UAAWX,CAAAA,CACT,6IAAA,CACA,0BACF,CAAA,CACF,CAAA,CACAW,GAAAA,CAAC,QACC,SAAA,CAAWX,CAAAA,CACT,6IAAA,CACA,iDAAA,CACAK,CAAAA,EAAU,kDACZ,EACF,CAAA,CAAA,CACF,CAEJ,CAEA,IAAOO,CAAAA,CAAQV","file":"index.mjs","sourcesContent":["\"use client\";\r\n\r\nimport { useState } from \"react\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface HamburgerStaggerProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function HamburgerStagger({ className, onChange }: HamburgerStaggerProps) {\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 \"w-12 h-8 cursor-pointer relative block\",\r\n className\r\n )}\r\n htmlFor=\"burger-stagger\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n id=\"burger-stagger\"\r\n className=\"hidden w-full h-full\"\r\n checked={isOpen}\r\n onChange={handleToggle}\r\n />\r\n <span\r\n className={cn(\r\n \"block absolute w-full rounded-lg border-[3px] border-black dark:border-white bg-black dark:bg-white transition-all duration-150 ease-in-out\",\r\n \"top-0 right-0 origin-right\",\r\n isOpen && \"w-1/2 top-1/2 -translate-y-[30%] rotate-[40deg]\"\r\n )}\r\n />\r\n <span\r\n className={cn(\r\n \"block absolute w-full rounded-lg border-[3px] border-black dark:border-white bg-black dark:bg-white transition-all duration-150 ease-in-out\",\r\n \"top-1/2 -translate-y-1/2\"\r\n )}\r\n />\r\n <span\r\n className={cn(\r\n \"block absolute w-full rounded-lg border-[3px] border-black dark:border-white bg-black dark:bg-white transition-all duration-150 ease-in-out\",\r\n \"top-full right-0 origin-right -translate-y-full\",\r\n isOpen && \"w-1/2 top-1/2 -translate-y-[70%] -rotate-[40deg]\"\r\n )}\r\n />\r\n </label>\r\n );\r\n}\r\n\r\nexport default HamburgerStagger;\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 t(...n){return n.filter(Boolean).join(" ")}function i({className:n,onChange:o}){let[e,s]=react.useState(false);return jsxRuntime.jsx("button",{onClick:()=>{let l=!e;s(l),o?.(l);},className:t("relative w-12 h-12 bg-transparent cursor-pointer flex items-center justify-center",n),"aria-label":"Toggle menu",children:jsxRuntime.jsxs("div",{className:"relative w-8 h-8",children:[jsxRuntime.jsx("span",{className:t("absolute w-2 h-2 bg-black dark:bg-white rounded-sm transition-all duration-300 ease-out",e?"top-0 left-0":"top-0 left-1/2 -translate-x-1/2 w-8 h-0.5 rounded-full")}),jsxRuntime.jsx("span",{className:t("absolute w-2 h-2 bg-black dark:bg-white rounded-sm transition-all duration-300 ease-out delay-75",e?"top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2":"top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-8 h-0.5 rounded-full")}),jsxRuntime.jsx("span",{className:t("absolute w-2 h-2 bg-black dark:bg-white rounded-sm transition-all duration-300 ease-out delay-150",e?"bottom-0 right-0":"bottom-0 left-1/2 -translate-x-1/2 w-8 h-0.5 rounded-full")})]})})}var c=i;exports.HamburgerWave=i;exports.default=c;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hamburger-wave/index.tsx"],"names":["cn","classes","HamburgerWave","className","onChange","isOpen","setIsOpen","useState","jsx","newState","jsxs","hamburger_wave_default"],"mappings":"yIAIA,SAASA,CAAAA,CAAAA,GAAMC,EAAyC,CACtD,OAAOA,EAAQ,MAAA,CAAO,OAAO,EAAE,IAAA,CAAK,GAAG,CACzC,CAOO,SAASC,CAAAA,CAAc,CAAE,SAAA,CAAAC,CAAAA,CAAW,SAAAC,CAAS,CAAA,CAAuB,CACzE,GAAM,CAACC,CAAAA,CAAQC,CAAS,CAAA,CAAIC,cAAAA,CAAS,KAAK,CAAA,CAQ1C,OACEC,cAAAA,CAAC,QAAA,CAAA,CACC,OAAA,CARiB,IAAM,CACzB,IAAMC,CAAAA,CAAW,CAACJ,CAAAA,CAClBC,CAAAA,CAAUG,CAAQ,EAClBL,CAAAA,GAAWK,CAAQ,EACrB,CAAA,CAKI,SAAA,CAAWT,EACT,mFAAA,CACAG,CACF,CAAA,CACA,YAAA,CAAW,aAAA,CAEX,QAAA,CAAAO,gBAAC,KAAA,CAAA,CAAI,SAAA,CAAU,kBAAA,CACb,QAAA,CAAA,CAAAF,cAAAA,CAAC,MAAA,CAAA,CACC,UAAWR,CAAAA,CACT,yFAAA,CACAK,CAAAA,CACI,cAAA,CACA,wDACN,CAAA,CACF,EACAG,cAAAA,CAAC,MAAA,CAAA,CACC,UAAWR,CAAAA,CACT,kGAAA,CACAK,EACI,oDAAA,CACA,2EACN,CAAA,CACF,CAAA,CACAG,cAAAA,CAAC,MAAA,CAAA,CACC,UAAWR,CAAAA,CACT,mGAAA,CACAK,CAAAA,CACI,kBAAA,CACA,2DACN,CAAA,CACF,GACF,CAAA,CACF,CAEJ,CAEA,IAAOM,CAAAA,CAAQT","file":"index.js","sourcesContent":["\"use client\";\r\n\r\nimport { useState } from \"react\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface HamburgerWaveProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function HamburgerWave({ className, onChange }: HamburgerWaveProps) {\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 <button\r\n onClick={handleToggle}\r\n className={cn(\r\n \"relative w-12 h-12 bg-transparent cursor-pointer flex items-center justify-center\",\r\n className\r\n )}\r\n aria-label=\"Toggle menu\"\r\n >\r\n <div className=\"relative w-8 h-8\">\r\n <span\r\n className={cn(\r\n \"absolute w-2 h-2 bg-black dark:bg-white rounded-sm transition-all duration-300 ease-out\",\r\n isOpen \r\n ? \"top-0 left-0\" \r\n : \"top-0 left-1/2 -translate-x-1/2 w-8 h-0.5 rounded-full\"\r\n )}\r\n />\r\n <span\r\n className={cn(\r\n \"absolute w-2 h-2 bg-black dark:bg-white rounded-sm transition-all duration-300 ease-out delay-75\",\r\n isOpen \r\n ? \"top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2\" \r\n : \"top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-8 h-0.5 rounded-full\"\r\n )}\r\n />\r\n <span\r\n className={cn(\r\n \"absolute w-2 h-2 bg-black dark:bg-white rounded-sm transition-all duration-300 ease-out delay-150\",\r\n isOpen \r\n ? \"bottom-0 right-0\" \r\n : \"bottom-0 left-1/2 -translate-x-1/2 w-8 h-0.5 rounded-full\"\r\n )}\r\n />\r\n </div>\r\n </button>\r\n );\r\n}\r\n\r\nexport default HamburgerWave;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {useState}from'react';import {jsx,jsxs}from'react/jsx-runtime';function t(...n){return n.filter(Boolean).join(" ")}function i({className:n,onChange:o}){let[e,s]=useState(false);return jsx("button",{onClick:()=>{let l=!e;s(l),o?.(l);},className:t("relative w-12 h-12 bg-transparent cursor-pointer flex items-center justify-center",n),"aria-label":"Toggle menu",children:jsxs("div",{className:"relative w-8 h-8",children:[jsx("span",{className:t("absolute w-2 h-2 bg-black dark:bg-white rounded-sm transition-all duration-300 ease-out",e?"top-0 left-0":"top-0 left-1/2 -translate-x-1/2 w-8 h-0.5 rounded-full")}),jsx("span",{className:t("absolute w-2 h-2 bg-black dark:bg-white rounded-sm transition-all duration-300 ease-out delay-75",e?"top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2":"top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-8 h-0.5 rounded-full")}),jsx("span",{className:t("absolute w-2 h-2 bg-black dark:bg-white rounded-sm transition-all duration-300 ease-out delay-150",e?"bottom-0 right-0":"bottom-0 left-1/2 -translate-x-1/2 w-8 h-0.5 rounded-full")})]})})}var c=i;export{i as HamburgerWave,c as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hamburger-wave/index.tsx"],"names":["cn","classes","HamburgerWave","className","onChange","isOpen","setIsOpen","useState","jsx","newState","jsxs","hamburger_wave_default"],"mappings":"sEAIA,SAASA,CAAAA,CAAAA,GAAMC,EAAyC,CACtD,OAAOA,EAAQ,MAAA,CAAO,OAAO,EAAE,IAAA,CAAK,GAAG,CACzC,CAOO,SAASC,CAAAA,CAAc,CAAE,SAAA,CAAAC,CAAAA,CAAW,SAAAC,CAAS,CAAA,CAAuB,CACzE,GAAM,CAACC,CAAAA,CAAQC,CAAS,CAAA,CAAIC,QAAAA,CAAS,KAAK,CAAA,CAQ1C,OACEC,GAAAA,CAAC,QAAA,CAAA,CACC,OAAA,CARiB,IAAM,CACzB,IAAMC,CAAAA,CAAW,CAACJ,CAAAA,CAClBC,CAAAA,CAAUG,CAAQ,EAClBL,CAAAA,GAAWK,CAAQ,EACrB,CAAA,CAKI,SAAA,CAAWT,EACT,mFAAA,CACAG,CACF,CAAA,CACA,YAAA,CAAW,aAAA,CAEX,QAAA,CAAAO,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,kBAAA,CACb,QAAA,CAAA,CAAAF,GAAAA,CAAC,MAAA,CAAA,CACC,UAAWR,CAAAA,CACT,yFAAA,CACAK,CAAAA,CACI,cAAA,CACA,wDACN,CAAA,CACF,EACAG,GAAAA,CAAC,MAAA,CAAA,CACC,UAAWR,CAAAA,CACT,kGAAA,CACAK,EACI,oDAAA,CACA,2EACN,CAAA,CACF,CAAA,CACAG,GAAAA,CAAC,MAAA,CAAA,CACC,UAAWR,CAAAA,CACT,mGAAA,CACAK,CAAAA,CACI,kBAAA,CACA,2DACN,CAAA,CACF,GACF,CAAA,CACF,CAEJ,CAEA,IAAOM,CAAAA,CAAQT","file":"index.mjs","sourcesContent":["\"use client\";\r\n\r\nimport { useState } from \"react\";\r\n\r\nfunction cn(...classes: (string | undefined | false)[]) {\r\n return classes.filter(Boolean).join(\" \");\r\n}\r\n\r\ninterface HamburgerWaveProps {\r\n className?: string;\r\n onChange?: (isOpen: boolean) => void;\r\n}\r\n\r\nexport function HamburgerWave({ className, onChange }: HamburgerWaveProps) {\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 <button\r\n onClick={handleToggle}\r\n className={cn(\r\n \"relative w-12 h-12 bg-transparent cursor-pointer flex items-center justify-center\",\r\n className\r\n )}\r\n aria-label=\"Toggle menu\"\r\n >\r\n <div className=\"relative w-8 h-8\">\r\n <span\r\n className={cn(\r\n \"absolute w-2 h-2 bg-black dark:bg-white rounded-sm transition-all duration-300 ease-out\",\r\n isOpen \r\n ? \"top-0 left-0\" \r\n : \"top-0 left-1/2 -translate-x-1/2 w-8 h-0.5 rounded-full\"\r\n )}\r\n />\r\n <span\r\n className={cn(\r\n \"absolute w-2 h-2 bg-black dark:bg-white rounded-sm transition-all duration-300 ease-out delay-75\",\r\n isOpen \r\n ? \"top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2\" \r\n : \"top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-8 h-0.5 rounded-full\"\r\n )}\r\n />\r\n <span\r\n className={cn(\r\n \"absolute w-2 h-2 bg-black dark:bg-white rounded-sm transition-all duration-300 ease-out delay-150\",\r\n isOpen \r\n ? \"bottom-0 right-0\" \r\n : \"bottom-0 left-1/2 -translate-x-1/2 w-8 h-0.5 rounded-full\"\r\n )}\r\n />\r\n </div>\r\n </button>\r\n );\r\n}\r\n\r\nexport default HamburgerWave;\r\n"]}