@nehal712521/inprogress 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
3
|
import React from "react";
|
|
4
|
+
import { motion } from "framer-motion";
|
|
4
5
|
|
|
5
|
-
type BadgeVariant = "default" | "secondary" | "outline" | "destructive";
|
|
6
|
+
type BadgeVariant = "default" | "secondary" | "outline" | "destructive" | "animated";
|
|
6
7
|
|
|
7
8
|
interface BadgeProps {
|
|
8
9
|
children: React.ReactNode;
|
|
@@ -15,9 +16,46 @@ const variantStyles: Record<BadgeVariant, string> = {
|
|
|
15
16
|
secondary: "bg-zinc-800 text-zinc-100 hover:bg-zinc-700",
|
|
16
17
|
outline: "border border-zinc-700 text-zinc-100 hover:bg-zinc-800",
|
|
17
18
|
destructive: "bg-red-500/10 text-red-500 hover:bg-red-500/20",
|
|
19
|
+
animated: "bg-black text-white",
|
|
18
20
|
};
|
|
19
21
|
|
|
20
22
|
export function Badge({ children, variant = "default", className = "" }: BadgeProps) {
|
|
23
|
+
if (variant === "animated") {
|
|
24
|
+
return (
|
|
25
|
+
<motion.span
|
|
26
|
+
className={`relative inline-flex items-center rounded-full px-3 py-1 text-xs font-medium overflow-hidden ${className}`}
|
|
27
|
+
whileHover={{ scale: 1.05 }}
|
|
28
|
+
transition={{ type: "spring", stiffness: 400 }}
|
|
29
|
+
>
|
|
30
|
+
{/* Rotating Border Light */}
|
|
31
|
+
<motion.div
|
|
32
|
+
className="absolute inset-0 rounded-full"
|
|
33
|
+
style={{
|
|
34
|
+
background: "conic-gradient(from 0deg, transparent, #0ea5e9, transparent, #8b5cf6, transparent)",
|
|
35
|
+
padding: "1px",
|
|
36
|
+
}}
|
|
37
|
+
animate={{ rotate: 360 }}
|
|
38
|
+
transition={{ duration: 3, repeat: Infinity, ease: "linear" }}
|
|
39
|
+
>
|
|
40
|
+
<div className="absolute inset-[1px] rounded-full bg-black" />
|
|
41
|
+
</motion.div>
|
|
42
|
+
{/* Inner glow */}
|
|
43
|
+
<motion.div
|
|
44
|
+
className="absolute inset-0 rounded-full opacity-50"
|
|
45
|
+
animate={{
|
|
46
|
+
boxShadow: [
|
|
47
|
+
"inset 0 0 10px rgba(14, 165, 233, 0.3)",
|
|
48
|
+
"inset 0 0 20px rgba(139, 92, 246, 0.3)",
|
|
49
|
+
"inset 0 0 10px rgba(14, 165, 233, 0.3)",
|
|
50
|
+
],
|
|
51
|
+
}}
|
|
52
|
+
transition={{ duration: 2, repeat: Infinity, ease: "easeInOut" }}
|
|
53
|
+
/>
|
|
54
|
+
<span className="relative z-10">{children}</span>
|
|
55
|
+
</motion.span>
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
|
|
21
59
|
return (
|
|
22
60
|
<span
|
|
23
61
|
className={`inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium transition-colors ${variantStyles[variant]} ${className}`}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
3
|
import React from "react";
|
|
4
|
+
import { motion } from "framer-motion";
|
|
4
5
|
|
|
5
6
|
interface CardProps {
|
|
6
7
|
children: React.ReactNode;
|
|
@@ -9,9 +10,30 @@ interface CardProps {
|
|
|
9
10
|
|
|
10
11
|
export function Card({ children, className = "" }: CardProps) {
|
|
11
12
|
return (
|
|
12
|
-
<div
|
|
13
|
+
<motion.div
|
|
14
|
+
className={`relative rounded-xl border border-zinc-800 bg-zinc-900/50 p-6 overflow-hidden ${className}`}
|
|
15
|
+
initial={{ opacity: 0, y: 20 }}
|
|
16
|
+
animate={{ opacity: 1, y: 0 }}
|
|
17
|
+
transition={{ type: "spring", stiffness: 100, damping: 15 }}
|
|
18
|
+
whileHover={{ scale: 1.02, borderColor: "rgba(14, 165, 233, 0.3)" }}
|
|
19
|
+
>
|
|
20
|
+
{/* Animated Background Gradient */}
|
|
21
|
+
<div className="absolute inset-0 -z-10">
|
|
22
|
+
<div className="absolute inset-0 bg-gradient-to-br from-sky-500/5 via-transparent to-purple-500/5 animate-pulse" />
|
|
23
|
+
<motion.div
|
|
24
|
+
className="absolute inset-0 opacity-0 group-hover:opacity-100 transition-opacity duration-500"
|
|
25
|
+
animate={{
|
|
26
|
+
background: [
|
|
27
|
+
"radial-gradient(400px circle at 0% 0%, rgba(14, 165, 233, 0.1), transparent 60%)",
|
|
28
|
+
"radial-gradient(400px circle at 100% 100%, rgba(14, 165, 233, 0.1), transparent 60%)",
|
|
29
|
+
"radial-gradient(400px circle at 0% 0%, rgba(14, 165, 233, 0.1), transparent 60%)",
|
|
30
|
+
],
|
|
31
|
+
}}
|
|
32
|
+
transition={{ duration: 5, repeat: Infinity, ease: "linear" }}
|
|
33
|
+
/>
|
|
34
|
+
</div>
|
|
13
35
|
{children}
|
|
14
|
-
</div>
|
|
36
|
+
</motion.div>
|
|
15
37
|
);
|
|
16
38
|
}
|
|
17
39
|
|
package/registry/registry.json
CHANGED
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
"card": {
|
|
13
13
|
"name": "card",
|
|
14
14
|
"displayName": "Card",
|
|
15
|
-
"description": "A card component with
|
|
15
|
+
"description": "A card component with animated background gradient and hover effects",
|
|
16
16
|
"category": "Components",
|
|
17
|
-
"dependencies": [],
|
|
17
|
+
"dependencies": ["framer-motion"],
|
|
18
18
|
"files": ["card.tsx"]
|
|
19
19
|
},
|
|
20
20
|
"input": {
|
|
@@ -28,9 +28,9 @@
|
|
|
28
28
|
"badge": {
|
|
29
29
|
"name": "badge",
|
|
30
30
|
"displayName": "Badge",
|
|
31
|
-
"description": "A badge component with
|
|
31
|
+
"description": "A badge component with rotating border light animation",
|
|
32
32
|
"category": "Components",
|
|
33
|
-
"dependencies": [],
|
|
33
|
+
"dependencies": ["framer-motion"],
|
|
34
34
|
"files": ["badge.tsx"]
|
|
35
35
|
},
|
|
36
36
|
"floating-dock": {
|