@medialane/ui 0.11.0 → 0.11.2

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.
Files changed (85) hide show
  1. package/dist/components/activity-card.cjs +2 -1
  2. package/dist/components/activity-card.cjs.map +1 -1
  3. package/dist/components/activity-card.d.cts +15 -0
  4. package/dist/components/activity-card.d.ts +15 -0
  5. package/dist/components/activity-card.js +2 -1
  6. package/dist/components/activity-card.js.map +1 -1
  7. package/dist/components/activity-feed-shell.d.cts +13 -0
  8. package/dist/components/activity-feed-shell.d.ts +13 -0
  9. package/dist/components/activity-row.d.cts +20 -0
  10. package/dist/components/activity-row.d.ts +20 -0
  11. package/dist/components/activity-ticker.d.cts +13 -0
  12. package/dist/components/activity-ticker.d.ts +13 -0
  13. package/dist/components/address-display.d.cts +12 -0
  14. package/dist/components/address-display.d.ts +12 -0
  15. package/dist/components/brand-icon.d.cts +10 -0
  16. package/dist/components/brand-icon.d.ts +10 -0
  17. package/dist/components/brand-logo.d.cts +11 -0
  18. package/dist/components/brand-logo.d.ts +11 -0
  19. package/dist/components/collection-card.d.cts +13 -0
  20. package/dist/components/collection-card.d.ts +13 -0
  21. package/dist/components/cta-card-grid.d.cts +23 -0
  22. package/dist/components/cta-card-grid.d.ts +23 -0
  23. package/dist/components/currency-icon.d.cts +25 -0
  24. package/dist/components/currency-icon.d.ts +25 -0
  25. package/dist/components/discover-collections-strip.d.cts +14 -0
  26. package/dist/components/discover-collections-strip.d.ts +14 -0
  27. package/dist/components/discover-creators-strip.d.cts +14 -0
  28. package/dist/components/discover-creators-strip.d.ts +14 -0
  29. package/dist/components/discover-feed-section.d.cts +24 -0
  30. package/dist/components/discover-feed-section.d.ts +24 -0
  31. package/dist/components/discover-hero.d.cts +17 -0
  32. package/dist/components/discover-hero.d.ts +17 -0
  33. package/dist/components/featured-carousel.d.cts +13 -0
  34. package/dist/components/featured-carousel.d.ts +13 -0
  35. package/dist/components/hero-slider.d.cts +17 -0
  36. package/dist/components/hero-slider.d.ts +17 -0
  37. package/dist/components/ip-type-badge.d.cts +21 -0
  38. package/dist/components/ip-type-badge.d.ts +21 -0
  39. package/dist/components/launchpad-services.d.cts +43 -0
  40. package/dist/components/launchpad-services.d.ts +43 -0
  41. package/dist/components/listing-card.d.cts +16 -0
  42. package/dist/components/listing-card.d.ts +16 -0
  43. package/dist/components/motion-primitives.d.cts +36 -0
  44. package/dist/components/motion-primitives.d.ts +36 -0
  45. package/dist/components/nav-command-menu.d.cts +51 -0
  46. package/dist/components/nav-command-menu.d.ts +51 -0
  47. package/dist/components/page-container.d.cts +15 -0
  48. package/dist/components/page-container.d.ts +15 -0
  49. package/dist/components/portfolio-subnav.d.cts +27 -0
  50. package/dist/components/portfolio-subnav.d.ts +27 -0
  51. package/dist/components/scroll-section.d.cts +18 -0
  52. package/dist/components/scroll-section.d.ts +18 -0
  53. package/dist/components/share-button.d.cts +12 -0
  54. package/dist/components/share-button.d.ts +12 -0
  55. package/dist/components/token-card.d.cts +31 -0
  56. package/dist/components/token-card.d.ts +31 -0
  57. package/dist/data/activity.d.cts +16 -0
  58. package/dist/data/activity.d.ts +16 -0
  59. package/dist/data/brand.d.cts +44 -0
  60. package/dist/data/brand.d.ts +44 -0
  61. package/dist/data/ip-types.d.cts +13 -0
  62. package/dist/data/ip-types.d.ts +13 -0
  63. package/dist/data/launchpad-services.cjs +3 -3
  64. package/dist/data/launchpad-services.cjs.map +1 -1
  65. package/dist/data/launchpad-services.d.cts +42 -0
  66. package/dist/data/launchpad-services.d.ts +42 -0
  67. package/dist/data/launchpad-services.js +3 -3
  68. package/dist/data/launchpad-services.js.map +1 -1
  69. package/dist/index.d.cts +42 -0
  70. package/dist/index.d.ts +42 -0
  71. package/dist/preset/tailwind.d.cts +5 -0
  72. package/dist/preset/tailwind.d.ts +5 -0
  73. package/dist/utils/address.d.cts +7 -0
  74. package/dist/utils/address.d.ts +7 -0
  75. package/dist/utils/cn.d.cts +5 -0
  76. package/dist/utils/cn.d.ts +5 -0
  77. package/dist/utils/format.d.cts +7 -0
  78. package/dist/utils/format.d.ts +7 -0
  79. package/dist/utils/ipfs.d.cts +11 -0
  80. package/dist/utils/ipfs.d.ts +11 -0
  81. package/dist/utils/portfolio-counts.d.cts +33 -0
  82. package/dist/utils/portfolio-counts.d.ts +33 -0
  83. package/dist/utils/time.d.cts +7 -0
  84. package/dist/utils/time.d.ts +7 -0
  85. package/package.json +1 -1
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Typed Tailwind class constants for Medialane brand colors.
3
+ * Mirrors the brand color extensions defined in the Tailwind preset.
4
+ * Keeping these as string literals ensures JIT picks them up via the
5
+ * consumer's content scan of node_modules/@medialane/ui/dist.
6
+ */
7
+ declare const BRAND: {
8
+ readonly purple: {
9
+ readonly text: "text-brand-purple";
10
+ readonly bg: "bg-brand-purple/10";
11
+ readonly bgSolid: "bg-brand-purple/15";
12
+ readonly from: "from-brand-purple/20";
13
+ readonly to: "to-brand-purple/20";
14
+ };
15
+ readonly blue: {
16
+ readonly text: "text-brand-blue";
17
+ readonly bg: "bg-brand-blue/10";
18
+ readonly bgSolid: "bg-brand-blue/15";
19
+ readonly from: "from-brand-blue/20";
20
+ readonly to: "to-brand-blue/20";
21
+ };
22
+ readonly rose: {
23
+ readonly text: "text-brand-rose";
24
+ readonly bg: "bg-brand-rose/10";
25
+ readonly bgSolid: "bg-brand-rose/15";
26
+ readonly from: "from-brand-rose/20";
27
+ readonly to: "to-brand-rose/20";
28
+ };
29
+ readonly orange: {
30
+ readonly text: "text-brand-orange";
31
+ readonly bg: "bg-brand-orange/10";
32
+ readonly bgSolid: "bg-brand-orange/15";
33
+ readonly from: "from-brand-orange/20";
34
+ readonly to: "to-brand-orange/20";
35
+ };
36
+ readonly navy: {
37
+ readonly text: "text-brand-navy";
38
+ readonly bg: "bg-brand-navy/10";
39
+ readonly from: "from-brand-navy/10";
40
+ readonly to: "to-brand-navy/10";
41
+ };
42
+ };
43
+
44
+ export { BRAND };
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Typed Tailwind class constants for Medialane brand colors.
3
+ * Mirrors the brand color extensions defined in the Tailwind preset.
4
+ * Keeping these as string literals ensures JIT picks them up via the
5
+ * consumer's content scan of node_modules/@medialane/ui/dist.
6
+ */
7
+ declare const BRAND: {
8
+ readonly purple: {
9
+ readonly text: "text-brand-purple";
10
+ readonly bg: "bg-brand-purple/10";
11
+ readonly bgSolid: "bg-brand-purple/15";
12
+ readonly from: "from-brand-purple/20";
13
+ readonly to: "to-brand-purple/20";
14
+ };
15
+ readonly blue: {
16
+ readonly text: "text-brand-blue";
17
+ readonly bg: "bg-brand-blue/10";
18
+ readonly bgSolid: "bg-brand-blue/15";
19
+ readonly from: "from-brand-blue/20";
20
+ readonly to: "to-brand-blue/20";
21
+ };
22
+ readonly rose: {
23
+ readonly text: "text-brand-rose";
24
+ readonly bg: "bg-brand-rose/10";
25
+ readonly bgSolid: "bg-brand-rose/15";
26
+ readonly from: "from-brand-rose/20";
27
+ readonly to: "to-brand-rose/20";
28
+ };
29
+ readonly orange: {
30
+ readonly text: "text-brand-orange";
31
+ readonly bg: "bg-brand-orange/10";
32
+ readonly bgSolid: "bg-brand-orange/15";
33
+ readonly from: "from-brand-orange/20";
34
+ readonly to: "to-brand-orange/20";
35
+ };
36
+ readonly navy: {
37
+ readonly text: "text-brand-navy";
38
+ readonly bg: "bg-brand-navy/10";
39
+ readonly from: "from-brand-navy/10";
40
+ readonly to: "to-brand-navy/10";
41
+ };
42
+ };
43
+
44
+ export { BRAND };
@@ -0,0 +1,13 @@
1
+ /** Server-safe IP type data — no React components, safe to import in Server Components. */
2
+ interface IpTypeData {
3
+ slug: string;
4
+ label: string;
5
+ /** API ipType value — null means "nft" special case */
6
+ apiValue: string | null;
7
+ colorClass: string;
8
+ bgClass: string;
9
+ }
10
+ declare const IP_TYPE_DATA: IpTypeData[];
11
+ declare const IP_TYPE_DATA_MAP: Record<string, IpTypeData>;
12
+
13
+ export { IP_TYPE_DATA, IP_TYPE_DATA_MAP, type IpTypeData };
@@ -0,0 +1,13 @@
1
+ /** Server-safe IP type data — no React components, safe to import in Server Components. */
2
+ interface IpTypeData {
3
+ slug: string;
4
+ label: string;
5
+ /** API ipType value — null means "nft" special case */
6
+ apiValue: string | null;
7
+ colorClass: string;
8
+ bgClass: string;
9
+ }
10
+ declare const IP_TYPE_DATA: IpTypeData[];
11
+ declare const IP_TYPE_DATA_MAP: Record<string, IpTypeData>;
12
+
13
+ export { IP_TYPE_DATA, IP_TYPE_DATA_MAP, type IpTypeData };
@@ -287,8 +287,8 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
287
287
  borderColor: "border-pink-500/20",
288
288
  iconColor: "text-pink-400",
289
289
  buttonColor: "bg-brand-rose hover:bg-brand-rose/90",
290
- badge: "Soon",
291
- status: "soon",
290
+ badge: "Launch",
291
+ status: "live",
292
292
  category: "monetize",
293
293
  group: "creator-coins"
294
294
  },
@@ -308,7 +308,7 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
308
308
  iconColor: "text-orange-500",
309
309
  buttonColor: "bg-orange-600 hover:bg-orange-700",
310
310
  badge: "Claim",
311
- status: "soon",
311
+ status: "live",
312
312
  category: "monetize",
313
313
  group: "creator-coins"
314
314
  },
@@ -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, 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: [\"Free for your community to claim\", \"Invite-list gating optional\", \"Branded event page to share\"],\n example: \"Hackathon attendance badge, community membership, conference pass\",\n icon: Award,\n gradient: \"from-emerald-500/10 via-green-400/4 to-transparent\",\n borderColor: \"border-emerald-500/20\",\n iconColor: \"text-emerald-500\",\n buttonColor: \"bg-green-600 hover:bg-green-700\",\n badge: \"Launch\",\n browseLinkLabel: \"Browse events\",\n status: \"live\",\n category: \"launch\",\n group: \"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":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,0BAMO;AAyBA,MAAM,2BAAqD;AAAA,EAChE;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,SAAS;AAAA,EACX;AACF;AA2BO,MAAM,gCAAqD;AAAA;AAAA,EAEhE;AAAA,IACE,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aACE;AAAA;AAAA,IAEF,UAAU,CAAC,mBAAmB,6BAA6B,2BAA2B;AAAA,IACtF,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aAAa;AAAA,IACb,WAAW;AAAA,IACX,aAAa;AAAA,IACb,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aACE;AAAA,IACF,UAAU,CAAC,yBAAyB,wBAAwB,6BAA6B;AAAA,IACzF,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aAAa;AAAA,IACb,WAAW;AAAA,IACX,aAAa;AAAA,IACb,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aACE;AAAA,IACF,UAAU,CAAC,+BAA+B,0BAA0B,4BAA4B;AAAA,IAChG,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aAAa;AAAA,IACb,WAAW;AAAA,IACX,aAAa;AAAA,IACb,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aACE;AAAA,IACF,UAAU,CAAC,8BAA8B,0BAA0B,0BAA0B;AAAA,IAC7F,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aAAa;AAAA,IACb,WAAW;AAAA,IACX,aAAa;AAAA,IACb,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aACE;AAAA,IACF,UAAU,CAAC,gCAAgC,kCAAkC,2BAA2B;AAAA,IACxG,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aAAa;AAAA,IACb,WAAW;AAAA,IACX,aAAa;AAAA,IACb,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AAAA;AAAA,EAGA;AAAA,IACE,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aACE;AAAA,IACF,UAAU,CAAC,oCAAoC,+BAA+B,6BAA6B;AAAA,IAC3G,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aAAa;AAAA,IACb,WAAW;AAAA,IACX,aAAa;AAAA,IACb,OAAO;AAAA,IACP,iBAAiB;AAAA,IACjB,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aACE;AAAA,IACF,UAAU,CAAC,4BAA4B,qCAAqC,4BAA4B;AAAA,IACxG,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aAAa;AAAA,IACb,WAAW;AAAA,IACX,aAAa;AAAA,IACb,OAAO;AAAA,IACP,iBAAiB;AAAA,IACjB,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aACE;AAAA,IACF,UAAU,CAAC,0BAA0B,uBAAuB,2BAA2B;AAAA,IACvF,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aAAa;AAAA,IACb,WAAW;AAAA,IACX,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aACE;AAAA,IACF,UAAU,CAAC,uBAAuB,wBAAwB,qBAAqB;AAAA,IAC/E,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aAAa;AAAA,IACb,WAAW;AAAA,IACX,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AAAA;AAAA,EAGA;AAAA,IACE,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aACE;AAAA,IACF,UAAU,CAAC,qBAAqB,yBAAyB,cAAc;AAAA,IACvE,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aAAa;AAAA,IACb,WAAW;AAAA,IACX,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aACE;AAAA,IACF,UAAU,CAAC,sBAAsB,wBAAwB,0BAA0B;AAAA,IACnF,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aAAa;AAAA,IACb,WAAW;AAAA,IACX,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aACE;AAAA,IACF,UAAU,CAAC,0BAA0B,qCAAqC,yBAAyB;AAAA,IACnG,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aAAa;AAAA,IACb,WAAW;AAAA,IACX,aAAa;AAAA,IACb,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AAAA;AAAA,EAGA;AAAA,IACE,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aACE;AAAA,IACF,UAAU,CAAC,qCAAqC,wBAAwB,4BAA4B;AAAA,IACpG,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aAAa;AAAA,IACb,WAAW;AAAA,IACX,aAAa;AAAA,IACb,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aACE;AAAA,IACF,UAAU,CAAC,cAAc,0BAA0B,uBAAuB;AAAA,IAC1E,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aAAa;AAAA,IACb,WAAW;AAAA,IACX,aAAa;AAAA,IACb,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aACE;AAAA,IACF,UAAU,CAAC,gCAAgC,0BAA0B,yBAAyB;AAAA,IAC9F,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aAAa;AAAA,IACb,WAAW;AAAA,IACX,aAAa;AAAA,IACb,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aACE;AAAA,IACF,UAAU,CAAC,cAAc,uBAAuB,4BAA4B;AAAA,IAC5E,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aAAa;AAAA,IACb,WAAW;AAAA,IACX,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AACF;","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: [\"Free for your community to claim\", \"Invite-list gating optional\", \"Branded event page to share\"],\n example: \"Hackathon attendance badge, community membership, conference pass\",\n icon: Award,\n gradient: \"from-emerald-500/10 via-green-400/4 to-transparent\",\n borderColor: \"border-emerald-500/20\",\n iconColor: \"text-emerald-500\",\n buttonColor: \"bg-green-600 hover:bg-green-700\",\n badge: \"Launch\",\n browseLinkLabel: \"Browse events\",\n status: \"live\",\n category: \"launch\",\n group: \"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: \"Launch\",\n status: \"live\",\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: \"live\",\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":[]}
@@ -0,0 +1,42 @@
1
+ import { LucideIcon } from 'lucide-react';
2
+
3
+ type ServiceStatus = "live" | "building" | "soon";
4
+ type ServiceCategory = "create" | "launch" | "monetize";
5
+ type ServiceGroup = "single-edition" | "limited-editions" | "creator-coins" | "collection-drop" | "pop-protocol" | "licensing-remix" | "claims" | "coming-soon";
6
+ interface ServiceGroupDefinition {
7
+ key: ServiceGroup;
8
+ title: string;
9
+ /** One line of plain creator language: what does this group do for my portfolio/revenue? */
10
+ tagline: string;
11
+ /** Optional small chip next to the title (e.g. the token standard) */
12
+ badge?: string;
13
+ }
14
+ /** Ordered — launchpad pages render sections in this order. */
15
+ declare const LAUNCHPAD_SERVICE_GROUPS: ServiceGroupDefinition[];
16
+ interface ServiceDefinition {
17
+ key: string;
18
+ title: string;
19
+ subtitle: string;
20
+ description: string;
21
+ features: string[];
22
+ icon: LucideIcon;
23
+ gradient: string;
24
+ borderColor: string;
25
+ iconColor: string;
26
+ buttonColor?: string;
27
+ badge: string;
28
+ status: ServiceStatus;
29
+ category: ServiceCategory;
30
+ group: ServiceGroup;
31
+ /** The ONE creator-language sentence the card shows (no jargon). */
32
+ blurb: string;
33
+ /** Single-verb action label for the card's gradient pill (never repeats the title). */
34
+ cta: string;
35
+ /** Concrete usage example (legacy long-card layout; unused by the 0.9.0 card). */
36
+ example?: string;
37
+ /** Secondary browse link label — injected app adds the href */
38
+ browseLinkLabel?: string;
39
+ }
40
+ declare const LAUNCHPAD_SERVICE_DEFINITIONS: ServiceDefinition[];
41
+
42
+ export { LAUNCHPAD_SERVICE_DEFINITIONS, LAUNCHPAD_SERVICE_GROUPS, type ServiceCategory, type ServiceDefinition, type ServiceGroup, type ServiceGroupDefinition, type ServiceStatus };
@@ -0,0 +1,42 @@
1
+ import { LucideIcon } from 'lucide-react';
2
+
3
+ type ServiceStatus = "live" | "building" | "soon";
4
+ type ServiceCategory = "create" | "launch" | "monetize";
5
+ type ServiceGroup = "single-edition" | "limited-editions" | "creator-coins" | "collection-drop" | "pop-protocol" | "licensing-remix" | "claims" | "coming-soon";
6
+ interface ServiceGroupDefinition {
7
+ key: ServiceGroup;
8
+ title: string;
9
+ /** One line of plain creator language: what does this group do for my portfolio/revenue? */
10
+ tagline: string;
11
+ /** Optional small chip next to the title (e.g. the token standard) */
12
+ badge?: string;
13
+ }
14
+ /** Ordered — launchpad pages render sections in this order. */
15
+ declare const LAUNCHPAD_SERVICE_GROUPS: ServiceGroupDefinition[];
16
+ interface ServiceDefinition {
17
+ key: string;
18
+ title: string;
19
+ subtitle: string;
20
+ description: string;
21
+ features: string[];
22
+ icon: LucideIcon;
23
+ gradient: string;
24
+ borderColor: string;
25
+ iconColor: string;
26
+ buttonColor?: string;
27
+ badge: string;
28
+ status: ServiceStatus;
29
+ category: ServiceCategory;
30
+ group: ServiceGroup;
31
+ /** The ONE creator-language sentence the card shows (no jargon). */
32
+ blurb: string;
33
+ /** Single-verb action label for the card's gradient pill (never repeats the title). */
34
+ cta: string;
35
+ /** Concrete usage example (legacy long-card layout; unused by the 0.9.0 card). */
36
+ example?: string;
37
+ /** Secondary browse link label — injected app adds the href */
38
+ browseLinkLabel?: string;
39
+ }
40
+ declare const LAUNCHPAD_SERVICE_DEFINITIONS: ServiceDefinition[];
41
+
42
+ export { LAUNCHPAD_SERVICE_DEFINITIONS, LAUNCHPAD_SERVICE_GROUPS, type ServiceCategory, type ServiceDefinition, type ServiceGroup, type ServiceGroupDefinition, type ServiceStatus };
@@ -278,8 +278,8 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
278
278
  borderColor: "border-pink-500/20",
279
279
  iconColor: "text-pink-400",
280
280
  buttonColor: "bg-brand-rose hover:bg-brand-rose/90",
281
- badge: "Soon",
282
- status: "soon",
281
+ badge: "Launch",
282
+ status: "live",
283
283
  category: "monetize",
284
284
  group: "creator-coins"
285
285
  },
@@ -299,7 +299,7 @@ const LAUNCHPAD_SERVICE_DEFINITIONS = [
299
299
  iconColor: "text-orange-500",
300
300
  buttonColor: "bg-orange-600 hover:bg-orange-700",
301
301
  badge: "Claim",
302
- status: "soon",
302
+ status: "live",
303
303
  category: "monetize",
304
304
  group: "creator-coins"
305
305
  },
@@ -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, 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: [\"Free for your community to claim\", \"Invite-list gating optional\", \"Branded event page to share\"],\n example: \"Hackathon attendance badge, community membership, conference pass\",\n icon: Award,\n gradient: \"from-emerald-500/10 via-green-400/4 to-transparent\",\n borderColor: \"border-emerald-500/20\",\n iconColor: \"text-emerald-500\",\n buttonColor: \"bg-green-600 hover:bg-green-700\",\n badge: \"Launch\",\n browseLinkLabel: \"Browse events\",\n status: \"live\",\n category: \"launch\",\n group: \"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":[]}
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: [\"Free for your community to claim\", \"Invite-list gating optional\", \"Branded event page to share\"],\n example: \"Hackathon attendance badge, community membership, conference pass\",\n icon: Award,\n gradient: \"from-emerald-500/10 via-green-400/4 to-transparent\",\n borderColor: \"border-emerald-500/20\",\n iconColor: \"text-emerald-500\",\n buttonColor: \"bg-green-600 hover:bg-green-700\",\n badge: \"Launch\",\n browseLinkLabel: \"Browse events\",\n status: \"live\",\n category: \"launch\",\n group: \"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: \"Launch\",\n status: \"live\",\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: \"live\",\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":"AACA;AAAA,EACE;AAAA,EAAW;AAAA,EAAQ;AAAA,EACnB;AAAA,EAAO;AAAA,EAAS;AAAA,EAChB;AAAA,EAAQ;AAAA,EACR;AAAA,EAAW;AAAA,EAAO;AAAA,EAClB;AAAA,EAAQ;AAAA,EAAa;AAAA,OAChB;AAyBA,MAAM,2BAAqD;AAAA,EAChE;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,SAAS;AAAA,EACX;AACF;AA2BO,MAAM,gCAAqD;AAAA;AAAA,EAEhE;AAAA,IACE,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aACE;AAAA;AAAA,IAEF,UAAU,CAAC,mBAAmB,6BAA6B,2BAA2B;AAAA,IACtF,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aAAa;AAAA,IACb,WAAW;AAAA,IACX,aAAa;AAAA,IACb,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aACE;AAAA,IACF,UAAU,CAAC,yBAAyB,wBAAwB,6BAA6B;AAAA,IACzF,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aAAa;AAAA,IACb,WAAW;AAAA,IACX,aAAa;AAAA,IACb,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aACE;AAAA,IACF,UAAU,CAAC,+BAA+B,0BAA0B,4BAA4B;AAAA,IAChG,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aAAa;AAAA,IACb,WAAW;AAAA,IACX,aAAa;AAAA,IACb,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aACE;AAAA,IACF,UAAU,CAAC,8BAA8B,0BAA0B,0BAA0B;AAAA,IAC7F,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aAAa;AAAA,IACb,WAAW;AAAA,IACX,aAAa;AAAA,IACb,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aACE;AAAA,IACF,UAAU,CAAC,gCAAgC,kCAAkC,2BAA2B;AAAA,IACxG,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aAAa;AAAA,IACb,WAAW;AAAA,IACX,aAAa;AAAA,IACb,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AAAA;AAAA,EAGA;AAAA,IACE,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aACE;AAAA,IACF,UAAU,CAAC,oCAAoC,+BAA+B,6BAA6B;AAAA,IAC3G,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aAAa;AAAA,IACb,WAAW;AAAA,IACX,aAAa;AAAA,IACb,OAAO;AAAA,IACP,iBAAiB;AAAA,IACjB,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aACE;AAAA,IACF,UAAU,CAAC,4BAA4B,qCAAqC,4BAA4B;AAAA,IACxG,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aAAa;AAAA,IACb,WAAW;AAAA,IACX,aAAa;AAAA,IACb,OAAO;AAAA,IACP,iBAAiB;AAAA,IACjB,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aACE;AAAA,IACF,UAAU,CAAC,0BAA0B,uBAAuB,2BAA2B;AAAA,IACvF,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aAAa;AAAA,IACb,WAAW;AAAA,IACX,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aACE;AAAA,IACF,UAAU,CAAC,uBAAuB,wBAAwB,qBAAqB;AAAA,IAC/E,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aAAa;AAAA,IACb,WAAW;AAAA,IACX,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AAAA;AAAA,EAGA;AAAA,IACE,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aACE;AAAA,IACF,UAAU,CAAC,qBAAqB,yBAAyB,cAAc;AAAA,IACvE,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aAAa;AAAA,IACb,WAAW;AAAA,IACX,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aACE;AAAA,IACF,UAAU,CAAC,sBAAsB,wBAAwB,0BAA0B;AAAA,IACnF,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aAAa;AAAA,IACb,WAAW;AAAA,IACX,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aACE;AAAA,IACF,UAAU,CAAC,0BAA0B,qCAAqC,yBAAyB;AAAA,IACnG,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aAAa;AAAA,IACb,WAAW;AAAA,IACX,aAAa;AAAA,IACb,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AAAA;AAAA,EAGA;AAAA,IACE,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aACE;AAAA,IACF,UAAU,CAAC,qCAAqC,wBAAwB,4BAA4B;AAAA,IACpG,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aAAa;AAAA,IACb,WAAW;AAAA,IACX,aAAa;AAAA,IACb,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aACE;AAAA,IACF,UAAU,CAAC,cAAc,0BAA0B,uBAAuB;AAAA,IAC1E,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aAAa;AAAA,IACb,WAAW;AAAA,IACX,aAAa;AAAA,IACb,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aACE;AAAA,IACF,UAAU,CAAC,gCAAgC,0BAA0B,yBAAyB;AAAA,IAC9F,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aAAa;AAAA,IACb,WAAW;AAAA,IACX,aAAa;AAAA,IACb,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aACE;AAAA,IACF,UAAU,CAAC,cAAc,uBAAuB,4BAA4B;AAAA,IAC5E,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aAAa;AAAA,IACb,WAAW;AAAA,IACX,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,EACT;AACF;","names":[]}
@@ -0,0 +1,42 @@
1
+ export { cn } from './utils/cn.cjs';
2
+ export { formatDisplayPrice } from './utils/format.cjs';
3
+ export { shortenAddress } from './utils/address.cjs';
4
+ export { ipfsToHttp } from './utils/ipfs.cjs';
5
+ export { IP_TYPE_DATA, IP_TYPE_DATA_MAP, IpTypeData } from './data/ip-types.cjs';
6
+ export { BRAND } from './data/brand.cjs';
7
+ export { CurrencyAmount, CurrencyAmountProps, CurrencyIcon, CurrencyIconProps } from './components/currency-icon.cjs';
8
+ export { IP_TYPE_CONFIG, IP_TYPE_MAP, IpTypeBadge, IpTypeBadgeProps, IpTypeConfig } from './components/ip-type-badge.cjs';
9
+ export { AddressDisplay, AddressDisplayProps } from './components/address-display.cjs';
10
+ export { MedialaneIcon, MedialaneIconProps } from './components/brand-icon.cjs';
11
+ export { MedialaneLogoFull, MedialaneLogoFullProps } from './components/brand-logo.cjs';
12
+ export { EASE_OUT, FadeIn, KineticWords, MotionCard, SPRING, Stagger, StaggerItem } from './components/motion-primitives.cjs';
13
+ export { PageContainer, PageContainerProps } from './components/page-container.cjs';
14
+ export { ScrollSection, ScrollSectionProps } from './components/scroll-section.cjs';
15
+ export { ShareButton, ShareButtonProps } from './components/share-button.cjs';
16
+ export { CollectionCard, CollectionCardProps, CollectionCardSkeleton } from './components/collection-card.cjs';
17
+ export { RarityTier, TokenCard, TokenCardProps, TokenCardSkeleton } from './components/token-card.cjs';
18
+ export { timeAgo } from './utils/time.cjs';
19
+ export { ACTIVITY_TYPE_CONFIG, ActivityTypeConfig, TYPE_FILTERS } from './data/activity.cjs';
20
+ export { HeroSlider, HeroSliderProps, HeroSliderSkeleton } from './components/hero-slider.cjs';
21
+ export { ActivityTicker, ActivityTickerProps } from './components/activity-ticker.cjs';
22
+ export { ListingCard, ListingCardProps, ListingCardSkeleton } from './components/listing-card.cjs';
23
+ export { ActivityRow, ActivityRowProps } from './components/activity-row.cjs';
24
+ export { ActivityFeedShell, ActivityFeedShellProps } from './components/activity-feed-shell.cjs';
25
+ export { CtaCardGrid, CtaCardGridProps, CtaCardItem } from './components/cta-card-grid.cjs';
26
+ export { DiscoverHero, DiscoverHeroProps } from './components/discover-hero.cjs';
27
+ export { FeaturedCarousel, FeaturedCarouselProps, FeaturedCarouselSkeleton } from './components/featured-carousel.cjs';
28
+ export { DiscoverCollectionsStrip, DiscoverCollectionsStripProps } from './components/discover-collections-strip.cjs';
29
+ export { DiscoverCreatorsStrip, DiscoverCreatorsStripProps } from './components/discover-creators-strip.cjs';
30
+ export { DiscoverFeedSection, DiscoverFeedSectionProps } from './components/discover-feed-section.cjs';
31
+ export { ACTIVITY_MESSAGES, ActivityCard, ActivityCardProps, ActivityCardSkeleton } from './components/activity-card.cjs';
32
+ export { LaunchpadGroupedSections, LaunchpadGroupedSectionsProps, LaunchpadServiceCard, LaunchpadServiceCardProps, SERVICE_HUES, ServiceOverride, ServiceOverrides } from './components/launchpad-services.cjs';
33
+ export { LAUNCHPAD_SERVICE_DEFINITIONS, LAUNCHPAD_SERVICE_GROUPS, ServiceCategory, ServiceDefinition, ServiceGroup, ServiceGroupDefinition, ServiceStatus } from './data/launchpad-services.cjs';
34
+ export { NavCommand, NavCommandGroup, NavCommandMenu, NavCommandMenuProps, useNavCommandMenu } from './components/nav-command-menu.cjs';
35
+ export { PortfolioBadgeVariant, PortfolioNavGroup, PortfolioNavItem, PortfolioSubnav, PortfolioSubnavProps } from './components/portfolio-subnav.cjs';
36
+ export { CountableOrder, PortfolioCounts, derivePortfolioCounts } from './utils/portfolio-counts.cjs';
37
+ import 'clsx';
38
+ import 'react/jsx-runtime';
39
+ import 'framer-motion';
40
+ import 'react';
41
+ import '@medialane/sdk';
42
+ import 'lucide-react';
@@ -0,0 +1,42 @@
1
+ export { cn } from './utils/cn.js';
2
+ export { formatDisplayPrice } from './utils/format.js';
3
+ export { shortenAddress } from './utils/address.js';
4
+ export { ipfsToHttp } from './utils/ipfs.js';
5
+ export { IP_TYPE_DATA, IP_TYPE_DATA_MAP, IpTypeData } from './data/ip-types.js';
6
+ export { BRAND } from './data/brand.js';
7
+ export { CurrencyAmount, CurrencyAmountProps, CurrencyIcon, CurrencyIconProps } from './components/currency-icon.js';
8
+ export { IP_TYPE_CONFIG, IP_TYPE_MAP, IpTypeBadge, IpTypeBadgeProps, IpTypeConfig } from './components/ip-type-badge.js';
9
+ export { AddressDisplay, AddressDisplayProps } from './components/address-display.js';
10
+ export { MedialaneIcon, MedialaneIconProps } from './components/brand-icon.js';
11
+ export { MedialaneLogoFull, MedialaneLogoFullProps } from './components/brand-logo.js';
12
+ export { EASE_OUT, FadeIn, KineticWords, MotionCard, SPRING, Stagger, StaggerItem } from './components/motion-primitives.js';
13
+ export { PageContainer, PageContainerProps } from './components/page-container.js';
14
+ export { ScrollSection, ScrollSectionProps } from './components/scroll-section.js';
15
+ export { ShareButton, ShareButtonProps } from './components/share-button.js';
16
+ export { CollectionCard, CollectionCardProps, CollectionCardSkeleton } from './components/collection-card.js';
17
+ export { RarityTier, TokenCard, TokenCardProps, TokenCardSkeleton } from './components/token-card.js';
18
+ export { timeAgo } from './utils/time.js';
19
+ export { ACTIVITY_TYPE_CONFIG, ActivityTypeConfig, TYPE_FILTERS } from './data/activity.js';
20
+ export { HeroSlider, HeroSliderProps, HeroSliderSkeleton } from './components/hero-slider.js';
21
+ export { ActivityTicker, ActivityTickerProps } from './components/activity-ticker.js';
22
+ export { ListingCard, ListingCardProps, ListingCardSkeleton } from './components/listing-card.js';
23
+ export { ActivityRow, ActivityRowProps } from './components/activity-row.js';
24
+ export { ActivityFeedShell, ActivityFeedShellProps } from './components/activity-feed-shell.js';
25
+ export { CtaCardGrid, CtaCardGridProps, CtaCardItem } from './components/cta-card-grid.js';
26
+ export { DiscoverHero, DiscoverHeroProps } from './components/discover-hero.js';
27
+ export { FeaturedCarousel, FeaturedCarouselProps, FeaturedCarouselSkeleton } from './components/featured-carousel.js';
28
+ export { DiscoverCollectionsStrip, DiscoverCollectionsStripProps } from './components/discover-collections-strip.js';
29
+ export { DiscoverCreatorsStrip, DiscoverCreatorsStripProps } from './components/discover-creators-strip.js';
30
+ export { DiscoverFeedSection, DiscoverFeedSectionProps } from './components/discover-feed-section.js';
31
+ export { ACTIVITY_MESSAGES, ActivityCard, ActivityCardProps, ActivityCardSkeleton } from './components/activity-card.js';
32
+ export { LaunchpadGroupedSections, LaunchpadGroupedSectionsProps, LaunchpadServiceCard, LaunchpadServiceCardProps, SERVICE_HUES, ServiceOverride, ServiceOverrides } from './components/launchpad-services.js';
33
+ export { LAUNCHPAD_SERVICE_DEFINITIONS, LAUNCHPAD_SERVICE_GROUPS, ServiceCategory, ServiceDefinition, ServiceGroup, ServiceGroupDefinition, ServiceStatus } from './data/launchpad-services.js';
34
+ export { NavCommand, NavCommandGroup, NavCommandMenu, NavCommandMenuProps, useNavCommandMenu } from './components/nav-command-menu.js';
35
+ export { PortfolioBadgeVariant, PortfolioNavGroup, PortfolioNavItem, PortfolioSubnav, PortfolioSubnavProps } from './components/portfolio-subnav.js';
36
+ export { CountableOrder, PortfolioCounts, derivePortfolioCounts } from './utils/portfolio-counts.js';
37
+ import 'clsx';
38
+ import 'react/jsx-runtime';
39
+ import 'framer-motion';
40
+ import 'react';
41
+ import '@medialane/sdk';
42
+ import 'lucide-react';
@@ -0,0 +1,5 @@
1
+ import { Config } from 'tailwindcss';
2
+
3
+ declare const medialanePreset: Partial<Config>;
4
+
5
+ export { medialanePreset as default };
@@ -0,0 +1,5 @@
1
+ import { Config } from 'tailwindcss';
2
+
3
+ declare const medialanePreset: Partial<Config>;
4
+
5
+ export { medialanePreset as default };
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Shorten a hex address to a prefix…suffix format.
3
+ * Example: "0x1234567890abcdef" → "0x1234…cdef"
4
+ */
5
+ declare function shortenAddress(address: string, chars?: number): string;
6
+
7
+ export { shortenAddress };
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Shorten a hex address to a prefix…suffix format.
3
+ * Example: "0x1234567890abcdef" → "0x1234…cdef"
4
+ */
5
+ declare function shortenAddress(address: string, chars?: number): string;
6
+
7
+ export { shortenAddress };