@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.
- package/README.md +31 -5
- package/dist/components/coin-card.cjs +131 -0
- package/dist/components/coin-card.cjs.map +1 -0
- package/dist/components/coin-card.d.cts +19 -0
- package/dist/components/coin-card.d.ts +19 -0
- package/dist/components/coin-card.js +99 -0
- package/dist/components/coin-card.js.map +1 -0
- package/dist/components/coins-explorer.cjs +117 -0
- package/dist/components/coins-explorer.cjs.map +1 -0
- package/dist/components/coins-explorer.d.cts +23 -0
- package/dist/components/coins-explorer.d.ts +23 -0
- package/dist/components/coins-explorer.js +93 -0
- package/dist/components/coins-explorer.js.map +1 -0
- package/dist/components/ip-type-display.cjs +26 -1
- package/dist/components/ip-type-display.cjs.map +1 -1
- package/dist/components/ip-type-display.js +27 -2
- package/dist/components/ip-type-display.js.map +1 -1
- package/dist/data/coins.cjs +48 -0
- package/dist/data/coins.cjs.map +1 -0
- package/dist/data/coins.d.cts +33 -0
- package/dist/data/coins.d.ts +33 -0
- package/dist/data/coins.js +22 -0
- package/dist/data/coins.js.map +1 -0
- package/dist/data/ip-templates.cjs +13 -0
- package/dist/data/ip-templates.cjs.map +1 -1
- package/dist/data/ip-templates.d.cts +16 -1
- package/dist/data/ip-templates.d.ts +16 -1
- package/dist/data/ip-templates.js +12 -0
- package/dist/data/ip-templates.js.map +1 -1
- package/dist/index.cjs +19 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +19 -1
- package/dist/index.js.map +1 -1
- 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,
|
package/dist/index.cjs.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":";;;;;;;;;;;;;;;;;;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;
|
|
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,
|
|
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":[]}
|