import { AppProvider as PolarisAppProvider, AppProviderProps as PolarisAppProviderProps, } from '@shopify/polaris'; // This leads to some TS errors, but it does compile to something that works // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore import englishI18n from '@shopify/polaris/locales/en.json' with {type: 'json'}; import {useNavigate} from '@remix-run/react'; import {useEffect} from 'react'; import {APP_BRIDGE_URL} from '../../const'; import {RemixPolarisLink} from '../RemixPolarisLink'; /** * Props for the `AppProvider` component. * @publicDocs */ export interface AppProviderProps extends Omit< PolarisAppProviderProps, 'linkComponent' | 'i18n' > { /** * The API key for your Shopify app. This is the `Client ID` from the Partner Dashboard. * * When using the Shopify CLI, this is the `SHOPIFY_API_KEY` environment variable. If you're using the environment * variable, then you need to pass it from the loader to the component. */ apiKey: string; /** * Whether the app is loaded inside the Shopify Admin. Default is `true`. * * {@link https://shopify.dev/docs/apps/admin/embedded-app-home} */ isEmbeddedApp?: boolean; /** * The internationalization (i18n) configuration for your Polaris provider. * * {@link https://polaris.shopify.com/components/utilities/app-provider} */ i18n?: PolarisAppProviderProps['i18n']; /** * Used internally by Shopify. You don't need to set this. * @private */ __APP_BRIDGE_URL?: string; } /** * Sets up the Polaris `AppProvider` and injects the App Bridge script. * * This component extends the [`AppProvider`](https://polaris.shopify.com/components/utilities/app-provider) component * from Polaris, and accepts all of its props except for `linkComponent`, which is overridden to use the Remix `Link` * component. * * {@link https://polaris.shopify.com/components/utilities/app-provider} * {@link https://shopify.dev/tools/app-bridge} * * @example *