@thenamespace/ens-components 0.3.0 → 0.5.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.
package/dist/index.js CHANGED
@@ -88,6 +88,48 @@ const Input = forwardRef(
88
88
  );
89
89
  Input.displayName = "Input";
90
90
 
91
+ const Textarea = forwardRef(
92
+ ({
93
+ size = "md",
94
+ prefix,
95
+ suffix,
96
+ disabled = false,
97
+ error = false,
98
+ className = "",
99
+ dataTestId,
100
+ rows = 4,
101
+ ...rest
102
+ }, ref) => {
103
+ const sizeClass = `ns-textarea--${size}`;
104
+ const errorClass = error ? "ns-textarea--error" : "";
105
+ const disabledClass = disabled ? "ns-textarea--disabled" : "";
106
+ const classes = [
107
+ "ns-textarea",
108
+ sizeClass,
109
+ errorClass,
110
+ disabledClass,
111
+ className
112
+ ].filter(Boolean).join(" ");
113
+ return /* @__PURE__ */ jsxs("div", { className: `ns-textarea__wrapper ${sizeClass}`, children: [
114
+ prefix && /* @__PURE__ */ jsx("div", { className: "ns-textarea__prefix", children: prefix }),
115
+ /* @__PURE__ */ jsx(
116
+ "textarea",
117
+ {
118
+ ref,
119
+ className: classes,
120
+ disabled,
121
+ "aria-invalid": error || void 0,
122
+ "data-test-id": dataTestId,
123
+ rows,
124
+ ...rest
125
+ }
126
+ ),
127
+ suffix && /* @__PURE__ */ jsx("div", { className: "ns-textarea__suffix", children: suffix })
128
+ ] });
129
+ }
130
+ );
131
+ Textarea.displayName = "Textarea";
132
+
91
133
  const Text = ({
92
134
  children,
93
135
  size = "md",
@@ -11276,23 +11318,28 @@ const encode = (name, value) => {
11276
11318
  const supportedContenthashRecords = [
11277
11319
  {
11278
11320
  protocol: ContenthashProtocol.Ipfs,
11279
- label: "Ipfs"
11321
+ label: "IPFS",
11322
+ protocolPrefix: "ipfs://"
11280
11323
  },
11281
11324
  {
11282
11325
  protocol: ContenthashProtocol.Onion,
11283
- label: "Onion3"
11326
+ label: "ONION",
11327
+ protocolPrefix: "onion3://"
11284
11328
  },
11285
11329
  {
11286
11330
  protocol: ContenthashProtocol.Arweave,
11287
- label: "Arweave"
11331
+ label: "ARWEAVE",
11332
+ protocolPrefix: "ar://"
11288
11333
  },
11289
11334
  {
11290
11335
  protocol: ContenthashProtocol.Skynet,
11291
- label: "Skynet"
11336
+ label: "SKYNET",
11337
+ protocolPrefix: "sia://"
11292
11338
  },
11293
11339
  {
11294
11340
  protocol: ContenthashProtocol.Swarm,
11295
- label: "Swarm"
11341
+ label: "SWARM",
11342
+ protocolPrefix: "bzz://"
11296
11343
  }
11297
11344
  ];
11298
11345
  const getSupportedChashByProtocol = (protocol) => {
@@ -11303,6 +11350,7 @@ const isContenthashValid = (protocol, value) => {
11303
11350
  encode(protocol, value);
11304
11351
  return true;
11305
11352
  } catch (err) {
11353
+ console.log(err, "ERR HERE");
11306
11354
  return false;
11307
11355
  }
11308
11356
  };
@@ -11340,7 +11388,7 @@ const supportedTexts = [
11340
11388
  key: "description",
11341
11389
  category: "general" /* General */,
11342
11390
  label: "Short bio",
11343
- placeholder: "e.g. john"
11391
+ placeholder: "I am an alien from outer space"
11344
11392
  },
11345
11393
  {
11346
11394
  icon: "globe",
@@ -11470,6 +11518,7 @@ const TextRecords = ({
11470
11518
  /* @__PURE__ */ jsx(Text, { className: "ns-mb-2", weight: "bold", children: capitalize(category) }),
11471
11519
  filteredItems.filter((record) => existingTextsMap[record.key] !== void 0).map((record) => {
11472
11520
  const current = existingTextsMap[record.key];
11521
+ const isDescription = record.key === "description";
11473
11522
  return /* @__PURE__ */ jsxs("div", { style: { marginBottom: 10 }, children: [
11474
11523
  /* @__PURE__ */ jsx(
11475
11524
  Text,
@@ -11487,7 +11536,21 @@ const TextRecords = ({
11487
11536
  style: { width: "100%" },
11488
11537
  className: "d-flex align-items-center",
11489
11538
  children: [
11490
- /* @__PURE__ */ jsx(
11539
+ isDescription ? /* @__PURE__ */ jsx(
11540
+ Textarea,
11541
+ {
11542
+ size: "sm",
11543
+ ref: (el) => {
11544
+ inputRefs.current[record.key] = el;
11545
+ },
11546
+ style: { width: "100%", flex: 1, height: 70 },
11547
+ onChange: (e) => handleTextChanged(record.key, e.target.value),
11548
+ prefix: /* @__PURE__ */ jsx(Icon, { name: record.icon, size: 18, color: "grey" }),
11549
+ value: current.value,
11550
+ placeholder: record.placeholder,
11551
+ rows: 4
11552
+ }
11553
+ ) : /* @__PURE__ */ jsx(
11491
11554
  Input,
11492
11555
  {
11493
11556
  ref: (el) => {
@@ -11505,6 +11568,7 @@ const TextRecords = ({
11505
11568
  {
11506
11569
  onClick: () => handleRemoveText(record.key),
11507
11570
  className: "ns-close-icon ns-ms-1",
11571
+ style: { marginTop: isDescription ? "8px" : "0" },
11508
11572
  children: /* @__PURE__ */ jsx(Icon, { name: "x", size: 18 })
11509
11573
  }
11510
11574
  )
@@ -11515,7 +11579,7 @@ const TextRecords = ({
11515
11579
  }),
11516
11580
  /* @__PURE__ */ jsx("div", { className: "row g-2", children: filteredItems.filter(
11517
11581
  (record) => existingTextsMap[record.key] === void 0 && record.category !== TextRecordCategory.Image && filterSuggestions(record)
11518
- ).map((record) => /* @__PURE__ */ jsx("div", { className: "col col-lg-3 col-sm-6", children: /* @__PURE__ */ jsxs(
11582
+ ).map((record) => /* @__PURE__ */ jsx("div", { className: "col col-lg-3 col-sm-6 col-6", children: /* @__PURE__ */ jsxs(
11519
11583
  "div",
11520
11584
  {
11521
11585
  className: "ns-text-suggestion",
@@ -11645,7 +11709,7 @@ const AddressRecords = ({
11645
11709
  )
11646
11710
  ] }, record.chainName);
11647
11711
  }),
11648
- /* @__PURE__ */ jsx("div", { className: "row g-2", children: filteredAddresses.filter((record) => existingAddressMap[record.coinType] === void 0).map((record) => /* @__PURE__ */ jsx("div", { className: "col col-lg-3 col-sm-6", children: /* @__PURE__ */ jsxs(
11712
+ /* @__PURE__ */ jsx("div", { className: "row g-2", children: filteredAddresses.filter((record) => existingAddressMap[record.coinType] === void 0).map((record) => /* @__PURE__ */ jsx("div", { className: "col col-lg-3 col-sm-6 col-6", children: /* @__PURE__ */ jsxs(
11649
11713
  "div",
11650
11714
  {
11651
11715
  className: "ns-text-suggestion",
@@ -11869,8 +11933,10 @@ const SwarmIcon = ({ size = 20 }) => {
11869
11933
  {
11870
11934
  xmlns: "http://www.w3.org/2000/svg",
11871
11935
  width: size,
11872
- height: size * 1.03,
11936
+ height: size,
11937
+ viewBox: "0 0 34.4 35",
11873
11938
  fill: "none",
11939
+ preserveAspectRatio: "xMidYMid meet",
11874
11940
  children: /* @__PURE__ */ jsxs("g", { fill: "#FF8A00", children: [
11875
11941
  /* @__PURE__ */ jsx("path", { d: "m0 30.47 8.02 4.502 8.022-4.502v-8.986L8.02 16.977 0 21.484zM26.516.03l-4.24 2.381-.006.036v4.758l4.246 2.382.036.017 4.24-2.376V2.43zM34.4 21.484l-8.02-4.507-8.022 4.507v8.986l8.021 4.502L34.4 30.47z" }),
11876
11942
  /* @__PURE__ */ jsx("path", { d: "m17.137 1.285-8.01 4.502v8.986l8.022 4.501 8.02-4.501v-3.58l-3.905-2.19-1.054-.59V3.119z" })
@@ -12045,13 +12111,26 @@ const ContenthashRecord = ({
12045
12111
  onContenthashAdded,
12046
12112
  searchFilter
12047
12113
  }) => {
12114
+ const inputRef = useRef(null);
12048
12115
  const metadata = useMemo(() => {
12049
12116
  if (contenthash?.protocol) {
12050
12117
  return getSupportedChashByProtocol(contenthash?.protocol);
12051
12118
  }
12052
12119
  }, [contenthash]);
12053
- const handleContenthashChanged = (protocol, value) => {
12054
- onContenthashChanged({ protocol, value });
12120
+ const handleContenthashChanged = (protocol, inputValue) => {
12121
+ const protocolPrefix = metadata.protocolPrefix;
12122
+ if (inputValue.length <= protocolPrefix.length) {
12123
+ onContenthashChanged({ protocol, value: "" });
12124
+ return;
12125
+ }
12126
+ let cleanValue = inputValue;
12127
+ if (cleanValue.startsWith(protocolPrefix)) {
12128
+ cleanValue = cleanValue.substring(protocolPrefix.length);
12129
+ } else {
12130
+ onContenthashChanged({ protocol, value: "" });
12131
+ return;
12132
+ }
12133
+ onContenthashChanged({ protocol, value: cleanValue });
12055
12134
  };
12056
12135
  const filterChash = (record) => {
12057
12136
  if (searchFilter && searchFilter.length > 0) {
@@ -12060,6 +12139,16 @@ const ContenthashRecord = ({
12060
12139
  }
12061
12140
  return true;
12062
12141
  };
12142
+ const prefixWithProtocol = (value, protocol) => {
12143
+ const protocolPrefix = metadata.protocolPrefix;
12144
+ if (value.length === 0) {
12145
+ return protocolPrefix;
12146
+ }
12147
+ if (value.startsWith(protocolPrefix)) {
12148
+ return value;
12149
+ }
12150
+ return `${protocolPrefix}${value}`;
12151
+ };
12063
12152
  const filteredSuggestions = useMemo(() => {
12064
12153
  return supportedContenthashRecords.filter((record) => filterChash(record));
12065
12154
  }, [searchFilter]);
@@ -12068,7 +12157,7 @@ const ContenthashRecord = ({
12068
12157
  }
12069
12158
  return /* @__PURE__ */ jsxs("div", { className: "ns-text-records", children: [
12070
12159
  /* @__PURE__ */ jsx(Text, { className: "ns-mb-2", weight: "bold", children: "Website" }),
12071
- !contenthash && /* @__PURE__ */ jsx("div", { className: "row g-2", children: filteredSuggestions.map((record) => /* @__PURE__ */ jsx("div", { className: "col col-lg-3 col-sm-6", children: /* @__PURE__ */ jsxs(
12160
+ !contenthash && /* @__PURE__ */ jsx("div", { className: "row g-2", children: filteredSuggestions.map((record) => /* @__PURE__ */ jsx("div", { className: "col col-lg-3 col-sm-6 col-6", children: /* @__PURE__ */ jsxs(
12072
12161
  "div",
12073
12162
  {
12074
12163
  className: "ns-text-suggestion",
@@ -12094,11 +12183,27 @@ const ContenthashRecord = ({
12094
12183
  /* @__PURE__ */ jsx(
12095
12184
  Input,
12096
12185
  {
12186
+ ref: inputRef,
12097
12187
  style: { width: "100%" },
12098
12188
  onChange: (e) => handleContenthashChanged(contenthash.protocol, e.target.value),
12189
+ onKeyDown: (e) => {
12190
+ const protocolPrefix = `${contenthash.protocol}://`;
12191
+ const input = e.currentTarget;
12192
+ const cursorPosition = input.selectionStart || 0;
12193
+ if (cursorPosition <= protocolPrefix.length) {
12194
+ if (e.key === "Backspace" && cursorPosition > 0) {
12195
+ e.preventDefault();
12196
+ setTimeout(() => {
12197
+ input.setSelectionRange(protocolPrefix.length, protocolPrefix.length);
12198
+ }, 0);
12199
+ } else if (e.key === "Delete" && cursorPosition < protocolPrefix.length) {
12200
+ e.preventDefault();
12201
+ }
12202
+ }
12203
+ },
12099
12204
  error: contenthash.value.length > 0 && !isContenthashValid(contenthash.protocol, contenthash.value),
12100
12205
  prefix: /* @__PURE__ */ jsx(ContenthashIcon, { protocol: contenthash.protocol, size: 18 }),
12101
- value: contenthash.value,
12206
+ value: prefixWithProtocol(contenthash.value, contenthash.protocol),
12102
12207
  placeholder: `${contenthash.protocol}://`
12103
12208
  }
12104
12209
  ),
@@ -12146,56 +12251,18 @@ const ImageRecords = ({
12146
12251
  return /* @__PURE__ */ jsx("div", { className: "ns-image-records", children: /* @__PURE__ */ jsxs("div", { style: headerStyles, className: "ns-cover-record-cont", children: [
12147
12252
  /* @__PURE__ */ jsx("div", { className: "ns-top-grad" }),
12148
12253
  /* @__PURE__ */ jsx("div", { className: "ns-bot-grad" }),
12149
- !headerRecordSet && /* @__PURE__ */ jsx(
12150
- Dropdown,
12151
- {
12152
- trigger: /* @__PURE__ */ jsx("div", { className: "ns-header-handle", children: /* @__PURE__ */ jsx(Icon, { color: "white", name: "rotate-circle" }) }),
12153
- children: /* @__PURE__ */ jsxs("div", { className: "ns-upload-options", children: [
12154
- /* @__PURE__ */ jsx(
12155
- Text,
12156
- {
12157
- onClick: (e) => {
12158
- e.stopPropagation();
12159
- if (!headerRecordSet) {
12160
- onHeaderAdded("");
12161
- }
12162
- },
12163
- weight: "medium",
12164
- className: "option",
12165
- size: "sm",
12166
- children: "Add Header Record"
12167
- }
12168
- ),
12169
- /* @__PURE__ */ jsx(Text, { weight: "medium", className: "option disabled", size: "sm", children: "Upload image" }),
12170
- /* @__PURE__ */ jsx(Text, { weight: "medium", className: "option disabled", size: "sm", children: "Select NFT" })
12171
- ] })
12254
+ !headerRecordSet && /* @__PURE__ */ jsx("div", { style: { zIndex: 10 }, onClick: (e) => {
12255
+ e.stopPropagation();
12256
+ if (!headerRecordSet) {
12257
+ onHeaderAdded("");
12172
12258
  }
12173
- ),
12174
- /* @__PURE__ */ jsx("div", { style: avatarStyles, className: "ns-avatar-record-cont", children: !avatarRecordSet && /* @__PURE__ */ jsx(
12175
- Dropdown,
12176
- {
12177
- trigger: /* @__PURE__ */ jsx("div", { className: "ns-image-handle", children: /* @__PURE__ */ jsx(Icon, { color: "grey", name: "rotate-circle" }) }),
12178
- children: /* @__PURE__ */ jsxs("div", { className: "ns-upload-options", children: [
12179
- /* @__PURE__ */ jsx(
12180
- Text,
12181
- {
12182
- onClick: (e) => {
12183
- e.stopPropagation();
12184
- if (!avatarRecordSet) {
12185
- onAvatarAdded("");
12186
- }
12187
- },
12188
- weight: "medium",
12189
- className: "option",
12190
- size: "sm",
12191
- children: "Add Avatar Record"
12192
- }
12193
- ),
12194
- /* @__PURE__ */ jsx(Text, { weight: "medium", className: "option disabled", size: "sm", children: "Upload image" }),
12195
- /* @__PURE__ */ jsx(Text, { weight: "medium", className: "option disabled", size: "sm", children: "Select NFT" })
12196
- ] })
12259
+ }, className: "ns-header-handle", children: /* @__PURE__ */ jsx(Icon, { color: "white", name: "rotate-circle" }) }),
12260
+ /* @__PURE__ */ jsx("div", { style: avatarStyles, className: "ns-avatar-record-cont", children: !avatarRecordSet && /* @__PURE__ */ jsx("div", { style: { zIndex: 10 }, onClick: (e) => {
12261
+ e.stopPropagation();
12262
+ if (!avatarRecordSet) {
12263
+ onAvatarAdded("");
12197
12264
  }
12198
- ) })
12265
+ }, className: "ns-image-handle", children: /* @__PURE__ */ jsx(Icon, { color: "grey", name: "rotate-circle" }) }) })
12199
12266
  ] }) });
12200
12267
  };
12201
12268
 
@@ -12219,6 +12286,46 @@ const SelectRecordsForm = ({
12219
12286
  const [currentNav, setCurrentNav] = useState(
12220
12287
  "General" /* General */
12221
12288
  );
12289
+ const recordsInnerRef = useRef(null);
12290
+ const isScrollingProgrammatically = useRef(false);
12291
+ useEffect(() => {
12292
+ const scrollContainer = recordsInnerRef.current;
12293
+ if (!scrollContainer) return;
12294
+ const refs = [
12295
+ { ref: generalCategoryRef, nav: "General" /* General */ },
12296
+ { ref: socialCategoryRef, nav: "Social" /* Social */ },
12297
+ { ref: addressesCategoryRef, nav: "Addresses" /* Addresses */ },
12298
+ { ref: websiteCategoryRef, nav: "Website" /* Website */ }
12299
+ ];
12300
+ const updateActiveNav = () => {
12301
+ if (isScrollingProgrammatically.current) return;
12302
+ const containerRect = scrollContainer.getBoundingClientRect();
12303
+ const containerTop = containerRect.top;
12304
+ let closestSection = null;
12305
+ let closestDistance = Infinity;
12306
+ refs.forEach(({ ref, nav }) => {
12307
+ if (ref.current) {
12308
+ const sectionRect = ref.current.getBoundingClientRect();
12309
+ const sectionTop = sectionRect.top - containerTop;
12310
+ if (sectionTop <= 100 && sectionTop > -100) {
12311
+ const distance = Math.abs(sectionTop);
12312
+ if (distance < closestDistance) {
12313
+ closestDistance = distance;
12314
+ closestSection = nav;
12315
+ }
12316
+ }
12317
+ }
12318
+ });
12319
+ if (closestSection) {
12320
+ setCurrentNav(closestSection);
12321
+ }
12322
+ };
12323
+ updateActiveNav();
12324
+ scrollContainer.addEventListener("scroll", updateActiveNav);
12325
+ return () => {
12326
+ scrollContainer.removeEventListener("scroll", updateActiveNav);
12327
+ };
12328
+ }, []);
12222
12329
  const handleTextsUpdated = (texts) => {
12223
12330
  onRecordsUpdated({ ...records, texts });
12224
12331
  };
@@ -12234,10 +12341,14 @@ const SelectRecordsForm = ({
12234
12341
  };
12235
12342
  const currentRef = references[category];
12236
12343
  if (currentRef && currentRef.current) {
12344
+ isScrollingProgrammatically.current = true;
12237
12345
  currentRef.current.scrollIntoView({
12238
12346
  behavior: "smooth",
12239
12347
  block: "start"
12240
12348
  });
12349
+ setTimeout(() => {
12350
+ isScrollingProgrammatically.current = false;
12351
+ }, 1e3);
12241
12352
  }
12242
12353
  };
12243
12354
  const handleSidebarChange = (nav, scroll = true) => {
@@ -12312,47 +12423,54 @@ const SelectRecordsForm = ({
12312
12423
  item
12313
12424
  );
12314
12425
  }) }),
12315
- /* @__PURE__ */ jsxs("div", { className: "col col-sm-9 col-12 ns-records-inner ns-styled-scrollbar", children: [
12316
- /* @__PURE__ */ jsx("div", { ref: generalCategoryRef, className: "ns-mb-2", children: /* @__PURE__ */ jsx(
12317
- TextRecords,
12318
- {
12319
- initialTexts: initialRecords.texts,
12320
- texts: records.texts,
12321
- onTextsChanged: handleTextsUpdated,
12322
- category: TextRecordCategory.General,
12323
- searchFilter
12324
- }
12325
- ) }),
12326
- /* @__PURE__ */ jsx("div", { ref: socialCategoryRef, className: "ns-mb-2", children: /* @__PURE__ */ jsx(
12327
- TextRecords,
12328
- {
12329
- initialTexts: initialRecords.texts,
12330
- texts: records.texts,
12331
- onTextsChanged: handleTextsUpdated,
12332
- category: TextRecordCategory.Social,
12333
- searchFilter
12334
- }
12335
- ) }),
12336
- /* @__PURE__ */ jsx("div", { ref: addressesCategoryRef, className: "ns-mb-2", children: /* @__PURE__ */ jsx(
12337
- AddressRecords,
12338
- {
12339
- initialAddresses: initialRecords.addresses,
12340
- addresses: records.addresses,
12341
- onAddressesChanged: (e) => handleAddressesUpdated(e),
12342
- searchFilter
12343
- }
12344
- ) }),
12345
- /* @__PURE__ */ jsx("div", { ref: websiteCategoryRef, className: "ns-mb-2", children: /* @__PURE__ */ jsx(
12346
- ContenthashRecord,
12347
- {
12348
- contenthash: records.contenthash,
12349
- onContenthashChanged: (e) => handleContenthashUpdated(e),
12350
- onContenthashRemoved: () => handleContenthashRemoved(),
12351
- onContenthashAdded: (e) => handleContenthashAdded(e),
12352
- searchFilter
12353
- }
12354
- ) })
12355
- ] })
12426
+ /* @__PURE__ */ jsxs(
12427
+ "div",
12428
+ {
12429
+ ref: recordsInnerRef,
12430
+ className: "col col-sm-9 col-12 ns-records-inner ns-styled-scrollbar",
12431
+ children: [
12432
+ /* @__PURE__ */ jsx("div", { ref: generalCategoryRef, className: "ns-mb-2", children: /* @__PURE__ */ jsx(
12433
+ TextRecords,
12434
+ {
12435
+ initialTexts: initialRecords.texts,
12436
+ texts: records.texts,
12437
+ onTextsChanged: handleTextsUpdated,
12438
+ category: TextRecordCategory.General,
12439
+ searchFilter
12440
+ }
12441
+ ) }),
12442
+ /* @__PURE__ */ jsx("div", { ref: socialCategoryRef, className: "ns-mb-2", children: /* @__PURE__ */ jsx(
12443
+ TextRecords,
12444
+ {
12445
+ initialTexts: initialRecords.texts,
12446
+ texts: records.texts,
12447
+ onTextsChanged: handleTextsUpdated,
12448
+ category: TextRecordCategory.Social,
12449
+ searchFilter
12450
+ }
12451
+ ) }),
12452
+ /* @__PURE__ */ jsx("div", { ref: addressesCategoryRef, className: "ns-mb-2", children: /* @__PURE__ */ jsx(
12453
+ AddressRecords,
12454
+ {
12455
+ initialAddresses: initialRecords.addresses,
12456
+ addresses: records.addresses,
12457
+ onAddressesChanged: (e) => handleAddressesUpdated(e),
12458
+ searchFilter
12459
+ }
12460
+ ) }),
12461
+ /* @__PURE__ */ jsx("div", { ref: websiteCategoryRef, className: "ns-mb-2", children: /* @__PURE__ */ jsx(
12462
+ ContenthashRecord,
12463
+ {
12464
+ contenthash: records.contenthash,
12465
+ onContenthashChanged: (e) => handleContenthashUpdated(e),
12466
+ onContenthashRemoved: () => handleContenthashRemoved(),
12467
+ onContenthashAdded: (e) => handleContenthashAdded(e),
12468
+ searchFilter
12469
+ }
12470
+ ) })
12471
+ ]
12472
+ }
12473
+ )
12356
12474
  ] }) })
12357
12475
  ] });
12358
12476
  };
@@ -12665,5 +12783,5 @@ const useTheme = () => {
12665
12783
  return ctx;
12666
12784
  };
12667
12785
 
12668
- export { Alert, Button, Card, ChainIcon, ContenthashIcon, ContenthashProtocol, Dropdown, ENSNameCard, ENS_RESOLVER_ABI, Icon, Input, MULTICALL, Modal, NavbarProfileCard, PendingTransaction, ProfileCard, ProfileHeader, SET_ADDRESS_FUNC, SET_CONTENTHASH_FUNC, SET_TEXT_FUNC, SelectRecordsForm, Text, TextRecordCategory, ThemeProvider, Tooltip, TransactionState, capitalize, convertEVMChainIdToCoinType, deepCopy, equalsIgnoreCase, getEnsRecordsDiff, getSupportedAddressByCoin, getSupportedAddressByName, getSupportedAddressMap, getSupportedChashByProtocol, getSupportedText, isContenthashValid, supportedAddresses, supportedContenthashRecords, supportedTexts, useTheme, useWaitForTransaction, useWeb3Client };
12786
+ export { Alert, Button, Card, ChainIcon, ContenthashIcon, ContenthashProtocol, Dropdown, ENSNameCard, ENS_RESOLVER_ABI, Icon, Input, MULTICALL, Modal, NavbarProfileCard, PendingTransaction, ProfileCard, ProfileHeader, SET_ADDRESS_FUNC, SET_CONTENTHASH_FUNC, SET_TEXT_FUNC, SelectRecordsForm, Text, TextRecordCategory, Textarea, ThemeProvider, Tooltip, TransactionState, capitalize, convertEVMChainIdToCoinType, deepCopy, equalsIgnoreCase, getEnsRecordsDiff, getSupportedAddressByCoin, getSupportedAddressByName, getSupportedAddressMap, getSupportedChashByProtocol, getSupportedText, isContenthashValid, supportedAddresses, supportedContenthashRecords, supportedTexts, useTheme, useWaitForTransaction, useWeb3Client };
12669
12787
  //# sourceMappingURL=index.js.map