@@ -3,6 +3,8 @@ import { Suspense, lazy } from "react";
33import { Tooltip } from "react-tooltip" ;
44import { Toaster } from "react-hot-toast" ;
55import { isAuthenticated } from "./api/auth" ;
6+ import { SoundProvider } from "./hooks/useSoundEffects" ;
7+ import SoundToggle from "./components/SoundToggle" ;
68
79const Login = lazy ( ( ) => import ( "./pages/Login" ) ) ;
810const Dashboard = lazy ( ( ) => import ( "./pages/Dashboard" ) ) ;
@@ -19,74 +21,77 @@ const LoadingSpinner = () => (
1921
2022const App = ( ) => {
2123 return (
22- < BrowserRouter >
23- < Suspense fallback = { < LoadingSpinner /> } >
24- < Routes >
25- < Route path = "/login" element = { < Login /> } />
26- < Route
27- path = "/dashboard"
28- element = {
29- < PrivateRoute >
30- < Dashboard />
31- </ PrivateRoute >
32- }
33- />
34- < Route path = "/" element = { < Navigate to = "/dashboard" replace /> } />
35- < Route path = "*" element = { < Navigate to = "/dashboard" replace /> } />
36- </ Routes >
37- </ Suspense >
38- < Tooltip id = "backup-tooltip" />
39- < Tooltip id = "internal-url-tooltip" />
40- < Tooltip id = "external-url-tooltip" />
41- < Toaster
42- position = "top-right"
43- reverseOrder = { false }
44- gutter = { 12 }
45- toastOptions = { {
46- duration : 4000 ,
47- style : {
48- borderRadius : "0.5rem" ,
49- padding : "1rem 1.25rem" ,
50- fontSize : "0.95rem" ,
51- fontWeight : "500" ,
52- boxShadow :
53- "0 20px 25px -5px rgba(0, 0, 0, 0.15), 0 10px 10px -5px rgba(0, 0, 0, 0.08)" ,
54- minWidth : "320px" ,
55- maxWidth : "420px" ,
56- } ,
57- success : {
24+ < SoundProvider >
25+ < BrowserRouter >
26+ < Suspense fallback = { < LoadingSpinner /> } >
27+ < Routes >
28+ < Route path = "/login" element = { < Login /> } />
29+ < Route
30+ path = "/dashboard"
31+ element = {
32+ < PrivateRoute >
33+ < Dashboard />
34+ </ PrivateRoute >
35+ }
36+ />
37+ < Route path = "/" element = { < Navigate to = "/dashboard" replace /> } />
38+ < Route path = "*" element = { < Navigate to = "/dashboard" replace /> } />
39+ </ Routes >
40+ </ Suspense >
41+ < Tooltip id = "backup-tooltip" />
42+ < Tooltip id = "internal-url-tooltip" />
43+ < Tooltip id = "external-url-tooltip" />
44+ < Toaster
45+ position = "top-right"
46+ reverseOrder = { false }
47+ gutter = { 12 }
48+ toastOptions = { {
49+ duration : 4000 ,
5850 style : {
59- background : "linear-gradient(135deg, #10b981 0%, #059669 100%)" ,
60- color : "#ffffff" ,
51+ borderRadius : "0.5rem" ,
52+ padding : "1rem 1.25rem" ,
53+ fontSize : "0.95rem" ,
54+ fontWeight : "500" ,
55+ boxShadow :
56+ "0 20px 25px -5px rgba(0, 0, 0, 0.15), 0 10px 10px -5px rgba(0, 0, 0, 0.08)" ,
57+ minWidth : "320px" ,
58+ maxWidth : "420px" ,
6159 } ,
62- iconTheme : {
63- primary : "#ffffff" ,
64- secondary : "#10b981" ,
60+ success : {
61+ style : {
62+ background : "linear-gradient(135deg, #10b981 0%, #059669 100%)" ,
63+ color : "#ffffff" ,
64+ } ,
65+ iconTheme : {
66+ primary : "#ffffff" ,
67+ secondary : "#10b981" ,
68+ } ,
6569 } ,
66- } ,
67- error : {
68- style : {
69- background : "linear-gradient(135deg, #ef4444 0%, #dc2626 100%)" ,
70- color : "#ffffff" ,
71- } ,
72- iconTheme : {
73- primary : "#ffffff" ,
74- secondary : "#ef4444" ,
75- } ,
76- } ,
77- loading : {
78- style : {
79- background : "linear-gradient(135deg, #a855f7 0%, #9333ea 100%)" ,
80- color : "#ffffff" ,
70+ error : {
71+ style : {
72+ background : "linear-gradient(135deg, #ef4444 0%, #dc2626 100%)" ,
73+ color : "#ffffff" ,
74+ } ,
75+ iconTheme : {
76+ primary : "#ffffff" ,
77+ secondary : "#ef4444" ,
78+ } ,
8179 } ,
82- iconTheme : {
83- primary : "#ffffff" ,
84- secondary : "#a855f7" ,
80+ loading : {
81+ style : {
82+ background : "linear-gradient(135deg, #a855f7 0%, #9333ea 100%)" ,
83+ color : "#ffffff" ,
84+ } ,
85+ iconTheme : {
86+ primary : "#ffffff" ,
87+ secondary : "#a855f7" ,
88+ } ,
8589 } ,
86- } ,
87- } }
88- />
89- </ BrowserRouter >
90+ } }
91+ />
92+ < SoundToggle />
93+ </ BrowserRouter >
94+ </ SoundProvider >
9095 ) ;
9196} ;
9297
0 commit comments