Repository: friedger/Smart-Wallet
Pull request #16: Integrating shared smart-wallet contracts
Author: login: Zeus-Adin
Created: 2025-03-07T17:35:50Z | Merged: 2025-03-08T20:23:22Z

Corrected routing for shared smart-wallet contracts


Diff:
diff --git a/ui/package-lock.json b/ui/package-lock.json
index bb6857d..0122722 100644
--- a/ui/package-lock.json
+++ b/ui/package-lock.json
@@ -10,6 +10,7 @@
       "dependencies": {
         "@heroui/react": "^2.6.14",
         "@stacks/connect": "^7.0.2",
+        "@stacks/connect-react": "^23.0.9",
         "@stacks/network": "^7.0.2",
         "@stacks/transactions": "^7.0.4",
         "axios": "^1.7.9",
@@ -18,7 +19,7 @@
         "react": "^18.2.0",
         "react-dom": "^18.2.0",
         "react-icons": "^5.4.0",
-        "react-router-dom": "^7.1.3"
+        "react-router-dom": "^7.3.0"
       },
       "devDependencies": {
         "@types/react": "^18.2.15",
@@ -31,7 +32,7 @@
         "eslint-plugin-react-refresh": "^0.4.3",
         "postcss": "^8.5.1",
         "tailwindcss": "^3.4.17",
-        "vite": "^4.4.5"
+        "vite": "^6.2.1"
       }
     },
     "node_modules/@alloc/quick-lru": {
@@ -344,10 +345,27 @@
         "node": ">=6.9.0"
       }
     },
+    "node_modules/@esbuild/aix-ppc64": {
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz",
+      "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==",
+      "cpu": [
+        "ppc64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "aix"
+      ],
+      "engines": {
+        "node": ">=18"
+      }
+    },
     "node_modules/@esbuild/android-arm": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz",
-      "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz",
+      "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==",
       "cpu": [
         "arm"
       ],
@@ -358,13 +376,13 @@
         "android"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/android-arm64": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz",
-      "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz",
+      "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==",
       "cpu": [
         "arm64"
       ],
@@ -375,13 +393,13 @@
         "android"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/android-x64": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz",
-      "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz",
+      "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==",
       "cpu": [
         "x64"
       ],
@@ -392,13 +410,13 @@
         "android"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/darwin-arm64": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz",
-      "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz",
+      "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==",
       "cpu": [
         "arm64"
       ],
@@ -409,13 +427,13 @@
         "darwin"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/darwin-x64": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz",
-      "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz",
+      "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==",
       "cpu": [
         "x64"
       ],
@@ -426,13 +444,13 @@
         "darwin"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/freebsd-arm64": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz",
-      "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz",
+      "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==",
       "cpu": [
         "arm64"
       ],
@@ -443,13 +461,13 @@
         "freebsd"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/freebsd-x64": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz",
-      "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz",
+      "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==",
       "cpu": [
         "x64"
       ],
@@ -460,13 +478,13 @@
         "freebsd"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/linux-arm": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz",
-      "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz",
+      "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==",
       "cpu": [
         "arm"
       ],
@@ -477,13 +495,13 @@
         "linux"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/linux-arm64": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz",
-      "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz",
+      "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==",
       "cpu": [
         "arm64"
       ],
@@ -494,13 +512,13 @@
         "linux"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/linux-ia32": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz",
-      "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz",
+      "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==",
       "cpu": [
         "ia32"
       ],
@@ -511,13 +529,13 @@
         "linux"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/linux-loong64": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz",
-      "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz",
+      "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==",
       "cpu": [
         "loong64"
       ],
@@ -528,13 +546,13 @@
         "linux"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/linux-mips64el": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz",
-      "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz",
+      "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==",
       "cpu": [
         "mips64el"
       ],
@@ -545,13 +563,13 @@
         "linux"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/linux-ppc64": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz",
-      "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz",
+      "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==",
       "cpu": [
         "ppc64"
       ],
@@ -562,13 +580,13 @@
         "linux"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/linux-riscv64": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz",
-      "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz",
+      "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==",
       "cpu": [
         "riscv64"
       ],
@@ -579,13 +597,13 @@
         "linux"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/linux-s390x": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz",
-      "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz",
+      "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==",
       "cpu": [
         "s390x"
       ],
@@ -596,13 +614,13 @@
         "linux"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/linux-x64": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz",
-      "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz",
+      "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==",
       "cpu": [
         "x64"
       ],
@@ -613,13 +631,30 @@
         "linux"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/netbsd-arm64": {
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz",
+      "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "netbsd"
+      ],
+      "engines": {
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/netbsd-x64": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz",
-      "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz",
+      "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==",
       "cpu": [
         "x64"
       ],
@@ -630,13 +665,30 @@
         "netbsd"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
+      }
+    },
+    "node_modules/@esbuild/openbsd-arm64": {
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz",
+      "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "openbsd"
+      ],
+      "engines": {
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/openbsd-x64": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz",
-      "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz",
+      "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==",
       "cpu": [
         "x64"
       ],
@@ -647,13 +699,13 @@
         "openbsd"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/sunos-x64": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz",
-      "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz",
+      "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==",
       "cpu": [
         "x64"
       ],
@@ -664,13 +716,13 @@
         "sunos"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/win32-arm64": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz",
-      "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz",
+      "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==",
       "cpu": [
         "arm64"
       ],
@@ -681,13 +733,13 @@
         "win32"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/win32-ia32": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz",
-      "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz",
+      "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==",
       "cpu": [
         "ia32"
       ],
@@ -698,13 +750,13 @@
         "win32"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@esbuild/win32-x64": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz",
-      "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz",
+      "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==",
       "cpu": [
         "x64"
       ],
@@ -715,7 +767,7 @@
         "win32"
       ],
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       }
     },
     "node_modules/@eslint-community/eslint-utils": {
@@ -4491,6 +4543,272 @@
         "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1"
       }
     },
+    "node_modules/@rollup/rollup-android-arm-eabi": {
+      "version": "4.35.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.35.0.tgz",
+      "integrity": "sha512-uYQ2WfPaqz5QtVgMxfN6NpLD+no0MYHDBywl7itPYd3K5TjjSghNKmX8ic9S8NU8w81NVhJv/XojcHptRly7qQ==",
+      "cpu": [
+        "arm"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "android"
+      ]
+    },
+    "node_modules/@rollup/rollup-android-arm64": {
+      "version": "4.35.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.35.0.tgz",
+      "integrity": "sha512-FtKddj9XZudurLhdJnBl9fl6BwCJ3ky8riCXjEw3/UIbjmIY58ppWwPEvU3fNu+W7FUsAsB1CdH+7EQE6CXAPA==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "android"
+      ]
+    },
+    "node_modules/@rollup/rollup-darwin-arm64": {
+      "version": "4.35.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.35.0.tgz",
+      "integrity": "sha512-Uk+GjOJR6CY844/q6r5DR/6lkPFOw0hjfOIzVx22THJXMxktXG6CbejseJFznU8vHcEBLpiXKY3/6xc+cBm65Q==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "darwin"
+      ]
+    },
+    "node_modules/@rollup/rollup-darwin-x64": {
+      "version": "4.35.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.35.0.tgz",
+      "integrity": "sha512-3IrHjfAS6Vkp+5bISNQnPogRAW5GAV1n+bNCrDwXmfMHbPl5EhTmWtfmwlJxFRUCBZ+tZ/OxDyU08aF6NI/N5Q==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "darwin"
+      ]
+    },
+    "node_modules/@rollup/rollup-freebsd-arm64": {
+      "version": "4.35.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.35.0.tgz",
+      "integrity": "sha512-sxjoD/6F9cDLSELuLNnY0fOrM9WA0KrM0vWm57XhrIMf5FGiN8D0l7fn+bpUeBSU7dCgPV2oX4zHAsAXyHFGcQ==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "freebsd"
+      ]
+    },
+    "node_modules/@rollup/rollup-freebsd-x64": {
+      "version": "4.35.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.35.0.tgz",
+      "integrity": "sha512-2mpHCeRuD1u/2kruUiHSsnjWtHjqVbzhBkNVQ1aVD63CcexKVcQGwJ2g5VphOd84GvxfSvnnlEyBtQCE5hxVVw==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "freebsd"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
+      "version": "4.35.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.35.0.tgz",
+      "integrity": "sha512-mrA0v3QMy6ZSvEuLs0dMxcO2LnaCONs1Z73GUDBHWbY8tFFocM6yl7YyMu7rz4zS81NDSqhrUuolyZXGi8TEqg==",
+      "cpu": [
+        "arm"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-arm-musleabihf": {
+      "version": "4.35.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.35.0.tgz",
+      "integrity": "sha512-DnYhhzcvTAKNexIql8pFajr0PiDGrIsBYPRvCKlA5ixSS3uwo/CWNZxB09jhIapEIg945KOzcYEAGGSmTSpk7A==",
+      "cpu": [
+        "arm"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-arm64-gnu": {
+      "version": "4.35.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.35.0.tgz",
+      "integrity": "sha512-uagpnH2M2g2b5iLsCTZ35CL1FgyuzzJQ8L9VtlJ+FckBXroTwNOaD0z0/UF+k5K3aNQjbm8LIVpxykUOQt1m/A==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-arm64-musl": {
+      "version": "4.35.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.35.0.tgz",
+      "integrity": "sha512-XQxVOCd6VJeHQA/7YcqyV0/88N6ysSVzRjJ9I9UA/xXpEsjvAgDTgH3wQYz5bmr7SPtVK2TsP2fQ2N9L4ukoUg==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-loongarch64-gnu": {
+      "version": "4.35.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.35.0.tgz",
+      "integrity": "sha512-5pMT5PzfgwcXEwOaSrqVsz/LvjDZt+vQ8RT/70yhPU06PTuq8WaHhfT1LW+cdD7mW6i/J5/XIkX/1tCAkh1W6g==",
+      "cpu": [
+        "loong64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
+      "version": "4.35.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.35.0.tgz",
+      "integrity": "sha512-c+zkcvbhbXF98f4CtEIP1EBA/lCic5xB0lToneZYvMeKu5Kamq3O8gqrxiYYLzlZH6E3Aq+TSW86E4ay8iD8EA==",
+      "cpu": [
+        "ppc64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-riscv64-gnu": {
+      "version": "4.35.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.35.0.tgz",
+      "integrity": "sha512-s91fuAHdOwH/Tad2tzTtPX7UZyytHIRR6V4+2IGlV0Cej5rkG0R61SX4l4y9sh0JBibMiploZx3oHKPnQBKe4g==",
+      "cpu": [
+        "riscv64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-s390x-gnu": {
+      "version": "4.35.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.35.0.tgz",
+      "integrity": "sha512-hQRkPQPLYJZYGP+Hj4fR9dDBMIM7zrzJDWFEMPdTnTy95Ljnv0/4w/ixFw3pTBMEuuEuoqtBINYND4M7ujcuQw==",
+      "cpu": [
+        "s390x"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-x64-gnu": {
+      "version": "4.35.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.35.0.tgz",
+      "integrity": "sha512-Pim1T8rXOri+0HmV4CdKSGrqcBWX0d1HoPnQ0uw0bdp1aP5SdQVNBy8LjYncvnLgu3fnnCt17xjWGd4cqh8/hA==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-linux-x64-musl": {
+      "version": "4.35.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.35.0.tgz",
+      "integrity": "sha512-QysqXzYiDvQWfUiTm8XmJNO2zm9yC9P/2Gkrwg2dH9cxotQzunBHYr6jk4SujCTqnfGxduOmQcI7c2ryuW8XVg==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@rollup/rollup-win32-arm64-msvc": {
+      "version": "4.35.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.35.0.tgz",
+      "integrity": "sha512-OUOlGqPkVJCdJETKOCEf1mw848ZyJ5w50/rZ/3IBQVdLfR5jk/6Sr5m3iO2tdPgwo0x7VcncYuOvMhBWZq8ayg==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "win32"
+      ]
+    },
+    "node_modules/@rollup/rollup-win32-ia32-msvc": {
+      "version": "4.35.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.35.0.tgz",
+      "integrity": "sha512-2/lsgejMrtwQe44glq7AFFHLfJBPafpsTa6JvP2NGef/ifOa4KBoglVf7AKN7EV9o32evBPRqfg96fEHzWo5kw==",
+      "cpu": [
+        "ia32"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "win32"
+      ]
+    },
+    "node_modules/@rollup/rollup-win32-x64-msvc": {
+      "version": "4.35.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.35.0.tgz",
+      "integrity": "sha512-PIQeY5XDkrOysbQblSW7v3l1MDZzkTEzAfTPkj5VAu3FW8fS4ynyLg2sINp0fp3SjZ8xkRYpLqoKcYqAkhU1dw==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "win32"
+      ]
+    },
     "node_modules/@scure/base": {
       "version": "1.1.9",
       "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz",
@@ -4554,6 +4872,53 @@
         "jsontokens": "^4.0.1"
       }
     },
+    "node_modules/@stacks/connect-react": {
+      "version": "23.0.9",
+      "resolved": "https://registry.npmjs.org/@stacks/connect-react/-/connect-react-23.0.9.tgz",
+      "integrity": "sha512-HKOlsbUR5z5ZlKqX9ABOfpmpYGDlUqwdoVONpN+Ou/3X/Rbfg8TSAnvK5ToSjkdJjgcRpdOEsDg3AC90k+KnlA==",
+      "license": "MIT",
+      "dependencies": {
+        "@stacks/connect": "8.1.6"
+      },
+      "peerDependencies": {
+        "react": "^16.x || 17.x || 18.x",
+        "react-dom": "^16.x || 17.x || 18.x"
+      }
+    },
+    "node_modules/@stacks/connect-react/node_modules/@scure/base": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.4.tgz",
+      "integrity": "sha512-5Yy9czTO47mqz+/J8GM6GIId4umdCk1wc1q8rKERQulIoc8VP9pzDcghv10Tl2E7R96ZUx/PhND3ESYUQX8NuQ==",
+      "license": "MIT",
+      "funding": {
+        "url": "https://paulmillr.com/funding/"
+      }
+    },
+    "node_modules/@stacks/connect-react/node_modules/@stacks/connect": {
+      "version": "8.1.6",
+      "resolved": "https://registry.npmjs.org/@stacks/connect/-/connect-8.1.6.tgz",
+      "integrity": "sha512-k8W3HP2WZiFcSjlxJWqS9s63vfhpsNy3h7MfC+Q2XUm585/oT8OZh81oanXKtVcSNAsvT5BSwMHIj/Jet8xdLQ==",
+      "license": "MIT",
+      "dependencies": {
+        "@scure/base": "^1.2.4",
+        "@stacks/common": "^7.0.0",
+        "@stacks/connect-ui": "8.0.0",
+        "@stacks/network": "^7.0.0",
+        "@stacks/network-v6": "npm:@stacks/network@^6.16.0",
+        "@stacks/profile": "^7.0.0",
+        "@stacks/transactions": "^7.0.0",
+        "@stacks/transactions-v6": "npm:@stacks/transactions@^6.16.0"
+      }
+    },
+    "node_modules/@stacks/connect-react/node_modules/@stacks/connect-ui": {
+      "version": "8.0.0",
+      "resolved": "https://registry.npmjs.org/@stacks/connect-ui/-/connect-ui-8.0.0.tgz",
+      "integrity": "sha512-m8yqg28EWQCATkVxILotzbqvcnk0n+qhyncTTNEYXVe4VnfV0eRXvxX88nbA/fot1k+MuQlMu3WhrBFLHJ/xzA==",
+      "license": "MIT",
+      "dependencies": {
+        "@stencil/core": "^2.17.1"
+      }
+    },
     "node_modules/@stacks/connect-ui": {
       "version": "6.6.0",
       "resolved": "https://registry.npmjs.org/@stacks/connect-ui/-/connect-ui-6.6.0.tgz",
@@ -4782,6 +5147,13 @@
       "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==",
       "license": "MIT"
     },
+    "node_modules/@types/estree": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
+      "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==",
+      "dev": true,
+      "license": "MIT"
+    },
     "node_modules/@types/lodash": {
       "version": "4.17.15",
       "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.15.tgz",
@@ -5990,9 +6362,9 @@
       }
     },
     "node_modules/esbuild": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz",
-      "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz",
+      "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==",
       "dev": true,
       "hasInstallScript": true,
       "license": "MIT",
@@ -6000,31 +6372,34 @@
         "esbuild": "bin/esbuild"
       },
       "engines": {
-        "node": ">=12"
+        "node": ">=18"
       },
       "optionalDependencies": {
-        "@esbuild/android-arm": "0.18.20",
-        "@esbuild/android-arm64": "0.18.20",
-        "@esbuild/android-x64": "0.18.20",
-        "@esbuild/darwin-arm64": "0.18.20",
-        "@esbuild/darwin-x64": "0.18.20",
-        "@esbuild/freebsd-arm64": "0.18.20",
-        "@esbuild/freebsd-x64": "0.18.20",
-        "@esbuild/linux-arm": "0.18.20",
-        "@esbuild/linux-arm64": "0.18.20",
-        "@esbuild/linux-ia32": "0.18.20",
-        "@esbuild/linux-loong64": "0.18.20",
-        "@esbuild/linux-mips64el": "0.18.20",
-        "@esbuild/linux-ppc64": "0.18.20",
-        "@esbuild/linux-riscv64": "0.18.20",
-        "@esbuild/linux-s390x": "0.18.20",
-        "@esbuild/linux-x64": "0.18.20",
-        "@esbuild/netbsd-x64": "0.18.20",
-        "@esbuild/openbsd-x64": "0.18.20",
-        "@esbuild/sunos-x64": "0.18.20",
-        "@esbuild/win32-arm64": "0.18.20",
-        "@esbuild/win32-ia32": "0.18.20",
-        "@esbuild/win32-x64": "0.18.20"
+        "@esbuild/aix-ppc64": "0.25.0",
+        "@esbuild/android-arm": "0.25.0",
+        "@esbuild/android-arm64": "0.25.0",
+        "@esbuild/android-x64": "0.25.0",
+        "@esbuild/darwin-arm64": "0.25.0",
+        "@esbuild/darwin-x64": "0.25.0",
+        "@esbuild/freebsd-arm64": "0.25.0",
+        "@esbuild/freebsd-x64": "0.25.0",
+        "@esbuild/linux-arm": "0.25.0",
+        "@esbuild/linux-arm64": "0.25.0",
+        "@esbuild/linux-ia32": "0.25.0",
+        "@esbuild/linux-loong64": "0.25.0",
+        "@esbuild/linux-mips64el": "0.25.0",
+        "@esbuild/linux-ppc64": "0.25.0",
+        "@esbuild/linux-riscv64": "0.25.0",
+        "@esbuild/linux-s390x": "0.25.0",
+        "@esbuild/linux-x64": "0.25.0",
+        "@esbuild/netbsd-arm64": "0.25.0",
+        "@esbuild/netbsd-x64": "0.25.0",
+        "@esbuild/openbsd-arm64": "0.25.0",
+        "@esbuild/openbsd-x64": "0.25.0",
+        "@esbuild/sunos-x64": "0.25.0",
+        "@esbuild/win32-arm64": "0.25.0",
+        "@esbuild/win32-ia32": "0.25.0",
+        "@esbuild/win32-x64": "0.25.0"
       }
     },
     "node_modules/escalade": {
@@ -8092,9 +8467,9 @@
       }
     },
     "node_modules/postcss": {
-      "version": "8.5.1",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.1.tgz",
-      "integrity": "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==",
+      "version": "8.5.3",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz",
+      "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==",
       "funding": [
         {
           "type": "opencollective",
@@ -8364,9 +8739,9 @@
       }
     },
     "node_modules/react-router": {
-      "version": "7.1.5",
-      "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.1.5.tgz",
-      "integrity": "sha512-8BUF+hZEU4/z/JD201yK6S+UYhsf58bzYIDq2NS1iGpwxSXDu7F+DeGSkIXMFBuHZB21FSiCzEcUb18cQNdRkA==",
+      "version": "7.3.0",
+      "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.3.0.tgz",
+      "integrity": "sha512-466f2W7HIWaNXTKM5nHTqNxLrHTyXybm7R0eBlVSt0k/u55tTCDO194OIx/NrYD4TS5SXKTNekXfT37kMKUjgw==",
       "license": "MIT",
       "dependencies": {
         "@types/cookie": "^0.6.0",
@@ -8388,12 +8763,12 @@
       }
     },
     "node_modules/react-router-dom": {
-      "version": "7.1.5",
-      "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.1.5.tgz",
-      "integrity": "sha512-/4f9+up0Qv92D3bB8iN5P1s3oHAepSGa9h5k6tpTFlixTTskJZwKGhJ6vRJ277tLD1zuaZTt95hyGWV1Z37csQ==",
+      "version": "7.3.0",
+      "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.3.0.tgz",
+      "integrity": "sha512-z7Q5FTiHGgQfEurX/FBinkOXhWREJIAB2RiU24lvcBa82PxUpwqvs/PAXb9lJyPjTs2jrl6UkLvCZVGJPeNuuQ==",
       "license": "MIT",
       "dependencies": {
-        "react-router": "7.1.5"
+        "react-router": "7.3.0"
       },
       "engines": {
         "node": ">=20.0.0"
@@ -8555,19 +8930,41 @@
       }
     },
     "node_modules/rollup": {
-      "version": "3.29.5",
-      "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.5.tgz",
-      "integrity": "sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==",
+      "version": "4.35.0",
+      "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.35.0.tgz",
+      "integrity": "sha512-kg6oI4g+vc41vePJyO6dHt/yl0Rz3Thv0kJeVQ3D1kS3E5XSuKbPc29G4IpT/Kv1KQwgHVcN+HtyS+HYLNSvQg==",
       "dev": true,
       "license": "MIT",
+      "dependencies": {
+        "@types/estree": "1.0.6"
+      },
       "bin": {
         "rollup": "dist/bin/rollup"
       },
       "engines": {
-        "node": ">=14.18.0",
+        "node": ">=18.0.0",
         "npm": ">=8.0.0"
       },
       "optionalDependencies": {
+        "@rollup/rollup-android-arm-eabi": "4.35.0",
+        "@rollup/rollup-android-arm64": "4.35.0",
+        "@rollup/rollup-darwin-arm64": "4.35.0",
+        "@rollup/rollup-darwin-x64": "4.35.0",
+        "@rollup/rollup-freebsd-arm64": "4.35.0",
+        "@rollup/rollup-freebsd-x64": "4.35.0",
+        "@rollup/rollup-linux-arm-gnueabihf": "4.35.0",
+        "@rollup/rollup-linux-arm-musleabihf": "4.35.0",
+        "@rollup/rollup-linux-arm64-gnu": "4.35.0",
+        "@rollup/rollup-linux-arm64-musl": "4.35.0",
+        "@rollup/rollup-linux-loongarch64-gnu": "4.35.0",
+        "@rollup/rollup-linux-powerpc64le-gnu": "4.35.0",
+        "@rollup/rollup-linux-riscv64-gnu": "4.35.0",
+        "@rollup/rollup-linux-s390x-gnu": "4.35.0",
+        "@rollup/rollup-linux-x64-gnu": "4.35.0",
+        "@rollup/rollup-linux-x64-musl": "4.35.0",
+        "@rollup/rollup-win32-arm64-msvc": "4.35.0",
+        "@rollup/rollup-win32-ia32-msvc": "4.35.0",
+        "@rollup/rollup-win32-x64-msvc": "4.35.0",
         "fsevents": "~2.3.2"
       }
     },
@@ -9568,41 +9965,48 @@
       }
     },
     "node_modules/vite": {
-      "version": "4.5.9",
-      "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.9.tgz",
-      "integrity": "sha512-qK9W4xjgD3gXbC0NmdNFFnVFLMWSNiR3swj957yutwzzN16xF/E7nmtAyp1rT9hviDroQANjE4HK3H4WqWdFtw==",
+      "version": "6.2.1",
+      "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.1.tgz",
+      "integrity": "sha512-n2GnqDb6XPhlt9B8olZPrgMD/es/Nd1RdChF6CBD/fHW6pUyUTt2sQW2fPRX5GiD9XEa6+8A6A4f2vT6pSsE7Q==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "esbuild": "^0.18.10",
-        "postcss": "^8.4.27",
-        "rollup": "^3.27.1"
+        "esbuild": "^0.25.0",
+        "postcss": "^8.5.3",
+        "rollup": "^4.30.1"
       },
       "bin": {
         "vite": "bin/vite.js"
       },
       "engines": {
-        "node": "^14.18.0 || >=16.0.0"
+        "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
       },
       "funding": {
         "url": "https://github.com/vitejs/vite?sponsor=1"
       },
       "optionalDependencies": {
-        "fsevents": "~2.3.2"
+        "fsevents": "~2.3.3"
       },
       "peerDependencies": {
-        "@types/node": ">= 14",
+        "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
+        "jiti": ">=1.21.0",
         "less": "*",
         "lightningcss": "^1.21.0",
         "sass": "*",
+        "sass-embedded": "*",
         "stylus": "*",
         "sugarss": "*",
-        "terser": "^5.4.0"
+        "terser": "^5.16.0",
+        "tsx": "^4.8.1",
+        "yaml": "^2.4.2"
       },
       "peerDependenciesMeta": {
         "@types/node": {
           "optional": true
         },
+        "jiti": {
+          "optional": true
+        },
         "less": {
           "optional": true
         },
@@ -9612,6 +10016,9 @@
         "sass": {
           "optional": true
         },
+        "sass-embedded": {
+          "optional": true
+        },
         "stylus": {
           "optional": true
         },
@@ -9620,6 +10027,12 @@
         },
         "terser": {
           "optional": true
+        },
+        "tsx": {
+          "optional": true
+        },
+        "yaml": {
+          "optional": true
         }
       }
     },
diff --git a/ui/package.json b/ui/package.json
index 833e471..21bd1b3 100644
--- a/ui/package.json
+++ b/ui/package.json
@@ -21,7 +21,7 @@
     "react": "^18.2.0",
     "react-dom": "^18.2.0",
     "react-icons": "^5.4.0",
-    "react-router-dom": "^7.1.3"
+    "react-router-dom": "^7.3.0"
   },
   "devDependencies": {
     "@types/react": "^18.2.15",
@@ -34,6 +34,6 @@
     "eslint-plugin-react-refresh": "^0.4.3",
     "postcss": "^8.5.1",
     "tailwindcss": "^3.4.17",
-    "vite": "^4.4.5"
+    "vite": "^6.2.1"
   }
 }
diff --git a/ui/public/smart-wallet.clar b/ui/public/smart-wallet.clar
index 839b3db..fe3439e 100644
--- a/ui/public/smart-wallet.clar
+++ b/ui/public/smart-wallet.clar
@@ -1,10 +1,10 @@
 ;; title: smart-wallet-standard
 ;; version: 1
 ;; summary: Extendible smart wallet with standard SIP-010 and SIP-009 support
-(use-trait extension-trait .extension-trait.extension-trait)
+(use-trait extension-trait 'ST3FFRX7C911PZP5RHE148YDVDD9JWVS6FZRA60VS.extension-trait.extension-trait)
 
-(use-trait sip-010-trait 'SP3FBR2AGK5H9QBDH3EEN6DF8EK8JY7RX8QJ5SVTE.sip-010-trait-ft-standard.sip-010-trait)
-(use-trait sip-009-trait 'SP2PABAF9FTAJYNFZH93XENAJ8FVY99RRM50D2JG9.nft-trait.nft-trait)
+(use-trait sip-010-trait 'ST3FFRX7C911PZP5RHE148YDVDD9JWVS6FZRA60VS.sip-010-trait-ft-standard.sip-010-trait)
+(use-trait sip-009-trait 'ST3FFRX7C911PZP5RHE148YDVDD9JWVS6FZRA60VS.nft-trait.nft-trait)
 
 (define-constant err-unauthorised (err u4001))
 (define-constant err-forbidden (err u4003))
diff --git a/ui/src/components/extensions.jsx b/ui/src/components/extensions.jsx
index 778f39a..bc7728f 100644
--- a/ui/src/components/extensions.jsx
+++ b/ui/src/components/extensions.jsx
@@ -3,12 +3,12 @@ import DelegateStxPox4 from './extensions/delegate-stx-pox4';
 import { Accordion, AccordionItem } from '@heroui/react';
 import { PiLockKey } from 'react-icons/pi';
 
-const Extensions = ({ clientConfig, contractState, setConfirmationModal, setTx, smartWalletStx }) => {
+const Extensions = ({ clientConfig, contractState, setConfirmationModal, setTx, smartWalletStx, smartWalletAddress }) => {
     return (
         <div>
             <Accordion variant="splitted">
                 <AccordionItem key="1" aria-label="Accordion 1" title={<label className='flex gap-4 items-center'><PiLockKey size="20px" className='text-warning' /> Delegate Stx</label>}>
-                    <DelegateStxPox4 clientConfig={clientConfig} contractState={contractState} setConfirmationModal={setConfirmationModal} setTx={setTx} smartWalletStx={smartWalletStx}/>
+                    <DelegateStxPox4 clientConfig={clientConfig} contractState={contractState} setConfirmationModal={setConfirmationModal} setTx={setTx} smartWalletStx={smartWalletStx} smartWalletAddress={smartWalletAddress} />
                 </AccordionItem>
             </Accordion>
         </div>
diff --git a/ui/src/components/extensions/delegate-stx-pox4.jsx b/ui/src/components/extensions/delegate-stx-pox4.jsx
index 9bed28f..6be7080 100644
--- a/ui/src/components/extensions/delegate-stx-pox4.jsx
+++ b/ui/src/components/extensions/delegate-stx-pox4.jsx
@@ -8,14 +8,12 @@ import { delegate_address } from '../../lib/contracts';
 import { userSession } from '../../user-session';
 import { bufferFromAscii, serialize, stringAscii } from '@stacks/transactions/dist/cl';
 
-const DelegateStxPox4 = ({ clientConfig, contractState, setConfirmationModal, setTx, smartWalletStx }) => {
+const DelegateStxPox4 = ({ clientConfig, contractState, setConfirmationModal, setTx, smartWalletStx, smartWalletAddress }) => {
     const [amount, setAmount] = useState(0.1);
-    const [address, setAddress] = useState('');
+    const [address, setAddress] = useState(smartWalletAddress);
     const [lockPeriod, setLockPeriod] = useState(1);
 
     const userAddress = userSession.loadUserData().profile.stxAddress[clientConfig?.chain];
-    const contractName = "smart-wallet";
-    const smartWalletAddress = `${userAddress}.${contractName}`;
 
     function hexToUint8Array(hexString) {
         if (hexString.startsWith('0x')) {
@@ -40,8 +38,9 @@ const DelegateStxPox4 = ({ clientConfig, contractState, setConfirmationModal, se
             })
         ));
 
+        const [contractAddress, contractName] = smartWalletAddress.split('.');
         openContractCall({
-            contractAddress: userAddress,
+            contractAddress: contractAddress,
             contractName: contractName,
             functionName: 'extension-call',
             functionArgs: [
diff --git a/ui/src/components/modal/depositModal.jsx b/ui/src/components/modal/depositModal.jsx
index 0543667..298e389 100644
--- a/ui/src/components/modal/depositModal.jsx
+++ b/ui/src/components/modal/depositModal.jsx
@@ -10,9 +10,8 @@ import { network } from '../../lib/constants';
 import { userSession } from '../../user-session';
 import { openContractCall, openSTXTransfer } from '@stacks/connect';
 
-const DepositModal = ({ clientConfig, show, close, stx, fungibleToken, nonFungibleToken, setTx, setConfirmationModal, contractState }) => {
+const DepositModal = ({ clientConfig, show, close, stx, fungibleToken, nonFungibleToken, setTx, setConfirmationModal, contractState, smartWalletAddress }) => {
     const userAddress = userSession.loadUserData().profile.stxAddress[clientConfig?.chain];
-    const walletAddress = `${userAddress}.smart-wallet`;
 
     const [isDisabled, setIsDisabled] = useState(false);
     const [selectedToken, setSelectedToken] = useState();
@@ -71,11 +70,10 @@ const DepositModal = ({ clientConfig, show, close, stx, fungibleToken, nonFungib
         const { name, contract_id } = selectedToken;
         if (name === 'stx') {
             const stxTxAmount = actualtoUmicroValue(amount, selectedToken?.decimal);
-            console.log({ stxTxAmount })
             const condition0 = Pc.principal(userAddress).willSendLte(stxTxAmount).ustx();
             openSTXTransfer({
                 amount: stxTxAmount,
-                recipient: walletAddress,
+                recipient: smartWalletAddress,
                 memo: memo,
                 stxAddress: userAddress,
                 network: network(clientConfig?.chain),
@@ -100,7 +98,7 @@ const DepositModal = ({ clientConfig, show, close, stx, fungibleToken, nonFungib
             contractAddress: contract_id.split('.')[0],
             contractName: contract_id.split('::')[0].split('.')[1],
             functionName: 'transfer',
-            functionArgs: [uintCV(ftTxAmount), principalCV(userAddress), principalCV(walletAddress), mem],
+            functionArgs: [uintCV(ftTxAmount), principalCV(userAddress), principalCV(smartWalletAddress), mem],
             network: network(clientConfig?.chain),
             stxAddress: userAddress,
             postConditions: [condition1],
@@ -124,7 +122,7 @@ const DepositModal = ({ clientConfig, show, close, stx, fungibleToken, nonFungib
             contractAddress: asset_identifier.split('.')[0],
             contractName: asset_identifier.split('::')[0].split(".")[1],
             functionName: 'transfer',
-            functionArgs: [uintCV(value), principalCV(userAddress), principalCV(walletAddress)],
+            functionArgs: [uintCV(value), principalCV(userAddress), principalCV(smartWalletAddress)],
             network: network(clientConfig?.chain),
             postConditions: [condition],
             postConditionMode: PostConditionMode.Deny,
diff --git a/ui/src/components/modal/stxsendmodal.jsx b/ui/src/components/modal/stxsendmodal.jsx
index b57162f..c35f827 100644
--- a/ui/src/components/modal/stxsendmodal.jsx
+++ b/ui/src/components/modal/stxsendmodal.jsx
@@ -7,10 +7,8 @@ import { Pc, PostConditionMode } from '@stacks/transactions';
 import { userSession } from '../../user-session';
 import { network } from '../../lib/constants';
 
-const StxSendModal = ({ show, close, stx, clientConfig, contractState }) => {
+const StxSendModal = ({ show, close, stx, clientConfig, contractState, smartWalletAddress }) => {
     const userAddress = userSession.loadUserData().profile.stxAddress[clientConfig?.chain];
-    const contractName = "smart-wallet";
-    const smartWalletAddress = `${userAddress}.${contractName}`;
 
     const [amount, setAmount] = useState(0);
     const [address, setAddress] = useState(userAddress);
diff --git a/ui/src/components/tabs.jsx b/ui/src/components/tabs.jsx
index 9209705..525f2ff 100644
--- a/ui/src/components/tabs.jsx
+++ b/ui/src/components/tabs.jsx
@@ -7,7 +7,7 @@ import Walletassets from './walletassets'
 import Wallettransfer from './wallettransfer'
 import Extensions from './extensions'
 
-function TabsComponent({ clientConfig, fungibleToken, nonFungibleToken, contractState, setConfirmationModal, setTx, smartWalletStx }) {
+function TabsComponent({ clientConfig, fungibleToken, nonFungibleToken, contractState, setConfirmationModal, setTx, smartWalletStx, smartWalletAddress }) {
     return (
         <div className="flex w-full flex-col">
             <div className="flex w-full flex-col">
@@ -20,7 +20,7 @@ function TabsComponent({ clientConfig, fungibleToken, nonFungibleToken, contract
                     }>
                         <Card className='mt-1'>
                             <CardBody >
-                                <Walletassets clientConfig={clientConfig} fungibleToken={fungibleToken} nonFungibleToken={nonFungibleToken} contractState={contractState} setConfirmationModal={setConfirmationModal} setTx={setTx} />
+                                <Walletassets clientConfig={clientConfig} fungibleToken={fungibleToken} nonFungibleToken={nonFungibleToken} contractState={contractState} setConfirmationModal={setConfirmationModal} setTx={setTx} smartWalletAddress={smartWalletAddress} />
                             </CardBody>
                         </Card>
                     </Tab>
@@ -32,7 +32,7 @@ function TabsComponent({ clientConfig, fungibleToken, nonFungibleToken, contract
                     }>
                         <Card className='mt-1'>
                             <CardBody>
-                                <Extensions clientConfig={clientConfig} contractState={contractState} setConfirmationModal={setConfirmationModal} setTx={setTx} smartWalletStx={smartWalletStx} />
+                                <Extensions clientConfig={clientConfig} contractState={contractState} setConfirmationModal={setConfirmationModal} setTx={setTx} smartWalletStx={smartWalletStx} smartWalletAddress={smartWalletAddress} />
                             </CardBody>
                         </Card>
                     </Tab>
@@ -44,7 +44,7 @@ function TabsComponent({ clientConfig, fungibleToken, nonFungibleToken, contract
                     }>
                         <Card className='mt-1'>
                             <CardBody>
-                                <Wallettransfer clientConfig={clientConfig} contractState={contractState} setConfirmationModal={setConfirmationModal} setTx={setTx} />
+                                <Wallettransfer clientConfig={clientConfig} contractState={contractState} setConfirmationModal={setConfirmationModal} setTx={setTx} smartWalletAddress={smartWalletAddress} />
                             </CardBody>
                         </Card>
                     </Tab>
diff --git a/ui/src/components/walletassets.jsx b/ui/src/components/walletassets.jsx
index 43f17f0..b630a87 100644
--- a/ui/src/components/walletassets.jsx
+++ b/ui/src/components/walletassets.jsx
@@ -10,10 +10,8 @@ import { bufferCVFromString, cvToValue, fetchCallReadOnlyFunction, noneCV, Pc, P
 import { network } from '../lib/constants';
 import { openContractCall } from '@stacks/connect';
 
-const Walletassets = ({ clientConfig, fungibleToken, nonFungibleToken, contractState, setConfirmationModal, setTx }) => {
+const Walletassets = ({ clientConfig, fungibleToken, nonFungibleToken, contractState, setConfirmationModal, setTx, smartWalletAddress }) => {
     const userAddress = userSession.loadUserData().profile.stxAddress[clientConfig?.chain];
-    const contractName = "smart-wallet";
-    const smartWalletAddress = `${userAddress}.${contractName}`;
 
     const [selectedToken, setSelectedToken] = useState();
     const [assetMeta, setAssetMeta] = useState();
@@ -25,6 +23,7 @@ const Walletassets = ({ clientConfig, fungibleToken, nonFungibleToken, contractS
     const [address, setAddress] = useState(userAddress);
     const [memo, setMemo] = useState('');
 
+
     async function handleSelectFt(e) {
         const { value } = e.target;
         if (value === '$.0') {
@@ -67,15 +66,18 @@ const Walletassets = ({ clientConfig, fungibleToken, nonFungibleToken, contractS
     }
 
     function sendFt() {
+
         const { contract_id } = selectedToken;
         const ftTxAmount = actualtoUmicroValue(amount, selectedToken?.decimal);
         const mem = memo ? someCV(bufferCVFromString(memo)) : noneCV();
         const condition1 = Pc.principal(smartWalletAddress).willSendLte(ftTxAmount).ft(contract_id.split('::')[0], contract_id.split('::')[1]);
+
+        const [assetAddress, assetContractName] = contract_id.split('.');
         openContractCall({
-            contractAddress: contract_id.split('.')[0],
-            contractName: contract_id.split('::')[0].split('.')[1],
+            contractAddress: assetAddress,
+            contractName: assetContractName,
             functionName: 'transfer',
-            functionArgs: [uintCV(ftTxAmount), principalCV(smartWalletAddress), principalCV(address), mem],
+            functionArgs: [uintCV(ftTxAmount), principalCV(smartContractAddress), principalCV(address), mem],
             network: network(clientConfig?.chain),
             stxAddress: userAddress,
             postConditions: [condition1],
@@ -97,7 +99,7 @@ const Walletassets = ({ clientConfig, fungibleToken, nonFungibleToken, contractS
             contractAddress: asset_identifier.split('.')[0],
             contractName: asset_identifier.split('::')[0].split(".")[1],
             functionName: 'transfer',
-            functionArgs: [uintCV(value), principalCV(smartWalletAddress), principalCV(userAddress)],
+            functionArgs: [uintCV(value), principalCV(smartWalletAddress), principalCV(address)],
             network: network(clientConfig?.chain),
             postConditions: [condition],
             postConditionMode: PostConditionMode.Deny,
diff --git a/ui/src/components/wallettransfer.jsx b/ui/src/components/wallettransfer.jsx
index 9c0011c..878fb1e 100644
--- a/ui/src/components/wallettransfer.jsx
+++ b/ui/src/components/wallettransfer.jsx
@@ -5,19 +5,16 @@ import { userSession } from '../user-session';
 import { PostConditionMode, principalCV } from '@stacks/transactions';
 import { network } from '../lib/constants';
 
-const Wallettransfer = ({ clientConfig, contractState, setConfirmationModal, setTx }) => {
+const Wallettransfer = ({ clientConfig, contractState, setConfirmationModal, setTx, smartWalletAddress }) => {
     const [agree, setAgree] = useState(false);
     const [address, setAdress] = useState('');
-
+    const [contractAddress, contractName] = smartWalletAddress.split('.');
     const userAddress = userSession.loadUserData().profile.stxAddress[clientConfig?.chain];
-    const contractName = 'smart-wallet';
-
-    console.log({ agree, address, contractState });
 
     function transferWalletOwnerShip() {
         openContractCall({
-            contractAddress: userAddress,
-            contractName,
+            contractAddress: contractAddress,
+            contractName: contractName,
             functionName: 'transfer-wallet',
             functionArgs: [principalCV(address)],
             network: network(clientConfig?.chain),
@@ -31,11 +28,11 @@ const Wallettransfer = ({ clientConfig, contractState, setConfirmationModal, set
     }
 
     return (
-        <div className='w-full flex flex-col gap-5 items-center p-5'>            
+        <div className='w-full flex flex-col gap-5 items-center p-5'>
 
-            <div className='w-full flex gap-5 flex-col'>               
+            <div className='w-full flex gap-5 flex-col'>
                 <Input label='Address' placeholder='Enter address' value={address} onChange={(e) => setAdress(e.target.value)} />
-                <Button isDisabled={!((agree && address) && contractState)} color='warning' onPress={transferWalletOwnerShip}>Transfer Wallet</Button>
+                <Button isDisabled={!(address && contractState)} color='warning' onPress={transferWalletOwnerShip}>Transfer Wallet</Button>
             </div>
 
         </div>
diff --git a/ui/src/lib/contracts.js b/ui/src/lib/contracts.js
index 43c6f14..3f4f4dd 100644
--- a/ui/src/lib/contracts.js
+++ b/ui/src/lib/contracts.js
@@ -1 +1 @@
-export const delegate_address = "ST30RNTQNY63F6XR66J2Q3WP1THZT3VHZGYEXA9XX.ext-delegate-stx-pox-4";
\ No newline at end of file
+export const delegate_address = "ST3FFRX7C911PZP5RHE148YDVDD9JWVS6FZRA60VS.ext-delegate-stx-pox-4";
\ No newline at end of file
diff --git a/ui/src/pages/wallet.jsx b/ui/src/pages/wallet.jsx
index 750347a..2ac5bab 100644
--- a/ui/src/pages/wallet.jsx
+++ b/ui/src/pages/wallet.jsx
@@ -9,8 +9,15 @@ import DepositModal from '../components/modal/depositModal';
 import SmartWalletDeployModal from '../components/modal/smartwalletdeploymodal';
 import StxSendModal from '../components/modal/stxsendmodal';
 import ConfirmedModal from '../components/modal/confirmedmodal';
+import { useParams } from 'react-router-dom';
+import { userSession } from '../user-session';
+import { explorer } from '../lib/constants';
+import { Code, Tooltip } from '@heroui/react';
 
 function Wallet({ clientConfig, setClientConfig }) {
+    const { address } = useParams();
+    const [smartWalletAddress, setSmartWalletAddress] = useState(address || userSession.loadUserData().profile.stxAddress[clientConfig.network] + '.smart-wallet');
+
     const [showAdvisory, setShowAdvisory] = useState(false);
     const [advisoryMessage, setAdvisoryMessage] = useState({ title: '', msg: '', reason: '', severity: '' });
     const [contractState, setContractState] = useState(false);
@@ -51,7 +58,7 @@ function Wallet({ clientConfig, setClientConfig }) {
     }
 
     async function initWalletbalance() {
-        const { stx: smartwallet_stx, fungibleTokens: smartwallet_fungibleTokens, nonFungibleTokens: smartwallet_nonFungibleTokens } = await getSmartWalletBalance(clientConfig);
+        const { stx: smartwallet_stx, fungibleTokens: smartwallet_fungibleTokens, nonFungibleTokens: smartwallet_nonFungibleTokens } = await getSmartWalletBalance(smartWalletAddress, clientConfig);
         const { stx: user_stx, fungibleTokens: user_fungibleTokens, nonFungibleTokens: user_nonFungibleTokens } = await getUserBalance(clientConfig);
 
         console.log({ smartwallet_stx, smartwallet_fungibleTokens, smartwallet_nonFungibleTokens, user_stx, user_fungibleTokens, user_nonFungibleTokens });
@@ -65,7 +72,7 @@ function Wallet({ clientConfig, setClientConfig }) {
         setUserNoneFungible(user_nonFungibleTokens);
     }
     async function initWalletInstance() {
-        const contract_info = await getWalletContractInfo(clientConfig);
+        const contract_info = await getWalletContractInfo(smartWalletAddress, clientConfig);
         setShowAdvisory(!contract_info?.found);
         setContractState(contract_info?.found);
         if (!contract_info?.found) {
@@ -89,16 +96,24 @@ function Wallet({ clientConfig, setClientConfig }) {
                 {/* Advisory Box */}
                 <SmartWalletContractAdvisory show={showAdvisory} props={advisoryMessage} icon={<GrDeploy />} action={openLaunchPad} />
 
-                <SmartWalletBalance balance={formatNumber(parseFloat(smartWalletStx?.balance) / 1000000)} stx={smartWalletStx} setShowDepositModal={setShowDepositModal} setShowStxSendModal={setShowStxSendModal} />
+                {contractState &&
+                    <div className='w-full flex'>
+                        <Tooltip size='sm' content="Click to view on explorer">
+                            <Code size='sm' color="secondary"><a href={`${explorer(smartWalletAddress, '', clientConfig?.chain)}`} target='_blank'>{`${smartWalletAddress.slice(0, 6)}...${smartWalletAddress.slice(-16)}`}</a></Code>
+                        </Tooltip>
+                    </div>
+                }
+
+                <SmartWalletBalance balance={formatNumber(parseFloat(smartWalletStx?.balance) / 1000000)} stx={smartWalletStx} setShowDepositModal={setShowDepositModal} setShowStxSendModal={setShowStxSendModal} smartWalletAddress={smartWalletAddress} />
 
-                <Tabs clientConfig={clientConfig} fungibleToken={smartWalletFungibleToken} nonFungibleToken={smartWalletNonFungibleToken} contractState={contractState} setConfirmationModal={setConfirmationModal} setTx={setTx} smartWalletStx={smartWalletStx} />
+                <Tabs clientConfig={clientConfig} fungibleToken={smartWalletFungibleToken} nonFungibleToken={smartWalletNonFungibleToken} contractState={contractState} setConfirmationModal={setConfirmationModal} setTx={setTx} smartWalletStx={smartWalletStx} smartWalletAddress={smartWalletAddress} />
 
             </div>
 
             {/* Modals */}
-            {showDepositModal && <DepositModal show={showDepositModal} close={() => setShowDepositModal(false)} stx={userStx} fungibleToken={userFungibleToken} nonFungibleToken={userNonFungibleToken} clientConfig={clientConfig} setTx={setTx} setConfirmationModal={setConfirmationModal} contractState={contractState} />}
+            {showDepositModal && <DepositModal show={showDepositModal} close={() => setShowDepositModal(false)} stx={userStx} fungibleToken={userFungibleToken} nonFungibleToken={userNonFungibleToken} clientConfig={clientConfig} setTx={setTx} setConfirmationModal={setConfirmationModal} contractState={contractState} smartWalletAddress={smartWalletAddress} />}
             {showSmartWalletModal && <SmartWalletDeployModal show={showSmartWalletModal} close={() => setShowSmartWallettModal(false)} clientConfig={clientConfig} setTx={setTx} setConfirmationModal={setConfirmationModal} contractState={contractState} />}
-            {showStxSendModal && <StxSendModal show={showStxSendModal} close={() => setShowStxSendModal(false)} stx={smartWalletStx} clientConfig={clientConfig} setTx={setTx} setConfirmationModal={setConfirmationModal} contractState={contractState} />}
+            {showStxSendModal && <StxSendModal show={showStxSendModal} close={() => setShowStxSendModal(false)} stx={smartWalletStx} clientConfig={clientConfig} setTx={setTx} setConfirmationModal={setConfirmationModal} contractState={contractState} smartWalletAddress={smartWalletAddress} />}
             {showConfirmationModal && <ConfirmedModal show={showConfirmationModal} close={() => setConfirmationModal(false)} tx={tx} clientConfig={clientConfig} />}
         </>
     )
diff --git a/ui/src/routes.jsx b/ui/src/routes.jsx
index 670d167..9e36c72 100644
--- a/ui/src/routes.jsx
+++ b/ui/src/routes.jsx
@@ -21,13 +21,11 @@ function AppRoutes() {
             {!isAuthed && <Route path='/' element={<Landing />} />}
 
             {isAuthed &&
-                <Route path='/' element={
-                    <Wallet
-                        clientConfig={clientConfig}
-                        setClientConfig={setClientConfig}
-                    />
-                } />}
-
+                <>
+                    <Route path='/' element={<Wallet clientConfig={clientConfig} setClientConfig={setClientConfig} />} />
+                    <Route path='/:address*' element={<Wallet clientConfig={clientConfig} setClientConfig={setClientConfig} />} />
+                </>
+            }
         </Routes>
     )
 }
diff --git a/ui/src/services/wallet.js b/ui/src/services/wallet.js
index 01a69bb..f574603 100644
--- a/ui/src/services/wallet.js
+++ b/ui/src/services/wallet.js
@@ -5,10 +5,8 @@ import { Buffer } from "buffer";
 import { network } from "../lib/constants";
 import { clientFromNetwork } from "@stacks/network";
 
-export async function getSmartWalletBalance(clientConfig) {
-    const userAddress = userSession?.loadUserData()?.profile?.stxAddress[clientConfig?.network];
-    const contractAddress = `${userAddress}.smart-wallet`;
-    const { data, status } = await axios.get(`${clientConfig?.api}/extended/v1/address/${contractAddress}/balances`);
+export async function getSmartWalletBalance(address, clientConfig) {
+    const { data, status } = await axios.get(`${clientConfig?.api}/extended/v1/address/${address}/balances`);
     const { fungible_tokens, non_fungible_tokens, stx } = data;
 
     const rate = (await axios.get(`https://api.diadata.org/v1/assetQuotation/Stacks/0x0000000000000000000000000000000000000000`)).data;
@@ -16,7 +14,7 @@ export async function getSmartWalletBalance(clientConfig) {
         return { contract_id: key, ...fungible_tokens[key], name: key.split('::')[1], contract_principal: key.split('::')[0] };
     });
     const nonFungibleTokens = await Promise.all(Object.keys(non_fungible_tokens).map(async (key) => {
-        let asset = (await axios.get(`${clientConfig?.api}/extended/v1/tokens/nft/holdings?principal=${userAddress}&asset_identifiers=${key}&offset=0&limit=50`)).data?.results;
+        let asset = (await axios.get(`${clientConfig?.api}/extended/v1/tokens/nft/holdings?principal=${address}&asset_identifiers=${key}&offset=0&limit=50`)).data?.results;
         asset = asset?.map((values) => {
             const hexvals = hexToCV(values?.value?.hex);
             const buffValue = hexvals?.value?.name ? Buffer.from(hexvals?.value?.name?.value, "hex").toString() : values?.value?.repr.slice(1);
@@ -56,16 +54,15 @@ export async function getUserBalance(clientConfig) {
     return { stx: { ...stx, rate }, fungibleTokens, nonFungibleTokens: nonFungibleTokens.flat() };
 }
 
-export async function getWalletContractInfo(clientConfig) {
+export async function getWalletContractInfo(address, clientConfig) {
     let result;
-    const userAddress = userSession?.loadUserData()?.profile?.stxAddress[clientConfig?.network];
-    const smartWalletAddress = `${userAddress}.smart-wallet`;
-
     try {
-        const contractInfoData = await (await axios.get(`${clientConfig?.api}/extended/v2/smart-contracts/status?contract_id=${smartWalletAddress}`)).data
-        const contractInfo = contractInfoData[smartWalletAddress];
-        result = { found: contractInfo?.found, ...contractInfo?.result };
+        const contractInfoData = await (await axios.get(`${clientConfig?.api}/extended/v2/smart-contracts/status?contract_id=${address}`)).data
+        const contractInfo = contractInfoData[address];
+        console.log({ contractInfo });
+        result = { found: contractInfo?.found && contractInfo?.result?.status === 'success', ...contractInfo?.result };
     } catch (error) {
+        console.log({ error });
         result = { found: false, error: error.message, code: error?.code };
     }
 


Reviews:
user: login: friedger
state: CHANGES_REQUESTED
author_association: OWNER
submitted_at: 2025-03-07T17:40:04Z
user: login: friedger
state: COMMENTED
author_association: OWNER
submitted_at: 2025-03-07T20:39:21Z
user: login: friedger
state: COMMENTED
author_association: OWNER
submitted_at: 2025-03-07T20:39:58Z
user: login: friedger
state: APPROVED
author_association: OWNER
submitted_at: 2025-03-07T23:05:42Z

Review comments:
diff_hunk: @@ -10,9 +10,9 @@ import { network } from '../../lib/constants';
 import { userSession } from '../../user-session';
 import { openContractCall, openSTXTransfer } from '@stacks/connect';
 
-const DepositModal = ({ clientConfig, show, close, stx, fungibleToken, nonFungibleToken, setTx, setConfirmationModal, contractState }) => {
+const DepositModal = ({ clientConfig, show, close, stx, fungibleToken, nonFungibleToken, setTx, setConfirmationModal, contractState, sharedAddress }) => {
     const userAddress = userSession.loadUserData().profile.stxAddress[clientConfig?.chain];
-    const walletAddress = `${userAddress}.smart-wallet`;
+    const walletAddress = sharedAddress || `${userAddress}.smart-wallet`;
path: ui/src/components/modal/depositModal.jsx
user: login: friedger
body: sharedAddress should never be undefined. It should be resoved in the caller
created_at: 2025-03-07T17:37:23Z
author_association: OWNER
diff_hunk: @@ -16,8 +16,8 @@ const Wallettransfer = ({ clientConfig, contractState, setConfirmationModal, set
 
     function transferWalletOwnerShip() {
         openContractCall({
-            contractAddress: userAddress,
-            contractName,
+            contractAddress: sharedAddress.split('.')[0] || userAddress,
path: ui/src/components/wallettransfer.jsx
user: login: friedger
body: better to split only once like
const [contractAddress, contractName] = sharedAddress.split('.')
created_at: 2025-03-07T17:38:08Z
author_association: OWNER
diff_hunk: @@ -21,13 +21,11 @@ function AppRoutes() {
             {!isAuthed && <Route path='/' element={<Landing />} />}
 
             {isAuthed &&
-                <Route path='/' element={
-                    <Wallet
-                        clientConfig={clientConfig}
-                        setClientConfig={setClientConfig}
-                    />
-                } />}
-
+                <>
+                    <Route path='/' element={<Wallet clientConfig={clientConfig} setClientConfig={setClientConfig} />} />
+                    <Route path='/:address' element={<Wallet clientConfig={clientConfig} setClientConfig={setClientConfig} />} />
path: ui/src/routes.jsx
user: login: friedger
body: could be named :smartWalletContract
created_at: 2025-03-07T17:38:38Z
author_association: OWNER
diff_hunk: @@ -5,9 +5,9 @@ import { Buffer } from "buffer";
 import { network } from "../lib/constants";
 import { clientFromNetwork } from "@stacks/network";
 
-export async function getSmartWalletBalance(clientConfig) {
+export async function getSmartWalletBalance(address, clientConfig) {
path: ui/src/services/wallet.js
user: login: friedger
body: smartWalletContract should never be undefined
created_at: 2025-03-07T17:39:58Z
author_association: OWNER
diff_hunk: @@ -16,8 +16,8 @@ const Wallettransfer = ({ clientConfig, contractState, setConfirmationModal, set
 
     function transferWalletOwnerShip() {
         openContractCall({
-            contractAddress: userAddress,
-            contractName,
+            contractAddress: sharedAddress.split('.')[0] || userAddress,
path: ui/src/components/wallettransfer.jsx
user: login: friedger
body: @Zeus-Adin Could you address this as well?
created_at: 2025-03-07T20:39:21Z
author_association: OWNER
diff_hunk: @@ -5,9 +5,9 @@ import { Buffer } from "buffer";
 import { network } from "../lib/constants";
 import { clientFromNetwork } from "@stacks/network";
 
-export async function getSmartWalletBalance(clientConfig) {
+export async function getSmartWalletBalance(address, clientConfig) {
     const userAddress = userSession?.loadUserData()?.profile?.stxAddress[clientConfig?.network];
-    const contractAddress = `${userAddress}.smart-wallet`;
+    const contractAddress = `${address || userAddress}.smart-wallet`;
path: ui/src/services/wallet.js
user: login: friedger
body: This is not necessary
created_at: 2025-03-07T20:39:57Z
author_association: OWNER

PR comments:
user: login: vercel[bot]
created_at: 2025-03-07T17:35:54Z
body: [vc]: #VA7iV/tD4wtArozegvtcU9Gb9ZdU3c+MySbDg5S8pak=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOlt7Im5hbWUiOiJzbWFydC13YWxsZXQiLCJpbnNwZWN0b3JVcmwiOiJodHRwczovL3ZlcmNlbC5jb20vZnJpZWRnZXJyeWRlcmlkcy1wcm9qZWN0cy9zbWFydC13YWxsZXQvOTUxYXFNaFdRN3NocXJNbXk4Sm15NloyZUhYRSIsInByZXZpZXdVcmwiOiJzbWFydC13YWxsZXQtZ2l0LWZvcmstemV1cy1hZGluLW1haW4tZnJpZWRnZXJyeWRlcmlkcy1wcm9qZWN0cy52ZXJjZWwuYXBwIiwibmV4dENvbW1pdFN0YXR1cyI6IkRFUExPWUVEIiwibGl2ZUZlZWRiYWNrIjp7InJlc29sdmVkIjowLCJ1bnJlc29sdmVkIjowLCJ0b3RhbCI6MCwibGluayI6InNtYXJ0LXdhbGxldC1naXQtZm9yay16ZXVzLWFkaW4tbWFpbi1mcmllZGdlcnJ5ZGVyaWRzLXByb2plY3RzLnZlcmNlbC5hcHAifSwicm9vdERpcmVjdG9yeSI6InVpIn1dfQ==
**The latest updates on your projects**. Learn more about [Vercel for Git ↗︎](https://vercel.link/github-learn-more)

| Name | Status | Preview | Comments | Updated (UTC) |
| :--- | :----- | :------ | :------- | :------ |
| **smart-wallet** | ✅ Ready ([Inspect](https://vercel.com/friedgerryderids-projects/smart-wallet/951aqMhWQ7shqrMmy8Jmy6Z2eHXE)) | [Visit Preview](https://smart-wallet-git-fork-zeus-adin-main-friedgerryderids-projects.vercel.app) | 💬 [**Add feedback**](https://vercel.live/open-feedback/smart-wallet-git-fork-zeus-adin-main-friedgerryderids-projects.vercel.app?via=pr-comment-feedback-link) | Mar 8, 2025 7:52pm |


author_association: NONE
user: login: Zeus-Adin
created_at: 2025-03-08T09:04:16Z
body: > Corrected routing for shared smart-wallet contracts

there seem to be still an issue with this if contract address includes a dot ('.')
author_association: NONE
user: login: friedger
created_at: 2025-03-08T17:58:32Z
body: @Zeus-Adin upgrading vite should solve the dot issue:
    "vite": "^6.2.1"

author_association: OWNER
user: login: Zeus-Adin
created_at: 2025-03-08T19:52:07Z
body: @friedger so yeah that worked and its fixed and updated
author_association: NONE
user: login: friedger
created_at: 2025-03-08T20:23:17Z
body: LGTM
author_association: OWNER