@medialane/ui 0.120.0 → 0.122.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/action-button.cjs.map +1 -1
- package/dist/components/action-button.d.cts +0 -9
- package/dist/components/action-button.d.ts +0 -9
- package/dist/components/action-button.js.map +1 -1
- package/dist/components/action-dialog.cjs.map +1 -1
- package/dist/components/action-dialog.d.cts +0 -1
- package/dist/components/action-dialog.d.ts +0 -1
- package/dist/components/action-dialog.js.map +1 -1
- package/dist/components/activity-card.cjs.map +1 -1
- package/dist/components/activity-card.d.cts +0 -3
- package/dist/components/activity-card.d.ts +0 -3
- package/dist/components/activity-card.js.map +1 -1
- package/dist/components/activity-row.cjs.map +1 -1
- package/dist/components/activity-row.d.cts +0 -1
- package/dist/components/activity-row.d.ts +0 -1
- package/dist/components/activity-row.js.map +1 -1
- package/dist/components/activity-ticker.cjs.map +1 -1
- package/dist/components/activity-ticker.d.cts +0 -1
- package/dist/components/activity-ticker.d.ts +0 -1
- package/dist/components/activity-ticker.js.map +1 -1
- package/dist/components/address-display.cjs.map +1 -1
- package/dist/components/address-display.d.cts +0 -1
- package/dist/components/address-display.d.ts +0 -1
- package/dist/components/address-display.js.map +1 -1
- package/dist/components/animated-token-media.cjs.map +1 -1
- package/dist/components/animated-token-media.d.cts +0 -10
- package/dist/components/animated-token-media.d.ts +0 -10
- package/dist/components/animated-token-media.js.map +1 -1
- package/dist/components/asset-card.cjs.map +1 -1
- package/dist/components/asset-card.d.cts +0 -29
- package/dist/components/asset-card.d.ts +0 -29
- package/dist/components/asset-card.js.map +1 -1
- package/dist/components/asset-collection-bar.cjs.map +1 -1
- package/dist/components/asset-collection-bar.d.cts +0 -1
- package/dist/components/asset-collection-bar.d.ts +0 -1
- package/dist/components/asset-collection-bar.js.map +1 -1
- package/dist/components/asset-license-summary.cjs.map +1 -1
- package/dist/components/asset-license-summary.d.cts +0 -8
- package/dist/components/asset-license-summary.d.ts +0 -8
- package/dist/components/asset-license-summary.js.map +1 -1
- package/dist/components/asset-lightbox.cjs.map +1 -1
- package/dist/components/asset-lightbox.js.map +1 -1
- package/dist/components/asset-marketplace-panel.cjs.map +1 -1
- package/dist/components/asset-marketplace-panel.d.cts +0 -13
- package/dist/components/asset-marketplace-panel.d.ts +0 -13
- package/dist/components/asset-marketplace-panel.js.map +1 -1
- package/dist/components/asset-markets-tab.cjs.map +1 -1
- package/dist/components/asset-markets-tab.js.map +1 -1
- package/dist/components/asset-overview-content.cjs.map +1 -1
- package/dist/components/asset-overview-content.d.cts +0 -7
- package/dist/components/asset-overview-content.d.ts +0 -7
- package/dist/components/asset-overview-content.js.map +1 -1
- package/dist/components/asset-picker-cell.cjs.map +1 -1
- package/dist/components/asset-picker-cell.d.cts +0 -4
- package/dist/components/asset-picker-cell.d.ts +0 -4
- package/dist/components/asset-picker-cell.js.map +1 -1
- package/dist/components/asset-picker.cjs.map +1 -1
- package/dist/components/asset-picker.d.cts +0 -4
- package/dist/components/asset-picker.d.ts +0 -4
- package/dist/components/asset-picker.js.map +1 -1
- package/dist/components/asset-search-picker.cjs.map +1 -1
- package/dist/components/asset-search-picker.d.cts +0 -2
- package/dist/components/asset-search-picker.d.ts +0 -2
- package/dist/components/asset-search-picker.js.map +1 -1
- package/dist/components/asset-top-sections.cjs.map +1 -1
- package/dist/components/asset-top-sections.d.cts +0 -18
- package/dist/components/asset-top-sections.d.ts +0 -18
- package/dist/components/asset-top-sections.js.map +1 -1
- package/dist/components/asset-utility-icons.cjs.map +1 -1
- package/dist/components/asset-utility-icons.d.cts +0 -5
- package/dist/components/asset-utility-icons.d.ts +0 -5
- package/dist/components/asset-utility-icons.js.map +1 -1
- package/dist/components/claim-rail.cjs.map +1 -1
- package/dist/components/claim-rail.d.cts +0 -9
- package/dist/components/claim-rail.d.ts +0 -9
- package/dist/components/claim-rail.js.map +1 -1
- package/dist/components/club-owner-actions.cjs.map +1 -1
- package/dist/components/club-owner-actions.d.cts +0 -2
- package/dist/components/club-owner-actions.d.ts +0 -2
- package/dist/components/club-owner-actions.js.map +1 -1
- package/dist/components/coin-card.cjs.map +1 -1
- package/dist/components/coin-card.d.cts +0 -2
- package/dist/components/coin-card.d.ts +0 -2
- package/dist/components/coin-card.js.map +1 -1
- package/dist/components/coin-launch-preview.cjs.map +1 -1
- package/dist/components/coin-launch-preview.d.cts +0 -7
- package/dist/components/coin-launch-preview.d.ts +0 -7
- package/dist/components/coin-launch-preview.js.map +1 -1
- package/dist/components/coins-explorer.cjs.map +1 -1
- package/dist/components/coins-explorer.d.cts +0 -1
- package/dist/components/coins-explorer.d.ts +0 -1
- package/dist/components/coins-explorer.js.map +1 -1
- package/dist/components/collection-card.cjs.map +1 -1
- package/dist/components/collection-card.d.cts +0 -2
- package/dist/components/collection-card.d.ts +0 -2
- package/dist/components/collection-card.js.map +1 -1
- package/dist/components/collection-filters.cjs.map +1 -1
- package/dist/components/collection-filters.js.map +1 -1
- package/dist/components/collection-hero-banner.cjs.map +1 -1
- package/dist/components/collection-hero-banner.d.cts +0 -7
- package/dist/components/collection-hero-banner.d.ts +0 -7
- package/dist/components/collection-hero-banner.js.map +1 -1
- package/dist/components/collection-traits-tab.cjs.map +1 -1
- package/dist/components/collection-traits-tab.js.map +1 -1
- package/dist/components/community-rewards-section.cjs.map +1 -1
- package/dist/components/community-rewards-section.js.map +1 -1
- package/dist/components/create-form-primitives.cjs.map +1 -1
- package/dist/components/create-form-primitives.d.cts +0 -2
- package/dist/components/create-form-primitives.d.ts +0 -2
- package/dist/components/create-form-primitives.js.map +1 -1
- package/dist/components/creation-record.cjs.map +1 -1
- package/dist/components/creation-record.d.cts +0 -5
- package/dist/components/creation-record.d.ts +0 -5
- package/dist/components/creation-record.js.map +1 -1
- package/dist/components/creator-airdrop-banner.cjs.map +1 -1
- package/dist/components/creator-airdrop-banner.d.cts +0 -1
- package/dist/components/creator-airdrop-banner.d.ts +0 -1
- package/dist/components/creator-airdrop-banner.js.map +1 -1
- package/dist/components/creator-analytics.cjs.map +1 -1
- package/dist/components/creator-analytics.js.map +1 -1
- package/dist/components/creator-score-inline.cjs.map +1 -1
- package/dist/components/creator-score-inline.d.cts +0 -5
- package/dist/components/creator-score-inline.d.ts +0 -5
- package/dist/components/creator-score-inline.js.map +1 -1
- package/dist/components/cta-card-grid.cjs.map +1 -1
- package/dist/components/cta-card-grid.d.cts +0 -2
- package/dist/components/cta-card-grid.d.ts +0 -2
- package/dist/components/cta-card-grid.js.map +1 -1
- package/dist/components/currency-icon.cjs.map +1 -1
- package/dist/components/currency-icon.d.cts +0 -5
- package/dist/components/currency-icon.d.ts +0 -5
- package/dist/components/currency-icon.js.map +1 -1
- package/dist/components/discover-collections-strip.cjs.map +1 -1
- package/dist/components/discover-collections-strip.d.cts +0 -4
- package/dist/components/discover-collections-strip.d.ts +0 -4
- package/dist/components/discover-collections-strip.js.map +1 -1
- package/dist/components/discover-creators-strip.cjs.map +1 -1
- package/dist/components/discover-creators-strip.js.map +1 -1
- package/dist/components/discover-feed-section.cjs.map +1 -1
- package/dist/components/discover-feed-section.d.cts +0 -11
- package/dist/components/discover-feed-section.d.ts +0 -11
- package/dist/components/discover-feed-section.js.map +1 -1
- package/dist/components/discover-hero.cjs.map +1 -1
- package/dist/components/discover-hero.js.map +1 -1
- package/dist/components/drop-countdown.cjs.map +1 -1
- package/dist/components/drop-countdown.js.map +1 -1
- package/dist/components/dual-price.cjs +0 -6
- package/dist/components/dual-price.cjs.map +1 -1
- package/dist/components/dual-price.d.cts +0 -30
- package/dist/components/dual-price.d.ts +0 -30
- package/dist/components/dual-price.js +0 -6
- package/dist/components/dual-price.js.map +1 -1
- package/dist/components/empty-or-error.cjs.map +1 -1
- package/dist/components/empty-or-error.d.cts +0 -1
- package/dist/components/empty-or-error.d.ts +0 -1
- package/dist/components/empty-or-error.js.map +1 -1
- package/dist/components/gradient-button.cjs.map +1 -1
- package/dist/components/gradient-button.d.cts +0 -13
- package/dist/components/gradient-button.d.ts +0 -13
- package/dist/components/gradient-button.js.map +1 -1
- package/dist/components/help-icon.cjs.map +1 -1
- package/dist/components/help-icon.d.cts +0 -4
- package/dist/components/help-icon.d.ts +0 -4
- package/dist/components/help-icon.js.map +1 -1
- package/dist/components/hero-slider.cjs.map +1 -1
- package/dist/components/hero-slider.d.cts +0 -1
- package/dist/components/hero-slider.d.ts +0 -1
- package/dist/components/hero-slider.js.map +1 -1
- package/dist/components/ip-type-badge.cjs.map +1 -1
- package/dist/components/ip-type-badge.d.cts +0 -2
- package/dist/components/ip-type-badge.d.ts +0 -2
- package/dist/components/ip-type-badge.js.map +1 -1
- package/dist/components/ip-type-display.cjs.map +1 -1
- package/dist/components/ip-type-display.js.map +1 -1
- package/dist/components/ip-type-fields.cjs.map +1 -1
- package/dist/components/ip-type-fields.d.cts +0 -2
- package/dist/components/ip-type-fields.d.ts +0 -2
- package/dist/components/ip-type-fields.js.map +1 -1
- package/dist/components/launchpad-filter-bar.cjs.map +1 -1
- package/dist/components/launchpad-filter-bar.d.cts +0 -8
- package/dist/components/launchpad-filter-bar.d.ts +0 -8
- package/dist/components/launchpad-filter-bar.js.map +1 -1
- package/dist/components/launchpad-services.cjs +0 -1
- package/dist/components/launchpad-services.cjs.map +1 -1
- package/dist/components/launchpad-services.d.cts +0 -36
- package/dist/components/launchpad-services.d.ts +0 -36
- package/dist/components/launchpad-services.js +0 -1
- package/dist/components/launchpad-services.js.map +1 -1
- package/dist/components/launchpad-strip.cjs.map +1 -1
- package/dist/components/launchpad-strip.d.cts +0 -6
- package/dist/components/launchpad-strip.d.ts +0 -6
- package/dist/components/launchpad-strip.js.map +1 -1
- package/dist/components/license-terms-builder.cjs.map +1 -1
- package/dist/components/license-terms-builder.d.cts +0 -34
- package/dist/components/license-terms-builder.d.ts +0 -34
- package/dist/components/license-terms-builder.js.map +1 -1
- package/dist/components/listing-card.cjs.map +1 -1
- package/dist/components/listing-card.d.cts +0 -19
- package/dist/components/listing-card.d.ts +0 -19
- package/dist/components/listing-card.js.map +1 -1
- package/dist/components/load-more-sentinel.cjs.map +1 -1
- package/dist/components/load-more-sentinel.d.cts +0 -6
- package/dist/components/load-more-sentinel.d.ts +0 -6
- package/dist/components/load-more-sentinel.js.map +1 -1
- package/dist/components/medialane-collection-card.cjs +1 -4
- package/dist/components/medialane-collection-card.cjs.map +1 -1
- package/dist/components/medialane-collection-card.d.cts +0 -13
- package/dist/components/medialane-collection-card.d.ts +0 -13
- package/dist/components/medialane-collection-card.js +1 -4
- package/dist/components/medialane-collection-card.js.map +1 -1
- package/dist/components/motion-primitives.cjs.map +1 -1
- package/dist/components/motion-primitives.js.map +1 -1
- package/dist/components/nav-command-menu.cjs.map +1 -1
- package/dist/components/nav-command-menu.d.cts +0 -32
- package/dist/components/nav-command-menu.d.ts +0 -32
- package/dist/components/nav-command-menu.js.map +1 -1
- package/dist/components/nav-shell.cjs.map +1 -1
- package/dist/components/nav-shell.d.cts +0 -57
- package/dist/components/nav-shell.d.ts +0 -57
- package/dist/components/nav-shell.js.map +1 -1
- package/dist/components/nav-theme-toggle.cjs.map +1 -1
- package/dist/components/nav-theme-toggle.d.cts +0 -4
- package/dist/components/nav-theme-toggle.d.ts +0 -4
- package/dist/components/nav-theme-toggle.js.map +1 -1
- package/dist/components/order-sort-control.cjs.map +1 -1
- package/dist/components/order-sort-control.d.cts +0 -2
- package/dist/components/order-sort-control.d.ts +0 -2
- package/dist/components/order-sort-control.js.map +1 -1
- package/dist/components/page-container.cjs +0 -3
- package/dist/components/page-container.cjs.map +1 -1
- package/dist/components/page-container.d.cts +0 -6
- package/dist/components/page-container.d.ts +0 -6
- package/dist/components/page-container.js +0 -3
- package/dist/components/page-container.js.map +1 -1
- package/dist/components/parent-attribution-banner.cjs.map +1 -1
- package/dist/components/parent-attribution-banner.d.cts +0 -1
- package/dist/components/parent-attribution-banner.d.ts +0 -1
- package/dist/components/parent-attribution-banner.js.map +1 -1
- package/dist/components/portfolio-activity.cjs.map +1 -1
- package/dist/components/portfolio-activity.js.map +1 -1
- package/dist/components/portfolio-bento-tile.cjs +2 -1
- package/dist/components/portfolio-bento-tile.cjs.map +1 -1
- package/dist/components/portfolio-bento-tile.d.cts +6 -13
- package/dist/components/portfolio-bento-tile.d.ts +6 -13
- package/dist/components/portfolio-bento-tile.js +2 -1
- package/dist/components/portfolio-bento-tile.js.map +1 -1
- package/dist/components/portfolio-chip-filter.cjs.map +1 -1
- package/dist/components/portfolio-chip-filter.d.cts +0 -14
- package/dist/components/portfolio-chip-filter.d.ts +0 -14
- package/dist/components/portfolio-chip-filter.js.map +1 -1
- package/dist/components/portfolio-header.cjs.map +1 -1
- package/dist/components/portfolio-header.d.cts +0 -11
- package/dist/components/portfolio-header.d.ts +0 -11
- package/dist/components/portfolio-header.js.map +1 -1
- package/dist/components/portfolio-overview.cjs +7 -1
- package/dist/components/portfolio-overview.cjs.map +1 -1
- package/dist/components/portfolio-overview.d.cts +0 -18
- package/dist/components/portfolio-overview.d.ts +0 -18
- package/dist/components/portfolio-overview.js +7 -1
- package/dist/components/portfolio-overview.js.map +1 -1
- package/dist/components/price-history-chart.cjs.map +1 -1
- package/dist/components/price-history-chart.js.map +1 -1
- package/dist/components/rewards/badge-catalog.cjs.map +1 -1
- package/dist/components/rewards/badge-catalog.d.cts +0 -5
- package/dist/components/rewards/badge-catalog.d.ts +0 -5
- package/dist/components/rewards/badge-catalog.js.map +1 -1
- package/dist/components/rewards/badge-shelf.cjs.map +1 -1
- package/dist/components/rewards/badge-shelf.d.cts +0 -5
- package/dist/components/rewards/badge-shelf.d.ts +0 -5
- package/dist/components/rewards/badge-shelf.js.map +1 -1
- package/dist/components/rewards/badge-unlock-toast-content.cjs.map +1 -1
- package/dist/components/rewards/badge-unlock-toast-content.d.cts +0 -2
- package/dist/components/rewards/badge-unlock-toast-content.d.ts +0 -2
- package/dist/components/rewards/badge-unlock-toast-content.js.map +1 -1
- package/dist/components/rewards/journey-path.cjs.map +1 -1
- package/dist/components/rewards/journey-path.d.cts +0 -9
- package/dist/components/rewards/journey-path.d.ts +0 -9
- package/dist/components/rewards/journey-path.js.map +1 -1
- package/dist/components/rewards/leaderboard-table.cjs.map +1 -1
- package/dist/components/rewards/leaderboard-table.d.cts +0 -11
- package/dist/components/rewards/leaderboard-table.d.ts +0 -11
- package/dist/components/rewards/leaderboard-table.js.map +1 -1
- package/dist/components/rewards/level-badge.cjs.map +1 -1
- package/dist/components/rewards/level-badge.d.cts +0 -10
- package/dist/components/rewards/level-badge.d.ts +0 -10
- package/dist/components/rewards/level-badge.js.map +1 -1
- package/dist/components/rewards/level-journey-list.cjs.map +1 -1
- package/dist/components/rewards/level-journey-list.d.cts +0 -7
- package/dist/components/rewards/level-journey-list.d.ts +0 -7
- package/dist/components/rewards/level-journey-list.js.map +1 -1
- package/dist/components/rewards/level-up-celebration.cjs.map +1 -1
- package/dist/components/rewards/level-up-celebration.d.cts +0 -4
- package/dist/components/rewards/level-up-celebration.d.ts +0 -4
- package/dist/components/rewards/level-up-celebration.js.map +1 -1
- package/dist/components/rewards/reward-toast.cjs.map +1 -1
- package/dist/components/rewards/reward-toast.d.cts +0 -8
- package/dist/components/rewards/reward-toast.d.ts +0 -8
- package/dist/components/rewards/reward-toast.js.map +1 -1
- package/dist/components/rewards/score-summary-card.cjs.map +1 -1
- package/dist/components/rewards/score-summary-card.d.cts +0 -5
- package/dist/components/rewards/score-summary-card.d.ts +0 -5
- package/dist/components/rewards/score-summary-card.js.map +1 -1
- package/dist/components/rewards/use-rewards-celebrations.cjs.map +1 -1
- package/dist/components/rewards/use-rewards-celebrations.d.cts +0 -10
- package/dist/components/rewards/use-rewards-celebrations.d.ts +0 -10
- package/dist/components/rewards/use-rewards-celebrations.js.map +1 -1
- package/dist/components/rewards/xp-progress.cjs.map +1 -1
- package/dist/components/rewards/xp-progress.d.cts +0 -4
- package/dist/components/rewards/xp-progress.d.ts +0 -4
- package/dist/components/rewards/xp-progress.js.map +1 -1
- package/dist/components/rewards/xp-toast-content.cjs.map +1 -1
- package/dist/components/rewards/xp-toast-content.d.cts +0 -7
- package/dist/components/rewards/xp-toast-content.d.ts +0 -7
- package/dist/components/rewards/xp-toast-content.js.map +1 -1
- package/dist/components/scroll-section.cjs.map +1 -1
- package/dist/components/scroll-section.d.cts +0 -6
- package/dist/components/scroll-section.d.ts +0 -6
- package/dist/components/scroll-section.js.map +1 -1
- package/dist/components/service-form-shell.cjs.map +1 -1
- package/dist/components/service-form-shell.d.cts +0 -14
- package/dist/components/service-form-shell.d.ts +0 -14
- package/dist/components/service-form-shell.js.map +1 -1
- package/dist/components/service-header.cjs.map +1 -1
- package/dist/components/service-header.d.cts +0 -11
- package/dist/components/service-header.d.ts +0 -11
- package/dist/components/service-header.js.map +1 -1
- package/dist/components/share-button.cjs.map +1 -1
- package/dist/components/share-button.js.map +1 -1
- package/dist/components/stat-tile.cjs.map +1 -1
- package/dist/components/stat-tile.d.cts +0 -4
- package/dist/components/stat-tile.d.ts +0 -4
- package/dist/components/stat-tile.js.map +1 -1
- package/dist/components/step-nav.cjs.map +1 -1
- package/dist/components/step-nav.d.cts +0 -11
- package/dist/components/step-nav.d.ts +0 -11
- package/dist/components/step-nav.js.map +1 -1
- package/dist/components/theme-ambient-background.cjs.map +1 -1
- package/dist/components/theme-ambient-background.d.cts +0 -6
- package/dist/components/theme-ambient-background.d.ts +0 -6
- package/dist/components/theme-ambient-background.js.map +1 -1
- package/dist/components/token-card.cjs.map +1 -1
- package/dist/components/token-card.d.cts +0 -6
- package/dist/components/token-card.d.ts +0 -6
- package/dist/components/token-card.js.map +1 -1
- package/dist/components/token-glyph.cjs.map +1 -1
- package/dist/components/token-glyph.d.cts +0 -2
- package/dist/components/token-glyph.d.ts +0 -2
- package/dist/components/token-glyph.js.map +1 -1
- package/dist/data/brand.cjs.map +1 -1
- package/dist/data/brand.d.cts +0 -6
- package/dist/data/brand.d.ts +0 -6
- package/dist/data/brand.js.map +1 -1
- package/dist/data/coins.cjs.map +1 -1
- package/dist/data/coins.d.cts +0 -9
- package/dist/data/coins.d.ts +0 -9
- package/dist/data/coins.js.map +1 -1
- package/dist/data/ip-templates.cjs.map +1 -1
- package/dist/data/ip-templates.d.cts +0 -12
- package/dist/data/ip-templates.d.ts +0 -12
- package/dist/data/ip-templates.js.map +1 -1
- package/dist/data/ip-types.cjs.map +1 -1
- package/dist/data/ip-types.d.cts +0 -2
- package/dist/data/ip-types.d.ts +0 -2
- package/dist/data/ip-types.js.map +1 -1
- package/dist/data/ip.cjs.map +1 -1
- package/dist/data/ip.d.cts +0 -1
- package/dist/data/ip.d.ts +0 -1
- package/dist/data/ip.js.map +1 -1
- package/dist/data/launchpad-services.cjs +0 -10
- package/dist/data/launchpad-services.cjs.map +1 -1
- package/dist/data/launchpad-services.d.cts +0 -10
- package/dist/data/launchpad-services.d.ts +0 -10
- package/dist/data/launchpad-services.js +0 -10
- package/dist/data/launchpad-services.js.map +1 -1
- package/dist/data/living-render-collections.cjs +0 -2
- package/dist/data/living-render-collections.cjs.map +1 -1
- package/dist/data/living-render-collections.d.cts +0 -11
- package/dist/data/living-render-collections.d.ts +0 -11
- package/dist/data/living-render-collections.js +0 -2
- package/dist/data/living-render-collections.js.map +1 -1
- package/dist/data/notification.cjs.map +1 -1
- package/dist/data/notification.d.cts +0 -3
- package/dist/data/notification.d.ts +0 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/preset/tailwind.cjs +0 -9
- package/dist/preset/tailwind.cjs.map +1 -1
- package/dist/preset/tailwind.js +0 -9
- package/dist/preset/tailwind.js.map +1 -1
- package/dist/utils/address.cjs.map +1 -1
- package/dist/utils/address.d.cts +0 -4
- package/dist/utils/address.d.ts +0 -4
- package/dist/utils/address.js.map +1 -1
- package/dist/utils/api-fetch.cjs.map +1 -1
- package/dist/utils/api-fetch.d.cts +0 -21
- package/dist/utils/api-fetch.d.ts +0 -21
- package/dist/utils/api-fetch.js.map +1 -1
- package/dist/utils/format.cjs.map +1 -1
- package/dist/utils/format.d.cts +0 -11
- package/dist/utils/format.d.ts +0 -11
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/ipfs.cjs.map +1 -1
- package/dist/utils/ipfs.d.cts +0 -8
- package/dist/utils/ipfs.d.ts +0 -8
- package/dist/utils/ipfs.js.map +1 -1
- package/dist/utils/license-summary.cjs.map +1 -1
- package/dist/utils/license-summary.d.cts +0 -8
- package/dist/utils/license-summary.d.ts +0 -8
- package/dist/utils/license-summary.js.map +1 -1
- package/dist/utils/notification-storage.cjs.map +1 -1
- package/dist/utils/notification-storage.js.map +1 -1
- package/dist/utils/portfolio-counts.cjs.map +1 -1
- package/dist/utils/portfolio-counts.d.cts +0 -18
- package/dist/utils/portfolio-counts.d.ts +0 -18
- package/dist/utils/portfolio-counts.js.map +1 -1
- package/dist/utils/proxy-body.cjs.map +1 -1
- package/dist/utils/proxy-body.d.cts +0 -11
- package/dist/utils/proxy-body.d.ts +0 -11
- package/dist/utils/proxy-body.js.map +1 -1
- package/dist/utils/time.cjs.map +1 -1
- package/dist/utils/time.d.cts +0 -5
- package/dist/utils/time.d.ts +0 -5
- package/dist/utils/time.js.map +1 -1
- package/dist/utils/use-collections.cjs.map +1 -1
- package/dist/utils/use-collections.d.cts +1 -11
- package/dist/utils/use-collections.d.ts +1 -11
- package/dist/utils/use-collections.js.map +1 -1
- package/dist/utils/use-intersection-active.cjs.map +1 -1
- package/dist/utils/use-intersection-active.d.cts +0 -7
- package/dist/utils/use-intersection-active.d.ts +0 -7
- package/dist/utils/use-intersection-active.js.map +1 -1
- package/dist/utils/use-notifications.cjs.map +1 -1
- package/dist/utils/use-notifications.js.map +1 -1
- package/dist/utils/use-orders.cjs.map +1 -1
- package/dist/utils/use-orders.d.cts +0 -2
- package/dist/utils/use-orders.d.ts +0 -2
- package/dist/utils/use-orders.js.map +1 -1
- package/dist/utils/use-profiles.cjs.map +1 -1
- package/dist/utils/use-profiles.js.map +1 -1
- package/dist/utils/use-remix-offers.cjs.map +1 -1
- package/dist/utils/use-remix-offers.d.cts +0 -1
- package/dist/utils/use-remix-offers.d.ts +0 -1
- package/dist/utils/use-remix-offers.js.map +1 -1
- package/dist/utils/use-rewards.cjs.map +1 -1
- package/dist/utils/use-rewards.d.cts +0 -4
- package/dist/utils/use-rewards.d.ts +0 -4
- package/dist/utils/use-rewards.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/asset-top-sections.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"next/link\";\nimport { motion } from \"framer-motion\";\nimport { useIntersectionActive } from \"../utils/use-intersection-active.js\";\nimport { AddressDisplay } from \"./address-display.js\";\nimport { ParentAttributionBanner } from \"./parent-attribution-banner.js\";\nimport { IpTypeBadge } from \"./ip-type-badge.js\";\nimport { Layers, Users } from \"lucide-react\";\n\ninterface AssetMediaColumnProps {\n shouldReduce: boolean;\n image: string | null;\n imageAlt: string;\n imgError: boolean;\n onImageError: () => void;\n fallback: React.ReactNode;\n
|
|
1
|
+
{"version":3,"sources":["../../src/components/asset-top-sections.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"next/link\";\nimport { motion } from \"framer-motion\";\nimport { useIntersectionActive } from \"../utils/use-intersection-active.js\";\nimport { AddressDisplay } from \"./address-display.js\";\nimport { ParentAttributionBanner } from \"./parent-attribution-banner.js\";\nimport { IpTypeBadge } from \"./ip-type-badge.js\";\nimport { Layers, Users } from \"lucide-react\";\n\ninterface AssetMediaColumnProps {\n shouldReduce: boolean;\n image: string | null;\n imageAlt: string;\n imgError: boolean;\n onImageError: () => void;\n fallback: React.ReactNode;\n\n onZoom?: () => void;\n\n animationUrl?: string | null;\n\n live?: boolean;\n stats?: Array<{\n value: string;\n label: string;\n icon: React.ReactNode;\n }>;\n}\n\nexport function AssetMediaColumn({\n shouldReduce,\n image,\n imageAlt,\n imgError,\n onImageError,\n fallback,\n onZoom,\n animationUrl,\n live = false,\n stats,\n}: AssetMediaColumnProps) {\n const [ref, isVisible] = useIntersectionActive<HTMLDivElement>();\n const showLive = live && !!animationUrl && isVisible;\n\n return (\n <div ref={ref} className=\"w-full lg:sticky lg:top-16\">\n {showLive ? (\n <div className=\"w-full overflow-hidden rounded-3xl aspect-square\">\n <iframe\n src={animationUrl!}\n title={imageAlt}\n sandbox=\"allow-scripts\"\n loading=\"lazy\"\n className=\"w-full h-full border-0\"\n />\n </div>\n ) : !image || imgError ? (\n <div className=\"w-full overflow-hidden rounded-3xl\">{fallback}</div>\n ) : onZoom ? (\n <motion.button\n type=\"button\"\n onClick={onZoom}\n aria-label=\"View full image\"\n initial={shouldReduce ? false : { opacity: 0, scale: 0.98 }}\n animate={{ opacity: 1, scale: 1 }}\n transition={{ duration: 0.5 }}\n className=\"group block w-full overflow-hidden rounded-3xl cursor-zoom-in focus:outline-none\"\n >\n\n <img\n src={image}\n alt={imageAlt}\n crossOrigin=\"anonymous\"\n onError={onImageError}\n className=\"w-full h-auto max-h-[80vh] object-contain\n transition duration-300 group-hover:opacity-95 group-active:scale-[0.99]\"\n />\n </motion.button>\n ) : (\n <motion.div\n initial={shouldReduce ? false : { opacity: 0, scale: 0.98 }}\n animate={{ opacity: 1, scale: 1 }}\n transition={{ duration: 0.5 }}\n className=\"block w-full overflow-hidden rounded-3xl\"\n >\n\n <img\n src={image}\n alt={imageAlt}\n crossOrigin=\"anonymous\"\n onError={onImageError}\n className=\"w-full h-auto max-h-[80vh] object-contain\"\n />\n </motion.div>\n )}\n\n {stats && stats.length > 0 ? (\n <div className={`grid gap-3 mt-4 ${stats.length === 2 ? \"grid-cols-2\" : \"grid-cols-1\"}`}>\n {stats.map((stat) => (\n <div key={stat.label} className=\"rounded-xl border border-border bg-muted/20 p-4 text-center\">\n <p className=\"text-2xl font-black\">{stat.value}</p>\n <div className=\"flex items-center justify-center gap-1 text-xs text-muted-foreground mt-1\">\n {stat.icon}\n {stat.label}\n </div>\n </div>\n ))}\n </div>\n ) : null}\n </div>\n );\n}\n\ninterface AssetHeaderBlockProps {\n name: string;\n description?: string | null;\n ipType?: string | null;\n showMultiEditionBadge?: boolean;\n parentContract?: string | null;\n parentTokenId?: string | null;\n}\n\nexport function AssetHeaderBlock({\n name,\n description,\n ipType,\n showMultiEditionBadge = false,\n parentContract,\n parentTokenId,\n}: AssetHeaderBlockProps) {\n return (\n <div className=\"min-w-0 flex-1\">\n {ipType || showMultiEditionBadge ? (\n <div className=\"flex items-center gap-2 flex-wrap mb-2\">\n {ipType ? <IpTypeBadge ipType={ipType} size=\"md\" /> : null}\n {showMultiEditionBadge ? (\n <span className=\"inline-flex items-center gap-1 text-2xs font-semibold px-2.5 py-1 rounded-full border border-violet-500/30 bg-violet-500/10 text-violet-500\">\n <Layers className=\"h-3 w-3\" />\n Multi-edition\n </span>\n ) : null}\n </div>\n ) : null}\n {parentContract && parentTokenId ? (\n <div className=\"mb-3\">\n <ParentAttributionBanner\n parentContract={parentContract}\n parentTokenId={parentTokenId}\n parentName={`Token #${parentTokenId}`}\n />\n </div>\n ) : null}\n <h1 className=\"text-2xl lg:text-4xl font-bold break-words\">{name}</h1>\n {description ? (\n <p className=\"text-sm text-muted-foreground leading-relaxed mt-1\">{description}</p>\n ) : null}\n </div>\n );\n}\n\nexport interface AssetOwnerRowProps {\n ownerAddress: string;\n ownerHref: string;\n}\n\nexport function AssetOwnerRow({ ownerAddress, ownerHref }: AssetOwnerRowProps) {\n return (\n <div className=\"flex items-center gap-1.5 text-xs text-muted-foreground\">\n <span>Owner</span>\n <Link href={ownerHref} className=\"hover:text-primary transition-colors font-medium\">\n <AddressDisplay address={ownerAddress} />\n </Link>\n </div>\n );\n}\n\nexport function buildEditionStats(totalEditions: number, uniqueOwners: number) {\n return [\n {\n value: totalEditions.toLocaleString(),\n label: \"editions minted\",\n icon: <Layers className=\"h-3 w-3\" />,\n },\n {\n value: uniqueOwners.toLocaleString(),\n label: \"unique owners\",\n icon: <Users className=\"h-3 w-3\" />,\n },\n ];\n}\n"],"mappings":"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","names":["Link"]}
|
|
@@ -7,11 +7,8 @@ interface AssetMediaColumnProps {
|
|
|
7
7
|
imgError: boolean;
|
|
8
8
|
onImageError: () => void;
|
|
9
9
|
fallback: React.ReactNode;
|
|
10
|
-
/** Opens the full-screen lightbox. Omit for a non-interactive (still borderless, real-aspect-ratio) render. */
|
|
11
10
|
onZoom?: () => void;
|
|
12
|
-
/** Resolved animation_url — the live on-chain renderer, if any. */
|
|
13
11
|
animationUrl?: string | null;
|
|
14
|
-
/** Caller-computed eligibility for the living-render treatment. */
|
|
15
12
|
live?: boolean;
|
|
16
13
|
stats?: Array<{
|
|
17
14
|
value: string;
|
|
@@ -19,17 +16,6 @@ interface AssetMediaColumnProps {
|
|
|
19
16
|
icon: React.ReactNode;
|
|
20
17
|
}>;
|
|
21
18
|
}
|
|
22
|
-
/**
|
|
23
|
-
* The platform's one asset media column — borderless, respects the work's
|
|
24
|
-
* real aspect ratio (never forced 1:1), capped to the viewport so it always
|
|
25
|
-
* fits on screen, optional click-to-zoom (foundations §III: image leads, no
|
|
26
|
-
* border clutter).
|
|
27
|
-
*
|
|
28
|
-
* `live`-eligible tokens (a small partner allowlist, see
|
|
29
|
-
* living-render-collections) swap the static image for a sandboxed iframe of
|
|
30
|
-
* the token's own on-chain animation_url once the media scrolls into view —
|
|
31
|
-
* see medialane-core/docs/specs/2026-07-28-gol-starknet-living-render-design.md.
|
|
32
|
-
*/
|
|
33
19
|
declare function AssetMediaColumn({ shouldReduce, image, imageAlt, imgError, onImageError, fallback, onZoom, animationUrl, live, stats, }: AssetMediaColumnProps): react_jsx_runtime.JSX.Element;
|
|
34
20
|
interface AssetHeaderBlockProps {
|
|
35
21
|
name: string;
|
|
@@ -44,10 +30,6 @@ interface AssetOwnerRowProps {
|
|
|
44
30
|
ownerAddress: string;
|
|
45
31
|
ownerHref: string;
|
|
46
32
|
}
|
|
47
|
-
/** Single-owner identity (ERC-721) — its own sibling row, not nested inside
|
|
48
|
-
* the collection bar (that reads as if ownership were a collection
|
|
49
|
-
* attribute, 2026-07-05 feedback). ERC-1155 editions use `AssetOwnersPanel`
|
|
50
|
-
* instead (multiple owners). */
|
|
51
33
|
declare function AssetOwnerRow({ ownerAddress, ownerHref }: AssetOwnerRowProps): react_jsx_runtime.JSX.Element;
|
|
52
34
|
declare function buildEditionStats(totalEditions: number, uniqueOwners: number): {
|
|
53
35
|
value: string;
|
|
@@ -7,11 +7,8 @@ interface AssetMediaColumnProps {
|
|
|
7
7
|
imgError: boolean;
|
|
8
8
|
onImageError: () => void;
|
|
9
9
|
fallback: React.ReactNode;
|
|
10
|
-
/** Opens the full-screen lightbox. Omit for a non-interactive (still borderless, real-aspect-ratio) render. */
|
|
11
10
|
onZoom?: () => void;
|
|
12
|
-
/** Resolved animation_url — the live on-chain renderer, if any. */
|
|
13
11
|
animationUrl?: string | null;
|
|
14
|
-
/** Caller-computed eligibility for the living-render treatment. */
|
|
15
12
|
live?: boolean;
|
|
16
13
|
stats?: Array<{
|
|
17
14
|
value: string;
|
|
@@ -19,17 +16,6 @@ interface AssetMediaColumnProps {
|
|
|
19
16
|
icon: React.ReactNode;
|
|
20
17
|
}>;
|
|
21
18
|
}
|
|
22
|
-
/**
|
|
23
|
-
* The platform's one asset media column — borderless, respects the work's
|
|
24
|
-
* real aspect ratio (never forced 1:1), capped to the viewport so it always
|
|
25
|
-
* fits on screen, optional click-to-zoom (foundations §III: image leads, no
|
|
26
|
-
* border clutter).
|
|
27
|
-
*
|
|
28
|
-
* `live`-eligible tokens (a small partner allowlist, see
|
|
29
|
-
* living-render-collections) swap the static image for a sandboxed iframe of
|
|
30
|
-
* the token's own on-chain animation_url once the media scrolls into view —
|
|
31
|
-
* see medialane-core/docs/specs/2026-07-28-gol-starknet-living-render-design.md.
|
|
32
|
-
*/
|
|
33
19
|
declare function AssetMediaColumn({ shouldReduce, image, imageAlt, imgError, onImageError, fallback, onZoom, animationUrl, live, stats, }: AssetMediaColumnProps): react_jsx_runtime.JSX.Element;
|
|
34
20
|
interface AssetHeaderBlockProps {
|
|
35
21
|
name: string;
|
|
@@ -44,10 +30,6 @@ interface AssetOwnerRowProps {
|
|
|
44
30
|
ownerAddress: string;
|
|
45
31
|
ownerHref: string;
|
|
46
32
|
}
|
|
47
|
-
/** Single-owner identity (ERC-721) — its own sibling row, not nested inside
|
|
48
|
-
* the collection bar (that reads as if ownership were a collection
|
|
49
|
-
* attribute, 2026-07-05 feedback). ERC-1155 editions use `AssetOwnersPanel`
|
|
50
|
-
* instead (multiple owners). */
|
|
51
33
|
declare function AssetOwnerRow({ ownerAddress, ownerHref }: AssetOwnerRowProps): react_jsx_runtime.JSX.Element;
|
|
52
34
|
declare function buildEditionStats(totalEditions: number, uniqueOwners: number): {
|
|
53
35
|
value: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/asset-top-sections.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"next/link\";\nimport { motion } from \"framer-motion\";\nimport { useIntersectionActive } from \"../utils/use-intersection-active.js\";\nimport { AddressDisplay } from \"./address-display.js\";\nimport { ParentAttributionBanner } from \"./parent-attribution-banner.js\";\nimport { IpTypeBadge } from \"./ip-type-badge.js\";\nimport { Layers, Users } from \"lucide-react\";\n\ninterface AssetMediaColumnProps {\n shouldReduce: boolean;\n image: string | null;\n imageAlt: string;\n imgError: boolean;\n onImageError: () => void;\n fallback: React.ReactNode;\n
|
|
1
|
+
{"version":3,"sources":["../../src/components/asset-top-sections.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"next/link\";\nimport { motion } from \"framer-motion\";\nimport { useIntersectionActive } from \"../utils/use-intersection-active.js\";\nimport { AddressDisplay } from \"./address-display.js\";\nimport { ParentAttributionBanner } from \"./parent-attribution-banner.js\";\nimport { IpTypeBadge } from \"./ip-type-badge.js\";\nimport { Layers, Users } from \"lucide-react\";\n\ninterface AssetMediaColumnProps {\n shouldReduce: boolean;\n image: string | null;\n imageAlt: string;\n imgError: boolean;\n onImageError: () => void;\n fallback: React.ReactNode;\n\n onZoom?: () => void;\n\n animationUrl?: string | null;\n\n live?: boolean;\n stats?: Array<{\n value: string;\n label: string;\n icon: React.ReactNode;\n }>;\n}\n\nexport function AssetMediaColumn({\n shouldReduce,\n image,\n imageAlt,\n imgError,\n onImageError,\n fallback,\n onZoom,\n animationUrl,\n live = false,\n stats,\n}: AssetMediaColumnProps) {\n const [ref, isVisible] = useIntersectionActive<HTMLDivElement>();\n const showLive = live && !!animationUrl && isVisible;\n\n return (\n <div ref={ref} className=\"w-full lg:sticky lg:top-16\">\n {showLive ? (\n <div className=\"w-full overflow-hidden rounded-3xl aspect-square\">\n <iframe\n src={animationUrl!}\n title={imageAlt}\n sandbox=\"allow-scripts\"\n loading=\"lazy\"\n className=\"w-full h-full border-0\"\n />\n </div>\n ) : !image || imgError ? (\n <div className=\"w-full overflow-hidden rounded-3xl\">{fallback}</div>\n ) : onZoom ? (\n <motion.button\n type=\"button\"\n onClick={onZoom}\n aria-label=\"View full image\"\n initial={shouldReduce ? false : { opacity: 0, scale: 0.98 }}\n animate={{ opacity: 1, scale: 1 }}\n transition={{ duration: 0.5 }}\n className=\"group block w-full overflow-hidden rounded-3xl cursor-zoom-in focus:outline-none\"\n >\n\n <img\n src={image}\n alt={imageAlt}\n crossOrigin=\"anonymous\"\n onError={onImageError}\n className=\"w-full h-auto max-h-[80vh] object-contain\n transition duration-300 group-hover:opacity-95 group-active:scale-[0.99]\"\n />\n </motion.button>\n ) : (\n <motion.div\n initial={shouldReduce ? false : { opacity: 0, scale: 0.98 }}\n animate={{ opacity: 1, scale: 1 }}\n transition={{ duration: 0.5 }}\n className=\"block w-full overflow-hidden rounded-3xl\"\n >\n\n <img\n src={image}\n alt={imageAlt}\n crossOrigin=\"anonymous\"\n onError={onImageError}\n className=\"w-full h-auto max-h-[80vh] object-contain\"\n />\n </motion.div>\n )}\n\n {stats && stats.length > 0 ? (\n <div className={`grid gap-3 mt-4 ${stats.length === 2 ? \"grid-cols-2\" : \"grid-cols-1\"}`}>\n {stats.map((stat) => (\n <div key={stat.label} className=\"rounded-xl border border-border bg-muted/20 p-4 text-center\">\n <p className=\"text-2xl font-black\">{stat.value}</p>\n <div className=\"flex items-center justify-center gap-1 text-xs text-muted-foreground mt-1\">\n {stat.icon}\n {stat.label}\n </div>\n </div>\n ))}\n </div>\n ) : null}\n </div>\n );\n}\n\ninterface AssetHeaderBlockProps {\n name: string;\n description?: string | null;\n ipType?: string | null;\n showMultiEditionBadge?: boolean;\n parentContract?: string | null;\n parentTokenId?: string | null;\n}\n\nexport function AssetHeaderBlock({\n name,\n description,\n ipType,\n showMultiEditionBadge = false,\n parentContract,\n parentTokenId,\n}: AssetHeaderBlockProps) {\n return (\n <div className=\"min-w-0 flex-1\">\n {ipType || showMultiEditionBadge ? (\n <div className=\"flex items-center gap-2 flex-wrap mb-2\">\n {ipType ? <IpTypeBadge ipType={ipType} size=\"md\" /> : null}\n {showMultiEditionBadge ? (\n <span className=\"inline-flex items-center gap-1 text-2xs font-semibold px-2.5 py-1 rounded-full border border-violet-500/30 bg-violet-500/10 text-violet-500\">\n <Layers className=\"h-3 w-3\" />\n Multi-edition\n </span>\n ) : null}\n </div>\n ) : null}\n {parentContract && parentTokenId ? (\n <div className=\"mb-3\">\n <ParentAttributionBanner\n parentContract={parentContract}\n parentTokenId={parentTokenId}\n parentName={`Token #${parentTokenId}`}\n />\n </div>\n ) : null}\n <h1 className=\"text-2xl lg:text-4xl font-bold break-words\">{name}</h1>\n {description ? (\n <p className=\"text-sm text-muted-foreground leading-relaxed mt-1\">{description}</p>\n ) : null}\n </div>\n );\n}\n\nexport interface AssetOwnerRowProps {\n ownerAddress: string;\n ownerHref: string;\n}\n\nexport function AssetOwnerRow({ ownerAddress, ownerHref }: AssetOwnerRowProps) {\n return (\n <div className=\"flex items-center gap-1.5 text-xs text-muted-foreground\">\n <span>Owner</span>\n <Link href={ownerHref} className=\"hover:text-primary transition-colors font-medium\">\n <AddressDisplay address={ownerAddress} />\n </Link>\n </div>\n );\n}\n\nexport function buildEditionStats(totalEditions: number, uniqueOwners: number) {\n return [\n {\n value: totalEditions.toLocaleString(),\n label: \"editions minted\",\n icon: <Layers className=\"h-3 w-3\" />,\n },\n {\n value: uniqueOwners.toLocaleString(),\n label: \"unique owners\",\n icon: <Users className=\"h-3 w-3\" />,\n },\n ];\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/asset-utility-icons.tsx"],"sourcesContent":["\"use client\";\n\nimport { ExternalLink, Flag } from \"lucide-react\";\nimport { ShareButton } from \"./share-button.js\";\n\nexport interface AssetUtilityIconsProps {\n contractExplorerHref: string;\n shareTitle: string;\n onReportClick: () => void;\n}\n\
|
|
1
|
+
{"version":3,"sources":["../../src/components/asset-utility-icons.tsx"],"sourcesContent":["\"use client\";\n\nimport { ExternalLink, Flag } from \"lucide-react\";\nimport { ShareButton } from \"./share-button.js\";\n\nexport interface AssetUtilityIconsProps {\n contractExplorerHref: string;\n shareTitle: string;\n onReportClick: () => void;\n}\n\nexport function AssetUtilityIcons({\n contractExplorerHref,\n shareTitle,\n onReportClick,\n}: AssetUtilityIconsProps) {\n return (\n <div className=\"flex items-center gap-1 text-muted-foreground\">\n <a\n href={contractExplorerHref}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n title=\"View contract\"\n className=\"inline-flex min-h-11 min-w-11 items-center justify-center rounded-lg hover:bg-muted/50 hover:text-foreground transition-colors\"\n >\n <ExternalLink className=\"h-4 w-4\" />\n </a>\n <ShareButton title={shareTitle} variant=\"ghost\" size=\"icon\" />\n <button\n type=\"button\"\n title=\"Report this asset\"\n onClick={onReportClick}\n className=\"inline-flex min-h-11 min-w-11 items-center justify-center rounded-lg hover:bg-muted/50 hover:text-foreground transition-colors\"\n >\n <Flag className=\"h-4 w-4\" />\n </button>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAiBI;AAfJ,0BAAmC;AACnC,0BAA4B;AAQrB,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AACF,GAA2B;AACzB,SACE,6CAAC,SAAI,WAAU,iDACb;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,MAAM;AAAA,QACN,QAAO;AAAA,QACP,KAAI;AAAA,QACJ,OAAM;AAAA,QACN,WAAU;AAAA,QAEV,sDAAC,oCAAa,WAAU,WAAU;AAAA;AAAA,IACpC;AAAA,IACA,4CAAC,mCAAY,OAAO,YAAY,SAAQ,SAAQ,MAAK,QAAO;AAAA,IAC5D;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,OAAM;AAAA,QACN,SAAS;AAAA,QACT,WAAU;AAAA,QAEV,sDAAC,4BAAK,WAAU,WAAU;AAAA;AAAA,IAC5B;AAAA,KACF;AAEJ;","names":[]}
|
|
@@ -5,11 +5,6 @@ interface AssetUtilityIconsProps {
|
|
|
5
5
|
shareTitle: string;
|
|
6
6
|
onReportClick: () => void;
|
|
7
7
|
}
|
|
8
|
-
/**
|
|
9
|
-
* Asset-level utility row: view-on-explorer / share / report. Lives next to
|
|
10
|
-
* the asset's own identity (name/owner), not inside `AssetCollectionBar` —
|
|
11
|
-
* these actions are about the asset, not the collection it belongs to.
|
|
12
|
-
*/
|
|
13
8
|
declare function AssetUtilityIcons({ contractExplorerHref, shareTitle, onReportClick, }: AssetUtilityIconsProps): react_jsx_runtime.JSX.Element;
|
|
14
9
|
|
|
15
10
|
export { AssetUtilityIcons, type AssetUtilityIconsProps };
|
|
@@ -5,11 +5,6 @@ interface AssetUtilityIconsProps {
|
|
|
5
5
|
shareTitle: string;
|
|
6
6
|
onReportClick: () => void;
|
|
7
7
|
}
|
|
8
|
-
/**
|
|
9
|
-
* Asset-level utility row: view-on-explorer / share / report. Lives next to
|
|
10
|
-
* the asset's own identity (name/owner), not inside `AssetCollectionBar` —
|
|
11
|
-
* these actions are about the asset, not the collection it belongs to.
|
|
12
|
-
*/
|
|
13
8
|
declare function AssetUtilityIcons({ contractExplorerHref, shareTitle, onReportClick, }: AssetUtilityIconsProps): react_jsx_runtime.JSX.Element;
|
|
14
9
|
|
|
15
10
|
export { AssetUtilityIcons, type AssetUtilityIconsProps };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/asset-utility-icons.tsx"],"sourcesContent":["\"use client\";\n\nimport { ExternalLink, Flag } from \"lucide-react\";\nimport { ShareButton } from \"./share-button.js\";\n\nexport interface AssetUtilityIconsProps {\n contractExplorerHref: string;\n shareTitle: string;\n onReportClick: () => void;\n}\n\
|
|
1
|
+
{"version":3,"sources":["../../src/components/asset-utility-icons.tsx"],"sourcesContent":["\"use client\";\n\nimport { ExternalLink, Flag } from \"lucide-react\";\nimport { ShareButton } from \"./share-button.js\";\n\nexport interface AssetUtilityIconsProps {\n contractExplorerHref: string;\n shareTitle: string;\n onReportClick: () => void;\n}\n\nexport function AssetUtilityIcons({\n contractExplorerHref,\n shareTitle,\n onReportClick,\n}: AssetUtilityIconsProps) {\n return (\n <div className=\"flex items-center gap-1 text-muted-foreground\">\n <a\n href={contractExplorerHref}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n title=\"View contract\"\n className=\"inline-flex min-h-11 min-w-11 items-center justify-center rounded-lg hover:bg-muted/50 hover:text-foreground transition-colors\"\n >\n <ExternalLink className=\"h-4 w-4\" />\n </a>\n <ShareButton title={shareTitle} variant=\"ghost\" size=\"icon\" />\n <button\n type=\"button\"\n title=\"Report this asset\"\n onClick={onReportClick}\n className=\"inline-flex min-h-11 min-w-11 items-center justify-center rounded-lg hover:bg-muted/50 hover:text-foreground transition-colors\"\n >\n <Flag className=\"h-4 w-4\" />\n </button>\n </div>\n );\n}\n"],"mappings":";AAiBI,SAQI,KARJ;AAfJ,SAAS,cAAc,YAAY;AACnC,SAAS,mBAAmB;AAQrB,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AACF,GAA2B;AACzB,SACE,qBAAC,SAAI,WAAU,iDACb;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,MAAM;AAAA,QACN,QAAO;AAAA,QACP,KAAI;AAAA,QACJ,OAAM;AAAA,QACN,WAAU;AAAA,QAEV,8BAAC,gBAAa,WAAU,WAAU;AAAA;AAAA,IACpC;AAAA,IACA,oBAAC,eAAY,OAAO,YAAY,SAAQ,SAAQ,MAAK,QAAO;AAAA,IAC5D;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,OAAM;AAAA,QACN,SAAS;AAAA,QACT,WAAU;AAAA,QAEV,8BAAC,QAAK,WAAU,WAAU;AAAA;AAAA,IAC5B;AAAA,KACF;AAEJ;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/claim-rail.tsx"],"sourcesContent":["import { ShieldCheck, type LucideIcon } from \"lucide-react\";\n\nexport interface ClaimRailProps {\n
|
|
1
|
+
{"version":3,"sources":["../../src/components/claim-rail.tsx"],"sourcesContent":["import { ShieldCheck, type LucideIcon } from \"lucide-react\";\n\nexport interface ClaimRailProps {\n\n included?: { icon: LucideIcon; title: string; desc: string }[];\n\n steps: string[];\n\n trustLead: string;\n trust: string;\n\n trustIcon?: LucideIcon;\n}\n\nexport function ClaimRail({ included, steps, trustLead, trust, trustIcon: TrustIcon = ShieldCheck }: ClaimRailProps) {\n return (\n <div className=\"rounded-2xl bg-muted/50 dark:bg-card divide-y divide-border/60 overflow-hidden\">\n {included && included.length > 0 && (\n <section className=\"p-5\">\n <p className=\"section-label\">What's included</p>\n <ul className=\"mt-4 space-y-4\">\n {included.map(({ icon: Icon, title, desc }) => (\n <li key={title} className=\"flex items-start gap-3\">\n <div className=\"h-8 w-8 rounded-lg bg-brand-blue/10 flex items-center justify-center shrink-0\">\n <Icon className=\"h-4 w-4 text-brand-blue\" />\n </div>\n <div className=\"min-w-0\">\n <p className=\"text-sm font-semibold text-foreground\">{title}</p>\n <p className=\"text-sm text-muted-foreground leading-relaxed mt-0.5\">{desc}</p>\n </div>\n </li>\n ))}\n </ul>\n </section>\n )}\n\n <section className=\"p-5\">\n <p className=\"section-label\">How it works</p>\n <ol className=\"mt-4 space-y-3\">\n {steps.map((label, i) => (\n <li key={label} className=\"flex items-center gap-3\">\n <span className=\"h-8 w-8 rounded-lg bg-brand-purple/10 text-brand-purple flex items-center justify-center shrink-0 text-sm font-bold tabular-nums\">\n {i + 1}\n </span>\n <span className=\"text-sm text-foreground/90\">{label}</span>\n </li>\n ))}\n </ol>\n </section>\n\n <section className=\"p-5 bg-muted/40 flex items-start gap-3\">\n <TrustIcon className=\"h-5 w-5 text-brand-orange shrink-0 mt-0.5\" />\n <p className=\"text-sm text-muted-foreground leading-relaxed\">\n <span className=\"font-semibold text-foreground\">{trustLead}</span> {trust}\n </p>\n </section>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAmBU;AAnBV,0BAA6C;AActC,SAAS,UAAU,EAAE,UAAU,OAAO,WAAW,OAAO,WAAW,YAAY,gCAAY,GAAmB;AACnH,SACE,6CAAC,SAAI,WAAU,kFACZ;AAAA,gBAAY,SAAS,SAAS,KAC7B,6CAAC,aAAQ,WAAU,OACjB;AAAA,kDAAC,OAAE,WAAU,iBAAgB,6BAAoB;AAAA,MACjD,4CAAC,QAAG,WAAU,kBACX,mBAAS,IAAI,CAAC,EAAE,MAAM,MAAM,OAAO,KAAK,MACvC,6CAAC,QAAe,WAAU,0BACxB;AAAA,oDAAC,SAAI,WAAU,iFACb,sDAAC,QAAK,WAAU,2BAA0B,GAC5C;AAAA,QACA,6CAAC,SAAI,WAAU,WACb;AAAA,sDAAC,OAAE,WAAU,yCAAyC,iBAAM;AAAA,UAC5D,4CAAC,OAAE,WAAU,wDAAwD,gBAAK;AAAA,WAC5E;AAAA,WAPO,KAQT,CACD,GACH;AAAA,OACF;AAAA,IAGF,6CAAC,aAAQ,WAAU,OACjB;AAAA,kDAAC,OAAE,WAAU,iBAAgB,0BAAY;AAAA,MACzC,4CAAC,QAAG,WAAU,kBACX,gBAAM,IAAI,CAAC,OAAO,MACjB,6CAAC,QAAe,WAAU,2BACxB;AAAA,oDAAC,UAAK,WAAU,oIACb,cAAI,GACP;AAAA,QACA,4CAAC,UAAK,WAAU,8BAA8B,iBAAM;AAAA,WAJ7C,KAKT,CACD,GACH;AAAA,OACF;AAAA,IAEA,6CAAC,aAAQ,WAAU,0CACjB;AAAA,kDAAC,aAAU,WAAU,6CAA4C;AAAA,MACjE,6CAAC,OAAE,WAAU,iDACX;AAAA,oDAAC,UAAK,WAAU,iCAAiC,qBAAU;AAAA,QAAO;AAAA,QAAE;AAAA,SACtE;AAAA,OACF;AAAA,KACF;AAEJ;","names":[]}
|
|
@@ -2,25 +2,16 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
|
2
2
|
import { LucideIcon } from 'lucide-react';
|
|
3
3
|
|
|
4
4
|
interface ClaimRailProps {
|
|
5
|
-
/** "What's included" benefits. Omit to hide that panel (e.g. when a live
|
|
6
|
-
* preview is the rail's first panel instead). */
|
|
7
5
|
included?: {
|
|
8
6
|
icon: LucideIcon;
|
|
9
7
|
title: string;
|
|
10
8
|
desc: string;
|
|
11
9
|
}[];
|
|
12
|
-
/** "How it works" ordered steps. */
|
|
13
10
|
steps: string[];
|
|
14
|
-
/** Trust/assurance note: bold lead + the rest of the sentence. */
|
|
15
11
|
trustLead: string;
|
|
16
12
|
trust: string;
|
|
17
|
-
/** Trust glyph — defaults to a shield. */
|
|
18
13
|
trustIcon?: LucideIcon;
|
|
19
14
|
}
|
|
20
|
-
/** Right-rail for launchpad/claim pages — one quiet borderless sectioned card
|
|
21
|
-
* (What's included · How it works · trust). The brand spectrum appears only
|
|
22
|
-
* as tints: blue benefit chips → purple step numerals → orange trust glyph.
|
|
23
|
-
* Pure presentation; the consuming app passes the per-surface content. */
|
|
24
15
|
declare function ClaimRail({ included, steps, trustLead, trust, trustIcon: TrustIcon }: ClaimRailProps): react_jsx_runtime.JSX.Element;
|
|
25
16
|
|
|
26
17
|
export { ClaimRail, type ClaimRailProps };
|
|
@@ -2,25 +2,16 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
|
2
2
|
import { LucideIcon } from 'lucide-react';
|
|
3
3
|
|
|
4
4
|
interface ClaimRailProps {
|
|
5
|
-
/** "What's included" benefits. Omit to hide that panel (e.g. when a live
|
|
6
|
-
* preview is the rail's first panel instead). */
|
|
7
5
|
included?: {
|
|
8
6
|
icon: LucideIcon;
|
|
9
7
|
title: string;
|
|
10
8
|
desc: string;
|
|
11
9
|
}[];
|
|
12
|
-
/** "How it works" ordered steps. */
|
|
13
10
|
steps: string[];
|
|
14
|
-
/** Trust/assurance note: bold lead + the rest of the sentence. */
|
|
15
11
|
trustLead: string;
|
|
16
12
|
trust: string;
|
|
17
|
-
/** Trust glyph — defaults to a shield. */
|
|
18
13
|
trustIcon?: LucideIcon;
|
|
19
14
|
}
|
|
20
|
-
/** Right-rail for launchpad/claim pages — one quiet borderless sectioned card
|
|
21
|
-
* (What's included · How it works · trust). The brand spectrum appears only
|
|
22
|
-
* as tints: blue benefit chips → purple step numerals → orange trust glyph.
|
|
23
|
-
* Pure presentation; the consuming app passes the per-surface content. */
|
|
24
15
|
declare function ClaimRail({ included, steps, trustLead, trust, trustIcon: TrustIcon }: ClaimRailProps): react_jsx_runtime.JSX.Element;
|
|
25
16
|
|
|
26
17
|
export { ClaimRail, type ClaimRailProps };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/claim-rail.tsx"],"sourcesContent":["import { ShieldCheck, type LucideIcon } from \"lucide-react\";\n\nexport interface ClaimRailProps {\n
|
|
1
|
+
{"version":3,"sources":["../../src/components/claim-rail.tsx"],"sourcesContent":["import { ShieldCheck, type LucideIcon } from \"lucide-react\";\n\nexport interface ClaimRailProps {\n\n included?: { icon: LucideIcon; title: string; desc: string }[];\n\n steps: string[];\n\n trustLead: string;\n trust: string;\n\n trustIcon?: LucideIcon;\n}\n\nexport function ClaimRail({ included, steps, trustLead, trust, trustIcon: TrustIcon = ShieldCheck }: ClaimRailProps) {\n return (\n <div className=\"rounded-2xl bg-muted/50 dark:bg-card divide-y divide-border/60 overflow-hidden\">\n {included && included.length > 0 && (\n <section className=\"p-5\">\n <p className=\"section-label\">What's included</p>\n <ul className=\"mt-4 space-y-4\">\n {included.map(({ icon: Icon, title, desc }) => (\n <li key={title} className=\"flex items-start gap-3\">\n <div className=\"h-8 w-8 rounded-lg bg-brand-blue/10 flex items-center justify-center shrink-0\">\n <Icon className=\"h-4 w-4 text-brand-blue\" />\n </div>\n <div className=\"min-w-0\">\n <p className=\"text-sm font-semibold text-foreground\">{title}</p>\n <p className=\"text-sm text-muted-foreground leading-relaxed mt-0.5\">{desc}</p>\n </div>\n </li>\n ))}\n </ul>\n </section>\n )}\n\n <section className=\"p-5\">\n <p className=\"section-label\">How it works</p>\n <ol className=\"mt-4 space-y-3\">\n {steps.map((label, i) => (\n <li key={label} className=\"flex items-center gap-3\">\n <span className=\"h-8 w-8 rounded-lg bg-brand-purple/10 text-brand-purple flex items-center justify-center shrink-0 text-sm font-bold tabular-nums\">\n {i + 1}\n </span>\n <span className=\"text-sm text-foreground/90\">{label}</span>\n </li>\n ))}\n </ol>\n </section>\n\n <section className=\"p-5 bg-muted/40 flex items-start gap-3\">\n <TrustIcon className=\"h-5 w-5 text-brand-orange shrink-0 mt-0.5\" />\n <p className=\"text-sm text-muted-foreground leading-relaxed\">\n <span className=\"font-semibold text-foreground\">{trustLead}</span> {trust}\n </p>\n </section>\n </div>\n );\n}\n"],"mappings":"AAmBU,cAOM,YAPN;AAnBV,SAAS,mBAAoC;AActC,SAAS,UAAU,EAAE,UAAU,OAAO,WAAW,OAAO,WAAW,YAAY,YAAY,GAAmB;AACnH,SACE,qBAAC,SAAI,WAAU,kFACZ;AAAA,gBAAY,SAAS,SAAS,KAC7B,qBAAC,aAAQ,WAAU,OACjB;AAAA,0BAAC,OAAE,WAAU,iBAAgB,6BAAoB;AAAA,MACjD,oBAAC,QAAG,WAAU,kBACX,mBAAS,IAAI,CAAC,EAAE,MAAM,MAAM,OAAO,KAAK,MACvC,qBAAC,QAAe,WAAU,0BACxB;AAAA,4BAAC,SAAI,WAAU,iFACb,8BAAC,QAAK,WAAU,2BAA0B,GAC5C;AAAA,QACA,qBAAC,SAAI,WAAU,WACb;AAAA,8BAAC,OAAE,WAAU,yCAAyC,iBAAM;AAAA,UAC5D,oBAAC,OAAE,WAAU,wDAAwD,gBAAK;AAAA,WAC5E;AAAA,WAPO,KAQT,CACD,GACH;AAAA,OACF;AAAA,IAGF,qBAAC,aAAQ,WAAU,OACjB;AAAA,0BAAC,OAAE,WAAU,iBAAgB,0BAAY;AAAA,MACzC,oBAAC,QAAG,WAAU,kBACX,gBAAM,IAAI,CAAC,OAAO,MACjB,qBAAC,QAAe,WAAU,2BACxB;AAAA,4BAAC,UAAK,WAAU,oIACb,cAAI,GACP;AAAA,QACA,oBAAC,UAAK,WAAU,8BAA8B,iBAAM;AAAA,WAJ7C,KAKT,CACD,GACH;AAAA,OACF;AAAA,IAEA,qBAAC,aAAQ,WAAU,0CACjB;AAAA,0BAAC,aAAU,WAAU,6CAA4C;AAAA,MACjE,qBAAC,OAAE,WAAU,iDACX;AAAA,4BAAC,UAAK,WAAU,iCAAiC,qBAAU;AAAA,QAAO;AAAA,QAAE;AAAA,SACtE;AAAA,OACF;AAAA,KACF;AAEJ;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/club-owner-actions.tsx"],"sourcesContent":["\"use client\";\n\
|
|
1
|
+
{"version":3,"sources":["../../src/components/club-owner-actions.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"next/link\";\nimport { Users } from \"lucide-react\";\n\nexport interface ClubOwnerActionsProps {\n contractAddress: string;\n\n isOwner: boolean;\n}\n\nexport function ClubOwnerActions({ contractAddress, isOwner }: ClubOwnerActionsProps) {\n if (!isOwner) return null;\n\n return (\n <div className=\"btn-border-animated p-[1px] rounded-xl\">\n <Link\n href={`/launchpad/club/${contractAddress}/mint`}\n className=\"flex items-center gap-2 h-10 px-5 rounded-[11px] text-sm font-semibold text-white bg-transparent hover:brightness-110 active:scale-[0.98] transition\"\n >\n <Users className=\"h-4 w-4\" />\n Create membership\n </Link>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBM;AAdN,kBAAiB;AACjB,0BAAsB;AAQf,SAAS,iBAAiB,EAAE,iBAAiB,QAAQ,GAA0B;AACpF,MAAI,CAAC,QAAS,QAAO;AAErB,SACE,4CAAC,SAAI,WAAU,0CACb;AAAA,IAAC,YAAAA;AAAA,IAAA;AAAA,MACC,MAAM,mBAAmB,eAAe;AAAA,MACxC,WAAU;AAAA,MAEV;AAAA,oDAAC,6BAAM,WAAU,WAAU;AAAA,QAAE;AAAA;AAAA;AAAA,EAE/B,GACF;AAEJ;","names":["Link"]}
|
|
@@ -2,8 +2,6 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
|
2
2
|
|
|
3
3
|
interface ClubOwnerActionsProps {
|
|
4
4
|
contractAddress: string;
|
|
5
|
-
/** Caller computes this from its own wallet session — the wallet model
|
|
6
|
-
* differs per app, so this component stays purely presentational. */
|
|
7
5
|
isOwner: boolean;
|
|
8
6
|
}
|
|
9
7
|
declare function ClubOwnerActions({ contractAddress, isOwner }: ClubOwnerActionsProps): react_jsx_runtime.JSX.Element | null;
|
|
@@ -2,8 +2,6 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
|
2
2
|
|
|
3
3
|
interface ClubOwnerActionsProps {
|
|
4
4
|
contractAddress: string;
|
|
5
|
-
/** Caller computes this from its own wallet session — the wallet model
|
|
6
|
-
* differs per app, so this component stays purely presentational. */
|
|
7
5
|
isOwner: boolean;
|
|
8
6
|
}
|
|
9
7
|
declare function ClubOwnerActions({ contractAddress, isOwner }: ClubOwnerActionsProps): react_jsx_runtime.JSX.Element | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/club-owner-actions.tsx"],"sourcesContent":["\"use client\";\n\
|
|
1
|
+
{"version":3,"sources":["../../src/components/club-owner-actions.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"next/link\";\nimport { Users } from \"lucide-react\";\n\nexport interface ClubOwnerActionsProps {\n contractAddress: string;\n\n isOwner: boolean;\n}\n\nexport function ClubOwnerActions({ contractAddress, isOwner }: ClubOwnerActionsProps) {\n if (!isOwner) return null;\n\n return (\n <div className=\"btn-border-animated p-[1px] rounded-xl\">\n <Link\n href={`/launchpad/club/${contractAddress}/mint`}\n className=\"flex items-center gap-2 h-10 px-5 rounded-[11px] text-sm font-semibold text-white bg-transparent hover:brightness-110 active:scale-[0.98] transition\"\n >\n <Users className=\"h-4 w-4\" />\n Create membership\n </Link>\n </div>\n );\n}\n"],"mappings":";AAgBM,SAIE,KAJF;AAdN,OAAO,UAAU;AACjB,SAAS,aAAa;AAQf,SAAS,iBAAiB,EAAE,iBAAiB,QAAQ,GAA0B;AACpF,MAAI,CAAC,QAAS,QAAO;AAErB,SACE,oBAAC,SAAI,WAAU,0CACb;AAAA,IAAC;AAAA;AAAA,MACC,MAAM,mBAAmB,eAAe;AAAA,MACxC,WAAU;AAAA,MAEV;AAAA,4BAAC,SAAM,WAAU,WAAU;AAAA,QAAE;AAAA;AAAA;AAAA,EAE/B,GACF;AAEJ;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/coin-card.tsx"],"sourcesContent":["\"use client\";\n\
|
|
1
|
+
{"version":3,"sources":["../../src/components/coin-card.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"next/link\";\nimport Image from \"next/image\";\nimport { cn } from \"../utils/cn.js\";\nimport { ipfsToHttp } from \"../utils/ipfs.js\";\nimport { MotionCard } from \"./motion-primitives.js\";\nimport { CurrencyIcon } from \"./currency-icon.js\";\nimport {\n coinKind, formatCoinPrice,\n type CoinCollectionLike, type CoinPriceLike,\n} from \"../data/coins.js\";\n\nexport type UseCoinPrice = (collection: CoinCollectionLike) => {\n price: CoinPriceLike | null;\n isLoading: boolean;\n};\n\nexport interface CoinTileProps {\n collection: CoinCollectionLike;\n usePrice: UseCoinPrice;\n\n href: string;\n}\n\nconst KIND_TAG: Record<string, string> = {\n creator: \"border-brand-blue/30 bg-brand-blue/10 text-brand-blue\",\n memecoin: \"border-brand-purple/30 bg-brand-purple/10 text-brand-purple\",\n};\n\nconst KIND_OVER_IMAGE: Record<string, string> = {\n creator: \"bg-brand-blue/85 text-white\",\n memecoin: \"bg-brand-purple/85 text-white\",\n};\n\nconst KIND_FALLBACK: Record<string, string> = {\n creator: \"from-brand-blue to-brand-purple\",\n memecoin: \"from-brand-purple to-brand-rose\",\n};\n\nconst kindLabel = (kind: string) => (kind === \"creator\" ? \"Creator Coin\" : \"Memecoin\");\n\nfunction useTileModel({ collection, usePrice }: Omit<CoinTileProps, \"href\">) {\n const { price, isLoading } = usePrice(collection);\n const kind = coinKind(collection.service);\n const logoUri = collection.profile?.image ?? collection.image;\n const logo = logoUri ? ipfsToHttp(logoUri) : null;\n const initials = (collection.symbol ?? collection.name ?? \"?\").trim().slice(0, 2).toUpperCase();\n return { price, isLoading, kind, logo, initials };\n}\n\nfunction PriceValue({ price, isLoading }: { price: CoinPriceLike | null; isLoading: boolean }) {\n if (isLoading) return <span className=\"inline-block h-4 w-14 rounded bg-muted-foreground/20 animate-pulse\" />;\n if (!price) return <span className=\"text-muted-foreground\">—</span>;\n return (\n <span className=\"inline-flex items-center gap-1 font-semibold tabular-nums\">\n <CurrencyIcon symbol={price.quoteSymbol} size={14} />\n {formatCoinPrice(price.quotePerCoin)}\n </span>\n );\n}\n\nexport function CoinCard({ collection, usePrice, href }: CoinTileProps) {\n const m = useTileModel({ collection, usePrice });\n return (\n <MotionCard className=\"card-base group relative flex h-full flex-col\">\n <Link href={href} className=\"flex h-full flex-col\">\n\n <div className=\"relative aspect-square w-full overflow-hidden bg-muted\">\n {m.logo ? (\n <Image\n src={m.logo}\n alt={collection.name ?? \"Coin\"}\n fill\n sizes=\"(min-width:1280px) 25vw, (min-width:1024px) 33vw, (min-width:640px) 50vw, 100vw\"\n className=\"object-cover transition-transform duration-500 group-hover:scale-105\"\n unoptimized\n />\n ) : (\n <div className={cn(\"absolute inset-0 flex items-center justify-center bg-gradient-to-br\", KIND_FALLBACK[m.kind])}>\n <span className=\"select-none text-5xl font-black tracking-tighter text-white/90\">{m.initials}</span>\n </div>\n )}\n <span className={cn(\"absolute left-2 top-2 rounded-full px-2 py-0.5 text-2xs font-semibold backdrop-blur-md\", KIND_OVER_IMAGE[m.kind])}>\n {kindLabel(m.kind)}\n </span>\n </div>\n\n <div className=\"flex flex-col gap-2 p-3\">\n <div className=\"min-w-0\">\n <div className=\"truncate font-semibold leading-tight\">{collection.name ?? \"Untitled coin\"}</div>\n <div className=\"truncate text-sm text-muted-foreground\">{collection.symbol ?? \"—\"}</div>\n </div>\n <div className=\"flex items-baseline justify-between gap-2\">\n <span className=\"text-2xs uppercase tracking-wide text-muted-foreground\">Price</span>\n <PriceValue price={m.price} isLoading={m.isLoading} />\n </div>\n </div>\n </Link>\n </MotionCard>\n );\n}\n\nexport function CoinRow({ collection, usePrice, href }: CoinTileProps) {\n const m = useTileModel({ collection, usePrice });\n return (\n <Link href={href} className=\"flex items-center gap-3 rounded-lg border border-border/60 bg-card px-3 py-2.5 transition-colors hover:border-primary/40 active:scale-[0.99]\">\n <div className=\"relative h-9 w-9 shrink-0 overflow-hidden rounded-full bg-muted\">\n {m.logo ? <Image src={m.logo} alt=\"\" fill sizes=\"36px\" className=\"object-cover\" unoptimized /> :\n <div className={cn(\"flex h-full w-full items-center justify-center bg-gradient-to-br text-2xs font-bold text-white\", KIND_FALLBACK[m.kind])}>{m.initials}</div>}\n </div>\n <div className=\"min-w-0 flex-1\">\n <span className=\"truncate text-sm font-semibold\">{collection.name ?? \"Untitled coin\"}</span>\n <span className=\"block truncate text-xs text-muted-foreground\">{collection.symbol ?? \"—\"}</span>\n </div>\n <span className={cn(\"hidden shrink-0 rounded-full border px-2 py-0.5 text-2xs font-medium sm:inline-block\", KIND_TAG[m.kind])}>\n {kindLabel(m.kind)}\n </span>\n <span className=\"w-28 shrink-0 text-right text-sm\">\n <PriceValue price={m.price} isLoading={m.isLoading} />\n </span>\n </Link>\n );\n}\n\nexport function CoinCardSkeleton() {\n return (\n <div className=\"card-base flex flex-col\">\n <div className=\"aspect-square w-full animate-pulse bg-muted\" />\n <div className=\"flex flex-col gap-2 p-3\">\n <div className=\"space-y-1.5\">\n <div className=\"h-4 w-24 rounded bg-muted-foreground/20 animate-pulse\" />\n <div className=\"h-3 w-12 rounded bg-muted-foreground/20 animate-pulse\" />\n </div>\n <div className=\"h-4 w-full rounded bg-muted-foreground/10 animate-pulse\" />\n </div>\n </div>\n );\n}\n"],"mappings":"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","names":["Link","Image"]}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { CoinCollectionLike, CoinPriceLike } from '../data/coins.cjs';
|
|
3
3
|
|
|
4
|
-
/** Injected per-chain spot-price read. `price` is null while loading/unknown. */
|
|
5
4
|
type UseCoinPrice = (collection: CoinCollectionLike) => {
|
|
6
5
|
price: CoinPriceLike | null;
|
|
7
6
|
isLoading: boolean;
|
|
@@ -9,7 +8,6 @@ type UseCoinPrice = (collection: CoinCollectionLike) => {
|
|
|
9
8
|
interface CoinTileProps {
|
|
10
9
|
collection: CoinCollectionLike;
|
|
11
10
|
usePrice: UseCoinPrice;
|
|
12
|
-
/** Link target — internal coin page or the per-chain trading app. */
|
|
13
11
|
href: string;
|
|
14
12
|
}
|
|
15
13
|
declare function CoinCard({ collection, usePrice, href }: CoinTileProps): react_jsx_runtime.JSX.Element;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { CoinCollectionLike, CoinPriceLike } from '../data/coins.js';
|
|
3
3
|
|
|
4
|
-
/** Injected per-chain spot-price read. `price` is null while loading/unknown. */
|
|
5
4
|
type UseCoinPrice = (collection: CoinCollectionLike) => {
|
|
6
5
|
price: CoinPriceLike | null;
|
|
7
6
|
isLoading: boolean;
|
|
@@ -9,7 +8,6 @@ type UseCoinPrice = (collection: CoinCollectionLike) => {
|
|
|
9
8
|
interface CoinTileProps {
|
|
10
9
|
collection: CoinCollectionLike;
|
|
11
10
|
usePrice: UseCoinPrice;
|
|
12
|
-
/** Link target — internal coin page or the per-chain trading app. */
|
|
13
11
|
href: string;
|
|
14
12
|
}
|
|
15
13
|
declare function CoinCard({ collection, usePrice, href }: CoinTileProps): react_jsx_runtime.JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/coin-card.tsx"],"sourcesContent":["\"use client\";\n\
|
|
1
|
+
{"version":3,"sources":["../../src/components/coin-card.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"next/link\";\nimport Image from \"next/image\";\nimport { cn } from \"../utils/cn.js\";\nimport { ipfsToHttp } from \"../utils/ipfs.js\";\nimport { MotionCard } from \"./motion-primitives.js\";\nimport { CurrencyIcon } from \"./currency-icon.js\";\nimport {\n coinKind, formatCoinPrice,\n type CoinCollectionLike, type CoinPriceLike,\n} from \"../data/coins.js\";\n\nexport type UseCoinPrice = (collection: CoinCollectionLike) => {\n price: CoinPriceLike | null;\n isLoading: boolean;\n};\n\nexport interface CoinTileProps {\n collection: CoinCollectionLike;\n usePrice: UseCoinPrice;\n\n href: string;\n}\n\nconst KIND_TAG: Record<string, string> = {\n creator: \"border-brand-blue/30 bg-brand-blue/10 text-brand-blue\",\n memecoin: \"border-brand-purple/30 bg-brand-purple/10 text-brand-purple\",\n};\n\nconst KIND_OVER_IMAGE: Record<string, string> = {\n creator: \"bg-brand-blue/85 text-white\",\n memecoin: \"bg-brand-purple/85 text-white\",\n};\n\nconst KIND_FALLBACK: Record<string, string> = {\n creator: \"from-brand-blue to-brand-purple\",\n memecoin: \"from-brand-purple to-brand-rose\",\n};\n\nconst kindLabel = (kind: string) => (kind === \"creator\" ? \"Creator Coin\" : \"Memecoin\");\n\nfunction useTileModel({ collection, usePrice }: Omit<CoinTileProps, \"href\">) {\n const { price, isLoading } = usePrice(collection);\n const kind = coinKind(collection.service);\n const logoUri = collection.profile?.image ?? collection.image;\n const logo = logoUri ? ipfsToHttp(logoUri) : null;\n const initials = (collection.symbol ?? collection.name ?? \"?\").trim().slice(0, 2).toUpperCase();\n return { price, isLoading, kind, logo, initials };\n}\n\nfunction PriceValue({ price, isLoading }: { price: CoinPriceLike | null; isLoading: boolean }) {\n if (isLoading) return <span className=\"inline-block h-4 w-14 rounded bg-muted-foreground/20 animate-pulse\" />;\n if (!price) return <span className=\"text-muted-foreground\">—</span>;\n return (\n <span className=\"inline-flex items-center gap-1 font-semibold tabular-nums\">\n <CurrencyIcon symbol={price.quoteSymbol} size={14} />\n {formatCoinPrice(price.quotePerCoin)}\n </span>\n );\n}\n\nexport function CoinCard({ collection, usePrice, href }: CoinTileProps) {\n const m = useTileModel({ collection, usePrice });\n return (\n <MotionCard className=\"card-base group relative flex h-full flex-col\">\n <Link href={href} className=\"flex h-full flex-col\">\n\n <div className=\"relative aspect-square w-full overflow-hidden bg-muted\">\n {m.logo ? (\n <Image\n src={m.logo}\n alt={collection.name ?? \"Coin\"}\n fill\n sizes=\"(min-width:1280px) 25vw, (min-width:1024px) 33vw, (min-width:640px) 50vw, 100vw\"\n className=\"object-cover transition-transform duration-500 group-hover:scale-105\"\n unoptimized\n />\n ) : (\n <div className={cn(\"absolute inset-0 flex items-center justify-center bg-gradient-to-br\", KIND_FALLBACK[m.kind])}>\n <span className=\"select-none text-5xl font-black tracking-tighter text-white/90\">{m.initials}</span>\n </div>\n )}\n <span className={cn(\"absolute left-2 top-2 rounded-full px-2 py-0.5 text-2xs font-semibold backdrop-blur-md\", KIND_OVER_IMAGE[m.kind])}>\n {kindLabel(m.kind)}\n </span>\n </div>\n\n <div className=\"flex flex-col gap-2 p-3\">\n <div className=\"min-w-0\">\n <div className=\"truncate font-semibold leading-tight\">{collection.name ?? \"Untitled coin\"}</div>\n <div className=\"truncate text-sm text-muted-foreground\">{collection.symbol ?? \"—\"}</div>\n </div>\n <div className=\"flex items-baseline justify-between gap-2\">\n <span className=\"text-2xs uppercase tracking-wide text-muted-foreground\">Price</span>\n <PriceValue price={m.price} isLoading={m.isLoading} />\n </div>\n </div>\n </Link>\n </MotionCard>\n );\n}\n\nexport function CoinRow({ collection, usePrice, href }: CoinTileProps) {\n const m = useTileModel({ collection, usePrice });\n return (\n <Link href={href} className=\"flex items-center gap-3 rounded-lg border border-border/60 bg-card px-3 py-2.5 transition-colors hover:border-primary/40 active:scale-[0.99]\">\n <div className=\"relative h-9 w-9 shrink-0 overflow-hidden rounded-full bg-muted\">\n {m.logo ? <Image src={m.logo} alt=\"\" fill sizes=\"36px\" className=\"object-cover\" unoptimized /> :\n <div className={cn(\"flex h-full w-full items-center justify-center bg-gradient-to-br text-2xs font-bold text-white\", KIND_FALLBACK[m.kind])}>{m.initials}</div>}\n </div>\n <div className=\"min-w-0 flex-1\">\n <span className=\"truncate text-sm font-semibold\">{collection.name ?? \"Untitled coin\"}</span>\n <span className=\"block truncate text-xs text-muted-foreground\">{collection.symbol ?? \"—\"}</span>\n </div>\n <span className={cn(\"hidden shrink-0 rounded-full border px-2 py-0.5 text-2xs font-medium sm:inline-block\", KIND_TAG[m.kind])}>\n {kindLabel(m.kind)}\n </span>\n <span className=\"w-28 shrink-0 text-right text-sm\">\n <PriceValue price={m.price} isLoading={m.isLoading} />\n </span>\n </Link>\n );\n}\n\nexport function CoinCardSkeleton() {\n return (\n <div className=\"card-base flex flex-col\">\n <div className=\"aspect-square w-full animate-pulse bg-muted\" />\n <div className=\"flex flex-col gap-2 p-3\">\n <div className=\"space-y-1.5\">\n <div className=\"h-4 w-24 rounded bg-muted-foreground/20 animate-pulse\" />\n <div className=\"h-3 w-12 rounded bg-muted-foreground/20 animate-pulse\" />\n </div>\n <div className=\"h-4 w-full rounded bg-muted-foreground/10 animate-pulse\" />\n </div>\n </div>\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/coin-launch-preview.tsx"],"sourcesContent":["\"use client\";\n\nimport Image from \"next/image\";\nimport { TrendingUp } from \"lucide-react\";\nimport { cn } from \"../utils/cn.js\";\n\nexport interface CoinPreviewData {\n name: string;\n symbol: string;\n description: string;\n
|
|
1
|
+
{"version":3,"sources":["../../src/components/coin-launch-preview.tsx"],"sourcesContent":["\"use client\";\n\nimport Image from \"next/image\";\nimport { TrendingUp } from \"lucide-react\";\nimport { cn } from \"../utils/cn.js\";\n\nexport interface CoinPreviewData {\n name: string;\n symbol: string;\n description: string;\n\n imageUrl: string | null;\n\n supplyHuman: number | null;\n quoteSymbol: string;\n teamPct: number;\n}\n\nconst LAUNCH_PRICE = 0.01;\n\nconst COIN_GRADIENT = \"linear-gradient(135deg, #f6608f, #fb8b46)\";\n\nexport function CoinLaunchPreview({ data, className }: { data: CoinPreviewData; className?: string }) {\n const { name, symbol, description, imageUrl, supplyHuman, quoteSymbol, teamPct } = data;\n const marketCap = supplyHuman != null ? supplyHuman * LAUNCH_PRICE : null;\n const yourCoins = supplyHuman != null ? supplyHuman * (teamPct / 100) : null;\n\n return (\n <div className={cn(\"rounded-2xl bg-muted/50 dark:bg-card overflow-hidden\", className)}>\n <div className=\"px-5 pt-4\">\n <p className=\"section-label\">Live preview</p>\n </div>\n\n <div className=\"p-5 space-y-4\">\n\n <div className=\"flex items-center gap-3\">\n <div className=\"shrink-0 rounded-full p-[2px]\" style={{ background: COIN_GRADIENT }}>\n <div className=\"relative h-14 w-14 rounded-full overflow-hidden bg-card flex items-center justify-center\">\n {imageUrl ? (\n <Image src={imageUrl} alt=\"\" fill sizes=\"56px\" className=\"object-cover\" unoptimized />\n ) : (\n <TrendingUp className=\"h-6 w-6 text-brand-rose/70\" />\n )}\n </div>\n </div>\n <div className=\"min-w-0 flex-1\">\n <p className={cn(\"font-bold text-lg leading-snug truncate\", !name && \"text-muted-foreground/50\")}>\n {name || \"Your coin\"}\n </p>\n <p className=\"text-sm text-muted-foreground tabular-nums\">{symbol ? `$${symbol}` : \"$SYMBOL\"}</p>\n </div>\n </div>\n\n {description ? (\n <p className=\"text-sm text-muted-foreground leading-relaxed line-clamp-3\">{description}</p>\n ) : null}\n\n <div className=\"grid grid-cols-3 gap-2 rounded-xl bg-muted/50 dark:bg-muted/30 p-3 text-sm\">\n <div>\n <p className=\"text-2xs uppercase tracking-wide text-muted-foreground\">Launch price</p>\n <p className=\"font-semibold tabular-nums\">{LAUNCH_PRICE} {quoteSymbol}</p>\n </div>\n <div>\n <p className=\"text-2xs uppercase tracking-wide text-muted-foreground\">Market cap</p>\n <p className=\"font-semibold tabular-nums text-brand-maeve\">\n {marketCap != null ? `${marketCap.toLocaleString()} ${quoteSymbol}` : \"—\"}\n </p>\n </div>\n <div>\n <p className=\"text-2xs uppercase tracking-wide text-muted-foreground\">Your share</p>\n <p className=\"font-semibold tabular-nums\">\n {yourCoins != null ? `${teamPct}% · ${yourCoins.toLocaleString()}` : `${teamPct}%`}\n </p>\n </div>\n </div>\n\n <div className=\"space-y-1.5\">\n <div className=\"flex h-2.5 rounded-full overflow-hidden bg-muted-foreground/15\">\n {teamPct > 0 && <div style={{ width: `${teamPct}%`, background: COIN_GRADIENT }} />}\n <div className=\"flex-1\" />\n </div>\n <div className=\"flex justify-between text-2xs text-muted-foreground\">\n <span className=\"font-medium text-brand-rose\">You {teamPct}%</span>\n <span>Community {100 - teamPct}%</span>\n </div>\n </div>\n\n <p className=\"text-2xs text-muted-foreground/70\">\n Liquidity is locked forever — nobody can pull it, including us.\n </p>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA8BQ;AA5BR,mBAAkB;AAClB,0BAA2B;AAC3B,gBAAmB;AAcnB,MAAM,eAAe;AAErB,MAAM,gBAAgB;AAEf,SAAS,kBAAkB,EAAE,MAAM,UAAU,GAAkD;AACpG,QAAM,EAAE,MAAM,QAAQ,aAAa,UAAU,aAAa,aAAa,QAAQ,IAAI;AACnF,QAAM,YAAY,eAAe,OAAO,cAAc,eAAe;AACrE,QAAM,YAAY,eAAe,OAAO,eAAe,UAAU,OAAO;AAExE,SACE,6CAAC,SAAI,eAAW,cAAG,wDAAwD,SAAS,GAClF;AAAA,gDAAC,SAAI,WAAU,aACb,sDAAC,OAAE,WAAU,iBAAgB,0BAAY,GAC3C;AAAA,IAEA,6CAAC,SAAI,WAAU,iBAEb;AAAA,mDAAC,SAAI,WAAU,2BACb;AAAA,oDAAC,SAAI,WAAU,iCAAgC,OAAO,EAAE,YAAY,cAAc,GAChF,sDAAC,SAAI,WAAU,4FACZ,qBACC,4CAAC,aAAAA,SAAA,EAAM,KAAK,UAAU,KAAI,IAAG,MAAI,MAAC,OAAM,QAAO,WAAU,gBAAe,aAAW,MAAC,IAEpF,4CAAC,kCAAW,WAAU,8BAA6B,GAEvD,GACF;AAAA,QACA,6CAAC,SAAI,WAAU,kBACb;AAAA,sDAAC,OAAE,eAAW,cAAG,2CAA2C,CAAC,QAAQ,0BAA0B,GAC5F,kBAAQ,aACX;AAAA,UACA,4CAAC,OAAE,WAAU,8CAA8C,mBAAS,IAAI,MAAM,KAAK,WAAU;AAAA,WAC/F;AAAA,SACF;AAAA,MAEC,cACC,4CAAC,OAAE,WAAU,8DAA8D,uBAAY,IACrF;AAAA,MAEJ,6CAAC,SAAI,WAAU,8EACb;AAAA,qDAAC,SACC;AAAA,sDAAC,OAAE,WAAU,0DAAyD,0BAAY;AAAA,UAClF,6CAAC,OAAE,WAAU,8BAA8B;AAAA;AAAA,YAAa;AAAA,YAAE;AAAA,aAAY;AAAA,WACxE;AAAA,QACA,6CAAC,SACC;AAAA,sDAAC,OAAE,WAAU,0DAAyD,wBAAU;AAAA,UAChF,4CAAC,OAAE,WAAU,+CACV,uBAAa,OAAO,GAAG,UAAU,eAAe,CAAC,IAAI,WAAW,KAAK,UACxE;AAAA,WACF;AAAA,QACA,6CAAC,SACC;AAAA,sDAAC,OAAE,WAAU,0DAAyD,wBAAU;AAAA,UAChF,4CAAC,OAAE,WAAU,8BACV,uBAAa,OAAO,GAAG,OAAO,UAAO,UAAU,eAAe,CAAC,KAAK,GAAG,OAAO,KACjF;AAAA,WACF;AAAA,SACF;AAAA,MAEA,6CAAC,SAAI,WAAU,eACb;AAAA,qDAAC,SAAI,WAAU,kEACZ;AAAA,oBAAU,KAAK,4CAAC,SAAI,OAAO,EAAE,OAAO,GAAG,OAAO,KAAK,YAAY,cAAc,GAAG;AAAA,UACjF,4CAAC,SAAI,WAAU,UAAS;AAAA,WAC1B;AAAA,QACA,6CAAC,SAAI,WAAU,uDACb;AAAA,uDAAC,UAAK,WAAU,+BAA8B;AAAA;AAAA,YAAK;AAAA,YAAQ;AAAA,aAAC;AAAA,UAC5D,6CAAC,UAAK;AAAA;AAAA,YAAW,MAAM;AAAA,YAAQ;AAAA,aAAC;AAAA,WAClC;AAAA,SACF;AAAA,MAEA,4CAAC,OAAE,WAAU,qCAAoC,kFAEjD;AAAA,OACF;AAAA,KACF;AAEJ;","names":["Image"]}
|
|
@@ -4,18 +4,11 @@ interface CoinPreviewData {
|
|
|
4
4
|
name: string;
|
|
5
5
|
symbol: string;
|
|
6
6
|
description: string;
|
|
7
|
-
/** Local object URL or resolved IPFS URL for the feature image */
|
|
8
7
|
imageUrl: string | null;
|
|
9
|
-
/** Human supply (already validated) or null while typing */
|
|
10
8
|
supplyHuman: number | null;
|
|
11
9
|
quoteSymbol: string;
|
|
12
10
|
teamPct: number;
|
|
13
11
|
}
|
|
14
|
-
/** Live preview for the Creator Coin launch studio — builds the coin in front
|
|
15
|
-
* of the creator as they type. Mirrors the coin's eventual discovery card so
|
|
16
|
-
* what they design is what their fans will see. Quiet borderless panel in the
|
|
17
|
-
* launchpad-rail language; the warm coin gradient appears only as the avatar
|
|
18
|
-
* ring and the allocation bar. */
|
|
19
12
|
declare function CoinLaunchPreview({ data, className }: {
|
|
20
13
|
data: CoinPreviewData;
|
|
21
14
|
className?: string;
|
|
@@ -4,18 +4,11 @@ interface CoinPreviewData {
|
|
|
4
4
|
name: string;
|
|
5
5
|
symbol: string;
|
|
6
6
|
description: string;
|
|
7
|
-
/** Local object URL or resolved IPFS URL for the feature image */
|
|
8
7
|
imageUrl: string | null;
|
|
9
|
-
/** Human supply (already validated) or null while typing */
|
|
10
8
|
supplyHuman: number | null;
|
|
11
9
|
quoteSymbol: string;
|
|
12
10
|
teamPct: number;
|
|
13
11
|
}
|
|
14
|
-
/** Live preview for the Creator Coin launch studio — builds the coin in front
|
|
15
|
-
* of the creator as they type. Mirrors the coin's eventual discovery card so
|
|
16
|
-
* what they design is what their fans will see. Quiet borderless panel in the
|
|
17
|
-
* launchpad-rail language; the warm coin gradient appears only as the avatar
|
|
18
|
-
* ring and the allocation bar. */
|
|
19
12
|
declare function CoinLaunchPreview({ data, className }: {
|
|
20
13
|
data: CoinPreviewData;
|
|
21
14
|
className?: string;
|