├── .editorconfig ├── .env-cmdrc ├── .gitignore ├── .husky └── pre-commit ├── .linguirc ├── .prettierrc.json ├── .yarn └── releases │ └── yarn-3.1.0.cjs ├── .yarnrc.yml ├── LICENSE ├── README.md ├── netlify.toml ├── package.json ├── public ├── android-chrome-192x192.png ├── android-chrome-512x512.png ├── apple-touch-icon.png ├── arbitrum.svg ├── binance.svg ├── charting_library │ ├── ar-tv-chart.e2a841ff.html │ ├── bundles │ │ ├── 0579d40b812fa2c3ffe72e5803a6e14c.cur │ │ ├── 1403.5c193407bf9023ec51df.css │ │ ├── 1403.5c193407bf9023ec51df.rtl.css │ │ ├── 1413.0beb5c102530e80c962f.css │ │ ├── 1413.0beb5c102530e80c962f.rtl.css │ │ ├── 1529.30943dc0c4f6a9ddaaa6.js │ │ ├── 167.4a7b6d5ac49e0365fb9f.css │ │ ├── 167.4a7b6d5ac49e0365fb9f.rtl.css │ │ ├── 1778.3dcfedd5fc468612cdc9.css │ │ ├── 1778.3dcfedd5fc468612cdc9.rtl.css │ │ ├── 1829.1d41207f53b42b7a2cba.js │ │ ├── 1941.ae71d13122bc90f281f2.css │ │ ├── 1941.ae71d13122bc90f281f2.rtl.css │ │ ├── 1df47f578aeef40dd1f2328338a133be.png │ │ ├── 2091.b5cd26b120d8f015a5f6.css │ │ ├── 2091.b5cd26b120d8f015a5f6.rtl.css │ │ ├── 2162.da7cb9d498f064a9ef84.css │ │ ├── 2162.da7cb9d498f064a9ef84.rtl.css │ │ ├── 2269.e35db23226edaf77f36d.css │ │ ├── 2269.e35db23226edaf77f36d.rtl.css │ │ ├── 2273.c8e768dcdd52b58e948e.css │ │ ├── 2273.c8e768dcdd52b58e948e.rtl.css │ │ ├── 2321.4f5fec7d39b99277caa5.css │ │ ├── 2321.4f5fec7d39b99277caa5.rtl.css │ │ ├── 2359.18a49f656f3259463f4f.css │ │ ├── 2359.18a49f656f3259463f4f.rtl.css │ │ ├── 2391.07217bcacc2a0c3b5526.js │ │ ├── 2402.4ce4e3425dce9bceed85.js │ │ ├── 2444.89916595bdde00535f06.js │ │ ├── 2614.9b290389192f690dd33c.css │ │ ├── 2614.9b290389192f690dd33c.rtl.css │ │ ├── 2778.22f147dbe677a02ae3db.css │ │ ├── 2778.22f147dbe677a02ae3db.rtl.css │ │ ├── 2850.8a920beb86b4e0f023f2.css │ │ ├── 2850.8a920beb86b4e0f023f2.rtl.css │ │ ├── 306.547d2bcc2b4af2c3a922.js │ │ ├── 3223.783979b0683ba0a325de.css │ │ ├── 3223.783979b0683ba0a325de.rtl.css │ │ ├── 3293616ec0c605c7c2db25829a0a509e.woff │ │ ├── 339.79f004acba5fa5c1b85f.css │ │ ├── 339.79f004acba5fa5c1b85f.rtl.css │ │ ├── 3463.65423ae1c1f3301a6bc0.js │ │ ├── 3537.273ebe86a4260eff8e80.css │ │ ├── 3537.273ebe86a4260eff8e80.rtl.css │ │ ├── 3590.9ba8c934cf8289ea708f.js │ │ ├── 3708.b21be6dee862262304cf.css │ │ ├── 3708.b21be6dee862262304cf.rtl.css │ │ ├── 3876.fbb750fd312778403036.css │ │ ├── 3876.fbb750fd312778403036.rtl.css │ │ ├── 3894.6c50d72ee9e079af3dab.css │ │ ├── 3894.6c50d72ee9e079af3dab.rtl.css │ │ ├── 3996.3cdbd2dcf744b8239723.css │ │ ├── 3996.3cdbd2dcf744b8239723.rtl.css │ │ ├── 40566afd832a155e5e370a8bd423de4b.svg │ │ ├── 4078.43552fd4fee41d29f435.css │ │ ├── 4078.43552fd4fee41d29f435.rtl.css │ │ ├── 4093.8b84af355871cc700cb8.js │ │ ├── 40f9a03d174178efb12303caa9bc7cd8.woff2 │ │ ├── 4336.1228643b9325cd73ea59.css │ │ ├── 4336.1228643b9325cd73ea59.rtl.css │ │ ├── 439.cf0a8c77353b34e465e2.css │ │ ├── 439.cf0a8c77353b34e465e2.rtl.css │ │ ├── 4595.6423e4f6860a7dd905ff.css │ │ ├── 4595.6423e4f6860a7dd905ff.rtl.css │ │ ├── 4652.c4c887154b57ce62bd2d.css │ │ ├── 4652.c4c887154b57ce62bd2d.rtl.css │ │ ├── 4736.2eccdb294faa8c6685ac.css │ │ ├── 4736.2eccdb294faa8c6685ac.rtl.css │ │ ├── 4834.07c319579bda11b57fc3.css │ │ ├── 4834.07c319579bda11b57fc3.rtl.css │ │ ├── 4882.acb0c10fdfd40a912b89.css │ │ ├── 4882.acb0c10fdfd40a912b89.rtl.css │ │ ├── 4940.6aeb4a6f298568a71905.js │ │ ├── 4985.6abfd9453389325f7436.css │ │ ├── 4985.6abfd9453389325f7436.rtl.css │ │ ├── 4a9abefd31dab7c8239e02e925aacd78.png │ │ ├── 4fafff07d8914dc11f6d335f606ff47c.png │ │ ├── 5019.5e7f23f81809b4af9b28.js │ │ ├── 5030.3f535fc5b94422bc913a.js │ │ ├── 5254.776db7a6898f96fdd81f.js │ │ ├── 5383.22c502e2ba80f4b4fc32.js │ │ ├── 5410.21bcd4914bfb1cf880be.css │ │ ├── 5410.21bcd4914bfb1cf880be.rtl.css │ │ ├── 5453.142c8996edfadb5669ae.css │ │ ├── 5453.142c8996edfadb5669ae.rtl.css │ │ ├── 5527.b19a3c2c68b0d873fe2b.css │ │ ├── 5527.b19a3c2c68b0d873fe2b.rtl.css │ │ ├── 5551.407668886ab3145df3b5.css │ │ ├── 5551.407668886ab3145df3b5.rtl.css │ │ ├── 5637.a1b98549b1c9f19a01cf.css │ │ ├── 5637.a1b98549b1c9f19a01cf.rtl.css │ │ ├── 5698.9f7ef23e439b8f550541.css │ │ ├── 5698.9f7ef23e439b8f550541.rtl.css │ │ ├── 587.144039f5c693ee079edb.css │ │ ├── 587.144039f5c693ee079edb.rtl.css │ │ ├── 5984.fce1e6b0306b3072be07.css │ │ ├── 5984.fce1e6b0306b3072be07.rtl.css │ │ ├── 6062.56b57d0c5c641ee6c503.css │ │ ├── 6062.56b57d0c5c641ee6c503.rtl.css │ │ ├── 6143.1f43f1c13a5153841646.css │ │ ├── 6143.1f43f1c13a5153841646.rtl.css │ │ ├── 6253.8ddff4c976b3edf9f34c.css │ │ ├── 6253.8ddff4c976b3edf9f34c.rtl.css │ │ ├── 6333.75d8cc7be7c14f60fb3b.css │ │ ├── 6333.75d8cc7be7c14f60fb3b.rtl.css │ │ ├── 6473.e5bfe6a8cd8097cebb56.css │ │ ├── 6473.e5bfe6a8cd8097cebb56.rtl.css │ │ ├── 6548.bda2305976fecdd6ca1a.css │ │ ├── 6548.bda2305976fecdd6ca1a.rtl.css │ │ ├── 6612.6ea4b89e354fef333be4.css │ │ ├── 6612.6ea4b89e354fef333be4.rtl.css │ │ ├── 6637.b9569ad7b9c1ffb59c7c.css │ │ ├── 6637.b9569ad7b9c1ffb59c7c.rtl.css │ │ ├── 7039.873153a7278857ebfcd1.css │ │ ├── 7039.873153a7278857ebfcd1.rtl.css │ │ ├── 706.af12d57a740fb6b1ba5b.css │ │ ├── 706.af12d57a740fb6b1ba5b.rtl.css │ │ ├── 708.7f4b99c8dfd3f4cda1d1.js │ │ ├── 7353.9bb4f9381a2ee34bec3c.css │ │ ├── 7353.9bb4f9381a2ee34bec3c.rtl.css │ │ ├── 7365.fb40181a46db7cf2d8b0.js │ │ ├── 7371.81bb2bc38b8ec23308e1.js │ │ ├── 739.ac9682232ee125adb331.js │ │ ├── 7393f661fc7d4389ea6d4dabd2a5aeea.png │ │ ├── 7400.30502d5397989951046f.css │ │ ├── 7400.30502d5397989951046f.rtl.css │ │ ├── 7591.cea4aee1089cbf340ee7.js │ │ ├── 7607.99350c6a482907066b03.css │ │ ├── 7607.99350c6a482907066b03.rtl.css │ │ ├── 7610.9e79032a52ca259701ef.css │ │ ├── 7610.9e79032a52ca259701ef.rtl.css │ │ ├── 7703.be823882173b57ef030c.js │ │ ├── 7757.6d2b490c3cc2ed78d4dd.css │ │ ├── 7757.6d2b490c3cc2ed78d4dd.rtl.css │ │ ├── 7799.681df0cf83dba8ef3cc5.js │ │ ├── 7936.1e4e780ffda134d965f5.css │ │ ├── 7936.1e4e780ffda134d965f5.rtl.css │ │ ├── 7962.eed46026b7fd77b57cb3.js │ │ ├── 7e0cc5f7d7f5151500dd60b8d6ca60a1.png │ │ ├── 8193.01090d4d9384825040ad.css │ │ ├── 8193.01090d4d9384825040ad.rtl.css │ │ ├── 83.46ce2798763a3d5c2748.css │ │ ├── 83.46ce2798763a3d5c2748.rtl.css │ │ ├── 8434.99d7135551ebc9e84366.js │ │ ├── 8445.e3ed5f183ca7539d37f0.css │ │ ├── 8445.e3ed5f183ca7539d37f0.rtl.css │ │ ├── 847.0e2ec220427667ac4afb.js │ │ ├── 8604.9200d240b82687bc2a27.css │ │ ├── 8604.9200d240b82687bc2a27.rtl.css │ │ ├── 8625.2718a9cf5d44ca766c9d.js │ │ ├── 8680.a98f949c3d71bf32d2c7.js │ │ ├── 8856.15adfc3af04a9cdeadc5.css │ │ ├── 8856.15adfc3af04a9cdeadc5.rtl.css │ │ ├── 8858.535457f61e1b51d9add2.css │ │ ├── 8858.535457f61e1b51d9add2.rtl.css │ │ ├── 8933.9d36818107c1f276f948.css │ │ ├── 8933.9d36818107c1f276f948.rtl.css │ │ ├── 8969.d72c3357aff6000fd03e.css │ │ ├── 8969.d72c3357aff6000fd03e.rtl.css │ │ ├── 898929f1acdb622689e0fc0c95c8fcd0.png │ │ ├── 9256.c6fbca120598828685f3.css │ │ ├── 9256.c6fbca120598828685f3.rtl.css │ │ ├── 9305.009b7d4c21c45de9ca48.css │ │ ├── 9305.009b7d4c21c45de9ca48.rtl.css │ │ ├── 9354.a21ae4055d6f7729f892.css │ │ ├── 9354.a21ae4055d6f7729f892.rtl.css │ │ ├── 9423.0ad3a6d06b6bac488bb0.css │ │ ├── 9423.0ad3a6d06b6bac488bb0.rtl.css │ │ ├── 9448.cd38beceb14c87b723f6.css │ │ ├── 9448.cd38beceb14c87b723f6.rtl.css │ │ ├── 9602.a0fc3bf3e40760a87f74.css │ │ ├── 9602.a0fc3bf3e40760a87f74.rtl.css │ │ ├── 9628.8f8514eafeb1da3bbdee.js │ │ ├── 9772.0967c8fb7beae0056cf7.js │ │ ├── 9843.9822f0a3a15262042b3e.css │ │ ├── 9843.9822f0a3a15262042b3e.rtl.css │ │ ├── 9917.f67e7443dbbc7357fda3.css │ │ ├── 9917.f67e7443dbbc7357fda3.rtl.css │ │ ├── a6506134daec7169f68f563f084a9d41.svg │ │ ├── add-compare-dialog.0e0f4b81cf8178378c14.js │ │ ├── b1a63a011fd92dfb93db6db243bb036c.woff2 │ │ ├── change-interval-dialog.15fea722d205fbdde7d1.js │ │ ├── chart-bottom-toolbar.05a57b6389d7ddc2a351.js │ │ ├── chart-event-hint.cb517ed06ee9725b8a76.js │ │ ├── chart-screenshot-hint.6d0f2e7ac3cebd7b650c.js │ │ ├── chart-widget-gui.9891573a47b469e91df5.js │ │ ├── compare-model.08356f64fbfcdcdc3776.js │ │ ├── context-menu-renderer.9a0385060e4241baf12d.js │ │ ├── currency-label-menu.6dde8a17826b1fb3712c.js │ │ ├── custom-intervals-add-dialog.3506afd973a0a43dc42a.js │ │ ├── drawing-toolbar.8399395e7103ba30e756.js │ │ ├── ed68e83c16f77203e73dbc4c3a7c7fa1.cur │ │ ├── export-data.429732b8c4ae52bcac7d.js │ │ ├── f55394b616ed1ae9462c37daab941d93.png │ │ ├── floating-toolbars.913e12fe2b73959f49ca.js │ │ ├── full-tooltips-popup.c97f4f88ba2959dd66bb.js │ │ ├── general-chart-properties-dialog.742b577b84c6f9fdb26f.js │ │ ├── general-property-page.86f95ff011c77a44071d.js │ │ ├── get-error-card.dfe1662b6e974e519b68.js │ │ ├── go-to-date-dialog-impl.dadfac644efdcd254d91.js │ │ ├── hammerjs.c69dac2431e462e3fc71.js │ │ ├── header-toolbar.d302e948bcd970bc1897.js │ │ ├── library.1fbbf36d35f97ccfbd00.js │ │ ├── line-tools-icons.2ebfde56d4ef0139cc64.js │ │ ├── load-chart-dialog.418fa6c99a7803f5cc10.js │ │ ├── lollipop-tooltip-renderer.76349a508c9e9d8b8af2.js │ │ ├── lt-pane-views.a54c6c59d86ab4d390bf.js │ │ ├── lt-property-pages-with-definitions.ced0df22c184338b3396.js │ │ ├── manage-drawings-dialog.ce43d4b42ea019cc5518.js │ │ ├── new-confirm-inputs-dialog.88813711209cf273d882.js │ │ ├── new-edit-object-dialog.e069889125138e0cf97a.js │ │ ├── object-tree-dialog.ec325666665d14d13dd5.js │ │ ├── react.13567dea1b1173009d35.js │ │ ├── redux.e48a9c831cd697f8a38d.js │ │ ├── restricted-toolset.8f58ab2a275c8e1f72b1.js │ │ ├── runtime.f1210af3518e525e94d7.js │ │ ├── series-icons-map.9d92dfe755e0c94c0c8d.js │ │ ├── series-pane-views.d49b8ec162ba0c43260c.js │ │ ├── share-chart-to-social-utils.830f7e41690ac8285de5.js │ │ ├── show-theme-save-dialog.b99932982e0d8e47d562.js │ │ ├── simple-dialog.4965864a1f87b628af01.js │ │ ├── source-properties-editor.6854af2788acfa4ef4d4.js │ │ ├── study-inputs-pane-views.1763111669ad2eaa2f52.js │ │ ├── study-market.aaf59e23fa593dd538bc.js │ │ ├── study-pane-views.d9686c973fa1f1a93ff4.js │ │ ├── study-property-pages-with-definitions.72083d0a0868166ca2b7.js │ │ ├── study-template-dialog.fd30d0463b77c8858d31.js │ │ ├── symbol-info-dialog-impl.6aa56a0ae77115394b2f.js │ │ ├── symbol-search-dialog.4e741ef8a94e2a1cdf8c.js │ │ ├── take-chart-image-impl.013638618dfc6d4c1eaa.js │ │ └── vendors.3197279804dd7477f3fb.js │ ├── charting_library.cjs.js │ ├── charting_library.d.ts │ ├── charting_library.esm.js │ ├── charting_library.js │ ├── charting_library.standalone.js │ ├── cs-tv-chart.e2a841ff.html │ ├── da_DK-tv-chart.e2a841ff.html │ ├── datafeed-api.d.ts │ ├── de-tv-chart.e2a841ff.html │ ├── el-tv-chart.e2a841ff.html │ ├── en-tv-chart.e2a841ff.html │ ├── es-tv-chart.e2a841ff.html │ ├── et_EE-tv-chart.e2a841ff.html │ ├── fa-tv-chart.e2a841ff.html │ ├── fr-tv-chart.e2a841ff.html │ ├── he_IL-tv-chart.e2a841ff.html │ ├── hu_HU-tv-chart.e2a841ff.html │ ├── id_ID-tv-chart.e2a841ff.html │ ├── it-tv-chart.e2a841ff.html │ ├── ja-tv-chart.e2a841ff.html │ ├── ko-tv-chart.e2a841ff.html │ ├── ms_MY-tv-chart.e2a841ff.html │ ├── nl_NL-tv-chart.e2a841ff.html │ ├── no-tv-chart.e2a841ff.html │ ├── package.json │ ├── pl-tv-chart.e2a841ff.html │ ├── pt-tv-chart.e2a841ff.html │ ├── ro-tv-chart.e2a841ff.html │ ├── ru-tv-chart.e2a841ff.html │ ├── sk_SK-tv-chart.e2a841ff.html │ ├── sv-tv-chart.e2a841ff.html │ ├── th-tv-chart.e2a841ff.html │ ├── tr-tv-chart.e2a841ff.html │ ├── vi-tv-chart.e2a841ff.html │ ├── zh-tv-chart.e2a841ff.html │ └── zh_TW-tv-chart.e2a841ff.html ├── favicon-16x16.png ├── favicon-32x32.png ├── favicon.ico ├── favicon │ ├── android-icon-144x144.png │ ├── android-icon-192x192.png │ ├── android-icon-36x36.png │ ├── android-icon-48x48.png │ ├── android-icon-72x72.png │ ├── android-icon-96x96.png │ ├── apple-icon-114x114.png │ ├── apple-icon-120x120.png │ ├── apple-icon-144x144.png │ ├── apple-icon-152x152.png │ ├── apple-icon-180x180.png │ ├── apple-icon-57x57.png │ ├── apple-icon-60x60.png │ ├── apple-icon-72x72.png │ ├── apple-icon-76x76.png │ ├── apple-icon-precomposed.png │ ├── apple-icon.png │ ├── browserconfig.xml │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon-96x96.png │ ├── favicon.ico │ ├── manifest.json │ ├── ms-icon-144x144.png │ ├── ms-icon-150x150.png │ ├── ms-icon-310x310.png │ └── ms-icon-70x70.png ├── index.html ├── logo.png ├── og.png ├── robots.txt ├── site.webmanifest └── tradingview-chart.css ├── src ├── App │ ├── App.js │ └── App.scss ├── abis │ ├── ERC721.json │ ├── GMT.json │ ├── GlpManager.json │ ├── GmxMigrator.json │ ├── MintableBaseToken.json │ ├── Multicall.json │ ├── OrderBook.json │ ├── OrderBookReader.json │ ├── OrderExecutor.json │ ├── PositionManager.json │ ├── PositionRouter.json │ ├── Reader.json │ ├── ReaderV2.json │ ├── ReferralStorage.json │ ├── RewardReader.json │ ├── RewardRouter.json │ ├── RewardTracker.json │ ├── Router-v2.json │ ├── Router.json │ ├── Token.json │ ├── Treasury.json │ ├── UniPool.json │ ├── UniswapV2.json │ ├── Vault.json │ ├── VaultReader.json │ ├── VaultV2.json │ ├── VaultV2b.json │ ├── Vester.json │ ├── WETH.json │ ├── YieldFarm.json │ └── YieldToken.json ├── charting_library.d.ts ├── components │ ├── APRLabel │ │ └── APRLabel.js │ ├── AddressDropdown │ │ ├── AddressDropdown.css │ │ └── AddressDropdown.tsx │ ├── Button │ │ ├── Button.scss │ │ └── Button.tsx │ ├── BuyInputSection │ │ ├── BuyInputSection.css │ │ └── BuyInputSection.js │ ├── Checkbox │ │ ├── Checkbox.css │ │ └── Checkbox.js │ ├── Common │ │ ├── Card.css │ │ ├── Card.tsx │ │ ├── ConnectWalletButton.scss │ │ ├── ConnectWalletButton.tsx │ │ ├── Loader.css │ │ ├── Loader.js │ │ ├── Portal.js │ │ ├── SEO.js │ │ ├── SpinningLoader.css │ │ └── SpinningLoader.js │ ├── EventToast │ │ ├── AnnouncementIcon.js │ │ ├── EventToast.css │ │ ├── EventToast.js │ │ ├── EventToastContainer.js │ │ └── useEventToast.js │ ├── Exchange │ │ ├── ChartTokenSelector.css │ │ ├── ChartTokenSelector.js │ │ ├── ConfirmationBox.css │ │ ├── ConfirmationBox.js │ │ ├── ExchangeBanner.css │ │ ├── ExchangeBanner.js │ │ ├── ExchangeInfoRow.js │ │ ├── ExchangeTVChart.js │ │ ├── ExchangeWalletTokens.css │ │ ├── ExchangeWalletTokens.js │ │ ├── NetValueTooltip.tsx │ │ ├── NoLiquidityErrorModal.tsx │ │ ├── OrderEditor.js │ │ ├── OrdersList.css │ │ ├── OrdersList.js │ │ ├── OrdersToa.css │ │ ├── OrdersToa.js │ │ ├── PositionDropdown.css │ │ ├── PositionDropdown.js │ │ ├── PositionEditor.js │ │ ├── PositionSeller.css │ │ ├── PositionSeller.js │ │ ├── PositionShare.css │ │ ├── PositionShare.js │ │ ├── PositionsList.js │ │ ├── SwapBox.css │ │ ├── SwapBox.js │ │ ├── TokenSelector.css │ │ ├── TokenSelector.js │ │ ├── TradeHistory.css │ │ ├── TradeHistory.js │ │ ├── UsefulLinks.tsx │ │ └── constants.ts │ ├── ExternalLink │ │ ├── ExternalLink.scss │ │ └── ExternalLink.tsx │ ├── Footer │ │ ├── Footer.css │ │ ├── Footer.tsx │ │ └── constants.ts │ ├── Glp │ │ ├── GlpSwap.css │ │ ├── GlpSwap.js │ │ └── SwapErrorModal.tsx │ ├── Header │ │ ├── AppHeaderLinks.tsx │ │ ├── AppHeaderUser.tsx │ │ ├── Header.css │ │ ├── Header.tsx │ │ ├── HeaderLink.tsx │ │ └── HomeHeaderLinks.tsx │ ├── InputSection │ │ ├── InputSection.css │ │ └── InputSection.js │ ├── Migration │ │ ├── Migration.css │ │ └── Migration.js │ ├── Modal │ │ ├── Modal.css │ │ ├── Modal.js │ │ └── ModalWithPortal.js │ ├── ModalViews │ │ ├── RedirectModal.css │ │ └── RedirectModal.js │ ├── NetworkDropdown │ │ ├── LanguageModalContent.js │ │ ├── LanguageModalContent.tsx │ │ ├── LanguagePopupHome.tsx │ │ ├── NetworkDropdown.css │ │ └── NetworkDropdown.tsx │ ├── Overlay │ │ ├── Overlay.css │ │ └── Overlay.js │ ├── Pagination │ │ ├── Pagination.css │ │ └── Pagination.tsx │ ├── Radio │ │ ├── Radio.css │ │ └── Radio.js │ ├── Referrals │ │ ├── AddAffiliateCode.js │ │ ├── AffiliatesStats.js │ │ ├── EmptyMessage.js │ │ ├── InfoCard.js │ │ ├── JoinReferralCode.js │ │ ├── TradersStats.js │ │ ├── referralsHelper.js │ │ └── usePagination.ts │ ├── Stake │ │ └── GMXAprTooltip.tsx │ ├── StatsTooltip │ │ ├── StatsTooltip.css │ │ ├── StatsTooltip.tsx │ │ └── StatsTooltipRow.tsx │ ├── TVChartContainer │ │ ├── SaveLoadAdapter.ts │ │ ├── TVChartContainer.tsx │ │ └── constants.ts │ ├── Tab │ │ ├── Tab.css │ │ └── Tab.js │ ├── ToastifyDebug │ │ └── ToastifyDebug.tsx │ ├── TokenCard │ │ ├── TokenCard.css │ │ └── TokenCard.js │ └── Tooltip │ │ ├── Tooltip.css │ │ ├── Tooltip.tsx │ │ └── TooltipWithPortal.tsx ├── config │ ├── backend.ts │ ├── chains.ts │ ├── contracts.ts │ ├── env.ts │ ├── events.ts │ ├── icons.ts │ ├── links.ts │ ├── localStorage.ts │ ├── subgraph.ts │ ├── tokens.ts │ ├── tradingview.ts │ └── ui.ts ├── domain │ ├── legacy.ts │ ├── positions │ │ └── types.ts │ ├── prices.ts │ ├── referrals.ts │ ├── tokens │ │ ├── approveTokens.tsx │ │ ├── index.ts │ │ ├── types.ts │ │ ├── useInfoTokens.ts │ │ └── utils.ts │ ├── tradingview │ │ ├── TVRequests.ts │ │ ├── requests.ts │ │ ├── useTVDatafeed.ts │ │ └── utils.ts │ ├── useFeesSummary.js │ └── useTotalVolume.ts ├── fonts │ ├── inter │ │ ├── inter-v12-latin-500.eot │ │ ├── inter-v12-latin-500.svg │ │ ├── inter-v12-latin-500.ttf │ │ ├── inter-v12-latin-500.woff │ │ ├── inter-v12-latin-500.woff2 │ │ ├── inter-v12-latin-regular.eot │ │ ├── inter-v12-latin-regular.svg │ │ ├── inter-v12-latin-regular.ttf │ │ ├── inter-v12-latin-regular.woff │ │ └── inter-v12-latin-regular.woff2 │ ├── relative │ │ ├── relative-book-pro.eot │ │ ├── relative-book-pro.ttf │ │ ├── relative-book-pro.woff │ │ └── relative-book-pro.woff2 │ └── roboto │ │ ├── roboto-v30-latin-500.eot │ │ ├── roboto-v30-latin-500.svg │ │ ├── roboto-v30-latin-500.ttf │ │ ├── roboto-v30-latin-500.woff │ │ ├── roboto-v30-latin-500.woff2 │ │ ├── roboto-v30-latin-regular.eot │ │ ├── roboto-v30-latin-regular.svg │ │ ├── roboto-v30-latin-regular.ttf │ │ ├── roboto-v30-latin-regular.woff │ │ └── roboto-v30-latin-regular.woff2 ├── img │ ├── Anyswap.png │ ├── Anyswap.svg │ ├── Artwork.svg │ ├── Artwork_gmx.svg │ ├── Banxa.png │ ├── DROP_DOWN.svg │ ├── Hop.png │ ├── Hop.svg │ ├── Hop_dark.png │ ├── Hop_dark.svg │ ├── Synapse.png │ ├── Synapse.svg │ ├── binance.png │ ├── bitkeep.svg │ ├── bscscan.png │ ├── btn_big_arbitrum.png │ ├── btn_big_avalanche.png │ ├── btn_big_bsc.png │ ├── btn_big_purchasegmx.png │ ├── btn_big_purchasegmx.svg │ ├── buy_gmx.svg │ ├── buy_gmx_bond.svg │ ├── buy_transfer_eth.svg │ ├── coinbaseWallet.png │ ├── coingecko.png │ ├── cross.svg │ ├── flag_de.svg │ ├── flag_en.svg │ ├── flag_es.svg │ ├── flag_fr.svg │ ├── flag_ja.svg │ ├── flag_ko.svg │ ├── flag_ru.svg │ ├── flag_zh.svg │ ├── gateio.svg │ ├── glp_icon.svg │ ├── gmx-logo-final-white-small.png │ ├── gmx-logo-final-white.png │ ├── gmx-logo-final.png │ ├── gmx-logo-glow.png │ ├── gmx-logo-with-name.svg │ ├── gmx_logo.svg │ ├── graphite-01.png │ ├── ic-communityproject.svg │ ├── ic_1inch.svg │ ├── ic_across.svg │ ├── ic_arbitrum_16.svg │ ├── ic_arbitrum_24.svg │ ├── ic_arbitrum_96.svg │ ├── ic_arbitrum_hover_16.svg │ ├── ic_arrowleft16.svg │ ├── ic_arrowright16.svg │ ├── ic_avalanche_16.svg │ ├── ic_avalanche_24.svg │ ├── ic_avalanche_96.svg │ ├── ic_avalanche_testnet_16.svg │ ├── ic_avalanche_testnet_24.svg │ ├── ic_avalanche_testnet_96.svg │ ├── ic_avax_24.svg │ ├── ic_avax_30.svg │ ├── ic_avax_40.svg │ ├── ic_banxa.svg │ ├── ic_binance.svg │ ├── ic_binance_logo.svg │ ├── ic_bondprotocol_arbitrum.svg │ ├── ic_bsc.svg │ ├── ic_bsc_96.svg │ ├── ic_btc.b_24.svg │ ├── ic_btc.b_40.svg │ ├── ic_btc_24.svg │ ├── ic_btc_40.svg │ ├── ic_bungee.png │ ├── ic_busd_24.svg │ ├── ic_buy_glp.svg │ ├── ic_bybit.svg │ ├── ic_cash.png │ ├── ic_cash.svg │ ├── ic_checked.svg │ ├── ic_coingecko_16.svg │ ├── ic_coingecko_hover_16.svg │ ├── ic_convert_down.svg │ ├── ic_copy_16.svg │ ├── ic_cost.svg │ ├── ic_dai_24.svg │ ├── ic_dai_40.svg │ ├── ic_discord.svg │ ├── ic_dodo.svg │ ├── ic_eth_24.svg │ ├── ic_eth_40.svg │ ├── ic_firebird.png │ ├── ic_frax_24.svg │ ├── ic_frax_40.svg │ ├── ic_github.svg │ ├── ic_glp_24.svg │ ├── ic_glp_40.svg │ ├── ic_glp_arbitrum.svg │ ├── ic_glp_avax.svg │ ├── ic_glp_custom.svg │ ├── ic_gmx.svg │ ├── ic_gmx_24.svg │ ├── ic_gmx_30.svg │ ├── ic_gmx_40.svg │ ├── ic_gmx_64.svg │ ├── ic_gmx_arbitrum.svg │ ├── ic_gmx_avax.svg │ ├── ic_gmx_big.svg │ ├── ic_gmx_custom.svg │ ├── ic_gmx_footer.svg │ ├── ic_hop.svg │ ├── ic_huobi.svg │ ├── ic_info.svg │ ├── ic_kucoin.svg │ ├── ic_kyberswap.svg │ ├── ic_language24.svg │ ├── ic_link_24.svg │ ├── ic_link_40.svg │ ├── ic_liquidity.svg │ ├── ic_matcha.png │ ├── ic_medium.svg │ ├── ic_menu_dots.svg │ ├── ic_metamask_16.svg │ ├── ic_metamask_hover_16.svg │ ├── ic_mim_24.svg │ ├── ic_mim_40.svg │ ├── ic_multiswap.svg │ ├── ic_new_link_16.svg │ ├── ic_o3.png │ ├── ic_odos.png │ ├── ic_olympus.svg │ ├── ic_olympus_arbitrum.svg │ ├── ic_openocean.svg │ ├── ic_paraswap.svg │ ├── ic_selector_dropdowns.svg │ ├── ic_settings_16.svg │ ├── ic_settings_24.svg │ ├── ic_sign in_16.svg │ ├── ic_sign_out_16.svg │ ├── ic_simpleswaps.svg │ ├── ic_slingshot.svg │ ├── ic_stats.svg │ ├── ic_stats_big.svg │ ├── ic_synapse.svg │ ├── ic_tansak.svg │ ├── ic_telegram.svg │ ├── ic_tether_24.svg │ ├── ic_tokens.svg │ ├── ic_totaluser.svg │ ├── ic_traderjoe_avax.png │ ├── ic_trading.svg │ ├── ic_transfer_avax.svg │ ├── ic_twitter.svg │ ├── ic_uni_24.svg │ ├── ic_uni_40.svg │ ├── ic_uni_arbitrum.svg │ ├── ic_unidex.png │ ├── ic_usdc.e_24.svg │ ├── ic_usdc.e_40.svg │ ├── ic_usdc_24.svg │ ├── ic_usdc_40.svg │ ├── ic_usdt_24.svg │ ├── ic_usdt_40.svg │ ├── ic_wallet_24.svg │ ├── ic_wavax_24.svg │ ├── ic_wavax_40.svg │ ├── ic_wbtc_24.svg │ ├── ic_wbtc_40.svg │ ├── ic_weth_24.svg │ ├── ic_weth_40.svg │ ├── ic_yield_yak.png │ ├── lg_arbitrum.svg │ ├── logo_GMX.svg │ ├── logo_GMX_small.svg │ ├── long.svg │ ├── metamask-text.svg │ ├── metamask.png │ ├── nansen_portfolio.svg │ ├── page-not-found.svg │ ├── position-share-bg.png │ ├── short.svg │ ├── swap.svg │ ├── trading.jpg │ ├── wallet-connect-text.svg │ ├── walletconnect-circle-blue.svg │ ├── wave-01.png │ └── wave-02.png ├── index.tsx ├── lib │ ├── __tests__ │ │ ├── getLiquidationPrice.spec.ts │ │ └── multicall │ │ │ └── executeMulticall.spec.ts │ ├── chains │ │ └── index.ts │ ├── contracts │ │ ├── callContract.tsx │ │ ├── contractFetcher.ts │ │ ├── index.ts │ │ ├── transactionErrors.ts │ │ └── utils.ts │ ├── dates.ts │ ├── downloadImage.ts │ ├── helperToast.ts │ ├── i18n.ts │ ├── legacy.ts │ ├── localStorage │ │ └── index.ts │ ├── multicall │ │ ├── index.tsx │ │ ├── types.ts │ │ ├── useMulticall.ts │ │ └── utils.ts │ ├── numbers.ts │ ├── rpc │ │ └── index.ts │ ├── sleep.ts │ ├── subgraph │ │ ├── clients.ts │ │ ├── index.ts │ │ └── utils.ts │ ├── testUtils.tsx │ ├── url.ts │ ├── useDebounce.ts │ ├── useEffectDebugger.ts │ ├── useLoadImage.ts │ ├── useLockBodyScroll.ts │ ├── usePrevious.ts │ ├── useRouteQuery.ts │ ├── useScrollToTop.ts │ └── wallets │ │ ├── index.tsx │ │ └── useAccountType.ts ├── locales │ ├── de │ │ └── messages.po │ ├── en │ │ └── messages.po │ ├── es │ │ └── messages.po │ ├── fr │ │ └── messages.po │ ├── ja │ │ └── messages.po │ ├── ko │ │ └── messages.po │ ├── pseudo │ │ └── messages.po │ ├── ru │ │ └── messages.po │ └── zh │ │ └── messages.po ├── pages │ ├── Actions │ │ ├── Actions.css │ │ └── Actions.js │ ├── BeginAccountTransfer │ │ ├── BeginAccountTransfer.css │ │ └── BeginAccountTransfer.js │ ├── Buy │ │ ├── Buy.css │ │ └── Buy.js │ ├── BuyGMX │ │ ├── BuyGMX.css │ │ ├── BuyGMX.tsx │ │ └── constants.ts │ ├── BuyGlp │ │ ├── BuyGlp.css │ │ └── BuyGlp.js │ ├── ClaimEsGmx │ │ ├── ClaimEsGmx.css │ │ └── ClaimEsGmx.js │ ├── CompleteAccountTransfer │ │ ├── CompleteAccountTransfer.css │ │ └── CompleteAccountTransfer.js │ ├── Dashboard │ │ ├── AssetDropdown.css │ │ ├── AssetDropdown.tsx │ │ ├── Dashboard.css │ │ ├── Dashboard.js │ │ ├── DashboardV1.js │ │ ├── DashboardV2.css │ │ └── DashboardV2.js │ ├── Ecosystem │ │ ├── Ecosystem.css │ │ └── Ecosystem.js │ ├── Exchange │ │ ├── Exchange.css │ │ └── Exchange.js │ ├── Home │ │ ├── Home.css │ │ └── Home.js │ ├── Jobs │ │ ├── Jobs.css │ │ └── Jobs.js │ ├── NftWallet │ │ ├── NftWallet.css │ │ └── NftWallet.js │ ├── OrdersOverview │ │ ├── OrdersOverview.css │ │ └── OrdersOverview.js │ ├── PageNotFound │ │ ├── PageNotFound.css │ │ └── PageNotFound.js │ ├── PositionsOverview │ │ ├── PositionsOverview.css │ │ └── PositionsOverview.js │ ├── Presale │ │ └── Presale.css │ ├── ReferralTerms │ │ ├── ReferralTerms.css │ │ └── ReferralTerms.js │ ├── Referrals │ │ ├── Referrals.css │ │ └── Referrals.js │ ├── SellGlp │ │ └── SellGlp.css │ ├── Stake │ │ ├── Stake.css │ │ ├── Stake.js │ │ ├── StakeV1.js │ │ ├── StakeV2.css │ │ └── StakeV2.js │ └── TermsAndConditions │ │ ├── TermsAndConditions.css │ │ └── TermsAndConditions.js ├── react-app-env.d.ts ├── reportWebVitals.js ├── styles │ ├── Font.css │ ├── Input.css │ └── Shared.css └── typings.d.ts ├── tsconfig.json └── yarn.lock /.editorconfig: -------------------------------------------------------------------------------- 1 | [*] 2 | charset = utf-8 3 | end_of_line = lf 4 | indent_size = 2 5 | indent_style = space 6 | insert_final_newline = true 7 | trim_trailing_whitespace = true 8 | 9 | [*.md] 10 | max_line_length = 0 11 | trim_trailing_whitespace = false 12 | 13 | [COMMIT_EDITMSG] 14 | max_line_length = 0 15 | -------------------------------------------------------------------------------- /.env-cmdrc: -------------------------------------------------------------------------------- 1 | { 2 | "development": { 3 | "REACT_APP_IS_HOME_SITE": false 4 | }, 5 | "development-home": { 6 | "REACT_APP_IS_HOME_SITE": true 7 | }, 8 | "development-app": { 9 | "REACT_APP_IS_HOME_SITE": false 10 | }, 11 | "production-home": { 12 | "REACT_APP_IS_HOME_SITE": true 13 | }, 14 | "production-app": { 15 | "REACT_APP_IS_HOME_SITE": false 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | .vscode 8 | 9 | # lingui 10 | /src/locales/**/*.js 11 | /src/locales/en/messages.po 12 | /src/locales/_build/ 13 | 14 | # testing 15 | /coverage 16 | 17 | # production 18 | /build 19 | 20 | # misc 21 | .DS_Store 22 | .env.local 23 | .env.development.local 24 | .env.test.local 25 | .env.production.local 26 | 27 | npm-debug.log* 28 | yarn-debug.log* 29 | yarn-error.log* 30 | 31 | package-lock.json 32 | 33 | .yarn/* 34 | !.yarn/patches 35 | !.yarn/plugins 36 | !.yarn/releases 37 | !.yarn/sdks 38 | !.yarn/versions 39 | /.idea/ 40 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | yarn lingui:generate 5 | yarn lint-staged 6 | yarn test:ci 7 | yarn tscheck 8 | -------------------------------------------------------------------------------- /.linguirc: -------------------------------------------------------------------------------- 1 | { 2 | "locales": [ 3 | "en", 4 | "es", 5 | "ko", 6 | "ja", 7 | "zh", 8 | "ru", 9 | "fr", 10 | "de", 11 | "pseudo" 12 | ], 13 | "sourceLocale": "en", 14 | "catalogs": [ 15 | { 16 | "path": "src/locales/{locale}/messages", 17 | "include": [ 18 | "src" 19 | ] 20 | } 21 | ], 22 | "formatOptions": { 23 | "lineNumbers": false 24 | }, 25 | "fallbackLocales": { 26 | "default": "en" 27 | }, 28 | "format": "po", 29 | "orderBy": "messageId", 30 | "pseudoLocale": "pseudo" 31 | } 32 | -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "semi": true, 3 | "singleQuote": false, 4 | "printWidth": 120 5 | } 6 | -------------------------------------------------------------------------------- /.yarnrc.yml: -------------------------------------------------------------------------------- 1 | nodeLinker: node-modules 2 | 3 | yarnPath: .yarn/releases/yarn-3.1.0.cjs 4 | -------------------------------------------------------------------------------- /netlify.toml: -------------------------------------------------------------------------------- 1 | [build] 2 | publish="./build" 3 | base = "." 4 | 5 | [[redirects]] 6 | from = "/*" 7 | to = "/index.html" 8 | status = 200 9 | 10 | [[headers]] 11 | for = "/*" 12 | [headers.values] 13 | X-Frame-Options = "sameorigin" 14 | X-XSS-Protection = "1; mode=block" 15 | Referrer-Policy = "no-referrer" 16 | X-Content-Type-Options = "nosniff" 17 | Content-Security-Policy = "default-src 'self' netlify-cdp-loader.netlify.app; img-src 'self' data:; script-src 'self' 'unsafe-inline' netlify-cdp-loader.netlify.app; connect-src *; frame-src 'self' app.netlify.com; style-src 'self' 'unsafe-inline';" 18 | -------------------------------------------------------------------------------- /public/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/android-chrome-192x192.png -------------------------------------------------------------------------------- /public/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/android-chrome-512x512.png -------------------------------------------------------------------------------- /public/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/apple-touch-icon.png -------------------------------------------------------------------------------- /public/binance.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /public/charting_library/bundles/0579d40b812fa2c3ffe72e5803a6e14c.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/charting_library/bundles/0579d40b812fa2c3ffe72e5803a6e14c.cur -------------------------------------------------------------------------------- /public/charting_library/bundles/1778.3dcfedd5fc468612cdc9.css: -------------------------------------------------------------------------------- 1 | .tabs-3I2ohC86{display:flex;position:relative;width:100%}.tab-3I2ohC86{border-bottom:1px solid;border-color:#e0e3eb;color:var(--tv-tabs-slider-text-color,#131722);flex:1 1;padding:13px 0;text-align:center;transition:color .35s ease;-webkit-user-select:none;user-select:none}html.theme-dark .tab-3I2ohC86{border-color:#434651;color:var(--tv-tabs-slider-text-color,#d1d4dc)}.tab-3I2ohC86.noBorder-3I2ohC86{border-bottom:0}.tab-3I2ohC86.disabled-3I2ohC86{color:#eceff2}.tab-3I2ohC86.active-3I2ohC86,html.theme-dark .tab-3I2ohC86.active-3I2ohC86{color:#2962ff}.defaultCursor-3I2ohC86{cursor:default}.slider-3I2ohC86{bottom:0;height:3px;left:0;position:absolute;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.slider-3I2ohC86,html.theme-dark .slider-3I2ohC86{background-color:#2962ff}.content-3I2ohC86{width:100%} -------------------------------------------------------------------------------- /public/charting_library/bundles/1778.3dcfedd5fc468612cdc9.rtl.css: -------------------------------------------------------------------------------- 1 | .tabs-3I2ohC86{display:flex;position:relative;width:100%}.tab-3I2ohC86{border-bottom:1px solid;border-color:#e0e3eb;color:var(--tv-tabs-slider-text-color,#131722);flex:1 1;padding:13px 0;text-align:center;transition:color .35s ease;-webkit-user-select:none;user-select:none}html.theme-dark .tab-3I2ohC86{border-color:#434651;color:var(--tv-tabs-slider-text-color,#d1d4dc)}.tab-3I2ohC86.noBorder-3I2ohC86{border-bottom:0}.tab-3I2ohC86.disabled-3I2ohC86{color:#eceff2}.tab-3I2ohC86.active-3I2ohC86,html.theme-dark .tab-3I2ohC86.active-3I2ohC86{color:#2962ff}.defaultCursor-3I2ohC86{cursor:default}.slider-3I2ohC86{bottom:0;height:3px;left:0;position:absolute;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.slider-3I2ohC86,html.theme-dark .slider-3I2ohC86{background-color:#2962ff}.content-3I2ohC86{width:100%} -------------------------------------------------------------------------------- /public/charting_library/bundles/1df47f578aeef40dd1f2328338a133be.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/charting_library/bundles/1df47f578aeef40dd1f2328338a133be.png -------------------------------------------------------------------------------- /public/charting_library/bundles/2091.b5cd26b120d8f015a5f6.css: -------------------------------------------------------------------------------- 1 | .defaultsButtonText-3mn75BN0{color:#131722;font-size:16px;width:100px}html.theme-dark .defaultsButtonText-3mn75BN0{color:#b2b5be}.defaultsButtonItem-3mn75BN0{min-width:100px}.defaultsButtonIcon-3mn75BN0{display:flex}.themesButtonText-3nid3QQp{color:#131722;font-size:14px;width:100px}html.theme-dark .themesButtonText-3nid3QQp{color:#b2b5be}.themesButtonIcon-3nid3QQp{display:flex}.defaultsButtonText-3nid3QQp{color:#131722;font-size:16px;width:100px}html.theme-dark .defaultsButtonText-3nid3QQp{color:#b2b5be}.defaultsButtonItem-3nid3QQp{min-width:100px} -------------------------------------------------------------------------------- /public/charting_library/bundles/2091.b5cd26b120d8f015a5f6.rtl.css: -------------------------------------------------------------------------------- 1 | .defaultsButtonText-3mn75BN0{color:#131722;font-size:16px;width:100px}html.theme-dark .defaultsButtonText-3mn75BN0{color:#b2b5be}.defaultsButtonItem-3mn75BN0{min-width:100px}.defaultsButtonIcon-3mn75BN0{display:flex}.themesButtonText-3nid3QQp{color:#131722;font-size:14px;width:100px}html.theme-dark .themesButtonText-3nid3QQp{color:#b2b5be}.themesButtonIcon-3nid3QQp{display:flex}.defaultsButtonText-3nid3QQp{color:#131722;font-size:16px;width:100px}html.theme-dark .defaultsButtonText-3nid3QQp{color:#b2b5be}.defaultsButtonItem-3nid3QQp{min-width:100px} -------------------------------------------------------------------------------- /public/charting_library/bundles/2321.4f5fec7d39b99277caa5.css: -------------------------------------------------------------------------------- 1 | .icon-26rGYU-z{display:flex}.wrap-3JkbcgoB{position:relative}.input-3JkbcgoB{bottom:0;left:0;margin:0;max-width:100%;min-width:100%;opacity:0;position:absolute;top:0} -------------------------------------------------------------------------------- /public/charting_library/bundles/2321.4f5fec7d39b99277caa5.rtl.css: -------------------------------------------------------------------------------- 1 | .icon-26rGYU-z{display:flex}.wrap-3JkbcgoB{position:relative}.input-3JkbcgoB{bottom:0;margin:0;max-width:100%;min-width:100%;opacity:0;position:absolute;right:0;top:0} -------------------------------------------------------------------------------- /public/charting_library/bundles/2614.9b290389192f690dd33c.css: -------------------------------------------------------------------------------- 1 | .dialog-23lGwisF{min-width:254px;padding:40px;width:auto}.dialogInner-23lGwisF{align-items:center;display:flex;flex-direction:column}.titleWrapper-23lGwisF{align-items:center;display:flex;justify-content:center;margin-bottom:16px;max-width:100%}.title-23lGwisF{color:#131722;cursor:default;font-size:20px;font-weight:700;line-height:28px;overflow:hidden;white-space:nowrap}html.theme-dark .title-23lGwisF{color:#b2b5be}.infoHint-23lGwisF{color:#787b86;height:18px;margin-left:8px;width:18px}.form-23lGwisF{display:flex;max-width:200px;width:100%}.inputWrapper-23lGwisF{flex-grow:1}.input-23lGwisF{font-size:24px;text-align:center}.hint-23lGwisF{color:#787b86;cursor:default;font-size:12px;line-height:18px;margin-top:3px;max-width:100%;overflow:hidden;white-space:nowrap}.error-23lGwisF{color:#f23645} -------------------------------------------------------------------------------- /public/charting_library/bundles/2614.9b290389192f690dd33c.rtl.css: -------------------------------------------------------------------------------- 1 | .dialog-23lGwisF{min-width:254px;padding:40px;width:auto}.dialogInner-23lGwisF{align-items:center;display:flex;flex-direction:column}.titleWrapper-23lGwisF{align-items:center;display:flex;justify-content:center;margin-bottom:16px;max-width:100%}.title-23lGwisF{color:#131722;cursor:default;font-size:20px;font-weight:700;line-height:28px;overflow:hidden;white-space:nowrap}html.theme-dark .title-23lGwisF{color:#b2b5be}.infoHint-23lGwisF{color:#787b86;height:18px;margin-right:8px;width:18px}.form-23lGwisF{display:flex;max-width:200px;width:100%}.inputWrapper-23lGwisF{flex-grow:1}.input-23lGwisF{font-size:24px;text-align:center}.hint-23lGwisF{color:#787b86;cursor:default;font-size:12px;line-height:18px;margin-top:3px;max-width:100%;overflow:hidden;white-space:nowrap}.error-23lGwisF{color:#f23645} -------------------------------------------------------------------------------- /public/charting_library/bundles/2778.22f147dbe677a02ae3db.css: -------------------------------------------------------------------------------- 1 | .button-14c_DKWJ{align-items:center;background-color:initial;border:none;border-radius:2px;box-sizing:border-box;cursor:default;display:flex;flex:none;height:100%;justify-content:center;margin:0;outline:none!important;padding:0;width:21px}@media (any-hover:hover),(min--moz-device-pixel-ratio:0){.button-14c_DKWJ:hover:not(.disabled-14c_DKWJ){background-color:#f0f3fa}html.theme-dark .button-14c_DKWJ:hover:not(.disabled-14c_DKWJ){background-color:#363a45}}.button-14c_DKWJ.hidden-14c_DKWJ{display:none}.icon-14c_DKWJ{align-items:center;display:flex;flex:none;justify-content:center;transition:transform .35s ease}.icon-14c_DKWJ.dropped-14c_DKWJ{transform:rotate(180deg)}.button-1WqyvKNY{cursor:default;-webkit-user-select:none;user-select:none}.button-children-1WqyvKNY{display:block;overflow:hidden;padding:0 2px 0 6px;text-overflow:ellipsis;white-space:nowrap;width:100%}.button-children-1WqyvKNY.hiddenArrow-1WqyvKNY{padding-right:6px}.invisibleFocusHandler-1WqyvKNY{height:0;opacity:0;pointer-events:none;width:0}.placeholder-1J6emFeA{-webkit-text-fill-color:currentColor;color:#a3a6af;opacity:1}html.theme-dark .placeholder-1J6emFeA{color:#434651} -------------------------------------------------------------------------------- /public/charting_library/bundles/2778.22f147dbe677a02ae3db.rtl.css: -------------------------------------------------------------------------------- 1 | .button-14c_DKWJ{align-items:center;background-color:initial;border:none;border-radius:2px;box-sizing:border-box;cursor:default;display:flex;flex:none;height:100%;justify-content:center;margin:0;outline:none!important;padding:0;width:21px}@media (any-hover:hover),(min--moz-device-pixel-ratio:0){.button-14c_DKWJ:hover:not(.disabled-14c_DKWJ){background-color:#f0f3fa}html.theme-dark .button-14c_DKWJ:hover:not(.disabled-14c_DKWJ){background-color:#363a45}}.button-14c_DKWJ.hidden-14c_DKWJ{display:none}.icon-14c_DKWJ{align-items:center;display:flex;flex:none;justify-content:center;transition:transform .35s ease}.icon-14c_DKWJ.dropped-14c_DKWJ{transform:rotate(-180deg)}.button-1WqyvKNY{cursor:default;-webkit-user-select:none;user-select:none}.button-children-1WqyvKNY{display:block;overflow:hidden;padding:0 6px 0 2px;text-overflow:ellipsis;white-space:nowrap;width:100%}.button-children-1WqyvKNY.hiddenArrow-1WqyvKNY{padding-left:6px}.invisibleFocusHandler-1WqyvKNY{height:0;opacity:0;pointer-events:none;width:0}.placeholder-1J6emFeA{-webkit-text-fill-color:currentColor;color:#a3a6af;opacity:1}html.theme-dark .placeholder-1J6emFeA{color:#434651} -------------------------------------------------------------------------------- /public/charting_library/bundles/3293616ec0c605c7c2db25829a0a509e.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/charting_library/bundles/3293616ec0c605c7c2db25829a0a509e.woff -------------------------------------------------------------------------------- /public/charting_library/bundles/3537.273ebe86a4260eff8e80.css: -------------------------------------------------------------------------------- 1 | .summary-3UYGeClB{align-items:center;box-sizing:border-box;color:#787b86;cursor:default;display:flex;flex:none;font-size:11px;letter-spacing:.4px;line-height:16px;min-width:0;padding:0 8px 0 12px;text-transform:uppercase;width:100%}html.theme-dark .summary-3UYGeClB{color:#787b86}.summary-3UYGeClB.hovered-3UYGeClB,.summary-3UYGeClB:active{background-color:#f0f3fa}@media (any-hover:hover),(min--moz-device-pixel-ratio:0){.summary-3UYGeClB:hover{background-color:#f0f3fa}}html.theme-dark .summary-3UYGeClB.hovered-3UYGeClB,html.theme-dark .summary-3UYGeClB:active{background-color:#2a2e39}@media (any-hover:hover),(min--moz-device-pixel-ratio:0){html.theme-dark .summary-3UYGeClB:hover{background-color:#2a2e39}}.caret-3UYGeClB{height:18px;justify-content:center;margin:2px 0 2px auto;width:18px} -------------------------------------------------------------------------------- /public/charting_library/bundles/3537.273ebe86a4260eff8e80.rtl.css: -------------------------------------------------------------------------------- 1 | .summary-3UYGeClB{align-items:center;box-sizing:border-box;color:#787b86;cursor:default;display:flex;flex:none;font-size:11px;letter-spacing:.4px;line-height:16px;min-width:0;padding:0 12px 0 8px;text-transform:uppercase;width:100%}html.theme-dark .summary-3UYGeClB{color:#787b86}.summary-3UYGeClB.hovered-3UYGeClB,.summary-3UYGeClB:active{background-color:#f0f3fa}@media (any-hover:hover),(min--moz-device-pixel-ratio:0){.summary-3UYGeClB:hover{background-color:#f0f3fa}}html.theme-dark .summary-3UYGeClB.hovered-3UYGeClB,html.theme-dark .summary-3UYGeClB:active{background-color:#2a2e39}@media (any-hover:hover),(min--moz-device-pixel-ratio:0){html.theme-dark .summary-3UYGeClB:hover{background-color:#2a2e39}}.caret-3UYGeClB{height:18px;justify-content:center;margin:2px auto 2px 0;width:18px} -------------------------------------------------------------------------------- /public/charting_library/bundles/3708.b21be6dee862262304cf.css: -------------------------------------------------------------------------------- 1 | .container-3n5_2-hI{align-items:center;border-bottom:1px solid #e0e3eb;border-color:#e0e3eb currentcolor;border-top:1px solid #e0e3eb;cursor:default;display:flex;flex-shrink:0;position:relative}html.theme-dark .container-3n5_2-hI{border-color:#434651}.inputContainer-3n5_2-hI{height:24px;padding:8px 16px 8px 47px;width:100%}.inputContainer-3n5_2-hI.withCancel-3n5_2-hI{padding-right:70px}.input-3n5_2-hI{background-color:initial;border:none;color:#131722;font-size:16px;height:100%;margin:0;padding:0;width:100%}html.theme-dark .input-3n5_2-hI{color:#a3a6af}.input-3n5_2-hI::placeholder{color:#a3a6af;font-weight:400}html.theme-dark .input-3n5_2-hI::placeholder{color:#434651}.icon-3n5_2-hI{color:#a3a6af;height:18px;left:20px;pointer-events:none;position:absolute;top:calc(50% - 9px)}.cancel-3n5_2-hI{color:#787b86;position:absolute;right:20px}.highlighted-1Qud56dI,html.theme-dark .highlighted-1Qud56dI{color:#2962ff} -------------------------------------------------------------------------------- /public/charting_library/bundles/3708.b21be6dee862262304cf.rtl.css: -------------------------------------------------------------------------------- 1 | .container-3n5_2-hI{align-items:center;border-bottom:1px solid #e0e3eb;border-color:#e0e3eb currentcolor;border-top:1px solid #e0e3eb;cursor:default;display:flex;flex-shrink:0;position:relative}html.theme-dark .container-3n5_2-hI{border-color:#434651}.inputContainer-3n5_2-hI{height:24px;padding:8px 47px 8px 16px;width:100%}.inputContainer-3n5_2-hI.withCancel-3n5_2-hI{padding-left:70px}.input-3n5_2-hI{background-color:initial;border:none;color:#131722;font-size:16px;height:100%;margin:0;padding:0;width:100%}html.theme-dark .input-3n5_2-hI{color:#a3a6af}.input-3n5_2-hI::placeholder{color:#a3a6af;font-weight:400}html.theme-dark .input-3n5_2-hI::placeholder{color:#434651}.icon-3n5_2-hI{color:#a3a6af;height:18px;pointer-events:none;position:absolute;right:20px;top:calc(50% - 9px)}.cancel-3n5_2-hI{color:#787b86;left:20px;position:absolute}.highlighted-1Qud56dI,html.theme-dark .highlighted-1Qud56dI{color:#2962ff} -------------------------------------------------------------------------------- /public/charting_library/bundles/3876.fbb750fd312778403036.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/charting_library/bundles/3876.fbb750fd312778403036.css -------------------------------------------------------------------------------- /public/charting_library/bundles/3876.fbb750fd312778403036.rtl.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/charting_library/bundles/3876.fbb750fd312778403036.rtl.css -------------------------------------------------------------------------------- /public/charting_library/bundles/3894.6c50d72ee9e079af3dab.css: -------------------------------------------------------------------------------- 1 | .wrap-164vy-kj{bottom:0;display:flex;left:0;position:fixed;right:0;top:0;z-index:0}.wrap-164vy-kj.positionBottom-164vy-kj{align-items:flex-end}.backdrop-164vy-kj{background-color:#9598a1;bottom:0;left:0;opacity:.7;position:absolute;right:0;top:0;transform:translateZ(0)}html.theme-dark .backdrop-164vy-kj{background-color:#0c0e15}.drawer-164vy-kj{-webkit-overflow-scrolling:touch;background:#fff;box-shadow:0 2px 4px #0003;box-sizing:border-box;padding:6px 0;z-index:1}html.theme-dark .drawer-164vy-kj{background:#1e222d;box-shadow:0 2px 4px #0006}.drawer-164vy-kj.positionLeft-164vy-kj{margin-right:40px;max-width:calc(100% - 40px);min-width:260px}.drawer-164vy-kj.positionBottom-164vy-kj{border-top-left-radius:6px;border-top-right-radius:6px;flex-basis:100%;margin-top:100px;max-height:calc(100% - 100px);overflow:auto} -------------------------------------------------------------------------------- /public/charting_library/bundles/3894.6c50d72ee9e079af3dab.rtl.css: -------------------------------------------------------------------------------- 1 | .wrap-164vy-kj{bottom:0;display:flex;left:0;position:fixed;right:0;top:0;z-index:0}.wrap-164vy-kj.positionBottom-164vy-kj{align-items:flex-end}.backdrop-164vy-kj{background-color:#9598a1;bottom:0;left:0;opacity:.7;position:absolute;right:0;top:0;transform:translateZ(0)}html.theme-dark .backdrop-164vy-kj{background-color:#0c0e15}.drawer-164vy-kj{-webkit-overflow-scrolling:touch;background:#fff;box-shadow:0 2px 4px #0003;box-sizing:border-box;padding:6px 0;z-index:1}html.theme-dark .drawer-164vy-kj{background:#1e222d;box-shadow:0 2px 4px #0006}.drawer-164vy-kj.positionLeft-164vy-kj{margin-left:40px;max-width:calc(100% - 40px);min-width:260px}.drawer-164vy-kj.positionBottom-164vy-kj{border-top-left-radius:6px;border-top-right-radius:6px;flex-basis:100%;margin-top:100px;max-height:calc(100% - 100px);overflow:auto} -------------------------------------------------------------------------------- /public/charting_library/bundles/3996.3cdbd2dcf744b8239723.css: -------------------------------------------------------------------------------- 1 | .icon-19OjtB6A{align-items:center;display:flex;flex-direction:row;transition:transform .35s cubic-bezier(.175,.885,.32,1.275)}.icon-19OjtB6A svg{fill:currentColor;display:block;height:4px;width:8px}.icon-19OjtB6A.dropped-19OjtB6A{transform:rotate(180deg)} -------------------------------------------------------------------------------- /public/charting_library/bundles/3996.3cdbd2dcf744b8239723.rtl.css: -------------------------------------------------------------------------------- 1 | .icon-19OjtB6A{align-items:center;display:flex;flex-direction:row;transition:transform .35s cubic-bezier(.175,.885,.32,1.275)}.icon-19OjtB6A svg{fill:currentColor;display:block;height:4px;width:8px}.icon-19OjtB6A.dropped-19OjtB6A{transform:rotate(-180deg)} -------------------------------------------------------------------------------- /public/charting_library/bundles/40566afd832a155e5e370a8bd423de4b.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/charting_library/bundles/40f9a03d174178efb12303caa9bc7cd8.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/charting_library/bundles/40f9a03d174178efb12303caa9bc7cd8.woff2 -------------------------------------------------------------------------------- /public/charting_library/bundles/4336.1228643b9325cd73ea59.css: -------------------------------------------------------------------------------- 1 | .item-21ifTYt7{align-items:flex-start;font-size:16px;padding-right:20px;white-space:normal}.label-21ifTYt7{line-height:24px;overflow:visible}.labelRow-21ifTYt7{margin-bottom:2px;margin-top:2px}.toolbox-21ifTYt7{margin-top:3px} -------------------------------------------------------------------------------- /public/charting_library/bundles/4336.1228643b9325cd73ea59.rtl.css: -------------------------------------------------------------------------------- 1 | .item-21ifTYt7{align-items:flex-start;font-size:16px;padding-left:20px;white-space:normal}.label-21ifTYt7{line-height:24px;overflow:visible}.labelRow-21ifTYt7{margin-bottom:2px;margin-top:2px}.toolbox-21ifTYt7{margin-top:3px} -------------------------------------------------------------------------------- /public/charting_library/bundles/4595.6423e4f6860a7dd905ff.css: -------------------------------------------------------------------------------- 1 | .separator-3No0pWrk{background-color:#e0e3eb;height:1px;margin:8px 0}html.theme-dark .separator-3No0pWrk{background-color:#434651} -------------------------------------------------------------------------------- /public/charting_library/bundles/4595.6423e4f6860a7dd905ff.rtl.css: -------------------------------------------------------------------------------- 1 | .separator-3No0pWrk{background-color:#e0e3eb;height:1px;margin:8px 0}html.theme-dark .separator-3No0pWrk{background-color:#434651} -------------------------------------------------------------------------------- /public/charting_library/bundles/4736.2eccdb294faa8c6685ac.css: -------------------------------------------------------------------------------- 1 | .dialog-Gd2kEiLq{min-height:300px;min-width:380px}.wrap-Gd2kEiLq{margin-top:10px;overflow-y:auto;scrollbar-color:#9598a1 #0000;scrollbar-width:thin}html.theme-dark .wrap-Gd2kEiLq{scrollbar-color:#363a45 #0000}.wrap-Gd2kEiLq::-webkit-scrollbar{height:5px;width:5px}.wrap-Gd2kEiLq::-webkit-scrollbar-thumb{background-color:#9598a1;border:1px solid #f0f3fa;border-radius:3px}html.theme-dark .wrap-Gd2kEiLq::-webkit-scrollbar-thumb{background-color:#363a45;border-color:#1e222d}.wrap-Gd2kEiLq::-webkit-scrollbar-track{background-color:initial;border-radius:3px}.wrap-Gd2kEiLq::-webkit-scrollbar-corner{display:none} -------------------------------------------------------------------------------- /public/charting_library/bundles/4736.2eccdb294faa8c6685ac.rtl.css: -------------------------------------------------------------------------------- 1 | .dialog-Gd2kEiLq{min-height:300px;min-width:380px}.wrap-Gd2kEiLq{margin-top:10px;overflow-y:auto;scrollbar-color:#9598a1 #0000;scrollbar-width:thin}html.theme-dark .wrap-Gd2kEiLq{scrollbar-color:#363a45 #0000}.wrap-Gd2kEiLq::-webkit-scrollbar{height:5px;width:5px}.wrap-Gd2kEiLq::-webkit-scrollbar-thumb{background-color:#9598a1;border:1px solid #f0f3fa;border-radius:3px}html.theme-dark .wrap-Gd2kEiLq::-webkit-scrollbar-thumb{background-color:#363a45;border-color:#1e222d}.wrap-Gd2kEiLq::-webkit-scrollbar-track{background-color:initial;border-radius:3px}.wrap-Gd2kEiLq::-webkit-scrollbar-corner{display:none} -------------------------------------------------------------------------------- /public/charting_library/bundles/4985.6abfd9453389325f7436.css: -------------------------------------------------------------------------------- 1 | .row-3B5H2q5m{vertical-align:top}.line-3B5H2q5m{background-color:#e0e3eb;height:1px;margin:6px 0}html.theme-dark .line-3B5H2q5m{background-color:#434651}.hint-3B5H2q5m{color:#8797a5;font-size:12px;margin-left:6px;margin-top:12px;text-align:left}html.theme-dark .hint-3B5H2q5m{color:#4f5966}.separator-LcIsiH9i{background-color:#e0e3eb;height:1px;margin:6px 0}html.theme-dark .separator-LcIsiH9i{background-color:#434651}.menu-1Jmy26Oy{border-collapse:collapse;cursor:default;overflow:visible;-webkit-user-select:none;user-select:none;z-index:500}.loaderWrap-2SapxxDI{height:32px;margin-left:-2px;position:relative}.loaderWrap-2SapxxDI.big-2SapxxDI{min-width:100px}.loaderWrap-2SapxxDI.big-2SapxxDI .loader-2SapxxDI{position:absolute}.loader-2SapxxDI{position:static} -------------------------------------------------------------------------------- /public/charting_library/bundles/4985.6abfd9453389325f7436.rtl.css: -------------------------------------------------------------------------------- 1 | .row-3B5H2q5m{vertical-align:top}.line-3B5H2q5m{background-color:#e0e3eb;height:1px;margin:6px 0}html.theme-dark .line-3B5H2q5m{background-color:#434651}.hint-3B5H2q5m{color:#8797a5;font-size:12px;margin-right:6px;margin-top:12px;text-align:right}html.theme-dark .hint-3B5H2q5m{color:#4f5966}.separator-LcIsiH9i{background-color:#e0e3eb;height:1px;margin:6px 0}html.theme-dark .separator-LcIsiH9i{background-color:#434651}.menu-1Jmy26Oy{border-collapse:collapse;cursor:default;overflow:visible;-webkit-user-select:none;user-select:none;z-index:500}.loaderWrap-2SapxxDI{height:32px;margin-right:-2px;position:relative}.loaderWrap-2SapxxDI.big-2SapxxDI{min-width:100px}.loaderWrap-2SapxxDI.big-2SapxxDI .loader-2SapxxDI{position:absolute}.loader-2SapxxDI{position:static} -------------------------------------------------------------------------------- /public/charting_library/bundles/4a9abefd31dab7c8239e02e925aacd78.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/charting_library/bundles/4a9abefd31dab7c8239e02e925aacd78.png -------------------------------------------------------------------------------- /public/charting_library/bundles/4fafff07d8914dc11f6d335f606ff47c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/charting_library/bundles/4fafff07d8914dc11f6d335f606ff47c.png -------------------------------------------------------------------------------- /public/charting_library/bundles/5527.b19a3c2c68b0d873fe2b.css: -------------------------------------------------------------------------------- 1 | .errorCard-1ZTLibqo{align-items:center;background:var(--backgroundColor,#fff);color:var(--textColor,#434651);display:flex;flex-direction:column;height:100%;justify-content:center;width:100%}html.theme-dark .errorCard-1ZTLibqo{background:var(--backgroundColor,#131722);color:var(--textColor,#9598a1)}.errorCard__icon-1ZTLibqo{margin-bottom:12px}.errorCard_size_big-1ZTLibqo .errorCard__icon-1ZTLibqo{margin-bottom:21px}.errorCard__message-1ZTLibqo{font-size:14px;line-height:22px;max-width:350px;text-align:center}.errorCard_size_big-1ZTLibqo .errorCard__message-1ZTLibqo{font-size:18px;line-height:28px}.errorCardRendererContainer-1ZTLibqo{--backgroundColor:initial;--textColor:initial;cursor:default;height:100%;position:absolute;width:100%}.errorCardRendererContainer-1ZTLibqo:empty{visibility:hidden} -------------------------------------------------------------------------------- /public/charting_library/bundles/5527.b19a3c2c68b0d873fe2b.rtl.css: -------------------------------------------------------------------------------- 1 | .errorCard-1ZTLibqo{align-items:center;background:var(--backgroundColor,#fff);color:var(--textColor,#434651);display:flex;flex-direction:column;height:100%;justify-content:center;width:100%}html.theme-dark .errorCard-1ZTLibqo{background:var(--backgroundColor,#131722);color:var(--textColor,#9598a1)}.errorCard__icon-1ZTLibqo{margin-bottom:12px}.errorCard_size_big-1ZTLibqo .errorCard__icon-1ZTLibqo{margin-bottom:21px}.errorCard__message-1ZTLibqo{font-size:14px;line-height:22px;max-width:350px;text-align:center}.errorCard_size_big-1ZTLibqo .errorCard__message-1ZTLibqo{font-size:18px;line-height:28px}.errorCardRendererContainer-1ZTLibqo{--backgroundColor:initial;--textColor:initial;cursor:default;height:100%;position:absolute;width:100%}.errorCardRendererContainer-1ZTLibqo:empty{visibility:hidden} -------------------------------------------------------------------------------- /public/charting_library/bundles/5551.407668886ab3145df3b5.css: -------------------------------------------------------------------------------- 1 | .separator-3wSrFLTr{border-top:1px solid #e0e3eb}html.theme-dark .separator-3wSrFLTr{border-top:1px solid #434651}.scrollable-3wSrFLTr{-webkit-overflow-scrolling:touch;flex:1 1 auto;min-height:145px;overflow-x:hidden;overflow-y:auto;scrollbar-color:#9598a1 #0000;scrollbar-width:thin}html.theme-dark .scrollable-3wSrFLTr{scrollbar-color:#363a45 #0000}@media screen and (max-height:290px){.scrollable-3wSrFLTr{min-height:auto}}.scrollable-3wSrFLTr::-webkit-scrollbar{height:5px;width:5px}.scrollable-3wSrFLTr::-webkit-scrollbar-thumb{background-color:#9598a1;border:1px solid #f0f3fa;border-radius:3px}html.theme-dark .scrollable-3wSrFLTr::-webkit-scrollbar-thumb{background-color:#363a45;border-color:#1e222d}.scrollable-3wSrFLTr::-webkit-scrollbar-track{background-color:initial;border-radius:3px}.scrollable-3wSrFLTr::-webkit-scrollbar-corner{display:none} -------------------------------------------------------------------------------- /public/charting_library/bundles/5551.407668886ab3145df3b5.rtl.css: -------------------------------------------------------------------------------- 1 | .separator-3wSrFLTr{border-top:1px solid #e0e3eb}html.theme-dark .separator-3wSrFLTr{border-top:1px solid #434651}.scrollable-3wSrFLTr{-webkit-overflow-scrolling:touch;flex:1 1 auto;min-height:145px;overflow-x:hidden;overflow-y:auto;scrollbar-color:#9598a1 #0000;scrollbar-width:thin}html.theme-dark .scrollable-3wSrFLTr{scrollbar-color:#363a45 #0000}@media screen and (max-height:290px){.scrollable-3wSrFLTr{min-height:auto}}.scrollable-3wSrFLTr::-webkit-scrollbar{height:5px;width:5px}.scrollable-3wSrFLTr::-webkit-scrollbar-thumb{background-color:#9598a1;border:1px solid #f0f3fa;border-radius:3px}html.theme-dark .scrollable-3wSrFLTr::-webkit-scrollbar-thumb{background-color:#363a45;border-color:#1e222d}.scrollable-3wSrFLTr::-webkit-scrollbar-track{background-color:initial;border-radius:3px}.scrollable-3wSrFLTr::-webkit-scrollbar-corner{display:none} -------------------------------------------------------------------------------- /public/charting_library/bundles/5637.a1b98549b1c9f19a01cf.css: -------------------------------------------------------------------------------- 1 | .scrollable-2w4-r8AL{-webkit-overflow-scrolling:touch;flex:1 1 auto;min-height:145px;overflow-x:hidden;overflow-y:auto;scrollbar-color:#9598a1 #0000;scrollbar-width:thin}html.theme-dark .scrollable-2w4-r8AL{scrollbar-color:#363a45 #0000}@media screen and (max-height:290px){.scrollable-2w4-r8AL{min-height:auto}}.scrollable-2w4-r8AL::-webkit-scrollbar{height:5px;width:5px}.scrollable-2w4-r8AL::-webkit-scrollbar-thumb{background-color:#9598a1;border:1px solid #f0f3fa;border-radius:3px}html.theme-dark .scrollable-2w4-r8AL::-webkit-scrollbar-thumb{background-color:#363a45;border-color:#1e222d}.scrollable-2w4-r8AL::-webkit-scrollbar-track{background-color:initial;border-radius:3px}.scrollable-2w4-r8AL::-webkit-scrollbar-corner{display:none} -------------------------------------------------------------------------------- /public/charting_library/bundles/5637.a1b98549b1c9f19a01cf.rtl.css: -------------------------------------------------------------------------------- 1 | .scrollable-2w4-r8AL{-webkit-overflow-scrolling:touch;flex:1 1 auto;min-height:145px;overflow-x:hidden;overflow-y:auto;scrollbar-color:#9598a1 #0000;scrollbar-width:thin}html.theme-dark .scrollable-2w4-r8AL{scrollbar-color:#363a45 #0000}@media screen and (max-height:290px){.scrollable-2w4-r8AL{min-height:auto}}.scrollable-2w4-r8AL::-webkit-scrollbar{height:5px;width:5px}.scrollable-2w4-r8AL::-webkit-scrollbar-thumb{background-color:#9598a1;border:1px solid #f0f3fa;border-radius:3px}html.theme-dark .scrollable-2w4-r8AL::-webkit-scrollbar-thumb{background-color:#363a45;border-color:#1e222d}.scrollable-2w4-r8AL::-webkit-scrollbar-track{background-color:initial;border-radius:3px}.scrollable-2w4-r8AL::-webkit-scrollbar-corner{display:none} -------------------------------------------------------------------------------- /public/charting_library/bundles/6473.e5bfe6a8cd8097cebb56.css: -------------------------------------------------------------------------------- 1 | .separator-eqcGT_ow{background-color:#e0e3eb;flex-shrink:0;height:1px;margin:6px 0}html.theme-dark .separator-eqcGT_ow{background-color:#434651}.small-eqcGT_ow{margin-bottom:4px;margin-top:4px}.normal-eqcGT_ow{margin-bottom:6px;margin-top:6px}.large-eqcGT_ow{margin-bottom:8px;margin-top:8px} -------------------------------------------------------------------------------- /public/charting_library/bundles/6473.e5bfe6a8cd8097cebb56.rtl.css: -------------------------------------------------------------------------------- 1 | .separator-eqcGT_ow{background-color:#e0e3eb;flex-shrink:0;height:1px;margin:6px 0}html.theme-dark .separator-eqcGT_ow{background-color:#434651}.small-eqcGT_ow{margin-bottom:4px;margin-top:4px}.normal-eqcGT_ow{margin-bottom:6px;margin-top:6px}.large-eqcGT_ow{margin-bottom:8px;margin-top:8px} -------------------------------------------------------------------------------- /public/charting_library/bundles/6637.b9569ad7b9c1ffb59c7c.css: -------------------------------------------------------------------------------- 1 | .button-2YcRd2gv{padding:0 5px} -------------------------------------------------------------------------------- /public/charting_library/bundles/6637.b9569ad7b9c1ffb59c7c.rtl.css: -------------------------------------------------------------------------------- 1 | .button-2YcRd2gv{padding:0 5px} -------------------------------------------------------------------------------- /public/charting_library/bundles/7393f661fc7d4389ea6d4dabd2a5aeea.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/charting_library/bundles/7393f661fc7d4389ea6d4dabd2a5aeea.png -------------------------------------------------------------------------------- /public/charting_library/bundles/7610.9e79032a52ca259701ef.css: -------------------------------------------------------------------------------- 1 | .menuWrap-g78rwseC{background-color:#fff;border-radius:3px;box-shadow:0 2px 4px #0003;box-sizing:border-box;text-align:left;-webkit-user-select:none;user-select:none;z-index:100}html.theme-dark .menuWrap-g78rwseC{background-color:#1e222d;box-shadow:0 2px 4px #0006}.menuWrap-g78rwseC.isMeasuring-g78rwseC{opacity:0;pointer-events:none;position:fixed;visibility:hidden}.menuWrap-g78rwseC:focus{outline:none}.scrollWrap-g78rwseC{height:100%;overflow-x:hidden;overflow-y:auto}.scrollWrap-g78rwseC.momentumBased-g78rwseC{-webkit-overflow-scrolling:touch}.scrollWrap-g78rwseC::-webkit-scrollbar{height:5px;width:5px}.scrollWrap-g78rwseC::-webkit-scrollbar-thumb{background-color:#9598a1;border:1px solid #f0f3fa;border-radius:3px}html.theme-dark .scrollWrap-g78rwseC::-webkit-scrollbar-thumb{background-color:#363a45;border-color:#1e222d}.scrollWrap-g78rwseC::-webkit-scrollbar-track{background-color:initial;border-radius:3px}.scrollWrap-g78rwseC::-webkit-scrollbar-corner{display:none}.menuBox-g78rwseC{padding:6px 0}.isHidden-g78rwseC{display:none} -------------------------------------------------------------------------------- /public/charting_library/bundles/7610.9e79032a52ca259701ef.rtl.css: -------------------------------------------------------------------------------- 1 | .menuWrap-g78rwseC{background-color:#fff;border-radius:3px;box-shadow:0 2px 4px #0003;box-sizing:border-box;text-align:right;-webkit-user-select:none;user-select:none;z-index:100}html.theme-dark .menuWrap-g78rwseC{background-color:#1e222d;box-shadow:0 2px 4px #0006}.menuWrap-g78rwseC.isMeasuring-g78rwseC{opacity:0;pointer-events:none;position:fixed;visibility:hidden}.menuWrap-g78rwseC:focus{outline:none}.scrollWrap-g78rwseC{height:100%;overflow-x:hidden;overflow-y:auto}.scrollWrap-g78rwseC.momentumBased-g78rwseC{-webkit-overflow-scrolling:touch}.scrollWrap-g78rwseC::-webkit-scrollbar{height:5px;width:5px}.scrollWrap-g78rwseC::-webkit-scrollbar-thumb{background-color:#9598a1;border:1px solid #f0f3fa;border-radius:3px}html.theme-dark .scrollWrap-g78rwseC::-webkit-scrollbar-thumb{background-color:#363a45;border-color:#1e222d}.scrollWrap-g78rwseC::-webkit-scrollbar-track{background-color:initial;border-radius:3px}.scrollWrap-g78rwseC::-webkit-scrollbar-corner{display:none}.menuBox-g78rwseC{padding:6px 0}.isHidden-g78rwseC{display:none} -------------------------------------------------------------------------------- /public/charting_library/bundles/7757.6d2b490c3cc2ed78d4dd.css: -------------------------------------------------------------------------------- 1 | .footer-3r-9t_XG{align-items:center;background-color:#f8f9fd;border-radius:0 0 6px 6px;box-sizing:border-box;color:#787b86;cursor:default;display:flex;flex:0 0 auto;font-size:13px;justify-content:center;line-height:17px;max-height:65px;min-height:40px;padding:9px 20px;text-align:center}html.theme-dark .footer-3r-9t_XG{background-color:#2a2e39} -------------------------------------------------------------------------------- /public/charting_library/bundles/7757.6d2b490c3cc2ed78d4dd.rtl.css: -------------------------------------------------------------------------------- 1 | .footer-3r-9t_XG{align-items:center;background-color:#f8f9fd;border-radius:0 0 6px 6px;box-sizing:border-box;color:#787b86;cursor:default;display:flex;flex:0 0 auto;font-size:13px;justify-content:center;line-height:17px;max-height:65px;min-height:40px;padding:9px 20px;text-align:center}html.theme-dark .footer-3r-9t_XG{background-color:#2a2e39} -------------------------------------------------------------------------------- /public/charting_library/bundles/7e0cc5f7d7f5151500dd60b8d6ca60a1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/charting_library/bundles/7e0cc5f7d7f5151500dd60b8d6ca60a1.png -------------------------------------------------------------------------------- /public/charting_library/bundles/83.46ce2798763a3d5c2748.css: -------------------------------------------------------------------------------- 1 | .checkbox-2jiVkfto{-webkit-tap-highlight-color:transparent;align-items:center;cursor:default;display:inline-flex;font-size:14px;font-stretch:normal;font-style:normal;font-weight:400;letter-spacing:normal;line-height:normal;position:relative;-webkit-user-select:none;user-select:none}.checkbox-2jiVkfto.reverse-2jiVkfto{flex-direction:row-reverse}.checkbox-2jiVkfto.reverse-2jiVkfto .label-2jiVkfto{margin-left:0;margin-right:8px}.checkbox-2jiVkfto.baseline-2jiVkfto{align-items:baseline}.checkbox-2jiVkfto .label-2jiVkfto{color:#000;margin-left:8px;min-width:0}html.theme-dark .checkbox-2jiVkfto .label-2jiVkfto{color:#b2b5be} -------------------------------------------------------------------------------- /public/charting_library/bundles/83.46ce2798763a3d5c2748.rtl.css: -------------------------------------------------------------------------------- 1 | .checkbox-2jiVkfto{-webkit-tap-highlight-color:transparent;align-items:center;cursor:default;display:inline-flex;font-size:14px;font-stretch:normal;font-style:normal;font-weight:400;letter-spacing:normal;line-height:normal;position:relative;-webkit-user-select:none;user-select:none}.checkbox-2jiVkfto.reverse-2jiVkfto{flex-direction:row-reverse}.checkbox-2jiVkfto.reverse-2jiVkfto .label-2jiVkfto{margin-left:8px;margin-right:0}.checkbox-2jiVkfto.baseline-2jiVkfto{align-items:baseline}.checkbox-2jiVkfto .label-2jiVkfto{color:#000;margin-right:8px;min-width:0}html.theme-dark .checkbox-2jiVkfto .label-2jiVkfto{color:#b2b5be} -------------------------------------------------------------------------------- /public/charting_library/bundles/898929f1acdb622689e0fc0c95c8fcd0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/charting_library/bundles/898929f1acdb622689e0fc0c95c8fcd0.png -------------------------------------------------------------------------------- /public/charting_library/bundles/9305.009b7d4c21c45de9ca48.css: -------------------------------------------------------------------------------- 1 | .errors-3rBjZvef{background-color:#2a2e39;border-radius:3px;box-sizing:border-box;color:#fff;opacity:0;padding:10px 15px;pointer-events:none;position:absolute;text-align:center;z-index:2}html.theme-dark .errors-3rBjZvef{background-color:#363c4e}.errors-3rBjZvef:empty{display:none}.errors-3rBjZvef.show-3rBjZvef{opacity:1}.errors-3rBjZvef .error-3rBjZvef{font-size:12px;line-height:1.4;margin-top:10px;text-transform:none;word-break:break-word}.errors-3rBjZvef .error-3rBjZvef:first-child{margin-top:0}.error-icon-3x-w99oG{display:inline-flex}.error-icon-3x-w99oG.intent-danger-3x-w99oG{color:#f23645}html.theme-dark .error-icon-3x-w99oG.intent-danger-3x-w99oG{color:#b22833}.error-icon-3x-w99oG.intent-warning-3x-w99oG,html.theme-dark .error-icon-3x-w99oG.intent-warning-3x-w99oG{color:#ff9800}.error-icon-3x-w99oG svg{height:16px;width:16px}.static-messages-1hgcN2c2{flex-flow:column nowrap;font-size:12px;font-style:normal;font-weight:400;line-height:17px}.static-messages-1hgcN2c2.errors-1hgcN2c2{color:#f23645}html.theme-dark .static-messages-1hgcN2c2.errors-1hgcN2c2{color:#b22833}.static-messages-1hgcN2c2.warnings-1hgcN2c2,html.theme-dark .static-messages-1hgcN2c2.warnings-1hgcN2c2{color:#ff9800}.static-messages-1hgcN2c2 .message-1hgcN2c2{margin:0} -------------------------------------------------------------------------------- /public/charting_library/bundles/9305.009b7d4c21c45de9ca48.rtl.css: -------------------------------------------------------------------------------- 1 | .errors-3rBjZvef{background-color:#2a2e39;border-radius:3px;box-sizing:border-box;color:#fff;opacity:0;padding:10px 15px;pointer-events:none;position:absolute;text-align:center;z-index:2}html.theme-dark .errors-3rBjZvef{background-color:#363c4e}.errors-3rBjZvef:empty{display:none}.errors-3rBjZvef.show-3rBjZvef{opacity:1}.errors-3rBjZvef .error-3rBjZvef{font-size:12px;line-height:1.4;margin-top:10px;text-transform:none;word-break:break-word}.errors-3rBjZvef .error-3rBjZvef:first-child{margin-top:0}.error-icon-3x-w99oG{display:inline-flex}.error-icon-3x-w99oG.intent-danger-3x-w99oG{color:#f23645}html.theme-dark .error-icon-3x-w99oG.intent-danger-3x-w99oG{color:#b22833}.error-icon-3x-w99oG.intent-warning-3x-w99oG,html.theme-dark .error-icon-3x-w99oG.intent-warning-3x-w99oG{color:#ff9800}.error-icon-3x-w99oG svg{height:16px;width:16px}.static-messages-1hgcN2c2{flex-flow:column nowrap;font-size:12px;font-style:normal;font-weight:400;line-height:17px}.static-messages-1hgcN2c2.errors-1hgcN2c2{color:#f23645}html.theme-dark .static-messages-1hgcN2c2.errors-1hgcN2c2{color:#b22833}.static-messages-1hgcN2c2.warnings-1hgcN2c2,html.theme-dark .static-messages-1hgcN2c2.warnings-1hgcN2c2{color:#ff9800}.static-messages-1hgcN2c2 .message-1hgcN2c2{margin:0} -------------------------------------------------------------------------------- /public/charting_library/bundles/9602.a0fc3bf3e40760a87f74.css: -------------------------------------------------------------------------------- 1 | .footer-KW8170fm{border-top:1px solid #e0e3eb;display:flex;flex:0 0 auto;padding:16px 20px}html.theme-dark .footer-KW8170fm{border-top:1px solid #434651}@media screen and (max-height:360px){.footer-KW8170fm{padding:10px 20px}}.footer-KW8170fm .submitButton-KW8170fm{padding-left:12px}.footer-KW8170fm .buttons-KW8170fm{margin-left:auto} -------------------------------------------------------------------------------- /public/charting_library/bundles/9602.a0fc3bf3e40760a87f74.rtl.css: -------------------------------------------------------------------------------- 1 | .footer-KW8170fm{border-top:1px solid #e0e3eb;display:flex;flex:0 0 auto;padding:16px 20px}html.theme-dark .footer-KW8170fm{border-top:1px solid #434651}@media screen and (max-height:360px){.footer-KW8170fm{padding:10px 20px}}.footer-KW8170fm .submitButton-KW8170fm{padding-right:12px}.footer-KW8170fm .buttons-KW8170fm{margin-right:auto} -------------------------------------------------------------------------------- /public/charting_library/bundles/a6506134daec7169f68f563f084a9d41.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/charting_library/bundles/b1a63a011fd92dfb93db6db243bb036c.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/charting_library/bundles/b1a63a011fd92dfb93db6db243bb036c.woff2 -------------------------------------------------------------------------------- /public/charting_library/bundles/ed68e83c16f77203e73dbc4c3a7c7fa1.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/charting_library/bundles/ed68e83c16f77203e73dbc4c3a7c7fa1.cur -------------------------------------------------------------------------------- /public/charting_library/bundles/f55394b616ed1ae9462c37daab941d93.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/charting_library/bundles/f55394b616ed1ae9462c37daab941d93.png -------------------------------------------------------------------------------- /public/charting_library/bundles/share-chart-to-social-utils.830f7e41690ac8285de5.js: -------------------------------------------------------------------------------- 1 | "use strict";(self.webpackChunktradingview=self.webpackChunktradingview||[]).push([[4665],{59248:(t,n,e)=>{var o;e.r(n),e.d(n,{Twitter:()=>o}),function(t){function n(t,n){return"cme"===TradingView.widgetCustomer?n+" from cmegroup.com via @tradingview $"+t:`Check out my #${t} analysis on @TradingView: ${n}`}function e(t="about:blank",n="snapshot_tweet"){const e=Math.round(screen.width/2-275),o=Math.round(screen.height/2-210);return window.open(t,n,`scrollbars=yes,resizable=yes,toolbar=no,location=yes,\n\t\t\t\twidth=550,height=420,\n\t\t\t\tleft=${e},top=${o}`)}t.getStatus=n,t.shareSnapshot=function(t){const o=e();return{onFailure:()=>{o.close()},onSuccess:e=>{o.location.href=function(t,e){return"https://twitter.com/intent/tweet?&text="+encodeURIComponent(n(t,function(t){return window.location.protocol+"//"+window.location.host+"/x/"+t+"/"}(e)))}(t,e)}}},t.shareSnapshotInstantly=function(t,o){e(function(t,e){return"https://twitter.com/intent/tweet?&text="+encodeURIComponent(n(t,e))}(t,o))}}(o||(o={}))}}]); -------------------------------------------------------------------------------- /public/charting_library/bundles/show-theme-save-dialog.b99932982e0d8e47d562.js: -------------------------------------------------------------------------------- 1 | "use strict";(self.webpackChunktradingview=self.webpackChunktradingview||[]).push([[7648],{64388:(e,t,n)=>{n.r(t),n.d(t,{showThemeSaveDialog:()=>i});var a=n(79881),o=n(87614),s=n(99182),h=n(87438);function i(e,t){function n(n){(0,s.saveTheme)(n,e).then(()=>{t&&t(n)}),(0,h.trackEvent)("GUI","Themes","Save custom theme")}(0,o.showRename)({title:(0,a.t)("Save Theme As"),text:(0,a.t)("Theme name")+":",maxLength:128,onRename:({newValue:e,focusInput:t,dialogClose:h,innerManager:i})=>new Promise(m=>{(0,s.isThemeExist)(e).then(s=>{if(s){const s=(0,a.t)("Color Theme '{themeName}' already exists. Do you really want to replace it?",{replace:{themeName:e}});(0,o.showConfirm)({text:s,onConfirm:({dialogClose:t})=>{n(e),t(),h()},onClose:t},i).then(()=>{m()})}else n(e),m(),h()})})})}}}]); -------------------------------------------------------------------------------- /public/charting_library/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "description": "CL v22.032 (internal id e2a841ff @ 2022-07-06T11:53:07.702Z)", 4 | "type": "module", 5 | "main": "charting_library.cjs.js", 6 | "module": "charting_library.esm.js", 7 | "types": "charting_library.d.ts" 8 | } 9 | -------------------------------------------------------------------------------- /public/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/favicon-16x16.png -------------------------------------------------------------------------------- /public/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/favicon-32x32.png -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/favicon.ico -------------------------------------------------------------------------------- /public/favicon/android-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/favicon/android-icon-144x144.png -------------------------------------------------------------------------------- /public/favicon/android-icon-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/favicon/android-icon-192x192.png -------------------------------------------------------------------------------- /public/favicon/android-icon-36x36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/favicon/android-icon-36x36.png -------------------------------------------------------------------------------- /public/favicon/android-icon-48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/favicon/android-icon-48x48.png -------------------------------------------------------------------------------- /public/favicon/android-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/favicon/android-icon-72x72.png -------------------------------------------------------------------------------- /public/favicon/android-icon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/favicon/android-icon-96x96.png -------------------------------------------------------------------------------- /public/favicon/apple-icon-114x114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/favicon/apple-icon-114x114.png -------------------------------------------------------------------------------- /public/favicon/apple-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/favicon/apple-icon-120x120.png -------------------------------------------------------------------------------- /public/favicon/apple-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/favicon/apple-icon-144x144.png -------------------------------------------------------------------------------- /public/favicon/apple-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/favicon/apple-icon-152x152.png -------------------------------------------------------------------------------- /public/favicon/apple-icon-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/favicon/apple-icon-180x180.png -------------------------------------------------------------------------------- /public/favicon/apple-icon-57x57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/favicon/apple-icon-57x57.png -------------------------------------------------------------------------------- /public/favicon/apple-icon-60x60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/favicon/apple-icon-60x60.png -------------------------------------------------------------------------------- /public/favicon/apple-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/favicon/apple-icon-72x72.png -------------------------------------------------------------------------------- /public/favicon/apple-icon-76x76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/favicon/apple-icon-76x76.png -------------------------------------------------------------------------------- /public/favicon/apple-icon-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/favicon/apple-icon-precomposed.png -------------------------------------------------------------------------------- /public/favicon/apple-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/favicon/apple-icon.png -------------------------------------------------------------------------------- /public/favicon/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | #ffffff -------------------------------------------------------------------------------- /public/favicon/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/favicon/favicon-16x16.png -------------------------------------------------------------------------------- /public/favicon/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/favicon/favicon-32x32.png -------------------------------------------------------------------------------- /public/favicon/favicon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/favicon/favicon-96x96.png -------------------------------------------------------------------------------- /public/favicon/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/favicon/favicon.ico -------------------------------------------------------------------------------- /public/favicon/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "App", 3 | "icons": [ 4 | { 5 | "src": "\/android-icon-36x36.png", 6 | "sizes": "36x36", 7 | "type": "image\/png", 8 | "density": "0.75" 9 | }, 10 | { 11 | "src": "\/android-icon-48x48.png", 12 | "sizes": "48x48", 13 | "type": "image\/png", 14 | "density": "1.0" 15 | }, 16 | { 17 | "src": "\/android-icon-72x72.png", 18 | "sizes": "72x72", 19 | "type": "image\/png", 20 | "density": "1.5" 21 | }, 22 | { 23 | "src": "\/android-icon-96x96.png", 24 | "sizes": "96x96", 25 | "type": "image\/png", 26 | "density": "2.0" 27 | }, 28 | { 29 | "src": "\/android-icon-144x144.png", 30 | "sizes": "144x144", 31 | "type": "image\/png", 32 | "density": "3.0" 33 | }, 34 | { 35 | "src": "\/android-icon-192x192.png", 36 | "sizes": "192x192", 37 | "type": "image\/png", 38 | "density": "4.0" 39 | } 40 | ] 41 | } -------------------------------------------------------------------------------- /public/favicon/ms-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/favicon/ms-icon-144x144.png -------------------------------------------------------------------------------- /public/favicon/ms-icon-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/favicon/ms-icon-150x150.png -------------------------------------------------------------------------------- /public/favicon/ms-icon-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/favicon/ms-icon-310x310.png -------------------------------------------------------------------------------- /public/favicon/ms-icon-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/favicon/ms-icon-70x70.png -------------------------------------------------------------------------------- /public/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/logo.png -------------------------------------------------------------------------------- /public/og.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/public/og.png -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /public/site.webmanifest: -------------------------------------------------------------------------------- 1 | {"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} -------------------------------------------------------------------------------- /src/components/Button/Button.scss: -------------------------------------------------------------------------------- 1 | .btn { 2 | text-decoration: none; 3 | display: inline-flex; 4 | align-items: center; 5 | background: transparent; 6 | padding: 0.75rem 1.25rem; 7 | color: white; 8 | font-size: var(--font-sm); 9 | border: 1px solid var(--dark-blue-border); 10 | border-radius: var(--border-radius-sm); 11 | cursor: pointer; 12 | 13 | .btn-label { 14 | margin-left: 1.1625rem; 15 | font-weight: normal; 16 | line-height: 2.325rem; 17 | letter-spacing: 0; 18 | font-size: 2rem; 19 | } 20 | 21 | .btn-image { 22 | display: inline-flex; 23 | align-items: center; 24 | justify-content: center; 25 | max-height: 2.3rem; 26 | max-width: 2.3rem; 27 | } 28 | &:hover { 29 | background: var(--dark-blue-hover); 30 | } 31 | &:active { 32 | background: var(--dark-blue-active); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/components/Button/Button.tsx: -------------------------------------------------------------------------------- 1 | import { ReactNode } from "react"; 2 | import cx from "classnames"; 3 | import "./Button.scss"; 4 | 5 | type Props = { 6 | children: ReactNode; 7 | imgSrc?: string; 8 | imgName?: string; 9 | className?: string; 10 | href?: string; 11 | onClick?: () => void; 12 | disabled?: boolean; 13 | }; 14 | 15 | export default function Button({ href, imgSrc, children, className, imgName, onClick, disabled = false }: Props) { 16 | let classNames = cx("btn", className); 17 | if (onClick) { 18 | return ( 19 | 29 | ); 30 | } 31 | return ( 32 | 33 | {imgSrc && {imgName}} 34 | {children} 35 | 36 | ); 37 | } 38 | -------------------------------------------------------------------------------- /src/components/Checkbox/Checkbox.css: -------------------------------------------------------------------------------- 1 | .Checkbox { 2 | user-select: none; 3 | cursor: pointer; 4 | display: flex; 5 | align-items: center; 6 | } 7 | 8 | .Checkbox.disabled { 9 | cursor: default; 10 | pointer-events: none; 11 | } 12 | 13 | .Checkbox-icon-wrapper { 14 | display: inline-flex; 15 | align-items: center; 16 | } 17 | 18 | .Checkbox .Checkbox-icon { 19 | font-size: 1.25rem; 20 | color: rgba(61, 81, 255, 1); 21 | margin-right: 0.62rem; 22 | margin-bottom: 0; 23 | } 24 | 25 | .Checkbox.disabled .Checkbox-icon { 26 | color: #47509e; 27 | } 28 | 29 | .Checkbox-icon.inactive { 30 | color: rgba(255, 255, 255, 0.7); 31 | } 32 | 33 | .Checkbox-label { 34 | display: inline-block; 35 | vertical-align: middle; 36 | font-size: var(--font-sm); 37 | } 38 | -------------------------------------------------------------------------------- /src/components/Checkbox/Checkbox.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | import cx from "classnames"; 4 | 5 | import "./Checkbox.css"; 6 | import { ImCheckboxUnchecked, ImCheckboxChecked } from "react-icons/im"; 7 | 8 | export default function Checkbox(props) { 9 | const { isChecked, setIsChecked, disabled, className } = props; 10 | 11 | return ( 12 |
setIsChecked(!isChecked)} 15 | > 16 | 17 | {isChecked && } 18 | {!isChecked && } 19 | 20 | {props.children} 21 |
22 | ); 23 | } 24 | -------------------------------------------------------------------------------- /src/components/Common/Card.css: -------------------------------------------------------------------------------- 1 | .card { 2 | border: 1px solid #1e2136; 3 | border-radius: 0.4rem; 4 | background: #16182e; 5 | } 6 | 7 | .card-header { 8 | font-size: var(--font-md); 9 | line-height: 2.1rem; 10 | font-weight: normal; 11 | letter-spacing: 0px; 12 | color: #ffffff; 13 | display: flex; 14 | align-items: center; 15 | justify-content: space-between; 16 | margin: 1.5rem; 17 | } 18 | 19 | .card-divider { 20 | height: 1px; 21 | background: #23263b; 22 | } 23 | .card-body { 24 | padding: 1.5rem; 25 | } 26 | -------------------------------------------------------------------------------- /src/components/Common/Card.tsx: -------------------------------------------------------------------------------- 1 | import { ReactNode } from "react"; 2 | import Tooltip from "../Tooltip/Tooltip"; 3 | import "./Card.css"; 4 | 5 | type Props = { 6 | title: string; 7 | children: ReactNode; 8 | className?: string; 9 | tooltipText?: string; 10 | }; 11 | 12 | function Card({ title, children, className, tooltipText }: Props) { 13 | return ( 14 |
15 | {tooltipText ? ( 16 | {title}
} 18 | position="left-bottom" 19 | renderContent={() => tooltipText} 20 | /> 21 | ) : ( 22 |
{title}
23 | )} 24 |
25 |
{children}
26 | 27 | ); 28 | } 29 | 30 | export default Card; 31 | -------------------------------------------------------------------------------- /src/components/Common/ConnectWalletButton.scss: -------------------------------------------------------------------------------- 1 | .connect-wallet-btn { 2 | background: transparent; 3 | padding: 0.5rem 1.4rem; 4 | display: inline-flex; 5 | align-items: center; 6 | border: none; 7 | color: #fff; 8 | font-size: var(--font-sm); 9 | cursor: pointer; 10 | border: 1px solid var(--dark-blue-border); 11 | border-radius: var(--border-radius-sm); 12 | 13 | .btn-icon { 14 | display: inline-flex; 15 | align-items: center; 16 | justify-content: center; 17 | } 18 | .btn-label { 19 | font-weight: 400; 20 | font-size: var(--font-sm); 21 | margin-left: 0.8rem; 22 | letter-spacing: 0; 23 | } 24 | &:hover { 25 | background: var(--dark-blue-hover); 26 | } 27 | &:active { 28 | background: var(--dark-blue-active); 29 | } 30 | } 31 | 32 | @media (max-width: 450px) { 33 | .connect-wallet { 34 | padding: 0.5rem 0.8rem; 35 | } 36 | } 37 | 38 | @media (max-width: 350px) { 39 | .connect-wallet-btn { 40 | height: 3.6rem; 41 | .btn-icon { 42 | display: none; 43 | } 44 | .btn-label { 45 | margin-left: 0px; 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/components/Common/ConnectWalletButton.tsx: -------------------------------------------------------------------------------- 1 | import { ReactNode } from "react"; 2 | import "./ConnectWalletButton.scss"; 3 | 4 | type Props = { 5 | imgSrc: string; 6 | children: ReactNode; 7 | onClick: () => void; 8 | className?: string; 9 | }; 10 | 11 | export default function ConnectWalletButton({ imgSrc, children, onClick, className }: Props) { 12 | return ( 13 | 17 | ); 18 | } 19 | -------------------------------------------------------------------------------- /src/components/Common/Loader.css: -------------------------------------------------------------------------------- 1 | @keyframes bouncing-loader { 2 | to { 3 | opacity: 0.1; 4 | transform: translate3d(0, -1.6rem, 0); 5 | } 6 | } 7 | 8 | .bouncing-loader { 9 | display: flex; 10 | justify-content: center; 11 | } 12 | 13 | .bouncing-loader > div { 14 | width: 1.6rem; 15 | height: 1.6rem; 16 | margin: 4.65rem 0.31rem; 17 | background: #8385aa; 18 | border-radius: 50%; 19 | animation: bouncing-loader 0.6s infinite alternate; 20 | } 21 | 22 | .bouncing-loader > div:nth-child(2) { 23 | animation-delay: 0.2s; 24 | } 25 | 26 | .bouncing-loader > div:nth-child(3) { 27 | animation-delay: 0.4s; 28 | } 29 | -------------------------------------------------------------------------------- /src/components/Common/Loader.js: -------------------------------------------------------------------------------- 1 | import "./Loader.css"; 2 | 3 | export default function Loader() { 4 | return ( 5 |
6 |
7 |
8 |
9 |
10 | ); 11 | } 12 | -------------------------------------------------------------------------------- /src/components/Common/Portal.js: -------------------------------------------------------------------------------- 1 | import { useEffect, useMemo } from "react"; 2 | import { createPortal } from "react-dom"; 3 | 4 | export default function Portal({ children }) { 5 | const root = document.body; 6 | 7 | const el = useMemo(() => document.createElement("div"), []); 8 | 9 | useEffect(() => { 10 | root.appendChild(el); 11 | return () => root.removeChild(el); 12 | }, [root, el]); 13 | 14 | return createPortal(children, el); 15 | } 16 | -------------------------------------------------------------------------------- /src/components/Common/SpinningLoader.css: -------------------------------------------------------------------------------- 1 | .spinning-loader { 2 | display: inline-block; 3 | font-size: 1.25rem; 4 | vertical-align: middle; 5 | } 6 | -------------------------------------------------------------------------------- /src/components/Common/SpinningLoader.js: -------------------------------------------------------------------------------- 1 | import "./SpinningLoader.css"; 2 | 3 | import { ImSpinner2 } from "react-icons/im"; 4 | 5 | function SpinningLoader({ size = "1.25rem" }) { 6 | return ; 7 | } 8 | 9 | export default SpinningLoader; 10 | -------------------------------------------------------------------------------- /src/components/EventToast/AnnouncementIcon.js: -------------------------------------------------------------------------------- 1 | function Icon({ className }) { 2 | return ( 3 | 18 | ); 19 | } 20 | 21 | export default Icon; 22 | -------------------------------------------------------------------------------- /src/components/EventToast/EventToastContainer.js: -------------------------------------------------------------------------------- 1 | import { Toaster } from "react-hot-toast"; 2 | import { useWindowScroll, createBreakpoint } from "react-use"; 3 | 4 | function EventToastContainer() { 5 | let { y: scrollY } = useWindowScroll(); 6 | const useBreakpoint = createBreakpoint({ XL: 1033, L: 768, S: 350 }); 7 | const breakpoint = useBreakpoint(); 8 | return ( 9 | 60 ? "30px" : `${93 - scrollY}px`, 18 | right: breakpoint === "XL" ? "30px" : "1rem", 19 | }} 20 | toastOptions={{ 21 | duration: Infinity, 22 | }} 23 | /> 24 | ); 25 | } 26 | export default EventToastContainer; 27 | -------------------------------------------------------------------------------- /src/components/Exchange/ChartTokenSelector.css: -------------------------------------------------------------------------------- 1 | .chart-token-selector { 2 | padding-top: 0 !important; 3 | padding-bottom: 0 !important; 4 | } 5 | 6 | .chart-token-selector--current { 7 | font-size: 2.1rem; 8 | font-weight: 700; 9 | margin-right: 1rem; 10 | color: white; 11 | } 12 | 13 | .chart-token-menu-items.menu-items { 14 | width: 15.8rem; 15 | top: 6rem; 16 | right: unset; 17 | left: 0; 18 | } 19 | 20 | .chart-token-menu-items .menu-item { 21 | font-size: var(--font-sm); 22 | height: 3.4rem; 23 | color: #a0a3c4; 24 | } 25 | -------------------------------------------------------------------------------- /src/components/Exchange/ConfirmationBox.css: -------------------------------------------------------------------------------- 1 | .order-list { 2 | list-style: none; 3 | padding: 0; 4 | margin: 1rem 0; 5 | } 6 | .order-list li { 7 | display: flex; 8 | justify-content: space-between; 9 | align-items: center; 10 | background: var(--dark-blue-hover); 11 | border-radius: var(--border-radius-sm); 12 | margin-bottom: 0.5rem; 13 | padding: 1rem; 14 | } 15 | .order-list li p { 16 | margin: 0; 17 | } 18 | .order-list li button { 19 | font-size: var(--font-sm); 20 | background: none; 21 | border: none; 22 | color: white; 23 | opacity: 0.8; 24 | } 25 | .order-list li button:hover { 26 | opacity: 1; 27 | } 28 | 29 | .view-orders { 30 | text-decoration: underline; 31 | cursor: pointer; 32 | } 33 | -------------------------------------------------------------------------------- /src/components/Exchange/ExchangeBanner.css: -------------------------------------------------------------------------------- 1 | .ExchangeBanner { 2 | background: linear-gradient(90deg, #105461, #28156e); 3 | border-radius: 0.5rem; 4 | margin: 3rem 3.1rem 1.5rem; 5 | padding: 1.2rem 2.4rem; 6 | padding-right: 4rem; 7 | position: relative; 8 | } 9 | 10 | .ExchangeBanner-text { 11 | color: white; 12 | font-size: 1.8rem; 13 | line-height: 2.3rem; 14 | margin: 0; 15 | } 16 | 17 | .ExchangeBanner-price { 18 | color: #50d0fe; 19 | } 20 | 21 | .ExchangeBanner-link { 22 | color: white; 23 | } 24 | 25 | .ExchangeBanner-close { 26 | position: absolute; 27 | top: 1.2rem; 28 | right: 2.4rem; 29 | cursor: pointer; 30 | } 31 | 32 | @media (max-width: 700px) { 33 | .ExchangeBanner { 34 | margin: 1.5rem; 35 | margin-top: 0.8rem; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/components/Exchange/ExchangeInfoRow.js: -------------------------------------------------------------------------------- 1 | import cx from "classnames"; 2 | 3 | export default function ExchangeInfoRow(props) { 4 | const { label, children, value, isTop, isWarning } = props; 5 | 6 | return ( 7 |
8 |
{label}
9 |
{children || value}
10 |
11 | ); 12 | } 13 | -------------------------------------------------------------------------------- /src/components/Exchange/ExchangeWalletTokens.css: -------------------------------------------------------------------------------- 1 | .ExchangeWalletTokens { 2 | max-height: 100%; 3 | overflow: auto; 4 | } 5 | 6 | .ExchangeWalletTokens-token-name { 7 | margin-right: 1.5rem; 8 | } 9 | 10 | .ExchangeWalletTokens-box { 11 | display: block; 12 | cursor: pointer; 13 | border-radius: 0.6rem; 14 | text-align: right; 15 | white-space: nowrap; 16 | } 17 | 18 | .ExchangeWalletTokens-box:hover { 19 | color: #8763ff; 20 | } 21 | 22 | .ExchangeWalletTokens-token-row { 23 | cursor: pointer; 24 | padding: 0.8rem 1.5rem; 25 | } 26 | 27 | .ExchangeWalletTokens-token-row:hover { 28 | background: linear-gradient(90deg, rgba(93, 43, 255, 0.5) 0%, rgba(184, 15, 150, 0.5) 100%); 29 | } 30 | 31 | .ExchangeWalletTokens-top-row { 32 | font-size: var(--font-base); 33 | display: grid; 34 | grid-template-columns: auto auto; 35 | } 36 | 37 | .ExchangeWalletTokens-content-row { 38 | margin-top: 0.31rem; 39 | font-size: var(--font-sm); 40 | opacity: 0.7; 41 | display: grid; 42 | grid-template-columns: auto auto; 43 | } 44 | -------------------------------------------------------------------------------- /src/components/Exchange/OrdersToa.css: -------------------------------------------------------------------------------- 1 | .Orders-toa .Modal-content { 2 | width: 36rem; 3 | font-size: var(--font-base); 4 | } 5 | 6 | .Orders-toa-accept-rules { 7 | margin-top: 0.31rem; 8 | } 9 | 10 | .Orders-toa-accept-rules .Checkbox { 11 | width: 100%; 12 | display: grid; 13 | grid-template-columns: 1fr auto; 14 | direction: rtl; 15 | font-size: var(--font-sm); 16 | margin-bottom: 0.465rem; 17 | } 18 | 19 | .Orders-toa-accept-rules .Checkbox-label { 20 | margin-right: 0.8rem; 21 | } 22 | -------------------------------------------------------------------------------- /src/components/Exchange/PositionDropdown.css: -------------------------------------------------------------------------------- 1 | .PositionDropdown-dots-icon { 2 | font-size: 1rem; 3 | border: none; 4 | color: rgba(255, 255, 255, 0.7); 5 | display: inline-flex; 6 | align-items: center; 7 | margin-top: 0.3rem; 8 | background: rgba(255, 255, 255, 0); 9 | border-radius: 2rem; 10 | padding: 0.5rem; 11 | } 12 | 13 | .PositionDropdown-dots-icon:hover { 14 | color: rgba(255, 255, 255, 1); 15 | background: rgba(255, 255, 255, 0.1); 16 | } 17 | 18 | .PositionDropdown-extra-options { 19 | position: relative; 20 | } 21 | 22 | .PositionDropdown-extra-options .menu-items { 23 | top: 1rem; 24 | min-width: 15.5rem; 25 | } 26 | -------------------------------------------------------------------------------- /src/components/Exchange/SwapBox.css: -------------------------------------------------------------------------------- 1 | .SwapBox-collateral-tooltip-text { 2 | font-weight: normal; 3 | } -------------------------------------------------------------------------------- /src/components/Exchange/TradeHistory.css: -------------------------------------------------------------------------------- 1 | .TradeHistory-row { 2 | font-size: var(--font-sm); 3 | padding: 1.5rem; 4 | margin-bottom: 0.8rem; 5 | } 6 | 7 | .TradeHistory-time { 8 | font-size: 1.25rem; 9 | margin-bottom: 0.155rem; 10 | } 11 | 12 | .TradeHistory-item-link { 13 | display: inline-block; 14 | } 15 | -------------------------------------------------------------------------------- /src/components/Exchange/constants.ts: -------------------------------------------------------------------------------- 1 | export enum ErrorCode { 2 | PoolExceeded = "POOL_EXCEEDED", 3 | Buffer = "BUFFER", 4 | MaxUSDG = "MAX_USDG", 5 | InvalidLiqPrice = "INVALID_LIQ_PRICE", 6 | } 7 | 8 | export enum ErrorDisplayType { 9 | Modal = "MODAL", 10 | Tooltip = "TOOLTIP", 11 | } 12 | -------------------------------------------------------------------------------- /src/components/ExternalLink/ExternalLink.scss: -------------------------------------------------------------------------------- 1 | .link-underline { 2 | text-decoration: underline; 3 | cursor: pointer; 4 | display: inline-flex; 5 | color: rgba(255, 255, 255, 0.7); 6 | &:hover { 7 | color: rgba(255, 255, 255); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/components/ExternalLink/ExternalLink.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import cx from "classnames"; 3 | import "./ExternalLink.scss"; 4 | 5 | type Props = { 6 | href: string; 7 | children: React.ReactNode; 8 | className?: string; 9 | }; 10 | 11 | function ExternalLink({ href, children, className }: Props) { 12 | const classNames = cx("link-underline", className); 13 | return ( 14 | 15 | {children} 16 | 17 | ); 18 | } 19 | 20 | export default ExternalLink; 21 | -------------------------------------------------------------------------------- /src/components/InputSection/InputSection.css: -------------------------------------------------------------------------------- 1 | .InputSection-static-input { 2 | font-size: var(--font-lg); 3 | } 4 | -------------------------------------------------------------------------------- /src/components/Migration/Migration.css: -------------------------------------------------------------------------------- 1 | .Migration-note { 2 | text-align: center; 3 | margin-bottom: 0.8rem; 4 | } 5 | 6 | .Migration-cards { 7 | display: grid; 8 | grid-template-columns: 1fr 1fr; 9 | padding: 3.1rem; 10 | grid-gap: 16rem; 11 | margin-top: 0.8rem; 12 | } 13 | 14 | .MigrationModal-info-box { 15 | margin-bottom: 1.1rem; 16 | } 17 | 18 | @media (max-width: 800px) { 19 | .Migration-cards { 20 | grid-template-columns: 1fr; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/components/Modal/ModalWithPortal.js: -------------------------------------------------------------------------------- 1 | import Portal from "../Common/Portal"; 2 | import Modal from "./Modal"; 3 | 4 | export default function ModalWithPortal(props) { 5 | return ( 6 | 7 | 8 | 9 | ); 10 | } 11 | -------------------------------------------------------------------------------- /src/components/ModalViews/RedirectModal.css: -------------------------------------------------------------------------------- 1 | .RedirectModal .Modal-content { 2 | width: 34rem; 3 | font-size: var(--font-base); 4 | line-height: 1.9rem; 5 | } 6 | 7 | .RedirectModal .Modal-body .Checkbox { 8 | align-items: flex-start; 9 | } 10 | 11 | .RedirectModal .Modal-body .Checkbox-icon-wrapper { 12 | display: block; 13 | } 14 | 15 | .RedirectModal .Modal-body .Checkbox .Checkbox-label { 16 | margin-left: 0.5rem; 17 | } 18 | 19 | @media (max-width: 700px) { 20 | .RedirectModal .Modal-content { 21 | width: 90vw; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/components/Overlay/Overlay.css: -------------------------------------------------------------------------------- 1 | .Overlay { 2 | position: absolute; 3 | top: 0; 4 | left: 0; 5 | right: 0; 6 | bottom: 0; 7 | } 8 | 9 | .Overlay-backdrop { 10 | position: absolute; 11 | z-index: 10; 12 | top: 0; 13 | bottom: 0; 14 | left: 0; 15 | right: 0; 16 | background: rgba(0, 0, 0, 0.3); 17 | backdrop-filter: blur(1rem); 18 | } 19 | 20 | .Overlay-top-bar { 21 | background: red; 22 | height: 1.5rem; 23 | padding: 1.25rem; 24 | display: grid; 25 | grid-template-columns: auto auto; 26 | background: linear-gradient(90deg, rgba(12, 9, 78, 1) 0%, rgba(45, 8, 84, 1) 100%); 27 | border-bottom: 1px solid #1f053b; 28 | } 29 | 30 | .Overlay-title { 31 | opacity: 0.8; 32 | } 33 | 34 | .Overlay-content-outer { 35 | position: relative; 36 | z-index: 20; 37 | background: linear-gradient(45deg, rgba(7, 5, 57, 1) 0%, rgba(34, 3, 66, 1) 100%); 38 | } 39 | 40 | .Overlay-close-button { 41 | text-align: right; 42 | display: inline-block; 43 | opacity: 0.7; 44 | cursor: pointer; 45 | } 46 | 47 | .Overlay-close-button:hover { 48 | opacity: 0.9; 49 | } 50 | -------------------------------------------------------------------------------- /src/components/Overlay/Overlay.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | import { FaTimes } from "react-icons/fa"; 4 | 5 | import "./Overlay.css"; 6 | 7 | export default function Overlay(props) { 8 | return ( 9 |
10 |
11 |
12 |
13 |
{props.title}
14 |
props.setIsVisible(false)}> 15 | 16 |
17 |
18 |
{props.children}
19 |
20 |
21 | ); 22 | } 23 | -------------------------------------------------------------------------------- /src/components/Radio/Radio.css: -------------------------------------------------------------------------------- 1 | .Radio-option { 2 | display: inline-block; 3 | margin-right: 3.1rem; 4 | cursor: pointer; 5 | color: #6b40ed; 6 | } 7 | 8 | .Radio-option-bubble { 9 | display: inline-block; 10 | width: 1.1rem; 11 | height: 1.1rem; 12 | border-radius: 1.5rem; 13 | vertical-align: middle; 14 | margin-right: 0.62rem; 15 | margin-bottom: 0.31rem; 16 | border: 2px solid #6b40ed; 17 | } 18 | 19 | .Radio-option-bubble-inner { 20 | display: none; 21 | background: #ff369a; 22 | width: 0.465rem; 23 | height: 0.465rem; 24 | border-radius: 1.5rem; 25 | margin-left: 0.31rem; 26 | margin-top: 0.31rem; 27 | } 28 | 29 | .Radio-option.active { 30 | color: #ff369a; 31 | } 32 | 33 | .Radio-option.active .Radio-option-bubble { 34 | border-color: #ff369a; 35 | } 36 | 37 | .Radio-option.active .Radio-option-bubble-inner { 38 | display: block; 39 | } 40 | -------------------------------------------------------------------------------- /src/components/Radio/Radio.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | import cx from "classnames"; 4 | 5 | import "./Radio.css"; 6 | 7 | export default function Radio(props) { 8 | const { options, option, setOption } = props; 9 | 10 | return ( 11 |
12 | {options.map((opt) => ( 13 |
setOption(opt)}> 14 |
15 |
16 |
17 | {opt} 18 |
19 | ))} 20 |
21 | ); 22 | } 23 | -------------------------------------------------------------------------------- /src/components/Referrals/EmptyMessage.js: -------------------------------------------------------------------------------- 1 | import Tooltip from "../Tooltip/Tooltip"; 2 | 3 | function EmptyMessage({ message = "", tooltipText }) { 4 | return ( 5 |
6 | {tooltipText ? ( 7 | {message}

} position="center-bottom" renderContent={() => tooltipText} /> 8 | ) : ( 9 |

{message}

10 | )} 11 |
12 | ); 13 | } 14 | 15 | export default EmptyMessage; 16 | -------------------------------------------------------------------------------- /src/components/Referrals/InfoCard.js: -------------------------------------------------------------------------------- 1 | import Tooltip from "../Tooltip/Tooltip"; 2 | 3 | function InfoCard({ label, data, tooltipText, toolTipPosition = "left-bottom" }) { 4 | return ( 5 |
6 |
7 |

8 | {tooltipText ? ( 9 | tooltipText} /> 10 | ) : ( 11 | label 12 | )} 13 |

14 |
{data}
15 |
16 |
17 | ); 18 | } 19 | 20 | export default InfoCard; 21 | -------------------------------------------------------------------------------- /src/components/Referrals/usePagination.ts: -------------------------------------------------------------------------------- 1 | import { useEffect, useState } from "react"; 2 | 3 | export const paginate = ({ total, current, size }) => { 4 | const pages = Math.ceil(total / size); 5 | 6 | if (current < 1) { 7 | current = 1; 8 | } else if (current > pages) { 9 | current = pages; 10 | } 11 | 12 | const start = (current - 1) * size; 13 | const end = Math.min(start + size - 1, total - 1); 14 | return { 15 | start, 16 | end, 17 | }; 18 | }; 19 | 20 | export default function usePagination(items = [], size = 10) { 21 | const [currentPage, setCurrentPage] = useState(1); 22 | const [totalPages, setTotalPages] = useState(Math.ceil(items.length / size)); 23 | 24 | useEffect(() => { 25 | setTotalPages(Math.ceil(items.length / size)); 26 | }, [items, size]); 27 | 28 | function getCurrentData() { 29 | const { start, end } = paginate({ total: items.length, current: currentPage, size }); 30 | return items.slice(start, end + 1); 31 | } 32 | 33 | return { 34 | currentPage, 35 | setCurrentPage, 36 | pageCount: totalPages, 37 | getCurrentData, 38 | }; 39 | } 40 | -------------------------------------------------------------------------------- /src/components/StatsTooltip/StatsTooltip.css: -------------------------------------------------------------------------------- 1 | .Tooltip-row { 2 | display: grid; 3 | margin: 0 0 0.5rem 0; 4 | grid-template-columns: 1fr auto; 5 | } 6 | 7 | .Tooltip-row > span.label { 8 | margin-right: 0.5rem; 9 | } 10 | .Tooltip-row > .Tooltip-row-value { 11 | color: white; 12 | text-align: right; 13 | } 14 | 15 | .Tooltip-row-values { 16 | list-style: none; 17 | margin: 0; 18 | padding: 0; 19 | } 20 | 21 | .Tooltip-row-values li { 22 | padding: 0.25rem 0 0 0; 23 | text-align: right; 24 | } 25 | 26 | .Tooltip-number { 27 | color: white; 28 | } 29 | 30 | @media (max-width: 700px) { 31 | .Tooltip-row { 32 | display: block; 33 | margin-bottom: 1rem; 34 | } 35 | .Tooltip-row > span.label { 36 | display: block; 37 | } 38 | .Tooltip-row-values li { 39 | text-align: left; 40 | } 41 | .Tooltip-row > .Tooltip-row-value { 42 | text-align: left; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/components/StatsTooltip/StatsTooltipRow.tsx: -------------------------------------------------------------------------------- 1 | import "./StatsTooltip.css"; 2 | type Props = { 3 | label: string; 4 | value: number | string | string[] | number[]; 5 | showDollar?: boolean; 6 | }; 7 | 8 | export default function StatsTooltipRow({ label, value, showDollar = true }: Props) { 9 | function renderValue() { 10 | if (Array.isArray(value)) { 11 | return ( 12 |
    13 | {value.map((v, i) => ( 14 |
  • {v}
  • 15 | ))} 16 |
17 | ); 18 | } 19 | return ( 20 | 21 | {showDollar && "$"} 22 | {value} 23 | 24 | ); 25 | } 26 | return ( 27 |
28 | {label}: 29 | {renderValue()} 30 |
31 | ); 32 | } 33 | -------------------------------------------------------------------------------- /src/components/Tab/Tab.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | import cx from "classnames"; 4 | 5 | import "./Tab.css"; 6 | 7 | export default function Tab(props) { 8 | const { options, option, setOption, onChange, type = "block", className, optionLabels, icons } = props; 9 | const onClick = (opt) => { 10 | if (setOption) { 11 | setOption(opt); 12 | } 13 | if (onChange) { 14 | onChange(opt); 15 | } 16 | }; 17 | 18 | return ( 19 |
20 | {options.map((opt) => { 21 | const label = optionLabels && optionLabels[opt] ? optionLabels[opt] : opt; 22 | return ( 23 |
onClick(opt)} key={opt}> 24 | {icons && icons[opt] && {option}} 25 | {label} 26 |
27 | ); 28 | })} 29 |
30 | ); 31 | } 32 | -------------------------------------------------------------------------------- /src/components/ToastifyDebug/ToastifyDebug.tsx: -------------------------------------------------------------------------------- 1 | import { useState } from "react"; 2 | 3 | export function ToastifyDebug(props) { 4 | const [open, setOpen] = useState(false); 5 | return ( 6 |
7 | setOpen((old) => !old)}> 8 | {open ? "Hide error" : "Show error"} 9 | 10 | {open &&
{props.children}
} 11 |
12 | ); 13 | } 14 | -------------------------------------------------------------------------------- /src/components/TokenCard/TokenCard.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/components/TokenCard/TokenCard.css -------------------------------------------------------------------------------- /src/config/backend.ts: -------------------------------------------------------------------------------- 1 | import { ARBITRUM, ARBITRUM_TESTNET, AVALANCHE, MAINNET } from "./chains"; 2 | 3 | export const GMX_STATS_API_URL = "https://stats.gmx.io/api"; 4 | 5 | const BACKEND_URLS = { 6 | default: "https://gmx-server-mainnet.uw.r.appspot.com", 7 | 8 | [MAINNET]: "https://gambit-server-staging.uc.r.appspot.com", 9 | [ARBITRUM_TESTNET]: "https://gambit-server-devnet.uc.r.appspot.com", 10 | [ARBITRUM]: "https://gmx-server-mainnet.uw.r.appspot.com", 11 | [AVALANCHE]: "https://gmx-avax-server.uc.r.appspot.com", 12 | }; 13 | 14 | export function getServerBaseUrl(chainId: number) { 15 | if (!chainId) { 16 | throw new Error("chainId is not provided"); 17 | } 18 | 19 | if (document.location.hostname.includes("deploy-preview")) { 20 | const fromLocalStorage = localStorage.getItem("SERVER_BASE_URL"); 21 | if (fromLocalStorage) { 22 | return fromLocalStorage; 23 | } 24 | } 25 | 26 | return BACKEND_URLS[chainId] || BACKEND_URLS.default; 27 | } 28 | 29 | export function getServerUrl(chainId: number, path: string) { 30 | return `${getServerBaseUrl(chainId)}${path}`; 31 | } 32 | -------------------------------------------------------------------------------- /src/config/env.ts: -------------------------------------------------------------------------------- 1 | import { PRODUCTION_PREVIEW_KEY } from "./localStorage"; 2 | 3 | export const UI_VERSION = "1.4"; 4 | 5 | export const IS_TOUCH = "ontouchstart" in window; 6 | 7 | export function isDevelopment() { 8 | const isProductionPreview = Boolean(localStorage.getItem(PRODUCTION_PREVIEW_KEY)); 9 | 10 | return ( 11 | !window.location.host?.includes("gmx.io") && !window.location.host?.includes("ipfs.io") && !isProductionPreview 12 | ); 13 | } 14 | 15 | export function isLocal() { 16 | return window.location.host?.includes("localhost"); 17 | } 18 | -------------------------------------------------------------------------------- /src/config/links.ts: -------------------------------------------------------------------------------- 1 | import { ARBITRUM, AVALANCHE } from "config/chains"; 2 | 3 | export function get1InchSwapUrl(chainId: number, from?: string, to?: string) { 4 | const rootUrl = `https://app.1inch.io/#/${chainId}/unified/swap`; 5 | if (!from && !to) return rootUrl; 6 | return `${rootUrl}/${from}/${to}`; 7 | } 8 | 9 | export function getLeaderboardLink(chainId) { 10 | if (chainId === ARBITRUM) { 11 | return "https://www.gmx.house/arbitrum/leaderboard"; 12 | } 13 | if (chainId === AVALANCHE) { 14 | return "https://www.gmx.house/avalanche/leaderboard"; 15 | } 16 | return "https://www.gmx.house"; 17 | } 18 | -------------------------------------------------------------------------------- /src/config/subgraph.ts: -------------------------------------------------------------------------------- 1 | import { ARBITRUM, AVALANCHE } from "./chains"; 2 | 3 | export const SUBGRAPH_URLS = { 4 | [ARBITRUM]: { 5 | stats: "https://api.thegraph.com/subgraphs/name/gmx-io/gmx-stats", 6 | referrals: "https://api.thegraph.com/subgraphs/name/gmx-io/gmx-arbitrum-referrals", 7 | nissohVault: "https://api.thegraph.com/subgraphs/name/nissoh/gmx-vault", 8 | }, 9 | 10 | [AVALANCHE]: { 11 | stats: "https://api.thegraph.com/subgraphs/name/gmx-io/gmx-avalanche-stats", 12 | referrals: "https://api.thegraph.com/subgraphs/name/gmx-io/gmx-avalanche-referrals", 13 | }, 14 | 15 | common: { 16 | chainLink: "https://api.thegraph.com/subgraphs/name/deividask/chainlink", 17 | }, 18 | }; 19 | -------------------------------------------------------------------------------- /src/config/tradingview.ts: -------------------------------------------------------------------------------- 1 | export const SUPPORTED_RESOLUTIONS = { 5: "5m", 15: "15m", 60: "1h", 240: "4h", "1D": "1d" }; 2 | export const LAST_BAR_REFRESH_INTERVAL = 15000; // 15 seconds 3 | export const TV_CHART_RELOAD_INTERVAL = 15 * 60 * 1000; // 15 minutes 4 | -------------------------------------------------------------------------------- /src/config/ui.ts: -------------------------------------------------------------------------------- 1 | export const TRIGGER_PREFIX_ABOVE = ">"; 2 | export const TRIGGER_PREFIX_BELOW = "<"; 3 | -------------------------------------------------------------------------------- /src/domain/positions/types.ts: -------------------------------------------------------------------------------- 1 | import { BigNumber } from "@ethersproject/bignumber"; 2 | import { Token } from "domain/tokens"; 3 | 4 | export type Position = { 5 | key: string; 6 | contractKey?: string; 7 | collateralToken: Token; 8 | indexToken: Token; 9 | isLong: boolean; 10 | size: BigNumber; 11 | collateral: BigNumber; 12 | averagePrice: BigNumber; 13 | entryFundingRate: BigNumber; 14 | cumulativeFundingRate: BigNumber; 15 | hasRealisedProfit: boolean; 16 | realisedPnl: BigNumber; 17 | lastIncreasedTime: number; 18 | hasProfit: boolean; 19 | delta: BigNumber; 20 | markPrice: BigNumber; 21 | fundingFee: BigNumber; 22 | collateralAfterFee: BigNumber; 23 | closingFee: BigNumber; 24 | positionFee: BigNumber; 25 | totalFees: BigNumber; 26 | pendingDelta: BigNumber; 27 | hasLowCollateral: boolean; 28 | deltaPercentage: BigNumber; 29 | deltaStr: string; 30 | deltaPercentageStr: string; 31 | deltaBeforeFeesStr: string; 32 | hasProfitAfterFees: boolean; 33 | pendingDeltaAfterFees: BigNumber; 34 | deltaPercentageAfterFees: BigNumber; 35 | deltaAfterFeesStr: string; 36 | deltaAfterFeesPercentageStr: string; 37 | netValue: BigNumber; 38 | leverage: BigNumber; 39 | leverageStr: string; 40 | }; 41 | 42 | export type Positions = Position[]; 43 | -------------------------------------------------------------------------------- /src/domain/tokens/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./utils"; 2 | export * from "./types"; 3 | export * from "./useInfoTokens"; 4 | export * from "./approveTokens"; 5 | -------------------------------------------------------------------------------- /src/domain/tradingview/utils.ts: -------------------------------------------------------------------------------- 1 | import { Bar } from "charting_library"; 2 | 3 | export function getObjectKeyFromValue(value, object) { 4 | return Object.keys(object).find((key) => object[key] === value); 5 | } 6 | 7 | export function formatTimeInBar(bar: Bar) { 8 | return { 9 | ...bar, 10 | time: bar.time * 1000, 11 | }; 12 | } 13 | -------------------------------------------------------------------------------- /src/domain/useFeesSummary.js: -------------------------------------------------------------------------------- 1 | import useSWR from "swr"; 2 | import { arrayURLFetcher } from "lib/legacy"; 3 | import { ARBITRUM, AVALANCHE } from "config/chains"; 4 | import { getServerUrl } from "config/backend"; 5 | const ACTIVE_CHAIN_IDS = [ARBITRUM, AVALANCHE]; 6 | 7 | export default function useFeesSummary() { 8 | const { data: feesSummary } = useSWR( 9 | ACTIVE_CHAIN_IDS.map((chainId) => getServerUrl(chainId, "/fees_summary")), 10 | { 11 | fetcher: arrayURLFetcher, 12 | } 13 | ); 14 | 15 | const feesSummaryByChain = {}; 16 | for (let i = 0; i < ACTIVE_CHAIN_IDS.length; i++) { 17 | if (feesSummary && feesSummary.length === ACTIVE_CHAIN_IDS.length) { 18 | feesSummaryByChain[ACTIVE_CHAIN_IDS[i]] = feesSummary[i]; 19 | } else { 20 | feesSummaryByChain[ACTIVE_CHAIN_IDS[i]] = {}; 21 | } 22 | } 23 | 24 | return { data: feesSummaryByChain }; 25 | } 26 | -------------------------------------------------------------------------------- /src/domain/useTotalVolume.ts: -------------------------------------------------------------------------------- 1 | import useSWR from "swr"; 2 | import { arrayURLFetcher, getTotalVolumeSum } from "lib/legacy"; 3 | import { ARBITRUM, AVALANCHE } from "config/chains"; 4 | import { getServerUrl } from "config/backend"; 5 | import { bigNumberify } from "lib/numbers"; 6 | const ACTIVE_CHAIN_IDS = [ARBITRUM, AVALANCHE]; 7 | 8 | export default function useTotalVolume() { 9 | const { data: totalVolume } = useSWR( 10 | ACTIVE_CHAIN_IDS.map((chain) => getServerUrl(chain, "/total_volume")), 11 | { 12 | fetcher: arrayURLFetcher, 13 | } 14 | ); 15 | if (totalVolume?.length > 0) { 16 | return ACTIVE_CHAIN_IDS.reduce( 17 | (acc, chainId, index) => { 18 | const sum = getTotalVolumeSum(totalVolume[index])!; 19 | acc[chainId] = sum; 20 | acc.total = acc.total.add(sum); 21 | return acc; 22 | }, 23 | { total: bigNumberify(0)! } 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/fonts/inter/inter-v12-latin-500.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/fonts/inter/inter-v12-latin-500.eot -------------------------------------------------------------------------------- /src/fonts/inter/inter-v12-latin-500.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/fonts/inter/inter-v12-latin-500.ttf -------------------------------------------------------------------------------- /src/fonts/inter/inter-v12-latin-500.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/fonts/inter/inter-v12-latin-500.woff -------------------------------------------------------------------------------- /src/fonts/inter/inter-v12-latin-500.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/fonts/inter/inter-v12-latin-500.woff2 -------------------------------------------------------------------------------- /src/fonts/inter/inter-v12-latin-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/fonts/inter/inter-v12-latin-regular.eot -------------------------------------------------------------------------------- /src/fonts/inter/inter-v12-latin-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/fonts/inter/inter-v12-latin-regular.ttf -------------------------------------------------------------------------------- /src/fonts/inter/inter-v12-latin-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/fonts/inter/inter-v12-latin-regular.woff -------------------------------------------------------------------------------- /src/fonts/inter/inter-v12-latin-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/fonts/inter/inter-v12-latin-regular.woff2 -------------------------------------------------------------------------------- /src/fonts/relative/relative-book-pro.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/fonts/relative/relative-book-pro.eot -------------------------------------------------------------------------------- /src/fonts/relative/relative-book-pro.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/fonts/relative/relative-book-pro.ttf -------------------------------------------------------------------------------- /src/fonts/relative/relative-book-pro.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/fonts/relative/relative-book-pro.woff -------------------------------------------------------------------------------- /src/fonts/relative/relative-book-pro.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/fonts/relative/relative-book-pro.woff2 -------------------------------------------------------------------------------- /src/fonts/roboto/roboto-v30-latin-500.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/fonts/roboto/roboto-v30-latin-500.eot -------------------------------------------------------------------------------- /src/fonts/roboto/roboto-v30-latin-500.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/fonts/roboto/roboto-v30-latin-500.ttf -------------------------------------------------------------------------------- /src/fonts/roboto/roboto-v30-latin-500.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/fonts/roboto/roboto-v30-latin-500.woff -------------------------------------------------------------------------------- /src/fonts/roboto/roboto-v30-latin-500.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/fonts/roboto/roboto-v30-latin-500.woff2 -------------------------------------------------------------------------------- /src/fonts/roboto/roboto-v30-latin-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/fonts/roboto/roboto-v30-latin-regular.eot -------------------------------------------------------------------------------- /src/fonts/roboto/roboto-v30-latin-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/fonts/roboto/roboto-v30-latin-regular.ttf -------------------------------------------------------------------------------- /src/fonts/roboto/roboto-v30-latin-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/fonts/roboto/roboto-v30-latin-regular.woff -------------------------------------------------------------------------------- /src/fonts/roboto/roboto-v30-latin-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/fonts/roboto/roboto-v30-latin-regular.woff2 -------------------------------------------------------------------------------- /src/img/Anyswap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/img/Anyswap.png -------------------------------------------------------------------------------- /src/img/Anyswap.svg: -------------------------------------------------------------------------------- 1 | AnySwap -------------------------------------------------------------------------------- /src/img/Banxa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/img/Banxa.png -------------------------------------------------------------------------------- /src/img/DROP_DOWN.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/Hop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/img/Hop.png -------------------------------------------------------------------------------- /src/img/Hop_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/img/Hop_dark.png -------------------------------------------------------------------------------- /src/img/Synapse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/img/Synapse.png -------------------------------------------------------------------------------- /src/img/binance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/img/binance.png -------------------------------------------------------------------------------- /src/img/bitkeep.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/bscscan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/img/bscscan.png -------------------------------------------------------------------------------- /src/img/btn_big_arbitrum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/img/btn_big_arbitrum.png -------------------------------------------------------------------------------- /src/img/btn_big_avalanche.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/img/btn_big_avalanche.png -------------------------------------------------------------------------------- /src/img/btn_big_bsc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/img/btn_big_bsc.png -------------------------------------------------------------------------------- /src/img/btn_big_purchasegmx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/img/btn_big_purchasegmx.png -------------------------------------------------------------------------------- /src/img/coinbaseWallet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/img/coinbaseWallet.png -------------------------------------------------------------------------------- /src/img/coingecko.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/img/coingecko.png -------------------------------------------------------------------------------- /src/img/cross.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/img/flag_de.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/flag_en.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/img/flag_fr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/img/flag_ja.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/img/flag_ko.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/img/flag_ru.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/img/flag_zh.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/img/gateio.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/glp_icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/gmx-logo-final-white-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/img/gmx-logo-final-white-small.png -------------------------------------------------------------------------------- /src/img/gmx-logo-final-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/img/gmx-logo-final-white.png -------------------------------------------------------------------------------- /src/img/gmx-logo-final.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/img/gmx-logo-final.png -------------------------------------------------------------------------------- /src/img/gmx-logo-glow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/img/gmx-logo-glow.png -------------------------------------------------------------------------------- /src/img/graphite-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/img/graphite-01.png -------------------------------------------------------------------------------- /src/img/ic_across.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_arrowleft16.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/img/ic_arrowright16.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/img/ic_avalanche_16.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_avalanche_24.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_avalanche_96.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_avalanche_testnet_16.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_avalanche_testnet_24.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_avalanche_testnet_96.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_avax_24.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_avax_30.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_avax_40.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_banxa.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_binance.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_binance_logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_bsc.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_bsc_96.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/img/ic_btc.b_24.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/img/ic_btc.b_40.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_btc_24.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_btc_40.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_bungee.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/img/ic_bungee.png -------------------------------------------------------------------------------- /src/img/ic_busd_24.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_bybit.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_cash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/img/ic_cash.png -------------------------------------------------------------------------------- /src/img/ic_cash.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_checked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/img/ic_convert_down.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_copy_16.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/img/ic_dai_24.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_dai_40.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_discord.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_dodo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_eth_24.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_eth_40.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_firebird.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/img/ic_firebird.png -------------------------------------------------------------------------------- /src/img/ic_glp_24.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_glp_40.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_glp_custom.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_gmx_24.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_gmx_30.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_gmx_40.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_gmx_64.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_gmx_avax.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/img/ic_gmx_big.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_gmx_custom.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_huobi.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_info.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_kucoin.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_link_24.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_link_40.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_liquidity.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/img/ic_matcha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/img/ic_matcha.png -------------------------------------------------------------------------------- /src/img/ic_medium.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_menu_dots.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/img/ic_new_link_16.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/img/ic_o3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/img/ic_o3.png -------------------------------------------------------------------------------- /src/img/ic_odos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/img/ic_odos.png -------------------------------------------------------------------------------- /src/img/ic_olympus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/img/ic_paraswap.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_selector_dropdowns.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_sign in_16.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/img/ic_sign_out_16.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/img/ic_simpleswaps.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/img/ic_slingshot.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_stats.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_stats_big.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_telegram.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_tether_24.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_tokens.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/img/ic_traderjoe_avax.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/img/ic_traderjoe_avax.png -------------------------------------------------------------------------------- /src/img/ic_twitter.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_unidex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/img/ic_unidex.png -------------------------------------------------------------------------------- /src/img/ic_usdc.e_24.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_usdc.e_40.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_usdc_24.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_usdc_40.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_usdt_24.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_usdt_40.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_wallet_24.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/img/ic_wavax_24.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_wavax_40.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/ic_yield_yak.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/img/ic_yield_yak.png -------------------------------------------------------------------------------- /src/img/logo_GMX_small.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/long.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/metamask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/img/metamask.png -------------------------------------------------------------------------------- /src/img/nansen_portfolio.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/position-share-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/img/position-share-bg.png -------------------------------------------------------------------------------- /src/img/short.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/swap.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/img/trading.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/img/trading.jpg -------------------------------------------------------------------------------- /src/img/wave-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/img/wave-01.png -------------------------------------------------------------------------------- /src/img/wave-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BASEDEXAI/BaseDexInterface/89035f23761cf85eb7f960de6aa5a305e4ba82f5/src/img/wave-02.png -------------------------------------------------------------------------------- /src/index.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import ReactDOM from "react-dom"; 3 | import "regenerator-runtime/runtime"; 4 | import { BrowserRouter as Router } from "react-router-dom"; 5 | import App from "./App/App"; 6 | import reportWebVitals from "./reportWebVitals"; 7 | 8 | ReactDOM.render( 9 | 10 | 11 | 12 | 13 | , 14 | document.getElementById("root") 15 | ); 16 | 17 | // If you want to start measuring performance in your app, pass a function 18 | // to log results (for example: reportWebVitals(console.info)) 19 | // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals 20 | reportWebVitals(); 21 | -------------------------------------------------------------------------------- /src/lib/chains/index.ts: -------------------------------------------------------------------------------- 1 | import { useWeb3React } from "@web3-react/core"; 2 | import { SELECTED_NETWORK_LOCAL_STORAGE_KEY } from "config/localStorage"; 3 | import { DEFAULT_CHAIN_ID, SUPPORTED_CHAIN_IDS } from "config/chains"; 4 | 5 | export function useChainId() { 6 | let { chainId } = useWeb3React(); 7 | 8 | if (!chainId) { 9 | const chainIdFromLocalStorage = localStorage.getItem(SELECTED_NETWORK_LOCAL_STORAGE_KEY); 10 | if (chainIdFromLocalStorage) { 11 | chainId = parseInt(chainIdFromLocalStorage); 12 | if (!chainId) { 13 | // localstorage value is invalid 14 | localStorage.removeItem(SELECTED_NETWORK_LOCAL_STORAGE_KEY); 15 | } 16 | } 17 | } 18 | 19 | if (!chainId || !SUPPORTED_CHAIN_IDS.includes(chainId)) { 20 | chainId = DEFAULT_CHAIN_ID; 21 | } 22 | 23 | return { chainId }; 24 | } 25 | -------------------------------------------------------------------------------- /src/lib/contracts/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./callContract"; 2 | export * from "./contractFetcher"; 3 | export * from "./utils"; 4 | -------------------------------------------------------------------------------- /src/lib/dates.ts: -------------------------------------------------------------------------------- 1 | import { addMinutes, format as formatDateFn } from "date-fns"; 2 | 3 | export function formatDateTime(time: number) { 4 | return formatDateFn(time * 1000, "dd MMM yyyy, h:mm a"); 5 | } 6 | 7 | export function formatDate(time: number) { 8 | return formatDateFn(time * 1000, "dd MMM yyyy"); 9 | } 10 | 11 | export function formatTVDate(date: Date) { 12 | // https://github.com/date-fns/date-fns/issues/1401#issuecomment-578580199 13 | return formatDateFn(addMinutes(date, date.getTimezoneOffset()), "dd MMM yyyy"); 14 | } 15 | 16 | export function formatTVTime(date: Date) { 17 | return formatDateFn(addMinutes(date, date.getTimezoneOffset()), "h:mm a"); 18 | } 19 | 20 | export function getTimeRemaining(time: number) { 21 | const now = parseInt(String(Date.now() / 1000)); 22 | if (time < now) { 23 | return "0h 0m"; 24 | } 25 | const diff = time - now; 26 | const hours = parseInt(String(diff / (60 * 60))); 27 | const minutes = parseInt(String((diff - hours * 60 * 60) / 60)); 28 | return `${hours}h ${minutes}m`; 29 | } 30 | 31 | export function isValidTimestamp(timestamp: any) { 32 | return new Date(timestamp).getTime() > 0; 33 | } 34 | -------------------------------------------------------------------------------- /src/lib/helperToast.ts: -------------------------------------------------------------------------------- 1 | import { toast, ToastContent, ToastOptions } from "react-toastify"; 2 | 3 | export const helperToast = { 4 | success: (content: ToastContent, opts?: ToastOptions) => { 5 | toast.dismiss(); 6 | toast.success(content, opts); 7 | }, 8 | error: (content: ToastContent, opts?: ToastOptions) => { 9 | toast.dismiss(); 10 | toast.error(content, opts); 11 | }, 12 | }; 13 | -------------------------------------------------------------------------------- /src/lib/multicall/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./useMulticall"; 2 | export * from "./types"; 3 | -------------------------------------------------------------------------------- /src/lib/sleep.ts: -------------------------------------------------------------------------------- 1 | export function sleep(ms: number) { 2 | return new Promise((resolve) => { 3 | setTimeout(() => resolve(), ms); 4 | }); 5 | } 6 | -------------------------------------------------------------------------------- /src/lib/subgraph/clients.ts: -------------------------------------------------------------------------------- 1 | import { createClient } from "./utils"; 2 | import { SUBGRAPH_URLS } from "config/subgraph"; 3 | import { ARBITRUM, ARBITRUM_TESTNET, AVALANCHE } from "config/chains"; 4 | 5 | export const chainlinkClient = createClient(SUBGRAPH_URLS.common.chainLink); 6 | 7 | export const arbitrumGraphClient = createClient(SUBGRAPH_URLS[ARBITRUM].stats); 8 | export const arbitrumReferralsGraphClient = createClient(SUBGRAPH_URLS[ARBITRUM].referrals); 9 | export const nissohGraphClient = createClient(SUBGRAPH_URLS[ARBITRUM].nissohVault); 10 | 11 | export const avalancheGraphClient = createClient(SUBGRAPH_URLS[AVALANCHE].stats); 12 | export const avalancheReferralsGraphClient = createClient(SUBGRAPH_URLS[AVALANCHE].referrals); 13 | 14 | export function getGmxGraphClient(chainId: number) { 15 | if (chainId === ARBITRUM) { 16 | return arbitrumGraphClient; 17 | } else if (chainId === AVALANCHE) { 18 | return avalancheGraphClient; 19 | } else if (chainId === ARBITRUM_TESTNET) { 20 | return null; 21 | } 22 | 23 | throw new Error(`Unsupported chain ${chainId}`); 24 | } 25 | -------------------------------------------------------------------------------- /src/lib/subgraph/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./clients"; 2 | export * from "./utils"; 3 | -------------------------------------------------------------------------------- /src/lib/subgraph/utils.ts: -------------------------------------------------------------------------------- 1 | import { ApolloClient, InMemoryCache } from "@apollo/client"; 2 | 3 | export function createClient(uri: string) { 4 | return new ApolloClient({ 5 | uri, 6 | cache: new InMemoryCache(), 7 | }); 8 | } 9 | -------------------------------------------------------------------------------- /src/lib/testUtils.tsx: -------------------------------------------------------------------------------- 1 | import { Web3Provider } from "@ethersproject/providers"; 2 | import { render } from "@testing-library/react"; 3 | import { Web3ReactProvider } from "@web3-react/core"; 4 | 5 | export function TestApp({ children }) { 6 | return new Web3Provider(provider)}>{children}; 7 | } 8 | 9 | export function testHook(hook: () => void) { 10 | function Comp() { 11 | hook(); 12 | 13 | return null; 14 | } 15 | 16 | render( 17 | 18 | 19 | 20 | ); 21 | } 22 | -------------------------------------------------------------------------------- /src/lib/url.ts: -------------------------------------------------------------------------------- 1 | export function getRootUrl() { 2 | const { origin, protocol, hostname, port } = window.location; 3 | let url = origin; 4 | if (!origin) { 5 | const portString = port && `:${port}`; 6 | url = `${protocol}//${hostname}${portString}`; 7 | } 8 | return url; 9 | } 10 | -------------------------------------------------------------------------------- /src/lib/useDebounce.ts: -------------------------------------------------------------------------------- 1 | import { useEffect, useState } from "react"; 2 | 3 | export function useDebounce(value: any, delay: number) { 4 | // State and setters for debounced value 5 | const [debouncedValue, setDebouncedValue] = useState(value); 6 | 7 | useEffect( 8 | () => { 9 | // Update debounced value after delay 10 | const handler = setTimeout(() => { 11 | setDebouncedValue(value); 12 | }, delay); 13 | // Cancel the timeout if value changes (also on delay change or unmount) 14 | // This is how we prevent debounced value from updating if value is changed ... 15 | // .. within the delay period. Timeout gets cleared and restarted. 16 | return () => { 17 | clearTimeout(handler); 18 | }; 19 | }, 20 | [value, delay] // Only re-call effect if value or delay changes 21 | ); 22 | 23 | return debouncedValue; 24 | } 25 | -------------------------------------------------------------------------------- /src/lib/useEffectDebugger.ts: -------------------------------------------------------------------------------- 1 | import { useEffect, useRef } from "react"; 2 | 3 | const usePrevious = (value, initialValue) => { 4 | const ref = useRef(initialValue); 5 | useEffect(() => { 6 | ref.current = value; 7 | }); 8 | return ref.current; 9 | }; 10 | 11 | const useEffectDebugger = (effectHook, dependencies, dependencyNames = []) => { 12 | const previousDeps = usePrevious(dependencies, []); 13 | 14 | const changedDeps = dependencies.reduce((acc, dependency, index) => { 15 | if (dependency !== previousDeps[index]) { 16 | const keyName = dependencyNames[index] || index; 17 | return { 18 | ...acc, 19 | [keyName]: { 20 | before: previousDeps[index], 21 | after: dependency, 22 | }, 23 | }; 24 | } 25 | 26 | return acc; 27 | }, {}); 28 | 29 | if (Object.keys(changedDeps).length) { 30 | // eslint-disable-next-line no-console 31 | console.log("[use-effect-debugger] ", changedDeps); 32 | } 33 | 34 | useEffect(effectHook, [...dependencies, effectHook]); 35 | }; 36 | 37 | export default useEffectDebugger; 38 | -------------------------------------------------------------------------------- /src/lib/useLoadImage.ts: -------------------------------------------------------------------------------- 1 | import { useEffect, useState } from "react"; 2 | 3 | export default function useLoadImage(src: string) { 4 | const [sourceLoaded, setSourceLoaded] = useState(null); 5 | 6 | useEffect(() => { 7 | const img = new Image(); 8 | img.src = src; 9 | img.onload = () => setSourceLoaded(src); 10 | }, [src]); 11 | 12 | return sourceLoaded; 13 | } 14 | -------------------------------------------------------------------------------- /src/lib/usePrevious.ts: -------------------------------------------------------------------------------- 1 | import { useEffect, useRef } from "react"; 2 | 3 | export function usePrevious(value: any) { 4 | const ref = useRef(); 5 | useEffect(() => { 6 | ref.current = value; 7 | }); 8 | return ref.current; 9 | } 10 | -------------------------------------------------------------------------------- /src/lib/useRouteQuery.ts: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { useLocation } from "react-router-dom"; 3 | 4 | export default function useRouteQuery() { 5 | const { search } = useLocation(); 6 | return React.useMemo(() => new URLSearchParams(search), [search]); 7 | } 8 | -------------------------------------------------------------------------------- /src/lib/useScrollToTop.ts: -------------------------------------------------------------------------------- 1 | import { useEffect } from "react"; 2 | import { useHistory } from "react-router-dom"; 3 | 4 | export default function useScrollToTop() { 5 | const history = useHistory(); 6 | useEffect(() => { 7 | const unlisten = history.listen(() => { 8 | window.scrollTo(0, 0); 9 | }); 10 | return () => { 11 | unlisten(); 12 | }; 13 | }, [history]); 14 | } 15 | -------------------------------------------------------------------------------- /src/lib/wallets/useAccountType.ts: -------------------------------------------------------------------------------- 1 | import { useEffect, useState } from "react"; 2 | import { useWeb3React } from "@web3-react/core"; 3 | 4 | export enum AccountType { 5 | CONTRACT = "contract", 6 | EOA = "eoa", 7 | } 8 | 9 | export default function useAccountType() { 10 | const { active, account, library } = useWeb3React(); 11 | const [contractType, setContractType] = useState(null); 12 | 13 | useEffect(() => { 14 | if (!active) return; 15 | (async function () { 16 | const code = await library.getCode(account); 17 | const type = code === "0x" ? AccountType.EOA : AccountType.CONTRACT; 18 | setContractType(type); 19 | })(); 20 | }, [account, library, active]); 21 | 22 | return contractType; 23 | } 24 | -------------------------------------------------------------------------------- /src/pages/Actions/Actions.css: -------------------------------------------------------------------------------- 1 | .Actions { 2 | padding: 0 3.565rem; 3 | padding-top: 3.1rem; 4 | } 5 | 6 | .Actions-section { 7 | padding-bottom: 4.5rem; 8 | overflow-wrap: break-word; 9 | } 10 | 11 | .Actions-title { 12 | margin-bottom: 1.5rem; 13 | } 14 | 15 | .Actions input { 16 | font-size: var(--font-base); 17 | padding: 0; 18 | margin-left: 0.8rem; 19 | } 20 | 21 | .Actions .PositionsList .Exchange-list-action { 22 | display: none; 23 | } 24 | 25 | .Actions .PositionsList .App-button-option { 26 | display: none; 27 | } 28 | -------------------------------------------------------------------------------- /src/pages/BeginAccountTransfer/BeginAccountTransfer.css: -------------------------------------------------------------------------------- 1 | .ValidationRow { 2 | display: grid; 3 | grid-template-columns: auto 1fr; 4 | font-size: var(--font-base); 5 | } 6 | 7 | .ValidationRow-icon-container { 8 | display: flex; 9 | justify-content: center; 10 | align-items: center; 11 | } 12 | 13 | .ValidationRow-icon { 14 | margin-right: 1.5rem; 15 | } 16 | 17 | .BeginAccountTransfer .ValidationRow { 18 | margin-bottom: 1.5rem; 19 | font-size: var(--font-base); 20 | } 21 | 22 | .BeginAccountTransfer-validations { 23 | margin-bottom: 2.325rem; 24 | } 25 | 26 | .BeginAccountTransfer .Modal .App-cta { 27 | display: block; 28 | text-align: center; 29 | font-size: var(--font-base); 30 | } 31 | -------------------------------------------------------------------------------- /src/pages/Buy/Buy.css: -------------------------------------------------------------------------------- 1 | .BuyGMXGLP { 2 | background: #101124; 3 | justify-content: space-between; 4 | } 5 | 6 | .BuyGMXGLP-container { 7 | padding: 0 0 3.1rem 0; 8 | width: 100%; 9 | } 10 | 11 | .BuyGMXGLP-container .section-title-content { 12 | justify-content: flex-start; 13 | } 14 | -------------------------------------------------------------------------------- /src/pages/Buy/Buy.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { Trans } from "@lingui/macro"; 3 | import Footer from "components/Footer/Footer"; 4 | import "./Buy.css"; 5 | import TokenCard from "components/TokenCard/TokenCard"; 6 | import buyGMXIcon from "img/buy_gmx.svg"; 7 | import SEO from "components/Common/SEO"; 8 | import { getPageTitle } from "lib/legacy"; 9 | 10 | export default function BuyGMXGLP() { 11 | return ( 12 | 13 |
14 |
15 |
16 |
17 | buyGMXIcon 18 |
19 |
20 |
21 | Buy GMX or GLP 22 |
23 |
24 |
25 | 26 |
27 |
28 |
29 |
30 | ); 31 | } 32 | -------------------------------------------------------------------------------- /src/pages/BuyGlp/BuyGlp.css: -------------------------------------------------------------------------------- 1 | .buy-glp-content { 2 | padding-top: 4.65rem; 3 | } -------------------------------------------------------------------------------- /src/pages/CompleteAccountTransfer/CompleteAccountTransfer.css: -------------------------------------------------------------------------------- 1 | .CompleteAccountTransfer .Modal .App-cta { 2 | display: block; 3 | text-align: center; 4 | } 5 | -------------------------------------------------------------------------------- /src/pages/Dashboard/AssetDropdown.css: -------------------------------------------------------------------------------- 1 | .asset-menu-items { 2 | position: absolute; 3 | border: 1px solid #32344c; 4 | border-radius: 0.4rem; 5 | background: var(--dark-blue); 6 | outline: none; 7 | z-index: 100; 8 | } 9 | 10 | .center-both { 11 | display: flex; 12 | justify-content: center; 13 | align-items: center; 14 | } 15 | 16 | .dropdown-arrow { 17 | margin-left: 0.8rem; 18 | cursor: pointer; 19 | color: white; 20 | opacity: 0.8; 21 | } 22 | .dropdown-arrow:hover { 23 | opacity: 1; 24 | } 25 | 26 | .asset-item { 27 | display: flex; 28 | align-items: center; 29 | cursor: pointer; 30 | color: #a0a3c4; 31 | text-decoration: none; 32 | padding: 0.85rem 0.8rem; 33 | font-size: var(--font-sm); 34 | } 35 | .asset-item:hover { 36 | background: var(--dark-blue-hover); 37 | color: white; 38 | border-radius: 0.4rem; 39 | } 40 | .asset-item p { 41 | margin: 0; 42 | margin-left: 0.5rem; 43 | } 44 | .asset-item .asset-item-icon { 45 | max-height: 1.6rem; 46 | } 47 | -------------------------------------------------------------------------------- /src/pages/Dashboard/Dashboard.css: -------------------------------------------------------------------------------- 1 | .Dashboard-fee-info { 2 | text-align: center; 3 | line-height: 2.325rem; 4 | } 5 | 6 | .Dashboard-note { 7 | text-align: center; 8 | } 9 | 10 | .Dashboard-list { 11 | display: grid; 12 | grid-template-columns: 1fr 1fr 1fr; 13 | padding: 3.1rem; 14 | grid-gap: 1.5rem; 15 | } 16 | 17 | .Dashboard-token-card .Dashboard-token-title-options { 18 | opacity: 0.5; 19 | filter: sepia(100%) hue-rotate(190deg); 20 | } 21 | 22 | .Dashboard-token-card:hover .Dashboard-token-title-options { 23 | opacity: 1; 24 | filter: none; 25 | } 26 | 27 | .Dashboard-token-title { 28 | display: grid; 29 | grid-template-columns: auto auto; 30 | } 31 | 32 | .Dashboard-token-title-options { 33 | text-align: right; 34 | } 35 | 36 | .Dashboard-token-title img { 37 | cursor: pointer; 38 | height: 18.5rem; 39 | margin-left: 0.465rem; 40 | opacity: 0.9; 41 | } 42 | 43 | .Dashboard-token-title img:hover { 44 | opacity: 1; 45 | } 46 | 47 | .Dashboard-fees { 48 | padding-bottom: 4.65rem; 49 | } 50 | 51 | @media (max-width: 700px) { 52 | .Dashboard-list { 53 | grid-template-columns: 1fr; 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /src/pages/Dashboard/Dashboard.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | import DashboardV2 from "./DashboardV2"; 4 | 5 | export default function Dashboard(props) { 6 | return ; 7 | } 8 | -------------------------------------------------------------------------------- /src/pages/Ecosystem/Ecosystem.css: -------------------------------------------------------------------------------- 1 | .DashboardV2-projects { 2 | display: grid; 3 | grid-template-columns: 1fr 1fr; 4 | grid-gap: 1.5rem; 5 | } 6 | 7 | @media (max-width: 900px) { 8 | .DashboardV2-projects { 9 | grid-template-columns: 1fr; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/pages/Jobs/Jobs.css: -------------------------------------------------------------------------------- 1 | .jobs-page-body { 2 | /* margin: 3rem 0; */ 3 | display: grid; 4 | grid-template-columns: repeat(2, 1fr); 5 | grid-gap: 2rem; 6 | color: rgba(255, 255, 255, 0.7); 7 | } 8 | 9 | .jobs-page-body a { 10 | color: #b7b7bd; 11 | } 12 | 13 | .body-para .subheading { 14 | margin: 0; 15 | } 16 | 17 | .mt-lg { 18 | margin-top: 2rem; 19 | } 20 | 21 | .jobs-contact { 22 | line-height: 1.5; 23 | } 24 | 25 | @media (max-width: 1000px) { 26 | .jobs-page-body { 27 | grid-template-columns: 1fr; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/pages/NftWallet/NftWallet.css: -------------------------------------------------------------------------------- 1 | .NftWallet input { 2 | border: 1px solid rgba(255, 255, 255, 0.2); 3 | font-size: var(--font-base); 4 | width: 100%; 5 | box-sizing: border-box; 6 | } 7 | 8 | .NftWallet label { 9 | display: block; 10 | margin-bottom: 0.8rem; 11 | } 12 | 13 | .NftWallet-content { 14 | padding: 4.65rem; 15 | padding-top: 1.5rem; 16 | max-width: 38.75rem; 17 | } 18 | 19 | .NftWallet-row { 20 | margin-bottom: 1.5rem; 21 | } 22 | 23 | .NftWallet button { 24 | margin-top: 0.8rem; 25 | } 26 | -------------------------------------------------------------------------------- /src/pages/OrdersOverview/OrdersOverview.css: -------------------------------------------------------------------------------- 1 | .Orders-overview { 2 | font-size: var(--font-sm); 3 | margin: 1.5rem 3.1rem; 4 | } 5 | 6 | .Orders-overview-stats { 7 | line-height: 1.5; 8 | } 9 | 10 | .Orders-overview-table { 11 | border-collapse: collapse; 12 | } 13 | 14 | .Orders-overview th { 15 | opacity: 0.5; 16 | font-weight: normal; 17 | text-align: left; 18 | padding: 0.8rem 1.5rem 0.8rem 0; 19 | } 20 | 21 | .Orders-overview td { 22 | border-top: 1px solid rgba(255, 255, 255, 0.1); 23 | padding: 0.8rem 1.5rem 0.8rem 0; 24 | } 25 | 26 | .Orders-overview .near { 27 | color: orange; 28 | } 29 | 30 | .Orders-overview-action { 31 | background: none; 32 | border: none; 33 | text-decoration: underline; 34 | color: #fff; 35 | } 36 | 37 | .Orders-overview-action { 38 | background: none; 39 | border: none; 40 | text-decoration: underline; 41 | color: #fff; 42 | } 43 | -------------------------------------------------------------------------------- /src/pages/PageNotFound/PageNotFound.css: -------------------------------------------------------------------------------- 1 | .page-not-found-container { 2 | display: flex; 3 | align-items: center; 4 | justify-content: center; 5 | min-height: 60vh; 6 | margin-bottom: 7rem; 7 | } 8 | 9 | .page-not-found { 10 | text-align: center; 11 | } 12 | .page-not-found img { 13 | max-width: 225px; 14 | } 15 | .go-back span { 16 | color: #a0a3c4; 17 | } 18 | .go-back a { 19 | color: white; 20 | } 21 | 22 | @media (max-width: 500px) { 23 | .page-not-found img { 24 | max-width: 200px; 25 | } 26 | .page-not-found { 27 | margin-top: 2.5rem; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/pages/PageNotFound/PageNotFound.js: -------------------------------------------------------------------------------- 1 | import SEO from "components/Common/SEO"; 2 | import Footer from "components/Footer/Footer"; 3 | import { getPageTitle } from "lib/legacy"; 4 | import "./PageNotFound.css"; 5 | import { Trans } from "@lingui/macro"; 6 | import { getHomeUrl, getTradePageUrl } from "lib/legacy"; 7 | 8 | function PageNotFound() { 9 | const homeUrl = getHomeUrl(); 10 | const tradePageUrl = getTradePageUrl(); 11 | 12 | return ( 13 | 14 |
15 |
16 |
17 |

18 | Page not found 19 |

20 |

21 | 22 | Return to 23 | Homepage or Trade 24 | 25 |

26 |
27 |
28 |
29 |
30 |
31 | ); 32 | } 33 | 34 | export default PageNotFound; 35 | -------------------------------------------------------------------------------- /src/pages/PositionsOverview/PositionsOverview.css: -------------------------------------------------------------------------------- 1 | .Positions-overview { 2 | font-size: var(--font-sm); 3 | margin: 1.5rem 3.1rem; 4 | } 5 | 6 | .Positions-overview-stats { 7 | line-height: 1.5; 8 | } 9 | 10 | .Positions-overview-table { 11 | border-collapse: collapse; 12 | } 13 | 14 | .Positions-overview th { 15 | opacity: 0.5; 16 | font-weight: normal; 17 | text-align: left; 18 | padding: 0.8rem 1.5rem 0.8rem 0; 19 | } 20 | 21 | .Positions-overview td { 22 | border-top: 1px solid rgba(255, 255, 255, 0.1); 23 | padding: 0.8rem 1.5rem 0.8rem 0; 24 | } 25 | 26 | .Positions-overview .near { 27 | color: orange; 28 | } 29 | .Positions-overview .near.negative { 30 | color: #fa3c58; 31 | } 32 | -------------------------------------------------------------------------------- /src/pages/ReferralTerms/ReferralTerms.css: -------------------------------------------------------------------------------- 1 | .center { 2 | text-align: center; 3 | } 4 | .section { 5 | margin-bottom: 4.65rem; 6 | } 7 | .Page-subtitle { 8 | font-size: var(--font-lg); 9 | font-weight: 500; 10 | margin: 1.5rem 0; 11 | } 12 | .content { 13 | margin-top: 4.65rem; 14 | } 15 | .body-text { 16 | margin: 0px; 17 | font-weight: 400; 18 | font-size: var(--font-base); 19 | line-height: 2.4rem; 20 | margin-bottom: 1.5rem; 21 | color: rgba(255, 255, 255, 0.7); 22 | /* color: #a0a3c4; */ 23 | } 24 | 25 | .body-title { 26 | font-weight: 500; 27 | margin-bottom: 1.5rem; 28 | font-size: var(--font-lg); 29 | } 30 | -------------------------------------------------------------------------------- /src/pages/SellGlp/SellGlp.css: -------------------------------------------------------------------------------- 1 | .SellGlp-content { 2 | display: grid; 3 | grid-template-columns: 1fr 43.4rem; 4 | grid-gap: 1.5rem; 5 | margin-top: 0.8rem; 6 | padding: 3.1rem; 7 | padding-top: 1.5rem; 8 | } 9 | 10 | .SellGlp-box { 11 | padding: 1.5rem; 12 | } 13 | 14 | .SellGlp-cta { 15 | margin-top: 0.8rem; 16 | } 17 | 18 | @media (max-width: 900px) { 19 | .SellGlp-content { 20 | grid-template-columns: 1fr; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/pages/Stake/Stake.css: -------------------------------------------------------------------------------- 1 | .Stake-note { 2 | text-align: center; 3 | margin-bottom: 0.465rem; 4 | } 5 | 6 | .Stake-cards { 7 | display: grid; 8 | grid-template-columns: 1fr 1fr; 9 | padding: 3.1rem; 10 | grid-gap: 1.5rem; 11 | margin-top: 0.8rem; 12 | } 13 | 14 | .StakeModal .Modal-content { 15 | width: 31rem; 16 | } 17 | .StakeModal .Modal-body { 18 | font-size: var(--font-base); 19 | } 20 | 21 | .Stake-warning { 22 | text-align: center; 23 | margin-top: 0.465rem; 24 | } 25 | 26 | @media (max-width: 800px) { 27 | .StakeModal .Modal-content { 28 | width: auto; 29 | } 30 | .Stake-cards { 31 | grid-template-columns: 1fr; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/pages/Stake/Stake.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | import { AVALANCHE, getConstant } from "config/chains"; 4 | 5 | import StakeV1 from "./StakeV1"; 6 | import StakeV2 from "./StakeV2"; 7 | 8 | export default function Stake(props) { 9 | const chainId = AVALANCHE; 10 | const isV2 = getConstant(chainId, "v2"); 11 | return isV2 ? : ; 12 | } 13 | -------------------------------------------------------------------------------- /src/pages/TermsAndConditions/TermsAndConditions.css: -------------------------------------------------------------------------------- 1 | .center { 2 | text-align: center; 3 | } 4 | .section { 5 | margin-bottom: 4.65rem; 6 | } 7 | .Page-subtitle { 8 | font-size: var(--font-lg); 9 | font-weight: 500; 10 | margin: 1.5rem 0; 11 | } 12 | .content { 13 | margin-top: 4.65rem; 14 | } 15 | .body-text { 16 | margin: 0px; 17 | font-weight: 400; 18 | font-size: var(--font-base); 19 | line-height: 2.4rem; 20 | margin-bottom: 1.5rem; 21 | color: rgba(255, 255, 255, 0.7); 22 | } 23 | 24 | .body-title { 25 | font-weight: 500; 26 | margin-bottom: 1.5rem; 27 | font-size: var(--font-lg); 28 | } 29 | 30 | .list-style-none { 31 | list-style: none; 32 | } 33 | .list-style-none li { 34 | padding-bottom: 0; 35 | } 36 | -------------------------------------------------------------------------------- /src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /src/reportWebVitals.js: -------------------------------------------------------------------------------- 1 | const reportWebVitals = (onPerfEntry) => { 2 | if (onPerfEntry && onPerfEntry instanceof Function) { 3 | import("web-vitals").then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { 4 | getCLS(onPerfEntry); 5 | getFID(onPerfEntry); 6 | getFCP(onPerfEntry); 7 | getLCP(onPerfEntry); 8 | getTTFB(onPerfEntry); 9 | }); 10 | } 11 | }; 12 | 13 | export default reportWebVitals; 14 | -------------------------------------------------------------------------------- /src/styles/Input.css: -------------------------------------------------------------------------------- 1 | .input-form { 2 | max-width: 38.75rem; 3 | } 4 | 5 | .input-row { 6 | margin-bottom: 1.5rem; 7 | } 8 | 9 | .input-label { 10 | display: block; 11 | margin-bottom: 0.8rem; 12 | font-size: var(--font-base); 13 | } 14 | 15 | .text-input { 16 | border: 1px solid rgba(255, 255, 255, 0.2); 17 | font-size: var(--font-base); 18 | width: 100%; 19 | box-sizing: border-box; 20 | } 21 | -------------------------------------------------------------------------------- /src/typings.d.ts: -------------------------------------------------------------------------------- 1 | import "@web3-react"; 2 | 3 | declare global { 4 | interface Window { 5 | ethereum?: any; 6 | TradingView?: any; 7 | } 8 | interface Navigator { 9 | msSaveBlob?: (blob: any, defaultName?: string) => boolean; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": ["dom", "dom.iterable", "esnext"], 5 | "allowJs": true, 6 | "skipLibCheck": true, 7 | "esModuleInterop": true, 8 | "allowSyntheticDefaultImports": true, 9 | "strict": false, 10 | "noImplicitAny": false, 11 | "strictNullChecks": true, 12 | "strictFunctionTypes": true, 13 | "strictBindCallApply": true, 14 | "noImplicitThis": true, 15 | "forceConsistentCasingInFileNames": true, 16 | "noFallthroughCasesInSwitch": true, 17 | "module": "esnext", 18 | "moduleResolution": "node", 19 | "resolveJsonModule": true, 20 | "isolatedModules": true, 21 | "noEmit": true, 22 | "jsx": "react-jsx", 23 | "baseUrl": "./src" 24 | }, 25 | "include": ["src"] 26 | } 27 | --------------------------------------------------------------------------------