@medialane/ui 0.9.1 → 0.10.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-services.cjs +75 -31
- package/dist/components/launchpad-services.cjs.map +1 -1
- package/dist/components/launchpad-services.d.cts +9 -5
- package/dist/components/launchpad-services.d.ts +9 -5
- package/dist/components/launchpad-services.js +76 -32
- package/dist/components/launchpad-services.js.map +1 -1
- package/dist/data/launchpad-services.cjs +62 -19
- package/dist/data/launchpad-services.cjs.map +1 -1
- package/dist/data/launchpad-services.d.cts +2 -0
- package/dist/data/launchpad-services.d.ts +2 -0
- package/dist/data/launchpad-services.js +64 -20
- package/dist/data/launchpad-services.js.map +1 -1
- package/package.json +1 -1
|
@@ -36,8 +36,8 @@ const LAUNCHPAD_SERVICE_GROUPS = [
|
|
|
36
36
|
},
|
|
37
37
|
{
|
|
38
38
|
key: "creator-coins",
|
|
39
|
-
title: "Creator Coins",
|
|
40
|
-
tagline: "Launch your own coin and let your community back you."
|
|
39
|
+
title: "Creator Coins & Memecoins",
|
|
40
|
+
tagline: "Launch your own coin \u2014 or bring one you already made \u2014 and let your community back you."
|
|
41
41
|
},
|
|
42
42
|
{
|
|
43
43
|
key: "collection-drop",
|
|
@@ -69,13 +69,14 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
69
69
|
// ── Create ────────────────────────────────────────────────────────────────
|
|
70
70
|
{
|
|
71
71
|
key: "mint-ip-asset",
|
|
72
|
+
cta: "Mint",
|
|
72
73
|
blurb: "Upload a song, a photo, a video \u2014 any file \u2014 and publish it as yours, free, in minutes.",
|
|
73
74
|
title: "Mint singular NFT",
|
|
74
75
|
subtitle: "Publish your creative work onchain",
|
|
75
76
|
description: "Upload any photo, video, audio, or document and mint it as an IP NFT \u2014 with licensing, provenance, and ownership all locked on-chain.",
|
|
76
77
|
// Apps may override features[0] with their gasless-rail wording (ChipiPay/AVNU).
|
|
77
|
-
features: ["
|
|
78
|
-
example: "
|
|
78
|
+
features: ["Free to publish", "Your file, stored forever", "You set the license terms"],
|
|
79
|
+
example: "A song, a photo, an ebook, a short film",
|
|
79
80
|
icon: import_lucide_react.ImagePlus,
|
|
80
81
|
gradient: "from-blue-500/10 via-sky-400/4 to-transparent",
|
|
81
82
|
borderColor: "border-blue-500/20",
|
|
@@ -88,12 +89,13 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
88
89
|
},
|
|
89
90
|
{
|
|
90
91
|
key: "create-collection",
|
|
92
|
+
cta: "Create",
|
|
91
93
|
blurb: "Give your works a home of their own, with its own page and name.",
|
|
92
94
|
title: "Create NFT Collection",
|
|
93
95
|
subtitle: "Group your NFTs under a shared identity",
|
|
94
96
|
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.",
|
|
95
|
-
features: ["
|
|
96
|
-
example: "
|
|
97
|
+
features: ["Your own branded page", "Add new work anytime", "One link to share with fans"],
|
|
98
|
+
example: "A photography portfolio, a music catalog, a comic series",
|
|
97
99
|
icon: import_lucide_react.Layers,
|
|
98
100
|
gradient: "from-violet-500/10 via-purple-400/4 to-transparent",
|
|
99
101
|
borderColor: "border-violet-500/20",
|
|
@@ -106,12 +108,13 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
106
108
|
},
|
|
107
109
|
{
|
|
108
110
|
key: "ip-collection-1155",
|
|
111
|
+
cta: "Create",
|
|
109
112
|
blurb: "Set up a collection made for numbered copies of your work.",
|
|
110
113
|
title: "Limited Editions Collections",
|
|
111
114
|
subtitle: "Deploy a contract for multi-copy NFT releases",
|
|
112
115
|
description: "Create a collection built for editions \u2014 release music tracks, art prints, or any IP in numbered multiples. Each edition token is tradeable on Medialane.",
|
|
113
|
-
features: ["
|
|
114
|
-
example: "
|
|
116
|
+
features: ["Numbered copies, set by you", "Fans collect and trade", "One home for every release"],
|
|
117
|
+
example: "50 copies of a limited print, a music EP in 100 editions",
|
|
115
118
|
icon: import_lucide_react.Layers,
|
|
116
119
|
gradient: "from-violet-500/10 via-purple-400/4 to-transparent",
|
|
117
120
|
borderColor: "border-violet-500/20",
|
|
@@ -124,12 +127,13 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
124
127
|
},
|
|
125
128
|
{
|
|
126
129
|
key: "mint-editions",
|
|
130
|
+
cta: "Mint",
|
|
127
131
|
blurb: "Release a new piece in as many copies as you choose.",
|
|
128
132
|
title: "Mint Limited Edition",
|
|
129
133
|
subtitle: "Add new editions to an existing collection",
|
|
130
134
|
description: "Pick one of your Limited Edition contracts, upload artwork, set the supply, and release to collectors \u2014 all in a few clicks.",
|
|
131
|
-
features: ["
|
|
132
|
-
example: "
|
|
135
|
+
features: ["You choose how many copies", "Numbered automatically", "Ready to sell right away"],
|
|
136
|
+
example: "Drop 25 numbered prints from your art series",
|
|
133
137
|
icon: import_lucide_react.PlusCircle,
|
|
134
138
|
gradient: "from-fuchsia-500/10 via-violet-400/4 to-transparent",
|
|
135
139
|
borderColor: "border-fuchsia-500/20",
|
|
@@ -142,12 +146,13 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
142
146
|
},
|
|
143
147
|
{
|
|
144
148
|
key: "remix-asset",
|
|
149
|
+
cta: "Browse",
|
|
145
150
|
blurb: "Create from another work \u2014 credit and royalties are handled for you.",
|
|
146
151
|
title: "Remix Asset",
|
|
147
152
|
subtitle: "Derivative works with on-chain attribution",
|
|
148
153
|
description: "Create a licensed derivative of any digital asset with full provenance and attribution flowing back to the original creator on-chain.",
|
|
149
|
-
features: ["
|
|
150
|
-
example: "
|
|
154
|
+
features: ["Credit handled automatically", "Royalties flow to the original", "License respected at mint"],
|
|
155
|
+
example: "A remix of a song, an artwork inspired by an original",
|
|
151
156
|
icon: import_lucide_react.GitBranch,
|
|
152
157
|
gradient: "from-rose-500/10 via-pink-400/4 to-transparent",
|
|
153
158
|
borderColor: "border-rose-500/20",
|
|
@@ -161,12 +166,19 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
161
166
|
// ── Launch ────────────────────────────────────────────────────────────────
|
|
162
167
|
{
|
|
163
168
|
key: "pop-protocol",
|
|
169
|
+
cta: "Create",
|
|
164
170
|
blurb: "Hand out badges your attendees keep forever.",
|
|
165
171
|
title: "POP Protocol",
|
|
166
172
|
subtitle: "Proof-of-participation for events & communities",
|
|
167
173
|
description: "Issue soulbound credentials to your community \u2014 one non-transferable badge per wallet, permanently on-chain. No transferring, no faking.",
|
|
168
|
-
features: [
|
|
169
|
-
|
|
174
|
+
features: [
|
|
175
|
+
"Badges stay with attendees forever",
|
|
176
|
+
"One badge per person \u2014 no faking",
|
|
177
|
+
"Free for your community to claim",
|
|
178
|
+
"Invite-list gating optional",
|
|
179
|
+
"Branded event page to share"
|
|
180
|
+
],
|
|
181
|
+
example: "Hackathon attendance badge, community membership, conference pass",
|
|
170
182
|
icon: import_lucide_react.Award,
|
|
171
183
|
gradient: "from-emerald-500/10 via-green-400/4 to-transparent",
|
|
172
184
|
borderColor: "border-emerald-500/20",
|
|
@@ -180,12 +192,13 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
180
192
|
},
|
|
181
193
|
{
|
|
182
194
|
key: "collection-drop",
|
|
195
|
+
cta: "Launch",
|
|
183
196
|
blurb: "Set a price, a window, and a limited run \u2014 then open the doors.",
|
|
184
197
|
title: "Collection Drop",
|
|
185
198
|
subtitle: "Timed NFT releases with mint windows",
|
|
186
199
|
description: "Launch a time-gated mint campaign \u2014 set a price, supply cap, start and end time, and let collectors mint directly from your drop page.",
|
|
187
|
-
features: ["
|
|
188
|
-
example: "
|
|
200
|
+
features: ["You set price and supply", "Opens and closes on your schedule", "Branded drop page to share"],
|
|
201
|
+
example: "A 48-hour drop of 200 pieces at 5 USDC each",
|
|
189
202
|
icon: import_lucide_react.Package,
|
|
190
203
|
gradient: "from-orange-500/10 via-amber-400/4 to-transparent",
|
|
191
204
|
borderColor: "border-orange-500/20",
|
|
@@ -199,6 +212,7 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
199
212
|
},
|
|
200
213
|
{
|
|
201
214
|
key: "ip-tickets",
|
|
215
|
+
cta: "Sell",
|
|
202
216
|
blurb: "Sell tickets to your shows and events.",
|
|
203
217
|
title: "IP Tickets",
|
|
204
218
|
subtitle: "Gate real-world experiences with NFTs",
|
|
@@ -215,6 +229,7 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
215
229
|
},
|
|
216
230
|
{
|
|
217
231
|
key: "membership",
|
|
232
|
+
cta: "Create",
|
|
218
233
|
blurb: "Passes that unlock more for your closest fans.",
|
|
219
234
|
title: "Membership",
|
|
220
235
|
subtitle: "Token-gated access passes",
|
|
@@ -232,6 +247,7 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
232
247
|
// ── Monetize ─────────────────────────────────────────────────────────────
|
|
233
248
|
{
|
|
234
249
|
key: "subscriptions",
|
|
250
|
+
cta: "Start",
|
|
235
251
|
blurb: "Recurring support from your audience.",
|
|
236
252
|
title: "Subscriptions",
|
|
237
253
|
subtitle: "Recurring on-chain revenue",
|
|
@@ -248,6 +264,7 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
248
264
|
},
|
|
249
265
|
{
|
|
250
266
|
key: "ip-coins",
|
|
267
|
+
cta: "Launch",
|
|
251
268
|
blurb: "Let fans own a piece of your catalog.",
|
|
252
269
|
title: "IP Coins",
|
|
253
270
|
subtitle: "Fractional ownership of intellectual property",
|
|
@@ -264,11 +281,13 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
264
281
|
},
|
|
265
282
|
{
|
|
266
283
|
key: "creator-coins",
|
|
284
|
+
cta: "Launch",
|
|
267
285
|
blurb: "Launch your coin in a few clicks \u2014 and stay in control of it.",
|
|
268
286
|
title: "Creator Coin",
|
|
269
287
|
subtitle: "Your own coin, your liquidity",
|
|
270
288
|
description: "Launch a standard ERC-20 coin tied to your creative work, paired with a public Ekubo liquidity pool. You set the supply and allocation \u2014 and you stay in control of the liquidity.",
|
|
271
|
-
features: ["
|
|
289
|
+
features: ["Launch in a few clicks", "You keep control of the liquidity", "Traded on a public pool"],
|
|
290
|
+
example: "A fan coin for your channel, a coin for your music project",
|
|
272
291
|
icon: import_lucide_react.TrendingUp,
|
|
273
292
|
gradient: "from-pink-500/6 via-rose-400/2 to-transparent",
|
|
274
293
|
borderColor: "border-pink-500/20",
|
|
@@ -282,11 +301,13 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
282
301
|
// ── Claims ────────────────────────────────────────────────────────────────
|
|
283
302
|
{
|
|
284
303
|
key: "claim-memecoin",
|
|
304
|
+
cta: "Claim",
|
|
285
305
|
blurb: "Already launched a coin? Add it to your Medialane profile.",
|
|
286
306
|
title: "Claim Memecoin",
|
|
287
307
|
subtitle: "Bring your Starknet coin to Medialane",
|
|
288
308
|
description: "Already launched a coin on Starknet (unrug or partner)? Claim it to add it to Medialane \u2014 reviewed by our team, then live on the Coins page and your profile.",
|
|
289
|
-
features: ["
|
|
309
|
+
features: ["Bring a coin you already launched", "Reviewed by our team", "Featured on the Coins page"],
|
|
310
|
+
example: "Your unrug memecoin, listed on your creator profile",
|
|
290
311
|
icon: import_lucide_react.Coins,
|
|
291
312
|
gradient: "from-orange-500/10 via-amber-400/4 to-transparent",
|
|
292
313
|
borderColor: "border-orange-500/20",
|
|
@@ -299,11 +320,13 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
299
320
|
},
|
|
300
321
|
{
|
|
301
322
|
key: "claim-username",
|
|
323
|
+
cta: "Claim",
|
|
302
324
|
blurb: "Reserve your name and get your own creator page.",
|
|
303
325
|
title: "Claim Username",
|
|
304
326
|
subtitle: "Reserve your creator page URL",
|
|
305
327
|
description: "Claim your unique username and get a shareable creator page \u2014 your public portfolio at a clean, memorable URL. Free, and yours.",
|
|
306
328
|
features: ["Free claim", "Shareable creator page", "Your public portfolio"],
|
|
329
|
+
example: "medialane.io/your-name \u2014 your portfolio at your own name",
|
|
307
330
|
icon: import_lucide_react.AtSign,
|
|
308
331
|
gradient: "from-violet-500/10 via-purple-400/4 to-transparent",
|
|
309
332
|
borderColor: "border-violet-500/20",
|
|
@@ -316,11 +339,13 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
316
339
|
},
|
|
317
340
|
{
|
|
318
341
|
key: "claim-collection",
|
|
342
|
+
cta: "Claim",
|
|
319
343
|
blurb: "Made a collection somewhere else? Bring it to your profile.",
|
|
320
344
|
title: "Claim Collection",
|
|
321
345
|
subtitle: "Import an existing Starknet collection",
|
|
322
346
|
description: "Already deployed an ERC-721 collection on Starknet? Claim it to link it to your Medialane profile and give it a branded collection page.",
|
|
323
|
-
features: ["
|
|
347
|
+
features: ["Bring an existing collection", "Linked to your profile", "Branded collection page"],
|
|
348
|
+
example: "A collection you deployed elsewhere joins your profile",
|
|
324
349
|
icon: import_lucide_react.FolderInput,
|
|
325
350
|
gradient: "from-blue-500/10 via-sky-400/4 to-transparent",
|
|
326
351
|
borderColor: "border-blue-500/20",
|
|
@@ -330,6 +355,24 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
330
355
|
status: "live",
|
|
331
356
|
category: "create",
|
|
332
357
|
group: "claims"
|
|
358
|
+
},
|
|
359
|
+
{
|
|
360
|
+
key: "claim-collection-name",
|
|
361
|
+
cta: "Claim",
|
|
362
|
+
blurb: "Give your collection a clean, memorable web address of its own.",
|
|
363
|
+
title: "Claim Collection Name",
|
|
364
|
+
subtitle: "Reserve your collection page URL",
|
|
365
|
+
description: "Claim a custom name for your collection page \u2014 a clean, shareable URL your fans can remember, instead of a long contract address.",
|
|
366
|
+
features: ["Free claim", "Clean shareable URL", "Easy to remember and share"],
|
|
367
|
+
example: "medialane.io/collections/your-collection",
|
|
368
|
+
icon: import_lucide_react.Link2,
|
|
369
|
+
gradient: "from-pink-500/10 via-rose-400/4 to-transparent",
|
|
370
|
+
borderColor: "border-pink-500/20",
|
|
371
|
+
iconColor: "text-pink-500",
|
|
372
|
+
badge: "Claim",
|
|
373
|
+
status: "live",
|
|
374
|
+
category: "create",
|
|
375
|
+
group: "claims"
|
|
333
376
|
}
|
|
334
377
|
];
|
|
335
378
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -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,\n RefreshCw, Coins, TrendingUp,\n AtSign, FolderInput,\n} from \"lucide-react\";\n\nexport type ServiceStatus = \"live\" | \"building\" | \"soon\";\nexport type ServiceCategory = \"create\" | \"launch\" | \"monetize\";\n\nexport type ServiceGroup =\n | \"single-edition\"\n | \"limited-editions\"\n | \"creator-coins\"\n | \"collection-drop\"\n | \"pop-protocol\"\n | \"licensing-remix\"\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 Editions\",\n tagline: \"Publish one-of-a-kind pieces \\u2014 a song, a photo, a film \\u2014 under your own name.\",\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: \"creator-coins\",\n title: \"Creator Coins\",\n tagline: \"Launch your own coin and let your community back you.\",\n },\n {\n key: \"collection-drop\",\n title: \"Collection Drop\",\n tagline: \"Schedule a release and let your audience mint while the window is open.\",\n },\n {\n key: \"pop-protocol\",\n title: \"POP Protocol\",\n tagline: \"Give your community proof they were part of the moment.\",\n },\n {\n key: \"licensing-remix\",\n title: \"Licensing & Remix\",\n tagline: \"Let others build on your work \\u2014 with credit and royalties flowing back to you.\",\n },\n {\n key: \"claims\",\n title: \"Claims\",\n tagline: \"Quick wins \\u2014 claim your name and bring in work you have 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 /** 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 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: [\"Gasless transactions\", \"IPFS metadata\", \"Programmable licensing\"],\n example: \"e.g. 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 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: [\"Factory-deployed ERC-721\", \"Branded collection page\", \"Add assets at any time\"],\n example: \"e.g. 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 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: [\"Multi-edition ERC-1155\", \"Numbered tokens\", \"Tradeable on Medialane\"],\n example: \"e.g. 50 copies of a limited print, a music EP released 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 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: [\"Choose any edition collection\", \"Set edition supply\", \"IPFS metadata\"],\n example: \"e.g. 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 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: [\"On-chain attribution\", \"License-enforced at mint\", \"Royalties to original creator\"],\n example: \"e.g. A remix of a song, a derivative 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: \"licensing-remix\",\n },\n\n // ── Launch ────────────────────────────────────────────────────────────────\n {\n key: \"pop-protocol\",\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: [\"Soulbound · non-transferable\", \"One credential per wallet\", \"Optional allowlist gating\"],\n example: \"e.g. 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: \"pop-protocol\",\n },\n {\n key: \"collection-drop\",\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: [\"Timed mint window\", \"Price + supply cap\", \"Branded drop page\"],\n example: \"e.g. A 48-hour drop of 200 NFTs 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: \"collection-drop\",\n },\n {\n key: \"ip-tickets\",\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\", \"Transferable or soulbound\"],\n icon: Ticket,\n gradient: \"from-teal-500/7 via-cyan-400/3 to-transparent\",\n borderColor: \"border-teal-500/15\",\n iconColor: \"text-teal-500\",\n badge: \"Soon\",\n status: \"building\",\n category: \"launch\",\n group: \"coming-soon\",\n },\n {\n key: \"membership\",\n blurb: \"Passes that unlock more for your closest fans.\",\n title: \"Membership\",\n subtitle: \"Token-gated access passes\",\n description:\n \"Create tiered membership passes that unlock exclusive content, private communities, and experiences for your most loyal fans.\",\n features: [\"Token-gated content\", \"Tiered access levels\", \"Community alignment\"],\n icon: Users,\n gradient: \"from-indigo-500/6 via-violet-400/2 to-transparent\",\n borderColor: \"border-indigo-500/10\",\n iconColor: \"text-indigo-400\",\n badge: \"Soon\",\n status: \"soon\",\n category: \"launch\",\n group: \"coming-soon\",\n },\n\n // ── Monetize ─────────────────────────────────────────────────────────────\n {\n key: \"subscriptions\",\n blurb: \"Recurring support from your audience.\",\n title: \"Subscriptions\",\n subtitle: \"Recurring on-chain revenue\",\n description:\n \"Monthly licensing, creator support tiers, and access passes — all auto-renewed without intermediaries.\",\n features: [\"Recurring revenue\", \"Auto-renewal protocol\", \"No middlemen\"],\n icon: RefreshCw,\n gradient: \"from-sky-500/6 via-blue-400/2 to-transparent\",\n borderColor: \"border-sky-500/10\",\n iconColor: \"text-sky-400\",\n badge: \"Soon\",\n status: \"soon\",\n category: \"monetize\",\n group: \"coming-soon\",\n },\n {\n key: \"ip-coins\",\n blurb: \"Let fans own a piece of your catalog.\",\n title: \"IP Coins\",\n subtitle: \"Fractional ownership of intellectual property\",\n description:\n \"Tokenize your IP catalog as fungible tokens. Enable fractional ownership and liquid markets around your creative work.\",\n features: [\"Fungible IP tokens\", \"Fractional ownership\", \"Liquid secondary markets\"],\n icon: Coins,\n gradient: \"from-amber-500/6 via-yellow-400/2 to-transparent\",\n borderColor: \"border-amber-500/10\",\n iconColor: \"text-amber-400\",\n badge: \"Soon\",\n status: \"soon\",\n category: \"monetize\",\n group: \"coming-soon\",\n },\n {\n key: \"creator-coins\",\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: [\"Standard ERC-20\", \"Public Ekubo pool\", \"You control the liquidity\"],\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: \"Soon\",\n status: \"soon\",\n category: \"monetize\",\n group: \"creator-coins\",\n },\n\n // ── Claims ────────────────────────────────────────────────────────────────\n {\n key: \"claim-memecoin\",\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: [\"unrug & partner coins\", \"Team reviewed\", \"Lists on /coins\"],\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: \"soon\",\n category: \"monetize\",\n group: \"creator-coins\",\n },\n {\n key: \"claim-username\",\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 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 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: [\"Import existing ERC-721\", \"Linked to your profile\", \"Branded collection page\"],\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"],"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, PlusCircle,\n Ticket, Users,\n RefreshCw, Coins, TrendingUp,\n AtSign, FolderInput, Link2,\n} from \"lucide-react\";\n\nexport type ServiceStatus = \"live\" | \"building\" | \"soon\";\nexport type ServiceCategory = \"create\" | \"launch\" | \"monetize\";\n\nexport type ServiceGroup =\n | \"single-edition\"\n | \"limited-editions\"\n | \"creator-coins\"\n | \"collection-drop\"\n | \"pop-protocol\"\n | \"licensing-remix\"\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 Editions\",\n tagline: \"Publish one-of-a-kind pieces \\u2014 a song, a photo, a film \\u2014 under your own name.\",\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: \"creator-coins\",\n title: \"Creator Coins & Memecoins\",\n tagline: \"Launch your own coin — or bring one you already made — and let your community back you.\",\n },\n {\n key: \"collection-drop\",\n title: \"Collection Drop\",\n tagline: \"Schedule a release and let your audience mint while the window is open.\",\n },\n {\n key: \"pop-protocol\",\n title: \"POP Protocol\",\n tagline: \"Give your community proof they were part of the moment.\",\n },\n {\n key: \"licensing-remix\",\n title: \"Licensing & Remix\",\n tagline: \"Let others build on your work \\u2014 with credit and royalties flowing back to you.\",\n },\n {\n key: \"claims\",\n title: \"Claims\",\n tagline: \"Quick wins \\u2014 claim your name and bring in work you have 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: \"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: \"licensing-remix\",\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: [\n \"Badges stay with attendees forever\",\n \"One badge per person — no faking\",\n \"Free for your community to claim\",\n \"Invite-list gating optional\",\n \"Branded event page to share\",\n ],\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: \"pop-protocol\",\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: \"collection-drop\",\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\", \"Transferable or soulbound\"],\n icon: Ticket,\n gradient: \"from-teal-500/7 via-cyan-400/3 to-transparent\",\n borderColor: \"border-teal-500/15\",\n iconColor: \"text-teal-500\",\n badge: \"Soon\",\n status: \"building\",\n category: \"launch\",\n group: \"coming-soon\",\n },\n {\n key: \"membership\",\n cta: \"Create\",\n blurb: \"Passes that unlock more for your closest fans.\",\n title: \"Membership\",\n subtitle: \"Token-gated access passes\",\n description:\n \"Create tiered membership passes that unlock exclusive content, private communities, and experiences for your most loyal fans.\",\n features: [\"Token-gated content\", \"Tiered access levels\", \"Community alignment\"],\n icon: Users,\n gradient: \"from-indigo-500/6 via-violet-400/2 to-transparent\",\n borderColor: \"border-indigo-500/10\",\n iconColor: \"text-indigo-400\",\n badge: \"Soon\",\n status: \"soon\",\n category: \"launch\",\n group: \"coming-soon\",\n },\n\n // ── Monetize ─────────────────────────────────────────────────────────────\n {\n key: \"subscriptions\",\n cta: \"Start\",\n blurb: \"Recurring support from your audience.\",\n title: \"Subscriptions\",\n subtitle: \"Recurring on-chain revenue\",\n description:\n \"Monthly licensing, creator support tiers, and access passes — all auto-renewed without intermediaries.\",\n features: [\"Recurring revenue\", \"Auto-renewal protocol\", \"No middlemen\"],\n icon: RefreshCw,\n gradient: \"from-sky-500/6 via-blue-400/2 to-transparent\",\n borderColor: \"border-sky-500/10\",\n iconColor: \"text-sky-400\",\n badge: \"Soon\",\n status: \"soon\",\n category: \"monetize\",\n group: \"coming-soon\",\n },\n {\n key: \"ip-coins\",\n cta: \"Launch\",\n blurb: \"Let fans own a piece of your catalog.\",\n title: \"IP Coins\",\n subtitle: \"Fractional ownership of intellectual property\",\n description:\n \"Tokenize your IP catalog as fungible tokens. Enable fractional ownership and liquid markets around your creative work.\",\n features: [\"Fungible IP tokens\", \"Fractional ownership\", \"Liquid secondary markets\"],\n icon: Coins,\n gradient: \"from-amber-500/6 via-yellow-400/2 to-transparent\",\n borderColor: \"border-amber-500/10\",\n iconColor: \"text-amber-400\",\n badge: \"Soon\",\n status: \"soon\",\n category: \"monetize\",\n group: \"coming-soon\",\n },\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: \"Soon\",\n status: \"soon\",\n category: \"monetize\",\n group: \"creator-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: \"soon\",\n category: \"monetize\",\n group: \"creator-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":[]}
|
|
@@ -30,6 +30,8 @@ interface ServiceDefinition {
|
|
|
30
30
|
group: ServiceGroup;
|
|
31
31
|
/** The ONE creator-language sentence the card shows (no jargon). */
|
|
32
32
|
blurb: string;
|
|
33
|
+
/** Single-verb action label for the card's gradient pill (never repeats the title). */
|
|
34
|
+
cta: string;
|
|
33
35
|
/** Concrete usage example (legacy long-card layout; unused by the 0.9.0 card). */
|
|
34
36
|
example?: string;
|
|
35
37
|
/** Secondary browse link label — injected app adds the href */
|
|
@@ -30,6 +30,8 @@ interface ServiceDefinition {
|
|
|
30
30
|
group: ServiceGroup;
|
|
31
31
|
/** The ONE creator-language sentence the card shows (no jargon). */
|
|
32
32
|
blurb: string;
|
|
33
|
+
/** Single-verb action label for the card's gradient pill (never repeats the title). */
|
|
34
|
+
cta: string;
|
|
33
35
|
/** Concrete usage example (legacy long-card layout; unused by the 0.9.0 card). */
|
|
34
36
|
example?: string;
|
|
35
37
|
/** Secondary browse link label — injected app adds the href */
|
|
@@ -11,7 +11,8 @@ import {
|
|
|
11
11
|
Coins,
|
|
12
12
|
TrendingUp,
|
|
13
13
|
AtSign,
|
|
14
|
-
FolderInput
|
|
14
|
+
FolderInput,
|
|
15
|
+
Link2
|
|
15
16
|
} from "lucide-react";
|
|
16
17
|
const LAUNCHPAD_SERVICE_GROUPS = [
|
|
17
18
|
{
|
|
@@ -26,8 +27,8 @@ const LAUNCHPAD_SERVICE_GROUPS = [
|
|
|
26
27
|
},
|
|
27
28
|
{
|
|
28
29
|
key: "creator-coins",
|
|
29
|
-
title: "Creator Coins",
|
|
30
|
-
tagline: "Launch your own coin and let your community back you."
|
|
30
|
+
title: "Creator Coins & Memecoins",
|
|
31
|
+
tagline: "Launch your own coin \u2014 or bring one you already made \u2014 and let your community back you."
|
|
31
32
|
},
|
|
32
33
|
{
|
|
33
34
|
key: "collection-drop",
|
|
@@ -59,13 +60,14 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
59
60
|
// ── Create ────────────────────────────────────────────────────────────────
|
|
60
61
|
{
|
|
61
62
|
key: "mint-ip-asset",
|
|
63
|
+
cta: "Mint",
|
|
62
64
|
blurb: "Upload a song, a photo, a video \u2014 any file \u2014 and publish it as yours, free, in minutes.",
|
|
63
65
|
title: "Mint singular NFT",
|
|
64
66
|
subtitle: "Publish your creative work onchain",
|
|
65
67
|
description: "Upload any photo, video, audio, or document and mint it as an IP NFT \u2014 with licensing, provenance, and ownership all locked on-chain.",
|
|
66
68
|
// Apps may override features[0] with their gasless-rail wording (ChipiPay/AVNU).
|
|
67
|
-
features: ["
|
|
68
|
-
example: "
|
|
69
|
+
features: ["Free to publish", "Your file, stored forever", "You set the license terms"],
|
|
70
|
+
example: "A song, a photo, an ebook, a short film",
|
|
69
71
|
icon: ImagePlus,
|
|
70
72
|
gradient: "from-blue-500/10 via-sky-400/4 to-transparent",
|
|
71
73
|
borderColor: "border-blue-500/20",
|
|
@@ -78,12 +80,13 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
78
80
|
},
|
|
79
81
|
{
|
|
80
82
|
key: "create-collection",
|
|
83
|
+
cta: "Create",
|
|
81
84
|
blurb: "Give your works a home of their own, with its own page and name.",
|
|
82
85
|
title: "Create NFT Collection",
|
|
83
86
|
subtitle: "Group your NFTs under a shared identity",
|
|
84
87
|
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.",
|
|
85
|
-
features: ["
|
|
86
|
-
example: "
|
|
88
|
+
features: ["Your own branded page", "Add new work anytime", "One link to share with fans"],
|
|
89
|
+
example: "A photography portfolio, a music catalog, a comic series",
|
|
87
90
|
icon: Layers,
|
|
88
91
|
gradient: "from-violet-500/10 via-purple-400/4 to-transparent",
|
|
89
92
|
borderColor: "border-violet-500/20",
|
|
@@ -96,12 +99,13 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
96
99
|
},
|
|
97
100
|
{
|
|
98
101
|
key: "ip-collection-1155",
|
|
102
|
+
cta: "Create",
|
|
99
103
|
blurb: "Set up a collection made for numbered copies of your work.",
|
|
100
104
|
title: "Limited Editions Collections",
|
|
101
105
|
subtitle: "Deploy a contract for multi-copy NFT releases",
|
|
102
106
|
description: "Create a collection built for editions \u2014 release music tracks, art prints, or any IP in numbered multiples. Each edition token is tradeable on Medialane.",
|
|
103
|
-
features: ["
|
|
104
|
-
example: "
|
|
107
|
+
features: ["Numbered copies, set by you", "Fans collect and trade", "One home for every release"],
|
|
108
|
+
example: "50 copies of a limited print, a music EP in 100 editions",
|
|
105
109
|
icon: Layers,
|
|
106
110
|
gradient: "from-violet-500/10 via-purple-400/4 to-transparent",
|
|
107
111
|
borderColor: "border-violet-500/20",
|
|
@@ -114,12 +118,13 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
114
118
|
},
|
|
115
119
|
{
|
|
116
120
|
key: "mint-editions",
|
|
121
|
+
cta: "Mint",
|
|
117
122
|
blurb: "Release a new piece in as many copies as you choose.",
|
|
118
123
|
title: "Mint Limited Edition",
|
|
119
124
|
subtitle: "Add new editions to an existing collection",
|
|
120
125
|
description: "Pick one of your Limited Edition contracts, upload artwork, set the supply, and release to collectors \u2014 all in a few clicks.",
|
|
121
|
-
features: ["
|
|
122
|
-
example: "
|
|
126
|
+
features: ["You choose how many copies", "Numbered automatically", "Ready to sell right away"],
|
|
127
|
+
example: "Drop 25 numbered prints from your art series",
|
|
123
128
|
icon: PlusCircle,
|
|
124
129
|
gradient: "from-fuchsia-500/10 via-violet-400/4 to-transparent",
|
|
125
130
|
borderColor: "border-fuchsia-500/20",
|
|
@@ -132,12 +137,13 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
132
137
|
},
|
|
133
138
|
{
|
|
134
139
|
key: "remix-asset",
|
|
140
|
+
cta: "Browse",
|
|
135
141
|
blurb: "Create from another work \u2014 credit and royalties are handled for you.",
|
|
136
142
|
title: "Remix Asset",
|
|
137
143
|
subtitle: "Derivative works with on-chain attribution",
|
|
138
144
|
description: "Create a licensed derivative of any digital asset with full provenance and attribution flowing back to the original creator on-chain.",
|
|
139
|
-
features: ["
|
|
140
|
-
example: "
|
|
145
|
+
features: ["Credit handled automatically", "Royalties flow to the original", "License respected at mint"],
|
|
146
|
+
example: "A remix of a song, an artwork inspired by an original",
|
|
141
147
|
icon: GitBranch,
|
|
142
148
|
gradient: "from-rose-500/10 via-pink-400/4 to-transparent",
|
|
143
149
|
borderColor: "border-rose-500/20",
|
|
@@ -151,12 +157,19 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
151
157
|
// ── Launch ────────────────────────────────────────────────────────────────
|
|
152
158
|
{
|
|
153
159
|
key: "pop-protocol",
|
|
160
|
+
cta: "Create",
|
|
154
161
|
blurb: "Hand out badges your attendees keep forever.",
|
|
155
162
|
title: "POP Protocol",
|
|
156
163
|
subtitle: "Proof-of-participation for events & communities",
|
|
157
164
|
description: "Issue soulbound credentials to your community \u2014 one non-transferable badge per wallet, permanently on-chain. No transferring, no faking.",
|
|
158
|
-
features: [
|
|
159
|
-
|
|
165
|
+
features: [
|
|
166
|
+
"Badges stay with attendees forever",
|
|
167
|
+
"One badge per person \u2014 no faking",
|
|
168
|
+
"Free for your community to claim",
|
|
169
|
+
"Invite-list gating optional",
|
|
170
|
+
"Branded event page to share"
|
|
171
|
+
],
|
|
172
|
+
example: "Hackathon attendance badge, community membership, conference pass",
|
|
160
173
|
icon: Award,
|
|
161
174
|
gradient: "from-emerald-500/10 via-green-400/4 to-transparent",
|
|
162
175
|
borderColor: "border-emerald-500/20",
|
|
@@ -170,12 +183,13 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
170
183
|
},
|
|
171
184
|
{
|
|
172
185
|
key: "collection-drop",
|
|
186
|
+
cta: "Launch",
|
|
173
187
|
blurb: "Set a price, a window, and a limited run \u2014 then open the doors.",
|
|
174
188
|
title: "Collection Drop",
|
|
175
189
|
subtitle: "Timed NFT releases with mint windows",
|
|
176
190
|
description: "Launch a time-gated mint campaign \u2014 set a price, supply cap, start and end time, and let collectors mint directly from your drop page.",
|
|
177
|
-
features: ["
|
|
178
|
-
example: "
|
|
191
|
+
features: ["You set price and supply", "Opens and closes on your schedule", "Branded drop page to share"],
|
|
192
|
+
example: "A 48-hour drop of 200 pieces at 5 USDC each",
|
|
179
193
|
icon: Package,
|
|
180
194
|
gradient: "from-orange-500/10 via-amber-400/4 to-transparent",
|
|
181
195
|
borderColor: "border-orange-500/20",
|
|
@@ -189,6 +203,7 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
189
203
|
},
|
|
190
204
|
{
|
|
191
205
|
key: "ip-tickets",
|
|
206
|
+
cta: "Sell",
|
|
192
207
|
blurb: "Sell tickets to your shows and events.",
|
|
193
208
|
title: "IP Tickets",
|
|
194
209
|
subtitle: "Gate real-world experiences with NFTs",
|
|
@@ -205,6 +220,7 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
205
220
|
},
|
|
206
221
|
{
|
|
207
222
|
key: "membership",
|
|
223
|
+
cta: "Create",
|
|
208
224
|
blurb: "Passes that unlock more for your closest fans.",
|
|
209
225
|
title: "Membership",
|
|
210
226
|
subtitle: "Token-gated access passes",
|
|
@@ -222,6 +238,7 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
222
238
|
// ── Monetize ─────────────────────────────────────────────────────────────
|
|
223
239
|
{
|
|
224
240
|
key: "subscriptions",
|
|
241
|
+
cta: "Start",
|
|
225
242
|
blurb: "Recurring support from your audience.",
|
|
226
243
|
title: "Subscriptions",
|
|
227
244
|
subtitle: "Recurring on-chain revenue",
|
|
@@ -238,6 +255,7 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
238
255
|
},
|
|
239
256
|
{
|
|
240
257
|
key: "ip-coins",
|
|
258
|
+
cta: "Launch",
|
|
241
259
|
blurb: "Let fans own a piece of your catalog.",
|
|
242
260
|
title: "IP Coins",
|
|
243
261
|
subtitle: "Fractional ownership of intellectual property",
|
|
@@ -254,11 +272,13 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
254
272
|
},
|
|
255
273
|
{
|
|
256
274
|
key: "creator-coins",
|
|
275
|
+
cta: "Launch",
|
|
257
276
|
blurb: "Launch your coin in a few clicks \u2014 and stay in control of it.",
|
|
258
277
|
title: "Creator Coin",
|
|
259
278
|
subtitle: "Your own coin, your liquidity",
|
|
260
279
|
description: "Launch a standard ERC-20 coin tied to your creative work, paired with a public Ekubo liquidity pool. You set the supply and allocation \u2014 and you stay in control of the liquidity.",
|
|
261
|
-
features: ["
|
|
280
|
+
features: ["Launch in a few clicks", "You keep control of the liquidity", "Traded on a public pool"],
|
|
281
|
+
example: "A fan coin for your channel, a coin for your music project",
|
|
262
282
|
icon: TrendingUp,
|
|
263
283
|
gradient: "from-pink-500/6 via-rose-400/2 to-transparent",
|
|
264
284
|
borderColor: "border-pink-500/20",
|
|
@@ -272,11 +292,13 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
272
292
|
// ── Claims ────────────────────────────────────────────────────────────────
|
|
273
293
|
{
|
|
274
294
|
key: "claim-memecoin",
|
|
295
|
+
cta: "Claim",
|
|
275
296
|
blurb: "Already launched a coin? Add it to your Medialane profile.",
|
|
276
297
|
title: "Claim Memecoin",
|
|
277
298
|
subtitle: "Bring your Starknet coin to Medialane",
|
|
278
299
|
description: "Already launched a coin on Starknet (unrug or partner)? Claim it to add it to Medialane \u2014 reviewed by our team, then live on the Coins page and your profile.",
|
|
279
|
-
features: ["
|
|
300
|
+
features: ["Bring a coin you already launched", "Reviewed by our team", "Featured on the Coins page"],
|
|
301
|
+
example: "Your unrug memecoin, listed on your creator profile",
|
|
280
302
|
icon: Coins,
|
|
281
303
|
gradient: "from-orange-500/10 via-amber-400/4 to-transparent",
|
|
282
304
|
borderColor: "border-orange-500/20",
|
|
@@ -289,11 +311,13 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
289
311
|
},
|
|
290
312
|
{
|
|
291
313
|
key: "claim-username",
|
|
314
|
+
cta: "Claim",
|
|
292
315
|
blurb: "Reserve your name and get your own creator page.",
|
|
293
316
|
title: "Claim Username",
|
|
294
317
|
subtitle: "Reserve your creator page URL",
|
|
295
318
|
description: "Claim your unique username and get a shareable creator page \u2014 your public portfolio at a clean, memorable URL. Free, and yours.",
|
|
296
319
|
features: ["Free claim", "Shareable creator page", "Your public portfolio"],
|
|
320
|
+
example: "medialane.io/your-name \u2014 your portfolio at your own name",
|
|
297
321
|
icon: AtSign,
|
|
298
322
|
gradient: "from-violet-500/10 via-purple-400/4 to-transparent",
|
|
299
323
|
borderColor: "border-violet-500/20",
|
|
@@ -306,11 +330,13 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
306
330
|
},
|
|
307
331
|
{
|
|
308
332
|
key: "claim-collection",
|
|
333
|
+
cta: "Claim",
|
|
309
334
|
blurb: "Made a collection somewhere else? Bring it to your profile.",
|
|
310
335
|
title: "Claim Collection",
|
|
311
336
|
subtitle: "Import an existing Starknet collection",
|
|
312
337
|
description: "Already deployed an ERC-721 collection on Starknet? Claim it to link it to your Medialane profile and give it a branded collection page.",
|
|
313
|
-
features: ["
|
|
338
|
+
features: ["Bring an existing collection", "Linked to your profile", "Branded collection page"],
|
|
339
|
+
example: "A collection you deployed elsewhere joins your profile",
|
|
314
340
|
icon: FolderInput,
|
|
315
341
|
gradient: "from-blue-500/10 via-sky-400/4 to-transparent",
|
|
316
342
|
borderColor: "border-blue-500/20",
|
|
@@ -320,6 +346,24 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
|
|
|
320
346
|
status: "live",
|
|
321
347
|
category: "create",
|
|
322
348
|
group: "claims"
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
key: "claim-collection-name",
|
|
352
|
+
cta: "Claim",
|
|
353
|
+
blurb: "Give your collection a clean, memorable web address of its own.",
|
|
354
|
+
title: "Claim Collection Name",
|
|
355
|
+
subtitle: "Reserve your collection page URL",
|
|
356
|
+
description: "Claim a custom name for your collection page \u2014 a clean, shareable URL your fans can remember, instead of a long contract address.",
|
|
357
|
+
features: ["Free claim", "Clean shareable URL", "Easy to remember and share"],
|
|
358
|
+
example: "medialane.io/collections/your-collection",
|
|
359
|
+
icon: Link2,
|
|
360
|
+
gradient: "from-pink-500/10 via-rose-400/4 to-transparent",
|
|
361
|
+
borderColor: "border-pink-500/20",
|
|
362
|
+
iconColor: "text-pink-500",
|
|
363
|
+
badge: "Claim",
|
|
364
|
+
status: "live",
|
|
365
|
+
category: "create",
|
|
366
|
+
group: "claims"
|
|
323
367
|
}
|
|
324
368
|
];
|
|
325
369
|
export {
|