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