@0xsequence/marketplace-sdk 0.8.2 → 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 (101) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/{builder-types-Wrqq6YoW.d.ts → builder-types-BY6eD6vD.d.ts} +1 -1
  3. package/dist/{chunk-IZ44XPBH.js → chunk-25CAMYCG.js} +2 -2
  4. package/dist/{chunk-LDHGFXPJ.js → chunk-44YGZVBS.js} +2 -2
  5. package/dist/{chunk-BNAUZXPV.js → chunk-ALICO7NG.js} +3 -3
  6. package/dist/chunk-ALICO7NG.js.map +1 -0
  7. package/dist/{chunk-3II5GLHE.js → chunk-HGKWWZWY.js} +2 -2
  8. package/dist/{chunk-S2UFNIYX.js → chunk-HRL2TMXU.js} +12 -9
  9. package/dist/chunk-HRL2TMXU.js.map +1 -0
  10. package/dist/{chunk-XOHAZXBZ.js → chunk-VBRJ2OPM.js} +14 -6
  11. package/dist/chunk-VBRJ2OPM.js.map +1 -0
  12. package/dist/{chunk-F6CUGMI4.js → chunk-VF3LWBQB.js} +378 -263
  13. package/dist/chunk-VF3LWBQB.js.map +1 -0
  14. package/dist/{chunk-GBQVYNCD.js → chunk-XUNDLCEH.js} +3 -3
  15. package/dist/{chunk-4DFOSZTE.js → chunk-ZSCZLHKX.js} +195 -3
  16. package/dist/chunk-ZSCZLHKX.js.map +1 -0
  17. package/dist/{create-config-B58hoCDv.d.ts → create-config-qDML4ZNn.d.ts} +1 -1
  18. package/dist/{index-PhhCRKUH.d.ts → index-DtWR0b_l.d.ts} +1 -1
  19. package/dist/index.d.ts +2 -2
  20. package/dist/index.js +7 -9
  21. package/dist/{lowestListing-CuLxIWxy.d.ts → lowestListing-W7P4EkC3.d.ts} +34 -11
  22. package/dist/{marketplace.gen-De2-sxiG.d.ts → marketplace.gen-DS-MmGEB.d.ts} +35 -4
  23. package/dist/react/_internal/api/index.d.ts +2 -2
  24. package/dist/react/_internal/api/index.js +1 -1
  25. package/dist/react/_internal/databeat/index.d.ts +1 -1
  26. package/dist/react/_internal/databeat/index.js +8 -8
  27. package/dist/react/_internal/index.d.ts +5 -5
  28. package/dist/react/_internal/index.js +2 -2
  29. package/dist/react/_internal/wagmi/index.d.ts +3 -3
  30. package/dist/react/_internal/wagmi/index.js +2 -2
  31. package/dist/react/hooks/index.d.ts +72 -49
  32. package/dist/react/hooks/index.js +9 -7
  33. package/dist/react/hooks/options/index.d.ts +3 -3
  34. package/dist/react/hooks/options/index.js +4 -4
  35. package/dist/react/index.d.ts +8 -8
  36. package/dist/react/index.js +12 -10
  37. package/dist/react/queries/index.d.ts +2 -2
  38. package/dist/react/queries/index.js +7 -3
  39. package/dist/react/ssr/index.d.ts +2 -2
  40. package/dist/react/ssr/index.js +3 -3
  41. package/dist/react/ui/components/collectible-card/index.d.ts +1 -1
  42. package/dist/react/ui/components/collectible-card/index.js +10 -10
  43. package/dist/react/ui/icons/index.js +3 -3
  44. package/dist/react/ui/index.d.ts +1 -1
  45. package/dist/react/ui/index.js +10 -10
  46. package/dist/react/ui/modals/_internal/components/actionModal/index.js +8 -8
  47. package/dist/{services-BdzIAR9w.d.ts → services-BOX67E7W.d.ts} +1 -1
  48. package/dist/types/index.d.ts +3 -3
  49. package/dist/types/index.js +2 -4
  50. package/dist/{types-CmHOStH3.d.ts → types-CJLhc2VZ.d.ts} +2 -2
  51. package/dist/utils/abi/index.js +5 -5
  52. package/dist/utils/index.d.ts +1 -1
  53. package/dist/utils/index.js +7 -7
  54. package/package.json +1 -1
  55. package/src/react/_internal/api/__mocks__/marketplace.msw.ts +35 -18
  56. package/src/react/_internal/api/marketplace.gen.ts +39 -6
  57. package/src/react/_internal/api/zod-schema.ts +7 -18
  58. package/src/react/hooks/__tests__/useCancelTransactionSteps.test.tsx +4 -9
  59. package/src/react/hooks/__tests__/useGenerateCancelTransaction.test.tsx +5 -4
  60. package/src/react/hooks/__tests__/useGenerateListingTransaction.test.tsx +14 -2
  61. package/src/react/hooks/__tests__/useGenerateOfferTransaction.test.tsx +115 -57
  62. package/src/react/hooks/__tests__/useGenerateSellTransaction.test.tsx +10 -3
  63. package/src/react/hooks/__tests__/useInventory.test.tsx +294 -0
  64. package/src/react/hooks/index.ts +1 -0
  65. package/src/react/hooks/useAutoSelectFeeOption.tsx +10 -3
  66. package/src/react/hooks/useCancelOrder.tsx +1 -0
  67. package/src/react/hooks/useCancelTransactionSteps.tsx +20 -6
  68. package/src/react/hooks/useGenerateOfferTransaction.tsx +11 -1
  69. package/src/react/hooks/useInventory.tsx +15 -0
  70. package/src/react/hooks/util/optimisticCancelUpdates.ts +115 -0
  71. package/src/react/queries/index.ts +1 -0
  72. package/src/react/queries/inventory.ts +303 -0
  73. package/src/react/queries/listBalances.ts +1 -8
  74. package/src/react/queries/listCollectibles.ts +12 -3
  75. package/src/react/ui/modals/CreateListingModal/__tests__/Modal.test.tsx +74 -104
  76. package/src/react/ui/modals/CreateListingModal/hooks/useTransactionSteps.tsx +2 -2
  77. package/src/react/ui/modals/MakeOfferModal/__tests__/Modal.test.tsx +108 -78
  78. package/src/react/ui/modals/MakeOfferModal/hooks/useTransactionSteps.tsx +2 -2
  79. package/src/react/ui/modals/SellModal/hooks/useTransactionSteps.tsx +2 -2
  80. package/src/react/ui/modals/_internal/components/actionModal/ActionModal.test.tsx +286 -0
  81. package/src/react/ui/modals/_internal/components/actionModal/ActionModal.tsx +16 -4
  82. package/src/react/ui/modals/_internal/components/currencyOptionsSelect/__tests__/index.test.tsx +35 -132
  83. package/src/react/ui/modals/_internal/components/floorPriceText/__tests__/FloorPriceText.test.tsx +199 -0
  84. package/src/react/ui/modals/_internal/components/priceInput/__tests__/PriceInput.test.tsx +55 -0
  85. package/src/react/ui/modals/_internal/components/priceInput/index.tsx +1 -1
  86. package/src/react/ui/modals/_internal/components/switchChainModal/index.tsx +2 -2
  87. package/src/types/api-types.ts +0 -1
  88. package/test/const.ts +24 -0
  89. package/test/test-utils.tsx +74 -26
  90. package/.changeset/flat-parks-clean.md +0 -8
  91. package/.changeset/seven-doors-taste.md +0 -5
  92. package/dist/chunk-4DFOSZTE.js.map +0 -1
  93. package/dist/chunk-BNAUZXPV.js.map +0 -1
  94. package/dist/chunk-F6CUGMI4.js.map +0 -1
  95. package/dist/chunk-S2UFNIYX.js.map +0 -1
  96. package/dist/chunk-XOHAZXBZ.js.map +0 -1
  97. package/src/react/ui/modals/_internal/components/priceInput/__tests__/index.test.tsx +0 -164
  98. /package/dist/{chunk-IZ44XPBH.js.map → chunk-25CAMYCG.js.map} +0 -0
  99. /package/dist/{chunk-LDHGFXPJ.js.map → chunk-44YGZVBS.js.map} +0 -0
  100. /package/dist/{chunk-3II5GLHE.js.map → chunk-HGKWWZWY.js.map} +0 -0
  101. /package/dist/{chunk-GBQVYNCD.js.map → chunk-XUNDLCEH.js.map} +0 -0
@@ -5,7 +5,7 @@ import {
5
5
  MODAL_OVERLAY_PROPS,
6
6
  useSwitchChainModal,
7
7
  useWallet
8
- } from "./chunk-F6CUGMI4.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-XOHAZXBZ.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":[]}