diff --git a/packages/connect/src/components/SequenceConnectPreview/SequenceConnectPreview.tsx b/packages/connect/src/components/SequenceConnectPreview/SequenceConnectPreview.tsx new file mode 100644 index 000000000..58cda6ca1 --- /dev/null +++ b/packages/connect/src/components/SequenceConnectPreview/SequenceConnectPreview.tsx @@ -0,0 +1,42 @@ +import { QueryClient, QueryClientProvider } from '@tanstack/react-query' +import type { ReactNode } from 'react' +import { WagmiProvider, type State } from 'wagmi' + +import type { SequenceConnectConfig } from '../../config/createConfig.js' + +import { SequenceConnectPreviewProvider } from './SequenceConnectPreviewProvider.js' + +const defaultQueryClient = new QueryClient() + +interface SequenceConnectPreviewProps { + config: SequenceConnectConfig + queryClient?: QueryClient + initialState?: State | undefined + children: ReactNode +} + +/** + * @internal + * Preview version of SequenceConnect component. + * This component should only be used for testing purposes. + * It provides the same functionality as SequenceConnect but only for preview purposes. + */ +export const SequenceConnectPreview = (props: SequenceConnectPreviewProps) => { + const { config, queryClient, initialState, children } = props + const { connectConfig, wagmiConfig } = config + + return ( + + + + {children} + + + + ) +} diff --git a/packages/connect/src/components/SequenceConnectPreview/SequenceConnectPreviewProvider.tsx b/packages/connect/src/components/SequenceConnectPreview/SequenceConnectPreviewProvider.tsx new file mode 100644 index 000000000..7040ccf67 --- /dev/null +++ b/packages/connect/src/components/SequenceConnectPreview/SequenceConnectPreviewProvider.tsx @@ -0,0 +1,87 @@ +'use client' + +import { ThemeProvider, type Theme } from '@0xsequence/design-system' +import { GoogleOAuthProvider } from '@react-oauth/google' +import { useState, type ReactNode } from 'react' +import { useConfig } from 'wagmi' + +import { AnalyticsContextProvider } from '../../contexts/Analytics.js' +import { ConnectConfigContextProvider } from '../../contexts/ConnectConfig.js' +import { ThemeContextProvider } from '../../contexts/Theme.js' +import { WalletConfigContextProvider } from '../../contexts/WalletConfig.js' +import { useEmailConflict } from '../../hooks/useWaasEmailConflict.js' +import { type ConnectConfig, type DisplayedAsset, type ExtendedConnector, type ModalPosition } from '../../types.js' +import { Connect } from '../Connect/Connect.js' + +export type SequenceConnectProviderProps = { + children: ReactNode + config: ConnectConfig +} + +/** + * @internal + * Preview version of SequenceConnectProvider component. + * This component should only be used for testing purposes. + * It provides the same functionality as SequenceConnectProvider but only for preview purposes. + */ +export const SequenceConnectPreviewProvider = (props: SequenceConnectProviderProps) => { + const { config, children } = props + + const { + defaultTheme = 'dark', + position = 'center', + displayedAssets: displayedAssetsSetting = [], + readOnlyNetworks, + hideExternalConnectOptions = false, + hideConnectedWallets = false, + hideSocialConnectOptions = false + } = config + + const [theme, setTheme] = useState>(defaultTheme || 'dark') + const [modalPosition, setModalPosition] = useState(position) + const [displayedAssets, setDisplayedAssets] = useState(displayedAssetsSetting) + + const wagmiConfig = useConfig() + + const googleWaasConnector = wagmiConfig.connectors.find( + c => c.id === 'sequence-waas' && (c as ExtendedConnector)._wallet.id === 'google-waas' + ) as ExtendedConnector | undefined + const googleClientId: string = (googleWaasConnector as any)?.params?.googleClientId || '' + + const { emailConflictInfo } = useEmailConflict() + + return ( + + + {}, analytics: undefined }}> + + +
+ + {}} emailConflictInfo={emailConflictInfo} isInline {...props} /> + +
+ {children} +
+
+
+
+
+ ) +} diff --git a/packages/connect/src/components/SequenceConnectPreview/index.ts b/packages/connect/src/components/SequenceConnectPreview/index.ts new file mode 100644 index 000000000..2ad90116f --- /dev/null +++ b/packages/connect/src/components/SequenceConnectPreview/index.ts @@ -0,0 +1,2 @@ +export * from './SequenceConnectPreviewProvider.js' +export * from './SequenceConnectPreview.js' diff --git a/packages/connect/src/index.ts b/packages/connect/src/index.ts index 2c1b33c3d..66d8263f4 100644 --- a/packages/connect/src/index.ts +++ b/packages/connect/src/index.ts @@ -5,6 +5,10 @@ export { SequenceConnectInline } from './components/SequenceConnectInline/index. export { SequenceConnectProvider } from './components/SequenceConnectProvider/index.js' export { SequenceConnectInlineProvider } from './components/SequenceConnectInlineProvider/index.js' +// Preview +export { SequenceConnectPreview } from './components/SequenceConnectPreview/index.js' +export { SequenceConnectPreviewProvider } from './components/SequenceConnectPreview/index.js' + // Types export type { ConnectConfig,