@medialane/ui 0.12.0 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) 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/ip-type-display.cjs +201 -0
  14. package/dist/components/ip-type-display.cjs.map +1 -0
  15. package/dist/components/ip-type-display.d.cts +12 -0
  16. package/dist/components/ip-type-display.d.ts +12 -0
  17. package/dist/components/ip-type-display.js +181 -0
  18. package/dist/components/ip-type-display.js.map +1 -0
  19. package/dist/components/launchpad-strip.cjs +150 -0
  20. package/dist/components/launchpad-strip.cjs.map +1 -0
  21. package/dist/components/launchpad-strip.d.cts +16 -0
  22. package/dist/components/launchpad-strip.d.ts +16 -0
  23. package/dist/components/launchpad-strip.js +116 -0
  24. package/dist/components/launchpad-strip.js.map +1 -0
  25. package/dist/data/ip-templates.cjs +206 -0
  26. package/dist/data/ip-templates.cjs.map +1 -0
  27. package/dist/data/ip-templates.d.cts +45 -0
  28. package/dist/data/ip-templates.d.ts +45 -0
  29. package/dist/data/ip-templates.js +200 -0
  30. package/dist/data/ip-templates.js.map +1 -0
  31. package/dist/data/ip.cjs +163 -0
  32. package/dist/data/ip.cjs.map +1 -0
  33. package/dist/data/ip.d.cts +18 -0
  34. package/dist/data/ip.d.ts +18 -0
  35. package/dist/data/ip.js +134 -0
  36. package/dist/data/ip.js.map +1 -0
  37. package/dist/index.cjs +36 -0
  38. package/dist/index.cjs.map +1 -1
  39. package/dist/index.d.cts +9 -3
  40. package/dist/index.d.ts +9 -3
  41. package/dist/index.js +34 -1
  42. package/dist/index.js.map +1 -1
  43. package/dist/utils/time.cjs +15 -2
  44. package/dist/utils/time.cjs.map +1 -1
  45. package/dist/utils/time.d.cts +3 -1
  46. package/dist/utils/time.d.ts +3 -1
  47. package/dist/utils/time.js +13 -1
  48. package/dist/utils/time.js.map +1 -1
  49. package/package.json +1 -1
package/dist/index.cjs CHANGED
@@ -20,28 +20,37 @@ 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
+ AssetMarketsTab: () => import_asset_markets_tab.AssetMarketsTab,
31
+ AssetOverviewContent: () => import_asset_overview_content.AssetOverviewContent,
29
32
  BRAND: () => import_brand.BRAND,
30
33
  CollectionCard: () => import_collection_card.CollectionCard,
31
34
  CollectionCardSkeleton: () => import_collection_card.CollectionCardSkeleton,
32
35
  CtaCardGrid: () => import_cta_card_grid.CtaCardGrid,
33
36
  CurrencyAmount: () => import_currency_icon.CurrencyAmount,
34
37
  CurrencyIcon: () => import_currency_icon.CurrencyIcon,
38
+ DERIVATIVES_OPTIONS: () => import_ip.DERIVATIVES_OPTIONS,
35
39
  DiscoverCollectionsStrip: () => import_discover_collections_strip.DiscoverCollectionsStrip,
36
40
  DiscoverCreatorsStrip: () => import_discover_creators_strip.DiscoverCreatorsStrip,
37
41
  DiscoverFeedSection: () => import_discover_feed_section.DiscoverFeedSection,
38
42
  DiscoverHero: () => import_discover_hero.DiscoverHero,
39
43
  EASE_OUT: () => import_motion_primitives.EASE_OUT,
44
+ EMBED_PLATFORM_META: () => import_ip_templates.EMBED_PLATFORM_META,
40
45
  FadeIn: () => import_motion_primitives.FadeIn,
41
46
  FeaturedCarousel: () => import_featured_carousel.FeaturedCarousel,
42
47
  FeaturedCarouselSkeleton: () => import_featured_carousel.FeaturedCarouselSkeleton,
48
+ GEOGRAPHIC_SCOPES: () => import_ip.GEOGRAPHIC_SCOPES,
43
49
  HeroSlider: () => import_hero_slider.HeroSlider,
44
50
  HeroSliderSkeleton: () => import_hero_slider.HeroSliderSkeleton,
51
+ IPTypeDisplay: () => import_ip_type_display.IPTypeDisplay,
52
+ IP_TEMPLATES: () => import_ip_templates.IP_TEMPLATES,
53
+ IP_TYPES: () => import_ip.IP_TYPES,
45
54
  IP_TYPE_CONFIG: () => import_ip_type_badge.IP_TYPE_CONFIG,
46
55
  IP_TYPE_DATA: () => import_ip_types.IP_TYPE_DATA,
47
56
  IP_TYPE_DATA_MAP: () => import_ip_types.IP_TYPE_DATA_MAP,
@@ -50,8 +59,11 @@ __export(index_exports, {
50
59
  KineticWords: () => import_motion_primitives.KineticWords,
51
60
  LAUNCHPAD_SERVICE_DEFINITIONS: () => import_launchpad_services2.LAUNCHPAD_SERVICE_DEFINITIONS,
52
61
  LAUNCHPAD_SERVICE_GROUPS: () => import_launchpad_services2.LAUNCHPAD_SERVICE_GROUPS,
62
+ LICENSE_TRAIT_TYPES: () => import_ip.LICENSE_TRAIT_TYPES,
63
+ LICENSE_TYPES: () => import_ip.LICENSE_TYPES,
53
64
  LaunchpadGroupedSections: () => import_launchpad_services.LaunchpadGroupedSections,
54
65
  LaunchpadServiceCard: () => import_launchpad_services.LaunchpadServiceCard,
66
+ LaunchpadStrip: () => import_launchpad_strip.LaunchpadStrip,
55
67
  ListingCard: () => import_listing_card.ListingCard,
56
68
  ListingCardSkeleton: () => import_listing_card.ListingCardSkeleton,
57
69
  MedialaneIcon: () => import_brand_icon.MedialaneIcon,
@@ -61,11 +73,13 @@ __export(index_exports, {
61
73
  PageContainer: () => import_page_container.PageContainer,
62
74
  PortfolioSubnav: () => import_portfolio_subnav.PortfolioSubnav,
63
75
  SERVICE_HUES: () => import_launchpad_services.SERVICE_HUES,
76
+ SOCIAL_PLATFORM_META: () => import_ip_templates.SOCIAL_PLATFORM_META,
64
77
  SPRING: () => import_motion_primitives.SPRING,
65
78
  ScrollSection: () => import_scroll_section.ScrollSection,
66
79
  ShareButton: () => import_share_button.ShareButton,
67
80
  Stagger: () => import_motion_primitives.Stagger,
68
81
  StaggerItem: () => import_motion_primitives.StaggerItem,
82
+ TEMPLATE_TRAIT_TYPES: () => import_ip_templates.TEMPLATE_TRAIT_TYPES,
69
83
  TYPE_FILTERS: () => import_activity.TYPE_FILTERS,
70
84
  TokenCard: () => import_token_card.TokenCard,
71
85
  TokenCardSkeleton: () => import_token_card.TokenCardSkeleton,
@@ -75,6 +89,7 @@ __export(index_exports, {
75
89
  ipfsToHttp: () => import_ipfs.ipfsToHttp,
76
90
  shortenAddress: () => import_address.shortenAddress,
77
91
  timeAgo: () => import_time.timeAgo,
92
+ timeUntil: () => import_time.timeUntil,
78
93
  useNavCommandMenu: () => import_nav_command_menu.useNavCommandMenu
79
94
  });
80
95
  module.exports = __toCommonJS(index_exports);
@@ -83,6 +98,11 @@ var import_format = require("./utils/format.js");
83
98
  var import_address = require("./utils/address.js");
84
99
  var import_ipfs = require("./utils/ipfs.js");
85
100
  var import_ip_types = require("./data/ip-types.js");
101
+ var import_ip = require("./data/ip.js");
102
+ var import_ip_templates = require("./data/ip-templates.js");
103
+ var import_ip_type_display = require("./components/ip-type-display.js");
104
+ var import_asset_overview_content = require("./components/asset-overview-content.js");
105
+ var import_asset_markets_tab = require("./components/asset-markets-tab.js");
86
106
  var import_brand = require("./data/brand.js");
87
107
  var import_currency_icon = require("./components/currency-icon.js");
88
108
  var import_ip_type_badge = require("./components/ip-type-badge.js");
@@ -110,6 +130,7 @@ var import_discover_creators_strip = require("./components/discover-creators-str
110
130
  var import_discover_feed_section = require("./components/discover-feed-section.js");
111
131
  var import_activity_card = require("./components/activity-card.js");
112
132
  var import_launchpad_services = require("./components/launchpad-services.js");
133
+ var import_launchpad_strip = require("./components/launchpad-strip.js");
113
134
  var import_launchpad_services2 = require("./data/launchpad-services.js");
114
135
  var import_nav_command_menu = require("./components/nav-command-menu.js");
115
136
  var import_portfolio_subnav = require("./components/portfolio-subnav.js");
@@ -118,28 +139,37 @@ var import_portfolio_counts = require("./utils/portfolio-counts.js");
118
139
  0 && (module.exports = {
119
140
  ACTIVITY_MESSAGES,
120
141
  ACTIVITY_TYPE_CONFIG,
142
+ AI_POLICIES,
121
143
  ActivityCard,
122
144
  ActivityCardSkeleton,
123
145
  ActivityFeedShell,
124
146
  ActivityRow,
125
147
  ActivityTicker,
126
148
  AddressDisplay,
149
+ AssetMarketsTab,
150
+ AssetOverviewContent,
127
151
  BRAND,
128
152
  CollectionCard,
129
153
  CollectionCardSkeleton,
130
154
  CtaCardGrid,
131
155
  CurrencyAmount,
132
156
  CurrencyIcon,
157
+ DERIVATIVES_OPTIONS,
133
158
  DiscoverCollectionsStrip,
134
159
  DiscoverCreatorsStrip,
135
160
  DiscoverFeedSection,
136
161
  DiscoverHero,
137
162
  EASE_OUT,
163
+ EMBED_PLATFORM_META,
138
164
  FadeIn,
139
165
  FeaturedCarousel,
140
166
  FeaturedCarouselSkeleton,
167
+ GEOGRAPHIC_SCOPES,
141
168
  HeroSlider,
142
169
  HeroSliderSkeleton,
170
+ IPTypeDisplay,
171
+ IP_TEMPLATES,
172
+ IP_TYPES,
143
173
  IP_TYPE_CONFIG,
144
174
  IP_TYPE_DATA,
145
175
  IP_TYPE_DATA_MAP,
@@ -148,8 +178,11 @@ var import_portfolio_counts = require("./utils/portfolio-counts.js");
148
178
  KineticWords,
149
179
  LAUNCHPAD_SERVICE_DEFINITIONS,
150
180
  LAUNCHPAD_SERVICE_GROUPS,
181
+ LICENSE_TRAIT_TYPES,
182
+ LICENSE_TYPES,
151
183
  LaunchpadGroupedSections,
152
184
  LaunchpadServiceCard,
185
+ LaunchpadStrip,
153
186
  ListingCard,
154
187
  ListingCardSkeleton,
155
188
  MedialaneIcon,
@@ -159,11 +192,13 @@ var import_portfolio_counts = require("./utils/portfolio-counts.js");
159
192
  PageContainer,
160
193
  PortfolioSubnav,
161
194
  SERVICE_HUES,
195
+ SOCIAL_PLATFORM_META,
162
196
  SPRING,
163
197
  ScrollSection,
164
198
  ShareButton,
165
199
  Stagger,
166
200
  StaggerItem,
201
+ TEMPLATE_TRAIT_TYPES,
167
202
  TYPE_FILTERS,
168
203
  TokenCard,
169
204
  TokenCardSkeleton,
@@ -173,6 +208,7 @@ var import_portfolio_counts = require("./utils/portfolio-counts.js");
173
208
  ipfsToHttp,
174
209
  shortenAddress,
175
210
  timeAgo,
211
+ timeUntil,
176
212
  useNavCommandMenu
177
213
  });
178
214
  //# 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 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;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;AAE7E,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 { 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;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,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,11 @@ 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';
6
11
  export { BRAND } from './data/brand.cjs';
7
12
  export { CurrencyAmount, CurrencyAmountProps, CurrencyIcon, CurrencyIconProps } from './components/currency-icon.cjs';
8
13
  export { IP_TYPE_CONFIG, IP_TYPE_MAP, IpTypeBadge, IpTypeBadgeProps, IpTypeConfig } from './components/ip-type-badge.cjs';
@@ -15,7 +20,7 @@ export { ScrollSection, ScrollSectionProps } from './components/scroll-section.c
15
20
  export { ShareButton, ShareButtonProps } from './components/share-button.cjs';
16
21
  export { CollectionCard, CollectionCardProps, CollectionCardSkeleton } from './components/collection-card.cjs';
17
22
  export { RarityTier, TokenCard, TokenCardProps, TokenCardSkeleton } from './components/token-card.cjs';
18
- export { timeAgo } from './utils/time.cjs';
23
+ export { timeAgo, timeUntil } from './utils/time.cjs';
19
24
  export { ACTIVITY_TYPE_CONFIG, ActivityTypeConfig, TYPE_FILTERS } from './data/activity.cjs';
20
25
  export { HeroSlider, HeroSliderProps, HeroSliderSkeleton } from './components/hero-slider.cjs';
21
26
  export { ActivityTicker, ActivityTickerProps } from './components/activity-ticker.cjs';
@@ -30,13 +35,14 @@ export { DiscoverCreatorsStrip, DiscoverCreatorsStripProps } from './components/
30
35
  export { DiscoverFeedSection, DiscoverFeedSectionProps } from './components/discover-feed-section.cjs';
31
36
  export { ACTIVITY_MESSAGES, ActivityCard, ActivityCardProps, ActivityCardSkeleton } from './components/activity-card.cjs';
32
37
  export { LaunchpadGroupedSections, LaunchpadGroupedSectionsProps, LaunchpadServiceCard, LaunchpadServiceCardProps, SERVICE_HUES, ServiceOverride, ServiceOverrides } from './components/launchpad-services.cjs';
38
+ export { LaunchpadStrip, LaunchpadStripProps } from './components/launchpad-strip.cjs';
33
39
  export { LAUNCHPAD_SERVICE_DEFINITIONS, LAUNCHPAD_SERVICE_GROUPS, ServiceCategory, ServiceDefinition, ServiceGroup, ServiceGroupDefinition, ServiceStatus } from './data/launchpad-services.cjs';
34
40
  export { NavCommand, NavCommandGroup, NavCommandMenu, NavCommandMenuProps, useNavCommandMenu } from './components/nav-command-menu.cjs';
35
41
  export { PortfolioBadgeVariant, PortfolioNavGroup, PortfolioNavItem, PortfolioSubnav, PortfolioSubnavProps } from './components/portfolio-subnav.cjs';
36
42
  export { CountableOrder, PortfolioCounts, derivePortfolioCounts } from './utils/portfolio-counts.cjs';
37
43
  import 'clsx';
44
+ import 'lucide-react';
38
45
  import 'react/jsx-runtime';
46
+ import '@medialane/sdk';
39
47
  import 'framer-motion';
40
48
  import 'react';
41
- import '@medialane/sdk';
42
- import 'lucide-react';
package/dist/index.d.ts CHANGED
@@ -3,6 +3,11 @@ 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';
6
11
  export { BRAND } from './data/brand.js';
7
12
  export { CurrencyAmount, CurrencyAmountProps, CurrencyIcon, CurrencyIconProps } from './components/currency-icon.js';
8
13
  export { IP_TYPE_CONFIG, IP_TYPE_MAP, IpTypeBadge, IpTypeBadgeProps, IpTypeConfig } from './components/ip-type-badge.js';
@@ -15,7 +20,7 @@ export { ScrollSection, ScrollSectionProps } from './components/scroll-section.j
15
20
  export { ShareButton, ShareButtonProps } from './components/share-button.js';
16
21
  export { CollectionCard, CollectionCardProps, CollectionCardSkeleton } from './components/collection-card.js';
17
22
  export { RarityTier, TokenCard, TokenCardProps, TokenCardSkeleton } from './components/token-card.js';
18
- export { timeAgo } from './utils/time.js';
23
+ export { timeAgo, timeUntil } from './utils/time.js';
19
24
  export { ACTIVITY_TYPE_CONFIG, ActivityTypeConfig, TYPE_FILTERS } from './data/activity.js';
20
25
  export { HeroSlider, HeroSliderProps, HeroSliderSkeleton } from './components/hero-slider.js';
21
26
  export { ActivityTicker, ActivityTickerProps } from './components/activity-ticker.js';
@@ -30,13 +35,14 @@ export { DiscoverCreatorsStrip, DiscoverCreatorsStripProps } from './components/
30
35
  export { DiscoverFeedSection, DiscoverFeedSectionProps } from './components/discover-feed-section.js';
31
36
  export { ACTIVITY_MESSAGES, ActivityCard, ActivityCardProps, ActivityCardSkeleton } from './components/activity-card.js';
32
37
  export { LaunchpadGroupedSections, LaunchpadGroupedSectionsProps, LaunchpadServiceCard, LaunchpadServiceCardProps, SERVICE_HUES, ServiceOverride, ServiceOverrides } from './components/launchpad-services.js';
38
+ export { LaunchpadStrip, LaunchpadStripProps } from './components/launchpad-strip.js';
33
39
  export { LAUNCHPAD_SERVICE_DEFINITIONS, LAUNCHPAD_SERVICE_GROUPS, ServiceCategory, ServiceDefinition, ServiceGroup, ServiceGroupDefinition, ServiceStatus } from './data/launchpad-services.js';
34
40
  export { NavCommand, NavCommandGroup, NavCommandMenu, NavCommandMenuProps, useNavCommandMenu } from './components/nav-command-menu.js';
35
41
  export { PortfolioBadgeVariant, PortfolioNavGroup, PortfolioNavItem, PortfolioSubnav, PortfolioSubnavProps } from './components/portfolio-subnav.js';
36
42
  export { CountableOrder, PortfolioCounts, derivePortfolioCounts } from './utils/portfolio-counts.js';
37
43
  import 'clsx';
44
+ import 'lucide-react';
38
45
  import 'react/jsx-runtime';
46
+ import '@medialane/sdk';
39
47
  import 'framer-motion';
40
48
  import 'react';
41
- import '@medialane/sdk';
42
- import 'lucide-react';
package/dist/index.js CHANGED
@@ -3,6 +3,23 @@ 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";
6
23
  import { BRAND } from "./data/brand.js";
7
24
  import { CurrencyIcon, CurrencyAmount } from "./components/currency-icon.js";
8
25
  import { IpTypeBadge, IP_TYPE_CONFIG, IP_TYPE_MAP } from "./components/ip-type-badge.js";
@@ -15,7 +32,7 @@ import { ScrollSection } from "./components/scroll-section.js";
15
32
  import { ShareButton } from "./components/share-button.js";
16
33
  import { CollectionCard, CollectionCardSkeleton } from "./components/collection-card.js";
17
34
  import { TokenCard, TokenCardSkeleton } from "./components/token-card.js";
18
- import { timeAgo } from "./utils/time.js";
35
+ import { timeAgo, timeUntil } from "./utils/time.js";
19
36
  import { ACTIVITY_TYPE_CONFIG, TYPE_FILTERS } from "./data/activity.js";
20
37
  import { HeroSlider, HeroSliderSkeleton } from "./components/hero-slider.js";
21
38
  import { ActivityTicker } from "./components/activity-ticker.js";
@@ -30,6 +47,7 @@ import { DiscoverCreatorsStrip } from "./components/discover-creators-strip.js";
30
47
  import { DiscoverFeedSection } from "./components/discover-feed-section.js";
31
48
  import { ActivityCard, ActivityCardSkeleton, ACTIVITY_MESSAGES } from "./components/activity-card.js";
32
49
  import { LaunchpadGroupedSections, LaunchpadServiceCard, SERVICE_HUES } from "./components/launchpad-services.js";
50
+ import { LaunchpadStrip } from "./components/launchpad-strip.js";
33
51
  import { LAUNCHPAD_SERVICE_DEFINITIONS, LAUNCHPAD_SERVICE_GROUPS } from "./data/launchpad-services.js";
34
52
  import { NavCommandMenu, useNavCommandMenu } from "./components/nav-command-menu.js";
35
53
  import { PortfolioSubnav } from "./components/portfolio-subnav.js";
@@ -37,28 +55,37 @@ import { derivePortfolioCounts } from "./utils/portfolio-counts.js";
37
55
  export {
38
56
  ACTIVITY_MESSAGES,
39
57
  ACTIVITY_TYPE_CONFIG,
58
+ AI_POLICIES,
40
59
  ActivityCard,
41
60
  ActivityCardSkeleton,
42
61
  ActivityFeedShell,
43
62
  ActivityRow,
44
63
  ActivityTicker,
45
64
  AddressDisplay,
65
+ AssetMarketsTab,
66
+ AssetOverviewContent,
46
67
  BRAND,
47
68
  CollectionCard,
48
69
  CollectionCardSkeleton,
49
70
  CtaCardGrid,
50
71
  CurrencyAmount,
51
72
  CurrencyIcon,
73
+ DERIVATIVES_OPTIONS,
52
74
  DiscoverCollectionsStrip,
53
75
  DiscoverCreatorsStrip,
54
76
  DiscoverFeedSection,
55
77
  DiscoverHero,
56
78
  EASE_OUT,
79
+ EMBED_PLATFORM_META,
57
80
  FadeIn,
58
81
  FeaturedCarousel,
59
82
  FeaturedCarouselSkeleton,
83
+ GEOGRAPHIC_SCOPES,
60
84
  HeroSlider,
61
85
  HeroSliderSkeleton,
86
+ IPTypeDisplay,
87
+ IP_TEMPLATES,
88
+ IP_TYPES,
62
89
  IP_TYPE_CONFIG,
63
90
  IP_TYPE_DATA,
64
91
  IP_TYPE_DATA_MAP,
@@ -67,8 +94,11 @@ export {
67
94
  KineticWords,
68
95
  LAUNCHPAD_SERVICE_DEFINITIONS,
69
96
  LAUNCHPAD_SERVICE_GROUPS,
97
+ LICENSE_TRAIT_TYPES,
98
+ LICENSE_TYPES,
70
99
  LaunchpadGroupedSections,
71
100
  LaunchpadServiceCard,
101
+ LaunchpadStrip,
72
102
  ListingCard,
73
103
  ListingCardSkeleton,
74
104
  MedialaneIcon,
@@ -78,11 +108,13 @@ export {
78
108
  PageContainer,
79
109
  PortfolioSubnav,
80
110
  SERVICE_HUES,
111
+ SOCIAL_PLATFORM_META,
81
112
  SPRING,
82
113
  ScrollSection,
83
114
  ShareButton,
84
115
  Stagger,
85
116
  StaggerItem,
117
+ TEMPLATE_TRAIT_TYPES,
86
118
  TYPE_FILTERS,
87
119
  TokenCard,
88
120
  TokenCardSkeleton,
@@ -92,6 +124,7 @@ export {
92
124
  ipfsToHttp,
93
125
  shortenAddress,
94
126
  timeAgo,
127
+ timeUntil,
95
128
  useNavCommandMenu
96
129
  };
97
130
  //# 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 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;AAE7E,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 { 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,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.0",
3
+ "version": "0.13.0",
4
4
  "description": "Shared UI components for Medialane apps",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",