1import NextHead from 'next/head'; 2import type { PropsWithChildren } from 'react'; 3 4type HeadProps = PropsWithChildren<{ title?: string; description?: string }>; 5 6const BASE_TITLE = 'Expo Documentation'; 7const BASE_DESCRIPTION = `Expo is an open-source platform for making universal native apps for Android, iOS, and the web with JavaScript and React.`; 8 9const Head = ({ title, description, children }: HeadProps) => ( 10 <NextHead> 11 <title>{title ? `${title} - ${BASE_TITLE}` : BASE_TITLE}</title> 12 <meta charSet="utf-8" /> 13 <meta httpEquiv="X-UA-Compatible" content="IE=edge" /> 14 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 15 <link rel="icon" type="image/png" href="/static/images/favicon.ico" sizes="32x32" /> 16 17 <meta name="description" content={description === '' ? BASE_DESCRIPTION : description} /> 18 <meta property="og:title" content={title} /> 19 <meta property="og:type" content="website" /> 20 <meta property="og:image" content="https://docs.expo.dev/static/images/og.png" /> 21 <meta property="og:image:url" content="https://docs.expo.dev/static/images/og.png" /> 22 <meta property="og:image:secure_url" content="https://docs.expo.dev/static/images/og.png" /> 23 <meta property="og:locale" content="en_US" /> 24 <meta property="og:site_name" content={BASE_TITLE} /> 25 <meta property="og:description" content={description === '' ? BASE_DESCRIPTION : description} /> 26 27 <meta name="twitter:site" content="@expo" /> 28 <meta name="twitter:card" content="summary" /> 29 <meta property="twitter:title" content={title} /> 30 <meta 31 name="twitter:description" 32 content={description === '' ? BASE_DESCRIPTION : description} 33 /> 34 <meta property="twitter:image" content="https://docs.expo.dev/static/images/twitter.png" /> 35 <meta name="google-site-verification" content="izrqNurn_EXfYbNIFgVIhEXkkZk9DleELH4UouM8s3k" /> 36 37 {children} 38 </NextHead> 39); 40 41export default Head; 42