bynana-ui 1.0.0 → 1.1.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 (113) hide show
  1. package/dist/avatar/index.js +2 -0
  2. package/dist/avatar/index.js.map +1 -0
  3. package/dist/avatar/index.mjs +2 -0
  4. package/dist/avatar/index.mjs.map +1 -0
  5. package/dist/badge/index.js +2 -0
  6. package/dist/badge/index.js.map +1 -0
  7. package/dist/badge/index.mjs +2 -0
  8. package/dist/badge/index.mjs.map +1 -0
  9. package/dist/count-up/index.js +2 -0
  10. package/dist/count-up/index.js.map +1 -0
  11. package/dist/count-up/index.mjs +2 -0
  12. package/dist/count-up/index.mjs.map +1 -0
  13. package/dist/dynamic-text/index.js +2 -0
  14. package/dist/dynamic-text/index.js.map +1 -0
  15. package/dist/dynamic-text/index.mjs +2 -0
  16. package/dist/dynamic-text/index.mjs.map +1 -0
  17. package/dist/fuzzy-text/index.js +2 -0
  18. package/dist/fuzzy-text/index.js.map +1 -0
  19. package/dist/fuzzy-text/index.mjs +2 -0
  20. package/dist/fuzzy-text/index.mjs.map +1 -0
  21. package/dist/gradient-button/index.js +2 -0
  22. package/dist/gradient-button/index.js.map +1 -0
  23. package/dist/gradient-button/index.mjs +2 -0
  24. package/dist/gradient-button/index.mjs.map +1 -0
  25. package/dist/hold-button/index.js +2 -0
  26. package/dist/hold-button/index.js.map +1 -0
  27. package/dist/hold-button/index.mjs +2 -0
  28. package/dist/hold-button/index.mjs.map +1 -0
  29. package/dist/index.js +11 -1
  30. package/dist/index.js.map +1 -1
  31. package/dist/index.mjs +11 -1
  32. package/dist/index.mjs.map +1 -1
  33. package/dist/liquid-button/index.js +2 -0
  34. package/dist/liquid-button/index.js.map +1 -0
  35. package/dist/liquid-button/index.mjs +2 -0
  36. package/dist/liquid-button/index.mjs.map +1 -0
  37. package/dist/liquid-text/index.js +2 -0
  38. package/dist/liquid-text/index.js.map +1 -0
  39. package/dist/liquid-text/index.mjs +2 -0
  40. package/dist/liquid-text/index.mjs.map +1 -0
  41. package/dist/loading-bar/index.js +2 -0
  42. package/dist/loading-bar/index.js.map +1 -0
  43. package/dist/loading-bar/index.mjs +2 -0
  44. package/dist/loading-bar/index.mjs.map +1 -0
  45. package/dist/loading-bounce/index.js +2 -0
  46. package/dist/loading-bounce/index.js.map +1 -0
  47. package/dist/loading-bounce/index.mjs +2 -0
  48. package/dist/loading-bounce/index.mjs.map +1 -0
  49. package/dist/loading-pulse/index.js +2 -0
  50. package/dist/loading-pulse/index.js.map +1 -0
  51. package/dist/loading-pulse/index.mjs +2 -0
  52. package/dist/loading-pulse/index.mjs.map +1 -0
  53. package/dist/magnetic-text/index.js +2 -0
  54. package/dist/magnetic-text/index.js.map +1 -0
  55. package/dist/magnetic-text/index.mjs +2 -0
  56. package/dist/magnetic-text/index.mjs.map +1 -0
  57. package/dist/matrix-text/index.js +2 -0
  58. package/dist/matrix-text/index.js.map +1 -0
  59. package/dist/matrix-text/index.mjs +2 -0
  60. package/dist/matrix-text/index.mjs.map +1 -0
  61. package/dist/neon-button/index.js +2 -0
  62. package/dist/neon-button/index.js.map +1 -0
  63. package/dist/neon-button/index.mjs +2 -0
  64. package/dist/neon-button/index.mjs.map +1 -0
  65. package/dist/progress/index.js +2 -0
  66. package/dist/progress/index.js.map +1 -0
  67. package/dist/progress/index.mjs +2 -0
  68. package/dist/progress/index.mjs.map +1 -0
  69. package/dist/rainbow-text/index.js +7 -0
  70. package/dist/rainbow-text/index.js.map +1 -0
  71. package/dist/rainbow-text/index.mjs +7 -0
  72. package/dist/rainbow-text/index.mjs.map +1 -0
  73. package/dist/rotating-text/index.js +2 -0
  74. package/dist/rotating-text/index.js.map +1 -0
  75. package/dist/rotating-text/index.mjs +2 -0
  76. package/dist/rotating-text/index.mjs.map +1 -0
  77. package/dist/scrambled-text/index.js +2 -0
  78. package/dist/scrambled-text/index.js.map +1 -0
  79. package/dist/scrambled-text/index.mjs +2 -0
  80. package/dist/scrambled-text/index.mjs.map +1 -0
  81. package/dist/shiny-text/index.js +7 -0
  82. package/dist/shiny-text/index.js.map +1 -0
  83. package/dist/shiny-text/index.mjs +7 -0
  84. package/dist/shiny-text/index.mjs.map +1 -0
  85. package/dist/skeleton/index.js +2 -0
  86. package/dist/skeleton/index.js.map +1 -0
  87. package/dist/skeleton/index.mjs +2 -0
  88. package/dist/skeleton/index.mjs.map +1 -0
  89. package/dist/slide-button/index.js +2 -0
  90. package/dist/slide-button/index.js.map +1 -0
  91. package/dist/slide-button/index.mjs +2 -0
  92. package/dist/slide-button/index.mjs.map +1 -0
  93. package/dist/stagger-text/index.js +2 -0
  94. package/dist/stagger-text/index.js.map +1 -0
  95. package/dist/stagger-text/index.mjs +2 -0
  96. package/dist/stagger-text/index.mjs.map +1 -0
  97. package/dist/switch/index.js +2 -0
  98. package/dist/switch/index.js.map +1 -0
  99. package/dist/switch/index.mjs +2 -0
  100. package/dist/switch/index.mjs.map +1 -0
  101. package/dist/swoosh-text/index.js +2 -0
  102. package/dist/swoosh-text/index.js.map +1 -0
  103. package/dist/swoosh-text/index.mjs +2 -0
  104. package/dist/swoosh-text/index.mjs.map +1 -0
  105. package/dist/threed-button/index.js +2 -0
  106. package/dist/threed-button/index.js.map +1 -0
  107. package/dist/threed-button/index.mjs +2 -0
  108. package/dist/threed-button/index.mjs.map +1 -0
  109. package/dist/tooltip/index.js +2 -0
  110. package/dist/tooltip/index.js.map +1 -0
  111. package/dist/tooltip/index.mjs +2 -0
  112. package/dist/tooltip/index.mjs.map +1 -0
  113. package/package.json +137 -2
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/loading-bar/index.tsx"],"names":["cn","inputs","twMerge","clsx","LoadingBar","className","color","jsx","motion","loading_bar_default"],"mappings":"oIAGO,SAASA,CAAAA,CAAAA,GAAMC,EAAsB,CAC1C,OAAOC,QAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCKO,SAASG,EAAW,CAAE,SAAA,CAAAC,CAAAA,CAAW,KAAA,CAAAC,EAAQ,aAAc,CAAA,CAAoB,CAChF,OACEC,GAAAA,CAAC,OAAI,SAAA,CAAWP,CAAAA,CAAG,sEAAA,CAAwEK,CAAS,EAClG,QAAA,CAAAE,GAAAA,CAACC,MAAAA,CAAO,GAAA,CAAP,CACC,SAAA,CAAWR,CAAAA,CAAG,qBAAA,CAAuBM,CAAK,EAC1C,OAAA,CAAS,CAAE,EAAG,OAAQ,CAAA,CACtB,QAAS,CAAE,CAAA,CAAG,MAAO,CAAA,CACrB,WAAY,CACV,MAAA,CAAQ,IACR,QAAA,CAAU,GAAA,CACV,KAAM,WACR,CAAA,CACA,KAAA,CAAO,CAAE,MAAO,KAAM,CAAA,CACxB,EACF,CAEJ,KAEOG,CAAAA,CAAQL","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingBarProps {\r\n className?: string;\r\n color?: string;\r\n}\r\n\r\nexport function LoadingBar({ className, color = \"bg-blue-500\" }: LoadingBarProps) {\r\n return (\r\n <div className={cn(\"h-1 w-full overflow-hidden rounded-full bg-zinc-200 dark:bg-zinc-800\", className)}>\r\n <motion.div\r\n className={cn(\"h-full rounded-full\", color)}\r\n initial={{ x: \"-100%\" }}\r\n animate={{ x: \"100%\" }}\r\n transition={{\r\n repeat: Infinity,\r\n duration: 1.5,\r\n ease: \"easeInOut\",\r\n }}\r\n style={{ width: \"50%\" }}\r\n />\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingBar;\r\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var framerMotion=require('framer-motion'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function o(...e){return tailwindMerge.twMerge(clsx.clsx(e))}function l({className:e,color:r="bg-zinc-900 dark:bg-white"}){return jsxRuntime.jsx("div",{className:o("flex gap-1",e),children:[0,1,2].map(n=>jsxRuntime.jsx(framerMotion.motion.div,{className:o("w-3 h-3 rounded-full",r),animate:{y:[0,-10,0]},transition:{duration:.6,repeat:1/0,delay:n*.1,ease:"easeInOut"}},n))})}var f=l;exports.LoadingBounce=l;exports.default=f;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/loading-bounce/index.tsx"],"names":["cn","inputs","twMerge","clsx","LoadingBounce","className","color","jsx","i","motion","loading_bounce_default"],"mappings":"qNAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,UAAKF,CAAM,CAAC,CAC7B,CCKO,SAASG,CAAAA,CAAc,CAAE,UAAAC,CAAAA,CAAW,KAAA,CAAAC,EAAQ,2BAA4B,CAAA,CAAuB,CACpG,OACEC,cAAAA,CAAC,OAAI,SAAA,CAAWP,CAAAA,CAAG,aAAcK,CAAS,CAAA,CACvC,QAAA,CAAA,CAAC,CAAA,CAAG,EAAG,CAAC,CAAA,CAAE,IAAKG,CAAAA,EACdD,cAAAA,CAACE,oBAAO,GAAA,CAAP,CAEC,SAAA,CAAWT,CAAAA,CAAG,uBAAwBM,CAAK,CAAA,CAC3C,QAAS,CAAE,CAAA,CAAG,CAAC,CAAA,CAAG,GAAA,CAAK,CAAC,CAAE,EAC1B,UAAA,CAAY,CACV,SAAU,EAAA,CACV,MAAA,CAAQ,IACR,KAAA,CAAOE,CAAAA,CAAI,GACX,IAAA,CAAM,WACR,GARKA,CASP,CACD,EACH,CAEJ,KAEOE,CAAAA,CAAQN","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingBounceProps {\r\n className?: string;\r\n color?: string;\r\n}\r\n\r\nexport function LoadingBounce({ className, color = \"bg-zinc-900 dark:bg-white\" }: LoadingBounceProps) {\r\n return (\r\n <div className={cn(\"flex gap-1\", className)}>\r\n {[0, 1, 2].map((i) => (\r\n <motion.div\r\n key={i}\r\n className={cn(\"w-3 h-3 rounded-full\", color)}\r\n animate={{ y: [0, -10, 0] }}\r\n transition={{\r\n duration: 0.6,\r\n repeat: Infinity,\r\n delay: i * 0.1,\r\n ease: \"easeInOut\",\r\n }}\r\n />\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingBounce;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {motion}from'framer-motion';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx}from'react/jsx-runtime';function o(...e){return twMerge(clsx(e))}function l({className:e,color:r="bg-zinc-900 dark:bg-white"}){return jsx("div",{className:o("flex gap-1",e),children:[0,1,2].map(n=>jsx(motion.div,{className:o("w-3 h-3 rounded-full",r),animate:{y:[0,-10,0]},transition:{duration:.6,repeat:1/0,delay:n*.1,ease:"easeInOut"}},n))})}var f=l;export{l as LoadingBounce,f as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/loading-bounce/index.tsx"],"names":["cn","inputs","twMerge","clsx","LoadingBounce","className","color","jsx","i","motion","loading_bounce_default"],"mappings":"oIAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,KAAKF,CAAM,CAAC,CAC7B,CCKO,SAASG,CAAAA,CAAc,CAAE,UAAAC,CAAAA,CAAW,KAAA,CAAAC,EAAQ,2BAA4B,CAAA,CAAuB,CACpG,OACEC,GAAAA,CAAC,OAAI,SAAA,CAAWP,CAAAA,CAAG,aAAcK,CAAS,CAAA,CACvC,QAAA,CAAA,CAAC,CAAA,CAAG,EAAG,CAAC,CAAA,CAAE,IAAKG,CAAAA,EACdD,GAAAA,CAACE,OAAO,GAAA,CAAP,CAEC,SAAA,CAAWT,CAAAA,CAAG,uBAAwBM,CAAK,CAAA,CAC3C,QAAS,CAAE,CAAA,CAAG,CAAC,CAAA,CAAG,GAAA,CAAK,CAAC,CAAE,EAC1B,UAAA,CAAY,CACV,SAAU,EAAA,CACV,MAAA,CAAQ,IACR,KAAA,CAAOE,CAAAA,CAAI,GACX,IAAA,CAAM,WACR,GARKA,CASP,CACD,EACH,CAEJ,KAEOE,CAAAA,CAAQN","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingBounceProps {\r\n className?: string;\r\n color?: string;\r\n}\r\n\r\nexport function LoadingBounce({ className, color = \"bg-zinc-900 dark:bg-white\" }: LoadingBounceProps) {\r\n return (\r\n <div className={cn(\"flex gap-1\", className)}>\r\n {[0, 1, 2].map((i) => (\r\n <motion.div\r\n key={i}\r\n className={cn(\"w-3 h-3 rounded-full\", color)}\r\n animate={{ y: [0, -10, 0] }}\r\n transition={{\r\n duration: 0.6,\r\n repeat: Infinity,\r\n delay: i * 0.1,\r\n ease: \"easeInOut\",\r\n }}\r\n />\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingBounce;\r\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var framerMotion=require('framer-motion'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function e(...s){return tailwindMerge.twMerge(clsx.clsx(s))}var r={sm:"w-8 h-8",md:"w-12 h-12",lg:"w-16 h-16"};function u({className:s,size:a="md",color:t="bg-blue-500"}){return jsxRuntime.jsxs("div",{className:e("relative",r[a],s),children:[jsxRuntime.jsx(framerMotion.motion.div,{className:e("absolute inset-0 rounded-full",t),animate:{scale:[1,1.5,1],opacity:[.5,0,.5]},transition:{duration:1.5,repeat:1/0,ease:"easeInOut"}}),jsxRuntime.jsx("div",{className:e("absolute inset-2 rounded-full",t)})]})}var v=u;exports.LoadingPulse=u;exports.default=v;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/loading-pulse/index.tsx"],"names":["cn","inputs","twMerge","clsx","sizes","LoadingPulse","className","size","color","jsxs","jsx","motion","loading_pulse_default"],"mappings":"qNAGO,SAASA,KAAMC,CAAAA,CAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCMA,IAAMG,CAAAA,CAAQ,CACZ,EAAA,CAAI,SAAA,CACJ,GAAI,WAAA,CACJ,EAAA,CAAI,WACN,CAAA,CAEO,SAASC,CAAAA,CAAa,CAAE,SAAA,CAAAC,CAAAA,CAAW,IAAA,CAAAC,CAAAA,CAAO,IAAA,CAAM,KAAA,CAAAC,EAAQ,aAAc,CAAA,CAAsB,CACjG,OACEC,eAAAA,CAAC,KAAA,CAAA,CAAI,UAAWT,CAAAA,CAAG,UAAA,CAAYI,CAAAA,CAAMG,CAAI,CAAA,CAAGD,CAAS,EACnD,QAAA,CAAA,CAAAI,cAAAA,CAACC,mBAAAA,CAAO,GAAA,CAAP,CACC,SAAA,CAAWX,EAAG,+BAAA,CAAiCQ,CAAK,CAAA,CACpD,OAAA,CAAS,CACP,KAAA,CAAO,CAAC,CAAA,CAAG,GAAA,CAAK,CAAC,CAAA,CACjB,OAAA,CAAS,CAAC,GAAK,CAAA,CAAG,EAAG,CACvB,CAAA,CACA,UAAA,CAAY,CACV,SAAU,GAAA,CACV,MAAA,CAAQ,CAAA,CAAA,CAAA,CACR,IAAA,CAAM,WACR,CAAA,CACF,EACAE,cAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAWV,CAAAA,CAAG,+BAAA,CAAiCQ,CAAK,EAAG,CAAA,CAAA,CAC9D,CAEJ,CAEA,IAAOI,CAAAA,CAAQP","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingPulseProps {\r\n className?: string;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n color?: string;\r\n}\r\n\r\nconst sizes = {\r\n sm: \"w-8 h-8\",\r\n md: \"w-12 h-12\",\r\n lg: \"w-16 h-16\",\r\n};\r\n\r\nexport function LoadingPulse({ className, size = \"md\", color = \"bg-blue-500\" }: LoadingPulseProps) {\r\n return (\r\n <div className={cn(\"relative\", sizes[size], className)}>\r\n <motion.div\r\n className={cn(\"absolute inset-0 rounded-full\", color)}\r\n animate={{\r\n scale: [1, 1.5, 1],\r\n opacity: [0.5, 0, 0.5],\r\n }}\r\n transition={{\r\n duration: 1.5,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n }}\r\n />\r\n <div className={cn(\"absolute inset-2 rounded-full\", color)} />\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingPulse;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {motion}from'framer-motion';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsxs,jsx}from'react/jsx-runtime';function e(...s){return twMerge(clsx(s))}var r={sm:"w-8 h-8",md:"w-12 h-12",lg:"w-16 h-16"};function u({className:s,size:a="md",color:t="bg-blue-500"}){return jsxs("div",{className:e("relative",r[a],s),children:[jsx(motion.div,{className:e("absolute inset-0 rounded-full",t),animate:{scale:[1,1.5,1],opacity:[.5,0,.5]},transition:{duration:1.5,repeat:1/0,ease:"easeInOut"}}),jsx("div",{className:e("absolute inset-2 rounded-full",t)})]})}var v=u;export{u as LoadingPulse,v as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/loading-pulse/index.tsx"],"names":["cn","inputs","twMerge","clsx","sizes","LoadingPulse","className","size","color","jsxs","jsx","motion","loading_pulse_default"],"mappings":"yIAGO,SAASA,KAAMC,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCMA,IAAMG,CAAAA,CAAQ,CACZ,EAAA,CAAI,SAAA,CACJ,GAAI,WAAA,CACJ,EAAA,CAAI,WACN,CAAA,CAEO,SAASC,CAAAA,CAAa,CAAE,SAAA,CAAAC,CAAAA,CAAW,IAAA,CAAAC,CAAAA,CAAO,IAAA,CAAM,KAAA,CAAAC,EAAQ,aAAc,CAAA,CAAsB,CACjG,OACEC,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAWT,CAAAA,CAAG,UAAA,CAAYI,CAAAA,CAAMG,CAAI,CAAA,CAAGD,CAAS,EACnD,QAAA,CAAA,CAAAI,GAAAA,CAACC,MAAAA,CAAO,GAAA,CAAP,CACC,SAAA,CAAWX,EAAG,+BAAA,CAAiCQ,CAAK,CAAA,CACpD,OAAA,CAAS,CACP,KAAA,CAAO,CAAC,CAAA,CAAG,GAAA,CAAK,CAAC,CAAA,CACjB,OAAA,CAAS,CAAC,GAAK,CAAA,CAAG,EAAG,CACvB,CAAA,CACA,UAAA,CAAY,CACV,SAAU,GAAA,CACV,MAAA,CAAQ,CAAA,CAAA,CAAA,CACR,IAAA,CAAM,WACR,CAAA,CACF,EACAE,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAWV,CAAAA,CAAG,+BAAA,CAAiCQ,CAAK,EAAG,CAAA,CAAA,CAC9D,CAEJ,CAEA,IAAOI,CAAAA,CAAQP","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingPulseProps {\r\n className?: string;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n color?: string;\r\n}\r\n\r\nconst sizes = {\r\n sm: \"w-8 h-8\",\r\n md: \"w-12 h-12\",\r\n lg: \"w-16 h-16\",\r\n};\r\n\r\nexport function LoadingPulse({ className, size = \"md\", color = \"bg-blue-500\" }: LoadingPulseProps) {\r\n return (\r\n <div className={cn(\"relative\", sizes[size], className)}>\r\n <motion.div\r\n className={cn(\"absolute inset-0 rounded-full\", color)}\r\n animate={{\r\n scale: [1, 1.5, 1],\r\n opacity: [0.5, 0, 0.5],\r\n }}\r\n transition={{\r\n duration: 1.5,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n }}\r\n />\r\n <div className={cn(\"absolute inset-2 rounded-full\", color)} />\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingPulse;\r\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),framerMotion=require('framer-motion'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function i(...e){return tailwindMerge.twMerge(clsx.clsx(e))}function L({children:e,className:s,strength:t=.5}){let n=react.useRef(null),[r,o]=react.useState({x:0,y:0}),c=u=>{let{clientX:p,clientY:f}=u,{height:d,width:M,left:g,top:x}=n.current.getBoundingClientRect(),v=p-(g+M/2),y=f-(x+d/2);o({x:v*t,y:y*t});},a=()=>{o({x:0,y:0});},{x:l,y:m}=r;return jsxRuntime.jsx(framerMotion.motion.div,{ref:n,onMouseMove:c,onMouseLeave:a,animate:{x:l,y:m},transition:{type:"spring",stiffness:150,damping:15,mass:.1},className:i("inline-block cursor-pointer",s),children:e})}var X=L;exports.MagneticText=L;exports.default=X;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/magnetic-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","MagneticText","children","className","strength","ref","useRef","position","setPosition","useState","handleMouse","e","clientX","clientY","height","width","left","top","middleX","middleY","reset","x","y","jsx","motion","magnetic_text_default"],"mappings":"4OAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCOO,SAASG,CAAAA,CAAa,CAAE,SAAAC,CAAAA,CAAU,SAAA,CAAAC,EAAW,QAAA,CAAAC,CAAAA,CAAW,EAAI,CAAA,CAAsB,CACvF,IAAMC,CAAAA,CAAMC,YAAAA,CAAuB,IAAI,EACjC,CAACC,CAAAA,CAAUC,CAAW,CAAA,CAAIC,eAAS,CAAE,CAAA,CAAG,EAAG,CAAA,CAAG,CAAE,CAAC,CAAA,CAEjDC,CAAAA,CAAeC,CAAAA,EAAwC,CAC3D,GAAM,CAAE,OAAA,CAAAC,CAAAA,CAAS,OAAA,CAAAC,CAAQ,CAAA,CAAIF,CAAAA,CACvB,CAAE,MAAA,CAAAG,EAAQ,KAAA,CAAAC,CAAAA,CAAO,KAAAC,CAAAA,CAAM,GAAA,CAAAC,CAAI,CAAA,CAAIZ,CAAAA,CAAI,OAAA,CAAS,qBAAA,GAC5Ca,CAAAA,CAAUN,CAAAA,EAAWI,CAAAA,CAAOD,CAAAA,CAAQ,GACpCI,CAAAA,CAAUN,CAAAA,EAAWI,CAAAA,CAAMH,CAAAA,CAAS,GAC1CN,CAAAA,CAAY,CAAE,EAAGU,CAAAA,CAAUd,CAAAA,CAAU,EAAGe,CAAAA,CAAUf,CAAS,CAAC,EAC9D,EAEMgB,CAAAA,CAAQ,IAAM,CAClBZ,CAAAA,CAAY,CAAE,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAE,CAAC,EAC5B,CAAA,CAEM,CAAE,CAAA,CAAAa,CAAAA,CAAG,EAAAC,CAAE,CAAA,CAAIf,CAAAA,CAEjB,OACEgB,eAACC,mBAAAA,CAAO,GAAA,CAAP,CACC,GAAA,CAAKnB,EACL,WAAA,CAAaK,CAAAA,CACb,YAAA,CAAcU,CAAAA,CACd,QAAS,CAAE,CAAA,CAAAC,EAAG,CAAA,CAAAC,CAAE,EAChB,UAAA,CAAY,CAAE,IAAA,CAAM,QAAA,CAAU,UAAW,GAAA,CAAK,OAAA,CAAS,EAAA,CAAI,IAAA,CAAM,EAAI,CAAA,CACrE,SAAA,CAAWzB,CAAAA,CAAG,6BAAA,CAA+BM,CAAS,CAAA,CAErD,QAAA,CAAAD,EACH,CAEJ,KAEOuB,CAAAA,CAAQxB","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { useRef, useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface MagneticTextProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n strength?: number;\r\n}\r\n\r\nexport function MagneticText({ children, className, strength = 0.5 }: MagneticTextProps) {\r\n const ref = useRef<HTMLDivElement>(null);\r\n const [position, setPosition] = useState({ x: 0, y: 0 });\r\n\r\n const handleMouse = (e: React.MouseEvent<HTMLDivElement>) => {\r\n const { clientX, clientY } = e;\r\n const { height, width, left, top } = ref.current!.getBoundingClientRect();\r\n const middleX = clientX - (left + width / 2);\r\n const middleY = clientY - (top + height / 2);\r\n setPosition({ x: middleX * strength, y: middleY * strength });\r\n };\r\n\r\n const reset = () => {\r\n setPosition({ x: 0, y: 0 });\r\n };\r\n\r\n const { x, y } = position;\r\n\r\n return (\r\n <motion.div\r\n ref={ref}\r\n onMouseMove={handleMouse}\r\n onMouseLeave={reset}\r\n animate={{ x, y }}\r\n transition={{ type: \"spring\", stiffness: 150, damping: 15, mass: 0.1 }}\r\n className={cn(\"inline-block cursor-pointer\", className)}\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default MagneticText;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {useRef,useState}from'react';import {motion}from'framer-motion';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx}from'react/jsx-runtime';function i(...e){return twMerge(clsx(e))}function L({children:e,className:s,strength:t=.5}){let n=useRef(null),[r,o]=useState({x:0,y:0}),c=u=>{let{clientX:p,clientY:f}=u,{height:d,width:M,left:g,top:x}=n.current.getBoundingClientRect(),v=p-(g+M/2),y=f-(x+d/2);o({x:v*t,y:y*t});},a=()=>{o({x:0,y:0});},{x:l,y:m}=r;return jsx(motion.div,{ref:n,onMouseMove:c,onMouseLeave:a,animate:{x:l,y:m},transition:{type:"spring",stiffness:150,damping:15,mass:.1},className:i("inline-block cursor-pointer",s),children:e})}var X=L;export{L as MagneticText,X as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/magnetic-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","MagneticText","children","className","strength","ref","useRef","position","setPosition","useState","handleMouse","e","clientX","clientY","height","width","left","top","middleX","middleY","reset","x","y","jsx","motion","magnetic_text_default"],"mappings":"wKAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCOO,SAASG,CAAAA,CAAa,CAAE,SAAAC,CAAAA,CAAU,SAAA,CAAAC,EAAW,QAAA,CAAAC,CAAAA,CAAW,EAAI,CAAA,CAAsB,CACvF,IAAMC,CAAAA,CAAMC,MAAAA,CAAuB,IAAI,EACjC,CAACC,CAAAA,CAAUC,CAAW,CAAA,CAAIC,SAAS,CAAE,CAAA,CAAG,EAAG,CAAA,CAAG,CAAE,CAAC,CAAA,CAEjDC,CAAAA,CAAeC,CAAAA,EAAwC,CAC3D,GAAM,CAAE,OAAA,CAAAC,CAAAA,CAAS,OAAA,CAAAC,CAAQ,CAAA,CAAIF,CAAAA,CACvB,CAAE,MAAA,CAAAG,EAAQ,KAAA,CAAAC,CAAAA,CAAO,KAAAC,CAAAA,CAAM,GAAA,CAAAC,CAAI,CAAA,CAAIZ,CAAAA,CAAI,OAAA,CAAS,qBAAA,GAC5Ca,CAAAA,CAAUN,CAAAA,EAAWI,CAAAA,CAAOD,CAAAA,CAAQ,GACpCI,CAAAA,CAAUN,CAAAA,EAAWI,CAAAA,CAAMH,CAAAA,CAAS,GAC1CN,CAAAA,CAAY,CAAE,EAAGU,CAAAA,CAAUd,CAAAA,CAAU,EAAGe,CAAAA,CAAUf,CAAS,CAAC,EAC9D,EAEMgB,CAAAA,CAAQ,IAAM,CAClBZ,CAAAA,CAAY,CAAE,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAE,CAAC,EAC5B,CAAA,CAEM,CAAE,CAAA,CAAAa,CAAAA,CAAG,EAAAC,CAAE,CAAA,CAAIf,CAAAA,CAEjB,OACEgB,IAACC,MAAAA,CAAO,GAAA,CAAP,CACC,GAAA,CAAKnB,EACL,WAAA,CAAaK,CAAAA,CACb,YAAA,CAAcU,CAAAA,CACd,QAAS,CAAE,CAAA,CAAAC,EAAG,CAAA,CAAAC,CAAE,EAChB,UAAA,CAAY,CAAE,IAAA,CAAM,QAAA,CAAU,UAAW,GAAA,CAAK,OAAA,CAAS,EAAA,CAAI,IAAA,CAAM,EAAI,CAAA,CACrE,SAAA,CAAWzB,CAAAA,CAAG,6BAAA,CAA+BM,CAAS,CAAA,CAErD,QAAA,CAAAD,EACH,CAEJ,KAEOuB,CAAAA,CAAQxB","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { useRef, useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface MagneticTextProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n strength?: number;\r\n}\r\n\r\nexport function MagneticText({ children, className, strength = 0.5 }: MagneticTextProps) {\r\n const ref = useRef<HTMLDivElement>(null);\r\n const [position, setPosition] = useState({ x: 0, y: 0 });\r\n\r\n const handleMouse = (e: React.MouseEvent<HTMLDivElement>) => {\r\n const { clientX, clientY } = e;\r\n const { height, width, left, top } = ref.current!.getBoundingClientRect();\r\n const middleX = clientX - (left + width / 2);\r\n const middleY = clientY - (top + height / 2);\r\n setPosition({ x: middleX * strength, y: middleY * strength });\r\n };\r\n\r\n const reset = () => {\r\n setPosition({ x: 0, y: 0 });\r\n };\r\n\r\n const { x, y } = position;\r\n\r\n return (\r\n <motion.div\r\n ref={ref}\r\n onMouseMove={handleMouse}\r\n onMouseLeave={reset}\r\n animate={{ x, y }}\r\n transition={{ type: \"spring\", stiffness: 150, damping: 15, mass: 0.1 }}\r\n className={cn(\"inline-block cursor-pointer\", className)}\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default MagneticText;\r\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function s(...r){return tailwindMerge.twMerge(clsx.clsx(r))}function M({text:r,className:f,speed:o=50,color:m="#22c55e"}){let i=react.useRef(null),t=react.useRef(null);return react.useEffect(()=>{let a=i.current;if(!a)return;let l="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@#$%^&*",e=r,n=0,p=()=>{if(a.innerText=e.split("").map((h,c)=>c<n?e[c]:l[Math.floor(Math.random()*l.length)]).join(""),n>=e.length){t.current&&clearInterval(t.current);return}n+=1/3;};return t.current=setInterval(p,o),()=>{t.current&&clearInterval(t.current);}},[r,o]),jsxRuntime.jsx("div",{ref:i,className:s("font-mono",f),style:{color:m},children:r})}var C=M;exports.MatrixText=M;exports.default=C;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/matrix-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","MatrixText","text","className","speed","color","containerRef","useRef","intervalRef","useEffect","container","chars","originalText","iteration","animate","char","index","jsx","matrix_text_default"],"mappings":"sMAGO,SAASA,CAAAA,CAAAA,GAAMC,EAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCOO,SAASG,CAAAA,CAAW,CACzB,KAAAC,CAAAA,CACA,SAAA,CAAAC,EACA,KAAA,CAAAC,CAAAA,CAAQ,GACR,KAAA,CAAAC,CAAAA,CAAQ,SACV,CAAA,CAAoB,CAClB,IAAMC,CAAAA,CAAeC,YAAAA,CAAuB,IAAI,EAC1CC,CAAAA,CAAcD,YAAAA,CAA8B,IAAI,CAAA,CAEtD,OAAAE,eAAAA,CAAU,IAAM,CACd,IAAMC,EAAYJ,CAAAA,CAAa,OAAA,CAC/B,GAAI,CAACI,EAAW,OAEhB,IAAMC,CAAAA,CAAQ,uEAAA,CACRC,EAAeV,CAAAA,CACjBW,CAAAA,CAAY,CAAA,CAEVC,CAAAA,CAAU,IAAM,CASpB,GARAJ,EAAU,SAAA,CAAYE,CAAAA,CACnB,MAAM,EAAE,CAAA,CACR,GAAA,CAAI,CAACG,EAAMC,CAAAA,GACNA,CAAAA,CAAQH,CAAAA,CAAkBD,CAAAA,CAAaI,CAAK,CAAA,CACzCL,CAAAA,CAAM,IAAA,CAAK,KAAA,CAAM,KAAK,MAAA,EAAO,CAAIA,CAAAA,CAAM,MAAM,CAAC,CACtD,CAAA,CACA,IAAA,CAAK,EAAE,EAENE,CAAAA,EAAaD,CAAAA,CAAa,MAAA,CAAQ,CAChCJ,EAAY,OAAA,EAAS,aAAA,CAAcA,CAAAA,CAAY,OAAO,EAC1D,MACF,CAEAK,GAAa,CAAA,CAAI,EACnB,EAEA,OAAAL,CAAAA,CAAY,OAAA,CAAU,WAAA,CAAYM,EAASV,CAAK,CAAA,CAEzC,IAAM,CACPI,EAAY,OAAA,EAAS,aAAA,CAAcA,CAAAA,CAAY,OAAO,EAC5D,CACF,CAAA,CAAG,CAACN,CAAAA,CAAME,CAAK,CAAC,CAAA,CAGda,cAAAA,CAAC,KAAA,CAAA,CACC,IAAKX,CAAAA,CACL,SAAA,CAAWT,CAAAA,CAAG,WAAA,CAAaM,CAAS,CAAA,CACpC,KAAA,CAAO,CAAE,KAAA,CAAAE,CAAM,CAAA,CAEd,QAAA,CAAAH,EACH,CAEJ,KAEOgB,CAAAA,CAAQjB","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface MatrixTextProps {\r\n text: string;\r\n className?: string;\r\n speed?: number;\r\n color?: string;\r\n}\r\n\r\nexport function MatrixText({ \r\n text, \r\n className,\r\n speed = 50,\r\n color = \"#22c55e\"\r\n}: MatrixTextProps) {\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const intervalRef = useRef<NodeJS.Timeout | null>(null);\r\n\r\n useEffect(() => {\r\n const container = containerRef.current;\r\n if (!container) return;\r\n\r\n const chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@#$%^&*\";\r\n const originalText = text;\r\n let iteration = 0;\r\n\r\n const animate = () => {\r\n container.innerText = originalText\r\n .split(\"\")\r\n .map((char, index) => {\r\n if (index < iteration) return originalText[index];\r\n return chars[Math.floor(Math.random() * chars.length)];\r\n })\r\n .join(\"\");\r\n\r\n if (iteration >= originalText.length) {\r\n if (intervalRef.current) clearInterval(intervalRef.current);\r\n return;\r\n }\r\n\r\n iteration += 1 / 3;\r\n };\r\n\r\n intervalRef.current = setInterval(animate, speed);\r\n\r\n return () => {\r\n if (intervalRef.current) clearInterval(intervalRef.current);\r\n };\r\n }, [text, speed]);\r\n\r\n return (\r\n <div\r\n ref={containerRef}\r\n className={cn(\"font-mono\", className)}\r\n style={{ color }}\r\n >\r\n {text}\r\n </div>\r\n );\r\n}\r\n\r\nexport default MatrixText;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {useRef,useEffect}from'react';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx}from'react/jsx-runtime';function s(...r){return twMerge(clsx(r))}function M({text:r,className:f,speed:o=50,color:m="#22c55e"}){let i=useRef(null),t=useRef(null);return useEffect(()=>{let a=i.current;if(!a)return;let l="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@#$%^&*",e=r,n=0,p=()=>{if(a.innerText=e.split("").map((h,c)=>c<n?e[c]:l[Math.floor(Math.random()*l.length)]).join(""),n>=e.length){t.current&&clearInterval(t.current);return}n+=1/3;};return t.current=setInterval(p,o),()=>{t.current&&clearInterval(t.current);}},[r,o]),jsx("div",{ref:i,className:s("font-mono",f),style:{color:m},children:r})}var C=M;export{M as MatrixText,C as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/matrix-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","MatrixText","text","className","speed","color","containerRef","useRef","intervalRef","useEffect","container","chars","originalText","iteration","animate","char","index","jsx","matrix_text_default"],"mappings":"sIAGO,SAASA,CAAAA,CAAAA,GAAMC,EAAsB,CAC1C,OAAOC,OAAAA,CAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCOO,SAASG,CAAAA,CAAW,CACzB,KAAAC,CAAAA,CACA,SAAA,CAAAC,EACA,KAAA,CAAAC,CAAAA,CAAQ,GACR,KAAA,CAAAC,CAAAA,CAAQ,SACV,CAAA,CAAoB,CAClB,IAAMC,CAAAA,CAAeC,MAAAA,CAAuB,IAAI,EAC1CC,CAAAA,CAAcD,MAAAA,CAA8B,IAAI,CAAA,CAEtD,OAAAE,SAAAA,CAAU,IAAM,CACd,IAAMC,EAAYJ,CAAAA,CAAa,OAAA,CAC/B,GAAI,CAACI,EAAW,OAEhB,IAAMC,CAAAA,CAAQ,uEAAA,CACRC,EAAeV,CAAAA,CACjBW,CAAAA,CAAY,CAAA,CAEVC,CAAAA,CAAU,IAAM,CASpB,GARAJ,EAAU,SAAA,CAAYE,CAAAA,CACnB,MAAM,EAAE,CAAA,CACR,GAAA,CAAI,CAACG,EAAMC,CAAAA,GACNA,CAAAA,CAAQH,CAAAA,CAAkBD,CAAAA,CAAaI,CAAK,CAAA,CACzCL,CAAAA,CAAM,IAAA,CAAK,KAAA,CAAM,KAAK,MAAA,EAAO,CAAIA,CAAAA,CAAM,MAAM,CAAC,CACtD,CAAA,CACA,IAAA,CAAK,EAAE,EAENE,CAAAA,EAAaD,CAAAA,CAAa,MAAA,CAAQ,CAChCJ,EAAY,OAAA,EAAS,aAAA,CAAcA,CAAAA,CAAY,OAAO,EAC1D,MACF,CAEAK,GAAa,CAAA,CAAI,EACnB,EAEA,OAAAL,CAAAA,CAAY,OAAA,CAAU,WAAA,CAAYM,EAASV,CAAK,CAAA,CAEzC,IAAM,CACPI,EAAY,OAAA,EAAS,aAAA,CAAcA,CAAAA,CAAY,OAAO,EAC5D,CACF,CAAA,CAAG,CAACN,CAAAA,CAAME,CAAK,CAAC,CAAA,CAGda,GAAAA,CAAC,KAAA,CAAA,CACC,IAAKX,CAAAA,CACL,SAAA,CAAWT,CAAAA,CAAG,WAAA,CAAaM,CAAS,CAAA,CACpC,KAAA,CAAO,CAAE,KAAA,CAAAE,CAAM,CAAA,CAEd,QAAA,CAAAH,EACH,CAEJ,KAEOgB,CAAAA,CAAQjB","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface MatrixTextProps {\r\n text: string;\r\n className?: string;\r\n speed?: number;\r\n color?: string;\r\n}\r\n\r\nexport function MatrixText({ \r\n text, \r\n className,\r\n speed = 50,\r\n color = \"#22c55e\"\r\n}: MatrixTextProps) {\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const intervalRef = useRef<NodeJS.Timeout | null>(null);\r\n\r\n useEffect(() => {\r\n const container = containerRef.current;\r\n if (!container) return;\r\n\r\n const chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@#$%^&*\";\r\n const originalText = text;\r\n let iteration = 0;\r\n\r\n const animate = () => {\r\n container.innerText = originalText\r\n .split(\"\")\r\n .map((char, index) => {\r\n if (index < iteration) return originalText[index];\r\n return chars[Math.floor(Math.random() * chars.length)];\r\n })\r\n .join(\"\");\r\n\r\n if (iteration >= originalText.length) {\r\n if (intervalRef.current) clearInterval(intervalRef.current);\r\n return;\r\n }\r\n\r\n iteration += 1 / 3;\r\n };\r\n\r\n intervalRef.current = setInterval(animate, speed);\r\n\r\n return () => {\r\n if (intervalRef.current) clearInterval(intervalRef.current);\r\n };\r\n }, [text, speed]);\r\n\r\n return (\r\n <div\r\n ref={containerRef}\r\n className={cn(\"font-mono\", className)}\r\n style={{ color }}\r\n >\r\n {text}\r\n </div>\r\n );\r\n}\r\n\r\nexport default MatrixText;\r\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var framerMotion=require('framer-motion'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function t(...o){return tailwindMerge.twMerge(clsx.clsx(o))}var d={pink:{border:"border-pink-500",text:"text-pink-400",shadow:"shadow-pink-500/50",glow:"rgba(236, 72, 153, 0.6)",bg:"hover:bg-pink-500/10"},cyan:{border:"border-cyan-500",text:"text-cyan-400",shadow:"shadow-cyan-500/50",glow:"rgba(6, 182, 212, 0.6)",bg:"hover:bg-cyan-500/10"},green:{border:"border-green-500",text:"text-green-400",shadow:"shadow-green-500/50",glow:"rgba(34, 197, 94, 0.6)",bg:"hover:bg-green-500/10"},purple:{border:"border-purple-500",text:"text-purple-400",shadow:"shadow-purple-500/50",glow:"rgba(168, 85, 247, 0.6)",bg:"hover:bg-purple-500/10"},orange:{border:"border-orange-500",text:"text-orange-400",shadow:"shadow-orange-500/50",glow:"rgba(249, 115, 22, 0.6)",bg:"hover:bg-orange-500/10"}},b={sm:"h-8 px-3 text-xs",default:"h-10 px-6 text-sm",lg:"h-12 px-8 text-base"};function u({children:o,className:a,color:s="cyan",size:i="default",...l}){let e=d[s];return jsxRuntime.jsxs(framerMotion.motion.button,{className:t("relative inline-flex items-center justify-center","font-semibold tracking-wide uppercase","border-2 rounded-lg","bg-transparent","transition-colors duration-200",e.border,e.text,e.bg,b[i],a),whileHover:{boxShadow:`0 0 20px ${e.glow}, 0 0 40px ${e.glow}, 0 0 60px ${e.glow}`},whileTap:{scale:.98},transition:{duration:.2},...l,children:[jsxRuntime.jsx(framerMotion.motion.span,{className:t("absolute inset-0 rounded-lg opacity-0",e.border),animate:{opacity:[.5,1,.5]},transition:{duration:2,repeat:1/0,ease:"easeInOut"},style:{boxShadow:`inset 0 0 10px ${e.glow}`}}),jsxRuntime.jsx("span",{className:"relative z-10",children:o})]})}var y=u;exports.NeonButton=u;exports.default=y;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/neon-button/index.tsx"],"names":["cn","inputs","twMerge","clsx","colorVariants","sizeVariants","NeonButton","children","className","color","size","props","colors","jsxs","motion","jsx","neon_button_default"],"mappings":"qNAGO,SAASA,KAAMC,CAAAA,CAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCKA,IAAMG,CAAAA,CAAgB,CACpB,IAAA,CAAM,CACJ,OAAQ,iBAAA,CACR,IAAA,CAAM,eAAA,CACN,MAAA,CAAQ,oBAAA,CACR,IAAA,CAAM,0BACN,EAAA,CAAI,sBACN,CAAA,CACA,IAAA,CAAM,CACJ,MAAA,CAAQ,iBAAA,CACR,IAAA,CAAM,eAAA,CACN,MAAA,CAAQ,oBAAA,CACR,IAAA,CAAM,wBAAA,CACN,EAAA,CAAI,sBACN,CAAA,CACA,KAAA,CAAO,CACL,MAAA,CAAQ,kBAAA,CACR,IAAA,CAAM,iBACN,MAAA,CAAQ,qBAAA,CACR,IAAA,CAAM,wBAAA,CACN,EAAA,CAAI,uBACN,EACA,MAAA,CAAQ,CACN,MAAA,CAAQ,mBAAA,CACR,IAAA,CAAM,iBAAA,CACN,OAAQ,sBAAA,CACR,IAAA,CAAM,yBAAA,CACN,EAAA,CAAI,wBACN,CAAA,CACA,OAAQ,CACN,MAAA,CAAQ,mBAAA,CACR,IAAA,CAAM,iBAAA,CACN,MAAA,CAAQ,uBACR,IAAA,CAAM,yBAAA,CACN,EAAA,CAAI,wBACN,CACF,CAAA,CAEMC,EAAe,CACnB,EAAA,CAAI,kBAAA,CACJ,OAAA,CAAS,mBAAA,CACT,EAAA,CAAI,qBACN,CAAA,CAEO,SAASC,CAAAA,CAAW,CACzB,QAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,EACA,KAAA,CAAAC,CAAAA,CAAQ,MAAA,CACR,IAAA,CAAAC,CAAAA,CAAO,SAAA,CACP,GAAGC,CACL,CAAA,CAAoB,CAClB,IAAMC,CAAAA,CAASR,CAAAA,CAAcK,CAAK,CAAA,CAElC,OACEI,eAAAA,CAACC,mBAAAA,CAAO,MAAA,CAAP,CACC,UAAWd,CAAAA,CACT,kDAAA,CACA,uCAAA,CACA,qBAAA,CACA,gBAAA,CACA,gCAAA,CACAY,EAAO,MAAA,CACPA,CAAAA,CAAO,IAAA,CACPA,CAAAA,CAAO,EAAA,CACPP,CAAAA,CAAaK,CAAI,CAAA,CACjBF,CACF,CAAA,CACA,UAAA,CAAY,CACV,SAAA,CAAW,YAAYI,CAAAA,CAAO,IAAI,CAAA,WAAA,EAAcA,CAAAA,CAAO,IAAI,CAAA,WAAA,EAAcA,CAAAA,CAAO,IAAI,CAAA,CACtF,CAAA,CACA,QAAA,CAAU,CAAE,KAAA,CAAO,GAAK,EACxB,UAAA,CAAY,CAAE,QAAA,CAAU,EAAI,CAAA,CAC3B,GAAGD,EAEJ,QAAA,CAAA,CAAAI,cAAAA,CAACD,mBAAAA,CAAO,IAAA,CAAP,CACC,SAAA,CAAWd,EAAG,uCAAA,CAAyCY,CAAAA,CAAO,MAAM,CAAA,CACpE,OAAA,CAAS,CAAE,OAAA,CAAS,CAAC,EAAA,CAAK,CAAA,CAAG,EAAG,CAAE,CAAA,CAClC,UAAA,CAAY,CAAE,QAAA,CAAU,CAAA,CAAG,MAAA,CAAQ,CAAA,CAAA,CAAA,CAAU,IAAA,CAAM,WAAY,EAC/D,KAAA,CAAO,CAAE,SAAA,CAAW,CAAA,eAAA,EAAkBA,CAAAA,CAAO,IAAI,EAAG,CAAA,CACtD,CAAA,CACAG,cAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,eAAA,CAAiB,QAAA,CAAAR,CAAAA,CAAS,CAAA,CAAA,CAC5C,CAEJ,CAEA,IAAOS,CAAAA,CAAQV","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface NeonButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n color?: \"pink\" | \"cyan\" | \"green\" | \"purple\" | \"orange\";\r\n size?: \"sm\" | \"default\" | \"lg\";\r\n}\r\n\r\nconst colorVariants = {\r\n pink: {\r\n border: \"border-pink-500\",\r\n text: \"text-pink-400\",\r\n shadow: \"shadow-pink-500/50\",\r\n glow: \"rgba(236, 72, 153, 0.6)\",\r\n bg: \"hover:bg-pink-500/10\",\r\n },\r\n cyan: {\r\n border: \"border-cyan-500\",\r\n text: \"text-cyan-400\",\r\n shadow: \"shadow-cyan-500/50\",\r\n glow: \"rgba(6, 182, 212, 0.6)\",\r\n bg: \"hover:bg-cyan-500/10\",\r\n },\r\n green: {\r\n border: \"border-green-500\",\r\n text: \"text-green-400\",\r\n shadow: \"shadow-green-500/50\",\r\n glow: \"rgba(34, 197, 94, 0.6)\",\r\n bg: \"hover:bg-green-500/10\",\r\n },\r\n purple: {\r\n border: \"border-purple-500\",\r\n text: \"text-purple-400\",\r\n shadow: \"shadow-purple-500/50\",\r\n glow: \"rgba(168, 85, 247, 0.6)\",\r\n bg: \"hover:bg-purple-500/10\",\r\n },\r\n orange: {\r\n border: \"border-orange-500\",\r\n text: \"text-orange-400\",\r\n shadow: \"shadow-orange-500/50\",\r\n glow: \"rgba(249, 115, 22, 0.6)\",\r\n bg: \"hover:bg-orange-500/10\",\r\n },\r\n};\r\n\r\nconst sizeVariants = {\r\n sm: \"h-8 px-3 text-xs\",\r\n default: \"h-10 px-6 text-sm\",\r\n lg: \"h-12 px-8 text-base\",\r\n};\r\n\r\nexport function NeonButton({\r\n children,\r\n className,\r\n color = \"cyan\",\r\n size = \"default\",\r\n ...props\r\n}: NeonButtonProps) {\r\n const colors = colorVariants[color];\r\n\r\n return (\r\n <motion.button\r\n className={cn(\r\n \"relative inline-flex items-center justify-center\",\r\n \"font-semibold tracking-wide uppercase\",\r\n \"border-2 rounded-lg\",\r\n \"bg-transparent\",\r\n \"transition-colors duration-200\",\r\n colors.border,\r\n colors.text,\r\n colors.bg,\r\n sizeVariants[size],\r\n className\r\n )}\r\n whileHover={{\r\n boxShadow: `0 0 20px ${colors.glow}, 0 0 40px ${colors.glow}, 0 0 60px ${colors.glow}`,\r\n }}\r\n whileTap={{ scale: 0.98 }}\r\n transition={{ duration: 0.2 }}\r\n {...props}\r\n >\r\n <motion.span\r\n className={cn(\"absolute inset-0 rounded-lg opacity-0\", colors.border)}\r\n animate={{ opacity: [0.5, 1, 0.5] }}\r\n transition={{ duration: 2, repeat: Infinity, ease: \"easeInOut\" }}\r\n style={{ boxShadow: `inset 0 0 10px ${colors.glow}` }}\r\n />\r\n <span className=\"relative z-10\">{children}</span>\r\n </motion.button>\r\n );\r\n}\r\n\r\nexport default NeonButton;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {motion}from'framer-motion';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsxs,jsx}from'react/jsx-runtime';function t(...o){return twMerge(clsx(o))}var d={pink:{border:"border-pink-500",text:"text-pink-400",shadow:"shadow-pink-500/50",glow:"rgba(236, 72, 153, 0.6)",bg:"hover:bg-pink-500/10"},cyan:{border:"border-cyan-500",text:"text-cyan-400",shadow:"shadow-cyan-500/50",glow:"rgba(6, 182, 212, 0.6)",bg:"hover:bg-cyan-500/10"},green:{border:"border-green-500",text:"text-green-400",shadow:"shadow-green-500/50",glow:"rgba(34, 197, 94, 0.6)",bg:"hover:bg-green-500/10"},purple:{border:"border-purple-500",text:"text-purple-400",shadow:"shadow-purple-500/50",glow:"rgba(168, 85, 247, 0.6)",bg:"hover:bg-purple-500/10"},orange:{border:"border-orange-500",text:"text-orange-400",shadow:"shadow-orange-500/50",glow:"rgba(249, 115, 22, 0.6)",bg:"hover:bg-orange-500/10"}},b={sm:"h-8 px-3 text-xs",default:"h-10 px-6 text-sm",lg:"h-12 px-8 text-base"};function u({children:o,className:a,color:s="cyan",size:i="default",...l}){let e=d[s];return jsxs(motion.button,{className:t("relative inline-flex items-center justify-center","font-semibold tracking-wide uppercase","border-2 rounded-lg","bg-transparent","transition-colors duration-200",e.border,e.text,e.bg,b[i],a),whileHover:{boxShadow:`0 0 20px ${e.glow}, 0 0 40px ${e.glow}, 0 0 60px ${e.glow}`},whileTap:{scale:.98},transition:{duration:.2},...l,children:[jsx(motion.span,{className:t("absolute inset-0 rounded-lg opacity-0",e.border),animate:{opacity:[.5,1,.5]},transition:{duration:2,repeat:1/0,ease:"easeInOut"},style:{boxShadow:`inset 0 0 10px ${e.glow}`}}),jsx("span",{className:"relative z-10",children:o})]})}var y=u;export{u as NeonButton,y as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/neon-button/index.tsx"],"names":["cn","inputs","twMerge","clsx","colorVariants","sizeVariants","NeonButton","children","className","color","size","props","colors","jsxs","motion","jsx","neon_button_default"],"mappings":"yIAGO,SAASA,KAAMC,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCKA,IAAMG,CAAAA,CAAgB,CACpB,IAAA,CAAM,CACJ,OAAQ,iBAAA,CACR,IAAA,CAAM,eAAA,CACN,MAAA,CAAQ,oBAAA,CACR,IAAA,CAAM,0BACN,EAAA,CAAI,sBACN,CAAA,CACA,IAAA,CAAM,CACJ,MAAA,CAAQ,iBAAA,CACR,IAAA,CAAM,eAAA,CACN,MAAA,CAAQ,oBAAA,CACR,IAAA,CAAM,wBAAA,CACN,EAAA,CAAI,sBACN,CAAA,CACA,KAAA,CAAO,CACL,MAAA,CAAQ,kBAAA,CACR,IAAA,CAAM,iBACN,MAAA,CAAQ,qBAAA,CACR,IAAA,CAAM,wBAAA,CACN,EAAA,CAAI,uBACN,EACA,MAAA,CAAQ,CACN,MAAA,CAAQ,mBAAA,CACR,IAAA,CAAM,iBAAA,CACN,OAAQ,sBAAA,CACR,IAAA,CAAM,yBAAA,CACN,EAAA,CAAI,wBACN,CAAA,CACA,OAAQ,CACN,MAAA,CAAQ,mBAAA,CACR,IAAA,CAAM,iBAAA,CACN,MAAA,CAAQ,uBACR,IAAA,CAAM,yBAAA,CACN,EAAA,CAAI,wBACN,CACF,CAAA,CAEMC,EAAe,CACnB,EAAA,CAAI,kBAAA,CACJ,OAAA,CAAS,mBAAA,CACT,EAAA,CAAI,qBACN,CAAA,CAEO,SAASC,CAAAA,CAAW,CACzB,QAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,EACA,KAAA,CAAAC,CAAAA,CAAQ,MAAA,CACR,IAAA,CAAAC,CAAAA,CAAO,SAAA,CACP,GAAGC,CACL,CAAA,CAAoB,CAClB,IAAMC,CAAAA,CAASR,CAAAA,CAAcK,CAAK,CAAA,CAElC,OACEI,IAAAA,CAACC,MAAAA,CAAO,MAAA,CAAP,CACC,UAAWd,CAAAA,CACT,kDAAA,CACA,uCAAA,CACA,qBAAA,CACA,gBAAA,CACA,gCAAA,CACAY,EAAO,MAAA,CACPA,CAAAA,CAAO,IAAA,CACPA,CAAAA,CAAO,EAAA,CACPP,CAAAA,CAAaK,CAAI,CAAA,CACjBF,CACF,CAAA,CACA,UAAA,CAAY,CACV,SAAA,CAAW,YAAYI,CAAAA,CAAO,IAAI,CAAA,WAAA,EAAcA,CAAAA,CAAO,IAAI,CAAA,WAAA,EAAcA,CAAAA,CAAO,IAAI,CAAA,CACtF,CAAA,CACA,QAAA,CAAU,CAAE,KAAA,CAAO,GAAK,EACxB,UAAA,CAAY,CAAE,QAAA,CAAU,EAAI,CAAA,CAC3B,GAAGD,EAEJ,QAAA,CAAA,CAAAI,GAAAA,CAACD,MAAAA,CAAO,IAAA,CAAP,CACC,SAAA,CAAWd,EAAG,uCAAA,CAAyCY,CAAAA,CAAO,MAAM,CAAA,CACpE,OAAA,CAAS,CAAE,OAAA,CAAS,CAAC,EAAA,CAAK,CAAA,CAAG,EAAG,CAAE,CAAA,CAClC,UAAA,CAAY,CAAE,QAAA,CAAU,CAAA,CAAG,MAAA,CAAQ,CAAA,CAAA,CAAA,CAAU,IAAA,CAAM,WAAY,EAC/D,KAAA,CAAO,CAAE,SAAA,CAAW,CAAA,eAAA,EAAkBA,CAAAA,CAAO,IAAI,EAAG,CAAA,CACtD,CAAA,CACAG,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,eAAA,CAAiB,QAAA,CAAAR,CAAAA,CAAS,CAAA,CAAA,CAC5C,CAEJ,CAEA,IAAOS,CAAAA,CAAQV","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface NeonButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n color?: \"pink\" | \"cyan\" | \"green\" | \"purple\" | \"orange\";\r\n size?: \"sm\" | \"default\" | \"lg\";\r\n}\r\n\r\nconst colorVariants = {\r\n pink: {\r\n border: \"border-pink-500\",\r\n text: \"text-pink-400\",\r\n shadow: \"shadow-pink-500/50\",\r\n glow: \"rgba(236, 72, 153, 0.6)\",\r\n bg: \"hover:bg-pink-500/10\",\r\n },\r\n cyan: {\r\n border: \"border-cyan-500\",\r\n text: \"text-cyan-400\",\r\n shadow: \"shadow-cyan-500/50\",\r\n glow: \"rgba(6, 182, 212, 0.6)\",\r\n bg: \"hover:bg-cyan-500/10\",\r\n },\r\n green: {\r\n border: \"border-green-500\",\r\n text: \"text-green-400\",\r\n shadow: \"shadow-green-500/50\",\r\n glow: \"rgba(34, 197, 94, 0.6)\",\r\n bg: \"hover:bg-green-500/10\",\r\n },\r\n purple: {\r\n border: \"border-purple-500\",\r\n text: \"text-purple-400\",\r\n shadow: \"shadow-purple-500/50\",\r\n glow: \"rgba(168, 85, 247, 0.6)\",\r\n bg: \"hover:bg-purple-500/10\",\r\n },\r\n orange: {\r\n border: \"border-orange-500\",\r\n text: \"text-orange-400\",\r\n shadow: \"shadow-orange-500/50\",\r\n glow: \"rgba(249, 115, 22, 0.6)\",\r\n bg: \"hover:bg-orange-500/10\",\r\n },\r\n};\r\n\r\nconst sizeVariants = {\r\n sm: \"h-8 px-3 text-xs\",\r\n default: \"h-10 px-6 text-sm\",\r\n lg: \"h-12 px-8 text-base\",\r\n};\r\n\r\nexport function NeonButton({\r\n children,\r\n className,\r\n color = \"cyan\",\r\n size = \"default\",\r\n ...props\r\n}: NeonButtonProps) {\r\n const colors = colorVariants[color];\r\n\r\n return (\r\n <motion.button\r\n className={cn(\r\n \"relative inline-flex items-center justify-center\",\r\n \"font-semibold tracking-wide uppercase\",\r\n \"border-2 rounded-lg\",\r\n \"bg-transparent\",\r\n \"transition-colors duration-200\",\r\n colors.border,\r\n colors.text,\r\n colors.bg,\r\n sizeVariants[size],\r\n className\r\n )}\r\n whileHover={{\r\n boxShadow: `0 0 20px ${colors.glow}, 0 0 40px ${colors.glow}, 0 0 60px ${colors.glow}`,\r\n }}\r\n whileTap={{ scale: 0.98 }}\r\n transition={{ duration: 0.2 }}\r\n {...props}\r\n >\r\n <motion.span\r\n className={cn(\"absolute inset-0 rounded-lg opacity-0\", colors.border)}\r\n animate={{ opacity: [0.5, 1, 0.5] }}\r\n transition={{ duration: 2, repeat: Infinity, ease: \"easeInOut\" }}\r\n style={{ boxShadow: `inset 0 0 10px ${colors.glow}` }}\r\n />\r\n <span className=\"relative z-10\">{children}</span>\r\n </motion.button>\r\n );\r\n}\r\n\r\nexport default NeonButton;\r\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var framerMotion=require('framer-motion'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function r(...e){return tailwindMerge.twMerge(clsx.clsx(e))}function d({value:e,max:n=100,className:o,color:i="bg-blue-500",showLabel:l=false}){let t=Math.min(Math.max(e/n*100,0),100);return jsxRuntime.jsxs("div",{className:r("w-full",o),children:[jsxRuntime.jsx("div",{className:"h-2 w-full overflow-hidden rounded-full bg-zinc-200 dark:bg-zinc-800",children:jsxRuntime.jsx(framerMotion.motion.div,{className:r("h-full rounded-full",i),initial:{width:0},animate:{width:`${t}%`},transition:{duration:.5,ease:"easeOut"}})}),l&&jsxRuntime.jsxs("span",{className:"mt-1 text-sm text-zinc-600 dark:text-zinc-400",children:[Math.round(t),"%"]})]})}var x=d;exports.Progress=d;exports.default=x;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/progress/index.tsx"],"names":["cn","inputs","twMerge","clsx","Progress","value","max","className","color","showLabel","percentage","jsxs","jsx","motion","progress_default"],"mappings":"qNAGO,SAASA,CAAAA,CAAAA,GAAMC,EAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCQO,SAASG,EAAS,CACvB,KAAA,CAAAC,CAAAA,CACA,GAAA,CAAAC,CAAAA,CAAM,GAAA,CACN,SAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CAAAA,CAAQ,aAAA,CACR,SAAA,CAAAC,CAAAA,CAAY,KACd,EAAkB,CAChB,IAAMC,CAAAA,CAAa,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAA,CAAKL,CAAAA,CAAQC,CAAAA,CAAO,GAAA,CAAK,CAAC,CAAA,CAAG,GAAG,CAAA,CAEjE,OACEK,eAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAWX,CAAAA,CAAG,QAAA,CAAUO,CAAS,CAAA,CACpC,QAAA,CAAA,CAAAK,cAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,sEAAA,CACb,QAAA,CAAAA,cAAAA,CAACC,oBAAO,GAAA,CAAP,CACC,SAAA,CAAWb,CAAAA,CAAG,qBAAA,CAAuBQ,CAAK,CAAA,CAC1C,OAAA,CAAS,CAAE,KAAA,CAAO,CAAE,CAAA,CACpB,OAAA,CAAS,CAAE,MAAO,CAAA,EAAGE,CAAU,CAAA,CAAA,CAAI,CAAA,CACnC,UAAA,CAAY,CAAE,QAAA,CAAU,EAAA,CAAK,IAAA,CAAM,SAAU,CAAA,CAC/C,CAAA,CACF,CAAA,CACCD,CAAAA,EACCE,gBAAC,MAAA,CAAA,CAAK,SAAA,CAAU,+CAAA,CACb,QAAA,CAAA,CAAA,IAAA,CAAK,KAAA,CAAMD,CAAU,CAAA,CAAE,GAAA,CAAA,CAC1B,CAAA,CAAA,CAEJ,CAEJ,CAEA,IAAOI,CAAAA,CAAQV","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ProgressProps {\r\n value: number;\r\n max?: number;\r\n className?: string;\r\n color?: string;\r\n showLabel?: boolean;\r\n}\r\n\r\nexport function Progress({ \r\n value, \r\n max = 100, \r\n className,\r\n color = \"bg-blue-500\",\r\n showLabel = false\r\n}: ProgressProps) {\r\n const percentage = Math.min(Math.max((value / max) * 100, 0), 100);\r\n\r\n return (\r\n <div className={cn(\"w-full\", className)}>\r\n <div className=\"h-2 w-full overflow-hidden rounded-full bg-zinc-200 dark:bg-zinc-800\">\r\n <motion.div\r\n className={cn(\"h-full rounded-full\", color)}\r\n initial={{ width: 0 }}\r\n animate={{ width: `${percentage}%` }}\r\n transition={{ duration: 0.5, ease: \"easeOut\" }}\r\n />\r\n </div>\r\n {showLabel && (\r\n <span className=\"mt-1 text-sm text-zinc-600 dark:text-zinc-400\">\r\n {Math.round(percentage)}%\r\n </span>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Progress;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {motion}from'framer-motion';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsxs,jsx}from'react/jsx-runtime';function r(...e){return twMerge(clsx(e))}function d({value:e,max:n=100,className:o,color:i="bg-blue-500",showLabel:l=false}){let t=Math.min(Math.max(e/n*100,0),100);return jsxs("div",{className:r("w-full",o),children:[jsx("div",{className:"h-2 w-full overflow-hidden rounded-full bg-zinc-200 dark:bg-zinc-800",children:jsx(motion.div,{className:r("h-full rounded-full",i),initial:{width:0},animate:{width:`${t}%`},transition:{duration:.5,ease:"easeOut"}})}),l&&jsxs("span",{className:"mt-1 text-sm text-zinc-600 dark:text-zinc-400",children:[Math.round(t),"%"]})]})}var x=d;export{d as Progress,x as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/progress/index.tsx"],"names":["cn","inputs","twMerge","clsx","Progress","value","max","className","color","showLabel","percentage","jsxs","jsx","motion","progress_default"],"mappings":"yIAGO,SAASA,CAAAA,CAAAA,GAAMC,EAAsB,CAC1C,OAAOC,OAAAA,CAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCQO,SAASG,EAAS,CACvB,KAAA,CAAAC,CAAAA,CACA,GAAA,CAAAC,CAAAA,CAAM,GAAA,CACN,SAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CAAAA,CAAQ,aAAA,CACR,SAAA,CAAAC,CAAAA,CAAY,KACd,EAAkB,CAChB,IAAMC,CAAAA,CAAa,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAA,CAAKL,CAAAA,CAAQC,CAAAA,CAAO,GAAA,CAAK,CAAC,CAAA,CAAG,GAAG,CAAA,CAEjE,OACEK,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAWX,CAAAA,CAAG,QAAA,CAAUO,CAAS,CAAA,CACpC,QAAA,CAAA,CAAAK,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,sEAAA,CACb,QAAA,CAAAA,GAAAA,CAACC,OAAO,GAAA,CAAP,CACC,SAAA,CAAWb,CAAAA,CAAG,qBAAA,CAAuBQ,CAAK,CAAA,CAC1C,OAAA,CAAS,CAAE,KAAA,CAAO,CAAE,CAAA,CACpB,OAAA,CAAS,CAAE,MAAO,CAAA,EAAGE,CAAU,CAAA,CAAA,CAAI,CAAA,CACnC,UAAA,CAAY,CAAE,QAAA,CAAU,EAAA,CAAK,IAAA,CAAM,SAAU,CAAA,CAC/C,CAAA,CACF,CAAA,CACCD,CAAAA,EACCE,KAAC,MAAA,CAAA,CAAK,SAAA,CAAU,+CAAA,CACb,QAAA,CAAA,CAAA,IAAA,CAAK,KAAA,CAAMD,CAAU,CAAA,CAAE,GAAA,CAAA,CAC1B,CAAA,CAAA,CAEJ,CAEJ,CAEA,IAAOI,CAAAA,CAAQV","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ProgressProps {\r\n value: number;\r\n max?: number;\r\n className?: string;\r\n color?: string;\r\n showLabel?: boolean;\r\n}\r\n\r\nexport function Progress({ \r\n value, \r\n max = 100, \r\n className,\r\n color = \"bg-blue-500\",\r\n showLabel = false\r\n}: ProgressProps) {\r\n const percentage = Math.min(Math.max((value / max) * 100, 0), 100);\r\n\r\n return (\r\n <div className={cn(\"w-full\", className)}>\r\n <div className=\"h-2 w-full overflow-hidden rounded-full bg-zinc-200 dark:bg-zinc-800\">\r\n <motion.div\r\n className={cn(\"h-full rounded-full\", color)}\r\n initial={{ width: 0 }}\r\n animate={{ width: `${percentage}%` }}\r\n transition={{ duration: 0.5, ease: \"easeOut\" }}\r\n />\r\n </div>\r\n {showLabel && (\r\n <span className=\"mt-1 text-sm text-zinc-600 dark:text-zinc-400\">\r\n {Math.round(percentage)}%\r\n </span>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Progress;\r\n"]}
@@ -0,0 +1,7 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function t(...e){return tailwindMerge.twMerge(clsx.clsx(e))}function i({children:e,className:r,speed:n=3}){return jsxRuntime.jsxs("span",{className:t("inline-block bg-gradient-to-r from-red-500 via-yellow-500 via-green-500 via-blue-500 to-purple-500 bg-clip-text text-transparent bg-[length:200%_auto] animate-[rainbow_var(--rainbow-speed)_linear_infinite]",r),style:{"--rainbow-speed":`${n}s`},children:[e,jsxRuntime.jsx("style",{children:`
2
+ @keyframes rainbow {
3
+ 0% { background-position: 0% center; }
4
+ 100% { background-position: 200% center; }
5
+ }
6
+ `})]})}var m=i;exports.RainbowText=i;exports.default=m;//# sourceMappingURL=index.js.map
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/rainbow-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","RainbowText","children","className","speed","jsxs","jsx","rainbow_text_default"],"mappings":"+KAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,sBAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCKO,SAASG,CAAAA,CAAY,CAAE,SAAAC,CAAAA,CAAU,SAAA,CAAAC,CAAAA,CAAW,KAAA,CAAAC,CAAAA,CAAQ,CAAE,EAAqB,CAChF,OACEC,eAAAA,CAAC,MAAA,CAAA,CACC,SAAA,CAAWR,CAAAA,CACT,gNACAM,CACF,CAAA,CACA,KAAA,CAAO,CAAE,iBAAA,CAAmB,CAAA,EAAGC,CAAK,CAAA,CAAA,CAAI,CAAA,CAEvC,QAAA,CAAA,CAAAF,CAAAA,CACDI,cAAAA,CAAC,OAAA,CAAA,CAAO,QAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAA,CAAA,CAKN,CAAA,CAAA,CACJ,CAEJ,CAEA,IAAOC,CAAAA,CAAQN","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface RainbowTextProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n speed?: number;\r\n}\r\n\r\nexport function RainbowText({ children, className, speed = 3 }: RainbowTextProps) {\r\n return (\r\n <span\r\n className={cn(\r\n \"inline-block bg-gradient-to-r from-red-500 via-yellow-500 via-green-500 via-blue-500 to-purple-500 bg-clip-text text-transparent bg-[length:200%_auto] animate-[rainbow_var(--rainbow-speed)_linear_infinite]\",\r\n className\r\n )}\r\n style={{ \"--rainbow-speed\": `${speed}s` } as React.CSSProperties}\r\n >\r\n {children}\r\n <style>{`\r\n @keyframes rainbow {\r\n 0% { background-position: 0% center; }\r\n 100% { background-position: 200% center; }\r\n }\r\n `}</style>\r\n </span>\r\n );\r\n}\r\n\r\nexport default RainbowText;\r\n"]}
@@ -0,0 +1,7 @@
1
+ import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsxs,jsx}from'react/jsx-runtime';function t(...e){return twMerge(clsx(e))}function i({children:e,className:r,speed:n=3}){return jsxs("span",{className:t("inline-block bg-gradient-to-r from-red-500 via-yellow-500 via-green-500 via-blue-500 to-purple-500 bg-clip-text text-transparent bg-[length:200%_auto] animate-[rainbow_var(--rainbow-speed)_linear_infinite]",r),style:{"--rainbow-speed":`${n}s`},children:[e,jsx("style",{children:`
2
+ @keyframes rainbow {
3
+ 0% { background-position: 0% center; }
4
+ 100% { background-position: 200% center; }
5
+ }
6
+ `})]})}var m=i;export{i as RainbowText,m as default};//# sourceMappingURL=index.mjs.map
7
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/rainbow-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","RainbowText","children","className","speed","jsxs","jsx","rainbow_text_default"],"mappings":"sGAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,QAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCKO,SAASG,CAAAA,CAAY,CAAE,SAAAC,CAAAA,CAAU,SAAA,CAAAC,CAAAA,CAAW,KAAA,CAAAC,CAAAA,CAAQ,CAAE,EAAqB,CAChF,OACEC,IAAAA,CAAC,MAAA,CAAA,CACC,SAAA,CAAWR,CAAAA,CACT,gNACAM,CACF,CAAA,CACA,KAAA,CAAO,CAAE,iBAAA,CAAmB,CAAA,EAAGC,CAAK,CAAA,CAAA,CAAI,CAAA,CAEvC,QAAA,CAAA,CAAAF,CAAAA,CACDI,GAAAA,CAAC,OAAA,CAAA,CAAO,QAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAA,CAAA,CAKN,CAAA,CAAA,CACJ,CAEJ,CAEA,IAAOC,CAAAA,CAAQN","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface RainbowTextProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n speed?: number;\r\n}\r\n\r\nexport function RainbowText({ children, className, speed = 3 }: RainbowTextProps) {\r\n return (\r\n <span\r\n className={cn(\r\n \"inline-block bg-gradient-to-r from-red-500 via-yellow-500 via-green-500 via-blue-500 to-purple-500 bg-clip-text text-transparent bg-[length:200%_auto] animate-[rainbow_var(--rainbow-speed)_linear_infinite]\",\r\n className\r\n )}\r\n style={{ \"--rainbow-speed\": `${speed}s` } as React.CSSProperties}\r\n >\r\n {children}\r\n <style>{`\r\n @keyframes rainbow {\r\n 0% { background-position: 0% center; }\r\n 100% { background-position: 200% center; }\r\n }\r\n `}</style>\r\n </span>\r\n );\r\n}\r\n\r\nexport default RainbowText;\r\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),framerMotion=require('framer-motion'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function r(...t){return tailwindMerge.twMerge(clsx.clsx(t))}function g({words:t,className:i,interval:n=2e3}){let[a,o]=react.useState(0);return react.useEffect(()=>{let s=setInterval(()=>{o(l=>(l+1)%t.length);},n);return ()=>clearInterval(s)},[t.length,n]),jsxRuntime.jsx("span",{className:r("inline-block relative",i),children:jsxRuntime.jsx(framerMotion.AnimatePresence,{mode:"wait",children:jsxRuntime.jsx(framerMotion.motion.span,{initial:{rotateX:-90,opacity:0},animate:{rotateX:0,opacity:1},exit:{rotateX:90,opacity:0},transition:{duration:.4},className:"inline-block",style:{transformStyle:"preserve-3d"},children:t[a]},t[a])})})}var I=g;exports.RotatingText=g;exports.default=I;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/rotating-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","RotatingText","words","className","interval","index","setIndex","useState","useEffect","timer","prev","jsx","AnimatePresence","motion","rotating_text_default"],"mappings":"4OAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCOO,SAASG,CAAAA,CAAa,CAAE,KAAA,CAAAC,CAAAA,CAAO,SAAA,CAAAC,CAAAA,CAAW,QAAA,CAAAC,EAAW,GAAK,CAAA,CAAsB,CACrF,GAAM,CAACC,CAAAA,CAAOC,CAAQ,CAAA,CAAIC,cAAAA,CAAS,CAAC,CAAA,CAEpC,OAAAC,eAAAA,CAAU,IAAM,CACd,IAAMC,CAAAA,CAAQ,WAAA,CAAY,IAAM,CAC9BH,CAAAA,CAAUI,CAAAA,EAAAA,CAAUA,CAAAA,CAAO,GAAKR,CAAAA,CAAM,MAAM,EAC9C,CAAA,CAAGE,CAAQ,CAAA,CACX,OAAO,IAAM,aAAA,CAAcK,CAAK,CAClC,CAAA,CAAG,CAACP,EAAM,MAAA,CAAQE,CAAQ,CAAC,CAAA,CAGzBO,eAAC,MAAA,CAAA,CAAK,SAAA,CAAWd,CAAAA,CAAG,uBAAA,CAAyBM,CAAS,CAAA,CACpD,QAAA,CAAAQ,cAAAA,CAACC,4BAAAA,CAAA,CAAgB,IAAA,CAAK,MAAA,CACpB,QAAA,CAAAD,eAACE,mBAAAA,CAAO,IAAA,CAAP,CAEC,OAAA,CAAS,CAAE,OAAA,CAAS,GAAA,CAAK,OAAA,CAAS,CAAE,EACpC,OAAA,CAAS,CAAE,OAAA,CAAS,CAAA,CAAG,OAAA,CAAS,CAAE,CAAA,CAClC,IAAA,CAAM,CAAE,OAAA,CAAS,EAAA,CAAI,OAAA,CAAS,CAAE,EAChC,UAAA,CAAY,CAAE,QAAA,CAAU,EAAI,EAC5B,SAAA,CAAU,cAAA,CACV,KAAA,CAAO,CAAE,cAAA,CAAgB,aAAc,CAAA,CAEtC,QAAA,CAAAX,EAAMG,CAAK,CAAA,CAAA,CARPH,CAAAA,CAAMG,CAAK,CASlB,CAAA,CACF,CAAA,CACF,CAEJ,KAEOS,CAAAA,CAAQb","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface RotatingTextProps {\r\n words: string[];\r\n className?: string;\r\n interval?: number;\r\n}\r\n\r\nexport function RotatingText({ words, className, interval = 2000 }: RotatingTextProps) {\r\n const [index, setIndex] = useState(0);\r\n\r\n useEffect(() => {\r\n const timer = setInterval(() => {\r\n setIndex((prev) => (prev + 1) % words.length);\r\n }, interval);\r\n return () => clearInterval(timer);\r\n }, [words.length, interval]);\r\n\r\n return (\r\n <span className={cn(\"inline-block relative\", className)}>\r\n <AnimatePresence mode=\"wait\">\r\n <motion.span\r\n key={words[index]}\r\n initial={{ rotateX: -90, opacity: 0 }}\r\n animate={{ rotateX: 0, opacity: 1 }}\r\n exit={{ rotateX: 90, opacity: 0 }}\r\n transition={{ duration: 0.4 }}\r\n className=\"inline-block\"\r\n style={{ transformStyle: \"preserve-3d\" }}\r\n >\r\n {words[index]}\r\n </motion.span>\r\n </AnimatePresence>\r\n </span>\r\n );\r\n}\r\n\r\nexport default RotatingText;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {useState,useEffect}from'react';import {AnimatePresence,motion}from'framer-motion';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx}from'react/jsx-runtime';function r(...t){return twMerge(clsx(t))}function g({words:t,className:i,interval:n=2e3}){let[a,o]=useState(0);return useEffect(()=>{let s=setInterval(()=>{o(l=>(l+1)%t.length);},n);return ()=>clearInterval(s)},[t.length,n]),jsx("span",{className:r("inline-block relative",i),children:jsx(AnimatePresence,{mode:"wait",children:jsx(motion.span,{initial:{rotateX:-90,opacity:0},animate:{rotateX:0,opacity:1},exit:{rotateX:90,opacity:0},transition:{duration:.4},className:"inline-block",style:{transformStyle:"preserve-3d"},children:t[a]},t[a])})})}var I=g;export{g as RotatingText,I as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/rotating-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","RotatingText","words","className","interval","index","setIndex","useState","useEffect","timer","prev","jsx","AnimatePresence","motion","rotating_text_default"],"mappings":"2LAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCOO,SAASG,CAAAA,CAAa,CAAE,KAAA,CAAAC,CAAAA,CAAO,SAAA,CAAAC,CAAAA,CAAW,QAAA,CAAAC,EAAW,GAAK,CAAA,CAAsB,CACrF,GAAM,CAACC,CAAAA,CAAOC,CAAQ,CAAA,CAAIC,QAAAA,CAAS,CAAC,CAAA,CAEpC,OAAAC,SAAAA,CAAU,IAAM,CACd,IAAMC,CAAAA,CAAQ,WAAA,CAAY,IAAM,CAC9BH,CAAAA,CAAUI,CAAAA,EAAAA,CAAUA,CAAAA,CAAO,GAAKR,CAAAA,CAAM,MAAM,EAC9C,CAAA,CAAGE,CAAQ,CAAA,CACX,OAAO,IAAM,aAAA,CAAcK,CAAK,CAClC,CAAA,CAAG,CAACP,EAAM,MAAA,CAAQE,CAAQ,CAAC,CAAA,CAGzBO,IAAC,MAAA,CAAA,CAAK,SAAA,CAAWd,CAAAA,CAAG,uBAAA,CAAyBM,CAAS,CAAA,CACpD,QAAA,CAAAQ,GAAAA,CAACC,eAAAA,CAAA,CAAgB,IAAA,CAAK,MAAA,CACpB,QAAA,CAAAD,IAACE,MAAAA,CAAO,IAAA,CAAP,CAEC,OAAA,CAAS,CAAE,OAAA,CAAS,GAAA,CAAK,OAAA,CAAS,CAAE,EACpC,OAAA,CAAS,CAAE,OAAA,CAAS,CAAA,CAAG,OAAA,CAAS,CAAE,CAAA,CAClC,IAAA,CAAM,CAAE,OAAA,CAAS,EAAA,CAAI,OAAA,CAAS,CAAE,EAChC,UAAA,CAAY,CAAE,QAAA,CAAU,EAAI,EAC5B,SAAA,CAAU,cAAA,CACV,KAAA,CAAO,CAAE,cAAA,CAAgB,aAAc,CAAA,CAEtC,QAAA,CAAAX,EAAMG,CAAK,CAAA,CAAA,CARPH,CAAAA,CAAMG,CAAK,CASlB,CAAA,CACF,CAAA,CACF,CAEJ,KAEOS,CAAAA,CAAQb","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface RotatingTextProps {\r\n words: string[];\r\n className?: string;\r\n interval?: number;\r\n}\r\n\r\nexport function RotatingText({ words, className, interval = 2000 }: RotatingTextProps) {\r\n const [index, setIndex] = useState(0);\r\n\r\n useEffect(() => {\r\n const timer = setInterval(() => {\r\n setIndex((prev) => (prev + 1) % words.length);\r\n }, interval);\r\n return () => clearInterval(timer);\r\n }, [words.length, interval]);\r\n\r\n return (\r\n <span className={cn(\"inline-block relative\", className)}>\r\n <AnimatePresence mode=\"wait\">\r\n <motion.span\r\n key={words[index]}\r\n initial={{ rotateX: -90, opacity: 0 }}\r\n animate={{ rotateX: 0, opacity: 1 }}\r\n exit={{ rotateX: 90, opacity: 0 }}\r\n transition={{ duration: 0.4 }}\r\n className=\"inline-block\"\r\n style={{ transformStyle: \"preserve-3d\" }}\r\n >\r\n {words[index]}\r\n </motion.span>\r\n </AnimatePresence>\r\n </span>\r\n );\r\n}\r\n\r\nexport default RotatingText;\r\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function l(...t){return tailwindMerge.twMerge(clsx.clsx(t))}function _({text:t,className:s,speed:n=50,scrambleChars:e="!<>-_\\/[]{}\u2014=+*^?#________"}){let[i,c]=react.useState(t);return react.useEffect(()=>{let r=0,a=setInterval(()=>{c(t.split("").map((d,o)=>o<r?t[o]:e[Math.floor(Math.random()*e.length)]).join("")),r>=t.length&&clearInterval(a),r+=1/3;},n);return ()=>clearInterval(a)},[t,n,e]),jsxRuntime.jsx("span",{className:l("font-mono",s),children:i})}var b=_;exports.ScrambledText=_;exports.default=b;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/scrambled-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","ScrambledText","text","className","speed","scrambleChars","displayText","setDisplayText","useState","useEffect","iteration","interval","char","index","jsx","scrambled_text_default"],"mappings":"sMAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCOO,SAASG,CAAAA,CAAc,CAC5B,IAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CAAAA,CAAQ,EAAA,CACR,aAAA,CAAAC,CAAAA,CAAgB,kCAClB,CAAA,CAAuB,CACrB,GAAM,CAACC,CAAAA,CAAaC,CAAc,CAAA,CAAIC,cAAAA,CAASN,CAAI,CAAA,CAEnD,OAAAO,eAAAA,CAAU,IAAM,CACd,IAAIC,CAAAA,CAAY,CAAA,CACVC,CAAAA,CAAW,WAAA,CAAY,IAAM,CACjCJ,CAAAA,CACEL,CAAAA,CACG,KAAA,CAAM,EAAE,CAAA,CACR,GAAA,CAAI,CAACU,CAAAA,CAAMC,CAAAA,GACNA,CAAAA,CAAQH,CAAAA,CAAkBR,CAAAA,CAAKW,CAAK,CAAA,CACjCR,CAAAA,CAAc,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,MAAA,EAAO,CAAIA,CAAAA,CAAc,MAAM,CAAC,CACtE,CAAA,CACA,IAAA,CAAK,EAAE,CACZ,CAAA,CAEIK,CAAAA,EAAaR,CAAAA,CAAK,MAAA,EACpB,aAAA,CAAcS,CAAQ,CAAA,CAGxBD,CAAAA,EAAa,CAAA,CAAI,EACnB,CAAA,CAAGN,CAAK,CAAA,CAER,OAAO,IAAM,aAAA,CAAcO,CAAQ,CACrC,CAAA,CAAG,CAACT,CAAAA,CAAME,CAAAA,CAAOC,CAAa,CAAC,CAAA,CAG7BS,cAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAWjB,CAAAA,CAAG,WAAA,CAAaM,CAAS,CAAA,CACvC,QAAA,CAAAG,CAAAA,CACH,CAEJ,KAEOS,CAAAA,CAAQd","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ScrambledTextProps {\r\n text: string;\r\n className?: string;\r\n speed?: number;\r\n scrambleChars?: string;\r\n}\r\n\r\nexport function ScrambledText({\r\n text,\r\n className,\r\n speed = 50,\r\n scrambleChars = \"!<>-_\\\\/[]{}—=+*^?#________\"\r\n}: ScrambledTextProps) {\r\n const [displayText, setDisplayText] = useState(text);\r\n\r\n useEffect(() => {\r\n let iteration = 0;\r\n const interval = setInterval(() => {\r\n setDisplayText(\r\n text\r\n .split(\"\")\r\n .map((char, index) => {\r\n if (index < iteration) return text[index];\r\n return scrambleChars[Math.floor(Math.random() * scrambleChars.length)];\r\n })\r\n .join(\"\")\r\n );\r\n\r\n if (iteration >= text.length) {\r\n clearInterval(interval);\r\n }\r\n\r\n iteration += 1 / 3;\r\n }, speed);\r\n\r\n return () => clearInterval(interval);\r\n }, [text, speed, scrambleChars]);\r\n\r\n return (\r\n <span className={cn(\"font-mono\", className)}>\r\n {displayText}\r\n </span>\r\n );\r\n}\r\n\r\nexport default ScrambledText;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {useState,useEffect}from'react';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx}from'react/jsx-runtime';function l(...t){return twMerge(clsx(t))}function _({text:t,className:s,speed:n=50,scrambleChars:e="!<>-_\\/[]{}\u2014=+*^?#________"}){let[i,c]=useState(t);return useEffect(()=>{let r=0,a=setInterval(()=>{c(t.split("").map((d,o)=>o<r?t[o]:e[Math.floor(Math.random()*e.length)]).join("")),r>=t.length&&clearInterval(a),r+=1/3;},n);return ()=>clearInterval(a)},[t,n,e]),jsx("span",{className:l("font-mono",s),children:i})}var b=_;export{_ as ScrambledText,b as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/scrambled-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","ScrambledText","text","className","speed","scrambleChars","displayText","setDisplayText","useState","useEffect","iteration","interval","char","index","jsx","scrambled_text_default"],"mappings":"wIAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCOO,SAASG,CAAAA,CAAc,CAC5B,IAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CAAAA,CAAQ,EAAA,CACR,aAAA,CAAAC,CAAAA,CAAgB,kCAClB,CAAA,CAAuB,CACrB,GAAM,CAACC,CAAAA,CAAaC,CAAc,CAAA,CAAIC,QAAAA,CAASN,CAAI,CAAA,CAEnD,OAAAO,SAAAA,CAAU,IAAM,CACd,IAAIC,CAAAA,CAAY,CAAA,CACVC,CAAAA,CAAW,WAAA,CAAY,IAAM,CACjCJ,CAAAA,CACEL,CAAAA,CACG,KAAA,CAAM,EAAE,CAAA,CACR,GAAA,CAAI,CAACU,CAAAA,CAAMC,CAAAA,GACNA,CAAAA,CAAQH,CAAAA,CAAkBR,CAAAA,CAAKW,CAAK,CAAA,CACjCR,CAAAA,CAAc,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,MAAA,EAAO,CAAIA,CAAAA,CAAc,MAAM,CAAC,CACtE,CAAA,CACA,IAAA,CAAK,EAAE,CACZ,CAAA,CAEIK,CAAAA,EAAaR,CAAAA,CAAK,MAAA,EACpB,aAAA,CAAcS,CAAQ,CAAA,CAGxBD,CAAAA,EAAa,CAAA,CAAI,EACnB,CAAA,CAAGN,CAAK,CAAA,CAER,OAAO,IAAM,aAAA,CAAcO,CAAQ,CACrC,CAAA,CAAG,CAACT,CAAAA,CAAME,CAAAA,CAAOC,CAAa,CAAC,CAAA,CAG7BS,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAWjB,CAAAA,CAAG,WAAA,CAAaM,CAAS,CAAA,CACvC,QAAA,CAAAG,CAAAA,CACH,CAEJ,KAEOS,CAAAA,CAAQd","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ScrambledTextProps {\r\n text: string;\r\n className?: string;\r\n speed?: number;\r\n scrambleChars?: string;\r\n}\r\n\r\nexport function ScrambledText({\r\n text,\r\n className,\r\n speed = 50,\r\n scrambleChars = \"!<>-_\\\\/[]{}—=+*^?#________\"\r\n}: ScrambledTextProps) {\r\n const [displayText, setDisplayText] = useState(text);\r\n\r\n useEffect(() => {\r\n let iteration = 0;\r\n const interval = setInterval(() => {\r\n setDisplayText(\r\n text\r\n .split(\"\")\r\n .map((char, index) => {\r\n if (index < iteration) return text[index];\r\n return scrambleChars[Math.floor(Math.random() * scrambleChars.length)];\r\n })\r\n .join(\"\")\r\n );\r\n\r\n if (iteration >= text.length) {\r\n clearInterval(interval);\r\n }\r\n\r\n iteration += 1 / 3;\r\n }, speed);\r\n\r\n return () => clearInterval(interval);\r\n }, [text, speed, scrambleChars]);\r\n\r\n return (\r\n <span className={cn(\"font-mono\", className)}>\r\n {displayText}\r\n </span>\r\n );\r\n}\r\n\r\nexport default ScrambledText;\r\n"]}
@@ -0,0 +1,7 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function t(...e){return tailwindMerge.twMerge(clsx.clsx(e))}function o({text:e,disabled:n=false,speed:r=5,className:a=""}){return jsxRuntime.jsxs("span",{className:t("inline-block bg-gradient-to-r from-gray-900 via-gray-100 to-gray-900 bg-clip-text text-transparent bg-[length:200%_100%]",!n&&"animate-[shine_var(--shine-speed)_linear_infinite]",a),style:{"--shine-speed":`${r}s`,backgroundImage:"linear-gradient(90deg, #374151 25%, #f3f4f6 50%, #374151 75%)"},children:[e,jsxRuntime.jsx("style",{children:`
2
+ @keyframes shine {
3
+ 0% { background-position: -200% 0; }
4
+ 100% { background-position: 200% 0; }
5
+ }
6
+ `})]})}var m=o;exports.ShinyText=o;exports.default=m;//# sourceMappingURL=index.js.map
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/shiny-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","ShinyText","text","disabled","speed","className","jsxs","jsx","shiny_text_default"],"mappings":"+KAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCMO,SAASG,CAAAA,CAAU,CACxB,IAAA,CAAAC,EACA,QAAA,CAAAC,CAAAA,CAAW,KAAA,CACX,KAAA,CAAAC,CAAAA,CAAQ,CAAA,CACR,SAAA,CAAAC,CAAAA,CAAY,EACd,CAAA,CAAmB,CACjB,OACEC,eAAAA,CAAC,MAAA,CAAA,CACC,SAAA,CAAWT,CAAAA,CACT,2HACA,CAACM,CAAAA,EAAY,oDAAA,CACbE,CACF,CAAA,CACA,KAAA,CAAO,CACL,eAAA,CAAiB,CAAA,EAAGD,CAAK,CAAA,CAAA,CAAA,CACzB,eAAA,CAAiB,+DACnB,CAAA,CAEC,QAAA,CAAA,CAAAF,CAAAA,CACDK,eAAC,OAAA,CAAA,CAAO,QAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAA,CAAA,CAKN,CAAA,CAAA,CACJ,CAEJ,CAEA,IAAOC,CAAAA,CAAQP","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ShinyTextProps {\r\n text: string;\r\n disabled?: boolean;\r\n speed?: number;\r\n className?: string;\r\n}\r\n\r\nexport function ShinyText({ \r\n text, \r\n disabled = false, \r\n speed = 5, \r\n className = \"\" \r\n}: ShinyTextProps) {\r\n return (\r\n <span \r\n className={cn(\r\n \"inline-block bg-gradient-to-r from-gray-900 via-gray-100 to-gray-900 bg-clip-text text-transparent bg-[length:200%_100%]\",\r\n !disabled && \"animate-[shine_var(--shine-speed)_linear_infinite]\",\r\n className\r\n )}\r\n style={{ \r\n \"--shine-speed\": `${speed}s`,\r\n backgroundImage: \"linear-gradient(90deg, #374151 25%, #f3f4f6 50%, #374151 75%)\"\r\n } as React.CSSProperties}\r\n >\r\n {text}\r\n <style>{`\r\n @keyframes shine {\r\n 0% { background-position: -200% 0; }\r\n 100% { background-position: 200% 0; }\r\n }\r\n `}</style>\r\n </span>\r\n );\r\n}\r\n\r\nexport default ShinyText;\r\n"]}
@@ -0,0 +1,7 @@
1
+ import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsxs,jsx}from'react/jsx-runtime';function t(...e){return twMerge(clsx(e))}function o({text:e,disabled:n=false,speed:r=5,className:a=""}){return jsxs("span",{className:t("inline-block bg-gradient-to-r from-gray-900 via-gray-100 to-gray-900 bg-clip-text text-transparent bg-[length:200%_100%]",!n&&"animate-[shine_var(--shine-speed)_linear_infinite]",a),style:{"--shine-speed":`${r}s`,backgroundImage:"linear-gradient(90deg, #374151 25%, #f3f4f6 50%, #374151 75%)"},children:[e,jsx("style",{children:`
2
+ @keyframes shine {
3
+ 0% { background-position: -200% 0; }
4
+ 100% { background-position: 200% 0; }
5
+ }
6
+ `})]})}var m=o;export{o as ShinyText,m as default};//# sourceMappingURL=index.mjs.map
7
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/shiny-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","ShinyText","text","disabled","speed","className","jsxs","jsx","shiny_text_default"],"mappings":"sGAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCMO,SAASG,CAAAA,CAAU,CACxB,IAAA,CAAAC,EACA,QAAA,CAAAC,CAAAA,CAAW,KAAA,CACX,KAAA,CAAAC,CAAAA,CAAQ,CAAA,CACR,SAAA,CAAAC,CAAAA,CAAY,EACd,CAAA,CAAmB,CACjB,OACEC,IAAAA,CAAC,MAAA,CAAA,CACC,SAAA,CAAWT,CAAAA,CACT,2HACA,CAACM,CAAAA,EAAY,oDAAA,CACbE,CACF,CAAA,CACA,KAAA,CAAO,CACL,eAAA,CAAiB,CAAA,EAAGD,CAAK,CAAA,CAAA,CAAA,CACzB,eAAA,CAAiB,+DACnB,CAAA,CAEC,QAAA,CAAA,CAAAF,CAAAA,CACDK,IAAC,OAAA,CAAA,CAAO,QAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAA,CAAA,CAKN,CAAA,CAAA,CACJ,CAEJ,CAEA,IAAOC,CAAAA,CAAQP","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ShinyTextProps {\r\n text: string;\r\n disabled?: boolean;\r\n speed?: number;\r\n className?: string;\r\n}\r\n\r\nexport function ShinyText({ \r\n text, \r\n disabled = false, \r\n speed = 5, \r\n className = \"\" \r\n}: ShinyTextProps) {\r\n return (\r\n <span \r\n className={cn(\r\n \"inline-block bg-gradient-to-r from-gray-900 via-gray-100 to-gray-900 bg-clip-text text-transparent bg-[length:200%_100%]\",\r\n !disabled && \"animate-[shine_var(--shine-speed)_linear_infinite]\",\r\n className\r\n )}\r\n style={{ \r\n \"--shine-speed\": `${speed}s`,\r\n backgroundImage: \"linear-gradient(90deg, #374151 25%, #f3f4f6 50%, #374151 75%)\"\r\n } as React.CSSProperties}\r\n >\r\n {text}\r\n <style>{`\r\n @keyframes shine {\r\n 0% { background-position: -200% 0; }\r\n 100% { background-position: 200% 0; }\r\n }\r\n `}</style>\r\n </span>\r\n );\r\n}\r\n\r\nexport default ShinyText;\r\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function r(...e){return tailwindMerge.twMerge(clsx.clsx(e))}function o({className:e,variant:t="text",width:n,height:a}){return jsxRuntime.jsx("div",{className:r("animate-pulse bg-zinc-200 dark:bg-zinc-800",{text:"h-4 rounded",circular:"rounded-full",rectangular:"rounded-lg"}[t],e),style:{width:n,height:a}})}var p=o;exports.Skeleton=o;exports.default=p;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/skeleton/index.tsx"],"names":["cn","inputs","twMerge","clsx","Skeleton","className","variant","width","height","jsx","skeleton_default"],"mappings":"+KAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCMO,SAASG,CAAAA,CAAS,CACvB,SAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CAAU,OACV,KAAA,CAAAC,CAAAA,CACA,MAAA,CAAAC,CACF,CAAA,CAAkB,CAOhB,OACEC,cAAAA,CAAC,KAAA,CAAA,CACC,SAAA,CAAWT,CAAAA,CACT,4CAAA,CATW,CACf,IAAA,CAAM,aAAA,CACN,QAAA,CAAU,eACV,WAAA,CAAa,YACf,CAAA,CAMeM,CAAO,CAAA,CAChBD,CACF,CAAA,CACA,KAAA,CAAO,CAAE,KAAA,CAAAE,CAAAA,CAAO,MAAA,CAAAC,CAAO,CAAA,CACzB,CAEJ,KAEOE,CAAAA,CAAQN","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SkeletonProps {\r\n className?: string;\r\n variant?: \"text\" | \"circular\" | \"rectangular\";\r\n width?: string | number;\r\n height?: string | number;\r\n}\r\n\r\nexport function Skeleton({ \r\n className, \r\n variant = \"text\",\r\n width,\r\n height \r\n}: SkeletonProps) {\r\n const variants = {\r\n text: \"h-4 rounded\",\r\n circular: \"rounded-full\",\r\n rectangular: \"rounded-lg\",\r\n };\r\n\r\n return (\r\n <div\r\n className={cn(\r\n \"animate-pulse bg-zinc-200 dark:bg-zinc-800\",\r\n variants[variant],\r\n className\r\n )}\r\n style={{ width, height }}\r\n />\r\n );\r\n}\r\n\r\nexport default Skeleton;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx}from'react/jsx-runtime';function r(...e){return twMerge(clsx(e))}function o({className:e,variant:t="text",width:n,height:a}){return jsx("div",{className:r("animate-pulse bg-zinc-200 dark:bg-zinc-800",{text:"h-4 rounded",circular:"rounded-full",rectangular:"rounded-lg"}[t],e),style:{width:n,height:a}})}var p=o;export{o as Skeleton,p as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/skeleton/index.tsx"],"names":["cn","inputs","twMerge","clsx","Skeleton","className","variant","width","height","jsx","skeleton_default"],"mappings":"iGAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCMO,SAASG,CAAAA,CAAS,CACvB,SAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CAAU,OACV,KAAA,CAAAC,CAAAA,CACA,MAAA,CAAAC,CACF,CAAA,CAAkB,CAOhB,OACEC,GAAAA,CAAC,KAAA,CAAA,CACC,SAAA,CAAWT,CAAAA,CACT,4CAAA,CATW,CACf,IAAA,CAAM,aAAA,CACN,QAAA,CAAU,eACV,WAAA,CAAa,YACf,CAAA,CAMeM,CAAO,CAAA,CAChBD,CACF,CAAA,CACA,KAAA,CAAO,CAAE,KAAA,CAAAE,CAAAA,CAAO,MAAA,CAAAC,CAAO,CAAA,CACzB,CAEJ,KAEOE,CAAAA,CAAQN","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SkeletonProps {\r\n className?: string;\r\n variant?: \"text\" | \"circular\" | \"rectangular\";\r\n width?: string | number;\r\n height?: string | number;\r\n}\r\n\r\nexport function Skeleton({ \r\n className, \r\n variant = \"text\",\r\n width,\r\n height \r\n}: SkeletonProps) {\r\n const variants = {\r\n text: \"h-4 rounded\",\r\n circular: \"rounded-full\",\r\n rectangular: \"rounded-lg\",\r\n };\r\n\r\n return (\r\n <div\r\n className={cn(\r\n \"animate-pulse bg-zinc-200 dark:bg-zinc-800\",\r\n variants[variant],\r\n className\r\n )}\r\n style={{ width, height }}\r\n />\r\n );\r\n}\r\n\r\nexport default Skeleton;\r\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),framerMotion=require('framer-motion'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function i(...o){return tailwindMerge.twMerge(clsx.clsx(o))}function y({children:o,className:l,variant:e="primary",size:d="md",slideText:c="Go!",onClick:m,...u}){let[t,a]=react.useState(false),p={sm:"px-4 py-2 text-sm",md:"px-6 py-3 text-base",lg:"px-8 py-4 text-lg"},x={primary:"bg-zinc-900 text-white dark:bg-white dark:text-zinc-900",secondary:"bg-zinc-100 text-zinc-900 dark:bg-zinc-800 dark:text-white",outline:"bg-transparent text-zinc-900 border-2 border-zinc-300 dark:text-white dark:border-zinc-600"};return jsxRuntime.jsxs("button",{className:i("relative overflow-hidden rounded-lg font-medium transition-all",p[d],x[e],l),onMouseEnter:()=>a(true),onMouseLeave:()=>a(false),onClick:m,...u,children:[jsxRuntime.jsx(framerMotion.motion.div,{className:i("absolute inset-0",e==="primary"?"bg-blue-600 dark:bg-blue-500":"bg-zinc-900 dark:bg-white"),initial:{x:"-100%"},animate:{x:t?"0%":"-100%"},transition:{duration:.3,ease:"easeInOut"}}),jsxRuntime.jsx(framerMotion.motion.span,{className:"relative flex items-center justify-center gap-2 z-10",animate:{x:t?20:0,opacity:t?0:1},transition:{duration:.2},children:o}),jsxRuntime.jsxs(framerMotion.motion.span,{className:i("absolute inset-0 flex items-center justify-center gap-2 z-10",e==="outline"||e==="secondary"?"text-white dark:text-zinc-900":"text-white"),initial:{x:-20,opacity:0},animate:{x:t?0:-20,opacity:t?1:0},transition:{duration:.2},children:[c,jsxRuntime.jsx("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:jsxRuntime.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M14 5l7 7m0 0l-7 7m7-7H3"})})]})]})}var C=y;exports.SlideButton=y;exports.default=C;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/slide-button/index.tsx"],"names":["cn","inputs","twMerge","clsx","SlideButton","children","className","variant","size","slideText","onClick","props","isHovered","setIsHovered","useState","sizeClasses","variantClasses","jsxs","jsx","motion","slide_button_default"],"mappings":"4OAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCOO,SAASG,CAAAA,CAAY,CAC1B,SAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CAAU,SAAA,CACV,KAAAC,CAAAA,CAAO,IAAA,CACP,SAAA,CAAAC,CAAAA,CAAY,KAAA,CACZ,OAAA,CAAAC,CAAAA,CACA,GAAGC,CACL,CAAA,CAAqB,CACnB,GAAM,CAACC,CAAAA,CAAWC,CAAY,CAAA,CAAIC,cAAAA,CAAS,KAAK,CAAA,CAE1CC,CAAAA,CAAc,CAClB,GAAI,mBAAA,CACJ,EAAA,CAAI,qBAAA,CACJ,EAAA,CAAI,mBACN,CAAA,CAEMC,EAAiB,CACrB,OAAA,CAAS,yDAAA,CACT,SAAA,CAAW,4DAAA,CACX,OAAA,CAAS,4FACX,CAAA,CAEA,OACEC,eAAAA,CAAC,QAAA,CAAA,CACC,SAAA,CAAWjB,CAAAA,CACT,gEAAA,CACAe,EAAYP,CAAI,CAAA,CAChBQ,CAAAA,CAAeT,CAAO,CAAA,CACtBD,CACF,CAAA,CACA,YAAA,CAAc,IAAMO,CAAAA,CAAa,IAAI,CAAA,CACrC,YAAA,CAAc,IAAMA,EAAa,KAAK,CAAA,CACtC,OAAA,CAASH,CAAAA,CACR,GAAGC,CAAAA,CAEJ,QAAA,CAAA,CAAAO,cAAAA,CAACC,mBAAAA,CAAO,GAAA,CAAP,CACC,SAAA,CAAWnB,CAAAA,CACT,kBAAA,CACAO,IAAY,SAAA,CAAY,8BAAA,CAAiC,2BAC3D,CAAA,CACA,OAAA,CAAS,CAAE,EAAG,OAAQ,CAAA,CACtB,OAAA,CAAS,CAAE,CAAA,CAAGK,CAAAA,CAAY,KAAO,OAAQ,CAAA,CACzC,UAAA,CAAY,CAAE,QAAA,CAAU,EAAA,CAAK,IAAA,CAAM,WAAY,CAAA,CACjD,CAAA,CAEAM,cAAAA,CAACC,mBAAAA,CAAO,IAAA,CAAP,CACC,UAAU,sDAAA,CACV,OAAA,CAAS,CAAE,CAAA,CAAGP,CAAAA,CAAY,EAAA,CAAK,CAAA,CAAG,OAAA,CAASA,CAAAA,CAAY,CAAA,CAAI,CAAE,CAAA,CAC7D,UAAA,CAAY,CAAE,SAAU,EAAI,CAAA,CAE3B,QAAA,CAAAP,CAAAA,CACH,CAAA,CAEAY,eAAAA,CAACE,mBAAAA,CAAO,IAAA,CAAP,CACC,SAAA,CAAWnB,CAAAA,CACT,8DAAA,CACAO,CAAAA,GAAY,SAAA,EAAaA,IAAY,WAAA,CAAc,+BAAA,CAAkC,YACvF,CAAA,CACA,OAAA,CAAS,CAAE,EAAG,GAAA,CAAK,OAAA,CAAS,CAAE,CAAA,CAC9B,OAAA,CAAS,CAAE,EAAGK,CAAAA,CAAY,CAAA,CAAI,GAAA,CAAK,OAAA,CAASA,CAAAA,CAAY,CAAA,CAAI,CAAE,CAAA,CAC9D,UAAA,CAAY,CAAE,QAAA,CAAU,EAAI,CAAA,CAE3B,QAAA,CAAA,CAAAH,EACDS,cAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,SAAA,CAAU,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,cAAA,CAAe,OAAA,CAAQ,WAAA,CACjE,QAAA,CAAAA,cAAAA,CAAC,MAAA,CAAA,CAAK,aAAA,CAAc,QAAQ,cAAA,CAAe,OAAA,CAAQ,WAAA,CAAa,CAAA,CAAG,CAAA,CAAE,0BAAA,CAA2B,CAAA,CAClG,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAEJ,CAEA,IAAOE,CAAAA,CAAQhB","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SlideButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant?: \"primary\" | \"secondary\" | \"outline\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n slideText?: string;\r\n}\r\n\r\nexport function SlideButton({\r\n children,\r\n className,\r\n variant = \"primary\",\r\n size = \"md\",\r\n slideText = \"Go!\",\r\n onClick,\r\n ...props\r\n}: SlideButtonProps) {\r\n const [isHovered, setIsHovered] = useState(false);\r\n\r\n const sizeClasses = {\r\n sm: \"px-4 py-2 text-sm\",\r\n md: \"px-6 py-3 text-base\",\r\n lg: \"px-8 py-4 text-lg\"\r\n };\r\n\r\n const variantClasses = {\r\n primary: \"bg-zinc-900 text-white dark:bg-white dark:text-zinc-900\",\r\n secondary: \"bg-zinc-100 text-zinc-900 dark:bg-zinc-800 dark:text-white\",\r\n outline: \"bg-transparent text-zinc-900 border-2 border-zinc-300 dark:text-white dark:border-zinc-600\"\r\n };\r\n\r\n return (\r\n <button\r\n className={cn(\r\n \"relative overflow-hidden rounded-lg font-medium transition-all\",\r\n sizeClasses[size],\r\n variantClasses[variant],\r\n className\r\n )}\r\n onMouseEnter={() => setIsHovered(true)}\r\n onMouseLeave={() => setIsHovered(false)}\r\n onClick={onClick}\r\n {...props}\r\n >\r\n <motion.div\r\n className={cn(\r\n \"absolute inset-0\",\r\n variant === \"primary\" ? \"bg-blue-600 dark:bg-blue-500\" : \"bg-zinc-900 dark:bg-white\"\r\n )}\r\n initial={{ x: \"-100%\" }}\r\n animate={{ x: isHovered ? \"0%\" : \"-100%\" }}\r\n transition={{ duration: 0.3, ease: \"easeInOut\" }}\r\n />\r\n \r\n <motion.span\r\n className=\"relative flex items-center justify-center gap-2 z-10\"\r\n animate={{ x: isHovered ? 20 : 0, opacity: isHovered ? 0 : 1 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n {children}\r\n </motion.span>\r\n \r\n <motion.span\r\n className={cn(\r\n \"absolute inset-0 flex items-center justify-center gap-2 z-10\",\r\n variant === \"outline\" || variant === \"secondary\" ? \"text-white dark:text-zinc-900\" : \"text-white\"\r\n )}\r\n initial={{ x: -20, opacity: 0 }}\r\n animate={{ x: isHovered ? 0 : -20, opacity: isHovered ? 1 : 0 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n {slideText}\r\n <svg className=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M14 5l7 7m0 0l-7 7m7-7H3\" />\r\n </svg>\r\n </motion.span>\r\n </button>\r\n );\r\n}\r\n\r\nexport default SlideButton;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {useState}from'react';import {motion}from'framer-motion';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsxs,jsx}from'react/jsx-runtime';function i(...o){return twMerge(clsx(o))}function y({children:o,className:l,variant:e="primary",size:d="md",slideText:c="Go!",onClick:m,...u}){let[t,a]=useState(false),p={sm:"px-4 py-2 text-sm",md:"px-6 py-3 text-base",lg:"px-8 py-4 text-lg"},x={primary:"bg-zinc-900 text-white dark:bg-white dark:text-zinc-900",secondary:"bg-zinc-100 text-zinc-900 dark:bg-zinc-800 dark:text-white",outline:"bg-transparent text-zinc-900 border-2 border-zinc-300 dark:text-white dark:border-zinc-600"};return jsxs("button",{className:i("relative overflow-hidden rounded-lg font-medium transition-all",p[d],x[e],l),onMouseEnter:()=>a(true),onMouseLeave:()=>a(false),onClick:m,...u,children:[jsx(motion.div,{className:i("absolute inset-0",e==="primary"?"bg-blue-600 dark:bg-blue-500":"bg-zinc-900 dark:bg-white"),initial:{x:"-100%"},animate:{x:t?"0%":"-100%"},transition:{duration:.3,ease:"easeInOut"}}),jsx(motion.span,{className:"relative flex items-center justify-center gap-2 z-10",animate:{x:t?20:0,opacity:t?0:1},transition:{duration:.2},children:o}),jsxs(motion.span,{className:i("absolute inset-0 flex items-center justify-center gap-2 z-10",e==="outline"||e==="secondary"?"text-white dark:text-zinc-900":"text-white"),initial:{x:-20,opacity:0},animate:{x:t?0:-20,opacity:t?1:0},transition:{duration:.2},children:[c,jsx("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M14 5l7 7m0 0l-7 7m7-7H3"})})]})]})}var C=y;export{y as SlideButton,C as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/slide-button/index.tsx"],"names":["cn","inputs","twMerge","clsx","SlideButton","children","className","variant","size","slideText","onClick","props","isHovered","setIsHovered","useState","sizeClasses","variantClasses","jsxs","jsx","motion","slide_button_default"],"mappings":"sKAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCOO,SAASG,CAAAA,CAAY,CAC1B,SAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CAAU,SAAA,CACV,KAAAC,CAAAA,CAAO,IAAA,CACP,SAAA,CAAAC,CAAAA,CAAY,KAAA,CACZ,OAAA,CAAAC,CAAAA,CACA,GAAGC,CACL,CAAA,CAAqB,CACnB,GAAM,CAACC,CAAAA,CAAWC,CAAY,CAAA,CAAIC,QAAAA,CAAS,KAAK,CAAA,CAE1CC,CAAAA,CAAc,CAClB,GAAI,mBAAA,CACJ,EAAA,CAAI,qBAAA,CACJ,EAAA,CAAI,mBACN,CAAA,CAEMC,EAAiB,CACrB,OAAA,CAAS,yDAAA,CACT,SAAA,CAAW,4DAAA,CACX,OAAA,CAAS,4FACX,CAAA,CAEA,OACEC,IAAAA,CAAC,QAAA,CAAA,CACC,SAAA,CAAWjB,CAAAA,CACT,gEAAA,CACAe,EAAYP,CAAI,CAAA,CAChBQ,CAAAA,CAAeT,CAAO,CAAA,CACtBD,CACF,CAAA,CACA,YAAA,CAAc,IAAMO,CAAAA,CAAa,IAAI,CAAA,CACrC,YAAA,CAAc,IAAMA,EAAa,KAAK,CAAA,CACtC,OAAA,CAASH,CAAAA,CACR,GAAGC,CAAAA,CAEJ,QAAA,CAAA,CAAAO,GAAAA,CAACC,MAAAA,CAAO,GAAA,CAAP,CACC,SAAA,CAAWnB,CAAAA,CACT,kBAAA,CACAO,IAAY,SAAA,CAAY,8BAAA,CAAiC,2BAC3D,CAAA,CACA,OAAA,CAAS,CAAE,EAAG,OAAQ,CAAA,CACtB,OAAA,CAAS,CAAE,CAAA,CAAGK,CAAAA,CAAY,KAAO,OAAQ,CAAA,CACzC,UAAA,CAAY,CAAE,QAAA,CAAU,EAAA,CAAK,IAAA,CAAM,WAAY,CAAA,CACjD,CAAA,CAEAM,GAAAA,CAACC,MAAAA,CAAO,IAAA,CAAP,CACC,UAAU,sDAAA,CACV,OAAA,CAAS,CAAE,CAAA,CAAGP,CAAAA,CAAY,EAAA,CAAK,CAAA,CAAG,OAAA,CAASA,CAAAA,CAAY,CAAA,CAAI,CAAE,CAAA,CAC7D,UAAA,CAAY,CAAE,SAAU,EAAI,CAAA,CAE3B,QAAA,CAAAP,CAAAA,CACH,CAAA,CAEAY,IAAAA,CAACE,MAAAA,CAAO,IAAA,CAAP,CACC,SAAA,CAAWnB,CAAAA,CACT,8DAAA,CACAO,CAAAA,GAAY,SAAA,EAAaA,IAAY,WAAA,CAAc,+BAAA,CAAkC,YACvF,CAAA,CACA,OAAA,CAAS,CAAE,EAAG,GAAA,CAAK,OAAA,CAAS,CAAE,CAAA,CAC9B,OAAA,CAAS,CAAE,EAAGK,CAAAA,CAAY,CAAA,CAAI,GAAA,CAAK,OAAA,CAASA,CAAAA,CAAY,CAAA,CAAI,CAAE,CAAA,CAC9D,UAAA,CAAY,CAAE,QAAA,CAAU,EAAI,CAAA,CAE3B,QAAA,CAAA,CAAAH,EACDS,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,SAAA,CAAU,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,cAAA,CAAe,OAAA,CAAQ,WAAA,CACjE,QAAA,CAAAA,GAAAA,CAAC,MAAA,CAAA,CAAK,aAAA,CAAc,QAAQ,cAAA,CAAe,OAAA,CAAQ,WAAA,CAAa,CAAA,CAAG,CAAA,CAAE,0BAAA,CAA2B,CAAA,CAClG,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAEJ,CAEA,IAAOE,CAAAA,CAAQhB","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SlideButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant?: \"primary\" | \"secondary\" | \"outline\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n slideText?: string;\r\n}\r\n\r\nexport function SlideButton({\r\n children,\r\n className,\r\n variant = \"primary\",\r\n size = \"md\",\r\n slideText = \"Go!\",\r\n onClick,\r\n ...props\r\n}: SlideButtonProps) {\r\n const [isHovered, setIsHovered] = useState(false);\r\n\r\n const sizeClasses = {\r\n sm: \"px-4 py-2 text-sm\",\r\n md: \"px-6 py-3 text-base\",\r\n lg: \"px-8 py-4 text-lg\"\r\n };\r\n\r\n const variantClasses = {\r\n primary: \"bg-zinc-900 text-white dark:bg-white dark:text-zinc-900\",\r\n secondary: \"bg-zinc-100 text-zinc-900 dark:bg-zinc-800 dark:text-white\",\r\n outline: \"bg-transparent text-zinc-900 border-2 border-zinc-300 dark:text-white dark:border-zinc-600\"\r\n };\r\n\r\n return (\r\n <button\r\n className={cn(\r\n \"relative overflow-hidden rounded-lg font-medium transition-all\",\r\n sizeClasses[size],\r\n variantClasses[variant],\r\n className\r\n )}\r\n onMouseEnter={() => setIsHovered(true)}\r\n onMouseLeave={() => setIsHovered(false)}\r\n onClick={onClick}\r\n {...props}\r\n >\r\n <motion.div\r\n className={cn(\r\n \"absolute inset-0\",\r\n variant === \"primary\" ? \"bg-blue-600 dark:bg-blue-500\" : \"bg-zinc-900 dark:bg-white\"\r\n )}\r\n initial={{ x: \"-100%\" }}\r\n animate={{ x: isHovered ? \"0%\" : \"-100%\" }}\r\n transition={{ duration: 0.3, ease: \"easeInOut\" }}\r\n />\r\n \r\n <motion.span\r\n className=\"relative flex items-center justify-center gap-2 z-10\"\r\n animate={{ x: isHovered ? 20 : 0, opacity: isHovered ? 0 : 1 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n {children}\r\n </motion.span>\r\n \r\n <motion.span\r\n className={cn(\r\n \"absolute inset-0 flex items-center justify-center gap-2 z-10\",\r\n variant === \"outline\" || variant === \"secondary\" ? \"text-white dark:text-zinc-900\" : \"text-white\"\r\n )}\r\n initial={{ x: -20, opacity: 0 }}\r\n animate={{ x: isHovered ? 0 : -20, opacity: isHovered ? 1 : 0 }}\r\n transition={{ duration: 0.2 }}\r\n >\r\n {slideText}\r\n <svg className=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M14 5l7 7m0 0l-7 7m7-7H3\" />\r\n </svg>\r\n </motion.span>\r\n </button>\r\n );\r\n}\r\n\r\nexport default SlideButton;\r\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var framerMotion=require('framer-motion'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function t(...e){return tailwindMerge.twMerge(clsx.clsx(e))}function y({text:e,className:s,delay:r=0,staggerDelay:o=.05}){let l=e.split(""),p={hidden:{opacity:0},visible:{opacity:1,transition:{staggerChildren:o,delayChildren:r}}},c={hidden:{opacity:0,y:20},visible:{opacity:1,y:0,transition:{type:"spring",damping:12,stiffness:200}}};return jsxRuntime.jsx(framerMotion.motion.span,{className:t("inline-flex",s),variants:p,initial:"hidden",animate:"visible",children:l.map((i,m)=>jsxRuntime.jsx(framerMotion.motion.span,{variants:c,className:"inline-block",style:{whiteSpace:i===" "?"pre":"normal"},children:i===" "?"\xA0":i},m))})}var v=y;exports.StaggerText=y;exports.default=v;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/stagger-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","StaggerText","text","className","delay","staggerDelay","letters","container","child","jsx","motion","letter","index","stagger_text_default"],"mappings":"qNAGO,SAASA,CAAAA,CAAAA,GAAMC,EAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCOO,SAASG,CAAAA,CAAY,CAC1B,IAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,EACA,KAAA,CAAAC,CAAAA,CAAQ,CAAA,CACR,YAAA,CAAAC,CAAAA,CAAe,GACjB,CAAA,CAAqB,CACnB,IAAMC,CAAAA,CAAUJ,CAAAA,CAAK,KAAA,CAAM,EAAE,CAAA,CAEvBK,CAAAA,CAAY,CAChB,MAAA,CAAQ,CAAE,OAAA,CAAS,CAAE,CAAA,CACrB,OAAA,CAAS,CACP,OAAA,CAAS,CAAA,CACT,UAAA,CAAY,CACV,eAAA,CAAiBF,CAAAA,CACjB,aAAA,CAAeD,CACjB,CACF,CACF,CAAA,CAEMI,CAAAA,CAAQ,CACZ,MAAA,CAAQ,CAAE,OAAA,CAAS,CAAA,CAAG,CAAA,CAAG,EAAG,CAAA,CAC5B,OAAA,CAAS,CACP,OAAA,CAAS,CAAA,CACT,CAAA,CAAG,CAAA,CACH,UAAA,CAAY,CAAE,IAAA,CAAM,QAAA,CAAU,QAAS,EAAA,CAAI,SAAA,CAAW,GAAI,CAC5D,CACF,CAAA,CAEA,OACEC,cAAAA,CAACC,oBAAO,IAAA,CAAP,CACC,SAAA,CAAWb,CAAAA,CAAG,aAAA,CAAeM,CAAS,CAAA,CACtC,QAAA,CAAUI,EACV,OAAA,CAAQ,QAAA,CACR,OAAA,CAAQ,SAAA,CAEP,QAAA,CAAAD,CAAAA,CAAQ,GAAA,CAAI,CAACK,EAAQC,CAAAA,GACpBH,cAAAA,CAACC,mBAAAA,CAAO,IAAA,CAAP,CAEC,QAAA,CAAUF,CAAAA,CACV,SAAA,CAAU,eACV,KAAA,CAAO,CAAE,UAAA,CAAYG,CAAAA,GAAW,GAAA,CAAM,KAAA,CAAQ,QAAS,CAAA,CAEtD,SAAAA,CAAAA,GAAW,GAAA,CAAM,MAAA,CAAWA,CAAAA,CAAAA,CALxBC,CAMP,CACD,CAAA,CACH,CAEJ,KAEOC,CAAAA,CAAQZ","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface StaggerTextProps {\r\n text: string;\r\n className?: string;\r\n delay?: number;\r\n staggerDelay?: number;\r\n}\r\n\r\nexport function StaggerText({ \r\n text, \r\n className, \r\n delay = 0,\r\n staggerDelay = 0.05 \r\n}: StaggerTextProps) {\r\n const letters = text.split(\"\");\r\n\r\n const container = {\r\n hidden: { opacity: 0 },\r\n visible: {\r\n opacity: 1,\r\n transition: {\r\n staggerChildren: staggerDelay,\r\n delayChildren: delay,\r\n },\r\n },\r\n };\r\n\r\n const child = {\r\n hidden: { opacity: 0, y: 20 },\r\n visible: {\r\n opacity: 1,\r\n y: 0,\r\n transition: { type: \"spring\", damping: 12, stiffness: 200 },\r\n },\r\n };\r\n\r\n return (\r\n <motion.span\r\n className={cn(\"inline-flex\", className)}\r\n variants={container}\r\n initial=\"hidden\"\r\n animate=\"visible\"\r\n >\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={index}\r\n variants={child}\r\n className=\"inline-block\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n >\r\n {letter === \" \" ? \"\\u00A0\" : letter}\r\n </motion.span>\r\n ))}\r\n </motion.span>\r\n );\r\n}\r\n\r\nexport default StaggerText;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {motion}from'framer-motion';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx}from'react/jsx-runtime';function t(...e){return twMerge(clsx(e))}function y({text:e,className:s,delay:r=0,staggerDelay:o=.05}){let l=e.split(""),p={hidden:{opacity:0},visible:{opacity:1,transition:{staggerChildren:o,delayChildren:r}}},c={hidden:{opacity:0,y:20},visible:{opacity:1,y:0,transition:{type:"spring",damping:12,stiffness:200}}};return jsx(motion.span,{className:t("inline-flex",s),variants:p,initial:"hidden",animate:"visible",children:l.map((i,m)=>jsx(motion.span,{variants:c,className:"inline-block",style:{whiteSpace:i===" "?"pre":"normal"},children:i===" "?"\xA0":i},m))})}var v=y;export{y as StaggerText,v as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/stagger-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","StaggerText","text","className","delay","staggerDelay","letters","container","child","jsx","motion","letter","index","stagger_text_default"],"mappings":"oIAGO,SAASA,CAAAA,CAAAA,GAAMC,EAAsB,CAC1C,OAAOC,OAAAA,CAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCOO,SAASG,CAAAA,CAAY,CAC1B,IAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,EACA,KAAA,CAAAC,CAAAA,CAAQ,CAAA,CACR,YAAA,CAAAC,CAAAA,CAAe,GACjB,CAAA,CAAqB,CACnB,IAAMC,CAAAA,CAAUJ,CAAAA,CAAK,KAAA,CAAM,EAAE,CAAA,CAEvBK,CAAAA,CAAY,CAChB,MAAA,CAAQ,CAAE,OAAA,CAAS,CAAE,CAAA,CACrB,OAAA,CAAS,CACP,OAAA,CAAS,CAAA,CACT,UAAA,CAAY,CACV,eAAA,CAAiBF,CAAAA,CACjB,aAAA,CAAeD,CACjB,CACF,CACF,CAAA,CAEMI,CAAAA,CAAQ,CACZ,MAAA,CAAQ,CAAE,OAAA,CAAS,CAAA,CAAG,CAAA,CAAG,EAAG,CAAA,CAC5B,OAAA,CAAS,CACP,OAAA,CAAS,CAAA,CACT,CAAA,CAAG,CAAA,CACH,UAAA,CAAY,CAAE,IAAA,CAAM,QAAA,CAAU,QAAS,EAAA,CAAI,SAAA,CAAW,GAAI,CAC5D,CACF,CAAA,CAEA,OACEC,GAAAA,CAACC,OAAO,IAAA,CAAP,CACC,SAAA,CAAWb,CAAAA,CAAG,aAAA,CAAeM,CAAS,CAAA,CACtC,QAAA,CAAUI,EACV,OAAA,CAAQ,QAAA,CACR,OAAA,CAAQ,SAAA,CAEP,QAAA,CAAAD,CAAAA,CAAQ,GAAA,CAAI,CAACK,EAAQC,CAAAA,GACpBH,GAAAA,CAACC,MAAAA,CAAO,IAAA,CAAP,CAEC,QAAA,CAAUF,CAAAA,CACV,SAAA,CAAU,eACV,KAAA,CAAO,CAAE,UAAA,CAAYG,CAAAA,GAAW,GAAA,CAAM,KAAA,CAAQ,QAAS,CAAA,CAEtD,SAAAA,CAAAA,GAAW,GAAA,CAAM,MAAA,CAAWA,CAAAA,CAAAA,CALxBC,CAMP,CACD,CAAA,CACH,CAEJ,KAEOC,CAAAA,CAAQZ","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface StaggerTextProps {\r\n text: string;\r\n className?: string;\r\n delay?: number;\r\n staggerDelay?: number;\r\n}\r\n\r\nexport function StaggerText({ \r\n text, \r\n className, \r\n delay = 0,\r\n staggerDelay = 0.05 \r\n}: StaggerTextProps) {\r\n const letters = text.split(\"\");\r\n\r\n const container = {\r\n hidden: { opacity: 0 },\r\n visible: {\r\n opacity: 1,\r\n transition: {\r\n staggerChildren: staggerDelay,\r\n delayChildren: delay,\r\n },\r\n },\r\n };\r\n\r\n const child = {\r\n hidden: { opacity: 0, y: 20 },\r\n visible: {\r\n opacity: 1,\r\n y: 0,\r\n transition: { type: \"spring\", damping: 12, stiffness: 200 },\r\n },\r\n };\r\n\r\n return (\r\n <motion.span\r\n className={cn(\"inline-flex\", className)}\r\n variants={container}\r\n initial=\"hidden\"\r\n animate=\"visible\"\r\n >\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={index}\r\n variants={child}\r\n className=\"inline-block\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n >\r\n {letter === \" \" ? \"\\u00A0\" : letter}\r\n </motion.span>\r\n ))}\r\n </motion.span>\r\n );\r\n}\r\n\r\nexport default StaggerText;\r\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var framerMotion=require('framer-motion'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function e(...t){return tailwindMerge.twMerge(clsx.clsx(t))}var u={sm:{track:"w-8 h-4",thumb:"w-3 h-3",translate:16},md:{track:"w-11 h-6",thumb:"w-5 h-5",translate:20},lg:{track:"w-14 h-7",thumb:"w-6 h-6",translate:28}};function p({checked:t=false,onChange:r,disabled:o=false,size:s="md",className:i}){let n=u[s];return jsxRuntime.jsx("button",{type:"button",role:"switch","aria-checked":t,disabled:o,onClick:()=>r?.(!t),className:e("relative inline-flex shrink-0 cursor-pointer rounded-full transition-colors",t?"bg-blue-500":"bg-zinc-300 dark:bg-zinc-700",o&&"opacity-50 cursor-not-allowed",n.track,i),children:jsxRuntime.jsx(framerMotion.motion.span,{className:e("pointer-events-none inline-block rounded-full bg-white shadow-lg",n.thumb),animate:{x:t?n.translate:2},transition:{type:"spring",stiffness:500,damping:30},style:{marginTop:2}})})}var w=p;exports.Switch=p;exports.default=w;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/switch/index.tsx"],"names":["cn","inputs","twMerge","clsx","sizes","Switch","checked","onChange","disabled","size","className","sizeConfig","jsx","motion","switch_default"],"mappings":"qNAGO,SAASA,CAAAA,CAAAA,GAAMC,EAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCQA,IAAMG,CAAAA,CAAQ,CACZ,EAAA,CAAI,CAAE,KAAA,CAAO,SAAA,CAAW,MAAO,SAAA,CAAW,SAAA,CAAW,EAAG,CAAA,CACxD,EAAA,CAAI,CAAE,KAAA,CAAO,UAAA,CAAY,MAAO,SAAA,CAAW,SAAA,CAAW,EAAG,CAAA,CACzD,EAAA,CAAI,CAAE,KAAA,CAAO,UAAA,CAAY,MAAO,SAAA,CAAW,SAAA,CAAW,EAAG,CAC3D,CAAA,CAEO,SAASC,CAAAA,CAAO,CACrB,QAAAC,CAAAA,CAAU,KAAA,CACV,QAAA,CAAAC,CAAAA,CACA,SAAAC,CAAAA,CAAW,KAAA,CACX,IAAA,CAAAC,CAAAA,CAAO,KACP,SAAA,CAAAC,CACF,CAAA,CAAgB,CACd,IAAMC,CAAAA,CAAaP,CAAAA,CAAMK,CAAI,EAE7B,OACEG,cAAAA,CAAC,QAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,IAAA,CAAK,QAAA,CACL,cAAA,CAAcN,EACd,QAAA,CAAUE,CAAAA,CACV,OAAA,CAAS,IAAMD,CAAAA,GAAW,CAACD,CAAO,CAAA,CAClC,UAAWN,CAAAA,CACT,6EAAA,CACAM,CAAAA,CAAU,aAAA,CAAgB,+BAC1BE,CAAAA,EAAY,+BAAA,CACZG,CAAAA,CAAW,KAAA,CACXD,CACF,CAAA,CAEA,QAAA,CAAAE,cAAAA,CAACC,mBAAAA,CAAO,IAAA,CAAP,CACC,SAAA,CAAWb,CAAAA,CACT,mEACAW,CAAAA,CAAW,KACb,CAAA,CACA,OAAA,CAAS,CAAE,CAAA,CAAGL,CAAAA,CAAUK,CAAAA,CAAW,SAAA,CAAY,CAAE,CAAA,CACjD,UAAA,CAAY,CAAE,IAAA,CAAM,QAAA,CAAU,SAAA,CAAW,GAAA,CAAK,OAAA,CAAS,EAAG,CAAA,CAC1D,KAAA,CAAO,CAAE,SAAA,CAAW,CAAE,CAAA,CACxB,CAAA,CACF,CAEJ,KAEOG,CAAAA,CAAQT","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SwitchProps {\r\n checked?: boolean;\r\n onChange?: (checked: boolean) => void;\r\n disabled?: boolean;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n className?: string;\r\n}\r\n\r\nconst sizes = {\r\n sm: { track: \"w-8 h-4\", thumb: \"w-3 h-3\", translate: 16 },\r\n md: { track: \"w-11 h-6\", thumb: \"w-5 h-5\", translate: 20 },\r\n lg: { track: \"w-14 h-7\", thumb: \"w-6 h-6\", translate: 28 },\r\n};\r\n\r\nexport function Switch({ \r\n checked = false, \r\n onChange, \r\n disabled = false,\r\n size = \"md\",\r\n className \r\n}: SwitchProps) {\r\n const sizeConfig = sizes[size];\r\n\r\n return (\r\n <button\r\n type=\"button\"\r\n role=\"switch\"\r\n aria-checked={checked}\r\n disabled={disabled}\r\n onClick={() => onChange?.(!checked)}\r\n className={cn(\r\n \"relative inline-flex shrink-0 cursor-pointer rounded-full transition-colors\",\r\n checked ? \"bg-blue-500\" : \"bg-zinc-300 dark:bg-zinc-700\",\r\n disabled && \"opacity-50 cursor-not-allowed\",\r\n sizeConfig.track,\r\n className\r\n )}\r\n >\r\n <motion.span\r\n className={cn(\r\n \"pointer-events-none inline-block rounded-full bg-white shadow-lg\",\r\n sizeConfig.thumb\r\n )}\r\n animate={{ x: checked ? sizeConfig.translate : 2 }}\r\n transition={{ type: \"spring\", stiffness: 500, damping: 30 }}\r\n style={{ marginTop: 2 }}\r\n />\r\n </button>\r\n );\r\n}\r\n\r\nexport default Switch;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {motion}from'framer-motion';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx}from'react/jsx-runtime';function e(...t){return twMerge(clsx(t))}var u={sm:{track:"w-8 h-4",thumb:"w-3 h-3",translate:16},md:{track:"w-11 h-6",thumb:"w-5 h-5",translate:20},lg:{track:"w-14 h-7",thumb:"w-6 h-6",translate:28}};function p({checked:t=false,onChange:r,disabled:o=false,size:s="md",className:i}){let n=u[s];return jsx("button",{type:"button",role:"switch","aria-checked":t,disabled:o,onClick:()=>r?.(!t),className:e("relative inline-flex shrink-0 cursor-pointer rounded-full transition-colors",t?"bg-blue-500":"bg-zinc-300 dark:bg-zinc-700",o&&"opacity-50 cursor-not-allowed",n.track,i),children:jsx(motion.span,{className:e("pointer-events-none inline-block rounded-full bg-white shadow-lg",n.thumb),animate:{x:t?n.translate:2},transition:{type:"spring",stiffness:500,damping:30},style:{marginTop:2}})})}var w=p;export{p as Switch,w as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/switch/index.tsx"],"names":["cn","inputs","twMerge","clsx","sizes","Switch","checked","onChange","disabled","size","className","sizeConfig","jsx","motion","switch_default"],"mappings":"oIAGO,SAASA,CAAAA,CAAAA,GAAMC,EAAsB,CAC1C,OAAOC,OAAAA,CAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCQA,IAAMG,CAAAA,CAAQ,CACZ,EAAA,CAAI,CAAE,KAAA,CAAO,SAAA,CAAW,MAAO,SAAA,CAAW,SAAA,CAAW,EAAG,CAAA,CACxD,EAAA,CAAI,CAAE,KAAA,CAAO,UAAA,CAAY,MAAO,SAAA,CAAW,SAAA,CAAW,EAAG,CAAA,CACzD,EAAA,CAAI,CAAE,KAAA,CAAO,UAAA,CAAY,MAAO,SAAA,CAAW,SAAA,CAAW,EAAG,CAC3D,CAAA,CAEO,SAASC,CAAAA,CAAO,CACrB,QAAAC,CAAAA,CAAU,KAAA,CACV,QAAA,CAAAC,CAAAA,CACA,SAAAC,CAAAA,CAAW,KAAA,CACX,IAAA,CAAAC,CAAAA,CAAO,KACP,SAAA,CAAAC,CACF,CAAA,CAAgB,CACd,IAAMC,CAAAA,CAAaP,CAAAA,CAAMK,CAAI,EAE7B,OACEG,GAAAA,CAAC,QAAA,CAAA,CACC,IAAA,CAAK,QAAA,CACL,IAAA,CAAK,QAAA,CACL,cAAA,CAAcN,EACd,QAAA,CAAUE,CAAAA,CACV,OAAA,CAAS,IAAMD,CAAAA,GAAW,CAACD,CAAO,CAAA,CAClC,UAAWN,CAAAA,CACT,6EAAA,CACAM,CAAAA,CAAU,aAAA,CAAgB,+BAC1BE,CAAAA,EAAY,+BAAA,CACZG,CAAAA,CAAW,KAAA,CACXD,CACF,CAAA,CAEA,QAAA,CAAAE,GAAAA,CAACC,MAAAA,CAAO,IAAA,CAAP,CACC,SAAA,CAAWb,CAAAA,CACT,mEACAW,CAAAA,CAAW,KACb,CAAA,CACA,OAAA,CAAS,CAAE,CAAA,CAAGL,CAAAA,CAAUK,CAAAA,CAAW,SAAA,CAAY,CAAE,CAAA,CACjD,UAAA,CAAY,CAAE,IAAA,CAAM,QAAA,CAAU,SAAA,CAAW,GAAA,CAAK,OAAA,CAAS,EAAG,CAAA,CAC1D,KAAA,CAAO,CAAE,SAAA,CAAW,CAAE,CAAA,CACxB,CAAA,CACF,CAEJ,KAEOG,CAAAA,CAAQT","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SwitchProps {\r\n checked?: boolean;\r\n onChange?: (checked: boolean) => void;\r\n disabled?: boolean;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n className?: string;\r\n}\r\n\r\nconst sizes = {\r\n sm: { track: \"w-8 h-4\", thumb: \"w-3 h-3\", translate: 16 },\r\n md: { track: \"w-11 h-6\", thumb: \"w-5 h-5\", translate: 20 },\r\n lg: { track: \"w-14 h-7\", thumb: \"w-6 h-6\", translate: 28 },\r\n};\r\n\r\nexport function Switch({ \r\n checked = false, \r\n onChange, \r\n disabled = false,\r\n size = \"md\",\r\n className \r\n}: SwitchProps) {\r\n const sizeConfig = sizes[size];\r\n\r\n return (\r\n <button\r\n type=\"button\"\r\n role=\"switch\"\r\n aria-checked={checked}\r\n disabled={disabled}\r\n onClick={() => onChange?.(!checked)}\r\n className={cn(\r\n \"relative inline-flex shrink-0 cursor-pointer rounded-full transition-colors\",\r\n checked ? \"bg-blue-500\" : \"bg-zinc-300 dark:bg-zinc-700\",\r\n disabled && \"opacity-50 cursor-not-allowed\",\r\n sizeConfig.track,\r\n className\r\n )}\r\n >\r\n <motion.span\r\n className={cn(\r\n \"pointer-events-none inline-block rounded-full bg-white shadow-lg\",\r\n sizeConfig.thumb\r\n )}\r\n animate={{ x: checked ? sizeConfig.translate : 2 }}\r\n transition={{ type: \"spring\", stiffness: 500, damping: 30 }}\r\n style={{ marginTop: 2 }}\r\n />\r\n </button>\r\n );\r\n}\r\n\r\nexport default Switch;\r\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var framerMotion=require('framer-motion'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function n(...i){return tailwindMerge.twMerge(clsx.clsx(i))}function y({text:i,className:s,delay:a=0}){let r=i.split(""),l={hidden:{opacity:0},visible:{opacity:1,transition:{staggerChildren:.03,delayChildren:a}}},p={hidden:{opacity:0,x:-20,y:10,rotate:-10},visible:{opacity:1,x:0,y:0,rotate:0,transition:{type:"spring",damping:12,stiffness:200}}};return jsxRuntime.jsx(framerMotion.motion.span,{className:n("inline-flex",s),variants:l,initial:"hidden",animate:"visible",children:r.map((t,c)=>jsxRuntime.jsx(framerMotion.motion.span,{variants:p,className:"inline-block",style:{whiteSpace:t===" "?"pre":"normal"},children:t===" "?"\xA0":t},c))})}var b=y;exports.SwooshText=y;exports.default=b;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/swoosh-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","SwooshText","text","className","delay","letters","container","child","jsx","motion","letter","index","swoosh_text_default"],"mappings":"qNAGO,SAASA,CAAAA,CAAAA,GAAMC,EAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCMO,SAASG,CAAAA,CAAW,CAAE,IAAA,CAAAC,CAAAA,CAAM,SAAA,CAAAC,CAAAA,CAAW,MAAAC,CAAAA,CAAQ,CAAE,CAAA,CAAoB,CAC1E,IAAMC,CAAAA,CAAUH,CAAAA,CAAK,KAAA,CAAM,EAAE,CAAA,CAEvBI,CAAAA,CAAY,CAChB,MAAA,CAAQ,CAAE,OAAA,CAAS,CAAE,CAAA,CACrB,OAAA,CAAS,CACP,OAAA,CAAS,CAAA,CACT,UAAA,CAAY,CAAE,eAAA,CAAiB,GAAA,CAAM,aAAA,CAAeF,CAAM,CAC5D,CACF,CAAA,CAEMG,CAAAA,CAAQ,CACZ,OAAQ,CACN,OAAA,CAAS,CAAA,CACT,CAAA,CAAG,IACH,CAAA,CAAG,EAAA,CACH,MAAA,CAAQ,GACV,CAAA,CACA,OAAA,CAAS,CACP,OAAA,CAAS,EACT,CAAA,CAAG,CAAA,CACH,CAAA,CAAG,CAAA,CACH,MAAA,CAAQ,CAAA,CACR,UAAA,CAAY,CACV,KAAM,QAAA,CACN,OAAA,CAAS,EAAA,CACT,SAAA,CAAW,GACb,CACF,CACF,CAAA,CAEA,OACEC,cAAAA,CAACC,mBAAAA,CAAO,IAAA,CAAP,CACC,UAAWZ,CAAAA,CAAG,aAAA,CAAeM,CAAS,CAAA,CACtC,SAAUG,CAAAA,CACV,OAAA,CAAQ,QAAA,CACR,OAAA,CAAQ,SAAA,CAEP,QAAA,CAAAD,CAAAA,CAAQ,GAAA,CAAI,CAACK,CAAAA,CAAQC,CAAAA,GACpBH,cAAAA,CAACC,mBAAAA,CAAO,KAAP,CAEC,QAAA,CAAUF,CAAAA,CACV,SAAA,CAAU,eACV,KAAA,CAAO,CAAE,UAAA,CAAYG,CAAAA,GAAW,GAAA,CAAM,KAAA,CAAQ,QAAS,CAAA,CAEtD,SAAAA,CAAAA,GAAW,GAAA,CAAM,MAAA,CAAWA,CAAAA,CAAAA,CALxBC,CAMP,CACD,CAAA,CACH,CAEJ,KAEOC,CAAAA,CAAQX","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SwooshTextProps {\r\n text: string;\r\n className?: string;\r\n delay?: number;\r\n}\r\n\r\nexport function SwooshText({ text, className, delay = 0 }: SwooshTextProps) {\r\n const letters = text.split(\"\");\r\n\r\n const container = {\r\n hidden: { opacity: 0 },\r\n visible: {\r\n opacity: 1,\r\n transition: { staggerChildren: 0.03, delayChildren: delay },\r\n },\r\n };\r\n\r\n const child = {\r\n hidden: {\r\n opacity: 0,\r\n x: -20,\r\n y: 10,\r\n rotate: -10,\r\n },\r\n visible: {\r\n opacity: 1,\r\n x: 0,\r\n y: 0,\r\n rotate: 0,\r\n transition: {\r\n type: \"spring\",\r\n damping: 12,\r\n stiffness: 200,\r\n },\r\n },\r\n };\r\n\r\n return (\r\n <motion.span\r\n className={cn(\"inline-flex\", className)}\r\n variants={container}\r\n initial=\"hidden\"\r\n animate=\"visible\"\r\n >\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={index}\r\n variants={child}\r\n className=\"inline-block\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n >\r\n {letter === \" \" ? \"\\u00A0\" : letter}\r\n </motion.span>\r\n ))}\r\n </motion.span>\r\n );\r\n}\r\n\r\nexport default SwooshText;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {motion}from'framer-motion';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx}from'react/jsx-runtime';function n(...i){return twMerge(clsx(i))}function y({text:i,className:s,delay:a=0}){let r=i.split(""),l={hidden:{opacity:0},visible:{opacity:1,transition:{staggerChildren:.03,delayChildren:a}}},p={hidden:{opacity:0,x:-20,y:10,rotate:-10},visible:{opacity:1,x:0,y:0,rotate:0,transition:{type:"spring",damping:12,stiffness:200}}};return jsx(motion.span,{className:n("inline-flex",s),variants:l,initial:"hidden",animate:"visible",children:r.map((t,c)=>jsx(motion.span,{variants:p,className:"inline-block",style:{whiteSpace:t===" "?"pre":"normal"},children:t===" "?"\xA0":t},c))})}var b=y;export{y as SwooshText,b as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/swoosh-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","SwooshText","text","className","delay","letters","container","child","jsx","motion","letter","index","swoosh_text_default"],"mappings":"oIAGO,SAASA,CAAAA,CAAAA,GAAMC,EAAsB,CAC1C,OAAOC,OAAAA,CAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCMO,SAASG,CAAAA,CAAW,CAAE,IAAA,CAAAC,CAAAA,CAAM,SAAA,CAAAC,CAAAA,CAAW,MAAAC,CAAAA,CAAQ,CAAE,CAAA,CAAoB,CAC1E,IAAMC,CAAAA,CAAUH,CAAAA,CAAK,KAAA,CAAM,EAAE,CAAA,CAEvBI,CAAAA,CAAY,CAChB,MAAA,CAAQ,CAAE,OAAA,CAAS,CAAE,CAAA,CACrB,OAAA,CAAS,CACP,OAAA,CAAS,CAAA,CACT,UAAA,CAAY,CAAE,eAAA,CAAiB,GAAA,CAAM,aAAA,CAAeF,CAAM,CAC5D,CACF,CAAA,CAEMG,CAAAA,CAAQ,CACZ,OAAQ,CACN,OAAA,CAAS,CAAA,CACT,CAAA,CAAG,IACH,CAAA,CAAG,EAAA,CACH,MAAA,CAAQ,GACV,CAAA,CACA,OAAA,CAAS,CACP,OAAA,CAAS,EACT,CAAA,CAAG,CAAA,CACH,CAAA,CAAG,CAAA,CACH,MAAA,CAAQ,CAAA,CACR,UAAA,CAAY,CACV,KAAM,QAAA,CACN,OAAA,CAAS,EAAA,CACT,SAAA,CAAW,GACb,CACF,CACF,CAAA,CAEA,OACEC,GAAAA,CAACC,MAAAA,CAAO,IAAA,CAAP,CACC,UAAWZ,CAAAA,CAAG,aAAA,CAAeM,CAAS,CAAA,CACtC,SAAUG,CAAAA,CACV,OAAA,CAAQ,QAAA,CACR,OAAA,CAAQ,SAAA,CAEP,QAAA,CAAAD,CAAAA,CAAQ,GAAA,CAAI,CAACK,CAAAA,CAAQC,CAAAA,GACpBH,GAAAA,CAACC,MAAAA,CAAO,KAAP,CAEC,QAAA,CAAUF,CAAAA,CACV,SAAA,CAAU,eACV,KAAA,CAAO,CAAE,UAAA,CAAYG,CAAAA,GAAW,GAAA,CAAM,KAAA,CAAQ,QAAS,CAAA,CAEtD,SAAAA,CAAAA,GAAW,GAAA,CAAM,MAAA,CAAWA,CAAAA,CAAAA,CALxBC,CAMP,CACD,CAAA,CACH,CAEJ,KAEOC,CAAAA,CAAQX","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface SwooshTextProps {\r\n text: string;\r\n className?: string;\r\n delay?: number;\r\n}\r\n\r\nexport function SwooshText({ text, className, delay = 0 }: SwooshTextProps) {\r\n const letters = text.split(\"\");\r\n\r\n const container = {\r\n hidden: { opacity: 0 },\r\n visible: {\r\n opacity: 1,\r\n transition: { staggerChildren: 0.03, delayChildren: delay },\r\n },\r\n };\r\n\r\n const child = {\r\n hidden: {\r\n opacity: 0,\r\n x: -20,\r\n y: 10,\r\n rotate: -10,\r\n },\r\n visible: {\r\n opacity: 1,\r\n x: 0,\r\n y: 0,\r\n rotate: 0,\r\n transition: {\r\n type: \"spring\",\r\n damping: 12,\r\n stiffness: 200,\r\n },\r\n },\r\n };\r\n\r\n return (\r\n <motion.span\r\n className={cn(\"inline-flex\", className)}\r\n variants={container}\r\n initial=\"hidden\"\r\n animate=\"visible\"\r\n >\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={index}\r\n variants={child}\r\n className=\"inline-block\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n >\r\n {letter === \" \" ? \"\\u00A0\" : letter}\r\n </motion.span>\r\n ))}\r\n </motion.span>\r\n );\r\n}\r\n\r\nexport default SwooshText;\r\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var framerMotion=require('framer-motion'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function t(...e){return tailwindMerge.twMerge(clsx.clsx(e))}var p={primary:{bg:"bg-blue-500",shadow:"shadow-blue-700",hover:"hover:bg-blue-600"},secondary:{bg:"bg-zinc-700",shadow:"shadow-zinc-900",hover:"hover:bg-zinc-800"},danger:{bg:"bg-red-500",shadow:"shadow-red-700",hover:"hover:bg-red-600"}},l={sm:"px-4 py-2 text-sm",md:"px-6 py-3 text-base",lg:"px-8 py-4 text-lg"};function m({children:e,className:r,variant:n="primary",size:s="md",...a}){let o=p[n];return jsxRuntime.jsx(framerMotion.motion.button,{className:t("relative rounded-lg font-semibold text-white","shadow-[0_6px_0_0]",o.bg,o.shadow,o.hover,l[s],r),whileHover:{y:-2},whileTap:{y:4,boxShadow:"0 2px 0 0"},transition:{duration:.1},...a,children:e})}var v=m;exports.ThreeDButton=m;exports.default=v;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/threed-button/index.tsx"],"names":["cn","inputs","twMerge","clsx","variants","sizes","ThreeDButton","children","className","variant","size","props","colors","jsx","motion","threed_button_default"],"mappings":"qNAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCKA,IAAMG,CAAAA,CAAW,CACf,QAAS,CACP,EAAA,CAAI,aAAA,CACJ,MAAA,CAAQ,iBAAA,CACR,KAAA,CAAO,mBACT,CAAA,CACA,SAAA,CAAW,CACT,EAAA,CAAI,aAAA,CACJ,MAAA,CAAQ,iBAAA,CACR,KAAA,CAAO,mBACT,EACA,MAAA,CAAQ,CACN,EAAA,CAAI,YAAA,CACJ,MAAA,CAAQ,gBAAA,CACR,KAAA,CAAO,kBACT,CACF,CAAA,CAEMC,CAAAA,CAAQ,CACZ,EAAA,CAAI,mBAAA,CACJ,EAAA,CAAI,qBAAA,CACJ,GAAI,mBACN,CAAA,CAEO,SAASC,CAAAA,CAAa,CAC3B,QAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CAAU,SAAA,CACV,IAAA,CAAAC,CAAAA,CAAO,IAAA,CACP,GAAGC,CACL,CAAA,CAAsB,CACpB,IAAMC,CAAAA,CAASR,CAAAA,CAASK,CAAO,CAAA,CAE/B,OACEI,cAAAA,CAACC,mBAAAA,CAAO,MAAA,CAAP,CACC,SAAA,CAAWd,CAAAA,CACT,8CAAA,CACA,oBAAA,CACAY,EAAO,EAAA,CACPA,CAAAA,CAAO,MAAA,CACPA,CAAAA,CAAO,KAAA,CACPP,CAAAA,CAAMK,CAAI,CAAA,CACVF,CACF,CAAA,CACA,UAAA,CAAY,CAAE,CAAA,CAAG,EAAG,CAAA,CACpB,QAAA,CAAU,CAAE,CAAA,CAAG,CAAA,CAAG,SAAA,CAAW,WAAY,CAAA,CACzC,UAAA,CAAY,CAAE,QAAA,CAAU,EAAI,CAAA,CAC3B,GAAGG,CAAAA,CAEH,QAAA,CAAAJ,CAAAA,CACH,CAEJ,KAEOQ,CAAAA,CAAQT","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ThreeDButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant?: \"primary\" | \"secondary\" | \"danger\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nconst variants = {\r\n primary: {\r\n bg: \"bg-blue-500\",\r\n shadow: \"shadow-blue-700\",\r\n hover: \"hover:bg-blue-600\",\r\n },\r\n secondary: {\r\n bg: \"bg-zinc-700\",\r\n shadow: \"shadow-zinc-900\",\r\n hover: \"hover:bg-zinc-800\",\r\n },\r\n danger: {\r\n bg: \"bg-red-500\",\r\n shadow: \"shadow-red-700\",\r\n hover: \"hover:bg-red-600\",\r\n },\r\n};\r\n\r\nconst sizes = {\r\n sm: \"px-4 py-2 text-sm\",\r\n md: \"px-6 py-3 text-base\",\r\n lg: \"px-8 py-4 text-lg\",\r\n};\r\n\r\nexport function ThreeDButton({\r\n children,\r\n className,\r\n variant = \"primary\",\r\n size = \"md\",\r\n ...props\r\n}: ThreeDButtonProps) {\r\n const colors = variants[variant];\r\n\r\n return (\r\n <motion.button\r\n className={cn(\r\n \"relative rounded-lg font-semibold text-white\",\r\n \"shadow-[0_6px_0_0]\",\r\n colors.bg,\r\n colors.shadow,\r\n colors.hover,\r\n sizes[size],\r\n className\r\n )}\r\n whileHover={{ y: -2 }}\r\n whileTap={{ y: 4, boxShadow: \"0 2px 0 0\" }}\r\n transition={{ duration: 0.1 }}\r\n {...props}\r\n >\r\n {children}\r\n </motion.button>\r\n );\r\n}\r\n\r\nexport default ThreeDButton;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {motion}from'framer-motion';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx}from'react/jsx-runtime';function t(...e){return twMerge(clsx(e))}var p={primary:{bg:"bg-blue-500",shadow:"shadow-blue-700",hover:"hover:bg-blue-600"},secondary:{bg:"bg-zinc-700",shadow:"shadow-zinc-900",hover:"hover:bg-zinc-800"},danger:{bg:"bg-red-500",shadow:"shadow-red-700",hover:"hover:bg-red-600"}},l={sm:"px-4 py-2 text-sm",md:"px-6 py-3 text-base",lg:"px-8 py-4 text-lg"};function m({children:e,className:r,variant:n="primary",size:s="md",...a}){let o=p[n];return jsx(motion.button,{className:t("relative rounded-lg font-semibold text-white","shadow-[0_6px_0_0]",o.bg,o.shadow,o.hover,l[s],r),whileHover:{y:-2},whileTap:{y:4,boxShadow:"0 2px 0 0"},transition:{duration:.1},...a,children:e})}var v=m;export{m as ThreeDButton,v as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map