├── .eslintignore
├── .eslintrc.json
├── .gitignore
├── .gitlab-ci.yml
├── README.md
├── package.json
├── public
├── assets
│ └── logos
│ │ ├── logo.gif
│ │ ├── logo_192x192.png
│ │ ├── logo_512x512.png
│ │ └── og_image.png
├── favicon.ico
├── index.html
├── manifest.json
└── robots.txt
├── scripts
├── dev_deploy.sh
├── frontier_deploy.sh
├── prod_deploy.sh
└── staging_deploy.sh
├── src
├── App.js
├── Router.js
├── actions
│ ├── account
│ │ ├── BCDetails.js
│ │ ├── IBCTokens.js
│ │ ├── index.js
│ │ └── wallet.js
│ ├── activity.js
│ ├── auctions
│ │ ├── filters.js
│ │ └── index.js
│ ├── campaign.js
│ ├── collections
│ │ ├── auctionFilters.js
│ │ ├── filters.js
│ │ └── index.js
│ ├── explore.js
│ ├── faucet.js
│ ├── filters.js
│ ├── home.js
│ ├── marketplace.js
│ ├── myAccount.js
│ ├── navbar.js
│ └── snackbar.js
├── app.css
├── assets
│ ├── apps
│ │ ├── insync.svg
│ │ ├── studio.svg
│ │ └── tv.svg
│ ├── arrow-right-white.svg
│ ├── auction
│ │ ├── comingSoon.svg
│ │ └── live.svg
│ ├── calendar.png
│ ├── collections
│ │ ├── failed.svg
│ │ ├── success.svg
│ │ └── thumbnail.svg
│ ├── copy-right.svg
│ ├── copy.svg
│ ├── diamond.svg
│ ├── download.svg
│ ├── dummy
│ │ └── CryptoKitty.jpg
│ ├── error.svg
│ ├── explore
│ │ ├── Vector.svg
│ │ ├── expand more.svg
│ │ ├── expand.svg
│ │ ├── external-link.svg
│ │ ├── filter.svg
│ │ ├── grid.svg
│ │ ├── more.svg
│ │ ├── success.svg
│ │ └── transferability.svg
│ ├── failed.svg
│ ├── feeGrant
│ │ ├── feeGrant-bg.png
│ │ └── gas-station.svg
│ ├── home.svg
│ ├── icons.svg
│ ├── info.svg
│ ├── logo.svg
│ ├── my-account
│ │ ├── calendar.svg
│ │ ├── copy.svg
│ │ └── share.svg
│ ├── navbar
│ │ └── wallet.svg
│ ├── refresh.svg
│ ├── right-arrow.svg
│ ├── share-link.svg
│ ├── share.svg
│ ├── social
│ │ ├── discord.svg
│ │ ├── github.svg
│ │ ├── telegram.svg
│ │ ├── twitter.svg
│ │ ├── website.svg
│ │ └── youtube.svg
│ ├── success.svg
│ ├── success_gradient.svg
│ ├── success_image.png
│ ├── thumbnail.svg
│ ├── tokens
│ │ ├── KI.svg
│ │ ├── M-Faucet Congrats.png
│ │ ├── akash.svg
│ │ ├── atom.svg
│ │ ├── chihuahua.svg
│ │ ├── crypto.com.svg
│ │ ├── dvpn.svg
│ │ ├── flix.svg
│ │ ├── gravityBridge.svg
│ │ ├── juno.svg
│ │ ├── like.svg
│ │ ├── osmosis.svg
│ │ ├── sifchain.svg
│ │ ├── spay.svg
│ │ ├── stargaze.png
│ │ └── terra.svg
│ ├── top_right_arrow.svg
│ ├── top_right_first.svg
│ ├── wallets
│ │ ├── keplr.png
│ │ └── walletConnect.png
│ └── warning.png
├── components
│ ├── Accordions
│ │ ├── index.css
│ │ └── index.js
│ ├── AutoCompleteTextField
│ │ ├── index.css
│ │ └── index.js
│ ├── CircularProgress
│ │ ├── index.css
│ │ └── index.js
│ ├── CopyButton
│ │ ├── TextButton.js
│ │ ├── index.css
│ │ └── index.js
│ ├── DataTable
│ │ ├── index.css
│ │ └── index.js
│ ├── DotsLoading
│ │ ├── index.css
│ │ └── index.js
│ ├── Icon.js
│ ├── ImageOnLoad
│ │ ├── BackgroundImage.js
│ │ ├── VideoOnLoad.js
│ │ ├── index.css
│ │ └── index.js
│ ├── NetworkImages
│ │ ├── ImagesOptions.js
│ │ ├── SvgImages.js
│ │ └── index.js
│ ├── NoData
│ │ ├── ComingSoon.js
│ │ ├── index.css
│ │ └── index.js
│ ├── Player
│ │ ├── Controls
│ │ │ ├── BackButton.js
│ │ │ ├── ForwardButton.js
│ │ │ ├── PlayButton.js
│ │ │ └── VolumeButton.js
│ │ ├── index.css
│ │ └── index.js
│ ├── QRModal
│ │ ├── index.tsx
│ │ └── modal.tsx
│ ├── SelectField
│ │ ├── TokenSelectField.js
│ │ ├── index.css
│ │ └── index.js
│ ├── SkeletonLoader
│ │ ├── Activity
│ │ │ ├── index.css
│ │ │ └── index.js
│ │ ├── CollectionInfo
│ │ │ ├── index.css
│ │ │ └── index.js
│ │ ├── CollectionSkeletonLoader.js
│ │ ├── CollectionTable
│ │ │ ├── Image.js
│ │ │ └── Text.js
│ │ ├── MyAccount
│ │ │ ├── index.css
│ │ │ └── index.js
│ │ ├── NFTCard
│ │ │ ├── index.css
│ │ │ └── index.js
│ │ ├── ProfileSkeletonLoader.js
│ │ ├── SingleAsset
│ │ │ ├── CardSkeletonLoader.js
│ │ │ ├── ImageSkeletonLoader.js
│ │ │ ├── MoreInfoSkeletonLoader.js
│ │ │ └── index.css
│ │ ├── index.css
│ │ └── index.js
│ ├── Snackbar
│ │ ├── index.css
│ │ └── index.js
│ ├── Stepper
│ │ ├── index.css
│ │ └── index.js
│ └── TextField
│ │ ├── index.css
│ │ └── index.js
├── config.js
├── constants
│ ├── IBCTokens.js
│ ├── account.js
│ ├── activity.js
│ ├── auctions.js
│ ├── campaign.js
│ ├── collections.js
│ ├── explore.js
│ ├── faucet.js
│ ├── filters.js
│ ├── home.js
│ ├── marketplace.js
│ ├── myAccount.js
│ ├── navbar.js
│ ├── restURL.js
│ ├── seo.js
│ ├── snackbar.js
│ ├── url.js
│ └── wallet.js
├── containers
│ ├── Collections
│ │ ├── List.js
│ │ ├── SearchTextField.js
│ │ ├── Table.js
│ │ ├── index.css
│ │ └── index.js
│ ├── Home
│ │ ├── Collections.js
│ │ ├── Launchpad.js
│ │ ├── RecentlyListed.js
│ │ ├── index.css
│ │ └── index.js
│ ├── MarketPlace
│ │ ├── ActiveCard
│ │ │ ├── DeList
│ │ │ │ ├── DeListDialog.js
│ │ │ │ ├── NFTInfo.js
│ │ │ │ ├── index.css
│ │ │ │ └── index.js
│ │ │ ├── MoreInfo
│ │ │ │ ├── Activity.js
│ │ │ │ ├── BidHistory.js
│ │ │ │ ├── Info.js
│ │ │ │ ├── Listings.js
│ │ │ │ ├── Offers.js
│ │ │ │ ├── index.css
│ │ │ │ └── index.js
│ │ │ ├── PlaceBid
│ │ │ │ ├── Counter.js
│ │ │ │ ├── PlaceBidButton.js
│ │ │ │ ├── PlaceBidDialog
│ │ │ │ │ ├── PlaceBidButton.js
│ │ │ │ │ ├── index.css
│ │ │ │ │ └── index.js
│ │ │ │ ├── index.css
│ │ │ │ └── index.js
│ │ │ ├── PurchaseCard
│ │ │ │ ├── BuyNFTButton.js
│ │ │ │ ├── BuyNFTDialogResponse
│ │ │ │ │ ├── Info.js
│ │ │ │ │ ├── index.css
│ │ │ │ │ └── index.js
│ │ │ │ ├── PurchaseTab.js
│ │ │ │ ├── ValidityTab.js
│ │ │ │ ├── index.css
│ │ │ │ └── index.js
│ │ │ ├── TransferSell
│ │ │ │ ├── ListDialog
│ │ │ │ │ ├── ChoosePrice
│ │ │ │ │ │ ├── PriceTextField.js
│ │ │ │ │ │ ├── SelectTokenSelectField.js
│ │ │ │ │ │ ├── index.css
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── ConfirmListingDialog
│ │ │ │ │ │ ├── index.css
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── Info.js
│ │ │ │ │ ├── ListingTabs.js
│ │ │ │ │ ├── SplitInfo.js
│ │ │ │ │ ├── SplitInfoSwitch.js
│ │ │ │ │ ├── TimedAuction
│ │ │ │ │ │ ├── EndDateTextField.js
│ │ │ │ │ │ ├── MinBidPrice
│ │ │ │ │ │ │ ├── BidPercentageTextField.js
│ │ │ │ │ │ │ ├── index.css
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ ├── StartDateTextField.js
│ │ │ │ │ │ ├── WhiteListSwitch.js
│ │ │ │ │ │ └── WhiteListTags.js
│ │ │ │ │ ├── TotalSale.js
│ │ │ │ │ ├── index.css
│ │ │ │ │ └── index.js
│ │ │ │ ├── ReciepentAddressTextField.js
│ │ │ │ ├── TransferDialog.js
│ │ │ │ ├── index.css
│ │ │ │ └── index.js
│ │ │ ├── index.css
│ │ │ └── index.js
│ │ ├── Auctions
│ │ │ ├── Card.js
│ │ │ ├── EndsInCounter.js
│ │ │ ├── Filters
│ │ │ │ ├── AuctionTypes.js
│ │ │ │ ├── OnSaleIn.js
│ │ │ │ ├── PriceRange.js
│ │ │ │ └── index.js
│ │ │ ├── List.js
│ │ │ ├── LiveInCounter.js
│ │ │ ├── SearchTextField.js
│ │ │ ├── SortByPopover.js
│ │ │ └── index.css
│ │ ├── BurnDialog
│ │ │ ├── Burn.js
│ │ │ ├── BurnIDTextField.js
│ │ │ ├── index.css
│ │ │ └── index.js
│ │ ├── CollectNowList.js
│ │ ├── Filters
│ │ │ ├── Chains.js
│ │ │ ├── Collections.js
│ │ │ ├── Genre.js
│ │ │ ├── OnSaleIn.js
│ │ │ ├── PriceRange.js
│ │ │ ├── Status.js
│ │ │ ├── Types.js
│ │ │ ├── index.css
│ │ │ └── index.js
│ │ ├── Launchpad
│ │ │ ├── SearchTextField.js
│ │ │ └── index.js
│ │ ├── MenuPopover
│ │ │ ├── index.css
│ │ │ └── index.js
│ │ ├── SearchTextField.js
│ │ ├── SortByPopover.js
│ │ ├── Tabs
│ │ │ ├── index.css
│ │ │ └── index.js
│ │ ├── index.css
│ │ └── index.js
│ ├── MyAccount
│ │ ├── Activity
│ │ │ ├── index.css
│ │ │ └── index.js
│ │ ├── IBCTokens
│ │ │ ├── AmountValueTextField.js
│ │ │ ├── DepositeDialog.js
│ │ │ ├── Table.js
│ │ │ ├── WithDrawDialog.js
│ │ │ ├── index.css
│ │ │ └── index.js
│ │ ├── Owned
│ │ │ ├── CollectionList.js
│ │ │ ├── ListingPage.js
│ │ │ └── NFTsList.js
│ │ ├── index.css
│ │ └── index.js
│ ├── NavBar
│ │ ├── AppsPopover.js
│ │ ├── ConnectButton.js
│ │ ├── ConnectDialog
│ │ │ ├── KeplrButton.js
│ │ │ ├── WalletConnectButton.js
│ │ │ ├── index.css
│ │ │ └── index.js
│ │ ├── ExpansionButton.js
│ │ ├── ProfilePopover.js
│ │ ├── SidePanel
│ │ │ ├── Collections.js
│ │ │ ├── FaucetDialog
│ │ │ │ ├── index.css
│ │ │ │ └── index.js
│ │ │ ├── FeeGrant
│ │ │ │ ├── index.css
│ │ │ │ └── index.js
│ │ │ ├── IBCTokens.js
│ │ │ ├── NFTs.js
│ │ │ ├── TotalValueTraded.js
│ │ │ ├── index.css
│ │ │ └── index.js
│ │ ├── Tabs.js
│ │ ├── index.css
│ │ └── index.js
│ ├── SingleAsset
│ │ ├── Breadcrumb
│ │ │ ├── index.css
│ │ │ └── index.js
│ │ ├── Card
│ │ │ ├── index.css
│ │ │ └── index.js
│ │ ├── Controls.js
│ │ ├── VideoPlayer.js
│ │ ├── index.css
│ │ └── index.js
│ ├── SingleCollection
│ │ ├── Activity
│ │ │ ├── index.css
│ │ │ └── index.js
│ │ ├── ActivityTable.js
│ │ ├── Auctions
│ │ │ ├── Filters
│ │ │ │ ├── AuctionTypes.js
│ │ │ │ ├── OnSaleIn.js
│ │ │ │ ├── PriceRange.js
│ │ │ │ └── index.js
│ │ │ ├── Search.js
│ │ │ ├── SortByPopover.js
│ │ │ └── index.js
│ │ ├── Filters
│ │ │ ├── OnSaleIn.js
│ │ │ ├── PriceRange.js
│ │ │ └── index.js
│ │ ├── JsonSchemaDialog
│ │ │ ├── index.css
│ │ │ └── index.js
│ │ ├── List.js
│ │ ├── ListingPage.js
│ │ ├── MyNFTs.js
│ │ ├── SearchListedTextField.js
│ │ ├── SearchNonListedTextField.js
│ │ ├── SortByPopover.js
│ │ ├── index.css
│ │ └── index.js
│ └── Snackbar.js
├── index.css
├── index.js
├── react-app-env.d.ts
├── reducers
│ ├── account
│ │ ├── BCDetails.js
│ │ ├── IBCTokens.js
│ │ ├── index.js
│ │ └── wallet.js
│ ├── activity.js
│ ├── auctions
│ │ ├── filters.js
│ │ └── index.js
│ ├── campaign.js
│ ├── collection
│ │ ├── filters.js
│ │ └── index.js
│ ├── explore.js
│ ├── faucet.js
│ ├── filters.js
│ ├── home.js
│ ├── index.js
│ ├── language.js
│ ├── marketplace.js
│ ├── myAccount.js
│ ├── navbar.js
│ └── snackbar.js
├── registry
│ ├── index.js
│ └── omniflix_custom_ts_types
│ │ ├── cosmos
│ │ └── base
│ │ │ ├── query
│ │ │ └── v1beta1
│ │ │ │ └── pagination.ts
│ │ │ └── v1beta1
│ │ │ └── coin.ts
│ │ ├── gogoproto
│ │ └── gogo.ts
│ │ ├── google
│ │ ├── api
│ │ │ ├── annotations.ts
│ │ │ └── http.ts
│ │ └── protobuf
│ │ │ ├── descriptor.ts
│ │ │ ├── duration.ts
│ │ │ └── timestamp.ts
│ │ ├── marketplace
│ │ └── v1beta1
│ │ │ ├── auction.ts
│ │ │ ├── events.ts
│ │ │ ├── genesis.ts
│ │ │ ├── listing.ts
│ │ │ ├── params.ts
│ │ │ ├── query.ts
│ │ │ └── tx.ts
│ │ └── onft
│ │ └── v1beta1
│ │ ├── events.ts
│ │ ├── genesis.ts
│ │ ├── onft.ts
│ │ ├── query.ts
│ │ └── tx.ts
├── serviceWorker.js
└── utils
│ ├── address.js
│ ├── arrays.js
│ ├── defaultOptions.js
│ ├── filters.js
│ ├── numbers.js
│ ├── price.js
│ ├── strings.js
│ └── variables.js
└── tsconfig.json
/.eslintignore:
--------------------------------------------------------------------------------
1 | /build/
2 |
--------------------------------------------------------------------------------
/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "env": {
3 | "browser": true,
4 | "es6": true
5 | },
6 | "extends": [
7 | "standard",
8 | "eslint:recommended",
9 | "plugin:react/recommended"
10 | ],
11 | "globals": {
12 | "Atomics": "readonly",
13 | "SharedArrayBuffer": "readonly"
14 | },
15 | "parserOptions": {
16 | "ecmaFeatures": {
17 | "jsx": true
18 | },
19 | "ecmaVersion": 2020,
20 | "sourceType": "module"
21 | },
22 | "plugins": [
23 | "react"
24 | ],
25 | "settings": {
26 | "react": {
27 | "version": "detect"
28 | }
29 | },
30 | "rules": {
31 | "indent": [
32 | 2,
33 | 4
34 | ],
35 | "arrow-parens": [
36 | 2,
37 | "always"
38 | ],
39 | "semi": [
40 | 2,
41 | "always"
42 | ],
43 | "comma-dangle": [
44 | 2,
45 | "always-multiline"
46 | ],
47 | "jsx-quotes": [
48 | 2
49 | ],
50 | "dot-notation": [
51 | 2,
52 | {
53 | "allowPattern": "^[0-9A-Za-z]+(_[0-9A-Za-z]+)+$"
54 | }
55 | ],
56 | "curly": [
57 | 2,
58 | "all"
59 | ],
60 | "react/jsx-first-prop-new-line": [
61 | 2,
62 | "multiline-multiprop"
63 | ],
64 | "react/jsx-indent-props": [
65 | 2,
66 | "first"
67 | ],
68 | "react/sort-prop-types": [
69 | 2,
70 | {
71 | "callbacksLast": true,
72 | "requiredFirst": true
73 | }
74 | ],
75 | "react/jsx-sort-props": [
76 | 2,
77 | {
78 | "callbacksLast": true,
79 | "reservedFirst": true,
80 | "shorthandFirst": true
81 | }
82 | ]
83 | }
84 | }
85 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # dependencies
2 | node_modules
3 |
4 | .idea
5 | # testing
6 | /coverage
7 |
8 | # production
9 | /build
10 | /logs
11 |
12 | # misc
13 | .DS_Store
14 |
15 | npm-debug.log*
16 | yarn-debug.log*
17 | yarn-error.log*
18 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Nucleus
2 |
3 | # Install dependencies
4 |
5 | yarn install or npm install
6 |
7 | # start app
8 |
9 | yarn start or npm start
10 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "nucleus",
3 | "version": "0.0.1",
4 | "main": "index.js",
5 | "repository": "git@gitlab.ctlabs.in:omniflix/nucleus/front_end.git",
6 | "license": "MIT",
7 | "private": true,
8 | "dependencies": {
9 | "@cosmjs/amino": "^0.26.0",
10 | "@cosmjs/encoding": "^0.27.1",
11 | "@cosmjs/proto-signing": "^0.26.5",
12 | "@cosmjs/stargate": "^0.26.0",
13 | "@emotion/react": "^11.4.1",
14 | "@emotion/styled": "^11.3.0",
15 | "@material-ui/core": "^4.12.3",
16 | "@material-ui/icons": "^4.11.2",
17 | "@material-ui/lab": "^4.0.0-alpha.61",
18 | "@mui/icons-material": "^5.0.3",
19 | "@mui/lab": "^5.0.0-alpha.90",
20 | "@mui/material": "^5.0.3",
21 | "@mui/styles": "^5.0.1",
22 | "@mui/x-date-pickers": "^5.0.0-beta.1",
23 | "@walletconnect/client": "^1.8.0",
24 | "@walletconnect/utils": "^1.8.0",
25 | "axios": "^0.21.4",
26 | "canvas-confetti": "^1.5.1",
27 | "classnames": "^2.3.1",
28 | "cosmjs-types": "^0.4.1",
29 | "date-fns": "^2.28.0",
30 | "file-saver": "^2.0.5",
31 | "history": "^5.0.0",
32 | "long": "^5.2.0",
33 | "moment": "^2.29.1",
34 | "mui-datatables": "^3.7.8",
35 | "prop-types": "^15.7.2",
36 | "qrcode.react": "^3.1.0",
37 | "react": "^16.12.0",
38 | "react-dom": "^16.13.1",
39 | "react-helmet": "^6.1.0",
40 | "react-otp-input": "^2.4.0",
41 | "react-redux": "^7.2.0",
42 | "react-router": "^5.2.0",
43 | "react-router-dom": "^5.2.0",
44 | "react-scripts": "3.4.0",
45 | "react-select": "^5.2.1",
46 | "redux": "^4.0.5",
47 | "redux-devtools-extension": "^2.13.8",
48 | "redux-thunk": "^2.3.0",
49 | "serve": "^13.0.2",
50 | "symbol-observable": "^4.0.0",
51 | "typescript": "^4.5.5",
52 | "video.js": "^7.17.0"
53 | },
54 | "scripts": {
55 | "start": "react-scripts start",
56 | "build": "react-scripts build",
57 | "test": "react-scripts test",
58 | "eject": "react-scripts eject"
59 | },
60 | "devDependencies": {
61 | "env-cmd": "^10.1.0",
62 | "eslint": "^6.8.0",
63 | "eslint-config-standard": "^14.1.0",
64 | "eslint-plugin-import": "^2.20.1",
65 | "eslint-plugin-node": "^11.0.0",
66 | "eslint-plugin-promise": "^4.2.1",
67 | "eslint-plugin-react": "^7.18.3",
68 | "eslint-plugin-standard": "^4.0.1"
69 | },
70 | "browserslist": {
71 | "production": [
72 | ">0.2%",
73 | "not dead",
74 | "not op_mini all"
75 | ],
76 | "development": [
77 | "last 1 chrome version",
78 | "last 1 firefox version",
79 | "last 1 safari version"
80 | ]
81 | }
82 | }
83 |
--------------------------------------------------------------------------------
/public/assets/logos/logo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Crypto27dev/omniflix_nft_market/c5bb682d3f596179a4ba7089453e3af39e56c179/public/assets/logos/logo.gif
--------------------------------------------------------------------------------
/public/assets/logos/logo_192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Crypto27dev/omniflix_nft_market/c5bb682d3f596179a4ba7089453e3af39e56c179/public/assets/logos/logo_192x192.png
--------------------------------------------------------------------------------
/public/assets/logos/logo_512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Crypto27dev/omniflix_nft_market/c5bb682d3f596179a4ba7089453e3af39e56c179/public/assets/logos/logo_512x512.png
--------------------------------------------------------------------------------
/public/assets/logos/og_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Crypto27dev/omniflix_nft_market/c5bb682d3f596179a4ba7089453e3af39e56c179/public/assets/logos/og_image.png
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Crypto27dev/omniflix_nft_market/c5bb682d3f596179a4ba7089453e3af39e56c179/public/favicon.ico
--------------------------------------------------------------------------------
/public/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "short_name": "OmniFlix",
3 | "name": "OmniFlix Network",
4 | "icons": [
5 | {
6 | "src": "favicon.ico",
7 | "sizes": "64x64 32x32 24x24 16x16",
8 | "type": "image/x-icon"
9 | },
10 | {
11 | "src": "assets/logos/logo_192x192.png",
12 | "type": "image/png",
13 | "sizes": "192x192"
14 | },
15 | {
16 | "src": "assets/logos/logo_512x512.png",
17 | "type": "image/png",
18 | "sizes": "512x512"
19 | }
20 | ],
21 | "start_url": ".",
22 | "display": "standalone",
23 | "theme_color": "#000000",
24 | "background_color": "#191D21"
25 | }
26 |
--------------------------------------------------------------------------------
/public/robots.txt:
--------------------------------------------------------------------------------
1 | # https://www.robotstxt.org/robotstxt.html
2 | User-agent: *
3 |
--------------------------------------------------------------------------------
/scripts/dev_deploy.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | ssh-keyscan gitlab.ctlabs.in >>"${HOME}"/.ssh/known_hosts &&
4 | known_hosts=$(sort <"${HOME}"/.ssh/known_hosts | uniq) &&
5 | echo "${known_hosts}" >"${HOME}"/.ssh/known_hosts
6 |
7 | PROJECT_DIR=${HOME}/omniflix/nucleus/front_end
8 | if [[ ! -d ${PROJECT_DIR} ]]; then
9 | cd "${HOME}" &&
10 | git clone git@gitlab.ctlabs.in:omniflix/nucleus/front_end.git
11 | fi
12 |
13 | cd "${PROJECT_DIR}" &&
14 | git stash &&
15 | git checkout development &&
16 | git pull origin development &&
17 | yarn &&
18 | yarn build
19 |
--------------------------------------------------------------------------------
/scripts/frontier_deploy.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | ssh-keyscan gitlab.ctlabs.in >>"${HOME}"/.ssh/known_hosts &&
4 | known_hosts=$(sort <"${HOME}"/.ssh/known_hosts | uniq) &&
5 | echo "${known_hosts}" >"${HOME}"/.ssh/known_hosts
6 |
7 | PROJECT_DIR=${HOME}/omniflix/nucleus-frontier/front_end
8 | if [[ ! -d ${PROJECT_DIR} ]]; then
9 | cd "${HOME}" &&
10 | git clone git@gitlab.ctlabs.in:omniflix/nucleus-frontier/front_end.git
11 | fi
12 |
13 | cd "${PROJECT_DIR}" &&
14 | git stash &&
15 | git checkout frontier &&
16 | git pull origin frontier &&
17 | yarn &&
18 | yarn build &&
19 | mkdir -p /var/www/html/ &&
20 | sudo rm -rf /var/www/html/frontier.omniflix.market/ &&
21 | sudo cp -r "${PROJECT_DIR}"/build/ /var/www/html/frontier.omniflix.market/
22 |
23 |
--------------------------------------------------------------------------------
/scripts/prod_deploy.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | ssh-keyscan gitlab.ctlabs.in >>"${HOME}"/.ssh/known_hosts &&
4 | known_hosts=$(sort <"${HOME}"/.ssh/known_hosts | uniq) &&
5 | echo "${known_hosts}" >"${HOME}"/.ssh/known_hosts
6 |
7 | PROJECT_DIR=${HOME}/omniflix/nucleus/front_end
8 | if [[ ! -d ${PROJECT_DIR} ]]; then
9 | cd "${HOME}" &&
10 | git clone git@gitlab.ctlabs.in:omniflix/nucleus/front_end.git
11 | fi
12 |
13 | cd "${PROJECT_DIR}" &&
14 | git stash &&
15 | git checkout master &&
16 | git pull origin master &&
17 | yarn &&
18 | yarn build &&
19 | mkdir -p /var/www/html/ &&
20 | sudo rm -rf /var/www/html/omniflix.market/ &&
21 | sudo cp -r "${PROJECT_DIR}"/build/ /var/www/html/omniflix.market/
22 |
23 |
--------------------------------------------------------------------------------
/scripts/staging_deploy.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | ssh-keyscan gitlab.ctlabs.in >>"${HOME}"/.ssh/known_hosts &&
4 | known_hosts=$(sort <"${HOME}"/.ssh/known_hosts | uniq) &&
5 | echo "${known_hosts}" >"${HOME}"/.ssh/known_hosts
6 |
7 | PROJECT_DIR=${HOME}/omniflix/nucleus/front_end
8 | if [[ ! -d ${PROJECT_DIR} ]]; then
9 | cd "${HOME}" &&
10 | git clone git@gitlab.ctlabs.in:omniflix/nucleus/front_end.git
11 | fi
12 |
13 | cd "${PROJECT_DIR}" &&
14 | git stash &&
15 | git checkout staging &&
16 | git pull origin staging &&
17 | yarn &&
18 | yarn build
19 |
--------------------------------------------------------------------------------
/src/App.js:
--------------------------------------------------------------------------------
1 | import React, { useEffect } from 'react';
2 | import './app.css';
3 | import Router from './Router';
4 | import Snackbar from './containers/Snackbar';
5 |
6 | const App = () => {
7 | useEffect(() => {
8 | const element = document.getElementById('loader');
9 | element.remove();
10 | }, []);
11 |
12 | return (
13 |
14 |
15 |
16 |
17 | );
18 | };
19 |
20 | export default App;
21 |
--------------------------------------------------------------------------------
/src/Router.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Route, Switch } from 'react-router-dom';
3 | import NavBar from './containers/NavBar';
4 | import MarketPlace from './containers/MarketPlace';
5 | import Collections from './containers/Collections';
6 | import Home from './containers/Home';
7 | import SingleAsset from './containers/SingleAsset';
8 | import SingleCollection from './containers/SingleCollection';
9 | import MyAccount from './containers/MyAccount';
10 |
11 | const routes = [{
12 | path: '/home',
13 | component: Home,
14 | }, {
15 | path: '/nfts',
16 | component: MarketPlace,
17 | }, {
18 | path: '/collections',
19 | component: Collections,
20 | }, {
21 | path: '/account/:address/:tab',
22 | component: MyAccount,
23 | }, {
24 | path: '/account/:address',
25 | component: MyAccount,
26 | }, {
27 | path: '/collection/:id',
28 | component: SingleCollection,
29 | }, {
30 | path: '/nft/:nftID',
31 | component: SingleAsset,
32 | }];
33 |
34 | const Router = () => {
35 | return (
36 |
37 |
38 |
39 |
40 | {routes.map((route) =>
41 | ,
46 | )}
47 |
51 |
52 |
53 |
54 | );
55 | };
56 |
57 | export default Router;
58 |
--------------------------------------------------------------------------------
/src/actions/campaign.js:
--------------------------------------------------------------------------------
1 | import {
2 | FEE_GRANT_ALLOWANCE_ERROR,
3 | FEE_GRANT_ALLOWANCE_IN_PROGRESS,
4 | FEE_GRANT_ALLOWANCE_SUCCESS,
5 | } from '../constants/campaign';
6 | import { FEE_GRANT_ALLOWANCE_URL } from '../constants/url';
7 | import Axios from 'axios';
8 |
9 | const feeGrantAllowanceInProgress = () => {
10 | return {
11 | type: FEE_GRANT_ALLOWANCE_IN_PROGRESS,
12 | };
13 | };
14 |
15 | const feeGrantAllowanceSuccess = (value, message) => {
16 | return {
17 | type: FEE_GRANT_ALLOWANCE_SUCCESS,
18 | value,
19 | message,
20 | variant: 'success',
21 | };
22 | };
23 |
24 | const feeGrantAllowanceError = (message) => {
25 | return {
26 | type: FEE_GRANT_ALLOWANCE_ERROR,
27 | message,
28 | variant: 'error',
29 | };
30 | };
31 |
32 | export const feeGrantAllowanceClaim = (cb) => (dispatch) => {
33 | dispatch(feeGrantAllowanceInProgress());
34 |
35 | Axios.get(FEE_GRANT_ALLOWANCE_URL, {
36 | headers: {
37 | Accept: 'application/json, text/plain, */*',
38 | Authorization: 'Bearer ' + localStorage.getItem('acToken_of_nucleus'),
39 | },
40 | })
41 | .then((res) => {
42 | dispatch(feeGrantAllowanceSuccess(res.data, 'Success'));
43 | cb(res.data);
44 | })
45 | .catch((error) => {
46 | dispatch(feeGrantAllowanceError(
47 | error.response &&
48 | error.response.data &&
49 | error.response.data.message
50 | ? error.response.data.message
51 | : 'Failed!',
52 | ));
53 | cb(null);
54 | });
55 | };
56 |
--------------------------------------------------------------------------------
/src/actions/collections/auctionFilters.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Crypto27dev/omniflix_nft_market/c5bb682d3f596179a4ba7089453e3af39e56c179/src/actions/collections/auctionFilters.js
--------------------------------------------------------------------------------
/src/actions/collections/filters.js:
--------------------------------------------------------------------------------
1 | import {
2 | COLLECTION_FILTERS_HIDE,
3 | COLLECTION_FILTERS_SHOW,
4 | COLLECTION_ON_SALE_IN_SEARCH_SET,
5 | COLLECTION_ON_SALE_IN_SET,
6 | COLLECTION_PRICE_RANGE_COIN_SET,
7 | COLLECTION_PRICE_RANGE_SET,
8 | } from '../../constants/collections';
9 |
10 | export const showCollectionFilters = () => {
11 | return {
12 | type: COLLECTION_FILTERS_SHOW,
13 | };
14 | };
15 |
16 | export const hideCollectionFilters = () => {
17 | return {
18 | type: COLLECTION_FILTERS_HIDE,
19 | };
20 | };
21 |
22 | export const setCollectionPriceRangeCoin = (value) => {
23 | return {
24 | type: COLLECTION_PRICE_RANGE_COIN_SET,
25 | value,
26 | };
27 | };
28 |
29 | export const setCollectionPriceRange = (value) => {
30 | return {
31 | type: COLLECTION_PRICE_RANGE_SET,
32 | value,
33 | };
34 | };
35 |
36 | export const setCollectionOnSaleIn = (value) => {
37 | return {
38 | type: COLLECTION_ON_SALE_IN_SET,
39 | value,
40 | };
41 | };
42 |
43 | export const setCollectionOnSaleInSearch = (value) => {
44 | return {
45 | type: COLLECTION_ON_SALE_IN_SEARCH_SET,
46 | value,
47 | };
48 | };
49 |
--------------------------------------------------------------------------------
/src/actions/explore.js:
--------------------------------------------------------------------------------
1 | import { ACTIVE_CARD_HIDE, ACTIVE_CARD_SET } from '../constants/explore';
2 |
3 | export const showActiveCard = (value) => {
4 | return {
5 | type: ACTIVE_CARD_SET,
6 | value,
7 | };
8 | };
9 |
10 | export const hideActiveCard = () => {
11 | return {
12 | type: ACTIVE_CARD_HIDE,
13 | };
14 | };
15 |
--------------------------------------------------------------------------------
/src/actions/navbar.js:
--------------------------------------------------------------------------------
1 | import {
2 | CONNECT_DIALOG_HIDE,
3 | CONNECT_DIALOG_SHOW,
4 | HIDE_SIDE_BAR_SET,
5 | SEARCH_VALUE_SET,
6 | SHOW_SIDE_BAR_SET,
7 | } from '../constants/navbar';
8 |
9 | export const searchFieldSet = (value) => {
10 | return {
11 | type: SEARCH_VALUE_SET,
12 | value,
13 | };
14 | };
15 |
16 | export const showSideBar = () => {
17 | return {
18 | type: SHOW_SIDE_BAR_SET,
19 | };
20 | };
21 |
22 | export const hideSideBar = () => {
23 | return {
24 | type: HIDE_SIDE_BAR_SET,
25 | };
26 | };
27 |
28 | export const showConnectDialog = () => {
29 | return {
30 | type: CONNECT_DIALOG_SHOW,
31 | };
32 | };
33 |
34 | export const hideConnectDialog = () => {
35 | return {
36 | type: CONNECT_DIALOG_HIDE,
37 | };
38 | };
39 |
--------------------------------------------------------------------------------
/src/actions/snackbar.js:
--------------------------------------------------------------------------------
1 | import { MESSAGE_SHOW, SNACKBAR_HIDE } from '../constants/snackbar';
2 |
3 | export const hideSnackbar = () => {
4 | return {
5 | type: SNACKBAR_HIDE,
6 | };
7 | };
8 |
9 | export const showMessage = (message, variant, hash, explorer) => {
10 | return {
11 | type: MESSAGE_SHOW,
12 | message,
13 | variant,
14 | hash,
15 | explorer,
16 | };
17 | };
18 |
--------------------------------------------------------------------------------
/src/assets/arrow-right-white.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/src/assets/auction/live.svg:
--------------------------------------------------------------------------------
1 |
20 |
--------------------------------------------------------------------------------
/src/assets/calendar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Crypto27dev/omniflix_nft_market/c5bb682d3f596179a4ba7089453e3af39e56c179/src/assets/calendar.png
--------------------------------------------------------------------------------
/src/assets/collections/failed.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/src/assets/collections/success.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/src/assets/copy-right.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/assets/copy.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/src/assets/diamond.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/src/assets/download.svg:
--------------------------------------------------------------------------------
1 |
26 |
--------------------------------------------------------------------------------
/src/assets/dummy/CryptoKitty.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Crypto27dev/omniflix_nft_market/c5bb682d3f596179a4ba7089453e3af39e56c179/src/assets/dummy/CryptoKitty.jpg
--------------------------------------------------------------------------------
/src/assets/error.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/src/assets/explore/Vector.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/src/assets/explore/expand more.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/src/assets/explore/expand.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/src/assets/explore/external-link.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/src/assets/explore/filter.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/src/assets/explore/grid.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/src/assets/explore/more.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/src/assets/explore/success.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/src/assets/explore/transferability.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/src/assets/failed.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/src/assets/feeGrant/feeGrant-bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Crypto27dev/omniflix_nft_market/c5bb682d3f596179a4ba7089453e3af39e56c179/src/assets/feeGrant/feeGrant-bg.png
--------------------------------------------------------------------------------
/src/assets/feeGrant/gas-station.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/src/assets/home.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/src/assets/info.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/src/assets/my-account/calendar.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/src/assets/my-account/copy.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/src/assets/my-account/share.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/src/assets/navbar/wallet.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/src/assets/refresh.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/right-arrow.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/share-link.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/src/assets/share.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/src/assets/social/github.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/src/assets/social/telegram.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/src/assets/social/twitter.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/src/assets/social/website.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/src/assets/social/youtube.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/src/assets/success.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/src/assets/success_gradient.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/src/assets/success_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Crypto27dev/omniflix_nft_market/c5bb682d3f596179a4ba7089453e3af39e56c179/src/assets/success_image.png
--------------------------------------------------------------------------------
/src/assets/tokens/KI.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/src/assets/tokens/M-Faucet Congrats.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Crypto27dev/omniflix_nft_market/c5bb682d3f596179a4ba7089453e3af39e56c179/src/assets/tokens/M-Faucet Congrats.png
--------------------------------------------------------------------------------
/src/assets/tokens/akash.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/src/assets/tokens/crypto.com.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/src/assets/tokens/juno.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/src/assets/tokens/spay.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/src/assets/tokens/stargaze.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Crypto27dev/omniflix_nft_market/c5bb682d3f596179a4ba7089453e3af39e56c179/src/assets/tokens/stargaze.png
--------------------------------------------------------------------------------
/src/assets/tokens/terra.svg:
--------------------------------------------------------------------------------
1 |
20 |
--------------------------------------------------------------------------------
/src/assets/wallets/keplr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Crypto27dev/omniflix_nft_market/c5bb682d3f596179a4ba7089453e3af39e56c179/src/assets/wallets/keplr.png
--------------------------------------------------------------------------------
/src/assets/wallets/walletConnect.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Crypto27dev/omniflix_nft_market/c5bb682d3f596179a4ba7089453e3af39e56c179/src/assets/wallets/walletConnect.png
--------------------------------------------------------------------------------
/src/assets/warning.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Crypto27dev/omniflix_nft_market/c5bb682d3f596179a4ba7089453e3af39e56c179/src/assets/warning.png
--------------------------------------------------------------------------------
/src/components/Accordions/index.css:
--------------------------------------------------------------------------------
1 | .accordion {
2 | box-sizing: border-box;
3 | border-radius: 5px;
4 | }
5 |
6 | .accordion .summary {
7 | width: 100%;
8 | padding: 19px 20px;
9 | }
10 |
11 | .accordion .summary p {
12 | font-family: 'Inter', sans-serif;
13 | font-weight: 600;
14 | font-size: 18px;
15 | line-height: 22px;
16 | letter-spacing: 0.005em;
17 | color: #F2F2F2;
18 | }
19 |
20 | .accordion .summary svg {
21 | fill: #F2F2F2;
22 | }
23 |
24 | .accordion .Mui-expanded svg {
25 | fill: url(#paint0_linear);
26 | }
27 |
--------------------------------------------------------------------------------
/src/components/Accordions/index.js:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 | import { styled } from '@mui/material/styles';
3 | import MuiAccordion from '@mui/material/Accordion';
4 | import MuiAccordionSummary from '@mui/material/AccordionSummary';
5 | import MuiAccordionDetails from '@mui/material/AccordionDetails';
6 | import Typography from '@mui/material/Typography';
7 | import * as PropTypes from 'prop-types';
8 | import { ReactComponent as ExpandIcon } from '../../assets/explore/expand.svg';
9 | import ClassNames from 'classnames';
10 | import './index.css';
11 |
12 | const Accordion = styled((props) => (
13 |
14 | ))(({ theme }) => ({
15 | color: '#F2F2F2',
16 | backgroundColor: '#21262b66',
17 | border: '1px solid #2F363D',
18 | '&:before': {
19 | display: 'none',
20 | },
21 | }));
22 |
23 | const AccordionSummary = styled((props) => (
24 | }
26 | {...props}
27 | />
28 | ))(({ theme }) => ({
29 | backgroundColor: 'unset',
30 | padding: '19px 20px',
31 | '& .MuiAccordionSummary-expandIconWrapper': {
32 | transform: 'rotate(180deg)',
33 | },
34 | '& .MuiAccordionSummary-expandIconWrapper.Mui-expanded': {
35 | transform: 'rotate(0deg)',
36 | },
37 | '& .MuiAccordionSummary-content': {
38 | margin: 0,
39 | },
40 | }));
41 |
42 | const AccordionDetails = styled(MuiAccordionDetails)(({ theme }) => ({
43 | padding: '20px',
44 | borderTop: '1px solid #2F363D',
45 | }));
46 |
47 | const Accordions = (props) => {
48 | return (
49 |
52 |
53 | {props.name}
54 |
55 |
56 | {props.children}
57 |
58 |
59 | );
60 | };
61 |
62 | Accordions.propTypes = {
63 | name: PropTypes.string.isRequired,
64 | children: PropTypes.any,
65 | className: PropTypes.string,
66 | };
67 |
68 | export default Accordions;
69 |
--------------------------------------------------------------------------------
/src/components/AutoCompleteTextField/index.css:
--------------------------------------------------------------------------------
1 | .auto_complete div[role='button'] {
2 | background: #3A3A3A;
3 | border-radius: 50px;
4 | font-family: 'Source Sans Pro', sans-serif;
5 | font-weight: 400;
6 | font-size: 14px;
7 | line-height: 18px;
8 | color: #696969;
9 | padding: 5px 10px;
10 | }
11 |
12 | .auto_complete div[role='button'] > span {
13 | padding: unset;
14 | }
15 |
16 | .auto_complete div[role='button'] > svg {
17 | fill: #696969;
18 | margin: 0 0 0 10px;
19 | width: 16px;
20 | }
21 |
22 | .auto_complete.auto_complete_icon div[role='button'] {
23 | background: unset;
24 | border: unset;
25 | }
26 |
27 | .tags_select_field input::placeholder {
28 | opacity: 1;
29 | }
30 |
31 | .auto_complete .delete_icon {
32 | padding: 0;
33 | margin: 0 0 0 5px;
34 | }
35 |
36 | .auto_complete .delete_icon svg {
37 | width: 80%;
38 | }
39 |
--------------------------------------------------------------------------------
/src/components/CircularProgress/index.css:
--------------------------------------------------------------------------------
1 | .circular_progress {
2 | width: 100%;
3 | height: 200px;
4 | display: flex;
5 | align-items: center;
6 | justify-content: center;
7 | }
8 |
9 | .circular_progress.full_screen {
10 | position: fixed;
11 | width: 100%;
12 | height: 100%;
13 | top: 0;
14 | left: 0;
15 | background: #00000070;
16 | z-index: 9;
17 | }
18 |
19 | .circular_progress > div {
20 | color: #3E8EF7;
21 | }
22 |
--------------------------------------------------------------------------------
/src/components/CircularProgress/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { CircularProgress as MaterialCircularProgress } from '@material-ui/core';
3 | import './index.css';
4 | import * as PropTypes from 'prop-types';
5 | import ClassNames from 'classnames';
6 |
7 | const CircularProgress = (props) => {
8 | return (
9 |
10 |
11 |
12 | );
13 | };
14 |
15 | CircularProgress.propTypes = {
16 | className: PropTypes.string,
17 | };
18 |
19 | export default CircularProgress;
20 |
--------------------------------------------------------------------------------
/src/components/CopyButton/TextButton.js:
--------------------------------------------------------------------------------
1 | import { Button, Tooltip } from '@mui/material';
2 | import * as PropTypes from 'prop-types';
3 | import React from 'react';
4 | import './index.css';
5 |
6 | const CopyButton = (props) => {
7 | const [open, setOpen] = React.useState(false);
8 |
9 | const handleClose = () => {
10 | setOpen(false);
11 | };
12 |
13 | const handleCopy = (e) => {
14 | navigator.clipboard.writeText(props.data);
15 |
16 | e.stopPropagation();
17 | setOpen(true);
18 | setTimeout(handleClose, 1000);
19 | };
20 |
21 | return (
22 |
26 |
32 |
33 | );
34 | };
35 |
36 | CopyButton.propTypes = {
37 | data: PropTypes.string.isRequired,
38 | children: PropTypes.any,
39 | };
40 |
41 | export default CopyButton;
42 |
--------------------------------------------------------------------------------
/src/components/CopyButton/index.css:
--------------------------------------------------------------------------------
1 | .ff_studio .copy_button,
2 | .quick_view_data .copy_button {
3 | border: 1px solid #FAC01E;
4 | border-radius: 3px;
5 | font-family: 'Sarabun', sans-serif;
6 | font-size: 16px;
7 | line-height: 154.41%;
8 | color: #FAC01E;
9 | background: transparent;
10 | margin-left: 10px;
11 | }
12 |
13 | .ff_studio .copy_button:hover,
14 | .quick_view_data .copy_button:hover,
15 | .copy_button.copy_icon_button:hover {
16 | background: transparent;
17 | }
18 |
19 | .copy_button.copy_icon_button {
20 | border: unset;
21 | min-width: 30px;
22 | min-height: 30px;
23 | border-radius: 50px;
24 | width: 30px;
25 | height: 30px;
26 | padding: 6px;
27 | color: #ffffff;
28 | background: transparent;
29 | }
30 |
31 | .copy_button.copy_icon_button svg {
32 | width: 20px;
33 | fill: #ffffff;
34 | }
35 |
36 | .copy_info {
37 | display: flex;
38 | align-items: center;
39 | background: #141414;
40 | border-radius: 5px;
41 | padding: 10px 15px;
42 | }
43 |
44 | .copy_info > p {
45 | font-family: 'Exo', sans-serif;
46 | font-weight: 600;
47 | font-size: 18px;
48 | line-height: 24px;
49 | color: #E7E7E7;
50 | white-space: nowrap;
51 | overflow: hidden;
52 | text-overflow: ellipsis;
53 | }
54 |
55 | .copy_info .copy_button {
56 | margin-left: 4px;
57 | }
58 |
59 | .copy_info .copy_button img {
60 | width: 20px;
61 | }
62 |
63 | @media (max-width: 425px) {
64 | .copy_button.copy_icon_button {
65 | min-width: 24px;
66 | min-height: 24px;
67 | width: 24px;
68 | height: 24px;
69 | padding: 4px;
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/src/components/CopyButton/index.js:
--------------------------------------------------------------------------------
1 | import { Button, Tooltip } from '@mui/material';
2 | import * as PropTypes from 'prop-types';
3 | import React from 'react';
4 | import './index.css';
5 | import Icon from '../Icon';
6 |
7 | const CopyButton = (props) => {
8 | const [open, setOpen] = React.useState(false);
9 |
10 | const handleClose = () => {
11 | setOpen(false);
12 | };
13 |
14 | const handleCopy = (e) => {
15 | navigator.clipboard.writeText(props.data);
16 |
17 | e.stopPropagation();
18 | setOpen(true);
19 | setTimeout(handleClose, 1000);
20 | };
21 |
22 | return (
23 |
27 |
35 |
36 | );
37 | };
38 |
39 | CopyButton.propTypes = {
40 | data: PropTypes.string,
41 | icon: PropTypes.any,
42 | };
43 |
44 | export default CopyButton;
45 |
--------------------------------------------------------------------------------
/src/components/DataTable/index.js:
--------------------------------------------------------------------------------
1 | import MUIDataTable from 'mui-datatables';
2 | import * as PropTypes from 'prop-types';
3 | import React from 'react';
4 | import './index.css';
5 |
6 | const DataTable = (props) => {
7 | return (
8 |
13 | );
14 | };
15 |
16 | DataTable.propTypes = {
17 | columns: PropTypes.array.isRequired,
18 | data: PropTypes.array.isRequired,
19 | name: PropTypes.string.isRequired,
20 | options: PropTypes.object.isRequired,
21 | };
22 |
23 | export default DataTable;
24 |
--------------------------------------------------------------------------------
/src/components/DotsLoading/index.css:
--------------------------------------------------------------------------------
1 | .spinner {
2 | width: 100px;
3 | text-align: center;
4 | margin: auto;
5 | display: flex;
6 | align-items: center;
7 | justify-content: center;
8 | }
9 |
10 | .spinner > div {
11 | width: 10px;
12 | margin: 0 2px;
13 | height: 10px;
14 | background-color: #ffffff;
15 | border-radius: 100%;
16 | display: inline-block;
17 | animation: bounce_delay 1.4s infinite ease-in-out both;
18 | }
19 |
20 | .spinner .bounce1 {
21 | animation-delay: -0.32s;
22 | }
23 |
24 | .spinner .bounce2 {
25 | animation-delay: -0.16s;
26 | }
27 |
28 | @keyframes bounce_delay {
29 | 0%, 80%, 100% {
30 | transform: scale(0);
31 | }
32 |
33 | 40% {
34 | transform: scale(1.0);
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/src/components/DotsLoading/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './index.css';
3 |
4 | const DotsLoading = (props) => {
5 | return (
6 |
11 | );
12 | };
13 |
14 | export default DotsLoading;
15 |
--------------------------------------------------------------------------------
/src/components/Icon.js:
--------------------------------------------------------------------------------
1 | import * as PropTypes from 'prop-types';
2 | import React from 'react';
3 | import icons from '../assets/icons.svg';
4 |
5 | const Icon = (props) => {
6 | return (
7 |
12 | );
13 | };
14 |
15 | Icon.propTypes = {
16 | className: PropTypes.string.isRequired,
17 | icon: PropTypes.string.isRequired,
18 | };
19 |
20 | export default Icon;
21 |
--------------------------------------------------------------------------------
/src/components/ImageOnLoad/VideoOnLoad.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import * as PropTypes from 'prop-types';
3 | import ClassNames from 'classnames';
4 | import thumbnail from '../../assets/thumbnail.svg';
5 |
6 | const VideoOnLoad = (props) => {
7 | const [poster, setPoster] = React.useState(null);
8 |
9 | React.useEffect(() => {
10 | setPoster(null);
11 | if (props.preview) {
12 | const image = new Image();
13 | image.onload = () => {
14 | setPoster(props.preview);
15 | };
16 | image.src = props.preview;
17 | }
18 | }, [props.preview]);
19 |
20 | if (poster) {
21 | return (
22 |
28 | );
29 | }
30 |
31 | return (
32 |
38 | );
39 | };
40 |
41 | VideoOnLoad.propTypes = {
42 | className: PropTypes.string,
43 | preview: PropTypes.string,
44 | src: PropTypes.string,
45 | type: PropTypes.string,
46 | };
47 |
48 | export default VideoOnLoad;
49 |
--------------------------------------------------------------------------------
/src/components/ImageOnLoad/index.css:
--------------------------------------------------------------------------------
1 | .dummy_image {
2 | background-size: cover;
3 | }
4 |
--------------------------------------------------------------------------------
/src/components/NetworkImages/ImagesOptions.js:
--------------------------------------------------------------------------------
1 | import { ReactComponent as FlixLogo } from '../../assets/tokens/flix.svg';
2 | import { ReactComponent as DVPNLogo } from '../../assets/tokens/dvpn.svg';
3 | import { ReactComponent as ATOMLogo } from '../../assets/tokens/atom.svg';
4 | import { ReactComponent as JUNOLogo } from '../../assets/tokens/juno.svg';
5 | import { ReactComponent as SPAYLogo } from '../../assets/tokens/spay.svg';
6 | import { ReactComponent as AKTLogo } from '../../assets/tokens/akash.svg';
7 | import { ReactComponent as HUAHUALogo } from '../../assets/tokens/chihuahua.svg';
8 | import { ReactComponent as CROLogo } from '../../assets/tokens/crypto.com.svg';
9 | import { ReactComponent as GRAVITONLogo } from '../../assets/tokens/gravityBridge.svg';
10 | import { ReactComponent as KILogo } from '../../assets/tokens/KI.svg';
11 | import { ReactComponent as LIKELogo } from '../../assets/tokens/like.svg';
12 | import { ReactComponent as OSMOLogo } from '../../assets/tokens/osmosis.svg';
13 | import { ReactComponent as ROWANLogo } from '../../assets/tokens/sifchain.svg';
14 | import starsToken from '../../assets/tokens/stargaze.png';
15 | import { ReactComponent as LUNALogo } from '../../assets/tokens/terra.svg';
16 | import React from 'react';
17 |
18 | export const images = [{
19 | name: 'AKT',
20 | image: ,
21 | }, {
22 | name: 'ATOM',
23 | image: ,
24 | }, {
25 | name: 'ATOM/CH-0',
26 | image: ,
27 | }, {
28 | name: 'BLUE',
29 | image: ,
30 | }, {
31 | name: 'BLUE/CH-3',
32 | image: ,
33 | }, {
34 | name: 'CRO',
35 | image: ,
36 | }, {
37 | name: 'FLIX',
38 | image: ,
39 | }, {
40 | name: 'GRAVITON',
41 | image: ,
42 | }, {
43 | name: 'HUAHUA',
44 | image: ,
45 | }, {
46 | name: 'JUNO',
47 | image: ,
48 | }, {
49 | name: 'JUNOX',
50 | image: ,
51 | }, {
52 | name: 'LIKE',
53 | image: ,
54 | }, {
55 | name: 'OSMO',
56 | image: ,
57 | }, {
58 | name: 'ROWAN',
59 | image: ,
60 | }, {
61 | name: 'SPAY',
62 | image: ,
63 | }, {
64 | name: 'STARS',
65 | image:
,
66 | }, {
67 | name: 'LUNA',
68 | image: ,
69 | }, {
70 | name: 'USD',
71 | image: ,
72 | }, {
73 | name: 'XKI',
74 | image: ,
75 | }];
76 |
--------------------------------------------------------------------------------
/src/components/NetworkImages/SvgImages.js:
--------------------------------------------------------------------------------
1 | import { ReactComponent as FlixLogo } from '../../assets/tokens/flix.svg';
2 | import { ReactComponent as DVPNLogo } from '../../assets/tokens/dvpn.svg';
3 | import { ReactComponent as ATOMLogo } from '../../assets/tokens/atom.svg';
4 | import { ReactComponent as JUNOLogo } from '../../assets/tokens/juno.svg';
5 | import { ReactComponent as SPAYLogo } from '../../assets/tokens/spay.svg';
6 | import { ReactComponent as AKTLogo } from '../../assets/tokens/akash.svg';
7 | import { ReactComponent as HUAHUALogo } from '../../assets/tokens/chihuahua.svg';
8 | import { ReactComponent as CROLogo } from '../../assets/tokens/crypto.com.svg';
9 | import { ReactComponent as GRAVITONLogo } from '../../assets/tokens/gravityBridge.svg';
10 | import { ReactComponent as KILogo } from '../../assets/tokens/KI.svg';
11 | import { ReactComponent as LIKELogo } from '../../assets/tokens/like.svg';
12 | import { ReactComponent as OSMOLogo } from '../../assets/tokens/osmosis.svg';
13 | import { ReactComponent as ROWANLogo } from '../../assets/tokens/sifchain.svg';
14 | import starsToken from '../../assets/tokens/stargaze.png';
15 | import { ReactComponent as LUNALogo } from '../../assets/tokens/terra.svg';
16 | import * as PropTypes from 'prop-types';
17 | import React from 'react';
18 |
19 | const NetworkSvgImages = (props) => {
20 | switch (props.name) {
21 | case 'AKT':
22 | return ;
23 | case 'ATOM':
24 | case 'ATOM/CH-0':
25 | return ;
26 | case 'BLUE':
27 | case 'BLUE/CH-3':
28 | return ;
29 | case 'CRO':
30 | return ;
31 | case 'FLIX':
32 | return ;
33 | case 'GRAVITON':
34 | return ;
35 | case 'HUAHUA':
36 | return ;
37 | case 'JUNO':
38 | case 'JUNOX':
39 | return ;
40 | case 'LIKE':
41 | return ;
42 | case 'OSMO':
43 | return ;
44 | case 'ROWAN':
45 | return ;
46 | case 'SPAY':
47 | return ;
48 | case 'STARS':
49 | return
;
50 | case 'LUNA':
51 | case 'USD':
52 | return ;
53 | case 'XKI':
54 | return ;
55 | default:
56 | break;
57 | }
58 | };
59 |
60 | NetworkSvgImages.propTypes = {
61 | name: PropTypes.string,
62 | };
63 |
64 | export default NetworkSvgImages;
65 |
--------------------------------------------------------------------------------
/src/components/NoData/ComingSoon.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import comingSoonIcon from '../../assets/auction/comingSoon.svg';
3 | import './index.css';
4 |
5 | const ComingSoon = () => {
6 | return (
7 |
8 |

9 |
10 | );
11 | };
12 |
13 | export default ComingSoon;
14 |
--------------------------------------------------------------------------------
/src/components/NoData/index.css:
--------------------------------------------------------------------------------
1 | .no_data {
2 | width: 100%;
3 | height: 200px;
4 | display: flex;
5 | align-items: center;
6 | justify-content: center;
7 | }
8 |
9 | .no_data > img {
10 | width: 200px;
11 | }
12 |
--------------------------------------------------------------------------------
/src/components/NoData/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './index.css';
3 |
4 | const NoData = () => {
5 | return (
6 |
9 | );
10 | };
11 |
12 | export default NoData;
13 |
--------------------------------------------------------------------------------
/src/components/Player/Controls/BackButton.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { IconButton } from '@material-ui/core';
3 | import Icon from '../../../components/Icon';
4 | import * as PropTypes from 'prop-types';
5 |
6 | const BackButton = (props) => {
7 | const handleBack = () => {
8 | props.player.currentTime(props.player.currentTime() - 5);
9 | };
10 |
11 | return (
12 |
13 |
14 |
15 | );
16 | };
17 |
18 | BackButton.propTypes = {
19 | player: PropTypes.object,
20 | };
21 |
22 | export default BackButton;
23 |
--------------------------------------------------------------------------------
/src/components/Player/Controls/ForwardButton.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { IconButton } from '@material-ui/core';
3 | import Icon from '../../../components/Icon';
4 | import * as PropTypes from 'prop-types';
5 |
6 | const ForwardButton = (props) => {
7 | const handleForward = () => {
8 | props.player.currentTime(props.player.currentTime() + 5);
9 | };
10 |
11 | return (
12 |
13 |
14 |
15 | );
16 | };
17 |
18 | ForwardButton.propTypes = {
19 | player: PropTypes.object,
20 | };
21 |
22 | export default ForwardButton;
23 |
--------------------------------------------------------------------------------
/src/components/Player/Controls/PlayButton.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { IconButton } from '@material-ui/core';
3 | import Icon from '../../../components/Icon';
4 | import * as PropTypes from 'prop-types';
5 |
6 | const PlayButton = (props) => {
7 | const handlePlayToggle = () => {
8 | props.player.play();
9 | };
10 |
11 | const handlePauseToggle = () => {
12 | props.player.pause();
13 | };
14 |
15 | return (
16 | <>
17 |
18 |
19 |
20 |
21 |
22 |
23 | >
24 | );
25 | };
26 |
27 | PlayButton.propTypes = {
28 | player: PropTypes.object,
29 | };
30 |
31 | export default PlayButton;
32 |
--------------------------------------------------------------------------------
/src/components/Player/Controls/VolumeButton.js:
--------------------------------------------------------------------------------
1 | import React, { Component } from 'react';
2 | import { Button } from '@material-ui/core';
3 | import Icon from '../../../components/Icon';
4 | import * as PropTypes from 'prop-types';
5 |
6 | class VolumeButton extends Component {
7 | constructor (props) {
8 | super(props);
9 |
10 | this.state = {
11 | mute: !!localStorage.getItem('of_nucleus_muted'),
12 | };
13 |
14 | this.handleVolumeMute = this.handleVolumeMute.bind(this);
15 | this.handleVolumeUnMute = this.handleVolumeUnMute.bind(this);
16 | }
17 |
18 | handleVolumeUnMute () {
19 | this.props.player.muted(false);
20 | this.setState({
21 | mute: false,
22 | });
23 | localStorage.removeItem('of_nucleus_muted');
24 | }
25 |
26 | handleVolumeMute () {
27 | this.props.player.muted(true);
28 | this.setState({
29 | mute: true,
30 | });
31 | localStorage.setItem('of_nucleus_muted', 'true');
32 | }
33 |
34 | render () {
35 | return (
36 | <>
37 | {this.state.mute
38 | ?
43 | : }
48 | >
49 | );
50 | }
51 | }
52 |
53 | VolumeButton.propTypes = {
54 | player: PropTypes.object,
55 | };
56 |
57 | export default VolumeButton;
58 |
--------------------------------------------------------------------------------
/src/components/Player/index.js:
--------------------------------------------------------------------------------
1 | import * as PropTypes from 'prop-types';
2 | import React from 'react';
3 | import './index.css';
4 |
5 | class Player extends React.Component {
6 | componentDidMount () {
7 | this.props.initializePlayer(this.node);
8 | }
9 |
10 | render () {
11 | return (
12 |
13 |
19 | );
20 | }
21 | }
22 |
23 | Player.propTypes = {
24 | initializePlayer: PropTypes.func.isRequired,
25 | children: PropTypes.any,
26 | };
27 |
28 | export default Player;
29 |
--------------------------------------------------------------------------------
/src/components/QRModal/index.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import {Modal} from "./modal";
3 | // @ts-ignore
4 | import ReactDom from "react-dom";
5 |
6 | export class CosmostationWCModal {
7 | open(uri: string, cb: any) {
8 | const wrapper = document.createElement("div");
9 | wrapper.setAttribute("id", "cosmostation-wc-QRModal");
10 | document.body.appendChild(wrapper);
11 |
12 | ReactDom.render(
13 | {
16 | this.close();
17 | cb();
18 | }}
19 | />,
20 | wrapper
21 | );
22 | }
23 |
24 | close() {
25 | const wrapper = document.getElementById("cosmostation-wc-QRModal");
26 | if (wrapper) {
27 | document.body.removeChild(wrapper);
28 | }
29 | }
30 | }
31 |
32 | export default CosmostationWCModal;
33 |
--------------------------------------------------------------------------------
/src/components/SkeletonLoader/Activity/index.css:
--------------------------------------------------------------------------------
1 | .activity_section.activity_skeleton_loader .activity_card .card_section1 > .name {
2 | width: 60%;
3 | }
4 |
5 | .activity_section.activity_skeleton_loader .activity_card .card_section2 {
6 | flex-direction: column;
7 | align-items: flex-start;
8 | width: 20%;
9 | }
10 |
11 | .activity_section.activity_skeleton_loader .card_section3 {
12 | margin-left: 30px;
13 | flex: 1;
14 | }
15 |
--------------------------------------------------------------------------------
/src/components/SkeletonLoader/CollectionInfo/index.css:
--------------------------------------------------------------------------------
1 | .collection_skeleton .text_section {
2 | width: 240px;
3 | }
4 |
5 | .collection_skeleton .items_count {
6 | display: flex;
7 | flex-direction: column;
8 | align-items: center;
9 | margin-top: 20px;
10 | }
11 |
12 | .collection_skeleton .collection_section2 .skeleton_loader {
13 | transform: unset;
14 | }
15 |
16 | .collection_skeleton .total_tokens_traded {
17 | width: 50%;
18 | display: flex;
19 | flex-direction: column;
20 | align-items: center;
21 | }
22 |
--------------------------------------------------------------------------------
/src/components/SkeletonLoader/CollectionSkeletonLoader.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './index.css';
3 | import Skeleton from '@mui/material/Skeleton';
4 |
5 | const CollectionSkeletonLoader = () => {
6 | return (
7 |
8 |
12 |
13 |
18 |
23 |
24 |
25 | );
26 | };
27 |
28 | export default CollectionSkeletonLoader;
29 |
--------------------------------------------------------------------------------
/src/components/SkeletonLoader/CollectionTable/Image.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import '../index.css';
3 | import Skeleton from '@mui/material/Skeleton';
4 |
5 | const ImageSkeletonLoader = () => {
6 | return (
7 |
11 | );
12 | };
13 |
14 | export default ImageSkeletonLoader;
15 |
--------------------------------------------------------------------------------
/src/components/SkeletonLoader/CollectionTable/Text.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import '../index.css';
3 | import Skeleton from '@mui/material/Skeleton';
4 | import * as PropTypes from 'prop-types';
5 |
6 | const TextSkeletonLoader = (props) => {
7 | return (
8 |
13 | );
14 | };
15 |
16 | TextSkeletonLoader.propTypes = {
17 | width: PropTypes.number,
18 | };
19 |
20 | export default TextSkeletonLoader;
21 |
--------------------------------------------------------------------------------
/src/components/SkeletonLoader/MyAccount/index.css:
--------------------------------------------------------------------------------
1 | .my_account_skeleton {
2 | width: 500px;
3 | margin: auto;
4 | display: flex;
5 | flex-direction: column;
6 | align-items: center;
7 | }
8 |
9 | .my_account_skeleton .skeleton_address {
10 | width: 100%;
11 | height: 43px;
12 | transform: unset;
13 | margin-top: 30px;
14 | border-radius: 50px;
15 | margin-bottom: 60px;
16 | }
17 |
--------------------------------------------------------------------------------
/src/components/SkeletonLoader/MyAccount/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import '../index.css';
3 | import './index.css';
4 | import Skeleton from '@mui/material/Skeleton';
5 |
6 | const MyAccountSkeletonLoader = () => {
7 | return (
8 |
9 |
14 |
19 |
20 | );
21 | };
22 |
23 | export default MyAccountSkeletonLoader;
24 |
--------------------------------------------------------------------------------
/src/components/SkeletonLoader/NFTCard/index.css:
--------------------------------------------------------------------------------
1 | .nft_card_skeleton .section1 {
2 | display: flex;
3 | margin-bottom: 10px;
4 | padding: 0;
5 | justify-content: flex-start;
6 | }
7 |
8 | .nft_card_skeleton .section1 .skeleton_loader {
9 | width: 60px;
10 | height: 24px;
11 | margin-right: 5px;
12 | border-radius: 20px;
13 | transform: unset;
14 | }
15 |
16 | .nft_card_skeleton .list_section4 .skeleton_loader {
17 | transform: unset;
18 | }
19 |
--------------------------------------------------------------------------------
/src/components/SkeletonLoader/NFTCard/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import '../index.css';
3 | import './index.css';
4 | import Skeleton from '@mui/material/Skeleton';
5 |
6 | const NFTCardSkeletonLoader = () => {
7 | return (
8 |
9 |
10 |
15 |
21 |
22 |
26 |
40 |
41 |
42 |
47 |
48 |
49 | );
50 | };
51 |
52 | export default NFTCardSkeletonLoader;
53 |
--------------------------------------------------------------------------------
/src/components/SkeletonLoader/ProfileSkeletonLoader.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './index.css';
3 | import Skeleton from '@mui/material/Skeleton';
4 |
5 | const ProfileSkeletonLoader = () => {
6 | return (
7 |
8 |
13 |
14 | );
15 | };
16 |
17 | export default ProfileSkeletonLoader;
18 |
--------------------------------------------------------------------------------
/src/components/SkeletonLoader/SingleAsset/ImageSkeletonLoader.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import '../index.css';
3 | import './index.css';
4 | import Skeleton from '@mui/material/Skeleton';
5 |
6 | const ImageSkeletonLoader = () => {
7 | return (
8 |
12 | );
13 | };
14 |
15 | export default ImageSkeletonLoader;
16 |
--------------------------------------------------------------------------------
/src/components/SkeletonLoader/SingleAsset/MoreInfoSkeletonLoader.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import '../index.css';
3 | import './index.css';
4 | import Skeleton from '@mui/material/Skeleton';
5 |
6 | const MoreInfoSkeletonLoader = () => {
7 | return (
8 |
13 | );
14 | };
15 |
16 | export default MoreInfoSkeletonLoader;
17 |
--------------------------------------------------------------------------------
/src/components/SkeletonLoader/SingleAsset/index.css:
--------------------------------------------------------------------------------
1 | .pdf_section_asset.skeleton_loader {
2 | height: calc(100% - 20px);
3 | margin: 10px;
4 | }
5 |
6 | .card_skeleton .list_section1 {
7 | margin-top: 20px;
8 | margin-bottom: 30px;
9 | }
10 |
11 | .card_skeleton .list_section1 .skeleton_loader {
12 | transform: unset;
13 | padding: 0;
14 | }
15 |
16 | .card_skeleton .list_section1_left .skeleton_loader:first-child {
17 | border-radius: 20px;
18 | }
19 |
20 | .card_skeleton .list_section1_right .skeleton_loader:first-child {
21 | margin-right: 5px;
22 | }
23 |
24 | .card_skeleton .list_section3 {
25 | margin-bottom: 5px;
26 | }
27 |
28 | .card_skeleton .section4_row2 .skeleton_loader {
29 | transform: unset;
30 | }
31 |
32 | .card_skeleton .more_info .skeleton_loader,
33 | .more_info .skeleton_loader {
34 | transform: unset;
35 | border-radius: 0;
36 | }
37 |
--------------------------------------------------------------------------------
/src/components/SkeletonLoader/index.css:
--------------------------------------------------------------------------------
1 | body .skeleton_loader {
2 | background: #46464680;
3 | /*background: rgb(0 0 0 / 40%);*/
4 | }
5 |
6 | body .skeleton_loader:after {
7 | background: linear-gradient(90deg, transparent, #79797930, transparent);
8 | /*background: linear-gradient(90deg, transparent, rgb(0 0 0 / 80%), transparent);*/
9 | }
10 |
11 | .profile_skeleton .skeleton_loader {
12 | border-radius: 50px;
13 | transform: unset;
14 | }
15 |
16 | .collection_list .list_page.collection_skeleton_loader .row {
17 | flex-direction: column;
18 | align-items: flex-start;
19 | }
20 |
21 | .collection_table .collection_icon.skeleton_loader {
22 | border-radius: 0;
23 | }
24 |
25 | .ibc_tokens_table .skeleton_loader {
26 | margin: auto;
27 | }
28 |
29 | .ibc_tokens_table .token_value .skeleton_loader {
30 | margin: 0;
31 | }
32 |
33 | .token_value .collection_icon.skeleton_loader {
34 | width: 30px;
35 | height: 30px;
36 | margin-right: 15px;
37 | border-radius: 50px;
38 | }
39 |
--------------------------------------------------------------------------------
/src/components/SkeletonLoader/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import * as PropTypes from 'prop-types';
3 | import NFTCardSkeletonLoader from './NFTCard';
4 | import CollectionSkeletonLoader from './CollectionSkeletonLoader';
5 | import ActivitySkeletonLoader from './Activity';
6 |
7 | const SkeletonLoader = (props) => {
8 | return (
9 | Array.from(new Array(10)).map((item, index) => {
10 | switch (props.type) {
11 | case 'nft-card':
12 | return ;
13 | case 'collection-card':
14 | return ;
15 | case 'activity':
16 | return ;
17 | default:
18 | break;
19 | }
20 |
21 | return null;
22 | })
23 | );
24 | };
25 |
26 | SkeletonLoader.propTypes = {
27 | type: PropTypes.string.isRequired,
28 | start: PropTypes.bool,
29 | };
30 |
31 | export default SkeletonLoader;
32 |
--------------------------------------------------------------------------------
/src/components/Stepper/index.css:
--------------------------------------------------------------------------------
1 | .nucleus_v2 .stepper,
2 | .dialog .stepper {
3 | background: transparent;
4 | padding: 0;
5 | position: relative;
6 | }
7 |
8 | .nucleus_v2 .stepper .progress_bar,
9 | .dialog .stepper .progress_bar {
10 | position: absolute;
11 | height: 6px;
12 | top: 22px;
13 | background: linear-gradient(91.79deg, #fac01e 3.15%, #fc762a 85.66%);
14 | border-radius: 50px;
15 | }
16 |
17 | .stepper > div > div {
18 | width: 100%;
19 | left: 0;
20 | }
21 |
22 | .stepper .icon {
23 | width: 12px;
24 | }
25 |
26 | .stepper .icon_div {
27 | position: relative;
28 | }
29 |
30 | .stepper .icon_div:before {
31 | content: '';
32 | position: absolute;
33 | background: #141414;
34 | top: 0;
35 | left: 0;
36 | width: 100%;
37 | height: 100%;
38 | z-index: -1;
39 | border-radius: 50px;
40 | }
41 |
42 | .stepper .icon_div.active:after,
43 | .stepper .icon_div.completed:after {
44 | content: '';
45 | background: linear-gradient(91.79deg, #fac01e 3.15%, #fc762a 85.66%);
46 | position: absolute;
47 | top: -4px;
48 | left: -4px;
49 | width: calc(100% + 8px);
50 | height: calc(100% + 8px);
51 | z-index: -2;
52 | border-radius: 50px;
53 | }
54 |
55 | .stepper .icon_div.completed:before {
56 | content: unset;
57 | }
58 |
59 | .stepper .label span:last-child > span {
60 | font-family: 'Source Sans Pro', sans-serif;
61 | font-size: 18px;
62 | line-height: 23px;
63 | color: #E7E7E7;
64 | margin-top: 12px;
65 | }
66 |
67 | .stepper .label.action_label {
68 | cursor: pointer;
69 | }
70 |
--------------------------------------------------------------------------------
/src/components/TextField/index.css:
--------------------------------------------------------------------------------
1 | .studio_v2 .text_field {
2 | margin: unset;
3 | }
4 |
5 | .text_field > div {
6 | font-family: 'Source Sans Pro', sans-serif;
7 | font-size: 18px;
8 | line-height: 23px;
9 | color: #696969;
10 | border-radius: unset;
11 | }
12 |
13 | .text_field input::placeholder {
14 | opacity: 1;
15 | }
16 |
17 | .text_field input:focus::placeholder {
18 | color: transparent;
19 | }
20 |
21 | .text_field textarea {
22 | resize: vertical;
23 | }
24 |
--------------------------------------------------------------------------------
/src/constants/IBCTokens.js:
--------------------------------------------------------------------------------
1 | export const CONNECT_IBC_ACCOUNT_IN_PROGRESS = 'CONNECT_IBC_ACCOUNT_IN_PROGRESS';
2 | export const CONNECT_IBC_ACCOUNT_SUCCESS = 'CONNECT_IBC_ACCOUNT_SUCCESS';
3 | export const CONNECT_IBC_ACCOUNT_ERROR = 'CONNECT_IBC_ACCOUNT_ERROR';
4 |
5 | export const IBC_BALANCE_FETCH_IN_PROGRESS = 'IBC_BALANCE_FETCH_IN_PROGRESS';
6 | export const IBC_BALANCE_FETCH_SUCCESS = 'IBC_BALANCE_FETCH_SUCCESS';
7 | export const IBC_BALANCE_FETCH_ERROR = 'IBC_BALANCE_FETCH_ERROR';
8 |
9 | export const AMINO_SIGN_IBC_TX_IN_PROGRESS = 'AMINO_SIGN_IBC_TX_IN_PROGRESS';
10 | export const AMINO_SIGN_IBC_TX_SUCCESS = 'AMINO_SIGN_IBC_TX_SUCCESS';
11 | export const AMINO_SIGN_IBC_TX_ERROR = 'AMINO_SIGN_IBC_TX_ERROR';
12 |
13 | export const TIMEOUT_HEIGHT_FETCH_IN_PROGRESS = 'TIMEOUT_HEIGHT_FETCH_IN_PROGRESS';
14 | export const TIMEOUT_HEIGHT_FETCH_SUCCESS = 'TIMEOUT_HEIGHT_FETCH_SUCCESS';
15 | export const TIMEOUT_HEIGHT_FETCH_ERROR = 'TIMEOUT_HEIGHT_FETCH_ERROR';
16 |
17 | export const IBC_TX_IN_PROGRESS_SET = 'IBC_TX_IN_PROGRESS_SET';
18 |
--------------------------------------------------------------------------------
/src/constants/account.js:
--------------------------------------------------------------------------------
1 | export const CONNECT_BC_ACCOUNT_IN_PROGRESS = 'CONNECT_BC_ACCOUNT_IN_PROGRESS';
2 | export const CONNECT_BC_ACCOUNT_SUCCESS = 'CONNECT_BC_ACCOUNT_SUCCESS';
3 | export const CONNECT_BC_ACCOUNT_ERROR = 'CONNECT_BC_ACCOUNT_ERROR';
4 |
5 | export const KEPLR_ACCOUNT_KEYS_SET = 'KEPLR_ACCOUNT_KEYS_SET';
6 |
7 | export const VERIFY_ACCOUNT_IN_PROGRESS = 'VERIFY_ACCOUNT_IN_PROGRESS';
8 | export const VERIFY_ACCOUNT_SUCCESS = 'VERIFY_ACCOUNT_SUCCESS';
9 | export const VERIFY_ACCOUNT_ERROR = 'VERIFY_ACCOUNT_ERROR';
10 |
11 | export const DISCONNECT_SET = 'DISCONNECT_SET';
12 |
13 | export const CHAIN_ID_SET = 'CHAIN_ID_SET';
14 |
15 | export const CONFIRM_DEPOSIT_SET = 'CONFIRM_DEPOSIT_SET';
16 | export const CONFIRM_WITHDRAW_SET = 'CONFIRM_WITHDRAW_SET';
17 |
--------------------------------------------------------------------------------
/src/constants/activity.js:
--------------------------------------------------------------------------------
1 | export const FETCH_USER_ACTIVITY_SUCCESS = 'FETCH_USER_ACTIVITY_SUCCESS';
2 | export const FETCH_USER_ACTIVITY_IN_PROGRESS = 'FETCH_USER_ACTIVITY_IN_PROGRESS';
3 | export const FETCH_USER_ACTIVITY_ERROR = 'FETCH_USER_ACTIVITY_ERROR';
4 |
5 | export const FETCH_COLLECTION_ACTIVITY_SUCCESS = 'FETCH_COLLECTION_ACTIVITY_SUCCESS';
6 | export const FETCH_COLLECTION_ACTIVITY_IN_PROGRESS = 'FETCH_COLLECTION_ACTIVITY_IN_PROGRESS';
7 | export const FETCH_COLLECTION_ACTIVITY_ERROR = 'FETCH_COLLECTION_ACTIVITY_ERROR';
8 |
--------------------------------------------------------------------------------
/src/constants/auctions.js:
--------------------------------------------------------------------------------
1 | export const PLACE_BID_DIALOG_SHOW = 'PLACE_BID_DIALOG_SHOW';
2 | export const PLACE_BID_DIALOG_HIDE = 'PLACE_BID_DIALOG_HIDE';
3 | export const PLACE_BID_SUCCESS_SET = 'PLACE_BID_SUCCESS_SET';
4 | export const PLACE_BID_FAIL_SET = 'PLACE_BID_FAIL_SET';
5 |
6 | export const FETCH_AUCTION_LISTINGS_SUCCESS = 'FETCH_AUCTION_LISTINGS_SUCCESS';
7 | export const FETCH_AUCTION_LISTINGS_IN_PROGRESS = 'FETCH_AUCTION_LISTINGS_IN_PROGRESS';
8 | export const FETCH_AUCTION_LISTINGS_ERROR = 'FETCH_AUCTION_LISTINGS_ERROR';
9 |
10 | export const AUCTIONS_SORT_SET = 'AUCTIONS_SORT_SET';
11 | export const AUCTIONS_SEARCH_SET = 'AUCTIONS_SEARCH_SET';
12 |
13 | export const COLLECTION_AUCTION_FILTERS_SHOW = 'COLLECTION_AUCTION_FILTERS_SHOW';
14 | export const COLLECTION_AUCTION_FILTERS_HIDE = 'COLLECTION_AUCTION_FILTERS_HIDE';
15 | export const CA_PRICE_RANGE_COIN_SET = 'CA_PRICE_RANGE_COIN_SET';
16 | export const CA_PRICE_RANGE_SET = 'CA_PRICE_RANGE_SET';
17 | export const CA_ON_SALE_IN_SET = 'CA_ON_SALE_IN_SET';
18 | export const CA_ON_SALE_IN_SEARCH_SET = 'CA_ON_SALE_IN_SEARCH_SET';
19 | export const CA_AUCTION_TYPE_SET = 'CA_AUCTION_TYPE_SET';
20 |
21 | export const LISTING_AUCTION_FILTERS_SHOW = 'LISTING_AUCTION_FILTERS_SHOW';
22 | export const LISTING_AUCTION_FILTERS_HIDE = 'LISTING_AUCTION_FILTERS_HIDE';
23 | export const LA_PRICE_RANGE_COIN_SET = 'LA_PRICE_RANGE_COIN_SET';
24 | export const LA_PRICE_RANGE_SET = 'LA_PRICE_RANGE_SET';
25 | export const LA_ON_SALE_IN_SET = 'LA_ON_SALE_IN_SET';
26 | export const LA_ON_SALE_IN_SEARCH_SET = 'LA_ON_SALE_IN_SEARCH_SET';
27 | export const LA_AUCTION_TYPE_SET = 'LA_AUCTION_TYPE_SET';
28 |
--------------------------------------------------------------------------------
/src/constants/campaign.js:
--------------------------------------------------------------------------------
1 | export const FEE_GRANT_ALLOWANCE_IN_PROGRESS = 'FEE_GRANT_ALLOWANCE_IN_PROGRESS';
2 | export const FEE_GRANT_ALLOWANCE_SUCCESS = 'FEE_GRANT_ALLOWANCE_SUCCESS';
3 | export const FEE_GRANT_ALLOWANCE_ERROR = 'FEE_GRANT_ALLOWANCE_ERROR';
4 |
--------------------------------------------------------------------------------
/src/constants/collections.js:
--------------------------------------------------------------------------------
1 | export const COLLECTION_NFT_S_SORT_SET = 'COLLECTION_NFT_S_SORT_SET';
2 | export const COLLECTION_AUCTIONS_SORT_SET = 'COLLECTION_AUCTIONS_SORT_SET';
3 |
4 | export const FETCH_LISTED_COLLECTION_NFT_S_SUCCESS = 'FETCH_LISTED_COLLECTION_NFT_S_SUCCESS';
5 | export const FETCH_LISTED_COLLECTION_NFT_S_IN_PROGRESS = 'FETCH_LISTED_COLLECTION_NFT_S_IN_PROGRESS';
6 | export const FETCH_LISTED_COLLECTION_NFT_S_ERROR = 'FETCH_LISTED_COLLECTION_NFT_S_ERROR';
7 |
8 | export const FETCH_NON_LISTED_COLLECTION_NFT_S_SUCCESS = 'FETCH_NON_LISTED_COLLECTION_NFT_S_SUCCESS';
9 | export const FETCH_NON_LISTED_COLLECTION_NFT_S_IN_PROGRESS = 'FETCH_NON_LISTED_COLLECTION_NFT_S_IN_PROGRESS';
10 | export const FETCH_NON_LISTED_COLLECTION_NFT_S_ERROR = 'FETCH_NON_LISTED_COLLECTION_NFT_S_ERROR';
11 |
12 | export const LISTED_SEARCH_SET = 'LISTED_SEARCH_SET';
13 | export const NON_LISTED_SEARCH_SET = 'NON_LISTED_SEARCH_SET';
14 | export const COLLECTION_AUCTION_SEARCH_SET = 'COLLECTION_AUCTION_SEARCH_SET';
15 |
16 | export const COLLECTION_MY_NFT_S_FETCH_SUCCESS = 'COLLECTION_MY_NFT_S_FETCH_SUCCESS';
17 | export const COLLECTION_MY_NFT_S_FETCH_IN_PROGRESS = 'COLLECTION_MY_NFT_S_FETCH_IN_PROGRESS';
18 | export const COLLECTION_MY_NFT_S_FETCH_ERROR = 'COLLECTION_MY_NFT_S_FETCH_ERROR';
19 |
20 | export const FETCH_COLLECTION_AUCTIONS_SUCCESS = 'FETCH_COLLECTION_AUCTIONS_SUCCESS';
21 | export const FETCH_COLLECTION_AUCTIONS_IN_PROGRESS = 'FETCH_COLLECTION_AUCTIONS_IN_PROGRESS';
22 | export const FETCH_COLLECTION_AUCTIONS_ERROR = 'FETCH_COLLECTION_AUCTIONS_ERROR';
23 |
24 | export const COLLECTION_FILTERS_SHOW = 'COLLECTION_FILTERS_SHOW';
25 | export const COLLECTION_FILTERS_HIDE = 'COLLECTION_FILTERS_HIDE';
26 | export const COLLECTION_PRICE_RANGE_COIN_SET = 'COLLECTION_PRICE_RANGE_COIN_SET';
27 | export const COLLECTION_PRICE_RANGE_SET = 'COLLECTION_PRICE_RANGE_SET';
28 | export const COLLECTION_ON_SALE_IN_SET = 'COLLECTION_ON_SALE_IN_SET';
29 | export const COLLECTION_ON_SALE_IN_SEARCH_SET = 'COLLECTION_ON_SALE_IN_SEARCH_SET';
30 |
--------------------------------------------------------------------------------
/src/constants/explore.js:
--------------------------------------------------------------------------------
1 | export const ACTIVE_CARD_SET = 'ACTIVE_CARD_SET';
2 | export const ACTIVE_CARD_HIDE = 'ACTIVE_CARD_HIDE';
3 |
--------------------------------------------------------------------------------
/src/constants/faucet.js:
--------------------------------------------------------------------------------
1 | export const FAUCET_DIALOG_SHOW = 'FAUCET_DIALOG_SHOW';
2 | export const FAUCET_DIALOG_HIDE = 'FAUCET_DIALOG_HIDE';
3 |
4 | export const FAUCET_SUCCESS_SET = 'FAUCET_SUCCESS_SET';
5 |
6 | export const FAUCET_BALANCE_ADD_IN_PROGRESS = 'FAUCET_BALANCE_ADD_IN_PROGRESS';
7 | export const FAUCET_BALANCE_ADD_SUCCESS = 'FAUCET_BALANCE_ADD_SUCCESS';
8 | export const FAUCET_BALANCE_ADD_ERROR = 'FAUCET_BALANCE_ADD_ERROR';
9 |
10 | export const FAUCET_CLAIM_FETCH_IN_PROGRESS = 'FAUCET_CLAIM_FETCH_IN_PROGRESS';
11 | export const FAUCET_CLAIM_FETCH_SUCCESS = 'FAUCET_CLAIM_FETCH_SUCCESS';
12 | export const FAUCET_CLAIM_FETCH_ERROR = 'FAUCET_CLAIM_FETCH_ERROR';
13 |
14 | export const IBC_BALANCE_LIST_FETCH_IN_PROGRESS = 'IBC_BALANCE_LIST_FETCH_IN_PROGRESS';
15 | export const IBC_BALANCE_LIST_FETCH_SUCCESS = 'IBC_BALANCE_LIST_FETCH_SUCCESS';
16 | export const IBC_BALANCE_LIST_FETCH_ERROR = 'IBC_BALANCE_LIST_FETCH_ERROR';
17 |
--------------------------------------------------------------------------------
/src/constants/filters.js:
--------------------------------------------------------------------------------
1 | export const FILTERS_SHOW = 'FILTERS_SHOW';
2 | export const FILTERS_HIDE = 'FILTERS_HIDE';
3 |
4 | export const STATUS_SET = 'STATUS_SET';
5 |
6 | export const PRICE_RANGE_SET = 'PRICE_RANGE_SET';
7 | export const PRICE_RANGE_COIN_SET = 'PRICE_RANGE_COIN_SET';
8 |
9 | export const GENRE_SET = 'GENRE_SET';
10 | export const GENRE_SEARCH_SET = 'GENRE_SEARCH_SET';
11 |
12 | export const COLLECTIONS_SET = 'COLLECTIONS_SET';
13 | export const COLLECTIONS_SEARCH_SET = 'COLLECTIONS_SEARCH_SET';
14 |
15 | export const CHAINS_SET = 'CHAINS_SET';
16 | export const CHAINS_SEARCH_SET = 'CHAINS_SEARCH_SET';
17 |
18 | export const ON_SALE_IN_SET = 'ON_SALE_IN_SET';
19 | export const ON_SALE_IN_SEARCH_SET = 'ON_SALE_IN_SEARCH_SET';
20 |
21 | export const TYPES_SET = 'TYPES_SET';
22 | export const TYPES_SEARCH_SET = 'TYPES_SEARCH_SET';
23 |
--------------------------------------------------------------------------------
/src/constants/home.js:
--------------------------------------------------------------------------------
1 | export const FETCH_HOME_COLLECTIONS_IN_PROGRESS = 'FETCH_HOME_COLLECTIONS_IN_PROGRESS';
2 | export const FETCH_HOME_COLLECTIONS_SUCCESS = 'FETCH_HOME_COLLECTIONS_SUCCESS';
3 | export const FETCH_HOME_COLLECTIONS_ERROR = 'FETCH_HOME_COLLECTIONS_ERROR';
4 |
5 | export const FETCH_LAUNCHPAD_COLLECTIONS_IN_PROGRESS = 'FETCH_LAUNCHPAD_COLLECTIONS_IN_PROGRESS';
6 | export const FETCH_LAUNCHPAD_COLLECTIONS_SUCCESS = 'FETCH_LAUNCHPAD_COLLECTIONS_SUCCESS';
7 | export const FETCH_LAUNCHPAD_COLLECTIONS_ERROR = 'FETCH_LAUNCHPAD_COLLECTIONS_ERROR';
8 |
9 | export const LAUNCHPAD_COLLECTION_SEARCH_SET = 'LAUNCHPAD_COLLECTION_SEARCH_SET';
10 |
11 | export const FETCH_STATS_IN_PROGRESS = 'FETCH_STATS_IN_PROGRESS';
12 | export const FETCH_STATS_SUCCESS = 'FETCH_STATS_SUCCESS';
13 | export const FETCH_STATS_ERROR = 'FETCH_STATS_ERROR';
14 |
--------------------------------------------------------------------------------
/src/constants/myAccount.js:
--------------------------------------------------------------------------------
1 | export const FETCH_OWNER_COLLECTIONS_SUCCESS = 'FETCH_OWNER_COLLECTIONS_SUCCESS';
2 | export const FETCH_OWNER_COLLECTIONS_IN_PROGRESS = 'FETCH_OWNER_COLLECTIONS_IN_PROGRESS';
3 | export const FETCH_OWNER_COLLECTIONS_ERROR = 'FETCH_OWNER_COLLECTIONS_ERROR';
4 |
5 | export const FETCH_OWNER_NFT_S_SUCCESS = 'FETCH_OWNER_NFT_S_SUCCESS';
6 | export const FETCH_OWNER_NFT_S_IN_PROGRESS = 'FETCH_OWNER_NFT_S_IN_PROGRESS';
7 | export const FETCH_OWNER_NFT_S_ERROR = 'FETCH_OWNER_NFT_S_ERROR';
8 |
9 | export const FETCH_USER_COLLECTIONS_SUCCESS = 'FETCH_USER_COLLECTIONS_SUCCESS';
10 | export const FETCH_USER_COLLECTIONS_IN_PROGRESS = 'FETCH_USER_COLLECTIONS_IN_PROGRESS';
11 | export const FETCH_USER_COLLECTIONS_ERROR = 'FETCH_USER_COLLECTIONS_ERROR';
12 |
13 | export const FETCH_USER_NFT_S_SUCCESS = 'FETCH_USER_NFT_S_SUCCESS';
14 | export const FETCH_USER_NFT_S_IN_PROGRESS = 'FETCH_USER_NFT_S_IN_PROGRESS';
15 | export const FETCH_USER_NFT_S_ERROR = 'FETCH_USER_NFT_S_ERROR';
16 |
17 | export const FETCH_USER_BALANCE_SUCCESS = 'FETCH_USER_BALANCE_SUCCESS';
18 | export const FETCH_USER_BALANCE_IN_PROGRESS = 'FETCH_USER_BALANCE_IN_PROGRESS';
19 | export const FETCH_USER_BALANCE_ERROR = 'FETCH_USER_BALANCE_ERROR';
20 |
21 | export const DEPOSITE_DIALOG_SHOW = 'DEPOSITE_DIALOG_SHOW';
22 | export const DEPOSITE_DIALOG_HIDE = 'DEPOSITE_DIALOG_HIDE';
23 |
24 | export const WITHDRAW_DIALOG_SHOW = 'WITHDRAW_DIALOG_SHOW';
25 | export const WITHDRAW_DIALOG_HIDE = 'WITHDRAW_DIALOG_HIDE';
26 |
27 | export const AMOUNT_VALUE_SET = 'AMOUNT_VALUE_SET';
28 |
29 | export const NFT_TRANSFER_IN_PROGRESS = 'NFT_TRANSFER_IN_PROGRESS';
30 | export const NFT_TRANSFER_SUCCESS = 'NFT_TRANSFER_SUCCESS';
31 | export const NFT_TRANSFER_ERROR = 'NFT_TRANSFER_ERROR';
32 |
33 | export const CLEAR_MY_ACCOUNT_DATA = 'CLEAR_MY_ACCOUNT_DATA';
34 |
--------------------------------------------------------------------------------
/src/constants/navbar.js:
--------------------------------------------------------------------------------
1 | export const SEARCH_VALUE_SET = 'SEARCH_VALUE_SET';
2 |
3 | export const SHOW_SIDE_BAR_SET = 'SHOW_SIDE_BAR_SET';
4 | export const HIDE_SIDE_BAR_SET = 'HIDE_SIDE_BAR_SET';
5 |
6 | export const CONNECT_DIALOG_SHOW = 'CONNECT_DIALOG_SHOW';
7 | export const CONNECT_DIALOG_HIDE = 'CONNECT_DIALOG_HIDE';
8 |
--------------------------------------------------------------------------------
/src/constants/restURL.js:
--------------------------------------------------------------------------------
1 | import { config } from '../config';
2 |
3 | const URL = config.REST_URL;
4 |
5 | export const urlFetchBalance = (address) => `${URL}/bank/balances/${address}`;
6 | export const urlFetchAllowances = (address) => `${URL}/cosmos/feegrant/v1beta1/allowances/${address}`;
7 | export const urlFetchIBCBalance = (url, address) => `${url}/bank/balances/${address}`;
8 | export const urlTransferNFT = (denomID, onftId) => `${URL}/onft/onfts/${denomID}/${onftId}/transfer`;
9 | export const urlDeList = (ID) =>
10 | `${URL}/marketplace/listings/${ID}/de-list-nft`;
11 |
12 | export const urlFetchTimeoutHeight = (url, channel) => {
13 | let version = 'v1';
14 | if (url.indexOf('bluenet') > -1) {
15 | version = 'v1beta1';
16 | }
17 |
18 | return `${url}/ibc/core/channel/${version}/channels/${channel}/ports/transfer`;
19 | };
20 | export const urlAddFaucet = (chain) => `${config.FAUCET_URL}/${chain}/claim`;
21 |
22 | export const LIST_NFT_URL = `${URL}/marketplace/list-nft`;
23 |
--------------------------------------------------------------------------------
/src/constants/seo.js:
--------------------------------------------------------------------------------
1 | export const DEFAULT_TITLE = 'OmniFlix Market | Buy & Sell NFTs with IBC tokens';
2 | export const DEFAULT_DESCRIPTION = 'OmniFlix Market is the destination for NFT creators, communities & curators to list & collect NFTs with IBC tokens';
3 | export const DEFAULT_OG_IMAGE = '/assets/logos/og_image.png';
4 |
--------------------------------------------------------------------------------
/src/constants/snackbar.js:
--------------------------------------------------------------------------------
1 | export const SNACKBAR_HIDE = 'SNACKBAR_HIDE';
2 | export const MESSAGE_SHOW = 'MESSAGE_SHOW';
3 |
--------------------------------------------------------------------------------
/src/constants/wallet.js:
--------------------------------------------------------------------------------
1 | export const CONNECT_KEPLR_ACCOUNT_IN_PROGRESS = 'CONNECT_KEPLR_ACCOUNT_IN_PROGRESS';
2 | export const CONNECT_KEPLR_ACCOUNT_SUCCESS = 'CONNECT_KEPLR_ACCOUNT_SUCCESS';
3 | export const CONNECT_KEPLR_ACCOUNT_ERROR = 'CONNECT_KEPLR_ACCOUNT_ERROR';
4 |
5 | export const WALLET_CONNECT_IN_PROGRESS = 'WALLET_CONNECT_IN_PROGRESS';
6 | export const WALLET_CONNECT_SUCCESS = 'WALLET_CONNECT_SUCCESS';
7 | export const WALLET_CONNECT_ERROR = 'WALLET_CONNECT_ERROR';
8 |
9 | export const BALANCE_FETCH_IN_PROGRESS = 'BALANCE_FETCH_IN_PROGRESS';
10 | export const BALANCE_FETCH_SUCCESS = 'BALANCE_FETCH_SUCCESS';
11 | export const BALANCE_FETCH_ERROR = 'BALANCE_FETCH_ERROR';
12 |
13 | export const ALLOWANCES_FETCH_IN_PROGRESS = 'ALLOWANCES_FETCH_IN_PROGRESS';
14 | export const ALLOWANCES_FETCH_SUCCESS = 'ALLOWANCES_FETCH_SUCCESS';
15 | export const ALLOWANCES_FETCH_ERROR = 'ALLOWANCES_FETCH_ERROR';
16 |
17 | export const TX_SIGN_AND_BROAD_CAST_IN_PROGRESS = 'TX_SIGN_AND_BROAD_CAST_IN_PROGRESS';
18 | export const TX_SIGN_AND_BROAD_CAST_SUCCESS = 'TX_SIGN_AND_BROAD_CAST_SUCCESS';
19 | export const TX_SIGN_AND_BROAD_CAST_ERROR = 'TX_SIGN_AND_BROAD_CAST_ERROR';
20 |
21 | export const TX_HASH_FETCH_IN_PROGRESS = 'TX_HASH_FETCH_CAST_IN_PROGRESS';
22 | export const TX_HASH_FETCH_SUCCESS = 'TX_HASH_FETCH_CAST_SUCCESS';
23 | export const TX_HASH_FETCH_ERROR = 'TX_HASH_FETCH_CAST_ERROR';
24 |
25 | export const TX_HASH_IN_PROGRESS_FALSE_SET = 'TX_HASH_IN_PROGRESS_FALSE_SET';
26 |
27 | export const TX_SIGN_IN_PROGRESS = 'TX_SIGN_IN_PROGRESS';
28 | export const TX_SIGN_SUCCESS = 'TX_SIGN_SUCCESS';
29 | export const TX_SIGN_ERROR = 'TX_SIGN_ERROR';
30 | export const TX_SIGN_IN_PROGRESS_SET = 'TX_SIGN_IN_PROGRESS_SET';
31 |
--------------------------------------------------------------------------------
/src/containers/Collections/SearchTextField.js:
--------------------------------------------------------------------------------
1 | import * as PropTypes from 'prop-types';
2 | import React, { useState } from 'react';
3 | import { connect } from 'react-redux';
4 | import TextField from '../../components/TextField';
5 | import variables from '../../utils/variables';
6 | import { InputAdornment } from '@mui/material';
7 | import Icon from '../../components/Icon';
8 | import { fetchCollections, setSearchCollections } from '../../actions/marketplace';
9 | import { DEFAULT_LIMIT, DEFAULT_SKIP } from '../../config';
10 |
11 | const SearchTextField = (props) => {
12 | const [time, setTime] = useState(null);
13 | const handleChange = (value) => {
14 | props.onChange(value);
15 |
16 | if (time) {
17 | clearInterval(time);
18 | }
19 |
20 | const interval = setTimeout(() => {
21 | handleSearch(value);
22 | }, 1000);
23 |
24 | setTime(interval);
25 | };
26 |
27 | const handleSearch = (value) => {
28 | props.fetchCollections(props.address, DEFAULT_SKIP, DEFAULT_LIMIT, value);
29 | };
30 |
31 | return (
32 |
38 |
41 |
42 | ),
43 | }}
44 | name="listingSearch"
45 | placeholder={variables[props.lang].search}
46 | value={props.value}
47 | onChange={handleChange}/>
48 | );
49 | };
50 |
51 | SearchTextField.propTypes = {
52 | address: PropTypes.string.isRequired,
53 | fetchCollections: PropTypes.func.isRequired,
54 | lang: PropTypes.string.isRequired,
55 | value: PropTypes.string.isRequired,
56 | onChange: PropTypes.func.isRequired,
57 | };
58 |
59 | const stateToProps = (state) => {
60 | return {
61 | address: state.account.wallet.connection.address,
62 | lang: state.language,
63 | value: state.marketplace.collectionsSearch.value,
64 | };
65 | };
66 |
67 | const actionsToProps = {
68 | onChange: setSearchCollections,
69 | fetchCollections,
70 | };
71 |
72 | export default connect(stateToProps, actionsToProps)(SearchTextField);
73 |
--------------------------------------------------------------------------------
/src/containers/MarketPlace/ActiveCard/MoreInfo/Listings.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Button } from '@mui/material';
3 |
4 | const Listings = () => {
5 | const data = [{
6 | price: '5500',
7 | expiration: '3 hours',
8 | address: 'omniflix1jpudqpydw26r3297dlaj3whecvatyayklk4k9e',
9 | }, {
10 | price: '6900',
11 | expiration: 'Expired',
12 | address: 'omniflix1jpudqpydw26r3297dlaj3whecvatyayklk4k9e',
13 | }, {
14 | price: '6900',
15 | expiration: 'Expired',
16 | address: 'omniflix1jpudqpydw26r3297dlaj3whecvatyayklk4k9e',
17 | }];
18 |
19 | return (
20 |
21 |
22 | Listing Price
23 | Expiration
24 | From
25 | Action
26 |
27 |
28 | {
29 | data.map((item, index) => (
30 |
31 |
32 | {item.price}
33 | FLIX
34 |
35 |
{item.expiration}
36 |
37 |
{item.address}
38 | {item.address.slice(item.address.length - 4, item.address.length)}
39 |
40 |
43 |
44 | ))
45 | }
46 |
47 |
48 | );
49 | };
50 |
51 | export default Listings;
52 |
--------------------------------------------------------------------------------
/src/containers/MarketPlace/ActiveCard/MoreInfo/Offers.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Button } from '@mui/material';
3 |
4 | const Offers = () => {
5 | const data = [{
6 | price: '5500',
7 | expiration: '3 hours',
8 | address: 'omniflix1jpudqpydw26r3297dlaj3whecvatyayklk4k9e',
9 | }, {
10 | price: '6900',
11 | expiration: 'Expired',
12 | address: 'omniflix1jpudqpydw26r3297dlaj3whecvatyayklk4k9e',
13 | }, {
14 | price: '6900',
15 | expiration: 'Expired',
16 | address: 'omniflix1jpudqpydw26r3297dlaj3whecvatyayklk4k9e',
17 | }];
18 |
19 | return (
20 |
21 |
22 | From
23 | Expiration
24 | Price
25 | Action
26 |
27 |
28 | {
29 | data.map((item, index) => (
30 |
31 |
32 |
{item.address}
33 | {item.address.slice(item.address.length - 4, item.address.length)}
34 |
35 |
{item.expiration}
36 |
37 | {item.price}
38 | FLIX
39 |
40 |
43 |
44 | ))
45 | }
46 |
47 |
48 | );
49 | };
50 |
51 | export default Offers;
52 |
--------------------------------------------------------------------------------
/src/containers/MarketPlace/ActiveCard/PlaceBid/PlaceBidDialog/index.css:
--------------------------------------------------------------------------------
1 | .buy_nft_dialog .bid_nft {
2 | background-image: none;
3 | }
4 |
5 | .bid_nft_section {
6 | margin-top: 50px;
7 | }
8 |
9 | .bid_nft_section .bid_nft_section1 {
10 | font-family: 'Work Sans', sans-serif;
11 | font-weight: 500;
12 | font-size: 20px;
13 | line-height: 23px;
14 | color: #FFFFFF;
15 | text-align: left;
16 | margin-bottom: 15px;
17 | display: flex;
18 | align-items: center;
19 | justify-content: space-between;
20 | }
21 |
22 | .bid_nft_section .bid_nft_section1 .balance {
23 | font-family: 'Work Sans', sans-serif;
24 | font-weight: 600;
25 | font-size: 14px;
26 | line-height: 16px;
27 | color: #1DA1F2;
28 | }
29 |
30 | .bid_nft_section .amount_field {
31 | width: 100%;
32 | }
33 |
34 | .bid_nft_section .amount_field > div > div:nth-child(1) {
35 | margin: 0 !important;
36 | }
37 |
38 | .bid_nft_section .amount_field .token_start {
39 | font-family: 'Work Sans', sans-serif;
40 | font-size: 20px;
41 | line-height: 23px;
42 | color: #FFFFFF;
43 | margin-left: 10px;
44 | border-right: 1px solid #fff;
45 | padding-right: 20px;
46 | }
47 |
48 | .bid_nft_section .amount_field .amount_end {
49 | font-family: 'Work Sans', sans-serif;
50 | font-size: 14px;
51 | line-height: 16px;
52 | color: #1DA1F2;
53 | cursor: pointer;
54 | }
55 |
56 | .bid_nft_section .amount_field input {
57 | font-family: 'Work Sans', sans-serif;
58 | font-size: 20px;
59 | line-height: 23px;
60 | color: #FFFFFF;
61 | }
62 |
63 | .bid_nft_dialog .delist_dialog_action .delist_confirm {
64 | color: #000000 !important;
65 | }
66 |
67 | .bid_nft_dialog .delist_dialog_action {
68 | justify-content: center;
69 | }
70 |
71 | .bid_nft_section .bid_nft_section2 {
72 | display: flex;
73 | justify-content: flex-end;
74 | }
75 |
76 | .bid_nft_section .bid_nft_section2 .min_bid {
77 | font-family: 'Work Sans', sans-serif;
78 | font-weight: 500;
79 | font-size: 14px;
80 | line-height: 16px;
81 | background: linear-gradient(91.79deg, #FAC01E 3.15%, #FC762A 85.66%);
82 | -webkit-background-clip: text;
83 | -webkit-text-fill-color: transparent;
84 | margin-top: 10px;
85 | }
86 |
--------------------------------------------------------------------------------
/src/containers/MarketPlace/ActiveCard/PlaceBid/index.css:
--------------------------------------------------------------------------------
1 | .place_bid_div {
2 | display: flex;
3 | flex-direction: column;
4 | width: 100%;
5 | }
6 |
7 | .purchase_card .place_bid_div .purchase_license {
8 | margin: 0 0 10px 0;
9 | }
10 |
11 | .place_bid_div .counter {
12 | font-family: 'Inter', sans-serif;
13 | font-weight: 600;
14 | font-size: 14px;
15 | line-height: 17px;
16 | font-feature-settings: 'zero' on;
17 | color: #939393;
18 | }
19 |
20 | .place_bid_div .counter > span {
21 | color: #FFFFFF;
22 | }
23 |
24 | .place_bid_tooltip {
25 | width: 100%;
26 | }
27 |
--------------------------------------------------------------------------------
/src/containers/MarketPlace/ActiveCard/PurchaseCard/PurchaseTab.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Button } from '@mui/material';
3 |
4 | class PurchaseTab extends React.Component {
5 | constructor (props) {
6 | super(props);
7 | this.state = {
8 | activePurchase: 'ownership',
9 | };
10 |
11 | this.handleChange = this.handleChange.bind(this);
12 | }
13 |
14 | handleChange (event, value) {
15 | this.setState({
16 | activePurchase: value,
17 | });
18 | }
19 |
20 | render () {
21 | return (
22 |
23 | {/* */}
30 | {/* */}
37 |
44 | {/* */}
51 |
52 | );
53 | }
54 | }
55 |
56 | export default PurchaseTab;
57 |
--------------------------------------------------------------------------------
/src/containers/MarketPlace/ActiveCard/PurchaseCard/ValidityTab.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Button } from '@mui/material';
3 |
4 | class ValidityTab extends React.Component {
5 | constructor (props) {
6 | super(props);
7 | this.state = {
8 | activeValidity: '1year',
9 | };
10 |
11 | this.handleChange = this.handleChange.bind(this);
12 | }
13 |
14 | handleChange (event, value) {
15 | this.setState({
16 | activeValidity: value,
17 | });
18 | }
19 |
20 | render () {
21 | return (
22 |
23 |
30 |
37 |
44 |
45 | );
46 | }
47 | }
48 |
49 | export default ValidityTab;
50 |
--------------------------------------------------------------------------------
/src/containers/MarketPlace/ActiveCard/TransferSell/ListDialog/ChoosePrice/PriceTextField.js:
--------------------------------------------------------------------------------
1 | import * as PropTypes from 'prop-types';
2 | import React from 'react';
3 | import { connect } from 'react-redux';
4 | import TextField from '../../../../../../components/TextField';
5 | import variables from '../../../../../../utils/variables';
6 | import { setSellTokenPrice } from '../../../../../../actions/marketplace';
7 |
8 | const PriceTextField = (props) => {
9 | const handleChange = (value) => {
10 | if (Number(value) > 0 || value === '') {
11 | if (value === '') {
12 | props.onChange('');
13 | return;
14 | }
15 |
16 | props.onChange(value);
17 | }
18 | };
19 |
20 | return (
21 |
28 | );
29 | };
30 |
31 | PriceTextField.propTypes = {
32 | lang: PropTypes.string.isRequired,
33 | value: PropTypes.string.isRequired,
34 | onChange: PropTypes.func.isRequired,
35 | };
36 |
37 | const stateToProps = (state) => {
38 | return {
39 | lang: state.language,
40 | value: state.marketplace.sellTokenPrice,
41 | };
42 | };
43 |
44 | const actionsToProps = {
45 | onChange: setSellTokenPrice,
46 | };
47 |
48 | export default connect(stateToProps, actionsToProps)(PriceTextField);
49 |
--------------------------------------------------------------------------------
/src/containers/MarketPlace/ActiveCard/TransferSell/ListDialog/ChoosePrice/SelectTokenSelectField.js:
--------------------------------------------------------------------------------
1 | import * as PropTypes from 'prop-types';
2 | import React, { Component } from 'react';
3 | import { connect } from 'react-redux';
4 | import variables from '../../../../../../utils/variables';
5 | import SelectField from '../../../../../../components/SelectField/TokenSelectField';
6 | import { fetchIBCTokensList, setSellTokenValue } from '../../../../../../actions/marketplace';
7 | import { tokensList } from '../../../../../../utils/defaultOptions';
8 | import { images } from '../../../../../../components/NetworkImages/ImagesOptions';
9 |
10 | class SelectTokenSelectField extends Component {
11 | componentDidMount () {
12 | if (this.props.ibcTokensList.length === 0 && !this.props.ibcTokensListInProgress) {
13 | this.props.fetchIBCTokensList();
14 | }
15 | }
16 |
17 | render () {
18 | const list = this.props.ibcTokensList && this.props.ibcTokensList.length &&
19 | this.props.ibcTokensList.filter((val) => val.status === 'ENABLED' &&
20 | (val.network && val.network.display_denom !== 'ATOM/CH-0'));
21 |
22 | const options = [...tokensList];
23 | if (list && list.length) {
24 | options.push(...list);
25 | }
26 |
27 | return (
28 |
36 | );
37 | }
38 | }
39 |
40 | SelectTokenSelectField.propTypes = {
41 | fetchIBCTokensList: PropTypes.func.isRequired,
42 | ibcTokensList: PropTypes.array.isRequired,
43 | ibcTokensListInProgress: PropTypes.bool.isRequired,
44 | lang: PropTypes.string.isRequired,
45 | onChange: PropTypes.func.isRequired,
46 | value: PropTypes.object,
47 | };
48 |
49 | const stateToProps = (state) => {
50 | return {
51 | ibcTokensList: state.marketplace.ibcTokensList.value,
52 | ibcTokensListInProgress: state.marketplace.ibcTokensList.inProgress,
53 | lang: state.language,
54 | value: state.marketplace.sellTokenValue.value,
55 | };
56 | };
57 |
58 | const actionsToProps = {
59 | fetchIBCTokensList: fetchIBCTokensList,
60 | onChange: setSellTokenValue,
61 | };
62 |
63 | export default connect(stateToProps, actionsToProps)(SelectTokenSelectField);
64 |
--------------------------------------------------------------------------------
/src/containers/MarketPlace/ActiveCard/TransferSell/ListDialog/ChoosePrice/index.css:
--------------------------------------------------------------------------------
1 | .choose_price {
2 | display: flex;
3 | align-items: center;
4 | justify-content: space-between;
5 | width: 100%;
6 | }
7 |
8 | .choose_price > div {
9 | height: 50px;
10 | }
11 |
12 | .choose_price .select_field_parent {
13 | width: 45%;
14 | }
15 |
16 | .choose_price .text_field {
17 | width: 50%;
18 | }
19 |
20 | .choose_price .select_field .select__control {
21 | height: 50px;
22 | }
23 |
24 | .choose_price .select_field .select__value-container {
25 | padding: 8px 20px;
26 | }
27 |
28 | @media (max-width: 425px) {
29 | .choose_price {
30 | flex-direction: column;
31 | }
32 |
33 | .choose_price > div {
34 | width: 100%;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/src/containers/MarketPlace/ActiveCard/TransferSell/ListDialog/ChoosePrice/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './index.css';
3 | import SelectTokenSelectField from './SelectTokenSelectField';
4 | import PriceTextField from './PriceTextField';
5 |
6 | const ChoosePrice = () => {
7 | return (
8 |
12 | );
13 | };
14 |
15 | export default ChoosePrice;
16 |
--------------------------------------------------------------------------------
/src/containers/MarketPlace/ActiveCard/TransferSell/ListDialog/ListingTabs.js:
--------------------------------------------------------------------------------
1 | import { Tab, Tabs } from '@material-ui/core';
2 | import variables from '../../../../../utils/variables';
3 | import React from 'react';
4 | import * as PropTypes from 'prop-types';
5 | import { connect } from 'react-redux';
6 |
7 | class ListingTabs extends React.Component {
8 | render () {
9 | return (
10 |
11 | this.props.handleChange('fixed-price')}/>
16 |
20 | {variables[this.props.lang]['timed_auction']}
21 | {/* ({variables[this.props.lang]['coming_soon']}) */}
22 | }
23 | value="timed-auction"
24 | onClick={() => this.props.handleChange('timed-auction')}/>
25 |
26 | );
27 | }
28 | }
29 |
30 | ListingTabs.propTypes = {
31 | handleChange: PropTypes.func.isRequired,
32 | lang: PropTypes.string.isRequired,
33 | tabValue: PropTypes.string.isRequired,
34 | };
35 |
36 | const stateToProps = (state) => {
37 | return {
38 | lang: state.language,
39 | };
40 | };
41 |
42 | export default connect(stateToProps)(ListingTabs);
43 |
--------------------------------------------------------------------------------
/src/containers/MarketPlace/ActiveCard/TransferSell/ListDialog/SplitInfoSwitch.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Switch from '@material-ui/core/Switch';
3 | import * as PropTypes from 'prop-types';
4 | import { connect } from 'react-redux';
5 | import { makeStyles } from '@material-ui/core';
6 | import { setSplitInfoStatus } from '../../../../../actions/marketplace';
7 |
8 | const useStyles = makeStyles(() => ({
9 | root: {
10 | '& .MuiSwitch-switchBase.Mui-checked': {
11 | color: '#FAC01E',
12 | '& + .MuiSwitch-track': {
13 | background: 'linear-gradient(91.79deg, #FAC01E 3.15%, #FC762A 85.66%)',
14 | },
15 | },
16 | },
17 | switchBase: {
18 | color: '#696969',
19 | },
20 | track: {
21 | background: '#555555',
22 | },
23 | }));
24 |
25 | const SplitInfoSwitch = (props) => {
26 | const handleChange = (event) => {
27 | props.onChange(event.target.checked);
28 | };
29 |
30 | return (
31 |
41 | );
42 | };
43 |
44 | SplitInfoSwitch.propTypes = {
45 | value: PropTypes.bool.isRequired,
46 | onChange: PropTypes.func.isRequired,
47 | };
48 |
49 | const stateToProps = (state) => {
50 | return {
51 | value: state.marketplace.splitInfo.status,
52 | };
53 | };
54 |
55 | const actionsToProps = {
56 | onChange: setSplitInfoStatus,
57 | };
58 |
59 | export default connect(stateToProps, actionsToProps)(SplitInfoSwitch);
60 |
--------------------------------------------------------------------------------
/src/containers/MarketPlace/ActiveCard/TransferSell/ListDialog/TimedAuction/MinBidPrice/BidPercentageTextField.js:
--------------------------------------------------------------------------------
1 | import * as PropTypes from 'prop-types';
2 | import React from 'react';
3 | import { connect } from 'react-redux';
4 | import TextField from '../../../../../../../components/TextField';
5 | import variables from '../../../../../../../utils/variables';
6 | import { setBidPercentagePrice } from '../../../../../../../actions/marketplace';
7 | import { InputAdornment } from '@mui/material';
8 |
9 | const BidPercentageTextField = (props) => {
10 | return (
11 |
16 | %
17 |
18 | ),
19 | }}
20 | name="price"
21 | placeholder={variables[props.lang]['enter_price']}
22 | type="number"
23 | value={props.value}
24 | onChange={props.onChange}/>
25 | );
26 | };
27 |
28 | BidPercentageTextField.propTypes = {
29 | lang: PropTypes.string.isRequired,
30 | value: PropTypes.string.isRequired,
31 | onChange: PropTypes.func.isRequired,
32 | };
33 |
34 | const stateToProps = (state) => {
35 | return {
36 | lang: state.language,
37 | value: state.marketplace.bidPercentage,
38 | };
39 | };
40 |
41 | const actionsToProps = {
42 | onChange: setBidPercentagePrice,
43 | };
44 |
45 | export default connect(stateToProps, actionsToProps)(BidPercentageTextField);
46 |
--------------------------------------------------------------------------------
/src/containers/MarketPlace/ActiveCard/TransferSell/ListDialog/TimedAuction/MinBidPrice/index.css:
--------------------------------------------------------------------------------
1 | .min_bid_section {
2 | display: flex;
3 | align-items: center;
4 | justify-content: space-between;
5 | }
6 |
7 | .min_bid_section > .row {
8 | width: 49%;
9 | display: flex;
10 | flex-direction: column;
11 | align-items: flex-start;
12 | justify-content: flex-start;
13 | }
14 |
15 | .listing_dialog .bid_field .text_field {
16 | margin: 15px 0 25px;
17 | width: 100%;
18 | }
19 |
20 | .listing_dialog .bid_field .text_field p {
21 | font-family: 'Source Sans Pro', sans-serif;
22 | font-weight: 600;
23 | font-size: 18px;
24 | line-height: 23px;
25 | color: #B7B7B7;
26 | }
27 |
28 | .listing_dialog .min_bid_section .select_field_parent {
29 | width: 50%;
30 | margin-right: 0;
31 | }
32 |
33 | .listing_dialog .min_bid_section .row:first-child .text_field > div {
34 | border-radius: 0 5px 5px 0;
35 | }
36 |
37 | .min_bid_section .select_field .select__control > div {
38 | border-radius: 0;
39 | }
40 |
41 | .listing_dialog .white_list_content {
42 | margin: 20px 0 10px 0;
43 | }
44 |
45 | .listing_dialog .white_list_field {
46 | width: 100%;
47 | }
48 |
49 | .listing_dialog .white_list_field.text_field > div {
50 | height: auto;
51 | padding: 0;
52 | }
53 |
54 | @media (max-width: 425px) {
55 | .listing_dialog .min_bid_section .select_field_parent {
56 | width: 100%;
57 | }
58 |
59 | .min_bid_section,
60 | .listing_dialog .date_section {
61 | flex-direction: column;
62 | }
63 |
64 | .min_bid_section > .row,
65 | .listing_dialog .date_section .row {
66 | width: 100%;
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/src/containers/MarketPlace/ActiveCard/TransferSell/ListDialog/TimedAuction/MinBidPrice/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './index.css';
3 | import SelectTokenSelectField from '../../ChoosePrice/SelectTokenSelectField';
4 | import PriceTextField from '../../ChoosePrice/PriceTextField';
5 |
6 | const MinBidPrice = () => {
7 | return (
8 |
12 | );
13 | };
14 |
15 | export default MinBidPrice;
16 |
--------------------------------------------------------------------------------
/src/containers/MarketPlace/ActiveCard/TransferSell/ListDialog/TimedAuction/WhiteListSwitch.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Switch from '@material-ui/core/Switch';
3 | import * as PropTypes from 'prop-types';
4 | import { connect } from 'react-redux';
5 | import { makeStyles } from '@material-ui/core';
6 | import { setWhiteListSwitch } from '../../../../../../actions/marketplace';
7 |
8 | const useStyles = makeStyles(() => ({
9 | root: {
10 | '& .MuiSwitch-switchBase.Mui-checked': {
11 | color: '#FAC01E',
12 | '& + .MuiSwitch-track': {
13 | background: 'linear-gradient(91.79deg, #FAC01E 3.15%, #FC762A 85.66%)',
14 | },
15 | },
16 | },
17 | switchBase: {
18 | color: '#696969',
19 | },
20 | track: {
21 | background: '#555555',
22 | },
23 | }));
24 |
25 | const WhiteListSwitch = (props) => {
26 | const handleChange = (event) => {
27 | props.onChange(event.target.checked);
28 | };
29 |
30 | return (
31 |
41 | );
42 | };
43 |
44 | WhiteListSwitch.propTypes = {
45 | value: PropTypes.bool.isRequired,
46 | onChange: PropTypes.func.isRequired,
47 | };
48 |
49 | const stateToProps = (state) => {
50 | return {
51 | value: state.marketplace.whiteListSwitch,
52 | };
53 | };
54 |
55 | const actionsToProps = {
56 | onChange: setWhiteListSwitch,
57 | };
58 |
59 | export default connect(stateToProps, actionsToProps)(WhiteListSwitch);
60 |
--------------------------------------------------------------------------------
/src/containers/MarketPlace/ActiveCard/TransferSell/ListDialog/TimedAuction/WhiteListTags.js:
--------------------------------------------------------------------------------
1 | import React, { Component } from 'react';
2 | import AutoCompleteTextField from '../../../../../../components/AutoCompleteTextField';
3 | import * as PropTypes from 'prop-types';
4 | import { connect } from 'react-redux';
5 | import variables from '../../../../../../utils/variables';
6 | import { setWhiteListValue } from '../../../../../../actions/marketplace';
7 |
8 | class WhiteListTags extends Component {
9 | constructor (props) {
10 | super(props);
11 |
12 | this.handleChange = this.handleChange.bind(this);
13 | this.handleTags = this.handleTags.bind(this);
14 | }
15 |
16 | handleChange (value) {
17 | const tags = value.split(/,/);
18 | if (tags.length > 1) {
19 | let array = [...this.props.value, ...tags];
20 | array = array.filter((item) => item !== '');
21 | array = array.filter((item, pos) => array.indexOf(item) === pos);
22 |
23 | this.props.onChange(array);
24 | }
25 | }
26 |
27 | handleTags (value) {
28 | this.props.onChange(value);
29 | }
30 |
31 | render () {
32 | return (
33 |
42 | );
43 | }
44 | }
45 |
46 | WhiteListTags.propTypes = {
47 | lang: PropTypes.string.isRequired,
48 | value: PropTypes.array.isRequired,
49 | onChange: PropTypes.func.isRequired,
50 | };
51 |
52 | const stateToProps = (state) => {
53 | return {
54 | lang: state.language,
55 | value: state.marketplace.whiteListValue,
56 | };
57 | };
58 |
59 | const actionsToProps = {
60 | onChange: setWhiteListValue,
61 | };
62 |
63 | export default connect(stateToProps, actionsToProps)(WhiteListTags);
64 |
--------------------------------------------------------------------------------
/src/containers/MarketPlace/ActiveCard/TransferSell/ReciepentAddressTextField.js:
--------------------------------------------------------------------------------
1 | import * as PropTypes from 'prop-types';
2 | import React from 'react';
3 | import { connect } from 'react-redux';
4 | import TextField from '../../../../components/TextField';
5 | import variables from '../../../../utils/variables';
6 | import { setRecipentAddress } from '../../../../actions/marketplace';
7 | import { config } from '../../../../config';
8 | import { decodeFromBech32 } from '../../../../utils/address';
9 |
10 | const ReciepentAddressTextField = (props) => {
11 | const handleChange = (value) => {
12 | props.onChange(value);
13 | };
14 |
15 | const valid = props.value && decodeFromBech32(props.value) && (props.value.indexOf(config.PREFIX) > -1);
16 |
17 | return (
18 |
27 | );
28 | };
29 |
30 | ReciepentAddressTextField.propTypes = {
31 | lang: PropTypes.string.isRequired,
32 | value: PropTypes.string.isRequired,
33 | onChange: PropTypes.func.isRequired,
34 | balance: PropTypes.number,
35 | denom: PropTypes.string,
36 | };
37 |
38 | const stateToProps = (state) => {
39 | return {
40 | lang: state.language,
41 | value: state.marketplace.recipientAddress,
42 | };
43 | };
44 |
45 | const actionsToProps = {
46 | onChange: setRecipentAddress,
47 | };
48 |
49 | export default connect(stateToProps, actionsToProps)(ReciepentAddressTextField);
50 |
--------------------------------------------------------------------------------
/src/containers/MarketPlace/Auctions/Filters/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import '../../Filters/index.css';
3 | import variables from '../../../../utils/variables';
4 | import * as PropTypes from 'prop-types';
5 | import { connect } from 'react-redux';
6 | import { ReactComponent as BackIcon } from '../../../../assets/explore/Vector.svg';
7 | import { IconButton } from '@mui/material';
8 | import PriceRange from './PriceRange';
9 | import ClassNames from 'classnames';
10 | import OnSaleIn from './OnSaleIn';
11 | import DotsLoading from '../../../../components/DotsLoading';
12 | import { hideListingAuctionFilters } from '../../../../actions/auctions/filters';
13 | import AuctionTypes from './AuctionTypes';
14 |
15 | class Filters extends React.Component {
16 | render () {
17 | return (
18 |
19 |
20 |
{variables[this.props.lang].filters}
21 |
22 |
23 |
24 |
25 |
26 | {this.props.ibcTokensListInProgress
27 | ?
28 | :
}
29 |
30 |
31 | );
32 | }
33 | }
34 |
35 | Filters.propTypes = {
36 | filterShow: PropTypes.bool.isRequired,
37 | hideFilters: PropTypes.func.isRequired,
38 | ibcTokensListInProgress: PropTypes.bool.isRequired,
39 | lang: PropTypes.string.isRequired,
40 | };
41 |
42 | const stateToProps = (state) => {
43 | return {
44 | filterShow: state.auctions.filters.showLA,
45 | lang: state.language,
46 | ibcTokensListInProgress: state.marketplace.ibcTokensList.inProgress,
47 | };
48 | };
49 |
50 | const actionToProps = {
51 | hideFilters: hideListingAuctionFilters,
52 | };
53 |
54 | export default connect(stateToProps, actionToProps)(Filters);
55 |
--------------------------------------------------------------------------------
/src/containers/MarketPlace/Auctions/List.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import * as PropTypes from 'prop-types';
3 | import { connect } from 'react-redux';
4 | import { withRouter } from 'react-router';
5 | import Card from './Card';
6 | import { hideListingAuctionFilters } from '../../../actions/auctions/filters';
7 |
8 | const AuctionsList = (props) => {
9 | return (
10 | <>
11 | {props.auctionListings.map((item, index) => {
12 | return ;
15 | })}
16 | >
17 | );
18 | };
19 |
20 | AuctionsList.propTypes = {
21 | auctionListings: PropTypes.array.isRequired,
22 | filterShowLA: PropTypes.bool.isRequired,
23 | hideListingAuctionFilters: PropTypes.func.isRequired,
24 | };
25 |
26 | const stateToProps = (state) => {
27 | return {
28 | auctionListings: state.auctions.auctionListings.result,
29 | filterShowLA: state.auctions.filters.showLA,
30 | };
31 | };
32 |
33 | const actionToProps = {
34 | hideListingAuctionFilters,
35 | };
36 |
37 | export default withRouter(connect(stateToProps, actionToProps)(AuctionsList));
38 |
--------------------------------------------------------------------------------
/src/containers/MarketPlace/Auctions/index.css:
--------------------------------------------------------------------------------
1 | .auctions_list .list_section4 > div .lsr_value {
2 | text-align: left;
3 | font-family: 'Work Sans', sans-serif;
4 | font-style: normal;
5 | font-weight: 600;
6 | font-size: 18px;
7 | line-height: 21px;
8 | font-feature-settings: 'zero' on;
9 | background: linear-gradient(91.79deg, #FAC01E 3.15%, #FC762A 85.66%);
10 | -webkit-background-clip: text;
11 | -webkit-text-fill-color: transparent;
12 | text-fill-color: transparent;
13 | display: flex;
14 | align-items: center;
15 | justify-content: flex-end;
16 | }
17 |
18 | .auctions_list .list_section4 > div .lsr_value img {
19 | width: 20px;
20 | margin-right: 10px;
21 | }
22 |
23 | .auctions_list .list_section4 .list_section4_left > span:first-child {
24 | text-align: right;
25 | display: flex;
26 | align-items: flex-start;
27 | justify-content: flex-end;
28 | width: 100%;
29 | }
30 |
31 | .auctions_list .list_section1_right > div {
32 | background: none;
33 | font-family: 'Work Sans', sans-serif;
34 | font-style: normal;
35 | font-weight: 600;
36 | font-size: 12px;
37 | line-height: 14px;
38 | font-feature-settings: 'zero' on;
39 | color: #1EC063;
40 | width: 100%;
41 | backdrop-filter: unset;
42 | flex-shrink: 0;
43 | }
44 |
45 | .auctions_list .list_section1_right > div svg {
46 | margin-right: 2px;
47 | fill: #1EC063;
48 | flex-shrink: 0;
49 | }
50 |
51 | .auctions_list .list_section1_right .list_section4_right {
52 | font-family: 'Work Sans', sans-serif;
53 | font-style: normal;
54 | font-weight: 600;
55 | font-size: 11px;
56 | line-height: 14px;
57 | font-feature-settings: 'zero' on;
58 | color: #EB5757;
59 | }
60 |
61 | .auctions_list .list_section1_right .list_section4_right svg {
62 | margin-right: 2px;
63 | fill: #EB5757;
64 | }
65 |
66 | .auctions_list .list_section4_right span {
67 | font-family: 'Inter', sans-serif;
68 | font-style: normal;
69 | font-weight: 600;
70 | font-size: 14px;
71 | line-height: 17px;
72 | font-feature-settings: 'zero' on;
73 | color: #EB5757;
74 | }
75 |
--------------------------------------------------------------------------------
/src/containers/MarketPlace/BurnDialog/BurnIDTextField.js:
--------------------------------------------------------------------------------
1 | import * as PropTypes from 'prop-types';
2 | import React from 'react';
3 | import { connect } from 'react-redux';
4 | import OtpInput from 'react-otp-input';
5 | import { setBurnId } from '../../../actions/marketplace';
6 |
7 | const BurnNFTTextField = (props) => {
8 | return (
9 |
14 | );
15 | };
16 |
17 | BurnNFTTextField.propTypes = {
18 | value: PropTypes.string.isRequired,
19 | onChange: PropTypes.func.isRequired,
20 | };
21 |
22 | const stateToProps = (state) => {
23 | return {
24 | value: state.marketplace.burnID,
25 | };
26 | };
27 |
28 | const actionsToProps = {
29 | onChange: setBurnId,
30 | };
31 |
32 | export default connect(stateToProps, actionsToProps)(BurnNFTTextField);
33 |
--------------------------------------------------------------------------------
/src/containers/MarketPlace/BurnDialog/index.js:
--------------------------------------------------------------------------------
1 | import { Dialog, DialogContent } from '@material-ui/core';
2 | import React from 'react';
3 | import * as PropTypes from 'prop-types';
4 | import { connect } from 'react-redux';
5 | import './index.css';
6 | import Burn from './Burn';
7 | import { hideBurnDialog } from '../../../actions/marketplace';
8 |
9 | const BurnDialog = (props) => {
10 | return (
11 |
21 | );
22 | };
23 |
24 | BurnDialog.propTypes = {
25 | asset: PropTypes.object.isRequired,
26 | handleClose: PropTypes.func.isRequired,
27 | lang: PropTypes.string.isRequired,
28 | open: PropTypes.bool.isRequired,
29 | };
30 |
31 | const stateToProps = (state) => {
32 | return {
33 | open: state.marketplace.burnDialog.open,
34 | asset: state.marketplace.burnDialog.asset,
35 | lang: state.language,
36 | };
37 | };
38 |
39 | const actionToProps = {
40 | handleClose: hideBurnDialog,
41 | };
42 |
43 | export default connect(stateToProps, actionToProps)(BurnDialog);
44 |
--------------------------------------------------------------------------------
/src/containers/MarketPlace/Filters/Status.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import * as PropTypes from 'prop-types';
3 | import { connect } from 'react-redux';
4 | import Accordions from '../../../components/Accordions';
5 | import variables from '../../../utils/variables';
6 | import { setStatus } from '../../../actions/filters';
7 |
8 | const Status = (props) => {
9 | const handleSelect = (value) => {
10 | const list = new Set(props.value);
11 |
12 | if (list.has(value)) {
13 | list.delete(value);
14 | } else {
15 | list.add(value);
16 | }
17 |
18 | props.onChange(list);
19 | };
20 |
21 | return (
22 |
23 | {props.list.map((val) => {
24 | return (
25 | handleSelect(val.value)}>
29 | {val.name}
30 |
31 | );
32 | })}
33 |
34 | );
35 | };
36 |
37 | Status.propTypes = {
38 | lang: PropTypes.string.isRequired,
39 | list: PropTypes.array.isRequired,
40 | value: PropTypes.object.isRequired,
41 | onChange: PropTypes.func.isRequired,
42 | };
43 |
44 | const stateToProps = (state) => {
45 | return {
46 | lang: state.language,
47 | list: state.filters.status.list,
48 | value: state.filters.status.value,
49 | };
50 | };
51 |
52 | const actionToProps = {
53 | onChange: setStatus,
54 | };
55 |
56 | export default connect(stateToProps, actionToProps)(Status);
57 |
--------------------------------------------------------------------------------
/src/containers/MarketPlace/Filters/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './index.css';
3 | import variables from '../../../utils/variables';
4 | import * as PropTypes from 'prop-types';
5 | import { connect } from 'react-redux';
6 | import { ReactComponent as BackIcon } from '../../../assets/explore/Vector.svg';
7 | import { IconButton } from '@mui/material';
8 | // import Status from './Status';
9 | import PriceRange from './PriceRange';
10 | import { hideFilters } from '../../../actions/filters';
11 | import ClassNames from 'classnames';
12 | // import Genre from './Genre';
13 | // import SingleCollection from './SingleCollection';
14 | // import Chains from './Chains';
15 | import OnSaleIn from './OnSaleIn';
16 | // import Types from './Types';
17 | import DotsLoading from '../../../components/DotsLoading';
18 | import SearchTextField from '../SearchTextField';
19 |
20 | class Filters extends React.Component {
21 | render () {
22 | return (
23 |
24 |
25 |
{variables[this.props.lang].filters}
26 |
27 |
28 |
29 |
30 |
31 | {/*
*/}
32 |
33 | {/*
*/}
34 | {/*
*/}
35 | {/*
*/}
36 | {this.props.ibcTokensListInProgress
37 | ?
38 | :
}
39 | {/*
*/}
40 |
41 | );
42 | }
43 | }
44 |
45 | Filters.propTypes = {
46 | filterShow: PropTypes.bool.isRequired,
47 | hideFilters: PropTypes.func.isRequired,
48 | ibcTokensListInProgress: PropTypes.bool.isRequired,
49 | lang: PropTypes.string.isRequired,
50 | };
51 |
52 | const stateToProps = (state) => {
53 | return {
54 | filterShow: state.filters.show,
55 | lang: state.language,
56 | ibcTokensListInProgress: state.marketplace.ibcTokensList.inProgress,
57 | };
58 | };
59 |
60 | const actionToProps = {
61 | hideFilters,
62 | };
63 |
64 | export default connect(stateToProps, actionToProps)(Filters);
65 |
--------------------------------------------------------------------------------
/src/containers/MarketPlace/MenuPopover/index.css:
--------------------------------------------------------------------------------
1 | .menu_popover > div:nth-child(3) {
2 | background: #23282C;
3 | border: 1px solid #22272B;
4 | border-radius: 10px;
5 | }
6 |
7 | .menu_popover .menu_list {
8 | width: 160px;
9 | display: flex;
10 | align-items: center;
11 | justify-content: center;
12 | flex-direction: column;
13 | }
14 |
15 | .menu_popover .menu_list button {
16 | font-family: 'Work Sans', sans-serif;
17 | font-style: normal;
18 | font-weight: 500;
19 | font-size: 18px;
20 | line-height: 21px;
21 | letter-spacing: 0.005em;
22 | color: #969696;
23 | border-bottom: 1px solid #3E5364;
24 | border-radius: 0;
25 | padding: 12px 10px;
26 | width: 100%;
27 | text-transform: capitalize;
28 | }
29 |
30 | .menu_popover .menu_list button:last-child {
31 | border: none;
32 | }
33 |
--------------------------------------------------------------------------------
/src/containers/MarketPlace/MenuPopover/index.js:
--------------------------------------------------------------------------------
1 | import { Button, Popover } from '@mui/material';
2 | import React from 'react';
3 | import * as PropTypes from 'prop-types';
4 | import { connect } from 'react-redux';
5 | import { hideMenuPopover, showBurnDialog } from '../../../actions/marketplace';
6 | import variables from '../../../utils/variables';
7 | import './index.css';
8 |
9 | const MenuPopover = (props) => {
10 | const open = Boolean(props.anchorEl);
11 | const id = open ? 'simple-popover' : undefined;
12 |
13 | const handleBurn = () => {
14 | props.hideMenuPopover();
15 | props.showBurnDialog(props.asset);
16 | };
17 |
18 | return (
19 |
33 |
34 |
37 |
38 |
39 | );
40 | };
41 |
42 | MenuPopover.propTypes = {
43 | asset: PropTypes.object.isRequired,
44 | hideMenuPopover: PropTypes.func.isRequired,
45 | lang: PropTypes.string.isRequired,
46 | showBurnDialog: PropTypes.func.isRequired,
47 | anchorEl: PropTypes.any,
48 | };
49 |
50 | const stateToProps = (state) => {
51 | return {
52 | lang: state.language,
53 | anchorEl: state.marketplace.menuPopover.anchorEl,
54 | asset: state.marketplace.menuPopover.asset,
55 | };
56 | };
57 |
58 | const actionToProps = {
59 | hideMenuPopover,
60 | showBurnDialog,
61 | };
62 |
63 | export default connect(stateToProps, actionToProps)(MenuPopover);
64 |
--------------------------------------------------------------------------------
/src/containers/MarketPlace/Tabs/index.css:
--------------------------------------------------------------------------------
1 | .marketplace_tabs_section {
2 | display: flex;
3 | align-items: center;
4 | justify-content: space-between;
5 | padding: 20px 40px 0;
6 | }
7 |
8 | .marketplace_tabs_section .marketplace_tabs {
9 | display: flex;
10 | overflow: auto;
11 | }
12 |
13 | .marketplace_tabs .active_tab {
14 | font-family: 'Work Sans', sans-serif;
15 | font-style: normal;
16 | font-weight: 600;
17 | font-size: 18px;
18 | line-height: 21px;
19 | background: linear-gradient(91.79deg, #FAC01E 3.15%, #FC762A 85.66%);
20 | border-radius: 50px;
21 | }
22 |
23 | .marketplace_tabs .active_tab p {
24 | background: linear-gradient(180deg, #0E151B 0%, #000000 100%);
25 | -webkit-background-clip: text;
26 | -webkit-text-fill-color: transparent;
27 | text-fill-color: transparent;
28 | }
29 |
30 | .marketplace_tabs button {
31 | font-family: 'Work Sans', sans-serif;
32 | font-style: normal;
33 | font-weight: 500;
34 | font-size: 18px;
35 | line-height: 21px;
36 | color: #7B7B7B;
37 | background: rgba(33, 38, 43, 0.4);
38 | border: 1px solid #2F363D;
39 | border-radius: 50px;
40 | text-align: center;
41 | cursor: pointer;
42 | margin-right: 15px;
43 | padding: 8px 15px;
44 | text-transform: capitalize;
45 | flex-shrink: 0;
46 | }
47 |
48 | .marketplace_tabs button:last-child {
49 | margin-right: unset;
50 | }
51 |
52 | @media (max-width: 425px) {
53 | .marketplace_tabs_section {
54 | padding: 20px 20px 0;
55 | }
56 |
57 | .marketplace_tabs button {
58 | font-size: 14px;
59 | padding: 6px 10px;
60 | margin-right: 10px;
61 | }
62 |
63 | .marketplace_tabs .active_tab {
64 | font-size: 14px;
65 | }
66 | }
67 |
--------------------------------------------------------------------------------
/src/containers/MarketPlace/Tabs/index.js:
--------------------------------------------------------------------------------
1 | import * as PropTypes from 'prop-types';
2 | import { connect } from 'react-redux';
3 | import React from 'react';
4 | import variables from '../../../utils/variables';
5 | import { Button } from '@mui/material';
6 | import './index.css';
7 | import { hideActiveCard } from '../../../actions/explore';
8 |
9 | const Tabs = (props) => {
10 | const handleClick = (value) => {
11 | props.onClick(value);
12 | props.hideActiveCard();
13 | };
14 |
15 | return (
16 |
17 |
23 |
29 |
35 |
36 | );
37 | };
38 |
39 | Tabs.propTypes = {
40 | hideActiveCard: PropTypes.func.isRequired,
41 | lang: PropTypes.string.isRequired,
42 | statsData: PropTypes.object.isRequired,
43 | value: PropTypes.string.isRequired,
44 | onClick: PropTypes.func.isRequired,
45 | auctionListingsTotal: PropTypes.number,
46 | listingsTotal: PropTypes.number,
47 | };
48 |
49 | const stateToProps = (state) => {
50 | return {
51 | lang: state.language,
52 | value: state.marketplace.marketPlaceTab.value,
53 | listingsTotal: state.marketplace.listings.total,
54 | auctionListingsTotal: state.auctions.auctionListings.total,
55 | };
56 | };
57 |
58 | const actionsToProps = {
59 | hideActiveCard,
60 | };
61 |
62 | export default connect(stateToProps, actionsToProps)(Tabs);
63 |
--------------------------------------------------------------------------------
/src/containers/MyAccount/IBCTokens/AmountValueTextField.js:
--------------------------------------------------------------------------------
1 | import * as PropTypes from 'prop-types';
2 | import React from 'react';
3 | import { connect } from 'react-redux';
4 | import TextField from '../../../components/TextField';
5 | // import variables from '../../../utils/variables';
6 | import { InputAdornment } from '@mui/material';
7 | import { setAmountValue } from '../../../actions/myAccount';
8 | import NetworkImages from '../../../components/NetworkImages';
9 |
10 | const AmountValueTextField = (props) => {
11 | const handleChange = (value) => {
12 | props.onChange(value);
13 | };
14 |
15 | return (
16 |
22 |
23 | {props.denom}
24 |
25 | ),
26 | // endAdornment: (
27 | // props.onChange(props.balance > 0.1 ? (props.balance - 0.1) : props.balance)}>
30 | // {variables[props.lang].max}
31 | //
32 | // ),
33 | }}
34 | name="amount_value"
35 | type="number"
36 | value={props.value}
37 | onChange={handleChange}/>
38 | );
39 | };
40 |
41 | AmountValueTextField.propTypes = {
42 | lang: PropTypes.string.isRequired,
43 | value: PropTypes.string.isRequired,
44 | onChange: PropTypes.func.isRequired,
45 | balance: PropTypes.number,
46 | denom: PropTypes.string,
47 | };
48 |
49 | const stateToProps = (state) => {
50 | return {
51 | lang: state.language,
52 | value: state.myAccount.amountValue,
53 | };
54 | };
55 |
56 | const actionsToProps = {
57 | onChange: setAmountValue,
58 | };
59 |
60 | export default connect(stateToProps, actionsToProps)(AmountValueTextField);
61 |
--------------------------------------------------------------------------------
/src/containers/MyAccount/IBCTokens/index.js:
--------------------------------------------------------------------------------
1 | import Table from './Table';
2 | import './index.css';
3 | import React, { useEffect } from 'react';
4 | import DepositDialog from './DepositeDialog';
5 | import WithDrawDialog from './WithDrawDialog';
6 |
7 | const IBCTokens = () => {
8 | useEffect(() => {
9 | document.body.style.overflow = null;
10 | }, []);
11 |
12 | return (
13 | <>
14 |
15 |
16 |
17 | >
18 | );
19 | };
20 |
21 | export default IBCTokens;
22 |
--------------------------------------------------------------------------------
/src/containers/NavBar/AppsPopover.js:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 | import Popover from '@mui/material/Popover';
3 | import Typography from '@mui/material/Typography';
4 | import AppsIcon from '@mui/icons-material/Apps';
5 | import { Button, IconButton } from '@mui/material';
6 | import { appsLinks } from '../../config';
7 | import { ReactComponent as StudioIcon } from '../../assets/apps/studio.svg';
8 | import { ReactComponent as InSyncIcon } from '../../assets/apps/insync.svg';
9 | import { ReactComponent as TvIcon } from '../../assets/apps/tv.svg';
10 |
11 | const AppsPopover = () => {
12 | const [anchorEl, setAnchorEl] = React.useState(null);
13 |
14 | const handleClick = (event) => {
15 | setAnchorEl(event.currentTarget);
16 | };
17 |
18 | const handleClose = () => {
19 | setAnchorEl(null);
20 | };
21 |
22 | const handleRedirect = (value) => {
23 | window.open(value, '_self');
24 | handleClose();
25 | };
26 |
27 | const open = Boolean(anchorEl);
28 | const id = open ? 'apps-popover' : undefined;
29 |
30 | return (
31 |
32 |
33 |
34 |
35 |
49 | handleRedirect(appsLinks.STUDIO)}>
50 |
53 |
54 | handleRedirect(appsLinks.IN_SYNC)}>
55 |
58 |
59 | handleRedirect(appsLinks.TV)}>
60 |
63 |
64 |
65 |
66 | );
67 | };
68 |
69 | export default AppsPopover;
70 |
--------------------------------------------------------------------------------
/src/containers/NavBar/ConnectButton.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Button } from '@mui/material';
3 | import * as PropTypes from 'prop-types';
4 | import { connect } from 'react-redux';
5 | import variables from '../../utils/variables';
6 | import walletIcon from '../../assets/navbar/wallet.svg';
7 | import { showConnectDialog } from '../../actions/navbar';
8 |
9 | const ConnectButton = (props) => {
10 | return (
11 |
15 | );
16 | };
17 |
18 | ConnectButton.propTypes = {
19 | lang: PropTypes.string.isRequired,
20 | showConnectDialog: PropTypes.func.isRequired,
21 | };
22 |
23 | const stateToProps = (state) => {
24 | return {
25 | lang: state.language,
26 | };
27 | };
28 |
29 | const actionToProps = {
30 | showConnectDialog,
31 | };
32 |
33 | export default connect(stateToProps, actionToProps)(ConnectButton);
34 |
--------------------------------------------------------------------------------
/src/containers/NavBar/ConnectDialog/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import * as PropTypes from 'prop-types';
3 | import { Dialog } from '@material-ui/core';
4 | import variables from '../../../utils/variables';
5 | import { connect } from 'react-redux';
6 | import './index.css';
7 | import { hideConnectDialog } from '../../../actions/navbar';
8 | import KeplrButton from './KeplrButton';
9 | // import WalletConnectButton from './WalletConnectButton';
10 |
11 | const ConnectDialog = (props) => {
12 | return (
13 |
27 | );
28 | };
29 |
30 | ConnectDialog.propTypes = {
31 | handleClose: PropTypes.func.isRequired,
32 | lang: PropTypes.string.isRequired,
33 | open: PropTypes.bool.isRequired,
34 | };
35 |
36 | const stateToProps = (state) => {
37 | return {
38 | lang: state.language,
39 | open: state.navbar.connectDialog,
40 | };
41 | };
42 |
43 | const actionToProps = {
44 | handleClose: hideConnectDialog,
45 | };
46 |
47 | export default connect(stateToProps, actionToProps)(ConnectDialog);
48 |
--------------------------------------------------------------------------------
/src/containers/NavBar/ExpansionButton.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import * as PropTypes from 'prop-types';
3 | import { connect } from 'react-redux';
4 | import { Button } from '@material-ui/core';
5 | import { Menu } from '@material-ui/icons';
6 | import { showSideBar } from '../../actions/navbar';
7 |
8 | const ExpansionButton = (props) => {
9 | const handleOpen = () => {
10 | props.showSideBar();
11 |
12 | document.body.style.overflow = 'hidden';
13 | };
14 |
15 | return (
16 |
23 | );
24 | };
25 |
26 | ExpansionButton.propTypes = {
27 | showSideBar: PropTypes.func.isRequired,
28 | };
29 |
30 | const actionToProps = {
31 | showSideBar,
32 | };
33 |
34 | export default connect(null, actionToProps)(ExpansionButton);
35 |
--------------------------------------------------------------------------------
/src/containers/SingleAsset/Breadcrumb/index.css:
--------------------------------------------------------------------------------
1 | /* Breadcrumb CSS */
2 | .breadcrumb {
3 | display: flex;
4 | align-items: center;
5 | font-family: 'Rubik', sans-serif;
6 | font-weight: 500;
7 | font-size: 20px;
8 | line-height: 24px;
9 | color: #FFFFFF;
10 | flex-wrap: wrap;
11 | margin-bottom: 20px;
12 | }
13 |
14 | .breadcrumb .home_icon svg {
15 | width: 15px;
16 | height: auto;
17 | }
18 |
19 | .breadcrumb .slash {
20 | margin: 0 8px;
21 | }
22 |
23 | .breadcrumb_collection,
24 | .home_icon {
25 | cursor: pointer;
26 | position: relative;
27 | }
28 |
29 | .home_icon img {
30 | width: 20px;
31 | }
32 |
33 | .breadcrumb_collection:hover:after {
34 | content: "";
35 | width: 100%;
36 | position: absolute;
37 | left: 0;
38 | bottom: 0;
39 | border-width: 0 0 1px;
40 | border-style: solid;
41 | }
42 |
43 | /*.home_icon:hover:after {*/
44 | /* content: '';*/
45 |
46 | /* width: 100%;*/
47 | /* position: absolute;*/
48 | /* left: 0;*/
49 | /* bottom: -3px;*/
50 |
51 | /* border-width: 0 0 1px;*/
52 | /* border-style: solid;*/
53 | /*}*/
54 |
55 | .breadcrumb > div {
56 | text-align: left;
57 | word-break: break-word;
58 | font-family: 'Source Sans Pro', sans-serif;
59 | font-weight: 500;
60 | font-size: 20px;
61 | line-height: 30px;
62 | display: flex;
63 | align-items: center;
64 | color: #F2F2F2;
65 | }
66 |
67 | .breadcrumb > span {
68 | color: #F2F2F2;
69 | }
70 |
71 | .breadcrumb > div .icon {
72 | width: 20px;
73 | }
74 |
75 | .breadcrumb > div:first-child {
76 | cursor: pointer;
77 | margin-left: unset;
78 | }
79 |
--------------------------------------------------------------------------------
/src/containers/SingleAsset/Controls.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import './index.css';
3 | import { connect } from 'react-redux';
4 | import * as PropTypes from 'prop-types';
5 | import BackButton from '../../components/Player/Controls/BackButton';
6 | import PlayButton from '../../components/Player/Controls/PlayButton';
7 | import ForwardButton from '../../components/Player/Controls/ForwardButton';
8 | import VolumeButton from '../../components/Player/Controls/VolumeButton';
9 |
10 | const Controls = (props) => {
11 | return (
12 |
18 | );
19 | };
20 |
21 | Controls.propTypes = {
22 | player: PropTypes.object,
23 | };
24 |
25 | const stateToProps = (state) => {
26 | return {
27 | player: state.marketplace.player,
28 | };
29 | };
30 |
31 | export default connect(stateToProps)(Controls);
32 |
--------------------------------------------------------------------------------
/src/containers/SingleCollection/Auctions/Filters/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import '../../../MarketPlace/Filters/index.css';
3 | import variables from '../../../../utils/variables';
4 | import * as PropTypes from 'prop-types';
5 | import { connect } from 'react-redux';
6 | import { ReactComponent as BackIcon } from '../../../../assets/explore/Vector.svg';
7 | import { IconButton } from '@mui/material';
8 | import PriceRange from './PriceRange';
9 | import ClassNames from 'classnames';
10 | import OnSaleIn from './OnSaleIn';
11 | import DotsLoading from '../../../../components/DotsLoading';
12 | import SearchTextField from '../../SearchListedTextField';
13 | import { hideCollectionAuctionFilters } from '../../../../actions/auctions/filters';
14 | import AuctionTypes from './AuctionTypes';
15 |
16 | class Filters extends React.Component {
17 | render () {
18 | return (
19 |
20 |
21 |
{variables[this.props.lang].filters}
22 |
23 |
24 |
25 |
26 |
27 |
28 | {this.props.ibcTokensListInProgress
29 | ?
30 | : }
31 |
32 |
33 | );
34 | }
35 | }
36 |
37 | Filters.propTypes = {
38 | activeTab: PropTypes.string.isRequired,
39 | filterShow: PropTypes.bool.isRequired,
40 | hideFilters: PropTypes.func.isRequired,
41 | ibcTokensListInProgress: PropTypes.bool.isRequired,
42 | lang: PropTypes.string.isRequired,
43 | };
44 |
45 | const stateToProps = (state) => {
46 | return {
47 | filterShow: state.auctions.filters.showCA,
48 | lang: state.language,
49 | ibcTokensListInProgress: state.marketplace.ibcTokensList.inProgress,
50 | };
51 | };
52 |
53 | const actionToProps = {
54 | hideFilters: hideCollectionAuctionFilters,
55 | };
56 |
57 | export default connect(stateToProps, actionToProps)(Filters);
58 |
--------------------------------------------------------------------------------
/src/containers/SingleCollection/Filters/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import '../../MarketPlace/Filters/index.css';
3 | import variables from '../../../utils/variables';
4 | import * as PropTypes from 'prop-types';
5 | import { connect } from 'react-redux';
6 | import { ReactComponent as BackIcon } from '../../../assets/explore/Vector.svg';
7 | import { IconButton } from '@mui/material';
8 | import PriceRange from './PriceRange';
9 | import ClassNames from 'classnames';
10 | import OnSaleIn from './OnSaleIn';
11 | import DotsLoading from '../../../components/DotsLoading';
12 | import SearchTextField from '../SearchListedTextField';
13 | import { hideCollectionFilters } from '../../../actions/collections/filters';
14 |
15 | class Filters extends React.Component {
16 | render () {
17 | return (
18 |
19 |
20 |
{variables[this.props.lang].filters}
21 |
22 |
23 |
24 |
25 |
26 |
27 | {this.props.ibcTokensListInProgress
28 | ?
29 | : }
30 |
31 | );
32 | }
33 | }
34 |
35 | Filters.propTypes = {
36 | activeTab: PropTypes.string.isRequired,
37 | filterShow: PropTypes.bool.isRequired,
38 | hideFilters: PropTypes.func.isRequired,
39 | ibcTokensListInProgress: PropTypes.bool.isRequired,
40 | lang: PropTypes.string.isRequired,
41 | };
42 |
43 | const stateToProps = (state) => {
44 | return {
45 | filterShow: state.collection.filters.showCollectionFilter,
46 | lang: state.language,
47 | ibcTokensListInProgress: state.marketplace.ibcTokensList.inProgress,
48 | };
49 | };
50 |
51 | const actionToProps = {
52 | hideFilters: hideCollectionFilters,
53 | };
54 |
55 | export default connect(stateToProps, actionToProps)(Filters);
56 |
--------------------------------------------------------------------------------
/src/containers/SingleCollection/JsonSchemaDialog/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Button, Dialog } from '@mui/material';
3 | import * as PropTypes from 'prop-types';
4 | import { hideSchemaJsonDialog } from '../../../actions/marketplace';
5 | import { connect } from 'react-redux';
6 | import variables from '../../../utils/variables';
7 | import './index.css';
8 | import CopyButton from '../../../components/CopyButton';
9 |
10 | const JsonSchemaDialog = (props) => {
11 | return (
12 |
33 | );
34 | };
35 |
36 | JsonSchemaDialog.propTypes = {
37 | handleClose: PropTypes.func.isRequired,
38 | lang: PropTypes.string.isRequired,
39 | open: PropTypes.bool.isRequired,
40 | schema: PropTypes.object.isRequired,
41 | };
42 |
43 | const stateToProps = (state) => {
44 | return {
45 | open: state.marketplace.jsonSchemaDialog.open,
46 | lang: state.language,
47 | schema: state.marketplace.jsonSchemaDialog.value,
48 | };
49 | };
50 |
51 | const actionToProps = {
52 | handleClose: hideSchemaJsonDialog,
53 | };
54 |
55 | export default connect(stateToProps, actionToProps)(JsonSchemaDialog);
56 |
--------------------------------------------------------------------------------
/src/containers/Snackbar.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { connect } from 'react-redux';
3 | import * as PropTypes from 'prop-types';
4 | import { hideSnackbar } from '../actions/snackbar';
5 | import Snackbar from '../components/Snackbar';
6 |
7 | const SnackbarMessage = (props) => {
8 | return (
9 |
18 | );
19 | };
20 |
21 | SnackbarMessage.propTypes = {
22 | ibcTxInProgress: PropTypes.bool.isRequired,
23 | message: PropTypes.string.isRequired,
24 | open: PropTypes.bool.isRequired,
25 | onClose: PropTypes.func.isRequired,
26 | explorer: PropTypes.string,
27 | hash: PropTypes.string,
28 | variant: PropTypes.string,
29 | };
30 |
31 | const stateToProps = (state) => {
32 | return {
33 | explorer: state.snackbar.explorer,
34 | ibcTxInProgress: state.account.ibc.ibcTxInProgress,
35 | open: state.snackbar.open,
36 | message: state.snackbar.message,
37 | variant: state.snackbar.variant,
38 | hash: state.snackbar.hash,
39 | };
40 | };
41 |
42 | const actionsToProps = {
43 | onClose: hideSnackbar,
44 | };
45 |
46 | export default connect(stateToProps, actionsToProps)(SnackbarMessage);
47 |
--------------------------------------------------------------------------------
/src/index.css:
--------------------------------------------------------------------------------
1 | body {
2 | margin: 0;
3 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
4 | 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
5 | sans-serif;
6 | }
7 |
8 | code {
9 | font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
10 | monospace;
11 | }
12 |
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | // eslint-disable-next-line
4 | import { Provider } from 'react-redux';
5 | import { BrowserRouter, Route } from 'react-router-dom';
6 | import { applyMiddleware, createStore } from 'redux';
7 | import thunk from 'redux-thunk';
8 | import App from './App';
9 | import './index.css';
10 | import reducer from './reducers';
11 | import { composeWithDevTools } from 'redux-devtools-extension/developmentOnly';
12 | import * as serviceWorker from './serviceWorker';
13 |
14 | const store = createStore(
15 | reducer,
16 | composeWithDevTools({
17 | trace: true,
18 | })(applyMiddleware(
19 | thunk)),
20 | );
21 |
22 | const app = (
23 |
24 |
25 |
26 |
27 |
28 | );
29 |
30 | ReactDOM.render(app, document.getElementById('root'));
31 | serviceWorker.unregister();
32 |
--------------------------------------------------------------------------------
/src/react-app-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/src/reducers/account/index.js:
--------------------------------------------------------------------------------
1 | import { combineReducers } from 'redux';
2 | import BCDetails from './BCDetails';
3 | import wallet from './wallet';
4 | import { CHAIN_ID_SET, CONFIRM_DEPOSIT_SET, CONFIRM_WITHDRAW_SET } from '../../constants/account';
5 | import { tokensList } from '../../utils/defaultOptions';
6 | import {
7 | IBC_TOKENS_LIST_FETCH_ERROR,
8 | IBC_TOKENS_LIST_FETCH_IN_PROGRESS,
9 | IBC_TOKENS_LIST_FETCH_SUCCESS,
10 | } from '../../constants/marketplace';
11 | import IBCTokens from './IBCTokens';
12 | import { DEPOSITE_DIALOG_HIDE, WITHDRAW_DIALOG_HIDE } from '../../constants/myAccount';
13 |
14 | const chainID = (state = {
15 | inProgress: false,
16 | value: tokensList[0],
17 | list: [],
18 | }, action) => {
19 | switch (action.type) {
20 | case CHAIN_ID_SET:
21 | return {
22 | ...state,
23 | value: action.value,
24 | };
25 | case IBC_TOKENS_LIST_FETCH_IN_PROGRESS:
26 | return {
27 | ...state,
28 | inProgress: true,
29 | };
30 | case IBC_TOKENS_LIST_FETCH_SUCCESS: {
31 | const array = [...action.value];
32 | return {
33 | ...state,
34 | inProgress: false,
35 | list: [...array],
36 | };
37 | }
38 | case IBC_TOKENS_LIST_FETCH_ERROR:
39 | return {
40 | ...state,
41 | inProgress: false,
42 | };
43 | default:
44 | return state;
45 | }
46 | };
47 |
48 | const confirmDeposit = (state = false, action) => {
49 | switch (action.type) {
50 | case CONFIRM_DEPOSIT_SET:
51 | return action.value;
52 | case DEPOSITE_DIALOG_HIDE:
53 | return false;
54 |
55 | default:
56 | return state;
57 | }
58 | };
59 |
60 | const confirmWithdraw = (state = false, action) => {
61 | switch (action.type) {
62 | case CONFIRM_WITHDRAW_SET:
63 | return action.value;
64 | case WITHDRAW_DIALOG_HIDE:
65 | return false;
66 |
67 | default:
68 | return state;
69 | }
70 | };
71 |
72 | export default combineReducers({
73 | chainID,
74 | wallet,
75 | bc: BCDetails,
76 | ibc: IBCTokens,
77 | confirmDeposit,
78 | confirmWithdraw,
79 | });
80 |
--------------------------------------------------------------------------------
/src/reducers/campaign.js:
--------------------------------------------------------------------------------
1 | import { combineReducers } from 'redux';
2 | import {
3 | FEE_GRANT_ALLOWANCE_ERROR,
4 | FEE_GRANT_ALLOWANCE_IN_PROGRESS,
5 | FEE_GRANT_ALLOWANCE_SUCCESS,
6 | } from '../constants/campaign';
7 |
8 | const feeGrant = (state = {
9 | inProgress: false,
10 | value: {},
11 | }, action) => {
12 | switch (action.type) {
13 | case FEE_GRANT_ALLOWANCE_IN_PROGRESS:
14 | return {
15 | ...state,
16 | inProgress: true,
17 | };
18 | case FEE_GRANT_ALLOWANCE_SUCCESS:
19 | return {
20 | inProgress: false,
21 | value: action.value,
22 | };
23 | case FEE_GRANT_ALLOWANCE_ERROR:
24 | return {
25 | ...state,
26 | inProgress: false,
27 | };
28 | default:
29 | return state;
30 | }
31 | };
32 |
33 | export default combineReducers({
34 | feeGrant,
35 | });
36 |
--------------------------------------------------------------------------------
/src/reducers/collection/filters.js:
--------------------------------------------------------------------------------
1 | import { combineReducers } from 'redux';
2 | import { ACTIVE_CARD_SET } from '../../constants/explore';
3 | import { coinsList, onSaleList } from '../../utils/filters';
4 | import { tokensList } from '../../utils/defaultOptions';
5 | import {
6 | COLLECTION_FILTERS_HIDE,
7 | COLLECTION_FILTERS_SHOW,
8 | COLLECTION_ON_SALE_IN_SEARCH_SET,
9 | COLLECTION_ON_SALE_IN_SET,
10 | COLLECTION_PRICE_RANGE_COIN_SET,
11 | COLLECTION_PRICE_RANGE_SET,
12 | } from '../../constants/collections';
13 |
14 | const showCollectionFilter = (state = false, action) => {
15 | switch (action.type) {
16 | case COLLECTION_FILTERS_SHOW:
17 | return true;
18 | case COLLECTION_FILTERS_HIDE:
19 | case ACTIVE_CARD_SET:
20 | return false;
21 | default:
22 | return state;
23 | }
24 | };
25 |
26 | const priceRangeCollection = (state = {
27 | list: coinsList,
28 | value: tokensList && tokensList.length && tokensList[0],
29 | range: [0, 50000],
30 | min: 0,
31 | max: 50000,
32 | }, action) => {
33 | switch (action.type) {
34 | case COLLECTION_PRICE_RANGE_COIN_SET:
35 | return {
36 | ...state,
37 | value: action.value,
38 | };
39 | case COLLECTION_PRICE_RANGE_SET:
40 | return {
41 | ...state,
42 | range: action.value,
43 | };
44 | default:
45 | return state;
46 | }
47 | };
48 |
49 | const onSaleInCollection = (state = {
50 | list: onSaleList,
51 | value: new Set(),
52 | search: '',
53 | }, action) => {
54 | switch (action.type) {
55 | case COLLECTION_ON_SALE_IN_SET:
56 | return {
57 | ...state,
58 | value: action.value,
59 | };
60 | case COLLECTION_ON_SALE_IN_SEARCH_SET:
61 | return {
62 | ...state,
63 | search: action.value,
64 | };
65 | default:
66 | return state;
67 | }
68 | };
69 |
70 | export default combineReducers({
71 | showCollectionFilter,
72 | priceRangeCollection,
73 | onSaleInCollection,
74 | });
75 |
--------------------------------------------------------------------------------
/src/reducers/explore.js:
--------------------------------------------------------------------------------
1 | import { combineReducers } from 'redux';
2 | import { ACTIVE_CARD_HIDE, ACTIVE_CARD_SET } from '../constants/explore';
3 | import { FILTERS_SHOW } from '../constants/filters';
4 |
5 | const activeCard = (state = {
6 | open: false,
7 | value: {},
8 | activeNFTID: '',
9 | }, action) => {
10 | switch (action.type) {
11 | case ACTIVE_CARD_SET:
12 | return {
13 | open: true,
14 | value: action.value,
15 | activeNFTID: action.value && action.value.nftDetails && action.value.nftDetails.id,
16 | };
17 | case ACTIVE_CARD_HIDE:
18 | case FILTERS_SHOW:
19 | return {
20 | open: false,
21 | value: {},
22 | activeNFTID: '',
23 | };
24 | default:
25 | return state;
26 | }
27 | };
28 |
29 | export default combineReducers({
30 | activeCard,
31 | });
32 |
--------------------------------------------------------------------------------
/src/reducers/index.js:
--------------------------------------------------------------------------------
1 | import { combineReducers } from 'redux';
2 | import language from './language';
3 | import snackbar from './snackbar';
4 | import account from './account';
5 | import navbar from './navbar';
6 | import filters from './filters';
7 | import explore from './explore';
8 | import marketplace from './marketplace';
9 | import activity from './activity';
10 | import myAccount from './myAccount';
11 | import faucet from './faucet';
12 | import collection from './collection';
13 | import campaign from './campaign';
14 | import home from './home';
15 | import auctions from './auctions';
16 |
17 | export default combineReducers({
18 | account,
19 | auctions,
20 | language,
21 | snackbar,
22 | explore,
23 | navbar,
24 | filters,
25 | marketplace,
26 | activity,
27 | myAccount,
28 | faucet,
29 | collection,
30 | campaign,
31 | home,
32 | });
33 |
--------------------------------------------------------------------------------
/src/reducers/language.js:
--------------------------------------------------------------------------------
1 | const language = (state = 'en') => {
2 | return state;
3 | };
4 |
5 | export default language;
6 |
--------------------------------------------------------------------------------
/src/reducers/navbar.js:
--------------------------------------------------------------------------------
1 | import { combineReducers } from 'redux';
2 | import {
3 | CONNECT_DIALOG_HIDE,
4 | CONNECT_DIALOG_SHOW,
5 | HIDE_SIDE_BAR_SET,
6 | SEARCH_VALUE_SET,
7 | SHOW_SIDE_BAR_SET,
8 | } from '../constants/navbar';
9 |
10 | const searchValue = (state = '', action) => {
11 | if (action.type === SEARCH_VALUE_SET) {
12 | return action.value;
13 | }
14 |
15 | return state;
16 | };
17 |
18 | const show = (state = false, action) => {
19 | switch (action.type) {
20 | case SHOW_SIDE_BAR_SET:
21 | return true;
22 | case HIDE_SIDE_BAR_SET:
23 | return false;
24 | default:
25 | return state;
26 | }
27 | };
28 |
29 | const connectDialog = (state = false, action) => {
30 | switch (action.type) {
31 | case CONNECT_DIALOG_SHOW:
32 | return true;
33 | case CONNECT_DIALOG_HIDE:
34 | return false;
35 | default:
36 | return state;
37 | }
38 | };
39 |
40 | export default combineReducers({
41 | searchValue,
42 | show,
43 | connectDialog,
44 | });
45 |
--------------------------------------------------------------------------------
/src/reducers/snackbar.js:
--------------------------------------------------------------------------------
1 | import { MESSAGE_SHOW, SNACKBAR_HIDE } from '../constants/snackbar';
2 | import {
3 | CONNECT_KEPLR_ACCOUNT_ERROR,
4 | TX_HASH_FETCH_SUCCESS,
5 | TX_SIGN_AND_BROAD_CAST_ERROR,
6 | TX_SIGN_AND_BROAD_CAST_SUCCESS,
7 | TX_SIGN_ERROR,
8 | WALLET_CONNECT_ERROR,
9 | } from '../constants/wallet';
10 | import { CONNECT_BC_ACCOUNT_ERROR, VERIFY_ACCOUNT_ERROR, VERIFY_ACCOUNT_SUCCESS } from '../constants/account';
11 | import {
12 | AMINO_SIGN_IBC_TX_ERROR,
13 | AMINO_SIGN_IBC_TX_SUCCESS,
14 | CONNECT_IBC_ACCOUNT_ERROR,
15 | IBC_BALANCE_FETCH_ERROR,
16 | IBC_TX_IN_PROGRESS_SET,
17 | TIMEOUT_HEIGHT_FETCH_ERROR,
18 | } from '../constants/IBCTokens';
19 | import { FAUCET_BALANCE_ADD_ERROR } from '../constants/faucet';
20 | import { FEE_GRANT_ALLOWANCE_ERROR, FEE_GRANT_ALLOWANCE_SUCCESS } from '../constants/campaign';
21 |
22 | const snackbar = (state = {
23 | open: false,
24 | message: '',
25 | explorer: null,
26 | }, action) => {
27 | switch (action.type) {
28 | case FEE_GRANT_ALLOWANCE_SUCCESS:
29 | case FEE_GRANT_ALLOWANCE_ERROR:
30 | case CONNECT_BC_ACCOUNT_ERROR:// BC Account
31 | case CONNECT_KEPLR_ACCOUNT_ERROR:
32 | case WALLET_CONNECT_ERROR:
33 | case VERIFY_ACCOUNT_ERROR:
34 | case VERIFY_ACCOUNT_SUCCESS:
35 | case TX_SIGN_ERROR:
36 | case TX_SIGN_AND_BROAD_CAST_ERROR:
37 | case TX_SIGN_AND_BROAD_CAST_SUCCESS:
38 | case TX_HASH_FETCH_SUCCESS:
39 | case FAUCET_BALANCE_ADD_ERROR:
40 | case CONNECT_IBC_ACCOUNT_ERROR:// IBC Account
41 | case IBC_BALANCE_FETCH_ERROR:
42 | case AMINO_SIGN_IBC_TX_SUCCESS:
43 | case AMINO_SIGN_IBC_TX_ERROR:
44 | case TIMEOUT_HEIGHT_FETCH_ERROR:
45 | case MESSAGE_SHOW:
46 | return {
47 | open: true,
48 | message: action.message,
49 | variant: action.variant,
50 | hash: action.hash,
51 | explorer: action.explorer ? action.explorer : null,
52 | };
53 | case SNACKBAR_HIDE:
54 | return {
55 | open: false,
56 | message: '',
57 | variant: '',
58 | hash: '',
59 | explorer: null,
60 | };
61 | case IBC_TX_IN_PROGRESS_SET:
62 | if (action.type === false) {
63 | return {
64 | open: false,
65 | message: '',
66 | };
67 | }
68 | return state;
69 | default:
70 | return state;
71 | }
72 | };
73 |
74 | export default snackbar;
75 |
--------------------------------------------------------------------------------
/src/registry/omniflix_custom_ts_types/gogoproto/gogo.ts:
--------------------------------------------------------------------------------
1 | /* eslint-disable */
2 | import {configure, util} from "protobufjs/minimal";
3 | import Long from "long";
4 |
5 | export const protobufPackage = "gogoproto";
6 |
7 | // If you get a compile-error about 'Constructor and ... have no overlap',
8 | // add '--ts_proto_opt=esModuleInterop=true' as a flag when calling 'protoc'.
9 | if (util.Long !== Long) {
10 | util.Long = Long as any;
11 | configure();
12 | }
13 |
--------------------------------------------------------------------------------
/src/registry/omniflix_custom_ts_types/google/api/annotations.ts:
--------------------------------------------------------------------------------
1 | /* eslint-disable */
2 | import {configure, util} from "protobufjs/minimal";
3 | import Long from "long";
4 |
5 | export const protobufPackage = "google.api";
6 |
7 | // If you get a compile-error about 'Constructor and ... have no overlap',
8 | // add '--ts_proto_opt=esModuleInterop=true' as a flag when calling 'protoc'.
9 | if (util.Long !== Long) {
10 | util.Long = Long as any;
11 | configure();
12 | }
13 |
--------------------------------------------------------------------------------
/src/utils/address.js:
--------------------------------------------------------------------------------
1 | import { Bech32 } from '@cosmjs/encoding';
2 |
3 | export const decodeFromBech32 = (key) => {
4 | try {
5 | Bech32.decode(key);
6 | return true;
7 | } catch (e) {
8 | return false;
9 | }
10 | };
11 |
--------------------------------------------------------------------------------
/src/utils/arrays.js:
--------------------------------------------------------------------------------
1 | export const randomNoRepeats = (array) => {
2 | for (let i = array.length - 1; i > 0; i--) {
3 | const j = Math.floor(Math.random() * (i + 1));
4 | [array[i], array[j]] = [array[j], array[i]];
5 | }
6 |
7 | return array;
8 | };
9 |
--------------------------------------------------------------------------------
/src/utils/defaultOptions.js:
--------------------------------------------------------------------------------
1 | import { config } from '../config';
2 |
3 | export const tokensList = [{
4 | network: config,
5 | value: 'uflix',
6 | label: 'FLIX',
7 | }];
8 |
9 | export const auctionsList = [{
10 | value: '',
11 | label: 'All',
12 | }, {
13 | value: 'myAuctions',
14 | label: 'My Auctions',
15 | }, {
16 | value: 'myBids',
17 | label: 'My Bids',
18 | }];
19 |
--------------------------------------------------------------------------------
/src/utils/filters.js:
--------------------------------------------------------------------------------
1 | export const statusList = [{
2 | name: 'Buy Now',
3 | value: 'buy_now',
4 | }, {
5 | name: 'On Auction',
6 | value: 'auction',
7 | }, {
8 | name: 'New',
9 | value: 'new',
10 | }, {
11 | name: 'Has Offers',
12 | value: 'offers',
13 | }];
14 |
15 | export const coinsList = [{
16 | name: 'FLIX',
17 | }, {
18 | name: 'USD',
19 | }, {
20 | name: 'JUNO',
21 | }, {
22 | name: 'ATOM',
23 | }, {
24 | name: 'AKT',
25 | }];
26 |
27 | export const genreList = [{
28 | name: 'Action',
29 | value: 'action',
30 | }, {
31 | name: 'Adventure',
32 | value: 'adventure',
33 | }, {
34 | name: 'Comedy',
35 | value: 'comedy',
36 | }, {
37 | name: 'Fantasy',
38 | value: 'fantasy',
39 | }, {
40 | name: 'Horror',
41 | value: 'horror',
42 | }, {
43 | name: 'Thriller',
44 | value: 'thriller',
45 | }, {
46 | name: 'Documentary',
47 | value: 'documentary',
48 | }, {
49 | name: 'Sports',
50 | value: 'sports',
51 | }, {
52 | name: 'Romantic',
53 | value: 'romantic',
54 | }, {
55 | name: 'Crime',
56 | value: 'crime',
57 | }, {
58 | name: 'Sci-Fi',
59 | value: 'sci_fi',
60 | }, {
61 | name: 'War',
62 | value: 'war',
63 | }, {
64 | name: 'Biographies',
65 | value: 'biographies',
66 | }];
67 |
68 | export const collectionsList = ['CryptoPunk', 'Dragon Coins', 'Art of Bala', 'Ninja Kids', 'Elon Musk Emoji'];
69 | export const chainsList = ['OmniFlix Network', 'Smart Chain', 'KAVA', 'Sentinel', 'JUNO', 'OSMOSIS'];
70 | export const onSaleList = ['FLIX', 'BNC', 'DVPN', 'ATOM', 'ETH', 'JUNO', 'OSMOSIS'];
71 |
72 | export const typesList = [{
73 | name: 'Videos',
74 | value: 'videos',
75 | }, {
76 | name: 'Gifs',
77 | value: 'gifs',
78 | }, {
79 | name: 'Images',
80 | value: 'images',
81 | }, {
82 | name: 'Music',
83 | value: 'music',
84 | }, {
85 | name: 'Podcast',
86 | value: 'podcast',
87 | }, {
88 | name: 'Files',
89 | value: 'files',
90 | }];
91 |
--------------------------------------------------------------------------------
/src/utils/numbers.js:
--------------------------------------------------------------------------------
1 | export const splitDecimals = (value) => {
2 | return value.toString().split('.');
3 | };
4 |
5 | export const commaSeparator = (value) => {
6 | return value.replace(/\B(?=(\d{3})+(?!\d))/g, ',');
7 | };
8 |
9 | export const mathCeilDecimals = (value, decimal) => {
10 | let decimalLength = null;
11 | if ((value % 1) !== 0) {
12 | const amount = value.toString().split('.');
13 | if (amount && amount.length && amount[1]) {
14 | decimalLength = amount[1].length;
15 | }
16 | }
17 |
18 | if (decimalLength > 2) {
19 | value = value * (10 ** decimal);
20 | value = Math.ceil(value);
21 | value = value / (10 ** decimal);
22 |
23 | return value;
24 | }
25 |
26 | return value;
27 | };
28 |
29 | export const noExponent = (value) => {
30 | const data = String(value).split(/[eE]/);
31 |
32 | if (data.length === 1) {
33 | return data[0];
34 | }
35 |
36 | let z = '';
37 | const sign = this < 0 ? '-' : '';
38 | const str = data[0].replace('.', '');
39 | let mag = Number(data[1]) + 1;
40 |
41 | if (mag < 0) {
42 | z = sign + '0.';
43 | while (mag++) {
44 | z += '0';
45 | }
46 | return z + str.replace(/^\\-/, '');
47 | }
48 |
49 | mag -= str.length;
50 |
51 | while (mag--) {
52 | z += '0';
53 | }
54 | return str + z;
55 | };
56 |
--------------------------------------------------------------------------------
/src/utils/price.js:
--------------------------------------------------------------------------------
1 | const COUNT_ABBRS = ['', 'K', 'M', 'B', 'T', 'P', 'E', 'Z', 'Y'];
2 |
3 | export const formatCount = (count, withAbbr = false, decimals = 4) => {
4 | const i = (count === 0) ? count : Math.floor(Math.log(count) / Math.log(1000));
5 | let result = parseFloat((count / Math.pow(1000, i)).toFixed(decimals));
6 | if (withAbbr) {
7 | result += `${COUNT_ABBRS[i]}`;
8 | }
9 |
10 | return result;
11 | };
12 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es5",
4 | "lib": [
5 | "dom",
6 | "dom.iterable",
7 | "esnext"
8 | ],
9 | "downlevelIteration": true,
10 | "allowJs": true,
11 | "skipLibCheck": true,
12 | "esModuleInterop": true,
13 | "allowSyntheticDefaultImports": true,
14 | "strict": true,
15 | "forceConsistentCasingInFileNames": true,
16 | "module": "esnext",
17 | "moduleResolution": "node",
18 | "resolveJsonModule": true,
19 | "isolatedModules": true,
20 | "noEmit": true,
21 | "jsx": "react"
22 | },
23 | "include": [
24 | "src"
25 | ]
26 | }
27 |
--------------------------------------------------------------------------------