@medialane/ui 0.93.1 → 0.94.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/portfolio-bento-tile.cjs +16 -27
- package/dist/components/portfolio-bento-tile.cjs.map +1 -1
- package/dist/components/portfolio-bento-tile.d.cts +10 -15
- package/dist/components/portfolio-bento-tile.d.ts +10 -15
- package/dist/components/portfolio-bento-tile.js +16 -27
- package/dist/components/portfolio-bento-tile.js.map +1 -1
- package/dist/components/portfolio-chip-filter.cjs +19 -9
- package/dist/components/portfolio-chip-filter.cjs.map +1 -1
- package/dist/components/portfolio-chip-filter.d.cts +13 -3
- package/dist/components/portfolio-chip-filter.d.ts +13 -3
- package/dist/components/portfolio-chip-filter.js +9 -9
- package/dist/components/portfolio-chip-filter.js.map +1 -1
- package/dist/components/portfolio-header.cjs +42 -17
- package/dist/components/portfolio-header.cjs.map +1 -1
- package/dist/components/portfolio-header.d.cts +4 -4
- package/dist/components/portfolio-header.d.ts +4 -4
- package/dist/components/portfolio-header.js +42 -17
- package/dist/components/portfolio-header.js.map +1 -1
- package/dist/components/portfolio-overview.cjs +8 -6
- package/dist/components/portfolio-overview.cjs.map +1 -1
- package/dist/components/portfolio-overview.d.cts +20 -11
- package/dist/components/portfolio-overview.d.ts +20 -11
- package/dist/components/portfolio-overview.js +8 -6
- package/dist/components/portfolio-overview.js.map +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -36,18 +36,10 @@ var import_jsx_runtime = require("react/jsx-runtime");
|
|
|
36
36
|
var import_link = __toESM(require("next/link"), 1);
|
|
37
37
|
var import_lucide_react = require("lucide-react");
|
|
38
38
|
var import_cn = require("../utils/cn.js");
|
|
39
|
-
const SIZE_CLASS = {
|
|
40
|
-
large: "md:col-span-2 md:row-span-2",
|
|
41
|
-
half: "md:col-span-2 md:row-span-1",
|
|
42
|
-
full: "md:col-span-4 md:row-span-1"
|
|
43
|
-
};
|
|
44
39
|
function PortfolioBentoTile({
|
|
45
40
|
title,
|
|
46
41
|
href,
|
|
47
|
-
size = "
|
|
48
|
-
action,
|
|
49
|
-
isEmpty,
|
|
50
|
-
emptyState,
|
|
42
|
+
size = "default",
|
|
51
43
|
children,
|
|
52
44
|
className
|
|
53
45
|
}) {
|
|
@@ -55,29 +47,26 @@ function PortfolioBentoTile({
|
|
|
55
47
|
"section",
|
|
56
48
|
{
|
|
57
49
|
className: (0, import_cn.cn)(
|
|
58
|
-
"rounded-2xl border border-border/
|
|
59
|
-
|
|
50
|
+
"rounded-2xl border border-border/50 bg-card/60 min-w-0 mb-4 break-inside-avoid",
|
|
51
|
+
size === "wide" && "[column-span:all]",
|
|
60
52
|
className
|
|
61
53
|
),
|
|
62
54
|
children: [
|
|
63
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center justify-between gap-3 px-4 pt-
|
|
55
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center justify-between gap-3 px-4 pt-4 pb-3", children: [
|
|
64
56
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", { className: "text-[11px] font-semibold uppercase tracking-wider text-muted-foreground", children: title }),
|
|
65
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
}
|
|
77
|
-
)
|
|
78
|
-
] })
|
|
57
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
58
|
+
import_link.default,
|
|
59
|
+
{
|
|
60
|
+
href,
|
|
61
|
+
className: "inline-flex items-center gap-1 text-xs font-medium text-muted-foreground hover:text-foreground transition-colors",
|
|
62
|
+
children: [
|
|
63
|
+
"See all",
|
|
64
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ArrowRight, { className: "h-3 w-3" })
|
|
65
|
+
]
|
|
66
|
+
}
|
|
67
|
+
)
|
|
79
68
|
] }),
|
|
80
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "px-4 pb-4
|
|
69
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "px-4 pb-4", children })
|
|
81
70
|
]
|
|
82
71
|
}
|
|
83
72
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/portfolio-bento-tile.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"next/link\";\nimport { ArrowRight } from \"lucide-react\";\nimport { cn } from \"../utils/cn.js\";\n\nexport interface PortfolioBentoTileProps {\n /** Tile heading, e.g. \"Collections\". */\n title: string;\n /** \"See all\" link target
|
|
1
|
+
{"version":3,"sources":["../../src/components/portfolio-bento-tile.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"next/link\";\nimport { ArrowRight } from \"lucide-react\";\nimport { cn } from \"../utils/cn.js\";\n\nexport interface PortfolioBentoTileProps {\n /** Tile heading, e.g. \"Collections\". */\n title: string;\n /** \"See all\" link target. */\n href: string;\n /**\n * \"wide\" breaks the tile out of the masonry column flow to span full\n * width (for list-shaped content like Activity). Default sits in the\n * masonry flow, sized to its own content.\n */\n size?: \"wide\" | \"default\";\n children: React.ReactNode;\n className?: string;\n}\n\n/**\n * A single masonry cell on the portfolio landing page: a titled,\n * media-forward preview of one section, sized to its own content rather\n * than a fixed grid track, expanding into its full subpage via \"See all\".\n * Pure presentation — content is supplied by the caller.\n */\nexport function PortfolioBentoTile({\n title,\n href,\n size = \"default\",\n children,\n className,\n}: PortfolioBentoTileProps) {\n return (\n <section\n className={cn(\n \"rounded-2xl border border-border/50 bg-card/60 min-w-0 mb-4 break-inside-avoid\",\n size === \"wide\" && \"[column-span:all]\",\n className,\n )}\n >\n <div className=\"flex items-center justify-between gap-3 px-4 pt-4 pb-3\">\n <h2 className=\"text-[11px] font-semibold uppercase tracking-wider text-muted-foreground\">\n {title}\n </h2>\n <Link\n href={href}\n className=\"inline-flex items-center gap-1 text-xs font-medium text-muted-foreground hover:text-foreground transition-colors\"\n >\n See all\n <ArrowRight className=\"h-3 w-3\" />\n </Link>\n </div>\n <div className=\"px-4 pb-4\">{children}</div>\n </section>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA2CQ;AAzCR,kBAAiB;AACjB,0BAA2B;AAC3B,gBAAmB;AAuBZ,SAAS,mBAAmB;AAAA,EACjC;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AACF,GAA4B;AAC1B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAW;AAAA,QACT;AAAA,QACA,SAAS,UAAU;AAAA,QACnB;AAAA,MACF;AAAA,MAEA;AAAA,qDAAC,SAAI,WAAU,0DACb;AAAA,sDAAC,QAAG,WAAU,4EACX,iBACH;AAAA,UACA;AAAA,YAAC,YAAAA;AAAA,YAAA;AAAA,cACC;AAAA,cACA,WAAU;AAAA,cACX;AAAA;AAAA,gBAEC,4CAAC,kCAAW,WAAU,WAAU;AAAA;AAAA;AAAA,UAClC;AAAA,WACF;AAAA,QACA,4CAAC,SAAI,WAAU,aAAa,UAAS;AAAA;AAAA;AAAA,EACvC;AAEJ;","names":["Link"]}
|
|
@@ -3,28 +3,23 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
|
3
3
|
interface PortfolioBentoTileProps {
|
|
4
4
|
/** Tile heading, e.g. "Collections". */
|
|
5
5
|
title: string;
|
|
6
|
-
/** "See all" link target
|
|
6
|
+
/** "See all" link target. */
|
|
7
7
|
href: string;
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
10
|
-
* (
|
|
11
|
-
*
|
|
9
|
+
* "wide" breaks the tile out of the masonry column flow to span full
|
|
10
|
+
* width (for list-shaped content like Activity). Default sits in the
|
|
11
|
+
* masonry flow, sized to its own content.
|
|
12
12
|
*/
|
|
13
|
-
size?: "
|
|
14
|
-
/** Single primary in-tile action, rendered top-right of the tile header (e.g. a "List" button). */
|
|
15
|
-
action?: React.ReactNode;
|
|
16
|
-
/** True when this tile's content is empty — renders emptyState instead of children. */
|
|
17
|
-
isEmpty?: boolean;
|
|
18
|
-
emptyState?: React.ReactNode;
|
|
13
|
+
size?: "wide" | "default";
|
|
19
14
|
children: React.ReactNode;
|
|
20
15
|
className?: string;
|
|
21
16
|
}
|
|
22
17
|
/**
|
|
23
|
-
* A single
|
|
24
|
-
* preview of one section
|
|
25
|
-
*
|
|
26
|
-
*
|
|
18
|
+
* A single masonry cell on the portfolio landing page: a titled,
|
|
19
|
+
* media-forward preview of one section, sized to its own content rather
|
|
20
|
+
* than a fixed grid track, expanding into its full subpage via "See all".
|
|
21
|
+
* Pure presentation — content is supplied by the caller.
|
|
27
22
|
*/
|
|
28
|
-
declare function PortfolioBentoTile({ title, href, size,
|
|
23
|
+
declare function PortfolioBentoTile({ title, href, size, children, className, }: PortfolioBentoTileProps): react_jsx_runtime.JSX.Element;
|
|
29
24
|
|
|
30
25
|
export { PortfolioBentoTile, type PortfolioBentoTileProps };
|
|
@@ -3,28 +3,23 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
|
3
3
|
interface PortfolioBentoTileProps {
|
|
4
4
|
/** Tile heading, e.g. "Collections". */
|
|
5
5
|
title: string;
|
|
6
|
-
/** "See all" link target
|
|
6
|
+
/** "See all" link target. */
|
|
7
7
|
href: string;
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
10
|
-
* (
|
|
11
|
-
*
|
|
9
|
+
* "wide" breaks the tile out of the masonry column flow to span full
|
|
10
|
+
* width (for list-shaped content like Activity). Default sits in the
|
|
11
|
+
* masonry flow, sized to its own content.
|
|
12
12
|
*/
|
|
13
|
-
size?: "
|
|
14
|
-
/** Single primary in-tile action, rendered top-right of the tile header (e.g. a "List" button). */
|
|
15
|
-
action?: React.ReactNode;
|
|
16
|
-
/** True when this tile's content is empty — renders emptyState instead of children. */
|
|
17
|
-
isEmpty?: boolean;
|
|
18
|
-
emptyState?: React.ReactNode;
|
|
13
|
+
size?: "wide" | "default";
|
|
19
14
|
children: React.ReactNode;
|
|
20
15
|
className?: string;
|
|
21
16
|
}
|
|
22
17
|
/**
|
|
23
|
-
* A single
|
|
24
|
-
* preview of one section
|
|
25
|
-
*
|
|
26
|
-
*
|
|
18
|
+
* A single masonry cell on the portfolio landing page: a titled,
|
|
19
|
+
* media-forward preview of one section, sized to its own content rather
|
|
20
|
+
* than a fixed grid track, expanding into its full subpage via "See all".
|
|
21
|
+
* Pure presentation — content is supplied by the caller.
|
|
27
22
|
*/
|
|
28
|
-
declare function PortfolioBentoTile({ title, href, size,
|
|
23
|
+
declare function PortfolioBentoTile({ title, href, size, children, className, }: PortfolioBentoTileProps): react_jsx_runtime.JSX.Element;
|
|
29
24
|
|
|
30
25
|
export { PortfolioBentoTile, type PortfolioBentoTileProps };
|
|
@@ -3,18 +3,10 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
import Link from "next/link";
|
|
4
4
|
import { ArrowRight } from "lucide-react";
|
|
5
5
|
import { cn } from "../utils/cn.js";
|
|
6
|
-
const SIZE_CLASS = {
|
|
7
|
-
large: "md:col-span-2 md:row-span-2",
|
|
8
|
-
half: "md:col-span-2 md:row-span-1",
|
|
9
|
-
full: "md:col-span-4 md:row-span-1"
|
|
10
|
-
};
|
|
11
6
|
function PortfolioBentoTile({
|
|
12
7
|
title,
|
|
13
8
|
href,
|
|
14
|
-
size = "
|
|
15
|
-
action,
|
|
16
|
-
isEmpty,
|
|
17
|
-
emptyState,
|
|
9
|
+
size = "default",
|
|
18
10
|
children,
|
|
19
11
|
className
|
|
20
12
|
}) {
|
|
@@ -22,29 +14,26 @@ function PortfolioBentoTile({
|
|
|
22
14
|
"section",
|
|
23
15
|
{
|
|
24
16
|
className: cn(
|
|
25
|
-
"rounded-2xl border border-border/
|
|
26
|
-
|
|
17
|
+
"rounded-2xl border border-border/50 bg-card/60 min-w-0 mb-4 break-inside-avoid",
|
|
18
|
+
size === "wide" && "[column-span:all]",
|
|
27
19
|
className
|
|
28
20
|
),
|
|
29
21
|
children: [
|
|
30
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-3 px-4 pt-
|
|
22
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-3 px-4 pt-4 pb-3", children: [
|
|
31
23
|
/* @__PURE__ */ jsx("h2", { className: "text-[11px] font-semibold uppercase tracking-wider text-muted-foreground", children: title }),
|
|
32
|
-
/* @__PURE__ */ jsxs(
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
)
|
|
45
|
-
] })
|
|
24
|
+
/* @__PURE__ */ jsxs(
|
|
25
|
+
Link,
|
|
26
|
+
{
|
|
27
|
+
href,
|
|
28
|
+
className: "inline-flex items-center gap-1 text-xs font-medium text-muted-foreground hover:text-foreground transition-colors",
|
|
29
|
+
children: [
|
|
30
|
+
"See all",
|
|
31
|
+
/* @__PURE__ */ jsx(ArrowRight, { className: "h-3 w-3" })
|
|
32
|
+
]
|
|
33
|
+
}
|
|
34
|
+
)
|
|
46
35
|
] }),
|
|
47
|
-
/* @__PURE__ */ jsx("div", { className: "px-4 pb-4
|
|
36
|
+
/* @__PURE__ */ jsx("div", { className: "px-4 pb-4", children })
|
|
48
37
|
]
|
|
49
38
|
}
|
|
50
39
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/portfolio-bento-tile.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"next/link\";\nimport { ArrowRight } from \"lucide-react\";\nimport { cn } from \"../utils/cn.js\";\n\nexport interface PortfolioBentoTileProps {\n /** Tile heading, e.g. \"Collections\". */\n title: string;\n /** \"See all\" link target
|
|
1
|
+
{"version":3,"sources":["../../src/components/portfolio-bento-tile.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"next/link\";\nimport { ArrowRight } from \"lucide-react\";\nimport { cn } from \"../utils/cn.js\";\n\nexport interface PortfolioBentoTileProps {\n /** Tile heading, e.g. \"Collections\". */\n title: string;\n /** \"See all\" link target. */\n href: string;\n /**\n * \"wide\" breaks the tile out of the masonry column flow to span full\n * width (for list-shaped content like Activity). Default sits in the\n * masonry flow, sized to its own content.\n */\n size?: \"wide\" | \"default\";\n children: React.ReactNode;\n className?: string;\n}\n\n/**\n * A single masonry cell on the portfolio landing page: a titled,\n * media-forward preview of one section, sized to its own content rather\n * than a fixed grid track, expanding into its full subpage via \"See all\".\n * Pure presentation — content is supplied by the caller.\n */\nexport function PortfolioBentoTile({\n title,\n href,\n size = \"default\",\n children,\n className,\n}: PortfolioBentoTileProps) {\n return (\n <section\n className={cn(\n \"rounded-2xl border border-border/50 bg-card/60 min-w-0 mb-4 break-inside-avoid\",\n size === \"wide\" && \"[column-span:all]\",\n className,\n )}\n >\n <div className=\"flex items-center justify-between gap-3 px-4 pt-4 pb-3\">\n <h2 className=\"text-[11px] font-semibold uppercase tracking-wider text-muted-foreground\">\n {title}\n </h2>\n <Link\n href={href}\n className=\"inline-flex items-center gap-1 text-xs font-medium text-muted-foreground hover:text-foreground transition-colors\"\n >\n See all\n <ArrowRight className=\"h-3 w-3\" />\n </Link>\n </div>\n <div className=\"px-4 pb-4\">{children}</div>\n </section>\n );\n}\n"],"mappings":";AA2CQ,cAGA,YAHA;AAzCR,OAAO,UAAU;AACjB,SAAS,kBAAkB;AAC3B,SAAS,UAAU;AAuBZ,SAAS,mBAAmB;AAAA,EACjC;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AACF,GAA4B;AAC1B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA,SAAS,UAAU;AAAA,QACnB;AAAA,MACF;AAAA,MAEA;AAAA,6BAAC,SAAI,WAAU,0DACb;AAAA,8BAAC,QAAG,WAAU,4EACX,iBACH;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC;AAAA,cACA,WAAU;AAAA,cACX;AAAA;AAAA,gBAEC,oBAAC,cAAW,WAAU,WAAU;AAAA;AAAA;AAAA,UAClC;AAAA,WACF;AAAA,QACA,oBAAC,SAAI,WAAU,aAAa,UAAS;AAAA;AAAA;AAAA,EACvC;AAEJ;","names":[]}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
"use client";
|
|
3
|
+
var __create = Object.create;
|
|
3
4
|
var __defProp = Object.defineProperty;
|
|
4
5
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
6
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
8
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
9
|
var __export = (target, all) => {
|
|
8
10
|
for (var name in all)
|
|
@@ -16,6 +18,14 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
18
|
}
|
|
17
19
|
return to;
|
|
18
20
|
};
|
|
21
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
22
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
23
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
24
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
25
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
26
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
27
|
+
mod
|
|
28
|
+
));
|
|
19
29
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
30
|
var portfolio_chip_filter_exports = {};
|
|
21
31
|
__export(portfolio_chip_filter_exports, {
|
|
@@ -23,7 +33,11 @@ __export(portfolio_chip_filter_exports, {
|
|
|
23
33
|
});
|
|
24
34
|
module.exports = __toCommonJS(portfolio_chip_filter_exports);
|
|
25
35
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
36
|
+
var import_link = __toESM(require("next/link"), 1);
|
|
26
37
|
var import_cn = require("../utils/cn.js");
|
|
38
|
+
const CHIP_CLASS = "shrink-0 rounded-full px-3.5 py-1.5 text-[13px] whitespace-nowrap transition-colors";
|
|
39
|
+
const INACTIVE_CLASS = "bg-muted text-muted-foreground hover:text-foreground";
|
|
40
|
+
const ACTIVE_CLASS = "bg-primary text-primary-foreground font-medium";
|
|
27
41
|
function PortfolioChipFilter({
|
|
28
42
|
options,
|
|
29
43
|
value,
|
|
@@ -39,22 +53,18 @@ function PortfolioChipFilter({
|
|
|
39
53
|
"flex items-center gap-1.5 overflow-x-auto scrollbar-hide -mx-4 px-4 sm:-mx-6 sm:px-6 lg:-mx-8 lg:px-8",
|
|
40
54
|
className
|
|
41
55
|
),
|
|
42
|
-
children: items.map(
|
|
43
|
-
|
|
44
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
56
|
+
children: items.map(
|
|
57
|
+
(item) => item.href ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_link.default, { href: item.href, className: (0, import_cn.cn)(CHIP_CLASS, INACTIVE_CLASS), children: item.label }, item.key) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
45
58
|
"button",
|
|
46
59
|
{
|
|
47
60
|
type: "button",
|
|
48
61
|
onClick: () => onChange(item.key),
|
|
49
|
-
className: (0, import_cn.cn)(
|
|
50
|
-
"shrink-0 rounded-full px-3.5 py-1.5 text-[13px] whitespace-nowrap transition-colors",
|
|
51
|
-
active ? "bg-primary text-primary-foreground font-medium" : "bg-muted text-muted-foreground hover:text-foreground"
|
|
52
|
-
),
|
|
62
|
+
className: (0, import_cn.cn)(CHIP_CLASS, item.key === value ? ACTIVE_CLASS : INACTIVE_CLASS),
|
|
53
63
|
children: item.label
|
|
54
64
|
},
|
|
55
65
|
item.key
|
|
56
|
-
)
|
|
57
|
-
|
|
66
|
+
)
|
|
67
|
+
)
|
|
58
68
|
}
|
|
59
69
|
);
|
|
60
70
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/portfolio-chip-filter.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn } from \"../utils/cn.js\";\n\nexport interface PortfolioChipFilterOption {\n key: string;\n label: string;\n}\n\nexport interface PortfolioChipFilterProps {\n options: PortfolioChipFilterOption[];\n /** Selected option key, or \"all\". */\n value: string;\n onChange: (key: string) => void;\n className?: string;\n}\n\n/**\n * Horizontally-scrollable chip row for fast lateral access across
|
|
1
|
+
{"version":3,"sources":["../../src/components/portfolio-chip-filter.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"next/link\";\nimport { cn } from \"../utils/cn.js\";\n\nexport interface PortfolioChipFilterOption {\n key: string;\n label: string;\n /**\n * When set, this chip is a direct navigation link (e.g. \"Listings\",\n * \"Sponsorships\") rather than an in-page filter — for portfolio sections\n * that don't have their own bento tile. Never participates in the active\n * filter state.\n */\n href?: string;\n}\n\nexport interface PortfolioChipFilterProps {\n options: PortfolioChipFilterOption[];\n /** Selected option key, or \"all\". */\n value: string;\n onChange: (key: string) => void;\n className?: string;\n}\n\nconst CHIP_CLASS =\n \"shrink-0 rounded-full px-3.5 py-1.5 text-[13px] whitespace-nowrap transition-colors\";\nconst INACTIVE_CLASS = \"bg-muted text-muted-foreground hover:text-foreground\";\nconst ACTIVE_CLASS = \"bg-primary text-primary-foreground font-medium\";\n\n/**\n * Horizontally-scrollable chip row for fast lateral access across every\n * portfolio section (Instagram/YouTube-style filter chips) — this is the\n * page's sole fast-access mechanism, replacing tab navigation entirely.\n * Filter chips (no `href`) narrow which bento tiles are visible on the same\n * page. Link chips (`href` set) navigate straight to a subpage that has no\n * tile of its own (Listings, Offers, Sponsorships, …).\n */\nexport function PortfolioChipFilter({\n options,\n value,\n onChange,\n className,\n}: PortfolioChipFilterProps) {\n const all: PortfolioChipFilterOption = { key: \"all\", label: \"All\" };\n const items = [all, ...options];\n\n return (\n <div\n className={cn(\n \"flex items-center gap-1.5 overflow-x-auto scrollbar-hide -mx-4 px-4 sm:-mx-6 sm:px-6 lg:-mx-8 lg:px-8\",\n className,\n )}\n >\n {items.map((item) =>\n item.href ? (\n <Link key={item.key} href={item.href} className={cn(CHIP_CLASS, INACTIVE_CLASS)}>\n {item.label}\n </Link>\n ) : (\n <button\n key={item.key}\n type=\"button\"\n onClick={() => onChange(item.key)}\n className={cn(CHIP_CLASS, item.key === value ? ACTIVE_CLASS : INACTIVE_CLASS)}\n >\n {item.label}\n </button>\n ),\n )}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAwDU;AAtDV,kBAAiB;AACjB,gBAAmB;AAsBnB,MAAM,aACJ;AACF,MAAM,iBAAiB;AACvB,MAAM,eAAe;AAUd,SAAS,oBAAoB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA6B;AAC3B,QAAM,MAAiC,EAAE,KAAK,OAAO,OAAO,MAAM;AAClE,QAAM,QAAQ,CAAC,KAAK,GAAG,OAAO;AAE9B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MAEC,gBAAM;AAAA,QAAI,CAAC,SACV,KAAK,OACH,4CAAC,YAAAA,SAAA,EAAoB,MAAM,KAAK,MAAM,eAAW,cAAG,YAAY,cAAc,GAC3E,eAAK,SADG,KAAK,GAEhB,IAEA;AAAA,UAAC;AAAA;AAAA,YAEC,MAAK;AAAA,YACL,SAAS,MAAM,SAAS,KAAK,GAAG;AAAA,YAChC,eAAW,cAAG,YAAY,KAAK,QAAQ,QAAQ,eAAe,cAAc;AAAA,YAE3E,eAAK;AAAA;AAAA,UALD,KAAK;AAAA,QAMZ;AAAA,MAEJ;AAAA;AAAA,EACF;AAEJ;","names":["Link"]}
|
|
@@ -3,6 +3,13 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
|
3
3
|
interface PortfolioChipFilterOption {
|
|
4
4
|
key: string;
|
|
5
5
|
label: string;
|
|
6
|
+
/**
|
|
7
|
+
* When set, this chip is a direct navigation link (e.g. "Listings",
|
|
8
|
+
* "Sponsorships") rather than an in-page filter — for portfolio sections
|
|
9
|
+
* that don't have their own bento tile. Never participates in the active
|
|
10
|
+
* filter state.
|
|
11
|
+
*/
|
|
12
|
+
href?: string;
|
|
6
13
|
}
|
|
7
14
|
interface PortfolioChipFilterProps {
|
|
8
15
|
options: PortfolioChipFilterOption[];
|
|
@@ -12,9 +19,12 @@ interface PortfolioChipFilterProps {
|
|
|
12
19
|
className?: string;
|
|
13
20
|
}
|
|
14
21
|
/**
|
|
15
|
-
* Horizontally-scrollable chip row for fast lateral access across
|
|
16
|
-
*
|
|
17
|
-
*
|
|
22
|
+
* Horizontally-scrollable chip row for fast lateral access across every
|
|
23
|
+
* portfolio section (Instagram/YouTube-style filter chips) — this is the
|
|
24
|
+
* page's sole fast-access mechanism, replacing tab navigation entirely.
|
|
25
|
+
* Filter chips (no `href`) narrow which bento tiles are visible on the same
|
|
26
|
+
* page. Link chips (`href` set) navigate straight to a subpage that has no
|
|
27
|
+
* tile of its own (Listings, Offers, Sponsorships, …).
|
|
18
28
|
*/
|
|
19
29
|
declare function PortfolioChipFilter({ options, value, onChange, className, }: PortfolioChipFilterProps): react_jsx_runtime.JSX.Element;
|
|
20
30
|
|
|
@@ -3,6 +3,13 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
|
3
3
|
interface PortfolioChipFilterOption {
|
|
4
4
|
key: string;
|
|
5
5
|
label: string;
|
|
6
|
+
/**
|
|
7
|
+
* When set, this chip is a direct navigation link (e.g. "Listings",
|
|
8
|
+
* "Sponsorships") rather than an in-page filter — for portfolio sections
|
|
9
|
+
* that don't have their own bento tile. Never participates in the active
|
|
10
|
+
* filter state.
|
|
11
|
+
*/
|
|
12
|
+
href?: string;
|
|
6
13
|
}
|
|
7
14
|
interface PortfolioChipFilterProps {
|
|
8
15
|
options: PortfolioChipFilterOption[];
|
|
@@ -12,9 +19,12 @@ interface PortfolioChipFilterProps {
|
|
|
12
19
|
className?: string;
|
|
13
20
|
}
|
|
14
21
|
/**
|
|
15
|
-
* Horizontally-scrollable chip row for fast lateral access across
|
|
16
|
-
*
|
|
17
|
-
*
|
|
22
|
+
* Horizontally-scrollable chip row for fast lateral access across every
|
|
23
|
+
* portfolio section (Instagram/YouTube-style filter chips) — this is the
|
|
24
|
+
* page's sole fast-access mechanism, replacing tab navigation entirely.
|
|
25
|
+
* Filter chips (no `href`) narrow which bento tiles are visible on the same
|
|
26
|
+
* page. Link chips (`href` set) navigate straight to a subpage that has no
|
|
27
|
+
* tile of its own (Listings, Offers, Sponsorships, …).
|
|
18
28
|
*/
|
|
19
29
|
declare function PortfolioChipFilter({ options, value, onChange, className, }: PortfolioChipFilterProps): react_jsx_runtime.JSX.Element;
|
|
20
30
|
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import Link from "next/link";
|
|
3
4
|
import { cn } from "../utils/cn.js";
|
|
5
|
+
const CHIP_CLASS = "shrink-0 rounded-full px-3.5 py-1.5 text-[13px] whitespace-nowrap transition-colors";
|
|
6
|
+
const INACTIVE_CLASS = "bg-muted text-muted-foreground hover:text-foreground";
|
|
7
|
+
const ACTIVE_CLASS = "bg-primary text-primary-foreground font-medium";
|
|
4
8
|
function PortfolioChipFilter({
|
|
5
9
|
options,
|
|
6
10
|
value,
|
|
@@ -16,22 +20,18 @@ function PortfolioChipFilter({
|
|
|
16
20
|
"flex items-center gap-1.5 overflow-x-auto scrollbar-hide -mx-4 px-4 sm:-mx-6 sm:px-6 lg:-mx-8 lg:px-8",
|
|
17
21
|
className
|
|
18
22
|
),
|
|
19
|
-
children: items.map(
|
|
20
|
-
|
|
21
|
-
return /* @__PURE__ */ jsx(
|
|
23
|
+
children: items.map(
|
|
24
|
+
(item) => item.href ? /* @__PURE__ */ jsx(Link, { href: item.href, className: cn(CHIP_CLASS, INACTIVE_CLASS), children: item.label }, item.key) : /* @__PURE__ */ jsx(
|
|
22
25
|
"button",
|
|
23
26
|
{
|
|
24
27
|
type: "button",
|
|
25
28
|
onClick: () => onChange(item.key),
|
|
26
|
-
className: cn(
|
|
27
|
-
"shrink-0 rounded-full px-3.5 py-1.5 text-[13px] whitespace-nowrap transition-colors",
|
|
28
|
-
active ? "bg-primary text-primary-foreground font-medium" : "bg-muted text-muted-foreground hover:text-foreground"
|
|
29
|
-
),
|
|
29
|
+
className: cn(CHIP_CLASS, item.key === value ? ACTIVE_CLASS : INACTIVE_CLASS),
|
|
30
30
|
children: item.label
|
|
31
31
|
},
|
|
32
32
|
item.key
|
|
33
|
-
)
|
|
34
|
-
|
|
33
|
+
)
|
|
34
|
+
)
|
|
35
35
|
}
|
|
36
36
|
);
|
|
37
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/portfolio-chip-filter.tsx"],"sourcesContent":["\"use client\";\n\nimport { cn } from \"../utils/cn.js\";\n\nexport interface PortfolioChipFilterOption {\n key: string;\n label: string;\n}\n\nexport interface PortfolioChipFilterProps {\n options: PortfolioChipFilterOption[];\n /** Selected option key, or \"all\". */\n value: string;\n onChange: (key: string) => void;\n className?: string;\n}\n\n/**\n * Horizontally-scrollable chip row for fast lateral access across
|
|
1
|
+
{"version":3,"sources":["../../src/components/portfolio-chip-filter.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"next/link\";\nimport { cn } from \"../utils/cn.js\";\n\nexport interface PortfolioChipFilterOption {\n key: string;\n label: string;\n /**\n * When set, this chip is a direct navigation link (e.g. \"Listings\",\n * \"Sponsorships\") rather than an in-page filter — for portfolio sections\n * that don't have their own bento tile. Never participates in the active\n * filter state.\n */\n href?: string;\n}\n\nexport interface PortfolioChipFilterProps {\n options: PortfolioChipFilterOption[];\n /** Selected option key, or \"all\". */\n value: string;\n onChange: (key: string) => void;\n className?: string;\n}\n\nconst CHIP_CLASS =\n \"shrink-0 rounded-full px-3.5 py-1.5 text-[13px] whitespace-nowrap transition-colors\";\nconst INACTIVE_CLASS = \"bg-muted text-muted-foreground hover:text-foreground\";\nconst ACTIVE_CLASS = \"bg-primary text-primary-foreground font-medium\";\n\n/**\n * Horizontally-scrollable chip row for fast lateral access across every\n * portfolio section (Instagram/YouTube-style filter chips) — this is the\n * page's sole fast-access mechanism, replacing tab navigation entirely.\n * Filter chips (no `href`) narrow which bento tiles are visible on the same\n * page. Link chips (`href` set) navigate straight to a subpage that has no\n * tile of its own (Listings, Offers, Sponsorships, …).\n */\nexport function PortfolioChipFilter({\n options,\n value,\n onChange,\n className,\n}: PortfolioChipFilterProps) {\n const all: PortfolioChipFilterOption = { key: \"all\", label: \"All\" };\n const items = [all, ...options];\n\n return (\n <div\n className={cn(\n \"flex items-center gap-1.5 overflow-x-auto scrollbar-hide -mx-4 px-4 sm:-mx-6 sm:px-6 lg:-mx-8 lg:px-8\",\n className,\n )}\n >\n {items.map((item) =>\n item.href ? (\n <Link key={item.key} href={item.href} className={cn(CHIP_CLASS, INACTIVE_CLASS)}>\n {item.label}\n </Link>\n ) : (\n <button\n key={item.key}\n type=\"button\"\n onClick={() => onChange(item.key)}\n className={cn(CHIP_CLASS, item.key === value ? ACTIVE_CLASS : INACTIVE_CLASS)}\n >\n {item.label}\n </button>\n ),\n )}\n </div>\n );\n}\n"],"mappings":";AAwDU;AAtDV,OAAO,UAAU;AACjB,SAAS,UAAU;AAsBnB,MAAM,aACJ;AACF,MAAM,iBAAiB;AACvB,MAAM,eAAe;AAUd,SAAS,oBAAoB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA6B;AAC3B,QAAM,MAAiC,EAAE,KAAK,OAAO,OAAO,MAAM;AAClE,QAAM,QAAQ,CAAC,KAAK,GAAG,OAAO;AAE9B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MAEC,gBAAM;AAAA,QAAI,CAAC,SACV,KAAK,OACH,oBAAC,QAAoB,MAAM,KAAK,MAAM,WAAW,GAAG,YAAY,cAAc,GAC3E,eAAK,SADG,KAAK,GAEhB,IAEA;AAAA,UAAC;AAAA;AAAA,YAEC,MAAK;AAAA,YACL,SAAS,MAAM,SAAS,KAAK,GAAG;AAAA,YAChC,WAAW,GAAG,YAAY,KAAK,QAAQ,QAAQ,eAAe,cAAc;AAAA,YAE3E,eAAK;AAAA;AAAA,UALD,KAAK;AAAA,QAMZ;AAAA,MAEJ;AAAA;AAAA,EACF;AAEJ;","names":[]}
|
|
@@ -34,9 +34,33 @@ __export(portfolio_header_exports, {
|
|
|
34
34
|
module.exports = __toCommonJS(portfolio_header_exports);
|
|
35
35
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
36
36
|
var import_link = __toESM(require("next/link"), 1);
|
|
37
|
-
var import_lucide_react = require("lucide-react");
|
|
38
37
|
var import_cn = require("../utils/cn.js");
|
|
39
38
|
var import_address_display = require("./address-display.js");
|
|
39
|
+
function angleFromAddress(address) {
|
|
40
|
+
let hash = 0;
|
|
41
|
+
for (let i = 0; i < address.length; i++) {
|
|
42
|
+
hash = hash * 31 + address.charCodeAt(i) >>> 0;
|
|
43
|
+
}
|
|
44
|
+
return hash % 360;
|
|
45
|
+
}
|
|
46
|
+
function IdentityMark({ address }) {
|
|
47
|
+
const angle = angleFromAddress(address);
|
|
48
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
49
|
+
"div",
|
|
50
|
+
{
|
|
51
|
+
className: "h-11 w-11 shrink-0 rounded-2xl",
|
|
52
|
+
style: {
|
|
53
|
+
// Brand palette hardcoded here — this preset defines colors via
|
|
54
|
+
// Tailwind's JS config (no auto-generated CSS custom properties to
|
|
55
|
+
// reference), so `var(--color-brand-*)` isn't available. Keep these
|
|
56
|
+
// three hexes in sync with `preset/tailwind.ts`'s brand-purple/
|
|
57
|
+
// brand-blue/brand-orange if that palette ever changes.
|
|
58
|
+
background: `linear-gradient(${angle}deg, #8a5cf6, #3b7bff 55%, #fb8b46)`
|
|
59
|
+
},
|
|
60
|
+
"aria-hidden": true
|
|
61
|
+
}
|
|
62
|
+
);
|
|
63
|
+
}
|
|
40
64
|
function PortfolioHeader({
|
|
41
65
|
address,
|
|
42
66
|
score,
|
|
@@ -49,22 +73,23 @@ function PortfolioHeader({
|
|
|
49
73
|
" XP"
|
|
50
74
|
] })
|
|
51
75
|
] }) });
|
|
52
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
53
|
-
"div",
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
/* @__PURE__ */ (0, import_jsx_runtime.
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
]
|
|
66
|
-
}
|
|
67
|
-
|
|
76
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: (0, import_cn.cn)("flex items-center justify-between gap-4", className), children: [
|
|
77
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center gap-3 min-w-0", children: [
|
|
78
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(IdentityMark, { address }),
|
|
79
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "min-w-0", children: [
|
|
80
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-[11px] font-semibold uppercase tracking-wider text-muted-foreground", children: "Portfolio" }),
|
|
81
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
82
|
+
import_address_display.AddressDisplay,
|
|
83
|
+
{
|
|
84
|
+
address,
|
|
85
|
+
chars: 6,
|
|
86
|
+
className: "text-xl font-bold tracking-tight text-foreground"
|
|
87
|
+
}
|
|
88
|
+
)
|
|
89
|
+
] })
|
|
90
|
+
] }),
|
|
91
|
+
score?.href ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_link.default, { href: score.href, className: "shrink-0 active:opacity-80", children: scoreChip }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "shrink-0", children: scoreChip })
|
|
92
|
+
] });
|
|
68
93
|
}
|
|
69
94
|
// Annotate the CommonJS export names for ESM import in node:
|
|
70
95
|
0 && (module.exports = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/portfolio-header.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"next/link\";\nimport {
|
|
1
|
+
{"version":3,"sources":["../../src/components/portfolio-header.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"next/link\";\nimport { cn } from \"../utils/cn.js\";\nimport { AddressDisplay } from \"./address-display.js\";\n\nexport interface PortfolioHeaderScore {\n /** Journey level name (\"Starter\", \"Explorer\", …) — no numeric level shown. */\n levelName: string;\n totalXp: number;\n /** Where the score chip links (\"/rewards\"). */\n href?: string;\n}\n\nexport interface PortfolioHeaderProps {\n address: string;\n score?: PortfolioHeaderScore | null;\n className?: string;\n}\n\n/** Deterministic rotation angle from the address, so each wallet gets a\n * distinct but stable gradient built entirely from existing brand colors. */\nfunction angleFromAddress(address: string): number {\n let hash = 0;\n for (let i = 0; i < address.length; i++) {\n hash = (hash * 31 + address.charCodeAt(i)) >>> 0;\n }\n return hash % 360;\n}\n\nfunction IdentityMark({ address }: { address: string }) {\n const angle = angleFromAddress(address);\n return (\n <div\n className=\"h-11 w-11 shrink-0 rounded-2xl\"\n style={{\n // Brand palette hardcoded here — this preset defines colors via\n // Tailwind's JS config (no auto-generated CSS custom properties to\n // reference), so `var(--color-brand-*)` isn't available. Keep these\n // three hexes in sync with `preset/tailwind.ts`'s brand-purple/\n // brand-blue/brand-orange if that palette ever changes.\n background: `linear-gradient(${angle}deg, #8a5cf6, #3b7bff 55%, #fb8b46)`,\n }}\n aria-hidden\n />\n );\n}\n\n/**\n * Portfolio identity header: a generated identity mark + the address as a\n * real page title (there's no profile/avatar data to lead with instead),\n * with the rewards journey chip alongside it — one cohesive block rather\n * than two disconnected elements at opposite corners.\n */\nexport function PortfolioHeader({\n address,\n score,\n className,\n}: PortfolioHeaderProps) {\n const scoreChip = score && (\n <div className=\"btn-border-animated p-[1.5px] rounded-full\">\n <div className=\"rounded-full bg-card px-3.5 py-1.5 flex items-baseline gap-2 whitespace-nowrap\">\n <span className=\"text-sm font-semibold text-foreground\">\n {score.levelName}\n </span>\n <span className=\"text-xs text-muted-foreground tabular-nums\">\n {score.totalXp.toLocaleString()} XP\n </span>\n </div>\n </div>\n );\n\n return (\n <div className={cn(\"flex items-center justify-between gap-4\", className)}>\n <div className=\"flex items-center gap-3 min-w-0\">\n <IdentityMark address={address} />\n <div className=\"min-w-0\">\n <p className=\"text-[11px] font-semibold uppercase tracking-wider text-muted-foreground\">\n Portfolio\n </p>\n <AddressDisplay\n address={address}\n chars={6}\n className=\"text-xl font-bold tracking-tight text-foreground\"\n />\n </div>\n </div>\n {score?.href ? (\n <Link href={score.href} className=\"shrink-0 active:opacity-80\">\n {scoreChip}\n </Link>\n ) : (\n <div className=\"shrink-0\">{scoreChip}</div>\n )}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAiCI;AA/BJ,kBAAiB;AACjB,gBAAmB;AACnB,6BAA+B;AAkB/B,SAAS,iBAAiB,SAAyB;AACjD,MAAI,OAAO;AACX,WAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,WAAQ,OAAO,KAAK,QAAQ,WAAW,CAAC,MAAO;AAAA,EACjD;AACA,SAAO,OAAO;AAChB;AAEA,SAAS,aAAa,EAAE,QAAQ,GAAwB;AACtD,QAAM,QAAQ,iBAAiB,OAAO;AACtC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAML,YAAY,mBAAmB,KAAK;AAAA,MACtC;AAAA,MACA,eAAW;AAAA;AAAA,EACb;AAEJ;AAQO,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AACF,GAAyB;AACvB,QAAM,YAAY,SAChB,4CAAC,SAAI,WAAU,8CACb,uDAAC,SAAI,WAAU,kFACb;AAAA,gDAAC,UAAK,WAAU,yCACb,gBAAM,WACT;AAAA,IACA,6CAAC,UAAK,WAAU,8CACb;AAAA,YAAM,QAAQ,eAAe;AAAA,MAAE;AAAA,OAClC;AAAA,KACF,GACF;AAGF,SACE,6CAAC,SAAI,eAAW,cAAG,2CAA2C,SAAS,GACrE;AAAA,iDAAC,SAAI,WAAU,mCACb;AAAA,kDAAC,gBAAa,SAAkB;AAAA,MAChC,6CAAC,SAAI,WAAU,WACb;AAAA,oDAAC,OAAE,WAAU,4EAA2E,uBAExF;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA,OAAO;AAAA,YACP,WAAU;AAAA;AAAA,QACZ;AAAA,SACF;AAAA,OACF;AAAA,IACC,OAAO,OACN,4CAAC,YAAAA,SAAA,EAAK,MAAM,MAAM,MAAM,WAAU,8BAC/B,qBACH,IAEA,4CAAC,SAAI,WAAU,YAAY,qBAAU;AAAA,KAEzC;AAEJ;","names":["Link"]}
|
|
@@ -13,10 +13,10 @@ interface PortfolioHeaderProps {
|
|
|
13
13
|
className?: string;
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
16
|
+
* Portfolio identity header: a generated identity mark + the address as a
|
|
17
|
+
* real page title (there's no profile/avatar data to lead with instead),
|
|
18
|
+
* with the rewards journey chip alongside it — one cohesive block rather
|
|
19
|
+
* than two disconnected elements at opposite corners.
|
|
20
20
|
*/
|
|
21
21
|
declare function PortfolioHeader({ address, score, className, }: PortfolioHeaderProps): react_jsx_runtime.JSX.Element;
|
|
22
22
|
|
|
@@ -13,10 +13,10 @@ interface PortfolioHeaderProps {
|
|
|
13
13
|
className?: string;
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
16
|
+
* Portfolio identity header: a generated identity mark + the address as a
|
|
17
|
+
* real page title (there's no profile/avatar data to lead with instead),
|
|
18
|
+
* with the rewards journey chip alongside it — one cohesive block rather
|
|
19
|
+
* than two disconnected elements at opposite corners.
|
|
20
20
|
*/
|
|
21
21
|
declare function PortfolioHeader({ address, score, className, }: PortfolioHeaderProps): react_jsx_runtime.JSX.Element;
|
|
22
22
|
|
|
@@ -1,9 +1,33 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
3
|
import Link from "next/link";
|
|
4
|
-
import { Briefcase } from "lucide-react";
|
|
5
4
|
import { cn } from "../utils/cn.js";
|
|
6
5
|
import { AddressDisplay } from "./address-display.js";
|
|
6
|
+
function angleFromAddress(address) {
|
|
7
|
+
let hash = 0;
|
|
8
|
+
for (let i = 0; i < address.length; i++) {
|
|
9
|
+
hash = hash * 31 + address.charCodeAt(i) >>> 0;
|
|
10
|
+
}
|
|
11
|
+
return hash % 360;
|
|
12
|
+
}
|
|
13
|
+
function IdentityMark({ address }) {
|
|
14
|
+
const angle = angleFromAddress(address);
|
|
15
|
+
return /* @__PURE__ */ jsx(
|
|
16
|
+
"div",
|
|
17
|
+
{
|
|
18
|
+
className: "h-11 w-11 shrink-0 rounded-2xl",
|
|
19
|
+
style: {
|
|
20
|
+
// Brand palette hardcoded here — this preset defines colors via
|
|
21
|
+
// Tailwind's JS config (no auto-generated CSS custom properties to
|
|
22
|
+
// reference), so `var(--color-brand-*)` isn't available. Keep these
|
|
23
|
+
// three hexes in sync with `preset/tailwind.ts`'s brand-purple/
|
|
24
|
+
// brand-blue/brand-orange if that palette ever changes.
|
|
25
|
+
background: `linear-gradient(${angle}deg, #8a5cf6, #3b7bff 55%, #fb8b46)`
|
|
26
|
+
},
|
|
27
|
+
"aria-hidden": true
|
|
28
|
+
}
|
|
29
|
+
);
|
|
30
|
+
}
|
|
7
31
|
function PortfolioHeader({
|
|
8
32
|
address,
|
|
9
33
|
score,
|
|
@@ -16,22 +40,23 @@ function PortfolioHeader({
|
|
|
16
40
|
" XP"
|
|
17
41
|
] })
|
|
18
42
|
] }) });
|
|
19
|
-
return /* @__PURE__ */ jsxs(
|
|
20
|
-
"div",
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
/* @__PURE__ */
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
]
|
|
33
|
-
}
|
|
34
|
-
|
|
43
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("flex items-center justify-between gap-4", className), children: [
|
|
44
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 min-w-0", children: [
|
|
45
|
+
/* @__PURE__ */ jsx(IdentityMark, { address }),
|
|
46
|
+
/* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
|
|
47
|
+
/* @__PURE__ */ jsx("p", { className: "text-[11px] font-semibold uppercase tracking-wider text-muted-foreground", children: "Portfolio" }),
|
|
48
|
+
/* @__PURE__ */ jsx(
|
|
49
|
+
AddressDisplay,
|
|
50
|
+
{
|
|
51
|
+
address,
|
|
52
|
+
chars: 6,
|
|
53
|
+
className: "text-xl font-bold tracking-tight text-foreground"
|
|
54
|
+
}
|
|
55
|
+
)
|
|
56
|
+
] })
|
|
57
|
+
] }),
|
|
58
|
+
score?.href ? /* @__PURE__ */ jsx(Link, { href: score.href, className: "shrink-0 active:opacity-80", children: scoreChip }) : /* @__PURE__ */ jsx("div", { className: "shrink-0", children: scoreChip })
|
|
59
|
+
] });
|
|
35
60
|
}
|
|
36
61
|
export {
|
|
37
62
|
PortfolioHeader
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/portfolio-header.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"next/link\";\nimport {
|
|
1
|
+
{"version":3,"sources":["../../src/components/portfolio-header.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"next/link\";\nimport { cn } from \"../utils/cn.js\";\nimport { AddressDisplay } from \"./address-display.js\";\n\nexport interface PortfolioHeaderScore {\n /** Journey level name (\"Starter\", \"Explorer\", …) — no numeric level shown. */\n levelName: string;\n totalXp: number;\n /** Where the score chip links (\"/rewards\"). */\n href?: string;\n}\n\nexport interface PortfolioHeaderProps {\n address: string;\n score?: PortfolioHeaderScore | null;\n className?: string;\n}\n\n/** Deterministic rotation angle from the address, so each wallet gets a\n * distinct but stable gradient built entirely from existing brand colors. */\nfunction angleFromAddress(address: string): number {\n let hash = 0;\n for (let i = 0; i < address.length; i++) {\n hash = (hash * 31 + address.charCodeAt(i)) >>> 0;\n }\n return hash % 360;\n}\n\nfunction IdentityMark({ address }: { address: string }) {\n const angle = angleFromAddress(address);\n return (\n <div\n className=\"h-11 w-11 shrink-0 rounded-2xl\"\n style={{\n // Brand palette hardcoded here — this preset defines colors via\n // Tailwind's JS config (no auto-generated CSS custom properties to\n // reference), so `var(--color-brand-*)` isn't available. Keep these\n // three hexes in sync with `preset/tailwind.ts`'s brand-purple/\n // brand-blue/brand-orange if that palette ever changes.\n background: `linear-gradient(${angle}deg, #8a5cf6, #3b7bff 55%, #fb8b46)`,\n }}\n aria-hidden\n />\n );\n}\n\n/**\n * Portfolio identity header: a generated identity mark + the address as a\n * real page title (there's no profile/avatar data to lead with instead),\n * with the rewards journey chip alongside it — one cohesive block rather\n * than two disconnected elements at opposite corners.\n */\nexport function PortfolioHeader({\n address,\n score,\n className,\n}: PortfolioHeaderProps) {\n const scoreChip = score && (\n <div className=\"btn-border-animated p-[1.5px] rounded-full\">\n <div className=\"rounded-full bg-card px-3.5 py-1.5 flex items-baseline gap-2 whitespace-nowrap\">\n <span className=\"text-sm font-semibold text-foreground\">\n {score.levelName}\n </span>\n <span className=\"text-xs text-muted-foreground tabular-nums\">\n {score.totalXp.toLocaleString()} XP\n </span>\n </div>\n </div>\n );\n\n return (\n <div className={cn(\"flex items-center justify-between gap-4\", className)}>\n <div className=\"flex items-center gap-3 min-w-0\">\n <IdentityMark address={address} />\n <div className=\"min-w-0\">\n <p className=\"text-[11px] font-semibold uppercase tracking-wider text-muted-foreground\">\n Portfolio\n </p>\n <AddressDisplay\n address={address}\n chars={6}\n className=\"text-xl font-bold tracking-tight text-foreground\"\n />\n </div>\n </div>\n {score?.href ? (\n <Link href={score.href} className=\"shrink-0 active:opacity-80\">\n {scoreChip}\n </Link>\n ) : (\n <div className=\"shrink-0\">{scoreChip}</div>\n )}\n </div>\n );\n}\n"],"mappings":";AAiCI,cAgCI,YAhCJ;AA/BJ,OAAO,UAAU;AACjB,SAAS,UAAU;AACnB,SAAS,sBAAsB;AAkB/B,SAAS,iBAAiB,SAAyB;AACjD,MAAI,OAAO;AACX,WAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,WAAQ,OAAO,KAAK,QAAQ,WAAW,CAAC,MAAO;AAAA,EACjD;AACA,SAAO,OAAO;AAChB;AAEA,SAAS,aAAa,EAAE,QAAQ,GAAwB;AACtD,QAAM,QAAQ,iBAAiB,OAAO;AACtC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAML,YAAY,mBAAmB,KAAK;AAAA,MACtC;AAAA,MACA,eAAW;AAAA;AAAA,EACb;AAEJ;AAQO,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AACF,GAAyB;AACvB,QAAM,YAAY,SAChB,oBAAC,SAAI,WAAU,8CACb,+BAAC,SAAI,WAAU,kFACb;AAAA,wBAAC,UAAK,WAAU,yCACb,gBAAM,WACT;AAAA,IACA,qBAAC,UAAK,WAAU,8CACb;AAAA,YAAM,QAAQ,eAAe;AAAA,MAAE;AAAA,OAClC;AAAA,KACF,GACF;AAGF,SACE,qBAAC,SAAI,WAAW,GAAG,2CAA2C,SAAS,GACrE;AAAA,yBAAC,SAAI,WAAU,mCACb;AAAA,0BAAC,gBAAa,SAAkB;AAAA,MAChC,qBAAC,SAAI,WAAU,WACb;AAAA,4BAAC,OAAE,WAAU,4EAA2E,uBAExF;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA,OAAO;AAAA,YACP,WAAU;AAAA;AAAA,QACZ;AAAA,SACF;AAAA,OACF;AAAA,IACC,OAAO,OACN,oBAAC,QAAK,MAAM,MAAM,MAAM,WAAU,8BAC/B,qBACH,IAEA,oBAAC,SAAI,WAAU,YAAY,qBAAU;AAAA,KAEzC;AAEJ;","names":[]}
|
|
@@ -29,6 +29,7 @@ var import_portfolio_bento_tile = require("./portfolio-bento-tile.js");
|
|
|
29
29
|
var import_portfolio_chip_filter = require("./portfolio-chip-filter.js");
|
|
30
30
|
function PortfolioOverview({
|
|
31
31
|
tiles,
|
|
32
|
+
links = [],
|
|
32
33
|
isEmpty,
|
|
33
34
|
emptyState,
|
|
34
35
|
className
|
|
@@ -37,25 +38,26 @@ function PortfolioOverview({
|
|
|
37
38
|
if (isEmpty) {
|
|
38
39
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className, children: emptyState });
|
|
39
40
|
}
|
|
40
|
-
const
|
|
41
|
+
const populatedTiles = tiles.filter((t) => !t.isEmpty);
|
|
42
|
+
const visibleTiles = selected === "all" ? populatedTiles : populatedTiles.filter((t) => t.key === selected);
|
|
41
43
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: (0, import_cn.cn)("space-y-6", className), children: [
|
|
42
44
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
43
45
|
import_portfolio_chip_filter.PortfolioChipFilter,
|
|
44
46
|
{
|
|
45
|
-
options:
|
|
47
|
+
options: [
|
|
48
|
+
...populatedTiles.map((t) => ({ key: t.key, label: t.title })),
|
|
49
|
+
...links.map((l) => ({ key: l.href, label: l.label, href: l.href }))
|
|
50
|
+
],
|
|
46
51
|
value: selected,
|
|
47
52
|
onChange: setSelected
|
|
48
53
|
}
|
|
49
54
|
),
|
|
50
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "
|
|
55
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "columns-1 md:columns-2 xl:columns-3 gap-4", children: visibleTiles.map((tile) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
51
56
|
import_portfolio_bento_tile.PortfolioBentoTile,
|
|
52
57
|
{
|
|
53
58
|
title: tile.title,
|
|
54
59
|
href: tile.href,
|
|
55
60
|
size: tile.size,
|
|
56
|
-
action: tile.action,
|
|
57
|
-
isEmpty: tile.isEmpty,
|
|
58
|
-
emptyState: tile.emptyState,
|
|
59
61
|
children: tile.content
|
|
60
62
|
},
|
|
61
63
|
tile.key
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/portfolio-overview.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState } from \"react\";\nimport { cn } from \"../utils/cn.js\";\nimport { PortfolioBentoTile, type PortfolioBentoTileProps } from \"./portfolio-bento-tile.js\";\nimport { PortfolioChipFilter } from \"./portfolio-chip-filter.js\";\n\nexport interface PortfolioBentoTileConfig {\n /** Matches a PortfolioChipFilter option key. */\n key: string;\n title: string;\n href: string;\n size?: PortfolioBentoTileProps[\"size\"];\n /**
|
|
1
|
+
{"version":3,"sources":["../../src/components/portfolio-overview.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState } from \"react\";\nimport { cn } from \"../utils/cn.js\";\nimport { PortfolioBentoTile, type PortfolioBentoTileProps } from \"./portfolio-bento-tile.js\";\nimport { PortfolioChipFilter } from \"./portfolio-chip-filter.js\";\n\nexport interface PortfolioBentoTileConfig {\n /** Matches a PortfolioChipFilter option key. */\n key: string;\n title: string;\n href: string;\n size?: PortfolioBentoTileProps[\"size\"];\n /** Tiles with nothing to show are omitted entirely, not rendered empty. */\n isEmpty?: boolean;\n content: React.ReactNode;\n}\n\nexport interface PortfolioOverviewLink {\n label: string;\n href: string;\n}\n\nexport interface PortfolioOverviewProps {\n tiles: PortfolioBentoTileConfig[];\n /**\n * Extra chip-bar entries that navigate straight to a subpage with no\n * bento tile of its own (Listings, Offers, Sponsorships, …) — this is how\n * every portfolio section stays reachable now that there's no tab bar.\n */\n links?: PortfolioOverviewLink[];\n /** First-run state across the whole portfolio (zero holdings, zero activity). */\n isEmpty?: boolean;\n emptyState?: React.ReactNode;\n className?: string;\n}\n\n/**\n * Portfolio landing page: a content-first masonry dashboard. Each tile is a\n * fast preview of one section that expands into its full subpage. A chip\n * row gives fast lateral access across every portfolio destination — both\n * in-page filters (tiles) and direct links to sections with no tile of\n * their own. Pure presentation — the app supplies each tile's rendered\n * content; this component only handles layout, filtering, and hiding empty\n * tiles.\n */\nexport function PortfolioOverview({\n tiles,\n links = [],\n isEmpty,\n emptyState,\n className,\n}: PortfolioOverviewProps) {\n const [selected, setSelected] = useState(\"all\");\n\n if (isEmpty) {\n return <div className={className}>{emptyState}</div>;\n }\n\n const populatedTiles = tiles.filter((t) => !t.isEmpty);\n const visibleTiles =\n selected === \"all\" ? populatedTiles : populatedTiles.filter((t) => t.key === selected);\n\n return (\n <div className={cn(\"space-y-6\", className)}>\n <PortfolioChipFilter\n options={[\n ...populatedTiles.map((t) => ({ key: t.key, label: t.title })),\n ...links.map((l) => ({ key: l.href, label: l.label, href: l.href })),\n ]}\n value={selected}\n onChange={setSelected}\n />\n <div className=\"columns-1 md:columns-2 xl:columns-3 gap-4\">\n {visibleTiles.map((tile) => (\n <PortfolioBentoTile\n key={tile.key}\n title={tile.title}\n href={tile.href}\n size={tile.size}\n >\n {tile.content}\n </PortfolioBentoTile>\n ))}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAwDW;AAtDX,mBAAyB;AACzB,gBAAmB;AACnB,kCAAiE;AACjE,mCAAoC;AAyC7B,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA,QAAQ,CAAC;AAAA,EACT;AAAA,EACA;AAAA,EACA;AACF,GAA2B;AACzB,QAAM,CAAC,UAAU,WAAW,QAAI,uBAAS,KAAK;AAE9C,MAAI,SAAS;AACX,WAAO,4CAAC,SAAI,WAAuB,sBAAW;AAAA,EAChD;AAEA,QAAM,iBAAiB,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO;AACrD,QAAM,eACJ,aAAa,QAAQ,iBAAiB,eAAe,OAAO,CAAC,MAAM,EAAE,QAAQ,QAAQ;AAEvF,SACE,6CAAC,SAAI,eAAW,cAAG,aAAa,SAAS,GACvC;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,SAAS;AAAA,UACP,GAAG,eAAe,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,OAAO,EAAE,MAAM,EAAE;AAAA,UAC7D,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,EAAE,OAAO,MAAM,EAAE,KAAK,EAAE;AAAA,QACrE;AAAA,QACA,OAAO;AAAA,QACP,UAAU;AAAA;AAAA,IACZ;AAAA,IACA,4CAAC,SAAI,WAAU,6CACZ,uBAAa,IAAI,CAAC,SACjB;AAAA,MAAC;AAAA;AAAA,QAEC,OAAO,KAAK;AAAA,QACZ,MAAM,KAAK;AAAA,QACX,MAAM,KAAK;AAAA,QAEV,eAAK;AAAA;AAAA,MALD,KAAK;AAAA,IAMZ,CACD,GACH;AAAA,KACF;AAEJ;","names":[]}
|
|
@@ -7,27 +7,36 @@ interface PortfolioBentoTileConfig {
|
|
|
7
7
|
title: string;
|
|
8
8
|
href: string;
|
|
9
9
|
size?: PortfolioBentoTileProps["size"];
|
|
10
|
-
/**
|
|
11
|
-
action?: React.ReactNode;
|
|
10
|
+
/** Tiles with nothing to show are omitted entirely, not rendered empty. */
|
|
12
11
|
isEmpty?: boolean;
|
|
13
|
-
emptyState?: React.ReactNode;
|
|
14
12
|
content: React.ReactNode;
|
|
15
13
|
}
|
|
14
|
+
interface PortfolioOverviewLink {
|
|
15
|
+
label: string;
|
|
16
|
+
href: string;
|
|
17
|
+
}
|
|
16
18
|
interface PortfolioOverviewProps {
|
|
17
19
|
tiles: PortfolioBentoTileConfig[];
|
|
20
|
+
/**
|
|
21
|
+
* Extra chip-bar entries that navigate straight to a subpage with no
|
|
22
|
+
* bento tile of its own (Listings, Offers, Sponsorships, …) — this is how
|
|
23
|
+
* every portfolio section stays reachable now that there's no tab bar.
|
|
24
|
+
*/
|
|
25
|
+
links?: PortfolioOverviewLink[];
|
|
18
26
|
/** First-run state across the whole portfolio (zero holdings, zero activity). */
|
|
19
27
|
isEmpty?: boolean;
|
|
20
28
|
emptyState?: React.ReactNode;
|
|
21
29
|
className?: string;
|
|
22
30
|
}
|
|
23
31
|
/**
|
|
24
|
-
* Portfolio landing page: a content-first
|
|
25
|
-
* fast preview of one section
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* presentation — the app supplies each tile's rendered
|
|
29
|
-
* component only handles layout, filtering, and empty
|
|
32
|
+
* Portfolio landing page: a content-first masonry dashboard. Each tile is a
|
|
33
|
+
* fast preview of one section that expands into its full subpage. A chip
|
|
34
|
+
* row gives fast lateral access across every portfolio destination — both
|
|
35
|
+
* in-page filters (tiles) and direct links to sections with no tile of
|
|
36
|
+
* their own. Pure presentation — the app supplies each tile's rendered
|
|
37
|
+
* content; this component only handles layout, filtering, and hiding empty
|
|
38
|
+
* tiles.
|
|
30
39
|
*/
|
|
31
|
-
declare function PortfolioOverview({ tiles, isEmpty, emptyState, className, }: PortfolioOverviewProps): react_jsx_runtime.JSX.Element;
|
|
40
|
+
declare function PortfolioOverview({ tiles, links, isEmpty, emptyState, className, }: PortfolioOverviewProps): react_jsx_runtime.JSX.Element;
|
|
32
41
|
|
|
33
|
-
export { type PortfolioBentoTileConfig, PortfolioOverview, type PortfolioOverviewProps };
|
|
42
|
+
export { type PortfolioBentoTileConfig, PortfolioOverview, type PortfolioOverviewLink, type PortfolioOverviewProps };
|
|
@@ -7,27 +7,36 @@ interface PortfolioBentoTileConfig {
|
|
|
7
7
|
title: string;
|
|
8
8
|
href: string;
|
|
9
9
|
size?: PortfolioBentoTileProps["size"];
|
|
10
|
-
/**
|
|
11
|
-
action?: React.ReactNode;
|
|
10
|
+
/** Tiles with nothing to show are omitted entirely, not rendered empty. */
|
|
12
11
|
isEmpty?: boolean;
|
|
13
|
-
emptyState?: React.ReactNode;
|
|
14
12
|
content: React.ReactNode;
|
|
15
13
|
}
|
|
14
|
+
interface PortfolioOverviewLink {
|
|
15
|
+
label: string;
|
|
16
|
+
href: string;
|
|
17
|
+
}
|
|
16
18
|
interface PortfolioOverviewProps {
|
|
17
19
|
tiles: PortfolioBentoTileConfig[];
|
|
20
|
+
/**
|
|
21
|
+
* Extra chip-bar entries that navigate straight to a subpage with no
|
|
22
|
+
* bento tile of its own (Listings, Offers, Sponsorships, …) — this is how
|
|
23
|
+
* every portfolio section stays reachable now that there's no tab bar.
|
|
24
|
+
*/
|
|
25
|
+
links?: PortfolioOverviewLink[];
|
|
18
26
|
/** First-run state across the whole portfolio (zero holdings, zero activity). */
|
|
19
27
|
isEmpty?: boolean;
|
|
20
28
|
emptyState?: React.ReactNode;
|
|
21
29
|
className?: string;
|
|
22
30
|
}
|
|
23
31
|
/**
|
|
24
|
-
* Portfolio landing page: a content-first
|
|
25
|
-
* fast preview of one section
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* presentation — the app supplies each tile's rendered
|
|
29
|
-
* component only handles layout, filtering, and empty
|
|
32
|
+
* Portfolio landing page: a content-first masonry dashboard. Each tile is a
|
|
33
|
+
* fast preview of one section that expands into its full subpage. A chip
|
|
34
|
+
* row gives fast lateral access across every portfolio destination — both
|
|
35
|
+
* in-page filters (tiles) and direct links to sections with no tile of
|
|
36
|
+
* their own. Pure presentation — the app supplies each tile's rendered
|
|
37
|
+
* content; this component only handles layout, filtering, and hiding empty
|
|
38
|
+
* tiles.
|
|
30
39
|
*/
|
|
31
|
-
declare function PortfolioOverview({ tiles, isEmpty, emptyState, className, }: PortfolioOverviewProps): react_jsx_runtime.JSX.Element;
|
|
40
|
+
declare function PortfolioOverview({ tiles, links, isEmpty, emptyState, className, }: PortfolioOverviewProps): react_jsx_runtime.JSX.Element;
|
|
32
41
|
|
|
33
|
-
export { type PortfolioBentoTileConfig, PortfolioOverview, type PortfolioOverviewProps };
|
|
42
|
+
export { type PortfolioBentoTileConfig, PortfolioOverview, type PortfolioOverviewLink, type PortfolioOverviewProps };
|
|
@@ -6,6 +6,7 @@ import { PortfolioBentoTile } from "./portfolio-bento-tile.js";
|
|
|
6
6
|
import { PortfolioChipFilter } from "./portfolio-chip-filter.js";
|
|
7
7
|
function PortfolioOverview({
|
|
8
8
|
tiles,
|
|
9
|
+
links = [],
|
|
9
10
|
isEmpty,
|
|
10
11
|
emptyState,
|
|
11
12
|
className
|
|
@@ -14,25 +15,26 @@ function PortfolioOverview({
|
|
|
14
15
|
if (isEmpty) {
|
|
15
16
|
return /* @__PURE__ */ jsx("div", { className, children: emptyState });
|
|
16
17
|
}
|
|
17
|
-
const
|
|
18
|
+
const populatedTiles = tiles.filter((t) => !t.isEmpty);
|
|
19
|
+
const visibleTiles = selected === "all" ? populatedTiles : populatedTiles.filter((t) => t.key === selected);
|
|
18
20
|
return /* @__PURE__ */ jsxs("div", { className: cn("space-y-6", className), children: [
|
|
19
21
|
/* @__PURE__ */ jsx(
|
|
20
22
|
PortfolioChipFilter,
|
|
21
23
|
{
|
|
22
|
-
options:
|
|
24
|
+
options: [
|
|
25
|
+
...populatedTiles.map((t) => ({ key: t.key, label: t.title })),
|
|
26
|
+
...links.map((l) => ({ key: l.href, label: l.label, href: l.href }))
|
|
27
|
+
],
|
|
23
28
|
value: selected,
|
|
24
29
|
onChange: setSelected
|
|
25
30
|
}
|
|
26
31
|
),
|
|
27
|
-
/* @__PURE__ */ jsx("div", { className: "
|
|
32
|
+
/* @__PURE__ */ jsx("div", { className: "columns-1 md:columns-2 xl:columns-3 gap-4", children: visibleTiles.map((tile) => /* @__PURE__ */ jsx(
|
|
28
33
|
PortfolioBentoTile,
|
|
29
34
|
{
|
|
30
35
|
title: tile.title,
|
|
31
36
|
href: tile.href,
|
|
32
37
|
size: tile.size,
|
|
33
|
-
action: tile.action,
|
|
34
|
-
isEmpty: tile.isEmpty,
|
|
35
|
-
emptyState: tile.emptyState,
|
|
36
38
|
children: tile.content
|
|
37
39
|
},
|
|
38
40
|
tile.key
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/portfolio-overview.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState } from \"react\";\nimport { cn } from \"../utils/cn.js\";\nimport { PortfolioBentoTile, type PortfolioBentoTileProps } from \"./portfolio-bento-tile.js\";\nimport { PortfolioChipFilter } from \"./portfolio-chip-filter.js\";\n\nexport interface PortfolioBentoTileConfig {\n /** Matches a PortfolioChipFilter option key. */\n key: string;\n title: string;\n href: string;\n size?: PortfolioBentoTileProps[\"size\"];\n /**
|
|
1
|
+
{"version":3,"sources":["../../src/components/portfolio-overview.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState } from \"react\";\nimport { cn } from \"../utils/cn.js\";\nimport { PortfolioBentoTile, type PortfolioBentoTileProps } from \"./portfolio-bento-tile.js\";\nimport { PortfolioChipFilter } from \"./portfolio-chip-filter.js\";\n\nexport interface PortfolioBentoTileConfig {\n /** Matches a PortfolioChipFilter option key. */\n key: string;\n title: string;\n href: string;\n size?: PortfolioBentoTileProps[\"size\"];\n /** Tiles with nothing to show are omitted entirely, not rendered empty. */\n isEmpty?: boolean;\n content: React.ReactNode;\n}\n\nexport interface PortfolioOverviewLink {\n label: string;\n href: string;\n}\n\nexport interface PortfolioOverviewProps {\n tiles: PortfolioBentoTileConfig[];\n /**\n * Extra chip-bar entries that navigate straight to a subpage with no\n * bento tile of its own (Listings, Offers, Sponsorships, …) — this is how\n * every portfolio section stays reachable now that there's no tab bar.\n */\n links?: PortfolioOverviewLink[];\n /** First-run state across the whole portfolio (zero holdings, zero activity). */\n isEmpty?: boolean;\n emptyState?: React.ReactNode;\n className?: string;\n}\n\n/**\n * Portfolio landing page: a content-first masonry dashboard. Each tile is a\n * fast preview of one section that expands into its full subpage. A chip\n * row gives fast lateral access across every portfolio destination — both\n * in-page filters (tiles) and direct links to sections with no tile of\n * their own. Pure presentation — the app supplies each tile's rendered\n * content; this component only handles layout, filtering, and hiding empty\n * tiles.\n */\nexport function PortfolioOverview({\n tiles,\n links = [],\n isEmpty,\n emptyState,\n className,\n}: PortfolioOverviewProps) {\n const [selected, setSelected] = useState(\"all\");\n\n if (isEmpty) {\n return <div className={className}>{emptyState}</div>;\n }\n\n const populatedTiles = tiles.filter((t) => !t.isEmpty);\n const visibleTiles =\n selected === \"all\" ? populatedTiles : populatedTiles.filter((t) => t.key === selected);\n\n return (\n <div className={cn(\"space-y-6\", className)}>\n <PortfolioChipFilter\n options={[\n ...populatedTiles.map((t) => ({ key: t.key, label: t.title })),\n ...links.map((l) => ({ key: l.href, label: l.label, href: l.href })),\n ]}\n value={selected}\n onChange={setSelected}\n />\n <div className=\"columns-1 md:columns-2 xl:columns-3 gap-4\">\n {visibleTiles.map((tile) => (\n <PortfolioBentoTile\n key={tile.key}\n title={tile.title}\n href={tile.href}\n size={tile.size}\n >\n {tile.content}\n </PortfolioBentoTile>\n ))}\n </div>\n </div>\n );\n}\n"],"mappings":";AAwDW,cAQP,YARO;AAtDX,SAAS,gBAAgB;AACzB,SAAS,UAAU;AACnB,SAAS,0BAAwD;AACjE,SAAS,2BAA2B;AAyC7B,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA,QAAQ,CAAC;AAAA,EACT;AAAA,EACA;AAAA,EACA;AACF,GAA2B;AACzB,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,KAAK;AAE9C,MAAI,SAAS;AACX,WAAO,oBAAC,SAAI,WAAuB,sBAAW;AAAA,EAChD;AAEA,QAAM,iBAAiB,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO;AACrD,QAAM,eACJ,aAAa,QAAQ,iBAAiB,eAAe,OAAO,CAAC,MAAM,EAAE,QAAQ,QAAQ;AAEvF,SACE,qBAAC,SAAI,WAAW,GAAG,aAAa,SAAS,GACvC;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,SAAS;AAAA,UACP,GAAG,eAAe,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,OAAO,EAAE,MAAM,EAAE;AAAA,UAC7D,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,EAAE,OAAO,MAAM,EAAE,KAAK,EAAE;AAAA,QACrE;AAAA,QACA,OAAO;AAAA,QACP,UAAU;AAAA;AAAA,IACZ;AAAA,IACA,oBAAC,SAAI,WAAU,6CACZ,uBAAa,IAAI,CAAC,SACjB;AAAA,MAAC;AAAA;AAAA,QAEC,OAAO,KAAK;AAAA,QACZ,MAAM,KAAK;AAAA,QACX,MAAM,KAAK;AAAA,QAEV,eAAK;AAAA;AAAA,MALD,KAAK;AAAA,IAMZ,CACD,GACH;AAAA,KACF;AAEJ;","names":[]}
|
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 { useIntersectionActive } from \"./utils/use-intersection-active.js\";\nexport { getReadIds, markRead } from \"./utils/notification-storage.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, AssetOwnerRow, buildEditionStats } from \"./components/asset-top-sections.js\";\nexport type { AssetOwnerRowProps } 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\";\nexport { LIVING_RENDER_COLLECTIONS, isLivingRenderCollection } from \"./data/living-render-collections.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 { 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 } from \"./components/token-card.js\";\nexport { AnimatedTokenMedia } from \"./components/animated-token-media.js\";\nexport type { AnimatedTokenMediaProps } from \"./components/animated-token-media.js\";\nexport { ThemeAmbientBackground } from \"./components/theme-ambient-background.js\";\nexport {\n useCollectionFilters, SORT_OPTIONS, CollectionFiltersTrigger, CollectionFiltersBody,\n} from \"./components/collection-filters.js\";\nexport type { TraitSection, CollectionFiltersTriggerProps, CollectionFiltersBodyProps } from \"./components/collection-filters.js\";\nexport {\n DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem,\n DropdownMenuCheckboxItem, DropdownMenuRadioItem, DropdownMenuLabel,\n DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuGroup,\n DropdownMenuPortal, DropdownMenuSub, DropdownMenuSubContent,\n DropdownMenuSubTrigger, DropdownMenuRadioGroup,\n} from \"./components/dropdown-menu.js\";\nexport { AssetCard, AssetCardSkeleton } from \"./components/asset-card.js\";\nexport type { AssetCardProps, AssetCardPrice } from \"./components/asset-card.js\";\nexport { AssetPicker } from \"./components/asset-picker.js\";\nexport type { AssetPickerProps, OwnedAsset } from \"./components/asset-picker.js\";\nexport { AssetSearchPicker } from \"./components/asset-search-picker.js\";\nexport type { AssetSearchPickerProps } from \"./components/asset-search-picker.js\";\nexport { LicenseTermsBuilder, EMPTY_SPONSORSHIP_TERMS, MEDIA_TYPES, DURATION_UNITS, toLicenseMetadata, toDurationDays } from \"./components/license-terms-builder.js\";\nexport type { LicenseTermsBuilderProps, SponsorshipTerms, DurationUnit } from \"./components/license-terms-builder.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, DiscoverActivityStrip } from \"./components/discover-feed-section.js\";\nexport type { DiscoverFeedSectionProps, DiscoverActivityStripProps } 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, useLaunchpadFilter } 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, 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.62.0 — nav shell (brand trigger + header buttons + account sheet) ─────\nexport {\n NavBrandButton,\n NavIconButton,\n NavWalletTrigger,\n NavAccountSheet,\n useNavAccountSheet,\n} from \"./components/nav-shell.js\";\nexport type {\n NavBrandButtonProps,\n NavIconButtonProps,\n NavWalletTriggerProps,\n NavAccountSheetProps,\n} from \"./components/nav-shell.js\";\n\n// ── v0.59.0 — portfolio shell (two-level nav + header + overview) ────────────\nexport { PortfolioNav } from \"./components/portfolio-nav.js\";\nexport type {\n PortfolioNavProps,\n PortfolioNavSection,\n PortfolioNavChild,\n PortfolioBadgeVariant,\n} from \"./components/portfolio-nav.js\";\nexport { PortfolioHeader } from \"./components/portfolio-header.js\";\nexport type {\n PortfolioHeaderProps,\n PortfolioHeaderScore,\n} from \"./components/portfolio-header.js\";\nexport { PortfolioOverview } from \"./components/portfolio-overview.js\";\nexport type {\n PortfolioOverviewProps,\n PortfolioBentoTileConfig,\n} from \"./components/portfolio-overview.js\";\nexport { derivePortfolioCounts } from \"./utils/portfolio-counts.js\";\nexport type { PortfolioCounts, CountableOrder } from \"./utils/portfolio-counts.js\";\nexport { PortfolioBentoTile } from \"./components/portfolio-bento-tile.js\";\nexport type { PortfolioBentoTileProps } from \"./components/portfolio-bento-tile.js\";\nexport { PortfolioChipFilter } from \"./components/portfolio-chip-filter.js\";\nexport type {\n PortfolioChipFilterProps,\n PortfolioChipFilterOption,\n} from \"./components/portfolio-chip-filter.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\";\nexport { createRewardToast } from \"./components/rewards/reward-toast.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\n// ── v0.47.0 additions — community rewards section ────────────────────────────\nexport { CommunityRewardsSection } from \"./components/community-rewards-section.js\";\nexport type { CommunityRewardsSectionProps, CommunityRewardsEntry } from \"./components/community-rewards-section.js\";\nexport { CreatorAirdropBanner } from \"./components/creator-airdrop-banner.js\";\nexport type { CreatorAirdropBannerProps } from \"./components/creator-airdrop-banner.js\";\n\n// ── Design system primitives — action-focus pattern, tokens, data display ────\nexport { ActionButton } from \"./components/action-button.js\";\nexport type { ActionButtonProps, ActionKey, ToneKey } from \"./components/action-button.js\";\nexport { GradientButton } from \"./components/gradient-button.js\";\nexport type { GradientButtonProps } from \"./components/gradient-button.js\";\n\nexport { CoinLaunchPreview } from \"./components/coin-launch-preview.js\";\nexport type { CoinPreviewData } from \"./components/coin-launch-preview.js\";\nexport { MedialaneCollectionCard } from \"./components/medialane-collection-card.js\";\nexport type { MedialaneCollectionCardProps } from \"./components/medialane-collection-card.js\";\nexport { TokenGlyph, TokenAmount } from \"./components/token-glyph.js\";\nexport type { TokenGlyphProps, TokenAmountProps, TokenSymbol } from \"./components/token-glyph.js\";\n\nexport { StatTile, StatPill } from \"./components/stat-tile.js\";\nexport type { StatTileProps, StatPillProps } from \"./components/stat-tile.js\";\n\nexport { ActionDialog } from \"./components/action-dialog.js\";\nexport type { ActionDialogProps } from \"./components/action-dialog.js\";\n"],"mappings":"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","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 { useIntersectionActive } from \"./utils/use-intersection-active.js\";\nexport { getReadIds, markRead } from \"./utils/notification-storage.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, AssetOwnerRow, buildEditionStats } from \"./components/asset-top-sections.js\";\nexport type { AssetOwnerRowProps } 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\";\nexport { LIVING_RENDER_COLLECTIONS, isLivingRenderCollection } from \"./data/living-render-collections.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 { 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 } from \"./components/token-card.js\";\nexport { AnimatedTokenMedia } from \"./components/animated-token-media.js\";\nexport type { AnimatedTokenMediaProps } from \"./components/animated-token-media.js\";\nexport { ThemeAmbientBackground } from \"./components/theme-ambient-background.js\";\nexport {\n useCollectionFilters, SORT_OPTIONS, CollectionFiltersTrigger, CollectionFiltersBody,\n} from \"./components/collection-filters.js\";\nexport type { TraitSection, CollectionFiltersTriggerProps, CollectionFiltersBodyProps } from \"./components/collection-filters.js\";\nexport {\n DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem,\n DropdownMenuCheckboxItem, DropdownMenuRadioItem, DropdownMenuLabel,\n DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuGroup,\n DropdownMenuPortal, DropdownMenuSub, DropdownMenuSubContent,\n DropdownMenuSubTrigger, DropdownMenuRadioGroup,\n} from \"./components/dropdown-menu.js\";\nexport { AssetCard, AssetCardSkeleton } from \"./components/asset-card.js\";\nexport type { AssetCardProps, AssetCardPrice } from \"./components/asset-card.js\";\nexport { AssetPicker } from \"./components/asset-picker.js\";\nexport type { AssetPickerProps, OwnedAsset } from \"./components/asset-picker.js\";\nexport { AssetSearchPicker } from \"./components/asset-search-picker.js\";\nexport type { AssetSearchPickerProps } from \"./components/asset-search-picker.js\";\nexport { LicenseTermsBuilder, EMPTY_SPONSORSHIP_TERMS, MEDIA_TYPES, DURATION_UNITS, toLicenseMetadata, toDurationDays } from \"./components/license-terms-builder.js\";\nexport type { LicenseTermsBuilderProps, SponsorshipTerms, DurationUnit } from \"./components/license-terms-builder.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, DiscoverActivityStrip } from \"./components/discover-feed-section.js\";\nexport type { DiscoverFeedSectionProps, DiscoverActivityStripProps } 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, useLaunchpadFilter } 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, 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.62.0 — nav shell (brand trigger + header buttons + account sheet) ─────\nexport {\n NavBrandButton,\n NavIconButton,\n NavWalletTrigger,\n NavAccountSheet,\n useNavAccountSheet,\n} from \"./components/nav-shell.js\";\nexport type {\n NavBrandButtonProps,\n NavIconButtonProps,\n NavWalletTriggerProps,\n NavAccountSheetProps,\n} from \"./components/nav-shell.js\";\n\n// ── v0.59.0 — portfolio shell (two-level nav + header + overview) ────────────\nexport { PortfolioNav } from \"./components/portfolio-nav.js\";\nexport type {\n PortfolioNavProps,\n PortfolioNavSection,\n PortfolioNavChild,\n PortfolioBadgeVariant,\n} from \"./components/portfolio-nav.js\";\nexport { PortfolioHeader } from \"./components/portfolio-header.js\";\nexport type {\n PortfolioHeaderProps,\n PortfolioHeaderScore,\n} from \"./components/portfolio-header.js\";\nexport { PortfolioOverview } from \"./components/portfolio-overview.js\";\nexport type {\n PortfolioOverviewProps,\n PortfolioOverviewLink,\n PortfolioBentoTileConfig,\n} from \"./components/portfolio-overview.js\";\nexport { derivePortfolioCounts } from \"./utils/portfolio-counts.js\";\nexport type { PortfolioCounts, CountableOrder } from \"./utils/portfolio-counts.js\";\nexport { PortfolioBentoTile } from \"./components/portfolio-bento-tile.js\";\nexport type { PortfolioBentoTileProps } from \"./components/portfolio-bento-tile.js\";\nexport { PortfolioChipFilter } from \"./components/portfolio-chip-filter.js\";\nexport type {\n PortfolioChipFilterProps,\n PortfolioChipFilterOption,\n} from \"./components/portfolio-chip-filter.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\";\nexport { createRewardToast } from \"./components/rewards/reward-toast.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\n// ── v0.47.0 additions — community rewards section ────────────────────────────\nexport { CommunityRewardsSection } from \"./components/community-rewards-section.js\";\nexport type { CommunityRewardsSectionProps, CommunityRewardsEntry } from \"./components/community-rewards-section.js\";\nexport { CreatorAirdropBanner } from \"./components/creator-airdrop-banner.js\";\nexport type { CreatorAirdropBannerProps } from \"./components/creator-airdrop-banner.js\";\n\n// ── Design system primitives — action-focus pattern, tokens, data display ────\nexport { ActionButton } from \"./components/action-button.js\";\nexport type { ActionButtonProps, ActionKey, ToneKey } from \"./components/action-button.js\";\nexport { GradientButton } from \"./components/gradient-button.js\";\nexport type { GradientButtonProps } from \"./components/gradient-button.js\";\n\nexport { CoinLaunchPreview } from \"./components/coin-launch-preview.js\";\nexport type { CoinPreviewData } from \"./components/coin-launch-preview.js\";\nexport { MedialaneCollectionCard } from \"./components/medialane-collection-card.js\";\nexport type { MedialaneCollectionCardProps } from \"./components/medialane-collection-card.js\";\nexport { TokenGlyph, TokenAmount } from \"./components/token-glyph.js\";\nexport type { TokenGlyphProps, TokenAmountProps, TokenSymbol } from \"./components/token-glyph.js\";\n\nexport { StatTile, StatPill } from \"./components/stat-tile.js\";\nexport type { StatTileProps, StatPillProps } from \"./components/stat-tile.js\";\n\nexport { ActionDialog } from \"./components/action-dialog.js\";\nexport type { ActionDialogProps } from \"./components/action-dialog.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;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,qCAAsC;AACtC,kCAAqC;AACrC,6BAA+B;AAG/B,sBAA+C;AAE/C,gBAGO;AAEP,0BAEO;AAEP,6BAA8B;AAC9B,oCAAqC;AACrC,mCAAoC;AACpC,+BAAgC;AAChC,uCAAwC;AAExC,gCAAqF;AAErF,kCAAmC;AAEnC,iCAAkC;AAElC,qCAAsC;AAEtC,mBAAsB;AACtB,uCAAoE;AAGpE,2BAA6C;AAG7C,2BAAyD;AAGzD,6BAA+B;AAG/B,wBAAkC;AAIlC,+BAAyF;AACzF,4BAA8B;AAE9B,4BAA8B;AAE9B,0BAA4B;AAE5B,6BAAuD;AAEvD,wBAA6C;AAE7C,kCAAmC;AAEnC,sCAAuC;AACvC,gCAEO;AAEP,2BAMO;AACP,wBAA6C;AAE7C,0BAA4B;AAE5B,iCAAkC;AAElC,mCAA6H;AAG7H,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,mCAA2D;AAE3D,2BAAsE;AAItE,gCAAiG;AACjG,kCAAmC;AAEnC,6BAA+B;AAG/B,IAAAA,6BAAwE;AAIxE,8BAAkD;AAIlD,uBAMO;AASP,2BAA6B;AAO7B,8BAAgC;AAKhC,gCAAkC;AAMlC,8BAAsC;AAEtC,kCAAmC;AAEnC,mCAAoC;AAUpC,4BAA8B;AAE9B,wBAA0B;AAM1B,gCAAiC;AAEjC,sBAAwB;AAIxB,yBAA2B;AAE3B,yBAA2B;AAE3B,yBAA2B;AAE3B,gCAAiC;AAEjC,+BAAoD;AAEpD,0BAA4B;AAE5B,8BAA+B;AAE/B,0BAAkC;AAGlC,gCAAiC;AAIjC,uCAAwC;AAExC,oCAAqC;AAIrC,2BAA6B;AAE7B,6BAA+B;AAG/B,iCAAkC;AAElC,uCAAwC;AAExC,yBAAwC;AAGxC,uBAAmC;AAGnC,2BAA6B;","names":["import_launchpad_services"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -62,7 +62,7 @@ export { NavCommand, NavCommandGroup, NavCommandMenu, NavCommandMenuProps, useNa
|
|
|
62
62
|
export { NavAccountSheet, NavAccountSheetProps, NavBrandButton, NavBrandButtonProps, NavIconButton, NavIconButtonProps, NavWalletTrigger, NavWalletTriggerProps, useNavAccountSheet } from './components/nav-shell.cjs';
|
|
63
63
|
export { PortfolioBadgeVariant, PortfolioNav, PortfolioNavChild, PortfolioNavProps, PortfolioNavSection } from './components/portfolio-nav.cjs';
|
|
64
64
|
export { PortfolioHeader, PortfolioHeaderProps, PortfolioHeaderScore } from './components/portfolio-header.cjs';
|
|
65
|
-
export { PortfolioBentoTileConfig, PortfolioOverview, PortfolioOverviewProps } from './components/portfolio-overview.cjs';
|
|
65
|
+
export { PortfolioBentoTileConfig, PortfolioOverview, PortfolioOverviewLink, PortfolioOverviewProps } from './components/portfolio-overview.cjs';
|
|
66
66
|
export { CountableOrder, PortfolioCounts, derivePortfolioCounts } from './utils/portfolio-counts.cjs';
|
|
67
67
|
export { PortfolioBentoTile, PortfolioBentoTileProps } from './components/portfolio-bento-tile.cjs';
|
|
68
68
|
export { PortfolioChipFilter, PortfolioChipFilterOption, PortfolioChipFilterProps } from './components/portfolio-chip-filter.cjs';
|
package/dist/index.d.ts
CHANGED
|
@@ -62,7 +62,7 @@ export { NavCommand, NavCommandGroup, NavCommandMenu, NavCommandMenuProps, useNa
|
|
|
62
62
|
export { NavAccountSheet, NavAccountSheetProps, NavBrandButton, NavBrandButtonProps, NavIconButton, NavIconButtonProps, NavWalletTrigger, NavWalletTriggerProps, useNavAccountSheet } from './components/nav-shell.js';
|
|
63
63
|
export { PortfolioBadgeVariant, PortfolioNav, PortfolioNavChild, PortfolioNavProps, PortfolioNavSection } from './components/portfolio-nav.js';
|
|
64
64
|
export { PortfolioHeader, PortfolioHeaderProps, PortfolioHeaderScore } from './components/portfolio-header.js';
|
|
65
|
-
export { PortfolioBentoTileConfig, PortfolioOverview, PortfolioOverviewProps } from './components/portfolio-overview.js';
|
|
65
|
+
export { PortfolioBentoTileConfig, PortfolioOverview, PortfolioOverviewLink, PortfolioOverviewProps } from './components/portfolio-overview.js';
|
|
66
66
|
export { CountableOrder, PortfolioCounts, derivePortfolioCounts } from './utils/portfolio-counts.js';
|
|
67
67
|
export { PortfolioBentoTile, PortfolioBentoTileProps } from './components/portfolio-bento-tile.js';
|
|
68
68
|
export { PortfolioChipFilter, PortfolioChipFilterOption, PortfolioChipFilterProps } from './components/portfolio-chip-filter.js';
|
package/dist/index.js.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 { useIntersectionActive } from \"./utils/use-intersection-active.js\";\nexport { getReadIds, markRead } from \"./utils/notification-storage.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, AssetOwnerRow, buildEditionStats } from \"./components/asset-top-sections.js\";\nexport type { AssetOwnerRowProps } 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\";\nexport { LIVING_RENDER_COLLECTIONS, isLivingRenderCollection } from \"./data/living-render-collections.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 { 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 } from \"./components/token-card.js\";\nexport { AnimatedTokenMedia } from \"./components/animated-token-media.js\";\nexport type { AnimatedTokenMediaProps } from \"./components/animated-token-media.js\";\nexport { ThemeAmbientBackground } from \"./components/theme-ambient-background.js\";\nexport {\n useCollectionFilters, SORT_OPTIONS, CollectionFiltersTrigger, CollectionFiltersBody,\n} from \"./components/collection-filters.js\";\nexport type { TraitSection, CollectionFiltersTriggerProps, CollectionFiltersBodyProps } from \"./components/collection-filters.js\";\nexport {\n DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem,\n DropdownMenuCheckboxItem, DropdownMenuRadioItem, DropdownMenuLabel,\n DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuGroup,\n DropdownMenuPortal, DropdownMenuSub, DropdownMenuSubContent,\n DropdownMenuSubTrigger, DropdownMenuRadioGroup,\n} from \"./components/dropdown-menu.js\";\nexport { AssetCard, AssetCardSkeleton } from \"./components/asset-card.js\";\nexport type { AssetCardProps, AssetCardPrice } from \"./components/asset-card.js\";\nexport { AssetPicker } from \"./components/asset-picker.js\";\nexport type { AssetPickerProps, OwnedAsset } from \"./components/asset-picker.js\";\nexport { AssetSearchPicker } from \"./components/asset-search-picker.js\";\nexport type { AssetSearchPickerProps } from \"./components/asset-search-picker.js\";\nexport { LicenseTermsBuilder, EMPTY_SPONSORSHIP_TERMS, MEDIA_TYPES, DURATION_UNITS, toLicenseMetadata, toDurationDays } from \"./components/license-terms-builder.js\";\nexport type { LicenseTermsBuilderProps, SponsorshipTerms, DurationUnit } from \"./components/license-terms-builder.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, DiscoverActivityStrip } from \"./components/discover-feed-section.js\";\nexport type { DiscoverFeedSectionProps, DiscoverActivityStripProps } 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, useLaunchpadFilter } 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, 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.62.0 — nav shell (brand trigger + header buttons + account sheet) ─────\nexport {\n NavBrandButton,\n NavIconButton,\n NavWalletTrigger,\n NavAccountSheet,\n useNavAccountSheet,\n} from \"./components/nav-shell.js\";\nexport type {\n NavBrandButtonProps,\n NavIconButtonProps,\n NavWalletTriggerProps,\n NavAccountSheetProps,\n} from \"./components/nav-shell.js\";\n\n// ── v0.59.0 — portfolio shell (two-level nav + header + overview) ────────────\nexport { PortfolioNav } from \"./components/portfolio-nav.js\";\nexport type {\n PortfolioNavProps,\n PortfolioNavSection,\n PortfolioNavChild,\n PortfolioBadgeVariant,\n} from \"./components/portfolio-nav.js\";\nexport { PortfolioHeader } from \"./components/portfolio-header.js\";\nexport type {\n PortfolioHeaderProps,\n PortfolioHeaderScore,\n} from \"./components/portfolio-header.js\";\nexport { PortfolioOverview } from \"./components/portfolio-overview.js\";\nexport type {\n PortfolioOverviewProps,\n PortfolioBentoTileConfig,\n} from \"./components/portfolio-overview.js\";\nexport { derivePortfolioCounts } from \"./utils/portfolio-counts.js\";\nexport type { PortfolioCounts, CountableOrder } from \"./utils/portfolio-counts.js\";\nexport { PortfolioBentoTile } from \"./components/portfolio-bento-tile.js\";\nexport type { PortfolioBentoTileProps } from \"./components/portfolio-bento-tile.js\";\nexport { PortfolioChipFilter } from \"./components/portfolio-chip-filter.js\";\nexport type {\n PortfolioChipFilterProps,\n PortfolioChipFilterOption,\n} from \"./components/portfolio-chip-filter.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\";\nexport { createRewardToast } from \"./components/rewards/reward-toast.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\n// ── v0.47.0 additions — community rewards section ────────────────────────────\nexport { CommunityRewardsSection } from \"./components/community-rewards-section.js\";\nexport type { CommunityRewardsSectionProps, CommunityRewardsEntry } from \"./components/community-rewards-section.js\";\nexport { CreatorAirdropBanner } from \"./components/creator-airdrop-banner.js\";\nexport type { CreatorAirdropBannerProps } from \"./components/creator-airdrop-banner.js\";\n\n// ── Design system primitives — action-focus pattern, tokens, data display ────\nexport { ActionButton } from \"./components/action-button.js\";\nexport type { ActionButtonProps, ActionKey, ToneKey } from \"./components/action-button.js\";\nexport { GradientButton } from \"./components/gradient-button.js\";\nexport type { GradientButtonProps } from \"./components/gradient-button.js\";\n\nexport { CoinLaunchPreview } from \"./components/coin-launch-preview.js\";\nexport type { CoinPreviewData } from \"./components/coin-launch-preview.js\";\nexport { MedialaneCollectionCard } from \"./components/medialane-collection-card.js\";\nexport type { MedialaneCollectionCardProps } from \"./components/medialane-collection-card.js\";\nexport { TokenGlyph, TokenAmount } from \"./components/token-glyph.js\";\nexport type { TokenGlyphProps, TokenAmountProps, TokenSymbol } from \"./components/token-glyph.js\";\n\nexport { StatTile, StatPill } from \"./components/stat-tile.js\";\nexport type { StatTileProps, StatPillProps } from \"./components/stat-tile.js\";\n\nexport { ActionDialog } from \"./components/action-dialog.js\";\nexport type { ActionDialogProps } from \"./components/action-dialog.js\";\n"],"mappings":"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","names":[]}
|
|
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 { useIntersectionActive } from \"./utils/use-intersection-active.js\";\nexport { getReadIds, markRead } from \"./utils/notification-storage.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, AssetOwnerRow, buildEditionStats } from \"./components/asset-top-sections.js\";\nexport type { AssetOwnerRowProps } 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\";\nexport { LIVING_RENDER_COLLECTIONS, isLivingRenderCollection } from \"./data/living-render-collections.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 { 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 } from \"./components/token-card.js\";\nexport { AnimatedTokenMedia } from \"./components/animated-token-media.js\";\nexport type { AnimatedTokenMediaProps } from \"./components/animated-token-media.js\";\nexport { ThemeAmbientBackground } from \"./components/theme-ambient-background.js\";\nexport {\n useCollectionFilters, SORT_OPTIONS, CollectionFiltersTrigger, CollectionFiltersBody,\n} from \"./components/collection-filters.js\";\nexport type { TraitSection, CollectionFiltersTriggerProps, CollectionFiltersBodyProps } from \"./components/collection-filters.js\";\nexport {\n DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem,\n DropdownMenuCheckboxItem, DropdownMenuRadioItem, DropdownMenuLabel,\n DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuGroup,\n DropdownMenuPortal, DropdownMenuSub, DropdownMenuSubContent,\n DropdownMenuSubTrigger, DropdownMenuRadioGroup,\n} from \"./components/dropdown-menu.js\";\nexport { AssetCard, AssetCardSkeleton } from \"./components/asset-card.js\";\nexport type { AssetCardProps, AssetCardPrice } from \"./components/asset-card.js\";\nexport { AssetPicker } from \"./components/asset-picker.js\";\nexport type { AssetPickerProps, OwnedAsset } from \"./components/asset-picker.js\";\nexport { AssetSearchPicker } from \"./components/asset-search-picker.js\";\nexport type { AssetSearchPickerProps } from \"./components/asset-search-picker.js\";\nexport { LicenseTermsBuilder, EMPTY_SPONSORSHIP_TERMS, MEDIA_TYPES, DURATION_UNITS, toLicenseMetadata, toDurationDays } from \"./components/license-terms-builder.js\";\nexport type { LicenseTermsBuilderProps, SponsorshipTerms, DurationUnit } from \"./components/license-terms-builder.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, DiscoverActivityStrip } from \"./components/discover-feed-section.js\";\nexport type { DiscoverFeedSectionProps, DiscoverActivityStripProps } 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, useLaunchpadFilter } 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, 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.62.0 — nav shell (brand trigger + header buttons + account sheet) ─────\nexport {\n NavBrandButton,\n NavIconButton,\n NavWalletTrigger,\n NavAccountSheet,\n useNavAccountSheet,\n} from \"./components/nav-shell.js\";\nexport type {\n NavBrandButtonProps,\n NavIconButtonProps,\n NavWalletTriggerProps,\n NavAccountSheetProps,\n} from \"./components/nav-shell.js\";\n\n// ── v0.59.0 — portfolio shell (two-level nav + header + overview) ────────────\nexport { PortfolioNav } from \"./components/portfolio-nav.js\";\nexport type {\n PortfolioNavProps,\n PortfolioNavSection,\n PortfolioNavChild,\n PortfolioBadgeVariant,\n} from \"./components/portfolio-nav.js\";\nexport { PortfolioHeader } from \"./components/portfolio-header.js\";\nexport type {\n PortfolioHeaderProps,\n PortfolioHeaderScore,\n} from \"./components/portfolio-header.js\";\nexport { PortfolioOverview } from \"./components/portfolio-overview.js\";\nexport type {\n PortfolioOverviewProps,\n PortfolioOverviewLink,\n PortfolioBentoTileConfig,\n} from \"./components/portfolio-overview.js\";\nexport { derivePortfolioCounts } from \"./utils/portfolio-counts.js\";\nexport type { PortfolioCounts, CountableOrder } from \"./utils/portfolio-counts.js\";\nexport { PortfolioBentoTile } from \"./components/portfolio-bento-tile.js\";\nexport type { PortfolioBentoTileProps } from \"./components/portfolio-bento-tile.js\";\nexport { PortfolioChipFilter } from \"./components/portfolio-chip-filter.js\";\nexport type {\n PortfolioChipFilterProps,\n PortfolioChipFilterOption,\n} from \"./components/portfolio-chip-filter.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\";\nexport { createRewardToast } from \"./components/rewards/reward-toast.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\n// ── v0.47.0 additions — community rewards section ────────────────────────────\nexport { CommunityRewardsSection } from \"./components/community-rewards-section.js\";\nexport type { CommunityRewardsSectionProps, CommunityRewardsEntry } from \"./components/community-rewards-section.js\";\nexport { CreatorAirdropBanner } from \"./components/creator-airdrop-banner.js\";\nexport type { CreatorAirdropBannerProps } from \"./components/creator-airdrop-banner.js\";\n\n// ── Design system primitives — action-focus pattern, tokens, data display ────\nexport { ActionButton } from \"./components/action-button.js\";\nexport type { ActionButtonProps, ActionKey, ToneKey } from \"./components/action-button.js\";\nexport { GradientButton } from \"./components/gradient-button.js\";\nexport type { GradientButtonProps } from \"./components/gradient-button.js\";\n\nexport { CoinLaunchPreview } from \"./components/coin-launch-preview.js\";\nexport type { CoinPreviewData } from \"./components/coin-launch-preview.js\";\nexport { MedialaneCollectionCard } from \"./components/medialane-collection-card.js\";\nexport type { MedialaneCollectionCardProps } from \"./components/medialane-collection-card.js\";\nexport { TokenGlyph, TokenAmount } from \"./components/token-glyph.js\";\nexport type { TokenGlyphProps, TokenAmountProps, TokenSymbol } from \"./components/token-glyph.js\";\n\nexport { StatTile, StatPill } from \"./components/stat-tile.js\";\nexport type { StatTileProps, StatPillProps } from \"./components/stat-tile.js\";\n\nexport { ActionDialog } from \"./components/action-dialog.js\";\nexport type { ActionDialogProps } from \"./components/action-dialog.js\";\n"],"mappings":"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","names":[]}
|