diff --git a/packages/synapse-interface/CHANGELOG.md b/packages/synapse-interface/CHANGELOG.md
index 7b39baddcb..799822118e 100644
--- a/packages/synapse-interface/CHANGELOG.md
+++ b/packages/synapse-interface/CHANGELOG.md
@@ -3,6 +3,99 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+## [0.9.8](https://github.com/synapsecns/sanguine/compare/@synapsecns/synapse-interface@0.9.7...@synapsecns/synapse-interface@0.9.8) (2024-03-14)
+
+**Note:** Version bump only for package @synapsecns/synapse-interface
+
+
+
+
+
+## [0.9.7](https://github.com/synapsecns/sanguine/compare/@synapsecns/synapse-interface@0.9.6...@synapsecns/synapse-interface@0.9.7) (2024-03-14)
+
+**Note:** Version bump only for package @synapsecns/synapse-interface
+
+
+
+
+
+## [0.9.6](https://github.com/synapsecns/sanguine/compare/@synapsecns/synapse-interface@0.9.5...@synapsecns/synapse-interface@0.9.6) (2024-03-14)
+
+**Note:** Version bump only for package @synapsecns/synapse-interface
+
+
+
+
+
+## [0.9.5](https://github.com/synapsecns/sanguine/compare/@synapsecns/synapse-interface@0.9.4...@synapsecns/synapse-interface@0.9.5) (2024-03-14)
+
+
+### Bug Fixes
+
+* **synapse-interface:** fixes explorer images ([#2292](https://github.com/synapsecns/sanguine/issues/2292)) ([98f48b1](https://github.com/synapsecns/sanguine/commit/98f48b165f45b2a9b8f291e3020872029ae20abb))
+
+
+
+
+
+## [0.9.4](https://github.com/synapsecns/sanguine/compare/@synapsecns/synapse-interface@0.9.3...@synapsecns/synapse-interface@0.9.4) (2024-03-14)
+
+
+### Bug Fixes
+
+* **synapse-interface:** deprecate unused dependencies ([#2287](https://github.com/synapsecns/sanguine/issues/2287)) ([e14071b](https://github.com/synapsecns/sanguine/commit/e14071bf1014050036b5e2e0858aa1e84aad2e18))
+
+
+
+
+
+## [0.9.3](https://github.com/synapsecns/sanguine/compare/@synapsecns/synapse-interface@0.9.2...@synapsecns/synapse-interface@0.9.3) (2024-03-14)
+
+**Note:** Version bump only for package @synapsecns/synapse-interface
+
+
+
+
+
+## [0.9.2](https://github.com/synapsecns/sanguine/compare/@synapsecns/synapse-interface@0.9.1...@synapsecns/synapse-interface@0.9.2) (2024-03-14)
+
+**Note:** Version bump only for package @synapsecns/synapse-interface
+
+
+
+
+
+## [0.9.1](https://github.com/synapsecns/sanguine/compare/@synapsecns/synapse-interface@0.9.0...@synapsecns/synapse-interface@0.9.1) (2024-03-14)
+
+**Note:** Version bump only for package @synapsecns/synapse-interface
+
+
+
+
+
+
+# [0.9.0](https://github.com/synapsecns/sanguine/compare/@synapsecns/synapse-interface@0.8.0...@synapsecns/synapse-interface@0.9.0) (2024-03-13)
+
+
+### Features
+
+* **synapse-interface:** use both rebate displays in bridge card ([#2276](https://github.com/synapsecns/sanguine/issues/2276)) ([45fbfdc](https://github.com/synapsecns/sanguine/commit/45fbfdc245647b8db87b889e252fa4aece49f501))
+
+
+
+
+
+# [0.8.0](https://github.com/synapsecns/sanguine/compare/@synapsecns/synapse-interface@0.7.1...@synapsecns/synapse-interface@0.8.0) (2024-03-13)
+
+
+### Features
+
+* **synapse-interface:** ecotone and metis upgrade downtime, remove eth dencun ([#2274](https://github.com/synapsecns/sanguine/issues/2274)) ([f527ce5](https://github.com/synapsecns/sanguine/commit/f527ce53c883672232f43da90f0614a8a580442a))
+
+
+
+
+
## [0.7.1](https://github.com/synapsecns/sanguine/compare/@synapsecns/synapse-interface@0.7.0...@synapsecns/synapse-interface@0.7.1) (2024-03-13)
**Note:** Version bump only for package @synapsecns/synapse-interface
@@ -11,6 +104,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
+
# [0.7.0](https://github.com/synapsecns/sanguine/compare/@synapsecns/synapse-interface@0.6.2...@synapsecns/synapse-interface@0.7.0) (2024-03-13)
diff --git a/packages/synapse-interface/assets/chains/arbitrum.svg b/packages/synapse-interface/assets/chains/arbitrum.svg
index f098c0d248..cb285a937a 100644
--- a/packages/synapse-interface/assets/chains/arbitrum.svg
+++ b/packages/synapse-interface/assets/chains/arbitrum.svg
@@ -1,8 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/chains/aurora.svg b/packages/synapse-interface/assets/chains/aurora.svg
index f3a1875f12..5b5441b3dd 100644
--- a/packages/synapse-interface/assets/chains/aurora.svg
+++ b/packages/synapse-interface/assets/chains/aurora.svg
@@ -1,10 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/chains/avalanche.svg b/packages/synapse-interface/assets/chains/avalanche.svg
index ab95c44cab..5695785b66 100644
--- a/packages/synapse-interface/assets/chains/avalanche.svg
+++ b/packages/synapse-interface/assets/chains/avalanche.svg
@@ -1,4 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/chains/base.svg b/packages/synapse-interface/assets/chains/base.svg
index 75100d4bd2..5dd1e67af0 100644
--- a/packages/synapse-interface/assets/chains/base.svg
+++ b/packages/synapse-interface/assets/chains/base.svg
@@ -1,10 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/chains/bnb.svg b/packages/synapse-interface/assets/chains/bnb.svg
index 3af90289df..4279646a3d 100644
--- a/packages/synapse-interface/assets/chains/bnb.svg
+++ b/packages/synapse-interface/assets/chains/bnb.svg
@@ -1,3 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/chains/boba.svg b/packages/synapse-interface/assets/chains/boba.svg
index a1177ea681..6f3f19fdfa 100644
--- a/packages/synapse-interface/assets/chains/boba.svg
+++ b/packages/synapse-interface/assets/chains/boba.svg
@@ -1,11 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/chains/canto.svg b/packages/synapse-interface/assets/chains/canto.svg
index 9312b7c0cf..20e0fe2177 100644
--- a/packages/synapse-interface/assets/chains/canto.svg
+++ b/packages/synapse-interface/assets/chains/canto.svg
@@ -1,3 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/chains/cronos.svg b/packages/synapse-interface/assets/chains/cronos.svg
index 289246bb8b..f2c429fc7f 100644
--- a/packages/synapse-interface/assets/chains/cronos.svg
+++ b/packages/synapse-interface/assets/chains/cronos.svg
@@ -1,5 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/chains/dfk.svg b/packages/synapse-interface/assets/chains/dfk.svg
index ccc5869eb9..7daf4cc71e 100644
--- a/packages/synapse-interface/assets/chains/dfk.svg
+++ b/packages/synapse-interface/assets/chains/dfk.svg
@@ -1,16 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/chains/dogechain.svg b/packages/synapse-interface/assets/chains/dogechain.svg
index 29058988eb..9c8a52c0cb 100644
--- a/packages/synapse-interface/assets/chains/dogechain.svg
+++ b/packages/synapse-interface/assets/chains/dogechain.svg
@@ -1,9 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/chains/ethereum.svg b/packages/synapse-interface/assets/chains/ethereum.svg
index 0b13331176..407dcd3072 100644
--- a/packages/synapse-interface/assets/chains/ethereum.svg
+++ b/packages/synapse-interface/assets/chains/ethereum.svg
@@ -1,9 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/chains/fantom.svg b/packages/synapse-interface/assets/chains/fantom.svg
index 47788393d7..3e23ff5c0e 100644
--- a/packages/synapse-interface/assets/chains/fantom.svg
+++ b/packages/synapse-interface/assets/chains/fantom.svg
@@ -1,4 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/chains/harmony.svg b/packages/synapse-interface/assets/chains/harmony.svg
index 1ed4fa47b6..4ce9dc2a07 100644
--- a/packages/synapse-interface/assets/chains/harmony.svg
+++ b/packages/synapse-interface/assets/chains/harmony.svg
@@ -1,10 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/chains/klaytn.svg b/packages/synapse-interface/assets/chains/klaytn.svg
index 91a75d69f2..88efdb79b5 100644
--- a/packages/synapse-interface/assets/chains/klaytn.svg
+++ b/packages/synapse-interface/assets/chains/klaytn.svg
@@ -1,30 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/chains/metis.svg b/packages/synapse-interface/assets/chains/metis.svg
index a6deadf00d..fd1342a2c0 100644
--- a/packages/synapse-interface/assets/chains/metis.svg
+++ b/packages/synapse-interface/assets/chains/metis.svg
@@ -1,3 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/chains/moonbeam.svg b/packages/synapse-interface/assets/chains/moonbeam.svg
index dc4a6cb7a1..0cbeda36a7 100644
--- a/packages/synapse-interface/assets/chains/moonbeam.svg
+++ b/packages/synapse-interface/assets/chains/moonbeam.svg
@@ -1,17 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/chains/moonriver.svg b/packages/synapse-interface/assets/chains/moonriver.svg
index b9c79fc2e1..07cf4ddfcd 100644
--- a/packages/synapse-interface/assets/chains/moonriver.svg
+++ b/packages/synapse-interface/assets/chains/moonriver.svg
@@ -1,19 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/chains/optimism.svg b/packages/synapse-interface/assets/chains/optimism.svg
index 731740a446..7378f33b2b 100644
--- a/packages/synapse-interface/assets/chains/optimism.svg
+++ b/packages/synapse-interface/assets/chains/optimism.svg
@@ -1,5 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/chains/polygon.svg b/packages/synapse-interface/assets/chains/polygon.svg
index bd44d1a402..879ae5a82c 100644
--- a/packages/synapse-interface/assets/chains/polygon.svg
+++ b/packages/synapse-interface/assets/chains/polygon.svg
@@ -1,10 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/explorer/arbitrum.svg b/packages/synapse-interface/assets/explorer/arbiscan.svg
similarity index 100%
rename from packages/synapse-interface/assets/explorer/arbitrum.svg
rename to packages/synapse-interface/assets/explorer/arbiscan.svg
diff --git a/packages/synapse-interface/assets/explorer/aurora.svg b/packages/synapse-interface/assets/explorer/aurora.svg
deleted file mode 100644
index 3ea0ebae01..0000000000
--- a/packages/synapse-interface/assets/explorer/aurora.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/explorer/avalanche.svg b/packages/synapse-interface/assets/explorer/avalanche.svg
deleted file mode 100644
index fc5ca97e5d..0000000000
--- a/packages/synapse-interface/assets/explorer/avalanche.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/explorer/blast.svg b/packages/synapse-interface/assets/explorer/blast.svg
deleted file mode 100644
index 5df8a7f017..0000000000
--- a/packages/synapse-interface/assets/explorer/blast.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/packages/synapse-interface/assets/explorer/boba.svg b/packages/synapse-interface/assets/explorer/boba.svg
deleted file mode 100644
index 6b65299d1d..0000000000
--- a/packages/synapse-interface/assets/explorer/boba.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/explorer/bscscan.svg b/packages/synapse-interface/assets/explorer/bscscan.svg
index 9409a9c45c..da6febeaf3 100644
--- a/packages/synapse-interface/assets/explorer/bscscan.svg
+++ b/packages/synapse-interface/assets/explorer/bscscan.svg
@@ -1,3 +1,4 @@
-
\ No newline at end of file
+
diff --git a/packages/synapse-interface/assets/explorer/canto.svg b/packages/synapse-interface/assets/explorer/canto.svg
deleted file mode 100644
index bc3c2a5797..0000000000
--- a/packages/synapse-interface/assets/explorer/canto.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/explorer/cronos.svg b/packages/synapse-interface/assets/explorer/cronos.svg
deleted file mode 100644
index e3168f2003..0000000000
--- a/packages/synapse-interface/assets/explorer/cronos.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/explorer/dfk-chain.svg b/packages/synapse-interface/assets/explorer/dfk-chain.svg
deleted file mode 100644
index 6f9c65efe0..0000000000
--- a/packages/synapse-interface/assets/explorer/dfk-chain.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/explorer/dogecoin.svg b/packages/synapse-interface/assets/explorer/dogecoin.svg
deleted file mode 100644
index 25cb7d44b0..0000000000
--- a/packages/synapse-interface/assets/explorer/dogecoin.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/explorer/fantom.svg b/packages/synapse-interface/assets/explorer/fantom.svg
deleted file mode 100644
index cbe18b70dd..0000000000
--- a/packages/synapse-interface/assets/explorer/fantom.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/explorer/ftmscan.svg b/packages/synapse-interface/assets/explorer/ftmscan.svg
new file mode 100644
index 0000000000..499bfea387
--- /dev/null
+++ b/packages/synapse-interface/assets/explorer/ftmscan.svg
@@ -0,0 +1,3 @@
+
diff --git a/packages/synapse-interface/assets/explorer/harmony.svg b/packages/synapse-interface/assets/explorer/harmony.svg
deleted file mode 100644
index a08908db08..0000000000
--- a/packages/synapse-interface/assets/explorer/harmony.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/explorer/klaytn.svg b/packages/synapse-interface/assets/explorer/klaytn.svg
deleted file mode 100644
index 7442140766..0000000000
--- a/packages/synapse-interface/assets/explorer/klaytn.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/explorer/metis.svg b/packages/synapse-interface/assets/explorer/metis.svg
deleted file mode 100644
index a6deadf00d..0000000000
--- a/packages/synapse-interface/assets/explorer/metis.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/explorer/moonbeam.svg b/packages/synapse-interface/assets/explorer/moonbeam.svg
deleted file mode 100644
index 04cfc82fbc..0000000000
--- a/packages/synapse-interface/assets/explorer/moonbeam.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/explorer/moonriver.svg b/packages/synapse-interface/assets/explorer/moonriver.svg
deleted file mode 100644
index 0a6f6ee270..0000000000
--- a/packages/synapse-interface/assets/explorer/moonriver.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/explorer/optimism.svg b/packages/synapse-interface/assets/explorer/optimism.svg
deleted file mode 100644
index b818976a23..0000000000
--- a/packages/synapse-interface/assets/explorer/optimism.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/explorer/polygon.svg b/packages/synapse-interface/assets/explorer/polygon.svg
deleted file mode 100644
index 5ac59821dc..0000000000
--- a/packages/synapse-interface/assets/explorer/polygon.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/explorer/snowscan.svg b/packages/synapse-interface/assets/explorer/snowscan.svg
new file mode 100644
index 0000000000..a20a66a2ff
--- /dev/null
+++ b/packages/synapse-interface/assets/explorer/snowscan.svg
@@ -0,0 +1,4 @@
+
diff --git a/packages/synapse-interface/assets/icons/ageur.svg b/packages/synapse-interface/assets/icons/ageur.svg
index c5116082ff..e48ff825bc 100644
--- a/packages/synapse-interface/assets/icons/ageur.svg
+++ b/packages/synapse-interface/assets/icons/ageur.svg
@@ -1,11 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/avax.svg b/packages/synapse-interface/assets/icons/avax.svg
index ab95c44cab..5695785b66 100644
--- a/packages/synapse-interface/assets/icons/avax.svg
+++ b/packages/synapse-interface/assets/icons/avax.svg
@@ -1,4 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/avweth.svg b/packages/synapse-interface/assets/icons/avweth.svg
index a34de53076..8e9d055972 100644
--- a/packages/synapse-interface/assets/icons/avweth.svg
+++ b/packages/synapse-interface/assets/icons/avweth.svg
@@ -1,22 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/btc.svg b/packages/synapse-interface/assets/icons/btc.svg
index 08243771aa..a10e2bcc2c 100644
--- a/packages/synapse-interface/assets/icons/btc.svg
+++ b/packages/synapse-interface/assets/icons/btc.svg
@@ -1,11 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/busd.svg b/packages/synapse-interface/assets/icons/busd.svg
index 86b599151a..939021a69d 100644
--- a/packages/synapse-interface/assets/icons/busd.svg
+++ b/packages/synapse-interface/assets/icons/busd.svg
@@ -1,7 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/crvusd.svg b/packages/synapse-interface/assets/icons/crvusd.svg
index ba287ce36c..de40a549fc 100644
--- a/packages/synapse-interface/assets/icons/crvusd.svg
+++ b/packages/synapse-interface/assets/icons/crvusd.svg
@@ -1,103 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/dai.svg b/packages/synapse-interface/assets/icons/dai.svg
index aa054bc7ef..41d6d21513 100644
--- a/packages/synapse-interface/assets/icons/dai.svg
+++ b/packages/synapse-interface/assets/icons/dai.svg
@@ -1,4 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/dog.svg b/packages/synapse-interface/assets/icons/dog.svg
index 5974c3c474..1d7640718a 100644
--- a/packages/synapse-interface/assets/icons/dog.svg
+++ b/packages/synapse-interface/assets/icons/dog.svg
@@ -1,14 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/eth.svg b/packages/synapse-interface/assets/icons/eth.svg
index 99d1e3ef08..e9dcc7f0c3 100644
--- a/packages/synapse-interface/assets/icons/eth.svg
+++ b/packages/synapse-interface/assets/icons/eth.svg
@@ -1,17 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/frax.svg b/packages/synapse-interface/assets/icons/frax.svg
index 7dac7ad9d4..cf8c89f20d 100644
--- a/packages/synapse-interface/assets/icons/frax.svg
+++ b/packages/synapse-interface/assets/icons/frax.svg
@@ -1,5 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/ftm.svg b/packages/synapse-interface/assets/icons/ftm.svg
index c0ee1877b6..81b17f14c6 100644
--- a/packages/synapse-interface/assets/icons/ftm.svg
+++ b/packages/synapse-interface/assets/icons/ftm.svg
@@ -1,4 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/fusdt.svg b/packages/synapse-interface/assets/icons/fusdt.svg
index 38005cadd9..5d813d5824 100644
--- a/packages/synapse-interface/assets/icons/fusdt.svg
+++ b/packages/synapse-interface/assets/icons/fusdt.svg
@@ -1,25 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/gmx.svg b/packages/synapse-interface/assets/icons/gmx.svg
index d76d010222..c1534ad171 100644
--- a/packages/synapse-interface/assets/icons/gmx.svg
+++ b/packages/synapse-interface/assets/icons/gmx.svg
@@ -1,15 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/gohm.svg b/packages/synapse-interface/assets/icons/gohm.svg
index c719c8685e..7e4842d855 100644
--- a/packages/synapse-interface/assets/icons/gohm.svg
+++ b/packages/synapse-interface/assets/icons/gohm.svg
@@ -1,21 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/h2o.svg b/packages/synapse-interface/assets/icons/h2o.svg
index 4b72fb689e..a2935082de 100644
--- a/packages/synapse-interface/assets/icons/h2o.svg
+++ b/packages/synapse-interface/assets/icons/h2o.svg
@@ -1,15 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/highstreet.svg b/packages/synapse-interface/assets/icons/highstreet.svg
index 37e63d0782..eb53b0ea3e 100644
--- a/packages/synapse-interface/assets/icons/highstreet.svg
+++ b/packages/synapse-interface/assets/icons/highstreet.svg
@@ -1,11 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/hyperjump.svg b/packages/synapse-interface/assets/icons/hyperjump.svg
index 09635e9432..5f8ca538f5 100644
--- a/packages/synapse-interface/assets/icons/hyperjump.svg
+++ b/packages/synapse-interface/assets/icons/hyperjump.svg
@@ -1,14 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/jewel.svg b/packages/synapse-interface/assets/icons/jewel.svg
index ddb6309c7e..7b6cd90f18 100644
--- a/packages/synapse-interface/assets/icons/jewel.svg
+++ b/packages/synapse-interface/assets/icons/jewel.svg
@@ -1,14 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/klay.svg b/packages/synapse-interface/assets/icons/klay.svg
index 91a75d69f2..552e0a6e50 100644
--- a/packages/synapse-interface/assets/icons/klay.svg
+++ b/packages/synapse-interface/assets/icons/klay.svg
@@ -1,30 +1 @@
-
+
diff --git a/packages/synapse-interface/assets/icons/l2dao.svg b/packages/synapse-interface/assets/icons/l2dao.svg
index b6f532c8f5..22175d2cb7 100644
--- a/packages/synapse-interface/assets/icons/l2dao.svg
+++ b/packages/synapse-interface/assets/icons/l2dao.svg
@@ -1,47 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/link.svg b/packages/synapse-interface/assets/icons/link.svg
index c4b8f61c01..cc848c331c 100644
--- a/packages/synapse-interface/assets/icons/link.svg
+++ b/packages/synapse-interface/assets/icons/link.svg
@@ -1,10 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/matic.svg b/packages/synapse-interface/assets/icons/matic.svg
index c4eee4dc83..879ae5a82c 100644
--- a/packages/synapse-interface/assets/icons/matic.svg
+++ b/packages/synapse-interface/assets/icons/matic.svg
@@ -1,10 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/metamask.svg b/packages/synapse-interface/assets/icons/metamask.svg
index 65b3f54416..fa6d5b322b 100644
--- a/packages/synapse-interface/assets/icons/metamask.svg
+++ b/packages/synapse-interface/assets/icons/metamask.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/mim.svg b/packages/synapse-interface/assets/icons/mim.svg
index 4ae938c2ff..6397e92bae 100644
--- a/packages/synapse-interface/assets/icons/mim.svg
+++ b/packages/synapse-interface/assets/icons/mim.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/movr.svg b/packages/synapse-interface/assets/icons/movr.svg
index 9d5d25bf0b..07cf4ddfcd 100644
--- a/packages/synapse-interface/assets/icons/movr.svg
+++ b/packages/synapse-interface/assets/icons/movr.svg
@@ -1,19 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/neth.svg b/packages/synapse-interface/assets/icons/neth.svg
index 8357f4993e..913868f284 100644
--- a/packages/synapse-interface/assets/icons/neth.svg
+++ b/packages/synapse-interface/assets/icons/neth.svg
@@ -1,22 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/newo.svg b/packages/synapse-interface/assets/icons/newo.svg
index e72e30525f..444ed2965f 100644
--- a/packages/synapse-interface/assets/icons/newo.svg
+++ b/packages/synapse-interface/assets/icons/newo.svg
@@ -1,106 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/nfd.svg b/packages/synapse-interface/assets/icons/nfd.svg
index ccee410cb8..7534a91235 100644
--- a/packages/synapse-interface/assets/icons/nfd.svg
+++ b/packages/synapse-interface/assets/icons/nfd.svg
@@ -1,14 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/note.svg b/packages/synapse-interface/assets/icons/note.svg
index 47f845abd6..c1be5c5dc9 100644
--- a/packages/synapse-interface/assets/icons/note.svg
+++ b/packages/synapse-interface/assets/icons/note.svg
@@ -1,19 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/nusd.svg b/packages/synapse-interface/assets/icons/nusd.svg
index bff0657146..191a497c9e 100644
--- a/packages/synapse-interface/assets/icons/nusd.svg
+++ b/packages/synapse-interface/assets/icons/nusd.svg
@@ -1,16 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/op.svg b/packages/synapse-interface/assets/icons/op.svg
index fdc2a70956..bb5f2a1511 100644
--- a/packages/synapse-interface/assets/icons/op.svg
+++ b/packages/synapse-interface/assets/icons/op.svg
@@ -1,5 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/pepe.svg b/packages/synapse-interface/assets/icons/pepe.svg
index 48f3478f53..f08be7d1d6 100644
--- a/packages/synapse-interface/assets/icons/pepe.svg
+++ b/packages/synapse-interface/assets/icons/pepe.svg
@@ -1,14 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/pls.svg b/packages/synapse-interface/assets/icons/pls.svg
index 245aaaa6a1..fccdbcd2ca 100644
--- a/packages/synapse-interface/assets/icons/pls.svg
+++ b/packages/synapse-interface/assets/icons/pls.svg
@@ -1,90 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/sdt.svg b/packages/synapse-interface/assets/icons/sdt.svg
index 6f875ba2c9..0d0824c16c 100644
--- a/packages/synapse-interface/assets/icons/sdt.svg
+++ b/packages/synapse-interface/assets/icons/sdt.svg
@@ -1,13 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/sfi.svg b/packages/synapse-interface/assets/icons/sfi.svg
index 1cb6836508..e1a8cd0ad2 100644
--- a/packages/synapse-interface/assets/icons/sfi.svg
+++ b/packages/synapse-interface/assets/icons/sfi.svg
@@ -1,4 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/solar.svg b/packages/synapse-interface/assets/icons/solar.svg
index 94e19c4a88..ed386e2dfa 100644
--- a/packages/synapse-interface/assets/icons/solar.svg
+++ b/packages/synapse-interface/assets/icons/solar.svg
@@ -1,44 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/susd.svg b/packages/synapse-interface/assets/icons/susd.svg
index 8794225fcd..924acb5405 100644
--- a/packages/synapse-interface/assets/icons/susd.svg
+++ b/packages/synapse-interface/assets/icons/susd.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/sushi.svg b/packages/synapse-interface/assets/icons/sushi.svg
index dc5a7bcf1b..bb4bc618fe 100644
--- a/packages/synapse-interface/assets/icons/sushi.svg
+++ b/packages/synapse-interface/assets/icons/sushi.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/syn.svg b/packages/synapse-interface/assets/icons/syn.svg
index d4ef052e76..f7a230124d 100644
--- a/packages/synapse-interface/assets/icons/syn.svg
+++ b/packages/synapse-interface/assets/icons/syn.svg
@@ -1,50 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/unidex.svg b/packages/synapse-interface/assets/icons/unidex.svg
index 5e242faf0a..cf432ca520 100644
--- a/packages/synapse-interface/assets/icons/unidex.svg
+++ b/packages/synapse-interface/assets/icons/unidex.svg
@@ -1,15 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/usdc.svg b/packages/synapse-interface/assets/icons/usdc.svg
index 2a3640ffd6..0cf54945bd 100644
--- a/packages/synapse-interface/assets/icons/usdc.svg
+++ b/packages/synapse-interface/assets/icons/usdc.svg
@@ -1,12 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/usdt.svg b/packages/synapse-interface/assets/icons/usdt.svg
index 8da7a84975..1ea97592e0 100644
--- a/packages/synapse-interface/assets/icons/usdt.svg
+++ b/packages/synapse-interface/assets/icons/usdt.svg
@@ -1,4 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/vsta.svg b/packages/synapse-interface/assets/icons/vsta.svg
index 19f623e8ff..5b2b1ac3c2 100644
--- a/packages/synapse-interface/assets/icons/vsta.svg
+++ b/packages/synapse-interface/assets/icons/vsta.svg
@@ -1,26 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/wbtc.svg b/packages/synapse-interface/assets/icons/wbtc.svg
index 2f8c9b1c02..7f9d25c59b 100644
--- a/packages/synapse-interface/assets/icons/wbtc.svg
+++ b/packages/synapse-interface/assets/icons/wbtc.svg
@@ -1,9 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/assets/icons/weth.svg b/packages/synapse-interface/assets/icons/weth.svg
index 2445cee472..0dec30bb5f 100644
--- a/packages/synapse-interface/assets/icons/weth.svg
+++ b/packages/synapse-interface/assets/icons/weth.svg
@@ -1,17 +1 @@
-
+
\ No newline at end of file
diff --git a/packages/synapse-interface/components/Maintenance/AnnouncementBanner.tsx b/packages/synapse-interface/components/Maintenance/AnnouncementBanner.tsx
index 42dc33dc97..377bcfadcf 100644
--- a/packages/synapse-interface/components/Maintenance/AnnouncementBanner.tsx
+++ b/packages/synapse-interface/components/Maintenance/AnnouncementBanner.tsx
@@ -1,7 +1,10 @@
import { useState, useEffect } from 'react'
+import { getCountdownTimeStatus } from './EventCountdownProgressBar'
/**
- * Reusable Annoucement Banner with custom Start/End Time
+ * Reusable automated Announcement Banner with custom Start/End Time
+ * Will automatically appear after Start time
+ * Will automatically disappear after End time
* @param bannerId: store in $MMDDYYYY-$BANNER_NAME format (e.g 03132024-ETH-DENCUN)
* @param bannerContents: contents to display in banner
* @param startDate: start date to show banner
@@ -18,15 +21,9 @@ export const AnnouncementBanner = ({
startDate: Date
endDate: Date
}) => {
+ const { isStarted, isComplete } = getCountdownTimeStatus(startDate, endDate)
const [hasMounted, setHasMounted] = useState(false)
- const [showBanner, setShowBanner] = useState(false)
-
- const currentDate = new Date()
-
- const isStarted =
- Math.floor(currentDate.getTime()) - Math.floor(startDate.getTime()) >= 0
- const isComplete =
- Math.floor(currentDate.getTime()) - Math.floor(endDate.getTime()) >= 0
+ const [showBanner, setShowBanner] = useState(true)
useEffect(() => {
setHasMounted(true)
@@ -54,11 +51,11 @@ export const AnnouncementBanner = ({
}
}, [showBanner, hasMounted])
- if (!showBanner || !hasMounted || isComplete) return null
+ if (!showBanner || !hasMounted || !isStarted || isComplete) return null
return (
{
useIntervalTimer(60000)
- const currentDate = new Date()
- const currentTimeInSeconds = currentDate.getTime() / 1000
- const startTimeInSeconds = Math.floor(startDate.getTime() / 1000)
- const endTimeInSeconds = Math.floor(endDate.getTime() / 1000)
- const timeRemainingInSeconds = endTimeInSeconds - currentTimeInSeconds
- const timeRemainingInMinutes = Math.ceil(timeRemainingInSeconds / 60)
+ const { totalTimeRemainingInMinutes, hoursRemaining, isComplete, isPending } =
+ getCountdownTimeStatus(startDate, endDate)
- const isStarted = currentTimeInSeconds >= startTimeInSeconds
- const isComplete = timeRemainingInSeconds <= 0
- const isPending = isStarted && !isComplete
+ const timeRemaining: string =
+ totalTimeRemainingInMinutes > 90
+ ? `${hoursRemaining}h`
+ : `${totalTimeRemainingInMinutes}m`
let status: 'idle' | 'pending' | 'complete'
@@ -40,10 +36,10 @@ export const useEventCountdownProgressBar = (
EventCountdownProgressBar: (
),
}
@@ -51,16 +47,16 @@ export const useEventCountdownProgressBar = (
export const EventCountdownProgressBar = ({
eventLabel,
- startTime,
- endTime,
- status,
+ startDate,
+ endDate,
timeRemaining,
+ status,
}: {
eventLabel: string
- startTime: number
- endTime: number
+ startDate: Date
+ endDate: Date
+ timeRemaining: string
status: 'idle' | 'pending' | 'complete'
- timeRemaining: number
}) => {
if (status === 'pending') {
return (
@@ -73,14 +69,13 @@ export const EventCountdownProgressBar = ({
>
{eventLabel}
-
{timeRemaining}m remaining
+
{timeRemaining} remaining
@@ -89,3 +84,69 @@ export const EventCountdownProgressBar = ({
return null
}
}
+
+export const getCountdownTimeStatus = (startDate: Date, endDate: Date) => {
+ const currentDate = new Date()
+
+ const { daysRemaining, hoursRemaining, minutesRemaining, secondsRemaining } =
+ calculateTimeUntilTarget(endDate)
+
+ const currentTimeInSeconds = Math.floor(currentDate.getTime() / 1000)
+
+ const startTimeInSeconds = Math.floor(startDate.getTime() / 1000)
+ const endTimeInSeconds = Math.floor(endDate.getTime() / 1000)
+ const totalTimeInSeconds = endTimeInSeconds - startTimeInSeconds
+
+ const totalTimeElapsedInSeconds = currentTimeInSeconds - startTimeInSeconds
+ const totalTimeRemainingInSeconds = endTimeInSeconds - currentTimeInSeconds
+ const totalTimeRemainingInMinutes = Math.ceil(
+ totalTimeRemainingInSeconds / 60
+ )
+
+ const isStarted = currentTimeInSeconds >= startTimeInSeconds
+ const isComplete = totalTimeRemainingInSeconds <= 0
+ const isPending = isStarted && !isComplete
+
+ return {
+ currentDate,
+ currentTimeInSeconds,
+ startTimeInSeconds,
+ endTimeInSeconds,
+ totalTimeInSeconds,
+ totalTimeElapsedInSeconds,
+ totalTimeRemainingInSeconds,
+ totalTimeRemainingInMinutes,
+ daysRemaining,
+ hoursRemaining,
+ minutesRemaining,
+ secondsRemaining,
+ isStarted,
+ isComplete,
+ isPending,
+ }
+}
+
+const calculateTimeUntilTarget = (targetDate: Date) => {
+ const currentDate = new Date()
+
+ const timeDifference = targetDate.getTime() - currentDate.getTime()
+
+ const isComplete = timeDifference <= 0
+
+ const daysRemaining = Math.floor(timeDifference / (1000 * 60 * 60 * 24))
+ const hoursRemaining = Math.floor(
+ (timeDifference % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)
+ )
+ const minutesRemaining = Math.floor(
+ (timeDifference % (1000 * 60 * 60)) / (1000 * 60)
+ )
+ const secondsRemaining = Math.floor((timeDifference % (1000 * 60)) / 1000)
+
+ return {
+ daysRemaining,
+ hoursRemaining,
+ minutesRemaining,
+ secondsRemaining,
+ isComplete,
+ }
+}
diff --git a/packages/synapse-interface/components/Maintenance/Events/EcotoneForkUpgrade.tsx b/packages/synapse-interface/components/Maintenance/Events/EcotoneForkUpgrade.tsx
new file mode 100644
index 0000000000..c2dd3dd355
--- /dev/null
+++ b/packages/synapse-interface/components/Maintenance/Events/EcotoneForkUpgrade.tsx
@@ -0,0 +1,93 @@
+import { AnnouncementBanner } from '../AnnouncementBanner'
+import { WarningMessage } from '../../Warning'
+import { useBridgeState } from '@/slices/bridge/hooks'
+import { OPTIMISM, BASE } from '@/constants/chains/master'
+import {
+ useEventCountdownProgressBar,
+ getCountdownTimeStatus,
+} from '../EventCountdownProgressBar'
+import { useIntervalTimer } from '@/utils/hooks/useIntervalTimer'
+
+/**
+ * Start: 25 min prior to Ecotone Fork Upgrade Time @ (March 14, 00:00 UTC)
+ * End: 25 min after start of Ecotone Fork Upgrade Time
+ */
+export const ECOTONE_FORK_BANNERS_START = new Date(
+ Date.UTC(2024, 2, 13, 23, 20, 0)
+)
+export const ECOTONE_FORK_START_DATE = new Date(
+ Date.UTC(2024, 2, 13, 23, 35, 0)
+)
+export const ECOTONE_FORK_END_DATE = new Date(Date.UTC(2024, 2, 14, 0, 25, 0))
+
+export const EcotoneForkUpgradeBanner = () => {
+ const { isComplete } = getCountdownTimeStatus(
+ ECOTONE_FORK_BANNERS_START,
+ ECOTONE_FORK_END_DATE
+ )
+
+ useIntervalTimer(60000, isComplete)
+
+ return (
+
+
+ Optimism + Base Bridging will be paused 10 minutes ahead of Ecotone
+ (March 14, 00:00 UTC, 20:00 EST).
+
+ Will be back online shortly following the network upgrade.
+
+ }
+ startDate={ECOTONE_FORK_BANNERS_START}
+ endDate={ECOTONE_FORK_END_DATE}
+ />
+ )
+}
+
+export const EcotoneForkWarningMessage = () => {
+ const { fromChainId, toChainId } = useBridgeState()
+
+ const isChainOptimism = [fromChainId, toChainId].includes(OPTIMISM.id)
+ const isChainBase = [fromChainId, toChainId].includes(BASE.id)
+
+ if (isChainOptimism || isChainBase) {
+ return (
+
+
+ Optimism Chain and Base Chain bridging are paused until the
+ Ecotone Fork upgrade completes.
+
+ >
+ }
+ />
+ )
+ } else return null
+}
+
+export const useEcotoneForkCountdownProgress = () => {
+ const { fromChainId, toChainId } = useBridgeState()
+
+ const isChainOptimism = [fromChainId, toChainId].includes(OPTIMISM.id)
+ const isChainBase = [fromChainId, toChainId].includes(BASE.id)
+
+ const {
+ isPending: isEcotoneForkUpgradePending,
+ EventCountdownProgressBar: EcotoneForkCountdownProgressBar,
+ } = useEventCountdownProgressBar(
+ 'Ecotone Fork upgrade in progress',
+ ECOTONE_FORK_START_DATE,
+ ECOTONE_FORK_END_DATE
+ )
+
+ return {
+ isEcotoneForkUpgradePending,
+ isCurrentChainDisabled:
+ (isChainOptimism || isChainBase) && isEcotoneForkUpgradePending,
+ EcotoneForkCountdownProgressBar:
+ isChainOptimism || isChainBase ? EcotoneForkCountdownProgressBar : null,
+ }
+}
diff --git a/packages/synapse-interface/components/Maintenance/Events/MetisUpgrade.tsx b/packages/synapse-interface/components/Maintenance/Events/MetisUpgrade.tsx
new file mode 100644
index 0000000000..223a178bab
--- /dev/null
+++ b/packages/synapse-interface/components/Maintenance/Events/MetisUpgrade.tsx
@@ -0,0 +1,90 @@
+import { AnnouncementBanner } from '../AnnouncementBanner'
+import { WarningMessage } from '../../Warning'
+import { useBridgeState } from '@/slices/bridge/hooks'
+import { METIS } from '@/constants/chains/master'
+import { useEventCountdownProgressBar } from '../EventCountdownProgressBar'
+import { useIntervalTimer } from '@/utils/hooks/useIntervalTimer'
+import { getCountdownTimeStatus } from '../EventCountdownProgressBar'
+
+/**
+ * Start: 30 min prior to Metis Chain Downtime @ (March 14, 02:00 UTC)
+ * End: 12 hours after start of Metis Chain Downtime
+ */
+export const METIS_DOWNTIME_BANNERS_START = new Date(
+ Date.UTC(2024, 2, 14, 1, 30, 0)
+)
+export const METIS_DOWNTIME_START_DATE = new Date(
+ Date.UTC(2024, 2, 14, 1, 45, 0)
+)
+export const METIS_DOWNTIME_END_DATE = new Date(
+ Date.UTC(2024, 2, 14, 16, 30, 0)
+)
+
+export const MetisDowntimeBanner = () => {
+ const { isComplete } = getCountdownTimeStatus(
+ METIS_DOWNTIME_BANNERS_START,
+ METIS_DOWNTIME_END_DATE
+ )
+
+ useIntervalTimer(60000, isComplete)
+
+ return (
+
+
+ Metis Chain bridging will be paused 30 min ahead of the Metis
+ Upgrade (March 14, 02:00 UTC, 22:00 EST)
+
+ and stay paused for ~12 hours.
+
+ }
+ startDate={METIS_DOWNTIME_BANNERS_START}
+ endDate={METIS_DOWNTIME_END_DATE}
+ />
+ )
+}
+
+export const MetisDowntimeWarningMessage = () => {
+ const { fromChainId, toChainId } = useBridgeState()
+
+ const isChainMetis = [fromChainId, toChainId].includes(METIS.id)
+
+ if (isChainMetis) {
+ return (
+
+
+ Metis Chain bridging is paused until the Metis upgrade completes.
+
+ >
+ }
+ />
+ )
+ } else return null
+}
+
+export const useMetisDowntimeCountdownProgress = () => {
+ const { fromChainId, toChainId } = useBridgeState()
+
+ const isChainMetis = [fromChainId, toChainId].includes(METIS.id)
+
+ const {
+ isPending: isMetisUpgradePending,
+ EventCountdownProgressBar: MetisUpgradeCountdownProgressBar,
+ } = useEventCountdownProgressBar(
+ 'Metis upgrade in progress',
+ METIS_DOWNTIME_START_DATE,
+ METIS_DOWNTIME_END_DATE
+ )
+
+ return {
+ isMetisUpgradePending,
+ isCurrentChainDisabled: isChainMetis && isMetisUpgradePending,
+ MetisUpgradeCountdownProgressBar: isChainMetis
+ ? MetisUpgradeCountdownProgressBar
+ : null,
+ }
+}
diff --git a/packages/synapse-interface/components/Maintenance/LinearAnimatedProgressBar.tsx b/packages/synapse-interface/components/Maintenance/LinearAnimatedProgressBar.tsx
index d2c90fbe7b..955b932afc 100644
--- a/packages/synapse-interface/components/Maintenance/LinearAnimatedProgressBar.tsx
+++ b/packages/synapse-interface/components/Maintenance/LinearAnimatedProgressBar.tsx
@@ -1,36 +1,33 @@
import { memo } from 'react'
-import { getTimeMinutesBeforeNow } from '@/utils/time'
+import { getCountdownTimeStatus } from './EventCountdownProgressBar'
/**
* @param id unique identifier for progress bar instance
* @param startTime start time in unix seconds
* @param endTime end time in unix seconds
- * @param status progress status
*/
export const LinearAnimatedProgressBar = memo(
({
id,
- startTime,
- endTime,
- status,
+ startDate,
+ endDate,
}: {
id: string
- startTime: number
- endTime: number
- status: 'idle' | 'pending' | 'complete'
+ startDate: Date
+ endDate: Date
}) => {
- const currentTime = Math.floor(getTimeMinutesBeforeNow(0))
- const elapsedTimeInSeconds = currentTime - startTime
- const remainingTimeInSeconds = endTime - currentTime
- const totalTimeInSeconds = endTime - startTime
+ const {
+ totalTimeInSeconds,
+ totalTimeElapsedInSeconds,
+ totalTimeRemainingInSeconds,
+ isComplete,
+ } = getCountdownTimeStatus(startDate, endDate)
const percentElapsed = Math.floor(
- (elapsedTimeInSeconds / totalTimeInSeconds) * 100
+ (totalTimeElapsedInSeconds / totalTimeInSeconds) * 100
)
- const isComplete = status === 'complete'
-
- let duration = isComplete ? 0.5 : remainingTimeInSeconds
+ let duration = isComplete ? 0.5 : totalTimeRemainingInSeconds
const synapsePurple = 'hsl(265deg 100% 75%)'
const tailwindGreen400 = 'rgb(74 222 128)'
@@ -40,7 +37,7 @@ export const LinearAnimatedProgressBar = memo(
return (