@0xsequence/marketplace-sdk 0.8.3 → 0.8.4

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 (64) hide show
  1. package/CHANGELOG.md +8 -1
  2. package/dist/{chunk-FH4TZRDV.js → chunk-44YGZVBS.js} +2 -2
  3. package/dist/{chunk-QTV77W42.js → chunk-HRL2TMXU.js} +5 -5
  4. package/dist/chunk-HRL2TMXU.js.map +1 -0
  5. package/dist/{chunk-5ATGT5S4.js → chunk-VBRJ2OPM.js} +14 -6
  6. package/dist/chunk-VBRJ2OPM.js.map +1 -0
  7. package/dist/{chunk-DFI52A2E.js → chunk-VF3LWBQB.js} +365 -243
  8. package/dist/chunk-VF3LWBQB.js.map +1 -0
  9. package/dist/{chunk-FSJKN4YN.js → chunk-ZSCZLHKX.js} +194 -2
  10. package/dist/chunk-ZSCZLHKX.js.map +1 -0
  11. package/dist/index.js +5 -5
  12. package/dist/{lowestListing-DUZ_nYml.d.ts → lowestListing-W7P4EkC3.d.ts} +34 -11
  13. package/dist/react/_internal/databeat/index.js +4 -4
  14. package/dist/react/hooks/index.d.ts +8 -5
  15. package/dist/react/hooks/index.js +5 -3
  16. package/dist/react/index.d.ts +2 -2
  17. package/dist/react/index.js +8 -6
  18. package/dist/react/queries/index.d.ts +1 -1
  19. package/dist/react/queries/index.js +5 -1
  20. package/dist/react/ui/components/collectible-card/index.js +6 -6
  21. package/dist/react/ui/icons/index.js +1 -1
  22. package/dist/react/ui/index.js +6 -6
  23. package/dist/react/ui/modals/_internal/components/actionModal/index.js +4 -4
  24. package/dist/utils/abi/index.js +5 -5
  25. package/dist/utils/index.js +5 -5
  26. package/package.json +1 -1
  27. package/src/react/_internal/api/__mocks__/marketplace.msw.ts +35 -21
  28. package/src/react/hooks/__tests__/useCancelTransactionSteps.test.tsx +4 -9
  29. package/src/react/hooks/__tests__/useGenerateCancelTransaction.test.tsx +5 -4
  30. package/src/react/hooks/__tests__/useGenerateListingTransaction.test.tsx +14 -10
  31. package/src/react/hooks/__tests__/useGenerateOfferTransaction.test.tsx +115 -65
  32. package/src/react/hooks/__tests__/useGenerateSellTransaction.test.tsx +10 -7
  33. package/src/react/hooks/__tests__/useInventory.test.tsx +294 -0
  34. package/src/react/hooks/index.ts +1 -0
  35. package/src/react/hooks/useAutoSelectFeeOption.tsx +10 -3
  36. package/src/react/hooks/useCancelOrder.tsx +1 -0
  37. package/src/react/hooks/useCancelTransactionSteps.tsx +18 -4
  38. package/src/react/hooks/useGenerateOfferTransaction.tsx +11 -1
  39. package/src/react/hooks/useInventory.tsx +15 -0
  40. package/src/react/hooks/util/optimisticCancelUpdates.ts +115 -0
  41. package/src/react/queries/index.ts +1 -0
  42. package/src/react/queries/inventory.ts +303 -0
  43. package/src/react/queries/listBalances.ts +1 -8
  44. package/src/react/queries/listCollectibles.ts +12 -3
  45. package/src/react/ui/modals/CreateListingModal/__tests__/Modal.test.tsx +74 -104
  46. package/src/react/ui/modals/MakeOfferModal/__tests__/Modal.test.tsx +108 -78
  47. package/src/react/ui/modals/_internal/components/actionModal/ActionModal.test.tsx +286 -0
  48. package/src/react/ui/modals/_internal/components/actionModal/ActionModal.tsx +16 -4
  49. package/src/react/ui/modals/_internal/components/currencyOptionsSelect/__tests__/index.test.tsx +35 -132
  50. package/src/react/ui/modals/_internal/components/floorPriceText/__tests__/FloorPriceText.test.tsx +199 -0
  51. package/src/react/ui/modals/_internal/components/priceInput/__tests__/PriceInput.test.tsx +55 -0
  52. package/src/react/ui/modals/_internal/components/priceInput/index.tsx +1 -1
  53. package/src/react/ui/modals/_internal/components/switchChainModal/index.tsx +2 -2
  54. package/test/const.ts +24 -0
  55. package/test/test-utils.tsx +74 -26
  56. package/.changeset/flat-parks-clean.md +0 -8
  57. package/.changeset/red-buckets-deny.md +0 -6
  58. package/.changeset/seven-doors-taste.md +0 -5
  59. package/dist/chunk-5ATGT5S4.js.map +0 -1
  60. package/dist/chunk-DFI52A2E.js.map +0 -1
  61. package/dist/chunk-FSJKN4YN.js.map +0 -1
  62. package/dist/chunk-QTV77W42.js.map +0 -1
  63. package/src/react/ui/modals/_internal/components/priceInput/__tests__/index.test.tsx +0 -164
  64. /package/dist/{chunk-FH4TZRDV.js.map → chunk-44YGZVBS.js.map} +0 -0
@@ -5,7 +5,7 @@ import {
5
5
  MODAL_OVERLAY_PROPS,
6
6
  useSwitchChainModal,
7
7
  useWallet
8
- } from "./chunk-DFI52A2E.js";
8
+ } from "./chunk-VF3LWBQB.js";
9
9
 
10
10
  // src/react/ui/modals/_internal/components/actionModal/ActionModal.tsx
11
11
  import { Button, Modal, Spinner, Text } from "@0xsequence/design-system";
@@ -31,7 +31,7 @@ var ActionModal = observer(
31
31
  const chainMismatch = walletChainId !== Number(chainId);
32
32
  if (chainMismatch) {
33
33
  showSwitchChainModal({
34
- chainIdToSwitchTo: Number(chainId),
34
+ chainIdToSwitchTo: chainId,
35
35
  onSuccess
36
36
  });
37
37
  } else {
@@ -58,9 +58,17 @@ var ActionModal = observer(
58
58
  "div",
59
59
  {
60
60
  className: `flex ${spinnerContainerClassname} w-full items-center justify-center`,
61
+ "data-testid": "error-loading-wrapper",
61
62
  children: [
62
- isError && /* @__PURE__ */ jsx(Text, { className: "text-center font-body text-error100 text-small", children: "Error loading modal" }),
63
- isLoading && /* @__PURE__ */ jsx(Spinner, { size: "lg" })
63
+ isError && /* @__PURE__ */ jsx(
64
+ Text,
65
+ {
66
+ "data-testid": "error-loading-text",
67
+ className: "text-center font-body text-error100 text-small",
68
+ children: "Error loading modal"
69
+ }
70
+ ),
71
+ (isLoading || modalLoading) && /* @__PURE__ */ jsx("div", { "data-testid": "spinner", children: /* @__PURE__ */ jsx(Spinner, { size: "lg" }) })
64
72
  ]
65
73
  }
66
74
  ) : children,
@@ -82,7 +90,7 @@ var ActionModal = observer(
82
90
  size: "lg",
83
91
  "data-testid": cta.testid,
84
92
  label: /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center gap-2", children: [
85
- cta.pending && /* @__PURE__ */ jsx(Spinner, { size: "sm" }),
93
+ cta.pending && /* @__PURE__ */ jsx("div", { "data-testid": `${cta.testid}-spinner`, children: /* @__PURE__ */ jsx(Spinner, { size: "sm" }) }),
86
94
  cta.label
87
95
  ] })
88
96
  },
@@ -117,4 +125,4 @@ export {
117
125
  openModal,
118
126
  closeModal
119
127
  };
120
- //# sourceMappingURL=chunk-5ATGT5S4.js.map
128
+ //# sourceMappingURL=chunk-VBRJ2OPM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/react/ui/modals/_internal/components/actionModal/ActionModal.tsx","../src/react/ui/modals/_internal/components/actionModal/store.ts"],"sourcesContent":["'use client';\n\nimport type React from 'react';\nimport type { ComponentProps } from 'react';\n\nimport { Button, Modal, Spinner, Text } from '@0xsequence/design-system';\nimport { observer } from '@legendapp/state/react';\nimport { useWallet } from '../../../../../_internal/wallet/useWallet';\nimport { MODAL_OVERLAY_PROPS } from '../consts';\nimport { MODAL_CONTENT_PROPS } from '../consts';\nimport { useSwitchChainModal } from '../switchChainModal';\n\nexport interface ActionModalProps {\n\tisOpen: boolean;\n\tonClose: () => void;\n\ttitle: string;\n\tchildren: React.ReactNode;\n\tctas: {\n\t\tlabel: React.ReactNode;\n\t\tonClick: (() => Promise<void>) | (() => void);\n\t\tpending?: boolean;\n\t\tdisabled?: boolean;\n\t\thidden?: boolean;\n\t\tvariant?: ComponentProps<typeof Button>['variant'];\n\t\ttestid?: string;\n\t}[];\n\tchainId: number;\n\tmodalLoading?: boolean;\n\tspinnerContainerClassname?: string;\n\tdisableAnimation?: boolean;\n\thideCtas?: boolean;\n}\n\nexport const ActionModal = observer(\n\t({\n\t\tisOpen,\n\t\tonClose,\n\t\ttitle,\n\t\tchildren,\n\t\tctas,\n\t\tchainId,\n\t\tdisableAnimation,\n\t\tmodalLoading,\n\t\tspinnerContainerClassname,\n\t\thideCtas,\n\t}: ActionModalProps) => {\n\t\tconst { show: showSwitchChainModal } = useSwitchChainModal();\n\t\tconst { wallet, isLoading, isError } = useWallet();\n\n\t\tconst checkChain = async ({ onSuccess }: { onSuccess: () => void }) => {\n\t\t\tconst walletChainId = await wallet?.getChainId();\n\t\t\tconst chainMismatch = walletChainId !== Number(chainId);\n\t\t\tif (chainMismatch) {\n\t\t\t\tshowSwitchChainModal({\n\t\t\t\t\tchainIdToSwitchTo: chainId,\n\t\t\t\t\tonSuccess,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tonSuccess();\n\t\t\t}\n\t\t};\n\n\t\tif (wallet?.isWaaS) {\n\t\t\twallet.switchChain(Number(chainId));\n\t\t}\n\n\t\tif (!isOpen || !chainId) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn (\n\t\t\t<Modal\n\t\t\t\tisDismissible={true}\n\t\t\t\tonClose={onClose}\n\t\t\t\toverlayProps={MODAL_OVERLAY_PROPS}\n\t\t\t\tcontentProps={MODAL_CONTENT_PROPS}\n\t\t\t\tdisableAnimation={disableAnimation}\n\t\t\t>\n\t\t\t\t<div className=\"relative flex grow flex-col items-center gap-4 p-6\">\n\t\t\t\t\t<Text className=\"w-full text-center font-body font-bold text-large text-text-100\">\n\t\t\t\t\t\t{title}\n\t\t\t\t\t</Text>\n\n\t\t\t\t\t{modalLoading || isLoading || isError ? (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={`flex ${spinnerContainerClassname} w-full items-center justify-center`}\n\t\t\t\t\t\t\tdata-testid=\"error-loading-wrapper\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{isError && (\n\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\tdata-testid=\"error-loading-text\"\n\t\t\t\t\t\t\t\t\tclassName=\"text-center font-body text-error100 text-small\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tError loading modal\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{(isLoading || modalLoading) && (\n\t\t\t\t\t\t\t\t<div data-testid=\"spinner\">\n\t\t\t\t\t\t\t\t\t<Spinner size=\"lg\" />\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\tchildren\n\t\t\t\t\t)}\n\n\t\t\t\t\t{!hideCtas && !isLoading && !isError && (\n\t\t\t\t\t\t<div className=\"flex w-full flex-col gap-2\">\n\t\t\t\t\t\t\t{ctas.map(\n\t\t\t\t\t\t\t\t(cta) =>\n\t\t\t\t\t\t\t\t\t!cta.hidden && (\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"w-full rounded-[12px] [&>div]:justify-center\"\n\t\t\t\t\t\t\t\t\t\t\tkey={cta.onClick.toString()}\n\t\t\t\t\t\t\t\t\t\t\tonClick={async () => {\n\t\t\t\t\t\t\t\t\t\t\t\tawait checkChain({\n\t\t\t\t\t\t\t\t\t\t\t\t\tonSuccess: () => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcta.onClick();\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\tvariant={cta.variant || 'primary'}\n\t\t\t\t\t\t\t\t\t\t\tpending={cta.pending}\n\t\t\t\t\t\t\t\t\t\t\tdisabled={cta.disabled}\n\t\t\t\t\t\t\t\t\t\t\tsize=\"lg\"\n\t\t\t\t\t\t\t\t\t\t\tdata-testid={cta.testid}\n\t\t\t\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex items-center justify-center gap-2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t{cta.pending && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div data-testid={`${cta.testid}-spinner`}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Spinner size=\"sm\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t{cta.label}\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</Modal>\n\t\t);\n\t},\n);\n","import { type Observable, observable } from '@legendapp/state';\nimport type { Address } from 'viem';\n\nexport interface ActionModalState {\n\tisOpen: boolean;\n\tchainId: number | null;\n\tcollectionAddress: Address | null;\n}\n\nexport function createActionModalStore() {\n\treturn observable<ActionModalState>({\n\t\tisOpen: false,\n\t\tchainId: null,\n\t\tcollectionAddress: null,\n\t});\n}\n\nexport function openModal(store: Observable<ActionModalState>) {\n\tstore.isOpen.set(true);\n}\n\nexport function closeModal(store: Observable<ActionModalState>) {\n\tstore.isOpen.set(false);\n}\n"],"mappings":";;;;;;;;AAKA,SAAS,QAAQ,OAAO,SAAS,YAAY;AAC7C,SAAS,gBAAgB;AAyEpB,cAKC,YALD;AA9CE,IAAM,cAAc;AAAA,EAC1B,CAAC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,MAAwB;AACvB,UAAM,EAAE,MAAM,qBAAqB,IAAI,oBAAoB;AAC3D,UAAM,EAAE,QAAQ,WAAW,QAAQ,IAAI,UAAU;AAEjD,UAAM,aAAa,OAAO,EAAE,UAAU,MAAiC;AACtE,YAAM,gBAAgB,MAAM,QAAQ,WAAW;AAC/C,YAAM,gBAAgB,kBAAkB,OAAO,OAAO;AACtD,UAAI,eAAe;AAClB,6BAAqB;AAAA,UACpB,mBAAmB;AAAA,UACnB;AAAA,QACD,CAAC;AAAA,MACF,OAAO;AACN,kBAAU;AAAA,MACX;AAAA,IACD;AAEA,QAAI,QAAQ,QAAQ;AACnB,aAAO,YAAY,OAAO,OAAO,CAAC;AAAA,IACnC;AAEA,QAAI,CAAC,UAAU,CAAC,SAAS;AACxB,aAAO;AAAA,IACR;AAEA,WACC;AAAA,MAAC;AAAA;AAAA,QACA,eAAe;AAAA,QACf;AAAA,QACA,cAAc;AAAA,QACd,cAAc;AAAA,QACd;AAAA,QAEA,+BAAC,SAAI,WAAU,sDACd;AAAA,8BAAC,QAAK,WAAU,mEACd,iBACF;AAAA,UAEC,gBAAgB,aAAa,UAC7B;AAAA,YAAC;AAAA;AAAA,cACA,WAAW,QAAQ,yBAAyB;AAAA,cAC5C,eAAY;AAAA,cAEX;AAAA,2BACA;AAAA,kBAAC;AAAA;AAAA,oBACA,eAAY;AAAA,oBACZ,WAAU;AAAA,oBACV;AAAA;AAAA,gBAED;AAAA,iBAEC,aAAa,iBACd,oBAAC,SAAI,eAAY,WAChB,8BAAC,WAAQ,MAAK,MAAK,GACpB;AAAA;AAAA;AAAA,UAEF,IAEA;AAAA,UAGA,CAAC,YAAY,CAAC,aAAa,CAAC,WAC5B,oBAAC,SAAI,WAAU,8BACb,eAAK;AAAA,YACL,CAAC,QACA,CAAC,IAAI,UACJ;AAAA,cAAC;AAAA;AAAA,gBACA,WAAU;AAAA,gBAEV,SAAS,YAAY;AACpB,wBAAM,WAAW;AAAA,oBAChB,WAAW,MAAM;AAChB,0BAAI,QAAQ;AAAA,oBACb;AAAA,kBACD,CAAC;AAAA,gBACF;AAAA,gBACA,SAAS,IAAI,WAAW;AAAA,gBACxB,SAAS,IAAI;AAAA,gBACb,UAAU,IAAI;AAAA,gBACd,MAAK;AAAA,gBACL,eAAa,IAAI;AAAA,gBACjB,OACC,qBAAC,SAAI,WAAU,0CACb;AAAA,sBAAI,WACJ,oBAAC,SAAI,eAAa,GAAG,IAAI,MAAM,YAC9B,8BAAC,WAAQ,MAAK,MAAK,GACpB;AAAA,kBAGA,IAAI;AAAA,mBACN;AAAA;AAAA,cAtBI,IAAI,QAAQ,SAAS;AAAA,YAwB3B;AAAA,UAEH,GACD;AAAA,WAEF;AAAA;AAAA,IACD;AAAA,EAEF;AACD;;;AClJA,SAA0B,kBAAkB;AASrC,SAAS,yBAAyB;AACxC,SAAO,WAA6B;AAAA,IACnC,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,mBAAmB;AAAA,EACpB,CAAC;AACF;AAEO,SAAS,UAAU,OAAqC;AAC9D,QAAM,OAAO,IAAI,IAAI;AACtB;AAEO,SAAS,WAAW,OAAqC;AAC/D,QAAM,OAAO,IAAI,KAAK;AACvB;","names":[]}