@mysten/dapp-kit 0.12.14 → 0.13.0

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.
Files changed (89) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/cjs/components/AccountDropdownMenu.css +2 -2
  3. package/dist/cjs/components/AccountDropdownMenu.css.css +1 -1
  4. package/dist/cjs/components/AccountDropdownMenu.css.css.map +1 -1
  5. package/dist/cjs/components/AccountDropdownMenu.css.js.map +1 -1
  6. package/dist/cjs/components/AccountDropdownMenu.css.map +1 -1
  7. package/dist/cjs/components/AccountDropdownMenu.js.map +1 -1
  8. package/dist/cjs/components/ConnectButton.css +3 -3
  9. package/dist/cjs/components/ConnectButton.css.map +1 -1
  10. package/dist/cjs/components/ConnectButton.js.map +1 -1
  11. package/dist/cjs/components/WalletProvider.d.ts +4 -4
  12. package/dist/cjs/components/WalletProvider.js +44 -44
  13. package/dist/cjs/components/WalletProvider.js.map +4 -4
  14. package/dist/cjs/components/connect-modal/ConnectModal.css +2 -2
  15. package/dist/cjs/components/connect-modal/ConnectModal.css.css +1 -1
  16. package/dist/cjs/components/connect-modal/ConnectModal.css.css.map +1 -1
  17. package/dist/cjs/components/connect-modal/ConnectModal.css.js.map +1 -1
  18. package/dist/cjs/components/connect-modal/ConnectModal.css.map +1 -1
  19. package/dist/cjs/components/connect-modal/ConnectModal.js.map +1 -1
  20. package/dist/cjs/components/connect-modal/views/ConnectionStatus.css +1 -1
  21. package/dist/cjs/components/connect-modal/views/ConnectionStatus.css.map +1 -1
  22. package/dist/cjs/components/connect-modal/views/ConnectionStatus.js.map +1 -1
  23. package/dist/cjs/components/connect-modal/views/GettingStarted.css +1 -1
  24. package/dist/cjs/components/connect-modal/views/GettingStarted.css.map +1 -1
  25. package/dist/cjs/components/connect-modal/views/GettingStarted.js.map +1 -1
  26. package/dist/cjs/components/ui/Button.css +1 -1
  27. package/dist/cjs/components/ui/Button.css.css +1 -1
  28. package/dist/cjs/components/ui/Button.css.css.map +1 -1
  29. package/dist/cjs/components/ui/Button.css.js.map +1 -1
  30. package/dist/cjs/components/ui/Button.css.map +1 -1
  31. package/dist/cjs/components/ui/Button.js.map +1 -1
  32. package/dist/cjs/constants/walletDefaults.js +1 -1
  33. package/dist/cjs/constants/walletDefaults.js.map +2 -2
  34. package/dist/cjs/hooks/wallet/useStashedWallet.d.ts +5 -0
  35. package/dist/cjs/hooks/wallet/{useZkSendWallet.js → useStashedWallet.js} +9 -9
  36. package/dist/cjs/hooks/wallet/useStashedWallet.js.map +7 -0
  37. package/dist/cjs/index.css +3 -3
  38. package/dist/cjs/index.css.map +1 -1
  39. package/dist/cjs/index.js +40 -40
  40. package/dist/cjs/index.js.map +4 -4
  41. package/dist/esm/components/AccountDropdownMenu.css +2 -2
  42. package/dist/esm/components/AccountDropdownMenu.css.css +1 -1
  43. package/dist/esm/components/AccountDropdownMenu.css.css.map +1 -1
  44. package/dist/esm/components/AccountDropdownMenu.css.js.map +1 -1
  45. package/dist/esm/components/AccountDropdownMenu.css.map +1 -1
  46. package/dist/esm/components/AccountDropdownMenu.js.map +1 -1
  47. package/dist/esm/components/ConnectButton.css +3 -3
  48. package/dist/esm/components/ConnectButton.css.map +1 -1
  49. package/dist/esm/components/ConnectButton.js.map +1 -1
  50. package/dist/esm/components/WalletProvider.d.ts +4 -4
  51. package/dist/esm/components/WalletProvider.js +42 -42
  52. package/dist/esm/components/WalletProvider.js.map +4 -4
  53. package/dist/esm/components/connect-modal/ConnectModal.css +2 -2
  54. package/dist/esm/components/connect-modal/ConnectModal.css.css +1 -1
  55. package/dist/esm/components/connect-modal/ConnectModal.css.css.map +1 -1
  56. package/dist/esm/components/connect-modal/ConnectModal.css.js.map +1 -1
  57. package/dist/esm/components/connect-modal/ConnectModal.css.map +1 -1
  58. package/dist/esm/components/connect-modal/ConnectModal.js.map +1 -1
  59. package/dist/esm/components/connect-modal/views/ConnectionStatus.css +1 -1
  60. package/dist/esm/components/connect-modal/views/ConnectionStatus.css.map +1 -1
  61. package/dist/esm/components/connect-modal/views/ConnectionStatus.js.map +1 -1
  62. package/dist/esm/components/connect-modal/views/GettingStarted.css +1 -1
  63. package/dist/esm/components/connect-modal/views/GettingStarted.css.map +1 -1
  64. package/dist/esm/components/connect-modal/views/GettingStarted.js.map +1 -1
  65. package/dist/esm/components/ui/Button.css +1 -1
  66. package/dist/esm/components/ui/Button.css.css +1 -1
  67. package/dist/esm/components/ui/Button.css.css.map +1 -1
  68. package/dist/esm/components/ui/Button.css.js.map +1 -1
  69. package/dist/esm/components/ui/Button.css.map +1 -1
  70. package/dist/esm/components/ui/Button.js.map +1 -1
  71. package/dist/esm/constants/walletDefaults.js +2 -2
  72. package/dist/esm/constants/walletDefaults.js.map +2 -2
  73. package/dist/esm/hooks/wallet/useStashedWallet.d.ts +5 -0
  74. package/dist/esm/hooks/wallet/{useZkSendWallet.js → useStashedWallet.js} +7 -7
  75. package/dist/esm/hooks/wallet/useStashedWallet.js.map +7 -0
  76. package/dist/esm/index.css +3 -3
  77. package/dist/esm/index.css.map +1 -1
  78. package/dist/esm/index.js +41 -41
  79. package/dist/esm/index.js.map +4 -4
  80. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  81. package/dist/tsconfig.tsbuildinfo +1 -1
  82. package/package.json +4 -4
  83. package/src/components/WalletProvider.tsx +9 -9
  84. package/src/constants/walletDefaults.ts +2 -2
  85. package/src/hooks/wallet/{useZkSendWallet.ts → useStashedWallet.ts} +6 -6
  86. package/dist/cjs/hooks/wallet/useZkSendWallet.d.ts +0 -5
  87. package/dist/cjs/hooks/wallet/useZkSendWallet.js.map +0 -7
  88. package/dist/esm/hooks/wallet/useZkSendWallet.d.ts +0 -5
  89. package/dist/esm/hooks/wallet/useZkSendWallet.js.map +0 -7
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/styling/StyleMarker.css.ts", "../../../src/components/ConnectButton.tsx", "../../../src/hooks/wallet/useWalletStore.ts", "../../../src/contexts/walletContext.ts", "../../../src/hooks/wallet/useCurrentAccount.ts", "../../../src/components/AccountDropdownMenu.tsx", "../../../src/hooks/useSuiClientQuery.ts", "../../../src/hooks/useSuiClient.ts", "../../../src/components/SuiClientProvider.tsx", "../../../src/hooks/useResolveSuiNSNames.ts", "../../../src/hooks/wallet/useAccounts.ts", "../../../src/hooks/wallet/useDisconnectWallet.ts", "../../../src/constants/walletMutationKeys.ts", "../../../src/errors/walletErrors.ts", "../../../src/hooks/wallet/useCurrentWallet.ts", "../../../src/hooks/wallet/useSwitchAccount.ts", "../../../src/components/AccountDropdownMenu.css.ts", "../../../src/components/icons/CheckIcon.tsx", "../../../src/components/icons/ChevronIcon.tsx", "../../../src/components/styling/StyleMarker.tsx", "../../../src/constants/styleDataAttribute.ts", "../../../src/components/ui/Button.tsx", "../../../src/components/ui/Button.css.ts", "../../../src/components/ui/Text.tsx", "../../../src/components/ui/Text.css.ts", "../../../src/components/connect-modal/ConnectModal.tsx", "../../../src/hooks/wallet/useConnectWallet.ts", "../../../src/utils/walletUtils.ts", "../../../src/components/icons/BackIcon.tsx", "../../../src/components/icons/CloseIcon.tsx", "../../../src/components/ui/Heading.tsx", "../../../src/components/ui/Heading.css.ts", "../../../src/components/ui/IconButton.tsx", "../../../src/components/ui/IconButton.css.ts", "../../../src/components/connect-modal/ConnectModal.css.ts", "../../../src/components/connect-modal/views/ConnectionStatus.css.ts", "../../../src/components/connect-modal/views/ConnectionStatus.tsx", "../../../src/components/connect-modal/InfoSection.css.ts", "../../../src/components/connect-modal/InfoSection.tsx", "../../../src/components/connect-modal/views/GettingStarted.css.ts", "../../../src/components/connect-modal/views/GettingStarted.tsx", "../../../src/components/connect-modal/views/WhatIsAWallet.css.ts", "../../../src/components/connect-modal/views/WhatIsAWallet.tsx", "../../../src/hooks/wallet/useWallets.ts", "../../../src/components/icons/SuiIcon.tsx", "../../../src/components/connect-modal/wallet-list/WalletList.css.ts", "../../../src/components/connect-modal/wallet-list/WalletListItem.tsx", "../../../src/components/connect-modal/wallet-list/WalletListItem.css.ts", "../../../src/components/connect-modal/wallet-list/WalletList.tsx"],
4
- "sourcesContent": ["import 'src/components/styling/StyleMarker.css.ts.vanilla.css?source=OndoZXJlKCopIHsKICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogIGNvbG9yOiB2YXIoLS1kYXBwLWtpdC1jb2xvcnMtYm9keSk7CiAgZm9udC1mYW1pbHk6IHZhcigtLWRhcHAta2l0LXR5cG9ncmFwaHktZm9udEZhbWlseSk7CiAgZm9udC1zaXplOiB2YXIoLS1kYXBwLWtpdC1mb250V2VpZ2h0cy1ub3JtYWwpOwogIGZvbnQtc3R5bGU6IHZhcigtLWRhcHAta2l0LXR5cG9ncmFwaHktZm9udFN0eWxlKTsKICBmb250LXdlaWdodDogdmFyKC0tZGFwcC1raXQtZm9udFdlaWdodHMtbm9ybWFsKTsKICBsaW5lLWhlaWdodDogdmFyKC0tZGFwcC1raXQtdHlwb2dyYXBoeS1saW5lSGVpZ2h0KTsKICBsZXR0ZXItc3BhY2luZzogdmFyKC0tZGFwcC1raXQtdHlwb2dyYXBoeS1sZXR0ZXJTcGFjaW5nKTsKfQo6d2hlcmUoYnV0dG9uKSB7CiAgYXBwZWFyYW5jZTogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBmb250LXNpemU6IGluaGVyaXQ7CiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7CiAgbGV0dGVyLXNwYWNpbmc6IGluaGVyaXQ7CiAgY29sb3I6IGluaGVyaXQ7CiAgYm9yZGVyOiAwOwogIHBhZGRpbmc6IDA7CiAgbWFyZ2luOiAwOwp9Cjp3aGVyZShhKSB7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGNvbG9yOiBpbmhlcml0OwogIG91dGxpbmU6IG5vbmU7Cn0KOndoZXJlKG9sLCB1bCkgewogIGxpc3Qtc3R5bGU6IG5vbmU7CiAgbWFyZ2luOiAwOwogIHBhZGRpbmc6IDA7Cn0KOndoZXJlKGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYpIHsKICBmb250LXNpemU6IGluaGVyaXQ7CiAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7CiAgbWFyZ2luOiAwOwp9';", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ButtonHTMLAttributes, ReactNode } from 'react';\n\nimport { useCurrentAccount } from '../hooks/wallet/useCurrentAccount.js';\nimport { AccountDropdownMenu } from './AccountDropdownMenu.js';\nimport { ConnectModal } from './connect-modal/ConnectModal.js';\nimport { StyleMarker } from './styling/StyleMarker.js';\nimport { Button } from './ui/Button.js';\n\ntype ConnectButtonProps = {\n\tconnectText?: ReactNode;\n} & ButtonHTMLAttributes<HTMLButtonElement>;\n\nexport function ConnectButton({\n\tconnectText = 'Connect Wallet',\n\t...buttonProps\n}: ConnectButtonProps) {\n\tconst currentAccount = useCurrentAccount();\n\treturn currentAccount ? (\n\t\t<AccountDropdownMenu currentAccount={currentAccount} />\n\t) : (\n\t\t<ConnectModal\n\t\t\ttrigger={\n\t\t\t\t<StyleMarker>\n\t\t\t\t\t<Button {...buttonProps}>{connectText}</Button>\n\t\t\t\t</StyleMarker>\n\t\t\t}\n\t\t/>\n\t);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useContext } from 'react';\nimport { useStore } from 'zustand';\n\nimport { WalletContext } from '../../contexts/walletContext.js';\nimport type { StoreState } from '../../walletStore.js';\n\nexport function useWalletStore<T>(selector: (state: StoreState) => T): T {\n\tconst store = useContext(WalletContext);\n\tif (!store) {\n\t\tthrow new Error(\n\t\t\t'Could not find WalletContext. Ensure that you have set up the WalletProvider.',\n\t\t);\n\t}\n\treturn useStore(store, selector);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { createContext } from 'react';\n\nimport type { WalletStore } from '../walletStore.js';\n\nexport const WalletContext = createContext<WalletStore | null>(null);\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletAccount } from '@mysten/wallet-standard';\n\nimport { useWalletStore } from './useWalletStore.js';\n\n/**\n * Retrieves the wallet account that is currently selected, if one exists.\n */\nexport function useCurrentAccount(): WalletAccount | null {\n\treturn useWalletStore((state) => state.currentAccount);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { formatAddress } from '@mysten/sui.js/utils';\nimport type { WalletAccount } from '@mysten/wallet-standard';\nimport * as DropdownMenu from '@radix-ui/react-dropdown-menu';\nimport clsx from 'clsx';\n\nimport { useResolveSuiNSName } from '../hooks/useResolveSuiNSNames.js';\nimport { useAccounts } from '../hooks/wallet/useAccounts.js';\nimport { useDisconnectWallet } from '../hooks/wallet/useDisconnectWallet.js';\nimport { useSwitchAccount } from '../hooks/wallet/useSwitchAccount.js';\nimport * as styles from './AccountDropdownMenu.css.js';\nimport { CheckIcon } from './icons/CheckIcon.js';\nimport { ChevronIcon } from './icons/ChevronIcon.js';\nimport { StyleMarker } from './styling/StyleMarker.js';\nimport { Button } from './ui/Button.js';\nimport { Text } from './ui/Text.js';\n\ntype AccountDropdownMenuProps = {\n\tcurrentAccount: WalletAccount;\n};\n\nexport function AccountDropdownMenu({ currentAccount }: AccountDropdownMenuProps) {\n\tconst { mutate: disconnectWallet } = useDisconnectWallet();\n\n\tconst { data: domain } = useResolveSuiNSName(\n\t\tcurrentAccount.label ? null : currentAccount.address,\n\t);\n\tconst accounts = useAccounts();\n\n\treturn (\n\t\t<DropdownMenu.Root modal={false}>\n\t\t\t<StyleMarker>\n\t\t\t\t<DropdownMenu.Trigger asChild>\n\t\t\t\t\t<Button size=\"lg\" className={styles.connectedAccount}>\n\t\t\t\t\t\t<Text mono weight=\"bold\">\n\t\t\t\t\t\t\t{currentAccount.label ?? domain ?? formatAddress(currentAccount.address)}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t<ChevronIcon />\n\t\t\t\t\t</Button>\n\t\t\t\t</DropdownMenu.Trigger>\n\t\t\t</StyleMarker>\n\t\t\t<DropdownMenu.Portal>\n\t\t\t\t<StyleMarker className={styles.menuContainer}>\n\t\t\t\t\t<DropdownMenu.Content className={styles.menuContent}>\n\t\t\t\t\t\t{accounts.map((account) => (\n\t\t\t\t\t\t\t<AccountDropdownMenuItem\n\t\t\t\t\t\t\t\tkey={account.address}\n\t\t\t\t\t\t\t\taccount={account}\n\t\t\t\t\t\t\t\tactive={currentAccount.address === account.address}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))}\n\t\t\t\t\t\t<DropdownMenu.Separator className={styles.separator} />\n\t\t\t\t\t\t<DropdownMenu.Item\n\t\t\t\t\t\t\tclassName={clsx(styles.menuItem)}\n\t\t\t\t\t\t\tonSelect={() => disconnectWallet()}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tDisconnect\n\t\t\t\t\t\t</DropdownMenu.Item>\n\t\t\t\t\t</DropdownMenu.Content>\n\t\t\t\t</StyleMarker>\n\t\t\t</DropdownMenu.Portal>\n\t\t</DropdownMenu.Root>\n\t);\n}\n\nexport function AccountDropdownMenuItem({\n\taccount,\n\tactive,\n}: {\n\taccount: WalletAccount;\n\tactive?: boolean;\n}) {\n\tconst { mutate: switchAccount } = useSwitchAccount();\n\tconst { data: domain } = useResolveSuiNSName(account.label ? null : account.address);\n\n\treturn (\n\t\t<DropdownMenu.Item\n\t\t\tclassName={clsx(styles.menuItem, styles.switchAccountMenuItem)}\n\t\t\tonSelect={() => switchAccount({ account })}\n\t\t>\n\t\t\t<Text mono>{account.label ?? domain ?? formatAddress(account.address)}</Text>\n\t\t\t{active ? <CheckIcon /> : null}\n\t\t</DropdownMenu.Item>\n\t);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { SuiClient } from '@mysten/sui.js/client';\nimport type { UseQueryOptions, UseQueryResult } from '@tanstack/react-query';\nimport { useQuery } from '@tanstack/react-query';\n\nimport type { PartialBy } from '../types/utilityTypes.js';\nimport { useSuiClientContext } from './useSuiClient.js';\n\nexport type SuiRpcMethodName = {\n\t[K in keyof SuiClient]: SuiClient[K] extends ((input: any) => Promise<any>) | (() => Promise<any>)\n\t\t? K\n\t\t: never;\n}[keyof SuiClient];\n\nexport type SuiRpcMethods = {\n\t[K in SuiRpcMethodName]: SuiClient[K] extends (input: infer P) => Promise<infer R>\n\t\t? {\n\t\t\t\tname: K;\n\t\t\t\tresult: R;\n\t\t\t\tparams: P;\n\t\t }\n\t\t: SuiClient[K] extends () => Promise<infer R>\n\t\t? {\n\t\t\t\tname: K;\n\t\t\t\tresult: R;\n\t\t\t\tparams: undefined | object;\n\t\t }\n\t\t: never;\n};\n\nexport type UseSuiClientQueryOptions<T extends keyof SuiRpcMethods, TData> = PartialBy<\n\tOmit<UseQueryOptions<SuiRpcMethods[T]['result'], Error, TData, unknown[]>, 'queryFn'>,\n\t'queryKey'\n>;\n\nexport function useSuiClientQuery<\n\tT extends keyof SuiRpcMethods,\n\tTData = SuiRpcMethods[T]['result'],\n>(\n\t...args: undefined extends SuiRpcMethods[T]['params']\n\t\t? [method: T, params?: SuiRpcMethods[T]['params'], options?: UseSuiClientQueryOptions<T, TData>]\n\t\t: [method: T, params: SuiRpcMethods[T]['params'], options?: UseSuiClientQueryOptions<T, TData>]\n): UseQueryResult<TData, Error> {\n\tconst [method, params, { queryKey = [], ...options } = {}] = args as [\n\t\tmethod: T,\n\t\tparams?: SuiRpcMethods[T]['params'],\n\t\toptions?: UseSuiClientQueryOptions<T, TData>,\n\t];\n\n\tconst suiContext = useSuiClientContext();\n\n\treturn useQuery({\n\t\t...options,\n\t\tqueryKey: [suiContext.network, method, params, ...queryKey],\n\t\tqueryFn: async () => {\n\t\t\treturn await suiContext.client[method](params as never);\n\t\t},\n\t});\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { SuiClient } from '@mysten/sui.js/client';\nimport { useContext } from 'react';\n\nimport { SuiClientContext } from '../components/SuiClientProvider.js';\n\nexport function useSuiClientContext() {\n\tconst suiClient = useContext(SuiClientContext);\n\n\tif (!suiClient) {\n\t\tthrow new Error(\n\t\t\t'Could not find SuiClientContext. Ensure that you have set up the SuiClientProvider',\n\t\t);\n\t}\n\n\treturn suiClient;\n}\n\nexport function useSuiClient(): SuiClient {\n\treturn useSuiClientContext().client;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { getFullnodeUrl, isSuiClient, SuiClient } from '@mysten/sui.js/client';\nimport type { SuiClientOptions } from '@mysten/sui.js/client';\nimport { createContext, useMemo, useState } from 'react';\n\nimport type { NetworkConfig } from '../hooks/networkConfig.js';\n\ntype NetworkConfigs<T extends NetworkConfig | SuiClient = NetworkConfig | SuiClient> = Record<\n\tstring,\n\tT\n>;\n\nexport interface SuiClientProviderContext {\n\tclient: SuiClient;\n\tnetworks: NetworkConfigs;\n\tnetwork: string;\n\tconfig: NetworkConfig | null;\n\tselectNetwork: (network: string) => void;\n}\n\nexport const SuiClientContext = createContext<SuiClientProviderContext | null>(null);\n\nexport type SuiClientProviderProps<T extends NetworkConfigs> = {\n\tcreateClient?: (name: keyof T, config: T[keyof T]) => SuiClient;\n\tchildren: React.ReactNode;\n\tnetworks?: T;\n\tonNetworkChange?: (network: keyof T & string) => void;\n} & (\n\t| {\n\t\t\tdefaultNetwork?: keyof T & string;\n\t\t\tnetwork?: never;\n\t }\n\t| {\n\t\t\tdefaultNetwork?: never;\n\t\t\tnetwork?: keyof T & string;\n\t }\n);\n\nconst DEFAULT_NETWORKS = {\n\tlocalnet: { url: getFullnodeUrl('localnet') },\n};\n\nconst DEFAULT_CREATE_CLIENT = function createClient(\n\t_name: string,\n\tconfig: NetworkConfig | SuiClient,\n) {\n\tif (isSuiClient(config)) {\n\t\treturn config;\n\t}\n\n\treturn new SuiClient(config);\n};\n\nexport function SuiClientProvider<T extends NetworkConfigs>(props: SuiClientProviderProps<T>) {\n\tconst { onNetworkChange, network, children } = props;\n\tconst networks = (props.networks ?? DEFAULT_NETWORKS) as T;\n\tconst createClient =\n\t\t(props.createClient as typeof DEFAULT_CREATE_CLIENT) ?? DEFAULT_CREATE_CLIENT;\n\n\tconst [selectedNetwork, setSelectedNetwork] = useState<keyof T & string>(\n\t\tprops.network ?? props.defaultNetwork ?? (Object.keys(networks)[0] as keyof T & string),\n\t);\n\n\tconst currentNetwork = props.network ?? selectedNetwork;\n\n\tconst client = useMemo(() => {\n\t\treturn createClient(currentNetwork, networks[currentNetwork]);\n\t}, [createClient, currentNetwork, networks]);\n\n\tconst ctx = useMemo((): SuiClientProviderContext => {\n\t\treturn {\n\t\t\tclient,\n\t\t\tnetworks,\n\t\t\tnetwork: currentNetwork,\n\t\t\tconfig:\n\t\t\t\tnetworks[currentNetwork] instanceof SuiClient\n\t\t\t\t\t? null\n\t\t\t\t\t: (networks[currentNetwork] as SuiClientOptions),\n\t\t\tselectNetwork: (newNetwork) => {\n\t\t\t\tif (currentNetwork === newNetwork) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!network && newNetwork !== selectedNetwork) {\n\t\t\t\t\tsetSelectedNetwork(newNetwork);\n\t\t\t\t}\n\n\t\t\t\tonNetworkChange?.(newNetwork);\n\t\t\t},\n\t\t};\n\t}, [client, networks, selectedNetwork, currentNetwork, network, onNetworkChange]);\n\n\treturn <SuiClientContext.Provider value={ctx}>{children}</SuiClientContext.Provider>;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ResolvedNameServiceNames } from '@mysten/sui.js/client';\nimport type { UseQueryOptions, UseQueryResult } from '@tanstack/react-query';\n\nimport { useSuiClientQuery } from './useSuiClientQuery.js';\n\nexport function useResolveSuiNSName(\n\taddress?: string | null,\n\toptions?: Omit<\n\t\tUseQueryOptions<ResolvedNameServiceNames, Error, string | null, unknown[]>,\n\t\t'queryFn' | 'queryKey' | 'select'\n\t>,\n): UseQueryResult<string | null, Error> {\n\treturn useSuiClientQuery(\n\t\t'resolveNameServiceNames',\n\t\t{\n\t\t\taddress: address!,\n\t\t\tlimit: 1,\n\t\t},\n\t\t{\n\t\t\t...options,\n\t\t\trefetchOnWindowFocus: false,\n\t\t\tretry: false,\n\t\t\tselect: (data) => (data.data.length > 0 ? data.data[0] : null),\n\t\t\tenabled: !!address && options?.enabled !== false,\n\t\t},\n\t);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletAccount } from '@mysten/wallet-standard';\n\nimport { useWalletStore } from './useWalletStore.js';\n\n/**\n * Retrieves a list of connected accounts authorized by the dApp.\n */\nexport function useAccounts(): readonly WalletAccount[] {\n\treturn useWalletStore((state) => state.accounts);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { walletMutationKeys } from '../../constants/walletMutationKeys.js';\nimport { WalletNotConnectedError } from '../../errors/walletErrors.js';\nimport { useCurrentWallet } from './useCurrentWallet.js';\nimport { useWalletStore } from './useWalletStore.js';\n\ntype UseDisconnectWalletError = WalletNotConnectedError | Error;\n\ntype UseDisconnectWalletMutationOptions = Omit<\n\tUseMutationOptions<void, UseDisconnectWalletError, void, unknown>,\n\t'mutationFn'\n>;\n\n/**\n * Mutation hook for disconnecting from an active wallet connection, if currently connected.\n */\nexport function useDisconnectWallet({\n\tmutationKey,\n\t...mutationOptions\n}: UseDisconnectWalletMutationOptions = {}): UseMutationResult<\n\tvoid,\n\tUseDisconnectWalletError,\n\tvoid\n> {\n\tconst { currentWallet } = useCurrentWallet();\n\tconst setWalletDisconnected = useWalletStore((state) => state.setWalletDisconnected);\n\n\treturn useMutation({\n\t\tmutationKey: walletMutationKeys.disconnectWallet(mutationKey),\n\t\tmutationFn: async () => {\n\t\t\tif (!currentWallet) {\n\t\t\t\tthrow new WalletNotConnectedError('No wallet is connected.');\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\t// Wallets aren't required to implement the disconnect feature, so we'll\n\t\t\t\t// optionally call the disconnect feature if it exists and reset the UI\n\t\t\t\t// state on the frontend at a minimum.\n\t\t\t\tawait currentWallet.features['standard:disconnect']?.disconnect();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Failed to disconnect the application from the current wallet.', error);\n\t\t\t}\n\n\t\t\tsetWalletDisconnected();\n\t\t},\n\t\t...mutationOptions,\n\t});\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { MutationKey } from '@tanstack/react-query';\n\nexport const walletMutationKeys = {\n\tall: { baseScope: 'wallet' },\n\tconnectWallet: formMutationKeyFn('connect-wallet'),\n\tautoconnectWallet: formMutationKeyFn('autoconnect-wallet'),\n\tdisconnectWallet: formMutationKeyFn('disconnect-wallet'),\n\tsignPersonalMessage: formMutationKeyFn('sign-personal-message'),\n\tsignTransactionBlock: formMutationKeyFn('sign-transaction-block'),\n\tsignAndExecuteTransactionBlock: formMutationKeyFn('sign-and-execute-transaction-block'),\n\tswitchAccount: formMutationKeyFn('switch-account'),\n};\n\nfunction formMutationKeyFn(baseEntity: string) {\n\treturn function mutationKeyFn(additionalKeys: MutationKey = []) {\n\t\treturn [{ ...walletMutationKeys.all, baseEntity }, ...additionalKeys];\n\t};\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * An error that is instantiated when someone attempts to perform an action that requires an active wallet connection.\n */\nexport class WalletNotConnectedError extends Error {}\n\n/**\n * An error that is instantiated when someone attempts to perform an action that requires a selected wallet account.\n * This is more of an edge case stemming from the fact that wallets don't technically require you to authorize any\n * accounts when connecting a wallet.\n */\nexport class WalletNoAccountSelectedError extends Error {}\n\n/**\n * An error that is instantiated when someone attempts to perform an action that isn't supported by a wallet.\n */\nexport class WalletFeatureNotSupportedError extends Error {}\n\n/**\n * An error that is instantiated when a wallet account can't be found for a specific wallet.\n */\nexport class WalletAccountNotFoundError extends Error {}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useWalletStore } from './useWalletStore.js';\n\n/**\n * Retrieves the wallet that is currently connected to the dApp, if one exists.\n */\nexport function useCurrentWallet() {\n\tconst currentWallet = useWalletStore((state) => state.currentWallet);\n\tconst connectionStatus = useWalletStore((state) => state.connectionStatus);\n\n\tswitch (connectionStatus) {\n\t\tcase 'connecting':\n\t\t\treturn {\n\t\t\t\tconnectionStatus,\n\t\t\t\tcurrentWallet: null,\n\t\t\t\tisDisconnected: false,\n\t\t\t\tisConnecting: true,\n\t\t\t\tisConnected: false,\n\t\t\t} as const;\n\t\tcase 'disconnected':\n\t\t\treturn {\n\t\t\t\tconnectionStatus,\n\t\t\t\tcurrentWallet: null,\n\t\t\t\tisDisconnected: true,\n\t\t\t\tisConnecting: false,\n\t\t\t\tisConnected: false,\n\t\t\t} as const;\n\t\tcase 'connected': {\n\t\t\treturn {\n\t\t\t\tconnectionStatus,\n\t\t\t\tcurrentWallet: currentWallet!,\n\t\t\t\tisDisconnected: false,\n\t\t\t\tisConnecting: false,\n\t\t\t\tisConnected: true,\n\t\t\t} as const;\n\t\t}\n\t}\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletAccount } from '@mysten/wallet-standard';\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { walletMutationKeys } from '../../constants/walletMutationKeys.js';\nimport { WalletAccountNotFoundError, WalletNotConnectedError } from '../../errors/walletErrors.js';\nimport { useCurrentWallet } from './useCurrentWallet.js';\nimport { useWalletStore } from './useWalletStore.js';\n\ntype SwitchAccountArgs = {\n\taccount: WalletAccount;\n};\n\ntype SwitchAccountResult = void;\n\ntype UseSwitchAccountError = WalletNotConnectedError | WalletAccountNotFoundError | Error;\n\ntype UseSwitchAccountMutationOptions = Omit<\n\tUseMutationOptions<SwitchAccountResult, UseSwitchAccountError, SwitchAccountArgs, unknown>,\n\t'mutationFn'\n>;\n\n/**\n * Mutation hook for switching to a specific wallet account.\n */\nexport function useSwitchAccount({\n\tmutationKey,\n\t...mutationOptions\n}: UseSwitchAccountMutationOptions = {}): UseMutationResult<\n\tSwitchAccountResult,\n\tUseSwitchAccountError,\n\tSwitchAccountArgs\n> {\n\tconst { currentWallet } = useCurrentWallet();\n\tconst setAccountSwitched = useWalletStore((state) => state.setAccountSwitched);\n\n\treturn useMutation({\n\t\tmutationKey: walletMutationKeys.switchAccount(mutationKey),\n\t\tmutationFn: async ({ account }) => {\n\t\t\tif (!currentWallet) {\n\t\t\t\tthrow new WalletNotConnectedError('No wallet is connected.');\n\t\t\t}\n\n\t\t\tconst accountToSelect = currentWallet.accounts.find(\n\t\t\t\t(walletAccount) => walletAccount.address === account.address,\n\t\t\t);\n\t\t\tif (!accountToSelect) {\n\t\t\t\tthrow new WalletAccountNotFoundError(\n\t\t\t\t\t`No account with address ${account.address} is connected to ${currentWallet.name}.`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tsetAccountSwitched(accountToSelect);\n\t\t},\n\t\t...mutationOptions,\n\t});\n}\n", "import 'src/components/AccountDropdownMenu.css.ts.vanilla.css?source=#H4sIAAAAAAAAA6VTy04CMRTd8xVdyqIEEBOtK8WNC1YujSGlvcxcKbe17fDQ+O92KiOEh484i5nkPs8590znRilbUbzz1mm7pBFQNVaWCFQEvUmOxxoX/RfTZW8txgrpBLt0q+vWe6tzrH2eXkNLUSKBb3p7ufeVI2lYCXbVPD9Oge3+fp6hMTgj14JNDSQQLH+5Rp8goyXBlDXVnOrMEnUsBetddl2unMsVLwGLMgrW734FfYHEo020Bp8hJ7VGKjY0dykzNrFeg+deaqyCYAvpzzjX0jk+w5jDyE0aCe1cLdWs8Imc5gmW9QcN24JhnQ9c74jQ/lad+wjzRprzLM0+7iokpAFMUkYwsgR10FbRpMtsAweCSoMFcUzjE0GVDgD+r8x/C/tRyyh5mU5i6rOAfspE/i6b85gOub6tYrR0GkBYYlTlJjPaQzM47q/nKkScrhOS7EbBgpMK+ATiEoBOCnYKATjpZbRff8ZF3trYsue2ng6lR5oJ1v2/kx6arbU0HwagDgr1AwAA';\nexport var connectedAccount = 'AccountDropdownMenu_connectedAccount__div2ql0';\nexport var menuContainer = 'AccountDropdownMenu_menuContainer__div2ql1';\nexport var menuContent = 'AccountDropdownMenu_menuContent__div2ql2';\nexport var menuItem = 'AccountDropdownMenu_menuItem__div2ql3';\nexport var separator = 'AccountDropdownMenu_separator__div2ql5';\nexport var switchAccountMenuItem = 'AccountDropdownMenu_switchAccountMenuItem__div2ql4';", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ComponentProps } from 'react';\n\nexport function CheckIcon(props: ComponentProps<'svg'>) {\n\treturn (\n\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width={16} height={16} fill=\"none\" {...props}>\n\t\t\t<path\n\t\t\t\tfill=\"currentColor\"\n\t\t\t\td=\"m11.726 5.048-4.73 5.156-1.722-1.879a.72.72 0 0 0-.529-.23.722.722 0 0 0-.525.24.858.858 0 0 0-.22.573.86.86 0 0 0 .211.576l2.255 2.458c.14.153.332.24.53.24.2 0 .391-.087.532-.24l5.261-5.735A.86.86 0 0 0 13 5.63a.858.858 0 0 0-.22-.572.722.722 0 0 0-.525-.24.72.72 0 0 0-.529.23Z\"\n\t\t\t/>\n\t\t</svg>\n\t);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ComponentProps } from 'react';\n\nexport function ChevronIcon(props: ComponentProps<'svg'>) {\n\treturn (\n\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width={16} height={16} fill=\"none\" {...props}>\n\t\t\t<path\n\t\t\t\tstroke=\"#A0B6C3\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\tstrokeWidth={1.5}\n\t\t\t\td=\"m4 6 4 4 4-4\"\n\t\t\t/>\n\t\t</svg>\n\t);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Slot } from '@radix-ui/react-slot';\nimport type { ComponentPropsWithoutRef, ElementRef, ReactNode } from 'react';\nimport { forwardRef } from 'react';\n\nimport { styleDataAttribute } from '../../constants/styleDataAttribute.js';\n\nimport './StyleMarker.css.js';\n\ntype StyleMarker = {\n\tchildren: ReactNode;\n};\n\nexport const StyleMarker = forwardRef<\n\tElementRef<typeof Slot>,\n\tComponentPropsWithoutRef<typeof Slot>\n>(({ children, ...props }, forwardedRef) => (\n\t<Slot ref={forwardedRef} {...props} {...styleDataAttribute}>\n\t\t{children}\n\t</Slot>\n));\nStyleMarker.displayName = 'StyleMarker';\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nexport const styleDataAttributeName = 'data-dapp-kit';\n\nexport const styleDataAttributeSelector = `[${styleDataAttributeName}]`;\n\nexport const styleDataAttribute = { [styleDataAttributeName]: '' };\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Slot } from '@radix-ui/react-slot';\nimport clsx from 'clsx';\nimport type { ButtonHTMLAttributes } from 'react';\nimport { forwardRef } from 'react';\n\nimport { buttonVariants } from './Button.css.js';\nimport type { ButtonVariants } from './Button.css.js';\n\ntype ButtonProps = {\n\tasChild?: boolean;\n} & ButtonHTMLAttributes<HTMLButtonElement> &\n\tButtonVariants;\n\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>(\n\t({ className, variant, size, asChild = false, ...props }, forwardedRef) => {\n\t\tconst Comp = asChild ? Slot : 'button';\n\t\treturn (\n\t\t\t<Comp\n\t\t\t\t{...props}\n\t\t\t\tclassName={clsx(buttonVariants({ variant, size }), className)}\n\t\t\t\tref={forwardedRef}\n\t\t\t/>\n\t\t);\n\t},\n);\nButton.displayName = 'Button';\n\nexport { Button };\n", "import 'src/components/ui/Button.css.ts.vanilla.css?source=#H4sIAAAAAAAAA62Tz1LCMBDG7zxFjnIIQxEdptz04hPosbNtQruSJjFJodXx3U1aOoAVhNFL0/n2z+/bbTN5qJxTMknb4xkMgnQ2SerILqK3KfkYEcLQagFNTFAKlJyuBK+XXgeBuaToeGljknHpuAnya2UdrhqaKa9IdxhaeYluOeaFlzdgbihloDVdo6Mh9tKGLC05w6ocL0efo8l5g7E3B6ngrHWqNGTovNPp5O5M8aZ7SbTBEkzTN4vaHilk69yoSjI/gVBmYHSf8Bjilu7adKxxmPPnwuxUeqpqagtgajuo6eRh0dWzxYXacPMfEz6FRpdYUJUL/0tvYdbBlWHc0C0yV8Qk0vVyL1rXCB4TqwSyA/mEyTa4M7hDXfoJvqdfPcqftnlE/3WbFt95UrIefXu4RQP+ntgBMci4v0SEaGAMZR6Tha5JdB+Wfp4n8p43v5gnwOT8GBdQZDb3Dw/8AmeLhNtrBAAA';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var buttonVariants = _7a468({defaultClassName:'Button_buttonVariants__x1s81q0',variantClassNames:{variant:{primary:'Button_buttonVariants_variant_primary__x1s81q1',outline:'Button_buttonVariants_variant_outline__x1s81q2'},size:{md:'Button_buttonVariants_size_md__x1s81q3',lg:'Button_buttonVariants_size_lg__x1s81q4'}},defaultVariants:{variant:'primary',size:'md'},compoundVariants:[]});", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Slot } from '@radix-ui/react-slot';\nimport clsx from 'clsx';\nimport { forwardRef } from 'react';\n\nimport { textVariants } from './Text.css.js';\nimport type { TextVariants } from './Text.css.js';\n\ntype TextAsChildProps = {\n\tasChild?: boolean;\n\tas?: never;\n};\n\ntype TextDivProps = { as: 'div'; asChild?: never };\n\ntype TextProps = (TextAsChildProps | TextDivProps) &\n\tReact.HTMLAttributes<HTMLDivElement> &\n\tTextVariants;\n\nconst Text = forwardRef<HTMLDivElement, TextProps>(\n\t(\n\t\t{\n\t\t\tchildren,\n\t\t\tclassName,\n\t\t\tasChild = false,\n\t\t\tas: Tag = 'div',\n\t\t\tsize,\n\t\t\tweight,\n\t\t\tcolor,\n\t\t\tmono,\n\t\t\t...textProps\n\t\t},\n\t\tforwardedRef,\n\t) => {\n\t\treturn (\n\t\t\t<Slot\n\t\t\t\t{...textProps}\n\t\t\t\tref={forwardedRef}\n\t\t\t\tclassName={clsx(textVariants({ size, weight, color, mono }), className)}\n\t\t\t>\n\t\t\t\t{asChild ? children : <Tag>{children}</Tag>}\n\t\t\t</Slot>\n\t\t);\n\t},\n);\nText.displayName = 'Text';\n\nexport { Text };\n", "import 'src/components/ui/Text.css.ts.vanilla.css?source=LlRleHRfdGV4dFZhcmlhbnRzX3NpemVfc21fXzJidjF1cjEgewogIGZvbnQtc2l6ZTogdmFyKC0tZGFwcC1raXQtZm9udFNpemVzLXNtYWxsKTsKfQouVGV4dF90ZXh0VmFyaWFudHNfd2VpZ2h0X25vcm1hbF9fMmJ2MXVyMiB7CiAgZm9udC13ZWlnaHQ6IHZhcigtLWRhcHAta2l0LWZvbnRXZWlnaHRzLW5vcm1hbCk7Cn0KLlRleHRfdGV4dFZhcmlhbnRzX3dlaWdodF9tZWRpdW1fXzJidjF1cjMgewogIGZvbnQtd2VpZ2h0OiB2YXIoLS1kYXBwLWtpdC1mb250V2VpZ2h0cy1tZWRpdW0pOwp9Ci5UZXh0X3RleHRWYXJpYW50c193ZWlnaHRfYm9sZF9fMmJ2MXVyNCB7CiAgZm9udC13ZWlnaHQ6IHZhcigtLWRhcHAta2l0LWZvbnRXZWlnaHRzLWJvbGQpOwp9Ci5UZXh0X3RleHRWYXJpYW50c19jb2xvcl9tdXRlZF9fMmJ2MXVyNSB7CiAgY29sb3I6IHZhcigtLWRhcHAta2l0LWNvbG9ycy1ib2R5TXV0ZWQpOwp9Ci5UZXh0X3RleHRWYXJpYW50c19jb2xvcl9kYW5nZXJfXzJidjF1cjYgewogIGNvbG9yOiB2YXIoLS1kYXBwLWtpdC1jb2xvcnMtYm9keURhbmdlcik7Cn0KLlRleHRfdGV4dFZhcmlhbnRzX21vbm9fdHJ1ZV9fMmJ2MXVyNyB7CiAgZm9udC1mYW1pbHk6IHVpLW1vbm9zcGFjZSwgU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCAiTGliZXJhdGlvbiBNb25vIiwgIkNvdXJpZXIgTmV3IiwgbW9ub3NwYWNlOwp9';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var textVariants = _7a468({defaultClassName:'Text__2bv1ur0',variantClassNames:{size:{sm:'Text_textVariants_size_sm__2bv1ur1'},weight:{normal:'Text_textVariants_weight_normal__2bv1ur2',medium:'Text_textVariants_weight_medium__2bv1ur3',bold:'Text_textVariants_weight_bold__2bv1ur4'},color:{muted:'Text_textVariants_color_muted__2bv1ur5',danger:'Text_textVariants_color_danger__2bv1ur6'},mono:{true:'Text_textVariants_mono_true__2bv1ur7'}},defaultVariants:{size:'sm',weight:'normal'},compoundVariants:[]});", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletWithRequiredFeatures } from '@mysten/wallet-standard';\nimport * as Dialog from '@radix-ui/react-dialog';\nimport clsx from 'clsx';\nimport { useState } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { useConnectWallet } from '../../hooks/wallet/useConnectWallet.js';\nimport { getWalletUniqueIdentifier } from '../../utils/walletUtils.js';\nimport { BackIcon } from '../icons/BackIcon.js';\nimport { CloseIcon } from '../icons/CloseIcon.js';\nimport { StyleMarker } from '../styling/StyleMarker.js';\nimport { Heading } from '../ui/Heading.js';\nimport { IconButton } from '../ui/IconButton.js';\nimport * as styles from './ConnectModal.css.js';\nimport { ConnectionStatus } from './views/ConnectionStatus.js';\nimport { GettingStarted } from './views/GettingStarted.js';\nimport { WhatIsAWallet } from './views/WhatIsAWallet.js';\nimport { WalletList } from './wallet-list/WalletList.js';\n\ntype ConnectModalView = 'getting-started' | 'what-is-a-wallet' | 'connection-status';\n\ntype ControlledModalProps = {\n\t/** The controlled open state of the dialog. */\n\topen: boolean;\n\n\t/** Event handler called when the open state of the dialog changes. */\n\tonOpenChange: (open: boolean) => void;\n\n\tdefaultOpen?: never;\n};\n\ntype UncontrolledModalProps = {\n\topen?: never;\n\n\tonOpenChange?: never;\n\n\t/** The open state of the dialog when it is initially rendered. Use when you do not need to control its open state. */\n\tdefaultOpen?: boolean;\n};\n\ntype ConnectModalProps = {\n\t/** The trigger button that opens the dialog. */\n\ttrigger: NonNullable<ReactNode>;\n} & (ControlledModalProps | UncontrolledModalProps);\n\nexport function ConnectModal({ trigger, open, defaultOpen, onOpenChange }: ConnectModalProps) {\n\tconst [isModalOpen, setModalOpen] = useState(open ?? defaultOpen);\n\tconst [currentView, setCurrentView] = useState<ConnectModalView>();\n\tconst [selectedWallet, setSelectedWallet] = useState<WalletWithRequiredFeatures>();\n\tconst { mutate, isError } = useConnectWallet();\n\n\tconst resetSelection = () => {\n\t\tsetSelectedWallet(undefined);\n\t\tsetCurrentView(undefined);\n\t};\n\n\tconst handleOpenChange = (open: boolean) => {\n\t\tif (!open) {\n\t\t\tresetSelection();\n\t\t}\n\t\tsetModalOpen(open);\n\t\tonOpenChange?.(open);\n\t};\n\n\tconst connectWallet = (wallet: WalletWithRequiredFeatures) => {\n\t\tsetCurrentView('connection-status');\n\t\tmutate(\n\t\t\t{ wallet },\n\t\t\t{\n\t\t\t\tonSuccess: () => handleOpenChange(false),\n\t\t\t},\n\t\t);\n\t};\n\n\tlet modalContent: ReactNode | undefined;\n\tswitch (currentView) {\n\t\tcase 'what-is-a-wallet':\n\t\t\tmodalContent = <WhatIsAWallet />;\n\t\t\tbreak;\n\t\tcase 'getting-started':\n\t\t\tmodalContent = <GettingStarted />;\n\t\t\tbreak;\n\t\tcase 'connection-status':\n\t\t\tmodalContent = (\n\t\t\t\t<ConnectionStatus\n\t\t\t\t\tselectedWallet={selectedWallet!}\n\t\t\t\t\thadConnectionError={isError}\n\t\t\t\t\tonRetryConnection={connectWallet}\n\t\t\t\t/>\n\t\t\t);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tmodalContent = <WhatIsAWallet />;\n\t}\n\n\treturn (\n\t\t<Dialog.Root open={open ?? isModalOpen} onOpenChange={handleOpenChange}>\n\t\t\t<Dialog.Trigger asChild>{trigger}</Dialog.Trigger>\n\t\t\t<Dialog.Portal>\n\t\t\t\t<StyleMarker>\n\t\t\t\t\t<Dialog.Overlay className={styles.overlay}>\n\t\t\t\t\t\t<Dialog.Content className={styles.content} aria-describedby={undefined}>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName={clsx(styles.walletListContainer, {\n\t\t\t\t\t\t\t\t\t[styles.walletListContainerWithViewSelected]: !!currentView,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<div className={styles.walletListContent}>\n\t\t\t\t\t\t\t\t\t<Dialog.Title className={styles.title} asChild>\n\t\t\t\t\t\t\t\t\t\t<Heading as=\"h2\">Connect a Wallet</Heading>\n\t\t\t\t\t\t\t\t\t</Dialog.Title>\n\t\t\t\t\t\t\t\t\t<WalletList\n\t\t\t\t\t\t\t\t\t\tselectedWalletName={getWalletUniqueIdentifier(selectedWallet)}\n\t\t\t\t\t\t\t\t\t\tonPlaceholderClick={() => setCurrentView('getting-started')}\n\t\t\t\t\t\t\t\t\t\tonSelect={(wallet) => {\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\tgetWalletUniqueIdentifier(selectedWallet) !==\n\t\t\t\t\t\t\t\t\t\t\t\tgetWalletUniqueIdentifier(wallet)\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\tsetSelectedWallet(wallet);\n\t\t\t\t\t\t\t\t\t\t\t\tconnectWallet(wallet);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tclassName={styles.whatIsAWalletButton}\n\t\t\t\t\t\t\t\t\tonClick={() => setCurrentView('what-is-a-wallet')}\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tWhat is a Wallet?\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName={clsx(styles.viewContainer, {\n\t\t\t\t\t\t\t\t\t[styles.selectedViewContainer]: !!currentView,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<div className={styles.backButtonContainer}>\n\t\t\t\t\t\t\t\t\t<IconButton type=\"button\" aria-label=\"Back\" onClick={() => resetSelection()}>\n\t\t\t\t\t\t\t\t\t\t<BackIcon />\n\t\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t{modalContent}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<Dialog.Close className={styles.closeButtonContainer} asChild>\n\t\t\t\t\t\t\t\t<IconButton type=\"button\" aria-label=\"Close\">\n\t\t\t\t\t\t\t\t\t<CloseIcon />\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t</Dialog.Close>\n\t\t\t\t\t\t</Dialog.Content>\n\t\t\t\t\t</Dialog.Overlay>\n\t\t\t\t</StyleMarker>\n\t\t\t</Dialog.Portal>\n\t\t</Dialog.Root>\n\t);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type {\n\tStandardConnectInput,\n\tStandardConnectOutput,\n\tWalletAccount,\n\tWalletWithRequiredFeatures,\n} from '@mysten/wallet-standard';\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { walletMutationKeys } from '../../constants/walletMutationKeys.js';\nimport { useWalletStore } from './useWalletStore.js';\n\ntype ConnectWalletArgs = {\n\t/** The wallet to connect to. */\n\twallet: WalletWithRequiredFeatures;\n\n\t/** An optional account address to connect to. Defaults to the first authorized account. */\n\taccountAddress?: string;\n} & StandardConnectInput;\n\ntype ConnectWalletResult = StandardConnectOutput;\n\ntype UseConnectWalletMutationOptions = Omit<\n\tUseMutationOptions<ConnectWalletResult, Error, ConnectWalletArgs, unknown>,\n\t'mutationFn'\n>;\n\n/**\n * Mutation hook for establishing a connection to a specific wallet.\n */\nexport function useConnectWallet({\n\tmutationKey,\n\t...mutationOptions\n}: UseConnectWalletMutationOptions = {}): UseMutationResult<\n\tConnectWalletResult,\n\tError,\n\tConnectWalletArgs,\n\tunknown\n> {\n\tconst setWalletConnected = useWalletStore((state) => state.setWalletConnected);\n\tconst setConnectionStatus = useWalletStore((state) => state.setConnectionStatus);\n\n\treturn useMutation({\n\t\tmutationKey: walletMutationKeys.connectWallet(mutationKey),\n\t\tmutationFn: async ({ wallet, accountAddress, ...connectArgs }) => {\n\t\t\ttry {\n\t\t\t\tsetConnectionStatus('connecting');\n\n\t\t\t\tconst connectResult = await wallet.features['standard:connect'].connect(connectArgs);\n\t\t\t\tconst connectedSuiAccounts = connectResult.accounts.filter((account) =>\n\t\t\t\t\taccount.chains.some((chain) => chain.split(':')[0] === 'sui'),\n\t\t\t\t);\n\t\t\t\tconst selectedAccount = getSelectedAccount(connectedSuiAccounts, accountAddress);\n\n\t\t\t\tsetWalletConnected(wallet, connectedSuiAccounts, selectedAccount);\n\n\t\t\t\treturn { accounts: connectedSuiAccounts };\n\t\t\t} catch (error) {\n\t\t\t\tsetConnectionStatus('disconnected');\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t},\n\t\t...mutationOptions,\n\t});\n}\n\nfunction getSelectedAccount(connectedAccounts: readonly WalletAccount[], accountAddress?: string) {\n\tif (connectedAccounts.length === 0) {\n\t\treturn null;\n\t}\n\n\tif (accountAddress) {\n\t\tconst selectedAccount = connectedAccounts.find((account) => account.address === accountAddress);\n\t\treturn selectedAccount ?? connectedAccounts[0];\n\t}\n\n\treturn connectedAccounts[0];\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type {\n\tMinimallyRequiredFeatures,\n\tWallet,\n\tWalletWithFeatures,\n} from '@mysten/wallet-standard';\nimport { getWallets, isWalletWithRequiredFeatureSet } from '@mysten/wallet-standard';\n\nexport function getRegisteredWallets<AdditionalFeatures extends Wallet['features']>(\n\tpreferredWallets: string[],\n\trequiredFeatures?: (keyof AdditionalFeatures)[],\n) {\n\tconst walletsApi = getWallets();\n\tconst wallets = walletsApi.get();\n\n\tconst suiWallets = wallets.filter(\n\t\t(wallet): wallet is WalletWithFeatures<MinimallyRequiredFeatures & AdditionalFeatures> =>\n\t\t\tisWalletWithRequiredFeatureSet(wallet, requiredFeatures),\n\t);\n\n\treturn [\n\t\t// Preferred wallets, in order:\n\t\t...(preferredWallets\n\t\t\t.map((name) => suiWallets.find((wallet) => wallet.name === name))\n\t\t\t.filter(Boolean) as WalletWithFeatures<MinimallyRequiredFeatures & AdditionalFeatures>[]),\n\n\t\t// Wallets in default order:\n\t\t...suiWallets.filter((wallet) => !preferredWallets.includes(wallet.name)),\n\t];\n}\n\nexport function getWalletUniqueIdentifier(wallet?: Wallet) {\n\treturn wallet?.id ?? wallet?.name;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ComponentProps } from 'react';\n\n// FIXME: Replace this with a 10x10 icon to match the CheckIcon, or alternatively make the CheckIcon bigger\n// Right now, the icons don't align on mobile :(\nexport function BackIcon(props: ComponentProps<'svg'>) {\n\treturn (\n\t\t<svg width={24} height={24} fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n\t\t\t<path\n\t\t\t\td=\"M7.57 12.262c0 .341.13.629.403.895l5.175 5.059c.204.205.45.307.751.307.609 0 1.101-.485 1.101-1.087 0-.293-.123-.574-.349-.8L10.14 12.27l4.511-4.375A1.13 1.13 0 0 0 15 7.087C15 6.485 14.508 6 13.9 6c-.295 0-.54.103-.752.308l-5.175 5.058c-.28.28-.404.56-.404.896Z\"\n\t\t\t\tfill=\"currentColor\"\n\t\t\t/>\n\t\t</svg>\n\t);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ComponentProps } from 'react';\n\nexport function CloseIcon(props: ComponentProps<'svg'>) {\n\treturn (\n\t\t<svg width={10} height={10} fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n\t\t\t<path\n\t\t\t\td=\"M9.708.292a.999.999 0 0 0-1.413 0l-3.289 3.29L1.717.291A.999.999 0 0 0 .305 1.705l3.289 3.289-3.29 3.289a.999.999 0 1 0 1.413 1.412l3.29-3.289 3.288 3.29a.999.999 0 0 0 1.413-1.413l-3.29-3.29 3.29-3.288a.999.999 0 0 0 0-1.413Z\"\n\t\t\t\tfill=\"currentColor\"\n\t\t\t/>\n\t\t</svg>\n\t);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Slot } from '@radix-ui/react-slot';\nimport clsx from 'clsx';\nimport { forwardRef } from 'react';\n\nimport { headingVariants } from './Heading.css.js';\nimport type { HeadingVariants } from './Heading.css.js';\n\ntype HeadingAsChildProps = {\n\tasChild?: boolean;\n\tas?: never;\n};\n\ntype HeadingAsProps = {\n\tas?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n\tasChild?: never;\n};\n\ntype HeadingProps = (HeadingAsChildProps | HeadingAsProps) &\n\tReact.HTMLAttributes<HTMLHeadingElement> &\n\tHeadingVariants;\n\nconst Heading = forwardRef<HTMLHeadingElement, HeadingProps>(\n\t(\n\t\t{\n\t\t\tchildren,\n\t\t\tclassName,\n\t\t\tasChild = false,\n\t\t\tas: Tag = 'h1',\n\t\t\tsize,\n\t\t\tweight,\n\t\t\ttruncate,\n\t\t\t...headingProps\n\t\t},\n\t\tforwardedRef,\n\t) => {\n\t\treturn (\n\t\t\t<Slot\n\t\t\t\t{...headingProps}\n\t\t\t\tref={forwardedRef}\n\t\t\t\tclassName={clsx(headingVariants({ size, weight, truncate }), className)}\n\t\t\t>\n\t\t\t\t{asChild ? children : <Tag>{children}</Tag>}\n\t\t\t</Slot>\n\t\t);\n\t},\n);\nHeading.displayName = 'Heading';\n\nexport { Heading };\n", "import 'src/components/ui/Heading.css.ts.vanilla.css?source=LkhlYWRpbmdfaGVhZGluZ1ZhcmlhbnRzX3NpemVfc21fXzFhYTgzNWsxIHsKICBmb250LXNpemU6IHZhcigtLWRhcHAta2l0LWZvbnRTaXplcy1zbWFsbCk7Cn0KLkhlYWRpbmdfaGVhZGluZ1ZhcmlhbnRzX3NpemVfbWRfXzFhYTgzNWsyIHsKICBmb250LXNpemU6IHZhcigtLWRhcHAta2l0LWZvbnRTaXplcy1tZWRpdW0pOwp9Ci5IZWFkaW5nX2hlYWRpbmdWYXJpYW50c19zaXplX2xnX18xYWE4MzVrMyB7CiAgZm9udC1zaXplOiB2YXIoLS1kYXBwLWtpdC1mb250U2l6ZXMtbGFyZ2UpOwp9Ci5IZWFkaW5nX2hlYWRpbmdWYXJpYW50c19zaXplX3hsX18xYWE4MzVrNCB7CiAgZm9udC1zaXplOiB2YXIoLS1kYXBwLWtpdC1mb250U2l6ZXMteGxhcmdlKTsKfQouSGVhZGluZ19oZWFkaW5nVmFyaWFudHNfd2VpZ2h0X25vcm1hbF9fMWFhODM1azUgewogIGZvbnQtd2VpZ2h0OiB2YXIoLS1kYXBwLWtpdC1mb250V2VpZ2h0cy1ub3JtYWwpOwp9Ci5IZWFkaW5nX2hlYWRpbmdWYXJpYW50c193ZWlnaHRfYm9sZF9fMWFhODM1azYgewogIGZvbnQtd2VpZ2h0OiB2YXIoLS1kYXBwLWtpdC1mb250V2VpZ2h0cy1ib2xkKTsKfQouSGVhZGluZ19oZWFkaW5nVmFyaWFudHNfdHJ1bmNhdGVfdHJ1ZV9fMWFhODM1azcgewogIG92ZXJmbG93OiBoaWRkZW47CiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQ==';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var headingVariants = _7a468({defaultClassName:'Heading__1aa835k0',variantClassNames:{size:{sm:'Heading_headingVariants_size_sm__1aa835k1',md:'Heading_headingVariants_size_md__1aa835k2',lg:'Heading_headingVariants_size_lg__1aa835k3',xl:'Heading_headingVariants_size_xl__1aa835k4'},weight:{normal:'Heading_headingVariants_weight_normal__1aa835k5',bold:'Heading_headingVariants_weight_bold__1aa835k6'},truncate:{true:'Heading_headingVariants_truncate_true__1aa835k7'}},defaultVariants:{size:'lg',weight:'bold'},compoundVariants:[]});", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Slot } from '@radix-ui/react-slot';\nimport clsx from 'clsx';\nimport type { ButtonHTMLAttributes } from 'react';\nimport { forwardRef } from 'react';\n\nimport * as styles from './IconButton.css.js';\n\ntype IconButtonProps = {\n\tasChild?: boolean;\n\t'aria-label': string;\n} & ButtonHTMLAttributes<HTMLButtonElement>;\n\nconst IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(\n\t({ className, asChild = false, ...props }, forwardedRef) => {\n\t\tconst Comp = asChild ? Slot : 'button';\n\t\treturn <Comp {...props} className={clsx(styles.container, className)} ref={forwardedRef} />;\n\t},\n);\nIconButton.displayName = 'Button';\n\nexport { IconButton };\n", "import 'src/components/ui/IconButton.css.ts.vanilla.css?source=Lkljb25CdXR0b25fY29udGFpbmVyX19zNm43YnEwIHsKICBib3JkZXItcmFkaXVzOiA5OTk5cHg7CiAgcGFkZGluZzogOHB4OwogIGNvbG9yOiB2YXIoLS1kYXBwLWtpdC1jb2xvcnMtaWNvbkJ1dHRvbik7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZGFwcC1raXQtYmFja2dyb3VuZENvbG9ycy1pY29uQnV0dG9uKTsKfQouSWNvbkJ1dHRvbl9jb250YWluZXJfX3M2bjdicTA6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWRhcHAta2l0LWJhY2tncm91bmRDb2xvcnMtaWNvbkJ1dHRvbkhvdmVyKTsKfQ==';\nexport var container = 'IconButton_container__s6n7bq0';", "import 'src/components/connect-modal/ConnectModal.css.ts.vanilla.css?source=#H4sIAAAAAAAAA61UTW/bMAy951foMiAFpsLpmjZ1Ltt6GrBhAwqsx0KxmJiLLBmS8tEO+e+TZDlpajUJkPWQ2pT5yPf4qMt7JSUU9ofiTDypJWjBnp+eZi+jl7uM/O0RMmHFfKbVQnJaKKF0TpZM9ynlrK7pHC3dfXDvzw2tPNbPBupiHCG4VjWdorCQQBCLVFqtDFpUMidTXAP3IZQGbE4y//xCUXJY5+Su/Rv3Nr3LPUIWrYBIZxDo1IxzlDMqYOqARvW6m1QoaUHamHZ1jgq/NFZMRxWU5qCpZhwXppPvw0jXgukZhM/TZYoGfKL4uxpNlLWqysngxpMjpGHavmmcla9eOZra6e3SBYSA/085aqdGgHUFF5X0J38WxuL0mUZ5cmJqVgCdgF0BhC+8faZCrXJSIudNrEJJS2iKDrNlGWJsvY2NhrvYCrktc3KbZamxrEpmv5kvj0wIsF8XjqSMI/p0zogewBHi7ZCiPVqB3vawRFi5gGUoQcfq16H6VkipJOwhXWX1TllX38kz6CIbEO4Z+O9EheF+hWZUbwE8u0aVt+k3jfG3TmET44ZqQ5dW1bsOG6dcJdUvhDKQxr89hp/0Xme8Ya7f0dj7vf0bpcgf8um+zoTMmKd43bTQmcrZi32Yx2ud7tJMju/VqVxPaOURbekt9hDtFltjKQ9vep8r4MiIKbTrhDDJSd/vc7unN+76vAiZxy/QLgvX9TgcRLhBln1oAsE0w/atceX21WomzVRpd8OFR8Es9Kk7/kj8b9jiTaelY5dHYoG7IO9vf2Ks3fRjG3pSD4fX5D/dgsfKdl19YLzhYMIMGr+Gce32rJu9iphSo5zH2El9HLR0cjCbf+XuA2j2CAAA';\nexport var backButtonContainer = 'ConnectModal_backButtonContainer__gz8z96';\nexport var closeButtonContainer = 'ConnectModal_closeButtonContainer__gz8z97';\nexport var content = 'ConnectModal_content__gz8z92';\nexport var overlay = 'ConnectModal_overlay__gz8z90';\nexport var selectedViewContainer = 'ConnectModal_selectedViewContainer__gz8z95';\nexport var title = 'ConnectModal_title__gz8z91';\nexport var viewContainer = 'ConnectModal_viewContainer__gz8z94';\nexport var walletListContainer = 'ConnectModal_walletListContainer__gz8z99';\nexport var walletListContainerWithViewSelected = 'ConnectModal_walletListContainerWithViewSelected__gz8z9a';\nexport var walletListContent = 'ConnectModal_walletListContent__gz8z98';\nexport var whatIsAWalletButton = 'ConnectModal_whatIsAWalletButton__gz8z93';", "import 'src/components/connect-modal/views/ConnectionStatus.css.ts.vanilla.css?source=LkNvbm5lY3Rpb25TdGF0dXNfY29udGFpbmVyX19uY2ttMmQwIHsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICB3aWR0aDogMTAwJTsKfQouQ29ubmVjdGlvblN0YXR1c193YWxsZXRJY29uX19uY2ttMmQxIHsKICBvYmplY3QtZml0OiBjb3ZlcjsKICB3aWR0aDogNzJweDsKICBoZWlnaHQ6IDcycHg7CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tZGFwcC1raXQtcmFkaWktbGFyZ2UpOwp9Ci5Db25uZWN0aW9uU3RhdHVzX3RpdGxlX19uY2ttMmQyIHsKICBtYXJnaW4tdG9wOiAxMnB4Owp9Ci5Db25uZWN0aW9uU3RhdHVzX2Nvbm5lY3Rpb25TdGF0dXNfX25ja20yZDMgewogIG1hcmdpbi10b3A6IDRweDsKfQouQ29ubmVjdGlvblN0YXR1c19yZXRyeUJ1dHRvbkNvbnRhaW5lcl9fbmNrbTJkNCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGJvdHRvbTogMjBweDsKICByaWdodDogMjBweDsKfQ==';\nexport var connectionStatus = 'ConnectionStatus_connectionStatus__nckm2d3';\nexport var container = 'ConnectionStatus_container__nckm2d0';\nexport var retryButtonContainer = 'ConnectionStatus_retryButtonContainer__nckm2d4';\nexport var title = 'ConnectionStatus_title__nckm2d2';\nexport var walletIcon = 'ConnectionStatus_walletIcon__nckm2d1';", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletWithRequiredFeatures } from '@mysten/wallet-standard';\n\nimport { Button } from '../../ui/Button.js';\nimport { Heading } from '../../ui/Heading.js';\nimport { Text } from '../../ui/Text.js';\nimport * as styles from './ConnectionStatus.css.js';\n\ntype ConnectionStatusProps = {\n\tselectedWallet: WalletWithRequiredFeatures;\n\thadConnectionError: boolean;\n\tonRetryConnection: (selectedWallet: WalletWithRequiredFeatures) => void;\n};\n\nexport function ConnectionStatus({\n\tselectedWallet,\n\thadConnectionError,\n\tonRetryConnection,\n}: ConnectionStatusProps) {\n\treturn (\n\t\t<div className={styles.container}>\n\t\t\t<img\n\t\t\t\tclassName={styles.walletIcon}\n\t\t\t\tsrc={selectedWallet.icon}\n\t\t\t\talt={`${selectedWallet.name} logo`}\n\t\t\t/>\n\t\t\t<div className={styles.title}>\n\t\t\t\t<Heading as=\"h2\" size=\"xl\">\n\t\t\t\t\tOpening {selectedWallet.name}\n\t\t\t\t</Heading>\n\t\t\t</div>\n\t\t\t<div className={styles.connectionStatus}>\n\t\t\t\t{hadConnectionError ? (\n\t\t\t\t\t<Text color=\"danger\">Connection failed</Text>\n\t\t\t\t) : (\n\t\t\t\t\t<Text color=\"muted\">Confirm connection in the wallet...</Text>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t{hadConnectionError ? (\n\t\t\t\t<div className={styles.retryButtonContainer}>\n\t\t\t\t\t<Button type=\"button\" variant=\"outline\" onClick={() => onRetryConnection(selectedWallet)}>\n\t\t\t\t\t\tRetry Connection\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t) : null}\n\t\t</div>\n\t);\n}\n", "import 'src/components/connect-modal/InfoSection.css.ts.vanilla.css?source=LkluZm9TZWN0aW9uX2NvbnRhaW5lcl9fMXd0aW9pNzAgewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBnYXA6IDRweDsKfQ==';\nexport var container = 'InfoSection_container__1wtioi70';", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Heading } from '../ui/Heading.js';\nimport { Text } from '../ui/Text.js';\nimport * as styles from './InfoSection.css.js';\n\ntype InfoSectionProps = {\n\ttitle: string;\n\tchildren: string;\n};\n\nexport function InfoSection({ title, children }: InfoSectionProps) {\n\treturn (\n\t\t<section className={styles.container}>\n\t\t\t<Heading as=\"h3\" size=\"sm\" weight=\"normal\">\n\t\t\t\t{title}\n\t\t\t</Heading>\n\t\t\t<Text weight=\"medium\" color=\"muted\">\n\t\t\t\t{children}\n\t\t\t</Text>\n\t\t</section>\n\t);\n}\n", "import 'src/components/connect-modal/views/GettingStarted.css.ts.vanilla.css?source=LkdldHRpbmdTdGFydGVkX2NvbnRhaW5lcl9fMWZwMDdlMTAgewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBhbGlnbi1pdGVtczogY2VudGVyOwp9Ci5HZXR0aW5nU3RhcnRlZF9jb250ZW50X18xZnAwN2UxMSB7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIGZsZXgtZ3JvdzogMTsKICBnYXA6IDIwcHg7CiAgcGFkZGluZzogNDBweDsKfQouR2V0dGluZ1N0YXJ0ZWRfaW5zdGFsbEJ1dHRvbkNvbnRhaW5lcl9fMWZwMDdlMTIgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBib3R0b206IDIwcHg7CiAgcmlnaHQ6IDIwcHg7Cn0=';\nexport var container = 'GettingStarted_container__1fp07e10';\nexport var content = 'GettingStarted_content__1fp07e11';\nexport var installButtonContainer = 'GettingStarted_installButtonContainer__1fp07e12';", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Button } from '../../ui/Button.js';\nimport { Heading } from '../../ui/Heading.js';\nimport { InfoSection } from '../InfoSection.js';\nimport * as styles from './GettingStarted.css.js';\n\nexport function GettingStarted() {\n\treturn (\n\t\t<div className={styles.container}>\n\t\t\t<Heading as=\"h2\">Get Started with Sui</Heading>\n\t\t\t<div className={styles.content}>\n\t\t\t\t<InfoSection title=\"Install the Sui Wallet Extension\">\n\t\t\t\t\tWe recommend pinning Sui Wallet to your taskbar for quicker access.\n\t\t\t\t</InfoSection>\n\t\t\t\t<InfoSection title=\"Create or Import a Wallet\">\n\t\t\t\t\tBe sure to back up your wallet using a secure method. Never share your secret phrase with\n\t\t\t\t\tanyone.\n\t\t\t\t</InfoSection>\n\t\t\t\t<InfoSection title=\"Refresh Your Browser\">\n\t\t\t\t\tOnce you set up your wallet, refresh this window browser to load up the extension.\n\t\t\t\t</InfoSection>\n\t\t\t\t<div className={styles.installButtonContainer}>\n\t\t\t\t\t<Button variant=\"outline\" asChild>\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\thref=\"https://chrome.google.com/webstore/detail/sui-wallet/opcgpfmipidbgpenhmajoajpbobppdil\"\n\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\trel=\"noreferrer\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tInstall Wallet Extension\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n", "import 'src/components/connect-modal/views/WhatIsAWallet.css.ts.vanilla.css?source=LldoYXRJc0FXYWxsZXRfY29udGFpbmVyX18xa3Rwa3E5MCB7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KLldoYXRJc0FXYWxsZXRfY29udGVudF9fMWt0cGtxOTEgewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBmbGV4LWdyb3c6IDE7CiAgZ2FwOiAyMHB4OwogIHBhZGRpbmc6IDQwcHg7Cn0=';\nexport var container = 'WhatIsAWallet_container__1ktpkq90';\nexport var content = 'WhatIsAWallet_content__1ktpkq91';", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Heading } from '../../ui/Heading.js';\nimport { InfoSection } from '../InfoSection.js';\nimport * as styles from './WhatIsAWallet.css.js';\n\nexport function WhatIsAWallet() {\n\treturn (\n\t\t<div className={styles.container}>\n\t\t\t<Heading as=\"h2\">What is a Wallet</Heading>\n\t\t\t<div className={styles.content}>\n\t\t\t\t<InfoSection title=\"Easy Login\">\n\t\t\t\t\tNo need to create new accounts and passwords for every website. Just connect your wallet\n\t\t\t\t\tand get going.\n\t\t\t\t</InfoSection>\n\t\t\t\t<InfoSection title=\"Store your Digital Assets\">\n\t\t\t\t\tSend, receive, store, and display your digital assets like NFTs & coins.\n\t\t\t\t</InfoSection>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useWalletStore } from './useWalletStore.js';\n\n/**\n * Retrieves a list of registered wallets available to the dApp sorted by preference.\n */\nexport function useWallets() {\n\treturn useWalletStore((state) => state.wallets);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ComponentProps } from 'react';\n\nexport function SuiIcon(props: ComponentProps<'svg'>) {\n\treturn (\n\t\t<svg width={28} height={28} fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n\t\t\t<rect width={28} height={28} rx={6} fill=\"#6FBCF0\" />\n\t\t\t<path\n\t\t\t\tfillRule=\"evenodd\"\n\t\t\t\tclipRule=\"evenodd\"\n\t\t\t\td=\"M7.942 20.527A6.875 6.875 0 0 0 13.957 24c2.51 0 4.759-1.298 6.015-3.473a6.875 6.875 0 0 0 0-6.945l-5.29-9.164a.837.837 0 0 0-1.45 0l-5.29 9.164a6.875 6.875 0 0 0 0 6.945Zm4.524-11.75 1.128-1.953a.418.418 0 0 1 .725 0l4.34 7.516a5.365 5.365 0 0 1 .449 4.442 4.675 4.675 0 0 0-.223-.73c-.599-1.512-1.954-2.68-4.029-3.47-1.426-.54-2.336-1.336-2.706-2.364-.476-1.326.021-2.77.316-3.44Zm-1.923 3.332L9.255 14.34a5.373 5.373 0 0 0 0 5.43 5.373 5.373 0 0 0 4.702 2.714 5.38 5.38 0 0 0 3.472-1.247c.125-.314.51-1.462.034-2.646-.44-1.093-1.5-1.965-3.15-2.594-1.864-.707-3.076-1.811-3.6-3.28a4.601 4.601 0 0 1-.17-.608Z\"\n\t\t\t\tfill=\"#fff\"\n\t\t\t/>\n\t\t</svg>\n\t);\n}\n", "import 'src/components/connect-modal/wallet-list/WalletList.css.ts.vanilla.css?source=LldhbGxldExpc3RfY29udGFpbmVyX18xdjJzNmN6MCB7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIGdhcDogNHB4Owp9';\nexport var container = 'WalletList_container__1v2s6cz0';", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { clsx } from 'clsx';\nimport type { ReactNode } from 'react';\n\nimport { Heading } from '../../ui/Heading.js';\nimport * as styles from './WalletListItem.css.js';\n\ntype WalletListItemProps = {\n\tname: string;\n\ticon: ReactNode;\n\tisSelected?: boolean;\n\tonClick: () => void;\n};\n\nexport function WalletListItem({ name, icon, onClick, isSelected = false }: WalletListItemProps) {\n\treturn (\n\t\t<li className={styles.container}>\n\t\t\t<button\n\t\t\t\tclassName={clsx(styles.walletItem, { [styles.selectedWalletItem]: isSelected })}\n\t\t\t\ttype=\"button\"\n\t\t\t\tonClick={onClick}\n\t\t\t>\n\t\t\t\t{typeof icon === 'string' ? (\n\t\t\t\t\t<img className={styles.walletIcon} src={icon} alt={`${name} logo`} />\n\t\t\t\t) : (\n\t\t\t\t\ticon\n\t\t\t\t)}\n\t\t\t\t<Heading size=\"md\" truncate asChild>\n\t\t\t\t\t<div>{name}</div>\n\t\t\t\t</Heading>\n\t\t\t</button>\n\t\t</li>\n\t);\n}\n", "import 'src/components/connect-modal/wallet-list/WalletListItem.css.ts.vanilla.css?source=LldhbGxldExpc3RJdGVtX2NvbnRhaW5lcl9fMWRxcXRxczAgewogIGRpc3BsYXk6IGZsZXg7Cn0KLldhbGxldExpc3RJdGVtX3dhbGxldEl0ZW1fXzFkcXF0cXMxIHsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZmxleC1ncm93OiAxOwogIHBhZGRpbmc6IDhweDsKICBnYXA6IDhweDsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1kYXBwLWtpdC1yYWRpaS1sYXJnZSk7Cn0KLldhbGxldExpc3RJdGVtX3dhbGxldEl0ZW1fXzFkcXF0cXMxOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1kYXBwLWtpdC1iYWNrZ3JvdW5kQ29sb3JzLXdhbGxldEl0ZW1Ib3Zlcik7Cn0KLldhbGxldExpc3RJdGVtX3NlbGVjdGVkV2FsbGV0SXRlbV9fMWRxcXRxczIgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWRhcHAta2l0LWJhY2tncm91bmRDb2xvcnMtd2FsbGV0SXRlbVNlbGVjdGVkKTsKICBib3gtc2hhZG93OiAwcHggMnB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMDUpOwp9Ci5XYWxsZXRMaXN0SXRlbV93YWxsZXRJY29uX18xZHFxdHFzMyB7CiAgd2lkdGg6IDI4cHg7CiAgaGVpZ2h0OiAyOHB4OwogIGZsZXgtc2hyaW5rOiAwOwogIG9iamVjdC1maXQ6IGNvdmVyOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLWRhcHAta2l0LXJhZGlpLXNtYWxsKTsKfQ==';\nexport var container = 'WalletListItem_container__1dqqtqs0';\nexport var selectedWalletItem = 'WalletListItem_selectedWalletItem__1dqqtqs2';\nexport var walletIcon = 'WalletListItem_walletIcon__1dqqtqs3';\nexport var walletItem = 'WalletListItem_walletItem__1dqqtqs1';", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletWithRequiredFeatures } from '@mysten/wallet-standard';\n\nimport { useWallets } from '../../../hooks/wallet/useWallets.js';\nimport { getWalletUniqueIdentifier } from '../../../utils/walletUtils.js';\nimport { SuiIcon } from '../../icons/SuiIcon.js';\nimport * as styles from './WalletList.css.js';\nimport { WalletListItem } from './WalletListItem.js';\n\ntype WalletListProps = {\n\tselectedWalletName?: string;\n\tonPlaceholderClick: () => void;\n\tonSelect: (wallet: WalletWithRequiredFeatures) => void;\n};\n\nexport function WalletList({ selectedWalletName, onPlaceholderClick, onSelect }: WalletListProps) {\n\tconst wallets = useWallets();\n\treturn (\n\t\t<ul className={styles.container}>\n\t\t\t{wallets.length > 0 ? (\n\t\t\t\twallets.map((wallet) => (\n\t\t\t\t\t<WalletListItem\n\t\t\t\t\t\tkey={getWalletUniqueIdentifier(wallet)}\n\t\t\t\t\t\tname={wallet.name}\n\t\t\t\t\t\ticon={wallet.icon}\n\t\t\t\t\t\tisSelected={getWalletUniqueIdentifier(wallet) === selectedWalletName}\n\t\t\t\t\t\tonClick={() => onSelect(wallet)}\n\t\t\t\t\t/>\n\t\t\t\t))\n\t\t\t) : (\n\t\t\t\t<WalletListItem\n\t\t\t\t\tname=\"Sui Wallet\"\n\t\t\t\t\ticon={<SuiIcon />}\n\t\t\t\t\tonClick={onPlaceholderClick}\n\t\t\t\t\tisSelected\n\t\t\t\t/>\n\t\t\t)}\n\t\t</ul>\n\t);\n}\n"],
4
+ "sourcesContent": ["import 'src/components/styling/StyleMarker.css.ts.vanilla.css?source=OndoZXJlKCopIHsKICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogIGNvbG9yOiB2YXIoLS1kYXBwLWtpdC1jb2xvcnMtYm9keSk7CiAgZm9udC1mYW1pbHk6IHZhcigtLWRhcHAta2l0LXR5cG9ncmFwaHktZm9udEZhbWlseSk7CiAgZm9udC1zaXplOiB2YXIoLS1kYXBwLWtpdC1mb250V2VpZ2h0cy1ub3JtYWwpOwogIGZvbnQtc3R5bGU6IHZhcigtLWRhcHAta2l0LXR5cG9ncmFwaHktZm9udFN0eWxlKTsKICBmb250LXdlaWdodDogdmFyKC0tZGFwcC1raXQtZm9udFdlaWdodHMtbm9ybWFsKTsKICBsaW5lLWhlaWdodDogdmFyKC0tZGFwcC1raXQtdHlwb2dyYXBoeS1saW5lSGVpZ2h0KTsKICBsZXR0ZXItc3BhY2luZzogdmFyKC0tZGFwcC1raXQtdHlwb2dyYXBoeS1sZXR0ZXJTcGFjaW5nKTsKfQo6d2hlcmUoYnV0dG9uKSB7CiAgYXBwZWFyYW5jZTogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBmb250LXNpemU6IGluaGVyaXQ7CiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7CiAgbGV0dGVyLXNwYWNpbmc6IGluaGVyaXQ7CiAgY29sb3I6IGluaGVyaXQ7CiAgYm9yZGVyOiAwOwogIHBhZGRpbmc6IDA7CiAgbWFyZ2luOiAwOwp9Cjp3aGVyZShhKSB7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGNvbG9yOiBpbmhlcml0OwogIG91dGxpbmU6IG5vbmU7Cn0KOndoZXJlKG9sLCB1bCkgewogIGxpc3Qtc3R5bGU6IG5vbmU7CiAgbWFyZ2luOiAwOwogIHBhZGRpbmc6IDA7Cn0KOndoZXJlKGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYpIHsKICBmb250LXNpemU6IGluaGVyaXQ7CiAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7CiAgbWFyZ2luOiAwOwp9';", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ButtonHTMLAttributes, ReactNode } from 'react';\n\nimport { useCurrentAccount } from '../hooks/wallet/useCurrentAccount.js';\nimport { AccountDropdownMenu } from './AccountDropdownMenu.js';\nimport { ConnectModal } from './connect-modal/ConnectModal.js';\nimport { StyleMarker } from './styling/StyleMarker.js';\nimport { Button } from './ui/Button.js';\n\ntype ConnectButtonProps = {\n\tconnectText?: ReactNode;\n} & ButtonHTMLAttributes<HTMLButtonElement>;\n\nexport function ConnectButton({\n\tconnectText = 'Connect Wallet',\n\t...buttonProps\n}: ConnectButtonProps) {\n\tconst currentAccount = useCurrentAccount();\n\treturn currentAccount ? (\n\t\t<AccountDropdownMenu currentAccount={currentAccount} />\n\t) : (\n\t\t<ConnectModal\n\t\t\ttrigger={\n\t\t\t\t<StyleMarker>\n\t\t\t\t\t<Button {...buttonProps}>{connectText}</Button>\n\t\t\t\t</StyleMarker>\n\t\t\t}\n\t\t/>\n\t);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useContext } from 'react';\nimport { useStore } from 'zustand';\n\nimport { WalletContext } from '../../contexts/walletContext.js';\nimport type { StoreState } from '../../walletStore.js';\n\nexport function useWalletStore<T>(selector: (state: StoreState) => T): T {\n\tconst store = useContext(WalletContext);\n\tif (!store) {\n\t\tthrow new Error(\n\t\t\t'Could not find WalletContext. Ensure that you have set up the WalletProvider.',\n\t\t);\n\t}\n\treturn useStore(store, selector);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { createContext } from 'react';\n\nimport type { WalletStore } from '../walletStore.js';\n\nexport const WalletContext = createContext<WalletStore | null>(null);\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletAccount } from '@mysten/wallet-standard';\n\nimport { useWalletStore } from './useWalletStore.js';\n\n/**\n * Retrieves the wallet account that is currently selected, if one exists.\n */\nexport function useCurrentAccount(): WalletAccount | null {\n\treturn useWalletStore((state) => state.currentAccount);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { formatAddress } from '@mysten/sui.js/utils';\nimport type { WalletAccount } from '@mysten/wallet-standard';\nimport * as DropdownMenu from '@radix-ui/react-dropdown-menu';\nimport clsx from 'clsx';\n\nimport { useResolveSuiNSName } from '../hooks/useResolveSuiNSNames.js';\nimport { useAccounts } from '../hooks/wallet/useAccounts.js';\nimport { useDisconnectWallet } from '../hooks/wallet/useDisconnectWallet.js';\nimport { useSwitchAccount } from '../hooks/wallet/useSwitchAccount.js';\nimport * as styles from './AccountDropdownMenu.css.js';\nimport { CheckIcon } from './icons/CheckIcon.js';\nimport { ChevronIcon } from './icons/ChevronIcon.js';\nimport { StyleMarker } from './styling/StyleMarker.js';\nimport { Button } from './ui/Button.js';\nimport { Text } from './ui/Text.js';\n\ntype AccountDropdownMenuProps = {\n\tcurrentAccount: WalletAccount;\n};\n\nexport function AccountDropdownMenu({ currentAccount }: AccountDropdownMenuProps) {\n\tconst { mutate: disconnectWallet } = useDisconnectWallet();\n\n\tconst { data: domain } = useResolveSuiNSName(\n\t\tcurrentAccount.label ? null : currentAccount.address,\n\t);\n\tconst accounts = useAccounts();\n\n\treturn (\n\t\t<DropdownMenu.Root modal={false}>\n\t\t\t<StyleMarker>\n\t\t\t\t<DropdownMenu.Trigger asChild>\n\t\t\t\t\t<Button size=\"lg\" className={styles.connectedAccount}>\n\t\t\t\t\t\t<Text mono weight=\"bold\">\n\t\t\t\t\t\t\t{currentAccount.label ?? domain ?? formatAddress(currentAccount.address)}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t<ChevronIcon />\n\t\t\t\t\t</Button>\n\t\t\t\t</DropdownMenu.Trigger>\n\t\t\t</StyleMarker>\n\t\t\t<DropdownMenu.Portal>\n\t\t\t\t<StyleMarker className={styles.menuContainer}>\n\t\t\t\t\t<DropdownMenu.Content className={styles.menuContent}>\n\t\t\t\t\t\t{accounts.map((account) => (\n\t\t\t\t\t\t\t<AccountDropdownMenuItem\n\t\t\t\t\t\t\t\tkey={account.address}\n\t\t\t\t\t\t\t\taccount={account}\n\t\t\t\t\t\t\t\tactive={currentAccount.address === account.address}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))}\n\t\t\t\t\t\t<DropdownMenu.Separator className={styles.separator} />\n\t\t\t\t\t\t<DropdownMenu.Item\n\t\t\t\t\t\t\tclassName={clsx(styles.menuItem)}\n\t\t\t\t\t\t\tonSelect={() => disconnectWallet()}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tDisconnect\n\t\t\t\t\t\t</DropdownMenu.Item>\n\t\t\t\t\t</DropdownMenu.Content>\n\t\t\t\t</StyleMarker>\n\t\t\t</DropdownMenu.Portal>\n\t\t</DropdownMenu.Root>\n\t);\n}\n\nexport function AccountDropdownMenuItem({\n\taccount,\n\tactive,\n}: {\n\taccount: WalletAccount;\n\tactive?: boolean;\n}) {\n\tconst { mutate: switchAccount } = useSwitchAccount();\n\tconst { data: domain } = useResolveSuiNSName(account.label ? null : account.address);\n\n\treturn (\n\t\t<DropdownMenu.Item\n\t\t\tclassName={clsx(styles.menuItem, styles.switchAccountMenuItem)}\n\t\t\tonSelect={() => switchAccount({ account })}\n\t\t>\n\t\t\t<Text mono>{account.label ?? domain ?? formatAddress(account.address)}</Text>\n\t\t\t{active ? <CheckIcon /> : null}\n\t\t</DropdownMenu.Item>\n\t);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { SuiClient } from '@mysten/sui.js/client';\nimport type { UseQueryOptions, UseQueryResult } from '@tanstack/react-query';\nimport { useQuery } from '@tanstack/react-query';\n\nimport type { PartialBy } from '../types/utilityTypes.js';\nimport { useSuiClientContext } from './useSuiClient.js';\n\nexport type SuiRpcMethodName = {\n\t[K in keyof SuiClient]: SuiClient[K] extends ((input: any) => Promise<any>) | (() => Promise<any>)\n\t\t? K\n\t\t: never;\n}[keyof SuiClient];\n\nexport type SuiRpcMethods = {\n\t[K in SuiRpcMethodName]: SuiClient[K] extends (input: infer P) => Promise<infer R>\n\t\t? {\n\t\t\t\tname: K;\n\t\t\t\tresult: R;\n\t\t\t\tparams: P;\n\t\t }\n\t\t: SuiClient[K] extends () => Promise<infer R>\n\t\t? {\n\t\t\t\tname: K;\n\t\t\t\tresult: R;\n\t\t\t\tparams: undefined | object;\n\t\t }\n\t\t: never;\n};\n\nexport type UseSuiClientQueryOptions<T extends keyof SuiRpcMethods, TData> = PartialBy<\n\tOmit<UseQueryOptions<SuiRpcMethods[T]['result'], Error, TData, unknown[]>, 'queryFn'>,\n\t'queryKey'\n>;\n\nexport function useSuiClientQuery<\n\tT extends keyof SuiRpcMethods,\n\tTData = SuiRpcMethods[T]['result'],\n>(\n\t...args: undefined extends SuiRpcMethods[T]['params']\n\t\t? [method: T, params?: SuiRpcMethods[T]['params'], options?: UseSuiClientQueryOptions<T, TData>]\n\t\t: [method: T, params: SuiRpcMethods[T]['params'], options?: UseSuiClientQueryOptions<T, TData>]\n): UseQueryResult<TData, Error> {\n\tconst [method, params, { queryKey = [], ...options } = {}] = args as [\n\t\tmethod: T,\n\t\tparams?: SuiRpcMethods[T]['params'],\n\t\toptions?: UseSuiClientQueryOptions<T, TData>,\n\t];\n\n\tconst suiContext = useSuiClientContext();\n\n\treturn useQuery({\n\t\t...options,\n\t\tqueryKey: [suiContext.network, method, params, ...queryKey],\n\t\tqueryFn: async () => {\n\t\t\treturn await suiContext.client[method](params as never);\n\t\t},\n\t});\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { SuiClient } from '@mysten/sui.js/client';\nimport { useContext } from 'react';\n\nimport { SuiClientContext } from '../components/SuiClientProvider.js';\n\nexport function useSuiClientContext() {\n\tconst suiClient = useContext(SuiClientContext);\n\n\tif (!suiClient) {\n\t\tthrow new Error(\n\t\t\t'Could not find SuiClientContext. Ensure that you have set up the SuiClientProvider',\n\t\t);\n\t}\n\n\treturn suiClient;\n}\n\nexport function useSuiClient(): SuiClient {\n\treturn useSuiClientContext().client;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { getFullnodeUrl, isSuiClient, SuiClient } from '@mysten/sui.js/client';\nimport type { SuiClientOptions } from '@mysten/sui.js/client';\nimport { createContext, useMemo, useState } from 'react';\n\nimport type { NetworkConfig } from '../hooks/networkConfig.js';\n\ntype NetworkConfigs<T extends NetworkConfig | SuiClient = NetworkConfig | SuiClient> = Record<\n\tstring,\n\tT\n>;\n\nexport interface SuiClientProviderContext {\n\tclient: SuiClient;\n\tnetworks: NetworkConfigs;\n\tnetwork: string;\n\tconfig: NetworkConfig | null;\n\tselectNetwork: (network: string) => void;\n}\n\nexport const SuiClientContext = createContext<SuiClientProviderContext | null>(null);\n\nexport type SuiClientProviderProps<T extends NetworkConfigs> = {\n\tcreateClient?: (name: keyof T, config: T[keyof T]) => SuiClient;\n\tchildren: React.ReactNode;\n\tnetworks?: T;\n\tonNetworkChange?: (network: keyof T & string) => void;\n} & (\n\t| {\n\t\t\tdefaultNetwork?: keyof T & string;\n\t\t\tnetwork?: never;\n\t }\n\t| {\n\t\t\tdefaultNetwork?: never;\n\t\t\tnetwork?: keyof T & string;\n\t }\n);\n\nconst DEFAULT_NETWORKS = {\n\tlocalnet: { url: getFullnodeUrl('localnet') },\n};\n\nconst DEFAULT_CREATE_CLIENT = function createClient(\n\t_name: string,\n\tconfig: NetworkConfig | SuiClient,\n) {\n\tif (isSuiClient(config)) {\n\t\treturn config;\n\t}\n\n\treturn new SuiClient(config);\n};\n\nexport function SuiClientProvider<T extends NetworkConfigs>(props: SuiClientProviderProps<T>) {\n\tconst { onNetworkChange, network, children } = props;\n\tconst networks = (props.networks ?? DEFAULT_NETWORKS) as T;\n\tconst createClient =\n\t\t(props.createClient as typeof DEFAULT_CREATE_CLIENT) ?? DEFAULT_CREATE_CLIENT;\n\n\tconst [selectedNetwork, setSelectedNetwork] = useState<keyof T & string>(\n\t\tprops.network ?? props.defaultNetwork ?? (Object.keys(networks)[0] as keyof T & string),\n\t);\n\n\tconst currentNetwork = props.network ?? selectedNetwork;\n\n\tconst client = useMemo(() => {\n\t\treturn createClient(currentNetwork, networks[currentNetwork]);\n\t}, [createClient, currentNetwork, networks]);\n\n\tconst ctx = useMemo((): SuiClientProviderContext => {\n\t\treturn {\n\t\t\tclient,\n\t\t\tnetworks,\n\t\t\tnetwork: currentNetwork,\n\t\t\tconfig:\n\t\t\t\tnetworks[currentNetwork] instanceof SuiClient\n\t\t\t\t\t? null\n\t\t\t\t\t: (networks[currentNetwork] as SuiClientOptions),\n\t\t\tselectNetwork: (newNetwork) => {\n\t\t\t\tif (currentNetwork === newNetwork) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!network && newNetwork !== selectedNetwork) {\n\t\t\t\t\tsetSelectedNetwork(newNetwork);\n\t\t\t\t}\n\n\t\t\t\tonNetworkChange?.(newNetwork);\n\t\t\t},\n\t\t};\n\t}, [client, networks, selectedNetwork, currentNetwork, network, onNetworkChange]);\n\n\treturn <SuiClientContext.Provider value={ctx}>{children}</SuiClientContext.Provider>;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ResolvedNameServiceNames } from '@mysten/sui.js/client';\nimport type { UseQueryOptions, UseQueryResult } from '@tanstack/react-query';\n\nimport { useSuiClientQuery } from './useSuiClientQuery.js';\n\nexport function useResolveSuiNSName(\n\taddress?: string | null,\n\toptions?: Omit<\n\t\tUseQueryOptions<ResolvedNameServiceNames, Error, string | null, unknown[]>,\n\t\t'queryFn' | 'queryKey' | 'select'\n\t>,\n): UseQueryResult<string | null, Error> {\n\treturn useSuiClientQuery(\n\t\t'resolveNameServiceNames',\n\t\t{\n\t\t\taddress: address!,\n\t\t\tlimit: 1,\n\t\t},\n\t\t{\n\t\t\t...options,\n\t\t\trefetchOnWindowFocus: false,\n\t\t\tretry: false,\n\t\t\tselect: (data) => (data.data.length > 0 ? data.data[0] : null),\n\t\t\tenabled: !!address && options?.enabled !== false,\n\t\t},\n\t);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletAccount } from '@mysten/wallet-standard';\n\nimport { useWalletStore } from './useWalletStore.js';\n\n/**\n * Retrieves a list of connected accounts authorized by the dApp.\n */\nexport function useAccounts(): readonly WalletAccount[] {\n\treturn useWalletStore((state) => state.accounts);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { walletMutationKeys } from '../../constants/walletMutationKeys.js';\nimport { WalletNotConnectedError } from '../../errors/walletErrors.js';\nimport { useCurrentWallet } from './useCurrentWallet.js';\nimport { useWalletStore } from './useWalletStore.js';\n\ntype UseDisconnectWalletError = WalletNotConnectedError | Error;\n\ntype UseDisconnectWalletMutationOptions = Omit<\n\tUseMutationOptions<void, UseDisconnectWalletError, void, unknown>,\n\t'mutationFn'\n>;\n\n/**\n * Mutation hook for disconnecting from an active wallet connection, if currently connected.\n */\nexport function useDisconnectWallet({\n\tmutationKey,\n\t...mutationOptions\n}: UseDisconnectWalletMutationOptions = {}): UseMutationResult<\n\tvoid,\n\tUseDisconnectWalletError,\n\tvoid\n> {\n\tconst { currentWallet } = useCurrentWallet();\n\tconst setWalletDisconnected = useWalletStore((state) => state.setWalletDisconnected);\n\n\treturn useMutation({\n\t\tmutationKey: walletMutationKeys.disconnectWallet(mutationKey),\n\t\tmutationFn: async () => {\n\t\t\tif (!currentWallet) {\n\t\t\t\tthrow new WalletNotConnectedError('No wallet is connected.');\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\t// Wallets aren't required to implement the disconnect feature, so we'll\n\t\t\t\t// optionally call the disconnect feature if it exists and reset the UI\n\t\t\t\t// state on the frontend at a minimum.\n\t\t\t\tawait currentWallet.features['standard:disconnect']?.disconnect();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Failed to disconnect the application from the current wallet.', error);\n\t\t\t}\n\n\t\t\tsetWalletDisconnected();\n\t\t},\n\t\t...mutationOptions,\n\t});\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { MutationKey } from '@tanstack/react-query';\n\nexport const walletMutationKeys = {\n\tall: { baseScope: 'wallet' },\n\tconnectWallet: formMutationKeyFn('connect-wallet'),\n\tautoconnectWallet: formMutationKeyFn('autoconnect-wallet'),\n\tdisconnectWallet: formMutationKeyFn('disconnect-wallet'),\n\tsignPersonalMessage: formMutationKeyFn('sign-personal-message'),\n\tsignTransactionBlock: formMutationKeyFn('sign-transaction-block'),\n\tsignAndExecuteTransactionBlock: formMutationKeyFn('sign-and-execute-transaction-block'),\n\tswitchAccount: formMutationKeyFn('switch-account'),\n};\n\nfunction formMutationKeyFn(baseEntity: string) {\n\treturn function mutationKeyFn(additionalKeys: MutationKey = []) {\n\t\treturn [{ ...walletMutationKeys.all, baseEntity }, ...additionalKeys];\n\t};\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * An error that is instantiated when someone attempts to perform an action that requires an active wallet connection.\n */\nexport class WalletNotConnectedError extends Error {}\n\n/**\n * An error that is instantiated when someone attempts to perform an action that requires a selected wallet account.\n * This is more of an edge case stemming from the fact that wallets don't technically require you to authorize any\n * accounts when connecting a wallet.\n */\nexport class WalletNoAccountSelectedError extends Error {}\n\n/**\n * An error that is instantiated when someone attempts to perform an action that isn't supported by a wallet.\n */\nexport class WalletFeatureNotSupportedError extends Error {}\n\n/**\n * An error that is instantiated when a wallet account can't be found for a specific wallet.\n */\nexport class WalletAccountNotFoundError extends Error {}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useWalletStore } from './useWalletStore.js';\n\n/**\n * Retrieves the wallet that is currently connected to the dApp, if one exists.\n */\nexport function useCurrentWallet() {\n\tconst currentWallet = useWalletStore((state) => state.currentWallet);\n\tconst connectionStatus = useWalletStore((state) => state.connectionStatus);\n\n\tswitch (connectionStatus) {\n\t\tcase 'connecting':\n\t\t\treturn {\n\t\t\t\tconnectionStatus,\n\t\t\t\tcurrentWallet: null,\n\t\t\t\tisDisconnected: false,\n\t\t\t\tisConnecting: true,\n\t\t\t\tisConnected: false,\n\t\t\t} as const;\n\t\tcase 'disconnected':\n\t\t\treturn {\n\t\t\t\tconnectionStatus,\n\t\t\t\tcurrentWallet: null,\n\t\t\t\tisDisconnected: true,\n\t\t\t\tisConnecting: false,\n\t\t\t\tisConnected: false,\n\t\t\t} as const;\n\t\tcase 'connected': {\n\t\t\treturn {\n\t\t\t\tconnectionStatus,\n\t\t\t\tcurrentWallet: currentWallet!,\n\t\t\t\tisDisconnected: false,\n\t\t\t\tisConnecting: false,\n\t\t\t\tisConnected: true,\n\t\t\t} as const;\n\t\t}\n\t}\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletAccount } from '@mysten/wallet-standard';\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { walletMutationKeys } from '../../constants/walletMutationKeys.js';\nimport { WalletAccountNotFoundError, WalletNotConnectedError } from '../../errors/walletErrors.js';\nimport { useCurrentWallet } from './useCurrentWallet.js';\nimport { useWalletStore } from './useWalletStore.js';\n\ntype SwitchAccountArgs = {\n\taccount: WalletAccount;\n};\n\ntype SwitchAccountResult = void;\n\ntype UseSwitchAccountError = WalletNotConnectedError | WalletAccountNotFoundError | Error;\n\ntype UseSwitchAccountMutationOptions = Omit<\n\tUseMutationOptions<SwitchAccountResult, UseSwitchAccountError, SwitchAccountArgs, unknown>,\n\t'mutationFn'\n>;\n\n/**\n * Mutation hook for switching to a specific wallet account.\n */\nexport function useSwitchAccount({\n\tmutationKey,\n\t...mutationOptions\n}: UseSwitchAccountMutationOptions = {}): UseMutationResult<\n\tSwitchAccountResult,\n\tUseSwitchAccountError,\n\tSwitchAccountArgs\n> {\n\tconst { currentWallet } = useCurrentWallet();\n\tconst setAccountSwitched = useWalletStore((state) => state.setAccountSwitched);\n\n\treturn useMutation({\n\t\tmutationKey: walletMutationKeys.switchAccount(mutationKey),\n\t\tmutationFn: async ({ account }) => {\n\t\t\tif (!currentWallet) {\n\t\t\t\tthrow new WalletNotConnectedError('No wallet is connected.');\n\t\t\t}\n\n\t\t\tconst accountToSelect = currentWallet.accounts.find(\n\t\t\t\t(walletAccount) => walletAccount.address === account.address,\n\t\t\t);\n\t\t\tif (!accountToSelect) {\n\t\t\t\tthrow new WalletAccountNotFoundError(\n\t\t\t\t\t`No account with address ${account.address} is connected to ${currentWallet.name}.`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tsetAccountSwitched(accountToSelect);\n\t\t},\n\t\t...mutationOptions,\n\t});\n}\n", "import 'src/components/AccountDropdownMenu.css.ts.vanilla.css?source=#H4sIAAAAAAAAA6VTTW8TMRC951fMkR5cJaFIxT1BuXDoiSNC0dSe7g7xjo09bhIQ/x2tm22qtqFU+GLpzdeb5+fTD87FKvopx+TjRq5I6spFEXJKfh9crTzfLn+EOfyaAXSYLJyn7cXs9+z0ufKBpF5GUWShPNUuWu1Pw+Jpa+H9dF7sQof5y9bDc0kBdxZuAm0vZtBu4zmTU45iwcVQBxkjG/baW1icz1PLHHBreuKuVwvL+T2YOxajMVk4u4MSes/S7dd8uDLAdcyessnouRYLt5jfGOMxJbNmbTCbgLmjk5aNbt3lWMUbF0PMTwoOCZdjvBj/QISTv6rzWWmYpHnbpHnMuxbKplAgpxYkCo1grBpY6AA8ERQDd2JYaSgWHIlSfu3m/0r7q0dF03PXh/FZyH9ri7xetpR5wLz7WFWjHCdQNqyu30euHrE5e95f32tRvtkZd+dGCyWhI3NNuiGSo4IdY0AJM2q8/xnv2tTJlot08HTpM8vawvz/nfRlmjpK8wcGoA4K9QMAAA==';\nexport var connectedAccount = 'AccountDropdownMenu_connectedAccount__div2ql0';\nexport var menuContainer = 'AccountDropdownMenu_menuContainer__div2ql1';\nexport var menuContent = 'AccountDropdownMenu_menuContent__div2ql2';\nexport var menuItem = 'AccountDropdownMenu_menuItem__div2ql3';\nexport var separator = 'AccountDropdownMenu_separator__div2ql5';\nexport var switchAccountMenuItem = 'AccountDropdownMenu_switchAccountMenuItem__div2ql4';", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ComponentProps } from 'react';\n\nexport function CheckIcon(props: ComponentProps<'svg'>) {\n\treturn (\n\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width={16} height={16} fill=\"none\" {...props}>\n\t\t\t<path\n\t\t\t\tfill=\"currentColor\"\n\t\t\t\td=\"m11.726 5.048-4.73 5.156-1.722-1.879a.72.72 0 0 0-.529-.23.722.722 0 0 0-.525.24.858.858 0 0 0-.22.573.86.86 0 0 0 .211.576l2.255 2.458c.14.153.332.24.53.24.2 0 .391-.087.532-.24l5.261-5.735A.86.86 0 0 0 13 5.63a.858.858 0 0 0-.22-.572.722.722 0 0 0-.525-.24.72.72 0 0 0-.529.23Z\"\n\t\t\t/>\n\t\t</svg>\n\t);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ComponentProps } from 'react';\n\nexport function ChevronIcon(props: ComponentProps<'svg'>) {\n\treturn (\n\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width={16} height={16} fill=\"none\" {...props}>\n\t\t\t<path\n\t\t\t\tstroke=\"#A0B6C3\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\tstrokeWidth={1.5}\n\t\t\t\td=\"m4 6 4 4 4-4\"\n\t\t\t/>\n\t\t</svg>\n\t);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Slot } from '@radix-ui/react-slot';\nimport type { ComponentPropsWithoutRef, ElementRef, ReactNode } from 'react';\nimport { forwardRef } from 'react';\n\nimport { styleDataAttribute } from '../../constants/styleDataAttribute.js';\n\nimport './StyleMarker.css.js';\n\ntype StyleMarker = {\n\tchildren: ReactNode;\n};\n\nexport const StyleMarker = forwardRef<\n\tElementRef<typeof Slot>,\n\tComponentPropsWithoutRef<typeof Slot>\n>(({ children, ...props }, forwardedRef) => (\n\t<Slot ref={forwardedRef} {...props} {...styleDataAttribute}>\n\t\t{children}\n\t</Slot>\n));\nStyleMarker.displayName = 'StyleMarker';\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nexport const styleDataAttributeName = 'data-dapp-kit';\n\nexport const styleDataAttributeSelector = `[${styleDataAttributeName}]`;\n\nexport const styleDataAttribute = { [styleDataAttributeName]: '' };\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Slot } from '@radix-ui/react-slot';\nimport clsx from 'clsx';\nimport type { ButtonHTMLAttributes } from 'react';\nimport { forwardRef } from 'react';\n\nimport { buttonVariants } from './Button.css.js';\nimport type { ButtonVariants } from './Button.css.js';\n\ntype ButtonProps = {\n\tasChild?: boolean;\n} & ButtonHTMLAttributes<HTMLButtonElement> &\n\tButtonVariants;\n\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>(\n\t({ className, variant, size, asChild = false, ...props }, forwardedRef) => {\n\t\tconst Comp = asChild ? Slot : 'button';\n\t\treturn (\n\t\t\t<Comp\n\t\t\t\t{...props}\n\t\t\t\tclassName={clsx(buttonVariants({ variant, size }), className)}\n\t\t\t\tref={forwardedRef}\n\t\t\t/>\n\t\t);\n\t},\n);\nButton.displayName = 'Button';\n\nexport { Button };\n", "import 'src/components/ui/Button.css.ts.vanilla.css?source=#H4sIAAAAAAAAA62TwVLCMBCG732KPcohDEV0mPSmF59Aj520Ce1KmsQkhVaHd3fS0gGsIoyemtl/d79/N+n0ofZeqzTrPs/MIlPepWkTu2X8NoOPCICjM5K1FFBJVIKspGiSCIBJLBRBLypHIRfKCxvCr7XzuGpJrpUXyh9LK6082QosSk9hw+wNIZwZQ9boSdBeOsmRSnCsq0kS7aLpeYOUo2OZFLxzqg3L0bcUZtO7M8Wb/pAaixWz7dAs7npkLF8XVteKk1xLbUdGDwmPQXdk36ZnTcKc3xfmP6VnuiGuZFxvRzV9eFx09Wy01Bth/2PCp9DoEgu69uG9DBbmPVxbLizZIvclhdg0ySHofCsFBacl8qPwDyY7cW9wj7r0Cr6mXz3Kn7Z5Qv91mw7fRVrxAX17vEXLONZuRAxhPPxEAIZxjqqgsDQNxPdh6ed5shh4i4t5ktlCnOICCuYL00AS7T4BZ4uE22sEAAA=';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var buttonVariants = _7a468({defaultClassName:'Button_buttonVariants__x1s81q0',variantClassNames:{variant:{primary:'Button_buttonVariants_variant_primary__x1s81q1',outline:'Button_buttonVariants_variant_outline__x1s81q2'},size:{md:'Button_buttonVariants_size_md__x1s81q3',lg:'Button_buttonVariants_size_lg__x1s81q4'}},defaultVariants:{variant:'primary',size:'md'},compoundVariants:[]});", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Slot } from '@radix-ui/react-slot';\nimport clsx from 'clsx';\nimport { forwardRef } from 'react';\n\nimport { textVariants } from './Text.css.js';\nimport type { TextVariants } from './Text.css.js';\n\ntype TextAsChildProps = {\n\tasChild?: boolean;\n\tas?: never;\n};\n\ntype TextDivProps = { as: 'div'; asChild?: never };\n\ntype TextProps = (TextAsChildProps | TextDivProps) &\n\tReact.HTMLAttributes<HTMLDivElement> &\n\tTextVariants;\n\nconst Text = forwardRef<HTMLDivElement, TextProps>(\n\t(\n\t\t{\n\t\t\tchildren,\n\t\t\tclassName,\n\t\t\tasChild = false,\n\t\t\tas: Tag = 'div',\n\t\t\tsize,\n\t\t\tweight,\n\t\t\tcolor,\n\t\t\tmono,\n\t\t\t...textProps\n\t\t},\n\t\tforwardedRef,\n\t) => {\n\t\treturn (\n\t\t\t<Slot\n\t\t\t\t{...textProps}\n\t\t\t\tref={forwardedRef}\n\t\t\t\tclassName={clsx(textVariants({ size, weight, color, mono }), className)}\n\t\t\t>\n\t\t\t\t{asChild ? children : <Tag>{children}</Tag>}\n\t\t\t</Slot>\n\t\t);\n\t},\n);\nText.displayName = 'Text';\n\nexport { Text };\n", "import 'src/components/ui/Text.css.ts.vanilla.css?source=LlRleHRfdGV4dFZhcmlhbnRzX3NpemVfc21fXzJidjF1cjEgewogIGZvbnQtc2l6ZTogdmFyKC0tZGFwcC1raXQtZm9udFNpemVzLXNtYWxsKTsKfQouVGV4dF90ZXh0VmFyaWFudHNfd2VpZ2h0X25vcm1hbF9fMmJ2MXVyMiB7CiAgZm9udC13ZWlnaHQ6IHZhcigtLWRhcHAta2l0LWZvbnRXZWlnaHRzLW5vcm1hbCk7Cn0KLlRleHRfdGV4dFZhcmlhbnRzX3dlaWdodF9tZWRpdW1fXzJidjF1cjMgewogIGZvbnQtd2VpZ2h0OiB2YXIoLS1kYXBwLWtpdC1mb250V2VpZ2h0cy1tZWRpdW0pOwp9Ci5UZXh0X3RleHRWYXJpYW50c193ZWlnaHRfYm9sZF9fMmJ2MXVyNCB7CiAgZm9udC13ZWlnaHQ6IHZhcigtLWRhcHAta2l0LWZvbnRXZWlnaHRzLWJvbGQpOwp9Ci5UZXh0X3RleHRWYXJpYW50c19jb2xvcl9tdXRlZF9fMmJ2MXVyNSB7CiAgY29sb3I6IHZhcigtLWRhcHAta2l0LWNvbG9ycy1ib2R5TXV0ZWQpOwp9Ci5UZXh0X3RleHRWYXJpYW50c19jb2xvcl9kYW5nZXJfXzJidjF1cjYgewogIGNvbG9yOiB2YXIoLS1kYXBwLWtpdC1jb2xvcnMtYm9keURhbmdlcik7Cn0KLlRleHRfdGV4dFZhcmlhbnRzX21vbm9fdHJ1ZV9fMmJ2MXVyNyB7CiAgZm9udC1mYW1pbHk6IHVpLW1vbm9zcGFjZSwgU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCAiTGliZXJhdGlvbiBNb25vIiwgIkNvdXJpZXIgTmV3IiwgbW9ub3NwYWNlOwp9';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var textVariants = _7a468({defaultClassName:'Text__2bv1ur0',variantClassNames:{size:{sm:'Text_textVariants_size_sm__2bv1ur1'},weight:{normal:'Text_textVariants_weight_normal__2bv1ur2',medium:'Text_textVariants_weight_medium__2bv1ur3',bold:'Text_textVariants_weight_bold__2bv1ur4'},color:{muted:'Text_textVariants_color_muted__2bv1ur5',danger:'Text_textVariants_color_danger__2bv1ur6'},mono:{true:'Text_textVariants_mono_true__2bv1ur7'}},defaultVariants:{size:'sm',weight:'normal'},compoundVariants:[]});", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletWithRequiredFeatures } from '@mysten/wallet-standard';\nimport * as Dialog from '@radix-ui/react-dialog';\nimport clsx from 'clsx';\nimport { useState } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { useConnectWallet } from '../../hooks/wallet/useConnectWallet.js';\nimport { getWalletUniqueIdentifier } from '../../utils/walletUtils.js';\nimport { BackIcon } from '../icons/BackIcon.js';\nimport { CloseIcon } from '../icons/CloseIcon.js';\nimport { StyleMarker } from '../styling/StyleMarker.js';\nimport { Heading } from '../ui/Heading.js';\nimport { IconButton } from '../ui/IconButton.js';\nimport * as styles from './ConnectModal.css.js';\nimport { ConnectionStatus } from './views/ConnectionStatus.js';\nimport { GettingStarted } from './views/GettingStarted.js';\nimport { WhatIsAWallet } from './views/WhatIsAWallet.js';\nimport { WalletList } from './wallet-list/WalletList.js';\n\ntype ConnectModalView = 'getting-started' | 'what-is-a-wallet' | 'connection-status';\n\ntype ControlledModalProps = {\n\t/** The controlled open state of the dialog. */\n\topen: boolean;\n\n\t/** Event handler called when the open state of the dialog changes. */\n\tonOpenChange: (open: boolean) => void;\n\n\tdefaultOpen?: never;\n};\n\ntype UncontrolledModalProps = {\n\topen?: never;\n\n\tonOpenChange?: never;\n\n\t/** The open state of the dialog when it is initially rendered. Use when you do not need to control its open state. */\n\tdefaultOpen?: boolean;\n};\n\ntype ConnectModalProps = {\n\t/** The trigger button that opens the dialog. */\n\ttrigger: NonNullable<ReactNode>;\n} & (ControlledModalProps | UncontrolledModalProps);\n\nexport function ConnectModal({ trigger, open, defaultOpen, onOpenChange }: ConnectModalProps) {\n\tconst [isModalOpen, setModalOpen] = useState(open ?? defaultOpen);\n\tconst [currentView, setCurrentView] = useState<ConnectModalView>();\n\tconst [selectedWallet, setSelectedWallet] = useState<WalletWithRequiredFeatures>();\n\tconst { mutate, isError } = useConnectWallet();\n\n\tconst resetSelection = () => {\n\t\tsetSelectedWallet(undefined);\n\t\tsetCurrentView(undefined);\n\t};\n\n\tconst handleOpenChange = (open: boolean) => {\n\t\tif (!open) {\n\t\t\tresetSelection();\n\t\t}\n\t\tsetModalOpen(open);\n\t\tonOpenChange?.(open);\n\t};\n\n\tconst connectWallet = (wallet: WalletWithRequiredFeatures) => {\n\t\tsetCurrentView('connection-status');\n\t\tmutate(\n\t\t\t{ wallet },\n\t\t\t{\n\t\t\t\tonSuccess: () => handleOpenChange(false),\n\t\t\t},\n\t\t);\n\t};\n\n\tlet modalContent: ReactNode | undefined;\n\tswitch (currentView) {\n\t\tcase 'what-is-a-wallet':\n\t\t\tmodalContent = <WhatIsAWallet />;\n\t\t\tbreak;\n\t\tcase 'getting-started':\n\t\t\tmodalContent = <GettingStarted />;\n\t\t\tbreak;\n\t\tcase 'connection-status':\n\t\t\tmodalContent = (\n\t\t\t\t<ConnectionStatus\n\t\t\t\t\tselectedWallet={selectedWallet!}\n\t\t\t\t\thadConnectionError={isError}\n\t\t\t\t\tonRetryConnection={connectWallet}\n\t\t\t\t/>\n\t\t\t);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tmodalContent = <WhatIsAWallet />;\n\t}\n\n\treturn (\n\t\t<Dialog.Root open={open ?? isModalOpen} onOpenChange={handleOpenChange}>\n\t\t\t<Dialog.Trigger asChild>{trigger}</Dialog.Trigger>\n\t\t\t<Dialog.Portal>\n\t\t\t\t<StyleMarker>\n\t\t\t\t\t<Dialog.Overlay className={styles.overlay}>\n\t\t\t\t\t\t<Dialog.Content className={styles.content} aria-describedby={undefined}>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName={clsx(styles.walletListContainer, {\n\t\t\t\t\t\t\t\t\t[styles.walletListContainerWithViewSelected]: !!currentView,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<div className={styles.walletListContent}>\n\t\t\t\t\t\t\t\t\t<Dialog.Title className={styles.title} asChild>\n\t\t\t\t\t\t\t\t\t\t<Heading as=\"h2\">Connect a Wallet</Heading>\n\t\t\t\t\t\t\t\t\t</Dialog.Title>\n\t\t\t\t\t\t\t\t\t<WalletList\n\t\t\t\t\t\t\t\t\t\tselectedWalletName={getWalletUniqueIdentifier(selectedWallet)}\n\t\t\t\t\t\t\t\t\t\tonPlaceholderClick={() => setCurrentView('getting-started')}\n\t\t\t\t\t\t\t\t\t\tonSelect={(wallet) => {\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\tgetWalletUniqueIdentifier(selectedWallet) !==\n\t\t\t\t\t\t\t\t\t\t\t\tgetWalletUniqueIdentifier(wallet)\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\tsetSelectedWallet(wallet);\n\t\t\t\t\t\t\t\t\t\t\t\tconnectWallet(wallet);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tclassName={styles.whatIsAWalletButton}\n\t\t\t\t\t\t\t\t\tonClick={() => setCurrentView('what-is-a-wallet')}\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tWhat is a Wallet?\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName={clsx(styles.viewContainer, {\n\t\t\t\t\t\t\t\t\t[styles.selectedViewContainer]: !!currentView,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<div className={styles.backButtonContainer}>\n\t\t\t\t\t\t\t\t\t<IconButton type=\"button\" aria-label=\"Back\" onClick={() => resetSelection()}>\n\t\t\t\t\t\t\t\t\t\t<BackIcon />\n\t\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t{modalContent}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<Dialog.Close className={styles.closeButtonContainer} asChild>\n\t\t\t\t\t\t\t\t<IconButton type=\"button\" aria-label=\"Close\">\n\t\t\t\t\t\t\t\t\t<CloseIcon />\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t</Dialog.Close>\n\t\t\t\t\t\t</Dialog.Content>\n\t\t\t\t\t</Dialog.Overlay>\n\t\t\t\t</StyleMarker>\n\t\t\t</Dialog.Portal>\n\t\t</Dialog.Root>\n\t);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type {\n\tStandardConnectInput,\n\tStandardConnectOutput,\n\tWalletAccount,\n\tWalletWithRequiredFeatures,\n} from '@mysten/wallet-standard';\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { walletMutationKeys } from '../../constants/walletMutationKeys.js';\nimport { useWalletStore } from './useWalletStore.js';\n\ntype ConnectWalletArgs = {\n\t/** The wallet to connect to. */\n\twallet: WalletWithRequiredFeatures;\n\n\t/** An optional account address to connect to. Defaults to the first authorized account. */\n\taccountAddress?: string;\n} & StandardConnectInput;\n\ntype ConnectWalletResult = StandardConnectOutput;\n\ntype UseConnectWalletMutationOptions = Omit<\n\tUseMutationOptions<ConnectWalletResult, Error, ConnectWalletArgs, unknown>,\n\t'mutationFn'\n>;\n\n/**\n * Mutation hook for establishing a connection to a specific wallet.\n */\nexport function useConnectWallet({\n\tmutationKey,\n\t...mutationOptions\n}: UseConnectWalletMutationOptions = {}): UseMutationResult<\n\tConnectWalletResult,\n\tError,\n\tConnectWalletArgs,\n\tunknown\n> {\n\tconst setWalletConnected = useWalletStore((state) => state.setWalletConnected);\n\tconst setConnectionStatus = useWalletStore((state) => state.setConnectionStatus);\n\n\treturn useMutation({\n\t\tmutationKey: walletMutationKeys.connectWallet(mutationKey),\n\t\tmutationFn: async ({ wallet, accountAddress, ...connectArgs }) => {\n\t\t\ttry {\n\t\t\t\tsetConnectionStatus('connecting');\n\n\t\t\t\tconst connectResult = await wallet.features['standard:connect'].connect(connectArgs);\n\t\t\t\tconst connectedSuiAccounts = connectResult.accounts.filter((account) =>\n\t\t\t\t\taccount.chains.some((chain) => chain.split(':')[0] === 'sui'),\n\t\t\t\t);\n\t\t\t\tconst selectedAccount = getSelectedAccount(connectedSuiAccounts, accountAddress);\n\n\t\t\t\tsetWalletConnected(wallet, connectedSuiAccounts, selectedAccount);\n\n\t\t\t\treturn { accounts: connectedSuiAccounts };\n\t\t\t} catch (error) {\n\t\t\t\tsetConnectionStatus('disconnected');\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t},\n\t\t...mutationOptions,\n\t});\n}\n\nfunction getSelectedAccount(connectedAccounts: readonly WalletAccount[], accountAddress?: string) {\n\tif (connectedAccounts.length === 0) {\n\t\treturn null;\n\t}\n\n\tif (accountAddress) {\n\t\tconst selectedAccount = connectedAccounts.find((account) => account.address === accountAddress);\n\t\treturn selectedAccount ?? connectedAccounts[0];\n\t}\n\n\treturn connectedAccounts[0];\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type {\n\tMinimallyRequiredFeatures,\n\tWallet,\n\tWalletWithFeatures,\n} from '@mysten/wallet-standard';\nimport { getWallets, isWalletWithRequiredFeatureSet } from '@mysten/wallet-standard';\n\nexport function getRegisteredWallets<AdditionalFeatures extends Wallet['features']>(\n\tpreferredWallets: string[],\n\trequiredFeatures?: (keyof AdditionalFeatures)[],\n) {\n\tconst walletsApi = getWallets();\n\tconst wallets = walletsApi.get();\n\n\tconst suiWallets = wallets.filter(\n\t\t(wallet): wallet is WalletWithFeatures<MinimallyRequiredFeatures & AdditionalFeatures> =>\n\t\t\tisWalletWithRequiredFeatureSet(wallet, requiredFeatures),\n\t);\n\n\treturn [\n\t\t// Preferred wallets, in order:\n\t\t...(preferredWallets\n\t\t\t.map((name) => suiWallets.find((wallet) => wallet.name === name))\n\t\t\t.filter(Boolean) as WalletWithFeatures<MinimallyRequiredFeatures & AdditionalFeatures>[]),\n\n\t\t// Wallets in default order:\n\t\t...suiWallets.filter((wallet) => !preferredWallets.includes(wallet.name)),\n\t];\n}\n\nexport function getWalletUniqueIdentifier(wallet?: Wallet) {\n\treturn wallet?.id ?? wallet?.name;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ComponentProps } from 'react';\n\n// FIXME: Replace this with a 10x10 icon to match the CheckIcon, or alternatively make the CheckIcon bigger\n// Right now, the icons don't align on mobile :(\nexport function BackIcon(props: ComponentProps<'svg'>) {\n\treturn (\n\t\t<svg width={24} height={24} fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n\t\t\t<path\n\t\t\t\td=\"M7.57 12.262c0 .341.13.629.403.895l5.175 5.059c.204.205.45.307.751.307.609 0 1.101-.485 1.101-1.087 0-.293-.123-.574-.349-.8L10.14 12.27l4.511-4.375A1.13 1.13 0 0 0 15 7.087C15 6.485 14.508 6 13.9 6c-.295 0-.54.103-.752.308l-5.175 5.058c-.28.28-.404.56-.404.896Z\"\n\t\t\t\tfill=\"currentColor\"\n\t\t\t/>\n\t\t</svg>\n\t);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ComponentProps } from 'react';\n\nexport function CloseIcon(props: ComponentProps<'svg'>) {\n\treturn (\n\t\t<svg width={10} height={10} fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n\t\t\t<path\n\t\t\t\td=\"M9.708.292a.999.999 0 0 0-1.413 0l-3.289 3.29L1.717.291A.999.999 0 0 0 .305 1.705l3.289 3.289-3.29 3.289a.999.999 0 1 0 1.413 1.412l3.29-3.289 3.288 3.29a.999.999 0 0 0 1.413-1.413l-3.29-3.29 3.29-3.288a.999.999 0 0 0 0-1.413Z\"\n\t\t\t\tfill=\"currentColor\"\n\t\t\t/>\n\t\t</svg>\n\t);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Slot } from '@radix-ui/react-slot';\nimport clsx from 'clsx';\nimport { forwardRef } from 'react';\n\nimport { headingVariants } from './Heading.css.js';\nimport type { HeadingVariants } from './Heading.css.js';\n\ntype HeadingAsChildProps = {\n\tasChild?: boolean;\n\tas?: never;\n};\n\ntype HeadingAsProps = {\n\tas?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n\tasChild?: never;\n};\n\ntype HeadingProps = (HeadingAsChildProps | HeadingAsProps) &\n\tReact.HTMLAttributes<HTMLHeadingElement> &\n\tHeadingVariants;\n\nconst Heading = forwardRef<HTMLHeadingElement, HeadingProps>(\n\t(\n\t\t{\n\t\t\tchildren,\n\t\t\tclassName,\n\t\t\tasChild = false,\n\t\t\tas: Tag = 'h1',\n\t\t\tsize,\n\t\t\tweight,\n\t\t\ttruncate,\n\t\t\t...headingProps\n\t\t},\n\t\tforwardedRef,\n\t) => {\n\t\treturn (\n\t\t\t<Slot\n\t\t\t\t{...headingProps}\n\t\t\t\tref={forwardedRef}\n\t\t\t\tclassName={clsx(headingVariants({ size, weight, truncate }), className)}\n\t\t\t>\n\t\t\t\t{asChild ? children : <Tag>{children}</Tag>}\n\t\t\t</Slot>\n\t\t);\n\t},\n);\nHeading.displayName = 'Heading';\n\nexport { Heading };\n", "import 'src/components/ui/Heading.css.ts.vanilla.css?source=LkhlYWRpbmdfaGVhZGluZ1ZhcmlhbnRzX3NpemVfc21fXzFhYTgzNWsxIHsKICBmb250LXNpemU6IHZhcigtLWRhcHAta2l0LWZvbnRTaXplcy1zbWFsbCk7Cn0KLkhlYWRpbmdfaGVhZGluZ1ZhcmlhbnRzX3NpemVfbWRfXzFhYTgzNWsyIHsKICBmb250LXNpemU6IHZhcigtLWRhcHAta2l0LWZvbnRTaXplcy1tZWRpdW0pOwp9Ci5IZWFkaW5nX2hlYWRpbmdWYXJpYW50c19zaXplX2xnX18xYWE4MzVrMyB7CiAgZm9udC1zaXplOiB2YXIoLS1kYXBwLWtpdC1mb250U2l6ZXMtbGFyZ2UpOwp9Ci5IZWFkaW5nX2hlYWRpbmdWYXJpYW50c19zaXplX3hsX18xYWE4MzVrNCB7CiAgZm9udC1zaXplOiB2YXIoLS1kYXBwLWtpdC1mb250U2l6ZXMteGxhcmdlKTsKfQouSGVhZGluZ19oZWFkaW5nVmFyaWFudHNfd2VpZ2h0X25vcm1hbF9fMWFhODM1azUgewogIGZvbnQtd2VpZ2h0OiB2YXIoLS1kYXBwLWtpdC1mb250V2VpZ2h0cy1ub3JtYWwpOwp9Ci5IZWFkaW5nX2hlYWRpbmdWYXJpYW50c193ZWlnaHRfYm9sZF9fMWFhODM1azYgewogIGZvbnQtd2VpZ2h0OiB2YXIoLS1kYXBwLWtpdC1mb250V2VpZ2h0cy1ib2xkKTsKfQouSGVhZGluZ19oZWFkaW5nVmFyaWFudHNfdHJ1bmNhdGVfdHJ1ZV9fMWFhODM1azcgewogIG92ZXJmbG93OiBoaWRkZW47CiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQ==';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var headingVariants = _7a468({defaultClassName:'Heading__1aa835k0',variantClassNames:{size:{sm:'Heading_headingVariants_size_sm__1aa835k1',md:'Heading_headingVariants_size_md__1aa835k2',lg:'Heading_headingVariants_size_lg__1aa835k3',xl:'Heading_headingVariants_size_xl__1aa835k4'},weight:{normal:'Heading_headingVariants_weight_normal__1aa835k5',bold:'Heading_headingVariants_weight_bold__1aa835k6'},truncate:{true:'Heading_headingVariants_truncate_true__1aa835k7'}},defaultVariants:{size:'lg',weight:'bold'},compoundVariants:[]});", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Slot } from '@radix-ui/react-slot';\nimport clsx from 'clsx';\nimport type { ButtonHTMLAttributes } from 'react';\nimport { forwardRef } from 'react';\n\nimport * as styles from './IconButton.css.js';\n\ntype IconButtonProps = {\n\tasChild?: boolean;\n\t'aria-label': string;\n} & ButtonHTMLAttributes<HTMLButtonElement>;\n\nconst IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(\n\t({ className, asChild = false, ...props }, forwardedRef) => {\n\t\tconst Comp = asChild ? Slot : 'button';\n\t\treturn <Comp {...props} className={clsx(styles.container, className)} ref={forwardedRef} />;\n\t},\n);\nIconButton.displayName = 'Button';\n\nexport { IconButton };\n", "import 'src/components/ui/IconButton.css.ts.vanilla.css?source=Lkljb25CdXR0b25fY29udGFpbmVyX19zNm43YnEwIHsKICBib3JkZXItcmFkaXVzOiA5OTk5cHg7CiAgcGFkZGluZzogOHB4OwogIGNvbG9yOiB2YXIoLS1kYXBwLWtpdC1jb2xvcnMtaWNvbkJ1dHRvbik7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZGFwcC1raXQtYmFja2dyb3VuZENvbG9ycy1pY29uQnV0dG9uKTsKfQouSWNvbkJ1dHRvbl9jb250YWluZXJfX3M2bjdicTA6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWRhcHAta2l0LWJhY2tncm91bmRDb2xvcnMtaWNvbkJ1dHRvbkhvdmVyKTsKfQ==';\nexport var container = 'IconButton_container__s6n7bq0';", "import 'src/components/connect-modal/ConnectModal.css.ts.vanilla.css?source=#H4sIAAAAAAAAA61UTW8aMRC98yt8iUSkOlrSkJDNpS2nSq1aKVJzjMx6dteN117Zs0BS8d8rfwAh6wAS4QB4vPNm5s17ezHVSkGBPzVn8lHPwUj2/PhYvUxebjPyb0DIjBVPldGd4rTQUpuczJkZUspZ29IngXT7wNTdW9o4rF8B6vwuQnCjW1oKiZBAkF0qrdVWoNAqJ6VYAnchoSxgTjL3/4UKxWGZk9v1526wGlzsDIQCJcRxRn6clnEuVEUllJiTSbvsJxVaISiMaZensPDbiIaZyII2HAw1jIvO9vJdWNClZKYC/3i6TBHAZ5q/y9FMI+omJ6NrNxwhYdL1yYiqfnXkwraSPeeklOAD7pdyYaAIsIWWXaPczd/OoiifaaQnJ7ZlBdAZ4ALAP+HkU0q9yEktOA+xRihaQyg6zua1j7HlJjYZb2MLwbHOyU2WpdayqBl+t18fmJSA3zpEreKKPp+yonsotOLrJUV5rAl628NcwGKqFTKhwMTqV776hkilFewgXWbtltnKOHpGfWQLEgoE/idRYbxbIazqLYCbLrDyNv06CH+jFDazWnbou0TdbjsMSrlMsl9IbSGNf3MIP6m93nr9Xn8Ii9Md/01Sw+/T6S7PhFTMjXgVWuht5WRj75/jNU+36UkO++rYWY9o5UFg7SR2H+UWW2MpDa8GXxrgghFbGABFmOJk6Py89un1pF2e+8zDL9D+FEYv7vxFhBtl2VkIeNGM16egys0RDVO21KbJw1/JEIZ0nJ19Iu7bu3jVa+nQyyNh4D7I++5PrLWffsihR/Ww3yYf9BY8VLav6j3r9RczZoV1Noy225Fu9ipiayPUU4wd1cdeSScXs/oP5e4DaPYIAAA=';\nexport var backButtonContainer = 'ConnectModal_backButtonContainer__gz8z96';\nexport var closeButtonContainer = 'ConnectModal_closeButtonContainer__gz8z97';\nexport var content = 'ConnectModal_content__gz8z92';\nexport var overlay = 'ConnectModal_overlay__gz8z90';\nexport var selectedViewContainer = 'ConnectModal_selectedViewContainer__gz8z95';\nexport var title = 'ConnectModal_title__gz8z91';\nexport var viewContainer = 'ConnectModal_viewContainer__gz8z94';\nexport var walletListContainer = 'ConnectModal_walletListContainer__gz8z99';\nexport var walletListContainerWithViewSelected = 'ConnectModal_walletListContainerWithViewSelected__gz8z9a';\nexport var walletListContent = 'ConnectModal_walletListContent__gz8z98';\nexport var whatIsAWalletButton = 'ConnectModal_whatIsAWalletButton__gz8z93';", "import 'src/components/connect-modal/views/ConnectionStatus.css.ts.vanilla.css?source=LkNvbm5lY3Rpb25TdGF0dXNfY29udGFpbmVyX19uY2ttMmQwIHsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICB3aWR0aDogMTAwJTsKfQouQ29ubmVjdGlvblN0YXR1c193YWxsZXRJY29uX19uY2ttMmQxIHsKICBvYmplY3QtZml0OiBjb3ZlcjsKICB3aWR0aDogNzJweDsKICBoZWlnaHQ6IDcycHg7CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tZGFwcC1raXQtcmFkaWktbGFyZ2UpOwp9Ci5Db25uZWN0aW9uU3RhdHVzX3RpdGxlX19uY2ttMmQyIHsKICBtYXJnaW4tdG9wOiAxMnB4Owp9Ci5Db25uZWN0aW9uU3RhdHVzX2Nvbm5lY3Rpb25TdGF0dXNfX25ja20yZDMgewogIG1hcmdpbi10b3A6IDRweDsKfQouQ29ubmVjdGlvblN0YXR1c19yZXRyeUJ1dHRvbkNvbnRhaW5lcl9fbmNrbTJkNCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGJvdHRvbTogMjBweDsKICByaWdodDogMjBweDsKfQ==';\nexport var connectionStatus = 'ConnectionStatus_connectionStatus__nckm2d3';\nexport var container = 'ConnectionStatus_container__nckm2d0';\nexport var retryButtonContainer = 'ConnectionStatus_retryButtonContainer__nckm2d4';\nexport var title = 'ConnectionStatus_title__nckm2d2';\nexport var walletIcon = 'ConnectionStatus_walletIcon__nckm2d1';", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletWithRequiredFeatures } from '@mysten/wallet-standard';\n\nimport { Button } from '../../ui/Button.js';\nimport { Heading } from '../../ui/Heading.js';\nimport { Text } from '../../ui/Text.js';\nimport * as styles from './ConnectionStatus.css.js';\n\ntype ConnectionStatusProps = {\n\tselectedWallet: WalletWithRequiredFeatures;\n\thadConnectionError: boolean;\n\tonRetryConnection: (selectedWallet: WalletWithRequiredFeatures) => void;\n};\n\nexport function ConnectionStatus({\n\tselectedWallet,\n\thadConnectionError,\n\tonRetryConnection,\n}: ConnectionStatusProps) {\n\treturn (\n\t\t<div className={styles.container}>\n\t\t\t<img\n\t\t\t\tclassName={styles.walletIcon}\n\t\t\t\tsrc={selectedWallet.icon}\n\t\t\t\talt={`${selectedWallet.name} logo`}\n\t\t\t/>\n\t\t\t<div className={styles.title}>\n\t\t\t\t<Heading as=\"h2\" size=\"xl\">\n\t\t\t\t\tOpening {selectedWallet.name}\n\t\t\t\t</Heading>\n\t\t\t</div>\n\t\t\t<div className={styles.connectionStatus}>\n\t\t\t\t{hadConnectionError ? (\n\t\t\t\t\t<Text color=\"danger\">Connection failed</Text>\n\t\t\t\t) : (\n\t\t\t\t\t<Text color=\"muted\">Confirm connection in the wallet...</Text>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t{hadConnectionError ? (\n\t\t\t\t<div className={styles.retryButtonContainer}>\n\t\t\t\t\t<Button type=\"button\" variant=\"outline\" onClick={() => onRetryConnection(selectedWallet)}>\n\t\t\t\t\t\tRetry Connection\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t) : null}\n\t\t</div>\n\t);\n}\n", "import 'src/components/connect-modal/InfoSection.css.ts.vanilla.css?source=LkluZm9TZWN0aW9uX2NvbnRhaW5lcl9fMXd0aW9pNzAgewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBnYXA6IDRweDsKfQ==';\nexport var container = 'InfoSection_container__1wtioi70';", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Heading } from '../ui/Heading.js';\nimport { Text } from '../ui/Text.js';\nimport * as styles from './InfoSection.css.js';\n\ntype InfoSectionProps = {\n\ttitle: string;\n\tchildren: string;\n};\n\nexport function InfoSection({ title, children }: InfoSectionProps) {\n\treturn (\n\t\t<section className={styles.container}>\n\t\t\t<Heading as=\"h3\" size=\"sm\" weight=\"normal\">\n\t\t\t\t{title}\n\t\t\t</Heading>\n\t\t\t<Text weight=\"medium\" color=\"muted\">\n\t\t\t\t{children}\n\t\t\t</Text>\n\t\t</section>\n\t);\n}\n", "import 'src/components/connect-modal/views/GettingStarted.css.ts.vanilla.css?source=LkdldHRpbmdTdGFydGVkX2NvbnRhaW5lcl9fMWZwMDdlMTAgewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBhbGlnbi1pdGVtczogY2VudGVyOwp9Ci5HZXR0aW5nU3RhcnRlZF9jb250ZW50X18xZnAwN2UxMSB7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIGZsZXgtZ3JvdzogMTsKICBnYXA6IDIwcHg7CiAgcGFkZGluZzogNDBweDsKfQouR2V0dGluZ1N0YXJ0ZWRfaW5zdGFsbEJ1dHRvbkNvbnRhaW5lcl9fMWZwMDdlMTIgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBib3R0b206IDIwcHg7CiAgcmlnaHQ6IDIwcHg7Cn0=';\nexport var container = 'GettingStarted_container__1fp07e10';\nexport var content = 'GettingStarted_content__1fp07e11';\nexport var installButtonContainer = 'GettingStarted_installButtonContainer__1fp07e12';", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Button } from '../../ui/Button.js';\nimport { Heading } from '../../ui/Heading.js';\nimport { InfoSection } from '../InfoSection.js';\nimport * as styles from './GettingStarted.css.js';\n\nexport function GettingStarted() {\n\treturn (\n\t\t<div className={styles.container}>\n\t\t\t<Heading as=\"h2\">Get Started with Sui</Heading>\n\t\t\t<div className={styles.content}>\n\t\t\t\t<InfoSection title=\"Install the Sui Wallet Extension\">\n\t\t\t\t\tWe recommend pinning Sui Wallet to your taskbar for quicker access.\n\t\t\t\t</InfoSection>\n\t\t\t\t<InfoSection title=\"Create or Import a Wallet\">\n\t\t\t\t\tBe sure to back up your wallet using a secure method. Never share your secret phrase with\n\t\t\t\t\tanyone.\n\t\t\t\t</InfoSection>\n\t\t\t\t<InfoSection title=\"Refresh Your Browser\">\n\t\t\t\t\tOnce you set up your wallet, refresh this window browser to load up the extension.\n\t\t\t\t</InfoSection>\n\t\t\t\t<div className={styles.installButtonContainer}>\n\t\t\t\t\t<Button variant=\"outline\" asChild>\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\thref=\"https://chrome.google.com/webstore/detail/sui-wallet/opcgpfmipidbgpenhmajoajpbobppdil\"\n\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\trel=\"noreferrer\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tInstall Wallet Extension\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n", "import 'src/components/connect-modal/views/WhatIsAWallet.css.ts.vanilla.css?source=LldoYXRJc0FXYWxsZXRfY29udGFpbmVyX18xa3Rwa3E5MCB7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KLldoYXRJc0FXYWxsZXRfY29udGVudF9fMWt0cGtxOTEgewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBmbGV4LWdyb3c6IDE7CiAgZ2FwOiAyMHB4OwogIHBhZGRpbmc6IDQwcHg7Cn0=';\nexport var container = 'WhatIsAWallet_container__1ktpkq90';\nexport var content = 'WhatIsAWallet_content__1ktpkq91';", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Heading } from '../../ui/Heading.js';\nimport { InfoSection } from '../InfoSection.js';\nimport * as styles from './WhatIsAWallet.css.js';\n\nexport function WhatIsAWallet() {\n\treturn (\n\t\t<div className={styles.container}>\n\t\t\t<Heading as=\"h2\">What is a Wallet</Heading>\n\t\t\t<div className={styles.content}>\n\t\t\t\t<InfoSection title=\"Easy Login\">\n\t\t\t\t\tNo need to create new accounts and passwords for every website. Just connect your wallet\n\t\t\t\t\tand get going.\n\t\t\t\t</InfoSection>\n\t\t\t\t<InfoSection title=\"Store your Digital Assets\">\n\t\t\t\t\tSend, receive, store, and display your digital assets like NFTs & coins.\n\t\t\t\t</InfoSection>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useWalletStore } from './useWalletStore.js';\n\n/**\n * Retrieves a list of registered wallets available to the dApp sorted by preference.\n */\nexport function useWallets() {\n\treturn useWalletStore((state) => state.wallets);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ComponentProps } from 'react';\n\nexport function SuiIcon(props: ComponentProps<'svg'>) {\n\treturn (\n\t\t<svg width={28} height={28} fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n\t\t\t<rect width={28} height={28} rx={6} fill=\"#6FBCF0\" />\n\t\t\t<path\n\t\t\t\tfillRule=\"evenodd\"\n\t\t\t\tclipRule=\"evenodd\"\n\t\t\t\td=\"M7.942 20.527A6.875 6.875 0 0 0 13.957 24c2.51 0 4.759-1.298 6.015-3.473a6.875 6.875 0 0 0 0-6.945l-5.29-9.164a.837.837 0 0 0-1.45 0l-5.29 9.164a6.875 6.875 0 0 0 0 6.945Zm4.524-11.75 1.128-1.953a.418.418 0 0 1 .725 0l4.34 7.516a5.365 5.365 0 0 1 .449 4.442 4.675 4.675 0 0 0-.223-.73c-.599-1.512-1.954-2.68-4.029-3.47-1.426-.54-2.336-1.336-2.706-2.364-.476-1.326.021-2.77.316-3.44Zm-1.923 3.332L9.255 14.34a5.373 5.373 0 0 0 0 5.43 5.373 5.373 0 0 0 4.702 2.714 5.38 5.38 0 0 0 3.472-1.247c.125-.314.51-1.462.034-2.646-.44-1.093-1.5-1.965-3.15-2.594-1.864-.707-3.076-1.811-3.6-3.28a4.601 4.601 0 0 1-.17-.608Z\"\n\t\t\t\tfill=\"#fff\"\n\t\t\t/>\n\t\t</svg>\n\t);\n}\n", "import 'src/components/connect-modal/wallet-list/WalletList.css.ts.vanilla.css?source=LldhbGxldExpc3RfY29udGFpbmVyX18xdjJzNmN6MCB7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIGdhcDogNHB4Owp9';\nexport var container = 'WalletList_container__1v2s6cz0';", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { clsx } from 'clsx';\nimport type { ReactNode } from 'react';\n\nimport { Heading } from '../../ui/Heading.js';\nimport * as styles from './WalletListItem.css.js';\n\ntype WalletListItemProps = {\n\tname: string;\n\ticon: ReactNode;\n\tisSelected?: boolean;\n\tonClick: () => void;\n};\n\nexport function WalletListItem({ name, icon, onClick, isSelected = false }: WalletListItemProps) {\n\treturn (\n\t\t<li className={styles.container}>\n\t\t\t<button\n\t\t\t\tclassName={clsx(styles.walletItem, { [styles.selectedWalletItem]: isSelected })}\n\t\t\t\ttype=\"button\"\n\t\t\t\tonClick={onClick}\n\t\t\t>\n\t\t\t\t{typeof icon === 'string' ? (\n\t\t\t\t\t<img className={styles.walletIcon} src={icon} alt={`${name} logo`} />\n\t\t\t\t) : (\n\t\t\t\t\ticon\n\t\t\t\t)}\n\t\t\t\t<Heading size=\"md\" truncate asChild>\n\t\t\t\t\t<div>{name}</div>\n\t\t\t\t</Heading>\n\t\t\t</button>\n\t\t</li>\n\t);\n}\n", "import 'src/components/connect-modal/wallet-list/WalletListItem.css.ts.vanilla.css?source=LldhbGxldExpc3RJdGVtX2NvbnRhaW5lcl9fMWRxcXRxczAgewogIGRpc3BsYXk6IGZsZXg7Cn0KLldhbGxldExpc3RJdGVtX3dhbGxldEl0ZW1fXzFkcXF0cXMxIHsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZmxleC1ncm93OiAxOwogIHBhZGRpbmc6IDhweDsKICBnYXA6IDhweDsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1kYXBwLWtpdC1yYWRpaS1sYXJnZSk7Cn0KLldhbGxldExpc3RJdGVtX3dhbGxldEl0ZW1fXzFkcXF0cXMxOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1kYXBwLWtpdC1iYWNrZ3JvdW5kQ29sb3JzLXdhbGxldEl0ZW1Ib3Zlcik7Cn0KLldhbGxldExpc3RJdGVtX3NlbGVjdGVkV2FsbGV0SXRlbV9fMWRxcXRxczIgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWRhcHAta2l0LWJhY2tncm91bmRDb2xvcnMtd2FsbGV0SXRlbVNlbGVjdGVkKTsKICBib3gtc2hhZG93OiAwcHggMnB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMDUpOwp9Ci5XYWxsZXRMaXN0SXRlbV93YWxsZXRJY29uX18xZHFxdHFzMyB7CiAgd2lkdGg6IDI4cHg7CiAgaGVpZ2h0OiAyOHB4OwogIGZsZXgtc2hyaW5rOiAwOwogIG9iamVjdC1maXQ6IGNvdmVyOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLWRhcHAta2l0LXJhZGlpLXNtYWxsKTsKfQ==';\nexport var container = 'WalletListItem_container__1dqqtqs0';\nexport var selectedWalletItem = 'WalletListItem_selectedWalletItem__1dqqtqs2';\nexport var walletIcon = 'WalletListItem_walletIcon__1dqqtqs3';\nexport var walletItem = 'WalletListItem_walletItem__1dqqtqs1';", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletWithRequiredFeatures } from '@mysten/wallet-standard';\n\nimport { useWallets } from '../../../hooks/wallet/useWallets.js';\nimport { getWalletUniqueIdentifier } from '../../../utils/walletUtils.js';\nimport { SuiIcon } from '../../icons/SuiIcon.js';\nimport * as styles from './WalletList.css.js';\nimport { WalletListItem } from './WalletListItem.js';\n\ntype WalletListProps = {\n\tselectedWalletName?: string;\n\tonPlaceholderClick: () => void;\n\tonSelect: (wallet: WalletWithRequiredFeatures) => void;\n};\n\nexport function WalletList({ selectedWalletName, onPlaceholderClick, onSelect }: WalletListProps) {\n\tconst wallets = useWallets();\n\treturn (\n\t\t<ul className={styles.container}>\n\t\t\t{wallets.length > 0 ? (\n\t\t\t\twallets.map((wallet) => (\n\t\t\t\t\t<WalletListItem\n\t\t\t\t\t\tkey={getWalletUniqueIdentifier(wallet)}\n\t\t\t\t\t\tname={wallet.name}\n\t\t\t\t\t\ticon={wallet.icon}\n\t\t\t\t\t\tisSelected={getWalletUniqueIdentifier(wallet) === selectedWalletName}\n\t\t\t\t\t\tonClick={() => onSelect(wallet)}\n\t\t\t\t\t/>\n\t\t\t\t))\n\t\t\t) : (\n\t\t\t\t<WalletListItem\n\t\t\t\t\tname=\"Sui Wallet\"\n\t\t\t\t\ticon={<SuiIcon />}\n\t\t\t\t\tonClick={onPlaceholderClick}\n\t\t\t\t\tisSelected\n\t\t\t\t/>\n\t\t\t)}\n\t\t</ul>\n\t);\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;;;ACGA,IAAAA,gBAA2B;AAC3B,qBAAyB;;;ACDzB,mBAA8B;AAIvB,IAAM,oBAAgB,4BAAkC,IAAI;;;ADE5D,SAAS,eAAkB,UAAuC;AACxE,QAAM,YAAQ,0BAAW,aAAa;AACtC,MAAI,CAAC,OAAO;AACX,UAAM,IAAI;AAAA,MACT;AAAA,IACD;AAAA,EACD;AACA,aAAO,yBAAS,OAAO,QAAQ;AAChC;;;AEPO,SAAS,oBAA0C;AACzD,SAAO,eAAe,CAAC,UAAU,MAAM,cAAc;AACtD;;;ACTA,mBAA8B;AAE9B,mBAA8B;AAC9B,IAAAC,eAAiB;;;ACDjB,yBAAyB;;;ACDzB,IAAAC,gBAA2B;;;ACD3B,oBAAuD;AAEvD,IAAAC,gBAAiD;AAyFzC;AAxED,IAAM,uBAAmB,6BAA+C,IAAI;AAkBnF,IAAM,mBAAmB;AAAA,EACxB,UAAU,EAAE,SAAK,8BAAe,UAAU,EAAE;AAC7C;;;ADlCO,SAAS,sBAAsB;AACrC,QAAM,gBAAY,0BAAW,gBAAgB;AAE7C,MAAI,CAAC,WAAW;AACf,UAAM,IAAI;AAAA,MACT;AAAA,IACD;AAAA,EACD;AAEA,SAAO;AACR;;;ADmBO,SAAS,qBAIZ,MAG4B;AAC/B,QAAM,CAAC,QAAQ,QAAQ,EAAE,WAAW,CAAC,GAAG,GAAG,QAAQ,IAAI,CAAC,CAAC,IAAI;AAM7D,QAAM,aAAa,oBAAoB;AAEvC,aAAO,6BAAS;AAAA,IACf,GAAG;AAAA,IACH,UAAU,CAAC,WAAW,SAAS,QAAQ,QAAQ,GAAG,QAAQ;AAAA,IAC1D,SAAS,YAAY;AACpB,aAAO,MAAM,WAAW,OAAO,MAAM,EAAE,MAAe;AAAA,IACvD;AAAA,EACD,CAAC;AACF;;;AGpDO,SAAS,oBACf,SACA,SAIuC;AACvC,SAAO;AAAA,IACN;AAAA,IACA;AAAA,MACC;AAAA,MACA,OAAO;AAAA,IACR;AAAA,IACA;AAAA,MACC,GAAG;AAAA,MACH,sBAAsB;AAAA,MACtB,OAAO;AAAA,MACP,QAAQ,CAAC,SAAU,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,CAAC,IAAI;AAAA,MACzD,SAAS,CAAC,CAAC,WAAW,SAAS,YAAY;AAAA,IAC5C;AAAA,EACD;AACD;;;ACnBO,SAAS,cAAwC;AACvD,SAAO,eAAe,CAAC,UAAU,MAAM,QAAQ;AAChD;;;ACRA,IAAAC,sBAA4B;;;ACCrB,IAAM,qBAAqB;AAAA,EACjC,KAAK,EAAE,WAAW,SAAS;AAAA,EAC3B,eAAe,kBAAkB,gBAAgB;AAAA,EACjD,mBAAmB,kBAAkB,oBAAoB;AAAA,EACzD,kBAAkB,kBAAkB,mBAAmB;AAAA,EACvD,qBAAqB,kBAAkB,uBAAuB;AAAA,EAC9D,sBAAsB,kBAAkB,wBAAwB;AAAA,EAChE,gCAAgC,kBAAkB,oCAAoC;AAAA,EACtF,eAAe,kBAAkB,gBAAgB;AAClD;AAEA,SAAS,kBAAkB,YAAoB;AAC9C,SAAO,SAAS,cAAc,iBAA8B,CAAC,GAAG;AAC/D,WAAO,CAAC,EAAE,GAAG,mBAAmB,KAAK,WAAW,GAAG,GAAG,cAAc;AAAA,EACrE;AACD;;;ACdO,IAAM,0BAAN,cAAsC,MAAM;AAAC;AAiB7C,IAAM,6BAAN,cAAyC,MAAM;AAAC;;;ACfhD,SAAS,mBAAmB;AAClC,QAAM,gBAAgB,eAAe,CAAC,UAAU,MAAM,aAAa;AACnE,QAAMC,oBAAmB,eAAe,CAAC,UAAU,MAAM,gBAAgB;AAEzE,UAAQA,mBAAkB;AAAA,IACzB,KAAK;AACJ,aAAO;AAAA,QACN,kBAAAA;AAAA,QACA,eAAe;AAAA,QACf,gBAAgB;AAAA,QAChB,cAAc;AAAA,QACd,aAAa;AAAA,MACd;AAAA,IACD,KAAK;AACJ,aAAO;AAAA,QACN,kBAAAA;AAAA,QACA,eAAe;AAAA,QACf,gBAAgB;AAAA,QAChB,cAAc;AAAA,QACd,aAAa;AAAA,MACd;AAAA,IACD,KAAK,aAAa;AACjB,aAAO;AAAA,QACN,kBAAAA;AAAA,QACA;AAAA,QACA,gBAAgB;AAAA,QAChB,cAAc;AAAA,QACd,aAAa;AAAA,MACd;AAAA,IACD;AAAA,EACD;AACD;;;AHlBO,SAAS,oBAAoB;AAAA,EACnC;AAAA,EACA,GAAG;AACJ,IAAwC,CAAC,GAIvC;AACD,QAAM,EAAE,cAAc,IAAI,iBAAiB;AAC3C,QAAM,wBAAwB,eAAe,CAAC,UAAU,MAAM,qBAAqB;AAEnF,aAAO,iCAAY;AAAA,IAClB,aAAa,mBAAmB,iBAAiB,WAAW;AAAA,IAC5D,YAAY,YAAY;AACvB,UAAI,CAAC,eAAe;AACnB,cAAM,IAAI,wBAAwB,yBAAyB;AAAA,MAC5D;AAEA,UAAI;AAIH,cAAM,cAAc,SAAS,qBAAqB,GAAG,WAAW;AAAA,MACjE,SAAS,OAAP;AACD,gBAAQ,MAAM,iEAAiE,KAAK;AAAA,MACrF;AAEA,4BAAsB;AAAA,IACvB;AAAA,IACA,GAAG;AAAA,EACJ,CAAC;AACF;;;AI/CA,IAAAC,sBAA4B;AAuBrB,SAAS,iBAAiB;AAAA,EAChC;AAAA,EACA,GAAG;AACJ,IAAqC,CAAC,GAIpC;AACD,QAAM,EAAE,cAAc,IAAI,iBAAiB;AAC3C,QAAM,qBAAqB,eAAe,CAAC,UAAU,MAAM,kBAAkB;AAE7E,aAAO,iCAAY;AAAA,IAClB,aAAa,mBAAmB,cAAc,WAAW;AAAA,IACzD,YAAY,OAAO,EAAE,QAAQ,MAAM;AAClC,UAAI,CAAC,eAAe;AACnB,cAAM,IAAI,wBAAwB,yBAAyB;AAAA,MAC5D;AAEA,YAAM,kBAAkB,cAAc,SAAS;AAAA,QAC9C,CAAC,kBAAkB,cAAc,YAAY,QAAQ;AAAA,MACtD;AACA,UAAI,CAAC,iBAAiB;AACrB,cAAM,IAAI;AAAA,UACT,2BAA2B,QAAQ,2BAA2B,cAAc;AAAA,QAC7E;AAAA,MACD;AAEA,yBAAmB,eAAe;AAAA,IACnC;AAAA,IACA,GAAG;AAAA,EACJ,CAAC;AACF;;;AC1DO,IAAI,mBAAmB;AACvB,IAAI,gBAAgB;AACpB,IAAI,cAAc;AAClB,IAAI,WAAW;AACf,IAAI,YAAY;AAChB,IAAI,wBAAwB;;;ACEhC,IAAAC,sBAAA;AAHI,SAAS,UAAU,OAA8B;AACvD,SACC,6CAAC,SAAI,OAAM,8BAA6B,OAAO,IAAI,QAAQ,IAAI,MAAK,QAAQ,GAAG,OAC9E;AAAA,IAAC;AAAA;AAAA,MACA,MAAK;AAAA,MACL,GAAE;AAAA;AAAA,EACH,GACD;AAEF;;;ACNG,IAAAC,sBAAA;AAHI,SAAS,YAAY,OAA8B;AACzD,SACC,6CAAC,SAAI,OAAM,8BAA6B,OAAO,IAAI,QAAQ,IAAI,MAAK,QAAQ,GAAG,OAC9E;AAAA,IAAC;AAAA;AAAA,MACA,QAAO;AAAA,MACP,eAAc;AAAA,MACd,gBAAe;AAAA,MACf,aAAa;AAAA,MACb,GAAE;AAAA;AAAA,EACH,GACD;AAEF;;;ACdA,wBAAqB;AAErB,IAAAC,gBAA2B;;;ACFpB,IAAM,yBAAyB;AAE/B,IAAM,6BAA6B,IAAI;AAEvC,IAAM,qBAAqB,EAAE,CAAC,sBAAsB,GAAG,GAAG;;;ADEjE,6BAAO;AAUN,IAAAC,sBAAA;AAJM,IAAM,kBAAc,0BAGzB,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,iBAC1B,6CAAC,0BAAK,KAAK,cAAe,GAAG,OAAQ,GAAG,oBACtC,UACF,CACA;AACD,YAAY,cAAc;;;AEpB1B,IAAAC,qBAAqB;AACrB,kBAAiB;AAEjB,IAAAC,gBAA2B;;;ACL3B,6BAA0C;AACnC,IAAI,qBAAiB,uBAAAC,iBAAO,EAAC,kBAAiB,kCAAiC,mBAAkB,EAAC,SAAQ,EAAC,SAAQ,kDAAiD,SAAQ,iDAAgD,GAAE,MAAK,EAAC,IAAG,0CAAyC,IAAG,yCAAwC,EAAC,GAAE,iBAAgB,EAAC,SAAQ,WAAU,MAAK,KAAI,GAAE,kBAAiB,CAAC,EAAC,CAAC;;;ADkBpY,IAAAC,sBAAA;AAJH,IAAM,aAAS;AAAA,EACd,CAAC,EAAE,WAAW,SAAS,MAAM,UAAU,OAAO,GAAG,MAAM,GAAG,iBAAiB;AAC1E,UAAM,OAAO,UAAU,0BAAO;AAC9B,WACC;AAAA,MAAC;AAAA;AAAA,QACC,GAAG;AAAA,QACJ,eAAW,YAAAC,SAAK,eAAe,EAAE,SAAS,KAAK,CAAC,GAAG,SAAS;AAAA,QAC5D,KAAK;AAAA;AAAA,IACN;AAAA,EAEF;AACD;AACA,OAAO,cAAc;;;AEzBrB,IAAAC,qBAAqB;AACrB,IAAAC,eAAiB;AACjB,IAAAC,gBAA2B;;;ACJ3B,IAAAC,0BAA0C;AACnC,IAAI,mBAAe,wBAAAC,iBAAO,EAAC,kBAAiB,iBAAgB,mBAAkB,EAAC,MAAK,EAAC,IAAG,qCAAoC,GAAE,QAAO,EAAC,QAAO,4CAA2C,QAAO,4CAA2C,MAAK,yCAAwC,GAAE,OAAM,EAAC,OAAM,0CAAyC,QAAO,0CAAyC,GAAE,MAAK,EAAC,MAAK,uCAAsC,EAAC,GAAE,iBAAgB,EAAC,MAAK,MAAK,QAAO,SAAQ,GAAE,kBAAiB,CAAC,EAAC,CAAC;;;ADwCle,IAAAC,sBAAA;AArB1B,IAAM,WAAO;AAAA,EACZ,CACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV,IAAI,MAAM;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACJ,GACA,iBACI;AACJ,WACC;AAAA,MAAC;AAAA;AAAA,QACC,GAAG;AAAA,QACJ,KAAK;AAAA,QACL,eAAW,aAAAC,SAAK,aAAa,EAAE,MAAM,QAAQ,OAAO,KAAK,CAAC,GAAG,SAAS;AAAA,QAErE,oBAAU,WAAW,6CAAC,OAAK,UAAS;AAAA;AAAA,IACtC;AAAA,EAEF;AACD;AACA,KAAK,cAAc;;;AlBZd,IAAAC,sBAAA;AAZE,SAAS,oBAAoB,EAAE,eAAe,GAA6B;AACjF,QAAM,EAAE,QAAQ,iBAAiB,IAAI,oBAAoB;AAEzD,QAAM,EAAE,MAAM,OAAO,IAAI;AAAA,IACxB,eAAe,QAAQ,OAAO,eAAe;AAAA,EAC9C;AACA,QAAM,WAAW,YAAY;AAE7B,SACC,8CAAc,mBAAb,EAAkB,OAAO,OACzB;AAAA,iDAAC,eACA,uDAAc,sBAAb,EAAqB,SAAO,MAC5B,wDAAC,UAAO,MAAK,MAAK,WAAkB,kBACnC;AAAA,mDAAC,QAAK,MAAI,MAAC,QAAO,QAChB,yBAAe,SAAS,cAAU,4BAAc,eAAe,OAAO,GACxE;AAAA,MACA,6CAAC,eAAY;AAAA,OACd,GACD,GACD;AAAA,IACA,6CAAc,qBAAb,EACA,uDAAC,eAAY,WAAkB,eAC9B,wDAAc,sBAAb,EAAqB,WAAkB,aACtC;AAAA,eAAS,IAAI,CAAC,YACd;AAAA,QAAC;AAAA;AAAA,UAEA;AAAA,UACA,QAAQ,eAAe,YAAY,QAAQ;AAAA;AAAA,QAFtC,QAAQ;AAAA,MAGd,CACA;AAAA,MACD,6CAAc,wBAAb,EAAuB,WAAkB,WAAW;AAAA,MACrD;AAAA,QAAc;AAAA,QAAb;AAAA,UACA,eAAW,aAAAC,SAAY,QAAQ;AAAA,UAC/B,UAAU,MAAM,iBAAiB;AAAA,UACjC;AAAA;AAAA,MAED;AAAA,OACD,GACD,GACD;AAAA,KACD;AAEF;AAEO,SAAS,wBAAwB;AAAA,EACvC;AAAA,EACA;AACD,GAGG;AACF,QAAM,EAAE,QAAQ,cAAc,IAAI,iBAAiB;AACnD,QAAM,EAAE,MAAM,OAAO,IAAI,oBAAoB,QAAQ,QAAQ,OAAO,QAAQ,OAAO;AAEnF,SACC;AAAA,IAAc;AAAA,IAAb;AAAA,MACA,eAAW,aAAAA,SAAY,UAAiB,qBAAqB;AAAA,MAC7D,UAAU,MAAM,cAAc,EAAE,QAAQ,CAAC;AAAA,MAEzC;AAAA,qDAAC,QAAK,MAAI,MAAE,kBAAQ,SAAS,cAAU,4BAAc,QAAQ,OAAO,GAAE;AAAA,QACrE,SAAS,6CAAC,aAAU,IAAK;AAAA;AAAA;AAAA,EAC3B;AAEF;;;AoBlFA,aAAwB;AACxB,IAAAC,eAAiB;AACjB,IAAAC,iBAAyB;;;ACIzB,IAAAC,sBAA4B;AAuBrB,SAAS,iBAAiB;AAAA,EAChC;AAAA,EACA,GAAG;AACJ,IAAqC,CAAC,GAKpC;AACD,QAAM,qBAAqB,eAAe,CAAC,UAAU,MAAM,kBAAkB;AAC7E,QAAM,sBAAsB,eAAe,CAAC,UAAU,MAAM,mBAAmB;AAE/E,aAAO,iCAAY;AAAA,IAClB,aAAa,mBAAmB,cAAc,WAAW;AAAA,IACzD,YAAY,OAAO,EAAE,QAAQ,gBAAgB,GAAG,YAAY,MAAM;AACjE,UAAI;AACH,4BAAoB,YAAY;AAEhC,cAAM,gBAAgB,MAAM,OAAO,SAAS,kBAAkB,EAAE,QAAQ,WAAW;AACnF,cAAM,uBAAuB,cAAc,SAAS;AAAA,UAAO,CAAC,YAC3D,QAAQ,OAAO,KAAK,CAAC,UAAU,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,KAAK;AAAA,QAC7D;AACA,cAAM,kBAAkB,mBAAmB,sBAAsB,cAAc;AAE/E,2BAAmB,QAAQ,sBAAsB,eAAe;AAEhE,eAAO,EAAE,UAAU,qBAAqB;AAAA,MACzC,SAAS,OAAP;AACD,4BAAoB,cAAc;AAClC,cAAM;AAAA,MACP;AAAA,IACD;AAAA,IACA,GAAG;AAAA,EACJ,CAAC;AACF;AAEA,SAAS,mBAAmB,mBAA6C,gBAAyB;AACjG,MAAI,kBAAkB,WAAW,GAAG;AACnC,WAAO;AAAA,EACR;AAEA,MAAI,gBAAgB;AACnB,UAAM,kBAAkB,kBAAkB,KAAK,CAAC,YAAY,QAAQ,YAAY,cAAc;AAC9F,WAAO,mBAAmB,kBAAkB,CAAC;AAAA,EAC9C;AAEA,SAAO,kBAAkB,CAAC;AAC3B;;;ACxEA,6BAA2D;AAyBpD,SAAS,0BAA0B,QAAiB;AAC1D,SAAO,QAAQ,MAAM,QAAQ;AAC9B;;;ACzBG,IAAAC,sBAAA;AAHI,SAAS,SAAS,OAA8B;AACtD,SACC,6CAAC,SAAI,OAAO,IAAI,QAAQ,IAAI,MAAK,QAAO,OAAM,8BAA8B,GAAG,OAC9E;AAAA,IAAC;AAAA;AAAA,MACA,GAAE;AAAA,MACF,MAAK;AAAA;AAAA,EACN,GACD;AAEF;;;ACRG,IAAAC,sBAAA;AAHI,SAAS,UAAU,OAA8B;AACvD,SACC,6CAAC,SAAI,OAAO,IAAI,QAAQ,IAAI,MAAK,QAAO,OAAM,8BAA8B,GAAG,OAC9E;AAAA,IAAC;AAAA;AAAA,MACA,GAAE;AAAA,MACF,MAAK;AAAA;AAAA,EACN,GACD;AAEF;;;ACXA,IAAAC,qBAAqB;AACrB,IAAAC,eAAiB;AACjB,IAAAC,gBAA2B;;;ACJ3B,IAAAC,0BAA0C;AACnC,IAAI,sBAAkB,wBAAAC,iBAAO,EAAC,kBAAiB,qBAAoB,mBAAkB,EAAC,MAAK,EAAC,IAAG,6CAA4C,IAAG,6CAA4C,IAAG,6CAA4C,IAAG,4CAA2C,GAAE,QAAO,EAAC,QAAO,mDAAkD,MAAK,gDAA+C,GAAE,UAAS,EAAC,MAAK,kDAAiD,EAAC,GAAE,iBAAgB,EAAC,MAAK,MAAK,QAAO,OAAM,GAAE,kBAAiB,CAAC,EAAC,CAAC;;;AD0C9f,IAAAC,uBAAA;AApB1B,IAAM,cAAU;AAAA,EACf,CACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV,IAAI,MAAM;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACJ,GACA,iBACI;AACJ,WACC;AAAA,MAAC;AAAA;AAAA,QACC,GAAG;AAAA,QACJ,KAAK;AAAA,QACL,eAAW,aAAAC,SAAK,gBAAgB,EAAE,MAAM,QAAQ,SAAS,CAAC,GAAG,SAAS;AAAA,QAErE,oBAAU,WAAW,8CAAC,OAAK,UAAS;AAAA;AAAA,IACtC;AAAA,EAEF;AACD;AACA,QAAQ,cAAc;;;AE9CtB,IAAAC,qBAAqB;AACrB,IAAAC,eAAiB;AAEjB,IAAAC,gBAA2B;;;ACLpB,IAAI,YAAY;;;ADiBd,IAAAC,uBAAA;AAHT,IAAM,iBAAa;AAAA,EAClB,CAAC,EAAE,WAAW,UAAU,OAAO,GAAG,MAAM,GAAG,iBAAiB;AAC3D,UAAM,OAAO,UAAU,0BAAO;AAC9B,WAAO,8CAAC,QAAM,GAAG,OAAO,eAAW,aAAAC,SAAY,WAAW,SAAS,GAAG,KAAK,cAAc;AAAA,EAC1F;AACD;AACA,WAAW,cAAc;;;AEpBlB,IAAI,sBAAsB;AAC1B,IAAI,uBAAuB;AAC3B,IAAI,UAAU;AACd,IAAI,UAAU;AACd,IAAI,wBAAwB;AAC5B,IAAI,QAAQ;AACZ,IAAI,gBAAgB;AACpB,IAAI,sBAAsB;AAC1B,IAAI,sCAAsC;AAC1C,IAAI,oBAAoB;AACxB,IAAI,sBAAsB;;;ACV1B,IAAI,mBAAmB;AACvB,IAAIC,aAAY;AAChB,IAAI,uBAAuB;AAC3B,IAAIC,SAAQ;AACZ,IAAI,aAAa;;;ACkBrB,IAAAC,uBAAA;AAPI,SAAS,iBAAiB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AACD,GAA0B;AACzB,SACC,+CAAC,SAAI,WAAkBC,YACtB;AAAA;AAAA,MAAC;AAAA;AAAA,QACA,WAAkB;AAAA,QAClB,KAAK,eAAe;AAAA,QACpB,KAAK,GAAG,eAAe;AAAA;AAAA,IACxB;AAAA,IACA,8CAAC,SAAI,WAAkBC,QACtB,yDAAC,WAAQ,IAAG,MAAK,MAAK,MAAK;AAAA;AAAA,MACjB,eAAe;AAAA,OACzB,GACD;AAAA,IACA,8CAAC,SAAI,WAAkB,kBACrB,+BACA,8CAAC,QAAK,OAAM,UAAS,+BAAiB,IAEtC,8CAAC,QAAK,OAAM,SAAQ,iDAAmC,GAEzD;AAAA,IACC,qBACA,8CAAC,SAAI,WAAkB,sBACtB,wDAAC,UAAO,MAAK,UAAS,SAAQ,WAAU,SAAS,MAAM,kBAAkB,cAAc,GAAG,8BAE1F,GACD,IACG;AAAA,KACL;AAEF;;;AChDO,IAAIC,aAAY;;;ACarB,IAAAC,uBAAA;AAFK,SAAS,YAAY,EAAE,OAAAC,QAAO,SAAS,GAAqB;AAClE,SACC,+CAAC,aAAQ,WAAkBC,YAC1B;AAAA,kDAAC,WAAQ,IAAG,MAAK,MAAK,MAAK,QAAO,UAChC,UAAAD,QACF;AAAA,IACA,8CAAC,QAAK,QAAO,UAAS,OAAM,SAC1B,UACF;AAAA,KACD;AAEF;;;ACtBO,IAAIE,aAAY;AAChB,IAAIC,WAAU;AACd,IAAI,yBAAyB;;;ACQjC,IAAAC,uBAAA;AAHI,SAAS,iBAAiB;AAChC,SACC,+CAAC,SAAI,WAAkBC,YACtB;AAAA,kDAAC,WAAQ,IAAG,MAAK,kCAAoB;AAAA,IACrC,+CAAC,SAAI,WAAkBC,UACtB;AAAA,oDAAC,eAAY,OAAM,oCAAmC,iFAEtD;AAAA,MACA,8CAAC,eAAY,OAAM,6BAA4B,+GAG/C;AAAA,MACA,8CAAC,eAAY,OAAM,wBAAuB,gGAE1C;AAAA,MACA,8CAAC,SAAI,WAAkB,wBACtB,wDAAC,UAAO,SAAQ,WAAU,SAAO,MAChC;AAAA,QAAC;AAAA;AAAA,UACA,MAAK;AAAA,UACL,QAAO;AAAA,UACP,KAAI;AAAA,UACJ;AAAA;AAAA,MAED,GACD,GACD;AAAA,OACD;AAAA,KACD;AAEF;;;ACpCO,IAAIC,aAAY;AAChB,IAAIC,WAAU;;;ACQlB,IAAAC,uBAAA;AAHI,SAAS,gBAAgB;AAC/B,SACC,+CAAC,SAAI,WAAkBC,YACtB;AAAA,kDAAC,WAAQ,IAAG,MAAK,8BAAgB;AAAA,IACjC,+CAAC,SAAI,WAAkBC,UACtB;AAAA,oDAAC,eAAY,OAAM,cAAa,qHAGhC;AAAA,MACA,8CAAC,eAAY,OAAM,6BAA4B,sFAE/C;AAAA,OACD;AAAA,KACD;AAEF;;;ACdO,SAAS,aAAa;AAC5B,SAAO,eAAe,CAAC,UAAU,MAAM,OAAO;AAC/C;;;ACHE,IAAAC,uBAAA;AAFK,SAAS,QAAQ,OAA8B;AACrD,SACC,+CAAC,SAAI,OAAO,IAAI,QAAQ,IAAI,MAAK,QAAO,OAAM,8BAA8B,GAAG,OAC9E;AAAA,kDAAC,UAAK,OAAO,IAAI,QAAQ,IAAI,IAAI,GAAG,MAAK,WAAU;AAAA,IACnD;AAAA,MAAC;AAAA;AAAA,QACA,UAAS;AAAA,QACT,UAAS;AAAA,QACT,GAAE;AAAA,QACF,MAAK;AAAA;AAAA,IACN;AAAA,KACD;AAEF;;;AChBO,IAAIC,aAAY;;;ACEvB,IAAAC,eAAqB;;;ACFd,IAAIC,aAAY;AAChB,IAAI,qBAAqB;AACzB,IAAIC,cAAa;AACjB,IAAI,aAAa;;;ADerB,IAAAC,uBAAA;AAHI,SAAS,eAAe,EAAE,MAAM,MAAM,SAAS,aAAa,MAAM,GAAwB;AAChG,SACC,8CAAC,QAAG,WAAkBC,YACrB;AAAA,IAAC;AAAA;AAAA,MACA,eAAW,mBAAY,YAAY,EAAE,CAAQ,kBAAkB,GAAG,WAAW,CAAC;AAAA,MAC9E,MAAK;AAAA,MACL;AAAA,MAEC;AAAA,eAAO,SAAS,WAChB,8CAAC,SAAI,WAAkBC,aAAY,KAAK,MAAM,KAAK,GAAG,aAAa,IAEnE;AAAA,QAED,8CAAC,WAAQ,MAAK,MAAK,UAAQ,MAAC,SAAO,MAClC,wDAAC,SAAK,gBAAK,GACZ;AAAA;AAAA;AAAA,EACD,GACD;AAEF;;;AEZK,IAAAC,uBAAA;AANE,SAAS,WAAW,EAAE,oBAAoB,oBAAoB,SAAS,GAAoB;AACjG,QAAM,UAAU,WAAW;AAC3B,SACC,8CAAC,QAAG,WAAkBC,YACpB,kBAAQ,SAAS,IACjB,QAAQ,IAAI,CAAC,WACZ;AAAA,IAAC;AAAA;AAAA,MAEA,MAAM,OAAO;AAAA,MACb,MAAM,OAAO;AAAA,MACb,YAAY,0BAA0B,MAAM,MAAM;AAAA,MAClD,SAAS,MAAM,SAAS,MAAM;AAAA;AAAA,IAJzB,0BAA0B,MAAM;AAAA,EAKtC,CACA,IAED;AAAA,IAAC;AAAA;AAAA,MACA,MAAK;AAAA,MACL,MAAM,8CAAC,WAAQ;AAAA,MACf,SAAS;AAAA,MACT,YAAU;AAAA;AAAA,EACX,GAEF;AAEF;;;AvBuCkB,IAAAC,uBAAA;AAhCX,SAAS,aAAa,EAAE,SAAS,MAAM,aAAa,aAAa,GAAsB;AAC7F,QAAM,CAAC,aAAa,YAAY,QAAI,yBAAS,QAAQ,WAAW;AAChE,QAAM,CAAC,aAAa,cAAc,QAAI,yBAA2B;AACjE,QAAM,CAAC,gBAAgB,iBAAiB,QAAI,yBAAqC;AACjF,QAAM,EAAE,QAAQ,QAAQ,IAAI,iBAAiB;AAE7C,QAAM,iBAAiB,MAAM;AAC5B,sBAAkB,MAAS;AAC3B,mBAAe,MAAS;AAAA,EACzB;AAEA,QAAM,mBAAmB,CAACC,UAAkB;AAC3C,QAAI,CAACA,OAAM;AACV,qBAAe;AAAA,IAChB;AACA,iBAAaA,KAAI;AACjB,mBAAeA,KAAI;AAAA,EACpB;AAEA,QAAM,gBAAgB,CAAC,WAAuC;AAC7D,mBAAe,mBAAmB;AAClC;AAAA,MACC,EAAE,OAAO;AAAA,MACT;AAAA,QACC,WAAW,MAAM,iBAAiB,KAAK;AAAA,MACxC;AAAA,IACD;AAAA,EACD;AAEA,MAAI;AACJ,UAAQ,aAAa;AAAA,IACpB,KAAK;AACJ,qBAAe,8CAAC,iBAAc;AAC9B;AAAA,IACD,KAAK;AACJ,qBAAe,8CAAC,kBAAe;AAC/B;AAAA,IACD,KAAK;AACJ,qBACC;AAAA,QAAC;AAAA;AAAA,UACA;AAAA,UACA,oBAAoB;AAAA,UACpB,mBAAmB;AAAA;AAAA,MACpB;AAED;AAAA,IACD;AACC,qBAAe,8CAAC,iBAAc;AAAA,EAChC;AAEA,SACC,+CAAQ,aAAP,EAAY,MAAM,QAAQ,aAAa,cAAc,kBACrD;AAAA,kDAAQ,gBAAP,EAAe,SAAO,MAAE,mBAAQ;AAAA,IACjC,8CAAQ,eAAP,EACA,wDAAC,eACA,wDAAQ,gBAAP,EAAe,WAAkB,SACjC,yDAAQ,gBAAP,EAAe,WAAkB,SAAS,oBAAkB,QAC5D;AAAA;AAAA,QAAC;AAAA;AAAA,UACA,eAAW,aAAAC,SAAY,qBAAqB;AAAA,YAC3C,CAAQ,mCAAmC,GAAG,CAAC,CAAC;AAAA,UACjD,CAAC;AAAA,UAED;AAAA,2DAAC,SAAI,WAAkB,mBACtB;AAAA,4DAAQ,cAAP,EAAa,WAAkB,OAAO,SAAO,MAC7C,wDAAC,WAAQ,IAAG,MAAK,8BAAgB,GAClC;AAAA,cACA;AAAA,gBAAC;AAAA;AAAA,kBACA,oBAAoB,0BAA0B,cAAc;AAAA,kBAC5D,oBAAoB,MAAM,eAAe,iBAAiB;AAAA,kBAC1D,UAAU,CAAC,WAAW;AACrB,wBACC,0BAA0B,cAAc,MACxC,0BAA0B,MAAM,GAC/B;AACD,wCAAkB,MAAM;AACxB,oCAAc,MAAM;AAAA,oBACrB;AAAA,kBACD;AAAA;AAAA,cACD;AAAA,eACD;AAAA,YACA;AAAA,cAAC;AAAA;AAAA,gBACA,WAAkB;AAAA,gBAClB,SAAS,MAAM,eAAe,kBAAkB;AAAA,gBAChD,MAAK;AAAA,gBACL;AAAA;AAAA,YAED;AAAA;AAAA;AAAA,MACD;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACA,eAAW,aAAAA,SAAY,eAAe;AAAA,YACrC,CAAQ,qBAAqB,GAAG,CAAC,CAAC;AAAA,UACnC,CAAC;AAAA,UAED;AAAA,0DAAC,SAAI,WAAkB,qBACtB,wDAAC,cAAW,MAAK,UAAS,cAAW,QAAO,SAAS,MAAM,eAAe,GACzE,wDAAC,YAAS,GACX,GACD;AAAA,YACC;AAAA;AAAA;AAAA,MACF;AAAA,MACA,8CAAQ,cAAP,EAAa,WAAkB,sBAAsB,SAAO,MAC5D,wDAAC,cAAW,MAAK,UAAS,cAAW,SACpC,wDAAC,aAAU,GACZ,GACD;AAAA,OACD,GACD,GACD,GACD;AAAA,KACD;AAEF;;;AxB1IE,IAAAC,uBAAA;AANK,SAAS,cAAc;AAAA,EAC7B,cAAc;AAAA,EACd,GAAG;AACJ,GAAuB;AACtB,QAAM,iBAAiB,kBAAkB;AACzC,SAAO,iBACN,8CAAC,uBAAoB,gBAAgC,IAErD;AAAA,IAAC;AAAA;AAAA,MACA,SACC,8CAAC,eACA,wDAAC,UAAQ,GAAG,aAAc,uBAAY,GACvC;AAAA;AAAA,EAEF;AAEF;",
6
6
  "names": ["import_react", "import_clsx", "import_react", "import_react", "import_react_query", "connectionStatus", "import_react_query", "import_jsx_runtime", "import_jsx_runtime", "import_react", "import_jsx_runtime", "import_react_slot", "import_react", "_7a468", "import_jsx_runtime", "clsx", "import_react_slot", "import_clsx", "import_react", "import_createRuntimeFn", "_7a468", "import_jsx_runtime", "clsx", "import_jsx_runtime", "clsx", "import_clsx", "import_react", "import_react_query", "import_jsx_runtime", "import_jsx_runtime", "import_react_slot", "import_clsx", "import_react", "import_createRuntimeFn", "_7a468", "import_jsx_runtime", "clsx", "import_react_slot", "import_clsx", "import_react", "import_jsx_runtime", "clsx", "container", "title", "import_jsx_runtime", "container", "title", "container", "import_jsx_runtime", "title", "container", "container", "content", "import_jsx_runtime", "container", "content", "container", "content", "import_jsx_runtime", "container", "content", "import_jsx_runtime", "container", "import_clsx", "container", "walletIcon", "import_jsx_runtime", "container", "walletIcon", "import_jsx_runtime", "container", "import_jsx_runtime", "open", "clsx", "import_jsx_runtime"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  import type { WalletWithFeatures, WalletWithRequiredFeatures } from '@mysten/wallet-standard';
2
2
  import type { ReactNode } from 'react';
3
3
  import type { StateStorage } from 'zustand/middleware';
4
- import type { ZkSendWalletConfig } from '../hooks/wallet/useZkSendWallet.js';
4
+ import type { StashedWalletConfig } from '../hooks/wallet/useStashedWallet.js';
5
5
  import type { Theme } from '../themes/themeContract.js';
6
6
  export type WalletProviderProps = {
7
7
  /** A list of wallets that are sorted to the top of the wallet list, if they are available to connect to. By default, wallets are sorted by the order they are loaded in. */
@@ -12,8 +12,8 @@ export type WalletProviderProps = {
12
12
  enableUnsafeBurner?: boolean;
13
13
  /** Enables automatically reconnecting to the most recently used wallet account upon mounting. */
14
14
  autoConnect?: boolean;
15
- /** Enables the zkSend wallet */
16
- zkSend?: ZkSendWalletConfig;
15
+ /** Enables the Stashed wallet */
16
+ stashedWallet?: StashedWalletConfig;
17
17
  /** Configures how the most recently connected to wallet account is stored. Set to `null` to disable persisting state entirely. Defaults to using localStorage if it is available. */
18
18
  storage?: StateStorage | null;
19
19
  /** The key to use to store the most recently connected wallet account. */
@@ -23,4 +23,4 @@ export type WalletProviderProps = {
23
23
  children: ReactNode;
24
24
  };
25
25
  export type { WalletWithFeatures };
26
- export declare function WalletProvider({ preferredWallets, requiredFeatures, storage, storageKey, enableUnsafeBurner, autoConnect, zkSend, theme, children, }: WalletProviderProps): import("react/jsx-runtime.js").JSX.Element;
26
+ export declare function WalletProvider({ preferredWallets, requiredFeatures, storage, storageKey, enableUnsafeBurner, autoConnect, stashedWallet, theme, children, }: WalletProviderProps): import("react/jsx-runtime.js").JSX.Element;
@@ -64,7 +64,7 @@ var DEFAULT_STORAGE_KEY = "sui-dapp-kit:wallet-connection-info";
64
64
  var DEFAULT_REQUIRED_FEATURES = [
65
65
  "sui:signTransactionBlock"
66
66
  ];
67
- var DEFAULT_PREFERRED_WALLETS = [SUI_WALLET_NAME, import_zksend.ZKSEND_WALLET_NAME];
67
+ var DEFAULT_PREFERRED_WALLETS = [SUI_WALLET_NAME, import_zksend.STASHED_WALLET_NAME];
68
68
 
69
69
  // src/contexts/walletContext.ts
70
70
  var import_react = require("react");
@@ -273,26 +273,55 @@ function useAutoConnectWallet() {
273
273
  return isError ? "attempted" : data ?? "idle";
274
274
  }
275
275
 
276
+ // src/hooks/wallet/useStashedWallet.ts
277
+ var import_zksend2 = require("@mysten/zksend");
278
+ var import_react4 = require("react");
279
+ function useStashedWallet(config) {
280
+ const status = useAutoConnectWallet();
281
+ const [address, setAddress] = (0, import_react4.useState)(null);
282
+ const [wallet, setWallet] = (0, import_react4.useState)(null);
283
+ const { mutate: connect } = useConnectWallet();
284
+ (0, import_react4.useEffect)(() => {
285
+ if (!address || !wallet || status !== "attempted")
286
+ return;
287
+ connect({ wallet, silent: true });
288
+ setAddress(null);
289
+ }, [address, status, connect, wallet]);
290
+ (0, import_react4.useLayoutEffect)(() => {
291
+ if (!config?.name) {
292
+ return;
293
+ }
294
+ const { wallet: wallet2, unregister, addressFromRedirect } = (0, import_zksend2.registerStashedWallet)(config.name, {
295
+ origin: config.origin
296
+ });
297
+ if (addressFromRedirect) {
298
+ setWallet(wallet2);
299
+ setAddress(addressFromRedirect);
300
+ }
301
+ return unregister;
302
+ }, [config?.name, config?.origin]);
303
+ }
304
+
276
305
  // src/hooks/wallet/useUnsafeBurnerWallet.ts
277
306
  var import_ed25519 = require("@mysten/sui.js/keypairs/ed25519");
278
307
  var import_wallet_standard2 = require("@mysten/wallet-standard");
279
- var import_react6 = require("react");
308
+ var import_react7 = require("react");
280
309
 
281
310
  // src/hooks/useSuiClient.ts
282
- var import_react5 = require("react");
311
+ var import_react6 = require("react");
283
312
 
284
313
  // src/components/SuiClientProvider.tsx
285
314
  var import_client = require("@mysten/sui.js/client");
286
- var import_react4 = require("react");
315
+ var import_react5 = require("react");
287
316
  var import_jsx_runtime = require("react/jsx-runtime");
288
- var SuiClientContext = (0, import_react4.createContext)(null);
317
+ var SuiClientContext = (0, import_react5.createContext)(null);
289
318
  var DEFAULT_NETWORKS = {
290
319
  localnet: { url: (0, import_client.getFullnodeUrl)("localnet") }
291
320
  };
292
321
 
293
322
  // src/hooks/useSuiClient.ts
294
323
  function useSuiClientContext() {
295
- const suiClient = (0, import_react5.useContext)(SuiClientContext);
324
+ const suiClient = (0, import_react6.useContext)(SuiClientContext);
296
325
  if (!suiClient) {
297
326
  throw new Error(
298
327
  "Could not find SuiClientContext. Ensure that you have set up the SuiClientProvider"
@@ -308,7 +337,7 @@ function useSuiClient() {
308
337
  var WALLET_NAME = "Unsafe Burner Wallet";
309
338
  function useUnsafeBurnerWallet(enabled) {
310
339
  const suiClient = useSuiClient();
311
- (0, import_react6.useEffect)(() => {
340
+ (0, import_react7.useEffect)(() => {
312
341
  if (!enabled) {
313
342
  return;
314
343
  }
@@ -418,11 +447,11 @@ function registerUnsafeBurnerWallet(suiClient) {
418
447
  }
419
448
 
420
449
  // src/hooks/wallet/useWalletPropertiesChanged.ts
421
- var import_react7 = require("react");
450
+ var import_react8 = require("react");
422
451
  function useWalletPropertiesChanged() {
423
452
  const { currentWallet } = useCurrentWallet();
424
453
  const updateWalletAccounts = useWalletStore((state) => state.updateWalletAccounts);
425
- (0, import_react7.useEffect)(() => {
454
+ (0, import_react8.useEffect)(() => {
426
455
  const unsubscribeFromEvents = currentWallet?.features["standard:events"].on(
427
456
  "change",
428
457
  ({ accounts }) => {
@@ -437,11 +466,11 @@ function useWalletPropertiesChanged() {
437
466
 
438
467
  // src/hooks/wallet/useWalletsChanged.ts
439
468
  var import_wallet_standard3 = require("@mysten/wallet-standard");
440
- var import_react8 = require("react");
469
+ var import_react9 = require("react");
441
470
  function useWalletsChanged(preferredWallets, requiredFeatures) {
442
471
  const setWalletRegistered = useWalletStore((state) => state.setWalletRegistered);
443
472
  const setWalletUnregistered = useWalletStore((state) => state.setWalletUnregistered);
444
- (0, import_react8.useEffect)(() => {
473
+ (0, import_react9.useEffect)(() => {
445
474
  const walletsApi = (0, import_wallet_standard3.getWallets)();
446
475
  const unsubscribeFromRegister = walletsApi.on("register", () => {
447
476
  setWalletRegistered(getRegisteredWallets(preferredWallets, requiredFeatures));
@@ -459,35 +488,6 @@ function useWalletsChanged(preferredWallets, requiredFeatures) {
459
488
  }, [preferredWallets, requiredFeatures, setWalletRegistered, setWalletUnregistered]);
460
489
  }
461
490
 
462
- // src/hooks/wallet/useZkSendWallet.ts
463
- var import_zksend2 = require("@mysten/zksend");
464
- var import_react9 = require("react");
465
- function useZkSendWallet(config) {
466
- const status = useAutoConnectWallet();
467
- const [address, setAddress] = (0, import_react9.useState)(null);
468
- const [wallet, setWallet] = (0, import_react9.useState)(null);
469
- const { mutate: connect } = useConnectWallet();
470
- (0, import_react9.useEffect)(() => {
471
- if (!address || !wallet || status !== "attempted")
472
- return;
473
- connect({ wallet, silent: true });
474
- setAddress(null);
475
- }, [address, status, connect, wallet]);
476
- (0, import_react9.useLayoutEffect)(() => {
477
- if (!config?.name) {
478
- return;
479
- }
480
- const { wallet: wallet2, unregister, addressFromRedirect } = (0, import_zksend2.registerZkSendWallet)(config.name, {
481
- origin: config.origin
482
- });
483
- if (addressFromRedirect) {
484
- setWallet(wallet2);
485
- setAddress(addressFromRedirect);
486
- }
487
- return unregister;
488
- }, [config?.name, config?.origin]);
489
- }
490
-
491
491
  // src/themes/lightTheme.ts
492
492
  var lightTheme = {
493
493
  blurs: {
@@ -744,7 +744,7 @@ function WalletProvider({
744
744
  storageKey = DEFAULT_STORAGE_KEY,
745
745
  enableUnsafeBurner = false,
746
746
  autoConnect = false,
747
- zkSend,
747
+ stashedWallet,
748
748
  theme = lightTheme,
749
749
  children
750
750
  }) {
@@ -762,7 +762,7 @@ function WalletProvider({
762
762
  preferredWallets,
763
763
  requiredFeatures,
764
764
  enableUnsafeBurner,
765
- zkSend,
765
+ stashedWallet,
766
766
  children: [
767
767
  theme ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(InjectedThemeStyles, { theme }) : null,
768
768
  children
@@ -774,12 +774,12 @@ function WalletConnectionManager({
774
774
  preferredWallets = DEFAULT_PREFERRED_WALLETS,
775
775
  requiredFeatures = DEFAULT_REQUIRED_FEATURES,
776
776
  enableUnsafeBurner = false,
777
- zkSend,
777
+ stashedWallet,
778
778
  children
779
779
  }) {
780
780
  useWalletsChanged(preferredWallets, requiredFeatures);
781
781
  useWalletPropertiesChanged();
782
- useZkSendWallet(zkSend);
782
+ useStashedWallet(stashedWallet);
783
783
  useUnsafeBurnerWallet(enableUnsafeBurner);
784
784
  useAutoConnectWallet();
785
785
  return children;