@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.
- 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 +1 -7
- 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 +1 -7
- 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 +8 -3
- package/dist/components/portfolio-bento-tile.cjs.map +1 -1
- package/dist/components/portfolio-bento-tile.d.cts +5 -13
- package/dist/components/portfolio-bento-tile.d.ts +5 -13
- package/dist/components/portfolio-bento-tile.js +8 -3
- 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 +6 -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 +6 -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
package/dist/preset/tailwind.js
CHANGED
|
@@ -2,10 +2,6 @@ const medialanePreset = {
|
|
|
2
2
|
theme: {
|
|
3
3
|
extend: {
|
|
4
4
|
colors: {
|
|
5
|
-
// Each resolves via the app's own --brand-* CSS var when defined
|
|
6
|
-
// (medialane-io, medialane-starknet); the fallback keeps every
|
|
7
|
-
// color working standalone for any consumer that defines none
|
|
8
|
-
// (medialane-portal today, or a future app).
|
|
9
5
|
"brand-blue": "hsl(var(--brand-blue, 220 100% 62%))",
|
|
10
6
|
"brand-purple": "hsl(var(--brand-purple, 258 90% 66%))",
|
|
11
7
|
"brand-rose": "hsl(var(--brand-rose, 341 89% 67%))",
|
|
@@ -17,14 +13,9 @@ const medialanePreset = {
|
|
|
17
13
|
brand: "11px"
|
|
18
14
|
},
|
|
19
15
|
fontFamily: {
|
|
20
|
-
// Brand display face (headings). Apps define --font-display via
|
|
21
|
-
// next/font (Urbanist); falls back to the body face when unset.
|
|
22
16
|
display: ["var(--font-display)", "Urbanist", "Inter", "system-ui", "sans-serif"]
|
|
23
17
|
},
|
|
24
18
|
fontSize: {
|
|
25
|
-
// Floor for true micro-text (timestamps, counts) — nothing in the
|
|
26
|
-
// package should go below this. Everything else uses Tailwind's
|
|
27
|
-
// built-in scale (xs=12px and up).
|
|
28
19
|
"2xs": ["11px", { lineHeight: "14px" }]
|
|
29
20
|
}
|
|
30
21
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/preset/tailwind.ts"],"sourcesContent":["import type { Config } from \"tailwindcss\";\n\nconst medialanePreset: Partial<Config> = {\n theme: {\n extend: {\n colors: {\n
|
|
1
|
+
{"version":3,"sources":["../../src/preset/tailwind.ts"],"sourcesContent":["import type { Config } from \"tailwindcss\";\n\nconst medialanePreset: Partial<Config> = {\n theme: {\n extend: {\n colors: {\n\n \"brand-blue\": \"hsl(var(--brand-blue, 220 100% 62%))\",\n \"brand-purple\": \"hsl(var(--brand-purple, 258 90% 66%))\",\n \"brand-rose\": \"hsl(var(--brand-rose, 341 89% 67%))\",\n \"brand-orange\": \"hsl(var(--brand-orange, 23 96% 63%))\",\n \"brand-maeve\": \"hsl(var(--brand-maeve, 327 64% 67%))\",\n \"brand-navy\": \"hsl(var(--brand-navy, 229 51% 8%))\",\n },\n borderRadius: {\n brand: \"11px\",\n },\n fontFamily: {\n\n display: [\"var(--font-display)\", \"Urbanist\", \"Inter\", \"system-ui\", \"sans-serif\"],\n },\n fontSize: {\n\n \"2xs\": [\"11px\", { lineHeight: \"14px\" }],\n },\n },\n },\n};\n\nexport default medialanePreset;\n"],"mappings":"AAEA,MAAM,kBAAmC;AAAA,EACvC,OAAO;AAAA,IACL,QAAQ;AAAA,MACN,QAAQ;AAAA,QAEN,cAAkB;AAAA,QAClB,gBAAkB;AAAA,QAClB,cAAkB;AAAA,QAClB,gBAAkB;AAAA,QAClB,eAAkB;AAAA,QAClB,cAAkB;AAAA,MACpB;AAAA,MACA,cAAc;AAAA,QACZ,OAAO;AAAA,MACT;AAAA,MACA,YAAY;AAAA,QAEV,SAAS,CAAC,uBAAuB,YAAY,SAAS,aAAa,YAAY;AAAA,MACjF;AAAA,MACA,UAAU;AAAA,QAER,OAAO,CAAC,QAAQ,EAAE,YAAY,OAAO,CAAC;AAAA,MACxC;AAAA,IACF;AAAA,EACF;AACF;AAEA,IAAO,mBAAQ;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/address.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../src/utils/address.ts"],"sourcesContent":["\nexport function shortenAddress(address: string, chars = 4): string {\n if (!address) return \"\";\n if (address.length <= chars * 2 + 2) return address;\n return `${address.slice(0, chars + 2)}…${address.slice(-chars)}`;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACO,SAAS,eAAe,SAAiB,QAAQ,GAAW;AACjE,MAAI,CAAC,QAAS,QAAO;AACrB,MAAI,QAAQ,UAAU,QAAQ,IAAI,EAAG,QAAO;AAC5C,SAAO,GAAG,QAAQ,MAAM,GAAG,QAAQ,CAAC,CAAC,SAAI,QAAQ,MAAM,CAAC,KAAK,CAAC;AAChE;","names":[]}
|
package/dist/utils/address.d.cts
CHANGED
package/dist/utils/address.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/address.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../src/utils/address.ts"],"sourcesContent":["\nexport function shortenAddress(address: string, chars = 4): string {\n if (!address) return \"\";\n if (address.length <= chars * 2 + 2) return address;\n return `${address.slice(0, chars + 2)}…${address.slice(-chars)}`;\n}\n"],"mappings":"AACO,SAAS,eAAe,SAAiB,QAAQ,GAAW;AACjE,MAAI,CAAC,QAAS,QAAO;AACrB,MAAI,QAAQ,UAAU,QAAQ,IAAI,EAAG,QAAO;AAC5C,SAAO,GAAG,QAAQ,MAAM,GAAG,QAAQ,CAAC,CAAC,SAAI,QAAQ,MAAM,CAAC,KAAK,CAAC;AAChE;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/api-fetch.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../src/utils/api-fetch.ts"],"sourcesContent":["\nexport class ApiError extends Error {\n constructor(public readonly status: number, message: string) {\n super(message);\n this.name = \"ApiError\";\n }\n}\n\nexport interface ApiFetchConfig {\n baseUrl: string;\n apiKey?: string;\n}\n\nexport interface ApiFetchOptions {\n method?: \"GET\" | \"POST\" | \"PATCH\" | \"PUT\" | \"DELETE\";\n body?: unknown;\n\n bearer?: string | null;\n signal?: AbortSignal;\n}\n\nexport async function apiFetch<T = unknown>(\n config: ApiFetchConfig,\n path: string,\n options: ApiFetchOptions = {}\n): Promise<T> {\n const { method = \"GET\", body, bearer, signal } = options;\n const url = `${config.baseUrl.replace(/\\/$/, \"\")}${path.startsWith(\"/\") ? path : `/${path}`}`;\n\n const headers: Record<string, string> = {};\n if (body !== undefined) headers[\"Content-Type\"] = \"application/json\";\n if (config.apiKey) headers[\"x-api-key\"] = config.apiKey;\n if (bearer) headers[\"Authorization\"] = `Bearer ${bearer}`;\n\n const res = await fetch(url, {\n method,\n headers,\n body: body !== undefined ? JSON.stringify(body) : undefined,\n signal,\n });\n\n if (!res.ok) {\n const text = await res.text().catch(() => res.statusText);\n let message = text || `Request failed with HTTP ${res.status}`;\n try {\n const parsed = JSON.parse(text);\n if (parsed && typeof parsed === \"object\" && \"error\" in parsed && typeof parsed.error === \"string\") {\n message = parsed.error;\n }\n } catch {\n\n }\n throw new ApiError(res.status, message);\n }\n\n if (res.status === 204) return undefined as T;\n return res.json() as Promise<T>;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACO,MAAM,iBAAiB,MAAM;AAAA,EAClC,YAA4B,QAAgB,SAAiB;AAC3D,UAAM,OAAO;AADa;AAE1B,SAAK,OAAO;AAAA,EACd;AACF;AAeA,eAAsB,SACpB,QACA,MACA,UAA2B,CAAC,GAChB;AACZ,QAAM,EAAE,SAAS,OAAO,MAAM,QAAQ,OAAO,IAAI;AACjD,QAAM,MAAM,GAAG,OAAO,QAAQ,QAAQ,OAAO,EAAE,CAAC,GAAG,KAAK,WAAW,GAAG,IAAI,OAAO,IAAI,IAAI,EAAE;AAE3F,QAAM,UAAkC,CAAC;AACzC,MAAI,SAAS,OAAW,SAAQ,cAAc,IAAI;AAClD,MAAI,OAAO,OAAQ,SAAQ,WAAW,IAAI,OAAO;AACjD,MAAI,OAAQ,SAAQ,eAAe,IAAI,UAAU,MAAM;AAEvD,QAAM,MAAM,MAAM,MAAM,KAAK;AAAA,IAC3B;AAAA,IACA;AAAA,IACA,MAAM,SAAS,SAAY,KAAK,UAAU,IAAI,IAAI;AAAA,IAClD;AAAA,EACF,CAAC;AAED,MAAI,CAAC,IAAI,IAAI;AACX,UAAM,OAAO,MAAM,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,UAAU;AACxD,QAAI,UAAU,QAAQ,4BAA4B,IAAI,MAAM;AAC5D,QAAI;AACF,YAAM,SAAS,KAAK,MAAM,IAAI;AAC9B,UAAI,UAAU,OAAO,WAAW,YAAY,WAAW,UAAU,OAAO,OAAO,UAAU,UAAU;AACjG,kBAAU,OAAO;AAAA,MACnB;AAAA,IACF,QAAQ;AAAA,IAER;AACA,UAAM,IAAI,SAAS,IAAI,QAAQ,OAAO;AAAA,EACxC;AAEA,MAAI,IAAI,WAAW,IAAK,QAAO;AAC/B,SAAO,IAAI,KAAK;AAClB;","names":[]}
|
|
@@ -1,23 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Thin fetch helper for backend `/v1/*` routes that are not yet exposed via
|
|
3
|
-
* `@medialane/sdk`'s `ApiClient`. Takes `{ baseUrl, apiKey }` as an explicit
|
|
4
|
-
* config rather than reading env vars directly — each app's own
|
|
5
|
-
* `MEDIALANE_BACKEND_URL` resolution is environment-aware (server gets the
|
|
6
|
-
* real backend URL + key; the browser gets a same-origin BFF proxy that
|
|
7
|
-
* injects the real key server-side) and that routing/security logic stays
|
|
8
|
-
* app-local, same as `getMedialaneClient`.
|
|
9
|
-
*
|
|
10
|
-
* Error model:
|
|
11
|
-
* `ApiError` carries the HTTP `status` so callers can special-case auth
|
|
12
|
-
* states (401/403) without a generic error toast.
|
|
13
|
-
*
|
|
14
|
-
* Headers:
|
|
15
|
-
* - `x-api-key` is injected when `apiKey` is non-empty.
|
|
16
|
-
* - `Authorization: Bearer <token>` is forwarded if the caller passes
|
|
17
|
-
* `bearer` — used for SIWS-gated routes.
|
|
18
|
-
* - `Content-Type: application/json` is set automatically when a body is
|
|
19
|
-
* present.
|
|
20
|
-
*/
|
|
21
1
|
declare class ApiError extends Error {
|
|
22
2
|
readonly status: number;
|
|
23
3
|
constructor(status: number, message: string);
|
|
@@ -29,7 +9,6 @@ interface ApiFetchConfig {
|
|
|
29
9
|
interface ApiFetchOptions {
|
|
30
10
|
method?: "GET" | "POST" | "PATCH" | "PUT" | "DELETE";
|
|
31
11
|
body?: unknown;
|
|
32
|
-
/** Bearer token (SIWS) for identity-aware routes. */
|
|
33
12
|
bearer?: string | null;
|
|
34
13
|
signal?: AbortSignal;
|
|
35
14
|
}
|
|
@@ -1,23 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Thin fetch helper for backend `/v1/*` routes that are not yet exposed via
|
|
3
|
-
* `@medialane/sdk`'s `ApiClient`. Takes `{ baseUrl, apiKey }` as an explicit
|
|
4
|
-
* config rather than reading env vars directly — each app's own
|
|
5
|
-
* `MEDIALANE_BACKEND_URL` resolution is environment-aware (server gets the
|
|
6
|
-
* real backend URL + key; the browser gets a same-origin BFF proxy that
|
|
7
|
-
* injects the real key server-side) and that routing/security logic stays
|
|
8
|
-
* app-local, same as `getMedialaneClient`.
|
|
9
|
-
*
|
|
10
|
-
* Error model:
|
|
11
|
-
* `ApiError` carries the HTTP `status` so callers can special-case auth
|
|
12
|
-
* states (401/403) without a generic error toast.
|
|
13
|
-
*
|
|
14
|
-
* Headers:
|
|
15
|
-
* - `x-api-key` is injected when `apiKey` is non-empty.
|
|
16
|
-
* - `Authorization: Bearer <token>` is forwarded if the caller passes
|
|
17
|
-
* `bearer` — used for SIWS-gated routes.
|
|
18
|
-
* - `Content-Type: application/json` is set automatically when a body is
|
|
19
|
-
* present.
|
|
20
|
-
*/
|
|
21
1
|
declare class ApiError extends Error {
|
|
22
2
|
readonly status: number;
|
|
23
3
|
constructor(status: number, message: string);
|
|
@@ -29,7 +9,6 @@ interface ApiFetchConfig {
|
|
|
29
9
|
interface ApiFetchOptions {
|
|
30
10
|
method?: "GET" | "POST" | "PATCH" | "PUT" | "DELETE";
|
|
31
11
|
body?: unknown;
|
|
32
|
-
/** Bearer token (SIWS) for identity-aware routes. */
|
|
33
12
|
bearer?: string | null;
|
|
34
13
|
signal?: AbortSignal;
|
|
35
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/api-fetch.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../src/utils/api-fetch.ts"],"sourcesContent":["\nexport class ApiError extends Error {\n constructor(public readonly status: number, message: string) {\n super(message);\n this.name = \"ApiError\";\n }\n}\n\nexport interface ApiFetchConfig {\n baseUrl: string;\n apiKey?: string;\n}\n\nexport interface ApiFetchOptions {\n method?: \"GET\" | \"POST\" | \"PATCH\" | \"PUT\" | \"DELETE\";\n body?: unknown;\n\n bearer?: string | null;\n signal?: AbortSignal;\n}\n\nexport async function apiFetch<T = unknown>(\n config: ApiFetchConfig,\n path: string,\n options: ApiFetchOptions = {}\n): Promise<T> {\n const { method = \"GET\", body, bearer, signal } = options;\n const url = `${config.baseUrl.replace(/\\/$/, \"\")}${path.startsWith(\"/\") ? path : `/${path}`}`;\n\n const headers: Record<string, string> = {};\n if (body !== undefined) headers[\"Content-Type\"] = \"application/json\";\n if (config.apiKey) headers[\"x-api-key\"] = config.apiKey;\n if (bearer) headers[\"Authorization\"] = `Bearer ${bearer}`;\n\n const res = await fetch(url, {\n method,\n headers,\n body: body !== undefined ? JSON.stringify(body) : undefined,\n signal,\n });\n\n if (!res.ok) {\n const text = await res.text().catch(() => res.statusText);\n let message = text || `Request failed with HTTP ${res.status}`;\n try {\n const parsed = JSON.parse(text);\n if (parsed && typeof parsed === \"object\" && \"error\" in parsed && typeof parsed.error === \"string\") {\n message = parsed.error;\n }\n } catch {\n\n }\n throw new ApiError(res.status, message);\n }\n\n if (res.status === 204) return undefined as T;\n return res.json() as Promise<T>;\n}\n"],"mappings":"AACO,MAAM,iBAAiB,MAAM;AAAA,EAClC,YAA4B,QAAgB,SAAiB;AAC3D,UAAM,OAAO;AADa;AAE1B,SAAK,OAAO;AAAA,EACd;AACF;AAeA,eAAsB,SACpB,QACA,MACA,UAA2B,CAAC,GAChB;AACZ,QAAM,EAAE,SAAS,OAAO,MAAM,QAAQ,OAAO,IAAI;AACjD,QAAM,MAAM,GAAG,OAAO,QAAQ,QAAQ,OAAO,EAAE,CAAC,GAAG,KAAK,WAAW,GAAG,IAAI,OAAO,IAAI,IAAI,EAAE;AAE3F,QAAM,UAAkC,CAAC;AACzC,MAAI,SAAS,OAAW,SAAQ,cAAc,IAAI;AAClD,MAAI,OAAO,OAAQ,SAAQ,WAAW,IAAI,OAAO;AACjD,MAAI,OAAQ,SAAQ,eAAe,IAAI,UAAU,MAAM;AAEvD,QAAM,MAAM,MAAM,MAAM,KAAK;AAAA,IAC3B;AAAA,IACA;AAAA,IACA,MAAM,SAAS,SAAY,KAAK,UAAU,IAAI,IAAI;AAAA,IAClD;AAAA,EACF,CAAC;AAED,MAAI,CAAC,IAAI,IAAI;AACX,UAAM,OAAO,MAAM,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,UAAU;AACxD,QAAI,UAAU,QAAQ,4BAA4B,IAAI,MAAM;AAC5D,QAAI;AACF,YAAM,SAAS,KAAK,MAAM,IAAI;AAC9B,UAAI,UAAU,OAAO,WAAW,YAAY,WAAW,UAAU,OAAO,OAAO,UAAU,UAAU;AACjG,kBAAU,OAAO;AAAA,MACnB;AAAA,IACF,QAAQ;AAAA,IAER;AACA,UAAM,IAAI,SAAS,IAAI,QAAQ,OAAO;AAAA,EACxC;AAEA,MAAI,IAAI,WAAW,IAAK,QAAO;AAC/B,SAAO,IAAI,KAAK;AAClB;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/format.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../src/utils/format.ts"],"sourcesContent":["\nexport function isStableCurrency(symbol: string | null | undefined): boolean {\n return symbol === \"USDC\" || symbol === \"USDT\";\n}\n\nfunction adaptiveDecimals(num: number): number {\n if (num === 0 || num >= 1) return 2;\n if (num >= 0.01) return 4;\n const leadingZeros = Math.floor(-Math.log10(Math.abs(num)));\n return leadingZeros + 2;\n}\n\nexport function formatDisplayPrice(price: string | number | null | undefined): string {\n if (price === null || price === undefined) return \"\";\n const priceStr = String(price);\n const parts = priceStr.split(\" \");\n const numericPart = parts[0];\n const currencyPart = parts.length > 1 ? parts.slice(1).join(\" \") : \"\";\n const num = Number(numericPart);\n if (isNaN(num)) return priceStr;\n const maxDecimals = adaptiveDecimals(num);\n const formatted = num.toLocaleString(undefined, {\n minimumFractionDigits: Math.min(2, maxDecimals),\n maximumFractionDigits: maxDecimals,\n });\n return currencyPart ? `${formatted} ${currencyPart}` : formatted;\n}\n\nexport function parsePriceDisplay(raw: string | null | undefined): { numStr: string; symbol: string | null } {\n if (!raw) return { numStr: \"—\", symbol: null };\n const parts = raw.trim().split(\" \");\n const sym = parts.length > 1 ? parts[parts.length - 1] : null;\n const numericPart = sym ? parts.slice(0, -1).join(\" \") : raw;\n const num = Number(numericPart);\n if (isNaN(num)) return { numStr: \"—\", symbol: sym };\n if (num > 1e12) return { numStr: \"—\", symbol: null };\n const formatted = formatDisplayPrice(numericPart);\n if (!formatted || formatted === \"—\") return { numStr: \"—\", symbol: sym };\n const clean = formatted.replace(/(\\.\\d*?)0+$/, \"$1\").replace(/\\.$/, \"\");\n return { numStr: clean || \"—\", symbol: sym };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACO,SAAS,iBAAiB,QAA4C;AAC3E,SAAO,WAAW,UAAU,WAAW;AACzC;AAEA,SAAS,iBAAiB,KAAqB;AAC7C,MAAI,QAAQ,KAAK,OAAO,EAAG,QAAO;AAClC,MAAI,OAAO,KAAM,QAAO;AACxB,QAAM,eAAe,KAAK,MAAM,CAAC,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,CAAC;AAC1D,SAAO,eAAe;AACxB;AAEO,SAAS,mBAAmB,OAAmD;AACpF,MAAI,UAAU,QAAQ,UAAU,OAAW,QAAO;AAClD,QAAM,WAAW,OAAO,KAAK;AAC7B,QAAM,QAAQ,SAAS,MAAM,GAAG;AAChC,QAAM,cAAc,MAAM,CAAC;AAC3B,QAAM,eAAe,MAAM,SAAS,IAAI,MAAM,MAAM,CAAC,EAAE,KAAK,GAAG,IAAI;AACnE,QAAM,MAAM,OAAO,WAAW;AAC9B,MAAI,MAAM,GAAG,EAAG,QAAO;AACvB,QAAM,cAAc,iBAAiB,GAAG;AACxC,QAAM,YAAY,IAAI,eAAe,QAAW;AAAA,IAC9C,uBAAuB,KAAK,IAAI,GAAG,WAAW;AAAA,IAC9C,uBAAuB;AAAA,EACzB,CAAC;AACD,SAAO,eAAe,GAAG,SAAS,IAAI,YAAY,KAAK;AACzD;AAEO,SAAS,kBAAkB,KAA2E;AAC3G,MAAI,CAAC,IAAK,QAAO,EAAE,QAAQ,UAAK,QAAQ,KAAK;AAC7C,QAAM,QAAQ,IAAI,KAAK,EAAE,MAAM,GAAG;AAClC,QAAM,MAAM,MAAM,SAAS,IAAI,MAAM,MAAM,SAAS,CAAC,IAAI;AACzD,QAAM,cAAc,MAAM,MAAM,MAAM,GAAG,EAAE,EAAE,KAAK,GAAG,IAAI;AACzD,QAAM,MAAM,OAAO,WAAW;AAC9B,MAAI,MAAM,GAAG,EAAG,QAAO,EAAE,QAAQ,UAAK,QAAQ,IAAI;AAClD,MAAI,MAAM,KAAM,QAAO,EAAE,QAAQ,UAAK,QAAQ,KAAK;AACnD,QAAM,YAAY,mBAAmB,WAAW;AAChD,MAAI,CAAC,aAAa,cAAc,SAAK,QAAO,EAAE,QAAQ,UAAK,QAAQ,IAAI;AACvE,QAAM,QAAQ,UAAU,QAAQ,eAAe,IAAI,EAAE,QAAQ,OAAO,EAAE;AACtE,SAAO,EAAE,QAAQ,SAAS,UAAK,QAAQ,IAAI;AAC7C;","names":[]}
|
package/dist/utils/format.d.cts
CHANGED
|
@@ -1,16 +1,5 @@
|
|
|
1
|
-
/** USD-pegged currencies among SUPPORTED_TOKENS — their crypto amount and USD
|
|
2
|
-
* value are numerically ~identical, so price displays collapse to a single
|
|
3
|
-
* number instead of showing the same figure twice. */
|
|
4
1
|
declare function isStableCurrency(symbol: string | null | undefined): boolean;
|
|
5
|
-
/**
|
|
6
|
-
* Format a display price string with adaptive decimal places.
|
|
7
|
-
* Handles "1.234 USDC" format — reformats the numeric part, preserves the symbol.
|
|
8
|
-
*/
|
|
9
2
|
declare function formatDisplayPrice(price: string | number | null | undefined): string;
|
|
10
|
-
/**
|
|
11
|
-
* Parse a backend price string like "0.000012000000 WBTC" into a clean display + symbol.
|
|
12
|
-
* Strips trailing zeros ("1.500000" → "1.50"); guards against raw-wei values (> 1e12 → "—").
|
|
13
|
-
*/
|
|
14
3
|
declare function parsePriceDisplay(raw: string | null | undefined): {
|
|
15
4
|
numStr: string;
|
|
16
5
|
symbol: string | null;
|
package/dist/utils/format.d.ts
CHANGED
|
@@ -1,16 +1,5 @@
|
|
|
1
|
-
/** USD-pegged currencies among SUPPORTED_TOKENS — their crypto amount and USD
|
|
2
|
-
* value are numerically ~identical, so price displays collapse to a single
|
|
3
|
-
* number instead of showing the same figure twice. */
|
|
4
1
|
declare function isStableCurrency(symbol: string | null | undefined): boolean;
|
|
5
|
-
/**
|
|
6
|
-
* Format a display price string with adaptive decimal places.
|
|
7
|
-
* Handles "1.234 USDC" format — reformats the numeric part, preserves the symbol.
|
|
8
|
-
*/
|
|
9
2
|
declare function formatDisplayPrice(price: string | number | null | undefined): string;
|
|
10
|
-
/**
|
|
11
|
-
* Parse a backend price string like "0.000012000000 WBTC" into a clean display + symbol.
|
|
12
|
-
* Strips trailing zeros ("1.500000" → "1.50"); guards against raw-wei values (> 1e12 → "—").
|
|
13
|
-
*/
|
|
14
3
|
declare function parsePriceDisplay(raw: string | null | undefined): {
|
|
15
4
|
numStr: string;
|
|
16
5
|
symbol: string | null;
|
package/dist/utils/format.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/format.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../src/utils/format.ts"],"sourcesContent":["\nexport function isStableCurrency(symbol: string | null | undefined): boolean {\n return symbol === \"USDC\" || symbol === \"USDT\";\n}\n\nfunction adaptiveDecimals(num: number): number {\n if (num === 0 || num >= 1) return 2;\n if (num >= 0.01) return 4;\n const leadingZeros = Math.floor(-Math.log10(Math.abs(num)));\n return leadingZeros + 2;\n}\n\nexport function formatDisplayPrice(price: string | number | null | undefined): string {\n if (price === null || price === undefined) return \"\";\n const priceStr = String(price);\n const parts = priceStr.split(\" \");\n const numericPart = parts[0];\n const currencyPart = parts.length > 1 ? parts.slice(1).join(\" \") : \"\";\n const num = Number(numericPart);\n if (isNaN(num)) return priceStr;\n const maxDecimals = adaptiveDecimals(num);\n const formatted = num.toLocaleString(undefined, {\n minimumFractionDigits: Math.min(2, maxDecimals),\n maximumFractionDigits: maxDecimals,\n });\n return currencyPart ? `${formatted} ${currencyPart}` : formatted;\n}\n\nexport function parsePriceDisplay(raw: string | null | undefined): { numStr: string; symbol: string | null } {\n if (!raw) return { numStr: \"—\", symbol: null };\n const parts = raw.trim().split(\" \");\n const sym = parts.length > 1 ? parts[parts.length - 1] : null;\n const numericPart = sym ? parts.slice(0, -1).join(\" \") : raw;\n const num = Number(numericPart);\n if (isNaN(num)) return { numStr: \"—\", symbol: sym };\n if (num > 1e12) return { numStr: \"—\", symbol: null };\n const formatted = formatDisplayPrice(numericPart);\n if (!formatted || formatted === \"—\") return { numStr: \"—\", symbol: sym };\n const clean = formatted.replace(/(\\.\\d*?)0+$/, \"$1\").replace(/\\.$/, \"\");\n return { numStr: clean || \"—\", symbol: sym };\n}\n"],"mappings":"AACO,SAAS,iBAAiB,QAA4C;AAC3E,SAAO,WAAW,UAAU,WAAW;AACzC;AAEA,SAAS,iBAAiB,KAAqB;AAC7C,MAAI,QAAQ,KAAK,OAAO,EAAG,QAAO;AAClC,MAAI,OAAO,KAAM,QAAO;AACxB,QAAM,eAAe,KAAK,MAAM,CAAC,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,CAAC;AAC1D,SAAO,eAAe;AACxB;AAEO,SAAS,mBAAmB,OAAmD;AACpF,MAAI,UAAU,QAAQ,UAAU,OAAW,QAAO;AAClD,QAAM,WAAW,OAAO,KAAK;AAC7B,QAAM,QAAQ,SAAS,MAAM,GAAG;AAChC,QAAM,cAAc,MAAM,CAAC;AAC3B,QAAM,eAAe,MAAM,SAAS,IAAI,MAAM,MAAM,CAAC,EAAE,KAAK,GAAG,IAAI;AACnE,QAAM,MAAM,OAAO,WAAW;AAC9B,MAAI,MAAM,GAAG,EAAG,QAAO;AACvB,QAAM,cAAc,iBAAiB,GAAG;AACxC,QAAM,YAAY,IAAI,eAAe,QAAW;AAAA,IAC9C,uBAAuB,KAAK,IAAI,GAAG,WAAW;AAAA,IAC9C,uBAAuB;AAAA,EACzB,CAAC;AACD,SAAO,eAAe,GAAG,SAAS,IAAI,YAAY,KAAK;AACzD;AAEO,SAAS,kBAAkB,KAA2E;AAC3G,MAAI,CAAC,IAAK,QAAO,EAAE,QAAQ,UAAK,QAAQ,KAAK;AAC7C,QAAM,QAAQ,IAAI,KAAK,EAAE,MAAM,GAAG;AAClC,QAAM,MAAM,MAAM,SAAS,IAAI,MAAM,MAAM,SAAS,CAAC,IAAI;AACzD,QAAM,cAAc,MAAM,MAAM,MAAM,GAAG,EAAE,EAAE,KAAK,GAAG,IAAI;AACzD,QAAM,MAAM,OAAO,WAAW;AAC9B,MAAI,MAAM,GAAG,EAAG,QAAO,EAAE,QAAQ,UAAK,QAAQ,IAAI;AAClD,MAAI,MAAM,KAAM,QAAO,EAAE,QAAQ,UAAK,QAAQ,KAAK;AACnD,QAAM,YAAY,mBAAmB,WAAW;AAChD,MAAI,CAAC,aAAa,cAAc,SAAK,QAAO,EAAE,QAAQ,UAAK,QAAQ,IAAI;AACvE,QAAM,QAAQ,UAAU,QAAQ,eAAe,IAAI,EAAE,QAAQ,OAAO,EAAE;AACtE,SAAO,EAAE,QAAQ,SAAS,UAAK,QAAQ,IAAI;AAC7C;","names":[]}
|
package/dist/utils/ipfs.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/ipfs.ts"],"sourcesContent":["const DEFAULT_GATEWAY = \"https://ipfs.io/ipfs/\";\n\nconst ALLOWED_PROTOCOLS = new Set([\"http:\", \"https:\", \"ipfs:\"]);\n\
|
|
1
|
+
{"version":3,"sources":["../../src/utils/ipfs.ts"],"sourcesContent":["const DEFAULT_GATEWAY = \"https://ipfs.io/ipfs/\";\n\nconst ALLOWED_PROTOCOLS = new Set([\"http:\", \"https:\", \"ipfs:\"]);\n\nexport function ipfsToHttp(\n uri: string | null | undefined,\n gateway = DEFAULT_GATEWAY\n): string {\n if (!uri) return \"\";\n if (uri.startsWith(\"ipfs://\")) {\n return uri.replace(\"ipfs://\", gateway);\n }\n try {\n const { protocol } = new URL(uri);\n if (!ALLOWED_PROTOCOLS.has(protocol)) return \"\";\n } catch {\n return \"\";\n }\n return uri;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAM,kBAAkB;AAExB,MAAM,oBAAoB,oBAAI,IAAI,CAAC,SAAS,UAAU,OAAO,CAAC;AAEvD,SAAS,WACd,KACA,UAAU,iBACF;AACR,MAAI,CAAC,IAAK,QAAO;AACjB,MAAI,IAAI,WAAW,SAAS,GAAG;AAC7B,WAAO,IAAI,QAAQ,WAAW,OAAO;AAAA,EACvC;AACA,MAAI;AACF,UAAM,EAAE,SAAS,IAAI,IAAI,IAAI,GAAG;AAChC,QAAI,CAAC,kBAAkB,IAAI,QAAQ,EAAG,QAAO;AAAA,EAC/C,QAAQ;AACN,WAAO;AAAA,EACT;AACA,SAAO;AACT;","names":[]}
|
package/dist/utils/ipfs.d.cts
CHANGED
|
@@ -1,11 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Convert an IPFS URI to an HTTP URL.
|
|
3
|
-
* Accepts ipfs://<cid>, ipfs://<cid>/<path>, or plain HTTP/HTTPS URLs.
|
|
4
|
-
* Rejects javascript:, data:, blob:, and any other non-allowlisted protocols.
|
|
5
|
-
*
|
|
6
|
-
* @param uri - The IPFS URI or HTTP URL to convert.
|
|
7
|
-
* @param gateway - Gateway base URL (default: ipfs.io). Should end without a trailing slash.
|
|
8
|
-
*/
|
|
9
1
|
declare function ipfsToHttp(uri: string | null | undefined, gateway?: string): string;
|
|
10
2
|
|
|
11
3
|
export { ipfsToHttp };
|
package/dist/utils/ipfs.d.ts
CHANGED
|
@@ -1,11 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Convert an IPFS URI to an HTTP URL.
|
|
3
|
-
* Accepts ipfs://<cid>, ipfs://<cid>/<path>, or plain HTTP/HTTPS URLs.
|
|
4
|
-
* Rejects javascript:, data:, blob:, and any other non-allowlisted protocols.
|
|
5
|
-
*
|
|
6
|
-
* @param uri - The IPFS URI or HTTP URL to convert.
|
|
7
|
-
* @param gateway - Gateway base URL (default: ipfs.io). Should end without a trailing slash.
|
|
8
|
-
*/
|
|
9
1
|
declare function ipfsToHttp(uri: string | null | undefined, gateway?: string): string;
|
|
10
2
|
|
|
11
3
|
export { ipfsToHttp };
|
package/dist/utils/ipfs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/ipfs.ts"],"sourcesContent":["const DEFAULT_GATEWAY = \"https://ipfs.io/ipfs/\";\n\nconst ALLOWED_PROTOCOLS = new Set([\"http:\", \"https:\", \"ipfs:\"]);\n\
|
|
1
|
+
{"version":3,"sources":["../../src/utils/ipfs.ts"],"sourcesContent":["const DEFAULT_GATEWAY = \"https://ipfs.io/ipfs/\";\n\nconst ALLOWED_PROTOCOLS = new Set([\"http:\", \"https:\", \"ipfs:\"]);\n\nexport function ipfsToHttp(\n uri: string | null | undefined,\n gateway = DEFAULT_GATEWAY\n): string {\n if (!uri) return \"\";\n if (uri.startsWith(\"ipfs://\")) {\n return uri.replace(\"ipfs://\", gateway);\n }\n try {\n const { protocol } = new URL(uri);\n if (!ALLOWED_PROTOCOLS.has(protocol)) return \"\";\n } catch {\n return \"\";\n }\n return uri;\n}\n"],"mappings":"AAAA,MAAM,kBAAkB;AAExB,MAAM,oBAAoB,oBAAI,IAAI,CAAC,SAAS,UAAU,OAAO,CAAC;AAEvD,SAAS,WACd,KACA,UAAU,iBACF;AACR,MAAI,CAAC,IAAK,QAAO;AACjB,MAAI,IAAI,WAAW,SAAS,GAAG;AAC7B,WAAO,IAAI,QAAQ,WAAW,OAAO;AAAA,EACvC;AACA,MAAI;AACF,UAAM,EAAE,SAAS,IAAI,IAAI,IAAI,GAAG;AAChC,QAAI,CAAC,kBAAkB,IAAI,QAAQ,EAAG,QAAO;AAAA,EAC/C,QAAQ;AACN,WAAO;AAAA,EACT;AACA,SAAO;AACT;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/license-summary.ts"],"sourcesContent":["type Attr = { trait_type?: string; value?: string };\n\nconst get = (a: Attr[], key: string): string | undefined => {\n
|
|
1
|
+
{"version":3,"sources":["../../src/utils/license-summary.ts"],"sourcesContent":["type Attr = { trait_type?: string; value?: string };\n\nconst get = (a: Attr[], key: string): string | undefined => {\n\n const v = a.find((x) => x.trait_type?.toLowerCase() === key)?.value;\n return v == null ? undefined : String(v);\n};\n\nexport function licenseSummary(attributes: Attr[]): string | null {\n const commercialRaw = get(attributes, \"commercial use\");\n const derivatives = (get(attributes, \"derivatives\") ?? \"\").toLowerCase();\n const ai = (get(attributes, \"ai policy\") ?? get(attributes, \"ai & data mining\") ?? \"\").toLowerCase();\n const territory = get(attributes, \"territory\") ?? \"\";\n\n if (!commercialRaw && !derivatives && !ai) return null;\n\n const commercial = (commercialRaw ?? \"\").toLowerCase() === \"yes\";\n const remix =\n derivatives === \"not allowed\"\n ? \"No remixing\"\n : commercial\n ? \"Open to remix and commercial use\"\n : \"Open to remix\";\n const where = territory ? `, ${territory.toLowerCase()}` : \"\";\n const aiClause = ai.includes(\"not\") ? \" — no AI training\" : \"\";\n return `${remix}${where}${aiClause}.`;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,MAAM,MAAM,CAAC,GAAW,QAAoC;AAE1D,QAAM,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,YAAY,YAAY,MAAM,GAAG,GAAG;AAC9D,SAAO,KAAK,OAAO,SAAY,OAAO,CAAC;AACzC;AAEO,SAAS,eAAe,YAAmC;AAChE,QAAM,gBAAgB,IAAI,YAAY,gBAAgB;AACtD,QAAM,eAAe,IAAI,YAAY,aAAa,KAAK,IAAI,YAAY;AACvE,QAAM,MAAM,IAAI,YAAY,WAAW,KAAK,IAAI,YAAY,kBAAkB,KAAK,IAAI,YAAY;AACnG,QAAM,YAAY,IAAI,YAAY,WAAW,KAAK;AAElD,MAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,GAAI,QAAO;AAElD,QAAM,cAAc,iBAAiB,IAAI,YAAY,MAAM;AAC3D,QAAM,QACJ,gBAAgB,gBACZ,gBACA,aACE,qCACA;AACR,QAAM,QAAQ,YAAY,KAAK,UAAU,YAAY,CAAC,KAAK;AAC3D,QAAM,WAAW,GAAG,SAAS,KAAK,IAAI,2BAAsB;AAC5D,SAAO,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ;AACpC;","names":[]}
|
|
@@ -2,14 +2,6 @@ type Attr = {
|
|
|
2
2
|
trait_type?: string;
|
|
3
3
|
value?: string;
|
|
4
4
|
};
|
|
5
|
-
/**
|
|
6
|
-
* One plain-language sentence summarizing the license, derived from the license
|
|
7
|
-
* traits. Deliberately omits attribution/credit wording (not the place for it).
|
|
8
|
-
* Returns null when there's no license data to summarize.
|
|
9
|
-
*
|
|
10
|
-
* Trait keys match the asset metadata: "Commercial Use", "Derivatives",
|
|
11
|
-
* "AI Policy", "Territory".
|
|
12
|
-
*/
|
|
13
5
|
declare function licenseSummary(attributes: Attr[]): string | null;
|
|
14
6
|
|
|
15
7
|
export { licenseSummary };
|
|
@@ -2,14 +2,6 @@ type Attr = {
|
|
|
2
2
|
trait_type?: string;
|
|
3
3
|
value?: string;
|
|
4
4
|
};
|
|
5
|
-
/**
|
|
6
|
-
* One plain-language sentence summarizing the license, derived from the license
|
|
7
|
-
* traits. Deliberately omits attribution/credit wording (not the place for it).
|
|
8
|
-
* Returns null when there's no license data to summarize.
|
|
9
|
-
*
|
|
10
|
-
* Trait keys match the asset metadata: "Commercial Use", "Derivatives",
|
|
11
|
-
* "AI Policy", "Territory".
|
|
12
|
-
*/
|
|
13
5
|
declare function licenseSummary(attributes: Attr[]): string | null;
|
|
14
6
|
|
|
15
7
|
export { licenseSummary };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/license-summary.ts"],"sourcesContent":["type Attr = { trait_type?: string; value?: string };\n\nconst get = (a: Attr[], key: string): string | undefined => {\n
|
|
1
|
+
{"version":3,"sources":["../../src/utils/license-summary.ts"],"sourcesContent":["type Attr = { trait_type?: string; value?: string };\n\nconst get = (a: Attr[], key: string): string | undefined => {\n\n const v = a.find((x) => x.trait_type?.toLowerCase() === key)?.value;\n return v == null ? undefined : String(v);\n};\n\nexport function licenseSummary(attributes: Attr[]): string | null {\n const commercialRaw = get(attributes, \"commercial use\");\n const derivatives = (get(attributes, \"derivatives\") ?? \"\").toLowerCase();\n const ai = (get(attributes, \"ai policy\") ?? get(attributes, \"ai & data mining\") ?? \"\").toLowerCase();\n const territory = get(attributes, \"territory\") ?? \"\";\n\n if (!commercialRaw && !derivatives && !ai) return null;\n\n const commercial = (commercialRaw ?? \"\").toLowerCase() === \"yes\";\n const remix =\n derivatives === \"not allowed\"\n ? \"No remixing\"\n : commercial\n ? \"Open to remix and commercial use\"\n : \"Open to remix\";\n const where = territory ? `, ${territory.toLowerCase()}` : \"\";\n const aiClause = ai.includes(\"not\") ? \" — no AI training\" : \"\";\n return `${remix}${where}${aiClause}.`;\n}\n"],"mappings":"AAEA,MAAM,MAAM,CAAC,GAAW,QAAoC;AAE1D,QAAM,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,YAAY,YAAY,MAAM,GAAG,GAAG;AAC9D,SAAO,KAAK,OAAO,SAAY,OAAO,CAAC;AACzC;AAEO,SAAS,eAAe,YAAmC;AAChE,QAAM,gBAAgB,IAAI,YAAY,gBAAgB;AACtD,QAAM,eAAe,IAAI,YAAY,aAAa,KAAK,IAAI,YAAY;AACvE,QAAM,MAAM,IAAI,YAAY,WAAW,KAAK,IAAI,YAAY,kBAAkB,KAAK,IAAI,YAAY;AACnG,QAAM,YAAY,IAAI,YAAY,WAAW,KAAK;AAElD,MAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,GAAI,QAAO;AAElD,QAAM,cAAc,iBAAiB,IAAI,YAAY,MAAM;AAC3D,QAAM,QACJ,gBAAgB,gBACZ,gBACA,aACE,qCACA;AACR,QAAM,QAAQ,YAAY,KAAK,UAAU,YAAY,CAAC,KAAK;AAC3D,QAAM,WAAW,GAAG,SAAS,KAAK,IAAI,2BAAsB;AAC5D,SAAO,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ;AACpC;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/notification-storage.ts"],"sourcesContent":["const KEY = \"ml-notification-reads\";\n\nexport function getReadIds(): Set<string> {\n if (typeof window === \"undefined\") return new Set();\n try {\n const raw = localStorage.getItem(KEY);\n const parsed: unknown = raw ? JSON.parse(raw) : [];\n if (!Array.isArray(parsed)) return new Set();\n return new Set(parsed as string[]);\n } catch {\n return new Set();\n }\n}\n\nexport function markRead(ids: string[]): void {\n if (typeof window === \"undefined\") return;\n try {\n const existing = getReadIds();\n ids.forEach((id) => existing.add(id));\n
|
|
1
|
+
{"version":3,"sources":["../../src/utils/notification-storage.ts"],"sourcesContent":["const KEY = \"ml-notification-reads\";\n\nexport function getReadIds(): Set<string> {\n if (typeof window === \"undefined\") return new Set();\n try {\n const raw = localStorage.getItem(KEY);\n const parsed: unknown = raw ? JSON.parse(raw) : [];\n if (!Array.isArray(parsed)) return new Set();\n return new Set(parsed as string[]);\n } catch {\n return new Set();\n }\n}\n\nexport function markRead(ids: string[]): void {\n if (typeof window === \"undefined\") return;\n try {\n const existing = getReadIds();\n ids.forEach((id) => existing.add(id));\n\n const arr = [...existing].slice(-1000);\n localStorage.setItem(KEY, JSON.stringify(arr));\n } catch { }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAM,MAAM;AAEL,SAAS,aAA0B;AACxC,MAAI,OAAO,WAAW,YAAa,QAAO,oBAAI,IAAI;AAClD,MAAI;AACF,UAAM,MAAM,aAAa,QAAQ,GAAG;AACpC,UAAM,SAAkB,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;AACjD,QAAI,CAAC,MAAM,QAAQ,MAAM,EAAG,QAAO,oBAAI,IAAI;AAC3C,WAAO,IAAI,IAAI,MAAkB;AAAA,EACnC,QAAQ;AACN,WAAO,oBAAI,IAAI;AAAA,EACjB;AACF;AAEO,SAAS,SAAS,KAAqB;AAC5C,MAAI,OAAO,WAAW,YAAa;AACnC,MAAI;AACF,UAAM,WAAW,WAAW;AAC5B,QAAI,QAAQ,CAAC,OAAO,SAAS,IAAI,EAAE,CAAC;AAEpC,UAAM,MAAM,CAAC,GAAG,QAAQ,EAAE,MAAM,IAAK;AACrC,iBAAa,QAAQ,KAAK,KAAK,UAAU,GAAG,CAAC;AAAA,EAC/C,QAAQ;AAAA,EAAG;AACb;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/notification-storage.ts"],"sourcesContent":["const KEY = \"ml-notification-reads\";\n\nexport function getReadIds(): Set<string> {\n if (typeof window === \"undefined\") return new Set();\n try {\n const raw = localStorage.getItem(KEY);\n const parsed: unknown = raw ? JSON.parse(raw) : [];\n if (!Array.isArray(parsed)) return new Set();\n return new Set(parsed as string[]);\n } catch {\n return new Set();\n }\n}\n\nexport function markRead(ids: string[]): void {\n if (typeof window === \"undefined\") return;\n try {\n const existing = getReadIds();\n ids.forEach((id) => existing.add(id));\n
|
|
1
|
+
{"version":3,"sources":["../../src/utils/notification-storage.ts"],"sourcesContent":["const KEY = \"ml-notification-reads\";\n\nexport function getReadIds(): Set<string> {\n if (typeof window === \"undefined\") return new Set();\n try {\n const raw = localStorage.getItem(KEY);\n const parsed: unknown = raw ? JSON.parse(raw) : [];\n if (!Array.isArray(parsed)) return new Set();\n return new Set(parsed as string[]);\n } catch {\n return new Set();\n }\n}\n\nexport function markRead(ids: string[]): void {\n if (typeof window === \"undefined\") return;\n try {\n const existing = getReadIds();\n ids.forEach((id) => existing.add(id));\n\n const arr = [...existing].slice(-1000);\n localStorage.setItem(KEY, JSON.stringify(arr));\n } catch { }\n}\n"],"mappings":"AAAA,MAAM,MAAM;AAEL,SAAS,aAA0B;AACxC,MAAI,OAAO,WAAW,YAAa,QAAO,oBAAI,IAAI;AAClD,MAAI;AACF,UAAM,MAAM,aAAa,QAAQ,GAAG;AACpC,UAAM,SAAkB,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;AACjD,QAAI,CAAC,MAAM,QAAQ,MAAM,EAAG,QAAO,oBAAI,IAAI;AAC3C,WAAO,IAAI,IAAI,MAAkB;AAAA,EACnC,QAAQ;AACN,WAAO,oBAAI,IAAI;AAAA,EACjB;AACF;AAEO,SAAS,SAAS,KAAqB;AAC5C,MAAI,OAAO,WAAW,YAAa;AACnC,MAAI;AACF,UAAM,WAAW,WAAW;AAC5B,QAAI,QAAQ,CAAC,OAAO,SAAS,IAAI,EAAE,CAAC;AAEpC,UAAM,MAAM,CAAC,GAAG,QAAQ,EAAE,MAAM,IAAK;AACrC,iBAAa,QAAQ,KAAK,KAAK,UAAU,GAAG,CAAC;AAAA,EAC/C,QAAQ;AAAA,EAAG;AACb;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/portfolio-counts.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../src/utils/portfolio-counts.ts"],"sourcesContent":["\nexport interface CountableOrder {\n status: string;\n offerer: string;\n offer: { itemType: string };\n hasActiveCounterOffer?: boolean;\n}\n\nexport interface PortfolioCounts {\n\n received: number;\n\n listings: number;\n\n remix: number;\n\n counter: number;\n\n sponsorships: number;\n}\n\nexport function derivePortfolioCounts(\n orders: ReadonlyArray<CountableOrder> | null | undefined,\n remixOffers: ReadonlyArray<{ status: string }> | null | undefined,\n address: string | null | undefined,\n sponsorshipPendingCount = 0,\n): PortfolioCounts {\n const list = Array.isArray(orders) ? orders : [];\n const addr = (address ?? \"\").toLowerCase();\n\n const received = list.filter(\n (o) =>\n o.status === \"ACTIVE\" &&\n o.offer.itemType === \"ERC20\" &&\n o.offerer.toLowerCase() !== addr,\n ).length;\n\n const listings = list.filter(\n (o) =>\n (o.offer.itemType === \"ERC721\" || o.offer.itemType === \"ERC1155\") &&\n o.status === \"ACTIVE\",\n ).length;\n\n const remix = Array.isArray(remixOffers)\n ? remixOffers.filter(\n (o) => o.status === \"PENDING\" || o.status === \"AUTO_PENDING\",\n ).length\n : 0;\n\n const counter = list.filter(\n (o) =>\n o.offer.itemType === \"ERC20\" &&\n o.offerer.toLowerCase() === addr &&\n o.hasActiveCounterOffer === true,\n ).length;\n\n return { received, listings, remix, counter, sponsorships: Math.max(0, sponsorshipPendingCount) };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAqBO,SAAS,sBACd,QACA,aACA,SACA,0BAA0B,GACT;AACjB,QAAM,OAAO,MAAM,QAAQ,MAAM,IAAI,SAAS,CAAC;AAC/C,QAAM,QAAQ,WAAW,IAAI,YAAY;AAEzC,QAAM,WAAW,KAAK;AAAA,IACpB,CAAC,MACC,EAAE,WAAW,YACb,EAAE,MAAM,aAAa,WACrB,EAAE,QAAQ,YAAY,MAAM;AAAA,EAChC,EAAE;AAEF,QAAM,WAAW,KAAK;AAAA,IACpB,CAAC,OACE,EAAE,MAAM,aAAa,YAAY,EAAE,MAAM,aAAa,cACvD,EAAE,WAAW;AAAA,EACjB,EAAE;AAEF,QAAM,QAAQ,MAAM,QAAQ,WAAW,IACnC,YAAY;AAAA,IACV,CAAC,MAAM,EAAE,WAAW,aAAa,EAAE,WAAW;AAAA,EAChD,EAAE,SACF;AAEJ,QAAM,UAAU,KAAK;AAAA,IACnB,CAAC,MACC,EAAE,MAAM,aAAa,WACrB,EAAE,QAAQ,YAAY,MAAM,QAC5B,EAAE,0BAA0B;AAAA,EAChC,EAAE;AAEF,SAAO,EAAE,UAAU,UAAU,OAAO,SAAS,cAAc,KAAK,IAAI,GAAG,uBAAuB,EAAE;AAClG;","names":[]}
|
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Minimal structural shape of a marketplace order needed to derive portfolio
|
|
3
|
-
* counts. `ApiOrder` from `@medialane/sdk` is structurally assignable to this,
|
|
4
|
-
* so callers pass their `ApiOrder[]` directly and the package stays decoupled
|
|
5
|
-
* from any specific SDK version.
|
|
6
|
-
*/
|
|
7
1
|
interface CountableOrder {
|
|
8
2
|
status: string;
|
|
9
3
|
offerer: string;
|
|
@@ -13,24 +7,12 @@ interface CountableOrder {
|
|
|
13
7
|
hasActiveCounterOffer?: boolean;
|
|
14
8
|
}
|
|
15
9
|
interface PortfolioCounts {
|
|
16
|
-
/** Active ERC-20 offers made by others on the user's assets. */
|
|
17
10
|
received: number;
|
|
18
|
-
/** Active ERC-721/ERC-1155 listings the user is selling. */
|
|
19
11
|
listings: number;
|
|
20
|
-
/** Pending remix offers awaiting the user's action. */
|
|
21
12
|
remix: number;
|
|
22
|
-
/** The user's bids that a seller has countered. */
|
|
23
13
|
counter: number;
|
|
24
|
-
/** Sponsorship proposals/bids awaiting the user's decision. */
|
|
25
14
|
sponsorships: number;
|
|
26
15
|
}
|
|
27
|
-
/**
|
|
28
|
-
* Derive the portfolio header/subnav counts from the user's orders and remix
|
|
29
|
-
* offers. Pure and server-safe (no React). Guards nullish inputs.
|
|
30
|
-
* `sponsorshipPendingCount` is computed by the caller (received sponsorship
|
|
31
|
-
* proposals + received bids awaiting a decision) since this function has no
|
|
32
|
-
* sponsorship-shape knowledge — it just carries the number through.
|
|
33
|
-
*/
|
|
34
16
|
declare function derivePortfolioCounts(orders: ReadonlyArray<CountableOrder> | null | undefined, remixOffers: ReadonlyArray<{
|
|
35
17
|
status: string;
|
|
36
18
|
}> | null | undefined, address: string | null | undefined, sponsorshipPendingCount?: number): PortfolioCounts;
|
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Minimal structural shape of a marketplace order needed to derive portfolio
|
|
3
|
-
* counts. `ApiOrder` from `@medialane/sdk` is structurally assignable to this,
|
|
4
|
-
* so callers pass their `ApiOrder[]` directly and the package stays decoupled
|
|
5
|
-
* from any specific SDK version.
|
|
6
|
-
*/
|
|
7
1
|
interface CountableOrder {
|
|
8
2
|
status: string;
|
|
9
3
|
offerer: string;
|
|
@@ -13,24 +7,12 @@ interface CountableOrder {
|
|
|
13
7
|
hasActiveCounterOffer?: boolean;
|
|
14
8
|
}
|
|
15
9
|
interface PortfolioCounts {
|
|
16
|
-
/** Active ERC-20 offers made by others on the user's assets. */
|
|
17
10
|
received: number;
|
|
18
|
-
/** Active ERC-721/ERC-1155 listings the user is selling. */
|
|
19
11
|
listings: number;
|
|
20
|
-
/** Pending remix offers awaiting the user's action. */
|
|
21
12
|
remix: number;
|
|
22
|
-
/** The user's bids that a seller has countered. */
|
|
23
13
|
counter: number;
|
|
24
|
-
/** Sponsorship proposals/bids awaiting the user's decision. */
|
|
25
14
|
sponsorships: number;
|
|
26
15
|
}
|
|
27
|
-
/**
|
|
28
|
-
* Derive the portfolio header/subnav counts from the user's orders and remix
|
|
29
|
-
* offers. Pure and server-safe (no React). Guards nullish inputs.
|
|
30
|
-
* `sponsorshipPendingCount` is computed by the caller (received sponsorship
|
|
31
|
-
* proposals + received bids awaiting a decision) since this function has no
|
|
32
|
-
* sponsorship-shape knowledge — it just carries the number through.
|
|
33
|
-
*/
|
|
34
16
|
declare function derivePortfolioCounts(orders: ReadonlyArray<CountableOrder> | null | undefined, remixOffers: ReadonlyArray<{
|
|
35
17
|
status: string;
|
|
36
18
|
}> | null | undefined, address: string | null | undefined, sponsorshipPendingCount?: number): PortfolioCounts;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/portfolio-counts.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../src/utils/portfolio-counts.ts"],"sourcesContent":["\nexport interface CountableOrder {\n status: string;\n offerer: string;\n offer: { itemType: string };\n hasActiveCounterOffer?: boolean;\n}\n\nexport interface PortfolioCounts {\n\n received: number;\n\n listings: number;\n\n remix: number;\n\n counter: number;\n\n sponsorships: number;\n}\n\nexport function derivePortfolioCounts(\n orders: ReadonlyArray<CountableOrder> | null | undefined,\n remixOffers: ReadonlyArray<{ status: string }> | null | undefined,\n address: string | null | undefined,\n sponsorshipPendingCount = 0,\n): PortfolioCounts {\n const list = Array.isArray(orders) ? orders : [];\n const addr = (address ?? \"\").toLowerCase();\n\n const received = list.filter(\n (o) =>\n o.status === \"ACTIVE\" &&\n o.offer.itemType === \"ERC20\" &&\n o.offerer.toLowerCase() !== addr,\n ).length;\n\n const listings = list.filter(\n (o) =>\n (o.offer.itemType === \"ERC721\" || o.offer.itemType === \"ERC1155\") &&\n o.status === \"ACTIVE\",\n ).length;\n\n const remix = Array.isArray(remixOffers)\n ? remixOffers.filter(\n (o) => o.status === \"PENDING\" || o.status === \"AUTO_PENDING\",\n ).length\n : 0;\n\n const counter = list.filter(\n (o) =>\n o.offer.itemType === \"ERC20\" &&\n o.offerer.toLowerCase() === addr &&\n o.hasActiveCounterOffer === true,\n ).length;\n\n return { received, listings, remix, counter, sponsorships: Math.max(0, sponsorshipPendingCount) };\n}\n"],"mappings":"AAqBO,SAAS,sBACd,QACA,aACA,SACA,0BAA0B,GACT;AACjB,QAAM,OAAO,MAAM,QAAQ,MAAM,IAAI,SAAS,CAAC;AAC/C,QAAM,QAAQ,WAAW,IAAI,YAAY;AAEzC,QAAM,WAAW,KAAK;AAAA,IACpB,CAAC,MACC,EAAE,WAAW,YACb,EAAE,MAAM,aAAa,WACrB,EAAE,QAAQ,YAAY,MAAM;AAAA,EAChC,EAAE;AAEF,QAAM,WAAW,KAAK;AAAA,IACpB,CAAC,OACE,EAAE,MAAM,aAAa,YAAY,EAAE,MAAM,aAAa,cACvD,EAAE,WAAW;AAAA,EACjB,EAAE;AAEF,QAAM,QAAQ,MAAM,QAAQ,WAAW,IACnC,YAAY;AAAA,IACV,CAAC,MAAM,EAAE,WAAW,aAAa,EAAE,WAAW;AAAA,EAChD,EAAE,SACF;AAEJ,QAAM,UAAU,KAAK;AAAA,IACnB,CAAC,MACC,EAAE,MAAM,aAAa,WACrB,EAAE,QAAQ,YAAY,MAAM,QAC5B,EAAE,0BAA0B;AAAA,EAChC,EAAE;AAEF,SAAO,EAAE,UAAU,UAAU,OAAO,SAAS,cAAc,KAAK,IAAI,GAAG,uBAAuB,EAAE;AAClG;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/proxy-body.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../src/utils/proxy-body.ts"],"sourcesContent":["\nexport type CappedBody =\n | { ok: true; body: Uint8Array<ArrayBuffer> }\n | { ok: false; status: 413 | 502; error: string };\n\nexport async function readBodyWithCap(upstream: Response, maxBytes: number): Promise<CappedBody> {\n const declaredLength = upstream.headers.get(\"content-length\");\n if (declaredLength) {\n const n = Number.parseInt(declaredLength, 10);\n if (Number.isFinite(n) && n > maxBytes) {\n return { ok: false, status: 413, error: `Response exceeds size cap (${maxBytes} bytes)` };\n }\n }\n\n if (!upstream.body) {\n return { ok: false, status: 502, error: \"Upstream returned no body\" };\n }\n\n const reader = upstream.body.getReader();\n const chunks: Uint8Array[] = [];\n let total = 0;\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n total += value.byteLength;\n if (total > maxBytes) {\n await reader.cancel();\n return { ok: false, status: 413, error: `Response exceeds size cap (${maxBytes} bytes)` };\n }\n chunks.push(value);\n }\n\n const body = new Uint8Array(total) as Uint8Array<ArrayBuffer>;\n let offset = 0;\n for (const chunk of chunks) {\n body.set(chunk, offset);\n offset += chunk.byteLength;\n }\n return { ok: true, body };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,eAAsB,gBAAgB,UAAoB,UAAuC;AAC/F,QAAM,iBAAiB,SAAS,QAAQ,IAAI,gBAAgB;AAC5D,MAAI,gBAAgB;AAClB,UAAM,IAAI,OAAO,SAAS,gBAAgB,EAAE;AAC5C,QAAI,OAAO,SAAS,CAAC,KAAK,IAAI,UAAU;AACtC,aAAO,EAAE,IAAI,OAAO,QAAQ,KAAK,OAAO,8BAA8B,QAAQ,UAAU;AAAA,IAC1F;AAAA,EACF;AAEA,MAAI,CAAC,SAAS,MAAM;AAClB,WAAO,EAAE,IAAI,OAAO,QAAQ,KAAK,OAAO,4BAA4B;AAAA,EACtE;AAEA,QAAM,SAAS,SAAS,KAAK,UAAU;AACvC,QAAM,SAAuB,CAAC;AAC9B,MAAI,QAAQ;AACZ,SAAO,MAAM;AACX,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,OAAO,KAAK;AAC1C,QAAI,KAAM;AACV,aAAS,MAAM;AACf,QAAI,QAAQ,UAAU;AACpB,YAAM,OAAO,OAAO;AACpB,aAAO,EAAE,IAAI,OAAO,QAAQ,KAAK,OAAO,8BAA8B,QAAQ,UAAU;AAAA,IAC1F;AACA,WAAO,KAAK,KAAK;AAAA,EACnB;AAEA,QAAM,OAAO,IAAI,WAAW,KAAK;AACjC,MAAI,SAAS;AACb,aAAW,SAAS,QAAQ;AAC1B,SAAK,IAAI,OAAO,MAAM;AACtB,cAAU,MAAM;AAAA,EAClB;AACA,SAAO,EAAE,IAAI,MAAM,KAAK;AAC1B;","names":[]}
|
|
@@ -1,14 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Read an upstream `fetch` Response body into memory with a hard byte cap.
|
|
3
|
-
*
|
|
4
|
-
* `arrayBuffer()` buffers the whole body before any limit applies, so a public
|
|
5
|
-
* proxy route (image, IPFS) can be made to pin server memory by pointing it at
|
|
6
|
-
* a large file. This streams the body and aborts once `maxBytes` is crossed.
|
|
7
|
-
* A `Content-Length` larger than the cap short-circuits before a byte is read
|
|
8
|
-
* (advisory — some origins omit or lie, so the streaming guard is the real
|
|
9
|
-
* limit). Shared by both apps' `/api/img` and `/api/ipfs` routes so the cap
|
|
10
|
-
* can't drift between them.
|
|
11
|
-
*/
|
|
12
1
|
type CappedBody = {
|
|
13
2
|
ok: true;
|
|
14
3
|
body: Uint8Array<ArrayBuffer>;
|
|
@@ -1,14 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Read an upstream `fetch` Response body into memory with a hard byte cap.
|
|
3
|
-
*
|
|
4
|
-
* `arrayBuffer()` buffers the whole body before any limit applies, so a public
|
|
5
|
-
* proxy route (image, IPFS) can be made to pin server memory by pointing it at
|
|
6
|
-
* a large file. This streams the body and aborts once `maxBytes` is crossed.
|
|
7
|
-
* A `Content-Length` larger than the cap short-circuits before a byte is read
|
|
8
|
-
* (advisory — some origins omit or lie, so the streaming guard is the real
|
|
9
|
-
* limit). Shared by both apps' `/api/img` and `/api/ipfs` routes so the cap
|
|
10
|
-
* can't drift between them.
|
|
11
|
-
*/
|
|
12
1
|
type CappedBody = {
|
|
13
2
|
ok: true;
|
|
14
3
|
body: Uint8Array<ArrayBuffer>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/proxy-body.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../src/utils/proxy-body.ts"],"sourcesContent":["\nexport type CappedBody =\n | { ok: true; body: Uint8Array<ArrayBuffer> }\n | { ok: false; status: 413 | 502; error: string };\n\nexport async function readBodyWithCap(upstream: Response, maxBytes: number): Promise<CappedBody> {\n const declaredLength = upstream.headers.get(\"content-length\");\n if (declaredLength) {\n const n = Number.parseInt(declaredLength, 10);\n if (Number.isFinite(n) && n > maxBytes) {\n return { ok: false, status: 413, error: `Response exceeds size cap (${maxBytes} bytes)` };\n }\n }\n\n if (!upstream.body) {\n return { ok: false, status: 502, error: \"Upstream returned no body\" };\n }\n\n const reader = upstream.body.getReader();\n const chunks: Uint8Array[] = [];\n let total = 0;\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n total += value.byteLength;\n if (total > maxBytes) {\n await reader.cancel();\n return { ok: false, status: 413, error: `Response exceeds size cap (${maxBytes} bytes)` };\n }\n chunks.push(value);\n }\n\n const body = new Uint8Array(total) as Uint8Array<ArrayBuffer>;\n let offset = 0;\n for (const chunk of chunks) {\n body.set(chunk, offset);\n offset += chunk.byteLength;\n }\n return { ok: true, body };\n}\n"],"mappings":"AAKA,eAAsB,gBAAgB,UAAoB,UAAuC;AAC/F,QAAM,iBAAiB,SAAS,QAAQ,IAAI,gBAAgB;AAC5D,MAAI,gBAAgB;AAClB,UAAM,IAAI,OAAO,SAAS,gBAAgB,EAAE;AAC5C,QAAI,OAAO,SAAS,CAAC,KAAK,IAAI,UAAU;AACtC,aAAO,EAAE,IAAI,OAAO,QAAQ,KAAK,OAAO,8BAA8B,QAAQ,UAAU;AAAA,IAC1F;AAAA,EACF;AAEA,MAAI,CAAC,SAAS,MAAM;AAClB,WAAO,EAAE,IAAI,OAAO,QAAQ,KAAK,OAAO,4BAA4B;AAAA,EACtE;AAEA,QAAM,SAAS,SAAS,KAAK,UAAU;AACvC,QAAM,SAAuB,CAAC;AAC9B,MAAI,QAAQ;AACZ,SAAO,MAAM;AACX,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,OAAO,KAAK;AAC1C,QAAI,KAAM;AACV,aAAS,MAAM;AACf,QAAI,QAAQ,UAAU;AACpB,YAAM,OAAO,OAAO;AACpB,aAAO,EAAE,IAAI,OAAO,QAAQ,KAAK,OAAO,8BAA8B,QAAQ,UAAU;AAAA,IAC1F;AACA,WAAO,KAAK,KAAK;AAAA,EACnB;AAEA,QAAM,OAAO,IAAI,WAAW,KAAK;AACjC,MAAI,SAAS;AACb,aAAW,SAAS,QAAQ;AAC1B,SAAK,IAAI,OAAO,MAAM;AACtB,cAAU,MAAM;AAAA,EAClB;AACA,SAAO,EAAE,IAAI,MAAM,KAAK;AAC1B;","names":[]}
|
package/dist/utils/time.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/time.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../src/utils/time.ts"],"sourcesContent":["\nexport function timeUntil(dateStr: string | number): string {\n\n const raw = typeof dateStr === \"string\" && /^\\d+$/.test(dateStr.trim())\n ? Number(dateStr)\n : dateStr;\n const ms = typeof raw === \"number\" ? raw * 1000 : new Date(raw).getTime();\n const diff = ms - Date.now();\n if (diff <= 0) return \"Expired\";\n const days = Math.floor(diff / 86400000);\n const hours = Math.floor((diff % 86400000) / 3600000);\n if (days > 0) return `${days}d ${hours}h`;\n const mins = Math.floor((diff % 3600000) / 60000);\n return `${hours}h ${mins}m`;\n}\n\nexport function timeAgo(iso: string): string {\n const diff = Date.now() - new Date(iso).getTime();\n const s = Math.floor(diff / 1000);\n if (s < 60) return \"just now\";\n const m = Math.floor(s / 60);\n if (m < 60) return `${m}m ago`;\n const h = Math.floor(m / 60);\n if (h < 24) return `${h}h ago`;\n const d = Math.floor(h / 24);\n if (d < 30) return `${d}d ago`;\n const mo = Math.floor(d / 30);\n if (mo < 12) return `${mo}mo ago`;\n return `${Math.floor(mo / 12)}y ago`;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACO,SAAS,UAAU,SAAkC;AAE1D,QAAM,MAAM,OAAO,YAAY,YAAY,QAAQ,KAAK,QAAQ,KAAK,CAAC,IAClE,OAAO,OAAO,IACd;AACJ,QAAM,KAAK,OAAO,QAAQ,WAAW,MAAM,MAAO,IAAI,KAAK,GAAG,EAAE,QAAQ;AACxE,QAAM,OAAO,KAAK,KAAK,IAAI;AAC3B,MAAI,QAAQ,EAAG,QAAO;AACtB,QAAM,OAAO,KAAK,MAAM,OAAO,KAAQ;AACvC,QAAM,QAAQ,KAAK,MAAO,OAAO,QAAY,IAAO;AACpD,MAAI,OAAO,EAAG,QAAO,GAAG,IAAI,KAAK,KAAK;AACtC,QAAM,OAAO,KAAK,MAAO,OAAO,OAAW,GAAK;AAChD,SAAO,GAAG,KAAK,KAAK,IAAI;AAC1B;AAEO,SAAS,QAAQ,KAAqB;AAC3C,QAAM,OAAO,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,EAAE,QAAQ;AAChD,QAAM,IAAI,KAAK,MAAM,OAAO,GAAI;AAChC,MAAI,IAAI,GAAI,QAAO;AACnB,QAAM,IAAI,KAAK,MAAM,IAAI,EAAE;AAC3B,MAAI,IAAI,GAAI,QAAO,GAAG,CAAC;AACvB,QAAM,IAAI,KAAK,MAAM,IAAI,EAAE;AAC3B,MAAI,IAAI,GAAI,QAAO,GAAG,CAAC;AACvB,QAAM,IAAI,KAAK,MAAM,IAAI,EAAE;AAC3B,MAAI,IAAI,GAAI,QAAO,GAAG,CAAC;AACvB,QAAM,KAAK,KAAK,MAAM,IAAI,EAAE;AAC5B,MAAI,KAAK,GAAI,QAAO,GAAG,EAAE;AACzB,SAAO,GAAG,KAAK,MAAM,KAAK,EAAE,CAAC;AAC/B;","names":[]}
|
package/dist/utils/time.d.cts
CHANGED
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
/** Human-readable countdown, e.g. "2d 4h", "3h 12m", "Expired". */
|
|
2
1
|
declare function timeUntil(dateStr: string | number): string;
|
|
3
|
-
/**
|
|
4
|
-
* Returns a human-readable relative time string.
|
|
5
|
-
* e.g. "just now", "2m ago", "3h ago", "5d ago"
|
|
6
|
-
*/
|
|
7
2
|
declare function timeAgo(iso: string): string;
|
|
8
3
|
|
|
9
4
|
export { timeAgo, timeUntil };
|
package/dist/utils/time.d.ts
CHANGED
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
/** Human-readable countdown, e.g. "2d 4h", "3h 12m", "Expired". */
|
|
2
1
|
declare function timeUntil(dateStr: string | number): string;
|
|
3
|
-
/**
|
|
4
|
-
* Returns a human-readable relative time string.
|
|
5
|
-
* e.g. "just now", "2m ago", "3h ago", "5d ago"
|
|
6
|
-
*/
|
|
7
2
|
declare function timeAgo(iso: string): string;
|
|
8
3
|
|
|
9
4
|
export { timeAgo, timeUntil };
|
package/dist/utils/time.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/time.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../src/utils/time.ts"],"sourcesContent":["\nexport function timeUntil(dateStr: string | number): string {\n\n const raw = typeof dateStr === \"string\" && /^\\d+$/.test(dateStr.trim())\n ? Number(dateStr)\n : dateStr;\n const ms = typeof raw === \"number\" ? raw * 1000 : new Date(raw).getTime();\n const diff = ms - Date.now();\n if (diff <= 0) return \"Expired\";\n const days = Math.floor(diff / 86400000);\n const hours = Math.floor((diff % 86400000) / 3600000);\n if (days > 0) return `${days}d ${hours}h`;\n const mins = Math.floor((diff % 3600000) / 60000);\n return `${hours}h ${mins}m`;\n}\n\nexport function timeAgo(iso: string): string {\n const diff = Date.now() - new Date(iso).getTime();\n const s = Math.floor(diff / 1000);\n if (s < 60) return \"just now\";\n const m = Math.floor(s / 60);\n if (m < 60) return `${m}m ago`;\n const h = Math.floor(m / 60);\n if (h < 24) return `${h}h ago`;\n const d = Math.floor(h / 24);\n if (d < 30) return `${d}d ago`;\n const mo = Math.floor(d / 30);\n if (mo < 12) return `${mo}mo ago`;\n return `${Math.floor(mo / 12)}y ago`;\n}\n"],"mappings":"AACO,SAAS,UAAU,SAAkC;AAE1D,QAAM,MAAM,OAAO,YAAY,YAAY,QAAQ,KAAK,QAAQ,KAAK,CAAC,IAClE,OAAO,OAAO,IACd;AACJ,QAAM,KAAK,OAAO,QAAQ,WAAW,MAAM,MAAO,IAAI,KAAK,GAAG,EAAE,QAAQ;AACxE,QAAM,OAAO,KAAK,KAAK,IAAI;AAC3B,MAAI,QAAQ,EAAG,QAAO;AACtB,QAAM,OAAO,KAAK,MAAM,OAAO,KAAQ;AACvC,QAAM,QAAQ,KAAK,MAAO,OAAO,QAAY,IAAO;AACpD,MAAI,OAAO,EAAG,QAAO,GAAG,IAAI,KAAK,KAAK;AACtC,QAAM,OAAO,KAAK,MAAO,OAAO,OAAW,GAAK;AAChD,SAAO,GAAG,KAAK,KAAK,IAAI;AAC1B;AAEO,SAAS,QAAQ,KAAqB;AAC3C,QAAM,OAAO,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,EAAE,QAAQ;AAChD,QAAM,IAAI,KAAK,MAAM,OAAO,GAAI;AAChC,MAAI,IAAI,GAAI,QAAO;AACnB,QAAM,IAAI,KAAK,MAAM,IAAI,EAAE;AAC3B,MAAI,IAAI,GAAI,QAAO,GAAG,CAAC;AACvB,QAAM,IAAI,KAAK,MAAM,IAAI,EAAE;AAC3B,MAAI,IAAI,GAAI,QAAO,GAAG,CAAC;AACvB,QAAM,IAAI,KAAK,MAAM,IAAI,EAAE;AAC3B,MAAI,IAAI,GAAI,QAAO,GAAG,CAAC;AACvB,QAAM,KAAK,KAAK,MAAM,IAAI,EAAE;AAC5B,MAAI,KAAK,GAAI,QAAO,GAAG,EAAE;AACzB,SAAO,GAAG,KAAK,MAAM,KAAK,EAAE,CAAC;AAC/B;","names":[]}
|