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