@medialane/ui 0.125.2 → 0.125.4
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/components/community-rewards-section.cjs +7 -7
- package/dist/components/community-rewards-section.cjs.map +1 -1
- package/dist/components/community-rewards-section.js +7 -7
- package/dist/components/community-rewards-section.js.map +1 -1
- package/dist/components/creator-airdrop-banner.cjs +10 -9
- package/dist/components/creator-airdrop-banner.cjs.map +1 -1
- package/dist/components/creator-airdrop-banner.js +10 -9
- package/dist/components/creator-airdrop-banner.js.map +1 -1
- package/dist/utils/ipfs.cjs +2 -6
- package/dist/utils/ipfs.cjs.map +1 -1
- package/dist/utils/ipfs.js +2 -6
- package/dist/utils/ipfs.js.map +1 -1
- package/package.json +1 -1
|
@@ -48,20 +48,20 @@ function CommunityRewardsSection({
|
|
|
48
48
|
rewardsHref,
|
|
49
49
|
creatorHref
|
|
50
50
|
}) {
|
|
51
|
-
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-
|
|
51
|
+
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-maeve/20", children: [
|
|
52
52
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "px-7 py-8 sm:px-9 flex flex-col gap-6", children: [
|
|
53
53
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
|
|
54
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-xs font-bold uppercase tracking-widest text-brand-
|
|
54
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-xs font-bold uppercase tracking-widest text-brand-maeve", children: "Creator's Fund" }),
|
|
55
55
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", { className: "mt-4 text-2xl font-bold tracking-tight leading-tight", children: "Community Rewards" }),
|
|
56
56
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "mt-1.5 text-sm text-muted-foreground leading-relaxed", children: "Earn XP. Share the Creator's Fund." })
|
|
57
57
|
] }),
|
|
58
|
-
!isLoading && entries.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "border-y border-brand-
|
|
58
|
+
!isLoading && entries.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "border-y border-brand-maeve/20 py-3", children: [
|
|
59
59
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-2xs font-bold uppercase tracking-widest text-muted-foreground mb-2", children: "Recently active" }),
|
|
60
60
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "flex -space-x-2", children: entries.slice(0, 5).map((entry) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
61
61
|
"span",
|
|
62
62
|
{
|
|
63
63
|
title: `${entry.totalXp.toLocaleString()} XP`,
|
|
64
|
-
className: "flex h-7 w-7 items-center justify-center rounded-full border-2 border-background bg-brand-
|
|
64
|
+
className: "flex h-7 w-7 items-center justify-center rounded-full border-2 border-background bg-brand-maeve/15 text-[9px] font-bold text-brand-maeve",
|
|
65
65
|
children: entry.address.slice(2, 4).toUpperCase()
|
|
66
66
|
},
|
|
67
67
|
entry.address
|
|
@@ -72,7 +72,7 @@ function CommunityRewardsSection({
|
|
|
72
72
|
{
|
|
73
73
|
className: "flex items-center gap-1.5 text-xs font-medium text-muted-foreground",
|
|
74
74
|
children: [
|
|
75
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Icon, { className: "h-3 w-3 text-brand-
|
|
75
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Icon, { className: "h-3 w-3 text-brand-maeve/70" }),
|
|
76
76
|
label
|
|
77
77
|
]
|
|
78
78
|
},
|
|
@@ -82,7 +82,7 @@ function CommunityRewardsSection({
|
|
|
82
82
|
import_link.default,
|
|
83
83
|
{
|
|
84
84
|
href: rewardsHref,
|
|
85
|
-
className: "mt-auto inline-flex items-center justify-center gap-2 rounded-xl bg-brand-
|
|
85
|
+
className: "mt-auto inline-flex items-center justify-center gap-2 rounded-xl bg-brand-maeve px-6 py-3 text-sm font-semibold text-white transition-all hover:brightness-110 active:scale-[0.98]",
|
|
86
86
|
children: [
|
|
87
87
|
"Start earning XP",
|
|
88
88
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ArrowRight, { className: "h-3.5 w-3.5" })
|
|
@@ -96,7 +96,7 @@ function CommunityRewardsSection({
|
|
|
96
96
|
href: creatorHref(entry.address),
|
|
97
97
|
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",
|
|
98
98
|
children: [
|
|
99
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "absolute inset-x-0 top-0 h-0.5 bg-brand-
|
|
99
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "absolute inset-x-0 top-0 h-0.5 bg-brand-maeve/40" }),
|
|
100
100
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "space-y-0.5 pt-1", children: [
|
|
101
101
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-2xl font-black tabular-nums leading-none", children: entry.totalXp.toLocaleString() }),
|
|
102
102
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-2xs text-muted-foreground", children: "XP earned" })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/community-rewards-section.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"next/link\";\nimport { ArrowRight, Zap, Palette, ShoppingBag, MessageSquare } from \"lucide-react\";\nimport { AddressDisplay } from \"./address-display.js\";\n\nexport interface CommunityRewardsEntry {\n address: string;\n totalXp: number;\n}\n\nexport interface CommunityRewardsSectionProps {\n entries: CommunityRewardsEntry[];\n isLoading?: boolean;\n rewardsHref: string;\n creatorHref: (address: string) => string;\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\nexport function CommunityRewardsSection({\n entries,\n isLoading = false,\n rewardsHref,\n creatorHref,\n}: CommunityRewardsSectionProps) {\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-
|
|
1
|
+
{"version":3,"sources":["../../src/components/community-rewards-section.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"next/link\";\nimport { ArrowRight, Zap, Palette, ShoppingBag, MessageSquare } from \"lucide-react\";\nimport { AddressDisplay } from \"./address-display.js\";\n\nexport interface CommunityRewardsEntry {\n address: string;\n totalXp: number;\n}\n\nexport interface CommunityRewardsSectionProps {\n entries: CommunityRewardsEntry[];\n isLoading?: boolean;\n rewardsHref: string;\n creatorHref: (address: string) => string;\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\nexport function CommunityRewardsSection({\n entries,\n isLoading = false,\n rewardsHref,\n creatorHref,\n}: CommunityRewardsSectionProps) {\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-maeve/20\">\n\n <div className=\"px-7 py-8 sm:px-9 flex flex-col gap-6\">\n <div>\n\n <span className=\"text-xs font-bold uppercase tracking-widest text-brand-maeve\">\n Creator's Fund\n </span>\n <h2 className=\"mt-4 text-2xl font-bold tracking-tight leading-tight\">\n Community Rewards\n </h2>\n <p className=\"mt-1.5 text-sm text-muted-foreground leading-relaxed\">\n Earn XP. Share the Creator's Fund.\n </p>\n </div>\n\n {!isLoading && entries.length > 0 && (\n <div className=\"border-y border-brand-maeve/20 py-3\">\n <p className=\"text-2xs font-bold uppercase tracking-widest text-muted-foreground mb-2\">\n Recently active\n </p>\n <div className=\"flex -space-x-2\">\n {entries.slice(0, 5).map((entry) => (\n <span\n key={entry.address}\n title={`${entry.totalXp.toLocaleString()} XP`}\n className=\"flex h-7 w-7 items-center justify-center rounded-full border-2 border-background bg-brand-maeve/15 text-[9px] font-bold text-brand-maeve\"\n >\n {entry.address.slice(2, 4).toUpperCase()}\n </span>\n ))}\n </div>\n </div>\n )}\n\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-xs font-medium text-muted-foreground\"\n >\n <Icon className=\"h-3 w-3 text-brand-maeve/70\" />\n {label}\n </span>\n ))}\n </div>\n\n <Link\n href={rewardsHref}\n className=\"mt-auto inline-flex items-center justify-center gap-2 rounded-xl bg-brand-maeve px-6 py-3 text-sm font-semibold text-white transition-all hover:brightness-110 active:scale-[0.98]\"\n >\n Start earning XP\n <ArrowRight className=\"h-3.5 w-3.5\" />\n </Link>\n </div>\n\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) => (\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-maeve/40\" />\n\n <div className=\"space-y-0.5 pt-1\">\n <p className=\"text-2xl font-black tabular-nums leading-none\">\n {entry.totalXp.toLocaleString()}\n </p>\n <p className=\"text-2xs text-muted-foreground\">XP earned</p>\n </div>\n\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-[100px] 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;AAmCQ;AAjCR,kBAAiB;AACjB,0BAAqE;AACrE,6BAA+B;AAc/B,MAAM,eAAe;AAAA,EACnB,EAAE,MAAM,yBAAK,OAAO,OAAO;AAAA,EAC3B,EAAE,MAAM,6BAAS,OAAO,SAAS;AAAA,EACjC,EAAE,MAAM,iCAAa,OAAO,QAAQ;AAAA,EACpC,EAAE,MAAM,mCAAe,OAAO,SAAS;AACzC;AAEO,SAAS,wBAAwB;AAAA,EACtC;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA;AACF,GAAiC;AAC/B,SACE,6CAAC,aAAQ,WAAU,8HAEjB;AAAA,iDAAC,SAAI,WAAU,yCACb;AAAA,mDAAC,SAEC;AAAA,oDAAC,UAAK,WAAU,gEAA+D,4BAE/E;AAAA,QACA,4CAAC,QAAG,WAAU,wDAAuD,+BAErE;AAAA,QACA,4CAAC,OAAE,WAAU,wDAAuD,gDAEpE;AAAA,SACF;AAAA,MAEC,CAAC,aAAa,QAAQ,SAAS,KAC9B,6CAAC,SAAI,WAAU,uCACb;AAAA,oDAAC,OAAE,WAAU,2EAA0E,6BAEvF;AAAA,QACA,4CAAC,SAAI,WAAU,mBACZ,kBAAQ,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,UACxB;AAAA,UAAC;AAAA;AAAA,YAEC,OAAO,GAAG,MAAM,QAAQ,eAAe,CAAC;AAAA,YACxC,WAAU;AAAA,YAET,gBAAM,QAAQ,MAAM,GAAG,CAAC,EAAE,YAAY;AAAA;AAAA,UAJlC,MAAM;AAAA,QAKb,CACD,GACH;AAAA,SACF;AAAA,MAGF,4CAAC,SAAI,WAAU,kCACZ,uBAAa,IAAI,CAAC,EAAE,MAAM,MAAM,MAAM,MACrC;AAAA,QAAC;AAAA;AAAA,UAEC,WAAU;AAAA,UAEV;AAAA,wDAAC,QAAK,WAAU,+BAA8B;AAAA,YAC7C;AAAA;AAAA;AAAA,QAJI;AAAA,MAKP,CACD,GACH;AAAA,MAEA;AAAA,QAAC,YAAAA;AAAA,QAAA;AAAA,UACC,MAAM;AAAA,UACN,WAAU;AAAA,UACX;AAAA;AAAA,YAEC,4CAAC,kCAAW,WAAU,eAAc;AAAA;AAAA;AAAA,MACtC;AAAA,OACF;AAAA,IAEA,4CAAC,SAAI,WAAU,cACZ,WAAC,aAAa,QAAQ,SAAS,IAC9B,4CAAC,SAAI,WAAU,iCACZ,kBAAQ,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,UACxB;AAAA,MAAC,YAAAA;AAAA,MAAA;AAAA,QAEC,MAAM,YAAY,MAAM,OAAO;AAAA,QAC/B,WAAU;AAAA,QAEV;AAAA,sDAAC,SAAI,WAAU,oDAAmD;AAAA,UAElE,6CAAC,SAAI,WAAU,oBACb;AAAA,wDAAC,OAAE,WAAU,iDACV,gBAAM,QAAQ,eAAe,GAChC;AAAA,YACA,4CAAC,OAAE,WAAU,kCAAiC,uBAAS;AAAA,aACzD;AAAA,UAEA;AAAA,YAAC;AAAA;AAAA,cACC,SAAS,MAAM;AAAA,cACf,OAAO;AAAA,cACP,UAAU;AAAA,cACV,WAAU;AAAA;AAAA,UACZ;AAAA;AAAA;AAAA,MAlBK,MAAM;AAAA,IAmBb,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"]}
|
|
@@ -15,20 +15,20 @@ function CommunityRewardsSection({
|
|
|
15
15
|
rewardsHref,
|
|
16
16
|
creatorHref
|
|
17
17
|
}) {
|
|
18
|
-
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-
|
|
18
|
+
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-maeve/20", children: [
|
|
19
19
|
/* @__PURE__ */ jsxs("div", { className: "px-7 py-8 sm:px-9 flex flex-col gap-6", children: [
|
|
20
20
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
21
|
-
/* @__PURE__ */ jsx("span", { className: "text-xs font-bold uppercase tracking-widest text-brand-
|
|
21
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs font-bold uppercase tracking-widest text-brand-maeve", children: "Creator's Fund" }),
|
|
22
22
|
/* @__PURE__ */ jsx("h2", { className: "mt-4 text-2xl font-bold tracking-tight leading-tight", children: "Community Rewards" }),
|
|
23
23
|
/* @__PURE__ */ jsx("p", { className: "mt-1.5 text-sm text-muted-foreground leading-relaxed", children: "Earn XP. Share the Creator's Fund." })
|
|
24
24
|
] }),
|
|
25
|
-
!isLoading && entries.length > 0 && /* @__PURE__ */ jsxs("div", { className: "border-y border-brand-
|
|
25
|
+
!isLoading && entries.length > 0 && /* @__PURE__ */ jsxs("div", { className: "border-y border-brand-maeve/20 py-3", children: [
|
|
26
26
|
/* @__PURE__ */ jsx("p", { className: "text-2xs font-bold uppercase tracking-widest text-muted-foreground mb-2", children: "Recently active" }),
|
|
27
27
|
/* @__PURE__ */ jsx("div", { className: "flex -space-x-2", children: entries.slice(0, 5).map((entry) => /* @__PURE__ */ jsx(
|
|
28
28
|
"span",
|
|
29
29
|
{
|
|
30
30
|
title: `${entry.totalXp.toLocaleString()} XP`,
|
|
31
|
-
className: "flex h-7 w-7 items-center justify-center rounded-full border-2 border-background bg-brand-
|
|
31
|
+
className: "flex h-7 w-7 items-center justify-center rounded-full border-2 border-background bg-brand-maeve/15 text-[9px] font-bold text-brand-maeve",
|
|
32
32
|
children: entry.address.slice(2, 4).toUpperCase()
|
|
33
33
|
},
|
|
34
34
|
entry.address
|
|
@@ -39,7 +39,7 @@ function CommunityRewardsSection({
|
|
|
39
39
|
{
|
|
40
40
|
className: "flex items-center gap-1.5 text-xs font-medium text-muted-foreground",
|
|
41
41
|
children: [
|
|
42
|
-
/* @__PURE__ */ jsx(Icon, { className: "h-3 w-3 text-brand-
|
|
42
|
+
/* @__PURE__ */ jsx(Icon, { className: "h-3 w-3 text-brand-maeve/70" }),
|
|
43
43
|
label
|
|
44
44
|
]
|
|
45
45
|
},
|
|
@@ -49,7 +49,7 @@ function CommunityRewardsSection({
|
|
|
49
49
|
Link,
|
|
50
50
|
{
|
|
51
51
|
href: rewardsHref,
|
|
52
|
-
className: "mt-auto inline-flex items-center justify-center gap-2 rounded-xl bg-brand-
|
|
52
|
+
className: "mt-auto inline-flex items-center justify-center gap-2 rounded-xl bg-brand-maeve px-6 py-3 text-sm font-semibold text-white transition-all hover:brightness-110 active:scale-[0.98]",
|
|
53
53
|
children: [
|
|
54
54
|
"Start earning XP",
|
|
55
55
|
/* @__PURE__ */ jsx(ArrowRight, { className: "h-3.5 w-3.5" })
|
|
@@ -63,7 +63,7 @@ function CommunityRewardsSection({
|
|
|
63
63
|
href: creatorHref(entry.address),
|
|
64
64
|
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",
|
|
65
65
|
children: [
|
|
66
|
-
/* @__PURE__ */ jsx("div", { className: "absolute inset-x-0 top-0 h-0.5 bg-brand-
|
|
66
|
+
/* @__PURE__ */ jsx("div", { className: "absolute inset-x-0 top-0 h-0.5 bg-brand-maeve/40" }),
|
|
67
67
|
/* @__PURE__ */ jsxs("div", { className: "space-y-0.5 pt-1", children: [
|
|
68
68
|
/* @__PURE__ */ jsx("p", { className: "text-2xl font-black tabular-nums leading-none", children: entry.totalXp.toLocaleString() }),
|
|
69
69
|
/* @__PURE__ */ jsx("p", { className: "text-2xs text-muted-foreground", children: "XP earned" })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/community-rewards-section.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"next/link\";\nimport { ArrowRight, Zap, Palette, ShoppingBag, MessageSquare } from \"lucide-react\";\nimport { AddressDisplay } from \"./address-display.js\";\n\nexport interface CommunityRewardsEntry {\n address: string;\n totalXp: number;\n}\n\nexport interface CommunityRewardsSectionProps {\n entries: CommunityRewardsEntry[];\n isLoading?: boolean;\n rewardsHref: string;\n creatorHref: (address: string) => string;\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\nexport function CommunityRewardsSection({\n entries,\n isLoading = false,\n rewardsHref,\n creatorHref,\n}: CommunityRewardsSectionProps) {\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-
|
|
1
|
+
{"version":3,"sources":["../../src/components/community-rewards-section.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"next/link\";\nimport { ArrowRight, Zap, Palette, ShoppingBag, MessageSquare } from \"lucide-react\";\nimport { AddressDisplay } from \"./address-display.js\";\n\nexport interface CommunityRewardsEntry {\n address: string;\n totalXp: number;\n}\n\nexport interface CommunityRewardsSectionProps {\n entries: CommunityRewardsEntry[];\n isLoading?: boolean;\n rewardsHref: string;\n creatorHref: (address: string) => string;\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\nexport function CommunityRewardsSection({\n entries,\n isLoading = false,\n rewardsHref,\n creatorHref,\n}: CommunityRewardsSectionProps) {\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-maeve/20\">\n\n <div className=\"px-7 py-8 sm:px-9 flex flex-col gap-6\">\n <div>\n\n <span className=\"text-xs font-bold uppercase tracking-widest text-brand-maeve\">\n Creator's Fund\n </span>\n <h2 className=\"mt-4 text-2xl font-bold tracking-tight leading-tight\">\n Community Rewards\n </h2>\n <p className=\"mt-1.5 text-sm text-muted-foreground leading-relaxed\">\n Earn XP. Share the Creator's Fund.\n </p>\n </div>\n\n {!isLoading && entries.length > 0 && (\n <div className=\"border-y border-brand-maeve/20 py-3\">\n <p className=\"text-2xs font-bold uppercase tracking-widest text-muted-foreground mb-2\">\n Recently active\n </p>\n <div className=\"flex -space-x-2\">\n {entries.slice(0, 5).map((entry) => (\n <span\n key={entry.address}\n title={`${entry.totalXp.toLocaleString()} XP`}\n className=\"flex h-7 w-7 items-center justify-center rounded-full border-2 border-background bg-brand-maeve/15 text-[9px] font-bold text-brand-maeve\"\n >\n {entry.address.slice(2, 4).toUpperCase()}\n </span>\n ))}\n </div>\n </div>\n )}\n\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-xs font-medium text-muted-foreground\"\n >\n <Icon className=\"h-3 w-3 text-brand-maeve/70\" />\n {label}\n </span>\n ))}\n </div>\n\n <Link\n href={rewardsHref}\n className=\"mt-auto inline-flex items-center justify-center gap-2 rounded-xl bg-brand-maeve px-6 py-3 text-sm font-semibold text-white transition-all hover:brightness-110 active:scale-[0.98]\"\n >\n Start earning XP\n <ArrowRight className=\"h-3.5 w-3.5\" />\n </Link>\n </div>\n\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) => (\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-maeve/40\" />\n\n <div className=\"space-y-0.5 pt-1\">\n <p className=\"text-2xl font-black tabular-nums leading-none\">\n {entry.totalXp.toLocaleString()}\n </p>\n <p className=\"text-2xs text-muted-foreground\">XP earned</p>\n </div>\n\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-[100px] rounded-xl bg-card dark:bg-muted/30 animate-pulse\" />\n ))}\n </div>\n )}\n </div>\n </section>\n );\n}\n"],"mappings":";AAmCQ,SAEE,KAFF;AAjCR,OAAO,UAAU;AACjB,SAAS,YAAY,KAAK,SAAS,aAAa,qBAAqB;AACrE,SAAS,sBAAsB;AAc/B,MAAM,eAAe;AAAA,EACnB,EAAE,MAAM,KAAK,OAAO,OAAO;AAAA,EAC3B,EAAE,MAAM,SAAS,OAAO,SAAS;AAAA,EACjC,EAAE,MAAM,aAAa,OAAO,QAAQ;AAAA,EACpC,EAAE,MAAM,eAAe,OAAO,SAAS;AACzC;AAEO,SAAS,wBAAwB;AAAA,EACtC;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA;AACF,GAAiC;AAC/B,SACE,qBAAC,aAAQ,WAAU,8HAEjB;AAAA,yBAAC,SAAI,WAAU,yCACb;AAAA,2BAAC,SAEC;AAAA,4BAAC,UAAK,WAAU,gEAA+D,4BAE/E;AAAA,QACA,oBAAC,QAAG,WAAU,wDAAuD,+BAErE;AAAA,QACA,oBAAC,OAAE,WAAU,wDAAuD,gDAEpE;AAAA,SACF;AAAA,MAEC,CAAC,aAAa,QAAQ,SAAS,KAC9B,qBAAC,SAAI,WAAU,uCACb;AAAA,4BAAC,OAAE,WAAU,2EAA0E,6BAEvF;AAAA,QACA,oBAAC,SAAI,WAAU,mBACZ,kBAAQ,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,UACxB;AAAA,UAAC;AAAA;AAAA,YAEC,OAAO,GAAG,MAAM,QAAQ,eAAe,CAAC;AAAA,YACxC,WAAU;AAAA,YAET,gBAAM,QAAQ,MAAM,GAAG,CAAC,EAAE,YAAY;AAAA;AAAA,UAJlC,MAAM;AAAA,QAKb,CACD,GACH;AAAA,SACF;AAAA,MAGF,oBAAC,SAAI,WAAU,kCACZ,uBAAa,IAAI,CAAC,EAAE,MAAM,MAAM,MAAM,MACrC;AAAA,QAAC;AAAA;AAAA,UAEC,WAAU;AAAA,UAEV;AAAA,gCAAC,QAAK,WAAU,+BAA8B;AAAA,YAC7C;AAAA;AAAA;AAAA,QAJI;AAAA,MAKP,CACD,GACH;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC,MAAM;AAAA,UACN,WAAU;AAAA,UACX;AAAA;AAAA,YAEC,oBAAC,cAAW,WAAU,eAAc;AAAA;AAAA;AAAA,MACtC;AAAA,OACF;AAAA,IAEA,oBAAC,SAAI,WAAU,cACZ,WAAC,aAAa,QAAQ,SAAS,IAC9B,oBAAC,SAAI,WAAU,iCACZ,kBAAQ,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,UACxB;AAAA,MAAC;AAAA;AAAA,QAEC,MAAM,YAAY,MAAM,OAAO;AAAA,QAC/B,WAAU;AAAA,QAEV;AAAA,8BAAC,SAAI,WAAU,oDAAmD;AAAA,UAElE,qBAAC,SAAI,WAAU,oBACb;AAAA,gCAAC,OAAE,WAAU,iDACV,gBAAM,QAAQ,eAAe,GAChC;AAAA,YACA,oBAAC,OAAE,WAAU,kCAAiC,uBAAS;AAAA,aACzD;AAAA,UAEA;AAAA,YAAC;AAAA;AAAA,cACC,SAAS,MAAM;AAAA,cACf,OAAO;AAAA,cACP,UAAU;AAAA,cACV,WAAU;AAAA;AAAA,UACZ;AAAA;AAAA;AAAA,MAlBK,MAAM;AAAA,IAmBb,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":[]}
|
|
@@ -41,24 +41,25 @@ const HIGHLIGHTS = [
|
|
|
41
41
|
"Create, trade and earn more rewards"
|
|
42
42
|
];
|
|
43
43
|
function CreatorAirdropBanner({ href }) {
|
|
44
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("section", { className: "rounded-2xl bg-
|
|
44
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("section", { className: "relative overflow-hidden rounded-2xl bg-brand-orange px-7 py-8 sm:px-9", children: [
|
|
45
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "absolute inset-x-0 top-0 h-1 bg-gradient-to-r from-brand-orange to-brand-maeve" }),
|
|
45
46
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center gap-3", children: [
|
|
46
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-xs font-bold uppercase tracking-widest text-
|
|
47
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "flex items-center gap-1.5 text-xs font-medium text-
|
|
48
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "h-1.5 w-1.5 rounded-full bg-
|
|
47
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-xs font-bold uppercase tracking-widest text-white", children: "Creator's Fund" }),
|
|
48
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "flex items-center gap-1.5 text-xs font-medium text-white/70", children: [
|
|
49
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "h-1.5 w-1.5 rounded-full bg-white animate-pulse" }),
|
|
49
50
|
"Live"
|
|
50
51
|
] })
|
|
51
52
|
] }),
|
|
52
53
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "mt-4 flex flex-col sm:flex-row sm:items-center gap-6", children: [
|
|
53
54
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex-1 min-w-0", children: [
|
|
54
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", { className: "text-2xl sm:text-3xl font-bold tracking-tight leading-tight", children: "Creator's Airdrop" }),
|
|
55
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "mt-1.5 text-sm text-
|
|
55
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", { className: "text-2xl sm:text-3xl font-bold tracking-tight leading-tight text-white", children: "Creator's Airdrop" }),
|
|
56
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "mt-1.5 text-sm text-white/75 leading-relaxed max-w-md", children: "Claim your participation and join the creator's fund distribution." })
|
|
56
57
|
] }),
|
|
57
58
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
58
59
|
import_link.default,
|
|
59
60
|
{
|
|
60
61
|
href,
|
|
61
|
-
className: "inline-flex items-center justify-center gap-2 rounded-xl bg-
|
|
62
|
+
className: "inline-flex items-center justify-center gap-2 rounded-xl bg-white px-6 py-3 text-sm font-semibold text-brand-orange transition-all hover:brightness-95 active:scale-[0.98] shrink-0",
|
|
62
63
|
children: [
|
|
63
64
|
"Read More",
|
|
64
65
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ArrowRight, { className: "h-4 w-4" })
|
|
@@ -66,8 +67,8 @@ function CreatorAirdropBanner({ href }) {
|
|
|
66
67
|
}
|
|
67
68
|
)
|
|
68
69
|
] }),
|
|
69
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "mt-7 border-t border-
|
|
70
|
-
i > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-
|
|
70
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "mt-7 border-t border-white/20 pt-4 flex flex-wrap items-center gap-x-2.5 gap-y-1.5 text-sm text-white/70", children: HIGHLIGHTS.map((h, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "flex items-center gap-2.5", children: [
|
|
71
|
+
i > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-white/40", "aria-hidden": true, children: "\xB7" }),
|
|
71
72
|
h
|
|
72
73
|
] }, h)) })
|
|
73
74
|
] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/creator-airdrop-banner.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"next/link\";\nimport { ArrowRight } from \"lucide-react\";\n\nexport interface CreatorAirdropBannerProps {\n\n href: string;\n}\n\nconst HIGHLIGHTS = [\n \"Free and frictionless participation\",\n \"Eligible for every prize distribution\",\n \"Create, trade and earn more rewards\",\n];\n\nexport function CreatorAirdropBanner({ href }: CreatorAirdropBannerProps) {\n return (\n <section className=\"rounded-2xl bg-
|
|
1
|
+
{"version":3,"sources":["../../src/components/creator-airdrop-banner.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"next/link\";\nimport { ArrowRight } from \"lucide-react\";\n\nexport interface CreatorAirdropBannerProps {\n\n href: string;\n}\n\nconst HIGHLIGHTS = [\n \"Free and frictionless participation\",\n \"Eligible for every prize distribution\",\n \"Create, trade and earn more rewards\",\n];\n\nexport function CreatorAirdropBanner({ href }: CreatorAirdropBannerProps) {\n return (\n <section className=\"relative overflow-hidden rounded-2xl bg-brand-orange px-7 py-8 sm:px-9\">\n <div className=\"absolute inset-x-0 top-0 h-1 bg-gradient-to-r from-brand-orange to-brand-maeve\" />\n\n <div className=\"flex items-center gap-3\">\n <span className=\"text-xs font-bold uppercase tracking-widest text-white\">\n Creator's Fund\n </span>\n <span className=\"flex items-center gap-1.5 text-xs font-medium text-white/70\">\n <span className=\"h-1.5 w-1.5 rounded-full bg-white animate-pulse\" />\n Live\n </span>\n </div>\n\n <div className=\"mt-4 flex flex-col sm:flex-row sm:items-center gap-6\">\n <div className=\"flex-1 min-w-0\">\n <h2 className=\"text-2xl sm:text-3xl font-bold tracking-tight leading-tight text-white\">\n Creator's Airdrop\n </h2>\n <p className=\"mt-1.5 text-sm text-white/75 leading-relaxed max-w-md\">\n Claim your participation and join the creator's fund distribution.\n </p>\n </div>\n\n <Link\n href={href}\n className=\"inline-flex items-center justify-center gap-2 rounded-xl bg-white px-6 py-3 text-sm font-semibold text-brand-orange transition-all hover:brightness-95 active:scale-[0.98] shrink-0\"\n >\n Read More\n <ArrowRight className=\"h-4 w-4\" />\n </Link>\n </div>\n\n <div className=\"mt-7 border-t border-white/20 pt-4 flex flex-wrap items-center gap-x-2.5 gap-y-1.5 text-sm text-white/70\">\n {HIGHLIGHTS.map((h, i) => (\n <span key={h} className=\"flex items-center gap-2.5\">\n {i > 0 && <span className=\"text-white/40\" aria-hidden>·</span>}\n {h}\n </span>\n ))}\n </div>\n </section>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAmBM;AAjBN,kBAAiB;AACjB,0BAA2B;AAO3B,MAAM,aAAa;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AACF;AAEO,SAAS,qBAAqB,EAAE,KAAK,GAA8B;AACxE,SACE,6CAAC,aAAQ,WAAU,0EACjB;AAAA,gDAAC,SAAI,WAAU,kFAAiF;AAAA,IAEhG,6CAAC,SAAI,WAAU,2BACb;AAAA,kDAAC,UAAK,WAAU,0DAAyD,4BAEzE;AAAA,MACA,6CAAC,UAAK,WAAU,+DACd;AAAA,oDAAC,UAAK,WAAU,mDAAkD;AAAA,QAAE;AAAA,SAEtE;AAAA,OACF;AAAA,IAEA,6CAAC,SAAI,WAAU,wDACb;AAAA,mDAAC,SAAI,WAAU,kBACb;AAAA,oDAAC,QAAG,WAAU,0EAAyE,+BAEvF;AAAA,QACA,4CAAC,OAAE,WAAU,yDAAwD,gFAErE;AAAA,SACF;AAAA,MAEA;AAAA,QAAC,YAAAA;AAAA,QAAA;AAAA,UACC;AAAA,UACA,WAAU;AAAA,UACX;AAAA;AAAA,YAEC,4CAAC,kCAAW,WAAU,WAAU;AAAA;AAAA;AAAA,MAClC;AAAA,OACF;AAAA,IAEA,4CAAC,SAAI,WAAU,4GACZ,qBAAW,IAAI,CAAC,GAAG,MAClB,6CAAC,UAAa,WAAU,6BACrB;AAAA,UAAI,KAAK,4CAAC,UAAK,WAAU,iBAAgB,eAAW,MAAC,kBAAC;AAAA,MACtD;AAAA,SAFQ,CAGX,CACD,GACH;AAAA,KACF;AAEJ;","names":["Link"]}
|
|
@@ -8,24 +8,25 @@ const HIGHLIGHTS = [
|
|
|
8
8
|
"Create, trade and earn more rewards"
|
|
9
9
|
];
|
|
10
10
|
function CreatorAirdropBanner({ href }) {
|
|
11
|
-
return /* @__PURE__ */ jsxs("section", { className: "rounded-2xl bg-
|
|
11
|
+
return /* @__PURE__ */ jsxs("section", { className: "relative overflow-hidden rounded-2xl bg-brand-orange px-7 py-8 sm:px-9", children: [
|
|
12
|
+
/* @__PURE__ */ jsx("div", { className: "absolute inset-x-0 top-0 h-1 bg-gradient-to-r from-brand-orange to-brand-maeve" }),
|
|
12
13
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
|
|
13
|
-
/* @__PURE__ */ jsx("span", { className: "text-xs font-bold uppercase tracking-widest text-
|
|
14
|
-
/* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1.5 text-xs font-medium text-
|
|
15
|
-
/* @__PURE__ */ jsx("span", { className: "h-1.5 w-1.5 rounded-full bg-
|
|
14
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs font-bold uppercase tracking-widest text-white", children: "Creator's Fund" }),
|
|
15
|
+
/* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1.5 text-xs font-medium text-white/70", children: [
|
|
16
|
+
/* @__PURE__ */ jsx("span", { className: "h-1.5 w-1.5 rounded-full bg-white animate-pulse" }),
|
|
16
17
|
"Live"
|
|
17
18
|
] })
|
|
18
19
|
] }),
|
|
19
20
|
/* @__PURE__ */ jsxs("div", { className: "mt-4 flex flex-col sm:flex-row sm:items-center gap-6", children: [
|
|
20
21
|
/* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
|
|
21
|
-
/* @__PURE__ */ jsx("h2", { className: "text-2xl sm:text-3xl font-bold tracking-tight leading-tight", children: "Creator's Airdrop" }),
|
|
22
|
-
/* @__PURE__ */ jsx("p", { className: "mt-1.5 text-sm text-
|
|
22
|
+
/* @__PURE__ */ jsx("h2", { className: "text-2xl sm:text-3xl font-bold tracking-tight leading-tight text-white", children: "Creator's Airdrop" }),
|
|
23
|
+
/* @__PURE__ */ jsx("p", { className: "mt-1.5 text-sm text-white/75 leading-relaxed max-w-md", children: "Claim your participation and join the creator's fund distribution." })
|
|
23
24
|
] }),
|
|
24
25
|
/* @__PURE__ */ jsxs(
|
|
25
26
|
Link,
|
|
26
27
|
{
|
|
27
28
|
href,
|
|
28
|
-
className: "inline-flex items-center justify-center gap-2 rounded-xl bg-
|
|
29
|
+
className: "inline-flex items-center justify-center gap-2 rounded-xl bg-white px-6 py-3 text-sm font-semibold text-brand-orange transition-all hover:brightness-95 active:scale-[0.98] shrink-0",
|
|
29
30
|
children: [
|
|
30
31
|
"Read More",
|
|
31
32
|
/* @__PURE__ */ jsx(ArrowRight, { className: "h-4 w-4" })
|
|
@@ -33,8 +34,8 @@ function CreatorAirdropBanner({ href }) {
|
|
|
33
34
|
}
|
|
34
35
|
)
|
|
35
36
|
] }),
|
|
36
|
-
/* @__PURE__ */ jsx("div", { className: "mt-7 border-t border-
|
|
37
|
-
i > 0 && /* @__PURE__ */ jsx("span", { className: "text-
|
|
37
|
+
/* @__PURE__ */ jsx("div", { className: "mt-7 border-t border-white/20 pt-4 flex flex-wrap items-center gap-x-2.5 gap-y-1.5 text-sm text-white/70", children: HIGHLIGHTS.map((h, i) => /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2.5", children: [
|
|
38
|
+
i > 0 && /* @__PURE__ */ jsx("span", { className: "text-white/40", "aria-hidden": true, children: "\xB7" }),
|
|
38
39
|
h
|
|
39
40
|
] }, h)) })
|
|
40
41
|
] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/creator-airdrop-banner.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"next/link\";\nimport { ArrowRight } from \"lucide-react\";\n\nexport interface CreatorAirdropBannerProps {\n\n href: string;\n}\n\nconst HIGHLIGHTS = [\n \"Free and frictionless participation\",\n \"Eligible for every prize distribution\",\n \"Create, trade and earn more rewards\",\n];\n\nexport function CreatorAirdropBanner({ href }: CreatorAirdropBannerProps) {\n return (\n <section className=\"rounded-2xl bg-
|
|
1
|
+
{"version":3,"sources":["../../src/components/creator-airdrop-banner.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"next/link\";\nimport { ArrowRight } from \"lucide-react\";\n\nexport interface CreatorAirdropBannerProps {\n\n href: string;\n}\n\nconst HIGHLIGHTS = [\n \"Free and frictionless participation\",\n \"Eligible for every prize distribution\",\n \"Create, trade and earn more rewards\",\n];\n\nexport function CreatorAirdropBanner({ href }: CreatorAirdropBannerProps) {\n return (\n <section className=\"relative overflow-hidden rounded-2xl bg-brand-orange px-7 py-8 sm:px-9\">\n <div className=\"absolute inset-x-0 top-0 h-1 bg-gradient-to-r from-brand-orange to-brand-maeve\" />\n\n <div className=\"flex items-center gap-3\">\n <span className=\"text-xs font-bold uppercase tracking-widest text-white\">\n Creator's Fund\n </span>\n <span className=\"flex items-center gap-1.5 text-xs font-medium text-white/70\">\n <span className=\"h-1.5 w-1.5 rounded-full bg-white animate-pulse\" />\n Live\n </span>\n </div>\n\n <div className=\"mt-4 flex flex-col sm:flex-row sm:items-center gap-6\">\n <div className=\"flex-1 min-w-0\">\n <h2 className=\"text-2xl sm:text-3xl font-bold tracking-tight leading-tight text-white\">\n Creator's Airdrop\n </h2>\n <p className=\"mt-1.5 text-sm text-white/75 leading-relaxed max-w-md\">\n Claim your participation and join the creator's fund distribution.\n </p>\n </div>\n\n <Link\n href={href}\n className=\"inline-flex items-center justify-center gap-2 rounded-xl bg-white px-6 py-3 text-sm font-semibold text-brand-orange transition-all hover:brightness-95 active:scale-[0.98] shrink-0\"\n >\n Read More\n <ArrowRight className=\"h-4 w-4\" />\n </Link>\n </div>\n\n <div className=\"mt-7 border-t border-white/20 pt-4 flex flex-wrap items-center gap-x-2.5 gap-y-1.5 text-sm text-white/70\">\n {HIGHLIGHTS.map((h, i) => (\n <span key={h} className=\"flex items-center gap-2.5\">\n {i > 0 && <span className=\"text-white/40\" aria-hidden>·</span>}\n {h}\n </span>\n ))}\n </div>\n </section>\n );\n}\n"],"mappings":";AAmBM,cAME,YANF;AAjBN,OAAO,UAAU;AACjB,SAAS,kBAAkB;AAO3B,MAAM,aAAa;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AACF;AAEO,SAAS,qBAAqB,EAAE,KAAK,GAA8B;AACxE,SACE,qBAAC,aAAQ,WAAU,0EACjB;AAAA,wBAAC,SAAI,WAAU,kFAAiF;AAAA,IAEhG,qBAAC,SAAI,WAAU,2BACb;AAAA,0BAAC,UAAK,WAAU,0DAAyD,4BAEzE;AAAA,MACA,qBAAC,UAAK,WAAU,+DACd;AAAA,4BAAC,UAAK,WAAU,mDAAkD;AAAA,QAAE;AAAA,SAEtE;AAAA,OACF;AAAA,IAEA,qBAAC,SAAI,WAAU,wDACb;AAAA,2BAAC,SAAI,WAAU,kBACb;AAAA,4BAAC,QAAG,WAAU,0EAAyE,+BAEvF;AAAA,QACA,oBAAC,OAAE,WAAU,yDAAwD,gFAErE;AAAA,SACF;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,WAAU;AAAA,UACX;AAAA;AAAA,YAEC,oBAAC,cAAW,WAAU,WAAU;AAAA;AAAA;AAAA,MAClC;AAAA,OACF;AAAA,IAEA,oBAAC,SAAI,WAAU,4GACZ,qBAAW,IAAI,CAAC,GAAG,MAClB,qBAAC,UAAa,WAAU,6BACrB;AAAA,UAAI,KAAK,oBAAC,UAAK,WAAU,iBAAgB,eAAW,MAAC,kBAAC;AAAA,MACtD;AAAA,SAFQ,CAGX,CACD,GACH;AAAA,KACF;AAEJ;","names":[]}
|
package/dist/utils/ipfs.cjs
CHANGED
|
@@ -21,15 +21,14 @@ __export(ipfs_exports, {
|
|
|
21
21
|
ipfsToHttp: () => ipfsToHttp
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(ipfs_exports);
|
|
24
|
-
const
|
|
25
|
-
const DEFAULT_GATEWAY = `${MEDIA_BASE_URL}/media/ipfs/`;
|
|
24
|
+
const DEFAULT_GATEWAY = "/api/ipfs/";
|
|
26
25
|
const ALLOWED_PROTOCOLS = /* @__PURE__ */ new Set(["http:", "https:", "ipfs:"]);
|
|
27
26
|
function ipfsToHttp(uri, gateway = DEFAULT_GATEWAY) {
|
|
28
27
|
if (!uri) return "";
|
|
29
28
|
if (uri.startsWith("ipfs://")) {
|
|
30
29
|
return uri.replace("ipfs://", gateway);
|
|
31
30
|
}
|
|
32
|
-
if (uri.startsWith(
|
|
31
|
+
if (uri.startsWith("data:image/")) {
|
|
33
32
|
return uri;
|
|
34
33
|
}
|
|
35
34
|
try {
|
|
@@ -38,9 +37,6 @@ function ipfsToHttp(uri, gateway = DEFAULT_GATEWAY) {
|
|
|
38
37
|
} catch {
|
|
39
38
|
return "";
|
|
40
39
|
}
|
|
41
|
-
if (uri.startsWith("https://") || uri.startsWith("http://")) {
|
|
42
|
-
return `${MEDIA_BASE_URL}/media/external?url=${encodeURIComponent(uri)}`;
|
|
43
|
-
}
|
|
44
40
|
return uri;
|
|
45
41
|
}
|
|
46
42
|
// Annotate the CommonJS export names for ESM import in node:
|
package/dist/utils/ipfs.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/ipfs.ts"],"sourcesContent":["const
|
|
1
|
+
{"version":3,"sources":["../../src/utils/ipfs.ts"],"sourcesContent":["const DEFAULT_GATEWAY = \"/api/ipfs/\";\n\nconst ALLOWED_PROTOCOLS = new Set([\"http:\", \"https:\", \"ipfs:\"]);\n\nexport function ipfsToHttp(\n uri: string | null | undefined,\n gateway = DEFAULT_GATEWAY\n): string {\n if (!uri) return \"\";\n if (uri.startsWith(\"ipfs://\")) {\n return uri.replace(\"ipfs://\", gateway);\n }\n if (uri.startsWith(\"data:image/\")) {\n return uri;\n }\n try {\n const { protocol } = new URL(uri);\n if (!ALLOWED_PROTOCOLS.has(protocol)) return \"\";\n } catch {\n return \"\";\n }\n return uri;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAM,kBAAkB;AAExB,MAAM,oBAAoB,oBAAI,IAAI,CAAC,SAAS,UAAU,OAAO,CAAC;AAEvD,SAAS,WACd,KACA,UAAU,iBACF;AACR,MAAI,CAAC,IAAK,QAAO;AACjB,MAAI,IAAI,WAAW,SAAS,GAAG;AAC7B,WAAO,IAAI,QAAQ,WAAW,OAAO;AAAA,EACvC;AACA,MAAI,IAAI,WAAW,aAAa,GAAG;AACjC,WAAO;AAAA,EACT;AACA,MAAI;AACF,UAAM,EAAE,SAAS,IAAI,IAAI,IAAI,GAAG;AAChC,QAAI,CAAC,kBAAkB,IAAI,QAAQ,EAAG,QAAO;AAAA,EAC/C,QAAQ;AACN,WAAO;AAAA,EACT;AACA,SAAO;AACT;","names":[]}
|
package/dist/utils/ipfs.js
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
const
|
|
2
|
-
const DEFAULT_GATEWAY = `${MEDIA_BASE_URL}/media/ipfs/`;
|
|
1
|
+
const DEFAULT_GATEWAY = "/api/ipfs/";
|
|
3
2
|
const ALLOWED_PROTOCOLS = /* @__PURE__ */ new Set(["http:", "https:", "ipfs:"]);
|
|
4
3
|
function ipfsToHttp(uri, gateway = DEFAULT_GATEWAY) {
|
|
5
4
|
if (!uri) return "";
|
|
6
5
|
if (uri.startsWith("ipfs://")) {
|
|
7
6
|
return uri.replace("ipfs://", gateway);
|
|
8
7
|
}
|
|
9
|
-
if (uri.startsWith(
|
|
8
|
+
if (uri.startsWith("data:image/")) {
|
|
10
9
|
return uri;
|
|
11
10
|
}
|
|
12
11
|
try {
|
|
@@ -15,9 +14,6 @@ function ipfsToHttp(uri, gateway = DEFAULT_GATEWAY) {
|
|
|
15
14
|
} catch {
|
|
16
15
|
return "";
|
|
17
16
|
}
|
|
18
|
-
if (uri.startsWith("https://") || uri.startsWith("http://")) {
|
|
19
|
-
return `${MEDIA_BASE_URL}/media/external?url=${encodeURIComponent(uri)}`;
|
|
20
|
-
}
|
|
21
17
|
return uri;
|
|
22
18
|
}
|
|
23
19
|
export {
|
package/dist/utils/ipfs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/ipfs.ts"],"sourcesContent":["const
|
|
1
|
+
{"version":3,"sources":["../../src/utils/ipfs.ts"],"sourcesContent":["const DEFAULT_GATEWAY = \"/api/ipfs/\";\n\nconst ALLOWED_PROTOCOLS = new Set([\"http:\", \"https:\", \"ipfs:\"]);\n\nexport function ipfsToHttp(\n uri: string | null | undefined,\n gateway = DEFAULT_GATEWAY\n): string {\n if (!uri) return \"\";\n if (uri.startsWith(\"ipfs://\")) {\n return uri.replace(\"ipfs://\", gateway);\n }\n if (uri.startsWith(\"data:image/\")) {\n return uri;\n }\n try {\n const { protocol } = new URL(uri);\n if (!ALLOWED_PROTOCOLS.has(protocol)) return \"\";\n } catch {\n return \"\";\n }\n return uri;\n}\n"],"mappings":"AAAA,MAAM,kBAAkB;AAExB,MAAM,oBAAoB,oBAAI,IAAI,CAAC,SAAS,UAAU,OAAO,CAAC;AAEvD,SAAS,WACd,KACA,UAAU,iBACF;AACR,MAAI,CAAC,IAAK,QAAO;AACjB,MAAI,IAAI,WAAW,SAAS,GAAG;AAC7B,WAAO,IAAI,QAAQ,WAAW,OAAO;AAAA,EACvC;AACA,MAAI,IAAI,WAAW,aAAa,GAAG;AACjC,WAAO;AAAA,EACT;AACA,MAAI;AACF,UAAM,EAAE,SAAS,IAAI,IAAI,IAAI,GAAG;AAChC,QAAI,CAAC,kBAAkB,IAAI,QAAQ,EAAG,QAAO;AAAA,EAC/C,QAAQ;AACN,WAAO;AAAA,EACT;AACA,SAAO;AACT;","names":[]}
|