'use client'; import type { Metadata, Viewport } from 'next'; import NextError from 'next/error'; import { Geist, Geist_Mono } from 'next/font/google'; import '@/app/(frontend)/styles.css'; import { useEffect } from 'react'; import Footer from '@/components/layout/footer'; import Header from '@/components/layout/header'; import { ConvexClientProvider } from '@/components/providers'; import { env } from '@/env'; import { generateMetadata } from '@/lib/metadata'; import * as Sentry from '@sentry/nextjs'; import PlausibleProvider from 'next-plausible'; import { Button, ThemeProvider, Toaster } from '@gib/ui'; export const metadata: Metadata = generateMetadata(); export const viewport: Viewport = { themeColor: [ { media: '(prefers-color-scheme: light)', color: 'white' }, { media: '(prefers-color-scheme: dark)', color: 'black' }, ], }; const geistSans = Geist({ subsets: ['latin'], variable: '--font-geist-sans', }); const geistMono = Geist_Mono({ subsets: ['latin'], variable: '--font-geist-mono', }); interface GlobalErrorProps { error: Error & { digest?: string }; reset?: () => void; } const GlobalError = ({ error, reset = undefined }: GlobalErrorProps) => { useEffect(() => { Sentry.captureException(error); }, [error]); return (
{reset !== undefined && ( )}
); }; export default GlobalError;