@medialane/ui 0.286.0 → 0.288.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/badge.d.cts +1 -1
- package/dist/components/badge.d.ts +1 -1
- package/dist/components/button.d.cts +1 -1
- package/dist/components/button.d.ts +1 -1
- package/dist/components/collection-settings.cjs +350 -0
- package/dist/components/collection-settings.cjs.map +1 -0
- package/dist/components/collection-settings.d.cts +7 -0
- package/dist/components/collection-settings.d.ts +7 -0
- package/dist/components/collection-settings.js +335 -0
- package/dist/components/collection-settings.js.map +1 -0
- package/dist/components/collection-slug-claim.cjs +219 -0
- package/dist/components/collection-slug-claim.cjs.map +1 -0
- package/dist/components/collection-slug-claim.d.cts +10 -0
- package/dist/components/collection-slug-claim.d.ts +10 -0
- package/dist/components/collection-slug-claim.js +185 -0
- package/dist/components/collection-slug-claim.js.map +1 -0
- 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/medialane-app.cjs.map +1 -1
- package/dist/components/medialane-app.d.cts +1 -0
- package/dist/components/medialane-app.d.ts +1 -0
- package/dist/components/medialane-app.js.map +1 -1
- package/dist/components/mint-landing.cjs +232 -0
- package/dist/components/mint-landing.cjs.map +1 -0
- package/dist/components/mint-landing.d.cts +77 -0
- package/dist/components/mint-landing.d.ts +77 -0
- package/dist/components/mint-landing.js +212 -0
- package/dist/components/mint-landing.js.map +1 -0
- package/dist/components/settings-section.cjs +65 -0
- package/dist/components/settings-section.cjs.map +1 -0
- package/dist/components/settings-section.d.cts +24 -0
- package/dist/components/settings-section.d.ts +24 -0
- package/dist/components/settings-section.js +38 -0
- package/dist/components/settings-section.js.map +1 -0
- package/dist/index.cjs +6 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/utils/collection-settings-form.cjs +77 -0
- package/dist/utils/collection-settings-form.cjs.map +1 -0
- package/dist/utils/collection-settings-form.d.cts +21 -0
- package/dist/utils/collection-settings-form.d.ts +21 -0
- package/dist/utils/collection-settings-form.js +51 -0
- package/dist/utils/collection-settings-form.js.map +1 -0
- package/dist/utils/use-collection-settings.cjs +83 -0
- package/dist/utils/use-collection-settings.cjs.map +1 -0
- package/dist/utils/use-collection-settings.d.cts +58 -0
- package/dist/utils/use-collection-settings.d.ts +58 -0
- package/dist/utils/use-collection-settings.js +59 -0
- package/dist/utils/use-collection-settings.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
declare function CollectionSlugClaimSection({ contract, profile, }: {
|
|
4
|
+
contract: string;
|
|
5
|
+
profile: {
|
|
6
|
+
slug?: string | null;
|
|
7
|
+
} | null;
|
|
8
|
+
}): react_jsx_runtime.JSX.Element;
|
|
9
|
+
|
|
10
|
+
export { CollectionSlugClaimSection };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
declare function CollectionSlugClaimSection({ contract, profile, }: {
|
|
4
|
+
contract: string;
|
|
5
|
+
profile: {
|
|
6
|
+
slug?: string | null;
|
|
7
|
+
} | null;
|
|
8
|
+
}): react_jsx_runtime.JSX.Element;
|
|
9
|
+
|
|
10
|
+
export { CollectionSlugClaimSection };
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useState, useEffect, useRef } from "react";
|
|
4
|
+
import { normalizeAddress } from "@medialane/sdk";
|
|
5
|
+
import { Gem } from "lucide-react";
|
|
6
|
+
import { Button } from "./button.js";
|
|
7
|
+
import { Badge } from "./badge.js";
|
|
8
|
+
import Link from "./link.js";
|
|
9
|
+
import { useMedialaneApp } from "./medialane-app.js";
|
|
10
|
+
import { SectionCard, SectionHeader } from "./settings-section.js";
|
|
11
|
+
import { describeError } from "../utils/describe-error.js";
|
|
12
|
+
function CollectionSlugClaimSection({
|
|
13
|
+
contract,
|
|
14
|
+
profile
|
|
15
|
+
}) {
|
|
16
|
+
const { getClient, ensureSignedIn, verifyEmailHref } = useMedialaneApp();
|
|
17
|
+
const [slugInput, setSlugInput] = useState("");
|
|
18
|
+
const [checkState, setCheckState] = useState("idle");
|
|
19
|
+
const [checkReason, setCheckReason] = useState(null);
|
|
20
|
+
const [submitState, setSubmitState] = useState("idle");
|
|
21
|
+
const [submitError, setSubmitError] = useState(null);
|
|
22
|
+
const [pendingSlug, setPendingSlug] = useState(null);
|
|
23
|
+
const loadedRef = useRef(false);
|
|
24
|
+
useEffect(() => {
|
|
25
|
+
if (loadedRef.current) return;
|
|
26
|
+
loadedRef.current = true;
|
|
27
|
+
(async () => {
|
|
28
|
+
try {
|
|
29
|
+
const { claims } = await getClient().api.collections.mySlugClaims();
|
|
30
|
+
const match = claims.find(
|
|
31
|
+
(c) => normalizeAddress("STARKNET", c.contractAddress) === normalizeAddress("STARKNET", contract) && c.status === "PENDING"
|
|
32
|
+
);
|
|
33
|
+
if (match) setPendingSlug(match.slug);
|
|
34
|
+
} catch {
|
|
35
|
+
}
|
|
36
|
+
})();
|
|
37
|
+
}, [contract, getClient]);
|
|
38
|
+
const handleCheck = async () => {
|
|
39
|
+
const slug = slugInput.toLowerCase().trim();
|
|
40
|
+
if (!slug) return;
|
|
41
|
+
setCheckState("checking");
|
|
42
|
+
setCheckReason(null);
|
|
43
|
+
try {
|
|
44
|
+
const result = await getClient().api.collections.slugAvailability(slug);
|
|
45
|
+
setCheckState(result.available ? "available" : "taken");
|
|
46
|
+
if (!result.available) setCheckReason(result.reason ?? "That slug is not available.");
|
|
47
|
+
} catch {
|
|
48
|
+
setCheckState("invalid");
|
|
49
|
+
setCheckReason("Unable to check availability. Try again.");
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
const handleSubmit = async () => {
|
|
53
|
+
const slug = slugInput.toLowerCase().trim();
|
|
54
|
+
if (!slug || checkState !== "available") return;
|
|
55
|
+
setSubmitState("submitting");
|
|
56
|
+
setSubmitError(null);
|
|
57
|
+
try {
|
|
58
|
+
await ensureSignedIn?.();
|
|
59
|
+
const { claim } = await getClient().api.collections.submitSlugClaim(contract, slug);
|
|
60
|
+
setPendingSlug(claim.slug);
|
|
61
|
+
setSubmitState("done");
|
|
62
|
+
} catch (err) {
|
|
63
|
+
const msg = describeError(err).message;
|
|
64
|
+
setSubmitError(msg);
|
|
65
|
+
setSubmitState("error");
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
if (profile?.slug) {
|
|
69
|
+
return /* @__PURE__ */ jsxs(SectionCard, { className: "border-emerald-500/20 bg-emerald-500/[0.02]", children: [
|
|
70
|
+
/* @__PURE__ */ jsx(
|
|
71
|
+
SectionHeader,
|
|
72
|
+
{
|
|
73
|
+
icon: Gem,
|
|
74
|
+
title: "Collection URL",
|
|
75
|
+
description: `medialane.io/collection/${profile.slug}`,
|
|
76
|
+
iconClass: "text-emerald-500",
|
|
77
|
+
bgClass: "bg-emerald-500/15",
|
|
78
|
+
badge: /* @__PURE__ */ jsx(Badge, { variant: "outline", className: "text-2xs h-4 px-1.5 text-emerald-600 border-emerald-500/30", children: "Active" })
|
|
79
|
+
}
|
|
80
|
+
),
|
|
81
|
+
/* @__PURE__ */ jsx("div", { className: "pt-1 border-t border-border", children: /* @__PURE__ */ jsxs("p", { className: "text-xs text-muted-foreground", children: [
|
|
82
|
+
"Your collection is accessible at",
|
|
83
|
+
" ",
|
|
84
|
+
/* @__PURE__ */ jsxs("span", { className: "tabular-nums text-foreground", children: [
|
|
85
|
+
"medialane.io/collection/",
|
|
86
|
+
profile.slug
|
|
87
|
+
] })
|
|
88
|
+
] }) })
|
|
89
|
+
] });
|
|
90
|
+
}
|
|
91
|
+
if (pendingSlug) {
|
|
92
|
+
return /* @__PURE__ */ jsxs(SectionCard, { className: "border-primary/20 bg-primary/[0.02]", children: [
|
|
93
|
+
/* @__PURE__ */ jsx(
|
|
94
|
+
SectionHeader,
|
|
95
|
+
{
|
|
96
|
+
icon: Gem,
|
|
97
|
+
title: "Claim your collection URL",
|
|
98
|
+
description: `medialane.io/collection/${pendingSlug}`,
|
|
99
|
+
iconClass: "text-primary",
|
|
100
|
+
bgClass: "bg-primary/15",
|
|
101
|
+
badge: /* @__PURE__ */ jsx(Badge, { variant: "outline", className: "text-2xs h-4 px-1.5 text-amber-600 border-amber-500/30", children: "Pending review" })
|
|
102
|
+
}
|
|
103
|
+
),
|
|
104
|
+
/* @__PURE__ */ jsx("div", { className: "pt-1 border-t border-border", children: /* @__PURE__ */ jsxs("p", { className: "text-xs text-muted-foreground", children: [
|
|
105
|
+
"Your claim for",
|
|
106
|
+
" ",
|
|
107
|
+
/* @__PURE__ */ jsxs("span", { className: "tabular-nums text-foreground", children: [
|
|
108
|
+
"medialane.io/collection/",
|
|
109
|
+
pendingSlug
|
|
110
|
+
] }),
|
|
111
|
+
" is under review. You'll be notified once it's approved."
|
|
112
|
+
] }) })
|
|
113
|
+
] });
|
|
114
|
+
}
|
|
115
|
+
return /* @__PURE__ */ jsxs(SectionCard, { className: "border-primary/20 bg-primary/[0.02]", children: [
|
|
116
|
+
/* @__PURE__ */ jsx(
|
|
117
|
+
SectionHeader,
|
|
118
|
+
{
|
|
119
|
+
icon: Gem,
|
|
120
|
+
title: "Claim your collection URL",
|
|
121
|
+
description: "Reserve a unique URL \u2014 medialane.io/collection/your-name",
|
|
122
|
+
iconClass: "text-primary",
|
|
123
|
+
bgClass: "bg-primary/15"
|
|
124
|
+
}
|
|
125
|
+
),
|
|
126
|
+
/* @__PURE__ */ jsxs("div", { className: "pt-3 border-t border-border space-y-3", children: [
|
|
127
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
128
|
+
/* @__PURE__ */ jsxs("div", { className: "flex-1 flex items-center rounded-lg border border-border bg-muted/40 px-3 py-2", children: [
|
|
129
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs text-muted-foreground whitespace-nowrap shrink-0", children: "medialane.io/collection/" }),
|
|
130
|
+
/* @__PURE__ */ jsx(
|
|
131
|
+
"input",
|
|
132
|
+
{
|
|
133
|
+
type: "text",
|
|
134
|
+
className: "flex-1 bg-transparent text-xs text-foreground outline-none placeholder:text-muted-foreground/50 min-w-0",
|
|
135
|
+
placeholder: "your-name",
|
|
136
|
+
value: slugInput,
|
|
137
|
+
onChange: (e) => {
|
|
138
|
+
setSlugInput(e.target.value.toLowerCase().replace(/[^a-z0-9_-]/g, ""));
|
|
139
|
+
setCheckState("idle");
|
|
140
|
+
},
|
|
141
|
+
onKeyDown: (e) => {
|
|
142
|
+
if (e.key === "Enter") handleCheck();
|
|
143
|
+
},
|
|
144
|
+
maxLength: 20
|
|
145
|
+
}
|
|
146
|
+
)
|
|
147
|
+
] }),
|
|
148
|
+
/* @__PURE__ */ jsx(
|
|
149
|
+
Button,
|
|
150
|
+
{
|
|
151
|
+
variant: "outline",
|
|
152
|
+
size: "sm",
|
|
153
|
+
onClick: handleCheck,
|
|
154
|
+
disabled: !slugInput.trim() || checkState === "checking",
|
|
155
|
+
className: "shrink-0",
|
|
156
|
+
children: checkState === "checking" ? "Checking\u2026" : "Check"
|
|
157
|
+
}
|
|
158
|
+
)
|
|
159
|
+
] }),
|
|
160
|
+
checkState === "available" && /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-3", children: [
|
|
161
|
+
/* @__PURE__ */ jsxs("p", { className: "text-xs text-emerald-600 font-medium truncate", children: [
|
|
162
|
+
"\u2713 Available \u2014 ",
|
|
163
|
+
/* @__PURE__ */ jsxs("span", { className: "tabular-nums", children: [
|
|
164
|
+
"medialane.io/collection/",
|
|
165
|
+
slugInput
|
|
166
|
+
] })
|
|
167
|
+
] }),
|
|
168
|
+
/* @__PURE__ */ jsx(Button, { size: "sm", onClick: handleSubmit, disabled: submitState === "submitting", className: "shrink-0", children: submitState === "submitting" ? "Claiming\u2026" : "Claim this URL" })
|
|
169
|
+
] }),
|
|
170
|
+
(checkState === "taken" || checkState === "invalid") && /* @__PURE__ */ jsx("p", { className: "text-xs text-destructive", children: checkReason ?? "That slug is not available." }),
|
|
171
|
+
submitState === "error" && /* @__PURE__ */ jsxs("p", { className: "text-xs text-destructive", children: [
|
|
172
|
+
submitError,
|
|
173
|
+
verifyEmailHref && submitError === "Verify your email to claim a collection." && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
174
|
+
" ",
|
|
175
|
+
/* @__PURE__ */ jsx(Link, { href: verifyEmailHref, className: "underline font-medium hover:text-foreground", children: "Verify email" })
|
|
176
|
+
] })
|
|
177
|
+
] }),
|
|
178
|
+
/* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: "3\u201320 characters, lowercase letters, numbers, underscores or hyphens. Claims are reviewed before going live." })
|
|
179
|
+
] })
|
|
180
|
+
] });
|
|
181
|
+
}
|
|
182
|
+
export {
|
|
183
|
+
CollectionSlugClaimSection
|
|
184
|
+
};
|
|
185
|
+
//# sourceMappingURL=collection-slug-claim.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/components/collection-slug-claim.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState, useEffect, useRef } from \"react\";\nimport { normalizeAddress } from \"@medialane/sdk\";\nimport { Gem } from \"lucide-react\";\nimport { Button } from \"./button.js\";\nimport { Badge } from \"./badge.js\";\nimport Link from \"./link.js\";\nimport { useMedialaneApp } from \"./medialane-app.js\";\nimport { SectionCard, SectionHeader } from \"./settings-section.js\";\nimport { describeError } from \"../utils/describe-error.js\";\n\nexport function CollectionSlugClaimSection({\n contract,\n profile,\n}: {\n contract: string;\n profile: { slug?: string | null } | null;\n}) {\n const { getClient, ensureSignedIn, verifyEmailHref } = useMedialaneApp();\n const [slugInput, setSlugInput] = useState(\"\");\n const [checkState, setCheckState] = useState<\"idle\" | \"checking\" | \"available\" | \"taken\" | \"invalid\">(\"idle\");\n const [checkReason, setCheckReason] = useState<string | null>(null);\n const [submitState, setSubmitState] = useState<\"idle\" | \"submitting\" | \"done\" | \"error\">(\"idle\");\n const [submitError, setSubmitError] = useState<string | null>(null);\n const [pendingSlug, setPendingSlug] = useState<string | null>(null);\n const loadedRef = useRef(false);\n\n useEffect(() => {\n if (loadedRef.current) return;\n loadedRef.current = true;\n (async () => {\n try {\n const { claims } = await getClient().api.collections.mySlugClaims();\n const match = claims.find(\n (c) => normalizeAddress(\"STARKNET\", c.contractAddress) === normalizeAddress(\"STARKNET\", contract) && c.status === \"PENDING\"\n );\n if (match) setPendingSlug(match.slug);\n } catch {}\n })();\n }, [contract, getClient]);\n\n const handleCheck = async () => {\n const slug = slugInput.toLowerCase().trim();\n if (!slug) return;\n setCheckState(\"checking\");\n setCheckReason(null);\n try {\n const result = await getClient().api.collections.slugAvailability(slug);\n setCheckState(result.available ? \"available\" : \"taken\");\n if (!result.available) setCheckReason(result.reason ?? \"That slug is not available.\");\n } catch {\n setCheckState(\"invalid\");\n setCheckReason(\"Unable to check availability. Try again.\");\n }\n };\n\n const handleSubmit = async () => {\n const slug = slugInput.toLowerCase().trim();\n if (!slug || checkState !== \"available\") return;\n setSubmitState(\"submitting\");\n setSubmitError(null);\n try {\n await ensureSignedIn?.();\n const { claim } = await getClient().api.collections.submitSlugClaim(contract, slug);\n setPendingSlug(claim.slug);\n setSubmitState(\"done\");\n } catch (err: unknown) {\n const msg = describeError(err).message;\n setSubmitError(msg);\n setSubmitState(\"error\");\n }\n };\n\n if (profile?.slug) {\n return (\n <SectionCard className=\"border-emerald-500/20 bg-emerald-500/[0.02]\">\n <SectionHeader\n icon={Gem}\n title=\"Collection URL\"\n description={`medialane.io/collection/${profile.slug}`}\n iconClass=\"text-emerald-500\"\n bgClass=\"bg-emerald-500/15\"\n badge={\n <Badge variant=\"outline\" className=\"text-2xs h-4 px-1.5 text-emerald-600 border-emerald-500/30\">\n Active\n </Badge>\n }\n />\n <div className=\"pt-1 border-t border-border\">\n <p className=\"text-xs text-muted-foreground\">\n Your collection is accessible at{\" \"}\n <span className=\"tabular-nums text-foreground\">medialane.io/collection/{profile.slug}</span>\n </p>\n </div>\n </SectionCard>\n );\n }\n\n if (pendingSlug) {\n return (\n <SectionCard className=\"border-primary/20 bg-primary/[0.02]\">\n <SectionHeader\n icon={Gem}\n title=\"Claim your collection URL\"\n description={`medialane.io/collection/${pendingSlug}`}\n iconClass=\"text-primary\"\n bgClass=\"bg-primary/15\"\n badge={\n <Badge variant=\"outline\" className=\"text-2xs h-4 px-1.5 text-amber-600 border-amber-500/30\">\n Pending review\n </Badge>\n }\n />\n <div className=\"pt-1 border-t border-border\">\n <p className=\"text-xs text-muted-foreground\">\n Your claim for{\" \"}\n <span className=\"tabular-nums text-foreground\">medialane.io/collection/{pendingSlug}</span> is under\n review. You'll be notified once it's approved.\n </p>\n </div>\n </SectionCard>\n );\n }\n\n return (\n <SectionCard className=\"border-primary/20 bg-primary/[0.02]\">\n <SectionHeader\n icon={Gem}\n title=\"Claim your collection URL\"\n description=\"Reserve a unique URL — medialane.io/collection/your-name\"\n iconClass=\"text-primary\"\n bgClass=\"bg-primary/15\"\n />\n <div className=\"pt-3 border-t border-border space-y-3\">\n <div className=\"flex items-center gap-2\">\n <div className=\"flex-1 flex items-center rounded-lg border border-border bg-muted/40 px-3 py-2\">\n <span className=\"text-xs text-muted-foreground whitespace-nowrap shrink-0\">\n medialane.io/collection/\n </span>\n <input\n type=\"text\"\n className=\"flex-1 bg-transparent text-xs text-foreground outline-none placeholder:text-muted-foreground/50 min-w-0\"\n placeholder=\"your-name\"\n value={slugInput}\n onChange={(e) => {\n setSlugInput(e.target.value.toLowerCase().replace(/[^a-z0-9_-]/g, \"\"));\n setCheckState(\"idle\");\n }}\n onKeyDown={(e) => { if (e.key === \"Enter\") handleCheck(); }}\n maxLength={20}\n />\n </div>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={handleCheck}\n disabled={!slugInput.trim() || checkState === \"checking\"}\n className=\"shrink-0\"\n >\n {checkState === \"checking\" ? \"Checking…\" : \"Check\"}\n </Button>\n </div>\n\n {checkState === \"available\" && (\n <div className=\"flex items-center justify-between gap-3\">\n <p className=\"text-xs text-emerald-600 font-medium truncate\">\n ✓ Available — <span className=\"tabular-nums\">medialane.io/collection/{slugInput}</span>\n </p>\n <Button size=\"sm\" onClick={handleSubmit} disabled={submitState === \"submitting\"} className=\"shrink-0\">\n {submitState === \"submitting\" ? \"Claiming…\" : \"Claim this URL\"}\n </Button>\n </div>\n )}\n\n {(checkState === \"taken\" || checkState === \"invalid\") && (\n <p className=\"text-xs text-destructive\">{checkReason ?? \"That slug is not available.\"}</p>\n )}\n\n {submitState === \"error\" && (\n <p className=\"text-xs text-destructive\">\n {submitError}\n {verifyEmailHref && submitError === \"Verify your email to claim a collection.\" && (\n <>\n {\" \"}\n <Link href={verifyEmailHref} className=\"underline font-medium hover:text-foreground\">\n Verify email\n </Link>\n </>\n )}\n </p>\n )}\n\n <p className=\"text-xs text-muted-foreground\">\n 3–20 characters, lowercase letters, numbers, underscores or hyphens. Claims are reviewed before\n going live.\n </p>\n </div>\n </SectionCard>\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -16,6 +16,7 @@ declare const editionMintSchema: zod.ZodObject<{
|
|
|
16
16
|
royalty: zod.ZodNumber;
|
|
17
17
|
}, "strip", zod.ZodTypeAny, {
|
|
18
18
|
name: string;
|
|
19
|
+
value: string;
|
|
19
20
|
ipType: "Audio" | "Video" | "Art" | "Photography" | "NFT" | "Software" | "RWA" | "Patents" | "Posts" | "Publications" | "Documents" | "Custom";
|
|
20
21
|
licenseType: string;
|
|
21
22
|
commercialUse: "Yes" | "No";
|
|
@@ -24,12 +25,12 @@ declare const editionMintSchema: zod.ZodObject<{
|
|
|
24
25
|
geographicScope: string;
|
|
25
26
|
aiPolicy: "Allowed" | "Not Allowed" | "Training Only";
|
|
26
27
|
royalty: number;
|
|
27
|
-
value: string;
|
|
28
28
|
recipient: string;
|
|
29
29
|
description?: string | undefined;
|
|
30
30
|
external_url?: string | undefined;
|
|
31
31
|
}, {
|
|
32
32
|
name: string;
|
|
33
|
+
value: string;
|
|
33
34
|
ipType: "Audio" | "Video" | "Art" | "Photography" | "NFT" | "Software" | "RWA" | "Patents" | "Posts" | "Publications" | "Documents" | "Custom";
|
|
34
35
|
licenseType: string;
|
|
35
36
|
commercialUse: "Yes" | "No";
|
|
@@ -38,7 +39,6 @@ declare const editionMintSchema: zod.ZodObject<{
|
|
|
38
39
|
geographicScope: string;
|
|
39
40
|
aiPolicy: "Allowed" | "Not Allowed" | "Training Only";
|
|
40
41
|
royalty: number;
|
|
41
|
-
value: string;
|
|
42
42
|
recipient: string;
|
|
43
43
|
description?: string | undefined;
|
|
44
44
|
external_url?: string | undefined;
|
|
@@ -16,6 +16,7 @@ declare const editionMintSchema: zod.ZodObject<{
|
|
|
16
16
|
royalty: zod.ZodNumber;
|
|
17
17
|
}, "strip", zod.ZodTypeAny, {
|
|
18
18
|
name: string;
|
|
19
|
+
value: string;
|
|
19
20
|
ipType: "Audio" | "Video" | "Art" | "Photography" | "NFT" | "Software" | "RWA" | "Patents" | "Posts" | "Publications" | "Documents" | "Custom";
|
|
20
21
|
licenseType: string;
|
|
21
22
|
commercialUse: "Yes" | "No";
|
|
@@ -24,12 +25,12 @@ declare const editionMintSchema: zod.ZodObject<{
|
|
|
24
25
|
geographicScope: string;
|
|
25
26
|
aiPolicy: "Allowed" | "Not Allowed" | "Training Only";
|
|
26
27
|
royalty: number;
|
|
27
|
-
value: string;
|
|
28
28
|
recipient: string;
|
|
29
29
|
description?: string | undefined;
|
|
30
30
|
external_url?: string | undefined;
|
|
31
31
|
}, {
|
|
32
32
|
name: string;
|
|
33
|
+
value: string;
|
|
33
34
|
ipType: "Audio" | "Video" | "Art" | "Photography" | "NFT" | "Software" | "RWA" | "Patents" | "Posts" | "Publications" | "Documents" | "Custom";
|
|
34
35
|
licenseType: string;
|
|
35
36
|
commercialUse: "Yes" | "No";
|
|
@@ -38,7 +39,6 @@ declare const editionMintSchema: zod.ZodObject<{
|
|
|
38
39
|
geographicScope: string;
|
|
39
40
|
aiPolicy: "Allowed" | "Not Allowed" | "Training Only";
|
|
40
41
|
royalty: number;
|
|
41
|
-
value: string;
|
|
42
42
|
recipient: string;
|
|
43
43
|
description?: string | undefined;
|
|
44
44
|
external_url?: string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/medialane-app.tsx"],"sourcesContent":["\"use client\";\n\nimport { createContext, useContext, type ComponentType, type ElementType, type ReactNode } from \"react\";\nimport type { MedialaneClient } from \"@medialane/sdk/starknet\";\nimport type { FastMintSigner } from \"./fast-mint/types.js\";\nimport type { ApiToken } from \"@medialane/sdk\";\nimport type { ImageResolver } from \"../utils/ipfs.js\";\n\nexport type AssetRef = Pick<ApiToken, \"chain\" | \"contractAddress\" | \"tokenId\">;\n\nexport interface CompanionApp {\n title: string;\n description: string;\n icon: ElementType;\n origin: string;\n}\n\nexport type ReportTarget =\n | { type: \"TOKEN\"; contract: string; tokenId: string; name?: string }\n | { type: \"COLLECTION\"; contract: string; name?: string }\n | { type: \"CREATOR\"; address: string; name?: string }\n | { type: \"COMMENT\"; commentId: string };\n\nexport type ReportDialogSlot = ComponentType<{ open: boolean; onOpenChange: (open: boolean) => void; target: ReportTarget }>;\n\nexport interface MedialaneApp {\n getClient: () => MedialaneClient;\n getSigner: () => Promise<FastMintSigner> | FastMintSigner;\n walletAddress: string | null;\n walletLoading?: boolean;\n onRequireWallet: () => void;\n releaseSigner?: () => void;\n ensureSignedIn?: () => Promise<void>;\n connectLabel?: string;\n companion?: CompanionApp;\n ReportDialog?: ReportDialogSlot;\n resolveImage?: ImageResolver;\n}\n\nexport const MedialaneAppContext = createContext<MedialaneApp | null>(null);\n\nexport function MedialaneAppProvider({ value, children }: { value: MedialaneApp; children: ReactNode }) {\n return <MedialaneAppContext.Provider value={value}>{children}</MedialaneAppContext.Provider>;\n}\n\nexport function useMedialaneApp(): MedialaneApp {\n const app = useContext(MedialaneAppContext);\n if (!app) throw new Error(\"MedialaneAppProvider missing\");\n return app;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;
|
|
1
|
+
{"version":3,"sources":["../../src/components/medialane-app.tsx"],"sourcesContent":["\"use client\";\n\nimport { createContext, useContext, type ComponentType, type ElementType, type ReactNode } from \"react\";\nimport type { MedialaneClient } from \"@medialane/sdk/starknet\";\nimport type { FastMintSigner } from \"./fast-mint/types.js\";\nimport type { ApiToken } from \"@medialane/sdk\";\nimport type { ImageResolver } from \"../utils/ipfs.js\";\n\nexport type AssetRef = Pick<ApiToken, \"chain\" | \"contractAddress\" | \"tokenId\">;\n\nexport interface CompanionApp {\n title: string;\n description: string;\n icon: ElementType;\n origin: string;\n}\n\nexport type ReportTarget =\n | { type: \"TOKEN\"; contract: string; tokenId: string; name?: string }\n | { type: \"COLLECTION\"; contract: string; name?: string }\n | { type: \"CREATOR\"; address: string; name?: string }\n | { type: \"COMMENT\"; commentId: string };\n\nexport type ReportDialogSlot = ComponentType<{ open: boolean; onOpenChange: (open: boolean) => void; target: ReportTarget }>;\n\nexport interface MedialaneApp {\n getClient: () => MedialaneClient;\n getSigner: () => Promise<FastMintSigner> | FastMintSigner;\n walletAddress: string | null;\n walletLoading?: boolean;\n onRequireWallet: () => void;\n releaseSigner?: () => void;\n ensureSignedIn?: () => Promise<void>;\n connectLabel?: string;\n verifyEmailHref?: string;\n companion?: CompanionApp;\n ReportDialog?: ReportDialogSlot;\n resolveImage?: ImageResolver;\n}\n\nexport const MedialaneAppContext = createContext<MedialaneApp | null>(null);\n\nexport function MedialaneAppProvider({ value, children }: { value: MedialaneApp; children: ReactNode }) {\n return <MedialaneAppContext.Provider value={value}>{children}</MedialaneAppContext.Provider>;\n}\n\nexport function useMedialaneApp(): MedialaneApp {\n const app = useContext(MedialaneAppContext);\n if (!app) throw new Error(\"MedialaneAppProvider missing\");\n return app;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA2CS;AAzCT,mBAAgG;AAsCzF,MAAM,0BAAsB,4BAAmC,IAAI;AAEnE,SAAS,qBAAqB,EAAE,OAAO,SAAS,GAAiD;AACtG,SAAO,4CAAC,oBAAoB,UAApB,EAA6B,OAAe,UAAS;AAC/D;AAEO,SAAS,kBAAgC;AAC9C,QAAM,UAAM,yBAAW,mBAAmB;AAC1C,MAAI,CAAC,IAAK,OAAM,IAAI,MAAM,8BAA8B;AACxD,SAAO;AACT;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/medialane-app.tsx"],"sourcesContent":["\"use client\";\n\nimport { createContext, useContext, type ComponentType, type ElementType, type ReactNode } from \"react\";\nimport type { MedialaneClient } from \"@medialane/sdk/starknet\";\nimport type { FastMintSigner } from \"./fast-mint/types.js\";\nimport type { ApiToken } from \"@medialane/sdk\";\nimport type { ImageResolver } from \"../utils/ipfs.js\";\n\nexport type AssetRef = Pick<ApiToken, \"chain\" | \"contractAddress\" | \"tokenId\">;\n\nexport interface CompanionApp {\n title: string;\n description: string;\n icon: ElementType;\n origin: string;\n}\n\nexport type ReportTarget =\n | { type: \"TOKEN\"; contract: string; tokenId: string; name?: string }\n | { type: \"COLLECTION\"; contract: string; name?: string }\n | { type: \"CREATOR\"; address: string; name?: string }\n | { type: \"COMMENT\"; commentId: string };\n\nexport type ReportDialogSlot = ComponentType<{ open: boolean; onOpenChange: (open: boolean) => void; target: ReportTarget }>;\n\nexport interface MedialaneApp {\n getClient: () => MedialaneClient;\n getSigner: () => Promise<FastMintSigner> | FastMintSigner;\n walletAddress: string | null;\n walletLoading?: boolean;\n onRequireWallet: () => void;\n releaseSigner?: () => void;\n ensureSignedIn?: () => Promise<void>;\n connectLabel?: string;\n companion?: CompanionApp;\n ReportDialog?: ReportDialogSlot;\n resolveImage?: ImageResolver;\n}\n\nexport const MedialaneAppContext = createContext<MedialaneApp | null>(null);\n\nexport function MedialaneAppProvider({ value, children }: { value: MedialaneApp; children: ReactNode }) {\n return <MedialaneAppContext.Provider value={value}>{children}</MedialaneAppContext.Provider>;\n}\n\nexport function useMedialaneApp(): MedialaneApp {\n const app = useContext(MedialaneAppContext);\n if (!app) throw new Error(\"MedialaneAppProvider missing\");\n return app;\n}\n"],"mappings":";
|
|
1
|
+
{"version":3,"sources":["../../src/components/medialane-app.tsx"],"sourcesContent":["\"use client\";\n\nimport { createContext, useContext, type ComponentType, type ElementType, type ReactNode } from \"react\";\nimport type { MedialaneClient } from \"@medialane/sdk/starknet\";\nimport type { FastMintSigner } from \"./fast-mint/types.js\";\nimport type { ApiToken } from \"@medialane/sdk\";\nimport type { ImageResolver } from \"../utils/ipfs.js\";\n\nexport type AssetRef = Pick<ApiToken, \"chain\" | \"contractAddress\" | \"tokenId\">;\n\nexport interface CompanionApp {\n title: string;\n description: string;\n icon: ElementType;\n origin: string;\n}\n\nexport type ReportTarget =\n | { type: \"TOKEN\"; contract: string; tokenId: string; name?: string }\n | { type: \"COLLECTION\"; contract: string; name?: string }\n | { type: \"CREATOR\"; address: string; name?: string }\n | { type: \"COMMENT\"; commentId: string };\n\nexport type ReportDialogSlot = ComponentType<{ open: boolean; onOpenChange: (open: boolean) => void; target: ReportTarget }>;\n\nexport interface MedialaneApp {\n getClient: () => MedialaneClient;\n getSigner: () => Promise<FastMintSigner> | FastMintSigner;\n walletAddress: string | null;\n walletLoading?: boolean;\n onRequireWallet: () => void;\n releaseSigner?: () => void;\n ensureSignedIn?: () => Promise<void>;\n connectLabel?: string;\n verifyEmailHref?: string;\n companion?: CompanionApp;\n ReportDialog?: ReportDialogSlot;\n resolveImage?: ImageResolver;\n}\n\nexport const MedialaneAppContext = createContext<MedialaneApp | null>(null);\n\nexport function MedialaneAppProvider({ value, children }: { value: MedialaneApp; children: ReactNode }) {\n return <MedialaneAppContext.Provider value={value}>{children}</MedialaneAppContext.Provider>;\n}\n\nexport function useMedialaneApp(): MedialaneApp {\n const app = useContext(MedialaneAppContext);\n if (!app) throw new Error(\"MedialaneAppProvider missing\");\n return app;\n}\n"],"mappings":";AA2CS;AAzCT,SAAS,eAAe,kBAAwE;AAsCzF,MAAM,sBAAsB,cAAmC,IAAI;AAEnE,SAAS,qBAAqB,EAAE,OAAO,SAAS,GAAiD;AACtG,SAAO,oBAAC,oBAAoB,UAApB,EAA6B,OAAe,UAAS;AAC/D;AAEO,SAAS,kBAAgC;AAC9C,QAAM,MAAM,WAAW,mBAAmB;AAC1C,MAAI,CAAC,IAAK,OAAM,IAAI,MAAM,8BAA8B;AACxD,SAAO;AACT;","names":[]}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
"use client";
|
|
3
|
+
var __create = Object.create;
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __export = (target, all) => {
|
|
10
|
+
for (var name in all)
|
|
11
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
12
|
+
};
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from))
|
|
16
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
17
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
18
|
+
}
|
|
19
|
+
return to;
|
|
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
|
+
));
|
|
29
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
30
|
+
var mint_landing_exports = {};
|
|
31
|
+
__export(mint_landing_exports, {
|
|
32
|
+
MintLanding: () => MintLanding
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(mint_landing_exports);
|
|
35
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
36
|
+
var import_react = require("react");
|
|
37
|
+
var import_lucide_react = require("lucide-react");
|
|
38
|
+
var import_image = __toESM(require("./image.js"), 1);
|
|
39
|
+
var import_link = __toESM(require("./link.js"), 1);
|
|
40
|
+
var import_brand_logo = require("./brand-logo.js");
|
|
41
|
+
const DOCS = "https://docs.medialane.io";
|
|
42
|
+
const FUND_STYLES = [
|
|
43
|
+
{ icon: import_lucide_react.FileCheck, color: "text-blue-400", bg: "bg-blue-500/10" },
|
|
44
|
+
{ icon: import_lucide_react.Coins, color: "text-yellow-500", bg: "bg-yellow-500/10" },
|
|
45
|
+
{ icon: import_lucide_react.Users, color: "text-purple-400", bg: "bg-purple-500/10" }
|
|
46
|
+
];
|
|
47
|
+
function EventCard({ image }) {
|
|
48
|
+
const [errored, setErrored] = (0, import_react.useState)(false);
|
|
49
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "relative rounded-3xl overflow-hidden border border-border/40 shadow-2xl shadow-black/20 aspect-square w-full", children: errored ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "w-full h-full bg-gradient-to-br from-yellow-500/10 via-orange-500/10 to-purple-500/10 flex flex-col items-center justify-center gap-3", children: [
|
|
50
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-16 w-16 rounded-2xl bg-primary/10 flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ImageIcon, { className: "h-8 w-8 text-primary/40" }) }),
|
|
51
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-sm text-muted-foreground font-medium", children: image.fallback })
|
|
52
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
53
|
+
import_image.default,
|
|
54
|
+
{
|
|
55
|
+
src: image.src,
|
|
56
|
+
alt: image.alt,
|
|
57
|
+
fill: true,
|
|
58
|
+
sizes: "(min-width: 1024px) 50vw, 100vw",
|
|
59
|
+
className: "object-cover",
|
|
60
|
+
onError: () => setErrored(true)
|
|
61
|
+
}
|
|
62
|
+
) });
|
|
63
|
+
}
|
|
64
|
+
const DocLink = ({ path, className, children }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("a", { href: `${DOCS}${path}`, target: "_blank", rel: "noopener noreferrer", className, children });
|
|
65
|
+
function MintLanding({ copy, mint }) {
|
|
66
|
+
const { how, phases, eligibility, disclaimer, footer } = copy;
|
|
67
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "min-h-screen flex flex-col bg-background", children: [
|
|
68
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("header", { className: "px-6 py-4 flex items-center border-b border-border/30", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_link.default, { href: "/", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_brand_logo.MedialaneLogoFull, {}) }) }),
|
|
69
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "flex-1 w-full", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "max-w-5xl mx-auto px-5 sm:px-8", children: [
|
|
70
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("section", { className: "py-10 lg:py-16", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-10 lg:gap-16 items-start", children: [
|
|
71
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "space-y-5", children: [
|
|
72
|
+
copy.badge && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "inline-flex items-center gap-2 rounded-full border border-yellow-500/30 bg-yellow-500/5 px-3 py-1", children: [
|
|
73
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Sparkles, { className: "h-3.5 w-3.5 text-yellow-500" }),
|
|
74
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-xs font-semibold text-yellow-600 dark:text-yellow-400", children: copy.badge })
|
|
75
|
+
] }),
|
|
76
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("h1", { className: "text-4xl sm:text-5xl lg:text-6xl font-semibold tracking-tight leading-[1.05]", children: [
|
|
77
|
+
copy.headline.lead,
|
|
78
|
+
" ",
|
|
79
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "bg-gradient-to-r from-yellow-400 to-orange-500 bg-clip-text text-transparent", children: copy.headline.highlight })
|
|
80
|
+
] }),
|
|
81
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "flex flex-wrap items-center gap-x-4 gap-y-1.5", children: copy.chips.map((t) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center gap-1.5 text-xs text-muted-foreground/80", children: [
|
|
82
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.CheckCircle2, { className: "h-3 w-3 text-emerald-500/70" }),
|
|
83
|
+
t
|
|
84
|
+
] }, t)) }),
|
|
85
|
+
mint,
|
|
86
|
+
copy.intro && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-sm text-muted-foreground leading-relaxed", children: copy.intro })
|
|
87
|
+
] }),
|
|
88
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "lg:sticky lg:top-24", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(EventCard, { image: copy.image }) })
|
|
89
|
+
] }) }),
|
|
90
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("details", { className: "group border-t border-border/30", children: [
|
|
91
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("summary", { className: "flex items-center justify-center gap-2 py-6 cursor-pointer list-none text-sm font-medium text-muted-foreground hover:text-foreground transition-colors [&::-webkit-details-marker]:hidden", children: [
|
|
92
|
+
copy.learnMore,
|
|
93
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ChevronDown, { className: "h-4 w-4 transition-transform group-open:rotate-180" })
|
|
94
|
+
] }),
|
|
95
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "pb-8 space-y-0", children: [
|
|
96
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("section", { className: "py-8 border-t border-border/30 space-y-6", children: [
|
|
97
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", { className: "text-2xl sm:text-3xl font-black", children: copy.fund.title }),
|
|
98
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "grid grid-cols-1 sm:grid-cols-3 gap-4", children: copy.fund.cards.map(({ title, body }, i) => {
|
|
99
|
+
const { icon: Icon, color, bg } = FUND_STYLES[i];
|
|
100
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex flex-col gap-4 p-5 rounded-2xl border border-border/40 bg-card/30", children: [
|
|
101
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: `h-11 w-11 rounded-xl ${bg} flex items-center justify-center shrink-0`, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Icon, { className: `h-5 w-5 ${color}` }) }),
|
|
102
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
|
|
103
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "font-bold", children: title }),
|
|
104
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-sm text-muted-foreground mt-1 leading-relaxed", children: body })
|
|
105
|
+
] })
|
|
106
|
+
] }, title);
|
|
107
|
+
}) })
|
|
108
|
+
] }),
|
|
109
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("section", { className: "py-8 border-t border-border/30 space-y-6", children: [
|
|
110
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "max-w-2xl", children: [
|
|
111
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-xs font-semibold uppercase tracking-widest text-muted-foreground mb-1", children: how.eyebrow }),
|
|
112
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", { className: "text-2xl sm:text-3xl font-black", children: how.title })
|
|
113
|
+
] }),
|
|
114
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "rounded-2xl border-2 border-emerald-500/30 bg-emerald-500/5 p-6", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-start gap-4", children: [
|
|
115
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-12 w-12 rounded-xl bg-emerald-500/15 flex items-center justify-center shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.UserCheck, { className: "h-6 w-6 text-emerald-500" }) }),
|
|
116
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex-1", children: [
|
|
117
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center gap-2 flex-wrap", children: [
|
|
118
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "font-black text-lg", children: how.account.title }),
|
|
119
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-xs font-bold bg-emerald-500/15 text-emerald-600 dark:text-emerald-400 px-2.5 py-0.5 rounded-full", children: how.account.tag })
|
|
120
|
+
] }),
|
|
121
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-sm text-muted-foreground mt-1 leading-relaxed", children: how.account.body })
|
|
122
|
+
] })
|
|
123
|
+
] }) }),
|
|
124
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-4", children: [
|
|
125
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "rounded-2xl border border-border/40 bg-card/30 p-5 space-y-3", children: [
|
|
126
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center justify-between gap-3", children: [
|
|
127
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-10 w-10 rounded-xl bg-purple-500/10 flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.PenLine, { className: "h-5 w-5 text-purple-400" }) }),
|
|
128
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-xs font-semibold text-purple-400 bg-purple-500/10 px-2.5 py-1 rounded-full", children: how.create.tag })
|
|
129
|
+
] }),
|
|
130
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
|
|
131
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "font-bold", children: how.create.title }),
|
|
132
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-sm text-muted-foreground mt-1 leading-relaxed", children: how.create.body })
|
|
133
|
+
] })
|
|
134
|
+
] }),
|
|
135
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "rounded-2xl border border-border/40 bg-card/30 p-5 space-y-3", children: [
|
|
136
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center justify-between gap-3", children: [
|
|
137
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-10 w-10 rounded-xl bg-orange-500/10 flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ShoppingCart, { className: "h-5 w-5 text-orange-400" }) }),
|
|
138
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-xs font-semibold text-orange-400 bg-orange-500/10 px-2.5 py-1 rounded-full", children: how.trade.tag })
|
|
139
|
+
] }),
|
|
140
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
|
|
141
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "font-bold", children: how.trade.title }),
|
|
142
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-sm text-muted-foreground mt-1 leading-relaxed", children: how.trade.body })
|
|
143
|
+
] })
|
|
144
|
+
] })
|
|
145
|
+
] })
|
|
146
|
+
] }),
|
|
147
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("section", { className: "py-8 border-t border-border/30 space-y-6", children: [
|
|
148
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "max-w-2xl", children: [
|
|
149
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-xs font-semibold uppercase tracking-widest text-muted-foreground mb-1", children: phases.eyebrow }),
|
|
150
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", { className: "text-2xl sm:text-3xl font-black", children: phases.title })
|
|
151
|
+
] }),
|
|
152
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-4", children: [
|
|
153
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "rounded-2xl border border-blue-500/30 bg-blue-500/5 p-5 space-y-3", children: [
|
|
154
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center justify-between gap-3", children: [
|
|
155
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "font-bold text-lg", children: phases.first.title }),
|
|
156
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-xs font-semibold bg-blue-500/10 text-blue-400 px-2.5 py-1 rounded-full", children: phases.first.tag })
|
|
157
|
+
] }),
|
|
158
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-sm text-muted-foreground leading-relaxed", children: phases.first.body })
|
|
159
|
+
] }),
|
|
160
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "rounded-2xl border border-purple-500/30 bg-purple-500/5 p-5 space-y-3", children: [
|
|
161
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center justify-between gap-3", children: [
|
|
162
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "font-bold text-lg", children: phases.second.title }),
|
|
163
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-xs font-semibold bg-purple-500/10 text-purple-400 px-2.5 py-1 rounded-full", children: phases.second.tag })
|
|
164
|
+
] }),
|
|
165
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-sm text-muted-foreground leading-relaxed", children: phases.second.body })
|
|
166
|
+
] })
|
|
167
|
+
] }),
|
|
168
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "rounded-2xl border border-border/40 bg-muted/10 p-4 flex items-start gap-3", children: [
|
|
169
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Info, { className: "h-4 w-4 text-muted-foreground shrink-0 mt-0.5" }),
|
|
170
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-sm text-muted-foreground leading-relaxed", children: phases.note })
|
|
171
|
+
] })
|
|
172
|
+
] }),
|
|
173
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("section", { className: "py-8 border-t border-border/30", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-10", children: [
|
|
174
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "space-y-4", children: [
|
|
175
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
|
|
176
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-xs font-semibold uppercase tracking-widest text-muted-foreground mb-1", children: eligibility.eyebrow }),
|
|
177
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", { className: "text-2xl font-black", children: eligibility.title })
|
|
178
|
+
] }),
|
|
179
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "space-y-2.5 text-sm", children: eligibility.items.map(({ ok, text }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-start gap-3", children: [
|
|
180
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: `h-5 w-5 rounded-full flex items-center justify-center shrink-0 mt-0.5 ${ok ? "bg-emerald-500/10" : "bg-destructive/10"}`, children: ok ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.CheckCircle2, { className: "h-3 w-3 text-emerald-500" }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.XCircle, { className: "h-3 w-3 text-destructive" }) }),
|
|
181
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-muted-foreground leading-relaxed", children: text })
|
|
182
|
+
] }, text)) })
|
|
183
|
+
] }),
|
|
184
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "space-y-4", children: [
|
|
185
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
186
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Shield, { className: "h-4 w-4 text-muted-foreground" }),
|
|
187
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", { className: "text-2xl font-black", children: disclaimer.title })
|
|
188
|
+
] }),
|
|
189
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "space-y-3 text-sm text-muted-foreground leading-relaxed", children: [
|
|
190
|
+
disclaimer.paragraphs.map((p) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { children: p }, p)),
|
|
191
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", { children: [
|
|
192
|
+
disclaimer.agree.lead,
|
|
193
|
+
" ",
|
|
194
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(DocLink, { path: "/guidelines/campaign-terms", className: "underline underline-offset-2 hover:text-foreground transition-colors", children: disclaimer.agree.campaignTerms }),
|
|
195
|
+
" ",
|
|
196
|
+
disclaimer.agree.and,
|
|
197
|
+
" ",
|
|
198
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(DocLink, { path: "/guidelines/terms", className: "underline underline-offset-2 hover:text-foreground transition-colors", children: disclaimer.agree.terms }),
|
|
199
|
+
"."
|
|
200
|
+
] })
|
|
201
|
+
] })
|
|
202
|
+
] })
|
|
203
|
+
] }) })
|
|
204
|
+
] })
|
|
205
|
+
] }),
|
|
206
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "pb-12" })
|
|
207
|
+
] }) }),
|
|
208
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("footer", { className: "border-t border-border/40", children: [
|
|
209
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", { className: "text-2xs text-center text-muted-foreground/50 px-5 pt-4", children: [
|
|
210
|
+
footer.line,
|
|
211
|
+
" ",
|
|
212
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(DocLink, { path: "/guidelines/campaign-terms", className: "underline underline-offset-2 hover:text-muted-foreground/80 transition-colors", children: footer.campaignTerms })
|
|
213
|
+
] }),
|
|
214
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "px-5 py-4 flex items-center justify-center gap-5 text-xs text-muted-foreground flex-wrap", children: [
|
|
215
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(DocLink, { path: "/guidelines/terms", className: "hover:text-foreground transition-colors", children: footer.links.terms }),
|
|
216
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(DocLink, { path: "/guidelines/privacy", className: "hover:text-foreground transition-colors", children: footer.links.privacy }),
|
|
217
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(DocLink, { path: "/guidelines/campaign-terms", className: "hover:text-foreground transition-colors", children: footer.links.campaign }),
|
|
218
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(DocLink, { path: "/about", className: "hover:text-foreground transition-colors", children: footer.links.about }),
|
|
219
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { children: [
|
|
220
|
+
"\xA9 ",
|
|
221
|
+
(/* @__PURE__ */ new Date()).getFullYear(),
|
|
222
|
+
" Medialane"
|
|
223
|
+
] })
|
|
224
|
+
] })
|
|
225
|
+
] })
|
|
226
|
+
] });
|
|
227
|
+
}
|
|
228
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
229
|
+
0 && (module.exports = {
|
|
230
|
+
MintLanding
|
|
231
|
+
});
|
|
232
|
+
//# sourceMappingURL=mint-landing.cjs.map
|