## Problem solved
Short description of the bug fixed or feature added
<!-- start pr-codex -->
---
## PR-Codex overview
This PR updates the user operation signing process and renames `smartWallet` to `wallet` for consistency.
### Detailed summary
- Updated user operation signing to be asynchronous
- Renamed `smartWallet` to `wallet` for consistency
- Changed `addAdmin` import to `addSessionKey`
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`
<!-- end pr-codex -->
FIXES: DASH-210
<!-- start pr-codex -->
## PR-Codex overview
The focus of this PR is to fix the baseURI extraction logic in the `lazy-mint-form.tsx` file.
### Detailed summary
- Removed unnecessary `upload` function calls for image and animation URLs
- Updated data processing logic in `LazyMintNftForm`
- Refactored `getBaseUriFromBatch` function for URI extraction
- Added tests for `getBaseUriFromBatch` function
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`
<!-- end pr-codex -->
## Problem solved
Short description of the bug fixed or feature added
<!-- start pr-codex -->
---
## PR-Codex overview
This PR adds functionality to upload images and animations for lazy minting NFTs in the `LazyMintNftForm` component.
### Detailed summary
- Added `upload` import from `thirdweb/storage`.
- Modified form submission to upload image and animation URLs.
- Updated data handling for image and animation URLs.
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`
<!-- end pr-codex -->
## Problem solved
Short description of the bug fixed or feature added
<!-- start pr-codex -->
---
## PR-Codex overview
This PR enhances the `useNftDrawerTabs` functionality by allowing updates to metadata in addition to token URI.
### Detailed summary
- Updated condition to include support for updating metadata
- Added option to update metadata in the tabs if supported
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`
<!-- end pr-codex -->
## Problem solved
Short description of the bug fixed or feature added
<!-- start pr-codex -->
---
## PR-Codex overview
The focus of this PR is to update the description in the Auth page of the `playground-web` app to provide a more detailed explanation of user authentication using wallets.
### Detailed summary
- Updated the description in the Auth page to explain user authentication using wallets
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`
<!-- end pr-codex -->
## Problem solved
Before:
<img width="747" alt="image" src="https://github.com/user-attachments/assets/ea60b693-70f9-4a20-8d31-246dc428e580">
After:
<img width="746" alt="image" src="https://github.com/user-attachments/assets/58fd622f-0aad-403f-976e-d06ac01ae0e2">
<!-- start pr-codex -->
---
## PR-Codex overview
This PR updates the `formatError` function in `interactive-abi-function.tsx` to handle different error objects more effectively.
### Detailed summary
- Improved error handling in `formatError` function
- Added a check for `error.message` property
- Removed unnecessary type casting for `error` object
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`
<!-- end pr-codex -->
## Problem solved
Short description of the bug fixed or feature added
<!-- start pr-codex -->
---
## PR-Codex overview
The focus of this PR is to update the logic in `WalletDistributionChartCard.tsx` to correctly handle chart data for different wallet types.
### Detailed summary
- Updated logic to correctly handle chart data for different wallet types
- Adjusted how data is set in `_chartDataMap`
- Refactored the mapping of chart data to include a return statement
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`
<!-- end pr-codex -->
<!-- start pr-codex -->
## PR-Codex overview
This PR updates the Unity SDK v5 documentation with new features, migration guide, and Ecosystem Wallet details.
### Detailed summary
- Updated Unity SDK v5 documentation with Ecosystem Wallet info
- Migration guide from Unity SDK v4 to v5
- Added Ecosystem Wallet login methods
- Enhanced Ecosystem Wallet details and API usage
- Improved contract interactions and wallet management in Unity SDK v5
> The following files were skipped due to too many changes: `apps/portal/src/app/unity/v5/migration-guide/page.mdx`, `apps/portal/src/app/dotnet/wallets/providers/ecosystem-wallet/page.mdx`
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`
<!-- end pr-codex -->
## Problem solved
Short description of the bug fixed or feature added
<!-- start pr-codex -->
---
## PR-Codex overview
The focus of this PR is to update the link for the gaming solution page from a specific Unreal Engine quickstart to a more general engine-express page.
### Detailed summary
- Updated the href link for the gaming solution page to a more general engine-express URL.
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`
<!-- end pr-codex -->
## Problem solved
Short description of the bug fixed or feature added
<!-- start pr-codex -->
---
## PR-Codex overview
This PR improves the handling of local input state in the `AddressInput` component by introducing a new local state variable `_localInput`.
### Detailed summary
- Introduces `_localInput` state variable using `useState`
- Modifies `localInput` assignment logic to consider `_localInput`
- Updates usage of `localInput` in the component to reflect the changes
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`
<!-- end pr-codex -->
<!-- start pr-codex -->
## PR-Codex overview
This PR enhances analytics data handling in the dashboard:
### Detailed summary
- Added `THIRDWEB_ANALYTICS_API_HOST`
- Modified `createWalletStatsStub` structure
- Updated API handling for analytics data
- Refactored components for improved data display
> The following files were skipped due to too many changes: `apps/dashboard/src/@3rdweb-sdk/react/hooks/useApi.ts`
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`
<!-- end pr-codex -->
<!-- start pr-codex -->
## PR-Codex overview
This PR adds a new feature to simulate contract transactions before execution, enhancing user experience and safety.
### Detailed summary
- Added `useSimulateTransaction` hook for simulating transactions
- Implemented simulation functionality in `InteractiveAbiFunction`
- Added simulation button and logic for contract functions
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`
<!-- end pr-codex -->
## Problem solved
Short description of the bug fixed or feature added
<!-- start pr-codex -->
---
## PR-Codex overview
The focus of this PR is to update UI components, add a new import contract modal, and improve the network select dropdown.
### Detailed summary
- Updated table UI styles
- Added `ShowMoreButton` component with `Button` and `ChevronDownIcon`
- Improved `NetworkSelectDropdown` with `Select` components
- Added `ImportModal` with form validation and submission logic
> The following files were skipped due to too many changes: `apps/dashboard/src/components/contract-components/import-contract/modal.tsx`, `apps/dashboard/src/components/contract-components/tables/deployed-contracts.tsx`
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`
<!-- end pr-codex -->
<!-- start pr-codex -->
## PR-Codex overview
This PR updates the `ethers` package version across multiple packages and introduces new exports in the `ethers5.ts` and `ethers6.ts` files.
### Detailed summary
- Updated `ethers` package version to `"5.7.2"`
- Added new exports in `ethers5.ts` and `ethers6.ts`
- Modified imports in `provider-setup.tsx` to use updated exports
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`
<!-- end pr-codex -->
## Problem solved
Short description of the bug fixed or feature added
<!-- start pr-codex -->
---
## PR-Codex overview
The focus of this PR is to update the import of `ModularExt` from "thirdweb/extensions/modular" to "thirdweb/modules".
### Detailed summary
- Updated import of `ModularExt` from "thirdweb/extensions/modular" to "thirdweb/modules"
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`
<!-- end pr-codex -->
## Problem solved
Short description of the bug fixed or feature added
<!-- start pr-codex -->
---
## PR-Codex overview
This PR introduces changes related to adding a `shadowColor` prop, refactoring table components, and updating button stories.
### Detailed summary
- Added `shadowColor` prop to components
- Refactored table components with `TableContainer`
- Updated button stories import path
> The following files were skipped due to too many changes: `apps/dashboard/src/@/components/ui/table.stories.tsx`, `apps/dashboard/src/@/components/ui/table.tsx`, `apps/dashboard/src/components/shared/TWTable.tsx`, `apps/dashboard/src/app/(dashboard)/dashboard/connect/ecosystem/[slug]/(active)/components/server/partners-table.tsx`, `apps/dashboard/src/components/contract-components/tables/deployed-contracts.tsx`
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`
<!-- end pr-codex -->
## Problem solved
Short description of the bug fixed or feature added
<!-- start pr-codex -->
---
## PR-Codex overview
This PR removes a redirect logic for the "/login" path and updates path splitting logic in `middleware.ts`.
### Detailed summary
- Removed redirect logic for "/login" path
- Updated path splitting logic in `middleware.ts`
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`
<!-- end pr-codex -->
<!-- start pr-codex -->
## PR-Codex overview
The focus of this PR is to introduce the `ModularExt` extension and refactor the `detectedModularExtension` logic in the `useContractRouteConfig` hook.
### Detailed summary
- Added `ModularExt` import
- Refactored `detectedModularExtension` logic to `isModularCore`
- Updated `isEnabled` logic for 'Modules' section to use `isModularCore`
- Removed unnecessary code related to `detectedModularExtension`
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`
<!-- end pr-codex -->
<!-- start pr-codex -->
## PR-Codex overview
This PR removes the usage of `useRouter` from `contract-table` component and updates the onClick behavior to always open links in a new tab.
### Detailed summary
- Removed `useRouter` import
- Updated onClick behavior to open links in a new tab
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`
<!-- end pr-codex -->
<!-- start pr-codex -->
## PR-Codex overview
The focus of this PR is to add support for additional ERC721 metadata and claim conditions, optimize contract checklist components, and improve feature detection.
### Detailed summary
- Added support for `isSharedMetadataSupported` and `getClaimConditions` in ERC721.
- Optimized contract checklist component for ERC721, ERC1155, and ERC20 contracts.
- Improved feature detection for lazy minting, claim conditions, and account factory creation.
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`
<!-- end pr-codex -->
<!-- start pr-codex -->
## PR-Codex overview
This PR adds support for checking if specific ERC721 and ERC1155 methods are supported by contracts. It also updates function exports and improves code consistency.
### Detailed summary
- Added functions to check method support for ERC721 and ERC1155 contracts
- Updated function exports for minting, updating metadata, and token URI
- Improved code consistency and clarity in various files
> The following files were skipped due to too many changes: `packages/thirdweb/src/extensions/erc721/read/getNFTs.ts`, `packages/thirdweb/src/extensions/erc1155/write/mintAdditionalSupplyTo.ts`, `apps/dashboard/src/contract-ui/tabs/claim-conditions/page.tsx`, `packages/thirdweb/src/exports/extensions/erc721.ts`, `apps/dashboard/src/contract-ui/tabs/claim-conditions/components/claim-conditions.tsx`, `apps/dashboard/src/contract-ui/tabs/nfts/components/table.tsx`, `packages/thirdweb/src/extensions/erc1155/drops/write/updateMetadata.ts`, `packages/thirdweb/src/extensions/erc721/drops/write/updateMetadata.ts`, `apps/dashboard/src/contract-ui/hooks/useRouteConfig.tsx`, `apps/dashboard/src/core-ui/nft-drawer/useNftDrawerTabs.tsx`, `apps/dashboard/src/contract-ui/tabs/nfts/page.tsx`
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`
<!-- end pr-codex -->
## Problem solved
Short description of the bug fixed or feature added
<!-- start pr-codex -->
---
## PR-Codex overview
This PR enhances UI components in various dashboard sections:
- Updates alert styles
- Refactors account factories display
- Improves contract cells rendering
- Adds tab navigation to Smart Wallets
### Detailed summary
- Updated alert styles with new variants
- Refactored account factory display with skeleton loading
- Improved rendering of contract cells with skeleton loading and links
- Added tab navigation to Smart Wallets section
> The following files were skipped due to too many changes: `apps/dashboard/src/app/team/[team_slug]/[project_slug]/connect/account-abstraction/AAFooterSection.tsx`, `apps/dashboard/src/pages/dashboard/connect/account-abstraction.tsx`
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`
<!-- end pr-codex -->
<img width="1164" alt="image" src="https://github.com/user-attachments/assets/3a144686-c965-466f-90d3-b95eb1b05e45">
<!-- start pr-codex -->
---
## PR-Codex overview
The focus of this PR is to add a CSS class to limit the height and enable horizontal overflow in the `DialogContent` component of the Create Ticket form.
### Detailed summary
- Added `className="max-h-full overflow-x-auto"` to the `DialogContent` component in `create-ticket.client.tsx`.
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`
<!-- end pr-codex -->
## Problem solved
Short description of the bug fixed or feature added
<!-- start pr-codex -->
---
## PR-Codex overview
This PR focuses on updating the analytics feature for team projects.
### Detailed summary
- Updated links and routes related to analytics feature
- Renamed functions for clarity
- Refactored components for analytics visualization
- Added new UI components for analytics dashboard
> The following files were skipped due to too many changes: `apps/dashboard/src/app/team/[team_slug]/[project_slug]/connect/analytics/_components/ConnectSDKCard.tsx`, `apps/dashboard/src/app/team/[team_slug]/[project_slug]/connect/analytics/ConnectAnalyticsDashboard.tsx`, `apps/dashboard/src/pages/dashboard/connect/analytics.tsx`
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`
<!-- end pr-codex -->
## Problem solved
Short description of the bug fixed or feature added
<!-- start pr-codex -->
---
## PR-Codex overview
The focus of this PR is to enhance the `PayConfig` component and update related components to use `clientId` instead of `apiKey.key`.
### Detailed summary
- Updated `PayConfig` to use `clientId` instead of `apiKey.key`
- Updated `PayAnalytics` to accept `clientId` instead of `apiKey`
- Updated `WebhooksPage` to use `clientId` instead of `apiKey.key`
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`
<!-- end pr-codex -->
<!-- start pr-codex -->
## PR-Codex overview
The focus of this PR is to update the NFT overview page to include an `isErc721` flag and adjust features detection in NFT drawer tabs.
### Detailed summary
- Added `isErc721` flag to NFT overview page props
- Adjusted features detection in NFT drawer tabs for ERC20
- Refactored feature detection in contract route configuration
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`
<!-- end pr-codex -->
### TL;DR
Enhanced ERC4337 support with new functions and improved contract detection.
### What changed?
- Added new ERC4337 extension functions for account management and permissions.
- Implemented support checks for various ERC4337 functions.
- Updated contract UI hooks to use new detection methods for ERC4337 features.
- Removed redundant code and simplified contract UI components.
- Improved type safety and consistency across ERC4337-related functions.
### How to test?
1. Test the new ERC4337 functions in a development environment.
2. Verify that the contract UI correctly detects and displays ERC4337 features.
3. Check that account management, permissions, and factory functionalities work as expected.
4. Ensure that the support checks for ERC4337 functions return correct results.
### Why make this change?
This change improves the detection and support for ERC4337 smart contract accounts. It enhances the developer experience by providing more granular control over account features and permissions. The updates also streamline the codebase, making it easier to maintain and extend ERC4337 functionality in the future.
---
<!-- start pr-codex -->
---
## PR-Codex overview
This PR updates account permissions and extensions in the dashboard.
### Detailed summary
- Updated imports and components in `AccountPermissionsPage`, `AccountsPage`, and `AccountPage`.
- Added support for `isAddAdminSupported`, `isAddSessionKeySupported`, `isRemoveSessionKeySupported` functions in ERC4337 extensions.
- Added support for `isGetAllActiveSignersSupported`, `isGetAllAdminsSupported`, `isGetAllSignersSupported`, `isIsActiveSignerSupported` functions in account permissions.
> The following files were skipped due to too many changes: `packages/thirdweb/src/exports/extensions/erc4337.ts`, `apps/dashboard/src/contract-ui/hooks/useRouteConfig.tsx`
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`
<!-- end pr-codex -->
### TL;DR
Refactored NFT-related components and hooks to improve code organization and reduce redundancy.
### What changed?
- Consolidated imports from `thirdweb/extensions` modules
- Removed redundant contract creation and feature detection logic
- Updated component props to directly pass `ThirdwebContract` instead of separate address and chain ID
- Simplified conditional rendering based on contract type (ERC721 vs ERC1155)
- Moved some feature detection logic to parent components
- Updated `useNFTDrawerTabs` hook to use new contract prop structure
### How to test?
1. Navigate to the NFT management pages in the dashboard
2. Verify that all NFT-related functionality (minting, burning, transferring, etc.) works as expected for both ERC721 and ERC1155 tokens
3. Check that the NFT drawer displays the correct tabs and options based on the contract type and user permissions
4. Ensure that claim conditions and multi-phase claim conditions are correctly detected and displayed
### Why make this change?
This refactoring improves code maintainability and reduces duplication. By centralizing contract-related logic and simplifying component interfaces, it becomes easier to manage and extend NFT functionality across the dashboard. The changes also prepare the codebase for potential future enhancements and make it more consistent with other parts of the application.
---
<!-- start pr-codex -->
---
## PR-Codex overview
This PR introduces support for multi-phase claims in ERC20, ERC721, and ERC1155 contracts across various components.
### Detailed summary
- Added `isMultiPhase` boolean to support multi-phase claims in ERC20, ERC721, and ERC1155 contracts.
- Updated components to handle `isMultiPhase` property efficiently.
- Refactored code to remove unnecessary functions and imports.
> The following files were skipped due to too many changes: `apps/dashboard/src/contract-ui/tabs/nfts/components/airdrop-tab.tsx`, `apps/dashboard/src/core-ui/nft-drawer/useNftDrawerTabs.tsx`, `apps/dashboard/src/contract-ui/hooks/useRouteConfig.tsx`
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`
<!-- end pr-codex -->
### TL;DR
Refactored contract UI routing and improved permissions detection.
### What changed?
- Removed `contractAddress` parameter from `useContractRouteConfig` function
- Implemented new logic for detecting permissions and enumerable permissions
- Simplified component rendering by removing unnecessary conditional checks
- Updated `ContractOverviewPage` to use the new permissions detection
- Refactored route configurations to use the contract prop directly
- Adjusted the `Inner` component to reflect these changes
### How to test?
1. Navigate to various contract pages and ensure all tabs and components load correctly
2. Test contracts with different permission configurations to verify accurate detection
3. Check that the overview page displays the correct permissions information
4. Verify that all contract-related components render without errors
### Why make this change?
This refactoring improves code efficiency and readability while enhancing the accuracy of permissions detection. By simplifying the routing logic and removing redundant checks, we've made the codebase more maintainable and reduced the potential for errors. The new permissions detection method provides a more reliable way to determine contract capabilities, ensuring that users see accurate information about contract features and permissions.
---
<!-- start pr-codex -->
---
## PR-Codex overview
The focus of this PR is to refactor and optimize the contract route configuration logic.
### Detailed summary
- Refactored `useContractRouteConfig` to simplify and optimize contract route configurations
- Removed unnecessary dependencies and streamlined the logic for permissions detection
- Updated usage of contract address to use `props.contract.address` consistently throughout
- Improved code readability and maintainability in the contract UI components
> The following files were skipped due to too many changes: `apps/dashboard/src/contract-ui/hooks/useRouteConfig.tsx`
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`
<!-- end pr-codex -->
### TL;DR
Refactored wallet NFT handling and improved font loading across the dashboard.
### What changed?
- Updated `useWalletNFTs` hook to accept `chainId` as a parameter
- Modified `NftsOwned` component to use contract chain ID
- Refactored font loading in `layout.tsx` and `MiniPlayground.tsx`
- Updated NFT data structures to use `id` instead of `tokenId`
- Adjusted NFT card rendering to include chain ID and contract address
- Modified Alchemy, Moralis, and SimpleHash NFT transformations
### How to test?
1. Test the wallet NFT fetching functionality with different chain IDs
2. Verify that NFT cards display correctly in the dashboard
3. Check font loading performance in various components
4. Ensure that NFT details are correctly displayed in listings and overview pages
### Why make this change?
This change improves the consistency of NFT handling across the dashboard, enhances font loading performance, and provides better support for multi-chain NFT display. It also aligns the NFT data structure with the latest ThirdWeb SDK conventions, using `id` instead of `tokenId`.
---
<!-- start pr-codex -->
## PR-Codex overview
This PR focuses on updating imports and types related to ABI parameters in the codebase.
### Detailed summary
- Updated imports from `"@thirdweb-dev/sdk"` to `"abitype"`
- Changed types to use `AbiParameter` instead of previous types like `Abi`, `AbiFunction`, `AbiEvent`
- Fixed type errors and updated type annotations throughout the codebase
> The following files were skipped due to too many changes: `apps/dashboard/src/components/contract-functions/interactive-abi-function.tsx`, `apps/dashboard/src/contract-ui/tabs/overview/components/NFTDetails.tsx`, `packages/thirdweb/src/extensions/thirdweb/read/contractType.ts`, `apps/dashboard/src/contract-ui/tabs/code/components/code-overview.tsx`, `apps/dashboard/src/components/contract-components/contract-deploy-form/custom-contract.tsx`, `apps/dashboard/src/components/contract-components/contract-publish-form/index.tsx`, `apps/dashboard/src/contract-ui/tabs/analytics/page.tsx`, `apps/dashboard/src/contract-ui/tabs/overview/page.tsx`, `apps/dashboard/src/components/contract-components/hooks.ts`, `apps/dashboard/src/components/contract-functions/contract-function.tsx`, `apps/dashboard/src/contract-ui/hooks/useRouteConfig.tsx`
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`
<!-- end pr-codex -->
## Problem solved
Short description of the bug fixed or feature added
<!-- start pr-codex -->
---
## PR-Codex overview
This PR focuses on restructuring chart components and adding storybook stories for analytics dashboard components.
### Detailed summary
- Deleted `DocsButton.tsx` and `useApi.ts`
- Updated global CSS variables for charts
- Modified chart component styles and colors
- Refactored story utility functions
- Added new chart components and stories
- Implemented skeleton and loading states for charts
> The following files were skipped due to too many changes: `apps/dashboard/src/app/team/[team_slug]/[project_slug]/connect/analytics/ConnectAnalyticsDashboard.tsx`, `apps/dashboard/src/app/team/[team_slug]/[project_slug]/connect/analytics/_components/DailyConnectionsChartCard.tsx`, `apps/dashboard/src/app/team/[team_slug]/[project_slug]/connect/analytics/_components/WalletDistributionChartCard.tsx`, `apps/dashboard/src/app/team/[team_slug]/[project_slug]/connect/analytics/_components/WalletConnectorsChartCard.tsx`, `apps/dashboard/src/pages/dashboard/connect/analytics.tsx`
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`
<!-- end pr-codex -->
## Problem solved
Short description of the bug fixed or feature added
<!-- start pr-codex -->
---
## PR-Codex overview
This PR adds mobile viewport options to Storybook stories and updates UI components for mobile viewports.
### Detailed summary
- Added mobile viewport options to Storybook stories
- Updated UI components for mobile viewports in various settings pages and embedded wallets
- Adjusted button sizes and styles for different viewport sizes
> The following files were skipped due to too many changes: `pnpm-lock.yaml`, `apps/dashboard/src/app/team/[team_slug]/(team)/~/settings/general/Sidebar.stories.tsx`
> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`
<!-- end pr-codex -->