@medialane/ui 0.65.0 → 0.66.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/launchpad-filter-bar.cjs +11 -3
- package/dist/components/launchpad-filter-bar.cjs.map +1 -1
- package/dist/components/launchpad-filter-bar.d.cts +4 -4
- package/dist/components/launchpad-filter-bar.d.ts +4 -4
- package/dist/components/launchpad-filter-bar.js +13 -3
- package/dist/components/launchpad-filter-bar.js.map +1 -1
- package/dist/components/launchpad-services.cjs +64 -147
- package/dist/components/launchpad-services.cjs.map +1 -1
- package/dist/components/launchpad-services.d.cts +17 -12
- package/dist/components/launchpad-services.d.ts +17 -12
- package/dist/components/launchpad-services.js +65 -149
- package/dist/components/launchpad-services.js.map +1 -1
- package/dist/components/launchpad-strip.cjs +5 -5
- package/dist/components/launchpad-strip.cjs.map +1 -1
- package/dist/components/launchpad-strip.js +5 -5
- package/dist/components/launchpad-strip.js.map +1 -1
- package/dist/data/launchpad-services.cjs +50 -89
- package/dist/data/launchpad-services.cjs.map +1 -1
- package/dist/data/launchpad-services.d.cts +2 -2
- package/dist/data/launchpad-services.d.ts +2 -2
- package/dist/data/launchpad-services.js +50 -90
- package/dist/data/launchpad-services.js.map +1 -1
- package/package.json +1 -1
|
@@ -4,7 +4,6 @@ import {
|
|
|
4
4
|
GitBranch,
|
|
5
5
|
Award,
|
|
6
6
|
Package,
|
|
7
|
-
PlusCircle,
|
|
8
7
|
Ticket,
|
|
9
8
|
Users,
|
|
10
9
|
Handshake,
|
|
@@ -18,19 +17,19 @@ import { hasCapability } from "@medialane/sdk";
|
|
|
18
17
|
const TICKETS_TRANSFERABLE_FEATURE = hasCapability("ip-tickets", "transfer") ? "Freely transferable" : "Stays with the original holder";
|
|
19
18
|
const LAUNCHPAD_SERVICE_GROUPS = [
|
|
20
19
|
{
|
|
21
|
-
key: "
|
|
22
|
-
title: "
|
|
23
|
-
tagline: "
|
|
20
|
+
key: "nfts",
|
|
21
|
+
title: "NFTs",
|
|
22
|
+
tagline: "Singular works, your own collections, timed drops, and remixes."
|
|
24
23
|
},
|
|
25
24
|
{
|
|
26
25
|
key: "limited-editions",
|
|
27
26
|
title: "Limited Editions",
|
|
28
|
-
tagline: "
|
|
27
|
+
tagline: "Numbered copies of your work."
|
|
29
28
|
},
|
|
30
29
|
{
|
|
31
30
|
key: "coins",
|
|
32
31
|
title: "Coins",
|
|
33
|
-
tagline: "Launch your own coin
|
|
32
|
+
tagline: "Launch your own coin, or bring one you already made."
|
|
34
33
|
},
|
|
35
34
|
{
|
|
36
35
|
key: "community",
|
|
@@ -40,7 +39,7 @@ const LAUNCHPAD_SERVICE_GROUPS = [
|
|
|
40
39
|
{
|
|
41
40
|
key: "claims",
|
|
42
41
|
title: "Claims",
|
|
43
|
-
tagline: "
|
|
42
|
+
tagline: "Reserve your username, your collection's name, or bring in a collection you already made."
|
|
44
43
|
},
|
|
45
44
|
{
|
|
46
45
|
key: "coming-soon",
|
|
@@ -51,14 +50,13 @@ const LAUNCHPAD_SERVICE_GROUPS = [
|
|
|
51
50
|
const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
52
51
|
// ── Create ────────────────────────────────────────────────────────────────
|
|
53
52
|
{
|
|
54
|
-
key: "
|
|
55
|
-
cta: "
|
|
56
|
-
blurb: "
|
|
57
|
-
title: "
|
|
58
|
-
subtitle: "
|
|
59
|
-
description: "
|
|
60
|
-
|
|
61
|
-
features: ["Free to publish", "Your file, stored forever", "You set the license terms"],
|
|
53
|
+
key: "nfts",
|
|
54
|
+
cta: "Create",
|
|
55
|
+
blurb: "Publish one-of-a-kind works and keep them in collections of your own.",
|
|
56
|
+
title: "NFTs",
|
|
57
|
+
subtitle: "Singular works and your own collections",
|
|
58
|
+
description: "Publish any photo, video, audio, or document as a one-of-a-kind work inside a collection you own. Licensing, provenance, and ownership live on-chain.",
|
|
59
|
+
features: ["One-of-a-kind works", "Your own branded collections", "You set the license terms"],
|
|
62
60
|
example: "A song, a photo, an ebook, a short film",
|
|
63
61
|
icon: ImagePlus,
|
|
64
62
|
gradient: "from-blue-500/10 via-sky-400/4 to-transparent",
|
|
@@ -68,60 +66,22 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
68
66
|
badge: "Create",
|
|
69
67
|
status: "live",
|
|
70
68
|
category: "create",
|
|
71
|
-
group: "
|
|
72
|
-
},
|
|
73
|
-
{
|
|
74
|
-
key: "create-collection",
|
|
75
|
-
cta: "Create",
|
|
76
|
-
blurb: "Give your works a home of their own, with its own page and name.",
|
|
77
|
-
title: "Create NFT Collection",
|
|
78
|
-
subtitle: "Group your NFTs under a shared identity",
|
|
79
|
-
description: "Deploy a branded ERC-721 collection with its own page and on-chain identity. Add assets to it at any time and share it with collectors.",
|
|
80
|
-
features: ["Your own branded page", "Add new work anytime", "One link to share with fans"],
|
|
81
|
-
example: "A photography portfolio, a music catalog, a comic series",
|
|
82
|
-
icon: Layers,
|
|
83
|
-
gradient: "from-violet-500/10 via-purple-400/4 to-transparent",
|
|
84
|
-
borderColor: "border-violet-500/20",
|
|
85
|
-
iconColor: "text-violet-500",
|
|
86
|
-
buttonColor: "bg-brand-purple hover:bg-brand-purple/90",
|
|
87
|
-
badge: "Create",
|
|
88
|
-
status: "live",
|
|
89
|
-
category: "create",
|
|
90
|
-
group: "single-edition"
|
|
69
|
+
group: "nfts"
|
|
91
70
|
},
|
|
92
71
|
{
|
|
93
|
-
key: "
|
|
94
|
-
cta: "
|
|
95
|
-
blurb: "
|
|
96
|
-
title: "Limited Editions
|
|
97
|
-
subtitle: "
|
|
98
|
-
description: "Create
|
|
72
|
+
key: "limited-editions",
|
|
73
|
+
cta: "Mint",
|
|
74
|
+
blurb: "Release your work in numbered copies that can be collected and traded.",
|
|
75
|
+
title: "Limited Editions",
|
|
76
|
+
subtitle: "Numbered copies from a collection you own",
|
|
77
|
+
description: "Create an editions collection and release each work in as many numbered copies as you choose.",
|
|
99
78
|
features: ["Numbered copies, set by you", "Fans collect and trade", "One home for every release"],
|
|
100
79
|
example: "50 copies of a limited print, a music EP in 100 editions",
|
|
101
80
|
icon: Layers,
|
|
102
81
|
gradient: "from-violet-500/10 via-purple-400/4 to-transparent",
|
|
103
82
|
borderColor: "border-violet-500/20",
|
|
104
83
|
iconColor: "text-violet-500",
|
|
105
|
-
buttonColor: "bg-
|
|
106
|
-
badge: "Create",
|
|
107
|
-
status: "live",
|
|
108
|
-
category: "create",
|
|
109
|
-
group: "limited-editions"
|
|
110
|
-
},
|
|
111
|
-
{
|
|
112
|
-
key: "mint-editions",
|
|
113
|
-
cta: "Mint",
|
|
114
|
-
blurb: "Release a new piece in as many copies as you choose.",
|
|
115
|
-
title: "Mint Limited Edition",
|
|
116
|
-
subtitle: "Add new editions to an existing collection",
|
|
117
|
-
description: "Pick one of your Limited Edition contracts, upload artwork, set the supply, and release to collectors \u2014 all in a few clicks.",
|
|
118
|
-
features: ["You choose how many copies", "Numbered automatically", "Ready to sell right away"],
|
|
119
|
-
example: "Drop 25 numbered prints from your art series",
|
|
120
|
-
icon: PlusCircle,
|
|
121
|
-
gradient: "from-fuchsia-500/10 via-violet-400/4 to-transparent",
|
|
122
|
-
borderColor: "border-fuchsia-500/20",
|
|
123
|
-
iconColor: "text-fuchsia-500",
|
|
124
|
-
buttonColor: "bg-fuchsia-600 hover:bg-fuchsia-700",
|
|
84
|
+
buttonColor: "bg-brand-purple hover:bg-brand-purple/90",
|
|
125
85
|
badge: "Create",
|
|
126
86
|
status: "live",
|
|
127
87
|
category: "create",
|
|
@@ -130,10 +90,10 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
130
90
|
{
|
|
131
91
|
key: "remix-asset",
|
|
132
92
|
cta: "Browse",
|
|
133
|
-
blurb: "Create from another work
|
|
93
|
+
blurb: "Create from another work. Credit and royalties are handled automatically.",
|
|
134
94
|
title: "Remix Asset",
|
|
135
95
|
subtitle: "Derivative works with on-chain attribution",
|
|
136
|
-
description: "Create a licensed derivative of
|
|
96
|
+
description: "Create a licensed derivative of another work. Attribution and provenance flow back to the original creator.",
|
|
137
97
|
features: ["Credit handled automatically", "Royalties flow to the original", "License respected at mint"],
|
|
138
98
|
example: "A remix of a song, an artwork inspired by an original",
|
|
139
99
|
icon: GitBranch,
|
|
@@ -144,17 +104,17 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
144
104
|
badge: "Create",
|
|
145
105
|
status: "live",
|
|
146
106
|
category: "create",
|
|
147
|
-
group: "
|
|
107
|
+
group: "nfts"
|
|
148
108
|
},
|
|
149
109
|
// ── Launch ────────────────────────────────────────────────────────────────
|
|
150
110
|
{
|
|
151
111
|
key: "pop-protocol",
|
|
152
112
|
cta: "Create",
|
|
153
|
-
blurb: "
|
|
113
|
+
blurb: "Badges your community claims and keeps forever.",
|
|
154
114
|
title: "POP Protocol",
|
|
155
|
-
subtitle: "Proof-of-participation for
|
|
156
|
-
description: "
|
|
157
|
-
features: ["Free for your community to claim", "Invite-list gating optional", "Branded
|
|
115
|
+
subtitle: "Proof-of-participation badges for your community",
|
|
116
|
+
description: "Give out permanent badges. Each person can claim one, and it cannot be transferred or faked.",
|
|
117
|
+
features: ["Free for your community to claim", "Invite-list gating optional", "Branded claim page to share"],
|
|
158
118
|
example: "Hackathon attendance badge, community membership, conference pass",
|
|
159
119
|
icon: Award,
|
|
160
120
|
gradient: "from-emerald-500/10 via-green-400/4 to-transparent",
|
|
@@ -162,7 +122,7 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
162
122
|
iconColor: "text-emerald-500",
|
|
163
123
|
buttonColor: "bg-green-600 hover:bg-green-700",
|
|
164
124
|
badge: "Launch",
|
|
165
|
-
browseLinkLabel: "Browse
|
|
125
|
+
browseLinkLabel: "Browse badges",
|
|
166
126
|
status: "live",
|
|
167
127
|
category: "launch",
|
|
168
128
|
group: "community"
|
|
@@ -170,10 +130,10 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
170
130
|
{
|
|
171
131
|
key: "collection-drop",
|
|
172
132
|
cta: "Launch",
|
|
173
|
-
blurb: "
|
|
133
|
+
blurb: "Release a limited run at a set price and time window.",
|
|
174
134
|
title: "Collection Drop",
|
|
175
135
|
subtitle: "Timed NFT releases with mint windows",
|
|
176
|
-
description: "
|
|
136
|
+
description: "Set a price, a supply, and a start and end time. Collectors mint directly from your drop page.",
|
|
177
137
|
features: ["You set price and supply", "Opens and closes on your schedule", "Branded drop page to share"],
|
|
178
138
|
example: "A 48-hour drop of 200 pieces at 5 USDC each",
|
|
179
139
|
icon: Package,
|
|
@@ -185,16 +145,16 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
185
145
|
browseLinkLabel: "Browse drops",
|
|
186
146
|
status: "live",
|
|
187
147
|
category: "launch",
|
|
188
|
-
group: "
|
|
148
|
+
group: "nfts"
|
|
189
149
|
},
|
|
190
150
|
{
|
|
191
151
|
key: "ip-tickets",
|
|
192
|
-
cta: "
|
|
193
|
-
blurb: "
|
|
152
|
+
cta: "Create",
|
|
153
|
+
blurb: "Create on-chain tickets your audience can hold and trade.",
|
|
194
154
|
title: "IP Tickets",
|
|
195
|
-
subtitle: "
|
|
196
|
-
description: "
|
|
197
|
-
features: ["
|
|
155
|
+
subtitle: "Verifiable tickets, held in the wallet",
|
|
156
|
+
description: "Create tickets with their own supply and validity window, then mint them to attendees. Every ticket is verifiable on-chain.",
|
|
157
|
+
features: ["Verifiable at the door", "Supply and validity you set", TICKETS_TRANSFERABLE_FEATURE],
|
|
198
158
|
icon: Ticket,
|
|
199
159
|
gradient: "from-teal-500/10 via-cyan-400/4 to-transparent",
|
|
200
160
|
borderColor: "border-teal-500/20",
|
|
@@ -211,10 +171,10 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
211
171
|
{
|
|
212
172
|
key: "ip-club",
|
|
213
173
|
cta: "Create",
|
|
214
|
-
blurb: "
|
|
174
|
+
blurb: "Membership passes for your community.",
|
|
215
175
|
title: "IP Club",
|
|
216
176
|
subtitle: "Membership passes with an on-chain card",
|
|
217
|
-
description: "Create a
|
|
177
|
+
description: "Create a club with an on-chain membership card. Set an entry fee and a member cap, and open or close joining anytime.",
|
|
218
178
|
features: ["On-chain membership card", "Optional entry fee", "Open or close joining anytime"],
|
|
219
179
|
icon: Users,
|
|
220
180
|
gradient: "from-indigo-500/10 via-violet-400/4 to-transparent",
|
|
@@ -235,8 +195,8 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
235
195
|
blurb: "Let a sponsor back your work directly, for a license in return.",
|
|
236
196
|
title: "IP Sponsorship",
|
|
237
197
|
subtitle: "Direct sponsorship offers, settled asset-to-asset",
|
|
238
|
-
description: "Create a sponsorship offer on an asset you own
|
|
239
|
-
features: ["
|
|
198
|
+
description: "Create a sponsorship offer on an asset you own. Sponsors bid, you accept, and they receive a license. Payment settles directly between sponsor and author.",
|
|
199
|
+
features: ["Direct settlement", "Owner-verified on-chain", "Open bidding or one invited sponsor"],
|
|
240
200
|
example: "Sponsor a song, an artwork, or a patent for a license",
|
|
241
201
|
icon: Handshake,
|
|
242
202
|
gradient: "from-rose-500/10 via-pink-400/4 to-transparent",
|
|
@@ -255,10 +215,10 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
255
215
|
{
|
|
256
216
|
key: "creator-coins",
|
|
257
217
|
cta: "Launch",
|
|
258
|
-
blurb: "Launch your coin in a few clicks
|
|
218
|
+
blurb: "Launch your coin in a few clicks and stay in control of it.",
|
|
259
219
|
title: "Creator Coin",
|
|
260
220
|
subtitle: "Your own coin, your liquidity",
|
|
261
|
-
description: "Launch
|
|
221
|
+
description: "Launch your own coin with a public trading pool. You set the supply and allocation and stay in control of the liquidity.",
|
|
262
222
|
features: ["Launch in a few clicks", "You keep control of the liquidity", "Traded on a public pool"],
|
|
263
223
|
example: "A fan coin for your channel, a coin for your music project",
|
|
264
224
|
icon: TrendingUp,
|
|
@@ -275,10 +235,10 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
275
235
|
{
|
|
276
236
|
key: "claim-memecoin",
|
|
277
237
|
cta: "Claim",
|
|
278
|
-
blurb: "
|
|
238
|
+
blurb: "Add a coin you already launched to your profile.",
|
|
279
239
|
title: "Claim Memecoin",
|
|
280
|
-
subtitle: "Bring
|
|
281
|
-
description: "
|
|
240
|
+
subtitle: "Bring a coin you already launched",
|
|
241
|
+
description: "Claim a coin you already launched to list it on the Coins page and your profile. Claims are reviewed before going live.",
|
|
282
242
|
features: ["Bring a coin you already launched", "Reviewed by our team", "Featured on the Coins page"],
|
|
283
243
|
example: "Your unrug memecoin, listed on your creator profile",
|
|
284
244
|
icon: Coins,
|
|
@@ -315,10 +275,10 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
315
275
|
cta: "Claim",
|
|
316
276
|
blurb: "Made a collection somewhere else? Bring it to your profile.",
|
|
317
277
|
title: "Claim Collection",
|
|
318
|
-
subtitle: "
|
|
319
|
-
description: "
|
|
278
|
+
subtitle: "Bring a collection you already made",
|
|
279
|
+
description: "Claim a collection you made elsewhere to link it to your profile and give it a branded collection page.",
|
|
320
280
|
features: ["Bring an existing collection", "Linked to your profile", "Branded collection page"],
|
|
321
|
-
example: "A collection you
|
|
281
|
+
example: "A collection you made elsewhere joins your profile",
|
|
322
282
|
icon: FolderInput,
|
|
323
283
|
gradient: "from-blue-500/10 via-sky-400/4 to-transparent",
|
|
324
284
|
borderColor: "border-blue-500/20",
|
|
@@ -335,7 +295,7 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
335
295
|
blurb: "Give your collection a clean, memorable web address of its own.",
|
|
336
296
|
title: "Claim Collection Name",
|
|
337
297
|
subtitle: "Reserve your collection page URL",
|
|
338
|
-
description: "Claim a custom name for your collection page
|
|
298
|
+
description: "Claim a custom name for your collection page and get a clean, shareable URL instead of a long technical address.",
|
|
339
299
|
features: ["Free claim", "Clean shareable URL", "Easy to remember and share"],
|
|
340
300
|
example: "medialane.io/collections/your-collection",
|
|
341
301
|
icon: Link2,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/data/launchpad-services.ts"],"sourcesContent":["import type { LucideIcon } from \"lucide-react\";\nimport {\n ImagePlus, Layers, GitBranch,\n Award, Package, PlusCircle,\n Ticket, Users, Handshake,\n Coins, TrendingUp,\n AtSign, FolderInput, Link2,\n} from \"lucide-react\";\nimport { hasCapability } from \"@medialane/sdk\";\n\nconst TICKETS_TRANSFERABLE_FEATURE = hasCapability(\"ip-tickets\", \"transfer\")\n ? \"Freely transferable\"\n : \"Stays with the original holder\";\n\nexport type ServiceStatus = \"live\" | \"building\" | \"soon\";\nexport type ServiceCategory = \"create\" | \"launch\" | \"monetize\";\n\nexport type ServiceGroup =\n | \"single-edition\"\n | \"limited-editions\"\n | \"coins\"\n | \"community\"\n | \"claims\"\n | \"coming-soon\";\n\nexport interface ServiceGroupDefinition {\n key: ServiceGroup;\n title: string;\n /** One line of plain creator language: what does this group do for my portfolio/revenue? */\n tagline: string;\n /** Optional small chip next to the title (e.g. the token standard) */\n badge?: string;\n}\n\n/** Ordered — launchpad pages render sections in this order. */\nexport const LAUNCHPAD_SERVICE_GROUPS: ServiceGroupDefinition[] = [\n {\n key: \"single-edition\",\n title: \"Single Edition\",\n tagline: \"Publish one-of-a-kind pieces \\u2014 a song, a photo, a film, a timed drop, or a remix.\",\n },\n {\n key: \"limited-editions\",\n title: \"Limited Editions\",\n tagline: \"Release your work in numbered copies your fans can collect and trade.\",\n },\n {\n key: \"coins\",\n title: \"Coins\",\n tagline: \"Launch your own coin \\u2014 or bring one you already made.\",\n },\n {\n key: \"community\",\n title: \"Community\",\n tagline: \"Badges, tickets, memberships, and direct sponsorship.\",\n },\n {\n key: \"claims\",\n title: \"Claims\",\n tagline: \"Quick wins \\u2014 reserve your username, your collection's name, or bring in a collection you already deployed elsewhere.\",\n },\n {\n key: \"coming-soon\",\n title: \"Coming soon\",\n tagline: \"More ways to earn are on the way.\",\n },\n];\n\nexport interface ServiceDefinition {\n key: string;\n title: string;\n subtitle: string;\n description: string;\n features: string[];\n icon: LucideIcon;\n gradient: string;\n borderColor: string;\n iconColor: string;\n buttonColor?: string;\n badge: string;\n status: ServiceStatus;\n category: ServiceCategory;\n group: ServiceGroup;\n /** The ONE creator-language sentence the card shows (no jargon). */\n blurb: string;\n /** Single-verb action label for the card's gradient pill (never repeats the title). */\n cta: string;\n /** Concrete usage example (legacy long-card layout; unused by the 0.9.0 card). */\n example?: string;\n /** Secondary browse link label — injected app adds the href */\n browseLinkLabel?: string;\n}\n\nexport const LAUNCHPAD_SERVICE_DEFINITIONS: ServiceDefinition[] = [\n // ── Create ────────────────────────────────────────────────────────────────\n {\n key: \"mint-ip-asset\",\n cta: \"Mint\",\n blurb: \"Upload a song, a photo, a video \\u2014 any file \\u2014 and publish it as yours, free, in minutes.\",\n title: \"Mint singular NFT\",\n subtitle: \"Publish your creative work onchain\",\n description:\n \"Upload any photo, video, audio, or document and mint it as an IP NFT — with licensing, provenance, and ownership all locked on-chain.\",\n // Apps may override features[0] with their gasless-rail wording (ChipiPay/AVNU).\n features: [\"Free to publish\", \"Your file, stored forever\", \"You set the license terms\"],\n example: \"A song, a photo, an ebook, a short film\",\n icon: ImagePlus,\n gradient: \"from-blue-500/10 via-sky-400/4 to-transparent\",\n borderColor: \"border-blue-500/20\",\n iconColor: \"text-blue-500\",\n buttonColor: \"bg-brand-blue hover:bg-brand-blue/90\",\n badge: \"Create\",\n status: \"live\",\n category: \"create\",\n group: \"single-edition\",\n },\n {\n key: \"create-collection\",\n cta: \"Create\",\n blurb: \"Give your works a home of their own, with its own page and name.\",\n title: \"Create NFT Collection\",\n subtitle: \"Group your NFTs under a shared identity\",\n description:\n \"Deploy a branded ERC-721 collection with its own page and on-chain identity. Add assets to it at any time and share it with collectors.\",\n features: [\"Your own branded page\", \"Add new work anytime\", \"One link to share with fans\"],\n example: \"A photography portfolio, a music catalog, a comic series\",\n icon: Layers,\n gradient: \"from-violet-500/10 via-purple-400/4 to-transparent\",\n borderColor: \"border-violet-500/20\",\n iconColor: \"text-violet-500\",\n buttonColor: \"bg-brand-purple hover:bg-brand-purple/90\",\n badge: \"Create\",\n status: \"live\",\n category: \"create\",\n group: \"single-edition\",\n },\n {\n key: \"ip-collection-1155\",\n cta: \"Create\",\n blurb: \"Set up a collection made for numbered copies of your work.\",\n title: \"Limited Editions Collections\",\n subtitle: \"Deploy a contract for multi-copy NFT releases\",\n description:\n \"Create a collection built for editions — release music tracks, art prints, or any IP in numbered multiples. Each edition token is tradeable on Medialane.\",\n features: [\"Numbered copies, set by you\", \"Fans collect and trade\", \"One home for every release\"],\n example: \"50 copies of a limited print, a music EP in 100 editions\",\n icon: Layers,\n gradient: \"from-violet-500/10 via-purple-400/4 to-transparent\",\n borderColor: \"border-violet-500/20\",\n iconColor: \"text-violet-500\",\n buttonColor: \"bg-violet-600 hover:bg-violet-700\",\n badge: \"Create\",\n status: \"live\",\n category: \"create\",\n group: \"limited-editions\",\n },\n {\n key: \"mint-editions\",\n cta: \"Mint\",\n blurb: \"Release a new piece in as many copies as you choose.\",\n title: \"Mint Limited Edition\",\n subtitle: \"Add new editions to an existing collection\",\n description:\n \"Pick one of your Limited Edition contracts, upload artwork, set the supply, and release to collectors — all in a few clicks.\",\n features: [\"You choose how many copies\", \"Numbered automatically\", \"Ready to sell right away\"],\n example: \"Drop 25 numbered prints from your art series\",\n icon: PlusCircle,\n gradient: \"from-fuchsia-500/10 via-violet-400/4 to-transparent\",\n borderColor: \"border-fuchsia-500/20\",\n iconColor: \"text-fuchsia-500\",\n buttonColor: \"bg-fuchsia-600 hover:bg-fuchsia-700\",\n badge: \"Create\",\n status: \"live\",\n category: \"create\",\n group: \"limited-editions\",\n },\n {\n key: \"remix-asset\",\n cta: \"Browse\",\n blurb: \"Create from another work \\u2014 credit and royalties are handled for you.\",\n title: \"Remix Asset\",\n subtitle: \"Derivative works with on-chain attribution\",\n description:\n \"Create a licensed derivative of any digital asset with full provenance and attribution flowing back to the original creator on-chain.\",\n features: [\"Credit handled automatically\", \"Royalties flow to the original\", \"License respected at mint\"],\n example: \"A remix of a song, an artwork inspired by an original\",\n icon: GitBranch,\n gradient: \"from-rose-500/10 via-pink-400/4 to-transparent\",\n borderColor: \"border-rose-500/20\",\n iconColor: \"text-rose-500\",\n buttonColor: \"bg-brand-rose hover:bg-brand-rose/90\",\n badge: \"Create\",\n status: \"live\",\n category: \"create\",\n group: \"single-edition\",\n },\n\n // ── Launch ────────────────────────────────────────────────────────────────\n {\n key: \"pop-protocol\",\n cta: \"Create\",\n blurb: \"Hand out badges your attendees keep forever.\",\n title: \"POP Protocol\",\n subtitle: \"Proof-of-participation for events & communities\",\n description:\n \"Issue soulbound credentials to your community — one non-transferable badge per wallet, permanently on-chain. No transferring, no faking.\",\n features: [\"Free for your community to claim\", \"Invite-list gating optional\", \"Branded event page to share\"],\n example: \"Hackathon attendance badge, community membership, conference pass\",\n icon: Award,\n gradient: \"from-emerald-500/10 via-green-400/4 to-transparent\",\n borderColor: \"border-emerald-500/20\",\n iconColor: \"text-emerald-500\",\n buttonColor: \"bg-green-600 hover:bg-green-700\",\n badge: \"Launch\",\n browseLinkLabel: \"Browse events\",\n status: \"live\",\n category: \"launch\",\n group: \"community\",\n },\n {\n key: \"collection-drop\",\n cta: \"Launch\",\n blurb: \"Set a price, a window, and a limited run \\u2014 then open the doors.\",\n title: \"Collection Drop\",\n subtitle: \"Timed NFT releases with mint windows\",\n description:\n \"Launch a time-gated mint campaign — set a price, supply cap, start and end time, and let collectors mint directly from your drop page.\",\n features: [\"You set price and supply\", \"Opens and closes on your schedule\", \"Branded drop page to share\"],\n example: \"A 48-hour drop of 200 pieces at 5 USDC each\",\n icon: Package,\n gradient: \"from-orange-500/10 via-amber-400/4 to-transparent\",\n borderColor: \"border-orange-500/20\",\n iconColor: \"text-orange-500\",\n buttonColor: \"bg-orange-600 hover:bg-orange-700\",\n badge: \"Launch\",\n browseLinkLabel: \"Browse drops\",\n status: \"live\",\n category: \"launch\",\n group: \"single-edition\",\n },\n {\n key: \"ip-tickets\",\n cta: \"Sell\",\n blurb: \"Sell tickets to your shows and events.\",\n title: \"IP Tickets\",\n subtitle: \"Gate real-world experiences with NFTs\",\n description:\n \"Distribute tickets for concerts, workshops, and events. Each ticket is verifiable on-chain proof of attendance.\",\n features: [\"NFT-based event gating\", \"Proof of attendance\", TICKETS_TRANSFERABLE_FEATURE],\n icon: Ticket,\n gradient: \"from-teal-500/10 via-cyan-400/4 to-transparent\",\n borderColor: \"border-teal-500/20\",\n iconColor: \"text-teal-500\",\n buttonColor: \"bg-teal-600 hover:bg-teal-700\",\n badge: \"Launch\",\n browseLinkLabel: \"Browse tickets\",\n // Deployed to Starknet mainnet 2026-07-02 — see\n // medialane-core/docs/deployments.md\n status: \"live\",\n category: \"launch\",\n group: \"community\",\n },\n {\n key: \"ip-club\",\n cta: \"Create\",\n blurb: \"Passes that unlock more for your closest fans.\",\n title: \"IP Club\",\n subtitle: \"Membership passes with an on-chain card\",\n description:\n \"Create a membership club backed by an on-chain NFT membership card. Set an entry fee, a member cap, and open or close joining anytime.\",\n features: [\"On-chain membership card\", \"Optional entry fee\", \"Open or close joining anytime\"],\n icon: Users,\n gradient: \"from-indigo-500/10 via-violet-400/4 to-transparent\",\n borderColor: \"border-indigo-500/20\",\n iconColor: \"text-indigo-400\",\n buttonColor: \"bg-indigo-600 hover:bg-indigo-700\",\n badge: \"Launch\",\n browseLinkLabel: \"Browse clubs\",\n // Deployed to Starknet mainnet 2026-07-02 — see\n // medialane-core/docs/deployments.md\n status: \"live\",\n category: \"launch\",\n group: \"community\",\n },\n {\n key: \"ip-sponsorship\",\n cta: \"Browse\",\n blurb: \"Let a sponsor back your work directly, for a license in return.\",\n title: \"IP Sponsorship\",\n subtitle: \"Direct sponsorship offers, settled asset-to-asset\",\n description:\n \"Create a sponsorship offer on an asset you own — sponsors bid, you accept, they receive a license. No escrow: settlement is direct, sponsor to author.\",\n features: [\"No escrow — direct settlement\", \"Owner-verified on-chain\", \"Open bidding or one invited sponsor\"],\n example: \"Sponsor a song, an artwork, or a patent for a license\",\n icon: Handshake,\n gradient: \"from-rose-500/10 via-pink-400/4 to-transparent\",\n borderColor: \"border-rose-500/20\",\n iconColor: \"text-rose-500\",\n buttonColor: \"bg-brand-rose hover:bg-brand-rose/90\",\n badge: \"Launch\",\n browseLinkLabel: \"Browse offers\",\n // Deployed to Starknet mainnet 2026-07-02 — see\n // medialane-core/docs/deployments.md\n status: \"live\",\n category: \"launch\",\n group: \"community\",\n },\n\n // ── Monetize ─────────────────────────────────────────────────────────────\n {\n key: \"creator-coins\",\n cta: \"Launch\",\n blurb: \"Launch your coin in a few clicks \\u2014 and stay in control of it.\",\n title: \"Creator Coin\",\n subtitle: \"Your own coin, your liquidity\",\n description:\n \"Launch a standard ERC-20 coin tied to your creative work, paired with a public Ekubo liquidity pool. You set the supply and allocation — and you stay in control of the liquidity.\",\n features: [\"Launch in a few clicks\", \"You keep control of the liquidity\", \"Traded on a public pool\"],\n example: \"A fan coin for your channel, a coin for your music project\",\n icon: TrendingUp,\n gradient: \"from-pink-500/6 via-rose-400/2 to-transparent\",\n borderColor: \"border-pink-500/20\",\n iconColor: \"text-pink-400\",\n buttonColor: \"bg-brand-rose hover:bg-brand-rose/90\",\n badge: \"Launch\",\n status: \"live\",\n category: \"monetize\",\n group: \"coins\",\n },\n\n // ── Claims ────────────────────────────────────────────────────────────────\n {\n key: \"claim-memecoin\",\n cta: \"Claim\",\n blurb: \"Already launched a coin? Add it to your Medialane profile.\",\n title: \"Claim Memecoin\",\n subtitle: \"Bring your Starknet coin to Medialane\",\n description:\n \"Already launched a coin on Starknet (unrug or partner)? Claim it to add it to Medialane — reviewed by our team, then live on the Coins page and your profile.\",\n features: [\"Bring a coin you already launched\", \"Reviewed by our team\", \"Featured on the Coins page\"],\n example: \"Your unrug memecoin, listed on your creator profile\",\n icon: Coins,\n gradient: \"from-orange-500/10 via-amber-400/4 to-transparent\",\n borderColor: \"border-orange-500/20\",\n iconColor: \"text-orange-500\",\n buttonColor: \"bg-orange-600 hover:bg-orange-700\",\n badge: \"Claim\",\n status: \"live\",\n category: \"monetize\",\n group: \"coins\",\n },\n {\n key: \"claim-username\",\n cta: \"Claim\",\n blurb: \"Reserve your name and get your own creator page.\",\n title: \"Claim Username\",\n subtitle: \"Reserve your creator page URL\",\n description:\n \"Claim your unique username and get a shareable creator page — your public portfolio at a clean, memorable URL. Free, and yours.\",\n features: [\"Free claim\", \"Shareable creator page\", \"Your public portfolio\"],\n example: \"medialane.io/your-name — your portfolio at your own name\",\n icon: AtSign,\n gradient: \"from-violet-500/10 via-purple-400/4 to-transparent\",\n borderColor: \"border-violet-500/20\",\n iconColor: \"text-violet-500\",\n buttonColor: \"bg-brand-purple hover:bg-brand-purple/90\",\n badge: \"Claim\",\n status: \"live\",\n category: \"create\",\n group: \"claims\",\n },\n {\n key: \"claim-collection\",\n cta: \"Claim\",\n blurb: \"Made a collection somewhere else? Bring it to your profile.\",\n title: \"Claim Collection\",\n subtitle: \"Import an existing Starknet collection\",\n description:\n \"Already deployed an ERC-721 collection on Starknet? Claim it to link it to your Medialane profile and give it a branded collection page.\",\n features: [\"Bring an existing collection\", \"Linked to your profile\", \"Branded collection page\"],\n example: \"A collection you deployed elsewhere joins your profile\",\n icon: FolderInput,\n gradient: \"from-blue-500/10 via-sky-400/4 to-transparent\",\n borderColor: \"border-blue-500/20\",\n iconColor: \"text-blue-500\",\n buttonColor: \"bg-brand-blue hover:bg-brand-blue/90\",\n badge: \"Claim\",\n status: \"live\",\n category: \"create\",\n group: \"claims\",\n },\n {\n key: \"claim-collection-name\",\n cta: \"Claim\",\n blurb: \"Give your collection a clean, memorable web address of its own.\",\n title: \"Claim Collection Name\",\n subtitle: \"Reserve your collection page URL\",\n description:\n \"Claim a custom name for your collection page — a clean, shareable URL your fans can remember, instead of a long contract address.\",\n features: [\"Free claim\", \"Clean shareable URL\", \"Easy to remember and share\"],\n example: \"medialane.io/collections/your-collection\",\n icon: Link2,\n gradient: \"from-pink-500/10 via-rose-400/4 to-transparent\",\n borderColor: \"border-pink-500/20\",\n iconColor: \"text-pink-500\",\n badge: \"Claim\",\n status: \"live\",\n category: \"create\",\n group: \"claims\",\n },\n];\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/data/launchpad-services.ts"],"sourcesContent":["import type { LucideIcon } from \"lucide-react\";\nimport {\n ImagePlus, Layers, GitBranch,\n Award, Package,\n Ticket, Users, Handshake,\n Coins, TrendingUp,\n AtSign, FolderInput, Link2,\n} from \"lucide-react\";\nimport { hasCapability } from \"@medialane/sdk\";\n\nconst TICKETS_TRANSFERABLE_FEATURE = hasCapability(\"ip-tickets\", \"transfer\")\n ? \"Freely transferable\"\n : \"Stays with the original holder\";\n\nexport type ServiceStatus = \"live\" | \"building\" | \"soon\";\nexport type ServiceCategory = \"create\" | \"launch\" | \"monetize\";\n\nexport type ServiceGroup =\n | \"nfts\"\n | \"limited-editions\"\n | \"coins\"\n | \"community\"\n | \"claims\"\n | \"coming-soon\";\n\nexport interface ServiceGroupDefinition {\n key: ServiceGroup;\n title: string;\n /** One line of plain creator language: what does this group do for my portfolio/revenue? */\n tagline: string;\n /** Optional small chip next to the title (e.g. the token standard) */\n badge?: string;\n}\n\n/** Ordered — drives the filter pills and the grid's tag order. */\nexport const LAUNCHPAD_SERVICE_GROUPS: ServiceGroupDefinition[] = [\n {\n key: \"nfts\",\n title: \"NFTs\",\n tagline: \"Singular works, your own collections, timed drops, and remixes.\",\n },\n {\n key: \"limited-editions\",\n title: \"Limited Editions\",\n tagline: \"Numbered copies of your work.\",\n },\n {\n key: \"coins\",\n title: \"Coins\",\n tagline: \"Launch your own coin, or bring one you already made.\",\n },\n {\n key: \"community\",\n title: \"Community\",\n tagline: \"Badges, tickets, memberships, and direct sponsorship.\",\n },\n {\n key: \"claims\",\n title: \"Claims\",\n tagline: \"Reserve your username, your collection's name, or bring in a collection you already made.\",\n },\n {\n key: \"coming-soon\",\n title: \"Coming soon\",\n tagline: \"More ways to earn are on the way.\",\n },\n];\n\nexport interface ServiceDefinition {\n key: string;\n title: string;\n subtitle: string;\n description: string;\n features: string[];\n icon: LucideIcon;\n gradient: string;\n borderColor: string;\n iconColor: string;\n buttonColor?: string;\n badge: string;\n status: ServiceStatus;\n category: ServiceCategory;\n group: ServiceGroup;\n /** The ONE creator-language sentence the card shows (no jargon). */\n blurb: string;\n /** Single-verb action label for the card's gradient pill (never repeats the title). */\n cta: string;\n /** Concrete usage example (legacy long-card layout; unused by the 0.9.0 card). */\n example?: string;\n /** Secondary browse link label — injected app adds the href */\n browseLinkLabel?: string;\n}\n\nexport const LAUNCHPAD_SERVICE_DEFINITIONS: ServiceDefinition[] = [\n // ── Create ────────────────────────────────────────────────────────────────\n {\n key: \"nfts\",\n cta: \"Create\",\n blurb: \"Publish one-of-a-kind works and keep them in collections of your own.\",\n title: \"NFTs\",\n subtitle: \"Singular works and your own collections\",\n description:\n \"Publish any photo, video, audio, or document as a one-of-a-kind work inside a collection you own. Licensing, provenance, and ownership live on-chain.\",\n features: [\"One-of-a-kind works\", \"Your own branded collections\", \"You set the license terms\"],\n example: \"A song, a photo, an ebook, a short film\",\n icon: ImagePlus,\n gradient: \"from-blue-500/10 via-sky-400/4 to-transparent\",\n borderColor: \"border-blue-500/20\",\n iconColor: \"text-blue-500\",\n buttonColor: \"bg-brand-blue hover:bg-brand-blue/90\",\n badge: \"Create\",\n status: \"live\",\n category: \"create\",\n group: \"nfts\",\n },\n {\n key: \"limited-editions\",\n cta: \"Mint\",\n blurb: \"Release your work in numbered copies that can be collected and traded.\",\n title: \"Limited Editions\",\n subtitle: \"Numbered copies from a collection you own\",\n description:\n \"Create an editions collection and release each work in as many numbered copies as you choose.\",\n features: [\"Numbered copies, set by you\", \"Fans collect and trade\", \"One home for every release\"],\n example: \"50 copies of a limited print, a music EP in 100 editions\",\n icon: Layers,\n gradient: \"from-violet-500/10 via-purple-400/4 to-transparent\",\n borderColor: \"border-violet-500/20\",\n iconColor: \"text-violet-500\",\n buttonColor: \"bg-brand-purple hover:bg-brand-purple/90\",\n badge: \"Create\",\n status: \"live\",\n category: \"create\",\n group: \"limited-editions\",\n },\n {\n key: \"remix-asset\",\n cta: \"Browse\",\n blurb: \"Create from another work. Credit and royalties are handled automatically.\",\n title: \"Remix Asset\",\n subtitle: \"Derivative works with on-chain attribution\",\n description:\n \"Create a licensed derivative of another work. Attribution and provenance flow back to the original creator.\",\n features: [\"Credit handled automatically\", \"Royalties flow to the original\", \"License respected at mint\"],\n example: \"A remix of a song, an artwork inspired by an original\",\n icon: GitBranch,\n gradient: \"from-rose-500/10 via-pink-400/4 to-transparent\",\n borderColor: \"border-rose-500/20\",\n iconColor: \"text-rose-500\",\n buttonColor: \"bg-brand-rose hover:bg-brand-rose/90\",\n badge: \"Create\",\n status: \"live\",\n category: \"create\",\n group: \"nfts\",\n },\n\n // ── Launch ────────────────────────────────────────────────────────────────\n {\n key: \"pop-protocol\",\n cta: \"Create\",\n blurb: \"Badges your community claims and keeps forever.\",\n title: \"POP Protocol\",\n subtitle: \"Proof-of-participation badges for your community\",\n description:\n \"Give out permanent badges. Each person can claim one, and it cannot be transferred or faked.\",\n features: [\"Free for your community to claim\", \"Invite-list gating optional\", \"Branded claim page to share\"],\n example: \"Hackathon attendance badge, community membership, conference pass\",\n icon: Award,\n gradient: \"from-emerald-500/10 via-green-400/4 to-transparent\",\n borderColor: \"border-emerald-500/20\",\n iconColor: \"text-emerald-500\",\n buttonColor: \"bg-green-600 hover:bg-green-700\",\n badge: \"Launch\",\n browseLinkLabel: \"Browse badges\",\n status: \"live\",\n category: \"launch\",\n group: \"community\",\n },\n {\n key: \"collection-drop\",\n cta: \"Launch\",\n blurb: \"Release a limited run at a set price and time window.\",\n title: \"Collection Drop\",\n subtitle: \"Timed NFT releases with mint windows\",\n description:\n \"Set a price, a supply, and a start and end time. Collectors mint directly from your drop page.\",\n features: [\"You set price and supply\", \"Opens and closes on your schedule\", \"Branded drop page to share\"],\n example: \"A 48-hour drop of 200 pieces at 5 USDC each\",\n icon: Package,\n gradient: \"from-orange-500/10 via-amber-400/4 to-transparent\",\n borderColor: \"border-orange-500/20\",\n iconColor: \"text-orange-500\",\n buttonColor: \"bg-orange-600 hover:bg-orange-700\",\n badge: \"Launch\",\n browseLinkLabel: \"Browse drops\",\n status: \"live\",\n category: \"launch\",\n group: \"nfts\",\n },\n {\n key: \"ip-tickets\",\n cta: \"Create\",\n blurb: \"Create on-chain tickets your audience can hold and trade.\",\n title: \"IP Tickets\",\n subtitle: \"Verifiable tickets, held in the wallet\",\n description:\n \"Create tickets with their own supply and validity window, then mint them to attendees. Every ticket is verifiable on-chain.\",\n features: [\"Verifiable at the door\", \"Supply and validity you set\", TICKETS_TRANSFERABLE_FEATURE],\n icon: Ticket,\n gradient: \"from-teal-500/10 via-cyan-400/4 to-transparent\",\n borderColor: \"border-teal-500/20\",\n iconColor: \"text-teal-500\",\n buttonColor: \"bg-teal-600 hover:bg-teal-700\",\n badge: \"Launch\",\n browseLinkLabel: \"Browse tickets\",\n // Deployed to Starknet mainnet 2026-07-02 — see\n // medialane-core/docs/deployments.md\n status: \"live\",\n category: \"launch\",\n group: \"community\",\n },\n {\n key: \"ip-club\",\n cta: \"Create\",\n blurb: \"Membership passes for your community.\",\n title: \"IP Club\",\n subtitle: \"Membership passes with an on-chain card\",\n description:\n \"Create a club with an on-chain membership card. Set an entry fee and a member cap, and open or close joining anytime.\",\n features: [\"On-chain membership card\", \"Optional entry fee\", \"Open or close joining anytime\"],\n icon: Users,\n gradient: \"from-indigo-500/10 via-violet-400/4 to-transparent\",\n borderColor: \"border-indigo-500/20\",\n iconColor: \"text-indigo-400\",\n buttonColor: \"bg-indigo-600 hover:bg-indigo-700\",\n badge: \"Launch\",\n browseLinkLabel: \"Browse clubs\",\n // Deployed to Starknet mainnet 2026-07-02 — see\n // medialane-core/docs/deployments.md\n status: \"live\",\n category: \"launch\",\n group: \"community\",\n },\n {\n key: \"ip-sponsorship\",\n cta: \"Browse\",\n blurb: \"Let a sponsor back your work directly, for a license in return.\",\n title: \"IP Sponsorship\",\n subtitle: \"Direct sponsorship offers, settled asset-to-asset\",\n description:\n \"Create a sponsorship offer on an asset you own. Sponsors bid, you accept, and they receive a license. Payment settles directly between sponsor and author.\",\n features: [\"Direct settlement\", \"Owner-verified on-chain\", \"Open bidding or one invited sponsor\"],\n example: \"Sponsor a song, an artwork, or a patent for a license\",\n icon: Handshake,\n gradient: \"from-rose-500/10 via-pink-400/4 to-transparent\",\n borderColor: \"border-rose-500/20\",\n iconColor: \"text-rose-500\",\n buttonColor: \"bg-brand-rose hover:bg-brand-rose/90\",\n badge: \"Launch\",\n browseLinkLabel: \"Browse offers\",\n // Deployed to Starknet mainnet 2026-07-02 — see\n // medialane-core/docs/deployments.md\n status: \"live\",\n category: \"launch\",\n group: \"community\",\n },\n\n // ── Monetize ─────────────────────────────────────────────────────────────\n {\n key: \"creator-coins\",\n cta: \"Launch\",\n blurb: \"Launch your coin in a few clicks and stay in control of it.\",\n title: \"Creator Coin\",\n subtitle: \"Your own coin, your liquidity\",\n description:\n \"Launch your own coin with a public trading pool. You set the supply and allocation and stay in control of the liquidity.\",\n features: [\"Launch in a few clicks\", \"You keep control of the liquidity\", \"Traded on a public pool\"],\n example: \"A fan coin for your channel, a coin for your music project\",\n icon: TrendingUp,\n gradient: \"from-pink-500/6 via-rose-400/2 to-transparent\",\n borderColor: \"border-pink-500/20\",\n iconColor: \"text-pink-400\",\n buttonColor: \"bg-brand-rose hover:bg-brand-rose/90\",\n badge: \"Launch\",\n status: \"live\",\n category: \"monetize\",\n group: \"coins\",\n },\n\n // ── Claims ────────────────────────────────────────────────────────────────\n {\n key: \"claim-memecoin\",\n cta: \"Claim\",\n blurb: \"Add a coin you already launched to your profile.\",\n title: \"Claim Memecoin\",\n subtitle: \"Bring a coin you already launched\",\n description:\n \"Claim a coin you already launched to list it on the Coins page and your profile. Claims are reviewed before going live.\",\n features: [\"Bring a coin you already launched\", \"Reviewed by our team\", \"Featured on the Coins page\"],\n example: \"Your unrug memecoin, listed on your creator profile\",\n icon: Coins,\n gradient: \"from-orange-500/10 via-amber-400/4 to-transparent\",\n borderColor: \"border-orange-500/20\",\n iconColor: \"text-orange-500\",\n buttonColor: \"bg-orange-600 hover:bg-orange-700\",\n badge: \"Claim\",\n status: \"live\",\n category: \"monetize\",\n group: \"coins\",\n },\n {\n key: \"claim-username\",\n cta: \"Claim\",\n blurb: \"Reserve your name and get your own creator page.\",\n title: \"Claim Username\",\n subtitle: \"Reserve your creator page URL\",\n description:\n \"Claim your unique username and get a shareable creator page — your public portfolio at a clean, memorable URL. Free, and yours.\",\n features: [\"Free claim\", \"Shareable creator page\", \"Your public portfolio\"],\n example: \"medialane.io/your-name — your portfolio at your own name\",\n icon: AtSign,\n gradient: \"from-violet-500/10 via-purple-400/4 to-transparent\",\n borderColor: \"border-violet-500/20\",\n iconColor: \"text-violet-500\",\n buttonColor: \"bg-brand-purple hover:bg-brand-purple/90\",\n badge: \"Claim\",\n status: \"live\",\n category: \"create\",\n group: \"claims\",\n },\n {\n key: \"claim-collection\",\n cta: \"Claim\",\n blurb: \"Made a collection somewhere else? Bring it to your profile.\",\n title: \"Claim Collection\",\n subtitle: \"Bring a collection you already made\",\n description:\n \"Claim a collection you made elsewhere to link it to your profile and give it a branded collection page.\",\n features: [\"Bring an existing collection\", \"Linked to your profile\", \"Branded collection page\"],\n example: \"A collection you made elsewhere joins your profile\",\n icon: FolderInput,\n gradient: \"from-blue-500/10 via-sky-400/4 to-transparent\",\n borderColor: \"border-blue-500/20\",\n iconColor: \"text-blue-500\",\n buttonColor: \"bg-brand-blue hover:bg-brand-blue/90\",\n badge: \"Claim\",\n status: \"live\",\n category: \"create\",\n group: \"claims\",\n },\n {\n key: \"claim-collection-name\",\n cta: \"Claim\",\n blurb: \"Give your collection a clean, memorable web address of its own.\",\n title: \"Claim Collection Name\",\n subtitle: \"Reserve your collection page URL\",\n description:\n \"Claim a custom name for your collection page and get a clean, shareable URL instead of a long technical address.\",\n features: [\"Free claim\", \"Clean shareable URL\", \"Easy to remember and share\"],\n example: \"medialane.io/collections/your-collection\",\n icon: Link2,\n gradient: \"from-pink-500/10 via-rose-400/4 to-transparent\",\n borderColor: \"border-pink-500/20\",\n iconColor: \"text-pink-500\",\n badge: \"Claim\",\n status: \"live\",\n category: \"create\",\n group: \"claims\",\n },\n];\n"],"mappings":"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","names":[]}
|