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
package/README.md
ADDED
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# Bynana UI
|
|
2
|
+
|
|
3
|
+
> 200+ Beautiful React UI components built with Tailwind CSS and Framer Motion
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/bynana-ui)
|
|
6
|
+
[](https://opensource.org/licenses/MIT)
|
|
7
|
+
|
|
8
|
+
## Installation
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
npm install bynana-ui framer-motion
|
|
12
|
+
# or
|
|
13
|
+
yarn add bynana-ui framer-motion
|
|
14
|
+
# or
|
|
15
|
+
pnpm add bynana-ui framer-motion
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Quick Start
|
|
19
|
+
|
|
20
|
+
Import all components from the main package:
|
|
21
|
+
|
|
22
|
+
```tsx
|
|
23
|
+
import { ShineButton, GradientText, GlassCard } from "bynana-ui";
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Or import specific components for better tree-shaking:
|
|
27
|
+
|
|
28
|
+
```tsx
|
|
29
|
+
import { ShineButton } from "bynana-ui/shine-button";
|
|
30
|
+
import { GradientText } from "bynana-ui/gradient-text";
|
|
31
|
+
import { GlassCard } from "bynana-ui/glass-card";
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Components
|
|
35
|
+
|
|
36
|
+
### Buttons
|
|
37
|
+
|
|
38
|
+
| Component | Import |
|
|
39
|
+
|-----------|--------|
|
|
40
|
+
| ShineButton | `bynana-ui/shine-button` |
|
|
41
|
+
| RippleButton | `bynana-ui/ripple-button` |
|
|
42
|
+
| MagneticButton | `bynana-ui/magnetic-button` |
|
|
43
|
+
| BounceButton | `bynana-ui/bounce-button` |
|
|
44
|
+
| GlowButton | `bynana-ui/glow-button` |
|
|
45
|
+
| PulseButton | `bynana-ui/pulse-button` |
|
|
46
|
+
|
|
47
|
+
### Text Effects
|
|
48
|
+
|
|
49
|
+
| Component | Import |
|
|
50
|
+
|-----------|--------|
|
|
51
|
+
| GradientText | `bynana-ui/gradient-text` |
|
|
52
|
+
| ShimmerText | `bynana-ui/shimmer-text` |
|
|
53
|
+
| GlitchText | `bynana-ui/glitch-text` |
|
|
54
|
+
| BounceText | `bynana-ui/bounce-text` |
|
|
55
|
+
| BlurText | `bynana-ui/blur-text` |
|
|
56
|
+
| Typewriter | `bynana-ui/typewriter` |
|
|
57
|
+
| WaveText | `bynana-ui/wave-text` |
|
|
58
|
+
| FlipText | `bynana-ui/flip-text` |
|
|
59
|
+
|
|
60
|
+
### Cards
|
|
61
|
+
|
|
62
|
+
| Component | Import |
|
|
63
|
+
|-----------|--------|
|
|
64
|
+
| GlassCard | `bynana-ui/glass-card` |
|
|
65
|
+
| HoverCard | `bynana-ui/hover-card` |
|
|
66
|
+
| CardFlip | `bynana-ui/card-flip` |
|
|
67
|
+
|
|
68
|
+
### Loaders
|
|
69
|
+
|
|
70
|
+
| Component | Import |
|
|
71
|
+
|-----------|--------|
|
|
72
|
+
| LoadingDots | `bynana-ui/loading-dots` |
|
|
73
|
+
| LoadingSpinner | `bynana-ui/loading-spinner` |
|
|
74
|
+
|
|
75
|
+
### Lists
|
|
76
|
+
|
|
77
|
+
| Component | Import |
|
|
78
|
+
|-----------|--------|
|
|
79
|
+
| AnimatedList | `bynana-ui/animated-list` |
|
|
80
|
+
|
|
81
|
+
## Usage Examples
|
|
82
|
+
|
|
83
|
+
### ShineButton
|
|
84
|
+
|
|
85
|
+
```tsx
|
|
86
|
+
import { ShineButton } from "bynana-ui/shine-button";
|
|
87
|
+
|
|
88
|
+
<ShineButton>Click Me</ShineButton>
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### GradientText
|
|
92
|
+
|
|
93
|
+
```tsx
|
|
94
|
+
import { GradientText } from "bynana-ui/gradient-text";
|
|
95
|
+
|
|
96
|
+
<GradientText colors={["#ff6b6b", "#feca57", "#48dbfb"]}>
|
|
97
|
+
Hello World
|
|
98
|
+
</GradientText>
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### AnimatedList
|
|
102
|
+
|
|
103
|
+
```tsx
|
|
104
|
+
import { AnimatedList } from "bynana-ui/animated-list";
|
|
105
|
+
|
|
106
|
+
<AnimatedList delay={1000}>
|
|
107
|
+
<div>Item 1</div>
|
|
108
|
+
<div>Item 2</div>
|
|
109
|
+
<div>Item 3</div>
|
|
110
|
+
</AnimatedList>
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Tailwind CSS Setup
|
|
114
|
+
|
|
115
|
+
Make sure you have Tailwind CSS configured in your project. Add the package to your content paths:
|
|
116
|
+
|
|
117
|
+
```js
|
|
118
|
+
// tailwind.config.js
|
|
119
|
+
module.exports = {
|
|
120
|
+
content: [
|
|
121
|
+
// ... your paths
|
|
122
|
+
"./node_modules/bynana-ui/**/*.{js,ts,jsx,tsx}",
|
|
123
|
+
],
|
|
124
|
+
// ...
|
|
125
|
+
};
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## Browse All Components
|
|
129
|
+
|
|
130
|
+
Visit [bynanaui.com](https://bynanaui.com) to see all 200+ components with live previews and copy-paste code.
|
|
131
|
+
|
|
132
|
+
## License
|
|
133
|
+
|
|
134
|
+
MIT © [Bynana UI](https://bynanaui.com)
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var f=require('react'),framerMotion=require('framer-motion'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var f__default=/*#__PURE__*/_interopDefault(f);function o(...e){return tailwindMerge.twMerge(clsx.clsx(e))}function g({className:e,children:c,delay:a=1e3}){let[s,l]=f.useState(0),t=f__default.default.Children.toArray(c);f.useEffect(()=>{let n=setInterval(()=>{l(r=>(r+1)%t.length);},a);return ()=>clearInterval(n)},[t.length,a]);let m=f.useMemo(()=>t.slice(0,s+1).reverse(),[s,t]);return jsxRuntime.jsx("div",{className:o("flex flex-col items-center gap-4",e),children:jsxRuntime.jsx(framerMotion.AnimatePresence,{children:m.map((n,r)=>jsxRuntime.jsx(h,{children:n},r))})})}function h({children:e}){return jsxRuntime.jsx(framerMotion.motion.div,{initial:{scale:0,opacity:0},animate:{scale:1,opacity:1},exit:{scale:0,opacity:0},transition:{type:"spring",stiffness:350,damping:40},layout:true,className:"mx-auto w-full",children:e})}var C=g;exports.AnimatedList=g;exports.AnimatedListItem=h;exports.default=C;//# sourceMappingURL=index.js.map
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/animated-list/index.tsx"],"names":["cn","inputs","twMerge","clsx","AnimatedList","className","children","delay","index","setIndex","useState","childrenArray","React","useEffect","interval","prevIndex","itemsToShow","useMemo","jsx","AnimatePresence","item","idx","AnimatedListItem","motion","animated_list_default"],"mappings":"wVAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,UAAKF,CAAM,CAAC,CAC7B,CCOO,SAASG,EAAa,CAC3B,SAAA,CAAAC,EACA,QAAA,CAAAC,CAAAA,CACA,MAAAC,CAAAA,CAAQ,GACV,EAAsB,CACpB,GAAM,CAACC,CAAAA,CAAOC,CAAQ,EAAIC,UAAAA,CAAS,CAAC,EAC9BC,CAAAA,CAAgBC,kBAAAA,CAAM,SAAS,OAAA,CAAQN,CAAQ,EAErDO,WAAAA,CAAU,IAAM,CACd,IAAMC,CAAAA,CAAW,YAAY,IAAM,CACjCL,EAAUM,CAAAA,EAAAA,CAAeA,CAAAA,CAAY,GAAKJ,CAAAA,CAAc,MAAM,EAChE,CAAA,CAAGJ,CAAK,EACR,OAAO,IAAM,cAAcO,CAAQ,CACrC,EAAG,CAACH,CAAAA,CAAc,OAAQJ,CAAK,CAAC,EAEhC,IAAMS,CAAAA,CAAcC,UAClB,IAAMN,CAAAA,CAAc,MAAM,CAAA,CAAGH,CAAAA,CAAQ,CAAC,CAAA,CAAE,OAAA,GACxC,CAACA,CAAAA,CAAOG,CAAa,CACvB,CAAA,CAEA,OACEO,cAAAA,CAAC,KAAA,CAAA,CAAI,UAAWlB,CAAAA,CAAG,kCAAA,CAAoCK,CAAS,CAAA,CAC9D,QAAA,CAAAa,eAACC,4BAAAA,CAAA,CACE,SAAAH,CAAAA,CAAY,GAAA,CAAI,CAACI,CAAAA,CAAMC,CAAAA,GACtBH,eAACI,CAAAA,CAAA,CACE,SAAAF,CAAAA,CAAAA,CADoBC,CAEvB,CACD,CAAA,CACH,CAAA,CACF,CAEJ,CAEO,SAASC,EAAiB,CAAE,QAAA,CAAAhB,CAAS,CAAA,CAAkC,CAC5E,OACEY,cAAAA,CAACK,mBAAAA,CAAO,IAAP,CACC,OAAA,CAAS,CAAE,KAAA,CAAO,CAAA,CAAG,QAAS,CAAE,CAAA,CAChC,QAAS,CAAE,KAAA,CAAO,EAAG,OAAA,CAAS,CAAE,EAChC,IAAA,CAAM,CAAE,MAAO,CAAA,CAAG,OAAA,CAAS,CAAE,CAAA,CAC7B,UAAA,CAAY,CAAE,IAAA,CAAM,QAAA,CAAU,UAAW,GAAA,CAAK,OAAA,CAAS,EAAG,CAAA,CAC1D,MAAA,CAAM,KACN,SAAA,CAAU,gBAAA,CAET,SAAAjB,CAAAA,CACH,CAEJ,CAEA,IAAOkB,CAAAA,CAAQpB","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, useMemo, useState } from \"react\";\r\nimport { AnimatePresence, motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\nexport interface AnimatedListProps {\r\n className?: string;\r\n children: React.ReactNode;\r\n delay?: number;\r\n}\r\n\r\nexport function AnimatedList({\r\n className,\r\n children,\r\n delay = 1000,\r\n}: AnimatedListProps) {\r\n const [index, setIndex] = useState(0);\r\n const childrenArray = React.Children.toArray(children);\r\n\r\n useEffect(() => {\r\n const interval = setInterval(() => {\r\n setIndex((prevIndex) => (prevIndex + 1) % childrenArray.length);\r\n }, delay);\r\n return () => clearInterval(interval);\r\n }, [childrenArray.length, delay]);\r\n\r\n const itemsToShow = useMemo(\r\n () => childrenArray.slice(0, index + 1).reverse(),\r\n [index, childrenArray]\r\n );\r\n\r\n return (\r\n <div className={cn(\"flex flex-col items-center gap-4\", className)}>\r\n <AnimatePresence>\r\n {itemsToShow.map((item, idx) => (\r\n <AnimatedListItem key={idx}>\r\n {item}\r\n </AnimatedListItem>\r\n ))}\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n\r\nexport function AnimatedListItem({ children }: { children: React.ReactNode }) {\r\n return (\r\n <motion.div\r\n initial={{ scale: 0, opacity: 0 }}\r\n animate={{ scale: 1, opacity: 1 }}\r\n exit={{ scale: 0, opacity: 0 }}\r\n transition={{ type: \"spring\", stiffness: 350, damping: 40 }}\r\n layout\r\n className=\"mx-auto w-full\"\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default AnimatedList;\r\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import f,{useState,useEffect,useMemo}from'react';import {AnimatePresence,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 g({className:e,children:c,delay:a=1e3}){let[s,l]=useState(0),t=f.Children.toArray(c);useEffect(()=>{let n=setInterval(()=>{l(r=>(r+1)%t.length);},a);return ()=>clearInterval(n)},[t.length,a]);let m=useMemo(()=>t.slice(0,s+1).reverse(),[s,t]);return jsx("div",{className:o("flex flex-col items-center gap-4",e),children:jsx(AnimatePresence,{children:m.map((n,r)=>jsx(h,{children:n},r))})})}function h({children:e}){return jsx(motion.div,{initial:{scale:0,opacity:0},animate:{scale:1,opacity:1},exit:{scale:0,opacity:0},transition:{type:"spring",stiffness:350,damping:40},layout:true,className:"mx-auto w-full",children:e})}var C=g;export{g as AnimatedList,h as AnimatedListItem,C as default};//# sourceMappingURL=index.mjs.map
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/animated-list/index.tsx"],"names":["cn","inputs","twMerge","clsx","AnimatedList","className","children","delay","index","setIndex","useState","childrenArray","React","useEffect","interval","prevIndex","itemsToShow","useMemo","jsx","AnimatePresence","item","idx","AnimatedListItem","motion","animated_list_default"],"mappings":"qMAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,KAAKF,CAAM,CAAC,CAC7B,CCOO,SAASG,EAAa,CAC3B,SAAA,CAAAC,EACA,QAAA,CAAAC,CAAAA,CACA,MAAAC,CAAAA,CAAQ,GACV,EAAsB,CACpB,GAAM,CAACC,CAAAA,CAAOC,CAAQ,EAAIC,QAAAA,CAAS,CAAC,EAC9BC,CAAAA,CAAgBC,CAAAA,CAAM,SAAS,OAAA,CAAQN,CAAQ,EAErDO,SAAAA,CAAU,IAAM,CACd,IAAMC,CAAAA,CAAW,YAAY,IAAM,CACjCL,EAAUM,CAAAA,EAAAA,CAAeA,CAAAA,CAAY,GAAKJ,CAAAA,CAAc,MAAM,EAChE,CAAA,CAAGJ,CAAK,EACR,OAAO,IAAM,cAAcO,CAAQ,CACrC,EAAG,CAACH,CAAAA,CAAc,OAAQJ,CAAK,CAAC,EAEhC,IAAMS,CAAAA,CAAcC,QAClB,IAAMN,CAAAA,CAAc,MAAM,CAAA,CAAGH,CAAAA,CAAQ,CAAC,CAAA,CAAE,OAAA,GACxC,CAACA,CAAAA,CAAOG,CAAa,CACvB,CAAA,CAEA,OACEO,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAWlB,CAAAA,CAAG,kCAAA,CAAoCK,CAAS,CAAA,CAC9D,QAAA,CAAAa,IAACC,eAAAA,CAAA,CACE,SAAAH,CAAAA,CAAY,GAAA,CAAI,CAACI,CAAAA,CAAMC,CAAAA,GACtBH,IAACI,CAAAA,CAAA,CACE,SAAAF,CAAAA,CAAAA,CADoBC,CAEvB,CACD,CAAA,CACH,CAAA,CACF,CAEJ,CAEO,SAASC,EAAiB,CAAE,QAAA,CAAAhB,CAAS,CAAA,CAAkC,CAC5E,OACEY,GAAAA,CAACK,MAAAA,CAAO,IAAP,CACC,OAAA,CAAS,CAAE,KAAA,CAAO,CAAA,CAAG,QAAS,CAAE,CAAA,CAChC,QAAS,CAAE,KAAA,CAAO,EAAG,OAAA,CAAS,CAAE,EAChC,IAAA,CAAM,CAAE,MAAO,CAAA,CAAG,OAAA,CAAS,CAAE,CAAA,CAC7B,UAAA,CAAY,CAAE,IAAA,CAAM,QAAA,CAAU,UAAW,GAAA,CAAK,OAAA,CAAS,EAAG,CAAA,CAC1D,MAAA,CAAM,KACN,SAAA,CAAU,gBAAA,CAET,SAAAjB,CAAAA,CACH,CAEJ,CAEA,IAAOkB,CAAAA,CAAQpB","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, useMemo, useState } from \"react\";\r\nimport { AnimatePresence, motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\nexport interface AnimatedListProps {\r\n className?: string;\r\n children: React.ReactNode;\r\n delay?: number;\r\n}\r\n\r\nexport function AnimatedList({\r\n className,\r\n children,\r\n delay = 1000,\r\n}: AnimatedListProps) {\r\n const [index, setIndex] = useState(0);\r\n const childrenArray = React.Children.toArray(children);\r\n\r\n useEffect(() => {\r\n const interval = setInterval(() => {\r\n setIndex((prevIndex) => (prevIndex + 1) % childrenArray.length);\r\n }, delay);\r\n return () => clearInterval(interval);\r\n }, [childrenArray.length, delay]);\r\n\r\n const itemsToShow = useMemo(\r\n () => childrenArray.slice(0, index + 1).reverse(),\r\n [index, childrenArray]\r\n );\r\n\r\n return (\r\n <div className={cn(\"flex flex-col items-center gap-4\", className)}>\r\n <AnimatePresence>\r\n {itemsToShow.map((item, idx) => (\r\n <AnimatedListItem key={idx}>\r\n {item}\r\n </AnimatedListItem>\r\n ))}\r\n </AnimatePresence>\r\n </div>\r\n );\r\n}\r\n\r\nexport function AnimatedListItem({ children }: { children: React.ReactNode }) {\r\n return (\r\n <motion.div\r\n initial={{ scale: 0, opacity: 0 }}\r\n animate={{ scale: 1, opacity: 1 }}\r\n exit={{ scale: 0, opacity: 0 }}\r\n transition={{ type: \"spring\", stiffness: 350, damping: 40 }}\r\n layout\r\n className=\"mx-auto w-full\"\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default AnimatedList;\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 a(...r){return tailwindMerge.twMerge(clsx.clsx(r))}function T({text:r="",delay:p=200,className:u="",animateBy:n="words",direction:s="top"}){let i=n==="words"?r.split(" "):r.split(""),[c,f]=react.useState(false),o=react.useRef(null);react.useEffect(()=>{if(!o.current)return;let e=new IntersectionObserver(([t])=>{t.isIntersecting&&(f(true),e.unobserve(o.current));},{threshold:.1});return e.observe(o.current),()=>e.disconnect()},[]);let l=react.useMemo(()=>s==="top"?{filter:"blur(10px)",opacity:0,y:-50}:{filter:"blur(10px)",opacity:0,y:50},[s]),m={filter:"blur(0px)",opacity:1,y:0};return jsxRuntime.jsx("p",{ref:o,className:a("flex flex-wrap",u),children:i.map((e,t)=>jsxRuntime.jsxs(framerMotion.motion.span,{initial:l,animate:c?m:l,transition:{duration:.5,delay:t*p/1e3,ease:"easeOut"},className:"inline-block",style:{willChange:"transform, filter, opacity"},children:[e===" "?"\xA0":e,n==="words"&&t<i.length-1&&"\xA0"]},t))})}var k=T;exports.BlurText=T;exports.default=k;//# sourceMappingURL=index.js.map
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/blur-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","BlurText","text","delay","className","animateBy","direction","elements","inView","setInView","useState","ref","useRef","useEffect","observer","entry","fromAnimation","useMemo","toAnimation","jsx","segment","index","jsxs","motion","blur_text_default"],"mappings":"4OAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,sBAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCSO,SAASG,CAAAA,CAAS,CACvB,KAAAC,CAAAA,CAAO,EAAA,CACP,KAAA,CAAAC,CAAAA,CAAQ,GAAA,CACR,SAAA,CAAAC,CAAAA,CAAY,EAAA,CACZ,SAAA,CAAAC,CAAAA,CAAY,OAAA,CACZ,SAAA,CAAAC,CAAAA,CAAY,KACd,EAAkB,CAChB,IAAMC,CAAAA,CAAWF,CAAAA,GAAc,OAAA,CAAUH,CAAAA,CAAK,MAAM,GAAG,CAAA,CAAIA,CAAAA,CAAK,KAAA,CAAM,EAAE,CAAA,CAClE,CAACM,CAAAA,CAAQC,CAAS,CAAA,CAAIC,cAAAA,CAAS,KAAK,CAAA,CACpCC,EAAMC,YAAAA,CAA6B,IAAI,CAAA,CAE7CC,eAAAA,CAAU,IAAM,CACd,GAAI,CAACF,CAAAA,CAAI,OAAA,CAAS,OAClB,IAAMG,CAAAA,CAAW,IAAI,oBAAA,CACnB,CAAC,CAACC,CAAK,CAAA,GAAM,CACPA,EAAM,cAAA,GACRN,CAAAA,CAAU,IAAI,CAAA,CACdK,CAAAA,CAAS,SAAA,CAAUH,CAAAA,CAAI,OAAkB,CAAA,EAE7C,CAAA,CACA,CAAE,SAAA,CAAW,EAAI,CACnB,EACA,OAAAG,CAAAA,CAAS,OAAA,CAAQH,CAAAA,CAAI,OAAO,CAAA,CACrB,IAAMG,CAAAA,CAAS,UAAA,EACxB,CAAA,CAAG,EAAE,EAEL,IAAME,CAAAA,CAAgBC,aAAAA,CACpB,IACEX,CAAAA,GAAc,KAAA,CACV,CAAE,MAAA,CAAQ,YAAA,CAAc,OAAA,CAAS,CAAA,CAAG,CAAA,CAAG,GAAI,EAC3C,CAAE,MAAA,CAAQ,YAAA,CAAc,OAAA,CAAS,CAAA,CAAG,CAAA,CAAG,EAAG,CAAA,CAChD,CAACA,CAAS,CACZ,CAAA,CAEMY,CAAAA,CAAc,CAAE,MAAA,CAAQ,WAAA,CAAa,OAAA,CAAS,CAAA,CAAG,CAAA,CAAG,CAAE,CAAA,CAE5D,OACEC,cAAAA,CAAC,GAAA,CAAA,CAAE,GAAA,CAAKR,CAAAA,CAAK,SAAA,CAAWd,CAAAA,CAAG,iBAAkBO,CAAS,CAAA,CACnD,QAAA,CAAAG,CAAAA,CAAS,GAAA,CAAI,CAACa,EAASC,CAAAA,GACtBC,eAAAA,CAACC,mBAAAA,CAAO,IAAA,CAAP,CAEC,OAAA,CAASP,EACT,OAAA,CAASR,CAAAA,CAASU,CAAAA,CAAcF,CAAAA,CAChC,UAAA,CAAY,CACV,SAAU,EAAA,CACV,KAAA,CAAQK,CAAAA,CAAQlB,CAAAA,CAAS,GAAA,CACzB,IAAA,CAAM,SACR,CAAA,CACA,SAAA,CAAU,cAAA,CACV,KAAA,CAAO,CAAE,UAAA,CAAY,4BAA6B,CAAA,CAEjD,QAAA,CAAA,CAAAiB,CAAAA,GAAY,GAAA,CAAM,MAAA,CAAWA,CAAAA,CAC7Bf,IAAc,OAAA,EAAWgB,CAAAA,CAAQd,CAAAA,CAAS,MAAA,CAAS,CAAA,EAAK,MAAA,CAAA,CAAA,CAZpDc,CAaP,CACD,CAAA,CACH,CAEJ,CAEA,IAAOG,CAAAA,CAAQvB","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, useRef, useState, useMemo } from \"react\";\r\nimport { motion, Transition } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface BlurTextProps {\r\n text?: string;\r\n delay?: number;\r\n className?: string;\r\n animateBy?: \"words\" | \"letters\";\r\n direction?: \"top\" | \"bottom\";\r\n}\r\n\r\nexport function BlurText({\r\n text = \"\",\r\n delay = 200,\r\n className = \"\",\r\n animateBy = \"words\",\r\n direction = \"top\",\r\n}: BlurTextProps) {\r\n const elements = animateBy === \"words\" ? text.split(\" \") : text.split(\"\");\r\n const [inView, setInView] = useState(false);\r\n const ref = useRef<HTMLParagraphElement>(null);\r\n\r\n useEffect(() => {\r\n if (!ref.current) return;\r\n const observer = new IntersectionObserver(\r\n ([entry]) => {\r\n if (entry.isIntersecting) {\r\n setInView(true);\r\n observer.unobserve(ref.current as Element);\r\n }\r\n },\r\n { threshold: 0.1 }\r\n );\r\n observer.observe(ref.current);\r\n return () => observer.disconnect();\r\n }, []);\r\n\r\n const fromAnimation = useMemo(\r\n () =>\r\n direction === \"top\"\r\n ? { filter: \"blur(10px)\", opacity: 0, y: -50 }\r\n : { filter: \"blur(10px)\", opacity: 0, y: 50 },\r\n [direction]\r\n );\r\n\r\n const toAnimation = { filter: \"blur(0px)\", opacity: 1, y: 0 };\r\n\r\n return (\r\n <p ref={ref} className={cn(\"flex flex-wrap\", className)}>\r\n {elements.map((segment, index) => (\r\n <motion.span\r\n key={index}\r\n initial={fromAnimation}\r\n animate={inView ? toAnimation : fromAnimation}\r\n transition={{\r\n duration: 0.5,\r\n delay: (index * delay) / 1000,\r\n ease: \"easeOut\",\r\n }}\r\n className=\"inline-block\"\r\n style={{ willChange: \"transform, filter, opacity\" }}\r\n >\r\n {segment === \" \" ? \"\\u00A0\" : segment}\r\n {animateBy === \"words\" && index < elements.length - 1 && \"\\u00A0\"}\r\n </motion.span>\r\n ))}\r\n </p>\r\n );\r\n}\r\n\r\nexport default BlurText;\r\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {useState,useRef,useEffect,useMemo}from'react';import {motion}from'framer-motion';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx,jsxs}from'react/jsx-runtime';function a(...r){return twMerge(clsx(r))}function T({text:r="",delay:p=200,className:u="",animateBy:n="words",direction:s="top"}){let i=n==="words"?r.split(" "):r.split(""),[c,f]=useState(false),o=useRef(null);useEffect(()=>{if(!o.current)return;let e=new IntersectionObserver(([t])=>{t.isIntersecting&&(f(true),e.unobserve(o.current));},{threshold:.1});return e.observe(o.current),()=>e.disconnect()},[]);let l=useMemo(()=>s==="top"?{filter:"blur(10px)",opacity:0,y:-50}:{filter:"blur(10px)",opacity:0,y:50},[s]),m={filter:"blur(0px)",opacity:1,y:0};return jsx("p",{ref:o,className:a("flex flex-wrap",u),children:i.map((e,t)=>jsxs(motion.span,{initial:l,animate:c?m:l,transition:{duration:.5,delay:t*p/1e3,ease:"easeOut"},className:"inline-block",style:{willChange:"transform, filter, opacity"},children:[e===" "?"\xA0":e,n==="words"&&t<i.length-1&&"\xA0"]},t))})}var k=T;export{T as BlurText,k as default};//# sourceMappingURL=index.mjs.map
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/blur-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","BlurText","text","delay","className","animateBy","direction","elements","inView","setInView","useState","ref","useRef","useEffect","observer","entry","fromAnimation","useMemo","toAnimation","jsx","segment","index","jsxs","motion","blur_text_default"],"mappings":"+LAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,QAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCSO,SAASG,CAAAA,CAAS,CACvB,KAAAC,CAAAA,CAAO,EAAA,CACP,KAAA,CAAAC,CAAAA,CAAQ,GAAA,CACR,SAAA,CAAAC,CAAAA,CAAY,EAAA,CACZ,SAAA,CAAAC,CAAAA,CAAY,OAAA,CACZ,SAAA,CAAAC,CAAAA,CAAY,KACd,EAAkB,CAChB,IAAMC,CAAAA,CAAWF,CAAAA,GAAc,OAAA,CAAUH,CAAAA,CAAK,MAAM,GAAG,CAAA,CAAIA,CAAAA,CAAK,KAAA,CAAM,EAAE,CAAA,CAClE,CAACM,CAAAA,CAAQC,CAAS,CAAA,CAAIC,QAAAA,CAAS,KAAK,CAAA,CACpCC,EAAMC,MAAAA,CAA6B,IAAI,CAAA,CAE7CC,SAAAA,CAAU,IAAM,CACd,GAAI,CAACF,CAAAA,CAAI,OAAA,CAAS,OAClB,IAAMG,CAAAA,CAAW,IAAI,oBAAA,CACnB,CAAC,CAACC,CAAK,CAAA,GAAM,CACPA,EAAM,cAAA,GACRN,CAAAA,CAAU,IAAI,CAAA,CACdK,CAAAA,CAAS,SAAA,CAAUH,CAAAA,CAAI,OAAkB,CAAA,EAE7C,CAAA,CACA,CAAE,SAAA,CAAW,EAAI,CACnB,EACA,OAAAG,CAAAA,CAAS,OAAA,CAAQH,CAAAA,CAAI,OAAO,CAAA,CACrB,IAAMG,CAAAA,CAAS,UAAA,EACxB,CAAA,CAAG,EAAE,EAEL,IAAME,CAAAA,CAAgBC,OAAAA,CACpB,IACEX,CAAAA,GAAc,KAAA,CACV,CAAE,MAAA,CAAQ,YAAA,CAAc,OAAA,CAAS,CAAA,CAAG,CAAA,CAAG,GAAI,EAC3C,CAAE,MAAA,CAAQ,YAAA,CAAc,OAAA,CAAS,CAAA,CAAG,CAAA,CAAG,EAAG,CAAA,CAChD,CAACA,CAAS,CACZ,CAAA,CAEMY,CAAAA,CAAc,CAAE,MAAA,CAAQ,WAAA,CAAa,OAAA,CAAS,CAAA,CAAG,CAAA,CAAG,CAAE,CAAA,CAE5D,OACEC,GAAAA,CAAC,GAAA,CAAA,CAAE,GAAA,CAAKR,CAAAA,CAAK,SAAA,CAAWd,CAAAA,CAAG,iBAAkBO,CAAS,CAAA,CACnD,QAAA,CAAAG,CAAAA,CAAS,GAAA,CAAI,CAACa,EAASC,CAAAA,GACtBC,IAAAA,CAACC,MAAAA,CAAO,IAAA,CAAP,CAEC,OAAA,CAASP,EACT,OAAA,CAASR,CAAAA,CAASU,CAAAA,CAAcF,CAAAA,CAChC,UAAA,CAAY,CACV,SAAU,EAAA,CACV,KAAA,CAAQK,CAAAA,CAAQlB,CAAAA,CAAS,GAAA,CACzB,IAAA,CAAM,SACR,CAAA,CACA,SAAA,CAAU,cAAA,CACV,KAAA,CAAO,CAAE,UAAA,CAAY,4BAA6B,CAAA,CAEjD,QAAA,CAAA,CAAAiB,CAAAA,GAAY,GAAA,CAAM,MAAA,CAAWA,CAAAA,CAC7Bf,IAAc,OAAA,EAAWgB,CAAAA,CAAQd,CAAAA,CAAS,MAAA,CAAS,CAAA,EAAK,MAAA,CAAA,CAAA,CAZpDc,CAaP,CACD,CAAA,CACH,CAEJ,CAEA,IAAOG,CAAAA,CAAQvB","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, useRef, useState, useMemo } from \"react\";\r\nimport { motion, Transition } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface BlurTextProps {\r\n text?: string;\r\n delay?: number;\r\n className?: string;\r\n animateBy?: \"words\" | \"letters\";\r\n direction?: \"top\" | \"bottom\";\r\n}\r\n\r\nexport function BlurText({\r\n text = \"\",\r\n delay = 200,\r\n className = \"\",\r\n animateBy = \"words\",\r\n direction = \"top\",\r\n}: BlurTextProps) {\r\n const elements = animateBy === \"words\" ? text.split(\" \") : text.split(\"\");\r\n const [inView, setInView] = useState(false);\r\n const ref = useRef<HTMLParagraphElement>(null);\r\n\r\n useEffect(() => {\r\n if (!ref.current) return;\r\n const observer = new IntersectionObserver(\r\n ([entry]) => {\r\n if (entry.isIntersecting) {\r\n setInView(true);\r\n observer.unobserve(ref.current as Element);\r\n }\r\n },\r\n { threshold: 0.1 }\r\n );\r\n observer.observe(ref.current);\r\n return () => observer.disconnect();\r\n }, []);\r\n\r\n const fromAnimation = useMemo(\r\n () =>\r\n direction === \"top\"\r\n ? { filter: \"blur(10px)\", opacity: 0, y: -50 }\r\n : { filter: \"blur(10px)\", opacity: 0, y: 50 },\r\n [direction]\r\n );\r\n\r\n const toAnimation = { filter: \"blur(0px)\", opacity: 1, y: 0 };\r\n\r\n return (\r\n <p ref={ref} className={cn(\"flex flex-wrap\", className)}>\r\n {elements.map((segment, index) => (\r\n <motion.span\r\n key={index}\r\n initial={fromAnimation}\r\n animate={inView ? toAnimation : fromAnimation}\r\n transition={{\r\n duration: 0.5,\r\n delay: (index * delay) / 1000,\r\n ease: \"easeOut\",\r\n }}\r\n className=\"inline-block\"\r\n style={{ willChange: \"transform, filter, opacity\" }}\r\n >\r\n {segment === \" \" ? \"\\u00A0\" : segment}\r\n {animateBy === \"words\" && index < elements.length - 1 && \"\\u00A0\"}\r\n </motion.span>\r\n ))}\r\n </p>\r\n );\r\n}\r\n\r\nexport default BlurText;\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 p({children:e,className:r,onClick:s,...u}){let[t,n]=react.useState(false);function l(c){n(true),setTimeout(()=>n(false),1500),s?.(c);}return jsxRuntime.jsxs("div",{className:"relative inline-block",children:[jsxRuntime.jsx(framerMotion.motion.div,{className:"absolute -bottom-2 left-1/2 w-16 h-2 bg-black/20 rounded-full blur-sm",animate:t?{scaleX:[1,.8,1.2,.9,1.1,.95,1],opacity:[.3,.6,.2,.5,.3,.4,.3]}:{},style:{x:"-50%"},transition:{duration:1.5,ease:"easeOut"}}),jsxRuntime.jsx(framerMotion.motion.div,{animate:t?{y:[0,-40,-20,-35,-10,-25,-5,-15,0],rotate:[0,-5,2,-3,1,-2,.5,-1,0]}:{},transition:{duration:1.5,ease:"easeOut",times:[0,.2,.35,.5,.65,.75,.85,.95,1]},whileHover:t?{}:{y:[0,-8,0]},children:jsxRuntime.jsx("button",{className:i("px-6 py-3 rounded-xl font-medium","bg-orange-500 hover:bg-orange-600 text-white","transition-colors duration-200",r),onClick:l,disabled:t,...u,children:e})})]})}var R=p;exports.BounceButton=p;exports.default=R;//# sourceMappingURL=index.js.map
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/bounce-button/index.tsx"],"names":["cn","inputs","twMerge","clsx","BounceButton","children","className","onClick","props","isBouncing","setIsBouncing","useState","handleClick","e","jsxs","jsx","motion","bounce_button_default"],"mappings":"4OAGO,SAASA,CAAAA,CAAAA,GAAMC,EAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCKO,SAASG,CAAAA,CAAa,CAAE,QAAA,CAAAC,CAAAA,CAAU,UAAAC,CAAAA,CAAW,OAAA,CAAAC,CAAAA,CAAS,GAAGC,CAAM,CAAA,CAAsB,CAC1F,GAAM,CAACC,CAAAA,CAAYC,CAAa,CAAA,CAAIC,cAAAA,CAAS,KAAK,CAAA,CAElD,SAASC,EAAYC,CAAAA,CAAwC,CAC3DH,EAAc,IAAI,CAAA,CAClB,UAAA,CAAW,IAAMA,CAAAA,CAAc,KAAK,EAAG,IAAI,CAAA,CAC3CH,CAAAA,GAAUM,CAAC,EACb,CAEA,OACEC,eAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,uBAAA,CACb,QAAA,CAAA,CAAAC,cAAAA,CAACC,oBAAO,GAAA,CAAP,CACC,UAAU,uEAAA,CACV,OAAA,CAASP,EAAa,CACpB,MAAA,CAAQ,CAAC,CAAA,CAAG,EAAA,CAAK,GAAA,CAAK,GAAK,GAAA,CAAK,GAAA,CAAM,CAAC,CAAA,CACvC,OAAA,CAAS,CAAC,GAAK,EAAA,CAAK,EAAA,CAAK,EAAA,CAAK,EAAA,CAAK,EAAA,CAAK,EAAG,CAC7C,CAAA,CAAI,GACJ,KAAA,CAAO,CAAE,EAAG,MAAO,CAAA,CACnB,UAAA,CAAY,CAAE,QAAA,CAAU,GAAA,CAAK,KAAM,SAAU,CAAA,CAC/C,EAEAM,cAAAA,CAACC,mBAAAA,CAAO,IAAP,CACC,OAAA,CAASP,CAAAA,CAAa,CACpB,CAAA,CAAG,CAAC,EAAG,GAAA,CAAK,GAAA,CAAK,IAAK,GAAA,CAAK,GAAA,CAAK,GAAI,GAAA,CAAK,CAAC,CAAA,CAC1C,MAAA,CAAQ,CAAC,CAAA,CAAG,GAAI,CAAA,CAAG,EAAA,CAAI,CAAA,CAAG,EAAA,CAAI,EAAA,CAAK,EAAA,CAAI,CAAC,CAC1C,CAAA,CAAI,EAAC,CACL,UAAA,CAAY,CACV,SAAU,GAAA,CACV,IAAA,CAAM,UACN,KAAA,CAAO,CAAC,EAAG,EAAA,CAAK,GAAA,CAAM,EAAA,CAAK,GAAA,CAAM,GAAA,CAAM,GAAA,CAAM,IAAM,CAAC,CACtD,CAAA,CACA,UAAA,CAAaA,CAAAA,CAAiC,GAApB,CAAE,CAAA,CAAG,CAAC,CAAA,CAAG,EAAA,CAAI,CAAC,CAAE,CAAA,CAE1C,QAAA,CAAAM,eAAC,QAAA,CAAA,CACC,SAAA,CAAWf,EACT,kCAAA,CACA,8CAAA,CACA,gCAAA,CACAM,CACF,CAAA,CACA,OAAA,CAASM,EACT,QAAA,CAAUH,CAAAA,CACT,GAAGD,CAAAA,CAEH,QAAA,CAAAH,CAAAA,CACH,EACF,CAAA,CAAA,CACF,CAEJ,CAEA,IAAOY,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 React, { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface BounceButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function BounceButton({ children, className, onClick, ...props }: BounceButtonProps) {\r\n const [isBouncing, setIsBouncing] = useState(false);\r\n\r\n function handleClick(e: React.MouseEvent<HTMLButtonElement>) {\r\n setIsBouncing(true);\r\n setTimeout(() => setIsBouncing(false), 1500);\r\n onClick?.(e);\r\n }\r\n\r\n return (\r\n <div className=\"relative inline-block\">\r\n <motion.div\r\n className=\"absolute -bottom-2 left-1/2 w-16 h-2 bg-black/20 rounded-full blur-sm\"\r\n animate={isBouncing ? {\r\n scaleX: [1, 0.8, 1.2, 0.9, 1.1, 0.95, 1],\r\n opacity: [0.3, 0.6, 0.2, 0.5, 0.3, 0.4, 0.3],\r\n } : {}}\r\n style={{ x: \"-50%\" }}\r\n transition={{ duration: 1.5, ease: \"easeOut\" }}\r\n />\r\n\r\n <motion.div\r\n animate={isBouncing ? {\r\n y: [0, -40, -20, -35, -10, -25, -5, -15, 0],\r\n rotate: [0, -5, 2, -3, 1, -2, 0.5, -1, 0],\r\n } : {}}\r\n transition={{\r\n duration: 1.5,\r\n ease: \"easeOut\",\r\n times: [0, 0.2, 0.35, 0.5, 0.65, 0.75, 0.85, 0.95, 1],\r\n }}\r\n whileHover={!isBouncing ? { y: [0, -8, 0] } : {}}\r\n >\r\n <button\r\n className={cn(\r\n \"px-6 py-3 rounded-xl font-medium\",\r\n \"bg-orange-500 hover:bg-orange-600 text-white\",\r\n \"transition-colors duration-200\",\r\n className\r\n )}\r\n onClick={handleClick}\r\n disabled={isBouncing}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default BounceButton;\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(...e){return twMerge(clsx(e))}function p({children:e,className:r,onClick:s,...u}){let[t,n]=useState(false);function l(c){n(true),setTimeout(()=>n(false),1500),s?.(c);}return jsxs("div",{className:"relative inline-block",children:[jsx(motion.div,{className:"absolute -bottom-2 left-1/2 w-16 h-2 bg-black/20 rounded-full blur-sm",animate:t?{scaleX:[1,.8,1.2,.9,1.1,.95,1],opacity:[.3,.6,.2,.5,.3,.4,.3]}:{},style:{x:"-50%"},transition:{duration:1.5,ease:"easeOut"}}),jsx(motion.div,{animate:t?{y:[0,-40,-20,-35,-10,-25,-5,-15,0],rotate:[0,-5,2,-3,1,-2,.5,-1,0]}:{},transition:{duration:1.5,ease:"easeOut",times:[0,.2,.35,.5,.65,.75,.85,.95,1]},whileHover:t?{}:{y:[0,-8,0]},children:jsx("button",{className:i("px-6 py-3 rounded-xl font-medium","bg-orange-500 hover:bg-orange-600 text-white","transition-colors duration-200",r),onClick:l,disabled:t,...u,children:e})})]})}var R=p;export{p as BounceButton,R as default};//# sourceMappingURL=index.mjs.map
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/bounce-button/index.tsx"],"names":["cn","inputs","twMerge","clsx","BounceButton","children","className","onClick","props","isBouncing","setIsBouncing","useState","handleClick","e","jsxs","jsx","motion","bounce_button_default"],"mappings":"sKAGO,SAASA,CAAAA,CAAAA,GAAMC,EAAsB,CAC1C,OAAOC,OAAAA,CAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCKO,SAASG,CAAAA,CAAa,CAAE,QAAA,CAAAC,CAAAA,CAAU,UAAAC,CAAAA,CAAW,OAAA,CAAAC,CAAAA,CAAS,GAAGC,CAAM,CAAA,CAAsB,CAC1F,GAAM,CAACC,CAAAA,CAAYC,CAAa,CAAA,CAAIC,QAAAA,CAAS,KAAK,CAAA,CAElD,SAASC,EAAYC,CAAAA,CAAwC,CAC3DH,EAAc,IAAI,CAAA,CAClB,UAAA,CAAW,IAAMA,CAAAA,CAAc,KAAK,EAAG,IAAI,CAAA,CAC3CH,CAAAA,GAAUM,CAAC,EACb,CAEA,OACEC,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,uBAAA,CACb,QAAA,CAAA,CAAAC,GAAAA,CAACC,OAAO,GAAA,CAAP,CACC,UAAU,uEAAA,CACV,OAAA,CAASP,EAAa,CACpB,MAAA,CAAQ,CAAC,CAAA,CAAG,EAAA,CAAK,GAAA,CAAK,GAAK,GAAA,CAAK,GAAA,CAAM,CAAC,CAAA,CACvC,OAAA,CAAS,CAAC,GAAK,EAAA,CAAK,EAAA,CAAK,EAAA,CAAK,EAAA,CAAK,EAAA,CAAK,EAAG,CAC7C,CAAA,CAAI,GACJ,KAAA,CAAO,CAAE,EAAG,MAAO,CAAA,CACnB,UAAA,CAAY,CAAE,QAAA,CAAU,GAAA,CAAK,KAAM,SAAU,CAAA,CAC/C,EAEAM,GAAAA,CAACC,MAAAA,CAAO,IAAP,CACC,OAAA,CAASP,CAAAA,CAAa,CACpB,CAAA,CAAG,CAAC,EAAG,GAAA,CAAK,GAAA,CAAK,IAAK,GAAA,CAAK,GAAA,CAAK,GAAI,GAAA,CAAK,CAAC,CAAA,CAC1C,MAAA,CAAQ,CAAC,CAAA,CAAG,GAAI,CAAA,CAAG,EAAA,CAAI,CAAA,CAAG,EAAA,CAAI,EAAA,CAAK,EAAA,CAAI,CAAC,CAC1C,CAAA,CAAI,EAAC,CACL,UAAA,CAAY,CACV,SAAU,GAAA,CACV,IAAA,CAAM,UACN,KAAA,CAAO,CAAC,EAAG,EAAA,CAAK,GAAA,CAAM,EAAA,CAAK,GAAA,CAAM,GAAA,CAAM,GAAA,CAAM,IAAM,CAAC,CACtD,CAAA,CACA,UAAA,CAAaA,CAAAA,CAAiC,GAApB,CAAE,CAAA,CAAG,CAAC,CAAA,CAAG,EAAA,CAAI,CAAC,CAAE,CAAA,CAE1C,QAAA,CAAAM,IAAC,QAAA,CAAA,CACC,SAAA,CAAWf,EACT,kCAAA,CACA,8CAAA,CACA,gCAAA,CACAM,CACF,CAAA,CACA,OAAA,CAASM,EACT,QAAA,CAAUH,CAAAA,CACT,GAAGD,CAAAA,CAEH,QAAA,CAAAH,CAAAA,CACH,EACF,CAAA,CAAA,CACF,CAEJ,CAEA,IAAOY,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 React, { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface BounceButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function BounceButton({ children, className, onClick, ...props }: BounceButtonProps) {\r\n const [isBouncing, setIsBouncing] = useState(false);\r\n\r\n function handleClick(e: React.MouseEvent<HTMLButtonElement>) {\r\n setIsBouncing(true);\r\n setTimeout(() => setIsBouncing(false), 1500);\r\n onClick?.(e);\r\n }\r\n\r\n return (\r\n <div className=\"relative inline-block\">\r\n <motion.div\r\n className=\"absolute -bottom-2 left-1/2 w-16 h-2 bg-black/20 rounded-full blur-sm\"\r\n animate={isBouncing ? {\r\n scaleX: [1, 0.8, 1.2, 0.9, 1.1, 0.95, 1],\r\n opacity: [0.3, 0.6, 0.2, 0.5, 0.3, 0.4, 0.3],\r\n } : {}}\r\n style={{ x: \"-50%\" }}\r\n transition={{ duration: 1.5, ease: \"easeOut\" }}\r\n />\r\n\r\n <motion.div\r\n animate={isBouncing ? {\r\n y: [0, -40, -20, -35, -10, -25, -5, -15, 0],\r\n rotate: [0, -5, 2, -3, 1, -2, 0.5, -1, 0],\r\n } : {}}\r\n transition={{\r\n duration: 1.5,\r\n ease: \"easeOut\",\r\n times: [0, 0.2, 0.35, 0.5, 0.65, 0.75, 0.85, 0.95, 1],\r\n }}\r\n whileHover={!isBouncing ? { y: [0, -8, 0] } : {}}\r\n >\r\n <button\r\n className={cn(\r\n \"px-6 py-3 rounded-xl font-medium\",\r\n \"bg-orange-500 hover:bg-orange-600 text-white\",\r\n \"transition-colors duration-200\",\r\n className\r\n )}\r\n onClick={handleClick}\r\n disabled={isBouncing}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default BounceButton;\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 u({text:e,className:a,delay:i=0,duration:s=.4}){let m=Array.from(e);return jsxRuntime.jsx("div",{className:n("flex",a),children:m.map((t,r)=>jsxRuntime.jsx(framerMotion.motion.span,{className:"inline-block",style:{whiteSpace:t===" "?"pre":"normal"},animate:{y:[0,-20,0]},transition:{delay:i+r*.03,duration:s,ease:"easeInOut",repeat:1/0,repeatDelay:.5},children:t},`${t}-${r}`))})}var g=u;exports.BounceText=u;exports.default=g;//# sourceMappingURL=index.js.map
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/bounce-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","BounceText","text","className","delay","duration","letters","jsx","letter","index","motion","bounce_text_default"],"mappings":"qNAGO,SAASA,KAAMC,CAAAA,CAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCQO,SAASG,EAAW,CACzB,IAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,EAAQ,CAAA,CACR,QAAA,CAAAC,CAAAA,CAAW,EACb,CAAA,CAAoB,CAClB,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,GAAA,CAAK,CAAC,CACf,CAAA,CACA,WAAY,CACV,KAAA,CAAOJ,CAAAA,CAAQK,CAAAA,CAAQ,GAAA,CACvB,QAAA,CAAUJ,EACV,IAAA,CAAM,WAAA,CACN,MAAA,CAAQ,CAAA,CAAA,CAAA,CACR,WAAA,CAAa,EACf,EAEC,QAAA,CAAAG,CAAAA,CAAAA,CAdI,CAAA,EAAGA,CAAM,CAAA,CAAA,EAAIC,CAAK,CAAA,CAezB,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 BounceTextProps {\r\n text: string;\r\n className?: string;\r\n delay?: number;\r\n duration?: number;\r\n}\r\n\r\nexport function BounceText({\r\n text,\r\n className,\r\n delay = 0,\r\n duration = 0.4,\r\n}: BounceTextProps) {\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, -20, 0],\r\n }}\r\n transition={{\r\n delay: delay + index * 0.03,\r\n duration: duration,\r\n ease: \"easeInOut\",\r\n repeat: Infinity,\r\n repeatDelay: 0.5,\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 BounceText;\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 u({text:e,className:a,delay:i=0,duration:s=.4}){let m=Array.from(e);return jsx("div",{className:n("flex",a),children:m.map((t,r)=>jsx(motion.span,{className:"inline-block",style:{whiteSpace:t===" "?"pre":"normal"},animate:{y:[0,-20,0]},transition:{delay:i+r*.03,duration:s,ease:"easeInOut",repeat:1/0,repeatDelay:.5},children:t},`${t}-${r}`))})}var g=u;export{u as BounceText,g as default};//# sourceMappingURL=index.mjs.map
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/bounce-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","BounceText","text","className","delay","duration","letters","jsx","letter","index","motion","bounce_text_default"],"mappings":"oIAGO,SAASA,KAAMC,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCQO,SAASG,EAAW,CACzB,IAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,EAAQ,CAAA,CACR,QAAA,CAAAC,CAAAA,CAAW,EACb,CAAA,CAAoB,CAClB,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,GAAA,CAAK,CAAC,CACf,CAAA,CACA,WAAY,CACV,KAAA,CAAOJ,CAAAA,CAAQK,CAAAA,CAAQ,GAAA,CACvB,QAAA,CAAUJ,EACV,IAAA,CAAM,WAAA,CACN,MAAA,CAAQ,CAAA,CAAA,CAAA,CACR,WAAA,CAAa,EACf,EAEC,QAAA,CAAAG,CAAAA,CAAAA,CAdI,CAAA,EAAGA,CAAM,CAAA,CAAA,EAAIC,CAAK,CAAA,CAezB,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 BounceTextProps {\r\n text: string;\r\n className?: string;\r\n delay?: number;\r\n duration?: number;\r\n}\r\n\r\nexport function BounceText({\r\n text,\r\n className,\r\n delay = 0,\r\n duration = 0.4,\r\n}: BounceTextProps) {\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, -20, 0],\r\n }}\r\n transition={{\r\n delay: delay + index * 0.03,\r\n duration: duration,\r\n ease: \"easeInOut\",\r\n repeat: Infinity,\r\n repeatDelay: 0.5,\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 BounceText;\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 e(...r){return tailwindMerge.twMerge(clsx.clsx(r))}function c({frontContent:r,backContent:i,className:l}){let[o,a]=react.useState(false);return jsxRuntime.jsx("div",{className:e("relative w-full h-full [perspective:1000px]",l),onMouseEnter:()=>a(true),onMouseLeave:()=>a(false),children:jsxRuntime.jsxs("div",{className:e("relative w-full h-full [transform-style:preserve-3d] transition-transform duration-700",o?"[transform:rotateY(180deg)]":""),children:[jsxRuntime.jsx("div",{className:e("absolute inset-0 w-full h-full [backface-visibility:hidden]","rounded-2xl bg-white dark:bg-zinc-900","border border-zinc-200 dark:border-zinc-800","shadow-lg p-6"),children:r}),jsxRuntime.jsx("div",{className:e("absolute inset-0 w-full h-full [backface-visibility:hidden] [transform:rotateY(180deg)]","rounded-2xl bg-zinc-100 dark:bg-zinc-800","border border-zinc-200 dark:border-zinc-700","shadow-lg p-6"),children:i})]})})}var h=c;exports.CardFlip=c;exports.default=h;//# sourceMappingURL=index.js.map
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/card-flip/index.tsx"],"names":["cn","inputs","twMerge","clsx","CardFlip","frontContent","backContent","className","isFlipped","setIsFlipped","useState","jsx","jsxs","card_flip_default"],"mappings":"sMAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCMO,SAASG,CAAAA,CAAS,CAAE,aAAAC,CAAAA,CAAc,WAAA,CAAAC,CAAAA,CAAa,SAAA,CAAAC,CAAU,CAAA,CAAkB,CAChF,GAAM,CAACC,CAAAA,CAAWC,CAAY,CAAA,CAAIC,cAAAA,CAAS,KAAK,CAAA,CAEhD,OACEC,cAAAA,CAAC,KAAA,CAAA,CACC,SAAA,CAAWX,CAAAA,CAAG,8CAA+CO,CAAS,CAAA,CACtE,aAAc,IAAME,CAAAA,CAAa,IAAI,CAAA,CACrC,YAAA,CAAc,IAAMA,CAAAA,CAAa,KAAK,CAAA,CAEtC,SAAAG,eAAAA,CAAC,KAAA,CAAA,CACC,SAAA,CAAWZ,CAAAA,CACT,wFAAA,CACAQ,CAAAA,CAAY,8BAAgC,EAC9C,CAAA,CAGA,QAAA,CAAA,CAAAG,cAAAA,CAAC,KAAA,CAAA,CACC,SAAA,CAAWX,EACT,6DAAA,CACA,uCAAA,CACA,8CACA,eACF,CAAA,CAEC,SAAAK,CAAAA,CACH,CAAA,CAGAM,cAAAA,CAAC,KAAA,CAAA,CACC,SAAA,CAAWX,CAAAA,CACT,0FACA,0CAAA,CACA,6CAAA,CACA,eACF,CAAA,CAEC,QAAA,CAAAM,CAAAA,CACH,GACF,CAAA,CACF,CAEJ,CAEA,IAAOO,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 React, { useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface CardFlipProps {\r\n frontContent: React.ReactNode;\r\n backContent: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function CardFlip({ frontContent, backContent, className }: CardFlipProps) {\r\n const [isFlipped, setIsFlipped] = useState(false);\r\n\r\n return (\r\n <div\r\n className={cn(\"relative w-full h-full [perspective:1000px]\", className)}\r\n onMouseEnter={() => setIsFlipped(true)}\r\n onMouseLeave={() => setIsFlipped(false)}\r\n >\r\n <div\r\n className={cn(\r\n \"relative w-full h-full [transform-style:preserve-3d] transition-transform duration-700\",\r\n isFlipped ? \"[transform:rotateY(180deg)]\" : \"\"\r\n )}\r\n >\r\n {/* Front */}\r\n <div\r\n className={cn(\r\n \"absolute inset-0 w-full h-full [backface-visibility:hidden]\",\r\n \"rounded-2xl bg-white dark:bg-zinc-900\",\r\n \"border border-zinc-200 dark:border-zinc-800\",\r\n \"shadow-lg p-6\"\r\n )}\r\n >\r\n {frontContent}\r\n </div>\r\n\r\n {/* Back */}\r\n <div\r\n className={cn(\r\n \"absolute inset-0 w-full h-full [backface-visibility:hidden] [transform:rotateY(180deg)]\",\r\n \"rounded-2xl bg-zinc-100 dark:bg-zinc-800\",\r\n \"border border-zinc-200 dark:border-zinc-700\",\r\n \"shadow-lg p-6\"\r\n )}\r\n >\r\n {backContent}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default CardFlip;\r\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {useState}from'react';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx,jsxs}from'react/jsx-runtime';function e(...r){return twMerge(clsx(r))}function c({frontContent:r,backContent:i,className:l}){let[o,a]=useState(false);return jsx("div",{className:e("relative w-full h-full [perspective:1000px]",l),onMouseEnter:()=>a(true),onMouseLeave:()=>a(false),children:jsxs("div",{className:e("relative w-full h-full [transform-style:preserve-3d] transition-transform duration-700",o?"[transform:rotateY(180deg)]":""),children:[jsx("div",{className:e("absolute inset-0 w-full h-full [backface-visibility:hidden]","rounded-2xl bg-white dark:bg-zinc-900","border border-zinc-200 dark:border-zinc-800","shadow-lg p-6"),children:r}),jsx("div",{className:e("absolute inset-0 w-full h-full [backface-visibility:hidden] [transform:rotateY(180deg)]","rounded-2xl bg-zinc-100 dark:bg-zinc-800","border border-zinc-200 dark:border-zinc-700","shadow-lg p-6"),children:i})]})})}var h=c;export{c as CardFlip,h as default};//# sourceMappingURL=index.mjs.map
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/card-flip/index.tsx"],"names":["cn","inputs","twMerge","clsx","CardFlip","frontContent","backContent","className","isFlipped","setIsFlipped","useState","jsx","jsxs","card_flip_default"],"mappings":"mIAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCMO,SAASG,CAAAA,CAAS,CAAE,aAAAC,CAAAA,CAAc,WAAA,CAAAC,CAAAA,CAAa,SAAA,CAAAC,CAAU,CAAA,CAAkB,CAChF,GAAM,CAACC,CAAAA,CAAWC,CAAY,CAAA,CAAIC,QAAAA,CAAS,KAAK,CAAA,CAEhD,OACEC,GAAAA,CAAC,KAAA,CAAA,CACC,SAAA,CAAWX,CAAAA,CAAG,8CAA+CO,CAAS,CAAA,CACtE,aAAc,IAAME,CAAAA,CAAa,IAAI,CAAA,CACrC,YAAA,CAAc,IAAMA,CAAAA,CAAa,KAAK,CAAA,CAEtC,SAAAG,IAAAA,CAAC,KAAA,CAAA,CACC,SAAA,CAAWZ,CAAAA,CACT,wFAAA,CACAQ,CAAAA,CAAY,8BAAgC,EAC9C,CAAA,CAGA,QAAA,CAAA,CAAAG,GAAAA,CAAC,KAAA,CAAA,CACC,SAAA,CAAWX,EACT,6DAAA,CACA,uCAAA,CACA,8CACA,eACF,CAAA,CAEC,SAAAK,CAAAA,CACH,CAAA,CAGAM,GAAAA,CAAC,KAAA,CAAA,CACC,SAAA,CAAWX,CAAAA,CACT,0FACA,0CAAA,CACA,6CAAA,CACA,eACF,CAAA,CAEC,QAAA,CAAAM,CAAAA,CACH,GACF,CAAA,CACF,CAEJ,CAEA,IAAOO,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 React, { useState } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface CardFlipProps {\r\n frontContent: React.ReactNode;\r\n backContent: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport function CardFlip({ frontContent, backContent, className }: CardFlipProps) {\r\n const [isFlipped, setIsFlipped] = useState(false);\r\n\r\n return (\r\n <div\r\n className={cn(\"relative w-full h-full [perspective:1000px]\", className)}\r\n onMouseEnter={() => setIsFlipped(true)}\r\n onMouseLeave={() => setIsFlipped(false)}\r\n >\r\n <div\r\n className={cn(\r\n \"relative w-full h-full [transform-style:preserve-3d] transition-transform duration-700\",\r\n isFlipped ? \"[transform:rotateY(180deg)]\" : \"\"\r\n )}\r\n >\r\n {/* Front */}\r\n <div\r\n className={cn(\r\n \"absolute inset-0 w-full h-full [backface-visibility:hidden]\",\r\n \"rounded-2xl bg-white dark:bg-zinc-900\",\r\n \"border border-zinc-200 dark:border-zinc-800\",\r\n \"shadow-lg p-6\"\r\n )}\r\n >\r\n {frontContent}\r\n </div>\r\n\r\n {/* Back */}\r\n <div\r\n className={cn(\r\n \"absolute inset-0 w-full h-full [backface-visibility:hidden] [transform:rotateY(180deg)]\",\r\n \"rounded-2xl bg-zinc-100 dark:bg-zinc-800\",\r\n \"border border-zinc-200 dark:border-zinc-700\",\r\n \"shadow-lg p-6\"\r\n )}\r\n >\r\n {backContent}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default CardFlip;\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 a(...e){return tailwindMerge.twMerge(clsx.clsx(e))}function c({text:e,className:i,delay:n=0}){let s=Array.from(e);return jsxRuntime.jsx("div",{className:a("flex",i),style:{perspective:"1000px"},children:s.map((t,r)=>jsxRuntime.jsx(framerMotion.motion.span,{className:"inline-block origin-center",style:{whiteSpace:t===" "?"pre":"normal"},animate:{rotateX:[0,360]},transition:{duration:1.5,repeat:1/0,delay:n+r*.08,ease:"easeInOut",repeatDelay:.8},children:t},`${t}-${r}`))})}var g=c;exports.FlipText=c;exports.default=g;//# sourceMappingURL=index.js.map
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/flip-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","FlipText","text","className","delay","letters","jsx","letter","index","motion","flip_text_default"],"mappings":"qNAGO,SAASA,KAAMC,CAAAA,CAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCOO,SAASG,EAAS,CAAE,IAAA,CAAAC,CAAAA,CAAM,SAAA,CAAAC,CAAAA,CAAW,KAAA,CAAAC,EAAQ,CAAE,CAAA,CAAkB,CACtE,IAAMC,CAAAA,CAAU,KAAA,CAAM,KAAKH,CAAI,CAAA,CAE/B,OACEI,cAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAWT,CAAAA,CAAG,MAAA,CAAQM,CAAS,CAAA,CAAG,KAAA,CAAO,CAAE,WAAA,CAAa,QAAS,EACnE,QAAA,CAAAE,CAAAA,CAAQ,GAAA,CAAI,CAACE,CAAAA,CAAQC,CAAAA,GACpBF,eAACG,mBAAAA,CAAO,IAAA,CAAP,CAEC,SAAA,CAAU,4BAAA,CACV,KAAA,CAAO,CAAE,UAAA,CAAYF,CAAAA,GAAW,GAAA,CAAM,KAAA,CAAQ,QAAS,CAAA,CACvD,OAAA,CAAS,CAAE,OAAA,CAAS,CAAC,CAAA,CAAG,GAAG,CAAE,CAAA,CAC7B,WAAY,CACV,QAAA,CAAU,GAAA,CACV,MAAA,CAAQ,CAAA,CAAA,CAAA,CACR,KAAA,CAAOH,EAAQI,CAAAA,CAAQ,GAAA,CACvB,IAAA,CAAM,WAAA,CACN,WAAA,CAAa,EACf,EAEC,QAAA,CAAAD,CAAAA,CAAAA,CAZI,CAAA,EAAGA,CAAM,CAAA,CAAA,EAAIC,CAAK,CAAA,CAazB,CACD,CAAA,CACH,CAEJ,CAEA,IAAOE,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 React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface FlipTextProps {\r\n text: string;\r\n className?: string;\r\n delay?: number;\r\n}\r\n\r\nexport function FlipText({ text, className, delay = 0 }: FlipTextProps) {\r\n const letters = Array.from(text);\r\n\r\n return (\r\n <div className={cn(\"flex\", className)} style={{ perspective: \"1000px\" }}>\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={`${letter}-${index}`}\r\n className=\"inline-block origin-center\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n animate={{ rotateX: [0, 360] }}\r\n transition={{\r\n duration: 1.5,\r\n repeat: Infinity,\r\n delay: delay + index * 0.08,\r\n ease: \"easeInOut\",\r\n repeatDelay: 0.8,\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 FlipText;\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 a(...e){return twMerge(clsx(e))}function c({text:e,className:i,delay:n=0}){let s=Array.from(e);return jsx("div",{className:a("flex",i),style:{perspective:"1000px"},children:s.map((t,r)=>jsx(motion.span,{className:"inline-block origin-center",style:{whiteSpace:t===" "?"pre":"normal"},animate:{rotateX:[0,360]},transition:{duration:1.5,repeat:1/0,delay:n+r*.08,ease:"easeInOut",repeatDelay:.8},children:t},`${t}-${r}`))})}var g=c;export{c as FlipText,g as default};//# sourceMappingURL=index.mjs.map
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/flip-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","FlipText","text","className","delay","letters","jsx","letter","index","motion","flip_text_default"],"mappings":"oIAGO,SAASA,KAAMC,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCOO,SAASG,EAAS,CAAE,IAAA,CAAAC,CAAAA,CAAM,SAAA,CAAAC,CAAAA,CAAW,KAAA,CAAAC,EAAQ,CAAE,CAAA,CAAkB,CACtE,IAAMC,CAAAA,CAAU,KAAA,CAAM,KAAKH,CAAI,CAAA,CAE/B,OACEI,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAWT,CAAAA,CAAG,MAAA,CAAQM,CAAS,CAAA,CAAG,KAAA,CAAO,CAAE,WAAA,CAAa,QAAS,EACnE,QAAA,CAAAE,CAAAA,CAAQ,GAAA,CAAI,CAACE,CAAAA,CAAQC,CAAAA,GACpBF,IAACG,MAAAA,CAAO,IAAA,CAAP,CAEC,SAAA,CAAU,4BAAA,CACV,KAAA,CAAO,CAAE,UAAA,CAAYF,CAAAA,GAAW,GAAA,CAAM,KAAA,CAAQ,QAAS,CAAA,CACvD,OAAA,CAAS,CAAE,OAAA,CAAS,CAAC,CAAA,CAAG,GAAG,CAAE,CAAA,CAC7B,WAAY,CACV,QAAA,CAAU,GAAA,CACV,MAAA,CAAQ,CAAA,CAAA,CAAA,CACR,KAAA,CAAOH,EAAQI,CAAAA,CAAQ,GAAA,CACvB,IAAA,CAAM,WAAA,CACN,WAAA,CAAa,EACf,EAEC,QAAA,CAAAD,CAAAA,CAAAA,CAZI,CAAA,EAAGA,CAAM,CAAA,CAAA,EAAIC,CAAK,CAAA,CAazB,CACD,CAAA,CACH,CAEJ,CAEA,IAAOE,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 React from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface FlipTextProps {\r\n text: string;\r\n className?: string;\r\n delay?: number;\r\n}\r\n\r\nexport function FlipText({ text, className, delay = 0 }: FlipTextProps) {\r\n const letters = Array.from(text);\r\n\r\n return (\r\n <div className={cn(\"flex\", className)} style={{ perspective: \"1000px\" }}>\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={`${letter}-${index}`}\r\n className=\"inline-block origin-center\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n animate={{ rotateX: [0, 360] }}\r\n transition={{\r\n duration: 1.5,\r\n repeat: Infinity,\r\n delay: delay + index * 0.08,\r\n ease: \"easeInOut\",\r\n repeatDelay: 0.8,\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 FlipText;\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 e(...r){return tailwindMerge.twMerge(clsx.clsx(r))}function l({children:r,className:t,...a}){return jsxRuntime.jsx("div",{className:e("rounded-2xl p-6","bg-white/10 dark:bg-black/10","backdrop-blur-xl","border border-white/20 dark:border-white/10","shadow-xl",t),...a,children:r})}var u=l;exports.GlassCard=l;exports.default=u;//# sourceMappingURL=index.js.map
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/glass-card/index.tsx"],"names":["cn","inputs","twMerge","clsx","GlassCard","children","className","props","jsx","glass_card_default"],"mappings":"+KAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCIO,SAASG,CAAAA,CAAU,CAAE,QAAA,CAAAC,EAAU,SAAA,CAAAC,CAAAA,CAAW,GAAGC,CAAM,CAAA,CAAmB,CAC3E,OACEC,cAAAA,CAAC,KAAA,CAAA,CACC,SAAA,CAAWR,CAAAA,CACT,iBAAA,CACA,8BAAA,CACA,mBACA,6CAAA,CACA,WAAA,CACAM,CACF,CAAA,CACC,GAAGC,CAAAA,CAEH,SAAAF,CAAAA,CACH,CAEJ,CAEA,IAAOI,CAAAA,CAAQL","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 { cn } from \"../utils/cn\";\r\n\r\ninterface GlassCardProps extends React.HTMLAttributes<HTMLDivElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function GlassCard({ children, className, ...props }: GlassCardProps) {\r\n return (\r\n <div\r\n className={cn(\r\n \"rounded-2xl p-6\",\r\n \"bg-white/10 dark:bg-black/10\",\r\n \"backdrop-blur-xl\",\r\n \"border border-white/20 dark:border-white/10\",\r\n \"shadow-xl\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport default GlassCard;\r\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx}from'react/jsx-runtime';function e(...r){return twMerge(clsx(r))}function l({children:r,className:t,...a}){return jsx("div",{className:e("rounded-2xl p-6","bg-white/10 dark:bg-black/10","backdrop-blur-xl","border border-white/20 dark:border-white/10","shadow-xl",t),...a,children:r})}var u=l;export{l as GlassCard,u as default};//# sourceMappingURL=index.mjs.map
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/glass-card/index.tsx"],"names":["cn","inputs","twMerge","clsx","GlassCard","children","className","props","jsx","glass_card_default"],"mappings":"iGAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCIO,SAASG,CAAAA,CAAU,CAAE,QAAA,CAAAC,EAAU,SAAA,CAAAC,CAAAA,CAAW,GAAGC,CAAM,CAAA,CAAmB,CAC3E,OACEC,GAAAA,CAAC,KAAA,CAAA,CACC,SAAA,CAAWR,CAAAA,CACT,iBAAA,CACA,8BAAA,CACA,mBACA,6CAAA,CACA,WAAA,CACAM,CACF,CAAA,CACC,GAAGC,CAAAA,CAEH,SAAAF,CAAAA,CACH,CAEJ,CAEA,IAAOI,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 React from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GlassCardProps extends React.HTMLAttributes<HTMLDivElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function GlassCard({ children, className, ...props }: GlassCardProps) {\r\n return (\r\n <div\r\n className={cn(\r\n \"rounded-2xl p-6\",\r\n \"bg-white/10 dark:bg-black/10\",\r\n \"backdrop-blur-xl\",\r\n \"border border-white/20 dark:border-white/10\",\r\n \"shadow-xl\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport default GlassCard;\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(...t){return tailwindMerge.twMerge(clsx.clsx(t))}function x({text:t="Glitch Text",className:l,glitchIntensity:m="medium",color:c="orange",isStatic:a=false,size:f="md"}){let n={rainbow:{primary:"#a855f7",before:"#22d3ee",after:"#f472b6"},blue:{primary:"#3b82f6",before:"#60a5fa",after:"#1d4ed8"},purple:{primary:"#8b5cf6",before:"#a78bfa",after:"#6d28d9"},cyan:{primary:"#06b6d4",before:"#22d3ee",after:"#0891b2"},pink:{primary:"#ec4899",before:"#f472b6",after:"#db2777"},orange:{primary:"#f97316",before:"#fb923c",after:"#ea580c"}}[c],e={light:{translateRange:2,skewRange:.5},medium:{translateRange:3,skewRange:1},heavy:{translateRange:5,skewRange:2},extreme:{translateRange:8,skewRange:3}}[m],g={sm:"text-2xl",md:"text-4xl",lg:"text-5xl",xl:"text-6xl","2xl":"text-7xl","3xl":"text-8xl"},o={animate:{x:[0,e.translateRange,-e.translateRange,0],y:[0,-e.translateRange,e.translateRange,0],skewX:[0,e.skewRange,-e.skewRange,0]},transition:{duration:.5,repeat:1/0,ease:"easeInOut"}};return jsxRuntime.jsx("div",{className:r("relative flex items-center justify-center p-8",l),children:jsxRuntime.jsxs(framerMotion.motion.div,{className:r("relative font-bold tracking-wider",g[f]),style:{color:n.primary},animate:a?void 0:o.animate,transition:o.transition,children:[t,jsxRuntime.jsx(framerMotion.motion.span,{className:"absolute inset-0 pointer-events-none",style:{color:n.before,opacity:.8},animate:a?void 0:{x:[-e.translateRange,e.translateRange,0],y:[e.translateRange,-e.translateRange,0]},transition:{duration:.5,repeat:1/0},children:t}),jsxRuntime.jsx(framerMotion.motion.span,{className:"absolute inset-0 pointer-events-none",style:{color:n.after,opacity:.8},animate:a?void 0:{x:[e.translateRange,-e.translateRange,0],y:[-e.translateRange,e.translateRange,0]},transition:{duration:.5,repeat:1/0},children:t})]})})}var I=x;exports.GlitchText=x;exports.default=I;//# sourceMappingURL=index.js.map
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/glitch-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","GlitchText","text","className","glitchIntensity","color","isStatic","size","selectedScheme","settings","sizeMap","glitchAnimation","jsx","jsxs","motion","glitch_text_default"],"mappings":"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","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, { useRef } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GlitchTextProps {\r\n text?: string;\r\n className?: string;\r\n glitchIntensity?: \"light\" | \"medium\" | \"heavy\" | \"extreme\";\r\n color?: \"rainbow\" | \"blue\" | \"purple\" | \"cyan\" | \"pink\" | \"orange\";\r\n isStatic?: boolean;\r\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"3xl\";\r\n}\r\n\r\nexport function GlitchText({\r\n text = \"Glitch Text\",\r\n className,\r\n glitchIntensity = \"medium\",\r\n color = \"orange\",\r\n isStatic = false,\r\n size = \"md\",\r\n}: GlitchTextProps) {\r\n const colorSchemes = {\r\n rainbow: { primary: \"#a855f7\", before: \"#22d3ee\", after: \"#f472b6\" },\r\n blue: { primary: \"#3b82f6\", before: \"#60a5fa\", after: \"#1d4ed8\" },\r\n purple: { primary: \"#8b5cf6\", before: \"#a78bfa\", after: \"#6d28d9\" },\r\n cyan: { primary: \"#06b6d4\", before: \"#22d3ee\", after: \"#0891b2\" },\r\n pink: { primary: \"#ec4899\", before: \"#f472b6\", after: \"#db2777\" },\r\n orange: { primary: \"#f97316\", before: \"#fb923c\", after: \"#ea580c\" },\r\n };\r\n\r\n const selectedScheme = colorSchemes[color];\r\n\r\n const intensitySettings = {\r\n light: { translateRange: 2, skewRange: 0.5 },\r\n medium: { translateRange: 3, skewRange: 1 },\r\n heavy: { translateRange: 5, skewRange: 2 },\r\n extreme: { translateRange: 8, skewRange: 3 },\r\n };\r\n\r\n const settings = intensitySettings[glitchIntensity];\r\n\r\n const sizeMap = {\r\n sm: \"text-2xl\",\r\n md: \"text-4xl\",\r\n lg: \"text-5xl\",\r\n xl: \"text-6xl\",\r\n \"2xl\": \"text-7xl\",\r\n \"3xl\": \"text-8xl\",\r\n };\r\n\r\n const glitchAnimation = {\r\n animate: {\r\n x: [0, settings.translateRange, -settings.translateRange, 0],\r\n y: [0, -settings.translateRange, settings.translateRange, 0],\r\n skewX: [0, settings.skewRange, -settings.skewRange, 0],\r\n },\r\n transition: {\r\n duration: 0.5,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n },\r\n };\r\n\r\n return (\r\n <div className={cn(\"relative flex items-center justify-center p-8\", className)}>\r\n <motion.div\r\n className={cn(\"relative font-bold tracking-wider\", sizeMap[size])}\r\n style={{ color: selectedScheme.primary }}\r\n animate={!isStatic ? glitchAnimation.animate : undefined}\r\n transition={glitchAnimation.transition}\r\n >\r\n {text}\r\n <motion.span\r\n className=\"absolute inset-0 pointer-events-none\"\r\n style={{ color: selectedScheme.before, opacity: 0.8 }}\r\n animate={!isStatic ? {\r\n x: [-settings.translateRange, settings.translateRange, 0],\r\n y: [settings.translateRange, -settings.translateRange, 0],\r\n } : undefined}\r\n transition={{ duration: 0.5, repeat: Infinity }}\r\n >\r\n {text}\r\n </motion.span>\r\n <motion.span\r\n className=\"absolute inset-0 pointer-events-none\"\r\n style={{ color: selectedScheme.after, opacity: 0.8 }}\r\n animate={!isStatic ? {\r\n x: [settings.translateRange, -settings.translateRange, 0],\r\n y: [-settings.translateRange, settings.translateRange, 0],\r\n } : undefined}\r\n transition={{ duration: 0.5, repeat: Infinity }}\r\n >\r\n {text}\r\n </motion.span>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default GlitchText;\r\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {motion}from'framer-motion';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx,jsxs}from'react/jsx-runtime';function r(...t){return twMerge(clsx(t))}function x({text:t="Glitch Text",className:l,glitchIntensity:m="medium",color:c="orange",isStatic:a=false,size:f="md"}){let n={rainbow:{primary:"#a855f7",before:"#22d3ee",after:"#f472b6"},blue:{primary:"#3b82f6",before:"#60a5fa",after:"#1d4ed8"},purple:{primary:"#8b5cf6",before:"#a78bfa",after:"#6d28d9"},cyan:{primary:"#06b6d4",before:"#22d3ee",after:"#0891b2"},pink:{primary:"#ec4899",before:"#f472b6",after:"#db2777"},orange:{primary:"#f97316",before:"#fb923c",after:"#ea580c"}}[c],e={light:{translateRange:2,skewRange:.5},medium:{translateRange:3,skewRange:1},heavy:{translateRange:5,skewRange:2},extreme:{translateRange:8,skewRange:3}}[m],g={sm:"text-2xl",md:"text-4xl",lg:"text-5xl",xl:"text-6xl","2xl":"text-7xl","3xl":"text-8xl"},o={animate:{x:[0,e.translateRange,-e.translateRange,0],y:[0,-e.translateRange,e.translateRange,0],skewX:[0,e.skewRange,-e.skewRange,0]},transition:{duration:.5,repeat:1/0,ease:"easeInOut"}};return jsx("div",{className:r("relative flex items-center justify-center p-8",l),children:jsxs(motion.div,{className:r("relative font-bold tracking-wider",g[f]),style:{color:n.primary},animate:a?void 0:o.animate,transition:o.transition,children:[t,jsx(motion.span,{className:"absolute inset-0 pointer-events-none",style:{color:n.before,opacity:.8},animate:a?void 0:{x:[-e.translateRange,e.translateRange,0],y:[e.translateRange,-e.translateRange,0]},transition:{duration:.5,repeat:1/0},children:t}),jsx(motion.span,{className:"absolute inset-0 pointer-events-none",style:{color:n.after,opacity:.8},animate:a?void 0:{x:[e.translateRange,-e.translateRange,0],y:[-e.translateRange,e.translateRange,0]},transition:{duration:.5,repeat:1/0},children:t})]})})}var I=x;export{x as GlitchText,I as default};//# sourceMappingURL=index.mjs.map
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/glitch-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","GlitchText","text","className","glitchIntensity","color","isStatic","size","selectedScheme","settings","sizeMap","glitchAnimation","jsx","jsxs","motion","glitch_text_default"],"mappings":"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","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, { useRef } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GlitchTextProps {\r\n text?: string;\r\n className?: string;\r\n glitchIntensity?: \"light\" | \"medium\" | \"heavy\" | \"extreme\";\r\n color?: \"rainbow\" | \"blue\" | \"purple\" | \"cyan\" | \"pink\" | \"orange\";\r\n isStatic?: boolean;\r\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"3xl\";\r\n}\r\n\r\nexport function GlitchText({\r\n text = \"Glitch Text\",\r\n className,\r\n glitchIntensity = \"medium\",\r\n color = \"orange\",\r\n isStatic = false,\r\n size = \"md\",\r\n}: GlitchTextProps) {\r\n const colorSchemes = {\r\n rainbow: { primary: \"#a855f7\", before: \"#22d3ee\", after: \"#f472b6\" },\r\n blue: { primary: \"#3b82f6\", before: \"#60a5fa\", after: \"#1d4ed8\" },\r\n purple: { primary: \"#8b5cf6\", before: \"#a78bfa\", after: \"#6d28d9\" },\r\n cyan: { primary: \"#06b6d4\", before: \"#22d3ee\", after: \"#0891b2\" },\r\n pink: { primary: \"#ec4899\", before: \"#f472b6\", after: \"#db2777\" },\r\n orange: { primary: \"#f97316\", before: \"#fb923c\", after: \"#ea580c\" },\r\n };\r\n\r\n const selectedScheme = colorSchemes[color];\r\n\r\n const intensitySettings = {\r\n light: { translateRange: 2, skewRange: 0.5 },\r\n medium: { translateRange: 3, skewRange: 1 },\r\n heavy: { translateRange: 5, skewRange: 2 },\r\n extreme: { translateRange: 8, skewRange: 3 },\r\n };\r\n\r\n const settings = intensitySettings[glitchIntensity];\r\n\r\n const sizeMap = {\r\n sm: \"text-2xl\",\r\n md: \"text-4xl\",\r\n lg: \"text-5xl\",\r\n xl: \"text-6xl\",\r\n \"2xl\": \"text-7xl\",\r\n \"3xl\": \"text-8xl\",\r\n };\r\n\r\n const glitchAnimation = {\r\n animate: {\r\n x: [0, settings.translateRange, -settings.translateRange, 0],\r\n y: [0, -settings.translateRange, settings.translateRange, 0],\r\n skewX: [0, settings.skewRange, -settings.skewRange, 0],\r\n },\r\n transition: {\r\n duration: 0.5,\r\n repeat: Infinity,\r\n ease: \"easeInOut\",\r\n },\r\n };\r\n\r\n return (\r\n <div className={cn(\"relative flex items-center justify-center p-8\", className)}>\r\n <motion.div\r\n className={cn(\"relative font-bold tracking-wider\", sizeMap[size])}\r\n style={{ color: selectedScheme.primary }}\r\n animate={!isStatic ? glitchAnimation.animate : undefined}\r\n transition={glitchAnimation.transition}\r\n >\r\n {text}\r\n <motion.span\r\n className=\"absolute inset-0 pointer-events-none\"\r\n style={{ color: selectedScheme.before, opacity: 0.8 }}\r\n animate={!isStatic ? {\r\n x: [-settings.translateRange, settings.translateRange, 0],\r\n y: [settings.translateRange, -settings.translateRange, 0],\r\n } : undefined}\r\n transition={{ duration: 0.5, repeat: Infinity }}\r\n >\r\n {text}\r\n </motion.span>\r\n <motion.span\r\n className=\"absolute inset-0 pointer-events-none\"\r\n style={{ color: selectedScheme.after, opacity: 0.8 }}\r\n animate={!isStatic ? {\r\n x: [settings.translateRange, -settings.translateRange, 0],\r\n y: [-settings.translateRange, settings.translateRange, 0],\r\n } : undefined}\r\n transition={{ duration: 0.5, repeat: Infinity }}\r\n >\r\n {text}\r\n </motion.span>\r\n </motion.div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default GlitchText;\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 a(...n){return tailwindMerge.twMerge(clsx.clsx(n))}function m({children:n,className:s,glowColor:t="rgba(59, 130, 246, 0.8)",...u}){let[e,o]=react.useState(false);return jsxRuntime.jsxs(framerMotion.motion.div,{className:"relative inline-block",onMouseEnter:()=>o(true),onMouseLeave:()=>o(false),animate:{filter:e?[`drop-shadow(0 0 10px ${t})`,`drop-shadow(0 0 25px ${t})`,`drop-shadow(0 0 10px ${t})`]:"drop-shadow(0 0 0px transparent)"},transition:{duration:e?1.5:.3,repeat:e?1/0:0},children:[jsxRuntime.jsx(framerMotion.motion.div,{className:"absolute inset-0 rounded-xl",animate:e?{boxShadow:[`0 0 20px ${t}`,`0 0 40px ${t}`,`0 0 20px ${t}`],scale:[1,1.05,1]}:{boxShadow:"0 0 0px transparent",scale:1},transition:{duration:2,repeat:e?1/0:0,ease:"easeInOut"}}),jsxRuntime.jsx("button",{className:a("relative px-6 py-3 rounded-xl font-medium","bg-blue-600 hover:bg-blue-700 text-white","transition-all duration-300",e&&"bg-blue-500",s),...u,children:n})]})}var B=m;exports.GlowButton=m;exports.default=B;//# sourceMappingURL=index.js.map
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/glow-button/index.tsx"],"names":["cn","inputs","twMerge","clsx","GlowButton","children","className","glowColor","props","isGlowing","setIsGlowing","useState","jsxs","motion","jsx","glow_button_default"],"mappings":"4OAGO,SAASA,KAAMC,CAAAA,CAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,UAAKF,CAAM,CAAC,CAC7B,CCMO,SAASG,CAAAA,CAAW,CACzB,QAAA,CAAAC,CAAAA,CACA,UAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CAAY,yBAAA,CACZ,GAAGC,CACL,CAAA,CAAoB,CAClB,GAAM,CAACC,CAAAA,CAAWC,CAAY,CAAA,CAAIC,cAAAA,CAAS,KAAK,CAAA,CAEhD,OACEC,gBAACC,mBAAAA,CAAO,GAAA,CAAP,CACC,SAAA,CAAU,uBAAA,CACV,YAAA,CAAc,IAAMH,EAAa,IAAI,CAAA,CACrC,YAAA,CAAc,IAAMA,EAAa,KAAK,CAAA,CACtC,OAAA,CAAS,CACP,OAAQD,CAAAA,CACJ,CACE,wBAAwBF,CAAS,CAAA,CAAA,CAAA,CACjC,wBAAwBA,CAAS,CAAA,CAAA,CAAA,CACjC,CAAA,qBAAA,EAAwBA,CAAS,GACnC,CAAA,CACA,kCACN,CAAA,CACA,UAAA,CAAY,CACV,QAAA,CAAUE,CAAAA,CAAY,GAAA,CAAM,EAAA,CAC5B,OAAQA,CAAAA,CAAY,CAAA,CAAA,CAAA,CAAW,CACjC,CAAA,CAEA,QAAA,CAAA,CAAAK,eAACD,mBAAAA,CAAO,GAAA,CAAP,CACC,SAAA,CAAU,8BACV,OAAA,CAASJ,CAAAA,CAAY,CACnB,SAAA,CAAW,CACT,CAAA,SAAA,EAAYF,CAAS,CAAA,CAAA,CACrB,CAAA,SAAA,EAAYA,CAAS,CAAA,CAAA,CACrB,CAAA,SAAA,EAAYA,CAAS,CAAA,CACvB,CAAA,CACA,MAAO,CAAC,CAAA,CAAG,IAAA,CAAM,CAAC,CACpB,CAAA,CAAI,CACF,SAAA,CAAW,qBAAA,CACX,MAAO,CACT,CAAA,CACA,UAAA,CAAY,CACV,SAAU,CAAA,CACV,MAAA,CAAQE,EAAY,CAAA,CAAA,CAAA,CAAW,CAAA,CAC/B,KAAM,WACR,CAAA,CACF,CAAA,CAEAK,cAAAA,CAAC,UACC,SAAA,CAAWd,CAAAA,CACT,4CACA,0CAAA,CACA,6BAAA,CACAS,GAAa,aAAA,CACbH,CACF,CAAA,CACC,GAAGE,EAEH,QAAA,CAAAH,CAAAA,CACH,GACF,CAEJ,KAEOU,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 React, { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GlowButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n glowColor?: string;\r\n}\r\n\r\nexport function GlowButton({\r\n children,\r\n className,\r\n glowColor = \"rgba(59, 130, 246, 0.8)\",\r\n ...props\r\n}: GlowButtonProps) {\r\n const [isGlowing, setIsGlowing] = useState(false);\r\n\r\n return (\r\n <motion.div\r\n className=\"relative inline-block\"\r\n onMouseEnter={() => setIsGlowing(true)}\r\n onMouseLeave={() => setIsGlowing(false)}\r\n animate={{\r\n filter: isGlowing\r\n ? [\r\n `drop-shadow(0 0 10px ${glowColor})`,\r\n `drop-shadow(0 0 25px ${glowColor})`,\r\n `drop-shadow(0 0 10px ${glowColor})`,\r\n ]\r\n : \"drop-shadow(0 0 0px transparent)\",\r\n }}\r\n transition={{\r\n duration: isGlowing ? 1.5 : 0.3,\r\n repeat: isGlowing ? Infinity : 0,\r\n }}\r\n >\r\n <motion.div\r\n className=\"absolute inset-0 rounded-xl\"\r\n animate={isGlowing ? {\r\n boxShadow: [\r\n `0 0 20px ${glowColor}`,\r\n `0 0 40px ${glowColor}`,\r\n `0 0 20px ${glowColor}`,\r\n ],\r\n scale: [1, 1.05, 1],\r\n } : {\r\n boxShadow: \"0 0 0px transparent\",\r\n scale: 1,\r\n }}\r\n transition={{\r\n duration: 2,\r\n repeat: isGlowing ? Infinity : 0,\r\n ease: \"easeInOut\",\r\n }}\r\n />\r\n\r\n <button\r\n className={cn(\r\n \"relative px-6 py-3 rounded-xl font-medium\",\r\n \"bg-blue-600 hover:bg-blue-700 text-white\",\r\n \"transition-all duration-300\",\r\n isGlowing && \"bg-blue-500\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default GlowButton;\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 a(...n){return twMerge(clsx(n))}function m({children:n,className:s,glowColor:t="rgba(59, 130, 246, 0.8)",...u}){let[e,o]=useState(false);return jsxs(motion.div,{className:"relative inline-block",onMouseEnter:()=>o(true),onMouseLeave:()=>o(false),animate:{filter:e?[`drop-shadow(0 0 10px ${t})`,`drop-shadow(0 0 25px ${t})`,`drop-shadow(0 0 10px ${t})`]:"drop-shadow(0 0 0px transparent)"},transition:{duration:e?1.5:.3,repeat:e?1/0:0},children:[jsx(motion.div,{className:"absolute inset-0 rounded-xl",animate:e?{boxShadow:[`0 0 20px ${t}`,`0 0 40px ${t}`,`0 0 20px ${t}`],scale:[1,1.05,1]}:{boxShadow:"0 0 0px transparent",scale:1},transition:{duration:2,repeat:e?1/0:0,ease:"easeInOut"}}),jsx("button",{className:a("relative px-6 py-3 rounded-xl font-medium","bg-blue-600 hover:bg-blue-700 text-white","transition-all duration-300",e&&"bg-blue-500",s),...u,children:n})]})}var B=m;export{m as GlowButton,B as default};//# sourceMappingURL=index.mjs.map
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/glow-button/index.tsx"],"names":["cn","inputs","twMerge","clsx","GlowButton","children","className","glowColor","props","isGlowing","setIsGlowing","useState","jsxs","motion","jsx","glow_button_default"],"mappings":"sKAGO,SAASA,KAAMC,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,KAAKF,CAAM,CAAC,CAC7B,CCMO,SAASG,CAAAA,CAAW,CACzB,QAAA,CAAAC,CAAAA,CACA,UAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CAAY,yBAAA,CACZ,GAAGC,CACL,CAAA,CAAoB,CAClB,GAAM,CAACC,CAAAA,CAAWC,CAAY,CAAA,CAAIC,QAAAA,CAAS,KAAK,CAAA,CAEhD,OACEC,KAACC,MAAAA,CAAO,GAAA,CAAP,CACC,SAAA,CAAU,uBAAA,CACV,YAAA,CAAc,IAAMH,EAAa,IAAI,CAAA,CACrC,YAAA,CAAc,IAAMA,EAAa,KAAK,CAAA,CACtC,OAAA,CAAS,CACP,OAAQD,CAAAA,CACJ,CACE,wBAAwBF,CAAS,CAAA,CAAA,CAAA,CACjC,wBAAwBA,CAAS,CAAA,CAAA,CAAA,CACjC,CAAA,qBAAA,EAAwBA,CAAS,GACnC,CAAA,CACA,kCACN,CAAA,CACA,UAAA,CAAY,CACV,QAAA,CAAUE,CAAAA,CAAY,GAAA,CAAM,EAAA,CAC5B,OAAQA,CAAAA,CAAY,CAAA,CAAA,CAAA,CAAW,CACjC,CAAA,CAEA,QAAA,CAAA,CAAAK,IAACD,MAAAA,CAAO,GAAA,CAAP,CACC,SAAA,CAAU,8BACV,OAAA,CAASJ,CAAAA,CAAY,CACnB,SAAA,CAAW,CACT,CAAA,SAAA,EAAYF,CAAS,CAAA,CAAA,CACrB,CAAA,SAAA,EAAYA,CAAS,CAAA,CAAA,CACrB,CAAA,SAAA,EAAYA,CAAS,CAAA,CACvB,CAAA,CACA,MAAO,CAAC,CAAA,CAAG,IAAA,CAAM,CAAC,CACpB,CAAA,CAAI,CACF,SAAA,CAAW,qBAAA,CACX,MAAO,CACT,CAAA,CACA,UAAA,CAAY,CACV,SAAU,CAAA,CACV,MAAA,CAAQE,EAAY,CAAA,CAAA,CAAA,CAAW,CAAA,CAC/B,KAAM,WACR,CAAA,CACF,CAAA,CAEAK,GAAAA,CAAC,UACC,SAAA,CAAWd,CAAAA,CACT,4CACA,0CAAA,CACA,6BAAA,CACAS,GAAa,aAAA,CACbH,CACF,CAAA,CACC,GAAGE,EAEH,QAAA,CAAAH,CAAAA,CACH,GACF,CAEJ,KAEOU,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 React, { useState } from \"react\";\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GlowButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n children: React.ReactNode;\r\n glowColor?: string;\r\n}\r\n\r\nexport function GlowButton({\r\n children,\r\n className,\r\n glowColor = \"rgba(59, 130, 246, 0.8)\",\r\n ...props\r\n}: GlowButtonProps) {\r\n const [isGlowing, setIsGlowing] = useState(false);\r\n\r\n return (\r\n <motion.div\r\n className=\"relative inline-block\"\r\n onMouseEnter={() => setIsGlowing(true)}\r\n onMouseLeave={() => setIsGlowing(false)}\r\n animate={{\r\n filter: isGlowing\r\n ? [\r\n `drop-shadow(0 0 10px ${glowColor})`,\r\n `drop-shadow(0 0 25px ${glowColor})`,\r\n `drop-shadow(0 0 10px ${glowColor})`,\r\n ]\r\n : \"drop-shadow(0 0 0px transparent)\",\r\n }}\r\n transition={{\r\n duration: isGlowing ? 1.5 : 0.3,\r\n repeat: isGlowing ? Infinity : 0,\r\n }}\r\n >\r\n <motion.div\r\n className=\"absolute inset-0 rounded-xl\"\r\n animate={isGlowing ? {\r\n boxShadow: [\r\n `0 0 20px ${glowColor}`,\r\n `0 0 40px ${glowColor}`,\r\n `0 0 20px ${glowColor}`,\r\n ],\r\n scale: [1, 1.05, 1],\r\n } : {\r\n boxShadow: \"0 0 0px transparent\",\r\n scale: 1,\r\n }}\r\n transition={{\r\n duration: 2,\r\n repeat: isGlowing ? Infinity : 0,\r\n ease: \"easeInOut\",\r\n }}\r\n />\r\n\r\n <button\r\n className={cn(\r\n \"relative px-6 py-3 rounded-xl font-medium\",\r\n \"bg-blue-600 hover:bg-blue-700 text-white\",\r\n \"transition-all duration-300\",\r\n isGlowing && \"bg-blue-500\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport default GlowButton;\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 e(...t){return tailwindMerge.twMerge(clsx.clsx(t))}function s({children:t,className:a="",colors:r=["#40ffaa","#4079ff","#40ffaa","#4079ff","#40ffaa"],animationSpeed:n=8}){return jsxRuntime.jsx("span",{className:e("bg-clip-text text-transparent bg-[length:200%_auto] animate-gradient",a),style:{backgroundImage:`linear-gradient(to right, ${r.join(", ")})`,animationDuration:`${n}s`},children:t})}var d=s;exports.GradientText=s;exports.default=d;//# sourceMappingURL=index.js.map
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/gradient-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","GradientText","children","className","colors","animationSpeed","jsx","gradient_text_default"],"mappings":"+KAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,UAAKF,CAAM,CAAC,CAC7B,CCOO,SAASG,EAAa,CAC3B,QAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,EAAY,EAAA,CACZ,MAAA,CAAAC,CAAAA,CAAS,CAAC,UAAW,SAAA,CAAW,SAAA,CAAW,SAAA,CAAW,SAAS,CAAA,CAC/D,cAAA,CAAAC,CAAAA,CAAiB,CACnB,EAAsB,CACpB,OACEC,cAAAA,CAAC,MAAA,CAAA,CACC,SAAA,CAAWT,CAAAA,CACT,sEAAA,CACAM,CACF,EACA,KAAA,CAAO,CACL,eAAA,CAAiB,CAAA,0BAAA,EAA6BC,CAAAA,CAAO,IAAA,CAAK,IAAI,CAAC,IAC/D,iBAAA,CAAmB,CAAA,EAAGC,CAAc,CAAA,CAAA,CACtC,EAEC,QAAA,CAAAH,CAAAA,CACH,CAEJ,KAEOK,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 React, { ReactNode } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GradientTextProps {\r\n children: ReactNode;\r\n className?: string;\r\n colors?: string[];\r\n animationSpeed?: number;\r\n}\r\n\r\nexport function GradientText({\r\n children,\r\n className = \"\",\r\n colors = [\"#40ffaa\", \"#4079ff\", \"#40ffaa\", \"#4079ff\", \"#40ffaa\"],\r\n animationSpeed = 8,\r\n}: GradientTextProps) {\r\n return (\r\n <span\r\n className={cn(\r\n \"bg-clip-text text-transparent bg-[length:200%_auto] animate-gradient\",\r\n className\r\n )}\r\n style={{\r\n backgroundImage: `linear-gradient(to right, ${colors.join(\", \")})`,\r\n animationDuration: `${animationSpeed}s`,\r\n }}\r\n >\r\n {children}\r\n </span>\r\n );\r\n}\r\n\r\nexport default GradientText;\r\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx}from'react/jsx-runtime';function e(...t){return twMerge(clsx(t))}function s({children:t,className:a="",colors:r=["#40ffaa","#4079ff","#40ffaa","#4079ff","#40ffaa"],animationSpeed:n=8}){return jsx("span",{className:e("bg-clip-text text-transparent bg-[length:200%_auto] animate-gradient",a),style:{backgroundImage:`linear-gradient(to right, ${r.join(", ")})`,animationDuration:`${n}s`},children:t})}var d=s;export{s as GradientText,d as default};//# sourceMappingURL=index.mjs.map
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/gradient-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","GradientText","children","className","colors","animationSpeed","jsx","gradient_text_default"],"mappings":"iGAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,KAAKF,CAAM,CAAC,CAC7B,CCOO,SAASG,EAAa,CAC3B,QAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,EAAY,EAAA,CACZ,MAAA,CAAAC,CAAAA,CAAS,CAAC,UAAW,SAAA,CAAW,SAAA,CAAW,SAAA,CAAW,SAAS,CAAA,CAC/D,cAAA,CAAAC,CAAAA,CAAiB,CACnB,EAAsB,CACpB,OACEC,GAAAA,CAAC,MAAA,CAAA,CACC,SAAA,CAAWT,CAAAA,CACT,sEAAA,CACAM,CACF,EACA,KAAA,CAAO,CACL,eAAA,CAAiB,CAAA,0BAAA,EAA6BC,CAAAA,CAAO,IAAA,CAAK,IAAI,CAAC,IAC/D,iBAAA,CAAmB,CAAA,EAAGC,CAAc,CAAA,CAAA,CACtC,EAEC,QAAA,CAAAH,CAAAA,CACH,CAEJ,KAEOK,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 React, { ReactNode } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface GradientTextProps {\r\n children: ReactNode;\r\n className?: string;\r\n colors?: string[];\r\n animationSpeed?: number;\r\n}\r\n\r\nexport function GradientText({\r\n children,\r\n className = \"\",\r\n colors = [\"#40ffaa\", \"#4079ff\", \"#40ffaa\", \"#4079ff\", \"#40ffaa\"],\r\n animationSpeed = 8,\r\n}: GradientTextProps) {\r\n return (\r\n <span\r\n className={cn(\r\n \"bg-clip-text text-transparent bg-[length:200%_auto] animate-gradient\",\r\n className\r\n )}\r\n style={{\r\n backgroundImage: `linear-gradient(to right, ${colors.join(\", \")})`,\r\n animationDuration: `${animationSpeed}s`,\r\n }}\r\n >\r\n {children}\r\n </span>\r\n );\r\n}\r\n\r\nexport default GradientText;\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 e(...r){return tailwindMerge.twMerge(clsx.clsx(r))}function n({children:r,className:o,...t}){return jsxRuntime.jsx("div",{className:e("rounded-2xl p-6","bg-white dark:bg-zinc-900","border border-zinc-200 dark:border-zinc-800","shadow-lg","transition-all duration-300 ease-out","hover:shadow-2xl hover:-translate-y-1","hover:border-zinc-300 dark:hover:border-zinc-700",o),...t,children:r})}var u=n;exports.HoverCard=n;exports.default=u;//# sourceMappingURL=index.js.map
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/hover-card/index.tsx"],"names":["cn","inputs","twMerge","clsx","HoverCard","children","className","props","jsx","hover_card_default"],"mappings":"+KAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,sBAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCIO,SAASG,CAAAA,CAAU,CAAE,QAAA,CAAAC,CAAAA,CAAU,UAAAC,CAAAA,CAAW,GAAGC,CAAM,CAAA,CAAmB,CAC3E,OACEC,eAAC,KAAA,CAAA,CACC,SAAA,CAAWR,CAAAA,CACT,iBAAA,CACA,2BAAA,CACA,6CAAA,CACA,YACA,sCAAA,CACA,uCAAA,CACA,kDAAA,CACAM,CACF,CAAA,CACC,GAAGC,CAAAA,CAEH,QAAA,CAAAF,CAAAA,CACH,CAEJ,CAEA,IAAOI,CAAAA,CAAQL","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 { cn } from \"../utils/cn\";\r\n\r\ninterface HoverCardProps extends React.HTMLAttributes<HTMLDivElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function HoverCard({ children, className, ...props }: HoverCardProps) {\r\n return (\r\n <div\r\n className={cn(\r\n \"rounded-2xl p-6\",\r\n \"bg-white dark:bg-zinc-900\",\r\n \"border border-zinc-200 dark:border-zinc-800\",\r\n \"shadow-lg\",\r\n \"transition-all duration-300 ease-out\",\r\n \"hover:shadow-2xl hover:-translate-y-1\",\r\n \"hover:border-zinc-300 dark:hover:border-zinc-700\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport default HoverCard;\r\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx}from'react/jsx-runtime';function e(...r){return twMerge(clsx(r))}function n({children:r,className:o,...t}){return jsx("div",{className:e("rounded-2xl p-6","bg-white dark:bg-zinc-900","border border-zinc-200 dark:border-zinc-800","shadow-lg","transition-all duration-300 ease-out","hover:shadow-2xl hover:-translate-y-1","hover:border-zinc-300 dark:hover:border-zinc-700",o),...t,children:r})}var u=n;export{n as HoverCard,u as default};//# sourceMappingURL=index.mjs.map
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/hover-card/index.tsx"],"names":["cn","inputs","twMerge","clsx","HoverCard","children","className","props","jsx","hover_card_default"],"mappings":"iGAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,QAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCIO,SAASG,CAAAA,CAAU,CAAE,QAAA,CAAAC,CAAAA,CAAU,UAAAC,CAAAA,CAAW,GAAGC,CAAM,CAAA,CAAmB,CAC3E,OACEC,IAAC,KAAA,CAAA,CACC,SAAA,CAAWR,CAAAA,CACT,iBAAA,CACA,2BAAA,CACA,6CAAA,CACA,YACA,sCAAA,CACA,uCAAA,CACA,kDAAA,CACAM,CACF,CAAA,CACC,GAAGC,CAAAA,CAEH,QAAA,CAAAF,CAAAA,CACH,CAEJ,CAEA,IAAOI,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 React from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface HoverCardProps extends React.HTMLAttributes<HTMLDivElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport function HoverCard({ children, className, ...props }: HoverCardProps) {\r\n return (\r\n <div\r\n className={cn(\r\n \"rounded-2xl p-6\",\r\n \"bg-white dark:bg-zinc-900\",\r\n \"border border-zinc-200 dark:border-zinc-800\",\r\n \"shadow-lg\",\r\n \"transition-all duration-300 ease-out\",\r\n \"hover:shadow-2xl hover:-translate-y-1\",\r\n \"hover:border-zinc-300 dark:hover:border-zinc-700\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport default HoverCard;\r\n"]}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';var clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime'),_e=require('react'),framerMotion=require('framer-motion');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var _e__default=/*#__PURE__*/_interopDefault(_e);function t(...e){return tailwindMerge.twMerge(clsx.clsx(e))}function K({children:e,className:r,...n}){return jsxRuntime.jsxs("button",{className:t("relative overflow-hidden px-6 py-3 rounded-xl font-medium","bg-zinc-900 text-white hover:bg-zinc-800","dark:bg-zinc-800 dark:hover:bg-zinc-700 dark:text-white","transition-colors duration-200",r),...n,children:[jsxRuntime.jsx("span",{className:t("absolute inset-0 overflow-hidden rounded-[inherit]","before:absolute before:inset-0","before:-translate-x-full","before:animate-shimmer","before:bg-gradient-to-r","before:from-transparent before:via-white/40 before:to-transparent","before:skew-x-[-20deg]")}),jsxRuntime.jsx("span",{className:"relative z-10",children:e})]})}function ee({children:e,className:r,onClick:n,...a}){let[o,i]=_e.useState([]);function m(l){let s=l.currentTarget.getBoundingClientRect(),p=l.clientX-s.left,c=l.clientY-s.top,u={x:p,y:c,id:Date.now()};i(f=>[...f,u]),setTimeout(()=>{i(f=>f.filter(M=>M.id!==u.id));},1e3),n?.(l);}return jsxRuntime.jsxs("button",{className:t("relative overflow-hidden px-6 py-3 rounded-xl font-medium","bg-zinc-900 text-white hover:bg-zinc-800","dark:bg-zinc-100 dark:text-black dark:hover:bg-zinc-200","transition-colors duration-200",r),onClick:m,...a,children:[jsxRuntime.jsx(framerMotion.AnimatePresence,{children:o.map(l=>jsxRuntime.jsx(framerMotion.motion.span,{className:"absolute rounded-full pointer-events-none border-2 border-white/50 dark:border-black/50",style:{left:l.x,top:l.y,transform:"translate(-50%, -50%)"},initial:{width:0,height:0,opacity:.9},animate:{width:500,height:500,opacity:0},exit:{opacity:0},transition:{duration:1,ease:[.4,0,.2,1]}},l.id))}),jsxRuntime.jsx("span",{className:"relative z-10",children:e})]})}function ae({children:e,className:r,strength:n=.5,radius:a=200,...o}){let i=_e.useRef(null),[m,l]=_e.useState(false),d=framerMotion.useMotionValue(0),s=framerMotion.useMotionValue(0),p={damping:20,stiffness:300,mass:.5},c=framerMotion.useSpring(d,p),u=framerMotion.useSpring(s,p);return jsxRuntime.jsx("div",{ref:i,className:"relative inline-flex items-center justify-center",onMouseMove:L=>{if(!i.current)return;let b=i.current.getBoundingClientRect(),W=b.left+b.width/2,q=b.top+b.height/2,h=L.clientX-W,v=L.clientY-q,I=Math.sqrt(h*h+v*v);if(I<a){let S=1-I/a;d.set(h*n*S),s.set(v*n*S);}},onMouseLeave:()=>{l(false),d.set(0),s.set(0);},onMouseEnter:()=>l(true),style:{padding:a/2,margin:-a/2},children:jsxRuntime.jsx(framerMotion.motion.div,{style:{x:c,y:u},children:jsxRuntime.jsx("button",{className:t("px-6 py-3 rounded-xl font-medium","bg-zinc-900 text-white hover:bg-zinc-800","dark:bg-zinc-100 dark:text-black dark:hover:bg-zinc-200","transition-shadow duration-300",m&&"shadow-lg",r),...o,children:e})})})}function se({children:e,className:r,onClick:n,...a}){let[o,i]=_e.useState(false);function m(l){i(true),setTimeout(()=>i(false),1500),n?.(l);}return jsxRuntime.jsxs("div",{className:"relative inline-block",children:[jsxRuntime.jsx(framerMotion.motion.div,{className:"absolute -bottom-2 left-1/2 w-16 h-2 bg-black/20 rounded-full blur-sm",animate:o?{scaleX:[1,.8,1.2,.9,1.1,.95,1],opacity:[.3,.6,.2,.5,.3,.4,.3]}:{},style:{x:"-50%"},transition:{duration:1.5,ease:"easeOut"}}),jsxRuntime.jsx(framerMotion.motion.div,{animate:o?{y:[0,-40,-20,-35,-10,-25,-5,-15,0],rotate:[0,-5,2,-3,1,-2,.5,-1,0]}:{},transition:{duration:1.5,ease:"easeOut",times:[0,.2,.35,.5,.65,.75,.85,.95,1]},whileHover:o?{}:{y:[0,-8,0]},children:jsxRuntime.jsx("button",{className:t("px-6 py-3 rounded-xl font-medium","bg-orange-500 hover:bg-orange-600 text-white","transition-colors duration-200",r),onClick:m,disabled:o,...a,children:e})})]})}function me({children:e,className:r,glowColor:n="rgba(59, 130, 246, 0.8)",...a}){let[o,i]=_e.useState(false);return jsxRuntime.jsxs(framerMotion.motion.div,{className:"relative inline-block",onMouseEnter:()=>i(true),onMouseLeave:()=>i(false),animate:{filter:o?[`drop-shadow(0 0 10px ${n})`,`drop-shadow(0 0 25px ${n})`,`drop-shadow(0 0 10px ${n})`]:"drop-shadow(0 0 0px transparent)"},transition:{duration:o?1.5:.3,repeat:o?1/0:0},children:[jsxRuntime.jsx(framerMotion.motion.div,{className:"absolute inset-0 rounded-xl",animate:o?{boxShadow:[`0 0 20px ${n}`,`0 0 40px ${n}`,`0 0 20px ${n}`],scale:[1,1.05,1]}:{boxShadow:"0 0 0px transparent",scale:1},transition:{duration:2,repeat:o?1/0:0,ease:"easeInOut"}}),jsxRuntime.jsx("button",{className:t("relative px-6 py-3 rounded-xl font-medium","bg-blue-600 hover:bg-blue-700 text-white","transition-all duration-300",o&&"bg-blue-500",r),...a,children:e})]})}function pe({children:e,className:r,pulseColor:n="rgba(239, 68, 68, 0.5)",...a}){return jsxRuntime.jsxs("div",{className:"relative inline-block",children:[jsxRuntime.jsx(framerMotion.motion.div,{className:"absolute inset-0 rounded-xl",style:{backgroundColor:n},animate:{scale:[1,1.3,1,1.2,1],opacity:[.6,0,.6,0,.6]},transition:{duration:1.2,repeat:1/0,ease:"easeInOut",times:[0,.2,.4,.6,1]}}),jsxRuntime.jsx(framerMotion.motion.div,{className:"absolute inset-0 rounded-xl",style:{backgroundColor:n},animate:{scale:[1,1.5,1,1.4,1],opacity:[.4,0,.4,0,.4]},transition:{duration:1.2,delay:.1,repeat:1/0,ease:"easeInOut",times:[0,.2,.4,.6,1]}}),jsxRuntime.jsx(framerMotion.motion.div,{animate:{scale:[1,1.05,1,1.03,1]},transition:{duration:1.2,repeat:1/0,ease:"easeInOut",times:[0,.2,.4,.6,1]},children:jsxRuntime.jsx("button",{className:t("relative px-6 py-3 rounded-xl font-medium","bg-red-500 hover:bg-red-600 text-white","transition-colors duration-200",r),...a,children:e})})]})}function fe({children:e,className:r="",colors:n=["#40ffaa","#4079ff","#40ffaa","#4079ff","#40ffaa"],animationSpeed:a=8}){return jsxRuntime.jsx("span",{className:t("bg-clip-text text-transparent bg-[length:200%_auto] animate-gradient",r),style:{backgroundImage:`linear-gradient(to right, ${n.join(", ")})`,animationDuration:`${a}s`},children:e})}function xe({text:e="Text Shimmer",className:r}){return jsxRuntime.jsx("div",{className:"flex items-center justify-center p-8",children:jsxRuntime.jsx(framerMotion.motion.div,{className:"relative px-4 py-2 overflow-hidden",initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.5},children:jsxRuntime.jsx(framerMotion.motion.h1,{className:t("text-3xl font-bold bg-gradient-to-r from-neutral-950 via-neutral-400 to-neutral-950 dark:from-white dark:via-neutral-600 dark:to-white bg-[length:200%_100%] bg-clip-text text-transparent",r),animate:{backgroundPosition:["200% center","-200% center"]},transition:{duration:2.5,ease:"linear",repeat:1/0},children:e})})})}function ge({text:e="Glitch Text",className:r,glitchIntensity:n="medium",color:a="orange",isStatic:o=false,size:i="md"}){let l={rainbow:{primary:"#a855f7",before:"#22d3ee",after:"#f472b6"},blue:{primary:"#3b82f6",before:"#60a5fa",after:"#1d4ed8"},purple:{primary:"#8b5cf6",before:"#a78bfa",after:"#6d28d9"},cyan:{primary:"#06b6d4",before:"#22d3ee",after:"#0891b2"},pink:{primary:"#ec4899",before:"#f472b6",after:"#db2777"},orange:{primary:"#f97316",before:"#fb923c",after:"#ea580c"}}[a],s={light:{translateRange:2,skewRange:.5},medium:{translateRange:3,skewRange:1},heavy:{translateRange:5,skewRange:2},extreme:{translateRange:8,skewRange:3}}[n],p={sm:"text-2xl",md:"text-4xl",lg:"text-5xl",xl:"text-6xl","2xl":"text-7xl","3xl":"text-8xl"},c={animate:{x:[0,s.translateRange,-s.translateRange,0],y:[0,-s.translateRange,s.translateRange,0],skewX:[0,s.skewRange,-s.skewRange,0]},transition:{duration:.5,repeat:1/0,ease:"easeInOut"}};return jsxRuntime.jsx("div",{className:t("relative flex items-center justify-center p-8",r),children:jsxRuntime.jsxs(framerMotion.motion.div,{className:t("relative font-bold tracking-wider",p[i]),style:{color:l.primary},animate:o?void 0:c.animate,transition:c.transition,children:[e,jsxRuntime.jsx(framerMotion.motion.span,{className:"absolute inset-0 pointer-events-none",style:{color:l.before,opacity:.8},animate:o?void 0:{x:[-s.translateRange,s.translateRange,0],y:[s.translateRange,-s.translateRange,0]},transition:{duration:.5,repeat:1/0},children:e}),jsxRuntime.jsx(framerMotion.motion.span,{className:"absolute inset-0 pointer-events-none",style:{color:l.after,opacity:.8},animate:o?void 0:{x:[s.translateRange,-s.translateRange,0],y:[-s.translateRange,s.translateRange,0]},transition:{duration:.5,repeat:1/0},children:e})]})})}function ye({text:e,className:r,delay:n=0,duration:a=.4}){let o=Array.from(e);return jsxRuntime.jsx("div",{className:t("flex",r),children:o.map((i,m)=>jsxRuntime.jsx(framerMotion.motion.span,{className:"inline-block",style:{whiteSpace:i===" "?"pre":"normal"},animate:{y:[0,-20,0]},transition:{delay:n+m*.03,duration:a,ease:"easeInOut",repeat:1/0,repeatDelay:.5},children:i},`${i}-${m}`))})}function Be({text:e="",delay:r=200,className:n="",animateBy:a="words",direction:o="top"}){let i=a==="words"?e.split(" "):e.split(""),[m,l]=_e.useState(false),d=_e.useRef(null);_e.useEffect(()=>{if(!d.current)return;let c=new IntersectionObserver(([u])=>{u.isIntersecting&&(l(true),c.unobserve(d.current));},{threshold:.1});return c.observe(d.current),()=>c.disconnect()},[]);let s=_e.useMemo(()=>o==="top"?{filter:"blur(10px)",opacity:0,y:-50}:{filter:"blur(10px)",opacity:0,y:50},[o]),p={filter:"blur(0px)",opacity:1,y:0};return jsxRuntime.jsx("p",{ref:d,className:t("flex flex-wrap",n),children:i.map((c,u)=>jsxRuntime.jsxs(framerMotion.motion.span,{initial:s,animate:m?p:s,transition:{duration:.5,delay:u*r/1e3,ease:"easeOut"},className:"inline-block",style:{willChange:"transform, filter, opacity"},children:[c===" "?"\xA0":c,a==="words"&&u<i.length-1&&"\xA0"]},u))})}function Ie({text:e="Hello World",className:r,speed:n=50,delay:a=0,cursor:o=true,loop:i=false}){let[m,l]=_e.useState(""),[d,s]=_e.useState(false);return _e.useEffect(()=>{let p,c=0,u=false,f=()=>{s(true),u?c>0?(l(e.slice(0,c-1)),c--,p=setTimeout(f,n/2)):(u=false,p=setTimeout(f,500)):c<e.length?(l(e.slice(0,c+1)),c++,p=setTimeout(f,n)):(s(false),i&&(p=setTimeout(()=>{u=true,f();},2e3)));};return p=setTimeout(f,a),()=>clearTimeout(p)},[e,n,a,i]),jsxRuntime.jsxs("span",{className:t("inline-block font-mono",r),children:[m,o&&jsxRuntime.jsx("span",{className:t("ml-0.5 inline-block w-[2px] h-[1em] bg-current",d?"animate-blink":"")})]})}function He({text:e,className:r,amplitude:n=10,frequency:a=1.5}){let o=Array.from(e);return jsxRuntime.jsx("div",{className:t("flex",r),children:o.map((i,m)=>jsxRuntime.jsx(framerMotion.motion.span,{className:"inline-block",style:{whiteSpace:i===" "?"pre":"normal"},animate:{y:[0,-n,0,n,0]},transition:{duration:a,repeat:1/0,delay:m*.08,ease:"easeInOut"},children:i},`${i}-${m}`))})}function Ee({text:e,className:r,delay:n=0}){let a=Array.from(e);return jsxRuntime.jsx("div",{className:t("flex",r),style:{perspective:"1000px"},children:a.map((o,i)=>jsxRuntime.jsx(framerMotion.motion.span,{className:"inline-block origin-center",style:{whiteSpace:o===" "?"pre":"normal"},animate:{rotateX:[0,360]},transition:{duration:1.5,repeat:1/0,delay:n+i*.08,ease:"easeInOut",repeatDelay:.8},children:o},`${o}-${i}`))})}function Ge({children:e,className:r,...n}){return jsxRuntime.jsx("div",{className:t("rounded-2xl p-6","bg-white/10 dark:bg-black/10","backdrop-blur-xl","border border-white/20 dark:border-white/10","shadow-xl",r),...n,children:e})}function De({children:e,className:r,...n}){return jsxRuntime.jsx("div",{className:t("rounded-2xl p-6","bg-white dark:bg-zinc-900","border border-zinc-200 dark:border-zinc-800","shadow-lg","transition-all duration-300 ease-out","hover:shadow-2xl hover:-translate-y-1","hover:border-zinc-300 dark:hover:border-zinc-700",r),...n,children:e})}function Xe({frontContent:e,backContent:r,className:n}){let[a,o]=_e.useState(false);return jsxRuntime.jsx("div",{className:t("relative w-full h-full [perspective:1000px]",n),onMouseEnter:()=>o(true),onMouseLeave:()=>o(false),children:jsxRuntime.jsxs("div",{className:t("relative w-full h-full [transform-style:preserve-3d] transition-transform duration-700",a?"[transform:rotateY(180deg)]":""),children:[jsxRuntime.jsx("div",{className:t("absolute inset-0 w-full h-full [backface-visibility:hidden]","rounded-2xl bg-white dark:bg-zinc-900","border border-zinc-200 dark:border-zinc-800","shadow-lg p-6"),children:e}),jsxRuntime.jsx("div",{className:t("absolute inset-0 w-full h-full [backface-visibility:hidden] [transform:rotateY(180deg)]","rounded-2xl bg-zinc-100 dark:bg-zinc-800","border border-zinc-200 dark:border-zinc-700","shadow-lg p-6"),children:r})]})})}function Ve({className:e,size:r="md"}){let n={sm:"w-1.5 h-1.5",md:"w-2.5 h-2.5",lg:"w-4 h-4"};return jsxRuntime.jsx("div",{className:t("flex items-center justify-center gap-1",e),children:[0,1,2].map(a=>jsxRuntime.jsx("div",{className:t(n[r],"rounded-full bg-current animate-bounce"),style:{animationDelay:`${a*.15}s`}},a))})}function We({className:e,size:r="md"}){return jsxRuntime.jsx("div",{className:t({sm:"w-4 h-4 border-2",md:"w-8 h-8 border-3",lg:"w-12 h-12 border-4"}[r],"rounded-full border-current border-t-transparent animate-spin",e)})}function je({className:e,children:r,delay:n=1e3}){let[a,o]=_e.useState(0),i=_e__default.default.Children.toArray(r);_e.useEffect(()=>{let l=setInterval(()=>{o(d=>(d+1)%i.length);},n);return ()=>clearInterval(l)},[i.length,n]);let m=_e.useMemo(()=>i.slice(0,a+1).reverse(),[a,i]);return jsxRuntime.jsx("div",{className:t("flex flex-col items-center gap-4",e),children:jsxRuntime.jsx(framerMotion.AnimatePresence,{children:m.map((l,d)=>jsxRuntime.jsx(V,{children:l},d))})})}function V({children:e}){return jsxRuntime.jsx(framerMotion.motion.div,{initial:{scale:0,opacity:0},animate:{scale:1,opacity:1},exit:{scale:0,opacity:0},transition:{type:"spring",stiffness:350,damping:40},layout:true,className:"mx-auto w-full",children:e})}exports.AnimatedList=je;exports.AnimatedListItem=V;exports.BlurText=Be;exports.BounceButton=se;exports.BounceText=ye;exports.CardFlip=Xe;exports.FlipText=Ee;exports.GlassCard=Ge;exports.GlitchText=ge;exports.GlowButton=me;exports.GradientText=fe;exports.HoverCard=De;exports.LoadingDots=Ve;exports.LoadingSpinner=We;exports.MagneticButton=ae;exports.PulseButton=pe;exports.RippleButton=ee;exports.ShimmerText=xe;exports.ShineButton=K;exports.Typewriter=Ie;exports.WaveText=He;exports.cn=t;//# sourceMappingURL=index.js.map
|
|
2
|
+
//# sourceMappingURL=index.js.map
|