@medialane/ui 0.12.1 → 0.13.1

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 (55) hide show
  1. package/dist/components/asset-markets-tab.cjs +111 -0
  2. package/dist/components/asset-markets-tab.cjs.map +1 -0
  3. package/dist/components/asset-markets-tab.d.cts +16 -0
  4. package/dist/components/asset-markets-tab.d.ts +16 -0
  5. package/dist/components/asset-markets-tab.js +87 -0
  6. package/dist/components/asset-markets-tab.js.map +1 -0
  7. package/dist/components/asset-overview-content.cjs +102 -0
  8. package/dist/components/asset-overview-content.cjs.map +1 -0
  9. package/dist/components/asset-overview-content.d.cts +14 -0
  10. package/dist/components/asset-overview-content.d.ts +14 -0
  11. package/dist/components/asset-overview-content.js +78 -0
  12. package/dist/components/asset-overview-content.js.map +1 -0
  13. package/dist/components/asset-top-sections.cjs +147 -0
  14. package/dist/components/asset-top-sections.cjs.map +1 -0
  15. package/dist/components/asset-top-sections.d.cts +34 -0
  16. package/dist/components/asset-top-sections.d.ts +34 -0
  17. package/dist/components/asset-top-sections.js +111 -0
  18. package/dist/components/asset-top-sections.js.map +1 -0
  19. package/dist/components/ip-type-display.cjs +201 -0
  20. package/dist/components/ip-type-display.cjs.map +1 -0
  21. package/dist/components/ip-type-display.d.cts +12 -0
  22. package/dist/components/ip-type-display.d.ts +12 -0
  23. package/dist/components/ip-type-display.js +181 -0
  24. package/dist/components/ip-type-display.js.map +1 -0
  25. package/dist/components/parent-attribution-banner.cjs +57 -0
  26. package/dist/components/parent-attribution-banner.cjs.map +1 -0
  27. package/dist/components/parent-attribution-banner.d.cts +11 -0
  28. package/dist/components/parent-attribution-banner.d.ts +11 -0
  29. package/dist/components/parent-attribution-banner.js +23 -0
  30. package/dist/components/parent-attribution-banner.js.map +1 -0
  31. package/dist/data/ip-templates.cjs +206 -0
  32. package/dist/data/ip-templates.cjs.map +1 -0
  33. package/dist/data/ip-templates.d.cts +45 -0
  34. package/dist/data/ip-templates.d.ts +45 -0
  35. package/dist/data/ip-templates.js +200 -0
  36. package/dist/data/ip-templates.js.map +1 -0
  37. package/dist/data/ip.cjs +163 -0
  38. package/dist/data/ip.cjs.map +1 -0
  39. package/dist/data/ip.d.cts +18 -0
  40. package/dist/data/ip.d.ts +18 -0
  41. package/dist/data/ip.js +134 -0
  42. package/dist/data/ip.js.map +1 -0
  43. package/dist/index.cjs +43 -0
  44. package/dist/index.cjs.map +1 -1
  45. package/dist/index.d.cts +10 -3
  46. package/dist/index.d.ts +10 -3
  47. package/dist/index.js +38 -1
  48. package/dist/index.js.map +1 -1
  49. package/dist/utils/time.cjs +15 -2
  50. package/dist/utils/time.cjs.map +1 -1
  51. package/dist/utils/time.d.cts +3 -1
  52. package/dist/utils/time.d.ts +3 -1
  53. package/dist/utils/time.js +13 -1
  54. package/dist/utils/time.js.map +1 -1
  55. package/package.json +1 -1
package/dist/index.cjs CHANGED
@@ -20,28 +20,39 @@ var index_exports = {};
20
20
  __export(index_exports, {
21
21
  ACTIVITY_MESSAGES: () => import_activity_card.ACTIVITY_MESSAGES,
22
22
  ACTIVITY_TYPE_CONFIG: () => import_activity.ACTIVITY_TYPE_CONFIG,
23
+ AI_POLICIES: () => import_ip.AI_POLICIES,
23
24
  ActivityCard: () => import_activity_card.ActivityCard,
24
25
  ActivityCardSkeleton: () => import_activity_card.ActivityCardSkeleton,
25
26
  ActivityFeedShell: () => import_activity_feed_shell.ActivityFeedShell,
26
27
  ActivityRow: () => import_activity_row.ActivityRow,
27
28
  ActivityTicker: () => import_activity_ticker.ActivityTicker,
28
29
  AddressDisplay: () => import_address_display.AddressDisplay,
30
+ AssetHeaderBlock: () => import_asset_top_sections.AssetHeaderBlock,
31
+ AssetMarketsTab: () => import_asset_markets_tab.AssetMarketsTab,
32
+ AssetMediaColumn: () => import_asset_top_sections.AssetMediaColumn,
33
+ AssetOverviewContent: () => import_asset_overview_content.AssetOverviewContent,
29
34
  BRAND: () => import_brand.BRAND,
30
35
  CollectionCard: () => import_collection_card.CollectionCard,
31
36
  CollectionCardSkeleton: () => import_collection_card.CollectionCardSkeleton,
32
37
  CtaCardGrid: () => import_cta_card_grid.CtaCardGrid,
33
38
  CurrencyAmount: () => import_currency_icon.CurrencyAmount,
34
39
  CurrencyIcon: () => import_currency_icon.CurrencyIcon,
40
+ DERIVATIVES_OPTIONS: () => import_ip.DERIVATIVES_OPTIONS,
35
41
  DiscoverCollectionsStrip: () => import_discover_collections_strip.DiscoverCollectionsStrip,
36
42
  DiscoverCreatorsStrip: () => import_discover_creators_strip.DiscoverCreatorsStrip,
37
43
  DiscoverFeedSection: () => import_discover_feed_section.DiscoverFeedSection,
38
44
  DiscoverHero: () => import_discover_hero.DiscoverHero,
39
45
  EASE_OUT: () => import_motion_primitives.EASE_OUT,
46
+ EMBED_PLATFORM_META: () => import_ip_templates.EMBED_PLATFORM_META,
40
47
  FadeIn: () => import_motion_primitives.FadeIn,
41
48
  FeaturedCarousel: () => import_featured_carousel.FeaturedCarousel,
42
49
  FeaturedCarouselSkeleton: () => import_featured_carousel.FeaturedCarouselSkeleton,
50
+ GEOGRAPHIC_SCOPES: () => import_ip.GEOGRAPHIC_SCOPES,
43
51
  HeroSlider: () => import_hero_slider.HeroSlider,
44
52
  HeroSliderSkeleton: () => import_hero_slider.HeroSliderSkeleton,
53
+ IPTypeDisplay: () => import_ip_type_display.IPTypeDisplay,
54
+ IP_TEMPLATES: () => import_ip_templates.IP_TEMPLATES,
55
+ IP_TYPES: () => import_ip.IP_TYPES,
45
56
  IP_TYPE_CONFIG: () => import_ip_type_badge.IP_TYPE_CONFIG,
46
57
  IP_TYPE_DATA: () => import_ip_types.IP_TYPE_DATA,
47
58
  IP_TYPE_DATA_MAP: () => import_ip_types.IP_TYPE_DATA_MAP,
@@ -50,6 +61,8 @@ __export(index_exports, {
50
61
  KineticWords: () => import_motion_primitives.KineticWords,
51
62
  LAUNCHPAD_SERVICE_DEFINITIONS: () => import_launchpad_services2.LAUNCHPAD_SERVICE_DEFINITIONS,
52
63
  LAUNCHPAD_SERVICE_GROUPS: () => import_launchpad_services2.LAUNCHPAD_SERVICE_GROUPS,
64
+ LICENSE_TRAIT_TYPES: () => import_ip.LICENSE_TRAIT_TYPES,
65
+ LICENSE_TYPES: () => import_ip.LICENSE_TYPES,
53
66
  LaunchpadGroupedSections: () => import_launchpad_services.LaunchpadGroupedSections,
54
67
  LaunchpadServiceCard: () => import_launchpad_services.LaunchpadServiceCard,
55
68
  LaunchpadStrip: () => import_launchpad_strip.LaunchpadStrip,
@@ -60,22 +73,27 @@ __export(index_exports, {
60
73
  MotionCard: () => import_motion_primitives.MotionCard,
61
74
  NavCommandMenu: () => import_nav_command_menu.NavCommandMenu,
62
75
  PageContainer: () => import_page_container.PageContainer,
76
+ ParentAttributionBanner: () => import_parent_attribution_banner.ParentAttributionBanner,
63
77
  PortfolioSubnav: () => import_portfolio_subnav.PortfolioSubnav,
64
78
  SERVICE_HUES: () => import_launchpad_services.SERVICE_HUES,
79
+ SOCIAL_PLATFORM_META: () => import_ip_templates.SOCIAL_PLATFORM_META,
65
80
  SPRING: () => import_motion_primitives.SPRING,
66
81
  ScrollSection: () => import_scroll_section.ScrollSection,
67
82
  ShareButton: () => import_share_button.ShareButton,
68
83
  Stagger: () => import_motion_primitives.Stagger,
69
84
  StaggerItem: () => import_motion_primitives.StaggerItem,
85
+ TEMPLATE_TRAIT_TYPES: () => import_ip_templates.TEMPLATE_TRAIT_TYPES,
70
86
  TYPE_FILTERS: () => import_activity.TYPE_FILTERS,
71
87
  TokenCard: () => import_token_card.TokenCard,
72
88
  TokenCardSkeleton: () => import_token_card.TokenCardSkeleton,
89
+ buildEditionStats: () => import_asset_top_sections.buildEditionStats,
73
90
  cn: () => import_cn.cn,
74
91
  derivePortfolioCounts: () => import_portfolio_counts.derivePortfolioCounts,
75
92
  formatDisplayPrice: () => import_format.formatDisplayPrice,
76
93
  ipfsToHttp: () => import_ipfs.ipfsToHttp,
77
94
  shortenAddress: () => import_address.shortenAddress,
78
95
  timeAgo: () => import_time.timeAgo,
96
+ timeUntil: () => import_time.timeUntil,
79
97
  useNavCommandMenu: () => import_nav_command_menu.useNavCommandMenu
80
98
  });
81
99
  module.exports = __toCommonJS(index_exports);
@@ -84,6 +102,13 @@ var import_format = require("./utils/format.js");
84
102
  var import_address = require("./utils/address.js");
85
103
  var import_ipfs = require("./utils/ipfs.js");
86
104
  var import_ip_types = require("./data/ip-types.js");
105
+ var import_ip = require("./data/ip.js");
106
+ var import_ip_templates = require("./data/ip-templates.js");
107
+ var import_ip_type_display = require("./components/ip-type-display.js");
108
+ var import_asset_overview_content = require("./components/asset-overview-content.js");
109
+ var import_asset_markets_tab = require("./components/asset-markets-tab.js");
110
+ var import_parent_attribution_banner = require("./components/parent-attribution-banner.js");
111
+ var import_asset_top_sections = require("./components/asset-top-sections.js");
87
112
  var import_brand = require("./data/brand.js");
88
113
  var import_currency_icon = require("./components/currency-icon.js");
89
114
  var import_ip_type_badge = require("./components/ip-type-badge.js");
@@ -120,28 +145,39 @@ var import_portfolio_counts = require("./utils/portfolio-counts.js");
120
145
  0 && (module.exports = {
121
146
  ACTIVITY_MESSAGES,
122
147
  ACTIVITY_TYPE_CONFIG,
148
+ AI_POLICIES,
123
149
  ActivityCard,
124
150
  ActivityCardSkeleton,
125
151
  ActivityFeedShell,
126
152
  ActivityRow,
127
153
  ActivityTicker,
128
154
  AddressDisplay,
155
+ AssetHeaderBlock,
156
+ AssetMarketsTab,
157
+ AssetMediaColumn,
158
+ AssetOverviewContent,
129
159
  BRAND,
130
160
  CollectionCard,
131
161
  CollectionCardSkeleton,
132
162
  CtaCardGrid,
133
163
  CurrencyAmount,
134
164
  CurrencyIcon,
165
+ DERIVATIVES_OPTIONS,
135
166
  DiscoverCollectionsStrip,
136
167
  DiscoverCreatorsStrip,
137
168
  DiscoverFeedSection,
138
169
  DiscoverHero,
139
170
  EASE_OUT,
171
+ EMBED_PLATFORM_META,
140
172
  FadeIn,
141
173
  FeaturedCarousel,
142
174
  FeaturedCarouselSkeleton,
175
+ GEOGRAPHIC_SCOPES,
143
176
  HeroSlider,
144
177
  HeroSliderSkeleton,
178
+ IPTypeDisplay,
179
+ IP_TEMPLATES,
180
+ IP_TYPES,
145
181
  IP_TYPE_CONFIG,
146
182
  IP_TYPE_DATA,
147
183
  IP_TYPE_DATA_MAP,
@@ -150,6 +186,8 @@ var import_portfolio_counts = require("./utils/portfolio-counts.js");
150
186
  KineticWords,
151
187
  LAUNCHPAD_SERVICE_DEFINITIONS,
152
188
  LAUNCHPAD_SERVICE_GROUPS,
189
+ LICENSE_TRAIT_TYPES,
190
+ LICENSE_TYPES,
153
191
  LaunchpadGroupedSections,
154
192
  LaunchpadServiceCard,
155
193
  LaunchpadStrip,
@@ -160,22 +198,27 @@ var import_portfolio_counts = require("./utils/portfolio-counts.js");
160
198
  MotionCard,
161
199
  NavCommandMenu,
162
200
  PageContainer,
201
+ ParentAttributionBanner,
163
202
  PortfolioSubnav,
164
203
  SERVICE_HUES,
204
+ SOCIAL_PLATFORM_META,
165
205
  SPRING,
166
206
  ScrollSection,
167
207
  ShareButton,
168
208
  Stagger,
169
209
  StaggerItem,
210
+ TEMPLATE_TRAIT_TYPES,
170
211
  TYPE_FILTERS,
171
212
  TokenCard,
172
213
  TokenCardSkeleton,
214
+ buildEditionStats,
173
215
  cn,
174
216
  derivePortfolioCounts,
175
217
  formatDisplayPrice,
176
218
  ipfsToHttp,
177
219
  shortenAddress,
178
220
  timeAgo,
221
+ timeUntil,
179
222
  useNavCommandMenu
180
223
  });
181
224
  //# sourceMappingURL=index.cjs.map
@@ -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 { 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 } 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;AACA,gBAAmB;AACnB,oBAAmC;AACnC,qBAA+B;AAC/B,kBAA2B;AAG3B,sBAA+C;AAE/C,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,kBAAwB;AACxB,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,\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"]}
package/dist/index.d.cts CHANGED
@@ -3,6 +3,13 @@ export { formatDisplayPrice } from './utils/format.cjs';
3
3
  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
+ 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';
8
+ export { IPTypeDisplay } from './components/ip-type-display.cjs';
9
+ export { AssetOverviewContent } from './components/asset-overview-content.cjs';
10
+ export { AssetMarketsTab } from './components/asset-markets-tab.cjs';
11
+ export { ParentAttributionBanner, ParentBannerProps } from './components/parent-attribution-banner.cjs';
12
+ export { AssetHeaderBlock, AssetMediaColumn, buildEditionStats } from './components/asset-top-sections.cjs';
6
13
  export { BRAND } from './data/brand.cjs';
7
14
  export { CurrencyAmount, CurrencyAmountProps, CurrencyIcon, CurrencyIconProps } from './components/currency-icon.cjs';
8
15
  export { IP_TYPE_CONFIG, IP_TYPE_MAP, IpTypeBadge, IpTypeBadgeProps, IpTypeConfig } from './components/ip-type-badge.cjs';
@@ -15,7 +22,7 @@ export { ScrollSection, ScrollSectionProps } from './components/scroll-section.c
15
22
  export { ShareButton, ShareButtonProps } from './components/share-button.cjs';
16
23
  export { CollectionCard, CollectionCardProps, CollectionCardSkeleton } from './components/collection-card.cjs';
17
24
  export { RarityTier, TokenCard, TokenCardProps, TokenCardSkeleton } from './components/token-card.cjs';
18
- export { timeAgo } from './utils/time.cjs';
25
+ export { timeAgo, timeUntil } from './utils/time.cjs';
19
26
  export { ACTIVITY_TYPE_CONFIG, ActivityTypeConfig, TYPE_FILTERS } from './data/activity.cjs';
20
27
  export { HeroSlider, HeroSliderProps, HeroSliderSkeleton } from './components/hero-slider.cjs';
21
28
  export { ActivityTicker, ActivityTickerProps } from './components/activity-ticker.cjs';
@@ -36,8 +43,8 @@ export { NavCommand, NavCommandGroup, NavCommandMenu, NavCommandMenuProps, useNa
36
43
  export { PortfolioBadgeVariant, PortfolioNavGroup, PortfolioNavItem, PortfolioSubnav, PortfolioSubnavProps } from './components/portfolio-subnav.cjs';
37
44
  export { CountableOrder, PortfolioCounts, derivePortfolioCounts } from './utils/portfolio-counts.cjs';
38
45
  import 'clsx';
46
+ import 'lucide-react';
39
47
  import 'react/jsx-runtime';
48
+ import '@medialane/sdk';
40
49
  import 'framer-motion';
41
50
  import 'react';
42
- import '@medialane/sdk';
43
- import 'lucide-react';
package/dist/index.d.ts CHANGED
@@ -3,6 +3,13 @@ export { formatDisplayPrice } from './utils/format.js';
3
3
  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
+ 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';
8
+ export { IPTypeDisplay } from './components/ip-type-display.js';
9
+ export { AssetOverviewContent } from './components/asset-overview-content.js';
10
+ export { AssetMarketsTab } from './components/asset-markets-tab.js';
11
+ export { ParentAttributionBanner, ParentBannerProps } from './components/parent-attribution-banner.js';
12
+ export { AssetHeaderBlock, AssetMediaColumn, buildEditionStats } from './components/asset-top-sections.js';
6
13
  export { BRAND } from './data/brand.js';
7
14
  export { CurrencyAmount, CurrencyAmountProps, CurrencyIcon, CurrencyIconProps } from './components/currency-icon.js';
8
15
  export { IP_TYPE_CONFIG, IP_TYPE_MAP, IpTypeBadge, IpTypeBadgeProps, IpTypeConfig } from './components/ip-type-badge.js';
@@ -15,7 +22,7 @@ export { ScrollSection, ScrollSectionProps } from './components/scroll-section.j
15
22
  export { ShareButton, ShareButtonProps } from './components/share-button.js';
16
23
  export { CollectionCard, CollectionCardProps, CollectionCardSkeleton } from './components/collection-card.js';
17
24
  export { RarityTier, TokenCard, TokenCardProps, TokenCardSkeleton } from './components/token-card.js';
18
- export { timeAgo } from './utils/time.js';
25
+ export { timeAgo, timeUntil } from './utils/time.js';
19
26
  export { ACTIVITY_TYPE_CONFIG, ActivityTypeConfig, TYPE_FILTERS } from './data/activity.js';
20
27
  export { HeroSlider, HeroSliderProps, HeroSliderSkeleton } from './components/hero-slider.js';
21
28
  export { ActivityTicker, ActivityTickerProps } from './components/activity-ticker.js';
@@ -36,8 +43,8 @@ export { NavCommand, NavCommandGroup, NavCommandMenu, NavCommandMenuProps, useNa
36
43
  export { PortfolioBadgeVariant, PortfolioNavGroup, PortfolioNavItem, PortfolioSubnav, PortfolioSubnavProps } from './components/portfolio-subnav.js';
37
44
  export { CountableOrder, PortfolioCounts, derivePortfolioCounts } from './utils/portfolio-counts.js';
38
45
  import 'clsx';
46
+ import 'lucide-react';
39
47
  import 'react/jsx-runtime';
48
+ import '@medialane/sdk';
40
49
  import 'framer-motion';
41
50
  import 'react';
42
- import '@medialane/sdk';
43
- import 'lucide-react';
package/dist/index.js CHANGED
@@ -3,6 +3,25 @@ import { formatDisplayPrice } from "./utils/format.js";
3
3
  import { shortenAddress } from "./utils/address.js";
4
4
  import { ipfsToHttp } from "./utils/ipfs.js";
5
5
  import { IP_TYPE_DATA, IP_TYPE_DATA_MAP } from "./data/ip-types.js";
6
+ import {
7
+ IP_TYPES,
8
+ LICENSE_TYPES,
9
+ GEOGRAPHIC_SCOPES,
10
+ AI_POLICIES,
11
+ DERIVATIVES_OPTIONS,
12
+ LICENSE_TRAIT_TYPES
13
+ } from "./data/ip.js";
14
+ import {
15
+ IP_TEMPLATES,
16
+ EMBED_PLATFORM_META,
17
+ SOCIAL_PLATFORM_META,
18
+ TEMPLATE_TRAIT_TYPES
19
+ } from "./data/ip-templates.js";
20
+ import { IPTypeDisplay } from "./components/ip-type-display.js";
21
+ import { AssetOverviewContent } from "./components/asset-overview-content.js";
22
+ import { AssetMarketsTab } from "./components/asset-markets-tab.js";
23
+ import { ParentAttributionBanner } from "./components/parent-attribution-banner.js";
24
+ import { AssetMediaColumn, AssetHeaderBlock, buildEditionStats } from "./components/asset-top-sections.js";
6
25
  import { BRAND } from "./data/brand.js";
7
26
  import { CurrencyIcon, CurrencyAmount } from "./components/currency-icon.js";
8
27
  import { IpTypeBadge, IP_TYPE_CONFIG, IP_TYPE_MAP } from "./components/ip-type-badge.js";
@@ -15,7 +34,7 @@ import { ScrollSection } from "./components/scroll-section.js";
15
34
  import { ShareButton } from "./components/share-button.js";
16
35
  import { CollectionCard, CollectionCardSkeleton } from "./components/collection-card.js";
17
36
  import { TokenCard, TokenCardSkeleton } from "./components/token-card.js";
18
- import { timeAgo } from "./utils/time.js";
37
+ import { timeAgo, timeUntil } from "./utils/time.js";
19
38
  import { ACTIVITY_TYPE_CONFIG, TYPE_FILTERS } from "./data/activity.js";
20
39
  import { HeroSlider, HeroSliderSkeleton } from "./components/hero-slider.js";
21
40
  import { ActivityTicker } from "./components/activity-ticker.js";
@@ -38,28 +57,39 @@ import { derivePortfolioCounts } from "./utils/portfolio-counts.js";
38
57
  export {
39
58
  ACTIVITY_MESSAGES,
40
59
  ACTIVITY_TYPE_CONFIG,
60
+ AI_POLICIES,
41
61
  ActivityCard,
42
62
  ActivityCardSkeleton,
43
63
  ActivityFeedShell,
44
64
  ActivityRow,
45
65
  ActivityTicker,
46
66
  AddressDisplay,
67
+ AssetHeaderBlock,
68
+ AssetMarketsTab,
69
+ AssetMediaColumn,
70
+ AssetOverviewContent,
47
71
  BRAND,
48
72
  CollectionCard,
49
73
  CollectionCardSkeleton,
50
74
  CtaCardGrid,
51
75
  CurrencyAmount,
52
76
  CurrencyIcon,
77
+ DERIVATIVES_OPTIONS,
53
78
  DiscoverCollectionsStrip,
54
79
  DiscoverCreatorsStrip,
55
80
  DiscoverFeedSection,
56
81
  DiscoverHero,
57
82
  EASE_OUT,
83
+ EMBED_PLATFORM_META,
58
84
  FadeIn,
59
85
  FeaturedCarousel,
60
86
  FeaturedCarouselSkeleton,
87
+ GEOGRAPHIC_SCOPES,
61
88
  HeroSlider,
62
89
  HeroSliderSkeleton,
90
+ IPTypeDisplay,
91
+ IP_TEMPLATES,
92
+ IP_TYPES,
63
93
  IP_TYPE_CONFIG,
64
94
  IP_TYPE_DATA,
65
95
  IP_TYPE_DATA_MAP,
@@ -68,6 +98,8 @@ export {
68
98
  KineticWords,
69
99
  LAUNCHPAD_SERVICE_DEFINITIONS,
70
100
  LAUNCHPAD_SERVICE_GROUPS,
101
+ LICENSE_TRAIT_TYPES,
102
+ LICENSE_TYPES,
71
103
  LaunchpadGroupedSections,
72
104
  LaunchpadServiceCard,
73
105
  LaunchpadStrip,
@@ -78,22 +110,27 @@ export {
78
110
  MotionCard,
79
111
  NavCommandMenu,
80
112
  PageContainer,
113
+ ParentAttributionBanner,
81
114
  PortfolioSubnav,
82
115
  SERVICE_HUES,
116
+ SOCIAL_PLATFORM_META,
83
117
  SPRING,
84
118
  ScrollSection,
85
119
  ShareButton,
86
120
  Stagger,
87
121
  StaggerItem,
122
+ TEMPLATE_TRAIT_TYPES,
88
123
  TYPE_FILTERS,
89
124
  TokenCard,
90
125
  TokenCardSkeleton,
126
+ buildEditionStats,
91
127
  cn,
92
128
  derivePortfolioCounts,
93
129
  formatDisplayPrice,
94
130
  ipfsToHttp,
95
131
  shortenAddress,
96
132
  timeAgo,
133
+ timeUntil,
97
134
  useNavCommandMenu
98
135
  };
99
136
  //# sourceMappingURL=index.js.map
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 { 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 } 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,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,eAAe;AACxB,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,\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":[]}
@@ -18,9 +18,21 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var time_exports = {};
20
20
  __export(time_exports, {
21
- timeAgo: () => timeAgo
21
+ timeAgo: () => timeAgo,
22
+ timeUntil: () => timeUntil
22
23
  });
23
24
  module.exports = __toCommonJS(time_exports);
25
+ function timeUntil(dateStr) {
26
+ const raw = typeof dateStr === "string" && /^\d+$/.test(dateStr.trim()) ? Number(dateStr) : dateStr;
27
+ const ms = typeof raw === "number" ? raw * 1e3 : new Date(raw).getTime();
28
+ const diff = ms - Date.now();
29
+ if (diff <= 0) return "Expired";
30
+ const days = Math.floor(diff / 864e5);
31
+ const hours = Math.floor(diff % 864e5 / 36e5);
32
+ if (days > 0) return `${days}d ${hours}h`;
33
+ const mins = Math.floor(diff % 36e5 / 6e4);
34
+ return `${hours}h ${mins}m`;
35
+ }
24
36
  function timeAgo(iso) {
25
37
  const diff = Date.now() - new Date(iso).getTime();
26
38
  const s = Math.floor(diff / 1e3);
@@ -37,6 +49,7 @@ function timeAgo(iso) {
37
49
  }
38
50
  // Annotate the CommonJS export names for ESM import in node:
39
51
  0 && (module.exports = {
40
- timeAgo
52
+ timeAgo,
53
+ timeUntil
41
54
  });
42
55
  //# sourceMappingURL=time.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/time.ts"],"sourcesContent":["/**\n * Returns a human-readable relative time string.\n * e.g. \"just now\", \"2m ago\", \"3h ago\", \"5d ago\"\n */\nexport function timeAgo(iso: string): string {\n const diff = Date.now() - new Date(iso).getTime();\n const s = Math.floor(diff / 1000);\n if (s < 60) return \"just now\";\n const m = Math.floor(s / 60);\n if (m < 60) return `${m}m ago`;\n const h = Math.floor(m / 60);\n if (h < 24) return `${h}h ago`;\n const d = Math.floor(h / 24);\n if (d < 30) return `${d}d ago`;\n const mo = Math.floor(d / 30);\n if (mo < 12) return `${mo}mo ago`;\n return `${Math.floor(mo / 12)}y ago`;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIO,SAAS,QAAQ,KAAqB;AAC3C,QAAM,OAAO,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,EAAE,QAAQ;AAChD,QAAM,IAAI,KAAK,MAAM,OAAO,GAAI;AAChC,MAAI,IAAI,GAAI,QAAO;AACnB,QAAM,IAAI,KAAK,MAAM,IAAI,EAAE;AAC3B,MAAI,IAAI,GAAI,QAAO,GAAG,CAAC;AACvB,QAAM,IAAI,KAAK,MAAM,IAAI,EAAE;AAC3B,MAAI,IAAI,GAAI,QAAO,GAAG,CAAC;AACvB,QAAM,IAAI,KAAK,MAAM,IAAI,EAAE;AAC3B,MAAI,IAAI,GAAI,QAAO,GAAG,CAAC;AACvB,QAAM,KAAK,KAAK,MAAM,IAAI,EAAE;AAC5B,MAAI,KAAK,GAAI,QAAO,GAAG,EAAE;AACzB,SAAO,GAAG,KAAK,MAAM,KAAK,EAAE,CAAC;AAC/B;","names":[]}
1
+ {"version":3,"sources":["../../src/utils/time.ts"],"sourcesContent":["/** Human-readable countdown, e.g. \"2d 4h\", \"3h 12m\", \"Expired\". */\nexport function timeUntil(dateStr: string | number): string {\n // Accept Unix seconds as number, numeric string (BigInt serialized), or ISO date string.\n const raw = typeof dateStr === \"string\" && /^\\d+$/.test(dateStr.trim())\n ? Number(dateStr)\n : dateStr;\n const ms = typeof raw === \"number\" ? raw * 1000 : new Date(raw).getTime();\n const diff = ms - Date.now();\n if (diff <= 0) return \"Expired\";\n const days = Math.floor(diff / 86400000);\n const hours = Math.floor((diff % 86400000) / 3600000);\n if (days > 0) return `${days}d ${hours}h`;\n const mins = Math.floor((diff % 3600000) / 60000);\n return `${hours}h ${mins}m`;\n}\n\n/**\n * Returns a human-readable relative time string.\n * e.g. \"just now\", \"2m ago\", \"3h ago\", \"5d ago\"\n */\nexport function timeAgo(iso: string): string {\n const diff = Date.now() - new Date(iso).getTime();\n const s = Math.floor(diff / 1000);\n if (s < 60) return \"just now\";\n const m = Math.floor(s / 60);\n if (m < 60) return `${m}m ago`;\n const h = Math.floor(m / 60);\n if (h < 24) return `${h}h ago`;\n const d = Math.floor(h / 24);\n if (d < 30) return `${d}d ago`;\n const mo = Math.floor(d / 30);\n if (mo < 12) return `${mo}mo ago`;\n return `${Math.floor(mo / 12)}y ago`;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACO,SAAS,UAAU,SAAkC;AAE1D,QAAM,MAAM,OAAO,YAAY,YAAY,QAAQ,KAAK,QAAQ,KAAK,CAAC,IAClE,OAAO,OAAO,IACd;AACJ,QAAM,KAAK,OAAO,QAAQ,WAAW,MAAM,MAAO,IAAI,KAAK,GAAG,EAAE,QAAQ;AACxE,QAAM,OAAO,KAAK,KAAK,IAAI;AAC3B,MAAI,QAAQ,EAAG,QAAO;AACtB,QAAM,OAAO,KAAK,MAAM,OAAO,KAAQ;AACvC,QAAM,QAAQ,KAAK,MAAO,OAAO,QAAY,IAAO;AACpD,MAAI,OAAO,EAAG,QAAO,GAAG,IAAI,KAAK,KAAK;AACtC,QAAM,OAAO,KAAK,MAAO,OAAO,OAAW,GAAK;AAChD,SAAO,GAAG,KAAK,KAAK,IAAI;AAC1B;AAMO,SAAS,QAAQ,KAAqB;AAC3C,QAAM,OAAO,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,EAAE,QAAQ;AAChD,QAAM,IAAI,KAAK,MAAM,OAAO,GAAI;AAChC,MAAI,IAAI,GAAI,QAAO;AACnB,QAAM,IAAI,KAAK,MAAM,IAAI,EAAE;AAC3B,MAAI,IAAI,GAAI,QAAO,GAAG,CAAC;AACvB,QAAM,IAAI,KAAK,MAAM,IAAI,EAAE;AAC3B,MAAI,IAAI,GAAI,QAAO,GAAG,CAAC;AACvB,QAAM,IAAI,KAAK,MAAM,IAAI,EAAE;AAC3B,MAAI,IAAI,GAAI,QAAO,GAAG,CAAC;AACvB,QAAM,KAAK,KAAK,MAAM,IAAI,EAAE;AAC5B,MAAI,KAAK,GAAI,QAAO,GAAG,EAAE;AACzB,SAAO,GAAG,KAAK,MAAM,KAAK,EAAE,CAAC;AAC/B;","names":[]}
@@ -1,7 +1,9 @@
1
+ /** Human-readable countdown, e.g. "2d 4h", "3h 12m", "Expired". */
2
+ declare function timeUntil(dateStr: string | number): string;
1
3
  /**
2
4
  * Returns a human-readable relative time string.
3
5
  * e.g. "just now", "2m ago", "3h ago", "5d ago"
4
6
  */
5
7
  declare function timeAgo(iso: string): string;
6
8
 
7
- export { timeAgo };
9
+ export { timeAgo, timeUntil };
@@ -1,7 +1,9 @@
1
+ /** Human-readable countdown, e.g. "2d 4h", "3h 12m", "Expired". */
2
+ declare function timeUntil(dateStr: string | number): string;
1
3
  /**
2
4
  * Returns a human-readable relative time string.
3
5
  * e.g. "just now", "2m ago", "3h ago", "5d ago"
4
6
  */
5
7
  declare function timeAgo(iso: string): string;
6
8
 
7
- export { timeAgo };
9
+ export { timeAgo, timeUntil };
@@ -1,3 +1,14 @@
1
+ function timeUntil(dateStr) {
2
+ const raw = typeof dateStr === "string" && /^\d+$/.test(dateStr.trim()) ? Number(dateStr) : dateStr;
3
+ const ms = typeof raw === "number" ? raw * 1e3 : new Date(raw).getTime();
4
+ const diff = ms - Date.now();
5
+ if (diff <= 0) return "Expired";
6
+ const days = Math.floor(diff / 864e5);
7
+ const hours = Math.floor(diff % 864e5 / 36e5);
8
+ if (days > 0) return `${days}d ${hours}h`;
9
+ const mins = Math.floor(diff % 36e5 / 6e4);
10
+ return `${hours}h ${mins}m`;
11
+ }
1
12
  function timeAgo(iso) {
2
13
  const diff = Date.now() - new Date(iso).getTime();
3
14
  const s = Math.floor(diff / 1e3);
@@ -13,6 +24,7 @@ function timeAgo(iso) {
13
24
  return `${Math.floor(mo / 12)}y ago`;
14
25
  }
15
26
  export {
16
- timeAgo
27
+ timeAgo,
28
+ timeUntil
17
29
  };
18
30
  //# sourceMappingURL=time.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/time.ts"],"sourcesContent":["/**\n * Returns a human-readable relative time string.\n * e.g. \"just now\", \"2m ago\", \"3h ago\", \"5d ago\"\n */\nexport function timeAgo(iso: string): string {\n const diff = Date.now() - new Date(iso).getTime();\n const s = Math.floor(diff / 1000);\n if (s < 60) return \"just now\";\n const m = Math.floor(s / 60);\n if (m < 60) return `${m}m ago`;\n const h = Math.floor(m / 60);\n if (h < 24) return `${h}h ago`;\n const d = Math.floor(h / 24);\n if (d < 30) return `${d}d ago`;\n const mo = Math.floor(d / 30);\n if (mo < 12) return `${mo}mo ago`;\n return `${Math.floor(mo / 12)}y ago`;\n}\n"],"mappings":"AAIO,SAAS,QAAQ,KAAqB;AAC3C,QAAM,OAAO,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,EAAE,QAAQ;AAChD,QAAM,IAAI,KAAK,MAAM,OAAO,GAAI;AAChC,MAAI,IAAI,GAAI,QAAO;AACnB,QAAM,IAAI,KAAK,MAAM,IAAI,EAAE;AAC3B,MAAI,IAAI,GAAI,QAAO,GAAG,CAAC;AACvB,QAAM,IAAI,KAAK,MAAM,IAAI,EAAE;AAC3B,MAAI,IAAI,GAAI,QAAO,GAAG,CAAC;AACvB,QAAM,IAAI,KAAK,MAAM,IAAI,EAAE;AAC3B,MAAI,IAAI,GAAI,QAAO,GAAG,CAAC;AACvB,QAAM,KAAK,KAAK,MAAM,IAAI,EAAE;AAC5B,MAAI,KAAK,GAAI,QAAO,GAAG,EAAE;AACzB,SAAO,GAAG,KAAK,MAAM,KAAK,EAAE,CAAC;AAC/B;","names":[]}
1
+ {"version":3,"sources":["../../src/utils/time.ts"],"sourcesContent":["/** Human-readable countdown, e.g. \"2d 4h\", \"3h 12m\", \"Expired\". */\nexport function timeUntil(dateStr: string | number): string {\n // Accept Unix seconds as number, numeric string (BigInt serialized), or ISO date string.\n const raw = typeof dateStr === \"string\" && /^\\d+$/.test(dateStr.trim())\n ? Number(dateStr)\n : dateStr;\n const ms = typeof raw === \"number\" ? raw * 1000 : new Date(raw).getTime();\n const diff = ms - Date.now();\n if (diff <= 0) return \"Expired\";\n const days = Math.floor(diff / 86400000);\n const hours = Math.floor((diff % 86400000) / 3600000);\n if (days > 0) return `${days}d ${hours}h`;\n const mins = Math.floor((diff % 3600000) / 60000);\n return `${hours}h ${mins}m`;\n}\n\n/**\n * Returns a human-readable relative time string.\n * e.g. \"just now\", \"2m ago\", \"3h ago\", \"5d ago\"\n */\nexport function timeAgo(iso: string): string {\n const diff = Date.now() - new Date(iso).getTime();\n const s = Math.floor(diff / 1000);\n if (s < 60) return \"just now\";\n const m = Math.floor(s / 60);\n if (m < 60) return `${m}m ago`;\n const h = Math.floor(m / 60);\n if (h < 24) return `${h}h ago`;\n const d = Math.floor(h / 24);\n if (d < 30) return `${d}d ago`;\n const mo = Math.floor(d / 30);\n if (mo < 12) return `${mo}mo ago`;\n return `${Math.floor(mo / 12)}y ago`;\n}\n"],"mappings":"AACO,SAAS,UAAU,SAAkC;AAE1D,QAAM,MAAM,OAAO,YAAY,YAAY,QAAQ,KAAK,QAAQ,KAAK,CAAC,IAClE,OAAO,OAAO,IACd;AACJ,QAAM,KAAK,OAAO,QAAQ,WAAW,MAAM,MAAO,IAAI,KAAK,GAAG,EAAE,QAAQ;AACxE,QAAM,OAAO,KAAK,KAAK,IAAI;AAC3B,MAAI,QAAQ,EAAG,QAAO;AACtB,QAAM,OAAO,KAAK,MAAM,OAAO,KAAQ;AACvC,QAAM,QAAQ,KAAK,MAAO,OAAO,QAAY,IAAO;AACpD,MAAI,OAAO,EAAG,QAAO,GAAG,IAAI,KAAK,KAAK;AACtC,QAAM,OAAO,KAAK,MAAO,OAAO,OAAW,GAAK;AAChD,SAAO,GAAG,KAAK,KAAK,IAAI;AAC1B;AAMO,SAAS,QAAQ,KAAqB;AAC3C,QAAM,OAAO,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,EAAE,QAAQ;AAChD,QAAM,IAAI,KAAK,MAAM,OAAO,GAAI;AAChC,MAAI,IAAI,GAAI,QAAO;AACnB,QAAM,IAAI,KAAK,MAAM,IAAI,EAAE;AAC3B,MAAI,IAAI,GAAI,QAAO,GAAG,CAAC;AACvB,QAAM,IAAI,KAAK,MAAM,IAAI,EAAE;AAC3B,MAAI,IAAI,GAAI,QAAO,GAAG,CAAC;AACvB,QAAM,IAAI,KAAK,MAAM,IAAI,EAAE;AAC3B,MAAI,IAAI,GAAI,QAAO,GAAG,CAAC;AACvB,QAAM,KAAK,KAAK,MAAM,IAAI,EAAE;AAC5B,MAAI,KAAK,GAAI,QAAO,GAAG,EAAE;AACzB,SAAO,GAAG,KAAK,MAAM,KAAK,EAAE,CAAC;AAC/B;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@medialane/ui",
3
- "version": "0.12.1",
3
+ "version": "0.13.1",
4
4
  "description": "Shared UI components for Medialane apps",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",