@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.jsxs)("div", { className: "px-7 py-9 sm:px-9 flex flex-col gap-6", children: [
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: "Join the airdrop, then earn XP for everything you create and trade. Your share of every distribution follows you automatically." })
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.jsx)(import_link.default, { href: airdropHref, className: "btn-border-animated p-[1px] rounded-xl", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "flex items-center justify-center gap-2 rounded-[11px] h-12 px-5 text-sm font-semibold text-white bg-transparent hover:brightness-110 active:scale-[0.98] transition-all", children: [
65
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Sparkles, { className: "h-4 w-4" }),
66
- "Claim my spot"
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)("div", { className: "absolute inset-x-0 top-0 h-0.5 bg-brand-orange/40" }),
88
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "text-[11px] font-bold text-muted-foreground/60", children: [
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&apos;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{\" \"}\n <span className=\"bg-gradient-to-r from-brand-blue via-brand-purple to-brand-orange bg-clip-text text-transparent\">\n you\n </span>\n </h2>\n <p className=\"mt-2.5 text-base text-muted-foreground leading-relaxed max-w-md\">\n Join the airdrop, then earn XP for everything you create and trade.\n Your share of every distribution follows you automatically.\n </p>\n </div>\n\n <div className=\"flex flex-wrap items-center gap-3\">\n <Link href={airdropHref} className=\"btn-border-animated p-[1px] rounded-xl\">\n <span className=\"flex items-center justify-center gap-2 rounded-[11px] h-12 px-5 text-sm font-semibold text-white bg-transparent hover:brightness-110 active:scale-[0.98] transition-all\">\n <Sparkles className=\"h-4 w-4\" />\n Claim my spot\n </span>\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 </div>\n\n {/* Right — leaderboard preview */}\n <div className=\"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 className=\"absolute inset-x-0 top-0 h-0.5 bg-brand-orange/40\" />\n <span className=\"text-[11px] font-bold text-muted-foreground/60\">#{i + 1}</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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAqCU;AAnCV,kBAAiB;AACjB,0BAAqC;AACrC,6BAA+B;AAoBxB,SAAS,oBAAoB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AACd,GAA6B;AAC3B,SACE,6CAAC,aAAQ,WAAU,+HAGjB;AAAA,iDAAC,SAAI,WAAU,yCACb;AAAA,mDAAC,SAAI,WAAU,6BACb;AAAA,oDAAC,UAAK,WAAU,iEAAgE,4BAEhF;AAAA,QACA,6CAAC,UAAK,WAAU,uEACd;AAAA,sDAAC,UAAK,WAAU,0DAAyD;AAAA,UAAE;AAAA,WAE7E;AAAA,SACF;AAAA,MAEA,6CAAC,SACC;AAAA,qDAAC,QAAG,WAAU,gEAA+D;AAAA;AAAA,UAChD;AAAA,UAC3B,4CAAC,UAAK,WAAU,mGAAkG,iBAElH;AAAA,WACF;AAAA,QACA,4CAAC,OAAE,WAAU,mEAAkE,6IAG/E;AAAA,SACF;AAAA,MAEA,6CAAC,SAAI,WAAU,qCACb;AAAA,oDAAC,YAAAA,SAAA,EAAK,MAAM,aAAa,WAAU,0CACjC,uDAAC,UAAK,WAAU,2KACd;AAAA,sDAAC,gCAAS,WAAU,WAAU;AAAA,UAAE;AAAA,WAElC,GACF;AAAA,QACA;AAAA,UAAC,YAAAA;AAAA,UAAA;AAAA,YACC,MAAM;AAAA,YACN,WAAU;AAAA,YACX;AAAA;AAAA,cAEC,4CAAC,kCAAW,WAAU,eAAc;AAAA;AAAA;AAAA,QACtC;AAAA,SACF;AAAA,OACF;AAAA,IAGA,4CAAC,SAAI,WAAU,cACZ,WAAC,aAAa,QAAQ,SAAS,IAC9B,4CAAC,SAAI,WAAU,iCACZ,kBAAQ,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,MAC/B;AAAA,MAAC,YAAAA;AAAA,MAAA;AAAA,QAEC,MAAM,YAAY,MAAM,OAAO;AAAA,QAC/B,WAAU;AAAA,QAEV;AAAA,sDAAC,SAAI,WAAU,qDAAoD;AAAA,UACnE,6CAAC,UAAK,WAAU,kDAAiD;AAAA;AAAA,YAAE,IAAI;AAAA,aAAE;AAAA,UACzE,6CAAC,SAAI,WAAU,eACb;AAAA,wDAAC,OAAE,WAAU,iDACV,gBAAM,QAAQ,eAAe,GAChC;AAAA,YACA,4CAAC,OAAE,WAAU,iCAAgC,uBAAS;AAAA,aACxD;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,SAAS,MAAM;AAAA,cACf,OAAO;AAAA,cACP,UAAU;AAAA,cACV,WAAU;AAAA;AAAA,UACZ;AAAA;AAAA;AAAA,MAjBK,MAAM;AAAA,IAkBb,CACD,GACH,IAEA,4CAAC,SAAI,WAAU,iCACZ,gBAAM,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,MACjC,4CAAC,SAAY,WAAU,qEAAb,CAA+E,CAC1F,GACH,GAEJ;AAAA,KACF;AAEJ;","names":["Link"]}
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&apos;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__ */ jsxs("div", { className: "px-7 py-9 sm:px-9 flex flex-col gap-6", children: [
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: "Join the airdrop, then earn XP for everything you create and trade. Your share of every distribution follows you automatically." })
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__ */ jsx(Link, { href: airdropHref, className: "btn-border-animated p-[1px] rounded-xl", children: /* @__PURE__ */ jsxs("span", { className: "flex items-center justify-center gap-2 rounded-[11px] h-12 px-5 text-sm font-semibold text-white bg-transparent hover:brightness-110 active:scale-[0.98] transition-all", children: [
32
- /* @__PURE__ */ jsx(Sparkles, { className: "h-4 w-4" }),
33
- "Claim my spot"
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("div", { className: "absolute inset-x-0 top-0 h-0.5 bg-brand-orange/40" }),
55
- /* @__PURE__ */ jsxs("span", { className: "text-[11px] font-bold text-muted-foreground/60", children: [
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&apos;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{\" \"}\n <span className=\"bg-gradient-to-r from-brand-blue via-brand-purple to-brand-orange bg-clip-text text-transparent\">\n you\n </span>\n </h2>\n <p className=\"mt-2.5 text-base text-muted-foreground leading-relaxed max-w-md\">\n Join the airdrop, then earn XP for everything you create and trade.\n Your share of every distribution follows you automatically.\n </p>\n </div>\n\n <div className=\"flex flex-wrap items-center gap-3\">\n <Link href={airdropHref} className=\"btn-border-animated p-[1px] rounded-xl\">\n <span className=\"flex items-center justify-center gap-2 rounded-[11px] h-12 px-5 text-sm font-semibold text-white bg-transparent hover:brightness-110 active:scale-[0.98] transition-all\">\n <Sparkles className=\"h-4 w-4\" />\n Claim my spot\n </span>\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 </div>\n\n {/* Right — leaderboard preview */}\n <div className=\"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 className=\"absolute inset-x-0 top-0 h-0.5 bg-brand-orange/40\" />\n <span className=\"text-[11px] font-bold text-muted-foreground/60\">#{i + 1}</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":";AAqCU,cAGA,YAHA;AAnCV,OAAO,UAAU;AACjB,SAAS,YAAY,gBAAgB;AACrC,SAAS,sBAAsB;AAoBxB,SAAS,oBAAoB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AACd,GAA6B;AAC3B,SACE,qBAAC,aAAQ,WAAU,+HAGjB;AAAA,yBAAC,SAAI,WAAU,yCACb;AAAA,2BAAC,SAAI,WAAU,6BACb;AAAA,4BAAC,UAAK,WAAU,iEAAgE,4BAEhF;AAAA,QACA,qBAAC,UAAK,WAAU,uEACd;AAAA,8BAAC,UAAK,WAAU,0DAAyD;AAAA,UAAE;AAAA,WAE7E;AAAA,SACF;AAAA,MAEA,qBAAC,SACC;AAAA,6BAAC,QAAG,WAAU,gEAA+D;AAAA;AAAA,UAChD;AAAA,UAC3B,oBAAC,UAAK,WAAU,mGAAkG,iBAElH;AAAA,WACF;AAAA,QACA,oBAAC,OAAE,WAAU,mEAAkE,6IAG/E;AAAA,SACF;AAAA,MAEA,qBAAC,SAAI,WAAU,qCACb;AAAA,4BAAC,QAAK,MAAM,aAAa,WAAU,0CACjC,+BAAC,UAAK,WAAU,2KACd;AAAA,8BAAC,YAAS,WAAU,WAAU;AAAA,UAAE;AAAA,WAElC,GACF;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,MAAM;AAAA,YACN,WAAU;AAAA,YACX;AAAA;AAAA,cAEC,oBAAC,cAAW,WAAU,eAAc;AAAA;AAAA;AAAA,QACtC;AAAA,SACF;AAAA,OACF;AAAA,IAGA,oBAAC,SAAI,WAAU,cACZ,WAAC,aAAa,QAAQ,SAAS,IAC9B,oBAAC,SAAI,WAAU,iCACZ,kBAAQ,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,MAC/B;AAAA,MAAC;AAAA;AAAA,QAEC,MAAM,YAAY,MAAM,OAAO;AAAA,QAC/B,WAAU;AAAA,QAEV;AAAA,8BAAC,SAAI,WAAU,qDAAoD;AAAA,UACnE,qBAAC,UAAK,WAAU,kDAAiD;AAAA;AAAA,YAAE,IAAI;AAAA,aAAE;AAAA,UACzE,qBAAC,SAAI,WAAU,eACb;AAAA,gCAAC,OAAE,WAAU,iDACV,gBAAM,QAAQ,eAAe,GAChC;AAAA,YACA,oBAAC,OAAE,WAAU,iCAAgC,uBAAS;AAAA,aACxD;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,SAAS,MAAM;AAAA,cACf,OAAO;AAAA,cACP,UAAU;AAAA,cACV,WAAU;AAAA;AAAA,UACZ;AAAA;AAAA;AAAA,MAjBK,MAAM;AAAA,IAkBb,CACD,GACH,IAEA,oBAAC,SAAI,WAAU,iCACZ,gBAAM,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,MACjC,oBAAC,SAAY,WAAU,qEAAb,CAA+E,CAC1F,GACH,GAEJ;AAAA,KACF;AAEJ;","names":[]}
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&apos;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":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@medialane/ui",
3
- "version": "0.96.0",
3
+ "version": "0.96.1",
4
4
  "description": "Shared UI components for Medialane apps",
5
5
  "type": "module",
6
6
  "sideEffects": false,