bynana-ui 1.6.0 → 1.6.2
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/dist/apple-activity-card/index.js +2 -0
- package/dist/apple-activity-card/index.js.map +1 -0
- package/dist/apple-activity-card/index.mjs +2 -0
- package/dist/apple-activity-card/index.mjs.map +1 -0
- package/dist/bento-grid/index.js +2 -0
- package/dist/bento-grid/index.js.map +1 -0
- package/dist/bento-grid/index.mjs +2 -0
- package/dist/bento-grid/index.mjs.map +1 -0
- package/dist/card-stack/index.js +2 -0
- package/dist/card-stack/index.js.map +1 -0
- package/dist/card-stack/index.mjs +2 -0
- package/dist/card-stack/index.mjs.map +1 -0
- package/dist/index.js +13 -13
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +13 -13
- package/dist/index.mjs.map +1 -1
- package/dist/stats-cards/index.js +2 -0
- package/dist/stats-cards/index.js.map +1 -0
- package/dist/stats-cards/index.mjs +2 -0
- package/dist/stats-cards/index.mjs.map +1 -0
- package/dist/stats-grid/index.js +2 -0
- package/dist/stats-grid/index.js.map +1 -0
- package/dist/stats-grid/index.mjs +2 -0
- package/dist/stats-grid/index.mjs.map +1 -0
- package/dist/tweet-card/index.js +2 -0
- package/dist/tweet-card/index.js.map +1 -0
- package/dist/tweet-card/index.mjs +2 -0
- package/dist/tweet-card/index.mjs.map +1 -0
- package/package.json +7 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';var react=require('react'),framerMotion=require('framer-motion'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function o(...s){return tailwindMerge.twMerge(clsx.clsx(s))}function w({title:s="Key Metrics",description:l="Track your success with these important numbers",stats:d,className:m}){let c=react.useRef(null),a=framerMotion.useInView(c,{once:true});return jsxRuntime.jsx("div",{className:o("min-h-[400px] w-full",m),children:jsxRuntime.jsx("section",{className:"py-20",children:jsxRuntime.jsxs("div",{className:"mx-auto max-w-7xl px-6",children:[jsxRuntime.jsxs(framerMotion.motion.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},transition:{duration:.6},viewport:{once:true},className:"mb-16 text-center",children:[jsxRuntime.jsx("h2",{className:"text-zinc-900 dark:text-zinc-100 mb-4 text-3xl font-bold lg:text-4xl",children:s}),jsxRuntime.jsx("p",{className:"text-zinc-600 dark:text-zinc-400 mx-auto max-w-2xl text-lg",children:l})]}),jsxRuntime.jsx("div",{ref:c,className:"grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-4",children:d.map((t,n)=>jsxRuntime.jsxs(framerMotion.motion.div,{initial:{opacity:0,y:30,scale:.9},animate:a?{opacity:1,y:0,scale:1}:{opacity:0,y:30,scale:.9},transition:{duration:.6,delay:n*.1,type:"spring",stiffness:100},className:"group border-zinc-300 dark:border-zinc-700 bg-transparent hover:border-zinc-500 dark:hover:border-zinc-600 relative overflow-hidden rounded-2xl border p-6 transition-all hover:scale-105 hover:shadow-xl",children:[t.icon&&jsxRuntime.jsx(framerMotion.motion.div,{className:"mb-4 text-3xl text-zinc-900 dark:text-zinc-100",initial:{rotate:-10,scale:.8},animate:a?{rotate:0,scale:1}:{rotate:-10,scale:.8},transition:{duration:.6,delay:n*.1+.2,type:"spring",stiffness:200},children:t.icon}),jsxRuntime.jsx(framerMotion.motion.div,{className:"text-zinc-900 dark:text-zinc-100 mb-1 text-2xl font-bold lg:text-3xl",initial:{scale:.5},animate:a?{scale:1}:{scale:.5},transition:{duration:.8,delay:n*.1+.3,type:"spring",stiffness:200},children:t.value}),jsxRuntime.jsx("h3",{className:"text-zinc-900 dark:text-zinc-100 mb-2 text-sm font-semibold tracking-wide uppercase",children:t.label}),t.description&&jsxRuntime.jsx("p",{className:"text-zinc-600 dark:text-zinc-400 mb-3 text-xs",children:t.description}),t.trend&&jsxRuntime.jsxs(framerMotion.motion.div,{className:o("inline-flex items-center rounded-full px-2 py-1 text-xs font-medium",t.trend.direction==="up"?"bg-green-900/20 text-green-400":"bg-red-900/20 text-red-400"),initial:{opacity:0,x:-10},animate:a?{opacity:1,x:0}:{opacity:0,x:-10},transition:{duration:.4,delay:n*.1+.5},children:[jsxRuntime.jsx("span",{className:"mr-1",children:t.trend.direction==="up"?"\u2197":"\u2198"}),t.trend.value]})]},t.label))})]})})})}exports.StatsCards=w;//# sourceMappingURL=index.js.map
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/stats-cards/index.tsx"],"names":["cn","inputs","twMerge","clsx","StatsCards","title","description","stats","className","ref","useRef","isInView","useInView","jsx","jsxs","motion","stat","index"],"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, useInView } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface StatItem {\r\n value: string;\r\n label: string;\r\n description?: string;\r\n icon?: React.ReactNode;\r\n trend?: {\r\n value: string;\r\n direction: \"up\" | \"down\";\r\n };\r\n}\r\n\r\ninterface StatsCardsProps {\r\n title?: string;\r\n description?: string;\r\n stats: StatItem[];\r\n className?: string;\r\n}\r\n\r\nexport function StatsCards({\r\n title = \"Key Metrics\",\r\n description = \"Track your success with these important numbers\",\r\n stats,\r\n className,\r\n}: StatsCardsProps) {\r\n const ref = useRef(null);\r\n const isInView = useInView(ref, { once: true });\r\n\r\n return (\r\n <div className={cn(\"min-h-[400px] w-full\", className)}>\r\n <section className=\"py-20\">\r\n <div className=\"mx-auto max-w-7xl px-6\">\r\n <motion.div\r\n initial={{ opacity: 0, y: 20 }}\r\n whileInView={{ opacity: 1, y: 0 }}\r\n transition={{ duration: 0.6 }}\r\n viewport={{ once: true }}\r\n className=\"mb-16 text-center\"\r\n >\r\n <h2 className=\"text-zinc-900 dark:text-zinc-100 mb-4 text-3xl font-bold lg:text-4xl\">{title}</h2>\r\n <p className=\"text-zinc-600 dark:text-zinc-400 mx-auto max-w-2xl text-lg\">{description}</p>\r\n </motion.div>\r\n\r\n <div ref={ref} className=\"grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-4\">\r\n {stats.map((stat, index) => (\r\n <motion.div\r\n key={stat.label}\r\n initial={{ opacity: 0, y: 30, scale: 0.9 }}\r\n animate={isInView ? { opacity: 1, y: 0, scale: 1 } : { opacity: 0, y: 30, scale: 0.9 }}\r\n transition={{ duration: 0.6, delay: index * 0.1, type: \"spring\", stiffness: 100 }}\r\n className=\"group border-zinc-300 dark:border-zinc-700 bg-transparent hover:border-zinc-500 dark:hover:border-zinc-600 relative overflow-hidden rounded-2xl border p-6 transition-all hover:scale-105 hover:shadow-xl\"\r\n >\r\n {stat.icon && (\r\n <motion.div\r\n className=\"mb-4 text-3xl text-zinc-900 dark:text-zinc-100\"\r\n initial={{ rotate: -10, scale: 0.8 }}\r\n animate={isInView ? { rotate: 0, scale: 1 } : { rotate: -10, scale: 0.8 }}\r\n transition={{ duration: 0.6, delay: index * 0.1 + 0.2, type: \"spring\", stiffness: 200 }}\r\n >\r\n {stat.icon}\r\n </motion.div>\r\n )}\r\n <motion.div\r\n className=\"text-zinc-900 dark:text-zinc-100 mb-1 text-2xl font-bold lg:text-3xl\"\r\n initial={{ scale: 0.5 }}\r\n animate={isInView ? { scale: 1 } : { scale: 0.5 }}\r\n transition={{ duration: 0.8, delay: index * 0.1 + 0.3, type: \"spring\", stiffness: 200 }}\r\n >\r\n {stat.value}\r\n </motion.div>\r\n <h3 className=\"text-zinc-900 dark:text-zinc-100 mb-2 text-sm font-semibold tracking-wide uppercase\">\r\n {stat.label}\r\n </h3>\r\n {stat.description && <p className=\"text-zinc-600 dark:text-zinc-400 mb-3 text-xs\">{stat.description}</p>}\r\n {stat.trend && (\r\n <motion.div\r\n className={cn(\r\n \"inline-flex items-center rounded-full px-2 py-1 text-xs font-medium\",\r\n stat.trend.direction === \"up\" ? \"bg-green-900/20 text-green-400\" : \"bg-red-900/20 text-red-400\"\r\n )}\r\n initial={{ opacity: 0, x: -10 }}\r\n animate={isInView ? { opacity: 1, x: 0 } : { opacity: 0, x: -10 }}\r\n transition={{ duration: 0.4, delay: index * 0.1 + 0.5 }}\r\n >\r\n <span className=\"mr-1\">{stat.trend.direction === \"up\" ? \"↗\" : \"↘\"}</span>\r\n {stat.trend.value}\r\n </motion.div>\r\n )}\r\n </motion.div>\r\n ))}\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n );\r\n}\r\n\r\nexport type { StatsCardsProps, StatItem };\r\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {useRef}from'react';import {useInView,motion}from'framer-motion';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx,jsxs}from'react/jsx-runtime';function o(...s){return twMerge(clsx(s))}function w({title:s="Key Metrics",description:l="Track your success with these important numbers",stats:d,className:m}){let c=useRef(null),a=useInView(c,{once:true});return jsx("div",{className:o("min-h-[400px] w-full",m),children:jsx("section",{className:"py-20",children:jsxs("div",{className:"mx-auto max-w-7xl px-6",children:[jsxs(motion.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},transition:{duration:.6},viewport:{once:true},className:"mb-16 text-center",children:[jsx("h2",{className:"text-zinc-900 dark:text-zinc-100 mb-4 text-3xl font-bold lg:text-4xl",children:s}),jsx("p",{className:"text-zinc-600 dark:text-zinc-400 mx-auto max-w-2xl text-lg",children:l})]}),jsx("div",{ref:c,className:"grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-4",children:d.map((t,n)=>jsxs(motion.div,{initial:{opacity:0,y:30,scale:.9},animate:a?{opacity:1,y:0,scale:1}:{opacity:0,y:30,scale:.9},transition:{duration:.6,delay:n*.1,type:"spring",stiffness:100},className:"group border-zinc-300 dark:border-zinc-700 bg-transparent hover:border-zinc-500 dark:hover:border-zinc-600 relative overflow-hidden rounded-2xl border p-6 transition-all hover:scale-105 hover:shadow-xl",children:[t.icon&&jsx(motion.div,{className:"mb-4 text-3xl text-zinc-900 dark:text-zinc-100",initial:{rotate:-10,scale:.8},animate:a?{rotate:0,scale:1}:{rotate:-10,scale:.8},transition:{duration:.6,delay:n*.1+.2,type:"spring",stiffness:200},children:t.icon}),jsx(motion.div,{className:"text-zinc-900 dark:text-zinc-100 mb-1 text-2xl font-bold lg:text-3xl",initial:{scale:.5},animate:a?{scale:1}:{scale:.5},transition:{duration:.8,delay:n*.1+.3,type:"spring",stiffness:200},children:t.value}),jsx("h3",{className:"text-zinc-900 dark:text-zinc-100 mb-2 text-sm font-semibold tracking-wide uppercase",children:t.label}),t.description&&jsx("p",{className:"text-zinc-600 dark:text-zinc-400 mb-3 text-xs",children:t.description}),t.trend&&jsxs(motion.div,{className:o("inline-flex items-center rounded-full px-2 py-1 text-xs font-medium",t.trend.direction==="up"?"bg-green-900/20 text-green-400":"bg-red-900/20 text-red-400"),initial:{opacity:0,x:-10},animate:a?{opacity:1,x:0}:{opacity:0,x:-10},transition:{duration:.4,delay:n*.1+.5},children:[jsx("span",{className:"mr-1",children:t.trend.direction==="up"?"\u2197":"\u2198"}),t.trend.value]})]},t.label))})]})})})}export{w as StatsCards};//# sourceMappingURL=index.mjs.map
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/stats-cards/index.tsx"],"names":["cn","inputs","twMerge","clsx","StatsCards","title","description","stats","className","ref","useRef","isInView","useInView","jsx","jsxs","motion","stat","index"],"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, useInView } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface StatItem {\r\n value: string;\r\n label: string;\r\n description?: string;\r\n icon?: React.ReactNode;\r\n trend?: {\r\n value: string;\r\n direction: \"up\" | \"down\";\r\n };\r\n}\r\n\r\ninterface StatsCardsProps {\r\n title?: string;\r\n description?: string;\r\n stats: StatItem[];\r\n className?: string;\r\n}\r\n\r\nexport function StatsCards({\r\n title = \"Key Metrics\",\r\n description = \"Track your success with these important numbers\",\r\n stats,\r\n className,\r\n}: StatsCardsProps) {\r\n const ref = useRef(null);\r\n const isInView = useInView(ref, { once: true });\r\n\r\n return (\r\n <div className={cn(\"min-h-[400px] w-full\", className)}>\r\n <section className=\"py-20\">\r\n <div className=\"mx-auto max-w-7xl px-6\">\r\n <motion.div\r\n initial={{ opacity: 0, y: 20 }}\r\n whileInView={{ opacity: 1, y: 0 }}\r\n transition={{ duration: 0.6 }}\r\n viewport={{ once: true }}\r\n className=\"mb-16 text-center\"\r\n >\r\n <h2 className=\"text-zinc-900 dark:text-zinc-100 mb-4 text-3xl font-bold lg:text-4xl\">{title}</h2>\r\n <p className=\"text-zinc-600 dark:text-zinc-400 mx-auto max-w-2xl text-lg\">{description}</p>\r\n </motion.div>\r\n\r\n <div ref={ref} className=\"grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-4\">\r\n {stats.map((stat, index) => (\r\n <motion.div\r\n key={stat.label}\r\n initial={{ opacity: 0, y: 30, scale: 0.9 }}\r\n animate={isInView ? { opacity: 1, y: 0, scale: 1 } : { opacity: 0, y: 30, scale: 0.9 }}\r\n transition={{ duration: 0.6, delay: index * 0.1, type: \"spring\", stiffness: 100 }}\r\n className=\"group border-zinc-300 dark:border-zinc-700 bg-transparent hover:border-zinc-500 dark:hover:border-zinc-600 relative overflow-hidden rounded-2xl border p-6 transition-all hover:scale-105 hover:shadow-xl\"\r\n >\r\n {stat.icon && (\r\n <motion.div\r\n className=\"mb-4 text-3xl text-zinc-900 dark:text-zinc-100\"\r\n initial={{ rotate: -10, scale: 0.8 }}\r\n animate={isInView ? { rotate: 0, scale: 1 } : { rotate: -10, scale: 0.8 }}\r\n transition={{ duration: 0.6, delay: index * 0.1 + 0.2, type: \"spring\", stiffness: 200 }}\r\n >\r\n {stat.icon}\r\n </motion.div>\r\n )}\r\n <motion.div\r\n className=\"text-zinc-900 dark:text-zinc-100 mb-1 text-2xl font-bold lg:text-3xl\"\r\n initial={{ scale: 0.5 }}\r\n animate={isInView ? { scale: 1 } : { scale: 0.5 }}\r\n transition={{ duration: 0.8, delay: index * 0.1 + 0.3, type: \"spring\", stiffness: 200 }}\r\n >\r\n {stat.value}\r\n </motion.div>\r\n <h3 className=\"text-zinc-900 dark:text-zinc-100 mb-2 text-sm font-semibold tracking-wide uppercase\">\r\n {stat.label}\r\n </h3>\r\n {stat.description && <p className=\"text-zinc-600 dark:text-zinc-400 mb-3 text-xs\">{stat.description}</p>}\r\n {stat.trend && (\r\n <motion.div\r\n className={cn(\r\n \"inline-flex items-center rounded-full px-2 py-1 text-xs font-medium\",\r\n stat.trend.direction === \"up\" ? \"bg-green-900/20 text-green-400\" : \"bg-red-900/20 text-red-400\"\r\n )}\r\n initial={{ opacity: 0, x: -10 }}\r\n animate={isInView ? { opacity: 1, x: 0 } : { opacity: 0, x: -10 }}\r\n transition={{ duration: 0.4, delay: index * 0.1 + 0.5 }}\r\n >\r\n <span className=\"mr-1\">{stat.trend.direction === \"up\" ? \"↗\" : \"↘\"}</span>\r\n {stat.trend.value}\r\n </motion.div>\r\n )}\r\n </motion.div>\r\n ))}\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n );\r\n}\r\n\r\nexport type { StatsCardsProps, StatItem };\r\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';var react=require('react'),framerMotion=require('framer-motion'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function l(...i){return tailwindMerge.twMerge(clsx.clsx(i))}function w({title:i="Our Impact in Numbers",description:c="See how we're making a difference across the globe",stats:d,className:m}){let n=react.useRef(null),o=framerMotion.useInView(n,{once:true});return jsxRuntime.jsx("div",{className:l("min-h-[400px] w-full",m),children:jsxRuntime.jsx("section",{className:"py-20",children:jsxRuntime.jsxs("div",{className:"mx-auto max-w-7xl px-6",children:[jsxRuntime.jsxs(framerMotion.motion.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},transition:{duration:.6},viewport:{once:true},className:"mb-16 text-center",children:[jsxRuntime.jsx("h2",{className:"text-zinc-900 dark:text-zinc-100 mb-4 text-3xl font-bold lg:text-4xl",children:i}),jsxRuntime.jsx("p",{className:"text-zinc-600 dark:text-zinc-400 mx-auto max-w-2xl text-lg",children:c})]}),jsxRuntime.jsx("div",{ref:n,className:"grid grid-cols-1 gap-8 md:grid-cols-2 lg:grid-cols-4",children:d.map((e,s)=>jsxRuntime.jsxs(framerMotion.motion.div,{initial:{opacity:0,y:30},animate:o?{opacity:1,y:0}:{opacity:0,y:30},transition:{duration:.6,delay:s*.1},className:"group bg-transparent hover:border-zinc-500 dark:hover:border-zinc-600 relative overflow-hidden rounded-2xl border border-zinc-300 dark:border-zinc-700 p-8 text-center transition-all hover:shadow-lg",children:[jsxRuntime.jsx(framerMotion.motion.div,{className:"text-zinc-900 dark:text-zinc-100 mb-2 text-4xl font-bold lg:text-5xl",initial:{scale:.5},animate:o?{scale:1}:{scale:.5},transition:{duration:.8,delay:s*.1+.2,type:"spring",stiffness:200},children:e.value}),jsxRuntime.jsx("h3",{className:"text-zinc-900 dark:text-zinc-100 mb-2 text-lg font-semibold",children:e.label}),e.description&&jsxRuntime.jsx("p",{className:"text-zinc-600 dark:text-zinc-400 text-sm",children:e.description})]},e.label))})]})})})}exports.StatsGrid=w;//# sourceMappingURL=index.js.map
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/stats-grid/index.tsx"],"names":["cn","inputs","twMerge","clsx","StatsGrid","title","description","stats","className","ref","useRef","isInView","useInView","jsx","jsxs","motion","stat","index"],"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 { useRef } from \"react\";\r\nimport { motion, useInView } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface StatGridItem {\r\n value: string;\r\n label: string;\r\n description?: string;\r\n}\r\n\r\ninterface StatsGridProps {\r\n title?: string;\r\n description?: string;\r\n stats: StatGridItem[];\r\n className?: string;\r\n}\r\n\r\nexport function StatsGrid({\r\n title = \"Our Impact in Numbers\",\r\n description = \"See how we're making a difference across the globe\",\r\n stats,\r\n className,\r\n}: StatsGridProps) {\r\n const ref = useRef(null);\r\n const isInView = useInView(ref, { once: true });\r\n\r\n return (\r\n <div className={cn(\"min-h-[400px] w-full\", className)}>\r\n <section className=\"py-20\">\r\n <div className=\"mx-auto max-w-7xl px-6\">\r\n <motion.div\r\n initial={{ opacity: 0, y: 20 }}\r\n whileInView={{ opacity: 1, y: 0 }}\r\n transition={{ duration: 0.6 }}\r\n viewport={{ once: true }}\r\n className=\"mb-16 text-center\"\r\n >\r\n <h2 className=\"text-zinc-900 dark:text-zinc-100 mb-4 text-3xl font-bold lg:text-4xl\">{title}</h2>\r\n <p className=\"text-zinc-600 dark:text-zinc-400 mx-auto max-w-2xl text-lg\">{description}</p>\r\n </motion.div>\r\n\r\n <div ref={ref} className=\"grid grid-cols-1 gap-8 md:grid-cols-2 lg:grid-cols-4\">\r\n {stats.map((stat, index) => (\r\n <motion.div\r\n key={stat.label}\r\n initial={{ opacity: 0, y: 30 }}\r\n animate={isInView ? { opacity: 1, y: 0 } : { opacity: 0, y: 30 }}\r\n transition={{ duration: 0.6, delay: index * 0.1 }}\r\n className=\"group bg-transparent hover:border-zinc-500 dark:hover:border-zinc-600 relative overflow-hidden rounded-2xl border border-zinc-300 dark:border-zinc-700 p-8 text-center transition-all hover:shadow-lg\"\r\n >\r\n <motion.div\r\n className=\"text-zinc-900 dark:text-zinc-100 mb-2 text-4xl font-bold lg:text-5xl\"\r\n initial={{ scale: 0.5 }}\r\n animate={isInView ? { scale: 1 } : { scale: 0.5 }}\r\n transition={{ duration: 0.8, delay: index * 0.1 + 0.2, type: \"spring\", stiffness: 200 }}\r\n >\r\n {stat.value}\r\n </motion.div>\r\n <h3 className=\"text-zinc-900 dark:text-zinc-100 mb-2 text-lg font-semibold\">{stat.label}</h3>\r\n {stat.description && <p className=\"text-zinc-600 dark:text-zinc-400 text-sm\">{stat.description}</p>}\r\n </motion.div>\r\n ))}\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n );\r\n}\r\n\r\nexport type { StatsGridProps, StatGridItem };\r\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {useRef}from'react';import {useInView,motion}from'framer-motion';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx,jsxs}from'react/jsx-runtime';function l(...i){return twMerge(clsx(i))}function w({title:i="Our Impact in Numbers",description:c="See how we're making a difference across the globe",stats:d,className:m}){let n=useRef(null),o=useInView(n,{once:true});return jsx("div",{className:l("min-h-[400px] w-full",m),children:jsx("section",{className:"py-20",children:jsxs("div",{className:"mx-auto max-w-7xl px-6",children:[jsxs(motion.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},transition:{duration:.6},viewport:{once:true},className:"mb-16 text-center",children:[jsx("h2",{className:"text-zinc-900 dark:text-zinc-100 mb-4 text-3xl font-bold lg:text-4xl",children:i}),jsx("p",{className:"text-zinc-600 dark:text-zinc-400 mx-auto max-w-2xl text-lg",children:c})]}),jsx("div",{ref:n,className:"grid grid-cols-1 gap-8 md:grid-cols-2 lg:grid-cols-4",children:d.map((e,s)=>jsxs(motion.div,{initial:{opacity:0,y:30},animate:o?{opacity:1,y:0}:{opacity:0,y:30},transition:{duration:.6,delay:s*.1},className:"group bg-transparent hover:border-zinc-500 dark:hover:border-zinc-600 relative overflow-hidden rounded-2xl border border-zinc-300 dark:border-zinc-700 p-8 text-center transition-all hover:shadow-lg",children:[jsx(motion.div,{className:"text-zinc-900 dark:text-zinc-100 mb-2 text-4xl font-bold lg:text-5xl",initial:{scale:.5},animate:o?{scale:1}:{scale:.5},transition:{duration:.8,delay:s*.1+.2,type:"spring",stiffness:200},children:e.value}),jsx("h3",{className:"text-zinc-900 dark:text-zinc-100 mb-2 text-lg font-semibold",children:e.label}),e.description&&jsx("p",{className:"text-zinc-600 dark:text-zinc-400 text-sm",children:e.description})]},e.label))})]})})})}export{w as StatsGrid};//# sourceMappingURL=index.mjs.map
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/stats-grid/index.tsx"],"names":["cn","inputs","twMerge","clsx","StatsGrid","title","description","stats","className","ref","useRef","isInView","useInView","jsx","jsxs","motion","stat","index"],"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 { useRef } from \"react\";\r\nimport { motion, useInView } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface StatGridItem {\r\n value: string;\r\n label: string;\r\n description?: string;\r\n}\r\n\r\ninterface StatsGridProps {\r\n title?: string;\r\n description?: string;\r\n stats: StatGridItem[];\r\n className?: string;\r\n}\r\n\r\nexport function StatsGrid({\r\n title = \"Our Impact in Numbers\",\r\n description = \"See how we're making a difference across the globe\",\r\n stats,\r\n className,\r\n}: StatsGridProps) {\r\n const ref = useRef(null);\r\n const isInView = useInView(ref, { once: true });\r\n\r\n return (\r\n <div className={cn(\"min-h-[400px] w-full\", className)}>\r\n <section className=\"py-20\">\r\n <div className=\"mx-auto max-w-7xl px-6\">\r\n <motion.div\r\n initial={{ opacity: 0, y: 20 }}\r\n whileInView={{ opacity: 1, y: 0 }}\r\n transition={{ duration: 0.6 }}\r\n viewport={{ once: true }}\r\n className=\"mb-16 text-center\"\r\n >\r\n <h2 className=\"text-zinc-900 dark:text-zinc-100 mb-4 text-3xl font-bold lg:text-4xl\">{title}</h2>\r\n <p className=\"text-zinc-600 dark:text-zinc-400 mx-auto max-w-2xl text-lg\">{description}</p>\r\n </motion.div>\r\n\r\n <div ref={ref} className=\"grid grid-cols-1 gap-8 md:grid-cols-2 lg:grid-cols-4\">\r\n {stats.map((stat, index) => (\r\n <motion.div\r\n key={stat.label}\r\n initial={{ opacity: 0, y: 30 }}\r\n animate={isInView ? { opacity: 1, y: 0 } : { opacity: 0, y: 30 }}\r\n transition={{ duration: 0.6, delay: index * 0.1 }}\r\n className=\"group bg-transparent hover:border-zinc-500 dark:hover:border-zinc-600 relative overflow-hidden rounded-2xl border border-zinc-300 dark:border-zinc-700 p-8 text-center transition-all hover:shadow-lg\"\r\n >\r\n <motion.div\r\n className=\"text-zinc-900 dark:text-zinc-100 mb-2 text-4xl font-bold lg:text-5xl\"\r\n initial={{ scale: 0.5 }}\r\n animate={isInView ? { scale: 1 } : { scale: 0.5 }}\r\n transition={{ duration: 0.8, delay: index * 0.1 + 0.2, type: \"spring\", stiffness: 200 }}\r\n >\r\n {stat.value}\r\n </motion.div>\r\n <h3 className=\"text-zinc-900 dark:text-zinc-100 mb-2 text-lg font-semibold\">{stat.label}</h3>\r\n {stat.description && <p className=\"text-zinc-600 dark:text-zinc-400 text-sm\">{stat.description}</p>}\r\n </motion.div>\r\n ))}\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n );\r\n}\r\n\r\nexport type { StatsGridProps, StatGridItem };\r\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';var clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function i(...a){return tailwindMerge.twMerge(clsx.clsx(a))}var l=({className:a})=>jsxRuntime.jsx("svg",{className:a,viewBox:"0 0 22 22",fill:"currentColor",children:jsxRuntime.jsx("path",{d:"M20.396 11c-.018-.646-.215-1.275-.57-1.816-.354-.54-.852-.972-1.438-1.246.223-.607.27-1.264.14-1.897-.131-.634-.437-1.218-.882-1.687-.47-.445-1.053-.75-1.687-.882-.633-.13-1.29-.083-1.897.14-.273-.587-.704-1.086-1.245-1.44S11.647 1.62 11 1.604c-.646.017-1.273.213-1.813.568s-.969.854-1.24 1.44c-.608-.223-1.267-.272-1.902-.14-.635.13-1.22.436-1.69.882-.445.47-.749 1.055-.878 1.688-.13.633-.08 1.29.144 1.896-.587.274-1.087.705-1.443 1.245-.356.54-.555 1.17-.574 1.817.02.647.218 1.276.574 1.817.356.54.856.972 1.443 1.245-.224.606-.274 1.263-.144 1.896.13.634.433 1.218.877 1.688.47.443 1.054.747 1.687.878.633.132 1.29.084 1.897-.136.274.586.705 1.084 1.246 1.439.54.354 1.17.551 1.816.569.647-.016 1.276-.213 1.817-.567s.972-.854 1.245-1.44c.604.239 1.266.296 1.903.164.636-.132 1.22-.447 1.68-.907.46-.46.776-1.044.908-1.681s.075-1.299-.165-1.903c.586-.274 1.084-.705 1.439-1.246.354-.54.551-1.17.569-1.816zM9.662 14.85l-3.429-3.428 1.293-1.302 2.072 2.072 4.4-4.794 1.347 1.246z"})}),f=({className:a})=>jsxRuntime.jsxs("svg",{className:a,viewBox:"0 0 1200 1227",fill:"none",children:[jsxRuntime.jsx("title",{children:"X"}),jsxRuntime.jsx("path",{fill:"currentColor",d:"M714.163 519.284 1160.89 0h-105.86L667.137 450.887 357.328 0H0l468.492 681.821L0 1226.37h105.866l409.625-476.152 327.181 476.152H1200L714.137 519.284h.026ZM569.165 687.828l-47.468-67.894-377.686-540.24h162.604l304.797 435.991 47.468 67.894 396.2 566.721H892.476L569.165 687.854v-.026Z"})]});function C({authorName:a,authorHandle:o,authorImage:n,content:d,isVerified:c=false,timestamp:m,reply:s,href:r,className:p}){return jsxRuntime.jsx(r?"a":"div",{...r?{href:r,target:"_blank",rel:"noopener noreferrer"}:{},className:i("block w-full min-w-[400px] md:min-w-[500px] max-w-xl p-1.5 rounded-2xl relative isolate overflow-hidden","bg-black/90 dark:bg-black/90","backdrop-blur-xl backdrop-saturate-[180%]","border border-black/10 dark:border-white/10","shadow-[0_8px_16px_rgb(0_0_0_/_0.15)] dark:shadow-[0_8px_16px_rgb(0_0_0_/_0.25)]",p),children:jsxRuntime.jsxs("div",{className:i("w-full p-5 rounded-xl relative","bg-gradient-to-br from-black/[0.05] to-transparent dark:from-white/[0.08] dark:to-transparent","backdrop-blur-md backdrop-saturate-150","border border-black/[0.05] dark:border-white/[0.08]","text-white/90 dark:text-white"),children:[jsxRuntime.jsxs("div",{className:"flex gap-3",children:[jsxRuntime.jsx("div",{className:"shrink-0",children:jsxRuntime.jsx("div",{className:"h-10 w-10 rounded-full overflow-hidden",children:jsxRuntime.jsx("img",{src:n,alt:a,className:"h-full w-full object-cover"})})}),jsxRuntime.jsx("div",{className:"flex-1",children:jsxRuntime.jsxs("div",{className:"flex justify-between items-start",children:[jsxRuntime.jsxs("div",{className:"flex flex-col",children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-1",children:[jsxRuntime.jsx("span",{className:"font-semibold text-white dark:text-white/90 hover:underline cursor-pointer",children:a}),c&&jsxRuntime.jsx(l,{className:"h-4 w-4 text-blue-400"})]}),jsxRuntime.jsxs("span",{className:"text-white/60 text-sm",children:["@",o]})]}),jsxRuntime.jsx("div",{className:"h-8 w-8 text-white/80 hover:text-white hover:bg-white/10 rounded-lg p-1 flex items-center justify-center",children:jsxRuntime.jsx(f,{className:"w-4 h-4"})})]})})]}),jsxRuntime.jsxs("div",{className:"mt-2",children:[d.map((h,v)=>jsxRuntime.jsx("p",{className:"text-white dark:text-white/90 text-base",children:h},v)),jsxRuntime.jsx("span",{className:"text-white/50 text-sm mt-2 block",children:m})]}),s&&jsxRuntime.jsx("div",{className:"mt-4 pt-4 border-t border-white/[0.08]",children:jsxRuntime.jsxs("div",{className:"flex gap-3",children:[jsxRuntime.jsx("div",{className:"shrink-0",children:jsxRuntime.jsx("div",{className:"h-10 w-10 rounded-full overflow-hidden",children:jsxRuntime.jsx("img",{src:s.authorImage,alt:s.authorName,className:"h-full w-full object-cover"})})}),jsxRuntime.jsxs("div",{className:"flex-1",children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-1",children:[jsxRuntime.jsx("span",{className:"font-semibold text-white/90 hover:underline cursor-pointer",children:s.authorName}),s.isVerified&&jsxRuntime.jsx(l,{className:"h-4 w-4 text-blue-400"}),jsxRuntime.jsxs("span",{className:"text-white/60 text-sm",children:["@",s.authorHandle]}),jsxRuntime.jsx("span",{className:"text-white/60 text-sm",children:"\xB7"}),jsxRuntime.jsx("span",{className:"text-white/60 text-sm",children:s.timestamp})]}),jsxRuntime.jsx("p",{className:"text-white/80 text-sm mt-1",children:s.content})]})]})})]})})}exports.TweetCard=C;//# sourceMappingURL=index.js.map
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/tweet-card/index.tsx"],"names":["cn","inputs","twMerge","clsx","VerifiedIcon","className","jsx","XIcon","jsxs","TweetCard","authorName","authorHandle","authorImage","content","isVerified","timestamp","reply","href","item","index"],"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 { cn } from \"../utils/cn\";\r\n\r\ninterface ReplyProps {\r\n authorName: string;\r\n authorHandle: string;\r\n authorImage: string;\r\n content: string;\r\n isVerified?: boolean;\r\n timestamp: string;\r\n}\r\n\r\ninterface TweetCardProps {\r\n authorName: string;\r\n authorHandle: string;\r\n authorImage: string;\r\n content: string[];\r\n isVerified?: boolean;\r\n timestamp: string;\r\n reply?: ReplyProps;\r\n href?: string;\r\n className?: string;\r\n}\r\n\r\nconst VerifiedIcon = ({ className }: { className?: string }) => (\r\n <svg className={className} viewBox=\"0 0 22 22\" fill=\"currentColor\">\r\n <path d=\"M20.396 11c-.018-.646-.215-1.275-.57-1.816-.354-.54-.852-.972-1.438-1.246.223-.607.27-1.264.14-1.897-.131-.634-.437-1.218-.882-1.687-.47-.445-1.053-.75-1.687-.882-.633-.13-1.29-.083-1.897.14-.273-.587-.704-1.086-1.245-1.44S11.647 1.62 11 1.604c-.646.017-1.273.213-1.813.568s-.969.854-1.24 1.44c-.608-.223-1.267-.272-1.902-.14-.635.13-1.22.436-1.69.882-.445.47-.749 1.055-.878 1.688-.13.633-.08 1.29.144 1.896-.587.274-1.087.705-1.443 1.245-.356.54-.555 1.17-.574 1.817.02.647.218 1.276.574 1.817.356.54.856.972 1.443 1.245-.224.606-.274 1.263-.144 1.896.13.634.433 1.218.877 1.688.47.443 1.054.747 1.687.878.633.132 1.29.084 1.897-.136.274.586.705 1.084 1.246 1.439.54.354 1.17.551 1.816.569.647-.016 1.276-.213 1.817-.567s.972-.854 1.245-1.44c.604.239 1.266.296 1.903.164.636-.132 1.22-.447 1.68-.907.46-.46.776-1.044.908-1.681s.075-1.299-.165-1.903c.586-.274 1.084-.705 1.439-1.246.354-.54.551-1.17.569-1.816zM9.662 14.85l-3.429-3.428 1.293-1.302 2.072 2.072 4.4-4.794 1.347 1.246z\" />\r\n </svg>\r\n);\r\n\r\nconst XIcon = ({ className }: { className?: string }) => (\r\n <svg className={className} viewBox=\"0 0 1200 1227\" fill=\"none\">\r\n <title>X</title>\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M714.163 519.284 1160.89 0h-105.86L667.137 450.887 357.328 0H0l468.492 681.821L0 1226.37h105.866l409.625-476.152 327.181 476.152H1200L714.137 519.284h.026ZM569.165 687.828l-47.468-67.894-377.686-540.24h162.604l304.797 435.991 47.468 67.894 396.2 566.721H892.476L569.165 687.854v-.026Z\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport function TweetCard({\r\n authorName,\r\n authorHandle,\r\n authorImage,\r\n content,\r\n isVerified = false,\r\n timestamp,\r\n reply,\r\n href,\r\n className,\r\n}: TweetCardProps) {\r\n const Wrapper = href ? \"a\" : \"div\";\r\n const wrapperProps = href ? { href, target: \"_blank\", rel: \"noopener noreferrer\" } : {};\r\n\r\n return (\r\n <Wrapper\r\n {...wrapperProps}\r\n className={cn(\r\n \"block w-full min-w-[400px] md:min-w-[500px] max-w-xl p-1.5 rounded-2xl relative isolate overflow-hidden\",\r\n \"bg-black/90 dark:bg-black/90\",\r\n \"backdrop-blur-xl backdrop-saturate-[180%]\",\r\n \"border border-black/10 dark:border-white/10\",\r\n \"shadow-[0_8px_16px_rgb(0_0_0_/_0.15)] dark:shadow-[0_8px_16px_rgb(0_0_0_/_0.25)]\",\r\n className\r\n )}\r\n >\r\n <div\r\n className={cn(\r\n \"w-full p-5 rounded-xl relative\",\r\n \"bg-gradient-to-br from-black/[0.05] to-transparent dark:from-white/[0.08] dark:to-transparent\",\r\n \"backdrop-blur-md backdrop-saturate-150\",\r\n \"border border-black/[0.05] dark:border-white/[0.08]\",\r\n \"text-white/90 dark:text-white\"\r\n )}\r\n >\r\n <div className=\"flex gap-3\">\r\n <div className=\"shrink-0\">\r\n <div className=\"h-10 w-10 rounded-full overflow-hidden\">\r\n <img src={authorImage} alt={authorName} className=\"h-full w-full object-cover\" />\r\n </div>\r\n </div>\r\n <div className=\"flex-1\">\r\n <div className=\"flex justify-between items-start\">\r\n <div className=\"flex flex-col\">\r\n <div className=\"flex items-center gap-1\">\r\n <span className=\"font-semibold text-white dark:text-white/90 hover:underline cursor-pointer\">\r\n {authorName}\r\n </span>\r\n {isVerified && <VerifiedIcon className=\"h-4 w-4 text-blue-400\" />}\r\n </div>\r\n <span className=\"text-white/60 text-sm\">@{authorHandle}</span>\r\n </div>\r\n <div className=\"h-8 w-8 text-white/80 hover:text-white hover:bg-white/10 rounded-lg p-1 flex items-center justify-center\">\r\n <XIcon className=\"w-4 h-4\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"mt-2\">\r\n {content.map((item, index) => (\r\n <p key={index} className=\"text-white dark:text-white/90 text-base\">\r\n {item}\r\n </p>\r\n ))}\r\n <span className=\"text-white/50 text-sm mt-2 block\">{timestamp}</span>\r\n </div>\r\n {reply && (\r\n <div className=\"mt-4 pt-4 border-t border-white/[0.08]\">\r\n <div className=\"flex gap-3\">\r\n <div className=\"shrink-0\">\r\n <div className=\"h-10 w-10 rounded-full overflow-hidden\">\r\n <img src={reply.authorImage} alt={reply.authorName} className=\"h-full w-full object-cover\" />\r\n </div>\r\n </div>\r\n <div className=\"flex-1\">\r\n <div className=\"flex items-center gap-1\">\r\n <span className=\"font-semibold text-white/90 hover:underline cursor-pointer\">{reply.authorName}</span>\r\n {reply.isVerified && <VerifiedIcon className=\"h-4 w-4 text-blue-400\" />}\r\n <span className=\"text-white/60 text-sm\">@{reply.authorHandle}</span>\r\n <span className=\"text-white/60 text-sm\">·</span>\r\n <span className=\"text-white/60 text-sm\">{reply.timestamp}</span>\r\n </div>\r\n <p className=\"text-white/80 text-sm mt-1\">{reply.content}</p>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </Wrapper>\r\n );\r\n}\r\n\r\nexport type { TweetCardProps, ReplyProps };\r\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx,jsxs}from'react/jsx-runtime';function i(...a){return twMerge(clsx(a))}var l=({className:a})=>jsx("svg",{className:a,viewBox:"0 0 22 22",fill:"currentColor",children:jsx("path",{d:"M20.396 11c-.018-.646-.215-1.275-.57-1.816-.354-.54-.852-.972-1.438-1.246.223-.607.27-1.264.14-1.897-.131-.634-.437-1.218-.882-1.687-.47-.445-1.053-.75-1.687-.882-.633-.13-1.29-.083-1.897.14-.273-.587-.704-1.086-1.245-1.44S11.647 1.62 11 1.604c-.646.017-1.273.213-1.813.568s-.969.854-1.24 1.44c-.608-.223-1.267-.272-1.902-.14-.635.13-1.22.436-1.69.882-.445.47-.749 1.055-.878 1.688-.13.633-.08 1.29.144 1.896-.587.274-1.087.705-1.443 1.245-.356.54-.555 1.17-.574 1.817.02.647.218 1.276.574 1.817.356.54.856.972 1.443 1.245-.224.606-.274 1.263-.144 1.896.13.634.433 1.218.877 1.688.47.443 1.054.747 1.687.878.633.132 1.29.084 1.897-.136.274.586.705 1.084 1.246 1.439.54.354 1.17.551 1.816.569.647-.016 1.276-.213 1.817-.567s.972-.854 1.245-1.44c.604.239 1.266.296 1.903.164.636-.132 1.22-.447 1.68-.907.46-.46.776-1.044.908-1.681s.075-1.299-.165-1.903c.586-.274 1.084-.705 1.439-1.246.354-.54.551-1.17.569-1.816zM9.662 14.85l-3.429-3.428 1.293-1.302 2.072 2.072 4.4-4.794 1.347 1.246z"})}),f=({className:a})=>jsxs("svg",{className:a,viewBox:"0 0 1200 1227",fill:"none",children:[jsx("title",{children:"X"}),jsx("path",{fill:"currentColor",d:"M714.163 519.284 1160.89 0h-105.86L667.137 450.887 357.328 0H0l468.492 681.821L0 1226.37h105.866l409.625-476.152 327.181 476.152H1200L714.137 519.284h.026ZM569.165 687.828l-47.468-67.894-377.686-540.24h162.604l304.797 435.991 47.468 67.894 396.2 566.721H892.476L569.165 687.854v-.026Z"})]});function C({authorName:a,authorHandle:o,authorImage:n,content:d,isVerified:c=false,timestamp:m,reply:s,href:r,className:p}){return jsx(r?"a":"div",{...r?{href:r,target:"_blank",rel:"noopener noreferrer"}:{},className:i("block w-full min-w-[400px] md:min-w-[500px] max-w-xl p-1.5 rounded-2xl relative isolate overflow-hidden","bg-black/90 dark:bg-black/90","backdrop-blur-xl backdrop-saturate-[180%]","border border-black/10 dark:border-white/10","shadow-[0_8px_16px_rgb(0_0_0_/_0.15)] dark:shadow-[0_8px_16px_rgb(0_0_0_/_0.25)]",p),children:jsxs("div",{className:i("w-full p-5 rounded-xl relative","bg-gradient-to-br from-black/[0.05] to-transparent dark:from-white/[0.08] dark:to-transparent","backdrop-blur-md backdrop-saturate-150","border border-black/[0.05] dark:border-white/[0.08]","text-white/90 dark:text-white"),children:[jsxs("div",{className:"flex gap-3",children:[jsx("div",{className:"shrink-0",children:jsx("div",{className:"h-10 w-10 rounded-full overflow-hidden",children:jsx("img",{src:n,alt:a,className:"h-full w-full object-cover"})})}),jsx("div",{className:"flex-1",children:jsxs("div",{className:"flex justify-between items-start",children:[jsxs("div",{className:"flex flex-col",children:[jsxs("div",{className:"flex items-center gap-1",children:[jsx("span",{className:"font-semibold text-white dark:text-white/90 hover:underline cursor-pointer",children:a}),c&&jsx(l,{className:"h-4 w-4 text-blue-400"})]}),jsxs("span",{className:"text-white/60 text-sm",children:["@",o]})]}),jsx("div",{className:"h-8 w-8 text-white/80 hover:text-white hover:bg-white/10 rounded-lg p-1 flex items-center justify-center",children:jsx(f,{className:"w-4 h-4"})})]})})]}),jsxs("div",{className:"mt-2",children:[d.map((h,v)=>jsx("p",{className:"text-white dark:text-white/90 text-base",children:h},v)),jsx("span",{className:"text-white/50 text-sm mt-2 block",children:m})]}),s&&jsx("div",{className:"mt-4 pt-4 border-t border-white/[0.08]",children:jsxs("div",{className:"flex gap-3",children:[jsx("div",{className:"shrink-0",children:jsx("div",{className:"h-10 w-10 rounded-full overflow-hidden",children:jsx("img",{src:s.authorImage,alt:s.authorName,className:"h-full w-full object-cover"})})}),jsxs("div",{className:"flex-1",children:[jsxs("div",{className:"flex items-center gap-1",children:[jsx("span",{className:"font-semibold text-white/90 hover:underline cursor-pointer",children:s.authorName}),s.isVerified&&jsx(l,{className:"h-4 w-4 text-blue-400"}),jsxs("span",{className:"text-white/60 text-sm",children:["@",s.authorHandle]}),jsx("span",{className:"text-white/60 text-sm",children:"\xB7"}),jsx("span",{className:"text-white/60 text-sm",children:s.timestamp})]}),jsx("p",{className:"text-white/80 text-sm mt-1",children:s.content})]})]})})]})})}export{C as TweetCard};//# sourceMappingURL=index.mjs.map
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/tweet-card/index.tsx"],"names":["cn","inputs","twMerge","clsx","VerifiedIcon","className","jsx","XIcon","jsxs","TweetCard","authorName","authorHandle","authorImage","content","isVerified","timestamp","reply","href","item","index"],"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 { cn } from \"../utils/cn\";\r\n\r\ninterface ReplyProps {\r\n authorName: string;\r\n authorHandle: string;\r\n authorImage: string;\r\n content: string;\r\n isVerified?: boolean;\r\n timestamp: string;\r\n}\r\n\r\ninterface TweetCardProps {\r\n authorName: string;\r\n authorHandle: string;\r\n authorImage: string;\r\n content: string[];\r\n isVerified?: boolean;\r\n timestamp: string;\r\n reply?: ReplyProps;\r\n href?: string;\r\n className?: string;\r\n}\r\n\r\nconst VerifiedIcon = ({ className }: { className?: string }) => (\r\n <svg className={className} viewBox=\"0 0 22 22\" fill=\"currentColor\">\r\n <path d=\"M20.396 11c-.018-.646-.215-1.275-.57-1.816-.354-.54-.852-.972-1.438-1.246.223-.607.27-1.264.14-1.897-.131-.634-.437-1.218-.882-1.687-.47-.445-1.053-.75-1.687-.882-.633-.13-1.29-.083-1.897.14-.273-.587-.704-1.086-1.245-1.44S11.647 1.62 11 1.604c-.646.017-1.273.213-1.813.568s-.969.854-1.24 1.44c-.608-.223-1.267-.272-1.902-.14-.635.13-1.22.436-1.69.882-.445.47-.749 1.055-.878 1.688-.13.633-.08 1.29.144 1.896-.587.274-1.087.705-1.443 1.245-.356.54-.555 1.17-.574 1.817.02.647.218 1.276.574 1.817.356.54.856.972 1.443 1.245-.224.606-.274 1.263-.144 1.896.13.634.433 1.218.877 1.688.47.443 1.054.747 1.687.878.633.132 1.29.084 1.897-.136.274.586.705 1.084 1.246 1.439.54.354 1.17.551 1.816.569.647-.016 1.276-.213 1.817-.567s.972-.854 1.245-1.44c.604.239 1.266.296 1.903.164.636-.132 1.22-.447 1.68-.907.46-.46.776-1.044.908-1.681s.075-1.299-.165-1.903c.586-.274 1.084-.705 1.439-1.246.354-.54.551-1.17.569-1.816zM9.662 14.85l-3.429-3.428 1.293-1.302 2.072 2.072 4.4-4.794 1.347 1.246z\" />\r\n </svg>\r\n);\r\n\r\nconst XIcon = ({ className }: { className?: string }) => (\r\n <svg className={className} viewBox=\"0 0 1200 1227\" fill=\"none\">\r\n <title>X</title>\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M714.163 519.284 1160.89 0h-105.86L667.137 450.887 357.328 0H0l468.492 681.821L0 1226.37h105.866l409.625-476.152 327.181 476.152H1200L714.137 519.284h.026ZM569.165 687.828l-47.468-67.894-377.686-540.24h162.604l304.797 435.991 47.468 67.894 396.2 566.721H892.476L569.165 687.854v-.026Z\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport function TweetCard({\r\n authorName,\r\n authorHandle,\r\n authorImage,\r\n content,\r\n isVerified = false,\r\n timestamp,\r\n reply,\r\n href,\r\n className,\r\n}: TweetCardProps) {\r\n const Wrapper = href ? \"a\" : \"div\";\r\n const wrapperProps = href ? { href, target: \"_blank\", rel: \"noopener noreferrer\" } : {};\r\n\r\n return (\r\n <Wrapper\r\n {...wrapperProps}\r\n className={cn(\r\n \"block w-full min-w-[400px] md:min-w-[500px] max-w-xl p-1.5 rounded-2xl relative isolate overflow-hidden\",\r\n \"bg-black/90 dark:bg-black/90\",\r\n \"backdrop-blur-xl backdrop-saturate-[180%]\",\r\n \"border border-black/10 dark:border-white/10\",\r\n \"shadow-[0_8px_16px_rgb(0_0_0_/_0.15)] dark:shadow-[0_8px_16px_rgb(0_0_0_/_0.25)]\",\r\n className\r\n )}\r\n >\r\n <div\r\n className={cn(\r\n \"w-full p-5 rounded-xl relative\",\r\n \"bg-gradient-to-br from-black/[0.05] to-transparent dark:from-white/[0.08] dark:to-transparent\",\r\n \"backdrop-blur-md backdrop-saturate-150\",\r\n \"border border-black/[0.05] dark:border-white/[0.08]\",\r\n \"text-white/90 dark:text-white\"\r\n )}\r\n >\r\n <div className=\"flex gap-3\">\r\n <div className=\"shrink-0\">\r\n <div className=\"h-10 w-10 rounded-full overflow-hidden\">\r\n <img src={authorImage} alt={authorName} className=\"h-full w-full object-cover\" />\r\n </div>\r\n </div>\r\n <div className=\"flex-1\">\r\n <div className=\"flex justify-between items-start\">\r\n <div className=\"flex flex-col\">\r\n <div className=\"flex items-center gap-1\">\r\n <span className=\"font-semibold text-white dark:text-white/90 hover:underline cursor-pointer\">\r\n {authorName}\r\n </span>\r\n {isVerified && <VerifiedIcon className=\"h-4 w-4 text-blue-400\" />}\r\n </div>\r\n <span className=\"text-white/60 text-sm\">@{authorHandle}</span>\r\n </div>\r\n <div className=\"h-8 w-8 text-white/80 hover:text-white hover:bg-white/10 rounded-lg p-1 flex items-center justify-center\">\r\n <XIcon className=\"w-4 h-4\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"mt-2\">\r\n {content.map((item, index) => (\r\n <p key={index} className=\"text-white dark:text-white/90 text-base\">\r\n {item}\r\n </p>\r\n ))}\r\n <span className=\"text-white/50 text-sm mt-2 block\">{timestamp}</span>\r\n </div>\r\n {reply && (\r\n <div className=\"mt-4 pt-4 border-t border-white/[0.08]\">\r\n <div className=\"flex gap-3\">\r\n <div className=\"shrink-0\">\r\n <div className=\"h-10 w-10 rounded-full overflow-hidden\">\r\n <img src={reply.authorImage} alt={reply.authorName} className=\"h-full w-full object-cover\" />\r\n </div>\r\n </div>\r\n <div className=\"flex-1\">\r\n <div className=\"flex items-center gap-1\">\r\n <span className=\"font-semibold text-white/90 hover:underline cursor-pointer\">{reply.authorName}</span>\r\n {reply.isVerified && <VerifiedIcon className=\"h-4 w-4 text-blue-400\" />}\r\n <span className=\"text-white/60 text-sm\">@{reply.authorHandle}</span>\r\n <span className=\"text-white/60 text-sm\">·</span>\r\n <span className=\"text-white/60 text-sm\">{reply.timestamp}</span>\r\n </div>\r\n <p className=\"text-white/80 text-sm mt-1\">{reply.content}</p>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </Wrapper>\r\n );\r\n}\r\n\r\nexport type { TweetCardProps, ReplyProps };\r\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bynana-ui",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.2",
|
|
4
4
|
"description": "120+ Beautiful React UI components built with Tailwind CSS and Framer Motion",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -138,6 +138,12 @@
|
|
|
138
138
|
"./target-cursor": { "import": "./dist/target-cursor/index.mjs", "require": "./dist/target-cursor/index.js", "types": "./dist/target-cursor/index.d.ts" },
|
|
139
139
|
"./crosshair": { "import": "./dist/crosshair/index.mjs", "require": "./dist/crosshair/index.js", "types": "./dist/crosshair/index.d.ts" },
|
|
140
140
|
"./scroll-text": { "import": "./dist/scroll-text/index.mjs", "require": "./dist/scroll-text/index.js", "types": "./dist/scroll-text/index.d.ts" },
|
|
141
|
+
"./card-stack": { "import": "./dist/card-stack/index.mjs", "require": "./dist/card-stack/index.js", "types": "./dist/card-stack/index.d.ts" },
|
|
142
|
+
"./apple-activity-card": { "import": "./dist/apple-activity-card/index.mjs", "require": "./dist/apple-activity-card/index.js", "types": "./dist/apple-activity-card/index.d.ts" },
|
|
143
|
+
"./tweet-card": { "import": "./dist/tweet-card/index.mjs", "require": "./dist/tweet-card/index.js", "types": "./dist/tweet-card/index.d.ts" },
|
|
144
|
+
"./stats-cards": { "import": "./dist/stats-cards/index.mjs", "require": "./dist/stats-cards/index.js", "types": "./dist/stats-cards/index.d.ts" },
|
|
145
|
+
"./stats-grid": { "import": "./dist/stats-grid/index.mjs", "require": "./dist/stats-grid/index.js", "types": "./dist/stats-grid/index.d.ts" },
|
|
146
|
+
"./bento-grid": { "import": "./dist/bento-grid/index.mjs", "require": "./dist/bento-grid/index.js", "types": "./dist/bento-grid/index.d.ts" },
|
|
141
147
|
"./styles.css": "./dist/styles.css"
|
|
142
148
|
},
|
|
143
149
|
"files": ["dist", "README.md"],
|