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 framerMotion=require('framer-motion'),jsxRuntime=require('react/jsx-runtime');function i(...n){return n.filter(Boolean).join(" ")}function c({title:n="Configuring your account...",subtitle:s="Please wait while we prepare everything for you",size:l="md",className:o,...d}){let e={sm:{container:"size-20",titleClass:"text-sm/tight font-medium",subtitleClass:"text-xs/relaxed",spacing:"space-y-2",maxWidth:"max-w-48"},md:{container:"size-32",titleClass:"text-base/snug font-medium",subtitleClass:"text-sm/relaxed",spacing:"space-y-3",maxWidth:"max-w-56"},lg:{container:"size-40",titleClass:"text-lg/tight font-semibold",subtitleClass:"text-base/relaxed",spacing:"space-y-4",maxWidth:"max-w-64"}}[l];return jsxRuntime.jsxs("div",{className:i("flex flex-col items-center justify-center gap-8 p-8",o),...d,children:[jsxRuntime.jsxs(framerMotion.motion.div,{className:i("relative",e.container),animate:{scale:[1,1.02,1]},transition:{duration:4,repeat:1/0,ease:[.4,0,.6,1]},children:[jsxRuntime.jsx(framerMotion.motion.div,{className:"absolute inset-0 rounded-full",style:{background:"conic-gradient(from 0deg, transparent 0deg, rgb(0, 0, 0) 90deg, transparent 180deg)",mask:"radial-gradient(circle at 50% 50%, transparent 35%, black 37%, black 39%, transparent 41%)",WebkitMask:"radial-gradient(circle at 50% 50%, transparent 35%, black 37%, black 39%, transparent 41%)",opacity:.8},animate:{rotate:[0,360]},transition:{duration:3,repeat:1/0,ease:"linear"}}),jsxRuntime.jsx(framerMotion.motion.div,{className:"absolute inset-0 rounded-full",style:{background:"conic-gradient(from 0deg, transparent 0deg, rgb(0, 0, 0) 120deg, rgba(0, 0, 0, 0.5) 240deg, transparent 360deg)",mask:"radial-gradient(circle at 50% 50%, transparent 42%, black 44%, black 48%, transparent 50%)",WebkitMask:"radial-gradient(circle at 50% 50%, transparent 42%, black 44%, black 48%, transparent 50%)",opacity:.9},animate:{rotate:[0,360]},transition:{duration:2.5,repeat:1/0,ease:[.4,0,.6,1]}}),jsxRuntime.jsx(framerMotion.motion.div,{className:"absolute inset-0 rounded-full dark:block hidden",style:{background:"conic-gradient(from 0deg, transparent 0deg, rgb(255, 255, 255) 90deg, transparent 180deg)",mask:"radial-gradient(circle at 50% 50%, transparent 35%, black 37%, black 39%, transparent 41%)",WebkitMask:"radial-gradient(circle at 50% 50%, transparent 35%, black 37%, black 39%, transparent 41%)",opacity:.8},animate:{rotate:[0,360]},transition:{duration:3,repeat:1/0,ease:"linear"}}),jsxRuntime.jsx(framerMotion.motion.div,{className:"absolute inset-0 rounded-full dark:block hidden",style:{background:"conic-gradient(from 0deg, transparent 0deg, rgb(255, 255, 255) 120deg, rgba(255, 255, 255, 0.5) 240deg, transparent 360deg)",mask:"radial-gradient(circle at 50% 50%, transparent 42%, black 44%, black 48%, transparent 50%)",WebkitMask:"radial-gradient(circle at 50% 50%, transparent 42%, black 44%, black 48%, transparent 50%)",opacity:.9},animate:{rotate:[0,360]},transition:{duration:2.5,repeat:1/0,ease:[.4,0,.6,1]}})]}),jsxRuntime.jsxs(framerMotion.motion.div,{className:i("text-center",e.spacing,e.maxWidth),initial:{opacity:0,y:12},animate:{opacity:1,y:0},transition:{delay:.4,duration:1,ease:[.4,0,.2,1]},children:[jsxRuntime.jsx(framerMotion.motion.h1,{className:i(e.titleClass,"text-black/90 dark:text-white/90 font-medium tracking-[-0.02em] leading-[1.15] antialiased"),initial:{opacity:0,y:12},animate:{opacity:1,y:0},transition:{delay:.6,duration:.8,ease:[.4,0,.2,1]},children:jsxRuntime.jsx(framerMotion.motion.span,{animate:{opacity:[.9,.7,.9]},transition:{duration:3,repeat:1/0,ease:[.4,0,.6,1]},children:n})}),jsxRuntime.jsx(framerMotion.motion.p,{className:i(e.subtitleClass,"text-black/60 dark:text-white/60 font-normal tracking-[-0.01em] leading-[1.45] antialiased"),initial:{opacity:0,y:8},animate:{opacity:1,y:0},transition:{delay:.8,duration:.8,ease:[.4,0,.2,1]},children:jsxRuntime.jsx(framerMotion.motion.span,{animate:{opacity:[.6,.4,.6]},transition:{duration:4,repeat:1/0,ease:[.4,0,.6,1]},children:s})})]})]})}var m=c;exports.Loader=c;exports.default=m;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/loader/index.tsx"],"names":["cn","classes","Loader","title","subtitle","size","className","props","config","jsxs","motion","jsx","loader_default"],"mappings":"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","file":"index.js","sourcesContent":["\"use client\";\r\n\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 LoaderProps extends React.HTMLAttributes<HTMLDivElement> {\r\n title?: string;\r\n subtitle?: string;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nexport function Loader({\r\n title = \"Configuring your account...\",\r\n subtitle = \"Please wait while we prepare everything for you\",\r\n size = \"md\",\r\n className,\r\n ...props\r\n}: LoaderProps) {\r\n const sizeConfig = {\r\n sm: {\r\n container: \"size-20\",\r\n titleClass: \"text-sm/tight font-medium\",\r\n subtitleClass: \"text-xs/relaxed\",\r\n spacing: \"space-y-2\",\r\n maxWidth: \"max-w-48\",\r\n },\r\n md: {\r\n container: \"size-32\",\r\n titleClass: \"text-base/snug font-medium\",\r\n subtitleClass: \"text-sm/relaxed\",\r\n spacing: \"space-y-3\",\r\n maxWidth: \"max-w-56\",\r\n },\r\n lg: {\r\n container: \"size-40\",\r\n titleClass: \"text-lg/tight font-semibold\",\r\n subtitleClass: \"text-base/relaxed\",\r\n spacing: \"space-y-4\",\r\n maxWidth: \"max-w-64\",\r\n },\r\n };\r\n\r\n const config = sizeConfig[size];\r\n\r\n return (\r\n <div\r\n className={cn(\r\n \"flex flex-col items-center justify-center gap-8 p-8\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <motion.div\r\n className={cn(\"relative\", config.container)}\r\n animate={{\r\n scale: [1, 1.02, 1],\r\n }}\r\n transition={{\r\n duration: 4,\r\n repeat: Infinity,\r\n ease: [0.4, 0, 0.6, 1],\r\n }}\r\n >\r\n <motion.div\r\n className=\"absolute inset-0 rounded-full\"\r\n style={{\r\n background: `conic-gradient(from 0deg, transparent 0deg, rgb(0, 0, 0) 90deg, transparent 180deg)`,\r\n mask: `radial-gradient(circle at 50% 50%, transparent 35%, black 37%, black 39%, transparent 41%)`,\r\n WebkitMask: `radial-gradient(circle at 50% 50%, transparent 35%, black 37%, black 39%, transparent 41%)`,\r\n opacity: 0.8,\r\n }}\r\n animate={{\r\n rotate: [0, 360],\r\n }}\r\n transition={{\r\n duration: 3,\r\n repeat: Infinity,\r\n ease: \"linear\",\r\n }}\r\n />\r\n\r\n <motion.div\r\n className=\"absolute inset-0 rounded-full\"\r\n style={{\r\n background: `conic-gradient(from 0deg, transparent 0deg, rgb(0, 0, 0) 120deg, rgba(0, 0, 0, 0.5) 240deg, transparent 360deg)`,\r\n mask: `radial-gradient(circle at 50% 50%, transparent 42%, black 44%, black 48%, transparent 50%)`,\r\n WebkitMask: `radial-gradient(circle at 50% 50%, transparent 42%, black 44%, black 48%, transparent 50%)`,\r\n opacity: 0.9,\r\n }}\r\n animate={{\r\n rotate: [0, 360],\r\n }}\r\n transition={{\r\n duration: 2.5,\r\n repeat: Infinity,\r\n ease: [0.4, 0, 0.6, 1],\r\n }}\r\n />\r\n\r\n <motion.div\r\n className=\"absolute inset-0 rounded-full dark:block hidden\"\r\n style={{\r\n background: `conic-gradient(from 0deg, transparent 0deg, rgb(255, 255, 255) 90deg, transparent 180deg)`,\r\n mask: `radial-gradient(circle at 50% 50%, transparent 35%, black 37%, black 39%, transparent 41%)`,\r\n WebkitMask: `radial-gradient(circle at 50% 50%, transparent 35%, black 37%, black 39%, transparent 41%)`,\r\n opacity: 0.8,\r\n }}\r\n animate={{\r\n rotate: [0, 360],\r\n }}\r\n transition={{\r\n duration: 3,\r\n repeat: Infinity,\r\n ease: \"linear\",\r\n }}\r\n />\r\n\r\n <motion.div\r\n className=\"absolute inset-0 rounded-full dark:block hidden\"\r\n style={{\r\n background: `conic-gradient(from 0deg, transparent 0deg, rgb(255, 255, 255) 120deg, rgba(255, 255, 255, 0.5) 240deg, transparent 360deg)`,\r\n mask: `radial-gradient(circle at 50% 50%, transparent 42%, black 44%, black 48%, transparent 50%)`,\r\n WebkitMask: `radial-gradient(circle at 50% 50%, transparent 42%, black 44%, black 48%, transparent 50%)`,\r\n opacity: 0.9,\r\n }}\r\n animate={{\r\n rotate: [0, 360],\r\n }}\r\n transition={{\r\n duration: 2.5,\r\n repeat: Infinity,\r\n ease: [0.4, 0, 0.6, 1],\r\n }}\r\n />\r\n </motion.div>\r\n\r\n <motion.div\r\n className={cn(\"text-center\", config.spacing, config.maxWidth)}\r\n initial={{ opacity: 0, y: 12 }}\r\n animate={{\r\n opacity: 1,\r\n y: 0,\r\n }}\r\n transition={{\r\n delay: 0.4,\r\n duration: 1,\r\n ease: [0.4, 0, 0.2, 1],\r\n }}\r\n >\r\n <motion.h1\r\n className={cn(\r\n config.titleClass,\r\n \"text-black/90 dark:text-white/90 font-medium tracking-[-0.02em] leading-[1.15] antialiased\"\r\n )}\r\n initial={{ opacity: 0, y: 12 }}\r\n animate={{\r\n opacity: 1,\r\n y: 0,\r\n }}\r\n transition={{\r\n delay: 0.6,\r\n duration: 0.8,\r\n ease: [0.4, 0, 0.2, 1],\r\n }}\r\n >\r\n <motion.span\r\n animate={{\r\n opacity: [0.9, 0.7, 0.9],\r\n }}\r\n transition={{\r\n duration: 3,\r\n repeat: Infinity,\r\n ease: [0.4, 0, 0.6, 1],\r\n }}\r\n >\r\n {title}\r\n </motion.span>\r\n </motion.h1>\r\n\r\n <motion.p\r\n className={cn(\r\n config.subtitleClass,\r\n \"text-black/60 dark:text-white/60 font-normal tracking-[-0.01em] leading-[1.45] antialiased\"\r\n )}\r\n initial={{ opacity: 0, y: 8 }}\r\n animate={{\r\n opacity: 1,\r\n y: 0,\r\n }}\r\n transition={{\r\n delay: 0.8,\r\n duration: 0.8,\r\n ease: [0.4, 0, 0.2, 1],\r\n }}\r\n >\r\n <motion.span\r\n animate={{\r\n opacity: [0.6, 0.4, 0.6],\r\n }}\r\n transition={{\r\n duration: 4,\r\n repeat: Infinity,\r\n ease: [0.4, 0, 0.6, 1],\r\n }}\r\n >\r\n {subtitle}\r\n </motion.span>\r\n </motion.p>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Loader;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {motion}from'framer-motion';import {jsxs,jsx}from'react/jsx-runtime';function i(...n){return n.filter(Boolean).join(" ")}function c({title:n="Configuring your account...",subtitle:s="Please wait while we prepare everything for you",size:l="md",className:o,...d}){let e={sm:{container:"size-20",titleClass:"text-sm/tight font-medium",subtitleClass:"text-xs/relaxed",spacing:"space-y-2",maxWidth:"max-w-48"},md:{container:"size-32",titleClass:"text-base/snug font-medium",subtitleClass:"text-sm/relaxed",spacing:"space-y-3",maxWidth:"max-w-56"},lg:{container:"size-40",titleClass:"text-lg/tight font-semibold",subtitleClass:"text-base/relaxed",spacing:"space-y-4",maxWidth:"max-w-64"}}[l];return jsxs("div",{className:i("flex flex-col items-center justify-center gap-8 p-8",o),...d,children:[jsxs(motion.div,{className:i("relative",e.container),animate:{scale:[1,1.02,1]},transition:{duration:4,repeat:1/0,ease:[.4,0,.6,1]},children:[jsx(motion.div,{className:"absolute inset-0 rounded-full",style:{background:"conic-gradient(from 0deg, transparent 0deg, rgb(0, 0, 0) 90deg, transparent 180deg)",mask:"radial-gradient(circle at 50% 50%, transparent 35%, black 37%, black 39%, transparent 41%)",WebkitMask:"radial-gradient(circle at 50% 50%, transparent 35%, black 37%, black 39%, transparent 41%)",opacity:.8},animate:{rotate:[0,360]},transition:{duration:3,repeat:1/0,ease:"linear"}}),jsx(motion.div,{className:"absolute inset-0 rounded-full",style:{background:"conic-gradient(from 0deg, transparent 0deg, rgb(0, 0, 0) 120deg, rgba(0, 0, 0, 0.5) 240deg, transparent 360deg)",mask:"radial-gradient(circle at 50% 50%, transparent 42%, black 44%, black 48%, transparent 50%)",WebkitMask:"radial-gradient(circle at 50% 50%, transparent 42%, black 44%, black 48%, transparent 50%)",opacity:.9},animate:{rotate:[0,360]},transition:{duration:2.5,repeat:1/0,ease:[.4,0,.6,1]}}),jsx(motion.div,{className:"absolute inset-0 rounded-full dark:block hidden",style:{background:"conic-gradient(from 0deg, transparent 0deg, rgb(255, 255, 255) 90deg, transparent 180deg)",mask:"radial-gradient(circle at 50% 50%, transparent 35%, black 37%, black 39%, transparent 41%)",WebkitMask:"radial-gradient(circle at 50% 50%, transparent 35%, black 37%, black 39%, transparent 41%)",opacity:.8},animate:{rotate:[0,360]},transition:{duration:3,repeat:1/0,ease:"linear"}}),jsx(motion.div,{className:"absolute inset-0 rounded-full dark:block hidden",style:{background:"conic-gradient(from 0deg, transparent 0deg, rgb(255, 255, 255) 120deg, rgba(255, 255, 255, 0.5) 240deg, transparent 360deg)",mask:"radial-gradient(circle at 50% 50%, transparent 42%, black 44%, black 48%, transparent 50%)",WebkitMask:"radial-gradient(circle at 50% 50%, transparent 42%, black 44%, black 48%, transparent 50%)",opacity:.9},animate:{rotate:[0,360]},transition:{duration:2.5,repeat:1/0,ease:[.4,0,.6,1]}})]}),jsxs(motion.div,{className:i("text-center",e.spacing,e.maxWidth),initial:{opacity:0,y:12},animate:{opacity:1,y:0},transition:{delay:.4,duration:1,ease:[.4,0,.2,1]},children:[jsx(motion.h1,{className:i(e.titleClass,"text-black/90 dark:text-white/90 font-medium tracking-[-0.02em] leading-[1.15] antialiased"),initial:{opacity:0,y:12},animate:{opacity:1,y:0},transition:{delay:.6,duration:.8,ease:[.4,0,.2,1]},children:jsx(motion.span,{animate:{opacity:[.9,.7,.9]},transition:{duration:3,repeat:1/0,ease:[.4,0,.6,1]},children:n})}),jsx(motion.p,{className:i(e.subtitleClass,"text-black/60 dark:text-white/60 font-normal tracking-[-0.01em] leading-[1.45] antialiased"),initial:{opacity:0,y:8},animate:{opacity:1,y:0},transition:{delay:.8,duration:.8,ease:[.4,0,.2,1]},children:jsx(motion.span,{animate:{opacity:[.6,.4,.6]},transition:{duration:4,repeat:1/0,ease:[.4,0,.6,1]},children:s})})]})]})}var m=c;export{c as Loader,m as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/loader/index.tsx"],"names":["cn","classes","Loader","title","subtitle","size","className","props","config","jsxs","motion","jsx","loader_default"],"mappings":"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","file":"index.mjs","sourcesContent":["\"use client\";\r\n\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 LoaderProps extends React.HTMLAttributes<HTMLDivElement> {\r\n title?: string;\r\n subtitle?: string;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nexport function Loader({\r\n title = \"Configuring your account...\",\r\n subtitle = \"Please wait while we prepare everything for you\",\r\n size = \"md\",\r\n className,\r\n ...props\r\n}: LoaderProps) {\r\n const sizeConfig = {\r\n sm: {\r\n container: \"size-20\",\r\n titleClass: \"text-sm/tight font-medium\",\r\n subtitleClass: \"text-xs/relaxed\",\r\n spacing: \"space-y-2\",\r\n maxWidth: \"max-w-48\",\r\n },\r\n md: {\r\n container: \"size-32\",\r\n titleClass: \"text-base/snug font-medium\",\r\n subtitleClass: \"text-sm/relaxed\",\r\n spacing: \"space-y-3\",\r\n maxWidth: \"max-w-56\",\r\n },\r\n lg: {\r\n container: \"size-40\",\r\n titleClass: \"text-lg/tight font-semibold\",\r\n subtitleClass: \"text-base/relaxed\",\r\n spacing: \"space-y-4\",\r\n maxWidth: \"max-w-64\",\r\n },\r\n };\r\n\r\n const config = sizeConfig[size];\r\n\r\n return (\r\n <div\r\n className={cn(\r\n \"flex flex-col items-center justify-center gap-8 p-8\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <motion.div\r\n className={cn(\"relative\", config.container)}\r\n animate={{\r\n scale: [1, 1.02, 1],\r\n }}\r\n transition={{\r\n duration: 4,\r\n repeat: Infinity,\r\n ease: [0.4, 0, 0.6, 1],\r\n }}\r\n >\r\n <motion.div\r\n className=\"absolute inset-0 rounded-full\"\r\n style={{\r\n background: `conic-gradient(from 0deg, transparent 0deg, rgb(0, 0, 0) 90deg, transparent 180deg)`,\r\n mask: `radial-gradient(circle at 50% 50%, transparent 35%, black 37%, black 39%, transparent 41%)`,\r\n WebkitMask: `radial-gradient(circle at 50% 50%, transparent 35%, black 37%, black 39%, transparent 41%)`,\r\n opacity: 0.8,\r\n }}\r\n animate={{\r\n rotate: [0, 360],\r\n }}\r\n transition={{\r\n duration: 3,\r\n repeat: Infinity,\r\n ease: \"linear\",\r\n }}\r\n />\r\n\r\n <motion.div\r\n className=\"absolute inset-0 rounded-full\"\r\n style={{\r\n background: `conic-gradient(from 0deg, transparent 0deg, rgb(0, 0, 0) 120deg, rgba(0, 0, 0, 0.5) 240deg, transparent 360deg)`,\r\n mask: `radial-gradient(circle at 50% 50%, transparent 42%, black 44%, black 48%, transparent 50%)`,\r\n WebkitMask: `radial-gradient(circle at 50% 50%, transparent 42%, black 44%, black 48%, transparent 50%)`,\r\n opacity: 0.9,\r\n }}\r\n animate={{\r\n rotate: [0, 360],\r\n }}\r\n transition={{\r\n duration: 2.5,\r\n repeat: Infinity,\r\n ease: [0.4, 0, 0.6, 1],\r\n }}\r\n />\r\n\r\n <motion.div\r\n className=\"absolute inset-0 rounded-full dark:block hidden\"\r\n style={{\r\n background: `conic-gradient(from 0deg, transparent 0deg, rgb(255, 255, 255) 90deg, transparent 180deg)`,\r\n mask: `radial-gradient(circle at 50% 50%, transparent 35%, black 37%, black 39%, transparent 41%)`,\r\n WebkitMask: `radial-gradient(circle at 50% 50%, transparent 35%, black 37%, black 39%, transparent 41%)`,\r\n opacity: 0.8,\r\n }}\r\n animate={{\r\n rotate: [0, 360],\r\n }}\r\n transition={{\r\n duration: 3,\r\n repeat: Infinity,\r\n ease: \"linear\",\r\n }}\r\n />\r\n\r\n <motion.div\r\n className=\"absolute inset-0 rounded-full dark:block hidden\"\r\n style={{\r\n background: `conic-gradient(from 0deg, transparent 0deg, rgb(255, 255, 255) 120deg, rgba(255, 255, 255, 0.5) 240deg, transparent 360deg)`,\r\n mask: `radial-gradient(circle at 50% 50%, transparent 42%, black 44%, black 48%, transparent 50%)`,\r\n WebkitMask: `radial-gradient(circle at 50% 50%, transparent 42%, black 44%, black 48%, transparent 50%)`,\r\n opacity: 0.9,\r\n }}\r\n animate={{\r\n rotate: [0, 360],\r\n }}\r\n transition={{\r\n duration: 2.5,\r\n repeat: Infinity,\r\n ease: [0.4, 0, 0.6, 1],\r\n }}\r\n />\r\n </motion.div>\r\n\r\n <motion.div\r\n className={cn(\"text-center\", config.spacing, config.maxWidth)}\r\n initial={{ opacity: 0, y: 12 }}\r\n animate={{\r\n opacity: 1,\r\n y: 0,\r\n }}\r\n transition={{\r\n delay: 0.4,\r\n duration: 1,\r\n ease: [0.4, 0, 0.2, 1],\r\n }}\r\n >\r\n <motion.h1\r\n className={cn(\r\n config.titleClass,\r\n \"text-black/90 dark:text-white/90 font-medium tracking-[-0.02em] leading-[1.15] antialiased\"\r\n )}\r\n initial={{ opacity: 0, y: 12 }}\r\n animate={{\r\n opacity: 1,\r\n y: 0,\r\n }}\r\n transition={{\r\n delay: 0.6,\r\n duration: 0.8,\r\n ease: [0.4, 0, 0.2, 1],\r\n }}\r\n >\r\n <motion.span\r\n animate={{\r\n opacity: [0.9, 0.7, 0.9],\r\n }}\r\n transition={{\r\n duration: 3,\r\n repeat: Infinity,\r\n ease: [0.4, 0, 0.6, 1],\r\n }}\r\n >\r\n {title}\r\n </motion.span>\r\n </motion.h1>\r\n\r\n <motion.p\r\n className={cn(\r\n config.subtitleClass,\r\n \"text-black/60 dark:text-white/60 font-normal tracking-[-0.01em] leading-[1.45] antialiased\"\r\n )}\r\n initial={{ opacity: 0, y: 8 }}\r\n animate={{\r\n opacity: 1,\r\n y: 0,\r\n }}\r\n transition={{\r\n delay: 0.8,\r\n duration: 0.8,\r\n ease: [0.4, 0, 0.2, 1],\r\n }}\r\n >\r\n <motion.span\r\n animate={{\r\n opacity: [0.6, 0.4, 0.6],\r\n }}\r\n transition={{\r\n duration: 4,\r\n repeat: Infinity,\r\n ease: [0.4, 0, 0.6, 1],\r\n }}\r\n >\r\n {subtitle}\r\n </motion.span>\r\n </motion.p>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Loader;\r\n"]}
@@ -0,0 +1,4 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var jsxRuntime=require('react/jsx-runtime');function n({text:t="Loading...",className:i=""}){return jsxRuntime.jsx("div",{className:`w-full h-full min-h-[400px] flex items-center justify-center ${i}`,children:jsxRuntime.jsxs("div",{className:"relative h-fit min-w-12 w-fit text-4xl font-bold tracking-wider text-black dark:text-white",children:[jsxRuntime.jsx("p",{className:"relative z-0",children:t}),jsxRuntime.jsx("div",{className:"absolute h-full aspect-square left-0 top-0 rounded-[20%] bg-foreground/10 backdrop-invert",style:{animation:"invert-move 2s ease-in-out infinite"}}),jsxRuntime.jsx("style",{dangerouslySetInnerHTML:{__html:`
2
+ @keyframes invert-move { 50% { left: calc(100% - 3rem); } }
3
+ `}})]})})}var r=n;exports.LoadingInvert=n;exports.default=r;//# sourceMappingURL=index.js.map
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/loading-invert/index.tsx"],"names":["LoadingInvert","text","className","jsx","jsxs","loading_invert_default"],"mappings":"kHAOO,SAASA,CAAAA,CAAc,CAAE,IAAA,CAAAC,CAAAA,CAAO,YAAA,CAAc,UAAAC,CAAAA,CAAY,EAAG,CAAA,CAAuB,CACzF,OACEC,cAAAA,CAAC,OAAI,SAAA,CAAW,CAAA,6DAAA,EAAgED,CAAS,CAAA,CAAA,CACvF,QAAA,CAAAE,eAAAA,CAAC,OAAI,SAAA,CAAU,4FAAA,CACb,UAAAD,cAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,cAAA,CAAgB,QAAA,CAAAF,CAAAA,CAAK,CAAA,CAClCE,cAAAA,CAAC,KAAA,CAAA,CACC,UAAU,2FAAA,CACV,KAAA,CAAO,CACL,SAAA,CAAW,qCACb,CAAA,CACF,EACAA,cAAAA,CAAC,OAAA,CAAA,CAAM,uBAAA,CAAyB,CAC9B,MAAA,CAAQ;AAAA;AAAA,UAAA,CAGV,EAAG,CAAA,CAAA,CACL,CAAA,CACF,CAEJ,KAEOE,CAAAA,CAAQL","file":"index.js","sourcesContent":["\"use client\";\r\n\r\ninterface LoadingInvertProps {\r\n text?: string;\r\n className?: string;\r\n}\r\n\r\nexport function LoadingInvert({ text = \"Loading...\", className = \"\" }: LoadingInvertProps) {\r\n return (\r\n <div className={`w-full h-full min-h-[400px] flex items-center justify-center ${className}`}>\r\n <div className=\"relative h-fit min-w-12 w-fit text-4xl font-bold tracking-wider text-black dark:text-white\">\r\n <p className=\"relative z-0\">{text}</p>\r\n <div \r\n className=\"absolute h-full aspect-square left-0 top-0 rounded-[20%] bg-foreground/10 backdrop-invert\"\r\n style={{\r\n animation: \"invert-move 2s ease-in-out infinite\"\r\n }}\r\n />\r\n <style dangerouslySetInnerHTML={{\r\n __html: `\r\n @keyframes invert-move { 50% { left: calc(100% - 3rem); } }\r\n `\r\n }} />\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingInvert;\r\n"]}
@@ -0,0 +1,4 @@
1
+ import {jsx,jsxs}from'react/jsx-runtime';function n({text:t="Loading...",className:i=""}){return jsx("div",{className:`w-full h-full min-h-[400px] flex items-center justify-center ${i}`,children:jsxs("div",{className:"relative h-fit min-w-12 w-fit text-4xl font-bold tracking-wider text-black dark:text-white",children:[jsx("p",{className:"relative z-0",children:t}),jsx("div",{className:"absolute h-full aspect-square left-0 top-0 rounded-[20%] bg-foreground/10 backdrop-invert",style:{animation:"invert-move 2s ease-in-out infinite"}}),jsx("style",{dangerouslySetInnerHTML:{__html:`
2
+ @keyframes invert-move { 50% { left: calc(100% - 3rem); } }
3
+ `}})]})})}var r=n;export{n as LoadingInvert,r as default};//# sourceMappingURL=index.mjs.map
4
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/loading-invert/index.tsx"],"names":["LoadingInvert","text","className","jsx","jsxs","loading_invert_default"],"mappings":"yCAOO,SAASA,CAAAA,CAAc,CAAE,IAAA,CAAAC,CAAAA,CAAO,YAAA,CAAc,UAAAC,CAAAA,CAAY,EAAG,CAAA,CAAuB,CACzF,OACEC,GAAAA,CAAC,OAAI,SAAA,CAAW,CAAA,6DAAA,EAAgED,CAAS,CAAA,CAAA,CACvF,QAAA,CAAAE,IAAAA,CAAC,OAAI,SAAA,CAAU,4FAAA,CACb,UAAAD,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,cAAA,CAAgB,QAAA,CAAAF,CAAAA,CAAK,CAAA,CAClCE,GAAAA,CAAC,KAAA,CAAA,CACC,UAAU,2FAAA,CACV,KAAA,CAAO,CACL,SAAA,CAAW,qCACb,CAAA,CACF,EACAA,GAAAA,CAAC,OAAA,CAAA,CAAM,uBAAA,CAAyB,CAC9B,MAAA,CAAQ;AAAA;AAAA,UAAA,CAGV,EAAG,CAAA,CAAA,CACL,CAAA,CACF,CAEJ,KAEOE,CAAAA,CAAQL","file":"index.mjs","sourcesContent":["\"use client\";\r\n\r\ninterface LoadingInvertProps {\r\n text?: string;\r\n className?: string;\r\n}\r\n\r\nexport function LoadingInvert({ text = \"Loading...\", className = \"\" }: LoadingInvertProps) {\r\n return (\r\n <div className={`w-full h-full min-h-[400px] flex items-center justify-center ${className}`}>\r\n <div className=\"relative h-fit min-w-12 w-fit text-4xl font-bold tracking-wider text-black dark:text-white\">\r\n <p className=\"relative z-0\">{text}</p>\r\n <div \r\n className=\"absolute h-full aspect-square left-0 top-0 rounded-[20%] bg-foreground/10 backdrop-invert\"\r\n style={{\r\n animation: \"invert-move 2s ease-in-out infinite\"\r\n }}\r\n />\r\n <style dangerouslySetInnerHTML={{\r\n __html: `\r\n @keyframes invert-move { 50% { left: calc(100% - 3rem); } }\r\n `\r\n }} />\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingInvert;\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 j(t){let[u,r]=react.useState(0);return react.useLayoutEffect(()=>{function n(){t.current&&r(t.current.offsetWidth);}return n(),window.addEventListener("resize",n),()=>window.removeEventListener("resize",n)},[t]),u}function A({scrollContainerRef:t,texts:u=["Scroll Velocity","Bynana UI"],velocity:r=100,className:n="",damping:v=50,stiffness:w=400,numCopies:R=6,velocityMapping:d={input:[0,1e3],output:[0,5]}}){function x({children:l,baseVelocity:c}){let a=framerMotion.useMotionValue(0),S=t?{container:t}:{},{scrollY:T}=framerMotion.useScroll(S),E=framerMotion.useVelocity(T),L=framerMotion.useSpring(E,{damping:v,stiffness:w}),m=framerMotion.useTransform(L,d.input,d.output,{clamp:false}),y=react.useRef(null),b=j(y);function M(e,p,o){let f=p-e;return ((o-e)%f+f)%f+e}let N=framerMotion.useTransform(a,e=>b===0?"0px":`${M(-b,0,e)}px`),s=react.useRef(1);framerMotion.useAnimationFrame((e,p)=>{let o=s.current*c*(p/1e3);m.get()<0?s.current=-1:m.get()>0&&(s.current=1),o+=s.current*o*m.get(),a.set(a.get()+o);});let V=[];for(let e=0;e<R;e++)V.push(jsxRuntime.jsx("span",{className:n,ref:e===0?y:null,children:l},e));return jsxRuntime.jsx("div",{className:"overflow-hidden whitespace-nowrap",children:jsxRuntime.jsx(framerMotion.motion.div,{className:"flex",style:{x:N},children:V})})}return jsxRuntime.jsx("section",{children:u.map((l,c)=>jsxRuntime.jsxs(x,{baseVelocity:c%2!==0?-r:r,children:[l,"\xA0"]},c))})}var $=A;exports.ScrollVelocity=A;exports.default=$;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/scroll-velocity/index.tsx"],"names":["useElementWidth","ref","width","setWidth","useState","useLayoutEffect","updateWidth","ScrollVelocity","scrollContainerRef","texts","velocity","className","damping","stiffness","numCopies","velocityMapping","VelocityText","children","baseVelocity","baseX","useMotionValue","scrollOptions","scrollY","useScroll","scrollVelocity","useVelocity","smoothVelocity","useSpring","velocityFactor","useTransform","copyRef","useRef","copyWidth","wrap","min","max","v","range","x","directionFactor","useAnimationFrame","t","delta","moveBy","spans","i","jsx","motion","text","index","jsxs","scroll_velocity_default"],"mappings":"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","file":"index.js","sourcesContent":["\"use client\";\r\n\r\nimport React, { useRef, useLayoutEffect, useState } from \"react\";\r\nimport {\r\n motion,\r\n useScroll,\r\n useSpring,\r\n useTransform,\r\n useMotionValue,\r\n useVelocity,\r\n useAnimationFrame\r\n} from \"framer-motion\";\r\n\r\ninterface VelocityMapping {\r\n input: [number, number];\r\n output: [number, number];\r\n}\r\n\r\ninterface ScrollVelocityProps {\r\n scrollContainerRef?: React.RefObject<HTMLElement>;\r\n texts?: string[];\r\n velocity?: number;\r\n className?: string;\r\n damping?: number;\r\n stiffness?: number;\r\n numCopies?: number;\r\n velocityMapping?: VelocityMapping;\r\n}\r\n\r\nfunction useElementWidth<T extends HTMLElement>(ref: React.RefObject<T | null>): number {\r\n const [width, setWidth] = useState(0);\r\n\r\n useLayoutEffect(() => {\r\n function updateWidth() {\r\n if (ref.current) {\r\n setWidth(ref.current.offsetWidth);\r\n }\r\n }\r\n updateWidth();\r\n window.addEventListener(\"resize\", updateWidth);\r\n return () => window.removeEventListener(\"resize\", updateWidth);\r\n }, [ref]);\r\n\r\n return width;\r\n}\r\n\r\nexport function ScrollVelocity({\r\n scrollContainerRef,\r\n texts = [\"Scroll Velocity\", \"Bynana UI\"],\r\n velocity = 100,\r\n className = \"\",\r\n damping = 50,\r\n stiffness = 400,\r\n numCopies = 6,\r\n velocityMapping = { input: [0, 1000], output: [0, 5] },\r\n}: ScrollVelocityProps) {\r\n function VelocityText({\r\n children,\r\n baseVelocity,\r\n }: {\r\n children: React.ReactNode;\r\n baseVelocity: number;\r\n }) {\r\n const baseX = useMotionValue(0);\r\n const scrollOptions = scrollContainerRef ? { container: scrollContainerRef } : {};\r\n const { scrollY } = useScroll(scrollOptions);\r\n const scrollVelocity = useVelocity(scrollY);\r\n const smoothVelocity = useSpring(scrollVelocity, { damping, stiffness });\r\n const velocityFactor = useTransform(\r\n smoothVelocity,\r\n velocityMapping.input,\r\n velocityMapping.output,\r\n { clamp: false }\r\n );\r\n\r\n const copyRef = useRef<HTMLSpanElement>(null);\r\n const copyWidth = useElementWidth(copyRef);\r\n\r\n function wrap(min: number, max: number, v: number): number {\r\n const range = max - min;\r\n const mod = (((v - min) % range) + range) % range;\r\n return mod + min;\r\n }\r\n\r\n const x = useTransform(baseX, v => {\r\n if (copyWidth === 0) return \"0px\";\r\n return `${wrap(-copyWidth, 0, v)}px`;\r\n });\r\n\r\n const directionFactor = useRef<number>(1);\r\n useAnimationFrame((t, delta) => {\r\n let moveBy = directionFactor.current * baseVelocity * (delta / 1000);\r\n if (velocityFactor.get() < 0) directionFactor.current = -1;\r\n else if (velocityFactor.get() > 0) directionFactor.current = 1;\r\n moveBy += directionFactor.current * moveBy * velocityFactor.get();\r\n baseX.set(baseX.get() + moveBy);\r\n });\r\n\r\n const spans = [];\r\n for (let i = 0; i < numCopies; i++) {\r\n spans.push(\r\n <span className={className} key={i} ref={i === 0 ? copyRef : null}>\r\n {children}\r\n </span>\r\n );\r\n }\r\n\r\n return (\r\n <div className=\"overflow-hidden whitespace-nowrap\">\r\n <motion.div className=\"flex\" style={{ x }}>\r\n {spans}\r\n </motion.div>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <section>\r\n {texts.map((text, index) => (\r\n <VelocityText key={index} baseVelocity={index % 2 !== 0 ? -velocity : velocity}>\r\n {text}&nbsp;\r\n </VelocityText>\r\n ))}\r\n </section>\r\n );\r\n}\r\n\r\nexport default ScrollVelocity;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {useRef,useState,useLayoutEffect}from'react';import {useMotionValue,useScroll,useVelocity,useSpring,useTransform,useAnimationFrame,motion}from'framer-motion';import {jsx,jsxs}from'react/jsx-runtime';function j(t){let[u,r]=useState(0);return useLayoutEffect(()=>{function n(){t.current&&r(t.current.offsetWidth);}return n(),window.addEventListener("resize",n),()=>window.removeEventListener("resize",n)},[t]),u}function A({scrollContainerRef:t,texts:u=["Scroll Velocity","Bynana UI"],velocity:r=100,className:n="",damping:v=50,stiffness:w=400,numCopies:R=6,velocityMapping:d={input:[0,1e3],output:[0,5]}}){function x({children:l,baseVelocity:c}){let a=useMotionValue(0),S=t?{container:t}:{},{scrollY:T}=useScroll(S),E=useVelocity(T),L=useSpring(E,{damping:v,stiffness:w}),m=useTransform(L,d.input,d.output,{clamp:false}),y=useRef(null),b=j(y);function M(e,p,o){let f=p-e;return ((o-e)%f+f)%f+e}let N=useTransform(a,e=>b===0?"0px":`${M(-b,0,e)}px`),s=useRef(1);useAnimationFrame((e,p)=>{let o=s.current*c*(p/1e3);m.get()<0?s.current=-1:m.get()>0&&(s.current=1),o+=s.current*o*m.get(),a.set(a.get()+o);});let V=[];for(let e=0;e<R;e++)V.push(jsx("span",{className:n,ref:e===0?y:null,children:l},e));return jsx("div",{className:"overflow-hidden whitespace-nowrap",children:jsx(motion.div,{className:"flex",style:{x:N},children:V})})}return jsx("section",{children:u.map((l,c)=>jsxs(x,{baseVelocity:c%2!==0?-r:r,children:[l,"\xA0"]},c))})}var $=A;export{A as ScrollVelocity,$ as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/scroll-velocity/index.tsx"],"names":["useElementWidth","ref","width","setWidth","useState","useLayoutEffect","updateWidth","ScrollVelocity","scrollContainerRef","texts","velocity","className","damping","stiffness","numCopies","velocityMapping","VelocityText","children","baseVelocity","baseX","useMotionValue","scrollOptions","scrollY","useScroll","scrollVelocity","useVelocity","smoothVelocity","useSpring","velocityFactor","useTransform","copyRef","useRef","copyWidth","wrap","min","max","v","range","x","directionFactor","useAnimationFrame","t","delta","moveBy","spans","i","jsx","motion","text","index","jsxs","scroll_velocity_default"],"mappings":"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","file":"index.mjs","sourcesContent":["\"use client\";\r\n\r\nimport React, { useRef, useLayoutEffect, useState } from \"react\";\r\nimport {\r\n motion,\r\n useScroll,\r\n useSpring,\r\n useTransform,\r\n useMotionValue,\r\n useVelocity,\r\n useAnimationFrame\r\n} from \"framer-motion\";\r\n\r\ninterface VelocityMapping {\r\n input: [number, number];\r\n output: [number, number];\r\n}\r\n\r\ninterface ScrollVelocityProps {\r\n scrollContainerRef?: React.RefObject<HTMLElement>;\r\n texts?: string[];\r\n velocity?: number;\r\n className?: string;\r\n damping?: number;\r\n stiffness?: number;\r\n numCopies?: number;\r\n velocityMapping?: VelocityMapping;\r\n}\r\n\r\nfunction useElementWidth<T extends HTMLElement>(ref: React.RefObject<T | null>): number {\r\n const [width, setWidth] = useState(0);\r\n\r\n useLayoutEffect(() => {\r\n function updateWidth() {\r\n if (ref.current) {\r\n setWidth(ref.current.offsetWidth);\r\n }\r\n }\r\n updateWidth();\r\n window.addEventListener(\"resize\", updateWidth);\r\n return () => window.removeEventListener(\"resize\", updateWidth);\r\n }, [ref]);\r\n\r\n return width;\r\n}\r\n\r\nexport function ScrollVelocity({\r\n scrollContainerRef,\r\n texts = [\"Scroll Velocity\", \"Bynana UI\"],\r\n velocity = 100,\r\n className = \"\",\r\n damping = 50,\r\n stiffness = 400,\r\n numCopies = 6,\r\n velocityMapping = { input: [0, 1000], output: [0, 5] },\r\n}: ScrollVelocityProps) {\r\n function VelocityText({\r\n children,\r\n baseVelocity,\r\n }: {\r\n children: React.ReactNode;\r\n baseVelocity: number;\r\n }) {\r\n const baseX = useMotionValue(0);\r\n const scrollOptions = scrollContainerRef ? { container: scrollContainerRef } : {};\r\n const { scrollY } = useScroll(scrollOptions);\r\n const scrollVelocity = useVelocity(scrollY);\r\n const smoothVelocity = useSpring(scrollVelocity, { damping, stiffness });\r\n const velocityFactor = useTransform(\r\n smoothVelocity,\r\n velocityMapping.input,\r\n velocityMapping.output,\r\n { clamp: false }\r\n );\r\n\r\n const copyRef = useRef<HTMLSpanElement>(null);\r\n const copyWidth = useElementWidth(copyRef);\r\n\r\n function wrap(min: number, max: number, v: number): number {\r\n const range = max - min;\r\n const mod = (((v - min) % range) + range) % range;\r\n return mod + min;\r\n }\r\n\r\n const x = useTransform(baseX, v => {\r\n if (copyWidth === 0) return \"0px\";\r\n return `${wrap(-copyWidth, 0, v)}px`;\r\n });\r\n\r\n const directionFactor = useRef<number>(1);\r\n useAnimationFrame((t, delta) => {\r\n let moveBy = directionFactor.current * baseVelocity * (delta / 1000);\r\n if (velocityFactor.get() < 0) directionFactor.current = -1;\r\n else if (velocityFactor.get() > 0) directionFactor.current = 1;\r\n moveBy += directionFactor.current * moveBy * velocityFactor.get();\r\n baseX.set(baseX.get() + moveBy);\r\n });\r\n\r\n const spans = [];\r\n for (let i = 0; i < numCopies; i++) {\r\n spans.push(\r\n <span className={className} key={i} ref={i === 0 ? copyRef : null}>\r\n {children}\r\n </span>\r\n );\r\n }\r\n\r\n return (\r\n <div className=\"overflow-hidden whitespace-nowrap\">\r\n <motion.div className=\"flex\" style={{ x }}>\r\n {spans}\r\n </motion.div>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <section>\r\n {texts.map((text, index) => (\r\n <VelocityText key={index} baseVelocity={index % 2 !== 0 ? -velocity : velocity}>\r\n {text}&nbsp;\r\n </VelocityText>\r\n ))}\r\n </section>\r\n );\r\n}\r\n\r\nexport default ScrollVelocity;\r\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var framerMotion=require('framer-motion'),jsxRuntime=require('react/jsx-runtime');function r(...t){return t.filter(Boolean).join(" ")}function s({children:t,className:i}){return jsxRuntime.jsxs("div",{className:r("relative w-full min-h-[500px] flex items-center justify-center overflow-hidden bg-white dark:bg-zinc-900 rounded-xl border border-zinc-200 dark:border-zinc-800",i),children:[jsxRuntime.jsx(framerMotion.motion.div,{className:"absolute inset-0",style:{background:"linear-gradient(90deg, transparent 0%, rgba(0,0,0,0.08) 50%, transparent 100%)"},animate:{x:["-200%","200%"]},transition:{duration:2.5,repeat:1/0,ease:"linear"}}),jsxRuntime.jsx(framerMotion.motion.div,{className:"absolute inset-0",style:{background:"linear-gradient(90deg, transparent 0%, rgba(0,0,0,0.05) 50%, transparent 100%)"},animate:{x:["-200%","200%"]},transition:{duration:3,delay:.5,repeat:1/0,ease:"linear"}}),jsxRuntime.jsx(framerMotion.motion.div,{className:"absolute inset-0",style:{background:"linear-gradient(90deg, transparent 0%, rgba(0,0,0,0.03) 50%, transparent 100%)"},animate:{x:["-200%","200%"]},transition:{duration:3.5,delay:1,repeat:1/0,ease:"linear"}}),jsxRuntime.jsx(framerMotion.motion.div,{className:"absolute inset-0 hidden dark:block",style:{background:"linear-gradient(90deg, transparent 0%, rgba(161,161,170,0.15) 50%, transparent 100%)"},animate:{x:["-200%","200%"]},transition:{duration:2.5,repeat:1/0,ease:"linear"}}),jsxRuntime.jsx("div",{className:"absolute inset-0 opacity-10 dark:opacity-5",style:{backgroundImage:"radial-gradient(circle at 2px 2px, #71717a 1px, transparent 0)",backgroundSize:"40px 40px"}}),jsxRuntime.jsx("div",{className:"relative z-10 text-center px-8",children:t||jsxRuntime.jsxs(framerMotion.motion.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.8},children:[jsxRuntime.jsx("h2",{className:"text-7xl font-bold text-zinc-900 dark:text-zinc-100 mb-4 tracking-tight",style:{fontFamily:"system-ui, -apple-system, sans-serif",letterSpacing:"-0.02em"},children:"SHIMMER WAVE"}),jsxRuntime.jsx("p",{className:"text-xl text-zinc-500 font-light tracking-wide",children:"Advanced Shimmer Effect"})]})})]})}var l=s;exports.ShimmerEffect=s;exports.default=l;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/shimmer-effect/index.tsx"],"names":["cn","classes","ShimmerEffect","children","className","jsxs","jsx","motion","shimmer_effect_default"],"mappings":"wJAIA,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAyC,CACtD,OAAOA,CAAAA,CAAQ,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CACzC,CAOO,SAASC,CAAAA,CAAc,CAC5B,QAAA,CAAAC,CAAAA,CACA,UAAAC,CACF,CAAA,CAAuB,CACrB,OACEC,eAAAA,CAAC,KAAA,CAAA,CAAI,UAAWL,CAAAA,CAAG,iKAAA,CAAmKI,CAAS,CAAA,CAC7L,QAAA,CAAA,CAAAE,cAAAA,CAACC,oBAAO,GAAA,CAAP,CACC,SAAA,CAAU,kBAAA,CACV,KAAA,CAAO,CACL,UAAA,CAAY,gFACd,CAAA,CACA,OAAA,CAAS,CACP,CAAA,CAAG,CAAC,OAAA,CAAS,MAAM,CACrB,CAAA,CACA,UAAA,CAAY,CACV,QAAA,CAAU,GAAA,CACV,OAAQ,CAAA,CAAA,CAAA,CACR,IAAA,CAAM,QACR,CAAA,CACF,CAAA,CAEAD,cAAAA,CAACC,oBAAO,GAAA,CAAP,CACC,SAAA,CAAU,kBAAA,CACV,KAAA,CAAO,CACL,WAAY,gFACd,CAAA,CACA,OAAA,CAAS,CACP,CAAA,CAAG,CAAC,QAAS,MAAM,CACrB,CAAA,CACA,UAAA,CAAY,CACV,QAAA,CAAU,EACV,KAAA,CAAO,EAAA,CACP,MAAA,CAAQ,CAAA,CAAA,CAAA,CACR,IAAA,CAAM,QACR,EACF,CAAA,CAEAD,cAAAA,CAACC,mBAAAA,CAAO,GAAA,CAAP,CACC,SAAA,CAAU,kBAAA,CACV,KAAA,CAAO,CACL,UAAA,CAAY,gFACd,CAAA,CACA,OAAA,CAAS,CACP,EAAG,CAAC,OAAA,CAAS,MAAM,CACrB,CAAA,CACA,UAAA,CAAY,CACV,QAAA,CAAU,GAAA,CACV,KAAA,CAAO,CAAA,CACP,MAAA,CAAQ,CAAA,CAAA,CAAA,CACR,KAAM,QACR,CAAA,CACF,CAAA,CAEAD,cAAAA,CAACC,mBAAAA,CAAO,GAAA,CAAP,CACC,SAAA,CAAU,oCAAA,CACV,KAAA,CAAO,CACL,UAAA,CAAY,sFACd,EACA,OAAA,CAAS,CACP,CAAA,CAAG,CAAC,OAAA,CAAS,MAAM,CACrB,CAAA,CACA,UAAA,CAAY,CACV,QAAA,CAAU,GAAA,CACV,MAAA,CAAQ,IACR,IAAA,CAAM,QACR,CAAA,CACF,CAAA,CAEAD,cAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,4CAAA,CAA6C,KAAA,CAAO,CACjE,eAAA,CAAiB,gEAAA,CACjB,cAAA,CAAgB,WAClB,EAAG,CAAA,CAEHA,cAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,gCAAA,CACZ,QAAA,CAAAH,GACCE,eAAAA,CAACE,mBAAAA,CAAO,GAAA,CAAP,CACC,OAAA,CAAS,CAAE,QAAS,CAAA,CAAG,CAAA,CAAG,EAAG,CAAA,CAC7B,OAAA,CAAS,CAAE,OAAA,CAAS,CAAA,CAAG,CAAA,CAAG,CAAE,CAAA,CAC5B,UAAA,CAAY,CAAE,QAAA,CAAU,EAAI,CAAA,CAE5B,QAAA,CAAA,CAAAD,cAAAA,CAAC,IAAA,CAAA,CAAG,SAAA,CAAU,yEAAA,CAA0E,MAAO,CAC7F,UAAA,CAAY,sCAAA,CACZ,aAAA,CAAe,SACjB,CAAA,CAAG,wBAEH,CAAA,CACAA,cAAAA,CAAC,GAAA,CAAA,CAAE,SAAA,CAAU,gDAAA,CAAiD,QAAA,CAAA,yBAAA,CAE9D,CAAA,CAAA,CACF,CAAA,CAEJ,CAAA,CAAA,CACF,CAEJ,CAEA,IAAOE,CAAAA,CAAQN","file":"index.js","sourcesContent":["\"use client\";\r\n\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 ShimmerEffectProps {\r\n children?: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function ShimmerEffect({\r\n children,\r\n className,\r\n}: ShimmerEffectProps) {\r\n return (\r\n <div className={cn(\"relative w-full min-h-[500px] flex items-center justify-center overflow-hidden bg-white dark:bg-zinc-900 rounded-xl border border-zinc-200 dark:border-zinc-800\", className)}>\r\n <motion.div\r\n className=\"absolute inset-0\"\r\n style={{\r\n background: \"linear-gradient(90deg, transparent 0%, rgba(0,0,0,0.08) 50%, transparent 100%)\",\r\n }}\r\n animate={{\r\n x: [\"-200%\", \"200%\"],\r\n }}\r\n transition={{\r\n duration: 2.5,\r\n repeat: Infinity,\r\n ease: \"linear\",\r\n }}\r\n />\r\n \r\n <motion.div\r\n className=\"absolute inset-0\"\r\n style={{\r\n background: \"linear-gradient(90deg, transparent 0%, rgba(0,0,0,0.05) 50%, transparent 100%)\",\r\n }}\r\n animate={{\r\n x: [\"-200%\", \"200%\"],\r\n }}\r\n transition={{\r\n duration: 3,\r\n delay: 0.5,\r\n repeat: Infinity,\r\n ease: \"linear\",\r\n }}\r\n />\r\n \r\n <motion.div\r\n className=\"absolute inset-0\"\r\n style={{\r\n background: \"linear-gradient(90deg, transparent 0%, rgba(0,0,0,0.03) 50%, transparent 100%)\",\r\n }}\r\n animate={{\r\n x: [\"-200%\", \"200%\"],\r\n }}\r\n transition={{\r\n duration: 3.5,\r\n delay: 1,\r\n repeat: Infinity,\r\n ease: \"linear\",\r\n }}\r\n />\r\n \r\n <motion.div\r\n className=\"absolute inset-0 hidden dark:block\"\r\n style={{\r\n background: \"linear-gradient(90deg, transparent 0%, rgba(161,161,170,0.15) 50%, transparent 100%)\",\r\n }}\r\n animate={{\r\n x: [\"-200%\", \"200%\"],\r\n }}\r\n transition={{\r\n duration: 2.5,\r\n repeat: Infinity,\r\n ease: \"linear\",\r\n }}\r\n />\r\n \r\n <div className=\"absolute inset-0 opacity-10 dark:opacity-5\" style={{\r\n backgroundImage: \"radial-gradient(circle at 2px 2px, #71717a 1px, transparent 0)\",\r\n backgroundSize: \"40px 40px\"\r\n }} />\r\n \r\n <div className=\"relative z-10 text-center px-8\">\r\n {children || (\r\n <motion.div\r\n initial={{ opacity: 0, y: 20 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n transition={{ duration: 0.8 }}\r\n >\r\n <h2 className=\"text-7xl font-bold text-zinc-900 dark:text-zinc-100 mb-4 tracking-tight\" style={{\r\n fontFamily: \"system-ui, -apple-system, sans-serif\",\r\n letterSpacing: \"-0.02em\"\r\n }}>\r\n SHIMMER WAVE\r\n </h2>\r\n <p className=\"text-xl text-zinc-500 font-light tracking-wide\">\r\n Advanced Shimmer Effect\r\n </p>\r\n </motion.div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default ShimmerEffect;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {motion}from'framer-motion';import {jsxs,jsx}from'react/jsx-runtime';function r(...t){return t.filter(Boolean).join(" ")}function s({children:t,className:i}){return jsxs("div",{className:r("relative w-full min-h-[500px] flex items-center justify-center overflow-hidden bg-white dark:bg-zinc-900 rounded-xl border border-zinc-200 dark:border-zinc-800",i),children:[jsx(motion.div,{className:"absolute inset-0",style:{background:"linear-gradient(90deg, transparent 0%, rgba(0,0,0,0.08) 50%, transparent 100%)"},animate:{x:["-200%","200%"]},transition:{duration:2.5,repeat:1/0,ease:"linear"}}),jsx(motion.div,{className:"absolute inset-0",style:{background:"linear-gradient(90deg, transparent 0%, rgba(0,0,0,0.05) 50%, transparent 100%)"},animate:{x:["-200%","200%"]},transition:{duration:3,delay:.5,repeat:1/0,ease:"linear"}}),jsx(motion.div,{className:"absolute inset-0",style:{background:"linear-gradient(90deg, transparent 0%, rgba(0,0,0,0.03) 50%, transparent 100%)"},animate:{x:["-200%","200%"]},transition:{duration:3.5,delay:1,repeat:1/0,ease:"linear"}}),jsx(motion.div,{className:"absolute inset-0 hidden dark:block",style:{background:"linear-gradient(90deg, transparent 0%, rgba(161,161,170,0.15) 50%, transparent 100%)"},animate:{x:["-200%","200%"]},transition:{duration:2.5,repeat:1/0,ease:"linear"}}),jsx("div",{className:"absolute inset-0 opacity-10 dark:opacity-5",style:{backgroundImage:"radial-gradient(circle at 2px 2px, #71717a 1px, transparent 0)",backgroundSize:"40px 40px"}}),jsx("div",{className:"relative z-10 text-center px-8",children:t||jsxs(motion.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.8},children:[jsx("h2",{className:"text-7xl font-bold text-zinc-900 dark:text-zinc-100 mb-4 tracking-tight",style:{fontFamily:"system-ui, -apple-system, sans-serif",letterSpacing:"-0.02em"},children:"SHIMMER WAVE"}),jsx("p",{className:"text-xl text-zinc-500 font-light tracking-wide",children:"Advanced Shimmer Effect"})]})})]})}var l=s;export{s as ShimmerEffect,l as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/shimmer-effect/index.tsx"],"names":["cn","classes","ShimmerEffect","children","className","jsxs","jsx","motion","shimmer_effect_default"],"mappings":"4EAIA,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAyC,CACtD,OAAOA,CAAAA,CAAQ,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CACzC,CAOO,SAASC,CAAAA,CAAc,CAC5B,QAAA,CAAAC,CAAAA,CACA,UAAAC,CACF,CAAA,CAAuB,CACrB,OACEC,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAWL,CAAAA,CAAG,iKAAA,CAAmKI,CAAS,CAAA,CAC7L,QAAA,CAAA,CAAAE,GAAAA,CAACC,OAAO,GAAA,CAAP,CACC,SAAA,CAAU,kBAAA,CACV,KAAA,CAAO,CACL,UAAA,CAAY,gFACd,CAAA,CACA,OAAA,CAAS,CACP,CAAA,CAAG,CAAC,OAAA,CAAS,MAAM,CACrB,CAAA,CACA,UAAA,CAAY,CACV,QAAA,CAAU,GAAA,CACV,OAAQ,CAAA,CAAA,CAAA,CACR,IAAA,CAAM,QACR,CAAA,CACF,CAAA,CAEAD,GAAAA,CAACC,OAAO,GAAA,CAAP,CACC,SAAA,CAAU,kBAAA,CACV,KAAA,CAAO,CACL,WAAY,gFACd,CAAA,CACA,OAAA,CAAS,CACP,CAAA,CAAG,CAAC,QAAS,MAAM,CACrB,CAAA,CACA,UAAA,CAAY,CACV,QAAA,CAAU,EACV,KAAA,CAAO,EAAA,CACP,MAAA,CAAQ,CAAA,CAAA,CAAA,CACR,IAAA,CAAM,QACR,EACF,CAAA,CAEAD,GAAAA,CAACC,MAAAA,CAAO,GAAA,CAAP,CACC,SAAA,CAAU,kBAAA,CACV,KAAA,CAAO,CACL,UAAA,CAAY,gFACd,CAAA,CACA,OAAA,CAAS,CACP,EAAG,CAAC,OAAA,CAAS,MAAM,CACrB,CAAA,CACA,UAAA,CAAY,CACV,QAAA,CAAU,GAAA,CACV,KAAA,CAAO,CAAA,CACP,MAAA,CAAQ,CAAA,CAAA,CAAA,CACR,KAAM,QACR,CAAA,CACF,CAAA,CAEAD,GAAAA,CAACC,MAAAA,CAAO,GAAA,CAAP,CACC,SAAA,CAAU,oCAAA,CACV,KAAA,CAAO,CACL,UAAA,CAAY,sFACd,EACA,OAAA,CAAS,CACP,CAAA,CAAG,CAAC,OAAA,CAAS,MAAM,CACrB,CAAA,CACA,UAAA,CAAY,CACV,QAAA,CAAU,GAAA,CACV,MAAA,CAAQ,IACR,IAAA,CAAM,QACR,CAAA,CACF,CAAA,CAEAD,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,4CAAA,CAA6C,KAAA,CAAO,CACjE,eAAA,CAAiB,gEAAA,CACjB,cAAA,CAAgB,WAClB,EAAG,CAAA,CAEHA,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,gCAAA,CACZ,QAAA,CAAAH,GACCE,IAAAA,CAACE,MAAAA,CAAO,GAAA,CAAP,CACC,OAAA,CAAS,CAAE,QAAS,CAAA,CAAG,CAAA,CAAG,EAAG,CAAA,CAC7B,OAAA,CAAS,CAAE,OAAA,CAAS,CAAA,CAAG,CAAA,CAAG,CAAE,CAAA,CAC5B,UAAA,CAAY,CAAE,QAAA,CAAU,EAAI,CAAA,CAE5B,QAAA,CAAA,CAAAD,GAAAA,CAAC,IAAA,CAAA,CAAG,SAAA,CAAU,yEAAA,CAA0E,MAAO,CAC7F,UAAA,CAAY,sCAAA,CACZ,aAAA,CAAe,SACjB,CAAA,CAAG,wBAEH,CAAA,CACAA,GAAAA,CAAC,GAAA,CAAA,CAAE,SAAA,CAAU,gDAAA,CAAiD,QAAA,CAAA,yBAAA,CAE9D,CAAA,CAAA,CACF,CAAA,CAEJ,CAAA,CAAA,CACF,CAEJ,CAEA,IAAOE,CAAAA,CAAQN","file":"index.mjs","sourcesContent":["\"use client\";\r\n\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 ShimmerEffectProps {\r\n children?: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function ShimmerEffect({\r\n children,\r\n className,\r\n}: ShimmerEffectProps) {\r\n return (\r\n <div className={cn(\"relative w-full min-h-[500px] flex items-center justify-center overflow-hidden bg-white dark:bg-zinc-900 rounded-xl border border-zinc-200 dark:border-zinc-800\", className)}>\r\n <motion.div\r\n className=\"absolute inset-0\"\r\n style={{\r\n background: \"linear-gradient(90deg, transparent 0%, rgba(0,0,0,0.08) 50%, transparent 100%)\",\r\n }}\r\n animate={{\r\n x: [\"-200%\", \"200%\"],\r\n }}\r\n transition={{\r\n duration: 2.5,\r\n repeat: Infinity,\r\n ease: \"linear\",\r\n }}\r\n />\r\n \r\n <motion.div\r\n className=\"absolute inset-0\"\r\n style={{\r\n background: \"linear-gradient(90deg, transparent 0%, rgba(0,0,0,0.05) 50%, transparent 100%)\",\r\n }}\r\n animate={{\r\n x: [\"-200%\", \"200%\"],\r\n }}\r\n transition={{\r\n duration: 3,\r\n delay: 0.5,\r\n repeat: Infinity,\r\n ease: \"linear\",\r\n }}\r\n />\r\n \r\n <motion.div\r\n className=\"absolute inset-0\"\r\n style={{\r\n background: \"linear-gradient(90deg, transparent 0%, rgba(0,0,0,0.03) 50%, transparent 100%)\",\r\n }}\r\n animate={{\r\n x: [\"-200%\", \"200%\"],\r\n }}\r\n transition={{\r\n duration: 3.5,\r\n delay: 1,\r\n repeat: Infinity,\r\n ease: \"linear\",\r\n }}\r\n />\r\n \r\n <motion.div\r\n className=\"absolute inset-0 hidden dark:block\"\r\n style={{\r\n background: \"linear-gradient(90deg, transparent 0%, rgba(161,161,170,0.15) 50%, transparent 100%)\",\r\n }}\r\n animate={{\r\n x: [\"-200%\", \"200%\"],\r\n }}\r\n transition={{\r\n duration: 2.5,\r\n repeat: Infinity,\r\n ease: \"linear\",\r\n }}\r\n />\r\n \r\n <div className=\"absolute inset-0 opacity-10 dark:opacity-5\" style={{\r\n backgroundImage: \"radial-gradient(circle at 2px 2px, #71717a 1px, transparent 0)\",\r\n backgroundSize: \"40px 40px\"\r\n }} />\r\n \r\n <div className=\"relative z-10 text-center px-8\">\r\n {children || (\r\n <motion.div\r\n initial={{ opacity: 0, y: 20 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n transition={{ duration: 0.8 }}\r\n >\r\n <h2 className=\"text-7xl font-bold text-zinc-900 dark:text-zinc-100 mb-4 tracking-tight\" style={{\r\n fontFamily: \"system-ui, -apple-system, sans-serif\",\r\n letterSpacing: \"-0.02em\"\r\n }}>\r\n SHIMMER WAVE\r\n </h2>\r\n <p className=\"text-xl text-zinc-500 font-light tracking-wide\">\r\n Advanced Shimmer Effect\r\n </p>\r\n </motion.div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default ShimmerEffect;\r\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var framerMotion=require('framer-motion'),jsxRuntime=require('react/jsx-runtime');function s(...e){return e.filter(Boolean).join(" ")}function u({icon:e,label:t,href:n,onClick:i,className:r,variant:a="default"}){let c={default:"bg-zinc-900 dark:bg-zinc-100 text-white dark:text-zinc-900 hover:bg-zinc-800 dark:hover:bg-zinc-200",outline:"border border-zinc-300 dark:border-zinc-700 hover:bg-zinc-100 dark:hover:bg-zinc-800",ghost:"hover:bg-zinc-100 dark:hover:bg-zinc-800"},l=n?"a":"button";return jsxRuntime.jsx(framerMotion.motion.div,{whileHover:{scale:1.05},whileTap:{scale:.95},children:jsxRuntime.jsxs(l,{href:n,onClick:i,className:s("inline-flex items-center gap-2 px-4 py-2 rounded-lg font-medium transition-colors",c[a],r),target:n?"_blank":void 0,rel:n?"noopener noreferrer":void 0,children:[e,jsxRuntime.jsx("span",{children:t})]})})}var b=u;exports.SocialButton=u;exports.default=b;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/social-button/index.tsx"],"names":["cn","classes","SocialButton","icon","label","href","onClick","className","variant","variants","Component","jsx","motion","jsxs","social_button_default"],"mappings":"wJAIA,SAASA,CAAAA,CAAAA,GAAMC,EAAyC,CACtD,OAAOA,CAAAA,CAAQ,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CACzC,CAWO,SAASC,CAAAA,CAAa,CAC3B,KAAAC,CAAAA,CACA,KAAA,CAAAC,EACA,IAAA,CAAAC,CAAAA,CACA,QAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CAAU,SACZ,EAAsB,CACpB,IAAMC,CAAAA,CAAW,CACf,OAAA,CAAS,qGAAA,CACT,QAAS,sFAAA,CACT,KAAA,CAAO,0CACT,CAAA,CAEMC,CAAAA,CAAYL,CAAAA,CAAO,IAAM,QAAA,CAE/B,OACEM,eAACC,mBAAAA,CAAO,GAAA,CAAP,CAAW,UAAA,CAAY,CAAE,KAAA,CAAO,IAAK,CAAA,CAAG,QAAA,CAAU,CAAE,KAAA,CAAO,GAAK,CAAA,CAC/D,QAAA,CAAAC,eAAAA,CAACH,CAAAA,CAAA,CACC,IAAA,CAAML,CAAAA,CACN,OAAA,CAASC,CAAAA,CACT,SAAA,CAAWN,CAAAA,CACT,oFACAS,CAAAA,CAASD,CAAO,EAChBD,CACF,CAAA,CACA,OAAQF,CAAAA,CAAO,QAAA,CAAW,MAAA,CAC1B,GAAA,CAAKA,CAAAA,CAAO,qBAAA,CAAwB,OAEnC,QAAA,CAAA,CAAAF,CAAAA,CACDQ,cAAAA,CAAC,MAAA,CAAA,CAAM,QAAA,CAAAP,CAAAA,CAAM,GACf,CAAA,CACF,CAEJ,CAEA,IAAOU,CAAAA,CAAQZ","file":"index.js","sourcesContent":["\"use client\";\r\n\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 SocialButtonProps {\r\n icon: React.ReactNode;\r\n label: string;\r\n href?: string;\r\n onClick?: () => void;\r\n className?: string;\r\n variant?: \"default\" | \"outline\" | \"ghost\";\r\n}\r\n\r\nexport function SocialButton({\r\n icon,\r\n label,\r\n href,\r\n onClick,\r\n className,\r\n variant = \"default\",\r\n}: SocialButtonProps) {\r\n const variants = {\r\n default: \"bg-zinc-900 dark:bg-zinc-100 text-white dark:text-zinc-900 hover:bg-zinc-800 dark:hover:bg-zinc-200\",\r\n outline: \"border border-zinc-300 dark:border-zinc-700 hover:bg-zinc-100 dark:hover:bg-zinc-800\",\r\n ghost: \"hover:bg-zinc-100 dark:hover:bg-zinc-800\",\r\n };\r\n\r\n const Component = href ? \"a\" : \"button\";\r\n\r\n return (\r\n <motion.div whileHover={{ scale: 1.05 }} whileTap={{ scale: 0.95 }}>\r\n <Component\r\n href={href}\r\n onClick={onClick}\r\n className={cn(\r\n \"inline-flex items-center gap-2 px-4 py-2 rounded-lg font-medium transition-colors\",\r\n variants[variant],\r\n className\r\n )}\r\n target={href ? \"_blank\" : undefined}\r\n rel={href ? \"noopener noreferrer\" : undefined}\r\n >\r\n {icon}\r\n <span>{label}</span>\r\n </Component>\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default SocialButton;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {motion}from'framer-motion';import {jsx,jsxs}from'react/jsx-runtime';function s(...e){return e.filter(Boolean).join(" ")}function u({icon:e,label:t,href:n,onClick:i,className:r,variant:a="default"}){let c={default:"bg-zinc-900 dark:bg-zinc-100 text-white dark:text-zinc-900 hover:bg-zinc-800 dark:hover:bg-zinc-200",outline:"border border-zinc-300 dark:border-zinc-700 hover:bg-zinc-100 dark:hover:bg-zinc-800",ghost:"hover:bg-zinc-100 dark:hover:bg-zinc-800"},l=n?"a":"button";return jsx(motion.div,{whileHover:{scale:1.05},whileTap:{scale:.95},children:jsxs(l,{href:n,onClick:i,className:s("inline-flex items-center gap-2 px-4 py-2 rounded-lg font-medium transition-colors",c[a],r),target:n?"_blank":void 0,rel:n?"noopener noreferrer":void 0,children:[e,jsx("span",{children:t})]})})}var b=u;export{u as SocialButton,b as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/social-button/index.tsx"],"names":["cn","classes","SocialButton","icon","label","href","onClick","className","variant","variants","Component","jsx","motion","jsxs","social_button_default"],"mappings":"4EAIA,SAASA,CAAAA,CAAAA,GAAMC,EAAyC,CACtD,OAAOA,CAAAA,CAAQ,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CACzC,CAWO,SAASC,CAAAA,CAAa,CAC3B,KAAAC,CAAAA,CACA,KAAA,CAAAC,EACA,IAAA,CAAAC,CAAAA,CACA,QAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CAAU,SACZ,EAAsB,CACpB,IAAMC,CAAAA,CAAW,CACf,OAAA,CAAS,qGAAA,CACT,QAAS,sFAAA,CACT,KAAA,CAAO,0CACT,CAAA,CAEMC,CAAAA,CAAYL,CAAAA,CAAO,IAAM,QAAA,CAE/B,OACEM,IAACC,MAAAA,CAAO,GAAA,CAAP,CAAW,UAAA,CAAY,CAAE,KAAA,CAAO,IAAK,CAAA,CAAG,QAAA,CAAU,CAAE,KAAA,CAAO,GAAK,CAAA,CAC/D,QAAA,CAAAC,IAAAA,CAACH,CAAAA,CAAA,CACC,IAAA,CAAML,CAAAA,CACN,OAAA,CAASC,CAAAA,CACT,SAAA,CAAWN,CAAAA,CACT,oFACAS,CAAAA,CAASD,CAAO,EAChBD,CACF,CAAA,CACA,OAAQF,CAAAA,CAAO,QAAA,CAAW,MAAA,CAC1B,GAAA,CAAKA,CAAAA,CAAO,qBAAA,CAAwB,OAEnC,QAAA,CAAA,CAAAF,CAAAA,CACDQ,GAAAA,CAAC,MAAA,CAAA,CAAM,QAAA,CAAAP,CAAAA,CAAM,GACf,CAAA,CACF,CAEJ,CAEA,IAAOU,CAAAA,CAAQZ","file":"index.mjs","sourcesContent":["\"use client\";\r\n\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 SocialButtonProps {\r\n icon: React.ReactNode;\r\n label: string;\r\n href?: string;\r\n onClick?: () => void;\r\n className?: string;\r\n variant?: \"default\" | \"outline\" | \"ghost\";\r\n}\r\n\r\nexport function SocialButton({\r\n icon,\r\n label,\r\n href,\r\n onClick,\r\n className,\r\n variant = \"default\",\r\n}: SocialButtonProps) {\r\n const variants = {\r\n default: \"bg-zinc-900 dark:bg-zinc-100 text-white dark:text-zinc-900 hover:bg-zinc-800 dark:hover:bg-zinc-200\",\r\n outline: \"border border-zinc-300 dark:border-zinc-700 hover:bg-zinc-100 dark:hover:bg-zinc-800\",\r\n ghost: \"hover:bg-zinc-100 dark:hover:bg-zinc-800\",\r\n };\r\n\r\n const Component = href ? \"a\" : \"button\";\r\n\r\n return (\r\n <motion.div whileHover={{ scale: 1.05 }} whileTap={{ scale: 0.95 }}>\r\n <Component\r\n href={href}\r\n onClick={onClick}\r\n className={cn(\r\n \"inline-flex items-center gap-2 px-4 py-2 rounded-lg font-medium transition-colors\",\r\n variants[variant],\r\n className\r\n )}\r\n target={href ? \"_blank\" : undefined}\r\n rel={href ? \"noopener noreferrer\" : undefined}\r\n >\r\n {icon}\r\n <span>{label}</span>\r\n </Component>\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default SocialButton;\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 N({text:w="\u269B\uFE0F",delay:D=.01,spacing:l=100,followMouseDirection:C=true,randomFloat:f=true,exitDuration:E=.5,removalInterval:b=30,maxPoints:h=5}){let[I,v]=react.useState([]),o=react.useRef(null),x=react.useRef(Date.now()),g=react.useRef(0),p=e=>{if(!o.current)return;let n=o.current.getBoundingClientRect(),M=e.clientX-n.left,y=e.clientY-n.top;v(P=>{let t=[...P];if(t.length===0)t.push({id:g.current++,x:M,y,angle:0,...f&&{randomX:Math.random()*10-5,randomY:Math.random()*10-5,randomRotate:Math.random()*10-5}});else {let a=t[t.length-1],s=M-a.x,i=y-a.y,u=Math.sqrt(s*s+i*i);if(u>=l){let r=Math.atan2(i,s)*180/Math.PI;r>90?r-=180:r<-90&&(r+=180);let X=C?r:0,Y=Math.floor(u/l);for(let c=1;c<=Y;c++){let T=l*c/u;t.push({id:g.current++,x:a.x+s*T,y:a.y+i*T,angle:X,...f&&{randomX:Math.random()*10-5,randomY:Math.random()*10-5,randomRotate:Math.random()*10-5}});}}}return t.length>h&&(t=t.slice(t.length-h)),t}),x.current=Date.now();};return react.useEffect(()=>{let e=o.current;if(e)return e.addEventListener("mousemove",p),()=>e.removeEventListener("mousemove",p)},[]),react.useEffect(()=>{let e=setInterval(()=>{Date.now()-x.current>100&&v(n=>n.length>0?n.slice(1):n);},b);return ()=>clearInterval(e)},[b]),jsxRuntime.jsxs("div",{ref:o,className:"w-full h-full min-h-[200px] relative rounded-lg bg-zinc-50 dark:bg-zinc-900/50",children:[jsxRuntime.jsx("div",{className:"absolute inset-0 flex items-center justify-center text-zinc-400 text-sm pointer-events-none",children:"Move your mouse around"}),jsxRuntime.jsx(framerMotion.AnimatePresence,{children:I.map(e=>jsxRuntime.jsx(framerMotion.motion.div,{initial:{opacity:0,scale:1,rotate:e.angle},animate:{opacity:1,scale:1,rotate:e.angle},exit:{opacity:0,scale:0},transition:{opacity:{duration:E,ease:"easeOut",delay:D}},className:"absolute text-2xl pointer-events-none",style:{left:e.x,top:e.y,transform:"translate(-50%, -50%)"},children:w},e.id))})]})}var O=N;exports.TextCursor=N;exports.default=O;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/text-cursor/index.tsx"],"names":["TextCursor","text","delay","spacing","followMouseDirection","randomFloat","exitDuration","removalInterval","maxPoints","trail","setTrail","useState","containerRef","useRef","lastMoveTimeRef","idCounter","handleMouseMove","rect","mouseX","mouseY","prev","newTrail","last","dx","dy","distance","rawAngle","computedAngle","steps","i","t","useEffect","container","interval","jsxs","jsx","AnimatePresence","item","motion","text_cursor_default"],"mappings":"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","file":"index.js","sourcesContent":["\"use client\";\r\n\r\nimport React, { useState, useEffect, useRef } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\n\r\ninterface TrailItem {\r\n id: number;\r\n x: number;\r\n y: number;\r\n angle: number;\r\n randomX?: number;\r\n randomY?: number;\r\n randomRotate?: number;\r\n}\r\n\r\ninterface TextCursorProps {\r\n text?: string;\r\n delay?: number;\r\n spacing?: number;\r\n followMouseDirection?: boolean;\r\n randomFloat?: boolean;\r\n exitDuration?: number;\r\n removalInterval?: number;\r\n maxPoints?: number;\r\n}\r\n\r\nexport function TextCursor({\r\n text = \"⚛️\",\r\n delay = 0.01,\r\n spacing = 100,\r\n followMouseDirection = true,\r\n randomFloat = true,\r\n exitDuration = 0.5,\r\n removalInterval = 30,\r\n maxPoints = 5\r\n}: TextCursorProps) {\r\n const [trail, setTrail] = useState<TrailItem[]>([]);\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const lastMoveTimeRef = useRef<number>(Date.now());\r\n const idCounter = useRef<number>(0);\r\n\r\n const handleMouseMove = (e: MouseEvent) => {\r\n if (!containerRef.current) return;\r\n const rect = containerRef.current.getBoundingClientRect();\r\n const mouseX = e.clientX - rect.left;\r\n const mouseY = e.clientY - rect.top;\r\n\r\n setTrail(prev => {\r\n let newTrail = [...prev];\r\n if (newTrail.length === 0) {\r\n newTrail.push({\r\n id: idCounter.current++,\r\n x: mouseX,\r\n y: mouseY,\r\n angle: 0,\r\n ...(randomFloat && {\r\n randomX: Math.random() * 10 - 5,\r\n randomY: Math.random() * 10 - 5,\r\n randomRotate: Math.random() * 10 - 5\r\n })\r\n });\r\n } else {\r\n const last = newTrail[newTrail.length - 1];\r\n const dx = mouseX - last.x;\r\n const dy = mouseY - last.y;\r\n const distance = Math.sqrt(dx * dx + dy * dy);\r\n if (distance >= spacing) {\r\n let rawAngle = (Math.atan2(dy, dx) * 180) / Math.PI;\r\n if (rawAngle > 90) rawAngle -= 180;\r\n else if (rawAngle < -90) rawAngle += 180;\r\n const computedAngle = followMouseDirection ? rawAngle : 0;\r\n const steps = Math.floor(distance / spacing);\r\n for (let i = 1; i <= steps; i++) {\r\n const t = (spacing * i) / distance;\r\n newTrail.push({\r\n id: idCounter.current++,\r\n x: last.x + dx * t,\r\n y: last.y + dy * t,\r\n angle: computedAngle,\r\n ...(randomFloat && {\r\n randomX: Math.random() * 10 - 5,\r\n randomY: Math.random() * 10 - 5,\r\n randomRotate: Math.random() * 10 - 5\r\n })\r\n });\r\n }\r\n }\r\n }\r\n if (newTrail.length > maxPoints) {\r\n newTrail = newTrail.slice(newTrail.length - maxPoints);\r\n }\r\n return newTrail;\r\n });\r\n lastMoveTimeRef.current = Date.now();\r\n };\r\n\r\n useEffect(() => {\r\n const container = containerRef.current;\r\n if (!container) return;\r\n container.addEventListener(\"mousemove\", handleMouseMove);\r\n return () => container.removeEventListener(\"mousemove\", handleMouseMove);\r\n }, []);\r\n\r\n useEffect(() => {\r\n const interval = setInterval(() => {\r\n if (Date.now() - lastMoveTimeRef.current > 100) {\r\n setTrail(prev => (prev.length > 0 ? prev.slice(1) : prev));\r\n }\r\n }, removalInterval);\r\n return () => clearInterval(interval);\r\n }, [removalInterval]);\r\n\r\n return (\r\n <div ref={containerRef} className=\"w-full h-full min-h-[200px] relative rounded-lg bg-zinc-50 dark:bg-zinc-900/50\">\r\n <div className=\"absolute inset-0 flex items-center justify-center text-zinc-400 text-sm pointer-events-none\">\r\n Move your mouse around\r\n </div>\r\n <AnimatePresence>\r\n {trail.map(item => (\r\n <motion.div\r\n key={item.id}\r\n initial={{ opacity: 0, scale: 1, rotate: item.angle }}\r\n animate={{ opacity: 1, scale: 1, rotate: item.angle }}\r\n exit={{ opacity: 0, scale: 0 }}\r\n transition={{ opacity: { duration: exitDuration, ease: \"easeOut\", delay } }}\r\n className=\"absolute text-2xl pointer-events-none\"\r\n style={{ left: item.x, top: item.y, transform: \"translate(-50%, -50%)\" }}\r\n >\r\n {text}\r\n </motion.div>\r\n ))}\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n\r\nexport default TextCursor;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {useState,useRef,useEffect}from'react';import {AnimatePresence,motion}from'framer-motion';import {jsxs,jsx}from'react/jsx-runtime';function N({text:w="\u269B\uFE0F",delay:D=.01,spacing:l=100,followMouseDirection:C=true,randomFloat:f=true,exitDuration:E=.5,removalInterval:b=30,maxPoints:h=5}){let[I,v]=useState([]),o=useRef(null),x=useRef(Date.now()),g=useRef(0),p=e=>{if(!o.current)return;let n=o.current.getBoundingClientRect(),M=e.clientX-n.left,y=e.clientY-n.top;v(P=>{let t=[...P];if(t.length===0)t.push({id:g.current++,x:M,y,angle:0,...f&&{randomX:Math.random()*10-5,randomY:Math.random()*10-5,randomRotate:Math.random()*10-5}});else {let a=t[t.length-1],s=M-a.x,i=y-a.y,u=Math.sqrt(s*s+i*i);if(u>=l){let r=Math.atan2(i,s)*180/Math.PI;r>90?r-=180:r<-90&&(r+=180);let X=C?r:0,Y=Math.floor(u/l);for(let c=1;c<=Y;c++){let T=l*c/u;t.push({id:g.current++,x:a.x+s*T,y:a.y+i*T,angle:X,...f&&{randomX:Math.random()*10-5,randomY:Math.random()*10-5,randomRotate:Math.random()*10-5}});}}}return t.length>h&&(t=t.slice(t.length-h)),t}),x.current=Date.now();};return useEffect(()=>{let e=o.current;if(e)return e.addEventListener("mousemove",p),()=>e.removeEventListener("mousemove",p)},[]),useEffect(()=>{let e=setInterval(()=>{Date.now()-x.current>100&&v(n=>n.length>0?n.slice(1):n);},b);return ()=>clearInterval(e)},[b]),jsxs("div",{ref:o,className:"w-full h-full min-h-[200px] relative rounded-lg bg-zinc-50 dark:bg-zinc-900/50",children:[jsx("div",{className:"absolute inset-0 flex items-center justify-center text-zinc-400 text-sm pointer-events-none",children:"Move your mouse around"}),jsx(AnimatePresence,{children:I.map(e=>jsx(motion.div,{initial:{opacity:0,scale:1,rotate:e.angle},animate:{opacity:1,scale:1,rotate:e.angle},exit:{opacity:0,scale:0},transition:{opacity:{duration:E,ease:"easeOut",delay:D}},className:"absolute text-2xl pointer-events-none",style:{left:e.x,top:e.y,transform:"translate(-50%, -50%)"},children:w},e.id))})]})}var O=N;export{N as TextCursor,O as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/text-cursor/index.tsx"],"names":["TextCursor","text","delay","spacing","followMouseDirection","randomFloat","exitDuration","removalInterval","maxPoints","trail","setTrail","useState","containerRef","useRef","lastMoveTimeRef","idCounter","handleMouseMove","rect","mouseX","mouseY","prev","newTrail","last","dx","dy","distance","rawAngle","computedAngle","steps","i","t","useEffect","container","interval","jsxs","jsx","AnimatePresence","item","motion","text_cursor_default"],"mappings":"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","file":"index.mjs","sourcesContent":["\"use client\";\r\n\r\nimport React, { useState, useEffect, useRef } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\n\r\ninterface TrailItem {\r\n id: number;\r\n x: number;\r\n y: number;\r\n angle: number;\r\n randomX?: number;\r\n randomY?: number;\r\n randomRotate?: number;\r\n}\r\n\r\ninterface TextCursorProps {\r\n text?: string;\r\n delay?: number;\r\n spacing?: number;\r\n followMouseDirection?: boolean;\r\n randomFloat?: boolean;\r\n exitDuration?: number;\r\n removalInterval?: number;\r\n maxPoints?: number;\r\n}\r\n\r\nexport function TextCursor({\r\n text = \"⚛️\",\r\n delay = 0.01,\r\n spacing = 100,\r\n followMouseDirection = true,\r\n randomFloat = true,\r\n exitDuration = 0.5,\r\n removalInterval = 30,\r\n maxPoints = 5\r\n}: TextCursorProps) {\r\n const [trail, setTrail] = useState<TrailItem[]>([]);\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const lastMoveTimeRef = useRef<number>(Date.now());\r\n const idCounter = useRef<number>(0);\r\n\r\n const handleMouseMove = (e: MouseEvent) => {\r\n if (!containerRef.current) return;\r\n const rect = containerRef.current.getBoundingClientRect();\r\n const mouseX = e.clientX - rect.left;\r\n const mouseY = e.clientY - rect.top;\r\n\r\n setTrail(prev => {\r\n let newTrail = [...prev];\r\n if (newTrail.length === 0) {\r\n newTrail.push({\r\n id: idCounter.current++,\r\n x: mouseX,\r\n y: mouseY,\r\n angle: 0,\r\n ...(randomFloat && {\r\n randomX: Math.random() * 10 - 5,\r\n randomY: Math.random() * 10 - 5,\r\n randomRotate: Math.random() * 10 - 5\r\n })\r\n });\r\n } else {\r\n const last = newTrail[newTrail.length - 1];\r\n const dx = mouseX - last.x;\r\n const dy = mouseY - last.y;\r\n const distance = Math.sqrt(dx * dx + dy * dy);\r\n if (distance >= spacing) {\r\n let rawAngle = (Math.atan2(dy, dx) * 180) / Math.PI;\r\n if (rawAngle > 90) rawAngle -= 180;\r\n else if (rawAngle < -90) rawAngle += 180;\r\n const computedAngle = followMouseDirection ? rawAngle : 0;\r\n const steps = Math.floor(distance / spacing);\r\n for (let i = 1; i <= steps; i++) {\r\n const t = (spacing * i) / distance;\r\n newTrail.push({\r\n id: idCounter.current++,\r\n x: last.x + dx * t,\r\n y: last.y + dy * t,\r\n angle: computedAngle,\r\n ...(randomFloat && {\r\n randomX: Math.random() * 10 - 5,\r\n randomY: Math.random() * 10 - 5,\r\n randomRotate: Math.random() * 10 - 5\r\n })\r\n });\r\n }\r\n }\r\n }\r\n if (newTrail.length > maxPoints) {\r\n newTrail = newTrail.slice(newTrail.length - maxPoints);\r\n }\r\n return newTrail;\r\n });\r\n lastMoveTimeRef.current = Date.now();\r\n };\r\n\r\n useEffect(() => {\r\n const container = containerRef.current;\r\n if (!container) return;\r\n container.addEventListener(\"mousemove\", handleMouseMove);\r\n return () => container.removeEventListener(\"mousemove\", handleMouseMove);\r\n }, []);\r\n\r\n useEffect(() => {\r\n const interval = setInterval(() => {\r\n if (Date.now() - lastMoveTimeRef.current > 100) {\r\n setTrail(prev => (prev.length > 0 ? prev.slice(1) : prev));\r\n }\r\n }, removalInterval);\r\n return () => clearInterval(interval);\r\n }, [removalInterval]);\r\n\r\n return (\r\n <div ref={containerRef} className=\"w-full h-full min-h-[200px] relative rounded-lg bg-zinc-50 dark:bg-zinc-900/50\">\r\n <div className=\"absolute inset-0 flex items-center justify-center text-zinc-400 text-sm pointer-events-none\">\r\n Move your mouse around\r\n </div>\r\n <AnimatePresence>\r\n {trail.map(item => (\r\n <motion.div\r\n key={item.id}\r\n initial={{ opacity: 0, scale: 1, rotate: item.angle }}\r\n animate={{ opacity: 1, scale: 1, rotate: item.angle }}\r\n exit={{ opacity: 0, scale: 0 }}\r\n transition={{ opacity: { duration: exitDuration, ease: \"easeOut\", delay } }}\r\n className=\"absolute text-2xl pointer-events-none\"\r\n style={{ left: item.x, top: item.y, transform: \"translate(-50%, -50%)\" }}\r\n >\r\n {text}\r\n </motion.div>\r\n ))}\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n\r\nexport default TextCursor;\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 i(...s){return s.filter(Boolean).join(" ")}function h({className:s,size:a="md",onChange:c}){let[t,r]=react.useState(false);react.useEffect(()=>{let o=window.matchMedia("(prefers-color-scheme: dark)").matches;r(o);},[]);let d=()=>{let o=!t;r(o),o?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark"),c?.(o);},m={sm:"w-12 h-6",md:"w-14 h-7",lg:"w-16 h-8"},l={sm:"w-4 h-4",md:"w-5 h-5",lg:"w-6 h-6"};return jsxRuntime.jsxs(framerMotion.motion.button,{onClick:d,className:i("relative rounded-full border transition-all duration-300 ease-in-out focus:outline-none focus:ring-2 focus:ring-zinc-500 focus:ring-offset-2 focus:ring-offset-zinc-900",m[a],t?"bg-zinc-800 border-zinc-700":"bg-zinc-700 border-zinc-600",s),whileTap:{scale:.95},initial:false,children:[jsxRuntime.jsx(framerMotion.motion.div,{className:"absolute inset-0 rounded-full",animate:{background:t?"linear-gradient(135deg, #27272a 0%, #18181b 100%)":"linear-gradient(135deg, #3f3f46 0%, #27272a 100%)"},transition:{duration:.3}}),jsxRuntime.jsx(framerMotion.motion.div,{className:i("absolute top-0.5 rounded-full shadow-lg flex items-center justify-center",a==="sm"?"w-5 h-5":a==="md"?"w-6 h-6":"w-7 h-7",t?"bg-zinc-300":"bg-zinc-100"),animate:{x:t?a==="sm"?24:a==="md"?28:32:2},transition:{type:"spring",stiffness:500,damping:30},children:jsxRuntime.jsx(framerMotion.AnimatePresence,{mode:"wait",children:t?jsxRuntime.jsx(framerMotion.motion.svg,{className:i("text-zinc-700",l[a]),fill:"currentColor",viewBox:"0 0 24 24",initial:{opacity:0,rotate:-90},animate:{opacity:1,rotate:0},exit:{opacity:0,rotate:90},transition:{duration:.2},children:jsxRuntime.jsx("path",{d:"M21.752 15.002A9.718 9.718 0 0118 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 003 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 009.002-5.998z"})},"moon"):jsxRuntime.jsx(framerMotion.motion.svg,{className:i("text-zinc-600",l[a]),fill:"currentColor",viewBox:"0 0 24 24",initial:{opacity:0,rotate:-90},animate:{opacity:1,rotate:0},exit:{opacity:0,rotate:90},transition:{duration:.2},children:jsxRuntime.jsx("path",{d:"M12 2.25a.75.75 0 01.75.75v2.25a.75.75 0 01-1.5 0V3a.75.75 0 01.75-.75zM7.5 12a4.5 4.5 0 119 0 4.5 4.5 0 01-9 0zM18.894 6.166a.75.75 0 00-1.06-1.06l-1.591 1.59a.75.75 0 101.06 1.061l1.591-1.59zM21.75 12a.75.75 0 01-.75.75h-2.25a.75.75 0 010-1.5H21a.75.75 0 01.75.75zM17.834 18.894a.75.75 0 001.06-1.06l-1.59-1.591a.75.75 0 10-1.061 1.06l1.59 1.591zM12 18a.75.75 0 01.75.75V21a.75.75 0 01-1.5 0v-2.25A.75.75 0 0112 18zM7.758 17.303a.75.75 0 00-1.061-1.06l-1.591 1.59a.75.75 0 001.06 1.061l1.591-1.59zM6 12a.75.75 0 01-.75.75H3a.75.75 0 010-1.5h2.25A.75.75 0 016 12zM6.697 7.757a.75.75 0 001.06-1.06l-1.59-1.591a.75.75 0 00-1.061 1.06l1.59 1.591z"})},"sun")})}),jsxRuntime.jsx(framerMotion.motion.div,{className:"absolute inset-0 rounded-full opacity-20",animate:{boxShadow:t?"0 0 20px rgba(161, 161, 170, 0.2)":"0 0 20px rgba(161, 161, 170, 0.3)"},transition:{duration:.3}})]})}var v=h;exports.AnimatedThemeToggler=h;exports.default=v;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/theme-toggler/index.tsx"],"names":["cn","classes","AnimatedThemeToggler","className","size","onChange","isDark","setIsDark","useState","useEffect","prefersDark","toggleTheme","newTheme","sizeClasses","iconSizes","jsxs","motion","jsx","AnimatePresence","theme_toggler_default"],"mappings":"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","file":"index.js","sourcesContent":["\"use client\";\r\n\r\nimport React, { useState, useEffect } from \"react\";\r\nimport { motion, AnimatePresence } 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 AnimatedThemeTogglerProps {\r\n className?: string;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n onChange?: (isDark: boolean) => void;\r\n}\r\n\r\nexport function AnimatedThemeToggler({ \r\n className, \r\n size = \"md\",\r\n onChange \r\n}: AnimatedThemeTogglerProps) {\r\n const [isDark, setIsDark] = useState(false);\r\n\r\n useEffect(() => {\r\n const prefersDark = window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\r\n setIsDark(prefersDark);\r\n }, []);\r\n\r\n const toggleTheme = () => {\r\n const newTheme = !isDark;\r\n setIsDark(newTheme);\r\n \r\n if (newTheme) {\r\n document.documentElement.classList.add(\"dark\");\r\n } else {\r\n document.documentElement.classList.remove(\"dark\");\r\n }\r\n \r\n onChange?.(newTheme);\r\n };\r\n\r\n const sizeClasses = {\r\n sm: \"w-12 h-6\",\r\n md: \"w-14 h-7\",\r\n lg: \"w-16 h-8\"\r\n };\r\n\r\n const iconSizes = {\r\n sm: \"w-4 h-4\",\r\n md: \"w-5 h-5\",\r\n lg: \"w-6 h-6\"\r\n };\r\n\r\n return (\r\n <motion.button\r\n onClick={toggleTheme}\r\n className={cn(\r\n \"relative rounded-full border transition-all duration-300 ease-in-out focus:outline-none focus:ring-2 focus:ring-zinc-500 focus:ring-offset-2 focus:ring-offset-zinc-900\",\r\n sizeClasses[size],\r\n isDark \r\n ? \"bg-zinc-800 border-zinc-700\" \r\n : \"bg-zinc-700 border-zinc-600\",\r\n className\r\n )}\r\n whileTap={{ scale: 0.95 }}\r\n initial={false}\r\n >\r\n <motion.div\r\n className=\"absolute inset-0 rounded-full\"\r\n animate={{\r\n background: isDark \r\n ? \"linear-gradient(135deg, #27272a 0%, #18181b 100%)\"\r\n : \"linear-gradient(135deg, #3f3f46 0%, #27272a 100%)\"\r\n }}\r\n transition={{ duration: 0.3 }}\r\n />\r\n \r\n <motion.div\r\n className={cn(\r\n \"absolute top-0.5 rounded-full shadow-lg flex items-center justify-center\",\r\n size === \"sm\" ? \"w-5 h-5\" : size === \"md\" ? \"w-6 h-6\" : \"w-7 h-7\",\r\n isDark ? \"bg-zinc-300\" : \"bg-zinc-100\"\r\n )}\r\n animate={{\r\n x: isDark ? (size === \"sm\" ? 24 : size === \"md\" ? 28 : 32) : 2,\r\n }}\r\n transition={{\r\n type: \"spring\",\r\n stiffness: 500,\r\n damping: 30\r\n }}\r\n >\r\n <AnimatePresence mode=\"wait\">\r\n {isDark ? (\r\n <motion.svg\r\n key=\"moon\"\r\n className={cn(\"text-zinc-700\", iconSizes[size])}\r\n fill=\"currentColor\"\r\n viewBox=\"0 0 24 24\"\r\n initial={{ opacity: 0, rotate: -90 }}\r\n animate={{ opacity: 1, rotate: 0 }}\r\n exit={{ opacity: 0, rotate: 90 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n <path d=\"M21.752 15.002A9.718 9.718 0 0118 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 003 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 009.002-5.998z\" />\r\n </motion.svg>\r\n ) : (\r\n <motion.svg\r\n key=\"sun\"\r\n className={cn(\"text-zinc-600\", iconSizes[size])}\r\n fill=\"currentColor\"\r\n viewBox=\"0 0 24 24\"\r\n initial={{ opacity: 0, rotate: -90 }}\r\n animate={{ opacity: 1, rotate: 0 }}\r\n exit={{ opacity: 0, rotate: 90 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n <path d=\"M12 2.25a.75.75 0 01.75.75v2.25a.75.75 0 01-1.5 0V3a.75.75 0 01.75-.75zM7.5 12a4.5 4.5 0 119 0 4.5 4.5 0 01-9 0zM18.894 6.166a.75.75 0 00-1.06-1.06l-1.591 1.59a.75.75 0 101.06 1.061l1.591-1.59zM21.75 12a.75.75 0 01-.75.75h-2.25a.75.75 0 010-1.5H21a.75.75 0 01.75.75zM17.834 18.894a.75.75 0 001.06-1.06l-1.59-1.591a.75.75 0 10-1.061 1.06l1.59 1.591zM12 18a.75.75 0 01.75.75V21a.75.75 0 01-1.5 0v-2.25A.75.75 0 0112 18zM7.758 17.303a.75.75 0 00-1.061-1.06l-1.591 1.59a.75.75 0 001.06 1.061l1.591-1.59zM6 12a.75.75 0 01-.75.75H3a.75.75 0 010-1.5h2.25A.75.75 0 016 12zM6.697 7.757a.75.75 0 001.06-1.06l-1.59-1.591a.75.75 0 00-1.061 1.06l1.59 1.591z\" />\r\n </motion.svg>\r\n )}\r\n </AnimatePresence>\r\n </motion.div>\r\n \r\n <motion.div\r\n className=\"absolute inset-0 rounded-full opacity-20\"\r\n animate={{\r\n boxShadow: isDark \r\n ? \"0 0 20px rgba(161, 161, 170, 0.2)\" \r\n : \"0 0 20px rgba(161, 161, 170, 0.3)\"\r\n }}\r\n transition={{ duration: 0.3 }}\r\n />\r\n </motion.button>\r\n );\r\n}\r\n\r\nexport default AnimatedThemeToggler;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {useState,useEffect}from'react';import {motion,AnimatePresence}from'framer-motion';import {jsxs,jsx}from'react/jsx-runtime';function i(...s){return s.filter(Boolean).join(" ")}function h({className:s,size:a="md",onChange:c}){let[t,r]=useState(false);useEffect(()=>{let o=window.matchMedia("(prefers-color-scheme: dark)").matches;r(o);},[]);let d=()=>{let o=!t;r(o),o?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark"),c?.(o);},m={sm:"w-12 h-6",md:"w-14 h-7",lg:"w-16 h-8"},l={sm:"w-4 h-4",md:"w-5 h-5",lg:"w-6 h-6"};return jsxs(motion.button,{onClick:d,className:i("relative rounded-full border transition-all duration-300 ease-in-out focus:outline-none focus:ring-2 focus:ring-zinc-500 focus:ring-offset-2 focus:ring-offset-zinc-900",m[a],t?"bg-zinc-800 border-zinc-700":"bg-zinc-700 border-zinc-600",s),whileTap:{scale:.95},initial:false,children:[jsx(motion.div,{className:"absolute inset-0 rounded-full",animate:{background:t?"linear-gradient(135deg, #27272a 0%, #18181b 100%)":"linear-gradient(135deg, #3f3f46 0%, #27272a 100%)"},transition:{duration:.3}}),jsx(motion.div,{className:i("absolute top-0.5 rounded-full shadow-lg flex items-center justify-center",a==="sm"?"w-5 h-5":a==="md"?"w-6 h-6":"w-7 h-7",t?"bg-zinc-300":"bg-zinc-100"),animate:{x:t?a==="sm"?24:a==="md"?28:32:2},transition:{type:"spring",stiffness:500,damping:30},children:jsx(AnimatePresence,{mode:"wait",children:t?jsx(motion.svg,{className:i("text-zinc-700",l[a]),fill:"currentColor",viewBox:"0 0 24 24",initial:{opacity:0,rotate:-90},animate:{opacity:1,rotate:0},exit:{opacity:0,rotate:90},transition:{duration:.2},children:jsx("path",{d:"M21.752 15.002A9.718 9.718 0 0118 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 003 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 009.002-5.998z"})},"moon"):jsx(motion.svg,{className:i("text-zinc-600",l[a]),fill:"currentColor",viewBox:"0 0 24 24",initial:{opacity:0,rotate:-90},animate:{opacity:1,rotate:0},exit:{opacity:0,rotate:90},transition:{duration:.2},children:jsx("path",{d:"M12 2.25a.75.75 0 01.75.75v2.25a.75.75 0 01-1.5 0V3a.75.75 0 01.75-.75zM7.5 12a4.5 4.5 0 119 0 4.5 4.5 0 01-9 0zM18.894 6.166a.75.75 0 00-1.06-1.06l-1.591 1.59a.75.75 0 101.06 1.061l1.591-1.59zM21.75 12a.75.75 0 01-.75.75h-2.25a.75.75 0 010-1.5H21a.75.75 0 01.75.75zM17.834 18.894a.75.75 0 001.06-1.06l-1.59-1.591a.75.75 0 10-1.061 1.06l1.59 1.591zM12 18a.75.75 0 01.75.75V21a.75.75 0 01-1.5 0v-2.25A.75.75 0 0112 18zM7.758 17.303a.75.75 0 00-1.061-1.06l-1.591 1.59a.75.75 0 001.06 1.061l1.591-1.59zM6 12a.75.75 0 01-.75.75H3a.75.75 0 010-1.5h2.25A.75.75 0 016 12zM6.697 7.757a.75.75 0 001.06-1.06l-1.59-1.591a.75.75 0 00-1.061 1.06l1.59 1.591z"})},"sun")})}),jsx(motion.div,{className:"absolute inset-0 rounded-full opacity-20",animate:{boxShadow:t?"0 0 20px rgba(161, 161, 170, 0.2)":"0 0 20px rgba(161, 161, 170, 0.3)"},transition:{duration:.3}})]})}var v=h;export{h as AnimatedThemeToggler,v as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/theme-toggler/index.tsx"],"names":["cn","classes","AnimatedThemeToggler","className","size","onChange","isDark","setIsDark","useState","useEffect","prefersDark","toggleTheme","newTheme","sizeClasses","iconSizes","jsxs","motion","jsx","AnimatePresence","theme_toggler_default"],"mappings":"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","file":"index.mjs","sourcesContent":["\"use client\";\r\n\r\nimport React, { useState, useEffect } from \"react\";\r\nimport { motion, AnimatePresence } 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 AnimatedThemeTogglerProps {\r\n className?: string;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n onChange?: (isDark: boolean) => void;\r\n}\r\n\r\nexport function AnimatedThemeToggler({ \r\n className, \r\n size = \"md\",\r\n onChange \r\n}: AnimatedThemeTogglerProps) {\r\n const [isDark, setIsDark] = useState(false);\r\n\r\n useEffect(() => {\r\n const prefersDark = window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\r\n setIsDark(prefersDark);\r\n }, []);\r\n\r\n const toggleTheme = () => {\r\n const newTheme = !isDark;\r\n setIsDark(newTheme);\r\n \r\n if (newTheme) {\r\n document.documentElement.classList.add(\"dark\");\r\n } else {\r\n document.documentElement.classList.remove(\"dark\");\r\n }\r\n \r\n onChange?.(newTheme);\r\n };\r\n\r\n const sizeClasses = {\r\n sm: \"w-12 h-6\",\r\n md: \"w-14 h-7\",\r\n lg: \"w-16 h-8\"\r\n };\r\n\r\n const iconSizes = {\r\n sm: \"w-4 h-4\",\r\n md: \"w-5 h-5\",\r\n lg: \"w-6 h-6\"\r\n };\r\n\r\n return (\r\n <motion.button\r\n onClick={toggleTheme}\r\n className={cn(\r\n \"relative rounded-full border transition-all duration-300 ease-in-out focus:outline-none focus:ring-2 focus:ring-zinc-500 focus:ring-offset-2 focus:ring-offset-zinc-900\",\r\n sizeClasses[size],\r\n isDark \r\n ? \"bg-zinc-800 border-zinc-700\" \r\n : \"bg-zinc-700 border-zinc-600\",\r\n className\r\n )}\r\n whileTap={{ scale: 0.95 }}\r\n initial={false}\r\n >\r\n <motion.div\r\n className=\"absolute inset-0 rounded-full\"\r\n animate={{\r\n background: isDark \r\n ? \"linear-gradient(135deg, #27272a 0%, #18181b 100%)\"\r\n : \"linear-gradient(135deg, #3f3f46 0%, #27272a 100%)\"\r\n }}\r\n transition={{ duration: 0.3 }}\r\n />\r\n \r\n <motion.div\r\n className={cn(\r\n \"absolute top-0.5 rounded-full shadow-lg flex items-center justify-center\",\r\n size === \"sm\" ? \"w-5 h-5\" : size === \"md\" ? \"w-6 h-6\" : \"w-7 h-7\",\r\n isDark ? \"bg-zinc-300\" : \"bg-zinc-100\"\r\n )}\r\n animate={{\r\n x: isDark ? (size === \"sm\" ? 24 : size === \"md\" ? 28 : 32) : 2,\r\n }}\r\n transition={{\r\n type: \"spring\",\r\n stiffness: 500,\r\n damping: 30\r\n }}\r\n >\r\n <AnimatePresence mode=\"wait\">\r\n {isDark ? (\r\n <motion.svg\r\n key=\"moon\"\r\n className={cn(\"text-zinc-700\", iconSizes[size])}\r\n fill=\"currentColor\"\r\n viewBox=\"0 0 24 24\"\r\n initial={{ opacity: 0, rotate: -90 }}\r\n animate={{ opacity: 1, rotate: 0 }}\r\n exit={{ opacity: 0, rotate: 90 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n <path d=\"M21.752 15.002A9.718 9.718 0 0118 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 003 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 009.002-5.998z\" />\r\n </motion.svg>\r\n ) : (\r\n <motion.svg\r\n key=\"sun\"\r\n className={cn(\"text-zinc-600\", iconSizes[size])}\r\n fill=\"currentColor\"\r\n viewBox=\"0 0 24 24\"\r\n initial={{ opacity: 0, rotate: -90 }}\r\n animate={{ opacity: 1, rotate: 0 }}\r\n exit={{ opacity: 0, rotate: 90 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n <path d=\"M12 2.25a.75.75 0 01.75.75v2.25a.75.75 0 01-1.5 0V3a.75.75 0 01.75-.75zM7.5 12a4.5 4.5 0 119 0 4.5 4.5 0 01-9 0zM18.894 6.166a.75.75 0 00-1.06-1.06l-1.591 1.59a.75.75 0 101.06 1.061l1.591-1.59zM21.75 12a.75.75 0 01-.75.75h-2.25a.75.75 0 010-1.5H21a.75.75 0 01.75.75zM17.834 18.894a.75.75 0 001.06-1.06l-1.59-1.591a.75.75 0 10-1.061 1.06l1.59 1.591zM12 18a.75.75 0 01.75.75V21a.75.75 0 01-1.5 0v-2.25A.75.75 0 0112 18zM7.758 17.303a.75.75 0 00-1.061-1.06l-1.591 1.59a.75.75 0 001.06 1.061l1.591-1.59zM6 12a.75.75 0 01-.75.75H3a.75.75 0 010-1.5h2.25A.75.75 0 016 12zM6.697 7.757a.75.75 0 001.06-1.06l-1.59-1.591a.75.75 0 00-1.061 1.06l1.59 1.591z\" />\r\n </motion.svg>\r\n )}\r\n </AnimatePresence>\r\n </motion.div>\r\n \r\n <motion.div\r\n className=\"absolute inset-0 rounded-full opacity-20\"\r\n animate={{\r\n boxShadow: isDark \r\n ? \"0 0 20px rgba(161, 161, 170, 0.2)\" \r\n : \"0 0 20px rgba(161, 161, 170, 0.3)\"\r\n }}\r\n transition={{ duration: 0.3 }}\r\n />\r\n </motion.button>\r\n );\r\n}\r\n\r\nexport default AnimatedThemeToggler;\r\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var framerMotion=require('framer-motion'),jsxRuntime=require('react/jsx-runtime');function r(...e){return e.filter(Boolean).join(" ")}function s({children:e,onClick:a,className:i,disabled:n=false}){return jsxRuntime.jsxs(framerMotion.motion.button,{onClick:a,disabled:n,className:r("relative inline-flex items-center justify-center px-6 py-3 overflow-hidden font-medium rounded-xl","bg-gradient-to-r from-zinc-900 to-zinc-800 dark:from-zinc-100 dark:to-zinc-200","text-white dark:text-zinc-900","border border-zinc-700 dark:border-zinc-300","shadow-lg shadow-zinc-900/20 dark:shadow-zinc-100/20","transition-all duration-300","hover:shadow-xl hover:shadow-zinc-900/30 dark:hover:shadow-zinc-100/30","disabled:opacity-50 disabled:cursor-not-allowed",i),whileHover:{scale:n?1:1.02},whileTap:{scale:n?1:.98},children:[jsxRuntime.jsx(framerMotion.motion.span,{className:"absolute inset-0 bg-gradient-to-r from-transparent via-white/10 to-transparent",initial:{x:"-100%"},whileHover:{x:"100%"},transition:{duration:.6,ease:"easeInOut"}}),jsxRuntime.jsx("span",{className:"relative z-10 flex items-center gap-2",children:e})]})}var c=s;exports.V0Button=s;exports.default=c;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/v0-button/index.tsx"],"names":["cn","classes","V0Button","children","onClick","className","disabled","jsxs","motion","jsx","v0_button_default"],"mappings":"wJAIA,SAASA,CAAAA,CAAAA,GAAMC,EAAyC,CACtD,OAAOA,CAAAA,CAAQ,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CACzC,CASO,SAASC,CAAAA,CAAS,CACvB,SAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,EAAW,KACb,CAAA,CAAkB,CAChB,OACEC,eAAAA,CAACC,mBAAAA,CAAO,OAAP,CACC,OAAA,CAASJ,CAAAA,CACT,QAAA,CAAUE,CAAAA,CACV,SAAA,CAAWN,EACT,mGAAA,CACA,gFAAA,CACA,+BAAA,CACA,6CAAA,CACA,sDAAA,CACA,6BAAA,CACA,yEACA,iDAAA,CACAK,CACF,EACA,UAAA,CAAY,CAAE,MAAOC,CAAAA,CAAW,CAAA,CAAI,IAAK,CAAA,CACzC,QAAA,CAAU,CAAE,MAAOA,CAAAA,CAAW,CAAA,CAAI,GAAK,CAAA,CAEvC,QAAA,CAAA,CAAAG,cAAAA,CAACD,oBAAO,IAAA,CAAP,CACC,SAAA,CAAU,gFAAA,CACV,OAAA,CAAS,CAAE,EAAG,OAAQ,CAAA,CACtB,UAAA,CAAY,CAAE,CAAA,CAAG,MAAO,EACxB,UAAA,CAAY,CAAE,QAAA,CAAU,EAAA,CAAK,IAAA,CAAM,WAAY,EACjD,CAAA,CACAC,cAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,uCAAA,CACb,QAAA,CAAAN,EACH,CAAA,CAAA,CACF,CAEJ,CAEA,IAAOO,CAAAA,CAAQR","file":"index.js","sourcesContent":["\"use client\";\r\n\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 V0ButtonProps {\r\n children: React.ReactNode;\r\n onClick?: () => void;\r\n className?: string;\r\n disabled?: boolean;\r\n}\r\n\r\nexport function V0Button({\r\n children,\r\n onClick,\r\n className,\r\n disabled = false,\r\n}: V0ButtonProps) {\r\n return (\r\n <motion.button\r\n onClick={onClick}\r\n disabled={disabled}\r\n className={cn(\r\n \"relative inline-flex items-center justify-center px-6 py-3 overflow-hidden font-medium rounded-xl\",\r\n \"bg-gradient-to-r from-zinc-900 to-zinc-800 dark:from-zinc-100 dark:to-zinc-200\",\r\n \"text-white dark:text-zinc-900\",\r\n \"border border-zinc-700 dark:border-zinc-300\",\r\n \"shadow-lg shadow-zinc-900/20 dark:shadow-zinc-100/20\",\r\n \"transition-all duration-300\",\r\n \"hover:shadow-xl hover:shadow-zinc-900/30 dark:hover:shadow-zinc-100/30\",\r\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\r\n className\r\n )}\r\n whileHover={{ scale: disabled ? 1 : 1.02 }}\r\n whileTap={{ scale: disabled ? 1 : 0.98 }}\r\n >\r\n <motion.span\r\n className=\"absolute inset-0 bg-gradient-to-r from-transparent via-white/10 to-transparent\"\r\n initial={{ x: \"-100%\" }}\r\n whileHover={{ x: \"100%\" }}\r\n transition={{ duration: 0.6, ease: \"easeInOut\" }}\r\n />\r\n <span className=\"relative z-10 flex items-center gap-2\">\r\n {children}\r\n </span>\r\n </motion.button>\r\n );\r\n}\r\n\r\nexport default V0Button;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {motion}from'framer-motion';import {jsxs,jsx}from'react/jsx-runtime';function r(...e){return e.filter(Boolean).join(" ")}function s({children:e,onClick:a,className:i,disabled:n=false}){return jsxs(motion.button,{onClick:a,disabled:n,className:r("relative inline-flex items-center justify-center px-6 py-3 overflow-hidden font-medium rounded-xl","bg-gradient-to-r from-zinc-900 to-zinc-800 dark:from-zinc-100 dark:to-zinc-200","text-white dark:text-zinc-900","border border-zinc-700 dark:border-zinc-300","shadow-lg shadow-zinc-900/20 dark:shadow-zinc-100/20","transition-all duration-300","hover:shadow-xl hover:shadow-zinc-900/30 dark:hover:shadow-zinc-100/30","disabled:opacity-50 disabled:cursor-not-allowed",i),whileHover:{scale:n?1:1.02},whileTap:{scale:n?1:.98},children:[jsx(motion.span,{className:"absolute inset-0 bg-gradient-to-r from-transparent via-white/10 to-transparent",initial:{x:"-100%"},whileHover:{x:"100%"},transition:{duration:.6,ease:"easeInOut"}}),jsx("span",{className:"relative z-10 flex items-center gap-2",children:e})]})}var c=s;export{s as V0Button,c as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/v0-button/index.tsx"],"names":["cn","classes","V0Button","children","onClick","className","disabled","jsxs","motion","jsx","v0_button_default"],"mappings":"4EAIA,SAASA,CAAAA,CAAAA,GAAMC,EAAyC,CACtD,OAAOA,CAAAA,CAAQ,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CACzC,CASO,SAASC,CAAAA,CAAS,CACvB,SAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,EAAW,KACb,CAAA,CAAkB,CAChB,OACEC,IAAAA,CAACC,MAAAA,CAAO,OAAP,CACC,OAAA,CAASJ,CAAAA,CACT,QAAA,CAAUE,CAAAA,CACV,SAAA,CAAWN,EACT,mGAAA,CACA,gFAAA,CACA,+BAAA,CACA,6CAAA,CACA,sDAAA,CACA,6BAAA,CACA,yEACA,iDAAA,CACAK,CACF,EACA,UAAA,CAAY,CAAE,MAAOC,CAAAA,CAAW,CAAA,CAAI,IAAK,CAAA,CACzC,QAAA,CAAU,CAAE,MAAOA,CAAAA,CAAW,CAAA,CAAI,GAAK,CAAA,CAEvC,QAAA,CAAA,CAAAG,GAAAA,CAACD,OAAO,IAAA,CAAP,CACC,SAAA,CAAU,gFAAA,CACV,OAAA,CAAS,CAAE,EAAG,OAAQ,CAAA,CACtB,UAAA,CAAY,CAAE,CAAA,CAAG,MAAO,EACxB,UAAA,CAAY,CAAE,QAAA,CAAU,EAAA,CAAK,IAAA,CAAM,WAAY,EACjD,CAAA,CACAC,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,uCAAA,CACb,QAAA,CAAAN,EACH,CAAA,CAAA,CACF,CAEJ,CAEA,IAAOO,CAAAA,CAAQR","file":"index.mjs","sourcesContent":["\"use client\";\r\n\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 V0ButtonProps {\r\n children: React.ReactNode;\r\n onClick?: () => void;\r\n className?: string;\r\n disabled?: boolean;\r\n}\r\n\r\nexport function V0Button({\r\n children,\r\n onClick,\r\n className,\r\n disabled = false,\r\n}: V0ButtonProps) {\r\n return (\r\n <motion.button\r\n onClick={onClick}\r\n disabled={disabled}\r\n className={cn(\r\n \"relative inline-flex items-center justify-center px-6 py-3 overflow-hidden font-medium rounded-xl\",\r\n \"bg-gradient-to-r from-zinc-900 to-zinc-800 dark:from-zinc-100 dark:to-zinc-200\",\r\n \"text-white dark:text-zinc-900\",\r\n \"border border-zinc-700 dark:border-zinc-300\",\r\n \"shadow-lg shadow-zinc-900/20 dark:shadow-zinc-100/20\",\r\n \"transition-all duration-300\",\r\n \"hover:shadow-xl hover:shadow-zinc-900/30 dark:hover:shadow-zinc-100/30\",\r\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\r\n className\r\n )}\r\n whileHover={{ scale: disabled ? 1 : 1.02 }}\r\n whileTap={{ scale: disabled ? 1 : 0.98 }}\r\n >\r\n <motion.span\r\n className=\"absolute inset-0 bg-gradient-to-r from-transparent via-white/10 to-transparent\"\r\n initial={{ x: \"-100%\" }}\r\n whileHover={{ x: \"100%\" }}\r\n transition={{ duration: 0.6, ease: \"easeInOut\" }}\r\n />\r\n <span className=\"relative z-10 flex items-center gap-2\">\r\n {children}\r\n </span>\r\n </motion.button>\r\n );\r\n}\r\n\r\nexport default V0Button;\r\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "bynana-ui",
3
- "version": "1.4.0",
4
- "description": "105+ Beautiful React UI components built with Tailwind CSS and Framer Motion",
3
+ "version": "1.5.0",
4
+ "description": "120+ Beautiful React UI components built with Tailwind CSS and Framer Motion",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
7
7
  "types": "dist/index.d.ts",
@@ -100,6 +100,12 @@
100
100
  "./input-otp": { "import": "./dist/input-otp/index.mjs", "require": "./dist/input-otp/index.js", "types": "./dist/input-otp/index.d.ts" },
101
101
  "./hamburger-basic": { "import": "./dist/hamburger-basic/index.mjs", "require": "./dist/hamburger-basic/index.js", "types": "./dist/hamburger-basic/index.d.ts" },
102
102
  "./hamburger-spin": { "import": "./dist/hamburger-spin/index.mjs", "require": "./dist/hamburger-spin/index.js", "types": "./dist/hamburger-spin/index.d.ts" },
103
+ "./hamburger-morph": { "import": "./dist/hamburger-morph/index.mjs", "require": "./dist/hamburger-morph/index.js", "types": "./dist/hamburger-morph/index.d.ts" },
104
+ "./hamburger-spring": { "import": "./dist/hamburger-spring/index.mjs", "require": "./dist/hamburger-spring/index.js", "types": "./dist/hamburger-spring/index.d.ts" },
105
+ "./hamburger-wave": { "import": "./dist/hamburger-wave/index.mjs", "require": "./dist/hamburger-wave/index.js", "types": "./dist/hamburger-wave/index.d.ts" },
106
+ "./hamburger-stagger": { "import": "./dist/hamburger-stagger/index.mjs", "require": "./dist/hamburger-stagger/index.js", "types": "./dist/hamburger-stagger/index.d.ts" },
107
+ "./hamburger-3d": { "import": "./dist/hamburger-3d/index.mjs", "require": "./dist/hamburger-3d/index.js", "types": "./dist/hamburger-3d/index.d.ts" },
108
+ "./hamburger-elastic": { "import": "./dist/hamburger-elastic/index.mjs", "require": "./dist/hamburger-elastic/index.js", "types": "./dist/hamburger-elastic/index.d.ts" },
103
109
  "./click-spark": { "import": "./dist/click-spark/index.mjs", "require": "./dist/click-spark/index.js", "types": "./dist/click-spark/index.d.ts" },
104
110
  "./smooth-cursor": { "import": "./dist/smooth-cursor/index.mjs", "require": "./dist/smooth-cursor/index.js", "types": "./dist/smooth-cursor/index.d.ts" },
105
111
  "./float-effect": { "import": "./dist/float-effect/index.mjs", "require": "./dist/float-effect/index.js", "types": "./dist/float-effect/index.d.ts" },
@@ -111,6 +117,17 @@
111
117
  "./multi-step-loader": { "import": "./dist/multi-step-loader/index.mjs", "require": "./dist/multi-step-loader/index.js", "types": "./dist/multi-step-loader/index.d.ts" },
112
118
  "./ascii-text": { "import": "./dist/ascii-text/index.mjs", "require": "./dist/ascii-text/index.js", "types": "./dist/ascii-text/index.d.ts" },
113
119
  "./falling-text": { "import": "./dist/falling-text/index.mjs", "require": "./dist/falling-text/index.js", "types": "./dist/falling-text/index.d.ts" },
120
+ "./animated-circular-progress": { "import": "./dist/animated-circular-progress/index.mjs", "require": "./dist/animated-circular-progress/index.js", "types": "./dist/animated-circular-progress/index.d.ts" },
121
+ "./loading-invert": { "import": "./dist/loading-invert/index.mjs", "require": "./dist/loading-invert/index.js", "types": "./dist/loading-invert/index.d.ts" },
122
+ "./loader": { "import": "./dist/loader/index.mjs", "require": "./dist/loader/index.js", "types": "./dist/loader/index.d.ts" },
123
+ "./theme-toggler": { "import": "./dist/theme-toggler/index.mjs", "require": "./dist/theme-toggler/index.js", "types": "./dist/theme-toggler/index.d.ts" },
124
+ "./shimmer-effect": { "import": "./dist/shimmer-effect/index.mjs", "require": "./dist/shimmer-effect/index.js", "types": "./dist/shimmer-effect/index.d.ts" },
125
+ "./scroll-velocity": { "import": "./dist/scroll-velocity/index.mjs", "require": "./dist/scroll-velocity/index.js", "types": "./dist/scroll-velocity/index.d.ts" },
126
+ "./text-cursor": { "import": "./dist/text-cursor/index.mjs", "require": "./dist/text-cursor/index.js", "types": "./dist/text-cursor/index.d.ts" },
127
+ "./social-button": { "import": "./dist/social-button/index.mjs", "require": "./dist/social-button/index.js", "types": "./dist/social-button/index.d.ts" },
128
+ "./v0-button": { "import": "./dist/v0-button/index.mjs", "require": "./dist/v0-button/index.js", "types": "./dist/v0-button/index.d.ts" },
129
+ "./contribution-graph": { "import": "./dist/contribution-graph/index.mjs", "require": "./dist/contribution-graph/index.js", "types": "./dist/contribution-graph/index.d.ts" },
130
+ "./elastic-slider": { "import": "./dist/elastic-slider/index.mjs", "require": "./dist/elastic-slider/index.js", "types": "./dist/elastic-slider/index.d.ts" },
114
131
  "./styles.css": "./dist/styles.css"
115
132
  },
116
133
  "files": ["dist", "README.md"],