@medialane/ui 0.13.1 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/README.md +31 -5
  2. package/dist/components/coin-card.cjs +131 -0
  3. package/dist/components/coin-card.cjs.map +1 -0
  4. package/dist/components/coin-card.d.cts +19 -0
  5. package/dist/components/coin-card.d.ts +19 -0
  6. package/dist/components/coin-card.js +99 -0
  7. package/dist/components/coin-card.js.map +1 -0
  8. package/dist/components/coins-explorer.cjs +117 -0
  9. package/dist/components/coins-explorer.cjs.map +1 -0
  10. package/dist/components/coins-explorer.d.cts +23 -0
  11. package/dist/components/coins-explorer.d.ts +23 -0
  12. package/dist/components/coins-explorer.js +93 -0
  13. package/dist/components/coins-explorer.js.map +1 -0
  14. package/dist/components/ip-type-display.cjs +26 -1
  15. package/dist/components/ip-type-display.cjs.map +1 -1
  16. package/dist/components/ip-type-display.js +27 -2
  17. package/dist/components/ip-type-display.js.map +1 -1
  18. package/dist/data/coins.cjs +48 -0
  19. package/dist/data/coins.cjs.map +1 -0
  20. package/dist/data/coins.d.cts +33 -0
  21. package/dist/data/coins.d.ts +33 -0
  22. package/dist/data/coins.js +22 -0
  23. package/dist/data/coins.js.map +1 -0
  24. package/dist/data/ip-templates.cjs +13 -0
  25. package/dist/data/ip-templates.cjs.map +1 -1
  26. package/dist/data/ip-templates.d.cts +16 -1
  27. package/dist/data/ip-templates.d.ts +16 -1
  28. package/dist/data/ip-templates.js +12 -0
  29. package/dist/data/ip-templates.js.map +1 -1
  30. package/dist/index.cjs +19 -0
  31. package/dist/index.cjs.map +1 -1
  32. package/dist/index.d.cts +4 -1
  33. package/dist/index.d.ts +4 -1
  34. package/dist/index.js +19 -1
  35. package/dist/index.js.map +1 -1
  36. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/data/ip-templates.ts"],"sourcesContent":["import {\n Music, Palette, FileText, Hexagon, Clapperboard, Camera,\n Award, MessageSquare, BookOpen, Building2, Code2, Layers,\n Music2, AudioLines, Youtube, Video, Twitter, Instagram, Facebook, Globe,\n type LucideIcon,\n} from \"lucide-react\";\nimport type { IPType } from \"./ip.js\";\n\n// ── Embeds (inline iframe players) ──────────────────────────────────────────\n// Only platforms with clean iframe embeds. Each maps to a stored trait_type key\n// so the asset page can render the player from metadata attributes.\nexport type EmbedPlatform = \"spotify\" | \"soundcloud\" | \"youtube\" | \"tiktok\" | \"vimeo\";\n\nexport const EMBED_PLATFORM_META: Record<\n EmbedPlatform,\n { label: string; icon: LucideIcon; traitKey: string; placeholder: string }\n> = {\n spotify: { label: \"Spotify\", icon: Music2, traitKey: \"Spotify URL\", placeholder: \"https://open.spotify.com/…\" },\n soundcloud: { label: \"SoundCloud\", icon: AudioLines, traitKey: \"SoundCloud URL\", placeholder: \"https://soundcloud.com/…\" },\n youtube: { label: \"YouTube\", icon: Youtube, traitKey: \"YouTube URL\", placeholder: \"https://youtube.com/watch?v=…\" },\n tiktok: { label: \"TikTok\", icon: Video, traitKey: \"TikTok URL\", placeholder: \"https://tiktok.com/@…/video/…\" },\n vimeo: { label: \"Vimeo\", icon: Video, traitKey: \"Vimeo URL\", placeholder: \"https://vimeo.com/…\" },\n};\n\n// ── Socials (icon-chip links — open in a new tab, never iframed) ────────────\n// X / Instagram / Facebook need fragile JS SDKs and sites block iframing, so\n// these render as clickable platform chips on the asset page, not players.\nexport type SocialPlatform = \"x\" | \"instagram\" | \"facebook\" | \"tiktok\" | \"website\";\n\nexport const SOCIAL_PLATFORM_META: Record<\n SocialPlatform,\n { label: string; icon: LucideIcon; traitKey: string; placeholder: string }\n> = {\n x: { label: \"X\", icon: Twitter, traitKey: \"X\", placeholder: \"https://x.com/…\" },\n instagram: { label: \"Instagram\", icon: Instagram, traitKey: \"Instagram\", placeholder: \"https://instagram.com/…\" },\n facebook: { label: \"Facebook\", icon: Facebook, traitKey: \"Facebook\", placeholder: \"https://facebook.com/…\" },\n tiktok: { label: \"TikTok\", icon: Video, traitKey: \"TikTok\", placeholder: \"https://tiktok.com/@…\" },\n website: { label: \"Website\", icon: Globe, traitKey: \"Website\", placeholder: \"https://…\" },\n};\n\n// ── Trait suggestions (friendly, no dates / no technical fields) ────────────\n// Tapping a suggestion pre-fills a trait row. Optional `options` renders the\n// value as a select (e.g. Rarity).\nexport interface TraitSuggestion {\n key: string;\n placeholder?: string;\n options?: string[];\n}\n\nexport interface IPTemplate {\n type: IPType;\n label: string;\n description: string;\n icon: LucideIcon;\n color: { bg: string; text: string; border: string };\n embeds?: EmbedPlatform[];\n socials?: SocialPlatform[];\n traitSuggestions?: TraitSuggestion[];\n}\n\nexport const IP_TEMPLATES: Record<IPType, IPTemplate> = {\n Audio: {\n type: \"Audio\",\n label: \"Audio\",\n description: \"Music, podcasts, sound effects, audio art\",\n icon: Music,\n color: { bg: \"bg-blue-500/10\", text: \"text-blue-400\", border: \"border-blue-500/20\" },\n embeds: [\"spotify\", \"soundcloud\"],\n traitSuggestions: [\n { key: \"Artist\" }, { key: \"Genre\", placeholder: \"Soundtrack\" }, { key: \"Mood\" }, { key: \"Label\" },\n ],\n },\n Video: {\n type: \"Video\",\n label: \"Video\",\n description: \"Films, animations, short-form video content\",\n icon: Clapperboard,\n color: { bg: \"bg-red-500/10\", text: \"text-red-400\", border: \"border-red-500/20\" },\n embeds: [\"youtube\", \"tiktok\", \"vimeo\"],\n traitSuggestions: [\n { key: \"Director\" }, { key: \"Genre\" }, { key: \"Cast\" }, { key: \"Studio\" },\n ],\n },\n Art: {\n type: \"Art\",\n label: \"Art\",\n description: \"Digital and physical artwork, illustrations, generative art\",\n icon: Palette,\n color: { bg: \"bg-purple-500/10\", text: \"text-purple-400\", border: \"border-purple-500/20\" },\n traitSuggestions: [\n { key: \"Medium\", placeholder: \"Oil on canvas\" },\n { key: \"Style\", placeholder: \"Impressionism\" },\n { key: \"Materials\" },\n { key: \"Series\" },\n ],\n },\n Photography: {\n type: \"Photography\",\n label: \"Photography\",\n description: \"Photography, photo essays, visual documentation\",\n icon: Camera,\n color: { bg: \"bg-orange-500/10\", text: \"text-orange-400\", border: \"border-orange-500/20\" },\n traitSuggestions: [\n { key: \"Camera\", placeholder: \"Sony A7 IV\" },\n { key: \"Location\" },\n { key: \"Series\" },\n { key: \"Edition\" },\n ],\n },\n Posts: {\n type: \"Posts\",\n label: \"Posts\",\n description: \"Articles, blog posts, social media content, essays\",\n icon: MessageSquare,\n color: { bg: \"bg-sky-500/10\", text: \"text-sky-400\", border: \"border-sky-500/20\" },\n socials: [\"x\", \"instagram\", \"facebook\", \"tiktok\", \"website\"],\n traitSuggestions: [\n { key: \"Author\" }, { key: \"Topic\" }, { key: \"Category\" },\n ],\n },\n Publications: {\n type: \"Publications\",\n label: \"Publications\",\n description: \"Books, journals, magazines, academic papers\",\n icon: BookOpen,\n color: { bg: \"bg-indigo-500/10\", text: \"text-indigo-400\", border: \"border-indigo-500/20\" },\n socials: [\"x\", \"instagram\", \"website\"],\n traitSuggestions: [\n { key: \"Author\" }, { key: \"Publisher\" }, { key: \"Language\", placeholder: \"English\" }, { key: \"Edition\" },\n ],\n },\n Documents: {\n type: \"Documents\",\n label: \"Documents\",\n description: \"Contracts, reports, whitepapers, legal documents\",\n icon: FileText,\n color: { bg: \"bg-zinc-500/10\", text: \"text-zinc-400\", border: \"border-zinc-500/20\" },\n traitSuggestions: [\n { key: \"Author\" }, { key: \"Category\" }, { key: \"Language\", placeholder: \"English\" },\n ],\n },\n Patents: {\n type: \"Patents\",\n label: \"Patents\",\n description: \"Patents, inventions, technical innovations\",\n icon: Award,\n color: { bg: \"bg-amber-500/10\", text: \"text-amber-400\", border: \"border-amber-500/20\" },\n traitSuggestions: [\n { key: \"Inventor\" }, { key: \"Field\" }, { key: \"Status\" },\n ],\n },\n Software: {\n type: \"Software\",\n label: \"Software\",\n description: \"Applications, scripts, algorithms, code libraries\",\n icon: Code2,\n color: { bg: \"bg-violet-500/10\", text: \"text-violet-400\", border: \"border-violet-500/20\" },\n socials: [\"website\"],\n traitSuggestions: [\n { key: \"Language\", placeholder: \"TypeScript\" }, { key: \"License\" }, { key: \"Platform\" },\n ],\n },\n NFT: {\n type: \"NFT\",\n label: \"NFT\",\n description: \"Blockchain-native digital assets and collectibles\",\n icon: Hexagon,\n color: { bg: \"bg-teal-500/10\", text: \"text-teal-400\", border: \"border-teal-500/20\" },\n traitSuggestions: [\n { key: \"Collection\" },\n { key: \"Edition\" },\n { key: \"Rarity\", options: [\"Common\", \"Uncommon\", \"Rare\", \"Epic\", \"Legendary\"] },\n ],\n },\n RWA: {\n type: \"RWA\",\n label: \"Real World Asset\",\n description: \"Tokenized physical assets: real estate, commodities, collectibles\",\n icon: Building2,\n color: { bg: \"bg-emerald-500/10\", text: \"text-emerald-400\", border: \"border-emerald-500/20\" },\n traitSuggestions: [\n { key: \"Asset Type\" }, { key: \"Location\" }, { key: \"Category\" },\n ],\n },\n Custom: {\n type: \"Custom\",\n label: \"Custom\",\n description: \"Custom IP type — add your own trait pairs for any metadata\",\n icon: Layers,\n color: { bg: \"bg-muted/50\", text: \"text-muted-foreground\", border: \"border-border\" },\n },\n};\n\n/**\n * All trait_type keys owned by templates (embeds + socials + suggestions), plus\n * \"IP Type\" itself. Used to filter template-managed attributes out of other\n * attribute grids so they aren't duplicated.\n */\nexport const TEMPLATE_TRAIT_TYPES = new Set<string>([\n \"IP Type\",\n ...Object.values(EMBED_PLATFORM_META).map((m) => m.traitKey),\n ...Object.values(SOCIAL_PLATFORM_META).map((m) => m.traitKey),\n ...Object.values(IP_TEMPLATES).flatMap((t) => (t.traitSuggestions ?? []).map((s) => s.key)),\n]);\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/data/ip-templates.ts"],"sourcesContent":["import {\n Music, Palette, FileText, Hexagon, Clapperboard, Camera,\n Award, MessageSquare, BookOpen, Building2, Code2, Layers,\n Music2, AudioLines, Youtube, Video, Twitter, Instagram, Facebook, Globe,\n type LucideIcon,\n} from \"lucide-react\";\nimport type { IPType } from \"./ip.js\";\n\n// ── Embeds (inline iframe players) ──────────────────────────────────────────\n// Only platforms with clean iframe embeds. Each maps to a stored trait_type key\n// so the asset page can render the player from metadata attributes.\nexport type EmbedPlatform = \"spotify\" | \"soundcloud\" | \"youtube\" | \"tiktok\" | \"vimeo\";\n\nexport const EMBED_PLATFORM_META: Record<\n EmbedPlatform,\n { label: string; icon: LucideIcon; traitKey: string; placeholder: string }\n> = {\n spotify: { label: \"Spotify\", icon: Music2, traitKey: \"Spotify URL\", placeholder: \"https://open.spotify.com/…\" },\n soundcloud: { label: \"SoundCloud\", icon: AudioLines, traitKey: \"SoundCloud URL\", placeholder: \"https://soundcloud.com/…\" },\n youtube: { label: \"YouTube\", icon: Youtube, traitKey: \"YouTube URL\", placeholder: \"https://youtube.com/watch?v=…\" },\n tiktok: { label: \"TikTok\", icon: Video, traitKey: \"TikTok URL\", placeholder: \"https://tiktok.com/@…/video/…\" },\n vimeo: { label: \"Vimeo\", icon: Video, traitKey: \"Vimeo URL\", placeholder: \"https://vimeo.com/…\" },\n};\n\n// ── Socials (icon-chip links — open in a new tab, never iframed) ────────────\n// X / Instagram / Facebook need fragile JS SDKs and sites block iframing, so\n// these render as clickable platform chips on the asset page, not players.\nexport type SocialPlatform = \"x\" | \"instagram\" | \"facebook\" | \"tiktok\" | \"website\";\n\nexport const SOCIAL_PLATFORM_META: Record<\n SocialPlatform,\n { label: string; icon: LucideIcon; traitKey: string; placeholder: string }\n> = {\n x: { label: \"X\", icon: Twitter, traitKey: \"X\", placeholder: \"https://x.com/…\" },\n instagram: { label: \"Instagram\", icon: Instagram, traitKey: \"Instagram\", placeholder: \"https://instagram.com/…\" },\n facebook: { label: \"Facebook\", icon: Facebook, traitKey: \"Facebook\", placeholder: \"https://facebook.com/…\" },\n tiktok: { label: \"TikTok\", icon: Video, traitKey: \"TikTok\", placeholder: \"https://tiktok.com/@…\" },\n website: { label: \"Website\", icon: Globe, traitKey: \"Website\", placeholder: \"https://…\" },\n};\n\n// ── Trait suggestions (friendly, no dates / no technical fields) ────────────\n// Tapping a suggestion pre-fills a trait row. Optional `options` renders the\n// value as a select (e.g. Rarity).\nexport interface TraitSuggestion {\n key: string;\n placeholder?: string;\n options?: string[];\n}\n\nexport interface DocUploadConfig {\n /** Stored trait_type carrying the ipfs:// URI of the uploaded document */\n traitType: string;\n /** File-input accept list */\n accept: string;\n maxMb: number;\n /** Creator-facing explanation shown under the upload field */\n hint: string;\n}\n\nexport interface IPTemplate {\n type: IPType;\n label: string;\n description: string;\n icon: LucideIcon;\n color: { bg: string; text: string; border: string };\n embeds?: EmbedPlatform[];\n socials?: SocialPlatform[];\n traitSuggestions?: TraitSuggestion[];\n /** Document/PDF upload to IPFS (Documents, Patents, Publications, Software) */\n docUpload?: DocUploadConfig;\n}\n\n/** The document itself, pinned to immutable IPFS — a timestamped copy of the\n * work that stands as proof of authorship (Berne Convention: protection\n * exists from fixation; an immutable dated copy is the evidence). */\nexport const DOC_UPLOAD: DocUploadConfig = {\n traitType: \"Document File\",\n accept: \".pdf,.doc,.docx,.txt,.md,.rtf,.odt\",\n maxMb: 20,\n hint: \"Stored permanently on IPFS — an immutable, timestamped copy of your work (proof of authorship under the Berne Convention).\",\n};\n\nexport const IP_TEMPLATES: Record<IPType, IPTemplate> = {\n Audio: {\n type: \"Audio\",\n label: \"Audio\",\n description: \"Music, podcasts, sound effects, audio art\",\n icon: Music,\n color: { bg: \"bg-blue-500/10\", text: \"text-blue-400\", border: \"border-blue-500/20\" },\n embeds: [\"spotify\", \"soundcloud\"],\n traitSuggestions: [\n { key: \"Artist\" }, { key: \"Genre\", placeholder: \"Soundtrack\" }, { key: \"Mood\" }, { key: \"Label\" },\n ],\n },\n Video: {\n type: \"Video\",\n label: \"Video\",\n description: \"Films, animations, short-form video content\",\n icon: Clapperboard,\n color: { bg: \"bg-red-500/10\", text: \"text-red-400\", border: \"border-red-500/20\" },\n embeds: [\"youtube\", \"tiktok\", \"vimeo\"],\n traitSuggestions: [\n { key: \"Director\" }, { key: \"Genre\" }, { key: \"Cast\" }, { key: \"Studio\" },\n ],\n },\n Art: {\n type: \"Art\",\n label: \"Art\",\n description: \"Digital and physical artwork, illustrations, generative art\",\n icon: Palette,\n color: { bg: \"bg-purple-500/10\", text: \"text-purple-400\", border: \"border-purple-500/20\" },\n traitSuggestions: [\n { key: \"Medium\", placeholder: \"Oil on canvas\" },\n { key: \"Style\", placeholder: \"Impressionism\" },\n { key: \"Materials\" },\n { key: \"Series\" },\n ],\n },\n Photography: {\n type: \"Photography\",\n label: \"Photography\",\n description: \"Photography, photo essays, visual documentation\",\n icon: Camera,\n color: { bg: \"bg-orange-500/10\", text: \"text-orange-400\", border: \"border-orange-500/20\" },\n traitSuggestions: [\n { key: \"Camera\", placeholder: \"Sony A7 IV\" },\n { key: \"Location\" },\n { key: \"Series\" },\n { key: \"Edition\" },\n ],\n },\n Posts: {\n type: \"Posts\",\n label: \"Posts\",\n description: \"Articles, blog posts, social media content, essays\",\n icon: MessageSquare,\n color: { bg: \"bg-sky-500/10\", text: \"text-sky-400\", border: \"border-sky-500/20\" },\n socials: [\"x\", \"instagram\", \"facebook\", \"tiktok\", \"website\"],\n traitSuggestions: [\n { key: \"Author\" }, { key: \"Topic\" }, { key: \"Category\" },\n ],\n },\n Publications: {\n type: \"Publications\",\n label: \"Publications\",\n description: \"Books, journals, magazines, academic papers\",\n icon: BookOpen,\n color: { bg: \"bg-indigo-500/10\", text: \"text-indigo-400\", border: \"border-indigo-500/20\" },\n docUpload: DOC_UPLOAD,\n socials: [\"x\", \"instagram\", \"website\"],\n traitSuggestions: [\n { key: \"Author\" }, { key: \"Publisher\" }, { key: \"Language\", placeholder: \"English\" }, { key: \"Edition\" },\n ],\n },\n Documents: {\n type: \"Documents\",\n label: \"Documents\",\n description: \"Contracts, reports, whitepapers, legal documents\",\n icon: FileText,\n color: { bg: \"bg-zinc-500/10\", text: \"text-zinc-400\", border: \"border-zinc-500/20\" },\n docUpload: DOC_UPLOAD,\n traitSuggestions: [\n { key: \"Author\" }, { key: \"Category\" }, { key: \"Language\", placeholder: \"English\" },\n ],\n },\n Patents: {\n type: \"Patents\",\n label: \"Patents\",\n description: \"Patents, inventions, technical innovations\",\n icon: Award,\n color: { bg: \"bg-amber-500/10\", text: \"text-amber-400\", border: \"border-amber-500/20\" },\n docUpload: DOC_UPLOAD,\n traitSuggestions: [\n { key: \"Inventor\" }, { key: \"Field\" }, { key: \"Status\" },\n ],\n },\n Software: {\n type: \"Software\",\n label: \"Software\",\n description: \"Applications, scripts, algorithms, code libraries\",\n icon: Code2,\n color: { bg: \"bg-violet-500/10\", text: \"text-violet-400\", border: \"border-violet-500/20\" },\n docUpload: DOC_UPLOAD,\n socials: [\"website\"],\n traitSuggestions: [\n { key: \"Language\", placeholder: \"TypeScript\" }, { key: \"License\" }, { key: \"Platform\" },\n ],\n },\n NFT: {\n type: \"NFT\",\n label: \"NFT\",\n description: \"Blockchain-native digital assets and collectibles\",\n icon: Hexagon,\n color: { bg: \"bg-teal-500/10\", text: \"text-teal-400\", border: \"border-teal-500/20\" },\n traitSuggestions: [\n { key: \"Collection\" },\n { key: \"Edition\" },\n { key: \"Rarity\", options: [\"Common\", \"Uncommon\", \"Rare\", \"Epic\", \"Legendary\"] },\n ],\n },\n RWA: {\n type: \"RWA\",\n label: \"Real World Asset\",\n description: \"Tokenized physical assets: real estate, commodities, collectibles\",\n icon: Building2,\n color: { bg: \"bg-emerald-500/10\", text: \"text-emerald-400\", border: \"border-emerald-500/20\" },\n traitSuggestions: [\n { key: \"Asset Type\" }, { key: \"Location\" }, { key: \"Category\" },\n ],\n },\n Custom: {\n type: \"Custom\",\n label: \"Custom\",\n description: \"Custom IP type — add your own trait pairs for any metadata\",\n icon: Layers,\n color: { bg: \"bg-muted/50\", text: \"text-muted-foreground\", border: \"border-border\" },\n },\n};\n\n/**\n * All trait_type keys owned by templates (embeds + socials + suggestions), plus\n * \"IP Type\" itself. Used to filter template-managed attributes out of other\n * attribute grids so they aren't duplicated.\n */\nexport const TEMPLATE_TRAIT_TYPES = new Set<string>([\n \"IP Type\",\n DOC_UPLOAD.traitType,\n ...Object.values(EMBED_PLATFORM_META).map((m) => m.traitKey),\n ...Object.values(SOCIAL_PLATFORM_META).map((m) => m.traitKey),\n ...Object.values(IP_TEMPLATES).flatMap((t) => (t.traitSuggestions ?? []).map((s) => s.key)),\n]);\n"],"mappings":"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","names":[]}
@@ -20,6 +20,15 @@ interface TraitSuggestion {
20
20
  placeholder?: string;
21
21
  options?: string[];
22
22
  }
23
+ interface DocUploadConfig {
24
+ /** Stored trait_type carrying the ipfs:// URI of the uploaded document */
25
+ traitType: string;
26
+ /** File-input accept list */
27
+ accept: string;
28
+ maxMb: number;
29
+ /** Creator-facing explanation shown under the upload field */
30
+ hint: string;
31
+ }
23
32
  interface IPTemplate {
24
33
  type: IPType;
25
34
  label: string;
@@ -33,7 +42,13 @@ interface IPTemplate {
33
42
  embeds?: EmbedPlatform[];
34
43
  socials?: SocialPlatform[];
35
44
  traitSuggestions?: TraitSuggestion[];
45
+ /** Document/PDF upload to IPFS (Documents, Patents, Publications, Software) */
46
+ docUpload?: DocUploadConfig;
36
47
  }
48
+ /** The document itself, pinned to immutable IPFS — a timestamped copy of the
49
+ * work that stands as proof of authorship (Berne Convention: protection
50
+ * exists from fixation; an immutable dated copy is the evidence). */
51
+ declare const DOC_UPLOAD: DocUploadConfig;
37
52
  declare const IP_TEMPLATES: Record<IPType, IPTemplate>;
38
53
  /**
39
54
  * All trait_type keys owned by templates (embeds + socials + suggestions), plus
@@ -42,4 +57,4 @@ declare const IP_TEMPLATES: Record<IPType, IPTemplate>;
42
57
  */
43
58
  declare const TEMPLATE_TRAIT_TYPES: Set<string>;
44
59
 
45
- export { EMBED_PLATFORM_META, type EmbedPlatform, type IPTemplate, IP_TEMPLATES, SOCIAL_PLATFORM_META, type SocialPlatform, TEMPLATE_TRAIT_TYPES, type TraitSuggestion };
60
+ export { DOC_UPLOAD, type DocUploadConfig, EMBED_PLATFORM_META, type EmbedPlatform, type IPTemplate, IP_TEMPLATES, SOCIAL_PLATFORM_META, type SocialPlatform, TEMPLATE_TRAIT_TYPES, type TraitSuggestion };
@@ -20,6 +20,15 @@ interface TraitSuggestion {
20
20
  placeholder?: string;
21
21
  options?: string[];
22
22
  }
23
+ interface DocUploadConfig {
24
+ /** Stored trait_type carrying the ipfs:// URI of the uploaded document */
25
+ traitType: string;
26
+ /** File-input accept list */
27
+ accept: string;
28
+ maxMb: number;
29
+ /** Creator-facing explanation shown under the upload field */
30
+ hint: string;
31
+ }
23
32
  interface IPTemplate {
24
33
  type: IPType;
25
34
  label: string;
@@ -33,7 +42,13 @@ interface IPTemplate {
33
42
  embeds?: EmbedPlatform[];
34
43
  socials?: SocialPlatform[];
35
44
  traitSuggestions?: TraitSuggestion[];
45
+ /** Document/PDF upload to IPFS (Documents, Patents, Publications, Software) */
46
+ docUpload?: DocUploadConfig;
36
47
  }
48
+ /** The document itself, pinned to immutable IPFS — a timestamped copy of the
49
+ * work that stands as proof of authorship (Berne Convention: protection
50
+ * exists from fixation; an immutable dated copy is the evidence). */
51
+ declare const DOC_UPLOAD: DocUploadConfig;
37
52
  declare const IP_TEMPLATES: Record<IPType, IPTemplate>;
38
53
  /**
39
54
  * All trait_type keys owned by templates (embeds + socials + suggestions), plus
@@ -42,4 +57,4 @@ declare const IP_TEMPLATES: Record<IPType, IPTemplate>;
42
57
  */
43
58
  declare const TEMPLATE_TRAIT_TYPES: Set<string>;
44
59
 
45
- export { EMBED_PLATFORM_META, type EmbedPlatform, type IPTemplate, IP_TEMPLATES, SOCIAL_PLATFORM_META, type SocialPlatform, TEMPLATE_TRAIT_TYPES, type TraitSuggestion };
60
+ export { DOC_UPLOAD, type DocUploadConfig, EMBED_PLATFORM_META, type EmbedPlatform, type IPTemplate, IP_TEMPLATES, SOCIAL_PLATFORM_META, type SocialPlatform, TEMPLATE_TRAIT_TYPES, type TraitSuggestion };
@@ -34,6 +34,12 @@ const SOCIAL_PLATFORM_META = {
34
34
  tiktok: { label: "TikTok", icon: Video, traitKey: "TikTok", placeholder: "https://tiktok.com/@\u2026" },
35
35
  website: { label: "Website", icon: Globe, traitKey: "Website", placeholder: "https://\u2026" }
36
36
  };
37
+ const DOC_UPLOAD = {
38
+ traitType: "Document File",
39
+ accept: ".pdf,.doc,.docx,.txt,.md,.rtf,.odt",
40
+ maxMb: 20,
41
+ hint: "Stored permanently on IPFS \u2014 an immutable, timestamped copy of your work (proof of authorship under the Berne Convention)."
42
+ };
37
43
  const IP_TEMPLATES = {
38
44
  Audio: {
39
45
  type: "Audio",
@@ -108,6 +114,7 @@ const IP_TEMPLATES = {
108
114
  description: "Books, journals, magazines, academic papers",
109
115
  icon: BookOpen,
110
116
  color: { bg: "bg-indigo-500/10", text: "text-indigo-400", border: "border-indigo-500/20" },
117
+ docUpload: DOC_UPLOAD,
111
118
  socials: ["x", "instagram", "website"],
112
119
  traitSuggestions: [
113
120
  { key: "Author" },
@@ -122,6 +129,7 @@ const IP_TEMPLATES = {
122
129
  description: "Contracts, reports, whitepapers, legal documents",
123
130
  icon: FileText,
124
131
  color: { bg: "bg-zinc-500/10", text: "text-zinc-400", border: "border-zinc-500/20" },
132
+ docUpload: DOC_UPLOAD,
125
133
  traitSuggestions: [
126
134
  { key: "Author" },
127
135
  { key: "Category" },
@@ -134,6 +142,7 @@ const IP_TEMPLATES = {
134
142
  description: "Patents, inventions, technical innovations",
135
143
  icon: Award,
136
144
  color: { bg: "bg-amber-500/10", text: "text-amber-400", border: "border-amber-500/20" },
145
+ docUpload: DOC_UPLOAD,
137
146
  traitSuggestions: [
138
147
  { key: "Inventor" },
139
148
  { key: "Field" },
@@ -146,6 +155,7 @@ const IP_TEMPLATES = {
146
155
  description: "Applications, scripts, algorithms, code libraries",
147
156
  icon: Code2,
148
157
  color: { bg: "bg-violet-500/10", text: "text-violet-400", border: "border-violet-500/20" },
158
+ docUpload: DOC_UPLOAD,
149
159
  socials: ["website"],
150
160
  traitSuggestions: [
151
161
  { key: "Language", placeholder: "TypeScript" },
@@ -187,11 +197,13 @@ const IP_TEMPLATES = {
187
197
  };
188
198
  const TEMPLATE_TRAIT_TYPES = /* @__PURE__ */ new Set([
189
199
  "IP Type",
200
+ DOC_UPLOAD.traitType,
190
201
  ...Object.values(EMBED_PLATFORM_META).map((m) => m.traitKey),
191
202
  ...Object.values(SOCIAL_PLATFORM_META).map((m) => m.traitKey),
192
203
  ...Object.values(IP_TEMPLATES).flatMap((t) => (t.traitSuggestions ?? []).map((s) => s.key))
193
204
  ]);
194
205
  export {
206
+ DOC_UPLOAD,
195
207
  EMBED_PLATFORM_META,
196
208
  IP_TEMPLATES,
197
209
  SOCIAL_PLATFORM_META,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/data/ip-templates.ts"],"sourcesContent":["import {\n Music, Palette, FileText, Hexagon, Clapperboard, Camera,\n Award, MessageSquare, BookOpen, Building2, Code2, Layers,\n Music2, AudioLines, Youtube, Video, Twitter, Instagram, Facebook, Globe,\n type LucideIcon,\n} from \"lucide-react\";\nimport type { IPType } from \"./ip.js\";\n\n// ── Embeds (inline iframe players) ──────────────────────────────────────────\n// Only platforms with clean iframe embeds. Each maps to a stored trait_type key\n// so the asset page can render the player from metadata attributes.\nexport type EmbedPlatform = \"spotify\" | \"soundcloud\" | \"youtube\" | \"tiktok\" | \"vimeo\";\n\nexport const EMBED_PLATFORM_META: Record<\n EmbedPlatform,\n { label: string; icon: LucideIcon; traitKey: string; placeholder: string }\n> = {\n spotify: { label: \"Spotify\", icon: Music2, traitKey: \"Spotify URL\", placeholder: \"https://open.spotify.com/…\" },\n soundcloud: { label: \"SoundCloud\", icon: AudioLines, traitKey: \"SoundCloud URL\", placeholder: \"https://soundcloud.com/…\" },\n youtube: { label: \"YouTube\", icon: Youtube, traitKey: \"YouTube URL\", placeholder: \"https://youtube.com/watch?v=…\" },\n tiktok: { label: \"TikTok\", icon: Video, traitKey: \"TikTok URL\", placeholder: \"https://tiktok.com/@…/video/…\" },\n vimeo: { label: \"Vimeo\", icon: Video, traitKey: \"Vimeo URL\", placeholder: \"https://vimeo.com/…\" },\n};\n\n// ── Socials (icon-chip links — open in a new tab, never iframed) ────────────\n// X / Instagram / Facebook need fragile JS SDKs and sites block iframing, so\n// these render as clickable platform chips on the asset page, not players.\nexport type SocialPlatform = \"x\" | \"instagram\" | \"facebook\" | \"tiktok\" | \"website\";\n\nexport const SOCIAL_PLATFORM_META: Record<\n SocialPlatform,\n { label: string; icon: LucideIcon; traitKey: string; placeholder: string }\n> = {\n x: { label: \"X\", icon: Twitter, traitKey: \"X\", placeholder: \"https://x.com/…\" },\n instagram: { label: \"Instagram\", icon: Instagram, traitKey: \"Instagram\", placeholder: \"https://instagram.com/…\" },\n facebook: { label: \"Facebook\", icon: Facebook, traitKey: \"Facebook\", placeholder: \"https://facebook.com/…\" },\n tiktok: { label: \"TikTok\", icon: Video, traitKey: \"TikTok\", placeholder: \"https://tiktok.com/@…\" },\n website: { label: \"Website\", icon: Globe, traitKey: \"Website\", placeholder: \"https://…\" },\n};\n\n// ── Trait suggestions (friendly, no dates / no technical fields) ────────────\n// Tapping a suggestion pre-fills a trait row. Optional `options` renders the\n// value as a select (e.g. Rarity).\nexport interface TraitSuggestion {\n key: string;\n placeholder?: string;\n options?: string[];\n}\n\nexport interface IPTemplate {\n type: IPType;\n label: string;\n description: string;\n icon: LucideIcon;\n color: { bg: string; text: string; border: string };\n embeds?: EmbedPlatform[];\n socials?: SocialPlatform[];\n traitSuggestions?: TraitSuggestion[];\n}\n\nexport const IP_TEMPLATES: Record<IPType, IPTemplate> = {\n Audio: {\n type: \"Audio\",\n label: \"Audio\",\n description: \"Music, podcasts, sound effects, audio art\",\n icon: Music,\n color: { bg: \"bg-blue-500/10\", text: \"text-blue-400\", border: \"border-blue-500/20\" },\n embeds: [\"spotify\", \"soundcloud\"],\n traitSuggestions: [\n { key: \"Artist\" }, { key: \"Genre\", placeholder: \"Soundtrack\" }, { key: \"Mood\" }, { key: \"Label\" },\n ],\n },\n Video: {\n type: \"Video\",\n label: \"Video\",\n description: \"Films, animations, short-form video content\",\n icon: Clapperboard,\n color: { bg: \"bg-red-500/10\", text: \"text-red-400\", border: \"border-red-500/20\" },\n embeds: [\"youtube\", \"tiktok\", \"vimeo\"],\n traitSuggestions: [\n { key: \"Director\" }, { key: \"Genre\" }, { key: \"Cast\" }, { key: \"Studio\" },\n ],\n },\n Art: {\n type: \"Art\",\n label: \"Art\",\n description: \"Digital and physical artwork, illustrations, generative art\",\n icon: Palette,\n color: { bg: \"bg-purple-500/10\", text: \"text-purple-400\", border: \"border-purple-500/20\" },\n traitSuggestions: [\n { key: \"Medium\", placeholder: \"Oil on canvas\" },\n { key: \"Style\", placeholder: \"Impressionism\" },\n { key: \"Materials\" },\n { key: \"Series\" },\n ],\n },\n Photography: {\n type: \"Photography\",\n label: \"Photography\",\n description: \"Photography, photo essays, visual documentation\",\n icon: Camera,\n color: { bg: \"bg-orange-500/10\", text: \"text-orange-400\", border: \"border-orange-500/20\" },\n traitSuggestions: [\n { key: \"Camera\", placeholder: \"Sony A7 IV\" },\n { key: \"Location\" },\n { key: \"Series\" },\n { key: \"Edition\" },\n ],\n },\n Posts: {\n type: \"Posts\",\n label: \"Posts\",\n description: \"Articles, blog posts, social media content, essays\",\n icon: MessageSquare,\n color: { bg: \"bg-sky-500/10\", text: \"text-sky-400\", border: \"border-sky-500/20\" },\n socials: [\"x\", \"instagram\", \"facebook\", \"tiktok\", \"website\"],\n traitSuggestions: [\n { key: \"Author\" }, { key: \"Topic\" }, { key: \"Category\" },\n ],\n },\n Publications: {\n type: \"Publications\",\n label: \"Publications\",\n description: \"Books, journals, magazines, academic papers\",\n icon: BookOpen,\n color: { bg: \"bg-indigo-500/10\", text: \"text-indigo-400\", border: \"border-indigo-500/20\" },\n socials: [\"x\", \"instagram\", \"website\"],\n traitSuggestions: [\n { key: \"Author\" }, { key: \"Publisher\" }, { key: \"Language\", placeholder: \"English\" }, { key: \"Edition\" },\n ],\n },\n Documents: {\n type: \"Documents\",\n label: \"Documents\",\n description: \"Contracts, reports, whitepapers, legal documents\",\n icon: FileText,\n color: { bg: \"bg-zinc-500/10\", text: \"text-zinc-400\", border: \"border-zinc-500/20\" },\n traitSuggestions: [\n { key: \"Author\" }, { key: \"Category\" }, { key: \"Language\", placeholder: \"English\" },\n ],\n },\n Patents: {\n type: \"Patents\",\n label: \"Patents\",\n description: \"Patents, inventions, technical innovations\",\n icon: Award,\n color: { bg: \"bg-amber-500/10\", text: \"text-amber-400\", border: \"border-amber-500/20\" },\n traitSuggestions: [\n { key: \"Inventor\" }, { key: \"Field\" }, { key: \"Status\" },\n ],\n },\n Software: {\n type: \"Software\",\n label: \"Software\",\n description: \"Applications, scripts, algorithms, code libraries\",\n icon: Code2,\n color: { bg: \"bg-violet-500/10\", text: \"text-violet-400\", border: \"border-violet-500/20\" },\n socials: [\"website\"],\n traitSuggestions: [\n { key: \"Language\", placeholder: \"TypeScript\" }, { key: \"License\" }, { key: \"Platform\" },\n ],\n },\n NFT: {\n type: \"NFT\",\n label: \"NFT\",\n description: \"Blockchain-native digital assets and collectibles\",\n icon: Hexagon,\n color: { bg: \"bg-teal-500/10\", text: \"text-teal-400\", border: \"border-teal-500/20\" },\n traitSuggestions: [\n { key: \"Collection\" },\n { key: \"Edition\" },\n { key: \"Rarity\", options: [\"Common\", \"Uncommon\", \"Rare\", \"Epic\", \"Legendary\"] },\n ],\n },\n RWA: {\n type: \"RWA\",\n label: \"Real World Asset\",\n description: \"Tokenized physical assets: real estate, commodities, collectibles\",\n icon: Building2,\n color: { bg: \"bg-emerald-500/10\", text: \"text-emerald-400\", border: \"border-emerald-500/20\" },\n traitSuggestions: [\n { key: \"Asset Type\" }, { key: \"Location\" }, { key: \"Category\" },\n ],\n },\n Custom: {\n type: \"Custom\",\n label: \"Custom\",\n description: \"Custom IP type — add your own trait pairs for any metadata\",\n icon: Layers,\n color: { bg: \"bg-muted/50\", text: \"text-muted-foreground\", border: \"border-border\" },\n },\n};\n\n/**\n * All trait_type keys owned by templates (embeds + socials + suggestions), plus\n * \"IP Type\" itself. Used to filter template-managed attributes out of other\n * attribute grids so they aren't duplicated.\n */\nexport const TEMPLATE_TRAIT_TYPES = new Set<string>([\n \"IP Type\",\n ...Object.values(EMBED_PLATFORM_META).map((m) => m.traitKey),\n ...Object.values(SOCIAL_PLATFORM_META).map((m) => m.traitKey),\n ...Object.values(IP_TEMPLATES).flatMap((t) => (t.traitSuggestions ?? []).map((s) => s.key)),\n]);\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/data/ip-templates.ts"],"sourcesContent":["import {\n Music, Palette, FileText, Hexagon, Clapperboard, Camera,\n Award, MessageSquare, BookOpen, Building2, Code2, Layers,\n Music2, AudioLines, Youtube, Video, Twitter, Instagram, Facebook, Globe,\n type LucideIcon,\n} from \"lucide-react\";\nimport type { IPType } from \"./ip.js\";\n\n// ── Embeds (inline iframe players) ──────────────────────────────────────────\n// Only platforms with clean iframe embeds. Each maps to a stored trait_type key\n// so the asset page can render the player from metadata attributes.\nexport type EmbedPlatform = \"spotify\" | \"soundcloud\" | \"youtube\" | \"tiktok\" | \"vimeo\";\n\nexport const EMBED_PLATFORM_META: Record<\n EmbedPlatform,\n { label: string; icon: LucideIcon; traitKey: string; placeholder: string }\n> = {\n spotify: { label: \"Spotify\", icon: Music2, traitKey: \"Spotify URL\", placeholder: \"https://open.spotify.com/…\" },\n soundcloud: { label: \"SoundCloud\", icon: AudioLines, traitKey: \"SoundCloud URL\", placeholder: \"https://soundcloud.com/…\" },\n youtube: { label: \"YouTube\", icon: Youtube, traitKey: \"YouTube URL\", placeholder: \"https://youtube.com/watch?v=…\" },\n tiktok: { label: \"TikTok\", icon: Video, traitKey: \"TikTok URL\", placeholder: \"https://tiktok.com/@…/video/…\" },\n vimeo: { label: \"Vimeo\", icon: Video, traitKey: \"Vimeo URL\", placeholder: \"https://vimeo.com/…\" },\n};\n\n// ── Socials (icon-chip links — open in a new tab, never iframed) ────────────\n// X / Instagram / Facebook need fragile JS SDKs and sites block iframing, so\n// these render as clickable platform chips on the asset page, not players.\nexport type SocialPlatform = \"x\" | \"instagram\" | \"facebook\" | \"tiktok\" | \"website\";\n\nexport const SOCIAL_PLATFORM_META: Record<\n SocialPlatform,\n { label: string; icon: LucideIcon; traitKey: string; placeholder: string }\n> = {\n x: { label: \"X\", icon: Twitter, traitKey: \"X\", placeholder: \"https://x.com/…\" },\n instagram: { label: \"Instagram\", icon: Instagram, traitKey: \"Instagram\", placeholder: \"https://instagram.com/…\" },\n facebook: { label: \"Facebook\", icon: Facebook, traitKey: \"Facebook\", placeholder: \"https://facebook.com/…\" },\n tiktok: { label: \"TikTok\", icon: Video, traitKey: \"TikTok\", placeholder: \"https://tiktok.com/@…\" },\n website: { label: \"Website\", icon: Globe, traitKey: \"Website\", placeholder: \"https://…\" },\n};\n\n// ── Trait suggestions (friendly, no dates / no technical fields) ────────────\n// Tapping a suggestion pre-fills a trait row. Optional `options` renders the\n// value as a select (e.g. Rarity).\nexport interface TraitSuggestion {\n key: string;\n placeholder?: string;\n options?: string[];\n}\n\nexport interface DocUploadConfig {\n /** Stored trait_type carrying the ipfs:// URI of the uploaded document */\n traitType: string;\n /** File-input accept list */\n accept: string;\n maxMb: number;\n /** Creator-facing explanation shown under the upload field */\n hint: string;\n}\n\nexport interface IPTemplate {\n type: IPType;\n label: string;\n description: string;\n icon: LucideIcon;\n color: { bg: string; text: string; border: string };\n embeds?: EmbedPlatform[];\n socials?: SocialPlatform[];\n traitSuggestions?: TraitSuggestion[];\n /** Document/PDF upload to IPFS (Documents, Patents, Publications, Software) */\n docUpload?: DocUploadConfig;\n}\n\n/** The document itself, pinned to immutable IPFS — a timestamped copy of the\n * work that stands as proof of authorship (Berne Convention: protection\n * exists from fixation; an immutable dated copy is the evidence). */\nexport const DOC_UPLOAD: DocUploadConfig = {\n traitType: \"Document File\",\n accept: \".pdf,.doc,.docx,.txt,.md,.rtf,.odt\",\n maxMb: 20,\n hint: \"Stored permanently on IPFS — an immutable, timestamped copy of your work (proof of authorship under the Berne Convention).\",\n};\n\nexport const IP_TEMPLATES: Record<IPType, IPTemplate> = {\n Audio: {\n type: \"Audio\",\n label: \"Audio\",\n description: \"Music, podcasts, sound effects, audio art\",\n icon: Music,\n color: { bg: \"bg-blue-500/10\", text: \"text-blue-400\", border: \"border-blue-500/20\" },\n embeds: [\"spotify\", \"soundcloud\"],\n traitSuggestions: [\n { key: \"Artist\" }, { key: \"Genre\", placeholder: \"Soundtrack\" }, { key: \"Mood\" }, { key: \"Label\" },\n ],\n },\n Video: {\n type: \"Video\",\n label: \"Video\",\n description: \"Films, animations, short-form video content\",\n icon: Clapperboard,\n color: { bg: \"bg-red-500/10\", text: \"text-red-400\", border: \"border-red-500/20\" },\n embeds: [\"youtube\", \"tiktok\", \"vimeo\"],\n traitSuggestions: [\n { key: \"Director\" }, { key: \"Genre\" }, { key: \"Cast\" }, { key: \"Studio\" },\n ],\n },\n Art: {\n type: \"Art\",\n label: \"Art\",\n description: \"Digital and physical artwork, illustrations, generative art\",\n icon: Palette,\n color: { bg: \"bg-purple-500/10\", text: \"text-purple-400\", border: \"border-purple-500/20\" },\n traitSuggestions: [\n { key: \"Medium\", placeholder: \"Oil on canvas\" },\n { key: \"Style\", placeholder: \"Impressionism\" },\n { key: \"Materials\" },\n { key: \"Series\" },\n ],\n },\n Photography: {\n type: \"Photography\",\n label: \"Photography\",\n description: \"Photography, photo essays, visual documentation\",\n icon: Camera,\n color: { bg: \"bg-orange-500/10\", text: \"text-orange-400\", border: \"border-orange-500/20\" },\n traitSuggestions: [\n { key: \"Camera\", placeholder: \"Sony A7 IV\" },\n { key: \"Location\" },\n { key: \"Series\" },\n { key: \"Edition\" },\n ],\n },\n Posts: {\n type: \"Posts\",\n label: \"Posts\",\n description: \"Articles, blog posts, social media content, essays\",\n icon: MessageSquare,\n color: { bg: \"bg-sky-500/10\", text: \"text-sky-400\", border: \"border-sky-500/20\" },\n socials: [\"x\", \"instagram\", \"facebook\", \"tiktok\", \"website\"],\n traitSuggestions: [\n { key: \"Author\" }, { key: \"Topic\" }, { key: \"Category\" },\n ],\n },\n Publications: {\n type: \"Publications\",\n label: \"Publications\",\n description: \"Books, journals, magazines, academic papers\",\n icon: BookOpen,\n color: { bg: \"bg-indigo-500/10\", text: \"text-indigo-400\", border: \"border-indigo-500/20\" },\n docUpload: DOC_UPLOAD,\n socials: [\"x\", \"instagram\", \"website\"],\n traitSuggestions: [\n { key: \"Author\" }, { key: \"Publisher\" }, { key: \"Language\", placeholder: \"English\" }, { key: \"Edition\" },\n ],\n },\n Documents: {\n type: \"Documents\",\n label: \"Documents\",\n description: \"Contracts, reports, whitepapers, legal documents\",\n icon: FileText,\n color: { bg: \"bg-zinc-500/10\", text: \"text-zinc-400\", border: \"border-zinc-500/20\" },\n docUpload: DOC_UPLOAD,\n traitSuggestions: [\n { key: \"Author\" }, { key: \"Category\" }, { key: \"Language\", placeholder: \"English\" },\n ],\n },\n Patents: {\n type: \"Patents\",\n label: \"Patents\",\n description: \"Patents, inventions, technical innovations\",\n icon: Award,\n color: { bg: \"bg-amber-500/10\", text: \"text-amber-400\", border: \"border-amber-500/20\" },\n docUpload: DOC_UPLOAD,\n traitSuggestions: [\n { key: \"Inventor\" }, { key: \"Field\" }, { key: \"Status\" },\n ],\n },\n Software: {\n type: \"Software\",\n label: \"Software\",\n description: \"Applications, scripts, algorithms, code libraries\",\n icon: Code2,\n color: { bg: \"bg-violet-500/10\", text: \"text-violet-400\", border: \"border-violet-500/20\" },\n docUpload: DOC_UPLOAD,\n socials: [\"website\"],\n traitSuggestions: [\n { key: \"Language\", placeholder: \"TypeScript\" }, { key: \"License\" }, { key: \"Platform\" },\n ],\n },\n NFT: {\n type: \"NFT\",\n label: \"NFT\",\n description: \"Blockchain-native digital assets and collectibles\",\n icon: Hexagon,\n color: { bg: \"bg-teal-500/10\", text: \"text-teal-400\", border: \"border-teal-500/20\" },\n traitSuggestions: [\n { key: \"Collection\" },\n { key: \"Edition\" },\n { key: \"Rarity\", options: [\"Common\", \"Uncommon\", \"Rare\", \"Epic\", \"Legendary\"] },\n ],\n },\n RWA: {\n type: \"RWA\",\n label: \"Real World Asset\",\n description: \"Tokenized physical assets: real estate, commodities, collectibles\",\n icon: Building2,\n color: { bg: \"bg-emerald-500/10\", text: \"text-emerald-400\", border: \"border-emerald-500/20\" },\n traitSuggestions: [\n { key: \"Asset Type\" }, { key: \"Location\" }, { key: \"Category\" },\n ],\n },\n Custom: {\n type: \"Custom\",\n label: \"Custom\",\n description: \"Custom IP type — add your own trait pairs for any metadata\",\n icon: Layers,\n color: { bg: \"bg-muted/50\", text: \"text-muted-foreground\", border: \"border-border\" },\n },\n};\n\n/**\n * All trait_type keys owned by templates (embeds + socials + suggestions), plus\n * \"IP Type\" itself. Used to filter template-managed attributes out of other\n * attribute grids so they aren't duplicated.\n */\nexport const TEMPLATE_TRAIT_TYPES = new Set<string>([\n \"IP Type\",\n DOC_UPLOAD.traitType,\n ...Object.values(EMBED_PLATFORM_META).map((m) => m.traitKey),\n ...Object.values(SOCIAL_PLATFORM_META).map((m) => m.traitKey),\n ...Object.values(IP_TEMPLATES).flatMap((t) => (t.traitSuggestions ?? []).map((s) => s.key)),\n]);\n"],"mappings":"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","names":[]}
package/dist/index.cjs CHANGED
@@ -32,12 +32,17 @@ __export(index_exports, {
32
32
  AssetMediaColumn: () => import_asset_top_sections.AssetMediaColumn,
33
33
  AssetOverviewContent: () => import_asset_overview_content.AssetOverviewContent,
34
34
  BRAND: () => import_brand.BRAND,
35
+ CoinCard: () => import_coin_card.CoinCard,
36
+ CoinCardSkeleton: () => import_coin_card.CoinCardSkeleton,
37
+ CoinRow: () => import_coin_card.CoinRow,
38
+ CoinsExplorer: () => import_coins_explorer.CoinsExplorer,
35
39
  CollectionCard: () => import_collection_card.CollectionCard,
36
40
  CollectionCardSkeleton: () => import_collection_card.CollectionCardSkeleton,
37
41
  CtaCardGrid: () => import_cta_card_grid.CtaCardGrid,
38
42
  CurrencyAmount: () => import_currency_icon.CurrencyAmount,
39
43
  CurrencyIcon: () => import_currency_icon.CurrencyIcon,
40
44
  DERIVATIVES_OPTIONS: () => import_ip.DERIVATIVES_OPTIONS,
45
+ DOC_UPLOAD: () => import_ip_templates.DOC_UPLOAD,
41
46
  DiscoverCollectionsStrip: () => import_discover_collections_strip.DiscoverCollectionsStrip,
42
47
  DiscoverCreatorsStrip: () => import_discover_creators_strip.DiscoverCreatorsStrip,
43
48
  DiscoverFeedSection: () => import_discover_feed_section.DiscoverFeedSection,
@@ -88,8 +93,11 @@ __export(index_exports, {
88
93
  TokenCardSkeleton: () => import_token_card.TokenCardSkeleton,
89
94
  buildEditionStats: () => import_asset_top_sections.buildEditionStats,
90
95
  cn: () => import_cn.cn,
96
+ coinKind: () => import_coins.coinKind,
91
97
  derivePortfolioCounts: () => import_portfolio_counts.derivePortfolioCounts,
98
+ formatCoinPrice: () => import_coins.formatCoinPrice,
92
99
  formatDisplayPrice: () => import_format.formatDisplayPrice,
100
+ formatFdv: () => import_coins.formatFdv,
93
101
  ipfsToHttp: () => import_ipfs.ipfsToHttp,
94
102
  shortenAddress: () => import_address.shortenAddress,
95
103
  timeAgo: () => import_time.timeAgo,
@@ -121,6 +129,9 @@ var import_scroll_section = require("./components/scroll-section.js");
121
129
  var import_share_button = require("./components/share-button.js");
122
130
  var import_collection_card = require("./components/collection-card.js");
123
131
  var import_token_card = require("./components/token-card.js");
132
+ var import_coins = require("./data/coins.js");
133
+ var import_coin_card = require("./components/coin-card.js");
134
+ var import_coins_explorer = require("./components/coins-explorer.js");
124
135
  var import_time = require("./utils/time.js");
125
136
  var import_activity = require("./data/activity.js");
126
137
  var import_hero_slider = require("./components/hero-slider.js");
@@ -157,12 +168,17 @@ var import_portfolio_counts = require("./utils/portfolio-counts.js");
157
168
  AssetMediaColumn,
158
169
  AssetOverviewContent,
159
170
  BRAND,
171
+ CoinCard,
172
+ CoinCardSkeleton,
173
+ CoinRow,
174
+ CoinsExplorer,
160
175
  CollectionCard,
161
176
  CollectionCardSkeleton,
162
177
  CtaCardGrid,
163
178
  CurrencyAmount,
164
179
  CurrencyIcon,
165
180
  DERIVATIVES_OPTIONS,
181
+ DOC_UPLOAD,
166
182
  DiscoverCollectionsStrip,
167
183
  DiscoverCreatorsStrip,
168
184
  DiscoverFeedSection,
@@ -213,8 +229,11 @@ var import_portfolio_counts = require("./utils/portfolio-counts.js");
213
229
  TokenCardSkeleton,
214
230
  buildEditionStats,
215
231
  cn,
232
+ coinKind,
216
233
  derivePortfolioCounts,
234
+ formatCoinPrice,
217
235
  formatDisplayPrice,
236
+ formatFdv,
218
237
  ipfsToHttp,
219
238
  shortenAddress,
220
239
  timeAgo,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["// ── Utils ─────────────────────────────────────────────────────────────────────\nexport { cn } from \"./utils/cn.js\";\nexport { formatDisplayPrice } from \"./utils/format.js\";\nexport { shortenAddress } from \"./utils/address.js\";\nexport { ipfsToHttp } from \"./utils/ipfs.js\";\n\n// ── Data (server-safe — no React, safe in Server Components) ──────────────────\nexport { IP_TYPE_DATA, IP_TYPE_DATA_MAP } from \"./data/ip-types.js\";\nexport type { IpTypeData } from \"./data/ip-types.js\";\nexport {\n IP_TYPES, LICENSE_TYPES, GEOGRAPHIC_SCOPES, AI_POLICIES,\n DERIVATIVES_OPTIONS, LICENSE_TRAIT_TYPES,\n} from \"./data/ip.js\";\nexport type { IPType, LicenseType } from \"./data/ip.js\";\nexport {\n IP_TEMPLATES, EMBED_PLATFORM_META, SOCIAL_PLATFORM_META, TEMPLATE_TRAIT_TYPES,\n} from \"./data/ip-templates.js\";\nexport type { EmbedPlatform, SocialPlatform, TraitSuggestion, IPTemplate } from \"./data/ip-templates.js\";\nexport { IPTypeDisplay } from \"./components/ip-type-display.js\";\nexport { AssetOverviewContent } from \"./components/asset-overview-content.js\";\nexport { AssetMarketsTab } from \"./components/asset-markets-tab.js\";\nexport { ParentAttributionBanner } from \"./components/parent-attribution-banner.js\";\nexport type { ParentBannerProps } from \"./components/parent-attribution-banner.js\";\nexport { AssetMediaColumn, AssetHeaderBlock, buildEditionStats } from \"./components/asset-top-sections.js\";\nexport { BRAND } from \"./data/brand.js\";\n\n// ── Components (client-only — all have \"use client\") ─────────────────────────\nexport { CurrencyIcon, CurrencyAmount } from \"./components/currency-icon.js\";\nexport type { CurrencyIconProps, CurrencyAmountProps } from \"./components/currency-icon.js\";\n\nexport { IpTypeBadge, IP_TYPE_CONFIG, IP_TYPE_MAP } from \"./components/ip-type-badge.js\";\nexport type { IpTypeBadgeProps, IpTypeConfig } from \"./components/ip-type-badge.js\";\n\nexport { AddressDisplay } from \"./components/address-display.js\";\nexport type { AddressDisplayProps } from \"./components/address-display.js\";\n\nexport { MedialaneIcon } from \"./components/brand-icon.js\";\nexport type { MedialaneIconProps } from \"./components/brand-icon.js\";\nexport { MedialaneLogoFull } from \"./components/brand-logo.js\";\nexport type { MedialaneLogoFullProps } from \"./components/brand-logo.js\";\n\n// ── v0.2 additions ────────────────────────────────────────────────────────────\nexport { MotionCard, FadeIn, Stagger, StaggerItem, KineticWords, SPRING, EASE_OUT } from \"./components/motion-primitives.js\";\nexport { PageContainer } from \"./components/page-container.js\";\nexport type { PageContainerProps } from \"./components/page-container.js\";\nexport { ScrollSection } from \"./components/scroll-section.js\";\nexport type { ScrollSectionProps } from \"./components/scroll-section.js\";\nexport { ShareButton } from \"./components/share-button.js\";\nexport type { ShareButtonProps } from \"./components/share-button.js\";\nexport { CollectionCard, CollectionCardSkeleton } from \"./components/collection-card.js\";\nexport type { CollectionCardProps } from \"./components/collection-card.js\";\nexport { TokenCard, TokenCardSkeleton } from \"./components/token-card.js\";\nexport type { TokenCardProps, RarityTier } from \"./components/token-card.js\";\n\n// ── v0.3 additions ────────────────────────────────────────────────────────────\nexport { timeAgo, timeUntil } from \"./utils/time.js\";\nexport { ACTIVITY_TYPE_CONFIG, TYPE_FILTERS } from \"./data/activity.js\";\nexport type { ActivityTypeConfig } from \"./data/activity.js\";\nexport { HeroSlider, HeroSliderSkeleton } from \"./components/hero-slider.js\";\nexport type { HeroSliderProps } from \"./components/hero-slider.js\";\nexport { ActivityTicker } from \"./components/activity-ticker.js\";\nexport type { ActivityTickerProps } from \"./components/activity-ticker.js\";\nexport { ListingCard, ListingCardSkeleton } from \"./components/listing-card.js\";\nexport type { ListingCardProps } from \"./components/listing-card.js\";\nexport { ActivityRow } from \"./components/activity-row.js\";\nexport type { ActivityRowProps } from \"./components/activity-row.js\";\nexport { ActivityFeedShell } from \"./components/activity-feed-shell.js\";\nexport type { ActivityFeedShellProps } from \"./components/activity-feed-shell.js\";\nexport { CtaCardGrid } from \"./components/cta-card-grid.js\";\nexport type { CtaCardGridProps, CtaCardItem } from \"./components/cta-card-grid.js\";\n\n// ── v0.3.2 additions ─────────────────────────────────────────────────────────\nexport { DiscoverHero } from \"./components/discover-hero.js\";\nexport type { DiscoverHeroProps } from \"./components/discover-hero.js\";\nexport { FeaturedCarousel, FeaturedCarouselSkeleton } from \"./components/featured-carousel.js\";\nexport type { FeaturedCarouselProps } from \"./components/featured-carousel.js\";\nexport { DiscoverCollectionsStrip } from \"./components/discover-collections-strip.js\";\nexport type { DiscoverCollectionsStripProps } from \"./components/discover-collections-strip.js\";\nexport { DiscoverCreatorsStrip } from \"./components/discover-creators-strip.js\";\nexport type { DiscoverCreatorsStripProps } from \"./components/discover-creators-strip.js\";\nexport { DiscoverFeedSection } from \"./components/discover-feed-section.js\";\nexport type { DiscoverFeedSectionProps } from \"./components/discover-feed-section.js\";\nexport { ActivityCard, ActivityCardSkeleton, ACTIVITY_MESSAGES } from \"./components/activity-card.js\";\nexport type { ActivityCardProps } from \"./components/activity-card.js\";\n\n// ── Launchpad (grouped sections — single page-UI source since 0.8.0) ─────────\nexport { LaunchpadGroupedSections, LaunchpadServiceCard, SERVICE_HUES } from \"./components/launchpad-services.js\";\nexport { LaunchpadStrip } from \"./components/launchpad-strip.js\";\nexport type { LaunchpadStripProps } from \"./components/launchpad-strip.js\";\nexport type { LaunchpadGroupedSectionsProps, LaunchpadServiceCardProps, ServiceOverride, ServiceOverrides } from \"./components/launchpad-services.js\";\nexport { LAUNCHPAD_SERVICE_DEFINITIONS, LAUNCHPAD_SERVICE_GROUPS } from \"./data/launchpad-services.js\";\nexport type { ServiceDefinition, ServiceStatus, ServiceCategory, ServiceGroup, ServiceGroupDefinition } from \"./data/launchpad-services.js\";\n\n// ── v0.5.0 additions ─────────────────────────────────────────────────────────\nexport { NavCommandMenu, useNavCommandMenu } from \"./components/nav-command-menu.js\";\nexport type { NavCommand, NavCommandGroup, NavCommandMenuProps } from \"./components/nav-command-menu.js\";\n\n// ── v0.6.0 additions — portfolio subnav + counts ────────────────────────────\nexport { PortfolioSubnav } from \"./components/portfolio-subnav.js\";\nexport type {\n PortfolioSubnavProps,\n PortfolioNavItem,\n PortfolioNavGroup,\n PortfolioBadgeVariant,\n} from \"./components/portfolio-subnav.js\";\nexport { derivePortfolioCounts } from \"./utils/portfolio-counts.js\";\nexport type { PortfolioCounts, CountableOrder } from \"./utils/portfolio-counts.js\";\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,gBAAmB;AACnB,oBAAmC;AACnC,qBAA+B;AAC/B,kBAA2B;AAG3B,sBAA+C;AAE/C,gBAGO;AAEP,0BAEO;AAEP,6BAA8B;AAC9B,oCAAqC;AACrC,+BAAgC;AAChC,uCAAwC;AAExC,gCAAsE;AACtE,mBAAsB;AAGtB,2BAA6C;AAG7C,2BAAyD;AAGzD,6BAA+B;AAG/B,wBAA8B;AAE9B,wBAAkC;AAIlC,+BAAyF;AACzF,4BAA8B;AAE9B,4BAA8B;AAE9B,0BAA4B;AAE5B,6BAAuD;AAEvD,wBAA6C;AAI7C,kBAAmC;AACnC,sBAAmD;AAEnD,yBAA+C;AAE/C,6BAA+B;AAE/B,0BAAiD;AAEjD,0BAA4B;AAE5B,iCAAkC;AAElC,2BAA4B;AAI5B,2BAA6B;AAE7B,+BAA2D;AAE3D,wCAAyC;AAEzC,qCAAsC;AAEtC,mCAAoC;AAEpC,2BAAsE;AAItE,gCAA6E;AAC7E,6BAA+B;AAG/B,IAAAA,6BAAwE;AAIxE,8BAAkD;AAIlD,8BAAgC;AAOhC,8BAAsC;","names":["import_launchpad_services"]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["// ── Utils ─────────────────────────────────────────────────────────────────────\nexport { cn } from \"./utils/cn.js\";\nexport { formatDisplayPrice } from \"./utils/format.js\";\nexport { shortenAddress } from \"./utils/address.js\";\nexport { ipfsToHttp } from \"./utils/ipfs.js\";\n\n// ── Data (server-safe — no React, safe in Server Components) ──────────────────\nexport { IP_TYPE_DATA, IP_TYPE_DATA_MAP } from \"./data/ip-types.js\";\nexport type { IpTypeData } from \"./data/ip-types.js\";\nexport {\n IP_TYPES, LICENSE_TYPES, GEOGRAPHIC_SCOPES, AI_POLICIES,\n DERIVATIVES_OPTIONS, LICENSE_TRAIT_TYPES,\n} from \"./data/ip.js\";\nexport type { IPType, LicenseType } from \"./data/ip.js\";\nexport {\n IP_TEMPLATES, EMBED_PLATFORM_META, SOCIAL_PLATFORM_META, TEMPLATE_TRAIT_TYPES, DOC_UPLOAD,\n} from \"./data/ip-templates.js\";\nexport type { EmbedPlatform, SocialPlatform, TraitSuggestion, IPTemplate, DocUploadConfig } from \"./data/ip-templates.js\";\nexport { IPTypeDisplay } from \"./components/ip-type-display.js\";\nexport { AssetOverviewContent } from \"./components/asset-overview-content.js\";\nexport { AssetMarketsTab } from \"./components/asset-markets-tab.js\";\nexport { ParentAttributionBanner } from \"./components/parent-attribution-banner.js\";\nexport type { ParentBannerProps } from \"./components/parent-attribution-banner.js\";\nexport { AssetMediaColumn, AssetHeaderBlock, buildEditionStats } from \"./components/asset-top-sections.js\";\nexport { BRAND } from \"./data/brand.js\";\n\n// ── Components (client-only — all have \"use client\") ─────────────────────────\nexport { CurrencyIcon, CurrencyAmount } from \"./components/currency-icon.js\";\nexport type { CurrencyIconProps, CurrencyAmountProps } from \"./components/currency-icon.js\";\n\nexport { IpTypeBadge, IP_TYPE_CONFIG, IP_TYPE_MAP } from \"./components/ip-type-badge.js\";\nexport type { IpTypeBadgeProps, IpTypeConfig } from \"./components/ip-type-badge.js\";\n\nexport { AddressDisplay } from \"./components/address-display.js\";\nexport type { AddressDisplayProps } from \"./components/address-display.js\";\n\nexport { MedialaneIcon } from \"./components/brand-icon.js\";\nexport type { MedialaneIconProps } from \"./components/brand-icon.js\";\nexport { MedialaneLogoFull } from \"./components/brand-logo.js\";\nexport type { MedialaneLogoFullProps } from \"./components/brand-logo.js\";\n\n// ── v0.2 additions ────────────────────────────────────────────────────────────\nexport { MotionCard, FadeIn, Stagger, StaggerItem, KineticWords, SPRING, EASE_OUT } from \"./components/motion-primitives.js\";\nexport { PageContainer } from \"./components/page-container.js\";\nexport type { PageContainerProps } from \"./components/page-container.js\";\nexport { ScrollSection } from \"./components/scroll-section.js\";\nexport type { ScrollSectionProps } from \"./components/scroll-section.js\";\nexport { ShareButton } from \"./components/share-button.js\";\nexport type { ShareButtonProps } from \"./components/share-button.js\";\nexport { CollectionCard, CollectionCardSkeleton } from \"./components/collection-card.js\";\nexport type { CollectionCardProps } from \"./components/collection-card.js\";\nexport { TokenCard, TokenCardSkeleton } from \"./components/token-card.js\";\nexport type { TokenCardProps, RarityTier } from \"./components/token-card.js\";\n// ── Coin discovery (chain-agnostic; price/data/href injected by the app) ─────\nexport {\n coinKind, formatCoinPrice, formatFdv,\n type CoinKind, type CoinCollectionLike, type CoinPriceLike,\n} from \"./data/coins.js\";\nexport { CoinCard, CoinRow, CoinCardSkeleton, type UseCoinPrice, type CoinTileProps } from \"./components/coin-card.js\";\nexport {\n CoinsExplorer,\n type CoinsExplorerProps, type CoinFilter, type CoinSort, type UseCoins,\n} from \"./components/coins-explorer.js\";\n\n// ── v0.3 additions ────────────────────────────────────────────────────────────\nexport { timeAgo, timeUntil } from \"./utils/time.js\";\nexport { ACTIVITY_TYPE_CONFIG, TYPE_FILTERS } from \"./data/activity.js\";\nexport type { ActivityTypeConfig } from \"./data/activity.js\";\nexport { HeroSlider, HeroSliderSkeleton } from \"./components/hero-slider.js\";\nexport type { HeroSliderProps } from \"./components/hero-slider.js\";\nexport { ActivityTicker } from \"./components/activity-ticker.js\";\nexport type { ActivityTickerProps } from \"./components/activity-ticker.js\";\nexport { ListingCard, ListingCardSkeleton } from \"./components/listing-card.js\";\nexport type { ListingCardProps } from \"./components/listing-card.js\";\nexport { ActivityRow } from \"./components/activity-row.js\";\nexport type { ActivityRowProps } from \"./components/activity-row.js\";\nexport { ActivityFeedShell } from \"./components/activity-feed-shell.js\";\nexport type { ActivityFeedShellProps } from \"./components/activity-feed-shell.js\";\nexport { CtaCardGrid } from \"./components/cta-card-grid.js\";\nexport type { CtaCardGridProps, CtaCardItem } from \"./components/cta-card-grid.js\";\n\n// ── v0.3.2 additions ─────────────────────────────────────────────────────────\nexport { DiscoverHero } from \"./components/discover-hero.js\";\nexport type { DiscoverHeroProps } from \"./components/discover-hero.js\";\nexport { FeaturedCarousel, FeaturedCarouselSkeleton } from \"./components/featured-carousel.js\";\nexport type { FeaturedCarouselProps } from \"./components/featured-carousel.js\";\nexport { DiscoverCollectionsStrip } from \"./components/discover-collections-strip.js\";\nexport type { DiscoverCollectionsStripProps } from \"./components/discover-collections-strip.js\";\nexport { DiscoverCreatorsStrip } from \"./components/discover-creators-strip.js\";\nexport type { DiscoverCreatorsStripProps } from \"./components/discover-creators-strip.js\";\nexport { DiscoverFeedSection } from \"./components/discover-feed-section.js\";\nexport type { DiscoverFeedSectionProps } from \"./components/discover-feed-section.js\";\nexport { ActivityCard, ActivityCardSkeleton, ACTIVITY_MESSAGES } from \"./components/activity-card.js\";\nexport type { ActivityCardProps } from \"./components/activity-card.js\";\n\n// ── Launchpad (grouped sections — single page-UI source since 0.8.0) ─────────\nexport { LaunchpadGroupedSections, LaunchpadServiceCard, SERVICE_HUES } from \"./components/launchpad-services.js\";\nexport { LaunchpadStrip } from \"./components/launchpad-strip.js\";\nexport type { LaunchpadStripProps } from \"./components/launchpad-strip.js\";\nexport type { LaunchpadGroupedSectionsProps, LaunchpadServiceCardProps, ServiceOverride, ServiceOverrides } from \"./components/launchpad-services.js\";\nexport { LAUNCHPAD_SERVICE_DEFINITIONS, LAUNCHPAD_SERVICE_GROUPS } from \"./data/launchpad-services.js\";\nexport type { ServiceDefinition, ServiceStatus, ServiceCategory, ServiceGroup, ServiceGroupDefinition } from \"./data/launchpad-services.js\";\n\n// ── v0.5.0 additions ─────────────────────────────────────────────────────────\nexport { NavCommandMenu, useNavCommandMenu } from \"./components/nav-command-menu.js\";\nexport type { NavCommand, NavCommandGroup, NavCommandMenuProps } from \"./components/nav-command-menu.js\";\n\n// ── v0.6.0 additions — portfolio subnav + counts ────────────────────────────\nexport { PortfolioSubnav } from \"./components/portfolio-subnav.js\";\nexport type {\n PortfolioSubnavProps,\n PortfolioNavItem,\n PortfolioNavGroup,\n PortfolioBadgeVariant,\n} from \"./components/portfolio-subnav.js\";\nexport { derivePortfolioCounts } from \"./utils/portfolio-counts.js\";\nexport type { PortfolioCounts, CountableOrder } from \"./utils/portfolio-counts.js\";\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,gBAAmB;AACnB,oBAAmC;AACnC,qBAA+B;AAC/B,kBAA2B;AAG3B,sBAA+C;AAE/C,gBAGO;AAEP,0BAEO;AAEP,6BAA8B;AAC9B,oCAAqC;AACrC,+BAAgC;AAChC,uCAAwC;AAExC,gCAAsE;AACtE,mBAAsB;AAGtB,2BAA6C;AAG7C,2BAAyD;AAGzD,6BAA+B;AAG/B,wBAA8B;AAE9B,wBAAkC;AAIlC,+BAAyF;AACzF,4BAA8B;AAE9B,4BAA8B;AAE9B,0BAA4B;AAE5B,6BAAuD;AAEvD,wBAA6C;AAG7C,mBAGO;AACP,uBAA2F;AAC3F,4BAGO;AAGP,kBAAmC;AACnC,sBAAmD;AAEnD,yBAA+C;AAE/C,6BAA+B;AAE/B,0BAAiD;AAEjD,0BAA4B;AAE5B,iCAAkC;AAElC,2BAA4B;AAI5B,2BAA6B;AAE7B,+BAA2D;AAE3D,wCAAyC;AAEzC,qCAAsC;AAEtC,mCAAoC;AAEpC,2BAAsE;AAItE,gCAA6E;AAC7E,6BAA+B;AAG/B,IAAAA,6BAAwE;AAIxE,8BAAkD;AAIlD,8BAAgC;AAOhC,8BAAsC;","names":["import_launchpad_services"]}
package/dist/index.d.cts CHANGED
@@ -4,7 +4,7 @@ export { shortenAddress } from './utils/address.cjs';
4
4
  export { ipfsToHttp } from './utils/ipfs.cjs';
5
5
  export { IP_TYPE_DATA, IP_TYPE_DATA_MAP, IpTypeData } from './data/ip-types.cjs';
6
6
  export { AI_POLICIES, DERIVATIVES_OPTIONS, GEOGRAPHIC_SCOPES, IPType, IP_TYPES, LICENSE_TRAIT_TYPES, LICENSE_TYPES, LicenseType } from './data/ip.cjs';
7
- export { EMBED_PLATFORM_META, EmbedPlatform, IPTemplate, IP_TEMPLATES, SOCIAL_PLATFORM_META, SocialPlatform, TEMPLATE_TRAIT_TYPES, TraitSuggestion } from './data/ip-templates.cjs';
7
+ export { DOC_UPLOAD, DocUploadConfig, EMBED_PLATFORM_META, EmbedPlatform, IPTemplate, IP_TEMPLATES, SOCIAL_PLATFORM_META, SocialPlatform, TEMPLATE_TRAIT_TYPES, TraitSuggestion } from './data/ip-templates.cjs';
8
8
  export { IPTypeDisplay } from './components/ip-type-display.cjs';
9
9
  export { AssetOverviewContent } from './components/asset-overview-content.cjs';
10
10
  export { AssetMarketsTab } from './components/asset-markets-tab.cjs';
@@ -22,6 +22,9 @@ export { ScrollSection, ScrollSectionProps } from './components/scroll-section.c
22
22
  export { ShareButton, ShareButtonProps } from './components/share-button.cjs';
23
23
  export { CollectionCard, CollectionCardProps, CollectionCardSkeleton } from './components/collection-card.cjs';
24
24
  export { RarityTier, TokenCard, TokenCardProps, TokenCardSkeleton } from './components/token-card.cjs';
25
+ export { CoinCollectionLike, CoinKind, CoinPriceLike, coinKind, formatCoinPrice, formatFdv } from './data/coins.cjs';
26
+ export { CoinCard, CoinCardSkeleton, CoinRow, CoinTileProps, UseCoinPrice } from './components/coin-card.cjs';
27
+ export { CoinFilter, CoinSort, CoinsExplorer, CoinsExplorerProps, UseCoins } from './components/coins-explorer.cjs';
25
28
  export { timeAgo, timeUntil } from './utils/time.cjs';
26
29
  export { ACTIVITY_TYPE_CONFIG, ActivityTypeConfig, TYPE_FILTERS } from './data/activity.cjs';
27
30
  export { HeroSlider, HeroSliderProps, HeroSliderSkeleton } from './components/hero-slider.cjs';
package/dist/index.d.ts CHANGED
@@ -4,7 +4,7 @@ export { shortenAddress } from './utils/address.js';
4
4
  export { ipfsToHttp } from './utils/ipfs.js';
5
5
  export { IP_TYPE_DATA, IP_TYPE_DATA_MAP, IpTypeData } from './data/ip-types.js';
6
6
  export { AI_POLICIES, DERIVATIVES_OPTIONS, GEOGRAPHIC_SCOPES, IPType, IP_TYPES, LICENSE_TRAIT_TYPES, LICENSE_TYPES, LicenseType } from './data/ip.js';
7
- export { EMBED_PLATFORM_META, EmbedPlatform, IPTemplate, IP_TEMPLATES, SOCIAL_PLATFORM_META, SocialPlatform, TEMPLATE_TRAIT_TYPES, TraitSuggestion } from './data/ip-templates.js';
7
+ export { DOC_UPLOAD, DocUploadConfig, EMBED_PLATFORM_META, EmbedPlatform, IPTemplate, IP_TEMPLATES, SOCIAL_PLATFORM_META, SocialPlatform, TEMPLATE_TRAIT_TYPES, TraitSuggestion } from './data/ip-templates.js';
8
8
  export { IPTypeDisplay } from './components/ip-type-display.js';
9
9
  export { AssetOverviewContent } from './components/asset-overview-content.js';
10
10
  export { AssetMarketsTab } from './components/asset-markets-tab.js';
@@ -22,6 +22,9 @@ export { ScrollSection, ScrollSectionProps } from './components/scroll-section.j
22
22
  export { ShareButton, ShareButtonProps } from './components/share-button.js';
23
23
  export { CollectionCard, CollectionCardProps, CollectionCardSkeleton } from './components/collection-card.js';
24
24
  export { RarityTier, TokenCard, TokenCardProps, TokenCardSkeleton } from './components/token-card.js';
25
+ export { CoinCollectionLike, CoinKind, CoinPriceLike, coinKind, formatCoinPrice, formatFdv } from './data/coins.js';
26
+ export { CoinCard, CoinCardSkeleton, CoinRow, CoinTileProps, UseCoinPrice } from './components/coin-card.js';
27
+ export { CoinFilter, CoinSort, CoinsExplorer, CoinsExplorerProps, UseCoins } from './components/coins-explorer.js';
25
28
  export { timeAgo, timeUntil } from './utils/time.js';
26
29
  export { ACTIVITY_TYPE_CONFIG, ActivityTypeConfig, TYPE_FILTERS } from './data/activity.js';
27
30
  export { HeroSlider, HeroSliderProps, HeroSliderSkeleton } from './components/hero-slider.js';
package/dist/index.js CHANGED
@@ -15,7 +15,8 @@ import {
15
15
  IP_TEMPLATES,
16
16
  EMBED_PLATFORM_META,
17
17
  SOCIAL_PLATFORM_META,
18
- TEMPLATE_TRAIT_TYPES
18
+ TEMPLATE_TRAIT_TYPES,
19
+ DOC_UPLOAD
19
20
  } from "./data/ip-templates.js";
20
21
  import { IPTypeDisplay } from "./components/ip-type-display.js";
21
22
  import { AssetOverviewContent } from "./components/asset-overview-content.js";
@@ -34,6 +35,15 @@ import { ScrollSection } from "./components/scroll-section.js";
34
35
  import { ShareButton } from "./components/share-button.js";
35
36
  import { CollectionCard, CollectionCardSkeleton } from "./components/collection-card.js";
36
37
  import { TokenCard, TokenCardSkeleton } from "./components/token-card.js";
38
+ import {
39
+ coinKind,
40
+ formatCoinPrice,
41
+ formatFdv
42
+ } from "./data/coins.js";
43
+ import { CoinCard, CoinRow, CoinCardSkeleton } from "./components/coin-card.js";
44
+ import {
45
+ CoinsExplorer
46
+ } from "./components/coins-explorer.js";
37
47
  import { timeAgo, timeUntil } from "./utils/time.js";
38
48
  import { ACTIVITY_TYPE_CONFIG, TYPE_FILTERS } from "./data/activity.js";
39
49
  import { HeroSlider, HeroSliderSkeleton } from "./components/hero-slider.js";
@@ -69,12 +79,17 @@ export {
69
79
  AssetMediaColumn,
70
80
  AssetOverviewContent,
71
81
  BRAND,
82
+ CoinCard,
83
+ CoinCardSkeleton,
84
+ CoinRow,
85
+ CoinsExplorer,
72
86
  CollectionCard,
73
87
  CollectionCardSkeleton,
74
88
  CtaCardGrid,
75
89
  CurrencyAmount,
76
90
  CurrencyIcon,
77
91
  DERIVATIVES_OPTIONS,
92
+ DOC_UPLOAD,
78
93
  DiscoverCollectionsStrip,
79
94
  DiscoverCreatorsStrip,
80
95
  DiscoverFeedSection,
@@ -125,8 +140,11 @@ export {
125
140
  TokenCardSkeleton,
126
141
  buildEditionStats,
127
142
  cn,
143
+ coinKind,
128
144
  derivePortfolioCounts,
145
+ formatCoinPrice,
129
146
  formatDisplayPrice,
147
+ formatFdv,
130
148
  ipfsToHttp,
131
149
  shortenAddress,
132
150
  timeAgo,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["// ── Utils ─────────────────────────────────────────────────────────────────────\nexport { cn } from \"./utils/cn.js\";\nexport { formatDisplayPrice } from \"./utils/format.js\";\nexport { shortenAddress } from \"./utils/address.js\";\nexport { ipfsToHttp } from \"./utils/ipfs.js\";\n\n// ── Data (server-safe — no React, safe in Server Components) ──────────────────\nexport { IP_TYPE_DATA, IP_TYPE_DATA_MAP } from \"./data/ip-types.js\";\nexport type { IpTypeData } from \"./data/ip-types.js\";\nexport {\n IP_TYPES, LICENSE_TYPES, GEOGRAPHIC_SCOPES, AI_POLICIES,\n DERIVATIVES_OPTIONS, LICENSE_TRAIT_TYPES,\n} from \"./data/ip.js\";\nexport type { IPType, LicenseType } from \"./data/ip.js\";\nexport {\n IP_TEMPLATES, EMBED_PLATFORM_META, SOCIAL_PLATFORM_META, TEMPLATE_TRAIT_TYPES,\n} from \"./data/ip-templates.js\";\nexport type { EmbedPlatform, SocialPlatform, TraitSuggestion, IPTemplate } from \"./data/ip-templates.js\";\nexport { IPTypeDisplay } from \"./components/ip-type-display.js\";\nexport { AssetOverviewContent } from \"./components/asset-overview-content.js\";\nexport { AssetMarketsTab } from \"./components/asset-markets-tab.js\";\nexport { ParentAttributionBanner } from \"./components/parent-attribution-banner.js\";\nexport type { ParentBannerProps } from \"./components/parent-attribution-banner.js\";\nexport { AssetMediaColumn, AssetHeaderBlock, buildEditionStats } from \"./components/asset-top-sections.js\";\nexport { BRAND } from \"./data/brand.js\";\n\n// ── Components (client-only — all have \"use client\") ─────────────────────────\nexport { CurrencyIcon, CurrencyAmount } from \"./components/currency-icon.js\";\nexport type { CurrencyIconProps, CurrencyAmountProps } from \"./components/currency-icon.js\";\n\nexport { IpTypeBadge, IP_TYPE_CONFIG, IP_TYPE_MAP } from \"./components/ip-type-badge.js\";\nexport type { IpTypeBadgeProps, IpTypeConfig } from \"./components/ip-type-badge.js\";\n\nexport { AddressDisplay } from \"./components/address-display.js\";\nexport type { AddressDisplayProps } from \"./components/address-display.js\";\n\nexport { MedialaneIcon } from \"./components/brand-icon.js\";\nexport type { MedialaneIconProps } from \"./components/brand-icon.js\";\nexport { MedialaneLogoFull } from \"./components/brand-logo.js\";\nexport type { MedialaneLogoFullProps } from \"./components/brand-logo.js\";\n\n// ── v0.2 additions ────────────────────────────────────────────────────────────\nexport { MotionCard, FadeIn, Stagger, StaggerItem, KineticWords, SPRING, EASE_OUT } from \"./components/motion-primitives.js\";\nexport { PageContainer } from \"./components/page-container.js\";\nexport type { PageContainerProps } from \"./components/page-container.js\";\nexport { ScrollSection } from \"./components/scroll-section.js\";\nexport type { ScrollSectionProps } from \"./components/scroll-section.js\";\nexport { ShareButton } from \"./components/share-button.js\";\nexport type { ShareButtonProps } from \"./components/share-button.js\";\nexport { CollectionCard, CollectionCardSkeleton } from \"./components/collection-card.js\";\nexport type { CollectionCardProps } from \"./components/collection-card.js\";\nexport { TokenCard, TokenCardSkeleton } from \"./components/token-card.js\";\nexport type { TokenCardProps, RarityTier } from \"./components/token-card.js\";\n\n// ── v0.3 additions ────────────────────────────────────────────────────────────\nexport { timeAgo, timeUntil } from \"./utils/time.js\";\nexport { ACTIVITY_TYPE_CONFIG, TYPE_FILTERS } from \"./data/activity.js\";\nexport type { ActivityTypeConfig } from \"./data/activity.js\";\nexport { HeroSlider, HeroSliderSkeleton } from \"./components/hero-slider.js\";\nexport type { HeroSliderProps } from \"./components/hero-slider.js\";\nexport { ActivityTicker } from \"./components/activity-ticker.js\";\nexport type { ActivityTickerProps } from \"./components/activity-ticker.js\";\nexport { ListingCard, ListingCardSkeleton } from \"./components/listing-card.js\";\nexport type { ListingCardProps } from \"./components/listing-card.js\";\nexport { ActivityRow } from \"./components/activity-row.js\";\nexport type { ActivityRowProps } from \"./components/activity-row.js\";\nexport { ActivityFeedShell } from \"./components/activity-feed-shell.js\";\nexport type { ActivityFeedShellProps } from \"./components/activity-feed-shell.js\";\nexport { CtaCardGrid } from \"./components/cta-card-grid.js\";\nexport type { CtaCardGridProps, CtaCardItem } from \"./components/cta-card-grid.js\";\n\n// ── v0.3.2 additions ─────────────────────────────────────────────────────────\nexport { DiscoverHero } from \"./components/discover-hero.js\";\nexport type { DiscoverHeroProps } from \"./components/discover-hero.js\";\nexport { FeaturedCarousel, FeaturedCarouselSkeleton } from \"./components/featured-carousel.js\";\nexport type { FeaturedCarouselProps } from \"./components/featured-carousel.js\";\nexport { DiscoverCollectionsStrip } from \"./components/discover-collections-strip.js\";\nexport type { DiscoverCollectionsStripProps } from \"./components/discover-collections-strip.js\";\nexport { DiscoverCreatorsStrip } from \"./components/discover-creators-strip.js\";\nexport type { DiscoverCreatorsStripProps } from \"./components/discover-creators-strip.js\";\nexport { DiscoverFeedSection } from \"./components/discover-feed-section.js\";\nexport type { DiscoverFeedSectionProps } from \"./components/discover-feed-section.js\";\nexport { ActivityCard, ActivityCardSkeleton, ACTIVITY_MESSAGES } from \"./components/activity-card.js\";\nexport type { ActivityCardProps } from \"./components/activity-card.js\";\n\n// ── Launchpad (grouped sections — single page-UI source since 0.8.0) ─────────\nexport { LaunchpadGroupedSections, LaunchpadServiceCard, SERVICE_HUES } from \"./components/launchpad-services.js\";\nexport { LaunchpadStrip } from \"./components/launchpad-strip.js\";\nexport type { LaunchpadStripProps } from \"./components/launchpad-strip.js\";\nexport type { LaunchpadGroupedSectionsProps, LaunchpadServiceCardProps, ServiceOverride, ServiceOverrides } from \"./components/launchpad-services.js\";\nexport { LAUNCHPAD_SERVICE_DEFINITIONS, LAUNCHPAD_SERVICE_GROUPS } from \"./data/launchpad-services.js\";\nexport type { ServiceDefinition, ServiceStatus, ServiceCategory, ServiceGroup, ServiceGroupDefinition } from \"./data/launchpad-services.js\";\n\n// ── v0.5.0 additions ─────────────────────────────────────────────────────────\nexport { NavCommandMenu, useNavCommandMenu } from \"./components/nav-command-menu.js\";\nexport type { NavCommand, NavCommandGroup, NavCommandMenuProps } from \"./components/nav-command-menu.js\";\n\n// ── v0.6.0 additions — portfolio subnav + counts ────────────────────────────\nexport { PortfolioSubnav } from \"./components/portfolio-subnav.js\";\nexport type {\n PortfolioSubnavProps,\n PortfolioNavItem,\n PortfolioNavGroup,\n PortfolioBadgeVariant,\n} from \"./components/portfolio-subnav.js\";\nexport { derivePortfolioCounts } from \"./utils/portfolio-counts.js\";\nexport type { PortfolioCounts, CountableOrder } from \"./utils/portfolio-counts.js\";\n"],"mappings":"AACA,SAAS,UAAU;AACnB,SAAS,0BAA0B;AACnC,SAAS,sBAAsB;AAC/B,SAAS,kBAAkB;AAG3B,SAAS,cAAc,wBAAwB;AAE/C;AAAA,EACE;AAAA,EAAU;AAAA,EAAe;AAAA,EAAmB;AAAA,EAC5C;AAAA,EAAqB;AAAA,OAChB;AAEP;AAAA,EACE;AAAA,EAAc;AAAA,EAAqB;AAAA,EAAsB;AAAA,OACpD;AAEP,SAAS,qBAAqB;AAC9B,SAAS,4BAA4B;AACrC,SAAS,uBAAuB;AAChC,SAAS,+BAA+B;AAExC,SAAS,kBAAkB,kBAAkB,yBAAyB;AACtE,SAAS,aAAa;AAGtB,SAAS,cAAc,sBAAsB;AAG7C,SAAS,aAAa,gBAAgB,mBAAmB;AAGzD,SAAS,sBAAsB;AAG/B,SAAS,qBAAqB;AAE9B,SAAS,yBAAyB;AAIlC,SAAS,YAAY,QAAQ,SAAS,aAAa,cAAc,QAAQ,gBAAgB;AACzF,SAAS,qBAAqB;AAE9B,SAAS,qBAAqB;AAE9B,SAAS,mBAAmB;AAE5B,SAAS,gBAAgB,8BAA8B;AAEvD,SAAS,WAAW,yBAAyB;AAI7C,SAAS,SAAS,iBAAiB;AACnC,SAAS,sBAAsB,oBAAoB;AAEnD,SAAS,YAAY,0BAA0B;AAE/C,SAAS,sBAAsB;AAE/B,SAAS,aAAa,2BAA2B;AAEjD,SAAS,mBAAmB;AAE5B,SAAS,yBAAyB;AAElC,SAAS,mBAAmB;AAI5B,SAAS,oBAAoB;AAE7B,SAAS,kBAAkB,gCAAgC;AAE3D,SAAS,gCAAgC;AAEzC,SAAS,6BAA6B;AAEtC,SAAS,2BAA2B;AAEpC,SAAS,cAAc,sBAAsB,yBAAyB;AAItE,SAAS,0BAA0B,sBAAsB,oBAAoB;AAC7E,SAAS,sBAAsB;AAG/B,SAAS,+BAA+B,gCAAgC;AAIxE,SAAS,gBAAgB,yBAAyB;AAIlD,SAAS,uBAAuB;AAOhC,SAAS,6BAA6B;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["// ── Utils ─────────────────────────────────────────────────────────────────────\nexport { cn } from \"./utils/cn.js\";\nexport { formatDisplayPrice } from \"./utils/format.js\";\nexport { shortenAddress } from \"./utils/address.js\";\nexport { ipfsToHttp } from \"./utils/ipfs.js\";\n\n// ── Data (server-safe — no React, safe in Server Components) ──────────────────\nexport { IP_TYPE_DATA, IP_TYPE_DATA_MAP } from \"./data/ip-types.js\";\nexport type { IpTypeData } from \"./data/ip-types.js\";\nexport {\n IP_TYPES, LICENSE_TYPES, GEOGRAPHIC_SCOPES, AI_POLICIES,\n DERIVATIVES_OPTIONS, LICENSE_TRAIT_TYPES,\n} from \"./data/ip.js\";\nexport type { IPType, LicenseType } from \"./data/ip.js\";\nexport {\n IP_TEMPLATES, EMBED_PLATFORM_META, SOCIAL_PLATFORM_META, TEMPLATE_TRAIT_TYPES, DOC_UPLOAD,\n} from \"./data/ip-templates.js\";\nexport type { EmbedPlatform, SocialPlatform, TraitSuggestion, IPTemplate, DocUploadConfig } from \"./data/ip-templates.js\";\nexport { IPTypeDisplay } from \"./components/ip-type-display.js\";\nexport { AssetOverviewContent } from \"./components/asset-overview-content.js\";\nexport { AssetMarketsTab } from \"./components/asset-markets-tab.js\";\nexport { ParentAttributionBanner } from \"./components/parent-attribution-banner.js\";\nexport type { ParentBannerProps } from \"./components/parent-attribution-banner.js\";\nexport { AssetMediaColumn, AssetHeaderBlock, buildEditionStats } from \"./components/asset-top-sections.js\";\nexport { BRAND } from \"./data/brand.js\";\n\n// ── Components (client-only — all have \"use client\") ─────────────────────────\nexport { CurrencyIcon, CurrencyAmount } from \"./components/currency-icon.js\";\nexport type { CurrencyIconProps, CurrencyAmountProps } from \"./components/currency-icon.js\";\n\nexport { IpTypeBadge, IP_TYPE_CONFIG, IP_TYPE_MAP } from \"./components/ip-type-badge.js\";\nexport type { IpTypeBadgeProps, IpTypeConfig } from \"./components/ip-type-badge.js\";\n\nexport { AddressDisplay } from \"./components/address-display.js\";\nexport type { AddressDisplayProps } from \"./components/address-display.js\";\n\nexport { MedialaneIcon } from \"./components/brand-icon.js\";\nexport type { MedialaneIconProps } from \"./components/brand-icon.js\";\nexport { MedialaneLogoFull } from \"./components/brand-logo.js\";\nexport type { MedialaneLogoFullProps } from \"./components/brand-logo.js\";\n\n// ── v0.2 additions ────────────────────────────────────────────────────────────\nexport { MotionCard, FadeIn, Stagger, StaggerItem, KineticWords, SPRING, EASE_OUT } from \"./components/motion-primitives.js\";\nexport { PageContainer } from \"./components/page-container.js\";\nexport type { PageContainerProps } from \"./components/page-container.js\";\nexport { ScrollSection } from \"./components/scroll-section.js\";\nexport type { ScrollSectionProps } from \"./components/scroll-section.js\";\nexport { ShareButton } from \"./components/share-button.js\";\nexport type { ShareButtonProps } from \"./components/share-button.js\";\nexport { CollectionCard, CollectionCardSkeleton } from \"./components/collection-card.js\";\nexport type { CollectionCardProps } from \"./components/collection-card.js\";\nexport { TokenCard, TokenCardSkeleton } from \"./components/token-card.js\";\nexport type { TokenCardProps, RarityTier } from \"./components/token-card.js\";\n// ── Coin discovery (chain-agnostic; price/data/href injected by the app) ─────\nexport {\n coinKind, formatCoinPrice, formatFdv,\n type CoinKind, type CoinCollectionLike, type CoinPriceLike,\n} from \"./data/coins.js\";\nexport { CoinCard, CoinRow, CoinCardSkeleton, type UseCoinPrice, type CoinTileProps } from \"./components/coin-card.js\";\nexport {\n CoinsExplorer,\n type CoinsExplorerProps, type CoinFilter, type CoinSort, type UseCoins,\n} from \"./components/coins-explorer.js\";\n\n// ── v0.3 additions ────────────────────────────────────────────────────────────\nexport { timeAgo, timeUntil } from \"./utils/time.js\";\nexport { ACTIVITY_TYPE_CONFIG, TYPE_FILTERS } from \"./data/activity.js\";\nexport type { ActivityTypeConfig } from \"./data/activity.js\";\nexport { HeroSlider, HeroSliderSkeleton } from \"./components/hero-slider.js\";\nexport type { HeroSliderProps } from \"./components/hero-slider.js\";\nexport { ActivityTicker } from \"./components/activity-ticker.js\";\nexport type { ActivityTickerProps } from \"./components/activity-ticker.js\";\nexport { ListingCard, ListingCardSkeleton } from \"./components/listing-card.js\";\nexport type { ListingCardProps } from \"./components/listing-card.js\";\nexport { ActivityRow } from \"./components/activity-row.js\";\nexport type { ActivityRowProps } from \"./components/activity-row.js\";\nexport { ActivityFeedShell } from \"./components/activity-feed-shell.js\";\nexport type { ActivityFeedShellProps } from \"./components/activity-feed-shell.js\";\nexport { CtaCardGrid } from \"./components/cta-card-grid.js\";\nexport type { CtaCardGridProps, CtaCardItem } from \"./components/cta-card-grid.js\";\n\n// ── v0.3.2 additions ─────────────────────────────────────────────────────────\nexport { DiscoverHero } from \"./components/discover-hero.js\";\nexport type { DiscoverHeroProps } from \"./components/discover-hero.js\";\nexport { FeaturedCarousel, FeaturedCarouselSkeleton } from \"./components/featured-carousel.js\";\nexport type { FeaturedCarouselProps } from \"./components/featured-carousel.js\";\nexport { DiscoverCollectionsStrip } from \"./components/discover-collections-strip.js\";\nexport type { DiscoverCollectionsStripProps } from \"./components/discover-collections-strip.js\";\nexport { DiscoverCreatorsStrip } from \"./components/discover-creators-strip.js\";\nexport type { DiscoverCreatorsStripProps } from \"./components/discover-creators-strip.js\";\nexport { DiscoverFeedSection } from \"./components/discover-feed-section.js\";\nexport type { DiscoverFeedSectionProps } from \"./components/discover-feed-section.js\";\nexport { ActivityCard, ActivityCardSkeleton, ACTIVITY_MESSAGES } from \"./components/activity-card.js\";\nexport type { ActivityCardProps } from \"./components/activity-card.js\";\n\n// ── Launchpad (grouped sections — single page-UI source since 0.8.0) ─────────\nexport { LaunchpadGroupedSections, LaunchpadServiceCard, SERVICE_HUES } from \"./components/launchpad-services.js\";\nexport { LaunchpadStrip } from \"./components/launchpad-strip.js\";\nexport type { LaunchpadStripProps } from \"./components/launchpad-strip.js\";\nexport type { LaunchpadGroupedSectionsProps, LaunchpadServiceCardProps, ServiceOverride, ServiceOverrides } from \"./components/launchpad-services.js\";\nexport { LAUNCHPAD_SERVICE_DEFINITIONS, LAUNCHPAD_SERVICE_GROUPS } from \"./data/launchpad-services.js\";\nexport type { ServiceDefinition, ServiceStatus, ServiceCategory, ServiceGroup, ServiceGroupDefinition } from \"./data/launchpad-services.js\";\n\n// ── v0.5.0 additions ─────────────────────────────────────────────────────────\nexport { NavCommandMenu, useNavCommandMenu } from \"./components/nav-command-menu.js\";\nexport type { NavCommand, NavCommandGroup, NavCommandMenuProps } from \"./components/nav-command-menu.js\";\n\n// ── v0.6.0 additions — portfolio subnav + counts ────────────────────────────\nexport { PortfolioSubnav } from \"./components/portfolio-subnav.js\";\nexport type {\n PortfolioSubnavProps,\n PortfolioNavItem,\n PortfolioNavGroup,\n PortfolioBadgeVariant,\n} from \"./components/portfolio-subnav.js\";\nexport { derivePortfolioCounts } from \"./utils/portfolio-counts.js\";\nexport type { PortfolioCounts, CountableOrder } from \"./utils/portfolio-counts.js\";\n"],"mappings":"AACA,SAAS,UAAU;AACnB,SAAS,0BAA0B;AACnC,SAAS,sBAAsB;AAC/B,SAAS,kBAAkB;AAG3B,SAAS,cAAc,wBAAwB;AAE/C;AAAA,EACE;AAAA,EAAU;AAAA,EAAe;AAAA,EAAmB;AAAA,EAC5C;AAAA,EAAqB;AAAA,OAChB;AAEP;AAAA,EACE;AAAA,EAAc;AAAA,EAAqB;AAAA,EAAsB;AAAA,EAAsB;AAAA,OAC1E;AAEP,SAAS,qBAAqB;AAC9B,SAAS,4BAA4B;AACrC,SAAS,uBAAuB;AAChC,SAAS,+BAA+B;AAExC,SAAS,kBAAkB,kBAAkB,yBAAyB;AACtE,SAAS,aAAa;AAGtB,SAAS,cAAc,sBAAsB;AAG7C,SAAS,aAAa,gBAAgB,mBAAmB;AAGzD,SAAS,sBAAsB;AAG/B,SAAS,qBAAqB;AAE9B,SAAS,yBAAyB;AAIlC,SAAS,YAAY,QAAQ,SAAS,aAAa,cAAc,QAAQ,gBAAgB;AACzF,SAAS,qBAAqB;AAE9B,SAAS,qBAAqB;AAE9B,SAAS,mBAAmB;AAE5B,SAAS,gBAAgB,8BAA8B;AAEvD,SAAS,WAAW,yBAAyB;AAG7C;AAAA,EACE;AAAA,EAAU;AAAA,EAAiB;AAAA,OAEtB;AACP,SAAS,UAAU,SAAS,wBAA+D;AAC3F;AAAA,EACE;AAAA,OAEK;AAGP,SAAS,SAAS,iBAAiB;AACnC,SAAS,sBAAsB,oBAAoB;AAEnD,SAAS,YAAY,0BAA0B;AAE/C,SAAS,sBAAsB;AAE/B,SAAS,aAAa,2BAA2B;AAEjD,SAAS,mBAAmB;AAE5B,SAAS,yBAAyB;AAElC,SAAS,mBAAmB;AAI5B,SAAS,oBAAoB;AAE7B,SAAS,kBAAkB,gCAAgC;AAE3D,SAAS,gCAAgC;AAEzC,SAAS,6BAA6B;AAEtC,SAAS,2BAA2B;AAEpC,SAAS,cAAc,sBAAsB,yBAAyB;AAItE,SAAS,0BAA0B,sBAAsB,oBAAoB;AAC7E,SAAS,sBAAsB;AAG/B,SAAS,+BAA+B,gCAAgC;AAIxE,SAAS,gBAAgB,yBAAyB;AAIlD,SAAS,uBAAuB;AAOhC,SAAS,6BAA6B;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@medialane/ui",
3
- "version": "0.13.1",
3
+ "version": "0.15.0",
4
4
  "description": "Shared UI components for Medialane apps",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",