@0xsequence/marketplace-sdk 0.8.8 → 0.8.10

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 (115) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/dist/{chunk-FMEEJFAF.js → chunk-5C6ZZ6WX.js} +1 -1
  3. package/dist/{chunk-YEGD7PWE.js → chunk-5O44EPXZ.js} +2 -2
  4. package/dist/chunk-6CTFVBKU.js +1 -0
  5. package/dist/{chunk-KGM2WLSP.js → chunk-7F27CJZW.js} +14 -2
  6. package/dist/{chunk-KGM2WLSP.js.map → chunk-7F27CJZW.js.map} +1 -1
  7. package/dist/{chunk-MAD64DLJ.js → chunk-A7BVFBWB.js} +2 -2
  8. package/dist/{chunk-YBOFRP65.js → chunk-FGM57QUU.js} +2 -2
  9. package/dist/{chunk-HHYNOPPI.js → chunk-KTST7ORH.js} +2 -2
  10. package/dist/{chunk-35WWD5V6.js → chunk-M6NJ73Y5.js} +3 -3
  11. package/dist/chunk-Q3ECVC4F.js +811 -0
  12. package/dist/chunk-Q3ECVC4F.js.map +1 -0
  13. package/dist/{chunk-EODKQL6Y.js → chunk-RVIUUJTP.js} +2 -2
  14. package/dist/{chunk-G3447GIP.js → chunk-SXVUTSMT.js} +24 -9
  15. package/dist/chunk-SXVUTSMT.js.map +1 -0
  16. package/dist/{chunk-7IYKUVC3.js → chunk-UJSF7PSC.js} +251 -107
  17. package/dist/chunk-UJSF7PSC.js.map +1 -0
  18. package/dist/{chunk-YALXP2PW.js → chunk-WH5BZC7W.js} +2 -2
  19. package/dist/{chunk-4XLXOEXQ.js → chunk-Y2HJO2VY.js} +25 -4
  20. package/dist/chunk-Y2HJO2VY.js.map +1 -0
  21. package/dist/{create-config-DwrnzwpM.d.ts → create-config-CAQcvjl6.d.ts} +2 -2
  22. package/dist/{index-DGsVBflk.d.ts → index-MlUK9AQE.d.ts} +2 -2
  23. package/dist/index.css +74 -28
  24. package/dist/index.css.map +1 -1
  25. package/dist/index.d.ts +4 -3
  26. package/dist/index.js +10 -4
  27. package/dist/{lowestListing-BQHIuvNF.d.ts → listTokenMetadata-DO4ChDjn.d.ts} +20 -2
  28. package/dist/{marketplaceConfig-B4Fdsmxu.d.ts → marketplaceConfig-D0MXemEl.d.ts} +1 -1
  29. package/dist/react/_internal/api/index.d.ts +3 -2
  30. package/dist/react/_internal/api/index.js +5 -1
  31. package/dist/react/_internal/databeat/index.js +11 -10
  32. package/dist/react/_internal/index.d.ts +6 -5
  33. package/dist/react/_internal/index.js +5 -1
  34. package/dist/react/_internal/wagmi/index.d.ts +3 -3
  35. package/dist/react/hooks/index.d.ts +11 -8
  36. package/dist/react/hooks/index.js +12 -9
  37. package/dist/react/hooks/options/index.d.ts +3 -3
  38. package/dist/react/hooks/options/index.js +3 -3
  39. package/dist/react/index.css +74 -28
  40. package/dist/react/index.css.map +1 -1
  41. package/dist/react/index.d.ts +11 -10
  42. package/dist/react/index.js +18 -13
  43. package/dist/react/queries/index.d.ts +3 -2
  44. package/dist/react/queries/index.js +6 -4
  45. package/dist/react/ssr/index.d.ts +2 -2
  46. package/dist/react/ssr/index.js +2 -2
  47. package/dist/react/ui/components/collectible-card/index.css +74 -28
  48. package/dist/react/ui/components/collectible-card/index.css.map +1 -1
  49. package/dist/react/ui/components/collectible-card/index.d.ts +24 -1
  50. package/dist/react/ui/components/collectible-card/index.js +18 -15
  51. package/dist/react/ui/components/marketplace-logos/index.js +1 -1
  52. package/dist/react/ui/icons/index.js +7 -6
  53. package/dist/react/ui/index.css +74 -28
  54. package/dist/react/ui/index.css.map +1 -1
  55. package/dist/react/ui/index.d.ts +1 -1
  56. package/dist/react/ui/index.js +16 -13
  57. package/dist/react/ui/modals/_internal/components/actionModal/index.js +11 -10
  58. package/dist/{sdk-config-txlivEKe.d.ts → sdk-config-onSPBxJj.d.ts} +1 -0
  59. package/dist/{services-BI_w8Eq4.d.ts → services-CMSb9ipU.d.ts} +5 -2
  60. package/dist/types/index.d.ts +2 -2
  61. package/dist/types/index.js +1 -1
  62. package/dist/{types-isjvwapz.d.ts → types-B8xzPEKX.d.ts} +2 -2
  63. package/dist/utils/abi/index.d.ts +1 -0
  64. package/dist/utils/abi/index.js +7 -1
  65. package/dist/utils/abi/primary-sale/index.d.ts +1054 -0
  66. package/dist/utils/abi/primary-sale/index.js +9 -0
  67. package/dist/utils/abi/primary-sale/index.js.map +1 -0
  68. package/dist/utils/index.d.ts +1 -0
  69. package/dist/utils/index.js +10 -4
  70. package/package.json +32 -31
  71. package/src/react/_internal/api/services.ts +12 -1
  72. package/src/react/hooks/index.ts +1 -0
  73. package/src/react/hooks/useList1155SaleSupplies.tsx +62 -0
  74. package/src/react/hooks/useListTokenMetadata.ts +19 -0
  75. package/src/react/queries/index.ts +1 -0
  76. package/src/react/queries/listTokenMetadata.ts +38 -0
  77. package/src/react/ui/components/ModelViewer.tsx +54 -0
  78. package/src/react/ui/components/_internals/custom-select/CustomSelect.tsx +0 -1
  79. package/src/react/ui/components/collectible-card/CollectibleCard.tsx +7 -3
  80. package/src/react/ui/components/collectible-card/__tests__/{CollectibleAsset.test.tsx → Media.test.tsx} +9 -15
  81. package/src/react/ui/components/collectible-card/index.ts +1 -0
  82. package/src/react/ui/components/collectible-card/media/Media.tsx +206 -0
  83. package/src/react/ui/components/collectible-card/{collectible-asset/CollectibleAssetSkeleton.tsx → media/MediaSkeleton.tsx} +1 -1
  84. package/src/react/ui/components/collectible-card/media/types.ts +17 -0
  85. package/src/react/ui/components/collectible-card/{collectible-asset → media}/utils.ts +16 -7
  86. package/src/react/ui/index.ts +1 -0
  87. package/src/react/ui/modals/BuyModal/hooks/usePaymentModalParams.ts +28 -3
  88. package/src/react/ui/modals/SuccessfulPurchaseModal/index.tsx +9 -7
  89. package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/_components/TokenQuantityInput.tsx +1 -1
  90. package/src/react/ui/modals/_internal/components/actionModal/ActionModal.test.tsx +0 -1
  91. package/src/react/ui/modals/_internal/components/priceInput/index.tsx +1 -1
  92. package/src/react/ui/modals/_internal/components/quantityInput/index.tsx +1 -2
  93. package/src/react/ui/modals/_internal/components/waasFeeOptionsSelect/WaasFeeOptionsSelect.tsx +0 -1
  94. package/src/types/sdk-config.ts +1 -0
  95. package/src/utils/abi/index.ts +1 -0
  96. package/src/utils/abi/primary-sale/index.ts +2 -0
  97. package/src/utils/abi/primary-sale/sequence-1155-sales-contract.ts +450 -0
  98. package/src/utils/abi/primary-sale/sequence-721-sales-contract.ts +352 -0
  99. package/src/utils/abi/token/sequence-erc1155-items.ts +454 -0
  100. package/src/utils/fetchContentType.ts +11 -4
  101. package/tsconfig.tsbuildinfo +1 -1
  102. package/dist/chunk-4XLXOEXQ.js.map +0 -1
  103. package/dist/chunk-7IYKUVC3.js.map +0 -1
  104. package/dist/chunk-G3447GIP.js.map +0 -1
  105. package/dist/chunk-UISBTKFF.js +0 -1
  106. package/src/react/ui/components/collectible-card/collectible-asset/CollectibleAsset.tsx +0 -139
  107. /package/dist/{chunk-FMEEJFAF.js.map → chunk-5C6ZZ6WX.js.map} +0 -0
  108. /package/dist/{chunk-YEGD7PWE.js.map → chunk-5O44EPXZ.js.map} +0 -0
  109. /package/dist/{chunk-UISBTKFF.js.map → chunk-6CTFVBKU.js.map} +0 -0
  110. /package/dist/{chunk-MAD64DLJ.js.map → chunk-A7BVFBWB.js.map} +0 -0
  111. /package/dist/{chunk-YBOFRP65.js.map → chunk-FGM57QUU.js.map} +0 -0
  112. /package/dist/{chunk-HHYNOPPI.js.map → chunk-KTST7ORH.js.map} +0 -0
  113. /package/dist/{chunk-35WWD5V6.js.map → chunk-M6NJ73Y5.js.map} +0 -0
  114. /package/dist/{chunk-EODKQL6Y.js.map → chunk-RVIUUJTP.js.map} +0 -0
  115. /package/dist/{chunk-YALXP2PW.js.map → chunk-WH5BZC7W.js.map} +0 -0
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  collectionKeys,
7
7
  getMetadataClient
8
- } from "./chunk-KGM2WLSP.js";
8
+ } from "./chunk-7F27CJZW.js";
9
9
 
10
10
  // src/react/hooks/options/collectionOptions.ts
11
11
  import { queryOptions } from "@tanstack/react-query";
@@ -35,4 +35,4 @@ export {
35
35
  fetchCollection,
36
36
  collectionOptions
37
37
  };
38
- //# sourceMappingURL=chunk-YALXP2PW.js.map
38
+ //# sourceMappingURL=chunk-WH5BZC7W.js.map
@@ -3,8 +3,9 @@ import {
3
3
  balanceQueries,
4
4
  collectableKeys,
5
5
  getIndexerClient,
6
- getMarketplaceClient
7
- } from "./chunk-KGM2WLSP.js";
6
+ getMarketplaceClient,
7
+ getMetadataClient
8
+ } from "./chunk-7F27CJZW.js";
8
9
 
9
10
  // src/react/queries/balanceOfCollectible.ts
10
11
  import { queryOptions, skipToken } from "@tanstack/react-query";
@@ -392,6 +393,25 @@ function lowestListingOptions(args, config) {
392
393
  });
393
394
  }
394
395
 
396
+ // src/react/queries/listTokenMetadata.ts
397
+ import { queryOptions as queryOptions5 } from "@tanstack/react-query";
398
+ var fetchTokenMetadata = async ({ chainId, contractAddress, tokenIds }, config) => {
399
+ const metadataClient = getMetadataClient(config);
400
+ const response = await metadataClient.getTokenMetadata({
401
+ chainID: chainId.toString(),
402
+ contractAddress,
403
+ tokenIDs: tokenIds
404
+ });
405
+ return response.tokenMetadata;
406
+ };
407
+ var tokenMetadataOptions = (args, config) => {
408
+ return queryOptions5({
409
+ ...args.query,
410
+ queryKey: ["listTokenMetadata", args.chainId, args.contractAddress],
411
+ queryFn: () => fetchTokenMetadata(args, config)
412
+ });
413
+ };
414
+
395
415
  export {
396
416
  fetchBalanceOfCollectible,
397
417
  balanceOfCollectibleOptions,
@@ -406,6 +426,7 @@ export {
406
426
  fetchHighestOffer,
407
427
  highestOfferOptions,
408
428
  fetchLowestListing,
409
- lowestListingOptions
429
+ lowestListingOptions,
430
+ tokenMetadataOptions
410
431
  };
411
- //# sourceMappingURL=chunk-4XLXOEXQ.js.map
432
+ //# sourceMappingURL=chunk-Y2HJO2VY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/react/queries/balanceOfCollectible.ts","../src/react/queries/getTokenSupplies.ts","../src/react/queries/inventory.ts","../src/react/queries/listCollectibles.ts","../src/react/queries/listBalances.ts","../src/react/queries/highestOffer.ts","../src/react/queries/lowestListing.ts","../src/react/queries/listTokenMetadata.ts"],"sourcesContent":["import { queryOptions, skipToken } from '@tanstack/react-query';\nimport type { Hex } from 'viem';\nimport type { UseQueryParameters } from 'wagmi/query';\nimport type { SdkConfig } from '../../types';\nimport { LaosAPI, collectableKeys, getIndexerClient } from '../_internal';\n\nexport type UseBalanceOfCollectibleArgs = {\n\tcollectionAddress: Hex;\n\tcollectableId: string;\n\tuserAddress: Hex | undefined;\n\tchainId: number;\n\tisLaos721?: boolean;\n\tquery?: UseQueryParameters;\n};\n\n/**\n * Fetches the balance of a specific collectible for a user\n *\n * @param args - Arguments for the API call\n * @param config - SDK configuration\n * @returns The balance data\n */\nexport async function fetchBalanceOfCollectible(\n\targs: Omit<UseBalanceOfCollectibleArgs, 'userAddress'> & { userAddress: Hex },\n\tconfig: SdkConfig,\n) {\n\tif (args.isLaos721) {\n\t\tconst laosApi = new LaosAPI();\n\t\tconst response = await laosApi.getTokenBalances({\n\t\t\tchainId: args.chainId.toString(),\n\t\t\taccountAddress: args.userAddress,\n\t\t\tincludeMetadata: true,\n\t\t});\n\n\t\treturn response.balances[0] || null;\n\t}\n\n\tconst indexerClient = getIndexerClient(args.chainId, config);\n\treturn indexerClient\n\t\t.getTokenBalances({\n\t\t\taccountAddress: args.userAddress,\n\t\t\tcontractAddress: args.collectionAddress,\n\t\t\ttokenID: args.collectableId,\n\t\t\tincludeMetadata: false,\n\t\t\tmetadataOptions: {\n\t\t\t\tverifiedOnly: true,\n\t\t\t\tincludeContracts: [args.collectionAddress],\n\t\t\t},\n\t\t})\n\t\t.then((res) => res.balances[0] || null);\n}\n\n/**\n * Creates a tanstack query options object for the balance query\n *\n * @param args - The query arguments\n * @param config - SDK configuration\n * @returns Query options configuration\n */\nexport function balanceOfCollectibleOptions(\n\targs: UseBalanceOfCollectibleArgs,\n\tconfig: SdkConfig,\n) {\n\tconst enabled = !!args.userAddress && (args.query?.enabled ?? true);\n\treturn queryOptions({\n\t\tqueryKey: [...collectableKeys.userBalances, args],\n\t\tqueryFn: enabled\n\t\t\t? () =>\n\t\t\t\t\tfetchBalanceOfCollectible(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t...args,\n\t\t\t\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: this is guaranteed by the userAddress check above\n\t\t\t\t\t\t\tuserAddress: args.userAddress!,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tconfig,\n\t\t\t\t\t)\n\t\t\t: skipToken,\n\t});\n}\n","import { queryOptions } from '@tanstack/react-query';\nimport type { SdkConfig } from '../../types';\n//TODO: This is not complete, there is no hook for this,\n// add it if we need it in the future\nimport { LaosAPI, getIndexerClient } from '../_internal';\n\nexport type UseGetTokenSuppliesArgs = {\n\tchainId: number;\n\tcontractAddress: string;\n\ttokenId: string;\n\tisLaos721?: boolean;\n};\n\nexport async function getTokenSupplies(\n\targs: UseGetTokenSuppliesArgs,\n\tconfig: SdkConfig,\n) {\n\tif (args.isLaos721) {\n\t\tconst laosApi = new LaosAPI();\n\t\treturn laosApi.getTokenSupplies({\n\t\t\tchainId: args.chainId.toString(),\n\t\t\tcontractAddress: args.contractAddress,\n\t\t});\n\t}\n\n\tconst indexerClient = getIndexerClient(args.chainId, config);\n\treturn await indexerClient.getTokenSupplies(args);\n}\n\nexport function getTokenSuppliesOptions(\n\targs: UseGetTokenSuppliesArgs,\n\tconfig: SdkConfig,\n) {\n\treturn queryOptions({\n\t\tqueryKey: ['getTokenSupplies', args],\n\t\tqueryFn: () => getTokenSupplies(args, config),\n\t});\n}\n","import type {\n\tContractInfo,\n\tPage as IndexerPage,\n\tTokenBalance,\n} from '@0xsequence/indexer';\nimport { infiniteQueryOptions } from '@tanstack/react-query';\nimport type { Address } from 'viem';\nimport { OrderSide, type Page, type SdkConfig } from '../../types';\nimport {\n\ttype CollectibleOrder,\n\ttype ContractType,\n\tgetIndexerClient,\n} from '../_internal';\nimport { fetchCollectibles } from './listCollectibles';\n\nexport interface UseInventoryArgs {\n\taccountAddress: Address;\n\tcollectionAddress: Address;\n\tchainId: number;\n\tisLaos721?: boolean;\n\tquery?: {\n\t\tenabled?: boolean;\n\t};\n}\n\n// Maintain collection state across calls\ninterface InventoryState {\n\tseenTokenIds: Set<string>;\n\tmarketplaceFinished: boolean;\n\t// Track if we've already fetched all indexer tokens\n\tindexerTokensFetched: boolean;\n\t// Store the token balances from the indexer\n\tindexerTokenBalances: Map<string, CollectibleWithBalance>;\n}\n\n// Store state per collection\nconst stateByCollection = new Map<string, InventoryState>();\n\nconst getCollectionKey = (args: UseInventoryArgs) =>\n\t`${args.chainId}-${args.collectionAddress}-${args.accountAddress}`;\n\ninterface GetInventoryArgs extends Omit<UseInventoryArgs, 'query'> {\n\tisLaos721: boolean;\n}\n\ninterface CollectibleWithBalance extends CollectibleOrder {\n\tbalance: string;\n\tcontractInfo?: ContractInfo;\n\tcontractType: ContractType.ERC1155 | ContractType.ERC721;\n}\n\nexport interface CollectiblesResponse {\n\tcollectibles: CollectibleWithBalance[];\n\tpage: Page;\n}\n\nfunction getOrInitState(collectionKey: string): InventoryState {\n\tif (!stateByCollection.has(collectionKey)) {\n\t\tstateByCollection.set(collectionKey, {\n\t\t\tseenTokenIds: new Set<string>(),\n\t\t\tmarketplaceFinished: false,\n\t\t\tindexerTokensFetched: false,\n\t\t\tindexerTokenBalances: new Map(),\n\t\t});\n\t}\n\n\t// biome-ignore lint/style/noNonNullAssertion: guaranteed to exist, by the above init\n\treturn stateByCollection.get(collectionKey)!;\n}\n\nfunction collectibleFromTokenBalance(\n\ttoken: TokenBalance,\n): CollectibleWithBalance {\n\treturn {\n\t\tmetadata: {\n\t\t\ttokenId: token.tokenID ?? '',\n\t\t\tattributes: token.tokenMetadata?.attributes ?? [],\n\t\t\timage: token.tokenMetadata?.image,\n\t\t\tname: token.tokenMetadata?.name ?? '',\n\t\t\tdescription: token.tokenMetadata?.description,\n\t\t\tvideo: token.tokenMetadata?.video,\n\t\t\taudio: token.tokenMetadata?.audio,\n\t\t},\n\t\tcontractInfo: token.contractInfo,\n\t\tcontractType: token.contractType as\n\t\t\t| ContractType.ERC1155\n\t\t\t| ContractType.ERC721,\n\t\tbalance: token.balance,\n\t};\n}\n\nasync function fetchAllIndexerTokens(\n\tchainId: number,\n\taccountAddress: Address,\n\tcollectionAddress: Address,\n\tconfig: SdkConfig,\n\tstate: InventoryState,\n): Promise<void> {\n\tconst indexerClient = getIndexerClient(chainId, config);\n\n\tlet page: IndexerPage = {\n\t\tpageSize: 50,\n\t};\n\n\twhile (true) {\n\t\tconst { balances, page: nextPage } = await indexerClient.getTokenBalances({\n\t\t\taccountAddress,\n\t\t\tcontractAddress: collectionAddress,\n\t\t\tincludeMetadata: true,\n\t\t\tpage: page,\n\t\t});\n\n\t\tfor (const balance of balances) {\n\t\t\tif (balance.tokenID) {\n\t\t\t\tstate.indexerTokenBalances.set(\n\t\t\t\t\tbalance.tokenID,\n\t\t\t\t\tcollectibleFromTokenBalance(balance),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (!nextPage.more) {\n\t\t\tbreak;\n\t\t}\n\t\tpage = nextPage;\n\t}\n\n\tstate.indexerTokensFetched = true;\n}\n\n// Process indexer tokens that we haven't seen yet\nfunction processRemainingIndexerTokens(\n\tstate: InventoryState,\n\tpage: Page,\n): CollectiblesResponse {\n\tconst allTokens = Array.from(state.indexerTokenBalances.values());\n\n\t// Filter out tokens that we've already seen\n\tconst newTokens = allTokens.filter(\n\t\t(token) => !state.seenTokenIds.has(token.metadata.tokenId),\n\t);\n\n\t// Calculate pagination\n\tconst startIndex = (page.page - 1) * page.pageSize;\n\tconst endIndex = startIndex + page.pageSize;\n\tconst paginatedTokens = newTokens.slice(startIndex, endIndex);\n\n\t// Add new token IDs to the set\n\tfor (const token of paginatedTokens) {\n\t\tstate.seenTokenIds.add(token.metadata.tokenId);\n\t}\n\n\treturn {\n\t\tcollectibles: paginatedTokens,\n\t\tpage: {\n\t\t\tpage: page.page,\n\t\t\tpageSize: page.pageSize,\n\t\t\tmore: endIndex < newTokens.length,\n\t\t},\n\t};\n}\n\nfunction processMarketplaceCollectibles(\n\tcollectibles: CollectibleOrder[],\n\tstate: InventoryState,\n\tpage: Page,\n): {\n\tenrichedCollectibles: CollectibleWithBalance[];\n\tmissingTokens: CollectibleWithBalance[];\n} {\n\t// Add new token IDs to the set\n\tfor (const c of collectibles) {\n\t\tstate.seenTokenIds.add(c.metadata.tokenId);\n\t}\n\n\t// Enrich marketplace collectibles with balance data from indexer\n\tconst enrichedCollectibles = collectibles.map((c: CollectibleOrder) => {\n\t\tconst tokenId = c.metadata.tokenId;\n\t\tconst indexerData = state.indexerTokenBalances.get(tokenId);\n\n\t\treturn {\n\t\t\t...c,\n\t\t\tbalance: indexerData?.balance,\n\t\t\tcontractInfo: indexerData?.contractInfo,\n\t\t\tcontractType: indexerData?.contractType,\n\t\t} as CollectibleWithBalance;\n\t});\n\n\t// Check for missing tokens in the marketplace data\n\tconst marketplaceTokenIds = new Set(\n\t\tenrichedCollectibles.map((c) => c.metadata.tokenId),\n\t);\n\n\tconst missingTokens = Array.from(state.indexerTokenBalances.entries())\n\t\t.filter(([tokenId]) => !marketplaceTokenIds.has(tokenId))\n\t\t.map(([_, balance]) => balance)\n\t\t.slice(0, page.pageSize);\n\n\treturn { enrichedCollectibles, missingTokens };\n}\n\nexport async function fetchInventory(\n\targs: GetInventoryArgs,\n\tconfig: SdkConfig,\n\tpage: Page,\n): Promise<CollectiblesResponse> {\n\tconst { accountAddress, collectionAddress, chainId, isLaos721 } = args;\n\tconst collectionKey = getCollectionKey(args);\n\tconst state = getOrInitState(collectionKey);\n\n\t// On first run, fetch all pages from the indexer\n\tif (!state.indexerTokensFetched) {\n\t\tawait fetchAllIndexerTokens(\n\t\t\tchainId,\n\t\t\taccountAddress,\n\t\t\tcollectionAddress,\n\t\t\tconfig,\n\t\t\tstate,\n\t\t);\n\t}\n\n\t// If marketplace API has no more results, use the indexer data\n\tif (state.marketplaceFinished) {\n\t\treturn processRemainingIndexerTokens(state, page);\n\t}\n\n\t// Fetch collectibles from marketplace API\n\tconst collectibles = await fetchCollectibles(\n\t\t{\n\t\t\tchainId,\n\t\t\tcollectionAddress,\n\t\t\tfilter: {\n\t\t\t\tinAccounts: [accountAddress],\n\t\t\t\tincludeEmpty: true,\n\t\t\t},\n\t\t\tside: OrderSide.listing,\n\t\t\tisLaos721,\n\t\t},\n\t\tconfig,\n\t\tpage,\n\t);\n\n\t// Process the collectibles and find missing tokens\n\tconst { enrichedCollectibles, missingTokens } =\n\t\tprocessMarketplaceCollectibles(collectibles.collectibles, state, page);\n\n\t// If there are no more results from the marketplace API\n\tif (!collectibles.page?.more) {\n\t\t// Mark marketplace as finished and start using indexer data on next call\n\t\tstate.marketplaceFinished = true;\n\t\treturn {\n\t\t\tcollectibles: [...enrichedCollectibles, ...missingTokens],\n\t\t\tpage: {\n\t\t\t\tpage: collectibles.page?.page ?? page.page,\n\t\t\t\tpageSize: collectibles.page?.pageSize ?? page.pageSize,\n\t\t\t\tmore: missingTokens.length > 0,\n\t\t\t},\n\t\t};\n\t}\n\n\treturn {\n\t\tcollectibles: enrichedCollectibles,\n\t\tpage: {\n\t\t\tpage: collectibles.page?.page ?? page.page,\n\t\t\tpageSize: collectibles.page?.pageSize ?? page.pageSize,\n\t\t\tmore: Boolean(collectibles.page?.more),\n\t\t},\n\t};\n}\n\nexport function inventoryOptions(args: UseInventoryArgs, config: SdkConfig) {\n\tconst collectionKey = getCollectionKey(args);\n\tconst enabledQuery = args.query?.enabled ?? true;\n\tconst enabled =\n\t\tenabledQuery && !!args.accountAddress && !!args.collectionAddress;\n\n\treturn infiniteQueryOptions({\n\t\tqueryKey: [\n\t\t\t'inventory',\n\t\t\targs.accountAddress,\n\t\t\targs.collectionAddress,\n\t\t\targs.chainId,\n\t\t],\n\t\tqueryFn: ({ pageParam }) =>\n\t\t\tfetchInventory(\n\t\t\t\t{\n\t\t\t\t\t...args,\n\t\t\t\t\tisLaos721: args.isLaos721 ?? false,\n\t\t\t\t},\n\t\t\t\tconfig,\n\t\t\t\tpageParam,\n\t\t\t),\n\t\tinitialPageParam: { page: 1, pageSize: 30 } as Page,\n\t\tgetNextPageParam: (lastPage) =>\n\t\t\tlastPage.page?.more ? lastPage.page : undefined,\n\t\tenabled,\n\t\tmeta: {\n\t\t\tonInvalidate: () => {\n\t\t\t\tstateByCollection.delete(collectionKey);\n\t\t\t},\n\t\t},\n\t});\n}\n","import { infiniteQueryOptions } from '@tanstack/react-query';\nimport type { Address, Hex } from 'viem';\nimport type { Page, SdkConfig } from '../../types';\nimport type {\n\tCollectibleOrder,\n\tCollectiblesFilter,\n\tListCollectiblesArgs,\n\tListCollectiblesReturn,\n} from '../_internal';\nimport { OrderSide, collectableKeys, getMarketplaceClient } from '../_internal';\nimport { type UseListBalancesArgs, fetchBalances } from './listBalances';\nexport type UseListCollectiblesArgs = {\n\tcollectionAddress: Hex;\n\tchainId: number;\n\tside: OrderSide;\n\tfilter?: CollectiblesFilter;\n\tisLaos721?: boolean;\n\tquery?: {\n\t\tenabled?: boolean;\n\t};\n};\n\n/**\n * Fetches a list of collectibles with pagination support\n *\n * @param args - Arguments for the API call\n * @param config - SDK configuration\n * @param page - Page parameters for pagination\n * @returns The collectibles data\n */\nexport async function fetchCollectibles(\n\targs: UseListCollectiblesArgs,\n\tconfig: SdkConfig,\n\tpage: Page,\n): Promise<ListCollectiblesReturn> {\n\tconst marketplaceClient = getMarketplaceClient(args.chainId, config);\n\tconst parsedArgs = {\n\t\t...args,\n\t\tcontractAddress: args.collectionAddress,\n\t\tpage: page,\n\t\tside: args.side,\n\t} satisfies ListCollectiblesArgs;\n\n\tif (args.isLaos721 && args.side === OrderSide.listing) {\n\t\ttry {\n\t\t\tconst fetchBalancesArgs = {\n\t\t\t\tchainId: args.chainId,\n\t\t\t\taccountAddress: args.filter?.inAccounts?.[0] as Address,\n\t\t\t\tcontractAddress: args.collectionAddress,\n\t\t\t\tpage: page,\n\t\t\t\tincludeMetadata: true,\n\t\t\t\tisLaos721: true,\n\t\t\t} satisfies UseListBalancesArgs;\n\n\t\t\tconst balances = await fetchBalances(fetchBalancesArgs, config, page);\n\t\t\tconst collectibles: CollectibleOrder[] = balances.balances.map(\n\t\t\t\t(balance) => {\n\t\t\t\t\tif (!balance.tokenMetadata)\n\t\t\t\t\t\tthrow new Error('Token metadata not found');\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\ttokenId: balance.tokenID ?? '',\n\t\t\t\t\t\t\tattributes: balance.tokenMetadata.attributes,\n\t\t\t\t\t\t\timage: balance.tokenMetadata.image,\n\t\t\t\t\t\t\tname: balance.tokenMetadata.name,\n\t\t\t\t\t\t\tdescription: balance.tokenMetadata.description,\n\t\t\t\t\t\t\tvideo: balance.tokenMetadata.video,\n\t\t\t\t\t\t\taudio: balance.tokenMetadata.audio,\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\treturn {\n\t\t\t\tcollectibles: collectibles,\n\t\t\t\t//@ts-expect-error\n\t\t\t\tpage: balances.page,\n\t\t\t};\n\t\t} catch (error) {\n\t\t\t// If the request fails, ignore the error and return the collectibles from our indexer\n\t\t\tconsole.error(error);\n\t\t}\n\t}\n\treturn await marketplaceClient.listCollectibles(parsedArgs);\n}\n\n/**\n * Creates a tanstack infinite query options object for the collectibles query\n *\n * @param args - The query arguments\n * @param config - SDK configuration\n * @returns Query options configuration\n */\nexport function listCollectiblesOptions(\n\targs: UseListCollectiblesArgs,\n\tconfig: SdkConfig,\n) {\n\treturn infiniteQueryOptions({\n\t\t...args.query,\n\t\tqueryKey: [...collectableKeys.lists, args, config],\n\t\tqueryFn: ({ pageParam }) => fetchCollectibles(args, config, pageParam),\n\t\tinitialPageParam: { page: 1, pageSize: 30 } as Page,\n\t\tgetNextPageParam: (lastPage) =>\n\t\t\tlastPage.page?.more ? lastPage.page : undefined,\n\t});\n}\n","import type { GetTokenBalancesReturn, Page } from '@0xsequence/indexer';\nimport { infiniteQueryOptions } from '@tanstack/react-query';\nimport type { Hex } from 'viem';\nimport type { SdkConfig } from '../../types';\nimport { balanceQueries, getIndexerClient } from '../_internal';\n\nexport type UseListBalancesArgs = {\n\tchainId: number;\n\taccountAddress?: Hex;\n\tcontractAddress?: Hex;\n\ttokenId?: string;\n\tincludeMetadata?: boolean;\n\tmetadataOptions?: {\n\t\tverifiedOnly?: boolean;\n\t\tunverifiedOnly?: boolean;\n\t\tincludeContracts?: Hex[];\n\t};\n\tincludeCollectionTokens?: boolean;\n\tpage?: Page;\n\tisLaos721?: boolean;\n\t//TODO: More options\n\tquery?: {\n\t\tenabled?: boolean;\n\t};\n};\n\nexport async function fetchBalances(\n\targs: UseListBalancesArgs,\n\tconfig: SdkConfig,\n\tpage: Page,\n): Promise<GetTokenBalancesReturn> {\n\tif (args.isLaos721) {\n\t\tconst response = await fetch(\n\t\t\t'https://extensions.api.laosnetwork.io/token/GetTokenBalances',\n\t\t\t{\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t},\n\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\tchainId: args.chainId.toString(),\n\t\t\t\t\taccountAddress: args.accountAddress,\n\t\t\t\t\tcontractAddress: args.contractAddress,\n\t\t\t\t\tincludeMetadata: args.includeMetadata ?? true,\n\t\t\t\t\tpage: {\n\t\t\t\t\t\tsort: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcolumn: 'CREATED_AT',\n\t\t\t\t\t\t\t\torder: 'DESC',\n\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}),\n\t\t\t},\n\t\t);\n\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(`Laos API request failed with status ${response.status}`);\n\t\t}\n\n\t\t// TODO: This is pretty unsafe, we should validate the response\n\t\treturn response.json() as Promise<GetTokenBalancesReturn>;\n\t}\n\n\tconst indexerClient = getIndexerClient(args.chainId, config);\n\treturn indexerClient.getTokenBalances({\n\t\t...args,\n\t\ttokenID: args.tokenId,\n\t\tpage: page,\n\t});\n}\n\n/**\n * Creates a tanstack infinite query options object for the balances query\n *\n * @param args - The query arguments\n * @param config - SDK configuration\n * @returns Query options configuration\n */\nexport function listBalancesOptions(\n\targs: UseListBalancesArgs,\n\tconfig: SdkConfig,\n) {\n\treturn infiniteQueryOptions({\n\t\t...args.query,\n\t\tqueryKey: [...balanceQueries.lists, args, config],\n\t\tqueryFn: ({ pageParam }) => fetchBalances(args, config, pageParam),\n\t\tinitialPageParam: { page: 1, pageSize: 30 } as Page,\n\t\tgetNextPageParam: (lastPage) => lastPage.page.after,\n\t});\n}\n","import { queryOptions } from '@tanstack/react-query';\nimport type { Address } from 'viem';\nimport type { SdkConfig } from '../../types';\nimport {\n\ttype GetCollectibleHighestOfferArgs,\n\tcollectableKeys,\n\tgetMarketplaceClient,\n} from '../_internal';\n\nexport interface UseHighestOfferArgs\n\textends Omit<GetCollectibleHighestOfferArgs, 'contractAddress'> {\n\tcollectionAddress: Address;\n\tchainId: number;\n\tquery?: {\n\t\tenabled?: boolean;\n\t};\n}\n\nexport async function fetchHighestOffer(\n\targs: UseHighestOfferArgs,\n\tconfig: SdkConfig,\n) {\n\tconst marketplaceClient = getMarketplaceClient(args.chainId, config);\n\n\tconst data = await marketplaceClient.getCollectibleHighestOffer({\n\t\tcontractAddress: args.collectionAddress,\n\t\t...args,\n\t});\n\n\t// let order: Order | undefined;\n\t// if (data.order) {\n\t// \torder = {\n\t// \t\t...data.order,\n\t// \t\tpriceAmount: BigInt(data.order.priceAmount),\n\t// \t\tpriceAmountNet: BigInt(data.order.priceAmountNet),\n\t// \t};\n\t// }\n\n\treturn data.order ?? null;\n}\n\n/**\n * Creates a tanstack query options object for the highest offer query\n *\n * @param args - The query arguments\n * @param config - SDK configuration\n * @returns Query options configuration\n */\nexport function highestOfferOptions(\n\targs: UseHighestOfferArgs,\n\tconfig: SdkConfig,\n) {\n\treturn queryOptions({\n\t\tenabled: args.query?.enabled ?? true,\n\t\tqueryKey: [...collectableKeys.highestOffers, args],\n\t\tqueryFn: () => fetchHighestOffer(args, config),\n\t});\n}\n","import { queryOptions } from '@tanstack/react-query';\nimport type { Address } from 'viem';\nimport type { SdkConfig } from '../../types';\nimport {\n\ttype GetCollectibleLowestListingArgs,\n\ttype GetCollectibleLowestListingReturn,\n\tcollectableKeys,\n\tgetMarketplaceClient,\n} from '../_internal';\n\nexport interface UseLowestListingArgs\n\textends Omit<GetCollectibleLowestListingArgs, 'contractAddress'> {\n\tcollectionAddress: Address;\n\tchainId: number;\n\tquery?: {\n\t\tenabled?: boolean;\n\t};\n}\n\nexport async function fetchLowestListing(\n\targs: UseLowestListingArgs,\n\tconfig: SdkConfig,\n): Promise<GetCollectibleLowestListingReturn['order'] | null> {\n\tconst marketplaceClient = getMarketplaceClient(args.chainId, config);\n\n\tconst data = await marketplaceClient.getCollectibleLowestListing({\n\t\tcontractAddress: args.collectionAddress,\n\t\t...args,\n\t});\n\n\t// let order: Order | undefined;\n\t// if (data.order) {\n\t// \torder = {\n\t// \t\t...data.order,\n\t// \t\tpriceAmount: BigInt(data.order.priceAmount),\n\t// \t\tpriceAmountNet: BigInt(data.order.priceAmountNet),\n\t// \t};\n\t// }\n\n\treturn data.order || null;\n}\n\nexport function lowestListingOptions(\n\targs: UseLowestListingArgs,\n\tconfig: SdkConfig,\n) {\n\treturn queryOptions({\n\t\tenabled: args.query?.enabled ?? true,\n\t\tqueryKey: [...collectableKeys.lowestListings, args],\n\t\tqueryFn: () => fetchLowestListing(args, config),\n\t});\n}\n","import { queryOptions } from '@tanstack/react-query';\nimport type { SdkConfig } from '../../types';\nimport { getMetadataClient } from '../_internal';\n\nexport interface FetchTokenMetadataArgs {\n\tchainId: number;\n\tcontractAddress: string;\n\ttokenIds: string[];\n\tquery?: {\n\t\tenabled?: boolean;\n\t};\n}\n\nconst fetchTokenMetadata = async (\n\t{ chainId, contractAddress, tokenIds }: FetchTokenMetadataArgs,\n\tconfig: SdkConfig,\n) => {\n\tconst metadataClient = getMetadataClient(config);\n\n\tconst response = await metadataClient.getTokenMetadata({\n\t\tchainID: chainId.toString(),\n\t\tcontractAddress: contractAddress,\n\t\ttokenIDs: tokenIds,\n\t});\n\n\treturn response.tokenMetadata;\n};\n\nexport const tokenMetadataOptions = (\n\targs: FetchTokenMetadataArgs,\n\tconfig: SdkConfig,\n) => {\n\treturn queryOptions({\n\t\t...args.query,\n\t\tqueryKey: ['listTokenMetadata', args.chainId, args.contractAddress],\n\t\tqueryFn: () => fetchTokenMetadata(args, config),\n\t});\n};\n"],"mappings":"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","names":["queryOptions","queryOptions","infiniteQueryOptions","infiniteQueryOptions","infiniteQueryOptions","infiniteQueryOptions","queryOptions","queryOptions","queryOptions","queryOptions","queryOptions","queryOptions"]}
@@ -1,7 +1,7 @@
1
1
  import * as wagmi from 'wagmi';
2
2
  import { Chain, Transport } from 'viem';
3
- import { S as SdkConfig } from './sdk-config-txlivEKe.js';
4
- import { M as MarketplaceConfig } from './marketplaceConfig-B4Fdsmxu.js';
3
+ import { S as SdkConfig } from './sdk-config-onSPBxJj.js';
4
+ import { M as MarketplaceConfig } from './marketplaceConfig-D0MXemEl.js';
5
5
 
6
6
  declare const createWagmiConfig: (marketplaceConfig: MarketplaceConfig, sdkConfig: SdkConfig, ssr?: boolean) => wagmi.Config<[Chain, ...Chain[]], Record<number, Transport>, wagmi.CreateConnectorFn[]>;
7
7
 
@@ -1,8 +1,8 @@
1
1
  import * as _tanstack_react_query from '@tanstack/react-query';
2
2
  import * as _0xsequence_metadata from '@0xsequence/metadata';
3
3
  import { z } from 'zod';
4
- import { S as SdkConfig } from './sdk-config-txlivEKe.js';
5
- import './marketplaceConfig-B4Fdsmxu.js';
4
+ import { S as SdkConfig } from './sdk-config-onSPBxJj.js';
5
+ import './marketplaceConfig-D0MXemEl.js';
6
6
 
7
7
  declare const UseCollectionSchema: z.ZodObject<{
8
8
  chainId: z.ZodNumber;
package/dist/index.css CHANGED
@@ -531,6 +531,9 @@
531
531
  .max-h-\[240px\] {
532
532
  max-height: 240px;
533
533
  }
534
+ .max-h-\[360px\] {
535
+ max-height: 360px;
536
+ }
534
537
  .max-h-\[calc\(100dvh-80px\)\] {
535
538
  max-height: calc(100dvh - 80px);
536
539
  }
@@ -657,6 +660,9 @@
657
660
  .min-w-6 {
658
661
  min-width: calc(var(--spacing) * 6);
659
662
  }
663
+ .min-w-\[var\(--radix-select-trigger-width\)\] {
664
+ min-width: var(--radix-select-trigger-width);
665
+ }
660
666
  .min-w-full {
661
667
  min-width: 100%;
662
668
  }
@@ -859,6 +865,9 @@
859
865
  .border-border-base {
860
866
  border-color: var(--color-border-base);
861
867
  }
868
+ .border-border-error {
869
+ border-color: var(--seq-color-border-error);
870
+ }
862
871
  .border-border-normal {
863
872
  border-color: var(--seq-color-border-normal);
864
873
  }
@@ -1331,6 +1340,9 @@
1331
1340
  var(--tw-ring-shadow),
1332
1341
  var(--tw-shadow);
1333
1342
  }
1343
+ .ring-border-error {
1344
+ --tw-ring-color: var(--seq-color-border-error);
1345
+ }
1334
1346
  .ring-border-focus {
1335
1347
  --tw-ring-color: var(--color-border-focus);
1336
1348
  }
@@ -1400,7 +1412,12 @@
1400
1412
  rotate,
1401
1413
  filter,
1402
1414
  -webkit-backdrop-filter,
1403
- backdrop-filter;
1415
+ backdrop-filter,
1416
+ display,
1417
+ visibility,
1418
+ content-visibility,
1419
+ overlay,
1420
+ pointer-events;
1404
1421
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
1405
1422
  transition-duration: var(--tw-duration, var(--default-transition-duration));
1406
1423
  }
@@ -1793,6 +1810,11 @@
1793
1810
  var(--tw-shadow);
1794
1811
  }
1795
1812
  }
1813
+ .focus-within\:ring-border-error {
1814
+ &:focus-within {
1815
+ --tw-ring-color: var(--seq-color-border-error);
1816
+ }
1817
+ }
1796
1818
  .focus-within\:ring-border-focus {
1797
1819
  &:focus-within {
1798
1820
  --tw-ring-color: var(--color-border-focus);
@@ -1872,6 +1894,11 @@
1872
1894
  var(--tw-shadow);
1873
1895
  }
1874
1896
  }
1897
+ .focus\:ring-border-error {
1898
+ &:focus {
1899
+ --tw-ring-color: var(--seq-color-border-error);
1900
+ }
1901
+ }
1875
1902
  .focus\:ring-border-focus {
1876
1903
  &:focus {
1877
1904
  --tw-ring-color: var(--color-border-focus);
@@ -2245,73 +2272,90 @@
2245
2272
  overflow: hidden;
2246
2273
  }
2247
2274
  }
2248
- .\[\&\>label\>div\>\.rounded-xl\]\:h-9 {
2249
- & > label > div > .rounded-xl {
2275
+ .\[\&\>label\>div\>div\>\.rounded-xl\]\:h-9 {
2276
+ & > label > div > div > .rounded-xl {
2250
2277
  height: calc(var(--spacing) * 9);
2251
2278
  }
2252
2279
  }
2253
- .\[\&\>label\>div\>\.rounded-xl\]\:rounded-sm {
2254
- & > label > div > .rounded-xl {
2280
+ .\[\&\>label\>div\>div\>\.rounded-xl\]\:rounded-sm {
2281
+ & > label > div > div > .rounded-xl {
2255
2282
  border-radius: var(--radius-sm);
2256
2283
  }
2257
2284
  }
2258
- .\[\&\>label\>div\>\.rounded-xl\]\:px-2 {
2259
- & > label > div > .rounded-xl {
2285
+ .\[\&\>label\>div\>div\>\.rounded-xl\]\:px-2 {
2286
+ & > label > div > div > .rounded-xl {
2260
2287
  padding-inline: calc(var(--spacing) * 2);
2261
2288
  }
2262
2289
  }
2263
- .\[\&\>label\>div\>div\]\:h-9 {
2264
- & > label > div > div {
2290
+ .\[\&\>label\>div\>div\>div\]\:h-9 {
2291
+ & > label > div > div > div {
2265
2292
  height: calc(var(--spacing) * 9);
2266
2293
  }
2267
2294
  }
2268
- .\[\&\>label\>div\>div\]\:h-13 {
2269
- & > label > div > div {
2295
+ .\[\&\>label\>div\>div\>div\]\:h-13 {
2296
+ & > label > div > div > div {
2270
2297
  height: calc(var(--spacing) * 13);
2271
2298
  }
2272
2299
  }
2273
- .\[\&\>label\>div\>div\]\:rounded {
2274
- & > label > div > div {
2300
+ .\[\&\>label\>div\>div\>div\]\:rounded {
2301
+ & > label > div > div > div {
2275
2302
  border-radius: 0.25rem;
2276
2303
  }
2277
2304
  }
2278
- .\[\&\>label\>div\>div\]\:rounded-xl {
2279
- & > label > div > div {
2305
+ .\[\&\>label\>div\>div\>div\]\:rounded-xl {
2306
+ & > label > div > div > div {
2280
2307
  border-radius: var(--radius-xl);
2281
2308
  }
2282
2309
  }
2283
- .\[\&\>label\>div\>div\]\:pr-0 {
2284
- & > label > div > div {
2310
+ .\[\&\>label\>div\>div\>div\]\:pr-0 {
2311
+ & > label > div > div > div {
2285
2312
  padding-right: calc(var(--spacing) * 0);
2286
2313
  }
2287
2314
  }
2288
- .\[\&\>label\>div\>div\]\:pl-3 {
2289
- & > label > div > div {
2315
+ .\[\&\>label\>div\>div\>div\]\:pl-3 {
2316
+ & > label > div > div > div {
2290
2317
  padding-left: calc(var(--spacing) * 3);
2291
2318
  }
2292
2319
  }
2293
- .\[\&\>label\>div\>div\]\:text-xs {
2294
- & > label > div > div {
2320
+ .\[\&\>label\>div\>div\>div\]\:text-xs {
2321
+ & > label > div > div > div {
2295
2322
  font-size: var(--text-xs);
2296
2323
  line-height: var(--tw-leading, var(--text-xs--line-height));
2297
2324
  }
2298
2325
  }
2299
- .\[\&\>label\>div\>div\:has\(\:disabled\)\]\:opacity-100 {
2300
- & > label > div > div:has(:disabled) {
2326
+ .\[\&\>label\>div\>div\>div\:has\(\:disabled\)\]\:opacity-100 {
2327
+ & > label > div > div > div:has(:disabled) {
2301
2328
  opacity: 100%;
2302
2329
  }
2303
2330
  }
2304
- .\[\&\>label\>div\>div\:has\(\:disabled\)\:hover\]\:opacity-100 {
2305
- & > label > div > div:has(:disabled):hover {
2331
+ .\[\&\>label\>div\>div\>div\:has\(\:disabled\)\:hover\]\:opacity-100 {
2332
+ & > label > div > div > div:has(:disabled):hover {
2306
2333
  opacity: 100%;
2307
2334
  }
2308
2335
  }
2309
- .\[\&\>label\>div\>div\>input\]\:text-xs {
2310
- & > label > div > div > input {
2336
+ .\[\&\>label\>div\>div\>div\>input\]\:text-sm {
2337
+ & > label > div > div > div > input {
2338
+ font-size: var(--text-sm);
2339
+ line-height: var(--tw-leading, var(--text-sm--line-height));
2340
+ }
2341
+ }
2342
+ .\[\&\>label\>div\>div\>div\>input\]\:text-xs {
2343
+ & > label > div > div > div > input {
2311
2344
  font-size: var(--text-xs);
2312
2345
  line-height: var(--tw-leading, var(--text-xs--line-height));
2313
2346
  }
2314
2347
  }
2348
+ .\[\&\>label\>div\>div\>span\]\:text-sm {
2349
+ & > label > div > div > span {
2350
+ font-size: var(--text-sm);
2351
+ line-height: var(--tw-leading, var(--text-sm--line-height));
2352
+ }
2353
+ }
2354
+ .\[\&\>label\>div\>div\>span\]\:text-text-80 {
2355
+ & > label > div > div > span {
2356
+ color: var(--color-text-80);
2357
+ }
2358
+ }
2315
2359
  .\[\&\>label\>div\>span\]\:text-sm {
2316
2360
  & > label > div > span {
2317
2361
  font-size: var(--text-sm);
@@ -2365,6 +2409,7 @@
2365
2409
  --seq-color-background-raised: rgba(54, 54, 54, 0.7);
2366
2410
  --seq-color-border-normal: rgba(255, 255, 255, 0.25);
2367
2411
  --seq-color-border-focus: rgba(255, 255, 255, 0.5);
2412
+ --seq-color-border-error: rgba(255, 69, 0, 1);
2368
2413
  --seq-color-button-glass: rgba(255, 255, 255, 0.15);
2369
2414
  --seq-color-button-emphasis: rgba(0, 0, 0, 0.5);
2370
2415
  --seq-color-button-inverse: rgba(255, 255, 255, 0.8);
@@ -2416,6 +2461,7 @@
2416
2461
  --seq-color-background-raised: rgba(192, 192, 192, 0.7);
2417
2462
  --seq-color-border-normal: rgba(0, 0, 0, 0.25);
2418
2463
  --seq-color-border-focus: rgba(0, 0, 0, 0.5);
2464
+ --seq-color-border-error: rgba(255, 69, 0, 1);
2419
2465
  --seq-color-button-glass: rgba(0, 0, 0, 0.15);
2420
2466
  --seq-color-button-emphasis: rgba(255, 255, 255, 0.5);
2421
2467
  --seq-color-button-inverse: rgba(0, 0, 0, 0.8);
@@ -2646,5 +2692,5 @@ video::-webkit-media-controls {
2646
2692
  }
2647
2693
  }
2648
2694
  }
2649
- /*! tailwindcss v4.1.4 | MIT License | https://tailwindcss.com */
2695
+ /*! tailwindcss v4.1.6 | MIT License | https://tailwindcss.com */
2650
2696
  /*# sourceMappingURL=index.css.map */