1import { css, Global } from '@emotion/react'; 2import { ThemeProvider } from '@expo/styleguide'; 3import { MDXProvider } from '@mdx-js/react'; 4import * as Sentry from '@sentry/react'; 5import { BrowserTracing } from '@sentry/tracing'; 6import { AppProps } from 'next/app'; 7import { Inter, Fira_Code } from 'next/font/google'; 8 9import { preprocessSentryError } from '~/common/sentry-utilities'; 10import { useNProgress } from '~/common/use-nprogress'; 11import DocumentationElements from '~/components/page-higher-order/DocumentationElements'; 12import { AnalyticsProvider } from '~/providers/Analytics'; 13import { markdownComponents } from '~/ui/components/Markdown'; 14 15import 'global-styles/global.css'; 16import '@expo/styleguide/dist/expo-theme.css'; 17import 'tippy.js/dist/tippy.css'; 18 19const isDev = process.env.NODE_ENV === 'development'; 20 21export const regularFont = Inter({ 22 display: 'swap', 23 subsets: ['latin'], 24}); 25export const monospaceFont = Fira_Code({ 26 weight: ['400', '500'], 27 display: 'swap', 28 subsets: ['latin'], 29}); 30 31Sentry.init({ 32 dsn: 'https://[email protected]/1526800', 33 beforeSend: preprocessSentryError, 34 environment: isDev ? 'development' : 'production', 35 denyUrls: isDev 36 ? undefined 37 : [ 38 /https:\/\/docs-expo-dev\.translate\.goog/, 39 /https:\/\/translated\.turbopages\.org/, 40 /https:\/\/docs\.expo\.dev\/index\.html/, 41 ], 42 integrations: [new BrowserTracing()], 43 tracesSampleRate: 1.0, 44}); 45 46const rootMarkdownComponents = { 47 ...markdownComponents, 48 wrapper: DocumentationElements, 49}; 50 51export { reportWebVitals } from '~/providers/Analytics'; 52 53export default function App({ Component, pageProps }: AppProps) { 54 useNProgress(); 55 return ( 56 <AnalyticsProvider> 57 <ThemeProvider> 58 <MDXProvider components={rootMarkdownComponents}> 59 <Global 60 styles={css({ 61 'html, body, kbd, button, input, select': { 62 fontFamily: regularFont.style.fontFamily, 63 }, 64 'code, pre, table.diff': { 65 fontFamily: monospaceFont.style.fontFamily, 66 }, 67 })} 68 /> 69 <Component {...pageProps} /> 70 </MDXProvider> 71 </ThemeProvider> 72 </AnalyticsProvider> 73 ); 74} 75