@openzeppelin/ui-builder-adapter-evm 1.0.0 → 1.3.0

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 (76) hide show
  1. package/README.md +1 -1
  2. package/dist/index.cjs +473 -375
  3. package/dist/index.cjs.map +1 -1
  4. package/dist/index.d.cts +5 -1
  5. package/dist/index.d.ts +5 -1
  6. package/dist/index.js +192 -100
  7. package/dist/index.js.map +1 -1
  8. package/package.json +6 -6
  9. package/src/__tests__/adapter-parsing.test.ts +67 -1
  10. package/src/__tests__/mocks/mock-network-configs.ts +3 -2
  11. package/src/__tests__/providerSelection.test.ts +1 -1
  12. package/src/abi/__tests__/etherscan-v2.test.ts +1 -1
  13. package/src/abi/__tests__/transformer.test.ts +1 -1
  14. package/src/abi/comparison.ts +1 -1
  15. package/src/abi/etherscan-v2.ts +2 -2
  16. package/src/abi/etherscan.ts +2 -2
  17. package/src/abi/loader.ts +2 -2
  18. package/src/abi/sourcify.ts +2 -2
  19. package/src/abi/transformer.ts +2 -6
  20. package/src/adapter.ts +11 -2
  21. package/src/config.ts +1 -1
  22. package/src/configuration/__tests__/explorer.test.ts +1 -1
  23. package/src/configuration/__tests__/rpc.test.ts +4 -4
  24. package/src/configuration/execution.ts +2 -2
  25. package/src/configuration/explorer.ts +2 -6
  26. package/src/configuration/network-services.ts +3 -3
  27. package/src/configuration/rpc.ts +2 -2
  28. package/src/mapping/__tests__/field-generator.test.ts +1 -1
  29. package/src/mapping/constants.ts +26 -1
  30. package/src/mapping/field-generator.ts +2 -2
  31. package/src/mapping/type-mapper.ts +1 -1
  32. package/src/proxy/detection.ts +1 -1
  33. package/src/query/handler.ts +2 -2
  34. package/src/query/view-checker.ts +1 -1
  35. package/src/transaction/components/AdvancedInfo.tsx +1 -1
  36. package/src/transaction/components/CustomGasParameters.tsx +2 -2
  37. package/src/transaction/components/EvmRelayerOptions.tsx +1 -1
  38. package/src/transaction/components/SpeedSelection.tsx +1 -1
  39. package/src/transaction/eoa.ts +2 -2
  40. package/src/transaction/execution-strategy.ts +1 -1
  41. package/src/transaction/formatter.ts +2 -2
  42. package/src/transaction/relayer.ts +2 -2
  43. package/src/transaction/sender.ts +2 -2
  44. package/src/transform/input-parser.ts +2 -2
  45. package/src/transform/output-formatter.ts +2 -2
  46. package/src/types.ts +1 -1
  47. package/src/validation/eoa.ts +2 -2
  48. package/src/validation/relayer.ts +1 -1
  49. package/src/wallet/README.md +4 -4
  50. package/src/wallet/__tests__/utils.test.ts +2 -2
  51. package/src/wallet/components/EvmWalletUiRoot.tsx +2 -2
  52. package/src/wallet/components/account/AccountDisplay.tsx +33 -14
  53. package/src/wallet/components/connect/ConnectButton.tsx +31 -17
  54. package/src/wallet/components/connect/ConnectorDialog.tsx +3 -6
  55. package/src/wallet/components/network/NetworkSwitcher.tsx +48 -16
  56. package/src/wallet/evmUiKitManager.ts +2 -2
  57. package/src/wallet/hooks/facade-hooks.ts +1 -1
  58. package/src/wallet/hooks/useUiKitConfig.ts +2 -2
  59. package/src/wallet/implementation/wagmi-implementation.ts +3 -3
  60. package/src/wallet/rainbowkit/__tests__/export-service.test.ts +1 -1
  61. package/src/wallet/rainbowkit/componentFactory.ts +1 -1
  62. package/src/wallet/rainbowkit/components.tsx +9 -7
  63. package/src/wallet/rainbowkit/config-generator.ts +1 -1
  64. package/src/wallet/rainbowkit/config-service.ts +2 -2
  65. package/src/wallet/rainbowkit/export-service.ts +1 -1
  66. package/src/wallet/rainbowkit/rainbowkitAssetManager.ts +1 -1
  67. package/src/wallet/rainbowkit/utils.ts +2 -2
  68. package/src/wallet/services/configResolutionService.ts +2 -2
  69. package/src/wallet/types.ts +1 -1
  70. package/src/wallet/utils/SafeWagmiComponent.tsx +1 -1
  71. package/src/wallet/utils/__tests__/uiKitService.test.ts +3 -3
  72. package/src/wallet/utils/connection.ts +2 -2
  73. package/src/wallet/utils/filterWalletComponents.ts +3 -3
  74. package/src/wallet/utils/uiKitService.ts +2 -2
  75. package/src/wallet/utils/walletImplementationManager.ts +2 -2
  76. package/src/wallet/utils.ts +2 -2
package/dist/index.js CHANGED
@@ -15,7 +15,7 @@ var rainbowkitAssetManager_exports = {};
15
15
  __export(rainbowkitAssetManager_exports, {
16
16
  ensureRainbowKitAssetsLoaded: () => ensureRainbowKitAssetsLoaded
17
17
  });
18
- import { logger as logger13 } from "@openzeppelin/ui-builder-utils";
18
+ import { logger as logger13 } from "@openzeppelin/ui-utils";
19
19
  async function ensureRainbowKitAssetsLoaded() {
20
20
  if (loadedAssets) {
21
21
  logger13.debug("RainbowKitAssetManager", "Assets already loaded, returning cached.");
@@ -68,10 +68,10 @@ var init_rainbowkitAssetManager = __esm({
68
68
  });
69
69
 
70
70
  // src/adapter.ts
71
- import { logger as logger34 } from "@openzeppelin/ui-builder-utils";
71
+ import { logger as logger34 } from "@openzeppelin/ui-utils";
72
72
 
73
73
  // src/abi/comparison.ts
74
- import { logger, simpleHash } from "@openzeppelin/ui-builder-utils";
74
+ import { logger, simpleHash } from "@openzeppelin/ui-utils";
75
75
 
76
76
  // src/abi/types.ts
77
77
  function isValidAbiArray(value) {
@@ -394,7 +394,7 @@ var AbiComparisonService = class {
394
394
  var abiComparisonService = new AbiComparisonService();
395
395
 
396
396
  // src/configuration/network-services.ts
397
- import { appConfigService as appConfigService3, userNetworkServiceConfigService as userNetworkServiceConfigService3 } from "@openzeppelin/ui-builder-utils";
397
+ import { appConfigService as appConfigService3, userNetworkServiceConfigService as userNetworkServiceConfigService3 } from "@openzeppelin/ui-utils";
398
398
 
399
399
  // src/types/providers.ts
400
400
  var EvmProviderKeys = {
@@ -410,17 +410,13 @@ function isEvmProviderKey(value) {
410
410
  }
411
411
 
412
412
  // src/configuration/explorer.ts
413
- import {
414
- appConfigService,
415
- logger as logger4,
416
- userNetworkServiceConfigService
417
- } from "@openzeppelin/ui-builder-utils";
413
+ import { appConfigService, logger as logger4, userNetworkServiceConfigService } from "@openzeppelin/ui-utils";
418
414
 
419
415
  // src/abi/etherscan-v2.ts
420
- import { logger as logger3 } from "@openzeppelin/ui-builder-utils";
416
+ import { logger as logger3 } from "@openzeppelin/ui-utils";
421
417
 
422
418
  // src/abi/transformer.ts
423
- import { logger as logger2 } from "@openzeppelin/ui-builder-utils";
419
+ import { logger as logger2 } from "@openzeppelin/ui-utils";
424
420
 
425
421
  // src/types/artifacts.ts
426
422
  function isEvmContractArtifacts(obj) {
@@ -896,7 +892,7 @@ import {
896
892
  isValidUrl,
897
893
  logger as logger5,
898
894
  userNetworkServiceConfigService as userNetworkServiceConfigService2
899
- } from "@openzeppelin/ui-builder-utils";
895
+ } from "@openzeppelin/ui-utils";
900
896
  function buildRpcUrl(config) {
901
897
  return config.url;
902
898
  }
@@ -1283,17 +1279,17 @@ import { createConfig as createConfig2, http as http3 } from "@wagmi/core";
1283
1279
  import { mainnet } from "viem/chains";
1284
1280
  import { WagmiProvider } from "wagmi";
1285
1281
  import { useEffect as useEffect5, useMemo, useState as useState5 } from "react";
1286
- import { logger as logger15 } from "@openzeppelin/ui-builder-utils";
1282
+ import { logger as logger15 } from "@openzeppelin/ui-utils";
1287
1283
 
1288
1284
  // src/wallet/context/wagmi-context.tsx
1289
1285
  import { createContext } from "react";
1290
1286
  var WagmiProviderInitializedContext = createContext(false);
1291
1287
 
1292
1288
  // src/wallet/evmUiKitManager.ts
1293
- import { logger as logger14 } from "@openzeppelin/ui-builder-utils";
1289
+ import { logger as logger14 } from "@openzeppelin/ui-utils";
1294
1290
 
1295
1291
  // src/wallet/utils/walletImplementationManager.ts
1296
- import { appConfigService as appConfigService6, logger as logger12 } from "@openzeppelin/ui-builder-utils";
1292
+ import { appConfigService as appConfigService6, logger as logger12 } from "@openzeppelin/ui-utils";
1297
1293
 
1298
1294
  // src/wallet/implementation/wagmi-implementation.ts
1299
1295
  import { injected, metaMask, safe, walletConnect } from "@wagmi/connectors";
@@ -1308,7 +1304,7 @@ import {
1308
1304
  watchAccount
1309
1305
  } from "@wagmi/core";
1310
1306
  import { http as http2 } from "viem";
1311
- import { appConfigService as appConfigService5, logger as logger11 } from "@openzeppelin/ui-builder-utils";
1307
+ import { appConfigService as appConfigService5, logger as logger11 } from "@openzeppelin/ui-utils";
1312
1308
 
1313
1309
  // src/networks/mainnet.ts
1314
1310
  import {
@@ -1910,22 +1906,19 @@ var evmNetworks = [...evmMainnetNetworks, ...evmTestnetNetworks];
1910
1906
  // src/wallet/rainbowkit/components.tsx
1911
1907
  import { Loader2 as Loader23 } from "lucide-react";
1912
1908
  import { useContext as useContext2, useEffect as useEffect4, useRef, useState as useState4 } from "react";
1913
- import { Button as Button4 } from "@openzeppelin/ui-builder-ui";
1914
- import { cn as cn4, logger as logger8 } from "@openzeppelin/ui-builder-utils";
1909
+ import { Button as Button4 } from "@openzeppelin/ui-components";
1910
+ import { cn as cn4, getWalletButtonSizeProps as getWalletButtonSizeProps2, logger as logger8 } from "@openzeppelin/ui-utils";
1915
1911
 
1916
1912
  // src/wallet/components/connect/ConnectButton.tsx
1917
1913
  import { Loader2, Wallet } from "lucide-react";
1918
1914
  import { useEffect as useEffect3, useState as useState3 } from "react";
1919
- import {
1920
- useDerivedAccountStatus as useDerivedAccountStatus2,
1921
- useDerivedConnectStatus as useDerivedConnectStatus2
1922
- } from "@openzeppelin/ui-builder-react-core";
1923
- import { Button as Button2 } from "@openzeppelin/ui-builder-ui";
1924
- import { cn } from "@openzeppelin/ui-builder-utils";
1915
+ import { Button as Button2 } from "@openzeppelin/ui-components";
1916
+ import { useDerivedAccountStatus as useDerivedAccountStatus2, useDerivedConnectStatus as useDerivedConnectStatus2 } from "@openzeppelin/ui-react";
1917
+ import { cn, getWalletButtonSizeProps } from "@openzeppelin/ui-utils";
1925
1918
 
1926
1919
  // src/wallet/utils/SafeWagmiComponent.tsx
1927
1920
  import { useEffect, useState } from "react";
1928
- import { logger as logger6 } from "@openzeppelin/ui-builder-utils";
1921
+ import { logger as logger6 } from "@openzeppelin/ui-utils";
1929
1922
 
1930
1923
  // src/wallet/hooks/useIsWagmiProviderInitialized.ts
1931
1924
  import { useContext } from "react";
@@ -1980,10 +1973,6 @@ var SafeWagmiComponent = ({
1980
1973
 
1981
1974
  // src/wallet/components/connect/ConnectorDialog.tsx
1982
1975
  import { useEffect as useEffect2, useState as useState2 } from "react";
1983
- import {
1984
- useDerivedAccountStatus,
1985
- useDerivedConnectStatus
1986
- } from "@openzeppelin/ui-builder-react-core";
1987
1976
  import {
1988
1977
  Button,
1989
1978
  Dialog,
@@ -1991,10 +1980,11 @@ import {
1991
1980
  DialogDescription,
1992
1981
  DialogHeader,
1993
1982
  DialogTitle
1994
- } from "@openzeppelin/ui-builder-ui";
1983
+ } from "@openzeppelin/ui-components";
1984
+ import { useDerivedAccountStatus, useDerivedConnectStatus } from "@openzeppelin/ui-react";
1995
1985
 
1996
1986
  // src/wallet/hooks/useUiKitConfig.ts
1997
- import { appConfigService as appConfigService4, logger as logger7 } from "@openzeppelin/ui-builder-utils";
1987
+ import { appConfigService as appConfigService4, logger as logger7 } from "@openzeppelin/ui-utils";
1998
1988
  var defaultConfig = {
1999
1989
  kitName: "custom",
2000
1990
  // Default to using our custom implementation for EVM
@@ -2101,27 +2091,44 @@ var ConnectorDialogContent = ({ open, onOpenChange }) => {
2101
2091
  import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
2102
2092
  var CustomConnectButton = ({
2103
2093
  className,
2094
+ size,
2095
+ variant,
2096
+ fullWidth,
2104
2097
  hideWhenConnected = true
2105
2098
  }) => {
2106
2099
  const [dialogOpen, setDialogOpen] = useState3(false);
2107
- const unavailableButton = /* @__PURE__ */ jsx3("div", { className: cn("flex items-center", className), children: /* @__PURE__ */ jsxs2(Button2, { disabled: true, variant: "outline", size: "sm", className: "h-8 px-2 text-xs", children: [
2108
- /* @__PURE__ */ jsx3(Wallet, { className: "size-3.5 mr-1" }),
2109
- "Wallet Unavailable"
2110
- ] }) });
2100
+ const sizeProps = getWalletButtonSizeProps(size);
2101
+ const unavailableButton = /* @__PURE__ */ jsx3("div", { className: cn("flex items-center", fullWidth && "w-full", className), children: /* @__PURE__ */ jsxs2(
2102
+ Button2,
2103
+ {
2104
+ disabled: true,
2105
+ variant: variant || "outline",
2106
+ size: sizeProps.size,
2107
+ className: cn(sizeProps.className, fullWidth && "w-full"),
2108
+ children: [
2109
+ /* @__PURE__ */ jsx3(Wallet, { className: cn(sizeProps.iconSize, "mr-1") }),
2110
+ "Wallet Unavailable"
2111
+ ]
2112
+ }
2113
+ ) });
2111
2114
  return /* @__PURE__ */ jsx3(SafeWagmiComponent, { fallback: unavailableButton, children: /* @__PURE__ */ jsx3(
2112
2115
  ConnectButtonContent,
2113
2116
  {
2114
2117
  className,
2118
+ size,
2119
+ variant,
2120
+ fullWidth,
2115
2121
  dialogOpen,
2116
2122
  setDialogOpen,
2117
2123
  hideWhenConnected
2118
2124
  }
2119
2125
  ) });
2120
2126
  };
2121
- var ConnectButtonContent = ({ className, dialogOpen, setDialogOpen, hideWhenConnected }) => {
2127
+ var ConnectButtonContent = ({ className, size, variant, fullWidth, dialogOpen, setDialogOpen, hideWhenConnected }) => {
2122
2128
  const { isConnected } = useDerivedAccountStatus2();
2123
2129
  const { isConnecting: isHookConnecting, error: connectError } = useDerivedConnectStatus2();
2124
2130
  const [isManuallyInitiated, setIsManuallyInitiated] = useState3(false);
2131
+ const sizeProps = getWalletButtonSizeProps(size);
2125
2132
  useEffect3(() => {
2126
2133
  if (isConnected && hideWhenConnected) {
2127
2134
  setDialogOpen(false);
@@ -2148,18 +2155,18 @@ var ConnectButtonContent = ({ className, dialogOpen, setDialogOpen, hideWhenConn
2148
2155
  return null;
2149
2156
  }
2150
2157
  const showButtonLoading = isHookConnecting || isManuallyInitiated;
2151
- return /* @__PURE__ */ jsxs2("div", { className: cn("flex items-center", className), children: [
2158
+ return /* @__PURE__ */ jsxs2("div", { className: cn("flex items-center", fullWidth && "w-full", className), children: [
2152
2159
  /* @__PURE__ */ jsxs2(
2153
2160
  Button2,
2154
2161
  {
2155
2162
  onClick: handleConnectClick,
2156
2163
  disabled: showButtonLoading || isConnected,
2157
- variant: "outline",
2158
- size: "sm",
2159
- className: "h-8 px-2 text-xs",
2164
+ variant: variant || "outline",
2165
+ size: sizeProps.size,
2166
+ className: cn(sizeProps.className, fullWidth && "w-full"),
2160
2167
  title: isConnected ? "Connected" : connectError?.message || "Connect Wallet",
2161
2168
  children: [
2162
- showButtonLoading ? /* @__PURE__ */ jsx3(Loader2, { className: "size-3.5 animate-spin mr-1" }) : /* @__PURE__ */ jsx3(Wallet, { className: "size-3.5 mr-1" }),
2169
+ showButtonLoading ? /* @__PURE__ */ jsx3(Loader2, { className: cn(sizeProps.iconSize, "animate-spin mr-1") }) : /* @__PURE__ */ jsx3(Wallet, { className: cn(sizeProps.iconSize, "mr-1") }),
2163
2170
  showButtonLoading ? "Connecting..." : "Connect Wallet"
2164
2171
  ]
2165
2172
  }
@@ -2181,33 +2188,52 @@ var ConnectButtonContent = ({ className, dialogOpen, setDialogOpen, hideWhenConn
2181
2188
 
2182
2189
  // src/wallet/components/account/AccountDisplay.tsx
2183
2190
  import { LogOut } from "lucide-react";
2184
- import { useDerivedAccountStatus as useDerivedAccountStatus3, useDerivedDisconnect } from "@openzeppelin/ui-builder-react-core";
2185
- import { Button as Button3 } from "@openzeppelin/ui-builder-ui";
2186
- import { cn as cn2, truncateMiddle } from "@openzeppelin/ui-builder-utils";
2191
+ import { Button as Button3 } from "@openzeppelin/ui-components";
2192
+ import { useDerivedAccountStatus as useDerivedAccountStatus3, useDerivedDisconnect } from "@openzeppelin/ui-react";
2193
+ import { cn as cn2, getWalletAccountDisplaySizeProps, truncateMiddle } from "@openzeppelin/ui-utils";
2187
2194
  import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
2188
- var CustomAccountDisplay = ({ className }) => {
2189
- return /* @__PURE__ */ jsx4(SafeWagmiComponent, { fallback: null, children: /* @__PURE__ */ jsx4(AccountDisplayContent, { className }) });
2195
+ var CustomAccountDisplay = ({
2196
+ className,
2197
+ size,
2198
+ variant,
2199
+ fullWidth
2200
+ }) => {
2201
+ return /* @__PURE__ */ jsx4(SafeWagmiComponent, { fallback: null, children: /* @__PURE__ */ jsx4(
2202
+ AccountDisplayContent,
2203
+ {
2204
+ className,
2205
+ size,
2206
+ variant,
2207
+ fullWidth
2208
+ }
2209
+ ) });
2190
2210
  };
2191
- var AccountDisplayContent = ({ className }) => {
2211
+ var AccountDisplayContent = ({
2212
+ className,
2213
+ size,
2214
+ variant,
2215
+ fullWidth
2216
+ }) => {
2192
2217
  const { isConnected, address, chainId } = useDerivedAccountStatus3();
2193
2218
  const { disconnect: disconnect2 } = useDerivedDisconnect();
2219
+ const sizeProps = getWalletAccountDisplaySizeProps(size);
2194
2220
  if (!isConnected || !address || !disconnect2) {
2195
2221
  return null;
2196
2222
  }
2197
- return /* @__PURE__ */ jsxs3("div", { className: cn2("flex items-center gap-2", className), children: [
2198
- /* @__PURE__ */ jsxs3("div", { className: "flex flex-col", children: [
2199
- /* @__PURE__ */ jsx4("span", { className: "text-xs font-medium", children: truncateMiddle(address, 4, 4) }),
2200
- /* @__PURE__ */ jsx4("span", { className: "text-[9px] text-muted-foreground -mt-0.5", children: chainId ? `Chain ID: ${chainId}` : "Chain ID: N/A" })
2223
+ return /* @__PURE__ */ jsxs3("div", { className: cn2("flex items-center gap-2", fullWidth && "w-full", className), children: [
2224
+ /* @__PURE__ */ jsxs3("div", { className: cn2("flex flex-col", fullWidth && "flex-1"), children: [
2225
+ /* @__PURE__ */ jsx4("span", { className: cn2(sizeProps.textSize, "font-medium"), children: truncateMiddle(address, 4, 4) }),
2226
+ /* @__PURE__ */ jsx4("span", { className: cn2(sizeProps.subTextSize, "text-muted-foreground -mt-0.5"), children: chainId ? `Chain ID: ${chainId}` : "Chain ID: N/A" })
2201
2227
  ] }),
2202
2228
  /* @__PURE__ */ jsx4(
2203
2229
  Button3,
2204
2230
  {
2205
2231
  onClick: () => disconnect2(),
2206
- variant: "ghost",
2232
+ variant: variant || "ghost",
2207
2233
  size: "icon",
2208
- className: "size-6 p-0",
2234
+ className: cn2(sizeProps.iconButtonSize, "p-0"),
2209
2235
  title: "Disconnect wallet",
2210
- children: /* @__PURE__ */ jsx4(LogOut, { className: "size-3.5" })
2236
+ children: /* @__PURE__ */ jsx4(LogOut, { className: sizeProps.iconSize })
2211
2237
  }
2212
2238
  )
2213
2239
  ] });
@@ -2215,27 +2241,51 @@ var AccountDisplayContent = ({ className }) => {
2215
2241
 
2216
2242
  // src/wallet/components/network/NetworkSwitcher.tsx
2217
2243
  import { Loader2 as Loader22 } from "lucide-react";
2218
- import {
2219
- useDerivedAccountStatus as useDerivedAccountStatus4,
2220
- useDerivedChainInfo,
2221
- useDerivedSwitchChainStatus
2222
- } from "@openzeppelin/ui-builder-react-core";
2223
2244
  import {
2224
2245
  Select,
2225
2246
  SelectContent,
2226
2247
  SelectItem,
2227
2248
  SelectTrigger,
2228
2249
  SelectValue
2229
- } from "@openzeppelin/ui-builder-ui";
2230
- import { cn as cn3 } from "@openzeppelin/ui-builder-utils";
2250
+ } from "@openzeppelin/ui-components";
2251
+ import {
2252
+ useDerivedAccountStatus as useDerivedAccountStatus4,
2253
+ useDerivedChainInfo,
2254
+ useDerivedSwitchChainStatus
2255
+ } from "@openzeppelin/ui-react";
2256
+ import {
2257
+ cn as cn3,
2258
+ getWalletNetworkSwitcherSizeProps,
2259
+ getWalletNetworkSwitcherVariantClassName
2260
+ } from "@openzeppelin/ui-utils";
2231
2261
  import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
2232
- var CustomNetworkSwitcher = ({ className }) => {
2233
- return /* @__PURE__ */ jsx5(SafeWagmiComponent, { fallback: null, children: /* @__PURE__ */ jsx5(NetworkSwitcherContent, { className }) });
2262
+ var CustomNetworkSwitcher = ({
2263
+ className,
2264
+ size,
2265
+ variant,
2266
+ fullWidth
2267
+ }) => {
2268
+ return /* @__PURE__ */ jsx5(SafeWagmiComponent, { fallback: null, children: /* @__PURE__ */ jsx5(
2269
+ NetworkSwitcherContent,
2270
+ {
2271
+ className,
2272
+ size,
2273
+ variant,
2274
+ fullWidth
2275
+ }
2276
+ ) });
2234
2277
  };
2235
- var NetworkSwitcherContent = ({ className }) => {
2278
+ var NetworkSwitcherContent = ({
2279
+ className,
2280
+ size,
2281
+ variant,
2282
+ fullWidth
2283
+ }) => {
2236
2284
  const { isConnected } = useDerivedAccountStatus4();
2237
2285
  const { currentChainId, availableChains: unknownChains } = useDerivedChainInfo();
2238
2286
  const { switchChain: switchChain2, isSwitching: isPending, error } = useDerivedSwitchChainStatus();
2287
+ const sizeProps = getWalletNetworkSwitcherSizeProps(size);
2288
+ const variantClassName = getWalletNetworkSwitcherVariantClassName(variant);
2239
2289
  const typedAvailableChains = unknownChains;
2240
2290
  if (!isConnected || !switchChain2 || typedAvailableChains.length === 0) {
2241
2291
  return null;
@@ -2247,7 +2297,7 @@ var NetworkSwitcherContent = ({ className }) => {
2247
2297
  };
2248
2298
  const currentChain = typedAvailableChains.find((chain) => chain.id === currentChainId);
2249
2299
  const currentChainName = currentChain?.name || "Network";
2250
- return /* @__PURE__ */ jsxs4("div", { className: cn3("flex items-center", className), children: [
2300
+ return /* @__PURE__ */ jsxs4("div", { className: cn3("flex items-center", fullWidth && "w-full", className), children: [
2251
2301
  /* @__PURE__ */ jsxs4(
2252
2302
  Select,
2253
2303
  {
@@ -2255,7 +2305,17 @@ var NetworkSwitcherContent = ({ className }) => {
2255
2305
  onValueChange: (value) => handleNetworkChange(Number(value)),
2256
2306
  disabled: isPending || typedAvailableChains.length === 0,
2257
2307
  children: [
2258
- /* @__PURE__ */ jsx5(SelectTrigger, { className: "h-8 text-xs px-2 min-w-[90px] max-w-[120px]", children: /* @__PURE__ */ jsx5(SelectValue, { placeholder: "Network", children: currentChainName }) }),
2308
+ /* @__PURE__ */ jsx5(
2309
+ SelectTrigger,
2310
+ {
2311
+ className: cn3(
2312
+ sizeProps.triggerClassName,
2313
+ variantClassName,
2314
+ fullWidth && "w-full max-w-none"
2315
+ ),
2316
+ children: /* @__PURE__ */ jsx5(SelectValue, { placeholder: "Network", children: currentChainName })
2317
+ }
2318
+ ),
2259
2319
  /* @__PURE__ */ jsx5(
2260
2320
  SelectContent,
2261
2321
  {
@@ -2263,13 +2323,21 @@ var NetworkSwitcherContent = ({ className }) => {
2263
2323
  sideOffset: 5,
2264
2324
  align: "start",
2265
2325
  className: "w-auto min-w-[160px] max-h-[300px]",
2266
- children: typedAvailableChains.map((chain) => /* @__PURE__ */ jsx5(SelectItem, { value: chain.id.toString(), className: "text-xs py-1.5", children: chain.name }, chain.id))
2326
+ children: typedAvailableChains.map((chain) => /* @__PURE__ */ jsx5(
2327
+ SelectItem,
2328
+ {
2329
+ value: chain.id.toString(),
2330
+ className: sizeProps.itemClassName,
2331
+ children: chain.name
2332
+ },
2333
+ chain.id
2334
+ ))
2267
2335
  }
2268
2336
  )
2269
2337
  ]
2270
2338
  }
2271
2339
  ),
2272
- isPending && /* @__PURE__ */ jsx5("span", { className: "text-xs text-muted-foreground ml-2", children: /* @__PURE__ */ jsx5(Loader22, { className: "h-3 w-3 animate-spin" }) }),
2340
+ isPending && /* @__PURE__ */ jsx5("span", { className: "text-muted-foreground ml-2", children: /* @__PURE__ */ jsx5(Loader22, { className: cn3(sizeProps.loaderSize, "animate-spin") }) }),
2273
2341
  error && /* @__PURE__ */ jsx5("span", { className: "text-xs text-red-500 ml-2", children: "!" })
2274
2342
  ] });
2275
2343
  };
@@ -2339,15 +2407,16 @@ var RainbowKitConnectButton = (props) => {
2339
2407
  }
2340
2408
  };
2341
2409
  }, []);
2410
+ const sizeProps = getWalletButtonSizeProps2(props.size);
2342
2411
  const renderLoadingPlaceholder = (message) => /* @__PURE__ */ jsxs5(
2343
2412
  Button4,
2344
2413
  {
2345
2414
  disabled: true,
2346
- variant: "outline",
2347
- size: "sm",
2348
- className: cn4("h-8 px-2 text-xs", props.className),
2415
+ variant: props.variant || "outline",
2416
+ size: sizeProps.size,
2417
+ className: cn4(sizeProps.className, props.fullWidth && "w-full", props.className),
2349
2418
  children: [
2350
- /* @__PURE__ */ jsx6(Loader23, { className: "h-3.5 w-3.5 animate-spin mr-1.5" }),
2419
+ /* @__PURE__ */ jsx6(Loader23, { className: cn4(sizeProps.iconSize, "animate-spin mr-1.5") }),
2351
2420
  message
2352
2421
  ]
2353
2422
  }
@@ -2386,7 +2455,7 @@ var RainbowKitConnectButton = (props) => {
2386
2455
  };
2387
2456
 
2388
2457
  // src/wallet/rainbowkit/utils.ts
2389
- import { logger as logger9 } from "@openzeppelin/ui-builder-utils";
2458
+ import { logger as logger9 } from "@openzeppelin/ui-utils";
2390
2459
  function validateRainbowKitConfig(kitConfig) {
2391
2460
  logger9.debug(
2392
2461
  "validateRainbowKitConfig",
@@ -2437,7 +2506,7 @@ function createRainbowKitComponents() {
2437
2506
 
2438
2507
  // src/wallet/rainbowkit/config-service.ts
2439
2508
  import { http } from "@wagmi/core";
2440
- import { logger as logger10 } from "@openzeppelin/ui-builder-utils";
2509
+ import { logger as logger10 } from "@openzeppelin/ui-utils";
2441
2510
  async function createRainbowKitWagmiConfig(userFullNativeConfig, chains, chainIdToNetworkIdMap, getRpcEndpointOverride) {
2442
2511
  try {
2443
2512
  const { getDefaultConfig } = await import("@rainbow-me/rainbowkit");
@@ -2598,7 +2667,7 @@ var WagmiWalletImplementation = class {
2598
2667
  * when user changes RPC settings.
2599
2668
  */
2600
2669
  setupRpcConfigListener() {
2601
- import("@openzeppelin/ui-builder-utils").then(({ userRpcConfigService }) => {
2670
+ import("@openzeppelin/ui-utils").then(({ userRpcConfigService }) => {
2602
2671
  this.rpcConfigUnsubscribe = userRpcConfigService.subscribe("*", (event) => {
2603
2672
  if (event.type === "rpc-config-changed" || event.type === "rpc-config-cleared") {
2604
2673
  logger11.info(
@@ -3315,17 +3384,17 @@ function generateRainbowKitExportables(uiKitConfig2) {
3315
3384
  }
3316
3385
 
3317
3386
  // src/wallet/services/configResolutionService.ts
3318
- import { logger as logger19 } from "@openzeppelin/ui-builder-utils";
3387
+ import { logger as logger19 } from "@openzeppelin/ui-utils";
3319
3388
 
3320
3389
  // src/wallet/utils.ts
3321
- import { logger as logger18 } from "@openzeppelin/ui-builder-utils";
3390
+ import { logger as logger18 } from "@openzeppelin/ui-utils";
3322
3391
 
3323
3392
  // src/wallet/utils/uiKitService.ts
3324
- import { logger as logger17 } from "@openzeppelin/ui-builder-utils";
3393
+ import { logger as logger17 } from "@openzeppelin/ui-utils";
3325
3394
 
3326
3395
  // src/wallet/utils/filterWalletComponents.ts
3327
- import { ECOSYSTEM_WALLET_COMPONENT_KEYS } from "@openzeppelin/ui-builder-types";
3328
- import { logger as logger16 } from "@openzeppelin/ui-builder-utils";
3396
+ import { ECOSYSTEM_WALLET_COMPONENT_KEYS } from "@openzeppelin/ui-types";
3397
+ import { logger as logger16 } from "@openzeppelin/ui-utils";
3329
3398
  function filterWalletComponents(allPossibleComponents, exclusions, kitName = "custom") {
3330
3399
  logger16.debug(
3331
3400
  "filterWalletComponents",
@@ -3504,7 +3573,7 @@ async function resolveFullUiKitConfiguration(programmaticOverrides, initialAppSe
3504
3573
  }
3505
3574
 
3506
3575
  // src/abi/etherscan.ts
3507
- import { logger as logger20 } from "@openzeppelin/ui-builder-utils";
3576
+ import { logger as logger20 } from "@openzeppelin/ui-utils";
3508
3577
  async function loadAbiFromEtherscan(address, networkConfig) {
3509
3578
  if (shouldUseV2Api(networkConfig)) {
3510
3579
  logger20.info("loadAbiFromEtherscan", "Using V2 API for fetching ABI");
@@ -3606,17 +3675,17 @@ import {
3606
3675
  simpleHash as simpleHash2,
3607
3676
  userNetworkServiceConfigService as userNetworkServiceConfigService4,
3608
3677
  withTimeout
3609
- } from "@openzeppelin/ui-builder-utils";
3678
+ } from "@openzeppelin/ui-utils";
3610
3679
 
3611
3680
  // src/proxy/detection.ts
3612
3681
  import { createPublicClient, http as http4, keccak256, parseAbi, toHex } from "viem";
3613
- import { logger as logger23 } from "@openzeppelin/ui-builder-utils";
3682
+ import { logger as logger23 } from "@openzeppelin/ui-utils";
3614
3683
 
3615
3684
  // src/configuration/execution.ts
3616
- import { logger as logger22 } from "@openzeppelin/ui-builder-utils";
3685
+ import { logger as logger22 } from "@openzeppelin/ui-utils";
3617
3686
 
3618
3687
  // src/validation/eoa.ts
3619
- import { logger as logger21 } from "@openzeppelin/ui-builder-utils";
3688
+ import { logger as logger21 } from "@openzeppelin/ui-utils";
3620
3689
  var SYSTEM_LOG_TAG = "EoaValidator";
3621
3690
  async function validateEoaConfig(config, walletStatus) {
3622
3691
  if (!config.allowAny) {
@@ -3969,7 +4038,7 @@ async function getContractBytecode(address, networkConfig) {
3969
4038
  }
3970
4039
 
3971
4040
  // src/abi/sourcify.ts
3972
- import { logger as logger24 } from "@openzeppelin/ui-builder-utils";
4041
+ import { logger as logger24 } from "@openzeppelin/ui-utils";
3973
4042
  var SOURCIFY_APP_BASE = "https://repo.sourcify.dev";
3974
4043
  function getSourcifyContractAppUrl(chainId, address) {
3975
4044
  return `${SOURCIFY_APP_BASE}/${chainId}/${address}`;
@@ -4274,6 +4343,23 @@ var EVM_TYPE_TO_FIELD_TYPE = {
4274
4343
  bytes: "textarea",
4275
4344
  bytes32: "text"
4276
4345
  };
4346
+ var EVM_DYNAMIC_PATTERNS = [
4347
+ { name: "array", syntax: "T[]", mapsTo: "array", description: "Dynamic array of primitives" },
4348
+ { name: "fixed-array", syntax: "T[N]", mapsTo: "array", description: "Fixed-size array" },
4349
+ {
4350
+ name: "tuple-array",
4351
+ syntax: "tuple[]",
4352
+ mapsTo: "array-object",
4353
+ description: "Array of structs"
4354
+ },
4355
+ { name: "tuple", syntax: "tuple", mapsTo: "object", description: "Struct/tuple type" }
4356
+ ];
4357
+ function getEvmTypeMappingInfo() {
4358
+ return {
4359
+ primitives: { ...EVM_TYPE_TO_FIELD_TYPE },
4360
+ dynamicPatterns: EVM_DYNAMIC_PATTERNS
4361
+ };
4362
+ }
4277
4363
 
4278
4364
  // src/mapping/type-mapper.ts
4279
4365
  function mapEvmParamTypeToFieldType(parameterType) {
@@ -4329,7 +4415,7 @@ import { startCase } from "lodash";
4329
4415
  import {
4330
4416
  enhanceNumericValidation,
4331
4417
  getDefaultValueForType
4332
- } from "@openzeppelin/ui-builder-utils";
4418
+ } from "@openzeppelin/ui-utils";
4333
4419
  function extractArrayElementType(parameterType) {
4334
4420
  const arrayMatch = parameterType.match(/^(.+)\[\d*\]$/);
4335
4421
  if (arrayMatch) {
@@ -4405,11 +4491,11 @@ function isEvmViewFunction(functionDetails) {
4405
4491
 
4406
4492
  // src/query/handler.ts
4407
4493
  import { createPublicClient as createPublicClient2, http as http5, isAddress as isAddress4 } from "viem";
4408
- import { logger as logger28 } from "@openzeppelin/ui-builder-utils";
4494
+ import { logger as logger28 } from "@openzeppelin/ui-utils";
4409
4495
 
4410
4496
  // src/transform/input-parser.ts
4411
4497
  import { getAddress, isAddress as isAddress3 } from "viem";
4412
- import { logger as logger26 } from "@openzeppelin/ui-builder-utils";
4498
+ import { logger as logger26 } from "@openzeppelin/ui-utils";
4413
4499
  function parseEvmInput(param, rawValue, isRecursive = false) {
4414
4500
  const { type, name } = param;
4415
4501
  const baseType = type.replace(/\[\d*\]$/, "");
@@ -4540,7 +4626,7 @@ function parseEvmInput(param, rawValue, isRecursive = false) {
4540
4626
  }
4541
4627
 
4542
4628
  // src/transform/output-formatter.ts
4543
- import { logger as logger27 } from "@openzeppelin/ui-builder-utils";
4629
+ import { logger as logger27 } from "@openzeppelin/ui-utils";
4544
4630
  function formatEvmFunctionResult(decodedValue, functionDetails) {
4545
4631
  if (!functionDetails.outputs || !Array.isArray(functionDetails.outputs)) {
4546
4632
  logger27.warn(
@@ -4733,7 +4819,7 @@ import {
4733
4819
  Configuration,
4734
4820
  RelayersApi
4735
4821
  } from "@openzeppelin/relayer-sdk";
4736
- import { logger as logger29 } from "@openzeppelin/ui-builder-utils";
4822
+ import { logger as logger29 } from "@openzeppelin/ui-utils";
4737
4823
  var RelayerExecutionStrategy = class {
4738
4824
  async execute(transactionData, executionConfig, _walletImplementation, onStatusChange, runtimeApiKey) {
4739
4825
  const relayerConfig = executionConfig;
@@ -4986,7 +5072,7 @@ var RelayerExecutionStrategy = class {
4986
5072
  };
4987
5073
 
4988
5074
  // src/transaction/sender.ts
4989
- import { logger as logger30 } from "@openzeppelin/ui-builder-utils";
5075
+ import { logger as logger30 } from "@openzeppelin/ui-utils";
4990
5076
  var SYSTEM_LOG_TAG3 = "adapter-evm-sender";
4991
5077
  async function waitForEvmTransactionConfirmation(txHash, walletImplementation) {
4992
5078
  logger30.info(SYSTEM_LOG_TAG3, `Waiting for tx: ${txHash}`);
@@ -5016,7 +5102,7 @@ async function waitForEvmTransactionConfirmation(txHash, walletImplementation) {
5016
5102
 
5017
5103
  // src/transaction/formatter.ts
5018
5104
  import { isAddress as isAddress5 } from "viem";
5019
- import { logger as logger31 } from "@openzeppelin/ui-builder-utils";
5105
+ import { logger as logger31 } from "@openzeppelin/ui-utils";
5020
5106
  function formatEvmTransactionData(contractSchema, functionId, submittedInputs, fields) {
5021
5107
  logger31.info(
5022
5108
  "formatEvmTransactionData",
@@ -5077,7 +5163,7 @@ function formatEvmTransactionData(contractSchema, functionId, submittedInputs, f
5077
5163
  }
5078
5164
 
5079
5165
  // src/transaction/eoa.ts
5080
- import { logger as logger32 } from "@openzeppelin/ui-builder-utils";
5166
+ import { logger as logger32 } from "@openzeppelin/ui-utils";
5081
5167
  var SYSTEM_LOG_TAG4 = "EoaExecutionStrategy";
5082
5168
  var EoaExecutionStrategy = class {
5083
5169
  async execute(transactionData, executionConfig, walletImplementation, onStatusChange, _runtimeApiKey) {
@@ -5136,11 +5222,11 @@ var EoaExecutionStrategy = class {
5136
5222
 
5137
5223
  // src/transaction/components/EvmRelayerOptions.tsx
5138
5224
  import React6 from "react";
5139
- import { Tabs, TabsContent, TabsList, TabsTrigger } from "@openzeppelin/ui-builder-ui";
5225
+ import { Tabs, TabsContent, TabsList, TabsTrigger } from "@openzeppelin/ui-components";
5140
5226
 
5141
5227
  // src/transaction/components/AdvancedInfo.tsx
5142
5228
  import { Info } from "lucide-react";
5143
- import { Button as Button5 } from "@openzeppelin/ui-builder-ui";
5229
+ import { Button as Button5 } from "@openzeppelin/ui-components";
5144
5230
  import { jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
5145
5231
  var AdvancedInfo = ({ showAdvancedInfo, onToggle }) => {
5146
5232
  return /* @__PURE__ */ jsxs7("div", { className: "space-y-2", children: [
@@ -5172,8 +5258,8 @@ import {
5172
5258
  AccordionTrigger,
5173
5259
  BooleanField,
5174
5260
  NumberField
5175
- } from "@openzeppelin/ui-builder-ui";
5176
- import { cn as cn5 } from "@openzeppelin/ui-builder-utils";
5261
+ } from "@openzeppelin/ui-components";
5262
+ import { cn as cn5 } from "@openzeppelin/ui-utils";
5177
5263
  import { jsx as jsx9, jsxs as jsxs8 } from "react/jsx-runtime";
5178
5264
  var CustomGasParameters = ({
5179
5265
  control,
@@ -5334,7 +5420,7 @@ var CustomGasParameters = ({
5334
5420
 
5335
5421
  // src/transaction/components/SpeedSelection.tsx
5336
5422
  import { Speed as Speed2 } from "@openzeppelin/relayer-sdk";
5337
- import { RadioGroup, RadioGroupItem } from "@openzeppelin/ui-builder-ui";
5423
+ import { RadioGroup, RadioGroupItem } from "@openzeppelin/ui-components";
5338
5424
  import { jsx as jsx10, jsxs as jsxs9 } from "react/jsx-runtime";
5339
5425
  var speedOptions = [
5340
5426
  {
@@ -5559,7 +5645,7 @@ var EvmRelayerOptions = ({ options, onChange }) => {
5559
5645
  };
5560
5646
 
5561
5647
  // src/wallet/utils/connection.ts
5562
- import { logger as logger33 } from "@openzeppelin/ui-builder-utils";
5648
+ import { logger as logger33 } from "@openzeppelin/ui-utils";
5563
5649
  var LOG_SYSTEM3 = "adapter-evm-connection";
5564
5650
  function evmSupportsWalletConnection() {
5565
5651
  return true;
@@ -6166,6 +6252,12 @@ Get your WalletConnect projectId from <a href="https://cloud.walletconnect.com"
6166
6252
  hashContractDefinition(definition) {
6167
6253
  return abiComparisonService.hashAbi(definition);
6168
6254
  }
6255
+ /**
6256
+ * @inheritdoc
6257
+ */
6258
+ getTypeMappingInfo() {
6259
+ return getEvmTypeMappingInfo();
6260
+ }
6169
6261
  };
6170
6262
 
6171
6263
  // src/config.ts