@0xsequence/marketplace-sdk 0.4.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/dist/{chunk-P3EQRM7K.js → chunk-5GDO4ZBC.js} +5 -4
  2. package/dist/{chunk-P3EQRM7K.js.map → chunk-5GDO4ZBC.js.map} +1 -1
  3. package/dist/{chunk-QTQH5I2E.js → chunk-EVRILXOH.js} +2 -2
  4. package/dist/chunk-EVRILXOH.js.map +1 -0
  5. package/dist/{chunk-GVDLVCR5.js → chunk-GSDUAHL3.js} +1 -1
  6. package/dist/chunk-GSDUAHL3.js.map +1 -0
  7. package/dist/{chunk-6HEMV2OR.js → chunk-IOTKCWOB.js} +890 -644
  8. package/dist/chunk-IOTKCWOB.js.map +1 -0
  9. package/dist/{chunk-AY2MZHZN.js → chunk-KNX2LER4.js} +5 -6
  10. package/dist/{chunk-PAHT6PTD.js.map → chunk-KNX2LER4.js.map} +1 -1
  11. package/dist/{chunk-SBVLWSRZ.js → chunk-LF44FCG5.js} +2 -2
  12. package/dist/{chunk-SBVLWSRZ.js.map → chunk-LF44FCG5.js.map} +1 -1
  13. package/dist/{chunk-PAHT6PTD.js → chunk-LSMQVX77.js} +5 -6
  14. package/dist/{chunk-AY2MZHZN.js.map → chunk-LSMQVX77.js.map} +1 -1
  15. package/dist/{chunk-6AYHE7ZA.js → chunk-MIYMMP2K.js} +79 -33
  16. package/dist/chunk-MIYMMP2K.js.map +1 -0
  17. package/dist/{chunk-EK5ZSW4M.js → chunk-QMO2CUNM.js} +2 -2
  18. package/dist/{chunk-L6GSYPCR.js → chunk-RZSZNVEH.js} +5 -5
  19. package/dist/{chunk-L6GSYPCR.js.map → chunk-RZSZNVEH.js.map} +1 -1
  20. package/dist/chunk-T5T6JNB2.js +171 -0
  21. package/dist/chunk-T5T6JNB2.js.map +1 -0
  22. package/dist/chunk-UPLTM63S.js +435 -0
  23. package/dist/chunk-UPLTM63S.js.map +1 -0
  24. package/dist/{chunk-Y7YO5TLE.js → chunk-XXML5K3X.js} +5 -2
  25. package/dist/chunk-XXML5K3X.js.map +1 -0
  26. package/dist/{create-config-CgtmCzvb.d.ts → create-config-8sffBvlt.d.ts} +1 -1
  27. package/dist/index.js +4 -4
  28. package/dist/react/_internal/api/index.js +2 -2
  29. package/dist/react/_internal/index.d.ts +1 -1
  30. package/dist/react/_internal/index.js +3 -3
  31. package/dist/react/_internal/wagmi/index.d.ts +1 -1
  32. package/dist/react/_internal/wagmi/index.js +2 -2
  33. package/dist/react/hooks/index.d.ts +663 -74
  34. package/dist/react/hooks/index.js +7 -7
  35. package/dist/react/index.css +17 -0
  36. package/dist/react/index.css.map +1 -1
  37. package/dist/react/index.d.ts +1 -1
  38. package/dist/react/index.js +11 -11
  39. package/dist/react/ssr/index.js +1 -1
  40. package/dist/react/ssr/index.js.map +1 -1
  41. package/dist/react/ui/components/index.css +17 -0
  42. package/dist/react/ui/components/index.css.map +1 -1
  43. package/dist/react/ui/components/index.js +11 -11
  44. package/dist/react/ui/icons/index.js +4 -4
  45. package/dist/react/ui/icons/index.js.map +1 -1
  46. package/dist/react/ui/index.css +17 -0
  47. package/dist/react/ui/index.css.map +1 -1
  48. package/dist/react/ui/index.js +11 -11
  49. package/dist/react/ui/modals/_internal/components/actionModal/index.css +22 -0
  50. package/dist/react/ui/modals/_internal/components/actionModal/index.css.map +1 -1
  51. package/dist/react/ui/modals/_internal/components/actionModal/index.d.ts +17 -9
  52. package/dist/react/ui/modals/_internal/components/actionModal/index.js +8 -4
  53. package/dist/react/ui/styles/index.d.ts +1 -1
  54. package/dist/styles/index.d.ts +1 -1
  55. package/dist/styles/index.js +2 -2
  56. package/dist/types/index.js +3 -3
  57. package/dist/utils/index.js +2 -2
  58. package/package.json +25 -25
  59. package/src/react/_internal/api/marketplace-api.ts +3 -2
  60. package/src/react/_internal/transaction-machine/execute-transaction.ts +28 -12
  61. package/src/react/_internal/transaction-machine/useTransactionMachine.ts +43 -8
  62. package/src/react/hooks/useBuyCollectable.tsx +13 -6
  63. package/src/react/hooks/useCancelOrder.tsx +14 -7
  64. package/src/react/hooks/useCreateListing.tsx +74 -10
  65. package/src/react/hooks/useCurrencies.tsx +1 -1
  66. package/src/react/hooks/useCurrencyBalance.tsx +1 -1
  67. package/src/react/hooks/useCurrencyOptions.tsx +1 -1
  68. package/src/react/hooks/useMakeOffer.tsx +73 -11
  69. package/src/react/hooks/useSell.tsx +72 -11
  70. package/src/react/ui/components/_internals/action-button/ActionButton.tsx +1 -7
  71. package/src/react/ui/components/_internals/action-button/types.ts +7 -0
  72. package/src/react/ui/components/_internals/custom-select/CustomSelect.tsx +18 -15
  73. package/src/react/ui/components/collectible-card/CollectibleCard.tsx +5 -7
  74. package/src/react/ui/components/collectible-card/Footer.tsx +5 -7
  75. package/src/react/ui/components/collectible-card/styles.css.ts +1 -1
  76. package/src/react/ui/icons/ArrowUp.tsx +3 -0
  77. package/src/react/ui/icons/Bell.tsx +3 -0
  78. package/src/react/ui/icons/CalendarIcon.tsx +3 -0
  79. package/src/react/ui/icons/DiamondEye.tsx +3 -0
  80. package/src/react/ui/icons/InfoIcon.tsx +3 -0
  81. package/src/react/ui/icons/InventoryIcon.tsx +3 -0
  82. package/src/react/ui/icons/MinusIcon.tsx +3 -0
  83. package/src/react/ui/icons/PlusIcon.tsx +3 -0
  84. package/src/react/ui/icons/PositiveCircleIcon.tsx +3 -0
  85. package/src/react/ui/modals/BuyModal/index.tsx +25 -8
  86. package/src/react/ui/modals/CreateListingModal/_store.ts +5 -2
  87. package/src/react/ui/modals/CreateListingModal/index.tsx +62 -23
  88. package/src/react/ui/modals/MakeOfferModal/_store.ts +5 -2
  89. package/src/react/ui/modals/MakeOfferModal/index.tsx +83 -65
  90. package/src/react/ui/modals/SellModal/index.tsx +107 -57
  91. package/src/react/ui/modals/TransferModal/_store.ts +1 -1
  92. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/index.tsx +4 -2
  93. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/useHandleTransfer.tsx +5 -5
  94. package/src/react/ui/modals/TransferModal/index.tsx +1 -1
  95. package/src/react/ui/modals/_internal/components/actionModal/ActionModal.tsx +29 -8
  96. package/src/react/ui/modals/_internal/components/actionModal/ErrorModal.tsx +15 -5
  97. package/src/react/ui/modals/_internal/components/actionModal/LoadingModal.tsx +15 -5
  98. package/src/react/ui/modals/_internal/components/actionModal/store.ts +6 -0
  99. package/src/react/ui/modals/_internal/components/calendar/index.tsx +1 -1
  100. package/src/react/ui/modals/_internal/components/currencyImage/index.tsx +3 -3
  101. package/src/react/ui/modals/_internal/components/currencyOptionsSelect/index.tsx +11 -10
  102. package/src/react/ui/modals/_internal/components/expirationDateSelect/index.tsx +14 -19
  103. package/src/react/ui/modals/_internal/components/priceInput/index.tsx +34 -12
  104. package/src/react/ui/modals/_internal/components/quantityInput/index.tsx +3 -3
  105. package/src/react/ui/modals/_internal/components/switchChainModal/index.tsx +7 -4
  106. package/src/react/ui/modals/_internal/components/tokenPreview/index.tsx +1 -0
  107. package/src/react/ui/modals/_internal/components/transaction-footer/index.tsx +3 -3
  108. package/src/react/ui/modals/_internal/components/transactionDetails/index.tsx +9 -5
  109. package/src/react/ui/modals/_internal/components/transactionPreview/index.tsx +4 -4
  110. package/src/react/ui/modals/_internal/components/transactionPreview/useTransactionPreviewTitle.tsx +1 -1
  111. package/src/react/ui/modals/_internal/components/transactionStatusModal/index.tsx +51 -29
  112. package/src/react/ui/modals/_internal/components/transactionStatusModal/store.ts +2 -2
  113. package/src/react/ui/modals/_internal/components/transactionStatusModal/util/getFormattedType.ts +1 -1
  114. package/src/react/ui/modals/_internal/components/transactionStatusModal/util/getMessage.ts +2 -2
  115. package/src/react/ui/modals/_internal/components/transactionStatusModal/util/getTitle.ts +6 -3
  116. package/src/react/ui/modals/_internal/components/waasFeeOptionsBox/index.tsx +146 -0
  117. package/src/react/ui/modals/_internal/components/waasFeeOptionsBox/store.ts +12 -0
  118. package/src/react/ui/modals/_internal/components/waasFeeOptionsBox/styles.css.ts +53 -0
  119. package/src/react/ui/modals/_internal/components/waasFeeOptionsSelect/WaasFeeOptionsSelect.tsx +117 -0
  120. package/src/utils/_internal/error/transaction.ts +2 -2
  121. package/src/utils/price.ts +3 -4
  122. package/tsconfig.json +1 -21
  123. package/tsconfig.tsbuildinfo +1 -1
  124. package/dist/chunk-6AYHE7ZA.js.map +0 -1
  125. package/dist/chunk-6HEMV2OR.js.map +0 -1
  126. package/dist/chunk-FFCNYF3S.js +0 -153
  127. package/dist/chunk-FFCNYF3S.js.map +0 -1
  128. package/dist/chunk-GVDLVCR5.js.map +0 -1
  129. package/dist/chunk-NMCGA2TB.js +0 -98
  130. package/dist/chunk-NMCGA2TB.js.map +0 -1
  131. package/dist/chunk-QTQH5I2E.js.map +0 -1
  132. package/dist/chunk-Y7YO5TLE.js.map +0 -1
  133. /package/dist/{chunk-EK5ZSW4M.js.map → chunk-QMO2CUNM.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/react/ui/modals/modal-provider.tsx","../src/react/ui/modals/Account/index.tsx","../src/react/ui/modals/BuyModal/index.tsx","../src/react/ui/modals/_internal/components/quantityInput/index.tsx","../src/react/ui/modals/BuyModal/_store.ts","../src/react/ui/modals/CreateListingModal/index.tsx","../src/react/hooks/useCreateListing.tsx","../src/react/ui/modals/_internal/components/actionModal/ErrorModal.tsx","../src/react/ui/modals/_internal/components/actionModal/LoadingModal.tsx","../src/react/ui/modals/_internal/components/expirationDateSelect/index.tsx","../src/react/ui/modals/_internal/components/calendarPopover/index.tsx","../src/react/ui/modals/_internal/components/calendar/index.tsx","../src/react/ui/modals/_internal/components/floorPriceText/index.tsx","../src/react/ui/modals/_internal/components/priceInput/index.tsx","../src/react/ui/modals/_internal/components/currencyImage/index.tsx","../src/react/ui/modals/_internal/components/currencyOptionsSelect/index.tsx","../src/react/ui/modals/_internal/components/tokenPreview/index.tsx","../src/react/ui/modals/_internal/components/transactionDetails/index.tsx","../src/react/ui/modals/_internal/components/transactionStatusModal/index.tsx","../src/react/ui/modals/_internal/components/transaction-footer/index.tsx","../src/react/ui/modals/_internal/components/transactionPreview/index.tsx","../src/react/ui/modals/_internal/components/timeAgo/index.tsx","../src/react/ui/modals/_internal/components/transactionStatusModal/store.ts","../src/react/ui/modals/_internal/components/transactionPreview/consts.ts","../src/react/ui/modals/_internal/components/transactionPreview/useTransactionPreviewTitle.tsx","../src/react/ui/modals/_internal/components/transactionStatusModal/styles.css.ts","../src/react/ui/modals/_internal/components/transactionStatusModal/util/getFormattedType.ts","../src/react/ui/modals/_internal/components/transactionStatusModal/util/getMessage.ts","../src/react/ui/modals/_internal/components/transactionStatusModal/util/getTitle.ts","../src/react/ui/modals/CreateListingModal/_store.ts","../src/react/ui/modals/MakeOfferModal/index.tsx","../src/react/hooks/useMakeOffer.tsx","../src/react/ui/modals/MakeOfferModal/_store.ts","../src/react/ui/modals/SellModal/index.tsx","../src/react/hooks/useSell.tsx","../src/react/ui/modals/_internal/components/transactionHeader/index.tsx","../src/react/ui/modals/SellModal/_store.ts","../src/react/ui/modals/SuccessfulPurchaseModal/index.tsx","../src/react/ui/modals/SuccessfulPurchaseModal/_store.ts","../src/react/ui/modals/TransferModal/index.tsx","../src/react/ui/modals/TransferModal/_store.ts","../src/react/ui/modals/TransferModal/_views/enterWalletAddress/index.tsx","../src/react/ui/modals/TransferModal/messages.ts","../src/react/ui/modals/TransferModal/_views/enterWalletAddress/useHandleTransfer.tsx","../src/react/ui/modals/TransferModal/_views/followWalletInstructions/index.tsx","../src/react/ui/components/collectible-card/CollectibleCard.tsx","../src/react/ui/icons/DiamondEye.tsx","../src/react/ui/components/_internals/action-button/ActionButton.tsx","../src/react/ui/components/collectible-card/Footer.tsx","../src/react/ui/icons/Bell.tsx"],"sourcesContent":["import { observer } from '@legendapp/state/react';\nimport { AccountModal } from './Account';\nimport { BuyModal } from './BuyModal';\nimport { CreateListingModal } from './CreateListingModal';\nimport { MakeOfferModal } from './MakeOfferModal';\nimport { SellModal } from './SellModal';\nimport SuccessfulPurchaseModal from './SuccessfulPurchaseModal';\nimport { TransferModal } from './TransferModal';\nimport SwitchChainModal from './_internal/components/switchChainModal';\nimport TransactionStatusModal from './_internal/components/transactionStatusModal';\nimport { _accountModalOpen$ } from './_internal/stores/accountModal';\n\nexport const ModalProvider = observer(() => {\n\treturn (\n\t\t<>\n\t\t\t<AccountModal />\n\t\t\t<CreateListingModal />\n\t\t\t<MakeOfferModal />\n\t\t\t<TransferModal />\n\t\t\t<SellModal />\n\t\t\t<BuyModal />\n\t\t\t<SuccessfulPurchaseModal />\n\t\t\t{/* Helper modals */}\n\t\t\t<SwitchChainModal />\n\t\t\t<TransactionStatusModal />\n\t\t</>\n\t);\n});\n","import { Box, Button, Modal, Text } from '@0xsequence/design-system';\nimport { observable } from '@legendapp/state';\nimport { observer } from '@legendapp/state/react';\nimport { useAccount } from 'wagmi';\n\nconst accountModalOpen$ = observable(false);\n\nexport const useAccountModal = () => {\n\treturn {\n\t\tshow: () => accountModalOpen$.set(true),\n\t\thide: () => accountModalOpen$.set(false),\n\t\ttoggle: () => accountModalOpen$.toggle(),\n\t};\n};\n\nexport const AccountModal = observer(function AccountModal() {\n\tconst { address } = useAccount();\n\treturn (\n\t\taccountModalOpen$.get() && (\n\t\t\t<Modal>\n\t\t\t\t<Box>\n\t\t\t\t\t<Text>Wallet address</Text>\n\t\t\t\t\t<Text>{address}</Text>\n\t\t\t\t</Box>\n\t\t\t\t<Button label=\"Sign out\" />\n\t\t\t</Modal>\n\t\t)\n\t);\n});\n","import { Box, Text, TokenImage } from '@0xsequence/design-system';\nimport type { TokenMetadata } from '@0xsequence/indexer';\nimport { Show, observer, useSelector } from '@legendapp/state/react';\nimport { useEffect } from 'react';\nimport type { Address, Hex } from 'viem';\nimport { formatUnits, parseUnits } from 'viem';\nimport { ContractType, type Order } from '../../../_internal';\nimport type { BuyInput } from '../../../_internal/transaction-machine/execute-transaction';\nimport { useCollectible, useCollection } from '../../../hooks';\nimport { useCurrencies } from '../../../hooks';\nimport { useBuyCollectable } from '../../../hooks/useBuyCollectable';\nimport { useCurrencyOptions } from '../../../hooks/useCurrencyOptions';\nimport QuantityInput from '..//_internal/components/quantityInput';\nimport { ActionModal } from '../_internal/components/actionModal';\nimport type { ModalCallbacks } from '../_internal/types';\nimport { buyModal$ } from './_store';\n\nexport type ShowBuyModalArgs = {\n\tchainId: string;\n\tcollectionAddress: Hex;\n\ttokenId: string;\n\torder: Order;\n};\n\nexport const useBuyModal = (callbacks?: ModalCallbacks) => {\n\treturn {\n\t\tshow: (args: ShowBuyModalArgs) =>\n\t\t\tbuyModal$.open({ ...args, defaultCallbacks: callbacks }),\n\t\tclose: () => buyModal$.close(),\n\t};\n};\n\nexport const BuyModal = () => (\n\t<Show if={buyModal$.isOpen}>\n\t\t<BuyModalContent />\n\t</Show>\n);\n\nexport const BuyModalContent = () => {\n\tconst chainId = String(useSelector(buyModal$.state.order.chainId));\n\tconst collectionAddress = useSelector(\n\t\tbuyModal$.state.order.collectionContractAddress,\n\t) as Hex;\n\tconst collectibleId = useSelector(buyModal$.state.order.tokenId);\n\tconst modalId = useSelector(buyModal$.state.modalId);\n\tconst callbacks = useSelector(buyModal$.callbacks);\n\n\tconst { data: collection } = useCollection({\n\t\tchainId,\n\t\tcollectionAddress,\n\t});\n\n\tconst { buy, isLoading } = useBuyCollectable({\n\t\tchainId,\n\t\tcollectionAddress,\n\t\tenabled: buyModal$.isOpen.get(),\n\t\tonSwitchChainRefused: () => {\n\t\t\tbuyModal$.close();\n\t\t},\n\t\tonError: (error) => {\n\t\t\tif (callbacks?.onError) {\n\t\t\t\tcallbacks.onError(error);\n\t\t\t} else {\n\t\t\t\tconsole.debug('onError callback not provided', error);\n\t\t\t}\n\t\t},\n\t\tonSuccess: (hash) => {\n\t\t\tif (callbacks?.onSuccess) {\n\t\t\t\tcallbacks.onSuccess(hash);\n\t\t\t} else {\n\t\t\t\tconsole.debug('onSuccess callback not provided', hash);\n\t\t\t}\n\t\t\tbuyModal$.close();\n\t\t},\n\t});\n\n\tconst { data: collectable } = useCollectible({\n\t\tchainId,\n\t\tcollectionAddress,\n\t\tcollectibleId,\n\t});\n\n\tif (modalId === 0 || !collection || !collectable || !buy) return null;\n\n\treturn collection.type === ContractType.ERC721 ? (\n\t\t<CheckoutModal\n\t\t\tkey={modalId}\n\t\t\tbuy={buy}\n\t\t\tcollectable={collectable}\n\t\t\torder={buyModal$.state.order.get()}\n\t\t\tisLoading={isLoading}\n\t\t/>\n\t) : (\n\t\t<ERC1155QuantityModal\n\t\t\tbuy={buy}\n\t\t\tcollectable={collectable}\n\t\t\torder={buyModal$.state.order.get()}\n\t\t\tchainId={chainId}\n\t\t\tcollectionAddress={collectionAddress}\n\t\t\tcollectibleId={collectibleId}\n\t\t\tisLoading={isLoading}\n\t\t/>\n\t);\n};\n\ninterface CheckoutModalProps {\n\tbuy: (props: BuyInput) => void;\n\tcollectable: TokenMetadata;\n\torder: Order;\n\tisLoading?: boolean;\n}\n\nfunction CheckoutModal({\n\tbuy,\n\tcollectable,\n\torder,\n\tisLoading,\n}: CheckoutModalProps) {\n\t// biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n\tuseEffect(() => {\n\t\tconst executeBuy = () => {\n\t\t\tif (isLoading) return;\n\t\t\tbuy({\n\t\t\t\torderId: order.orderId,\n\t\t\t\tcollectableDecimals: collectable.decimals || 0,\n\t\t\t\tquantity: parseUnits('1', collectable.decimals || 0).toString(),\n\t\t\t\tmarketplace: order.marketplace,\n\t\t\t});\n\t\t};\n\n\t\texecuteBuy();\n\t}, [isLoading]);\n\n\treturn null;\n}\n\ninterface ERC1155QuantityModalProps extends CheckoutModalProps {\n\tchainId: string;\n\tcollectionAddress: Hex;\n\tcollectibleId: string;\n}\n\nconst ERC1155QuantityModal = observer(\n\t({ buy, collectable, order }: ERC1155QuantityModalProps) => {\n\t\tbuyModal$.state.quantity.set(\n\t\t\tMath.min(Number(order.quantityRemaining), 1).toString(),\n\t\t);\n\t\tconst currencyOptions = useCurrencyOptions({\n\t\t\tcollectionAddress: order.collectionContractAddress as Address,\n\t\t});\n\t\tconst { data: currencies } = useCurrencies({\n\t\t\tchainId: order.chainId,\n\t\t\tcurrencyOptions,\n\t\t});\n\n\t\tconst currency = currencies?.find(\n\t\t\t(currency) => currency.contractAddress === order.priceCurrencyAddress,\n\t\t);\n\n\t\tconst quantity = Number(buyModal$.state.quantity.get());\n\t\tconst pricePerToken = order.priceAmount;\n\t\tconst totalPrice = (BigInt(quantity) * BigInt(pricePerToken)).toString();\n\n\t\treturn (\n\t\t\t<ActionModal\n\t\t\t\tisOpen={buyModal$.isOpen.get()}\n\t\t\t\tchainId={order.chainId}\n\t\t\t\tonClose={() => buyModal$.close()}\n\t\t\t\ttitle=\"Select Quantity\"\n\t\t\t\tctas={[\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Buy now',\n\t\t\t\t\t\tonClick: () => {\n\t\t\t\t\t\t\tbuy({\n\t\t\t\t\t\t\t\tquantity: parseUnits(\n\t\t\t\t\t\t\t\t\tbuyModal$.state.quantity.get(),\n\t\t\t\t\t\t\t\t\tcollectable.decimals || 0,\n\t\t\t\t\t\t\t\t).toString(),\n\t\t\t\t\t\t\t\torderId: order.orderId,\n\t\t\t\t\t\t\t\tcollectableDecimals: collectable.decimals || 0,\n\t\t\t\t\t\t\t\tmarketplace: order.marketplace,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tbuyModal$.close();\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t]}\n\t\t\t>\n\t\t\t\t<Box display=\"flex\" flexDirection=\"column\" gap=\"4\">\n\t\t\t\t\t<QuantityInput\n\t\t\t\t\t\t$quantity={buyModal$.state.quantity}\n\t\t\t\t\t\t$invalidQuantity={buyModal$.state.invalidQuantity}\n\t\t\t\t\t\tdecimals={order.quantityDecimals}\n\t\t\t\t\t\tmaxQuantity={order.quantityRemaining}\n\t\t\t\t\t/>\n\t\t\t\t\t<Box display=\"flex\" justifyContent=\"space-between\">\n\t\t\t\t\t\t<Text color=\"text50\" fontSize=\"small\">\n\t\t\t\t\t\t\tTotal Price\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t<Box display=\"flex\" alignItems=\"center\" gap=\"2\">\n\t\t\t\t\t\t\t<TokenImage src={currency?.imageUrl} size=\"xs\" />\n\t\t\t\t\t\t\t<Text color=\"text100\" fontSize=\"small\" fontWeight=\"bold\">\n\t\t\t\t\t\t\t\t{formatUnits(BigInt(totalPrice), currency?.decimals || 0)}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t</Box>\n\t\t\t\t</Box>\n\t\t\t</ActionModal>\n\t\t);\n\t},\n);\n","import { Box, IconButton, NumericInput } from '@0xsequence/design-system';\nimport type { Observable } from '@legendapp/state';\nimport SvgMinusIcon from '../../../../icons/MinusIcon';\nimport SvgPlusIcon from '../../../../icons/PlusIcon';\nimport { quantityInputWrapper } from './styles.css';\n\ntype QuantityInputProps = {\n\t$quantity: Observable<string>;\n\t$invalidQuantity: Observable<boolean>;\n\tdecimals: number;\n\tmaxQuantity: string;\n};\n\nexport default function QuantityInput({\n\t$quantity,\n\t$invalidQuantity,\n\tdecimals,\n\tmaxQuantity,\n}: QuantityInputProps) {\n\tfunction handleChangeQuantity(value: string) {\n\t\tconst sanitizedValue = value.replace(/[^\\d.]/g, '');\n\t\tconst decimalParts = sanitizedValue.split('.');\n\n\t\tlet formattedValue = sanitizedValue;\n\t\tif (decimalParts.length > 2) {\n\t\t\tformattedValue = `${decimalParts[0]}.${decimalParts[1]}`;\n\t\t}\n\n\t\tconst finalValue = formatQuantity(formattedValue);\n\t\t$quantity.set(finalValue);\n\t\tvalidateQuantity(finalValue);\n\t}\n\n\tfunction validateQuantity(value: string) {\n\t\tif (!value || value.trim() === '' || Number.isNaN(Number(value))) {\n\t\t\t$invalidQuantity.set(true);\n\t\t\treturn;\n\t\t}\n\n\t\tconst numValue = Number(value);\n\n\t\tconst decimalParts = value.split('.');\n\t\tif (decimalParts.length > 1 && decimalParts[1].length > decimals) {\n\t\t\t$invalidQuantity.set(true);\n\t\t\treturn;\n\t\t}\n\n\t\t$invalidQuantity.set(numValue <= 0 || numValue > Number(maxQuantity));\n\t}\n\n\tfunction formatQuantity(value: string) {\n\t\tif (!value || Number.isNaN(Number(value))) {\n\t\t\treturn '0';\n\t\t}\n\n\t\tconst decimalParts = value.split('.');\n\t\tif (decimalParts.length > 1 && decimalParts[1].length > decimals) {\n\t\t\treturn Number(value).toFixed(decimals);\n\t\t}\n\n\t\tif (Number(value) > Number(maxQuantity)) {\n\t\t\treturn maxQuantity;\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tfunction handleIncrement() {\n\t\tconst currentValue = Number(quantity) || 0;\n\t\tconst maxValue = Number(maxQuantity);\n\t\tconst newValue = Math.min(currentValue + 1, maxValue);\n\t\thandleChangeQuantity(newValue.toString());\n\t\treturn newValue.toString();\n\t}\n\n\tfunction handleDecrement() {\n\t\tconst minValue = decimals ? Number(`0.${'0'.repeat(decimals - 1)}1`) : 1;\n\t\tconst currentValue = Number(quantity) || 0;\n\t\tconst newValue = Math.max(currentValue - 1, minValue);\n\t\tconst stringValue = newValue.toString();\n\t\thandleChangeQuantity(stringValue);\n\t\treturn stringValue;\n\t}\n\n\tconst quantity = $quantity.get();\n\tconst invalidQuantity = $invalidQuantity.get();\n\n\treturn (\n\t\t<Box className={quantityInputWrapper}>\n\t\t\t<NumericInput\n\t\t\t\tname={'quantity'}\n\t\t\t\tdecimals={decimals || 0}\n\t\t\t\tpaddingLeft={'1'}\n\t\t\t\tlabel={'Enter quantity'}\n\t\t\t\tlabelLocation=\"top\"\n\t\t\t\tcontrols={\n\t\t\t\t\t<Box\n\t\t\t\t\t\tdisplay={'flex'}\n\t\t\t\t\t\talignItems={'center'}\n\t\t\t\t\t\tgap={'1'}\n\t\t\t\t\t\tmarginRight={'2'}\n\t\t\t\t\t>\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\tdisabled={!quantity || Number(quantity) <= 0}\n\t\t\t\t\t\t\tonClick={handleDecrement}\n\t\t\t\t\t\t\tbackground={'buttonGlass'}\n\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\ticon={SvgMinusIcon}\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\tonClick={handleIncrement}\n\t\t\t\t\t\t\tbackground={'buttonGlass'}\n\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\ticon={SvgPlusIcon}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Box>\n\t\t\t\t}\n\t\t\t\tnumeric={true}\n\t\t\t\tvalue={quantity}\n\t\t\t\tonChange={(e) => handleChangeQuantity(e.target.value)}\n\t\t\t\twidth={'full'}\n\t\t\t/>\n\t\t\t{invalidQuantity && (\n\t\t\t\t<Box color=\"negative\" fontSize=\"small\">\n\t\t\t\t\t{invalidQuantity}\n\t\t\t\t</Box>\n\t\t\t)}\n\t\t</Box>\n\t);\n}\n","import { observable } from '@legendapp/state';\nimport type { ShowBuyModalArgs } from '.';\nimport type { Order } from '../../../_internal';\nimport type { ModalCallbacks } from '../_internal/types';\n\nexport interface BuyModalState {\n\tisOpen: boolean;\n\topen: (\n\t\targs: ShowBuyModalArgs & {\n\t\t\tcallbacks?: ModalCallbacks;\n\t\t\tdefaultCallbacks?: ModalCallbacks;\n\t\t},\n\t) => void;\n\tclose: () => void;\n\tstate: {\n\t\torder: Order;\n\t\tquantity: string;\n\t\tmodalId: number;\n\t\tinvalidQuantity: boolean;\n\t};\n\tcallbacks?: ModalCallbacks;\n}\n\nexport const initialState: BuyModalState = {\n\tisOpen: false,\n\topen: ({\n\t\tcallbacks,\n\t\tdefaultCallbacks,\n\t\t...args\n\t}: ShowBuyModalArgs & {\n\t\tcallbacks?: ModalCallbacks;\n\t\tdefaultCallbacks?: ModalCallbacks;\n\t}) => {\n\t\tbuyModal$.state.set({\n\t\t\tquantity: args.order.quantityAvailableFormatted,\n\t\t\torder: args.order,\n\t\t\tmodalId: buyModal$.state.modalId.get() + 1,\n\t\t\tinvalidQuantity: false,\n\t\t});\n\t\tbuyModal$.callbacks.set(callbacks || defaultCallbacks);\n\t\tbuyModal$.isOpen.set(true);\n\t},\n\tclose: () => {\n\t\tbuyModal$.isOpen.set(false);\n\t},\n\tstate: {\n\t\torder: undefined as unknown as Order,\n\t\tquantity: '1',\n\t\tmodalId: 0,\n\t\tinvalidQuantity: false,\n\t},\n\tcallbacks: undefined,\n};\n\nexport const buyModal$ = observable(initialState);\n","import { Box } from '@0xsequence/design-system';\nimport { Show, observer } from '@legendapp/state/react';\nimport type { QueryKey } from '@tanstack/react-query';\nimport { useEffect, useState } from 'react';\nimport type { Hash, Hex } from 'viem';\nimport { parseUnits } from 'viem';\nimport { useAccount } from 'wagmi';\nimport {\n\ttype ContractType,\n\ttype OrderbookKind,\n\tcollectableKeys,\n} from '../../../_internal';\nimport { TransactionType } from '../../../_internal/transaction-machine/execute-transaction';\nimport {\n\tuseBalanceOfCollectible,\n\tuseCollectible,\n\tuseCollection,\n} from '../../../hooks';\nimport { useCreateListing } from '../../../hooks/useCreateListing';\nimport {\n\tActionModal,\n\ttype ActionModalProps,\n} from '../_internal/components/actionModal/ActionModal';\nimport { ErrorModal } from '../_internal/components/actionModal/ErrorModal';\nimport { LoadingModal } from '../_internal/components/actionModal/LoadingModal';\nimport ExpirationDateSelect from '../_internal/components/expirationDateSelect';\nimport FloorPriceText from '../_internal/components/floorPriceText';\nimport PriceInput from '../_internal/components/priceInput';\nimport QuantityInput from '../_internal/components/quantityInput';\nimport TokenPreview from '../_internal/components/tokenPreview';\nimport TransactionDetails from '../_internal/components/transactionDetails';\nimport { useTransactionStatusModal } from '../_internal/components/transactionStatusModal';\nimport type { ModalCallbacks } from '../_internal/types';\nimport { createListingModal$ } from './_store';\n\nexport type ShowCreateListingModalArgs = {\n\tcollectionAddress: Hex;\n\tchainId: string;\n\tcollectibleId: string;\n\torderbookKind: OrderbookKind;\n\tonSuccess?: (hash?: Hash) => void;\n\tonError?: (error: Error) => void;\n};\n\nexport const useCreateListingModal = (callbacks?: ModalCallbacks) => {\n\treturn {\n\t\tshow: (args: ShowCreateListingModalArgs) =>\n\t\t\tcreateListingModal$.open({ ...args, defaultCallbacks: callbacks }),\n\t\tclose: () => createListingModal$.close(),\n\t};\n};\n\nexport const CreateListingModal = () => {\n\tconst { show: showTransactionStatusModal } = useTransactionStatusModal();\n\treturn (\n\t\t<Show if={createListingModal$.isOpen}>\n\t\t\t<Modal showTransactionStatusModal={showTransactionStatusModal} />\n\t\t</Show>\n\t);\n};\n\ntype TransactionStatusModalReturn = ReturnType<\n\ttypeof useTransactionStatusModal\n>;\n\nexport const Modal = observer(\n\t({\n\t\tshowTransactionStatusModal,\n\t}: {\n\t\tshowTransactionStatusModal: TransactionStatusModalReturn['show'];\n\t}) => {\n\t\tconst state = createListingModal$.get();\n\t\tconst {\n\t\t\tcollectionAddress,\n\t\t\tchainId,\n\t\t\tlistingPrice,\n\t\t\tlistingPriceChanged,\n\t\t\tcollectibleId,\n\t\t\torderbookKind,\n\t\t\tcallbacks,\n\t\t} = state;\n\t\tconst currencyAddress = listingPrice.currency.contractAddress;\n\t\tconst {\n\t\t\tdata: collectible,\n\t\t\tisLoading: collectableIsLoading,\n\t\t\tisError: collectableIsError,\n\t\t} = useCollectible({\n\t\t\tchainId,\n\t\t\tcollectionAddress,\n\t\t\tcollectibleId,\n\t\t});\n\n\t\tconst {\n\t\t\tdata: collection,\n\t\t\tisLoading: collectionIsLoading,\n\t\t\tisError: collectionIsError,\n\t\t} = useCollection({\n\t\t\tchainId,\n\t\t\tcollectionAddress,\n\t\t});\n\t\tconst [approvalExecutedSuccess, setApprovalExecutedSuccess] =\n\t\t\tuseState(false);\n\n\t\tconst { address } = useAccount();\n\n\t\tconst { data: balance } = useBalanceOfCollectible({\n\t\t\tchainId,\n\t\t\tcollectionAddress,\n\t\t\tcollectableId: collectibleId,\n\t\t\tuserAddress: address ?? undefined,\n\t\t});\n\n\t\tconst { getListingSteps, isLoading: machineLoading, createListing} = useCreateListing({\n\t\t\torderbookKind,\n\t\t\tchainId,\n\t\t\tcollectionAddress,\n\t\t\tenabled: createListingModal$.isOpen.get(),\n\t\t\tonSwitchChainRefused: () => createListingModal$.close(),\n\t\t\tonApprovalSuccess: () => setApprovalExecutedSuccess(true),\n\t\t\tonTransactionSent: (hash, orderId) => {\n\t\t\t\tif (!hash && !orderId) return;\n\n\t\t\t\tshowTransactionStatusModal({\n\t\t\t\t\thash,\n\t\t\t\t\torderId,\n\t\t\t\t\tcollectionAddress,\n\t\t\t\t\tchainId,\n\t\t\t\t\tprice: createListingModal$.listingPrice.get(),\n\t\t\t\t\tcollectibleId,\n\t\t\t\t\ttype: TransactionType.LISTING,\n\t\t\t\t\tqueriesToInvalidate: collectableKeys.all as unknown as QueryKey[],\n\t\t\t\t\tcallbacks,\n\t\t\t\t});\n\t\t\t\tcreateListingModal$.close();\n\t\t\t},\n\t\t});\n\n\t\tuseEffect(() => {\n\t\t\tif (!currencyAddress) return;\n\n\t\t\trefreshSteps();\n\t\t}, [currencyAddress]);\n\n\t\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\n\t\tconst handleStepExecution = async (execute?: any) => {\n\t\t\tif (!execute) return;\n\t\t\ttry {\n\t\t\t\tawait refreshSteps();\n\t\t\t\tawait execute();\n\t\t\t} catch (error) {\n\t\t\t\tif (callbacks?.onError) {\n\t\t\t\t\tcallbacks.onError(error as Error);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.debug('onError callback not provided:', error);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tif (collectableIsLoading || collectionIsLoading || machineLoading) {\n\t\t\treturn (\n\t\t\t\t<LoadingModal\n\t\t\t\t\tisOpen={createListingModal$.isOpen.get()}\n\t\t\t\t\tchainId={Number(chainId)}\n\t\t\t\t\tonClose={createListingModal$.close}\n\t\t\t\t\ttitle=\"List item for sale\"\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\n\t\tif (collectableIsError || collectionIsError) {\n\t\t\treturn (\n\t\t\t\t<ErrorModal\n\t\t\t\t\tisOpen={createListingModal$.isOpen.get()}\n\t\t\t\t\tchainId={Number(chainId)}\n\t\t\t\t\tonClose={createListingModal$.close}\n\t\t\t\t\ttitle=\"List item for sale\"\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\n\t\tconst dateToUnixTime = (date: Date) =>\n\t\t\tMath.floor(date.getTime() / 1000).toString();\n\n\t\tconst { isLoading, steps, refreshSteps } = getListingSteps({\n\t\t\tcontractType: collection?.type as ContractType,\n\t\t\tlisting: {\n\t\t\t\ttokenId: collectibleId,\n\t\t\t\tquantity: parseUnits(\n\t\t\t\t\tcreateListingModal$.quantity.get(),\n\t\t\t\t\tcollectible?.decimals || 0,\n\t\t\t\t).toString(),\n\t\t\t\texpiry: dateToUnixTime(createListingModal$.expiry.get()),\n\t\t\t\tcurrencyAddress: listingPrice.currency.contractAddress,\n\t\t\t\tpricePerToken: listingPrice.amountRaw,\n\t\t\t},\n\t\t});\n\t\tconst approvalNeeded = steps?.approval.isPending;\n\n\t\tconst ctas = [\n\t\t\t{\n\t\t\t\tlabel: 'Approve TOKEN',\n\t\t\t\tonClick: () => handleStepExecution(() => steps?.approval.execute()),\n\t\t\t\thidden: !approvalNeeded || approvalExecutedSuccess,\n\t\t\t\tpending: steps?.approval.isExecuting || isLoading,\n\t\t\t\tvariant: 'glass' as const,\n\t\t\t\tdisabled:\n\t\t\t\t\tcreateListingModal$.invalidQuantity.get() ||\n\t\t\t\t\tisLoading ||\n\t\t\t\t\t!listingPriceChanged ||\n\t\t\t\t\tlistingPrice.amountRaw === '0' ||\n\t\t\t\t\tsteps?.transaction.isExecuting,\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'List item for sale',\n\t\t\t\tonClick: () => createListing({\n\t\t\t\t\tcontractType: collection?.type as ContractType,\n\t\t\t\t\tlisting: {\n\t\t\t\t\t\ttokenId: collectibleId,\n\t\t\t\t\t\tquantity: parseUnits(\n\t\t\t\t\t\t\tcreateListingModal$.quantity.get(),\n\t\t\t\t\t\t\tcollectible?.decimals || 0,\n\t\t\t\t\t\t).toString(),\n\t\t\t\t\t\texpiry: dateToUnixTime(createListingModal$.expiry.get()),\n\t\t\t\t\t\tcurrencyAddress: listingPrice.currency.contractAddress,\n\t\t\t\t\t\tpricePerToken: listingPrice.amountRaw,\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t\tpending: steps?.transaction.isExecuting || isLoading,\n\t\t\t\tdisabled:\n\t\t\t\t\t(!approvalExecutedSuccess && approvalNeeded) ||\n\t\t\t\t\tlistingPrice.amountRaw === '0' ||\n\t\t\t\t\tisLoading ||\n\t\t\t\t\tcreateListingModal$.invalidQuantity.get() ||\n\t\t\t\t\t!listingPriceChanged,\n\t\t\t},\n\t\t] satisfies ActionModalProps['ctas'];\n\n\t\treturn (\n\t\t\t<ActionModal\n\t\t\t\tisOpen={createListingModal$.isOpen.get()}\n\t\t\t\tchainId={Number(chainId)}\n\t\t\t\tonClose={() => createListingModal$.close()}\n\t\t\t\ttitle=\"List item for sale\"\n\t\t\t\tctas={ctas}\n\t\t\t>\n\t\t\t\t<TokenPreview\n\t\t\t\t\tcollectionName={collection?.name}\n\t\t\t\t\tcollectionAddress={collectionAddress}\n\t\t\t\t\tcollectibleId={collectibleId}\n\t\t\t\t\tchainId={chainId}\n\t\t\t\t/>\n\n\t\t\t\t<Box display=\"flex\" flexDirection=\"column\" width=\"full\" gap=\"1\">\n\t\t\t\t\t<PriceInput\n\t\t\t\t\t\tchainId={chainId}\n\t\t\t\t\t\tcollectionAddress={collectionAddress}\n\t\t\t\t\t\t$listingPrice={createListingModal$.listingPrice}\n\t\t\t\t\t\tonPriceChange={() => createListingModal$.listingPriceChanged.set(true)}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{listingPrice.amountRaw !== '0' && listingPriceChanged && (\n\t\t\t\t\t\t<FloorPriceText\n\t\t\t\t\t\t\ttokenId={collectibleId}\n\t\t\t\t\t\t\tchainId={chainId}\n\t\t\t\t\t\t\tcollectionAddress={collectionAddress}\n\t\t\t\t\t\t\tprice={listingPrice}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</Box>\n\n\t\t\t\t{collection?.type === 'ERC1155' && balance && (\n\t\t\t\t\t<QuantityInput\n\t\t\t\t\t\t$quantity={createListingModal$.quantity}\n\t\t\t\t\t\t$invalidQuantity={createListingModal$.invalidQuantity}\n\t\t\t\t\t\tdecimals={collectible?.decimals || 0}\n\t\t\t\t\t\tmaxQuantity={balance?.balance}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t<ExpirationDateSelect $date={createListingModal$.expiry} />\n\n\t\t\t\t<TransactionDetails\n\t\t\t\t\tcollectibleId={collectibleId}\n\t\t\t\t\tcollectionAddress={collectionAddress}\n\t\t\t\t\tchainId={chainId}\n\t\t\t\t\tprice={createListingModal$.listingPrice.get()}\n\t\t\t\t\tshowPlaceholderPrice={!listingPriceChanged}\n\t\t\t\t\tcurrencyImageUrl={listingPrice.currency.imageUrl}\n\t\t\t\t/>\n\t\t\t</ActionModal>\n\t\t);\n\t},\n);\n","import { useCallback, useState } from 'react';\nimport type { Hash } from 'viem';\nimport type { TransactionError } from '../../utils/_internal/error/transaction';\nimport {\n\ttype ListingInput,\n\ttype TransactionSteps,\n\tTransactionType,\n} from '../_internal/transaction-machine/execute-transaction';\nimport {\n\ttype UseTransactionMachineConfig,\n\tuseTransactionMachine,\n} from '../_internal/transaction-machine/useTransactionMachine';\n\ninterface UseCreateListingArgs\n\textends Omit<UseTransactionMachineConfig, 'type'> {\n\tonSuccess?: (hash: Hash) => void;\n\tonError?: (error: TransactionError) => void;\n\tonTransactionSent?: (hash?: Hash, orderId?: string) => void;\n\tonApprovalSuccess?: (hash: Hash) => void;\n\tonSwitchChainRefused: () => void;\n\tenabled: boolean;\n}\n\ntype ExecutionState = 'approval' | 'listing' | null;\n\nexport const useCreateListing = ({\n\tonSuccess,\n\tonError,\n\tonTransactionSent,\n\tonApprovalSuccess,\n\tonSwitchChainRefused,\n\tenabled,\n\t...config\n}: UseCreateListingArgs) => {\n\tconst [isLoading, setIsLoading] = useState(false);\n\tconst [steps, setSteps] = useState<TransactionSteps | null>(null);\n\tconst [executionState, setExecutionState] = useState<ExecutionState>(null);\n\tconst machineConfig = {\n\t\t...config,\n\t\ttype: TransactionType.LISTING,\n\t};\n\n\tconst { machine, isLoading: isMachineLoading } = useTransactionMachine({\n\t\tconfig: machineConfig,\n\t\tenabled,\n\t\tonSuccess: (hash) => {\n\t\t\tsetExecutionState(null);\n\t\t\tonSuccess?.(hash);\n\t\t},\n\t\tonError: (error) => {\n\t\t\tsetExecutionState(null);\n\t\t\tonError?.(error);\n\t\t},\n\t\tonTransactionSent,\n\t\tonApprovalSuccess: (hash) => {\n\t\t\tsetExecutionState(null);\n\t\t\tonApprovalSuccess?.(hash);\n\t\t},\n\t\tonSwitchChainRefused,\n\t});\n\n\tconst loadSteps = useCallback(\n\t\tasync (props: ListingInput) => {\n\t\t\tif (!machine) return;\n\t\t\tsetIsLoading(true);\n\t\t\tconst generatedSteps = await machine.getTransactionSteps(props);\n\t\t\tif (!generatedSteps) {\n\t\t\t\tsetIsLoading(false);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetSteps({\n\t\t\t\t...generatedSteps,\n\t\t\t\tapproval: {\n\t\t\t\t\t...generatedSteps.approval,\n\t\t\t\t\tisExecuting: executionState === 'approval',\n\t\t\t\t},\n\t\t\t\ttransaction: {\n\t\t\t\t\t...generatedSteps.transaction,\n\t\t\t\t\tisExecuting: executionState === 'listing',\n\t\t\t\t},\n\t\t\t});\n\t\t\tsetIsLoading(false);\n\t\t},\n\t\t[machine, executionState],\n\t);\n\n\tconst handleStepExecution = useCallback(\n\t\tasync (type: ExecutionState, execute: () => Promise<any> | undefined) => {\n\t\t\tif (!type) return;\n\t\t\tsetExecutionState(type);\n\t\t\ttry {\n\t\t\t\tawait execute();\n\t\t\t} catch (error) {\n\t\t\t\tsetExecutionState(null);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t},\n\t\t[],\n\t);\n\n\treturn {\n\t\tcreateListing: (props: ListingInput) => machine?.start(props),\n\t\tgetListingSteps: (props: ListingInput) => ({\n\t\t\tisLoading,\n\t\t\tsteps: steps\n\t\t\t\t? {\n\t\t\t\t\t\t...steps,\n\t\t\t\t\t\tapproval: {\n\t\t\t\t\t\t\t...steps.approval,\n\t\t\t\t\t\t\tisExecuting: executionState === 'approval',\n\t\t\t\t\t\t\texecute: () =>\n\t\t\t\t\t\t\t\thandleStepExecution('approval', () => steps.approval.execute()),\n\t\t\t\t\t\t},\n\t\t\t\t\t\ttransaction: {\n\t\t\t\t\t\t\t...steps.transaction,\n\t\t\t\t\t\t\tisExecuting: executionState === 'listing',\n\t\t\t\t\t\t\texecute: () =>\n\t\t\t\t\t\t\t\thandleStepExecution('listing', () =>\n\t\t\t\t\t\t\t\t\tsteps.transaction.execute(),\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t: null,\n\t\t\trefreshSteps: () => loadSteps(props),\n\t\t}),\n\t\tisLoading: isMachineLoading,\n\t};\n};\n","import { Box } from '@0xsequence/design-system';\nimport { ActionModal } from './ActionModal';\n\ninterface ErrorModalProps {\n\tisOpen: boolean;\n\tchainId: number;\n\tonClose: () => void;\n\ttitle: string;\n}\n\nexport const ErrorModal = ({\n\tisOpen,\n\tchainId,\n\tonClose,\n\ttitle,\n}: ErrorModalProps) => (\n\t<ActionModal\n\t\tisOpen={isOpen}\n\t\tchainId={chainId}\n\t\tonClose={onClose}\n\t\ttitle={title}\n\t\tctas={[]}\n\t>\n\t\t<Box display=\"flex\" justifyContent=\"center\" alignItems=\"center\" padding=\"4\">\n\t\t\tError loading item details\n\t\t</Box>\n\t</ActionModal>\n);\n","import { Box, Spinner } from '@0xsequence/design-system';\nimport { ActionModal } from './ActionModal';\n\ninterface LoadingModalProps {\n\tisOpen: boolean;\n\tchainId: number;\n\tonClose: () => void;\n\ttitle: string;\n}\n\nexport const LoadingModal = ({\n\tisOpen,\n\tchainId,\n\tonClose,\n\ttitle,\n}: LoadingModalProps) => (\n\t<ActionModal\n\t\tisOpen={isOpen}\n\t\tchainId={chainId}\n\t\tonClose={onClose}\n\t\ttitle={title}\n\t\tctas={[]}\n\t>\n\t\t<Box display=\"flex\" justifyContent=\"center\" alignItems=\"center\" padding=\"4\">\n\t\t\t<Spinner size=\"lg\" />\n\t\t</Box>\n\t</ActionModal>\n);\n","import { Box, Skeleton, Text } from '@0xsequence/design-system';\nimport type { Observable } from '@legendapp/state';\nimport { observer } from '@legendapp/state/react';\nimport { addDays } from 'date-fns';\nimport { CustomSelect } from '../../../../components/_internals/custom-select/CustomSelect';\nimport CalendarPopover from '../calendarPopover';\nimport { useState } from 'react';\n\nexport const PRESET_RANGES = {\n\tTODAY: {\n\t\tlabel: 'Today',\n\t\tvalue: 'today',\n\t\toffset: 0,\n\t},\n\tTOMORROW: {\n\t\tlabel: 'Tomorrow',\n\t\tvalue: 'tomorrow',\n\t\toffset: 1,\n\t},\n\tIN_3_DAYS: {\n\t\tlabel: 'In 3 days',\n\t\tvalue: '3_days',\n\t\toffset: 3,\n\t},\n\tONE_WEEK: {\n\t\tlabel: '1 week',\n\t\tvalue: '1_week',\n\t\toffset: 7,\n\t},\n\tONE_MONTH: {\n\t\tlabel: '1 month',\n\t\tvalue: '1_month',\n\t\toffset: 30,\n\t},\n} as const;\n\nexport type RangeType =\n\t(typeof PRESET_RANGES)[keyof typeof PRESET_RANGES]['value'];\n\ntype ExpirationDateSelectProps = {\n\tclassName?: string;\n\t$date: Observable<Date>;\n};\n\nconst ExpirationDateSelect = observer(function ExpirationDateSelect({\n\tclassName,\n\t$date,\n}: ExpirationDateSelectProps) {\n\tconst defaultRange = '1_week' as RangeType;\n\tconst [selectedRange, setSelectedRange] = useState<RangeType>(defaultRange);\n\n\tfunction handleSelectPresetRange(range: RangeType) {\n\t\tconst presetRange = Object.values(PRESET_RANGES).find(\n\t\t\t(preset) => preset.value === range,\n\t\t);\n\n\t\tsetSelectedRange(range);\n\n\t\tif (!presetRange) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst newDate = addDays(new Date(), presetRange.offset);\n\n\t\t$date.set(newDate);\n\t}\n\n\tfunction handleDateValueChange(date: Date) {\n\t\t$date.set(date);\n\t}\n\n\tif (!$date.get()) {\n\t\treturn <Skeleton borderRadius=\"lg\" width=\"20\" height=\"7\" marginRight=\"3\" />;\n\t}\n\n\treturn (\n\t\t<Box width=\"full\" position=\"relative\">\n\t\t\t<Text\n\t\t\t\tfontSize={'small'}\n\t\t\t\tfontWeight={'medium'}\n\t\t\t\ttextAlign={'left'}\n\t\t\t\twidth={'full'}\n\t\t\t\tcolor={'text100'}\n\t\t\t\tfontFamily=\"body\"\n\t\t\t>\n\t\t\t\tSet expiry\n\t\t\t</Text>\n\n\t\t\t<Box\n\t\t\t\tclassName={className}\n\t\t\t\twidth={'full'}\n\t\t\t\tdisplay={'flex'}\n\t\t\t\talignItems={'center'}\n\t\t\t\tgap={'2'}\n\t\t\t\tmarginTop={'0.5'}\n\t\t\t>\n\t\t\t\t<Box\n\t\t\t\t\tposition={'absolute'}\n\t\t\t\t\tright={'0'}\n\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t\tzIndex=\"10\"\n\t\t\t\t>\n\t\t\t\t\t<CustomSelect\n\t\t\t\t\t\titems={Object.values(PRESET_RANGES).map((preset) => ({\n\t\t\t\t\t\t\tlabel: preset.label,\n\t\t\t\t\t\t\tvalue: preset.value,\n\t\t\t\t\t\t\tcontent: preset.label,\n\t\t\t\t\t\t}))}\n\t\t\t\t\t\tonValueChange={(value) =>\n\t\t\t\t\t\t\thandleSelectPresetRange(value as RangeType)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdefaultValue={{\n\t\t\t\t\t\t\tvalue: selectedRange,\n\t\t\t\t\t\t\tcontent: selectedRange,\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</Box>\n\n\t\t\t\t<CalendarPopover\n\t\t\t\t\tselectedDate={$date.get()}\n\t\t\t\t\tsetSelectedDate={(date) => handleDateValueChange(date)}\n\t\t\t\t/>\n\t\t\t</Box>\n\t\t</Box>\n\t);\n});\n\nexport default ExpirationDateSelect;\n","'use client';\n\nimport './overrides.css';\nimport { Button } from '@0xsequence/design-system';\nimport { Content, Portal, Root, Trigger } from '@radix-ui/react-popover';\nimport { format } from 'date-fns';\nimport SvgCalendarIcon from '../../../../icons/CalendarIcon';\nimport Calendar from '../calendar';\nimport { dateSelectButton, dateSelectPopoverContent } from './styles.css';\n\ntype CalendarPopoverProps = {\n\tselectedDate: Date;\n\tsetSelectedDate: (date: Date) => void;\n};\n\nexport default function CalendarPopover({\n\tselectedDate,\n\tsetSelectedDate,\n}: CalendarPopoverProps) {\n\treturn (\n\t\t<Root>\n\t\t\t<Trigger asChild>\n\t\t\t\t<Button\n\t\t\t\t\tleftIcon={SvgCalendarIcon}\n\t\t\t\t\tclassName={dateSelectButton}\n\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\tlabel={format(selectedDate, 'dd/MM/yyyy HH:mm')}\n\t\t\t\t\tshape=\"square\"\n\t\t\t\t/>\n\t\t\t</Trigger>\n\t\t\t<Portal>\n\t\t\t\t<Content className={dateSelectPopoverContent} sideOffset={5}>\n\t\t\t\t\t<Calendar\n\t\t\t\t\t\tselectedDate={selectedDate}\n\t\t\t\t\t\tsetSelectedDate={setSelectedDate}\n\t\t\t\t\t\tmode=\"single\"\n\t\t\t\t\t/>\n\t\t\t\t</Content>\n\t\t\t</Portal>\n\t\t</Root>\n\t);\n}\n","'use client';\n\nimport { DayPicker, type PropsSingle } from 'react-day-picker';\nimport 'react-day-picker/style.css';\n\nexport type CalendarProps = React.PropsWithChildren<PropsSingle> & {\n\tselectedDate?: Date;\n\tsetSelectedDate?: (date: Date) => void;\n};\n\nfunction Calendar({ ...props }: CalendarProps) {\n\tconst { selectedDate, setSelectedDate } = props;\n\n\treturn (\n\t\t<DayPicker\n\t\t\tdisabled={{\n\t\t\t\tbefore: new Date(),\n\t\t\t}}\n\t\t\tselected={selectedDate as unknown as Date}\n\t\t\tonDayClick={setSelectedDate}\n\t\t\tdefaultMonth={selectedDate}\n\t\t\tmodifiersStyles={{\n\t\t\t\tselected: {\n\t\t\t\t\tcolor: 'hsl(var(--foreground))',\n\t\t\t\t\tbackground: 'hsl(var(--primary))',\n\t\t\t\t\tborder: 'none',\n\t\t\t\t},\n\t\t\t}}\n\t\t\tstyles={{\n\t\t\t\troot: {\n\t\t\t\t\twidth: 'max-content',\n\t\t\t\t\tmargin: 0,\n\t\t\t\t\tcolor: 'hsl(var(--foreground))',\n\t\t\t\t\tbackground: 'hsl(var(--background))',\n\t\t\t\t\tborder: '1px solid hsl(var(--border))',\n\t\t\t\t\tborderRadius: 'var(--radius)',\n\t\t\t\t\tpadding: '0.5rem',\n\t\t\t\t\tposition: 'relative',\n\t\t\t\t},\n\t\t\t\tday: {\n\t\t\t\t\tmargin: 0,\n\t\t\t\t\twidth: '1rem',\n\t\t\t\t\theight: '1rem',\n\t\t\t\t},\n\t\t\t\tday_button: {\n\t\t\t\t\tmargin: 0,\n\t\t\t\t\twidth: '1.8rem',\n\t\t\t\t\theight: '1.5rem',\n\t\t\t\t\tpadding: 0,\n\t\t\t\t\tborder: 'none',\n\t\t\t\t},\n\t\t\t}}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\nCalendar.displayName = 'Calendar';\n\nexport default Calendar;\n","import { Text } from '@0xsequence/design-system';\nimport type { Hex } from 'viem';\nimport type { Price } from '../../../../../../types';\nimport { calculatePriceDifferencePercentage } from '../../../../../../utils';\nimport { useLowestListing } from '../../../../../hooks';\n\nexport default function FloorPriceText({\n\tchainId,\n\tcollectionAddress,\n\ttokenId,\n\tprice,\n}: {\n\tchainId: string;\n\tcollectionAddress: Hex;\n\ttokenId: string;\n\tprice: Price;\n}) {\n\tconst { data: listing, isLoading: listingLoading } = useLowestListing({\n\t\ttokenId: tokenId,\n\t\tchainId,\n\t\tcollectionAddress,\n\t\tfilters: {\n\t\t\tcurrencies: [price.currency.contractAddress],\n\t\t},\n\t});\n\n\tconst floorPriceRaw = listing?.order?.priceAmount;\n\n\tif (!floorPriceRaw || listingLoading || price.amountRaw === '0') {\n\t\treturn null;\n\t}\n\n\tconst floorPriceDifference = calculatePriceDifferencePercentage({\n\t\tinputPriceRaw: BigInt(price.amountRaw),\n\t\tbasePriceRaw: BigInt(floorPriceRaw),\n\t\tdecimals: price.currency.decimals,\n\t});\n\n\tconst floorPriceDifferenceText =\n\t\tfloorPriceRaw === price.amountRaw\n\t\t\t? 'Same as floor price'\n\t\t\t: `${floorPriceDifference}% ${floorPriceRaw > price.amountRaw ? 'below' : 'above'} floor price`;\n\n\treturn (\n\t\t<Text\n\t\t\tfontSize={'small'}\n\t\t\tfontWeight={'medium'}\n\t\t\ttextAlign={'left'}\n\t\t\twidth={'full'}\n\t\t\tcolor={'text50'}\n\t\t\tfontFamily=\"body\"\n\t\t>\n\t\t\t{floorPriceDifferenceText}\n\t\t</Text>\n\t);\n}\n","import { Box, NumericInput, Text } from '@0xsequence/design-system';\nimport type { Observable } from '@legendapp/state';\nimport { observer } from '@legendapp/state/react';\nimport { useEffect, useState } from 'react';\nimport { type Hex, parseUnits } from 'viem';\nimport { useAccount } from 'wagmi';\nimport type { Price } from '../../../../../../types';\nimport { useCurrencyBalance } from '../../../../../hooks/useCurrencyBalance';\nimport CurrencyImage from '../currencyImage';\nimport CurrencyOptionsSelect from '../currencyOptionsSelect';\nimport { priceInputCurrencyImage, priceInputWrapper } from './styles.css';\n\ntype PriceInputProps = {\n\tcollectionAddress: Hex;\n\tchainId: string;\n\t$listingPrice: Observable<Price | undefined>;\n\tonPriceChange?: () => void;\n\tcheckBalance?: {\n\t\tenabled: boolean;\n\t\tcallback: (state: boolean) => void;\n\t};\n};\n\nconst PriceInput = observer(function PriceInput({\n\tchainId,\n\tcollectionAddress,\n\t$listingPrice,\n\tonPriceChange,\n\tcheckBalance,\n}: PriceInputProps) {\n\tconst [balanceError, setBalanceError] = useState('');\n\tconst { address: accountAddress } = useAccount();\n\tconst { data: balance, isSuccess: isBalanceSuccess } = useCurrencyBalance({\n\t\tcurrencyAddress: $listingPrice.currency.contractAddress.get() as Hex,\n\t\tchainId: Number(chainId),\n\t\tuserAddress: accountAddress as Hex,\n\t});\n\n\tconst currencyDecimals = $listingPrice.currency.decimals.get();\n\n\tconst [value, setValue] = useState('');\n\n\tconst changeListingPrice = (value: string) => {\n\t\tsetValue(value);\n\t\ttry {\n\t\t\tconst parsedAmount = parseUnits(value, Number(currencyDecimals));\n\t\t\t$listingPrice.amountRaw.set(parsedAmount.toString());\n\t\t\tonPriceChange?.();\n\t\t} catch {\n\t\t\t$listingPrice.amountRaw.set('0');\n\t\t}\n\t};\n\n\tconst checkInsufficientBalance = (priceAmountRaw: string) => {\n\t\tconst hasInsufficientBalance =\n\t\t\tisBalanceSuccess &&\n\t\t\tpriceAmountRaw &&\n\t\t\tcurrencyDecimals &&\n\t\t\tBigInt(priceAmountRaw) > (balance?.value || 0);\n\n\t\tif (!checkBalance) return;\n\n\t\tif (hasInsufficientBalance) {\n\t\t\tsetBalanceError('Insufficient balance');\n\t\t\tcheckBalance.callback(true);\n\t\t} else {\n\t\t\tsetBalanceError('');\n\t\t\tcheckBalance.callback(false);\n\t\t}\n\t};\n\n\t// biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n\tuseEffect(() => {\n\t\tconst priceAmountRaw = $listingPrice.amountRaw.get();\n\t\tif (priceAmountRaw && priceAmountRaw !== '0') {\n\t\t\tcheckInsufficientBalance(priceAmountRaw);\n\t\t}\n\t}, [$listingPrice.currency.get()]);\n\n\treturn (\n\t\t<Box className={priceInputWrapper} position=\"relative\">\n\t\t\t<Box\n\t\t\t\tclassName={priceInputCurrencyImage}\n\t\t\t\tposition=\"absolute\"\n\t\t\t\tleft=\"2\"\n\t\t\t\tdisplay=\"flex\"\n\t\t\t\talignItems=\"center\"\n\t\t\t>\n\t\t\t\t<CurrencyImage $listingPrice={$listingPrice} />\n\t\t\t</Box>\n\n\t\t\t<NumericInput\n\t\t\t\tname=\"listingPrice\"\n\t\t\t\tdecimals={currencyDecimals}\n\t\t\t\tlabel=\"Enter price\"\n\t\t\t\tlabelLocation=\"top\"\n\t\t\t\tcontrols={\n\t\t\t\t\t<CurrencyOptionsSelect\n\t\t\t\t\t\tselectedCurrency$={$listingPrice?.currency}\n\t\t\t\t\t\tcollectionAddress={collectionAddress}\n\t\t\t\t\t\tchainId={chainId}\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tvalue={value}\n\t\t\t\tonChange={(event) => changeListingPrice(event.target.value)}\n\t\t\t\twidth=\"full\"\n\t\t\t/>\n\n\t\t\t{balanceError && (\n\t\t\t\t<Text\n\t\t\t\t\tcolor=\"negative\"\n\t\t\t\t\tfontSize=\"xsmall\"\n\t\t\t\t\tfontFamily=\"body\"\n\t\t\t\t\tfontWeight=\"semibold\"\n\t\t\t\t\tposition=\"absolute\"\n\t\t\t\t\tstyle={{ bottom: '-13px' }}\n\t\t\t\t>\n\t\t\t\t\t{balanceError}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t</Box>\n\t);\n});\n\nexport default PriceInput;\n","import { Box, TokenImage } from '@0xsequence/design-system';\nimport type { Observable } from '@legendapp/state';\nimport { useState } from 'react';\nimport type { Address } from 'viem';\nimport type { Price } from '../../../../../../types';\n\nfunction CurrencyImage({\n\t$listingPrice,\n}: { $listingPrice: Observable<Price | undefined> }) {\n\tconst [imageLoadErrorCurrencyAddresses, setImageLoadErrorCurrencyAddresses] =\n\t\tuseState<Address[] | null>(null);\n\n\tif (\n\t\timageLoadErrorCurrencyAddresses?.includes(\n\t\t\t$listingPrice.currency.contractAddress.get() as Address,\n\t\t)\n\t) {\n\t\treturn (\n\t\t\t<Box\n\t\t\t\twidth=\"3\"\n\t\t\t\theight=\"3\"\n\t\t\t\tborderRadius=\"circle\"\n\t\t\t\tbackground=\"backgroundSecondary\"\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<TokenImage\n\t\t\tsrc={$listingPrice.currency.imageUrl.get()}\n\t\t\tonError={() => {\n\t\t\t\tconst listingPrice = $listingPrice?.get();\n\t\t\t\tif (listingPrice) {\n\t\t\t\t\tsetImageLoadErrorCurrencyAddresses((prev) => {\n\t\t\t\t\t\tif (!prev)\n\t\t\t\t\t\t\treturn [listingPrice.currency.contractAddress as Address];\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t!prev.includes(listingPrice.currency.contractAddress as Address)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\t\t...prev,\n\t\t\t\t\t\t\t\tlistingPrice.currency.contractAddress as Address,\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn prev;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}}\n\t\t\tsize=\"xs\"\n\t\t/>\n\t);\n}\nexport default CurrencyImage;\n","import { Skeleton } from '@0xsequence/design-system';\nimport type { Observable } from '@legendapp/state';\nimport { observer } from '@legendapp/state/react';\nimport { useEffect } from 'react';\nimport type { Hex } from 'viem';\nimport type { ChainId, Currency } from '../../../../../_internal';\nimport { useCurrencies } from '../../../../../hooks';\nimport { useCurrencyOptions } from '../../../../../hooks/useCurrencyOptions';\nimport {\n\tCustomSelect,\n\ttype SelectItem,\n} from '../../../../components/_internals/custom-select/CustomSelect';\n\ntype CurrencyOptionsSelectProps = {\n\tcollectionAddress: Hex;\n\tchainId: ChainId;\n\tselectedCurrency$: Observable<Currency | null | undefined>;\n};\n\nconst CurrencyOptionsSelect = observer(function CurrencyOptionsSelect({\n\tchainId,\n\tcollectionAddress,\n\tselectedCurrency$,\n}: CurrencyOptionsSelectProps) {\n\tconst currency = selectedCurrency$.get() as Currency;\n\tconst currencyOptions = useCurrencyOptions({ collectionAddress });\n\tconst { data: currencies, isLoading: currenciesLoading } = useCurrencies({\n\t\tchainId,\n\t\tcurrencyOptions,\n\t});\n\n\t// set default currency\n\t// biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n\tuseEffect(() => {\n\t\tif (\n\t\t\tcurrencies &&\n\t\t\tcurrencies.length > 0 &&\n\t\t\t!selectedCurrency$.get()?.contractAddress\n\t\t) {\n\t\t\tselectedCurrency$.set(currencies[0]);\n\t\t}\n\t}, [currencies]);\n\n\tif (!currencies || currenciesLoading || !currency.symbol) {\n\t\treturn <Skeleton borderRadius=\"lg\" width=\"20\" height=\"7\" marginRight=\"3\" />;\n\t}\n\n\tconst options = currencies.map(\n\t\t(currency) =>\n\t\t\t({\n\t\t\t\tlabel: currency.symbol,\n\t\t\t\tvalue: currency.contractAddress,\n\t\t\t\tcontent: currency.symbol,\n\t\t\t}) as SelectItem,\n\t);\n\n\tconst onChange = (value: string) => {\n\t\tconst selectedCurrency = currencies.find(\n\t\t\t(currency) => currency.contractAddress === value,\n\t\t);\n\t\tselectedCurrency$.set(selectedCurrency);\n\t};\n\n\treturn (\n\t\t<CustomSelect\n\t\t\titems={options}\n\t\t\tonValueChange={onChange}\n\t\t\tdefaultValue={{\n\t\t\t\tvalue: currency.contractAddress,\n\t\t\t\tcontent: currency.symbol,\n\t\t\t}}\n\t\t/>\n\t);\n});\n\nexport default CurrencyOptionsSelect;\n","import { Box, Image, Skeleton, Text } from '@0xsequence/design-system';\nimport type { Hex } from 'viem';\nimport { useCollectible } from '../../../../../hooks';\nimport ChessTileImage from '../../../../images/chess-tile.png';\nimport { tokenPreview } from './styles.css';\n\ntype TokenPreviewProps = {\n\tcollectionName?: string;\n\tcollectionAddress: Hex;\n\tcollectibleId: string;\n\tchainId: string;\n};\n\nexport default function TokenPreview({\n\tcollectionName,\n\tcollectionAddress,\n\tcollectibleId,\n\tchainId,\n}: TokenPreviewProps) {\n\tconst { data: collectable, isLoading: collectibleLoading } = useCollectible({\n\t\tchainId: chainId,\n\t\tcollectionAddress: collectionAddress,\n\t\tcollectibleId,\n\t});\n\n\tif (collectibleLoading) {\n\t\treturn (\n\t\t\t<Box display=\"flex\" alignItems=\"center\" gap=\"3\" width=\"full\">\n\t\t\t\t<Skeleton width={'9'} height={'9'} borderRadius={'xs'} />\n\n\t\t\t\t<Box display=\"flex\" flexGrow=\"1\" gap=\"1\" flexDirection=\"column\">\n\t\t\t\t\t<Skeleton width=\"1/3\" height=\"3\" />\n\t\t\t\t\t<Skeleton width=\"1/2\" height=\"3\" />\n\t\t\t\t</Box>\n\t\t\t</Box>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Box className={tokenPreview}>\n\t\t\t<Image\n\t\t\t\tsrc={collectable?.image || ChessTileImage}\n\t\t\t\talt={collectable?.name}\n\t\t\t\twidth={'9'}\n\t\t\t\theight={'9'}\n\t\t\t\tborderRadius={'xs'}\n\t\t\t\tstyle={{ objectFit: 'cover' }}\n\t\t\t/>\n\n\t\t\t<Box display={'flex'} flexDirection={'column'} marginLeft={'3'}>\n\t\t\t\t<Text\n\t\t\t\t\tfontSize={'small'}\n\t\t\t\t\tcolor={'text80'}\n\t\t\t\t\tfontWeight={'medium'}\n\t\t\t\t\tfontFamily=\"body\"\n\t\t\t\t>\n\t\t\t\t\t{collectionName}\n\t\t\t\t</Text>\n\n\t\t\t\t<Text\n\t\t\t\t\tfontSize={'small'}\n\t\t\t\t\tfontWeight={'bold'}\n\t\t\t\t\tcolor={'text100'}\n\t\t\t\t\tfontFamily=\"body\"\n\t\t\t\t>\n\t\t\t\t\t{collectable?.name}\n\t\t\t\t</Text>\n\t\t\t</Box>\n\t\t</Box>\n\t);\n}\n","import { Box, Image, Skeleton, Text } from '@0xsequence/design-system';\nimport { type Hex, formatUnits } from 'viem';\nimport type { Price } from '../../../../../../types';\nimport {\n\tuseMarketplaceConfig,\n\tuseRoyaltyPercentage,\n} from '../../../../../hooks';\n\ntype TransactionDetailsProps = {\n\tcollectibleId: string;\n\tcollectionAddress: Hex;\n\tchainId: string;\n\tprice?: Price;\n\tcurrencyImageUrl?: string;\n\t// We use a placeholder price for create listing modal\n\tshowPlaceholderPrice?: boolean;\n};\n\n//TODO: Move this\nconst DEFAULT_MARKETPLACE_FEE_PERCENTAGE = 2.5;\n\nexport default function TransactionDetails({\n\tcollectibleId,\n\tcollectionAddress,\n\tchainId,\n\tprice,\n\tshowPlaceholderPrice,\n\tcurrencyImageUrl,\n}: TransactionDetailsProps) {\n\tconst { data, isLoading: marketplaceConfigLoading } = useMarketplaceConfig();\n\n\tconst marketplaceFeePercentage =\n\t\tdata?.collections.find(\n\t\t\t(collection) => collection.collectionAddress === collectionAddress,\n\t\t)?.marketplaceFeePercentage || DEFAULT_MARKETPLACE_FEE_PERCENTAGE;\n\tconst { data: royaltyPercentage, isLoading: royaltyPercentageLoading } =\n\t\tuseRoyaltyPercentage({\n\t\t\tchainId,\n\t\t\tcollectionAddress,\n\t\t\tcollectibleId,\n\t\t});\n\n\tconst priceLoading =\n\t\t!price || marketplaceConfigLoading || royaltyPercentageLoading;\n\n\tlet formattedAmount =\n\t\tprice && formatUnits(BigInt(price.amountRaw), price.currency.decimals);\n\n\tif (royaltyPercentage !== undefined && formattedAmount && price) {\n\t\tformattedAmount = (\n\t\t\tNumber.parseFloat(formattedAmount) -\n\t\t\t(Number.parseFloat(formattedAmount) * Number(royaltyPercentage)) / 100\n\t\t).toFixed(price.currency.decimals);\n\t}\n\n\tif (marketplaceFeePercentage !== undefined && formattedAmount && price) {\n\t\tformattedAmount = (\n\t\t\tNumber.parseFloat(formattedAmount) -\n\t\t\t(Number.parseFloat(formattedAmount) * marketplaceFeePercentage) / 100\n\t\t).toFixed(price.currency.decimals);\n\t}\n\n\treturn (\n\t\t<Box\n\t\t\twidth=\"full\"\n\t\t\tdisplay={'flex'}\n\t\t\tjustifyContent={'space-between'}\n\t\t\talignItems={'center'}\n\t\t>\n\t\t\t<Text fontSize={'small'} color={'text50'} fontFamily=\"body\">\n\t\t\t\tTotal earnings\n\t\t\t</Text>\n\n\t\t\t<Box display=\"flex\" alignItems=\"center\" gap=\"2\">\n\t\t\t\t<Image src={currencyImageUrl} width=\"3\" height=\"3\" />\n\n\t\t\t\t{priceLoading ? (\n\t\t\t\t\t<Skeleton width=\"16\" height={'4'} />\n\t\t\t\t) : (\n\t\t\t\t\t<Text fontSize={'small'} color={'text100'} fontFamily=\"body\">\n\t\t\t\t\t\t{showPlaceholderPrice ? '0' : formattedAmount}{' '}\n\t\t\t\t\t\t{price.currency.symbol}\n\t\t\t\t\t</Text>\n\t\t\t\t)}\n\t\t\t</Box>\n\t\t</Box>\n\t);\n}\n","import {\n\tCloseIcon,\n\tIconButton,\n\tSkeleton,\n\tText,\n} from '@0xsequence/design-system';\nimport { TRANSACTION_CONFIRMATIONS_DEFAULT } from '@0xsequence/kit';\nimport type { ChainId } from '@0xsequence/network';\nimport { observer } from '@legendapp/state/react';\nimport { Close, Content, Overlay, Portal, Root } from '@radix-ui/react-dialog';\nimport type { QueryKey } from '@tanstack/react-query';\nimport { useEffect, useState } from 'react';\nimport { type Hex, WaitForTransactionReceiptTimeoutError } from 'viem';\nimport type { Price } from '../../../../../../types';\nimport { getPublicRpcClient } from '../../../../../../utils';\nimport { getQueryClient } from '../../../../../_internal';\nimport type { TransactionType } from '../../../../../_internal/transaction-machine/execute-transaction';\nimport { useCollectible } from '../../../../../hooks';\nimport type { ModalCallbacks } from '../../types';\nimport TransactionFooter from '../transaction-footer';\nimport TransactionPreview from '../transactionPreview';\nimport { type TransactionStatus, transactionStatusModal$ } from './store';\nimport {\n\tcloseButton,\n\tdialogOverlay,\n\ttransactionStatusModalContent,\n} from './styles.css';\nimport { getTransactionStatusModalMessage } from './util/getMessage';\nimport { getTransactionStatusModalTitle } from './util/getTitle';\n\nexport type ShowTransactionStatusModalArgs = {\n\thash?: Hex;\n\torderId?: string;\n\tprice?: Price;\n\tcollectionAddress: Hex;\n\tchainId: string;\n\tcollectibleId: string;\n\ttype: TransactionType;\n\tcallbacks?: ModalCallbacks;\n\tqueriesToInvalidate?: QueryKey[];\n\tconfirmations?: number;\n\tblocked?: boolean;\n};\n\nexport const useTransactionStatusModal = () => {\n\treturn {\n\t\tshow: (args: ShowTransactionStatusModalArgs) => {\n\t\t\tif (args.blocked) return;\n\n\t\t\ttransactionStatusModal$.open(args);\n\t\t},\n\t\tclose: () => transactionStatusModal$.close(),\n\t};\n};\n\nconst TransactionStatusModal = observer(() => {\n\tconst {\n\t\ttype,\n\t\thash,\n\t\torderId,\n\t\tprice,\n\t\tcollectionAddress,\n\t\tchainId,\n\t\tcollectibleId,\n\t\tcallbacks,\n\t\tqueriesToInvalidate,\n\t\tconfirmations,\n\t} = transactionStatusModal$.state.get();\n\tconst { data: collectible, isLoading: collectibleLoading } = useCollectible({\n\t\tcollectionAddress,\n\t\tchainId,\n\t\tcollectibleId,\n\t});\n\tconst [transactionStatus, setTransactionStatus] = useState<TransactionStatus>(\n\t\torderId ? 'SUCCESS' : 'PENDING',\n\t);\n\n\t// biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n\tuseEffect(() => {\n\t\tif (!transactionStatusModal$.isOpen.get()) return;\n\n\t\tconsole.log('Waiting for transaction receipt ...');\n\t\twaitForTransactionReceiptPromise\n\t\t\t?.then((receipt) => {\n\t\t\t\tif (receipt.status === 'success') {\n\t\t\t\t\tconsole.log('receipt', receipt);\n\t\t\t\t\tsetTransactionStatus('SUCCESS');\n\t\t\t\t\tif (callbacks?.onSuccess) {\n\t\t\t\t\t\tcallbacks.onSuccess(hash || '0x');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.debug('onSuccess callback not provided:', hash);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tif (callbacks?.onError) {\n\t\t\t\t\tcallbacks.onError(error);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.debug('onError callback not provided:', error);\n\t\t\t\t}\n\n\t\t\t\tif (error instanceof WaitForTransactionReceiptTimeoutError) {\n\t\t\t\t\tsetTransactionStatus('TIMEOUT');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tsetTransactionStatus('FAILED');\n\t\t\t});\n\n\t\tif (queriesToInvalidate) {\n\t\t\tqueryClient.invalidateQueries({ queryKey: [...queriesToInvalidate] });\n\t\t}\n\n\t\treturn () => {\n\t\t\tsetTransactionStatus('PENDING');\n\t\t};\n\t}, [\n\t\tcallbacks?.onSuccess,\n\t\tcallbacks?.onError,\n\t\ttransactionStatusModal$.isOpen.get(),\n\t]);\n\n\tif (!type) {\n\t\treturn null;\n\t}\n\n\tconst title = getTransactionStatusModalTitle({\n\t\ttransactionStatus,\n\t\ttransactionType: type,\n\t\torderId,\n\t});\n\n\tconst message = getTransactionStatusModalMessage({\n\t\ttransactionStatus,\n\t\ttransactionType: type,\n\t\tcollectibleName: collectible?.name || '',\n\t\torderId,\n\t});\n\n\tconst queryClient = getQueryClient();\n\tconst publicClient = chainId ? getPublicRpcClient(chainId) : null;\n\tconst waitForTransactionReceiptPromise =\n\t\tpublicClient?.waitForTransactionReceipt({\n\t\t\tconfirmations: confirmations || TRANSACTION_CONFIRMATIONS_DEFAULT,\n\t\t\thash: hash || '0x',\n\t\t});\n\n\treturn (\n\t\t<Root open={transactionStatusModal$.isOpen.get()}>\n\t\t\t<Portal>\n\t\t\t\t<Overlay className={dialogOverlay} />\n\n\t\t\t\t<Content className={transactionStatusModalContent}>\n\t\t\t\t\t{title ? (\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\tfontSize=\"large\"\n\t\t\t\t\t\t\tfontWeight=\"bold\"\n\t\t\t\t\t\t\tcolor=\"text100\"\n\t\t\t\t\t\t\tfontFamily=\"body\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<Skeleton width=\"16\" height=\"6\" />\n\t\t\t\t\t)}\n\n\t\t\t\t\t{message ? (\n\t\t\t\t\t\t<Text fontSize=\"small\" color=\"text80\" fontFamily=\"body\">\n\t\t\t\t\t\t\t{message}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<Skeleton width=\"20\" height=\"4\" />\n\t\t\t\t\t)}\n\n\t\t\t\t\t<TransactionPreview\n\t\t\t\t\t\torderId={orderId}\n\t\t\t\t\t\tprice={price}\n\t\t\t\t\t\tcollectionAddress={collectionAddress}\n\t\t\t\t\t\tchainId={chainId}\n\t\t\t\t\t\tcollectible={collectible}\n\t\t\t\t\t\tcollectibleLoading={collectibleLoading}\n\t\t\t\t\t\tcurrencyImageUrl={price?.currency.imageUrl}\n\t\t\t\t\t\tisConfirming={transactionStatus === 'PENDING'}\n\t\t\t\t\t\tisConfirmed={transactionStatus === 'SUCCESS'}\n\t\t\t\t\t\tisFailed={transactionStatus === 'FAILED'}\n\t\t\t\t\t\tisTimeout={transactionStatus === 'TIMEOUT'}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<TransactionFooter\n\t\t\t\t\t\ttransactionHash={hash}\n\t\t\t\t\t\torderId={orderId}\n\t\t\t\t\t\tisConfirming={transactionStatus === 'PENDING'}\n\t\t\t\t\t\tisConfirmed={transactionStatus === 'SUCCESS'}\n\t\t\t\t\t\tisFailed={transactionStatus === 'FAILED'}\n\t\t\t\t\t\tisTimeout={transactionStatus === 'TIMEOUT'}\n\t\t\t\t\t\tchainId={chainId as unknown as ChainId}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<Close\n\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\ttransactionStatusModal$.close();\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tclassName={closeButton}\n\t\t\t\t\t\tasChild\n\t\t\t\t\t>\n\t\t\t\t\t\t<IconButton size=\"xs\" aria-label=\"Close modal\" icon={CloseIcon} />\n\t\t\t\t\t</Close>\n\t\t\t\t</Content>\n\t\t\t</Portal>\n\t\t</Root>\n\t);\n});\n\nexport default TransactionStatusModal;\n","import { type ChainId, networks } from '@0xsequence/network';\nimport type { Hex } from 'viem';\nimport { Box, Text, Spinner } from '@0xsequence/design-system';\nimport { truncateMiddle } from '../../../../../../utils';\nimport SvgPositiveCircleIcon from '../../../../icons/PositiveCircleIcon';\n\ntype TransactionFooterProps = {\n\ttransactionHash: Hex | undefined;\n\torderId?: string;\n\tisConfirming: boolean;\n\tisConfirmed: boolean;\n\tisFailed: boolean;\n\tisTimeout: boolean;\n\tchainId: ChainId;\n};\n\nexport default function TransactionFooter({\n\ttransactionHash,\n\torderId,\n\tisConfirming,\n\tisConfirmed,\n\tisFailed,\n\tisTimeout,\n\tchainId,\n}: TransactionFooterProps) {\n\tconst icon =\n\t\t((isConfirmed || orderId) && <SvgPositiveCircleIcon size=\"md\" />) ||\n\t\t(isConfirming && <Spinner size=\"md\" />);\n\n\tconst title =\n\t\t((isConfirmed || orderId) && 'Transaction complete') ||\n\t\t(isConfirming && 'Processing transaction') ||\n\t\t(isFailed && 'Transaction failed') ||\n\t\t(isTimeout && 'Transaction took longer than expected');\n\n\tconst transactionUrl = `${networks[chainId as unknown as ChainId]?.blockExplorer?.rootUrl}tx/${transactionHash}`;\n\treturn (\n\t\t<Box display=\"flex\" alignItems=\"center\">\n\t\t\t{icon}\n\n\t\t\t<Text\n\t\t\t\tcolor=\"text50\"\n\t\t\t\tfontSize=\"normal\"\n\t\t\t\tfontWeight=\"medium\"\n\t\t\t\tmarginLeft=\"2\"\n\t\t\t\tfontFamily=\"body\"\n\t\t\t>\n\t\t\t\t{title}\n\t\t\t</Text>\n\n\t\t\t<Box\n\t\t\t\tas=\"a\"\n\t\t\t\tflexGrow=\"1\"\n\t\t\t\tmarginLeft=\"2\"\n\t\t\t\thref={transactionUrl}\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\ttextAlign=\"right\"\n\t\t\t\ttextDecoration=\"none\"\n\t\t\t>\n\t\t\t\t<Text\n\t\t\t\t\t// TODO: Replace \"polygonLight\" with the actual color from design system\n\t\t\t\t\tcolor=\"polygonLight\"\n\t\t\t\t\ttextAlign=\"right\"\n\t\t\t\t\tfontSize=\"normal\"\n\t\t\t\t\tfontWeight=\"medium\"\n\t\t\t\t\tfontFamily=\"body\"\n\t\t\t\t>\n\t\t\t\t\t{transactionHash && truncateMiddle(transactionHash, 4, 4)}\n\t\t\t\t</Text>\n\t\t\t</Box>\n\t\t</Box>\n\t);\n}\n","import {\n\tBox,\n\tImage,\n\tNetworkImage,\n\tSkeleton,\n\tText,\n} from '@0xsequence/design-system';\nimport type { TokenMetadata } from '@0xsequence/metadata';\nimport { observer } from '@legendapp/state/react';\nimport { type Hex, formatUnits } from 'viem';\nimport type { Price } from '../../../../../../types';\nimport { useCollection } from '../../../../../hooks';\nimport ChessTileImage from '../../../../images/chess-tile.png';\nimport TimeAgo from '../timeAgo';\nimport { transactionStatusModal$ } from '../transactionStatusModal/store';\nimport { useTransactionPreviewTitle } from './useTransactionPreviewTitle';\n\ntype TransactionPreviewProps = {\n\torderId?: string;\n\tprice?: Price;\n\tcollectionAddress: Hex;\n\tchainId: string;\n\tcollectible: TokenMetadata | undefined;\n\tcollectibleLoading: boolean;\n\tcurrencyImageUrl?: string;\n\tisConfirming: boolean;\n\tisConfirmed: boolean;\n\tisFailed: boolean;\n\tisTimeout: boolean;\n};\n\nconst TransactionPreview = observer(\n\t({\n\t\torderId,\n\t\tprice,\n\t\tcollectionAddress,\n\t\tchainId,\n\t\tcollectible,\n\t\tcollectibleLoading,\n\t\tcurrencyImageUrl,\n\t\tisConfirming,\n\t\tisConfirmed,\n\t\tisFailed,\n\t\tisTimeout,\n\t}: TransactionPreviewProps) => {\n\t\tconst { type } = transactionStatusModal$.state.get();\n\t\tconst title = useTransactionPreviewTitle(\n\t\t\torderId,\n\t\t\t{ isConfirmed, isConfirming, isFailed, isTimeout },\n\t\t\ttype,\n\t\t);\n\t\tconst { data: collection, isLoading: collectionLoading } = useCollection({\n\t\t\tcollectionAddress,\n\t\t\tchainId,\n\t\t});\n\n\t\tconst collectibleImage = collectible?.image;\n\t\tconst collectibleName = collectible?.name;\n\t\tconst collectionName = collection?.name;\n\t\tconst priceFormatted = price\n\t\t\t? formatUnits(BigInt(price?.amountRaw), price?.currency.decimals)\n\t\t\t: undefined;\n\n\t\tif (collectibleLoading || collectionLoading) {\n\t\t\treturn (\n\t\t\t\t<Box style={{ height: 83 }} width=\"full\" borderRadius=\"md\">\n\t\t\t\t\t<Skeleton style={{ width: '100%', height: '100%' }} />\n\t\t\t\t</Box>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<Box padding=\"3\" background=\"backgroundSecondary\" borderRadius=\"md\">\n\t\t\t\t<Box display=\"flex\" alignItems=\"center\">\n\t\t\t\t\t<Text\n\t\t\t\t\t\tcolor=\"text50\"\n\t\t\t\t\t\tfontSize=\"small\"\n\t\t\t\t\t\tfontWeight=\"medium\"\n\t\t\t\t\t\tmarginRight=\"1\"\n\t\t\t\t\t\tfontFamily=\"body\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{title}\n\t\t\t\t\t</Text>\n\n\t\t\t\t\t<NetworkImage chainId={Number(chainId)} size=\"xs\" />\n\n\t\t\t\t\t{isConfirming && <TimeAgo date={new Date()} />}\n\t\t\t\t</Box>\n\n\t\t\t\t<Box display=\"flex\" alignItems=\"center\" marginTop=\"2\">\n\t\t\t\t\t<Image\n\t\t\t\t\t\tsrc={collectibleImage || ChessTileImage}\n\t\t\t\t\t\talt={collectibleName}\n\t\t\t\t\t\twidth=\"9\"\n\t\t\t\t\t\theight=\"9\"\n\t\t\t\t\t\tborderRadius=\"xs\"\n\t\t\t\t\t\tmarginRight=\"3\"\n\t\t\t\t\t\tstyle={{ objectFit: 'cover' }}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<Box\n\t\t\t\t\t\tdisplay=\"flex\"\n\t\t\t\t\t\tflexDirection=\"column\"\n\t\t\t\t\t\talignItems=\"flex-start\"\n\t\t\t\t\t\tgap=\"0.5\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\tcolor=\"text80\"\n\t\t\t\t\t\t\tfontSize=\"small\"\n\t\t\t\t\t\t\tfontWeight=\"medium\"\n\t\t\t\t\t\t\tfontFamily=\"body\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{collectibleName}\n\t\t\t\t\t\t</Text>\n\n\t\t\t\t\t\t<Text color=\"text100\" fontSize=\"small\" fontFamily=\"body\">\n\t\t\t\t\t\t\t{collectionName}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</Box>\n\n\t\t\t\t\t{price && (\n\t\t\t\t\t\t<Box\n\t\t\t\t\t\t\tflexGrow=\"1\"\n\t\t\t\t\t\t\tdisplay=\"flex\"\n\t\t\t\t\t\t\talignItems=\"center\"\n\t\t\t\t\t\t\tjustifyContent=\"flex-end\"\n\t\t\t\t\t\t\tgap=\"1\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Image src={currencyImageUrl} width=\"3\" height=\"3\" />\n\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tcolor=\"text80\"\n\t\t\t\t\t\t\t\tfontSize=\"small\"\n\t\t\t\t\t\t\t\tfontWeight=\"medium\"\n\t\t\t\t\t\t\t\tfontFamily=\"body\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{priceFormatted} {price?.currency.symbol}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t)}\n\t\t\t\t</Box>\n\t\t\t</Box>\n\t\t);\n\t},\n);\n\nexport default TransactionPreview;\n","import { Box, Text } from '@0xsequence/design-system';\nimport { formatDistanceToNow } from 'date-fns';\nimport { useEffect, useState } from 'react';\n\ntype TimeAgoProps = {\n\tdate: Date;\n};\n\nexport default function TimeAgo({ date }: TimeAgoProps) {\n\tconst [timeAgo, setTimeAgo] = useState<string>('');\n\n\tuseEffect(() => {\n\t\tconst interval = setInterval(() => {\n\t\t\tsetTimeAgo(formatDistanceToNow(date));\n\t\t}, 1000);\n\n\t\treturn () => clearInterval(interval);\n\t}, [date]);\n\n\treturn (\n\t\t<Box\n\t\t\tflexGrow=\"1\"\n\t\t\tdisplay=\"flex\"\n\t\t\talignItems=\"center\"\n\t\t\tjustifyContent=\"flex-end\"\n\t\t>\n\t\t\t<Text color=\"text50\" fontSize=\"small\">\n\t\t\t\t{timeAgo}\n\t\t\t</Text>\n\t\t</Box>\n\t);\n}\n","import { observable } from '@legendapp/state';\nimport type { QueryKey } from '@tanstack/react-query';\nimport type { Hex } from 'viem';\nimport type { ShowTransactionStatusModalArgs } from '.';\nimport type { Price } from '../../../../../../types';\nimport type { TransactionType } from '../../../../../_internal/transaction-machine/execute-transaction';\nimport type { ModalCallbacks } from '../../types';\n\nexport type ConfirmationStatus = {\n\tisConfirming: boolean;\n\tisConfirmed: boolean;\n\tisFailed: boolean;\n\tisTimeout: boolean;\n};\n\nexport type TransactionStatus = 'PENDING' | 'SUCCESS' | 'FAILED' | 'TIMEOUT';\n\nexport interface TransactionStatusModalState {\n\tisOpen: boolean;\n\topen: (args: ShowTransactionStatusModalArgs) => void;\n\tclose: () => void;\n\tstate: {\n\t\thash: Hex | undefined;\n\t\torderId: string | undefined;\n\t\tstatus: TransactionStatus;\n\t\ttype: TransactionType | undefined;\n\t\tprice: Price | undefined;\n\t\tcollectionAddress: Hex;\n\t\tchainId: string;\n\t\tcollectibleId: string;\n\t\tcallbacks?: ModalCallbacks;\n\t\tqueriesToInvalidate?: QueryKey[];\n\t\tconfirmations?: number;\n\t\tblocked?: boolean;\n\t};\n}\n\nexport const initialState: TransactionStatusModalState = {\n\tisOpen: false,\n\topen: ({\n\t\thash,\n\t\torderId,\n\t\tprice,\n\t\tcollectionAddress,\n\t\tchainId,\n\t\tcollectibleId,\n\t\ttype,\n\t\tcallbacks,\n\t\tqueriesToInvalidate,\n\t\tconfirmations,\n\t\tblocked,\n\t}) => {\n\t\ttransactionStatusModal$.state.set({\n\t\t\t...transactionStatusModal$.state.get(),\n\t\t\thash,\n\t\t\torderId,\n\t\t\tprice,\n\t\t\tcollectionAddress,\n\t\t\tchainId,\n\t\t\tcollectibleId,\n\t\t\ttype,\n\t\t\tcallbacks,\n\t\t\tqueriesToInvalidate,\n\t\t\tconfirmations,\n\t\t\tblocked,\n\t\t});\n\t\ttransactionStatusModal$.isOpen.set(true);\n\t},\n\tclose: () => {\n\t\ttransactionStatusModal$.isOpen.set(false);\n\t\ttransactionStatusModal$.state.set({\n\t\t\t...initialState.state,\n\t\t});\n\t},\n\tstate: {\n\t\thash: undefined,\n\t\torderId: undefined,\n\t\tstatus: 'PENDING',\n\t\tprice: undefined,\n\t\tcollectionAddress: '' as Hex,\n\t\tchainId: '',\n\t\tcollectibleId: '',\n\t\ttype: undefined,\n\t\tcallbacks: undefined,\n\t\tqueriesToInvalidate: [],\n\t\tconfirmations: -1,\n\t\tblocked: false,\n\t},\n};\n\nexport const transactionStatusModal$ = observable(initialState);\n","export const TRANSACTION_TITLES = {\n\tSELL: {\n\t\tconfirming: 'Selling',\n\t\tconfirmed: 'Sold',\n\t\tfailed: 'Sale failed',\n\t},\n\tLISTING: {\n\t\tconfirming: 'Creating listing',\n\t\tconfirmed: 'Listed',\n\t\tfailed: 'Listing failed',\n\t},\n\tOFFER: {\n\t\tconfirming: 'Creating offer',\n\t\tconfirmed: 'Offer created',\n\t\tfailed: 'Offer failed',\n\t},\n\tBUY: {\n\t\tconfirming: 'Buying',\n\t\tconfirmed: 'Bought',\n\t\tfailed: 'Purchase failed',\n\t},\n\tTRANSFER: {\n\t\tconfirming: 'Transferring',\n\t\tconfirmed: 'Transferred',\n\t\tfailed: 'Transfer failed',\n\t},\n\tCANCEL: {\n\t\tconfirming: 'Cancelling',\n\t\tconfirmed: 'Cancelled',\n\t\tfailed: 'Cancellation failed',\n\t},\n} as const;\n","import type { TransactionType } from '../../../../../_internal/transaction-machine/execute-transaction';\nimport type { ConfirmationStatus } from '../transactionStatusModal/store';\nimport { TRANSACTION_TITLES } from './consts';\n\nexport function useTransactionPreviewTitle(\n\torderId: string | undefined,\n\tstatus: ConfirmationStatus,\n\ttype?: TransactionType | undefined,\n): string {\n\tif (!type) return '';\n\n\tconst { isConfirming, isConfirmed, isFailed } = status;\n\tconst titles = TRANSACTION_TITLES[type];\n\n\tif (isConfirmed || orderId) return titles.confirmed;\n\tif (isConfirming) return titles.confirming;\n\tif (isFailed) return titles.failed;\n\n\treturn '';\n}\n","import 'src/react/ui/styles/modal.css.ts.vanilla.css?source=Lm1vZGFsX2RpYWxvZ0NvbnRlbnRCYXNlX18xeXBsNm50MSB7CiAgdG9wOiA1MCU7CiAgbGVmdDogNTAlOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogIHBhZGRpbmc6IDI0cHg7Cn0KLm1vZGFsX2RpYWxvZ0NvbnRlbnRfbmFycm93X18xeXBsNm50MiB7CiAgd2lkdGg6IDM2MHB4Owp9Ci5tb2RhbF9kaWFsb2dDb250ZW50X3dpZGVfXzF5cGw2bnQzIHsKICB3aWR0aDogNTQwcHg7Cn0KQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMzYwcHgpIHsKICAubW9kYWxfZGlhbG9nQ29udGVudF9uYXJyb3dfXzF5cGw2bnQyIHsKICAgIHdpZHRoOiAxMDAlOwogICAgYm90dG9tOiAwOwogICAgdHJhbnNmb3JtOiB1bnNldDsKICAgIHRvcDogdW5zZXQ7CiAgICBsZWZ0OiB1bnNldDsKICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAgIWltcG9ydGFudDsKICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwICFpbXBvcnRhbnQ7CiAgfQp9CkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU0MHB4KSB7CiAgLm1vZGFsX2RpYWxvZ0NvbnRlbnRfd2lkZV9fMXlwbDZudDMgewogICAgd2lkdGg6IDEwMCU7CiAgICBib3R0b206IDA7CiAgICB0cmFuc2Zvcm06IHVuc2V0OwogICAgdG9wOiB1bnNldDsKICAgIGxlZnQ6IHVuc2V0OwogICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMCAhaW1wb3J0YW50OwogICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAgIWltcG9ydGFudDsKICB9Cn0=';\nexport var closeButton = 'fyvr11lw fyvr1tc fyvr1mo';\nexport var dialogOverlay = 'fyvr1m0 fyvr1o8 fyvr1qg fyvr1so fyvr11xl fyvr11m0 fyvr11rs';\nexport var transactionStatusModalContent = 'modal_dialogContent_wide__1ypl6nt3 modal_dialogContentBase__1ypl6nt1 fyvr11hg fyvr11i4 fyvr11g4 fyvr11gs fyvr11l8 fyvr11wl fyvr11m0 fyvr11rs fyvr1vo fyvr1xs fyvr1zw fyvr1120 fyvr11lc fyvr11mc fyvr11cw';","import { TransactionType } from '../../../../../../_internal/transaction-machine/execute-transaction';\n\nexport function getFormattedType(\n\ttransactionType: TransactionType,\n\tverb = false,\n): string {\n\tswitch (transactionType) {\n\t\tcase TransactionType.TRANSFER:\n\t\t\treturn verb ? 'transferred' : 'transfer';\n\t\tcase TransactionType.LISTING:\n\t\t\treturn verb ? 'listed' : 'listing';\n\t\tcase TransactionType.BUY:\n\t\t\treturn verb ? 'purchased' : 'purchase';\n\t\tcase TransactionType.SELL:\n\t\t\treturn verb ? 'sold' : 'sale';\n\t\tcase TransactionType.CANCEL:\n\t\t\treturn verb ? 'cancelled' : 'cancellation';\n\t\tcase TransactionType.OFFER:\n\t\t\treturn verb ? 'offered' : 'offer';\n\t\tdefault:\n\t\t\treturn 'transaction';\n\t}\n}\n","import type { TransactionType } from '../../../../../../_internal/transaction-machine/execute-transaction';\nimport type { TransactionStatus } from '../store';\nimport { getFormattedType } from './getFormattedType';\n\nexport function getTransactionStatusModalMessage({\n\ttransactionStatus,\n\ttransactionType,\n\tcollectibleName,\n\torderId,\n}: {\n\ttransactionStatus: TransactionStatus;\n\ttransactionType: TransactionType;\n\tcollectibleName: string;\n\torderId?: string;\n}): string {\n\t// without this, the text will be \"Your cancellation CollectibleXXX has failed.\" which sounds weird\n\tconst hideCollectibleName = transactionType === 'CANCEL';\n\n\tif (orderId) {\n\t\treturn `You just ${getFormattedType(transactionType, true)}${!hideCollectibleName ? ` ${collectibleName}` : ''}. It's been confirmed on the blockchain!`;\n\t}\n\n\tswitch (transactionStatus) {\n\t\tcase 'PENDING':\n\t\t\treturn `You just ${getFormattedType(transactionType, true)}${!hideCollectibleName ? ` ${collectibleName}` : ''}. It should be confirmed on the blockchain shortly.`;\n\t\tcase 'SUCCESS':\n\t\t\treturn `You just ${getFormattedType(transactionType, true)}${!hideCollectibleName ? ` ${collectibleName}` : ''}. It’s been confirmed on the blockchain!`;\n\t\tcase 'FAILED':\n\t\t\treturn `Your ${getFormattedType(transactionType)} has failed.`;\n\t\tcase 'TIMEOUT':\n\t\t\treturn `Your ${getFormattedType(transactionType)} takes too long. Click the link below to track it on the explorer.`;\n\t\tdefault:\n\t\t\treturn 'Your transaction is processing';\n\t}\n}\n","import type { TransactionType } from '../../../../../../_internal/transaction-machine/execute-transaction';\nimport type { TransactionStatus } from '../store';\nimport { getFormattedType } from './getFormattedType';\n\nexport function getTransactionStatusModalTitle({\n\ttransactionStatus,\n\ttransactionType,\n\torderId,\n}: {\n\ttransactionStatus: TransactionStatus;\n\ttransactionType: TransactionType | undefined;\n\torderId?: string;\n}): string {\n\tif (transactionType === undefined) {\n\t\treturn '';\n\t}\n\tif (orderId) {\n\t\treturn `Your ${getFormattedType(transactionType)} has processed`;\n\t}\n\n\tswitch (transactionStatus) {\n\t\tcase 'PENDING':\n\t\t\treturn `Your ${getFormattedType(transactionType)} is processing`;\n\t\tcase 'SUCCESS':\n\t\t\treturn `Your ${getFormattedType(transactionType)} has processed`;\n\t\tcase 'FAILED':\n\t\t\treturn `Your ${getFormattedType(transactionType)} has failed`;\n\t\tcase 'TIMEOUT':\n\t\t\treturn `Your ${getFormattedType(transactionType)} takes too long`;\n\t\tdefault:\n\t\t\treturn 'Your transaction is processing';\n\t}\n}\n\nexport function getTransactionStatusModalSpinnerTitle({\n\ttransactionStatus,\n}: {\n\ttransactionStatus: TransactionStatus;\n}): string {\n\tswitch (transactionStatus) {\n\t\tcase 'PENDING':\n\t\t\treturn 'Processing transaction';\n\t\tcase 'SUCCESS':\n\t\t\treturn 'Transaction completed';\n\t\tcase 'FAILED':\n\t\t\treturn 'Transaction failed';\n\t\tcase 'TIMEOUT':\n\t\t\treturn 'Taking too long';\n\t\tdefault:\n\t\t\treturn 'Processing transaction';\n\t}\n}\n","import { observable } from '@legendapp/state';\nimport { addDays } from 'date-fns/addDays';\nimport type { Hash, Hex } from 'viem';\nimport { type Currency, OrderbookKind } from '../../../../types';\nimport type { ModalCallbacks } from '../_internal/types';\n\nconst initialState = {\n\tisOpen: false,\n\tcollectionAddress: '' as Hex,\n\tchainId: '',\n\tcollectibleId: '',\n\torderbookKind: OrderbookKind.sequence_marketplace_v2,\n\tcollectionName: '',\n\tcollectionType: undefined,\n\tlistingPrice: {\n\t\t// to see if approval is needed when modal opens\n\t\tamountRaw: '1',\n\t\tcurrency: {} as Currency,\n\t},\n\t// to track if the user has changed the price, so we know if it's 1 default or user input\n\tlistingPriceChanged: false,\n\tquantity: '1',\n\tinvalidQuantity: false,\n\texpiry: new Date(addDays(new Date(), 7).toJSON()),\n\tcallbacks: undefined as ModalCallbacks | undefined,\n\n\tonError: undefined as undefined | ((error: Error) => void),\n\tonSuccess: undefined as undefined | ((hash: Hash) => void),\n\n\topen: (args: {\n\t\tcollectionAddress: Hex;\n\t\tchainId: string;\n\t\tcollectibleId: string;\n\t\torderbookKind: OrderbookKind;\n\t\tcallbacks?: ModalCallbacks;\n\t\tdefaultCallbacks?: ModalCallbacks;\n\t\tonSuccess?: (hash?: Hash) => void;\n\t\tonError?: (error: Error) => void;\n\t}) => {\n\t\tcreateListingModal$.collectionAddress.set(args.collectionAddress);\n\t\tcreateListingModal$.chainId.set(args.chainId);\n\t\tcreateListingModal$.collectibleId.set(args.collectibleId);\n\t\tcreateListingModal$.orderbookKind.set(args.orderbookKind);\n\t\tcreateListingModal$.callbacks.set(args.callbacks || args.defaultCallbacks);\n\t\tcreateListingModal$.onSuccess.set(args.onSuccess);\n\t\tcreateListingModal$.onError.set(args.onError);\n\t\tcreateListingModal$.isOpen.set(true);\n\t},\n\tclose: () => {\n\t\tcreateListingModal$.isOpen.set(false);\n\t\tcreateListingModal$.callbacks.set(undefined);\n\t},\n};\n\nexport const createListingModal$ = observable(initialState);\n","import { Show, observer } from '@legendapp/state/react';\nimport type { QueryKey } from '@tanstack/react-query';\nimport { useEffect, useState } from 'react';\nimport { type Hex, parseUnits } from 'viem';\nimport {\n\tContractType,\n\ttype OrderbookKind,\n\tcollectableKeys,\n} from '../../../_internal';\nimport { TransactionType } from '../../../_internal/transaction-machine/execute-transaction';\nimport { useCollectible, useCollection, useCurrencies } from '../../../hooks';\nimport { useCurrencyOptions } from '../../../hooks/useCurrencyOptions';\nimport { useMakeOffer } from '../../../hooks/useMakeOffer';\nimport { ActionModal } from '../_internal/components/actionModal/ActionModal';\nimport { ErrorModal } from '../_internal/components/actionModal/ErrorModal';\nimport { LoadingModal } from '../_internal/components/actionModal/LoadingModal';\nimport ExpirationDateSelect from '../_internal/components/expirationDateSelect';\nimport FloorPriceText from '../_internal/components/floorPriceText';\nimport PriceInput from '../_internal/components/priceInput';\nimport QuantityInput from '../_internal/components/quantityInput';\nimport TokenPreview from '../_internal/components/tokenPreview';\nimport { useTransactionStatusModal } from '../_internal/components/transactionStatusModal';\nimport type { ModalCallbacks } from '../_internal/types';\nimport { makeOfferModal$ } from './_store';\n\nexport type ShowMakeOfferModalArgs = {\n\tcollectionAddress: Hex;\n\tchainId: string;\n\tcollectibleId: string;\n\torderbookKind: OrderbookKind;\n};\n\nexport const useMakeOfferModal = (defaultCallbacks?: ModalCallbacks) => ({\n\tshow: (args: ShowMakeOfferModalArgs) =>\n\t\tmakeOfferModal$.open({ ...args, callbacks: defaultCallbacks }),\n\tclose: makeOfferModal$.close,\n});\n\nexport const MakeOfferModal = () => {\n\tconst { show: showTransactionStatusModal } = useTransactionStatusModal();\n\treturn (\n\t\t<Show if={makeOfferModal$.isOpen}>\n\t\t\t<ModalContent showTransactionStatusModal={showTransactionStatusModal} />\n\t\t</Show>\n\t);\n};\n\ntype TransactionStatusModalReturn = ReturnType<\n\ttypeof useTransactionStatusModal\n>;\n\nconst ModalContent = observer(\n\t({\n\t\tshowTransactionStatusModal,\n\t}: {\n\t\tshowTransactionStatusModal: TransactionStatusModalReturn['show'];\n\t}) => {\n\t\tconst state = makeOfferModal$.get();\n\t\tconst {\n\t\t\tcollectionAddress,\n\t\t\tchainId,\n\t\t\tofferPrice,\n\t\t\tofferPriceChanged,\n\t\t\tinvalidQuantity,\n\t\t\tcollectibleId,\n\t\t\torderbookKind,\n\t\t\tcallbacks,\n\t\t} = state;\n\t\tconst [insufficientBalance, setInsufficientBalance] = useState(false);\n\t\tconst [approvalExecutedSuccess, setApprovalExecutedSuccess] =\n\t\t\tuseState(false);\n\t\tconst {\n\t\t\tdata: collectible,\n\t\t\tisLoading: collectableIsLoading,\n\t\t\tisError: collectableIsError,\n\t\t} = useCollectible({\n\t\t\tchainId,\n\t\t\tcollectionAddress,\n\t\t\tcollectibleId,\n\t\t});\n\n\t\tconst {\n\t\t\tdata: collection,\n\t\t\tisLoading: collectionIsLoading,\n\t\t\tisError: collectionIsError,\n\t\t} = useCollection({\n\t\t\tchainId,\n\t\t\tcollectionAddress,\n\t\t});\n\t\tconst currencyOptions = useCurrencyOptions({ collectionAddress });\n\t\tconst { isLoading: currenciesIsLoading } = useCurrencies({\n\t\t\tchainId,\n\t\t\tcurrencyOptions,\n\t\t});\n\n\t\tconst { getMakeOfferSteps } = useMakeOffer({\n\t\t\tchainId,\n\t\t\tcollectionAddress,\n\t\t\torderbookKind,\n\t\t\tenabled: makeOfferModal$.isOpen.get(),\n\t\t\tonSwitchChainRefused: () => makeOfferModal$.close(),\n\t\t\tonApprovalSuccess: () => setApprovalExecutedSuccess(true),\n\t\t\tonTransactionSent: (hash, orderId) => {\n\t\t\t\tif (!hash && !orderId) return;\n\n\t\t\t\tshowTransactionStatusModal({\n\t\t\t\t\thash,\n\t\t\t\t\torderId,\n\t\t\t\t\tprice: makeOfferModal$.offerPrice.get(),\n\t\t\t\t\tcollectionAddress,\n\t\t\t\t\tchainId,\n\t\t\t\t\tcollectibleId,\n\t\t\t\t\ttype: TransactionType.OFFER,\n\t\t\t\t\tqueriesToInvalidate: collectableKeys.all as unknown as QueryKey[],\n\t\t\t\t\tcallbacks,\n\t\t\t\t});\n\t\t\t\tmakeOfferModal$.close();\n\t\t\t},\n\t\t});\n\n\t\tconst dateToUnixTime = (date: Date) =>\n\t\t\tMath.floor(date.getTime() / 1000).toString();\n\n\t\tconst currencyAddress = offerPrice.currency.contractAddress;\n\n\t\tconst { isLoading, steps, refreshSteps } = getMakeOfferSteps({\n\t\t\tcontractType: collection?.type as ContractType,\n\t\t\toffer: {\n\t\t\t\ttokenId: collectibleId,\n\t\t\t\tquantity: parseUnits(\n\t\t\t\t\tmakeOfferModal$.quantity.get(),\n\t\t\t\t\tcollectible?.decimals || 0,\n\t\t\t\t).toString(),\n\t\t\t\texpiry: dateToUnixTime(makeOfferModal$.expiry.get()),\n\t\t\t\tcurrencyAddress,\n\t\t\t\tpricePerToken: offerPrice.amountRaw,\n\t\t\t},\n\t\t});\n\t\tconst approvalNeeded = steps?.approval.isPending;\n\n\t\t// biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n\t\tuseEffect(() => {\n\t\t\tif (!currencyAddress) return;\n\n\t\t\trefreshSteps();\n\t\t}, [currencyAddress]);\n\n\t\tif (collectableIsLoading || collectionIsLoading || currenciesIsLoading) {\n\t\t\treturn (\n\t\t\t\t<LoadingModal\n\t\t\t\t\tisOpen={makeOfferModal$.isOpen.get()}\n\t\t\t\t\tchainId={Number(chainId)}\n\t\t\t\t\tonClose={makeOfferModal$.close}\n\t\t\t\t\ttitle=\"Make an offer\"\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\n\t\tif (collectableIsError || collectionIsError) {\n\t\t\treturn (\n\t\t\t\t<ErrorModal\n\t\t\t\t\tisOpen={makeOfferModal$.isOpen.get()}\n\t\t\t\t\tchainId={Number(chainId)}\n\t\t\t\t\tonClose={makeOfferModal$.close}\n\t\t\t\t\ttitle=\"Make an offer\"\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\n\t\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\n\t\tconst handleStepExecution = async (execute?: any) => {\n\t\t\tif (!execute) return;\n\t\t\ttry {\n\t\t\t\tawait refreshSteps();\n\t\t\t\tawait execute();\n\t\t\t} catch (error) {\n\t\t\t\tif (callbacks?.onError) {\n\t\t\t\t\tcallbacks.onError(error as Error);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.debug('onError callback not provided:', error);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tconst ctas = [\n\t\t\t{\n\t\t\t\tlabel: 'Approve TOKEN',\n\t\t\t\tonClick: () => handleStepExecution(() => steps?.approval.execute()),\n\t\t\t\thidden: !approvalNeeded || approvalExecutedSuccess,\n\t\t\t\tpending: steps?.approval.isExecuting || isLoading,\n\t\t\t\tvariant: 'glass' as const,\n\t\t\t\tdisabled:\n\t\t\t\t\tinvalidQuantity ||\n\t\t\t\t\tisLoading ||\n\t\t\t\t\tsteps?.transaction.isExecuting ||\n\t\t\t\t\tinsufficientBalance ||\n\t\t\t\t\tofferPrice.amountRaw === '0' ||\n\t\t\t\t\t!offerPriceChanged,\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Make offer',\n\t\t\t\tonClick: () => handleStepExecution(() => steps?.transaction.execute()),\n\n\t\t\t\tpending: steps?.transaction.isExecuting || isLoading,\n\t\t\t\tdisabled:\n\t\t\t\t\t(!approvalExecutedSuccess && approvalNeeded) ||\n\t\t\t\t\tofferPrice.amountRaw === '0' ||\n\t\t\t\t\tinsufficientBalance ||\n\t\t\t\t\tisLoading ||\n\t\t\t\t\tinvalidQuantity ||\n\t\t\t\t\tofferPrice.amountRaw === '0',\n\t\t\t},\n\t\t];\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<ActionModal\n\t\t\t\t\tisOpen={makeOfferModal$.isOpen.get()}\n\t\t\t\t\tchainId={Number(chainId)}\n\t\t\t\t\tonClose={() => makeOfferModal$.close()}\n\t\t\t\t\ttitle=\"Make an offer\"\n\t\t\t\t\tctas={ctas}\n\t\t\t\t>\n\t\t\t\t\t<TokenPreview\n\t\t\t\t\t\tcollectionName={collection?.name}\n\t\t\t\t\t\tcollectionAddress={collectionAddress}\n\t\t\t\t\t\tcollectibleId={collectibleId}\n\t\t\t\t\t\tchainId={chainId}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<PriceInput\n\t\t\t\t\t\tchainId={chainId}\n\t\t\t\t\t\tcollectionAddress={collectionAddress}\n\t\t\t\t\t\t$listingPrice={makeOfferModal$.offerPrice}\n\t\t\t\t\t\tonPriceChange={() => makeOfferModal$.offerPriceChanged.set(true)}\n\t\t\t\t\t\tcheckBalance={{\n\t\t\t\t\t\t\tenabled: true,\n\t\t\t\t\t\t\tcallback: (state) => setInsufficientBalance(state),\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{collection?.type === ContractType.ERC1155 && (\n\t\t\t\t\t\t<QuantityInput\n\t\t\t\t\t\t\t$quantity={makeOfferModal$.quantity}\n\t\t\t\t\t\t\t$invalidQuantity={makeOfferModal$.invalidQuantity}\n\t\t\t\t\t\t\tdecimals={collectible?.decimals || 0}\n\t\t\t\t\t\t\tmaxQuantity={String(Number.MAX_SAFE_INTEGER)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{offerPrice.amountRaw !== '0' &&\n\t\t\t\t\t\tofferPriceChanged &&\n\t\t\t\t\t\t!insufficientBalance && (\n\t\t\t\t\t\t\t<FloorPriceText\n\t\t\t\t\t\t\t\ttokenId={collectibleId}\n\t\t\t\t\t\t\t\tchainId={chainId}\n\t\t\t\t\t\t\t\tcollectionAddress={collectionAddress}\n\t\t\t\t\t\t\t\tprice={offerPrice}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t<ExpirationDateSelect $date={makeOfferModal$.expiry} />\n\t\t\t\t</ActionModal>\n\t\t\t</>\n\t\t);\n\t},\n);\n","import { useCallback, useState } from 'react';\nimport type { Hash } from 'viem';\nimport type { TransactionError } from '../../utils/_internal/error/transaction';\nimport {\n\ttype OfferInput,\n\ttype TransactionSteps,\n\tTransactionType,\n} from '../_internal/transaction-machine/execute-transaction';\nimport {\n\ttype UseTransactionMachineConfig,\n\tuseTransactionMachine,\n} from '../_internal/transaction-machine/useTransactionMachine';\n\ninterface UseMakeOfferArgs extends Omit<UseTransactionMachineConfig, 'type'> {\n\tonSuccess?: (hash: Hash) => void;\n\tonError?: (error: TransactionError) => void;\n\tonTransactionSent?: (hash?: Hash, orderId?: string) => void;\n\tonApprovalSuccess?: (hash: Hash) => void;\n\tonSwitchChainRefused: () => void;\n\tenabled: boolean;\n}\n\ntype ExecutionState = 'approval' | 'offer' | null;\n\nexport const useMakeOffer = ({\n\tonSuccess,\n\tonError,\n\tonTransactionSent,\n\tonApprovalSuccess,\n\tonSwitchChainRefused,\n\tenabled,\n\t...config\n}: UseMakeOfferArgs) => {\n\tconst [isLoading, setIsLoading] = useState(false);\n\tconst [steps, setSteps] = useState<TransactionSteps | null>(null);\n\tconst [executionState, setExecutionState] = useState<ExecutionState>(null);\n\tconst machineConfig = {\n\t\t...config,\n\t\ttype: TransactionType.OFFER,\n\t};\n\n\tconst { machine, isLoading: isMachineLoading } = useTransactionMachine({\n\t\tconfig: machineConfig,\n\t\tenabled,\n\t\tonSuccess: (hash) => {\n\t\t\tsetExecutionState(null);\n\t\t\tonSuccess?.(hash);\n\t\t},\n\t\tonError: (error) => {\n\t\t\tsetExecutionState(null);\n\t\t\tonError?.(error);\n\t\t},\n\t\tonTransactionSent,\n\t\tonApprovalSuccess: (hash) => {\n\t\t\tsetExecutionState(null);\n\t\t\tonApprovalSuccess?.(hash);\n\t\t},\n\t\tonSwitchChainRefused,\n\t});\n\n\tconst loadSteps = useCallback(\n\t\tasync (props: OfferInput) => {\n\t\t\tif (!machine) return;\n\t\t\tsetIsLoading(true);\n\t\t\tconst generatedSteps = await machine.getTransactionSteps(props);\n\t\t\tif (!generatedSteps) {\n\t\t\t\tsetIsLoading(false);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetSteps({\n\t\t\t\t...generatedSteps,\n\t\t\t\tapproval: {\n\t\t\t\t\t...generatedSteps.approval,\n\t\t\t\t\tisExecuting: executionState === 'approval',\n\t\t\t\t},\n\t\t\t\ttransaction: {\n\t\t\t\t\t...generatedSteps.transaction,\n\t\t\t\t\tisExecuting: executionState === 'offer',\n\t\t\t\t},\n\t\t\t});\n\t\t\tsetIsLoading(false);\n\t\t},\n\t\t[machine, executionState],\n\t);\n\n\tconst handleStepExecution = useCallback(\n\t\tasync (type: ExecutionState, execute: () => Promise<any> | undefined) => {\n\t\t\tif (!type) return;\n\t\t\tsetExecutionState(type);\n\t\t\ttry {\n\t\t\t\tawait execute();\n\t\t\t} catch (error) {\n\t\t\t\tsetExecutionState(null);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t},\n\t\t[],\n\t);\n\n\treturn {\n\t\tmakeOffer: (props: OfferInput) => machine?.start(props),\n\t\tgetMakeOfferSteps: (props: OfferInput) => ({\n\t\t\tisLoading,\n\t\t\tsteps: steps\n\t\t\t\t? {\n\t\t\t\t\t\t...steps,\n\t\t\t\t\t\tapproval: {\n\t\t\t\t\t\t\t...steps.approval,\n\t\t\t\t\t\t\tisExecuting: executionState === 'approval',\n\t\t\t\t\t\t\texecute: () =>\n\t\t\t\t\t\t\t\thandleStepExecution('approval', () => steps.approval.execute()),\n\t\t\t\t\t\t},\n\t\t\t\t\t\ttransaction: {\n\t\t\t\t\t\t\t...steps.transaction,\n\t\t\t\t\t\t\tisExecuting: executionState === 'offer',\n\t\t\t\t\t\t\texecute: () =>\n\t\t\t\t\t\t\t\thandleStepExecution('offer', () => steps.transaction.execute()),\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t: null,\n\t\t\trefreshSteps: () => loadSteps(props),\n\t\t}),\n\t\tisLoading: isMachineLoading,\n\t};\n};\n","import { observable } from '@legendapp/state';\nimport { addDays } from 'date-fns/addDays';\nimport type { Hex } from 'viem';\nimport { type Currency, OrderbookKind, type Price } from '../../../../types';\nimport type { BaseModalState, ModalCallbacks } from '../_internal/types';\n\ntype MakeOfferModalState = BaseModalState & {\n\torderbookKind: OrderbookKind;\n\tcollectibleId: string;\n\tofferPrice: Price;\n\tofferPriceChanged: boolean;\n\tquantity: string;\n\texpiry: Date;\n\tinvalidQuantity: boolean;\n};\n\nconst initialState: MakeOfferModalState & {\n\topen: (args: {\n\t\tcollectionAddress: Hex;\n\t\tchainId: string;\n\t\tcollectibleId: string;\n\t\torderbookKind: OrderbookKind;\n\t\tcallbacks?: ModalCallbacks;\n\t}) => void;\n\tclose: () => void;\n} = {\n\tisOpen: false,\n\tcollectionAddress: '' as Hex,\n\tchainId: '',\n\tcollectibleId: '',\n\torderbookKind: OrderbookKind.reservoir,\n\tcallbacks: undefined,\n\tofferPrice: {\n\t\tamountRaw: '1',\n\t\tcurrency: {} as Currency,\n\t},\n\t// to track if the user has changed the price, so we know if it's 1 default or user input\n\tofferPriceChanged: false,\n\tquantity: '1',\n\tinvalidQuantity: false,\n\texpiry: new Date(addDays(new Date(), 7).toJSON()),\n\n\topen: (args) => {\n\t\tmakeOfferModal$.collectionAddress.set(args.collectionAddress);\n\t\tmakeOfferModal$.chainId.set(args.chainId);\n\t\tmakeOfferModal$.collectibleId.set(args.collectibleId);\n\t\tmakeOfferModal$.orderbookKind.set(args.orderbookKind);\n\t\tmakeOfferModal$.callbacks.set(args.callbacks);\n\t\tmakeOfferModal$.isOpen.set(true);\n\t},\n\n\tclose: () => {\n\t\tmakeOfferModal$.isOpen.set(false);\n\t\tmakeOfferModal$.callbacks.set(undefined);\n\t},\n};\n\nexport const makeOfferModal$ = observable(initialState);\n","import { Show, observer } from '@legendapp/state/react';\nimport type { QueryKey } from '@tanstack/react-query';\nimport type { Hex } from 'viem';\nimport { parseUnits } from 'viem';\nimport {\n\ttype Order,\n\tbalanceQueries,\n\tcollectableKeys,\n} from '../../../_internal';\nimport { useCollection, useCurrencies } from '../../../hooks';\nimport { useSell } from '../../../hooks/useSell';\nimport { ErrorModal } from '..//_internal/components/actionModal/ErrorModal';\nimport type { ModalCallbacks } from '..//_internal/types';\nimport {\n\tActionModal,\n\tActionModalProps,\n} from '../_internal/components/actionModal/ActionModal';\nimport { LoadingModal } from '../_internal/components/actionModal/LoadingModal';\nimport TokenPreview from '../_internal/components/tokenPreview';\nimport TransactionDetails from '../_internal/components/transactionDetails';\nimport TransactionHeader from '../_internal/components/transactionHeader';\nimport { useTransactionStatusModal } from '../_internal/components/transactionStatusModal';\nimport { sellModal$ } from './_store';\nimport { TransactionType } from '../../../_internal/transaction-machine/execute-transaction';\nimport { useCurrencyOptions } from '../../../hooks/useCurrencyOptions';\nimport { useEffect, useState } from 'react';\nimport { MarketplaceKind } from '../../../_internal/api/marketplace.gen';\n\nexport type ShowSellModalArgs = {\n\tchainId: string;\n\tcollectionAddress: Hex;\n\ttokenId: string;\n\torder: Order;\n};\n\nexport const useSellModal = (defaultCallbacks?: ModalCallbacks) => ({\n\tshow: (args: ShowSellModalArgs) =>\n\t\tsellModal$.open({ ...args, callbacks: defaultCallbacks }),\n\tclose: sellModal$.close,\n});\n\nexport const SellModal = () => {\n\tconst { show: showTransactionStatusModal } = useTransactionStatusModal();\n\treturn (\n\t\t<Show if={sellModal$.isOpen}>\n\t\t\t<ModalContent showTransactionStatusModal={showTransactionStatusModal} />\n\t\t</Show>\n\t);\n};\n\ntype TransactionStatusModalReturn = ReturnType<\n\ttypeof useTransactionStatusModal\n>;\n\nconst ModalContent = observer(\n\t({\n\t\tshowTransactionStatusModal,\n\t}: {\n\t\tshowTransactionStatusModal: TransactionStatusModalReturn['show'];\n\t}) => {\n\t\tconst { tokenId, collectionAddress, chainId, order, callbacks } =\n\t\t\tsellModal$.get();\n\t\tconst { data: collectible } = useCollection({\n\t\t\tchainId,\n\t\t\tcollectionAddress,\n\t\t});\n\t\tconst [approvalExecutedSuccess, setApprovalExecutedSuccess] =\n\t\t\tuseState(false);\n\t\tconst {\n\t\t\tdata: collection,\n\t\t\tisLoading: collectionLoading,\n\t\t\tisError: collectionError,\n\t\t} = useCollection({\n\t\t\tchainId,\n\t\t\tcollectionAddress,\n\t\t});\n\t\tconst currencyOptions = useCurrencyOptions({ collectionAddress });\n\t\tconst { data: currencies, isLoading: currenciesLoading } = useCurrencies({\n\t\t\tchainId,\n\t\t\tcurrencyOptions,\n\t\t});\n\t\tconst { getSellSteps, isLoading: machineLoading } = useSell({\n\t\t\tcollectionAddress,\n\t\t\tchainId,\n\t\t\tenabled: sellModal$.isOpen.get(),\n\t\t\tonSwitchChainRefused: () => {\n\t\t\t\tsellModal$.close();\n\t\t\t},\n\t\t\tonApprovalSuccess: () => setApprovalExecutedSuccess(true),\n\t\t\tonTransactionSent: (hash) => {\n\t\t\t\tif (!hash) return;\n\t\t\t\tshowTransactionStatusModal({\n\t\t\t\t\thash: hash,\n\t\t\t\t\tprice: order\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tamountRaw: order.priceAmount,\n\t\t\t\t\t\t\t\tcurrency: currencies?.find(\n\t\t\t\t\t\t\t\t\t(currency) =>\n\t\t\t\t\t\t\t\t\t\tcurrency.contractAddress === order.priceCurrencyAddress,\n\t\t\t\t\t\t\t\t) ?? {\n\t\t\t\t\t\t\t\t\tchainId: Number(chainId),\n\t\t\t\t\t\t\t\t\tcontractAddress: order.priceCurrencyAddress,\n\t\t\t\t\t\t\t\t\tname: 'Unknown',\n\t\t\t\t\t\t\t\t\tsymbol: 'UNK',\n\t\t\t\t\t\t\t\t\tdecimals: 18,\n\t\t\t\t\t\t\t\t\timageUrl: '',\n\t\t\t\t\t\t\t\t\texchangeRate: 0,\n\t\t\t\t\t\t\t\t\tdefaultChainCurrency: false,\n\t\t\t\t\t\t\t\t\tnativeCurrency: false,\n\t\t\t\t\t\t\t\t\tcreatedAt: new Date().toISOString(),\n\t\t\t\t\t\t\t\t\tupdatedAt: new Date().toISOString(),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: undefined,\n\t\t\t\t\tcollectionAddress,\n\t\t\t\t\tchainId,\n\t\t\t\t\tcollectibleId: tokenId,\n\t\t\t\t\ttype: TransactionType.SELL,\n\t\t\t\t\tqueriesToInvalidate: [\n\t\t\t\t\t\t...collectableKeys.all,\n\t\t\t\t\t\tbalanceQueries.all,\n\t\t\t\t\t] as unknown as QueryKey[],\n\t\t\t\t\tcallbacks,\n\t\t\t\t});\n\t\t\t\tsellModal$.close();\n\t\t\t},\n\t\t});\n\n\t\tconst { isLoading, steps, refreshSteps } = getSellSteps({\n\t\t\torderId: order?.orderId ?? '',\n\t\t\tmarketplace: order?.marketplace as MarketplaceKind,\n\t\t\tquantity: order?.quantityRemaining\n\t\t\t\t? parseUnits(\n\t\t\t\t\t\torder.quantityRemaining,\n\t\t\t\t\t\tcollectible?.decimals || 0,\n\t\t\t\t\t).toString()\n\t\t\t\t: '1',\n\t\t});\n\n\n\t\tuseEffect(() => {\n\t\t\trefreshSteps();\n\t\t}, [order, machineLoading]);\n\n\t\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\n\t\tconst handleStepExecution = async (execute?: any) => {\n\t\t\tif (!execute) return;\n\t\t\ttry {\n\t\t\t\tawait refreshSteps();\n\t\t\t\tawait execute();\n\t\t\t} catch (error) {\n\t\t\t\tif (callbacks?.onError) {\n\t\t\t\t\tcallbacks.onError(error as Error);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.debug('onError callback not provided:', error);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tif (collectionLoading || currenciesLoading || machineLoading) {\n\t\t\treturn (\n\t\t\t\t<LoadingModal\n\t\t\t\t\tisOpen={sellModal$.isOpen.get()}\n\t\t\t\t\tchainId={Number(chainId)}\n\t\t\t\t\tonClose={sellModal$.close}\n\t\t\t\t\ttitle=\"You have an offer\"\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\n\t\tif (collectionError || order === undefined) {\n\t\t\treturn (\n\t\t\t\t<ErrorModal\n\t\t\t\t\tisOpen={sellModal$.isOpen.get()}\n\t\t\t\t\tchainId={Number(chainId)}\n\t\t\t\t\tonClose={sellModal$.close}\n\t\t\t\t\ttitle=\"You have an offer\"\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\n\t\tconst approvalNeeded = steps?.approval.isPending;\n\n\t\tconst currency = currencies?.find(\n\t\t\t(c) => c.contractAddress === order?.priceCurrencyAddress,\n\t\t);\n\n\t\tconst ctas = [\n\t\t\t{\n\t\t\t\tlabel: 'Approve TOKEN',\n\t\t\t\tonClick: () => handleStepExecution(() => steps?.approval.execute()),\n\t\t\t\thidden: !approvalNeeded || approvalExecutedSuccess,\n\t\t\t\tpending: steps?.approval.isExecuting || isLoading,\n\t\t\t\tvariant: 'glass' as const,\n\t\t\t\tdisabled: isLoading || steps?.transaction.isExecuting,\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Accept',\n\t\t\t\tonClick: () => handleStepExecution(() => steps?.transaction.execute()),\n\t\t\t\tpending: steps?.transaction.isExecuting || isLoading,\n\t\t\t\tdisabled: (!approvalExecutedSuccess && approvalNeeded) || isLoading,\n\t\t\t},\n\t\t] satisfies ActionModalProps['ctas'];\n\n\t\treturn (\n\t\t\t<ActionModal\n\t\t\t\tisOpen={sellModal$.isOpen.get()}\n\t\t\t\tchainId={Number(chainId)}\n\t\t\t\tonClose={sellModal$.close}\n\t\t\t\ttitle=\"You have an offer\"\n\t\t\t\tctas={ctas}\n\t\t\t>\n\t\t\t\t<TransactionHeader\n\t\t\t\t\ttitle=\"Offer received\"\n\t\t\t\t\tcurrencyImageUrl={currency?.imageUrl}\n\t\t\t\t\tdate={order && new Date(order.createdAt)}\n\t\t\t\t/>\n\t\t\t\t<TokenPreview\n\t\t\t\t\tcollectionName={collection?.name}\n\t\t\t\t\tcollectionAddress={collectionAddress}\n\t\t\t\t\tcollectibleId={tokenId}\n\t\t\t\t\tchainId={chainId}\n\t\t\t\t/>\n\t\t\t\t<TransactionDetails\n\t\t\t\t\tcollectibleId={tokenId}\n\t\t\t\t\tcollectionAddress={collectionAddress}\n\t\t\t\t\tchainId={chainId}\n\t\t\t\t\tprice={\n\t\t\t\t\t\tcurrency\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\tamountRaw: order?.priceAmount,\n\t\t\t\t\t\t\t\t\tcurrency,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t\tcurrencyImageUrl={currency?.imageUrl}\n\t\t\t\t/>\n\t\t\t</ActionModal>\n\t\t);\n\t},\n);\n","import { useCallback, useState } from 'react';\nimport type { Hash } from 'viem';\nimport {\n\ttype SellInput,\n\ttype TransactionSteps,\n\tTransactionType,\n} from '../_internal/transaction-machine/execute-transaction';\nimport {\n\ttype UseTransactionMachineConfig,\n\tuseTransactionMachine,\n} from '../_internal/transaction-machine/useTransactionMachine';\n\ntype ExecutionState = 'approval' | 'sell' | null;\ninterface UseSellArgs\n\textends Omit<UseTransactionMachineConfig, 'type' | 'orderbookKind'> {\n\tonSuccess?: (hash: Hash) => void;\n\tonError?: (error: Error) => void;\n\tonTransactionSent?: (hash?: Hash) => void;\n\tonApprovalSuccess?: (hash: Hash) => void;\n\tonSwitchChainRefused: () => void;\n\tenabled: boolean;\n}\n\nexport const useSell = ({\n\tonSuccess,\n\tonError,\n\tonTransactionSent,\n\tonApprovalSuccess,\n\tonSwitchChainRefused,\n\tenabled,\n\t...config\n}: UseSellArgs) => {\n\tconst [isLoading, setIsLoading] = useState(false);\n\tconst [steps, setSteps] = useState<TransactionSteps | null>(null);\n\tconst [executionState, setExecutionState] = useState<ExecutionState>(null);\n\tconst machineConfig = {\n\t\t...config,\n\t\ttype: TransactionType.SELL,\n\t};\n\n\tconst { machine, isLoading: isMachineLoading } = useTransactionMachine({\n\t\tconfig: machineConfig,\n\t\tenabled,\n\t\tonSwitchChainRefused,\n\t\tonSuccess: (hash) => {\n\t\t\tsetExecutionState(null);\n\t\t\tonSuccess?.(hash);\n\t\t},\n\t\tonError: (error) => {\n\t\t\tsetExecutionState(null);\n\t\t\tonError?.(error);\n\t\t},\n\t\tonTransactionSent,\n\t\tonApprovalSuccess: (hash) => {\n\t\t\tsetExecutionState(null);\n\t\t\tonApprovalSuccess?.(hash);\n\t\t},\n\t});\n\n\tconst loadSteps = useCallback(\n\t\tasync (props: SellInput) => {\n\t\t\tif (!machine) return;\n\t\t\tsetIsLoading(true);\n\t\t\tconst generatedSteps = await machine.getTransactionSteps(props);\n\t\t\tif (!generatedSteps) {\n\t\t\t\tsetIsLoading(false);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetSteps({\n\t\t\t\t...generatedSteps,\n\t\t\t\tapproval: {\n\t\t\t\t\t...generatedSteps.approval,\n\t\t\t\t\tisExecuting: executionState === 'approval',\n\t\t\t\t},\n\t\t\t\ttransaction: {\n\t\t\t\t\t...generatedSteps.transaction,\n\t\t\t\t\tisExecuting: executionState === 'sell',\n\t\t\t\t},\n\t\t\t});\n\t\t\tsetIsLoading(false);\n\t\t},\n\t\t[machine, executionState],\n\t);\n\n\tconst handleStepExecution = useCallback(\n\t\tasync (type: ExecutionState, execute: () => Promise<any> | undefined) => {\n\t\t\tif (!type) return;\n\t\t\tsetExecutionState(type);\n\t\t\ttry {\n\t\t\t\tawait execute();\n\t\t\t} catch (error) {\n\t\t\t\tsetExecutionState(null);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t},\n\t\t[],\n\t);\n\n\treturn {\n\t\tsell: (props: SellInput) => machine?.start(props),\n\t\tgetSellSteps: (props: SellInput) => ({\n\t\t\tisLoading,\n\t\t\tsteps: steps\n\t\t\t\t? {\n\t\t\t\t\t\t...steps,\n\t\t\t\t\t\tapproval: {\n\t\t\t\t\t\t\t...steps.approval,\n\t\t\t\t\t\t\tisExecuting: executionState === 'approval',\n\t\t\t\t\t\t\texecute: () =>\n\t\t\t\t\t\t\t\thandleStepExecution('approval', () => steps.approval.execute()),\n\t\t\t\t\t\t},\n\t\t\t\t\t\ttransaction: {\n\t\t\t\t\t\t\t...steps.transaction,\n\t\t\t\t\t\t\tisExecuting: executionState === 'sell',\n\t\t\t\t\t\t\texecute: () =>\n\t\t\t\t\t\t\t\thandleStepExecution('sell', () => steps.transaction.execute()),\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t: null,\n\t\t\trefreshSteps: () => loadSteps(props),\n\t\t}),\n\t\tisLoading: isMachineLoading,\n\t};\n};\n","import { Box, Image, Skeleton, Text } from '@0xsequence/design-system';\nimport { formatDistanceToNow } from 'date-fns';\n\ntype TransactionHeaderProps = {\n\ttitle: string;\n\tcurrencyImageUrl?: string;\n\tdate?: Date;\n};\n\nexport default function TransactionHeader({\n\ttitle,\n\tcurrencyImageUrl,\n\tdate,\n}: TransactionHeaderProps) {\n\treturn (\n\t\t<Box display=\"flex\" alignItems=\"center\" width=\"full\">\n\t\t\t<Text\n\t\t\t\tfontSize=\"small\"\n\t\t\t\tfontWeight=\"medium\"\n\t\t\t\tcolor=\"text80\"\n\t\t\t\tmarginRight=\"1\"\n\t\t\t\tfontFamily=\"body\"\n\t\t\t>\n\t\t\t\t{title}\n\t\t\t</Text>\n\n\t\t\t<Image src={currencyImageUrl} width=\"3\" height=\"3\" marginRight=\"1\" />\n\n\t\t\t{(date && (\n\t\t\t\t<Text\n\t\t\t\t\tfontSize=\"small\"\n\t\t\t\t\tcolor=\"text50\"\n\t\t\t\t\tflexGrow=\"1\"\n\t\t\t\t\ttextAlign=\"right\"\n\t\t\t\t\tfontFamily=\"body\"\n\t\t\t\t>\n\t\t\t\t\t{formatDistanceToNow(date)} ago\n\t\t\t\t</Text>\n\t\t\t)) || <Skeleton width=\"8\" height=\"4\" />}\n\t\t</Box>\n\t);\n}\n","import { observable } from '@legendapp/state';\nimport type { Hex } from 'viem';\nimport type { Order } from '../../../_internal';\nimport type { BaseModalState, ModalCallbacks } from '../_internal/types';\n\ntype SellModalState = BaseModalState & {\n\ttokenId: string;\n\torder?: Order;\n};\n\nconst initialState: SellModalState & {\n\topen: (args: {\n\t\tcollectionAddress: Hex;\n\t\tchainId: string;\n\t\ttokenId: string;\n\t\torder: Order;\n\t\tcallbacks?: ModalCallbacks;\n\t}) => void;\n\tclose: () => void;\n} = {\n\tisOpen: false,\n\tcollectionAddress: '' as Hex,\n\tchainId: '',\n\ttokenId: '',\n\torder: undefined,\n\tcallbacks: undefined,\n\n\topen: (args) => {\n\t\tsellModal$.collectionAddress.set(args.collectionAddress);\n\t\tsellModal$.chainId.set(args.chainId);\n\t\tsellModal$.tokenId.set(args.tokenId);\n\t\tsellModal$.order.set(args.order);\n\t\tsellModal$.callbacks.set(args.callbacks);\n\t\tsellModal$.isOpen.set(true);\n\t},\n\n\tclose: () => {\n\t\tsellModal$.isOpen.set(false);\n\t\tsellModal$.callbacks.set(undefined);\n\t},\n};\n\nexport const sellModal$ = observable(initialState);\n","'use client';\n\nimport {\n\tBox,\n\tButton,\n\tCloseIcon,\n\tExternalLinkIcon,\n\tIconButton,\n\tImage,\n\tText,\n} from '@0xsequence/design-system';\nimport { observer } from '@legendapp/state/react';\nimport { Close, Content, Overlay, Portal, Root } from '@radix-ui/react-dialog';\nimport type { TokenMetadata } from '../../../_internal';\nimport type { ModalCallbacks } from '../_internal/types';\nimport {\n\ttype SuccessfulPurchaseModalState,\n\tsuccessfulPurchaseModal$,\n} from './_store';\nimport {\n\tcloseButton,\n\tcollectiblesGrid,\n\tcollectiblesGridImage,\n\tcollectiblesGridImagePale,\n\tcollectiblesGridItem,\n\tdialogContent,\n\tdialogOverlay,\n} from './styles.css';\n\nexport const useSuccessfulPurchaseModal = (callbacks?: ModalCallbacks) => {\n\treturn {\n\t\tshow: (args: SuccessfulPurchaseModalState['state']) =>\n\t\t\tsuccessfulPurchaseModal$.open({ ...args, defaultCallbacks: callbacks }),\n\t\tclose: () => successfulPurchaseModal$.close(),\n\t};\n};\n\nconst SuccessfulPurchaseModal = observer(() => {\n\treturn (\n\t\t<Root open={successfulPurchaseModal$.isOpen.get()}>\n\t\t\t<Portal>\n\t\t\t\t<Overlay className={dialogOverlay} />\n\n\t\t\t\t<Content className={dialogContent.narrow}>\n\t\t\t\t\t<Box display=\"flex\" flexDirection=\"column\" gap=\"4\" width=\"full\">\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\ttextAlign=\"center\"\n\t\t\t\t\t\t\tfontSize=\"medium\"\n\t\t\t\t\t\t\tfontWeight=\"bold\"\n\t\t\t\t\t\t\tcolor=\"text100\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tSuccessful purchase!\n\t\t\t\t\t\t</Text>\n\n\t\t\t\t\t\t<CollectiblesGrid\n\t\t\t\t\t\t\tcollectibles={successfulPurchaseModal$.state.get().collectibles}\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t<Box display=\"flex\" alignItems=\"center\" gap=\"1\">\n\t\t\t\t\t\t\t<Text fontSize=\"normal\" fontWeight=\"medium\" color=\"text80\">\n\t\t\t\t\t\t\t\tYou bought\n\t\t\t\t\t\t\t</Text>\n\n\t\t\t\t\t\t\t<Text fontSize=\"normal\" fontWeight=\"medium\" color=\"text100\">\n\t\t\t\t\t\t\t\t{successfulPurchaseModal$.state.get().collectibles.length}\n\t\t\t\t\t\t\t</Text>\n\n\t\t\t\t\t\t\t<Text fontSize=\"normal\" fontWeight=\"medium\" color=\"text80\">\n\t\t\t\t\t\t\t\titems for\n\t\t\t\t\t\t\t</Text>\n\n\t\t\t\t\t\t\t<Text fontSize=\"normal\" fontWeight=\"medium\" color=\"text100\">\n\t\t\t\t\t\t\t\t{successfulPurchaseModal$.state.get().totalPrice}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</Box>\n\n\t\t\t\t\t\t<SuccessfulPurchaseActions />\n\t\t\t\t\t</Box>\n\n\t\t\t\t\t<Close\n\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\tsuccessfulPurchaseModal$.close();\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tclassName={closeButton}\n\t\t\t\t\t\tasChild\n\t\t\t\t\t>\n\t\t\t\t\t\t<IconButton size=\"xs\" aria-label=\"Close modal\" icon={CloseIcon} />\n\t\t\t\t\t</Close>\n\t\t\t\t</Content>\n\t\t\t</Portal>\n\t\t</Root>\n\t);\n});\n\nfunction SuccessfulPurchaseActions() {\n\treturn (\n\t\t<Box display=\"flex\" flexDirection=\"column\" gap=\"2\">\n\t\t\t{successfulPurchaseModal$.state.ctaOptions.get() && (\n\t\t\t\t<Button\n\t\t\t\t\tshape=\"square\"\n\t\t\t\t\tleftIcon={\n\t\t\t\t\t\tsuccessfulPurchaseModal$.state.ctaOptions.ctaIcon.get() || undefined\n\t\t\t\t\t}\n\t\t\t\t\tlabel={successfulPurchaseModal$.state.ctaOptions.ctaLabel.get()}\n\t\t\t\t\twidth=\"full\"\n\t\t\t\t\tonClick={\n\t\t\t\t\t\tsuccessfulPurchaseModal$.state.ctaOptions.ctaOnClick.get() ||\n\t\t\t\t\t\tundefined\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t<Button\n\t\t\t\tas={'a'}\n\t\t\t\thref={successfulPurchaseModal$.state.explorerUrl.get()}\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\tshape=\"square\"\n\t\t\t\tleftIcon={ExternalLinkIcon}\n\t\t\t\tlabel={`View on ${successfulPurchaseModal$.state.explorerName.get()}`}\n\t\t\t\twidth=\"full\"\n\t\t\t/>\n\t\t</Box>\n\t);\n}\n\nfunction CollectiblesGrid({ collectibles }: { collectibles: TokenMetadata[] }) {\n\tconst total = collectibles.length;\n\tconst shownCollectibles = total > 4 ? collectibles.slice(0, 4) : collectibles;\n\n\treturn (\n\t\t<Box className={collectiblesGrid} display={'grid'} gap={'2'}>\n\t\t\t{shownCollectibles.map((collectible) => {\n\t\t\t\tconst showPlus = total > 4 && collectibles.indexOf(collectible) === 3;\n\n\t\t\t\treturn (\n\t\t\t\t\t<Box\n\t\t\t\t\t\tkey={collectible.tokenId}\n\t\t\t\t\t\tclassName={collectiblesGridItem}\n\t\t\t\t\t\tposition=\"relative\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\tsrc={collectible.image}\n\t\t\t\t\t\t\talt={collectible.name}\n\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\tshowPlus ? collectiblesGridImagePale : collectiblesGridImage\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\taspectRatio=\"1/1\"\n\t\t\t\t\t\t\tbackground=\"backgroundSecondary\"\n\t\t\t\t\t\t\tborderRadius=\"sm\"\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t{showPlus && (\n\t\t\t\t\t\t\t<Box\n\t\t\t\t\t\t\t\tposition=\"absolute\"\n\t\t\t\t\t\t\t\ttop=\"0\"\n\t\t\t\t\t\t\t\tleft=\"0\"\n\t\t\t\t\t\t\t\tright=\"0\"\n\t\t\t\t\t\t\t\tbottom=\"0\"\n\t\t\t\t\t\t\t\tdisplay=\"flex\"\n\t\t\t\t\t\t\t\talignItems=\"center\"\n\t\t\t\t\t\t\t\tjustifyContent=\"center\"\n\t\t\t\t\t\t\t\tbackground=\"backgroundOverlay\"\n\t\t\t\t\t\t\t\tbackdropFilter=\"blur\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\tfontSize=\"small\"\n\t\t\t\t\t\t\t\t\tfontWeight=\"medium\"\n\t\t\t\t\t\t\t\t\tcolor=\"text80\"\n\t\t\t\t\t\t\t\t\tpaddingX=\"2\"\n\t\t\t\t\t\t\t\t\tpaddingY=\"1.5\"\n\t\t\t\t\t\t\t\t\tborderRadius=\"sm\"\n\t\t\t\t\t\t\t\t\tbackground=\"backgroundSecondary\"\n\t\t\t\t\t\t\t\t\tbackdropFilter=\"blur\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{total} TOTAL\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Box>\n\t\t\t\t);\n\t\t\t})}\n\t\t</Box>\n\t);\n}\n\nexport default SuccessfulPurchaseModal;\n","import type { IconProps } from '@0xsequence/design-system';\nimport { observable } from '@legendapp/state';\nimport type { ComponentType } from 'react';\nimport type { TokenMetadata } from '../../../_internal';\nimport type { ModalCallbacks } from '../_internal/types';\n\nexport interface SuccessfulPurchaseModalState {\n\tisOpen: boolean;\n\topen: (\n\t\targs: SuccessfulPurchaseModalState['state'] & {\n\t\t\tcallbacks?: ModalCallbacks;\n\t\t\tdefaultCallbacks?: ModalCallbacks;\n\t\t},\n\t) => void;\n\tclose: () => void;\n\tstate: {\n\t\tcollectibles: TokenMetadata[];\n\t\ttotalPrice: string;\n\t\texplorerName: string;\n\t\texplorerUrl: string;\n\t\tctaOptions?: {\n\t\t\tctaLabel: string;\n\t\t\tctaOnClick: () => void;\n\t\t\tctaIcon?: ComponentType<IconProps>;\n\t\t};\n\t};\n\tcallbacks?: ModalCallbacks;\n}\n\nconst initialState: SuccessfulPurchaseModalState = {\n\tisOpen: false,\n\topen: ({\n\t\tcollectibles,\n\t\ttotalPrice,\n\t\texplorerName,\n\t\texplorerUrl,\n\t\tctaOptions,\n\t\tcallbacks,\n\t\tdefaultCallbacks,\n\t}: SuccessfulPurchaseModalState['state'] & {\n\t\tcallbacks?: ModalCallbacks;\n\t\tdefaultCallbacks?: ModalCallbacks;\n\t}) => {\n\t\tsuccessfulPurchaseModal$.state.set({\n\t\t\t...successfulPurchaseModal$.state.get(),\n\t\t\tcollectibles,\n\t\t\ttotalPrice,\n\t\t\texplorerName,\n\t\t\texplorerUrl: explorerUrl,\n\t\t\tctaOptions,\n\t\t});\n\t\tsuccessfulPurchaseModal$.callbacks.set(callbacks || defaultCallbacks);\n\t\tsuccessfulPurchaseModal$.isOpen.set(true);\n\t},\n\tclose: () => {\n\t\tsuccessfulPurchaseModal$.isOpen.set(false);\n\t\tsuccessfulPurchaseModal$.callbacks.set(undefined);\n\t\tsuccessfulPurchaseModal$.state.set({\n\t\t\t...initialState.state,\n\t\t});\n\t},\n\tstate: {\n\t\tcollectibles: [],\n\t\ttotalPrice: '0',\n\t\texplorerName: '',\n\t\texplorerUrl: '',\n\t\tctaOptions: undefined,\n\t},\n\tcallbacks: undefined,\n};\n\nexport const successfulPurchaseModal$ = observable(initialState);\n","import { CloseIcon, IconButton } from '@0xsequence/design-system';\nimport { Show, observer } from '@legendapp/state/react';\nimport { Close, Content, Overlay, Portal, Root } from '@radix-ui/react-dialog';\nimport type { Hex } from 'viem';\nimport { useAccount } from 'wagmi';\nimport { useSwitchChainModal } from '../_internal/components/switchChainModal';\nimport type { ModalCallbacks } from '../_internal/types';\nimport { transferModal$ } from './_store';\nimport EnterWalletAddressView from './_views/enterWalletAddress';\nimport FollowWalletInstructionsView from './_views/followWalletInstructions';\nimport { closeButton, dialogOverlay, transferModalContent } from './styles.css';\n\nexport type ShowTransferModalArgs = {\n\tcollectionAddress: Hex;\n\tcollectibleId: string;\n\tchainId: string;\n\tcallbacks?: ModalCallbacks;\n};\n\nexport const useTransferModal = () => {\n\tconst { chainId: accountChainId } = useAccount();\n\tconst { show: showSwitchNetworkModal } = useSwitchChainModal();\n\t// const { errorCallbacks, successCallbacks } = transferModal$.state.get();\n\n\tconst openModal = (args: ShowTransferModalArgs) => {\n\t\ttransferModal$.open(args);\n\t};\n\n\tconst handleShowModal = (args: ShowTransferModalArgs) => {\n\t\tconst isSameChain = accountChainId === Number(args.chainId);\n\n\t\tif (!isSameChain) {\n\t\t\tshowSwitchNetworkModal({\n\t\t\t\tchainIdToSwitchTo: Number(args.chainId),\n\t\t\t\tonSuccess: () => openModal(args),\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\topenModal(args);\n\t};\n\n\treturn {\n\t\tshow: handleShowModal,\n\t\tclose: () => transferModal$.close(),\n\t\tonError: (callbacks: ModalCallbacks) => {\n\t\t\ttransferModal$.state.set({\n\t\t\t\t...transferModal$.state.get(),\n\t\t\t\tcallbacks,\n\t\t\t});\n\t\t},\n\t\tonSuccess: (callbacks: ModalCallbacks) => {\n\t\t\ttransferModal$.state.set({\n\t\t\t\t...transferModal$.state.get(),\n\t\t\t\tcallbacks,\n\t\t\t});\n\t\t},\n\t};\n};\n\nexport const TransferModal = () => {\n\treturn (\n\t\t<Show if={transferModal$.isOpen}>\n\t\t\t<Modal />\n\t\t</Show>\n\t);\n};\n\nconst Modal = () => {\n\treturn <ModalContent />;\n};\n\nconst ModalContent = observer(() => {\n\treturn (\n\t\t<Root open={true}>\n\t\t\t<Portal>\n\t\t\t\t<Overlay className={dialogOverlay} />\n\n\t\t\t\t<Content className={transferModalContent}>\n\t\t\t\t\t<TransactionModalView />\n\n\t\t\t\t\t<Close onClick={transferModal$.close} className={closeButton} asChild>\n\t\t\t\t\t\t<IconButton size=\"xs\" aria-label=\"Close modal\" icon={CloseIcon} />\n\t\t\t\t\t</Close>\n\t\t\t\t</Content>\n\t\t\t</Portal>\n\t\t</Root>\n\t);\n});\n\nconst TransactionModalView = observer(() => {\n\tconst { view } = transferModal$.get();\n\n\tswitch (view) {\n\t\tcase 'enterReceiverAddress':\n\t\t\treturn <EnterWalletAddressView />;\n\n\t\tcase 'followWalletInstructions':\n\t\t\treturn <FollowWalletInstructionsView />;\n\n\t\tdefault:\n\t\t\treturn null;\n\t}\n});\n","import { observable } from '@legendapp/state';\nimport type { Hex } from 'viem';\nimport type { ShowTransferModalArgs } from '.';\nimport type { CollectionType } from '../../../_internal';\nimport type { ModalCallbacks } from '../_internal/types';\n\nexport interface TransferModalState {\n\tisOpen: boolean;\n\topen: (args: ShowTransferModalArgs) => void;\n\tclose: () => void;\n\tstate: {\n\t\tchainId: string;\n\t\tcollectionAddress: Hex;\n\t\tcollectionType?: CollectionType | undefined;\n\t\tcollectibleId: string;\n\t\tquantity: string;\n\t\treceiverAddress: string;\n\t\tcallbacks?: ModalCallbacks;\n\t};\n\tview: 'enterReceiverAddress' | 'followWalletInstructions' | undefined;\n\thash: Hex | undefined;\n}\n\nexport const initialState: TransferModalState = {\n\tisOpen: false,\n\topen: ({\n\t\tchainId,\n\t\tcollectionAddress,\n\t\tcollectibleId,\n\t\tcallbacks,\n\t}: ShowTransferModalArgs) => {\n\t\ttransferModal$.state.set({\n\t\t\t...transferModal$.state.get(),\n\t\t\tchainId,\n\t\t\tcollectionAddress,\n\t\t\tcollectibleId,\n\t\t\tcallbacks,\n\t\t});\n\t\ttransferModal$.isOpen.set(true);\n\t},\n\tclose: () => {\n\t\ttransferModal$.isOpen.set(false);\n\t\ttransferModal$.state.set({\n\t\t\t...initialState.state,\n\t\t});\n\t\ttransferModal$.view.set('enterReceiverAddress');\n\t\ttransferModal$.hash.set(undefined);\n\t},\n\tstate: {\n\t\treceiverAddress: '',\n\t\tcollectionAddress: '0x',\n\t\tchainId: '',\n\t\tcollectibleId: '',\n\t\tquantity: '1',\n\t},\n\tview: 'enterReceiverAddress',\n\thash: undefined,\n};\n\nexport const transferModal$ = observable(initialState);\n","import { Box, Button, Text, TextInput } from '@0xsequence/design-system';\nimport { observable } from '@legendapp/state';\nimport { isAddress } from 'viem';\nimport { useAccount } from 'wagmi';\nimport { useCollection, useListBalances } from '../../../../..';\nimport { type CollectionType, ContractType } from '../../../../../_internal';\nimport AlertMessage from '../../../_internal/components/alertMessage';\nimport QuantityInput from '../../../_internal/components/quantityInput';\nimport { transferModal$ } from '../../_store';\nimport getMessage from '../../messages';\nimport useHandleTransfer from './useHandleTransfer';\n\nconst EnterWalletAddressView = () => {\n\tconst { address } = useAccount();\n\tconst { collectionAddress, collectibleId, chainId, collectionType } =\n\t\ttransferModal$.state.get();\n\tconst $quantity = transferModal$.state.quantity;\n\tconst $invalidQuantity = observable(false);\n\tconst isWalletAddressValid = isAddress(\n\t\ttransferModal$.state.receiverAddress.get(),\n\t);\n\tconst { data: tokenBalance } = useListBalances({\n\t\tchainId,\n\t\tcontractAddress: collectionAddress,\n\t\ttokenId: collectibleId,\n\t\taccountAddress: address ?? '',\n\t\tquery: { enabled: !!address },\n\t});\n\tconst balanceAmount = tokenBalance?.pages[0].balances[0].balance;\n\tconst insufficientBalance: boolean = balanceAmount\n\t\t? $quantity.get() > balanceAmount\n\t\t: true;\n\tconst { data: collection } = useCollection({\n\t\tcollectionAddress,\n\t\tchainId,\n\t});\n\ttransferModal$.state.collectionType.set(\n\t\tcollection?.type as CollectionType | undefined,\n\t);\n\tconst { transfer } = useHandleTransfer();\n\n\tfunction handleChangeWalletAddress(\n\t\tevent: React.ChangeEvent<HTMLInputElement>,\n\t) {\n\t\ttransferModal$.state.receiverAddress.set(event.target.value);\n\t}\n\n\tfunction handleChangeView() {\n\t\ttransfer();\n\t\ttransferModal$.view.set('followWalletInstructions');\n\t}\n\n\treturn (\n\t\t<Box display=\"grid\" gap=\"6\" flexGrow=\"1\">\n\t\t\t<Text color=\"white\" fontSize=\"large\" fontWeight=\"bold\" fontFamily=\"body\">\n\t\t\t\tTransfer your item\n\t\t\t</Text>\n\n\t\t\t<Box display=\"flex\" flexDirection=\"column\" gap=\"3\">\n\t\t\t\t<AlertMessage\n\t\t\t\t\tmessage={getMessage('enterReceiverAddress')}\n\t\t\t\t\ttype=\"warning\"\n\t\t\t\t/>\n\n\t\t\t\t<TextInput\n\t\t\t\t\tlabel=\"Wallet address\"\n\t\t\t\t\tlabelLocation=\"top\"\n\t\t\t\t\tvalue={transferModal$.state.receiverAddress.get()}\n\t\t\t\t\tonChange={handleChangeWalletAddress}\n\t\t\t\t\tname=\"walletAddress\"\n\t\t\t\t\tplaceholder=\"Enter wallet address of recipient\"\n\t\t\t\t/>\n\n\t\t\t\t{collectionType === ContractType.ERC1155 && balanceAmount && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<QuantityInput\n\t\t\t\t\t\t\t$quantity={$quantity}\n\t\t\t\t\t\t\t$invalidQuantity={$invalidQuantity}\n\t\t\t\t\t\t\tdecimals={collection?.decimals || 0}\n\t\t\t\t\t\t\tmaxQuantity={balanceAmount}\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\tcolor={insufficientBalance ? 'negative' : 'text50'}\n\t\t\t\t\t\t\tfontSize=\"small\"\n\t\t\t\t\t\t\tfontWeight=\"medium\"\n\t\t\t\t\t\t\tfontFamily=\"body\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{`You have ${balanceAmount} of this item`}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</Box>\n\n\t\t\t<Button\n\t\t\t\tonClick={handleChangeView}\n\t\t\t\tdisabled={\n\t\t\t\t\t!isWalletAddressValid || insufficientBalance || !$quantity.get()\n\t\t\t\t}\n\t\t\t\ttitle=\"Transfer\"\n\t\t\t\tlabel=\"Transfer\"\n\t\t\t\tvariant=\"primary\"\n\t\t\t\tshape=\"square\"\n\t\t\t\tsize=\"sm\"\n\t\t\t\tjustifySelf=\"flex-end\"\n\t\t\t\tpaddingX=\"10\"\n\t\t\t/>\n\t\t</Box>\n\t);\n};\n\nexport default EnterWalletAddressView;\n","import type { TransferModalState } from './_store';\n\ntype MessageKey = NonNullable<TransferModalState['view']>;\n\nconst baseMessages: Record<MessageKey, string> = {\n\tenterReceiverAddress:\n\t\t\"Items sent to the wrong wallet address can't be recovered!\",\n\tfollowWalletInstructions:\n\t\t\"Follow your wallet's instructions to submit a transaction to transfer your assets.\",\n};\n\nexport default function getMessage(key: MessageKey): string {\n\treturn baseMessages[key];\n}\n","import type { QueryKey } from '@tanstack/react-query';\nimport type { Hex } from 'viem';\nimport { ContractType } from '../../../../../../types';\nimport { InvalidContractTypeError } from '../../../../../../utils/_internal/error/transaction';\nimport { balanceQueries } from '../../../../../_internal';\nimport { TransactionType } from '../../../../../_internal/transaction-machine/execute-transaction';\nimport { useTransferTokens } from '../../../../../hooks';\nimport { useTransactionStatusModal } from '../../../_internal/components/transactionStatusModal';\nimport { transferModal$ } from '../../_store';\n\nconst useHandleTransfer = () => {\n\tconst {\n\t\treceiverAddress,\n\t\tcollectionAddress,\n\t\tcollectibleId,\n\t\tquantity,\n\t\tchainId,\n\t\tcollectionType,\n\t\tcallbacks,\n\t} = transferModal$.state.get();\n\tconst { transferTokensAsync } = useTransferTokens();\n\tconst { show: showTransactionStatusModal } = useTransactionStatusModal();\n\n\tasync function transfer() {\n\t\tif (\n\t\t\tcollectionType !== ContractType.ERC721 &&\n\t\t\tcollectionType !== ContractType.ERC1155\n\t\t) {\n\t\t\tthrow new InvalidContractTypeError(collectionType);\n\t\t}\n\n\t\tif (collectionType === ContractType.ERC721) {\n\t\t\ttry {\n\t\t\t\tconst hash = await transferTokensAsync({\n\t\t\t\t\treceiverAddress: receiverAddress as Hex,\n\t\t\t\t\tcollectionAddress,\n\t\t\t\t\ttokenId: collectibleId,\n\t\t\t\t\tchainId,\n\t\t\t\t\tcontractType: ContractType.ERC721,\n\t\t\t\t});\n\n\t\t\t\ttransferModal$.close();\n\n\t\t\t\tshowTransactionStatusModal({\n\t\t\t\t\thash: hash,\n\t\t\t\t\tcollectionAddress,\n\t\t\t\t\tchainId,\n\t\t\t\t\tcollectibleId,\n\t\t\t\t\tprice: undefined,\n\t\t\t\t\ttype: TransactionType.TRANSFER,\n\t\t\t\t\tqueriesToInvalidate: balanceQueries.all as unknown as QueryKey[],\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\ttransferModal$.view.set('enterReceiverAddress');\n\n\t\t\t\tcallbacks?.onError?.(error as Error);\n\t\t\t}\n\t\t}\n\n\t\tif (collectionType === ContractType.ERC1155) {\n\t\t\ttry {\n\t\t\t\tconst hash = await transferTokensAsync({\n\t\t\t\t\treceiverAddress: receiverAddress as Hex,\n\t\t\t\t\tcollectionAddress,\n\t\t\t\t\ttokenId: collectibleId,\n\t\t\t\t\tchainId,\n\t\t\t\t\tcontractType: ContractType.ERC1155,\n\t\t\t\t\tquantity: String(quantity),\n\t\t\t\t});\n\n\t\t\t\ttransferModal$.close();\n\n\t\t\t\tshowTransactionStatusModal({\n\t\t\t\t\thash: hash,\n\t\t\t\t\tcollectionAddress,\n\t\t\t\t\tchainId,\n\t\t\t\t\tcollectibleId,\n\t\t\t\t\tprice: undefined,\n\t\t\t\t\ttype: TransactionType.TRANSFER,\n\t\t\t\t\tqueriesToInvalidate: balanceQueries.all as unknown as QueryKey[],\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\ttransferModal$.view.set('enterReceiverAddress');\n\n\t\t\t\tcallbacks?.onError?.(error as Error);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { transfer };\n};\n\nexport default useHandleTransfer;\n","import { Box, Button, Text } from '@0xsequence/design-system';\nimport { observer } from '@legendapp/state/react';\nimport AlertMessage from '../../../_internal/components/alertMessage';\nimport getMessage from '../../messages';\n\nconst FollowWalletInstructionsView = observer(() => {\n\treturn (\n\t\t<Box display=\"grid\" gap=\"6\" flexGrow=\"1\">\n\t\t\t<Text color=\"white\" fontSize=\"large\" fontWeight=\"bold\" fontFamily=\"body\">\n\t\t\t\tTransfer your item\n\t\t\t</Text>\n\n\t\t\t<Box display=\"flex\" flexDirection=\"column\" gap=\"3\">\n\t\t\t\t<AlertMessage\n\t\t\t\t\tmessage={getMessage('followWalletInstructions')}\n\t\t\t\t\ttype=\"info\"\n\t\t\t\t/>\n\t\t\t</Box>\n\n\t\t\t<Button\n\t\t\t\tdisabled={true}\n\t\t\t\ttitle=\"Transfer\"\n\t\t\t\tlabel=\"Transfer\"\n\t\t\t\tvariant=\"primary\"\n\t\t\t\tshape=\"square\"\n\t\t\t\tsize=\"sm\"\n\t\t\t\tjustifySelf=\"flex-end\"\n\t\t\t\tpaddingX=\"10\"\n\t\t\t/>\n\t\t</Box>\n\t);\n});\n\nexport default FollowWalletInstructionsView;\n","import { useState } from 'react';\n\nimport { Box, IconButton, Skeleton } from '@0xsequence/design-system';\nimport type { Hex } from 'viem';\nimport { useAccount } from 'wagmi';\nimport type {\n\tChainId,\n\tCollectibleOrder,\n\tContractType,\n\tOrder,\n\tOrderbookKind,\n} from '../../../_internal';\nimport { useCurrencies, useHighestOffer } from '../../../hooks';\nimport { useCurrencyOptions } from '../../../hooks/useCurrencyOptions';\nimport SvgDiamondEyeIcon from '../../icons/DiamondEye';\nimport ChessTileImage from '../../images/chess-tile.png';\nimport { ActionButton } from '../_internals/action-button/ActionButton';\nimport { CollectibleCardAction } from '../_internals/action-button/types';\nimport { Footer } from './Footer';\nimport {\n\tactionWrapper,\n\tcollectibleCard,\n\tcollectibleImage,\n\tcollectibleTileWrapper,\n} from './styles.css';\n\nfunction CollectibleSkeleton() {\n\treturn (\n\t\t<Box\n\t\t\tclassName={collectibleCard}\n\t\t\tborderRadius=\"md\"\n\t\t\toverflow=\"hidden\"\n\t\t\tbackground=\"backgroundPrimary\"\n\t\t>\n\t\t\t<Skeleton\n\t\t\t\tsize=\"lg\"\n\t\t\t\tstyle={{ width: '100%', height: 164, borderRadius: 0, paddingTop: 16 }}\n\t\t\t/>\n\n\t\t\t<Box\n\t\t\t\tdisplay=\"flex\"\n\t\t\t\tflexDirection=\"column\"\n\t\t\t\tgap=\"2\"\n\t\t\t\tpaddingX=\"4\"\n\t\t\t\tpaddingBottom=\"4\"\n\t\t\t\tmarginTop=\"2\"\n\t\t\t>\n\t\t\t\t<Skeleton size=\"lg\" />\n\n\t\t\t\t<Skeleton size=\"sm\" />\n\t\t\t</Box>\n\t\t</Box>\n\t);\n}\n\ntype CollectibleCardProps = {\n\tcollectibleId: string;\n\tchainId: ChainId;\n\tcollectionAddress: Hex;\n\torderbookKind: OrderbookKind;\n\tcollectionType?: ContractType;\n\tlowestListing: CollectibleOrder | undefined;\n\tonCollectibleClick?: (tokenId: string) => void;\n\tonOfferClick?: ({ order }: { order?: Order }) => void;\n\tbalance?: string;\n\tcardLoading?: boolean;\n};\n\nexport function CollectibleCard({\n\tcollectibleId,\n\tchainId,\n\tcollectionAddress,\n\torderbookKind,\n\tcollectionType,\n\tlowestListing,\n\tonCollectibleClick,\n\tonOfferClick,\n\tbalance,\n\tcardLoading,\n}: CollectibleCardProps) {\n\tconst { address: accountAddress } = useAccount();\n\tconst collectibleMetadata = lowestListing?.metadata;\n\tconst [imageLoadingError, setImageLoadingError] = useState(false);\n\tconst { data: highestOffer, isLoading: highestOfferLoading } =\n\t\tuseHighestOffer({\n\t\t\tchainId: String(chainId),\n\t\t\tcollectionAddress,\n\t\t\ttokenId: collectibleId,\n\t\t});\n\n\tconst currencyOptions = useCurrencyOptions({ collectionAddress });\n\tconst { data: currencies } = useCurrencies({ chainId, currencyOptions });\n\tconst lowestListingCurrency = currencies?.find(\n\t\t(currency) =>\n\t\t\tcurrency.contractAddress === lowestListing?.order?.priceCurrencyAddress,\n\t);\n\tif (highestOfferLoading || cardLoading) {\n\t\treturn <CollectibleSkeleton />;\n\t}\n\n\tconst action = (\n\t\tbalance\n\t\t\t? (highestOffer?.order && CollectibleCardAction.SELL) ||\n\t\t\t\t(!lowestListing?.order && CollectibleCardAction.LIST) ||\n\t\t\t\tCollectibleCardAction.TRANSFER\n\t\t\t: (lowestListing?.order && CollectibleCardAction.BUY) ||\n\t\t\t\tCollectibleCardAction.OFFER\n\t) as CollectibleCardAction;\n\n\tconst name = collectibleMetadata?.name;\n\tconst image = collectibleMetadata?.image;\n\tconst externalUrl = collectibleMetadata?.external_url;\n\n\treturn (\n\t\t<Box\n\t\t\tclassName={collectibleCard}\n\t\t\tborderRadius=\"md\"\n\t\t\toverflow=\"hidden\"\n\t\t\tbackground=\"backgroundPrimary\"\n\t\t>\n\t\t\t<Box\n\t\t\t\tdisplay=\"flex\"\n\t\t\t\tflexDirection=\"column\"\n\t\t\t\talignItems=\"flex-start\"\n\t\t\t\tposition=\"relative\"\n\t\t\t\twidth=\"full\"\n\t\t\t\theight=\"full\"\n\t\t\t\tzIndex=\"10\"\n\t\t\t\toverflow=\"hidden\"\n\t\t\t\tonClick={() => onCollectibleClick?.(collectibleId)}\n\t\t\t\tborder=\"none\"\n\t\t\t\tcursor=\"pointer\"\n\t\t\t\tpadding=\"0\"\n\t\t\t\tclassName={collectibleTileWrapper}\n\t\t\t>\n\t\t\t\t<article style={{ width: '100%' }}>\n\t\t\t\t\t{externalUrl && (\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\tas=\"a\"\n\t\t\t\t\t\t\thref={externalUrl}\n\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\tbackdropFilter=\"blur\"\n\t\t\t\t\t\t\tvariant=\"glass\"\n\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tposition=\"absolute\"\n\t\t\t\t\t\t\ttop=\"2\"\n\t\t\t\t\t\t\tleft=\"2\"\n\t\t\t\t\t\t\ticon={SvgDiamondEyeIcon}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\n\t\t\t\t\t<img\n\t\t\t\t\t\tsrc={imageLoadingError ? ChessTileImage : image || ChessTileImage}\n\t\t\t\t\t\talt={name}\n\t\t\t\t\t\tclassName={collectibleImage}\n\t\t\t\t\t\tonError={() => setImageLoadingError(true)}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<Footer\n\t\t\t\t\t\tname={name || ''}\n\t\t\t\t\t\ttype={collectionType}\n\t\t\t\t\t\tonOfferClick={() => onOfferClick?.({ order: highestOffer?.order })}\n\t\t\t\t\t\thighestOffer={highestOffer?.order}\n\t\t\t\t\t\tlowestListingPriceAmount={lowestListing?.order?.priceAmount}\n\t\t\t\t\t\tlowestListingCurrency={lowestListingCurrency}\n\t\t\t\t\t\tbalance={balance}\n\t\t\t\t\t\tisAnimated={!!action}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{accountAddress && (highestOffer || lowestListing) && (\n\t\t\t\t\t\t<Box\n\t\t\t\t\t\t\tdisplay=\"flex\"\n\t\t\t\t\t\t\talignItems=\"center\"\n\t\t\t\t\t\t\tjustifyContent=\"center\"\n\t\t\t\t\t\t\tpadding=\"2\"\n\t\t\t\t\t\t\tclassName={actionWrapper}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ActionButton\n\t\t\t\t\t\t\t\tchainId={String(chainId)}\n\t\t\t\t\t\t\t\tcollectionAddress={collectionAddress}\n\t\t\t\t\t\t\t\ttokenId={collectibleId}\n\t\t\t\t\t\t\t\torderbookKind={orderbookKind}\n\t\t\t\t\t\t\t\taction={action}\n\t\t\t\t\t\t\t\thighestOffer={highestOffer?.order}\n\t\t\t\t\t\t\t\tlowestListing={lowestListing?.order}\n\t\t\t\t\t\t\t\tisOwned={!!balance}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t)}\n\t\t\t\t</article>\n\t\t\t</Box>\n\t\t</Box>\n\t);\n}\n","import { Box, type IconProps } from '@0xsequence/design-system';\nimport { iconVariants } from './styles.css';\n\nconst Svg = () => (\n\t<svg\n\t\twidth=\"16\"\n\t\theight=\"12\"\n\t\tviewBox=\"0 0 16 12\"\n\t\tfill=\"none\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\trole=\"img\"\n\t\taria-labelledby=\"diamond-eye-title\"\n\t>\n\t\t<title id=\"diamond-eye-title\">Diamond Eye Icon</title>\n\t\t<path\n\t\t\tfillRule=\"evenodd\"\n\t\t\tclipRule=\"evenodd\"\n\t\t\td=\"M5.00447 0.108826L0.611084 4.50526L7.99997 11.8911L15.3889 4.50526L10.9955 0.108826H5.00447ZM4.60507 2.90461C6.4718 1.0297 9.52815 1.02968 11.3949 2.90459L12.9925 4.50223L11.3949 6.09983C9.52815 7.97473 6.4718 7.97473 4.60507 6.09985L3.00749 4.50223L4.60507 2.90461ZM5.70321 4.50209C5.70321 5.77095 6.73193 6.79865 7.99974 6.79865C9.2676 6.79865 10.2963 5.77095 10.2963 4.50209C10.2963 3.23322 9.2676 2.20553 7.99974 2.20553C6.73193 2.20553 5.70321 3.23322 5.70321 4.50209ZM7.99974 5.50058C7.44853 5.50058 7.00125 5.05377 7.00125 4.50209C7.00125 3.9504 7.44853 3.50359 7.99974 3.50359C8.55095 3.50359 8.99825 3.9504 8.99825 4.50209C8.99825 5.05377 8.55095 5.50058 7.99974 5.50058Z\"\n\t\t\tfill=\"white\"\n\t\t/>\n\t</svg>\n);\n\nconst SvgDiamondEyeIcon = ({ size = 'sm', ...props }: IconProps) => (\n\t<Box\n\t\tas={Svg}\n\t\tclassName={iconVariants({\n\t\t\tsize,\n\t\t})}\n\t\t{...props}\n\t/>\n);\n\nexport default SvgDiamondEyeIcon;\n","'use client';\n\nimport { Button } from '@0xsequence/design-system';\nimport { observer } from '@legendapp/state/react';\nimport type { Hex } from 'viem';\nimport { InvalidStepError } from '../../../../../utils/_internal/error/transaction';\nimport type { Order, OrderbookKind } from '../../../../_internal';\nimport { useBuyModal } from '../../../modals/BuyModal';\nimport { useCreateListingModal } from '../../../modals/CreateListingModal';\nimport { useMakeOfferModal } from '../../../modals/MakeOfferModal';\nimport { useSellModal } from '../../../modals/SellModal';\nimport { useTransferModal } from '../../../modals/TransferModal';\n\nimport { CollectibleCardAction } from './types';\n\ntype ActionButtonProps = {\n\tchainId: string;\n\tcollectionAddress: Hex;\n\ttokenId: string;\n\torderbookKind: OrderbookKind;\n\tisTransfer?: boolean;\n\taction: CollectibleCardAction;\n\tisOwned: boolean;\n\thighestOffer?: Order;\n\tlowestListing?: Order;\n};\n\nexport const ActionButton = observer(\n\t({\n\t\tcollectionAddress,\n\t\tchainId,\n\t\ttokenId,\n\t\torderbookKind,\n\t\taction,\n\t\thighestOffer,\n\t\tlowestListing,\n\t}: ActionButtonProps) => {\n\t\tconst { show: showCreateListingModal } = useCreateListingModal();\n\t\tconst { show: showMakeOfferModal } = useMakeOfferModal();\n\t\tconst { show: showSellModal } = useSellModal();\n\t\tconst { show: showTransferModal } = useTransferModal();\n\t\tconst { show: showBuyModal } = useBuyModal();\n\n\t\tif (action === CollectibleCardAction.BUY) {\n\t\t\tif (!lowestListing)\n\t\t\t\tthrow new InvalidStepError('BUY', 'lowestListing is required');\n\n\t\t\treturn (\n\t\t\t\t<ActionButtonBody\n\t\t\t\t\tlabel=\"Buy\"\n\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\tshowBuyModal({\n\t\t\t\t\t\t\tcollectionAddress,\n\t\t\t\t\t\t\tchainId: chainId,\n\t\t\t\t\t\t\ttokenId: tokenId,\n\t\t\t\t\t\t\torder: lowestListing,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\n\t\tif (action === CollectibleCardAction.SELL) {\n\t\t\tif (!highestOffer)\n\t\t\t\tthrow new InvalidStepError('SELL', 'highestOffer is required');\n\n\t\t\treturn (\n\t\t\t\t<ActionButtonBody\n\t\t\t\t\tlabel=\"Sell\"\n\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\tshowSellModal({\n\t\t\t\t\t\t\tcollectionAddress,\n\t\t\t\t\t\t\tchainId: chainId,\n\t\t\t\t\t\t\ttokenId: tokenId,\n\t\t\t\t\t\t\torder: highestOffer,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\n\t\tif (action === CollectibleCardAction.LIST) {\n\t\t\treturn (\n\t\t\t\t<ActionButtonBody\n\t\t\t\t\tlabel=\"Create listing\"\n\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\tshowCreateListingModal({\n\t\t\t\t\t\t\tcollectionAddress: collectionAddress as Hex,\n\t\t\t\t\t\t\tchainId: chainId,\n\t\t\t\t\t\t\tcollectibleId: tokenId,\n\t\t\t\t\t\t\torderbookKind,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\n\t\tif (action === CollectibleCardAction.OFFER) {\n\t\t\treturn (\n\t\t\t\t<ActionButtonBody\n\t\t\t\t\tlabel=\"Make an offer\"\n\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\tshowMakeOfferModal({\n\t\t\t\t\t\t\tcollectionAddress: collectionAddress as Hex,\n\t\t\t\t\t\t\tchainId: chainId,\n\t\t\t\t\t\t\tcollectibleId: tokenId,\n\t\t\t\t\t\t\torderbookKind,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\n\t\tif (action === CollectibleCardAction.TRANSFER) {\n\t\t\treturn (\n\t\t\t\t<ActionButtonBody\n\t\t\t\t\tlabel=\"Transfer\"\n\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\tshowTransferModal({\n\t\t\t\t\t\t\tcollectionAddress: collectionAddress as Hex,\n\t\t\t\t\t\t\tchainId: chainId,\n\t\t\t\t\t\t\tcollectibleId: tokenId,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\n\t\treturn null;\n\t},\n);\n\ntype ActionButtonBodyProps = {\n\tlabel: string;\n\tonClick: () => void;\n};\n\nfunction ActionButtonBody({ label, onClick }: ActionButtonBodyProps) {\n\treturn (\n\t\t<Button\n\t\t\tvariant=\"primary\"\n\t\t\tlabel={label}\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-empty-function\n\t\t\tonClick={(e) => {\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\n\t\t\t\tonClick();\n\t\t\t}}\n\t\t\t// leftIcon={leftIcon}\n\t\t\tsize=\"xs\"\n\t\t\tshape=\"square\"\n\t\t\twidth=\"full\"\n\t\t/>\n\t);\n}\n","import { Box, IconButton, Image, Text } from '@0xsequence/design-system';\nimport { formatUnits } from 'viem';\nimport { useAccount } from 'wagmi';\nimport { ContractType, type Currency, type Order } from '../../../_internal';\nimport SvgBellIcon from '../../icons/Bell';\nimport { footer, offerBellButton } from './styles.css';\n\ntype FooterProps = {\n\tname: string;\n\ttype?: ContractType;\n\tonOfferClick?: () => void;\n\thighestOffer?: Order;\n\tlowestListingPriceAmount?: string;\n\tlowestListingCurrency?: Currency;\n\tbalance?: string;\n\tisAnimated?: boolean;\n};\n\nexport const Footer = ({\n\tname,\n\ttype,\n\tonOfferClick,\n\thighestOffer,\n\tlowestListingPriceAmount,\n\tlowestListingCurrency,\n\tbalance,\n\tisAnimated,\n}: FooterProps) => {\n\tconst { address } = useAccount();\n\tconst listed = !!lowestListingPriceAmount && !!lowestListingCurrency;\n\n\tif (name.length > 15 && highestOffer) {\n\t\tname = `${name.substring(0, 13)}...`;\n\t}\n\tif (name.length > 17 && !highestOffer) {\n\t\tname = `${name.substring(0, 17)}...`;\n\t}\n\n\treturn (\n\t\t<Box\n\t\t\tdisplay=\"flex\"\n\t\t\tflexDirection=\"column\"\n\t\t\talignItems=\"flex-start\"\n\t\t\tgap=\"2\"\n\t\t\tpadding=\"4\"\n\t\t\twhiteSpace=\"nowrap\"\n\t\t\tposition=\"relative\"\n\t\t\tclassName={!!address && isAnimated ? footer.animated : footer.static}\n\t\t>\n\t\t\t<Box\n\t\t\t\tdisplay=\"flex\"\n\t\t\t\talignItems=\"center\"\n\t\t\t\tjustifyContent=\"space-between\"\n\t\t\t\tposition=\"relative\"\n\t\t\t\twidth=\"full\"\n\t\t\t>\n\t\t\t\t<Text\n\t\t\t\t\tcolor=\"text100\"\n\t\t\t\t\tfontSize=\"normal\"\n\t\t\t\t\tfontWeight=\"bold\"\n\t\t\t\t\ttextAlign=\"left\"\n\t\t\t\t\tfontFamily=\"body\"\n\t\t\t\t>\n\t\t\t\t\t{name}\n\t\t\t\t</Text>\n\n\t\t\t\t{highestOffer && onOfferClick && (\n\t\t\t\t\t<IconButton\n\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tclassName={offerBellButton}\n\t\t\t\t\t\tposition=\"absolute\"\n\t\t\t\t\t\tright=\"0\"\n\t\t\t\t\t\ttop=\"0\"\n\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\tonOfferClick?.();\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ticon={(props) => <SvgBellIcon {...props} size={'xs'} />}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</Box>\n\n\t\t\t<Box display=\"flex\" alignItems=\"center\" gap=\"1\">\n\t\t\t\t{listed && (\n\t\t\t\t\t<Image src={lowestListingCurrency?.imageUrl} width=\"3\" height=\"3\" />\n\t\t\t\t)}\n\n\t\t\t\t<Text\n\t\t\t\t\tcolor={listed ? 'text100' : 'text50'}\n\t\t\t\t\tfontSize=\"small\"\n\t\t\t\t\tfontWeight=\"bold\"\n\t\t\t\t\ttextAlign=\"left\"\n\t\t\t\t\tfontFamily=\"body\"\n\t\t\t\t>\n\t\t\t\t\t{listed &&\n\t\t\t\t\t\t`${formatUnits(\n\t\t\t\t\t\t\tBigInt(lowestListingPriceAmount),\n\t\t\t\t\t\t\tlowestListingCurrency.decimals,\n\t\t\t\t\t\t)} ${lowestListingCurrency.symbol}`}\n\n\t\t\t\t\t{!listed && 'Not listed yet'}\n\t\t\t\t</Text>\n\t\t\t</Box>\n\n\t\t\t<TokenTypeBalancePill balance={balance} type={type as ContractType} />\n\t\t</Box>\n\t);\n};\n\nconst TokenTypeBalancePill = ({\n\tbalance,\n\ttype,\n}: { balance?: string; type: ContractType }) => {\n\tconst displayText =\n\t\ttype === ContractType.ERC1155\n\t\t\t? balance\n\t\t\t\t? `Owned: ${balance}`\n\t\t\t\t: 'ERC-1155'\n\t\t\t: 'ERC-721';\n\n\treturn (\n\t\t<Text\n\t\t\tbackground=\"backgroundSecondary\"\n\t\t\tcolor=\"text80\"\n\t\t\tfontSize=\"small\"\n\t\t\ttextAlign=\"left\"\n\t\t\tfontFamily=\"body\"\n\t\t\tpaddingX=\"2\"\n\t\t\tpaddingY=\"1\"\n\t\t\tborderRadius=\"sm\"\n\t\t>\n\t\t\t{displayText}\n\t\t</Text>\n\t);\n};\n","import { Box, type IconProps } from '@0xsequence/design-system';\nimport { iconVariants } from './styles.css';\n\nconst Svg = () => (\n\t<svg\n\t\twidth=\"17\"\n\t\theight=\"17\"\n\t\tviewBox=\"0 0 17 17\"\n\t\tfill=\"none\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\trole=\"img\"\n\t\taria-labelledby=\"bell-title\"\n\t>\n\t\t<title id=\"bell-title\">Notification Bell</title>\n\t\t<path\n\t\t\tfillRule=\"evenodd\"\n\t\t\tclipRule=\"evenodd\"\n\t\t\td=\"M12.3127 7.45705V9.74274C12.3127 10.3805 12.6293 10.6971 12.9647 11.0326L12.9652 11.033L12.9679 11.0358C13.3205 11.3893 13.6843 11.754 13.6843 12.4854C13.6843 12.5491 13.6335 12.5998 13.57 12.5998H3.51277C3.44959 12.5998 3.39844 12.5489 3.39844 12.4854C3.39844 11.7539 3.76242 11.389 4.11507 11.0354L4.11754 11.033C4.45305 10.6975 4.76984 10.3807 4.76984 9.74245V7.45676C4.76984 5.6932 5.98854 4.21248 7.62704 3.802V3.11399C7.62704 2.60926 8.03659 2.19971 8.54132 2.19971C9.04606 2.19971 9.45561 2.60926 9.45561 3.11399V3.802C11.094 4.21286 12.3127 5.69335 12.3127 7.45705ZM10.3698 13.1711C10.3698 14.1809 9.55099 14.9997 8.54121 14.9997C7.53128 14.9997 6.71272 14.181 6.71272 13.1711H10.3698ZM8.758 7.70501C9.30005 7.85574 9.6696 7.99832 9.86302 8.13224C10.1776 8.35015 10.3374 8.67657 10.338 9.106C10.338 9.7284 10.1359 10.1706 9.72956 10.4326C9.50571 10.5778 9.18295 10.6723 8.75846 10.7195V11.4005H8.42657V10.7195C7.74604 10.6746 7.28244 10.4349 7.04094 9.99812C6.90703 9.76157 6.83984 9.44246 6.83984 9.04019H7.46277C7.48004 9.35983 7.53041 9.59501 7.6135 9.74163C7.75837 10.0063 8.0303 10.1548 8.42664 10.1861V8.27703C7.9177 8.18078 7.54357 8.01963 7.30116 7.79532C7.0605 7.57102 6.93929 7.25914 6.93929 6.86234C6.93929 6.50686 7.06917 6.18768 7.32977 5.90212C7.58991 5.61657 7.95581 5.47132 8.42619 5.46675V5.00049H8.75808V5.45861C9.22343 5.4927 9.58119 5.62981 9.82863 5.87039C10.0787 6.11144 10.2086 6.43062 10.2204 6.82651H9.60569C9.5907 6.64899 9.54299 6.49507 9.4631 6.36884C9.31595 6.13183 9.08076 6.00697 8.758 5.99518V7.70501ZM7.80143 7.36315C7.95574 7.49478 8.16369 7.58608 8.42611 7.63691L8.42619 5.98886C8.11651 5.99936 7.89723 6.09424 7.76651 6.2681C7.63572 6.4447 7.57036 6.62815 7.57036 6.82019C7.57036 7.05081 7.64705 7.23289 7.80143 7.36315ZM8.75747 10.2033C9.15883 10.1847 9.43305 10.0394 9.58606 9.76522C9.66504 9.62408 9.70415 9.46285 9.70399 9.27948C9.70399 8.98624 9.59686 8.76376 9.38123 8.61121C9.2582 8.52219 9.05079 8.4391 8.75747 8.35921V10.2033Z\"\n\t\t\tfill=\"white\"\n\t\t/>\n\t</svg>\n);\n\nconst SvgBellIcon = ({ size = 'sm', ...props }: IconProps) => (\n\t<Box\n\t\tas={Svg}\n\t\tclassName={iconVariants({\n\t\t\tsize,\n\t\t})}\n\t\t{...props}\n\t/>\n);\n\nexport default SvgBellIcon;\n"],"mappings":"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","names":["observer","AccountModal","Box","Text","observer","Box","jsx","jsxs","Box","observable","jsx","jsxs","observer","currency","Box","Text","Box","Show","observer","useEffect","useState","parseUnits","useAccount","Box","jsx","Box","Box","jsx","Box","Box","Text","observer","Button","jsx","jsx","jsxs","Button","useState","jsx","jsxs","observer","ExpirationDateSelect","Box","Text","Text","jsx","Text","Box","NumericInput","Text","observer","useEffect","useState","parseUnits","useAccount","Box","TokenImage","useState","jsx","Skeleton","observer","useEffect","jsx","observer","CurrencyOptionsSelect","useEffect","Skeleton","currency","jsx","jsxs","observer","PriceInput","useState","useAccount","value","parseUnits","useEffect","Box","NumericInput","Text","Box","Skeleton","Text","jsx","jsxs","Box","Skeleton","Text","Box","Image","Skeleton","Text","formatUnits","jsx","jsxs","formatUnits","Box","Text","Image","Skeleton","IconButton","Skeleton","Text","observer","Content","Portal","Root","useEffect","useState","Box","Text","Spinner","jsx","jsxs","Spinner","Box","Text","Box","Image","Skeleton","Text","observer","formatUnits","Box","Text","useEffect","useState","jsx","observable","initialState","jsx","jsxs","observer","collectibleImage","formatUnits","Box","Skeleton","Text","Image","closeButton","dialogOverlay","jsx","jsxs","observer","useState","useEffect","Root","Portal","dialogOverlay","Content","Text","Skeleton","closeButton","IconButton","observable","addDays","initialState","addDays","observable","jsx","jsxs","Show","Modal","observer","useState","useAccount","useEffect","parseUnits","Box","Show","observer","useEffect","useState","parseUnits","useCallback","useState","useState","useCallback","observable","addDays","initialState","addDays","observable","jsx","jsxs","Show","observer","useState","parseUnits","useEffect","state","Show","observer","parseUnits","useCallback","useState","useState","useCallback","Box","Image","Skeleton","Text","formatDistanceToNow","jsx","jsxs","observable","initialState","useEffect","useState","jsx","jsxs","Show","ModalContent","observer","currency","parseUnits","Box","Button","CloseIcon","IconButton","Image","Text","observer","Close","Content","Overlay","Portal","Root","observable","initialState","jsx","jsxs","observer","Root","Portal","Overlay","Content","Box","Text","Close","IconButton","CloseIcon","Button","Image","CloseIcon","IconButton","Show","observer","Close","Content","Overlay","Portal","Root","useAccount","observable","initialState","Box","Button","Text","observable","useAccount","Fragment","jsx","jsxs","useAccount","observable","Box","Text","Button","Box","Button","Text","observer","jsx","jsxs","observer","Box","Text","Button","jsx","jsxs","useAccount","Show","Modal","ModalContent","observer","Root","Portal","Overlay","dialogOverlay","Content","Close","closeButton","IconButton","CloseIcon","Fragment","jsx","jsxs","observer","useState","Box","IconButton","Skeleton","useAccount","Box","jsx","jsxs","Box","Button","observer","jsx","observer","Button","Box","IconButton","Image","Text","formatUnits","useAccount","Box","jsx","jsxs","Svg","Box","jsx","jsxs","useAccount","Box","Text","IconButton","Image","formatUnits","jsx","jsxs","Box","Skeleton","useAccount","useState","IconButton"]}
@@ -1,7 +1,7 @@
1
1
  "use client"
2
2
  import {
3
3
  MissingConfigError
4
- } from "./chunk-QTQH5I2E.js";
4
+ } from "./chunk-EVRILXOH.js";
5
5
 
6
6
  // src/utils/address.ts
7
7
  var truncateMiddle = (address, minPrefix = 20, minSuffix = 3) => {
@@ -68,12 +68,11 @@ var calculatePriceDifferencePercentage = ({
68
68
  basePriceRaw,
69
69
  decimals
70
70
  }) => {
71
- const difference = Number(
72
- formatUnits(inputPriceRaw - basePriceRaw, decimals)
73
- );
71
+ const inputPrice = Number(formatUnits(inputPriceRaw, decimals));
74
72
  const basePrice = Number(formatUnits(basePriceRaw, decimals));
73
+ const difference = inputPrice - basePrice;
75
74
  const percentageDifference = difference / basePrice * 100;
76
- return Math.abs(percentageDifference).toFixed(2);
75
+ return percentageDifference.toFixed(2);
77
76
  };
78
77
 
79
78
  export {
@@ -84,4 +83,4 @@ export {
84
83
  getPresentableChainName,
85
84
  calculatePriceDifferencePercentage
86
85
  };
87
- //# sourceMappingURL=chunk-AY2MZHZN.js.map
86
+ //# sourceMappingURL=chunk-KNX2LER4.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/address.ts","../src/utils/get-public-rpc-client.ts","../src/utils/network.ts","../src/utils/price.ts"],"sourcesContent":["export const truncateMiddle = (\n\taddress: string,\n\tminPrefix = 20,\n\tminSuffix = 3,\n): string => {\n\tif (minPrefix + minSuffix >= 40) {\n\t\treturn address;\n\t}\n\treturn `${address.substring(0, 2 + minPrefix)}…${address.substring(address.length - minSuffix)}`;\n};\n\nexport const truncateEnd = (text: string | undefined, truncateAt: number) => {\n\tif (!text) return '';\n\n\tlet finalText = text;\n\n\tif (text.length >= truncateAt) {\n\t\tfinalText = `${text.slice(0, truncateAt)}...`;\n\t}\n\n\treturn finalText;\n};\n\nexport const compareAddress = (a = '', b = '') => {\n\treturn a.toLowerCase() === b.toLowerCase();\n};\n","import { allNetworks, findNetworkConfig } from '@0xsequence/network';\nimport { http, type PublicClient, createPublicClient } from 'viem';\nimport type { ChainId } from '../react/_internal';\nimport { MissingConfigError } from './_internal/error/transaction';\n\nexport const getPublicRpcClient = (chainId: ChainId): PublicClient => {\n\tconst network = findNetworkConfig(allNetworks, chainId);\n\n\tif (!network) {\n\t\tthrow new MissingConfigError(\n\t\t\t`Network configuration for chainId: ${chainId}`,\n\t\t);\n\t}\n\n\treturn createPublicClient({\n\t\tchain: {\n\t\t\t...network,\n\t\t\tid: Number(chainId),\n\t\t\tname: network.name,\n\t\t\tnativeCurrency: { ...network.nativeToken },\n\t\t\trpcUrls: {\n\t\t\t\tdefault: {\n\t\t\t\t\thttp: [network.rpcUrl],\n\t\t\t\t},\n\t\t\t\tpublic: {\n\t\t\t\t\thttp: [network.rpcUrl],\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tbatch: {\n\t\t\tmulticall: true,\n\t\t},\n\t\ttransport: http(),\n\t});\n};\n","import { networks, type ChainId as sequenceChainId } from '@0xsequence/network';\nimport type { ChainId } from '../react/_internal';\n\nexport const getPresentableChainName = (chainId: ChainId) => {\n\tconst id = Number(chainId) as sequenceChainId;\n\treturn networks[id]?.name;\n};\n","import { formatUnits } from 'viem';\n\ntype CalculatePriceDifferencePercentageArgs = {\n\tinputPriceRaw: bigint;\n\tbasePriceRaw: bigint;\n\tdecimals: number;\n};\n\nexport const calculatePriceDifferencePercentage = ({\n\tinputPriceRaw,\n\tbasePriceRaw,\n\tdecimals,\n}: CalculatePriceDifferencePercentageArgs) => {\n\tconst difference = Number(\n\t\tformatUnits(inputPriceRaw - basePriceRaw, decimals),\n\t);\n\tconst basePrice = Number(formatUnits(basePriceRaw, decimals));\n\tconst percentageDifference = (difference / basePrice) * 100;\n\n\treturn Math.abs(percentageDifference).toFixed(2);\n};\n"],"mappings":";;;;;AAAO,IAAM,iBAAiB,CAC7B,SACA,YAAY,IACZ,YAAY,MACA;AACZ,MAAI,YAAY,aAAa,IAAI;AAChC,WAAO;AAAA,EACR;AACA,SAAO,GAAG,QAAQ,UAAU,GAAG,IAAI,SAAS,CAAC,SAAI,QAAQ,UAAU,QAAQ,SAAS,SAAS,CAAC;AAC/F;AAEO,IAAM,cAAc,CAAC,MAA0B,eAAuB;AAC5E,MAAI,CAAC,KAAM,QAAO;AAElB,MAAI,YAAY;AAEhB,MAAI,KAAK,UAAU,YAAY;AAC9B,gBAAY,GAAG,KAAK,MAAM,GAAG,UAAU,CAAC;AAAA,EACzC;AAEA,SAAO;AACR;AAEO,IAAM,iBAAiB,CAAC,IAAI,IAAI,IAAI,OAAO;AACjD,SAAO,EAAE,YAAY,MAAM,EAAE,YAAY;AAC1C;;;ACzBA,SAAS,aAAa,yBAAyB;AAC/C,SAAS,MAAyB,0BAA0B;AAIrD,IAAM,qBAAqB,CAAC,YAAmC;AACrE,QAAM,UAAU,kBAAkB,aAAa,OAAO;AAEtD,MAAI,CAAC,SAAS;AACb,UAAM,IAAI;AAAA,MACT,sCAAsC,OAAO;AAAA,IAC9C;AAAA,EACD;AAEA,SAAO,mBAAmB;AAAA,IACzB,OAAO;AAAA,MACN,GAAG;AAAA,MACH,IAAI,OAAO,OAAO;AAAA,MAClB,MAAM,QAAQ;AAAA,MACd,gBAAgB,EAAE,GAAG,QAAQ,YAAY;AAAA,MACzC,SAAS;AAAA,QACR,SAAS;AAAA,UACR,MAAM,CAAC,QAAQ,MAAM;AAAA,QACtB;AAAA,QACA,QAAQ;AAAA,UACP,MAAM,CAAC,QAAQ,MAAM;AAAA,QACtB;AAAA,MACD;AAAA,IACD;AAAA,IACA,OAAO;AAAA,MACN,WAAW;AAAA,IACZ;AAAA,IACA,WAAW,KAAK;AAAA,EACjB,CAAC;AACF;;;AClCA,SAAS,gBAAiD;AAGnD,IAAM,0BAA0B,CAAC,YAAqB;AAC5D,QAAM,KAAK,OAAO,OAAO;AACzB,SAAO,SAAS,EAAE,GAAG;AACtB;;;ACNA,SAAS,mBAAmB;AAQrB,IAAM,qCAAqC,CAAC;AAAA,EAClD;AAAA,EACA;AAAA,EACA;AACD,MAA8C;AAC7C,QAAM,aAAa;AAAA,IAClB,YAAY,gBAAgB,cAAc,QAAQ;AAAA,EACnD;AACA,QAAM,YAAY,OAAO,YAAY,cAAc,QAAQ,CAAC;AAC5D,QAAM,uBAAwB,aAAa,YAAa;AAExD,SAAO,KAAK,IAAI,oBAAoB,EAAE,QAAQ,CAAC;AAChD;","names":[]}
1
+ {"version":3,"sources":["../src/utils/address.ts","../src/utils/get-public-rpc-client.ts","../src/utils/network.ts","../src/utils/price.ts"],"sourcesContent":["export const truncateMiddle = (\n\taddress: string,\n\tminPrefix = 20,\n\tminSuffix = 3,\n): string => {\n\tif (minPrefix + minSuffix >= 40) {\n\t\treturn address;\n\t}\n\treturn `${address.substring(0, 2 + minPrefix)}…${address.substring(address.length - minSuffix)}`;\n};\n\nexport const truncateEnd = (text: string | undefined, truncateAt: number) => {\n\tif (!text) return '';\n\n\tlet finalText = text;\n\n\tif (text.length >= truncateAt) {\n\t\tfinalText = `${text.slice(0, truncateAt)}...`;\n\t}\n\n\treturn finalText;\n};\n\nexport const compareAddress = (a = '', b = '') => {\n\treturn a.toLowerCase() === b.toLowerCase();\n};\n","import { allNetworks, findNetworkConfig } from '@0xsequence/network';\nimport { http, type PublicClient, createPublicClient } from 'viem';\nimport type { ChainId } from '../react/_internal';\nimport { MissingConfigError } from './_internal/error/transaction';\n\nexport const getPublicRpcClient = (chainId: ChainId): PublicClient => {\n\tconst network = findNetworkConfig(allNetworks, chainId);\n\n\tif (!network) {\n\t\tthrow new MissingConfigError(\n\t\t\t`Network configuration for chainId: ${chainId}`,\n\t\t);\n\t}\n\n\treturn createPublicClient({\n\t\tchain: {\n\t\t\t...network,\n\t\t\tid: Number(chainId),\n\t\t\tname: network.name,\n\t\t\tnativeCurrency: { ...network.nativeToken },\n\t\t\trpcUrls: {\n\t\t\t\tdefault: {\n\t\t\t\t\thttp: [network.rpcUrl],\n\t\t\t\t},\n\t\t\t\tpublic: {\n\t\t\t\t\thttp: [network.rpcUrl],\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tbatch: {\n\t\t\tmulticall: true,\n\t\t},\n\t\ttransport: http(),\n\t});\n};\n","import { networks, type ChainId as sequenceChainId } from '@0xsequence/network';\nimport type { ChainId } from '../react/_internal';\n\nexport const getPresentableChainName = (chainId: ChainId) => {\n\tconst id = Number(chainId) as sequenceChainId;\n\treturn networks[id]?.name;\n};\n","import { formatUnits } from 'viem';\n\ntype CalculatePriceDifferencePercentageArgs = {\n\tinputPriceRaw: bigint;\n\tbasePriceRaw: bigint;\n\tdecimals: number;\n};\n\nexport const calculatePriceDifferencePercentage = ({\n\tinputPriceRaw,\n\tbasePriceRaw,\n\tdecimals,\n}: CalculatePriceDifferencePercentageArgs) => {\n\tconst inputPrice = Number(formatUnits(inputPriceRaw, decimals));\n\tconst basePrice = Number(formatUnits(basePriceRaw, decimals));\n\tconst difference = inputPrice - basePrice;\n\tconst percentageDifference = (difference / basePrice) * 100;\n\n\treturn percentageDifference.toFixed(2);\n};\n"],"mappings":";;;;;;AAAO,IAAM,iBAAiB,CAC7B,SACA,YAAY,IACZ,YAAY,MACA;AACZ,MAAI,YAAY,aAAa,IAAI;AAChC,WAAO;AAAA,EACR;AACA,SAAO,GAAG,QAAQ,UAAU,GAAG,IAAI,SAAS,CAAC,SAAI,QAAQ,UAAU,QAAQ,SAAS,SAAS,CAAC;AAC/F;AAEO,IAAM,cAAc,CAAC,MAA0B,eAAuB;AAC5E,MAAI,CAAC,KAAM,QAAO;AAElB,MAAI,YAAY;AAEhB,MAAI,KAAK,UAAU,YAAY;AAC9B,gBAAY,GAAG,KAAK,MAAM,GAAG,UAAU,CAAC;AAAA,EACzC;AAEA,SAAO;AACR;AAEO,IAAM,iBAAiB,CAAC,IAAI,IAAI,IAAI,OAAO;AACjD,SAAO,EAAE,YAAY,MAAM,EAAE,YAAY;AAC1C;;;ACzBA,SAAS,aAAa,yBAAyB;AAC/C,SAAS,MAAyB,0BAA0B;AAIrD,IAAM,qBAAqB,CAAC,YAAmC;AACrE,QAAM,UAAU,kBAAkB,aAAa,OAAO;AAEtD,MAAI,CAAC,SAAS;AACb,UAAM,IAAI;AAAA,MACT,sCAAsC,OAAO;AAAA,IAC9C;AAAA,EACD;AAEA,SAAO,mBAAmB;AAAA,IACzB,OAAO;AAAA,MACN,GAAG;AAAA,MACH,IAAI,OAAO,OAAO;AAAA,MAClB,MAAM,QAAQ;AAAA,MACd,gBAAgB,EAAE,GAAG,QAAQ,YAAY;AAAA,MACzC,SAAS;AAAA,QACR,SAAS;AAAA,UACR,MAAM,CAAC,QAAQ,MAAM;AAAA,QACtB;AAAA,QACA,QAAQ;AAAA,UACP,MAAM,CAAC,QAAQ,MAAM;AAAA,QACtB;AAAA,MACD;AAAA,IACD;AAAA,IACA,OAAO;AAAA,MACN,WAAW;AAAA,IACZ;AAAA,IACA,WAAW,KAAK;AAAA,EACjB,CAAC;AACF;;;AClCA,SAAS,gBAAiD;AAGnD,IAAM,0BAA0B,CAAC,YAAqB;AAC5D,QAAM,KAAK,OAAO,OAAO;AACzB,SAAO,SAAS,EAAE,GAAG;AACtB;;;ACNA,SAAS,mBAAmB;AAQrB,IAAM,qCAAqC,CAAC;AAAA,EAClD;AAAA,EACA;AAAA,EACA;AACD,MAA8C;AAC7C,QAAM,aAAa,OAAO,YAAY,eAAe,QAAQ,CAAC;AAC9D,QAAM,YAAY,OAAO,YAAY,cAAc,QAAQ,CAAC;AAC5D,QAAM,aAAa,aAAa;AAChC,QAAM,uBAAwB,aAAa,YAAa;AAExD,SAAO,qBAAqB,QAAQ,CAAC;AACtC;","names":[]}