@wallet-ui/react 1.1.0-canary-20250412015949 → 1.1.0-canary-20250415022403
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.browser.cjs +56 -46
- package/dist/index.browser.cjs.map +1 -1
- package/dist/index.browser.mjs +56 -46
- package/dist/index.browser.mjs.map +1 -1
- package/dist/index.css +326 -425
- package/dist/index.css.map +1 -1
- package/dist/index.native.mjs +56 -46
- package/dist/index.native.mjs.map +1 -1
- package/dist/index.node.cjs +56 -46
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.mjs +56 -46
- package/dist/index.node.mjs.map +1 -1
- package/dist/types/base-dropdown.d.ts +3 -1
- package/dist/types/base-dropdown.d.ts.map +1 -1
- package/dist/types/use-wallet-ui-dropdown.d.ts.map +1 -1
- package/dist/types/wallet-ui-icon.d.ts.map +1 -1
- package/dist/types/wallet-ui-list-button.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/index.node.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/base-button.tsx","../src/wallet-ui-context.tsx","../src/use-wallet-ui.tsx","../src/wallet-ui-account-context.tsx","../src/use-wallet-ui-account.tsx","../src/use-wallet-ui-wallet.tsx","../src/base-dropdown.tsx","../src/base-svg.tsx","../src/wallet-ui-icon-close.tsx","../src/base-modal.tsx","../src/use-base-dropdown.tsx","../src/use-base-modal.tsx","../src/wallet-ui-cluster-context.tsx","../src/use-wallet-ui-cluster.tsx","../src/wallet-ui-icon.tsx","../src/use-wallet-ui-dropdown.tsx","../src/wallet-ui-solana-client-context.tsx","../src/use-wallet-ui-solana-client.tsx","../src/use-wallet-ui-wallets.tsx","../src/wallet-ui-account-context-provider.tsx","../src/wallet-ui-cluster-context-provider.tsx","../src/wallet-ui-context-provider.tsx","../src/wallet-ui-solana-client-context-provider.tsx","../src/wallet-ui.tsx","../src/wallet-ui-button.tsx","../src/wallet-ui-cluster-dropdown.tsx","../src/wallet-ui-dropdown.tsx","../src/wallet-ui-icon-no-wallet.tsx","../src/wallet-ui-label.tsx","../src/wallet-ui-list-button.tsx","../src/wallet-ui-list.tsx","../src/wallet-ui-modal.tsx","../src/wallet-ui-modal-trigger.tsx"],"names":["React","createContext","useContext","connect","useConnect","useDisconnect","useEffect","BaseDropdownItemType","Portal","useMachine","menu","useId","normalizeProps","dialog","useMemo","useWallets","createStorageAccount","useStore","useState","getUiWalletAccountStorageKey","uiWalletAccountsAreSame","uiWalletAccountBelongsToUiWallet","createStorageCluster","clusterId","cluster","account","handleCopyText","createSolanaClient"],"mappings":"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","file":"index.node.cjs","sourcesContent":["import React from 'react';\n\nimport { WalletUiButton } from './types/wallet-ui-button';\nimport { WalletUiSize } from './types/wallet-ui-size';\n\nexport interface BaseButtonProps extends Omit<WalletUiButton, 'children'> {\n label: React.ReactNode;\n leftSection?: React.ReactNode;\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n rightSection?: React.ReactNode;\n size?: WalletUiSize;\n}\n\nexport function BaseButton({ className, label, leftSection, onClick, rightSection, size, ...props }: BaseButtonProps) {\n return (\n <button className={`wallet-ui-base-button ${size ?? 'md'} ${className ?? ''}`} onClick={onClick} {...props}>\n {leftSection ? <span className=\"wallet-ui-base-button-left-section\">{leftSection}</span> : null}\n {label}\n {rightSection ? <span className=\"wallet-ui-base-button-right-section\">{rightSection}</span> : null}\n </button>\n );\n}\n","import { UiWallet, UiWalletAccount } from '@wallet-standard/react';\nimport { SolanaClient } from 'gill';\nimport React, { ReactNode } from 'react';\n\nimport { WalletUiSize } from './types/wallet-ui-size';\n\nexport interface WalletUiContextProviderProps {\n children: ReactNode;\n size?: WalletUiSize;\n}\n\nexport interface WalletUiContextValue {\n account?: UiWalletAccount;\n accountKeys: string[];\n client: SolanaClient;\n connect: (wallet: UiWalletAccount) => void;\n connected: boolean;\n copy: () => void;\n disconnect: () => void;\n size: WalletUiSize;\n wallet?: UiWallet;\n wallets: UiWallet[];\n}\n\nexport interface WalletUiContextProviderProps {\n children: ReactNode;\n size?: WalletUiSize;\n}\n\nexport const WalletUiContext = React.createContext<WalletUiContextValue>({} as WalletUiContextValue);\n","import React from 'react';\n\nimport { WalletUiContext } from './wallet-ui-context';\n\nexport function useWalletUi() {\n return React.useContext(WalletUiContext);\n}\n","import { UiWallet, UiWalletAccount } from '@wallet-standard/react';\nimport React, { createContext } from 'react';\n\nexport interface WalletUiAccountInfo {\n account: UiWalletAccount;\n accountKeys: string[];\n wallet: UiWallet | undefined;\n}\n\nexport interface WalletUiAccountState extends Omit<WalletUiAccountInfo, 'account'> {\n account: UiWalletAccount | undefined;\n setAccount: React.Dispatch<React.SetStateAction<UiWalletAccount | undefined>>;\n}\n\nexport const WalletUiAccountContext = createContext<WalletUiAccountState>({} as WalletUiAccountState);\n","import { useContext } from 'react';\n\nimport { WalletUiAccountContext } from './wallet-ui-account-context';\n\nexport function useWalletUiAccount() {\n return useContext(WalletUiAccountContext);\n}\n","import { UiWallet, useConnect, useDisconnect } from '@wallet-standard/react';\nimport { useEffect } from 'react';\n\nimport { useWalletUi } from './use-wallet-ui';\nimport { useWalletUiAccount } from './use-wallet-ui-account';\n\nexport function useWalletUiWallet({ wallet }: { wallet: UiWallet }) {\n const { connect: connectAccount } = useWalletUi();\n const { setAccount } = useWalletUiAccount();\n const [isConnecting, connect] = useConnect(wallet);\n const [isDisconnecting, disconnect] = useDisconnect(wallet);\n useEffect(() => {}, [isDisconnecting]);\n\n return {\n connect: async () => {\n const connectedAccount = await connect();\n console.log('connectedAccount', connectedAccount);\n if (!connectedAccount.length) {\n console.log('connect, no accounts');\n return connectedAccount;\n }\n const first = connectedAccount[0];\n console.log('connect, setting first account => ', first);\n setAccount(first);\n connectAccount(first);\n return connectedAccount;\n },\n disconnect,\n isConnecting,\n isDisconnecting,\n };\n}\n","import { UiWallet } from '@wallet-standard/react';\nimport React, { HTMLAttributes } from 'react';\n\nimport { BaseButton, BaseButtonProps } from './base-button';\nimport { BaseDropdownControl } from './use-base-dropdown';\nimport { useWalletUiWallet } from './use-wallet-ui-wallet';\n\nexport enum BaseDropdownItemType {\n Item = 'Item',\n WalletConnect = 'WalletConnect',\n WalletCopy = 'WalletCopy',\n WalletDisconnect = 'WalletDisconnect',\n WalletNeeded = 'WalletNeeded',\n}\n\nexport interface BaseDropdownItem {\n closeMenu?: boolean;\n disabled?: boolean;\n handler: () => Promise<void>;\n label: string;\n leftSection?: React.ReactNode;\n rightSection?: React.ReactNode;\n type: BaseDropdownItemType;\n value: string;\n wallet?: UiWallet;\n}\n\nexport interface BaseDropdownProps {\n buttonProps: BaseButtonProps;\n dropdown: BaseDropdownControl;\n items: BaseDropdownItem[];\n showIndicator?: boolean;\n}\n\nexport function BaseDropdown({ buttonProps, dropdown, showIndicator, items }: BaseDropdownProps) {\n const api = dropdown.api;\n const trigger = (\n <BaseButton\n {...api.getTriggerProps()}\n className={`wallet-ui-base-dropdown-trigger`}\n data-part=\"trigger\"\n rightSection={\n showIndicator ? (\n <span className=\"wallet-actions\">\n <span {...api.getIndicatorProps()} className=\"indicator\">\n <BaseDropdownChevronDown size={12} />\n </span>\n </span>\n ) : null\n }\n {...buttonProps}\n />\n );\n\n return (\n <div className=\"wallet-ui-base-dropdown\">\n {trigger}\n <div {...api.getPositionerProps()} className=\"wallet-positioner\">\n <div {...api.getContentProps()} className=\"wallet-ui-base-dropdown-list\" data-part=\"content\">\n {items.map(item => {\n return (\n <BaseDropdownItem\n {...api.getItemProps({ value: item.value })}\n key={item.value}\n item={item}\n afterClick={() => {\n if (item.disabled) {\n return;\n }\n if (item.closeMenu !== false) {\n dropdown.close();\n }\n }}\n />\n );\n })}\n </div>\n </div>\n </div>\n );\n}\n\nfunction BaseDropdownItem({ afterClick, item }: BaseDropdownItemRenderProps) {\n if (!item.wallet) {\n return <BaseDropdownItemRender afterClick={afterClick} item={item} />;\n }\n switch (item.type) {\n case BaseDropdownItemType.Item:\n return <BaseDropdownItemRender afterClick={afterClick} item={item} />;\n case BaseDropdownItemType.WalletConnect:\n return <BaseDropdownItemWalletConnect afterClick={afterClick} item={item} wallet={item.wallet} />;\n case BaseDropdownItemType.WalletCopy:\n return <BaseDropdownItemRender afterClick={afterClick} item={item} />;\n case BaseDropdownItemType.WalletDisconnect:\n return <BaseDropdownItemWalletDisconnect afterClick={afterClick} item={item} wallet={item.wallet} />;\n }\n}\n\nfunction BaseDropdownItemWalletConnect({\n afterClick,\n item,\n wallet,\n}: BaseDropdownItemRenderProps & {\n wallet: UiWallet;\n}) {\n const { connect } = useWalletUiWallet({ wallet });\n return (\n <BaseDropdownItemRender\n afterClick={afterClick}\n item={{\n ...item,\n handler: async () => {\n //\n await connect();\n return await item.handler();\n },\n }}\n />\n );\n}\n\nfunction BaseDropdownItemWalletDisconnect({\n afterClick,\n item,\n wallet,\n}: BaseDropdownItemRenderProps & {\n wallet: UiWallet;\n}) {\n const { disconnect } = useWalletUiWallet({ wallet });\n return (\n <BaseDropdownItemRender\n afterClick={afterClick}\n item={{\n ...item,\n handler: async () => {\n //\n await disconnect();\n return await item.handler();\n },\n }}\n />\n );\n}\n\ninterface BaseDropdownItemRenderProps {\n afterClick: () => void;\n item: BaseDropdownItem;\n}\n\nfunction BaseDropdownItemRender({ afterClick, item }: BaseDropdownItemRenderProps) {\n function onClick() {\n if (item.disabled) {\n return;\n }\n void item.handler().then(() => {\n afterClick();\n });\n }\n\n return (\n <div className=\"wallet-ui-base-dropdown-item\" data-part=\"item\" onClick={onClick}>\n {item.leftSection ? (\n <span className=\"wallet-ui-base-dropdown-item-left-section\">{item.leftSection}</span>\n ) : null}\n {item.label}\n {item.rightSection ? (\n <span className=\"wallet-ui-base-dropdown-item-right-section\">{item.rightSection}</span>\n ) : null}\n </div>\n );\n}\n\nexport function BaseDropdownChevronDown(props: HTMLAttributes<SVGElement> & { size?: number }) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={props.size ?? 24}\n height={props.size ?? 24}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n );\n}\n","import React from 'react';\n\nimport { WalletUiSize } from './types/wallet-ui-size';\nimport { WalletUiSvg } from './types/wallet-ui-svg';\n\nexport interface BaseSvgProps extends WalletUiSvg {\n size: WalletUiSize;\n sizes: { [key: string]: number };\n viewBox: string;\n}\n\nexport function BaseSvg({ sizes = {}, ...props }: BaseSvgProps) {\n const size = props.size ? sizes[props.size] : 12;\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={size} height={size} {...props}>\n {props.children}\n </svg>\n );\n}\n","import React from 'react';\n\nimport { BaseSvg, BaseSvgProps } from './base-svg';\n\nexport function WalletUiIconClose({ size = 'md', ...props }: Omit<BaseSvgProps, 'sizes' | 'viewBox'>) {\n return (\n <BaseSvg\n size={size}\n sizes={{ lg: 16, md: 12, sm: 8 }}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n viewBox=\"0 0 14 14\"\n {...props}\n >\n <path d=\"M14 12.461 8.3 6.772l5.234-5.233L12.006 0 6.772 5.234 1.54 0 0 1.539l5.234 5.233L0 12.006l1.539 1.528L6.772 8.3l5.69 5.7L14 12.461z\"></path>\n </BaseSvg>\n );\n}\n","import { Portal } from '@zag-js/react';\nimport React from 'react';\n\nimport { BaseButton, BaseButtonProps } from './base-button';\nimport { WalletUiSize } from './types/wallet-ui-size';\nimport { BaseModalControl } from './use-base-modal';\nimport { WalletUiIconClose } from './wallet-ui-icon-close';\n\nexport interface BaseModalProps {\n buttonLabel?: React.ReactNode;\n buttonProps?: Partial<BaseButtonProps>;\n children: React.ReactNode;\n description?: React.ReactNode;\n modal: BaseModalControl;\n size?: WalletUiSize;\n title?: React.ReactNode;\n}\n\nexport function BaseModal({ modal, buttonLabel, buttonProps = {}, size = 'md', ...props }: BaseModalProps) {\n const api = modal.api;\n return (\n <>\n {buttonLabel ? (\n <BaseButton label={buttonLabel} size={size} {...buttonProps} {...api.getTriggerProps()} />\n ) : null}\n {api.open && (\n <Portal>\n <div {...api.getBackdropProps()} />\n <div {...api.getPositionerProps()}>\n <div {...api.getContentProps()} className={size}>\n <header>\n <button {...api.getCloseTriggerProps()}>\n <WalletUiIconClose size={size} />\n </button>\n </header>\n {props.description ? <p {...api.getDescriptionProps()}>{props.description}</p> : null}\n <main>{props.children}</main>\n </div>\n </div>\n </Portal>\n )}\n </>\n );\n}\n","import * as menu from '@zag-js/menu';\nimport { normalizeProps, useMachine } from '@zag-js/react';\nimport { useId } from 'react';\n\nexport type BaseDropdownApi = ReturnType<typeof menu.connect>;\n\nexport interface BaseDropdownControl {\n api: BaseDropdownApi;\n close: () => void;\n open: () => void;\n}\n\nexport function useBaseDropdown(): BaseDropdownControl {\n const service = useMachine(menu.machine, { id: useId() });\n const api = menu.connect(service, normalizeProps);\n\n return {\n api,\n close: () => service.send({ type: 'CLOSE' }),\n open: () => service.send({ type: 'OPEN' }),\n };\n}\n","import * as dialog from '@zag-js/dialog';\nimport { normalizeProps, useMachine } from '@zag-js/react';\nimport { useId } from 'react';\n\nexport type BaseModalApi = ReturnType<typeof dialog.connect>;\n\nexport interface BaseModalControl {\n api: BaseModalApi;\n close: () => void;\n open: () => void;\n}\n\nexport function useBaseModal(): BaseModalControl {\n const service = useMachine(dialog.machine, { id: useId(), modal: true });\n const api = dialog.connect(service, normalizeProps);\n\n return {\n api,\n close: () => service.send({ type: 'CLOSE' }),\n open: () => service.send({ type: 'OPEN' }),\n };\n}\n","import { SolanaCluster, SolanaClusterId, StorageCluster } from '@wallet-ui/core';\nimport { createContext, ReactNode } from 'react';\n\nexport interface WalletUiClusterContextProviderProps {\n clusters: SolanaCluster[];\n render: (props: WalletUiClusterContextValue) => ReactNode;\n storage?: StorageCluster;\n}\n\nexport interface WalletUiClusterContextValue {\n cluster: SolanaCluster;\n clusters: SolanaCluster[];\n\n setCluster(cluster: SolanaClusterId): void;\n}\n\nexport const WalletUiClusterContext = createContext<WalletUiClusterContextValue>({} as WalletUiClusterContextValue);\n","import { useContext } from 'react';\n\nimport { WalletUiClusterContext } from './wallet-ui-cluster-context';\n\nexport function useWalletUiCluster() {\n return useContext(WalletUiClusterContext);\n}\n","import { UiWallet } from '@wallet-standard/react';\nimport React from 'react';\n\nimport { WalletUiImg } from './types/wallet-ui-img';\nimport { WalletUiSize } from './types/wallet-ui-size';\n\nexport interface WalletUiIconProps extends WalletUiImg {\n size?: WalletUiSize;\n wallet?: Pick<UiWallet, 'icon' | 'name'>;\n}\n\nexport function WalletUiIcon({ className, size, wallet, ...props }: WalletUiIconProps) {\n if (!wallet) {\n return null;\n }\n\n return (\n <img\n src={wallet.icon}\n alt={wallet.name}\n className={`wallet-ui-list-icon ${size ?? 'md'} ${className ?? ''}`}\n {...props}\n />\n );\n}\n","import { UiWallet, UiWalletAccount } from '@wallet-standard/react';\nimport React, { useMemo } from 'react';\n\nimport { BaseButtonProps } from './base-button';\nimport { BaseDropdownItem, BaseDropdownItemType } from './base-dropdown';\nimport { WalletUiSize } from './types/wallet-ui-size';\nimport { BaseDropdownControl, useBaseDropdown } from './use-base-dropdown';\nimport { useWalletUi } from './use-wallet-ui';\nimport { WalletUiIcon } from './wallet-ui-icon';\n\nfunction getDropdownItemsWallets({\n wallets,\n connect,\n size,\n}: {\n connect: (wallet: UiWalletAccount) => void;\n size: WalletUiSize;\n wallets: UiWallet[];\n}): BaseDropdownItem[] {\n return wallets.length\n ? wallets.map(wallet => ({\n handler: async () => {\n // TODO: Add support for multiple accounts, properly handle no accounts\n const account = wallet.accounts.length > 0 ? wallet.accounts[0] : undefined;\n if (!account) {\n return;\n }\n connect(account);\n await Promise.resolve();\n },\n label: wallet.name,\n leftSection: <WalletUiIcon wallet={wallet} size={size} />,\n type: BaseDropdownItemType.WalletConnect,\n value: wallet.name,\n wallet,\n }))\n : [\n {\n handler: async () => {\n window.open('https://solana.com/solana-wallets', '_blank');\n await Promise.resolve();\n },\n label: \"You'll need a wallet on Solana to continue\",\n type: BaseDropdownItemType.WalletNeeded,\n value: 'no-wallets',\n },\n ];\n}\n\nexport function useWalletUiDropdown({ size = 'md' }: { size?: WalletUiSize } = {}): {\n buttonProps: BaseButtonProps;\n connected: boolean;\n dropdown: BaseDropdownControl;\n items: BaseDropdownItem[];\n} {\n const dropdown = useBaseDropdown();\n\n const { account, connect, copy, disconnect, connected, wallet, wallets } = useWalletUi();\n\n const itemsWallets = useMemo(() => {\n return getDropdownItemsWallets({ connect, size, wallets });\n }, [wallets, size, connect]);\n\n const itemsConnected: BaseDropdownItem[] = useMemo(\n () => [\n {\n handler: async () => {\n copy();\n void (await Promise.resolve());\n },\n label: 'Copy Address',\n type: BaseDropdownItemType.WalletCopy,\n value: 'copy',\n },\n {\n handler: async () => {\n disconnect();\n dropdown.close();\n await Promise.resolve();\n },\n label: 'Disconnect',\n type: BaseDropdownItemType.WalletDisconnect,\n value: 'disconnect',\n },\n ...itemsWallets,\n ],\n [connect, copy, disconnect, dropdown, size, wallets],\n );\n const items = useMemo(() => {\n return connected ? itemsConnected : itemsWallets;\n }, [connected, itemsConnected, itemsWallets]);\n\n const buttonProps: BaseButtonProps = useMemo(() => {\n return {\n label: connected ? ((account ? ellipsify(account.address) : wallet?.name) ?? 'Connected') : 'Select Wallet',\n leftSection: connected ? <WalletUiIcon size={size} wallet={wallet} /> : undefined,\n };\n }, [account, connected, size, wallet]);\n\n return {\n buttonProps,\n connected,\n dropdown,\n items,\n };\n}\n\nexport function ellipsify(str = '', len = 4, delimiter = '..') {\n const strLen = str.length;\n const limit = len * 2 + delimiter.length;\n\n return strLen >= limit ? str.substring(0, len) + delimiter + str.substring(strLen - len, strLen) : str;\n}\n","import { SolanaClient, SolanaClientUrlOrMoniker } from 'gill';\nimport { createContext, ReactNode } from 'react';\n\nexport interface WalletUiSolanaClientContextProviderProps {\n children: ReactNode;\n urlOrMoniker: SolanaClientUrlOrMoniker;\n}\n\nexport const WalletUiSolanaClientContext = createContext<SolanaClient>({} as SolanaClient);\n","import { useContext } from 'react';\n\nimport { WalletUiSolanaClientContext } from './wallet-ui-solana-client-context';\n\nexport function useWalletUiSolanaClient() {\n return useContext(WalletUiSolanaClientContext);\n}\n","import { useWallets } from '@wallet-standard/react';\nimport { useMemo } from 'react';\n\nexport function useWalletUiWallets() {\n const readonlyWallets = useWallets();\n return useMemo(\n () =>\n readonlyWallets\n .filter(wallet => wallet.chains.some(i => i.startsWith('solana:')))\n .sort((a, b) => a.name.localeCompare(b.name)),\n [readonlyWallets],\n );\n}\n","import { useStore } from '@nanostores/react';\nimport {\n getUiWalletAccountStorageKey,\n UiWallet,\n UiWalletAccount,\n uiWalletAccountBelongsToUiWallet,\n uiWalletAccountsAreSame,\n useWallets,\n} from '@wallet-standard/react';\nimport { createStorageAccount, StorageAccount } from '@wallet-ui/core';\nimport React, { useEffect, useMemo, useState } from 'react';\n\nimport { useWalletUiCluster } from './use-wallet-ui-cluster';\nimport { WalletUiAccountContext } from './wallet-ui-account-context';\n\nlet wasSetterInvoked = false;\n\nfunction getSavedWalletAccount(\n wallets: readonly UiWallet[],\n savedWalletNameAndAddress?: string,\n): UiWalletAccount | undefined {\n if (wasSetterInvoked) {\n // After the user makes an explicit choice of wallet, stop trying to auto-select the\n // saved wallet, if and when it appears.\n return;\n }\n if (!savedWalletNameAndAddress || typeof savedWalletNameAndAddress !== 'string') {\n return;\n }\n const [savedWalletName, savedAccountAddress] = savedWalletNameAndAddress.split(':');\n if (!savedWalletName || !savedAccountAddress) {\n return;\n }\n const wallet = wallets.find(w => w.name === savedWalletName);\n if (!wallet) {\n return;\n }\n return wallet.accounts.find(a => a.address === savedAccountAddress);\n}\n\n/**\n * Saves the selected wallet account's storage key to the browser's local storage. In future\n * sessions it will try to return that same wallet account, or at least one from the same brand of\n * wallet if the wallet from which it came is still in the Wallet Standard registry.\n */\nexport function WalletUiAccountContextProvider({\n children,\n storage = createStorageAccount(),\n}: {\n children: React.ReactNode;\n storage?: StorageAccount;\n}) {\n const { cluster } = useWalletUiCluster();\n const wallets = useWallets();\n const accountId = useStore(storage.value);\n const [account, setAccountInternal] = useState<UiWalletAccount | undefined>(() =>\n getSavedWalletAccount(wallets, accountId),\n );\n\n function setAccount(setStateAction: React.SetStateAction<UiWalletAccount | undefined>) {\n setAccountInternal(prevAccount => {\n wasSetterInvoked = true;\n const nextWalletAccount =\n typeof setStateAction === 'function' ? setStateAction(prevAccount) : setStateAction;\n const accountKey = nextWalletAccount ? getUiWalletAccountStorageKey(nextWalletAccount) : undefined;\n storage.set(accountKey ? accountKey : undefined);\n return nextWalletAccount;\n });\n }\n\n useEffect(() => {\n const savedWalletAccount = getSavedWalletAccount(wallets, accountId);\n if (savedWalletAccount) {\n setAccountInternal(savedWalletAccount);\n }\n }, [accountId, wallets]);\n const walletAccount = useMemo(() => {\n if (account) {\n for (const uiWallet of wallets) {\n for (const uiWalletAccount of uiWallet.accounts) {\n if (uiWalletAccountsAreSame(account, uiWalletAccount)) {\n return uiWalletAccount;\n }\n }\n if (uiWalletAccountBelongsToUiWallet(account, uiWallet) && uiWallet.accounts[0]) {\n // If the selected account belongs to this connected wallet, at least, then\n // select one of its accounts.\n return uiWallet.accounts[0];\n }\n }\n }\n }, [account, wallets]);\n useEffect(() => {\n // If there is a selected wallet account but the wallet to which it belongs has since\n // disconnected, clear the selected wallet.\n if (account && !walletAccount) {\n setAccountInternal(undefined);\n }\n }, [account, walletAccount]);\n\n const wallet = useMemo(() => {\n if (!walletAccount) {\n return undefined;\n }\n for (const uiWallet of wallets) {\n for (const uiWalletAccount of uiWallet.accounts) {\n if (uiWalletAccountsAreSame(walletAccount, uiWalletAccount)) {\n return uiWallet;\n }\n }\n if (uiWalletAccountBelongsToUiWallet(walletAccount, uiWallet) && uiWallet.accounts[0]) {\n // If the selected account belongs to this connected wallet, at least, then\n // select one of its accounts.\n return uiWallet;\n }\n }\n }, [walletAccount, wallets]);\n\n // Expose the error boundary reset keys to the context\n const accountKeys = useMemo(() => {\n if (!account) {\n return [];\n }\n return [cluster.id, getUiWalletAccountStorageKey(account)].filter(Boolean);\n }, [account, cluster.id]);\n return (\n <WalletUiAccountContext.Provider\n value={useMemo(\n () => ({\n account: walletAccount,\n accountKeys,\n setAccount,\n wallet,\n }),\n [walletAccount, wallet, accountKeys],\n )}\n >\n {children}\n </WalletUiAccountContext.Provider>\n );\n}\n","import { useStore } from '@nanostores/react';\nimport { createStorageCluster, SolanaClusterId } from '@wallet-ui/core';\nimport React from 'react';\n\nimport {\n WalletUiClusterContext,\n WalletUiClusterContextProviderProps,\n WalletUiClusterContextValue,\n} from './wallet-ui-cluster-context';\n\nexport function WalletUiClusterContextProvider({\n clusters,\n render,\n storage = createStorageCluster(),\n}: WalletUiClusterContextProviderProps) {\n const clusterId = useStore(storage.value);\n if (!clusterId) {\n throw new Error('Error reading cluster id from storage');\n }\n if (!clusters.length) {\n throw new Error('No clusters provided');\n }\n\n const cluster = clusters.find(c => c.id === clusterId);\n if (!cluster) {\n throw new Error(`Cluster ${clusterId.toString()} not found`);\n }\n\n const value: WalletUiClusterContextValue = {\n cluster,\n clusters,\n setCluster: (clusterId: SolanaClusterId) => {\n const cluster = clusters.find(c => c.id === clusterId);\n if (!cluster) {\n throw new Error(`Cluster ${clusterId} not found`);\n }\n storage.set(clusterId);\n },\n };\n\n return <WalletUiClusterContext.Provider value={value}>{render(value)}</WalletUiClusterContext.Provider>;\n}\n","import { UiWalletAccount } from '@wallet-standard/react';\nimport { handleCopyText } from '@wallet-ui/core';\nimport React from 'react';\n\nimport { useWalletUiAccount } from './use-wallet-ui-account';\nimport { useWalletUiSolanaClient } from './use-wallet-ui-solana-client';\nimport { useWalletUiWallets } from './use-wallet-ui-wallets';\nimport { WalletUiContext, WalletUiContextProviderProps, WalletUiContextValue } from './wallet-ui-context';\n\nexport function WalletUiContextProvider({ children, size = 'md' }: WalletUiContextProviderProps) {\n const { account, accountKeys, setAccount, wallet } = useWalletUiAccount();\n const wallets = useWalletUiWallets();\n const client = useWalletUiSolanaClient();\n const connected = Boolean(wallet && wallet?.accounts.length > 0);\n\n function connect(account: UiWalletAccount) {\n setAccount(account);\n }\n\n function disconnect() {\n setAccount(undefined);\n }\n\n function copy() {\n if (!account) {\n return;\n }\n handleCopyText(account.address);\n }\n\n const value: WalletUiContextValue = {\n account,\n accountKeys,\n client,\n connect,\n connected,\n copy,\n disconnect,\n size,\n wallet,\n wallets,\n };\n\n return <WalletUiContext.Provider value={value}>{children}</WalletUiContext.Provider>;\n}\n","import { createSolanaClient, SolanaClient } from 'gill';\nimport React, { useMemo } from 'react';\n\nimport {\n WalletUiSolanaClientContext,\n WalletUiSolanaClientContextProviderProps,\n} from './wallet-ui-solana-client-context';\n\nexport function WalletUiSolanaClientContextProvider({\n children,\n urlOrMoniker,\n}: WalletUiSolanaClientContextProviderProps) {\n return (\n <WalletUiSolanaClientContext.Provider\n value={useMemo(() => createSolanaClient({ urlOrMoniker }) as SolanaClient, [urlOrMoniker])}\n >\n {children}\n </WalletUiSolanaClientContext.Provider>\n );\n}\n","import { SolanaCluster, StorageAccount, StorageCluster } from '@wallet-ui/core';\nimport React from 'react';\n\nimport { WalletUiAccountContextProvider } from './wallet-ui-account-context-provider';\nimport { WalletUiClusterContextProvider } from './wallet-ui-cluster-context-provider';\nimport { WalletUiContextProviderProps } from './wallet-ui-context';\nimport { WalletUiContextProvider } from './wallet-ui-context-provider';\nimport { WalletUiSolanaClientContextProvider } from './wallet-ui-solana-client-context-provider';\n\nexport interface WalletUiConfig extends Omit<WalletUiContextProviderProps, 'children'> {\n accountStorage?: StorageAccount;\n clusterStorage?: StorageCluster;\n clusters: SolanaCluster[];\n}\n\nexport function createWalletUiConfig(props: WalletUiConfig): WalletUiConfig {\n return { ...props };\n}\n\nexport interface WalletUiProps {\n children: React.ReactNode;\n config: WalletUiConfig;\n}\n\nexport function WalletUi({ children, config: { accountStorage, clusters, clusterStorage, ...config } }: WalletUiProps) {\n return (\n <React.Fragment>\n <WalletUiClusterContextProvider\n clusters={clusters}\n storage={clusterStorage}\n render={({ cluster }) => {\n return (\n <WalletUiSolanaClientContextProvider urlOrMoniker={cluster.urlOrMoniker}>\n <WalletUiAccountContextProvider storage={accountStorage}>\n <WalletUiContextProvider {...config}>{children}</WalletUiContextProvider>\n </WalletUiAccountContextProvider>\n </WalletUiSolanaClientContextProvider>\n );\n }}\n />\n </React.Fragment>\n );\n}\n","import React from 'react';\n\nimport { BaseButton, BaseButtonProps } from './base-button';\nimport { WalletUiSize } from './types/wallet-ui-size';\n\nexport interface WalletUiButtonProps extends Omit<BaseButtonProps, 'label'> {\n size?: WalletUiSize;\n}\n\nexport function WalletUiButton({ ...props }: WalletUiButtonProps) {\n return <BaseButton {...props} label={'CLICK'} />;\n}\n","import React from 'react';\n\nimport { BaseDropdown, BaseDropdownItemType, BaseDropdownProps } from './base-dropdown';\nimport { WalletUiSize } from './types/wallet-ui-size';\nimport { useBaseDropdown } from './use-base-dropdown';\nimport { useWalletUiCluster } from './use-wallet-ui-cluster';\n\nexport interface WalletUiClusterDropdownProps\n extends Omit<BaseDropdownProps, 'buttonProps' | 'dropdown' | 'items' | 'label'> {\n buttonProps?: Partial<BaseDropdownProps['buttonProps']>;\n size?: WalletUiSize;\n}\n\nexport function WalletUiClusterDropdown({ buttonProps, size = 'md', ...props }: WalletUiClusterDropdownProps) {\n const dropdown = useBaseDropdown();\n const { cluster, clusters, setCluster } = useWalletUiCluster();\n return (\n <BaseDropdown\n buttonProps={{ ...buttonProps, label: cluster.label, size: size }}\n items={clusters.map(cluster => ({\n handler: async () => {\n setCluster(cluster.id);\n await Promise.resolve();\n },\n label: cluster.label,\n type: BaseDropdownItemType.Item,\n value: cluster.id,\n }))}\n dropdown={dropdown}\n {...props}\n />\n );\n}\n","import React from 'react';\n\nimport { BaseDropdown } from './base-dropdown';\nimport { WalletUiSize } from './types/wallet-ui-size';\nimport { useWalletUiDropdown } from './use-wallet-ui-dropdown';\n\nexport interface WalletUiDropdownProps {\n label?: string;\n size?: WalletUiSize;\n}\n\nexport function WalletUiDropdown({ size = 'md', ...props }: WalletUiDropdownProps) {\n const { buttonProps, items, dropdown } = useWalletUiDropdown({ size });\n return <BaseDropdown {...props} buttonProps={{ ...buttonProps, size }} items={items} dropdown={dropdown} />;\n}\n","import React from 'react';\n\nimport { BaseSvg, BaseSvgProps } from './base-svg';\n\nexport function WalletUiIconNoWallet({ size, ...props }: Omit<BaseSvgProps, 'sizes' | 'viewBox'>) {\n return (\n <BaseSvg size={size} sizes={{ lg: 125, md: 100, sm: 75 }} fill=\"none\" viewBox=\"0 0 97 96\" {...props}>\n <circle cx=\"48.5\" cy=\"48\" r=\"48\" fill=\"url(#paint0_linear_880_5115)\" fillOpacity=\"0.1\"></circle>\n <circle\n cx=\"48.5\"\n cy=\"48\"\n r=\"47\"\n stroke=\"url(#paint1_linear_880_5115)\"\n strokeOpacity=\"0.4\"\n strokeWidth=\"2\"\n ></circle>\n <g clipPath=\"url(#clip0_880_5115)\">\n <path\n d=\"M65.5769 28.1523H31.4231C27.6057 28.1523 24.5 31.258 24.5 35.0754V60.9215C24.5 64.7389 27.6057 67.8446 31.4231 67.8446H65.5769C69.3943 67.8446 72.5 64.7389 72.5 60.9215V35.0754C72.5 31.258 69.3943 28.1523 65.5769 28.1523ZM69.7308 52.1523H59.5769C57.2865 52.1523 55.4231 50.289 55.4231 47.9985C55.4231 45.708 57.2864 43.8446 59.5769 43.8446H69.7308V52.1523ZM69.7308 41.0754H59.5769C55.7595 41.0754 52.6539 44.1811 52.6539 47.9985C52.6539 51.8159 55.7595 54.9215 59.5769 54.9215H69.7308V60.9215C69.7308 63.2119 67.8674 65.0754 65.5769 65.0754H31.4231C29.1327 65.0754 27.2692 63.212 27.2692 60.9215V35.0754C27.2692 32.785 29.1326 30.9215 31.4231 30.9215H65.5769C67.8673 30.9215 69.7308 32.7849 69.7308 35.0754V41.0754Z\"\n fill=\"url(#paint2_linear_880_5115)\"\n ></path>\n <path\n d=\"M61.4231 46.6172H59.577C58.8123 46.6172 58.1924 47.2371 58.1924 48.0018C58.1924 48.7665 58.8123 49.3863 59.577 49.3863H61.4231C62.1878 49.3863 62.8077 48.7664 62.8077 48.0018C62.8077 47.2371 62.1878 46.6172 61.4231 46.6172Z\"\n fill=\"url(#paint3_linear_880_5115)\"\n ></path>\n </g>\n <defs>\n <linearGradient\n id=\"paint0_linear_880_5115\"\n x1=\"3.41664\"\n y1=\"98.0933\"\n x2=\"103.05\"\n y2=\"8.42498\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#9945FF\"></stop>\n <stop offset=\"0.14\" stopColor=\"#8A53F4\"></stop>\n <stop offset=\"0.42\" stopColor=\"#6377D6\"></stop>\n <stop offset=\"0.79\" stopColor=\"#24B0A7\"></stop>\n <stop offset=\"0.99\" stopColor=\"#00D18C\"></stop>\n <stop offset=\"1\" stopColor=\"#00D18C\"></stop>\n </linearGradient>\n <linearGradient\n id=\"paint1_linear_880_5115\"\n x1=\"3.41664\"\n y1=\"98.0933\"\n x2=\"103.05\"\n y2=\"8.42498\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#9945FF\"></stop>\n <stop offset=\"0.14\" stopColor=\"#8A53F4\"></stop>\n <stop offset=\"0.42\" stopColor=\"#6377D6\"></stop>\n <stop offset=\"0.79\" stopColor=\"#24B0A7\"></stop>\n <stop offset=\"0.99\" stopColor=\"#00D18C\"></stop>\n <stop offset=\"1\" stopColor=\"#00D18C\"></stop>\n </linearGradient>\n <linearGradient\n id=\"paint2_linear_880_5115\"\n x1=\"25.9583\"\n y1=\"68.7101\"\n x2=\"67.2337\"\n y2=\"23.7879\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#9945FF\"></stop>\n <stop offset=\"0.14\" stopColor=\"#8A53F4\"></stop>\n <stop offset=\"0.42\" stopColor=\"#6377D6\"></stop>\n <stop offset=\"0.79\" stopColor=\"#24B0A7\"></stop>\n <stop offset=\"0.99\" stopColor=\"#00D18C\"></stop>\n <stop offset=\"1\" stopColor=\"#00D18C\"></stop>\n </linearGradient>\n <linearGradient\n id=\"paint3_linear_880_5115\"\n x1=\"58.3326\"\n y1=\"49.4467\"\n x2=\"61.0002\"\n y2=\"45.4453\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#9945FF\"></stop>\n <stop offset=\"0.14\" stopColor=\"#8A53F4\"></stop>\n <stop offset=\"0.42\" stopColor=\"#6377D6\"></stop>\n <stop offset=\"0.79\" stopColor=\"#24B0A7\"></stop>\n <stop offset=\"0.99\" stopColor=\"#00D18C\"></stop>\n <stop offset=\"1\" stopColor=\"#00D18C\"></stop>\n </linearGradient>\n <clipPath id=\"clip0_880_5115\">\n <rect width=\"48\" height=\"48\" fill=\"white\" transform=\"translate(24.5 24)\"></rect>\n </clipPath>\n </defs>\n </BaseSvg>\n );\n}\n","import { UiWallet } from '@wallet-standard/react';\nimport React from 'react';\n\nimport { WalletUiSize } from './types/wallet-ui-size';\n\nexport interface WalletUiLabelProps\n extends React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement> {\n size?: WalletUiSize;\n wallet?: Pick<UiWallet, 'name'>;\n}\n\nexport function WalletUiLabel({ className, size, wallet, ...props }: WalletUiLabelProps) {\n if (!wallet) {\n return null;\n }\n\n return (\n <span className={`wallet-ui-list-label ${size ?? 'md'} ${className ?? ''}`} {...props}>\n {wallet.name}\n </span>\n );\n}\n","import { UiWallet, UiWalletAccount } from '@wallet-standard/react';\nimport React from 'react';\n\nimport { WalletUiButton } from './types/wallet-ui-button';\nimport { WalletUiSize } from './types/wallet-ui-size';\nimport { WalletUiIcon } from './wallet-ui-icon';\nimport { WalletUiLabel } from './wallet-ui-label';\n\nexport interface WalletUiListButtonProps extends Omit<WalletUiButton, 'onClick'> {\n select?: (wallet: UiWalletAccount) => Promise<void>;\n size?: WalletUiSize;\n wallet: UiWallet;\n}\n\nexport function WalletUiListButton({ className, select, size = 'md', wallet, ...props }: WalletUiListButtonProps) {\n const [pending, setPending] = React.useState(false);\n\n function handleSelect() {\n if (!select) {\n return;\n }\n setPending(true);\n // TODO: Add support for multiple accounts, properly handle no accounts\n const account = wallet.accounts.length > 0 ? wallet.accounts[0] : undefined;\n if (!account) {\n return;\n }\n void select(account).finally(() => setPending(false));\n }\n\n return (\n <button\n disabled={pending}\n className={`wallet-ui-list-button ${size} ${pending ? 'wallet-ui-list-button-pending' : ''} ${className ?? ''}`}\n onClick={handleSelect}\n {...props}\n >\n <WalletUiIcon className=\"wallet-ui-list-button-icon\" wallet={wallet} size={size} />\n <WalletUiLabel className=\"wallet-ui-list-button-label\" wallet={wallet} size={size} />\n </button>\n );\n}\n","import { UiWallet, UiWalletAccount } from '@wallet-standard/react';\nimport React from 'react';\n\nimport { WalletUiDiv } from './types/wallet-ui-div';\nimport { WalletUiSize } from './types/wallet-ui-size';\nimport { WalletUiListButton } from './wallet-ui-list-button';\n\nexport interface WalletUiListProps extends WalletUiDiv {\n select?: (account: UiWalletAccount) => Promise<void>;\n size?: WalletUiSize;\n wallets: UiWallet[];\n}\n\nexport function WalletUiList({ className, select, size = 'md', wallets, ...props }: WalletUiListProps) {\n return (\n <div className={`wallet-ui-list ${size} ${className ?? ''}`} {...props}>\n {wallets.map(wallet => (\n <WalletUiListButton key={wallet.name} select={select} size={size} wallet={wallet} />\n ))}\n </div>\n );\n}\n","import { UiWallet, UiWalletAccount } from '@wallet-standard/react';\nimport React from 'react';\n\nimport { BaseModal, BaseModalProps } from './base-modal';\nimport { WalletUiSize } from './types/wallet-ui-size';\nimport { WalletUiList } from './wallet-ui-list';\n\nexport interface WalletUiModalProps extends Omit<BaseModalProps, 'children'> {\n select: (account: UiWalletAccount) => Promise<void>;\n size?: WalletUiSize;\n wallets: UiWallet[];\n}\n\nexport function WalletUiModal({ size = 'md', wallets, select, ...props }: WalletUiModalProps) {\n return (\n <BaseModal description=\"Connect a wallet on Solana to continue\" size={size} {...props}>\n <WalletUiList size={size} wallets={wallets} select={select} />\n </BaseModal>\n );\n}\n","import React from 'react';\n\nimport { BaseButton, BaseButtonProps } from './base-button';\nimport { BaseModalControl } from './use-base-modal';\n\nexport interface WalletUiModalTriggerProps extends Omit<BaseButtonProps, 'label'> {\n label?: string;\n modal: BaseModalControl;\n}\n\nexport function WalletUiModalTrigger({ label = 'Select Wallet', modal, ...props }: WalletUiModalTriggerProps) {\n return <BaseButton label={label} onClick={() => void modal.open()} {...props} />;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/base-button.tsx","../src/wallet-ui-context.tsx","../src/use-wallet-ui.tsx","../src/wallet-ui-account-context.tsx","../src/use-wallet-ui-account.tsx","../src/use-wallet-ui-wallet.tsx","../src/wallet-ui-icon.tsx","../src/base-dropdown.tsx","../src/base-svg.tsx","../src/wallet-ui-icon-close.tsx","../src/base-modal.tsx","../src/use-base-dropdown.tsx","../src/use-base-modal.tsx","../src/wallet-ui-cluster-context.tsx","../src/use-wallet-ui-cluster.tsx","../src/use-wallet-ui-dropdown.tsx","../src/wallet-ui-solana-client-context.tsx","../src/use-wallet-ui-solana-client.tsx","../src/use-wallet-ui-wallets.tsx","../src/wallet-ui-account-context-provider.tsx","../src/wallet-ui-cluster-context-provider.tsx","../src/wallet-ui-context-provider.tsx","../src/wallet-ui-solana-client-context-provider.tsx","../src/wallet-ui.tsx","../src/wallet-ui-button.tsx","../src/wallet-ui-cluster-dropdown.tsx","../src/wallet-ui-dropdown.tsx","../src/wallet-ui-icon-no-wallet.tsx","../src/wallet-ui-label.tsx","../src/wallet-ui-list-button.tsx","../src/wallet-ui-list.tsx","../src/wallet-ui-modal.tsx","../src/wallet-ui-modal-trigger.tsx"],"names":["React","createContext","useContext","connect","useConnect","useDisconnect","useEffect","BaseDropdownItemType","Portal","useMachine","menu","useId","normalizeProps","dialog","useMemo","useWallets","createStorageAccount","useStore","useState","getUiWalletAccountStorageKey","uiWalletAccountsAreSame","uiWalletAccountBelongsToUiWallet","createStorageCluster","clusterId","cluster","account","handleCopyText","createSolanaClient"],"mappings":"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","file":"index.node.cjs","sourcesContent":["import React from 'react';\n\nimport { WalletUiButton } from './types/wallet-ui-button';\nimport { WalletUiSize } from './types/wallet-ui-size';\n\nexport interface BaseButtonProps extends Omit<WalletUiButton, 'children'> {\n label: React.ReactNode;\n leftSection?: React.ReactNode;\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n rightSection?: React.ReactNode;\n size?: WalletUiSize;\n}\n\nexport function BaseButton({ className, label, leftSection, onClick, rightSection, size, ...props }: BaseButtonProps) {\n return (\n <button data-ui=\"base-button\" className={`${size ?? 'md'} ${className ?? ''}`} onClick={onClick} {...props}>\n {leftSection ? <span data-ui=\"base-button-left-section\">{leftSection}</span> : null}\n {label}\n {rightSection ? <span data-ui=\"base-button-right-section\">{rightSection}</span> : null}\n </button>\n );\n}\n","import { UiWallet, UiWalletAccount } from '@wallet-standard/react';\nimport { SolanaClient } from 'gill';\nimport React, { ReactNode } from 'react';\n\nimport { WalletUiSize } from './types/wallet-ui-size';\n\nexport interface WalletUiContextProviderProps {\n children: ReactNode;\n size?: WalletUiSize;\n}\n\nexport interface WalletUiContextValue {\n account?: UiWalletAccount;\n accountKeys: string[];\n client: SolanaClient;\n connect: (wallet: UiWalletAccount) => void;\n connected: boolean;\n copy: () => void;\n disconnect: () => void;\n size: WalletUiSize;\n wallet?: UiWallet;\n wallets: UiWallet[];\n}\n\nexport interface WalletUiContextProviderProps {\n children: ReactNode;\n size?: WalletUiSize;\n}\n\nexport const WalletUiContext = React.createContext<WalletUiContextValue>({} as WalletUiContextValue);\n","import React from 'react';\n\nimport { WalletUiContext } from './wallet-ui-context';\n\nexport function useWalletUi() {\n return React.useContext(WalletUiContext);\n}\n","import { UiWallet, UiWalletAccount } from '@wallet-standard/react';\nimport React, { createContext } from 'react';\n\nexport interface WalletUiAccountInfo {\n account: UiWalletAccount;\n accountKeys: string[];\n wallet: UiWallet | undefined;\n}\n\nexport interface WalletUiAccountState extends Omit<WalletUiAccountInfo, 'account'> {\n account: UiWalletAccount | undefined;\n setAccount: React.Dispatch<React.SetStateAction<UiWalletAccount | undefined>>;\n}\n\nexport const WalletUiAccountContext = createContext<WalletUiAccountState>({} as WalletUiAccountState);\n","import { useContext } from 'react';\n\nimport { WalletUiAccountContext } from './wallet-ui-account-context';\n\nexport function useWalletUiAccount() {\n return useContext(WalletUiAccountContext);\n}\n","import { UiWallet, useConnect, useDisconnect } from '@wallet-standard/react';\nimport { useEffect } from 'react';\n\nimport { useWalletUi } from './use-wallet-ui';\nimport { useWalletUiAccount } from './use-wallet-ui-account';\n\nexport function useWalletUiWallet({ wallet }: { wallet: UiWallet }) {\n const { connect: connectAccount } = useWalletUi();\n const { setAccount } = useWalletUiAccount();\n const [isConnecting, connect] = useConnect(wallet);\n const [isDisconnecting, disconnect] = useDisconnect(wallet);\n useEffect(() => {}, [isDisconnecting]);\n\n return {\n connect: async () => {\n const connectedAccount = await connect();\n console.log('connectedAccount', connectedAccount);\n if (!connectedAccount.length) {\n console.log('connect, no accounts');\n return connectedAccount;\n }\n const first = connectedAccount[0];\n console.log('connect, setting first account => ', first);\n setAccount(first);\n connectAccount(first);\n return connectedAccount;\n },\n disconnect,\n isConnecting,\n isDisconnecting,\n };\n}\n","import { UiWallet } from '@wallet-standard/react';\nimport React from 'react';\n\nimport { WalletUiImg } from './types/wallet-ui-img';\nimport { WalletUiSize } from './types/wallet-ui-size';\n\nexport interface WalletUiIconProps extends WalletUiImg {\n size?: WalletUiSize;\n wallet?: Pick<UiWallet, 'icon' | 'name'>;\n}\n\nexport function WalletUiIcon({ className, size, wallet, ...props }: WalletUiIconProps) {\n if (!wallet) {\n return null;\n }\n\n return (\n <img\n data-ui=\"wallet-ui-icon\"\n src={wallet.icon}\n alt={wallet.name}\n className={`${size ?? 'md'} ${className ?? ''}`}\n {...props}\n />\n );\n}\n","import { UiWallet } from '@wallet-standard/react';\nimport React, { HTMLAttributes } from 'react';\n\nimport { BaseButton, BaseButtonProps } from './base-button';\nimport { WalletUiSize } from './types/wallet-ui-size';\nimport { BaseDropdownControl } from './use-base-dropdown';\nimport { useWalletUiWallet } from './use-wallet-ui-wallet';\nimport { WalletUiIcon } from './wallet-ui-icon';\n\nexport enum BaseDropdownItemType {\n Item = 'Item',\n WalletConnect = 'WalletConnect',\n WalletCopy = 'WalletCopy',\n WalletDisconnect = 'WalletDisconnect',\n WalletNeeded = 'WalletNeeded',\n}\n\nexport interface BaseDropdownItem {\n closeMenu?: boolean;\n disabled?: boolean;\n handler: () => Promise<void>;\n label: string;\n leftSection?: React.ReactNode;\n rightSection?: React.ReactNode;\n type: BaseDropdownItemType;\n value: string;\n wallet?: UiWallet;\n}\n\nexport interface BaseDropdownProps {\n buttonProps: BaseButtonProps;\n dropdown: BaseDropdownControl;\n items: BaseDropdownItem[];\n showIndicator?: boolean;\n size?: WalletUiSize;\n}\n\nexport function BaseDropdown({ buttonProps, dropdown, items, showIndicator, size = 'md' }: BaseDropdownProps) {\n const api = dropdown.api;\n const trigger = (\n <BaseButton\n {...api.getTriggerProps()}\n size={size}\n rightSection={\n showIndicator ? (\n <span {...api.getIndicatorProps()}>\n <BaseDropdownChevronDown size={12} />\n </span>\n ) : null\n }\n {...buttonProps}\n />\n );\n\n return (\n <div data-ui=\"base-dropdown\">\n {trigger}\n <div {...api.getPositionerProps()}>\n <div {...api.getContentProps()} data-ui=\"base-dropdown-list\" data-part=\"content\">\n {items.map(item => {\n return (\n <BaseDropdownItem\n {...api.getItemProps({ value: item.value })}\n key={item.value}\n item={item}\n size={size}\n afterClick={() => {\n if (item.disabled) {\n return;\n }\n if (item.closeMenu !== false) {\n dropdown.close();\n }\n }}\n />\n );\n })}\n </div>\n </div>\n </div>\n );\n}\n\nfunction BaseDropdownItem({ afterClick, item, size }: BaseDropdownItemRenderProps) {\n console.log('BaseDropdownItem', item, size);\n if (!item.wallet) {\n return <BaseDropdownItemRender afterClick={afterClick} item={item} size={size} />;\n }\n switch (item.type) {\n case BaseDropdownItemType.Item:\n return <BaseDropdownItemRender afterClick={afterClick} item={item} size={size} />;\n case BaseDropdownItemType.WalletConnect:\n return (\n <BaseDropdownItemWalletConnect afterClick={afterClick} item={item} size={size} wallet={item.wallet} />\n );\n case BaseDropdownItemType.WalletCopy:\n return <BaseDropdownItemRender afterClick={afterClick} item={item} size={size} />;\n case BaseDropdownItemType.WalletDisconnect:\n return (\n <BaseDropdownItemWalletDisconnect\n afterClick={afterClick}\n item={item}\n size={size}\n wallet={item.wallet}\n />\n );\n }\n}\n\nfunction BaseDropdownItemWalletConnect({\n afterClick,\n item,\n size,\n wallet,\n}: BaseDropdownItemRenderProps & {\n wallet: UiWallet;\n}) {\n const { connect } = useWalletUiWallet({ wallet });\n return (\n <BaseDropdownItemRender\n afterClick={afterClick}\n item={{\n ...item,\n handler: async () => {\n //\n await connect();\n return await item.handler();\n },\n leftSection: wallet ? <WalletUiIcon wallet={wallet} size={size} /> : undefined,\n }}\n size={size}\n />\n );\n}\n\nfunction BaseDropdownItemWalletDisconnect({\n afterClick,\n item,\n size,\n wallet,\n}: BaseDropdownItemRenderProps & {\n wallet: UiWallet;\n}) {\n const { disconnect } = useWalletUiWallet({ wallet });\n return (\n <BaseDropdownItemRender\n afterClick={afterClick}\n item={{\n ...item,\n handler: async () => {\n //\n await disconnect();\n return await item.handler();\n },\n }}\n size={size}\n />\n );\n}\n\ninterface BaseDropdownItemRenderProps {\n afterClick: () => void;\n item: BaseDropdownItem;\n size: WalletUiSize;\n}\n\nfunction BaseDropdownItemRender({ afterClick, item, size }: BaseDropdownItemRenderProps) {\n function onClick() {\n if (item.disabled) {\n return;\n }\n void item.handler().then(() => {\n afterClick();\n });\n }\n\n return (\n <div data-ui=\"base-dropdown-item\" className={size} data-part=\"item\" onClick={onClick}>\n {item.leftSection ? <span data-ui=\"base-dropdown-item-left-section\">{item.leftSection}</span> : null}\n {item.label}\n {item.rightSection ? <span data-ui=\"base-dropdown-item-right-section\">{item.rightSection}</span> : null}\n </div>\n );\n}\n\nexport function BaseDropdownChevronDown(props: HTMLAttributes<SVGElement> & { size?: number }) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={props.size ?? 24}\n height={props.size ?? 24}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n );\n}\n","import React from 'react';\n\nimport { WalletUiSize } from './types/wallet-ui-size';\nimport { WalletUiSvg } from './types/wallet-ui-svg';\n\nexport interface BaseSvgProps extends WalletUiSvg {\n size: WalletUiSize;\n sizes: { [key: string]: number };\n viewBox: string;\n}\n\nexport function BaseSvg({ sizes = {}, ...props }: BaseSvgProps) {\n const size = props.size ? sizes[props.size] : 12;\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={size} height={size} {...props}>\n {props.children}\n </svg>\n );\n}\n","import React from 'react';\n\nimport { BaseSvg, BaseSvgProps } from './base-svg';\n\nexport function WalletUiIconClose({ size = 'md', ...props }: Omit<BaseSvgProps, 'sizes' | 'viewBox'>) {\n return (\n <BaseSvg\n size={size}\n sizes={{ lg: 16, md: 12, sm: 8 }}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n viewBox=\"0 0 14 14\"\n {...props}\n >\n <path d=\"M14 12.461 8.3 6.772l5.234-5.233L12.006 0 6.772 5.234 1.54 0 0 1.539l5.234 5.233L0 12.006l1.539 1.528L6.772 8.3l5.69 5.7L14 12.461z\"></path>\n </BaseSvg>\n );\n}\n","import { Portal } from '@zag-js/react';\nimport React from 'react';\n\nimport { BaseButton, BaseButtonProps } from './base-button';\nimport { WalletUiSize } from './types/wallet-ui-size';\nimport { BaseModalControl } from './use-base-modal';\nimport { WalletUiIconClose } from './wallet-ui-icon-close';\n\nexport interface BaseModalProps {\n buttonLabel?: React.ReactNode;\n buttonProps?: Partial<BaseButtonProps>;\n children: React.ReactNode;\n description?: React.ReactNode;\n modal: BaseModalControl;\n size?: WalletUiSize;\n title?: React.ReactNode;\n}\n\nexport function BaseModal({ modal, buttonLabel, buttonProps = {}, size = 'md', ...props }: BaseModalProps) {\n const api = modal.api;\n return (\n <>\n {buttonLabel ? (\n <BaseButton label={buttonLabel} size={size} {...buttonProps} {...api.getTriggerProps()} />\n ) : null}\n {api.open && (\n <Portal>\n <div {...api.getBackdropProps()} />\n <div {...api.getPositionerProps()}>\n <div {...api.getContentProps()} className={size}>\n <header>\n <button {...api.getCloseTriggerProps()}>\n <WalletUiIconClose size={size} />\n </button>\n </header>\n {props.description ? <p {...api.getDescriptionProps()}>{props.description}</p> : null}\n <main>{props.children}</main>\n </div>\n </div>\n </Portal>\n )}\n </>\n );\n}\n","import * as menu from '@zag-js/menu';\nimport { normalizeProps, useMachine } from '@zag-js/react';\nimport { useId } from 'react';\n\nexport type BaseDropdownApi = ReturnType<typeof menu.connect>;\n\nexport interface BaseDropdownControl {\n api: BaseDropdownApi;\n close: () => void;\n open: () => void;\n}\n\nexport function useBaseDropdown(): BaseDropdownControl {\n const service = useMachine(menu.machine, { id: useId() });\n const api = menu.connect(service, normalizeProps);\n\n return {\n api,\n close: () => service.send({ type: 'CLOSE' }),\n open: () => service.send({ type: 'OPEN' }),\n };\n}\n","import * as dialog from '@zag-js/dialog';\nimport { normalizeProps, useMachine } from '@zag-js/react';\nimport { useId } from 'react';\n\nexport type BaseModalApi = ReturnType<typeof dialog.connect>;\n\nexport interface BaseModalControl {\n api: BaseModalApi;\n close: () => void;\n open: () => void;\n}\n\nexport function useBaseModal(): BaseModalControl {\n const service = useMachine(dialog.machine, { id: useId(), modal: true });\n const api = dialog.connect(service, normalizeProps);\n\n return {\n api,\n close: () => service.send({ type: 'CLOSE' }),\n open: () => service.send({ type: 'OPEN' }),\n };\n}\n","import { SolanaCluster, SolanaClusterId, StorageCluster } from '@wallet-ui/core';\nimport { createContext, ReactNode } from 'react';\n\nexport interface WalletUiClusterContextProviderProps {\n clusters: SolanaCluster[];\n render: (props: WalletUiClusterContextValue) => ReactNode;\n storage?: StorageCluster;\n}\n\nexport interface WalletUiClusterContextValue {\n cluster: SolanaCluster;\n clusters: SolanaCluster[];\n\n setCluster(cluster: SolanaClusterId): void;\n}\n\nexport const WalletUiClusterContext = createContext<WalletUiClusterContextValue>({} as WalletUiClusterContextValue);\n","import { useContext } from 'react';\n\nimport { WalletUiClusterContext } from './wallet-ui-cluster-context';\n\nexport function useWalletUiCluster() {\n return useContext(WalletUiClusterContext);\n}\n","import { UiWallet, UiWalletAccount } from '@wallet-standard/react';\nimport React, { useMemo } from 'react';\n\nimport { BaseButtonProps } from './base-button';\nimport { BaseDropdownItem, BaseDropdownItemType } from './base-dropdown';\nimport { WalletUiSize } from './types/wallet-ui-size';\nimport { BaseDropdownControl, useBaseDropdown } from './use-base-dropdown';\nimport { useWalletUi } from './use-wallet-ui';\nimport { WalletUiIcon } from './wallet-ui-icon';\n\nfunction getDropdownItemsWallets({\n wallets,\n connect,\n}: {\n connect: (wallet: UiWalletAccount) => void;\n wallets: UiWallet[];\n}): BaseDropdownItem[] {\n return wallets.length\n ? wallets.map(wallet => ({\n handler: async () => {\n // TODO: Add support for multiple accounts, properly handle no accounts\n const account = wallet.accounts.length > 0 ? wallet.accounts[0] : undefined;\n if (!account) {\n return;\n }\n connect(account);\n await Promise.resolve();\n },\n label: wallet.name,\n\n type: BaseDropdownItemType.WalletConnect,\n value: wallet.name,\n wallet,\n }))\n : [\n {\n handler: async () => {\n window.open('https://solana.com/solana-wallets', '_blank');\n await Promise.resolve();\n },\n label: \"You'll need a wallet on Solana to continue\",\n type: BaseDropdownItemType.WalletNeeded,\n value: 'no-wallets',\n },\n ];\n}\n\nexport function useWalletUiDropdown({ size = 'md' }: { size?: WalletUiSize } = {}): {\n buttonProps: BaseButtonProps;\n connected: boolean;\n dropdown: BaseDropdownControl;\n items: BaseDropdownItem[];\n} {\n const dropdown = useBaseDropdown();\n\n const { account, connect, copy, disconnect, connected, wallet, wallets } = useWalletUi();\n\n const itemsWallets = useMemo(() => getDropdownItemsWallets({ connect, wallets }), [wallets, connect]);\n\n const itemsConnected: BaseDropdownItem[] = useMemo(\n () => [\n {\n handler: async () => {\n copy();\n void (await Promise.resolve());\n },\n label: 'Copy Address',\n type: BaseDropdownItemType.WalletCopy,\n value: 'copy',\n },\n {\n handler: async () => {\n disconnect();\n dropdown.close();\n await Promise.resolve();\n },\n label: 'Disconnect',\n type: BaseDropdownItemType.WalletDisconnect,\n value: 'disconnect',\n },\n ...itemsWallets,\n ],\n [copy, disconnect, dropdown, itemsWallets],\n );\n const items = useMemo(() => {\n return connected ? itemsConnected : itemsWallets;\n }, [connected, itemsConnected, itemsWallets]);\n\n const buttonProps: BaseButtonProps = useMemo(() => {\n return {\n label: connected ? ((account ? ellipsify(account.address) : wallet?.name) ?? 'Connected') : 'Select Wallet',\n leftSection: connected ? <WalletUiIcon size={size} wallet={wallet} /> : undefined,\n };\n }, [account, connected, size, wallet]);\n\n return {\n buttonProps,\n connected,\n dropdown,\n items,\n };\n}\n\nexport function ellipsify(str = '', len = 4, delimiter = '..') {\n const strLen = str.length;\n const limit = len * 2 + delimiter.length;\n\n return strLen >= limit ? str.substring(0, len) + delimiter + str.substring(strLen - len, strLen) : str;\n}\n","import { SolanaClient, SolanaClientUrlOrMoniker } from 'gill';\nimport { createContext, ReactNode } from 'react';\n\nexport interface WalletUiSolanaClientContextProviderProps {\n children: ReactNode;\n urlOrMoniker: SolanaClientUrlOrMoniker;\n}\n\nexport const WalletUiSolanaClientContext = createContext<SolanaClient>({} as SolanaClient);\n","import { useContext } from 'react';\n\nimport { WalletUiSolanaClientContext } from './wallet-ui-solana-client-context';\n\nexport function useWalletUiSolanaClient() {\n return useContext(WalletUiSolanaClientContext);\n}\n","import { useWallets } from '@wallet-standard/react';\nimport { useMemo } from 'react';\n\nexport function useWalletUiWallets() {\n const readonlyWallets = useWallets();\n return useMemo(\n () =>\n readonlyWallets\n .filter(wallet => wallet.chains.some(i => i.startsWith('solana:')))\n .sort((a, b) => a.name.localeCompare(b.name)),\n [readonlyWallets],\n );\n}\n","import { useStore } from '@nanostores/react';\nimport {\n getUiWalletAccountStorageKey,\n UiWallet,\n UiWalletAccount,\n uiWalletAccountBelongsToUiWallet,\n uiWalletAccountsAreSame,\n useWallets,\n} from '@wallet-standard/react';\nimport { createStorageAccount, StorageAccount } from '@wallet-ui/core';\nimport React, { useEffect, useMemo, useState } from 'react';\n\nimport { useWalletUiCluster } from './use-wallet-ui-cluster';\nimport { WalletUiAccountContext } from './wallet-ui-account-context';\n\nlet wasSetterInvoked = false;\n\nfunction getSavedWalletAccount(\n wallets: readonly UiWallet[],\n savedWalletNameAndAddress?: string,\n): UiWalletAccount | undefined {\n if (wasSetterInvoked) {\n // After the user makes an explicit choice of wallet, stop trying to auto-select the\n // saved wallet, if and when it appears.\n return;\n }\n if (!savedWalletNameAndAddress || typeof savedWalletNameAndAddress !== 'string') {\n return;\n }\n const [savedWalletName, savedAccountAddress] = savedWalletNameAndAddress.split(':');\n if (!savedWalletName || !savedAccountAddress) {\n return;\n }\n const wallet = wallets.find(w => w.name === savedWalletName);\n if (!wallet) {\n return;\n }\n return wallet.accounts.find(a => a.address === savedAccountAddress);\n}\n\n/**\n * Saves the selected wallet account's storage key to the browser's local storage. In future\n * sessions it will try to return that same wallet account, or at least one from the same brand of\n * wallet if the wallet from which it came is still in the Wallet Standard registry.\n */\nexport function WalletUiAccountContextProvider({\n children,\n storage = createStorageAccount(),\n}: {\n children: React.ReactNode;\n storage?: StorageAccount;\n}) {\n const { cluster } = useWalletUiCluster();\n const wallets = useWallets();\n const accountId = useStore(storage.value);\n const [account, setAccountInternal] = useState<UiWalletAccount | undefined>(() =>\n getSavedWalletAccount(wallets, accountId),\n );\n\n function setAccount(setStateAction: React.SetStateAction<UiWalletAccount | undefined>) {\n setAccountInternal(prevAccount => {\n wasSetterInvoked = true;\n const nextWalletAccount =\n typeof setStateAction === 'function' ? setStateAction(prevAccount) : setStateAction;\n const accountKey = nextWalletAccount ? getUiWalletAccountStorageKey(nextWalletAccount) : undefined;\n storage.set(accountKey ? accountKey : undefined);\n return nextWalletAccount;\n });\n }\n\n useEffect(() => {\n const savedWalletAccount = getSavedWalletAccount(wallets, accountId);\n if (savedWalletAccount) {\n setAccountInternal(savedWalletAccount);\n }\n }, [accountId, wallets]);\n const walletAccount = useMemo(() => {\n if (account) {\n for (const uiWallet of wallets) {\n for (const uiWalletAccount of uiWallet.accounts) {\n if (uiWalletAccountsAreSame(account, uiWalletAccount)) {\n return uiWalletAccount;\n }\n }\n if (uiWalletAccountBelongsToUiWallet(account, uiWallet) && uiWallet.accounts[0]) {\n // If the selected account belongs to this connected wallet, at least, then\n // select one of its accounts.\n return uiWallet.accounts[0];\n }\n }\n }\n }, [account, wallets]);\n useEffect(() => {\n // If there is a selected wallet account but the wallet to which it belongs has since\n // disconnected, clear the selected wallet.\n if (account && !walletAccount) {\n setAccountInternal(undefined);\n }\n }, [account, walletAccount]);\n\n const wallet = useMemo(() => {\n if (!walletAccount) {\n return undefined;\n }\n for (const uiWallet of wallets) {\n for (const uiWalletAccount of uiWallet.accounts) {\n if (uiWalletAccountsAreSame(walletAccount, uiWalletAccount)) {\n return uiWallet;\n }\n }\n if (uiWalletAccountBelongsToUiWallet(walletAccount, uiWallet) && uiWallet.accounts[0]) {\n // If the selected account belongs to this connected wallet, at least, then\n // select one of its accounts.\n return uiWallet;\n }\n }\n }, [walletAccount, wallets]);\n\n // Expose the error boundary reset keys to the context\n const accountKeys = useMemo(() => {\n if (!account) {\n return [];\n }\n return [cluster.id, getUiWalletAccountStorageKey(account)].filter(Boolean);\n }, [account, cluster.id]);\n return (\n <WalletUiAccountContext.Provider\n value={useMemo(\n () => ({\n account: walletAccount,\n accountKeys,\n setAccount,\n wallet,\n }),\n [walletAccount, wallet, accountKeys],\n )}\n >\n {children}\n </WalletUiAccountContext.Provider>\n );\n}\n","import { useStore } from '@nanostores/react';\nimport { createStorageCluster, SolanaClusterId } from '@wallet-ui/core';\nimport React from 'react';\n\nimport {\n WalletUiClusterContext,\n WalletUiClusterContextProviderProps,\n WalletUiClusterContextValue,\n} from './wallet-ui-cluster-context';\n\nexport function WalletUiClusterContextProvider({\n clusters,\n render,\n storage = createStorageCluster(),\n}: WalletUiClusterContextProviderProps) {\n const clusterId = useStore(storage.value);\n if (!clusterId) {\n throw new Error('Error reading cluster id from storage');\n }\n if (!clusters.length) {\n throw new Error('No clusters provided');\n }\n\n const cluster = clusters.find(c => c.id === clusterId);\n if (!cluster) {\n throw new Error(`Cluster ${clusterId.toString()} not found`);\n }\n\n const value: WalletUiClusterContextValue = {\n cluster,\n clusters,\n setCluster: (clusterId: SolanaClusterId) => {\n const cluster = clusters.find(c => c.id === clusterId);\n if (!cluster) {\n throw new Error(`Cluster ${clusterId} not found`);\n }\n storage.set(clusterId);\n },\n };\n\n return <WalletUiClusterContext.Provider value={value}>{render(value)}</WalletUiClusterContext.Provider>;\n}\n","import { UiWalletAccount } from '@wallet-standard/react';\nimport { handleCopyText } from '@wallet-ui/core';\nimport React from 'react';\n\nimport { useWalletUiAccount } from './use-wallet-ui-account';\nimport { useWalletUiSolanaClient } from './use-wallet-ui-solana-client';\nimport { useWalletUiWallets } from './use-wallet-ui-wallets';\nimport { WalletUiContext, WalletUiContextProviderProps, WalletUiContextValue } from './wallet-ui-context';\n\nexport function WalletUiContextProvider({ children, size = 'md' }: WalletUiContextProviderProps) {\n const { account, accountKeys, setAccount, wallet } = useWalletUiAccount();\n const wallets = useWalletUiWallets();\n const client = useWalletUiSolanaClient();\n const connected = Boolean(wallet && wallet?.accounts.length > 0);\n\n function connect(account: UiWalletAccount) {\n setAccount(account);\n }\n\n function disconnect() {\n setAccount(undefined);\n }\n\n function copy() {\n if (!account) {\n return;\n }\n handleCopyText(account.address);\n }\n\n const value: WalletUiContextValue = {\n account,\n accountKeys,\n client,\n connect,\n connected,\n copy,\n disconnect,\n size,\n wallet,\n wallets,\n };\n\n return <WalletUiContext.Provider value={value}>{children}</WalletUiContext.Provider>;\n}\n","import { createSolanaClient, SolanaClient } from 'gill';\nimport React, { useMemo } from 'react';\n\nimport {\n WalletUiSolanaClientContext,\n WalletUiSolanaClientContextProviderProps,\n} from './wallet-ui-solana-client-context';\n\nexport function WalletUiSolanaClientContextProvider({\n children,\n urlOrMoniker,\n}: WalletUiSolanaClientContextProviderProps) {\n return (\n <WalletUiSolanaClientContext.Provider\n value={useMemo(() => createSolanaClient({ urlOrMoniker }) as SolanaClient, [urlOrMoniker])}\n >\n {children}\n </WalletUiSolanaClientContext.Provider>\n );\n}\n","import { SolanaCluster, StorageAccount, StorageCluster } from '@wallet-ui/core';\nimport React from 'react';\n\nimport { WalletUiAccountContextProvider } from './wallet-ui-account-context-provider';\nimport { WalletUiClusterContextProvider } from './wallet-ui-cluster-context-provider';\nimport { WalletUiContextProviderProps } from './wallet-ui-context';\nimport { WalletUiContextProvider } from './wallet-ui-context-provider';\nimport { WalletUiSolanaClientContextProvider } from './wallet-ui-solana-client-context-provider';\n\nexport interface WalletUiConfig extends Omit<WalletUiContextProviderProps, 'children'> {\n accountStorage?: StorageAccount;\n clusterStorage?: StorageCluster;\n clusters: SolanaCluster[];\n}\n\nexport function createWalletUiConfig(props: WalletUiConfig): WalletUiConfig {\n return { ...props };\n}\n\nexport interface WalletUiProps {\n children: React.ReactNode;\n config: WalletUiConfig;\n}\n\nexport function WalletUi({ children, config: { accountStorage, clusters, clusterStorage, ...config } }: WalletUiProps) {\n return (\n <React.Fragment>\n <WalletUiClusterContextProvider\n clusters={clusters}\n storage={clusterStorage}\n render={({ cluster }) => {\n return (\n <WalletUiSolanaClientContextProvider urlOrMoniker={cluster.urlOrMoniker}>\n <WalletUiAccountContextProvider storage={accountStorage}>\n <WalletUiContextProvider {...config}>{children}</WalletUiContextProvider>\n </WalletUiAccountContextProvider>\n </WalletUiSolanaClientContextProvider>\n );\n }}\n />\n </React.Fragment>\n );\n}\n","import React from 'react';\n\nimport { BaseButton, BaseButtonProps } from './base-button';\nimport { WalletUiSize } from './types/wallet-ui-size';\n\nexport interface WalletUiButtonProps extends Omit<BaseButtonProps, 'label'> {\n size?: WalletUiSize;\n}\n\nexport function WalletUiButton({ ...props }: WalletUiButtonProps) {\n return <BaseButton {...props} label={'CLICK'} />;\n}\n","import React from 'react';\n\nimport { BaseDropdown, BaseDropdownItemType, BaseDropdownProps } from './base-dropdown';\nimport { WalletUiSize } from './types/wallet-ui-size';\nimport { useBaseDropdown } from './use-base-dropdown';\nimport { useWalletUiCluster } from './use-wallet-ui-cluster';\n\nexport interface WalletUiClusterDropdownProps\n extends Omit<BaseDropdownProps, 'buttonProps' | 'dropdown' | 'items' | 'label'> {\n buttonProps?: Partial<BaseDropdownProps['buttonProps']>;\n size?: WalletUiSize;\n}\n\nexport function WalletUiClusterDropdown({ buttonProps, size = 'md', ...props }: WalletUiClusterDropdownProps) {\n const dropdown = useBaseDropdown();\n const { cluster, clusters, setCluster } = useWalletUiCluster();\n return (\n <BaseDropdown\n buttonProps={{ ...buttonProps, label: cluster.label, size: size }}\n items={clusters.map(cluster => ({\n handler: async () => {\n setCluster(cluster.id);\n await Promise.resolve();\n },\n label: cluster.label,\n type: BaseDropdownItemType.Item,\n value: cluster.id,\n }))}\n dropdown={dropdown}\n {...props}\n />\n );\n}\n","import React from 'react';\n\nimport { BaseDropdown } from './base-dropdown';\nimport { WalletUiSize } from './types/wallet-ui-size';\nimport { useWalletUiDropdown } from './use-wallet-ui-dropdown';\n\nexport interface WalletUiDropdownProps {\n label?: string;\n size?: WalletUiSize;\n}\n\nexport function WalletUiDropdown({ size = 'md', ...props }: WalletUiDropdownProps) {\n const { buttonProps, items, dropdown } = useWalletUiDropdown({ size });\n return <BaseDropdown {...props} buttonProps={{ ...buttonProps }} dropdown={dropdown} items={items} size={size} />;\n}\n","import React from 'react';\n\nimport { BaseSvg, BaseSvgProps } from './base-svg';\n\nexport function WalletUiIconNoWallet({ size, ...props }: Omit<BaseSvgProps, 'sizes' | 'viewBox'>) {\n return (\n <BaseSvg size={size} sizes={{ lg: 125, md: 100, sm: 75 }} fill=\"none\" viewBox=\"0 0 97 96\" {...props}>\n <circle cx=\"48.5\" cy=\"48\" r=\"48\" fill=\"url(#paint0_linear_880_5115)\" fillOpacity=\"0.1\"></circle>\n <circle\n cx=\"48.5\"\n cy=\"48\"\n r=\"47\"\n stroke=\"url(#paint1_linear_880_5115)\"\n strokeOpacity=\"0.4\"\n strokeWidth=\"2\"\n ></circle>\n <g clipPath=\"url(#clip0_880_5115)\">\n <path\n d=\"M65.5769 28.1523H31.4231C27.6057 28.1523 24.5 31.258 24.5 35.0754V60.9215C24.5 64.7389 27.6057 67.8446 31.4231 67.8446H65.5769C69.3943 67.8446 72.5 64.7389 72.5 60.9215V35.0754C72.5 31.258 69.3943 28.1523 65.5769 28.1523ZM69.7308 52.1523H59.5769C57.2865 52.1523 55.4231 50.289 55.4231 47.9985C55.4231 45.708 57.2864 43.8446 59.5769 43.8446H69.7308V52.1523ZM69.7308 41.0754H59.5769C55.7595 41.0754 52.6539 44.1811 52.6539 47.9985C52.6539 51.8159 55.7595 54.9215 59.5769 54.9215H69.7308V60.9215C69.7308 63.2119 67.8674 65.0754 65.5769 65.0754H31.4231C29.1327 65.0754 27.2692 63.212 27.2692 60.9215V35.0754C27.2692 32.785 29.1326 30.9215 31.4231 30.9215H65.5769C67.8673 30.9215 69.7308 32.7849 69.7308 35.0754V41.0754Z\"\n fill=\"url(#paint2_linear_880_5115)\"\n ></path>\n <path\n d=\"M61.4231 46.6172H59.577C58.8123 46.6172 58.1924 47.2371 58.1924 48.0018C58.1924 48.7665 58.8123 49.3863 59.577 49.3863H61.4231C62.1878 49.3863 62.8077 48.7664 62.8077 48.0018C62.8077 47.2371 62.1878 46.6172 61.4231 46.6172Z\"\n fill=\"url(#paint3_linear_880_5115)\"\n ></path>\n </g>\n <defs>\n <linearGradient\n id=\"paint0_linear_880_5115\"\n x1=\"3.41664\"\n y1=\"98.0933\"\n x2=\"103.05\"\n y2=\"8.42498\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#9945FF\"></stop>\n <stop offset=\"0.14\" stopColor=\"#8A53F4\"></stop>\n <stop offset=\"0.42\" stopColor=\"#6377D6\"></stop>\n <stop offset=\"0.79\" stopColor=\"#24B0A7\"></stop>\n <stop offset=\"0.99\" stopColor=\"#00D18C\"></stop>\n <stop offset=\"1\" stopColor=\"#00D18C\"></stop>\n </linearGradient>\n <linearGradient\n id=\"paint1_linear_880_5115\"\n x1=\"3.41664\"\n y1=\"98.0933\"\n x2=\"103.05\"\n y2=\"8.42498\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#9945FF\"></stop>\n <stop offset=\"0.14\" stopColor=\"#8A53F4\"></stop>\n <stop offset=\"0.42\" stopColor=\"#6377D6\"></stop>\n <stop offset=\"0.79\" stopColor=\"#24B0A7\"></stop>\n <stop offset=\"0.99\" stopColor=\"#00D18C\"></stop>\n <stop offset=\"1\" stopColor=\"#00D18C\"></stop>\n </linearGradient>\n <linearGradient\n id=\"paint2_linear_880_5115\"\n x1=\"25.9583\"\n y1=\"68.7101\"\n x2=\"67.2337\"\n y2=\"23.7879\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#9945FF\"></stop>\n <stop offset=\"0.14\" stopColor=\"#8A53F4\"></stop>\n <stop offset=\"0.42\" stopColor=\"#6377D6\"></stop>\n <stop offset=\"0.79\" stopColor=\"#24B0A7\"></stop>\n <stop offset=\"0.99\" stopColor=\"#00D18C\"></stop>\n <stop offset=\"1\" stopColor=\"#00D18C\"></stop>\n </linearGradient>\n <linearGradient\n id=\"paint3_linear_880_5115\"\n x1=\"58.3326\"\n y1=\"49.4467\"\n x2=\"61.0002\"\n y2=\"45.4453\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#9945FF\"></stop>\n <stop offset=\"0.14\" stopColor=\"#8A53F4\"></stop>\n <stop offset=\"0.42\" stopColor=\"#6377D6\"></stop>\n <stop offset=\"0.79\" stopColor=\"#24B0A7\"></stop>\n <stop offset=\"0.99\" stopColor=\"#00D18C\"></stop>\n <stop offset=\"1\" stopColor=\"#00D18C\"></stop>\n </linearGradient>\n <clipPath id=\"clip0_880_5115\">\n <rect width=\"48\" height=\"48\" fill=\"white\" transform=\"translate(24.5 24)\"></rect>\n </clipPath>\n </defs>\n </BaseSvg>\n );\n}\n","import { UiWallet } from '@wallet-standard/react';\nimport React from 'react';\n\nimport { WalletUiSize } from './types/wallet-ui-size';\n\nexport interface WalletUiLabelProps\n extends React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement> {\n size?: WalletUiSize;\n wallet?: Pick<UiWallet, 'name'>;\n}\n\nexport function WalletUiLabel({ className, size, wallet, ...props }: WalletUiLabelProps) {\n if (!wallet) {\n return null;\n }\n\n return (\n <span data-ui=\"wallet-ui-label\" className={`${size ?? 'md'} ${className ?? ''}`} {...props}>\n {wallet.name}\n </span>\n );\n}\n","import { UiWallet, UiWalletAccount } from '@wallet-standard/react';\nimport React from 'react';\n\nimport { WalletUiButton } from './types/wallet-ui-button';\nimport { WalletUiSize } from './types/wallet-ui-size';\nimport { WalletUiIcon } from './wallet-ui-icon';\nimport { WalletUiLabel } from './wallet-ui-label';\n\nexport interface WalletUiListButtonProps extends Omit<WalletUiButton, 'onClick'> {\n select?: (wallet: UiWalletAccount) => Promise<void>;\n size?: WalletUiSize;\n wallet: UiWallet;\n}\n\nexport function WalletUiListButton({ className, select, size = 'md', wallet, ...props }: WalletUiListButtonProps) {\n const [pending, setPending] = React.useState(false);\n\n function handleSelect() {\n if (!select) {\n return;\n }\n setPending(true);\n // TODO: Add support for multiple accounts, properly handle no accounts\n const account = wallet.accounts.length > 0 ? wallet.accounts[0] : undefined;\n if (!account) {\n return;\n }\n void select(account).finally(() => setPending(false));\n }\n\n return (\n <button\n disabled={pending}\n data-ui=\"wallet-ui-list-button\"\n className={`${size} ${pending ? 'pending' : ''} ${className ?? ''}`}\n onClick={handleSelect}\n {...props}\n >\n <WalletUiIcon wallet={wallet} size={size} />\n <WalletUiLabel wallet={wallet} size={size} />\n </button>\n );\n}\n","import { UiWallet, UiWalletAccount } from '@wallet-standard/react';\nimport React from 'react';\n\nimport { WalletUiDiv } from './types/wallet-ui-div';\nimport { WalletUiSize } from './types/wallet-ui-size';\nimport { WalletUiListButton } from './wallet-ui-list-button';\n\nexport interface WalletUiListProps extends WalletUiDiv {\n select?: (account: UiWalletAccount) => Promise<void>;\n size?: WalletUiSize;\n wallets: UiWallet[];\n}\n\nexport function WalletUiList({ className, select, size = 'md', wallets, ...props }: WalletUiListProps) {\n return (\n <div data-ui=\"wallet-ui-list\" className={`${size} ${className ?? ''}`} {...props}>\n {wallets.map(wallet => (\n <WalletUiListButton key={wallet.name} select={select} size={size} wallet={wallet} />\n ))}\n </div>\n );\n}\n","import { UiWallet, UiWalletAccount } from '@wallet-standard/react';\nimport React from 'react';\n\nimport { BaseModal, BaseModalProps } from './base-modal';\nimport { WalletUiSize } from './types/wallet-ui-size';\nimport { WalletUiList } from './wallet-ui-list';\n\nexport interface WalletUiModalProps extends Omit<BaseModalProps, 'children'> {\n select: (account: UiWalletAccount) => Promise<void>;\n size?: WalletUiSize;\n wallets: UiWallet[];\n}\n\nexport function WalletUiModal({ size = 'md', wallets, select, ...props }: WalletUiModalProps) {\n return (\n <BaseModal description=\"Connect a wallet on Solana to continue\" size={size} {...props}>\n <WalletUiList size={size} wallets={wallets} select={select} />\n </BaseModal>\n );\n}\n","import React from 'react';\n\nimport { BaseButton, BaseButtonProps } from './base-button';\nimport { BaseModalControl } from './use-base-modal';\n\nexport interface WalletUiModalTriggerProps extends Omit<BaseButtonProps, 'label'> {\n label?: string;\n modal: BaseModalControl;\n}\n\nexport function WalletUiModalTrigger({ label = 'Select Wallet', modal, ...props }: WalletUiModalTriggerProps) {\n return <BaseButton label={label} onClick={() => void modal.open()} {...props} />;\n}\n"]}
|
package/dist/index.node.mjs
CHANGED
|
@@ -14,7 +14,7 @@ export * from '@wallet-standard/core';
|
|
|
14
14
|
|
|
15
15
|
// src/base-button.tsx
|
|
16
16
|
function BaseButton({ className, label, leftSection, onClick, rightSection, size, ...props }) {
|
|
17
|
-
return /* @__PURE__ */ React19.createElement("button", {
|
|
17
|
+
return /* @__PURE__ */ React19.createElement("button", { "data-ui": "base-button", className: `${size ?? "md"} ${className ?? ""}`, onClick, ...props }, leftSection ? /* @__PURE__ */ React19.createElement("span", { "data-ui": "base-button-left-section" }, leftSection) : null, label, rightSection ? /* @__PURE__ */ React19.createElement("span", { "data-ui": "base-button-right-section" }, rightSection) : null);
|
|
18
18
|
}
|
|
19
19
|
var WalletUiContext = React19.createContext({});
|
|
20
20
|
|
|
@@ -56,6 +56,21 @@ function useWalletUiWallet({ wallet }) {
|
|
|
56
56
|
isDisconnecting
|
|
57
57
|
};
|
|
58
58
|
}
|
|
59
|
+
function WalletUiIcon({ className, size, wallet, ...props }) {
|
|
60
|
+
if (!wallet) {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
return /* @__PURE__ */ React19.createElement(
|
|
64
|
+
"img",
|
|
65
|
+
{
|
|
66
|
+
"data-ui": "wallet-ui-icon",
|
|
67
|
+
src: wallet.icon,
|
|
68
|
+
alt: wallet.name,
|
|
69
|
+
className: `${size ?? "md"} ${className ?? ""}`,
|
|
70
|
+
...props
|
|
71
|
+
}
|
|
72
|
+
);
|
|
73
|
+
}
|
|
59
74
|
|
|
60
75
|
// src/base-dropdown.tsx
|
|
61
76
|
var BaseDropdownItemType = /* @__PURE__ */ ((BaseDropdownItemType2) => {
|
|
@@ -66,25 +81,25 @@ var BaseDropdownItemType = /* @__PURE__ */ ((BaseDropdownItemType2) => {
|
|
|
66
81
|
BaseDropdownItemType2["WalletNeeded"] = "WalletNeeded";
|
|
67
82
|
return BaseDropdownItemType2;
|
|
68
83
|
})(BaseDropdownItemType || {});
|
|
69
|
-
function BaseDropdown({ buttonProps, dropdown, showIndicator,
|
|
84
|
+
function BaseDropdown({ buttonProps, dropdown, items, showIndicator, size = "md" }) {
|
|
70
85
|
const api = dropdown.api;
|
|
71
86
|
const trigger = /* @__PURE__ */ React19.createElement(
|
|
72
87
|
BaseButton,
|
|
73
88
|
{
|
|
74
89
|
...api.getTriggerProps(),
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
rightSection: showIndicator ? /* @__PURE__ */ React19.createElement("span", { className: "wallet-actions" }, /* @__PURE__ */ React19.createElement("span", { ...api.getIndicatorProps(), className: "indicator" }, /* @__PURE__ */ React19.createElement(BaseDropdownChevronDown, { size: 12 }))) : null,
|
|
90
|
+
size,
|
|
91
|
+
rightSection: showIndicator ? /* @__PURE__ */ React19.createElement("span", { ...api.getIndicatorProps() }, /* @__PURE__ */ React19.createElement(BaseDropdownChevronDown, { size: 12 })) : null,
|
|
78
92
|
...buttonProps
|
|
79
93
|
}
|
|
80
94
|
);
|
|
81
|
-
return /* @__PURE__ */ React19.createElement("div", {
|
|
95
|
+
return /* @__PURE__ */ React19.createElement("div", { "data-ui": "base-dropdown" }, trigger, /* @__PURE__ */ React19.createElement("div", { ...api.getPositionerProps() }, /* @__PURE__ */ React19.createElement("div", { ...api.getContentProps(), "data-ui": "base-dropdown-list", "data-part": "content" }, items.map((item) => {
|
|
82
96
|
return /* @__PURE__ */ React19.createElement(
|
|
83
97
|
BaseDropdownItem,
|
|
84
98
|
{
|
|
85
99
|
...api.getItemProps({ value: item.value }),
|
|
86
100
|
key: item.value,
|
|
87
101
|
item,
|
|
102
|
+
size,
|
|
88
103
|
afterClick: () => {
|
|
89
104
|
if (item.disabled) {
|
|
90
105
|
return;
|
|
@@ -97,24 +112,34 @@ function BaseDropdown({ buttonProps, dropdown, showIndicator, items }) {
|
|
|
97
112
|
);
|
|
98
113
|
}))));
|
|
99
114
|
}
|
|
100
|
-
function BaseDropdownItem({ afterClick, item }) {
|
|
115
|
+
function BaseDropdownItem({ afterClick, item, size }) {
|
|
116
|
+
console.log("BaseDropdownItem", item, size);
|
|
101
117
|
if (!item.wallet) {
|
|
102
|
-
return /* @__PURE__ */ React19.createElement(BaseDropdownItemRender, { afterClick, item });
|
|
118
|
+
return /* @__PURE__ */ React19.createElement(BaseDropdownItemRender, { afterClick, item, size });
|
|
103
119
|
}
|
|
104
120
|
switch (item.type) {
|
|
105
121
|
case "Item" /* Item */:
|
|
106
|
-
return /* @__PURE__ */ React19.createElement(BaseDropdownItemRender, { afterClick, item });
|
|
122
|
+
return /* @__PURE__ */ React19.createElement(BaseDropdownItemRender, { afterClick, item, size });
|
|
107
123
|
case "WalletConnect" /* WalletConnect */:
|
|
108
|
-
return /* @__PURE__ */ React19.createElement(BaseDropdownItemWalletConnect, { afterClick, item, wallet: item.wallet });
|
|
124
|
+
return /* @__PURE__ */ React19.createElement(BaseDropdownItemWalletConnect, { afterClick, item, size, wallet: item.wallet });
|
|
109
125
|
case "WalletCopy" /* WalletCopy */:
|
|
110
|
-
return /* @__PURE__ */ React19.createElement(BaseDropdownItemRender, { afterClick, item });
|
|
126
|
+
return /* @__PURE__ */ React19.createElement(BaseDropdownItemRender, { afterClick, item, size });
|
|
111
127
|
case "WalletDisconnect" /* WalletDisconnect */:
|
|
112
|
-
return /* @__PURE__ */ React19.createElement(
|
|
128
|
+
return /* @__PURE__ */ React19.createElement(
|
|
129
|
+
BaseDropdownItemWalletDisconnect,
|
|
130
|
+
{
|
|
131
|
+
afterClick,
|
|
132
|
+
item,
|
|
133
|
+
size,
|
|
134
|
+
wallet: item.wallet
|
|
135
|
+
}
|
|
136
|
+
);
|
|
113
137
|
}
|
|
114
138
|
}
|
|
115
139
|
function BaseDropdownItemWalletConnect({
|
|
116
140
|
afterClick,
|
|
117
141
|
item,
|
|
142
|
+
size,
|
|
118
143
|
wallet
|
|
119
144
|
}) {
|
|
120
145
|
const { connect: connect3 } = useWalletUiWallet({ wallet });
|
|
@@ -127,14 +152,17 @@ function BaseDropdownItemWalletConnect({
|
|
|
127
152
|
handler: async () => {
|
|
128
153
|
await connect3();
|
|
129
154
|
return await item.handler();
|
|
130
|
-
}
|
|
131
|
-
|
|
155
|
+
},
|
|
156
|
+
leftSection: wallet ? /* @__PURE__ */ React19.createElement(WalletUiIcon, { wallet, size }) : void 0
|
|
157
|
+
},
|
|
158
|
+
size
|
|
132
159
|
}
|
|
133
160
|
);
|
|
134
161
|
}
|
|
135
162
|
function BaseDropdownItemWalletDisconnect({
|
|
136
163
|
afterClick,
|
|
137
164
|
item,
|
|
165
|
+
size,
|
|
138
166
|
wallet
|
|
139
167
|
}) {
|
|
140
168
|
const { disconnect } = useWalletUiWallet({ wallet });
|
|
@@ -148,11 +176,12 @@ function BaseDropdownItemWalletDisconnect({
|
|
|
148
176
|
await disconnect();
|
|
149
177
|
return await item.handler();
|
|
150
178
|
}
|
|
151
|
-
}
|
|
179
|
+
},
|
|
180
|
+
size
|
|
152
181
|
}
|
|
153
182
|
);
|
|
154
183
|
}
|
|
155
|
-
function BaseDropdownItemRender({ afterClick, item }) {
|
|
184
|
+
function BaseDropdownItemRender({ afterClick, item, size }) {
|
|
156
185
|
function onClick() {
|
|
157
186
|
if (item.disabled) {
|
|
158
187
|
return;
|
|
@@ -161,7 +190,7 @@ function BaseDropdownItemRender({ afterClick, item }) {
|
|
|
161
190
|
afterClick();
|
|
162
191
|
});
|
|
163
192
|
}
|
|
164
|
-
return /* @__PURE__ */ React19.createElement("div", {
|
|
193
|
+
return /* @__PURE__ */ React19.createElement("div", { "data-ui": "base-dropdown-item", className: size, "data-part": "item", onClick }, item.leftSection ? /* @__PURE__ */ React19.createElement("span", { "data-ui": "base-dropdown-item-left-section" }, item.leftSection) : null, item.label, item.rightSection ? /* @__PURE__ */ React19.createElement("span", { "data-ui": "base-dropdown-item-right-section" }, item.rightSection) : null);
|
|
165
194
|
}
|
|
166
195
|
function BaseDropdownChevronDown(props) {
|
|
167
196
|
return /* @__PURE__ */ React19.createElement(
|
|
@@ -232,26 +261,9 @@ var WalletUiClusterContext = createContext({});
|
|
|
232
261
|
function useWalletUiCluster() {
|
|
233
262
|
return useContext(WalletUiClusterContext);
|
|
234
263
|
}
|
|
235
|
-
function WalletUiIcon({ className, size, wallet, ...props }) {
|
|
236
|
-
if (!wallet) {
|
|
237
|
-
return null;
|
|
238
|
-
}
|
|
239
|
-
return /* @__PURE__ */ React19.createElement(
|
|
240
|
-
"img",
|
|
241
|
-
{
|
|
242
|
-
src: wallet.icon,
|
|
243
|
-
alt: wallet.name,
|
|
244
|
-
className: `wallet-ui-list-icon ${size ?? "md"} ${className ?? ""}`,
|
|
245
|
-
...props
|
|
246
|
-
}
|
|
247
|
-
);
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
// src/use-wallet-ui-dropdown.tsx
|
|
251
264
|
function getDropdownItemsWallets({
|
|
252
265
|
wallets,
|
|
253
|
-
connect: connect3
|
|
254
|
-
size
|
|
266
|
+
connect: connect3
|
|
255
267
|
}) {
|
|
256
268
|
return wallets.length ? wallets.map((wallet) => ({
|
|
257
269
|
handler: async () => {
|
|
@@ -263,7 +275,6 @@ function getDropdownItemsWallets({
|
|
|
263
275
|
await Promise.resolve();
|
|
264
276
|
},
|
|
265
277
|
label: wallet.name,
|
|
266
|
-
leftSection: /* @__PURE__ */ React19.createElement(WalletUiIcon, { wallet, size }),
|
|
267
278
|
type: "WalletConnect" /* WalletConnect */,
|
|
268
279
|
value: wallet.name,
|
|
269
280
|
wallet
|
|
@@ -282,9 +293,7 @@ function getDropdownItemsWallets({
|
|
|
282
293
|
function useWalletUiDropdown({ size = "md" } = {}) {
|
|
283
294
|
const dropdown = useBaseDropdown();
|
|
284
295
|
const { account, connect: connect3, copy, disconnect, connected, wallet, wallets } = useWalletUi();
|
|
285
|
-
const itemsWallets = useMemo(() => {
|
|
286
|
-
return getDropdownItemsWallets({ connect: connect3, size, wallets });
|
|
287
|
-
}, [wallets, size, connect3]);
|
|
296
|
+
const itemsWallets = useMemo(() => getDropdownItemsWallets({ connect: connect3, wallets }), [wallets, connect3]);
|
|
288
297
|
const itemsConnected = useMemo(
|
|
289
298
|
() => [
|
|
290
299
|
{
|
|
@@ -308,7 +317,7 @@ function useWalletUiDropdown({ size = "md" } = {}) {
|
|
|
308
317
|
},
|
|
309
318
|
...itemsWallets
|
|
310
319
|
],
|
|
311
|
-
[
|
|
320
|
+
[copy, disconnect, dropdown, itemsWallets]
|
|
312
321
|
);
|
|
313
322
|
const items = useMemo(() => {
|
|
314
323
|
return connected ? itemsConnected : itemsWallets;
|
|
@@ -558,7 +567,7 @@ function WalletUiClusterDropdown({ buttonProps, size = "md", ...props }) {
|
|
|
558
567
|
}
|
|
559
568
|
function WalletUiDropdown({ size = "md", ...props }) {
|
|
560
569
|
const { buttonProps, items, dropdown } = useWalletUiDropdown({ size });
|
|
561
|
-
return /* @__PURE__ */ React19.createElement(BaseDropdown, { ...props, buttonProps: { ...buttonProps
|
|
570
|
+
return /* @__PURE__ */ React19.createElement(BaseDropdown, { ...props, buttonProps: { ...buttonProps }, dropdown, items, size });
|
|
562
571
|
}
|
|
563
572
|
function WalletUiIconNoWallet({ size, ...props }) {
|
|
564
573
|
return /* @__PURE__ */ React19.createElement(BaseSvg, { size, sizes: { lg: 125, md: 100, sm: 75 }, fill: "none", viewBox: "0 0 97 96", ...props }, /* @__PURE__ */ React19.createElement("circle", { cx: "48.5", cy: "48", r: "48", fill: "url(#paint0_linear_880_5115)", fillOpacity: "0.1" }), /* @__PURE__ */ React19.createElement(
|
|
@@ -653,7 +662,7 @@ function WalletUiLabel({ className, size, wallet, ...props }) {
|
|
|
653
662
|
if (!wallet) {
|
|
654
663
|
return null;
|
|
655
664
|
}
|
|
656
|
-
return /* @__PURE__ */ React19.createElement("span", {
|
|
665
|
+
return /* @__PURE__ */ React19.createElement("span", { "data-ui": "wallet-ui-label", className: `${size ?? "md"} ${className ?? ""}`, ...props }, wallet.name);
|
|
657
666
|
}
|
|
658
667
|
function WalletUiListButton({ className, select, size = "md", wallet, ...props }) {
|
|
659
668
|
const [pending, setPending] = React19.useState(false);
|
|
@@ -672,18 +681,19 @@ function WalletUiListButton({ className, select, size = "md", wallet, ...props }
|
|
|
672
681
|
"button",
|
|
673
682
|
{
|
|
674
683
|
disabled: pending,
|
|
675
|
-
|
|
684
|
+
"data-ui": "wallet-ui-list-button",
|
|
685
|
+
className: `${size} ${pending ? "pending" : ""} ${className ?? ""}`,
|
|
676
686
|
onClick: handleSelect,
|
|
677
687
|
...props
|
|
678
688
|
},
|
|
679
|
-
/* @__PURE__ */ React19.createElement(WalletUiIcon, {
|
|
680
|
-
/* @__PURE__ */ React19.createElement(WalletUiLabel, {
|
|
689
|
+
/* @__PURE__ */ React19.createElement(WalletUiIcon, { wallet, size }),
|
|
690
|
+
/* @__PURE__ */ React19.createElement(WalletUiLabel, { wallet, size })
|
|
681
691
|
);
|
|
682
692
|
}
|
|
683
693
|
|
|
684
694
|
// src/wallet-ui-list.tsx
|
|
685
695
|
function WalletUiList({ className, select, size = "md", wallets, ...props }) {
|
|
686
|
-
return /* @__PURE__ */ React19.createElement("div", {
|
|
696
|
+
return /* @__PURE__ */ React19.createElement("div", { "data-ui": "wallet-ui-list", className: `${size} ${className ?? ""}`, ...props }, wallets.map((wallet) => /* @__PURE__ */ React19.createElement(WalletUiListButton, { key: wallet.name, select, size, wallet })));
|
|
687
697
|
}
|
|
688
698
|
function WalletUiModal({ size = "md", wallets, select, ...props }) {
|
|
689
699
|
return /* @__PURE__ */ React19.createElement(BaseModal, { description: "Connect a wallet on Solana to continue", size, ...props }, /* @__PURE__ */ React19.createElement(WalletUiList, { size, wallets, select }));
|