import {
ChakraProvider,
Container,
cookieStorageManagerSSR,
Heading,
Link,
Text,
} from "@chakra-ui/react";
import { ClientStyleContext, ServerStyleContext } from "./context.js";
import fontStyle from "@fontsource/plus-jakarta-sans/index.css";
import Forbidden from "../components/Forbidden.js";
import globalStyles from "../index.css";
import {
isRouteErrorResponse,
Links,
LiveReload,
Meta,
Outlet,
Scripts,
useLoaderData,
useRouteError,
} from "@remix-run/react";
import { type ErrorResponse } from "@remix-run/router";
import { LinksFunction } from "@remix-run/cloudflare";
import MobileDetect from "mobile-detect";
import Login from "../components/Login.js";
import Navigation from "../components/Navigation.js";
import { type ReactNode, StrictMode, useContext, useEffect } from "react";
import theme from "../theme.js";
import { withEmotionCache } from "@emotion/react";
function isMobile(ua: string | null, secChIsMobile: string | null): string {
if (secChIsMobile && ["?0", "?1"].includes(secChIsMobile))
return secChIsMobile;
if (ua) return `?${Number(new MobileDetect(ua).mobile())}`;
return "?0";
}
export function ErrorBoundary() {
const error = useRouteError() as ErrorResponse;
const { ch, ua } = JSON.parse(error.data);
const mobile = isMobile(ua, ch);
if (!isRouteErrorResponse(error))
return getMarkup(
{ hide: true, mobile },
??? Something bad happened!
Details: {error}
location.reload()}>
Refresh
);
const { status } = error;
switch (status) {
case 303:
return "";
case 401:
return getMarkup({ hide: true, mobile }, );
case 403:
return getMarkup({ hide: true, mobile }, );
case 404:
return getMarkup(
{ hide: true, mobile },
404 There is nothing to find here.
history.go(-1)}>
Go back
);
default:
return getMarkup(
{ hide: true, mobile },
500 S̶̡͈̠̗̠͖͙̭o̶̶͕͚̥͍̪̤m̸̨͏͈͔̖͚̖̰̱͞e҉̵͖͚͇̀t̕͟͠͏͎̺̯̲̱̣̤̠̟͙̠̙̫̬ḩ̸̭͓̬͎̙̀į̞̮͉͖̰̥̹͚̫̙̪̗̜̳̕ͅn҉͔̯̪̗̝̝͖̲͇͍͎̲̲̤̖̫͈̪͡g̴̰̻̙̝͉̭͇̖̰̝̙͕̼͙͘͜ ̵̶̫̥̳̲̘̻̗͈͕̭̲͇̘̜̺̟̥̖̥b̴̙̭̹͕̞͠r̞͎̠̩͈̖̰̞̯̯͢͢͠ͅo̝̯̗̹̳͍̰͉͕̘̰̠̺̥̰͔̕ͅk̵̸̻̠͕̺̦̦͖̲̺̦̞̝̞͞͡e̶͏̤̼̼͔̘̰̰̭͈̀͞͡