bynana-ui 1.0.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 (86) hide show
  1. package/README.md +134 -0
  2. package/dist/animated-list/index.js +2 -0
  3. package/dist/animated-list/index.js.map +1 -0
  4. package/dist/animated-list/index.mjs +2 -0
  5. package/dist/animated-list/index.mjs.map +1 -0
  6. package/dist/blur-text/index.js +2 -0
  7. package/dist/blur-text/index.js.map +1 -0
  8. package/dist/blur-text/index.mjs +2 -0
  9. package/dist/blur-text/index.mjs.map +1 -0
  10. package/dist/bounce-button/index.js +2 -0
  11. package/dist/bounce-button/index.js.map +1 -0
  12. package/dist/bounce-button/index.mjs +2 -0
  13. package/dist/bounce-button/index.mjs.map +1 -0
  14. package/dist/bounce-text/index.js +2 -0
  15. package/dist/bounce-text/index.js.map +1 -0
  16. package/dist/bounce-text/index.mjs +2 -0
  17. package/dist/bounce-text/index.mjs.map +1 -0
  18. package/dist/card-flip/index.js +2 -0
  19. package/dist/card-flip/index.js.map +1 -0
  20. package/dist/card-flip/index.mjs +2 -0
  21. package/dist/card-flip/index.mjs.map +1 -0
  22. package/dist/flip-text/index.js +2 -0
  23. package/dist/flip-text/index.js.map +1 -0
  24. package/dist/flip-text/index.mjs +2 -0
  25. package/dist/flip-text/index.mjs.map +1 -0
  26. package/dist/glass-card/index.js +2 -0
  27. package/dist/glass-card/index.js.map +1 -0
  28. package/dist/glass-card/index.mjs +2 -0
  29. package/dist/glass-card/index.mjs.map +1 -0
  30. package/dist/glitch-text/index.js +2 -0
  31. package/dist/glitch-text/index.js.map +1 -0
  32. package/dist/glitch-text/index.mjs +2 -0
  33. package/dist/glitch-text/index.mjs.map +1 -0
  34. package/dist/glow-button/index.js +2 -0
  35. package/dist/glow-button/index.js.map +1 -0
  36. package/dist/glow-button/index.mjs +2 -0
  37. package/dist/glow-button/index.mjs.map +1 -0
  38. package/dist/gradient-text/index.js +2 -0
  39. package/dist/gradient-text/index.js.map +1 -0
  40. package/dist/gradient-text/index.mjs +2 -0
  41. package/dist/gradient-text/index.mjs.map +1 -0
  42. package/dist/hover-card/index.js +2 -0
  43. package/dist/hover-card/index.js.map +1 -0
  44. package/dist/hover-card/index.mjs +2 -0
  45. package/dist/hover-card/index.mjs.map +1 -0
  46. package/dist/index.js +2 -0
  47. package/dist/index.js.map +1 -0
  48. package/dist/index.mjs +2 -0
  49. package/dist/index.mjs.map +1 -0
  50. package/dist/loading-dots/index.js +2 -0
  51. package/dist/loading-dots/index.js.map +1 -0
  52. package/dist/loading-dots/index.mjs +2 -0
  53. package/dist/loading-dots/index.mjs.map +1 -0
  54. package/dist/loading-spinner/index.js +2 -0
  55. package/dist/loading-spinner/index.js.map +1 -0
  56. package/dist/loading-spinner/index.mjs +2 -0
  57. package/dist/loading-spinner/index.mjs.map +1 -0
  58. package/dist/magnetic-button/index.js +2 -0
  59. package/dist/magnetic-button/index.js.map +1 -0
  60. package/dist/magnetic-button/index.mjs +2 -0
  61. package/dist/magnetic-button/index.mjs.map +1 -0
  62. package/dist/pulse-button/index.js +2 -0
  63. package/dist/pulse-button/index.js.map +1 -0
  64. package/dist/pulse-button/index.mjs +2 -0
  65. package/dist/pulse-button/index.mjs.map +1 -0
  66. package/dist/ripple-button/index.js +2 -0
  67. package/dist/ripple-button/index.js.map +1 -0
  68. package/dist/ripple-button/index.mjs +2 -0
  69. package/dist/ripple-button/index.mjs.map +1 -0
  70. package/dist/shimmer-text/index.js +2 -0
  71. package/dist/shimmer-text/index.js.map +1 -0
  72. package/dist/shimmer-text/index.mjs +2 -0
  73. package/dist/shimmer-text/index.mjs.map +1 -0
  74. package/dist/shine-button/index.js +2 -0
  75. package/dist/shine-button/index.js.map +1 -0
  76. package/dist/shine-button/index.mjs +2 -0
  77. package/dist/shine-button/index.mjs.map +1 -0
  78. package/dist/typewriter/index.js +2 -0
  79. package/dist/typewriter/index.js.map +1 -0
  80. package/dist/typewriter/index.mjs +2 -0
  81. package/dist/typewriter/index.mjs.map +1 -0
  82. package/dist/wave-text/index.js +2 -0
  83. package/dist/wave-text/index.js.map +1 -0
  84. package/dist/wave-text/index.mjs +2 -0
  85. package/dist/wave-text/index.mjs.map +1 -0
  86. package/package.json +162 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/typewriter/index.tsx"],"names":["cn","inputs","twMerge","clsx","Typewriter","text","className","speed","delay","cursor","loop","displayText","setDisplayText","useState","isTyping","setIsTyping","useEffect","timeout","i","isDeleting","type","jsxs","jsx","typewriter_default"],"mappings":"sMAGO,SAASA,CAAAA,CAAAA,GAAMC,EAAsB,CAC1C,OAAOC,sBAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCSO,SAASG,CAAAA,CAAW,CACzB,IAAA,CAAAC,CAAAA,CAAO,cACP,SAAA,CAAAC,CAAAA,CACA,MAAAC,CAAAA,CAAQ,EAAA,CACR,MAAAC,CAAAA,CAAQ,CAAA,CACR,MAAA,CAAAC,CAAAA,CAAS,KACT,IAAA,CAAAC,CAAAA,CAAO,KACT,CAAA,CAAoB,CAClB,GAAM,CAACC,CAAAA,CAAaC,CAAc,CAAA,CAAIC,cAAAA,CAAS,EAAE,CAAA,CAC3C,CAACC,EAAUC,CAAW,CAAA,CAAIF,eAAS,KAAK,CAAA,CAE9C,OAAAG,eAAAA,CAAU,IAAM,CACd,IAAIC,CAAAA,CACAC,EAAI,CAAA,CACJC,CAAAA,CAAa,MAEXC,CAAAA,CAAO,IAAM,CACjBL,CAAAA,CAAY,IAAI,EAEXI,CAAAA,CAeCD,CAAAA,CAAI,GACNN,CAAAA,CAAeP,CAAAA,CAAK,MAAM,CAAA,CAAGa,CAAAA,CAAI,CAAC,CAAC,EACnCA,CAAAA,EAAAA,CACAD,CAAAA,CAAU,WAAWG,CAAAA,CAAMb,CAAAA,CAAQ,CAAC,CAAA,GAEpCY,CAAAA,CAAa,MACbF,CAAAA,CAAU,UAAA,CAAWG,EAAM,GAAG,CAAA,CAAA,CApB5BF,EAAIb,CAAAA,CAAK,MAAA,EACXO,EAAeP,CAAAA,CAAK,KAAA,CAAM,CAAA,CAAGa,CAAAA,CAAI,CAAC,CAAC,CAAA,CACnCA,IACAD,CAAAA,CAAU,UAAA,CAAWG,EAAMb,CAAK,CAAA,GAEhCQ,EAAY,KAAK,CAAA,CACbL,IACFO,CAAAA,CAAU,UAAA,CAAW,IAAM,CACzBE,CAAAA,CAAa,KACbC,CAAAA,GACF,CAAA,CAAG,GAAI,IAaf,CAAA,CAEA,OAAAH,EAAU,UAAA,CAAWG,CAAAA,CAAMZ,CAAK,CAAA,CAEzB,IAAM,aAAaS,CAAO,CACnC,EAAG,CAACZ,CAAAA,CAAME,EAAOC,CAAAA,CAAOE,CAAI,CAAC,CAAA,CAG3BW,eAAAA,CAAC,QAAK,SAAA,CAAWrB,CAAAA,CAAG,yBAA0BM,CAAS,CAAA,CACpD,UAAAK,CAAAA,CACAF,CAAAA,EACCa,eAAC,MAAA,CAAA,CACC,SAAA,CAAWtB,EACT,gDAAA,CACAc,CAAAA,CAAW,gBAAkB,EAC/B,CAAA,CACF,GAEJ,CAEJ,KAEOS,CAAAA,CAAQnB","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 React, { useEffect, useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TypewriterProps {\r\n text?: string;\r\n className?: string;\r\n speed?: number;\r\n delay?: number;\r\n cursor?: boolean;\r\n loop?: boolean;\r\n}\r\n\r\nexport function Typewriter({\r\n text = \"Hello World\",\r\n className,\r\n speed = 50,\r\n delay = 0,\r\n cursor = true,\r\n loop = false,\r\n}: TypewriterProps) {\r\n const [displayText, setDisplayText] = useState(\"\");\r\n const [isTyping, setIsTyping] = useState(false);\r\n\r\n useEffect(() => {\r\n let timeout: NodeJS.Timeout;\r\n let i = 0;\r\n let isDeleting = false;\r\n\r\n const type = () => {\r\n setIsTyping(true);\r\n\r\n if (!isDeleting) {\r\n if (i < text.length) {\r\n setDisplayText(text.slice(0, i + 1));\r\n i++;\r\n timeout = setTimeout(type, speed);\r\n } else {\r\n setIsTyping(false);\r\n if (loop) {\r\n timeout = setTimeout(() => {\r\n isDeleting = true;\r\n type();\r\n }, 2000);\r\n }\r\n }\r\n } else {\r\n if (i > 0) {\r\n setDisplayText(text.slice(0, i - 1));\r\n i--;\r\n timeout = setTimeout(type, speed / 2);\r\n } else {\r\n isDeleting = false;\r\n timeout = setTimeout(type, 500);\r\n }\r\n }\r\n };\r\n\r\n timeout = setTimeout(type, delay);\r\n\r\n return () => clearTimeout(timeout);\r\n }, [text, speed, delay, loop]);\r\n\r\n return (\r\n <span className={cn(\"inline-block font-mono\", className)}>\r\n {displayText}\r\n {cursor && (\r\n <span\r\n className={cn(\r\n \"ml-0.5 inline-block w-[2px] h-[1em] bg-current\",\r\n isTyping ? \"animate-blink\" : \"\"\r\n )}\r\n />\r\n )}\r\n </span>\r\n );\r\n}\r\n\r\nexport default Typewriter;\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {useState,useEffect}from'react';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsxs,jsx}from'react/jsx-runtime';function r(...e){return twMerge(clsx(e))}function x({text:e="Hello World",className:p,speed:l=50,delay:n=0,cursor:f=true,loop:a=false}){let[T,u]=useState(""),[y,m]=useState(false);return useEffect(()=>{let t,s=0,o=false,i=()=>{m(true),o?s>0?(u(e.slice(0,s-1)),s--,t=setTimeout(i,l/2)):(o=false,t=setTimeout(i,500)):s<e.length?(u(e.slice(0,s+1)),s++,t=setTimeout(i,l)):(m(false),a&&(t=setTimeout(()=>{o=true,i();},2e3)));};return t=setTimeout(i,n),()=>clearTimeout(t)},[e,l,n,a]),jsxs("span",{className:r("inline-block font-mono",p),children:[T,f&&jsx("span",{className:r("ml-0.5 inline-block w-[2px] h-[1em] bg-current",y?"animate-blink":"")})]})}var V=x;export{x as Typewriter,V as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/typewriter/index.tsx"],"names":["cn","inputs","twMerge","clsx","Typewriter","text","className","speed","delay","cursor","loop","displayText","setDisplayText","useState","isTyping","setIsTyping","useEffect","timeout","i","isDeleting","type","jsxs","jsx","typewriter_default"],"mappings":"6IAGO,SAASA,CAAAA,CAAAA,GAAMC,EAAsB,CAC1C,OAAOC,QAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCSO,SAASG,CAAAA,CAAW,CACzB,IAAA,CAAAC,CAAAA,CAAO,cACP,SAAA,CAAAC,CAAAA,CACA,MAAAC,CAAAA,CAAQ,EAAA,CACR,MAAAC,CAAAA,CAAQ,CAAA,CACR,MAAA,CAAAC,CAAAA,CAAS,KACT,IAAA,CAAAC,CAAAA,CAAO,KACT,CAAA,CAAoB,CAClB,GAAM,CAACC,CAAAA,CAAaC,CAAc,CAAA,CAAIC,QAAAA,CAAS,EAAE,CAAA,CAC3C,CAACC,EAAUC,CAAW,CAAA,CAAIF,SAAS,KAAK,CAAA,CAE9C,OAAAG,SAAAA,CAAU,IAAM,CACd,IAAIC,CAAAA,CACAC,EAAI,CAAA,CACJC,CAAAA,CAAa,MAEXC,CAAAA,CAAO,IAAM,CACjBL,CAAAA,CAAY,IAAI,EAEXI,CAAAA,CAeCD,CAAAA,CAAI,GACNN,CAAAA,CAAeP,CAAAA,CAAK,MAAM,CAAA,CAAGa,CAAAA,CAAI,CAAC,CAAC,EACnCA,CAAAA,EAAAA,CACAD,CAAAA,CAAU,WAAWG,CAAAA,CAAMb,CAAAA,CAAQ,CAAC,CAAA,GAEpCY,CAAAA,CAAa,MACbF,CAAAA,CAAU,UAAA,CAAWG,EAAM,GAAG,CAAA,CAAA,CApB5BF,EAAIb,CAAAA,CAAK,MAAA,EACXO,EAAeP,CAAAA,CAAK,KAAA,CAAM,CAAA,CAAGa,CAAAA,CAAI,CAAC,CAAC,CAAA,CACnCA,IACAD,CAAAA,CAAU,UAAA,CAAWG,EAAMb,CAAK,CAAA,GAEhCQ,EAAY,KAAK,CAAA,CACbL,IACFO,CAAAA,CAAU,UAAA,CAAW,IAAM,CACzBE,CAAAA,CAAa,KACbC,CAAAA,GACF,CAAA,CAAG,GAAI,IAaf,CAAA,CAEA,OAAAH,EAAU,UAAA,CAAWG,CAAAA,CAAMZ,CAAK,CAAA,CAEzB,IAAM,aAAaS,CAAO,CACnC,EAAG,CAACZ,CAAAA,CAAME,EAAOC,CAAAA,CAAOE,CAAI,CAAC,CAAA,CAG3BW,IAAAA,CAAC,QAAK,SAAA,CAAWrB,CAAAA,CAAG,yBAA0BM,CAAS,CAAA,CACpD,UAAAK,CAAAA,CACAF,CAAAA,EACCa,IAAC,MAAA,CAAA,CACC,SAAA,CAAWtB,EACT,gDAAA,CACAc,CAAAA,CAAW,gBAAkB,EAC/B,CAAA,CACF,GAEJ,CAEJ,KAEOS,CAAAA,CAAQnB","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 React, { useEffect, useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface TypewriterProps {\r\n text?: string;\r\n className?: string;\r\n speed?: number;\r\n delay?: number;\r\n cursor?: boolean;\r\n loop?: boolean;\r\n}\r\n\r\nexport function Typewriter({\r\n text = \"Hello World\",\r\n className,\r\n speed = 50,\r\n delay = 0,\r\n cursor = true,\r\n loop = false,\r\n}: TypewriterProps) {\r\n const [displayText, setDisplayText] = useState(\"\");\r\n const [isTyping, setIsTyping] = useState(false);\r\n\r\n useEffect(() => {\r\n let timeout: NodeJS.Timeout;\r\n let i = 0;\r\n let isDeleting = false;\r\n\r\n const type = () => {\r\n setIsTyping(true);\r\n\r\n if (!isDeleting) {\r\n if (i < text.length) {\r\n setDisplayText(text.slice(0, i + 1));\r\n i++;\r\n timeout = setTimeout(type, speed);\r\n } else {\r\n setIsTyping(false);\r\n if (loop) {\r\n timeout = setTimeout(() => {\r\n isDeleting = true;\r\n type();\r\n }, 2000);\r\n }\r\n }\r\n } else {\r\n if (i > 0) {\r\n setDisplayText(text.slice(0, i - 1));\r\n i--;\r\n timeout = setTimeout(type, speed / 2);\r\n } else {\r\n isDeleting = false;\r\n timeout = setTimeout(type, 500);\r\n }\r\n }\r\n };\r\n\r\n timeout = setTimeout(type, delay);\r\n\r\n return () => clearTimeout(timeout);\r\n }, [text, speed, delay, loop]);\r\n\r\n return (\r\n <span className={cn(\"inline-block font-mono\", className)}>\r\n {displayText}\r\n {cursor && (\r\n <span\r\n className={cn(\r\n \"ml-0.5 inline-block w-[2px] h-[1em] bg-current\",\r\n isTyping ? \"animate-blink\" : \"\"\r\n )}\r\n />\r\n )}\r\n </span>\r\n );\r\n}\r\n\r\nexport default Typewriter;\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(...e){return tailwindMerge.twMerge(clsx.clsx(e))}function f({text:e,className:s,amplitude:r=10,frequency:i=1.5}){let m=Array.from(e);return jsxRuntime.jsx("div",{className:n("flex",s),children:m.map((t,a)=>jsxRuntime.jsx(framerMotion.motion.span,{className:"inline-block",style:{whiteSpace:t===" "?"pre":"normal"},animate:{y:[0,-r,0,r,0]},transition:{duration:i,repeat:1/0,delay:a*.08,ease:"easeInOut"},children:t},`${t}-${a}`))})}var b=f;exports.WaveText=f;exports.default=b;//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/wave-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","WaveText","text","className","amplitude","frequency","letters","jsx","letter","index","motion","wave_text_default"],"mappings":"qNAGO,SAASA,KAAMC,CAAAA,CAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCQO,SAASG,EAAS,CACvB,IAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,EAAY,EAAA,CACZ,SAAA,CAAAC,CAAAA,CAAY,GACd,CAAA,CAAkB,CAChB,IAAMC,CAAAA,CAAU,KAAA,CAAM,IAAA,CAAKJ,CAAI,CAAA,CAE/B,OACEK,cAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAWV,CAAAA,CAAG,MAAA,CAAQM,CAAS,CAAA,CACjC,QAAA,CAAAG,EAAQ,GAAA,CAAI,CAACE,CAAAA,CAAQC,CAAAA,GACpBF,cAAAA,CAACG,mBAAAA,CAAO,KAAP,CAEC,SAAA,CAAU,cAAA,CACV,KAAA,CAAO,CAAE,UAAA,CAAYF,IAAW,GAAA,CAAM,KAAA,CAAQ,QAAS,CAAA,CACvD,OAAA,CAAS,CACP,EAAG,CAAC,CAAA,CAAG,CAACJ,CAAAA,CAAW,CAAA,CAAGA,CAAAA,CAAW,CAAC,CACpC,CAAA,CACA,UAAA,CAAY,CACV,QAAA,CAAUC,CAAAA,CACV,OAAQ,CAAA,CAAA,CAAA,CACR,KAAA,CAAOI,CAAAA,CAAQ,GAAA,CACf,IAAA,CAAM,WACR,EAEC,QAAA,CAAAD,CAAAA,CAAAA,CAbI,CAAA,EAAGA,CAAM,CAAA,CAAA,EAAIC,CAAK,CAAA,CAczB,CACD,CAAA,CACH,CAEJ,CAEA,IAAOE,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 React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface WaveTextProps {\r\n text: string;\r\n className?: string;\r\n amplitude?: number;\r\n frequency?: number;\r\n}\r\n\r\nexport function WaveText({\r\n text,\r\n className,\r\n amplitude = 10,\r\n frequency = 1.5,\r\n}: WaveTextProps) {\r\n const letters = Array.from(text);\r\n\r\n return (\r\n <div className={cn(\"flex\", className)}>\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={`${letter}-${index}`}\r\n className=\"inline-block\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n animate={{\r\n y: [0, -amplitude, 0, amplitude, 0],\r\n }}\r\n transition={{\r\n duration: frequency,\r\n repeat: Infinity,\r\n delay: index * 0.08,\r\n ease: \"easeInOut\",\r\n }}\r\n >\r\n {letter}\r\n </motion.span>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default WaveText;\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(...e){return twMerge(clsx(e))}function f({text:e,className:s,amplitude:r=10,frequency:i=1.5}){let m=Array.from(e);return jsx("div",{className:n("flex",s),children:m.map((t,a)=>jsx(motion.span,{className:"inline-block",style:{whiteSpace:t===" "?"pre":"normal"},animate:{y:[0,-r,0,r,0]},transition:{duration:i,repeat:1/0,delay:a*.08,ease:"easeInOut"},children:t},`${t}-${a}`))})}var b=f;export{f as WaveText,b as default};//# sourceMappingURL=index.mjs.map
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/cn.ts","../../src/wave-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","WaveText","text","className","amplitude","frequency","letters","jsx","letter","index","motion","wave_text_default"],"mappings":"oIAGO,SAASA,KAAMC,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCQO,SAASG,EAAS,CACvB,IAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,EAAY,EAAA,CACZ,SAAA,CAAAC,CAAAA,CAAY,GACd,CAAA,CAAkB,CAChB,IAAMC,CAAAA,CAAU,KAAA,CAAM,IAAA,CAAKJ,CAAI,CAAA,CAE/B,OACEK,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAWV,CAAAA,CAAG,MAAA,CAAQM,CAAS,CAAA,CACjC,QAAA,CAAAG,EAAQ,GAAA,CAAI,CAACE,CAAAA,CAAQC,CAAAA,GACpBF,GAAAA,CAACG,MAAAA,CAAO,KAAP,CAEC,SAAA,CAAU,cAAA,CACV,KAAA,CAAO,CAAE,UAAA,CAAYF,IAAW,GAAA,CAAM,KAAA,CAAQ,QAAS,CAAA,CACvD,OAAA,CAAS,CACP,EAAG,CAAC,CAAA,CAAG,CAACJ,CAAAA,CAAW,CAAA,CAAGA,CAAAA,CAAW,CAAC,CACpC,CAAA,CACA,UAAA,CAAY,CACV,QAAA,CAAUC,CAAAA,CACV,OAAQ,CAAA,CAAA,CAAA,CACR,KAAA,CAAOI,CAAAA,CAAQ,GAAA,CACf,IAAA,CAAM,WACR,EAEC,QAAA,CAAAD,CAAAA,CAAAA,CAbI,CAAA,EAAGA,CAAM,CAAA,CAAA,EAAIC,CAAK,CAAA,CAczB,CACD,CAAA,CACH,CAEJ,CAEA,IAAOE,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 React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface WaveTextProps {\r\n text: string;\r\n className?: string;\r\n amplitude?: number;\r\n frequency?: number;\r\n}\r\n\r\nexport function WaveText({\r\n text,\r\n className,\r\n amplitude = 10,\r\n frequency = 1.5,\r\n}: WaveTextProps) {\r\n const letters = Array.from(text);\r\n\r\n return (\r\n <div className={cn(\"flex\", className)}>\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={`${letter}-${index}`}\r\n className=\"inline-block\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n animate={{\r\n y: [0, -amplitude, 0, amplitude, 0],\r\n }}\r\n transition={{\r\n duration: frequency,\r\n repeat: Infinity,\r\n delay: index * 0.08,\r\n ease: \"easeInOut\",\r\n }}\r\n >\r\n {letter}\r\n </motion.span>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default WaveText;\r\n"]}
package/package.json ADDED
@@ -0,0 +1,162 @@
1
+ {
2
+ "name": "bynana-ui",
3
+ "version": "1.0.0",
4
+ "description": "200+ Beautiful React UI components built with Tailwind CSS and Framer Motion",
5
+ "main": "dist/index.js",
6
+ "module": "dist/index.mjs",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/index.mjs",
11
+ "require": "./dist/index.js",
12
+ "types": "./dist/index.d.ts"
13
+ },
14
+ "./shine-button": {
15
+ "import": "./dist/shine-button/index.mjs",
16
+ "require": "./dist/shine-button/index.js",
17
+ "types": "./dist/shine-button/index.d.ts"
18
+ },
19
+ "./ripple-button": {
20
+ "import": "./dist/ripple-button/index.mjs",
21
+ "require": "./dist/ripple-button/index.js",
22
+ "types": "./dist/ripple-button/index.d.ts"
23
+ },
24
+ "./magnetic-button": {
25
+ "import": "./dist/magnetic-button/index.mjs",
26
+ "require": "./dist/magnetic-button/index.js",
27
+ "types": "./dist/magnetic-button/index.d.ts"
28
+ },
29
+ "./bounce-button": {
30
+ "import": "./dist/bounce-button/index.mjs",
31
+ "require": "./dist/bounce-button/index.js",
32
+ "types": "./dist/bounce-button/index.d.ts"
33
+ },
34
+ "./glow-button": {
35
+ "import": "./dist/glow-button/index.mjs",
36
+ "require": "./dist/glow-button/index.js",
37
+ "types": "./dist/glow-button/index.d.ts"
38
+ },
39
+ "./pulse-button": {
40
+ "import": "./dist/pulse-button/index.mjs",
41
+ "require": "./dist/pulse-button/index.js",
42
+ "types": "./dist/pulse-button/index.d.ts"
43
+ },
44
+ "./gradient-text": {
45
+ "import": "./dist/gradient-text/index.mjs",
46
+ "require": "./dist/gradient-text/index.js",
47
+ "types": "./dist/gradient-text/index.d.ts"
48
+ },
49
+ "./shimmer-text": {
50
+ "import": "./dist/shimmer-text/index.mjs",
51
+ "require": "./dist/shimmer-text/index.js",
52
+ "types": "./dist/shimmer-text/index.d.ts"
53
+ },
54
+ "./glitch-text": {
55
+ "import": "./dist/glitch-text/index.mjs",
56
+ "require": "./dist/glitch-text/index.js",
57
+ "types": "./dist/glitch-text/index.d.ts"
58
+ },
59
+ "./bounce-text": {
60
+ "import": "./dist/bounce-text/index.mjs",
61
+ "require": "./dist/bounce-text/index.js",
62
+ "types": "./dist/bounce-text/index.d.ts"
63
+ },
64
+ "./blur-text": {
65
+ "import": "./dist/blur-text/index.mjs",
66
+ "require": "./dist/blur-text/index.js",
67
+ "types": "./dist/blur-text/index.d.ts"
68
+ },
69
+ "./typewriter": {
70
+ "import": "./dist/typewriter/index.mjs",
71
+ "require": "./dist/typewriter/index.js",
72
+ "types": "./dist/typewriter/index.d.ts"
73
+ },
74
+ "./wave-text": {
75
+ "import": "./dist/wave-text/index.mjs",
76
+ "require": "./dist/wave-text/index.js",
77
+ "types": "./dist/wave-text/index.d.ts"
78
+ },
79
+ "./flip-text": {
80
+ "import": "./dist/flip-text/index.mjs",
81
+ "require": "./dist/flip-text/index.js",
82
+ "types": "./dist/flip-text/index.d.ts"
83
+ },
84
+ "./glass-card": {
85
+ "import": "./dist/glass-card/index.mjs",
86
+ "require": "./dist/glass-card/index.js",
87
+ "types": "./dist/glass-card/index.d.ts"
88
+ },
89
+ "./hover-card": {
90
+ "import": "./dist/hover-card/index.mjs",
91
+ "require": "./dist/hover-card/index.js",
92
+ "types": "./dist/hover-card/index.d.ts"
93
+ },
94
+ "./card-flip": {
95
+ "import": "./dist/card-flip/index.mjs",
96
+ "require": "./dist/card-flip/index.js",
97
+ "types": "./dist/card-flip/index.d.ts"
98
+ },
99
+ "./loading-dots": {
100
+ "import": "./dist/loading-dots/index.mjs",
101
+ "require": "./dist/loading-dots/index.js",
102
+ "types": "./dist/loading-dots/index.d.ts"
103
+ },
104
+ "./loading-spinner": {
105
+ "import": "./dist/loading-spinner/index.mjs",
106
+ "require": "./dist/loading-spinner/index.js",
107
+ "types": "./dist/loading-spinner/index.d.ts"
108
+ },
109
+ "./animated-list": {
110
+ "import": "./dist/animated-list/index.mjs",
111
+ "require": "./dist/animated-list/index.js",
112
+ "types": "./dist/animated-list/index.d.ts"
113
+ },
114
+ "./styles.css": "./dist/styles.css"
115
+ },
116
+ "files": [
117
+ "dist",
118
+ "README.md"
119
+ ],
120
+ "scripts": {
121
+ "build": "tsup",
122
+ "dev": "tsup --watch",
123
+ "prepublishOnly": "npm run build"
124
+ },
125
+ "keywords": [
126
+ "react",
127
+ "ui",
128
+ "components",
129
+ "tailwindcss",
130
+ "framer-motion",
131
+ "animation",
132
+ "buttons",
133
+ "cards",
134
+ "text-effects",
135
+ "bynana-ui"
136
+ ],
137
+ "author": "Bynana UI",
138
+ "license": "MIT",
139
+ "homepage": "https://bynanaui.com",
140
+ "repository": {
141
+ "type": "git",
142
+ "url": "https://github.com/bynana-ui/bynana-ui"
143
+ },
144
+ "peerDependencies": {
145
+ "react": ">=18.0.0",
146
+ "react-dom": ">=18.0.0",
147
+ "tailwindcss": ">=3.0.0"
148
+ },
149
+ "dependencies": {
150
+ "clsx": "^2.1.0",
151
+ "tailwind-merge": "^2.2.0"
152
+ },
153
+ "devDependencies": {
154
+ "@types/react": "^18.2.0",
155
+ "@types/react-dom": "^18.2.0",
156
+ "framer-motion": "^11.0.0",
157
+ "react": "^18.2.0",
158
+ "react-dom": "^18.2.0",
159
+ "tsup": "^8.0.0",
160
+ "typescript": "^5.3.0"
161
+ }
162
+ }