()
| 70 | }; |
| 71 | |
| 72 | function App() { |
| 73 | const [mode, setMode] = useAtom(modeAtom); |
| 74 | const [alert, setAlert] = useState(null); |
| 75 | const showAlert = (message, type) => { |
| 76 | setAlert({ msg: message, type: type }); |
| 77 | setTimeout(() => { |
| 78 | setAlert(null); |
| 79 | }, 1500); |
| 80 | }; |
| 81 | |
| 82 | const [progress, setProgress] = useState(0); |
| 83 | const [islogged, setloggedin] = useState(false); |
| 84 | |
| 85 | useEffect(() => { |
| 86 | const savedMode = localStorage.getItem("mode"); |
| 87 | if (savedMode) { |
| 88 | setMode(savedMode); |
| 89 | document.body.style.backgroundColor = |
| 90 | savedMode === "dark" ? "black" : "white"; |
| 91 | document |
| 92 | .querySelectorAll("*") |
| 93 | .forEach( |
| 94 | (element) => |
| 95 | (element.style.color = savedMode === "dark" ? "white" : "") |
| 96 | ); |
| 97 | } |
| 98 | }, [setMode]); |
| 99 | |
| 100 | useEffect(() => { |
| 101 | localStorage.setItem("mode", mode); |
| 102 | }, [mode]); |
| 103 | |
| 104 | const toggleMode = () => { |
| 105 | if (mode === "light") { |
| 106 | setMode("dark"); |
| 107 | document.body.style.backgroundColor = "black"; |
| 108 | document |
| 109 | .querySelectorAll("*") |
| 110 | .forEach((element) => (element.style.color = "white")); |
| 111 | } else { |
| 112 | setMode("light"); |
| 113 | document.body.style.backgroundColor = "white"; |
| 114 | document |
| 115 | .querySelectorAll("*") |
| 116 | .forEach((element) => (element.style.color = "")); |
| 117 | } |
| 118 | }; |
| 119 | |
| 120 | useEffect(() => { |
| 121 | AOS.init(); |
| 122 | }, []); |
| 123 | |
| 124 | return ( |
| 125 | <div className="h-full w-screen"> |
| 126 | <Cursor /> |
| 127 | <ProjectState> |
| 128 | <ProfileState> |
| 129 | <LoadingBar color="blue" progress={progress} onLoaderFinished={() => setProgress(0)} /> |
nothing calls this directly
no outgoing calls
no test coverage detected