Spaces:
Configuration error
Configuration error
'use client'; | |
import type { AppProps } from 'next/app'; | |
import { ChakraProvider, Box, Portal, useDisclosure } from '@chakra-ui/react'; | |
import theme from '@/theme/theme'; | |
import routes from '@/routes'; | |
import Sidebar from '@/components/sidebar/Sidebar'; | |
import Footer from '@/components/footer/FooterAdmin'; | |
import Navbar from '@/components/navbar/NavbarAdmin'; | |
import { getActiveRoute, getActiveNavbar } from '@/utils/navigation'; | |
import { usePathname } from 'next/navigation'; | |
import { useEffect, useState } from 'react'; | |
import '@/styles/App.css'; | |
import '@/styles/Contact.css'; | |
import '@/styles/Plugins.css'; | |
import '@/styles/MiniCalendar.css'; | |
function App({ Component, pageProps }: AppProps<{}>) { | |
const pathname = usePathname(); | |
const [apiKey, setApiKey] = useState(''); | |
const { isOpen, onOpen, onClose } = useDisclosure(); | |
useEffect(() => { | |
const initialKey = localStorage.getItem('apiKey'); | |
if (initialKey?.includes('sk-') && apiKey !== initialKey) { | |
setApiKey(initialKey); | |
} | |
}, [apiKey]); | |
return ( | |
<ChakraProvider theme={theme}> | |
<Box> | |
<Sidebar setApiKey={setApiKey} routes={routes} /> | |
<Box | |
pt={{ base: '60px', md: '100px' }} | |
float="right" | |
minHeight="100vh" | |
height="100%" | |
overflow="auto" | |
position="relative" | |
maxHeight="100%" | |
w={{ base: '100%', xl: 'calc( 100% - 290px )' }} | |
maxWidth={{ base: '100%', xl: 'calc( 100% - 290px )' }} | |
transition="all 0.33s cubic-bezier(0.685, 0.0473, 0.346, 1)" | |
transitionDuration=".2s, .2s, .35s" | |
transitionProperty="top, bottom, width" | |
transitionTimingFunction="linear, linear, ease" | |
> | |
<Portal> | |
<Box> | |
<Navbar | |
setApiKey={setApiKey} | |
onOpen={onOpen} | |
logoText={'Horizon UI Dashboard PRO'} | |
brandText={getActiveRoute(routes, pathname)} | |
secondary={getActiveNavbar(routes, pathname)} | |
/> | |
</Box> | |
</Portal> | |
<Box | |
mx="auto" | |
p={{ base: '20px', md: '30px' }} | |
pe="20px" | |
minH="100vh" | |
pt="50px" | |
> | |
<Component apiKeyApp={apiKey} {...pageProps} /> | |
</Box> | |
<Box> | |
<Footer /> | |
</Box> | |
</Box> | |
</Box> | |
</ChakraProvider> | |
); | |
} | |
export default App; | |