@medialane/ui 0.331.0 → 0.333.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/account/input-otp.d.cts +2 -2
- package/dist/components/account/input-otp.d.ts +2 -2
- package/dist/components/asset-page.cjs +24 -33
- package/dist/components/asset-page.cjs.map +1 -1
- package/dist/components/asset-page.d.cts +4 -2
- package/dist/components/asset-page.d.ts +4 -2
- package/dist/components/asset-page.js +24 -33
- package/dist/components/asset-page.js.map +1 -1
- package/dist/components/asset-top-sections.cjs +24 -28
- package/dist/components/asset-top-sections.cjs.map +1 -1
- package/dist/components/asset-top-sections.d.cts +2 -2
- package/dist/components/asset-top-sections.d.ts +2 -2
- package/dist/components/asset-top-sections.js +24 -28
- package/dist/components/asset-top-sections.js.map +1 -1
- package/dist/components/button.d.cts +2 -2
- package/dist/components/button.d.ts +2 -2
- package/dist/components/discover-community-section.cjs +79 -67
- package/dist/components/discover-community-section.cjs.map +1 -1
- package/dist/components/discover-community-section.js +79 -67
- package/dist/components/discover-community-section.js.map +1 -1
- package/dist/components/discover-features.cjs +4 -3
- package/dist/components/discover-features.cjs.map +1 -1
- package/dist/components/discover-features.js +5 -3
- package/dist/components/discover-features.js.map +1 -1
- package/dist/components/discover-page.cjs +1 -1
- package/dist/components/discover-page.cjs.map +1 -1
- package/dist/components/discover-page.js +1 -1
- package/dist/components/discover-page.js.map +1 -1
- package/dist/components/launchpad/edition-mint-schema.d.cts +2 -2
- package/dist/components/launchpad/edition-mint-schema.d.ts +2 -2
- package/dist/components/media-header.cjs +2 -0
- package/dist/components/media-header.cjs.map +1 -1
- package/dist/components/media-header.js +2 -0
- package/dist/components/media-header.js.map +1 -1
- package/dist/components/rewards/leaderboard-panel.cjs +2 -2
- package/dist/components/rewards/leaderboard-panel.cjs.map +1 -1
- package/dist/components/rewards/leaderboard-panel.js +2 -2
- package/dist/components/rewards/leaderboard-panel.js.map +1 -1
- package/dist/components/rewards/leaderboard-table.cjs +1 -1
- package/dist/components/rewards/leaderboard-table.cjs.map +1 -1
- package/dist/components/rewards/leaderboard-table.js +1 -1
- package/dist/components/rewards/leaderboard-table.js.map +1 -1
- package/dist/components/scroll-section.cjs.map +1 -1
- package/dist/components/scroll-section.d.cts +1 -1
- package/dist/components/scroll-section.d.ts +1 -1
- package/dist/components/scroll-section.js.map +1 -1
- package/dist/components/section-heading.cjs +1 -1
- package/dist/components/section-heading.cjs.map +1 -1
- package/dist/components/section-heading.d.cts +1 -1
- package/dist/components/section-heading.d.ts +1 -1
- package/dist/components/section-heading.js +1 -1
- package/dist/components/section-heading.js.map +1 -1
- package/dist/components/sheet.d.cts +1 -1
- package/dist/components/sheet.d.ts +1 -1
- package/dist/utils/use-collections.cjs +3 -3
- package/dist/utils/use-collections.cjs.map +1 -1
- package/dist/utils/use-collections.d.cts +2 -2
- package/dist/utils/use-collections.d.ts +2 -2
- package/dist/utils/use-collections.js +3 -3
- package/dist/utils/use-collections.js.map +1 -1
- package/dist/utils/use-tokens.cjs +4 -3
- package/dist/utils/use-tokens.cjs.map +1 -1
- package/dist/utils/use-tokens.d.cts +2 -1
- package/dist/utils/use-tokens.d.ts +2 -1
- package/dist/utils/use-tokens.js +4 -3
- package/dist/utils/use-tokens.js.map +1 -1
- package/package.json +1 -1
|
@@ -36,87 +36,99 @@ var import_jsx_runtime = require("react/jsx-runtime");
|
|
|
36
36
|
var import_react = require("react");
|
|
37
37
|
var import_lucide_react = require("lucide-react");
|
|
38
38
|
var import_link = __toESM(require("./link.js"), 1);
|
|
39
|
-
var import_section_heading = require("./section-heading.js");
|
|
40
39
|
var import_skeleton = require("./skeleton.js");
|
|
41
40
|
var import_activity_row = require("./activity-row.js");
|
|
42
41
|
var import_medialane_app = require("./medialane-app.js");
|
|
43
42
|
var import_leaderboard_panel = require("./rewards/leaderboard-panel.js");
|
|
44
43
|
var import_use_activities = require("../utils/use-activities.js");
|
|
45
44
|
var import_time = require("../utils/time.js");
|
|
46
|
-
var import_cn = require("../utils/cn.js");
|
|
47
45
|
var import_empty_messages = require("../utils/empty-messages.js");
|
|
48
|
-
const
|
|
46
|
+
const ROWS = 5;
|
|
47
|
+
function CommunityCard({
|
|
48
|
+
icon,
|
|
49
|
+
title,
|
|
50
|
+
subtitle,
|
|
51
|
+
href,
|
|
52
|
+
linkLabel,
|
|
53
|
+
children
|
|
54
|
+
}) {
|
|
55
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("section", { className: "overflow-hidden rounded-2xl border border-border/50 bg-card", children: [
|
|
56
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center justify-between gap-3 border-b border-border/50 px-4 py-3", children: [
|
|
57
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex min-w-0 items-center gap-2", children: [
|
|
58
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "shrink-0 text-muted-foreground [&>svg]:h-4 [&>svg]:w-4", children: icon }),
|
|
59
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "min-w-0", children: [
|
|
60
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", { className: "text-sm font-semibold leading-none tracking-tight text-foreground", children: title }),
|
|
61
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "mt-1 flex h-3.5 items-center gap-1 text-2xs text-muted-foreground", children: subtitle })
|
|
62
|
+
] })
|
|
63
|
+
] }),
|
|
64
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
65
|
+
import_link.default,
|
|
66
|
+
{
|
|
67
|
+
href,
|
|
68
|
+
className: "inline-flex shrink-0 items-center gap-1 text-xs text-muted-foreground transition-colors hover:text-foreground",
|
|
69
|
+
children: [
|
|
70
|
+
linkLabel,
|
|
71
|
+
" ",
|
|
72
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ArrowRight, { className: "h-3 w-3" })
|
|
73
|
+
]
|
|
74
|
+
}
|
|
75
|
+
)
|
|
76
|
+
] }),
|
|
77
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "min-h-[324px]", children })
|
|
78
|
+
] });
|
|
79
|
+
}
|
|
49
80
|
function DiscoverCommunitySection() {
|
|
50
|
-
const { activities, isLoading } = (0, import_use_activities.useActivities)({ limit:
|
|
81
|
+
const { activities, isLoading } = (0, import_use_activities.useActivities)({ limit: ROWS });
|
|
51
82
|
const { walletAddress: address } = (0, import_medialane_app.useMedialaneApp)();
|
|
52
83
|
const [lastUpdated, setLastUpdated] = (0, import_react.useState)(() => (/* @__PURE__ */ new Date()).toISOString());
|
|
53
84
|
(0, import_react.useEffect)(() => {
|
|
54
85
|
if (!isLoading) setLastUpdated((/* @__PURE__ */ new Date()).toISOString());
|
|
55
86
|
}, [activities, isLoading]);
|
|
56
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("section", { className: "grid grid-cols-1 lg:grid-cols-
|
|
57
|
-
/* @__PURE__ */ (0, import_jsx_runtime.
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
{
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
(0, import_time.timeAgo)(lastUpdated)
|
|
67
|
-
] }),
|
|
68
|
-
href: "/activities",
|
|
69
|
-
linkLabel: "View all"
|
|
70
|
-
}
|
|
71
|
-
),
|
|
72
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "divide-y divide-border/50 rounded-xl border border-border overflow-hidden", children: Array.from({ length: 6 }).map((_, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center gap-3 px-4 py-3.5", children: [
|
|
73
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_skeleton.Skeleton, { className: "h-8 w-8 rounded-lg shrink-0" }),
|
|
74
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_skeleton.Skeleton, { className: "h-9 w-9 rounded-md shrink-0" }),
|
|
75
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex-1 space-y-2", children: [
|
|
76
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_skeleton.Skeleton, { className: "h-3.5 w-40" }),
|
|
77
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_skeleton.Skeleton, { className: "h-2.5 w-24" })
|
|
78
|
-
] })
|
|
79
|
-
] }, i)) }) : activities.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: (0, import_cn.cn)("rounded-xl border border-border py-12 text-center"), children: [
|
|
80
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-sm font-medium", children: import_empty_messages.emptyMessages.activity.title }),
|
|
81
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-sm text-muted-foreground", children: import_empty_messages.emptyMessages.activity.description })
|
|
82
|
-
] }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "divide-y divide-border/50 rounded-xl border border-border overflow-hidden", children: activities.map((activity, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
83
|
-
import_activity_row.ActivityRow,
|
|
84
|
-
{
|
|
85
|
-
activity,
|
|
86
|
-
showActor: true,
|
|
87
|
-
showExplorer: true
|
|
88
|
-
},
|
|
89
|
-
activity.txHash ? `${activity.txHash}-${activity.type}-${activity.nftTokenId ?? ""}` : `activity-${i}`
|
|
90
|
-
)) }) })
|
|
91
|
-
] }),
|
|
92
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "lg:col-span-5 space-y-4 sm:space-y-5", children: [
|
|
93
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
94
|
-
import_section_heading.SectionHeading,
|
|
95
|
-
{
|
|
96
|
-
icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Sparkles, { className: "h-4 w-4" }),
|
|
97
|
-
title: "Rewards",
|
|
98
|
-
href: "/rewards",
|
|
99
|
-
linkLabel: "Scoreboard"
|
|
100
|
-
}
|
|
101
|
-
),
|
|
102
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "overflow-hidden rounded-2xl border border-border/50 bg-card", children: [
|
|
103
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center justify-between gap-3 bg-gradient-to-r from-brand-rose/10 to-brand-orange/10 px-4 py-3", children: [
|
|
104
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-sm font-semibold leading-snug", children: "Earn XP. Share the Creator's Fund." }),
|
|
105
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
106
|
-
import_link.default,
|
|
107
|
-
{
|
|
108
|
-
href: "/rewards",
|
|
109
|
-
className: "inline-flex shrink-0 items-center gap-1 text-xs font-semibold text-brand-rose hover:opacity-80 transition-opacity",
|
|
110
|
-
children: [
|
|
111
|
-
"Start earning ",
|
|
112
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ArrowRight, { className: "h-3 w-3" })
|
|
113
|
-
]
|
|
114
|
-
}
|
|
115
|
-
)
|
|
87
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("section", { className: "grid grid-cols-1 gap-6 lg:grid-cols-2 lg:gap-8", children: [
|
|
88
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
89
|
+
CommunityCard,
|
|
90
|
+
{
|
|
91
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Activity, {}),
|
|
92
|
+
title: "Activities",
|
|
93
|
+
subtitle: !isLoading && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
94
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.RefreshCw, { className: "h-2.5 w-2.5" }),
|
|
95
|
+
"Updated ",
|
|
96
|
+
(0, import_time.timeAgo)(lastUpdated)
|
|
116
97
|
] }),
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
98
|
+
href: "/activities",
|
|
99
|
+
linkLabel: "View all",
|
|
100
|
+
children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "divide-y divide-border/50", children: Array.from({ length: ROWS }).map((_, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex h-16 items-center gap-3 px-4", children: [
|
|
101
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_skeleton.Skeleton, { className: "h-8 w-8 shrink-0 rounded-lg" }),
|
|
102
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_skeleton.Skeleton, { className: "h-9 w-9 shrink-0 rounded-md" }),
|
|
103
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex-1 space-y-2", children: [
|
|
104
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_skeleton.Skeleton, { className: "h-3.5 w-40" }),
|
|
105
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_skeleton.Skeleton, { className: "h-2.5 w-24" })
|
|
106
|
+
] })
|
|
107
|
+
] }, i)) }) : activities.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "py-12 text-center", children: [
|
|
108
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-sm font-medium", children: import_empty_messages.emptyMessages.activity.title }),
|
|
109
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-sm text-muted-foreground", children: import_empty_messages.emptyMessages.activity.description })
|
|
110
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "divide-y divide-border/50", children: activities.map((activity, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
111
|
+
import_activity_row.ActivityRow,
|
|
112
|
+
{
|
|
113
|
+
activity,
|
|
114
|
+
showActor: true,
|
|
115
|
+
showExplorer: true
|
|
116
|
+
},
|
|
117
|
+
activity.txHash ? `${activity.txHash}-${activity.type}-${activity.nftTokenId ?? ""}` : `activity-${i}`
|
|
118
|
+
)) })
|
|
119
|
+
}
|
|
120
|
+
),
|
|
121
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
122
|
+
CommunityCard,
|
|
123
|
+
{
|
|
124
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Sparkles, {}),
|
|
125
|
+
title: "Rewards",
|
|
126
|
+
subtitle: "Earn XP. Share the Creator's Fund.",
|
|
127
|
+
href: "/rewards",
|
|
128
|
+
linkLabel: "Scoreboard",
|
|
129
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_leaderboard_panel.LeaderboardPanel, { myAddress: address, limit: ROWS, showHeading: false, compact: true })
|
|
130
|
+
}
|
|
131
|
+
)
|
|
120
132
|
] });
|
|
121
133
|
}
|
|
122
134
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/discover-community-section.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport { Activity, ArrowRight, RefreshCw, Sparkles } from \"lucide-react\";\nimport Link from \"./link.js\";\nimport {
|
|
1
|
+
{"version":3,"sources":["../../src/components/discover-community-section.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useState, type ReactNode } from \"react\";\nimport { Activity, ArrowRight, RefreshCw, Sparkles } from \"lucide-react\";\nimport Link from \"./link.js\";\nimport { Skeleton } from \"./skeleton.js\";\nimport { ActivityRow } from \"./activity-row.js\";\nimport { useMedialaneApp } from \"./medialane-app.js\";\nimport { LeaderboardPanel } from \"./rewards/leaderboard-panel.js\";\nimport { useActivities } from \"../utils/use-activities.js\";\nimport { timeAgo } from \"../utils/time.js\";\nimport { emptyMessages } from \"../utils/empty-messages.js\";\n\nconst ROWS = 5;\n\nfunction CommunityCard({\n icon,\n title,\n subtitle,\n href,\n linkLabel,\n children,\n}: {\n icon: ReactNode;\n title: string;\n subtitle?: ReactNode;\n href: string;\n linkLabel: string;\n children: ReactNode;\n}) {\n return (\n <section className=\"overflow-hidden rounded-2xl border border-border/50 bg-card\">\n <div className=\"flex items-center justify-between gap-3 border-b border-border/50 px-4 py-3\">\n <div className=\"flex min-w-0 items-center gap-2\">\n <span className=\"shrink-0 text-muted-foreground [&>svg]:h-4 [&>svg]:w-4\">{icon}</span>\n <div className=\"min-w-0\">\n <h2 className=\"text-sm font-semibold leading-none tracking-tight text-foreground\">{title}</h2>\n <p className=\"mt-1 flex h-3.5 items-center gap-1 text-2xs text-muted-foreground\">{subtitle}</p>\n </div>\n </div>\n <Link\n href={href}\n className=\"inline-flex shrink-0 items-center gap-1 text-xs text-muted-foreground transition-colors hover:text-foreground\"\n >\n {linkLabel} <ArrowRight className=\"h-3 w-3\" />\n </Link>\n </div>\n <div className=\"min-h-[324px]\">{children}</div>\n </section>\n );\n}\n\nexport function DiscoverCommunitySection() {\n const { activities, isLoading } = useActivities({ limit: ROWS });\n const { walletAddress: address } = useMedialaneApp();\n const [lastUpdated, setLastUpdated] = useState(() => new Date().toISOString());\n\n useEffect(() => {\n if (!isLoading) setLastUpdated(new Date().toISOString());\n }, [activities, isLoading]);\n\n return (\n <section className=\"grid grid-cols-1 gap-6 lg:grid-cols-2 lg:gap-8\">\n <CommunityCard\n icon={<Activity />}\n title=\"Activities\"\n subtitle={\n !isLoading && (\n <>\n <RefreshCw className=\"h-2.5 w-2.5\" />\n Updated {timeAgo(lastUpdated)}\n </>\n )\n }\n href=\"/activities\"\n linkLabel=\"View all\"\n >\n {isLoading ? (\n <div className=\"divide-y divide-border/50\">\n {Array.from({ length: ROWS }).map((_, i) => (\n <div key={i} className=\"flex h-16 items-center gap-3 px-4\">\n <Skeleton className=\"h-8 w-8 shrink-0 rounded-lg\" />\n <Skeleton className=\"h-9 w-9 shrink-0 rounded-md\" />\n <div className=\"flex-1 space-y-2\">\n <Skeleton className=\"h-3.5 w-40\" />\n <Skeleton className=\"h-2.5 w-24\" />\n </div>\n </div>\n ))}\n </div>\n ) : activities.length === 0 ? (\n <div className=\"py-12 text-center\">\n <p className=\"text-sm font-medium\">{emptyMessages.activity.title}</p>\n <p className=\"text-sm text-muted-foreground\">{emptyMessages.activity.description}</p>\n </div>\n ) : (\n <div className=\"divide-y divide-border/50\">\n {activities.map((activity, i) => (\n <ActivityRow\n key={activity.txHash ? `${activity.txHash}-${activity.type}-${activity.nftTokenId ?? \"\"}` : `activity-${i}`}\n activity={activity}\n showActor\n showExplorer\n />\n ))}\n </div>\n )}\n </CommunityCard>\n\n <CommunityCard\n icon={<Sparkles />}\n title=\"Rewards\"\n subtitle=\"Earn XP. Share the Creator's Fund.\"\n href=\"/rewards\"\n linkLabel=\"Scoreboard\"\n >\n <LeaderboardPanel myAddress={address} limit={ROWS} showHeading={false} compact />\n </CommunityCard>\n </section>\n );\n}\n"],"mappings":"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","names":["Link"]}
|
|
@@ -3,87 +3,99 @@ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
import { useEffect, useState } from "react";
|
|
4
4
|
import { Activity, ArrowRight, RefreshCw, Sparkles } from "lucide-react";
|
|
5
5
|
import Link from "./link.js";
|
|
6
|
-
import { SectionHeading } from "./section-heading.js";
|
|
7
6
|
import { Skeleton } from "./skeleton.js";
|
|
8
7
|
import { ActivityRow } from "./activity-row.js";
|
|
9
8
|
import { useMedialaneApp } from "./medialane-app.js";
|
|
10
9
|
import { LeaderboardPanel } from "./rewards/leaderboard-panel.js";
|
|
11
10
|
import { useActivities } from "../utils/use-activities.js";
|
|
12
11
|
import { timeAgo } from "../utils/time.js";
|
|
13
|
-
import { cn } from "../utils/cn.js";
|
|
14
12
|
import { emptyMessages } from "../utils/empty-messages.js";
|
|
15
|
-
const
|
|
13
|
+
const ROWS = 5;
|
|
14
|
+
function CommunityCard({
|
|
15
|
+
icon,
|
|
16
|
+
title,
|
|
17
|
+
subtitle,
|
|
18
|
+
href,
|
|
19
|
+
linkLabel,
|
|
20
|
+
children
|
|
21
|
+
}) {
|
|
22
|
+
return /* @__PURE__ */ jsxs("section", { className: "overflow-hidden rounded-2xl border border-border/50 bg-card", children: [
|
|
23
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-3 border-b border-border/50 px-4 py-3", children: [
|
|
24
|
+
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [
|
|
25
|
+
/* @__PURE__ */ jsx("span", { className: "shrink-0 text-muted-foreground [&>svg]:h-4 [&>svg]:w-4", children: icon }),
|
|
26
|
+
/* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
|
|
27
|
+
/* @__PURE__ */ jsx("h2", { className: "text-sm font-semibold leading-none tracking-tight text-foreground", children: title }),
|
|
28
|
+
/* @__PURE__ */ jsx("p", { className: "mt-1 flex h-3.5 items-center gap-1 text-2xs text-muted-foreground", children: subtitle })
|
|
29
|
+
] })
|
|
30
|
+
] }),
|
|
31
|
+
/* @__PURE__ */ jsxs(
|
|
32
|
+
Link,
|
|
33
|
+
{
|
|
34
|
+
href,
|
|
35
|
+
className: "inline-flex shrink-0 items-center gap-1 text-xs text-muted-foreground transition-colors hover:text-foreground",
|
|
36
|
+
children: [
|
|
37
|
+
linkLabel,
|
|
38
|
+
" ",
|
|
39
|
+
/* @__PURE__ */ jsx(ArrowRight, { className: "h-3 w-3" })
|
|
40
|
+
]
|
|
41
|
+
}
|
|
42
|
+
)
|
|
43
|
+
] }),
|
|
44
|
+
/* @__PURE__ */ jsx("div", { className: "min-h-[324px]", children })
|
|
45
|
+
] });
|
|
46
|
+
}
|
|
16
47
|
function DiscoverCommunitySection() {
|
|
17
|
-
const { activities, isLoading } = useActivities({ limit:
|
|
48
|
+
const { activities, isLoading } = useActivities({ limit: ROWS });
|
|
18
49
|
const { walletAddress: address } = useMedialaneApp();
|
|
19
50
|
const [lastUpdated, setLastUpdated] = useState(() => (/* @__PURE__ */ new Date()).toISOString());
|
|
20
51
|
useEffect(() => {
|
|
21
52
|
if (!isLoading) setLastUpdated((/* @__PURE__ */ new Date()).toISOString());
|
|
22
53
|
}, [activities, isLoading]);
|
|
23
|
-
return /* @__PURE__ */ jsxs("section", { className: "grid grid-cols-1 lg:grid-cols-
|
|
24
|
-
/* @__PURE__ */
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
{
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
timeAgo(lastUpdated)
|
|
34
|
-
] }),
|
|
35
|
-
href: "/activities",
|
|
36
|
-
linkLabel: "View all"
|
|
37
|
-
}
|
|
38
|
-
),
|
|
39
|
-
/* @__PURE__ */ jsx("div", { children: isLoading ? /* @__PURE__ */ jsx("div", { className: "divide-y divide-border/50 rounded-xl border border-border overflow-hidden", children: Array.from({ length: 6 }).map((_, i) => /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 px-4 py-3.5", children: [
|
|
40
|
-
/* @__PURE__ */ jsx(Skeleton, { className: "h-8 w-8 rounded-lg shrink-0" }),
|
|
41
|
-
/* @__PURE__ */ jsx(Skeleton, { className: "h-9 w-9 rounded-md shrink-0" }),
|
|
42
|
-
/* @__PURE__ */ jsxs("div", { className: "flex-1 space-y-2", children: [
|
|
43
|
-
/* @__PURE__ */ jsx(Skeleton, { className: "h-3.5 w-40" }),
|
|
44
|
-
/* @__PURE__ */ jsx(Skeleton, { className: "h-2.5 w-24" })
|
|
45
|
-
] })
|
|
46
|
-
] }, i)) }) : activities.length === 0 ? /* @__PURE__ */ jsxs("div", { className: cn("rounded-xl border border-border py-12 text-center"), children: [
|
|
47
|
-
/* @__PURE__ */ jsx("p", { className: "text-sm font-medium", children: emptyMessages.activity.title }),
|
|
48
|
-
/* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: emptyMessages.activity.description })
|
|
49
|
-
] }) : /* @__PURE__ */ jsx("div", { className: "divide-y divide-border/50 rounded-xl border border-border overflow-hidden", children: activities.map((activity, i) => /* @__PURE__ */ jsx(
|
|
50
|
-
ActivityRow,
|
|
51
|
-
{
|
|
52
|
-
activity,
|
|
53
|
-
showActor: true,
|
|
54
|
-
showExplorer: true
|
|
55
|
-
},
|
|
56
|
-
activity.txHash ? `${activity.txHash}-${activity.type}-${activity.nftTokenId ?? ""}` : `activity-${i}`
|
|
57
|
-
)) }) })
|
|
58
|
-
] }),
|
|
59
|
-
/* @__PURE__ */ jsxs("div", { className: "lg:col-span-5 space-y-4 sm:space-y-5", children: [
|
|
60
|
-
/* @__PURE__ */ jsx(
|
|
61
|
-
SectionHeading,
|
|
62
|
-
{
|
|
63
|
-
icon: /* @__PURE__ */ jsx(Sparkles, { className: "h-4 w-4" }),
|
|
64
|
-
title: "Rewards",
|
|
65
|
-
href: "/rewards",
|
|
66
|
-
linkLabel: "Scoreboard"
|
|
67
|
-
}
|
|
68
|
-
),
|
|
69
|
-
/* @__PURE__ */ jsxs("div", { className: "overflow-hidden rounded-2xl border border-border/50 bg-card", children: [
|
|
70
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-3 bg-gradient-to-r from-brand-rose/10 to-brand-orange/10 px-4 py-3", children: [
|
|
71
|
-
/* @__PURE__ */ jsx("p", { className: "text-sm font-semibold leading-snug", children: "Earn XP. Share the Creator's Fund." }),
|
|
72
|
-
/* @__PURE__ */ jsxs(
|
|
73
|
-
Link,
|
|
74
|
-
{
|
|
75
|
-
href: "/rewards",
|
|
76
|
-
className: "inline-flex shrink-0 items-center gap-1 text-xs font-semibold text-brand-rose hover:opacity-80 transition-opacity",
|
|
77
|
-
children: [
|
|
78
|
-
"Start earning ",
|
|
79
|
-
/* @__PURE__ */ jsx(ArrowRight, { className: "h-3 w-3" })
|
|
80
|
-
]
|
|
81
|
-
}
|
|
82
|
-
)
|
|
54
|
+
return /* @__PURE__ */ jsxs("section", { className: "grid grid-cols-1 gap-6 lg:grid-cols-2 lg:gap-8", children: [
|
|
55
|
+
/* @__PURE__ */ jsx(
|
|
56
|
+
CommunityCard,
|
|
57
|
+
{
|
|
58
|
+
icon: /* @__PURE__ */ jsx(Activity, {}),
|
|
59
|
+
title: "Activities",
|
|
60
|
+
subtitle: !isLoading && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
61
|
+
/* @__PURE__ */ jsx(RefreshCw, { className: "h-2.5 w-2.5" }),
|
|
62
|
+
"Updated ",
|
|
63
|
+
timeAgo(lastUpdated)
|
|
83
64
|
] }),
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
65
|
+
href: "/activities",
|
|
66
|
+
linkLabel: "View all",
|
|
67
|
+
children: isLoading ? /* @__PURE__ */ jsx("div", { className: "divide-y divide-border/50", children: Array.from({ length: ROWS }).map((_, i) => /* @__PURE__ */ jsxs("div", { className: "flex h-16 items-center gap-3 px-4", children: [
|
|
68
|
+
/* @__PURE__ */ jsx(Skeleton, { className: "h-8 w-8 shrink-0 rounded-lg" }),
|
|
69
|
+
/* @__PURE__ */ jsx(Skeleton, { className: "h-9 w-9 shrink-0 rounded-md" }),
|
|
70
|
+
/* @__PURE__ */ jsxs("div", { className: "flex-1 space-y-2", children: [
|
|
71
|
+
/* @__PURE__ */ jsx(Skeleton, { className: "h-3.5 w-40" }),
|
|
72
|
+
/* @__PURE__ */ jsx(Skeleton, { className: "h-2.5 w-24" })
|
|
73
|
+
] })
|
|
74
|
+
] }, i)) }) : activities.length === 0 ? /* @__PURE__ */ jsxs("div", { className: "py-12 text-center", children: [
|
|
75
|
+
/* @__PURE__ */ jsx("p", { className: "text-sm font-medium", children: emptyMessages.activity.title }),
|
|
76
|
+
/* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: emptyMessages.activity.description })
|
|
77
|
+
] }) : /* @__PURE__ */ jsx("div", { className: "divide-y divide-border/50", children: activities.map((activity, i) => /* @__PURE__ */ jsx(
|
|
78
|
+
ActivityRow,
|
|
79
|
+
{
|
|
80
|
+
activity,
|
|
81
|
+
showActor: true,
|
|
82
|
+
showExplorer: true
|
|
83
|
+
},
|
|
84
|
+
activity.txHash ? `${activity.txHash}-${activity.type}-${activity.nftTokenId ?? ""}` : `activity-${i}`
|
|
85
|
+
)) })
|
|
86
|
+
}
|
|
87
|
+
),
|
|
88
|
+
/* @__PURE__ */ jsx(
|
|
89
|
+
CommunityCard,
|
|
90
|
+
{
|
|
91
|
+
icon: /* @__PURE__ */ jsx(Sparkles, {}),
|
|
92
|
+
title: "Rewards",
|
|
93
|
+
subtitle: "Earn XP. Share the Creator's Fund.",
|
|
94
|
+
href: "/rewards",
|
|
95
|
+
linkLabel: "Scoreboard",
|
|
96
|
+
children: /* @__PURE__ */ jsx(LeaderboardPanel, { myAddress: address, limit: ROWS, showHeading: false, compact: true })
|
|
97
|
+
}
|
|
98
|
+
)
|
|
87
99
|
] });
|
|
88
100
|
}
|
|
89
101
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/discover-community-section.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport { Activity, ArrowRight, RefreshCw, Sparkles } from \"lucide-react\";\nimport Link from \"./link.js\";\nimport {
|
|
1
|
+
{"version":3,"sources":["../../src/components/discover-community-section.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useState, type ReactNode } from \"react\";\nimport { Activity, ArrowRight, RefreshCw, Sparkles } from \"lucide-react\";\nimport Link from \"./link.js\";\nimport { Skeleton } from \"./skeleton.js\";\nimport { ActivityRow } from \"./activity-row.js\";\nimport { useMedialaneApp } from \"./medialane-app.js\";\nimport { LeaderboardPanel } from \"./rewards/leaderboard-panel.js\";\nimport { useActivities } from \"../utils/use-activities.js\";\nimport { timeAgo } from \"../utils/time.js\";\nimport { emptyMessages } from \"../utils/empty-messages.js\";\n\nconst ROWS = 5;\n\nfunction CommunityCard({\n icon,\n title,\n subtitle,\n href,\n linkLabel,\n children,\n}: {\n icon: ReactNode;\n title: string;\n subtitle?: ReactNode;\n href: string;\n linkLabel: string;\n children: ReactNode;\n}) {\n return (\n <section className=\"overflow-hidden rounded-2xl border border-border/50 bg-card\">\n <div className=\"flex items-center justify-between gap-3 border-b border-border/50 px-4 py-3\">\n <div className=\"flex min-w-0 items-center gap-2\">\n <span className=\"shrink-0 text-muted-foreground [&>svg]:h-4 [&>svg]:w-4\">{icon}</span>\n <div className=\"min-w-0\">\n <h2 className=\"text-sm font-semibold leading-none tracking-tight text-foreground\">{title}</h2>\n <p className=\"mt-1 flex h-3.5 items-center gap-1 text-2xs text-muted-foreground\">{subtitle}</p>\n </div>\n </div>\n <Link\n href={href}\n className=\"inline-flex shrink-0 items-center gap-1 text-xs text-muted-foreground transition-colors hover:text-foreground\"\n >\n {linkLabel} <ArrowRight className=\"h-3 w-3\" />\n </Link>\n </div>\n <div className=\"min-h-[324px]\">{children}</div>\n </section>\n );\n}\n\nexport function DiscoverCommunitySection() {\n const { activities, isLoading } = useActivities({ limit: ROWS });\n const { walletAddress: address } = useMedialaneApp();\n const [lastUpdated, setLastUpdated] = useState(() => new Date().toISOString());\n\n useEffect(() => {\n if (!isLoading) setLastUpdated(new Date().toISOString());\n }, [activities, isLoading]);\n\n return (\n <section className=\"grid grid-cols-1 gap-6 lg:grid-cols-2 lg:gap-8\">\n <CommunityCard\n icon={<Activity />}\n title=\"Activities\"\n subtitle={\n !isLoading && (\n <>\n <RefreshCw className=\"h-2.5 w-2.5\" />\n Updated {timeAgo(lastUpdated)}\n </>\n )\n }\n href=\"/activities\"\n linkLabel=\"View all\"\n >\n {isLoading ? (\n <div className=\"divide-y divide-border/50\">\n {Array.from({ length: ROWS }).map((_, i) => (\n <div key={i} className=\"flex h-16 items-center gap-3 px-4\">\n <Skeleton className=\"h-8 w-8 shrink-0 rounded-lg\" />\n <Skeleton className=\"h-9 w-9 shrink-0 rounded-md\" />\n <div className=\"flex-1 space-y-2\">\n <Skeleton className=\"h-3.5 w-40\" />\n <Skeleton className=\"h-2.5 w-24\" />\n </div>\n </div>\n ))}\n </div>\n ) : activities.length === 0 ? (\n <div className=\"py-12 text-center\">\n <p className=\"text-sm font-medium\">{emptyMessages.activity.title}</p>\n <p className=\"text-sm text-muted-foreground\">{emptyMessages.activity.description}</p>\n </div>\n ) : (\n <div className=\"divide-y divide-border/50\">\n {activities.map((activity, i) => (\n <ActivityRow\n key={activity.txHash ? `${activity.txHash}-${activity.type}-${activity.nftTokenId ?? \"\"}` : `activity-${i}`}\n activity={activity}\n showActor\n showExplorer\n />\n ))}\n </div>\n )}\n </CommunityCard>\n\n <CommunityCard\n icon={<Sparkles />}\n title=\"Rewards\"\n subtitle=\"Earn XP. Share the Creator's Fund.\"\n href=\"/rewards\"\n linkLabel=\"Scoreboard\"\n >\n <LeaderboardPanel myAddress={address} limit={ROWS} showHeading={false} compact />\n </CommunityCard>\n </section>\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -23,6 +23,7 @@ __export(discover_features_exports, {
|
|
|
23
23
|
module.exports = __toCommonJS(discover_features_exports);
|
|
24
24
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
25
25
|
var import_lucide_react = require("lucide-react");
|
|
26
|
+
var import_scroll_section = require("./scroll-section.js");
|
|
26
27
|
var import_cn = require("../utils/cn.js");
|
|
27
28
|
const HUES = [
|
|
28
29
|
{ text: "text-brand-blue", border: "border-brand-blue/30", tint: "bg-brand-blue/10" },
|
|
@@ -47,10 +48,10 @@ const FEATURES = [
|
|
|
47
48
|
{ icon: import_lucide_react.Code, title: "Open source and auditable" }
|
|
48
49
|
];
|
|
49
50
|
function DiscoverFeatures() {
|
|
50
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
51
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_scroll_section.ScrollSection, { icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.BadgeCheck, {}), title: "Medialane features", children: FEATURES.map(({ icon: Icon, title }, i) => {
|
|
51
52
|
const hue = HUES[i % HUES.length];
|
|
52
53
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
53
|
-
"
|
|
54
|
+
"div",
|
|
54
55
|
{
|
|
55
56
|
className: (0, import_cn.cn)(
|
|
56
57
|
"flex min-h-[168px] w-56 shrink-0 snap-start flex-col gap-4 rounded-2xl border bg-card p-6 sm:w-64",
|
|
@@ -63,7 +64,7 @@ function DiscoverFeatures() {
|
|
|
63
64
|
},
|
|
64
65
|
title
|
|
65
66
|
);
|
|
66
|
-
}) })
|
|
67
|
+
}) });
|
|
67
68
|
}
|
|
68
69
|
// Annotate the CommonJS export names for ESM import in node:
|
|
69
70
|
0 && (module.exports = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/discover-features.tsx"],"sourcesContent":["import {\n Code,\n Database,\n DoorOpen,\n EyeOff,\n FileCog,\n Gem,\n Globe,\n HandCoins,\n Lock,\n Percent,\n ScanEye,\n Scale,\n ShieldCheck,\n type LucideIcon,\n} from \"lucide-react\";\nimport { cn } from \"../utils/cn.js\";\n\nconst HUES = [\n { text: \"text-brand-blue\", border: \"border-brand-blue/30\", tint: \"bg-brand-blue/10\" },\n { text: \"text-brand-maeve\", border: \"border-brand-maeve/30\", tint: \"bg-brand-maeve/10\" },\n { text: \"text-brand-orange\", border: \"border-brand-orange/30\", tint: \"bg-brand-orange/10\" },\n { text: \"text-brand-purple\", border: \"border-brand-purple/30\", tint: \"bg-brand-purple/10\" },\n { text: \"text-brand-rose\", border: \"border-brand-rose/30\", tint: \"bg-brand-rose/10\" },\n];\n\nconst FEATURES: ReadonlyArray<{ icon: LucideIcon; title: string }> = [\n { icon: HandCoins, title: \"99% to creators and owners\" },\n { icon: Globe, title: \"Censorship resistance\" },\n { icon: ShieldCheck, title: \"Stark cryptography\" },\n { icon: EyeOff, title: \"Privacy by design\" },\n { icon: ScanEye, title: \"Zero knowledge proof with Starknet\" },\n { icon: Percent, title: \"Zero fees on protocols\" },\n { icon: Lock, title: \"Immutable smart contracts\" },\n { icon: DoorOpen, title: \"Permissionless\" },\n { icon: Database, title: \"Smart contracts are the source of truth\" },\n { icon: FileCog, title: \"Programmable IP\" },\n { icon: Gem, title: \"Immutable assets\" },\n { icon: Scale, title: \"IP protection compliance\" },\n { icon: Code, title: \"Open source and auditable\" },\n];\n\nexport function DiscoverFeatures() {\n return (\n <
|
|
1
|
+
{"version":3,"sources":["../../src/components/discover-features.tsx"],"sourcesContent":["import {\n BadgeCheck,\n Code,\n Database,\n DoorOpen,\n EyeOff,\n FileCog,\n Gem,\n Globe,\n HandCoins,\n Lock,\n Percent,\n ScanEye,\n Scale,\n ShieldCheck,\n type LucideIcon,\n} from \"lucide-react\";\nimport { ScrollSection } from \"./scroll-section.js\";\nimport { cn } from \"../utils/cn.js\";\n\nconst HUES = [\n { text: \"text-brand-blue\", border: \"border-brand-blue/30\", tint: \"bg-brand-blue/10\" },\n { text: \"text-brand-maeve\", border: \"border-brand-maeve/30\", tint: \"bg-brand-maeve/10\" },\n { text: \"text-brand-orange\", border: \"border-brand-orange/30\", tint: \"bg-brand-orange/10\" },\n { text: \"text-brand-purple\", border: \"border-brand-purple/30\", tint: \"bg-brand-purple/10\" },\n { text: \"text-brand-rose\", border: \"border-brand-rose/30\", tint: \"bg-brand-rose/10\" },\n];\n\nconst FEATURES: ReadonlyArray<{ icon: LucideIcon; title: string }> = [\n { icon: HandCoins, title: \"99% to creators and owners\" },\n { icon: Globe, title: \"Censorship resistance\" },\n { icon: ShieldCheck, title: \"Stark cryptography\" },\n { icon: EyeOff, title: \"Privacy by design\" },\n { icon: ScanEye, title: \"Zero knowledge proof with Starknet\" },\n { icon: Percent, title: \"Zero fees on protocols\" },\n { icon: Lock, title: \"Immutable smart contracts\" },\n { icon: DoorOpen, title: \"Permissionless\" },\n { icon: Database, title: \"Smart contracts are the source of truth\" },\n { icon: FileCog, title: \"Programmable IP\" },\n { icon: Gem, title: \"Immutable assets\" },\n { icon: Scale, title: \"IP protection compliance\" },\n { icon: Code, title: \"Open source and auditable\" },\n];\n\nexport function DiscoverFeatures() {\n return (\n <ScrollSection icon={<BadgeCheck />} title=\"Medialane features\">\n {FEATURES.map(({ icon: Icon, title }, i) => {\n const hue = HUES[i % HUES.length]!;\n return (\n <div\n key={title}\n className={cn(\n \"flex min-h-[168px] w-56 shrink-0 snap-start flex-col gap-4 rounded-2xl border bg-card p-6 sm:w-64\",\n hue.border,\n )}\n >\n <span className={cn(\"flex h-11 w-11 items-center justify-center rounded-xl\", hue.tint)}>\n <Icon className={cn(\"h-6 w-6\", hue.text)} />\n </span>\n <h3 className=\"text-lg font-black leading-snug tracking-tight\">{title}</h3>\n </div>\n );\n })}\n </ScrollSection>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA8CyB;AA9CzB,0BAgBO;AACP,4BAA8B;AAC9B,gBAAmB;AAEnB,MAAM,OAAO;AAAA,EACX,EAAE,MAAM,mBAAmB,QAAQ,wBAAwB,MAAM,mBAAmB;AAAA,EACpF,EAAE,MAAM,oBAAoB,QAAQ,yBAAyB,MAAM,oBAAoB;AAAA,EACvF,EAAE,MAAM,qBAAqB,QAAQ,0BAA0B,MAAM,qBAAqB;AAAA,EAC1F,EAAE,MAAM,qBAAqB,QAAQ,0BAA0B,MAAM,qBAAqB;AAAA,EAC1F,EAAE,MAAM,mBAAmB,QAAQ,wBAAwB,MAAM,mBAAmB;AACtF;AAEA,MAAM,WAA+D;AAAA,EACnE,EAAE,MAAM,+BAAW,OAAO,6BAA6B;AAAA,EACvD,EAAE,MAAM,2BAAO,OAAO,wBAAwB;AAAA,EAC9C,EAAE,MAAM,iCAAa,OAAO,qBAAqB;AAAA,EACjD,EAAE,MAAM,4BAAQ,OAAO,oBAAoB;AAAA,EAC3C,EAAE,MAAM,6BAAS,OAAO,qCAAqC;AAAA,EAC7D,EAAE,MAAM,6BAAS,OAAO,yBAAyB;AAAA,EACjD,EAAE,MAAM,0BAAM,OAAO,4BAA4B;AAAA,EACjD,EAAE,MAAM,8BAAU,OAAO,iBAAiB;AAAA,EAC1C,EAAE,MAAM,8BAAU,OAAO,0CAA0C;AAAA,EACnE,EAAE,MAAM,6BAAS,OAAO,kBAAkB;AAAA,EAC1C,EAAE,MAAM,yBAAK,OAAO,mBAAmB;AAAA,EACvC,EAAE,MAAM,2BAAO,OAAO,2BAA2B;AAAA,EACjD,EAAE,MAAM,0BAAM,OAAO,4BAA4B;AACnD;AAEO,SAAS,mBAAmB;AACjC,SACE,4CAAC,uCAAc,MAAM,4CAAC,kCAAW,GAAI,OAAM,sBACxC,mBAAS,IAAI,CAAC,EAAE,MAAM,MAAM,MAAM,GAAG,MAAM;AAC1C,UAAM,MAAM,KAAK,IAAI,KAAK,MAAM;AAChC,WACE;AAAA,MAAC;AAAA;AAAA,QAEC,eAAW;AAAA,UACT;AAAA,UACA,IAAI;AAAA,QACN;AAAA,QAEA;AAAA,sDAAC,UAAK,eAAW,cAAG,yDAAyD,IAAI,IAAI,GACnF,sDAAC,QAAK,eAAW,cAAG,WAAW,IAAI,IAAI,GAAG,GAC5C;AAAA,UACA,4CAAC,QAAG,WAAU,kDAAkD,iBAAM;AAAA;AAAA;AAAA,MATjE;AAAA,IAUP;AAAA,EAEJ,CAAC,GACH;AAEJ;","names":[]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import {
|
|
3
|
+
BadgeCheck,
|
|
3
4
|
Code,
|
|
4
5
|
Database,
|
|
5
6
|
DoorOpen,
|
|
@@ -14,6 +15,7 @@ import {
|
|
|
14
15
|
Scale,
|
|
15
16
|
ShieldCheck
|
|
16
17
|
} from "lucide-react";
|
|
18
|
+
import { ScrollSection } from "./scroll-section.js";
|
|
17
19
|
import { cn } from "../utils/cn.js";
|
|
18
20
|
const HUES = [
|
|
19
21
|
{ text: "text-brand-blue", border: "border-brand-blue/30", tint: "bg-brand-blue/10" },
|
|
@@ -38,10 +40,10 @@ const FEATURES = [
|
|
|
38
40
|
{ icon: Code, title: "Open source and auditable" }
|
|
39
41
|
];
|
|
40
42
|
function DiscoverFeatures() {
|
|
41
|
-
return /* @__PURE__ */ jsx(
|
|
43
|
+
return /* @__PURE__ */ jsx(ScrollSection, { icon: /* @__PURE__ */ jsx(BadgeCheck, {}), title: "Medialane features", children: FEATURES.map(({ icon: Icon, title }, i) => {
|
|
42
44
|
const hue = HUES[i % HUES.length];
|
|
43
45
|
return /* @__PURE__ */ jsxs(
|
|
44
|
-
"
|
|
46
|
+
"div",
|
|
45
47
|
{
|
|
46
48
|
className: cn(
|
|
47
49
|
"flex min-h-[168px] w-56 shrink-0 snap-start flex-col gap-4 rounded-2xl border bg-card p-6 sm:w-64",
|
|
@@ -54,7 +56,7 @@ function DiscoverFeatures() {
|
|
|
54
56
|
},
|
|
55
57
|
title
|
|
56
58
|
);
|
|
57
|
-
}) })
|
|
59
|
+
}) });
|
|
58
60
|
}
|
|
59
61
|
export {
|
|
60
62
|
DiscoverFeatures
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/discover-features.tsx"],"sourcesContent":["import {\n Code,\n Database,\n DoorOpen,\n EyeOff,\n FileCog,\n Gem,\n Globe,\n HandCoins,\n Lock,\n Percent,\n ScanEye,\n Scale,\n ShieldCheck,\n type LucideIcon,\n} from \"lucide-react\";\nimport { cn } from \"../utils/cn.js\";\n\nconst HUES = [\n { text: \"text-brand-blue\", border: \"border-brand-blue/30\", tint: \"bg-brand-blue/10\" },\n { text: \"text-brand-maeve\", border: \"border-brand-maeve/30\", tint: \"bg-brand-maeve/10\" },\n { text: \"text-brand-orange\", border: \"border-brand-orange/30\", tint: \"bg-brand-orange/10\" },\n { text: \"text-brand-purple\", border: \"border-brand-purple/30\", tint: \"bg-brand-purple/10\" },\n { text: \"text-brand-rose\", border: \"border-brand-rose/30\", tint: \"bg-brand-rose/10\" },\n];\n\nconst FEATURES: ReadonlyArray<{ icon: LucideIcon; title: string }> = [\n { icon: HandCoins, title: \"99% to creators and owners\" },\n { icon: Globe, title: \"Censorship resistance\" },\n { icon: ShieldCheck, title: \"Stark cryptography\" },\n { icon: EyeOff, title: \"Privacy by design\" },\n { icon: ScanEye, title: \"Zero knowledge proof with Starknet\" },\n { icon: Percent, title: \"Zero fees on protocols\" },\n { icon: Lock, title: \"Immutable smart contracts\" },\n { icon: DoorOpen, title: \"Permissionless\" },\n { icon: Database, title: \"Smart contracts are the source of truth\" },\n { icon: FileCog, title: \"Programmable IP\" },\n { icon: Gem, title: \"Immutable assets\" },\n { icon: Scale, title: \"IP protection compliance\" },\n { icon: Code, title: \"Open source and auditable\" },\n];\n\nexport function DiscoverFeatures() {\n return (\n <
|
|
1
|
+
{"version":3,"sources":["../../src/components/discover-features.tsx"],"sourcesContent":["import {\n BadgeCheck,\n Code,\n Database,\n DoorOpen,\n EyeOff,\n FileCog,\n Gem,\n Globe,\n HandCoins,\n Lock,\n Percent,\n ScanEye,\n Scale,\n ShieldCheck,\n type LucideIcon,\n} from \"lucide-react\";\nimport { ScrollSection } from \"./scroll-section.js\";\nimport { cn } from \"../utils/cn.js\";\n\nconst HUES = [\n { text: \"text-brand-blue\", border: \"border-brand-blue/30\", tint: \"bg-brand-blue/10\" },\n { text: \"text-brand-maeve\", border: \"border-brand-maeve/30\", tint: \"bg-brand-maeve/10\" },\n { text: \"text-brand-orange\", border: \"border-brand-orange/30\", tint: \"bg-brand-orange/10\" },\n { text: \"text-brand-purple\", border: \"border-brand-purple/30\", tint: \"bg-brand-purple/10\" },\n { text: \"text-brand-rose\", border: \"border-brand-rose/30\", tint: \"bg-brand-rose/10\" },\n];\n\nconst FEATURES: ReadonlyArray<{ icon: LucideIcon; title: string }> = [\n { icon: HandCoins, title: \"99% to creators and owners\" },\n { icon: Globe, title: \"Censorship resistance\" },\n { icon: ShieldCheck, title: \"Stark cryptography\" },\n { icon: EyeOff, title: \"Privacy by design\" },\n { icon: ScanEye, title: \"Zero knowledge proof with Starknet\" },\n { icon: Percent, title: \"Zero fees on protocols\" },\n { icon: Lock, title: \"Immutable smart contracts\" },\n { icon: DoorOpen, title: \"Permissionless\" },\n { icon: Database, title: \"Smart contracts are the source of truth\" },\n { icon: FileCog, title: \"Programmable IP\" },\n { icon: Gem, title: \"Immutable assets\" },\n { icon: Scale, title: \"IP protection compliance\" },\n { icon: Code, title: \"Open source and auditable\" },\n];\n\nexport function DiscoverFeatures() {\n return (\n <ScrollSection icon={<BadgeCheck />} title=\"Medialane features\">\n {FEATURES.map(({ icon: Icon, title }, i) => {\n const hue = HUES[i % HUES.length]!;\n return (\n <div\n key={title}\n className={cn(\n \"flex min-h-[168px] w-56 shrink-0 snap-start flex-col gap-4 rounded-2xl border bg-card p-6 sm:w-64\",\n hue.border,\n )}\n >\n <span className={cn(\"flex h-11 w-11 items-center justify-center rounded-xl\", hue.tint)}>\n <Icon className={cn(\"h-6 w-6\", hue.text)} />\n </span>\n <h3 className=\"text-lg font-black leading-snug tracking-tight\">{title}</h3>\n </div>\n );\n })}\n </ScrollSection>\n );\n}\n"],"mappings":"AA8CyB,cAIf,YAJe;AA9CzB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AACP,SAAS,qBAAqB;AAC9B,SAAS,UAAU;AAEnB,MAAM,OAAO;AAAA,EACX,EAAE,MAAM,mBAAmB,QAAQ,wBAAwB,MAAM,mBAAmB;AAAA,EACpF,EAAE,MAAM,oBAAoB,QAAQ,yBAAyB,MAAM,oBAAoB;AAAA,EACvF,EAAE,MAAM,qBAAqB,QAAQ,0BAA0B,MAAM,qBAAqB;AAAA,EAC1F,EAAE,MAAM,qBAAqB,QAAQ,0BAA0B,MAAM,qBAAqB;AAAA,EAC1F,EAAE,MAAM,mBAAmB,QAAQ,wBAAwB,MAAM,mBAAmB;AACtF;AAEA,MAAM,WAA+D;AAAA,EACnE,EAAE,MAAM,WAAW,OAAO,6BAA6B;AAAA,EACvD,EAAE,MAAM,OAAO,OAAO,wBAAwB;AAAA,EAC9C,EAAE,MAAM,aAAa,OAAO,qBAAqB;AAAA,EACjD,EAAE,MAAM,QAAQ,OAAO,oBAAoB;AAAA,EAC3C,EAAE,MAAM,SAAS,OAAO,qCAAqC;AAAA,EAC7D,EAAE,MAAM,SAAS,OAAO,yBAAyB;AAAA,EACjD,EAAE,MAAM,MAAM,OAAO,4BAA4B;AAAA,EACjD,EAAE,MAAM,UAAU,OAAO,iBAAiB;AAAA,EAC1C,EAAE,MAAM,UAAU,OAAO,0CAA0C;AAAA,EACnE,EAAE,MAAM,SAAS,OAAO,kBAAkB;AAAA,EAC1C,EAAE,MAAM,KAAK,OAAO,mBAAmB;AAAA,EACvC,EAAE,MAAM,OAAO,OAAO,2BAA2B;AAAA,EACjD,EAAE,MAAM,MAAM,OAAO,4BAA4B;AACnD;AAEO,SAAS,mBAAmB;AACjC,SACE,oBAAC,iBAAc,MAAM,oBAAC,cAAW,GAAI,OAAM,sBACxC,mBAAS,IAAI,CAAC,EAAE,MAAM,MAAM,MAAM,GAAG,MAAM;AAC1C,UAAM,MAAM,KAAK,IAAI,KAAK,MAAM;AAChC,WACE;AAAA,MAAC;AAAA;AAAA,QAEC,WAAW;AAAA,UACT;AAAA,UACA,IAAI;AAAA,QACN;AAAA,QAEA;AAAA,8BAAC,UAAK,WAAW,GAAG,yDAAyD,IAAI,IAAI,GACnF,8BAAC,QAAK,WAAW,GAAG,WAAW,IAAI,IAAI,GAAG,GAC5C;AAAA,UACA,oBAAC,QAAG,WAAU,kDAAkD,iBAAM;AAAA;AAAA;AAAA,MATjE;AAAA,IAUP;AAAA,EAEJ,CAAC,GACH;AAEJ;","names":[]}
|
|
@@ -91,8 +91,8 @@ function DiscoverPage({ useMarketActions, heroBadge, heroHeadline }) {
|
|
|
91
91
|
}
|
|
92
92
|
),
|
|
93
93
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ip_type_nav.IpTypeNav, {}),
|
|
94
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_discover_features.DiscoverFeatures, {}),
|
|
95
94
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_discover_community_section.DiscoverCommunitySection, {}),
|
|
95
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_discover_features.DiscoverFeatures, {}),
|
|
96
96
|
market.dialogs
|
|
97
97
|
] });
|
|
98
98
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/discover-page.tsx"],"sourcesContent":["\"use client\";\n\nimport { assetHref, collectionHref } from \"@medialane/sdk\";\nimport { Sparkles } from \"lucide-react\";\nimport { PageContainer } from \"./page-container.js\";\nimport { DiscoverHero } from \"./discover-hero.js\";\nimport { DiscoverCollectionsStrip } from \"./discover-collections-strip.js\";\nimport { DiscoverActivityStrip } from \"./discover-feed-section.js\";\nimport { DiscoverCommunitySection } from \"./discover-community-section.js\";\nimport { DiscoverFeatures } from \"./discover-features.js\";\nimport { IpTypeNav } from \"./ip-type-nav.js\";\nimport { useMedialaneApp } from \"./medialane-app.js\";\nimport type { CollectionMarketActions } from \"./collection-page.js\";\nimport { useOrders } from \"../utils/use-orders.js\";\nimport { useCollections } from \"../utils/use-collections.js\";\nimport { usePlatformStats } from \"../utils/use-platform-stats.js\";\nimport { isSameAddress } from \"../utils/same-address.js\";\n\nexport interface DiscoverPageProps {\n useMarketActions: () => CollectionMarketActions;\n heroBadge?: string;\n heroHeadline?: string;\n}\n\nexport function DiscoverPage({ useMarketActions, heroBadge, heroHeadline }: DiscoverPageProps) {\n const { walletAddress } = useMedialaneApp();\n const market = useMarketActions();\n const { stats } = usePlatformStats();\n const { orders: tickerOrders } = useOrders({ status: \"ACTIVE\", sort: \"recent\", limit: 14 });\n const { orders: feedOrders, isLoading: feedLoading } = useOrders({ status: \"ACTIVE\", sort: \"recent\", limit: 10 });\n const { collections: featured, isLoading: featuredLoading } = useCollections(1, 8, true);\n const { collections, isLoading: collectionsLoading } = useCollections(1, 8);\n\n return (\n <PageContainer className=\"box-border max-w-full space-y-14 px-4 pt-20 sm:space-y-20 sm:px-5 lg:px-6\">\n <div className=\"space-y-8 sm:space-y-10\">\n <DiscoverHero\n stats={stats ?? null}\n orders={tickerOrders}\n badgeText={heroBadge}\n headlineText={heroHeadline}\n getTickerHref={(o) => assetHref(\"STARKNET\", o.nftContract, o.nftTokenId)}\n />\n <div className=\"space-y-14 sm:space-y-20\">\n {(featuredLoading || featured.length > 0) && (\n <DiscoverCollectionsStrip\n collections={featured}\n isLoading={featuredLoading}\n getHref={(c) => collectionHref(\"STARKNET\", c.contractAddress)}\n allCollectionsHref=\"/collections\"\n title=\"Featured\"\n icon={<Sparkles />}\n />\n )}\n <DiscoverCollectionsStrip\n collections={collections}\n isLoading={collectionsLoading}\n getHref={(c) => collectionHref(\"STARKNET\", c.contractAddress)}\n allCollectionsHref=\"/collections\"\n />\n </div>\n </div>\n <DiscoverActivityStrip\n orders={feedOrders}\n isLoading={feedLoading}\n marketplaceHref=\"/marketplace\"\n onBuyOrder={market.buy}\n isOwnOrder={(o) => !!walletAddress && !!o.offerer && isSameAddress(o.offerer, walletAddress)}\n />\n <IpTypeNav />\n <
|
|
1
|
+
{"version":3,"sources":["../../src/components/discover-page.tsx"],"sourcesContent":["\"use client\";\n\nimport { assetHref, collectionHref } from \"@medialane/sdk\";\nimport { Sparkles } from \"lucide-react\";\nimport { PageContainer } from \"./page-container.js\";\nimport { DiscoverHero } from \"./discover-hero.js\";\nimport { DiscoverCollectionsStrip } from \"./discover-collections-strip.js\";\nimport { DiscoverActivityStrip } from \"./discover-feed-section.js\";\nimport { DiscoverCommunitySection } from \"./discover-community-section.js\";\nimport { DiscoverFeatures } from \"./discover-features.js\";\nimport { IpTypeNav } from \"./ip-type-nav.js\";\nimport { useMedialaneApp } from \"./medialane-app.js\";\nimport type { CollectionMarketActions } from \"./collection-page.js\";\nimport { useOrders } from \"../utils/use-orders.js\";\nimport { useCollections } from \"../utils/use-collections.js\";\nimport { usePlatformStats } from \"../utils/use-platform-stats.js\";\nimport { isSameAddress } from \"../utils/same-address.js\";\n\nexport interface DiscoverPageProps {\n useMarketActions: () => CollectionMarketActions;\n heroBadge?: string;\n heroHeadline?: string;\n}\n\nexport function DiscoverPage({ useMarketActions, heroBadge, heroHeadline }: DiscoverPageProps) {\n const { walletAddress } = useMedialaneApp();\n const market = useMarketActions();\n const { stats } = usePlatformStats();\n const { orders: tickerOrders } = useOrders({ status: \"ACTIVE\", sort: \"recent\", limit: 14 });\n const { orders: feedOrders, isLoading: feedLoading } = useOrders({ status: \"ACTIVE\", sort: \"recent\", limit: 10 });\n const { collections: featured, isLoading: featuredLoading } = useCollections(1, 8, true);\n const { collections, isLoading: collectionsLoading } = useCollections(1, 8);\n\n return (\n <PageContainer className=\"box-border max-w-full space-y-14 px-4 pt-20 sm:space-y-20 sm:px-5 lg:px-6\">\n <div className=\"space-y-8 sm:space-y-10\">\n <DiscoverHero\n stats={stats ?? null}\n orders={tickerOrders}\n badgeText={heroBadge}\n headlineText={heroHeadline}\n getTickerHref={(o) => assetHref(\"STARKNET\", o.nftContract, o.nftTokenId)}\n />\n <div className=\"space-y-14 sm:space-y-20\">\n {(featuredLoading || featured.length > 0) && (\n <DiscoverCollectionsStrip\n collections={featured}\n isLoading={featuredLoading}\n getHref={(c) => collectionHref(\"STARKNET\", c.contractAddress)}\n allCollectionsHref=\"/collections\"\n title=\"Featured\"\n icon={<Sparkles />}\n />\n )}\n <DiscoverCollectionsStrip\n collections={collections}\n isLoading={collectionsLoading}\n getHref={(c) => collectionHref(\"STARKNET\", c.contractAddress)}\n allCollectionsHref=\"/collections\"\n />\n </div>\n </div>\n <DiscoverActivityStrip\n orders={feedOrders}\n isLoading={feedLoading}\n marketplaceHref=\"/marketplace\"\n onBuyOrder={market.buy}\n isOwnOrder={(o) => !!walletAddress && !!o.offerer && isSameAddress(o.offerer, walletAddress)}\n />\n <IpTypeNav />\n <DiscoverCommunitySection />\n <DiscoverFeatures />\n {market.dialogs}\n </PageContainer>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAoCQ;AAlCR,iBAA0C;AAC1C,0BAAyB;AACzB,4BAA8B;AAC9B,2BAA6B;AAC7B,wCAAyC;AACzC,mCAAsC;AACtC,wCAAyC;AACzC,+BAAiC;AACjC,yBAA0B;AAC1B,2BAAgC;AAEhC,wBAA0B;AAC1B,6BAA+B;AAC/B,gCAAiC;AACjC,0BAA8B;AAQvB,SAAS,aAAa,EAAE,kBAAkB,WAAW,aAAa,GAAsB;AAC7F,QAAM,EAAE,cAAc,QAAI,sCAAgB;AAC1C,QAAM,SAAS,iBAAiB;AAChC,QAAM,EAAE,MAAM,QAAI,4CAAiB;AACnC,QAAM,EAAE,QAAQ,aAAa,QAAI,6BAAU,EAAE,QAAQ,UAAU,MAAM,UAAU,OAAO,GAAG,CAAC;AAC1F,QAAM,EAAE,QAAQ,YAAY,WAAW,YAAY,QAAI,6BAAU,EAAE,QAAQ,UAAU,MAAM,UAAU,OAAO,GAAG,CAAC;AAChH,QAAM,EAAE,aAAa,UAAU,WAAW,gBAAgB,QAAI,uCAAe,GAAG,GAAG,IAAI;AACvF,QAAM,EAAE,aAAa,WAAW,mBAAmB,QAAI,uCAAe,GAAG,CAAC;AAE1E,SACE,6CAAC,uCAAc,WAAU,6EACvB;AAAA,iDAAC,SAAI,WAAU,2BACb;AAAA;AAAA,QAAC;AAAA;AAAA,UACC,OAAO,SAAS;AAAA,UAChB,QAAQ;AAAA,UACR,WAAW;AAAA,UACX,cAAc;AAAA,UACd,eAAe,CAAC,UAAM,sBAAU,YAAY,EAAE,aAAa,EAAE,UAAU;AAAA;AAAA,MACzE;AAAA,MACA,6CAAC,SAAI,WAAU,4BACX;AAAA,4BAAmB,SAAS,SAAS,MACrC;AAAA,UAAC;AAAA;AAAA,YACC,aAAa;AAAA,YACb,WAAW;AAAA,YACX,SAAS,CAAC,UAAM,2BAAe,YAAY,EAAE,eAAe;AAAA,YAC5D,oBAAmB;AAAA,YACnB,OAAM;AAAA,YACN,MAAM,4CAAC,gCAAS;AAAA;AAAA,QAClB;AAAA,QAEF;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA,WAAW;AAAA,YACX,SAAS,CAAC,UAAM,2BAAe,YAAY,EAAE,eAAe;AAAA,YAC5D,oBAAmB;AAAA;AAAA,QACrB;AAAA,SACF;AAAA,OACF;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,iBAAgB;AAAA,QAChB,YAAY,OAAO;AAAA,QACnB,YAAY,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC,EAAE,eAAW,mCAAc,EAAE,SAAS,aAAa;AAAA;AAAA,IAC7F;AAAA,IACA,4CAAC,gCAAU;AAAA,IACX,4CAAC,8DAAyB;AAAA,IAC1B,4CAAC,6CAAiB;AAAA,IACjB,OAAO;AAAA,KACV;AAEJ;","names":[]}
|
|
@@ -68,8 +68,8 @@ function DiscoverPage({ useMarketActions, heroBadge, heroHeadline }) {
|
|
|
68
68
|
}
|
|
69
69
|
),
|
|
70
70
|
/* @__PURE__ */ jsx(IpTypeNav, {}),
|
|
71
|
-
/* @__PURE__ */ jsx(DiscoverFeatures, {}),
|
|
72
71
|
/* @__PURE__ */ jsx(DiscoverCommunitySection, {}),
|
|
72
|
+
/* @__PURE__ */ jsx(DiscoverFeatures, {}),
|
|
73
73
|
market.dialogs
|
|
74
74
|
] });
|
|
75
75
|
}
|