|
// import type { MetaFunction } from "@vercel/remix"
|
|
import { Links, LiveReload, Meta, Outlet, Scripts, ScrollRestoration } from '@remix-run/react';
|
|
import { Analytics } from '@vercel/analytics/react';
|
|
|
|
import { Globals } from './globals/GlobalStyles';
|
|
|
|
import { Main } from './components/Layout/Main';
|
|
import { useIcons } from './hooks/useIcons';
|
|
import { ChakraWrapper } from './Providers/Chakra/ChakraWrapper';
|
|
import { ThingtimeProvider } from './Providers/ThingtimeProvider';
|
|
|
|
function Document({ children, title = 'Thingtime' }: { children: React.ReactNode; title?: string }) {
|
|
return (
|
|
<html lang="en">
|
|
<head>
|
|
<meta charSet="utf-8" />
|
|
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
|
<Meta />
|
|
<title>{title}</title>
|
|
<Links />
|
|
</head>
|
|
<body>
|
|
{children}
|
|
<Globals />
|
|
<ScrollRestoration />
|
|
<Scripts />
|
|
{/* <LiveReload /> */}
|
|
<Analytics />
|
|
</body>
|
|
</html>
|
|
);
|
|
}
|
|
|
|
export default function App() {
|
|
useIcons();
|
|
|
|
return (
|
|
<Document>
|
|
<ChakraWrapper>
|
|
<ThingtimeProvider>
|
|
<Main>
|
|
<Outlet />
|
|
</Main>
|
|
</ThingtimeProvider>
|
|
</ChakraWrapper>
|
|
</Document>
|
|
);
|
|
}
|
|
|
|
// limiter
|
|
const setThingtime = (glob) => {
|
|
try {
|
|
glob.meta = {
|
|
tmp: {},
|
|
subscribers: {},
|
|
state: {},
|
|
db: {},
|
|
stats: {
|
|
db: {},
|
|
limit: 9999,
|
|
maxDepth: 99,
|
|
count: 0
|
|
},
|
|
things: {}
|
|
};
|
|
} catch (err) {
|
|
// will error on server
|
|
}
|
|
};
|
|
|
|
try {
|
|
setThingtime(window);
|
|
} catch {
|
|
setThingtime(globalThis);
|
|
}
|