@medialane/ui 0.36.0 → 0.37.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.
- package/dist/components/load-more-sentinel.cjs +54 -0
- package/dist/components/load-more-sentinel.cjs.map +1 -0
- package/dist/components/load-more-sentinel.d.cts +17 -0
- package/dist/components/load-more-sentinel.d.ts +17 -0
- package/dist/components/load-more-sentinel.js +30 -0
- package/dist/components/load-more-sentinel.js.map +1 -0
- package/dist/components/rewards/badge-shelf.cjs +90 -0
- package/dist/components/rewards/badge-shelf.cjs.map +1 -0
- package/dist/components/rewards/badge-shelf.d.cts +24 -0
- package/dist/components/rewards/badge-shelf.d.ts +24 -0
- package/dist/components/rewards/badge-shelf.js +56 -0
- package/dist/components/rewards/badge-shelf.js.map +1 -0
- package/dist/components/rewards/leaderboard-table.cjs +96 -0
- package/dist/components/rewards/leaderboard-table.cjs.map +1 -0
- package/dist/components/rewards/leaderboard-table.d.cts +34 -0
- package/dist/components/rewards/leaderboard-table.d.ts +34 -0
- package/dist/components/rewards/leaderboard-table.js +71 -0
- package/dist/components/rewards/leaderboard-table.js.map +1 -0
- package/dist/components/rewards/level-badge.cjs +60 -0
- package/dist/components/rewards/level-badge.cjs.map +1 -0
- package/dist/components/rewards/level-badge.d.cts +14 -0
- package/dist/components/rewards/level-badge.d.ts +14 -0
- package/dist/components/rewards/level-badge.js +36 -0
- package/dist/components/rewards/level-badge.js.map +1 -0
- package/dist/components/rewards/level-ladder.cjs +54 -0
- package/dist/components/rewards/level-ladder.cjs.map +1 -0
- package/dist/components/rewards/level-ladder.d.cts +17 -0
- package/dist/components/rewards/level-ladder.d.ts +17 -0
- package/dist/components/rewards/level-ladder.js +30 -0
- package/dist/components/rewards/level-ladder.js.map +1 -0
- package/dist/components/rewards/score-summary-card.cjs +83 -0
- package/dist/components/rewards/score-summary-card.cjs.map +1 -0
- package/dist/components/rewards/score-summary-card.d.cts +26 -0
- package/dist/components/rewards/score-summary-card.d.ts +26 -0
- package/dist/components/rewards/score-summary-card.js +59 -0
- package/dist/components/rewards/score-summary-card.js.map +1 -0
- package/dist/components/rewards/xp-progress.cjs +81 -0
- package/dist/components/rewards/xp-progress.cjs.map +1 -0
- package/dist/components/rewards/xp-progress.d.cts +18 -0
- package/dist/components/rewards/xp-progress.d.ts +18 -0
- package/dist/components/rewards/xp-progress.js +57 -0
- package/dist/components/rewards/xp-progress.js.map +1 -0
- package/dist/components/rewards/xp-toast-content.cjs +49 -0
- package/dist/components/rewards/xp-toast-content.cjs.map +1 -0
- package/dist/components/rewards/xp-toast-content.d.cts +14 -0
- package/dist/components/rewards/xp-toast-content.d.ts +14 -0
- package/dist/components/rewards/xp-toast-content.js +25 -0
- package/dist/components/rewards/xp-toast-content.js.map +1 -0
- package/dist/index.cjs +3 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +10 -128
- package/dist/index.d.ts +10 -128
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../../utils/cn.js";
|
|
3
|
+
function progressPct({ totalXp, levelXp, nextLevelXp }) {
|
|
4
|
+
if (nextLevelXp === null || nextLevelXp <= levelXp) return 100;
|
|
5
|
+
return Math.min(100, Math.max(0, Math.round((totalXp - levelXp) / (nextLevelXp - levelXp) * 100)));
|
|
6
|
+
}
|
|
7
|
+
function XpProgress({ totalXp, levelXp, nextLevelXp, badgeColor, variant = "bar", size = 40, className }) {
|
|
8
|
+
const pct = progressPct({ totalXp, levelXp, nextLevelXp });
|
|
9
|
+
if (variant === "ring") {
|
|
10
|
+
const stroke = Math.max(2.5, size / 12);
|
|
11
|
+
const radius = (size - stroke) / 2;
|
|
12
|
+
const circumference = 2 * Math.PI * radius;
|
|
13
|
+
return /* @__PURE__ */ jsxs(
|
|
14
|
+
"svg",
|
|
15
|
+
{
|
|
16
|
+
width: size,
|
|
17
|
+
height: size,
|
|
18
|
+
viewBox: `0 0 ${size} ${size}`,
|
|
19
|
+
className: cn("shrink-0 -rotate-90", className),
|
|
20
|
+
role: "img",
|
|
21
|
+
"aria-label": `${pct}% toward the next level`,
|
|
22
|
+
children: [
|
|
23
|
+
/* @__PURE__ */ jsx("circle", { cx: size / 2, cy: size / 2, r: radius, fill: "none", strokeWidth: stroke, className: "stroke-border" }),
|
|
24
|
+
/* @__PURE__ */ jsx(
|
|
25
|
+
"circle",
|
|
26
|
+
{
|
|
27
|
+
cx: size / 2,
|
|
28
|
+
cy: size / 2,
|
|
29
|
+
r: radius,
|
|
30
|
+
fill: "none",
|
|
31
|
+
strokeWidth: stroke,
|
|
32
|
+
strokeLinecap: "round",
|
|
33
|
+
stroke: badgeColor,
|
|
34
|
+
strokeDasharray: circumference,
|
|
35
|
+
strokeDashoffset: circumference * (1 - pct / 100)
|
|
36
|
+
}
|
|
37
|
+
)
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
return /* @__PURE__ */ jsx(
|
|
43
|
+
"div",
|
|
44
|
+
{
|
|
45
|
+
className: cn("h-2 w-full overflow-hidden rounded-full bg-border/60", className),
|
|
46
|
+
role: "progressbar",
|
|
47
|
+
"aria-valuenow": pct,
|
|
48
|
+
"aria-valuemin": 0,
|
|
49
|
+
"aria-valuemax": 100,
|
|
50
|
+
children: /* @__PURE__ */ jsx("div", { className: "h-full rounded-full transition-[width]", style: { width: `${pct}%`, backgroundColor: badgeColor } })
|
|
51
|
+
}
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
export {
|
|
55
|
+
XpProgress
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=xp-progress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/rewards/xp-progress.tsx"],"sourcesContent":["import { cn } from \"../../utils/cn.js\";\n\nexport interface XpProgressProps {\n totalXp: number;\n /** XP required to reach the current level. */\n levelXp: number;\n /** XP required for the next level; null at max level (renders full). */\n nextLevelXp: number | null;\n badgeColor: string;\n variant?: \"bar\" | \"ring\";\n /** Ring diameter in px (ring variant only). */\n size?: number;\n className?: string;\n}\n\nfunction progressPct({ totalXp, levelXp, nextLevelXp }: Pick<XpProgressProps, \"totalXp\" | \"levelXp\" | \"nextLevelXp\">): number {\n if (nextLevelXp === null || nextLevelXp <= levelXp) return 100;\n return Math.min(100, Math.max(0, Math.round(((totalXp - levelXp) / (nextLevelXp - levelXp)) * 100)));\n}\n\n/** XP progress toward the next level, as a rounded bar or an SVG ring. */\nexport function XpProgress({ totalXp, levelXp, nextLevelXp, badgeColor, variant = \"bar\", size = 40, className }: XpProgressProps) {\n const pct = progressPct({ totalXp, levelXp, nextLevelXp });\n\n if (variant === \"ring\") {\n const stroke = Math.max(2.5, size / 12);\n const radius = (size - stroke) / 2;\n const circumference = 2 * Math.PI * radius;\n return (\n <svg\n width={size}\n height={size}\n viewBox={`0 0 ${size} ${size}`}\n className={cn(\"shrink-0 -rotate-90\", className)}\n role=\"img\"\n aria-label={`${pct}% toward the next level`}\n >\n <circle cx={size / 2} cy={size / 2} r={radius} fill=\"none\" strokeWidth={stroke} className=\"stroke-border\" />\n <circle\n cx={size / 2}\n cy={size / 2}\n r={radius}\n fill=\"none\"\n strokeWidth={stroke}\n strokeLinecap=\"round\"\n stroke={badgeColor}\n strokeDasharray={circumference}\n strokeDashoffset={circumference * (1 - pct / 100)}\n />\n </svg>\n );\n }\n\n return (\n <div\n className={cn(\"h-2 w-full overflow-hidden rounded-full bg-border/60\", className)}\n role=\"progressbar\"\n aria-valuenow={pct}\n aria-valuemin={0}\n aria-valuemax={100}\n >\n <div className=\"h-full rounded-full transition-[width]\" style={{ width: `${pct}%`, backgroundColor: badgeColor }} />\n </div>\n );\n}\n"],"mappings":"AA6BM,SAQE,KARF;AA7BN,SAAS,UAAU;AAenB,SAAS,YAAY,EAAE,SAAS,SAAS,YAAY,GAAyE;AAC5H,MAAI,gBAAgB,QAAQ,eAAe,QAAS,QAAO;AAC3D,SAAO,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,KAAK,OAAQ,UAAU,YAAY,cAAc,WAAY,GAAG,CAAC,CAAC;AACrG;AAGO,SAAS,WAAW,EAAE,SAAS,SAAS,aAAa,YAAY,UAAU,OAAO,OAAO,IAAI,UAAU,GAAoB;AAChI,QAAM,MAAM,YAAY,EAAE,SAAS,SAAS,YAAY,CAAC;AAEzD,MAAI,YAAY,QAAQ;AACtB,UAAM,SAAS,KAAK,IAAI,KAAK,OAAO,EAAE;AACtC,UAAM,UAAU,OAAO,UAAU;AACjC,UAAM,gBAAgB,IAAI,KAAK,KAAK;AACpC,WACE;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,SAAS,OAAO,IAAI,IAAI,IAAI;AAAA,QAC5B,WAAW,GAAG,uBAAuB,SAAS;AAAA,QAC9C,MAAK;AAAA,QACL,cAAY,GAAG,GAAG;AAAA,QAElB;AAAA,8BAAC,YAAO,IAAI,OAAO,GAAG,IAAI,OAAO,GAAG,GAAG,QAAQ,MAAK,QAAO,aAAa,QAAQ,WAAU,iBAAgB;AAAA,UAC1G;AAAA,YAAC;AAAA;AAAA,cACC,IAAI,OAAO;AAAA,cACX,IAAI,OAAO;AAAA,cACX,GAAG;AAAA,cACH,MAAK;AAAA,cACL,aAAa;AAAA,cACb,eAAc;AAAA,cACd,QAAQ;AAAA,cACR,iBAAiB;AAAA,cACjB,kBAAkB,iBAAiB,IAAI,MAAM;AAAA;AAAA,UAC/C;AAAA;AAAA;AAAA,IACF;AAAA,EAEJ;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,wDAAwD,SAAS;AAAA,MAC/E,MAAK;AAAA,MACL,iBAAe;AAAA,MACf,iBAAe;AAAA,MACf,iBAAe;AAAA,MAEf,8BAAC,SAAI,WAAU,0CAAyC,OAAO,EAAE,OAAO,GAAG,GAAG,KAAK,iBAAiB,WAAW,GAAG;AAAA;AAAA,EACpH;AAEJ;","names":[]}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var xp_toast_content_exports = {};
|
|
20
|
+
__export(xp_toast_content_exports, {
|
|
21
|
+
XpToastContent: () => XpToastContent
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(xp_toast_content_exports);
|
|
24
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
25
|
+
function XpToastContent({ xp, label, color = "#8b5cf6" }) {
|
|
26
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center gap-2.5", children: [
|
|
27
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
28
|
+
"span",
|
|
29
|
+
{
|
|
30
|
+
className: "flex h-8 shrink-0 items-center rounded-full border px-2.5 text-sm font-black tabular-nums",
|
|
31
|
+
style: { borderColor: `${color}60`, backgroundColor: `${color}18`, color },
|
|
32
|
+
children: [
|
|
33
|
+
"+",
|
|
34
|
+
xp,
|
|
35
|
+
" XP"
|
|
36
|
+
]
|
|
37
|
+
}
|
|
38
|
+
),
|
|
39
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "min-w-0", children: [
|
|
40
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "truncate text-sm font-semibold", children: label }),
|
|
41
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-xs text-muted-foreground", children: "Counts toward your score soon" })
|
|
42
|
+
] })
|
|
43
|
+
] });
|
|
44
|
+
}
|
|
45
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
46
|
+
0 && (module.exports = {
|
|
47
|
+
XpToastContent
|
|
48
|
+
});
|
|
49
|
+
//# sourceMappingURL=xp-toast-content.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/rewards/xp-toast-content.tsx"],"sourcesContent":["export interface XpToastContentProps {\n xp: number;\n /** The action's configured label, e.g. \"Mint an IP asset\". */\n label: string;\n color?: string;\n}\n\n/** Toast body for optimistic XP feedback: \"+20 XP · Mint an IP asset\".\n * Scores recompute on a schedule, so this shows the action's configured\n * value — the caller must never present it as a live balance. */\nexport function XpToastContent({ xp, label, color = \"#8b5cf6\" }: XpToastContentProps) {\n return (\n <div className=\"flex items-center gap-2.5\">\n <span\n className=\"flex h-8 shrink-0 items-center rounded-full border px-2.5 text-sm font-black tabular-nums\"\n style={{ borderColor: `${color}60`, backgroundColor: `${color}18`, color }}\n >\n +{xp} XP\n </span>\n <div className=\"min-w-0\">\n <p className=\"truncate text-sm font-semibold\">{label}</p>\n <p className=\"text-xs text-muted-foreground\">Counts toward your score soon</p>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAaM;AAHC,SAAS,eAAe,EAAE,IAAI,OAAO,QAAQ,UAAU,GAAwB;AACpF,SACE,6CAAC,SAAI,WAAU,6BACb;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,OAAO,EAAE,aAAa,GAAG,KAAK,MAAM,iBAAiB,GAAG,KAAK,MAAM,MAAM;AAAA,QAC1E;AAAA;AAAA,UACG;AAAA,UAAG;AAAA;AAAA;AAAA,IACP;AAAA,IACA,6CAAC,SAAI,WAAU,WACb;AAAA,kDAAC,OAAE,WAAU,kCAAkC,iBAAM;AAAA,MACrD,4CAAC,OAAE,WAAU,iCAAgC,2CAA6B;AAAA,OAC5E;AAAA,KACF;AAEJ;","names":[]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
interface XpToastContentProps {
|
|
4
|
+
xp: number;
|
|
5
|
+
/** The action's configured label, e.g. "Mint an IP asset". */
|
|
6
|
+
label: string;
|
|
7
|
+
color?: string;
|
|
8
|
+
}
|
|
9
|
+
/** Toast body for optimistic XP feedback: "+20 XP · Mint an IP asset".
|
|
10
|
+
* Scores recompute on a schedule, so this shows the action's configured
|
|
11
|
+
* value — the caller must never present it as a live balance. */
|
|
12
|
+
declare function XpToastContent({ xp, label, color }: XpToastContentProps): react_jsx_runtime.JSX.Element;
|
|
13
|
+
|
|
14
|
+
export { XpToastContent, type XpToastContentProps };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
interface XpToastContentProps {
|
|
4
|
+
xp: number;
|
|
5
|
+
/** The action's configured label, e.g. "Mint an IP asset". */
|
|
6
|
+
label: string;
|
|
7
|
+
color?: string;
|
|
8
|
+
}
|
|
9
|
+
/** Toast body for optimistic XP feedback: "+20 XP · Mint an IP asset".
|
|
10
|
+
* Scores recompute on a schedule, so this shows the action's configured
|
|
11
|
+
* value — the caller must never present it as a live balance. */
|
|
12
|
+
declare function XpToastContent({ xp, label, color }: XpToastContentProps): react_jsx_runtime.JSX.Element;
|
|
13
|
+
|
|
14
|
+
export { XpToastContent, type XpToastContentProps };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
function XpToastContent({ xp, label, color = "#8b5cf6" }) {
|
|
3
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2.5", children: [
|
|
4
|
+
/* @__PURE__ */ jsxs(
|
|
5
|
+
"span",
|
|
6
|
+
{
|
|
7
|
+
className: "flex h-8 shrink-0 items-center rounded-full border px-2.5 text-sm font-black tabular-nums",
|
|
8
|
+
style: { borderColor: `${color}60`, backgroundColor: `${color}18`, color },
|
|
9
|
+
children: [
|
|
10
|
+
"+",
|
|
11
|
+
xp,
|
|
12
|
+
" XP"
|
|
13
|
+
]
|
|
14
|
+
}
|
|
15
|
+
),
|
|
16
|
+
/* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
|
|
17
|
+
/* @__PURE__ */ jsx("p", { className: "truncate text-sm font-semibold", children: label }),
|
|
18
|
+
/* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: "Counts toward your score soon" })
|
|
19
|
+
] })
|
|
20
|
+
] });
|
|
21
|
+
}
|
|
22
|
+
export {
|
|
23
|
+
XpToastContent
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=xp-toast-content.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/rewards/xp-toast-content.tsx"],"sourcesContent":["export interface XpToastContentProps {\n xp: number;\n /** The action's configured label, e.g. \"Mint an IP asset\". */\n label: string;\n color?: string;\n}\n\n/** Toast body for optimistic XP feedback: \"+20 XP · Mint an IP asset\".\n * Scores recompute on a schedule, so this shows the action's configured\n * value — the caller must never present it as a live balance. */\nexport function XpToastContent({ xp, label, color = \"#8b5cf6\" }: XpToastContentProps) {\n return (\n <div className=\"flex items-center gap-2.5\">\n <span\n className=\"flex h-8 shrink-0 items-center rounded-full border px-2.5 text-sm font-black tabular-nums\"\n style={{ borderColor: `${color}60`, backgroundColor: `${color}18`, color }}\n >\n +{xp} XP\n </span>\n <div className=\"min-w-0\">\n <p className=\"truncate text-sm font-semibold\">{label}</p>\n <p className=\"text-xs text-muted-foreground\">Counts toward your score soon</p>\n </div>\n </div>\n );\n}\n"],"mappings":"AAaM,SAOE,KAPF;AAHC,SAAS,eAAe,EAAE,IAAI,OAAO,QAAQ,UAAU,GAAwB;AACpF,SACE,qBAAC,SAAI,WAAU,6BACb;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,OAAO,EAAE,aAAa,GAAG,KAAK,MAAM,iBAAiB,GAAG,KAAK,MAAM,MAAM;AAAA,QAC1E;AAAA;AAAA,UACG;AAAA,UAAG;AAAA;AAAA;AAAA,IACP;AAAA,IACA,qBAAC,SAAI,WAAU,WACb;AAAA,0BAAC,OAAE,WAAU,kCAAkC,iBAAM;AAAA,MACrD,oBAAC,OAAE,WAAU,iCAAgC,2CAA6B;AAAA,OAC5E;AAAA,KACF;AAEJ;","names":[]}
|
package/dist/index.cjs
CHANGED
|
@@ -86,6 +86,7 @@ __export(index_exports, {
|
|
|
86
86
|
LevelLadder: () => import_level_ladder.LevelLadder,
|
|
87
87
|
ListingCard: () => import_listing_card.ListingCard,
|
|
88
88
|
ListingCardSkeleton: () => import_listing_card.ListingCardSkeleton,
|
|
89
|
+
LoadMoreSentinel: () => import_load_more_sentinel.LoadMoreSentinel,
|
|
89
90
|
MedialaneIcon: () => import_brand_icon.MedialaneIcon,
|
|
90
91
|
MedialaneLogoFull: () => import_brand_logo.MedialaneLogoFull,
|
|
91
92
|
MotionCard: () => import_motion_primitives.MotionCard,
|
|
@@ -191,6 +192,7 @@ var import_score_summary_card = require("./components/rewards/score-summary-card
|
|
|
191
192
|
var import_leaderboard_table = require("./components/rewards/leaderboard-table.js");
|
|
192
193
|
var import_level_ladder = require("./components/rewards/level-ladder.js");
|
|
193
194
|
var import_xp_toast_content = require("./components/rewards/xp-toast-content.js");
|
|
195
|
+
var import_load_more_sentinel = require("./components/load-more-sentinel.js");
|
|
194
196
|
// Annotate the CommonJS export names for ESM import in node:
|
|
195
197
|
0 && (module.exports = {
|
|
196
198
|
ACTIVITY_MESSAGES,
|
|
@@ -261,6 +263,7 @@ var import_xp_toast_content = require("./components/rewards/xp-toast-content.js"
|
|
|
261
263
|
LevelLadder,
|
|
262
264
|
ListingCard,
|
|
263
265
|
ListingCardSkeleton,
|
|
266
|
+
LoadMoreSentinel,
|
|
264
267
|
MedialaneIcon,
|
|
265
268
|
MedialaneLogoFull,
|
|
266
269
|
MotionCard,
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["// ── Utils ─────────────────────────────────────────────────────────────────────\nexport { cn } from \"./utils/cn.js\";\nexport { formatDisplayPrice, parsePriceDisplay } from \"./utils/format.js\";\nexport { shortenAddress } from \"./utils/address.js\";\nexport { ipfsToHttp } from \"./utils/ipfs.js\";\nexport { licenseSummary } from \"./utils/license-summary.js\";\n\n// ── Data (server-safe — no React, safe in Server Components) ──────────────────\nexport { IP_TYPE_DATA, IP_TYPE_DATA_MAP } from \"./data/ip-types.js\";\nexport type { IpTypeData } from \"./data/ip-types.js\";\nexport {\n IP_TYPES, LICENSE_TYPES, GEOGRAPHIC_SCOPES, AI_POLICIES,\n DERIVATIVES_OPTIONS, LICENSE_TRAIT_TYPES,\n} from \"./data/ip.js\";\nexport type { IPType, LicenseType } from \"./data/ip.js\";\nexport {\n IP_TEMPLATES, EMBED_PLATFORM_META, SOCIAL_PLATFORM_META, TEMPLATE_TRAIT_TYPES, DOC_UPLOAD,\n} from \"./data/ip-templates.js\";\nexport type { EmbedPlatform, SocialPlatform, TraitSuggestion, IPTemplate, DocUploadConfig } from \"./data/ip-templates.js\";\nexport { IPTypeDisplay } from \"./components/ip-type-display.js\";\nexport { AssetOverviewContent } from \"./components/asset-overview-content.js\";\nexport { AssetLicenseSummary } from \"./components/asset-license-summary.js\";\nexport { AssetMarketsTab } from \"./components/asset-markets-tab.js\";\nexport { ParentAttributionBanner } from \"./components/parent-attribution-banner.js\";\nexport type { ParentBannerProps } from \"./components/parent-attribution-banner.js\";\nexport { AssetMediaColumn, AssetHeaderBlock, buildEditionStats } from \"./components/asset-top-sections.js\";\nexport { AssetCollectionBar } from \"./components/asset-collection-bar.js\";\nexport type { AssetCollectionBarProps, AssetCollectionBarSibling } from \"./components/asset-collection-bar.js\";\nexport { AssetUtilityIcons } from \"./components/asset-utility-icons.js\";\nexport type { AssetUtilityIconsProps } from \"./components/asset-utility-icons.js\";\nexport { AssetMarketplacePanel } from \"./components/asset-marketplace-panel.js\";\nexport type { AssetMarketplacePanelProps, ApiOrderLike } from \"./components/asset-marketplace-panel.js\";\nexport { BRAND } from \"./data/brand.js\";\n\n// ── Components (client-only — all have \"use client\") ─────────────────────────\nexport { CurrencyIcon, CurrencyAmount } from \"./components/currency-icon.js\";\nexport type { CurrencyIconProps, CurrencyAmountProps } from \"./components/currency-icon.js\";\n\nexport { IpTypeBadge, IP_TYPE_CONFIG, IP_TYPE_MAP } from \"./components/ip-type-badge.js\";\nexport type { IpTypeBadgeProps, IpTypeConfig } from \"./components/ip-type-badge.js\";\n\nexport { AddressDisplay } from \"./components/address-display.js\";\nexport type { AddressDisplayProps } from \"./components/address-display.js\";\n\nexport { MedialaneIcon } from \"./components/brand-icon.js\";\nexport type { MedialaneIconProps } from \"./components/brand-icon.js\";\nexport { MedialaneLogoFull } from \"./components/brand-logo.js\";\nexport type { MedialaneLogoFullProps } from \"./components/brand-logo.js\";\n\n// ── v0.2 additions ────────────────────────────────────────────────────────────\nexport { MotionCard, FadeIn, Stagger, StaggerItem, KineticWords, SPRING, EASE_OUT } from \"./components/motion-primitives.js\";\nexport { PageContainer } from \"./components/page-container.js\";\nexport type { PageContainerProps } from \"./components/page-container.js\";\nexport { ScrollSection } from \"./components/scroll-section.js\";\nexport type { ScrollSectionProps } from \"./components/scroll-section.js\";\nexport { ShareButton } from \"./components/share-button.js\";\nexport type { ShareButtonProps } from \"./components/share-button.js\";\nexport { CollectionCard, CollectionCardSkeleton } from \"./components/collection-card.js\";\nexport type { CollectionCardProps } from \"./components/collection-card.js\";\nexport { TokenCard, TokenCardSkeleton } from \"./components/token-card.js\";\nexport type { TokenCardProps, RarityTier } from \"./components/token-card.js\";\nexport { AssetCard, AssetCardSkeleton } from \"./components/asset-card.js\";\nexport type { AssetCardProps, AssetCardPrice } from \"./components/asset-card.js\";\n// ── Coin discovery (chain-agnostic; price/data/href injected by the app) ─────\nexport {\n coinKind, formatCoinPrice, formatFdv,\n type CoinKind, type CoinCollectionLike, type CoinPriceLike,\n} from \"./data/coins.js\";\nexport { CoinCard, CoinRow, CoinCardSkeleton, type UseCoinPrice, type CoinTileProps } from \"./components/coin-card.js\";\nexport {\n CoinsExplorer,\n type CoinsExplorerProps, type CoinFilter, type CoinSort, type UseCoins,\n} from \"./components/coins-explorer.js\";\n\n// ── v0.3 additions ────────────────────────────────────────────────────────────\nexport { timeAgo, timeUntil } from \"./utils/time.js\";\nexport { ACTIVITY_TYPE_CONFIG, TYPE_FILTERS } from \"./data/activity.js\";\nexport type { ActivityTypeConfig } from \"./data/activity.js\";\nexport { HeroSlider, HeroSliderSkeleton } from \"./components/hero-slider.js\";\nexport type { HeroSliderProps } from \"./components/hero-slider.js\";\nexport { ActivityTicker } from \"./components/activity-ticker.js\";\nexport type { ActivityTickerProps } from \"./components/activity-ticker.js\";\nexport { ListingCard, ListingCardSkeleton } from \"./components/listing-card.js\";\nexport type { ListingCardProps } from \"./components/listing-card.js\";\nexport { ActivityRow } from \"./components/activity-row.js\";\nexport type { ActivityRowProps } from \"./components/activity-row.js\";\nexport { ActivityFeedShell } from \"./components/activity-feed-shell.js\";\nexport type { ActivityFeedShellProps } from \"./components/activity-feed-shell.js\";\nexport { CtaCardGrid } from \"./components/cta-card-grid.js\";\nexport type { CtaCardGridProps, CtaCardItem } from \"./components/cta-card-grid.js\";\n\n// ── v0.3.2 additions ─────────────────────────────────────────────────────────\nexport { DiscoverHero } from \"./components/discover-hero.js\";\nexport type { DiscoverHeroProps } from \"./components/discover-hero.js\";\nexport { FeaturedCarousel, FeaturedCarouselSkeleton } from \"./components/featured-carousel.js\";\nexport type { FeaturedCarouselProps } from \"./components/featured-carousel.js\";\nexport { DiscoverCollectionsStrip } from \"./components/discover-collections-strip.js\";\nexport type { DiscoverCollectionsStripProps } from \"./components/discover-collections-strip.js\";\nexport { DiscoverCreatorsStrip } from \"./components/discover-creators-strip.js\";\nexport type { DiscoverCreatorsStripProps } from \"./components/discover-creators-strip.js\";\nexport { DiscoverFeedSection } from \"./components/discover-feed-section.js\";\nexport type { DiscoverFeedSectionProps } from \"./components/discover-feed-section.js\";\nexport { ActivityCard, ActivityCardSkeleton, ACTIVITY_MESSAGES } from \"./components/activity-card.js\";\nexport type { ActivityCardProps } from \"./components/activity-card.js\";\n\n// ── Launchpad (grouped sections — single page-UI source since 0.8.0) ─────────\nexport { LaunchpadGroupedSections, LaunchpadServiceCard, SERVICE_HUES } from \"./components/launchpad-services.js\";\nexport { LaunchpadFilterBar } from \"./components/launchpad-filter-bar.js\";\nexport type { LaunchpadFilterBarProps } from \"./components/launchpad-filter-bar.js\";\nexport { LaunchpadStrip } from \"./components/launchpad-strip.js\";\nexport type { LaunchpadStripProps } from \"./components/launchpad-strip.js\";\nexport type { LaunchpadGroupedSectionsProps, LaunchpadServiceCardProps, ServiceOverride, ServiceOverrides } from \"./components/launchpad-services.js\";\nexport { LAUNCHPAD_SERVICE_DEFINITIONS, LAUNCHPAD_SERVICE_GROUPS } from \"./data/launchpad-services.js\";\nexport type { ServiceDefinition, ServiceStatus, ServiceCategory, ServiceGroup, ServiceGroupDefinition } from \"./data/launchpad-services.js\";\n\n// ── v0.5.0 additions ─────────────────────────────────────────────────────────\nexport { NavCommandMenu, useNavCommandMenu } from \"./components/nav-command-menu.js\";\nexport type { NavCommand, NavCommandGroup, NavCommandMenuProps } from \"./components/nav-command-menu.js\";\n\n// ── v0.6.0 additions — portfolio subnav + counts ────────────────────────────\nexport { PortfolioSubnav } from \"./components/portfolio-subnav.js\";\nexport type {\n PortfolioSubnavProps,\n PortfolioNavItem,\n PortfolioNavGroup,\n PortfolioBadgeVariant,\n} from \"./components/portfolio-subnav.js\";\nexport { derivePortfolioCounts } from \"./utils/portfolio-counts.js\";\nexport type { PortfolioCounts, CountableOrder } from \"./utils/portfolio-counts.js\";\n\n// ── v0.22.0 additions — launchpad/claim form template primitives ─────────────\n// Pure-presentation header + rail shared by every launchpad/claim form. The\n// app supplies its own gate, back button, and form logic. Requires the\n// `.btn-border-animated` class (in @medialane/ui/styles) for the form shell.\nexport { ServiceHeader } from \"./components/service-header.js\";\nexport type { ServiceHeaderProps } from \"./components/service-header.js\";\nexport { ClaimRail } from \"./components/claim-rail.js\";\nexport type { ClaimRailProps } from \"./components/claim-rail.js\";\n\n// ── v0.23.0 additions — slot-based form shell ────────────────────────────────\n// Pure layout (back slot + header + animated-border compartment + 8/4 bento).\n// No auth/router — the app injects its own gate (around children) + back button.\nexport { ServiceFormShell } from \"./components/service-form-shell.js\";\nexport type { ServiceFormShellProps } from \"./components/service-form-shell.js\";\nexport { StepNav } from \"./components/step-nav.js\";\nexport type { StepNavProps, StepNavStep } from \"./components/step-nav.js\";\n\n// Rewards score kit (v0.36.0)\nexport { LevelBadge } from \"./components/rewards/level-badge.js\";\nexport type { LevelBadgeProps } from \"./components/rewards/level-badge.js\";\nexport { XpProgress } from \"./components/rewards/xp-progress.js\";\nexport type { XpProgressProps } from \"./components/rewards/xp-progress.js\";\nexport { BadgeShelf } from \"./components/rewards/badge-shelf.js\";\nexport type { BadgeShelfProps, BadgeShelfBadge } from \"./components/rewards/badge-shelf.js\";\nexport { ScoreSummaryCard } from \"./components/rewards/score-summary-card.js\";\nexport type { ScoreSummaryCardProps } from \"./components/rewards/score-summary-card.js\";\nexport { LeaderboardTable, LeaderboardWidget } from \"./components/rewards/leaderboard-table.js\";\nexport type { LeaderboardTableProps, LeaderboardWidgetProps, LeaderboardEntryLike } from \"./components/rewards/leaderboard-table.js\";\nexport { LevelLadder } from \"./components/rewards/level-ladder.js\";\nexport type { LevelLadderProps } from \"./components/rewards/level-ladder.js\";\nexport { XpToastContent } from \"./components/rewards/xp-toast-content.js\";\nexport type { XpToastContentProps } from \"./components/rewards/xp-toast-content.js\";\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,gBAAmB;AACnB,oBAAsD;AACtD,qBAA+B;AAC/B,kBAA2B;AAC3B,6BAA+B;AAG/B,sBAA+C;AAE/C,gBAGO;AAEP,0BAEO;AAEP,6BAA8B;AAC9B,oCAAqC;AACrC,mCAAoC;AACpC,+BAAgC;AAChC,uCAAwC;AAExC,gCAAsE;AACtE,kCAAmC;AAEnC,iCAAkC;AAElC,qCAAsC;AAEtC,mBAAsB;AAGtB,2BAA6C;AAG7C,2BAAyD;AAGzD,6BAA+B;AAG/B,wBAA8B;AAE9B,wBAAkC;AAIlC,+BAAyF;AACzF,4BAA8B;AAE9B,4BAA8B;AAE9B,0BAA4B;AAE5B,6BAAuD;AAEvD,wBAA6C;AAE7C,wBAA6C;AAG7C,mBAGO;AACP,uBAA2F;AAC3F,4BAGO;AAGP,kBAAmC;AACnC,sBAAmD;AAEnD,yBAA+C;AAE/C,6BAA+B;AAE/B,0BAAiD;AAEjD,0BAA4B;AAE5B,iCAAkC;AAElC,2BAA4B;AAI5B,2BAA6B;AAE7B,+BAA2D;AAE3D,wCAAyC;AAEzC,qCAAsC;AAEtC,mCAAoC;AAEpC,2BAAsE;AAItE,gCAA6E;AAC7E,kCAAmC;AAEnC,6BAA+B;AAG/B,IAAAA,6BAAwE;AAIxE,8BAAkD;AAIlD,8BAAgC;AAOhC,8BAAsC;AAOtC,4BAA8B;AAE9B,wBAA0B;AAM1B,gCAAiC;AAEjC,sBAAwB;AAIxB,yBAA2B;AAE3B,yBAA2B;AAE3B,yBAA2B;AAE3B,gCAAiC;AAEjC,+BAAoD;AAEpD,0BAA4B;AAE5B,8BAA+B;","names":["import_launchpad_services"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["// ── Utils ─────────────────────────────────────────────────────────────────────\nexport { cn } from \"./utils/cn.js\";\nexport { formatDisplayPrice, parsePriceDisplay } from \"./utils/format.js\";\nexport { shortenAddress } from \"./utils/address.js\";\nexport { ipfsToHttp } from \"./utils/ipfs.js\";\nexport { licenseSummary } from \"./utils/license-summary.js\";\n\n// ── Data (server-safe — no React, safe in Server Components) ──────────────────\nexport { IP_TYPE_DATA, IP_TYPE_DATA_MAP } from \"./data/ip-types.js\";\nexport type { IpTypeData } from \"./data/ip-types.js\";\nexport {\n IP_TYPES, LICENSE_TYPES, GEOGRAPHIC_SCOPES, AI_POLICIES,\n DERIVATIVES_OPTIONS, LICENSE_TRAIT_TYPES,\n} from \"./data/ip.js\";\nexport type { IPType, LicenseType } from \"./data/ip.js\";\nexport {\n IP_TEMPLATES, EMBED_PLATFORM_META, SOCIAL_PLATFORM_META, TEMPLATE_TRAIT_TYPES, DOC_UPLOAD,\n} from \"./data/ip-templates.js\";\nexport type { EmbedPlatform, SocialPlatform, TraitSuggestion, IPTemplate, DocUploadConfig } from \"./data/ip-templates.js\";\nexport { IPTypeDisplay } from \"./components/ip-type-display.js\";\nexport { AssetOverviewContent } from \"./components/asset-overview-content.js\";\nexport { AssetLicenseSummary } from \"./components/asset-license-summary.js\";\nexport { AssetMarketsTab } from \"./components/asset-markets-tab.js\";\nexport { ParentAttributionBanner } from \"./components/parent-attribution-banner.js\";\nexport type { ParentBannerProps } from \"./components/parent-attribution-banner.js\";\nexport { AssetMediaColumn, AssetHeaderBlock, buildEditionStats } from \"./components/asset-top-sections.js\";\nexport { AssetCollectionBar } from \"./components/asset-collection-bar.js\";\nexport type { AssetCollectionBarProps, AssetCollectionBarSibling } from \"./components/asset-collection-bar.js\";\nexport { AssetUtilityIcons } from \"./components/asset-utility-icons.js\";\nexport type { AssetUtilityIconsProps } from \"./components/asset-utility-icons.js\";\nexport { AssetMarketplacePanel } from \"./components/asset-marketplace-panel.js\";\nexport type { AssetMarketplacePanelProps, ApiOrderLike } from \"./components/asset-marketplace-panel.js\";\nexport { BRAND } from \"./data/brand.js\";\n\n// ── Components (client-only — all have \"use client\") ─────────────────────────\nexport { CurrencyIcon, CurrencyAmount } from \"./components/currency-icon.js\";\nexport type { CurrencyIconProps, CurrencyAmountProps } from \"./components/currency-icon.js\";\n\nexport { IpTypeBadge, IP_TYPE_CONFIG, IP_TYPE_MAP } from \"./components/ip-type-badge.js\";\nexport type { IpTypeBadgeProps, IpTypeConfig } from \"./components/ip-type-badge.js\";\n\nexport { AddressDisplay } from \"./components/address-display.js\";\nexport type { AddressDisplayProps } from \"./components/address-display.js\";\n\nexport { MedialaneIcon } from \"./components/brand-icon.js\";\nexport type { MedialaneIconProps } from \"./components/brand-icon.js\";\nexport { MedialaneLogoFull } from \"./components/brand-logo.js\";\nexport type { MedialaneLogoFullProps } from \"./components/brand-logo.js\";\n\n// ── v0.2 additions ────────────────────────────────────────────────────────────\nexport { MotionCard, FadeIn, Stagger, StaggerItem, KineticWords, SPRING, EASE_OUT } from \"./components/motion-primitives.js\";\nexport { PageContainer } from \"./components/page-container.js\";\nexport type { PageContainerProps } from \"./components/page-container.js\";\nexport { ScrollSection } from \"./components/scroll-section.js\";\nexport type { ScrollSectionProps } from \"./components/scroll-section.js\";\nexport { ShareButton } from \"./components/share-button.js\";\nexport type { ShareButtonProps } from \"./components/share-button.js\";\nexport { CollectionCard, CollectionCardSkeleton } from \"./components/collection-card.js\";\nexport type { CollectionCardProps } from \"./components/collection-card.js\";\nexport { TokenCard, TokenCardSkeleton } from \"./components/token-card.js\";\nexport type { TokenCardProps, RarityTier } from \"./components/token-card.js\";\nexport { AssetCard, AssetCardSkeleton } from \"./components/asset-card.js\";\nexport type { AssetCardProps, AssetCardPrice } from \"./components/asset-card.js\";\n// ── Coin discovery (chain-agnostic; price/data/href injected by the app) ─────\nexport {\n coinKind, formatCoinPrice, formatFdv,\n type CoinKind, type CoinCollectionLike, type CoinPriceLike,\n} from \"./data/coins.js\";\nexport { CoinCard, CoinRow, CoinCardSkeleton, type UseCoinPrice, type CoinTileProps } from \"./components/coin-card.js\";\nexport {\n CoinsExplorer,\n type CoinsExplorerProps, type CoinFilter, type CoinSort, type UseCoins,\n} from \"./components/coins-explorer.js\";\n\n// ── v0.3 additions ────────────────────────────────────────────────────────────\nexport { timeAgo, timeUntil } from \"./utils/time.js\";\nexport { ACTIVITY_TYPE_CONFIG, TYPE_FILTERS } from \"./data/activity.js\";\nexport type { ActivityTypeConfig } from \"./data/activity.js\";\nexport { HeroSlider, HeroSliderSkeleton } from \"./components/hero-slider.js\";\nexport type { HeroSliderProps } from \"./components/hero-slider.js\";\nexport { ActivityTicker } from \"./components/activity-ticker.js\";\nexport type { ActivityTickerProps } from \"./components/activity-ticker.js\";\nexport { ListingCard, ListingCardSkeleton } from \"./components/listing-card.js\";\nexport type { ListingCardProps } from \"./components/listing-card.js\";\nexport { ActivityRow } from \"./components/activity-row.js\";\nexport type { ActivityRowProps } from \"./components/activity-row.js\";\nexport { ActivityFeedShell } from \"./components/activity-feed-shell.js\";\nexport type { ActivityFeedShellProps } from \"./components/activity-feed-shell.js\";\nexport { CtaCardGrid } from \"./components/cta-card-grid.js\";\nexport type { CtaCardGridProps, CtaCardItem } from \"./components/cta-card-grid.js\";\n\n// ── v0.3.2 additions ─────────────────────────────────────────────────────────\nexport { DiscoverHero } from \"./components/discover-hero.js\";\nexport type { DiscoverHeroProps } from \"./components/discover-hero.js\";\nexport { FeaturedCarousel, FeaturedCarouselSkeleton } from \"./components/featured-carousel.js\";\nexport type { FeaturedCarouselProps } from \"./components/featured-carousel.js\";\nexport { DiscoverCollectionsStrip } from \"./components/discover-collections-strip.js\";\nexport type { DiscoverCollectionsStripProps } from \"./components/discover-collections-strip.js\";\nexport { DiscoverCreatorsStrip } from \"./components/discover-creators-strip.js\";\nexport type { DiscoverCreatorsStripProps } from \"./components/discover-creators-strip.js\";\nexport { DiscoverFeedSection } from \"./components/discover-feed-section.js\";\nexport type { DiscoverFeedSectionProps } from \"./components/discover-feed-section.js\";\nexport { ActivityCard, ActivityCardSkeleton, ACTIVITY_MESSAGES } from \"./components/activity-card.js\";\nexport type { ActivityCardProps } from \"./components/activity-card.js\";\n\n// ── Launchpad (grouped sections — single page-UI source since 0.8.0) ─────────\nexport { LaunchpadGroupedSections, LaunchpadServiceCard, SERVICE_HUES } from \"./components/launchpad-services.js\";\nexport { LaunchpadFilterBar } from \"./components/launchpad-filter-bar.js\";\nexport type { LaunchpadFilterBarProps } from \"./components/launchpad-filter-bar.js\";\nexport { LaunchpadStrip } from \"./components/launchpad-strip.js\";\nexport type { LaunchpadStripProps } from \"./components/launchpad-strip.js\";\nexport type { LaunchpadGroupedSectionsProps, LaunchpadServiceCardProps, ServiceOverride, ServiceOverrides } from \"./components/launchpad-services.js\";\nexport { LAUNCHPAD_SERVICE_DEFINITIONS, LAUNCHPAD_SERVICE_GROUPS } from \"./data/launchpad-services.js\";\nexport type { ServiceDefinition, ServiceStatus, ServiceCategory, ServiceGroup, ServiceGroupDefinition } from \"./data/launchpad-services.js\";\n\n// ── v0.5.0 additions ─────────────────────────────────────────────────────────\nexport { NavCommandMenu, useNavCommandMenu } from \"./components/nav-command-menu.js\";\nexport type { NavCommand, NavCommandGroup, NavCommandMenuProps } from \"./components/nav-command-menu.js\";\n\n// ── v0.6.0 additions — portfolio subnav + counts ────────────────────────────\nexport { PortfolioSubnav } from \"./components/portfolio-subnav.js\";\nexport type {\n PortfolioSubnavProps,\n PortfolioNavItem,\n PortfolioNavGroup,\n PortfolioBadgeVariant,\n} from \"./components/portfolio-subnav.js\";\nexport { derivePortfolioCounts } from \"./utils/portfolio-counts.js\";\nexport type { PortfolioCounts, CountableOrder } from \"./utils/portfolio-counts.js\";\n\n// ── v0.22.0 additions — launchpad/claim form template primitives ─────────────\n// Pure-presentation header + rail shared by every launchpad/claim form. The\n// app supplies its own gate, back button, and form logic. Requires the\n// `.btn-border-animated` class (in @medialane/ui/styles) for the form shell.\nexport { ServiceHeader } from \"./components/service-header.js\";\nexport type { ServiceHeaderProps } from \"./components/service-header.js\";\nexport { ClaimRail } from \"./components/claim-rail.js\";\nexport type { ClaimRailProps } from \"./components/claim-rail.js\";\n\n// ── v0.23.0 additions — slot-based form shell ────────────────────────────────\n// Pure layout (back slot + header + animated-border compartment + 8/4 bento).\n// No auth/router — the app injects its own gate (around children) + back button.\nexport { ServiceFormShell } from \"./components/service-form-shell.js\";\nexport type { ServiceFormShellProps } from \"./components/service-form-shell.js\";\nexport { StepNav } from \"./components/step-nav.js\";\nexport type { StepNavProps, StepNavStep } from \"./components/step-nav.js\";\n\n// Rewards score kit (v0.36.0)\nexport { LevelBadge } from \"./components/rewards/level-badge.js\";\nexport type { LevelBadgeProps } from \"./components/rewards/level-badge.js\";\nexport { XpProgress } from \"./components/rewards/xp-progress.js\";\nexport type { XpProgressProps } from \"./components/rewards/xp-progress.js\";\nexport { BadgeShelf } from \"./components/rewards/badge-shelf.js\";\nexport type { BadgeShelfProps, BadgeShelfBadge } from \"./components/rewards/badge-shelf.js\";\nexport { ScoreSummaryCard } from \"./components/rewards/score-summary-card.js\";\nexport type { ScoreSummaryCardProps } from \"./components/rewards/score-summary-card.js\";\nexport { LeaderboardTable, LeaderboardWidget } from \"./components/rewards/leaderboard-table.js\";\nexport type { LeaderboardTableProps, LeaderboardWidgetProps, LeaderboardEntryLike } from \"./components/rewards/leaderboard-table.js\";\nexport { LevelLadder } from \"./components/rewards/level-ladder.js\";\nexport type { LevelLadderProps } from \"./components/rewards/level-ladder.js\";\nexport { XpToastContent } from \"./components/rewards/xp-toast-content.js\";\nexport type { XpToastContentProps } from \"./components/rewards/xp-toast-content.js\";\n\n// ── v0.37.0 additions — infinite-scroll trigger ──────────────────────────────\nexport { LoadMoreSentinel } from \"./components/load-more-sentinel.js\";\nexport type { LoadMoreSentinelProps } from \"./components/load-more-sentinel.js\";\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,gBAAmB;AACnB,oBAAsD;AACtD,qBAA+B;AAC/B,kBAA2B;AAC3B,6BAA+B;AAG/B,sBAA+C;AAE/C,gBAGO;AAEP,0BAEO;AAEP,6BAA8B;AAC9B,oCAAqC;AACrC,mCAAoC;AACpC,+BAAgC;AAChC,uCAAwC;AAExC,gCAAsE;AACtE,kCAAmC;AAEnC,iCAAkC;AAElC,qCAAsC;AAEtC,mBAAsB;AAGtB,2BAA6C;AAG7C,2BAAyD;AAGzD,6BAA+B;AAG/B,wBAA8B;AAE9B,wBAAkC;AAIlC,+BAAyF;AACzF,4BAA8B;AAE9B,4BAA8B;AAE9B,0BAA4B;AAE5B,6BAAuD;AAEvD,wBAA6C;AAE7C,wBAA6C;AAG7C,mBAGO;AACP,uBAA2F;AAC3F,4BAGO;AAGP,kBAAmC;AACnC,sBAAmD;AAEnD,yBAA+C;AAE/C,6BAA+B;AAE/B,0BAAiD;AAEjD,0BAA4B;AAE5B,iCAAkC;AAElC,2BAA4B;AAI5B,2BAA6B;AAE7B,+BAA2D;AAE3D,wCAAyC;AAEzC,qCAAsC;AAEtC,mCAAoC;AAEpC,2BAAsE;AAItE,gCAA6E;AAC7E,kCAAmC;AAEnC,6BAA+B;AAG/B,IAAAA,6BAAwE;AAIxE,8BAAkD;AAIlD,8BAAgC;AAOhC,8BAAsC;AAOtC,4BAA8B;AAE9B,wBAA0B;AAM1B,gCAAiC;AAEjC,sBAAwB;AAIxB,yBAA2B;AAE3B,yBAA2B;AAE3B,yBAA2B;AAE3B,gCAAiC;AAEjC,+BAAoD;AAEpD,0BAA4B;AAE5B,8BAA+B;AAI/B,gCAAiC;","names":["import_launchpad_services"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -56,135 +56,17 @@ export { ServiceHeader, ServiceHeaderProps } from './components/service-header.c
|
|
|
56
56
|
export { ClaimRail, ClaimRailProps } from './components/claim-rail.cjs';
|
|
57
57
|
export { ServiceFormShell, ServiceFormShellProps } from './components/service-form-shell.cjs';
|
|
58
58
|
export { StepNav, StepNavProps, StepNavStep } from './components/step-nav.cjs';
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
export { LevelBadge, LevelBadgeProps } from './components/rewards/level-badge.cjs';
|
|
60
|
+
export { XpProgress, XpProgressProps } from './components/rewards/xp-progress.cjs';
|
|
61
|
+
export { BadgeShelf, BadgeShelfBadge, BadgeShelfProps } from './components/rewards/badge-shelf.cjs';
|
|
62
|
+
export { ScoreSummaryCard, ScoreSummaryCardProps } from './components/rewards/score-summary-card.cjs';
|
|
63
|
+
export { LeaderboardEntryLike, LeaderboardTable, LeaderboardTableProps, LeaderboardWidget, LeaderboardWidgetProps } from './components/rewards/leaderboard-table.cjs';
|
|
64
|
+
export { LevelLadder, LevelLadderProps } from './components/rewards/level-ladder.cjs';
|
|
65
|
+
export { XpToastContent, XpToastContentProps } from './components/rewards/xp-toast-content.cjs';
|
|
66
|
+
export { LoadMoreSentinel, LoadMoreSentinelProps } from './components/load-more-sentinel.cjs';
|
|
61
67
|
import 'clsx';
|
|
62
68
|
import 'lucide-react';
|
|
69
|
+
import 'react/jsx-runtime';
|
|
63
70
|
import '@medialane/sdk';
|
|
71
|
+
import 'react';
|
|
64
72
|
import 'framer-motion';
|
|
65
|
-
|
|
66
|
-
interface LevelBadgeProps {
|
|
67
|
-
level: number;
|
|
68
|
-
name: string;
|
|
69
|
-
badgeColor: string;
|
|
70
|
-
size?: "sm" | "md" | "lg";
|
|
71
|
-
className?: string;
|
|
72
|
-
}
|
|
73
|
-
/** Color-coded level chip ("Lv.6 Voyager"). Pure presentation — the consuming
|
|
74
|
-
* app supplies level data from the rewards API. */
|
|
75
|
-
declare function LevelBadge({ level, name, badgeColor, size, className }: LevelBadgeProps): react_jsx_runtime.JSX.Element;
|
|
76
|
-
|
|
77
|
-
interface XpProgressProps {
|
|
78
|
-
totalXp: number;
|
|
79
|
-
/** XP required to reach the current level. */
|
|
80
|
-
levelXp: number;
|
|
81
|
-
/** XP required for the next level; null at max level (renders full). */
|
|
82
|
-
nextLevelXp: number | null;
|
|
83
|
-
badgeColor: string;
|
|
84
|
-
variant?: "bar" | "ring";
|
|
85
|
-
/** Ring diameter in px (ring variant only). */
|
|
86
|
-
size?: number;
|
|
87
|
-
className?: string;
|
|
88
|
-
}
|
|
89
|
-
/** XP progress toward the next level, as a rounded bar or an SVG ring. */
|
|
90
|
-
declare function XpProgress({ totalXp, levelXp, nextLevelXp, badgeColor, variant, size, className }: XpProgressProps): react_jsx_runtime.JSX.Element;
|
|
91
|
-
|
|
92
|
-
interface BadgeShelfBadge {
|
|
93
|
-
key: string;
|
|
94
|
-
name: string;
|
|
95
|
-
description: string;
|
|
96
|
-
icon: string;
|
|
97
|
-
color: string;
|
|
98
|
-
category: string;
|
|
99
|
-
}
|
|
100
|
-
interface BadgeShelfProps {
|
|
101
|
-
/** The badges to render — the earned set, or the full catalog with `earnedKeys`. */
|
|
102
|
-
badges: BadgeShelfBadge[];
|
|
103
|
-
/** When set, badges outside this set render locked (grayscale, reduced opacity). */
|
|
104
|
-
earnedKeys?: string[];
|
|
105
|
-
/** Render locked badges too (requires `earnedKeys`); default hides them. */
|
|
106
|
-
showLocked?: boolean;
|
|
107
|
-
className?: string;
|
|
108
|
-
}
|
|
109
|
-
/** Badge chips with native tooltips. Earned badges render in their color;
|
|
110
|
-
* locked ones (present in `badges` but not `earnedKeys`) render muted. */
|
|
111
|
-
declare function BadgeShelf({ badges, earnedKeys, showLocked, className }: BadgeShelfProps): react_jsx_runtime.JSX.Element | null;
|
|
112
|
-
|
|
113
|
-
interface ScoreSummaryCardProps {
|
|
114
|
-
level: number;
|
|
115
|
-
levelName: string;
|
|
116
|
-
badgeColor: string;
|
|
117
|
-
totalXp: number;
|
|
118
|
-
/** XP required to reach the current level. */
|
|
119
|
-
levelXp: number;
|
|
120
|
-
nextLevel: {
|
|
121
|
-
level: number;
|
|
122
|
-
name: string;
|
|
123
|
-
xpRequired: number;
|
|
124
|
-
} | null;
|
|
125
|
-
/** A few earned badges to preview (already limited by the caller). */
|
|
126
|
-
topBadges?: BadgeShelfBadge[];
|
|
127
|
-
/** Where the card links ("/rewards"); rendered as a plain anchor. */
|
|
128
|
-
href?: string;
|
|
129
|
-
className?: string;
|
|
130
|
-
}
|
|
131
|
-
/** Compact score overview for portfolio/profile surfaces: level ring, XP,
|
|
132
|
-
* next-level progress, and a short badge preview. */
|
|
133
|
-
declare function ScoreSummaryCard({ level, levelName, badgeColor, totalXp, levelXp, nextLevel, topBadges, href, className, }: ScoreSummaryCardProps): react_jsx_runtime.JSX.Element;
|
|
134
|
-
|
|
135
|
-
interface LeaderboardEntryLike {
|
|
136
|
-
rank: number;
|
|
137
|
-
address: string;
|
|
138
|
-
publicId?: string | null;
|
|
139
|
-
totalXp: number;
|
|
140
|
-
currentLevel: number;
|
|
141
|
-
currentLevelName: string;
|
|
142
|
-
badgeColor: string;
|
|
143
|
-
}
|
|
144
|
-
interface LeaderboardTableProps {
|
|
145
|
-
entries: LeaderboardEntryLike[];
|
|
146
|
-
/** The viewer's address — its row gets highlighted. */
|
|
147
|
-
highlightAddress?: string | null;
|
|
148
|
-
/** Render the address cell (e.g. a profile link). Defaults to a shortened address. */
|
|
149
|
-
renderAddress?: (address: string) => ReactNode;
|
|
150
|
-
className?: string;
|
|
151
|
-
}
|
|
152
|
-
/** Full leaderboard rows: rank, address, level chip, XP. */
|
|
153
|
-
declare function LeaderboardTable({ entries, highlightAddress, renderAddress, className }: LeaderboardTableProps): react_jsx_runtime.JSX.Element;
|
|
154
|
-
interface LeaderboardWidgetProps {
|
|
155
|
-
entries: LeaderboardEntryLike[];
|
|
156
|
-
title?: string;
|
|
157
|
-
/** Link to the full leaderboard ("/rewards"). */
|
|
158
|
-
href?: string;
|
|
159
|
-
renderAddress?: (address: string) => ReactNode;
|
|
160
|
-
className?: string;
|
|
161
|
-
}
|
|
162
|
-
/** Compact top-N card for homepage/discover rails. */
|
|
163
|
-
declare function LeaderboardWidget({ entries, title, href, renderAddress, className }: LeaderboardWidgetProps): react_jsx_runtime.JSX.Element | null;
|
|
164
|
-
|
|
165
|
-
interface LevelLadderProps {
|
|
166
|
-
levels: {
|
|
167
|
-
level: number;
|
|
168
|
-
name: string;
|
|
169
|
-
xpRequired: number;
|
|
170
|
-
badgeColor: string;
|
|
171
|
-
}[];
|
|
172
|
-
currentLevel: number;
|
|
173
|
-
className?: string;
|
|
174
|
-
}
|
|
175
|
-
/** The full level arc as a horizontally scrollable chip rail; the current
|
|
176
|
-
* level is highlighted, passed levels render solid, future ones muted. */
|
|
177
|
-
declare function LevelLadder({ levels, currentLevel, className }: LevelLadderProps): react_jsx_runtime.JSX.Element;
|
|
178
|
-
|
|
179
|
-
interface XpToastContentProps {
|
|
180
|
-
xp: number;
|
|
181
|
-
/** The action's configured label, e.g. "Mint an IP asset". */
|
|
182
|
-
label: string;
|
|
183
|
-
color?: string;
|
|
184
|
-
}
|
|
185
|
-
/** Toast body for optimistic XP feedback: "+20 XP · Mint an IP asset".
|
|
186
|
-
* Scores recompute on a schedule, so this shows the action's configured
|
|
187
|
-
* value — the caller must never present it as a live balance. */
|
|
188
|
-
declare function XpToastContent({ xp, label, color }: XpToastContentProps): react_jsx_runtime.JSX.Element;
|
|
189
|
-
|
|
190
|
-
export { BadgeShelf, type BadgeShelfBadge, type BadgeShelfProps, type LeaderboardEntryLike, LeaderboardTable, type LeaderboardTableProps, LeaderboardWidget, type LeaderboardWidgetProps, LevelBadge, type LevelBadgeProps, LevelLadder, type LevelLadderProps, ScoreSummaryCard, type ScoreSummaryCardProps, XpProgress, type XpProgressProps, XpToastContent, type XpToastContentProps };
|
package/dist/index.d.ts
CHANGED
|
@@ -56,135 +56,17 @@ export { ServiceHeader, ServiceHeaderProps } from './components/service-header.j
|
|
|
56
56
|
export { ClaimRail, ClaimRailProps } from './components/claim-rail.js';
|
|
57
57
|
export { ServiceFormShell, ServiceFormShellProps } from './components/service-form-shell.js';
|
|
58
58
|
export { StepNav, StepNavProps, StepNavStep } from './components/step-nav.js';
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
export { LevelBadge, LevelBadgeProps } from './components/rewards/level-badge.js';
|
|
60
|
+
export { XpProgress, XpProgressProps } from './components/rewards/xp-progress.js';
|
|
61
|
+
export { BadgeShelf, BadgeShelfBadge, BadgeShelfProps } from './components/rewards/badge-shelf.js';
|
|
62
|
+
export { ScoreSummaryCard, ScoreSummaryCardProps } from './components/rewards/score-summary-card.js';
|
|
63
|
+
export { LeaderboardEntryLike, LeaderboardTable, LeaderboardTableProps, LeaderboardWidget, LeaderboardWidgetProps } from './components/rewards/leaderboard-table.js';
|
|
64
|
+
export { LevelLadder, LevelLadderProps } from './components/rewards/level-ladder.js';
|
|
65
|
+
export { XpToastContent, XpToastContentProps } from './components/rewards/xp-toast-content.js';
|
|
66
|
+
export { LoadMoreSentinel, LoadMoreSentinelProps } from './components/load-more-sentinel.js';
|
|
61
67
|
import 'clsx';
|
|
62
68
|
import 'lucide-react';
|
|
69
|
+
import 'react/jsx-runtime';
|
|
63
70
|
import '@medialane/sdk';
|
|
71
|
+
import 'react';
|
|
64
72
|
import 'framer-motion';
|
|
65
|
-
|
|
66
|
-
interface LevelBadgeProps {
|
|
67
|
-
level: number;
|
|
68
|
-
name: string;
|
|
69
|
-
badgeColor: string;
|
|
70
|
-
size?: "sm" | "md" | "lg";
|
|
71
|
-
className?: string;
|
|
72
|
-
}
|
|
73
|
-
/** Color-coded level chip ("Lv.6 Voyager"). Pure presentation — the consuming
|
|
74
|
-
* app supplies level data from the rewards API. */
|
|
75
|
-
declare function LevelBadge({ level, name, badgeColor, size, className }: LevelBadgeProps): react_jsx_runtime.JSX.Element;
|
|
76
|
-
|
|
77
|
-
interface XpProgressProps {
|
|
78
|
-
totalXp: number;
|
|
79
|
-
/** XP required to reach the current level. */
|
|
80
|
-
levelXp: number;
|
|
81
|
-
/** XP required for the next level; null at max level (renders full). */
|
|
82
|
-
nextLevelXp: number | null;
|
|
83
|
-
badgeColor: string;
|
|
84
|
-
variant?: "bar" | "ring";
|
|
85
|
-
/** Ring diameter in px (ring variant only). */
|
|
86
|
-
size?: number;
|
|
87
|
-
className?: string;
|
|
88
|
-
}
|
|
89
|
-
/** XP progress toward the next level, as a rounded bar or an SVG ring. */
|
|
90
|
-
declare function XpProgress({ totalXp, levelXp, nextLevelXp, badgeColor, variant, size, className }: XpProgressProps): react_jsx_runtime.JSX.Element;
|
|
91
|
-
|
|
92
|
-
interface BadgeShelfBadge {
|
|
93
|
-
key: string;
|
|
94
|
-
name: string;
|
|
95
|
-
description: string;
|
|
96
|
-
icon: string;
|
|
97
|
-
color: string;
|
|
98
|
-
category: string;
|
|
99
|
-
}
|
|
100
|
-
interface BadgeShelfProps {
|
|
101
|
-
/** The badges to render — the earned set, or the full catalog with `earnedKeys`. */
|
|
102
|
-
badges: BadgeShelfBadge[];
|
|
103
|
-
/** When set, badges outside this set render locked (grayscale, reduced opacity). */
|
|
104
|
-
earnedKeys?: string[];
|
|
105
|
-
/** Render locked badges too (requires `earnedKeys`); default hides them. */
|
|
106
|
-
showLocked?: boolean;
|
|
107
|
-
className?: string;
|
|
108
|
-
}
|
|
109
|
-
/** Badge chips with native tooltips. Earned badges render in their color;
|
|
110
|
-
* locked ones (present in `badges` but not `earnedKeys`) render muted. */
|
|
111
|
-
declare function BadgeShelf({ badges, earnedKeys, showLocked, className }: BadgeShelfProps): react_jsx_runtime.JSX.Element | null;
|
|
112
|
-
|
|
113
|
-
interface ScoreSummaryCardProps {
|
|
114
|
-
level: number;
|
|
115
|
-
levelName: string;
|
|
116
|
-
badgeColor: string;
|
|
117
|
-
totalXp: number;
|
|
118
|
-
/** XP required to reach the current level. */
|
|
119
|
-
levelXp: number;
|
|
120
|
-
nextLevel: {
|
|
121
|
-
level: number;
|
|
122
|
-
name: string;
|
|
123
|
-
xpRequired: number;
|
|
124
|
-
} | null;
|
|
125
|
-
/** A few earned badges to preview (already limited by the caller). */
|
|
126
|
-
topBadges?: BadgeShelfBadge[];
|
|
127
|
-
/** Where the card links ("/rewards"); rendered as a plain anchor. */
|
|
128
|
-
href?: string;
|
|
129
|
-
className?: string;
|
|
130
|
-
}
|
|
131
|
-
/** Compact score overview for portfolio/profile surfaces: level ring, XP,
|
|
132
|
-
* next-level progress, and a short badge preview. */
|
|
133
|
-
declare function ScoreSummaryCard({ level, levelName, badgeColor, totalXp, levelXp, nextLevel, topBadges, href, className, }: ScoreSummaryCardProps): react_jsx_runtime.JSX.Element;
|
|
134
|
-
|
|
135
|
-
interface LeaderboardEntryLike {
|
|
136
|
-
rank: number;
|
|
137
|
-
address: string;
|
|
138
|
-
publicId?: string | null;
|
|
139
|
-
totalXp: number;
|
|
140
|
-
currentLevel: number;
|
|
141
|
-
currentLevelName: string;
|
|
142
|
-
badgeColor: string;
|
|
143
|
-
}
|
|
144
|
-
interface LeaderboardTableProps {
|
|
145
|
-
entries: LeaderboardEntryLike[];
|
|
146
|
-
/** The viewer's address — its row gets highlighted. */
|
|
147
|
-
highlightAddress?: string | null;
|
|
148
|
-
/** Render the address cell (e.g. a profile link). Defaults to a shortened address. */
|
|
149
|
-
renderAddress?: (address: string) => ReactNode;
|
|
150
|
-
className?: string;
|
|
151
|
-
}
|
|
152
|
-
/** Full leaderboard rows: rank, address, level chip, XP. */
|
|
153
|
-
declare function LeaderboardTable({ entries, highlightAddress, renderAddress, className }: LeaderboardTableProps): react_jsx_runtime.JSX.Element;
|
|
154
|
-
interface LeaderboardWidgetProps {
|
|
155
|
-
entries: LeaderboardEntryLike[];
|
|
156
|
-
title?: string;
|
|
157
|
-
/** Link to the full leaderboard ("/rewards"). */
|
|
158
|
-
href?: string;
|
|
159
|
-
renderAddress?: (address: string) => ReactNode;
|
|
160
|
-
className?: string;
|
|
161
|
-
}
|
|
162
|
-
/** Compact top-N card for homepage/discover rails. */
|
|
163
|
-
declare function LeaderboardWidget({ entries, title, href, renderAddress, className }: LeaderboardWidgetProps): react_jsx_runtime.JSX.Element | null;
|
|
164
|
-
|
|
165
|
-
interface LevelLadderProps {
|
|
166
|
-
levels: {
|
|
167
|
-
level: number;
|
|
168
|
-
name: string;
|
|
169
|
-
xpRequired: number;
|
|
170
|
-
badgeColor: string;
|
|
171
|
-
}[];
|
|
172
|
-
currentLevel: number;
|
|
173
|
-
className?: string;
|
|
174
|
-
}
|
|
175
|
-
/** The full level arc as a horizontally scrollable chip rail; the current
|
|
176
|
-
* level is highlighted, passed levels render solid, future ones muted. */
|
|
177
|
-
declare function LevelLadder({ levels, currentLevel, className }: LevelLadderProps): react_jsx_runtime.JSX.Element;
|
|
178
|
-
|
|
179
|
-
interface XpToastContentProps {
|
|
180
|
-
xp: number;
|
|
181
|
-
/** The action's configured label, e.g. "Mint an IP asset". */
|
|
182
|
-
label: string;
|
|
183
|
-
color?: string;
|
|
184
|
-
}
|
|
185
|
-
/** Toast body for optimistic XP feedback: "+20 XP · Mint an IP asset".
|
|
186
|
-
* Scores recompute on a schedule, so this shows the action's configured
|
|
187
|
-
* value — the caller must never present it as a live balance. */
|
|
188
|
-
declare function XpToastContent({ xp, label, color }: XpToastContentProps): react_jsx_runtime.JSX.Element;
|
|
189
|
-
|
|
190
|
-
export { BadgeShelf, type BadgeShelfBadge, type BadgeShelfProps, type LeaderboardEntryLike, LeaderboardTable, type LeaderboardTableProps, LeaderboardWidget, type LeaderboardWidgetProps, LevelBadge, type LevelBadgeProps, LevelLadder, type LevelLadderProps, ScoreSummaryCard, type ScoreSummaryCardProps, XpProgress, type XpProgressProps, XpToastContent, type XpToastContentProps };
|
package/dist/index.js
CHANGED
|
@@ -82,6 +82,7 @@ import { ScoreSummaryCard } from "./components/rewards/score-summary-card.js";
|
|
|
82
82
|
import { LeaderboardTable, LeaderboardWidget } from "./components/rewards/leaderboard-table.js";
|
|
83
83
|
import { LevelLadder } from "./components/rewards/level-ladder.js";
|
|
84
84
|
import { XpToastContent } from "./components/rewards/xp-toast-content.js";
|
|
85
|
+
import { LoadMoreSentinel } from "./components/load-more-sentinel.js";
|
|
85
86
|
export {
|
|
86
87
|
ACTIVITY_MESSAGES,
|
|
87
88
|
ACTIVITY_TYPE_CONFIG,
|
|
@@ -151,6 +152,7 @@ export {
|
|
|
151
152
|
LevelLadder,
|
|
152
153
|
ListingCard,
|
|
153
154
|
ListingCardSkeleton,
|
|
155
|
+
LoadMoreSentinel,
|
|
154
156
|
MedialaneIcon,
|
|
155
157
|
MedialaneLogoFull,
|
|
156
158
|
MotionCard,
|