├── .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 |
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 &&
}
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 |
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 |
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] &&

}
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 |
--------------------------------------------------------------------------------
/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 |
4 |
--------------------------------------------------------------------------------
/src/img/flag_de.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/img/flag_en.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/src/img/flag_fr.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/src/img/flag_ja.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/src/img/flag_ko.svg:
--------------------------------------------------------------------------------
1 |
18 |
--------------------------------------------------------------------------------
/src/img/flag_ru.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/src/img/flag_zh.svg:
--------------------------------------------------------------------------------
1 |
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 |
7 |
--------------------------------------------------------------------------------
/src/img/ic_arrowright16.svg:
--------------------------------------------------------------------------------
1 |
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 |
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 |
7 |
--------------------------------------------------------------------------------
/src/img/ic_convert_down.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/img/ic_copy_16.svg:
--------------------------------------------------------------------------------
1 |
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 |
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 |
5 |
--------------------------------------------------------------------------------
/src/img/ic_new_link_16.svg:
--------------------------------------------------------------------------------
1 |
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 |
8 |
--------------------------------------------------------------------------------
/src/img/ic_paraswap.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/img/ic_selector_dropdowns.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/img/ic_sign in_16.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/src/img/ic_sign_out_16.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/img/ic_simpleswaps.svg:
--------------------------------------------------------------------------------
1 |
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 |
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 |

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 |
--------------------------------------------------------------------------------