@iota/dapp-kit 0.8.0 → 0.8.2

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["vanilla-extract-css-ns:src/components/styling/StyleMarker.css.ts.vanilla.css?source=OndoZXJlKCopIHsKICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogIGNvbG9yOiB2YXIoLS1kYXBwLWtpdC1jb2xvcnMtYm9keSk7CiAgZm9udC1mYW1pbHk6IHZhcigtLWRhcHAta2l0LXR5cG9ncmFwaHktZm9udEZhbWlseSk7CiAgZm9udC1zaXplOiB2YXIoLS1kYXBwLWtpdC1mb250V2VpZ2h0cy1ub3JtYWwpOwogIGZvbnQtc3R5bGU6IHZhcigtLWRhcHAta2l0LXR5cG9ncmFwaHktZm9udFN0eWxlKTsKICBmb250LXdlaWdodDogdmFyKC0tZGFwcC1raXQtZm9udFdlaWdodHMtbm9ybWFsKTsKICBsaW5lLWhlaWdodDogdmFyKC0tZGFwcC1raXQtdHlwb2dyYXBoeS1saW5lSGVpZ2h0KTsKICBsZXR0ZXItc3BhY2luZzogdmFyKC0tZGFwcC1raXQtdHlwb2dyYXBoeS1sZXR0ZXJTcGFjaW5nKTsKfQo6d2hlcmUoYnV0dG9uKSB7CiAgYXBwZWFyYW5jZTogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBmb250LXNpemU6IGluaGVyaXQ7CiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7CiAgbGV0dGVyLXNwYWNpbmc6IGluaGVyaXQ7CiAgY29sb3I6IGluaGVyaXQ7CiAgYm9yZGVyOiAwOwogIHBhZGRpbmc6IDA7CiAgbWFyZ2luOiAwOwp9Cjp3aGVyZShhKSB7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGNvbG9yOiBpbmhlcml0OwogIG91dGxpbmU6IG5vbmU7Cn0KOndoZXJlKG9sLCB1bCkgewogIGxpc3Qtc3R5bGU6IG5vbmU7CiAgbWFyZ2luOiAwOwogIHBhZGRpbmc6IDA7Cn0KOndoZXJlKGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYpIHsKICBmb250LXNpemU6IGluaGVyaXQ7CiAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7CiAgbWFyZ2luOiAwOwp9", "../../src/components/styling/StyleMarker.css.ts", "../../src/index.ts", "../../src/components/connect-modal/ConnectModal.tsx", "../../src/hooks/wallet/useConnectWallet.ts", "../../src/constants/walletMutationKeys.ts", "../../src/hooks/wallet/useWalletStore.ts", "../../src/contexts/walletContext.ts", "../../src/utils/walletUtils.ts", "../../src/components/icons/BackIcon.tsx", "../../src/components/icons/CloseIcon.tsx", "../../src/components/styling/StyleMarker.tsx", "../../src/constants/styleDataAttribute.ts", "../../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/ui/Button.tsx", "../../src/components/ui/Button.css.ts", "../../src/components/ui/Text.tsx", "../../src/components/ui/Text.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/IotaIcon.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", "../../src/hooks/wallet/useCurrentAccount.ts", "../../src/components/AccountDropdownMenu.tsx", "../../src/hooks/wallet/useAccounts.ts", "../../src/hooks/wallet/useDisconnectWallet.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/hooks/useGetDefaultIotaName.ts", "../../src/hooks/useIotaClient.ts", "../../src/components/IotaClientProvider.tsx", "../../src/components/ConnectButton.tsx", "../../src/components/WalletProvider.tsx", "../../src/utils/stateStorage.ts", "../../src/constants/walletDefaults.ts", "../../src/hooks/wallet/useAutoConnectWallet.ts", "../../src/hooks/wallet/useUnsafeBurnerWallet.ts", "../../src/hooks/wallet/useWalletPropertiesChanged.ts", "../../src/hooks/wallet/useWalletsChanged.ts", "../../src/themes/lightTheme.ts", "../../src/walletStore.ts", "../../src/components/styling/InjectedThemeStyles.tsx", "../../src/themes/themeContract.ts", "../../src/hooks/networkConfig.ts", "../../src/hooks/useIotaClientInfiniteQuery.ts", "../../src/hooks/useIotaClientMutation.ts", "../../src/hooks/useIotaClientQuery.ts", "../../src/hooks/useIotaClientQueries.ts", "../../src/hooks/wallet/useSignAndExecuteTransaction.ts", "../../src/hooks/wallet/useReportTransactionEffects.ts", "../../src/hooks/wallet/useCurrentChain.ts", "../../src/hooks/wallet/useSignPersonalMessage.ts", "../../src/hooks/wallet/useSignTransaction.ts", "../../src/themes/darkTheme.ts"],
4
- "sourcesContent": ["[data-dapp-kit]:where(*), [data-dapp-kit] :where(*) {\n box-sizing: border-box;\n color: var(--dapp-kit-colors-body);\n font-family: var(--dapp-kit-typography-fontFamily);\n font-size: var(--dapp-kit-fontWeights-normal);\n font-style: var(--dapp-kit-typography-fontStyle);\n font-weight: var(--dapp-kit-fontWeights-normal);\n line-height: var(--dapp-kit-typography-lineHeight);\n letter-spacing: var(--dapp-kit-typography-letterSpacing);\n}\n[data-dapp-kit]:where(button), [data-dapp-kit] :where(button) {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background-color: transparent;\n font-size: inherit;\n font-family: inherit;\n line-height: inherit;\n letter-spacing: inherit;\n color: inherit;\n border: 0;\n padding: 0;\n margin: 0;\n}\n[data-dapp-kit]:where(a), [data-dapp-kit] :where(a) {\n text-decoration: none;\n color: inherit;\n outline: none;\n}\n[data-dapp-kit]:where(ol, ul), [data-dapp-kit] :where(ol, ul) {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n[data-dapp-kit]:where(h1, h2, h3, h4, h5, h6), [data-dapp-kit] :where(h1, h2, h3, h4, h5, h6) {\n font-size: inherit;\n font-weight: inherit;\n margin: 0;\n}", "import 'src/components/styling/StyleMarker.css.ts.vanilla.css?source=OndoZXJlKCopIHsKICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogIGNvbG9yOiB2YXIoLS1kYXBwLWtpdC1jb2xvcnMtYm9keSk7CiAgZm9udC1mYW1pbHk6IHZhcigtLWRhcHAta2l0LXR5cG9ncmFwaHktZm9udEZhbWlseSk7CiAgZm9udC1zaXplOiB2YXIoLS1kYXBwLWtpdC1mb250V2VpZ2h0cy1ub3JtYWwpOwogIGZvbnQtc3R5bGU6IHZhcigtLWRhcHAta2l0LXR5cG9ncmFwaHktZm9udFN0eWxlKTsKICBmb250LXdlaWdodDogdmFyKC0tZGFwcC1raXQtZm9udFdlaWdodHMtbm9ybWFsKTsKICBsaW5lLWhlaWdodDogdmFyKC0tZGFwcC1raXQtdHlwb2dyYXBoeS1saW5lSGVpZ2h0KTsKICBsZXR0ZXItc3BhY2luZzogdmFyKC0tZGFwcC1raXQtdHlwb2dyYXBoeS1sZXR0ZXJTcGFjaW5nKTsKfQo6d2hlcmUoYnV0dG9uKSB7CiAgYXBwZWFyYW5jZTogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBmb250LXNpemU6IGluaGVyaXQ7CiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7CiAgbGV0dGVyLXNwYWNpbmc6IGluaGVyaXQ7CiAgY29sb3I6IGluaGVyaXQ7CiAgYm9yZGVyOiAwOwogIHBhZGRpbmc6IDA7CiAgbWFyZ2luOiAwOwp9Cjp3aGVyZShhKSB7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGNvbG9yOiBpbmhlcml0OwogIG91dGxpbmU6IG5vbmU7Cn0KOndoZXJlKG9sLCB1bCkgewogIGxpc3Qtc3R5bGU6IG5vbmU7CiAgbWFyZ2luOiAwOwogIHBhZGRpbmc6IDA7Cn0KOndoZXJlKGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYpIHsKICBmb250LXNpemU6IGluaGVyaXQ7CiAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7CiAgbWFyZ2luOiAwOwp9';", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nexport * from './components/connect-modal/ConnectModal.js';\nexport * from './components/ConnectButton.js';\nexport * from './components/IotaClientProvider.js';\nexport * from './components/WalletProvider.js';\nexport * from './hooks/networkConfig.js';\nexport * from './hooks/useIotaClient.js';\nexport * from './hooks/useIotaClientInfiniteQuery.js';\nexport * from './hooks/useIotaClientMutation.js';\nexport * from './hooks/useIotaClientQuery.js';\nexport * from './hooks/useIotaClientQueries.js';\nexport * from './hooks/wallet/useAccounts.js';\nexport * from './hooks/wallet/useAutoConnectWallet.js';\nexport * from './hooks/wallet/useConnectWallet.js';\nexport * from './hooks/wallet/useCurrentAccount.js';\nexport * from './hooks/wallet/useCurrentWallet.js';\nexport * from './hooks/wallet/useDisconnectWallet.js';\nexport * from './hooks/wallet/useSignAndExecuteTransaction.js';\nexport * from './hooks/wallet/useSignPersonalMessage.js';\nexport * from './hooks/wallet/useSignTransaction.js';\nexport * from './hooks/wallet/useReportTransactionEffects.js';\nexport * from './hooks/wallet/useSwitchAccount.js';\nexport * from './hooks/wallet/useWallets.js';\nexport * from './themes/lightTheme.js';\nexport * from './themes/darkTheme.js';\nexport * from './types.js';\n\nexport type { Theme, ThemeVars, DynamicTheme } from './themes/themeContract.js';\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletWithRequiredFeatures } from '@iota/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 /** The controlled open state of the dialog. */\n open: boolean;\n\n /** Event handler called when the open state of the dialog changes. */\n onOpenChange: (open: boolean) => void;\n\n defaultOpen?: never;\n};\n\ntype UncontrolledModalProps = {\n open?: never;\n\n onOpenChange?: never;\n\n /** The open state of the dialog when it is initially rendered. Use when you do not need to control its open state. */\n defaultOpen?: boolean;\n};\n\ntype ConnectModalProps = {\n /** The trigger button that opens the dialog. */\n trigger: NonNullable<ReactNode>;\n\n onConnected?: (params: { wallet: WalletWithRequiredFeatures }) => void;\n} & (ControlledModalProps | UncontrolledModalProps);\n\nexport function ConnectModal({\n trigger,\n open,\n defaultOpen,\n onOpenChange,\n onConnected,\n}: ConnectModalProps) {\n const [isModalOpen, setModalOpen] = useState(open ?? defaultOpen);\n const [currentView, setCurrentView] = useState<ConnectModalView>();\n const [selectedWallet, setSelectedWallet] = useState<WalletWithRequiredFeatures>();\n const { mutate, isError } = useConnectWallet({\n onConnected,\n });\n\n const resetSelection = () => {\n setSelectedWallet(undefined);\n setCurrentView(undefined);\n };\n\n const handleOpenChange = (open: boolean) => {\n if (!open) {\n resetSelection();\n }\n setModalOpen(open);\n onOpenChange?.(open);\n };\n\n const connectWallet = (wallet: WalletWithRequiredFeatures) => {\n setCurrentView('connection-status');\n mutate(\n { wallet, silent: false },\n {\n onSuccess: () => handleOpenChange(false),\n },\n );\n };\n\n let modalContent: ReactNode | undefined;\n switch (currentView) {\n case 'what-is-a-wallet':\n modalContent = <WhatIsAWallet />;\n break;\n case 'getting-started':\n modalContent = <GettingStarted />;\n break;\n case 'connection-status':\n modalContent = (\n <ConnectionStatus\n selectedWallet={selectedWallet!}\n hadConnectionError={isError}\n onRetryConnection={connectWallet}\n />\n );\n break;\n default:\n modalContent = <WhatIsAWallet />;\n }\n\n return (\n <Dialog.Root open={open ?? isModalOpen} onOpenChange={handleOpenChange}>\n <Dialog.Trigger asChild>{trigger}</Dialog.Trigger>\n <Dialog.Portal>\n <StyleMarker>\n <Dialog.Overlay className={styles.overlay}>\n <Dialog.Content className={styles.content} aria-describedby={undefined}>\n <div\n className={clsx(styles.walletListContainer, {\n [styles.walletListContainerWithViewSelected]: !!currentView,\n })}\n >\n <div className={styles.walletListContent}>\n <Dialog.Title className={styles.title} asChild>\n <Heading as=\"h2\">Connect a Wallet</Heading>\n </Dialog.Title>\n <WalletList\n selectedWalletName={getWalletUniqueIdentifier(\n selectedWallet,\n )}\n onPlaceholderClick={() => setCurrentView('getting-started')}\n onSelect={(wallet) => {\n if (\n getWalletUniqueIdentifier(selectedWallet) !==\n getWalletUniqueIdentifier(wallet)\n ) {\n setSelectedWallet(wallet);\n connectWallet(wallet);\n }\n }}\n />\n </div>\n <button\n className={styles.whatIsAWalletButton}\n onClick={() => setCurrentView('what-is-a-wallet')}\n type=\"button\"\n >\n What is a Wallet?\n </button>\n </div>\n <div\n className={clsx(styles.viewContainer, {\n [styles.selectedViewContainer]: !!currentView,\n })}\n >\n <div className={styles.backButtonContainer}>\n <IconButton\n type=\"button\"\n aria-label=\"Back\"\n onClick={() => resetSelection()}\n >\n <BackIcon />\n </IconButton>\n </div>\n {modalContent}\n </div>\n <Dialog.Close className={styles.closeButtonContainer} asChild>\n <IconButton type=\"button\" aria-label=\"Close\">\n <CloseIcon />\n </IconButton>\n </Dialog.Close>\n </Dialog.Content>\n </Dialog.Overlay>\n </StyleMarker>\n </Dialog.Portal>\n </Dialog.Root>\n );\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { isSupportedChain } from '@iota/wallet-standard';\nimport type {\n StandardConnectInput,\n StandardConnectOutput,\n WalletAccount,\n WalletWithRequiredFeatures,\n} from '@iota/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 /** The wallet to connect to. */\n wallet: WalletWithRequiredFeatures;\n\n /** An optional account address to connect to. Defaults to the first authorized account. */\n accountAddress?: string;\n} & StandardConnectInput;\n\ntype ConnectWalletResult = StandardConnectOutput;\n\ntype UseConnectWalletMutationOptions = Omit<\n UseMutationOptions<ConnectWalletResult, Error, ConnectWalletArgs, unknown>,\n 'mutationFn'\n> & {\n onConnected?: (params: { wallet: WalletWithRequiredFeatures }) => void;\n};\n\n/**\n * Mutation hook for establishing a connection to a specific wallet.\n */\nexport function useConnectWallet({\n onConnected,\n mutationKey,\n ...mutationOptions\n}: UseConnectWalletMutationOptions = {}): UseMutationResult<\n ConnectWalletResult,\n Error,\n ConnectWalletArgs,\n unknown\n> {\n const setWalletConnected = useWalletStore((state) => state.setWalletConnected);\n const setConnectionStatus = useWalletStore((state) => state.setConnectionStatus);\n\n return useMutation({\n mutationKey: walletMutationKeys.connectWallet(mutationKey),\n mutationFn: async ({ wallet, accountAddress, ...connectArgs }) => {\n try {\n setConnectionStatus('connecting');\n\n const connectResult =\n await wallet.features['standard:connect'].connect(connectArgs);\n const connectedIotaAccounts = connectResult.accounts.filter((account) =>\n account.chains.some(isSupportedChain),\n );\n const selectedAccount = getSelectedAccount(connectedIotaAccounts, accountAddress);\n\n setWalletConnected(\n wallet,\n connectedIotaAccounts,\n selectedAccount,\n connectResult.supportedIntents,\n );\n\n onConnected?.({ wallet });\n\n return { accounts: connectedIotaAccounts };\n } catch (error) {\n setConnectionStatus('disconnected');\n throw error;\n }\n },\n ...mutationOptions,\n });\n}\n\nfunction getSelectedAccount(connectedAccounts: readonly WalletAccount[], accountAddress?: string) {\n if (connectedAccounts.length === 0) {\n return null;\n }\n\n if (accountAddress) {\n const selectedAccount = connectedAccounts.find(\n (account) => account.address === accountAddress,\n );\n return selectedAccount ?? connectedAccounts[0];\n }\n\n return connectedAccounts[0];\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { MutationKey } from '@tanstack/react-query';\n\nexport const walletMutationKeys = {\n all: { baseScope: 'wallet' },\n connectWallet: formMutationKeyFn('connect-wallet'),\n autoconnectWallet: formMutationKeyFn('autoconnect-wallet'),\n disconnectWallet: formMutationKeyFn('disconnect-wallet'),\n signPersonalMessage: formMutationKeyFn('sign-personal-message'),\n signTransaction: formMutationKeyFn('sign-transaction'),\n signAndExecuteTransaction: formMutationKeyFn('sign-and-execute-transaction'),\n switchAccount: formMutationKeyFn('switch-account'),\n reportTransactionEffects: formMutationKeyFn('report-transaction-effects'),\n};\n\nfunction formMutationKeyFn(baseEntity: string) {\n return function mutationKeyFn(additionalKeys: MutationKey = []) {\n return [{ ...walletMutationKeys.all, baseEntity }, ...additionalKeys];\n };\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\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 const store = useContext(WalletContext);\n if (!store) {\n throw new Error(\n 'Could not find WalletContext. Ensure that you have set up the WalletProvider.',\n );\n }\n return useStore(store, selector);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\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// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type {\n MinimallyRequiredFeatures,\n Wallet,\n WalletWithFeatures,\n WalletWithRequiredFeatures,\n} from '@iota/wallet-standard';\nimport { getWallets, isWalletWithRequiredFeatureSet } from '@iota/wallet-standard';\n\nexport function getRegisteredWallets<AdditionalFeatures extends Wallet['features']>(\n preferredWallets: string[],\n walletFilter?: (wallet: WalletWithRequiredFeatures) => boolean,\n) {\n const walletsApi = getWallets();\n const wallets = walletsApi.get();\n\n const iotaWallets = wallets.filter(\n (wallet): wallet is WalletWithFeatures<MinimallyRequiredFeatures & AdditionalFeatures> =>\n isWalletWithRequiredFeatureSet(wallet) && (!walletFilter || walletFilter(wallet)),\n );\n\n return [\n // Preferred wallets, in order:\n ...(preferredWallets\n .map((name) => iotaWallets.find((wallet) => wallet.name === name))\n .filter(Boolean) as WalletWithFeatures<\n MinimallyRequiredFeatures & AdditionalFeatures\n >[]),\n\n // Wallets in default order:\n ...iotaWallets.filter((wallet) => !preferredWallets.includes(wallet.name)),\n ];\n}\n\nexport function getWalletUniqueIdentifier(wallet?: Wallet) {\n return wallet?.id ?? wallet?.name;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\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 return (\n <svg width={24} height={24} fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"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 fill=\"currentColor\"\n />\n </svg>\n );\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ComponentProps } from 'react';\n\nexport function CloseIcon(props: ComponentProps<'svg'>) {\n return (\n <svg width={10} height={10} fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"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 fill=\"currentColor\"\n />\n </svg>\n );\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\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 children: ReactNode;\n};\n\nexport const StyleMarker = forwardRef<\n ElementRef<typeof Slot>,\n ComponentPropsWithoutRef<typeof Slot>\n>(({ children, ...props }, forwardedRef) => (\n <Slot ref={forwardedRef} {...props} {...styleDataAttribute}>\n {children}\n </Slot>\n));\nStyleMarker.displayName = 'StyleMarker';\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\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// Modifications Copyright (c) 2024 IOTA Stiftung\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 asChild?: boolean;\n as?: never;\n};\n\ntype HeadingAsProps = {\n as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n asChild?: never;\n};\n\ntype HeadingProps = (HeadingAsChildProps | HeadingAsProps) &\n React.HTMLAttributes<HTMLHeadingElement> &\n HeadingVariants;\n\nconst Heading = forwardRef<HTMLHeadingElement, HeadingProps>(\n (\n {\n children,\n className,\n asChild = false,\n as: Tag = 'h1',\n size,\n weight,\n truncate,\n ...headingProps\n },\n forwardedRef,\n ) => {\n return (\n <Slot\n {...headingProps}\n ref={forwardedRef}\n className={clsx(headingVariants({ size, weight, truncate }), className)}\n >\n {asChild ? children : <Tag>{children}</Tag>}\n </Slot>\n );\n },\n);\nHeading.displayName = 'Heading';\n\nexport { Heading };\n", "import 'src/components/ui/Heading.css.ts.vanilla.css?source=LkhlYWRpbmdfaGVhZGluZ1ZhcmlhbnRzX3NpemVfc21fXzEyYjVsOGkxIHsKICBmb250LXNpemU6IHZhcigtLWRhcHAta2l0LWZvbnRTaXplcy1zbWFsbCk7Cn0KLkhlYWRpbmdfaGVhZGluZ1ZhcmlhbnRzX3NpemVfbWRfXzEyYjVsOGkyIHsKICBmb250LXNpemU6IHZhcigtLWRhcHAta2l0LWZvbnRTaXplcy1tZWRpdW0pOwp9Ci5IZWFkaW5nX2hlYWRpbmdWYXJpYW50c19zaXplX2xnX18xMmI1bDhpMyB7CiAgZm9udC1zaXplOiB2YXIoLS1kYXBwLWtpdC1mb250U2l6ZXMtbGFyZ2UpOwp9Ci5IZWFkaW5nX2hlYWRpbmdWYXJpYW50c19zaXplX3hsX18xMmI1bDhpNCB7CiAgZm9udC1zaXplOiB2YXIoLS1kYXBwLWtpdC1mb250U2l6ZXMteGxhcmdlKTsKfQouSGVhZGluZ19oZWFkaW5nVmFyaWFudHNfd2VpZ2h0X25vcm1hbF9fMTJiNWw4aTUgewogIGZvbnQtd2VpZ2h0OiB2YXIoLS1kYXBwLWtpdC1mb250V2VpZ2h0cy1ub3JtYWwpOwp9Ci5IZWFkaW5nX2hlYWRpbmdWYXJpYW50c193ZWlnaHRfYm9sZF9fMTJiNWw4aTYgewogIGZvbnQtd2VpZ2h0OiB2YXIoLS1kYXBwLWtpdC1mb250V2VpZ2h0cy1ib2xkKTsKfQouSGVhZGluZ19oZWFkaW5nVmFyaWFudHNfdHJ1bmNhdGVfdHJ1ZV9fMTJiNWw4aTcgewogIG92ZXJmbG93OiBoaWRkZW47CiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQ==';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var headingVariants = _7a468({defaultClassName:'Heading__12b5l8i0',variantClassNames:{size:{sm:'Heading_headingVariants_size_sm__12b5l8i1',md:'Heading_headingVariants_size_md__12b5l8i2',lg:'Heading_headingVariants_size_lg__12b5l8i3',xl:'Heading_headingVariants_size_xl__12b5l8i4'},weight:{normal:'Heading_headingVariants_weight_normal__12b5l8i5',bold:'Heading_headingVariants_weight_bold__12b5l8i6'},truncate:{true:'Heading_headingVariants_truncate_true__12b5l8i7'}},defaultVariants:{size:'lg',weight:'bold'},compoundVariants:[]});", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\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 asChild?: boolean;\n 'aria-label': string;\n} & ButtonHTMLAttributes<HTMLButtonElement>;\n\nconst IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(\n ({ className, asChild = false, ...props }, forwardedRef) => {\n const Comp = asChild ? Slot : 'button';\n return <Comp {...props} className={clsx(styles.container, className)} ref={forwardedRef} />;\n },\n);\nIconButton.displayName = 'Button';\n\nexport { IconButton };\n", "import 'src/components/ui/IconButton.css.ts.vanilla.css?source=Lkljb25CdXR0b25fY29udGFpbmVyX19hcDFxbGwwIHsKICBib3JkZXItcmFkaXVzOiA5OTk5cHg7CiAgcGFkZGluZzogOHB4OwogIGNvbG9yOiB2YXIoLS1kYXBwLWtpdC1jb2xvcnMtaWNvbkJ1dHRvbik7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZGFwcC1raXQtYmFja2dyb3VuZENvbG9ycy1pY29uQnV0dG9uKTsKfQ==';\nexport var container = 'IconButton_container__ap1qll0';", "import 'src/components/connect-modal/ConnectModal.css.ts.vanilla.css?source=#H4sIAAAAAAAAA61UUU/bMBB+76/wCxJIM0oZhRJetvVp0qZNQhqPyI0vzYFjR/alLZv63yfHaUqJaSpBH9L4HH939933+XxmtIaMfhop1INZglXi+eFhfF2qx1Ik7N+IsbnInhbW1FryzChjU7YU9pRzKaqKPyHx3Qczv+946dF+BbCz2xZCWlPxHBVBBEHVsWOVcUhodMpyXIP0IdQOKGWJf//LUUtYp+xm+7sdbUbney0RkoKuoXHTUCWkRL3gCnJK2bRa949lRhNo6g5evIeJ3xZLYVsmjJVguRUSa9c778PI10rYBTSfx9NkAXxu5Js8zQ2RKVM2vvLtMRZ63a4sLooXS4muUuI5ZbmCJuD/uUQLWYDNjKpL7Xcea0eYP/OWoJS5SmTA50ArgOYLL6JcmVXKCpQyxErUvICQdJIsiyYm1l1sOtnFViipSNl1ksQGsyoEfXdf74VSQN9qIqO7IX1+z5DuIDNabsfUSmRL0esqlgirmdEkUIPt8l82+TsytdGwh3WRVDt2F9ZTNO5jO1CQEcg/0RyT/RxhYK8hfIeBmz7AVbBApxgxd0bV1FRKptpVGRRzEZ1CpoyDtzJcD2WIqrA36GbCP9DR7JUXpzEKDml2n2/GFsK3eRmK6E3n3SY/3Mk+VzfxXoZddmy3RxRzj1R4sd21wuuKEzE9b0ZfSpAomMssgGZCS3bq/b317dW0Wp81J4+5UvudWLO6bTZawHGSnIRAI57JdhX02S3JCu1yY8s0vCpBcMonyckn5p+Nqze9ooavk4ih+zCH7oPIePsAw449qo4h03zQ7TiUOKbxA4NuNubCofO2bG24J+TkRcQVFvVTGzuqkgGBRwe0+Q9KhsMxGgkAAA==';\nexport var backButtonContainer = 'ConnectModal_backButtonContainer__17mljma6';\nexport var closeButtonContainer = 'ConnectModal_closeButtonContainer__17mljma7';\nexport var content = 'ConnectModal_content__17mljma2';\nexport var overlay = 'ConnectModal_overlay__17mljma0';\nexport var selectedViewContainer = 'ConnectModal_selectedViewContainer__17mljma5';\nexport var title = 'ConnectModal_title__17mljma1';\nexport var viewContainer = 'ConnectModal_viewContainer__17mljma4';\nexport var walletListContainer = 'ConnectModal_walletListContainer__17mljma9';\nexport var walletListContainerWithViewSelected = 'ConnectModal_walletListContainerWithViewSelected__17mljmaa';\nexport var walletListContent = 'ConnectModal_walletListContent__17mljma8';\nexport var whatIsAWalletButton = 'ConnectModal_whatIsAWalletButton__17mljma3';", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\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 asChild?: boolean;\n} & ButtonHTMLAttributes<HTMLButtonElement> &\n ButtonVariants;\n\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, forwardedRef) => {\n const Comp = asChild ? Slot : 'button';\n return (\n <Comp\n {...props}\n className={clsx(buttonVariants({ variant, size }), className)}\n ref={forwardedRef}\n />\n );\n },\n);\nButton.displayName = 'Button';\n\nexport { Button };\n", "import 'src/components/ui/Button.css.ts.vanilla.css?source=#H4sIAAAAAAAAA7WSwVLCMBCG732KPcohDCA6TrjpxSfQYydt0rKQJplkC60O7+6ktCMKog56Smb/ZP9v/2R8XxNZk2bd8iQ8CkMhTXPKmpmZwGsCIDE4LVoOaDQaxQqtmkUCIDSWhiGpKnDIlSHlY3lVB8KiZbk1pAwdSoU1xLYKyyVx2Ah/xZgUzrE1EovacycFVimJdTVaJLtkfB6QSwwi00p2pNaJHKnlMBnfnLm82W9S57ESvh2aTbsemcjXpbe1kSy32voj0PcDD1EPrG+z9xrFOU9fzE8f/zUmX9qN8n8B+xgb/QTB1hSffkCY7c2tl8qzLUpacpi67lP0xUCtVhyC1SgPyl9AdmIP2Fv9W5qfR7kozQ+w36YZ8EWllRysrw9T9EJiHY4cYxlZUWvdReGElGhKDneugeltjPy8my4Ht/kFbtEJZnPXwCLZvQFzXfF3MwQAAA==';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var buttonVariants = _7a468({defaultClassName:'Button_buttonVariants__ctbx2n0',variantClassNames:{variant:{primary:'Button_buttonVariants_variant_primary__ctbx2n1',outline:'Button_buttonVariants_variant_outline__ctbx2n2'},size:{md:'Button_buttonVariants_size_md__ctbx2n3',lg:'Button_buttonVariants_size_lg__ctbx2n4'}},defaultVariants:{variant:'primary',size:'md'},compoundVariants:[]});", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\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 asChild?: boolean;\n as?: never;\n};\n\ntype TextDivProps = { as: 'div'; asChild?: never };\n\ntype TextProps = (TextAsChildProps | TextDivProps) &\n React.HTMLAttributes<HTMLDivElement> &\n TextVariants;\n\nconst Text = forwardRef<HTMLDivElement, TextProps>(\n (\n {\n children,\n className,\n asChild = false,\n as: Tag = 'div',\n size,\n weight,\n color,\n mono,\n ...textProps\n },\n forwardedRef,\n ) => {\n return (\n <Slot\n {...textProps}\n ref={forwardedRef}\n className={clsx(textVariants({ size, weight, color, mono }), className)}\n >\n {asChild ? children : <Tag>{children}</Tag>}\n </Slot>\n );\n },\n);\nText.displayName = 'Text';\n\nexport { Text };\n", "import 'src/components/ui/Text.css.ts.vanilla.css?source=LlRleHRfdGV4dFZhcmlhbnRzX3NpemVfc21fX2FwcmhiZDEgewogIGZvbnQtc2l6ZTogdmFyKC0tZGFwcC1raXQtZm9udFNpemVzLXNtYWxsKTsKfQouVGV4dF90ZXh0VmFyaWFudHNfd2VpZ2h0X25vcm1hbF9fYXByaGJkMiB7CiAgZm9udC13ZWlnaHQ6IHZhcigtLWRhcHAta2l0LWZvbnRXZWlnaHRzLW5vcm1hbCk7Cn0KLlRleHRfdGV4dFZhcmlhbnRzX3dlaWdodF9tZWRpdW1fX2FwcmhiZDMgewogIGZvbnQtd2VpZ2h0OiB2YXIoLS1kYXBwLWtpdC1mb250V2VpZ2h0cy1tZWRpdW0pOwp9Ci5UZXh0X3RleHRWYXJpYW50c193ZWlnaHRfYm9sZF9fYXByaGJkNCB7CiAgZm9udC13ZWlnaHQ6IHZhcigtLWRhcHAta2l0LWZvbnRXZWlnaHRzLWJvbGQpOwp9Ci5UZXh0X3RleHRWYXJpYW50c19jb2xvcl9tdXRlZF9fYXByaGJkNSB7CiAgY29sb3I6IHZhcigtLWRhcHAta2l0LWNvbG9ycy1ib2R5TXV0ZWQpOwp9Ci5UZXh0X3RleHRWYXJpYW50c19jb2xvcl9kYW5nZXJfX2FwcmhiZDYgewogIGNvbG9yOiB2YXIoLS1kYXBwLWtpdC1jb2xvcnMtYm9keURhbmdlcik7Cn0KLlRleHRfdGV4dFZhcmlhbnRzX21vbm9fdHJ1ZV9fYXByaGJkNyB7CiAgZm9udC1mYW1pbHk6IHVpLW1vbm9zcGFjZSwgU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCAiTGliZXJhdGlvbiBNb25vIiwgIkNvdXJpZXIgTmV3IiwgbW9ub3NwYWNlOwp9';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var textVariants = _7a468({defaultClassName:'Text__aprhbd0',variantClassNames:{size:{sm:'Text_textVariants_size_sm__aprhbd1'},weight:{normal:'Text_textVariants_weight_normal__aprhbd2',medium:'Text_textVariants_weight_medium__aprhbd3',bold:'Text_textVariants_weight_bold__aprhbd4'},color:{muted:'Text_textVariants_color_muted__aprhbd5',danger:'Text_textVariants_color_danger__aprhbd6'},mono:{true:'Text_textVariants_mono_true__aprhbd7'}},defaultVariants:{size:'sm',weight:'normal'},compoundVariants:[]});", "import 'src/components/connect-modal/views/ConnectionStatus.css.ts.vanilla.css?source=LkNvbm5lY3Rpb25TdGF0dXNfY29udGFpbmVyX19jNXExbGwwIHsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICB3aWR0aDogMTAwJTsKICBvdmVyZmxvdy15OiBhdXRvOwp9Ci5Db25uZWN0aW9uU3RhdHVzX3dhbGxldEljb25fX2M1cTFsbDEgewogIG9iamVjdC1maXQ6IGNvdmVyOwogIHdpZHRoOiA3MnB4OwogIGhlaWdodDogNzJweDsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1kYXBwLWtpdC1yYWRpaS1sYXJnZSk7Cn0KLkNvbm5lY3Rpb25TdGF0dXNfdGl0bGVfX2M1cTFsbDIgewogIG1hcmdpbi10b3A6IDEycHg7Cn0KLkNvbm5lY3Rpb25TdGF0dXNfY29ubmVjdGlvblN0YXR1c19fYzVxMWxsMyB7CiAgbWFyZ2luLXRvcDogNHB4Owp9Ci5Db25uZWN0aW9uU3RhdHVzX3JldHJ5QnV0dG9uQ29udGFpbmVyX19jNXExbGw0IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgYm90dG9tOiAyMHB4OwogIHJpZ2h0OiAyMHB4Owp9';\nexport var connectionStatus = 'ConnectionStatus_connectionStatus__c5q1ll3';\nexport var container = 'ConnectionStatus_container__c5q1ll0';\nexport var retryButtonContainer = 'ConnectionStatus_retryButtonContainer__c5q1ll4';\nexport var title = 'ConnectionStatus_title__c5q1ll2';\nexport var walletIcon = 'ConnectionStatus_walletIcon__c5q1ll1';", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletWithRequiredFeatures } from '@iota/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 selectedWallet: WalletWithRequiredFeatures;\n hadConnectionError: boolean;\n onRetryConnection: (selectedWallet: WalletWithRequiredFeatures) => void;\n};\n\nexport function ConnectionStatus({\n selectedWallet,\n hadConnectionError,\n onRetryConnection,\n}: ConnectionStatusProps) {\n return (\n <div className={styles.container}>\n <img\n className={styles.walletIcon}\n src={selectedWallet.icon}\n alt={`${selectedWallet.name} logo`}\n />\n <div className={styles.title}>\n <Heading as=\"h2\" size=\"xl\">\n Opening {selectedWallet.name}\n </Heading>\n </div>\n <div className={styles.connectionStatus}>\n {hadConnectionError ? (\n <Text color=\"danger\">Connection failed</Text>\n ) : (\n <Text color=\"muted\">Confirm connection in the wallet...</Text>\n )}\n </div>\n {hadConnectionError ? (\n <div className={styles.retryButtonContainer}>\n <Button\n type=\"button\"\n variant=\"primary\"\n onClick={() => onRetryConnection(selectedWallet)}\n >\n Retry Connection\n </Button>\n </div>\n ) : null}\n </div>\n );\n}\n", "import 'src/components/connect-modal/InfoSection.css.ts.vanilla.css?source=LkluZm9TZWN0aW9uX2NvbnRhaW5lcl9fMWQxbnJtdDAgewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBnYXA6IDRweDsKfQ==';\nexport var container = 'InfoSection_container__1d1nrmt0';", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\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 title: string;\n children: string;\n};\n\nexport function InfoSection({ title, children }: InfoSectionProps) {\n return (\n <section className={styles.container}>\n <Heading as=\"h3\" size=\"sm\" weight=\"normal\">\n {title}\n </Heading>\n <Text weight=\"medium\" color=\"muted\">\n {children}\n </Text>\n </section>\n );\n}\n", "import 'src/components/connect-modal/views/GettingStarted.css.ts.vanilla.css?source=LkdldHRpbmdTdGFydGVkX2NvbnRhaW5lcl9fcXUzNnQ5MCB7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgb3ZlcmZsb3cteTogYXV0bzsKfQouR2V0dGluZ1N0YXJ0ZWRfY29udGVudF9fcXUzNnQ5MSB7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIGZsZXgtZ3JvdzogMTsKICBnYXA6IDIwcHg7CiAgcGFkZGluZzogNDBweDsKICBwYWRkaW5nLWJvdHRvbTogNjBweDsKICBvdmVyZmxvdzogYXV0bzsKfQouR2V0dGluZ1N0YXJ0ZWRfaW5zdGFsbEJ1dHRvbkNvbnRhaW5lcl9fcXUzNnQ5MiB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGJvdHRvbTogMjBweDsKICByaWdodDogMjBweDsKfQ==';\nexport var container = 'GettingStarted_container__qu36t90';\nexport var content = 'GettingStarted_content__qu36t91';\nexport var installButtonContainer = 'GettingStarted_installButtonContainer__qu36t92';", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\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 return (\n <div className={styles.container}>\n <Heading as=\"h2\">Get Started with IOTA</Heading>\n <div className={styles.content}>\n <InfoSection title=\"Install the IOTA Wallet Extension\">\n We recommend pinning IOTA Wallet to your taskbar for quicker access.\n </InfoSection>\n <InfoSection title=\"Create or Import a Wallet\">\n Be sure to back up your wallet using a secure method. Never share your secret\n phrase with anyone.\n </InfoSection>\n <InfoSection title=\"Refresh Your Browser\">\n Once you set up your wallet, refresh this window browser to load up the\n extension.\n </InfoSection>\n <div className={styles.installButtonContainer}>\n <Button variant=\"primary\" asChild>\n <a\n href=\"https://chrome.google.com/webstore/detail/iota-wallet/iidjkmdceolghepehaaddojmnjnkkija\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Install Wallet Extension\n </a>\n </Button>\n </div>\n </div>\n </div>\n );\n}\n", "import 'src/components/connect-modal/views/WhatIsAWallet.css.ts.vanilla.css?source=LldoYXRJc0FXYWxsZXRfY29udGFpbmVyX18xa2RjaW1xMCB7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KLldoYXRJc0FXYWxsZXRfY29udGVudF9fMWtkY2ltcTEgewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBmbGV4LWdyb3c6IDE7CiAgZ2FwOiAyMHB4OwogIHBhZGRpbmc6IDQwcHg7CiAgb3ZlcmZsb3cteTogYXV0bzsKfQ==';\nexport var container = 'WhatIsAWallet_container__1kdcimq0';\nexport var content = 'WhatIsAWallet_content__1kdcimq1';", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\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 return (\n <div className={styles.container}>\n <Heading as=\"h2\">What is a Wallet</Heading>\n <div className={styles.content}>\n <InfoSection title=\"Easy Login\">\n No need to create new accounts and passwords for every website. Just connect\n your wallet and get going.\n </InfoSection>\n <InfoSection title=\"Store your Digital Assets\">\n Send, receive, store, and display your digital assets like NFTs & coins.\n </InfoSection>\n </div>\n </div>\n );\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\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 return useWalletStore((state) => state.wallets);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ComponentProps } from 'react';\n\nexport function IotaIcon(props: ComponentProps<'svg'>) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"28px\"\n height=\"28px\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n {...props}\n >\n <path\n fill=\"#171d26\"\n d=\"M18.27 2.259c0 .695-.568 1.259-1.268 1.259s-1.267-.564-1.267-1.259S16.302 1 17.002 1s1.268.564 1.268 1.259m1.425 17.785c0 .695-.568 1.259-1.268 1.259s-1.267-.564-1.267-1.26c0-.695.567-1.258 1.267-1.258s1.268.563 1.268 1.259m-2.33-13.379a1.06 1.06 0 0 0 1.063-1.056 1.06 1.06 0 0 0-1.063-1.057A1.06 1.06 0 0 0 16.3 5.61a1.06 1.06 0 0 0 1.064 1.056Zm3.891-.651a1.06 1.06 0 0 1-1.063 1.056 1.06 1.06 0 0 1-1.064-1.056 1.06 1.06 0 0 1 1.064-1.057 1.06 1.06 0 0 1 1.063 1.057m-4.253 3.329c.5 0 .905-.403.905-.9 0-.496-.405-.9-.905-.9s-.906.404-.906.9c0 .497.406.9.906.9m3.734-.52c0 .497-.405.9-.905.9a.903.903 0 0 1-.906-.9c0-.496.405-.9.906-.9.5 0 .905.404.905.9m1.357 1.777c.5 0 .906-.402.906-.899s-.405-.9-.906-.9c-.5 0-.905.403-.905.9s.405.9.905.9Zm-2.309.495a.79.79 0 0 1-.792.787.79.79 0 0 1-.791-.787c0-.434.354-.786.791-.786s.792.352.792.786m-3.62.404a.79.79 0 0 0 .792-.787.79.79 0 0 0-.792-.786.79.79 0 0 0-.791.786c0 .435.354.787.791.787m5.907.471a.79.79 0 0 1-.791.787.79.79 0 0 1-.792-.786.79.79 0 0 1 .792-.787.79.79 0 0 1 .791.787Zm-4.21 1.554c.375 0 .68-.302.68-.675a.677.677 0 0 0-.68-.675.68.68 0 0 0-.68.675c0 .373.304.675.68.675m2.968.178a.68.68 0 0 1-.68.676.677.677 0 0 1-.68-.676c0-.373.304-.675.68-.675.375 0 .68.302.68.675m-5.774-.582c.375 0 .68-.302.68-.675a.68.68 0 0 0-.68-.675.68.68 0 0 0-.68.675c0 .373.304.675.68.675m2.127.943c0 .31-.254.561-.566.561a.564.564 0 0 1-.566-.562c0-.31.253-.561.566-.561s.566.251.566.562m.407 2.114a.496.496 0 0 0 .498-.494.496.496 0 0 0-.498-.495.496.496 0 0 0-.498.495c0 .273.223.494.498.494m-.791-.09a.407.407 0 0 1-.408.405.407.407 0 0 1-.408-.405c0-.223.182-.405.408-.405s.408.181.408.405m-1.472-.765a.496.496 0 0 0 .498-.494.496.496 0 0 0-.498-.495.496.496 0 0 0-.498.495c0 .273.223.494.498.494m-.973-1.64c0 .31-.254.562-.566.562a.564.564 0 0 1-.566-.562c0-.31.253-.562.566-.562s.566.251.566.562m-.588-3.666a.564.564 0 0 0 .566-.562.564.564 0 0 0-.566-.562.564.564 0 0 0-.565.562c0 .31.253.562.565.562m.745-2.473a.496.496 0 0 1-.497.494.496.496 0 0 1-.498-.494c0-.273.223-.494.498-.494s.498.22.498.494Zm.047-1.123a.406.406 0 0 0 .407-.406.406.406 0 0 0-.407-.405.407.407 0 0 0-.408.405c0 .224.182.406.408.406m-.452-1.26a.496.496 0 0 1-.498.494.496.496 0 0 1-.498-.494c0-.273.223-.494.498-.494s.498.22.498.494m4.776 10.32a.564.564 0 0 0 .566-.561.564.564 0 0 0-.566-.562.564.564 0 0 0-.566.562c0 .31.253.562.566.562ZM12.883 4.439c0 .31-.254.562-.566.562a.564.564 0 0 1-.566-.562c0-.31.254-.562.566-.562s.566.251.566.562m-.18 2.945a.564.564 0 0 0 .566-.562.564.564 0 0 0-.566-.561.564.564 0 0 0-.566.561c0 .31.253.562.566.562m.045 1.597a.677.677 0 0 1-.68.676.68.68 0 0 1-.679-.676c0-.373.304-.675.68-.675.375 0 .68.302.68.675Zm-2.74.676a.79.79 0 0 0 .791-.786.79.79 0 0 0-.791-.787.79.79 0 0 0-.792.787c0 .434.354.786.792.786m-1.494-.36c0 .497-.405.9-.905.9a.903.903 0 0 1-.906-.9c0-.497.406-.9.906-.9s.905.403.905.9m-3.529 2.18a1.06 1.06 0 0 0 1.063-1.056 1.06 1.06 0 0 0-1.063-1.056A1.06 1.06 0 0 0 3.92 10.42a1.06 1.06 0 0 0 1.064 1.056Zm-1.45.9c0 .696-.568 1.26-1.268 1.26S1 13.073 1 12.377c0-.695.567-1.259 1.267-1.259s1.268.564 1.268 1.26Zm.386-3.531A1.06 1.06 0 0 0 4.985 7.79 1.06 1.06 0 0 0 3.92 6.733 1.06 1.06 0 0 0 2.858 7.79 1.06 1.06 0 0 0 3.92 8.846Zm3.53-2.181c0 .497-.405.9-.906.9a.903.903 0 0 1-.905-.9c0-.496.405-.9.905-.9s.906.404.906.9M6.162 5.182c.5 0 .905-.403.905-.9 0-.496-.405-.9-.905-.9s-.906.404-.906.9c0 .497.406.9.906.9m3.19-1.326a.79.79 0 0 1-.791.787.79.79 0 0 1-.792-.787c0-.434.354-.786.792-.786.437 0 .791.352.791.786m1.268.788c.375 0 .68-.303.68-.675a.677.677 0 0 0-.68-.676.68.68 0 0 0-.68.675c0 .373.304.676.68.676m1.063 1.708a.68.68 0 0 1-.68.675.677.677 0 0 1-.68-.675c0-.373.305-.675.68-.675s.68.302.68.675m-2.739.695a.79.79 0 0 0 .792-.786.79.79 0 0 0-.792-.786.79.79 0 0 0-.791.786c0 .434.354.786.791.786m-1.832 5.578a.407.407 0 0 1-.408.405.407.407 0 0 1-.408-.405c0-.223.182-.405.408-.405s.408.181.408.405m1.221.201a.496.496 0 0 0 .497-.494.496.496 0 0 0-.497-.495.496.496 0 0 0-.498.495c0 .273.223.494.498.494m2.354-1.236c0 .31-.253.562-.565.562a.564.564 0 0 1-.566-.562c0-.31.253-.562.566-.562s.565.252.565.562m-.135 2.361c.375 0 .68-.302.68-.675a.677.677 0 0 0-.68-.675.677.677 0 0 0-.68.675c0 .373.304.675.68.675m-1.608-.135c0 .31-.253.562-.566.562a.564.564 0 0 1-.565-.562c0-.31.253-.562.565-.562.313 0 .566.252.566.562m-2.488.538a.496.496 0 0 0 .498-.494.496.496 0 0 0-.498-.495.496.496 0 0 0-.498.495c0 .273.223.494.498.494m.588.991c0 .31-.254.562-.566.562a.564.564 0 0 1-.566-.562c0-.31.253-.562.566-.562s.566.252.566.562m1.742.855c.376 0 .68-.303.68-.675a.677.677 0 0 0-.68-.676.677.677 0 0 0-.68.675c0 .373.305.676.68.676m3.484-1.08a.79.79 0 0 1-.79.786.79.79 0 0 1-.792-.786c0-.435.354-.787.791-.787s.792.352.792.787Zm.794 2.743c.5 0 .906-.402.906-.9 0-.496-.406-.899-.906-.899s-.905.403-.905.9.405.9.905.9Zm-2.536-.518a.79.79 0 0 1-.792.786.79.79 0 0 1-.792-.787.79.79 0 0 1 .792-.786.79.79 0 0 1 .792.787m-2.669 2.316a.79.79 0 0 0 .791-.786.79.79 0 0 0-.792-.786.79.79 0 0 0-.791.786c0 .434.354.786.792.786m2.466 1.079c0 .497-.405.9-.905.9a.903.903 0 0 1-.906-.9c0-.496.405-.9.906-.9.5 0 .905.404.905.9M13.584 22a1.06 1.06 0 0 0 1.064-1.056 1.06 1.06 0 0 0-1.064-1.057 1.06 1.06 0 0 0-1.063 1.057A1.06 1.06 0 0 0 13.584 22m-1.379-2.788c0 .497-.405.9-.905.9a.903.903 0 0 1-.906-.9c0-.497.405-.9.905-.9s.906.403.906.9m3.123.54a1.06 1.06 0 0 0 1.063-1.057 1.06 1.06 0 0 0-1.063-1.056 1.06 1.06 0 0 0-1.064 1.056 1.06 1.06 0 0 0 1.064 1.057m-7.741-2.699a.677.677 0 0 1-.68.676.677.677 0 0 1-.68-.676c0-.373.305-.675.68-.675s.68.302.68.675\"\n />\n </svg>\n );\n}\n", "import 'src/components/connect-modal/wallet-list/WalletList.css.ts.vanilla.css?source=LldhbGxldExpc3RfY29udGFpbmVyX18xdGtkZWd3MCB7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIGdhcDogNHB4OwogIG92ZXJmbG93LXk6IGF1dG87Cn0KLldhbGxldExpc3RfaWNvbl9fMXRrZGVndzEgewogIGNvbG9yOiB2YXIoLS1kYXBwLWtpdC1jb2xvcnMtYm9keSk7Cn0=';\nexport var container = 'WalletList_container__1tkdegw0';\nexport var icon = 'WalletList_icon__1tkdegw1';", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\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 name: string;\n icon: ReactNode;\n isSelected?: boolean;\n onClick: () => void;\n};\n\nexport function WalletListItem({ name, icon, onClick, isSelected = false }: WalletListItemProps) {\n return (\n <li className={styles.container}>\n <button\n className={clsx(styles.walletItem, { [styles.selectedWalletItem]: isSelected })}\n type=\"button\"\n onClick={onClick}\n >\n {typeof icon === 'string' ? (\n <img className={styles.walletIcon} src={icon} alt={`${name} logo`} />\n ) : (\n icon\n )}\n <Heading size=\"md\" truncate asChild>\n <div>{name}</div>\n </Heading>\n </button>\n </li>\n );\n}\n", "import 'src/components/connect-modal/wallet-list/WalletListItem.css.ts.vanilla.css?source=LldhbGxldExpc3RJdGVtX2NvbnRhaW5lcl9fMXZydmV6azAgewogIGRpc3BsYXk6IGZsZXg7Cn0KLldhbGxldExpc3RJdGVtX3dhbGxldEl0ZW1fXzF2cnZlemsxIHsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZmxleC1ncm93OiAxOwogIHBhZGRpbmc6IDhweDsKICBnYXA6IDhweDsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1kYXBwLWtpdC1yYWRpaS1sYXJnZSk7Cn0KLldhbGxldExpc3RJdGVtX3dhbGxldEl0ZW1fXzF2cnZlemsxOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1kYXBwLWtpdC1iYWNrZ3JvdW5kQ29sb3JzLXdhbGxldEl0ZW1Ib3Zlcik7Cn0KLldhbGxldExpc3RJdGVtX3NlbGVjdGVkV2FsbGV0SXRlbV9fMXZydmV6azIgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWRhcHAta2l0LWJhY2tncm91bmRDb2xvcnMtd2FsbGV0SXRlbVNlbGVjdGVkKTsKICBib3gtc2hhZG93OiAwcHggMnB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMDUpOwp9Ci5XYWxsZXRMaXN0SXRlbV93YWxsZXRJY29uX18xdnJ2ZXprMyB7CiAgd2lkdGg6IDI4cHg7CiAgaGVpZ2h0OiAyOHB4OwogIGZsZXgtc2hyaW5rOiAwOwogIG9iamVjdC1maXQ6IGNvdmVyOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLWRhcHAta2l0LXJhZGlpLXNtYWxsKTsKfQ==';\nexport var container = 'WalletListItem_container__1vrvezk0';\nexport var selectedWalletItem = 'WalletListItem_selectedWalletItem__1vrvezk2';\nexport var walletIcon = 'WalletListItem_walletIcon__1vrvezk3';\nexport var walletItem = 'WalletListItem_walletItem__1vrvezk1';", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletWithRequiredFeatures } from '@iota/wallet-standard';\n\nimport { useWallets } from '../../../hooks/wallet/useWallets.js';\nimport { getWalletUniqueIdentifier } from '../../../utils/walletUtils.js';\nimport { IotaIcon } from '../../icons/IotaIcon.js';\nimport * as styles from './WalletList.css.js';\nimport { WalletListItem } from './WalletListItem.js';\n\ntype WalletListProps = {\n selectedWalletName?: string;\n onPlaceholderClick: () => void;\n onSelect: (wallet: WalletWithRequiredFeatures) => void;\n};\n\nexport function WalletList({ selectedWalletName, onPlaceholderClick, onSelect }: WalletListProps) {\n const wallets = useWallets();\n return (\n <ul className={styles.container}>\n {wallets.length > 0 ? (\n wallets.map((wallet) => (\n <WalletListItem\n key={getWalletUniqueIdentifier(wallet)}\n name={wallet.name}\n icon={wallet.icon}\n isSelected={getWalletUniqueIdentifier(wallet) === selectedWalletName}\n onClick={() => onSelect(wallet)}\n />\n ))\n ) : (\n <WalletListItem\n name=\"IOTA Wallet\"\n icon={<IotaIcon className={styles.icon} />}\n onClick={onPlaceholderClick}\n isSelected\n />\n )}\n </ul>\n );\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletAccount } from '@iota/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 return useWalletStore((state) => state.currentAccount);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { formatAddress } from '@iota/iota-sdk/utils';\nimport type { WalletAccount } from '@iota/wallet-standard';\nimport * as DropdownMenu from '@radix-ui/react-dropdown-menu';\nimport clsx from 'clsx';\n\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';\nimport { useGetDefaultIotaName } from '../hooks/useGetDefaultIotaName.js';\n\ntype AccountDropdownMenuProps = {\n currentAccount: WalletAccount;\n size?: React.ComponentProps<typeof Button>['size'];\n iotaNamesEnabled: boolean;\n};\n\nexport function AccountDropdownMenu({\n currentAccount,\n size = 'lg',\n iotaNamesEnabled,\n}: AccountDropdownMenuProps) {\n const { mutate: disconnectWallet } = useDisconnectWallet();\n const accounts = useAccounts();\n const { data: iotaName } = useGetDefaultIotaName(currentAccount.address, iotaNamesEnabled);\n const displayAccount =\n iotaName ?? currentAccount.label ?? formatAddress(currentAccount.address);\n\n return (\n <DropdownMenu.Root modal={false}>\n <StyleMarker>\n <DropdownMenu.Trigger asChild>\n <Button size={size} className={styles.connectedAccount}>\n <Text mono weight=\"bold\">\n {displayAccount}\n </Text>\n <ChevronIcon />\n </Button>\n </DropdownMenu.Trigger>\n </StyleMarker>\n <DropdownMenu.Portal>\n <StyleMarker className={styles.menuContainer}>\n <DropdownMenu.Content className={styles.menuContent}>\n <div className={styles.scrollableContent}>\n {accounts.map((account) => (\n <AccountDropdownMenuItem\n key={account.address}\n account={account}\n active={currentAccount.address === account.address}\n iotaNamesEnabled={iotaNamesEnabled}\n />\n ))}\n </div>\n <DropdownMenu.Separator className={styles.separator} />\n <DropdownMenu.Item\n className={clsx(styles.menuItem)}\n onSelect={() => disconnectWallet()}\n >\n Disconnect\n </DropdownMenu.Item>\n </DropdownMenu.Content>\n </StyleMarker>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n );\n}\n\nexport function AccountDropdownMenuItem({\n account,\n active,\n iotaNamesEnabled,\n}: {\n account: WalletAccount;\n active?: boolean;\n iotaNamesEnabled: boolean;\n}) {\n const { mutate: switchAccount } = useSwitchAccount();\n const { data: iotaName } = useGetDefaultIotaName(account.address, iotaNamesEnabled);\n const displayAccount = iotaName ?? account.label ?? formatAddress(account.address);\n\n return (\n <DropdownMenu.Item\n className={clsx(styles.menuItem, styles.switchAccountMenuItem)}\n onSelect={() => switchAccount({ account })}\n >\n <Text mono>{displayAccount}</Text>\n {active ? <CheckIcon /> : null}\n </DropdownMenu.Item>\n );\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletAccount } from '@iota/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 return useWalletStore((state) => state.accounts);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\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 UseMutationOptions<void, UseDisconnectWalletError, void, unknown>,\n 'mutationFn'\n>;\n\n/**\n * Mutation hook for disconnecting from an active wallet connection, if currently connected.\n */\nexport function useDisconnectWallet({\n mutationKey,\n ...mutationOptions\n}: UseDisconnectWalletMutationOptions = {}): UseMutationResult<\n void,\n UseDisconnectWalletError,\n void\n> {\n const { currentWallet } = useCurrentWallet();\n const setWalletDisconnected = useWalletStore((state) => state.setWalletDisconnected);\n\n return useMutation({\n mutationKey: walletMutationKeys.disconnectWallet(mutationKey),\n mutationFn: async () => {\n if (!currentWallet) {\n throw new WalletNotConnectedError('No wallet is connected.');\n }\n\n try {\n // Wallets aren't required to implement the disconnect feature, so we'll\n // optionally call the disconnect feature if it exists and reset the UI\n // state on the frontend at a minimum.\n await currentWallet.features['standard:disconnect']?.disconnect();\n } catch (error) {\n console.error(\n 'Failed to disconnect the application from the current wallet.',\n error,\n );\n }\n\n setWalletDisconnected();\n },\n ...mutationOptions,\n });\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\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// Modifications Copyright (c) 2024 IOTA Stiftung\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 const currentWallet = useWalletStore((state) => state.currentWallet);\n const connectionStatus = useWalletStore((state) => state.connectionStatus);\n const supportedIntents = useWalletStore((state) => state.supportedIntents);\n\n switch (connectionStatus) {\n case 'connecting':\n return {\n connectionStatus,\n currentWallet: null,\n isDisconnected: false,\n isConnecting: true,\n isConnected: false,\n supportedIntents: [],\n } as const;\n case 'disconnected':\n return {\n connectionStatus,\n currentWallet: null,\n isDisconnected: true,\n isConnecting: false,\n isConnected: false,\n supportedIntents: [],\n } as const;\n case 'connected': {\n return {\n connectionStatus,\n currentWallet: currentWallet!,\n isDisconnected: false,\n isConnecting: false,\n isConnected: true,\n supportedIntents,\n } as const;\n }\n }\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletAccount } from '@iota/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 account: WalletAccount;\n};\n\ntype SwitchAccountResult = void;\n\ntype UseSwitchAccountError = WalletNotConnectedError | WalletAccountNotFoundError | Error;\n\ntype UseSwitchAccountMutationOptions = Omit<\n UseMutationOptions<SwitchAccountResult, UseSwitchAccountError, SwitchAccountArgs, unknown>,\n 'mutationFn'\n>;\n\n/**\n * Mutation hook for switching to a specific wallet account.\n */\nexport function useSwitchAccount({\n mutationKey,\n ...mutationOptions\n}: UseSwitchAccountMutationOptions = {}): UseMutationResult<\n SwitchAccountResult,\n UseSwitchAccountError,\n SwitchAccountArgs\n> {\n const { currentWallet } = useCurrentWallet();\n const setAccountSwitched = useWalletStore((state) => state.setAccountSwitched);\n\n return useMutation({\n mutationKey: walletMutationKeys.switchAccount(mutationKey),\n mutationFn: async ({ account }) => {\n if (!currentWallet) {\n throw new WalletNotConnectedError('No wallet is connected.');\n }\n\n const accountToSelect = currentWallet.accounts.find(\n (walletAccount) => walletAccount.address === account.address,\n );\n if (!accountToSelect) {\n throw new WalletAccountNotFoundError(\n `No account with address ${account.address} is connected to ${currentWallet.name}.`,\n );\n }\n\n setAccountSwitched(accountToSelect);\n },\n ...mutationOptions,\n });\n}\n", "import 'src/components/AccountDropdownMenu.css.ts.vanilla.css?source=#H4sIAAAAAAAAA6VTPW/bMBDd/Ss4NgMDqXGLlJmSdOmQqWNRGDR5plhTdwR5jOQW/e+FGH/BidMG1ULg3ed773R5awwV5M+JoqUBHwDLwhAiGAa7DS4W7di4Pq4a8WsmhNNRies43sx+zy5fqu8Byz0ha4+Q9sVtLf4pPVoYlfi0+/7aBo42eF+bWJ9j0BslVgHGm5mor7Q+gWFPqIShUHqcIoO33CnRXjexZvZ6lB1417ESV80eTM6jZIpKzJ+gqK316LZEj0kLsaRkIcmkrS9ZiUed3klpdYxy7bnCXgadHFzUbG3WLlFBKw0FSs8KDgn3UzxLe6TCxVl5skkUgl4GOBXpqopEj5BWgQa5UUIXprPsq3gu0aBE+6oZXxj6/ZB5HXIq0675fNu7ZEgyQwDDSiAhTCAVDh7hADzzUwfvUHqGPithABnSW4X/Zx7frGYtO++6MO0O9ntl9nbbYvK9Tpu7wkz4im+DZ9NtIw+n63x4+cB/lMx+tZHmyWolctQG5BJ4AMCzkp1bAaJOmunwc36sY3futUeHkbvkca1E8/+3/HU3dhLnD4QDgFt6BAAA';\nexport var connectedAccount = 'AccountDropdownMenu_connectedAccount__1x0gmpf0';\nexport var menuContainer = 'AccountDropdownMenu_menuContainer__1x0gmpf1';\nexport var menuContent = 'AccountDropdownMenu_menuContent__1x0gmpf2';\nexport var menuItem = 'AccountDropdownMenu_menuItem__1x0gmpf4';\nexport var scrollableContent = 'AccountDropdownMenu_scrollableContent__1x0gmpf3';\nexport var separator = 'AccountDropdownMenu_separator__1x0gmpf6';\nexport var switchAccountMenuItem = 'AccountDropdownMenu_switchAccountMenuItem__1x0gmpf5';", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ComponentProps } from 'react';\n\nexport function CheckIcon(props: ComponentProps<'svg'>) {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={16} height={16} fill=\"none\" {...props}>\n <path\n fill=\"currentColor\"\n d=\"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 />\n </svg>\n );\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ComponentProps } from 'react';\n\nexport function ChevronIcon(props: ComponentProps<'svg'>) {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={16} height={16} fill=\"none\" {...props}>\n <path\n stroke=\"#A0B6C3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={1.5}\n d=\"m4 6 4 4 4-4\"\n />\n </svg>\n );\n}\n", "// Copyright (c) 2025 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { getNetwork } from '@iota/iota-sdk/client';\nimport { useQuery } from '@tanstack/react-query';\nimport { IotaNamesClient, normalizeIotaName } from '@iota/iota-names-sdk';\nimport { useIotaClientContext } from './useIotaClient.js';\nimport { useMemo } from 'react';\nimport { IotaGraphQLClient } from '@iota/iota-sdk/graphql';\n\nexport function useGetDefaultIotaName(\n address: string | null | undefined,\n iotaNamesEnabled: boolean,\n) {\n const iotaContext = useIotaClientContext();\n const network = getNetwork(iotaContext.network);\n\n const iotaNamesClient = useMemo(() => {\n const iotaGraphQLClient = new IotaGraphQLClient({\n url: network.graphql!,\n });\n\n return new IotaNamesClient({\n graphQlClient: iotaGraphQLClient,\n network: network.id,\n });\n }, [network.id]);\n\n const iotaNamesSupported = !!iotaNamesClient.config;\n\n return useQuery({\n queryKey: ['iota-name', 'default-name', address],\n queryFn: async () => {\n if (!address) return null;\n\n const name = await iotaNamesClient?.getDefaultName(address);\n\n return name ? normalizeIotaName(name) : name;\n },\n enabled: !!iotaNamesClient && !!address && iotaNamesEnabled && iotaNamesSupported,\n staleTime: 1000 * 60 * 10,\n });\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClient } from '@iota/iota-sdk/client';\nimport { useContext } from 'react';\n\nimport { IotaClientContext } from '../components/IotaClientProvider.js';\n\nexport function useIotaClientContext() {\n const iotaClient = useContext(IotaClientContext);\n\n if (!iotaClient) {\n throw new Error(\n 'Could not find IotaClientContext. Ensure that you have set up the IotaClientProvider',\n );\n }\n\n return iotaClient;\n}\n\nexport function useIotaClient(): IotaClient {\n return useIotaClientContext().client;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { getNetwork, isIotaClient, Network, IotaClient } from '@iota/iota-sdk/client';\nimport type { IotaClientOptions } from '@iota/iota-sdk/client';\nimport { createContext, useMemo, useState } from 'react';\n\nimport type { NetworkConfig } from '../hooks/networkConfig.js';\n\ntype NetworkConfigs<T extends NetworkConfig | IotaClient = NetworkConfig | IotaClient> = Record<\n string,\n T\n>;\n\nexport interface IotaClientProviderContext {\n client: IotaClient;\n networks: NetworkConfigs;\n network: string;\n config: NetworkConfig | null;\n selectNetwork: (network: string) => void;\n}\n\nexport const IotaClientContext = createContext<IotaClientProviderContext | null>(null);\n\nexport type IotaClientProviderProps<T extends NetworkConfigs> = {\n createClient?: (name: keyof T, config: T[keyof T]) => IotaClient;\n children: React.ReactNode;\n networks?: T;\n onNetworkChange?: (network: keyof T & string) => void;\n} & (\n | {\n defaultNetwork?: keyof T & string;\n network?: never;\n }\n | {\n defaultNetwork?: never;\n network?: keyof T & string;\n }\n);\n\nconst DEFAULT_NETWORKS = {\n localnet: { url: getNetwork(Network.Localnet)?.url },\n};\n\nconst DEFAULT_CREATE_CLIENT = function createClient(\n _name: string,\n config: NetworkConfig | IotaClient,\n) {\n if (isIotaClient(config)) {\n return config;\n }\n\n return new IotaClient(config);\n};\n\nexport function IotaClientProvider<T extends NetworkConfigs>(props: IotaClientProviderProps<T>) {\n const { onNetworkChange, network, children } = props;\n const networks = (props.networks ?? DEFAULT_NETWORKS) as T;\n const createClient =\n (props.createClient as typeof DEFAULT_CREATE_CLIENT) ?? DEFAULT_CREATE_CLIENT;\n\n const [selectedNetwork, setSelectedNetwork] = useState<keyof T & string>(\n props.network ?? props.defaultNetwork ?? (Object.keys(networks)[0] as keyof T & string),\n );\n\n const currentNetwork = props.network ?? selectedNetwork;\n\n const client = useMemo(() => {\n return createClient(currentNetwork, networks[currentNetwork]);\n }, [createClient, currentNetwork, networks]);\n\n const ctx = useMemo((): IotaClientProviderContext => {\n return {\n client,\n networks,\n network: currentNetwork,\n config:\n networks[currentNetwork] instanceof IotaClient\n ? null\n : (networks[currentNetwork] as IotaClientOptions),\n selectNetwork: (newNetwork) => {\n if (currentNetwork === newNetwork) {\n return;\n }\n\n if (!network && newNetwork !== selectedNetwork) {\n setSelectedNetwork(newNetwork);\n }\n\n onNetworkChange?.(newNetwork);\n },\n };\n }, [client, networks, selectedNetwork, currentNetwork, network, onNetworkChange]);\n\n return <IotaClientContext.Provider value={ctx}>{children}</IotaClientContext.Provider>;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ReactNode } from 'react';\nimport type { WalletWithRequiredFeatures } from '@iota/wallet-standard';\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 connectText?: ReactNode;\n size?: React.ComponentProps<typeof Button>['size'];\n iotaNamesEnabled?: boolean;\n onConnected?: (params: { wallet: WalletWithRequiredFeatures }) => void;\n} & React.ComponentProps<typeof Button>;\n\nexport function ConnectButton({\n connectText = 'Connect Wallet',\n size,\n iotaNamesEnabled = true,\n onConnected,\n ...buttonProps\n}: ConnectButtonProps) {\n const currentAccount = useCurrentAccount();\n return currentAccount ? (\n <AccountDropdownMenu\n currentAccount={currentAccount}\n size={size}\n iotaNamesEnabled={iotaNamesEnabled}\n />\n ) : (\n <ConnectModal\n onConnected={onConnected}\n trigger={\n <StyleMarker>\n <Button {...buttonProps} size={size}>\n {connectText}\n </Button>\n </StyleMarker>\n }\n />\n );\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletWithFeatures, WalletWithRequiredFeatures } from '@iota/wallet-standard';\nimport type { ReactNode } from 'react';\nimport { useRef } from 'react';\nimport type { StateStorage } from 'zustand/middleware';\n\nimport {\n DEFAULT_PREFERRED_WALLETS,\n DEFAULT_STORAGE,\n DEFAULT_STORAGE_KEY,\n DEFAULT_WALLET_FILTER,\n} from '../constants/walletDefaults.js';\nimport { WalletContext } from '../contexts/walletContext.js';\nimport { useAutoConnectWallet } from '../hooks/wallet/useAutoConnectWallet.js';\nimport { useUnsafeBurnerWallet } from '../hooks/wallet/useUnsafeBurnerWallet.js';\nimport { useWalletPropertiesChanged } from '../hooks/wallet/useWalletPropertiesChanged.js';\nimport { useWalletsChanged } from '../hooks/wallet/useWalletsChanged.js';\nimport { lightTheme } from '../themes/lightTheme.js';\nimport type { Theme } from '../themes/themeContract.js';\nimport { createInMemoryStore } from '../utils/stateStorage.js';\nimport { getRegisteredWallets } from '../utils/walletUtils.js';\nimport { createWalletStore } from '../walletStore.js';\nimport { InjectedThemeStyles } from './styling/InjectedThemeStyles.js';\nimport type { ChainType } from '@iota/iota-sdk/client';\n\nexport type WalletProviderProps = {\n /** 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. */\n preferredWallets?: string[];\n\n /** A filter function to select wallets that support features required for the dApp to function. This filters the list of wallets presented to users when selecting a wallet to connect from, ensuring that only wallets that meet the dApps requirements can connect. */\n walletFilter?: (wallet: WalletWithRequiredFeatures) => boolean;\n\n /** Enables the development-only unsafe burner wallet, which can be useful for testing. */\n enableUnsafeBurner?: boolean;\n\n /** Enables automatically reconnecting to the most recently used wallet account upon mounting. */\n autoConnect?: boolean;\n\n /** 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. */\n storage?: StateStorage | null;\n\n /** The key to use to store the most recently connected wallet account. */\n storageKey?: string;\n\n /** The theme to use for styling UI components. Defaults to using the light theme. */\n theme?: Theme | null;\n\n chain?: ChainType;\n\n children: ReactNode;\n};\n\nexport type { WalletWithFeatures };\n\nexport function WalletProvider({\n preferredWallets = DEFAULT_PREFERRED_WALLETS,\n walletFilter = DEFAULT_WALLET_FILTER,\n storage = DEFAULT_STORAGE,\n storageKey = DEFAULT_STORAGE_KEY,\n enableUnsafeBurner = false,\n autoConnect = false,\n theme = lightTheme,\n children,\n chain,\n}: WalletProviderProps) {\n const storeRef = useRef(\n createWalletStore({\n autoConnectEnabled: autoConnect,\n wallets: getRegisteredWallets(preferredWallets, walletFilter),\n storage: storage || createInMemoryStore(),\n storageKey,\n chain,\n }),\n );\n\n return (\n <WalletContext.Provider value={storeRef.current}>\n <WalletConnectionManager\n preferredWallets={preferredWallets}\n walletFilter={walletFilter}\n enableUnsafeBurner={enableUnsafeBurner}\n >\n {/* TODO: We ideally don't want to inject styles if people aren't using the UI components */}\n {theme ? <InjectedThemeStyles theme={theme} /> : null}\n {children}\n </WalletConnectionManager>\n </WalletContext.Provider>\n );\n}\n\ntype WalletConnectionManagerProps = Pick<\n WalletProviderProps,\n 'preferredWallets' | 'walletFilter' | 'enableUnsafeBurner' | 'children'\n>;\n\nfunction WalletConnectionManager({\n preferredWallets = DEFAULT_PREFERRED_WALLETS,\n walletFilter = DEFAULT_WALLET_FILTER,\n enableUnsafeBurner = false,\n children,\n}: WalletConnectionManagerProps) {\n useWalletsChanged(preferredWallets, walletFilter);\n useWalletPropertiesChanged();\n useUnsafeBurnerWallet(enableUnsafeBurner);\n useAutoConnectWallet();\n\n return children;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { StateStorage } from 'zustand/middleware';\n\nexport function createInMemoryStore(): StateStorage {\n const store = new Map();\n return {\n getItem(key: string) {\n return store.get(key);\n },\n setItem(key: string, value: string) {\n store.set(key, value);\n },\n removeItem(key: string) {\n store.delete(key);\n },\n };\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaWalletFeatures, WalletWithRequiredFeatures } from '@iota/wallet-standard';\n\nimport { createInMemoryStore } from '../utils/stateStorage.js';\n\nexport const IOTA_WALLET_NAME = 'IOTA Wallet';\n\nexport const DEFAULT_STORAGE =\n typeof window !== 'undefined' && window.localStorage ? localStorage : createInMemoryStore();\n\nexport const DEFAULT_STORAGE_KEY = 'iota-dapp-kit:wallet-connection-info';\n\nconst SIGN_FEATURES = ['iota:signTransaction'] satisfies (keyof IotaWalletFeatures)[];\n\nexport const DEFAULT_WALLET_FILTER = (wallet: WalletWithRequiredFeatures) =>\n SIGN_FEATURES.some((feature) => wallet.features[feature]);\n\nexport const DEFAULT_PREFERRED_WALLETS = [IOTA_WALLET_NAME];\n\nconst WALLET_CHROME_EXTENSION_ID = 'iidjkmdceolghepehaaddojmnjnkkija';\n\nexport const WALLET_DOWNLOAD_URL =\n 'https://chromewebstore.google.com/detail/' + WALLET_CHROME_EXTENSION_ID;\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useQuery } from '@tanstack/react-query';\nimport { useLayoutEffect, useState } from 'react';\n\nimport { getWalletUniqueIdentifier } from '../../utils/walletUtils.js';\nimport { useConnectWallet } from './useConnectWallet.js';\nimport { useCurrentWallet } from './useCurrentWallet.js';\nimport { useWallets } from './useWallets.js';\nimport { useWalletStore } from './useWalletStore.js';\n\nexport function useAutoConnectWallet(): 'disabled' | 'idle' | 'attempted' {\n const { mutateAsync: connectWallet } = useConnectWallet();\n const autoConnectEnabled = useWalletStore((state) => state.autoConnectEnabled);\n const lastConnectedWalletName = useWalletStore((state) => state.lastConnectedWalletName);\n const lastConnectedAccountAddress = useWalletStore(\n (state) => state.lastConnectedAccountAddress,\n );\n const wallets = useWallets();\n const { isConnected } = useCurrentWallet();\n\n const [clientOnly, setClientOnly] = useState(false);\n useLayoutEffect(() => {\n setClientOnly(true);\n }, []);\n\n const { data, isError } = useQuery({\n queryKey: [\n '@iota/dapp-kit',\n 'autoconnect',\n {\n isConnected,\n autoConnectEnabled,\n lastConnectedWalletName,\n lastConnectedAccountAddress,\n walletCount: wallets.length,\n },\n ],\n queryFn: async () => {\n if (!autoConnectEnabled) {\n return 'disabled';\n }\n\n if (!lastConnectedWalletName || !lastConnectedAccountAddress || isConnected) {\n return 'attempted';\n }\n\n const wallet = wallets.find(\n (wallet) => getWalletUniqueIdentifier(wallet) === lastConnectedWalletName,\n );\n if (wallet) {\n await connectWallet({\n wallet,\n accountAddress: lastConnectedAccountAddress,\n silent: true,\n });\n }\n\n return 'attempted';\n },\n enabled: autoConnectEnabled,\n persister: undefined,\n gcTime: 0,\n staleTime: 0,\n networkMode: 'always',\n retry: false,\n retryOnMount: false,\n refetchInterval: false,\n refetchIntervalInBackground: false,\n refetchOnMount: false,\n refetchOnReconnect: false,\n refetchOnWindowFocus: false,\n });\n\n if (!autoConnectEnabled) {\n return 'disabled';\n }\n\n // We always initialize with \"idle\" so that in SSR environments, we guarantee that the initial render states always agree:\n if (!clientOnly) {\n return 'idle';\n }\n\n if (isConnected) {\n return 'attempted';\n }\n\n if (!lastConnectedWalletName) {\n return 'attempted';\n }\n\n return isError ? 'attempted' : (data ?? 'idle');\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClient } from '@iota/iota-sdk/client';\nimport { Ed25519Keypair } from '@iota/iota-sdk/keypairs/ed25519';\nimport { Transaction } from '@iota/iota-sdk/transactions';\nimport { toBase64 } from '@iota/iota-sdk/utils';\nimport type {\n StandardConnectFeature,\n StandardConnectMethod,\n StandardEventsFeature,\n StandardEventsOnMethod,\n IotaFeatures,\n IotaSignAndExecuteTransactionMethod,\n IotaSignPersonalMessageMethod,\n IotaSignTransactionMethod,\n Wallet,\n} from '@iota/wallet-standard';\nimport { getWallets, ReadonlyWalletAccount, SUPPORTED_CHAINS } from '@iota/wallet-standard';\nimport { useEffect } from 'react';\n\nimport { useIotaClient } from '../useIotaClient.js';\n\nconst WALLET_NAME = 'Unsafe Burner Wallet';\n\nexport function useUnsafeBurnerWallet(enabled: boolean) {\n const iotaClient = useIotaClient();\n\n useEffect(() => {\n if (!enabled) {\n return;\n }\n const unregister = registerUnsafeBurnerWallet(iotaClient);\n return unregister;\n }, [enabled, iotaClient]);\n}\n\nfunction registerUnsafeBurnerWallet(iotaClient: IotaClient) {\n const walletsApi = getWallets();\n const registeredWallets = walletsApi.get();\n\n if (registeredWallets.find((wallet) => wallet.name === WALLET_NAME)) {\n console.warn(\n 'registerUnsafeBurnerWallet: Unsafe Burner Wallet already registered, skipping duplicate registration.',\n );\n return;\n }\n\n console.warn(\n 'Your application is currently using the unsafe burner wallet. Make sure that this wallet is disabled in production.',\n );\n\n const keypair = new Ed25519Keypair();\n const account = new ReadonlyWalletAccount({\n address: keypair.getPublicKey().toIotaAddress(),\n publicKey: keypair.getPublicKey().toIotaBytes(),\n chains: ['iota:unknown'],\n features: ['iota:signTransaction', 'iota:signAndExecuteTransaction'],\n });\n\n class UnsafeBurnerWallet implements Wallet {\n get version() {\n return '1.0.0' as const;\n }\n\n get name() {\n return WALLET_NAME;\n }\n\n get icon() {\n return 'data:image/png;base64,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' as const;\n }\n\n // Return the IOTA chains that your wallet supports.\n get chains() {\n return SUPPORTED_CHAINS;\n }\n\n get accounts() {\n return [account];\n }\n\n get features(): StandardConnectFeature & StandardEventsFeature & IotaFeatures {\n return {\n 'standard:connect': {\n version: '1.0.0',\n connect: this.#connect,\n },\n 'standard:events': {\n version: '1.0.0',\n on: this.#on,\n },\n 'iota:signPersonalMessage': {\n version: '1.0.0',\n signPersonalMessage: this.#signPersonalMessage,\n },\n 'iota:signTransaction': {\n version: '2.0.0',\n signTransaction: this.#signTransaction,\n },\n 'iota:signAndExecuteTransaction': {\n version: '2.0.0',\n signAndExecuteTransaction: this.#signAndExecuteTransaction,\n },\n };\n }\n\n #on: StandardEventsOnMethod = () => {\n return () => {};\n };\n\n #connect: StandardConnectMethod = async () => {\n return { accounts: this.accounts };\n };\n\n #signPersonalMessage: IotaSignPersonalMessageMethod = async (messageInput) => {\n const { bytes, signature } = await keypair.signPersonalMessage(messageInput.message);\n return { bytes, signature };\n };\n\n #signTransaction: IotaSignTransactionMethod = async (transactionInput) => {\n const { bytes, signature } = await Transaction.from(\n await transactionInput.transaction.toJSON(),\n ).sign({\n client: iotaClient,\n signer: keypair,\n });\n\n transactionInput.signal?.throwIfAborted();\n\n return {\n bytes,\n signature: signature,\n };\n };\n\n #signAndExecuteTransaction: IotaSignAndExecuteTransactionMethod = async (\n transactionInput,\n ) => {\n const { bytes, signature } = await Transaction.from(\n await transactionInput.transaction.toJSON(),\n ).sign({\n client: iotaClient,\n signer: keypair,\n });\n\n transactionInput.signal?.throwIfAborted();\n\n const { rawEffects, digest } = await iotaClient.executeTransactionBlock({\n signature,\n transactionBlock: bytes,\n options: {\n showRawEffects: true,\n },\n });\n\n return {\n bytes,\n signature,\n digest,\n effects: toBase64(new Uint8Array(rawEffects!)),\n };\n };\n }\n\n return walletsApi.register(new UnsafeBurnerWallet());\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useEffect } from 'react';\n\nimport { useCurrentWallet } from './useCurrentWallet.js';\nimport { useWalletStore } from './useWalletStore.js';\n\n/**\n * Internal hook for easily handling various changes in properties for a wallet.\n */\nexport function useWalletPropertiesChanged() {\n const { currentWallet } = useCurrentWallet();\n const updateWalletAccounts = useWalletStore((state) => state.updateWalletAccounts);\n\n useEffect(() => {\n const unsubscribeFromEvents = currentWallet?.features['standard:events'].on(\n 'change',\n ({ accounts }) => {\n // TODO: We should handle features changing that might make the list of wallets\n // or even the current wallet incompatible with the dApp.\n if (accounts) {\n updateWalletAccounts(accounts);\n }\n },\n );\n return unsubscribeFromEvents;\n }, [currentWallet?.features, updateWalletAccounts]);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletWithRequiredFeatures } from '@iota/wallet-standard';\nimport { getWallets } from '@iota/wallet-standard';\nimport { useEffect } from 'react';\n\nimport { getRegisteredWallets } from '../../utils/walletUtils.js';\nimport { useWalletStore } from './useWalletStore.js';\n\n/**\n * Internal hook for easily handling the addition and removal of new wallets.\n */\nexport function useWalletsChanged(\n preferredWallets: string[],\n walletFilter?: (wallet: WalletWithRequiredFeatures) => boolean,\n) {\n const setWalletRegistered = useWalletStore((state) => state.setWalletRegistered);\n const setWalletUnregistered = useWalletStore((state) => state.setWalletUnregistered);\n\n useEffect(() => {\n const walletsApi = getWallets();\n setWalletRegistered(getRegisteredWallets(preferredWallets, walletFilter));\n\n const unsubscribeFromRegister = walletsApi.on('register', () => {\n setWalletRegistered(getRegisteredWallets(preferredWallets, walletFilter));\n });\n\n const unsubscribeFromUnregister = walletsApi.on('unregister', (unregisteredWallet) => {\n setWalletUnregistered(\n getRegisteredWallets(preferredWallets, walletFilter),\n unregisteredWallet,\n );\n });\n\n return () => {\n unsubscribeFromRegister();\n unsubscribeFromUnregister();\n };\n }, [preferredWallets, walletFilter, setWalletRegistered, setWalletUnregistered]);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ThemeVars } from './themeContract.js';\n\nexport const lightTheme: ThemeVars = {\n blurs: {\n modalOverlay: 'blur(0)',\n },\n backgroundColors: {\n primaryButton: '#F6F7F9',\n primaryButtonHover: '#F0F2F5',\n outlineButtonHover: '#F4F4F5',\n modalOverlay: 'rgba(24 36 53 / 20%)',\n modalPrimary: 'white',\n modalSecondary: '#F7F8F8',\n iconButton: 'transparent',\n dropdownMenu: '#FFFFFF',\n dropdownMenuSeparator: '#F3F6F8',\n walletItemSelected: 'white',\n walletItemHover: '#3C424226',\n scrollThumb: '#cad4e2',\n },\n borderColors: {\n outlineButton: '#E4E4E7',\n },\n colors: {\n primaryButton: '#373737',\n outlineButtonHover: '#373737',\n iconButton: '#000000',\n body: '#182435',\n bodyMuted: '#767A81',\n bodyDanger: '#FF794B',\n },\n radii: {\n small: '6px',\n medium: '8px',\n large: '12px',\n xlarge: '16px',\n full: '120px',\n },\n fontWeights: {\n normal: '400',\n medium: '500',\n bold: '600',\n },\n fontSizes: {\n small: '14px',\n medium: '16px',\n large: '18px',\n xlarge: '20px',\n },\n typography: {\n fontFamily:\n 'ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"',\n fontStyle: 'normal',\n lineHeight: '24px',\n letterSpacing: '0.1px',\n },\n spacing: {\n xxsmall: '4px',\n xsmall: '8px',\n small: '12px',\n medium: '16px',\n large: '24px',\n xlarge: '32px',\n },\n};\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Wallet, WalletAccount, WalletWithRequiredFeatures } from '@iota/wallet-standard';\nimport { createStore } from 'zustand';\nimport type { StateStorage } from 'zustand/middleware';\nimport { createJSONStorage, persist } from 'zustand/middleware';\n\nimport { getWalletUniqueIdentifier } from './utils/walletUtils.js';\nimport type { ChainType } from '@iota/iota-sdk/client';\n\ntype WalletConnectionStatus = 'disconnected' | 'connecting' | 'connected';\n\nexport type WalletActions = {\n setAccountSwitched: (selectedAccount: WalletAccount) => void;\n setConnectionStatus: (connectionStatus: WalletConnectionStatus) => void;\n setWalletConnected: (\n wallet: WalletWithRequiredFeatures,\n connectedAccounts: readonly WalletAccount[],\n selectedAccount: WalletAccount | null,\n supportedIntents?: string[],\n ) => void;\n updateWalletAccounts: (accounts: readonly WalletAccount[]) => void;\n setWalletDisconnected: () => void;\n setWalletRegistered: (updatedWallets: WalletWithRequiredFeatures[]) => void;\n setWalletUnregistered: (\n updatedWallets: WalletWithRequiredFeatures[],\n unregisteredWallet: Wallet,\n ) => void;\n};\n\nexport type WalletStore = ReturnType<typeof createWalletStore>;\n\nexport type StoreState = {\n autoConnectEnabled: boolean;\n wallets: WalletWithRequiredFeatures[];\n accounts: readonly WalletAccount[];\n currentWallet: WalletWithRequiredFeatures | null;\n currentAccount: WalletAccount | null;\n lastConnectedAccountAddress: string | null;\n lastConnectedWalletName: string | null;\n connectionStatus: WalletConnectionStatus;\n supportedIntents: string[];\n chain: ChainType | undefined;\n} & WalletActions;\n\ntype WalletConfiguration = {\n autoConnectEnabled: boolean;\n wallets: WalletWithRequiredFeatures[];\n storage: StateStorage;\n storageKey: string;\n chain?: ChainType;\n};\n\nexport function createWalletStore({\n wallets,\n storage,\n storageKey,\n autoConnectEnabled,\n chain,\n}: WalletConfiguration) {\n return createStore<StoreState>()(\n persist(\n (set, get) => ({\n autoConnectEnabled,\n wallets,\n accounts: [] as WalletAccount[],\n currentWallet: null,\n currentAccount: null,\n lastConnectedAccountAddress: null,\n lastConnectedWalletName: null,\n connectionStatus: 'disconnected',\n supportedIntents: [],\n chain,\n setConnectionStatus(connectionStatus) {\n set(() => ({\n connectionStatus,\n }));\n },\n setWalletConnected(\n wallet,\n connectedAccounts,\n selectedAccount,\n supportedIntents = [],\n ) {\n set(() => ({\n accounts: connectedAccounts,\n currentWallet: wallet,\n currentAccount: selectedAccount,\n lastConnectedWalletName: getWalletUniqueIdentifier(wallet),\n lastConnectedAccountAddress: selectedAccount?.address,\n connectionStatus: 'connected',\n supportedIntents,\n }));\n },\n setWalletDisconnected() {\n set(() => ({\n accounts: [],\n currentWallet: null,\n currentAccount: null,\n lastConnectedWalletName: null,\n lastConnectedAccountAddress: null,\n connectionStatus: 'disconnected',\n supportedIntents: [],\n }));\n },\n setAccountSwitched(selectedAccount) {\n set(() => ({\n currentAccount: selectedAccount,\n lastConnectedAccountAddress: selectedAccount.address,\n }));\n },\n setWalletRegistered(updatedWallets) {\n set(() => ({ wallets: updatedWallets }));\n },\n setWalletUnregistered(updatedWallets, unregisteredWallet) {\n if (unregisteredWallet === get().currentWallet) {\n set(() => ({\n wallets: updatedWallets,\n accounts: [],\n currentWallet: null,\n currentAccount: null,\n lastConnectedWalletName: null,\n lastConnectedAccountAddress: null,\n connectionStatus: 'disconnected',\n supportedIntents: [],\n }));\n } else {\n set(() => ({ wallets: updatedWallets }));\n }\n },\n updateWalletAccounts(accounts) {\n const currentAccount = get().currentAccount;\n\n set(() => ({\n accounts,\n currentAccount:\n (currentAccount &&\n accounts.find(\n ({ address }) => address === currentAccount.address,\n )) ||\n accounts[0],\n }));\n },\n }),\n {\n name: storageKey,\n storage: createJSONStorage(() => storage),\n partialize: ({ lastConnectedWalletName, lastConnectedAccountAddress }) => ({\n lastConnectedWalletName,\n lastConnectedAccountAddress,\n }),\n },\n ),\n );\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { assignInlineVars } from '@vanilla-extract/dynamic';\n\nimport { styleDataAttributeSelector } from '../../constants/styleDataAttribute.js';\nimport { themeVars } from '../../themes/themeContract.js';\nimport type { DynamicTheme, Theme, ThemeVars } from '../../themes/themeContract.js';\n\ntype InjectedThemeStylesProps = {\n theme: Theme;\n};\n\nexport function InjectedThemeStyles({ theme }: InjectedThemeStylesProps) {\n const themeStyles = Array.isArray(theme)\n ? getDynamicThemeStyles(theme)\n : getStaticThemeStyles(theme);\n\n return (\n <style\n // @ts-expect-error The precedence prop hasn't made it to the stable release of React, but we\n // don't want this to break in frameworks like Next which use the latest canary build.\n precedence=\"default\"\n href=\"iota-dapp-kit-theme\"\n dangerouslySetInnerHTML={{\n __html: themeStyles,\n }}\n />\n );\n}\n\nfunction getDynamicThemeStyles(themes: DynamicTheme[]) {\n return themes\n .map(({ mediaQuery, selector, variables }) => {\n const themeStyles = getStaticThemeStyles(variables);\n const themeStylesWithSelectorPrefix = selector\n ? `${selector} ${themeStyles}`\n : themeStyles;\n\n return mediaQuery\n ? `@media ${mediaQuery}{${themeStylesWithSelectorPrefix}}`\n : themeStylesWithSelectorPrefix;\n })\n .join(' ');\n}\n\nfunction getStaticThemeStyles(theme: ThemeVars) {\n return `${styleDataAttributeSelector} {${cssStringFromTheme(theme)}}`;\n}\n\nfunction cssStringFromTheme(theme: ThemeVars) {\n return Object.entries(assignInlineVars(themeVars, theme))\n .map(([key, value]) => `${key}:${value};`)\n .join('');\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { createGlobalThemeContract } from '@vanilla-extract/css';\n\nconst themeContractValues = {\n blurs: {\n modalOverlay: '',\n },\n backgroundColors: {\n primaryButton: '',\n primaryButtonHover: '',\n outlineButtonHover: '',\n walletItemHover: '',\n walletItemSelected: '',\n modalOverlay: '',\n modalPrimary: '',\n modalSecondary: '',\n iconButton: '',\n dropdownMenu: '',\n dropdownMenuSeparator: '',\n scrollThumb: '',\n },\n borderColors: {\n outlineButton: '',\n },\n colors: {\n primaryButton: '',\n outlineButtonHover: '',\n body: '',\n bodyMuted: '',\n bodyDanger: '',\n iconButton: '',\n },\n radii: {\n small: '',\n medium: '',\n large: '',\n xlarge: '',\n full: '',\n },\n fontWeights: {\n normal: '',\n medium: '',\n bold: '',\n },\n fontSizes: {\n small: '',\n medium: '',\n large: '',\n xlarge: '',\n },\n typography: {\n fontFamily: '',\n fontStyle: '',\n lineHeight: '',\n letterSpacing: '',\n },\n spacing: {\n xxsmall: '',\n xsmall: '',\n small: '',\n medium: '',\n large: '',\n xlarge: '',\n },\n};\n\nexport type ThemeVars = typeof themeContractValues;\n\n/**\n * A custom theme that is enabled when various conditions are\n */\nexport type DynamicTheme = {\n /**\n * An optional media query required for the given theme to be enabled. This is useful\n * when you want the theme of your application to automatically switch depending on\n * a media feature.\n *\n * @example '(prefers-color-scheme: dark)'\n */\n mediaQuery?: string;\n\n /**\n * An optional CSS selector required for the given theme to be enabled. This is useful\n * when you have a manual theme switcher on your application that sets a top-level\n * class name or data-attribute to control the current theme.\n *\n * @example '.data-dark'\n */\n selector?: string;\n\n /** The theme definitions that will be set when the selector and mediaQuery criteria are matched. */\n variables: ThemeVars;\n};\n\nexport type Theme = ThemeVars | DynamicTheme[];\n\nexport const themeVars = createGlobalThemeContract(\n themeContractValues,\n (_, path) => `dapp-kit-${path.join('-')}`,\n);\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClientOptions } from '@iota/iota-sdk/client';\n\nimport { useIotaClientContext } from './useIotaClient.js';\n\nexport type NetworkConfig<T extends object = object> = IotaClientOptions & {\n variables?: T;\n};\n\nexport function createNetworkConfig<\n const T extends Record<string, Config>,\n Config extends NetworkConfig<Variables> = T[keyof T],\n Variables extends object = NonNullable<Config['variables']>,\n>(networkConfig: T) {\n function useNetworkConfig(): Config {\n const { config } = useIotaClientContext();\n\n if (!config) {\n throw new Error('No network config found');\n }\n\n return config as T[keyof T];\n }\n\n function useNetworkVariables(): Variables {\n const { variables } = useNetworkConfig();\n\n return (variables ?? {}) as Variables;\n }\n\n function useNetworkVariable<K extends keyof Variables>(name: K): Variables[K] {\n const variables = useNetworkVariables();\n\n return variables[name];\n }\n\n return {\n networkConfig,\n useNetworkConfig,\n useNetworkVariables,\n useNetworkVariable,\n };\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClient } from '@iota/iota-sdk/client';\nimport type {\n InfiniteData,\n UseInfiniteQueryOptions,\n UseInfiniteQueryResult,\n} from '@tanstack/react-query';\nimport { useInfiniteQuery } from '@tanstack/react-query';\n\nimport type { PartialBy } from '../types/utilityTypes.js';\nimport { useIotaClientContext } from './useIotaClient.js';\n\ninterface PaginatedResult {\n data?: unknown;\n nextCursor?: unknown;\n hasNextPage: boolean;\n}\n\nexport type IotaRpcPaginatedMethodName = {\n [K in keyof IotaClient]: IotaClient[K] extends (input: any) => Promise<PaginatedResult>\n ? K\n : never;\n}[keyof IotaClient];\n\nexport type IotaRpcPaginatedMethods = {\n [K in IotaRpcPaginatedMethodName]: IotaClient[K] extends (\n input: infer Params,\n ) => Promise<\n infer Result extends { hasNextPage?: boolean | null; nextCursor?: infer Cursor | null }\n >\n ? {\n name: K;\n result: Result;\n params: Params;\n cursor: Cursor;\n }\n : never;\n};\n\nexport type UseIotaClientInfiniteQueryOptions<\n T extends keyof IotaRpcPaginatedMethods,\n TData,\n> = PartialBy<\n Omit<\n UseInfiniteQueryOptions<\n IotaRpcPaginatedMethods[T]['result'],\n Error,\n TData,\n IotaRpcPaginatedMethods[T]['result'],\n unknown[]\n >,\n 'queryFn' | 'initialPageParam' | 'getNextPageParam'\n >,\n 'queryKey'\n>;\n\nexport function useIotaClientInfiniteQuery<\n T extends keyof IotaRpcPaginatedMethods,\n TData = InfiniteData<IotaRpcPaginatedMethods[T]['result']>,\n>(\n method: T,\n params: IotaRpcPaginatedMethods[T]['params'],\n {\n queryKey = [],\n enabled = !!params,\n ...options\n }: UseIotaClientInfiniteQueryOptions<T, TData> = {},\n): UseInfiniteQueryResult<TData, Error> {\n const iotaContext = useIotaClientContext();\n\n return useInfiniteQuery({\n ...options,\n initialPageParam: null,\n queryKey: [iotaContext.network, method, params, ...queryKey],\n enabled,\n queryFn: ({ pageParam }) =>\n iotaContext.client[method]({\n ...(params ?? {}),\n cursor: pageParam,\n } as never),\n getNextPageParam: (lastPage) =>\n lastPage.hasNextPage ? (lastPage.nextCursor ?? null) : null,\n });\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { useIotaClientContext } from './useIotaClient.js';\nimport type { IotaRpcMethods } from './useIotaClientQuery.js';\n\nexport type UseIotaClientMutationOptions<T extends keyof IotaRpcMethods> = Omit<\n UseMutationOptions<IotaRpcMethods[T]['result'], Error, IotaRpcMethods[T]['params'], unknown[]>,\n 'mutationFn'\n>;\n\nexport function useIotaClientMutation<T extends keyof IotaRpcMethods>(\n method: T,\n options: UseIotaClientMutationOptions<T> = {},\n): UseMutationResult<IotaRpcMethods[T]['result'], Error, IotaRpcMethods[T]['params'], unknown[]> {\n const iotaContext = useIotaClientContext();\n\n return useMutation({\n ...options,\n mutationFn: async (params) => {\n return await iotaContext.client[method](params as never);\n },\n });\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClient } from '@iota/iota-sdk/client';\nimport type {\n UndefinedInitialDataOptions,\n UseQueryOptions,\n UseQueryResult,\n} from '@tanstack/react-query';\nimport { queryOptions, useQuery, useSuspenseQuery } from '@tanstack/react-query';\nimport { useMemo } from 'react';\n\nimport type { PartialBy } from '../types/utilityTypes.js';\nimport { useIotaClientContext } from './useIotaClient.js';\n\nexport type IotaRpcMethodName = {\n [K in keyof IotaClient]: IotaClient[K] extends\n | ((input: any) => Promise<any>)\n | (() => Promise<any>)\n ? K\n : never;\n}[keyof IotaClient];\n\nexport type IotaRpcMethods = {\n [K in IotaRpcMethodName]: IotaClient[K] extends (input: infer P) => Promise<infer R>\n ? {\n name: K;\n result: R;\n params: P;\n }\n : IotaClient[K] extends () => Promise<infer R>\n ? {\n name: K;\n result: R;\n params: undefined | object;\n }\n : never;\n};\n\nexport type UseIotaClientQueryOptions<T extends keyof IotaRpcMethods, TData> = PartialBy<\n Omit<UseQueryOptions<IotaRpcMethods[T]['result'], Error, TData, unknown[]>, 'queryFn'>,\n 'queryKey'\n>;\n\nexport type GetIotaClientQueryOptions<T extends keyof IotaRpcMethods> = {\n client: IotaClient;\n network: string;\n method: T;\n options?: PartialBy<\n Omit<UndefinedInitialDataOptions<IotaRpcMethods[T]['result']>, 'queryFn'>,\n 'queryKey'\n >;\n} & (undefined extends IotaRpcMethods[T]['params']\n ? { params?: IotaRpcMethods[T]['params'] }\n : { params: IotaRpcMethods[T]['params'] });\n\nexport function getIotaClientQuery<T extends keyof IotaRpcMethods>({\n client,\n network,\n method,\n params,\n options,\n}: GetIotaClientQueryOptions<T>) {\n return queryOptions<IotaRpcMethods[T]['result']>({\n ...options,\n queryKey: [network, method, params],\n queryFn: async () => {\n return await client[method](params as never);\n },\n });\n}\n\nexport function useIotaClientQuery<\n T extends keyof IotaRpcMethods,\n TData = IotaRpcMethods[T]['result'],\n>(\n ...args: undefined extends IotaRpcMethods[T]['params']\n ? [\n method: T,\n params?: IotaRpcMethods[T]['params'],\n options?: UseIotaClientQueryOptions<T, TData>,\n ]\n : [\n method: T,\n params: IotaRpcMethods[T]['params'],\n options?: UseIotaClientQueryOptions<T, TData>,\n ]\n): UseQueryResult<TData, Error> {\n const [method, params, { queryKey = [], ...options } = {}] = args as [\n method: T,\n params?: IotaRpcMethods[T]['params'],\n options?: UseIotaClientQueryOptions<T, TData>,\n ];\n\n const iotaContext = useIotaClientContext();\n\n return useQuery({\n ...options,\n queryKey: [iotaContext.network, method, params, ...queryKey],\n queryFn: async () => {\n return (await iotaContext.client[method](\n params as never,\n )) as IotaRpcMethods[T]['result'];\n },\n });\n}\n\nexport function useIotaClientSuspenseQuery<\n T extends keyof IotaRpcMethods,\n TData = IotaRpcMethods[T]['result'],\n>(\n ...args: undefined extends IotaRpcMethods[T]['params']\n ? [\n method: T,\n params?: IotaRpcMethods[T]['params'],\n options?: UndefinedInitialDataOptions<TData>,\n ]\n : [\n method: T,\n params: IotaRpcMethods[T]['params'],\n options?: UndefinedInitialDataOptions<TData>,\n ]\n) {\n const [method, params, options = {}] = args as [\n method: T,\n params?: IotaRpcMethods[T]['params'],\n options?: UndefinedInitialDataOptions<TData>,\n ];\n\n const iotaContext = useIotaClientContext();\n\n const query = useMemo(() => {\n return getIotaClientQuery<T>({\n client: iotaContext.client,\n network: iotaContext.network,\n method,\n params,\n options,\n });\n }, [iotaContext.network, method, params, options]);\n\n return useSuspenseQuery(query);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { UseQueryResult } from '@tanstack/react-query';\nimport { useQueries } from '@tanstack/react-query';\n\nimport { useIotaClientContext } from './useIotaClient.js';\nimport type { IotaRpcMethods, UseIotaClientQueryOptions } from './useIotaClientQuery.js';\n\ntype IotaClientQueryOptions = IotaRpcMethods[keyof IotaRpcMethods] extends infer Method\n ? Method extends {\n name: infer M extends keyof IotaRpcMethods;\n params?: infer P;\n }\n ? undefined extends P\n ? {\n method: M;\n params?: P;\n options?: UseIotaClientQueryOptions<M, unknown>;\n }\n : {\n method: M;\n params: P;\n options?: UseIotaClientQueryOptions<M, unknown>;\n }\n : never\n : never;\n\nexport type UseIotaClientQueriesResults<Args extends readonly IotaClientQueryOptions[]> = {\n -readonly [K in keyof Args]: Args[K] extends {\n method: infer M extends keyof IotaRpcMethods;\n readonly options?:\n | {\n select?: (...args: any[]) => infer R;\n }\n | object;\n }\n ? UseQueryResult<unknown extends R ? IotaRpcMethods[M]['result'] : R>\n : never;\n};\n\nexport function useIotaClientQueries<\n const Queries extends readonly IotaClientQueryOptions[],\n Results = UseIotaClientQueriesResults<Queries>,\n>({\n queries,\n combine,\n}: {\n queries: Queries;\n combine?: (results: UseIotaClientQueriesResults<Queries>) => Results;\n}): Results {\n const iotaContext = useIotaClientContext();\n\n return useQueries({\n combine: combine as never,\n queries: queries.map((query) => {\n const { method, params, options: { queryKey = [], ...restOptions } = {} } = query;\n\n return {\n ...restOptions,\n queryKey: [iotaContext.network, method, params, ...queryKey],\n queryFn: async () => {\n return await iotaContext.client[method](params as never);\n },\n };\n }) as [],\n });\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Transaction } from '@iota/iota-sdk/transactions';\nimport { toBase64 } from '@iota/iota-sdk/utils';\nimport type {\n IotaSignAndExecuteTransactionInput,\n IotaSignAndExecuteTransactionOutput,\n} from '@iota/wallet-standard';\nimport { signTransaction } from '@iota/wallet-standard';\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { walletMutationKeys } from '../../constants/walletMutationKeys.js';\nimport {\n WalletFeatureNotSupportedError,\n WalletNoAccountSelectedError,\n WalletNotConnectedError,\n} from '../../errors/walletErrors.js';\nimport type { PartialBy } from '../../types/utilityTypes.js';\nimport { useIotaClient } from '../useIotaClient.js';\nimport { useCurrentAccount } from './useCurrentAccount.js';\nimport { useCurrentWallet } from './useCurrentWallet.js';\nimport { useReportTransactionEffects } from './useReportTransactionEffects.js';\nimport { useCurrentChain } from './useCurrentChain.js';\n\ntype UseSignAndExecuteTransactionArgs = PartialBy<\n Omit<IotaSignAndExecuteTransactionInput, 'transaction'>,\n 'account' | 'chain'\n> & {\n transaction: Transaction | string;\n waitForTransaction?: boolean;\n};\n\ntype UseSignAndExecuteTransactionResult = IotaSignAndExecuteTransactionOutput;\n\ntype UseSignAndExecuteTransactionError =\n | WalletFeatureNotSupportedError\n | WalletNoAccountSelectedError\n | WalletNotConnectedError\n | Error;\n\ntype ExecuteTransactionResult =\n | {\n digest: string;\n rawEffects?: number[];\n }\n | {\n effects?: {\n bcs?: string;\n };\n };\n\ntype UseSignAndExecuteTransactionMutationOptions<Result extends ExecuteTransactionResult> = Omit<\n UseMutationOptions<\n Result,\n UseSignAndExecuteTransactionError,\n UseSignAndExecuteTransactionArgs,\n unknown\n >,\n 'mutationFn'\n> & {\n execute?: ({ bytes, signature }: { bytes: string; signature: string }) => Promise<Result>;\n};\n\n/**\n * Mutation hook for prompting the user to sign and execute a transaction.\n */\nexport function useSignAndExecuteTransaction<\n Result extends ExecuteTransactionResult = UseSignAndExecuteTransactionResult,\n>({\n mutationKey,\n execute,\n ...mutationOptions\n}: UseSignAndExecuteTransactionMutationOptions<Result> = {}): UseMutationResult<\n Result,\n UseSignAndExecuteTransactionError,\n UseSignAndExecuteTransactionArgs\n> {\n const currentChain = useCurrentChain();\n const { currentWallet, supportedIntents } = useCurrentWallet();\n const currentAccount = useCurrentAccount();\n const client = useIotaClient();\n const { mutate: reportTransactionEffects } = useReportTransactionEffects();\n\n const executeTransaction: ({\n bytes,\n signature,\n }: {\n bytes: string;\n signature: string;\n }) => Promise<ExecuteTransactionResult> =\n execute ??\n (async ({ bytes, signature }) => {\n const { digest, rawEffects } = await client.executeTransactionBlock({\n transactionBlock: bytes,\n signature,\n options: {\n showRawEffects: true,\n },\n });\n\n return {\n digest,\n rawEffects,\n effects: toBase64(new Uint8Array(rawEffects!)),\n bytes,\n signature,\n };\n });\n\n return useMutation({\n mutationKey: walletMutationKeys.signAndExecuteTransaction(mutationKey),\n mutationFn: async ({ transaction, ...signTransactionArgs }): Promise<Result> => {\n if (!currentWallet) {\n throw new WalletNotConnectedError('No wallet is connected.');\n }\n\n const signerAccount = signTransactionArgs.account ?? currentAccount;\n if (!signerAccount) {\n throw new WalletNoAccountSelectedError(\n 'No wallet account is selected to sign the transaction with.',\n );\n }\n\n if (!currentWallet.features['iota:signTransaction']) {\n throw new WalletFeatureNotSupportedError(\n \"This wallet doesn't support the `signTransaction` feature.\",\n );\n }\n\n const chain = signTransactionArgs.chain ?? currentChain ?? signerAccount?.chains[0];\n\n const { signature, bytes } = await signTransaction(currentWallet, {\n ...signTransactionArgs,\n transaction: {\n async toJSON() {\n return typeof transaction === 'string'\n ? transaction\n : await transaction.toJSON({\n supportedIntents,\n client,\n });\n },\n },\n account: signerAccount,\n chain,\n });\n\n const result = await executeTransaction({ bytes, signature });\n\n let effects: string;\n\n if ('effects' in result && result.effects?.bcs) {\n effects = result.effects.bcs;\n } else if ('rawEffects' in result) {\n effects = toBase64(new Uint8Array(result.rawEffects!));\n } else {\n throw new Error('Could not parse effects from transaction result.');\n }\n\n reportTransactionEffects({ effects, account: signerAccount, chain });\n\n if (signTransactionArgs.waitForTransaction && 'digest' in result) {\n await client.waitForTransaction({\n digest: result.digest,\n });\n }\n\n return result as Result;\n },\n ...mutationOptions,\n });\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { toBase64 } from '@iota/iota-sdk/utils';\nimport type { IotaReportTransactionEffectsInput } from '@iota/wallet-standard';\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { walletMutationKeys } from '../../constants/walletMutationKeys.js';\nimport type { WalletFeatureNotSupportedError } from '../../errors/walletErrors.js';\nimport {\n WalletNoAccountSelectedError,\n WalletNotConnectedError,\n} from '../../errors/walletErrors.js';\nimport type { PartialBy } from '../../types/utilityTypes.js';\nimport { useCurrentAccount } from './useCurrentAccount.js';\nimport { useCurrentWallet } from './useCurrentWallet.js';\n\ntype UseReportTransactionEffectsArgs = Omit<\n PartialBy<IotaReportTransactionEffectsInput, 'account' | 'chain'>,\n 'effects'\n> & {\n effects: string | number[];\n};\n\ntype UseReportTransactionEffectsError =\n | WalletFeatureNotSupportedError\n | WalletNoAccountSelectedError\n | WalletNotConnectedError\n | Error;\n\ntype UseReportTransactionEffectsMutationOptions = Omit<\n UseMutationOptions<\n void,\n UseReportTransactionEffectsError,\n UseReportTransactionEffectsArgs,\n unknown\n >,\n 'mutationFn'\n>;\n\n/**\n * Mutation hook for prompting the user to sign a message.\n */\nexport function useReportTransactionEffects({\n mutationKey,\n ...mutationOptions\n}: UseReportTransactionEffectsMutationOptions = {}): UseMutationResult<\n void,\n UseReportTransactionEffectsError,\n UseReportTransactionEffectsArgs\n> {\n const { currentWallet } = useCurrentWallet();\n const currentAccount = useCurrentAccount();\n\n return useMutation({\n mutationKey: walletMutationKeys.reportTransactionEffects(mutationKey),\n mutationFn: async ({\n effects,\n chain = currentWallet?.chains[0],\n account = currentAccount,\n }) => {\n if (!currentWallet) {\n throw new WalletNotConnectedError('No wallet is connected.');\n }\n\n if (!account) {\n throw new WalletNoAccountSelectedError(\n 'No wallet account is selected to report transaction effects for',\n );\n }\n\n const reportTransactionEffectsFeature =\n currentWallet.features['iota:reportTransactionEffects'];\n\n if (reportTransactionEffectsFeature) {\n return await reportTransactionEffectsFeature.reportTransactionEffects({\n effects: Array.isArray(effects) ? toBase64(new Uint8Array(effects)) : effects,\n account,\n chain: chain ?? currentWallet?.chains[0],\n });\n }\n },\n ...mutationOptions,\n });\n}\n", "// Copyright (c) 2025 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ChainType } from '@iota/iota-sdk/client';\nimport { useWalletStore } from './useWalletStore.js';\n\n/**\n * Retrieves the chain the dapp is configured with, if any.\n */\nexport function useCurrentChain(): ChainType | undefined {\n return useWalletStore((state) => state.chain);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type {\n IotaSignPersonalMessageInput,\n IotaSignPersonalMessageOutput,\n} from '@iota/wallet-standard';\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport {\n WalletFeatureNotSupportedError,\n WalletNoAccountSelectedError,\n WalletNotConnectedError,\n} from '../..//errors/walletErrors.js';\nimport { walletMutationKeys } from '../../constants/walletMutationKeys.js';\nimport type { PartialBy } from '../../types/utilityTypes.js';\nimport { useCurrentAccount } from './useCurrentAccount.js';\nimport { useCurrentWallet } from './useCurrentWallet.js';\n\ntype UseSignPersonalMessageArgs = PartialBy<IotaSignPersonalMessageInput, 'account'>;\n\ntype UseSignPersonalMessageResult = IotaSignPersonalMessageOutput;\n\ntype UseSignPersonalMessageError =\n | WalletFeatureNotSupportedError\n | WalletNoAccountSelectedError\n | WalletNotConnectedError\n | Error;\n\ntype UseSignPersonalMessageMutationOptions = Omit<\n UseMutationOptions<\n UseSignPersonalMessageResult,\n UseSignPersonalMessageError,\n UseSignPersonalMessageArgs,\n unknown\n >,\n 'mutationFn'\n>;\n\n/**\n * Mutation hook for prompting the user to sign a message.\n */\nexport function useSignPersonalMessage({\n mutationKey,\n ...mutationOptions\n}: UseSignPersonalMessageMutationOptions = {}): UseMutationResult<\n UseSignPersonalMessageResult,\n UseSignPersonalMessageError,\n UseSignPersonalMessageArgs\n> {\n const { currentWallet } = useCurrentWallet();\n const currentAccount = useCurrentAccount();\n\n return useMutation({\n mutationKey: walletMutationKeys.signPersonalMessage(mutationKey),\n mutationFn: async (signPersonalMessageArgs) => {\n if (!currentWallet) {\n throw new WalletNotConnectedError('No wallet is connected.');\n }\n\n const signPersonalMessageFeature = currentWallet.features['iota:signPersonalMessage'];\n if (!signPersonalMessageFeature) {\n throw new WalletFeatureNotSupportedError(\n \"This wallet doesn't support the `signPersonalMessage` feature.\",\n );\n }\n\n const signerAccount = signPersonalMessageArgs.account ?? currentAccount;\n if (!signerAccount) {\n throw new WalletNoAccountSelectedError(\n 'No wallet account is selected to sign the personal message with.',\n );\n }\n\n return await signPersonalMessageFeature.signPersonalMessage({\n ...signPersonalMessageArgs,\n account: signerAccount,\n });\n },\n ...mutationOptions,\n });\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Transaction } from '@iota/iota-sdk/transactions';\nimport { signTransaction } from '@iota/wallet-standard';\nimport type { SignedTransaction, IotaSignTransactionInput } from '@iota/wallet-standard';\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { walletMutationKeys } from '../../constants/walletMutationKeys.js';\nimport {\n WalletFeatureNotSupportedError,\n WalletNoAccountSelectedError,\n WalletNotConnectedError,\n} from '../../errors/walletErrors.js';\nimport type { PartialBy } from '../../types/utilityTypes.js';\nimport { useIotaClient } from '../useIotaClient.js';\nimport { useCurrentAccount } from './useCurrentAccount.js';\nimport { useCurrentWallet } from './useCurrentWallet.js';\nimport { useReportTransactionEffects } from './useReportTransactionEffects.js';\n\ntype UseSignTransactionArgs = PartialBy<\n Omit<IotaSignTransactionInput, 'transaction'>,\n 'account' | 'chain'\n> & {\n transaction: Transaction | string;\n};\n\ninterface UseSignTransactionResult extends SignedTransaction {\n reportTransactionEffects: (effects: string) => void;\n}\n\ntype UseSignTransactionError =\n | WalletFeatureNotSupportedError\n | WalletNoAccountSelectedError\n | WalletNotConnectedError\n | Error;\n\ntype UseSignTransactionMutationOptions = Omit<\n UseMutationOptions<\n UseSignTransactionResult,\n UseSignTransactionError,\n UseSignTransactionArgs,\n unknown\n >,\n 'mutationFn'\n>;\n\n/**\n * Mutation hook for prompting the user to sign a transaction.\n */\nexport function useSignTransaction({\n mutationKey,\n ...mutationOptions\n}: UseSignTransactionMutationOptions = {}): UseMutationResult<\n UseSignTransactionResult,\n UseSignTransactionError,\n UseSignTransactionArgs\n> {\n const { currentWallet } = useCurrentWallet();\n const currentAccount = useCurrentAccount();\n const client = useIotaClient();\n\n const { mutate: reportTransactionEffects } = useReportTransactionEffects();\n\n return useMutation({\n mutationKey: walletMutationKeys.signTransaction(mutationKey),\n mutationFn: async ({ transaction, ...signTransactionArgs }) => {\n if (!currentWallet) {\n throw new WalletNotConnectedError('No wallet is connected.');\n }\n\n const signerAccount = signTransactionArgs.account ?? currentAccount;\n if (!signerAccount) {\n throw new WalletNoAccountSelectedError(\n 'No wallet account is selected to sign the transaction with.',\n );\n }\n\n if (!currentWallet.features['iota:signTransaction']) {\n throw new WalletFeatureNotSupportedError(\n \"This wallet doesn't support the `signTransaction` feature.\",\n );\n }\n\n const { bytes, signature } = await signTransaction(currentWallet, {\n ...signTransactionArgs,\n transaction: {\n toJSON: async () => {\n return typeof transaction === 'string'\n ? transaction\n : await transaction.toJSON({\n supportedIntents: [],\n client,\n });\n },\n },\n account: signerAccount,\n chain: signTransactionArgs.chain ?? signerAccount.chains[0],\n });\n\n return {\n bytes,\n signature,\n reportTransactionEffects: (effects) => {\n reportTransactionEffects({\n effects,\n account: signerAccount,\n chain: signTransactionArgs.chain ?? signerAccount.chains[0],\n });\n },\n };\n },\n ...mutationOptions,\n });\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ThemeVars } from './themeContract.js';\n\nexport const darkTheme: ThemeVars = {\n blurs: {\n modalOverlay: 'blur(12px)',\n },\n backgroundColors: {\n primaryButton: '#253041',\n primaryButtonHover: '#313D50',\n outlineButtonHover: '#313D50',\n modalOverlay: 'rgba(0, 47, 109, 0.72)',\n modalPrimary: '#0f141c',\n modalSecondary: '#171d26',\n iconButton: 'transparent',\n dropdownMenu: '#0f141c',\n dropdownMenuSeparator: '#bed8ff14',\n walletItemSelected: 'rgba(190, 216, 255, 0.12)',\n walletItemHover: 'rgba(190, 216, 255, 0.06)',\n scrollThumb: '#3c4656',\n },\n borderColors: {\n outlineButton: '#8892A1',\n },\n colors: {\n primaryButton: '#E3EAF6',\n outlineButtonHover: '#171D26',\n iconButton: '#E3EAF6',\n body: '#E3EAF6',\n bodyMuted: '#8892A1',\n bodyDanger: '#FFB0BE',\n },\n radii: {\n small: '6px',\n medium: '8px',\n large: '12px',\n xlarge: '16px',\n full: '120px',\n },\n fontWeights: {\n normal: '400',\n medium: '500',\n bold: '600',\n },\n fontSizes: {\n small: '14px',\n medium: '16px',\n large: '18px',\n xlarge: '20px',\n },\n typography: {\n fontFamily:\n 'ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"',\n fontStyle: 'normal',\n lineHeight: '24px',\n letterSpacing: '0.1px',\n },\n spacing: {\n xxsmall: '4px',\n xsmall: '8px',\n small: '12px',\n medium: '16px',\n large: '24px',\n xlarge: '32px',\n },\n};\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["[data-dapp-kit]:where(*), [data-dapp-kit] :where(*) {\n box-sizing: border-box;\n color: var(--dapp-kit-colors-body);\n font-family: var(--dapp-kit-typography-fontFamily);\n font-size: var(--dapp-kit-fontWeights-normal);\n font-style: var(--dapp-kit-typography-fontStyle);\n font-weight: var(--dapp-kit-fontWeights-normal);\n line-height: var(--dapp-kit-typography-lineHeight);\n letter-spacing: var(--dapp-kit-typography-letterSpacing);\n}\n[data-dapp-kit]:where(button), [data-dapp-kit] :where(button) {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background-color: transparent;\n font-size: inherit;\n font-family: inherit;\n line-height: inherit;\n letter-spacing: inherit;\n color: inherit;\n border: 0;\n padding: 0;\n margin: 0;\n}\n[data-dapp-kit]:where(a), [data-dapp-kit] :where(a) {\n text-decoration: none;\n color: inherit;\n outline: none;\n}\n[data-dapp-kit]:where(ol, ul), [data-dapp-kit] :where(ol, ul) {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n[data-dapp-kit]:where(h1, h2, h3, h4, h5, h6), [data-dapp-kit] :where(h1, h2, h3, h4, h5, h6) {\n font-size: inherit;\n font-weight: inherit;\n margin: 0;\n}", "import 'src/components/styling/StyleMarker.css.ts.vanilla.css?source=OndoZXJlKCopIHsKICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogIGNvbG9yOiB2YXIoLS1kYXBwLWtpdC1jb2xvcnMtYm9keSk7CiAgZm9udC1mYW1pbHk6IHZhcigtLWRhcHAta2l0LXR5cG9ncmFwaHktZm9udEZhbWlseSk7CiAgZm9udC1zaXplOiB2YXIoLS1kYXBwLWtpdC1mb250V2VpZ2h0cy1ub3JtYWwpOwogIGZvbnQtc3R5bGU6IHZhcigtLWRhcHAta2l0LXR5cG9ncmFwaHktZm9udFN0eWxlKTsKICBmb250LXdlaWdodDogdmFyKC0tZGFwcC1raXQtZm9udFdlaWdodHMtbm9ybWFsKTsKICBsaW5lLWhlaWdodDogdmFyKC0tZGFwcC1raXQtdHlwb2dyYXBoeS1saW5lSGVpZ2h0KTsKICBsZXR0ZXItc3BhY2luZzogdmFyKC0tZGFwcC1raXQtdHlwb2dyYXBoeS1sZXR0ZXJTcGFjaW5nKTsKfQo6d2hlcmUoYnV0dG9uKSB7CiAgYXBwZWFyYW5jZTogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBmb250LXNpemU6IGluaGVyaXQ7CiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7CiAgbGV0dGVyLXNwYWNpbmc6IGluaGVyaXQ7CiAgY29sb3I6IGluaGVyaXQ7CiAgYm9yZGVyOiAwOwogIHBhZGRpbmc6IDA7CiAgbWFyZ2luOiAwOwp9Cjp3aGVyZShhKSB7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGNvbG9yOiBpbmhlcml0OwogIG91dGxpbmU6IG5vbmU7Cn0KOndoZXJlKG9sLCB1bCkgewogIGxpc3Qtc3R5bGU6IG5vbmU7CiAgbWFyZ2luOiAwOwogIHBhZGRpbmc6IDA7Cn0KOndoZXJlKGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYpIHsKICBmb250LXNpemU6IGluaGVyaXQ7CiAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7CiAgbWFyZ2luOiAwOwp9';", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nexport * from './components/connect-modal/ConnectModal.js';\nexport * from './components/ConnectButton.js';\nexport * from './components/IotaClientProvider.js';\nexport * from './components/WalletProvider.js';\nexport * from './hooks/networkConfig.js';\nexport * from './hooks/useIotaClient.js';\nexport * from './hooks/useIotaClientInfiniteQuery.js';\nexport * from './hooks/useIotaClientMutation.js';\nexport * from './hooks/useIotaClientQuery.js';\nexport * from './hooks/useIotaClientQueries.js';\nexport * from './hooks/wallet/useAccounts.js';\nexport * from './hooks/wallet/useAutoConnectWallet.js';\nexport * from './hooks/wallet/useConnectWallet.js';\nexport * from './hooks/wallet/useCurrentAccount.js';\nexport * from './hooks/wallet/useCurrentWallet.js';\nexport * from './hooks/wallet/useDisconnectWallet.js';\nexport * from './hooks/wallet/useSignAndExecuteTransaction.js';\nexport * from './hooks/wallet/useSignPersonalMessage.js';\nexport * from './hooks/wallet/useSignTransaction.js';\nexport * from './hooks/wallet/useReportTransactionEffects.js';\nexport * from './hooks/wallet/useSwitchAccount.js';\nexport * from './hooks/wallet/useWallets.js';\nexport * from './themes/lightTheme.js';\nexport * from './themes/darkTheme.js';\nexport * from './types.js';\n\nexport type { Theme, ThemeVars, DynamicTheme } from './themes/themeContract.js';\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletWithRequiredFeatures } from '@iota/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 /** The controlled open state of the dialog. */\n open: boolean;\n\n /** Event handler called when the open state of the dialog changes. */\n onOpenChange: (open: boolean) => void;\n\n defaultOpen?: never;\n};\n\ntype UncontrolledModalProps = {\n open?: never;\n\n onOpenChange?: never;\n\n /** The open state of the dialog when it is initially rendered. Use when you do not need to control its open state. */\n defaultOpen?: boolean;\n};\n\ntype ConnectModalProps = {\n /** The trigger button that opens the dialog. */\n trigger: NonNullable<ReactNode>;\n\n onConnected?: (params: { wallet: WalletWithRequiredFeatures }) => void;\n} & (ControlledModalProps | UncontrolledModalProps);\n\nexport function ConnectModal({\n trigger,\n open,\n defaultOpen,\n onOpenChange,\n onConnected,\n}: ConnectModalProps) {\n const [isModalOpen, setModalOpen] = useState(open ?? defaultOpen);\n const [currentView, setCurrentView] = useState<ConnectModalView>();\n const [selectedWallet, setSelectedWallet] = useState<WalletWithRequiredFeatures>();\n const { mutate, isError } = useConnectWallet({\n onConnected,\n });\n\n const resetSelection = () => {\n setSelectedWallet(undefined);\n setCurrentView(undefined);\n };\n\n const handleOpenChange = (open: boolean) => {\n if (!open) {\n resetSelection();\n }\n setModalOpen(open);\n onOpenChange?.(open);\n };\n\n const connectWallet = (wallet: WalletWithRequiredFeatures) => {\n setCurrentView('connection-status');\n mutate(\n { wallet, silent: false },\n {\n onSuccess: () => handleOpenChange(false),\n },\n );\n };\n\n let modalContent: ReactNode | undefined;\n switch (currentView) {\n case 'what-is-a-wallet':\n modalContent = <WhatIsAWallet />;\n break;\n case 'getting-started':\n modalContent = <GettingStarted />;\n break;\n case 'connection-status':\n modalContent = (\n <ConnectionStatus\n selectedWallet={selectedWallet!}\n hadConnectionError={isError}\n onRetryConnection={connectWallet}\n />\n );\n break;\n default:\n modalContent = <WhatIsAWallet />;\n }\n\n return (\n <Dialog.Root open={open ?? isModalOpen} onOpenChange={handleOpenChange}>\n <Dialog.Trigger asChild>{trigger}</Dialog.Trigger>\n <Dialog.Portal>\n <StyleMarker>\n <Dialog.Overlay className={styles.overlay}>\n <Dialog.Content className={styles.content} aria-describedby={undefined}>\n <div\n className={clsx(styles.walletListContainer, {\n [styles.walletListContainerWithViewSelected]: !!currentView,\n })}\n >\n <div className={styles.walletListContent}>\n <Dialog.Title className={styles.title} asChild>\n <Heading as=\"h2\">Connect a Wallet</Heading>\n </Dialog.Title>\n <WalletList\n selectedWalletName={getWalletUniqueIdentifier(\n selectedWallet,\n )}\n onPlaceholderClick={() => setCurrentView('getting-started')}\n onSelect={(wallet) => {\n if (\n getWalletUniqueIdentifier(selectedWallet) !==\n getWalletUniqueIdentifier(wallet)\n ) {\n setSelectedWallet(wallet);\n connectWallet(wallet);\n }\n }}\n />\n </div>\n <button\n className={styles.whatIsAWalletButton}\n onClick={() => setCurrentView('what-is-a-wallet')}\n type=\"button\"\n >\n What is a Wallet?\n </button>\n </div>\n <div\n className={clsx(styles.viewContainer, {\n [styles.selectedViewContainer]: !!currentView,\n })}\n >\n <div className={styles.backButtonContainer}>\n <IconButton\n type=\"button\"\n aria-label=\"Back\"\n onClick={() => resetSelection()}\n >\n <BackIcon />\n </IconButton>\n </div>\n {modalContent}\n </div>\n <Dialog.Close className={styles.closeButtonContainer} asChild>\n <IconButton type=\"button\" aria-label=\"Close\">\n <CloseIcon />\n </IconButton>\n </Dialog.Close>\n </Dialog.Content>\n </Dialog.Overlay>\n </StyleMarker>\n </Dialog.Portal>\n </Dialog.Root>\n );\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { isSupportedChain } from '@iota/wallet-standard';\nimport type {\n StandardConnectInput,\n StandardConnectOutput,\n WalletAccount,\n WalletWithRequiredFeatures,\n} from '@iota/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 /** The wallet to connect to. */\n wallet: WalletWithRequiredFeatures;\n\n /** An optional account address to connect to. Defaults to the first authorized account. */\n accountAddress?: string;\n} & StandardConnectInput;\n\ntype ConnectWalletResult = StandardConnectOutput;\n\ntype UseConnectWalletMutationOptions = Omit<\n UseMutationOptions<ConnectWalletResult, Error, ConnectWalletArgs, unknown>,\n 'mutationFn'\n> & {\n onConnected?: (params: { wallet: WalletWithRequiredFeatures }) => void;\n};\n\n/**\n * Mutation hook for establishing a connection to a specific wallet.\n */\nexport function useConnectWallet({\n onConnected,\n mutationKey,\n ...mutationOptions\n}: UseConnectWalletMutationOptions = {}): UseMutationResult<\n ConnectWalletResult,\n Error,\n ConnectWalletArgs,\n unknown\n> {\n const setWalletConnected = useWalletStore((state) => state.setWalletConnected);\n const setConnectionStatus = useWalletStore((state) => state.setConnectionStatus);\n\n return useMutation({\n mutationKey: walletMutationKeys.connectWallet(mutationKey),\n mutationFn: async ({ wallet, accountAddress, ...connectArgs }) => {\n try {\n setConnectionStatus('connecting');\n\n const connectResult =\n await wallet.features['standard:connect'].connect(connectArgs);\n const connectedIotaAccounts = connectResult.accounts.filter((account) =>\n account.chains.some(isSupportedChain),\n );\n const selectedAccount = getSelectedAccount(connectedIotaAccounts, accountAddress);\n\n setWalletConnected(\n wallet,\n connectedIotaAccounts,\n selectedAccount,\n connectResult.supportedIntents,\n );\n\n onConnected?.({ wallet });\n\n return { accounts: connectedIotaAccounts };\n } catch (error) {\n setConnectionStatus('disconnected');\n throw error;\n }\n },\n ...mutationOptions,\n });\n}\n\nfunction getSelectedAccount(connectedAccounts: readonly WalletAccount[], accountAddress?: string) {\n if (connectedAccounts.length === 0) {\n return null;\n }\n\n if (accountAddress) {\n const selectedAccount = connectedAccounts.find(\n (account) => account.address === accountAddress,\n );\n return selectedAccount ?? connectedAccounts[0];\n }\n\n return connectedAccounts[0];\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { MutationKey } from '@tanstack/react-query';\n\nexport const walletMutationKeys = {\n all: { baseScope: 'wallet' },\n connectWallet: formMutationKeyFn('connect-wallet'),\n autoconnectWallet: formMutationKeyFn('autoconnect-wallet'),\n disconnectWallet: formMutationKeyFn('disconnect-wallet'),\n signPersonalMessage: formMutationKeyFn('sign-personal-message'),\n signTransaction: formMutationKeyFn('sign-transaction'),\n signAndExecuteTransaction: formMutationKeyFn('sign-and-execute-transaction'),\n switchAccount: formMutationKeyFn('switch-account'),\n reportTransactionEffects: formMutationKeyFn('report-transaction-effects'),\n};\n\nfunction formMutationKeyFn(baseEntity: string) {\n return function mutationKeyFn(additionalKeys: MutationKey = []) {\n return [{ ...walletMutationKeys.all, baseEntity }, ...additionalKeys];\n };\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\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 const store = useContext(WalletContext);\n if (!store) {\n throw new Error(\n 'Could not find WalletContext. Ensure that you have set up the WalletProvider.',\n );\n }\n return useStore(store, selector);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\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// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type {\n MinimallyRequiredFeatures,\n Wallet,\n WalletWithFeatures,\n WalletWithRequiredFeatures,\n} from '@iota/wallet-standard';\nimport { getWallets, isWalletWithRequiredFeatureSet } from '@iota/wallet-standard';\n\nexport function getRegisteredWallets<AdditionalFeatures extends Wallet['features']>(\n preferredWallets: string[],\n walletFilter?: (wallet: WalletWithRequiredFeatures) => boolean,\n) {\n const walletsApi = getWallets();\n const wallets = walletsApi.get();\n\n const iotaWallets = wallets.filter(\n (wallet): wallet is WalletWithFeatures<MinimallyRequiredFeatures & AdditionalFeatures> =>\n isWalletWithRequiredFeatureSet(wallet) && (!walletFilter || walletFilter(wallet)),\n );\n\n return [\n // Preferred wallets, in order:\n ...(preferredWallets\n .map((name) => iotaWallets.find((wallet) => wallet.name === name))\n .filter(Boolean) as WalletWithFeatures<\n MinimallyRequiredFeatures & AdditionalFeatures\n >[]),\n\n // Wallets in default order:\n ...iotaWallets.filter((wallet) => !preferredWallets.includes(wallet.name)),\n ];\n}\n\nexport function getWalletUniqueIdentifier(wallet?: Wallet) {\n return wallet?.id ?? wallet?.name;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\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 return (\n <svg width={24} height={24} fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"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 fill=\"currentColor\"\n />\n </svg>\n );\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ComponentProps } from 'react';\n\nexport function CloseIcon(props: ComponentProps<'svg'>) {\n return (\n <svg width={10} height={10} fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"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 fill=\"currentColor\"\n />\n </svg>\n );\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\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 children: ReactNode;\n};\n\nexport const StyleMarker = forwardRef<\n ElementRef<typeof Slot>,\n ComponentPropsWithoutRef<typeof Slot>\n>(({ children, ...props }, forwardedRef) => (\n <Slot ref={forwardedRef} {...props} {...styleDataAttribute}>\n {children}\n </Slot>\n));\nStyleMarker.displayName = 'StyleMarker';\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\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// Modifications Copyright (c) 2024 IOTA Stiftung\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 asChild?: boolean;\n as?: never;\n};\n\ntype HeadingAsProps = {\n as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n asChild?: never;\n};\n\ntype HeadingProps = (HeadingAsChildProps | HeadingAsProps) &\n React.HTMLAttributes<HTMLHeadingElement> &\n HeadingVariants;\n\nconst Heading = forwardRef<HTMLHeadingElement, HeadingProps>(\n (\n {\n children,\n className,\n asChild = false,\n as: Tag = 'h1',\n size,\n weight,\n truncate,\n ...headingProps\n },\n forwardedRef,\n ) => {\n return (\n <Slot\n {...headingProps}\n ref={forwardedRef}\n className={clsx(headingVariants({ size, weight, truncate }), className)}\n >\n {asChild ? children : <Tag>{children}</Tag>}\n </Slot>\n );\n },\n);\nHeading.displayName = 'Heading';\n\nexport { Heading };\n", "import 'src/components/ui/Heading.css.ts.vanilla.css?source=LkhlYWRpbmdfaGVhZGluZ1ZhcmlhbnRzX3NpemVfc21fXzEyYjVsOGkxIHsKICBmb250LXNpemU6IHZhcigtLWRhcHAta2l0LWZvbnRTaXplcy1zbWFsbCk7Cn0KLkhlYWRpbmdfaGVhZGluZ1ZhcmlhbnRzX3NpemVfbWRfXzEyYjVsOGkyIHsKICBmb250LXNpemU6IHZhcigtLWRhcHAta2l0LWZvbnRTaXplcy1tZWRpdW0pOwp9Ci5IZWFkaW5nX2hlYWRpbmdWYXJpYW50c19zaXplX2xnX18xMmI1bDhpMyB7CiAgZm9udC1zaXplOiB2YXIoLS1kYXBwLWtpdC1mb250U2l6ZXMtbGFyZ2UpOwp9Ci5IZWFkaW5nX2hlYWRpbmdWYXJpYW50c19zaXplX3hsX18xMmI1bDhpNCB7CiAgZm9udC1zaXplOiB2YXIoLS1kYXBwLWtpdC1mb250U2l6ZXMteGxhcmdlKTsKfQouSGVhZGluZ19oZWFkaW5nVmFyaWFudHNfd2VpZ2h0X25vcm1hbF9fMTJiNWw4aTUgewogIGZvbnQtd2VpZ2h0OiB2YXIoLS1kYXBwLWtpdC1mb250V2VpZ2h0cy1ub3JtYWwpOwp9Ci5IZWFkaW5nX2hlYWRpbmdWYXJpYW50c193ZWlnaHRfYm9sZF9fMTJiNWw4aTYgewogIGZvbnQtd2VpZ2h0OiB2YXIoLS1kYXBwLWtpdC1mb250V2VpZ2h0cy1ib2xkKTsKfQouSGVhZGluZ19oZWFkaW5nVmFyaWFudHNfdHJ1bmNhdGVfdHJ1ZV9fMTJiNWw4aTcgewogIG92ZXJmbG93OiBoaWRkZW47CiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQ==';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var headingVariants = _7a468({defaultClassName:'Heading__12b5l8i0',variantClassNames:{size:{sm:'Heading_headingVariants_size_sm__12b5l8i1',md:'Heading_headingVariants_size_md__12b5l8i2',lg:'Heading_headingVariants_size_lg__12b5l8i3',xl:'Heading_headingVariants_size_xl__12b5l8i4'},weight:{normal:'Heading_headingVariants_weight_normal__12b5l8i5',bold:'Heading_headingVariants_weight_bold__12b5l8i6'},truncate:{true:'Heading_headingVariants_truncate_true__12b5l8i7'}},defaultVariants:{size:'lg',weight:'bold'},compoundVariants:[]});", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\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 asChild?: boolean;\n 'aria-label': string;\n} & ButtonHTMLAttributes<HTMLButtonElement>;\n\nconst IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(\n ({ className, asChild = false, ...props }, forwardedRef) => {\n const Comp = asChild ? Slot : 'button';\n return <Comp {...props} className={clsx(styles.container, className)} ref={forwardedRef} />;\n },\n);\nIconButton.displayName = 'Button';\n\nexport { IconButton };\n", "import 'src/components/ui/IconButton.css.ts.vanilla.css?source=Lkljb25CdXR0b25fY29udGFpbmVyX19hcDFxbGwwIHsKICBib3JkZXItcmFkaXVzOiA5OTk5cHg7CiAgcGFkZGluZzogOHB4OwogIGNvbG9yOiB2YXIoLS1kYXBwLWtpdC1jb2xvcnMtaWNvbkJ1dHRvbik7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZGFwcC1raXQtYmFja2dyb3VuZENvbG9ycy1pY29uQnV0dG9uKTsKfQ==';\nexport var container = 'IconButton_container__ap1qll0';", "import 'src/components/connect-modal/ConnectModal.css.ts.vanilla.css?source=#H4sIAAAAAAAAA61UUU/bMBB+76/wCxJIM0oZhRJetvVp0qZNQhqPyI0vzYFjR/alLZv63yfHaUqJaSpBH9L4HH939933+XxmtIaMfhop1INZglXi+eFhfF2qx1Ik7N+IsbnInhbW1FryzChjU7YU9pRzKaqKPyHx3Qczv+946dF+BbCz2xZCWlPxHBVBBEHVsWOVcUhodMpyXIP0IdQOKGWJf//LUUtYp+xm+7sdbUbney0RkoKuoXHTUCWkRL3gCnJK2bRa949lRhNo6g5evIeJ3xZLYVsmjJVguRUSa9c778PI10rYBTSfx9NkAXxu5Js8zQ2RKVM2vvLtMRZ63a4sLooXS4muUuI5ZbmCJuD/uUQLWYDNjKpL7Xcea0eYP/OWoJS5SmTA50ArgOYLL6JcmVXKCpQyxErUvICQdJIsiyYm1l1sOtnFViipSNl1ksQGsyoEfXdf74VSQN9qIqO7IX1+z5DuIDNabsfUSmRL0esqlgirmdEkUIPt8l82+TsytdGwh3WRVDt2F9ZTNO5jO1CQEcg/0RyT/RxhYK8hfIeBmz7AVbBApxgxd0bV1FRKptpVGRRzEZ1CpoyDtzJcD2WIqrA36GbCP9DR7JUXpzEKDml2n2/GFsK3eRmK6E3n3SY/3Mk+VzfxXoZddmy3RxRzj1R4sd21wuuKEzE9b0ZfSpAomMssgGZCS3bq/b317dW0Wp81J4+5UvudWLO6bTZawHGSnIRAI57JdhX02S3JCu1yY8s0vCpBcMonyckn5p+Nqze9ooavk4ih+zCH7oPIePsAw449qo4h03zQ7TiUOKbxA4NuNubCofO2bG24J+TkRcQVFvVTGzuqkgGBRwe0+Q9KhsMxGgkAAA==';\nexport var backButtonContainer = 'ConnectModal_backButtonContainer__17mljma6';\nexport var closeButtonContainer = 'ConnectModal_closeButtonContainer__17mljma7';\nexport var content = 'ConnectModal_content__17mljma2';\nexport var overlay = 'ConnectModal_overlay__17mljma0';\nexport var selectedViewContainer = 'ConnectModal_selectedViewContainer__17mljma5';\nexport var title = 'ConnectModal_title__17mljma1';\nexport var viewContainer = 'ConnectModal_viewContainer__17mljma4';\nexport var walletListContainer = 'ConnectModal_walletListContainer__17mljma9';\nexport var walletListContainerWithViewSelected = 'ConnectModal_walletListContainerWithViewSelected__17mljmaa';\nexport var walletListContent = 'ConnectModal_walletListContent__17mljma8';\nexport var whatIsAWalletButton = 'ConnectModal_whatIsAWalletButton__17mljma3';", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\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 asChild?: boolean;\n} & ButtonHTMLAttributes<HTMLButtonElement> &\n ButtonVariants;\n\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, forwardedRef) => {\n const Comp = asChild ? Slot : 'button';\n return (\n <Comp\n {...props}\n className={clsx(buttonVariants({ variant, size }), className)}\n ref={forwardedRef}\n />\n );\n },\n);\nButton.displayName = 'Button';\n\nexport { Button };\n", "import 'src/components/ui/Button.css.ts.vanilla.css?source=#H4sIAAAAAAAAA7WSwVLCMBCG732KPcohDCA6TrjpxSfQYydt0rKQJplkC60O7+6ktCMKog56Smb/ZP9v/2R8XxNZk2bd8iQ8CkMhTXPKmpmZwGsCIDE4LVoOaDQaxQqtmkUCIDSWhiGpKnDIlSHlY3lVB8KiZbk1pAwdSoU1xLYKyyVx2Ah/xZgUzrE1EovacycFVimJdTVaJLtkfB6QSwwi00p2pNaJHKnlMBnfnLm82W9S57ESvh2aTbsemcjXpbe1kSy32voj0PcDD1EPrG+z9xrFOU9fzE8f/zUmX9qN8n8B+xgb/QTB1hSffkCY7c2tl8qzLUpacpi67lP0xUCtVhyC1SgPyl9AdmIP2Fv9W5qfR7kozQ+w36YZ8EWllRysrw9T9EJiHY4cYxlZUWvdReGElGhKDneugeltjPy8my4Ht/kFbtEJZnPXwCLZvQFzXfF3MwQAAA==';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var buttonVariants = _7a468({defaultClassName:'Button_buttonVariants__ctbx2n0',variantClassNames:{variant:{primary:'Button_buttonVariants_variant_primary__ctbx2n1',outline:'Button_buttonVariants_variant_outline__ctbx2n2'},size:{md:'Button_buttonVariants_size_md__ctbx2n3',lg:'Button_buttonVariants_size_lg__ctbx2n4'}},defaultVariants:{variant:'primary',size:'md'},compoundVariants:[]});", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\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 asChild?: boolean;\n as?: never;\n};\n\ntype TextDivProps = { as: 'div'; asChild?: never };\n\ntype TextProps = (TextAsChildProps | TextDivProps) &\n React.HTMLAttributes<HTMLDivElement> &\n TextVariants;\n\nconst Text = forwardRef<HTMLDivElement, TextProps>(\n (\n {\n children,\n className,\n asChild = false,\n as: Tag = 'div',\n size,\n weight,\n color,\n mono,\n ...textProps\n },\n forwardedRef,\n ) => {\n return (\n <Slot\n {...textProps}\n ref={forwardedRef}\n className={clsx(textVariants({ size, weight, color, mono }), className)}\n >\n {asChild ? children : <Tag>{children}</Tag>}\n </Slot>\n );\n },\n);\nText.displayName = 'Text';\n\nexport { Text };\n", "import 'src/components/ui/Text.css.ts.vanilla.css?source=LlRleHRfdGV4dFZhcmlhbnRzX3NpemVfc21fX2FwcmhiZDEgewogIGZvbnQtc2l6ZTogdmFyKC0tZGFwcC1raXQtZm9udFNpemVzLXNtYWxsKTsKfQouVGV4dF90ZXh0VmFyaWFudHNfd2VpZ2h0X25vcm1hbF9fYXByaGJkMiB7CiAgZm9udC13ZWlnaHQ6IHZhcigtLWRhcHAta2l0LWZvbnRXZWlnaHRzLW5vcm1hbCk7Cn0KLlRleHRfdGV4dFZhcmlhbnRzX3dlaWdodF9tZWRpdW1fX2FwcmhiZDMgewogIGZvbnQtd2VpZ2h0OiB2YXIoLS1kYXBwLWtpdC1mb250V2VpZ2h0cy1tZWRpdW0pOwp9Ci5UZXh0X3RleHRWYXJpYW50c193ZWlnaHRfYm9sZF9fYXByaGJkNCB7CiAgZm9udC13ZWlnaHQ6IHZhcigtLWRhcHAta2l0LWZvbnRXZWlnaHRzLWJvbGQpOwp9Ci5UZXh0X3RleHRWYXJpYW50c19jb2xvcl9tdXRlZF9fYXByaGJkNSB7CiAgY29sb3I6IHZhcigtLWRhcHAta2l0LWNvbG9ycy1ib2R5TXV0ZWQpOwp9Ci5UZXh0X3RleHRWYXJpYW50c19jb2xvcl9kYW5nZXJfX2FwcmhiZDYgewogIGNvbG9yOiB2YXIoLS1kYXBwLWtpdC1jb2xvcnMtYm9keURhbmdlcik7Cn0KLlRleHRfdGV4dFZhcmlhbnRzX21vbm9fdHJ1ZV9fYXByaGJkNyB7CiAgZm9udC1mYW1pbHk6IHVpLW1vbm9zcGFjZSwgU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCAiTGliZXJhdGlvbiBNb25vIiwgIkNvdXJpZXIgTmV3IiwgbW9ub3NwYWNlOwp9';\nimport { createRuntimeFn as _7a468 } from '@vanilla-extract/recipes/createRuntimeFn';\nexport var textVariants = _7a468({defaultClassName:'Text__aprhbd0',variantClassNames:{size:{sm:'Text_textVariants_size_sm__aprhbd1'},weight:{normal:'Text_textVariants_weight_normal__aprhbd2',medium:'Text_textVariants_weight_medium__aprhbd3',bold:'Text_textVariants_weight_bold__aprhbd4'},color:{muted:'Text_textVariants_color_muted__aprhbd5',danger:'Text_textVariants_color_danger__aprhbd6'},mono:{true:'Text_textVariants_mono_true__aprhbd7'}},defaultVariants:{size:'sm',weight:'normal'},compoundVariants:[]});", "import 'src/components/connect-modal/views/ConnectionStatus.css.ts.vanilla.css?source=LkNvbm5lY3Rpb25TdGF0dXNfY29udGFpbmVyX19jNXExbGwwIHsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICB3aWR0aDogMTAwJTsKICBvdmVyZmxvdy15OiBhdXRvOwp9Ci5Db25uZWN0aW9uU3RhdHVzX3dhbGxldEljb25fX2M1cTFsbDEgewogIG9iamVjdC1maXQ6IGNvdmVyOwogIHdpZHRoOiA3MnB4OwogIGhlaWdodDogNzJweDsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1kYXBwLWtpdC1yYWRpaS1sYXJnZSk7Cn0KLkNvbm5lY3Rpb25TdGF0dXNfdGl0bGVfX2M1cTFsbDIgewogIG1hcmdpbi10b3A6IDEycHg7Cn0KLkNvbm5lY3Rpb25TdGF0dXNfY29ubmVjdGlvblN0YXR1c19fYzVxMWxsMyB7CiAgbWFyZ2luLXRvcDogNHB4Owp9Ci5Db25uZWN0aW9uU3RhdHVzX3JldHJ5QnV0dG9uQ29udGFpbmVyX19jNXExbGw0IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgYm90dG9tOiAyMHB4OwogIHJpZ2h0OiAyMHB4Owp9';\nexport var connectionStatus = 'ConnectionStatus_connectionStatus__c5q1ll3';\nexport var container = 'ConnectionStatus_container__c5q1ll0';\nexport var retryButtonContainer = 'ConnectionStatus_retryButtonContainer__c5q1ll4';\nexport var title = 'ConnectionStatus_title__c5q1ll2';\nexport var walletIcon = 'ConnectionStatus_walletIcon__c5q1ll1';", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletWithRequiredFeatures } from '@iota/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 selectedWallet: WalletWithRequiredFeatures;\n hadConnectionError: boolean;\n onRetryConnection: (selectedWallet: WalletWithRequiredFeatures) => void;\n};\n\nexport function ConnectionStatus({\n selectedWallet,\n hadConnectionError,\n onRetryConnection,\n}: ConnectionStatusProps) {\n return (\n <div className={styles.container}>\n <img\n className={styles.walletIcon}\n src={selectedWallet.icon}\n alt={`${selectedWallet.name} logo`}\n />\n <div className={styles.title}>\n <Heading as=\"h2\" size=\"xl\">\n Opening {selectedWallet.name}\n </Heading>\n </div>\n <div className={styles.connectionStatus}>\n {hadConnectionError ? (\n <Text color=\"danger\">Connection failed</Text>\n ) : (\n <Text color=\"muted\">Confirm connection in the wallet...</Text>\n )}\n </div>\n {hadConnectionError ? (\n <div className={styles.retryButtonContainer}>\n <Button\n type=\"button\"\n variant=\"primary\"\n onClick={() => onRetryConnection(selectedWallet)}\n >\n Retry Connection\n </Button>\n </div>\n ) : null}\n </div>\n );\n}\n", "import 'src/components/connect-modal/InfoSection.css.ts.vanilla.css?source=LkluZm9TZWN0aW9uX2NvbnRhaW5lcl9fMWQxbnJtdDAgewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBnYXA6IDRweDsKfQ==';\nexport var container = 'InfoSection_container__1d1nrmt0';", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\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 title: string;\n children: string;\n};\n\nexport function InfoSection({ title, children }: InfoSectionProps) {\n return (\n <section className={styles.container}>\n <Heading as=\"h3\" size=\"sm\" weight=\"normal\">\n {title}\n </Heading>\n <Text weight=\"medium\" color=\"muted\">\n {children}\n </Text>\n </section>\n );\n}\n", "import 'src/components/connect-modal/views/GettingStarted.css.ts.vanilla.css?source=LkdldHRpbmdTdGFydGVkX2NvbnRhaW5lcl9fcXUzNnQ5MCB7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgb3ZlcmZsb3cteTogYXV0bzsKfQouR2V0dGluZ1N0YXJ0ZWRfY29udGVudF9fcXUzNnQ5MSB7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIGZsZXgtZ3JvdzogMTsKICBnYXA6IDIwcHg7CiAgcGFkZGluZzogNDBweDsKICBwYWRkaW5nLWJvdHRvbTogNjBweDsKICBvdmVyZmxvdzogYXV0bzsKfQouR2V0dGluZ1N0YXJ0ZWRfaW5zdGFsbEJ1dHRvbkNvbnRhaW5lcl9fcXUzNnQ5MiB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGJvdHRvbTogMjBweDsKICByaWdodDogMjBweDsKfQ==';\nexport var container = 'GettingStarted_container__qu36t90';\nexport var content = 'GettingStarted_content__qu36t91';\nexport var installButtonContainer = 'GettingStarted_installButtonContainer__qu36t92';", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\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 return (\n <div className={styles.container}>\n <Heading as=\"h2\">Get Started with IOTA</Heading>\n <div className={styles.content}>\n <InfoSection title=\"Install the IOTA Wallet Extension\">\n We recommend pinning IOTA Wallet to your taskbar for quicker access.\n </InfoSection>\n <InfoSection title=\"Create or Import a Wallet\">\n Be sure to back up your wallet using a secure method. Never share your secret\n phrase with anyone.\n </InfoSection>\n <InfoSection title=\"Refresh Your Browser\">\n Once you set up your wallet, refresh this window browser to load up the\n extension.\n </InfoSection>\n <div className={styles.installButtonContainer}>\n <Button variant=\"primary\" asChild>\n <a\n href=\"https://chrome.google.com/webstore/detail/iota-wallet/iidjkmdceolghepehaaddojmnjnkkija\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Install Wallet Extension\n </a>\n </Button>\n </div>\n </div>\n </div>\n );\n}\n", "import 'src/components/connect-modal/views/WhatIsAWallet.css.ts.vanilla.css?source=LldoYXRJc0FXYWxsZXRfY29udGFpbmVyX18xa2RjaW1xMCB7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KLldoYXRJc0FXYWxsZXRfY29udGVudF9fMWtkY2ltcTEgewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBmbGV4LWdyb3c6IDE7CiAgZ2FwOiAyMHB4OwogIHBhZGRpbmc6IDQwcHg7CiAgb3ZlcmZsb3cteTogYXV0bzsKfQ==';\nexport var container = 'WhatIsAWallet_container__1kdcimq0';\nexport var content = 'WhatIsAWallet_content__1kdcimq1';", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\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 return (\n <div className={styles.container}>\n <Heading as=\"h2\">What is a Wallet</Heading>\n <div className={styles.content}>\n <InfoSection title=\"Easy Login\">\n No need to create new accounts and passwords for every website. Just connect\n your wallet and get going.\n </InfoSection>\n <InfoSection title=\"Store your Digital Assets\">\n Send, receive, store, and display your digital assets like NFTs & coins.\n </InfoSection>\n </div>\n </div>\n );\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\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 return useWalletStore((state) => state.wallets);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ComponentProps } from 'react';\n\nexport function IotaIcon(props: ComponentProps<'svg'>) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"28px\"\n height=\"28px\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n {...props}\n >\n <path\n fill=\"#171d26\"\n d=\"M18.27 2.259c0 .695-.568 1.259-1.268 1.259s-1.267-.564-1.267-1.259S16.302 1 17.002 1s1.268.564 1.268 1.259m1.425 17.785c0 .695-.568 1.259-1.268 1.259s-1.267-.564-1.267-1.26c0-.695.567-1.258 1.267-1.258s1.268.563 1.268 1.259m-2.33-13.379a1.06 1.06 0 0 0 1.063-1.056 1.06 1.06 0 0 0-1.063-1.057A1.06 1.06 0 0 0 16.3 5.61a1.06 1.06 0 0 0 1.064 1.056Zm3.891-.651a1.06 1.06 0 0 1-1.063 1.056 1.06 1.06 0 0 1-1.064-1.056 1.06 1.06 0 0 1 1.064-1.057 1.06 1.06 0 0 1 1.063 1.057m-4.253 3.329c.5 0 .905-.403.905-.9 0-.496-.405-.9-.905-.9s-.906.404-.906.9c0 .497.406.9.906.9m3.734-.52c0 .497-.405.9-.905.9a.903.903 0 0 1-.906-.9c0-.496.405-.9.906-.9.5 0 .905.404.905.9m1.357 1.777c.5 0 .906-.402.906-.899s-.405-.9-.906-.9c-.5 0-.905.403-.905.9s.405.9.905.9Zm-2.309.495a.79.79 0 0 1-.792.787.79.79 0 0 1-.791-.787c0-.434.354-.786.791-.786s.792.352.792.786m-3.62.404a.79.79 0 0 0 .792-.787.79.79 0 0 0-.792-.786.79.79 0 0 0-.791.786c0 .435.354.787.791.787m5.907.471a.79.79 0 0 1-.791.787.79.79 0 0 1-.792-.786.79.79 0 0 1 .792-.787.79.79 0 0 1 .791.787Zm-4.21 1.554c.375 0 .68-.302.68-.675a.677.677 0 0 0-.68-.675.68.68 0 0 0-.68.675c0 .373.304.675.68.675m2.968.178a.68.68 0 0 1-.68.676.677.677 0 0 1-.68-.676c0-.373.304-.675.68-.675.375 0 .68.302.68.675m-5.774-.582c.375 0 .68-.302.68-.675a.68.68 0 0 0-.68-.675.68.68 0 0 0-.68.675c0 .373.304.675.68.675m2.127.943c0 .31-.254.561-.566.561a.564.564 0 0 1-.566-.562c0-.31.253-.561.566-.561s.566.251.566.562m.407 2.114a.496.496 0 0 0 .498-.494.496.496 0 0 0-.498-.495.496.496 0 0 0-.498.495c0 .273.223.494.498.494m-.791-.09a.407.407 0 0 1-.408.405.407.407 0 0 1-.408-.405c0-.223.182-.405.408-.405s.408.181.408.405m-1.472-.765a.496.496 0 0 0 .498-.494.496.496 0 0 0-.498-.495.496.496 0 0 0-.498.495c0 .273.223.494.498.494m-.973-1.64c0 .31-.254.562-.566.562a.564.564 0 0 1-.566-.562c0-.31.253-.562.566-.562s.566.251.566.562m-.588-3.666a.564.564 0 0 0 .566-.562.564.564 0 0 0-.566-.562.564.564 0 0 0-.565.562c0 .31.253.562.565.562m.745-2.473a.496.496 0 0 1-.497.494.496.496 0 0 1-.498-.494c0-.273.223-.494.498-.494s.498.22.498.494Zm.047-1.123a.406.406 0 0 0 .407-.406.406.406 0 0 0-.407-.405.407.407 0 0 0-.408.405c0 .224.182.406.408.406m-.452-1.26a.496.496 0 0 1-.498.494.496.496 0 0 1-.498-.494c0-.273.223-.494.498-.494s.498.22.498.494m4.776 10.32a.564.564 0 0 0 .566-.561.564.564 0 0 0-.566-.562.564.564 0 0 0-.566.562c0 .31.253.562.566.562ZM12.883 4.439c0 .31-.254.562-.566.562a.564.564 0 0 1-.566-.562c0-.31.254-.562.566-.562s.566.251.566.562m-.18 2.945a.564.564 0 0 0 .566-.562.564.564 0 0 0-.566-.561.564.564 0 0 0-.566.561c0 .31.253.562.566.562m.045 1.597a.677.677 0 0 1-.68.676.68.68 0 0 1-.679-.676c0-.373.304-.675.68-.675.375 0 .68.302.68.675Zm-2.74.676a.79.79 0 0 0 .791-.786.79.79 0 0 0-.791-.787.79.79 0 0 0-.792.787c0 .434.354.786.792.786m-1.494-.36c0 .497-.405.9-.905.9a.903.903 0 0 1-.906-.9c0-.497.406-.9.906-.9s.905.403.905.9m-3.529 2.18a1.06 1.06 0 0 0 1.063-1.056 1.06 1.06 0 0 0-1.063-1.056A1.06 1.06 0 0 0 3.92 10.42a1.06 1.06 0 0 0 1.064 1.056Zm-1.45.9c0 .696-.568 1.26-1.268 1.26S1 13.073 1 12.377c0-.695.567-1.259 1.267-1.259s1.268.564 1.268 1.26Zm.386-3.531A1.06 1.06 0 0 0 4.985 7.79 1.06 1.06 0 0 0 3.92 6.733 1.06 1.06 0 0 0 2.858 7.79 1.06 1.06 0 0 0 3.92 8.846Zm3.53-2.181c0 .497-.405.9-.906.9a.903.903 0 0 1-.905-.9c0-.496.405-.9.905-.9s.906.404.906.9M6.162 5.182c.5 0 .905-.403.905-.9 0-.496-.405-.9-.905-.9s-.906.404-.906.9c0 .497.406.9.906.9m3.19-1.326a.79.79 0 0 1-.791.787.79.79 0 0 1-.792-.787c0-.434.354-.786.792-.786.437 0 .791.352.791.786m1.268.788c.375 0 .68-.303.68-.675a.677.677 0 0 0-.68-.676.68.68 0 0 0-.68.675c0 .373.304.676.68.676m1.063 1.708a.68.68 0 0 1-.68.675.677.677 0 0 1-.68-.675c0-.373.305-.675.68-.675s.68.302.68.675m-2.739.695a.79.79 0 0 0 .792-.786.79.79 0 0 0-.792-.786.79.79 0 0 0-.791.786c0 .434.354.786.791.786m-1.832 5.578a.407.407 0 0 1-.408.405.407.407 0 0 1-.408-.405c0-.223.182-.405.408-.405s.408.181.408.405m1.221.201a.496.496 0 0 0 .497-.494.496.496 0 0 0-.497-.495.496.496 0 0 0-.498.495c0 .273.223.494.498.494m2.354-1.236c0 .31-.253.562-.565.562a.564.564 0 0 1-.566-.562c0-.31.253-.562.566-.562s.565.252.565.562m-.135 2.361c.375 0 .68-.302.68-.675a.677.677 0 0 0-.68-.675.677.677 0 0 0-.68.675c0 .373.304.675.68.675m-1.608-.135c0 .31-.253.562-.566.562a.564.564 0 0 1-.565-.562c0-.31.253-.562.565-.562.313 0 .566.252.566.562m-2.488.538a.496.496 0 0 0 .498-.494.496.496 0 0 0-.498-.495.496.496 0 0 0-.498.495c0 .273.223.494.498.494m.588.991c0 .31-.254.562-.566.562a.564.564 0 0 1-.566-.562c0-.31.253-.562.566-.562s.566.252.566.562m1.742.855c.376 0 .68-.303.68-.675a.677.677 0 0 0-.68-.676.677.677 0 0 0-.68.675c0 .373.305.676.68.676m3.484-1.08a.79.79 0 0 1-.79.786.79.79 0 0 1-.792-.786c0-.435.354-.787.791-.787s.792.352.792.787Zm.794 2.743c.5 0 .906-.402.906-.9 0-.496-.406-.899-.906-.899s-.905.403-.905.9.405.9.905.9Zm-2.536-.518a.79.79 0 0 1-.792.786.79.79 0 0 1-.792-.787.79.79 0 0 1 .792-.786.79.79 0 0 1 .792.787m-2.669 2.316a.79.79 0 0 0 .791-.786.79.79 0 0 0-.792-.786.79.79 0 0 0-.791.786c0 .434.354.786.792.786m2.466 1.079c0 .497-.405.9-.905.9a.903.903 0 0 1-.906-.9c0-.496.405-.9.906-.9.5 0 .905.404.905.9M13.584 22a1.06 1.06 0 0 0 1.064-1.056 1.06 1.06 0 0 0-1.064-1.057 1.06 1.06 0 0 0-1.063 1.057A1.06 1.06 0 0 0 13.584 22m-1.379-2.788c0 .497-.405.9-.905.9a.903.903 0 0 1-.906-.9c0-.497.405-.9.905-.9s.906.403.906.9m3.123.54a1.06 1.06 0 0 0 1.063-1.057 1.06 1.06 0 0 0-1.063-1.056 1.06 1.06 0 0 0-1.064 1.056 1.06 1.06 0 0 0 1.064 1.057m-7.741-2.699a.677.677 0 0 1-.68.676.677.677 0 0 1-.68-.676c0-.373.305-.675.68-.675s.68.302.68.675\"\n />\n </svg>\n );\n}\n", "import 'src/components/connect-modal/wallet-list/WalletList.css.ts.vanilla.css?source=LldhbGxldExpc3RfY29udGFpbmVyX18xdGtkZWd3MCB7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIGdhcDogNHB4OwogIG92ZXJmbG93LXk6IGF1dG87Cn0KLldhbGxldExpc3RfaWNvbl9fMXRrZGVndzEgewogIGNvbG9yOiB2YXIoLS1kYXBwLWtpdC1jb2xvcnMtYm9keSk7Cn0=';\nexport var container = 'WalletList_container__1tkdegw0';\nexport var icon = 'WalletList_icon__1tkdegw1';", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\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 name: string;\n icon: ReactNode;\n isSelected?: boolean;\n onClick: () => void;\n};\n\nexport function WalletListItem({ name, icon, onClick, isSelected = false }: WalletListItemProps) {\n return (\n <li className={styles.container}>\n <button\n className={clsx(styles.walletItem, { [styles.selectedWalletItem]: isSelected })}\n type=\"button\"\n onClick={onClick}\n >\n {typeof icon === 'string' ? (\n <img className={styles.walletIcon} src={icon} alt={`${name} logo`} />\n ) : (\n icon\n )}\n <Heading size=\"md\" truncate asChild>\n <div>{name}</div>\n </Heading>\n </button>\n </li>\n );\n}\n", "import 'src/components/connect-modal/wallet-list/WalletListItem.css.ts.vanilla.css?source=LldhbGxldExpc3RJdGVtX2NvbnRhaW5lcl9fMXZydmV6azAgewogIGRpc3BsYXk6IGZsZXg7Cn0KLldhbGxldExpc3RJdGVtX3dhbGxldEl0ZW1fXzF2cnZlemsxIHsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZmxleC1ncm93OiAxOwogIHBhZGRpbmc6IDhweDsKICBnYXA6IDhweDsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1kYXBwLWtpdC1yYWRpaS1sYXJnZSk7Cn0KLldhbGxldExpc3RJdGVtX3dhbGxldEl0ZW1fXzF2cnZlemsxOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1kYXBwLWtpdC1iYWNrZ3JvdW5kQ29sb3JzLXdhbGxldEl0ZW1Ib3Zlcik7Cn0KLldhbGxldExpc3RJdGVtX3NlbGVjdGVkV2FsbGV0SXRlbV9fMXZydmV6azIgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWRhcHAta2l0LWJhY2tncm91bmRDb2xvcnMtd2FsbGV0SXRlbVNlbGVjdGVkKTsKICBib3gtc2hhZG93OiAwcHggMnB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMDUpOwp9Ci5XYWxsZXRMaXN0SXRlbV93YWxsZXRJY29uX18xdnJ2ZXprMyB7CiAgd2lkdGg6IDI4cHg7CiAgaGVpZ2h0OiAyOHB4OwogIGZsZXgtc2hyaW5rOiAwOwogIG9iamVjdC1maXQ6IGNvdmVyOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLWRhcHAta2l0LXJhZGlpLXNtYWxsKTsKfQ==';\nexport var container = 'WalletListItem_container__1vrvezk0';\nexport var selectedWalletItem = 'WalletListItem_selectedWalletItem__1vrvezk2';\nexport var walletIcon = 'WalletListItem_walletIcon__1vrvezk3';\nexport var walletItem = 'WalletListItem_walletItem__1vrvezk1';", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletWithRequiredFeatures } from '@iota/wallet-standard';\n\nimport { useWallets } from '../../../hooks/wallet/useWallets.js';\nimport { getWalletUniqueIdentifier } from '../../../utils/walletUtils.js';\nimport { IotaIcon } from '../../icons/IotaIcon.js';\nimport * as styles from './WalletList.css.js';\nimport { WalletListItem } from './WalletListItem.js';\n\ntype WalletListProps = {\n selectedWalletName?: string;\n onPlaceholderClick: () => void;\n onSelect: (wallet: WalletWithRequiredFeatures) => void;\n};\n\nexport function WalletList({ selectedWalletName, onPlaceholderClick, onSelect }: WalletListProps) {\n const wallets = useWallets();\n return (\n <ul className={styles.container}>\n {wallets.length > 0 ? (\n wallets.map((wallet) => (\n <WalletListItem\n key={getWalletUniqueIdentifier(wallet)}\n name={wallet.name}\n icon={wallet.icon}\n isSelected={getWalletUniqueIdentifier(wallet) === selectedWalletName}\n onClick={() => onSelect(wallet)}\n />\n ))\n ) : (\n <WalletListItem\n name=\"IOTA Wallet\"\n icon={<IotaIcon className={styles.icon} />}\n onClick={onPlaceholderClick}\n isSelected\n />\n )}\n </ul>\n );\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletAccount } from '@iota/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 return useWalletStore((state) => state.currentAccount);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { formatAddress } from '@iota/iota-sdk/utils';\nimport type { WalletAccount } from '@iota/wallet-standard';\nimport * as DropdownMenu from '@radix-ui/react-dropdown-menu';\nimport clsx from 'clsx';\n\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';\nimport { useGetDefaultIotaName } from '../hooks/useGetDefaultIotaName.js';\n\ntype AccountDropdownMenuProps = {\n currentAccount: WalletAccount;\n size?: React.ComponentProps<typeof Button>['size'];\n iotaNamesEnabled: boolean;\n};\n\nexport function AccountDropdownMenu({\n currentAccount,\n size = 'lg',\n iotaNamesEnabled,\n}: AccountDropdownMenuProps) {\n const { mutate: disconnectWallet } = useDisconnectWallet();\n const accounts = useAccounts();\n const { data: iotaName } = useGetDefaultIotaName(currentAccount.address, iotaNamesEnabled);\n const displayAccount =\n iotaName ?? currentAccount.label ?? formatAddress(currentAccount.address);\n\n return (\n <DropdownMenu.Root modal={false}>\n <StyleMarker>\n <DropdownMenu.Trigger asChild>\n <Button size={size} className={styles.connectedAccount}>\n <Text mono weight=\"bold\">\n {displayAccount}\n </Text>\n <ChevronIcon />\n </Button>\n </DropdownMenu.Trigger>\n </StyleMarker>\n <DropdownMenu.Portal>\n <StyleMarker className={styles.menuContainer}>\n <DropdownMenu.Content className={styles.menuContent}>\n <div className={styles.scrollableContent}>\n {accounts.map((account) => (\n <AccountDropdownMenuItem\n key={account.address}\n account={account}\n active={currentAccount.address === account.address}\n iotaNamesEnabled={iotaNamesEnabled}\n />\n ))}\n </div>\n <DropdownMenu.Separator className={styles.separator} />\n <DropdownMenu.Item\n className={clsx(styles.menuItem)}\n onSelect={() => disconnectWallet()}\n >\n Disconnect\n </DropdownMenu.Item>\n </DropdownMenu.Content>\n </StyleMarker>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n );\n}\n\nexport function AccountDropdownMenuItem({\n account,\n active,\n iotaNamesEnabled,\n}: {\n account: WalletAccount;\n active?: boolean;\n iotaNamesEnabled: boolean;\n}) {\n const { mutate: switchAccount } = useSwitchAccount();\n const { data: iotaName } = useGetDefaultIotaName(account.address, iotaNamesEnabled);\n const displayAccount = iotaName ?? account.label ?? formatAddress(account.address);\n\n return (\n <DropdownMenu.Item\n className={clsx(styles.menuItem, styles.switchAccountMenuItem)}\n onSelect={() => switchAccount({ account })}\n >\n <Text mono>{displayAccount}</Text>\n {active ? <CheckIcon /> : null}\n </DropdownMenu.Item>\n );\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletAccount } from '@iota/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 return useWalletStore((state) => state.accounts);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\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 UseMutationOptions<void, UseDisconnectWalletError, void, unknown>,\n 'mutationFn'\n>;\n\n/**\n * Mutation hook for disconnecting from an active wallet connection, if currently connected.\n */\nexport function useDisconnectWallet({\n mutationKey,\n ...mutationOptions\n}: UseDisconnectWalletMutationOptions = {}): UseMutationResult<\n void,\n UseDisconnectWalletError,\n void\n> {\n const { currentWallet } = useCurrentWallet();\n const setWalletDisconnected = useWalletStore((state) => state.setWalletDisconnected);\n\n return useMutation({\n mutationKey: walletMutationKeys.disconnectWallet(mutationKey),\n mutationFn: async () => {\n if (!currentWallet) {\n throw new WalletNotConnectedError('No wallet is connected.');\n }\n\n try {\n // Wallets aren't required to implement the disconnect feature, so we'll\n // optionally call the disconnect feature if it exists and reset the UI\n // state on the frontend at a minimum.\n await currentWallet.features['standard:disconnect']?.disconnect();\n } catch (error) {\n console.error(\n 'Failed to disconnect the application from the current wallet.',\n error,\n );\n }\n\n setWalletDisconnected();\n },\n ...mutationOptions,\n });\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\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// Modifications Copyright (c) 2024 IOTA Stiftung\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 const currentWallet = useWalletStore((state) => state.currentWallet);\n const connectionStatus = useWalletStore((state) => state.connectionStatus);\n const supportedIntents = useWalletStore((state) => state.supportedIntents);\n\n switch (connectionStatus) {\n case 'connecting':\n return {\n connectionStatus,\n currentWallet: null,\n isDisconnected: false,\n isConnecting: true,\n isConnected: false,\n supportedIntents: [],\n } as const;\n case 'disconnected':\n return {\n connectionStatus,\n currentWallet: null,\n isDisconnected: true,\n isConnecting: false,\n isConnected: false,\n supportedIntents: [],\n } as const;\n case 'connected': {\n return {\n connectionStatus,\n currentWallet: currentWallet!,\n isDisconnected: false,\n isConnecting: false,\n isConnected: true,\n supportedIntents,\n } as const;\n }\n }\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletAccount } from '@iota/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 account: WalletAccount;\n};\n\ntype SwitchAccountResult = void;\n\ntype UseSwitchAccountError = WalletNotConnectedError | WalletAccountNotFoundError | Error;\n\ntype UseSwitchAccountMutationOptions = Omit<\n UseMutationOptions<SwitchAccountResult, UseSwitchAccountError, SwitchAccountArgs, unknown>,\n 'mutationFn'\n>;\n\n/**\n * Mutation hook for switching to a specific wallet account.\n */\nexport function useSwitchAccount({\n mutationKey,\n ...mutationOptions\n}: UseSwitchAccountMutationOptions = {}): UseMutationResult<\n SwitchAccountResult,\n UseSwitchAccountError,\n SwitchAccountArgs\n> {\n const { currentWallet } = useCurrentWallet();\n const setAccountSwitched = useWalletStore((state) => state.setAccountSwitched);\n\n return useMutation({\n mutationKey: walletMutationKeys.switchAccount(mutationKey),\n mutationFn: async ({ account }) => {\n if (!currentWallet) {\n throw new WalletNotConnectedError('No wallet is connected.');\n }\n\n const accountToSelect = currentWallet.accounts.find(\n (walletAccount) => walletAccount.address === account.address,\n );\n if (!accountToSelect) {\n throw new WalletAccountNotFoundError(\n `No account with address ${account.address} is connected to ${currentWallet.name}.`,\n );\n }\n\n setAccountSwitched(accountToSelect);\n },\n ...mutationOptions,\n });\n}\n", "import 'src/components/AccountDropdownMenu.css.ts.vanilla.css?source=#H4sIAAAAAAAAA6VTPW/bMBDd/Ss4NgMDqXGLlJmSdOmQqWNRGDR5plhTdwR5jOQW/e+FGH/BidMG1ULg3ed773R5awwV5M+JoqUBHwDLwhAiGAa7DS4W7di4Pq4a8WsmhNNRies43sx+zy5fqu8Byz0ha4+Q9sVtLf4pPVoYlfi0+/7aBo42eF+bWJ9j0BslVgHGm5mor7Q+gWFPqIShUHqcIoO33CnRXjexZvZ6lB1417ESV80eTM6jZIpKzJ+gqK316LZEj0kLsaRkIcmkrS9ZiUed3klpdYxy7bnCXgadHFzUbG3WLlFBKw0FSs8KDgn3UzxLe6TCxVl5skkUgl4GOBXpqopEj5BWgQa5UUIXprPsq3gu0aBE+6oZXxj6/ZB5HXIq0675fNu7ZEgyQwDDSiAhTCAVDh7hADzzUwfvUHqGPithABnSW4X/Zx7frGYtO++6MO0O9ntl9nbbYvK9Tpu7wkz4im+DZ9NtIw+n63x4+cB/lMx+tZHmyWolctQG5BJ4AMCzkp1bAaJOmunwc36sY3futUeHkbvkca1E8/+3/HU3dhLnD4QDgFt6BAAA';\nexport var connectedAccount = 'AccountDropdownMenu_connectedAccount__1x0gmpf0';\nexport var menuContainer = 'AccountDropdownMenu_menuContainer__1x0gmpf1';\nexport var menuContent = 'AccountDropdownMenu_menuContent__1x0gmpf2';\nexport var menuItem = 'AccountDropdownMenu_menuItem__1x0gmpf4';\nexport var scrollableContent = 'AccountDropdownMenu_scrollableContent__1x0gmpf3';\nexport var separator = 'AccountDropdownMenu_separator__1x0gmpf6';\nexport var switchAccountMenuItem = 'AccountDropdownMenu_switchAccountMenuItem__1x0gmpf5';", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ComponentProps } from 'react';\n\nexport function CheckIcon(props: ComponentProps<'svg'>) {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={16} height={16} fill=\"none\" {...props}>\n <path\n fill=\"currentColor\"\n d=\"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 />\n </svg>\n );\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ComponentProps } from 'react';\n\nexport function ChevronIcon(props: ComponentProps<'svg'>) {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={16} height={16} fill=\"none\" {...props}>\n <path\n stroke=\"#A0B6C3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={1.5}\n d=\"m4 6 4 4 4-4\"\n />\n </svg>\n );\n}\n", "// Copyright (c) 2025 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { getNetwork } from '@iota/iota-sdk/client';\nimport { useQuery } from '@tanstack/react-query';\nimport { IotaNamesClient, normalizeIotaName } from '@iota/iota-names-sdk';\nimport { useIotaClientContext } from './useIotaClient.js';\nimport { useMemo } from 'react';\nimport { IotaGraphQLClient } from '@iota/iota-sdk/graphql';\n\nexport function useGetDefaultIotaName(\n address: string | null | undefined,\n iotaNamesEnabled: boolean,\n) {\n const iotaContext = useIotaClientContext();\n const network = getNetwork(iotaContext.network);\n\n const iotaNamesClient = useMemo(() => {\n const iotaGraphQLClient = new IotaGraphQLClient({\n url: network.graphql!,\n });\n\n return new IotaNamesClient({\n graphQlClient: iotaGraphQLClient,\n network: network.id,\n });\n }, [network.id]);\n\n const iotaNamesSupported = !!iotaNamesClient.config;\n\n return useQuery({\n queryKey: ['iota-name', 'default-name', address],\n queryFn: async () => {\n if (!address) return null;\n\n const name = await iotaNamesClient?.getPublicName(address);\n\n return name ? normalizeIotaName(name) : name;\n },\n enabled: !!iotaNamesClient && !!address && iotaNamesEnabled && iotaNamesSupported,\n staleTime: 1000 * 60 * 10,\n });\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClient } from '@iota/iota-sdk/client';\nimport { useContext } from 'react';\n\nimport { IotaClientContext } from '../components/IotaClientProvider.js';\n\nexport function useIotaClientContext() {\n const iotaClient = useContext(IotaClientContext);\n\n if (!iotaClient) {\n throw new Error(\n 'Could not find IotaClientContext. Ensure that you have set up the IotaClientProvider',\n );\n }\n\n return iotaClient;\n}\n\nexport function useIotaClient(): IotaClient {\n return useIotaClientContext().client;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { getNetwork, isIotaClient, Network, IotaClient } from '@iota/iota-sdk/client';\nimport type { IotaClientOptions } from '@iota/iota-sdk/client';\nimport { createContext, useMemo, useState } from 'react';\n\nimport type { NetworkConfig } from '../hooks/networkConfig.js';\n\ntype NetworkConfigs<T extends NetworkConfig | IotaClient = NetworkConfig | IotaClient> = Record<\n string,\n T\n>;\n\nexport interface IotaClientProviderContext {\n client: IotaClient;\n networks: NetworkConfigs;\n network: string;\n config: NetworkConfig | null;\n selectNetwork: (network: string) => void;\n}\n\nexport const IotaClientContext = createContext<IotaClientProviderContext | null>(null);\n\nexport type IotaClientProviderProps<T extends NetworkConfigs> = {\n createClient?: (name: keyof T, config: T[keyof T]) => IotaClient;\n children: React.ReactNode;\n networks?: T;\n onNetworkChange?: (network: keyof T & string) => void;\n} & (\n | {\n defaultNetwork?: keyof T & string;\n network?: never;\n }\n | {\n defaultNetwork?: never;\n network?: keyof T & string;\n }\n);\n\nconst DEFAULT_NETWORKS = {\n localnet: { url: getNetwork(Network.Localnet)?.url },\n};\n\nconst DEFAULT_CREATE_CLIENT = function createClient(\n _name: string,\n config: NetworkConfig | IotaClient,\n) {\n if (isIotaClient(config)) {\n return config;\n }\n\n return new IotaClient(config);\n};\n\nexport function IotaClientProvider<T extends NetworkConfigs>(props: IotaClientProviderProps<T>) {\n const { onNetworkChange, network, children } = props;\n const networks = (props.networks ?? DEFAULT_NETWORKS) as T;\n const createClient =\n (props.createClient as typeof DEFAULT_CREATE_CLIENT) ?? DEFAULT_CREATE_CLIENT;\n\n const [selectedNetwork, setSelectedNetwork] = useState<keyof T & string>(\n props.network ?? props.defaultNetwork ?? (Object.keys(networks)[0] as keyof T & string),\n );\n\n const currentNetwork = props.network ?? selectedNetwork;\n\n const client = useMemo(() => {\n return createClient(currentNetwork, networks[currentNetwork]);\n }, [createClient, currentNetwork, networks]);\n\n const ctx = useMemo((): IotaClientProviderContext => {\n return {\n client,\n networks,\n network: currentNetwork,\n config:\n networks[currentNetwork] instanceof IotaClient\n ? null\n : (networks[currentNetwork] as IotaClientOptions),\n selectNetwork: (newNetwork) => {\n if (currentNetwork === newNetwork) {\n return;\n }\n\n if (!network && newNetwork !== selectedNetwork) {\n setSelectedNetwork(newNetwork);\n }\n\n onNetworkChange?.(newNetwork);\n },\n };\n }, [client, networks, selectedNetwork, currentNetwork, network, onNetworkChange]);\n\n return <IotaClientContext.Provider value={ctx}>{children}</IotaClientContext.Provider>;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ReactNode } from 'react';\nimport type { WalletWithRequiredFeatures } from '@iota/wallet-standard';\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 connectText?: ReactNode;\n size?: React.ComponentProps<typeof Button>['size'];\n iotaNamesEnabled?: boolean;\n onConnected?: (params: { wallet: WalletWithRequiredFeatures }) => void;\n} & React.ComponentProps<typeof Button>;\n\nexport function ConnectButton({\n connectText = 'Connect Wallet',\n size,\n iotaNamesEnabled = true,\n onConnected,\n ...buttonProps\n}: ConnectButtonProps) {\n const currentAccount = useCurrentAccount();\n return currentAccount ? (\n <AccountDropdownMenu\n currentAccount={currentAccount}\n size={size}\n iotaNamesEnabled={iotaNamesEnabled}\n />\n ) : (\n <ConnectModal\n onConnected={onConnected}\n trigger={\n <StyleMarker>\n <Button {...buttonProps} size={size}>\n {connectText}\n </Button>\n </StyleMarker>\n }\n />\n );\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletWithFeatures, WalletWithRequiredFeatures } from '@iota/wallet-standard';\nimport type { ReactNode } from 'react';\nimport { useRef } from 'react';\nimport type { StateStorage } from 'zustand/middleware';\n\nimport {\n DEFAULT_PREFERRED_WALLETS,\n DEFAULT_STORAGE,\n DEFAULT_STORAGE_KEY,\n DEFAULT_WALLET_FILTER,\n} from '../constants/walletDefaults.js';\nimport { WalletContext } from '../contexts/walletContext.js';\nimport { useAutoConnectWallet } from '../hooks/wallet/useAutoConnectWallet.js';\nimport { useUnsafeBurnerWallet } from '../hooks/wallet/useUnsafeBurnerWallet.js';\nimport { useWalletPropertiesChanged } from '../hooks/wallet/useWalletPropertiesChanged.js';\nimport { useWalletsChanged } from '../hooks/wallet/useWalletsChanged.js';\nimport { lightTheme } from '../themes/lightTheme.js';\nimport type { Theme } from '../themes/themeContract.js';\nimport { createInMemoryStore } from '../utils/stateStorage.js';\nimport { getRegisteredWallets } from '../utils/walletUtils.js';\nimport { createWalletStore } from '../walletStore.js';\nimport { InjectedThemeStyles } from './styling/InjectedThemeStyles.js';\nimport type { ChainType } from '@iota/iota-sdk/client';\n\nexport type WalletProviderProps = {\n /** 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. */\n preferredWallets?: string[];\n\n /** A filter function to select wallets that support features required for the dApp to function. This filters the list of wallets presented to users when selecting a wallet to connect from, ensuring that only wallets that meet the dApps requirements can connect. */\n walletFilter?: (wallet: WalletWithRequiredFeatures) => boolean;\n\n /** Enables the development-only unsafe burner wallet, which can be useful for testing. */\n enableUnsafeBurner?: boolean;\n\n /** Enables automatically reconnecting to the most recently used wallet account upon mounting. */\n autoConnect?: boolean;\n\n /** 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. */\n storage?: StateStorage | null;\n\n /** The key to use to store the most recently connected wallet account. */\n storageKey?: string;\n\n /** The theme to use for styling UI components. Defaults to using the light theme. */\n theme?: Theme | null;\n\n chain?: ChainType;\n\n children: ReactNode;\n};\n\nexport type { WalletWithFeatures };\n\nexport function WalletProvider({\n preferredWallets = DEFAULT_PREFERRED_WALLETS,\n walletFilter = DEFAULT_WALLET_FILTER,\n storage = DEFAULT_STORAGE,\n storageKey = DEFAULT_STORAGE_KEY,\n enableUnsafeBurner = false,\n autoConnect = false,\n theme = lightTheme,\n children,\n chain,\n}: WalletProviderProps) {\n const storeRef = useRef(\n createWalletStore({\n autoConnectEnabled: autoConnect,\n wallets: getRegisteredWallets(preferredWallets, walletFilter),\n storage: storage || createInMemoryStore(),\n storageKey,\n chain,\n }),\n );\n\n return (\n <WalletContext.Provider value={storeRef.current}>\n <WalletConnectionManager\n preferredWallets={preferredWallets}\n walletFilter={walletFilter}\n enableUnsafeBurner={enableUnsafeBurner}\n >\n {/* TODO: We ideally don't want to inject styles if people aren't using the UI components */}\n {theme ? <InjectedThemeStyles theme={theme} /> : null}\n {children}\n </WalletConnectionManager>\n </WalletContext.Provider>\n );\n}\n\ntype WalletConnectionManagerProps = Pick<\n WalletProviderProps,\n 'preferredWallets' | 'walletFilter' | 'enableUnsafeBurner' | 'children'\n>;\n\nfunction WalletConnectionManager({\n preferredWallets = DEFAULT_PREFERRED_WALLETS,\n walletFilter = DEFAULT_WALLET_FILTER,\n enableUnsafeBurner = false,\n children,\n}: WalletConnectionManagerProps) {\n useWalletsChanged(preferredWallets, walletFilter);\n useWalletPropertiesChanged();\n useUnsafeBurnerWallet(enableUnsafeBurner);\n useAutoConnectWallet();\n\n return children;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { StateStorage } from 'zustand/middleware';\n\nexport function createInMemoryStore(): StateStorage {\n const store = new Map();\n return {\n getItem(key: string) {\n return store.get(key);\n },\n setItem(key: string, value: string) {\n store.set(key, value);\n },\n removeItem(key: string) {\n store.delete(key);\n },\n };\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaWalletFeatures, WalletWithRequiredFeatures } from '@iota/wallet-standard';\n\nimport { createInMemoryStore } from '../utils/stateStorage.js';\n\nexport const IOTA_WALLET_NAME = 'IOTA Wallet';\n\nexport const DEFAULT_STORAGE =\n typeof window !== 'undefined' && window.localStorage ? localStorage : createInMemoryStore();\n\nexport const DEFAULT_STORAGE_KEY = 'iota-dapp-kit:wallet-connection-info';\n\nconst SIGN_FEATURES = ['iota:signTransaction'] satisfies (keyof IotaWalletFeatures)[];\n\nexport const DEFAULT_WALLET_FILTER = (wallet: WalletWithRequiredFeatures) =>\n SIGN_FEATURES.some((feature) => wallet.features[feature]);\n\nexport const DEFAULT_PREFERRED_WALLETS = [IOTA_WALLET_NAME];\n\nconst WALLET_CHROME_EXTENSION_ID = 'iidjkmdceolghepehaaddojmnjnkkija';\n\nexport const WALLET_DOWNLOAD_URL =\n 'https://chromewebstore.google.com/detail/' + WALLET_CHROME_EXTENSION_ID;\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useQuery } from '@tanstack/react-query';\nimport { useLayoutEffect, useState } from 'react';\n\nimport { getWalletUniqueIdentifier } from '../../utils/walletUtils.js';\nimport { useConnectWallet } from './useConnectWallet.js';\nimport { useCurrentWallet } from './useCurrentWallet.js';\nimport { useWallets } from './useWallets.js';\nimport { useWalletStore } from './useWalletStore.js';\n\nexport function useAutoConnectWallet(): 'disabled' | 'idle' | 'attempted' {\n const { mutateAsync: connectWallet } = useConnectWallet();\n const autoConnectEnabled = useWalletStore((state) => state.autoConnectEnabled);\n const lastConnectedWalletName = useWalletStore((state) => state.lastConnectedWalletName);\n const lastConnectedAccountAddress = useWalletStore(\n (state) => state.lastConnectedAccountAddress,\n );\n const wallets = useWallets();\n const { isConnected } = useCurrentWallet();\n\n const [clientOnly, setClientOnly] = useState(false);\n useLayoutEffect(() => {\n setClientOnly(true);\n }, []);\n\n const { data, isError } = useQuery({\n queryKey: [\n '@iota/dapp-kit',\n 'autoconnect',\n {\n isConnected,\n autoConnectEnabled,\n lastConnectedWalletName,\n lastConnectedAccountAddress,\n walletCount: wallets.length,\n },\n ],\n queryFn: async () => {\n if (!autoConnectEnabled) {\n return 'disabled';\n }\n\n if (!lastConnectedWalletName || !lastConnectedAccountAddress || isConnected) {\n return 'attempted';\n }\n\n const wallet = wallets.find(\n (wallet) => getWalletUniqueIdentifier(wallet) === lastConnectedWalletName,\n );\n if (wallet) {\n await connectWallet({\n wallet,\n accountAddress: lastConnectedAccountAddress,\n silent: true,\n });\n }\n\n return 'attempted';\n },\n enabled: autoConnectEnabled,\n persister: undefined,\n gcTime: 0,\n staleTime: 0,\n networkMode: 'always',\n retry: false,\n retryOnMount: false,\n refetchInterval: false,\n refetchIntervalInBackground: false,\n refetchOnMount: false,\n refetchOnReconnect: false,\n refetchOnWindowFocus: false,\n });\n\n if (!autoConnectEnabled) {\n return 'disabled';\n }\n\n // We always initialize with \"idle\" so that in SSR environments, we guarantee that the initial render states always agree:\n if (!clientOnly) {\n return 'idle';\n }\n\n if (isConnected) {\n return 'attempted';\n }\n\n if (!lastConnectedWalletName) {\n return 'attempted';\n }\n\n return isError ? 'attempted' : (data ?? 'idle');\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClient } from '@iota/iota-sdk/client';\nimport { Ed25519Keypair } from '@iota/iota-sdk/keypairs/ed25519';\nimport { Transaction } from '@iota/iota-sdk/transactions';\nimport { toBase64 } from '@iota/iota-sdk/utils';\nimport type {\n StandardConnectFeature,\n StandardConnectMethod,\n StandardEventsFeature,\n StandardEventsOnMethod,\n IotaFeatures,\n IotaSignAndExecuteTransactionMethod,\n IotaSignPersonalMessageMethod,\n IotaSignTransactionMethod,\n Wallet,\n} from '@iota/wallet-standard';\nimport { getWallets, ReadonlyWalletAccount, SUPPORTED_CHAINS } from '@iota/wallet-standard';\nimport { useEffect } from 'react';\n\nimport { useIotaClient } from '../useIotaClient.js';\n\nconst WALLET_NAME = 'Unsafe Burner Wallet';\n\nexport function useUnsafeBurnerWallet(enabled: boolean) {\n const iotaClient = useIotaClient();\n\n useEffect(() => {\n if (!enabled) {\n return;\n }\n const unregister = registerUnsafeBurnerWallet(iotaClient);\n return unregister;\n }, [enabled, iotaClient]);\n}\n\nfunction registerUnsafeBurnerWallet(iotaClient: IotaClient) {\n const walletsApi = getWallets();\n const registeredWallets = walletsApi.get();\n\n if (registeredWallets.find((wallet) => wallet.name === WALLET_NAME)) {\n console.warn(\n 'registerUnsafeBurnerWallet: Unsafe Burner Wallet already registered, skipping duplicate registration.',\n );\n return;\n }\n\n console.warn(\n 'Your application is currently using the unsafe burner wallet. Make sure that this wallet is disabled in production.',\n );\n\n const keypair = new Ed25519Keypair();\n const account = new ReadonlyWalletAccount({\n address: keypair.getPublicKey().toIotaAddress(),\n publicKey: keypair.getPublicKey().toIotaBytes(),\n chains: ['iota:unknown'],\n features: ['iota:signTransaction', 'iota:signAndExecuteTransaction'],\n });\n\n class UnsafeBurnerWallet implements Wallet {\n get version() {\n return '1.0.0' as const;\n }\n\n get name() {\n return WALLET_NAME;\n }\n\n get icon() {\n return 'data:image/png;base64,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' as const;\n }\n\n // Return the IOTA chains that your wallet supports.\n get chains() {\n return SUPPORTED_CHAINS;\n }\n\n get accounts() {\n return [account];\n }\n\n get features(): StandardConnectFeature & StandardEventsFeature & IotaFeatures {\n return {\n 'standard:connect': {\n version: '1.0.0',\n connect: this.#connect,\n },\n 'standard:events': {\n version: '1.0.0',\n on: this.#on,\n },\n 'iota:signPersonalMessage': {\n version: '1.0.0',\n signPersonalMessage: this.#signPersonalMessage,\n },\n 'iota:signTransaction': {\n version: '2.0.0',\n signTransaction: this.#signTransaction,\n },\n 'iota:signAndExecuteTransaction': {\n version: '2.0.0',\n signAndExecuteTransaction: this.#signAndExecuteTransaction,\n },\n };\n }\n\n #on: StandardEventsOnMethod = () => {\n return () => {};\n };\n\n #connect: StandardConnectMethod = async () => {\n return { accounts: this.accounts };\n };\n\n #signPersonalMessage: IotaSignPersonalMessageMethod = async (messageInput) => {\n const { bytes, signature } = await keypair.signPersonalMessage(messageInput.message);\n return { bytes, signature };\n };\n\n #signTransaction: IotaSignTransactionMethod = async (transactionInput) => {\n const { bytes, signature } = await Transaction.from(\n await transactionInput.transaction.toJSON(),\n ).sign({\n client: iotaClient,\n signer: keypair,\n });\n\n transactionInput.signal?.throwIfAborted();\n\n return {\n bytes,\n signature: signature,\n };\n };\n\n #signAndExecuteTransaction: IotaSignAndExecuteTransactionMethod = async (\n transactionInput,\n ) => {\n const { bytes, signature } = await Transaction.from(\n await transactionInput.transaction.toJSON(),\n ).sign({\n client: iotaClient,\n signer: keypair,\n });\n\n transactionInput.signal?.throwIfAborted();\n\n const { rawEffects, digest } = await iotaClient.executeTransactionBlock({\n signature,\n transactionBlock: bytes,\n options: {\n showRawEffects: true,\n },\n });\n\n return {\n bytes,\n signature,\n digest,\n effects: toBase64(new Uint8Array(rawEffects!)),\n };\n };\n }\n\n return walletsApi.register(new UnsafeBurnerWallet());\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useEffect } from 'react';\n\nimport { useCurrentWallet } from './useCurrentWallet.js';\nimport { useWalletStore } from './useWalletStore.js';\n\n/**\n * Internal hook for easily handling various changes in properties for a wallet.\n */\nexport function useWalletPropertiesChanged() {\n const { currentWallet } = useCurrentWallet();\n const updateWalletAccounts = useWalletStore((state) => state.updateWalletAccounts);\n\n useEffect(() => {\n const unsubscribeFromEvents = currentWallet?.features['standard:events'].on(\n 'change',\n ({ accounts }) => {\n // TODO: We should handle features changing that might make the list of wallets\n // or even the current wallet incompatible with the dApp.\n if (accounts) {\n updateWalletAccounts(accounts);\n }\n },\n );\n return unsubscribeFromEvents;\n }, [currentWallet?.features, updateWalletAccounts]);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletWithRequiredFeatures } from '@iota/wallet-standard';\nimport { getWallets } from '@iota/wallet-standard';\nimport { useEffect } from 'react';\n\nimport { getRegisteredWallets } from '../../utils/walletUtils.js';\nimport { useWalletStore } from './useWalletStore.js';\n\n/**\n * Internal hook for easily handling the addition and removal of new wallets.\n */\nexport function useWalletsChanged(\n preferredWallets: string[],\n walletFilter?: (wallet: WalletWithRequiredFeatures) => boolean,\n) {\n const setWalletRegistered = useWalletStore((state) => state.setWalletRegistered);\n const setWalletUnregistered = useWalletStore((state) => state.setWalletUnregistered);\n\n useEffect(() => {\n const walletsApi = getWallets();\n setWalletRegistered(getRegisteredWallets(preferredWallets, walletFilter));\n\n const unsubscribeFromRegister = walletsApi.on('register', () => {\n setWalletRegistered(getRegisteredWallets(preferredWallets, walletFilter));\n });\n\n const unsubscribeFromUnregister = walletsApi.on('unregister', (unregisteredWallet) => {\n setWalletUnregistered(\n getRegisteredWallets(preferredWallets, walletFilter),\n unregisteredWallet,\n );\n });\n\n return () => {\n unsubscribeFromRegister();\n unsubscribeFromUnregister();\n };\n }, [preferredWallets, walletFilter, setWalletRegistered, setWalletUnregistered]);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ThemeVars } from './themeContract.js';\n\nexport const lightTheme: ThemeVars = {\n blurs: {\n modalOverlay: 'blur(0)',\n },\n backgroundColors: {\n primaryButton: '#F6F7F9',\n primaryButtonHover: '#F0F2F5',\n outlineButtonHover: '#F4F4F5',\n modalOverlay: 'rgba(24 36 53 / 20%)',\n modalPrimary: 'white',\n modalSecondary: '#F7F8F8',\n iconButton: 'transparent',\n dropdownMenu: '#FFFFFF',\n dropdownMenuSeparator: '#F3F6F8',\n walletItemSelected: 'white',\n walletItemHover: '#3C424226',\n scrollThumb: '#cad4e2',\n },\n borderColors: {\n outlineButton: '#E4E4E7',\n },\n colors: {\n primaryButton: '#373737',\n outlineButtonHover: '#373737',\n iconButton: '#000000',\n body: '#182435',\n bodyMuted: '#767A81',\n bodyDanger: '#FF794B',\n },\n radii: {\n small: '6px',\n medium: '8px',\n large: '12px',\n xlarge: '16px',\n full: '120px',\n },\n fontWeights: {\n normal: '400',\n medium: '500',\n bold: '600',\n },\n fontSizes: {\n small: '14px',\n medium: '16px',\n large: '18px',\n xlarge: '20px',\n },\n typography: {\n fontFamily:\n 'ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"',\n fontStyle: 'normal',\n lineHeight: '24px',\n letterSpacing: '0.1px',\n },\n spacing: {\n xxsmall: '4px',\n xsmall: '8px',\n small: '12px',\n medium: '16px',\n large: '24px',\n xlarge: '32px',\n },\n};\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Wallet, WalletAccount, WalletWithRequiredFeatures } from '@iota/wallet-standard';\nimport { createStore } from 'zustand';\nimport type { StateStorage } from 'zustand/middleware';\nimport { createJSONStorage, persist } from 'zustand/middleware';\n\nimport { getWalletUniqueIdentifier } from './utils/walletUtils.js';\nimport type { ChainType } from '@iota/iota-sdk/client';\n\ntype WalletConnectionStatus = 'disconnected' | 'connecting' | 'connected';\n\nexport type WalletActions = {\n setAccountSwitched: (selectedAccount: WalletAccount) => void;\n setConnectionStatus: (connectionStatus: WalletConnectionStatus) => void;\n setWalletConnected: (\n wallet: WalletWithRequiredFeatures,\n connectedAccounts: readonly WalletAccount[],\n selectedAccount: WalletAccount | null,\n supportedIntents?: string[],\n ) => void;\n updateWalletAccounts: (accounts: readonly WalletAccount[]) => void;\n setWalletDisconnected: () => void;\n setWalletRegistered: (updatedWallets: WalletWithRequiredFeatures[]) => void;\n setWalletUnregistered: (\n updatedWallets: WalletWithRequiredFeatures[],\n unregisteredWallet: Wallet,\n ) => void;\n};\n\nexport type WalletStore = ReturnType<typeof createWalletStore>;\n\nexport type StoreState = {\n autoConnectEnabled: boolean;\n wallets: WalletWithRequiredFeatures[];\n accounts: readonly WalletAccount[];\n currentWallet: WalletWithRequiredFeatures | null;\n currentAccount: WalletAccount | null;\n lastConnectedAccountAddress: string | null;\n lastConnectedWalletName: string | null;\n connectionStatus: WalletConnectionStatus;\n supportedIntents: string[];\n chain: ChainType | undefined;\n} & WalletActions;\n\ntype WalletConfiguration = {\n autoConnectEnabled: boolean;\n wallets: WalletWithRequiredFeatures[];\n storage: StateStorage;\n storageKey: string;\n chain?: ChainType;\n};\n\nexport function createWalletStore({\n wallets,\n storage,\n storageKey,\n autoConnectEnabled,\n chain,\n}: WalletConfiguration) {\n return createStore<StoreState>()(\n persist(\n (set, get) => ({\n autoConnectEnabled,\n wallets,\n accounts: [] as WalletAccount[],\n currentWallet: null,\n currentAccount: null,\n lastConnectedAccountAddress: null,\n lastConnectedWalletName: null,\n connectionStatus: 'disconnected',\n supportedIntents: [],\n chain,\n setConnectionStatus(connectionStatus) {\n set(() => ({\n connectionStatus,\n }));\n },\n setWalletConnected(\n wallet,\n connectedAccounts,\n selectedAccount,\n supportedIntents = [],\n ) {\n set(() => ({\n accounts: connectedAccounts,\n currentWallet: wallet,\n currentAccount: selectedAccount,\n lastConnectedWalletName: getWalletUniqueIdentifier(wallet),\n lastConnectedAccountAddress: selectedAccount?.address,\n connectionStatus: 'connected',\n supportedIntents,\n }));\n },\n setWalletDisconnected() {\n set(() => ({\n accounts: [],\n currentWallet: null,\n currentAccount: null,\n lastConnectedWalletName: null,\n lastConnectedAccountAddress: null,\n connectionStatus: 'disconnected',\n supportedIntents: [],\n }));\n },\n setAccountSwitched(selectedAccount) {\n set(() => ({\n currentAccount: selectedAccount,\n lastConnectedAccountAddress: selectedAccount.address,\n }));\n },\n setWalletRegistered(updatedWallets) {\n set(() => ({ wallets: updatedWallets }));\n },\n setWalletUnregistered(updatedWallets, unregisteredWallet) {\n if (unregisteredWallet === get().currentWallet) {\n set(() => ({\n wallets: updatedWallets,\n accounts: [],\n currentWallet: null,\n currentAccount: null,\n lastConnectedWalletName: null,\n lastConnectedAccountAddress: null,\n connectionStatus: 'disconnected',\n supportedIntents: [],\n }));\n } else {\n set(() => ({ wallets: updatedWallets }));\n }\n },\n updateWalletAccounts(accounts) {\n const currentAccount = get().currentAccount;\n\n set(() => ({\n accounts,\n currentAccount:\n (currentAccount &&\n accounts.find(\n ({ address }) => address === currentAccount.address,\n )) ||\n accounts[0],\n }));\n },\n }),\n {\n name: storageKey,\n storage: createJSONStorage(() => storage),\n partialize: ({ lastConnectedWalletName, lastConnectedAccountAddress }) => ({\n lastConnectedWalletName,\n lastConnectedAccountAddress,\n }),\n },\n ),\n );\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { assignInlineVars } from '@vanilla-extract/dynamic';\n\nimport { styleDataAttributeSelector } from '../../constants/styleDataAttribute.js';\nimport { themeVars } from '../../themes/themeContract.js';\nimport type { DynamicTheme, Theme, ThemeVars } from '../../themes/themeContract.js';\n\ntype InjectedThemeStylesProps = {\n theme: Theme;\n};\n\nexport function InjectedThemeStyles({ theme }: InjectedThemeStylesProps) {\n const themeStyles = Array.isArray(theme)\n ? getDynamicThemeStyles(theme)\n : getStaticThemeStyles(theme);\n\n return (\n <style\n // @ts-expect-error The precedence prop hasn't made it to the stable release of React, but we\n // don't want this to break in frameworks like Next which use the latest canary build.\n precedence=\"default\"\n href=\"iota-dapp-kit-theme\"\n dangerouslySetInnerHTML={{\n __html: themeStyles,\n }}\n />\n );\n}\n\nfunction getDynamicThemeStyles(themes: DynamicTheme[]) {\n return themes\n .map(({ mediaQuery, selector, variables }) => {\n const themeStyles = getStaticThemeStyles(variables);\n const themeStylesWithSelectorPrefix = selector\n ? `${selector} ${themeStyles}`\n : themeStyles;\n\n return mediaQuery\n ? `@media ${mediaQuery}{${themeStylesWithSelectorPrefix}}`\n : themeStylesWithSelectorPrefix;\n })\n .join(' ');\n}\n\nfunction getStaticThemeStyles(theme: ThemeVars) {\n return `${styleDataAttributeSelector} {${cssStringFromTheme(theme)}}`;\n}\n\nfunction cssStringFromTheme(theme: ThemeVars) {\n return Object.entries(assignInlineVars(themeVars, theme))\n .map(([key, value]) => `${key}:${value};`)\n .join('');\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { createGlobalThemeContract } from '@vanilla-extract/css';\n\nconst themeContractValues = {\n blurs: {\n modalOverlay: '',\n },\n backgroundColors: {\n primaryButton: '',\n primaryButtonHover: '',\n outlineButtonHover: '',\n walletItemHover: '',\n walletItemSelected: '',\n modalOverlay: '',\n modalPrimary: '',\n modalSecondary: '',\n iconButton: '',\n dropdownMenu: '',\n dropdownMenuSeparator: '',\n scrollThumb: '',\n },\n borderColors: {\n outlineButton: '',\n },\n colors: {\n primaryButton: '',\n outlineButtonHover: '',\n body: '',\n bodyMuted: '',\n bodyDanger: '',\n iconButton: '',\n },\n radii: {\n small: '',\n medium: '',\n large: '',\n xlarge: '',\n full: '',\n },\n fontWeights: {\n normal: '',\n medium: '',\n bold: '',\n },\n fontSizes: {\n small: '',\n medium: '',\n large: '',\n xlarge: '',\n },\n typography: {\n fontFamily: '',\n fontStyle: '',\n lineHeight: '',\n letterSpacing: '',\n },\n spacing: {\n xxsmall: '',\n xsmall: '',\n small: '',\n medium: '',\n large: '',\n xlarge: '',\n },\n};\n\nexport type ThemeVars = typeof themeContractValues;\n\n/**\n * A custom theme that is enabled when various conditions are\n */\nexport type DynamicTheme = {\n /**\n * An optional media query required for the given theme to be enabled. This is useful\n * when you want the theme of your application to automatically switch depending on\n * a media feature.\n *\n * @example '(prefers-color-scheme: dark)'\n */\n mediaQuery?: string;\n\n /**\n * An optional CSS selector required for the given theme to be enabled. This is useful\n * when you have a manual theme switcher on your application that sets a top-level\n * class name or data-attribute to control the current theme.\n *\n * @example '.data-dark'\n */\n selector?: string;\n\n /** The theme definitions that will be set when the selector and mediaQuery criteria are matched. */\n variables: ThemeVars;\n};\n\nexport type Theme = ThemeVars | DynamicTheme[];\n\nexport const themeVars = createGlobalThemeContract(\n themeContractValues,\n (_, path) => `dapp-kit-${path.join('-')}`,\n);\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClientOptions } from '@iota/iota-sdk/client';\n\nimport { useIotaClientContext } from './useIotaClient.js';\n\nexport type NetworkConfig<T extends object = object> = IotaClientOptions & {\n variables?: T;\n};\n\nexport function createNetworkConfig<\n const T extends Record<string, Config>,\n Config extends NetworkConfig<Variables> = T[keyof T],\n Variables extends object = NonNullable<Config['variables']>,\n>(networkConfig: T) {\n function useNetworkConfig(): Config {\n const { config } = useIotaClientContext();\n\n if (!config) {\n throw new Error('No network config found');\n }\n\n return config as T[keyof T];\n }\n\n function useNetworkVariables(): Variables {\n const { variables } = useNetworkConfig();\n\n return (variables ?? {}) as Variables;\n }\n\n function useNetworkVariable<K extends keyof Variables>(name: K): Variables[K] {\n const variables = useNetworkVariables();\n\n return variables[name];\n }\n\n return {\n networkConfig,\n useNetworkConfig,\n useNetworkVariables,\n useNetworkVariable,\n };\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClient } from '@iota/iota-sdk/client';\nimport type {\n InfiniteData,\n UseInfiniteQueryOptions,\n UseInfiniteQueryResult,\n} from '@tanstack/react-query';\nimport { useInfiniteQuery } from '@tanstack/react-query';\n\nimport type { PartialBy } from '../types/utilityTypes.js';\nimport { useIotaClientContext } from './useIotaClient.js';\n\ninterface PaginatedResult {\n data?: unknown;\n nextCursor?: unknown;\n hasNextPage: boolean;\n}\n\nexport type IotaRpcPaginatedMethodName = {\n [K in keyof IotaClient]: IotaClient[K] extends (input: any) => Promise<PaginatedResult>\n ? K\n : never;\n}[keyof IotaClient];\n\nexport type IotaRpcPaginatedMethods = {\n [K in IotaRpcPaginatedMethodName]: IotaClient[K] extends (\n input: infer Params,\n ) => Promise<\n infer Result extends { hasNextPage?: boolean | null; nextCursor?: infer Cursor | null }\n >\n ? {\n name: K;\n result: Result;\n params: Params;\n cursor: Cursor;\n }\n : never;\n};\n\nexport type UseIotaClientInfiniteQueryOptions<\n T extends keyof IotaRpcPaginatedMethods,\n TData,\n> = PartialBy<\n Omit<\n UseInfiniteQueryOptions<\n IotaRpcPaginatedMethods[T]['result'],\n Error,\n TData,\n IotaRpcPaginatedMethods[T]['result'],\n unknown[]\n >,\n 'queryFn' | 'initialPageParam' | 'getNextPageParam'\n >,\n 'queryKey'\n>;\n\nexport function useIotaClientInfiniteQuery<\n T extends keyof IotaRpcPaginatedMethods,\n TData = InfiniteData<IotaRpcPaginatedMethods[T]['result']>,\n>(\n method: T,\n params: IotaRpcPaginatedMethods[T]['params'],\n {\n queryKey = [],\n enabled = !!params,\n ...options\n }: UseIotaClientInfiniteQueryOptions<T, TData> = {},\n): UseInfiniteQueryResult<TData, Error> {\n const iotaContext = useIotaClientContext();\n\n return useInfiniteQuery({\n ...options,\n initialPageParam: null,\n queryKey: [iotaContext.network, method, params, ...queryKey],\n enabled,\n queryFn: ({ pageParam }) =>\n iotaContext.client[method]({\n ...(params ?? {}),\n cursor: pageParam,\n } as never),\n getNextPageParam: (lastPage) =>\n lastPage.hasNextPage ? (lastPage.nextCursor ?? null) : null,\n });\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { useIotaClientContext } from './useIotaClient.js';\nimport type { IotaRpcMethods } from './useIotaClientQuery.js';\n\nexport type UseIotaClientMutationOptions<T extends keyof IotaRpcMethods> = Omit<\n UseMutationOptions<IotaRpcMethods[T]['result'], Error, IotaRpcMethods[T]['params'], unknown[]>,\n 'mutationFn'\n>;\n\nexport function useIotaClientMutation<T extends keyof IotaRpcMethods>(\n method: T,\n options: UseIotaClientMutationOptions<T> = {},\n): UseMutationResult<IotaRpcMethods[T]['result'], Error, IotaRpcMethods[T]['params'], unknown[]> {\n const iotaContext = useIotaClientContext();\n\n return useMutation({\n ...options,\n mutationFn: async (params) => {\n return await iotaContext.client[method](params as never);\n },\n });\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClient } from '@iota/iota-sdk/client';\nimport type {\n UndefinedInitialDataOptions,\n UseQueryOptions,\n UseQueryResult,\n} from '@tanstack/react-query';\nimport { queryOptions, useQuery, useSuspenseQuery } from '@tanstack/react-query';\nimport { useMemo } from 'react';\n\nimport type { PartialBy } from '../types/utilityTypes.js';\nimport { useIotaClientContext } from './useIotaClient.js';\n\nexport type IotaRpcMethodName = {\n [K in keyof IotaClient]: IotaClient[K] extends\n | ((input: any) => Promise<any>)\n | (() => Promise<any>)\n ? K\n : never;\n}[keyof IotaClient];\n\nexport type IotaRpcMethods = {\n [K in IotaRpcMethodName]: IotaClient[K] extends (input: infer P) => Promise<infer R>\n ? {\n name: K;\n result: R;\n params: P;\n }\n : IotaClient[K] extends () => Promise<infer R>\n ? {\n name: K;\n result: R;\n params: undefined | object;\n }\n : never;\n};\n\nexport type UseIotaClientQueryOptions<T extends keyof IotaRpcMethods, TData> = PartialBy<\n Omit<UseQueryOptions<IotaRpcMethods[T]['result'], Error, TData, unknown[]>, 'queryFn'>,\n 'queryKey'\n>;\n\nexport type GetIotaClientQueryOptions<T extends keyof IotaRpcMethods> = {\n client: IotaClient;\n network: string;\n method: T;\n options?: PartialBy<\n Omit<UndefinedInitialDataOptions<IotaRpcMethods[T]['result']>, 'queryFn'>,\n 'queryKey'\n >;\n} & (undefined extends IotaRpcMethods[T]['params']\n ? { params?: IotaRpcMethods[T]['params'] }\n : { params: IotaRpcMethods[T]['params'] });\n\nexport function getIotaClientQuery<T extends keyof IotaRpcMethods>({\n client,\n network,\n method,\n params,\n options,\n}: GetIotaClientQueryOptions<T>) {\n return queryOptions<IotaRpcMethods[T]['result']>({\n ...options,\n queryKey: [network, method, params],\n queryFn: async () => {\n return await client[method](params as never);\n },\n });\n}\n\nexport function useIotaClientQuery<\n T extends keyof IotaRpcMethods,\n TData = IotaRpcMethods[T]['result'],\n>(\n ...args: undefined extends IotaRpcMethods[T]['params']\n ? [\n method: T,\n params?: IotaRpcMethods[T]['params'],\n options?: UseIotaClientQueryOptions<T, TData>,\n ]\n : [\n method: T,\n params: IotaRpcMethods[T]['params'],\n options?: UseIotaClientQueryOptions<T, TData>,\n ]\n): UseQueryResult<TData, Error> {\n const [method, params, { queryKey = [], ...options } = {}] = args as [\n method: T,\n params?: IotaRpcMethods[T]['params'],\n options?: UseIotaClientQueryOptions<T, TData>,\n ];\n\n const iotaContext = useIotaClientContext();\n\n return useQuery({\n ...options,\n queryKey: [iotaContext.network, method, params, ...queryKey],\n queryFn: async () => {\n return (await iotaContext.client[method](\n params as never,\n )) as IotaRpcMethods[T]['result'];\n },\n });\n}\n\nexport function useIotaClientSuspenseQuery<\n T extends keyof IotaRpcMethods,\n TData = IotaRpcMethods[T]['result'],\n>(\n ...args: undefined extends IotaRpcMethods[T]['params']\n ? [\n method: T,\n params?: IotaRpcMethods[T]['params'],\n options?: UndefinedInitialDataOptions<TData>,\n ]\n : [\n method: T,\n params: IotaRpcMethods[T]['params'],\n options?: UndefinedInitialDataOptions<TData>,\n ]\n) {\n const [method, params, options = {}] = args as [\n method: T,\n params?: IotaRpcMethods[T]['params'],\n options?: UndefinedInitialDataOptions<TData>,\n ];\n\n const iotaContext = useIotaClientContext();\n\n const query = useMemo(() => {\n return getIotaClientQuery<T>({\n client: iotaContext.client,\n network: iotaContext.network,\n method,\n params,\n options,\n });\n }, [iotaContext.network, method, params, options]);\n\n return useSuspenseQuery(query);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { UseQueryResult } from '@tanstack/react-query';\nimport { useQueries } from '@tanstack/react-query';\n\nimport { useIotaClientContext } from './useIotaClient.js';\nimport type { IotaRpcMethods, UseIotaClientQueryOptions } from './useIotaClientQuery.js';\n\ntype IotaClientQueryOptions = IotaRpcMethods[keyof IotaRpcMethods] extends infer Method\n ? Method extends {\n name: infer M extends keyof IotaRpcMethods;\n params?: infer P;\n }\n ? undefined extends P\n ? {\n method: M;\n params?: P;\n options?: UseIotaClientQueryOptions<M, unknown>;\n }\n : {\n method: M;\n params: P;\n options?: UseIotaClientQueryOptions<M, unknown>;\n }\n : never\n : never;\n\nexport type UseIotaClientQueriesResults<Args extends readonly IotaClientQueryOptions[]> = {\n -readonly [K in keyof Args]: Args[K] extends {\n method: infer M extends keyof IotaRpcMethods;\n readonly options?:\n | {\n select?: (...args: any[]) => infer R;\n }\n | object;\n }\n ? UseQueryResult<unknown extends R ? IotaRpcMethods[M]['result'] : R>\n : never;\n};\n\nexport function useIotaClientQueries<\n const Queries extends readonly IotaClientQueryOptions[],\n Results = UseIotaClientQueriesResults<Queries>,\n>({\n queries,\n combine,\n}: {\n queries: Queries;\n combine?: (results: UseIotaClientQueriesResults<Queries>) => Results;\n}): Results {\n const iotaContext = useIotaClientContext();\n\n return useQueries({\n combine: combine as never,\n queries: queries.map((query) => {\n const { method, params, options: { queryKey = [], ...restOptions } = {} } = query;\n\n return {\n ...restOptions,\n queryKey: [iotaContext.network, method, params, ...queryKey],\n queryFn: async () => {\n return await iotaContext.client[method](params as never);\n },\n };\n }) as [],\n });\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Transaction } from '@iota/iota-sdk/transactions';\nimport { toBase64 } from '@iota/iota-sdk/utils';\nimport type {\n IotaSignAndExecuteTransactionInput,\n IotaSignAndExecuteTransactionOutput,\n} from '@iota/wallet-standard';\nimport { signTransaction } from '@iota/wallet-standard';\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { walletMutationKeys } from '../../constants/walletMutationKeys.js';\nimport {\n WalletFeatureNotSupportedError,\n WalletNoAccountSelectedError,\n WalletNotConnectedError,\n} from '../../errors/walletErrors.js';\nimport type { PartialBy } from '../../types/utilityTypes.js';\nimport { useIotaClient } from '../useIotaClient.js';\nimport { useCurrentAccount } from './useCurrentAccount.js';\nimport { useCurrentWallet } from './useCurrentWallet.js';\nimport { useReportTransactionEffects } from './useReportTransactionEffects.js';\nimport { useCurrentChain } from './useCurrentChain.js';\n\ntype UseSignAndExecuteTransactionArgs = PartialBy<\n Omit<IotaSignAndExecuteTransactionInput, 'transaction'>,\n 'account' | 'chain'\n> & {\n transaction: Transaction | string;\n waitForTransaction?: boolean;\n};\n\ntype UseSignAndExecuteTransactionResult = IotaSignAndExecuteTransactionOutput;\n\ntype UseSignAndExecuteTransactionError =\n | WalletFeatureNotSupportedError\n | WalletNoAccountSelectedError\n | WalletNotConnectedError\n | Error;\n\ntype ExecuteTransactionResult =\n | {\n digest: string;\n rawEffects?: number[];\n }\n | {\n effects?: {\n bcs?: string;\n };\n };\n\ntype UseSignAndExecuteTransactionMutationOptions<Result extends ExecuteTransactionResult> = Omit<\n UseMutationOptions<\n Result,\n UseSignAndExecuteTransactionError,\n UseSignAndExecuteTransactionArgs,\n unknown\n >,\n 'mutationFn'\n> & {\n execute?: ({ bytes, signature }: { bytes: string; signature: string }) => Promise<Result>;\n};\n\n/**\n * Mutation hook for prompting the user to sign and execute a transaction.\n */\nexport function useSignAndExecuteTransaction<\n Result extends ExecuteTransactionResult = UseSignAndExecuteTransactionResult,\n>({\n mutationKey,\n execute,\n ...mutationOptions\n}: UseSignAndExecuteTransactionMutationOptions<Result> = {}): UseMutationResult<\n Result,\n UseSignAndExecuteTransactionError,\n UseSignAndExecuteTransactionArgs\n> {\n const currentChain = useCurrentChain();\n const { currentWallet, supportedIntents } = useCurrentWallet();\n const currentAccount = useCurrentAccount();\n const client = useIotaClient();\n const { mutate: reportTransactionEffects } = useReportTransactionEffects();\n\n const executeTransaction: ({\n bytes,\n signature,\n }: {\n bytes: string;\n signature: string;\n }) => Promise<ExecuteTransactionResult> =\n execute ??\n (async ({ bytes, signature }) => {\n const { digest, rawEffects } = await client.executeTransactionBlock({\n transactionBlock: bytes,\n signature,\n options: {\n showRawEffects: true,\n },\n });\n\n return {\n digest,\n rawEffects,\n effects: toBase64(new Uint8Array(rawEffects!)),\n bytes,\n signature,\n };\n });\n\n return useMutation({\n mutationKey: walletMutationKeys.signAndExecuteTransaction(mutationKey),\n mutationFn: async ({ transaction, ...signTransactionArgs }): Promise<Result> => {\n if (!currentWallet) {\n throw new WalletNotConnectedError('No wallet is connected.');\n }\n\n const signerAccount = signTransactionArgs.account ?? currentAccount;\n if (!signerAccount) {\n throw new WalletNoAccountSelectedError(\n 'No wallet account is selected to sign the transaction with.',\n );\n }\n\n if (!currentWallet.features['iota:signTransaction']) {\n throw new WalletFeatureNotSupportedError(\n \"This wallet doesn't support the `signTransaction` feature.\",\n );\n }\n\n const chain = signTransactionArgs.chain ?? currentChain ?? signerAccount?.chains[0];\n\n const { signature, bytes } = await signTransaction(currentWallet, {\n ...signTransactionArgs,\n transaction: {\n async toJSON() {\n return typeof transaction === 'string'\n ? transaction\n : await transaction.toJSON({\n supportedIntents,\n client,\n });\n },\n },\n account: signerAccount,\n chain,\n });\n\n const result = await executeTransaction({ bytes, signature });\n\n let effects: string;\n\n if ('effects' in result && result.effects?.bcs) {\n effects = result.effects.bcs;\n } else if ('rawEffects' in result) {\n effects = toBase64(new Uint8Array(result.rawEffects!));\n } else {\n throw new Error('Could not parse effects from transaction result.');\n }\n\n reportTransactionEffects({ effects, account: signerAccount, chain });\n\n if (signTransactionArgs.waitForTransaction && 'digest' in result) {\n await client.waitForTransaction({\n digest: result.digest,\n });\n }\n\n return result as Result;\n },\n ...mutationOptions,\n });\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { toBase64 } from '@iota/iota-sdk/utils';\nimport type { IotaReportTransactionEffectsInput } from '@iota/wallet-standard';\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { walletMutationKeys } from '../../constants/walletMutationKeys.js';\nimport type { WalletFeatureNotSupportedError } from '../../errors/walletErrors.js';\nimport {\n WalletNoAccountSelectedError,\n WalletNotConnectedError,\n} from '../../errors/walletErrors.js';\nimport type { PartialBy } from '../../types/utilityTypes.js';\nimport { useCurrentAccount } from './useCurrentAccount.js';\nimport { useCurrentWallet } from './useCurrentWallet.js';\n\ntype UseReportTransactionEffectsArgs = Omit<\n PartialBy<IotaReportTransactionEffectsInput, 'account' | 'chain'>,\n 'effects'\n> & {\n effects: string | number[];\n};\n\ntype UseReportTransactionEffectsError =\n | WalletFeatureNotSupportedError\n | WalletNoAccountSelectedError\n | WalletNotConnectedError\n | Error;\n\ntype UseReportTransactionEffectsMutationOptions = Omit<\n UseMutationOptions<\n void,\n UseReportTransactionEffectsError,\n UseReportTransactionEffectsArgs,\n unknown\n >,\n 'mutationFn'\n>;\n\n/**\n * Mutation hook for prompting the user to sign a message.\n */\nexport function useReportTransactionEffects({\n mutationKey,\n ...mutationOptions\n}: UseReportTransactionEffectsMutationOptions = {}): UseMutationResult<\n void,\n UseReportTransactionEffectsError,\n UseReportTransactionEffectsArgs\n> {\n const { currentWallet } = useCurrentWallet();\n const currentAccount = useCurrentAccount();\n\n return useMutation({\n mutationKey: walletMutationKeys.reportTransactionEffects(mutationKey),\n mutationFn: async ({\n effects,\n chain = currentWallet?.chains[0],\n account = currentAccount,\n }) => {\n if (!currentWallet) {\n throw new WalletNotConnectedError('No wallet is connected.');\n }\n\n if (!account) {\n throw new WalletNoAccountSelectedError(\n 'No wallet account is selected to report transaction effects for',\n );\n }\n\n const reportTransactionEffectsFeature =\n currentWallet.features['iota:reportTransactionEffects'];\n\n if (reportTransactionEffectsFeature) {\n return await reportTransactionEffectsFeature.reportTransactionEffects({\n effects: Array.isArray(effects) ? toBase64(new Uint8Array(effects)) : effects,\n account,\n chain: chain ?? currentWallet?.chains[0],\n });\n }\n },\n ...mutationOptions,\n });\n}\n", "// Copyright (c) 2025 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ChainType } from '@iota/iota-sdk/client';\nimport { useWalletStore } from './useWalletStore.js';\n\n/**\n * Retrieves the chain the dapp is configured with, if any.\n */\nexport function useCurrentChain(): ChainType | undefined {\n return useWalletStore((state) => state.chain);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type {\n IotaSignPersonalMessageInput,\n IotaSignPersonalMessageOutput,\n} from '@iota/wallet-standard';\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport {\n WalletFeatureNotSupportedError,\n WalletNoAccountSelectedError,\n WalletNotConnectedError,\n} from '../..//errors/walletErrors.js';\nimport { walletMutationKeys } from '../../constants/walletMutationKeys.js';\nimport type { PartialBy } from '../../types/utilityTypes.js';\nimport { useCurrentAccount } from './useCurrentAccount.js';\nimport { useCurrentWallet } from './useCurrentWallet.js';\n\ntype UseSignPersonalMessageArgs = PartialBy<IotaSignPersonalMessageInput, 'account'>;\n\ntype UseSignPersonalMessageResult = IotaSignPersonalMessageOutput;\n\ntype UseSignPersonalMessageError =\n | WalletFeatureNotSupportedError\n | WalletNoAccountSelectedError\n | WalletNotConnectedError\n | Error;\n\ntype UseSignPersonalMessageMutationOptions = Omit<\n UseMutationOptions<\n UseSignPersonalMessageResult,\n UseSignPersonalMessageError,\n UseSignPersonalMessageArgs,\n unknown\n >,\n 'mutationFn'\n>;\n\n/**\n * Mutation hook for prompting the user to sign a message.\n */\nexport function useSignPersonalMessage({\n mutationKey,\n ...mutationOptions\n}: UseSignPersonalMessageMutationOptions = {}): UseMutationResult<\n UseSignPersonalMessageResult,\n UseSignPersonalMessageError,\n UseSignPersonalMessageArgs\n> {\n const { currentWallet } = useCurrentWallet();\n const currentAccount = useCurrentAccount();\n\n return useMutation({\n mutationKey: walletMutationKeys.signPersonalMessage(mutationKey),\n mutationFn: async (signPersonalMessageArgs) => {\n if (!currentWallet) {\n throw new WalletNotConnectedError('No wallet is connected.');\n }\n\n const signPersonalMessageFeature = currentWallet.features['iota:signPersonalMessage'];\n if (!signPersonalMessageFeature) {\n throw new WalletFeatureNotSupportedError(\n \"This wallet doesn't support the `signPersonalMessage` feature.\",\n );\n }\n\n const signerAccount = signPersonalMessageArgs.account ?? currentAccount;\n if (!signerAccount) {\n throw new WalletNoAccountSelectedError(\n 'No wallet account is selected to sign the personal message with.',\n );\n }\n\n return await signPersonalMessageFeature.signPersonalMessage({\n ...signPersonalMessageArgs,\n account: signerAccount,\n });\n },\n ...mutationOptions,\n });\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Transaction } from '@iota/iota-sdk/transactions';\nimport { signTransaction } from '@iota/wallet-standard';\nimport type { SignedTransaction, IotaSignTransactionInput } from '@iota/wallet-standard';\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { walletMutationKeys } from '../../constants/walletMutationKeys.js';\nimport {\n WalletFeatureNotSupportedError,\n WalletNoAccountSelectedError,\n WalletNotConnectedError,\n} from '../../errors/walletErrors.js';\nimport type { PartialBy } from '../../types/utilityTypes.js';\nimport { useIotaClient } from '../useIotaClient.js';\nimport { useCurrentAccount } from './useCurrentAccount.js';\nimport { useCurrentWallet } from './useCurrentWallet.js';\nimport { useReportTransactionEffects } from './useReportTransactionEffects.js';\n\ntype UseSignTransactionArgs = PartialBy<\n Omit<IotaSignTransactionInput, 'transaction'>,\n 'account' | 'chain'\n> & {\n transaction: Transaction | string;\n};\n\ninterface UseSignTransactionResult extends SignedTransaction {\n reportTransactionEffects: (effects: string) => void;\n}\n\ntype UseSignTransactionError =\n | WalletFeatureNotSupportedError\n | WalletNoAccountSelectedError\n | WalletNotConnectedError\n | Error;\n\ntype UseSignTransactionMutationOptions = Omit<\n UseMutationOptions<\n UseSignTransactionResult,\n UseSignTransactionError,\n UseSignTransactionArgs,\n unknown\n >,\n 'mutationFn'\n>;\n\n/**\n * Mutation hook for prompting the user to sign a transaction.\n */\nexport function useSignTransaction({\n mutationKey,\n ...mutationOptions\n}: UseSignTransactionMutationOptions = {}): UseMutationResult<\n UseSignTransactionResult,\n UseSignTransactionError,\n UseSignTransactionArgs\n> {\n const { currentWallet } = useCurrentWallet();\n const currentAccount = useCurrentAccount();\n const client = useIotaClient();\n\n const { mutate: reportTransactionEffects } = useReportTransactionEffects();\n\n return useMutation({\n mutationKey: walletMutationKeys.signTransaction(mutationKey),\n mutationFn: async ({ transaction, ...signTransactionArgs }) => {\n if (!currentWallet) {\n throw new WalletNotConnectedError('No wallet is connected.');\n }\n\n const signerAccount = signTransactionArgs.account ?? currentAccount;\n if (!signerAccount) {\n throw new WalletNoAccountSelectedError(\n 'No wallet account is selected to sign the transaction with.',\n );\n }\n\n if (!currentWallet.features['iota:signTransaction']) {\n throw new WalletFeatureNotSupportedError(\n \"This wallet doesn't support the `signTransaction` feature.\",\n );\n }\n\n const { bytes, signature } = await signTransaction(currentWallet, {\n ...signTransactionArgs,\n transaction: {\n toJSON: async () => {\n return typeof transaction === 'string'\n ? transaction\n : await transaction.toJSON({\n supportedIntents: [],\n client,\n });\n },\n },\n account: signerAccount,\n chain: signTransactionArgs.chain ?? signerAccount.chains[0],\n });\n\n return {\n bytes,\n signature,\n reportTransactionEffects: (effects) => {\n reportTransactionEffects({\n effects,\n account: signerAccount,\n chain: signTransactionArgs.chain ?? signerAccount.chains[0],\n });\n },\n };\n },\n ...mutationOptions,\n });\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ThemeVars } from './themeContract.js';\n\nexport const darkTheme: ThemeVars = {\n blurs: {\n modalOverlay: 'blur(12px)',\n },\n backgroundColors: {\n primaryButton: '#253041',\n primaryButtonHover: '#313D50',\n outlineButtonHover: '#313D50',\n modalOverlay: 'rgba(0, 47, 109, 0.72)',\n modalPrimary: '#0f141c',\n modalSecondary: '#171d26',\n iconButton: 'transparent',\n dropdownMenu: '#0f141c',\n dropdownMenuSeparator: '#bed8ff14',\n walletItemSelected: 'rgba(190, 216, 255, 0.12)',\n walletItemHover: 'rgba(190, 216, 255, 0.06)',\n scrollThumb: '#3c4656',\n },\n borderColors: {\n outlineButton: '#8892A1',\n },\n colors: {\n primaryButton: '#E3EAF6',\n outlineButtonHover: '#171D26',\n iconButton: '#E3EAF6',\n body: '#E3EAF6',\n bodyMuted: '#8892A1',\n bodyDanger: '#FFB0BE',\n },\n radii: {\n small: '6px',\n medium: '8px',\n large: '12px',\n xlarge: '16px',\n full: '120px',\n },\n fontWeights: {\n normal: '400',\n medium: '500',\n bold: '600',\n },\n fontSizes: {\n small: '14px',\n medium: '16px',\n large: '18px',\n xlarge: '20px',\n },\n typography: {\n fontFamily:\n 'ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"',\n fontStyle: 'normal',\n lineHeight: '24px',\n letterSpacing: '0.1px',\n },\n spacing: {\n xxsmall: '4px',\n xsmall: '8px',\n small: '12px',\n medium: '16px',\n large: '24px',\n xlarge: '32px',\n },\n};\n"],
5
+ "mappings": "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",
6
6
  "names": ["import_clsx", "import_react", "import_react", "import_wallet_standard", "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_jsx_runtime", "clsx", "import_react_slot", "import_clsx", "import_react", "import_createRuntimeFn", "_7a468", "import_jsx_runtime", "clsx", "import_react_slot", "import_clsx", "import_react", "import_createRuntimeFn", "_7a468", "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", "icon", "container", "walletIcon", "import_jsx_runtime", "container", "import_jsx_runtime", "open", "clsx", "import_clsx", "import_react_query", "connectionStatus", "import_react_query", "import_jsx_runtime", "import_jsx_runtime", "import_client", "import_react_query", "import_react", "import_react", "import_jsx_runtime", "createClient", "import_react", "import_jsx_runtime", "clsx", "import_jsx_runtime", "import_react", "import_react_query", "import_react", "wallet", "import_utils", "import_wallet_standard", "import_react", "import_react", "import_wallet_standard", "import_react", "import_zustand", "connectionStatus", "import_jsx_runtime", "import_jsx_runtime", "import_react_query", "import_react_query", "import_react_query", "import_react", "import_react_query", "import_utils", "import_wallet_standard", "import_react_query", "import_utils", "import_react_query", "import_react_query", "import_wallet_standard", "import_react_query"]
7
7
  }