Skip to content

Commit 1acb827

Browse files
authored
feat: added showExternalWallets and showLinkedWallets config flags (#416)
* feat: added showExternalWallets and showLinkedWallets config flags * rename property and hide divider + text * feat: added showSocialWallets flag * add showSocialWallets to tsdoc * change naming of properties
1 parent 9c33abd commit 1acb827

File tree

7 files changed

+96
-17
lines changed

7 files changed

+96
-17
lines changed

packages/connect/src/components/Connect/Connect.tsx

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import { useEmailAuth } from '../../hooks/useWaasEmailAuth'
1515
import { FormattedEmailConflictInfo } from '../../hooks/useWaasEmailConflict'
1616
import { useWaasLinkWallet } from '../../hooks/useWaasLinkWallet'
1717
import { useWallets } from '../../hooks/useWallets'
18+
import { useWalletSettings } from '../../hooks/useWalletSettings'
1819
import { ExtendedConnector, ConnectConfig, LogoProps } from '../../types'
1920
import { isEmailValid } from '../../utils/helpers'
2021
import { AppleWaasConnectButton, ConnectButton, GoogleWaasConnectButton, ShowAllWalletsButton } from '../ConnectButton'
@@ -39,6 +40,7 @@ export const Connect = (props: ConnectProps) => {
3940
useScript(appleAuthHelpers.APPLE_SCRIPT_SRC)
4041

4142
const { analytics } = useAnalyticsContext()
43+
const { hideExternalConnectOptions, hideConnectedWallets, hideSocialConnectOptions } = useWalletSettings()
4244

4345
const { onClose, emailConflictInfo, config = {} as ConnectConfig, isPreview = false } = props
4446
const { signIn = {} } = config
@@ -380,7 +382,7 @@ export const Connect = (props: ConnectProps) => {
380382
</div>
381383
) : (
382384
<>
383-
{wallets.length > 0 && !showEmailWaasPinInput && (
385+
{!hideConnectedWallets && wallets.length > 0 && !showEmailWaasPinInput && (
384386
<>
385387
<ConnectedWallets
386388
wallets={wallets}
@@ -390,12 +392,16 @@ export const Connect = (props: ConnectProps) => {
390392
/>
391393

392394
<>
393-
<Divider className="text-background-raised w-full" />
394-
<div className="flex justify-center">
395-
<Text variant="small" color="muted">
396-
{!hasConnectedSocialOrSequenceUniversal ? 'Connect with a social account' : 'Connect another wallet'}
397-
</Text>
398-
</div>
395+
{!hideExternalConnectOptions && (
396+
<>
397+
<Divider className="text-background-raised w-full" />
398+
<div className="flex justify-center">
399+
<Text variant="small" color="muted">
400+
{!hasConnectedSocialOrSequenceUniversal ? 'Connect with a social account' : 'Connect another wallet'}
401+
</Text>
402+
</div>
403+
</>
404+
)}
399405
</>
400406
</>
401407
)}
@@ -415,7 +421,7 @@ export const Connect = (props: ConnectProps) => {
415421

416422
<div className="flex mt-6 gap-6 flex-col">
417423
<>
418-
{showSocialConnectorSection && (
424+
{!hideSocialConnectOptions && showSocialConnectorSection && (
419425
<div className={`flex gap-2 justify-center items-center ${descriptiveSocials ? 'flex-col' : 'flex-row'}`}>
420426
{socialAuthConnectors.slice(0, socialConnectorsPerRow).map(connector => {
421427
return (
@@ -450,7 +456,7 @@ export const Connect = (props: ConnectProps) => {
450456
)}
451457
</div>
452458
)}
453-
{showSocialConnectorSection && showEmailInputSection && (
459+
{!hideSocialConnectOptions && showSocialConnectorSection && showEmailInputSection && (
454460
<div className="flex gap-4 flex-row justify-center items-center">
455461
<Divider className="mx-0 my-0 text-background-secondary grow" />
456462
<Text className="leading-4 h-4 text-sm" variant="normal" fontWeight="medium" color="muted">
@@ -486,7 +492,7 @@ export const Connect = (props: ConnectProps) => {
486492
</div>
487493
</>
488494
)}
489-
{walletConnectors.length > 0 && (
495+
{!hideExternalConnectOptions && walletConnectors.length > 0 && (
490496
<>
491497
<div
492498
className={clsx(

packages/connect/src/components/SequenceConnectPreviewProvider/SequenceConnectPreviewProvider.tsx

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,10 @@ export const SequenceConnectPreviewProvider = (props: SequenceConnectProviderPro
3232
displayedAssets: displayedAssetsSetting = [],
3333
readOnlyNetworks,
3434
ethAuth = {} as EthAuthSettings,
35-
disableAnalytics = false
35+
disableAnalytics = false,
36+
hideExternalConnectOptions = false,
37+
hideConnectedWallets = false,
38+
hideSocialConnectOptions = false
3639
} = config
3740

3841
const defaultAppName = signIn.projectName || 'app'
@@ -122,7 +125,16 @@ export const SequenceConnectPreviewProvider = (props: SequenceConnectProviderPro
122125
<ConnectModalContextProvider
123126
value={{ isConnectModalOpen: openConnectModal, setOpenConnectModal, openConnectModalState: openConnectModal }}
124127
>
125-
<WalletConfigContextProvider value={{ setDisplayedAssets, displayedAssets, readOnlyNetworks }}>
128+
<WalletConfigContextProvider
129+
value={{
130+
setDisplayedAssets,
131+
displayedAssets,
132+
readOnlyNetworks,
133+
hideExternalConnectOptions,
134+
hideConnectedWallets,
135+
hideSocialConnectOptions
136+
}}
137+
>
126138
<AnalyticsContextProvider value={{ setAnalytics, analytics }}>
127139
<div id="kit-provider">
128140
<ThemeProvider root="#kit-provider" scope="kit" theme={theme}>

packages/connect/src/components/SequenceConnectProvider/SequenceConnectProvider.tsx

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,10 @@ export const SequenceConnectProvider = (props: SequenceConnectProviderProps) =>
4545
displayedAssets: displayedAssetsSetting = [],
4646
readOnlyNetworks,
4747
ethAuth = {} as EthAuthSettings,
48-
disableAnalytics = false
48+
disableAnalytics = false,
49+
hideExternalConnectOptions = false,
50+
hideConnectedWallets = false,
51+
hideSocialConnectOptions = false
4952
} = config
5053

5154
const defaultAppName = signIn.projectName || 'app'
@@ -168,7 +171,16 @@ export const SequenceConnectProvider = (props: SequenceConnectProviderProps) =>
168171
<ConnectModalContextProvider
169172
value={{ isConnectModalOpen: openConnectModal, setOpenConnectModal, openConnectModalState: openConnectModal }}
170173
>
171-
<WalletConfigContextProvider value={{ setDisplayedAssets, displayedAssets, readOnlyNetworks }}>
174+
<WalletConfigContextProvider
175+
value={{
176+
setDisplayedAssets,
177+
displayedAssets,
178+
readOnlyNetworks,
179+
hideExternalConnectOptions,
180+
hideConnectedWallets,
181+
hideSocialConnectOptions
182+
}}
183+
>
172184
<AnalyticsContextProvider value={{ setAnalytics, analytics }}>
173185
<ShadowRoot theme={theme}>
174186
<AnimatePresence>

packages/connect/src/contexts/WalletConfig.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ type WalletConfigContext = {
88
setDisplayedAssets: React.Dispatch<React.SetStateAction<DisplayedAsset[]>>
99
displayedAssets: DisplayedAsset[]
1010
readOnlyNetworks?: number[]
11+
hideExternalConnectOptions?: boolean
12+
hideConnectedWallets?: boolean
13+
hideSocialConnectOptions?: boolean
1114
}
1215

1316
const [useWalletConfigContext, WalletConfigContextProvider] = createGenericContext<WalletConfigContext>()

packages/connect/src/hooks/useWalletSettings.ts

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,22 @@ import { useWalletConfigContext } from '../contexts/WalletConfig'
66
* This hook provides access to wallet settings including:
77
* - Displayed assets configuration (which tokens/contracts to show)
88
* - Read-only networks (networks where transactions are disabled)
9+
* - See if external wallets are visible on the Connect Modal
10+
* - See if linked wallets are visible on the Connect Modal
911
*
1012
* @see {@link https://docs.sequence.xyz/sdk/web/hooks/useWalletSettings} for more detailed documentation.
1113
*
1214
* @returns An object containing:
1315
* - `displayedAssets` - Array of assets to display, each with a contract address and chain ID
1416
* - `readOnlyNetworks` - Array of network IDs where transactions are disabled
1517
* - `setDisplayedAssets` - Function to update the list of displayed assets
18+
* - `hideExternalConnectOptions` - Hide external wallets on the Connect Modal
19+
* - `hideConnectedWallets` - Hide connected wallets on the Connect Modal
20+
* - `hideSocialConnectOptions` - Hide social wallets on the Connect Modal
1621
*
1722
* @example
1823
* ```tsx
19-
* const { displayedAssets, readOnlyNetworks, setDisplayedAssets } = useWalletSettings()
24+
* const { displayedAssets, readOnlyNetworks, setDisplayedAssets, hideExternalConnectOptions, hideConnectedWallets, hideSocialConnectOptions } = useWalletSettings()
2025
*
2126
* // Check if a network is read-only
2227
* const isReadOnly = readOnlyNetworks?.includes(1) // true if Ethereum mainnet is read-only
@@ -29,11 +34,21 @@ import { useWalletConfigContext } from '../contexts/WalletConfig'
2934
* ```
3035
*/
3136
export const useWalletSettings = () => {
32-
const { setDisplayedAssets, displayedAssets, readOnlyNetworks } = useWalletConfigContext()
37+
const {
38+
setDisplayedAssets,
39+
displayedAssets,
40+
readOnlyNetworks,
41+
hideExternalConnectOptions,
42+
hideConnectedWallets,
43+
hideSocialConnectOptions
44+
} = useWalletConfigContext()
3345

3446
return {
3547
displayedAssets,
3648
readOnlyNetworks,
37-
setDisplayedAssets
49+
setDisplayedAssets,
50+
hideExternalConnectOptions,
51+
hideConnectedWallets,
52+
hideSocialConnectOptions
3853
}
3954
}

packages/connect/src/styles.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,9 @@ export const styles = String.raw`
304304
.my-4 {
305305
margin-block: calc(var(--spacing) * 4);
306306
}
307+
.mt-0 {
308+
margin-top: calc(var(--spacing) * 0);
309+
}
307310
.mt-0\.5 {
308311
margin-top: calc(var(--spacing) * 0.5);
309312
}
@@ -379,6 +382,9 @@ export const styles = String.raw`
379382
.inline-flex {
380383
display: inline-flex;
381384
}
385+
.table {
386+
display: table;
387+
}
382388
.aspect-square {
383389
aspect-ratio: 1 / 1;
384390
}
@@ -469,6 +475,9 @@ export const styles = String.raw`
469475
.min-h-full {
470476
min-height: 100%;
471477
}
478+
.w-1 {
479+
width: calc(var(--spacing) * 1);
480+
}
472481
.w-1\/2 {
473482
width: calc(1/2 * 100%);
474483
}
@@ -562,12 +571,21 @@ export const styles = String.raw`
562571
.min-w-full {
563572
min-width: 100%;
564573
}
574+
.flex-shrink {
575+
flex-shrink: 1;
576+
}
565577
.shrink-0 {
566578
flex-shrink: 0;
567579
}
580+
.flex-grow {
581+
flex-grow: 1;
582+
}
568583
.grow {
569584
flex-grow: 1;
570585
}
586+
.border-collapse {
587+
border-collapse: collapse;
588+
}
571589
.origin-top {
572590
transform-origin: top;
573591
}
@@ -939,6 +957,9 @@ export const styles = String.raw`
939957
.pt-0 {
940958
padding-top: calc(var(--spacing) * 0);
941959
}
960+
.pt-1 {
961+
padding-top: calc(var(--spacing) * 1);
962+
}
942963
.pt-1\.5 {
943964
padding-top: calc(var(--spacing) * 1.5);
944965
}
@@ -1228,6 +1249,9 @@ export const styles = String.raw`
12281249
.ring-border-normal {
12291250
--tw-ring-color: var(--seq-color-border-normal);
12301251
}
1252+
.ring-white {
1253+
--tw-ring-color: var(--color-white);
1254+
}
12311255
.ring-white\/10 {
12321256
--tw-ring-color: color-mix(in srgb, #fff 10%, transparent);
12331257
@supports (color: color-mix(in lab, red, red)) {
@@ -1266,6 +1290,10 @@ export const styles = String.raw`
12661290
-webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
12671291
backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
12681292
}
1293+
.backdrop-filter {
1294+
-webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
1295+
backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
1296+
}
12691297
.transition {
12701298
transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, visibility, content-visibility, overlay, pointer-events;
12711299
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));

packages/connect/src/types.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,9 @@ export interface ConnectConfig {
7979
readOnlyNetworks?: number[]
8080
ethAuth?: EthAuthSettings
8181
env?: Partial<SequenceHooksEnv>
82+
hideExternalConnectOptions?: boolean
83+
hideSocialConnectOptions?: boolean
84+
hideConnectedWallets?: boolean
8285
}
8386

8487
export type StorageItem = {

0 commit comments

Comments
 (0)