├── .github ├── ISSUE_TEMPLATE.md └── workflows │ ├── audit.yml │ ├── build-release.yaml │ ├── codeql.yml │ ├── lint.yaml │ ├── set-rollout-manual.yaml │ ├── set-rollout.yaml │ └── test.yaml ├── .gitignore ├── LICENSE ├── README.md ├── SECURITY.md ├── indexer ├── .prettierrc ├── .subgraph.yaml ├── README.md ├── abis │ ├── DCLControllerV2.json │ ├── DCLRegistrar.json │ ├── ERC721.json │ ├── ERC721Bid.json │ ├── EstateRegistry.json │ ├── LANDRegistry.json │ ├── MANAToken.json │ └── Marketplace.json ├── package-lock.json ├── package.json ├── schema.graphql ├── scripts │ ├── buildData.ts │ ├── calculateProximities.ts │ ├── deploy.ts │ └── importWearableCollection.ts └── src │ ├── data │ ├── .addresses.ts │ ├── README.md │ ├── proximities.ts │ └── wearables │ │ ├── Wearable.ts │ │ ├── atari_launch.ts │ │ ├── binance_us_collection.ts │ │ ├── categories.ts │ │ ├── china_flying.ts │ │ ├── community_contest.ts │ │ ├── cybermike_cybersoldier_set.ts │ │ ├── cz_mercenary_mtz.ts │ │ ├── dappcraft_moonminer.ts │ │ ├── dc_meta.ts │ │ ├── dc_niftyblocksmith.ts │ │ ├── dcg_collection.ts │ │ ├── dcl_launch.ts │ │ ├── dg_atari_dillon_francis.ts │ │ ├── dg_fall_2020.ts │ │ ├── dg_summer_2020.ts │ │ ├── dgtble_headspace.ts │ │ ├── digital_alchemy.ts │ │ ├── ethermon_wearables.ts │ │ ├── exclusive_masks.ts │ │ ├── halloween_2019.ts │ │ ├── halloween_2020.ts │ │ ├── index.ts │ │ ├── mch_collection.ts │ │ ├── meme_dontbuythis.ts │ │ ├── mf_sammichgamer.ts │ │ ├── ml_liondance.ts │ │ ├── ml_pekingopera.ts │ │ ├── moonshot_2020.ts │ │ ├── pm_dreamverse_eminence.ts │ │ ├── pm_outtathisworld.ts │ │ ├── rac_basics.ts │ │ ├── release_the_kraken.ts │ │ ├── rtfkt_x_atari.ts │ │ ├── stay_safe.ts │ │ ├── sugarclub_yumi.ts │ │ ├── tech_tribal_marc0matic.ts │ │ ├── threelau_basics.ts │ │ ├── winklevoss_capital.ts │ │ ├── wonderzone_meteorchaser.ts │ │ ├── wonderzone_steampunk.ts │ │ ├── wz_wonderbot.ts │ │ ├── xmas_2019.ts │ │ ├── xmas_2020.ts │ │ └── xmash_up_2020.ts │ ├── handlers │ ├── bid.ts │ ├── ens.ts │ ├── estate.ts │ ├── manaToken.ts │ ├── marketplace.ts │ ├── nft.ts │ └── parcel.ts │ └── modules │ ├── account │ └── index.ts │ ├── analytics │ └── index.ts │ ├── bid │ └── index.ts │ ├── catalyst │ └── index.ts │ ├── category │ ├── categories.ts │ └── index.ts │ ├── count │ └── index.ts │ ├── data │ └── index.ts │ ├── ens │ └── index.ts │ ├── estate │ └── index.ts │ ├── network │ └── index.ts │ ├── nft │ └── index.ts │ ├── order │ └── status.ts │ ├── parcel │ └── index.ts │ ├── utils │ └── index.ts │ └── wearable │ └── index.ts ├── package.json └── webapp ├── .env.default ├── .eslintrc.cjs ├── .gitignore ├── .husky └── pre-commit ├── .prettierrc.json ├── README.md ├── index.html ├── jest.config.ts ├── package-lock.json ├── package.json ├── public ├── decentraland.png ├── emotes-v2.mp4 ├── favicon.ico ├── known_origin.png ├── makers_place.png ├── manifest.json ├── package.json ├── proximity.json ├── robots.txt ├── sitemap.static.xml ├── sitemap.xml ├── smart-wearables-ftu.mp4 └── super_rare.png ├── scripts └── prebuild.cjs ├── src ├── components │ ├── AccountPage │ │ ├── AccountBanner │ │ │ ├── AccountBanner.container.tsx │ │ │ ├── AccountBanner.css │ │ │ ├── AccountBanner.tsx │ │ │ ├── AccountBanner.types.tsx │ │ │ └── index.ts │ │ ├── AccountPage.container.ts │ │ ├── AccountPage.css │ │ ├── AccountPage.tsx │ │ ├── AccountPage.types.ts │ │ └── index.ts │ ├── AccountSidebar │ │ ├── AccountSidebar.container.ts │ │ ├── AccountSidebar.css │ │ ├── AccountSidebar.tsx │ │ ├── AccountSidebar.types.ts │ │ ├── CurrentAccountSidebar │ │ │ ├── CurrentAccountSidebar.tsx │ │ │ ├── CurrentAccountSidebar.types.tsx │ │ │ └── index.ts │ │ ├── OtherAccountSidebar │ │ │ ├── OtherAccountSidebar.container.ts │ │ │ ├── OtherAccountSidebar.tsx │ │ │ ├── OtherAccountSidebar.types.tsx │ │ │ └── index.ts │ │ └── index.ts │ ├── ActivityPage │ │ ├── ActivityPage.container.ts │ │ ├── ActivityPage.css │ │ ├── ActivityPage.tsx │ │ ├── ActivityPage.types.ts │ │ ├── Transaction │ │ │ ├── Transaction.container.ts │ │ │ ├── Transaction.tsx │ │ │ ├── Transaction.types.ts │ │ │ ├── TransactionDetail │ │ │ │ ├── TransactionDetail.css │ │ │ │ ├── TransactionDetail.tsx │ │ │ │ ├── TransactionDetail.types.ts │ │ │ │ └── index.ts │ │ │ └── index.ts │ │ └── index.ts │ ├── AnalyticsVolumeDayData │ │ ├── AnalyticsVolumeDayData.container.ts │ │ ├── AnalyticsVolumeDayData.css │ │ ├── AnalyticsVolumeDayData.tsx │ │ ├── AnalyticsVolumeDayData.types.ts │ │ ├── index.ts │ │ └── utils.ts │ ├── AssetAction │ │ ├── AssetAction.container.ts │ │ ├── AssetAction.css │ │ ├── AssetAction.tsx │ │ ├── AssetAction.types.ts │ │ └── index.ts │ ├── AssetBrowse │ │ ├── AssetBrowse.container.ts │ │ ├── AssetBrowse.css │ │ ├── AssetBrowse.tsx │ │ ├── AssetBrowse.types.ts │ │ ├── Box │ │ │ ├── Box.module.css │ │ │ ├── Box.tsx │ │ │ ├── Box.types.ts │ │ │ └── index.ts │ │ ├── MapBrowse │ │ │ ├── MapBrowse.container.ts │ │ │ ├── MapBrowse.tsx │ │ │ ├── MapBrowse.types.ts │ │ │ ├── index.ts │ │ │ ├── utils.spec.ts │ │ │ └── utils.ts │ │ ├── MapTopbar │ │ │ ├── MapTopbar.container.ts │ │ │ ├── MapTopbar.module.css │ │ │ ├── MapTopbar.tsx │ │ │ ├── MapTopbar.types.ts │ │ │ └── index.ts │ │ ├── ToggleBox │ │ │ ├── ToggleBox.module.css │ │ │ ├── ToggleBox.tsx │ │ │ ├── ToggleBox.types.ts │ │ │ └── index.ts │ │ └── index.ts │ ├── AssetCard │ │ ├── AssetCard.container.ts │ │ ├── AssetCard.css │ │ ├── AssetCard.spec.tsx │ │ ├── AssetCard.tsx │ │ ├── AssetCard.types.ts │ │ ├── ENSTags │ │ │ ├── ENSTags.css │ │ │ ├── ENSTags.tsx │ │ │ ├── ENSTags.types.ts │ │ │ └── index.ts │ │ ├── EmoteTags │ │ │ ├── EmoteTags.module.css │ │ │ ├── EmoteTags.tsx │ │ │ ├── EmoteTags.types.ts │ │ │ └── index.ts │ │ ├── EstateTags │ │ │ ├── EstateTags.css │ │ │ ├── EstateTags.tsx │ │ │ ├── EstateTags.types.ts │ │ │ └── index.ts │ │ ├── ParcelTags │ │ │ ├── ParcelTags.module.css │ │ │ ├── ParcelTags.tsx │ │ │ ├── ParcelTags.types.ts │ │ │ └── index.ts │ │ ├── ProximityTags │ │ │ ├── ProximityTags.container.ts │ │ │ ├── ProximityTags.css │ │ │ ├── ProximityTags.tsx │ │ │ ├── ProximityTags.types.ts │ │ │ └── index.ts │ │ ├── WearableTags │ │ │ ├── WearableTags.css │ │ │ ├── WearableTags.tsx │ │ │ ├── WearableTags.types.ts │ │ │ └── index.ts │ │ ├── index.ts │ │ ├── utils.spec.tsx │ │ └── utils.tsx │ ├── AssetFilters │ │ ├── AssetFilters.container.ts │ │ ├── AssetFilters.css │ │ ├── AssetFilters.spec.tsx │ │ ├── AssetFilters.tsx │ │ ├── AssetFilters.types.ts │ │ ├── BodyShapeFilter │ │ │ ├── BodyShapeFilter.css │ │ │ ├── BodyShapeFilter.tsx │ │ │ └── index.ts │ │ ├── CollectionFilter │ │ │ ├── CollectionFilter.css │ │ │ ├── CollectionFilter.tsx │ │ │ └── index.ts │ │ ├── CreatorsFilter │ │ │ ├── CreatorsFilter.container.ts │ │ │ ├── CreatorsFilter.css │ │ │ ├── CreatorsFilter.tsx │ │ │ ├── CreatorsFilter.types.ts │ │ │ ├── index.ts │ │ │ ├── utils.spec.ts │ │ │ └── utils.ts │ │ ├── EmoteAttributesFilter │ │ │ ├── EmoteAttributesFilter.css │ │ │ ├── EmoteAttributesFilter.spec.tsx │ │ │ ├── EmoteAttributesFilter.tsx │ │ │ ├── EmoteAttributesFilter.types.ts │ │ │ └── index.ts │ │ ├── EstateSizeFilter │ │ │ ├── EstateSizeFilter.css │ │ │ ├── EstateSizeFilter.tsx │ │ │ ├── EstateSizeFilter.types.ts │ │ │ └── index.ts │ │ ├── Inventory │ │ │ ├── Inventory.tsx │ │ │ ├── Inventory.types.ts │ │ │ └── index.ts │ │ ├── LandStatusFilter │ │ │ ├── LandStatusFilter.css │ │ │ ├── LandStatusFilter.tsx │ │ │ └── index.ts │ │ ├── LocationFilter │ │ │ ├── LocationFilter.module.css │ │ │ ├── LocationFilter.spec.tsx │ │ │ ├── LocationFilter.tsx │ │ │ └── index.ts │ │ ├── MoreFilters │ │ │ ├── MoreFilters.css │ │ │ ├── MoreFilters.spec.tsx │ │ │ ├── MoreFilters.tsx │ │ │ └── index.ts │ │ ├── NetworkFilter │ │ │ ├── NetworkFilter.css │ │ │ ├── NetworkFilter.tsx │ │ │ └── index.ts │ │ ├── PriceFilter │ │ │ ├── PriceFilter.container.tsx │ │ │ ├── PriceFilter.css │ │ │ ├── PriceFilter.tsx │ │ │ ├── PriceFilter.types.ts │ │ │ ├── index.ts │ │ │ └── utils.ts │ │ ├── RentalPeriodFilter │ │ │ ├── RentalPeriodFilter.module.css │ │ │ ├── RentalPeriodFilter.spec.tsx │ │ │ ├── RentalPeriodFilter.tsx │ │ │ └── index.ts │ │ ├── SpecialFilter │ │ │ ├── SpecialFilter.container.tsx │ │ │ ├── SpecialFilter.css │ │ │ ├── SpecialFilter.tsx │ │ │ └── index.ts │ │ ├── StatusFilter │ │ │ ├── StatusFilter.css │ │ │ ├── StatusFilter.tsx │ │ │ └── index.ts │ │ ├── index.ts │ │ └── utils.ts │ ├── AssetImage │ │ ├── AssetImage.container.ts │ │ ├── AssetImage.css │ │ ├── AssetImage.tsx │ │ ├── AssetImage.types.ts │ │ ├── AvailableForMintPopup.tsx │ │ ├── EnsImage │ │ │ ├── EnsImage.tsx │ │ │ ├── EnsImage.types.ts │ │ │ ├── index.ts │ │ │ └── utils.ts │ │ ├── index.ts │ │ └── utils.tsx │ ├── AssetList │ │ ├── AssetList.container.ts │ │ ├── AssetList.css │ │ ├── AssetList.tsx │ │ ├── AssetList.types.ts │ │ ├── index.ts │ │ ├── utils.spec.ts │ │ └── utils.ts │ ├── AssetPage │ │ ├── Actions │ │ │ ├── Actions.container.ts │ │ │ ├── Actions.module.css │ │ │ ├── Actions.spec.tsx │ │ │ ├── Actions.tsx │ │ │ ├── Actions.types.ts │ │ │ └── index.ts │ │ ├── AssetPage.css │ │ ├── AssetPage.tsx │ │ ├── AssetPage.types.ts │ │ ├── AssetUtility │ │ │ ├── AssetUtility.module.css │ │ │ ├── AssetUtility.spec.tsx │ │ │ ├── AssetUtility.tsx │ │ │ ├── AssetUtility.types.ts │ │ │ └── index.ts │ │ ├── BaseDetail │ │ │ ├── BaseDetail.css │ │ │ ├── BaseDetail.tsx │ │ │ ├── BaseDetail.types.ts │ │ │ └── index.ts │ │ ├── BestBuyingOption │ │ │ ├── BestBuyingOption.container.ts │ │ │ ├── BestBuyingOption.module.css │ │ │ ├── BestBuyingOption.spec.tsx │ │ │ ├── BestBuyingOption.tsx │ │ │ ├── BestBuyingOption.types.ts │ │ │ └── index.ts │ │ ├── BidList │ │ │ ├── BidList.container.ts │ │ │ ├── BidList.css │ │ │ ├── BidList.tsx │ │ │ ├── BidList.types.ts │ │ │ └── index.ts │ │ ├── BidsTable │ │ │ ├── BidsTable.module.css │ │ │ ├── BidsTable.tsx │ │ │ ├── BidsTable.types.ts │ │ │ ├── BidsTableContent │ │ │ │ ├── BidsTableContent.container.ts │ │ │ │ ├── BidsTableContent.module.css │ │ │ │ ├── BidsTableContent.tsx │ │ │ │ ├── BidsTableContent.types.ts │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ └── utils.tsx │ │ ├── BuyNFTBox │ │ │ ├── BuyNFTBox.container.ts │ │ │ ├── BuyNFTBox.module.css │ │ │ ├── BuyNFTBox.tsx │ │ │ ├── BuyNFTBox.types.ts │ │ │ └── index.tsx │ │ ├── CategoryBadge │ │ │ ├── CategoryBadge.tsx │ │ │ ├── CategoryBadge.types.ts │ │ │ └── index.ts │ │ ├── Collection │ │ │ ├── Collection.module.css │ │ │ ├── Collection.tsx │ │ │ ├── Collection.types.tsx │ │ │ └── index.ts │ │ ├── Description │ │ │ ├── Description.module.css │ │ │ ├── Description.tsx │ │ │ ├── Description.types.ts │ │ │ └── index.ts │ │ ├── ENSDetail │ │ │ ├── ENSDetail.tsx │ │ │ ├── ENSDetail.types.ts │ │ │ └── index.ts │ │ ├── EmoteDetail │ │ │ ├── EmoteDetail.module.css │ │ │ ├── EmoteDetail.tsx │ │ │ ├── EmoteDetail.types.ts │ │ │ └── index.ts │ │ ├── ErrorBoundary │ │ │ ├── ErrorBoundary.tsx │ │ │ ├── ErrorBoundary.types.ts │ │ │ └── index.ts │ │ ├── EstateDetail │ │ │ ├── EstateDetail.css │ │ │ ├── EstateDetail.tsx │ │ │ ├── EstateDetail.types.ts │ │ │ ├── ParcelCoordinates │ │ │ │ ├── ParcelCoordinates.module.css │ │ │ │ ├── ParcelCoordinates.tsx │ │ │ │ ├── ParcelCoordinates.types.ts │ │ │ │ └── index.ts │ │ │ └── index.ts │ │ ├── Expiration │ │ │ ├── Expiration.container.ts │ │ │ ├── Expiration.module.css │ │ │ ├── Expiration.tsx │ │ │ ├── Expiration.types.ts │ │ │ └── index.ts │ │ ├── Highlight │ │ │ ├── Highlight.css │ │ │ ├── Highlight.tsx │ │ │ ├── Highlight.types.ts │ │ │ └── index.ts │ │ ├── Highlights │ │ │ ├── Highlights.css │ │ │ ├── Highlights.tsx │ │ │ ├── Highlights.types.ts │ │ │ └── index.ts │ │ ├── ItemDetail │ │ │ ├── ItemDetail.module.css │ │ │ ├── ItemDetail.tsx │ │ │ ├── ItemDetail.types.ts │ │ │ └── index.ts │ │ ├── JumpIn │ │ │ ├── JumpIn.module.css │ │ │ ├── JumpIn.tsx │ │ │ ├── JumpIn.types.ts │ │ │ └── index.ts │ │ ├── LinkedIconBadge │ │ │ ├── LinkedIconBadge.tsx │ │ │ ├── LinkedIconBadge.types.ts │ │ │ └── index.ts │ │ ├── ListingsTable │ │ │ ├── ListingsTable.container.ts │ │ │ ├── ListingsTable.module.css │ │ │ ├── ListingsTable.spec.tsx │ │ │ ├── ListingsTable.tsx │ │ │ ├── ListingsTable.types.ts │ │ │ ├── index.ts │ │ │ └── utils.tsx │ │ ├── ListingsTableContainer │ │ │ ├── ListingsTableContainer.module.css │ │ │ ├── ListingsTableContainer.tsx │ │ │ └── ListingsTableContainer.types.ts │ │ ├── OnBack │ │ │ ├── OnBack.container.ts │ │ │ ├── OnBack.css │ │ │ ├── OnBack.spec.tsx │ │ │ ├── OnBack.tsx │ │ │ ├── OnBack.types.tsx │ │ │ └── index.tsx │ │ ├── Owner │ │ │ ├── Owner.css │ │ │ ├── Owner.tsx │ │ │ ├── Owner.types.tsx │ │ │ └── index.ts │ │ ├── OwnersTable │ │ │ ├── OwnersTable.module.css │ │ │ ├── OwnersTable.spec.tsx │ │ │ ├── OwnersTable.tsx │ │ │ ├── OwnersTable.types.ts │ │ │ ├── index.ts │ │ │ └── utils.tsx │ │ ├── ParcelDetail │ │ │ ├── ParcelDetail.tsx │ │ │ ├── ParcelDetail.types.ts │ │ │ └── index.ts │ │ ├── PriceComponent │ │ │ ├── PriceComponent.container.ts │ │ │ ├── PriceComponent.module.css │ │ │ ├── PriceComponent.spec.tsx │ │ │ ├── PriceComponent.tsx │ │ │ ├── PriceComponent.types.ts │ │ │ └── index.ts │ │ ├── ProximityHighlights │ │ │ ├── ProximityHighlights.container.ts │ │ │ ├── ProximityHighlights.css │ │ │ ├── ProximityHighlights.tsx │ │ │ ├── ProximityHighlights.types.ts │ │ │ └── index.ts │ │ ├── RentalHistory │ │ │ ├── RentalHistory.module.css │ │ │ ├── RentalHistory.tsx │ │ │ ├── RentalHistory.types.ts │ │ │ ├── index.ts │ │ │ └── utils.tsx │ │ ├── RequiredPermissions │ │ │ ├── RequiredPermissions.container.ts │ │ │ ├── RequiredPermissions.module.css │ │ │ ├── RequiredPermissions.spec.tsx │ │ │ ├── RequiredPermissions.tsx │ │ │ ├── RequiredPermissions.types.ts │ │ │ └── index.ts │ │ ├── SaleActionBox │ │ │ ├── BuyNFTButtons │ │ │ │ ├── BuyNFTButtons.container.tsx │ │ │ │ ├── BuyNFTButtons.module.css │ │ │ │ ├── BuyNFTButtons.tsx │ │ │ │ ├── BuyNFTButtons.types.ts │ │ │ │ ├── BuyWithCardButton │ │ │ │ │ ├── BuyWithCardButton.module.css │ │ │ │ │ ├── BuyWithCardButton.tsx │ │ │ │ │ ├── BuyWithCardButton.types.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── BuyWithCryptoButton │ │ │ │ │ ├── BuyWithCryptoButton.module.css │ │ │ │ │ ├── BuyWithCryptoButton.tsx │ │ │ │ │ ├── BuyWithCryptoButton.types.ts │ │ │ │ │ └── index.ts │ │ │ │ └── index.ts │ │ │ ├── ItemSaleActions │ │ │ │ ├── ItemSaleActions.container.ts │ │ │ │ ├── ItemSaleActions.module.css │ │ │ │ ├── ItemSaleActions.spec.tsx │ │ │ │ ├── ItemSaleActions.tsx │ │ │ │ ├── ItemSaleActions.types.ts │ │ │ │ └── index.ts │ │ │ └── UseCreditsToggle │ │ │ │ ├── UseCreditsToggle.container.ts │ │ │ │ ├── UseCreditsToggle.module.css │ │ │ │ ├── UseCreditsToggle.spec.tsx │ │ │ │ ├── UseCreditsToggle.tsx │ │ │ │ ├── UseCreditsToggle.types.ts │ │ │ │ ├── index.ts │ │ │ │ └── toggleAnimation.json │ │ ├── SaleRentActionBox │ │ │ ├── PeriodsDropdown │ │ │ │ ├── PeriodsDropdown.module.css │ │ │ │ ├── PeriodsDropdown.tsx │ │ │ │ ├── PeriodsDropdown.types.ts │ │ │ │ └── index.ts │ │ │ ├── SaleRentActionBox.container.ts │ │ │ ├── SaleRentActionBox.module.css │ │ │ ├── SaleRentActionBox.tsx │ │ │ ├── SaleRentActionBox.types.ts │ │ │ └── index.ts │ │ ├── SmartBadge │ │ │ ├── SmartBadge.css │ │ │ ├── SmartBadge.tsx │ │ │ ├── SmartBadge.types.ts │ │ │ └── index.ts │ │ ├── Title │ │ │ ├── Title.module.css │ │ │ ├── Title.spec.tsx │ │ │ ├── Title.tsx │ │ │ ├── Title.types.ts │ │ │ └── index.ts │ │ ├── TransactionHistory │ │ │ ├── TransactionHistory.container.ts │ │ │ ├── TransactionHistory.css │ │ │ ├── TransactionHistory.tsx │ │ │ ├── TransactionHistory.types.ts │ │ │ ├── index.ts │ │ │ └── utils.tsx │ │ ├── UtilityBadge │ │ │ ├── UtilityBadge.tsx │ │ │ └── index.ts │ │ ├── WearableDetail │ │ │ ├── WearableDetail.module.css │ │ │ ├── WearableDetail.tsx │ │ │ ├── WearableDetail.types.ts │ │ │ └── index.ts │ │ ├── YourOffer │ │ │ ├── YourOffer.container.ts │ │ │ ├── YourOffer.module.css │ │ │ ├── YourOffer.tsx │ │ │ ├── YourOffer.types.ts │ │ │ └── index.tsx │ │ └── index.ts │ ├── AssetProvider │ │ ├── AssetProvider.container.ts │ │ ├── AssetProvider.tsx │ │ ├── AssetProvider.types.ts │ │ └── index.ts │ ├── AssetProviderPage │ │ ├── AssetProviderPage.container.ts │ │ ├── AssetProviderPage.module.css │ │ ├── AssetProviderPage.tsx │ │ ├── AssetProviderPage.types.ts │ │ └── index.ts │ ├── AssetTopbar │ │ ├── AssetTopbar.container.ts │ │ ├── AssetTopbar.module.css │ │ ├── AssetTopbar.tsx │ │ ├── AssetTopbar.types.ts │ │ ├── AssetTypeFilter │ │ │ ├── AssetTypeFilter.module.css │ │ │ ├── AssetTypeFilter.tsx │ │ │ └── index.ts │ │ ├── SearchBarDropdown │ │ │ ├── CollectibleResultItemRow │ │ │ │ ├── CollectibleResultItemRow.module.css │ │ │ │ └── CollectibleResultItemRow.tsx │ │ │ ├── CollectionResultRow │ │ │ │ ├── CollectionResultRow.module.css │ │ │ │ ├── CollectionResultRow.spec.tsx │ │ │ │ └── CollectionResultRow.tsx │ │ │ ├── CreatorResultRow │ │ │ │ ├── CreatorResultRow.module.css │ │ │ │ ├── CreatorResultRow.spec.tsx │ │ │ │ └── CreatorResultRow.tsx │ │ │ ├── SearchBarDropdown.container.tsx │ │ │ ├── SearchBarDropdown.module.css │ │ │ ├── SearchBarDropdown.spec.tsx │ │ │ ├── SearchBarDropdown.tsx │ │ │ ├── SearchBarDropdown.types.ts │ │ │ ├── SearchBarDropdownOptionSkeleton │ │ │ │ ├── SearchBarDropdownOptionSkeleton.module.css │ │ │ │ └── SearchBarDropdownOptionSkeleton.tsx │ │ │ ├── constants.ts │ │ │ └── index.ts │ │ ├── SelectedFilters │ │ │ ├── Pill │ │ │ │ ├── Pill.module.css │ │ │ │ └── Pill.tsx │ │ │ ├── SelectedFilters.container.ts │ │ │ ├── SelectedFilters.module.css │ │ │ ├── SelectedFilters.spec.tsx │ │ │ ├── SelectedFilters.tsx │ │ │ ├── SelectedFilters.types.ts │ │ │ ├── index.ts │ │ │ └── utils.ts │ │ ├── index.ts │ │ └── utils.ts │ ├── Atlas │ │ ├── Atlas.container.ts │ │ ├── Atlas.css │ │ ├── Atlas.tsx │ │ ├── Atlas.types.ts │ │ ├── Popup │ │ │ ├── Popup.css │ │ │ ├── Popup.tsx │ │ │ ├── Popup.types.ts │ │ │ └── index.ts │ │ └── index.ts │ ├── Bid │ │ ├── AcceptButton │ │ │ ├── AcceptButton.tsx │ │ │ ├── AcceptButton.types.ts │ │ │ └── index.ts │ │ ├── Bid.container.ts │ │ ├── Bid.css │ │ ├── Bid.tsx │ │ ├── Bid.types.ts │ │ ├── WarningMessage │ │ │ ├── WarningMessage.css │ │ │ ├── WarningMessage.tsx │ │ │ ├── WarningMessage.types.ts │ │ │ └── index.ts │ │ └── index.ts │ ├── BidButton │ │ ├── BidButton.module.css │ │ ├── BidButton.tsx │ │ ├── BidButton.types.ts │ │ └── index.ts │ ├── BidPage │ │ ├── BidModal │ │ │ ├── BidModal.css │ │ │ ├── BidModal.tsx │ │ │ ├── BidModal.types.ts │ │ │ └── index.ts │ │ ├── BidPage.container.ts │ │ ├── BidPage.tsx │ │ ├── BidPage.types.ts │ │ └── index.ts │ ├── Bids │ │ ├── Bids.container.ts │ │ ├── Bids.css │ │ ├── Bids.tsx │ │ ├── Bids.types.ts │ │ └── index.ts │ ├── BrowsePage │ │ ├── BrowsePage.container.ts │ │ ├── BrowsePage.module.css │ │ ├── BrowsePage.tsx │ │ ├── BrowsePage.types.ts │ │ └── index.ts │ ├── BuyPage │ │ ├── CardPaymentsExplanation │ │ │ ├── CardPaymentsExplanation.tsx │ │ │ ├── CardPaymentsExplanation.types.ts │ │ │ └── index.ts │ │ ├── Name │ │ │ ├── Name.tsx │ │ │ ├── Name.types.ts │ │ │ └── index.ts │ │ ├── NotEnoughMana │ │ │ ├── NotEnoughMana.container.ts │ │ │ ├── NotEnoughMana.module.css │ │ │ ├── NotEnoughMana.tsx │ │ │ ├── NotEnoughMana.types.ts │ │ │ └── index.ts │ │ ├── PartiallySupportedNetworkCard │ │ │ ├── PartiallySupportedNetworkCard.module.css │ │ │ ├── PartiallySupportedNetworkCard.tsx │ │ │ ├── PartiallySupportedNetworkCard.types.ts │ │ │ └── index.ts │ │ ├── Price │ │ │ ├── Price.tsx │ │ │ ├── Price.types.ts │ │ │ └── index.ts │ │ ├── PriceHasChanged │ │ │ ├── PriceHasChanged.module.css │ │ │ ├── PriceHasChanged.tsx │ │ │ ├── PriceHasChanged.types.ts │ │ │ └── index.ts │ │ ├── PriceTooLow │ │ │ ├── PriceTooLow.container.ts │ │ │ ├── PriceTooLow.module.css │ │ │ ├── PriceTooLow.tsx │ │ │ ├── PriceTooLow.types.ts │ │ │ └── index.ts │ │ ├── StatusPage │ │ │ ├── StatusPage.container.ts │ │ │ ├── StatusPage.css │ │ │ ├── StatusPage.tsx │ │ │ ├── StatusPage.types.ts │ │ │ └── index.ts │ │ ├── utils.spec.ts │ │ └── utils.ts │ ├── Campaign │ │ ├── CampaignBadge │ │ │ ├── CampaignBadge.container.tsx │ │ │ ├── CampaignBadge.tsx │ │ │ ├── CampaignBadge.types.ts │ │ │ └── index.ts │ │ └── CampaignBrowserPage │ │ │ ├── CampaignBrowserPage.container.ts │ │ │ ├── CampaignBrowserPage.css │ │ │ ├── CampaignBrowserPage.tsx │ │ │ ├── CampaignBrowserPage.types.ts │ │ │ └── index.ts │ ├── CancelSalePage │ │ ├── CancelSalePage.container.ts │ │ ├── CancelSalePage.css │ │ ├── CancelSalePage.tsx │ │ ├── CancelSalePage.types.ts │ │ └── index.ts │ ├── Chip │ │ ├── Chip.css │ │ ├── Chip.tsx │ │ ├── Chip.types.ts │ │ └── index.ts │ ├── Collapsible │ │ ├── Collapsible.module.css │ │ ├── Collapsible.tsx │ │ ├── Collapsible.types.ts │ │ └── index.ts │ ├── CollectionImage │ │ ├── CollectionImage.css │ │ ├── CollectionImage.tsx │ │ ├── CollectionImage.types.ts │ │ └── index.ts │ ├── CollectionList │ │ ├── CollectionList.container.ts │ │ ├── CollectionList.module.css │ │ ├── CollectionList.tsx │ │ ├── CollectionList.types.ts │ │ └── index.ts │ ├── CollectionPage │ │ ├── CollectionPage.container.ts │ │ ├── CollectionPage.module.css │ │ ├── CollectionPage.tsx │ │ ├── CollectionPage.types.ts │ │ ├── index.ts │ │ └── utils.tsx │ ├── CollectionProvider │ │ ├── CollectionProvider.container.ts │ │ ├── CollectionProvider.tsx │ │ ├── CollectionProvider.types.tsx │ │ └── index.ts │ ├── ConfirmInputValueModal │ │ ├── ConfirmInputValueModal.css │ │ ├── ConfirmInputValueModal.tsx │ │ ├── ConfirmInputValueModal.types.ts │ │ └── index.ts │ ├── Coordinate │ │ ├── Coordinate.module.css │ │ ├── Coordinate.tsx │ │ ├── Coordinate.types.ts │ │ └── index.ts │ ├── DetailsBox │ │ ├── DetailsBox.container.ts │ │ ├── DetailsBox.module.css │ │ ├── DetailsBox.tsx │ │ ├── DetailsBox.types.ts │ │ ├── DetailsRow │ │ │ ├── Availability │ │ │ │ ├── Availability.tsx │ │ │ │ └── index.ts │ │ │ ├── DetailsRow.types.ts │ │ │ ├── Expiration │ │ │ │ ├── Expiration.tsx │ │ │ │ ├── ExpirationInfo.tsx │ │ │ │ ├── ExpirationInfo.types.ts │ │ │ │ └── index.ts │ │ │ ├── Type │ │ │ │ ├── Type.module.css │ │ │ │ ├── Type.tsx │ │ │ │ └── index.ts │ │ │ └── index.ts │ │ ├── Info │ │ │ ├── Info.module.css │ │ │ ├── Info.tsx │ │ │ ├── Info.types.ts │ │ │ └── index.ts │ │ └── index.ts │ ├── ErrorBanner │ │ ├── ErrorBanner.module.css │ │ ├── ErrorBanner.tsx │ │ ├── ErrorBanner.types.ts │ │ └── index.ts │ ├── ExternalLinkModal │ │ ├── ExternalLinkModal.css │ │ ├── ExternalLinkModal.tsx │ │ ├── ExternalLinkModal.types.ts │ │ └── index.ts │ ├── FavoritesCounter │ │ ├── FavoritesCounter.container.ts │ │ ├── FavoritesCounter.module.css │ │ ├── FavoritesCounter.spec.tsx │ │ ├── FavoritesCounter.tsx │ │ ├── FavoritesCounter.types.ts │ │ └── index.ts │ ├── Footer │ │ ├── Footer.tsx │ │ └── index.ts │ ├── GenderBadge │ │ ├── GenderBadge.module.css │ │ ├── GenderBadge.tsx │ │ ├── GenderBadge.types.ts │ │ └── index.ts │ ├── HomePage │ │ ├── HomePage.container.ts │ │ ├── HomePage.css │ │ ├── HomePage.tsx │ │ ├── HomePage.types.ts │ │ ├── Slideshow │ │ │ ├── ItemsSection.tsx │ │ │ ├── Slideshow.css │ │ │ ├── Slideshow.tsx │ │ │ ├── Slideshow.types.ts │ │ │ └── index.ts │ │ ├── hooks.ts │ │ └── index.ts │ ├── InfiniteScroll │ │ ├── InfiniteScroll.spec.tsx │ │ ├── InfiniteScroll.tsx │ │ ├── InfiniteScroll.types.ts │ │ └── index.ts │ ├── InfoTooltip │ │ ├── InfoTooltip.css │ │ ├── InfoTooltip.tsx │ │ ├── InfoTooltip.types.ts │ │ └── index.ts │ ├── LandLockedPopup │ │ ├── LandLockedPopup.tsx │ │ ├── LandLockedPopup.types.ts │ │ └── index.ts │ ├── LandsPage │ │ ├── LandsPage.tsx │ │ └── index.ts │ ├── Layout │ │ ├── Column │ │ │ ├── Column.css │ │ │ ├── Column.tsx │ │ │ ├── Column.types.ts │ │ │ └── index.ts │ │ └── Row │ │ │ ├── Row.css │ │ │ ├── Row.tsx │ │ │ ├── Row.types.ts │ │ │ └── index.ts │ ├── LegacyNFTPage │ │ ├── LegacyNFTPage.container.ts │ │ ├── LegacyNFTPage.tsx │ │ ├── LegacyNFTPage.types.ts │ │ └── index.ts │ ├── LinkedProfile │ │ ├── LinkedProfile.tsx │ │ ├── LinkedProfile.types.ts │ │ └── index.ts │ ├── ListPage │ │ ├── ListPage.container.ts │ │ ├── ListPage.module.css │ │ ├── ListPage.spec.tsx │ │ ├── ListPage.tsx │ │ ├── ListPage.types.ts │ │ ├── constants.tsx │ │ └── index.ts │ ├── ListedBadge │ │ ├── ListedBadge.module.css │ │ ├── ListedBadge.tsx │ │ └── index.ts │ ├── ListsPage │ │ ├── ListCard │ │ │ ├── ListCard.container.ts │ │ │ ├── ListCard.module.css │ │ │ ├── ListCard.spec.tsx │ │ │ ├── ListCard.tsx │ │ │ ├── ListCard.types.ts │ │ │ ├── constants.ts │ │ │ └── index.ts │ │ ├── ListsPage.container.ts │ │ ├── ListsPage.module.css │ │ ├── ListsPage.spec.tsx │ │ ├── ListsPage.tsx │ │ ├── ListsPage.types.ts │ │ ├── constants.tsx │ │ └── index.ts │ ├── Mana │ │ ├── Mana.tsx │ │ ├── Mana.types.ts │ │ └── index.ts │ ├── ManaField │ │ ├── ManaField.css │ │ ├── ManaField.tsx │ │ ├── ManaField.types.ts │ │ └── index.ts │ ├── ManaToFiat │ │ ├── ManaToFiat.tsx │ │ ├── ManaToFiat.types.ts │ │ └── index.ts │ ├── ManageAssetPage │ │ ├── Highlights │ │ │ ├── Highlights.container.ts │ │ │ ├── Highlights.module.css │ │ │ ├── Highlights.tsx │ │ │ ├── Highlights.types.ts │ │ │ └── index.ts │ │ ├── IconButton │ │ │ ├── IconButton.module.css │ │ │ ├── IconButton.tsx │ │ │ ├── IconButton.types.ts │ │ │ └── index.ts │ │ ├── ManageAssetPage.container.ts │ │ ├── ManageAssetPage.module.css │ │ ├── ManageAssetPage.tsx │ │ ├── ManageAssetPage.types.ts │ │ ├── Map │ │ │ ├── Map.tsx │ │ │ ├── Map.types.ts │ │ │ └── index.ts │ │ ├── Rent │ │ │ ├── Rent.container.ts │ │ │ ├── Rent.module.css │ │ │ ├── Rent.tsx │ │ │ ├── Rent.types.ts │ │ │ └── index.ts │ │ ├── Sell │ │ │ ├── Sell.container.ts │ │ │ ├── Sell.module.css │ │ │ ├── Sell.tsx │ │ │ ├── Sell.types.ts │ │ │ └── index.ts │ │ └── index.ts │ ├── Menu │ │ ├── DropdownMenu │ │ │ ├── DropdownMenu.tsx │ │ │ ├── DropdownMenu.types.ts │ │ │ └── index.ts │ │ ├── Menu.css │ │ ├── Menu.tsx │ │ ├── Menu.types.ts │ │ ├── MenuItem │ │ │ ├── MenuItem.css │ │ │ ├── MenuItem.tsx │ │ │ ├── MenuItem.types.ts │ │ │ └── index.ts │ │ └── index.ts │ ├── Modals │ │ ├── AssetFiltersModal │ │ │ ├── AssetFiltersModal.container.ts │ │ │ ├── AssetFiltersModal.module.css │ │ │ ├── AssetFiltersModal.tsx │ │ │ ├── AssetFiltersModal.types.ts │ │ │ ├── AssetTypeFilter │ │ │ │ ├── AssetTypeFilter.css │ │ │ │ ├── AssetTypeFilter.tsx │ │ │ │ └── index.ts │ │ │ ├── CategoryFilter │ │ │ │ ├── CategoryFilter.container.ts │ │ │ │ ├── CategoryFilter.css │ │ │ │ ├── CategoryFilter.tsx │ │ │ │ ├── CategoryFilter.types.ts │ │ │ │ ├── index.ts │ │ │ │ └── utils.ts │ │ │ └── index.ts │ │ ├── BuyWithCardExplanationModal │ │ │ ├── BuyWithCardExplanationModal.container.ts │ │ │ ├── BuyWithCardExplanationModal.module.css │ │ │ ├── BuyWithCardExplanationModal.tsx │ │ │ ├── BuyWithCardExplanationModal.types.ts │ │ │ └── index.ts │ │ ├── BuyWithCryptoModal │ │ │ ├── BuyNftWithCryptoModal │ │ │ │ ├── BuyNftWithCryptoModal.container.ts │ │ │ │ ├── BuyNftWithCryptoModal.tsx │ │ │ │ ├── BuyNftWithCryptoModal.types.ts │ │ │ │ └── index.ts │ │ │ ├── BuyWithCryptoModal.container.ts │ │ │ ├── BuyWithCryptoModal.module.css │ │ │ ├── BuyWithCryptoModal.spec.tsx │ │ │ ├── BuyWithCryptoModal.tsx │ │ │ ├── BuyWithCryptoModal.types.ts │ │ │ ├── ChainAndTokenSelector │ │ │ │ ├── ChainAndTokenSelector.module.css │ │ │ │ └── ChainAndTokenSelector.tsx │ │ │ ├── MintNameWithCryptoModal │ │ │ │ ├── MintNameWithCryptoModal.container.ts │ │ │ │ ├── MintNameWithCryptoModal.tsx │ │ │ │ ├── MintNameWithCryptoModal.types.ts │ │ │ │ └── index.ts │ │ │ ├── MintNftWithCryptoModal │ │ │ │ ├── MintNftWithCryptoModal.container.ts │ │ │ │ ├── MintNftWithCryptoModal.tsx │ │ │ │ ├── MintNftWithCryptoModal.types.ts │ │ │ │ └── index.ts │ │ │ ├── PaymentSelector │ │ │ │ ├── PaymentSelector.module.css │ │ │ │ ├── PaymentSelector.tsx │ │ │ │ ├── constants.ts │ │ │ │ └── index.ts │ │ │ ├── PurchaseTotal │ │ │ │ ├── PurchaseTotal.module.css │ │ │ │ ├── PurchaseTotal.tsx │ │ │ │ ├── constants.ts │ │ │ │ └── index.ts │ │ │ ├── TokenIcon │ │ │ │ ├── TokenIcon.tsx │ │ │ │ ├── TokenIcon.types.ts │ │ │ │ └── index.ts │ │ │ ├── hooks.spec.ts │ │ │ ├── hooks.ts │ │ │ ├── index.ts │ │ │ ├── utils.spec.ts │ │ │ └── utils.ts │ │ ├── ClaimLandModal │ │ │ ├── ClaimLandModal.container.ts │ │ │ ├── ClaimLandModal.module.css │ │ │ ├── ClaimLandModal.tsx │ │ │ ├── ClaimLandModal.types.ts │ │ │ └── index.ts │ │ ├── ClaimNameFatFingerModal │ │ │ ├── ClaimNameFatFingerModal.container.ts │ │ │ ├── ClaimNameFatFingerModal.css │ │ │ ├── ClaimNameFatFingerModal.spec.tsx │ │ │ ├── ClaimNameFatFingerModal.tsx │ │ │ ├── ClaimNameFatFingerModal.types.ts │ │ │ └── index.ts │ │ ├── ConfirmDeleteListModal │ │ │ ├── ConfirmDeleteListModal.container.ts │ │ │ ├── ConfirmDeleteListModal.spec.tsx │ │ │ ├── ConfirmDeleteListModal.tsx │ │ │ ├── ConfirmDeleteListModal.types.ts │ │ │ └── index.ts │ │ ├── ConfirmRentModal │ │ │ ├── ConfirmRentModal.container.ts │ │ │ ├── ConfirmRentModal.module.css │ │ │ ├── ConfirmRentModal.tsx │ │ │ ├── ConfirmRentModal.types.ts │ │ │ └── index.ts │ │ ├── CreateOrEditListModal │ │ │ ├── CreateOrEditList.spec.tsx │ │ │ ├── CreateOrEditListModal.container.ts │ │ │ ├── CreateOrEditListModal.module.css │ │ │ ├── CreateOrEditListModal.tsx │ │ │ ├── CreateOrEditListModal.types.ts │ │ │ └── index.ts │ │ ├── ExpiredListingsModal │ │ │ ├── ExpiredListingsModal.module.css │ │ │ ├── ExpiredListingsModal.tsx │ │ │ └── index.ts │ │ ├── FavoritesModal │ │ │ ├── FavoritesModal.container.ts │ │ │ ├── FavoritesModal.module.css │ │ │ ├── FavoritesModal.spec.tsx │ │ │ ├── FavoritesModal.tsx │ │ │ ├── FavoritesModal.types.ts │ │ │ └── index.ts │ │ ├── LeavingSiteModal │ │ │ ├── LeavingSiteModal.tsx │ │ │ ├── LeavingSiteModal.types.ts │ │ │ └── index.ts │ │ ├── ListsLaunchModal │ │ │ ├── ListsLaunchModal.container.ts │ │ │ ├── ListsLaunchModal.module.css │ │ │ ├── ListsLaunchModal.tsx │ │ │ ├── ListsLaunchModal.types.ts │ │ │ └── index.ts │ │ ├── RemoveRentalModal │ │ │ ├── RemoveRentalModal.container.ts │ │ │ ├── RemoveRentalModal.module.css │ │ │ ├── RemoveRentalModal.tsx │ │ │ ├── RemoveRentalModal.types.ts │ │ │ └── index.ts │ │ ├── RentConfirmedModal │ │ │ ├── CTA │ │ │ │ ├── CTA.module.css │ │ │ │ ├── CTA.tsx │ │ │ │ └── CTA.types.ts │ │ │ ├── RentConfirmedModal.module.css │ │ │ ├── RentConfirmedModal.tsx │ │ │ ├── RentConfirmedModal.types.ts │ │ │ └── index.ts │ │ ├── RentalListingModal │ │ │ ├── AuthorizationStep │ │ │ │ ├── AuthorizationStep.container.ts │ │ │ │ ├── AuthorizationStep.module.css │ │ │ │ ├── AuthorizationStep.tsx │ │ │ │ ├── AuthorizationStep.types.ts │ │ │ │ └── index.ts │ │ │ ├── ConfirmationStep │ │ │ │ ├── ConfirmationStep.container.ts │ │ │ │ ├── ConfirmationStep.module.css │ │ │ │ ├── ConfirmationStep.tsx │ │ │ │ ├── ConfirmationStep.types.ts │ │ │ │ └── index.ts │ │ │ ├── CreateOrEditListingStep │ │ │ │ ├── CreateOrEditListingStep.module.css │ │ │ │ ├── CreateOrEditListingStep.tsx │ │ │ │ ├── CreateOrEditListingStep.types.ts │ │ │ │ └── index.ts │ │ │ ├── EditConfirmationStep │ │ │ │ ├── EditConfirmationStep.container.ts │ │ │ │ ├── EditConfirmationStep.module.css │ │ │ │ ├── EditConfirmationStep.tsx │ │ │ │ ├── EditConfirmationStep.types.ts │ │ │ │ └── index.ts │ │ │ ├── InformationStep │ │ │ │ ├── InformationStep.module.css │ │ │ │ ├── InformationStep.tsx │ │ │ │ ├── InformationStep.types.ts │ │ │ │ └── index.ts │ │ │ ├── RentalListingModal.container.ts │ │ │ ├── RentalListingModal.module.css │ │ │ ├── RentalListingModal.tsx │ │ │ ├── RentalListingModal.types.ts │ │ │ └── index.ts │ │ ├── SaveToListModal │ │ │ ├── SaveToListModal.container.ts │ │ │ ├── SaveToListModal.module.css │ │ │ ├── SaveToListModal.spec.tsx │ │ │ ├── SaveToListModal.tsx │ │ │ ├── SaveToListModal.types.ts │ │ │ ├── constants.ts │ │ │ └── index.ts │ │ ├── SellModal │ │ │ ├── SellModal.container.ts │ │ │ ├── SellModal.module.css │ │ │ ├── SellModal.tsx │ │ │ ├── SellModal.types.ts │ │ │ └── index.ts │ │ ├── SetNameAsAliasModal │ │ │ ├── SetNameAsAliasModal.container.ts │ │ │ ├── SetNameAsAliasModal.css │ │ │ ├── SetNameAsAliasModal.spec.tsx │ │ │ ├── SetNameAsAliasModal.tsx │ │ │ ├── SetNameAsAliasModal.types.ts │ │ │ └── index.ts │ │ ├── ShareListModal │ │ │ ├── ShareListModal.module.css │ │ │ ├── ShareListModal.spec.tsx │ │ │ ├── ShareListModal.tsx │ │ │ ├── ShareListModal.types.ts │ │ │ └── index.ts │ │ ├── SmartWearableVideoShowcaseModal │ │ │ ├── SmartWearableVideoShowcaseModal.module.css │ │ │ ├── SmartWearableVideoShowcaseModal.spec.tsx │ │ │ ├── SmartWearableVideoShowcaseModal.tsx │ │ │ ├── SmartWearableVideoShowcaseModal.types.ts │ │ │ ├── constants.ts │ │ │ └── index.ts │ │ ├── SubmitTransactionModal │ │ │ ├── SubmitTransactionModal.container.ts │ │ │ ├── SubmitTransactionModal.module.css │ │ │ ├── SubmitTransactionModal.tsx │ │ │ ├── SubmitTransactionModal.types.ts │ │ │ └── index.ts │ │ └── index.ts │ ├── NamesPage │ │ ├── ClaimNamePage │ │ │ ├── ClaimNamePage.container.tsx │ │ │ ├── ClaimNamePage.module.css │ │ │ ├── ClaimNamePage.spec.tsx │ │ │ ├── ClaimNamePage.tsx │ │ │ ├── ClaimNamePage.types.ts │ │ │ └── index.ts │ │ ├── NamesPage.module.css │ │ ├── NamesPage.tsx │ │ ├── NamesPage.types.ts │ │ └── index.ts │ ├── Navbar │ │ ├── Navbar.container.ts │ │ ├── Navbar.css │ │ ├── Navbar.tsx │ │ ├── Navbar.types.ts │ │ └── index.ts │ ├── Navigation │ │ ├── Navigation.container.tsx │ │ ├── Navigation.css │ │ ├── Navigation.tsx │ │ ├── Navigation.types.ts │ │ └── index.ts │ ├── Network │ │ ├── Network.tsx │ │ ├── Network.types.ts │ │ └── index.ts │ ├── OnSaleOrRentList │ │ ├── AssetCell │ │ │ ├── AssetCell.module.css │ │ │ ├── AssetCell.tsx │ │ │ ├── AssetCell.types.tsx │ │ │ └── index.ts │ │ ├── OnRentListElement │ │ │ ├── OnRentListElement.container.ts │ │ │ ├── OnRentListElement.css │ │ │ ├── OnRentListElement.tsx │ │ │ ├── OnRentListElement.types.ts │ │ │ └── index.ts │ │ ├── OnSaleListElement │ │ │ ├── OnSaleListElement.css │ │ │ ├── OnSaleListElement.tsx │ │ │ ├── OnSaleListElement.types.ts │ │ │ └── index.ts │ │ ├── OnSaleOrRentList.container.ts │ │ ├── OnSaleOrRentList.css │ │ ├── OnSaleOrRentList.tsx │ │ ├── OnSaleOrRentList.types.ts │ │ ├── index.ts │ │ ├── utils.spec.ts │ │ └── utils.ts │ ├── PageHeader │ │ ├── PageHeader.css │ │ ├── PageHeader.tsx │ │ ├── PageHeader.types.ts │ │ └── index.ts │ ├── PageLayout │ │ ├── PageLayout.module.css │ │ ├── PageLayout.tsx │ │ ├── PageLayout.types.ts │ │ └── index.ts │ ├── PartnersSidebar │ │ ├── PartnersSidebar.css │ │ ├── PartnersSidebar.tsx │ │ ├── PartnersSidebar.types.ts │ │ └── index.ts │ ├── Price │ │ ├── Price.container.ts │ │ ├── Price.tsx │ │ ├── Price.types.ts │ │ └── index.ts │ ├── PrivateTag │ │ ├── PrivateTag.module.css │ │ ├── PrivateTag.tsx │ │ ├── PrivateTag.types.ts │ │ └── index.ts │ ├── ProtectedRoute │ │ ├── ProtectedRoute.container.ts │ │ ├── ProtectedRoute.tsx │ │ ├── ProtectedRoute.types.ts │ │ └── index.ts │ ├── Rankings │ │ └── TimeframeSelector │ │ │ ├── TimeframeSelector.css │ │ │ ├── TimeframeSelector.tsx │ │ │ ├── TimeframeSelector.types.tsx │ │ │ └── index.ts │ ├── RankingsTable │ │ ├── RankingCollectorRow │ │ │ ├── RankingCollectorRow.css │ │ │ ├── RankingCollectorRow.tsx │ │ │ ├── RankingCollectorRow.types.ts │ │ │ └── index.ts │ │ ├── RankingCreatorRow │ │ │ ├── RankingCreatorRow.css │ │ │ ├── RankingCreatorRow.tsx │ │ │ ├── RankingCreatorRow.types.ts │ │ │ └── index.ts │ │ ├── RankingItemRow │ │ │ ├── RankingItemRow.css │ │ │ ├── RankingItemRow.tsx │ │ │ ├── RankingItemRow.types.ts │ │ │ └── index.ts │ │ ├── RankingsTable.container.ts │ │ ├── RankingsTable.css │ │ ├── RankingsTable.tsx │ │ ├── RankingsTable.types.ts │ │ ├── index.ts │ │ └── utils.ts │ ├── RecentlySoldTable │ │ ├── RecentlySoldTable.container.ts │ │ ├── RecentlySoldTable.css │ │ ├── RecentlySoldTable.tsx │ │ ├── RecentlySoldTable.types.ts │ │ └── index.ts │ ├── Routes │ │ ├── Routes.container.ts │ │ ├── Routes.tsx │ │ ├── Routes.types.ts │ │ └── index.ts │ ├── Sales │ │ ├── Activity │ │ │ ├── Activity.container.ts │ │ │ ├── Activity.css │ │ │ ├── Activity.tsx │ │ │ ├── Activity.types.ts │ │ │ └── index.ts │ │ ├── Sales.css │ │ ├── Sales.tsx │ │ ├── Stats │ │ │ ├── Stats.container.ts │ │ │ ├── Stats.css │ │ │ ├── Stats.tsx │ │ │ ├── Stats.types.ts │ │ │ └── index.ts │ │ └── index.ts │ ├── ScrollToTop │ │ ├── ScrollToTop.tsx │ │ └── index.ts │ ├── SellPage │ │ ├── SellModal │ │ │ ├── SellModal.tsx │ │ │ ├── SellModal.types.ts │ │ │ ├── index.ts │ │ │ ├── utils.spec.ts │ │ │ └── utils.ts │ │ ├── SellPage.container.ts │ │ ├── SellPage.css │ │ ├── SellPage.tsx │ │ ├── SellPage.types.ts │ │ └── index.ts │ ├── SettingsPage │ │ ├── Authorization │ │ │ ├── Authorization.container.ts │ │ │ ├── Authorization.css │ │ │ ├── Authorization.tsx │ │ │ ├── Authorization.types.ts │ │ │ └── index.ts │ │ ├── SettingsPage.container.ts │ │ ├── SettingsPage.css │ │ ├── SettingsPage.tsx │ │ ├── SettingsPage.types.ts │ │ └── index.ts │ ├── SignInPage │ │ ├── SignInPage.container.ts │ │ ├── SignInPage.css │ │ ├── SignInPage.tsx │ │ ├── SignInPage.types.ts │ │ └── index.ts │ ├── StoreSettings │ │ ├── CoverPicker │ │ │ ├── CoverPicker.css │ │ │ ├── CoverPicker.tsx │ │ │ ├── CoverPicker.types.ts │ │ │ └── index.ts │ │ ├── InputContainer │ │ │ ├── InputContainer.css │ │ │ ├── InputContainer.tsx │ │ │ ├── InputContainer.types.ts │ │ │ └── index.ts │ │ ├── StoreSettings.container.ts │ │ ├── StoreSettings.css │ │ ├── StoreSettings.tsx │ │ ├── StoreSettings.types.ts │ │ ├── TextInput │ │ │ ├── TextInput.css │ │ │ ├── TextInput.tsx │ │ │ ├── TextInput.types.ts │ │ │ └── index.ts │ │ └── index.ts │ ├── SuccessPage │ │ ├── SuccessPage.container.ts │ │ ├── SuccessPage.module.css │ │ ├── SuccessPage.spec.tsx │ │ ├── SuccessPage.tsx │ │ ├── SuccessPage.types.ts │ │ ├── index.ts │ │ ├── successAnimation.json │ │ └── utils.ts │ ├── Table │ │ ├── TableContainer │ │ │ ├── TableContainer.css │ │ │ ├── TableContainer.tsx │ │ │ ├── TableContianer.types.tsx │ │ │ └── index.tsx │ │ └── TableContent │ │ │ ├── TableContent.css │ │ │ ├── TableContent.spec.tsx │ │ │ ├── TableContent.tsx │ │ │ ├── TableContent.types.tsx │ │ │ └── index.tsx │ ├── TransferPage │ │ ├── TransferPage.container.ts │ │ ├── TransferPage.css │ │ ├── TransferPage.tsx │ │ ├── TransferPage.types.ts │ │ └── index.ts │ ├── Vendor │ │ ├── NFTFilters │ │ │ ├── SelectFilter │ │ │ │ ├── SelectFilter.css │ │ │ │ ├── SelectFilter.tsx │ │ │ │ ├── SelectFilter.types.ts │ │ │ │ └── index.ts │ │ │ └── TextFilter │ │ │ │ ├── TextFilter.css │ │ │ │ ├── TextFilter.tsx │ │ │ │ ├── TextFilter.types.ts │ │ │ │ └── index.ts │ │ ├── NFTSections │ │ │ ├── NFTSections.tsx │ │ │ ├── NFTSections.types.ts │ │ │ └── index.ts │ │ ├── NFTSidebar │ │ │ ├── NFTSidebar.container.ts │ │ │ ├── NFTSidebar.tsx │ │ │ ├── NFTSidebar.types.ts │ │ │ └── index.ts │ │ ├── PriceChangeNotice │ │ │ ├── PriceChangeNotice.container.ts │ │ │ ├── PriceChangeNotice.css │ │ │ ├── PriceChangeNotice.tsx │ │ │ ├── PriceChangeNotice.types.ts │ │ │ └── index.ts │ │ └── decentraland │ │ │ ├── NFTFilters │ │ │ ├── NFTFilters.container.ts │ │ │ ├── NFTFilters.css │ │ │ ├── NFTFilters.tsx │ │ │ ├── NFTFilters.types.ts │ │ │ └── index.ts │ │ │ ├── NFTSections │ │ │ ├── NFTSections.tsx │ │ │ ├── NFTSections.types.ts │ │ │ ├── NFTSectionsMenuItems │ │ │ │ ├── NFTSectionsMenuItems.tsx │ │ │ │ ├── NFTSectionsMenuItems.types.tsx │ │ │ │ └── index.ts │ │ │ └── index.ts │ │ │ ├── NFTSidebar │ │ │ ├── NFTSidebar.css │ │ │ ├── NFTSidebar.tsx │ │ │ ├── NFTSidebar.types.ts │ │ │ └── index.ts │ │ │ ├── NFTTopbar │ │ │ └── AssetTypeFilter │ │ │ │ └── AssetTypeFilter.module.css │ │ │ ├── types.ts │ │ │ ├── utils.spec.ts │ │ │ └── utils.ts │ ├── Wallet │ │ ├── Wallet.container.ts │ │ ├── Wallet.css │ │ ├── Wallet.tsx │ │ ├── Wallet.types.ts │ │ └── index.ts │ └── WarningBadge │ │ ├── WarningBadge.module.css │ │ ├── WarningBadge.tsx │ │ └── index.ts ├── config │ ├── env │ │ ├── dev.json │ │ ├── prod.json │ │ └── stg.json │ └── index.ts ├── contracts │ ├── Converter.json │ ├── Converter.ts │ ├── DCLController.ts │ ├── DCLRegistrar.ts │ ├── ERC721.json │ ├── ERC721.ts │ ├── ERC721Collection.json │ ├── EstateRegistry.json │ ├── EstateRegistry.ts │ ├── MarketplaceAdapter.json │ ├── MarketplaceAdapter.ts │ ├── common.ts │ ├── factories │ │ ├── Converter__factory.ts │ │ ├── DCLController__factory.ts │ │ ├── DCLRegistrar__factory.ts │ │ ├── ERC721__factory.ts │ │ ├── EstateRegistry__factory.ts │ │ ├── MarketplaceAdapter__factory.ts │ │ └── index.ts │ └── index.ts ├── env.d.ts ├── images │ ├── InfoOutlined.svg │ ├── assets.svg │ ├── back.svg │ ├── buy-nfts-status-page-stars-bottom.svg │ ├── buy-nfts-status-page-stars-top.svg │ ├── calendar.png │ ├── check.svg │ ├── claim-name-banner.png │ ├── claim-name-banner2.png │ ├── claim-name.svg │ ├── claim-your-own-name.svg │ ├── clock.png │ ├── close.svg │ ├── could-not-load-list.svg │ ├── district.svg │ ├── download.svg │ ├── emotes │ │ ├── mute.svg │ │ ├── play-loop.svg │ │ ├── play-once.svg │ │ ├── props.svg │ │ ├── sound.svg │ │ └── volume.svg │ ├── empty-bids.png │ ├── empty-list.svg │ ├── emptyOwners.png │ ├── error.svg │ ├── exchange.svg │ ├── expiration.png │ ├── filters-active.svg │ ├── filters.svg │ ├── forward.svg │ ├── fullscreen.svg │ ├── hands_category_img.png │ ├── hero.png │ ├── icon-credits.svg │ ├── icon-discord.svg │ ├── icon-facebook.svg │ ├── icon-twitter.svg │ ├── icon-website.svg │ ├── iconListings.png │ ├── info.svg │ ├── infoIcon.png │ ├── jump_in.svg │ ├── list-not-found.svg │ ├── listings.svg │ ├── lock-icon.png │ ├── logo_dark.svg │ ├── logo_dcl.svg │ ├── makeOffer.png │ ├── make_offer.svg │ ├── manage_names.webp │ ├── minting.png │ ├── mvmf-1064x100.gif │ ├── mvmf-1064x276.gif │ ├── mvmf-started-1064x100.gif │ ├── mvmf-started-1064x153.gif │ ├── mvmf-started-1064x276.gif │ ├── mvmf22-banner-small.png │ ├── names │ │ ├── chest.png │ │ ├── create.png │ │ ├── get-url.svg │ │ ├── governance.png │ │ ├── governance.svg │ │ ├── gradient-background.svg │ │ ├── landmark.png │ │ ├── own-space.png │ │ ├── passports.png │ │ ├── stand-out.svg │ │ └── unlock.svg │ ├── no-token.png │ ├── noListings.png │ ├── noResults.svg │ ├── onBack.png │ ├── pin-land.svg │ ├── pin-mini.svg │ ├── pin.svg │ ├── plaza.svg │ ├── preview-avatar-icon.svg │ ├── preview-wearable-icon.svg │ ├── rabbit.svg │ ├── rental_promotional_image.png │ ├── rentals │ │ ├── build-more.svg │ │ ├── get-creative.svg │ │ └── manage-land.svg │ ├── road.svg │ ├── search.svg │ ├── simple_close.svg │ ├── sparkles.svg │ ├── store.svg │ ├── trash.png │ ├── user-circle.svg │ ├── user.svg │ ├── verified.svg │ ├── watermelon.svg │ ├── wearable-icon.png │ └── wearables │ │ ├── BodyShapeIcon.svg │ │ ├── EarringsIcon.svg │ │ ├── EyebrowIcon.svg │ │ ├── EyesIcon.svg │ │ ├── EyewearIcon.svg │ │ ├── FacilHairIcon.svg │ │ ├── FeetIcon.svg │ │ ├── FemaleIcon.svg │ │ ├── HairIcon.svg │ │ ├── HandsIcon.svg │ │ ├── HatIcon.svg │ │ ├── HelmetIcon.svg │ │ ├── LowerBodyIcon.svg │ │ ├── MaleIcon.svg │ │ ├── MaskIcon.svg │ │ ├── MouthIcon.svg │ │ ├── SkinIcon.svg │ │ ├── TiaraIcon.svg │ │ ├── TopHeadIcon.svg │ │ ├── UnisexIcon.svg │ │ └── UpperBodyIcon.svg ├── index.css ├── index.tsx ├── lib │ ├── api.ts │ ├── asset.spec.ts │ ├── asset.ts │ ├── authorization.ts │ ├── copyText.spec.ts │ ├── copyText.tsx │ ├── date.ts │ ├── enum.spec.ts │ ├── enum.ts │ ├── environment.ts │ ├── error.ts │ ├── input.ts │ ├── mana.ts │ ├── orders.ts │ ├── pagination.spec.ts │ ├── pagination.ts │ ├── profiles.spec.ts │ ├── profiles.ts │ ├── text.ts │ ├── time.spec.ts │ ├── time.ts │ ├── timer.spec.ts │ ├── timer.ts │ └── utils.ts ├── modules │ ├── account │ │ ├── actions.spec.ts │ │ ├── actions.ts │ │ ├── reducer.spec.ts │ │ ├── reducer.ts │ │ ├── sagas.spec.ts │ │ ├── sagas.ts │ │ ├── selectors.spec.ts │ │ ├── selectors.ts │ │ ├── types.ts │ │ ├── utils.spec.ts │ │ └── utils.ts │ ├── analytics │ │ ├── actions.ts │ │ ├── reducer.spec.ts │ │ ├── reducer.ts │ │ ├── sagas.spec.ts │ │ ├── sagas.ts │ │ ├── selectors.spec.ts │ │ ├── selectors.ts │ │ ├── sentry.ts │ │ ├── track.ts │ │ └── types.ts │ ├── asset │ │ ├── actions.spec.ts │ │ ├── actions.ts │ │ ├── reducer.spec.ts │ │ ├── reducer.ts │ │ ├── sagas.spec.ts │ │ ├── sagas.ts │ │ ├── selectors.spec.ts │ │ ├── selectors.ts │ │ ├── types.ts │ │ ├── utils.spec.ts │ │ └── utils.ts │ ├── bid │ │ ├── actions.ts │ │ ├── reducer.spec.ts │ │ ├── reducer.ts │ │ ├── sagas.spec.ts │ │ ├── sagas.ts │ │ ├── selectors.spec.ts │ │ ├── selectors.ts │ │ ├── utils.spec.ts │ │ └── utils.ts │ ├── collection │ │ ├── actions.ts │ │ ├── reducer.spec.ts │ │ ├── reducer.ts │ │ ├── sagas.spec.ts │ │ ├── sagas.ts │ │ ├── selectors.spec.ts │ │ ├── selectors.ts │ │ └── utils.ts │ ├── contract │ │ ├── actions.ts │ │ ├── hooks.ts │ │ ├── reducer.spec.ts │ │ ├── reducer.ts │ │ ├── sagas.spec.ts │ │ ├── sagas.ts │ │ ├── selectors.ts │ │ ├── types.ts │ │ ├── utils.spec.ts │ │ └── utils.ts │ ├── ens │ │ ├── actions.spec.ts │ │ ├── actions.ts │ │ ├── reducer.spec.ts │ │ ├── reducer.ts │ │ ├── sagas.spec.ts │ │ ├── sagas.ts │ │ ├── selectors.spec.ts │ │ ├── selectors.ts │ │ ├── types.ts │ │ ├── utils.spec.ts │ │ └── utils.ts │ ├── event │ │ ├── actions.spec.ts │ │ ├── actions.ts │ │ ├── reducer.spec.ts │ │ ├── reducer.ts │ │ ├── sagas.spec.ts │ │ ├── sagas.ts │ │ ├── selectors.spec.ts │ │ └── selectors.ts │ ├── favorites │ │ ├── actions.spec.ts │ │ ├── actions.ts │ │ ├── reducer.spec.ts │ │ ├── reducer.ts │ │ ├── sagas.spec.ts │ │ ├── sagas.ts │ │ ├── selectors.spec.ts │ │ ├── selectors.ts │ │ ├── types.ts │ │ ├── utils.spec.ts │ │ └── utils.ts │ ├── features │ │ ├── selectors.spec.ts │ │ ├── selectors.ts │ │ ├── types.ts │ │ ├── utils.spec.ts │ │ └── utils.ts │ ├── identity │ │ ├── actions.ts │ │ ├── reducer.ts │ │ ├── sagas.spec.ts │ │ ├── sagas.ts │ │ ├── selectors.ts │ │ └── utils.ts │ ├── item │ │ ├── actions.spec.ts │ │ ├── actions.ts │ │ ├── reducer.spec.ts │ │ ├── reducer.ts │ │ ├── sagas.spec.ts │ │ ├── sagas.ts │ │ ├── selectors.spec.ts │ │ ├── selectors.ts │ │ ├── types.ts │ │ └── utils.ts │ ├── login │ │ ├── actions.ts │ │ └── sagas.ts │ ├── modal │ │ ├── sagas.spec.ts │ │ ├── sagas.ts │ │ └── types.ts │ ├── nft │ │ ├── actions.ts │ │ ├── ens │ │ │ └── types.ts │ │ ├── estate │ │ │ └── utils.ts │ │ ├── hooks.spec.tsx │ │ ├── hooks.ts │ │ ├── parcel │ │ │ ├── types.ts │ │ │ └── utils.ts │ │ ├── reducer.ts │ │ ├── sagas.spec.ts │ │ ├── sagas.ts │ │ ├── selectors.ts │ │ ├── types.ts │ │ ├── utils.spec.ts │ │ ├── utils.ts │ │ └── wearable │ │ │ └── types.ts │ ├── order │ │ ├── actions.spec.ts │ │ ├── actions.ts │ │ ├── reducer.spec.ts │ │ ├── reducer.ts │ │ ├── sagas.spec.ts │ │ ├── sagas.ts │ │ ├── selectors.spec.ts │ │ ├── selectors.ts │ │ ├── types.ts │ │ ├── utils.spec.ts │ │ └── utils.ts │ ├── proximity │ │ ├── actions.ts │ │ ├── hooks.ts │ │ ├── reducer.ts │ │ ├── sagas.ts │ │ ├── selectors.ts │ │ ├── types.ts │ │ └── utils.ts │ ├── reducer.ts │ ├── rental │ │ ├── actions.spec.ts │ │ ├── actions.ts │ │ ├── contract.spec.ts │ │ ├── contract.ts │ │ ├── reducer.spec.ts │ │ ├── reducer.ts │ │ ├── sagas.spec.ts │ │ ├── sagas.ts │ │ ├── selector.spec.ts │ │ ├── selectors.ts │ │ ├── types.ts │ │ ├── utils.spec.ts │ │ └── utils.ts │ ├── routing │ │ ├── actions.ts │ │ ├── locations.ts │ │ ├── sagas.spec.ts │ │ ├── sagas.ts │ │ ├── search.ts │ │ ├── selectors.spec.ts │ │ ├── selectors.ts │ │ ├── types.ts │ │ ├── utils.spec.ts │ │ └── utils.ts │ ├── sagas.ts │ ├── sale │ │ ├── actions.ts │ │ ├── reducer.ts │ │ ├── sagas.ts │ │ └── selectors.ts │ ├── store.ts │ ├── store │ │ ├── actions.ts │ │ ├── reducer.spec.ts │ │ ├── reducer.ts │ │ ├── sagas.spec.ts │ │ ├── sagas.ts │ │ ├── selectors.spec.ts │ │ ├── selectors.ts │ │ ├── types.ts │ │ ├── utils.spec.ts │ │ └── utils.ts │ ├── tile │ │ ├── actions.ts │ │ ├── reducer.ts │ │ ├── sagas.ts │ │ └── selectors.ts │ ├── toast │ │ ├── sagas.spec.ts │ │ ├── sagas.ts │ │ ├── toasts.tsx │ │ ├── types.ts │ │ └── utils.ts │ ├── transaction │ │ ├── selectors.ts │ │ └── utils.ts │ ├── transak │ │ ├── actions.ts │ │ ├── sagas.spec.ts │ │ ├── sagas.ts │ │ └── utils.ts │ ├── translation │ │ ├── locales │ │ │ ├── en.json │ │ │ ├── es.json │ │ │ ├── index.ts │ │ │ └── zh.json │ │ └── sagas.ts │ ├── types.ts │ ├── ui │ │ ├── actions.ts │ │ ├── asset │ │ │ ├── bid │ │ │ │ ├── reducer.ts │ │ │ │ └── selectors.ts │ │ │ ├── homepage │ │ │ │ ├── reducer.spec.ts │ │ │ │ ├── reducer.ts │ │ │ │ ├── selectors.spec.ts │ │ │ │ ├── selectors.ts │ │ │ │ └── types.ts │ │ │ ├── reducer.ts │ │ │ └── selectors.ts │ │ ├── browse │ │ │ ├── reducer.spec.ts │ │ │ ├── reducer.ts │ │ │ ├── sagas.spec.ts │ │ │ ├── sagas.ts │ │ │ ├── selector.spec.ts │ │ │ ├── selectors.ts │ │ │ ├── types.ts │ │ │ ├── utils.spec.ts │ │ │ └── utils.ts │ │ ├── preview │ │ │ ├── actions.ts │ │ │ ├── reducer.spec.ts │ │ │ ├── reducer.ts │ │ │ └── selectors.ts │ │ ├── reducer.ts │ │ ├── sagas.ts │ │ ├── types.ts │ │ ├── utils.spec.ts │ │ └── utils.ts │ ├── vendor │ │ ├── MarketplacePrice.ts │ │ ├── TokenConverter.ts │ │ ├── VendorFactory.ts │ │ ├── api.ts │ │ ├── decentraland │ │ │ ├── AnalyticsService.ts │ │ │ ├── BidService.spec.ts │ │ │ ├── BidService.ts │ │ │ ├── ContractService.ts │ │ │ ├── NFTService.spec.ts │ │ │ ├── NFTService.ts │ │ │ ├── OrderService.spec.ts │ │ │ ├── OrderService.ts │ │ │ ├── SubgraphService.ts │ │ │ ├── account │ │ │ │ ├── api.ts │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ ├── analytics │ │ │ │ ├── api.ts │ │ │ │ └── index.ts │ │ │ ├── bid │ │ │ │ ├── api.spec.ts │ │ │ │ ├── api.ts │ │ │ │ └── index.ts │ │ │ ├── builder │ │ │ │ ├── api.spec.ts │ │ │ │ ├── api.ts │ │ │ │ └── types.ts │ │ │ ├── catalog │ │ │ │ └── api.ts │ │ │ ├── collection │ │ │ │ ├── api.ts │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ ├── contracts.ts │ │ │ ├── favorites │ │ │ │ ├── api.spec.ts │ │ │ │ ├── api.ts │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ ├── index.ts │ │ │ ├── item │ │ │ │ ├── api.ts │ │ │ │ └── types.ts │ │ │ ├── land │ │ │ │ ├── api.ts │ │ │ │ └── index.ts │ │ │ ├── lists │ │ │ │ └── api.ts │ │ │ ├── marketplace │ │ │ │ ├── api.spec.ts │ │ │ │ ├── api.ts │ │ │ │ └── types.ts │ │ │ ├── nft │ │ │ │ ├── api.ts │ │ │ │ ├── authApi.ts │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ ├── order │ │ │ │ ├── api.ts │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ ├── peer │ │ │ │ └── api.ts │ │ │ ├── rankings │ │ │ │ └── api.ts │ │ │ ├── rentals │ │ │ │ ├── api.spec.ts │ │ │ │ ├── api.ts │ │ │ │ ├── utils.spec.ts │ │ │ │ └── utils.ts │ │ │ ├── routing │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ ├── sale │ │ │ │ ├── api.ts │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ └── utils.ts │ │ ├── index.ts │ │ ├── nft │ │ │ └── types.ts │ │ ├── routing │ │ │ └── types.ts │ │ ├── services.ts │ │ ├── types.ts │ │ └── utils.ts │ └── wallet │ │ ├── sagas.spec.ts │ │ ├── sagas.ts │ │ ├── selector.spec.ts │ │ ├── selectors.ts │ │ ├── utils.spec.ts │ │ └── utils.ts ├── node.ts ├── tests │ ├── afterSetupTest.ts │ ├── beforeSetupTests.ts │ ├── config │ │ └── fileTransformer.cjs │ └── defaultStore.ts ├── themes │ ├── components │ │ ├── Button.css │ │ ├── Card.css │ │ ├── Checkbox.css │ │ ├── Field.css │ │ ├── Menu.css │ │ ├── Navigation.css │ │ └── Popup.css │ └── index.ts └── utils │ ├── category.ts │ ├── enums.spec.ts │ ├── enums.ts │ ├── events.ts │ ├── filters.tsx │ ├── output.ts │ ├── test.tsx │ ├── tests.tsx │ ├── trades.spec.ts │ └── trades.ts ├── tsconfig.json ├── tsconfig.node.json ├── vercel.json └── vite.config.ts /indexer/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "tabWidth": 2, 3 | "semi": false, 4 | "singleQuote": true, 5 | "printWidth": 80 6 | } -------------------------------------------------------------------------------- /indexer/src/data/README.md: -------------------------------------------------------------------------------- 1 | # Autogenerated 2 | -------------------------------------------------------------------------------- /indexer/src/data/wearables/binance_us_collection.ts: -------------------------------------------------------------------------------- 1 | import { Wearable } from './Wearable' 2 | 3 | export let binance_us_collection: Wearable[] = [ 4 | new Wearable( 5 | 'binance_us_hat', 6 | 'Binance US Hat', 7 | 'Binance US Hat', 8 | 'hat', 9 | 'uncommon', 10 | ['BaseMale', 'BaseFemale'] 11 | ), 12 | new Wearable( 13 | 'binance_us_upper_body', 14 | 'Binance US Hoodie', 15 | 'Binance US Hoodie', 16 | 'upper_body', 17 | 'uncommon', 18 | ['BaseMale', 'BaseFemale'] 19 | ) 20 | ] 21 | 22 | -------------------------------------------------------------------------------- /indexer/src/modules/bid/index.ts: -------------------------------------------------------------------------------- 1 | export function getBidId( 2 | contractAddress: string, 3 | tokenId: string, 4 | bidder: string 5 | ): string { 6 | return contractAddress + '-' + tokenId + '-' + bidder 7 | } 8 | -------------------------------------------------------------------------------- /indexer/src/modules/category/categories.ts: -------------------------------------------------------------------------------- 1 | export const PARCEL = 'parcel' 2 | export const ESTATE = 'estate' 3 | export const WEARABLE = 'wearable' 4 | export const ENS = 'ens' 5 | -------------------------------------------------------------------------------- /indexer/src/modules/network/index.ts: -------------------------------------------------------------------------------- 1 | import { dataSource } from '@graphprotocol/graph-ts' 2 | 3 | export function getURNNetwork(): string { 4 | let network = dataSource.network() 5 | return network == "mainnet" ? "ethereum" : network 6 | } -------------------------------------------------------------------------------- /indexer/src/modules/order/status.ts: -------------------------------------------------------------------------------- 1 | export const OPEN = 'open' 2 | export const SOLD = 'sold' 3 | export const CANCELLED = 'cancelled' 4 | export const TRANSFERRED = 'transferred' 5 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "marketplace", 3 | "version": "2.7.0", 4 | "description": "Decentraland's Marketplace", 5 | "main": "index.js", 6 | "repository": { 7 | "type": "git", 8 | "url": "git+https://github.com/decentraland/marketplace.git" 9 | }, 10 | "dependencies": {} 11 | } 12 | -------------------------------------------------------------------------------- /webapp/.env.default: -------------------------------------------------------------------------------- 1 | VITE_DCL_DEFAULT_ENV=dev 2 | GEN_STATIC_LOCAL=true 3 | VITE_BASE_URL=/ 4 | VITE_REACT_APP_WEBSITE_VERSION="0.0.0-development" 5 | -------------------------------------------------------------------------------- /webapp/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | 25 | .env 26 | 27 | # Sentry Auth Token 28 | .sentryclirc 29 | -------------------------------------------------------------------------------- /webapp/.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "semi": false, 3 | "singleQuote": true, 4 | "printWidth": 140, 5 | "tabWidth": 2, 6 | "trailingComma": "none", 7 | "arrowParens": "avoid" 8 | } 9 | -------------------------------------------------------------------------------- /webapp/public/decentraland.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentraland/marketplace/65f07c637cf59900dc2bc8eccfc762bddfa8ab6c/webapp/public/decentraland.png -------------------------------------------------------------------------------- /webapp/public/emotes-v2.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentraland/marketplace/65f07c637cf59900dc2bc8eccfc762bddfa8ab6c/webapp/public/emotes-v2.mp4 -------------------------------------------------------------------------------- /webapp/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentraland/marketplace/65f07c637cf59900dc2bc8eccfc762bddfa8ab6c/webapp/public/favicon.ico -------------------------------------------------------------------------------- /webapp/public/known_origin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentraland/marketplace/65f07c637cf59900dc2bc8eccfc762bddfa8ab6c/webapp/public/known_origin.png -------------------------------------------------------------------------------- /webapp/public/makers_place.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentraland/marketplace/65f07c637cf59900dc2bc8eccfc762bddfa8ab6c/webapp/public/makers_place.png -------------------------------------------------------------------------------- /webapp/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "Decentraland Market", 3 | "name": "Decentraland Market", 4 | "background_color": "#18141a", 5 | "theme_color": "#18141a" 6 | } 7 | -------------------------------------------------------------------------------- /webapp/public/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@dcl/marketplace-site", 3 | "version": "0.0.0-development", 4 | "description": "Marketplace website", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "Apache-2.0", 12 | "homepage": "", 13 | "repository": { 14 | "type": "git", 15 | "url": "https://github.com/decentraland/marketplace.git" 16 | } 17 | } -------------------------------------------------------------------------------- /webapp/public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Allow: / 3 | 4 | Sitemap: https://market.decentraland.org/sitemap.xml -------------------------------------------------------------------------------- /webapp/public/sitemap.static.xml: -------------------------------------------------------------------------------- 1 | 2 | https://market.decentraland.org/ 3 | https://market.decentraland.org/lands 4 | https://market.decentraland.org/browse 5 | -------------------------------------------------------------------------------- /webapp/public/sitemap.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | https://market.decentraland.org/sitemap.static.xml 5 | 6 | 7 | https://market.decentraland.org/sitemap.urls.index.xml 8 | 9 | -------------------------------------------------------------------------------- /webapp/public/smart-wearables-ftu.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentraland/marketplace/65f07c637cf59900dc2bc8eccfc762bddfa8ab6c/webapp/public/smart-wearables-ftu.mp4 -------------------------------------------------------------------------------- /webapp/public/super_rare.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentraland/marketplace/65f07c637cf59900dc2bc8eccfc762bddfa8ab6c/webapp/public/super_rare.png -------------------------------------------------------------------------------- /webapp/src/components/AccountPage/AccountBanner/AccountBanner.types.tsx: -------------------------------------------------------------------------------- 1 | import { Store } from '../../../modules/store/types' 2 | 3 | export type Props = { 4 | address: string 5 | store?: Store 6 | isLoading: boolean 7 | onBack: () => void 8 | onFetchStore: (address: string) => void 9 | } 10 | 11 | export type MapStateProps = Pick 12 | export type MapDispatchProps = Pick 13 | -------------------------------------------------------------------------------- /webapp/src/components/AccountPage/AccountBanner/index.ts: -------------------------------------------------------------------------------- 1 | import AccountBanner from './AccountBanner.container' 2 | 3 | export default AccountBanner 4 | -------------------------------------------------------------------------------- /webapp/src/components/AccountPage/AccountPage.css: -------------------------------------------------------------------------------- 1 | .AccountPage .PageHeader { 2 | display: flex; 3 | align-items: center; 4 | background-color: var(--card); 5 | } 6 | 7 | .AccountPage .PageHeader > div { 8 | margin: auto; 9 | text-align: center; 10 | } 11 | 12 | .AccountPage ul.Menu { 13 | margin-top: 0; 14 | overflow: hidden; 15 | } 16 | 17 | .AccountPage .blockie-address { 18 | margin-top: 16px; 19 | font-size: 17px; 20 | } 21 | -------------------------------------------------------------------------------- /webapp/src/components/AccountPage/index.ts: -------------------------------------------------------------------------------- 1 | import AccountPage from './AccountPage.container' 2 | export { AccountPage } 3 | -------------------------------------------------------------------------------- /webapp/src/components/AccountSidebar/CurrentAccountSidebar/CurrentAccountSidebar.types.tsx: -------------------------------------------------------------------------------- 1 | import { VendorName } from '../../../modules/vendor' 2 | 3 | export type Props = { 4 | section: string 5 | onBrowse: (vendor: VendorName, section: string) => void 6 | } 7 | -------------------------------------------------------------------------------- /webapp/src/components/AccountSidebar/CurrentAccountSidebar/index.ts: -------------------------------------------------------------------------------- 1 | import CurrentAccountSidebar from './CurrentAccountSidebar' 2 | 3 | export default CurrentAccountSidebar 4 | -------------------------------------------------------------------------------- /webapp/src/components/AccountSidebar/OtherAccountSidebar/index.ts: -------------------------------------------------------------------------------- 1 | import OtherAccountSidebar from './OtherAccountSidebar.container' 2 | 3 | export default OtherAccountSidebar 4 | -------------------------------------------------------------------------------- /webapp/src/components/AccountSidebar/index.ts: -------------------------------------------------------------------------------- 1 | import AccountSidebar from './AccountSidebar.container' 2 | export { AccountSidebar } 3 | -------------------------------------------------------------------------------- /webapp/src/components/ActivityPage/ActivityPage.css: -------------------------------------------------------------------------------- 1 | .ActivityPage .center { 2 | position: absolute; 3 | top: 0px; 4 | left: 0px; 5 | right: 0px; 6 | bottom: 0px; 7 | display: flex; 8 | align-items: center; 9 | justify-content: center; 10 | } 11 | 12 | .ActivityPage .ui.basic.button { 13 | padding: 0; 14 | } 15 | 16 | .ActivityPage .center p { 17 | color: var(--secondary-text); 18 | } 19 | 20 | .ActivityPage .transactions { 21 | margin-top: 20px; 22 | } 23 | -------------------------------------------------------------------------------- /webapp/src/components/ActivityPage/Transaction/Transaction.types.ts: -------------------------------------------------------------------------------- 1 | import { Transaction } from 'decentraland-dapps/dist/modules/transaction/types' 2 | import { getContract } from '../../../modules/contract/selectors' 3 | import { Contract } from '../../../modules/vendor/services' 4 | 5 | export type Props = { 6 | tx: Transaction 7 | getContract: (query: Partial) => ReturnType 8 | } 9 | 10 | export type MapStateProps = Pick 11 | -------------------------------------------------------------------------------- /webapp/src/components/ActivityPage/Transaction/TransactionDetail/TransactionDetail.types.ts: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { Transaction } from 'decentraland-dapps/dist/modules/transaction/types' 3 | import { Asset } from '../../../../modules/asset/types' 4 | 5 | export type Props = { 6 | asset?: Asset | null 7 | text: React.ReactNode 8 | tx: Transaction 9 | } 10 | -------------------------------------------------------------------------------- /webapp/src/components/ActivityPage/Transaction/TransactionDetail/index.ts: -------------------------------------------------------------------------------- 1 | import TransactionDetail from './TransactionDetail' 2 | export { TransactionDetail } 3 | -------------------------------------------------------------------------------- /webapp/src/components/ActivityPage/Transaction/index.ts: -------------------------------------------------------------------------------- 1 | import Transaction from './Transaction.container' 2 | export { Transaction } 3 | -------------------------------------------------------------------------------- /webapp/src/components/ActivityPage/index.ts: -------------------------------------------------------------------------------- 1 | import ActivityPage from './ActivityPage.container' 2 | export { ActivityPage } 3 | -------------------------------------------------------------------------------- /webapp/src/components/AnalyticsVolumeDayData/index.ts: -------------------------------------------------------------------------------- 1 | import AnalyticsVolumeDayData from './AnalyticsVolumeDayData.container' 2 | export { AnalyticsVolumeDayData } 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetAction/AssetAction.container.ts: -------------------------------------------------------------------------------- 1 | import { connect } from 'react-redux' 2 | import { Dispatch } from 'redux' 3 | import { goBack } from '../../modules/routing/actions' 4 | import AssetPage from './AssetAction' 5 | import { MapDispatchProps } from './AssetAction.types' 6 | 7 | const mapDispatch = (dispatch: Dispatch): MapDispatchProps => ({ 8 | onBack: (location?: string) => dispatch(goBack(location)) 9 | }) 10 | 11 | export default connect(null, mapDispatch)(AssetPage) 12 | -------------------------------------------------------------------------------- /webapp/src/components/AssetAction/AssetAction.types.ts: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { Asset } from '../../modules/asset/types' 3 | 4 | export type Props = { 5 | asset: Asset 6 | children: React.ReactNode 7 | onBack: (location?: string) => void 8 | } 9 | 10 | export type MapDispatchProps = Pick 11 | -------------------------------------------------------------------------------- /webapp/src/components/AssetAction/index.ts: -------------------------------------------------------------------------------- 1 | import AssetAction from './AssetAction.container' 2 | export { AssetAction } 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetBrowse/Box/Box.module.css: -------------------------------------------------------------------------------- 1 | .box { 2 | border: 2px solid var(--secondary); 3 | border-radius: 12px; 4 | display: flex; 5 | flex-direction: column; 6 | } 7 | 8 | .header { 9 | margin-left: 20px; 10 | margin-top: 13px; 11 | margin-bottom: 13px; 12 | text-transform: uppercase; 13 | color: #736e7d; 14 | font-weight: 600; 15 | font-size: 13px; 16 | } 17 | 18 | .children { 19 | margin-bottom: 8px; 20 | } 21 | -------------------------------------------------------------------------------- /webapp/src/components/AssetBrowse/Box/Box.types.ts: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export type Props = { 4 | header?: string 5 | className?: string 6 | children: React.ReactNode 7 | childrenClassName?: string 8 | } 9 | -------------------------------------------------------------------------------- /webapp/src/components/AssetBrowse/Box/index.ts: -------------------------------------------------------------------------------- 1 | import Box from './Box' 2 | export { Box } 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetBrowse/MapBrowse/index.ts: -------------------------------------------------------------------------------- 1 | import MapBrowse from './MapBrowse.container' 2 | 3 | export default MapBrowse 4 | -------------------------------------------------------------------------------- /webapp/src/components/AssetBrowse/MapTopbar/MapTopbar.types.ts: -------------------------------------------------------------------------------- 1 | import { BrowseOptions } from '../../../modules/routing/types' 2 | 3 | export type Props = { 4 | onlyOnSale: boolean | undefined 5 | onlyOnRent: boolean | undefined 6 | showOwned?: boolean 7 | onBrowse: (options: BrowseOptions) => void 8 | onShowOwnedChange?: (show: boolean) => void 9 | } 10 | 11 | export type MapStateProps = Pick 12 | 13 | export type MapDispatchProps = Pick 14 | -------------------------------------------------------------------------------- /webapp/src/components/AssetBrowse/MapTopbar/index.ts: -------------------------------------------------------------------------------- 1 | import MapTopbar from './MapTopbar.container' 2 | export default MapTopbar 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetBrowse/ToggleBox/ToggleBox.types.ts: -------------------------------------------------------------------------------- 1 | export type Item = { 2 | title: string 3 | description: string 4 | active?: boolean 5 | icon?: React.ReactNode 6 | disabled?: boolean 7 | onClick: (item: Item, index: number) => unknown 8 | } 9 | 10 | export type Props = { 11 | header?: string 12 | direction?: 'row' | 'column' 13 | className?: string 14 | items: Item[] 15 | } 16 | -------------------------------------------------------------------------------- /webapp/src/components/AssetBrowse/ToggleBox/index.ts: -------------------------------------------------------------------------------- 1 | import ToggleBox from './ToggleBox' 2 | export { ToggleBox } 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetBrowse/index.ts: -------------------------------------------------------------------------------- 1 | import AssetBrowse from './AssetBrowse.container' 2 | export { AssetBrowse } 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetCard/ENSTags/ENSTags.css: -------------------------------------------------------------------------------- 1 | .ENSTags { 2 | display: flex; 3 | } 4 | 5 | .ENSTags .badge { 6 | display: flex; 7 | align-items: center; 8 | border-radius: 4px; 9 | background-color: #37333d; 10 | font-size: 13px; 11 | text-transform: uppercase; 12 | line-height: 14px; 13 | color: white; 14 | padding: 4px 8px; 15 | } 16 | -------------------------------------------------------------------------------- /webapp/src/components/AssetCard/ENSTags/ENSTags.tsx: -------------------------------------------------------------------------------- 1 | import { t } from 'decentraland-dapps/dist/modules/translation/utils' 2 | import { Props } from './ENSTags.types' 3 | import './ENSTags.css' 4 | 5 | const ENSTags = (_: Props) => { 6 | return ( 7 |
8 |
{t('global.ens')}
9 |
10 | ) 11 | } 12 | 13 | export default ENSTags 14 | -------------------------------------------------------------------------------- /webapp/src/components/AssetCard/ENSTags/ENSTags.types.ts: -------------------------------------------------------------------------------- 1 | import { NFT } from '../../../modules/nft/types' 2 | 3 | export type Props = { 4 | nft: NFT 5 | } 6 | -------------------------------------------------------------------------------- /webapp/src/components/AssetCard/ENSTags/index.ts: -------------------------------------------------------------------------------- 1 | import ENSTags from './ENSTags' 2 | export { ENSTags } 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetCard/EmoteTags/EmoteTags.types.ts: -------------------------------------------------------------------------------- 1 | import { Asset } from '../../../modules/asset/types' 2 | 3 | export type Props = { 4 | asset: Asset 5 | } 6 | -------------------------------------------------------------------------------- /webapp/src/components/AssetCard/EmoteTags/index.ts: -------------------------------------------------------------------------------- 1 | import EmoteTags from './EmoteTags' 2 | export { EmoteTags } 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetCard/EstateTags/EstateTags.css: -------------------------------------------------------------------------------- 1 | .EstateTags { 2 | display: flex; 3 | } 4 | 5 | .EstateTags .size { 6 | display: flex; 7 | align-items: center; 8 | border-radius: 4px; 9 | background-color: #37333d; 10 | font-size: 12px; 11 | line-height: 14px; 12 | color: white; 13 | padding: 4px 8px; 14 | } 15 | -------------------------------------------------------------------------------- /webapp/src/components/AssetCard/EstateTags/EstateTags.tsx: -------------------------------------------------------------------------------- 1 | import { ProximityTags } from '../ProximityTags' 2 | import { Props } from './EstateTags.types' 3 | import './EstateTags.css' 4 | 5 | const EstateTags = (props: Props) => { 6 | const { nft } = props 7 | const estate = nft.data.estate! 8 | return ( 9 |
10 |
{estate.size.toLocaleString()} LAND
11 | 12 |
13 | ) 14 | } 15 | 16 | export default EstateTags 17 | -------------------------------------------------------------------------------- /webapp/src/components/AssetCard/EstateTags/EstateTags.types.ts: -------------------------------------------------------------------------------- 1 | import { NFT } from '../../../modules/nft/types' 2 | import { VendorName } from '../../../modules/vendor/types' 3 | 4 | export type Props = { 5 | nft: NFT 6 | } 7 | -------------------------------------------------------------------------------- /webapp/src/components/AssetCard/EstateTags/index.ts: -------------------------------------------------------------------------------- 1 | import EstateTags from './EstateTags' 2 | export { EstateTags } 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetCard/ParcelTags/ParcelTags.module.css: -------------------------------------------------------------------------------- 1 | .ParcelTags { 2 | display: flex; 3 | } 4 | 5 | .coordinates { 6 | font-size: 12px !important; 7 | padding: 4px 8px !important; 8 | border-radius: 4px !important; 9 | color: white; 10 | line-height: 14px !important; 11 | height: auto !important; 12 | } 13 | 14 | .coordinates i { 15 | width: 14px; 16 | height: 12px; 17 | background-size: 18px; 18 | background-position: -4px -3px; 19 | } 20 | -------------------------------------------------------------------------------- /webapp/src/components/AssetCard/ParcelTags/ParcelTags.types.ts: -------------------------------------------------------------------------------- 1 | import { NFT } from '../../../modules/nft/types' 2 | import { VendorName } from '../../../modules/vendor/types' 3 | 4 | export type Props = { 5 | nft: NFT 6 | } 7 | -------------------------------------------------------------------------------- /webapp/src/components/AssetCard/ParcelTags/index.ts: -------------------------------------------------------------------------------- 1 | import ParcelTags from './ParcelTags' 2 | export { ParcelTags } 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetCard/ProximityTags/ProximityTags.container.ts: -------------------------------------------------------------------------------- 1 | import { connect } from 'react-redux' 2 | import { getProximities } from '../../../modules/proximity/selectors' 3 | import { RootState } from '../../../modules/reducer' 4 | import ProximityTags from './ProximityTags' 5 | import { MapStateProps } from './ProximityTags.types' 6 | 7 | const mapState = (state: RootState): MapStateProps => ({ 8 | proximities: getProximities(state) 9 | }) 10 | 11 | export default connect(mapState)(ProximityTags) 12 | -------------------------------------------------------------------------------- /webapp/src/components/AssetCard/ProximityTags/ProximityTags.types.ts: -------------------------------------------------------------------------------- 1 | import { Dispatch } from 'redux' 2 | import { NFT } from '../../../modules/nft/types' 3 | import { Proximity } from '../../../modules/proximity/types' 4 | 5 | export type Props = { 6 | nft: NFT 7 | proximities: Record 8 | } 9 | 10 | export type MapStateProps = Pick 11 | export type MapDispatch = Dispatch 12 | -------------------------------------------------------------------------------- /webapp/src/components/AssetCard/ProximityTags/index.ts: -------------------------------------------------------------------------------- 1 | import ProximityTags from './ProximityTags.container' 2 | export { ProximityTags } 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetCard/WearableTags/WearableTags.types.ts: -------------------------------------------------------------------------------- 1 | import { Asset } from '../../../modules/asset/types' 2 | 3 | export type Props = { 4 | asset: Asset 5 | } 6 | -------------------------------------------------------------------------------- /webapp/src/components/AssetCard/WearableTags/index.ts: -------------------------------------------------------------------------------- 1 | import WearableTags from './WearableTags' 2 | export { WearableTags } 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetCard/index.ts: -------------------------------------------------------------------------------- 1 | import AssetCard from './AssetCard.container' 2 | export { AssetCard } 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetFilters/BodyShapeFilter/BodyShapeFilter.css: -------------------------------------------------------------------------------- 1 | .body-shape-filter .body-shape-options { 2 | display: grid; 3 | grid-template-columns: 1fr; 4 | row-gap: 20px; 5 | margin: 20px 0; 6 | } 7 | -------------------------------------------------------------------------------- /webapp/src/components/AssetFilters/BodyShapeFilter/index.ts: -------------------------------------------------------------------------------- 1 | export * from './BodyShapeFilter' 2 | -------------------------------------------------------------------------------- /webapp/src/components/AssetFilters/CollectionFilter/CollectionFilter.css: -------------------------------------------------------------------------------- 1 | .SelectFilter.collection-filter .ui.fluid.search.selection.dropdown { 2 | height: 44px; 3 | } 4 | 5 | @media (max-width: 768px) { 6 | .collection-filter { 7 | margin-top: 20px; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /webapp/src/components/AssetFilters/CollectionFilter/index.ts: -------------------------------------------------------------------------------- 1 | export * from './CollectionFilter' 2 | -------------------------------------------------------------------------------- /webapp/src/components/AssetFilters/CreatorsFilter/index.ts: -------------------------------------------------------------------------------- 1 | import CreatorsFilter from './CreatorsFilter.container' 2 | export default CreatorsFilter 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetFilters/CreatorsFilter/utils.ts: -------------------------------------------------------------------------------- 1 | import { Profile } from '@dcl/schemas' 2 | 3 | export function profileToCreatorAccount(profiles: Profile[]) { 4 | return profiles.map(profile => ({ 5 | name: profile.avatars[0].name, 6 | address: profile.avatars[0].ethAddress 7 | })) 8 | } 9 | -------------------------------------------------------------------------------- /webapp/src/components/AssetFilters/EmoteAttributesFilter/EmoteAttributesFilter.css: -------------------------------------------------------------------------------- 1 | .emote-play-mode-filter .emote-play-mode-options { 2 | display: grid; 3 | grid-template-columns: 1fr; 4 | row-gap: 20px; 5 | margin: 20px 0; 6 | } 7 | -------------------------------------------------------------------------------- /webapp/src/components/AssetFilters/EmoteAttributesFilter/EmoteAttributesFilter.types.ts: -------------------------------------------------------------------------------- 1 | import { EmotePlayMode } from '@dcl/schemas' 2 | 3 | export type Props = { 4 | emotePlayMode?: EmotePlayMode[] 5 | emoteHasSound?: boolean 6 | emoteHasGeometry?: boolean 7 | onChange: (value: { emotePlayMode?: EmotePlayMode[]; emoteHasSound?: boolean; emoteHasGeometry?: boolean }) => void 8 | defaultCollapsed?: boolean 9 | } 10 | -------------------------------------------------------------------------------- /webapp/src/components/AssetFilters/EmoteAttributesFilter/index.ts: -------------------------------------------------------------------------------- 1 | export * from './EmoteAttributesFilter' 2 | -------------------------------------------------------------------------------- /webapp/src/components/AssetFilters/EstateSizeFilter/EstateSizeFilter.css: -------------------------------------------------------------------------------- 1 | .estate-size-filter, .bar-chart { 2 | position: relative; 3 | } 4 | -------------------------------------------------------------------------------- /webapp/src/components/AssetFilters/EstateSizeFilter/index.ts: -------------------------------------------------------------------------------- 1 | import { EstateSizeFilter } from './EstateSizeFilter' 2 | 3 | export default EstateSizeFilter 4 | -------------------------------------------------------------------------------- /webapp/src/components/AssetFilters/Inventory/Inventory.types.ts: -------------------------------------------------------------------------------- 1 | import { BarChartProps } from 'decentraland-ui/lib/components/BarChart/BarChart.types' 2 | import { BrowseOptions } from '../../../modules/routing/types' 3 | 4 | export type Props = { 5 | isMana: boolean 6 | values?: BrowseOptions 7 | defaultCollapsed?: boolean 8 | fetcher: () => Promise> 9 | } & Omit 10 | -------------------------------------------------------------------------------- /webapp/src/components/AssetFilters/Inventory/index.ts: -------------------------------------------------------------------------------- 1 | import { Inventory } from './Inventory' 2 | 3 | export default Inventory 4 | -------------------------------------------------------------------------------- /webapp/src/components/AssetFilters/LandStatusFilter/LandStatusFilter.css: -------------------------------------------------------------------------------- 1 | .land-status-filter .land-status-options { 2 | display: grid; 3 | grid-template-columns: 1fr; 4 | row-gap: 20px; 5 | margin: 20px 0; 6 | } 7 | -------------------------------------------------------------------------------- /webapp/src/components/AssetFilters/LandStatusFilter/index.ts: -------------------------------------------------------------------------------- 1 | export * from './LandStatusFilter' 2 | -------------------------------------------------------------------------------- /webapp/src/components/AssetFilters/LocationFilter/LocationFilter.module.css: -------------------------------------------------------------------------------- 1 | .checkboxFilter { 2 | margin-bottom: 25px; 3 | } 4 | 5 | .slider { 6 | margin-top: 20px; 7 | } 8 | 9 | .slider p { 10 | color: var(--secondary-text); 11 | } 12 | 13 | .locationContainer :global(.box-children) { 14 | display: flex; 15 | flex-direction: column; 16 | } 17 | -------------------------------------------------------------------------------- /webapp/src/components/AssetFilters/LocationFilter/index.ts: -------------------------------------------------------------------------------- 1 | export * from './LocationFilter' 2 | -------------------------------------------------------------------------------- /webapp/src/components/AssetFilters/MoreFilters/MoreFilters.css: -------------------------------------------------------------------------------- 1 | .more-filters-section { 2 | display: grid; 3 | grid-template-columns: 1fr; 4 | row-gap: 20px; 5 | } 6 | -------------------------------------------------------------------------------- /webapp/src/components/AssetFilters/MoreFilters/index.ts: -------------------------------------------------------------------------------- 1 | export * from './MoreFilters' 2 | -------------------------------------------------------------------------------- /webapp/src/components/AssetFilters/NetworkFilter/NetworkFilter.css: -------------------------------------------------------------------------------- 1 | .network-filter .network-options { 2 | display: grid; 3 | grid-template-columns: 1fr; 4 | row-gap: 20px; 5 | margin: 20px 0; 6 | } 7 | -------------------------------------------------------------------------------- /webapp/src/components/AssetFilters/NetworkFilter/index.ts: -------------------------------------------------------------------------------- 1 | export * from './NetworkFilter' 2 | -------------------------------------------------------------------------------- /webapp/src/components/AssetFilters/PriceFilter/index.ts: -------------------------------------------------------------------------------- 1 | import PriceFilter from './PriceFilter.container' 2 | 3 | export default PriceFilter 4 | -------------------------------------------------------------------------------- /webapp/src/components/AssetFilters/RentalPeriodFilter/RentalPeriodFilter.module.css: -------------------------------------------------------------------------------- 1 | .rentalPeriodContainer :global(.box-children) { 2 | display: flex; 3 | flex-direction: column; 4 | gap: 15px; 5 | } 6 | -------------------------------------------------------------------------------- /webapp/src/components/AssetFilters/RentalPeriodFilter/index.ts: -------------------------------------------------------------------------------- 1 | export * from './RentalPeriodFilter' 2 | -------------------------------------------------------------------------------- /webapp/src/components/AssetFilters/SpecialFilter/index.ts: -------------------------------------------------------------------------------- 1 | export { SpecialFilter } from './SpecialFilter' 2 | export type { SpecialFilterProps } from './SpecialFilter' 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetFilters/StatusFilter/StatusFilter.css: -------------------------------------------------------------------------------- 1 | .asset-status-filter .asset-status-options { 2 | display: grid; 3 | grid-template-columns: 1fr; 4 | } 5 | 6 | .asset-status-filter .asset-status-options .ui.radio.checkbox { 7 | min-height: 44px; 8 | display: flex; 9 | align-items: center; 10 | } 11 | -------------------------------------------------------------------------------- /webapp/src/components/AssetFilters/StatusFilter/index.ts: -------------------------------------------------------------------------------- 1 | export * from './StatusFilter' 2 | -------------------------------------------------------------------------------- /webapp/src/components/AssetFilters/index.ts: -------------------------------------------------------------------------------- 1 | import AssetFilters from './AssetFilters.container' 2 | 3 | export { AssetFilters } 4 | -------------------------------------------------------------------------------- /webapp/src/components/AssetImage/EnsImage/EnsImage.types.ts: -------------------------------------------------------------------------------- 1 | export type Props = { 2 | name: string 3 | onlyLogo?: boolean 4 | className?: string 5 | } 6 | -------------------------------------------------------------------------------- /webapp/src/components/AssetImage/EnsImage/index.ts: -------------------------------------------------------------------------------- 1 | export * from './EnsImage' 2 | export * from './EnsImage.types' 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetImage/index.ts: -------------------------------------------------------------------------------- 1 | import AssetImage from './AssetImage.container' 2 | export { AssetImage } 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetImage/utils.tsx: -------------------------------------------------------------------------------- 1 | import { Item } from '@dcl/schemas' 2 | 3 | export const getEthereumItemUrn = (item: Item) => { 4 | const regex = /urn:decentraland:ethereum:collections-v1:[^/]+/ 5 | const match = item.thumbnail.match(regex) 6 | return match ? match[0] : '' 7 | } 8 | -------------------------------------------------------------------------------- /webapp/src/components/AssetList/index.ts: -------------------------------------------------------------------------------- 1 | import AssetList from './AssetList.container' 2 | export { AssetList } 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/Actions/Actions.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | flex-direction: column; 4 | gap: 8px; 5 | } 6 | 7 | .container:empty { 8 | display: none; 9 | } 10 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/Actions/index.ts: -------------------------------------------------------------------------------- 1 | import Actions from './Actions.container' 2 | export { Actions } 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/AssetPage.css: -------------------------------------------------------------------------------- 1 | .AssetPage { 2 | margin-top: 39px; 3 | } 4 | 5 | .AssetPage .back { 6 | top: 5px; 7 | } 8 | 9 | .AssetPage .asset-container { 10 | width: 100%; 11 | } 12 | 13 | .AssetPage .backText { 14 | margin-left: 45px; 15 | margin-top: 10px; 16 | } 17 | 18 | @media (max-width: 768px) { 19 | .AssetPage { 20 | margin-top: 0px; 21 | } 22 | 23 | .AssetPage .backText { 24 | margin-top: -20px; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/AssetPage.types.ts: -------------------------------------------------------------------------------- 1 | import { AssetType } from '../../modules/asset/types' 2 | 3 | export type Props = { 4 | type: AssetType 5 | } 6 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/AssetUtility/AssetUtility.module.css: -------------------------------------------------------------------------------- 1 | .main :global(.ui.sub.header) { 2 | font-weight: 600; 3 | } 4 | 5 | .main .content { 6 | font-size: 14px; 7 | line-height: 26px; 8 | letter-spacing: 0.2px; 9 | } 10 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/AssetUtility/AssetUtility.types.ts: -------------------------------------------------------------------------------- 1 | export type Props = { 2 | utility: string 3 | } 4 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/AssetUtility/index.ts: -------------------------------------------------------------------------------- 1 | export * from './AssetUtility' 2 | export * from './AssetUtility.types' 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/BaseDetail/BaseDetail.types.ts: -------------------------------------------------------------------------------- 1 | import { ReactNode } from 'react' 2 | import { RentalListing } from '@dcl/schemas' 3 | import { Asset } from '../../../modules/asset/types' 4 | 5 | export type Props = { 6 | asset: Asset 7 | rental?: RentalListing 8 | assetImage: ReactNode 9 | isOnSale: boolean 10 | badges: ReactNode 11 | left: ReactNode 12 | box: ReactNode 13 | below?: ReactNode 14 | className?: string 15 | actions?: ReactNode 16 | showDetails?: boolean 17 | } 18 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/BaseDetail/index.ts: -------------------------------------------------------------------------------- 1 | import BaseDetail from './BaseDetail' 2 | 3 | export default BaseDetail 4 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/BestBuyingOption/BestBuyingOption.types.ts: -------------------------------------------------------------------------------- 1 | import { RefObject } from 'react' 2 | import { Asset } from '../../../modules/asset/types' 3 | 4 | export type Props = { 5 | asset: Asset | null 6 | isOffchainPublicNFTOrdersEnabled: boolean 7 | tableRef?: RefObject | null 8 | } 9 | 10 | export type MapStateProps = Pick 11 | 12 | export enum BuyOptions { 13 | MINT = 'MINT', 14 | BUY_LISTING = 'BUY_LISTING' 15 | } 16 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/BestBuyingOption/index.ts: -------------------------------------------------------------------------------- 1 | import BestBuyingOption from './BestBuyingOption.container' 2 | export { BestBuyingOption } 3 | export { BuyOptions } from './BestBuyingOption.types' 4 | export type { Props as BestBuyingOptionProps } from './BestBuyingOption.types' 5 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/BidList/BidList.css: -------------------------------------------------------------------------------- 1 | .BidList .list { 2 | margin-top: 13px; 3 | } 4 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/BidList/index.ts: -------------------------------------------------------------------------------- 1 | import BidList from './BidList.container' 2 | export { BidList } 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/BidsTable/BidsTable.types.ts: -------------------------------------------------------------------------------- 1 | import { Asset } from '../../../modules/asset/types' 2 | 3 | export type Props = { 4 | asset: Asset | null 5 | } 6 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/BidsTable/BidsTableContent/BidsTableContent.module.css: -------------------------------------------------------------------------------- 1 | .emptyTable { 2 | width: 100%; 3 | height: 398px; 4 | display: flex; 5 | flex-direction: column; 6 | align-items: center; 7 | justify-content: center; 8 | gap: 20px; 9 | font-size: 20px; 10 | } 11 | 12 | .emptyIcon { 13 | width: 100px; 14 | } 15 | 16 | .emptyDescription { 17 | display: flex; 18 | flex-direction: column; 19 | gap: 10px; 20 | align-items: center; 21 | } 22 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/BidsTable/BidsTableContent/index.ts: -------------------------------------------------------------------------------- 1 | import BidsTableContent from './BidsTableContent.container' 2 | export default BidsTableContent 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/BidsTable/index.ts: -------------------------------------------------------------------------------- 1 | import BidsTable from './BidsTable' 2 | export { BidsTable } 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/BuyNFTBox/index.tsx: -------------------------------------------------------------------------------- 1 | import BuyNFTBox from './BuyNFTBox.container' 2 | 3 | export { BuyNFTBox } 4 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/CategoryBadge/CategoryBadge.types.ts: -------------------------------------------------------------------------------- 1 | import { EmoteCategory, WearableCategory } from '@dcl/schemas' 2 | import { AssetType } from '../../../modules/asset/types' 3 | 4 | export type Props = { 5 | category: WearableCategory | EmoteCategory 6 | assetType: AssetType 7 | } 8 | 9 | export type OwnProps = Pick 10 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/CategoryBadge/index.ts: -------------------------------------------------------------------------------- 1 | import CategoryBadge from './CategoryBadge' 2 | 3 | export default CategoryBadge 4 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/Collection/Collection.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | align-items: center; 4 | } 5 | 6 | .name { 7 | margin-left: 16px; 8 | font-size: 14px; 9 | font-style: normal; 10 | font-weight: 500; 11 | line-height: 30px; 12 | letter-spacing: 0.3149999976158142px; 13 | text-align: left; 14 | color: var(--text); 15 | } 16 | 17 | .image { 18 | width: 48px; 19 | height: 48px; 20 | border-radius: 30px; 21 | overflow: hidden; 22 | } 23 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/Collection/Collection.types.tsx: -------------------------------------------------------------------------------- 1 | import { Asset } from '../../../modules/asset/types' 2 | 3 | export type Props = { 4 | asset: Asset 5 | } 6 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/Collection/index.ts: -------------------------------------------------------------------------------- 1 | import Collection from './Collection' 2 | 3 | export default Collection 4 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/Description/Description.module.css: -------------------------------------------------------------------------------- 1 | .Description .descriptionText { 2 | font-size: 14px; 3 | line-height: 26px; 4 | letter-spacing: 0.2px; 5 | word-wrap: break-word; 6 | } 7 | 8 | .Description .readMore { 9 | padding: 0px !important; 10 | color: var(--primary); 11 | cursor: pointer; 12 | } 13 | 14 | .Description :global(.ui.sub.header) { 15 | font-weight: 600; 16 | } 17 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/Description/Description.types.ts: -------------------------------------------------------------------------------- 1 | export type Props = { 2 | text?: string | null 3 | } 4 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/Description/index.ts: -------------------------------------------------------------------------------- 1 | import Description from './Description' 2 | export { Description } 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/ENSDetail/ENSDetail.types.ts: -------------------------------------------------------------------------------- 1 | import { NFT } from '../../../modules/nft/types' 2 | import { VendorName } from '../../../modules/vendor/types' 3 | 4 | export type Props = { 5 | nft: NFT 6 | } 7 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/ENSDetail/index.ts: -------------------------------------------------------------------------------- 1 | import ENSDetail from './ENSDetail' 2 | export { ENSDetail } 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/EmoteDetail/EmoteDetail.types.ts: -------------------------------------------------------------------------------- 1 | import { NFT } from '../../../modules/nft/types' 2 | import { VendorName } from '../../../modules/vendor/types' 3 | 4 | export type Props = { 5 | nft: NFT 6 | } 7 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/EmoteDetail/index.ts: -------------------------------------------------------------------------------- 1 | import EmoteDetail from './EmoteDetail' 2 | export { EmoteDetail } 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/ErrorBoundary/ErrorBoundary.types.ts: -------------------------------------------------------------------------------- 1 | export type State = { 2 | hasError: boolean 3 | } 4 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/ErrorBoundary/index.ts: -------------------------------------------------------------------------------- 1 | import ErrorBoundary from './ErrorBoundary' 2 | export { ErrorBoundary } 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/EstateDetail/EstateDetail.types.ts: -------------------------------------------------------------------------------- 1 | import { Order, RentalListing } from '@dcl/schemas' 2 | import { NFT } from '../../../modules/nft/types' 3 | import { VendorName } from '../../../modules/vendor/types' 4 | 5 | export type Props = { 6 | nft: NFT 7 | order: Order | null 8 | rental: RentalListing | null 9 | } 10 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/EstateDetail/ParcelCoordinates/ParcelCoordinates.types.ts: -------------------------------------------------------------------------------- 1 | export type Props = { 2 | parcelCoordinates: { x: number; y: number }[] 3 | total: number 4 | } 5 | 6 | export type MapStateProps = Pick 7 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/EstateDetail/ParcelCoordinates/index.ts: -------------------------------------------------------------------------------- 1 | import ParcelCoordinates from './ParcelCoordinates' 2 | export { ParcelCoordinates } 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/EstateDetail/index.ts: -------------------------------------------------------------------------------- 1 | import EstateDetail from './EstateDetail' 2 | 3 | export { EstateDetail } 4 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/Expiration/Expiration.container.ts: -------------------------------------------------------------------------------- 1 | import { connect } from 'react-redux' 2 | import { getCurrentOrder } from '../../../modules/order/selectors' 3 | import { RootState } from '../../../modules/reducer' 4 | import Expiration from './Expiration' 5 | import { MapStateProps } from './Expiration.types' 6 | 7 | const mapState = (state: RootState): MapStateProps => ({ 8 | order: getCurrentOrder(state) || undefined 9 | }) 10 | 11 | export default connect(mapState)(Expiration) 12 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/Expiration/Expiration.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | color: var(--secondary-text); 3 | } 4 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/Expiration/Expiration.types.ts: -------------------------------------------------------------------------------- 1 | import { Order } from '@dcl/schemas' 2 | 3 | export type Props = { 4 | order?: Order 5 | } 6 | 7 | export type MapStateProps = Pick 8 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/Expiration/index.ts: -------------------------------------------------------------------------------- 1 | import Expiration from './Expiration.container' 2 | 3 | export default Expiration 4 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/Highlight/Highlight.types.ts: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export type Props = { 4 | icon: React.ReactNode 5 | name: string 6 | description?: string 7 | onClick?: () => void 8 | } 9 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/Highlight/index.ts: -------------------------------------------------------------------------------- 1 | import Highlight from './Highlight' 2 | export { Highlight } 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/Highlights/Highlights.css: -------------------------------------------------------------------------------- 1 | .Highlights > .ui.header, 2 | .Highlights > .ui.sub.header { 3 | margin-bottom: 13px; 4 | } 5 | 6 | @media (min-width: 768px) { 7 | .Highlights .Highlight + .Highlight { 8 | margin-left: 64px; 9 | } 10 | } 11 | 12 | @media (max-width: 768px) { 13 | .Highlights > .Row { 14 | flex-direction: row; 15 | flex-wrap: wrap; 16 | justify-content: space-between; 17 | } 18 | 19 | .Highlights .Highlight { 20 | margin-top: 24px; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/Highlights/Highlights.types.ts: -------------------------------------------------------------------------------- 1 | export type Props = { 2 | className?: string 3 | children: React.ReactNode 4 | } 5 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/Highlights/index.ts: -------------------------------------------------------------------------------- 1 | import Highlights from './Highlights' 2 | export { Highlights } 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/ItemDetail/index.ts: -------------------------------------------------------------------------------- 1 | import ItemDetail from './ItemDetail' 2 | 3 | export { ItemDetail } 4 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/JumpIn/JumpIn.module.css: -------------------------------------------------------------------------------- 1 | .JumpIn a { 2 | color: var(--text); 3 | display: flex; 4 | align-items: center; 5 | } 6 | 7 | .JumpIn a:hover { 8 | color: var(--text); 9 | } 10 | 11 | .jumpInIcon { 12 | background: url(../../../images/jump_in.svg); 13 | background-size: 16px 16px; 14 | width: 16px; 15 | height: 16px; 16 | background-repeat: no-repeat; 17 | display: inline-block; 18 | } 19 | 20 | .fullSize { 21 | margin-left: 6px; 22 | } 23 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/JumpIn/JumpIn.types.ts: -------------------------------------------------------------------------------- 1 | export type Props = { 2 | x: number 3 | y: number 4 | className?: string 5 | compact?: boolean 6 | } 7 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/JumpIn/index.ts: -------------------------------------------------------------------------------- 1 | import JumpIn from './JumpIn' 2 | export { JumpIn } 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/LinkedIconBadge/LinkedIconBadge.types.ts: -------------------------------------------------------------------------------- 1 | import { Props as IconBadgeProps } from 'decentraland-ui/dist/components/IconBadge/IconBadge.types' 2 | export type Props = IconBadgeProps & { href?: string } 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/LinkedIconBadge/index.ts: -------------------------------------------------------------------------------- 1 | import LinkedIconBadge from './LinkedIconBadge' 2 | 3 | export * from './LinkedIconBadge.types' 4 | export default LinkedIconBadge 5 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/ListingsTable/ListingsTable.types.ts: -------------------------------------------------------------------------------- 1 | import { OrderSortBy } from '@dcl/schemas' 2 | import { Asset } from '../../../modules/asset/types' 3 | 4 | export type Props = { 5 | asset: Asset | null 6 | sortBy?: OrderSortBy 7 | isOffchainPublicNFTOrdersEnabled: boolean 8 | } 9 | 10 | export type MapStateProps = Pick 11 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/ListingsTable/index.ts: -------------------------------------------------------------------------------- 1 | import ListingsTable from './ListingsTable.container' 2 | 3 | export { ListingsTable } 4 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/ListingsTableContainer/ListingsTableContainer.types.ts: -------------------------------------------------------------------------------- 1 | import { RefObject } from 'react' 2 | import { BidSortBy, Item, OrderSortBy } from '@dcl/schemas' 3 | import { OrderDirection } from '../OwnersTable/OwnersTable.types' 4 | 5 | export type Props = { 6 | item: Item 7 | ref: RefObject 8 | } 9 | 10 | export type SortByType = OrderSortBy | OrderDirection | BidSortBy 11 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/OnBack/OnBack.container.ts: -------------------------------------------------------------------------------- 1 | import { connect } from 'react-redux' 2 | import { Dispatch } from 'redux' 3 | import { goBack } from '../../../modules/routing/actions' 4 | import OnBack from './OnBack' 5 | import { MapDispatchProps } from './OnBack.types' 6 | 7 | const mapDispatch = (dispatch: Dispatch): MapDispatchProps => ({ 8 | onBack: (location?: string) => dispatch(goBack(location)) 9 | }) 10 | 11 | export default connect(null, mapDispatch)(OnBack) 12 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/OnBack/OnBack.css: -------------------------------------------------------------------------------- 1 | .top-header .favorites { 2 | flex-grow: 1; 3 | justify-content: flex-end; 4 | } 5 | 6 | .top-header { 7 | display: flex; 8 | align-items: center; 9 | margin-bottom: 10px; 10 | } 11 | 12 | .top-header .dcl.back.absolute { 13 | position: inherit; 14 | } 15 | 16 | .top-header .ui.button.basic { 17 | color: white !important; 18 | align-items: center; 19 | display: flex; 20 | gap: 10px; 21 | } 22 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/OnBack/OnBack.types.tsx: -------------------------------------------------------------------------------- 1 | import { Asset } from '../../../modules/asset/types' 2 | 3 | export type Props = { 4 | asset: Asset 5 | onBack: (location?: string) => void 6 | } 7 | 8 | export type MapDispatchProps = Pick 9 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/OnBack/index.tsx: -------------------------------------------------------------------------------- 1 | import OnBack from './OnBack.container' 2 | 3 | export default OnBack 4 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/Owner/Owner.css: -------------------------------------------------------------------------------- 1 | .Owner .Profile { 2 | display: flex !important; 3 | align-items: center; 4 | } 5 | 6 | .Owner .Profile .name { 7 | margin-left: 10px; 8 | font-size: 14px; 9 | font-style: normal; 10 | font-weight: 500; 11 | line-height: 30px; 12 | letter-spacing: 0.3149999976158142px; 13 | text-align: left; 14 | color: var(--text); 15 | } 16 | 17 | .Owner .Profile.inline :global(.dcl.blockie) { 18 | border-radius: 30px; 19 | } 20 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/Owner/Owner.types.tsx: -------------------------------------------------------------------------------- 1 | import { Asset } from '../../../modules/asset/types' 2 | 3 | export type Props = { 4 | asset: Asset 5 | } 6 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/Owner/index.ts: -------------------------------------------------------------------------------- 1 | import Owner from './Owner' 2 | export { Owner } 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/OwnersTable/OwnersTable.types.ts: -------------------------------------------------------------------------------- 1 | import { Asset } from '../../../modules/asset/types' 2 | 3 | export type Props = { 4 | asset: Asset | null 5 | orderDirection?: OrderDirection 6 | } 7 | 8 | export enum OrderDirection { 9 | ASC = 'asc', 10 | DESC = 'desc' 11 | } 12 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/OwnersTable/index.ts: -------------------------------------------------------------------------------- 1 | import OwnersTable from './OwnersTable' 2 | export { OwnersTable } 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/ParcelDetail/ParcelDetail.types.ts: -------------------------------------------------------------------------------- 1 | import { Order, RentalListing } from '@dcl/schemas' 2 | import { NFT } from '../../../modules/nft/types' 3 | import { VendorName } from '../../../modules/vendor/types' 4 | 5 | export type Props = { 6 | nft: NFT 7 | order: Order | null 8 | rental: RentalListing | null 9 | } 10 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/ParcelDetail/index.ts: -------------------------------------------------------------------------------- 1 | import ParcelDetail from './ParcelDetail' 2 | 3 | export { ParcelDetail } 4 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/PriceComponent/PriceComponent.types.ts: -------------------------------------------------------------------------------- 1 | import { Network } from '@dcl/schemas' 2 | import { CreditsResponse } from 'decentraland-dapps/dist/modules/credits/types' 3 | 4 | export type Props = { 5 | price: string 6 | network: Network 7 | useCredits: boolean 8 | credits?: CreditsResponse 9 | className?: string 10 | } 11 | 12 | export type MapStateProps = { 13 | credits?: CreditsResponse 14 | } 15 | 16 | export type OwnProps = Omit 17 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/PriceComponent/index.ts: -------------------------------------------------------------------------------- 1 | import PriceComponent from './PriceComponent.container' 2 | 3 | export default PriceComponent 4 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/ProximityHighlights/ProximityHighlights.css: -------------------------------------------------------------------------------- 1 | .ProximityHighlights .Highlight .plaza { 2 | background-image: url(../../../images/plaza.svg); 3 | } 4 | 5 | .ProximityHighlights .Highlight .road { 6 | background-image: url(../../../images/road.svg); 7 | } 8 | 9 | .ProximityHighlights .Highlight .district { 10 | background-image: url(../../../images/district.svg); 11 | } 12 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/ProximityHighlights/ProximityHighlights.types.ts: -------------------------------------------------------------------------------- 1 | import { Dispatch } from 'redux' 2 | import { NFT } from '../../../modules/nft/types' 3 | import { Proximity } from '../../../modules/proximity/types' 4 | 5 | export type Props = { 6 | nft: NFT 7 | proximities: Record 8 | } 9 | 10 | export type MapStateProps = Pick 11 | export type MapDispatch = Dispatch 12 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/ProximityHighlights/index.ts: -------------------------------------------------------------------------------- 1 | import ProximityHighlights from './ProximityHighlights.container' 2 | export { ProximityHighlights } 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/RentalHistory/RentalHistory.types.ts: -------------------------------------------------------------------------------- 1 | import { NFT } from '../../../modules/nft/types' 2 | 3 | export type Props = { 4 | asset: NFT 5 | } 6 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/RentalHistory/index.ts: -------------------------------------------------------------------------------- 1 | import RentalHistory from './RentalHistory' 2 | export { RentalHistory } 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/RequiredPermissions/index.ts: -------------------------------------------------------------------------------- 1 | import RequiredPermissions from './RequiredPermissions.container' 2 | 3 | export { RequiredPermissions } 4 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/SaleActionBox/BuyNFTButtons/BuyWithCardButton/BuyWithCardButton.module.css: -------------------------------------------------------------------------------- 1 | .buy_with_card:global(.ui.button) { 2 | background-color: #ecebed; /* there's no var available for this color */ 3 | color: #5e5b67; 4 | font-size: 15px; 5 | padding: 12px; 6 | z-index: 999; 7 | } 8 | 9 | .buy_with_card:global(.ui.button):hover { 10 | background-color: var(--superGrayHovered); 11 | } 12 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/SaleActionBox/BuyNFTButtons/BuyWithCardButton/BuyWithCardButton.types.ts: -------------------------------------------------------------------------------- 1 | import type { ButtonProps } from 'decentraland-ui/dist/components/Button/Button' 2 | 3 | export type Props = ButtonProps 4 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/SaleActionBox/BuyNFTButtons/BuyWithCardButton/index.ts: -------------------------------------------------------------------------------- 1 | export * from './BuyWithCardButton' 2 | export * from './BuyWithCardButton.types' 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/SaleActionBox/BuyNFTButtons/BuyWithCryptoButton/BuyWithCryptoButton.types.ts: -------------------------------------------------------------------------------- 1 | import type { ButtonProps } from 'decentraland-ui/dist/components/Button/Button' 2 | import { Asset } from '../../../../../modules/asset/types' 3 | 4 | export type Props = ButtonProps & { 5 | asset: Asset 6 | isFree?: boolean 7 | useCredits?: boolean 8 | } 9 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/SaleActionBox/BuyNFTButtons/BuyWithCryptoButton/index.ts: -------------------------------------------------------------------------------- 1 | export * from './BuyWithCryptoButton' 2 | export * from './BuyWithCryptoButton.types' 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/SaleActionBox/BuyNFTButtons/index.ts: -------------------------------------------------------------------------------- 1 | export { default as BuyNFTButtons } from './BuyNFTButtons.container' 2 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/SaleActionBox/ItemSaleActions/ItemSaleActions.module.css: -------------------------------------------------------------------------------- 1 | .ownerButtons { 2 | display: flex; 3 | flex-direction: column; 4 | gap: 8px; 5 | } 6 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/SaleActionBox/ItemSaleActions/index.ts: -------------------------------------------------------------------------------- 1 | export { default as ItemSaleActions } from './ItemSaleActions.container' 2 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/SaleActionBox/UseCreditsToggle/index.ts: -------------------------------------------------------------------------------- 1 | import UseCreditsToggle from './UseCreditsToggle.container' 2 | 3 | export default UseCreditsToggle 4 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/SaleRentActionBox/PeriodsDropdown/PeriodsDropdown.types.ts: -------------------------------------------------------------------------------- 1 | import { RentalListingPeriod } from '@dcl/schemas' 2 | 3 | export type Props = { 4 | periods: RentalListingPeriod[] 5 | onChange: (periodIndex: number) => unknown 6 | value: number | undefined 7 | className?: string 8 | } 9 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/SaleRentActionBox/PeriodsDropdown/index.ts: -------------------------------------------------------------------------------- 1 | export { default as PeriodsDropdown } from './PeriodsDropdown' 2 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/SaleRentActionBox/index.ts: -------------------------------------------------------------------------------- 1 | export { default as SaleRentActionBox } from './SaleRentActionBox.container' 2 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/SmartBadge/SmartBadge.css: -------------------------------------------------------------------------------- 1 | .SmartBadge .dcl.smart-icon { 2 | top: 2px; 3 | width: 14px; 4 | height: 14px; 5 | } -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/SmartBadge/SmartBadge.types.ts: -------------------------------------------------------------------------------- 1 | import { AssetType } from '../../../modules/asset/types' 2 | 3 | export type Props = 4 | | { 5 | assetType?: AssetType 6 | clickable?: false 7 | } 8 | | { 9 | assetType: AssetType 10 | clickable: true 11 | } 12 | 13 | export type OwnProps = Pick 14 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/SmartBadge/index.ts: -------------------------------------------------------------------------------- 1 | import SmartBadge from './SmartBadge' 2 | 3 | export default SmartBadge 4 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/Title/Title.types.ts: -------------------------------------------------------------------------------- 1 | import { Asset } from '../../../modules/asset/types' 2 | 3 | export type Props = { 4 | asset: Asset 5 | } 6 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/Title/index.ts: -------------------------------------------------------------------------------- 1 | import Title from './Title' 2 | export default Title 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/TransactionHistory/TransactionHistory.types.ts: -------------------------------------------------------------------------------- 1 | import { Asset } from '../../../modules/asset/types' 2 | 3 | export type Props = { 4 | asset: Asset | null 5 | isOffchainPublicItemOrdersEnabled: boolean 6 | isOffchainPublicNFTOrdersEnabled: boolean 7 | } 8 | 9 | export type MapStateProps = Pick 10 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/TransactionHistory/index.ts: -------------------------------------------------------------------------------- 1 | import TransactionHistory from './TransactionHistory.container' 2 | export { TransactionHistory } 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/UtilityBadge/UtilityBadge.tsx: -------------------------------------------------------------------------------- 1 | import { t } from 'decentraland-dapps/dist/modules/translation' 2 | import { IconBadge } from 'decentraland-ui/dist/components/IconBadge/IconBadge' 3 | 4 | export const UtilityBadge = () => 5 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/UtilityBadge/index.ts: -------------------------------------------------------------------------------- 1 | export * from './UtilityBadge' 2 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/WearableDetail/WearableDetail.types.ts: -------------------------------------------------------------------------------- 1 | import { NFT } from '../../../modules/nft/types' 2 | import { VendorName } from '../../../modules/vendor/types' 3 | 4 | export type Props = { 5 | nft: NFT 6 | } 7 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/WearableDetail/index.ts: -------------------------------------------------------------------------------- 1 | import WearableDetail from './WearableDetail' 2 | export { WearableDetail } 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/YourOffer/index.tsx: -------------------------------------------------------------------------------- 1 | import YourOffer from './YourOffer.container' 2 | export { YourOffer } 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetPage/index.ts: -------------------------------------------------------------------------------- 1 | import AssetPage from './AssetPage' 2 | 3 | export { AssetPage } 4 | -------------------------------------------------------------------------------- /webapp/src/components/AssetProvider/index.ts: -------------------------------------------------------------------------------- 1 | import AssetProvider from './AssetProvider.container' 2 | export { AssetProvider } 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetProviderPage/AssetProviderPage.module.css: -------------------------------------------------------------------------------- 1 | .center { 2 | position: relative; 3 | top: 100px; 4 | bottom: 0px; 5 | left: 0px; 6 | right: 0px; 7 | display: flex; 8 | justify-content: center; 9 | align-items: center; 10 | height: calc(100vh - 350px); 11 | } 12 | 13 | .fullWidth { 14 | width: 100%; 15 | } 16 | -------------------------------------------------------------------------------- /webapp/src/components/AssetProviderPage/index.ts: -------------------------------------------------------------------------------- 1 | import AssetProviderPage from './AssetProviderPage.container' 2 | export { AssetProviderPage } 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetTopbar/AssetTypeFilter/index.ts: -------------------------------------------------------------------------------- 1 | export * from './AssetTypeFilter' 2 | -------------------------------------------------------------------------------- /webapp/src/components/AssetTopbar/SearchBarDropdown/constants.ts: -------------------------------------------------------------------------------- 1 | export const RECENT_SEARCHES_DATA_TEST_ID = 'recent-searches' 2 | export const SKELETONS_DATA_TEST_ID = 'skeletons' 3 | export const COLLECTIBLE_DATA_TEST_ID = 'collectible' 4 | export const COLLECTION_ROW_DATA_TEST_ID = 'collection-row' 5 | export const SEE_ALL_COLLECTIBLES_DATA_TEST_ID = 'see-all-collectibles' 6 | export const NO_RESULTS_DATA_TEST_ID = 'no-results' 7 | -------------------------------------------------------------------------------- /webapp/src/components/AssetTopbar/SearchBarDropdown/index.ts: -------------------------------------------------------------------------------- 1 | import SearchBarDropdown from './SearchBarDropdown.container' 2 | export { SearchBarDropdown } 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetTopbar/SelectedFilters/index.ts: -------------------------------------------------------------------------------- 1 | import SelectedFilters from './SelectedFilters.container' 2 | export { SelectedFilters } 3 | -------------------------------------------------------------------------------- /webapp/src/components/AssetTopbar/SelectedFilters/utils.ts: -------------------------------------------------------------------------------- 1 | import { collectionAPI } from '../../../modules/vendor/decentraland' 2 | 3 | export async function getCollectionByAddress(address: string) { 4 | const { data } = await collectionAPI.fetch({ 5 | contractAddress: address 6 | }) 7 | 8 | return data[0] 9 | } 10 | -------------------------------------------------------------------------------- /webapp/src/components/AssetTopbar/index.ts: -------------------------------------------------------------------------------- 1 | import AssetTopbar from './AssetTopbar.container' 2 | 3 | export default AssetTopbar 4 | -------------------------------------------------------------------------------- /webapp/src/components/Atlas/Popup/Popup.types.ts: -------------------------------------------------------------------------------- 1 | import { Dispatch } from 'redux' 2 | import { Tile } from '../Atlas.types' 3 | 4 | export type Props = { 5 | x: number 6 | y: number 7 | visible: boolean 8 | tile: Tile 9 | position: 'left' | 'right' 10 | } 11 | 12 | export type MapDispatch = Dispatch 13 | export type OwnProps = Pick 14 | -------------------------------------------------------------------------------- /webapp/src/components/Atlas/Popup/index.ts: -------------------------------------------------------------------------------- 1 | import Popup from './Popup' 2 | export default Popup 3 | -------------------------------------------------------------------------------- /webapp/src/components/Atlas/index.ts: -------------------------------------------------------------------------------- 1 | import Atlas from './Atlas.container' 2 | export { Atlas } 3 | -------------------------------------------------------------------------------- /webapp/src/components/Bid/AcceptButton/AcceptButton.types.ts: -------------------------------------------------------------------------------- 1 | import { Bid, RentalListing } from '@dcl/schemas' 2 | import { Asset } from '../../../modules/asset/types' 3 | 4 | export type Props = { 5 | asset: Asset | null 6 | rental: RentalListing | null 7 | bid: Bid 8 | userAddress: string 9 | onClick: () => void 10 | } 11 | -------------------------------------------------------------------------------- /webapp/src/components/Bid/AcceptButton/index.ts: -------------------------------------------------------------------------------- 1 | import AcceptButton from './AcceptButton' 2 | export { AcceptButton } 3 | -------------------------------------------------------------------------------- /webapp/src/components/Bid/WarningMessage/WarningMessage.css: -------------------------------------------------------------------------------- 1 | .WarningMessage { 2 | padding: 16px; 3 | color: var(--danger); 4 | text-align: center; 5 | border-top: 1px solid var(--divider); 6 | } 7 | -------------------------------------------------------------------------------- /webapp/src/components/Bid/WarningMessage/WarningMessage.types.ts: -------------------------------------------------------------------------------- 1 | import { Bid } from '@dcl/schemas' 2 | import { Asset } from '../../../modules/asset/types' 3 | 4 | export type Props = { 5 | asset: Asset | null 6 | bid: Bid 7 | } 8 | -------------------------------------------------------------------------------- /webapp/src/components/Bid/WarningMessage/index.ts: -------------------------------------------------------------------------------- 1 | import WarningMessage from './WarningMessage' 2 | export { WarningMessage } 3 | -------------------------------------------------------------------------------- /webapp/src/components/Bid/index.ts: -------------------------------------------------------------------------------- 1 | import Bid from './Bid.container' 2 | export { Bid } 3 | -------------------------------------------------------------------------------- /webapp/src/components/BidButton/BidButton.types.ts: -------------------------------------------------------------------------------- 1 | import { Asset } from '../../modules/asset/types' 2 | 3 | export type Props = { 4 | asset: Asset 5 | alreadyBid: boolean 6 | disabled?: boolean 7 | } 8 | -------------------------------------------------------------------------------- /webapp/src/components/BidButton/index.ts: -------------------------------------------------------------------------------- 1 | import BidButton from './BidButton' 2 | export default BidButton 3 | -------------------------------------------------------------------------------- /webapp/src/components/BidPage/BidModal/index.ts: -------------------------------------------------------------------------------- 1 | import BidModal, { LegacyBidModal } from './BidModal' 2 | export { BidModal, LegacyBidModal } 3 | -------------------------------------------------------------------------------- /webapp/src/components/BidPage/index.ts: -------------------------------------------------------------------------------- 1 | import BidPage from './BidPage.container' 2 | export { BidPage } 3 | -------------------------------------------------------------------------------- /webapp/src/components/Bids/index.ts: -------------------------------------------------------------------------------- 1 | import Bids from './Bids.container' 2 | export { Bids } 3 | -------------------------------------------------------------------------------- /webapp/src/components/BrowsePage/BrowsePage.module.css: -------------------------------------------------------------------------------- 1 | .banner { 2 | margin-bottom: 24px; 3 | } 4 | -------------------------------------------------------------------------------- /webapp/src/components/BrowsePage/index.ts: -------------------------------------------------------------------------------- 1 | import BrowsePage from './BrowsePage.container' 2 | export { BrowsePage } 3 | -------------------------------------------------------------------------------- /webapp/src/components/BuyPage/CardPaymentsExplanation/CardPaymentsExplanation.types.ts: -------------------------------------------------------------------------------- 1 | export type Props = { 2 | translationPageDescriptorId: string 3 | } 4 | -------------------------------------------------------------------------------- /webapp/src/components/BuyPage/CardPaymentsExplanation/index.ts: -------------------------------------------------------------------------------- 1 | import CardPaymentsExplanation from './CardPaymentsExplanation' 2 | export { CardPaymentsExplanation } 3 | -------------------------------------------------------------------------------- /webapp/src/components/BuyPage/Name/Name.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { getAssetName } from '../../../modules/asset/utils' 3 | import { Props } from './Name.types' 4 | 5 | const Name = (props: Props) => { 6 | const { asset } = props 7 | return {getAssetName(asset)} 8 | } 9 | 10 | export default React.memo(Name) 11 | -------------------------------------------------------------------------------- /webapp/src/components/BuyPage/Name/Name.types.ts: -------------------------------------------------------------------------------- 1 | import { Asset } from '../../../modules/asset/types' 2 | 3 | export type Props = { 4 | asset: Asset 5 | } 6 | -------------------------------------------------------------------------------- /webapp/src/components/BuyPage/Name/index.ts: -------------------------------------------------------------------------------- 1 | import Name from './Name' 2 | export { Name } 3 | -------------------------------------------------------------------------------- /webapp/src/components/BuyPage/NotEnoughMana/index.ts: -------------------------------------------------------------------------------- 1 | import NotEnoughMana from './NotEnoughMana.container' 2 | export { NotEnoughMana } 3 | -------------------------------------------------------------------------------- /webapp/src/components/BuyPage/PartiallySupportedNetworkCard/PartiallySupportedNetworkCard.module.css: -------------------------------------------------------------------------------- 1 | .card:global(.ui.card) { 2 | width: 390px; 3 | } 4 | 5 | @media (max-width: 767px) { 6 | .card:global(.ui.card) { 7 | width: 100%; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /webapp/src/components/BuyPage/PartiallySupportedNetworkCard/PartiallySupportedNetworkCard.types.ts: -------------------------------------------------------------------------------- 1 | import { Asset } from '../../../modules/asset/types' 2 | 3 | export type Props = { 4 | asset: Asset 5 | } 6 | -------------------------------------------------------------------------------- /webapp/src/components/BuyPage/PartiallySupportedNetworkCard/index.ts: -------------------------------------------------------------------------------- 1 | export * from './PartiallySupportedNetworkCard' 2 | export * from './PartiallySupportedNetworkCard.types' 3 | -------------------------------------------------------------------------------- /webapp/src/components/BuyPage/Price/Price.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { formatWeiMANA } from '../../../lib/mana' 3 | import { Mana } from '../../Mana' 4 | import { Props } from './Price.types' 5 | 6 | const Price = (props: Props) => { 7 | const { network, price } = props 8 | return ( 9 | 10 | {formatWeiMANA(price)} 11 | 12 | ) 13 | } 14 | 15 | export default React.memo(Price) 16 | -------------------------------------------------------------------------------- /webapp/src/components/BuyPage/Price/Price.types.ts: -------------------------------------------------------------------------------- 1 | import { Network } from '@dcl/schemas' 2 | 3 | export type Props = { 4 | network: Network 5 | price: string 6 | } 7 | -------------------------------------------------------------------------------- /webapp/src/components/BuyPage/Price/index.ts: -------------------------------------------------------------------------------- 1 | import Price from './Price' 2 | export { Price } 3 | -------------------------------------------------------------------------------- /webapp/src/components/BuyPage/PriceHasChanged/PriceHasChanged.module.css: -------------------------------------------------------------------------------- 1 | .card { 2 | /* Override semantic UI's width */ 3 | width: 416px !important; 4 | } 5 | 6 | .card:global(.ui.card > .content) { 7 | padding: 20px 24px; 8 | } 9 | 10 | .paragraph { 11 | color: var(--text); 12 | } 13 | 14 | @media (max-width: 768px) { 15 | .card { 16 | /* Override semantic UI's width */ 17 | width: 100% !important; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /webapp/src/components/BuyPage/PriceHasChanged/PriceHasChanged.types.ts: -------------------------------------------------------------------------------- 1 | import { Asset } from '../../../modules/asset/types' 2 | 3 | export type Props = { 4 | asset: Asset 5 | newPrice: string 6 | } 7 | -------------------------------------------------------------------------------- /webapp/src/components/BuyPage/PriceHasChanged/index.ts: -------------------------------------------------------------------------------- 1 | import PriceHasChanged from './PriceHasChanged' 2 | export { PriceHasChanged } 3 | -------------------------------------------------------------------------------- /webapp/src/components/BuyPage/PriceTooLow/index.ts: -------------------------------------------------------------------------------- 1 | import PriceTooLow from './PriceTooLow.container' 2 | export { PriceTooLow } 3 | -------------------------------------------------------------------------------- /webapp/src/components/BuyPage/StatusPage/StatusPage.types.ts: -------------------------------------------------------------------------------- 1 | import { RouteComponentProps } from 'react-router-dom' 2 | import { Purchase } from 'decentraland-dapps/dist/modules/gateway/types' 3 | import { AssetType } from '../../../modules/asset/types' 4 | 5 | type Params = { contractAddress?: string; tokenId?: string } 6 | 7 | export type Props = { 8 | type: AssetType 9 | purchase?: Purchase | null 10 | } 11 | 12 | export type MapStateProps = Pick 13 | export type OwnProps = RouteComponentProps 14 | -------------------------------------------------------------------------------- /webapp/src/components/BuyPage/StatusPage/index.ts: -------------------------------------------------------------------------------- 1 | import StatusPage from './StatusPage.container' 2 | export { StatusPage } 3 | -------------------------------------------------------------------------------- /webapp/src/components/Campaign/CampaignBadge/CampaignBadge.types.ts: -------------------------------------------------------------------------------- 1 | export type Props = { 2 | isCampaignBrowserEnabled: boolean 3 | campaignTag?: string 4 | contract: string 5 | } 6 | 7 | export type MapStateProps = Pick 8 | -------------------------------------------------------------------------------- /webapp/src/components/Campaign/CampaignBadge/index.ts: -------------------------------------------------------------------------------- 1 | import CampaignBadge from './CampaignBadge.container' 2 | 3 | export default CampaignBadge 4 | -------------------------------------------------------------------------------- /webapp/src/components/Campaign/CampaignBrowserPage/CampaignBrowserPage.css: -------------------------------------------------------------------------------- 1 | .CampaignBrowserPage .banner { 2 | margin-bottom: 24px; 3 | } 4 | 5 | .CampaignBrowserPage .empty { 6 | width: 100%; 7 | height: calc(100vh - 360px); 8 | display: flex; 9 | justify-content: center; 10 | align-items: center; 11 | } 12 | -------------------------------------------------------------------------------- /webapp/src/components/Campaign/CampaignBrowserPage/index.ts: -------------------------------------------------------------------------------- 1 | import CampaignBrowserPage from './CampaignBrowserPage.container' 2 | 3 | export { CampaignBrowserPage } 4 | -------------------------------------------------------------------------------- /webapp/src/components/CancelSalePage/CancelSalePage.css: -------------------------------------------------------------------------------- 1 | .CancelSalePage .ui.header { 2 | margin-bottom: 8px; 3 | } 4 | 5 | .CancelSalePage .subtitle { 6 | margin-bottom: 32px; 7 | } 8 | -------------------------------------------------------------------------------- /webapp/src/components/CancelSalePage/CancelSalePage.types.ts: -------------------------------------------------------------------------------- 1 | import { Dispatch } from 'redux' 2 | import { cancelOrderRequest, CancelOrderRequestAction } from '../../modules/order/actions' 3 | 4 | export type Props = { 5 | isLoading: boolean 6 | onCancelOrder: typeof cancelOrderRequest 7 | } 8 | 9 | export type MapStateProps = Pick 10 | export type MapDispatchProps = Pick 11 | export type MapDispatch = Dispatch 12 | -------------------------------------------------------------------------------- /webapp/src/components/CancelSalePage/index.ts: -------------------------------------------------------------------------------- 1 | import CancelSalePage from './CancelSalePage.container' 2 | export { CancelSalePage } 3 | -------------------------------------------------------------------------------- /webapp/src/components/Chip/Chip.types.ts: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { IconProps } from 'decentraland-ui' 3 | 4 | export type Props = { 5 | className: string 6 | text: React.ReactNode 7 | icon: IconProps['name'] | '' 8 | type: 'square' | 'rectangle' | 'circle' 9 | isActive: boolean 10 | isDisabled: boolean 11 | onClick?: (event: React.MouseEvent | React.KeyboardEvent) => any 12 | } 13 | -------------------------------------------------------------------------------- /webapp/src/components/Chip/index.ts: -------------------------------------------------------------------------------- 1 | import Chip from './Chip' 2 | export { Chip } 3 | -------------------------------------------------------------------------------- /webapp/src/components/Collapsible/Collapsible.module.css: -------------------------------------------------------------------------------- 1 | .Collapsible { 2 | display: flex; 3 | flex-direction: column; 4 | width: 100%; 5 | } 6 | 7 | .showMore { 8 | margin-top: 15px; 9 | justify-content: center; 10 | } 11 | 12 | .showMore span { 13 | font-size: 15px; 14 | color: var(--primary); 15 | cursor: pointer; 16 | } 17 | 18 | .children { 19 | width: 100%; 20 | } 21 | 22 | .collapsibleWrapper { 23 | overflow: hidden; 24 | width: 100%; 25 | } 26 | -------------------------------------------------------------------------------- /webapp/src/components/Collapsible/Collapsible.types.ts: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export type Props = { 4 | children: React.ReactNode 5 | collapsedHeight: number 6 | } 7 | -------------------------------------------------------------------------------- /webapp/src/components/Collapsible/index.ts: -------------------------------------------------------------------------------- 1 | import Collapsible from './Collapsible' 2 | export { Collapsible } 3 | -------------------------------------------------------------------------------- /webapp/src/components/CollectionImage/CollectionImage.css: -------------------------------------------------------------------------------- 1 | .CollectionImage { 2 | width: 100%; 3 | height: 100%; 4 | } 5 | 6 | .CollectionImage .item-row { 7 | width: inherit; 8 | height: inherit; 9 | display: flex; 10 | justify-content: center; 11 | align-items: center; 12 | } 13 | 14 | .CollectionImage .item-row.full-width-image > .AssetImage .image { 15 | width: 100%; 16 | } 17 | -------------------------------------------------------------------------------- /webapp/src/components/CollectionImage/CollectionImage.types.ts: -------------------------------------------------------------------------------- 1 | export type Props = { 2 | contractAddress: string 3 | } 4 | -------------------------------------------------------------------------------- /webapp/src/components/CollectionImage/index.ts: -------------------------------------------------------------------------------- 1 | import CollectionImage from './CollectionImage' 2 | 3 | export default CollectionImage 4 | -------------------------------------------------------------------------------- /webapp/src/components/CollectionList/index.ts: -------------------------------------------------------------------------------- 1 | import CollectionList from './CollectionList.container' 2 | 3 | export default CollectionList 4 | -------------------------------------------------------------------------------- /webapp/src/components/CollectionPage/CollectionPage.types.ts: -------------------------------------------------------------------------------- 1 | export type Props = { 2 | currentAddress?: string 3 | contractAddress: string | null 4 | onBack: () => void 5 | } 6 | 7 | export type MapStateProps = Pick 8 | export type MapDispatchProps = Pick 9 | -------------------------------------------------------------------------------- /webapp/src/components/CollectionPage/index.ts: -------------------------------------------------------------------------------- 1 | import CollectionPage from './CollectionPage.container' 2 | 3 | export { CollectionPage } 4 | -------------------------------------------------------------------------------- /webapp/src/components/CollectionProvider/index.ts: -------------------------------------------------------------------------------- 1 | import CollectionProvider from './CollectionProvider.container' 2 | 3 | export default CollectionProvider 4 | -------------------------------------------------------------------------------- /webapp/src/components/ConfirmInputValueModal/ConfirmInputValueModal.css: -------------------------------------------------------------------------------- 1 | .ConfirmInputValueModal .dcl.field .ui.sub.header { 2 | margin-top: 24px; 3 | } 4 | 5 | @media (max-width: 767px) { 6 | .ConfirmInputValueModal .dcl.field { 7 | width: 100%; 8 | min-width: auto; 9 | } 10 | 11 | .ConfirmInputValueModal:global(.ui.modal .actions) { 12 | align-items: center; 13 | bottom: 30px; 14 | display: flex; 15 | justify-content: center; 16 | position: fixed; 17 | width: 90%; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /webapp/src/components/ConfirmInputValueModal/ConfirmInputValueModal.types.ts: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { Network } from '@dcl/schemas' 3 | 4 | export type Props = { 5 | open: boolean 6 | headerTitle?: string 7 | content?: React.ReactNode | string 8 | loading?: boolean 9 | network: Network 10 | disabled?: boolean 11 | error?: string | null 12 | valueToConfirm: string 13 | onCancel: () => void 14 | onConfirm: () => void 15 | } 16 | -------------------------------------------------------------------------------- /webapp/src/components/ConfirmInputValueModal/index.ts: -------------------------------------------------------------------------------- 1 | import ConfirmInputValueModal from './ConfirmInputValueModal' 2 | export { ConfirmInputValueModal } 3 | -------------------------------------------------------------------------------- /webapp/src/components/Coordinate/Coordinate.module.css: -------------------------------------------------------------------------------- 1 | .pin { 2 | background-image: url(../../images/pin-land.svg); 3 | width: 17px; 4 | height: 16px; 5 | background-size: 19px; 6 | background-position: -2px -1px; 7 | } 8 | -------------------------------------------------------------------------------- /webapp/src/components/Coordinate/Coordinate.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { Badge } from 'decentraland-ui' 3 | import { Props } from './Coordinate.types' 4 | import styles from './Coordinate.module.css' 5 | 6 | const Coordinate = (props: Props) => { 7 | const { x, y, className } = props 8 | 9 | return ( 10 | 11 | 12 | {`${x},${y}`} 13 | 14 | ) 15 | } 16 | 17 | export default React.memo(Coordinate) 18 | -------------------------------------------------------------------------------- /webapp/src/components/Coordinate/Coordinate.types.ts: -------------------------------------------------------------------------------- 1 | export type Props = { 2 | x: number 3 | y: number 4 | className?: string 5 | } 6 | -------------------------------------------------------------------------------- /webapp/src/components/Coordinate/index.ts: -------------------------------------------------------------------------------- 1 | import Coordinate from './Coordinate' 2 | 3 | export { Coordinate } 4 | -------------------------------------------------------------------------------- /webapp/src/components/DetailsBox/DetailsBox.container.ts: -------------------------------------------------------------------------------- 1 | import { connect } from 'react-redux' 2 | import { getCurrentOrder } from '../../modules/order/selectors' 3 | import { RootState } from '../../modules/reducer' 4 | import DetailsBox from './DetailsBox' 5 | import { MapStateProps } from './DetailsBox.types' 6 | 7 | const mapState = (state: RootState): MapStateProps => ({ 8 | order: getCurrentOrder(state) || undefined 9 | }) 10 | 11 | export default connect(mapState)(DetailsBox) 12 | -------------------------------------------------------------------------------- /webapp/src/components/DetailsBox/DetailsBox.module.css: -------------------------------------------------------------------------------- 1 | .content { 2 | padding-left: 24px; 3 | padding-right: 24px; 4 | } 5 | -------------------------------------------------------------------------------- /webapp/src/components/DetailsBox/DetailsBox.types.ts: -------------------------------------------------------------------------------- 1 | import { Order, RentalListing } from '@dcl/schemas' 2 | import { Asset } from '../../modules/asset/types' 3 | 4 | export type Props = { 5 | asset: Asset 6 | rental?: RentalListing | null 7 | order?: Order | null 8 | className?: string 9 | } 10 | 11 | export type MapStateProps = Pick 12 | -------------------------------------------------------------------------------- /webapp/src/components/DetailsBox/DetailsRow/Availability/index.ts: -------------------------------------------------------------------------------- 1 | export { default as Availability } from './Availability' 2 | -------------------------------------------------------------------------------- /webapp/src/components/DetailsBox/DetailsRow/DetailsRow.types.ts: -------------------------------------------------------------------------------- 1 | import { Order, RentalListing } from '@dcl/schemas' 2 | import { Asset } from '../../../modules/asset/types' 3 | 4 | export type Props = { 5 | asset: Asset 6 | rental?: RentalListing | null 7 | order?: Order | null 8 | owner?: string 9 | } 10 | -------------------------------------------------------------------------------- /webapp/src/components/DetailsBox/DetailsRow/Expiration/ExpirationInfo.types.ts: -------------------------------------------------------------------------------- 1 | import { SemanticICONS } from 'decentraland-ui' 2 | 3 | export type Props = { 4 | title: string 5 | popupContent?: string 6 | icon?: SemanticICONS 7 | expirationDate: number 8 | } 9 | -------------------------------------------------------------------------------- /webapp/src/components/DetailsBox/DetailsRow/Expiration/index.ts: -------------------------------------------------------------------------------- 1 | export { default as Expiration } from './Expiration' 2 | -------------------------------------------------------------------------------- /webapp/src/components/DetailsBox/DetailsRow/Type/Type.module.css: -------------------------------------------------------------------------------- 1 | .type { 2 | max-width: 200px; 3 | overflow: hidden; 4 | white-space: nowrap; 5 | text-overflow: ellipsis; 6 | } 7 | -------------------------------------------------------------------------------- /webapp/src/components/DetailsBox/DetailsRow/Type/index.ts: -------------------------------------------------------------------------------- 1 | export { default as Type } from './Type' 2 | -------------------------------------------------------------------------------- /webapp/src/components/DetailsBox/DetailsRow/index.ts: -------------------------------------------------------------------------------- 1 | export { Availability } from './Availability' 2 | export { Expiration } from './Expiration' 3 | export { Type } from './Type' 4 | -------------------------------------------------------------------------------- /webapp/src/components/DetailsBox/Info/Info.module.css: -------------------------------------------------------------------------------- 1 | .info { 2 | display: flex; 3 | flex-direction: row; 4 | justify-content: space-between; 5 | margin-bottom: 10px; 6 | } 7 | 8 | .infoTitle { 9 | font-weight: 400; 10 | font-size: 17px; 11 | color: var(--primary-text); 12 | display: flex; 13 | align-items: baseline; 14 | column-gap: 8px; 15 | } 16 | 17 | .infoContent { 18 | color: #979797; 19 | } 20 | -------------------------------------------------------------------------------- /webapp/src/components/DetailsBox/Info/Info.types.ts: -------------------------------------------------------------------------------- 1 | import { SemanticICONS } from 'decentraland-ui' 2 | 3 | export type Props = { 4 | title: string 5 | icon?: SemanticICONS 6 | popupContent?: string 7 | children: React.ReactNode 8 | } 9 | -------------------------------------------------------------------------------- /webapp/src/components/DetailsBox/Info/index.ts: -------------------------------------------------------------------------------- 1 | export { default as Info } from './Info' 2 | -------------------------------------------------------------------------------- /webapp/src/components/DetailsBox/index.ts: -------------------------------------------------------------------------------- 1 | export { default as DetailsBox } from './DetailsBox.container' 2 | -------------------------------------------------------------------------------- /webapp/src/components/ErrorBanner/ErrorBanner.types.ts: -------------------------------------------------------------------------------- 1 | export type Props = { 2 | info: string 3 | className?: string 4 | } 5 | -------------------------------------------------------------------------------- /webapp/src/components/ErrorBanner/index.ts: -------------------------------------------------------------------------------- 1 | import ErrorBanner from './ErrorBanner' 2 | export default ErrorBanner 3 | -------------------------------------------------------------------------------- /webapp/src/components/ExternalLinkModal/ExternalLinkModal.css: -------------------------------------------------------------------------------- 1 | .ExternalLinkModal .bold { 2 | font-weight: 600; 3 | } 4 | -------------------------------------------------------------------------------- /webapp/src/components/ExternalLinkModal/ExternalLinkModal.types.ts: -------------------------------------------------------------------------------- 1 | export type Props = { 2 | link: string 3 | onClose: () => void 4 | } 5 | -------------------------------------------------------------------------------- /webapp/src/components/ExternalLinkModal/index.ts: -------------------------------------------------------------------------------- 1 | import ExternalLinkModal from './ExternalLinkModal' 2 | 3 | export default ExternalLinkModal 4 | -------------------------------------------------------------------------------- /webapp/src/components/FavoritesCounter/index.ts: -------------------------------------------------------------------------------- 1 | import FavoritesCounter from './FavoritesCounter.container' 2 | 3 | export { FavoritesCounter } 4 | -------------------------------------------------------------------------------- /webapp/src/components/Footer/Footer.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { Footer as BaseFooter } from 'decentraland-dapps/dist/containers' 3 | import { FooterProps } from 'decentraland-ui' 4 | import * as tranlsations from '../../modules/translation/locales' 5 | 6 | const locales = Object.keys(tranlsations) 7 | 8 | const Footer = (props: FooterProps) => 9 | 10 | export default React.memo(Footer) 11 | -------------------------------------------------------------------------------- /webapp/src/components/Footer/index.ts: -------------------------------------------------------------------------------- 1 | import Footer from './Footer' 2 | export { Footer } 3 | -------------------------------------------------------------------------------- /webapp/src/components/GenderBadge/GenderBadge.types.ts: -------------------------------------------------------------------------------- 1 | import { BodyShape } from '@dcl/schemas' 2 | import { AssetType } from '../../modules/asset/types' 3 | import { Section } from '../../modules/vendor/decentraland' 4 | 5 | export type Props = { 6 | bodyShapes: BodyShape[] 7 | withText: boolean 8 | assetType: AssetType 9 | section: Section 10 | } 11 | 12 | export type OwnProps = Pick 13 | -------------------------------------------------------------------------------- /webapp/src/components/GenderBadge/index.ts: -------------------------------------------------------------------------------- 1 | import GenderBadge from './GenderBadge' 2 | 3 | export default GenderBadge 4 | -------------------------------------------------------------------------------- /webapp/src/components/HomePage/Slideshow/index.ts: -------------------------------------------------------------------------------- 1 | import Slideshow from './Slideshow' 2 | export { Slideshow } 3 | -------------------------------------------------------------------------------- /webapp/src/components/HomePage/index.ts: -------------------------------------------------------------------------------- 1 | import HomePage from './HomePage.container' 2 | export { HomePage } 3 | -------------------------------------------------------------------------------- /webapp/src/components/InfiniteScroll/InfiniteScroll.types.ts: -------------------------------------------------------------------------------- 1 | export type Props = { 2 | page: number 3 | hasMorePages: boolean 4 | isLoading?: boolean 5 | maxScrollPages?: number 6 | children: JSX.Element | null 7 | onLoadMore: (page: number) => void 8 | } 9 | -------------------------------------------------------------------------------- /webapp/src/components/InfiniteScroll/index.ts: -------------------------------------------------------------------------------- 1 | export * from './InfiniteScroll' 2 | -------------------------------------------------------------------------------- /webapp/src/components/InfoTooltip/InfoTooltip.css: -------------------------------------------------------------------------------- 1 | .InfoTooltip { 2 | cursor: pointer; 3 | display: inline-flex; 4 | vertical-align: middle; 5 | margin: 3px; 6 | width: 14px; 7 | height: 14px; 8 | background-image: url('../../images/info.svg'); 9 | margin-bottom: 6px; 10 | margin-left: 6px; 11 | } 12 | -------------------------------------------------------------------------------- /webapp/src/components/InfoTooltip/InfoTooltip.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { Popup } from 'decentraland-ui' 3 | import { Props } from './InfoTooltip.types' 4 | import './InfoTooltip.css' 5 | 6 | const InfoTooltip = (props: Props) => { 7 | const { content, className } = props 8 | return } on="hover" /> 9 | } 10 | 11 | export default React.memo(InfoTooltip) 12 | -------------------------------------------------------------------------------- /webapp/src/components/InfoTooltip/InfoTooltip.types.ts: -------------------------------------------------------------------------------- 1 | export type Props = { 2 | content: string 3 | className?: string 4 | } 5 | -------------------------------------------------------------------------------- /webapp/src/components/InfoTooltip/index.ts: -------------------------------------------------------------------------------- 1 | import InfoTooltip from './InfoTooltip' 2 | export { InfoTooltip } 3 | -------------------------------------------------------------------------------- /webapp/src/components/LandLockedPopup/LandLockedPopup.types.ts: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { RentalListing } from '@dcl/schemas' 3 | import { Asset } from '../../modules/asset/types' 4 | 5 | export type Props = { 6 | asset: Asset 7 | rental: RentalListing | null 8 | children: React.ReactNode 9 | userAddress: string 10 | } 11 | -------------------------------------------------------------------------------- /webapp/src/components/LandLockedPopup/index.ts: -------------------------------------------------------------------------------- 1 | export * from './LandLockedPopup' 2 | -------------------------------------------------------------------------------- /webapp/src/components/LandsPage/index.ts: -------------------------------------------------------------------------------- 1 | import LandsPage from './LandsPage' 2 | export { LandsPage } 3 | -------------------------------------------------------------------------------- /webapp/src/components/Layout/Column/Column.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decentraland/marketplace/65f07c637cf59900dc2bc8eccfc762bddfa8ab6c/webapp/src/components/Layout/Column/Column.css -------------------------------------------------------------------------------- /webapp/src/components/Layout/Column/Column.types.ts: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export type Props = { 4 | className?: string 5 | children: React.ReactNode 6 | align: 'left' | 'center' | 'right' 7 | grow: boolean 8 | shrink: boolean 9 | onClick?: (event: React.MouseEvent) => void 10 | } 11 | -------------------------------------------------------------------------------- /webapp/src/components/Layout/Column/index.ts: -------------------------------------------------------------------------------- 1 | import Column from './Column' 2 | export { Column } 3 | -------------------------------------------------------------------------------- /webapp/src/components/Layout/Row/Row.css: -------------------------------------------------------------------------------- 1 | .Row { 2 | display: flex; 3 | position: relative; 4 | flex-flow: row nowrap; 5 | width: 100%; 6 | } 7 | 8 | .Row > .Column.grow { 9 | flex: 1 1 auto; 10 | } 11 | 12 | .Row > .Column.shrink { 13 | flex: 0 0 auto; 14 | } 15 | 16 | @media (max-width: 768px) { 17 | .Row > .Column.right { 18 | overflow: hidden; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /webapp/src/components/Layout/Row/Row.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import classNames from 'classnames' 3 | import { Props } from './Row.types' 4 | import './Row.css' 5 | 6 | const Row = (props: Props) => { 7 | const { className, children, onClick } = props 8 | 9 | return ( 10 |
11 | {children} 12 |
13 | ) 14 | } 15 | 16 | Row.defaultProps = { 17 | className: '' 18 | } 19 | 20 | export default React.memo(Row) 21 | -------------------------------------------------------------------------------- /webapp/src/components/Layout/Row/Row.types.ts: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export type Props = { 4 | className?: string 5 | children: React.ReactNode 6 | onClick?: (event: React.MouseEvent) => void 7 | } 8 | -------------------------------------------------------------------------------- /webapp/src/components/Layout/Row/index.ts: -------------------------------------------------------------------------------- 1 | import Row from './Row' 2 | export { Row } 3 | -------------------------------------------------------------------------------- /webapp/src/components/LegacyNFTPage/index.ts: -------------------------------------------------------------------------------- 1 | import LegacyNFTPage from './LegacyNFTPage.container' 2 | export { LegacyNFTPage } 3 | -------------------------------------------------------------------------------- /webapp/src/components/LinkedProfile/LinkedProfile.tsx: -------------------------------------------------------------------------------- 1 | import { Profile } from 'decentraland-dapps/dist/containers' 2 | import { profileUrl } from '../../lib/environment' 3 | import { Props } from './LinkedProfile.types' 4 | 5 | export const LinkedProfile = ({ isProfileEnabled, ...props }: Props) => { 6 | const { address } = props 7 | return 8 | } 9 | -------------------------------------------------------------------------------- /webapp/src/components/LinkedProfile/index.ts: -------------------------------------------------------------------------------- 1 | export * from './LinkedProfile' 2 | -------------------------------------------------------------------------------- /webapp/src/components/ListPage/index.ts: -------------------------------------------------------------------------------- 1 | import ListPage from './ListPage.container' 2 | export { ListPage } 3 | -------------------------------------------------------------------------------- /webapp/src/components/ListedBadge/ListedBadge.module.css: -------------------------------------------------------------------------------- 1 | .badge { 2 | color: white; 3 | width: 32px; 4 | height: 32px; 5 | } 6 | 7 | .icon { 8 | position: relative; 9 | right: 2px; 10 | } 11 | -------------------------------------------------------------------------------- /webapp/src/components/ListedBadge/ListedBadge.tsx: -------------------------------------------------------------------------------- 1 | import classNames from 'classnames' 2 | import { Badge, Color, Icon } from 'decentraland-ui' 3 | import styles from './ListedBadge.module.css' 4 | 5 | type Props = { 6 | className?: string 7 | } 8 | 9 | const ListedBadge = ({ className }: Props) => ( 10 | 11 | 12 | 13 | ) 14 | 15 | export default ListedBadge 16 | -------------------------------------------------------------------------------- /webapp/src/components/ListedBadge/index.ts: -------------------------------------------------------------------------------- 1 | import ListedBadge from './ListedBadge' 2 | 3 | export default ListedBadge 4 | -------------------------------------------------------------------------------- /webapp/src/components/ListsPage/ListCard/index.ts: -------------------------------------------------------------------------------- 1 | export { default as ListCard } from './ListCard.container' 2 | export * from './ListCard.types' 3 | -------------------------------------------------------------------------------- /webapp/src/components/ListsPage/constants.tsx: -------------------------------------------------------------------------------- 1 | export const LOADER_TEST_ID = 'loader' 2 | export const ERROR_TEST_ID = 'error' 3 | export const CREATE_LIST_TEST_ID = 'create-list' 4 | -------------------------------------------------------------------------------- /webapp/src/components/ListsPage/index.ts: -------------------------------------------------------------------------------- 1 | import ListsPage from './ListsPage.container' 2 | export { ListsPage } 3 | -------------------------------------------------------------------------------- /webapp/src/components/Mana/Mana.types.ts: -------------------------------------------------------------------------------- 1 | import { ManaProps } from 'decentraland-ui' 2 | 3 | export type Props = ManaProps & { 4 | withTooltip?: boolean 5 | } 6 | -------------------------------------------------------------------------------- /webapp/src/components/Mana/index.ts: -------------------------------------------------------------------------------- 1 | import Mana from './Mana' 2 | export { Mana } 3 | -------------------------------------------------------------------------------- /webapp/src/components/ManaField/ManaField.types.ts: -------------------------------------------------------------------------------- 1 | import { Network } from '@dcl/schemas' 2 | import { FieldProps, InputOnChangeData } from 'decentraland-ui' 3 | 4 | export type Props = Omit & { 5 | network: Network 6 | value: string | undefined 7 | onChange: (event: React.ChangeEvent, data: InputOnChangeData) => unknown 8 | } 9 | -------------------------------------------------------------------------------- /webapp/src/components/ManaField/index.ts: -------------------------------------------------------------------------------- 1 | import ManaField from './ManaField' 2 | export { ManaField } 3 | -------------------------------------------------------------------------------- /webapp/src/components/ManaToFiat/ManaToFiat.types.ts: -------------------------------------------------------------------------------- 1 | export type Props = { 2 | mana: string 3 | digits?: number 4 | } 5 | -------------------------------------------------------------------------------- /webapp/src/components/ManaToFiat/index.ts: -------------------------------------------------------------------------------- 1 | import ManaToFiat from './ManaToFiat' 2 | export { ManaToFiat } 3 | -------------------------------------------------------------------------------- /webapp/src/components/ManageAssetPage/Highlights/Highlights.container.ts: -------------------------------------------------------------------------------- 1 | import { connect } from 'react-redux' 2 | import { getProximities } from '../../../modules/proximity/selectors' 3 | import { RootState } from '../../../modules/reducer' 4 | import { Highlights } from './Highlights' 5 | import { MapStateProps } from './Highlights.types' 6 | 7 | const mapState = (state: RootState): MapStateProps => ({ 8 | proximities: getProximities(state) 9 | }) 10 | 11 | export default connect(mapState)(Highlights) 12 | -------------------------------------------------------------------------------- /webapp/src/components/ManageAssetPage/Highlights/Highlights.types.ts: -------------------------------------------------------------------------------- 1 | import { NFT } from '../../../modules/nft/types' 2 | import { Proximity } from '../../../modules/proximity/types' 3 | 4 | export type Props = { 5 | nft: NFT 6 | proximities: Record 7 | className?: string 8 | } 9 | 10 | export type MapStateProps = Pick 11 | export type OwnProps = Pick 12 | -------------------------------------------------------------------------------- /webapp/src/components/ManageAssetPage/Highlights/index.ts: -------------------------------------------------------------------------------- 1 | export { default as Highlights } from './Highlights.container' 2 | -------------------------------------------------------------------------------- /webapp/src/components/ManageAssetPage/IconButton/IconButton.module.css: -------------------------------------------------------------------------------- 1 | .button:global(.ui.button) { 2 | color: var(--primary); 3 | border: 1px solid rgba(115, 110, 125, 0.4); 4 | border-radius: 5px; 5 | padding: 10px; 6 | width: 36px; 7 | min-width: unset; 8 | height: 36px; 9 | } 10 | 11 | .button:global(.ui.button):hover { 12 | color: var(--primary) 13 | } 14 | 15 | .icon { 16 | margin: 0px !important; 17 | } 18 | -------------------------------------------------------------------------------- /webapp/src/components/ManageAssetPage/IconButton/IconButton.types.ts: -------------------------------------------------------------------------------- 1 | import { SemanticICONS } from 'decentraland-ui' 2 | 3 | export type Props = { 4 | iconName: SemanticICONS 5 | className?: string 6 | disabled?: boolean 7 | onClick: () => unknown 8 | } 9 | -------------------------------------------------------------------------------- /webapp/src/components/ManageAssetPage/IconButton/index.ts: -------------------------------------------------------------------------------- 1 | export { IconButton } from './IconButton' 2 | -------------------------------------------------------------------------------- /webapp/src/components/ManageAssetPage/ManageAssetPage.types.ts: -------------------------------------------------------------------------------- 1 | import { Wallet } from 'decentraland-dapps/dist/modules/wallet/types' 2 | 3 | export type Props = { 4 | wallet: Wallet | null 5 | isConnecting: boolean 6 | onBack: (location?: string) => void 7 | } 8 | 9 | export type MapStateProps = Pick 10 | export type MapDispatchProps = Pick 11 | -------------------------------------------------------------------------------- /webapp/src/components/ManageAssetPage/Map/Map.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { AssetImage } from '../../AssetImage' 3 | import { Props } from './Map.types' 4 | 5 | const Map = (props: Props) => { 6 | const { asset, className } = props 7 | 8 | return ( 9 |
10 | 11 |
12 | ) 13 | } 14 | 15 | export default React.memo(Map) 16 | -------------------------------------------------------------------------------- /webapp/src/components/ManageAssetPage/Map/Map.types.ts: -------------------------------------------------------------------------------- 1 | import { NFT } from '../../../modules/nft/types' 2 | 3 | export type Props = { 4 | asset: NFT 5 | className?: string 6 | } 7 | -------------------------------------------------------------------------------- /webapp/src/components/ManageAssetPage/Map/index.ts: -------------------------------------------------------------------------------- 1 | export { default as Map } from './Map' 2 | -------------------------------------------------------------------------------- /webapp/src/components/ManageAssetPage/Rent/index.ts: -------------------------------------------------------------------------------- 1 | export { default as Rent } from './Rent.container' 2 | -------------------------------------------------------------------------------- /webapp/src/components/ManageAssetPage/Sell/index.ts: -------------------------------------------------------------------------------- 1 | export { default as Sell } from './Sell.container' 2 | -------------------------------------------------------------------------------- /webapp/src/components/ManageAssetPage/index.ts: -------------------------------------------------------------------------------- 1 | export { default as ManageAssetPage } from './ManageAssetPage.container' 2 | -------------------------------------------------------------------------------- /webapp/src/components/Menu/DropdownMenu/DropdownMenu.types.ts: -------------------------------------------------------------------------------- 1 | export type Props = { 2 | values: T[] 3 | currentValue?: T 4 | onMenuItemClick: (value: T) => void 5 | } 6 | -------------------------------------------------------------------------------- /webapp/src/components/Menu/DropdownMenu/index.ts: -------------------------------------------------------------------------------- 1 | import DropdownMenu from './DropdownMenu' 2 | export { DropdownMenu } 3 | -------------------------------------------------------------------------------- /webapp/src/components/Menu/Menu.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { Props } from './Menu.types' 3 | import './Menu.css' 4 | 5 | const Menu = (props: Props) => { 6 | const { className = '', children } = props 7 | 8 | return
    {children}
9 | } 10 | 11 | export default React.memo(Menu) 12 | -------------------------------------------------------------------------------- /webapp/src/components/Menu/Menu.types.ts: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export type Props = { 4 | className?: string 5 | children: React.ReactNode 6 | } 7 | -------------------------------------------------------------------------------- /webapp/src/components/Menu/MenuItem/MenuItem.types.ts: -------------------------------------------------------------------------------- 1 | export type Props = { 2 | className?: string 3 | value: T 4 | currentValue?: T 5 | subtitle?: string 6 | image?: string 7 | nestedLevel?: number 8 | withCaret?: boolean 9 | onClick: (value: T) => void 10 | } 11 | -------------------------------------------------------------------------------- /webapp/src/components/Menu/MenuItem/index.ts: -------------------------------------------------------------------------------- 1 | import MenuItem from './MenuItem' 2 | export { MenuItem } 3 | -------------------------------------------------------------------------------- /webapp/src/components/Menu/index.ts: -------------------------------------------------------------------------------- 1 | import Menu from './Menu' 2 | export { Menu } 3 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/AssetFiltersModal/AssetTypeFilter/AssetTypeFilter.css: -------------------------------------------------------------------------------- 1 | .filters-sidebar-box.asset-type-filter .SelectFilter.Filter { 2 | margin-bottom: 0; 3 | margin-top: 10px; 4 | } 5 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/AssetFiltersModal/AssetTypeFilter/index.ts: -------------------------------------------------------------------------------- 1 | export * from './AssetTypeFilter' 2 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/AssetFiltersModal/CategoryFilter/index.ts: -------------------------------------------------------------------------------- 1 | import CategoryFilter from './CategoryFilter.container' 2 | 3 | export { CategoryFilter } 4 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/AssetFiltersModal/index.ts: -------------------------------------------------------------------------------- 1 | import AssetFiltersModal from './AssetFiltersModal.container' 2 | export { AssetFiltersModal } 3 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/BuyWithCardExplanationModal/index.ts: -------------------------------------------------------------------------------- 1 | export { default as BuyWithCardExplanationModal } from './BuyWithCardExplanationModal.container' 2 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/BuyWithCryptoModal/BuyNftWithCryptoModal/index.ts: -------------------------------------------------------------------------------- 1 | import BuyNftWithCryptoModal from './BuyNftWithCryptoModal.container' 2 | export { BuyNftWithCryptoModal } 3 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/BuyWithCryptoModal/MintNameWithCryptoModal/index.ts: -------------------------------------------------------------------------------- 1 | import MintNameWithCryptoModal from './MintNameWithCryptoModal.container' 2 | export { MintNameWithCryptoModal } 3 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/BuyWithCryptoModal/MintNftWithCryptoModal/index.ts: -------------------------------------------------------------------------------- 1 | import MintNftWithCryptoModal from './MintNftWithCryptoModal.container' 2 | export { MintNftWithCryptoModal } 3 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/BuyWithCryptoModal/PaymentSelector/constants.ts: -------------------------------------------------------------------------------- 1 | export const PAY_WITH_DATA_TEST_ID = 'pay-with-container' 2 | export const CHAIN_SELECTOR_DATA_TEST_ID = 'chain-selector' 3 | export const TOKEN_SELECTOR_DATA_TEST_ID = 'token-selector' 4 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/BuyWithCryptoModal/PaymentSelector/index.ts: -------------------------------------------------------------------------------- 1 | import PaymentSelector from './PaymentSelector' 2 | export * from './constants' 3 | export default PaymentSelector 4 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/BuyWithCryptoModal/PurchaseTotal/constants.ts: -------------------------------------------------------------------------------- 1 | export const FREE_TX_COVERED_TEST_ID = 'free-tx-label' 2 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/BuyWithCryptoModal/PurchaseTotal/index.ts: -------------------------------------------------------------------------------- 1 | import PurchaseTotal from './PurchaseTotal' 2 | export * from './constants' 3 | export default PurchaseTotal 4 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/BuyWithCryptoModal/TokenIcon/TokenIcon.types.ts: -------------------------------------------------------------------------------- 1 | export type Props = { 2 | src?: string 3 | name: string 4 | } 5 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/BuyWithCryptoModal/TokenIcon/index.ts: -------------------------------------------------------------------------------- 1 | export * from './TokenIcon' 2 | export * from './TokenIcon.types' 3 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/BuyWithCryptoModal/index.ts: -------------------------------------------------------------------------------- 1 | export * from './BuyNftWithCryptoModal' 2 | export * from './MintNftWithCryptoModal' 3 | export * from './MintNameWithCryptoModal' 4 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/ClaimLandModal/ClaimLandModal.module.css: -------------------------------------------------------------------------------- 1 | .content > p { 2 | text-align: center; 3 | } 4 | 5 | @media (max-width: 767px) { 6 | .content > p { 7 | text-align: left; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/ClaimLandModal/index.ts: -------------------------------------------------------------------------------- 1 | export { default as ClaimLandModal } from './ClaimLandModal.container' 2 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/ClaimNameFatFingerModal/index.ts: -------------------------------------------------------------------------------- 1 | import ClaimNameFatFingerModal from './ClaimNameFatFingerModal.container' 2 | export default ClaimNameFatFingerModal 3 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/ConfirmDeleteListModal/index.ts: -------------------------------------------------------------------------------- 1 | import ConfirmDeleteListModal from './ConfirmDeleteListModal.container' 2 | export { ConfirmDeleteListModal } 3 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/ConfirmRentModal/index.ts: -------------------------------------------------------------------------------- 1 | import ConfirmRentModal from './ConfirmRentModal.container' 2 | export { ConfirmRentModal } 3 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/CreateOrEditListModal/index.ts: -------------------------------------------------------------------------------- 1 | import CreateOrEditListModal from './CreateOrEditListModal.container' 2 | export { CreateOrEditListModal } 3 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/ExpiredListingsModal/index.ts: -------------------------------------------------------------------------------- 1 | export { ExpiredListingsModal } from './ExpiredListingsModal' 2 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/FavoritesModal/FavoritesModal.types.ts: -------------------------------------------------------------------------------- 1 | import { ModalProps } from 'decentraland-dapps/dist/providers/ModalProvider/ModalProvider.types' 2 | import { AuthIdentity } from 'decentraland-crypto-fetch' 3 | 4 | export type Metadata = { 5 | itemId: string 6 | } 7 | 8 | export type Props = Omit & { 9 | metadata: Metadata 10 | identity: AuthIdentity | undefined 11 | } 12 | 13 | export type MapStateProps = Pick 14 | 15 | export type OwnProps = Pick 16 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/FavoritesModal/index.ts: -------------------------------------------------------------------------------- 1 | import FavoritesModal from './FavoritesModal.container' 2 | export { FavoritesModal } 3 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/LeavingSiteModal/index.ts: -------------------------------------------------------------------------------- 1 | export { default as LeavingSiteModal } from './LeavingSiteModal' 2 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/ListsLaunchModal/ListsLaunchModal.types.ts: -------------------------------------------------------------------------------- 1 | export type Props = { 2 | isListsLaunchPopupEnabled: boolean 3 | isLoadingFeatureFlags: boolean 4 | } 5 | 6 | export type MapStateProps = Pick 7 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/ListsLaunchModal/index.ts: -------------------------------------------------------------------------------- 1 | export { default as ListsLaunchModal } from './ListsLaunchModal.container' 2 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/RemoveRentalModal/RemoveRentalModal.module.css: -------------------------------------------------------------------------------- 1 | .content > p { 2 | text-align: center; 3 | } 4 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/RemoveRentalModal/index.ts: -------------------------------------------------------------------------------- 1 | export { default as RemoveRentalModal } from './RemoveRentalModal.container' 2 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/RentConfirmedModal/CTA/CTA.types.ts: -------------------------------------------------------------------------------- 1 | export type Props = { 2 | to: string 3 | name: string 4 | isDisabledOnMobile?: boolean 5 | } 6 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/RentConfirmedModal/RentConfirmedModal.module.css: -------------------------------------------------------------------------------- 1 | .textContainer { 2 | margin-bottom: 32px; 3 | padding: 0 64px; 4 | } 5 | 6 | .modal:global(.ui.modal > .content) { 7 | margin-top: 4px; 8 | margin-bottom: 32px; 9 | } 10 | 11 | @media (max-width: 767px) { 12 | .textContainer { 13 | padding: 0; 14 | } 15 | 16 | .modal:global(.ui.modal > .content) { 17 | font-size: 15px; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/RentConfirmedModal/RentConfirmedModal.types.ts: -------------------------------------------------------------------------------- 1 | import { RentalListing } from '@dcl/schemas' 2 | import { ModalProps } from 'decentraland-dapps/dist/providers/ModalProvider/ModalProvider.types' 3 | 4 | export type Metadata = { 5 | rental: RentalListing 6 | periodIndexChosen: number 7 | } 8 | 9 | export type Props = Omit & { 10 | metadata: Metadata 11 | } 12 | 13 | export type OwnProps = Pick 14 | export type MapStateProps = Props 15 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/RentConfirmedModal/index.ts: -------------------------------------------------------------------------------- 1 | import RentConfirmedModal from './RentConfirmedModal' 2 | export { RentConfirmedModal } 3 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/RentalListingModal/AuthorizationStep/index.ts: -------------------------------------------------------------------------------- 1 | import AuthorizationStep from './AuthorizationStep.container' 2 | export { AuthorizationStep } 3 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/RentalListingModal/ConfirmationStep/index.ts: -------------------------------------------------------------------------------- 1 | import ConfirmationStep from './ConfirmationStep.container' 2 | export { ConfirmationStep } 3 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/RentalListingModal/CreateOrEditListingStep/index.ts: -------------------------------------------------------------------------------- 1 | import CreateOrEditListingStep from './CreateOrEditListingStep' 2 | export { CreateOrEditListingStep } 3 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/RentalListingModal/EditConfirmationStep/index.ts: -------------------------------------------------------------------------------- 1 | import EditConfirmationStep from './EditConfirmationStep.container' 2 | export { EditConfirmationStep } 3 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/RentalListingModal/InformationStep/InformationStep.types.ts: -------------------------------------------------------------------------------- 1 | import { NFT } from '../../../../modules/nft/types' 2 | 3 | export type Props = { 4 | nft: NFT 5 | onCancel: () => void 6 | handleSubmit: () => void 7 | } 8 | 9 | export type MapStateProps = Props 10 | 11 | export type OwnProps = Pick 12 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/RentalListingModal/InformationStep/index.ts: -------------------------------------------------------------------------------- 1 | import InformationStep from './InformationStep' 2 | export { InformationStep } 3 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/RentalListingModal/index.ts: -------------------------------------------------------------------------------- 1 | import RentalListingModal from './RentalListingModal.container' 2 | export { RentalListingModal } 3 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/SaveToListModal/index.ts: -------------------------------------------------------------------------------- 1 | import SaveToListModal from './SaveToListModal.container' 2 | export { SaveToListModal } 3 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/SellModal/index.ts: -------------------------------------------------------------------------------- 1 | export { default as SellModal } from './SellModal.container' 2 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/SetNameAsAliasModal/index.ts: -------------------------------------------------------------------------------- 1 | import SetNameAsAliasModal from './SetNameAsAliasModal.container' 2 | export default SetNameAsAliasModal 3 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/ShareListModal/ShareListModal.module.css: -------------------------------------------------------------------------------- 1 | .actions { 2 | display: flex; 3 | flex-direction: column; 4 | align-items: center; 5 | gap: 18px; 6 | } 7 | 8 | .modal:global(.ui.modal .actions .ui.button + .ui.button) { 9 | margin: unset; 10 | } 11 | 12 | .modal:global(.ui.modal > .content) { 13 | display: flex; 14 | flex-direction: column; 15 | align-items: center; 16 | gap: 18px; 17 | margin-bottom: 50px; 18 | } 19 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/ShareListModal/ShareListModal.types.ts: -------------------------------------------------------------------------------- 1 | import { ModalProps } from 'decentraland-dapps/dist/providers/ModalProvider/ModalProvider.types' 2 | import { List } from '../../../modules/favorites/types' 3 | 4 | export type ShareListMetadata = { 5 | list: List 6 | } 7 | 8 | export type Props = Omit & { 9 | metadata: ShareListMetadata 10 | } 11 | 12 | export type MapDispatchProps = Pick 13 | export type OwnProps = Pick 14 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/ShareListModal/index.ts: -------------------------------------------------------------------------------- 1 | import ShareListModal from './ShareListModal' 2 | export { ShareListModal } 3 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/SmartWearableVideoShowcaseModal/SmartWearableVideoShowcaseModal.module.css: -------------------------------------------------------------------------------- 1 | .video { 2 | width: 100%; 3 | object-fit: contain; 4 | } 5 | 6 | .content { 7 | min-height: 440px; 8 | } 9 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/SmartWearableVideoShowcaseModal/SmartWearableVideoShowcaseModal.types.ts: -------------------------------------------------------------------------------- 1 | import { ModalProps } from 'decentraland-dapps/dist/providers/ModalProvider/ModalProvider.types' 2 | 3 | export type SmartWearableVideoShowcaseMetadata = { 4 | videoHash: string 5 | } 6 | 7 | export type Props = Omit & { 8 | metadata: SmartWearableVideoShowcaseMetadata 9 | } 10 | 11 | export type MapDispatchProps = Pick 12 | export type OwnProps = Pick 13 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/SmartWearableVideoShowcaseModal/constants.ts: -------------------------------------------------------------------------------- 1 | export const VIDEO_TEST_ID = 'smart-wearable-video' 2 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/SmartWearableVideoShowcaseModal/index.ts: -------------------------------------------------------------------------------- 1 | import SmartWearableVideoShowcaseModal from './SmartWearableVideoShowcaseModal' 2 | export { SmartWearableVideoShowcaseModal } 3 | -------------------------------------------------------------------------------- /webapp/src/components/Modals/SubmitTransactionModal/index.ts: -------------------------------------------------------------------------------- 1 | export { default as SubmitTransactionModal } from './SubmitTransactionModal.container' 2 | -------------------------------------------------------------------------------- /webapp/src/components/NamesPage/ClaimNamePage/index.ts: -------------------------------------------------------------------------------- 1 | import ClaimNamePage from './ClaimNamePage.container' 2 | export { ClaimNamePage } 3 | -------------------------------------------------------------------------------- /webapp/src/components/NamesPage/NamesPage.module.css: -------------------------------------------------------------------------------- 1 | .namesPageContainer { 2 | display: flex; 3 | flex-direction: column; 4 | } 5 | -------------------------------------------------------------------------------- /webapp/src/components/NamesPage/NamesPage.types.ts: -------------------------------------------------------------------------------- 1 | export type Props = { 2 | isFullscreen: boolean 3 | isMap: boolean 4 | onBrowse: () => void 5 | } 6 | 7 | export type MapStateProps = Pick 8 | -------------------------------------------------------------------------------- /webapp/src/components/NamesPage/index.ts: -------------------------------------------------------------------------------- 1 | import NamesPage from './NamesPage' 2 | export { NamesPage } 3 | -------------------------------------------------------------------------------- /webapp/src/components/Navbar/Navbar.css: -------------------------------------------------------------------------------- 1 | .dcl.account-wrapper .dcl.mana { 2 | flex: none; 3 | } 4 | 5 | 6 | @media (max-width: 991px) { 7 | .dcl.navbar .dcl.account-wrapper { 8 | flex-direction: column; 9 | align-items: flex-start; 10 | } 11 | 12 | .dcl.account-wrapper .dcl.mana+.dcl.mana { 13 | padding: 0; 14 | } 15 | } -------------------------------------------------------------------------------- /webapp/src/components/Navbar/Navbar.types.ts: -------------------------------------------------------------------------------- 1 | import { AuthIdentity } from '@dcl/crypto' 2 | import { NavbarProps } from 'decentraland-ui/dist/components/Navbar/Navbar.types' 3 | 4 | export type Props = Partial & { 5 | hasPendingTransactions: boolean 6 | enablePartialSupportAlert?: boolean 7 | identity?: AuthIdentity 8 | } 9 | 10 | export type OwnProps = Pick 11 | 12 | export type MapStateProps = Pick 13 | -------------------------------------------------------------------------------- /webapp/src/components/Navbar/index.ts: -------------------------------------------------------------------------------- 1 | import Navbar from './Navbar.container' 2 | export { Navbar } 3 | -------------------------------------------------------------------------------- /webapp/src/components/Navigation/index.ts: -------------------------------------------------------------------------------- 1 | import Navigation from './Navigation.container' 2 | export { Navigation } 3 | -------------------------------------------------------------------------------- /webapp/src/components/Network/Network.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { t } from 'decentraland-dapps/dist/modules/translation/utils' 3 | import { Stats } from 'decentraland-ui' 4 | import { Props } from './Network.types' 5 | 6 | const Network = (props: Props) => { 7 | const { asset } = props 8 | 9 | return {t(`networks.${asset.network.toLowerCase()}`)} 10 | } 11 | 12 | export default React.memo(Network) 13 | -------------------------------------------------------------------------------- /webapp/src/components/Network/Network.types.ts: -------------------------------------------------------------------------------- 1 | import { Asset } from '../../modules/asset/types' 2 | 3 | export type Props = { 4 | asset: Asset 5 | } 6 | -------------------------------------------------------------------------------- /webapp/src/components/Network/index.ts: -------------------------------------------------------------------------------- 1 | import Network from './Network' 2 | export { Network } 3 | -------------------------------------------------------------------------------- /webapp/src/components/OnSaleOrRentList/AssetCell/AssetCell.types.tsx: -------------------------------------------------------------------------------- 1 | import { Asset } from '../../../modules/asset/types' 2 | 3 | export type Props = { 4 | asset: Asset 5 | link?: string 6 | } 7 | -------------------------------------------------------------------------------- /webapp/src/components/OnSaleOrRentList/AssetCell/index.ts: -------------------------------------------------------------------------------- 1 | import AssetCell from './AssetCell' 2 | 3 | export default AssetCell 4 | -------------------------------------------------------------------------------- /webapp/src/components/OnSaleOrRentList/OnRentListElement/OnRentListElement.css: -------------------------------------------------------------------------------- 1 | .mobile-row { 2 | display: flex; 3 | align-items: center; 4 | justify-content: space-between; 5 | margin-bottom: 16px; 6 | } 7 | 8 | .mobile-row .ui.header.dcl.mana { 9 | margin: 0px; 10 | } 11 | 12 | .mobile-row a { 13 | color: var(--text); 14 | } 15 | 16 | i.icon.warning-icon { 17 | color: var(--primary); 18 | margin-right: 5px; 19 | } 20 | -------------------------------------------------------------------------------- /webapp/src/components/OnSaleOrRentList/OnRentListElement/index.ts: -------------------------------------------------------------------------------- 1 | import OnRentListElement from './OnRentListElement.container' 2 | 3 | export default OnRentListElement 4 | -------------------------------------------------------------------------------- /webapp/src/components/OnSaleOrRentList/OnSaleListElement/index.ts: -------------------------------------------------------------------------------- 1 | import OnSaleListElement from './OnSaleListElement' 2 | 3 | export default OnSaleListElement 4 | -------------------------------------------------------------------------------- /webapp/src/components/OnSaleOrRentList/index.ts: -------------------------------------------------------------------------------- 1 | import OnSaleOrRentList from './OnSaleOrRentList.container' 2 | 3 | export default OnSaleOrRentList 4 | -------------------------------------------------------------------------------- /webapp/src/components/PageHeader/PageHeader.css: -------------------------------------------------------------------------------- 1 | .PageHeader { 2 | height: var(--page-header-height); 3 | margin-bottom: 35px; 4 | } 5 | -------------------------------------------------------------------------------- /webapp/src/components/PageHeader/PageHeader.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import classNames from 'classnames' 3 | import { Props } from './PageHeader.types' 4 | import './PageHeader.css' 5 | 6 | const PageHeader = ({ style, className, children }: Props) => ( 7 |
8 | {children} 9 |
10 | ) 11 | 12 | export default React.memo(PageHeader) 13 | -------------------------------------------------------------------------------- /webapp/src/components/PageHeader/PageHeader.types.ts: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export type Props = { 4 | style?: React.CSSProperties 5 | className?: string 6 | children: React.ReactNode 7 | } 8 | -------------------------------------------------------------------------------- /webapp/src/components/PageHeader/index.ts: -------------------------------------------------------------------------------- 1 | import PageHeader from './PageHeader' 2 | export { PageHeader } 3 | -------------------------------------------------------------------------------- /webapp/src/components/PageLayout/PageLayout.module.css: -------------------------------------------------------------------------------- 1 | .page { 2 | height: 100%; 3 | display: flex; 4 | flex-direction: column; 5 | } 6 | 7 | .content { 8 | padding: 0 24px; 9 | flex-grow: 1; 10 | } 11 | 12 | .navbar { 13 | flex-shrink: 0; 14 | } 15 | 16 | @media (max-width: 767px) { 17 | .content { 18 | padding: 0; 19 | } 20 | } -------------------------------------------------------------------------------- /webapp/src/components/PageLayout/PageLayout.types.ts: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { NavigationTab } from '../Navigation/Navigation.types' 3 | 4 | export type Props = { 5 | activeTab?: NavigationTab 6 | className?: string 7 | hideNavigation?: boolean 8 | } & React.PropsWithChildren 9 | -------------------------------------------------------------------------------- /webapp/src/components/PageLayout/index.ts: -------------------------------------------------------------------------------- 1 | export * from './PageLayout.types' 2 | export { default as PageLayout } from './PageLayout' 3 | -------------------------------------------------------------------------------- /webapp/src/components/PartnersSidebar/PartnersSidebar.css: -------------------------------------------------------------------------------- 1 | .PartnersSidebar { 2 | padding-top: 10px; 3 | } 4 | 5 | .PartnersSidebar ul.Menu { 6 | margin-top: 30px; 7 | } 8 | -------------------------------------------------------------------------------- /webapp/src/components/PartnersSidebar/PartnersSidebar.types.ts: -------------------------------------------------------------------------------- 1 | import { VendorName } from '../../modules/vendor/types' 2 | 3 | export type Props = { 4 | onMenuItemClick: (vendor: VendorName) => void 5 | } 6 | -------------------------------------------------------------------------------- /webapp/src/components/PartnersSidebar/index.ts: -------------------------------------------------------------------------------- 1 | import PartnersSidebar from './PartnersSidebar' 2 | export { PartnersSidebar } 3 | -------------------------------------------------------------------------------- /webapp/src/components/Price/Price.types.ts: -------------------------------------------------------------------------------- 1 | import { Asset } from '../../modules/asset/types' 2 | 3 | export type Props = { 4 | asset: Asset 5 | price?: string 6 | title?: string 7 | } 8 | 9 | export type MapStateProps = Pick 10 | export type OwnProps = Pick 11 | -------------------------------------------------------------------------------- /webapp/src/components/Price/index.ts: -------------------------------------------------------------------------------- 1 | import Price from './Price.container' 2 | 3 | export default Price 4 | -------------------------------------------------------------------------------- /webapp/src/components/PrivateTag/PrivateTag.types.ts: -------------------------------------------------------------------------------- 1 | export type Props = { 2 | className?: string 3 | 'data-testid'?: string 4 | } 5 | -------------------------------------------------------------------------------- /webapp/src/components/PrivateTag/index.ts: -------------------------------------------------------------------------------- 1 | export { default as PrivateTag } from './PrivateTag' 2 | -------------------------------------------------------------------------------- /webapp/src/components/ProtectedRoute/ProtectedRoute.types.ts: -------------------------------------------------------------------------------- 1 | import { RouteProps } from 'react-router-dom' 2 | import { Wallet } from 'decentraland-dapps/dist/modules/wallet/types' 3 | 4 | export type Props = RouteProps & { 5 | isConnecting: boolean 6 | wallet: Wallet | null 7 | } 8 | 9 | export type MapStateProps = Pick 10 | -------------------------------------------------------------------------------- /webapp/src/components/ProtectedRoute/index.ts: -------------------------------------------------------------------------------- 1 | export { default as ProtectedRoute } from './ProtectedRoute.container' 2 | export * from './ProtectedRoute.types' 3 | -------------------------------------------------------------------------------- /webapp/src/components/Rankings/TimeframeSelector/TimeframeSelector.types.tsx: -------------------------------------------------------------------------------- 1 | import { AnalyticsTimeframe } from '../../../modules/analytics/types' 2 | 3 | export type Props = { 4 | value: AnalyticsTimeframe 5 | onChange: (timeframe: AnalyticsTimeframe) => void 6 | } 7 | -------------------------------------------------------------------------------- /webapp/src/components/Rankings/TimeframeSelector/index.ts: -------------------------------------------------------------------------------- 1 | import TimeframeSelector from './TimeframeSelector' 2 | export { TimeframeSelector } 3 | -------------------------------------------------------------------------------- /webapp/src/components/RankingsTable/RankingCollectorRow/RankingCollectorRow.types.ts: -------------------------------------------------------------------------------- 1 | import { CollectorRank } from '../../../modules/analytics/types' 2 | 3 | export type Props = { 4 | entity: CollectorRank 5 | isLoading: boolean 6 | } 7 | 8 | export type MapStateProps = Pick 9 | -------------------------------------------------------------------------------- /webapp/src/components/RankingsTable/RankingCollectorRow/index.ts: -------------------------------------------------------------------------------- 1 | import RankingCollectorRow from './RankingCollectorRow' 2 | export { RankingCollectorRow } 3 | -------------------------------------------------------------------------------- /webapp/src/components/RankingsTable/RankingCreatorRow/RankingCreatorRow.types.ts: -------------------------------------------------------------------------------- 1 | import { CreatorRank } from '../../../modules/analytics/types' 2 | 3 | export type Props = { 4 | entity: CreatorRank 5 | isLoading: boolean 6 | } 7 | 8 | export type MapStateProps = Pick 9 | -------------------------------------------------------------------------------- /webapp/src/components/RankingsTable/RankingCreatorRow/index.ts: -------------------------------------------------------------------------------- 1 | import RankingCreatorRow from './RankingCreatorRow' 2 | export { RankingCreatorRow } 3 | -------------------------------------------------------------------------------- /webapp/src/components/RankingsTable/RankingItemRow/RankingItemRow.types.ts: -------------------------------------------------------------------------------- 1 | import { ItemRank } from '../../../modules/analytics/types' 2 | 3 | export type Props = { 4 | entity: ItemRank 5 | isLoading: boolean 6 | } 7 | 8 | export type MapStateProps = Pick 9 | -------------------------------------------------------------------------------- /webapp/src/components/RankingsTable/RankingItemRow/index.ts: -------------------------------------------------------------------------------- 1 | import RankingItemRow from './RankingItemRow' 2 | export { RankingItemRow } 3 | -------------------------------------------------------------------------------- /webapp/src/components/RankingsTable/index.ts: -------------------------------------------------------------------------------- 1 | import RankingsTable from './RankingsTable.container' 2 | export { RankingsTable } 3 | -------------------------------------------------------------------------------- /webapp/src/components/RankingsTable/utils.ts: -------------------------------------------------------------------------------- 1 | import { RankingEntities, AnalyticsTimeframe, RankingsSortBy } from '../../modules/analytics/types' 2 | 3 | export const parseURLHash = (hash: string) => { 4 | const splitted = hash.split('-') 5 | return { 6 | entity: splitted[1] as RankingEntities, 7 | timeframe: splitted[2] as AnalyticsTimeframe, 8 | sortBy: splitted[3] as RankingsSortBy 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /webapp/src/components/RecentlySoldTable/index.ts: -------------------------------------------------------------------------------- 1 | import RecentlySoldTable from './RecentlySoldTable.container' 2 | export { RecentlySoldTable } 3 | -------------------------------------------------------------------------------- /webapp/src/components/Routes/Routes.types.ts: -------------------------------------------------------------------------------- 1 | import { RouteComponentProps } from 'react-router-dom' 2 | import { closeAllModals } from 'decentraland-dapps/dist/modules/modal/actions' 3 | 4 | export type Props = RouteComponentProps & { 5 | inMaintenance: boolean 6 | onLocationChanged: typeof closeAllModals 7 | } 8 | 9 | export type MapStateProps = Pick 10 | export type MapDispatchProps = Pick 11 | 12 | export type State = { 13 | hasError: boolean 14 | stackTrace: string 15 | } 16 | -------------------------------------------------------------------------------- /webapp/src/components/Routes/index.ts: -------------------------------------------------------------------------------- 1 | import Routes from './Routes.container' 2 | 3 | export { Routes } 4 | -------------------------------------------------------------------------------- /webapp/src/components/Sales/Activity/index.ts: -------------------------------------------------------------------------------- 1 | import Activity from './Activity.container' 2 | 3 | export default Activity 4 | -------------------------------------------------------------------------------- /webapp/src/components/Sales/Sales.css: -------------------------------------------------------------------------------- 1 | /* Header with filters */ 2 | 3 | .Sales .header-with-filter { 4 | display: flex; 5 | justify-content: space-between; 6 | align-items: center; 7 | height: 44px; 8 | } 9 | 10 | .Sales .header-with-filter .ui.header { 11 | margin-bottom: unset; 12 | } 13 | -------------------------------------------------------------------------------- /webapp/src/components/Sales/Stats/index.ts: -------------------------------------------------------------------------------- 1 | import Stats from './Stats.container' 2 | 3 | export default Stats 4 | -------------------------------------------------------------------------------- /webapp/src/components/Sales/index.ts: -------------------------------------------------------------------------------- 1 | import Sales from './Sales' 2 | 3 | export default Sales 4 | -------------------------------------------------------------------------------- /webapp/src/components/ScrollToTop/ScrollToTop.tsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect } from 'react' 2 | import { useLocation } from 'react-router-dom' 3 | 4 | const ScrollToTop = () => { 5 | const { pathname } = useLocation() 6 | 7 | useEffect(() => { 8 | window.scrollTo(0, 0) 9 | }, [pathname]) 10 | 11 | return null 12 | } 13 | 14 | export default React.memo(ScrollToTop) 15 | -------------------------------------------------------------------------------- /webapp/src/components/ScrollToTop/index.ts: -------------------------------------------------------------------------------- 1 | import ScrollToTop from './ScrollToTop' 2 | export { ScrollToTop } 3 | -------------------------------------------------------------------------------- /webapp/src/components/SellPage/SellModal/index.ts: -------------------------------------------------------------------------------- 1 | import SellModal from './SellModal' 2 | export { SellModal } 3 | -------------------------------------------------------------------------------- /webapp/src/components/SellPage/SellModal/utils.ts: -------------------------------------------------------------------------------- 1 | import { NFT } from '../../../modules/nft/types' 2 | import { isLand } from '../../../modules/nft/utils' 3 | 4 | const LAND_PRICE_WARNING_THRESHOLD = 100 // if the listing price of a land is below this number we show a warning 5 | 6 | export function showPriceBelowMarketValueWarning(nft: NFT, price: number) { 7 | return isLand(nft) && price <= LAND_PRICE_WARNING_THRESHOLD 8 | } 9 | -------------------------------------------------------------------------------- /webapp/src/components/SellPage/index.ts: -------------------------------------------------------------------------------- 1 | import SellPage from './SellPage.container' 2 | export { SellPage } 3 | -------------------------------------------------------------------------------- /webapp/src/components/SettingsPage/Authorization/index.ts: -------------------------------------------------------------------------------- 1 | import Authorization from './Authorization.container' 2 | export { Authorization } 3 | -------------------------------------------------------------------------------- /webapp/src/components/SettingsPage/index.ts: -------------------------------------------------------------------------------- 1 | import SettingsPage from './SettingsPage.container' 2 | export { SettingsPage } 3 | -------------------------------------------------------------------------------- /webapp/src/components/SignInPage/SignInPage.css: -------------------------------------------------------------------------------- 1 | .SignInPage { 2 | display: flex; 3 | justify-content: center; 4 | } 5 | 6 | .SignInPage .SignIn.center { 7 | position: relative; 8 | } 9 | -------------------------------------------------------------------------------- /webapp/src/components/SignInPage/SignInPage.types.ts: -------------------------------------------------------------------------------- 1 | export type Props = { 2 | isConnecting: boolean 3 | isConnected: boolean 4 | } 5 | 6 | export type MapStateProps = Pick 7 | -------------------------------------------------------------------------------- /webapp/src/components/SignInPage/index.ts: -------------------------------------------------------------------------------- 1 | import SignInPage from './SignInPage.container' 2 | export { SignInPage } 3 | -------------------------------------------------------------------------------- /webapp/src/components/StoreSettings/CoverPicker/CoverPicker.types.ts: -------------------------------------------------------------------------------- 1 | export type Props = { 2 | src?: string 3 | onChange: (src?: string, name?: string, size?: number) => void 4 | } 5 | -------------------------------------------------------------------------------- /webapp/src/components/StoreSettings/CoverPicker/index.ts: -------------------------------------------------------------------------------- 1 | import CoverPicker from './CoverPicker' 2 | 3 | export default CoverPicker 4 | -------------------------------------------------------------------------------- /webapp/src/components/StoreSettings/InputContainer/InputContainer.css: -------------------------------------------------------------------------------- 1 | .InputContainer .title { 2 | color: var(--secondary-text); 3 | margin-bottom: 8px; 4 | font-size: 15px; 5 | } 6 | -------------------------------------------------------------------------------- /webapp/src/components/StoreSettings/InputContainer/InputContainer.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { Props } from './InputContainer.types' 3 | import './InputContainer.css' 4 | 5 | const InputContainer = ({ title, children }: Props) => { 6 | return ( 7 |
8 |
{title}
9 | {children} 10 |
11 | ) 12 | } 13 | 14 | export default React.memo(InputContainer) 15 | -------------------------------------------------------------------------------- /webapp/src/components/StoreSettings/InputContainer/InputContainer.types.ts: -------------------------------------------------------------------------------- 1 | import { ReactNode } from 'react' 2 | 3 | export type Props = { 4 | title: string 5 | children: ReactNode 6 | } 7 | -------------------------------------------------------------------------------- /webapp/src/components/StoreSettings/InputContainer/index.ts: -------------------------------------------------------------------------------- 1 | import InputContainer from './InputContainer' 2 | 3 | export default InputContainer 4 | -------------------------------------------------------------------------------- /webapp/src/components/StoreSettings/TextInput/TextInput.css: -------------------------------------------------------------------------------- 1 | .TextInput { 2 | all: unset; 3 | box-sizing: border-box; 4 | padding: 10px 12px; 5 | border: 1px solid var(--secondary); 6 | border-radius: 6px; 7 | width: 100%; 8 | } 9 | -------------------------------------------------------------------------------- /webapp/src/components/StoreSettings/TextInput/TextInput.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { Props } from './TextInput.types' 3 | import './TextInput.css' 4 | 5 | const TextInput = ({ type, value, onChange }: Props) => { 6 | const Input = type 7 | 8 | return onChange(e.target.value)} /> 9 | } 10 | 11 | export default React.memo(TextInput) 12 | -------------------------------------------------------------------------------- /webapp/src/components/StoreSettings/TextInput/TextInput.types.ts: -------------------------------------------------------------------------------- 1 | export type Props = { 2 | type: 'input' | 'textarea' 3 | value: string 4 | onChange: (newValue: string) => void 5 | } 6 | -------------------------------------------------------------------------------- /webapp/src/components/StoreSettings/TextInput/index.ts: -------------------------------------------------------------------------------- 1 | import TextInput from './TextInput' 2 | 3 | export default TextInput 4 | -------------------------------------------------------------------------------- /webapp/src/components/StoreSettings/index.ts: -------------------------------------------------------------------------------- 1 | import StoreSettings from './StoreSettings.container' 2 | 3 | export default StoreSettings 4 | -------------------------------------------------------------------------------- /webapp/src/components/SuccessPage/SuccessPage.types.ts: -------------------------------------------------------------------------------- 1 | import { BigNumber } from 'ethers' 2 | import { Profile } from '@dcl/schemas' 3 | 4 | export type Props = { 5 | isLoading: boolean 6 | mintedTokenId: BigNumber | null 7 | onSetNameAsAlias: (name: string) => void 8 | profile: Profile | undefined 9 | } 10 | 11 | export type MapStateProps = Pick 12 | export type MapDispatchProps = Pick 13 | -------------------------------------------------------------------------------- /webapp/src/components/SuccessPage/index.ts: -------------------------------------------------------------------------------- 1 | import SuccessPage from './SuccessPage.container' 2 | export { SuccessPage } 3 | -------------------------------------------------------------------------------- /webapp/src/components/Table/TableContainer/TableContianer.types.tsx: -------------------------------------------------------------------------------- 1 | import React, { RefObject } from 'react' 2 | import { DropdownItemProps } from 'decentraland-ui' 3 | 4 | export type Props = { 5 | children: React.ReactNode 6 | ref: RefObject 7 | tabsList: { displayValue: string; value: string }[] 8 | activeTab?: string 9 | handleTabChange?: (tab: string) => void 10 | sortbyList?: DropdownItemProps[] 11 | handleSortByChange?: (value: string) => void 12 | sortBy?: string 13 | } 14 | -------------------------------------------------------------------------------- /webapp/src/components/Table/TableContainer/index.tsx: -------------------------------------------------------------------------------- 1 | import TableContainer from './TableContainer' 2 | export default TableContainer 3 | -------------------------------------------------------------------------------- /webapp/src/components/Table/TableContent/TableContent.types.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export type Props = { 4 | activePage?: number 5 | data: DataTableType[] 6 | isLoading: boolean 7 | setPage?: (page: number) => void 8 | totalPages?: number | null 9 | empty: () => void 10 | total: number | null 11 | rowsPerPage?: number 12 | mobileTableBody?: React.ReactNode 13 | hasHeaders?: boolean 14 | } 15 | 16 | export type DataTableType = { 17 | [key: string]: React.ReactNode 18 | } 19 | -------------------------------------------------------------------------------- /webapp/src/components/Table/TableContent/index.tsx: -------------------------------------------------------------------------------- 1 | import TableContent from './TableContent' 2 | export { TableContent } 3 | -------------------------------------------------------------------------------- /webapp/src/components/TransferPage/TransferPage.types.ts: -------------------------------------------------------------------------------- 1 | import { Dispatch } from 'redux' 2 | import { transferNFTRequest, TransferNFTRequestAction } from '../../modules/nft/actions' 3 | 4 | export type Props = { 5 | onTransfer: typeof transferNFTRequest 6 | isTransferring: boolean 7 | } 8 | 9 | export type MapStateProps = Pick 10 | export type MapDispatchProps = Pick 11 | export type MapDispatch = Dispatch 12 | -------------------------------------------------------------------------------- /webapp/src/components/TransferPage/index.ts: -------------------------------------------------------------------------------- 1 | import TransferPage from './TransferPage.container' 2 | export { TransferPage } 3 | -------------------------------------------------------------------------------- /webapp/src/components/Vendor/NFTFilters/SelectFilter/SelectFilter.types.ts: -------------------------------------------------------------------------------- 1 | export type Props = { 2 | name: string 3 | value: string 4 | clearable?: boolean 5 | options: Option[] 6 | disabled?: boolean 7 | placeholder?: string 8 | className?: string 9 | fetchOptions?: (search: string) => Promise 10 | fetchOptionFromValue?: (value: string) => Promise