@medialane/ui 0.96.0 → 0.96.1
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.
|
@@ -36,6 +36,12 @@ var import_jsx_runtime = require("react/jsx-runtime");
|
|
|
36
36
|
var import_link = __toESM(require("next/link"), 1);
|
|
37
37
|
var import_lucide_react = require("lucide-react");
|
|
38
38
|
var import_address_display = require("./address-display.js");
|
|
39
|
+
const EARN_ACTIONS = [
|
|
40
|
+
{ icon: import_lucide_react.Zap, label: "Mint" },
|
|
41
|
+
{ icon: import_lucide_react.Palette, label: "Create" },
|
|
42
|
+
{ icon: import_lucide_react.ShoppingBag, label: "Trade" },
|
|
43
|
+
{ icon: import_lucide_react.MessageSquare, label: "Engage" }
|
|
44
|
+
];
|
|
39
45
|
function CreatorsFundSection({
|
|
40
46
|
airdropHref,
|
|
41
47
|
rewardsHref,
|
|
@@ -43,8 +49,24 @@ function CreatorsFundSection({
|
|
|
43
49
|
entries,
|
|
44
50
|
isLoading = false
|
|
45
51
|
}) {
|
|
46
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("section", { className: "rounded-2xl bg-muted/50 dark:bg-card overflow-hidden grid lg:grid-cols-2 max-lg:divide-y lg:divide-x divide-brand-orange/20", children: [
|
|
47
|
-
/* @__PURE__ */ (0, import_jsx_runtime.
|
|
52
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("section", { className: "relative rounded-2xl bg-muted/50 dark:bg-card overflow-hidden grid lg:grid-cols-2 max-lg:divide-y lg:divide-x divide-brand-orange/20", children: [
|
|
53
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
54
|
+
"div",
|
|
55
|
+
{
|
|
56
|
+
className: "pointer-events-none absolute -top-24 -left-24 h-72 w-72 rounded-full opacity-20 blur-3xl",
|
|
57
|
+
style: { background: "radial-gradient(circle, #3b7bff, transparent 70%)" },
|
|
58
|
+
"aria-hidden": true
|
|
59
|
+
}
|
|
60
|
+
),
|
|
61
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
62
|
+
"div",
|
|
63
|
+
{
|
|
64
|
+
className: "pointer-events-none absolute -bottom-24 -right-24 h-72 w-72 rounded-full opacity-20 blur-3xl",
|
|
65
|
+
style: { background: "radial-gradient(circle, #fb8b46, transparent 70%)" },
|
|
66
|
+
"aria-hidden": true
|
|
67
|
+
}
|
|
68
|
+
),
|
|
69
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "relative px-7 py-9 sm:px-9 flex flex-col gap-6", children: [
|
|
48
70
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center gap-2.5", children: [
|
|
49
71
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-xs font-bold uppercase tracking-widest text-brand-orange", children: "Creator's Fund" }),
|
|
50
72
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "flex items-center gap-1.5 text-xs font-medium text-muted-foreground", children: [
|
|
@@ -54,17 +76,34 @@ function CreatorsFundSection({
|
|
|
54
76
|
] }),
|
|
55
77
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
|
|
56
78
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("h2", { className: "text-3xl sm:text-4xl font-black tracking-tight leading-tight", children: [
|
|
57
|
-
"Every dollar comes back to",
|
|
58
|
-
" ",
|
|
59
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "bg-gradient-to-r from-brand-blue via-brand-purple to-brand-orange bg-clip-text text-transparent", children: "you" })
|
|
79
|
+
"Every dollar comes back to ",
|
|
80
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-brand-orange", children: "you" })
|
|
60
81
|
] }),
|
|
61
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "mt-2.5 text-base text-muted-foreground leading-relaxed max-w-md", children: "
|
|
82
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "mt-2.5 text-base text-muted-foreground leading-relaxed max-w-md", children: "Sign up for the airdrop, then earn XP for everything you do \u2014 up to level 50. Your share of every $1,000 distribution follows you automatically." })
|
|
62
83
|
] }),
|
|
84
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "flex flex-wrap gap-x-5 gap-y-2", children: EARN_ACTIONS.map(({ icon: Icon, label }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
85
|
+
"span",
|
|
86
|
+
{
|
|
87
|
+
className: "flex items-center gap-1.5 text-sm font-medium text-muted-foreground",
|
|
88
|
+
children: [
|
|
89
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Icon, { className: "h-3.5 w-3.5 text-brand-orange/70" }),
|
|
90
|
+
label
|
|
91
|
+
]
|
|
92
|
+
},
|
|
93
|
+
label
|
|
94
|
+
)) }),
|
|
63
95
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex flex-wrap items-center gap-3", children: [
|
|
64
|
-
/* @__PURE__ */ (0, import_jsx_runtime.
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
96
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
97
|
+
import_link.default,
|
|
98
|
+
{
|
|
99
|
+
href: airdropHref,
|
|
100
|
+
className: "inline-flex items-center justify-center gap-2 h-12 px-5 rounded-xl text-sm font-semibold text-white bg-brand-orange hover:brightness-110 active:scale-[0.98] transition-all",
|
|
101
|
+
children: [
|
|
102
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Sparkles, { className: "h-4 w-4" }),
|
|
103
|
+
"Claim my spot"
|
|
104
|
+
]
|
|
105
|
+
}
|
|
106
|
+
),
|
|
68
107
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
69
108
|
import_link.default,
|
|
70
109
|
{
|
|
@@ -76,16 +115,23 @@ function CreatorsFundSection({
|
|
|
76
115
|
]
|
|
77
116
|
}
|
|
78
117
|
)
|
|
79
|
-
] })
|
|
118
|
+
] }),
|
|
119
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-xs text-muted-foreground/70", children: "Free to join \xB7 No card required \xB7 Eligible for every distribution" })
|
|
80
120
|
] }),
|
|
81
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "p-5 sm:p-6", children: !isLoading && entries.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "grid grid-cols-2 gap-3 h-full", children: entries.slice(0, 4).map((entry, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
121
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "relative p-5 sm:p-6", children: !isLoading && entries.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "grid grid-cols-2 gap-3 h-full", children: entries.slice(0, 4).map((entry, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
82
122
|
import_link.default,
|
|
83
123
|
{
|
|
84
124
|
href: creatorHref(entry.address),
|
|
85
125
|
className: "group relative rounded-xl bg-card dark:bg-muted/30 hover:bg-card/70 dark:hover:bg-muted/50 overflow-hidden transition-colors flex flex-col justify-between p-4",
|
|
86
126
|
children: [
|
|
87
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
88
|
-
|
|
127
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
128
|
+
"div",
|
|
129
|
+
{
|
|
130
|
+
className: `absolute inset-x-0 top-0 h-0.5 ${i === 0 ? "bg-gradient-to-r from-brand-orange to-brand-rose" : "bg-brand-orange/30"}`
|
|
131
|
+
}
|
|
132
|
+
),
|
|
133
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "flex items-center gap-1 text-[11px] font-bold text-muted-foreground/60", children: [
|
|
134
|
+
i === 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Crown, { className: "h-3 w-3 text-brand-orange" }),
|
|
89
135
|
"#",
|
|
90
136
|
i + 1
|
|
91
137
|
] }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/creators-fund-section.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"next/link\";\nimport { ArrowRight, Sparkles } from \"lucide-react\";\nimport { AddressDisplay } from \"./address-display.js\";\n\nexport interface CommunityRewardsEntry {\n address: string;\n totalXp: number;\n}\n\nexport interface CreatorsFundSectionProps {\n /** Route of the airdrop claim page. */\n airdropHref: string;\n /** Route of the rewards/leaderboard page. */\n rewardsHref: string;\n creatorHref: (address: string) => string;\n entries: CommunityRewardsEntry[];\n isLoading?: boolean;\n}\n\n/** Home-page teaser for the Creator's Fund — merges what were two separate,\n * visually near-identical sections (airdrop CTA + XP leaderboard) into one:\n * join the airdrop, earn XP for everything you do, see who's leading. */\nexport function CreatorsFundSection({\n airdropHref,\n rewardsHref,\n creatorHref,\n entries,\n isLoading = false,\n}: CreatorsFundSectionProps) {\n return (\n <section className=\"rounded-2xl bg-muted/50 dark:bg-card overflow-hidden grid lg:grid-cols-2 max-lg:divide-y lg:divide-x divide-brand-orange/20\">\n\n {/* Left — pitch + CTAs */}\n <div className=\"px-7 py-9 sm:px-9 flex flex-col gap-6\">\n <div className=\"flex items-center gap-2.5\">\n <span className=\"text-xs font-bold uppercase tracking-widest text-brand-orange\">\n Creator's Fund\n </span>\n <span className=\"flex items-center gap-1.5 text-xs font-medium text-muted-foreground\">\n <span className=\"h-1.5 w-1.5 rounded-full bg-brand-orange animate-pulse\" />\n Live\n </span>\n </div>\n\n <div>\n <h2 className=\"text-3xl sm:text-4xl font-black tracking-tight leading-tight\">\n Every dollar comes back to
|
|
1
|
+
{"version":3,"sources":["../../src/components/creators-fund-section.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"next/link\";\nimport { ArrowRight, Sparkles, Zap, Palette, ShoppingBag, MessageSquare, Crown } from \"lucide-react\";\nimport { AddressDisplay } from \"./address-display.js\";\n\nexport interface CommunityRewardsEntry {\n address: string;\n totalXp: number;\n}\n\nexport interface CreatorsFundSectionProps {\n /** Route of the airdrop claim page. */\n airdropHref: string;\n /** Route of the rewards/leaderboard page. */\n rewardsHref: string;\n creatorHref: (address: string) => string;\n entries: CommunityRewardsEntry[];\n isLoading?: boolean;\n}\n\nconst EARN_ACTIONS = [\n { icon: Zap, label: \"Mint\" },\n { icon: Palette, label: \"Create\" },\n { icon: ShoppingBag, label: \"Trade\" },\n { icon: MessageSquare, label: \"Engage\" },\n];\n\n/** Home-page teaser for the Creator's Fund — merges what were two separate,\n * visually near-identical sections (airdrop CTA + XP leaderboard) into one:\n * join the airdrop, earn XP for everything you do, see who's leading. */\nexport function CreatorsFundSection({\n airdropHref,\n rewardsHref,\n creatorHref,\n entries,\n isLoading = false,\n}: CreatorsFundSectionProps) {\n return (\n <section className=\"relative rounded-2xl bg-muted/50 dark:bg-card overflow-hidden grid lg:grid-cols-2 max-lg:divide-y lg:divide-x divide-brand-orange/20\">\n <div\n className=\"pointer-events-none absolute -top-24 -left-24 h-72 w-72 rounded-full opacity-20 blur-3xl\"\n style={{ background: \"radial-gradient(circle, #3b7bff, transparent 70%)\" }}\n aria-hidden\n />\n <div\n className=\"pointer-events-none absolute -bottom-24 -right-24 h-72 w-72 rounded-full opacity-20 blur-3xl\"\n style={{ background: \"radial-gradient(circle, #fb8b46, transparent 70%)\" }}\n aria-hidden\n />\n\n {/* Left — pitch + how to earn + CTAs */}\n <div className=\"relative px-7 py-9 sm:px-9 flex flex-col gap-6\">\n <div className=\"flex items-center gap-2.5\">\n <span className=\"text-xs font-bold uppercase tracking-widest text-brand-orange\">\n Creator's Fund\n </span>\n <span className=\"flex items-center gap-1.5 text-xs font-medium text-muted-foreground\">\n <span className=\"h-1.5 w-1.5 rounded-full bg-brand-orange animate-pulse\" />\n Live\n </span>\n </div>\n\n <div>\n <h2 className=\"text-3xl sm:text-4xl font-black tracking-tight leading-tight\">\n Every dollar comes back to <span className=\"text-brand-orange\">you</span>\n </h2>\n <p className=\"mt-2.5 text-base text-muted-foreground leading-relaxed max-w-md\">\n Sign up for the airdrop, then earn XP for everything you do — up to\n level 50. Your share of every $1,000 distribution follows you\n automatically.\n </p>\n </div>\n\n {/* How you earn XP */}\n <div className=\"flex flex-wrap gap-x-5 gap-y-2\">\n {EARN_ACTIONS.map(({ icon: Icon, label }) => (\n <span\n key={label}\n className=\"flex items-center gap-1.5 text-sm font-medium text-muted-foreground\"\n >\n <Icon className=\"h-3.5 w-3.5 text-brand-orange/70\" />\n {label}\n </span>\n ))}\n </div>\n\n <div className=\"flex flex-wrap items-center gap-3\">\n <Link\n href={airdropHref}\n className=\"inline-flex items-center justify-center gap-2 h-12 px-5 rounded-xl text-sm font-semibold text-white bg-brand-orange hover:brightness-110 active:scale-[0.98] transition-all\"\n >\n <Sparkles className=\"h-4 w-4\" />\n Claim my spot\n </Link>\n <Link\n href={rewardsHref}\n className=\"inline-flex items-center gap-1.5 h-12 px-5 rounded-xl text-sm font-semibold text-foreground border border-border hover:border-brand-orange/40 hover:text-brand-orange transition-colors\"\n >\n See the leaderboard\n <ArrowRight className=\"h-3.5 w-3.5\" />\n </Link>\n </div>\n\n <p className=\"text-xs text-muted-foreground/70\">\n Free to join · No card required · Eligible for every distribution\n </p>\n </div>\n\n {/* Right — leaderboard preview */}\n <div className=\"relative p-5 sm:p-6\">\n {!isLoading && entries.length > 0 ? (\n <div className=\"grid grid-cols-2 gap-3 h-full\">\n {entries.slice(0, 4).map((entry, i) => (\n <Link\n key={entry.address}\n href={creatorHref(entry.address)}\n className=\"group relative rounded-xl bg-card dark:bg-muted/30 hover:bg-card/70 dark:hover:bg-muted/50 overflow-hidden transition-colors flex flex-col justify-between p-4\"\n >\n <div\n className={`absolute inset-x-0 top-0 h-0.5 ${\n i === 0 ? \"bg-gradient-to-r from-brand-orange to-brand-rose\" : \"bg-brand-orange/30\"\n }`}\n />\n <span className=\"flex items-center gap-1 text-[11px] font-bold text-muted-foreground/60\">\n {i === 0 && <Crown className=\"h-3 w-3 text-brand-orange\" />}\n #{i + 1}\n </span>\n <div className=\"space-y-0.5\">\n <p className=\"text-3xl font-black tabular-nums leading-none\">\n {entry.totalXp.toLocaleString()}\n </p>\n <p className=\"text-xs text-muted-foreground\">XP earned</p>\n </div>\n <AddressDisplay\n address={entry.address}\n chars={4}\n showCopy={false}\n className=\"text-xs font-medium text-muted-foreground group-hover:text-foreground transition-colors\"\n />\n </Link>\n ))}\n </div>\n ) : (\n <div className=\"grid grid-cols-2 gap-3 h-full\">\n {Array.from({ length: 4 }).map((_, i) => (\n <div key={i} className=\"min-h-[110px] rounded-xl bg-card dark:bg-muted/30 animate-pulse\" />\n ))}\n </div>\n )}\n </div>\n </section>\n );\n}\n"],"mappings":"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","names":["Link"]}
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
3
|
import Link from "next/link";
|
|
4
|
-
import { ArrowRight, Sparkles } from "lucide-react";
|
|
4
|
+
import { ArrowRight, Sparkles, Zap, Palette, ShoppingBag, MessageSquare, Crown } from "lucide-react";
|
|
5
5
|
import { AddressDisplay } from "./address-display.js";
|
|
6
|
+
const EARN_ACTIONS = [
|
|
7
|
+
{ icon: Zap, label: "Mint" },
|
|
8
|
+
{ icon: Palette, label: "Create" },
|
|
9
|
+
{ icon: ShoppingBag, label: "Trade" },
|
|
10
|
+
{ icon: MessageSquare, label: "Engage" }
|
|
11
|
+
];
|
|
6
12
|
function CreatorsFundSection({
|
|
7
13
|
airdropHref,
|
|
8
14
|
rewardsHref,
|
|
@@ -10,8 +16,24 @@ function CreatorsFundSection({
|
|
|
10
16
|
entries,
|
|
11
17
|
isLoading = false
|
|
12
18
|
}) {
|
|
13
|
-
return /* @__PURE__ */ jsxs("section", { className: "rounded-2xl bg-muted/50 dark:bg-card overflow-hidden grid lg:grid-cols-2 max-lg:divide-y lg:divide-x divide-brand-orange/20", children: [
|
|
14
|
-
/* @__PURE__ */
|
|
19
|
+
return /* @__PURE__ */ jsxs("section", { className: "relative rounded-2xl bg-muted/50 dark:bg-card overflow-hidden grid lg:grid-cols-2 max-lg:divide-y lg:divide-x divide-brand-orange/20", children: [
|
|
20
|
+
/* @__PURE__ */ jsx(
|
|
21
|
+
"div",
|
|
22
|
+
{
|
|
23
|
+
className: "pointer-events-none absolute -top-24 -left-24 h-72 w-72 rounded-full opacity-20 blur-3xl",
|
|
24
|
+
style: { background: "radial-gradient(circle, #3b7bff, transparent 70%)" },
|
|
25
|
+
"aria-hidden": true
|
|
26
|
+
}
|
|
27
|
+
),
|
|
28
|
+
/* @__PURE__ */ jsx(
|
|
29
|
+
"div",
|
|
30
|
+
{
|
|
31
|
+
className: "pointer-events-none absolute -bottom-24 -right-24 h-72 w-72 rounded-full opacity-20 blur-3xl",
|
|
32
|
+
style: { background: "radial-gradient(circle, #fb8b46, transparent 70%)" },
|
|
33
|
+
"aria-hidden": true
|
|
34
|
+
}
|
|
35
|
+
),
|
|
36
|
+
/* @__PURE__ */ jsxs("div", { className: "relative px-7 py-9 sm:px-9 flex flex-col gap-6", children: [
|
|
15
37
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2.5", children: [
|
|
16
38
|
/* @__PURE__ */ jsx("span", { className: "text-xs font-bold uppercase tracking-widest text-brand-orange", children: "Creator's Fund" }),
|
|
17
39
|
/* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1.5 text-xs font-medium text-muted-foreground", children: [
|
|
@@ -21,17 +43,34 @@ function CreatorsFundSection({
|
|
|
21
43
|
] }),
|
|
22
44
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
23
45
|
/* @__PURE__ */ jsxs("h2", { className: "text-3xl sm:text-4xl font-black tracking-tight leading-tight", children: [
|
|
24
|
-
"Every dollar comes back to",
|
|
25
|
-
" ",
|
|
26
|
-
/* @__PURE__ */ jsx("span", { className: "bg-gradient-to-r from-brand-blue via-brand-purple to-brand-orange bg-clip-text text-transparent", children: "you" })
|
|
46
|
+
"Every dollar comes back to ",
|
|
47
|
+
/* @__PURE__ */ jsx("span", { className: "text-brand-orange", children: "you" })
|
|
27
48
|
] }),
|
|
28
|
-
/* @__PURE__ */ jsx("p", { className: "mt-2.5 text-base text-muted-foreground leading-relaxed max-w-md", children: "
|
|
49
|
+
/* @__PURE__ */ jsx("p", { className: "mt-2.5 text-base text-muted-foreground leading-relaxed max-w-md", children: "Sign up for the airdrop, then earn XP for everything you do \u2014 up to level 50. Your share of every $1,000 distribution follows you automatically." })
|
|
29
50
|
] }),
|
|
51
|
+
/* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-x-5 gap-y-2", children: EARN_ACTIONS.map(({ icon: Icon, label }) => /* @__PURE__ */ jsxs(
|
|
52
|
+
"span",
|
|
53
|
+
{
|
|
54
|
+
className: "flex items-center gap-1.5 text-sm font-medium text-muted-foreground",
|
|
55
|
+
children: [
|
|
56
|
+
/* @__PURE__ */ jsx(Icon, { className: "h-3.5 w-3.5 text-brand-orange/70" }),
|
|
57
|
+
label
|
|
58
|
+
]
|
|
59
|
+
},
|
|
60
|
+
label
|
|
61
|
+
)) }),
|
|
30
62
|
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-3", children: [
|
|
31
|
-
/* @__PURE__ */
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
63
|
+
/* @__PURE__ */ jsxs(
|
|
64
|
+
Link,
|
|
65
|
+
{
|
|
66
|
+
href: airdropHref,
|
|
67
|
+
className: "inline-flex items-center justify-center gap-2 h-12 px-5 rounded-xl text-sm font-semibold text-white bg-brand-orange hover:brightness-110 active:scale-[0.98] transition-all",
|
|
68
|
+
children: [
|
|
69
|
+
/* @__PURE__ */ jsx(Sparkles, { className: "h-4 w-4" }),
|
|
70
|
+
"Claim my spot"
|
|
71
|
+
]
|
|
72
|
+
}
|
|
73
|
+
),
|
|
35
74
|
/* @__PURE__ */ jsxs(
|
|
36
75
|
Link,
|
|
37
76
|
{
|
|
@@ -43,16 +82,23 @@ function CreatorsFundSection({
|
|
|
43
82
|
]
|
|
44
83
|
}
|
|
45
84
|
)
|
|
46
|
-
] })
|
|
85
|
+
] }),
|
|
86
|
+
/* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground/70", children: "Free to join \xB7 No card required \xB7 Eligible for every distribution" })
|
|
47
87
|
] }),
|
|
48
|
-
/* @__PURE__ */ jsx("div", { className: "p-5 sm:p-6", children: !isLoading && entries.length > 0 ? /* @__PURE__ */ jsx("div", { className: "grid grid-cols-2 gap-3 h-full", children: entries.slice(0, 4).map((entry, i) => /* @__PURE__ */ jsxs(
|
|
88
|
+
/* @__PURE__ */ jsx("div", { className: "relative p-5 sm:p-6", children: !isLoading && entries.length > 0 ? /* @__PURE__ */ jsx("div", { className: "grid grid-cols-2 gap-3 h-full", children: entries.slice(0, 4).map((entry, i) => /* @__PURE__ */ jsxs(
|
|
49
89
|
Link,
|
|
50
90
|
{
|
|
51
91
|
href: creatorHref(entry.address),
|
|
52
92
|
className: "group relative rounded-xl bg-card dark:bg-muted/30 hover:bg-card/70 dark:hover:bg-muted/50 overflow-hidden transition-colors flex flex-col justify-between p-4",
|
|
53
93
|
children: [
|
|
54
|
-
/* @__PURE__ */ jsx(
|
|
55
|
-
|
|
94
|
+
/* @__PURE__ */ jsx(
|
|
95
|
+
"div",
|
|
96
|
+
{
|
|
97
|
+
className: `absolute inset-x-0 top-0 h-0.5 ${i === 0 ? "bg-gradient-to-r from-brand-orange to-brand-rose" : "bg-brand-orange/30"}`
|
|
98
|
+
}
|
|
99
|
+
),
|
|
100
|
+
/* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1 text-[11px] font-bold text-muted-foreground/60", children: [
|
|
101
|
+
i === 0 && /* @__PURE__ */ jsx(Crown, { className: "h-3 w-3 text-brand-orange" }),
|
|
56
102
|
"#",
|
|
57
103
|
i + 1
|
|
58
104
|
] }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/creators-fund-section.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"next/link\";\nimport { ArrowRight, Sparkles } from \"lucide-react\";\nimport { AddressDisplay } from \"./address-display.js\";\n\nexport interface CommunityRewardsEntry {\n address: string;\n totalXp: number;\n}\n\nexport interface CreatorsFundSectionProps {\n /** Route of the airdrop claim page. */\n airdropHref: string;\n /** Route of the rewards/leaderboard page. */\n rewardsHref: string;\n creatorHref: (address: string) => string;\n entries: CommunityRewardsEntry[];\n isLoading?: boolean;\n}\n\n/** Home-page teaser for the Creator's Fund — merges what were two separate,\n * visually near-identical sections (airdrop CTA + XP leaderboard) into one:\n * join the airdrop, earn XP for everything you do, see who's leading. */\nexport function CreatorsFundSection({\n airdropHref,\n rewardsHref,\n creatorHref,\n entries,\n isLoading = false,\n}: CreatorsFundSectionProps) {\n return (\n <section className=\"rounded-2xl bg-muted/50 dark:bg-card overflow-hidden grid lg:grid-cols-2 max-lg:divide-y lg:divide-x divide-brand-orange/20\">\n\n {/* Left — pitch + CTAs */}\n <div className=\"px-7 py-9 sm:px-9 flex flex-col gap-6\">\n <div className=\"flex items-center gap-2.5\">\n <span className=\"text-xs font-bold uppercase tracking-widest text-brand-orange\">\n Creator's Fund\n </span>\n <span className=\"flex items-center gap-1.5 text-xs font-medium text-muted-foreground\">\n <span className=\"h-1.5 w-1.5 rounded-full bg-brand-orange animate-pulse\" />\n Live\n </span>\n </div>\n\n <div>\n <h2 className=\"text-3xl sm:text-4xl font-black tracking-tight leading-tight\">\n Every dollar comes back to
|
|
1
|
+
{"version":3,"sources":["../../src/components/creators-fund-section.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"next/link\";\nimport { ArrowRight, Sparkles, Zap, Palette, ShoppingBag, MessageSquare, Crown } from \"lucide-react\";\nimport { AddressDisplay } from \"./address-display.js\";\n\nexport interface CommunityRewardsEntry {\n address: string;\n totalXp: number;\n}\n\nexport interface CreatorsFundSectionProps {\n /** Route of the airdrop claim page. */\n airdropHref: string;\n /** Route of the rewards/leaderboard page. */\n rewardsHref: string;\n creatorHref: (address: string) => string;\n entries: CommunityRewardsEntry[];\n isLoading?: boolean;\n}\n\nconst EARN_ACTIONS = [\n { icon: Zap, label: \"Mint\" },\n { icon: Palette, label: \"Create\" },\n { icon: ShoppingBag, label: \"Trade\" },\n { icon: MessageSquare, label: \"Engage\" },\n];\n\n/** Home-page teaser for the Creator's Fund — merges what were two separate,\n * visually near-identical sections (airdrop CTA + XP leaderboard) into one:\n * join the airdrop, earn XP for everything you do, see who's leading. */\nexport function CreatorsFundSection({\n airdropHref,\n rewardsHref,\n creatorHref,\n entries,\n isLoading = false,\n}: CreatorsFundSectionProps) {\n return (\n <section className=\"relative rounded-2xl bg-muted/50 dark:bg-card overflow-hidden grid lg:grid-cols-2 max-lg:divide-y lg:divide-x divide-brand-orange/20\">\n <div\n className=\"pointer-events-none absolute -top-24 -left-24 h-72 w-72 rounded-full opacity-20 blur-3xl\"\n style={{ background: \"radial-gradient(circle, #3b7bff, transparent 70%)\" }}\n aria-hidden\n />\n <div\n className=\"pointer-events-none absolute -bottom-24 -right-24 h-72 w-72 rounded-full opacity-20 blur-3xl\"\n style={{ background: \"radial-gradient(circle, #fb8b46, transparent 70%)\" }}\n aria-hidden\n />\n\n {/* Left — pitch + how to earn + CTAs */}\n <div className=\"relative px-7 py-9 sm:px-9 flex flex-col gap-6\">\n <div className=\"flex items-center gap-2.5\">\n <span className=\"text-xs font-bold uppercase tracking-widest text-brand-orange\">\n Creator's Fund\n </span>\n <span className=\"flex items-center gap-1.5 text-xs font-medium text-muted-foreground\">\n <span className=\"h-1.5 w-1.5 rounded-full bg-brand-orange animate-pulse\" />\n Live\n </span>\n </div>\n\n <div>\n <h2 className=\"text-3xl sm:text-4xl font-black tracking-tight leading-tight\">\n Every dollar comes back to <span className=\"text-brand-orange\">you</span>\n </h2>\n <p className=\"mt-2.5 text-base text-muted-foreground leading-relaxed max-w-md\">\n Sign up for the airdrop, then earn XP for everything you do — up to\n level 50. Your share of every $1,000 distribution follows you\n automatically.\n </p>\n </div>\n\n {/* How you earn XP */}\n <div className=\"flex flex-wrap gap-x-5 gap-y-2\">\n {EARN_ACTIONS.map(({ icon: Icon, label }) => (\n <span\n key={label}\n className=\"flex items-center gap-1.5 text-sm font-medium text-muted-foreground\"\n >\n <Icon className=\"h-3.5 w-3.5 text-brand-orange/70\" />\n {label}\n </span>\n ))}\n </div>\n\n <div className=\"flex flex-wrap items-center gap-3\">\n <Link\n href={airdropHref}\n className=\"inline-flex items-center justify-center gap-2 h-12 px-5 rounded-xl text-sm font-semibold text-white bg-brand-orange hover:brightness-110 active:scale-[0.98] transition-all\"\n >\n <Sparkles className=\"h-4 w-4\" />\n Claim my spot\n </Link>\n <Link\n href={rewardsHref}\n className=\"inline-flex items-center gap-1.5 h-12 px-5 rounded-xl text-sm font-semibold text-foreground border border-border hover:border-brand-orange/40 hover:text-brand-orange transition-colors\"\n >\n See the leaderboard\n <ArrowRight className=\"h-3.5 w-3.5\" />\n </Link>\n </div>\n\n <p className=\"text-xs text-muted-foreground/70\">\n Free to join · No card required · Eligible for every distribution\n </p>\n </div>\n\n {/* Right — leaderboard preview */}\n <div className=\"relative p-5 sm:p-6\">\n {!isLoading && entries.length > 0 ? (\n <div className=\"grid grid-cols-2 gap-3 h-full\">\n {entries.slice(0, 4).map((entry, i) => (\n <Link\n key={entry.address}\n href={creatorHref(entry.address)}\n className=\"group relative rounded-xl bg-card dark:bg-muted/30 hover:bg-card/70 dark:hover:bg-muted/50 overflow-hidden transition-colors flex flex-col justify-between p-4\"\n >\n <div\n className={`absolute inset-x-0 top-0 h-0.5 ${\n i === 0 ? \"bg-gradient-to-r from-brand-orange to-brand-rose\" : \"bg-brand-orange/30\"\n }`}\n />\n <span className=\"flex items-center gap-1 text-[11px] font-bold text-muted-foreground/60\">\n {i === 0 && <Crown className=\"h-3 w-3 text-brand-orange\" />}\n #{i + 1}\n </span>\n <div className=\"space-y-0.5\">\n <p className=\"text-3xl font-black tabular-nums leading-none\">\n {entry.totalXp.toLocaleString()}\n </p>\n <p className=\"text-xs text-muted-foreground\">XP earned</p>\n </div>\n <AddressDisplay\n address={entry.address}\n chars={4}\n showCopy={false}\n className=\"text-xs font-medium text-muted-foreground group-hover:text-foreground transition-colors\"\n />\n </Link>\n ))}\n </div>\n ) : (\n <div className=\"grid grid-cols-2 gap-3 h-full\">\n {Array.from({ length: 4 }).map((_, i) => (\n <div key={i} className=\"min-h-[110px] rounded-xl bg-card dark:bg-muted/30 animate-pulse\" />\n ))}\n </div>\n )}\n </div>\n </section>\n );\n}\n"],"mappings":"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","names":[]}
|