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.
- package/README.md +134 -0
- package/dist/animated-list/index.js +2 -0
- package/dist/animated-list/index.js.map +1 -0
- package/dist/animated-list/index.mjs +2 -0
- package/dist/animated-list/index.mjs.map +1 -0
- package/dist/blur-text/index.js +2 -0
- package/dist/blur-text/index.js.map +1 -0
- package/dist/blur-text/index.mjs +2 -0
- package/dist/blur-text/index.mjs.map +1 -0
- package/dist/bounce-button/index.js +2 -0
- package/dist/bounce-button/index.js.map +1 -0
- package/dist/bounce-button/index.mjs +2 -0
- package/dist/bounce-button/index.mjs.map +1 -0
- package/dist/bounce-text/index.js +2 -0
- package/dist/bounce-text/index.js.map +1 -0
- package/dist/bounce-text/index.mjs +2 -0
- package/dist/bounce-text/index.mjs.map +1 -0
- package/dist/card-flip/index.js +2 -0
- package/dist/card-flip/index.js.map +1 -0
- package/dist/card-flip/index.mjs +2 -0
- package/dist/card-flip/index.mjs.map +1 -0
- package/dist/flip-text/index.js +2 -0
- package/dist/flip-text/index.js.map +1 -0
- package/dist/flip-text/index.mjs +2 -0
- package/dist/flip-text/index.mjs.map +1 -0
- package/dist/glass-card/index.js +2 -0
- package/dist/glass-card/index.js.map +1 -0
- package/dist/glass-card/index.mjs +2 -0
- package/dist/glass-card/index.mjs.map +1 -0
- package/dist/glitch-text/index.js +2 -0
- package/dist/glitch-text/index.js.map +1 -0
- package/dist/glitch-text/index.mjs +2 -0
- package/dist/glitch-text/index.mjs.map +1 -0
- package/dist/glow-button/index.js +2 -0
- package/dist/glow-button/index.js.map +1 -0
- package/dist/glow-button/index.mjs +2 -0
- package/dist/glow-button/index.mjs.map +1 -0
- package/dist/gradient-text/index.js +2 -0
- package/dist/gradient-text/index.js.map +1 -0
- package/dist/gradient-text/index.mjs +2 -0
- package/dist/gradient-text/index.mjs.map +1 -0
- package/dist/hover-card/index.js +2 -0
- package/dist/hover-card/index.js.map +1 -0
- package/dist/hover-card/index.mjs +2 -0
- package/dist/hover-card/index.mjs.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +2 -0
- package/dist/index.mjs.map +1 -0
- package/dist/loading-dots/index.js +2 -0
- package/dist/loading-dots/index.js.map +1 -0
- package/dist/loading-dots/index.mjs +2 -0
- package/dist/loading-dots/index.mjs.map +1 -0
- package/dist/loading-spinner/index.js +2 -0
- package/dist/loading-spinner/index.js.map +1 -0
- package/dist/loading-spinner/index.mjs +2 -0
- package/dist/loading-spinner/index.mjs.map +1 -0
- package/dist/magnetic-button/index.js +2 -0
- package/dist/magnetic-button/index.js.map +1 -0
- package/dist/magnetic-button/index.mjs +2 -0
- package/dist/magnetic-button/index.mjs.map +1 -0
- package/dist/pulse-button/index.js +2 -0
- package/dist/pulse-button/index.js.map +1 -0
- package/dist/pulse-button/index.mjs +2 -0
- package/dist/pulse-button/index.mjs.map +1 -0
- package/dist/ripple-button/index.js +2 -0
- package/dist/ripple-button/index.js.map +1 -0
- package/dist/ripple-button/index.mjs +2 -0
- package/dist/ripple-button/index.mjs.map +1 -0
- package/dist/shimmer-text/index.js +2 -0
- package/dist/shimmer-text/index.js.map +1 -0
- package/dist/shimmer-text/index.mjs +2 -0
- package/dist/shimmer-text/index.mjs.map +1 -0
- package/dist/shine-button/index.js +2 -0
- package/dist/shine-button/index.js.map +1 -0
- package/dist/shine-button/index.mjs +2 -0
- package/dist/shine-button/index.mjs.map +1 -0
- package/dist/typewriter/index.js +2 -0
- package/dist/typewriter/index.js.map +1 -0
- package/dist/typewriter/index.mjs +2 -0
- package/dist/typewriter/index.mjs.map +1 -0
- package/dist/wave-text/index.js +2 -0
- package/dist/wave-text/index.js.map +1 -0
- package/dist/wave-text/index.mjs +2 -0
- package/dist/wave-text/index.mjs.map +1 -0
- 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
|
+
}
|