v2.1.2 (#692)
* Build(deps): bump @splinetool/runtime from 0.9.477 to 0.9.482 (#544)
Bumps @splinetool/runtime from 0.9.477 to 0.9.482.
---
updated-dependencies:
- dependency-name: "@splinetool/runtime"
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Build(deps-dev): bump @types/node from 20.7.0 to 20.8.6 (#548)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.7.0 to 20.8.6.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)
---
updated-dependencies:
- dependency-name: "@types/node"
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Build(deps): bump @sentry/nextjs from 7.73.0 to 7.74.0 (#545)
Bumps [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) from 7.73.0 to 7.74.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/7.73.0...7.74.0)
---
updated-dependencies:
- dependency-name: "@sentry/nextjs"
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Mp 3245 usehlsvaults hook (#541)
* ✨ routing and pages for HLS
* ✨ create hooks for fetching HLS vaults and Strategies
* Share accounts (#539)
* feat: do not redirect to wallet on portfolio page
* fix: use connected wallet for AccountMenu
* fix: fixed ghost AccountDetails
* feat: created ShareBar and share functionality
* fix: don’t show shareBar if no address is present
* fix: stupid 'next/navigation'
* tidy: format
* fix: fixed tests
* ✨ routing and pages for HLS (#538)
* 🐛 use useAccountIds
* fix: fixed the tests
* fix: accountIds is now a suspense
---------
Co-authored-by: Bob van der Helm <34470358+bobthebuidlr@users.noreply.github.com>
* 🐛 fix build
---------
Co-authored-by: Linkie Link <linkielink.dev@gmail.com>
* Mp 2837 pre commit hook (#549)
* MP-2837: added husys and lint-staged
* MP-2837: enabled lint-staged
* MP-2837: setup .prettierignore
* MP-2837: setup .prettierignore
* MP-3483: all Depo. Caps are now % filled (#551)
* MP-3487: changed the copy of the bridging intro screen (#553)
* MP-3482: replaced Max LTV with Max. Leverage (#550)
* added hatched health masks (#552)
* added hatched health masks
* Mp 2837 pre commit hook (#549)
* MP-2837: added husys and lint-staged
* MP-2837: enabled lint-staged
* MP-2837: setup .prettierignore
* MP-2837: setup .prettierignore
* MP-3483: all Depo. Caps are now % filled (#551)
* MP-3487: changed the copy of the bridging intro screen (#553)
* MP-3482: replaced Max LTV with Max. Leverage (#550)
* sneak: change filled to used
* fix: fixed the foregroundColor on increase and my ocd
* ♻️ refactor table (Farm) (#555)
* ♻️ refactor table (Farm)
* 🧽 clean up PR
* 🧽 clean up PR
* Build(deps): bump @babel/traverse from 7.21.2 to 7.23.2 (#554)
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.21.2 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)
---
updated-dependencies:
- dependency-name: "@babel/traverse"
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* fix: rename withdraw to unlend (#557)
* Full refactor tables (#556)
* 📈 Improve structure generic Table component
* ♻️ Update Borrow Table and overall structure of Table comp
* ♻️ Update Lend table
* ✨ add loading state for lend table
* 🧪 Fix unit tests
* ✨ Add available HLS Vaults page (#558)
* Table updates (#559)
* fix: adjusted table colors and hover interactions
* fix: added actionButtons back and changed lend to APY
* fix: build update
* tidy: fixed the CircularProgress indicators on the loading modals
* fix: relative import
* env: updated shuttle, keplr and version (#566)
* fix: fixed dust left when trying to buy max amount without leverage (#565)
* feat: added squidrouter to the bridges (#561)
* feat: added squidrouter to the bridges
* fix: copy update
* MP-3521: updated the APR calculation (#572)
* Table fixes (#563)
* fix: fixed the sorting of the tables
* fix: added sorting functions
* fix: farm sorting for deposit cap
* fix: fixed Row types
* Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567)
Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6.
- [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6)
---
updated-dependencies:
- dependency-name: prettier-plugin-tailwindcss
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571)
Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom)
---
updated-dependencies:
- dependency-name: react-router-dom
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* ✨ HLS: Add info modal (#573)
* MP-3484: remember summaryAccount tabs and auto expand both (#574)
* User feedback (#575)
* feat: added debt indicator and adjusted the borrowModal
* fix: wallet interaction fix
* Add usdc noble (#576)
* env: added USDC.n
* env: updated usdc noble variables
* fix: fixed the pool on USDC for devnet purposes
* 🐛 Fix initial status of chart (#577)
* Mp 3480 persist last trading pair (#578)
* MP-3480: remove favourite asset and prepare localStore
* env: updated shuttle, keplr and version (#566)
* fix: fixed dust left when trying to buy max amount without leverage (#565)
* feat: added squidrouter to the bridges (#561)
* feat: added squidrouter to the bridges
* fix: copy update
* MP-3521: updated the APR calculation (#572)
* Table fixes (#563)
* fix: fixed the sorting of the tables
* fix: added sorting functions
* fix: farm sorting for deposit cap
* fix: fixed Row types
* Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567)
Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6.
- [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6)
---
updated-dependencies:
- dependency-name: prettier-plugin-tailwindcss
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571)
Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom)
---
updated-dependencies:
- dependency-name: react-router-dom
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* ✨ HLS: Add info modal (#573)
* MP-3484: remember summaryAccount tabs and auto expand both (#574)
* User feedback (#575)
* feat: added debt indicator and adjusted the borrowModal
* fix: wallet interaction fix
* Add usdc noble (#576)
* env: added USDC.n
* env: updated usdc noble variables
* fix: fixed the pool on USDC for devnet purposes
* 🐛 Fix initial status of chart (#577)
* MP-3480: persist trading pair
* fix: updated according to feedback
* fix: remove pair from Trading View header
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Bob van der Helm <34470358+bobthebuidlr@users.noreply.github.com>
* post update hotfixes (#580)
* fix: fixed showing 0 on farm page if no desposited vaults
* fix: chnage USDC’s name to Noble
* v2.0.1 (#579) (#582)
* Build(deps): bump @splinetool/runtime from 0.9.477 to 0.9.482 (#544)
Bumps @splinetool/runtime from 0.9.477 to 0.9.482.
---
updated-dependencies:
- dependency-name: "@splinetool/runtime"
dependency-type: direct:production
update-type: version-update:semver-patch
...
* Build(deps-dev): bump @types/node from 20.7.0 to 20.8.6 (#548)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.7.0 to 20.8.6.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)
---
updated-dependencies:
- dependency-name: "@types/node"
dependency-type: direct:development
update-type: version-update:semver-minor
...
* Build(deps): bump @sentry/nextjs from 7.73.0 to 7.74.0 (#545)
Bumps [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) from 7.73.0 to 7.74.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/7.73.0...7.74.0)
---
updated-dependencies:
- dependency-name: "@sentry/nextjs"
dependency-type: direct:production
update-type: version-update:semver-minor
...
* Mp 3245 usehlsvaults hook (#541)
* ✨ routing and pages for HLS
* ✨ create hooks for fetching HLS vaults and Strategies
* Share accounts (#539)
* feat: do not redirect to wallet on portfolio page
* fix: use connected wallet for AccountMenu
* fix: fixed ghost AccountDetails
* feat: created ShareBar and share functionality
* fix: don’t show shareBar if no address is present
* fix: stupid 'next/navigation'
* tidy: format
* fix: fixed tests
* ✨ routing and pages for HLS (#538)
* 🐛 use useAccountIds
* fix: fixed the tests
* fix: accountIds is now a suspense
---------
* 🐛 fix build
---------
* Mp 2837 pre commit hook (#549)
* MP-2837: added husys and lint-staged
* MP-2837: enabled lint-staged
* MP-2837: setup .prettierignore
* MP-2837: setup .prettierignore
* MP-3483: all Depo. Caps are now % filled (#551)
* MP-3487: changed the copy of the bridging intro screen (#553)
* MP-3482: replaced Max LTV with Max. Leverage (#550)
* added hatched health masks (#552)
* added hatched health masks
* Mp 2837 pre commit hook (#549)
* MP-2837: added husys and lint-staged
* MP-2837: enabled lint-staged
* MP-2837: setup .prettierignore
* MP-2837: setup .prettierignore
* MP-3483: all Depo. Caps are now % filled (#551)
* MP-3487: changed the copy of the bridging intro screen (#553)
* MP-3482: replaced Max LTV with Max. Leverage (#550)
* sneak: change filled to used
* fix: fixed the foregroundColor on increase and my ocd
* ♻️ refactor table (Farm) (#555)
* ♻️ refactor table (Farm)
* 🧽 clean up PR
* 🧽 clean up PR
* Build(deps): bump @babel/traverse from 7.21.2 to 7.23.2 (#554)
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.21.2 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)
---
updated-dependencies:
- dependency-name: "@babel/traverse"
dependency-type: indirect
...
* fix: rename withdraw to unlend (#557)
* Full refactor tables (#556)
* 📈 Improve structure generic Table component
* ♻️ Update Borrow Table and overall structure of Table comp
* ♻️ Update Lend table
* ✨ add loading state for lend table
* 🧪 Fix unit tests
* ✨ Add available HLS Vaults page (#558)
* Table updates (#559)
* fix: adjusted table colors and hover interactions
* fix: added actionButtons back and changed lend to APY
* fix: build update
* tidy: fixed the CircularProgress indicators on the loading modals
* fix: relative import
* env: updated shuttle, keplr and version (#566)
* fix: fixed dust left when trying to buy max amount without leverage (#565)
* feat: added squidrouter to the bridges (#561)
* feat: added squidrouter to the bridges
* fix: copy update
* MP-3521: updated the APR calculation (#572)
* Table fixes (#563)
* fix: fixed the sorting of the tables
* fix: added sorting functions
* fix: farm sorting for deposit cap
* fix: fixed Row types
* Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567)
Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6.
- [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6)
---
updated-dependencies:
- dependency-name: prettier-plugin-tailwindcss
dependency-type: direct:development
update-type: version-update:semver-patch
...
* Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571)
Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom)
---
updated-dependencies:
- dependency-name: react-router-dom
dependency-type: direct:production
update-type: version-update:semver-minor
...
* ✨ HLS: Add info modal (#573)
* MP-3484: remember summaryAccount tabs and auto expand both (#574)
* User feedback (#575)
* feat: added debt indicator and adjusted the borrowModal
* fix: wallet interaction fix
* Add usdc noble (#576)
* env: added USDC.n
* env: updated usdc noble variables
* fix: fixed the pool on USDC for devnet purposes
* 🐛 Fix initial status of chart (#577)
* Mp 3480 persist last trading pair (#578)
* MP-3480: remove favourite asset and prepare localStore
* env: updated shuttle, keplr and version (#566)
* fix: fixed dust left when trying to buy max amount without leverage (#565)
* feat: added squidrouter to the bridges (#561)
* feat: added squidrouter to the bridges
* fix: copy update
* MP-3521: updated the APR calculation (#572)
* Table fixes (#563)
* fix: fixed the sorting of the tables
* fix: added sorting functions
* fix: farm sorting for deposit cap
* fix: fixed Row types
* Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567)
Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6.
- [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6)
---
updated-dependencies:
- dependency-name: prettier-plugin-tailwindcss
dependency-type: direct:development
update-type: version-update:semver-patch
...
* Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571)
Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom)
---
updated-dependencies:
- dependency-name: react-router-dom
dependency-type: direct:production
update-type: version-update:semver-minor
...
* ✨ HLS: Add info modal (#573)
* MP-3484: remember summaryAccount tabs and auto expand both (#574)
* User feedback (#575)
* feat: added debt indicator and adjusted the borrowModal
* fix: wallet interaction fix
* Add usdc noble (#576)
* env: added USDC.n
* env: updated usdc noble variables
* fix: fixed the pool on USDC for devnet purposes
* 🐛 Fix initial status of chart (#577)
* MP-3480: persist trading pair
* fix: updated according to feedback
* fix: remove pair from Trading View header
---------
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Linkie Link <linkielink.dev@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* v2.0.1 (#579) (#583)
* Build(deps): bump @splinetool/runtime from 0.9.477 to 0.9.482 (#544)
Bumps @splinetool/runtime from 0.9.477 to 0.9.482.
---
updated-dependencies:
- dependency-name: "@splinetool/runtime"
dependency-type: direct:production
update-type: version-update:semver-patch
...
* Build(deps-dev): bump @types/node from 20.7.0 to 20.8.6 (#548)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.7.0 to 20.8.6.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)
---
updated-dependencies:
- dependency-name: "@types/node"
dependency-type: direct:development
update-type: version-update:semver-minor
...
* Build(deps): bump @sentry/nextjs from 7.73.0 to 7.74.0 (#545)
Bumps [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) from 7.73.0 to 7.74.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/7.73.0...7.74.0)
---
updated-dependencies:
- dependency-name: "@sentry/nextjs"
dependency-type: direct:production
update-type: version-update:semver-minor
...
* Mp 3245 usehlsvaults hook (#541)
* ✨ routing and pages for HLS
* ✨ create hooks for fetching HLS vaults and Strategies
* Share accounts (#539)
* feat: do not redirect to wallet on portfolio page
* fix: use connected wallet for AccountMenu
* fix: fixed ghost AccountDetails
* feat: created ShareBar and share functionality
* fix: don’t show shareBar if no address is present
* fix: stupid 'next/navigation'
* tidy: format
* fix: fixed tests
* ✨ routing and pages for HLS (#538)
* 🐛 use useAccountIds
* fix: fixed the tests
* fix: accountIds is now a suspense
---------
* 🐛 fix build
---------
* Mp 2837 pre commit hook (#549)
* MP-2837: added husys and lint-staged
* MP-2837: enabled lint-staged
* MP-2837: setup .prettierignore
* MP-2837: setup .prettierignore
* MP-3483: all Depo. Caps are now % filled (#551)
* MP-3487: changed the copy of the bridging intro screen (#553)
* MP-3482: replaced Max LTV with Max. Leverage (#550)
* added hatched health masks (#552)
* added hatched health masks
* Mp 2837 pre commit hook (#549)
* MP-2837: added husys and lint-staged
* MP-2837: enabled lint-staged
* MP-2837: setup .prettierignore
* MP-2837: setup .prettierignore
* MP-3483: all Depo. Caps are now % filled (#551)
* MP-3487: changed the copy of the bridging intro screen (#553)
* MP-3482: replaced Max LTV with Max. Leverage (#550)
* sneak: change filled to used
* fix: fixed the foregroundColor on increase and my ocd
* ♻️ refactor table (Farm) (#555)
* ♻️ refactor table (Farm)
* 🧽 clean up PR
* 🧽 clean up PR
* Build(deps): bump @babel/traverse from 7.21.2 to 7.23.2 (#554)
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.21.2 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)
---
updated-dependencies:
- dependency-name: "@babel/traverse"
dependency-type: indirect
...
* fix: rename withdraw to unlend (#557)
* Full refactor tables (#556)
* 📈 Improve structure generic Table component
* ♻️ Update Borrow Table and overall structure of Table comp
* ♻️ Update Lend table
* ✨ add loading state for lend table
* 🧪 Fix unit tests
* ✨ Add available HLS Vaults page (#558)
* Table updates (#559)
* fix: adjusted table colors and hover interactions
* fix: added actionButtons back and changed lend to APY
* fix: build update
* tidy: fixed the CircularProgress indicators on the loading modals
* fix: relative import
* env: updated shuttle, keplr and version (#566)
* fix: fixed dust left when trying to buy max amount without leverage (#565)
* feat: added squidrouter to the bridges (#561)
* feat: added squidrouter to the bridges
* fix: copy update
* MP-3521: updated the APR calculation (#572)
* Table fixes (#563)
* fix: fixed the sorting of the tables
* fix: added sorting functions
* fix: farm sorting for deposit cap
* fix: fixed Row types
* Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567)
Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6.
- [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6)
---
updated-dependencies:
- dependency-name: prettier-plugin-tailwindcss
dependency-type: direct:development
update-type: version-update:semver-patch
...
* Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571)
Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom)
---
updated-dependencies:
- dependency-name: react-router-dom
dependency-type: direct:production
update-type: version-update:semver-minor
...
* ✨ HLS: Add info modal (#573)
* MP-3484: remember summaryAccount tabs and auto expand both (#574)
* User feedback (#575)
* feat: added debt indicator and adjusted the borrowModal
* fix: wallet interaction fix
* Add usdc noble (#576)
* env: added USDC.n
* env: updated usdc noble variables
* fix: fixed the pool on USDC for devnet purposes
* 🐛 Fix initial status of chart (#577)
* Mp 3480 persist last trading pair (#578)
* MP-3480: remove favourite asset and prepare localStore
* env: updated shuttle, keplr and version (#566)
* fix: fixed dust left when trying to buy max amount without leverage (#565)
* feat: added squidrouter to the bridges (#561)
* feat: added squidrouter to the bridges
* fix: copy update
* MP-3521: updated the APR calculation (#572)
* Table fixes (#563)
* fix: fixed the sorting of the tables
* fix: added sorting functions
* fix: farm sorting for deposit cap
* fix: fixed Row types
* Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567)
Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6.
- [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6)
---
updated-dependencies:
- dependency-name: prettier-plugin-tailwindcss
dependency-type: direct:development
update-type: version-update:semver-patch
...
* Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571)
Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom)
---
updated-dependencies:
- dependency-name: react-router-dom
dependency-type: direct:production
update-type: version-update:semver-minor
...
* ✨ HLS: Add info modal (#573)
* MP-3484: remember summaryAccount tabs and auto expand both (#574)
* User feedback (#575)
* feat: added debt indicator and adjusted the borrowModal
* fix: wallet interaction fix
* Add usdc noble (#576)
* env: added USDC.n
* env: updated usdc noble variables
* fix: fixed the pool on USDC for devnet purposes
* 🐛 Fix initial status of chart (#577)
* MP-3480: persist trading pair
* fix: updated according to feedback
* fix: remove pair from Trading View header
---------
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Bob van der Helm <34470358+bobthebuidlr@users.noreply.github.com>
* Asset select overflow (#584)
* v2.0.1 (#579)
* Build(deps): bump @splinetool/runtime from 0.9.477 to 0.9.482 (#544)
Bumps @splinetool/runtime from 0.9.477 to 0.9.482.
---
updated-dependencies:
- dependency-name: "@splinetool/runtime"
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Build(deps-dev): bump @types/node from 20.7.0 to 20.8.6 (#548)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.7.0 to 20.8.6.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)
---
updated-dependencies:
- dependency-name: "@types/node"
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Build(deps): bump @sentry/nextjs from 7.73.0 to 7.74.0 (#545)
Bumps [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) from 7.73.0 to 7.74.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/7.73.0...7.74.0)
---
updated-dependencies:
- dependency-name: "@sentry/nextjs"
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Mp 3245 usehlsvaults hook (#541)
* ✨ routing and pages for HLS
* ✨ create hooks for fetching HLS vaults and Strategies
* Share accounts (#539)
* feat: do not redirect to wallet on portfolio page
* fix: use connected wallet for AccountMenu
* fix: fixed ghost AccountDetails
* feat: created ShareBar and share functionality
* fix: don’t show shareBar if no address is present
* fix: stupid 'next/navigation'
* tidy: format
* fix: fixed tests
* ✨ routing and pages for HLS (#538)
* 🐛 use useAccountIds
* fix: fixed the tests
* fix: accountIds is now a suspense
---------
Co-authored-by: Bob van der Helm <34470358+bobthebuidlr@users.noreply.github.com>
* 🐛 fix build
---------
Co-authored-by: Linkie Link <linkielink.dev@gmail.com>
* Mp 2837 pre commit hook (#549)
* MP-2837: added husys and lint-staged
* MP-2837: enabled lint-staged
* MP-2837: setup .prettierignore
* MP-2837: setup .prettierignore
* MP-3483: all Depo. Caps are now % filled (#551)
* MP-3487: changed the copy of the bridging intro screen (#553)
* MP-3482: replaced Max LTV with Max. Leverage (#550)
* added hatched health masks (#552)
* added hatched health masks
* Mp 2837 pre commit hook (#549)
* MP-2837: added husys and lint-staged
* MP-2837: enabled lint-staged
* MP-2837: setup .prettierignore
* MP-2837: setup .prettierignore
* MP-3483: all Depo. Caps are now % filled (#551)
* MP-3487: changed the copy of the bridging intro screen (#553)
* MP-3482: replaced Max LTV with Max. Leverage (#550)
* sneak: change filled to used
* fix: fixed the foregroundColor on increase and my ocd
* ♻️ refactor table (Farm) (#555)
* ♻️ refactor table (Farm)
* 🧽 clean up PR
* 🧽 clean up PR
* Build(deps): bump @babel/traverse from 7.21.2 to 7.23.2 (#554)
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.21.2 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)
---
updated-dependencies:
- dependency-name: "@babel/traverse"
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* fix: rename withdraw to unlend (#557)
* Full refactor tables (#556)
* 📈 Improve structure generic Table component
* ♻️ Update Borrow Table and overall structure of Table comp
* ♻️ Update Lend table
* ✨ add loading state for lend table
* 🧪 Fix unit tests
* ✨ Add available HLS Vaults page (#558)
* Table updates (#559)
* fix: adjusted table colors and hover interactions
* fix: added actionButtons back and changed lend to APY
* fix: build update
* tidy: fixed the CircularProgress indicators on the loading modals
* fix: relative import
* env: updated shuttle, keplr and version (#566)
* fix: fixed dust left when trying to buy max amount without leverage (#565)
* feat: added squidrouter to the bridges (#561)
* feat: added squidrouter to the bridges
* fix: copy update
* MP-3521: updated the APR calculation (#572)
* Table fixes (#563)
* fix: fixed the sorting of the tables
* fix: added sorting functions
* fix: farm sorting for deposit cap
* fix: fixed Row types
* Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567)
Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6.
- [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6)
---
updated-dependencies:
- dependency-name: prettier-plugin-tailwindcss
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571)
Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom)
---
updated-dependencies:
- dependency-name: react-router-dom
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* ✨ HLS: Add info modal (#573)
* MP-3484: remember summaryAccount tabs and auto expand both (#574)
* User feedback (#575)
* feat: added debt indicator and adjusted the borrowModal
* fix: wallet interaction fix
* Add usdc noble (#576)
* env: added USDC.n
* env: updated usdc noble variables
* fix: fixed the pool on USDC for devnet purposes
* 🐛 Fix initial status of chart (#577)
* Mp 3480 persist last trading pair (#578)
* MP-3480: remove favourite asset and prepare localStore
* env: updated shuttle, keplr and version (#566)
* fix: fixed dust left when trying to buy max amount without leverage (#565)
* feat: added squidrouter to the bridges (#561)
* feat: added squidrouter to the bridges
* fix: copy update
* MP-3521: updated the APR calculation (#572)
* Table fixes (#563)
* fix: fixed the sorting of the tables
* fix: added sorting functions
* fix: farm sorting for deposit cap
* fix: fixed Row types
* Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567)
Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6.
- [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6)
---
updated-dependencies:
- dependency-name: prettier-plugin-tailwindcss
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571)
Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom)
---
updated-dependencies:
- dependency-name: react-router-dom
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* ✨ HLS: Add info modal (#573)
* MP-3484: remember summaryAccount tabs and auto expand both (#574)
* User feedback (#575)
* feat: added debt indicator and adjusted the borrowModal
* fix: wallet interaction fix
* Add usdc noble (#576)
* env: added USDC.n
* env: updated usdc noble variables
* fix: fixed the pool on USDC for devnet purposes
* 🐛 Fix initial status of chart (#577)
* MP-3480: persist trading pair
* fix: updated according to feedback
* fix: remove pair from Trading View header
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Bob van der Helm <34470358+bobthebuidlr@users.noreply.github.com>
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Bob van der Helm <34470358+bobthebuidlr@users.noreply.github.com>
* Build(deps): bump @splinetool/runtime from 0.9.477 to 0.9.482 (#544)
Bumps @splinetool/runtime from 0.9.477 to 0.9.482.
---
updated-dependencies:
- dependency-name: "@splinetool/runtime"
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Build(deps-dev): bump @types/node from 20.7.0 to 20.8.6 (#548)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.7.0 to 20.8.6.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)
---
updated-dependencies:
- dependency-name: "@types/node"
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Build(deps): bump @sentry/nextjs from 7.73.0 to 7.74.0 (#545)
Bumps [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) from 7.73.0 to 7.74.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/7.73.0...7.74.0)
---
updated-dependencies:
- dependency-name: "@sentry/nextjs"
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Mp 3245 usehlsvaults hook (#541)
* ✨ routing and pages for HLS
* ✨ create hooks for fetching HLS vaults and Strategies
* Share accounts (#539)
* feat: do not redirect to wallet on portfolio page
* fix: use connected wallet for AccountMenu
* fix: fixed ghost AccountDetails
* feat: created ShareBar and share functionality
* fix: don’t show shareBar if no address is present
* fix: stupid 'next/navigation'
* tidy: format
* fix: fixed tests
* ✨ routing and pages for HLS (#538)
* 🐛 use useAccountIds
* fix: fixed the tests
* fix: accountIds is now a suspense
---------
Co-authored-by: Bob van der Helm <34470358+bobthebuidlr@users.noreply.github.com>
* 🐛 fix build
---------
Co-authored-by: Linkie Link <linkielink.dev@gmail.com>
* Mp 2837 pre commit hook (#549)
* MP-2837: added husys and lint-staged
* MP-2837: enabled lint-staged
* MP-2837: setup .prettierignore
* MP-2837: setup .prettierignore
* MP-3483: all Depo. Caps are now % filled (#551)
* MP-3487: changed the copy of the bridging intro screen (#553)
* MP-3482: replaced Max LTV with Max. Leverage (#550)
* added hatched health masks (#552)
* added hatched health masks
* Mp 2837 pre commit hook (#549)
* MP-2837: added husys and lint-staged
* MP-2837: enabled lint-staged
* MP-2837: setup .prettierignore
* MP-2837: setup .prettierignore
* MP-3483: all Depo. Caps are now % filled (#551)
* MP-3487: changed the copy of the bridging intro screen (#553)
* MP-3482: replaced Max LTV with Max. Leverage (#550)
* sneak: change filled to used
* fix: fixed the foregroundColor on increase and my ocd
* ♻️ refactor table (Farm) (#555)
* ♻️ refactor table (Farm)
* 🧽 clean up PR
* 🧽 clean up PR
* fix: rename withdraw to unlend (#557)
* Full refactor tables (#556)
* 📈 Improve structure generic Table component
* ♻️ Update Borrow Table and overall structure of Table comp
* ♻️ Update Lend table
* ✨ add loading state for lend table
* 🧪 Fix unit tests
* ✨ Add available HLS Vaults page (#558)
* Table updates (#559)
* fix: adjusted table colors and hover interactions
* fix: added actionButtons back and changed lend to APY
* fix: build update
* tidy: fixed the CircularProgress indicators on the loading modals
* fix: relative import
* ✨ HLS: Add info modal (#573)
* MP-3484: remember summaryAccount tabs and auto expand both (#574)
* post update hotfixes (#580)
* fix: fixed showing 0 on farm page if no desposited vaults
* fix: chnage USDC’s name to Noble
* v2.0.1 (#579) (#582)
* Build(deps): bump @splinetool/runtime from 0.9.477 to 0.9.482 (#544)
Bumps @splinetool/runtime from 0.9.477 to 0.9.482.
---
updated-dependencies:
- dependency-name: "@splinetool/runtime"
dependency-type: direct:production
update-type: version-update:semver-patch
...
* Build(deps-dev): bump @types/node from 20.7.0 to 20.8.6 (#548)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.7.0 to 20.8.6.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)
---
updated-dependencies:
- dependency-name: "@types/node"
dependency-type: direct:development
update-type: version-update:semver-minor
...
* Build(deps): bump @sentry/nextjs from 7.73.0 to 7.74.0 (#545)
Bumps [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) from 7.73.0 to 7.74.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/7.73.0...7.74.0)
---
updated-dependencies:
- dependency-name: "@sentry/nextjs"
dependency-type: direct:production
update-type: version-update:semver-minor
...
* Mp 3245 usehlsvaults hook (#541)
* ✨ routing and pages for HLS
* ✨ create hooks for fetching HLS vaults and Strategies
* Share accounts (#539)
* feat: do not redirect to wallet on portfolio page
* fix: use connected wallet for AccountMenu
* fix: fixed ghost AccountDetails
* feat: created ShareBar and share functionality
* fix: don’t show shareBar if no address is present
* fix: stupid 'next/navigation'
* tidy: format
* fix: fixed tests
* ✨ routing and pages for HLS (#538)
* 🐛 use useAccountIds
* fix: fixed the tests
* fix: accountIds is now a suspense
---------
* 🐛 fix build
---------
* Mp 2837 pre commit hook (#549)
* MP-2837: added husys and lint-staged
* MP-2837: enabled lint-staged
* MP-2837: setup .prettierignore
* MP-2837: setup .prettierignore
* MP-3483: all Depo. Caps are now % filled (#551)
* MP-3487: changed the copy of the bridging intro screen (#553)
* MP-3482: replaced Max LTV with Max. Leverage (#550)
* added hatched health masks (#552)
* added hatched health masks
* Mp 2837 pre commit hook (#549)
* MP-2837: added husys and lint-staged
* MP-2837: enabled lint-staged
* MP-2837: setup .prettierignore
* MP-2837: setup .prettierignore
* MP-3483: all Depo. Caps are now % filled (#551)
* MP-3487: changed the copy of the bridging intro screen (#553)
* MP-3482: replaced Max LTV with Max. Leverage (#550)
* sneak: change filled to used
* fix: fixed the foregroundColor on increase and my ocd
* ♻️ refactor table (Farm) (#555)
* ♻️ refactor table (Farm)
* 🧽 clean up PR
* 🧽 clean up PR
* Build(deps): bump @babel/traverse from 7.21.2 to 7.23.2 (#554)
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.21.2 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)
---
updated-dependencies:
- dependency-name: "@babel/traverse"
dependency-type: indirect
...
* fix: rename withdraw to unlend (#557)
* Full refactor tables (#556)
* 📈 Improve structure generic Table component
* ♻️ Update Borrow Table and overall structure of Table comp
* ♻️ Update Lend table
* ✨ add loading state for lend table
* 🧪 Fix unit tests
* ✨ Add available HLS Vaults page (#558)
* Table updates (#559)
* fix: adjusted table colors and hover interactions
* fix: added actionButtons back and changed lend to APY
* fix: build update
* tidy: fixed the CircularProgress indicators on the loading modals
* fix: relative import
* env: updated shuttle, keplr and version (#566)
* fix: fixed dust left when trying to buy max amount without leverage (#565)
* feat: added squidrouter to the bridges (#561)
* feat: added squidrouter to the bridges
* fix: copy update
* MP-3521: updated the APR calculation (#572)
* Table fixes (#563)
* fix: fixed the sorting of the tables
* fix: added sorting functions
* fix: farm sorting for deposit cap
* fix: fixed Row types
* Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567)
Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6.
- [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6)
---
updated-dependencies:
- dependency-name: prettier-plugin-tailwindcss
dependency-type: direct:development
update-type: version-update:semver-patch
...
* Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571)
Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom)
---
updated-dependencies:
- dependency-name: react-router-dom
dependency-type: direct:production
update-type: version-update:semver-minor
...
* ✨ HLS: Add info modal (#573)
* MP-3484: remember summaryAccount tabs and auto expand both (#574)
* User feedback (#575)
* feat: added debt indicator and adjusted the borrowModal
* fix: wallet interaction fix
* Add usdc noble (#576)
* env: added USDC.n
* env: updated usdc noble variables
* fix: fixed the pool on USDC for devnet purposes
* 🐛 Fix initial status of chart (#577)
* Mp 3480 persist last trading pair (#578)
* MP-3480: remove favourite asset and prepare localStore
* env: updated shuttle, keplr and version (#566)
* fix: fixed dust left when trying to buy max amount without leverage (#565)
* feat: added squidrouter to the bridges (#561)
* feat: added squidrouter to the bridges
* fix: copy update
* MP-3521: updated the APR calculation (#572)
* Table fixes (#563)
* fix: fixed the sorting of the tables
* fix: added sorting functions
* fix: farm sorting for deposit cap
* fix: fixed Row types
* Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567)
Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6.
- [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6)
---
updated-dependencies:
- dependency-name: prettier-plugin-tailwindcss
dependency-type: direct:development
update-type: version-update:semver-patch
...
* Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571)
Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom)
---
updated-dependencies:
- dependency-name: react-router-dom
dependency-type: direct:production
update-type: version-update:semver-minor
...
* ✨ HLS: Add info modal (#573)
* MP-3484: remember summaryAccount tabs and auto expand both (#574)
* User feedback (#575)
* feat: added debt indicator and adjusted the borrowModal
* fix: wallet interaction fix
* Add usdc noble (#576)
* env: added USDC.n
* env: updated usdc noble variables
* fix: fixed the pool on USDC for devnet purposes
* 🐛 Fix initial status of chart (#577)
* MP-3480: persist trading pair
* fix: updated according to feedback
* fix: remove pair from Trading View header
---------
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Linkie Link <linkielink.dev@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* v2.0.1 (#579) (#583)
* Build(deps): bump @splinetool/runtime from 0.9.477 to 0.9.482 (#544)
Bumps @splinetool/runtime from 0.9.477 to 0.9.482.
---
updated-dependencies:
- dependency-name: "@splinetool/runtime"
dependency-type: direct:production
update-type: version-update:semver-patch
...
* Build(deps-dev): bump @types/node from 20.7.0 to 20.8.6 (#548)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.7.0 to 20.8.6.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)
---
updated-dependencies:
- dependency-name: "@types/node"
dependency-type: direct:development
update-type: version-update:semver-minor
...
* Build(deps): bump @sentry/nextjs from 7.73.0 to 7.74.0 (#545)
Bumps [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) from 7.73.0 to 7.74.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/7.73.0...7.74.0)
---
updated-dependencies:
- dependency-name: "@sentry/nextjs"
dependency-type: direct:production
update-type: version-update:semver-minor
...
* Mp 3245 usehlsvaults hook (#541)
* ✨ routing and pages for HLS
* ✨ create hooks for fetching HLS vaults and Strategies
* Share accounts (#539)
* feat: do not redirect to wallet on portfolio page
* fix: use connected wallet for AccountMenu
* fix: fixed ghost AccountDetails
* feat: created ShareBar and share functionality
* fix: don’t show shareBar if no address is present
* fix: stupid 'next/navigation'
* tidy: format
* fix: fixed tests
* ✨ routing and pages for HLS (#538)
* 🐛 use useAccountIds
* fix: fixed the tests
* fix: accountIds is now a suspense
---------
* 🐛 fix build
---------
* Mp 2837 pre commit hook (#549)
* MP-2837: added husys and lint-staged
* MP-2837: enabled lint-staged
* MP-2837: setup .prettierignore
* MP-2837: setup .prettierignore
* MP-3483: all Depo. Caps are now % filled (#551)
* MP-3487: changed the copy of the bridging intro screen (#553)
* MP-3482: replaced Max LTV with Max. Leverage (#550)
* added hatched health masks (#552)
* added hatched health masks
* Mp 2837 pre commit hook (#549)
* MP-2837: added husys and lint-staged
* MP-2837: enabled lint-staged
* MP-2837: setup .prettierignore
* MP-2837: setup .prettierignore
* MP-3483: all Depo. Caps are now % filled (#551)
* MP-3487: changed the copy of the bridging intro screen (#553)
* MP-3482: replaced Max LTV with Max. Leverage (#550)
* sneak: change filled to used
* fix: fixed the foregroundColor on increase and my ocd
* ♻️ refactor table (Farm) (#555)
* ♻️ refactor table (Farm)
* 🧽 clean up PR
* 🧽 clean up PR
* Build(deps): bump @babel/traverse from 7.21.2 to 7.23.2 (#554)
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.21.2 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)
---
updated-dependencies:
- dependency-name: "@babel/traverse"
dependency-type: indirect
...
* fix: rename withdraw to unlend (#557)
* Full refactor tables (#556)
* 📈 Improve structure generic Table component
* ♻️ Update Borrow Table and overall structure of Table comp
* ♻️ Update Lend table
* ✨ add loading state for lend table
* 🧪 Fix unit tests
* ✨ Add available HLS Vaults page (#558)
* Table updates (#559)
* fix: adjusted table colors and hover interactions
* fix: added actionButtons back and changed lend to APY
* fix: build update
* tidy: fixed the CircularProgress indicators on the loading modals
* fix: relative import
* env: updated shuttle, keplr and version (#566)
* fix: fixed dust left when trying to buy max amount without leverage (#565)
* feat: added squidrouter to the bridges (#561)
* feat: added squidrouter to the bridges
* fix: copy update
* MP-3521: updated the APR calculation (#572)
* Table fixes (#563)
* fix: fixed the sorting of the tables
* fix: added sorting functions
* fix: farm sorting for deposit cap
* fix: fixed Row types
* Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567)
Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6.
- [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6)
---
updated-dependencies:
- dependency-name: prettier-plugin-tailwindcss
dependency-type: direct:development
update-type: version-update:semver-patch
...
* Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571)
Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom)
---
updated-dependencies:
- dependency-name: react-router-dom
dependency-type: direct:production
update-type: version-update:semver-minor
...
* ✨ HLS: Add info modal (#573)
* MP-3484: remember summaryAccount tabs and auto expand both (#574)
* User feedback (#575)
* feat: added debt indicator and adjusted the borrowModal
* fix: wallet interaction fix
* Add usdc noble (#576)
* env: added USDC.n
* env: updated usdc noble variables
* fix: fixed the pool on USDC for devnet purposes
* 🐛 Fix initial status of chart (#577)
* Mp 3480 persist last trading pair (#578)
* MP-3480: remove favourite asset and prepare localStore
* env: updated shuttle, keplr and version (#566)
* fix: fixed dust left when trying to buy max amount without leverage (#565)
* feat: added squidrouter to the bridges (#561)
* feat: added squidrouter to the bridges
* fix: copy update
* MP-3521: updated the APR calculation (#572)
* Table fixes (#563)
* fix: fixed the sorting of the tables
* fix: added sorting functions
* fix: farm sorting for deposit cap
* fix: fixed Row types
* Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567)
Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6.
- [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6)
---
updated-dependencies:
- dependency-name: prettier-plugin-tailwindcss
dependency-type: direct:development
update-type: version-update:semver-patch
...
* Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571)
Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom)
---
updated-dependencies:
- dependency-name: react-router-dom
dependency-type: direct:production
update-type: version-update:semver-minor
...
* ✨ HLS: Add info modal (#573)
* MP-3484: remember summaryAccount tabs and auto expand both (#574)
* User feedback (#575)
* feat: added debt indicator and adjusted the borrowModal
* fix: wallet interaction fix
* Add usdc noble (#576)
* env: added USDC.n
* env: updated usdc noble variables
* fix: fixed the pool on USDC for devnet purposes
* 🐛 Fix initial status of chart (#577)
* MP-3480: persist trading pair
* fix: updated according to feedback
* fix: remove pair from Trading View header
---------
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Bob van der Helm <34470358+bobthebuidlr@users.noreply.github.com>
* fix: fixed the asset select overflow
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Bob van der Helm <34470358+bobthebuidlr@users.noreply.github.com>
* fix: fixed the AccountDetails position
* fix: update
* Hotfixes v2.0.1 (#581) (#585)
* Build(deps): bump @splinetool/runtime from 0.9.477 to 0.9.482 (#544)
Bumps @splinetool/runtime from 0.9.477 to 0.9.482.
---
updated-dependencies:
- dependency-name: "@splinetool/runtime"
dependency-type: direct:production
update-type: version-update:semver-patch
...
* Build(deps-dev): bump @types/node from 20.7.0 to 20.8.6 (#548)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.7.0 to 20.8.6.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)
---
updated-dependencies:
- dependency-name: "@types/node"
dependency-type: direct:development
update-type: version-update:semver-minor
...
* Build(deps): bump @sentry/nextjs from 7.73.0 to 7.74.0 (#545)
Bumps [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) from 7.73.0 to 7.74.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/7.73.0...7.74.0)
---
updated-dependencies:
- dependency-name: "@sentry/nextjs"
dependency-type: direct:production
update-type: version-update:semver-minor
...
* Mp 3245 usehlsvaults hook (#541)
* ✨ routing and pages for HLS
* ✨ create hooks for fetching HLS vaults and Strategies
* Share accounts (#539)
* feat: do not redirect to wallet on portfolio page
* fix: use connected wallet for AccountMenu
* fix: fixed ghost AccountDetails
* feat: created ShareBar and share functionality
* fix: don’t show shareBar if no address is present
* fix: stupid 'next/navigation'
* tidy: format
* fix: fixed tests
* ✨ routing and pages for HLS (#538)
* 🐛 use useAccountIds
* fix: fixed the tests
* fix: accountIds is now a suspense
---------
* 🐛 fix build
---------
* Mp 2837 pre commit hook (#549)
* MP-2837: added husys and lint-staged
* MP-2837: enabled lint-staged
* MP-2837: setup .prettierignore
* MP-2837: setup .prettierignore
* MP-3483: all Depo. Caps are now % filled (#551)
* MP-3487: changed the copy of the bridging intro screen (#553)
* MP-3482: replaced Max LTV with Max. Leverage (#550)
* added hatched health masks (#552)
* added hatched health masks
* Mp 2837 pre commit hook (#549)
* MP-2837: added husys and lint-staged
* MP-2837: enabled lint-staged
* MP-2837: setup .prettierignore
* MP-2837: setup .prettierignore
* MP-3483: all Depo. Caps are now % filled (#551)
* MP-3487: changed the copy of the bridging intro screen (#553)
* MP-3482: replaced Max LTV with Max. Leverage (#550)
* sneak: change filled to used
* fix: fixed the foregroundColor on increase and my ocd
* ♻️ refactor table (Farm) (#555)
* ♻️ refactor table (Farm)
* 🧽 clean up PR
* 🧽 clean up PR
* Build(deps): bump @babel/traverse from 7.21.2 to 7.23.2 (#554)
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.21.2 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)
---
updated-dependencies:
- dependency-name: "@babel/traverse"
dependency-type: indirect
...
* fix: rename withdraw to unlend (#557)
* Full refactor tables (#556)
* 📈 Improve structure generic Table component
* ♻️ Update Borrow Table and overall structure of Table comp
* ♻️ Update Lend table
* ✨ add loading state for lend table
* 🧪 Fix unit tests
* ✨ Add available HLS Vaults page (#558)
* Table updates (#559)
* fix: adjusted table colors and hover interactions
* fix: added actionButtons back and changed lend to APY
* fix: build update
* tidy: fixed the CircularProgress indicators on the loading modals
* fix: relative import
* env: updated shuttle, keplr and version (#566)
* fix: fixed dust left when trying to buy max amount without leverage (#565)
* feat: added squidrouter to the bridges (#561)
* feat: added squidrouter to the bridges
* fix: copy update
* MP-3521: updated the APR calculation (#572)
* Table fixes (#563)
* fix: fixed the sorting of the tables
* fix: added sorting functions
* fix: farm sorting for deposit cap
* fix: fixed Row types
* Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567)
Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6.
- [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6)
---
updated-dependencies:
- dependency-name: prettier-plugin-tailwindcss
dependency-type: direct:development
update-type: version-update:semver-patch
...
* Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571)
Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom)
---
updated-dependencies:
- dependency-name: react-router-dom
dependency-type: direct:production
update-type: version-update:semver-minor
...
* ✨ HLS: Add info modal (#573)
* MP-3484: remember summaryAccount tabs and auto expand both (#574)
* User feedback (#575)
* feat: added debt indicator and adjusted the borrowModal
* fix: wallet interaction fix
* Add usdc noble (#576)
* env: added USDC.n
* env: updated usdc noble variables
* fix: fixed the pool on USDC for devnet purposes
* 🐛 Fix initial status of chart (#577)
* Mp 3480 persist last trading pair (#578)
* MP-3480: remove favourite asset and prepare localStore
* env: updated shuttle, keplr and version (#566)
* fix: fixed dust left when trying to buy max amount without leverage (#565)
* feat: added squidrouter to the bridges (#561)
* feat: added squidrouter to the bridges
* fix: copy update
* MP-3521: updated the APR calculation (#572)
* Table fixes (#563)
* fix: fixed the sorting of the tables
* fix: added sorting functions
* fix: farm sorting for deposit cap
* fix: fixed Row types
* Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567)
Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6.
- [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6)
---
updated-dependencies:
- dependency-name: prettier-plugin-tailwindcss
dependency-type: direct:development
update-type: version-update:semver-patch
...
* Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571)
Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom)
---
updated-dependencies:
- dependency-name: react-router-dom
dependency-type: direct:production
update-type: version-update:semver-minor
...
* ✨ HLS: Add info modal (#573)
* MP-3484: remember summaryAccount tabs and auto expand both (#574)
* User feedback (#575)
* feat: added debt indicator and adjusted the borrowModal
* fix: wallet interaction fix
* Add usdc noble (#576)
* env: added USDC.n
* env: updated usdc noble variables
* fix: fixed the pool on USDC for devnet purposes
* 🐛 Fix initial status of chart (#577)
* MP-3480: persist trading pair
* fix: updated according to feedback
* fix: remove pair from Trading View header
---------
* post update hotfixes (#580)
* fix: fixed showing 0 on farm page if no desposited vaults
* fix: chnage USDC’s name to Noble
* v2.0.1 (#579) (#582)
* Build(deps): bump @splinetool/runtime from 0.9.477 to 0.9.482 (#544)
Bumps @splinetool/runtime from 0.9.477 to 0.9.482.
---
updated-dependencies:
- dependency-name: "@splinetool/runtime"
dependency-type: direct:production
update-type: version-update:semver-patch
...
* Build(deps-dev): bump @types/node from 20.7.0 to 20.8.6 (#548)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.7.0 to 20.8.6.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)
---
updated-dependencies:
- dependency-name: "@types/node"
dependency-type: direct:development
update-type: version-update:semver-minor
...
* Build(deps): bump @sentry/nextjs from 7.73.0 to 7.74.0 (#545)
Bumps [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) from 7.73.0 to 7.74.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/7.73.0...7.74.0)
---
updated-dependencies:
- dependency-name: "@sentry/nextjs"
dependency-type: direct:production
update-type: version-update:semver-minor
...
* Mp 3245 usehlsvaults hook (#541)
* ✨ routing and pages for HLS
* ✨ create hooks for fetching HLS vaults and Strategies
* Share accounts (#539)
* feat: do not redirect to wallet on portfolio page
* fix: use connected wallet for AccountMenu
* fix: fixed ghost AccountDetails
* feat: created ShareBar and share functionality
* fix: don’t show shareBar if no address is present
* fix: stupid 'next/navigation'
* tidy: format
* fix: fixed tests
* ✨ routing and pages for HLS (#538)
* 🐛 use useAccountIds
* fix: fixed the tests
* fix: accountIds is now a suspense
---------
* 🐛 fix build
---------
* Mp 2837 pre commit hook (#549)
* MP-2837: added husys and lint-staged
* MP-2837: enabled lint-staged
* MP-2837: setup .prettierignore
* MP-2837: setup .prettierignore
* MP-3483: all Depo. Caps are now % filled (#551)
* MP-3487: changed the copy of the bridging intro screen (#553)
* MP-3482: replaced Max LTV with Max. Leverage (#550)
* added hatched health masks (#552)
* added hatched health masks
* Mp 2837 pre commit hook (#549)
* MP-2837: added husys and lint-staged
* MP-2837: enabled lint-staged
* MP-2837: setup .prettierignore
* MP-2837: setup .prettierignore
* MP-3483: all Depo. Caps are now % filled (#551)
* MP-3487: changed the copy of the bridging intro screen (#553)
* MP-3482: replaced Max LTV with Max. Leverage (#550)
* sneak: change filled to used
* fix: fixed the foregroundColor on increase and my ocd
* ♻️ refactor table (Farm) (#555)
* ♻️ refactor table (Farm)
* 🧽 clean up PR
* 🧽 clean up PR
* Build(deps): bump @babel/traverse from 7.21.2 to 7.23.2 (#554)
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.21.2 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)
---
updated-dependencies:
- dependency-name: "@babel/traverse"
dependency-type: indirect
...
* fix: rename withdraw to unlend (#557)
* Full refactor tables (#556)
* 📈 Improve structure generic Table component
* ♻️ Update Borrow Table and overall structure of Table comp
* ♻️ Update Lend table
* ✨ add loading state for lend table
* 🧪 Fix unit tests
* ✨ Add available HLS Vaults page (#558)
* Table updates (#559)
* fix: adjusted table colors and hover interactions
* fix: added actionButtons back and changed lend to APY
* fix: build update
* tidy: fixed the CircularProgress indicators on the loading modals
* fix: relative import
* env: updated shuttle, keplr and version (#566)
* fix: fixed dust left when trying to buy max amount without leverage (#565)
* feat: added squidrouter to the bridges (#561)
* feat: added squidrouter to the bridges
* fix: copy update
* MP-3521: updated the APR calculation (#572)
* Table fixes (#563)
* fix: fixed the sorting of the tables
* fix: added sorting functions
* fix: farm sorting for deposit cap
* fix: fixed Row types
* Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567)
Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6.
- [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6)
---
updated-dependencies:
- dependency-name: prettier-plugin-tailwindcss
dependency-type: direct:development
update-type: version-update:semver-patch
...
* Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571)
Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom)
---
updated-dependencies:
- dependency-name: react-router-dom
dependency-type: direct:production
update-type: version-update:semver-minor
...
* ✨ HLS: Add info modal (#573)
* MP-3484: remember summaryAccount tabs and auto expand both (#574)
* User feedback (#575)
* feat: added debt indicator and adjusted the borrowModal
* fix: wallet interaction fix
* Add usdc noble (#576)
* env: added USDC.n
* env: updated usdc noble variables
* fix: fixed the pool on USDC for devnet purposes
* 🐛 Fix initial status of chart (#577)
* Mp 3480 persist last trading pair (#578)
* MP-3480: remove favourite asset and prepare localStore
* env: updated shuttle, keplr and version (#566)
* fix: fixed dust left when trying to buy max amount without leverage (#565)
* feat: added squidrouter to the bridges (#561)
* feat: added squidrouter to the bridges
* fix: copy update
* MP-3521: updated the APR calculation (#572)
* Table fixes (#563)
* fix: fixed the sorting of the tables
* fix: added sorting functions
* fix: farm sorting for deposit cap
* fix: fixed Row types
* Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567)
Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6.
- [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6)
---
updated-dependencies:
- dependency-name: prettier-plugin-tailwindcss
dependency-type: direct:development
update-type: version-update:semver-patch
...
* Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571)
Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom)
---
updated-dependencies:
- dependency-name: react-router-dom
dependency-type: direct:production
update-type: version-update:semver-minor
...
* ✨ HLS: Add info modal (#573)
* MP-3484: remember summaryAccount tabs and auto expand both (#574)
* User feedback (#575)
* feat: added debt indicator and adjusted the borrowModal
* fix: wallet interaction fix
* Add usdc noble (#576)
* env: added USDC.n
* env: updated usdc noble variables
* fix: fixed the pool on USDC for devnet purposes
* 🐛 Fix initial status of chart (#577)
* MP-3480: persist trading pair
* fix: updated according to feedback
* fix: remove pair from Trading View header
---------
---------
* v2.0.1 (#579) (#583)
* Build(deps): bump @splinetool/runtime from 0.9.477 to 0.9.482 (#544)
Bumps @splinetool/runtime from 0.9.477 to 0.9.482.
---
updated-dependencies:
- dependency-name: "@splinetool/runtime"
dependency-type: direct:production
update-type: version-update:semver-patch
...
* Build(deps-dev): bump @types/node from 20.7.0 to 20.8.6 (#548)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.7.0 to 20.8.6.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)
---
updated-dependencies:
- dependency-name: "@types/node"
dependency-type: direct:development
update-type: version-update:semver-minor
...
* Build(deps): bump @sentry/nextjs from 7.73.0 to 7.74.0 (#545)
Bumps [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) from 7.73.0 to 7.74.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/7.73.0...7.74.0)
---
updated-dependencies:
- dependency-name: "@sentry/nextjs"
dependency-type: direct:production
update-type: version-update:semver-minor
...
* Mp 3245 usehlsvaults hook (#541)
* ✨ routing and pages for HLS
* ✨ create hooks for fetching HLS vaults and Strategies
* Share accounts (#539)
* feat: do not redirect to wallet on portfolio page
* fix: use connected wallet for AccountMenu
* fix: fixed ghost AccountDetails
* feat: created ShareBar and share functionality
* fix: don’t show shareBar if no address is present
* fix: stupid 'next/navigation'
* tidy: format
* fix: fixed tests
* ✨ routing and pages for HLS (#538)
* 🐛 use useAccountIds
* fix: fixed the tests
* fix: accountIds is now a suspense
---------
* 🐛 fix build
---------
* Mp 2837 pre commit hook (#549)
* MP-2837: added husys and lint-staged
* MP-2837: enabled lint-staged
* MP-2837: setup .prettierignore
* MP-2837: setup .prettierignore
* MP-3483: all Depo. Caps are now % filled (#551)
* MP-3487: changed the copy of the bridging intro screen (#553)
* MP-3482: replaced Max LTV with Max. Leverage (#550)
* added hatched health masks (#552)
* added hatched health masks
* Mp 2837 pre commit hook (#549)
* MP-2837: added husys and lint-staged
* MP-2837: enabled lint-staged
* MP-2837: setup .prettierignore
* MP-2837: setup .prettierignore
* MP-3483: all Depo. Caps are now % filled (#551)
* MP-3487: changed the copy of the bridging intro screen (#553)
* MP-3482: replaced Max LTV with Max. Leverage (#550)
* sneak: change filled to used
* fix: fixed the foregroundColor on increase and my ocd
* ♻️ refactor table (Farm) (#555)
* ♻️ refactor table (Farm)
* 🧽 clean up PR
* 🧽 clean up PR
* Build(deps): bump @babel/traverse from 7.21.2 to 7.23.2 (#554)
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.21.2 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)
---
updated-dependencies:
- dependency-name: "@babel/traverse"
dependency-type: indirect
...
* fix: rename withdraw to unlend (#557)
* Full refactor tables (#556)
* 📈 Improve structure generic Table component
* ♻️ Update Borrow Table and overall structure of Table comp
* ♻️ Update Lend table
* ✨ add loading state for lend table
* 🧪 Fix unit tests
* ✨ Add available HLS Vaults page (#558)
* Table updates (#559)
* fix: adjusted table colors and hover interactions
* fix: added actionButtons back and changed lend to APY
* fix: build update
* tidy: fixed the CircularProgress indicators on the loading modals
* fix: relative import
* env: updated shuttle, keplr and version (#566)
* fix: fixed dust left when trying to buy max amount without leverage (#565)
* feat: added squidrouter to the bridges (#561)
* feat: added squidrouter to the bridges
* fix: copy update
* MP-3521: updated the APR calculation (#572)
* Table fixes (#563)
* fix: fixed the sorting of the tables
* fix: added sorting functions
* fix: farm sorting for deposit cap
* fix: fixed Row types
* Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567)
Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6.
- [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6)
---
updated-dependencies:
- dependency-name: prettier-plugin-tailwindcss
dependency-type: direct:development
update-type: version-update:semver-patch
...
* Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571)
Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom)
---
updated-dependencies:
- dependency-name: react-router-dom
dependency-type: direct:production
update-type: version-update:semver-minor
...
* ✨ HLS: Add info modal (#573)
* MP-3484: remember summaryAccount tabs and auto expand both (#574)
* User feedback (#575)
* feat: added debt indicator and adjusted the borrowModal
* fix: wallet interaction fix
* Add usdc noble (#576)
* env: added USDC.n
* env: updated usdc noble variables
* fix: fixed the pool on USDC for devnet purposes
* 🐛 Fix initial status of chart (#577)
* Mp 3480 persist last trading pair (#578)
* MP-3480: remove favourite asset and prepare localStore
* env: updated shuttle, keplr and version (#566)
* fix: fixed dust left when trying to buy max amount without leverage (#565)
* feat: added squidrouter to the bridges (#561)
* feat: added squidrouter to the bridges
* fix: copy update
* MP-3521: updated the APR calculation (#572)
* Table fixes (#563)
* fix: fixed the sorting of the tables
* fix: added sorting functions
* fix: farm sorting for deposit cap
* fix: fixed Row types
* Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567)
Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6.
- [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6)
---
updated-dependencies:
- dependency-name: prettier-plugin-tailwindcss
dependency-type: direct:development
update-type: version-update:semver-patch
...
* Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571)
Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom)
---
updated-dependencies:
- dependency-name: react-router-dom
dependency-type: direct:production
update-type: version-update:semver-minor
...
* ✨ HLS: Add info modal (#573)
* MP-3484: remember summaryAccount tabs and auto expand both (#574)
* User feedback (#575)
* feat: added debt indicator and adjusted the borrowModal
* fix: wallet interaction fix
* Add usdc noble (#576)
* env: added USDC.n
* env: updated usdc noble variables
* fix: fixed the pool on USDC for devnet purposes
* 🐛 Fix initial status of chart (#577)
* MP-3480: persist trading pair
* fix: updated according to feedback
* fix: remove pair from Trading View header
---------
---------
* Asset select overflow (#584)
* v2.0.1 (#579)
* Build(deps): bump @splinetool/runtime from 0.9.477 to 0.9.482 (#544)
Bumps @splinetool/runtime from 0.9.477 to 0.9.482.
---
updated-dependencies:
- dependency-name: "@splinetool/runtime"
dependency-type: direct:production
update-type: version-update:semver-patch
...
* Build(deps-dev): bump @types/node from 20.7.0 to 20.8.6 (#548)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.7.0 to 20.8.6.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)
---
updated-dependencies:
- dependency-name: "@types/node"
dependency-type: direct:development
update-type: version-update:semver-minor
...
* Build(deps): bump @sentry/nextjs from 7.73.0 to 7.74.0 (#545)
Bumps [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) from 7.73.0 to 7.74.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/7.73.0...7.74.0)
---
updated-dependencies:
- dependency-name: "@sentry/nextjs"
dependency-type: direct:production
update-type: version-update:semver-minor
...
* Mp 3245 usehlsvaults hook (#541)
* ✨ routing and pages for HLS
* ✨ create hooks for fetching HLS vaults and Strategies
* Share accounts (#539)
* feat: do not redirect to wallet on portfolio page
* fix: use connected wallet for AccountMenu
* fix: fixed ghost AccountDetails
* feat: created ShareBar and share functionality
* fix: don’t show shareBar if no address is present
* fix: stupid 'next/navigation'
* tidy: format
* fix: fixed tests
* ✨ routing and pages for HLS (#538)
* 🐛 use useAccountIds
* fix: fixed the tests
* fix: accountIds is now a suspense
---------
* 🐛 fix build
---------
* Mp 2837 pre commit hook (#549)
* MP-2837: added husys and lint-staged
* MP-2837: enabled lint-staged
* MP-2837: setup .prettierignore
* MP-2837: setup .prettierignore
* MP-3483: all Depo. Caps are now % filled (#551)
* MP-3487: changed the copy of the bridging intro screen (#553)
* MP-3482: replaced Max LTV with Max. Leverage (#550)
* added hatched health masks (#552)
* added hatched health masks
* Mp 2837 pre commit hook (#549)
* MP-2837: added husys and lint-staged
* MP-2837: enabled lint-staged
* MP-2837: setup .prettierignore
* MP-2837: setup .prettierignore
* MP-3483: all Depo. Caps are now % filled (#551)
* MP-3487: changed the copy of the bridging intro screen (#553)
* MP-3482: replaced Max LTV with Max. Leverage (#550)
* sneak: change filled to used
* fix: fixed the foregroundColor on increase and my ocd
* ♻️ refactor table (Farm) (#555)
* ♻️ refactor table (Farm)
* 🧽 clean up PR
* 🧽 clean up PR
* Build(deps): bump @babel/traverse from 7.21.2 to 7.23.2 (#554)
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.21.2 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)
---
updated-dependencies:
- dependency-name: "@babel/traverse"
dependency-type: indirect
...
* fix: rename withdraw to unlend (#557)
* Full refactor tables (#556)
* 📈 Improve structure generic Table component
* ♻️ Update Borrow Table and overall structure of Table comp
* ♻️ Update Lend table
* ✨ add loading state for lend table
* 🧪 Fix unit tests
* ✨ Add available HLS Vaults page (#558)
* Table updates (#559)
* fix: adjusted table colors and hover interactions
* fix: added actionButtons back and changed lend to APY
* fix: build update
* tidy: fixed the CircularProgress indicators on the loading modals
* fix: relative import
* env: updated shuttle, keplr and version (#566)
* fix: fixed dust left when trying to buy max amount without leverage (#565)
* feat: added squidrouter to the bridges (#561)
* feat: added squidrouter to the bridges
* fix: copy update
* MP-3521: updated the APR calculation (#572)
* Table fixes (#563)
* fix: fixed the sorting of the tables
* fix: added sorting functions
* fix: farm sorting for deposit cap
* fix: fixed Row types
* Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567)
Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6.
- [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6)
---
updated-dependencies:
- dependency-name: prettier-plugin-tailwindcss
dependency-type: direct:development
update-type: version-update:semver-patch
...
* Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571)
Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom)
---
updated-dependencies:
- dependency-name: react-router-dom
dependency-type: direct:production
update-type: version-update:semver-minor
...
* ✨ HLS: Add info modal (#573)
* MP-3484: remember summaryAccount tabs and auto expand both (#574)
* User feedback (#575)
* feat: added debt indicator and adjusted the borrowModal
* fix: wallet interaction fix
* Add usdc noble (#576)
* env: added USDC.n
* env: updated usdc noble variables
* fix: fixed the pool on USDC for devnet purposes
* 🐛 Fix initial status of chart (#577)
* Mp 3480 persist last trading pair (#578)
* MP-3480: remove favourite asset and prepare localStore
* env: updated shuttle, keplr and version (#566)
* fix: fixed dust left when trying to buy max amount without leverage (#565)
* feat: added squidrouter to the bridges (#561)
* feat: added squidrouter to the bridges
* fix: copy update
* MP-3521: updated the APR calculation (#572)
* Table fixes (#563)
* fix: fixed the sorting of the tables
* fix: added sorting functions
* fix: farm sorting for deposit cap
* fix: fixed Row types
* Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567)
Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6.
- [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6)
---
updated-dependencies:
- dependency-name: prettier-plugin-tailwindcss
dependency-type: direct:development
update-type: version-update:semver-patch
...
* Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571)
Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom)
---
updated-dependencies:
- dependency-name: react-router-dom
dependency-type: direct:production
update-type: version-update:semver-minor
...
* ✨ HLS: Add info modal (#573)
* MP-3484: remember summaryAccount tabs and auto expand both (#574)
* User feedback (#575)
* feat: added debt indicator and adjusted the borrowModal
* fix: wallet interaction fix
* Add usdc noble (#576)
* env: added USDC.n
* env: updated usdc noble variables
* fix: fixed the pool on USDC for devnet purposes
* 🐛 Fix initial status of chart (#577)
* MP-3480: persist trading pair
* fix: updated according to feedback
* fix: remove pair from Trading View header
---------
---------
* Build(deps): bump @splinetool/runtime from 0.9.477 to 0.9.482 (#544)
Bumps @splinetool/runtime from 0.9.477 to 0.9.482.
---
updated-dependencies:
- dependency-name: "@splinetool/runtime"
dependency-type: direct:production
update-type: version-update:semver-patch
...
* Build(deps-dev): bump @types/node from 20.7.0 to 20.8.6 (#548)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.7.0 to 20.8.6.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)
---
updated-dependencies:
- dependency-name: "@types/node"
dependency-type: direct:development
update-type: version-update:semver-minor
...
* Build(deps): bump @sentry/nextjs from 7.73.0 to 7.74.0 (#545)
Bumps [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) from 7.73.0 to 7.74.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/7.73.0...7.74.0)
---
updated-dependencies:
- dependency-name: "@sentry/nextjs"
dependency-type: direct:production
update-type: version-update:semver-minor
...
* Mp 3245 usehlsvaults hook (#541)
* ✨ routing and pages for HLS
* ✨ create hooks for fetching HLS vaults and Strategies
* Share accounts (#539)
* feat: do not redirect to wallet on portfolio page
* fix: use connected wallet for AccountMenu
* fix: fixed ghost AccountDetails
* feat: created ShareBar and share functionality
* fix: don’t show shareBar if no address is present
* fix: stupid 'next/navigation'
* tidy: format
* fix: fixed tests
* ✨ routing and pages for HLS (#538)
* 🐛 use useAccountIds
* fix: fixed the tests
* fix: accountIds is now a suspense
---------
* 🐛 fix build
---------
* Mp 2837 pre commit hook (#549)
* MP-2837: added husys and lint-staged
* MP-2837: enabled lint-staged
* MP-2837: setup .prettierignore
* MP-2837: setup .prettierignore
* MP-3483: all Depo. Caps are now % filled (#551)
* MP-3487: changed the copy of the bridging intro screen (#553)
* MP-3482: replaced Max LTV with Max. Leverage (#550)
* added hatched health masks (#552)
* added hatched health masks
* Mp 2837 pre commit hook (#549)
* MP-2837: added husys and lint-staged
* MP-2837: enabled lint-staged
* MP-2837: setup .prettierignore
* MP-2837: setup .prettierignore
* MP-3483: all Depo. Caps are now % filled (#551)
* MP-3487: changed the copy of the bridging intro screen (#553)
* MP-3482: replaced Max LTV with Max. Leverage (#550)
* sneak: change filled to used
* fix: fixed the foregroundColor on increase and my ocd
* ♻️ refactor table (Farm) (#555)
* ♻️ refactor table (Farm)
* 🧽 clean up PR
* 🧽 clean up PR
* fix: rename withdraw to unlend (#557)
* Full refactor tables (#556)
* 📈 Improve structure generic Table component
* ♻️ Update Borrow Table and overall structure of Table comp
* ♻️ Update Lend table
* ✨ add loading state for lend table
* 🧪 Fix unit tests
* ✨ Add available HLS Vaults page (#558)
* Table updates (#559)
* fix: adjusted table colors and hover interactions
* fix: added actionButtons back and changed lend to APY
* fix: build update
* tidy: fixed the CircularProgress indicators on the loading modals
* fix: relative import
* ✨ HLS: Add info modal (#573)
* MP-3484: remember summaryAccount tabs and auto expand both (#574)
* post update hotfixes (#580)
* fix: fixed showing 0 on farm page if no desposited vaults
* fix: chnage USDC’s name to Noble
* v2.0.1 (#579) (#582)
* Build(deps): bump @splinetool/runtime from 0.9.477 to 0.9.482 (#544)
Bumps @splinetool/runtime from 0.9.477 to 0.9.482.
---
updated-dependencies:
- dependency-name: "@splinetool/runtime"
dependency-type: direct:production
update-type: version-update:semver-patch
...
* Build(deps-dev): bump @types/node from 20.7.0 to 20.8.6 (#548)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.7.0 to 20.8.6.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)
---
updated-dependencies:
- dependency-name: "@types/node"
dependency-type: direct:development
update-type: version-update:semver-minor
...
* Build(deps): bump @sentry/nextjs from 7.73.0 to 7.74.0 (#545)
Bumps [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) from 7.73.0 to 7.74.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/7.73.0...7.74.0)
---
updated-dependencies:
- dependency-name: "@sentry/nextjs"
dependency-type: direct:production
update-type: version-update:semver-minor
...
* Mp 3245 usehlsvaults hook (#541)
* ✨ routing and pages for HLS
* ✨ create hooks for fetching HLS vaults and Strategies
* Share accounts (#539)
* feat: do not redirect to wallet on portfolio page
* fix: use connected wallet for AccountMenu
* fix: fixed ghost AccountDetails
* feat: created ShareBar and share functionality
* fix: don’t show shareBar if no address is present
* fix: stupid 'next/navigation'
* tidy: format
* fix: fixed tests
* ✨ routing and pages for HLS (#538)
* 🐛 use useAccountIds
* fix: fixed the tests
* fix: accountIds is now a suspense
---------
* 🐛 fix build
---------
* Mp 2837 pre commit hook (#549)
* MP-2837: added husys and lint-staged
* MP-2837: enabled lint-staged
* MP-2837: setup .prettierignore
* MP-2837: setup .prettierignore
* MP-3483: all Depo. Caps are now % filled (#551)
* MP-3487: changed the copy of the bridging intro screen (#553)
* MP-3482: replaced Max LTV with Max. Leverage (#550)
* added hatched health masks (#552)
* added hatched health masks
* Mp 2837 pre commit hook (#549)
* MP-2837: added husys and lint-staged
* MP-2837: enabled lint-staged
* MP-2837: setup .prettierignore
* MP-2837: setup .prettierignore
* MP-3483: all Depo. Caps are now % filled (#551)
* MP-3487: changed the copy of the bridging intro screen (#553)
* MP-3482: replaced Max LTV with Max. Leverage (#550)
* sneak: change filled to used
* fix: fixed the foregroundColor on increase and my ocd
* ♻️ refactor table (Farm) (#555)
* ♻️ refactor table (Farm)
* 🧽 clean up PR
* 🧽 clean up PR
* Build(deps): bump @babel/traverse from 7.21.2 to 7.23.2 (#554)
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.21.2 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)
---
updated-dependencies:
- dependency-name: "@babel/traverse"
dependency-type: indirect
...
* fix: rename withdraw to unlend (#557)
* Full refactor tables (#556)
* 📈 Improve structure generic Table component
* ♻️ Update Borrow Table and overall structure of Table comp
* ♻️ Update Lend table
* ✨ add loading state for lend table
* 🧪 Fix unit tests
* ✨ Add available HLS Vaults page (#558)
* Table updates (#559)
* fix: adjusted table colors and hover interactions
* fix: added actionButtons back and changed lend to APY
* fix: build update
* tidy: fixed the CircularProgress indicators on the loading modals
* fix: relative import
* env: updated shuttle, keplr and version (#566)
* fix: fixed dust left when trying to buy max amount without leverage (#565)
* feat: added squidrouter to the bridges (#561)
* feat: added squidrouter to the bridges
* fix: copy update
* MP-3521: updated the APR calculation (#572)
* Table fixes (#563)
* fix: fixed the sorting of the tables
* fix: added sorting functions
* fix: farm sorting for deposit cap
* fix: fixed Row types
* Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567)
Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6.
- [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6)
---
updated-dependencies:
- dependency-name: prettier-plugin-tailwindcss
dependency-type: direct:development
update-type: version-update:semver-patch
...
* Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571)
Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom)
---
updated-dependencies:
- dependency-name: react-router-dom
dependency-type: direct:production
update-type: version-update:semver-minor
...
* ✨ HLS: Add info modal (#573)
* MP-3484: remember summaryAccount tabs and auto expand both (#574)
* User feedback (#575)
* feat: added debt indicator and adjusted the borrowModal
* fix: wallet interaction fix
* Add usdc noble (#576)
* env: added USDC.n
* env: updated usdc noble variables
* fix: fixed the pool on USDC for devnet purposes
* 🐛 Fix initial status of chart (#577)
* Mp 3480 persist last trading pair (#578)
* MP-3480: remove favourite asset and prepare localStore
* env: updated shuttle, keplr and version (#566)
* fix: fixed dust left when trying to buy max amount without leverage (#565)
* feat: added squidrouter to the bridges (#561)
* feat: added squidrouter to the bridges
* fix: copy update
* MP-3521: updated the APR calculation (#572)
* Table fixes (#563)
* fix: fixed the sorting of the tables
* fix: added sorting functions
* fix: farm sorting for deposit cap
* fix: fixed Row types
* Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567)
Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6.
- [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6)
---
updated-dependencies:
- dependency-name: prettier-plugin-tailwindcss
dependency-type: direct:development
update-type: version-update:semver-patch
...
* Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571)
Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom)
---
updated-dependencies:
- dependency-name: react-router-dom
dependency-type: direct:production
update-type: version-update:semver-minor
...
* ✨ HLS: Add info modal (#573)
* MP-3484: remember summaryAccount tabs and auto expand both (#574)
* User feedback (#575)
* feat: added debt indicator and adjusted the borrowModal
* fix: wallet interaction fix
* Add usdc noble (#576)
* env: added USDC.n
* env: updated usdc noble variables
* fix: fixed the pool on USDC for devnet purposes
* 🐛 Fix initial status of chart (#577)
* MP-3480: persist trading pair
* fix: updated according to feedback
* fix: remove pair from Trading View header
---------
---------
* v2.0.1 (#579) (#583)
* Build(deps): bump @splinetool/runtime from 0.9.477 to 0.9.482 (#544)
Bumps @splinetool/runtime from 0.9.477 to 0.9.482.
---
updated-dependencies:
- dependency-name: "@splinetool/runtime"
dependency-type: direct:production
update-type: version-update:semver-patch
...
* Build(deps-dev): bump @types/node from 20.7.0 to 20.8.6 (#548)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.7.0 to 20.8.6.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)
---
updated-dependencies:
- dependency-name: "@types/node"
dependency-type: direct:development
update-type: version-update:semver-minor
...
* Build(deps): bump @sentry/nextjs from 7.73.0 to 7.74.0 (#545)
Bumps [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) from 7.73.0 to 7.74.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/7.73.0...7.74.0)
---
updated-dependencies:
- dependency-name: "@sentry/nextjs"
dependency-type: direct:production
update-type: version-update:semver-minor
...
* Mp 3245 usehlsvaults hook (#541)
* ✨ routing and pages for HLS
* ✨ create hooks for fetching HLS vaults and Strategies
* Share accounts (#539)
* feat: do not redirect to wallet on portfolio page
* fix: use connected wallet for AccountMenu
* fix: fixed ghost AccountDetails
* feat: created ShareBar and share functionality
* fix: don’t show shareBar if no address is present
* fix: stupid 'next/navigation'
* tidy: format
* fix: fixed tests
* ✨ routing and pages for HLS (#538)
* 🐛 use useAccountIds
* fix: fixed the tests
* fix: accountIds is now a suspense
---------
* 🐛 fix build
---------
* Mp 2837 pre commit hook (#549)
* MP-2837: added husys and lint-staged
* MP-2837: enabled lint-staged
* MP-2837: setup .prettierignore
* MP-2837: setup .prettierignore
* MP-3483: all Depo. Caps are now % filled (#551)
* MP-3487: changed the copy of the bridging intro screen (#553)
* MP-3482: replaced Max LTV with Max. Leverage (#550)
* added hatched health masks (#552)
* added hatched health masks
* Mp 2837 pre commit hook (#549)
* MP-2837: added husys and lint-staged
* MP-2837: enabled lint-staged
* MP-2837: setup .prettierignore
* MP-2837: setup .prettierignore
* MP-3483: all Depo. Caps are now % filled (#551)
* MP-3487: changed the copy of the bridging intro screen (#553)
* MP-3482: replaced Max LTV with Max. Leverage (#550)
* sneak: change filled to used
* fix: fixed the foregroundColor on increase and my ocd
* ♻️ refactor table (Farm) (#555)
* ♻️ refactor table (Farm)
* 🧽 clean up PR
* 🧽 clean up PR
* Build(deps): bump @babel/traverse from 7.21.2 to 7.23.2 (#554)
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.21.2 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)
---
updated-dependencies:
- dependency-name: "@babel/traverse"
dependency-type: indirect
...
* fix: rename withdraw to unlend (#557)
* Full refactor tables (#556)
* 📈 Improve structure generic Table component
* ♻️ Update Borrow Table and overall structure of Table comp
* ♻️ Update Lend table
* ✨ add loading state for lend table
* 🧪 Fix unit tests
* ✨ Add available HLS Vaults page (#558)
* Table updates (#559)
* fix: adjusted table colors and hover interactions
* fix: added actionButtons back and changed lend to APY
* fix: build update
* tidy: fixed the CircularProgress indicators on the loading modals
* fix: relative import
* env: updated shuttle, keplr and version (#566)
* fix: fixed dust left when trying to buy max amount without leverage (#565)
* feat: added squidrouter to the bridges (#561)
* feat: added squidrouter to the bridges
* fix: copy update
* MP-3521: updated the APR calculation (#572)
* Table fixes (#563)
* fix: fixed the sorting of the tables
* fix: added sorting functions
* fix: farm sorting for deposit cap
* fix: fixed Row types
* Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567)
Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6.
- [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6)
---
updated-dependencies:
- dependency-name: prettier-plugin-tailwindcss
dependency-type: direct:development
update-type: version-update:semver-patch
...
* Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571)
Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom)
---
updated-dependencies:
- dependency-name: react-router-dom
dependency-type: direct:production
update-type: version-update:semver-minor
...
* ✨ HLS: Add info modal (#573)
* MP-3484: remember summaryAccount tabs and auto expand both (#574)
* User feedback (#575)
* feat: added debt indicator and adjusted the borrowModal
* fix: wallet interaction fix
* Add usdc noble (#576)
* env: added USDC.n
* env: updated usdc noble variables
* fix: fixed the pool on USDC for devnet purposes
* 🐛 Fix initial status of chart (#577)
* Mp 3480 persist last trading pair (#578)
* MP-3480: remove favourite asset and prepare localStore
* env: updated shuttle, keplr and version (#566)
* fix: fixed dust left when trying to buy max amount without leverage (#565)
* feat: added squidrouter to the bridges (#561)
* feat: added squidrouter to the bridges
* fix: copy update
* MP-3521: updated the APR calculation (#572)
* Table fixes (#563)
* fix: fixed the sorting of the tables
* fix: added sorting functions
* fix: farm sorting for deposit cap
* fix: fixed Row types
* Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567)
Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6.
- [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6)
---
updated-dependencies:
- dependency-name: prettier-plugin-tailwindcss
dependency-type: direct:development
update-type: version-update:semver-patch
...
* Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571)
Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom)
---
updated-dependencies:
- dependency-name: react-router-dom
dependency-type: direct:production
update-type: version-update:semver-minor
...
* ✨ HLS: Add info modal (#573)
* MP-3484: remember summaryAccount tabs and auto expand both (#574)
* User feedback (#575)
* feat: added debt indicator and adjusted the borrowModal
* fix: wallet interaction fix
* Add usdc noble (#576)
* env: added USDC.n
* env: updated usdc noble variables
* fix: fixed the pool on USDC for devnet purposes
* 🐛 Fix initial status of chart (#577)
* MP-3480: persist trading pair
* fix: updated according to feedback
* fix: remove pair from Trading View header
---------
---------
* fix: fixed the asset select overflow
---------
* fix: fixed the AccountDetails position
* fix: update
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Bob van der Helm <34470358+bobthebuidlr@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* fix: prevent permanent account updates by trade page (#587)
* fix: keep the selected accountId if its present int the url (#588)
* Link changelog (#589)
* env: update RPC endpoint
* feat: added changelog link to the footer version
* Refactor balances table (#590)
* env: update env.example after last sync
* tidy: refactored AccountBalancesTable
* fix: updated isCard to hideCard
* fix: do update the health on sliding the margin back to 0 (#593)
* fix: disable highlighting on non-expandable rows (#592)
* Healthfactor adjustments (#594)
* fix: do update the health on sliding the margin back to 0
* MP-3531: first updates on the health bars
* fix: added exponential function for health percentage
* fix: build fix
* tidy: refactor
* tidy: cleanup
* feat: added new curve
* fix: base set to 3.5
* env: version update
* 🌟 Add HLS Vault Modal (#595)
* 🌟 Add HLS Vault Modal
* 🛠️ Fix failing build
* fix: keep the selected accountId if its present int the url (#588)
* Link changelog (#589)
* env: update RPC endpoint
* feat: added changelog link to the footer version
* Refactor balances table (#590)
* env: update env.example after last sync
* tidy: refactored AccountBalancesTable
* fix: updated isCard to hideCard
* fix: do update the health on sliding the margin back to 0 (#593)
* fix: disable highlighting on non-expandable rows (#592)
* Healthfactor adjustments (#594)
* fix: do update the health on sliding the margin back to 0
* MP-3531: first updates on the health bars
* fix: added exponential function for health percentage
* fix: build fix
* tidy: refactor
* tidy: cleanup
* feat: added new curve
* fix: base set to 3.5
* env: version update
* 🌟 Add HLS Vault Modal
* Use `DisplayCurrency` in subtitle header
* 🔥Remove redundant component
---------
Co-authored-by: Linkie Link <linkielink.dev@gmail.com>
* fix: if HF > 1 and health === 0, return health 1 (#601)
* MP-3540: added liquidity warning (#605)
* Oracle update button (#606)
* feat: added a resync button to the header
* fix: updated the text
* fix: remove pulsing
* fix: fixed the checkbox not being clickable after select (#608)
* Mp 3360 create vault position (#607)
* 🔧 Small fixes
* ✨ Deposit into HLS Vault + Groudnwork for HLS Staking
* Adjusted according to feedback
* Adjusted according to feedback
* Build(deps-dev): bump eslint-config-next from 13.5.4 to 14.0.0 (#599)
Bumps [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next) from 13.5.4 to 14.0.0.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/commits/v14.0.0/packages/eslint-config-next)
---
updated-dependencies:
- dependency-name: eslint-config-next
dependency-type: direct:development
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Build(deps): bump recharts from 2.8.0 to 2.9.0 (#598)
Bumps [recharts](https://github.com/recharts/recharts) from 2.8.0 to 2.9.0.
- [Release notes](https://github.com/recharts/recharts/releases)
- [Changelog](https://github.com/recharts/recharts/blob/master/CHANGELOG.md)
- [Commits](https://github.com/recharts/recharts/compare/v2.8.0...v2.9.0)
---
updated-dependencies:
- dependency-name: recharts
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Build(deps-dev): bump @types/react from 18.2.28 to 18.2.33 (#596)
Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 18.2.28 to 18.2.33.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)
---
updated-dependencies:
- dependency-name: "@types/react"
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Build(deps): bump crypto-js from 4.1.1 to 4.2.0 (#591)
Bumps [crypto-js](https://github.com/brix/crypto-js) from 4.1.1 to 4.2.0.
- [Commits](https://github.com/brix/crypto-js/compare/4.1.1...4.2.0)
---
updated-dependencies:
- dependency-name: crypto-js
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Build(deps-dev): bump @types/lodash.throttle from 4.1.7 to 4.1.8 (#569)
Bumps [@types/lodash.throttle](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/lodash.throttle) from 4.1.7 to 4.1.8.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/lodash.throttle)
---
updated-dependencies:
- dependency-name: "@types/lodash.throttle"
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* fix: waiting for script to be ready (#609)
* fix: show a loading state of the trading chart (#610)
* fix: show a loading state of the trading chart
* tidy: refactor
* Feedback implementation (#611)
* env: update wallet volnurabilities
* fix: always render TradingChart container
* fix: amounts can be a fraction of MIN_AMOUNT
* feat: added clickaway handler
* tidy: refactor
* fix: size below 0.00001 is possible for BTC and WETH
* fix: fixed tests
* Mp 3367 staking interactions (#613)
* ♻️ Refactor borrowRate to be in full numbers
* ✨Enter into HLS Staking strategy
* ✨HLS Staking deposited table + Portfolio pages
* tidy: refactored the masks for HealthBar
---------
Co-authored-by: Linkie Link <linkielink.dev@gmail.com>
* ✨Added dropdown button (#614)
* ✨Add basic modal for HLS staking (#615)
* Hls staking manage actions (#622)
* ✨Add basic modal for HLS staking
* ✨UI components for Manage
* ✨All Manage actions (except change lev)
* 🐛hls intro icons + checkbox, hide repay when no debt, clickable dropdown
* fix build
* Pyth history feed (#623)
* MP-3556: first PythDataFeed class
* fix: fixed the timestamp
* fix: fixed the chart data
* fix: fixed the prices
* fix: fixed the math and decimal scale
* tidy: refactor
* fix: update the pythFeedId
* fix: updated OsmosisTheGraphDataFeed
* fix: add a fallback for non pyth data
* tidy: refactor
* fix: adjusted to feedback
* Tia and stosmo (#627)
* feat: listed TIA and stOSMO
* fix: fixed USDC
* tidy: refactor the token logos
* Hls leverage (#628)
* ✨Add basic modal for HLS staking
* ✨UI components for Manage
* ✨All Manage actions (except change lev)
* 🐛hls intro icons + checkbox, hide repay when no debt, clickable dropdown
* fix build
* ✨finish all actiosn for HLS staking
* 🐛clean up tooltip props
* tidy: updated the token logos (#629)
* tidy: updated the token logos
* feat: added dydx
* hotfix: quickfix for Trade
* fix: inverted the charts
* fix: fixed the chart description
* fix: assets
* Build(deps): bump @keplr-wallet/cosmos from 0.12.39 to 0.12.42 (#634)
Bumps @keplr-wallet/cosmos from 0.12.39 to 0.12.42.
---
updated-dependencies:
- dependency-name: "@keplr-wallet/cosmos"
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Borrow Rate to APY (#632)
* fix: changed Borrow Rate to Borrow Rate APY
* fix: regarding feedback
* Auto repay on trade (#631)
* fix: fixed the trading chart load
* fix: prevent wrapped checkboxes to be double clicked
* fix: refactored funding account modal
* fix: fixed modal classes
* fix: adjusted width classes
* fix: fixed updating states
* tidy: format
* fix: fixed the slider masks
* fix: fixed the slider masks
* listed: TIA and USDT
* fix: fixed the slider initial position
* env: version update
* fix: fixed priceFeedIds
* Hls latest (#637)
* env: enable HLS
* feat: added background and orb fading
* tidy: updated the token logos (#629)
* tidy: updated the token logos
* feat: added dydx
* fix: increase load spead of trading charts
* feat: first version of the UI shift
* Deployment for HLS testing
* ✨ add APY to HLS staking
* ✨ add APY account overview and summary
* fix: fixed the intro component visibility
* ✨ add warning messages HLS
* fix: menu order
* ✨ implement live APRs
* auto-select first account, add no balance message
* enable tabs for hls, fix net APY for deposit
* fix button for hls, sorting apy and console warnings
* disable feature flag HLS
* fix slider
* update routing
---------
Co-authored-by: Linkie Link <linkielink.dev@gmail.com>
* Build(deps): bump postcss from 8.4.23 to 8.4.31 (#624)
Bumps [postcss](https://github.com/postcss/postcss) from 8.4.23 to 8.4.31.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.4.23...8.4.31)
---
updated-dependencies:
- dependency-name: postcss
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Build(deps): bump zustand from 4.4.3 to 4.4.6 (#621)
Bumps [zustand](https://github.com/pmndrs/zustand) from 4.4.3 to 4.4.6.
- [Release notes](https://github.com/pmndrs/zustand/releases)
- [Commits](https://github.com/pmndrs/zustand/compare/v4.4.3...v4.4.6)
---
updated-dependencies:
- dependency-name: zustand
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Build(deps): bump @sentry/nextjs from 7.74.0 to 7.77.0 (#625)
Bumps [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) from 7.74.0 to 7.77.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/7.74.0...7.77.0)
---
updated-dependencies:
- dependency-name: "@sentry/nextjs"
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Build(deps-dev): bump @types/react-dom from 18.2.13 to 18.2.15 (#633)
Bumps [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom) from 18.2.13 to 18.2.15.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-dom)
---
updated-dependencies:
- dependency-name: "@types/react-dom"
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Build(deps-dev): bump eslint from 8.51.0 to 8.53.0 (#620)
Bumps [eslint](https://github.com/eslint/eslint) from 8.51.0 to 8.53.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.51.0...v8.53.0)
---
updated-dependencies:
- dependency-name: eslint
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Build(deps-dev): bump eslint-plugin-import from 2.28.1 to 2.29.0 (#617)
Bumps [eslint-plugin-import](https://github.com/import-js/eslint-plugin-import) from 2.28.1 to 2.29.0.
- [Release notes](https://github.com/import-js/eslint-plugin-import/releases)
- [Changelog](https://github.com/import-js/eslint-plugin-import/blob/main/CHANGELOG.md)
- [Commits](https://github.com/import-js/eslint-plugin-import/compare/v2.28.1...v2.29.0)
---
updated-dependencies:
- dependency-name: eslint-plugin-import
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* MP-3564: added navigation dropdown and Governance NavLink (#639)
* MP-2887: added ICNS and ICP support (#638)
* MP-2887: added ICNS and ICP support
:
* fix: removed unessecary package
* Build(deps): bump recharts from 2.9.0 to 2.10.1 (#640)
Bumps [recharts](https://github.com/recharts/recharts) from 2.9.0 to 2.10.1.
- [Release notes](https://github.com/recharts/recharts/releases)
- [Changelog](https://github.com/recharts/recharts/blob/master/CHANGELOG.md)
- [Commits](https://github.com/recharts/recharts/compare/v2.9.0...v2.10.1)
---
updated-dependencies:
- dependency-name: recharts
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Build(deps-dev): bump eslint from 8.53.0 to 8.54.0 (#641)
Bumps [eslint](https://github.com/eslint/eslint) from 8.53.0 to 8.54.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.53.0...v8.54.0)
---
updated-dependencies:
- dependency-name: eslint
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Build(deps-dev): bump @types/react-helmet from 6.1.7 to 6.1.9 (#642)
Bumps [@types/react-helmet](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-helmet) from 6.1.7 to 6.1.9.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-helmet)
---
updated-dependencies:
- dependency-name: "@types/react-helmet"
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Build(deps-dev): bump @types/lodash.debounce from 4.0.7 to 4.0.9 (#643)
Bumps [@types/lodash.debounce](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/lodash.debounce) from 4.0.7 to 4.0.9.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/lodash.debounce)
---
updated-dependencies:
- dependency-name: "@types/lodash.debounce"
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Update HC for Margin trade and HLS (#645)
* Update HC for Margin trade and HLS
* fix relative imports
* fix: added clickaway handler and fixed z-index issues (#646)
* v2.0.6 and use feature flag for auto repay (#650)
* 🐛incorrect deposit cap utilization (#647)
* Initialize perps (#648)
* setup routing
* add basic perps interface
* small fix
* feat: listed dydx and AKT (#652)
* Deposit Cap and Utilization Fix (#654)
* fix: fixed the deposit cap and total supplied / utilization rate
* fix: fixed build
* fix: fixed build
* fix: avoid deposit cap usage over 100%
* refactor market data apy/ltv
* fix: fixed the withdraw from vaults modal
* tidy: refactor
---------
Co-authored-by: Bob van der Helm <34470358+bobthebuidlr@users.noreply.github.com>
* stATOM and stOSMO TradingView support (#653)
* feat: listed dydx and AKT
* fix: removed theGraph support for now
* ✨finish adding liquidation price (#649)
* ✨finish adding liquidation price
* fix minor issues
* v2.0.6 and use feature flag for auto repay (#650)
* 🐛incorrect deposit cap utilization (#647)
* Initialize perps (#648)
* setup routing
* add basic perps interface
* small fix
* feat: listed dydx and AKT (#652)
* Deposit Cap and Utilization Fix (#654)
* fix: fixed the deposit cap and total supplied / utilization rate
* fix: fixed build
* fix: fixed build
* fix: avoid deposit cap usage over 100%
* refactor market data apy/ltv
* fix: fixed the withdraw from vaults modal
* tidy: refactor
---------
Co-authored-by: Bob van der Helm <34470358+bobthebuidlr@users.noreply.github.com>
* stATOM and stOSMO TradingView support (#653)
* feat: listed dydx and AKT
* fix: removed theGraph support for now
* adjust liq price loading and null/0 values
---------
Co-authored-by: Linkie Link <linkielink.dev@gmail.com>
* Auto Lend Switch (#660)
* refactor: moved the autolend logic to the switch
* tidy: update default value
* adjust logic of auto-lend for switch component
---------
Co-authored-by: Bob van der Helm <34470358+bobthebuidlr@users.noreply.github.com>
* temp: remove liquidation price (#661)
* Revert "temp: remove liquidation price (#661)" (#663)
This reverts commit 0cba668c82
.
* 🐛 fix liquidation price (#664)
* Hls text fixes (#667)
* 🐛 incorrect vault values calc
* 🐛 incorrect message for no balance in wallet hls
* 🐛 hls message on keep leverage
* update to correct wasm files
* update to correct wasm files
* v2.1.0 (#669)
* Repay from Wallet (#673)
* feat: added repay from wallet
* tidy: refactor
* UX/UI finetuning (#672)
* feat: added Buy/Sell token ratio to the TradingView header
* fix: changed the order in the trading view description
* feat: added minute timeframe to the chart
* fix: changed WBTC to WBTC/USD pyth price feed
* fix: adjusted HLS health curve
* fix: made HLS accounts unselectable
* copy: changed the APY range and Strategy text
* tidy: fix the tables layout to be more readable
* fix: change the precision of the Trading chart header
* feat: added summary collapsable
* fix: removed Debt Column for active HLS positions
* fix: added Memo to TVChart
* fix: adjust Trade page layout
* tidy: refactor table meta
* fix: DisplayCurrency is able to take options now
* tidy: remove unneeded typesafety
* fix: adjusted according feedback
* env: enabled autoRepay and updated version
* fix: auto-repay
* fix: disable lend on auto repay on trade
* tidy: refactor
* feat: make USDC the standard secondary asset (for trade) (#681)
* Add usePerpsMarket hook and adjust routing (#680)
* Add usePerpsMarket hook and adjust routing
* fix: enable 7 links in the header
---------
Co-authored-by: Linkie Link <linkielink.dev@gmail.com>
* Liq price in balances (#679)
* add liquidation price to balances table trade
* add depositcap to HLS
* fix: add width classes to the balances table, remove abbreviation, remove flicker
* fix: fixed the account selection and added a tooltip
* fix wasm file for debt liquidation price
---------
Co-authored-by: Linkie Link <linkielink.dev@gmail.com>
* added sharp (#682)
* env: added sharp
* fix: use dvh over vh
* add cache for asset params (#683)
* Build(deps): bump @sentry/nextjs from 7.77.0 to 7.84.0 (#677)
Bumps [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) from 7.77.0 to 7.84.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/7.77.0...7.84.0)
---
updated-dependencies:
- dependency-name: "@sentry/nextjs"
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Build(deps): bump @splinetool/runtime from 0.9.482 to 0.9.516 (#676)
Bumps @splinetool/runtime from 0.9.482 to 0.9.516.
---
updated-dependencies:
- dependency-name: "@splinetool/runtime"
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Build(deps-dev): bump @types/react from 18.2.33 to 18.2.41 (#675)
Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 18.2.33 to 18.2.41.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)
---
updated-dependencies:
- dependency-name: "@types/react"
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Build(deps): bump react-helmet-async from 1.3.0 to 2.0.3 (#674)
Bumps [react-helmet-async](https://github.com/staylor/react-helmet-async) from 1.3.0 to 2.0.3.
- [Release notes](https://github.com/staylor/react-helmet-async/releases)
- [Commits](https://github.com/staylor/react-helmet-async/commits)
---
updated-dependencies:
- dependency-name: react-helmet-async
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Build(deps): bump @adobe/css-tools from 4.3.1 to 4.3.2 (#671)
Bumps [@adobe/css-tools](https://github.com/adobe/css-tools) from 4.3.1 to 4.3.2.
- [Changelog](https://github.com/adobe/css-tools/blob/main/History.md)
- [Commits](https://github.com/adobe/css-tools/commits)
---
updated-dependencies:
- dependency-name: "@adobe/css-tools"
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Build(deps-dev): bump @types/debounce-promise from 3.1.7 to 3.1.9 (#659)
Bumps [@types/debounce-promise](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/debounce-promise) from 3.1.7 to 3.1.9.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/debounce-promise)
---
updated-dependencies:
- dependency-name: "@types/debounce-promise"
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Simple spot trading (#684)
* env: added sharp
* fix: use dvh over vh
* feat: prepared the trade view for perps and spot
* fix: adjusted heights for Trade
* feat: added Navigation submenu
* feat: added first interface itteration
* feat: added logic
* feat: added pairsList
* feat: finished Trade Spot Simple
* fix: fixed Sell button
* fix: adjusted capLeft logic and added sorting util
* fix: order of values
* fix: fixed the autoLend switch to be deselectable
* env: bump version
* fix: changes according to feedback
* fix: fixed naming
* tidy: refactor
* fix: set default stable to USDC.axl
* Build(deps): bump @splinetool/runtime from 0.9.516 to 0.9.521 (#690)
Bumps @splinetool/runtime from 0.9.516 to 0.9.521.
---
updated-dependencies:
- dependency-name: "@splinetool/runtime"
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Build(deps-dev): bump eslint-config-next from 14.0.0 to 14.0.4 (#687)
Bumps [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next) from 14.0.0 to 14.0.4.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/commits/v14.0.4/packages/eslint-config-next)
---
updated-dependencies:
- dependency-name: eslint-config-next
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Build(deps-dev): bump @types/react-helmet from 6.1.9 to 6.1.11 (#688)
Bumps [@types/react-helmet](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-helmet) from 6.1.9 to 6.1.11.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-helmet)
---
updated-dependencies:
- dependency-name: "@types/react-helmet"
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Build(deps-dev): bump lint-staged from 15.0.1 to 15.2.0 (#689)
Bumps [lint-staged](https://github.com/okonet/lint-staged) from 15.0.1 to 15.2.0.
- [Release notes](https://github.com/okonet/lint-staged/releases)
- [Changelog](https://github.com/lint-staged/lint-staged/blob/master/CHANGELOG.md)
- [Commits](https://github.com/okonet/lint-staged/compare/v15.0.1...v15.2.0)
---
updated-dependencies:
- dependency-name: lint-staged
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Bob van der Helm <34470358+bobthebuidlr@users.noreply.github.com>
This commit is contained in:
parent
dc6a2a6b16
commit
423731f65e
19
package.json
19
package.json
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "mars-v2-frontend",
|
||||
"version": "2.1.1",
|
||||
"version": "2.1.2",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"build": "yarn validate-env && next build",
|
||||
@ -25,9 +25,9 @@
|
||||
"@cosmjs/cosmwasm-stargate": "^0.31.1",
|
||||
"@delphi-labs/shuttle-react": "^3.10.0",
|
||||
"@keplr-wallet/cosmos": "^0.12.42",
|
||||
"@sentry/nextjs": "^7.77.0",
|
||||
"@sentry/nextjs": "^7.84.0",
|
||||
"@splinetool/react-spline": "^2.2.6",
|
||||
"@splinetool/runtime": "^0.9.482",
|
||||
"@splinetool/runtime": "^0.9.521",
|
||||
"@tailwindcss/container-queries": "^0.1.1",
|
||||
"@tanstack/react-table": "^8.10.6",
|
||||
"@tippyjs/react": "^4.2.6",
|
||||
@ -43,13 +43,14 @@
|
||||
"react-device-detect": "^2.2.3",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-draggable": "^4.4.6",
|
||||
"react-helmet-async": "^1.3.0",
|
||||
"react-helmet-async": "^2.0.3",
|
||||
"react-qr-code": "^2.0.12",
|
||||
"react-router-dom": "^6.17.0",
|
||||
"react-spring": "^9.7.3",
|
||||
"react-toastify": "^9.1.3",
|
||||
"react-use-clipboard": "^1.0.9",
|
||||
"recharts": "^2.10.1",
|
||||
"sharp": "^0.33.0",
|
||||
"swr": "^2.2.4",
|
||||
"tailwind-scrollbar-hide": "^1.1.7",
|
||||
"zustand": "^4.4.6"
|
||||
@ -58,25 +59,25 @@
|
||||
"@svgr/webpack": "^8.1.0",
|
||||
"@testing-library/jest-dom": "^5.17.0",
|
||||
"@testing-library/react": "^14.0.0",
|
||||
"@types/debounce-promise": "^3.1.7",
|
||||
"@types/debounce-promise": "^3.1.9",
|
||||
"@types/lodash.debounce": "^4.0.9",
|
||||
"@types/lodash.throttle": "^4.1.8",
|
||||
"@types/node": "^20.8.6",
|
||||
"@types/react": "18.2.33",
|
||||
"@types/react": "18.2.41",
|
||||
"@types/react-dom": "18.2.15",
|
||||
"@types/react-helmet": "^6.1.9",
|
||||
"@types/react-helmet": "^6.1.11",
|
||||
"autoprefixer": "^10.4.16",
|
||||
"babel-jest": "^29.7.0",
|
||||
"dotenv": "^16.3.1",
|
||||
"dotenv-cli": "^7.3.0",
|
||||
"eslint": "^8.54.0",
|
||||
"eslint-config-next": "^14.0.0",
|
||||
"eslint-config-next": "^14.0.4",
|
||||
"eslint-plugin-import": "^2.29.0",
|
||||
"husky": "^8.0.3",
|
||||
"identity-obj-proxy": "^3.0.0",
|
||||
"jest": "^29.7.0",
|
||||
"jest-environment-jsdom": "^29.7.0",
|
||||
"lint-staged": "^15.0.1",
|
||||
"lint-staged": "^15.2.0",
|
||||
"prettier": "^3.0.3",
|
||||
"prettier-plugin-tailwindcss": "^0.5.6",
|
||||
"shelljs": "^0.8.5",
|
||||
|
@ -61,3 +61,4 @@ export const allParamsCache: Cache<AssetParamsBaseForAddr[]> = new Map()
|
||||
export const underlyingDebtCache: Cache<string> = new Map()
|
||||
export const previewDepositCache: Cache<{ vaultAddress: string; amount: string }> = new Map()
|
||||
export const stakingAprCache: Cache<StakingApr[]> = new Map()
|
||||
export const assetParamsCache: Cache<AssetParamsBaseForAddr[]> = new Map()
|
||||
|
@ -1,11 +1,19 @@
|
||||
import { assetParamsCache, cacheFn } from 'api/cache'
|
||||
import { getParamsQueryClient } from 'api/cosmwasm-client'
|
||||
import { AssetParamsBaseForAddr } from 'types/generated/mars-params/MarsParams.types'
|
||||
import iterateContractQuery from 'utils/iterateContractQuery'
|
||||
|
||||
export default async function getAssetParams(): Promise<AssetParamsBaseForAddr[]> {
|
||||
try {
|
||||
const paramsQueryClient = await getParamsQueryClient()
|
||||
return iterateContractQuery(paramsQueryClient.allAssetParams)
|
||||
return await cacheFn(
|
||||
async () => {
|
||||
const paramsQueryClient = await getParamsQueryClient()
|
||||
return iterateContractQuery(paramsQueryClient.allAssetParams)
|
||||
},
|
||||
assetParamsCache,
|
||||
'assetParams',
|
||||
600,
|
||||
)
|
||||
} catch (ex) {
|
||||
throw ex
|
||||
}
|
||||
|
@ -62,7 +62,7 @@ async function getVaultPositionStatusAndUnlockIdAndUnlockTime(
|
||||
}
|
||||
}
|
||||
|
||||
function flatVaultPositionAmount(
|
||||
export function flatVaultPositionAmount(
|
||||
vaultPositionAmount: VaultPositionAmount,
|
||||
): VaultPositionFlatAmounts {
|
||||
const amounts = {
|
||||
@ -82,7 +82,7 @@ function flatVaultPositionAmount(
|
||||
return amounts
|
||||
}
|
||||
|
||||
async function getLpTokensForVaultPosition(
|
||||
export async function getLpTokensForVaultPosition(
|
||||
vault: Vault,
|
||||
vaultPosition: VaultPosition,
|
||||
): Promise<Coin[]> {
|
||||
|
@ -1,7 +1,7 @@
|
||||
import AssetRate from 'components/Asset/AssetRate'
|
||||
import { byDenom } from 'utils/array'
|
||||
|
||||
export const APY_META = { accessorKey: 'apy', header: 'APY' }
|
||||
export const APY_META = { accessorKey: 'apy', header: 'APY', meta: { className: 'w-30' } }
|
||||
|
||||
interface Props {
|
||||
apy: number
|
||||
|
@ -0,0 +1,67 @@
|
||||
import { useEffect, useMemo, useState } from 'react'
|
||||
|
||||
import DisplayCurrency from 'components/DisplayCurrency'
|
||||
import { InfoCircle } from 'components/Icons'
|
||||
import Text from 'components/Text'
|
||||
import { Tooltip } from 'components/Tooltip'
|
||||
import useLiquidationPrice from 'hooks/useLiquidationPrice'
|
||||
import { BNCoin } from 'types/classes/BNCoin'
|
||||
import { LiquidationPriceKind } from 'utils/health_computer'
|
||||
import { BN } from 'utils/helpers'
|
||||
|
||||
export const LIQ_META = {
|
||||
accessorKey: 'symbol',
|
||||
header: 'Liquidation Price',
|
||||
id: 'liqPrice',
|
||||
meta: { className: 'w-40' },
|
||||
}
|
||||
|
||||
interface Props {
|
||||
amount: number
|
||||
computeLiquidationPrice: (denom: string, kind: LiquidationPriceKind) => number | null
|
||||
denom: string
|
||||
type: 'deposits' | 'borrowing' | 'lending' | 'vault'
|
||||
account: Account
|
||||
}
|
||||
|
||||
export default function LiqPrice(props: Props) {
|
||||
const { denom, type, amount, account, computeLiquidationPrice } = props
|
||||
const [lastLiquidationPrice, setLastLiquidationPrice] = useState<number | null>(null)
|
||||
const hasDebt = account.debts.length > 0
|
||||
|
||||
const liqPrice = useMemo(() => {
|
||||
if (type === 'vault' || amount === 0) return 0
|
||||
return computeLiquidationPrice(denom, type === 'borrowing' ? 'debt' : 'asset')
|
||||
}, [amount, computeLiquidationPrice, denom, type])
|
||||
|
||||
const { liquidationPrice } = useLiquidationPrice(liqPrice)
|
||||
|
||||
useEffect(() => {
|
||||
if (lastLiquidationPrice !== liqPrice && liqPrice !== null) setLastLiquidationPrice(liqPrice)
|
||||
}, [liqPrice, lastLiquidationPrice])
|
||||
|
||||
const tooltipText = useMemo(() => {
|
||||
if (type === 'vault')
|
||||
return 'Liquidation prices cannot be calculated for farm positions. But it a drop in price of the underlying assets can still cause a liquidation.'
|
||||
if (!hasDebt) return 'Your position cannot be liquidated as you currently have no debt.'
|
||||
return 'The position size is too small to liquidate the account, even if the price goes to $0.00.'
|
||||
}, [type, hasDebt])
|
||||
|
||||
if (!lastLiquidationPrice || (liquidationPrice === 0 && lastLiquidationPrice === 0))
|
||||
return (
|
||||
<Text size='xs' className='flex items-center justify-end number'>
|
||||
N/A
|
||||
<Tooltip content={tooltipText} type='info' className='ml-1'>
|
||||
<InfoCircle className='w-3.5 h-3.5 text-white/40 hover:text-inherit' />
|
||||
</Tooltip>
|
||||
</Text>
|
||||
)
|
||||
|
||||
return (
|
||||
<DisplayCurrency
|
||||
className='text-xs text-right number'
|
||||
coin={BNCoin.fromDenomAndBigNumber('usd', BN(lastLiquidationPrice))}
|
||||
options={{ abbreviated: false }}
|
||||
/>
|
||||
)
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
import DisplayCurrency from 'components/DisplayCurrency'
|
||||
import usePrice from 'hooks/usePrice'
|
||||
import { BNCoin } from 'types/classes/BNCoin'
|
||||
import { BN } from 'utils/helpers'
|
||||
|
||||
export const PRICE_META = { id: 'price', header: 'Price', meta: { className: 'w-30' } }
|
||||
|
||||
interface Props {
|
||||
amount: number
|
||||
denom: string
|
||||
type: 'deposits' | 'borrowing' | 'lending' | 'vault'
|
||||
}
|
||||
|
||||
export default function Price(props: Props) {
|
||||
const price = usePrice(props.denom)
|
||||
|
||||
if (props.amount === 0 || props.type === 'vault') return null
|
||||
|
||||
return (
|
||||
<DisplayCurrency
|
||||
className='text-xs text-right number'
|
||||
coin={BNCoin.fromDenomAndBigNumber('usd', BN(price))}
|
||||
options={{ abbreviated: false }}
|
||||
/>
|
||||
)
|
||||
}
|
@ -6,7 +6,7 @@ import { FormattedNumber } from 'components/FormattedNumber'
|
||||
import { MAX_AMOUNT_DECIMALS, MIN_AMOUNT } from 'constants/math'
|
||||
import { formatAmountToPrecision } from 'utils/formatters'
|
||||
|
||||
export const SIZE_META = { accessorKey: 'size', header: 'Size' }
|
||||
export const SIZE_META = { accessorKey: 'size', header: 'Size', meta: { className: 'w-40' } }
|
||||
|
||||
interface Props {
|
||||
size: number
|
||||
|
@ -1,8 +1,10 @@
|
||||
import { ColumnDef } from '@tanstack/react-table'
|
||||
import { ColumnDef, Row } from '@tanstack/react-table'
|
||||
import { useMemo } from 'react'
|
||||
|
||||
import Apy, { APY_META } from 'components/Account/AccountBalancesTable/Columns/Apy'
|
||||
import Asset, { ASSET_META } from 'components/Account/AccountBalancesTable/Columns/Asset'
|
||||
import LiqPrice, { LIQ_META } from 'components/Account/AccountBalancesTable/Columns/LiqPrice'
|
||||
import Price, { PRICE_META } from 'components/Account/AccountBalancesTable/Columns/Price'
|
||||
import Size, {
|
||||
SIZE_META,
|
||||
sizeSortingFn,
|
||||
@ -11,10 +13,18 @@ import Value, {
|
||||
VALUE_META,
|
||||
valueSortingFn,
|
||||
} from 'components/Account/AccountBalancesTable/Columns/Value'
|
||||
import useHealthComputer from 'hooks/useHealthComputer'
|
||||
import useMarketAssets from 'hooks/useMarketAssets'
|
||||
import useStore from 'store'
|
||||
|
||||
export default function useAccountBalancesColumns() {
|
||||
export default function useAccountBalancesColumns(
|
||||
account: Account,
|
||||
showLiquidationPrice?: boolean,
|
||||
) {
|
||||
const { data: markets } = useMarketAssets()
|
||||
const updatedAccount = useStore((s) => s.updatedAccount)
|
||||
|
||||
const { computeLiquidationPrice } = useHealthComputer(updatedAccount ?? account)
|
||||
|
||||
return useMemo<ColumnDef<AccountBalanceRow>[]>(() => {
|
||||
return [
|
||||
@ -46,6 +56,37 @@ export default function useAccountBalancesColumns() {
|
||||
),
|
||||
sortingFn: sizeSortingFn,
|
||||
},
|
||||
...(showLiquidationPrice
|
||||
? [
|
||||
{
|
||||
...PRICE_META,
|
||||
cell: ({ row }: { row: Row<AccountBalanceRow> }) => (
|
||||
<Price
|
||||
type={row.original.type}
|
||||
amount={row.original.amount.toNumber()}
|
||||
denom={row.original.denom}
|
||||
/>
|
||||
),
|
||||
},
|
||||
]
|
||||
: []),
|
||||
...(showLiquidationPrice
|
||||
? [
|
||||
{
|
||||
...LIQ_META,
|
||||
enableSorting: false,
|
||||
cell: ({ row }: { row: Row<AccountBalanceRow> }) => (
|
||||
<LiqPrice
|
||||
denom={row.original.denom}
|
||||
computeLiquidationPrice={computeLiquidationPrice}
|
||||
type={row.original.type}
|
||||
amount={row.original.amount.toNumber()}
|
||||
account={updatedAccount ?? account}
|
||||
/>
|
||||
),
|
||||
},
|
||||
]
|
||||
: []),
|
||||
{
|
||||
...APY_META,
|
||||
cell: ({ row }) => (
|
||||
@ -58,5 +99,5 @@ export default function useAccountBalancesColumns() {
|
||||
),
|
||||
},
|
||||
]
|
||||
}, [markets])
|
||||
}, [computeLiquidationPrice, markets, showLiquidationPrice, account, updatedAccount])
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
import classNames from 'classnames'
|
||||
import { useLocation, useNavigate } from 'react-router-dom'
|
||||
import { useLocation, useNavigate, useSearchParams } from 'react-router-dom'
|
||||
|
||||
import useAccountBalancesColumns from 'components/Account/AccountBalancesTable/Columns/useAccountBalancesColumns'
|
||||
import useAccountBalanceData from 'components/Account/AccountBalancesTable/useAccountBalanceData'
|
||||
@ -19,10 +19,19 @@ interface Props {
|
||||
borrowingData: BorrowMarketTableData[]
|
||||
hideCard?: boolean
|
||||
tableBodyClassName?: string
|
||||
showLiquidationPrice?: boolean
|
||||
}
|
||||
|
||||
export default function AccountBalancesTable(props: Props) {
|
||||
const { account, lendingData, borrowingData, tableBodyClassName, hideCard } = props
|
||||
const [searchParams] = useSearchParams()
|
||||
const {
|
||||
account,
|
||||
lendingData,
|
||||
borrowingData,
|
||||
tableBodyClassName,
|
||||
hideCard,
|
||||
showLiquidationPrice,
|
||||
} = props
|
||||
const currentAccount = useCurrentAccount()
|
||||
const navigate = useNavigate()
|
||||
const { pathname } = useLocation()
|
||||
@ -36,7 +45,7 @@ export default function AccountBalancesTable(props: Props) {
|
||||
isHls: props.isHls,
|
||||
})
|
||||
|
||||
const columns = useAccountBalancesColumns()
|
||||
const columns = useAccountBalancesColumns(account, showLiquidationPrice)
|
||||
|
||||
if (accountBalanceData.length === 0)
|
||||
return (
|
||||
@ -55,7 +64,7 @@ export default function AccountBalancesTable(props: Props) {
|
||||
color='tertiary'
|
||||
onClick={() => {
|
||||
if (currentAccount?.id !== account.id) {
|
||||
navigate(getRoute(getPage(pathname), address, account.id))
|
||||
navigate(getRoute(getPage(pathname), searchParams, address, account.id))
|
||||
}
|
||||
useStore.setState({
|
||||
focusComponent: {
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { useCallback, useEffect } from 'react'
|
||||
import { useLocation, useNavigate } from 'react-router-dom'
|
||||
import { useLocation, useNavigate, useSearchParams } from 'react-router-dom'
|
||||
|
||||
import AccountFundFullPage from 'components/Account/AccountFund/AccountFundFullPage'
|
||||
import FullOverlayContent from 'components/FullOverlayContent'
|
||||
@ -14,6 +14,7 @@ export default function AccountCreateFirst() {
|
||||
const address = useStore((s) => s.address)
|
||||
const createAccount = useStore((s) => s.createAccount)
|
||||
const [isCreating, setIsCreating] = useToggle(false)
|
||||
const [searchParams] = useSearchParams()
|
||||
|
||||
useEffect(() => {
|
||||
if (!address) useStore.setState({ focusComponent: { component: <WalletSelect /> } })
|
||||
@ -24,7 +25,7 @@ export default function AccountCreateFirst() {
|
||||
const accountId = await createAccount('default')
|
||||
setIsCreating(false)
|
||||
if (accountId) {
|
||||
navigate(getRoute(getPage(pathname), address, accountId))
|
||||
navigate(getRoute(getPage(pathname), searchParams, address, accountId))
|
||||
useStore.setState({
|
||||
focusComponent: {
|
||||
component: <AccountFundFullPage />,
|
||||
@ -34,7 +35,7 @@ export default function AccountCreateFirst() {
|
||||
},
|
||||
})
|
||||
}
|
||||
}, [createAccount, navigate, pathname, address, setIsCreating])
|
||||
}, [setIsCreating, createAccount, navigate, pathname, searchParams, address])
|
||||
|
||||
return (
|
||||
<FullOverlayContent
|
||||
|
@ -1,6 +1,6 @@
|
||||
import classNames from 'classnames'
|
||||
import { useEffect } from 'react'
|
||||
import { useLocation, useNavigate } from 'react-router-dom'
|
||||
import { useLocation, useNavigate, useSearchParams } from 'react-router-dom'
|
||||
|
||||
import AccountStats from 'components/Account/AccountList/AccountStats'
|
||||
import Card from 'components/Card'
|
||||
@ -28,6 +28,7 @@ export default function AccountList(props: Props) {
|
||||
const currentAccountId = useAccountId()
|
||||
const address = useStore((s) => s.address)
|
||||
const { data: accountIds } = useAccountIds(address, true, true)
|
||||
const [searchParams] = useSearchParams()
|
||||
|
||||
useEffect(() => {
|
||||
if (!currentAccountId) return
|
||||
@ -54,7 +55,7 @@ export default function AccountList(props: Props) {
|
||||
onClick={() => {
|
||||
if (isActive) return
|
||||
useStore.setState({ accountDeleteModal: null })
|
||||
navigate(getRoute(getPage(pathname), address, accountId))
|
||||
navigate(getRoute(getPage(pathname), searchParams, address, accountId))
|
||||
}}
|
||||
title={
|
||||
<div className={accountCardHeaderClasses} role={!isActive ? 'button' : undefined}>
|
||||
|
@ -1,6 +1,6 @@
|
||||
import classNames from 'classnames'
|
||||
import { useCallback } from 'react'
|
||||
import { useLocation, useNavigate } from 'react-router-dom'
|
||||
import { useLocation, useNavigate, useSearchParams } from 'react-router-dom'
|
||||
|
||||
import AccountCreateFirst from 'components/Account/AccountCreateFirst'
|
||||
import AccountFund from 'components/Account/AccountFund/AccountFundFullPage'
|
||||
@ -33,6 +33,7 @@ export default function AccountMenuContent() {
|
||||
const address = useStore((s) => s.address)
|
||||
const { data: accountIds } = useAccountIds(address, true, true)
|
||||
const accountId = useAccountId()
|
||||
const [searchParams] = useSearchParams()
|
||||
|
||||
const createAccount = useStore((s) => s.createAccount)
|
||||
const baseCurrency = useStore((s) => s.baseCurrency)
|
||||
@ -63,7 +64,7 @@ export default function AccountMenuContent() {
|
||||
setIsCreating(false)
|
||||
|
||||
if (accountId) {
|
||||
navigate(getRoute(getPage(pathname), address, accountId))
|
||||
navigate(getRoute(getPage(pathname), searchParams, address, accountId))
|
||||
if (lendAssets) enableAutoLendAccountId(accountId)
|
||||
useStore.setState({
|
||||
focusComponent: {
|
||||
@ -80,6 +81,7 @@ export default function AccountMenuContent() {
|
||||
createAccount,
|
||||
navigate,
|
||||
pathname,
|
||||
searchParams,
|
||||
address,
|
||||
lendAssets,
|
||||
enableAutoLendAccountId,
|
||||
|
16
src/components/Asset/AssetSymbol.tsx
Normal file
16
src/components/Asset/AssetSymbol.tsx
Normal file
@ -0,0 +1,16 @@
|
||||
import Text from 'components/Text'
|
||||
|
||||
interface Props {
|
||||
symbol: string
|
||||
}
|
||||
export default function AssetSymbol(props: Props) {
|
||||
return (
|
||||
<Text
|
||||
size='xs'
|
||||
tag='span'
|
||||
className='rounded-sm bg-white/10 text-white/50 px-[6px] py-[2px] h-5'
|
||||
>
|
||||
{props.symbol}
|
||||
</Text>
|
||||
)
|
||||
}
|
59
src/components/DirectionSelect.tsx
Normal file
59
src/components/DirectionSelect.tsx
Normal file
@ -0,0 +1,59 @@
|
||||
import classNames from 'classnames'
|
||||
|
||||
import Text from 'components/Text'
|
||||
|
||||
interface Props {
|
||||
direction: OrderDirection
|
||||
onChangeDirection: (direction: OrderDirection) => void
|
||||
asset?: Asset
|
||||
}
|
||||
|
||||
export function DirectionSelect(props: Props) {
|
||||
const hasAsset = props.asset
|
||||
const directions: OrderDirection[] = hasAsset ? ['buy', 'sell'] : ['long', 'short']
|
||||
return (
|
||||
<div className='flex rounded-sm bg-black/20'>
|
||||
<Direction
|
||||
onClick={() => props.onChangeDirection(directions[0])}
|
||||
direction={directions[0]}
|
||||
isActive={props.direction === directions[0]}
|
||||
asset={props.asset}
|
||||
/>
|
||||
<Direction
|
||||
onClick={() => props.onChangeDirection(directions[1])}
|
||||
direction={directions[1]}
|
||||
isActive={props.direction === directions[1]}
|
||||
asset={props.asset}
|
||||
/>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
interface DirectionProps {
|
||||
direction: 'long' | 'short' | 'buy' | 'sell'
|
||||
isActive: boolean
|
||||
onClick: () => void
|
||||
asset?: Asset
|
||||
}
|
||||
function Direction(props: DirectionProps) {
|
||||
const classString = props.direction === 'long' || props.direction === 'buy' ? 'success' : 'error'
|
||||
return (
|
||||
<button
|
||||
className={classNames(
|
||||
'px-4 py-3 rounded-sm flex-1',
|
||||
props.isActive && 'border bg-white/10',
|
||||
`border-${classString}`,
|
||||
)}
|
||||
onClick={props.onClick}
|
||||
>
|
||||
<Text
|
||||
className={classNames(
|
||||
'text-center first-letter:uppercase',
|
||||
props.isActive ? `text-${classString}` : 'text-white/20',
|
||||
)}
|
||||
>
|
||||
{props.asset ? `${props.direction} ${props.asset.symbol}` : props.direction}
|
||||
</Text>
|
||||
</button>
|
||||
)
|
||||
}
|
@ -6,8 +6,13 @@ interface Props {
|
||||
}
|
||||
|
||||
export default function Divider(props: Props) {
|
||||
if (props.orientation === 'vertical') {
|
||||
return <div className={classNames(props.className, 'h-full w-[1px] bg-white/10')}></div>
|
||||
}
|
||||
return <div className={classNames('h-[1px] w-full bg-white/10', props.className)}></div>
|
||||
return (
|
||||
<div
|
||||
className={classNames(
|
||||
props.orientation === 'vertical' ? 'h-full w-[1px]' : 'h-[1px] w-full',
|
||||
props.className,
|
||||
'bg-white/10',
|
||||
)}
|
||||
></div>
|
||||
)
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
import classNames from 'classnames'
|
||||
import { NavLink, useParams } from 'react-router-dom'
|
||||
import { NavLink, useParams, useSearchParams } from 'react-router-dom'
|
||||
|
||||
import useAccountId from 'hooks/useAccountId'
|
||||
import { getRoute } from 'utils/route'
|
||||
@ -15,13 +15,14 @@ interface Props {
|
||||
export default function Tab(props: Props) {
|
||||
const accountId = useAccountId()
|
||||
const { address } = useParams()
|
||||
const [searchParams] = useSearchParams()
|
||||
|
||||
return (
|
||||
<div className='relative w-full'>
|
||||
{props.tabs.map((tab, index) => (
|
||||
<NavLink
|
||||
key={tab.page}
|
||||
to={getRoute(tab.page, address, accountId)}
|
||||
to={getRoute(tab.page, searchParams, address, accountId)}
|
||||
className={classNames(
|
||||
props.activeTabIdx === index ? underlineClasses : 'text-white/40',
|
||||
'relative mr-8 text-xl ',
|
||||
|
@ -15,9 +15,9 @@ export const depositCapSortingFn = (
|
||||
}
|
||||
|
||||
interface Props {
|
||||
account: HLSAccountWithStrategy
|
||||
depositCap: DepositCap
|
||||
}
|
||||
|
||||
export default function Name(props: Props) {
|
||||
return <DepositCapCell depositCap={props.account.strategy.depositCap} />
|
||||
export default function DepositCap(props: Props) {
|
||||
return <DepositCapCell depositCap={props.depositCap} />
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ import ApyRange, {
|
||||
APY_RANGE_META,
|
||||
apyRangeSortingFn,
|
||||
} from 'components/HLS/Staking/Table/Columns/ApyRange'
|
||||
import DepositCap, { CAP_META } from 'components/HLS/Staking/Table/Columns/DepositCap'
|
||||
import MaxLeverage, { MAX_LEV_META } from 'components/HLS/Staking/Table/Columns/MaxLeverage'
|
||||
import MaxLTV, { LTV_MAX_META } from 'components/HLS/Staking/Table/Columns/MaxLTV'
|
||||
import Name, { NAME_META } from 'components/HLS/Staking/Table/Columns/Name'
|
||||
@ -31,6 +32,10 @@ export default function useAvailableColumns(props: Props) {
|
||||
<MaxLTV strategy={row.original as HLSStrategy} isLoading={props.isLoading} />
|
||||
),
|
||||
},
|
||||
{
|
||||
...CAP_META,
|
||||
cell: ({ row }) => <DepositCap depositCap={row.original.depositCap} />,
|
||||
},
|
||||
{
|
||||
...APY_RANGE_META,
|
||||
cell: ({ row }) => (
|
||||
|
@ -57,7 +57,7 @@ export default function useDepositedColumns(props: Props) {
|
||||
},
|
||||
{
|
||||
...CAP_META,
|
||||
cell: ({ row }) => <DepositCap account={row.original} />,
|
||||
cell: ({ row }) => <DepositCap depositCap={row.original.strategy.depositCap} />,
|
||||
sortingFn: depositCapSortingFn,
|
||||
},
|
||||
{
|
||||
|
@ -4,18 +4,36 @@ import { isDesktop } from 'react-device-detect'
|
||||
import AccountMenu from 'components/Account/AccountMenu'
|
||||
import EscButton from 'components/Button/EscButton'
|
||||
import OracleResyncButton from 'components/Header/OracleResyncButton'
|
||||
import { Coins, CoinsSwap } from 'components/Icons'
|
||||
import DesktopNavigation from 'components/Navigation/DesktopNavigation'
|
||||
import RewardsCenter from 'components/RewardsCenter'
|
||||
import Settings from 'components/Settings'
|
||||
import Wallet from 'components/Wallet'
|
||||
import useAccountId from 'hooks/useAccountId'
|
||||
import useStore from 'store'
|
||||
import { ENABLE_HLS, ENABLE_PERPS } from 'utils/constants'
|
||||
import { WalletID } from 'types/enums/wallet'
|
||||
import { ENABLE_HLS, ENABLE_PERPS } from 'utils/constants'
|
||||
import { getGovernanceUrl } from 'utils/helpers'
|
||||
|
||||
export const menuTree = (walletId: WalletID): MenuTreeEntry[] => [
|
||||
{ pages: ['trade'], label: 'Trade' },
|
||||
{
|
||||
pages: ['trade', 'trade-advanced'],
|
||||
label: 'Trade',
|
||||
submenu: [
|
||||
{
|
||||
page: 'trade',
|
||||
label: 'Spot',
|
||||
subtitle: 'Trade assets against stables',
|
||||
icon: <Coins className='w-6 h-6' />,
|
||||
},
|
||||
{
|
||||
page: 'trade-advanced',
|
||||
label: 'Spot Advanced',
|
||||
subtitle: 'Trade any assets',
|
||||
icon: <CoinsSwap className='w-6 h-6' />,
|
||||
},
|
||||
],
|
||||
},
|
||||
...(ENABLE_PERPS ? [{ pages: ['perps'] as Page[], label: 'Perps' }] : []),
|
||||
{ pages: ['lend', 'farm'], label: 'Earn' },
|
||||
{ pages: ['borrow'], label: 'Borrow' },
|
||||
|
6
src/components/Icons/Coins.svg
Normal file
6
src/components/Icons/Coins.svg
Normal file
@ -0,0 +1,6 @@
|
||||
<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M15.9377 15.9377C19.3603 15.4795 22 12.548 22 9C22 5.13401 18.866 2 15 2C11.452 2 8.52049 4.63967 8.06227 8.06227M16 15C16 18.866 12.866 22 9 22C5.13401 22 2 18.866 2 15C2 11.134 5.13401 8 9 8C12.866 8 16 11.134 16 15Z"
|
||||
stroke="currentColor"
|
||||
/>
|
||||
</svg>
|
After Width: | Height: | Size: 346 B |
8
src/components/Icons/CoinsSwap.svg
Normal file
8
src/components/Icons/CoinsSwap.svg
Normal file
@ -0,0 +1,8 @@
|
||||
<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M6 6L8 4M8 4L6 2M8 4H6C3.79086 4 2 5.79086 2 8M18 18L16 20M16 20L18 22M16 20H18C20.2091 20 22 18.2091 22 16M10.189 6.5C10.8551 3.91216 13.2042 2 16 2C19.3137 2 22 4.68629 22 8C22 10.7957 20.0879 13.1449 17.5001 13.811M14 16C14 19.3137 11.3137 22 8 22C4.68629 22 2 19.3137 2 16C2 12.6863 4.68629 10 8 10C11.3137 10 14 12.6863 14 16Z"
|
||||
stroke="currentColor"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
/>
|
||||
</svg>
|
After Width: | Height: | Size: 514 B |
@ -15,6 +15,8 @@ export { default as ChevronLeft } from 'components/Icons/ChevronLeft.svg'
|
||||
export { default as ChevronRight } from 'components/Icons/ChevronRight.svg'
|
||||
export { default as ChevronUp } from 'components/Icons/ChevronUp.svg'
|
||||
export { default as Circle } from 'components/Icons/Circle.svg'
|
||||
export { default as Coins } from 'components/Icons/Coins.svg'
|
||||
export { default as CoinsSwap } from 'components/Icons/CoinsSwap.svg'
|
||||
export { default as Compass } from 'components/Icons/Compass.svg'
|
||||
export { default as Copy } from 'components/Icons/Copy.svg'
|
||||
export { default as Cross } from 'components/Icons/Cross.svg'
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { useCallback, useMemo } from 'react'
|
||||
import { useLocation, useNavigate, useParams } from 'react-router-dom'
|
||||
import { useLocation, useNavigate, useParams, useSearchParams } from 'react-router-dom'
|
||||
|
||||
import AssetBalanceRow from 'components/Asset/AssetBalanceRow'
|
||||
import { ArrowRight, ExclamationMarkCircled } from 'components/Icons'
|
||||
@ -30,6 +30,7 @@ function AccountDeleteModal(props: Props) {
|
||||
const { pathname } = useLocation()
|
||||
const { address } = useParams()
|
||||
const { debts, vaults, id: accountId } = modal || {}
|
||||
const [searchParams] = useSearchParams()
|
||||
|
||||
const closeDeleteAccountModal = useCallback(() => {
|
||||
useStore.setState({ accountDeleteModal: null })
|
||||
@ -38,9 +39,18 @@ function AccountDeleteModal(props: Props) {
|
||||
const deleteAccountHandler = useCallback(() => {
|
||||
const options = { accountId: modal.id, lends: modal.lends }
|
||||
deleteAccount(options)
|
||||
navigate(getRoute(getPage(pathname), address))
|
||||
navigate(getRoute(getPage(pathname), searchParams, address))
|
||||
closeDeleteAccountModal()
|
||||
}, [modal, deleteAccount, navigate, pathname, address, closeDeleteAccountModal])
|
||||
}, [
|
||||
modal.id,
|
||||
modal.lends,
|
||||
deleteAccount,
|
||||
navigate,
|
||||
pathname,
|
||||
searchParams,
|
||||
address,
|
||||
closeDeleteAccountModal,
|
||||
])
|
||||
|
||||
const depositsAndLends = useMemo(
|
||||
() => combineBNCoins([...modal.deposits, ...modal.lends]),
|
||||
@ -58,7 +68,7 @@ function AccountDeleteModal(props: Props) {
|
||||
text: 'Repay Debts',
|
||||
icon: <ArrowRight />,
|
||||
onClick: () => {
|
||||
navigate(getRoute('borrow', address, accountId))
|
||||
navigate(getRoute('borrow', searchParams, address, accountId))
|
||||
closeDeleteAccountModal()
|
||||
},
|
||||
}}
|
||||
@ -75,7 +85,7 @@ function AccountDeleteModal(props: Props) {
|
||||
text: 'Close Positions',
|
||||
icon: <ArrowRight />,
|
||||
onClick: () => {
|
||||
navigate(getRoute('farm', address, accountId))
|
||||
navigate(getRoute('farm', searchParams, address, accountId))
|
||||
closeDeleteAccountModal()
|
||||
},
|
||||
}}
|
||||
|
@ -6,28 +6,24 @@ import Button from 'components/Button'
|
||||
import { menuTree } from 'components/Header/DesktopHeader'
|
||||
import { ChevronDown, Logo } from 'components/Icons'
|
||||
import { NavLink } from 'components/Navigation/NavLink'
|
||||
import useAccountId from 'hooks/useAccountId'
|
||||
import { NavMenu } from 'components/Navigation/NavMenu'
|
||||
import useToggle from 'hooks/useToggle'
|
||||
import useStore from 'store'
|
||||
import { WalletID } from 'types/enums/wallet'
|
||||
import { getRoute } from 'utils/route'
|
||||
|
||||
export function getIsActive(pages: string[]) {
|
||||
const segments = location.pathname.split('/')
|
||||
return pages.some((page) => segments.includes(page))
|
||||
}
|
||||
|
||||
export default function DesktopNavigation() {
|
||||
const [showMenu, setShowMenu] = useToggle()
|
||||
const { recentWallet } = useShuttle()
|
||||
const walletId = (recentWallet?.providerId as WalletID) ?? WalletID.Keplr
|
||||
const address = useStore((s) => s.address)
|
||||
const accountId = useAccountId()
|
||||
|
||||
const focusComponent = useStore((s) => s.focusComponent)
|
||||
|
||||
const menu = useMemo(() => menuTree(walletId), [walletId])
|
||||
|
||||
function getIsActive(pages: string[]) {
|
||||
const segments = location.pathname.split('/')
|
||||
return pages.some((page) => segments.includes(page))
|
||||
}
|
||||
|
||||
return (
|
||||
<div
|
||||
className={classNames(
|
||||
@ -36,29 +32,29 @@ export default function DesktopNavigation() {
|
||||
: 'flex flex-1 items-center relative z-50',
|
||||
)}
|
||||
>
|
||||
<NavLink href={getRoute('trade', address, accountId)}>
|
||||
<NavLink isHome item={menu[0]}>
|
||||
<span className='block w-10 h-10'>
|
||||
<Logo className='text-white' />
|
||||
</span>
|
||||
</NavLink>
|
||||
{!focusComponent && (
|
||||
<div className='flex gap-8 px-6 @container/navigation relative flex-1'>
|
||||
{menu.map((item, index) => (
|
||||
<NavLink
|
||||
key={index}
|
||||
href={
|
||||
item.externalUrl ? item.externalUrl : getRoute(item.pages[0], address, accountId)
|
||||
}
|
||||
isActive={getIsActive(item.pages)}
|
||||
className={`@nav-${index}/navigation:inline-block hidden whitespace-nowrap`}
|
||||
target={item.externalUrl ? '_blank' : undefined}
|
||||
>
|
||||
{item.label}
|
||||
</NavLink>
|
||||
))}
|
||||
<div className='flex gap-8 px-6 h-6 @container/navigation relative flex-1'>
|
||||
{menu.map((item, index) =>
|
||||
item.submenu ? (
|
||||
<NavMenu key={index} item={item} />
|
||||
) : (
|
||||
<NavLink
|
||||
key={index}
|
||||
item={item}
|
||||
className={`@nav-${index}/navigation:inline-block hidden whitespace-nowrap`}
|
||||
>
|
||||
{item.label}
|
||||
</NavLink>
|
||||
),
|
||||
)}
|
||||
<div className={`@nav-${menu.length - 1}/navigation:hidden flex items-center relative`}>
|
||||
<Button
|
||||
leftIcon={<ChevronDown />}
|
||||
leftIcon={<ChevronDown className='w-3' />}
|
||||
color='quaternary'
|
||||
variant='transparent'
|
||||
onClick={() => setShowMenu(!showMenu)}
|
||||
@ -81,15 +77,9 @@ export default function DesktopNavigation() {
|
||||
key={index}
|
||||
>
|
||||
<NavLink
|
||||
href={
|
||||
item.externalUrl
|
||||
? item.externalUrl
|
||||
: getRoute(item.pages[0], address, accountId)
|
||||
}
|
||||
item={item}
|
||||
onClick={() => setShowMenu(false)}
|
||||
isActive={getIsActive(item.pages)}
|
||||
className='w-full px-4 whitespace-nowrap'
|
||||
target={item.externalUrl ? '_blank' : undefined}
|
||||
>
|
||||
{item.label}
|
||||
</NavLink>
|
||||
|
@ -1,27 +1,41 @@
|
||||
import classNames from 'classnames'
|
||||
import { ReactNode } from 'react'
|
||||
import { NavLink as Link } from 'react-router-dom'
|
||||
import { NavLink as Link, useSearchParams } from 'react-router-dom'
|
||||
|
||||
import { getIsActive } from 'components/Navigation/DesktopNavigation'
|
||||
import useAccountId from 'hooks/useAccountId'
|
||||
import useStore from 'store'
|
||||
import { getRoute } from 'utils/route'
|
||||
|
||||
interface Props {
|
||||
href: string
|
||||
children: string | ReactNode
|
||||
isActive?: boolean
|
||||
item: MenuTreeEntry
|
||||
isHome?: boolean
|
||||
className?: string
|
||||
onClick?: () => void
|
||||
target?: string
|
||||
}
|
||||
|
||||
export const NavLink = (props: Props) => {
|
||||
const [searchParams] = useSearchParams()
|
||||
const address = useStore((s) => s.address)
|
||||
const { isHome, item, className, onClick } = props
|
||||
const accountId = useAccountId()
|
||||
|
||||
const itemLink = item.externalUrl
|
||||
? item.externalUrl
|
||||
: getRoute(item.pages[0], searchParams, address, accountId)
|
||||
const link = isHome ? getRoute('trade', searchParams, address, accountId) : itemLink
|
||||
|
||||
return (
|
||||
<Link
|
||||
to={props.href}
|
||||
onClick={props.onClick ? props.onClick : undefined}
|
||||
to={link}
|
||||
onClick={onClick ? onClick : undefined}
|
||||
className={classNames(
|
||||
props.className,
|
||||
className,
|
||||
'font-semibold hover:text-white active:text-white',
|
||||
props.isActive ? 'pointer-events-none text-white' : 'text-white/60',
|
||||
getIsActive(item.pages) ? 'pointer-events-none text-white' : 'text-white/60',
|
||||
)}
|
||||
target={props.target}
|
||||
target={item.externalUrl ? '_blank' : undefined}
|
||||
>
|
||||
{props.children}
|
||||
</Link>
|
||||
|
80
src/components/Navigation/NavMenu.tsx
Normal file
80
src/components/Navigation/NavMenu.tsx
Normal file
@ -0,0 +1,80 @@
|
||||
import classNames from 'classnames'
|
||||
|
||||
import Button from 'components/Button'
|
||||
import Divider from 'components/Divider'
|
||||
import { ChevronDown } from 'components/Icons'
|
||||
import { NavLink } from 'components/Navigation//NavLink'
|
||||
import { getIsActive } from 'components/Navigation/DesktopNavigation'
|
||||
import Text from 'components/Text'
|
||||
import useToggle from 'hooks/useToggle'
|
||||
|
||||
interface Props {
|
||||
item: MenuTreeEntry
|
||||
}
|
||||
|
||||
export const NavMenu = (props: Props) => {
|
||||
const { item } = props
|
||||
const [showMenu, setShowMenu] = useToggle()
|
||||
|
||||
if (!item.submenu) return null
|
||||
|
||||
return (
|
||||
<div className='relative flex items-center'>
|
||||
<Button
|
||||
rightIcon={<ChevronDown className='w-3' />}
|
||||
color='quaternary'
|
||||
variant='transparent'
|
||||
onClick={() => setShowMenu(!showMenu)}
|
||||
text={item.label}
|
||||
className={classNames(
|
||||
'!text-base !p-0 !min-h-0',
|
||||
(getIsActive(item.pages) || showMenu) && '!text-white',
|
||||
)}
|
||||
/>
|
||||
{showMenu && (
|
||||
<>
|
||||
<div className='absolute left-0 top-[calc(100%+4px)] z-50'>
|
||||
<ul
|
||||
className={classNames(
|
||||
'py-4 list-none flex flex-wrap gap-2 bg-white/10 backdrop-blur-lg',
|
||||
'relative isolate max-w-full overflow-hidden rounded-sm',
|
||||
'before:content-[" "] before:absolute before:inset-0 before:-z-1 before:rounded-sm before:p-[1px] before:border-glas',
|
||||
)}
|
||||
>
|
||||
{item.submenu.map((submenuitem, index) => (
|
||||
<li className='w-full m-0 group/submenuitem' key={index}>
|
||||
{index !== 0 && <Divider className='mb-2' />}
|
||||
<NavLink
|
||||
item={{ pages: [submenuitem.page], label: submenuitem.label }}
|
||||
onClick={() => setShowMenu(false)}
|
||||
className='flex items-center w-full gap-4 px-4 whitespace-nowrap'
|
||||
>
|
||||
{submenuitem.icon && <div className='w-6'>{submenuitem.icon}</div>}
|
||||
<Text className='flex flex-wrap'>
|
||||
{submenuitem.label}
|
||||
{submenuitem.subtitle && (
|
||||
<span
|
||||
className={classNames(
|
||||
'w-full text-sm group-hover/submenuitem:text-white',
|
||||
getIsActive([submenuitem.page]) ? 'text-white' : 'text-white/40',
|
||||
)}
|
||||
>
|
||||
{submenuitem.subtitle}
|
||||
</span>
|
||||
)}
|
||||
</Text>
|
||||
</NavLink>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
<div
|
||||
className='fixed -top-6 -left-[55px] z-40 w-screen h-screen hover:cursor-pointer'
|
||||
onClick={() => setShowMenu(false)}
|
||||
role='button'
|
||||
/>
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
)
|
||||
}
|
@ -2,10 +2,10 @@ import { useState } from 'react'
|
||||
|
||||
import Button from 'components/Button'
|
||||
import Card from 'components/Card'
|
||||
import { DirectionSelect } from 'components/DirectionSelect'
|
||||
import { ChevronDown } from 'components/Icons'
|
||||
import { LeverageButtons } from 'components/Perps/Module/LeverageButtons'
|
||||
import { Or } from 'components/Perps/Module/Or'
|
||||
import { SelectLongShort } from 'components/Perps/Module/SelectLongShort'
|
||||
import RangeInput from 'components/RangeInput'
|
||||
import { Spacer } from 'components/Spacer'
|
||||
import Text from 'components/Text'
|
||||
@ -23,7 +23,7 @@ export function PerpsModule() {
|
||||
<Card
|
||||
contentClassName='px-4 gap-5 flex flex-col'
|
||||
title={
|
||||
<div className='flex justify-between bg-white/10 py-4 pl-4 pr-2 items-center'>
|
||||
<div className='flex items-center justify-between py-4 pl-4 pr-2 bg-white/10'>
|
||||
<Text>
|
||||
ETH<span className='text-white/60'>/USD</span>
|
||||
</Text>
|
||||
@ -35,7 +35,7 @@ export function PerpsModule() {
|
||||
className='mb-4'
|
||||
>
|
||||
<OrderTypeSelector selected={selectedOrderType} onChange={setSelectedOrderType} />
|
||||
<SelectLongShort
|
||||
<DirectionSelect
|
||||
direction={selectedOrderDirection}
|
||||
onChangeDirection={setSelectedOrderDirection}
|
||||
/>
|
||||
|
@ -1,62 +0,0 @@
|
||||
import classNames from 'classnames'
|
||||
|
||||
import Text from 'components/Text'
|
||||
|
||||
interface Props {
|
||||
direction: OrderDirection
|
||||
onChangeDirection: (direction: OrderDirection) => void
|
||||
}
|
||||
|
||||
export function SelectLongShort(props: Props) {
|
||||
return (
|
||||
<div className='flex bg-black/20 rounded-sm'>
|
||||
<Direction
|
||||
onClick={() => props.onChangeDirection('long')}
|
||||
direction='long'
|
||||
isActive={props.direction === 'long'}
|
||||
/>
|
||||
<Direction
|
||||
onClick={() => props.onChangeDirection('short')}
|
||||
direction='short'
|
||||
isActive={props.direction === 'short'}
|
||||
/>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
interface DirectionProps {
|
||||
direction: 'long' | 'short'
|
||||
isActive: boolean
|
||||
onClick: () => void
|
||||
}
|
||||
function Direction(props: DirectionProps) {
|
||||
return (
|
||||
<button
|
||||
className={classNames(
|
||||
'px-4 py-3 rounded-sm flex-1',
|
||||
borderColors[props.direction],
|
||||
props.isActive && 'border bg-white/10',
|
||||
)}
|
||||
onClick={props.onClick}
|
||||
>
|
||||
<Text
|
||||
className={classNames(
|
||||
'text-center capitalize',
|
||||
props.isActive ? directionColors[props.direction] : 'text-white/20',
|
||||
)}
|
||||
>
|
||||
{props.direction}
|
||||
</Text>
|
||||
</button>
|
||||
)
|
||||
}
|
||||
|
||||
const directionColors = {
|
||||
long: 'text-success',
|
||||
short: 'text-error',
|
||||
}
|
||||
|
||||
const borderColors = {
|
||||
long: 'border-success',
|
||||
short: 'border-error',
|
||||
}
|
@ -1,19 +1,52 @@
|
||||
import React, { useMemo } from 'react'
|
||||
|
||||
import AssetSymbol from 'components/Asset/AssetSymbol'
|
||||
import Card from 'components/Card'
|
||||
import DisplayCurrency from 'components/DisplayCurrency'
|
||||
import Divider from 'components/Divider'
|
||||
import { FormattedNumber } from 'components/FormattedNumber'
|
||||
import Loading from 'components/Loading'
|
||||
import Text from 'components/Text'
|
||||
import usePerpsMarket from 'hooks/perps/usePerpsMarket'
|
||||
import usePrice from 'hooks/usePrice'
|
||||
import { BNCoin } from 'types/classes/BNCoin'
|
||||
|
||||
export function PerpsInfo() {
|
||||
const { data: market } = usePerpsMarket()
|
||||
const assetPrice = usePrice(market?.asset.denom || '')
|
||||
|
||||
const items = useMemo(
|
||||
() => [
|
||||
<Text key='item1'>$6,735</Text>,
|
||||
<InfoItem key='item2' label='Label' item={<Text size='sm'>Value</Text>} />,
|
||||
<InfoItem key='item3' label='Label' item={<Text size='sm'>Value</Text>} />,
|
||||
<InfoItem key='item4' label='Label' item={<Text size='sm'>Value</Text>} />,
|
||||
<InfoItem key='item5' label='Label' item={<Text size='sm'>Value</Text>} />,
|
||||
...(!assetPrice.isZero()
|
||||
? [<DisplayCurrency key='price' coin={BNCoin.fromDenomAndBigNumber('usd', assetPrice)} />]
|
||||
: [<Loading key='price' className='w-14 h-4' />]),
|
||||
<InfoItem
|
||||
key='openInterestLong'
|
||||
label='Open Interest (L)'
|
||||
item={<InterestItem market={market} type='long' />}
|
||||
/>,
|
||||
<InfoItem
|
||||
key='openInterestShort'
|
||||
label='Open Interest (S)'
|
||||
item={<InterestItem market={market} type='short' />}
|
||||
/>,
|
||||
<InfoItem
|
||||
key='fundingRate'
|
||||
label='Funding rate'
|
||||
item={
|
||||
market ? (
|
||||
<FormattedNumber
|
||||
className='text-sm inline'
|
||||
amount={market.fundingRate.toNumber()}
|
||||
options={{ minDecimals: 6, maxDecimals: 6, suffix: '%' }}
|
||||
/>
|
||||
) : (
|
||||
<Loading />
|
||||
)
|
||||
}
|
||||
/>,
|
||||
],
|
||||
[],
|
||||
[assetPrice, market],
|
||||
)
|
||||
|
||||
return (
|
||||
@ -45,3 +78,22 @@ function InfoItem(props: InfoItemProps) {
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
interface InterestItemProps {
|
||||
market: PerpsMarket | null
|
||||
type: 'long' | 'short'
|
||||
}
|
||||
function InterestItem(props: InterestItemProps) {
|
||||
if (!props.market) return <Loading />
|
||||
|
||||
return (
|
||||
<div className='flex gap-1 items-center'>
|
||||
<FormattedNumber
|
||||
className='text-sm inline'
|
||||
amount={props.market.openInterest[props.type].toNumber()}
|
||||
options={{ decimals: props.market.asset.decimals }}
|
||||
/>
|
||||
<AssetSymbol symbol={props.market.asset.symbol} />
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
@ -29,6 +29,7 @@ function Content(props: Props) {
|
||||
account={account}
|
||||
borrowingData={borrowAssets}
|
||||
lendingData={lendingAssets}
|
||||
showLiquidationPrice
|
||||
hideCard
|
||||
/>
|
||||
</Skeleton>
|
||||
@ -55,7 +56,10 @@ function Skeleton(props: SkeletonProps) {
|
||||
{props.children ? (
|
||||
props.children
|
||||
) : (
|
||||
<TableSkeleton labels={['Asset', 'Value', 'Size', 'APY']} rowCount={3} />
|
||||
<TableSkeleton
|
||||
labels={['Asset', 'Value', 'Size', 'Price', 'Liquidation Price', 'APY']}
|
||||
rowCount={3}
|
||||
/>
|
||||
)}
|
||||
</Card>
|
||||
</div>
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { NavLink, useParams } from 'react-router-dom'
|
||||
import { NavLink, useParams, useSearchParams } from 'react-router-dom'
|
||||
|
||||
import { ArrowRight } from 'components/Icons'
|
||||
import Text from 'components/Text'
|
||||
@ -12,10 +12,11 @@ interface Props {
|
||||
export default function PortfolioAccountPageHeader(props: Props) {
|
||||
const { address } = useParams()
|
||||
const selectedAccountId = useAccountId()
|
||||
const [searchParams] = useSearchParams()
|
||||
|
||||
return (
|
||||
<div className='flex items-center w-full gap-2 pt-2 pb-6 border-b border-white/20'>
|
||||
<NavLink to={getRoute('portfolio', address, selectedAccountId)}>
|
||||
<NavLink to={getRoute('portfolio', searchParams, address, selectedAccountId)}>
|
||||
<Text className='text-white/40'>Portfolio</Text>
|
||||
</NavLink>
|
||||
<ArrowRight className='h-3 text-white/60 ' />
|
||||
|
@ -1,6 +1,6 @@
|
||||
import classNames from 'classnames'
|
||||
import { ReactNode, useMemo } from 'react'
|
||||
import { NavLink, useParams } from 'react-router-dom'
|
||||
import { NavLink, useParams, useSearchParams } from 'react-router-dom'
|
||||
|
||||
import { FormattedNumber } from 'components/FormattedNumber'
|
||||
import Loading from 'components/Loading'
|
||||
@ -36,6 +36,7 @@ export default function PortfolioCard(props: Props) {
|
||||
const { allAssets: lendingAssets } = useLendingMarketAssetsTableData()
|
||||
const { data } = useBorrowMarketAssetsTableData(false)
|
||||
const { data: hlsStrategies } = useHLSStakingAssets()
|
||||
const [searchParams] = useSearchParams()
|
||||
|
||||
const borrowAssets = useMemo(() => data?.allAssets || [], [data])
|
||||
const [reduceMotion] = useLocalStorage<boolean>(
|
||||
@ -111,7 +112,12 @@ export default function PortfolioCard(props: Props) {
|
||||
|
||||
return (
|
||||
<NavLink
|
||||
to={getRoute(`portfolio/${props.accountId}` as Page, urlAddress, currentAccountId)}
|
||||
to={getRoute(
|
||||
`portfolio/${props.accountId}` as Page,
|
||||
searchParams,
|
||||
urlAddress,
|
||||
currentAccountId,
|
||||
)}
|
||||
className={classNames('w-full hover:bg-white/5', !reduceMotion && 'transition-all')}
|
||||
>
|
||||
<Skeleton
|
||||
|
@ -11,8 +11,7 @@ import PerpsPage from 'pages/PerpsPage'
|
||||
import PortfolioAccountPage from 'pages/PortfolioAccountPage'
|
||||
import PortfolioPage from 'pages/PortfolioPage'
|
||||
import TradePage from 'pages/TradePage'
|
||||
import { ENABLE_PERPS } from 'utils/constants'
|
||||
import { ENABLE_HLS } from 'utils/constants'
|
||||
import { ENABLE_HLS, ENABLE_PERPS } from 'utils/constants'
|
||||
|
||||
export default function Routes() {
|
||||
return (
|
||||
@ -25,6 +24,7 @@ export default function Routes() {
|
||||
}
|
||||
>
|
||||
<Route path='/trade' element={<TradePage />} />
|
||||
<Route path='/trade-advanced' element={<TradePage />} />
|
||||
{ENABLE_PERPS && <Route path='/perps' element={<PerpsPage />} />}
|
||||
<Route path='/farm' element={<FarmPage />} />
|
||||
<Route path='/lend' element={<LendPage />} />
|
||||
@ -36,6 +36,7 @@ export default function Routes() {
|
||||
<Route path='/' element={<TradePage />} />
|
||||
<Route path='/wallets/:address'>
|
||||
<Route path='trade' element={<TradePage />} />
|
||||
<Route path='trade-advanced' element={<TradePage />} />
|
||||
{ENABLE_PERPS && <Route path='perps' element={<PerpsPage />} />}
|
||||
<Route path='farm' element={<FarmPage />} />
|
||||
<Route path='lend' element={<LendPage />} />
|
||||
|
@ -27,15 +27,12 @@ export default function SwitchAutoLend(props: Props) {
|
||||
return
|
||||
}
|
||||
|
||||
if (isAutoLendEnabled) {
|
||||
setIsAutoLendEnabled(false)
|
||||
disableAutoLend(accountId)
|
||||
}
|
||||
setIsAutoLendEnabled(false)
|
||||
disableAutoLend(accountId)
|
||||
}, [
|
||||
accountId,
|
||||
disableAutoLend,
|
||||
enableAutoLend,
|
||||
isAutoLendEnabled,
|
||||
isAutoLendEnabledForAccount,
|
||||
setIsAutoLendEnabled,
|
||||
])
|
||||
|
@ -18,11 +18,14 @@ export default function AccountDetailsCard() {
|
||||
|
||||
if (account)
|
||||
return (
|
||||
<AccountBalancesTable
|
||||
account={account}
|
||||
borrowingData={borrowAssetsData}
|
||||
lendingData={lendingAssetsData}
|
||||
tableBodyClassName='gradient-card-content'
|
||||
/>
|
||||
<div className='w-full'>
|
||||
<AccountBalancesTable
|
||||
account={account}
|
||||
borrowingData={borrowAssetsData}
|
||||
lendingData={lendingAssetsData}
|
||||
tableBodyClassName='gradient-card-content'
|
||||
showLiquidationPrice
|
||||
/>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
@ -5,8 +5,8 @@ import DisplayCurrency from 'components/DisplayCurrency'
|
||||
import { FormattedNumber } from 'components/FormattedNumber'
|
||||
import Loading from 'components/Loading'
|
||||
import Text from 'components/Text'
|
||||
import { DataFeed, PAIR_SEPARATOR } from 'components/Trade/TradeChart/DataFeed'
|
||||
import { disabledFeatures, enabledFeatures, overrides } from 'components/Trade/TradeChart/constants'
|
||||
import { DataFeed, PAIR_SEPARATOR } from 'components/Trade/TradeChart/DataFeed'
|
||||
import { BN_ZERO } from 'constants/math'
|
||||
import usePrices from 'hooks/usePrices'
|
||||
import useStore from 'store'
|
||||
@ -156,7 +156,7 @@ export const TVChartContainer = (props: Props) => {
|
||||
</div>
|
||||
}
|
||||
contentClassName='px-0.5 pb-0.5 h-full'
|
||||
className='min-h-[55vh]'
|
||||
className='h-[70dvh] max-h-[980px] min-h-[560px]'
|
||||
>
|
||||
<div ref={chartContainerRef} className='h-full overflow-hidden rounded-b-base' />
|
||||
</Card>
|
||||
|
@ -45,7 +45,7 @@ export default function TradeChart(props: Props) {
|
||||
</div>
|
||||
}
|
||||
contentClassName='px-0.5 pb-0.5 h-full'
|
||||
className='min-h-[55vh]'
|
||||
className='h-[70dvh] max-h-[980px] min-h-[560px]'
|
||||
>
|
||||
<div className='flex items-center justify-center w-full h-full rounded-b-base bg-chart'>
|
||||
<CircularProgress size={60} className='opacity-50' />
|
||||
|
@ -1,4 +1,7 @@
|
||||
import { useMemo } from 'react'
|
||||
|
||||
import AssetImage from 'components/Asset/AssetImage'
|
||||
import AssetSymbol from 'components/Asset/AssetSymbol'
|
||||
import DisplayCurrency from 'components/DisplayCurrency'
|
||||
import { FormattedNumber } from 'components/FormattedNumber'
|
||||
import { StarFilled, StarOutlined } from 'components/Icons'
|
||||
@ -37,6 +40,13 @@ export default function AssetItem(props: Props) {
|
||||
setFavoriteAssetsDenoms(favoriteAssetsDenoms.filter((item: string) => item !== asset.denom))
|
||||
}
|
||||
|
||||
const capLeft = useMemo(() => {
|
||||
if (!props.depositCap) return 0
|
||||
const percent = props.depositCap.used.dividedBy(props.depositCap.max).multipliedBy(100)
|
||||
const depositCapLeft = 100 - Math.min(percent.toNumber(), 100)
|
||||
return depositCapLeft
|
||||
}, [props.depositCap])
|
||||
|
||||
return (
|
||||
<li className='border-b border-white/10 hover:bg-black/10'>
|
||||
<button
|
||||
@ -53,9 +63,7 @@ export default function AssetItem(props: Props) {
|
||||
<Text size='sm' className='h-5 leading-5 text-left truncate '>
|
||||
{asset.name}
|
||||
</Text>
|
||||
<div className='rounded-sm bg-white/20 px-[6px] py-[2px] h-5 leading-5 '>
|
||||
<Text size='xs'>{asset.symbol}</Text>
|
||||
</div>
|
||||
<AssetSymbol symbol={asset.symbol} />
|
||||
</div>
|
||||
{props.balances.length > 0 && (
|
||||
<div className='flex gap-1'>
|
||||
@ -81,12 +89,16 @@ export default function AssetItem(props: Props) {
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
{props.depositCap && (
|
||||
{props.depositCap && capLeft <= 15 && (
|
||||
<div className='flex gap-1'>
|
||||
<span className='text-xs text-left text-white/60'>Cap Left: </span>
|
||||
<DisplayCurrency
|
||||
className='text-xs text-left text-white/60'
|
||||
coin={BNCoin.fromDenomAndBigNumber(props.depositCap.denom, props.depositCap.max)}
|
||||
className='text-xs text-left text-info/60'
|
||||
coin={BNCoin.fromDenomAndBigNumber(
|
||||
props.depositCap.denom,
|
||||
props.depositCap.max.minus(props.depositCap.used),
|
||||
)}
|
||||
options={{ suffix: ` (${capLeft.toFixed(2)}%)` }}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
|
@ -3,54 +3,67 @@ import { useMemo } from 'react'
|
||||
|
||||
import { ChevronDown } from 'components/Icons'
|
||||
import Text from 'components/Text'
|
||||
import AssetItem from 'components/Trade/TradeModule/AssetSelector/AssetItem'
|
||||
import { ASSETS } from 'constants/assets'
|
||||
import useCurrentAccount from 'hooks/useCurrentAccount'
|
||||
import useMarketAssets from 'hooks/useMarketAssets'
|
||||
import useMarketDeposits from 'hooks/useMarketDeposits'
|
||||
import usePrices from 'hooks/usePrices'
|
||||
import { getMergedBalancesForAsset } from 'utils/accounts'
|
||||
import { byDenom } from 'utils/array'
|
||||
import { getEnabledMarketAssets } from 'utils/assets'
|
||||
import { getEnabledMarketAssets, sortAssetsOrPairs } from 'utils/assets'
|
||||
import AssetSelectorItem from 'components/Trade/TradeModule/AssetSelector/AssetSelectorItem'
|
||||
|
||||
interface Props {
|
||||
type: 'buy' | 'sell'
|
||||
assets: Asset[]
|
||||
isOpen: boolean
|
||||
toggleOpen: () => void
|
||||
onChangeAsset: (asset: Asset) => void
|
||||
onChangeAsset: (asset: Asset | AssetPair) => void
|
||||
}
|
||||
|
||||
const baseDenom = ASSETS[0].denom
|
||||
|
||||
export default function AssetList(props: Props) {
|
||||
const { assets, type, isOpen, toggleOpen, onChangeAsset } = props
|
||||
const account = useCurrentAccount()
|
||||
const { data: marketAssets } = useMarketAssets()
|
||||
const { data: marketDeposits } = useMarketDeposits()
|
||||
const { data: prices } = usePrices()
|
||||
const balances = useMemo(() => {
|
||||
if (!account) return []
|
||||
return getMergedBalancesForAsset(account, getEnabledMarketAssets())
|
||||
}, [account])
|
||||
|
||||
const sortedAssets = useMemo(
|
||||
() => sortAssetsOrPairs(assets, prices, marketDeposits, balances, baseDenom) as Asset[],
|
||||
[balances, prices, assets, marketDeposits],
|
||||
)
|
||||
|
||||
return (
|
||||
<section>
|
||||
<button
|
||||
className='flex items-center justify-between w-full p-4 bg-black/20'
|
||||
onClick={props.toggleOpen}
|
||||
onClick={toggleOpen}
|
||||
>
|
||||
<Text>{props.type === 'buy' ? 'Buy asset' : 'Sell asset'}</Text>
|
||||
<ChevronDown className={classNames(props.isOpen && '-rotate-180', 'w-4')} />
|
||||
<Text>{type === 'buy' ? 'Buy asset' : 'Sell asset'}</Text>
|
||||
<ChevronDown className={classNames(isOpen && '-rotate-180', 'w-4')} />
|
||||
</button>
|
||||
{props.isOpen &&
|
||||
(props.assets.length === 0 ? (
|
||||
{isOpen &&
|
||||
(sortedAssets.length === 0 ? (
|
||||
<Text size='xs' className='p-4'>
|
||||
No available assets found
|
||||
</Text>
|
||||
) : (
|
||||
<ul>
|
||||
{props.assets.map((asset) => (
|
||||
<AssetItem
|
||||
{sortedAssets.map((asset) => (
|
||||
<AssetSelectorItem
|
||||
balances={balances}
|
||||
key={`${props.type}-${asset.symbol}`}
|
||||
asset={asset}
|
||||
onSelectAsset={props.onChangeAsset}
|
||||
key={`${type}-${asset.symbol}`}
|
||||
onSelect={props.onChangeAsset}
|
||||
depositCap={
|
||||
props.type === 'buy' ? marketAssets?.find(byDenom(asset.denom))?.cap : undefined
|
||||
type === 'buy' ? marketAssets?.find(byDenom(asset.denom))?.cap : undefined
|
||||
}
|
||||
asset={asset}
|
||||
/>
|
||||
))}
|
||||
</ul>
|
||||
|
@ -1,34 +1,77 @@
|
||||
import { useCallback, useMemo } from 'react'
|
||||
import { useCallback, useMemo, useState } from 'react'
|
||||
|
||||
import Button from 'components/Button'
|
||||
import EscButton from 'components/Button/EscButton'
|
||||
import Divider from 'components/Divider'
|
||||
import Overlay from 'components/Overlay'
|
||||
import SearchBar from 'components/SearchBar'
|
||||
import Text from 'components/Text'
|
||||
import AssetList from 'components/Trade/TradeModule/AssetSelector/AssetList'
|
||||
import PairsList from 'components/Trade/TradeModule/AssetSelector/PairsList'
|
||||
import useFilteredAssets from 'hooks/useFilteredAssets'
|
||||
import { getAllAssets } from 'utils/assets'
|
||||
|
||||
interface Props {
|
||||
state: OverlayState
|
||||
buyAsset: Asset
|
||||
sellAsset: Asset
|
||||
onChangeBuyAsset: (asset: Asset) => void
|
||||
onChangeSellAsset: (asset: Asset) => void
|
||||
onChangeBuyAsset?: (asset: Asset) => void
|
||||
onChangeSellAsset?: (asset: Asset) => void
|
||||
onChangeTradingPair?: (tradingPair: TradingPair) => void
|
||||
onChangeState: (state: OverlayState) => void
|
||||
}
|
||||
|
||||
export default function AssetOverlay(props: Props) {
|
||||
const { assets, searchString, onChangeSearch } = useFilteredAssets()
|
||||
const handleClose = useCallback(() => props.onChangeState('closed'), [props])
|
||||
interface StablesFilterProps {
|
||||
stables: Asset[]
|
||||
selectedStables: Asset[]
|
||||
onFilter: (stables: Asset[]) => void
|
||||
}
|
||||
|
||||
const handleToggle = useCallback(
|
||||
() => props.onChangeState(props.state === 'buy' ? 'sell' : 'buy'),
|
||||
[props],
|
||||
function StablesFilter(props: StablesFilterProps) {
|
||||
const { stables, selectedStables, onFilter } = props
|
||||
const isAllSelected = selectedStables.length > 1
|
||||
return (
|
||||
<>
|
||||
<Divider />
|
||||
<div className='flex items-center w-full py-2 justify-evenly'>
|
||||
<Button
|
||||
onClick={() => onFilter(stables)}
|
||||
text='All'
|
||||
color={isAllSelected ? 'secondary' : 'quaternary'}
|
||||
variant='transparent'
|
||||
className={isAllSelected ? '!text-white !bg-white/10 border-white' : ''}
|
||||
/>
|
||||
{stables.map((stable) => {
|
||||
const isCurrent = !isAllSelected && selectedStables[0].denom === stable.denom
|
||||
return (
|
||||
<Button
|
||||
key={stable.symbol}
|
||||
onClick={() => onFilter([stable])}
|
||||
text={stable.symbol}
|
||||
color={isCurrent ? 'secondary' : 'quaternary'}
|
||||
variant='transparent'
|
||||
className={isCurrent ? '!text-white !bg-white/10 border-white' : ''}
|
||||
/>
|
||||
)
|
||||
})}
|
||||
</div>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
export default function AssetOverlay(props: Props) {
|
||||
const isPairSelector = !!props.onChangeTradingPair
|
||||
const { assets, searchString, onChangeSearch } = useFilteredAssets()
|
||||
const allAssets = getAllAssets()
|
||||
const stableAssets = useMemo(() => allAssets.filter((asset) => asset.isStable), [allAssets])
|
||||
const handleClose = useCallback(() => props.onChangeState('closed'), [props])
|
||||
const handleToggle = useCallback(() => props.onChangeState(props.state), [props])
|
||||
const [selectedStables, setSelectedStables] = useState<Asset[]>([stableAssets[0]])
|
||||
|
||||
const buyAssets = useMemo(
|
||||
() => assets.filter((asset) => asset.denom !== props.sellAsset.denom),
|
||||
[assets, props.sellAsset],
|
||||
() =>
|
||||
isPairSelector ? assets : assets.filter((asset) => asset.denom !== props.sellAsset.denom),
|
||||
[assets, props.sellAsset, isPairSelector],
|
||||
)
|
||||
|
||||
const sellAssets = useMemo(
|
||||
@ -36,14 +79,26 @@ export default function AssetOverlay(props: Props) {
|
||||
[assets, props.buyAsset],
|
||||
)
|
||||
|
||||
function onChangeBuyAsset(asset: Asset) {
|
||||
props.onChangeBuyAsset(asset)
|
||||
function onChangeBuyAsset(asset: AssetPair | Asset) {
|
||||
const selectedAsset = asset as Asset
|
||||
if (!props.onChangeBuyAsset) return
|
||||
props.onChangeBuyAsset(selectedAsset)
|
||||
props.onChangeState('sell')
|
||||
onChangeSearch('')
|
||||
}
|
||||
|
||||
function onChangeSellAsset(asset: Asset) {
|
||||
props.onChangeSellAsset(asset)
|
||||
function onChangeSellAsset(asset: AssetPair | Asset) {
|
||||
const selectedAsset = asset as Asset
|
||||
if (!props.onChangeSellAsset) return
|
||||
props.onChangeSellAsset(selectedAsset)
|
||||
onChangeSearch('')
|
||||
}
|
||||
|
||||
function onChangeAssetPair(assetPair: AssetPair | Asset) {
|
||||
const selectedPair = assetPair as AssetPair
|
||||
if (!props.onChangeTradingPair) return
|
||||
props.onChangeTradingPair({ buy: selectedPair.buy.denom, sell: selectedPair.sell.denom })
|
||||
props.onChangeState('closed')
|
||||
onChangeSearch('')
|
||||
}
|
||||
|
||||
@ -54,9 +109,16 @@ export default function AssetOverlay(props: Props) {
|
||||
setShow={handleClose}
|
||||
>
|
||||
<div className='flex justify-between p-4 overflow-hidden'>
|
||||
<Text>Select asset</Text>
|
||||
<Text>{isPairSelector ? 'Select a market' : 'Select asset'}</Text>
|
||||
<EscButton onClick={handleClose} enableKeyPress />
|
||||
</div>
|
||||
{isPairSelector && (
|
||||
<StablesFilter
|
||||
stables={stableAssets}
|
||||
selectedStables={selectedStables}
|
||||
onFilter={setSelectedStables}
|
||||
/>
|
||||
)}
|
||||
<Divider />
|
||||
<div className='p-4'>
|
||||
<SearchBar
|
||||
@ -68,20 +130,32 @@ export default function AssetOverlay(props: Props) {
|
||||
/>
|
||||
</div>
|
||||
<Divider />
|
||||
<AssetList
|
||||
type='buy'
|
||||
assets={buyAssets}
|
||||
isOpen={props.state === 'buy'}
|
||||
toggleOpen={handleToggle}
|
||||
onChangeAsset={onChangeBuyAsset}
|
||||
/>
|
||||
<AssetList
|
||||
type='sell'
|
||||
assets={sellAssets}
|
||||
isOpen={props.state === 'sell'}
|
||||
toggleOpen={handleToggle}
|
||||
onChangeAsset={onChangeSellAsset}
|
||||
/>
|
||||
{isPairSelector ? (
|
||||
<PairsList
|
||||
assets={buyAssets}
|
||||
stables={selectedStables}
|
||||
isOpen={props.state === 'pair'}
|
||||
toggleOpen={handleToggle}
|
||||
onChangeAssetPair={onChangeAssetPair}
|
||||
/>
|
||||
) : (
|
||||
<>
|
||||
<AssetList
|
||||
type='buy'
|
||||
assets={buyAssets}
|
||||
isOpen={props.state === 'buy'}
|
||||
toggleOpen={handleToggle}
|
||||
onChangeAsset={onChangeBuyAsset}
|
||||
/>
|
||||
<AssetList
|
||||
type='sell'
|
||||
assets={sellAssets}
|
||||
isOpen={props.state === 'sell'}
|
||||
toggleOpen={handleToggle}
|
||||
onChangeAsset={onChangeSellAsset}
|
||||
/>
|
||||
</>
|
||||
)}
|
||||
</Overlay>
|
||||
)
|
||||
}
|
||||
|
@ -0,0 +1,129 @@
|
||||
import { useMemo } from 'react'
|
||||
|
||||
import AssetImage from 'components/Asset/AssetImage'
|
||||
import AssetSymbol from 'components/Asset/AssetSymbol'
|
||||
import DisplayCurrency from 'components/DisplayCurrency'
|
||||
import { FormattedNumber } from 'components/FormattedNumber'
|
||||
import { StarFilled, StarOutlined } from 'components/Icons'
|
||||
import Text from 'components/Text'
|
||||
import { LocalStorageKeys } from 'constants/localStorageKeys'
|
||||
import { BN_ONE, BN_ZERO, MAX_AMOUNT_DECIMALS, MIN_AMOUNT } from 'constants/math'
|
||||
import useLocalStorage from 'hooks/useLocalStorage'
|
||||
import { BNCoin } from 'types/classes/BNCoin'
|
||||
import { byDenom } from 'utils/array'
|
||||
import { demagnify, formatAmountToPrecision } from 'utils/formatters'
|
||||
|
||||
interface Props {
|
||||
asset: Asset
|
||||
sellAsset?: Asset
|
||||
balances: BNCoin[]
|
||||
onSelect: (selected: Asset | AssetPair) => void
|
||||
depositCap?: DepositCap
|
||||
}
|
||||
export default function AssetSelectorItem(props: Props) {
|
||||
const { asset, sellAsset, balances, onSelect, depositCap } = props
|
||||
|
||||
const amount = demagnify(props.balances.find(byDenom(asset.denom))?.amount ?? BN_ZERO, asset)
|
||||
|
||||
const [favoriteAssetsDenoms, setFavoriteAssetsDenoms] = useLocalStorage<string[]>(
|
||||
LocalStorageKeys.FAVORITE_ASSETS,
|
||||
[],
|
||||
)
|
||||
|
||||
function handleToggleFavorite(event: React.MouseEvent<HTMLDivElement, MouseEvent>) {
|
||||
event.stopPropagation()
|
||||
|
||||
if (!favoriteAssetsDenoms.includes(asset.denom)) {
|
||||
setFavoriteAssetsDenoms([...favoriteAssetsDenoms, asset.denom])
|
||||
return
|
||||
}
|
||||
setFavoriteAssetsDenoms(favoriteAssetsDenoms.filter((item: string) => item !== asset.denom))
|
||||
}
|
||||
const formattedAmount = formatAmountToPrecision(amount, MAX_AMOUNT_DECIMALS)
|
||||
const lowAmount = formattedAmount === 0 ? 0 : Math.max(formattedAmount, MIN_AMOUNT)
|
||||
|
||||
const capLeft = useMemo(() => {
|
||||
if (!props.depositCap) return 0
|
||||
const percent = props.depositCap.used.dividedBy(props.depositCap.max).multipliedBy(100)
|
||||
const depositCapLeft = 100 - Math.min(percent.toNumber(), 100)
|
||||
return depositCapLeft
|
||||
}, [props.depositCap])
|
||||
|
||||
return (
|
||||
<li className='border-b border-white/10 hover:bg-black/10'>
|
||||
<button
|
||||
onClick={() => onSelect(sellAsset ? { buy: asset, sell: sellAsset } : asset)}
|
||||
className='flex items-center justify-between w-full gap-2 p-4'
|
||||
>
|
||||
<div className='flex items-center gap-2'>
|
||||
<div onClick={handleToggleFavorite}>
|
||||
{asset.isFavorite ? <StarFilled width={16} /> : <StarOutlined width={16} />}
|
||||
</div>
|
||||
<AssetImage asset={asset} size={24} />
|
||||
<div className='flex-col'>
|
||||
<div className='flex gap-1 flex-nowrap max-w-[185px]'>
|
||||
{sellAsset ? (
|
||||
<Text size='sm' className='h-5 leading-5 text-left text-white/60'>
|
||||
<span className='text-white'>{asset.symbol}</span>/{sellAsset.symbol}
|
||||
</Text>
|
||||
) : (
|
||||
<>
|
||||
<Text size='sm' className='h-5 leading-5 text-left truncate '>
|
||||
{asset.name}
|
||||
</Text>
|
||||
<AssetSymbol symbol={asset.symbol} />
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
{balances.length > 0 && (
|
||||
<div className='flex gap-1'>
|
||||
<span className='text-xs text-left text-white/80'>Balance: </span>
|
||||
{amount >= 1 ? (
|
||||
<FormattedNumber
|
||||
className='text-xs text-left text-white/80'
|
||||
amount={amount}
|
||||
options={{ abbreviated: true, maxDecimals: MAX_AMOUNT_DECIMALS }}
|
||||
animate
|
||||
/>
|
||||
) : (
|
||||
<FormattedNumber
|
||||
className='text-xs text-left text-white/80'
|
||||
smallerThanThreshold={formattedAmount !== 0 && formattedAmount < MIN_AMOUNT}
|
||||
amount={lowAmount}
|
||||
options={{
|
||||
maxDecimals: MAX_AMOUNT_DECIMALS,
|
||||
minDecimals: 0,
|
||||
}}
|
||||
animate
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
{depositCap && capLeft <= 15 && (
|
||||
<div className='flex gap-1'>
|
||||
<span className='text-xs text-left text-white/60'>Cap Left: </span>
|
||||
<DisplayCurrency
|
||||
className='text-xs text-left text-info/60'
|
||||
coin={BNCoin.fromDenomAndBigNumber(
|
||||
depositCap.denom,
|
||||
depositCap.max.minus(depositCap.used),
|
||||
)}
|
||||
options={{ suffix: ` (${capLeft.toFixed(2)}%)` }}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
<DisplayCurrency
|
||||
className='text-sm'
|
||||
coin={
|
||||
new BNCoin({
|
||||
denom: asset.denom,
|
||||
amount: BN_ONE.shiftedBy(asset.decimals).toString(),
|
||||
})
|
||||
}
|
||||
/>
|
||||
</button>
|
||||
</li>
|
||||
)
|
||||
}
|
@ -0,0 +1,59 @@
|
||||
import { useCallback } from 'react'
|
||||
|
||||
import Button from 'components/Button'
|
||||
import { ChevronDown } from 'components/Icons'
|
||||
import Text from 'components/Text'
|
||||
import AssetOverlay from 'components/Trade/TradeModule/AssetSelector/AssetOverlay'
|
||||
import { DEFAULT_SETTINGS } from 'constants/defaultSettings'
|
||||
import { LocalStorageKeys } from 'constants/localStorageKeys'
|
||||
import useLocalStorage from 'hooks/useLocalStorage'
|
||||
import useStore from 'store'
|
||||
|
||||
interface Props {
|
||||
buyAsset: Asset
|
||||
sellAsset: Asset
|
||||
}
|
||||
|
||||
export default function AssetSelectorPair(props: Props) {
|
||||
const [tradingPairSimple, setTradingPairSimple] = useLocalStorage<Settings['tradingPairSimple']>(
|
||||
LocalStorageKeys.TRADING_PAIR_SIMPLE,
|
||||
DEFAULT_SETTINGS.tradingPairSimple,
|
||||
)
|
||||
const { buyAsset, sellAsset } = props
|
||||
const assetOverlayState = useStore((s) => s.assetOverlayState)
|
||||
|
||||
const onChangeTradingPair = useCallback(
|
||||
(tradingPair: TradingPair) => {
|
||||
console.log(tradingPair.buy, tradingPair.sell)
|
||||
setTradingPairSimple(tradingPair)
|
||||
},
|
||||
[setTradingPairSimple],
|
||||
)
|
||||
|
||||
const handleChangeState = useCallback((state: OverlayState) => {
|
||||
useStore.setState({ assetOverlayState: state })
|
||||
}, [])
|
||||
|
||||
return (
|
||||
<div className='flex items-center justify-between w-full p-3 bg-white/5'>
|
||||
<Text size='sm' className='text-white/60'>
|
||||
<span className='text-white'>{buyAsset.symbol}</span>/{sellAsset.symbol}
|
||||
</Text>
|
||||
<Button
|
||||
onClick={() => useStore.setState({ assetOverlayState: 'pair' })}
|
||||
text='all markets'
|
||||
color='quaternary'
|
||||
variant='transparent'
|
||||
className='pr-0'
|
||||
rightIcon={<ChevronDown className='w-3 h-3' />}
|
||||
/>
|
||||
<AssetOverlay
|
||||
state={assetOverlayState}
|
||||
onChangeState={handleChangeState}
|
||||
buyAsset={buyAsset}
|
||||
sellAsset={sellAsset}
|
||||
onChangeTradingPair={onChangeTradingPair}
|
||||
/>
|
||||
</div>
|
||||
)
|
||||
}
|
@ -14,32 +14,31 @@ interface Props {
|
||||
sellAsset: Asset
|
||||
}
|
||||
|
||||
export default function AssetSelector(props: Props) {
|
||||
const [tradingPair, setTradingPair] = useLocalStorage<Settings['tradingPair']>(
|
||||
LocalStorageKeys.TRADING_PAIR,
|
||||
DEFAULT_SETTINGS.tradingPair,
|
||||
)
|
||||
export default function AssetSelectorSingle(props: Props) {
|
||||
const [tradingPairAdvanced, settradingPairAdvanced] = useLocalStorage<
|
||||
Settings['tradingPairAdvanced']
|
||||
>(LocalStorageKeys.TRADING_PAIR_ADVANCED, DEFAULT_SETTINGS.tradingPairAdvanced)
|
||||
const { buyAsset, sellAsset } = props
|
||||
const assetOverlayState = useStore((s) => s.assetOverlayState)
|
||||
|
||||
const handleSwapAssets = useCallback(() => {
|
||||
setTradingPair({ buy: sellAsset.denom, sell: buyAsset.denom })
|
||||
}, [setTradingPair, sellAsset, buyAsset])
|
||||
settradingPairAdvanced({ buy: sellAsset.denom, sell: buyAsset.denom })
|
||||
}, [settradingPairAdvanced, sellAsset, buyAsset])
|
||||
|
||||
const handleChangeBuyAsset = useCallback(
|
||||
(asset: Asset) => {
|
||||
setTradingPair({ buy: asset.denom, sell: sellAsset.denom })
|
||||
settradingPairAdvanced({ buy: asset.denom, sell: sellAsset.denom })
|
||||
useStore.setState({ assetOverlayState: 'sell' })
|
||||
},
|
||||
[setTradingPair, sellAsset],
|
||||
[settradingPairAdvanced, sellAsset],
|
||||
)
|
||||
|
||||
const handleChangeSellAsset = useCallback(
|
||||
(asset: Asset) => {
|
||||
setTradingPair({ buy: buyAsset.denom, sell: asset.denom })
|
||||
settradingPairAdvanced({ buy: buyAsset.denom, sell: asset.denom })
|
||||
useStore.setState({ assetOverlayState: 'closed' })
|
||||
},
|
||||
[setTradingPair, buyAsset],
|
||||
[settradingPairAdvanced, buyAsset],
|
||||
)
|
||||
|
||||
const handleChangeState = useCallback((state: OverlayState) => {
|
||||
@ -47,7 +46,7 @@ export default function AssetSelector(props: Props) {
|
||||
}, [])
|
||||
|
||||
return (
|
||||
<div className='grid-rows-auto grid grid-cols-[1fr_min-content_1fr] gap-y-2 bg-white/5 p-3'>
|
||||
<div className='grid-rows-auto grid grid-cols-[1fr_min-content_1fr] gap-y-2 bg-white/5 p-3 w-full'>
|
||||
<Text size='sm'>Buy</Text>
|
||||
<Text size='sm' className='col-start-3'>
|
||||
Sell
|
73
src/components/Trade/TradeModule/AssetSelector/PairsList.tsx
Normal file
73
src/components/Trade/TradeModule/AssetSelector/PairsList.tsx
Normal file
@ -0,0 +1,73 @@
|
||||
import { useMemo } from 'react'
|
||||
|
||||
import Text from 'components/Text'
|
||||
import AssetSelectorItem from 'components/Trade/TradeModule/AssetSelector/AssetSelectorItem'
|
||||
import { ASSETS } from 'constants/assets'
|
||||
import useCurrentAccount from 'hooks/useCurrentAccount'
|
||||
import useMarketAssets from 'hooks/useMarketAssets'
|
||||
import useMarketDeposits from 'hooks/useMarketDeposits'
|
||||
import usePrices from 'hooks/usePrices'
|
||||
import { getMergedBalancesForAsset } from 'utils/accounts'
|
||||
import { byDenom } from 'utils/array'
|
||||
import { getEnabledMarketAssets, sortAssetsOrPairs } from 'utils/assets'
|
||||
|
||||
interface Props {
|
||||
assets: Asset[]
|
||||
stables: Asset[]
|
||||
isOpen: boolean
|
||||
toggleOpen: () => void
|
||||
onChangeAssetPair: (assetPair: AssetPair | Asset) => void
|
||||
}
|
||||
|
||||
const baseDenom = ASSETS[0].denom
|
||||
|
||||
export default function PairsList(props: Props) {
|
||||
const account = useCurrentAccount()
|
||||
const { data: marketAssets } = useMarketAssets()
|
||||
const { data: marketDeposits } = useMarketDeposits()
|
||||
const { data: prices } = usePrices()
|
||||
const balances = useMemo(() => {
|
||||
if (!account) return []
|
||||
return getMergedBalancesForAsset(account, getEnabledMarketAssets())
|
||||
}, [account])
|
||||
|
||||
const pairs = useMemo(() => {
|
||||
const tradingPairs: AssetPair[] = []
|
||||
props.stables.forEach((stable) => {
|
||||
props.assets.forEach((buyAsset) => {
|
||||
if (buyAsset.denom === stable.denom) return
|
||||
tradingPairs.push({ buy: buyAsset, sell: stable })
|
||||
})
|
||||
})
|
||||
return tradingPairs
|
||||
}, [props.stables, props.assets])
|
||||
|
||||
const sortedPairs = useMemo(
|
||||
() => sortAssetsOrPairs(pairs, prices, marketDeposits, balances, baseDenom) as AssetPair[],
|
||||
[balances, prices, pairs, marketDeposits],
|
||||
)
|
||||
|
||||
return (
|
||||
<section>
|
||||
{props.isOpen &&
|
||||
(props.assets.length === 0 ? (
|
||||
<Text size='xs' className='p-4'>
|
||||
No available assets found
|
||||
</Text>
|
||||
) : (
|
||||
<ul>
|
||||
{sortedPairs.map((assetPair) => (
|
||||
<AssetSelectorItem
|
||||
balances={balances}
|
||||
key={`${assetPair.buy.symbol}-${assetPair.sell.symbol}`}
|
||||
onSelect={props.onChangeAssetPair}
|
||||
depositCap={marketAssets?.find(byDenom(assetPair.buy.denom))?.cap}
|
||||
asset={assetPair.buy}
|
||||
sellAsset={assetPair.sell}
|
||||
/>
|
||||
))}
|
||||
</ul>
|
||||
))}
|
||||
</section>
|
||||
)
|
||||
}
|
@ -12,7 +12,7 @@ interface Props {
|
||||
|
||||
export default function MarginToggle(props: Props) {
|
||||
return (
|
||||
<div className='flex flex-row justify-between flex-1 px-4 py-2 bg-white/5'>
|
||||
<div className='flex justify-between w-full px-4 py-2 bg-white/5'>
|
||||
<Text size='sm'>Margin</Text>
|
||||
|
||||
<ConditionalWrapper
|
||||
|
@ -1,6 +1,5 @@
|
||||
import classNames from 'classnames'
|
||||
import debounce from 'lodash.debounce'
|
||||
import React, { useEffect, useMemo, useState } from 'react'
|
||||
import React, { useMemo } from 'react'
|
||||
|
||||
import ActionButton from 'components/Button/ActionButton'
|
||||
import { CircularProgress } from 'components/CircularProgress'
|
||||
@ -11,6 +10,7 @@ import { ChevronDown } from 'components/Icons'
|
||||
import Text from 'components/Text'
|
||||
import { DEFAULT_SETTINGS } from 'constants/defaultSettings'
|
||||
import { LocalStorageKeys } from 'constants/localStorageKeys'
|
||||
import useLiquidationPrice from 'hooks/useLiquidationPrice'
|
||||
import useLocalStorage from 'hooks/useLocalStorage'
|
||||
import usePrice from 'hooks/usePrice'
|
||||
import useSwapFee from 'hooks/useSwapFee'
|
||||
@ -34,6 +34,8 @@ interface Props {
|
||||
sellAmount: BigNumber
|
||||
sellAsset: Asset
|
||||
showProgressIndicator: boolean
|
||||
isAdvanced?: boolean
|
||||
direction?: OrderDirection
|
||||
}
|
||||
|
||||
const infoLineClasses = 'flex flex-row justify-between flex-1 mb-1 text-xs text-white'
|
||||
@ -53,30 +55,22 @@ export default function TradeSummary(props: Props) {
|
||||
route,
|
||||
sellAmount,
|
||||
buyAmount,
|
||||
isAdvanced,
|
||||
direction,
|
||||
} = props
|
||||
const [slippage] = useLocalStorage<number>(LocalStorageKeys.SLIPPAGE, DEFAULT_SETTINGS.slippage)
|
||||
|
||||
const sellAssetPrice = usePrice(sellAsset.denom)
|
||||
const swapFee = useSwapFee(route.map((r) => r.pool_id))
|
||||
const [showSummary, setShowSummary] = useToggle()
|
||||
const [liquidationPrice, setLiquidationPrice] = useState<number | null>(null)
|
||||
const [isUpdatingLiquidationPrice, setIsUpdatingLiquidationPrice] = useState(false)
|
||||
const debouncedSetLiqPrice = useMemo(
|
||||
() => debounce(setLiquidationPrice, 1000, { leading: false }),
|
||||
[],
|
||||
const { liquidationPrice, isUpdatingLiquidationPrice } = useLiquidationPrice(
|
||||
props.liquidationPrice,
|
||||
)
|
||||
|
||||
const minReceive = useMemo(() => {
|
||||
return buyAmount.times(1 - swapFee).times(1 - slippage)
|
||||
}, [buyAmount, slippage, swapFee])
|
||||
|
||||
useEffect(() => {
|
||||
setIsUpdatingLiquidationPrice(true)
|
||||
debouncedSetLiqPrice(props.liquidationPrice)
|
||||
}, [debouncedSetLiqPrice, props.liquidationPrice])
|
||||
|
||||
useEffect(() => setIsUpdatingLiquidationPrice(false), [liquidationPrice])
|
||||
|
||||
const swapFeeValue = useMemo(() => {
|
||||
return sellAssetPrice.times(swapFee).times(sellAmount)
|
||||
}, [sellAmount, sellAssetPrice, swapFee])
|
||||
@ -90,10 +84,10 @@ export default function TradeSummary(props: Props) {
|
||||
return routeSymbols.join(' -> ')
|
||||
}, [route, sellAsset.symbol])
|
||||
|
||||
const buttonText = useMemo(
|
||||
() => (route.length ? `Buy ${buyAsset.symbol}` : 'No route found'),
|
||||
[buyAsset.symbol, route],
|
||||
)
|
||||
const buttonText = useMemo(() => {
|
||||
if (!isAdvanced && direction === 'sell') return `Sell ${sellAsset.symbol}`
|
||||
return route.length ? `Buy ${buyAsset.symbol}` : 'No route found'
|
||||
}, [buyAsset.symbol, route, sellAsset.symbol, isAdvanced, direction])
|
||||
|
||||
return (
|
||||
<div
|
||||
|
@ -4,8 +4,12 @@ import { useCallback, useEffect, useMemo, useState } from 'react'
|
||||
import estimateExactIn from 'api/swap/estimateExactIn'
|
||||
import AvailableLiquidityMessage from 'components/AvailableLiquidityMessage'
|
||||
import DepositCapMessage from 'components/DepositCapMessage'
|
||||
import { DirectionSelect } from 'components/DirectionSelect'
|
||||
import Divider from 'components/Divider'
|
||||
import RangeInput from 'components/RangeInput'
|
||||
import Text from 'components/Text'
|
||||
import AssetSelectorPair from 'components/Trade/TradeModule/AssetSelector/AssetSelectorPair'
|
||||
import AssetSelectorSingle from 'components/Trade/TradeModule/AssetSelector/AssetSelectorSingle'
|
||||
import AssetAmountInput from 'components/Trade/TradeModule/SwapForm/AssetAmountInput'
|
||||
import AutoRepayToggle from 'components/Trade/TradeModule/SwapForm/AutoRepayToggle'
|
||||
import MarginToggle from 'components/Trade/TradeModule/SwapForm/MarginToggle'
|
||||
@ -28,34 +32,45 @@ import useStore from 'store'
|
||||
import { BNCoin } from 'types/classes/BNCoin'
|
||||
import { byDenom } from 'utils/array'
|
||||
import { defaultFee, ENABLE_AUTO_REPAY } from 'utils/constants'
|
||||
import { formatValue } from 'utils/formatters'
|
||||
import { getCapLeftWithBuffer } from 'utils/generic'
|
||||
import { asyncThrottle, BN } from 'utils/helpers'
|
||||
|
||||
interface Props {
|
||||
buyAsset: Asset
|
||||
sellAsset: Asset
|
||||
isAdvanced: boolean
|
||||
}
|
||||
|
||||
export default function SwapForm(props: Props) {
|
||||
const { buyAsset, sellAsset } = props
|
||||
const { buyAsset, sellAsset, isAdvanced } = props
|
||||
const useMargin = useStore((s) => s.useMargin)
|
||||
const useAutoRepay = useStore((s) => s.useAutoRepay)
|
||||
const account = useCurrentAccount()
|
||||
const swap = useStore((s) => s.swap)
|
||||
const [slippage] = useLocalStorage(LocalStorageKeys.SLIPPAGE, DEFAULT_SETTINGS.slippage)
|
||||
const { computeMaxSwapAmount } = useHealthComputer(account)
|
||||
const [orderDirection, setOrderDirection] = useState<OrderDirection>('buy')
|
||||
const { data: borrowAssets } = useMarketBorrowings()
|
||||
const { data: marketAssets } = useMarketAssets()
|
||||
const { data: route, isLoading: isRouteLoading } = useSwapRoute(sellAsset.denom, buyAsset.denom)
|
||||
const isBorrowEnabled = !!marketAssets.find(byDenom(sellAsset.denom))?.borrowEnabled
|
||||
const isRepayable = !!account?.debts.find(byDenom(buyAsset.denom))
|
||||
const [inputAsset, outputAsset] = useMemo(() => {
|
||||
if (isAdvanced) return [sellAsset, buyAsset]
|
||||
if (orderDirection === 'buy') return [sellAsset, buyAsset]
|
||||
return [buyAsset, sellAsset]
|
||||
}, [buyAsset, sellAsset, orderDirection, isAdvanced])
|
||||
const { data: route, isLoading: isRouteLoading } = useSwapRoute(
|
||||
inputAsset.denom,
|
||||
outputAsset.denom,
|
||||
)
|
||||
const isBorrowEnabled = !!marketAssets.find(byDenom(inputAsset.denom))?.borrowEnabled
|
||||
const isRepayable = !!account?.debts.find(byDenom(outputAsset.denom))
|
||||
const [isMarginChecked, setMarginChecked] = useToggle(isBorrowEnabled ? useMargin : false)
|
||||
const [isAutoRepayChecked, setAutoRepayChecked] = useToggle(
|
||||
isRepayable && ENABLE_AUTO_REPAY ? useAutoRepay : false,
|
||||
)
|
||||
const [buyAssetAmount, setBuyAssetAmount] = useState(BN_ZERO)
|
||||
const [sellAssetAmount, setSellAssetAmount] = useState(BN_ZERO)
|
||||
const [maxBuyableAmountEstimation, setMaxBuyableAmountEstimation] = useState(BN_ZERO)
|
||||
const [outputAssetAmount, setOutputAssetAmount] = useState(BN_ZERO)
|
||||
const [inputAssetAmount, setInputAssetAmount] = useState(BN_ZERO)
|
||||
const [maxOutputAmountEstimation, setMaxBuyableAmountEstimation] = useState(BN_ZERO)
|
||||
const [selectedOrderType, setSelectedOrderType] = useState<AvailableOrderType>('Market')
|
||||
const [isConfirming, setIsConfirming] = useToggle()
|
||||
const [estimatedFee, setEstimatedFee] = useState(defaultFee)
|
||||
@ -66,117 +81,107 @@ export default function SwapForm(props: Props) {
|
||||
const throttledEstimateExactIn = useMemo(() => asyncThrottle(estimateExactIn, 250), [])
|
||||
const { computeLiquidationPrice } = useHealthComputer(updatedAccount)
|
||||
|
||||
const borrowAsset = useMemo(
|
||||
() => borrowAssets.find(byDenom(sellAsset.denom)),
|
||||
[borrowAssets, sellAsset.denom],
|
||||
)
|
||||
|
||||
const depositCapReachedCoins: BNCoin[] = useMemo(() => {
|
||||
const buyMarketAsset = marketAssets.find(byDenom(buyAsset.denom))
|
||||
const outputMarketAsset = marketAssets.find(byDenom(outputAsset.denom))
|
||||
|
||||
if (!buyMarketAsset) return []
|
||||
if (!outputMarketAsset) return []
|
||||
|
||||
const depositCapLeft = getCapLeftWithBuffer(buyMarketAsset.cap)
|
||||
if (buyAssetAmount.isGreaterThan(depositCapLeft)) {
|
||||
return [BNCoin.fromDenomAndBigNumber(buyAsset.denom, depositCapLeft)]
|
||||
const depositCapLeft = getCapLeftWithBuffer(outputMarketAsset.cap)
|
||||
if (outputAssetAmount.isGreaterThan(depositCapLeft)) {
|
||||
return [BNCoin.fromDenomAndBigNumber(outputAsset.denom, depositCapLeft)]
|
||||
}
|
||||
|
||||
return []
|
||||
}, [marketAssets, buyAsset.denom, buyAssetAmount])
|
||||
}, [marketAssets, outputAsset.denom, outputAssetAmount])
|
||||
|
||||
const onChangeSellAmount = useCallback(
|
||||
const onChangeInputAmount = useCallback(
|
||||
(amount: BigNumber) => {
|
||||
setSellAssetAmount(amount)
|
||||
throttledEstimateExactIn(
|
||||
{ denom: sellAsset.denom, amount: amount.toString() },
|
||||
buyAsset.denom,
|
||||
).then(setBuyAssetAmount)
|
||||
setInputAssetAmount(amount)
|
||||
const swapTo = { denom: inputAsset.denom, amount: amount.toString() }
|
||||
throttledEstimateExactIn(swapTo, outputAsset.denom).then(setOutputAssetAmount)
|
||||
},
|
||||
[sellAsset.denom, throttledEstimateExactIn, buyAsset.denom],
|
||||
[inputAsset.denom, throttledEstimateExactIn, outputAsset.denom],
|
||||
)
|
||||
|
||||
const onChangeBuyAmount = useCallback(
|
||||
const onChangeOutputAmount = useCallback(
|
||||
(amount: BigNumber) => {
|
||||
setBuyAssetAmount(amount)
|
||||
setOutputAssetAmount(amount)
|
||||
const swapFrom = {
|
||||
denom: buyAsset.denom,
|
||||
denom: outputAsset.denom,
|
||||
amount: amount.toString(),
|
||||
}
|
||||
throttledEstimateExactIn(swapFrom, sellAsset.denom).then(setSellAssetAmount)
|
||||
throttledEstimateExactIn(swapFrom, inputAsset.denom).then(setInputAssetAmount)
|
||||
},
|
||||
[buyAsset.denom, throttledEstimateExactIn, sellAsset.denom],
|
||||
[outputAsset.denom, throttledEstimateExactIn, inputAsset.denom],
|
||||
)
|
||||
|
||||
const handleRangeInputChange = useCallback(
|
||||
(value: number) => {
|
||||
onChangeBuyAmount(BN(value).shiftedBy(buyAsset.decimals).integerValue())
|
||||
onChangeOutputAmount(BN(value).shiftedBy(outputAsset.decimals).integerValue())
|
||||
},
|
||||
[onChangeBuyAmount, buyAsset.decimals],
|
||||
[onChangeOutputAmount, outputAsset.decimals],
|
||||
)
|
||||
|
||||
const [maxSellAmount, sellSideMarginThreshold, marginRatio] = useMemo(() => {
|
||||
const maxAmount = computeMaxSwapAmount(sellAsset.denom, buyAsset.denom, 'default')
|
||||
const [maxInputAmount, imputMarginThreshold, marginRatio] = useMemo(() => {
|
||||
const maxAmount = computeMaxSwapAmount(inputAsset.denom, outputAsset.denom, 'default')
|
||||
const maxAmountOnMargin = computeMaxSwapAmount(
|
||||
sellAsset.denom,
|
||||
buyAsset.denom,
|
||||
inputAsset.denom,
|
||||
outputAsset.denom,
|
||||
'margin',
|
||||
).integerValue()
|
||||
const marginRatio = maxAmount.dividedBy(maxAmountOnMargin)
|
||||
|
||||
estimateExactIn(
|
||||
{
|
||||
denom: sellAsset.denom,
|
||||
denom: inputAsset.denom,
|
||||
amount: (isMarginChecked ? maxAmountOnMargin : maxAmount).toString(),
|
||||
},
|
||||
buyAsset.denom,
|
||||
outputAsset.denom,
|
||||
).then(setMaxBuyableAmountEstimation)
|
||||
|
||||
if (isMarginChecked) return [maxAmountOnMargin, maxAmount, marginRatio]
|
||||
|
||||
if (sellAssetAmount.isGreaterThan(maxAmount)) onChangeSellAmount(maxAmount)
|
||||
if (inputAssetAmount.isGreaterThan(maxAmount)) onChangeInputAmount(maxAmount)
|
||||
|
||||
return [maxAmount, maxAmount, marginRatio]
|
||||
}, [
|
||||
computeMaxSwapAmount,
|
||||
sellAsset.denom,
|
||||
buyAsset.denom,
|
||||
inputAsset.denom,
|
||||
outputAsset.denom,
|
||||
isMarginChecked,
|
||||
onChangeSellAmount,
|
||||
sellAssetAmount,
|
||||
onChangeInputAmount,
|
||||
inputAssetAmount,
|
||||
])
|
||||
|
||||
const buySideMarginThreshold = useMemo(() => {
|
||||
return maxBuyableAmountEstimation.multipliedBy(marginRatio)
|
||||
}, [marginRatio, maxBuyableAmountEstimation])
|
||||
const outputSideMarginThreshold = useMemo(() => {
|
||||
return maxOutputAmountEstimation.multipliedBy(marginRatio)
|
||||
}, [marginRatio, maxOutputAmountEstimation])
|
||||
|
||||
const swapTx = useMemo(() => {
|
||||
const borrowCoin = sellAssetAmount.isGreaterThan(sellSideMarginThreshold)
|
||||
? BNCoin.fromDenomAndBigNumber(
|
||||
sellAsset.denom,
|
||||
sellAssetAmount.minus(sellSideMarginThreshold),
|
||||
)
|
||||
const borrowCoin = inputAssetAmount.isGreaterThan(imputMarginThreshold)
|
||||
? BNCoin.fromDenomAndBigNumber(inputAsset.denom, inputAssetAmount.minus(imputMarginThreshold))
|
||||
: undefined
|
||||
|
||||
return swap({
|
||||
accountId: account?.id || '',
|
||||
coinIn: BNCoin.fromDenomAndBigNumber(sellAsset.denom, sellAssetAmount.integerValue()),
|
||||
coinIn: BNCoin.fromDenomAndBigNumber(inputAsset.denom, inputAssetAmount.integerValue()),
|
||||
reclaim: removedLends[0],
|
||||
borrow: borrowCoin,
|
||||
denomOut: buyAsset.denom,
|
||||
denomOut: outputAsset.denom,
|
||||
slippage,
|
||||
isMax: sellAssetAmount.isEqualTo(maxSellAmount),
|
||||
isMax: inputAssetAmount.isEqualTo(maxInputAmount),
|
||||
repay: isAutoRepayChecked,
|
||||
})
|
||||
}, [
|
||||
removedLends,
|
||||
account?.id,
|
||||
buyAsset.denom,
|
||||
sellSideMarginThreshold,
|
||||
sellAsset.denom,
|
||||
sellAssetAmount,
|
||||
outputAsset.denom,
|
||||
imputMarginThreshold,
|
||||
inputAsset.denom,
|
||||
inputAssetAmount,
|
||||
slippage,
|
||||
swap,
|
||||
maxSellAmount,
|
||||
maxInputAmount,
|
||||
isAutoRepayChecked,
|
||||
])
|
||||
|
||||
@ -210,61 +215,10 @@ export default function SwapForm(props: Props) {
|
||||
)
|
||||
|
||||
const liquidationPrice = useMemo(
|
||||
() => computeLiquidationPrice(props.buyAsset.denom),
|
||||
[computeLiquidationPrice, props.buyAsset.denom],
|
||||
() => computeLiquidationPrice(outputAsset.denom, 'asset'),
|
||||
[computeLiquidationPrice, outputAsset.denom],
|
||||
)
|
||||
|
||||
useEffect(() => {
|
||||
setBuyAssetAmount(BN_ZERO)
|
||||
setSellAssetAmount(BN_ZERO)
|
||||
setMarginChecked(isBorrowEnabled ? useMargin : false)
|
||||
setAutoRepayChecked(isRepayable ? useAutoRepay : false)
|
||||
simulateTrade(
|
||||
BNCoin.fromDenomAndBigNumber(buyAsset.denom, BN_ZERO),
|
||||
BNCoin.fromDenomAndBigNumber(sellAsset.denom, BN_ZERO),
|
||||
BNCoin.fromDenomAndBigNumber(sellAsset.denom, BN_ZERO),
|
||||
isAutoLendEnabled && !isAutoRepayChecked ? 'lend' : 'deposit',
|
||||
isAutoRepayChecked,
|
||||
)
|
||||
}, [
|
||||
isBorrowEnabled,
|
||||
isRepayable,
|
||||
useMargin,
|
||||
useAutoRepay,
|
||||
buyAsset.denom,
|
||||
sellAsset.denom,
|
||||
isAutoLendEnabled,
|
||||
isAutoRepayChecked,
|
||||
simulateTrade,
|
||||
setMarginChecked,
|
||||
setAutoRepayChecked,
|
||||
])
|
||||
|
||||
useEffect(() => {
|
||||
const removeDepositAmount = sellAssetAmount.isGreaterThanOrEqualTo(sellSideMarginThreshold)
|
||||
? sellSideMarginThreshold
|
||||
: sellAssetAmount
|
||||
const addDebtAmount = sellAssetAmount.isGreaterThan(sellSideMarginThreshold)
|
||||
? sellAssetAmount.minus(sellSideMarginThreshold)
|
||||
: BN_ZERO
|
||||
|
||||
if (removeDepositAmount.isZero() && addDebtAmount.isZero() && buyAssetAmount.isZero() && modal)
|
||||
return
|
||||
const removeCoin = BNCoin.fromDenomAndBigNumber(sellAsset.denom, removeDepositAmount)
|
||||
const debtCoin = BNCoin.fromDenomAndBigNumber(sellAsset.denom, addDebtAmount)
|
||||
const addCoin = BNCoin.fromDenomAndBigNumber(buyAsset.denom, buyAssetAmount)
|
||||
|
||||
debouncedUpdateAccount(removeCoin, addCoin, debtCoin)
|
||||
}, [
|
||||
sellAssetAmount,
|
||||
buyAssetAmount,
|
||||
sellSideMarginThreshold,
|
||||
buyAsset.denom,
|
||||
sellAsset.denom,
|
||||
debouncedUpdateAccount,
|
||||
modal,
|
||||
])
|
||||
|
||||
useEffect(() => {
|
||||
swapTx.estimateFee().then(setEstimatedFee)
|
||||
}, [swapTx])
|
||||
@ -276,24 +230,90 @@ export default function SwapForm(props: Props) {
|
||||
const isSucceeded = await swapTx.execute()
|
||||
|
||||
if (isSucceeded) {
|
||||
setSellAssetAmount(BN_ZERO)
|
||||
setBuyAssetAmount(BN_ZERO)
|
||||
setInputAssetAmount(BN_ZERO)
|
||||
setOutputAssetAmount(BN_ZERO)
|
||||
}
|
||||
setIsConfirming(false)
|
||||
}
|
||||
}, [account?.id, swapTx, setIsConfirming])
|
||||
|
||||
useEffect(() => {
|
||||
if (sellAssetAmount.isEqualTo(maxSellAmount) || buyAssetAmount.isZero()) return
|
||||
if (buyAssetAmount.isEqualTo(maxBuyableAmountEstimation)) setSellAssetAmount(maxSellAmount)
|
||||
}, [sellAssetAmount, maxSellAmount, buyAssetAmount, maxBuyableAmountEstimation])
|
||||
onChangeOutputAmount(BN_ZERO)
|
||||
onChangeInputAmount(BN_ZERO)
|
||||
}, [orderDirection, onChangeOutputAmount, onChangeInputAmount])
|
||||
|
||||
useEffect(() => {
|
||||
setOutputAssetAmount(BN_ZERO)
|
||||
setInputAssetAmount(BN_ZERO)
|
||||
setMarginChecked(isBorrowEnabled ? useMargin : false)
|
||||
setAutoRepayChecked(isRepayable ? useAutoRepay : false)
|
||||
simulateTrade(
|
||||
BNCoin.fromDenomAndBigNumber(inputAsset.denom, BN_ZERO),
|
||||
BNCoin.fromDenomAndBigNumber(outputAsset.denom, BN_ZERO),
|
||||
BNCoin.fromDenomAndBigNumber(inputAsset.denom, BN_ZERO),
|
||||
isAutoLendEnabled && !isAutoRepayChecked ? 'lend' : 'deposit',
|
||||
isAutoRepayChecked,
|
||||
)
|
||||
}, [
|
||||
isBorrowEnabled,
|
||||
isRepayable,
|
||||
useMargin,
|
||||
useAutoRepay,
|
||||
outputAsset.denom,
|
||||
inputAsset.denom,
|
||||
isAutoLendEnabled,
|
||||
isAutoRepayChecked,
|
||||
simulateTrade,
|
||||
setMarginChecked,
|
||||
setAutoRepayChecked,
|
||||
])
|
||||
|
||||
useEffect(() => {
|
||||
const removeDepositAmount = inputAssetAmount.isGreaterThanOrEqualTo(imputMarginThreshold)
|
||||
? imputMarginThreshold
|
||||
: inputAssetAmount
|
||||
const addDebtAmount = inputAssetAmount.isGreaterThan(imputMarginThreshold)
|
||||
? inputAssetAmount.minus(imputMarginThreshold)
|
||||
: BN_ZERO
|
||||
|
||||
if (
|
||||
removeDepositAmount.isZero() &&
|
||||
addDebtAmount.isZero() &&
|
||||
outputAssetAmount.isZero() &&
|
||||
modal
|
||||
)
|
||||
return
|
||||
const removeCoin = BNCoin.fromDenomAndBigNumber(inputAsset.denom, removeDepositAmount)
|
||||
const addCoin = BNCoin.fromDenomAndBigNumber(outputAsset.denom, outputAssetAmount)
|
||||
const debtCoin = BNCoin.fromDenomAndBigNumber(inputAsset.denom, addDebtAmount)
|
||||
|
||||
debouncedUpdateAccount(removeCoin, addCoin, debtCoin)
|
||||
}, [
|
||||
inputAssetAmount,
|
||||
outputAssetAmount,
|
||||
imputMarginThreshold,
|
||||
outputAsset.denom,
|
||||
inputAsset.denom,
|
||||
debouncedUpdateAccount,
|
||||
modal,
|
||||
])
|
||||
|
||||
const borrowAsset = useMemo(
|
||||
() => borrowAssets.find(byDenom(inputAsset.denom)),
|
||||
[borrowAssets, inputAsset.denom],
|
||||
)
|
||||
|
||||
useEffect(() => {
|
||||
if (inputAssetAmount.isEqualTo(maxInputAmount) || outputAssetAmount.isZero()) return
|
||||
if (outputAssetAmount.isEqualTo(maxOutputAmountEstimation)) setInputAssetAmount(maxInputAmount)
|
||||
}, [inputAssetAmount, maxInputAmount, outputAssetAmount, maxOutputAmountEstimation])
|
||||
|
||||
const borrowAmount = useMemo(
|
||||
() =>
|
||||
sellAssetAmount.isGreaterThan(sellSideMarginThreshold)
|
||||
? sellAssetAmount.minus(sellSideMarginThreshold)
|
||||
inputAssetAmount.isGreaterThan(imputMarginThreshold)
|
||||
? inputAssetAmount.minus(imputMarginThreshold)
|
||||
: BN_ZERO,
|
||||
[sellAssetAmount, sellSideMarginThreshold],
|
||||
[inputAssetAmount, imputMarginThreshold],
|
||||
)
|
||||
|
||||
const availableLiquidity = useMemo(
|
||||
@ -303,79 +323,125 @@ export default function SwapForm(props: Props) {
|
||||
|
||||
const isSwapDisabled = useMemo(
|
||||
() =>
|
||||
sellAssetAmount.isZero() ||
|
||||
inputAssetAmount.isZero() ||
|
||||
depositCapReachedCoins.length > 0 ||
|
||||
borrowAmount.isGreaterThan(availableLiquidity) ||
|
||||
route.length === 0,
|
||||
[sellAssetAmount, depositCapReachedCoins, borrowAmount, availableLiquidity, route],
|
||||
[inputAssetAmount, depositCapReachedCoins, borrowAmount, availableLiquidity, route],
|
||||
)
|
||||
|
||||
return (
|
||||
<>
|
||||
<Divider />
|
||||
<MarginToggle
|
||||
checked={isMarginChecked}
|
||||
onChange={handleMarginToggleChange}
|
||||
disabled={!borrowAsset?.isMarket}
|
||||
borrowAssetSymbol={sellAsset.symbol}
|
||||
/>
|
||||
<Divider />
|
||||
|
||||
{isRepayable && ENABLE_AUTO_REPAY && (
|
||||
<AutoRepayToggle
|
||||
checked={isAutoRepayChecked}
|
||||
onChange={handleAutoRepayToggleChange}
|
||||
buyAssetSymbol={buyAsset.symbol}
|
||||
<div className='flex flex-wrap w-full'>
|
||||
{isAdvanced ? (
|
||||
<AssetSelectorSingle buyAsset={outputAsset} sellAsset={inputAsset} />
|
||||
) : (
|
||||
<AssetSelectorPair buyAsset={buyAsset} sellAsset={sellAsset} />
|
||||
)}
|
||||
<Divider />
|
||||
<MarginToggle
|
||||
checked={isMarginChecked}
|
||||
onChange={handleMarginToggleChange}
|
||||
disabled={!borrowAsset?.isMarket}
|
||||
borrowAssetSymbol={inputAsset.symbol}
|
||||
/>
|
||||
)}
|
||||
<Divider />
|
||||
<div className='px-3'>
|
||||
<OrderTypeSelector selected={selectedOrderType} onChange={setSelectedOrderType} />
|
||||
</div>
|
||||
<div className='flex flex-col gap-6 px-3 mt-6'>
|
||||
<AssetAmountInput
|
||||
label='Buy'
|
||||
max={maxBuyableAmountEstimation}
|
||||
amount={buyAssetAmount}
|
||||
setAmount={onChangeBuyAmount}
|
||||
asset={buyAsset}
|
||||
maxButtonLabel='Max Amount:'
|
||||
disabled={isConfirming}
|
||||
/>
|
||||
|
||||
<RangeInput
|
||||
disabled={isConfirming || maxBuyableAmountEstimation.isZero()}
|
||||
onChange={handleRangeInputChange}
|
||||
value={buyAssetAmount.shiftedBy(-buyAsset.decimals).toNumber()}
|
||||
max={maxBuyableAmountEstimation.shiftedBy(-buyAsset.decimals).toNumber()}
|
||||
marginThreshold={
|
||||
isMarginChecked
|
||||
? buySideMarginThreshold.shiftedBy(-buyAsset.decimals).toNumber()
|
||||
: undefined
|
||||
}
|
||||
/>
|
||||
|
||||
<DepositCapMessage action='buy' coins={depositCapReachedCoins} className='p-4 bg-white/5' />
|
||||
|
||||
{borrowAsset && borrowAmount.isGreaterThanOrEqualTo(availableLiquidity) && (
|
||||
<AvailableLiquidityMessage
|
||||
availableLiquidity={borrowAsset?.liquidity?.amount ?? BN_ZERO}
|
||||
asset={borrowAsset}
|
||||
<Divider />
|
||||
{isRepayable && ENABLE_AUTO_REPAY && (
|
||||
<AutoRepayToggle
|
||||
checked={isAutoRepayChecked}
|
||||
onChange={handleAutoRepayToggleChange}
|
||||
buyAssetSymbol={outputAsset.symbol}
|
||||
/>
|
||||
)}
|
||||
<AssetAmountInput
|
||||
label='Sell'
|
||||
max={maxSellAmount}
|
||||
amount={sellAssetAmount}
|
||||
setAmount={onChangeSellAmount}
|
||||
asset={sellAsset}
|
||||
maxButtonLabel='Balance:'
|
||||
disabled={isConfirming}
|
||||
/>
|
||||
<div className='px-3'>
|
||||
<OrderTypeSelector selected={selectedOrderType} onChange={setSelectedOrderType} />
|
||||
</div>
|
||||
<div className='flex flex-col w-full gap-6 px-3 mt-6'>
|
||||
{isAdvanced ? (
|
||||
<AssetAmountInput
|
||||
label='Buy'
|
||||
max={maxOutputAmountEstimation}
|
||||
amount={outputAssetAmount}
|
||||
setAmount={onChangeOutputAmount}
|
||||
asset={outputAsset}
|
||||
maxButtonLabel='Max Amount:'
|
||||
disabled={isConfirming}
|
||||
/>
|
||||
) : (
|
||||
<>
|
||||
<DirectionSelect
|
||||
direction={orderDirection}
|
||||
onChangeDirection={setOrderDirection}
|
||||
asset={buyAsset}
|
||||
/>
|
||||
<AssetAmountInput
|
||||
max={maxInputAmount}
|
||||
amount={inputAssetAmount}
|
||||
setAmount={onChangeInputAmount}
|
||||
asset={inputAsset}
|
||||
maxButtonLabel='Balance:'
|
||||
disabled={isConfirming}
|
||||
/>
|
||||
</>
|
||||
)}
|
||||
|
||||
{!isAdvanced && <Divider />}
|
||||
<RangeInput
|
||||
disabled={isConfirming || maxOutputAmountEstimation.isZero()}
|
||||
onChange={handleRangeInputChange}
|
||||
value={outputAssetAmount.shiftedBy(-outputAsset.decimals).toNumber()}
|
||||
max={maxOutputAmountEstimation.shiftedBy(-outputAsset.decimals).toNumber()}
|
||||
marginThreshold={
|
||||
isMarginChecked
|
||||
? outputSideMarginThreshold.shiftedBy(-outputAsset.decimals).toNumber()
|
||||
: undefined
|
||||
}
|
||||
/>
|
||||
<DepositCapMessage
|
||||
action='buy'
|
||||
coins={depositCapReachedCoins}
|
||||
className='p-4 bg-white/5'
|
||||
/>
|
||||
|
||||
{borrowAsset && borrowAmount.isGreaterThanOrEqualTo(availableLiquidity) && (
|
||||
<AvailableLiquidityMessage
|
||||
availableLiquidity={borrowAsset?.liquidity?.amount ?? BN_ZERO}
|
||||
asset={borrowAsset}
|
||||
/>
|
||||
)}
|
||||
{isAdvanced ? (
|
||||
<AssetAmountInput
|
||||
label='Sell'
|
||||
max={maxInputAmount}
|
||||
amount={inputAssetAmount}
|
||||
setAmount={onChangeInputAmount}
|
||||
asset={inputAsset}
|
||||
maxButtonLabel='Balance:'
|
||||
disabled={isConfirming}
|
||||
/>
|
||||
) : (
|
||||
<>
|
||||
<Divider />
|
||||
<div className='flex justify-between w-full'>
|
||||
<Text size='sm'>You receive</Text>
|
||||
<Text size='sm'>
|
||||
{formatValue(outputAssetAmount.toNumber(), {
|
||||
decimals: outputAsset.decimals,
|
||||
abbreviated: false,
|
||||
suffix: ` ${outputAsset.symbol}`,
|
||||
minDecimals: 0,
|
||||
maxDecimals: outputAsset.decimals,
|
||||
})}
|
||||
</Text>
|
||||
</div>
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
<div className='flex w-full px-3 pt-6'>
|
||||
<TradeSummary
|
||||
buyAsset={buyAsset}
|
||||
sellAsset={sellAsset}
|
||||
sellAsset={inputAsset}
|
||||
buyAsset={outputAsset}
|
||||
borrowRate={borrowAsset?.borrowRate}
|
||||
buyAction={handleBuyClick}
|
||||
buyButtonDisabled={isSwapDisabled}
|
||||
@ -385,8 +451,10 @@ export default function SwapForm(props: Props) {
|
||||
estimatedFee={estimatedFee}
|
||||
route={route}
|
||||
liquidationPrice={liquidationPrice}
|
||||
sellAmount={sellAssetAmount}
|
||||
buyAmount={buyAssetAmount}
|
||||
sellAmount={inputAssetAmount}
|
||||
buyAmount={outputAssetAmount}
|
||||
isAdvanced={isAdvanced}
|
||||
direction={orderDirection}
|
||||
/>
|
||||
</div>
|
||||
</>
|
||||
|
@ -1,26 +1,25 @@
|
||||
import classNames from 'classnames'
|
||||
|
||||
import AssetSelector from 'components/Trade/TradeModule/AssetSelector'
|
||||
import SwapForm from 'components/Trade/TradeModule/SwapForm'
|
||||
|
||||
interface Props {
|
||||
buyAsset: Asset
|
||||
sellAsset: Asset
|
||||
isAdvanced: boolean
|
||||
}
|
||||
|
||||
export default function TradeModule(props: Props) {
|
||||
const { buyAsset, sellAsset } = props
|
||||
|
||||
const { buyAsset, sellAsset, isAdvanced } = props
|
||||
return (
|
||||
<div className='row-span-2'>
|
||||
<div
|
||||
className={classNames(
|
||||
'relative isolate max-w-full overflow-hidden rounded-base pb-4 z-30',
|
||||
'max-h-[calc(100dvh-98px)] h-[980px] min-h-[830px]',
|
||||
'relative isolate max-w-full overflow-hidden rounded-base pb-4 z-30 flex flex-wrap flex-col justify-between',
|
||||
'before:content-[" "] before:absolute before:inset-0 before:-z-1 before:rounded-base before:p-[1px] before:border-glas',
|
||||
)}
|
||||
>
|
||||
<AssetSelector buyAsset={buyAsset} sellAsset={sellAsset} />
|
||||
<SwapForm buyAsset={buyAsset} sellAsset={sellAsset} />
|
||||
<SwapForm buyAsset={buyAsset} sellAsset={sellAsset} isAdvanced={isAdvanced} />
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
|
@ -1,10 +1,10 @@
|
||||
import { useShuttle } from '@delphi-labs/shuttle-react'
|
||||
import BigNumber from 'bignumber.js'
|
||||
import classNames from 'classnames'
|
||||
import { useCallback, useEffect, useState } from 'react'
|
||||
import { useLocation, useNavigate } from 'react-router-dom'
|
||||
import useClipboard from 'react-use-clipboard'
|
||||
import { resolvePrimaryDomainByAddress } from 'ibc-domains-sdk'
|
||||
import { useCallback, useEffect, useState } from 'react'
|
||||
import { useLocation, useNavigate, useSearchParams } from 'react-router-dom'
|
||||
import useClipboard from 'react-use-clipboard'
|
||||
|
||||
import Button from 'components/Button'
|
||||
import { CircularProgress } from 'components/CircularProgress'
|
||||
@ -44,6 +44,7 @@ export default function WalletConnectedButton() {
|
||||
const { data: icnsData, isLoading: isLoadingICNS } = useICNSDomain(address)
|
||||
const navigate = useNavigate()
|
||||
const { pathname } = useLocation()
|
||||
const [searchParams] = useSearchParams()
|
||||
|
||||
// ---------------
|
||||
// LOCAL STATE
|
||||
@ -87,7 +88,7 @@ export default function WalletConnectedButton() {
|
||||
})
|
||||
}
|
||||
|
||||
navigate(getRoute(getPage(pathname)))
|
||||
navigate(getRoute(getPage(pathname), searchParams))
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { Suspense, useEffect, useMemo } from 'react'
|
||||
import { useLocation, useNavigate, useParams } from 'react-router-dom'
|
||||
import { useLocation, useNavigate, useParams, useSearchParams } from 'react-router-dom'
|
||||
|
||||
import AccountCreateFirst from 'components/Account/AccountCreateFirst'
|
||||
import { CircularProgress } from 'components/CircularProgress'
|
||||
@ -28,6 +28,8 @@ function FetchLoading() {
|
||||
|
||||
function Content() {
|
||||
const address = useStore((s) => s.address)
|
||||
const [searchParams] = useSearchParams()
|
||||
|
||||
const { address: urlAddress } = useParams()
|
||||
const urlAccountId = useAccountId()
|
||||
const navigate = useNavigate()
|
||||
@ -48,7 +50,7 @@ function Content() {
|
||||
useEffect(() => {
|
||||
const page = getPage(pathname)
|
||||
if (page === 'portfolio' && urlAddress && urlAddress !== address) {
|
||||
navigate(getRoute(page, urlAddress as string))
|
||||
navigate(getRoute(page, searchParams, urlAddress as string))
|
||||
useStore.setState({ balances: walletBalances, focusComponent: null })
|
||||
return
|
||||
}
|
||||
@ -60,7 +62,7 @@ function Content() {
|
||||
) {
|
||||
const currentAccountIsHLS = urlAccountId && !accountIds.includes(urlAccountId)
|
||||
const currentAccount = currentAccountIsHLS || !urlAccountId ? accountIds[0] : urlAccountId
|
||||
navigate(getRoute(page, address, currentAccount))
|
||||
navigate(getRoute(page, searchParams, address, currentAccount))
|
||||
useStore.setState({ balances: walletBalances, focusComponent: null })
|
||||
}
|
||||
}, [
|
||||
@ -72,6 +74,7 @@ function Content() {
|
||||
walletBalances,
|
||||
urlAddress,
|
||||
urlAccountId,
|
||||
searchParams,
|
||||
])
|
||||
|
||||
if (isLoadingAccounts || isLoadingBalances) return <FetchLoading />
|
||||
|
@ -19,6 +19,44 @@ export const ASSETS: Asset[] = [
|
||||
pythPriceFeedId: '5867f5683c757393a0670ef0f701490950fe93fdb006d181c8265a831ac0c5c6',
|
||||
pythHistoryFeedId: 'Crypto.OSMO/USD',
|
||||
},
|
||||
{
|
||||
symbol: 'USDC.axl',
|
||||
name: 'Axelar USDC',
|
||||
id: 'axlUSDC',
|
||||
denom: 'ibc/D189335C6E4A68B513C10AB227BF1C1D38C746766278BA3EEB4FB14124F1D858',
|
||||
color: '#478edc',
|
||||
logo: '/images/tokens/axlusdc.svg',
|
||||
decimals: 6,
|
||||
hasOraclePrice: true,
|
||||
isEnabled: true,
|
||||
isMarket: true,
|
||||
isDisplayCurrency: true,
|
||||
isStable: true,
|
||||
isBorrowEnabled: true,
|
||||
isAutoLendEnabled: true,
|
||||
pythPriceFeedId: 'eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a',
|
||||
pythHistoryFeedId: 'Crypto.USDC/USD',
|
||||
poolId: 678,
|
||||
},
|
||||
{
|
||||
symbol: 'USDC',
|
||||
name: 'Noble',
|
||||
id: 'USDC',
|
||||
denom: 'ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4',
|
||||
color: '#478edc',
|
||||
logo: '/images/tokens/usdc.svg',
|
||||
decimals: 6,
|
||||
hasOraclePrice: true,
|
||||
isEnabled: true,
|
||||
isMarket: true,
|
||||
isDisplayCurrency: true,
|
||||
isStable: true,
|
||||
isBorrowEnabled: true,
|
||||
isAutoLendEnabled: true,
|
||||
pythPriceFeedId: 'eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a',
|
||||
pythHistoryFeedId: 'Crypto.USDC/USD',
|
||||
poolId: ENV.NETWORK === NETWORK.DEVNET ? 678 : 1221,
|
||||
},
|
||||
{
|
||||
symbol: 'ATOM',
|
||||
name: 'Atom',
|
||||
@ -119,44 +157,6 @@ export const ASSETS: Asset[] = [
|
||||
isEnabled: true,
|
||||
forceFetchPrice: true,
|
||||
},
|
||||
{
|
||||
symbol: 'USDC.axl',
|
||||
name: 'Axelar USDC',
|
||||
id: 'axlUSDC',
|
||||
denom: 'ibc/D189335C6E4A68B513C10AB227BF1C1D38C746766278BA3EEB4FB14124F1D858',
|
||||
color: '#478edc',
|
||||
logo: '/images/tokens/axlusdc.svg',
|
||||
decimals: 6,
|
||||
hasOraclePrice: true,
|
||||
isEnabled: true,
|
||||
isMarket: true,
|
||||
isDisplayCurrency: true,
|
||||
isStable: true,
|
||||
isBorrowEnabled: true,
|
||||
isAutoLendEnabled: true,
|
||||
pythPriceFeedId: 'eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a',
|
||||
pythHistoryFeedId: 'Crypto.USDC/USD',
|
||||
poolId: 678,
|
||||
},
|
||||
{
|
||||
symbol: 'USDC',
|
||||
name: 'Noble',
|
||||
id: 'USDC',
|
||||
denom: 'ibc/498A0751C798A0D9A389AA3691123DADA57DAA4FE165D5C75894505B876BA6E4',
|
||||
color: '#478edc',
|
||||
logo: '/images/tokens/usdc.svg',
|
||||
decimals: 6,
|
||||
hasOraclePrice: true,
|
||||
isEnabled: true,
|
||||
isMarket: true,
|
||||
isDisplayCurrency: true,
|
||||
isStable: true,
|
||||
isBorrowEnabled: true,
|
||||
isAutoLendEnabled: true,
|
||||
pythPriceFeedId: 'eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a',
|
||||
pythHistoryFeedId: 'Crypto.USDC/USD',
|
||||
poolId: ENV.NETWORK === NETWORK.DEVNET ? 678 : 1221,
|
||||
},
|
||||
{
|
||||
symbol: 'USDT',
|
||||
id: 'USDT',
|
||||
|
@ -7,7 +7,8 @@ export const DEFAULT_SETTINGS: Settings = {
|
||||
accountSummaryTabs: [true, true],
|
||||
reduceMotion: false,
|
||||
lendAssets: true,
|
||||
tradingPair: { buy: enabledMarketAssets[0].denom, sell: enabledMarketAssets[1].denom },
|
||||
tradingPairSimple: { buy: enabledMarketAssets[0].denom, sell: enabledMarketAssets[1].denom },
|
||||
tradingPairAdvanced: { buy: enabledMarketAssets[0].denom, sell: enabledMarketAssets[1].denom },
|
||||
displayCurrency: ORACLE_DENOM,
|
||||
slippage: 0.02,
|
||||
tutorial: true,
|
||||
|
@ -1,5 +1,6 @@
|
||||
export enum LocalStorageKeys {
|
||||
TRADING_PAIR = 'tradingPair',
|
||||
TRADING_PAIR_SIMPLE = 'tradingPairSimple',
|
||||
TRADING_PAIR_ADVANCED = 'tradingPairAdvanced',
|
||||
ACCOUNT_SUMMARY_TABS = 'accountSummaryTabs',
|
||||
DISPLAY_CURRENCY = 'displayCurrency',
|
||||
REDUCE_MOTION = 'reduceMotion',
|
||||
|
36
src/hooks/perps/usePerpsMarket.ts
Normal file
36
src/hooks/perps/usePerpsMarket.ts
Normal file
@ -0,0 +1,36 @@
|
||||
import { useSearchParams } from 'react-router-dom'
|
||||
import useSWR from 'swr'
|
||||
|
||||
import { ASSETS } from 'constants/assets'
|
||||
import { getAssetBySymbol } from 'utils/assets'
|
||||
import { BN } from 'utils/helpers'
|
||||
|
||||
export default function usePerpsMarket() {
|
||||
const [searchParams] = useSearchParams()
|
||||
const perpsMarket = searchParams.get('perpsMarket') || ASSETS[0].symbol
|
||||
|
||||
const asset = getAssetBySymbol(perpsMarket)
|
||||
|
||||
return useSWR(
|
||||
`perpsMarket/${perpsMarket}`,
|
||||
async () => {
|
||||
await delay(3000)
|
||||
if (!asset) return null
|
||||
return {
|
||||
asset,
|
||||
fundingRate: BN(0.001432),
|
||||
openInterest: {
|
||||
long: BN(92901203),
|
||||
short: BN(129891203),
|
||||
},
|
||||
} as PerpsMarket
|
||||
},
|
||||
{
|
||||
fallbackData: null,
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
function delay(ms: number) {
|
||||
return new Promise((resolve) => setTimeout(resolve, ms))
|
||||
}
|
@ -24,6 +24,7 @@ import {
|
||||
BorrowTarget,
|
||||
compute_health_js,
|
||||
liquidation_price_js,
|
||||
LiquidationPriceKind,
|
||||
max_borrow_estimate_js,
|
||||
max_swap_estimate_js,
|
||||
max_withdraw_estimate_js,
|
||||
@ -198,13 +199,13 @@ export default function useHealthComputer(account?: Account) {
|
||||
)
|
||||
|
||||
const computeLiquidationPrice = useCallback(
|
||||
(denom: string) => {
|
||||
(denom: string, kind: LiquidationPriceKind) => {
|
||||
if (!healthComputer) return null
|
||||
try {
|
||||
const asset = getAssetByDenom(denom)
|
||||
if (!asset) return null
|
||||
const decimalDiff = asset.decimals - PRICE_ORACLE_DECIMALS
|
||||
return BN(liquidation_price_js(healthComputer, denom))
|
||||
return BN(liquidation_price_js(healthComputer, denom, kind))
|
||||
.shiftedBy(-VALUE_SCALE_FACTOR)
|
||||
.shiftedBy(decimalDiff)
|
||||
.toNumber()
|
||||
|
22
src/hooks/useLiquidationPrice.ts
Normal file
22
src/hooks/useLiquidationPrice.ts
Normal file
@ -0,0 +1,22 @@
|
||||
import debounce from 'lodash.debounce'
|
||||
import { useEffect, useMemo, useState } from 'react'
|
||||
|
||||
export default function useLiquidationPrice(liqPrice: number | null) {
|
||||
const [liquidationPrice, setLiquidationPrice] = useState<number | null>(null)
|
||||
const [isUpdatingLiquidationPrice, setIsUpdatingLiquidationPrice] = useState(false)
|
||||
const debouncedSetLiqPrice = useMemo(
|
||||
() => debounce(setLiquidationPrice, 1000, { leading: false }),
|
||||
[],
|
||||
)
|
||||
|
||||
useEffect(() => {
|
||||
setIsUpdatingLiquidationPrice(true)
|
||||
debouncedSetLiqPrice(liqPrice)
|
||||
}, [debouncedSetLiqPrice, liqPrice])
|
||||
|
||||
useEffect(() => {
|
||||
setIsUpdatingLiquidationPrice(false)
|
||||
}, [liquidationPrice])
|
||||
|
||||
return { liquidationPrice, isUpdatingLiquidationPrice }
|
||||
}
|
@ -7,7 +7,7 @@ export default function PerpsPage() {
|
||||
return (
|
||||
<div className='flex flex-col w-full h-full gap-4'>
|
||||
<div className='grid w-full grid-cols-[auto_346px] gap-4 pb-4'>
|
||||
<div className='grid grid-cols-1 grid-rows-[min-content_auto_min-content] gap-4 h-[calc(100vh-93px)] pb-4'>
|
||||
<div className='grid grid-cols-1 grid-rows-[min-content_auto_min-content] gap-4 h-[calc(100dvh-93px)] pb-4'>
|
||||
<PerpsInfo />
|
||||
<PerpsChart />
|
||||
<PerpsPositions />
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { useNavigate, useParams } from 'react-router-dom'
|
||||
import { useNavigate, useParams, useSearchParams } from 'react-router-dom'
|
||||
|
||||
import MigrationBanner from 'components/MigrationBanner'
|
||||
import Balances from 'components/Portfolio/Account/Balances'
|
||||
@ -12,9 +12,10 @@ export default function PortfolioAccountPage() {
|
||||
const selectedAccountId = useAccountId()
|
||||
const { address, accountId } = useParams()
|
||||
const navigate = useNavigate()
|
||||
const [searchParams] = useSearchParams()
|
||||
|
||||
if (!accountId) {
|
||||
navigate(getRoute('portfolio', address, selectedAccountId))
|
||||
navigate(getRoute('portfolio', searchParams, address, selectedAccountId))
|
||||
return null
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
import { useMemo } from 'react'
|
||||
import { useLocation } from 'react-router-dom'
|
||||
|
||||
import MigrationBanner from 'components/MigrationBanner'
|
||||
import AccountDetailsCard from 'components/Trade/AccountDetailsCard'
|
||||
@ -10,30 +11,45 @@ import useLocalStorage from 'hooks/useLocalStorage'
|
||||
import useStore from 'store'
|
||||
import { byDenom } from 'utils/array'
|
||||
import { getEnabledMarketAssets } from 'utils/assets'
|
||||
import { getPage } from 'utils/route'
|
||||
|
||||
export default function TradePage() {
|
||||
const [tradingPair] = useLocalStorage<Settings['tradingPair']>(
|
||||
LocalStorageKeys.TRADING_PAIR,
|
||||
DEFAULT_SETTINGS.tradingPair,
|
||||
const { pathname } = useLocation()
|
||||
const page = getPage(pathname)
|
||||
const isAdvanced = useMemo(() => page === 'trade-advanced', [page])
|
||||
|
||||
const [tradingPairAdvanced] = useLocalStorage<Settings['tradingPairAdvanced']>(
|
||||
LocalStorageKeys.TRADING_PAIR_ADVANCED,
|
||||
DEFAULT_SETTINGS.tradingPairAdvanced,
|
||||
)
|
||||
const [tradingPairSimple] = useLocalStorage<Settings['tradingPairSimple']>(
|
||||
LocalStorageKeys.TRADING_PAIR_SIMPLE,
|
||||
DEFAULT_SETTINGS.tradingPairSimple,
|
||||
)
|
||||
|
||||
const enabledMarketAssets = getEnabledMarketAssets()
|
||||
const assetOverlayState = useStore((s) => s.assetOverlayState)
|
||||
|
||||
const buyAsset = useMemo(
|
||||
() => enabledMarketAssets.find(byDenom(tradingPair.buy)) ?? enabledMarketAssets[0],
|
||||
[tradingPair, enabledMarketAssets],
|
||||
() =>
|
||||
enabledMarketAssets.find(
|
||||
byDenom(isAdvanced ? tradingPairAdvanced.buy : tradingPairSimple.buy),
|
||||
) ?? enabledMarketAssets[0],
|
||||
[tradingPairAdvanced, tradingPairSimple, enabledMarketAssets, isAdvanced],
|
||||
)
|
||||
const sellAsset = useMemo(
|
||||
() => enabledMarketAssets.find(byDenom(tradingPair.sell)) ?? enabledMarketAssets[1],
|
||||
[tradingPair, enabledMarketAssets],
|
||||
() =>
|
||||
enabledMarketAssets.find(
|
||||
byDenom(isAdvanced ? tradingPairAdvanced.sell : tradingPairSimple.sell),
|
||||
) ?? enabledMarketAssets[1],
|
||||
[tradingPairAdvanced, tradingPairSimple, enabledMarketAssets, isAdvanced],
|
||||
)
|
||||
|
||||
return (
|
||||
<div className='flex flex-col w-full h-full gap-4'>
|
||||
<MigrationBanner />
|
||||
<div className='grid h-full w-full grid-cols-[346px_auto] gap-4'>
|
||||
<TradeModule buyAsset={buyAsset} sellAsset={sellAsset} />
|
||||
<div className='grid w-full grid-cols-[auto_346px] gap-4'>
|
||||
<TradeChart buyAsset={buyAsset} sellAsset={sellAsset} />
|
||||
<TradeModule buyAsset={buyAsset} sellAsset={sellAsset} isAdvanced={isAdvanced} />
|
||||
<AccountDetailsCard />
|
||||
</div>
|
||||
{assetOverlayState !== 'closed' && (
|
||||
|
@ -27,7 +27,12 @@ function PageContainer(props: Props) {
|
||||
|
||||
if (!props.focusComponent)
|
||||
return (
|
||||
<div className={classNames('mx-auto h-full w-full', !props.fullWidth && 'max-w-content')}>
|
||||
<div
|
||||
className={classNames(
|
||||
'mx-auto flex items-start w-full',
|
||||
!props.fullWidth && 'max-w-content',
|
||||
)}
|
||||
>
|
||||
{props.children}
|
||||
</div>
|
||||
)
|
||||
@ -42,6 +47,7 @@ function PageContainer(props: Props) {
|
||||
export default function Layout({ children }: { children: React.ReactNode }) {
|
||||
const location = useLocation()
|
||||
const focusComponent = useStore((s) => s.focusComponent)
|
||||
const address = useStore((s) => s.address)
|
||||
const [reduceMotion] = useLocalStorage<boolean>(
|
||||
LocalStorageKeys.REDUCE_MOTION,
|
||||
DEFAULT_SETTINGS.reduceMotion,
|
||||
@ -61,11 +67,12 @@ export default function Layout({ children }: { children: React.ReactNode }) {
|
||||
<DesktopHeader />
|
||||
<main
|
||||
className={classNames(
|
||||
'lg:min-h-[calc(100vh-73px)]',
|
||||
'lg:min-h-[calc(100dvh-73px)]',
|
||||
'lg:mt-[73px]',
|
||||
'flex',
|
||||
'min-h-screen gap-6 px-4 py-6 w-full relative',
|
||||
!focusComponent &&
|
||||
address &&
|
||||
isFullWidth &&
|
||||
accountId &&
|
||||
(accountDetailsExpanded ? 'pr-118' : 'pr-24'),
|
||||
|
14
src/types/interfaces/asset.d.ts
vendored
14
src/types/interfaces/asset.d.ts
vendored
@ -69,6 +69,11 @@ interface Asset {
|
||||
isStaking?: boolean
|
||||
}
|
||||
|
||||
interface AssetPair {
|
||||
buy: Asset
|
||||
sell: Asset
|
||||
}
|
||||
|
||||
interface PseudoAsset {
|
||||
decimals: number
|
||||
symbol: string
|
||||
@ -144,3 +149,12 @@ interface StakingApr {
|
||||
unbondingDelay: number
|
||||
unbondingPeriod: number
|
||||
}
|
||||
|
||||
interface PerpsMarket {
|
||||
asset: Asset
|
||||
fundingRate: BigNumber
|
||||
openInterest: {
|
||||
long: BigNumber
|
||||
short: BigNumber
|
||||
}
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
type OverlayState = 'buy' | 'sell' | 'closed'
|
||||
type OverlayState = 'buy' | 'sell' | 'pair' | 'closed'
|
||||
|
@ -2,4 +2,12 @@ interface MenuTreeEntry {
|
||||
pages: Page[]
|
||||
label: string
|
||||
externalUrl?: string
|
||||
submenu?: MenuTreeSubmenuEntry[]
|
||||
}
|
||||
|
||||
interface MenuTreeSubmenuEntry {
|
||||
page: Page
|
||||
label: string
|
||||
subtitle?: string
|
||||
icon?: React.ReactNode
|
||||
}
|
||||
|
4
src/types/interfaces/components/Trade.d.ts
vendored
Normal file
4
src/types/interfaces/components/Trade.d.ts
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
interface TradingPair {
|
||||
buy: string
|
||||
sell: string
|
||||
}
|
2
src/types/interfaces/perps.d.ts
vendored
2
src/types/interfaces/perps.d.ts
vendored
@ -1 +1 @@
|
||||
type OrderDirection = 'long' | 'short'
|
||||
type OrderDirection = 'long' | 'short' | 'buy' | 'sell'
|
||||
|
1
src/types/interfaces/route.d.ts
vendored
1
src/types/interfaces/route.d.ts
vendored
@ -1,5 +1,6 @@
|
||||
type Page =
|
||||
| 'trade'
|
||||
| 'trade-advanced'
|
||||
| 'perps'
|
||||
| 'borrow'
|
||||
| 'farm'
|
||||
|
3
src/types/interfaces/store/settings.d.ts
vendored
3
src/types/interfaces/store/settings.d.ts
vendored
@ -2,7 +2,8 @@ interface Settings {
|
||||
accountSummaryTabs: boolean[]
|
||||
displayCurrency: string
|
||||
reduceMotion: boolean
|
||||
tradingPair: { buy: string; sell: string }
|
||||
tradingPairSimple: TradingPair
|
||||
tradingPairAdvanced: TradingPair
|
||||
lendAssets: boolean
|
||||
slippage: number
|
||||
tutorial: boolean
|
||||
|
@ -1,4 +1,8 @@
|
||||
import { ASSETS } from 'constants/assets'
|
||||
import { BN_ZERO } from 'constants/math'
|
||||
import { BNCoin } from 'types/classes/BNCoin'
|
||||
import { byDenom } from 'utils/array'
|
||||
import { demagnify } from 'utils/formatters'
|
||||
|
||||
export function getAssetByDenom(denom: string): Asset | undefined {
|
||||
return ASSETS.find((asset) => asset.denom === denom)
|
||||
@ -47,3 +51,42 @@ export function getBorrowEnabledAssets() {
|
||||
export function getStakingAssets() {
|
||||
return ASSETS.filter((asset) => asset.isStaking)
|
||||
}
|
||||
|
||||
function isAssetPair(assetPair: Asset | AssetPair): assetPair is AssetPair {
|
||||
return (<AssetPair>assetPair).buy !== undefined
|
||||
}
|
||||
|
||||
export function sortAssetsOrPairs(
|
||||
assets: Asset[] | AssetPair[],
|
||||
prices: BNCoin[],
|
||||
marketDeposits: BNCoin[],
|
||||
balances: BNCoin[],
|
||||
baseDenom: string,
|
||||
): Asset[] | AssetPair[] {
|
||||
if (prices.length === 0 || marketDeposits.length === 0) return assets
|
||||
|
||||
return assets.sort((a, b) => {
|
||||
const assetA = isAssetPair(a) ? a.buy : a
|
||||
const assetB = isAssetPair(b) ? b.buy : b
|
||||
|
||||
const aDenom = assetA.denom
|
||||
const bDenom = assetB.denom
|
||||
const aBalance = balances?.find(byDenom(aDenom))?.amount ?? BN_ZERO
|
||||
const aPrice = prices?.find(byDenom(aDenom))?.amount ?? BN_ZERO
|
||||
const bBalance = balances?.find(byDenom(bDenom))?.amount ?? BN_ZERO
|
||||
const bPrice = prices?.find(byDenom(bDenom))?.amount ?? BN_ZERO
|
||||
|
||||
const aValue = demagnify(aBalance, assetA) * aPrice.toNumber()
|
||||
const bValue = demagnify(bBalance, assetB) * bPrice.toNumber()
|
||||
if (aValue > 0 || bValue > 0) return bValue - aValue
|
||||
if (aDenom === baseDenom) return -1
|
||||
if (bDenom === baseDenom) return 1
|
||||
|
||||
const aMarketDeposit = marketDeposits?.find(byDenom(aDenom))?.amount ?? BN_ZERO
|
||||
const bMarketDeposit = marketDeposits?.find(byDenom(bDenom))?.amount ?? BN_ZERO
|
||||
const aMarketValue = demagnify(aMarketDeposit, assetA) * aPrice.toNumber()
|
||||
const bMarketValue = demagnify(bMarketDeposit, assetB) * bPrice.toNumber()
|
||||
|
||||
return bMarketValue - aMarketValue
|
||||
})
|
||||
}
|
||||
|
11
src/utils/health_computer/index.d.ts
vendored
11
src/utils/health_computer/index.d.ts
vendored
@ -40,9 +40,14 @@ export function max_swap_estimate_js(
|
||||
/**
|
||||
* @param {HealthComputer} c
|
||||
* @param {string} denom
|
||||
* @param {LiquidationPriceKind} kind
|
||||
* @returns {string}
|
||||
*/
|
||||
export function liquidation_price_js(c: HealthComputer, denom: string): string
|
||||
export function liquidation_price_js(
|
||||
c: HealthComputer,
|
||||
denom: string,
|
||||
kind: LiquidationPriceKind,
|
||||
): string
|
||||
export interface HealthComputer {
|
||||
kind: AccountKind
|
||||
positions: Positions
|
||||
@ -61,6 +66,8 @@ export interface HealthValuesResponse {
|
||||
above_max_ltv: boolean
|
||||
}
|
||||
|
||||
export type LiquidationPriceKind = 'asset' | 'debt'
|
||||
|
||||
export type Slippage = Decimal
|
||||
|
||||
export type SwapKind = 'default' | 'margin'
|
||||
@ -88,7 +95,7 @@ export interface InitOutput {
|
||||
g: number,
|
||||
h: number,
|
||||
) => void
|
||||
readonly liquidation_price_js: (a: number, b: number, c: number, d: number) => void
|
||||
readonly liquidation_price_js: (a: number, b: number, c: number, d: number, e: number) => void
|
||||
readonly allocate: (a: number) => number
|
||||
readonly deallocate: (a: number) => void
|
||||
readonly requires_iterator: () => void
|
||||
|
@ -233,16 +233,17 @@ export function max_swap_estimate_js(c, from_denom, to_denom, kind, slippage) {
|
||||
/**
|
||||
* @param {HealthComputer} c
|
||||
* @param {string} denom
|
||||
* @param {LiquidationPriceKind} kind
|
||||
* @returns {string}
|
||||
*/
|
||||
export function liquidation_price_js(c, denom) {
|
||||
export function liquidation_price_js(c, denom, kind) {
|
||||
let deferred2_0
|
||||
let deferred2_1
|
||||
try {
|
||||
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16)
|
||||
const ptr0 = passStringToWasm0(denom, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc)
|
||||
const len0 = WASM_VECTOR_LEN
|
||||
wasm.liquidation_price_js(retptr, addHeapObject(c), ptr0, len0)
|
||||
wasm.liquidation_price_js(retptr, addHeapObject(c), ptr0, len0, addHeapObject(kind))
|
||||
var r0 = getInt32Memory0()[retptr / 4 + 0]
|
||||
var r1 = getInt32Memory0()[retptr / 4 + 1]
|
||||
deferred2_0 = r0
|
||||
|
Binary file not shown.
2
src/utils/health_computer/index_bg.wasm.d.ts
vendored
2
src/utils/health_computer/index_bg.wasm.d.ts
vendored
@ -14,7 +14,7 @@ export function max_swap_estimate_js(
|
||||
g: number,
|
||||
h: number,
|
||||
): void
|
||||
export function liquidation_price_js(a: number, b: number, c: number, d: number): void
|
||||
export function liquidation_price_js(a: number, b: number, c: number, d: number, e: number): void
|
||||
export function allocate(a: number): number
|
||||
export function deallocate(a: number): void
|
||||
export function requires_iterator(): void
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { BN } from './helpers'
|
||||
import { BN } from 'utils/helpers'
|
||||
|
||||
export const devideByPotentiallyZero = (numerator: number, denominator: number): number => {
|
||||
if (denominator === 0) return 0
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { formatAmountWithSymbol } from './formatters'
|
||||
import { formatAmountWithSymbol } from 'utils/formatters'
|
||||
|
||||
export function getNoBalanceMessage(symbol: string) {
|
||||
return `You don't have an ${symbol} balance in your account.`
|
||||
|
@ -1,4 +1,9 @@
|
||||
export function getRoute(page: Page, address?: string, accountId?: string | null) {
|
||||
export function getRoute(
|
||||
page: Page,
|
||||
searchParams: URLSearchParams,
|
||||
address?: string,
|
||||
accountId?: string | null,
|
||||
) {
|
||||
let nextUrl = ''
|
||||
|
||||
if (address) {
|
||||
@ -9,10 +14,13 @@ export function getRoute(page: Page, address?: string, accountId?: string | null
|
||||
|
||||
let url = new URL(nextUrl, 'https://app.marsprotocol.io')
|
||||
|
||||
Array.from(searchParams?.entries() || []).map(([key, value]) =>
|
||||
url.searchParams.append(key, value),
|
||||
)
|
||||
|
||||
if (accountId) {
|
||||
url.searchParams.append('accountId', accountId)
|
||||
} else {
|
||||
url.searchParams.delete('accountId')
|
||||
url.searchParams.append('accountId', accountId)
|
||||
}
|
||||
|
||||
return url.pathname + url.search
|
||||
@ -21,6 +29,7 @@ export function getRoute(page: Page, address?: string, accountId?: string | null
|
||||
export function getPage(pathname: string): Page {
|
||||
const pages: Page[] = [
|
||||
'trade',
|
||||
'trade-advanced',
|
||||
'perps',
|
||||
'borrow',
|
||||
'farm',
|
||||
|
@ -4,6 +4,8 @@ const plugin = require('tailwindcss/plugin')
|
||||
module.exports = {
|
||||
content: ['./src/pages/**/*.{js,ts,jsx,tsx}', './src/components/**/*.{js,ts,jsx,tsx}'],
|
||||
safelist: [
|
||||
'border-error',
|
||||
'border-success',
|
||||
'h-2',
|
||||
'text-3xs',
|
||||
'text-3xs-caps',
|
||||
@ -41,12 +43,14 @@ module.exports = {
|
||||
'@nav-3/navigation:inline-block',
|
||||
'@nav-4/navigation:inline-block',
|
||||
'@nav-5/navigation:inline-block',
|
||||
'@nav-6/navigation:inline-block',
|
||||
'@nav-0/navigation:hidden',
|
||||
'@nav-1/navigation:hidden',
|
||||
'@nav-2/navigation:hidden',
|
||||
'@nav-3/navigation:hidden',
|
||||
'@nav-4/navigation:hidden',
|
||||
'@nav-5/navigation:hidden',
|
||||
'@nav-6/navigation:hidden',
|
||||
],
|
||||
theme: {
|
||||
extend: {
|
||||
@ -141,6 +145,7 @@ module.exports = {
|
||||
'nav-3': '400px',
|
||||
'nav-4': '500px',
|
||||
'nav-5': '600px',
|
||||
'nav-6': '650px',
|
||||
},
|
||||
fontFamily: {
|
||||
sans: ['Inter', 'sans-serif'],
|
||||
|
588
yarn.lock
588
yarn.lock
@ -8,9 +8,9 @@
|
||||
integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==
|
||||
|
||||
"@adobe/css-tools@^4.0.1":
|
||||
version "4.3.1"
|
||||
resolved "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.1.tgz"
|
||||
integrity sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg==
|
||||
version "4.3.2"
|
||||
resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.3.2.tgz#a6abc715fb6884851fca9dad37fc34739a04fd11"
|
||||
integrity sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw==
|
||||
|
||||
"@alloc/quick-lru@^5.2.0":
|
||||
version "5.2.0"
|
||||
@ -1608,6 +1608,13 @@
|
||||
tslib "^2.6.0"
|
||||
tsup "^7.1.0"
|
||||
|
||||
"@emnapi/runtime@^0.44.0":
|
||||
version "0.44.0"
|
||||
resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-0.44.0.tgz#1ef702f846cfcd559d28eb7673919087ba5b63e3"
|
||||
integrity sha512-ZX/etZEZw8DR7zAB1eVQT40lNo0jeqpb6dCgOvctB6FIQ5PoXfMuNY8+ayQfu8tNQbAB8gQWSSJupR8NxeiZXw==
|
||||
dependencies:
|
||||
tslib "^2.4.0"
|
||||
|
||||
"@esbuild/android-arm64@0.18.14":
|
||||
version "0.18.14"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.14.tgz#d86197e6ff965a187b2ea2704915f596a040ed4b"
|
||||
@ -2146,6 +2153,119 @@
|
||||
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044"
|
||||
integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==
|
||||
|
||||
"@img/sharp-darwin-arm64@0.33.0":
|
||||
version "0.33.0"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.0.tgz#b3e4ed1887f53faca5e95e3fd9f25181432353ed"
|
||||
integrity sha512-070tEheekI1LJWTGPC9WlQEa5UoKTXzzlORBHMX4TbfUxMiL336YHR8vBEUNsjse0RJCX8dZ4ZXwT595aEF1ug==
|
||||
optionalDependencies:
|
||||
"@img/sharp-libvips-darwin-arm64" "1.0.0"
|
||||
|
||||
"@img/sharp-darwin-x64@0.33.0":
|
||||
version "0.33.0"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.0.tgz#277714bff6e6d468162146019933a416467f3082"
|
||||
integrity sha512-pu/nvn152F3qbPeUkr+4e9zVvEhD3jhwzF473veQfMPkOYo9aoWXSfdZH/E6F+nYC3qvFjbxbvdDbUtEbghLqw==
|
||||
optionalDependencies:
|
||||
"@img/sharp-libvips-darwin-x64" "1.0.0"
|
||||
|
||||
"@img/sharp-libvips-darwin-arm64@1.0.0":
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.0.tgz#8baf27b01dabba524e885c30287e1916ab978de7"
|
||||
integrity sha512-VzYd6OwnUR81sInf3alj1wiokY50DjsHz5bvfnsFpxs5tqQxESoHtJO6xyksDs3RIkyhMWq2FufXo6GNSU9BMw==
|
||||
|
||||
"@img/sharp-libvips-darwin-x64@1.0.0":
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.0.tgz#509113f649d3ea0e99b76d41437fc0049d8ba2f9"
|
||||
integrity sha512-dD9OznTlHD6aovRswaPNEy8dKtSAmNo4++tO7uuR4o5VxbVAOoEQ1uSmN4iFAdQneTHws1lkTZeiXPrcCkh6IA==
|
||||
|
||||
"@img/sharp-libvips-linux-arm64@1.0.0":
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.0.tgz#9e131cc95f9f8aa36da9addee89efead21ad9993"
|
||||
integrity sha512-xTYThiqEZEZc0PRU90yVtM3KE7lw1bKdnDQ9kCTHWbqWyHOe4NpPOtMGy27YnN51q0J5dqRrvicfPbALIOeAZA==
|
||||
|
||||
"@img/sharp-libvips-linux-arm@1.0.0":
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.0.tgz#a529f68a28ab1d219907071c41ace029121d1c4f"
|
||||
integrity sha512-VwgD2eEikDJUk09Mn9Dzi1OW2OJFRQK+XlBTkUNmAWPrtj8Ly0yq05DFgu1VCMx2/DqCGQVi5A1dM9hTmxf3uw==
|
||||
|
||||
"@img/sharp-libvips-linux-s390x@1.0.0":
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.0.tgz#c26aaa9ee58b47ff901bb5f93f29c4ab3f03caf7"
|
||||
integrity sha512-o9E46WWBC6JsBlwU4QyU9578G77HBDT1NInd+aERfxeOPbk0qBZHgoDsQmA2v9TbqJRWzoBPx1aLOhprBMgPjw==
|
||||
|
||||
"@img/sharp-libvips-linux-x64@1.0.0":
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.0.tgz#7a04795fbf2668b9dd7c74bf8326cb779131d809"
|
||||
integrity sha512-naldaJy4hSVhWBgEjfdBY85CAa4UO+W1nx6a1sWStHZ7EUfNiuBTTN2KUYT5dH1+p/xij1t2QSXfCiFJoC5S/Q==
|
||||
|
||||
"@img/sharp-libvips-linuxmusl-arm64@1.0.0":
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.0.tgz#600e7322faa5ce124d3ae2cbf63808ea47678591"
|
||||
integrity sha512-OdorplCyvmSAPsoJLldtLh3nLxRrkAAAOHsGWGDYfN0kh730gifK+UZb3dWORRa6EusNqCTjfXV4GxvgJ/nPDQ==
|
||||
|
||||
"@img/sharp-libvips-linuxmusl-x64@1.0.0":
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.0.tgz#af33a04e75f192c5396c6a41df8b7b7bf15a8006"
|
||||
integrity sha512-FW8iK6rJrg+X2jKD0Ajhjv6y74lToIBEvkZhl42nZt563FfxkCYacrXZtd+q/sRQDypQLzY5WdLkVTbJoPyqNg==
|
||||
|
||||
"@img/sharp-linux-arm64@0.33.0":
|
||||
version "0.33.0"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.0.tgz#d9a361c1d5344754f6038cc9d74e1dd4d217f52f"
|
||||
integrity sha512-dcomVSrtgF70SyOr8RCOCQ8XGVThXwe71A1d8MGA+mXEVRJ/J6/TrCbBEJh9ddcEIIsrnrkolaEvYSHqVhswQw==
|
||||
optionalDependencies:
|
||||
"@img/sharp-libvips-linux-arm64" "1.0.0"
|
||||
|
||||
"@img/sharp-linux-arm@0.33.0":
|
||||
version "0.33.0"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.0.tgz#e0f804033d99ce2af73c78d47eeb118e28b4af41"
|
||||
integrity sha512-4horD3wMFd5a0ddbDY8/dXU9CaOgHjEHALAddXgafoR5oWq5s8X61PDgsSeh4Qupsdo6ycfPPSSNBrfVQnwwrg==
|
||||
optionalDependencies:
|
||||
"@img/sharp-libvips-linux-arm" "1.0.0"
|
||||
|
||||
"@img/sharp-linux-s390x@0.33.0":
|
||||
version "0.33.0"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.0.tgz#4b6d49f87364c60ae015825746f365385f1c3b54"
|
||||
integrity sha512-TiVJbx38J2rNVfA309ffSOB+3/7wOsZYQEOlKqOUdWD/nqkjNGrX+YQGz7nzcf5oy2lC+d37+w183iNXRZNngQ==
|
||||
optionalDependencies:
|
||||
"@img/sharp-libvips-linux-s390x" "1.0.0"
|
||||
|
||||
"@img/sharp-linux-x64@0.33.0":
|
||||
version "0.33.0"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.0.tgz#a4fb262f143f468aec974aad6e53d1859a75ec90"
|
||||
integrity sha512-PaZM4Zi7/Ek71WgTdvR+KzTZpBqrQOFcPe7/8ZoPRlTYYRe43k6TWsf4GVH6XKRLMYeSp8J89RfAhBrSP4itNA==
|
||||
optionalDependencies:
|
||||
"@img/sharp-libvips-linux-x64" "1.0.0"
|
||||
|
||||
"@img/sharp-linuxmusl-arm64@0.33.0":
|
||||
version "0.33.0"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.0.tgz#423a9e5e3ec1e6476dbdfd78dda91c6f062bfd67"
|
||||
integrity sha512-1QLbbN0zt+32eVrg7bb1lwtvEaZwlhEsY1OrijroMkwAqlHqFj6R33Y47s2XUv7P6Ie1PwCxK/uFnNqMnkd5kg==
|
||||
optionalDependencies:
|
||||
"@img/sharp-libvips-linuxmusl-arm64" "1.0.0"
|
||||
|
||||
"@img/sharp-linuxmusl-x64@0.33.0":
|
||||
version "0.33.0"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.0.tgz#9d0beac9a71cd7d3bc41eef63521e60edc3820f5"
|
||||
integrity sha512-CecqgB/CnkvCWFhmfN9ZhPGMLXaEBXl4o7WtA6U3Ztrlh/s7FUKX4vNxpMSYLIrWuuzjiaYdfU3+Tdqh1xaHfw==
|
||||
optionalDependencies:
|
||||
"@img/sharp-libvips-linuxmusl-x64" "1.0.0"
|
||||
|
||||
"@img/sharp-wasm32@0.33.0":
|
||||
version "0.33.0"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-wasm32/-/sharp-wasm32-0.33.0.tgz#5b085509f04256c43f201552fce5144fe0bd66b9"
|
||||
integrity sha512-Hn4js32gUX9qkISlemZBUPuMs0k/xNJebUNl/L6djnU07B/HAA2KaxRVb3HvbU5fL242hLOcp0+tR+M8dvJUFw==
|
||||
dependencies:
|
||||
"@emnapi/runtime" "^0.44.0"
|
||||
|
||||
"@img/sharp-win32-ia32@0.33.0":
|
||||
version "0.33.0"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.0.tgz#a89bc502a70e5547cbff9451d06f9962425e7b39"
|
||||
integrity sha512-5HfcsCZi3l5nPRF2q3bllMVMDXBqEWI3Q8KQONfzl0TferFE5lnsIG0A1YrntMAGqvkzdW6y1Ci1A2uTvxhfzg==
|
||||
|
||||
"@img/sharp-win32-x64@0.33.0":
|
||||
version "0.33.0"
|
||||
resolved "https://registry.yarnpkg.com/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.0.tgz#bfae1b82608a0d420e4b0b836ddb7dd58eaffa8e"
|
||||
integrity sha512-i3DtP/2ce1yKFj4OzOnOYltOEL/+dp4dc4dJXJBv6god1AFTcmkaA99H/7SwOmkCOBQkbVvA3lCGm3/5nDtf9Q==
|
||||
|
||||
"@improbable-eng/grpc-web@^0.14.1":
|
||||
version "0.14.1"
|
||||
resolved "https://registry.npmjs.org/@improbable-eng/grpc-web/-/grpc-web-0.14.1.tgz"
|
||||
@ -2682,10 +2802,10 @@
|
||||
resolved "https://registry.npmjs.org/@next/env/-/env-13.5.4.tgz"
|
||||
integrity sha512-LGegJkMvRNw90WWphGJ3RMHMVplYcOfRWf2Be3td3sUa+1AaxmsYyANsA+znrGCBjXJNi4XAQlSoEfUxs/4kIQ==
|
||||
|
||||
"@next/eslint-plugin-next@14.0.0":
|
||||
version "14.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-14.0.0.tgz#b299e61292b8abede7ecb37499feb817385801e6"
|
||||
integrity sha512-Ye37nNI09V3yt7pzuzSQtwlvuJ2CGzFszHXkcTHHZgNr7EhTMFLipn3VSJChy+e5+ahTdNApPphc3qCPUsn10A==
|
||||
"@next/eslint-plugin-next@14.0.4":
|
||||
version "14.0.4"
|
||||
resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-14.0.4.tgz#474fd88d92209270021186043513fbdc4203f5ec"
|
||||
integrity sha512-U3qMNHmEZoVmHA0j/57nRfi3AscXNvkOnxDmle/69Jz/G0o/gWjXTDdlgILZdrxQ0Lw/jv2mPW8PGy0EGIHXhQ==
|
||||
dependencies:
|
||||
glob "7.1.7"
|
||||
|
||||
@ -2974,30 +3094,30 @@
|
||||
"@noble/hashes" "~1.3.0"
|
||||
"@scure/base" "~1.1.0"
|
||||
|
||||
"@sentry-internal/tracing@7.77.0":
|
||||
version "7.77.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.77.0.tgz#f3d82486f8934a955b3dd2aa54c8d29586e42a37"
|
||||
integrity sha512-8HRF1rdqWwtINqGEdx8Iqs9UOP/n8E0vXUu3Nmbqj4p5sQPA7vvCfq+4Y4rTqZFc7sNdFpDsRION5iQEh8zfZw==
|
||||
"@sentry-internal/tracing@7.84.0":
|
||||
version "7.84.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.84.0.tgz#430da253ee5b075be4ef57f20ea842c0208bc6b0"
|
||||
integrity sha512-y9bGYA0OM6PEREfd+nk4UURZy29tpIw+7vQwpxWfEVs2fqq0/5TBFX/tKFb8AKUI9lVM8v0bcF0bNSCnuPQZHQ==
|
||||
dependencies:
|
||||
"@sentry/core" "7.77.0"
|
||||
"@sentry/types" "7.77.0"
|
||||
"@sentry/utils" "7.77.0"
|
||||
"@sentry/core" "7.84.0"
|
||||
"@sentry/types" "7.84.0"
|
||||
"@sentry/utils" "7.84.0"
|
||||
|
||||
"@sentry/browser@7.77.0":
|
||||
version "7.77.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.77.0.tgz#155440f1a0d3a1bbd5d564c28d6b0c9853a51d72"
|
||||
integrity sha512-nJ2KDZD90H8jcPx9BysQLiQW+w7k7kISCWeRjrEMJzjtge32dmHA8G4stlUTRIQugy5F+73cOayWShceFP7QJQ==
|
||||
"@sentry/browser@7.84.0":
|
||||
version "7.84.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.84.0.tgz#7c82470f0afbb6178f26127894e40e9ce2b1e6d6"
|
||||
integrity sha512-X50TlTKY9WzAnHsYc4FYrCWgm+CdVo0h02ggmodVBUpRLUBjj+cs5Q1plov/v/XeorSwmorNEMUu/n+XZNSsrA==
|
||||
dependencies:
|
||||
"@sentry-internal/tracing" "7.77.0"
|
||||
"@sentry/core" "7.77.0"
|
||||
"@sentry/replay" "7.77.0"
|
||||
"@sentry/types" "7.77.0"
|
||||
"@sentry/utils" "7.77.0"
|
||||
"@sentry-internal/tracing" "7.84.0"
|
||||
"@sentry/core" "7.84.0"
|
||||
"@sentry/replay" "7.84.0"
|
||||
"@sentry/types" "7.84.0"
|
||||
"@sentry/utils" "7.84.0"
|
||||
|
||||
"@sentry/cli@^1.74.6":
|
||||
version "1.75.0"
|
||||
resolved "https://registry.npmjs.org/@sentry/cli/-/cli-1.75.0.tgz"
|
||||
integrity sha512-vT8NurHy00GcN8dNqur4CMIYvFH3PaKdkX3qllVvi4syybKqjwoz+aWRCvprbYv0knweneFkLt1SmBWqazUMfA==
|
||||
"@sentry/cli@^1.77.1":
|
||||
version "1.77.1"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-1.77.1.tgz#ebcf884712ef6c3c75443f491ec16f6a22148aec"
|
||||
integrity sha512-OtJ7U9LeuPUAY/xow9wwcjM9w42IJIpDtClTKI/RliE685vd/OJUIpiAvebHNthDYpQynvwb/0iuF4fonh+CKw==
|
||||
dependencies:
|
||||
https-proxy-agent "^5.0.0"
|
||||
mkdirp "^0.5.5"
|
||||
@ -3006,101 +3126,102 @@
|
||||
proxy-from-env "^1.1.0"
|
||||
which "^2.0.2"
|
||||
|
||||
"@sentry/core@7.77.0":
|
||||
version "7.77.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.77.0.tgz#21100843132beeeff42296c8370cdcc7aa1d8510"
|
||||
integrity sha512-Tj8oTYFZ/ZD+xW8IGIsU6gcFXD/gfE+FUxUaeSosd9KHwBQNOLhZSsYo/tTVf/rnQI/dQnsd4onPZLiL+27aTg==
|
||||
"@sentry/core@7.84.0":
|
||||
version "7.84.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.84.0.tgz#01d33fc452044ffd8ea57b20f60304b9cfa2b9e1"
|
||||
integrity sha512-tbuwunbBx2kSex15IHCqHDnrMfIlqPc6w/76fwkGqokz3oh9GSEGlLICwmBWL8AypWimUg13IDtFpD0TJTriWA==
|
||||
dependencies:
|
||||
"@sentry/types" "7.77.0"
|
||||
"@sentry/utils" "7.77.0"
|
||||
"@sentry/types" "7.84.0"
|
||||
"@sentry/utils" "7.84.0"
|
||||
|
||||
"@sentry/integrations@7.77.0":
|
||||
version "7.77.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/integrations/-/integrations-7.77.0.tgz#f2717e05cb7c69363316ccd34096b2ea07ae4c59"
|
||||
integrity sha512-P055qXgBHeZNKnnVEs5eZYLdy6P49Zr77A1aWJuNih/EenzMy922GOeGy2mF6XYrn1YJSjEwsNMNsQkcvMTK8Q==
|
||||
"@sentry/integrations@7.84.0":
|
||||
version "7.84.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/integrations/-/integrations-7.84.0.tgz#3b016903e08f0dade74bbc152ea5605e231e39cd"
|
||||
integrity sha512-aUu95BhnHSf/W/F4BvsFnf4x+piHiah5a180YTMqWcHMkJr7MnCWNIad9RJuHlcINSfyHtUr5+Z4Bajzqg60lw==
|
||||
dependencies:
|
||||
"@sentry/core" "7.77.0"
|
||||
"@sentry/types" "7.77.0"
|
||||
"@sentry/utils" "7.77.0"
|
||||
"@sentry/core" "7.84.0"
|
||||
"@sentry/types" "7.84.0"
|
||||
"@sentry/utils" "7.84.0"
|
||||
localforage "^1.8.1"
|
||||
|
||||
"@sentry/nextjs@^7.77.0":
|
||||
version "7.77.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/nextjs/-/nextjs-7.77.0.tgz#036b1c45dd106e01d44967c97985464e108922be"
|
||||
integrity sha512-8tYPBt5luFjrng1sAMJqNjM9sq80q0jbt6yariADU9hEr7Zk8YqFaOI2/Q6yn9dZ6XyytIRtLEo54kk2AO94xw==
|
||||
"@sentry/nextjs@^7.84.0":
|
||||
version "7.84.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/nextjs/-/nextjs-7.84.0.tgz#f6ff11049c1934c378863a80d69ff8777fd8f853"
|
||||
integrity sha512-MjOGR3AZDVYfBQX2jZaxBMl7JaDSbu6uoiycdT+cMCYq722aB9Wv8vUzsCTzzV4/JmCjJFbfSis7S2Vkw7/9FA==
|
||||
dependencies:
|
||||
"@rollup/plugin-commonjs" "24.0.0"
|
||||
"@sentry/core" "7.77.0"
|
||||
"@sentry/integrations" "7.77.0"
|
||||
"@sentry/node" "7.77.0"
|
||||
"@sentry/react" "7.77.0"
|
||||
"@sentry/types" "7.77.0"
|
||||
"@sentry/utils" "7.77.0"
|
||||
"@sentry/vercel-edge" "7.77.0"
|
||||
"@sentry/webpack-plugin" "1.20.0"
|
||||
"@sentry/core" "7.84.0"
|
||||
"@sentry/integrations" "7.84.0"
|
||||
"@sentry/node" "7.84.0"
|
||||
"@sentry/react" "7.84.0"
|
||||
"@sentry/types" "7.84.0"
|
||||
"@sentry/utils" "7.84.0"
|
||||
"@sentry/vercel-edge" "7.84.0"
|
||||
"@sentry/webpack-plugin" "1.21.0"
|
||||
chalk "3.0.0"
|
||||
resolve "1.22.8"
|
||||
rollup "2.78.0"
|
||||
stacktrace-parser "^0.1.10"
|
||||
|
||||
"@sentry/node@7.77.0":
|
||||
version "7.77.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/node/-/node-7.77.0.tgz#a247452779a5bcb55724457707286e3e4a29dbbe"
|
||||
integrity sha512-Ob5tgaJOj0OYMwnocc6G/CDLWC7hXfVvKX/ofkF98+BbN/tQa5poL+OwgFn9BA8ud8xKzyGPxGU6LdZ8Oh3z/g==
|
||||
"@sentry/node@7.84.0":
|
||||
version "7.84.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/node/-/node-7.84.0.tgz#c06167106796b2b83c0a9b52fa56f8ca820034ca"
|
||||
integrity sha512-Xm3fIXT3TZOQi+6uQBavI8iOehD3PkY7v0y3hog0d4lQTH88vQK9BBsI+jZEq81Em+RG/u7vZNiFo6YMTnWF7Q==
|
||||
dependencies:
|
||||
"@sentry-internal/tracing" "7.77.0"
|
||||
"@sentry/core" "7.77.0"
|
||||
"@sentry/types" "7.77.0"
|
||||
"@sentry/utils" "7.77.0"
|
||||
"@sentry-internal/tracing" "7.84.0"
|
||||
"@sentry/core" "7.84.0"
|
||||
"@sentry/types" "7.84.0"
|
||||
"@sentry/utils" "7.84.0"
|
||||
https-proxy-agent "^5.0.0"
|
||||
|
||||
"@sentry/react@7.77.0":
|
||||
version "7.77.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/react/-/react-7.77.0.tgz#9da14e4b21eae4b5a6306d39bb7c42ef0827d2c2"
|
||||
integrity sha512-Q+htKzib5em0MdaQZMmPomaswaU3xhcVqmLi2CxqQypSjbYgBPPd+DuhrXKoWYLDDkkbY2uyfe4Lp3yLRWeXYw==
|
||||
"@sentry/react@7.84.0":
|
||||
version "7.84.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/react/-/react-7.84.0.tgz#2cb3192f7fb67b7696e8ece08d67229b193ddaa4"
|
||||
integrity sha512-VQZrEHwPKCYTSbRYXD2ohXcQg99G1Hgs8eevRUuRpdChmA2e3z/RvT00NlaSNNZrS86wPyKpAK6kickB/eSYrw==
|
||||
dependencies:
|
||||
"@sentry/browser" "7.77.0"
|
||||
"@sentry/types" "7.77.0"
|
||||
"@sentry/utils" "7.77.0"
|
||||
"@sentry/browser" "7.84.0"
|
||||
"@sentry/types" "7.84.0"
|
||||
"@sentry/utils" "7.84.0"
|
||||
hoist-non-react-statics "^3.3.2"
|
||||
|
||||
"@sentry/replay@7.77.0":
|
||||
version "7.77.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.77.0.tgz#21d242c9cd70a7235237216174873fd140b6eb80"
|
||||
integrity sha512-M9Ik2J5ekl+C1Och3wzLRZVaRGK33BlnBwfwf3qKjgLDwfKW+1YkwDfTHbc2b74RowkJbOVNcp4m8ptlehlSaQ==
|
||||
"@sentry/replay@7.84.0":
|
||||
version "7.84.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.84.0.tgz#7e17876d9a1802ee33800e2b2cbda4e026c0a2af"
|
||||
integrity sha512-c4PxT0ZpvkR9zXNfmAk3ojkm6eZ9+NlDze09RFBOCNo69QwIN90hnvbjXFC1+vRIJsfgo78Zr0ya/Wzb3Rog7Q==
|
||||
dependencies:
|
||||
"@sentry-internal/tracing" "7.77.0"
|
||||
"@sentry/core" "7.77.0"
|
||||
"@sentry/types" "7.77.0"
|
||||
"@sentry/utils" "7.77.0"
|
||||
"@sentry-internal/tracing" "7.84.0"
|
||||
"@sentry/core" "7.84.0"
|
||||
"@sentry/types" "7.84.0"
|
||||
"@sentry/utils" "7.84.0"
|
||||
|
||||
"@sentry/types@7.77.0":
|
||||
version "7.77.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.77.0.tgz#c5d00fe547b89ccde59cdea59143bf145cee3144"
|
||||
integrity sha512-nfb00XRJVi0QpDHg+JkqrmEBHsqBnxJu191Ded+Cs1OJ5oPXEW6F59LVcBScGvMqe+WEk1a73eH8XezwfgrTsA==
|
||||
"@sentry/types@7.84.0":
|
||||
version "7.84.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.84.0.tgz#e8db86c36c61659c3b2558f0aa8b6a073a756117"
|
||||
integrity sha512-VqGLIF3JOUrk7yIXjLXJvAORkZL1e3dDX0Q1okRehwyt/5CRE+mdUTeJZkBo9P9mBwgMyvtwklzOGGrzjb4eMA==
|
||||
|
||||
"@sentry/utils@7.77.0":
|
||||
version "7.77.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.77.0.tgz#1f88501f0b8777de31b371cf859d13c82ebe1379"
|
||||
integrity sha512-NmM2kDOqVchrey3N5WSzdQoCsyDkQkiRxExPaNI2oKQ/jMWHs9yt0tSy7otPBcXs0AP59ihl75Bvm1tDRcsp5g==
|
||||
"@sentry/utils@7.84.0":
|
||||
version "7.84.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.84.0.tgz#32861d922fa31e86dd2863a1d9dfc5a369e98952"
|
||||
integrity sha512-qdUVuxnRBvaf05AU+28R+xYtZmi/Ymf8os3Njq9g4XuA+QEkZLbzmIpRK5W9Ja7vUtjOeg29Xgg43A8znde9LQ==
|
||||
dependencies:
|
||||
"@sentry/types" "7.77.0"
|
||||
"@sentry/types" "7.84.0"
|
||||
|
||||
"@sentry/vercel-edge@7.77.0":
|
||||
version "7.77.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/vercel-edge/-/vercel-edge-7.77.0.tgz#6a90a869878e4e78803c4331c30aea841fcc6a73"
|
||||
integrity sha512-ffddPCgxVeAccPYuH5sooZeHBqDuJ9OIhIRYKoDi4TvmwAzWo58zzZWhRpkHqHgIQdQvhLVZ5F+FSQVWnYSOkw==
|
||||
"@sentry/vercel-edge@7.84.0":
|
||||
version "7.84.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/vercel-edge/-/vercel-edge-7.84.0.tgz#8e8d13ae0d0ca2334daba97d688b4e12c1ca905f"
|
||||
integrity sha512-vabN7aUYdTFTbufoPBnp8DdD3PaaWmlSuGnFQWmAl8AXaR+tB/3wQPfNqcVDdVoyoe8MADHtmU4KHJdMJYgzhg==
|
||||
dependencies:
|
||||
"@sentry/core" "7.77.0"
|
||||
"@sentry/types" "7.77.0"
|
||||
"@sentry/utils" "7.77.0"
|
||||
"@sentry-internal/tracing" "7.84.0"
|
||||
"@sentry/core" "7.84.0"
|
||||
"@sentry/types" "7.84.0"
|
||||
"@sentry/utils" "7.84.0"
|
||||
|
||||
"@sentry/webpack-plugin@1.20.0":
|
||||
version "1.20.0"
|
||||
resolved "https://registry.npmjs.org/@sentry/webpack-plugin/-/webpack-plugin-1.20.0.tgz"
|
||||
integrity sha512-Ssj1mJVFsfU6vMCOM2d+h+KQR7QHSfeIP16t4l20Uq/neqWXZUQ2yvQfe4S3BjdbJXz/X4Rw8Hfy1Sd0ocunYw==
|
||||
"@sentry/webpack-plugin@1.21.0":
|
||||
version "1.21.0"
|
||||
resolved "https://registry.yarnpkg.com/@sentry/webpack-plugin/-/webpack-plugin-1.21.0.tgz#bbe7cb293751f80246a4a56f9a7dd6de00f14b58"
|
||||
integrity sha512-x0PYIMWcsTauqxgl7vWUY6sANl+XGKtx7DCVnnY7aOIIlIna0jChTAPANTfA2QrK+VK+4I/4JxatCEZBnXh3Og==
|
||||
dependencies:
|
||||
"@sentry/cli" "^1.74.6"
|
||||
"@sentry/cli" "^1.77.1"
|
||||
webpack-sources "^2.0.0 || ^3.0.0"
|
||||
|
||||
"@sinclair/typebox@^0.27.8":
|
||||
@ -3130,10 +3251,10 @@
|
||||
lodash.debounce "^4.0.8"
|
||||
react-merge-refs "^2.0.1"
|
||||
|
||||
"@splinetool/runtime@^0.9.482":
|
||||
version "0.9.482"
|
||||
resolved "https://registry.npmjs.org/@splinetool/runtime/-/runtime-0.9.482.tgz"
|
||||
integrity sha512-AqLBmaACtF0gi1Xdt4ts+BMZKlnpgytoLUpa30dzer1s15Fy0Q1sU5v0BEpG29JN0DLEEdCTG3LCfNAg/jWtiQ==
|
||||
"@splinetool/runtime@^0.9.521":
|
||||
version "0.9.521"
|
||||
resolved "https://registry.yarnpkg.com/@splinetool/runtime/-/runtime-0.9.521.tgz#e55b0cda37a29456642229006a5cabbc4d9faada"
|
||||
integrity sha512-MJvC5ZDD6RYtOFEGiKkFw8q2X5CLc+T81lHymM/wCxAVeJ8MatYpCUtWQuOF/Loai2duYPadOGzZSqth/P9Mdw==
|
||||
dependencies:
|
||||
on-change "^4.0.0"
|
||||
semver-compare "^1.0.0"
|
||||
@ -3570,10 +3691,10 @@
|
||||
resolved "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.0.tgz"
|
||||
integrity sha512-HNB/9GHqu7Fo8AQiugyJbv6ZxYz58wef0esl4Mv828w1ZKpAshw/uFWVDUcIB9KKFeFKoxS3cHY07FFgtTRZ1g==
|
||||
|
||||
"@types/debounce-promise@^3.1.7":
|
||||
version "3.1.7"
|
||||
resolved "https://registry.npmjs.org/@types/debounce-promise/-/debounce-promise-3.1.7.tgz"
|
||||
integrity sha512-XzqG8zCd9n33gmusdQo0d4p9iRKg/mZbG52wfHxnuZZyeO68ryOT5xyv9Fk3vLAvQBUsHmSL14Cqpsx4jjzz1Q==
|
||||
"@types/debounce-promise@^3.1.9":
|
||||
version "3.1.9"
|
||||
resolved "https://registry.yarnpkg.com/@types/debounce-promise/-/debounce-promise-3.1.9.tgz#b59346fe5c24636ebe0fb88f2f7e41b888b1cd7c"
|
||||
integrity sha512-awNxydYSU+E2vL7EiOAMtiSOfL5gUM5X4YSE2A92qpxDJQ/rXz6oMPYBFDcDywlUmvIDI6zsqgq17cGm5CITQw==
|
||||
|
||||
"@types/estree@*", "@types/estree@^1.0.0":
|
||||
version "1.0.0"
|
||||
@ -3690,17 +3811,17 @@
|
||||
dependencies:
|
||||
"@types/react" "*"
|
||||
|
||||
"@types/react-helmet@^6.1.9":
|
||||
version "6.1.9"
|
||||
resolved "https://registry.yarnpkg.com/@types/react-helmet/-/react-helmet-6.1.9.tgz#e79e0def2ad4047cb67e83c5be7cfb3d2121615a"
|
||||
integrity sha512-nuOeTefP4yPTWHvjGksCBKb/4hsgJxSX7aSTjTIDFXJIkZ6Wo2Y4/cmE1FO9OlYBrHjKOer/0zLwY7s4qiQBtw==
|
||||
"@types/react-helmet@^6.1.11":
|
||||
version "6.1.11"
|
||||
resolved "https://registry.yarnpkg.com/@types/react-helmet/-/react-helmet-6.1.11.tgz#8cafcafff38f75361f451563ba7b406b0c5d3907"
|
||||
integrity sha512-0QcdGLddTERotCXo3VFlUSWO3ztraw8nZ6e3zJSgG7apwV5xt+pJUS8ewPBqT4NYB1optGLprNQzFleIY84u/g==
|
||||
dependencies:
|
||||
"@types/react" "*"
|
||||
|
||||
"@types/react@*", "@types/react@18.2.33":
|
||||
version "18.2.33"
|
||||
resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.33.tgz#055356243dc4350a9ee6c6a2c07c5cae12e38877"
|
||||
integrity sha512-v+I7S+hu3PIBoVkKGpSYYpiBT1ijqEzWpzQD62/jm4K74hPpSP7FF9BnKG6+fg2+62weJYkkBWDJlZt5JO/9hg==
|
||||
"@types/react@*", "@types/react@18.2.41":
|
||||
version "18.2.41"
|
||||
resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.41.tgz#9eea044246bdb10510df89ef7f8422a8b6ad8fb9"
|
||||
integrity sha512-CwOGr/PiLiNBxEBqpJ7fO3kocP/2SSuC9fpH5K7tusrg4xPSRT/193rzolYwQnTN02We/ATXKnb6GqA5w4fRxw==
|
||||
dependencies:
|
||||
"@types/prop-types" "*"
|
||||
"@types/scheduler" "*"
|
||||
@ -4088,12 +4209,12 @@ ansi-escapes@^4.2.1:
|
||||
dependencies:
|
||||
type-fest "^0.21.3"
|
||||
|
||||
ansi-escapes@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz"
|
||||
integrity sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==
|
||||
ansi-escapes@^6.2.0:
|
||||
version "6.2.0"
|
||||
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-6.2.0.tgz#8a13ce75286f417f1963487d86ba9f90dccf9947"
|
||||
integrity sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==
|
||||
dependencies:
|
||||
type-fest "^1.0.2"
|
||||
type-fest "^3.0.0"
|
||||
|
||||
ansi-regex@^5.0.1:
|
||||
version "5.0.1"
|
||||
@ -4124,7 +4245,7 @@ ansi-styles@^5.0.0:
|
||||
resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz"
|
||||
integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==
|
||||
|
||||
ansi-styles@^6.0.0, ansi-styles@^6.1.0:
|
||||
ansi-styles@^6.0.0, ansi-styles@^6.2.1:
|
||||
version "6.2.1"
|
||||
resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz"
|
||||
integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
|
||||
@ -4723,13 +4844,13 @@ cli-cursor@^4.0.0:
|
||||
dependencies:
|
||||
restore-cursor "^4.0.0"
|
||||
|
||||
cli-truncate@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz"
|
||||
integrity sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==
|
||||
cli-truncate@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-4.0.0.tgz#6cc28a2924fee9e25ce91e973db56c7066e6172a"
|
||||
integrity sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==
|
||||
dependencies:
|
||||
slice-ansi "^5.0.0"
|
||||
string-width "^5.0.0"
|
||||
string-width "^7.0.0"
|
||||
|
||||
client-only@0.0.1, client-only@^0.0.1:
|
||||
version "0.0.1"
|
||||
@ -4793,11 +4914,27 @@ color-name@1.1.3:
|
||||
resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz"
|
||||
integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
|
||||
|
||||
color-name@~1.1.4:
|
||||
color-name@^1.0.0, color-name@~1.1.4:
|
||||
version "1.1.4"
|
||||
resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
|
||||
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
|
||||
|
||||
color-string@^1.9.0:
|
||||
version "1.9.1"
|
||||
resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4"
|
||||
integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==
|
||||
dependencies:
|
||||
color-name "^1.0.0"
|
||||
simple-swizzle "^0.2.2"
|
||||
|
||||
color@^4.2.3:
|
||||
version "4.2.3"
|
||||
resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a"
|
||||
integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==
|
||||
dependencies:
|
||||
color-convert "^2.0.1"
|
||||
color-string "^1.9.0"
|
||||
|
||||
colorette@^2.0.20:
|
||||
version "2.0.20"
|
||||
resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz"
|
||||
@ -5240,6 +5377,11 @@ detect-browser@5.3.0:
|
||||
resolved "https://registry.npmjs.org/detect-browser/-/detect-browser-5.3.0.tgz"
|
||||
integrity sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==
|
||||
|
||||
detect-libc@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.2.tgz#8ccf2ba9315350e1241b88d0ac3b0e1fbd99605d"
|
||||
integrity sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==
|
||||
|
||||
detect-newline@^3.0.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz"
|
||||
@ -5377,11 +5519,6 @@ duplexify@^4.1.2:
|
||||
readable-stream "^3.1.1"
|
||||
stream-shift "^1.0.0"
|
||||
|
||||
eastasianwidth@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz"
|
||||
integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
|
||||
|
||||
eccrypto@1.1.6:
|
||||
version "1.1.6"
|
||||
resolved "https://registry.npmjs.org/eccrypto/-/eccrypto-1.1.6.tgz"
|
||||
@ -5417,6 +5554,11 @@ emittery@^0.13.1:
|
||||
resolved "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz"
|
||||
integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==
|
||||
|
||||
emoji-regex@^10.3.0:
|
||||
version "10.3.0"
|
||||
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.3.0.tgz#76998b9268409eb3dae3de989254d456e70cfe23"
|
||||
integrity sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==
|
||||
|
||||
emoji-regex@^8.0.0:
|
||||
version "8.0.0"
|
||||
resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz"
|
||||
@ -5663,12 +5805,12 @@ escodegen@^2.0.0:
|
||||
optionalDependencies:
|
||||
source-map "~0.6.1"
|
||||
|
||||
eslint-config-next@^14.0.0:
|
||||
version "14.0.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-14.0.0.tgz#c896867c8f08dab65205fb3b4bcc5d9ab8646d08"
|
||||
integrity sha512-jtXeE+/pGQ3h9n11QyyuPN50kO13GO5XvjU5ZRq6W+XTpOMjyobWmK2s7aowy0FtzA49krJzYzEU9s1RMwoJ6g==
|
||||
eslint-config-next@^14.0.4:
|
||||
version "14.0.4"
|
||||
resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-14.0.4.tgz#7cd2c0a3b310203d41cf0dbf9d31f9b0a6235b4a"
|
||||
integrity sha512-9/xbOHEQOmQtqvQ1UsTQZpnA7SlDMBtuKJ//S4JnoyK3oGLhILKXdBgu/UO7lQo/2xOykQULS1qQ6p2+EpHgAQ==
|
||||
dependencies:
|
||||
"@next/eslint-plugin-next" "14.0.0"
|
||||
"@next/eslint-plugin-next" "14.0.4"
|
||||
"@rushstack/eslint-patch" "^1.3.3"
|
||||
"@typescript-eslint/parser" "^5.4.2 || ^6.0.0"
|
||||
eslint-import-resolver-node "^0.3.6"
|
||||
@ -6267,6 +6409,11 @@ get-caller-file@^2.0.5:
|
||||
resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz"
|
||||
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
|
||||
|
||||
get-east-asian-width@^1.0.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz#5e6ebd9baee6fb8b7b6bd505221065f0cd91f64e"
|
||||
integrity sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==
|
||||
|
||||
get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz"
|
||||
@ -6732,6 +6879,11 @@ is-arrayish@^0.2.1:
|
||||
resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz"
|
||||
integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==
|
||||
|
||||
is-arrayish@^0.3.1:
|
||||
version "0.3.2"
|
||||
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
|
||||
integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
|
||||
|
||||
is-async-function@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz"
|
||||
@ -6807,6 +6959,13 @@ is-fullwidth-code-point@^4.0.0:
|
||||
resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz"
|
||||
integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==
|
||||
|
||||
is-fullwidth-code-point@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz#9609efced7c2f97da7b60145ef481c787c7ba704"
|
||||
integrity sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==
|
||||
dependencies:
|
||||
get-east-asian-width "^1.0.0"
|
||||
|
||||
is-generator-fn@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz"
|
||||
@ -7634,7 +7793,12 @@ lie@3.1.1:
|
||||
dependencies:
|
||||
immediate "~3.0.5"
|
||||
|
||||
lilconfig@2.1.0, lilconfig@^2.0.5, lilconfig@^2.1.0:
|
||||
lilconfig@3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.0.0.tgz#f8067feb033b5b74dab4602a5f5029420be749bc"
|
||||
integrity sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==
|
||||
|
||||
lilconfig@^2.0.5, lilconfig@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz"
|
||||
integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==
|
||||
@ -7651,33 +7815,33 @@ link-module-alias@^1.2.0:
|
||||
dependencies:
|
||||
chalk "^2.4.1"
|
||||
|
||||
lint-staged@^15.0.1:
|
||||
version "15.0.1"
|
||||
resolved "https://registry.npmjs.org/lint-staged/-/lint-staged-15.0.1.tgz"
|
||||
integrity sha512-2IU5OWmCaxch0X0+IBF4/v7sutpB+F3qoXbro43pYjQTOo5wumckjxoxn47pQBqqBsCWrD5HnI2uG/zJA7isew==
|
||||
lint-staged@^15.2.0:
|
||||
version "15.2.0"
|
||||
resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-15.2.0.tgz#3111534ca58096a3c8f70b044b6e7fe21b36f859"
|
||||
integrity sha512-TFZzUEV00f+2YLaVPWBWGAMq7So6yQx+GG8YRMDeOEIf95Zn5RyiLMsEiX4KTNl9vq/w+NqRJkLA1kPIo15ufQ==
|
||||
dependencies:
|
||||
chalk "5.3.0"
|
||||
commander "11.1.0"
|
||||
debug "4.3.4"
|
||||
execa "8.0.1"
|
||||
lilconfig "2.1.0"
|
||||
listr2 "7.0.1"
|
||||
lilconfig "3.0.0"
|
||||
listr2 "8.0.0"
|
||||
micromatch "4.0.5"
|
||||
pidtree "0.6.0"
|
||||
string-argv "0.3.2"
|
||||
yaml "2.3.2"
|
||||
yaml "2.3.4"
|
||||
|
||||
listr2@7.0.1:
|
||||
version "7.0.1"
|
||||
resolved "https://registry.npmjs.org/listr2/-/listr2-7.0.1.tgz"
|
||||
integrity sha512-nz+7hwgbDp8eWNoDgzdl4hA/xDSLrNRzPu1TLgOYs6l5Y+Ma6zVWWy9Oyt9TQFONwKoSPoka3H50D3vD5EuNwg==
|
||||
listr2@8.0.0:
|
||||
version "8.0.0"
|
||||
resolved "https://registry.yarnpkg.com/listr2/-/listr2-8.0.0.tgz#aa7c230995f8ce378585f7c96c0c6d1cefa4700d"
|
||||
integrity sha512-u8cusxAcyqAiQ2RhYvV7kRKNLgUvtObIbhOX2NCXqvp1UU32xIg5CT22ykS2TPKJXZWJwtK3IKLiqAGlGNE+Zg==
|
||||
dependencies:
|
||||
cli-truncate "^3.1.0"
|
||||
cli-truncate "^4.0.0"
|
||||
colorette "^2.0.20"
|
||||
eventemitter3 "^5.0.1"
|
||||
log-update "^5.0.1"
|
||||
log-update "^6.0.0"
|
||||
rfdc "^1.3.0"
|
||||
wrap-ansi "^8.1.0"
|
||||
wrap-ansi "^9.0.0"
|
||||
|
||||
load-tsconfig@^0.2.3:
|
||||
version "0.2.5"
|
||||
@ -7740,16 +7904,16 @@ lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21:
|
||||
resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz"
|
||||
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
|
||||
|
||||
log-update@^5.0.1:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.npmjs.org/log-update/-/log-update-5.0.1.tgz"
|
||||
integrity sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==
|
||||
log-update@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/log-update/-/log-update-6.0.0.tgz#0ddeb7ac6ad658c944c1de902993fce7c33f5e59"
|
||||
integrity sha512-niTvB4gqvtof056rRIrTZvjNYE4rCUzO6X/X+kYjd7WFxXeJ0NwEFnRxX6ehkvv3jTwrXnNdtAak5XYZuIyPFw==
|
||||
dependencies:
|
||||
ansi-escapes "^5.0.0"
|
||||
ansi-escapes "^6.2.0"
|
||||
cli-cursor "^4.0.0"
|
||||
slice-ansi "^5.0.0"
|
||||
strip-ansi "^7.0.1"
|
||||
wrap-ansi "^8.0.1"
|
||||
slice-ansi "^7.0.0"
|
||||
strip-ansi "^7.1.0"
|
||||
wrap-ansi "^9.0.0"
|
||||
|
||||
long@^4.0.0:
|
||||
version "4.0.0"
|
||||
@ -8664,20 +8828,18 @@ react-draggable@^4.4.6:
|
||||
clsx "^1.1.1"
|
||||
prop-types "^15.8.1"
|
||||
|
||||
react-fast-compare@^3.2.0:
|
||||
react-fast-compare@^3.2.2:
|
||||
version "3.2.2"
|
||||
resolved "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz"
|
||||
resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.2.tgz#929a97a532304ce9fee4bcae44234f1ce2c21d49"
|
||||
integrity sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==
|
||||
|
||||
react-helmet-async@^1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.3.0.tgz"
|
||||
integrity sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==
|
||||
react-helmet-async@^2.0.3:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/react-helmet-async/-/react-helmet-async-2.0.3.tgz#904f79d906f91da6728dab6a062c3b8354930881"
|
||||
integrity sha512-7/X3ehSCbjCaIljWa39Bb7F1Y2JWM23FN80kLozx2TdgzUmxKDSLN6qu06NG0Srzm8ljGOjgk7r7CXeEOx4MPw==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.12.5"
|
||||
invariant "^2.2.4"
|
||||
prop-types "^15.7.2"
|
||||
react-fast-compare "^3.2.0"
|
||||
react-fast-compare "^3.2.2"
|
||||
shallowequal "^1.1.0"
|
||||
|
||||
react-is@^16.10.2, react-is@^16.13.1, react-is@^16.7.0:
|
||||
@ -9215,6 +9377,35 @@ shallowequal@^1.1.0:
|
||||
resolved "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz"
|
||||
integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==
|
||||
|
||||
sharp@^0.33.0:
|
||||
version "0.33.0"
|
||||
resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.33.0.tgz#95f77cda3684522e210ab55a167dad6cb5fbfe4f"
|
||||
integrity sha512-99DZKudjm/Rmz+M0/26t4DKpXyywAOJaayGS9boEn7FvgtG0RYBi46uPE2c+obcJRtA3AZa0QwJot63gJQ1F0Q==
|
||||
dependencies:
|
||||
color "^4.2.3"
|
||||
detect-libc "^2.0.2"
|
||||
semver "^7.5.4"
|
||||
optionalDependencies:
|
||||
"@img/sharp-darwin-arm64" "0.33.0"
|
||||
"@img/sharp-darwin-x64" "0.33.0"
|
||||
"@img/sharp-libvips-darwin-arm64" "1.0.0"
|
||||
"@img/sharp-libvips-darwin-x64" "1.0.0"
|
||||
"@img/sharp-libvips-linux-arm" "1.0.0"
|
||||
"@img/sharp-libvips-linux-arm64" "1.0.0"
|
||||
"@img/sharp-libvips-linux-s390x" "1.0.0"
|
||||
"@img/sharp-libvips-linux-x64" "1.0.0"
|
||||
"@img/sharp-libvips-linuxmusl-arm64" "1.0.0"
|
||||
"@img/sharp-libvips-linuxmusl-x64" "1.0.0"
|
||||
"@img/sharp-linux-arm" "0.33.0"
|
||||
"@img/sharp-linux-arm64" "0.33.0"
|
||||
"@img/sharp-linux-s390x" "0.33.0"
|
||||
"@img/sharp-linux-x64" "0.33.0"
|
||||
"@img/sharp-linuxmusl-arm64" "0.33.0"
|
||||
"@img/sharp-linuxmusl-x64" "0.33.0"
|
||||
"@img/sharp-wasm32" "0.33.0"
|
||||
"@img/sharp-win32-ia32" "0.33.0"
|
||||
"@img/sharp-win32-x64" "0.33.0"
|
||||
|
||||
shebang-command@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz"
|
||||
@ -9263,6 +9454,13 @@ signal-exit@^4.1.0:
|
||||
resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz"
|
||||
integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
|
||||
|
||||
simple-swizzle@^0.2.2:
|
||||
version "0.2.2"
|
||||
resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
|
||||
integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==
|
||||
dependencies:
|
||||
is-arrayish "^0.3.1"
|
||||
|
||||
sisteransi@^1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz"
|
||||
@ -9286,6 +9484,14 @@ slice-ansi@^5.0.0:
|
||||
ansi-styles "^6.0.0"
|
||||
is-fullwidth-code-point "^4.0.0"
|
||||
|
||||
slice-ansi@^7.0.0:
|
||||
version "7.1.0"
|
||||
resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-7.1.0.tgz#cd6b4655e298a8d1bdeb04250a433094b347b9a9"
|
||||
integrity sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==
|
||||
dependencies:
|
||||
ansi-styles "^6.2.1"
|
||||
is-fullwidth-code-point "^5.0.0"
|
||||
|
||||
snake-case@^3.0.4:
|
||||
version "3.0.4"
|
||||
resolved "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz"
|
||||
@ -9413,14 +9619,14 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
|
||||
is-fullwidth-code-point "^3.0.0"
|
||||
strip-ansi "^6.0.1"
|
||||
|
||||
string-width@^5.0.0, string-width@^5.0.1:
|
||||
version "5.1.2"
|
||||
resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz"
|
||||
integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==
|
||||
string-width@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-7.0.0.tgz#14aa1b7aaa126d5b64fa79d3c894da8a9650ba06"
|
||||
integrity sha512-GPQHj7row82Hjo9hKZieKcHIhaAIKOJvFSIZXuCU9OASVZrMNUaZuz++SPVrBjnLsnk4k+z9f2EIypgxf2vNFw==
|
||||
dependencies:
|
||||
eastasianwidth "^0.2.0"
|
||||
emoji-regex "^9.2.2"
|
||||
strip-ansi "^7.0.1"
|
||||
emoji-regex "^10.3.0"
|
||||
get-east-asian-width "^1.0.0"
|
||||
strip-ansi "^7.1.0"
|
||||
|
||||
string.prototype.matchall@^4.0.8:
|
||||
version "4.0.8"
|
||||
@ -9507,9 +9713,9 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1:
|
||||
dependencies:
|
||||
ansi-regex "^5.0.1"
|
||||
|
||||
strip-ansi@^7.0.1:
|
||||
strip-ansi@^7.1.0:
|
||||
version "7.1.0"
|
||||
resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz"
|
||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45"
|
||||
integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==
|
||||
dependencies:
|
||||
ansi-regex "^6.0.1"
|
||||
@ -9929,16 +10135,16 @@ type-fest@^0.7.1:
|
||||
resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz"
|
||||
integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==
|
||||
|
||||
type-fest@^1.0.2:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz"
|
||||
integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==
|
||||
|
||||
type-fest@^2.5.2:
|
||||
version "2.19.0"
|
||||
resolved "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz"
|
||||
integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==
|
||||
|
||||
type-fest@^3.0.0:
|
||||
version "3.13.1"
|
||||
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-3.13.1.tgz#bb744c1f0678bea7543a2d1ec24e83e68e8c8706"
|
||||
integrity sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==
|
||||
|
||||
typed-array-buffer@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz"
|
||||
@ -10308,14 +10514,14 @@ wrap-ansi@^7.0.0:
|
||||
string-width "^4.1.0"
|
||||
strip-ansi "^6.0.0"
|
||||
|
||||
wrap-ansi@^8.0.1, wrap-ansi@^8.1.0:
|
||||
version "8.1.0"
|
||||
resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz"
|
||||
integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==
|
||||
wrap-ansi@^9.0.0:
|
||||
version "9.0.0"
|
||||
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-9.0.0.tgz#1a3dc8b70d85eeb8398ddfb1e4a02cd186e58b3e"
|
||||
integrity sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==
|
||||
dependencies:
|
||||
ansi-styles "^6.1.0"
|
||||
string-width "^5.0.1"
|
||||
strip-ansi "^7.0.1"
|
||||
ansi-styles "^6.2.1"
|
||||
string-width "^7.0.0"
|
||||
strip-ansi "^7.1.0"
|
||||
|
||||
wrappy@1:
|
||||
version "1.0.2"
|
||||
@ -10383,10 +10589,10 @@ yallist@^4.0.0:
|
||||
resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz"
|
||||
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
|
||||
|
||||
yaml@2.3.2, yaml@^2.1.1:
|
||||
version "2.3.2"
|
||||
resolved "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz"
|
||||
integrity sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==
|
||||
yaml@2.3.4, yaml@^2.1.1:
|
||||
version "2.3.4"
|
||||
resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2"
|
||||
integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==
|
||||
|
||||
yargs-parser@^20.2.2:
|
||||
version "20.2.9"
|
||||
|
Loading…
Reference in New Issue
Block a user