+
+
+ {t('partnership.text')}
+
+ {t('partnership.watch')}
+
+
+
+ {tabs.map((tab) => (
+
+ ))}
+
+
+
+ {match(currentTab)
+ .with('ensv2', () => (
+ <>
+
+ {t('title.landing')}
+
+ {t('title.landing')}
+ {/** @ts-expect-error styled-components don't know how to inherit types */}
+ {t('caption.ensv2')}
+ >
+ ))
+ .with('migrations', () => (
+ <>
+
+ {t('title.migration')}
+
+ {t('title.migration')}
+ {/** @ts-expect-error styled-components don't know how to inherit types */}
+ {t('caption.migration')}
+ >
+ ))
+ .with('extension', () => (
+ <>
+
+
+ {t('title.extension.part1')} {t('title.extension.part2')}
+
+
+
+ {t('title.extension.part1')} {t('title.extension.part2')}
+
+ >
+ ))
+ .exhaustive()}
+
+ {match(currentTab)
+ .with('ensv2', () => (
+
+ ))
+ .with('migrations', () => (
+
+ ))
+ .with('extension', () => (
+
+ ))
+ .exhaustive()}
+
+
+
+
+ {match(currentTab)
+ .with('ensv2', () => (
+ <>
+
+
+
+
+ {t('accessible.title')}
+
+ {t('accessible.caption')}
+
+
+
+
+
+ {t('accessible.gas.title')}
+
+ {t('accessible.gas.text')}
+
+
+
+
+ {t('accessible.control.title')}
+
+ {t('accessible.control.text')}
+
+
+
+
+ {t('accessible.multichain.title')}
+
+ {t('accessible.multichain.text')}
+
+
+
+
+ {t('get-started.title')}
+
+
+
+
+
+ {t('get-started.upgrade.title')}
+
+ {t('get-started.upgrade.caption')}
+
+
+
+
+
+
+ {t('announcement.title')}
+
+
+
+
+
+
+
+ >
+ ))
+ .with('migrations', () => (
+ <>
+ {isConnected ? (
+
+ ) : null}
+
+
+ {t('approval-benefits.title')}
+
+
+
+
+
+ {t('approval-benefits.migration.title')}
+
+ {t('approval-benefits.migration.caption')}
+
+
+
+
+ {t('approval-benefits.no-gas-cost.title')}
+
+ {t('approval-benefits.no-gas-cost.caption')}
+
+
+
+ >
+ ))
+ .otherwise(() => (
+ bloop
+ ))}
+
+
+
+ >
+ )
+}
diff --git a/src/transaction-flow/transaction/approveNameWrapperForMigration.ts b/src/transaction-flow/transaction/approveNameWrapperForMigration.ts
new file mode 100644
index 000000000..5e3e85bd9
--- /dev/null
+++ b/src/transaction-flow/transaction/approveNameWrapperForMigration.ts
@@ -0,0 +1,52 @@
+import type { TFunction } from 'react-i18next'
+import { Address, encodeFunctionData } from 'viem'
+
+import {
+ getChainContractAddress,
+ registrySetApprovalForAllSnippet,
+} from '@ensdomains/ensjs/contracts'
+
+import { Transaction, TransactionDisplayItem, TransactionFunctionParameters } from '@app/types'
+
+type Data = { address: Address }
+
+const displayItems = (
+ { address }: Data,
+ t: TFunction<'translation', undefined>,
+): TransactionDisplayItem[] => [
+ {
+ label: 'address',
+ value: address,
+ type: 'address',
+ },
+ {
+ label: 'action',
+ value: t('transaction.description.approveNameWrapper'),
+ },
+ {
+ label: 'info',
+ value: t('transaction.info.approveNameWrapper'),
+ },
+]
+
+const transaction = async ({ client }: TransactionFunctionParameters