diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index 06db393..d44467d 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -11,7 +11,8 @@
"lucide-react": "^0.577.0",
"next": "16.1.6",
"react": "19.2.3",
- "react-dom": "19.2.3"
+ "react-dom": "19.2.3",
+ "react-hot-toast": "^2.6.0"
},
"devDependencies": {
"@types/node": "^20",
@@ -2373,7 +2374,6 @@
"version": "3.2.3",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz",
"integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==",
- "dev": true,
"license": "MIT"
},
"node_modules/damerau-levenshtein": {
@@ -3496,6 +3496,15 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/goober": {
+ "version": "2.1.18",
+ "resolved": "https://registry.npmjs.org/goober/-/goober-2.1.18.tgz",
+ "integrity": "sha512-2vFqsaDVIT9Gz7N6kAL++pLpp41l3PfDuusHcjnGLfR6+huZkl6ziX+zgVC3ZxpqWhzH6pyDdGrCeDhMIvwaxw==",
+ "license": "MIT",
+ "peerDependencies": {
+ "csstype": "^3.0.10"
+ }
+ },
"node_modules/gopd": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
@@ -4847,6 +4856,23 @@
"react": "^19.2.3"
}
},
+ "node_modules/react-hot-toast": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/react-hot-toast/-/react-hot-toast-2.6.0.tgz",
+ "integrity": "sha512-bH+2EBMZ4sdyou/DPrfgIouFpcRLCJ+HoCA32UoAYHn6T3Ur5yfcDCeSr5mwldl6pFOsiocmrXMuoCJ1vV8bWg==",
+ "license": "MIT",
+ "dependencies": {
+ "csstype": "^3.1.3",
+ "goober": "^2.1.16"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "react": ">=16",
+ "react-dom": ">=16"
+ }
+ },
"node_modules/react-is": {
"version": "16.13.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
diff --git a/frontend/package.json b/frontend/package.json
index a6134b4..4d69a5d 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -12,7 +12,8 @@
"lucide-react": "^0.577.0",
"next": "16.1.6",
"react": "19.2.3",
- "react-dom": "19.2.3"
+ "react-dom": "19.2.3",
+ "react-hot-toast": "^2.6.0"
},
"devDependencies": {
"@types/node": "^20",
diff --git a/frontend/src/app/components/WalletModalTest.tsx b/frontend/src/app/components/WalletModalTest.tsx
new file mode 100644
index 0000000..7d9b653
--- /dev/null
+++ b/frontend/src/app/components/WalletModalTest.tsx
@@ -0,0 +1,13 @@
+import { WalletModal } from "./WalletModal";
+
+interface WalletModalTestProps {
+ isOpen: boolean;
+ onClose: () => void;
+}
+
+export function WalletModalTest({
+ isOpen,
+ onClose,
+}: WalletModalTestProps) {
+ return ;
+}
diff --git a/frontend/src/app/layout.tsx b/frontend/src/app/layout.tsx
index fb297e6..a5f832d 100644
--- a/frontend/src/app/layout.tsx
+++ b/frontend/src/app/layout.tsx
@@ -2,6 +2,7 @@ import type { Metadata } from 'next';
import './globals.css';
import { WalletProvider } from './components/WalletContext';
import { ErrorBoundary } from './components/ErrorBoundary';
+import { Toaster } from 'react-hot-toast';
export const metadata: Metadata = {
title: 'Smasage | AI Portfolio Manager',
@@ -24,6 +25,18 @@ export default function RootLayout({
{children}
+