@medialane/ui 0.69.0 → 0.71.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.
@@ -62,20 +62,14 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
62
62
  {
63
63
  key: "nfts",
64
64
  cta: "Create",
65
- blurb: "Publish one-of-a-kind works and keep them in collections of your own.",
66
- title: "NFTs",
67
- subtitle: "Singular works and your own collections",
68
- 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.",
69
- features: ["One-of-a-kind works", "Your own branded collections", "You set the license terms"],
65
+ blurb: "Publish each work as a single copy in a collection you own.",
66
+ title: "Single Editions",
67
+ subtitle: "Each work is minted once",
68
+ description: "Publish any photo, video, audio, or document, minted once inside your collection. Licensing, provenance, and ownership live on-chain.",
69
+ features: ["One mint per work", "Collections with their own page and name", "You set the license terms"],
70
70
  example: "A song, a photo, an ebook, a short film",
71
71
  icon: import_lucide_react.ImagePlus,
72
- gradient: "from-blue-500/10 via-sky-400/4 to-transparent",
73
- borderColor: "border-blue-500/20",
74
- iconColor: "text-blue-500",
75
- buttonColor: "bg-brand-blue hover:bg-brand-blue/90",
76
- badge: "Create",
77
72
  status: "live",
78
- category: "create",
79
73
  group: "nfts"
80
74
  },
81
75
  {
@@ -88,13 +82,7 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
88
82
  features: ["Numbered copies, set by you", "Fans collect and trade", "One home for every release"],
89
83
  example: "50 copies of a limited print, a music EP in 100 editions",
90
84
  icon: import_lucide_react.Layers,
91
- gradient: "from-violet-500/10 via-purple-400/4 to-transparent",
92
- borderColor: "border-violet-500/20",
93
- iconColor: "text-violet-500",
94
- buttonColor: "bg-brand-purple hover:bg-brand-purple/90",
95
- badge: "Create",
96
85
  status: "live",
97
- category: "create",
98
86
  group: "limited-editions"
99
87
  },
100
88
  {
@@ -107,13 +95,7 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
107
95
  features: ["Credit handled automatically", "Royalties flow to the original", "License respected at mint"],
108
96
  example: "A remix of a song, an artwork inspired by an original",
109
97
  icon: import_lucide_react.GitBranch,
110
- gradient: "from-rose-500/10 via-pink-400/4 to-transparent",
111
- borderColor: "border-rose-500/20",
112
- iconColor: "text-rose-500",
113
- buttonColor: "bg-brand-rose hover:bg-brand-rose/90",
114
- badge: "Create",
115
98
  status: "live",
116
- category: "create",
117
99
  group: "nfts"
118
100
  },
119
101
  // ── Launch ────────────────────────────────────────────────────────────────
@@ -127,14 +109,8 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
127
109
  features: ["Free for your community to claim", "Invite-list gating optional", "Branded claim page to share"],
128
110
  example: "Hackathon attendance badge, community membership, conference pass",
129
111
  icon: import_lucide_react.Award,
130
- gradient: "from-emerald-500/10 via-green-400/4 to-transparent",
131
- borderColor: "border-emerald-500/20",
132
- iconColor: "text-emerald-500",
133
- buttonColor: "bg-green-600 hover:bg-green-700",
134
- badge: "Launch",
135
112
  browseLinkLabel: "Browse badges",
136
113
  status: "live",
137
- category: "launch",
138
114
  group: "community"
139
115
  },
140
116
  {
@@ -147,14 +123,8 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
147
123
  features: ["You set price and supply", "Opens and closes on your schedule", "Branded drop page to share"],
148
124
  example: "A 48-hour drop of 200 pieces at 5 USDC each",
149
125
  icon: import_lucide_react.Package,
150
- gradient: "from-orange-500/10 via-amber-400/4 to-transparent",
151
- borderColor: "border-orange-500/20",
152
- iconColor: "text-orange-500",
153
- buttonColor: "bg-orange-600 hover:bg-orange-700",
154
- badge: "Launch",
155
126
  browseLinkLabel: "Browse drops",
156
127
  status: "live",
157
- category: "launch",
158
128
  group: "nfts"
159
129
  },
160
130
  {
@@ -166,16 +136,10 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
166
136
  description: "Create tickets with their own supply and validity window, then mint them to attendees. Every ticket is verifiable on-chain.",
167
137
  features: ["Verifiable at the door", "Supply and validity you set", TICKETS_TRANSFERABLE_FEATURE],
168
138
  icon: import_lucide_react.Ticket,
169
- gradient: "from-teal-500/10 via-cyan-400/4 to-transparent",
170
- borderColor: "border-teal-500/20",
171
- iconColor: "text-teal-500",
172
- buttonColor: "bg-teal-600 hover:bg-teal-700",
173
- badge: "Launch",
174
139
  browseLinkLabel: "Browse tickets",
175
140
  // Deployed to Starknet mainnet 2026-07-02 — see
176
141
  // medialane-core/docs/deployments.md
177
142
  status: "live",
178
- category: "launch",
179
143
  group: "community"
180
144
  },
181
145
  {
@@ -187,16 +151,10 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
187
151
  description: "Create a club with an on-chain membership card. Set an entry fee and a member cap, and open or close joining anytime.",
188
152
  features: ["On-chain membership card", "Optional entry fee", "Open or close joining anytime"],
189
153
  icon: import_lucide_react.Users,
190
- gradient: "from-indigo-500/10 via-violet-400/4 to-transparent",
191
- borderColor: "border-indigo-500/20",
192
- iconColor: "text-indigo-400",
193
- buttonColor: "bg-indigo-600 hover:bg-indigo-700",
194
- badge: "Launch",
195
154
  browseLinkLabel: "Browse clubs",
196
155
  // Deployed to Starknet mainnet 2026-07-02 — see
197
156
  // medialane-core/docs/deployments.md
198
157
  status: "live",
199
- category: "launch",
200
158
  group: "community"
201
159
  },
202
160
  {
@@ -209,16 +167,10 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
209
167
  features: ["Direct settlement", "Owner-verified on-chain", "Open bidding or one invited sponsor"],
210
168
  example: "Sponsor a song, an artwork, or a patent for a license",
211
169
  icon: import_lucide_react.Handshake,
212
- gradient: "from-rose-500/10 via-pink-400/4 to-transparent",
213
- borderColor: "border-rose-500/20",
214
- iconColor: "text-rose-500",
215
- buttonColor: "bg-brand-rose hover:bg-brand-rose/90",
216
- badge: "Launch",
217
170
  browseLinkLabel: "Browse offers",
218
171
  // Deployed to Starknet mainnet 2026-07-02 — see
219
172
  // medialane-core/docs/deployments.md
220
173
  status: "live",
221
- category: "launch",
222
174
  group: "community"
223
175
  },
224
176
  // ── Monetize ─────────────────────────────────────────────────────────────
@@ -232,13 +184,7 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
232
184
  features: ["Launch in a few clicks", "You keep control of the liquidity", "Traded on a public pool"],
233
185
  example: "A fan coin for your channel, a coin for your music project",
234
186
  icon: import_lucide_react.TrendingUp,
235
- gradient: "from-pink-500/6 via-rose-400/2 to-transparent",
236
- borderColor: "border-pink-500/20",
237
- iconColor: "text-pink-400",
238
- buttonColor: "bg-brand-rose hover:bg-brand-rose/90",
239
- badge: "Launch",
240
187
  status: "live",
241
- category: "monetize",
242
188
  group: "coins"
243
189
  },
244
190
  // ── Claims ────────────────────────────────────────────────────────────────
@@ -252,13 +198,7 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
252
198
  features: ["Bring a coin you already launched", "Reviewed by our team", "Featured on the Coins page"],
253
199
  example: "Your unrug memecoin, listed on your creator profile",
254
200
  icon: import_lucide_react.Coins,
255
- gradient: "from-orange-500/10 via-amber-400/4 to-transparent",
256
- borderColor: "border-orange-500/20",
257
- iconColor: "text-orange-500",
258
- buttonColor: "bg-orange-600 hover:bg-orange-700",
259
- badge: "Claim",
260
201
  status: "live",
261
- category: "monetize",
262
202
  group: "coins"
263
203
  },
264
204
  {
@@ -267,17 +207,11 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
267
207
  blurb: "Reserve your name and get your own creator page.",
268
208
  title: "Claim Username",
269
209
  subtitle: "Reserve your creator page URL",
270
- description: "Claim your unique username and get a shareable creator page \u2014 your public portfolio at a clean, memorable URL. Free, and yours.",
210
+ description: "Claim your username to get a shareable creator page, your public portfolio at a clean, memorable URL.",
271
211
  features: ["Free claim", "Shareable creator page", "Your public portfolio"],
272
212
  example: "medialane.io/your-name \u2014 your portfolio at your own name",
273
213
  icon: import_lucide_react.AtSign,
274
- gradient: "from-violet-500/10 via-purple-400/4 to-transparent",
275
- borderColor: "border-violet-500/20",
276
- iconColor: "text-violet-500",
277
- buttonColor: "bg-brand-purple hover:bg-brand-purple/90",
278
- badge: "Claim",
279
214
  status: "live",
280
- category: "create",
281
215
  group: "claims"
282
216
  },
283
217
  {
@@ -290,13 +224,7 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
290
224
  features: ["Bring an existing collection", "Linked to your profile", "Branded collection page"],
291
225
  example: "A collection you made elsewhere joins your profile",
292
226
  icon: import_lucide_react.FolderInput,
293
- gradient: "from-blue-500/10 via-sky-400/4 to-transparent",
294
- borderColor: "border-blue-500/20",
295
- iconColor: "text-blue-500",
296
- buttonColor: "bg-brand-blue hover:bg-brand-blue/90",
297
- badge: "Claim",
298
227
  status: "live",
299
- category: "create",
300
228
  group: "claims"
301
229
  },
302
230
  {
@@ -309,12 +237,7 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
309
237
  features: ["Free claim", "Clean shareable URL", "Easy to remember and share"],
310
238
  example: "medialane.io/collections/your-collection",
311
239
  icon: import_lucide_react.Link2,
312
- gradient: "from-pink-500/10 via-rose-400/4 to-transparent",
313
- borderColor: "border-pink-500/20",
314
- iconColor: "text-pink-500",
315
- badge: "Claim",
316
240
  status: "live",
317
- category: "create",
318
241
  group: "claims"
319
242
  }
320
243
  ];
@@ -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,\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":[]}
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\";\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\n/** All colors on launchpad surfaces come from the design system: the group\n * accents in `GROUP_SLICES` / `SERVICE_HUES` (brand tokens only). Service\n * definitions carry NO style fields — content only. */\nexport interface ServiceDefinition {\n key: string;\n title: string;\n subtitle: string;\n description: string;\n features: string[];\n icon: LucideIcon;\n status: ServiceStatus;\n group: ServiceGroup;\n /** The ONE creator-language sentence the card shows (no jargon). */\n blurb: string;\n /** Single-verb action label (never repeats the title). */\n cta: string;\n /** Concrete usage example (legacy long-card layout; unused by the current 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 each work as a single copy in a collection you own.\",\n title: \"Single Editions\",\n subtitle: \"Each work is minted once\",\n description:\n \"Publish any photo, video, audio, or document, minted once inside your collection. Licensing, provenance, and ownership live on-chain.\",\n features: [\"One mint per work\", \"Collections with their own page and name\", \"You set the license terms\"],\n example: \"A song, a photo, an ebook, a short film\",\n icon: ImagePlus,\n status: \"live\",\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 status: \"live\",\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 status: \"live\",\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 browseLinkLabel: \"Browse badges\",\n status: \"live\",\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 browseLinkLabel: \"Browse drops\",\n status: \"live\",\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 browseLinkLabel: \"Browse tickets\",\n // Deployed to Starknet mainnet 2026-07-02 — see\n // medialane-core/docs/deployments.md\n status: \"live\",\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 browseLinkLabel: \"Browse clubs\",\n // Deployed to Starknet mainnet 2026-07-02 — see\n // medialane-core/docs/deployments.md\n status: \"live\",\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 browseLinkLabel: \"Browse offers\",\n // Deployed to Starknet mainnet 2026-07-02 — see\n // medialane-core/docs/deployments.md\n status: \"live\",\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 status: \"live\",\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 status: \"live\",\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 username to get a shareable creator page, your public portfolio at a clean, memorable URL.\",\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 status: \"live\",\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 status: \"live\",\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 status: \"live\",\n group: \"claims\",\n },\n];\n"],"mappings":"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","names":[]}
@@ -1,7 +1,6 @@
1
1
  import { LucideIcon } from 'lucide-react';
2
2
 
3
3
  type ServiceStatus = "live" | "building" | "soon";
4
- type ServiceCategory = "create" | "launch" | "monetize";
5
4
  type ServiceGroup = "nfts" | "limited-editions" | "coins" | "community" | "claims" | "coming-soon";
6
5
  interface ServiceGroupDefinition {
7
6
  key: ServiceGroup;
@@ -13,6 +12,9 @@ interface ServiceGroupDefinition {
13
12
  }
14
13
  /** Ordered — drives the filter pills and the grid's tag order. */
15
14
  declare const LAUNCHPAD_SERVICE_GROUPS: ServiceGroupDefinition[];
15
+ /** All colors on launchpad surfaces come from the design system: the group
16
+ * accents in `GROUP_SLICES` / `SERVICE_HUES` (brand tokens only). Service
17
+ * definitions carry NO style fields — content only. */
16
18
  interface ServiceDefinition {
17
19
  key: string;
18
20
  title: string;
@@ -20,23 +22,17 @@ interface ServiceDefinition {
20
22
  description: string;
21
23
  features: string[];
22
24
  icon: LucideIcon;
23
- gradient: string;
24
- borderColor: string;
25
- iconColor: string;
26
- buttonColor?: string;
27
- badge: string;
28
25
  status: ServiceStatus;
29
- category: ServiceCategory;
30
26
  group: ServiceGroup;
31
27
  /** The ONE creator-language sentence the card shows (no jargon). */
32
28
  blurb: string;
33
- /** Single-verb action label for the card's gradient pill (never repeats the title). */
29
+ /** Single-verb action label (never repeats the title). */
34
30
  cta: string;
35
- /** Concrete usage example (legacy long-card layout; unused by the 0.9.0 card). */
31
+ /** Concrete usage example (legacy long-card layout; unused by the current card). */
36
32
  example?: string;
37
33
  /** Secondary browse link label — injected app adds the href */
38
34
  browseLinkLabel?: string;
39
35
  }
40
36
  declare const LAUNCHPAD_SERVICE_DEFINITIONS: ServiceDefinition[];
41
37
 
42
- export { LAUNCHPAD_SERVICE_DEFINITIONS, LAUNCHPAD_SERVICE_GROUPS, type ServiceCategory, type ServiceDefinition, type ServiceGroup, type ServiceGroupDefinition, type ServiceStatus };
38
+ export { LAUNCHPAD_SERVICE_DEFINITIONS, LAUNCHPAD_SERVICE_GROUPS, type ServiceDefinition, type ServiceGroup, type ServiceGroupDefinition, type ServiceStatus };
@@ -1,7 +1,6 @@
1
1
  import { LucideIcon } from 'lucide-react';
2
2
 
3
3
  type ServiceStatus = "live" | "building" | "soon";
4
- type ServiceCategory = "create" | "launch" | "monetize";
5
4
  type ServiceGroup = "nfts" | "limited-editions" | "coins" | "community" | "claims" | "coming-soon";
6
5
  interface ServiceGroupDefinition {
7
6
  key: ServiceGroup;
@@ -13,6 +12,9 @@ interface ServiceGroupDefinition {
13
12
  }
14
13
  /** Ordered — drives the filter pills and the grid's tag order. */
15
14
  declare const LAUNCHPAD_SERVICE_GROUPS: ServiceGroupDefinition[];
15
+ /** All colors on launchpad surfaces come from the design system: the group
16
+ * accents in `GROUP_SLICES` / `SERVICE_HUES` (brand tokens only). Service
17
+ * definitions carry NO style fields — content only. */
16
18
  interface ServiceDefinition {
17
19
  key: string;
18
20
  title: string;
@@ -20,23 +22,17 @@ interface ServiceDefinition {
20
22
  description: string;
21
23
  features: string[];
22
24
  icon: LucideIcon;
23
- gradient: string;
24
- borderColor: string;
25
- iconColor: string;
26
- buttonColor?: string;
27
- badge: string;
28
25
  status: ServiceStatus;
29
- category: ServiceCategory;
30
26
  group: ServiceGroup;
31
27
  /** The ONE creator-language sentence the card shows (no jargon). */
32
28
  blurb: string;
33
- /** Single-verb action label for the card's gradient pill (never repeats the title). */
29
+ /** Single-verb action label (never repeats the title). */
34
30
  cta: string;
35
- /** Concrete usage example (legacy long-card layout; unused by the 0.9.0 card). */
31
+ /** Concrete usage example (legacy long-card layout; unused by the current card). */
36
32
  example?: string;
37
33
  /** Secondary browse link label — injected app adds the href */
38
34
  browseLinkLabel?: string;
39
35
  }
40
36
  declare const LAUNCHPAD_SERVICE_DEFINITIONS: ServiceDefinition[];
41
37
 
42
- export { LAUNCHPAD_SERVICE_DEFINITIONS, LAUNCHPAD_SERVICE_GROUPS, type ServiceCategory, type ServiceDefinition, type ServiceGroup, type ServiceGroupDefinition, type ServiceStatus };
38
+ export { LAUNCHPAD_SERVICE_DEFINITIONS, LAUNCHPAD_SERVICE_GROUPS, type ServiceDefinition, type ServiceGroup, type ServiceGroupDefinition, type ServiceStatus };
@@ -52,20 +52,14 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
52
52
  {
53
53
  key: "nfts",
54
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"],
55
+ blurb: "Publish each work as a single copy in a collection you own.",
56
+ title: "Single Editions",
57
+ subtitle: "Each work is minted once",
58
+ description: "Publish any photo, video, audio, or document, minted once inside your collection. Licensing, provenance, and ownership live on-chain.",
59
+ features: ["One mint per work", "Collections with their own page and name", "You set the license terms"],
60
60
  example: "A song, a photo, an ebook, a short film",
61
61
  icon: ImagePlus,
62
- gradient: "from-blue-500/10 via-sky-400/4 to-transparent",
63
- borderColor: "border-blue-500/20",
64
- iconColor: "text-blue-500",
65
- buttonColor: "bg-brand-blue hover:bg-brand-blue/90",
66
- badge: "Create",
67
62
  status: "live",
68
- category: "create",
69
63
  group: "nfts"
70
64
  },
71
65
  {
@@ -78,13 +72,7 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
78
72
  features: ["Numbered copies, set by you", "Fans collect and trade", "One home for every release"],
79
73
  example: "50 copies of a limited print, a music EP in 100 editions",
80
74
  icon: Layers,
81
- gradient: "from-violet-500/10 via-purple-400/4 to-transparent",
82
- borderColor: "border-violet-500/20",
83
- iconColor: "text-violet-500",
84
- buttonColor: "bg-brand-purple hover:bg-brand-purple/90",
85
- badge: "Create",
86
75
  status: "live",
87
- category: "create",
88
76
  group: "limited-editions"
89
77
  },
90
78
  {
@@ -97,13 +85,7 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
97
85
  features: ["Credit handled automatically", "Royalties flow to the original", "License respected at mint"],
98
86
  example: "A remix of a song, an artwork inspired by an original",
99
87
  icon: GitBranch,
100
- gradient: "from-rose-500/10 via-pink-400/4 to-transparent",
101
- borderColor: "border-rose-500/20",
102
- iconColor: "text-rose-500",
103
- buttonColor: "bg-brand-rose hover:bg-brand-rose/90",
104
- badge: "Create",
105
88
  status: "live",
106
- category: "create",
107
89
  group: "nfts"
108
90
  },
109
91
  // ── Launch ────────────────────────────────────────────────────────────────
@@ -117,14 +99,8 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
117
99
  features: ["Free for your community to claim", "Invite-list gating optional", "Branded claim page to share"],
118
100
  example: "Hackathon attendance badge, community membership, conference pass",
119
101
  icon: Award,
120
- gradient: "from-emerald-500/10 via-green-400/4 to-transparent",
121
- borderColor: "border-emerald-500/20",
122
- iconColor: "text-emerald-500",
123
- buttonColor: "bg-green-600 hover:bg-green-700",
124
- badge: "Launch",
125
102
  browseLinkLabel: "Browse badges",
126
103
  status: "live",
127
- category: "launch",
128
104
  group: "community"
129
105
  },
130
106
  {
@@ -137,14 +113,8 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
137
113
  features: ["You set price and supply", "Opens and closes on your schedule", "Branded drop page to share"],
138
114
  example: "A 48-hour drop of 200 pieces at 5 USDC each",
139
115
  icon: Package,
140
- gradient: "from-orange-500/10 via-amber-400/4 to-transparent",
141
- borderColor: "border-orange-500/20",
142
- iconColor: "text-orange-500",
143
- buttonColor: "bg-orange-600 hover:bg-orange-700",
144
- badge: "Launch",
145
116
  browseLinkLabel: "Browse drops",
146
117
  status: "live",
147
- category: "launch",
148
118
  group: "nfts"
149
119
  },
150
120
  {
@@ -156,16 +126,10 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
156
126
  description: "Create tickets with their own supply and validity window, then mint them to attendees. Every ticket is verifiable on-chain.",
157
127
  features: ["Verifiable at the door", "Supply and validity you set", TICKETS_TRANSFERABLE_FEATURE],
158
128
  icon: Ticket,
159
- gradient: "from-teal-500/10 via-cyan-400/4 to-transparent",
160
- borderColor: "border-teal-500/20",
161
- iconColor: "text-teal-500",
162
- buttonColor: "bg-teal-600 hover:bg-teal-700",
163
- badge: "Launch",
164
129
  browseLinkLabel: "Browse tickets",
165
130
  // Deployed to Starknet mainnet 2026-07-02 — see
166
131
  // medialane-core/docs/deployments.md
167
132
  status: "live",
168
- category: "launch",
169
133
  group: "community"
170
134
  },
171
135
  {
@@ -177,16 +141,10 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
177
141
  description: "Create a club with an on-chain membership card. Set an entry fee and a member cap, and open or close joining anytime.",
178
142
  features: ["On-chain membership card", "Optional entry fee", "Open or close joining anytime"],
179
143
  icon: Users,
180
- gradient: "from-indigo-500/10 via-violet-400/4 to-transparent",
181
- borderColor: "border-indigo-500/20",
182
- iconColor: "text-indigo-400",
183
- buttonColor: "bg-indigo-600 hover:bg-indigo-700",
184
- badge: "Launch",
185
144
  browseLinkLabel: "Browse clubs",
186
145
  // Deployed to Starknet mainnet 2026-07-02 — see
187
146
  // medialane-core/docs/deployments.md
188
147
  status: "live",
189
- category: "launch",
190
148
  group: "community"
191
149
  },
192
150
  {
@@ -199,16 +157,10 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
199
157
  features: ["Direct settlement", "Owner-verified on-chain", "Open bidding or one invited sponsor"],
200
158
  example: "Sponsor a song, an artwork, or a patent for a license",
201
159
  icon: Handshake,
202
- gradient: "from-rose-500/10 via-pink-400/4 to-transparent",
203
- borderColor: "border-rose-500/20",
204
- iconColor: "text-rose-500",
205
- buttonColor: "bg-brand-rose hover:bg-brand-rose/90",
206
- badge: "Launch",
207
160
  browseLinkLabel: "Browse offers",
208
161
  // Deployed to Starknet mainnet 2026-07-02 — see
209
162
  // medialane-core/docs/deployments.md
210
163
  status: "live",
211
- category: "launch",
212
164
  group: "community"
213
165
  },
214
166
  // ── Monetize ─────────────────────────────────────────────────────────────
@@ -222,13 +174,7 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
222
174
  features: ["Launch in a few clicks", "You keep control of the liquidity", "Traded on a public pool"],
223
175
  example: "A fan coin for your channel, a coin for your music project",
224
176
  icon: TrendingUp,
225
- gradient: "from-pink-500/6 via-rose-400/2 to-transparent",
226
- borderColor: "border-pink-500/20",
227
- iconColor: "text-pink-400",
228
- buttonColor: "bg-brand-rose hover:bg-brand-rose/90",
229
- badge: "Launch",
230
177
  status: "live",
231
- category: "monetize",
232
178
  group: "coins"
233
179
  },
234
180
  // ── Claims ────────────────────────────────────────────────────────────────
@@ -242,13 +188,7 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
242
188
  features: ["Bring a coin you already launched", "Reviewed by our team", "Featured on the Coins page"],
243
189
  example: "Your unrug memecoin, listed on your creator profile",
244
190
  icon: Coins,
245
- gradient: "from-orange-500/10 via-amber-400/4 to-transparent",
246
- borderColor: "border-orange-500/20",
247
- iconColor: "text-orange-500",
248
- buttonColor: "bg-orange-600 hover:bg-orange-700",
249
- badge: "Claim",
250
191
  status: "live",
251
- category: "monetize",
252
192
  group: "coins"
253
193
  },
254
194
  {
@@ -257,17 +197,11 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
257
197
  blurb: "Reserve your name and get your own creator page.",
258
198
  title: "Claim Username",
259
199
  subtitle: "Reserve your creator page URL",
260
- description: "Claim your unique username and get a shareable creator page \u2014 your public portfolio at a clean, memorable URL. Free, and yours.",
200
+ description: "Claim your username to get a shareable creator page, your public portfolio at a clean, memorable URL.",
261
201
  features: ["Free claim", "Shareable creator page", "Your public portfolio"],
262
202
  example: "medialane.io/your-name \u2014 your portfolio at your own name",
263
203
  icon: AtSign,
264
- gradient: "from-violet-500/10 via-purple-400/4 to-transparent",
265
- borderColor: "border-violet-500/20",
266
- iconColor: "text-violet-500",
267
- buttonColor: "bg-brand-purple hover:bg-brand-purple/90",
268
- badge: "Claim",
269
204
  status: "live",
270
- category: "create",
271
205
  group: "claims"
272
206
  },
273
207
  {
@@ -280,13 +214,7 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
280
214
  features: ["Bring an existing collection", "Linked to your profile", "Branded collection page"],
281
215
  example: "A collection you made elsewhere joins your profile",
282
216
  icon: FolderInput,
283
- gradient: "from-blue-500/10 via-sky-400/4 to-transparent",
284
- borderColor: "border-blue-500/20",
285
- iconColor: "text-blue-500",
286
- buttonColor: "bg-brand-blue hover:bg-brand-blue/90",
287
- badge: "Claim",
288
217
  status: "live",
289
- category: "create",
290
218
  group: "claims"
291
219
  },
292
220
  {
@@ -299,12 +227,7 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
299
227
  features: ["Free claim", "Clean shareable URL", "Easy to remember and share"],
300
228
  example: "medialane.io/collections/your-collection",
301
229
  icon: Link2,
302
- gradient: "from-pink-500/10 via-rose-400/4 to-transparent",
303
- borderColor: "border-pink-500/20",
304
- iconColor: "text-pink-500",
305
- badge: "Claim",
306
230
  status: "live",
307
- category: "create",
308
231
  group: "claims"
309
232
  }
310
233
  ];