@medialane/ui 0.48.0 → 0.49.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -56,7 +56,7 @@ function CommunityRewardsSection({
56
56
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("section", { className: "grid lg:grid-cols-2 gap-px bg-border/40 rounded-2xl overflow-hidden", children: [
57
57
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "bg-card px-7 py-8 flex flex-col gap-6", children: [
58
58
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center gap-2.5", children: [
59
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-brand-blue to-brand-purple text-white shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Sparkles, { className: "h-4 w-4" }) }),
59
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-brand-rose to-brand-orange text-white shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Sparkles, { className: "h-4 w-4" }) }),
60
60
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", { className: "text-base font-black", children: "Community Rewards" })
61
61
  ] }),
62
62
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-sm font-semibold text-muted-foreground leading-snug", children: "Earn XP. Share the Creator's Fund." }),
@@ -86,7 +86,7 @@ function CommunityRewardsSection({
86
86
  import_link.default,
87
87
  {
88
88
  href: rewardsHref,
89
- className: "mt-auto inline-flex items-center justify-center gap-2 rounded-xl bg-gradient-to-r from-brand-blue to-brand-purple px-5 py-2.5 text-sm font-semibold text-white hover:opacity-90 transition-opacity",
89
+ className: "mt-auto inline-flex items-center justify-center gap-2 rounded-xl bg-gradient-to-r from-brand-rose to-brand-orange px-5 py-2.5 text-sm font-semibold text-white hover:opacity-90 transition-opacity",
90
90
  children: [
91
91
  "Start earning XP",
92
92
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ArrowRight, { className: "h-3.5 w-3.5" })
@@ -100,7 +100,7 @@ function CommunityRewardsSection({
100
100
  href: creatorHref(entry.address),
101
101
  className: "group relative rounded-xl border border-border/40 bg-muted/20 hover:bg-muted/40 hover:border-border/70 overflow-hidden transition-all flex flex-col justify-between p-4",
102
102
  children: [
103
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "absolute inset-x-0 top-0 h-[3px] bg-gradient-to-r from-brand-blue to-brand-purple" }),
103
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "absolute inset-x-0 top-0 h-[3px] bg-gradient-to-r from-brand-rose to-brand-orange" }),
104
104
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "space-y-0.5 pt-1", children: [
105
105
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-2xl font-black tabular-nums leading-none", children: entry.totalXp.toLocaleString() }),
106
106
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-[11px] 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 { Sparkles, 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\nconst INFO_TILES = [\n { value: \"50\", label: \"Levels\" },\n { value: \"XP\", label: \"Every action\" },\n { value: \"Fund\", label: \"Distribution\" },\n];\n\nexport function CommunityRewardsSection({\n entries,\n isLoading = false,\n rewardsHref,\n creatorHref,\n}: CommunityRewardsSectionProps) {\n return (\n <section className=\"grid lg:grid-cols-2 gap-px bg-border/40 rounded-2xl overflow-hidden\">\n\n {/* Left — info panel */}\n <div className=\"bg-card px-7 py-8 flex flex-col gap-6\">\n <div className=\"flex items-center gap-2.5\">\n <div className=\"flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-brand-blue to-brand-purple text-white shrink-0\">\n <Sparkles className=\"h-4 w-4\" />\n </div>\n <h2 className=\"text-base font-black\">Community Rewards</h2>\n </div>\n\n <p className=\"text-sm font-semibold text-muted-foreground leading-snug\">\n Earn XP. Share the Creator&apos;s Fund.\n </p>\n\n {/* Visual info tiles */}\n <div className=\"grid grid-cols-3 gap-2\">\n {INFO_TILES.map(({ value, label }) => (\n <div\n key={label}\n className=\"rounded-xl border border-border/50 bg-muted/30 px-3 py-3.5 flex flex-col items-center text-center gap-1\"\n >\n <span className=\"text-xl font-black\">{value}</span>\n <span className=\"text-[10px] text-muted-foreground leading-tight\">{label}</span>\n </div>\n ))}\n </div>\n\n {/* Earn action pills */}\n <div className=\"flex flex-wrap gap-2\">\n {EARN_ACTIONS.map(({ icon: Icon, label }) => (\n <div\n key={label}\n className=\"flex items-center gap-1.5 rounded-full border border-border/50 bg-muted/40 px-3 py-1 text-xs font-medium text-muted-foreground\"\n >\n <Icon className=\"h-3 w-3\" />\n {label}\n </div>\n ))}\n </div>\n\n <Link\n href={rewardsHref}\n className=\"mt-auto inline-flex items-center justify-center gap-2 rounded-xl bg-gradient-to-r from-brand-blue to-brand-purple px-5 py-2.5 text-sm font-semibold text-white hover:opacity-90 transition-opacity\"\n >\n Start earning XP\n <ArrowRight className=\"h-3.5 w-3.5\" />\n </Link>\n </div>\n\n {/* Right — member cards */}\n <div className=\"bg-card p-5\">\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 border border-border/40 bg-muted/20 hover:bg-muted/40 hover:border-border/70 overflow-hidden transition-all flex flex-col justify-between p-4\"\n >\n {/* Brand gradient top rule */}\n <div className=\"absolute inset-x-0 top-0 h-[3px] bg-gradient-to-r from-brand-blue to-brand-purple\" />\n\n {/* XP — hero number */}\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-[11px] text-muted-foreground\">XP earned</p>\n </div>\n\n {/* Address */}\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-muted/20 animate-pulse\" />\n ))}\n </div>\n )}\n </div>\n </section>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA0CQ;AAxCR,kBAAiB;AACjB,0BAA+E;AAC/E,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;AAEA,MAAM,aAAa;AAAA,EACjB,EAAE,OAAO,MAAM,OAAO,SAAS;AAAA,EAC/B,EAAE,OAAO,MAAM,OAAO,eAAe;AAAA,EACrC,EAAE,OAAO,QAAQ,OAAO,eAAe;AACzC;AAEO,SAAS,wBAAwB;AAAA,EACtC;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA;AACF,GAAiC;AAC/B,SACE,6CAAC,aAAQ,WAAU,uEAGjB;AAAA,iDAAC,SAAI,WAAU,yCACb;AAAA,mDAAC,SAAI,WAAU,6BACb;AAAA,oDAAC,SAAI,WAAU,6HACb,sDAAC,gCAAS,WAAU,WAAU,GAChC;AAAA,QACA,4CAAC,QAAG,WAAU,wBAAuB,+BAAiB;AAAA,SACxD;AAAA,MAEA,4CAAC,OAAE,WAAU,4DAA2D,gDAExE;AAAA,MAGA,4CAAC,SAAI,WAAU,0BACZ,qBAAW,IAAI,CAAC,EAAE,OAAO,MAAM,MAC9B;AAAA,QAAC;AAAA;AAAA,UAEC,WAAU;AAAA,UAEV;AAAA,wDAAC,UAAK,WAAU,sBAAsB,iBAAM;AAAA,YAC5C,4CAAC,UAAK,WAAU,mDAAmD,iBAAM;AAAA;AAAA;AAAA,QAJpE;AAAA,MAKP,CACD,GACH;AAAA,MAGA,4CAAC,SAAI,WAAU,wBACZ,uBAAa,IAAI,CAAC,EAAE,MAAM,MAAM,MAAM,MACrC;AAAA,QAAC;AAAA;AAAA,UAEC,WAAU;AAAA,UAEV;AAAA,wDAAC,QAAK,WAAU,WAAU;AAAA,YACzB;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,IAGA,4CAAC,SAAI,WAAU,eACZ,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,QAGV;AAAA,sDAAC,SAAI,WAAU,qFAAoF;AAAA,UAGnG,6CAAC,SAAI,WAAU,oBACb;AAAA,wDAAC,OAAE,WAAU,iDACV,gBAAM,QAAQ,eAAe,GAChC;AAAA,YACA,4CAAC,OAAE,WAAU,qCAAoC,uBAAS;AAAA,aAC5D;AAAA,UAGA;AAAA,YAAC;AAAA;AAAA,cACC,SAAS,MAAM;AAAA,cACf,OAAO;AAAA,cACP,UAAU;AAAA,cACV,WAAU;AAAA;AAAA,UACZ;AAAA;AAAA;AAAA,MArBK,MAAM;AAAA,IAsBb,CACD,GACH,IAEA,4CAAC,SAAI,WAAU,iCACZ,gBAAM,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,MACjC,4CAAC,SAAY,WAAU,wDAAb,CAAkE,CAC7E,GACH,GAEJ;AAAA,KACF;AAEJ;","names":["Link"]}
1
+ {"version":3,"sources":["../../src/components/community-rewards-section.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"next/link\";\nimport { Sparkles, 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\nconst INFO_TILES = [\n { value: \"50\", label: \"Levels\" },\n { value: \"XP\", label: \"Every action\" },\n { value: \"Fund\", label: \"Distribution\" },\n];\n\nexport function CommunityRewardsSection({\n entries,\n isLoading = false,\n rewardsHref,\n creatorHref,\n}: CommunityRewardsSectionProps) {\n return (\n <section className=\"grid lg:grid-cols-2 gap-px bg-border/40 rounded-2xl overflow-hidden\">\n\n {/* Left — info panel */}\n <div className=\"bg-card px-7 py-8 flex flex-col gap-6\">\n <div className=\"flex items-center gap-2.5\">\n <div className=\"flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-brand-rose to-brand-orange text-white shrink-0\">\n <Sparkles className=\"h-4 w-4\" />\n </div>\n <h2 className=\"text-base font-black\">Community Rewards</h2>\n </div>\n\n <p className=\"text-sm font-semibold text-muted-foreground leading-snug\">\n Earn XP. Share the Creator&apos;s Fund.\n </p>\n\n {/* Visual info tiles */}\n <div className=\"grid grid-cols-3 gap-2\">\n {INFO_TILES.map(({ value, label }) => (\n <div\n key={label}\n className=\"rounded-xl border border-border/50 bg-muted/30 px-3 py-3.5 flex flex-col items-center text-center gap-1\"\n >\n <span className=\"text-xl font-black\">{value}</span>\n <span className=\"text-[10px] text-muted-foreground leading-tight\">{label}</span>\n </div>\n ))}\n </div>\n\n {/* Earn action pills */}\n <div className=\"flex flex-wrap gap-2\">\n {EARN_ACTIONS.map(({ icon: Icon, label }) => (\n <div\n key={label}\n className=\"flex items-center gap-1.5 rounded-full border border-border/50 bg-muted/40 px-3 py-1 text-xs font-medium text-muted-foreground\"\n >\n <Icon className=\"h-3 w-3\" />\n {label}\n </div>\n ))}\n </div>\n\n <Link\n href={rewardsHref}\n className=\"mt-auto inline-flex items-center justify-center gap-2 rounded-xl bg-gradient-to-r from-brand-rose to-brand-orange px-5 py-2.5 text-sm font-semibold text-white hover:opacity-90 transition-opacity\"\n >\n Start earning XP\n <ArrowRight className=\"h-3.5 w-3.5\" />\n </Link>\n </div>\n\n {/* Right — member cards */}\n <div className=\"bg-card p-5\">\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 border border-border/40 bg-muted/20 hover:bg-muted/40 hover:border-border/70 overflow-hidden transition-all flex flex-col justify-between p-4\"\n >\n {/* Brand gradient top rule */}\n <div className=\"absolute inset-x-0 top-0 h-[3px] bg-gradient-to-r from-brand-rose to-brand-orange\" />\n\n {/* XP — hero number */}\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-[11px] text-muted-foreground\">XP earned</p>\n </div>\n\n {/* Address */}\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-muted/20 animate-pulse\" />\n ))}\n </div>\n )}\n </div>\n </section>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA0CQ;AAxCR,kBAAiB;AACjB,0BAA+E;AAC/E,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;AAEA,MAAM,aAAa;AAAA,EACjB,EAAE,OAAO,MAAM,OAAO,SAAS;AAAA,EAC/B,EAAE,OAAO,MAAM,OAAO,eAAe;AAAA,EACrC,EAAE,OAAO,QAAQ,OAAO,eAAe;AACzC;AAEO,SAAS,wBAAwB;AAAA,EACtC;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA;AACF,GAAiC;AAC/B,SACE,6CAAC,aAAQ,WAAU,uEAGjB;AAAA,iDAAC,SAAI,WAAU,yCACb;AAAA,mDAAC,SAAI,WAAU,6BACb;AAAA,oDAAC,SAAI,WAAU,6HACb,sDAAC,gCAAS,WAAU,WAAU,GAChC;AAAA,QACA,4CAAC,QAAG,WAAU,wBAAuB,+BAAiB;AAAA,SACxD;AAAA,MAEA,4CAAC,OAAE,WAAU,4DAA2D,gDAExE;AAAA,MAGA,4CAAC,SAAI,WAAU,0BACZ,qBAAW,IAAI,CAAC,EAAE,OAAO,MAAM,MAC9B;AAAA,QAAC;AAAA;AAAA,UAEC,WAAU;AAAA,UAEV;AAAA,wDAAC,UAAK,WAAU,sBAAsB,iBAAM;AAAA,YAC5C,4CAAC,UAAK,WAAU,mDAAmD,iBAAM;AAAA;AAAA;AAAA,QAJpE;AAAA,MAKP,CACD,GACH;AAAA,MAGA,4CAAC,SAAI,WAAU,wBACZ,uBAAa,IAAI,CAAC,EAAE,MAAM,MAAM,MAAM,MACrC;AAAA,QAAC;AAAA;AAAA,UAEC,WAAU;AAAA,UAEV;AAAA,wDAAC,QAAK,WAAU,WAAU;AAAA,YACzB;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,IAGA,4CAAC,SAAI,WAAU,eACZ,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,QAGV;AAAA,sDAAC,SAAI,WAAU,qFAAoF;AAAA,UAGnG,6CAAC,SAAI,WAAU,oBACb;AAAA,wDAAC,OAAE,WAAU,iDACV,gBAAM,QAAQ,eAAe,GAChC;AAAA,YACA,4CAAC,OAAE,WAAU,qCAAoC,uBAAS;AAAA,aAC5D;AAAA,UAGA;AAAA,YAAC;AAAA;AAAA,cACC,SAAS,MAAM;AAAA,cACf,OAAO;AAAA,cACP,UAAU;AAAA,cACV,WAAU;AAAA;AAAA,UACZ;AAAA;AAAA;AAAA,MArBK,MAAM;AAAA,IAsBb,CACD,GACH,IAEA,4CAAC,SAAI,WAAU,iCACZ,gBAAM,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,MACjC,4CAAC,SAAY,WAAU,wDAAb,CAAkE,CAC7E,GACH,GAEJ;AAAA,KACF;AAEJ;","names":["Link"]}
@@ -23,7 +23,7 @@ function CommunityRewardsSection({
23
23
  return /* @__PURE__ */ jsxs("section", { className: "grid lg:grid-cols-2 gap-px bg-border/40 rounded-2xl overflow-hidden", children: [
24
24
  /* @__PURE__ */ jsxs("div", { className: "bg-card px-7 py-8 flex flex-col gap-6", children: [
25
25
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2.5", children: [
26
- /* @__PURE__ */ jsx("div", { className: "flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-brand-blue to-brand-purple text-white shrink-0", children: /* @__PURE__ */ jsx(Sparkles, { className: "h-4 w-4" }) }),
26
+ /* @__PURE__ */ jsx("div", { className: "flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-brand-rose to-brand-orange text-white shrink-0", children: /* @__PURE__ */ jsx(Sparkles, { className: "h-4 w-4" }) }),
27
27
  /* @__PURE__ */ jsx("h2", { className: "text-base font-black", children: "Community Rewards" })
28
28
  ] }),
29
29
  /* @__PURE__ */ jsx("p", { className: "text-sm font-semibold text-muted-foreground leading-snug", children: "Earn XP. Share the Creator's Fund." }),
@@ -53,7 +53,7 @@ function CommunityRewardsSection({
53
53
  Link,
54
54
  {
55
55
  href: rewardsHref,
56
- className: "mt-auto inline-flex items-center justify-center gap-2 rounded-xl bg-gradient-to-r from-brand-blue to-brand-purple px-5 py-2.5 text-sm font-semibold text-white hover:opacity-90 transition-opacity",
56
+ className: "mt-auto inline-flex items-center justify-center gap-2 rounded-xl bg-gradient-to-r from-brand-rose to-brand-orange px-5 py-2.5 text-sm font-semibold text-white hover:opacity-90 transition-opacity",
57
57
  children: [
58
58
  "Start earning XP",
59
59
  /* @__PURE__ */ jsx(ArrowRight, { className: "h-3.5 w-3.5" })
@@ -67,7 +67,7 @@ function CommunityRewardsSection({
67
67
  href: creatorHref(entry.address),
68
68
  className: "group relative rounded-xl border border-border/40 bg-muted/20 hover:bg-muted/40 hover:border-border/70 overflow-hidden transition-all flex flex-col justify-between p-4",
69
69
  children: [
70
- /* @__PURE__ */ jsx("div", { className: "absolute inset-x-0 top-0 h-[3px] bg-gradient-to-r from-brand-blue to-brand-purple" }),
70
+ /* @__PURE__ */ jsx("div", { className: "absolute inset-x-0 top-0 h-[3px] bg-gradient-to-r from-brand-rose to-brand-orange" }),
71
71
  /* @__PURE__ */ jsxs("div", { className: "space-y-0.5 pt-1", children: [
72
72
  /* @__PURE__ */ jsx("p", { className: "text-2xl font-black tabular-nums leading-none", children: entry.totalXp.toLocaleString() }),
73
73
  /* @__PURE__ */ jsx("p", { className: "text-[11px] 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 { Sparkles, 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\nconst INFO_TILES = [\n { value: \"50\", label: \"Levels\" },\n { value: \"XP\", label: \"Every action\" },\n { value: \"Fund\", label: \"Distribution\" },\n];\n\nexport function CommunityRewardsSection({\n entries,\n isLoading = false,\n rewardsHref,\n creatorHref,\n}: CommunityRewardsSectionProps) {\n return (\n <section className=\"grid lg:grid-cols-2 gap-px bg-border/40 rounded-2xl overflow-hidden\">\n\n {/* Left — info panel */}\n <div className=\"bg-card px-7 py-8 flex flex-col gap-6\">\n <div className=\"flex items-center gap-2.5\">\n <div className=\"flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-brand-blue to-brand-purple text-white shrink-0\">\n <Sparkles className=\"h-4 w-4\" />\n </div>\n <h2 className=\"text-base font-black\">Community Rewards</h2>\n </div>\n\n <p className=\"text-sm font-semibold text-muted-foreground leading-snug\">\n Earn XP. Share the Creator&apos;s Fund.\n </p>\n\n {/* Visual info tiles */}\n <div className=\"grid grid-cols-3 gap-2\">\n {INFO_TILES.map(({ value, label }) => (\n <div\n key={label}\n className=\"rounded-xl border border-border/50 bg-muted/30 px-3 py-3.5 flex flex-col items-center text-center gap-1\"\n >\n <span className=\"text-xl font-black\">{value}</span>\n <span className=\"text-[10px] text-muted-foreground leading-tight\">{label}</span>\n </div>\n ))}\n </div>\n\n {/* Earn action pills */}\n <div className=\"flex flex-wrap gap-2\">\n {EARN_ACTIONS.map(({ icon: Icon, label }) => (\n <div\n key={label}\n className=\"flex items-center gap-1.5 rounded-full border border-border/50 bg-muted/40 px-3 py-1 text-xs font-medium text-muted-foreground\"\n >\n <Icon className=\"h-3 w-3\" />\n {label}\n </div>\n ))}\n </div>\n\n <Link\n href={rewardsHref}\n className=\"mt-auto inline-flex items-center justify-center gap-2 rounded-xl bg-gradient-to-r from-brand-blue to-brand-purple px-5 py-2.5 text-sm font-semibold text-white hover:opacity-90 transition-opacity\"\n >\n Start earning XP\n <ArrowRight className=\"h-3.5 w-3.5\" />\n </Link>\n </div>\n\n {/* Right — member cards */}\n <div className=\"bg-card p-5\">\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 border border-border/40 bg-muted/20 hover:bg-muted/40 hover:border-border/70 overflow-hidden transition-all flex flex-col justify-between p-4\"\n >\n {/* Brand gradient top rule */}\n <div className=\"absolute inset-x-0 top-0 h-[3px] bg-gradient-to-r from-brand-blue to-brand-purple\" />\n\n {/* XP — hero number */}\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-[11px] text-muted-foreground\">XP earned</p>\n </div>\n\n {/* Address */}\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-muted/20 animate-pulse\" />\n ))}\n </div>\n )}\n </div>\n </section>\n );\n}\n"],"mappings":";AA0CQ,SAEI,KAFJ;AAxCR,OAAO,UAAU;AACjB,SAAS,UAAU,YAAY,KAAK,SAAS,aAAa,qBAAqB;AAC/E,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;AAEA,MAAM,aAAa;AAAA,EACjB,EAAE,OAAO,MAAM,OAAO,SAAS;AAAA,EAC/B,EAAE,OAAO,MAAM,OAAO,eAAe;AAAA,EACrC,EAAE,OAAO,QAAQ,OAAO,eAAe;AACzC;AAEO,SAAS,wBAAwB;AAAA,EACtC;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA;AACF,GAAiC;AAC/B,SACE,qBAAC,aAAQ,WAAU,uEAGjB;AAAA,yBAAC,SAAI,WAAU,yCACb;AAAA,2BAAC,SAAI,WAAU,6BACb;AAAA,4BAAC,SAAI,WAAU,6HACb,8BAAC,YAAS,WAAU,WAAU,GAChC;AAAA,QACA,oBAAC,QAAG,WAAU,wBAAuB,+BAAiB;AAAA,SACxD;AAAA,MAEA,oBAAC,OAAE,WAAU,4DAA2D,gDAExE;AAAA,MAGA,oBAAC,SAAI,WAAU,0BACZ,qBAAW,IAAI,CAAC,EAAE,OAAO,MAAM,MAC9B;AAAA,QAAC;AAAA;AAAA,UAEC,WAAU;AAAA,UAEV;AAAA,gCAAC,UAAK,WAAU,sBAAsB,iBAAM;AAAA,YAC5C,oBAAC,UAAK,WAAU,mDAAmD,iBAAM;AAAA;AAAA;AAAA,QAJpE;AAAA,MAKP,CACD,GACH;AAAA,MAGA,oBAAC,SAAI,WAAU,wBACZ,uBAAa,IAAI,CAAC,EAAE,MAAM,MAAM,MAAM,MACrC;AAAA,QAAC;AAAA;AAAA,UAEC,WAAU;AAAA,UAEV;AAAA,gCAAC,QAAK,WAAU,WAAU;AAAA,YACzB;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,IAGA,oBAAC,SAAI,WAAU,eACZ,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,QAGV;AAAA,8BAAC,SAAI,WAAU,qFAAoF;AAAA,UAGnG,qBAAC,SAAI,WAAU,oBACb;AAAA,gCAAC,OAAE,WAAU,iDACV,gBAAM,QAAQ,eAAe,GAChC;AAAA,YACA,oBAAC,OAAE,WAAU,qCAAoC,uBAAS;AAAA,aAC5D;AAAA,UAGA;AAAA,YAAC;AAAA;AAAA,cACC,SAAS,MAAM;AAAA,cACf,OAAO;AAAA,cACP,UAAU;AAAA,cACV,WAAU;AAAA;AAAA,UACZ;AAAA;AAAA;AAAA,MArBK,MAAM;AAAA,IAsBb,CACD,GACH,IAEA,oBAAC,SAAI,WAAU,iCACZ,gBAAM,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,MACjC,oBAAC,SAAY,WAAU,wDAAb,CAAkE,CAC7E,GACH,GAEJ;AAAA,KACF;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../src/components/community-rewards-section.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"next/link\";\nimport { Sparkles, 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\nconst INFO_TILES = [\n { value: \"50\", label: \"Levels\" },\n { value: \"XP\", label: \"Every action\" },\n { value: \"Fund\", label: \"Distribution\" },\n];\n\nexport function CommunityRewardsSection({\n entries,\n isLoading = false,\n rewardsHref,\n creatorHref,\n}: CommunityRewardsSectionProps) {\n return (\n <section className=\"grid lg:grid-cols-2 gap-px bg-border/40 rounded-2xl overflow-hidden\">\n\n {/* Left — info panel */}\n <div className=\"bg-card px-7 py-8 flex flex-col gap-6\">\n <div className=\"flex items-center gap-2.5\">\n <div className=\"flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-brand-rose to-brand-orange text-white shrink-0\">\n <Sparkles className=\"h-4 w-4\" />\n </div>\n <h2 className=\"text-base font-black\">Community Rewards</h2>\n </div>\n\n <p className=\"text-sm font-semibold text-muted-foreground leading-snug\">\n Earn XP. Share the Creator&apos;s Fund.\n </p>\n\n {/* Visual info tiles */}\n <div className=\"grid grid-cols-3 gap-2\">\n {INFO_TILES.map(({ value, label }) => (\n <div\n key={label}\n className=\"rounded-xl border border-border/50 bg-muted/30 px-3 py-3.5 flex flex-col items-center text-center gap-1\"\n >\n <span className=\"text-xl font-black\">{value}</span>\n <span className=\"text-[10px] text-muted-foreground leading-tight\">{label}</span>\n </div>\n ))}\n </div>\n\n {/* Earn action pills */}\n <div className=\"flex flex-wrap gap-2\">\n {EARN_ACTIONS.map(({ icon: Icon, label }) => (\n <div\n key={label}\n className=\"flex items-center gap-1.5 rounded-full border border-border/50 bg-muted/40 px-3 py-1 text-xs font-medium text-muted-foreground\"\n >\n <Icon className=\"h-3 w-3\" />\n {label}\n </div>\n ))}\n </div>\n\n <Link\n href={rewardsHref}\n className=\"mt-auto inline-flex items-center justify-center gap-2 rounded-xl bg-gradient-to-r from-brand-rose to-brand-orange px-5 py-2.5 text-sm font-semibold text-white hover:opacity-90 transition-opacity\"\n >\n Start earning XP\n <ArrowRight className=\"h-3.5 w-3.5\" />\n </Link>\n </div>\n\n {/* Right — member cards */}\n <div className=\"bg-card p-5\">\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 border border-border/40 bg-muted/20 hover:bg-muted/40 hover:border-border/70 overflow-hidden transition-all flex flex-col justify-between p-4\"\n >\n {/* Brand gradient top rule */}\n <div className=\"absolute inset-x-0 top-0 h-[3px] bg-gradient-to-r from-brand-rose to-brand-orange\" />\n\n {/* XP — hero number */}\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-[11px] text-muted-foreground\">XP earned</p>\n </div>\n\n {/* Address */}\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-muted/20 animate-pulse\" />\n ))}\n </div>\n )}\n </div>\n </section>\n );\n}\n"],"mappings":";AA0CQ,SAEI,KAFJ;AAxCR,OAAO,UAAU;AACjB,SAAS,UAAU,YAAY,KAAK,SAAS,aAAa,qBAAqB;AAC/E,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;AAEA,MAAM,aAAa;AAAA,EACjB,EAAE,OAAO,MAAM,OAAO,SAAS;AAAA,EAC/B,EAAE,OAAO,MAAM,OAAO,eAAe;AAAA,EACrC,EAAE,OAAO,QAAQ,OAAO,eAAe;AACzC;AAEO,SAAS,wBAAwB;AAAA,EACtC;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA;AACF,GAAiC;AAC/B,SACE,qBAAC,aAAQ,WAAU,uEAGjB;AAAA,yBAAC,SAAI,WAAU,yCACb;AAAA,2BAAC,SAAI,WAAU,6BACb;AAAA,4BAAC,SAAI,WAAU,6HACb,8BAAC,YAAS,WAAU,WAAU,GAChC;AAAA,QACA,oBAAC,QAAG,WAAU,wBAAuB,+BAAiB;AAAA,SACxD;AAAA,MAEA,oBAAC,OAAE,WAAU,4DAA2D,gDAExE;AAAA,MAGA,oBAAC,SAAI,WAAU,0BACZ,qBAAW,IAAI,CAAC,EAAE,OAAO,MAAM,MAC9B;AAAA,QAAC;AAAA;AAAA,UAEC,WAAU;AAAA,UAEV;AAAA,gCAAC,UAAK,WAAU,sBAAsB,iBAAM;AAAA,YAC5C,oBAAC,UAAK,WAAU,mDAAmD,iBAAM;AAAA;AAAA;AAAA,QAJpE;AAAA,MAKP,CACD,GACH;AAAA,MAGA,oBAAC,SAAI,WAAU,wBACZ,uBAAa,IAAI,CAAC,EAAE,MAAM,MAAM,MAAM,MACrC;AAAA,QAAC;AAAA;AAAA,UAEC,WAAU;AAAA,UAEV;AAAA,gCAAC,QAAK,WAAU,WAAU;AAAA,YACzB;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,IAGA,oBAAC,SAAI,WAAU,eACZ,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,QAGV;AAAA,8BAAC,SAAI,WAAU,qFAAoF;AAAA,UAGnG,qBAAC,SAAI,WAAU,oBACb;AAAA,gCAAC,OAAE,WAAU,iDACV,gBAAM,QAAQ,eAAe,GAChC;AAAA,YACA,oBAAC,OAAE,WAAU,qCAAoC,uBAAS;AAAA,aAC5D;AAAA,UAGA;AAAA,YAAC;AAAA;AAAA,cACC,SAAS,MAAM;AAAA,cACf,OAAO;AAAA,cACP,UAAU;AAAA,cACV,WAAU;AAAA;AAAA,UACZ;AAAA;AAAA;AAAA,MArBK,MAAM;AAAA,IAsBb,CACD,GACH,IAEA,oBAAC,SAAI,WAAU,iCACZ,gBAAM,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,MACjC,oBAAC,SAAY,WAAU,wDAAb,CAAkE,CAC7E,GACH,GAEJ;AAAA,KACF;AAEJ;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@medialane/ui",
3
- "version": "0.48.0",
3
+ "version": "0.49.0",
4
4
  "description": "Shared UI components for Medialane apps",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",