@medialane/ui 0.119.0 → 0.121.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 (448) hide show
  1. package/dist/components/action-button.cjs.map +1 -1
  2. package/dist/components/action-button.d.cts +0 -9
  3. package/dist/components/action-button.d.ts +0 -9
  4. package/dist/components/action-button.js.map +1 -1
  5. package/dist/components/action-dialog.cjs.map +1 -1
  6. package/dist/components/action-dialog.d.cts +0 -1
  7. package/dist/components/action-dialog.d.ts +0 -1
  8. package/dist/components/action-dialog.js.map +1 -1
  9. package/dist/components/activity-card.cjs.map +1 -1
  10. package/dist/components/activity-card.d.cts +0 -3
  11. package/dist/components/activity-card.d.ts +0 -3
  12. package/dist/components/activity-card.js.map +1 -1
  13. package/dist/components/activity-row.cjs.map +1 -1
  14. package/dist/components/activity-row.d.cts +0 -1
  15. package/dist/components/activity-row.d.ts +0 -1
  16. package/dist/components/activity-row.js.map +1 -1
  17. package/dist/components/activity-ticker.cjs.map +1 -1
  18. package/dist/components/activity-ticker.d.cts +0 -1
  19. package/dist/components/activity-ticker.d.ts +0 -1
  20. package/dist/components/activity-ticker.js.map +1 -1
  21. package/dist/components/address-display.cjs.map +1 -1
  22. package/dist/components/address-display.d.cts +0 -1
  23. package/dist/components/address-display.d.ts +0 -1
  24. package/dist/components/address-display.js.map +1 -1
  25. package/dist/components/animated-token-media.cjs.map +1 -1
  26. package/dist/components/animated-token-media.d.cts +0 -10
  27. package/dist/components/animated-token-media.d.ts +0 -10
  28. package/dist/components/animated-token-media.js.map +1 -1
  29. package/dist/components/asset-card.cjs.map +1 -1
  30. package/dist/components/asset-card.d.cts +0 -29
  31. package/dist/components/asset-card.d.ts +0 -29
  32. package/dist/components/asset-card.js.map +1 -1
  33. package/dist/components/asset-collection-bar.cjs.map +1 -1
  34. package/dist/components/asset-collection-bar.d.cts +0 -1
  35. package/dist/components/asset-collection-bar.d.ts +0 -1
  36. package/dist/components/asset-collection-bar.js.map +1 -1
  37. package/dist/components/asset-license-summary.cjs.map +1 -1
  38. package/dist/components/asset-license-summary.d.cts +0 -8
  39. package/dist/components/asset-license-summary.d.ts +0 -8
  40. package/dist/components/asset-license-summary.js.map +1 -1
  41. package/dist/components/asset-lightbox.cjs.map +1 -1
  42. package/dist/components/asset-lightbox.js.map +1 -1
  43. package/dist/components/asset-marketplace-panel.cjs.map +1 -1
  44. package/dist/components/asset-marketplace-panel.d.cts +0 -13
  45. package/dist/components/asset-marketplace-panel.d.ts +0 -13
  46. package/dist/components/asset-marketplace-panel.js.map +1 -1
  47. package/dist/components/asset-markets-tab.cjs.map +1 -1
  48. package/dist/components/asset-markets-tab.js.map +1 -1
  49. package/dist/components/asset-overview-content.cjs.map +1 -1
  50. package/dist/components/asset-overview-content.d.cts +0 -7
  51. package/dist/components/asset-overview-content.d.ts +0 -7
  52. package/dist/components/asset-overview-content.js.map +1 -1
  53. package/dist/components/asset-picker-cell.cjs.map +1 -1
  54. package/dist/components/asset-picker-cell.d.cts +0 -4
  55. package/dist/components/asset-picker-cell.d.ts +0 -4
  56. package/dist/components/asset-picker-cell.js.map +1 -1
  57. package/dist/components/asset-picker.cjs.map +1 -1
  58. package/dist/components/asset-picker.d.cts +0 -4
  59. package/dist/components/asset-picker.d.ts +0 -4
  60. package/dist/components/asset-picker.js.map +1 -1
  61. package/dist/components/asset-search-picker.cjs.map +1 -1
  62. package/dist/components/asset-search-picker.d.cts +0 -2
  63. package/dist/components/asset-search-picker.d.ts +0 -2
  64. package/dist/components/asset-search-picker.js.map +1 -1
  65. package/dist/components/asset-top-sections.cjs.map +1 -1
  66. package/dist/components/asset-top-sections.d.cts +0 -18
  67. package/dist/components/asset-top-sections.d.ts +0 -18
  68. package/dist/components/asset-top-sections.js.map +1 -1
  69. package/dist/components/asset-utility-icons.cjs.map +1 -1
  70. package/dist/components/asset-utility-icons.d.cts +0 -5
  71. package/dist/components/asset-utility-icons.d.ts +0 -5
  72. package/dist/components/asset-utility-icons.js.map +1 -1
  73. package/dist/components/claim-rail.cjs.map +1 -1
  74. package/dist/components/claim-rail.d.cts +0 -9
  75. package/dist/components/claim-rail.d.ts +0 -9
  76. package/dist/components/claim-rail.js.map +1 -1
  77. package/dist/components/club-owner-actions.cjs.map +1 -1
  78. package/dist/components/club-owner-actions.d.cts +0 -2
  79. package/dist/components/club-owner-actions.d.ts +0 -2
  80. package/dist/components/club-owner-actions.js.map +1 -1
  81. package/dist/components/coin-card.cjs.map +1 -1
  82. package/dist/components/coin-card.d.cts +0 -2
  83. package/dist/components/coin-card.d.ts +0 -2
  84. package/dist/components/coin-card.js.map +1 -1
  85. package/dist/components/coin-launch-preview.cjs.map +1 -1
  86. package/dist/components/coin-launch-preview.d.cts +0 -7
  87. package/dist/components/coin-launch-preview.d.ts +0 -7
  88. package/dist/components/coin-launch-preview.js.map +1 -1
  89. package/dist/components/coins-explorer.cjs.map +1 -1
  90. package/dist/components/coins-explorer.d.cts +0 -1
  91. package/dist/components/coins-explorer.d.ts +0 -1
  92. package/dist/components/coins-explorer.js.map +1 -1
  93. package/dist/components/collection-card.cjs.map +1 -1
  94. package/dist/components/collection-card.d.cts +0 -2
  95. package/dist/components/collection-card.d.ts +0 -2
  96. package/dist/components/collection-card.js.map +1 -1
  97. package/dist/components/collection-filters.cjs.map +1 -1
  98. package/dist/components/collection-filters.js.map +1 -1
  99. package/dist/components/collection-hero-banner.cjs.map +1 -1
  100. package/dist/components/collection-hero-banner.d.cts +0 -7
  101. package/dist/components/collection-hero-banner.d.ts +0 -7
  102. package/dist/components/collection-hero-banner.js.map +1 -1
  103. package/dist/components/collection-traits-tab.cjs.map +1 -1
  104. package/dist/components/collection-traits-tab.js.map +1 -1
  105. package/dist/components/community-rewards-section.cjs.map +1 -1
  106. package/dist/components/community-rewards-section.js.map +1 -1
  107. package/dist/components/create-form-primitives.cjs.map +1 -1
  108. package/dist/components/create-form-primitives.d.cts +0 -2
  109. package/dist/components/create-form-primitives.d.ts +0 -2
  110. package/dist/components/create-form-primitives.js.map +1 -1
  111. package/dist/components/creation-record.cjs.map +1 -1
  112. package/dist/components/creation-record.d.cts +0 -5
  113. package/dist/components/creation-record.d.ts +0 -5
  114. package/dist/components/creation-record.js.map +1 -1
  115. package/dist/components/creator-airdrop-banner.cjs.map +1 -1
  116. package/dist/components/creator-airdrop-banner.d.cts +0 -1
  117. package/dist/components/creator-airdrop-banner.d.ts +0 -1
  118. package/dist/components/creator-airdrop-banner.js.map +1 -1
  119. package/dist/components/creator-analytics.cjs.map +1 -1
  120. package/dist/components/creator-analytics.js.map +1 -1
  121. package/dist/components/creator-score-inline.cjs.map +1 -1
  122. package/dist/components/creator-score-inline.d.cts +0 -5
  123. package/dist/components/creator-score-inline.d.ts +0 -5
  124. package/dist/components/creator-score-inline.js.map +1 -1
  125. package/dist/components/cta-card-grid.cjs.map +1 -1
  126. package/dist/components/cta-card-grid.d.cts +0 -2
  127. package/dist/components/cta-card-grid.d.ts +0 -2
  128. package/dist/components/cta-card-grid.js.map +1 -1
  129. package/dist/components/currency-icon.cjs.map +1 -1
  130. package/dist/components/currency-icon.d.cts +0 -5
  131. package/dist/components/currency-icon.d.ts +0 -5
  132. package/dist/components/currency-icon.js.map +1 -1
  133. package/dist/components/discover-collections-strip.cjs.map +1 -1
  134. package/dist/components/discover-collections-strip.d.cts +0 -4
  135. package/dist/components/discover-collections-strip.d.ts +0 -4
  136. package/dist/components/discover-collections-strip.js.map +1 -1
  137. package/dist/components/discover-creators-strip.cjs.map +1 -1
  138. package/dist/components/discover-creators-strip.js.map +1 -1
  139. package/dist/components/discover-feed-section.cjs.map +1 -1
  140. package/dist/components/discover-feed-section.d.cts +0 -11
  141. package/dist/components/discover-feed-section.d.ts +0 -11
  142. package/dist/components/discover-feed-section.js.map +1 -1
  143. package/dist/components/discover-hero.cjs.map +1 -1
  144. package/dist/components/discover-hero.js.map +1 -1
  145. package/dist/components/drop-countdown.cjs.map +1 -1
  146. package/dist/components/drop-countdown.js.map +1 -1
  147. package/dist/components/dual-price.cjs +1 -7
  148. package/dist/components/dual-price.cjs.map +1 -1
  149. package/dist/components/dual-price.d.cts +0 -30
  150. package/dist/components/dual-price.d.ts +0 -30
  151. package/dist/components/dual-price.js +1 -7
  152. package/dist/components/dual-price.js.map +1 -1
  153. package/dist/components/empty-or-error.cjs.map +1 -1
  154. package/dist/components/empty-or-error.d.cts +0 -1
  155. package/dist/components/empty-or-error.d.ts +0 -1
  156. package/dist/components/empty-or-error.js.map +1 -1
  157. package/dist/components/gradient-button.cjs.map +1 -1
  158. package/dist/components/gradient-button.d.cts +0 -13
  159. package/dist/components/gradient-button.d.ts +0 -13
  160. package/dist/components/gradient-button.js.map +1 -1
  161. package/dist/components/help-icon.cjs.map +1 -1
  162. package/dist/components/help-icon.d.cts +0 -4
  163. package/dist/components/help-icon.d.ts +0 -4
  164. package/dist/components/help-icon.js.map +1 -1
  165. package/dist/components/hero-slider.cjs.map +1 -1
  166. package/dist/components/hero-slider.d.cts +0 -1
  167. package/dist/components/hero-slider.d.ts +0 -1
  168. package/dist/components/hero-slider.js.map +1 -1
  169. package/dist/components/ip-type-badge.cjs.map +1 -1
  170. package/dist/components/ip-type-badge.d.cts +0 -2
  171. package/dist/components/ip-type-badge.d.ts +0 -2
  172. package/dist/components/ip-type-badge.js.map +1 -1
  173. package/dist/components/ip-type-display.cjs.map +1 -1
  174. package/dist/components/ip-type-display.js.map +1 -1
  175. package/dist/components/ip-type-fields.cjs.map +1 -1
  176. package/dist/components/ip-type-fields.d.cts +0 -2
  177. package/dist/components/ip-type-fields.d.ts +0 -2
  178. package/dist/components/ip-type-fields.js.map +1 -1
  179. package/dist/components/launchpad-filter-bar.cjs.map +1 -1
  180. package/dist/components/launchpad-filter-bar.d.cts +0 -8
  181. package/dist/components/launchpad-filter-bar.d.ts +0 -8
  182. package/dist/components/launchpad-filter-bar.js.map +1 -1
  183. package/dist/components/launchpad-services.cjs +0 -1
  184. package/dist/components/launchpad-services.cjs.map +1 -1
  185. package/dist/components/launchpad-services.d.cts +0 -36
  186. package/dist/components/launchpad-services.d.ts +0 -36
  187. package/dist/components/launchpad-services.js +0 -1
  188. package/dist/components/launchpad-services.js.map +1 -1
  189. package/dist/components/launchpad-strip.cjs.map +1 -1
  190. package/dist/components/launchpad-strip.d.cts +0 -6
  191. package/dist/components/launchpad-strip.d.ts +0 -6
  192. package/dist/components/launchpad-strip.js.map +1 -1
  193. package/dist/components/license-terms-builder.cjs.map +1 -1
  194. package/dist/components/license-terms-builder.d.cts +0 -34
  195. package/dist/components/license-terms-builder.d.ts +0 -34
  196. package/dist/components/license-terms-builder.js.map +1 -1
  197. package/dist/components/listing-card.cjs.map +1 -1
  198. package/dist/components/listing-card.d.cts +0 -19
  199. package/dist/components/listing-card.d.ts +0 -19
  200. package/dist/components/listing-card.js.map +1 -1
  201. package/dist/components/load-more-sentinel.cjs.map +1 -1
  202. package/dist/components/load-more-sentinel.d.cts +0 -6
  203. package/dist/components/load-more-sentinel.d.ts +0 -6
  204. package/dist/components/load-more-sentinel.js.map +1 -1
  205. package/dist/components/medialane-collection-card.cjs +1 -4
  206. package/dist/components/medialane-collection-card.cjs.map +1 -1
  207. package/dist/components/medialane-collection-card.d.cts +0 -13
  208. package/dist/components/medialane-collection-card.d.ts +0 -13
  209. package/dist/components/medialane-collection-card.js +1 -4
  210. package/dist/components/medialane-collection-card.js.map +1 -1
  211. package/dist/components/motion-primitives.cjs.map +1 -1
  212. package/dist/components/motion-primitives.js.map +1 -1
  213. package/dist/components/nav-command-menu.cjs.map +1 -1
  214. package/dist/components/nav-command-menu.d.cts +0 -32
  215. package/dist/components/nav-command-menu.d.ts +0 -32
  216. package/dist/components/nav-command-menu.js.map +1 -1
  217. package/dist/components/nav-shell.cjs.map +1 -1
  218. package/dist/components/nav-shell.d.cts +0 -57
  219. package/dist/components/nav-shell.d.ts +0 -57
  220. package/dist/components/nav-shell.js.map +1 -1
  221. package/dist/components/nav-theme-toggle.cjs.map +1 -1
  222. package/dist/components/nav-theme-toggle.d.cts +0 -4
  223. package/dist/components/nav-theme-toggle.d.ts +0 -4
  224. package/dist/components/nav-theme-toggle.js.map +1 -1
  225. package/dist/components/order-sort-control.cjs.map +1 -1
  226. package/dist/components/order-sort-control.d.cts +0 -2
  227. package/dist/components/order-sort-control.d.ts +0 -2
  228. package/dist/components/order-sort-control.js.map +1 -1
  229. package/dist/components/page-container.cjs +0 -3
  230. package/dist/components/page-container.cjs.map +1 -1
  231. package/dist/components/page-container.d.cts +0 -6
  232. package/dist/components/page-container.d.ts +0 -6
  233. package/dist/components/page-container.js +0 -3
  234. package/dist/components/page-container.js.map +1 -1
  235. package/dist/components/parent-attribution-banner.cjs.map +1 -1
  236. package/dist/components/parent-attribution-banner.d.cts +0 -1
  237. package/dist/components/parent-attribution-banner.d.ts +0 -1
  238. package/dist/components/parent-attribution-banner.js.map +1 -1
  239. package/dist/components/portfolio-activity.cjs.map +1 -1
  240. package/dist/components/portfolio-activity.js.map +1 -1
  241. package/dist/components/portfolio-bento-tile.cjs +8 -3
  242. package/dist/components/portfolio-bento-tile.cjs.map +1 -1
  243. package/dist/components/portfolio-bento-tile.d.cts +5 -13
  244. package/dist/components/portfolio-bento-tile.d.ts +5 -13
  245. package/dist/components/portfolio-bento-tile.js +8 -3
  246. package/dist/components/portfolio-bento-tile.js.map +1 -1
  247. package/dist/components/portfolio-chip-filter.cjs.map +1 -1
  248. package/dist/components/portfolio-chip-filter.d.cts +0 -14
  249. package/dist/components/portfolio-chip-filter.d.ts +0 -14
  250. package/dist/components/portfolio-chip-filter.js.map +1 -1
  251. package/dist/components/portfolio-header.cjs.map +1 -1
  252. package/dist/components/portfolio-header.d.cts +0 -11
  253. package/dist/components/portfolio-header.d.ts +0 -11
  254. package/dist/components/portfolio-header.js.map +1 -1
  255. package/dist/components/portfolio-overview.cjs +6 -1
  256. package/dist/components/portfolio-overview.cjs.map +1 -1
  257. package/dist/components/portfolio-overview.d.cts +0 -18
  258. package/dist/components/portfolio-overview.d.ts +0 -18
  259. package/dist/components/portfolio-overview.js +6 -1
  260. package/dist/components/portfolio-overview.js.map +1 -1
  261. package/dist/components/price-history-chart.cjs.map +1 -1
  262. package/dist/components/price-history-chart.js.map +1 -1
  263. package/dist/components/rewards/badge-catalog.cjs.map +1 -1
  264. package/dist/components/rewards/badge-catalog.d.cts +0 -5
  265. package/dist/components/rewards/badge-catalog.d.ts +0 -5
  266. package/dist/components/rewards/badge-catalog.js.map +1 -1
  267. package/dist/components/rewards/badge-shelf.cjs.map +1 -1
  268. package/dist/components/rewards/badge-shelf.d.cts +0 -5
  269. package/dist/components/rewards/badge-shelf.d.ts +0 -5
  270. package/dist/components/rewards/badge-shelf.js.map +1 -1
  271. package/dist/components/rewards/badge-unlock-toast-content.cjs.map +1 -1
  272. package/dist/components/rewards/badge-unlock-toast-content.d.cts +0 -2
  273. package/dist/components/rewards/badge-unlock-toast-content.d.ts +0 -2
  274. package/dist/components/rewards/badge-unlock-toast-content.js.map +1 -1
  275. package/dist/components/rewards/journey-path.cjs.map +1 -1
  276. package/dist/components/rewards/journey-path.d.cts +0 -9
  277. package/dist/components/rewards/journey-path.d.ts +0 -9
  278. package/dist/components/rewards/journey-path.js.map +1 -1
  279. package/dist/components/rewards/leaderboard-table.cjs.map +1 -1
  280. package/dist/components/rewards/leaderboard-table.d.cts +0 -11
  281. package/dist/components/rewards/leaderboard-table.d.ts +0 -11
  282. package/dist/components/rewards/leaderboard-table.js.map +1 -1
  283. package/dist/components/rewards/level-badge.cjs.map +1 -1
  284. package/dist/components/rewards/level-badge.d.cts +0 -10
  285. package/dist/components/rewards/level-badge.d.ts +0 -10
  286. package/dist/components/rewards/level-badge.js.map +1 -1
  287. package/dist/components/rewards/level-journey-list.cjs.map +1 -1
  288. package/dist/components/rewards/level-journey-list.d.cts +0 -7
  289. package/dist/components/rewards/level-journey-list.d.ts +0 -7
  290. package/dist/components/rewards/level-journey-list.js.map +1 -1
  291. package/dist/components/rewards/level-up-celebration.cjs.map +1 -1
  292. package/dist/components/rewards/level-up-celebration.d.cts +0 -4
  293. package/dist/components/rewards/level-up-celebration.d.ts +0 -4
  294. package/dist/components/rewards/level-up-celebration.js.map +1 -1
  295. package/dist/components/rewards/reward-toast.cjs.map +1 -1
  296. package/dist/components/rewards/reward-toast.d.cts +0 -8
  297. package/dist/components/rewards/reward-toast.d.ts +0 -8
  298. package/dist/components/rewards/reward-toast.js.map +1 -1
  299. package/dist/components/rewards/score-summary-card.cjs.map +1 -1
  300. package/dist/components/rewards/score-summary-card.d.cts +0 -5
  301. package/dist/components/rewards/score-summary-card.d.ts +0 -5
  302. package/dist/components/rewards/score-summary-card.js.map +1 -1
  303. package/dist/components/rewards/use-rewards-celebrations.cjs.map +1 -1
  304. package/dist/components/rewards/use-rewards-celebrations.d.cts +0 -10
  305. package/dist/components/rewards/use-rewards-celebrations.d.ts +0 -10
  306. package/dist/components/rewards/use-rewards-celebrations.js.map +1 -1
  307. package/dist/components/rewards/xp-progress.cjs.map +1 -1
  308. package/dist/components/rewards/xp-progress.d.cts +0 -4
  309. package/dist/components/rewards/xp-progress.d.ts +0 -4
  310. package/dist/components/rewards/xp-progress.js.map +1 -1
  311. package/dist/components/rewards/xp-toast-content.cjs.map +1 -1
  312. package/dist/components/rewards/xp-toast-content.d.cts +0 -7
  313. package/dist/components/rewards/xp-toast-content.d.ts +0 -7
  314. package/dist/components/rewards/xp-toast-content.js.map +1 -1
  315. package/dist/components/scroll-section.cjs.map +1 -1
  316. package/dist/components/scroll-section.d.cts +0 -6
  317. package/dist/components/scroll-section.d.ts +0 -6
  318. package/dist/components/scroll-section.js.map +1 -1
  319. package/dist/components/service-form-shell.cjs.map +1 -1
  320. package/dist/components/service-form-shell.d.cts +0 -14
  321. package/dist/components/service-form-shell.d.ts +0 -14
  322. package/dist/components/service-form-shell.js.map +1 -1
  323. package/dist/components/service-header.cjs.map +1 -1
  324. package/dist/components/service-header.d.cts +0 -11
  325. package/dist/components/service-header.d.ts +0 -11
  326. package/dist/components/service-header.js.map +1 -1
  327. package/dist/components/share-button.cjs.map +1 -1
  328. package/dist/components/share-button.js.map +1 -1
  329. package/dist/components/stat-tile.cjs.map +1 -1
  330. package/dist/components/stat-tile.d.cts +0 -4
  331. package/dist/components/stat-tile.d.ts +0 -4
  332. package/dist/components/stat-tile.js.map +1 -1
  333. package/dist/components/step-nav.cjs.map +1 -1
  334. package/dist/components/step-nav.d.cts +0 -11
  335. package/dist/components/step-nav.d.ts +0 -11
  336. package/dist/components/step-nav.js.map +1 -1
  337. package/dist/components/theme-ambient-background.cjs.map +1 -1
  338. package/dist/components/theme-ambient-background.d.cts +0 -6
  339. package/dist/components/theme-ambient-background.d.ts +0 -6
  340. package/dist/components/theme-ambient-background.js.map +1 -1
  341. package/dist/components/token-card.cjs.map +1 -1
  342. package/dist/components/token-card.d.cts +0 -6
  343. package/dist/components/token-card.d.ts +0 -6
  344. package/dist/components/token-card.js.map +1 -1
  345. package/dist/components/token-glyph.cjs.map +1 -1
  346. package/dist/components/token-glyph.d.cts +0 -2
  347. package/dist/components/token-glyph.d.ts +0 -2
  348. package/dist/components/token-glyph.js.map +1 -1
  349. package/dist/data/brand.cjs.map +1 -1
  350. package/dist/data/brand.d.cts +0 -6
  351. package/dist/data/brand.d.ts +0 -6
  352. package/dist/data/brand.js.map +1 -1
  353. package/dist/data/coins.cjs.map +1 -1
  354. package/dist/data/coins.d.cts +0 -9
  355. package/dist/data/coins.d.ts +0 -9
  356. package/dist/data/coins.js.map +1 -1
  357. package/dist/data/ip-templates.cjs.map +1 -1
  358. package/dist/data/ip-templates.d.cts +0 -12
  359. package/dist/data/ip-templates.d.ts +0 -12
  360. package/dist/data/ip-templates.js.map +1 -1
  361. package/dist/data/ip-types.cjs.map +1 -1
  362. package/dist/data/ip-types.d.cts +0 -2
  363. package/dist/data/ip-types.d.ts +0 -2
  364. package/dist/data/ip-types.js.map +1 -1
  365. package/dist/data/ip.cjs.map +1 -1
  366. package/dist/data/ip.d.cts +0 -1
  367. package/dist/data/ip.d.ts +0 -1
  368. package/dist/data/ip.js.map +1 -1
  369. package/dist/data/launchpad-services.cjs +0 -10
  370. package/dist/data/launchpad-services.cjs.map +1 -1
  371. package/dist/data/launchpad-services.d.cts +0 -10
  372. package/dist/data/launchpad-services.d.ts +0 -10
  373. package/dist/data/launchpad-services.js +0 -10
  374. package/dist/data/launchpad-services.js.map +1 -1
  375. package/dist/data/living-render-collections.cjs +0 -2
  376. package/dist/data/living-render-collections.cjs.map +1 -1
  377. package/dist/data/living-render-collections.d.cts +0 -11
  378. package/dist/data/living-render-collections.d.ts +0 -11
  379. package/dist/data/living-render-collections.js +0 -2
  380. package/dist/data/living-render-collections.js.map +1 -1
  381. package/dist/data/notification.cjs.map +1 -1
  382. package/dist/data/notification.d.cts +0 -3
  383. package/dist/data/notification.d.ts +0 -3
  384. package/dist/index.cjs.map +1 -1
  385. package/dist/index.js.map +1 -1
  386. package/dist/preset/tailwind.cjs +0 -9
  387. package/dist/preset/tailwind.cjs.map +1 -1
  388. package/dist/preset/tailwind.js +0 -9
  389. package/dist/preset/tailwind.js.map +1 -1
  390. package/dist/utils/address.cjs.map +1 -1
  391. package/dist/utils/address.d.cts +0 -4
  392. package/dist/utils/address.d.ts +0 -4
  393. package/dist/utils/address.js.map +1 -1
  394. package/dist/utils/api-fetch.cjs.map +1 -1
  395. package/dist/utils/api-fetch.d.cts +0 -21
  396. package/dist/utils/api-fetch.d.ts +0 -21
  397. package/dist/utils/api-fetch.js.map +1 -1
  398. package/dist/utils/format.cjs.map +1 -1
  399. package/dist/utils/format.d.cts +0 -11
  400. package/dist/utils/format.d.ts +0 -11
  401. package/dist/utils/format.js.map +1 -1
  402. package/dist/utils/ipfs.cjs.map +1 -1
  403. package/dist/utils/ipfs.d.cts +0 -8
  404. package/dist/utils/ipfs.d.ts +0 -8
  405. package/dist/utils/ipfs.js.map +1 -1
  406. package/dist/utils/license-summary.cjs.map +1 -1
  407. package/dist/utils/license-summary.d.cts +0 -8
  408. package/dist/utils/license-summary.d.ts +0 -8
  409. package/dist/utils/license-summary.js.map +1 -1
  410. package/dist/utils/notification-storage.cjs.map +1 -1
  411. package/dist/utils/notification-storage.js.map +1 -1
  412. package/dist/utils/portfolio-counts.cjs.map +1 -1
  413. package/dist/utils/portfolio-counts.d.cts +0 -18
  414. package/dist/utils/portfolio-counts.d.ts +0 -18
  415. package/dist/utils/portfolio-counts.js.map +1 -1
  416. package/dist/utils/proxy-body.cjs.map +1 -1
  417. package/dist/utils/proxy-body.d.cts +0 -11
  418. package/dist/utils/proxy-body.d.ts +0 -11
  419. package/dist/utils/proxy-body.js.map +1 -1
  420. package/dist/utils/time.cjs.map +1 -1
  421. package/dist/utils/time.d.cts +0 -5
  422. package/dist/utils/time.d.ts +0 -5
  423. package/dist/utils/time.js.map +1 -1
  424. package/dist/utils/use-collections.cjs.map +1 -1
  425. package/dist/utils/use-collections.d.cts +1 -11
  426. package/dist/utils/use-collections.d.ts +1 -11
  427. package/dist/utils/use-collections.js.map +1 -1
  428. package/dist/utils/use-intersection-active.cjs.map +1 -1
  429. package/dist/utils/use-intersection-active.d.cts +0 -7
  430. package/dist/utils/use-intersection-active.d.ts +0 -7
  431. package/dist/utils/use-intersection-active.js.map +1 -1
  432. package/dist/utils/use-notifications.cjs.map +1 -1
  433. package/dist/utils/use-notifications.js.map +1 -1
  434. package/dist/utils/use-orders.cjs.map +1 -1
  435. package/dist/utils/use-orders.d.cts +0 -2
  436. package/dist/utils/use-orders.d.ts +0 -2
  437. package/dist/utils/use-orders.js.map +1 -1
  438. package/dist/utils/use-profiles.cjs.map +1 -1
  439. package/dist/utils/use-profiles.js.map +1 -1
  440. package/dist/utils/use-remix-offers.cjs.map +1 -1
  441. package/dist/utils/use-remix-offers.d.cts +0 -1
  442. package/dist/utils/use-remix-offers.d.ts +0 -1
  443. package/dist/utils/use-remix-offers.js.map +1 -1
  444. package/dist/utils/use-rewards.cjs.map +1 -1
  445. package/dist/utils/use-rewards.d.cts +0 -4
  446. package/dist/utils/use-rewards.d.ts +0 -4
  447. package/dist/utils/use-rewards.js.map +1 -1
  448. package/package.json +1 -1
@@ -4,10 +4,6 @@ interface CurrencyIconProps {
4
4
  symbol: string | null | undefined;
5
5
  size?: number;
6
6
  className?: string;
7
- /**
8
- * Base path prepended to icon paths. Default: "" (icons served from app's public root).
9
- * Example: "https://cdn.medialane.io/icons"
10
- */
11
7
  iconsBasePath?: string;
12
8
  }
13
9
  declare function CurrencyIcon({ symbol, size, className, iconsBasePath }: CurrencyIconProps): react_jsx_runtime.JSX.Element | null;
@@ -17,7 +13,6 @@ interface CurrencyAmountProps {
17
13
  amountClassName?: string;
18
14
  iconSize?: number;
19
15
  className?: string;
20
- /** Forwarded to CurrencyIcon. */
21
16
  iconsBasePath?: string;
22
17
  }
23
18
  declare function CurrencyAmount({ amount, symbol, amountClassName, iconSize, className, iconsBasePath, }: CurrencyAmountProps): react_jsx_runtime.JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/currency-icon.tsx"],"sourcesContent":["\"use client\";\n\nimport Image from \"next/image\";\nimport { cn } from \"../utils/cn.js\";\n\nconst CURRENCY_ICON_PATHS: Record<string, string> = {\n USDC: \"/usdc.svg\",\n USDT: \"/usdt.svg\",\n ETH: \"/eth.svg\",\n STRK: \"/strk.svg\",\n WBTC: \"/btc.svg\",\n};\n\nexport interface CurrencyIconProps {\n symbol: string | null | undefined;\n size?: number;\n className?: string;\n /**\n * Base path prepended to icon paths. Default: \"\" (icons served from app's public root).\n * Example: \"https://cdn.medialane.io/icons\"\n */\n iconsBasePath?: string;\n}\n\nexport function CurrencyIcon({ symbol, size = 16, className, iconsBasePath = \"\" }: CurrencyIconProps) {\n const path = symbol ? CURRENCY_ICON_PATHS[symbol] : undefined;\n if (!path) return null;\n return (\n <Image\n src={`${iconsBasePath}${path}`}\n alt={symbol ?? \"\"}\n width={size}\n height={size}\n className={cn(\"inline-block shrink-0\", className)}\n unoptimized\n />\n );\n}\n\nexport interface CurrencyAmountProps {\n amount: string;\n symbol: string | null | undefined;\n amountClassName?: string;\n iconSize?: number;\n className?: string;\n /** Forwarded to CurrencyIcon. */\n iconsBasePath?: string;\n}\n\nexport function CurrencyAmount({\n amount,\n symbol,\n amountClassName,\n iconSize = 14,\n className,\n iconsBasePath,\n}: CurrencyAmountProps) {\n return (\n <span className={cn(\"inline-flex items-center gap-1\", className)}>\n <CurrencyIcon symbol={symbol} size={iconSize} iconsBasePath={iconsBasePath} />\n <span className={amountClassName}>{amount}</span>\n </span>\n );\n}\n"],"mappings":";AA4BI,cA8BA,YA9BA;AA1BJ,OAAO,WAAW;AAClB,SAAS,UAAU;AAEnB,MAAM,sBAA8C;AAAA,EAClD,MAAM;AAAA,EACN,MAAM;AAAA,EACN,KAAK;AAAA,EACL,MAAM;AAAA,EACN,MAAM;AACR;AAaO,SAAS,aAAa,EAAE,QAAQ,OAAO,IAAI,WAAW,gBAAgB,GAAG,GAAsB;AACpG,QAAM,OAAO,SAAS,oBAAoB,MAAM,IAAI;AACpD,MAAI,CAAC,KAAM,QAAO;AAClB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,KAAK,GAAG,aAAa,GAAG,IAAI;AAAA,MAC5B,KAAK,UAAU;AAAA,MACf,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,WAAW,GAAG,yBAAyB,SAAS;AAAA,MAChD,aAAW;AAAA;AAAA,EACb;AAEJ;AAYO,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA;AACF,GAAwB;AACtB,SACE,qBAAC,UAAK,WAAW,GAAG,kCAAkC,SAAS,GAC7D;AAAA,wBAAC,gBAAa,QAAgB,MAAM,UAAU,eAA8B;AAAA,IAC5E,oBAAC,UAAK,WAAW,iBAAkB,kBAAO;AAAA,KAC5C;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../src/components/currency-icon.tsx"],"sourcesContent":["\"use client\";\n\nimport Image from \"next/image\";\nimport { cn } from \"../utils/cn.js\";\n\nconst CURRENCY_ICON_PATHS: Record<string, string> = {\n USDC: \"/usdc.svg\",\n USDT: \"/usdt.svg\",\n ETH: \"/eth.svg\",\n STRK: \"/strk.svg\",\n WBTC: \"/btc.svg\",\n};\n\nexport interface CurrencyIconProps {\n symbol: string | null | undefined;\n size?: number;\n className?: string;\n\n iconsBasePath?: string;\n}\n\nexport function CurrencyIcon({ symbol, size = 16, className, iconsBasePath = \"\" }: CurrencyIconProps) {\n const path = symbol ? CURRENCY_ICON_PATHS[symbol] : undefined;\n if (!path) return null;\n return (\n <Image\n src={`${iconsBasePath}${path}`}\n alt={symbol ?? \"\"}\n width={size}\n height={size}\n className={cn(\"inline-block shrink-0\", className)}\n unoptimized\n />\n );\n}\n\nexport interface CurrencyAmountProps {\n amount: string;\n symbol: string | null | undefined;\n amountClassName?: string;\n iconSize?: number;\n className?: string;\n\n iconsBasePath?: string;\n}\n\nexport function CurrencyAmount({\n amount,\n symbol,\n amountClassName,\n iconSize = 14,\n className,\n iconsBasePath,\n}: CurrencyAmountProps) {\n return (\n <span className={cn(\"inline-flex items-center gap-1\", className)}>\n <CurrencyIcon symbol={symbol} size={iconSize} iconsBasePath={iconsBasePath} />\n <span className={amountClassName}>{amount}</span>\n </span>\n );\n}\n"],"mappings":";AAyBI,cA8BA,YA9BA;AAvBJ,OAAO,WAAW;AAClB,SAAS,UAAU;AAEnB,MAAM,sBAA8C;AAAA,EAClD,MAAM;AAAA,EACN,MAAM;AAAA,EACN,KAAK;AAAA,EACL,MAAM;AAAA,EACN,MAAM;AACR;AAUO,SAAS,aAAa,EAAE,QAAQ,OAAO,IAAI,WAAW,gBAAgB,GAAG,GAAsB;AACpG,QAAM,OAAO,SAAS,oBAAoB,MAAM,IAAI;AACpD,MAAI,CAAC,KAAM,QAAO;AAClB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,KAAK,GAAG,aAAa,GAAG,IAAI;AAAA,MAC5B,KAAK,UAAU;AAAA,MACf,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,WAAW,GAAG,yBAAyB,SAAS;AAAA,MAChD,aAAW;AAAA;AAAA,EACb;AAEJ;AAYO,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA;AACF,GAAwB;AACtB,SACE,qBAAC,UAAK,WAAW,GAAG,kCAAkC,SAAS,GAC7D;AAAA,wBAAC,gBAAa,QAAgB,MAAM,UAAU,eAA8B;AAAA,IAC5E,oBAAC,UAAK,WAAW,iBAAkB,kBAAO;AAAA,KAC5C;AAEJ;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/discover-collections-strip.tsx"],"sourcesContent":["\"use client\";\n\nimport { Layers } from \"lucide-react\";\nimport { ScrollSection } from \"./scroll-section.js\";\nimport { CollectionCard, CollectionCardSkeleton } from \"./collection-card.js\";\nimport type { ApiCollection } from \"@medialane/sdk\";\n\nexport interface DiscoverCollectionsStripProps {\n collections: ApiCollection[];\n isLoading: boolean;\n /** Kept for API compat — CollectionCard links to /collections/:contract internally */\n getHref?: (collection: ApiCollection) => string;\n allCollectionsHref?: string;\n /** Kept for API compat — the io-style header has no eyebrow label */\n sectionLabel?: string;\n title?: string;\n}\n\n/** Discover Collections carousel — CollectionCard tiles under the shared\n * icon-badge ScrollSection header (io-approved design). */\nexport function DiscoverCollectionsStrip({\n collections,\n isLoading,\n allCollectionsHref = \"/collections\",\n title = \"Collections\",\n}: DiscoverCollectionsStripProps) {\n return (\n <ScrollSection\n icon={<Layers className=\"h-3.5 w-3.5 text-white\" />}\n iconBg=\"bg-gradient-to-br from-brand-blue to-indigo-600 shadow-md shadow-brand-blue/20\"\n title={title}\n href={allCollectionsHref}\n linkLabel=\"View all\"\n >\n {isLoading\n ? Array.from({ length: 5 }).map((_, i) => (\n <div key={i} className=\"w-56 sm:w-64 snap-start shrink-0\">\n <CollectionCardSkeleton />\n </div>\n ))\n : collections.map((col) => (\n <div key={col.contractAddress} className=\"w-56 sm:w-64 snap-start shrink-0\">\n <CollectionCard collection={col} />\n </div>\n ))}\n </ScrollSection>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA4BY;AA1BZ,0BAAuB;AACvB,4BAA8B;AAC9B,6BAAuD;AAgBhD,SAAS,yBAAyB;AAAA,EACvC;AAAA,EACA;AAAA,EACA,qBAAqB;AAAA,EACrB,QAAQ;AACV,GAAkC;AAChC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAM,4CAAC,8BAAO,WAAU,0BAAyB;AAAA,MACjD,QAAO;AAAA,MACP;AAAA,MACA,MAAM;AAAA,MACN,WAAU;AAAA,MAET,sBACG,MAAM,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,MAChC,4CAAC,SAAY,WAAU,oCACrB,sDAAC,iDAAuB,KADhB,CAEV,CACD,IACD,YAAY,IAAI,CAAC,QACf,4CAAC,SAA8B,WAAU,oCACvC,sDAAC,yCAAe,YAAY,KAAK,KADzB,IAAI,eAEd,CACD;AAAA;AAAA,EACP;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../src/components/discover-collections-strip.tsx"],"sourcesContent":["\"use client\";\n\nimport { Layers } from \"lucide-react\";\nimport { ScrollSection } from \"./scroll-section.js\";\nimport { CollectionCard, CollectionCardSkeleton } from \"./collection-card.js\";\nimport type { ApiCollection } from \"@medialane/sdk\";\n\nexport interface DiscoverCollectionsStripProps {\n collections: ApiCollection[];\n isLoading: boolean;\n\n getHref?: (collection: ApiCollection) => string;\n allCollectionsHref?: string;\n\n sectionLabel?: string;\n title?: string;\n}\n\nexport function DiscoverCollectionsStrip({\n collections,\n isLoading,\n allCollectionsHref = \"/collections\",\n title = \"Collections\",\n}: DiscoverCollectionsStripProps) {\n return (\n <ScrollSection\n icon={<Layers className=\"h-3.5 w-3.5 text-white\" />}\n iconBg=\"bg-gradient-to-br from-brand-blue to-indigo-600 shadow-md shadow-brand-blue/20\"\n title={title}\n href={allCollectionsHref}\n linkLabel=\"View all\"\n >\n {isLoading\n ? Array.from({ length: 5 }).map((_, i) => (\n <div key={i} className=\"w-56 sm:w-64 snap-start shrink-0\">\n <CollectionCardSkeleton />\n </div>\n ))\n : collections.map((col) => (\n <div key={col.contractAddress} className=\"w-56 sm:w-64 snap-start shrink-0\">\n <CollectionCard collection={col} />\n </div>\n ))}\n </ScrollSection>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA0BY;AAxBZ,0BAAuB;AACvB,4BAA8B;AAC9B,6BAAuD;AAchD,SAAS,yBAAyB;AAAA,EACvC;AAAA,EACA;AAAA,EACA,qBAAqB;AAAA,EACrB,QAAQ;AACV,GAAkC;AAChC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAM,4CAAC,8BAAO,WAAU,0BAAyB;AAAA,MACjD,QAAO;AAAA,MACP;AAAA,MACA,MAAM;AAAA,MACN,WAAU;AAAA,MAET,sBACG,MAAM,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,MAChC,4CAAC,SAAY,WAAU,oCACrB,sDAAC,iDAAuB,KADhB,CAEV,CACD,IACD,YAAY,IAAI,CAAC,QACf,4CAAC,SAA8B,WAAU,oCACvC,sDAAC,yCAAe,YAAY,KAAK,KADzB,IAAI,eAEd,CACD;AAAA;AAAA,EACP;AAEJ;","names":[]}
@@ -4,15 +4,11 @@ import { ApiCollection } from '@medialane/sdk';
4
4
  interface DiscoverCollectionsStripProps {
5
5
  collections: ApiCollection[];
6
6
  isLoading: boolean;
7
- /** Kept for API compat — CollectionCard links to /collections/:contract internally */
8
7
  getHref?: (collection: ApiCollection) => string;
9
8
  allCollectionsHref?: string;
10
- /** Kept for API compat — the io-style header has no eyebrow label */
11
9
  sectionLabel?: string;
12
10
  title?: string;
13
11
  }
14
- /** Discover Collections carousel — CollectionCard tiles under the shared
15
- * icon-badge ScrollSection header (io-approved design). */
16
12
  declare function DiscoverCollectionsStrip({ collections, isLoading, allCollectionsHref, title, }: DiscoverCollectionsStripProps): react_jsx_runtime.JSX.Element;
17
13
 
18
14
  export { DiscoverCollectionsStrip, type DiscoverCollectionsStripProps };
@@ -4,15 +4,11 @@ import { ApiCollection } from '@medialane/sdk';
4
4
  interface DiscoverCollectionsStripProps {
5
5
  collections: ApiCollection[];
6
6
  isLoading: boolean;
7
- /** Kept for API compat — CollectionCard links to /collections/:contract internally */
8
7
  getHref?: (collection: ApiCollection) => string;
9
8
  allCollectionsHref?: string;
10
- /** Kept for API compat — the io-style header has no eyebrow label */
11
9
  sectionLabel?: string;
12
10
  title?: string;
13
11
  }
14
- /** Discover Collections carousel — CollectionCard tiles under the shared
15
- * icon-badge ScrollSection header (io-approved design). */
16
12
  declare function DiscoverCollectionsStrip({ collections, isLoading, allCollectionsHref, title, }: DiscoverCollectionsStripProps): react_jsx_runtime.JSX.Element;
17
13
 
18
14
  export { DiscoverCollectionsStrip, type DiscoverCollectionsStripProps };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/discover-collections-strip.tsx"],"sourcesContent":["\"use client\";\n\nimport { Layers } from \"lucide-react\";\nimport { ScrollSection } from \"./scroll-section.js\";\nimport { CollectionCard, CollectionCardSkeleton } from \"./collection-card.js\";\nimport type { ApiCollection } from \"@medialane/sdk\";\n\nexport interface DiscoverCollectionsStripProps {\n collections: ApiCollection[];\n isLoading: boolean;\n /** Kept for API compat — CollectionCard links to /collections/:contract internally */\n getHref?: (collection: ApiCollection) => string;\n allCollectionsHref?: string;\n /** Kept for API compat — the io-style header has no eyebrow label */\n sectionLabel?: string;\n title?: string;\n}\n\n/** Discover Collections carousel — CollectionCard tiles under the shared\n * icon-badge ScrollSection header (io-approved design). */\nexport function DiscoverCollectionsStrip({\n collections,\n isLoading,\n allCollectionsHref = \"/collections\",\n title = \"Collections\",\n}: DiscoverCollectionsStripProps) {\n return (\n <ScrollSection\n icon={<Layers className=\"h-3.5 w-3.5 text-white\" />}\n iconBg=\"bg-gradient-to-br from-brand-blue to-indigo-600 shadow-md shadow-brand-blue/20\"\n title={title}\n href={allCollectionsHref}\n linkLabel=\"View all\"\n >\n {isLoading\n ? Array.from({ length: 5 }).map((_, i) => (\n <div key={i} className=\"w-56 sm:w-64 snap-start shrink-0\">\n <CollectionCardSkeleton />\n </div>\n ))\n : collections.map((col) => (\n <div key={col.contractAddress} className=\"w-56 sm:w-64 snap-start shrink-0\">\n <CollectionCard collection={col} />\n </div>\n ))}\n </ScrollSection>\n );\n}\n"],"mappings":";AA4BY;AA1BZ,SAAS,cAAc;AACvB,SAAS,qBAAqB;AAC9B,SAAS,gBAAgB,8BAA8B;AAgBhD,SAAS,yBAAyB;AAAA,EACvC;AAAA,EACA;AAAA,EACA,qBAAqB;AAAA,EACrB,QAAQ;AACV,GAAkC;AAChC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAM,oBAAC,UAAO,WAAU,0BAAyB;AAAA,MACjD,QAAO;AAAA,MACP;AAAA,MACA,MAAM;AAAA,MACN,WAAU;AAAA,MAET,sBACG,MAAM,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,MAChC,oBAAC,SAAY,WAAU,oCACrB,8BAAC,0BAAuB,KADhB,CAEV,CACD,IACD,YAAY,IAAI,CAAC,QACf,oBAAC,SAA8B,WAAU,oCACvC,8BAAC,kBAAe,YAAY,KAAK,KADzB,IAAI,eAEd,CACD;AAAA;AAAA,EACP;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../src/components/discover-collections-strip.tsx"],"sourcesContent":["\"use client\";\n\nimport { Layers } from \"lucide-react\";\nimport { ScrollSection } from \"./scroll-section.js\";\nimport { CollectionCard, CollectionCardSkeleton } from \"./collection-card.js\";\nimport type { ApiCollection } from \"@medialane/sdk\";\n\nexport interface DiscoverCollectionsStripProps {\n collections: ApiCollection[];\n isLoading: boolean;\n\n getHref?: (collection: ApiCollection) => string;\n allCollectionsHref?: string;\n\n sectionLabel?: string;\n title?: string;\n}\n\nexport function DiscoverCollectionsStrip({\n collections,\n isLoading,\n allCollectionsHref = \"/collections\",\n title = \"Collections\",\n}: DiscoverCollectionsStripProps) {\n return (\n <ScrollSection\n icon={<Layers className=\"h-3.5 w-3.5 text-white\" />}\n iconBg=\"bg-gradient-to-br from-brand-blue to-indigo-600 shadow-md shadow-brand-blue/20\"\n title={title}\n href={allCollectionsHref}\n linkLabel=\"View all\"\n >\n {isLoading\n ? Array.from({ length: 5 }).map((_, i) => (\n <div key={i} className=\"w-56 sm:w-64 snap-start shrink-0\">\n <CollectionCardSkeleton />\n </div>\n ))\n : collections.map((col) => (\n <div key={col.contractAddress} className=\"w-56 sm:w-64 snap-start shrink-0\">\n <CollectionCard collection={col} />\n </div>\n ))}\n </ScrollSection>\n );\n}\n"],"mappings":";AA0BY;AAxBZ,SAAS,cAAc;AACvB,SAAS,qBAAqB;AAC9B,SAAS,gBAAgB,8BAA8B;AAchD,SAAS,yBAAyB;AAAA,EACvC;AAAA,EACA;AAAA,EACA,qBAAqB;AAAA,EACrB,QAAQ;AACV,GAAkC;AAChC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAM,oBAAC,UAAO,WAAU,0BAAyB;AAAA,MACjD,QAAO;AAAA,MACP;AAAA,MACA,MAAM;AAAA,MACN,WAAU;AAAA,MAET,sBACG,MAAM,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,MAChC,oBAAC,SAAY,WAAU,oCACrB,8BAAC,0BAAuB,KADhB,CAEV,CACD,IACD,YAAY,IAAI,CAAC,QACf,oBAAC,SAA8B,WAAU,oCACvC,8BAAC,kBAAe,YAAY,KAAK,KADzB,IAAI,eAEd,CACD;AAAA;AAAA,EACP;AAEJ;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/discover-creators-strip.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState } from \"react\";\nimport { Users, ArrowRight } from \"lucide-react\";\nimport { FadeIn } from \"./motion-primitives.js\";\nimport { ipfsToHttp } from \"../utils/ipfs.js\";\nimport type { ApiCreatorProfile } from \"@medialane/sdk\";\n\nexport interface DiscoverCreatorsStripProps {\n creators: ApiCreatorProfile[];\n isLoading: boolean;\n getHref: (creator: ApiCreatorProfile) => string;\n allCreatorsHref?: string;\n sectionLabel?: string;\n title?: string;\n}\n\nfunction CreatorChipSkeleton() {\n return (\n <div className=\"shrink-0 w-64 aspect-[3/4] rounded-xl bg-muted animate-pulse\" />\n );\n}\n\nfunction CreatorChip({\n creator,\n href,\n}: {\n creator: ApiCreatorProfile;\n href: string;\n}) {\n const [bannerError, setBannerError] = useState(false);\n\n // avatarImage (the creator's chosen NFT) with collectionImage fallback — io-approved big-username design\n const rawSrc = creator.avatarImage || creator.collectionImage || null;\n const bannerUrl = rawSrc && !bannerError ? ipfsToHttp(rawSrc) : null;\n\n return (\n <a\n href={href}\n className=\"block shrink-0 w-64 snap-start active:scale-[0.97] transition-transform duration-150 select-none\"\n >\n <div className=\"relative aspect-[3/4] rounded-xl overflow-hidden bg-muted\">\n {bannerUrl && (\n <img\n src={bannerUrl}\n alt=\"\"\n aria-hidden\n loading=\"lazy\"\n className=\"absolute inset-0 w-full h-full object-cover\"\n onError={() => setBannerError(true)}\n />\n )}\n <div className=\"absolute bottom-0 inset-x-0 px-3 py-3\">\n <p className=\"font-bold text-2xl text-white truncate\">{creator.username}</p>\n </div>\n </div>\n </a>\n );\n}\n\nexport function DiscoverCreatorsStrip({\n creators,\n isLoading,\n getHref,\n allCreatorsHref = \"/creators\",\n sectionLabel = \"Explore\",\n title = \"Creators\",\n}: DiscoverCreatorsStripProps) {\n if (!isLoading && creators.length === 0) return null;\n\n return (\n <FadeIn>\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"section-label\">{sectionLabel}</p>\n <div className=\"flex items-center gap-2 mt-0.5\">\n <Users className=\"h-4 w-4 text-brand-purple\" />\n <h2 className=\"text-lg font-bold\">{title}</h2>\n </div>\n </div>\n <a\n href={allCreatorsHref}\n className=\"inline-flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground px-3 py-1.5 rounded-md hover:bg-accent transition-colors\"\n >\n View all <ArrowRight className=\"h-3.5 w-3.5\" />\n </a>\n </div>\n <div className=\"overflow-x-auto scrollbar-hide snap-x snap-mandatory -mx-4 px-4 md:mx-0 md:px-0\">\n <div className=\"flex gap-5 sm:gap-6 w-max pb-2\">\n {isLoading\n ? Array.from({ length: 6 }).map((_, i) => <CreatorChipSkeleton key={i} />)\n : creators.map((c) => (\n <CreatorChip key={c.walletAddress} creator={c} href={getHref(c)} />\n ))}\n </div>\n </div>\n </div>\n </FadeIn>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAmBI;AAjBJ,mBAAyB;AACzB,0BAAkC;AAClC,+BAAuB;AACvB,kBAA2B;AAY3B,SAAS,sBAAsB;AAC7B,SACE,4CAAC,SAAI,WAAU,gEAA+D;AAElF;AAEA,SAAS,YAAY;AAAA,EACnB;AAAA,EACA;AACF,GAGG;AACD,QAAM,CAAC,aAAa,cAAc,QAAI,uBAAS,KAAK;AAGpD,QAAM,SAAS,QAAQ,eAAe,QAAQ,mBAAmB;AACjE,QAAM,YAAY,UAAU,CAAC,kBAAc,wBAAW,MAAM,IAAI;AAEhE,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAU;AAAA,MAEV,uDAAC,SAAI,WAAU,6DACZ;AAAA,qBACC;AAAA,UAAC;AAAA;AAAA,YACC,KAAK;AAAA,YACL,KAAI;AAAA,YACJ,eAAW;AAAA,YACX,SAAQ;AAAA,YACR,WAAU;AAAA,YACV,SAAS,MAAM,eAAe,IAAI;AAAA;AAAA,QACpC;AAAA,QAEF,4CAAC,SAAI,WAAU,yCACb,sDAAC,OAAE,WAAU,0CAA0C,kBAAQ,UAAS,GAC1E;AAAA,SACF;AAAA;AAAA,EACF;AAEJ;AAEO,SAAS,sBAAsB;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB,eAAe;AAAA,EACf,QAAQ;AACV,GAA+B;AAC7B,MAAI,CAAC,aAAa,SAAS,WAAW,EAAG,QAAO;AAEhD,SACE,4CAAC,mCACC,uDAAC,SAAI,WAAU,aACb;AAAA,iDAAC,SAAI,WAAU,qCACb;AAAA,mDAAC,SACC;AAAA,oDAAC,OAAE,WAAU,iBAAiB,wBAAa;AAAA,QAC3C,6CAAC,SAAI,WAAU,kCACb;AAAA,sDAAC,6BAAM,WAAU,6BAA4B;AAAA,UAC7C,4CAAC,QAAG,WAAU,qBAAqB,iBAAM;AAAA,WAC3C;AAAA,SACF;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,MAAM;AAAA,UACN,WAAU;AAAA,UACX;AAAA;AAAA,YACU,4CAAC,kCAAW,WAAU,eAAc;AAAA;AAAA;AAAA,MAC/C;AAAA,OACF;AAAA,IACA,4CAAC,SAAI,WAAU,mFACb,sDAAC,SAAI,WAAU,kCACZ,sBACG,MAAM,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,MAAM,4CAAC,yBAAyB,CAAG,CAAE,IACvE,SAAS,IAAI,CAAC,MACZ,4CAAC,eAAkC,SAAS,GAAG,MAAM,QAAQ,CAAC,KAA5C,EAAE,aAA6C,CAClE,GACP,GACF;AAAA,KACF,GACF;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../src/components/discover-creators-strip.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState } from \"react\";\nimport { Users, ArrowRight } from \"lucide-react\";\nimport { FadeIn } from \"./motion-primitives.js\";\nimport { ipfsToHttp } from \"../utils/ipfs.js\";\nimport type { ApiCreatorProfile } from \"@medialane/sdk\";\n\nexport interface DiscoverCreatorsStripProps {\n creators: ApiCreatorProfile[];\n isLoading: boolean;\n getHref: (creator: ApiCreatorProfile) => string;\n allCreatorsHref?: string;\n sectionLabel?: string;\n title?: string;\n}\n\nfunction CreatorChipSkeleton() {\n return (\n <div className=\"shrink-0 w-64 aspect-[3/4] rounded-xl bg-muted animate-pulse\" />\n );\n}\n\nfunction CreatorChip({\n creator,\n href,\n}: {\n creator: ApiCreatorProfile;\n href: string;\n}) {\n const [bannerError, setBannerError] = useState(false);\n\n const rawSrc = creator.avatarImage || creator.collectionImage || null;\n const bannerUrl = rawSrc && !bannerError ? ipfsToHttp(rawSrc) : null;\n\n return (\n <a\n href={href}\n className=\"block shrink-0 w-64 snap-start active:scale-[0.97] transition-transform duration-150 select-none\"\n >\n <div className=\"relative aspect-[3/4] rounded-xl overflow-hidden bg-muted\">\n {bannerUrl && (\n <img\n src={bannerUrl}\n alt=\"\"\n aria-hidden\n loading=\"lazy\"\n className=\"absolute inset-0 w-full h-full object-cover\"\n onError={() => setBannerError(true)}\n />\n )}\n <div className=\"absolute bottom-0 inset-x-0 px-3 py-3\">\n <p className=\"font-bold text-2xl text-white truncate\">{creator.username}</p>\n </div>\n </div>\n </a>\n );\n}\n\nexport function DiscoverCreatorsStrip({\n creators,\n isLoading,\n getHref,\n allCreatorsHref = \"/creators\",\n sectionLabel = \"Explore\",\n title = \"Creators\",\n}: DiscoverCreatorsStripProps) {\n if (!isLoading && creators.length === 0) return null;\n\n return (\n <FadeIn>\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"section-label\">{sectionLabel}</p>\n <div className=\"flex items-center gap-2 mt-0.5\">\n <Users className=\"h-4 w-4 text-brand-purple\" />\n <h2 className=\"text-lg font-bold\">{title}</h2>\n </div>\n </div>\n <a\n href={allCreatorsHref}\n className=\"inline-flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground px-3 py-1.5 rounded-md hover:bg-accent transition-colors\"\n >\n View all <ArrowRight className=\"h-3.5 w-3.5\" />\n </a>\n </div>\n <div className=\"overflow-x-auto scrollbar-hide snap-x snap-mandatory -mx-4 px-4 md:mx-0 md:px-0\">\n <div className=\"flex gap-5 sm:gap-6 w-max pb-2\">\n {isLoading\n ? Array.from({ length: 6 }).map((_, i) => <CreatorChipSkeleton key={i} />)\n : creators.map((c) => (\n <CreatorChip key={c.walletAddress} creator={c} href={getHref(c)} />\n ))}\n </div>\n </div>\n </div>\n </FadeIn>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAmBI;AAjBJ,mBAAyB;AACzB,0BAAkC;AAClC,+BAAuB;AACvB,kBAA2B;AAY3B,SAAS,sBAAsB;AAC7B,SACE,4CAAC,SAAI,WAAU,gEAA+D;AAElF;AAEA,SAAS,YAAY;AAAA,EACnB;AAAA,EACA;AACF,GAGG;AACD,QAAM,CAAC,aAAa,cAAc,QAAI,uBAAS,KAAK;AAEpD,QAAM,SAAS,QAAQ,eAAe,QAAQ,mBAAmB;AACjE,QAAM,YAAY,UAAU,CAAC,kBAAc,wBAAW,MAAM,IAAI;AAEhE,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAU;AAAA,MAEV,uDAAC,SAAI,WAAU,6DACZ;AAAA,qBACC;AAAA,UAAC;AAAA;AAAA,YACC,KAAK;AAAA,YACL,KAAI;AAAA,YACJ,eAAW;AAAA,YACX,SAAQ;AAAA,YACR,WAAU;AAAA,YACV,SAAS,MAAM,eAAe,IAAI;AAAA;AAAA,QACpC;AAAA,QAEF,4CAAC,SAAI,WAAU,yCACb,sDAAC,OAAE,WAAU,0CAA0C,kBAAQ,UAAS,GAC1E;AAAA,SACF;AAAA;AAAA,EACF;AAEJ;AAEO,SAAS,sBAAsB;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB,eAAe;AAAA,EACf,QAAQ;AACV,GAA+B;AAC7B,MAAI,CAAC,aAAa,SAAS,WAAW,EAAG,QAAO;AAEhD,SACE,4CAAC,mCACC,uDAAC,SAAI,WAAU,aACb;AAAA,iDAAC,SAAI,WAAU,qCACb;AAAA,mDAAC,SACC;AAAA,oDAAC,OAAE,WAAU,iBAAiB,wBAAa;AAAA,QAC3C,6CAAC,SAAI,WAAU,kCACb;AAAA,sDAAC,6BAAM,WAAU,6BAA4B;AAAA,UAC7C,4CAAC,QAAG,WAAU,qBAAqB,iBAAM;AAAA,WAC3C;AAAA,SACF;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,MAAM;AAAA,UACN,WAAU;AAAA,UACX;AAAA;AAAA,YACU,4CAAC,kCAAW,WAAU,eAAc;AAAA;AAAA;AAAA,MAC/C;AAAA,OACF;AAAA,IACA,4CAAC,SAAI,WAAU,mFACb,sDAAC,SAAI,WAAU,kCACZ,sBACG,MAAM,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,MAAM,4CAAC,yBAAyB,CAAG,CAAE,IACvE,SAAS,IAAI,CAAC,MACZ,4CAAC,eAAkC,SAAS,GAAG,MAAM,QAAQ,CAAC,KAA5C,EAAE,aAA6C,CAClE,GACP,GACF;AAAA,KACF,GACF;AAEJ;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/discover-creators-strip.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState } from \"react\";\nimport { Users, ArrowRight } from \"lucide-react\";\nimport { FadeIn } from \"./motion-primitives.js\";\nimport { ipfsToHttp } from \"../utils/ipfs.js\";\nimport type { ApiCreatorProfile } from \"@medialane/sdk\";\n\nexport interface DiscoverCreatorsStripProps {\n creators: ApiCreatorProfile[];\n isLoading: boolean;\n getHref: (creator: ApiCreatorProfile) => string;\n allCreatorsHref?: string;\n sectionLabel?: string;\n title?: string;\n}\n\nfunction CreatorChipSkeleton() {\n return (\n <div className=\"shrink-0 w-64 aspect-[3/4] rounded-xl bg-muted animate-pulse\" />\n );\n}\n\nfunction CreatorChip({\n creator,\n href,\n}: {\n creator: ApiCreatorProfile;\n href: string;\n}) {\n const [bannerError, setBannerError] = useState(false);\n\n // avatarImage (the creator's chosen NFT) with collectionImage fallback — io-approved big-username design\n const rawSrc = creator.avatarImage || creator.collectionImage || null;\n const bannerUrl = rawSrc && !bannerError ? ipfsToHttp(rawSrc) : null;\n\n return (\n <a\n href={href}\n className=\"block shrink-0 w-64 snap-start active:scale-[0.97] transition-transform duration-150 select-none\"\n >\n <div className=\"relative aspect-[3/4] rounded-xl overflow-hidden bg-muted\">\n {bannerUrl && (\n <img\n src={bannerUrl}\n alt=\"\"\n aria-hidden\n loading=\"lazy\"\n className=\"absolute inset-0 w-full h-full object-cover\"\n onError={() => setBannerError(true)}\n />\n )}\n <div className=\"absolute bottom-0 inset-x-0 px-3 py-3\">\n <p className=\"font-bold text-2xl text-white truncate\">{creator.username}</p>\n </div>\n </div>\n </a>\n );\n}\n\nexport function DiscoverCreatorsStrip({\n creators,\n isLoading,\n getHref,\n allCreatorsHref = \"/creators\",\n sectionLabel = \"Explore\",\n title = \"Creators\",\n}: DiscoverCreatorsStripProps) {\n if (!isLoading && creators.length === 0) return null;\n\n return (\n <FadeIn>\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"section-label\">{sectionLabel}</p>\n <div className=\"flex items-center gap-2 mt-0.5\">\n <Users className=\"h-4 w-4 text-brand-purple\" />\n <h2 className=\"text-lg font-bold\">{title}</h2>\n </div>\n </div>\n <a\n href={allCreatorsHref}\n className=\"inline-flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground px-3 py-1.5 rounded-md hover:bg-accent transition-colors\"\n >\n View all <ArrowRight className=\"h-3.5 w-3.5\" />\n </a>\n </div>\n <div className=\"overflow-x-auto scrollbar-hide snap-x snap-mandatory -mx-4 px-4 md:mx-0 md:px-0\">\n <div className=\"flex gap-5 sm:gap-6 w-max pb-2\">\n {isLoading\n ? Array.from({ length: 6 }).map((_, i) => <CreatorChipSkeleton key={i} />)\n : creators.map((c) => (\n <CreatorChip key={c.walletAddress} creator={c} href={getHref(c)} />\n ))}\n </div>\n </div>\n </div>\n </FadeIn>\n );\n}\n"],"mappings":";AAmBI,cAsBE,YAtBF;AAjBJ,SAAS,gBAAgB;AACzB,SAAS,OAAO,kBAAkB;AAClC,SAAS,cAAc;AACvB,SAAS,kBAAkB;AAY3B,SAAS,sBAAsB;AAC7B,SACE,oBAAC,SAAI,WAAU,gEAA+D;AAElF;AAEA,SAAS,YAAY;AAAA,EACnB;AAAA,EACA;AACF,GAGG;AACD,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,KAAK;AAGpD,QAAM,SAAS,QAAQ,eAAe,QAAQ,mBAAmB;AACjE,QAAM,YAAY,UAAU,CAAC,cAAc,WAAW,MAAM,IAAI;AAEhE,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAU;AAAA,MAEV,+BAAC,SAAI,WAAU,6DACZ;AAAA,qBACC;AAAA,UAAC;AAAA;AAAA,YACC,KAAK;AAAA,YACL,KAAI;AAAA,YACJ,eAAW;AAAA,YACX,SAAQ;AAAA,YACR,WAAU;AAAA,YACV,SAAS,MAAM,eAAe,IAAI;AAAA;AAAA,QACpC;AAAA,QAEF,oBAAC,SAAI,WAAU,yCACb,8BAAC,OAAE,WAAU,0CAA0C,kBAAQ,UAAS,GAC1E;AAAA,SACF;AAAA;AAAA,EACF;AAEJ;AAEO,SAAS,sBAAsB;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB,eAAe;AAAA,EACf,QAAQ;AACV,GAA+B;AAC7B,MAAI,CAAC,aAAa,SAAS,WAAW,EAAG,QAAO;AAEhD,SACE,oBAAC,UACC,+BAAC,SAAI,WAAU,aACb;AAAA,yBAAC,SAAI,WAAU,qCACb;AAAA,2BAAC,SACC;AAAA,4BAAC,OAAE,WAAU,iBAAiB,wBAAa;AAAA,QAC3C,qBAAC,SAAI,WAAU,kCACb;AAAA,8BAAC,SAAM,WAAU,6BAA4B;AAAA,UAC7C,oBAAC,QAAG,WAAU,qBAAqB,iBAAM;AAAA,WAC3C;AAAA,SACF;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,MAAM;AAAA,UACN,WAAU;AAAA,UACX;AAAA;AAAA,YACU,oBAAC,cAAW,WAAU,eAAc;AAAA;AAAA;AAAA,MAC/C;AAAA,OACF;AAAA,IACA,oBAAC,SAAI,WAAU,mFACb,8BAAC,SAAI,WAAU,kCACZ,sBACG,MAAM,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,MAAM,oBAAC,yBAAyB,CAAG,CAAE,IACvE,SAAS,IAAI,CAAC,MACZ,oBAAC,eAAkC,SAAS,GAAG,MAAM,QAAQ,CAAC,KAA5C,EAAE,aAA6C,CAClE,GACP,GACF;AAAA,KACF,GACF;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../src/components/discover-creators-strip.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState } from \"react\";\nimport { Users, ArrowRight } from \"lucide-react\";\nimport { FadeIn } from \"./motion-primitives.js\";\nimport { ipfsToHttp } from \"../utils/ipfs.js\";\nimport type { ApiCreatorProfile } from \"@medialane/sdk\";\n\nexport interface DiscoverCreatorsStripProps {\n creators: ApiCreatorProfile[];\n isLoading: boolean;\n getHref: (creator: ApiCreatorProfile) => string;\n allCreatorsHref?: string;\n sectionLabel?: string;\n title?: string;\n}\n\nfunction CreatorChipSkeleton() {\n return (\n <div className=\"shrink-0 w-64 aspect-[3/4] rounded-xl bg-muted animate-pulse\" />\n );\n}\n\nfunction CreatorChip({\n creator,\n href,\n}: {\n creator: ApiCreatorProfile;\n href: string;\n}) {\n const [bannerError, setBannerError] = useState(false);\n\n const rawSrc = creator.avatarImage || creator.collectionImage || null;\n const bannerUrl = rawSrc && !bannerError ? ipfsToHttp(rawSrc) : null;\n\n return (\n <a\n href={href}\n className=\"block shrink-0 w-64 snap-start active:scale-[0.97] transition-transform duration-150 select-none\"\n >\n <div className=\"relative aspect-[3/4] rounded-xl overflow-hidden bg-muted\">\n {bannerUrl && (\n <img\n src={bannerUrl}\n alt=\"\"\n aria-hidden\n loading=\"lazy\"\n className=\"absolute inset-0 w-full h-full object-cover\"\n onError={() => setBannerError(true)}\n />\n )}\n <div className=\"absolute bottom-0 inset-x-0 px-3 py-3\">\n <p className=\"font-bold text-2xl text-white truncate\">{creator.username}</p>\n </div>\n </div>\n </a>\n );\n}\n\nexport function DiscoverCreatorsStrip({\n creators,\n isLoading,\n getHref,\n allCreatorsHref = \"/creators\",\n sectionLabel = \"Explore\",\n title = \"Creators\",\n}: DiscoverCreatorsStripProps) {\n if (!isLoading && creators.length === 0) return null;\n\n return (\n <FadeIn>\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"section-label\">{sectionLabel}</p>\n <div className=\"flex items-center gap-2 mt-0.5\">\n <Users className=\"h-4 w-4 text-brand-purple\" />\n <h2 className=\"text-lg font-bold\">{title}</h2>\n </div>\n </div>\n <a\n href={allCreatorsHref}\n className=\"inline-flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground px-3 py-1.5 rounded-md hover:bg-accent transition-colors\"\n >\n View all <ArrowRight className=\"h-3.5 w-3.5\" />\n </a>\n </div>\n <div className=\"overflow-x-auto scrollbar-hide snap-x snap-mandatory -mx-4 px-4 md:mx-0 md:px-0\">\n <div className=\"flex gap-5 sm:gap-6 w-max pb-2\">\n {isLoading\n ? Array.from({ length: 6 }).map((_, i) => <CreatorChipSkeleton key={i} />)\n : creators.map((c) => (\n <CreatorChip key={c.walletAddress} creator={c} href={getHref(c)} />\n ))}\n </div>\n </div>\n </div>\n </FadeIn>\n );\n}\n"],"mappings":";AAmBI,cAqBE,YArBF;AAjBJ,SAAS,gBAAgB;AACzB,SAAS,OAAO,kBAAkB;AAClC,SAAS,cAAc;AACvB,SAAS,kBAAkB;AAY3B,SAAS,sBAAsB;AAC7B,SACE,oBAAC,SAAI,WAAU,gEAA+D;AAElF;AAEA,SAAS,YAAY;AAAA,EACnB;AAAA,EACA;AACF,GAGG;AACD,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,KAAK;AAEpD,QAAM,SAAS,QAAQ,eAAe,QAAQ,mBAAmB;AACjE,QAAM,YAAY,UAAU,CAAC,cAAc,WAAW,MAAM,IAAI;AAEhE,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAU;AAAA,MAEV,+BAAC,SAAI,WAAU,6DACZ;AAAA,qBACC;AAAA,UAAC;AAAA;AAAA,YACC,KAAK;AAAA,YACL,KAAI;AAAA,YACJ,eAAW;AAAA,YACX,SAAQ;AAAA,YACR,WAAU;AAAA,YACV,SAAS,MAAM,eAAe,IAAI;AAAA;AAAA,QACpC;AAAA,QAEF,oBAAC,SAAI,WAAU,yCACb,8BAAC,OAAE,WAAU,0CAA0C,kBAAQ,UAAS,GAC1E;AAAA,SACF;AAAA;AAAA,EACF;AAEJ;AAEO,SAAS,sBAAsB;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB,eAAe;AAAA,EACf,QAAQ;AACV,GAA+B;AAC7B,MAAI,CAAC,aAAa,SAAS,WAAW,EAAG,QAAO;AAEhD,SACE,oBAAC,UACC,+BAAC,SAAI,WAAU,aACb;AAAA,yBAAC,SAAI,WAAU,qCACb;AAAA,2BAAC,SACC;AAAA,4BAAC,OAAE,WAAU,iBAAiB,wBAAa;AAAA,QAC3C,qBAAC,SAAI,WAAU,kCACb;AAAA,8BAAC,SAAM,WAAU,6BAA4B;AAAA,UAC7C,oBAAC,QAAG,WAAU,qBAAqB,iBAAM;AAAA,WAC3C;AAAA,SACF;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,MAAM;AAAA,UACN,WAAU;AAAA,UACX;AAAA;AAAA,YACU,oBAAC,cAAW,WAAU,eAAc;AAAA;AAAA;AAAA,MAC/C;AAAA,OACF;AAAA,IACA,oBAAC,SAAI,WAAU,mFACb,8BAAC,SAAI,WAAU,kCACZ,sBACG,MAAM,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,MAAM,oBAAC,yBAAyB,CAAG,CAAE,IACvE,SAAS,IAAI,CAAC,MACZ,oBAAC,eAAkC,SAAS,GAAG,MAAM,QAAQ,CAAC,KAA5C,EAAE,aAA6C,CAClE,GACP,GACF;AAAA,KACF,GACF;AAEJ;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/discover-feed-section.tsx"],"sourcesContent":["\"use client\";\n\nimport { Tag, Activity, RefreshCw, ArrowRight } from \"lucide-react\";\nimport { FadeIn } from \"./motion-primitives.js\";\nimport { ListingCard, ListingCardSkeleton } from \"./listing-card.js\";\nimport { ActivityCard, ActivityCardSkeleton } from \"./activity-card.js\";\nimport { timeAgo } from \"../utils/time.js\";\nimport { cn } from \"../utils/cn.js\";\nimport type { ApiOrder, ApiActivity } from \"@medialane/sdk\";\n\nexport interface DiscoverFeedSectionProps {\n orders: ApiOrder[];\n isLoading: boolean;\n activities: ApiActivity[];\n activitiesLoading: boolean;\n lastUpdated: string;\n getAssetHref?: (contract: string, tokenId: string) => string;\n getActorHref?: (address: string) => string;\n explorerUrl?: string;\n marketplaceHref?: string;\n activitiesHref?: string;\n /** Optional buy hook — when provided, listing cards show their Buy action */\n onBuyOrder?: (order: ApiOrder) => void;\n /** Hide the buy action for orders the viewer owns */\n isOwnOrder?: (order: ApiOrder) => boolean;\n}\n\n// ── Shared strip shell: icon-badge header + snap-scroll row ─────────────────\nfunction StripShell({\n icon,\n iconBg,\n title,\n subtitle,\n href,\n linkLabel,\n children,\n}: {\n icon: React.ReactNode;\n iconBg: string;\n title: string;\n subtitle?: React.ReactNode;\n href: string;\n linkLabel: string;\n children: React.ReactNode;\n}) {\n return (\n <section className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2.5\">\n <div className={cn(\"h-7 w-7 rounded-lg flex items-center justify-center\", iconBg)}>\n {icon}\n </div>\n <div>\n <h2 className=\"text-lg sm:text-xl font-semibold leading-none\">{title}</h2>\n {subtitle && <p className=\"text-2xs text-muted-foreground mt-1\">{subtitle}</p>}\n </div>\n </div>\n <a\n href={href}\n className=\"inline-flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground px-3 py-1.5 rounded-md hover:bg-accent transition-colors\"\n >\n {linkLabel} <ArrowRight className=\"h-3.5 w-3.5\" />\n </a>\n </div>\n\n <div className=\"w-full overflow-x-auto scrollbar-hide\">\n <div className=\"flex gap-5 sm:gap-6 snap-x snap-mandatory pb-2\" style={{ width: \"max-content\" }}>\n {children}\n </div>\n </div>\n </section>\n );\n}\n\nexport interface DiscoverActivityStripProps {\n orders: ApiOrder[];\n isLoading: boolean;\n marketplaceHref?: string;\n onBuyOrder?: (order: ApiOrder) => void;\n isOwnOrder?: (order: ApiOrder) => boolean;\n}\n\n/** Markets — recent listings carousel. Standalone (2026-07-05) so a page can\n * place other sections (e.g. Browse by Type) between this and Community. */\nexport function DiscoverActivityStrip({\n orders,\n isLoading,\n marketplaceHref = \"/marketplace\",\n onBuyOrder,\n isOwnOrder,\n}: DiscoverActivityStripProps) {\n return (\n <FadeIn>\n <StripShell\n icon={<Tag className=\"h-3.5 w-3.5 text-white\" />}\n iconBg=\"bg-gradient-to-br from-rose-500 to-pink-600 shadow-md shadow-rose-500/20\"\n title=\"Activity\"\n href={marketplaceHref}\n linkLabel=\"View all\"\n >\n {isLoading\n ? Array.from({ length: 8 }).map((_, i) => (\n <div key={i} className=\"w-72 snap-start shrink-0\">\n <ListingCardSkeleton />\n </div>\n ))\n : orders.length === 0\n ? (\n <p className=\"text-sm text-muted-foreground py-4\">No active listings yet.</p>\n )\n : orders.map((order) => {\n const own = isOwnOrder?.(order) ?? false;\n return (\n <div key={order.orderHash} className=\"w-72 snap-start shrink-0\">\n <ListingCard\n order={order}\n onBuy={onBuyOrder && !own ? () => onBuyOrder(order) : undefined}\n />\n </div>\n );\n })}\n </StripShell>\n </FadeIn>\n );\n}\n\n/**\n * @deprecated Kept for apps still on the combined layout (e.g. medialane-io,\n * pending its own migration). New pages should use `DiscoverActivityStrip`\n * directly and build their own Community section — see medialane-starknet's\n * discover community-section.tsx for the 2-column activities+leaderboard\n * replacement of the old carousel below.\n */\nexport function DiscoverFeedSection({\n orders,\n isLoading,\n activities,\n activitiesLoading,\n lastUpdated,\n getAssetHref = (c, t) => `/asset/${c}/${t}`,\n marketplaceHref = \"/marketplace\",\n activitiesHref = \"/activities\",\n onBuyOrder,\n isOwnOrder,\n}: DiscoverFeedSectionProps) {\n return (\n <div className=\"space-y-14 sm:space-y-20\">\n <DiscoverActivityStrip\n orders={orders}\n isLoading={isLoading}\n marketplaceHref={marketplaceHref}\n onBuyOrder={onBuyOrder}\n isOwnOrder={isOwnOrder}\n />\n\n {/* Community — recent on-chain activity carousel */}\n <FadeIn delay={0.08}>\n <StripShell\n icon={<Activity className=\"h-3.5 w-3.5 text-white\" />}\n iconBg=\"bg-gradient-to-br from-indigo-500 to-blue-600 shadow-md shadow-indigo-500/20\"\n title=\"Community\"\n subtitle={\n <span className=\"flex items-center gap-1\">\n <RefreshCw className=\"h-2.5 w-2.5\" />\n Updated {timeAgo(lastUpdated)}\n </span>\n }\n href={activitiesHref}\n linkLabel=\"Activities\"\n >\n {activitiesLoading\n ? Array.from({ length: 8 }).map((_, i) => (\n <div key={i} className=\"w-56 sm:w-64 snap-start shrink-0\">\n <ActivityCardSkeleton />\n </div>\n ))\n : activities.length === 0\n ? (\n <p className=\"text-sm text-muted-foreground py-4\">\n No activity yet. Be the first to trade on Medialane!\n </p>\n )\n : activities.map((act, i) => {\n const key = act.txHash\n ? `${act.txHash}-${act.type}-${act.nftTokenId ?? \"\"}`\n : `activity-${i}`;\n return (\n <div key={key} className=\"w-56 sm:w-64 snap-start shrink-0\">\n <ActivityCard activity={act} getAssetHref={getAssetHref} />\n </div>\n );\n })}\n </StripShell>\n </FadeIn>\n </div>\n );\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/components/discover-feed-section.tsx"],"sourcesContent":["\"use client\";\n\nimport { Tag, Activity, RefreshCw, ArrowRight } from \"lucide-react\";\nimport { FadeIn } from \"./motion-primitives.js\";\nimport { ListingCard, ListingCardSkeleton } from \"./listing-card.js\";\nimport { ActivityCard, ActivityCardSkeleton } from \"./activity-card.js\";\nimport { timeAgo } from \"../utils/time.js\";\nimport { cn } from \"../utils/cn.js\";\nimport type { ApiOrder, ApiActivity } from \"@medialane/sdk\";\n\nexport interface DiscoverFeedSectionProps {\n orders: ApiOrder[];\n isLoading: boolean;\n activities: ApiActivity[];\n activitiesLoading: boolean;\n lastUpdated: string;\n getAssetHref?: (contract: string, tokenId: string) => string;\n getActorHref?: (address: string) => string;\n explorerUrl?: string;\n marketplaceHref?: string;\n activitiesHref?: string;\n\n onBuyOrder?: (order: ApiOrder) => void;\n\n isOwnOrder?: (order: ApiOrder) => boolean;\n}\n\nfunction StripShell({\n icon,\n iconBg,\n title,\n subtitle,\n href,\n linkLabel,\n children,\n}: {\n icon: React.ReactNode;\n iconBg: string;\n title: string;\n subtitle?: React.ReactNode;\n href: string;\n linkLabel: string;\n children: React.ReactNode;\n}) {\n return (\n <section className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2.5\">\n <div className={cn(\"h-7 w-7 rounded-lg flex items-center justify-center\", iconBg)}>\n {icon}\n </div>\n <div>\n <h2 className=\"text-lg sm:text-xl font-semibold leading-none\">{title}</h2>\n {subtitle && <p className=\"text-2xs text-muted-foreground mt-1\">{subtitle}</p>}\n </div>\n </div>\n <a\n href={href}\n className=\"inline-flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground px-3 py-1.5 rounded-md hover:bg-accent transition-colors\"\n >\n {linkLabel} <ArrowRight className=\"h-3.5 w-3.5\" />\n </a>\n </div>\n\n <div className=\"w-full overflow-x-auto scrollbar-hide\">\n <div className=\"flex gap-5 sm:gap-6 snap-x snap-mandatory pb-2\" style={{ width: \"max-content\" }}>\n {children}\n </div>\n </div>\n </section>\n );\n}\n\nexport interface DiscoverActivityStripProps {\n orders: ApiOrder[];\n isLoading: boolean;\n marketplaceHref?: string;\n onBuyOrder?: (order: ApiOrder) => void;\n isOwnOrder?: (order: ApiOrder) => boolean;\n}\n\nexport function DiscoverActivityStrip({\n orders,\n isLoading,\n marketplaceHref = \"/marketplace\",\n onBuyOrder,\n isOwnOrder,\n}: DiscoverActivityStripProps) {\n return (\n <FadeIn>\n <StripShell\n icon={<Tag className=\"h-3.5 w-3.5 text-white\" />}\n iconBg=\"bg-gradient-to-br from-rose-500 to-pink-600 shadow-md shadow-rose-500/20\"\n title=\"Activity\"\n href={marketplaceHref}\n linkLabel=\"View all\"\n >\n {isLoading\n ? Array.from({ length: 8 }).map((_, i) => (\n <div key={i} className=\"w-72 snap-start shrink-0\">\n <ListingCardSkeleton />\n </div>\n ))\n : orders.length === 0\n ? (\n <p className=\"text-sm text-muted-foreground py-4\">No active listings yet.</p>\n )\n : orders.map((order) => {\n const own = isOwnOrder?.(order) ?? false;\n return (\n <div key={order.orderHash} className=\"w-72 snap-start shrink-0\">\n <ListingCard\n order={order}\n onBuy={onBuyOrder && !own ? () => onBuyOrder(order) : undefined}\n />\n </div>\n );\n })}\n </StripShell>\n </FadeIn>\n );\n}\n\nexport function DiscoverFeedSection({\n orders,\n isLoading,\n activities,\n activitiesLoading,\n lastUpdated,\n getAssetHref = (c, t) => `/asset/${c}/${t}`,\n marketplaceHref = \"/marketplace\",\n activitiesHref = \"/activities\",\n onBuyOrder,\n isOwnOrder,\n}: DiscoverFeedSectionProps) {\n return (\n <div className=\"space-y-14 sm:space-y-20\">\n <DiscoverActivityStrip\n orders={orders}\n isLoading={isLoading}\n marketplaceHref={marketplaceHref}\n onBuyOrder={onBuyOrder}\n isOwnOrder={isOwnOrder}\n />\n\n <FadeIn delay={0.08}>\n <StripShell\n icon={<Activity className=\"h-3.5 w-3.5 text-white\" />}\n iconBg=\"bg-gradient-to-br from-indigo-500 to-blue-600 shadow-md shadow-indigo-500/20\"\n title=\"Community\"\n subtitle={\n <span className=\"flex items-center gap-1\">\n <RefreshCw className=\"h-2.5 w-2.5\" />\n Updated {timeAgo(lastUpdated)}\n </span>\n }\n href={activitiesHref}\n linkLabel=\"Activities\"\n >\n {activitiesLoading\n ? Array.from({ length: 8 }).map((_, i) => (\n <div key={i} className=\"w-56 sm:w-64 snap-start shrink-0\">\n <ActivityCardSkeleton />\n </div>\n ))\n : activities.length === 0\n ? (\n <p className=\"text-sm text-muted-foreground py-4\">\n No activity yet. Be the first to trade on Medialane!\n </p>\n )\n : activities.map((act, i) => {\n const key = act.txHash\n ? `${act.txHash}-${act.type}-${act.nftTokenId ?? \"\"}`\n : `activity-${i}`;\n return (\n <div key={key} className=\"w-56 sm:w-64 snap-start shrink-0\">\n <ActivityCard activity={act} getAssetHref={getAssetHref} />\n </div>\n );\n })}\n </StripShell>\n </FadeIn>\n </div>\n );\n}\n"],"mappings":"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","names":[]}
@@ -12,9 +12,7 @@ interface DiscoverFeedSectionProps {
12
12
  explorerUrl?: string;
13
13
  marketplaceHref?: string;
14
14
  activitiesHref?: string;
15
- /** Optional buy hook — when provided, listing cards show their Buy action */
16
15
  onBuyOrder?: (order: ApiOrder) => void;
17
- /** Hide the buy action for orders the viewer owns */
18
16
  isOwnOrder?: (order: ApiOrder) => boolean;
19
17
  }
20
18
  interface DiscoverActivityStripProps {
@@ -24,16 +22,7 @@ interface DiscoverActivityStripProps {
24
22
  onBuyOrder?: (order: ApiOrder) => void;
25
23
  isOwnOrder?: (order: ApiOrder) => boolean;
26
24
  }
27
- /** Markets — recent listings carousel. Standalone (2026-07-05) so a page can
28
- * place other sections (e.g. Browse by Type) between this and Community. */
29
25
  declare function DiscoverActivityStrip({ orders, isLoading, marketplaceHref, onBuyOrder, isOwnOrder, }: DiscoverActivityStripProps): react_jsx_runtime.JSX.Element;
30
- /**
31
- * @deprecated Kept for apps still on the combined layout (e.g. medialane-io,
32
- * pending its own migration). New pages should use `DiscoverActivityStrip`
33
- * directly and build their own Community section — see medialane-starknet's
34
- * discover community-section.tsx for the 2-column activities+leaderboard
35
- * replacement of the old carousel below.
36
- */
37
26
  declare function DiscoverFeedSection({ orders, isLoading, activities, activitiesLoading, lastUpdated, getAssetHref, marketplaceHref, activitiesHref, onBuyOrder, isOwnOrder, }: DiscoverFeedSectionProps): react_jsx_runtime.JSX.Element;
38
27
 
39
28
  export { DiscoverActivityStrip, type DiscoverActivityStripProps, DiscoverFeedSection, type DiscoverFeedSectionProps };
@@ -12,9 +12,7 @@ interface DiscoverFeedSectionProps {
12
12
  explorerUrl?: string;
13
13
  marketplaceHref?: string;
14
14
  activitiesHref?: string;
15
- /** Optional buy hook — when provided, listing cards show their Buy action */
16
15
  onBuyOrder?: (order: ApiOrder) => void;
17
- /** Hide the buy action for orders the viewer owns */
18
16
  isOwnOrder?: (order: ApiOrder) => boolean;
19
17
  }
20
18
  interface DiscoverActivityStripProps {
@@ -24,16 +22,7 @@ interface DiscoverActivityStripProps {
24
22
  onBuyOrder?: (order: ApiOrder) => void;
25
23
  isOwnOrder?: (order: ApiOrder) => boolean;
26
24
  }
27
- /** Markets — recent listings carousel. Standalone (2026-07-05) so a page can
28
- * place other sections (e.g. Browse by Type) between this and Community. */
29
25
  declare function DiscoverActivityStrip({ orders, isLoading, marketplaceHref, onBuyOrder, isOwnOrder, }: DiscoverActivityStripProps): react_jsx_runtime.JSX.Element;
30
- /**
31
- * @deprecated Kept for apps still on the combined layout (e.g. medialane-io,
32
- * pending its own migration). New pages should use `DiscoverActivityStrip`
33
- * directly and build their own Community section — see medialane-starknet's
34
- * discover community-section.tsx for the 2-column activities+leaderboard
35
- * replacement of the old carousel below.
36
- */
37
26
  declare function DiscoverFeedSection({ orders, isLoading, activities, activitiesLoading, lastUpdated, getAssetHref, marketplaceHref, activitiesHref, onBuyOrder, isOwnOrder, }: DiscoverFeedSectionProps): react_jsx_runtime.JSX.Element;
38
27
 
39
28
  export { DiscoverActivityStrip, type DiscoverActivityStripProps, DiscoverFeedSection, type DiscoverFeedSectionProps };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/discover-feed-section.tsx"],"sourcesContent":["\"use client\";\n\nimport { Tag, Activity, RefreshCw, ArrowRight } from \"lucide-react\";\nimport { FadeIn } from \"./motion-primitives.js\";\nimport { ListingCard, ListingCardSkeleton } from \"./listing-card.js\";\nimport { ActivityCard, ActivityCardSkeleton } from \"./activity-card.js\";\nimport { timeAgo } from \"../utils/time.js\";\nimport { cn } from \"../utils/cn.js\";\nimport type { ApiOrder, ApiActivity } from \"@medialane/sdk\";\n\nexport interface DiscoverFeedSectionProps {\n orders: ApiOrder[];\n isLoading: boolean;\n activities: ApiActivity[];\n activitiesLoading: boolean;\n lastUpdated: string;\n getAssetHref?: (contract: string, tokenId: string) => string;\n getActorHref?: (address: string) => string;\n explorerUrl?: string;\n marketplaceHref?: string;\n activitiesHref?: string;\n /** Optional buy hook — when provided, listing cards show their Buy action */\n onBuyOrder?: (order: ApiOrder) => void;\n /** Hide the buy action for orders the viewer owns */\n isOwnOrder?: (order: ApiOrder) => boolean;\n}\n\n// ── Shared strip shell: icon-badge header + snap-scroll row ─────────────────\nfunction StripShell({\n icon,\n iconBg,\n title,\n subtitle,\n href,\n linkLabel,\n children,\n}: {\n icon: React.ReactNode;\n iconBg: string;\n title: string;\n subtitle?: React.ReactNode;\n href: string;\n linkLabel: string;\n children: React.ReactNode;\n}) {\n return (\n <section className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2.5\">\n <div className={cn(\"h-7 w-7 rounded-lg flex items-center justify-center\", iconBg)}>\n {icon}\n </div>\n <div>\n <h2 className=\"text-lg sm:text-xl font-semibold leading-none\">{title}</h2>\n {subtitle && <p className=\"text-2xs text-muted-foreground mt-1\">{subtitle}</p>}\n </div>\n </div>\n <a\n href={href}\n className=\"inline-flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground px-3 py-1.5 rounded-md hover:bg-accent transition-colors\"\n >\n {linkLabel} <ArrowRight className=\"h-3.5 w-3.5\" />\n </a>\n </div>\n\n <div className=\"w-full overflow-x-auto scrollbar-hide\">\n <div className=\"flex gap-5 sm:gap-6 snap-x snap-mandatory pb-2\" style={{ width: \"max-content\" }}>\n {children}\n </div>\n </div>\n </section>\n );\n}\n\nexport interface DiscoverActivityStripProps {\n orders: ApiOrder[];\n isLoading: boolean;\n marketplaceHref?: string;\n onBuyOrder?: (order: ApiOrder) => void;\n isOwnOrder?: (order: ApiOrder) => boolean;\n}\n\n/** Markets — recent listings carousel. Standalone (2026-07-05) so a page can\n * place other sections (e.g. Browse by Type) between this and Community. */\nexport function DiscoverActivityStrip({\n orders,\n isLoading,\n marketplaceHref = \"/marketplace\",\n onBuyOrder,\n isOwnOrder,\n}: DiscoverActivityStripProps) {\n return (\n <FadeIn>\n <StripShell\n icon={<Tag className=\"h-3.5 w-3.5 text-white\" />}\n iconBg=\"bg-gradient-to-br from-rose-500 to-pink-600 shadow-md shadow-rose-500/20\"\n title=\"Activity\"\n href={marketplaceHref}\n linkLabel=\"View all\"\n >\n {isLoading\n ? Array.from({ length: 8 }).map((_, i) => (\n <div key={i} className=\"w-72 snap-start shrink-0\">\n <ListingCardSkeleton />\n </div>\n ))\n : orders.length === 0\n ? (\n <p className=\"text-sm text-muted-foreground py-4\">No active listings yet.</p>\n )\n : orders.map((order) => {\n const own = isOwnOrder?.(order) ?? false;\n return (\n <div key={order.orderHash} className=\"w-72 snap-start shrink-0\">\n <ListingCard\n order={order}\n onBuy={onBuyOrder && !own ? () => onBuyOrder(order) : undefined}\n />\n </div>\n );\n })}\n </StripShell>\n </FadeIn>\n );\n}\n\n/**\n * @deprecated Kept for apps still on the combined layout (e.g. medialane-io,\n * pending its own migration). New pages should use `DiscoverActivityStrip`\n * directly and build their own Community section — see medialane-starknet's\n * discover community-section.tsx for the 2-column activities+leaderboard\n * replacement of the old carousel below.\n */\nexport function DiscoverFeedSection({\n orders,\n isLoading,\n activities,\n activitiesLoading,\n lastUpdated,\n getAssetHref = (c, t) => `/asset/${c}/${t}`,\n marketplaceHref = \"/marketplace\",\n activitiesHref = \"/activities\",\n onBuyOrder,\n isOwnOrder,\n}: DiscoverFeedSectionProps) {\n return (\n <div className=\"space-y-14 sm:space-y-20\">\n <DiscoverActivityStrip\n orders={orders}\n isLoading={isLoading}\n marketplaceHref={marketplaceHref}\n onBuyOrder={onBuyOrder}\n isOwnOrder={isOwnOrder}\n />\n\n {/* Community — recent on-chain activity carousel */}\n <FadeIn delay={0.08}>\n <StripShell\n icon={<Activity className=\"h-3.5 w-3.5 text-white\" />}\n iconBg=\"bg-gradient-to-br from-indigo-500 to-blue-600 shadow-md shadow-indigo-500/20\"\n title=\"Community\"\n subtitle={\n <span className=\"flex items-center gap-1\">\n <RefreshCw className=\"h-2.5 w-2.5\" />\n Updated {timeAgo(lastUpdated)}\n </span>\n }\n href={activitiesHref}\n linkLabel=\"Activities\"\n >\n {activitiesLoading\n ? Array.from({ length: 8 }).map((_, i) => (\n <div key={i} className=\"w-56 sm:w-64 snap-start shrink-0\">\n <ActivityCardSkeleton />\n </div>\n ))\n : activities.length === 0\n ? (\n <p className=\"text-sm text-muted-foreground py-4\">\n No activity yet. Be the first to trade on Medialane!\n </p>\n )\n : activities.map((act, i) => {\n const key = act.txHash\n ? `${act.txHash}-${act.type}-${act.nftTokenId ?? \"\"}`\n : `activity-${i}`;\n return (\n <div key={key} className=\"w-56 sm:w-64 snap-start shrink-0\">\n <ActivityCard activity={act} getAssetHref={getAssetHref} />\n </div>\n );\n })}\n </StripShell>\n </FadeIn>\n </div>\n );\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/components/discover-feed-section.tsx"],"sourcesContent":["\"use client\";\n\nimport { Tag, Activity, RefreshCw, ArrowRight } from \"lucide-react\";\nimport { FadeIn } from \"./motion-primitives.js\";\nimport { ListingCard, ListingCardSkeleton } from \"./listing-card.js\";\nimport { ActivityCard, ActivityCardSkeleton } from \"./activity-card.js\";\nimport { timeAgo } from \"../utils/time.js\";\nimport { cn } from \"../utils/cn.js\";\nimport type { ApiOrder, ApiActivity } from \"@medialane/sdk\";\n\nexport interface DiscoverFeedSectionProps {\n orders: ApiOrder[];\n isLoading: boolean;\n activities: ApiActivity[];\n activitiesLoading: boolean;\n lastUpdated: string;\n getAssetHref?: (contract: string, tokenId: string) => string;\n getActorHref?: (address: string) => string;\n explorerUrl?: string;\n marketplaceHref?: string;\n activitiesHref?: string;\n\n onBuyOrder?: (order: ApiOrder) => void;\n\n isOwnOrder?: (order: ApiOrder) => boolean;\n}\n\nfunction StripShell({\n icon,\n iconBg,\n title,\n subtitle,\n href,\n linkLabel,\n children,\n}: {\n icon: React.ReactNode;\n iconBg: string;\n title: string;\n subtitle?: React.ReactNode;\n href: string;\n linkLabel: string;\n children: React.ReactNode;\n}) {\n return (\n <section className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2.5\">\n <div className={cn(\"h-7 w-7 rounded-lg flex items-center justify-center\", iconBg)}>\n {icon}\n </div>\n <div>\n <h2 className=\"text-lg sm:text-xl font-semibold leading-none\">{title}</h2>\n {subtitle && <p className=\"text-2xs text-muted-foreground mt-1\">{subtitle}</p>}\n </div>\n </div>\n <a\n href={href}\n className=\"inline-flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground px-3 py-1.5 rounded-md hover:bg-accent transition-colors\"\n >\n {linkLabel} <ArrowRight className=\"h-3.5 w-3.5\" />\n </a>\n </div>\n\n <div className=\"w-full overflow-x-auto scrollbar-hide\">\n <div className=\"flex gap-5 sm:gap-6 snap-x snap-mandatory pb-2\" style={{ width: \"max-content\" }}>\n {children}\n </div>\n </div>\n </section>\n );\n}\n\nexport interface DiscoverActivityStripProps {\n orders: ApiOrder[];\n isLoading: boolean;\n marketplaceHref?: string;\n onBuyOrder?: (order: ApiOrder) => void;\n isOwnOrder?: (order: ApiOrder) => boolean;\n}\n\nexport function DiscoverActivityStrip({\n orders,\n isLoading,\n marketplaceHref = \"/marketplace\",\n onBuyOrder,\n isOwnOrder,\n}: DiscoverActivityStripProps) {\n return (\n <FadeIn>\n <StripShell\n icon={<Tag className=\"h-3.5 w-3.5 text-white\" />}\n iconBg=\"bg-gradient-to-br from-rose-500 to-pink-600 shadow-md shadow-rose-500/20\"\n title=\"Activity\"\n href={marketplaceHref}\n linkLabel=\"View all\"\n >\n {isLoading\n ? Array.from({ length: 8 }).map((_, i) => (\n <div key={i} className=\"w-72 snap-start shrink-0\">\n <ListingCardSkeleton />\n </div>\n ))\n : orders.length === 0\n ? (\n <p className=\"text-sm text-muted-foreground py-4\">No active listings yet.</p>\n )\n : orders.map((order) => {\n const own = isOwnOrder?.(order) ?? false;\n return (\n <div key={order.orderHash} className=\"w-72 snap-start shrink-0\">\n <ListingCard\n order={order}\n onBuy={onBuyOrder && !own ? () => onBuyOrder(order) : undefined}\n />\n </div>\n );\n })}\n </StripShell>\n </FadeIn>\n );\n}\n\nexport function DiscoverFeedSection({\n orders,\n isLoading,\n activities,\n activitiesLoading,\n lastUpdated,\n getAssetHref = (c, t) => `/asset/${c}/${t}`,\n marketplaceHref = \"/marketplace\",\n activitiesHref = \"/activities\",\n onBuyOrder,\n isOwnOrder,\n}: DiscoverFeedSectionProps) {\n return (\n <div className=\"space-y-14 sm:space-y-20\">\n <DiscoverActivityStrip\n orders={orders}\n isLoading={isLoading}\n marketplaceHref={marketplaceHref}\n onBuyOrder={onBuyOrder}\n isOwnOrder={isOwnOrder}\n />\n\n <FadeIn delay={0.08}>\n <StripShell\n icon={<Activity className=\"h-3.5 w-3.5 text-white\" />}\n iconBg=\"bg-gradient-to-br from-indigo-500 to-blue-600 shadow-md shadow-indigo-500/20\"\n title=\"Community\"\n subtitle={\n <span className=\"flex items-center gap-1\">\n <RefreshCw className=\"h-2.5 w-2.5\" />\n Updated {timeAgo(lastUpdated)}\n </span>\n }\n href={activitiesHref}\n linkLabel=\"Activities\"\n >\n {activitiesLoading\n ? Array.from({ length: 8 }).map((_, i) => (\n <div key={i} className=\"w-56 sm:w-64 snap-start shrink-0\">\n <ActivityCardSkeleton />\n </div>\n ))\n : activities.length === 0\n ? (\n <p className=\"text-sm text-muted-foreground py-4\">\n No activity yet. Be the first to trade on Medialane!\n </p>\n )\n : activities.map((act, i) => {\n const key = act.txHash\n ? `${act.txHash}-${act.type}-${act.nftTokenId ?? \"\"}`\n : `activity-${i}`;\n return (\n <div key={key} className=\"w-56 sm:w-64 snap-start shrink-0\">\n <ActivityCard activity={act} getAssetHref={getAssetHref} />\n </div>\n );\n })}\n </StripShell>\n </FadeIn>\n </div>\n );\n}\n"],"mappings":"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","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/discover-hero.tsx"],"sourcesContent":["\"use client\";\n\nimport { motion } from \"framer-motion\";\nimport { KineticWords, EASE_OUT } from \"./motion-primitives.js\";\nimport { ActivityTicker } from \"./activity-ticker.js\";\nimport type { ApiOrder } from \"@medialane/sdk\";\n\nexport interface DiscoverHeroProps {\n stats: { collections: number; tokens: number; sales: number } | null;\n orders: ApiOrder[];\n badgeText?: string;\n headlineText?: string;\n getTickerHref?: (order: ApiOrder) => string;\n}\n\nexport function DiscoverHero({\n stats,\n orders,\n badgeText = \"Creative Works\",\n headlineText = \"Create, share & explore\",\n getTickerHref,\n}: DiscoverHeroProps) {\n return (\n <div className=\"space-y-6 pt-2 pb-6 border-b border-border/50\">\n {/* Badge */}\n <motion.div\n initial={{ opacity: 0, y: 12 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.4, ease: EASE_OUT }}\n >\n <span className=\"pill-badge\">{badgeText}</span>\n </motion.div>\n\n {/* Headline */}\n <motion.div\n className=\"text-3xl sm:text-4xl lg:text-5xl font-black leading-[1.1]\"\n style={{ perspective: \"800px\" }}\n initial={{ opacity: 0, y: 16 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.5, delay: 0.1, ease: EASE_OUT }}\n >\n <span className=\"gradient-text\">\n <KineticWords text={headlineText} />\n </span>\n </motion.div>\n\n {/* Stats chips */}\n {stats && (\n <motion.div\n className=\"flex flex-wrap gap-2\"\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.4, delay: 0.35, ease: EASE_OUT }}\n >\n {[\n { label: \"Collections\", value: stats.collections },\n { label: \"Assets\", value: stats.tokens },\n { label: \"Sales\", value: stats.sales },\n ].map(({ label, value }) => (\n <div\n key={label}\n className=\"flex items-center gap-1.5 rounded-full border border-border bg-card px-3.5 py-1.5 text-sm\"\n >\n <span className=\"font-bold tabular-nums\">{value?.toLocaleString() ?? \"—\"}</span>\n <span className=\"text-muted-foreground\">{label}</span>\n </div>\n ))}\n </motion.div>\n )}\n\n {/* Scrolling ticker */}\n <ActivityTicker orders={orders} getHref={getTickerHref} />\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA8BQ;AA5BR,2BAAuB;AACvB,+BAAuC;AACvC,6BAA+B;AAWxB,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,eAAe;AAAA,EACf;AACF,GAAsB;AACpB,SACE,6CAAC,SAAI,WAAU,iDAEb;AAAA;AAAA,MAAC,4BAAO;AAAA,MAAP;AAAA,QACC,SAAS,EAAE,SAAS,GAAG,GAAG,GAAG;AAAA,QAC7B,SAAS,EAAE,SAAS,GAAG,GAAG,EAAE;AAAA,QAC5B,YAAY,EAAE,UAAU,KAAK,MAAM,kCAAS;AAAA,QAE5C,sDAAC,UAAK,WAAU,cAAc,qBAAU;AAAA;AAAA,IAC1C;AAAA,IAGA;AAAA,MAAC,4BAAO;AAAA,MAAP;AAAA,QACC,WAAU;AAAA,QACV,OAAO,EAAE,aAAa,QAAQ;AAAA,QAC9B,SAAS,EAAE,SAAS,GAAG,GAAG,GAAG;AAAA,QAC7B,SAAS,EAAE,SAAS,GAAG,GAAG,EAAE;AAAA,QAC5B,YAAY,EAAE,UAAU,KAAK,OAAO,KAAK,MAAM,kCAAS;AAAA,QAExD,sDAAC,UAAK,WAAU,iBACd,sDAAC,yCAAa,MAAM,cAAc,GACpC;AAAA;AAAA,IACF;AAAA,IAGC,SACC;AAAA,MAAC,4BAAO;AAAA,MAAP;AAAA,QACC,WAAU;AAAA,QACV,SAAS,EAAE,SAAS,EAAE;AAAA,QACtB,SAAS,EAAE,SAAS,EAAE;AAAA,QACtB,YAAY,EAAE,UAAU,KAAK,OAAO,MAAM,MAAM,kCAAS;AAAA,QAExD;AAAA,UACC,EAAE,OAAO,eAAe,OAAO,MAAM,YAAY;AAAA,UACjD,EAAE,OAAO,UAAU,OAAO,MAAM,OAAO;AAAA,UACvC,EAAE,OAAO,SAAS,OAAO,MAAM,MAAM;AAAA,QACvC,EAAE,IAAI,CAAC,EAAE,OAAO,MAAM,MACpB;AAAA,UAAC;AAAA;AAAA,YAEC,WAAU;AAAA,YAEV;AAAA,0DAAC,UAAK,WAAU,0BAA0B,iBAAO,eAAe,KAAK,UAAI;AAAA,cACzE,4CAAC,UAAK,WAAU,yBAAyB,iBAAM;AAAA;AAAA;AAAA,UAJ1C;AAAA,QAKP,CACD;AAAA;AAAA,IACH;AAAA,IAIF,4CAAC,yCAAe,QAAgB,SAAS,eAAe;AAAA,KAC1D;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../src/components/discover-hero.tsx"],"sourcesContent":["\"use client\";\n\nimport { motion } from \"framer-motion\";\nimport { KineticWords, EASE_OUT } from \"./motion-primitives.js\";\nimport { ActivityTicker } from \"./activity-ticker.js\";\nimport type { ApiOrder } from \"@medialane/sdk\";\n\nexport interface DiscoverHeroProps {\n stats: { collections: number; tokens: number; sales: number } | null;\n orders: ApiOrder[];\n badgeText?: string;\n headlineText?: string;\n getTickerHref?: (order: ApiOrder) => string;\n}\n\nexport function DiscoverHero({\n stats,\n orders,\n badgeText = \"Creative Works\",\n headlineText = \"Create, share & explore\",\n getTickerHref,\n}: DiscoverHeroProps) {\n return (\n <div className=\"space-y-6 pt-2 pb-6 border-b border-border/50\">\n\n <motion.div\n initial={{ opacity: 0, y: 12 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.4, ease: EASE_OUT }}\n >\n <span className=\"pill-badge\">{badgeText}</span>\n </motion.div>\n\n <motion.div\n className=\"text-3xl sm:text-4xl lg:text-5xl font-black leading-[1.1]\"\n style={{ perspective: \"800px\" }}\n initial={{ opacity: 0, y: 16 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.5, delay: 0.1, ease: EASE_OUT }}\n >\n <span className=\"gradient-text\">\n <KineticWords text={headlineText} />\n </span>\n </motion.div>\n\n {stats && (\n <motion.div\n className=\"flex flex-wrap gap-2\"\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.4, delay: 0.35, ease: EASE_OUT }}\n >\n {[\n { label: \"Collections\", value: stats.collections },\n { label: \"Assets\", value: stats.tokens },\n { label: \"Sales\", value: stats.sales },\n ].map(({ label, value }) => (\n <div\n key={label}\n className=\"flex items-center gap-1.5 rounded-full border border-border bg-card px-3.5 py-1.5 text-sm\"\n >\n <span className=\"font-bold tabular-nums\">{value?.toLocaleString() ?? \"—\"}</span>\n <span className=\"text-muted-foreground\">{label}</span>\n </div>\n ))}\n </motion.div>\n )}\n\n <ActivityTicker orders={orders} getHref={getTickerHref} />\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA8BQ;AA5BR,2BAAuB;AACvB,+BAAuC;AACvC,6BAA+B;AAWxB,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,eAAe;AAAA,EACf;AACF,GAAsB;AACpB,SACE,6CAAC,SAAI,WAAU,iDAEb;AAAA;AAAA,MAAC,4BAAO;AAAA,MAAP;AAAA,QACC,SAAS,EAAE,SAAS,GAAG,GAAG,GAAG;AAAA,QAC7B,SAAS,EAAE,SAAS,GAAG,GAAG,EAAE;AAAA,QAC5B,YAAY,EAAE,UAAU,KAAK,MAAM,kCAAS;AAAA,QAE5C,sDAAC,UAAK,WAAU,cAAc,qBAAU;AAAA;AAAA,IAC1C;AAAA,IAEA;AAAA,MAAC,4BAAO;AAAA,MAAP;AAAA,QACC,WAAU;AAAA,QACV,OAAO,EAAE,aAAa,QAAQ;AAAA,QAC9B,SAAS,EAAE,SAAS,GAAG,GAAG,GAAG;AAAA,QAC7B,SAAS,EAAE,SAAS,GAAG,GAAG,EAAE;AAAA,QAC5B,YAAY,EAAE,UAAU,KAAK,OAAO,KAAK,MAAM,kCAAS;AAAA,QAExD,sDAAC,UAAK,WAAU,iBACd,sDAAC,yCAAa,MAAM,cAAc,GACpC;AAAA;AAAA,IACF;AAAA,IAEC,SACC;AAAA,MAAC,4BAAO;AAAA,MAAP;AAAA,QACC,WAAU;AAAA,QACV,SAAS,EAAE,SAAS,EAAE;AAAA,QACtB,SAAS,EAAE,SAAS,EAAE;AAAA,QACtB,YAAY,EAAE,UAAU,KAAK,OAAO,MAAM,MAAM,kCAAS;AAAA,QAExD;AAAA,UACC,EAAE,OAAO,eAAe,OAAO,MAAM,YAAY;AAAA,UACjD,EAAE,OAAO,UAAU,OAAO,MAAM,OAAO;AAAA,UACvC,EAAE,OAAO,SAAS,OAAO,MAAM,MAAM;AAAA,QACvC,EAAE,IAAI,CAAC,EAAE,OAAO,MAAM,MACpB;AAAA,UAAC;AAAA;AAAA,YAEC,WAAU;AAAA,YAEV;AAAA,0DAAC,UAAK,WAAU,0BAA0B,iBAAO,eAAe,KAAK,UAAI;AAAA,cACzE,4CAAC,UAAK,WAAU,yBAAyB,iBAAM;AAAA;AAAA;AAAA,UAJ1C;AAAA,QAKP,CACD;AAAA;AAAA,IACH;AAAA,IAGF,4CAAC,yCAAe,QAAgB,SAAS,eAAe;AAAA,KAC1D;AAEJ;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/discover-hero.tsx"],"sourcesContent":["\"use client\";\n\nimport { motion } from \"framer-motion\";\nimport { KineticWords, EASE_OUT } from \"./motion-primitives.js\";\nimport { ActivityTicker } from \"./activity-ticker.js\";\nimport type { ApiOrder } from \"@medialane/sdk\";\n\nexport interface DiscoverHeroProps {\n stats: { collections: number; tokens: number; sales: number } | null;\n orders: ApiOrder[];\n badgeText?: string;\n headlineText?: string;\n getTickerHref?: (order: ApiOrder) => string;\n}\n\nexport function DiscoverHero({\n stats,\n orders,\n badgeText = \"Creative Works\",\n headlineText = \"Create, share & explore\",\n getTickerHref,\n}: DiscoverHeroProps) {\n return (\n <div className=\"space-y-6 pt-2 pb-6 border-b border-border/50\">\n {/* Badge */}\n <motion.div\n initial={{ opacity: 0, y: 12 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.4, ease: EASE_OUT }}\n >\n <span className=\"pill-badge\">{badgeText}</span>\n </motion.div>\n\n {/* Headline */}\n <motion.div\n className=\"text-3xl sm:text-4xl lg:text-5xl font-black leading-[1.1]\"\n style={{ perspective: \"800px\" }}\n initial={{ opacity: 0, y: 16 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.5, delay: 0.1, ease: EASE_OUT }}\n >\n <span className=\"gradient-text\">\n <KineticWords text={headlineText} />\n </span>\n </motion.div>\n\n {/* Stats chips */}\n {stats && (\n <motion.div\n className=\"flex flex-wrap gap-2\"\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.4, delay: 0.35, ease: EASE_OUT }}\n >\n {[\n { label: \"Collections\", value: stats.collections },\n { label: \"Assets\", value: stats.tokens },\n { label: \"Sales\", value: stats.sales },\n ].map(({ label, value }) => (\n <div\n key={label}\n className=\"flex items-center gap-1.5 rounded-full border border-border bg-card px-3.5 py-1.5 text-sm\"\n >\n <span className=\"font-bold tabular-nums\">{value?.toLocaleString() ?? \"—\"}</span>\n <span className=\"text-muted-foreground\">{label}</span>\n </div>\n ))}\n </motion.div>\n )}\n\n {/* Scrolling ticker */}\n <ActivityTicker orders={orders} getHref={getTickerHref} />\n </div>\n );\n}\n"],"mappings":";AA8BQ,cA6BI,YA7BJ;AA5BR,SAAS,cAAc;AACvB,SAAS,cAAc,gBAAgB;AACvC,SAAS,sBAAsB;AAWxB,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,eAAe;AAAA,EACf;AACF,GAAsB;AACpB,SACE,qBAAC,SAAI,WAAU,iDAEb;AAAA;AAAA,MAAC,OAAO;AAAA,MAAP;AAAA,QACC,SAAS,EAAE,SAAS,GAAG,GAAG,GAAG;AAAA,QAC7B,SAAS,EAAE,SAAS,GAAG,GAAG,EAAE;AAAA,QAC5B,YAAY,EAAE,UAAU,KAAK,MAAM,SAAS;AAAA,QAE5C,8BAAC,UAAK,WAAU,cAAc,qBAAU;AAAA;AAAA,IAC1C;AAAA,IAGA;AAAA,MAAC,OAAO;AAAA,MAAP;AAAA,QACC,WAAU;AAAA,QACV,OAAO,EAAE,aAAa,QAAQ;AAAA,QAC9B,SAAS,EAAE,SAAS,GAAG,GAAG,GAAG;AAAA,QAC7B,SAAS,EAAE,SAAS,GAAG,GAAG,EAAE;AAAA,QAC5B,YAAY,EAAE,UAAU,KAAK,OAAO,KAAK,MAAM,SAAS;AAAA,QAExD,8BAAC,UAAK,WAAU,iBACd,8BAAC,gBAAa,MAAM,cAAc,GACpC;AAAA;AAAA,IACF;AAAA,IAGC,SACC;AAAA,MAAC,OAAO;AAAA,MAAP;AAAA,QACC,WAAU;AAAA,QACV,SAAS,EAAE,SAAS,EAAE;AAAA,QACtB,SAAS,EAAE,SAAS,EAAE;AAAA,QACtB,YAAY,EAAE,UAAU,KAAK,OAAO,MAAM,MAAM,SAAS;AAAA,QAExD;AAAA,UACC,EAAE,OAAO,eAAe,OAAO,MAAM,YAAY;AAAA,UACjD,EAAE,OAAO,UAAU,OAAO,MAAM,OAAO;AAAA,UACvC,EAAE,OAAO,SAAS,OAAO,MAAM,MAAM;AAAA,QACvC,EAAE,IAAI,CAAC,EAAE,OAAO,MAAM,MACpB;AAAA,UAAC;AAAA;AAAA,YAEC,WAAU;AAAA,YAEV;AAAA,kCAAC,UAAK,WAAU,0BAA0B,iBAAO,eAAe,KAAK,UAAI;AAAA,cACzE,oBAAC,UAAK,WAAU,yBAAyB,iBAAM;AAAA;AAAA;AAAA,UAJ1C;AAAA,QAKP,CACD;AAAA;AAAA,IACH;AAAA,IAIF,oBAAC,kBAAe,QAAgB,SAAS,eAAe;AAAA,KAC1D;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../src/components/discover-hero.tsx"],"sourcesContent":["\"use client\";\n\nimport { motion } from \"framer-motion\";\nimport { KineticWords, EASE_OUT } from \"./motion-primitives.js\";\nimport { ActivityTicker } from \"./activity-ticker.js\";\nimport type { ApiOrder } from \"@medialane/sdk\";\n\nexport interface DiscoverHeroProps {\n stats: { collections: number; tokens: number; sales: number } | null;\n orders: ApiOrder[];\n badgeText?: string;\n headlineText?: string;\n getTickerHref?: (order: ApiOrder) => string;\n}\n\nexport function DiscoverHero({\n stats,\n orders,\n badgeText = \"Creative Works\",\n headlineText = \"Create, share & explore\",\n getTickerHref,\n}: DiscoverHeroProps) {\n return (\n <div className=\"space-y-6 pt-2 pb-6 border-b border-border/50\">\n\n <motion.div\n initial={{ opacity: 0, y: 12 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.4, ease: EASE_OUT }}\n >\n <span className=\"pill-badge\">{badgeText}</span>\n </motion.div>\n\n <motion.div\n className=\"text-3xl sm:text-4xl lg:text-5xl font-black leading-[1.1]\"\n style={{ perspective: \"800px\" }}\n initial={{ opacity: 0, y: 16 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.5, delay: 0.1, ease: EASE_OUT }}\n >\n <span className=\"gradient-text\">\n <KineticWords text={headlineText} />\n </span>\n </motion.div>\n\n {stats && (\n <motion.div\n className=\"flex flex-wrap gap-2\"\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.4, delay: 0.35, ease: EASE_OUT }}\n >\n {[\n { label: \"Collections\", value: stats.collections },\n { label: \"Assets\", value: stats.tokens },\n { label: \"Sales\", value: stats.sales },\n ].map(({ label, value }) => (\n <div\n key={label}\n className=\"flex items-center gap-1.5 rounded-full border border-border bg-card px-3.5 py-1.5 text-sm\"\n >\n <span className=\"font-bold tabular-nums\">{value?.toLocaleString() ?? \"—\"}</span>\n <span className=\"text-muted-foreground\">{label}</span>\n </div>\n ))}\n </motion.div>\n )}\n\n <ActivityTicker orders={orders} getHref={getTickerHref} />\n </div>\n );\n}\n"],"mappings":";AA8BQ,cA2BI,YA3BJ;AA5BR,SAAS,cAAc;AACvB,SAAS,cAAc,gBAAgB;AACvC,SAAS,sBAAsB;AAWxB,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,eAAe;AAAA,EACf;AACF,GAAsB;AACpB,SACE,qBAAC,SAAI,WAAU,iDAEb;AAAA;AAAA,MAAC,OAAO;AAAA,MAAP;AAAA,QACC,SAAS,EAAE,SAAS,GAAG,GAAG,GAAG;AAAA,QAC7B,SAAS,EAAE,SAAS,GAAG,GAAG,EAAE;AAAA,QAC5B,YAAY,EAAE,UAAU,KAAK,MAAM,SAAS;AAAA,QAE5C,8BAAC,UAAK,WAAU,cAAc,qBAAU;AAAA;AAAA,IAC1C;AAAA,IAEA;AAAA,MAAC,OAAO;AAAA,MAAP;AAAA,QACC,WAAU;AAAA,QACV,OAAO,EAAE,aAAa,QAAQ;AAAA,QAC9B,SAAS,EAAE,SAAS,GAAG,GAAG,GAAG;AAAA,QAC7B,SAAS,EAAE,SAAS,GAAG,GAAG,EAAE;AAAA,QAC5B,YAAY,EAAE,UAAU,KAAK,OAAO,KAAK,MAAM,SAAS;AAAA,QAExD,8BAAC,UAAK,WAAU,iBACd,8BAAC,gBAAa,MAAM,cAAc,GACpC;AAAA;AAAA,IACF;AAAA,IAEC,SACC;AAAA,MAAC,OAAO;AAAA,MAAP;AAAA,QACC,WAAU;AAAA,QACV,SAAS,EAAE,SAAS,EAAE;AAAA,QACtB,SAAS,EAAE,SAAS,EAAE;AAAA,QACtB,YAAY,EAAE,UAAU,KAAK,OAAO,MAAM,MAAM,SAAS;AAAA,QAExD;AAAA,UACC,EAAE,OAAO,eAAe,OAAO,MAAM,YAAY;AAAA,UACjD,EAAE,OAAO,UAAU,OAAO,MAAM,OAAO;AAAA,UACvC,EAAE,OAAO,SAAS,OAAO,MAAM,MAAM;AAAA,QACvC,EAAE,IAAI,CAAC,EAAE,OAAO,MAAM,MACpB;AAAA,UAAC;AAAA;AAAA,YAEC,WAAU;AAAA,YAEV;AAAA,kCAAC,UAAK,WAAU,0BAA0B,iBAAO,eAAe,KAAK,UAAI;AAAA,cACzE,oBAAC,UAAK,WAAU,yBAAyB,iBAAM;AAAA;AAAA;AAAA,UAJ1C;AAAA,QAKP,CACD;AAAA;AAAA,IACH;AAAA,IAGF,oBAAC,kBAAe,QAAgB,SAAS,eAAe;AAAA,KAC1D;AAEJ;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/drop-countdown.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useState } from \"react\";\n\nfunction parts(totalSeconds: number) {\n const s = Math.max(0, totalSeconds);\n return {\n d: Math.floor(s / 86400),\n h: Math.floor((s % 86400) / 3600),\n m: Math.floor((s % 3600) / 60),\n s: Math.floor(s % 60),\n };\n}\n\n// Counts down to a unix-seconds target (phase start when upcoming, phase end when live).\nexport function DropCountdown({ targetTs, label }: { targetTs: number; label: string }) {\n const [now, setNow] = useState(() => Math.floor(Date.now() / 1000));\n\n useEffect(() => {\n const id = setInterval(() => setNow(Math.floor(Date.now() / 1000)), 1000);\n return () => clearInterval(id);\n }, []);\n\n const { d, h, m, s } = parts(targetTs - now);\n const cell = (value: number, unit: string) => (\n <div className=\"flex flex-col items-center\">\n <span className=\"text-2xl font-black tabular-nums leading-none\">{String(value).padStart(2, \"0\")}</span>\n <span className=\"text-[10px] uppercase tracking-widest text-muted-foreground mt-1\">{unit}</span>\n </div>\n );\n\n return (\n <div className=\"space-y-2\">\n <p className=\"text-xs font-semibold uppercase tracking-widest text-brand-orange\">{label}</p>\n <div className=\"flex items-center gap-3\">\n {d > 0 && (<>{cell(d, \"days\")}<span className=\"text-xl text-muted-foreground/40\">:</span></>)}\n {cell(h, \"hrs\")}\n <span className=\"text-xl text-muted-foreground/40\">:</span>\n {cell(m, \"min\")}\n <span className=\"text-xl text-muted-foreground/40\">:</span>\n {cell(s, \"sec\")}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAyBI;AAvBJ,mBAAoC;AAEpC,SAAS,MAAM,cAAsB;AACnC,QAAM,IAAI,KAAK,IAAI,GAAG,YAAY;AAClC,SAAO;AAAA,IACL,GAAG,KAAK,MAAM,IAAI,KAAK;AAAA,IACvB,GAAG,KAAK,MAAO,IAAI,QAAS,IAAI;AAAA,IAChC,GAAG,KAAK,MAAO,IAAI,OAAQ,EAAE;AAAA,IAC7B,GAAG,KAAK,MAAM,IAAI,EAAE;AAAA,EACtB;AACF;AAGO,SAAS,cAAc,EAAE,UAAU,MAAM,GAAwC;AACtF,QAAM,CAAC,KAAK,MAAM,QAAI,uBAAS,MAAM,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI,CAAC;AAElE,8BAAU,MAAM;AACd,UAAM,KAAK,YAAY,MAAM,OAAO,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI,CAAC,GAAG,GAAI;AACxE,WAAO,MAAM,cAAc,EAAE;AAAA,EAC/B,GAAG,CAAC,CAAC;AAEL,QAAM,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI,MAAM,WAAW,GAAG;AAC3C,QAAM,OAAO,CAAC,OAAe,SAC3B,6CAAC,SAAI,WAAU,8BACb;AAAA,gDAAC,UAAK,WAAU,iDAAiD,iBAAO,KAAK,EAAE,SAAS,GAAG,GAAG,GAAE;AAAA,IAChG,4CAAC,UAAK,WAAU,oEAAoE,gBAAK;AAAA,KAC3F;AAGF,SACE,6CAAC,SAAI,WAAU,aACb;AAAA,gDAAC,OAAE,WAAU,qEAAqE,iBAAM;AAAA,IACxF,6CAAC,SAAI,WAAU,2BACZ;AAAA,UAAI,KAAM,4EAAG;AAAA,aAAK,GAAG,MAAM;AAAA,QAAE,4CAAC,UAAK,WAAU,oCAAmC,eAAC;AAAA,SAAO;AAAA,MACxF,KAAK,GAAG,KAAK;AAAA,MACd,4CAAC,UAAK,WAAU,oCAAmC,eAAC;AAAA,MACnD,KAAK,GAAG,KAAK;AAAA,MACd,4CAAC,UAAK,WAAU,oCAAmC,eAAC;AAAA,MACnD,KAAK,GAAG,KAAK;AAAA,OAChB;AAAA,KACF;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../src/components/drop-countdown.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useState } from \"react\";\n\nfunction parts(totalSeconds: number) {\n const s = Math.max(0, totalSeconds);\n return {\n d: Math.floor(s / 86400),\n h: Math.floor((s % 86400) / 3600),\n m: Math.floor((s % 3600) / 60),\n s: Math.floor(s % 60),\n };\n}\n\nexport function DropCountdown({ targetTs, label }: { targetTs: number; label: string }) {\n const [now, setNow] = useState(() => Math.floor(Date.now() / 1000));\n\n useEffect(() => {\n const id = setInterval(() => setNow(Math.floor(Date.now() / 1000)), 1000);\n return () => clearInterval(id);\n }, []);\n\n const { d, h, m, s } = parts(targetTs - now);\n const cell = (value: number, unit: string) => (\n <div className=\"flex flex-col items-center\">\n <span className=\"text-2xl font-black tabular-nums leading-none\">{String(value).padStart(2, \"0\")}</span>\n <span className=\"text-[10px] uppercase tracking-widest text-muted-foreground mt-1\">{unit}</span>\n </div>\n );\n\n return (\n <div className=\"space-y-2\">\n <p className=\"text-xs font-semibold uppercase tracking-widest text-brand-orange\">{label}</p>\n <div className=\"flex items-center gap-3\">\n {d > 0 && (<>{cell(d, \"days\")}<span className=\"text-xl text-muted-foreground/40\">:</span></>)}\n {cell(h, \"hrs\")}\n <span className=\"text-xl text-muted-foreground/40\">:</span>\n {cell(m, \"min\")}\n <span className=\"text-xl text-muted-foreground/40\">:</span>\n {cell(s, \"sec\")}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAwBI;AAtBJ,mBAAoC;AAEpC,SAAS,MAAM,cAAsB;AACnC,QAAM,IAAI,KAAK,IAAI,GAAG,YAAY;AAClC,SAAO;AAAA,IACL,GAAG,KAAK,MAAM,IAAI,KAAK;AAAA,IACvB,GAAG,KAAK,MAAO,IAAI,QAAS,IAAI;AAAA,IAChC,GAAG,KAAK,MAAO,IAAI,OAAQ,EAAE;AAAA,IAC7B,GAAG,KAAK,MAAM,IAAI,EAAE;AAAA,EACtB;AACF;AAEO,SAAS,cAAc,EAAE,UAAU,MAAM,GAAwC;AACtF,QAAM,CAAC,KAAK,MAAM,QAAI,uBAAS,MAAM,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI,CAAC;AAElE,8BAAU,MAAM;AACd,UAAM,KAAK,YAAY,MAAM,OAAO,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI,CAAC,GAAG,GAAI;AACxE,WAAO,MAAM,cAAc,EAAE;AAAA,EAC/B,GAAG,CAAC,CAAC;AAEL,QAAM,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI,MAAM,WAAW,GAAG;AAC3C,QAAM,OAAO,CAAC,OAAe,SAC3B,6CAAC,SAAI,WAAU,8BACb;AAAA,gDAAC,UAAK,WAAU,iDAAiD,iBAAO,KAAK,EAAE,SAAS,GAAG,GAAG,GAAE;AAAA,IAChG,4CAAC,UAAK,WAAU,oEAAoE,gBAAK;AAAA,KAC3F;AAGF,SACE,6CAAC,SAAI,WAAU,aACb;AAAA,gDAAC,OAAE,WAAU,qEAAqE,iBAAM;AAAA,IACxF,6CAAC,SAAI,WAAU,2BACZ;AAAA,UAAI,KAAM,4EAAG;AAAA,aAAK,GAAG,MAAM;AAAA,QAAE,4CAAC,UAAK,WAAU,oCAAmC,eAAC;AAAA,SAAO;AAAA,MACxF,KAAK,GAAG,KAAK;AAAA,MACd,4CAAC,UAAK,WAAU,oCAAmC,eAAC;AAAA,MACnD,KAAK,GAAG,KAAK;AAAA,MACd,4CAAC,UAAK,WAAU,oCAAmC,eAAC;AAAA,MACnD,KAAK,GAAG,KAAK;AAAA,OAChB;AAAA,KACF;AAEJ;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/drop-countdown.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useState } from \"react\";\n\nfunction parts(totalSeconds: number) {\n const s = Math.max(0, totalSeconds);\n return {\n d: Math.floor(s / 86400),\n h: Math.floor((s % 86400) / 3600),\n m: Math.floor((s % 3600) / 60),\n s: Math.floor(s % 60),\n };\n}\n\n// Counts down to a unix-seconds target (phase start when upcoming, phase end when live).\nexport function DropCountdown({ targetTs, label }: { targetTs: number; label: string }) {\n const [now, setNow] = useState(() => Math.floor(Date.now() / 1000));\n\n useEffect(() => {\n const id = setInterval(() => setNow(Math.floor(Date.now() / 1000)), 1000);\n return () => clearInterval(id);\n }, []);\n\n const { d, h, m, s } = parts(targetTs - now);\n const cell = (value: number, unit: string) => (\n <div className=\"flex flex-col items-center\">\n <span className=\"text-2xl font-black tabular-nums leading-none\">{String(value).padStart(2, \"0\")}</span>\n <span className=\"text-[10px] uppercase tracking-widest text-muted-foreground mt-1\">{unit}</span>\n </div>\n );\n\n return (\n <div className=\"space-y-2\">\n <p className=\"text-xs font-semibold uppercase tracking-widest text-brand-orange\">{label}</p>\n <div className=\"flex items-center gap-3\">\n {d > 0 && (<>{cell(d, \"days\")}<span className=\"text-xl text-muted-foreground/40\">:</span></>)}\n {cell(h, \"hrs\")}\n <span className=\"text-xl text-muted-foreground/40\">:</span>\n {cell(m, \"min\")}\n <span className=\"text-xl text-muted-foreground/40\">:</span>\n {cell(s, \"sec\")}\n </div>\n </div>\n );\n}\n"],"mappings":";AAyBI,SAUe,UATb,KADF;AAvBJ,SAAS,WAAW,gBAAgB;AAEpC,SAAS,MAAM,cAAsB;AACnC,QAAM,IAAI,KAAK,IAAI,GAAG,YAAY;AAClC,SAAO;AAAA,IACL,GAAG,KAAK,MAAM,IAAI,KAAK;AAAA,IACvB,GAAG,KAAK,MAAO,IAAI,QAAS,IAAI;AAAA,IAChC,GAAG,KAAK,MAAO,IAAI,OAAQ,EAAE;AAAA,IAC7B,GAAG,KAAK,MAAM,IAAI,EAAE;AAAA,EACtB;AACF;AAGO,SAAS,cAAc,EAAE,UAAU,MAAM,GAAwC;AACtF,QAAM,CAAC,KAAK,MAAM,IAAI,SAAS,MAAM,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI,CAAC;AAElE,YAAU,MAAM;AACd,UAAM,KAAK,YAAY,MAAM,OAAO,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI,CAAC,GAAG,GAAI;AACxE,WAAO,MAAM,cAAc,EAAE;AAAA,EAC/B,GAAG,CAAC,CAAC;AAEL,QAAM,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI,MAAM,WAAW,GAAG;AAC3C,QAAM,OAAO,CAAC,OAAe,SAC3B,qBAAC,SAAI,WAAU,8BACb;AAAA,wBAAC,UAAK,WAAU,iDAAiD,iBAAO,KAAK,EAAE,SAAS,GAAG,GAAG,GAAE;AAAA,IAChG,oBAAC,UAAK,WAAU,oEAAoE,gBAAK;AAAA,KAC3F;AAGF,SACE,qBAAC,SAAI,WAAU,aACb;AAAA,wBAAC,OAAE,WAAU,qEAAqE,iBAAM;AAAA,IACxF,qBAAC,SAAI,WAAU,2BACZ;AAAA,UAAI,KAAM,iCAAG;AAAA,aAAK,GAAG,MAAM;AAAA,QAAE,oBAAC,UAAK,WAAU,oCAAmC,eAAC;AAAA,SAAO;AAAA,MACxF,KAAK,GAAG,KAAK;AAAA,MACd,oBAAC,UAAK,WAAU,oCAAmC,eAAC;AAAA,MACnD,KAAK,GAAG,KAAK;AAAA,MACd,oBAAC,UAAK,WAAU,oCAAmC,eAAC;AAAA,MACnD,KAAK,GAAG,KAAK;AAAA,OAChB;AAAA,KACF;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../src/components/drop-countdown.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useState } from \"react\";\n\nfunction parts(totalSeconds: number) {\n const s = Math.max(0, totalSeconds);\n return {\n d: Math.floor(s / 86400),\n h: Math.floor((s % 86400) / 3600),\n m: Math.floor((s % 3600) / 60),\n s: Math.floor(s % 60),\n };\n}\n\nexport function DropCountdown({ targetTs, label }: { targetTs: number; label: string }) {\n const [now, setNow] = useState(() => Math.floor(Date.now() / 1000));\n\n useEffect(() => {\n const id = setInterval(() => setNow(Math.floor(Date.now() / 1000)), 1000);\n return () => clearInterval(id);\n }, []);\n\n const { d, h, m, s } = parts(targetTs - now);\n const cell = (value: number, unit: string) => (\n <div className=\"flex flex-col items-center\">\n <span className=\"text-2xl font-black tabular-nums leading-none\">{String(value).padStart(2, \"0\")}</span>\n <span className=\"text-[10px] uppercase tracking-widest text-muted-foreground mt-1\">{unit}</span>\n </div>\n );\n\n return (\n <div className=\"space-y-2\">\n <p className=\"text-xs font-semibold uppercase tracking-widest text-brand-orange\">{label}</p>\n <div className=\"flex items-center gap-3\">\n {d > 0 && (<>{cell(d, \"days\")}<span className=\"text-xl text-muted-foreground/40\">:</span></>)}\n {cell(h, \"hrs\")}\n <span className=\"text-xl text-muted-foreground/40\">:</span>\n {cell(m, \"min\")}\n <span className=\"text-xl text-muted-foreground/40\">:</span>\n {cell(s, \"sec\")}\n </div>\n </div>\n );\n}\n"],"mappings":";AAwBI,SAUe,UATb,KADF;AAtBJ,SAAS,WAAW,gBAAgB;AAEpC,SAAS,MAAM,cAAsB;AACnC,QAAM,IAAI,KAAK,IAAI,GAAG,YAAY;AAClC,SAAO;AAAA,IACL,GAAG,KAAK,MAAM,IAAI,KAAK;AAAA,IACvB,GAAG,KAAK,MAAO,IAAI,QAAS,IAAI;AAAA,IAChC,GAAG,KAAK,MAAO,IAAI,OAAQ,EAAE;AAAA,IAC7B,GAAG,KAAK,MAAM,IAAI,EAAE;AAAA,EACtB;AACF;AAEO,SAAS,cAAc,EAAE,UAAU,MAAM,GAAwC;AACtF,QAAM,CAAC,KAAK,MAAM,IAAI,SAAS,MAAM,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI,CAAC;AAElE,YAAU,MAAM;AACd,UAAM,KAAK,YAAY,MAAM,OAAO,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI,CAAC,GAAG,GAAI;AACxE,WAAO,MAAM,cAAc,EAAE;AAAA,EAC/B,GAAG,CAAC,CAAC;AAEL,QAAM,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI,MAAM,WAAW,GAAG;AAC3C,QAAM,OAAO,CAAC,OAAe,SAC3B,qBAAC,SAAI,WAAU,8BACb;AAAA,wBAAC,UAAK,WAAU,iDAAiD,iBAAO,KAAK,EAAE,SAAS,GAAG,GAAG,GAAE;AAAA,IAChG,oBAAC,UAAK,WAAU,oEAAoE,gBAAK;AAAA,KAC3F;AAGF,SACE,qBAAC,SAAI,WAAU,aACb;AAAA,wBAAC,OAAE,WAAU,qEAAqE,iBAAM;AAAA,IACxF,qBAAC,SAAI,WAAU,2BACZ;AAAA,UAAI,KAAM,iCAAG;AAAA,aAAK,GAAG,MAAM;AAAA,QAAE,oBAAC,UAAK,WAAU,oCAAmC,eAAC;AAAA,SAAO;AAAA,MACxF,KAAK,GAAG,KAAK;AAAA,MACd,oBAAC,UAAK,WAAU,oCAAmC,eAAC;AAAA,MACnD,KAAK,GAAG,KAAK;AAAA,MACd,oBAAC,UAAK,WAAU,oCAAmC,eAAC;AAAA,MACnD,KAAK,GAAG,KAAK;AAAA,OAChB;AAAA,KACF;AAEJ;","names":[]}
@@ -50,12 +50,9 @@ function FiatChip({ size }) {
50
50
  function stripDollarSign(usdValue) {
51
51
  return usdValue.replace("$", "");
52
52
  }
53
- const DISPLAY_FACE = "font-[family-name:var(--font-display)] font-extrabold tracking-tight tabular-nums";
53
+ const DISPLAY_FACE = "font-extrabold tracking-tight tabular-nums";
54
54
  const DUAL_PRICE_SCALES = {
55
- /** Full-width hero contexts: AssetMarketplacePanel's main price. */
56
55
  hero: { amount: "text-3xl", chip: 18, stableChip: 14, divider: "h-7", showLabel: true },
57
- /** Card contexts: ListingCard's full variant — denser, the coin icon
58
- * already conveys the currency, a text label would be redundant. */
59
56
  card: { amount: "text-base", chip: 13, stableChip: 10, divider: "h-4", showLabel: false }
60
57
  };
61
58
  function PriceUnit({
@@ -125,10 +122,7 @@ function DualPrice({
125
122
  ] });
126
123
  }
127
124
  const CHIP_TONES = {
128
- /** Full-bleed image overlays (AssetCard) — fixed dark glass, guaranteed
129
- * readable regardless of the artwork or the viewer's theme. */
130
125
  "overlay-dark": { dot: "text-white/30", text: "text-white/65" },
131
- /** Theme-aware card backgrounds (TokenCard). */
132
126
  card: { dot: "text-muted-foreground/50", text: "text-muted-foreground" }
133
127
  };
134
128
  function PriceChipContent({
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/dual-price.tsx"],"sourcesContent":["\"use client\";\n\nimport type { ReactNode } from \"react\";\nimport { CurrencyIcon } from \"./currency-icon.js\";\nimport { formatDisplayPrice, isStableCurrency } from \"../utils/format.js\";\n\n/** Currency icon in the soft circular chip used throughout the wallet UI —\n * reads as a coin, not a stray glyph floating next to text. */\nexport function CoinChip({ symbol, size }: { symbol: string | null | undefined; size: number }) {\n return (\n <span\n className=\"grid shrink-0 place-items-center rounded-full bg-foreground/[0.06]\"\n style={{ width: size + 10, height: size + 10 }}\n >\n <CurrencyIcon symbol={symbol ?? \"\"} size={size} />\n </span>\n );\n}\n\n/** Same circular chip as CoinChip, for fiat. Sized 1:1 with the crypto\n * icon (fontSize === size, not a fraction of it) so the \"$\" reads with\n * the same visual weight as the coin icon sitting next to it — a smaller,\n * thinner glyph in an identically-sized circle looked like an afterthought\n * next to a solid icon, even though the circles measured the same. */\nfunction FiatChip({ size }: { size: number }) {\n return (\n <span\n className=\"grid shrink-0 place-items-center rounded-full bg-foreground/[0.06] font-extrabold leading-none text-foreground/80\"\n style={{ width: size + 10, height: size + 10, fontSize: size }}\n >\n $\n </span>\n );\n}\n\n/** usdValue arrives pre-formatted (\"$13.14\", \"<$0.01\") — the chip already\n * carries the \"$\", so strip it from the number to avoid showing it twice. */\nfunction stripDollarSign(usdValue: string): string {\n return usdValue.replace(\"$\", \"\");\n}\n\nconst DISPLAY_FACE = \"font-[family-name:var(--font-display)] font-extrabold tracking-tight tabular-nums\";\n\nconst DUAL_PRICE_SCALES = {\n /** Full-width hero contexts: AssetMarketplacePanel's main price. */\n hero: { amount: \"text-3xl\", chip: 18, stableChip: 14, divider: \"h-7\", showLabel: true },\n /** Card contexts: ListingCard's full variant — denser, the coin icon\n * already conveys the currency, a text label would be redundant. */\n card: { amount: \"text-base\", chip: 13, stableChip: 10, divider: \"h-4\", showLabel: false },\n} as const;\n\n/**\n * One currency's [chip] [amount] [optional code label] unit. Fiat and\n * crypto both render through this exact function — the previous version\n * had two separately-hand-coded branches (one baseline-aligned, one\n * center-aligned; one full-opacity, one dimmed) that drifted out of sync\n * with each other. Routing both through one function makes that class of\n * bug structurally impossible: there is only one place font, size,\n * opacity, and alignment for a price unit can be defined.\n */\nfunction PriceUnit({\n chip,\n amount,\n label,\n amountClassName,\n}: {\n chip: ReactNode;\n amount: string;\n label?: string;\n amountClassName: string;\n}) {\n return (\n <span className=\"inline-flex items-center gap-1.5\">\n {chip}\n <span className=\"flex items-baseline gap-1.5\">\n <span className={amountClassName}>{amount}</span>\n {label && <span className=\"text-sm font-semibold text-muted-foreground/70\">{label}</span>}\n </span>\n </span>\n );\n}\n\n/**\n * Equal-weight dual price: fiat and the on-chain currency shown as true\n * peers — same font, same size, same icon treatment, same label\n * alignment — not one dominant number with a secondary afterthought.\n * This platform's audience spans non-crypto newcomers who read fiat and\n * crypto-native buyers who read the token amount; neither should look\n * like the \"real\" price and the other a footnote. Falls back to\n * crypto-only when no USD rate is available. When the currency is itself\n * a USD-pegged stablecoin, the crypto side collapses to a chip + code\n * badge — showing \"13.14 USD\" beside \"13.14 USDC\" would just be the same\n * number twice.\n */\nexport function DualPrice({\n amountFormatted,\n currency,\n usdValue,\n scale,\n trailing,\n}: {\n amountFormatted: string | null | undefined;\n currency: string | null | undefined;\n usdValue?: string | null;\n scale: keyof typeof DUAL_PRICE_SCALES;\n trailing?: ReactNode;\n}) {\n if (!amountFormatted) return null;\n const s = DUAL_PRICE_SCALES[scale];\n const cryptoDisplay = formatDisplayPrice(amountFormatted);\n const amountClass = `${DISPLAY_FACE} ${s.amount}`;\n\n if (!usdValue) {\n return (\n <div className=\"flex items-center gap-2.5\">\n <PriceUnit\n chip={<CoinChip symbol={currency} size={s.chip} />}\n amount={cryptoDisplay}\n label={s.showLabel ? (currency ?? undefined) : undefined}\n amountClassName={amountClass}\n />\n {trailing && <span className=\"ml-0.5\">{trailing}</span>}\n </div>\n );\n }\n\n const stable = isStableCurrency(currency);\n return (\n <div className=\"flex items-center gap-2.5\">\n <PriceUnit\n chip={<FiatChip size={s.chip} />}\n amount={stripDollarSign(usdValue)}\n label={s.showLabel ? \"USD\" : undefined}\n amountClassName={amountClass}\n />\n {!stable && <span className={`${s.divider} w-px bg-border/60 shrink-0`} />}\n {stable ? (\n <span className=\"inline-flex items-center gap-1.5\">\n <CoinChip symbol={currency} size={s.stableChip} />\n <span className=\"text-sm font-semibold text-muted-foreground\">{currency}</span>\n </span>\n ) : (\n <PriceUnit\n chip={<CoinChip symbol={currency} size={s.chip} />}\n amount={cryptoDisplay}\n label={s.showLabel ? (currency ?? undefined) : undefined}\n amountClassName={amountClass}\n />\n )}\n {trailing && <span className=\"ml-0.5\">{trailing}</span>}\n </div>\n );\n}\n\nconst CHIP_TONES = {\n /** Full-bleed image overlays (AssetCard) — fixed dark glass, guaranteed\n * readable regardless of the artwork or the viewer's theme. */\n \"overlay-dark\": { dot: \"text-white/30\", text: \"text-white/65\" },\n /** Theme-aware card backgrounds (TokenCard). */\n card: { dot: \"text-muted-foreground/50\", text: \"text-muted-foreground\" },\n} as const;\n\n/**\n * Overlay/pill price content — fiat leads, crypto trails, middot-\n * separated; stablecoins collapse to fiat + symbol alone. Renders only the\n * inner fragment: callers own their own pill container (background, blur,\n * border, padding), which intentionally differs between hosts (see\n * `tone`) rather than being forced into one visual treatment. Smaller\n * scale than DualPrice (compact artwork overlay), so no fiat/crypto icon\n * chips here — the middot + dimmer trailing color is what marks the\n * crypto side as secondary in this tighter context.\n */\nexport function PriceChipContent({\n amountFormatted,\n currency,\n usdValue,\n tone,\n}: {\n amountFormatted: string | null | undefined;\n currency: string | null | undefined;\n usdValue?: string | null;\n tone: keyof typeof CHIP_TONES;\n}) {\n if (!amountFormatted) return null;\n const cryptoDisplay = formatDisplayPrice(amountFormatted);\n const stable = isStableCurrency(currency);\n\n if (!usdValue) {\n return (\n <>\n {currency && <CurrencyIcon symbol={currency} size={13} />}\n {cryptoDisplay}\n </>\n );\n }\n\n const t = CHIP_TONES[tone];\n return (\n <>\n {stripDollarSign(usdValue)}\n <span className={`font-semibold ${t.text}`}>USD</span>\n <span className={t.dot}>·</span>\n <span className={`inline-flex items-center gap-1 font-semibold ${t.text}`}>\n {currency && <CurrencyIcon symbol={currency} size={12} />}\n {stable ? currency : cryptoDisplay}\n </span>\n </>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAcM;AAXN,2BAA6B;AAC7B,oBAAqD;AAI9C,SAAS,SAAS,EAAE,QAAQ,KAAK,GAAwD;AAC9F,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAO,EAAE,OAAO,OAAO,IAAI,QAAQ,OAAO,GAAG;AAAA,MAE7C,sDAAC,qCAAa,QAAQ,UAAU,IAAI,MAAY;AAAA;AAAA,EAClD;AAEJ;AAOA,SAAS,SAAS,EAAE,KAAK,GAAqB;AAC5C,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAO,EAAE,OAAO,OAAO,IAAI,QAAQ,OAAO,IAAI,UAAU,KAAK;AAAA,MAC9D;AAAA;AAAA,EAED;AAEJ;AAIA,SAAS,gBAAgB,UAA0B;AACjD,SAAO,SAAS,QAAQ,KAAK,EAAE;AACjC;AAEA,MAAM,eAAe;AAErB,MAAM,oBAAoB;AAAA;AAAA,EAExB,MAAM,EAAE,QAAQ,YAAY,MAAM,IAAI,YAAY,IAAI,SAAS,OAAO,WAAW,KAAK;AAAA;AAAA;AAAA,EAGtF,MAAM,EAAE,QAAQ,aAAa,MAAM,IAAI,YAAY,IAAI,SAAS,OAAO,WAAW,MAAM;AAC1F;AAWA,SAAS,UAAU;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAKG;AACD,SACE,6CAAC,UAAK,WAAU,oCACb;AAAA;AAAA,IACD,6CAAC,UAAK,WAAU,+BACd;AAAA,kDAAC,UAAK,WAAW,iBAAkB,kBAAO;AAAA,MACzC,SAAS,4CAAC,UAAK,WAAU,kDAAkD,iBAAM;AAAA,OACpF;AAAA,KACF;AAEJ;AAcO,SAAS,UAAU;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMG;AACD,MAAI,CAAC,gBAAiB,QAAO;AAC7B,QAAM,IAAI,kBAAkB,KAAK;AACjC,QAAM,oBAAgB,kCAAmB,eAAe;AACxD,QAAM,cAAc,GAAG,YAAY,IAAI,EAAE,MAAM;AAE/C,MAAI,CAAC,UAAU;AACb,WACE,6CAAC,SAAI,WAAU,6BACb;AAAA;AAAA,QAAC;AAAA;AAAA,UACC,MAAM,4CAAC,YAAS,QAAQ,UAAU,MAAM,EAAE,MAAM;AAAA,UAChD,QAAQ;AAAA,UACR,OAAO,EAAE,YAAa,YAAY,SAAa;AAAA,UAC/C,iBAAiB;AAAA;AAAA,MACnB;AAAA,MACC,YAAY,4CAAC,UAAK,WAAU,UAAU,oBAAS;AAAA,OAClD;AAAA,EAEJ;AAEA,QAAM,aAAS,gCAAiB,QAAQ;AACxC,SACE,6CAAC,SAAI,WAAU,6BACb;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,MAAM,4CAAC,YAAS,MAAM,EAAE,MAAM;AAAA,QAC9B,QAAQ,gBAAgB,QAAQ;AAAA,QAChC,OAAO,EAAE,YAAY,QAAQ;AAAA,QAC7B,iBAAiB;AAAA;AAAA,IACnB;AAAA,IACC,CAAC,UAAU,4CAAC,UAAK,WAAW,GAAG,EAAE,OAAO,+BAA+B;AAAA,IACvE,SACC,6CAAC,UAAK,WAAU,oCACd;AAAA,kDAAC,YAAS,QAAQ,UAAU,MAAM,EAAE,YAAY;AAAA,MAChD,4CAAC,UAAK,WAAU,+CAA+C,oBAAS;AAAA,OAC1E,IAEA;AAAA,MAAC;AAAA;AAAA,QACC,MAAM,4CAAC,YAAS,QAAQ,UAAU,MAAM,EAAE,MAAM;AAAA,QAChD,QAAQ;AAAA,QACR,OAAO,EAAE,YAAa,YAAY,SAAa;AAAA,QAC/C,iBAAiB;AAAA;AAAA,IACnB;AAAA,IAED,YAAY,4CAAC,UAAK,WAAU,UAAU,oBAAS;AAAA,KAClD;AAEJ;AAEA,MAAM,aAAa;AAAA;AAAA;AAAA,EAGjB,gBAAgB,EAAE,KAAK,iBAAiB,MAAM,gBAAgB;AAAA;AAAA,EAE9D,MAAM,EAAE,KAAK,4BAA4B,MAAM,wBAAwB;AACzE;AAYO,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAKG;AACD,MAAI,CAAC,gBAAiB,QAAO;AAC7B,QAAM,oBAAgB,kCAAmB,eAAe;AACxD,QAAM,aAAS,gCAAiB,QAAQ;AAExC,MAAI,CAAC,UAAU;AACb,WACE,4EACG;AAAA,kBAAY,4CAAC,qCAAa,QAAQ,UAAU,MAAM,IAAI;AAAA,MACtD;AAAA,OACH;AAAA,EAEJ;AAEA,QAAM,IAAI,WAAW,IAAI;AACzB,SACE,4EACG;AAAA,oBAAgB,QAAQ;AAAA,IACzB,4CAAC,UAAK,WAAW,iBAAiB,EAAE,IAAI,IAAI,iBAAG;AAAA,IAC/C,4CAAC,UAAK,WAAW,EAAE,KAAK,kBAAC;AAAA,IACzB,6CAAC,UAAK,WAAW,gDAAgD,EAAE,IAAI,IACpE;AAAA,kBAAY,4CAAC,qCAAa,QAAQ,UAAU,MAAM,IAAI;AAAA,MACtD,SAAS,WAAW;AAAA,OACvB;AAAA,KACF;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../src/components/dual-price.tsx"],"sourcesContent":["\"use client\";\n\nimport type { ReactNode } from \"react\";\nimport { CurrencyIcon } from \"./currency-icon.js\";\nimport { formatDisplayPrice, isStableCurrency } from \"../utils/format.js\";\n\nexport function CoinChip({ symbol, size }: { symbol: string | null | undefined; size: number }) {\n return (\n <span\n className=\"grid shrink-0 place-items-center rounded-full bg-foreground/[0.06]\"\n style={{ width: size + 10, height: size + 10 }}\n >\n <CurrencyIcon symbol={symbol ?? \"\"} size={size} />\n </span>\n );\n}\n\nfunction FiatChip({ size }: { size: number }) {\n return (\n <span\n className=\"grid shrink-0 place-items-center rounded-full bg-foreground/[0.06] font-extrabold leading-none text-foreground/80\"\n style={{ width: size + 10, height: size + 10, fontSize: size }}\n >\n $\n </span>\n );\n}\n\nfunction stripDollarSign(usdValue: string): string {\n return usdValue.replace(\"$\", \"\");\n}\n\nconst DISPLAY_FACE = \"font-extrabold tracking-tight tabular-nums\";\n\nconst DUAL_PRICE_SCALES = {\n\n hero: { amount: \"text-3xl\", chip: 18, stableChip: 14, divider: \"h-7\", showLabel: true },\n\n card: { amount: \"text-base\", chip: 13, stableChip: 10, divider: \"h-4\", showLabel: false },\n} as const;\n\nfunction PriceUnit({\n chip,\n amount,\n label,\n amountClassName,\n}: {\n chip: ReactNode;\n amount: string;\n label?: string;\n amountClassName: string;\n}) {\n return (\n <span className=\"inline-flex items-center gap-1.5\">\n {chip}\n <span className=\"flex items-baseline gap-1.5\">\n <span className={amountClassName}>{amount}</span>\n {label && <span className=\"text-sm font-semibold text-muted-foreground/70\">{label}</span>}\n </span>\n </span>\n );\n}\n\nexport function DualPrice({\n amountFormatted,\n currency,\n usdValue,\n scale,\n trailing,\n}: {\n amountFormatted: string | null | undefined;\n currency: string | null | undefined;\n usdValue?: string | null;\n scale: keyof typeof DUAL_PRICE_SCALES;\n trailing?: ReactNode;\n}) {\n if (!amountFormatted) return null;\n const s = DUAL_PRICE_SCALES[scale];\n const cryptoDisplay = formatDisplayPrice(amountFormatted);\n const amountClass = `${DISPLAY_FACE} ${s.amount}`;\n\n if (!usdValue) {\n return (\n <div className=\"flex items-center gap-2.5\">\n <PriceUnit\n chip={<CoinChip symbol={currency} size={s.chip} />}\n amount={cryptoDisplay}\n label={s.showLabel ? (currency ?? undefined) : undefined}\n amountClassName={amountClass}\n />\n {trailing && <span className=\"ml-0.5\">{trailing}</span>}\n </div>\n );\n }\n\n const stable = isStableCurrency(currency);\n return (\n <div className=\"flex items-center gap-2.5\">\n <PriceUnit\n chip={<FiatChip size={s.chip} />}\n amount={stripDollarSign(usdValue)}\n label={s.showLabel ? \"USD\" : undefined}\n amountClassName={amountClass}\n />\n {!stable && <span className={`${s.divider} w-px bg-border/60 shrink-0`} />}\n {stable ? (\n <span className=\"inline-flex items-center gap-1.5\">\n <CoinChip symbol={currency} size={s.stableChip} />\n <span className=\"text-sm font-semibold text-muted-foreground\">{currency}</span>\n </span>\n ) : (\n <PriceUnit\n chip={<CoinChip symbol={currency} size={s.chip} />}\n amount={cryptoDisplay}\n label={s.showLabel ? (currency ?? undefined) : undefined}\n amountClassName={amountClass}\n />\n )}\n {trailing && <span className=\"ml-0.5\">{trailing}</span>}\n </div>\n );\n}\n\nconst CHIP_TONES = {\n\n \"overlay-dark\": { dot: \"text-white/30\", text: \"text-white/65\" },\n\n card: { dot: \"text-muted-foreground/50\", text: \"text-muted-foreground\" },\n} as const;\n\nexport function PriceChipContent({\n amountFormatted,\n currency,\n usdValue,\n tone,\n}: {\n amountFormatted: string | null | undefined;\n currency: string | null | undefined;\n usdValue?: string | null;\n tone: keyof typeof CHIP_TONES;\n}) {\n if (!amountFormatted) return null;\n const cryptoDisplay = formatDisplayPrice(amountFormatted);\n const stable = isStableCurrency(currency);\n\n if (!usdValue) {\n return (\n <>\n {currency && <CurrencyIcon symbol={currency} size={13} />}\n {cryptoDisplay}\n </>\n );\n }\n\n const t = CHIP_TONES[tone];\n return (\n <>\n {stripDollarSign(usdValue)}\n <span className={`font-semibold ${t.text}`}>USD</span>\n <span className={t.dot}>·</span>\n <span className={`inline-flex items-center gap-1 font-semibold ${t.text}`}>\n {currency && <CurrencyIcon symbol={currency} size={12} />}\n {stable ? currency : cryptoDisplay}\n </span>\n </>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYM;AATN,2BAA6B;AAC7B,oBAAqD;AAE9C,SAAS,SAAS,EAAE,QAAQ,KAAK,GAAwD;AAC9F,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAO,EAAE,OAAO,OAAO,IAAI,QAAQ,OAAO,GAAG;AAAA,MAE7C,sDAAC,qCAAa,QAAQ,UAAU,IAAI,MAAY;AAAA;AAAA,EAClD;AAEJ;AAEA,SAAS,SAAS,EAAE,KAAK,GAAqB;AAC5C,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAO,EAAE,OAAO,OAAO,IAAI,QAAQ,OAAO,IAAI,UAAU,KAAK;AAAA,MAC9D;AAAA;AAAA,EAED;AAEJ;AAEA,SAAS,gBAAgB,UAA0B;AACjD,SAAO,SAAS,QAAQ,KAAK,EAAE;AACjC;AAEA,MAAM,eAAe;AAErB,MAAM,oBAAoB;AAAA,EAExB,MAAM,EAAE,QAAQ,YAAY,MAAM,IAAI,YAAY,IAAI,SAAS,OAAO,WAAW,KAAK;AAAA,EAEtF,MAAM,EAAE,QAAQ,aAAa,MAAM,IAAI,YAAY,IAAI,SAAS,OAAO,WAAW,MAAM;AAC1F;AAEA,SAAS,UAAU;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAKG;AACD,SACE,6CAAC,UAAK,WAAU,oCACb;AAAA;AAAA,IACD,6CAAC,UAAK,WAAU,+BACd;AAAA,kDAAC,UAAK,WAAW,iBAAkB,kBAAO;AAAA,MACzC,SAAS,4CAAC,UAAK,WAAU,kDAAkD,iBAAM;AAAA,OACpF;AAAA,KACF;AAEJ;AAEO,SAAS,UAAU;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMG;AACD,MAAI,CAAC,gBAAiB,QAAO;AAC7B,QAAM,IAAI,kBAAkB,KAAK;AACjC,QAAM,oBAAgB,kCAAmB,eAAe;AACxD,QAAM,cAAc,GAAG,YAAY,IAAI,EAAE,MAAM;AAE/C,MAAI,CAAC,UAAU;AACb,WACE,6CAAC,SAAI,WAAU,6BACb;AAAA;AAAA,QAAC;AAAA;AAAA,UACC,MAAM,4CAAC,YAAS,QAAQ,UAAU,MAAM,EAAE,MAAM;AAAA,UAChD,QAAQ;AAAA,UACR,OAAO,EAAE,YAAa,YAAY,SAAa;AAAA,UAC/C,iBAAiB;AAAA;AAAA,MACnB;AAAA,MACC,YAAY,4CAAC,UAAK,WAAU,UAAU,oBAAS;AAAA,OAClD;AAAA,EAEJ;AAEA,QAAM,aAAS,gCAAiB,QAAQ;AACxC,SACE,6CAAC,SAAI,WAAU,6BACb;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,MAAM,4CAAC,YAAS,MAAM,EAAE,MAAM;AAAA,QAC9B,QAAQ,gBAAgB,QAAQ;AAAA,QAChC,OAAO,EAAE,YAAY,QAAQ;AAAA,QAC7B,iBAAiB;AAAA;AAAA,IACnB;AAAA,IACC,CAAC,UAAU,4CAAC,UAAK,WAAW,GAAG,EAAE,OAAO,+BAA+B;AAAA,IACvE,SACC,6CAAC,UAAK,WAAU,oCACd;AAAA,kDAAC,YAAS,QAAQ,UAAU,MAAM,EAAE,YAAY;AAAA,MAChD,4CAAC,UAAK,WAAU,+CAA+C,oBAAS;AAAA,OAC1E,IAEA;AAAA,MAAC;AAAA;AAAA,QACC,MAAM,4CAAC,YAAS,QAAQ,UAAU,MAAM,EAAE,MAAM;AAAA,QAChD,QAAQ;AAAA,QACR,OAAO,EAAE,YAAa,YAAY,SAAa;AAAA,QAC/C,iBAAiB;AAAA;AAAA,IACnB;AAAA,IAED,YAAY,4CAAC,UAAK,WAAU,UAAU,oBAAS;AAAA,KAClD;AAEJ;AAEA,MAAM,aAAa;AAAA,EAEjB,gBAAgB,EAAE,KAAK,iBAAiB,MAAM,gBAAgB;AAAA,EAE9D,MAAM,EAAE,KAAK,4BAA4B,MAAM,wBAAwB;AACzE;AAEO,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAKG;AACD,MAAI,CAAC,gBAAiB,QAAO;AAC7B,QAAM,oBAAgB,kCAAmB,eAAe;AACxD,QAAM,aAAS,gCAAiB,QAAQ;AAExC,MAAI,CAAC,UAAU;AACb,WACE,4EACG;AAAA,kBAAY,4CAAC,qCAAa,QAAQ,UAAU,MAAM,IAAI;AAAA,MACtD;AAAA,OACH;AAAA,EAEJ;AAEA,QAAM,IAAI,WAAW,IAAI;AACzB,SACE,4EACG;AAAA,oBAAgB,QAAQ;AAAA,IACzB,4CAAC,UAAK,WAAW,iBAAiB,EAAE,IAAI,IAAI,iBAAG;AAAA,IAC/C,4CAAC,UAAK,WAAW,EAAE,KAAK,kBAAC;AAAA,IACzB,6CAAC,UAAK,WAAW,gDAAgD,EAAE,IAAI,IACpE;AAAA,kBAAY,4CAAC,qCAAa,QAAQ,UAAU,MAAM,IAAI;AAAA,MACtD,SAAS,WAAW;AAAA,OACvB;AAAA,KACF;AAEJ;","names":[]}
@@ -1,14 +1,11 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { ReactNode } from 'react';
3
3
 
4
- /** Currency icon in the soft circular chip used throughout the wallet UI —
5
- * reads as a coin, not a stray glyph floating next to text. */
6
4
  declare function CoinChip({ symbol, size }: {
7
5
  symbol: string | null | undefined;
8
6
  size: number;
9
7
  }): react_jsx_runtime.JSX.Element;
10
8
  declare const DUAL_PRICE_SCALES: {
11
- /** Full-width hero contexts: AssetMarketplacePanel's main price. */
12
9
  readonly hero: {
13
10
  readonly amount: "text-3xl";
14
11
  readonly chip: 18;
@@ -16,8 +13,6 @@ declare const DUAL_PRICE_SCALES: {
16
13
  readonly divider: "h-7";
17
14
  readonly showLabel: true;
18
15
  };
19
- /** Card contexts: ListingCard's full variant — denser, the coin icon
20
- * already conveys the currency, a text label would be redundant. */
21
16
  readonly card: {
22
17
  readonly amount: "text-base";
23
18
  readonly chip: 13;
@@ -26,18 +21,6 @@ declare const DUAL_PRICE_SCALES: {
26
21
  readonly showLabel: false;
27
22
  };
28
23
  };
29
- /**
30
- * Equal-weight dual price: fiat and the on-chain currency shown as true
31
- * peers — same font, same size, same icon treatment, same label
32
- * alignment — not one dominant number with a secondary afterthought.
33
- * This platform's audience spans non-crypto newcomers who read fiat and
34
- * crypto-native buyers who read the token amount; neither should look
35
- * like the "real" price and the other a footnote. Falls back to
36
- * crypto-only when no USD rate is available. When the currency is itself
37
- * a USD-pegged stablecoin, the crypto side collapses to a chip + code
38
- * badge — showing "13.14 USD" beside "13.14 USDC" would just be the same
39
- * number twice.
40
- */
41
24
  declare function DualPrice({ amountFormatted, currency, usdValue, scale, trailing, }: {
42
25
  amountFormatted: string | null | undefined;
43
26
  currency: string | null | undefined;
@@ -46,28 +29,15 @@ declare function DualPrice({ amountFormatted, currency, usdValue, scale, trailin
46
29
  trailing?: ReactNode;
47
30
  }): react_jsx_runtime.JSX.Element | null;
48
31
  declare const CHIP_TONES: {
49
- /** Full-bleed image overlays (AssetCard) — fixed dark glass, guaranteed
50
- * readable regardless of the artwork or the viewer's theme. */
51
32
  readonly "overlay-dark": {
52
33
  readonly dot: "text-white/30";
53
34
  readonly text: "text-white/65";
54
35
  };
55
- /** Theme-aware card backgrounds (TokenCard). */
56
36
  readonly card: {
57
37
  readonly dot: "text-muted-foreground/50";
58
38
  readonly text: "text-muted-foreground";
59
39
  };
60
40
  };
61
- /**
62
- * Overlay/pill price content — fiat leads, crypto trails, middot-
63
- * separated; stablecoins collapse to fiat + symbol alone. Renders only the
64
- * inner fragment: callers own their own pill container (background, blur,
65
- * border, padding), which intentionally differs between hosts (see
66
- * `tone`) rather than being forced into one visual treatment. Smaller
67
- * scale than DualPrice (compact artwork overlay), so no fiat/crypto icon
68
- * chips here — the middot + dimmer trailing color is what marks the
69
- * crypto side as secondary in this tighter context.
70
- */
71
41
  declare function PriceChipContent({ amountFormatted, currency, usdValue, tone, }: {
72
42
  amountFormatted: string | null | undefined;
73
43
  currency: string | null | undefined;