@hyperbridge/ui 0.0.14 → 0.0.16

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.d.mts CHANGED
@@ -575,6 +575,7 @@ type TimelineData = {
575
575
  };
576
576
  } | {
577
577
  processingStatus: "upcoming" | "error";
578
+ data?: never;
578
579
  } | {
579
580
  processingStatus: "completed";
580
581
  data?: {
@@ -587,7 +588,7 @@ type TimelineItemProps = Prettify<TimelineData & Level & {
587
588
  secondary?: string;
588
589
  durationMode?: "none" | "visible";
589
590
  }>;
590
- declare function TimelineItem(props: TimelineItemProps): react_jsx_runtime.JSX.Element;
591
+ declare const TimelineItem: React__default.ForwardRefExoticComponent<TimelineItemProps & React__default.RefAttributes<HTMLLIElement>>;
591
592
  declare function TimelineListGroup(props: {
592
593
  children: React__default.ReactNode;
593
594
  }): react_jsx_runtime.JSX.Element;
@@ -652,9 +653,9 @@ declare function AssetValueTrend(props: {
652
653
  dollarValue: number;
653
654
  }): react_jsx_runtime.JSX.Element;
654
655
  declare function Balance(props: {
656
+ amount: number;
655
657
  prefix?: string;
656
658
  suffix?: string;
657
- amount: number;
658
659
  formatter?: Intl.NumberFormat;
659
660
  }): react_jsx_runtime.JSX.Element;
660
661
 
@@ -761,8 +762,8 @@ interface NetworkSelectorProps {
761
762
  declare const NetworkSelector: ({ title, availableNetworks, unavailableNetworks, selectedNetwork, onNetworkSelect, isOpen, onClose, }: NetworkSelectorProps) => react_jsx_runtime.JSX.Element;
762
763
  declare function NetworkSelectionItem(props: {
763
764
  network: Network;
764
- variant: "default" | "secondary";
765
765
  isActive?: boolean;
766
+ variant: "default" | "secondary";
766
767
  SecondaryContent: React__default.ReactNode;
767
768
  } & React__default.ComponentPropsWithoutRef<"button">): react_jsx_runtime.JSX.Element;
768
769
 
@@ -792,7 +793,13 @@ declare function SheetContent({ className, children, side, ...props }: React__de
792
793
  declare function Drawer({ ...props }: React$1.ComponentProps<typeof Drawer$1.Root>): react_jsx_runtime.JSX.Element;
793
794
  declare function DrawerContent({ className, children, ...props }: React$1.ComponentProps<typeof Drawer$1.Content>): react_jsx_runtime.JSX.Element;
794
795
 
795
- declare function ManageAccounts(): react_jsx_runtime.JSX.Element;
796
+ /**
797
+ * @deprecated use <ChooseProviderHeader /> instead
798
+ * @description To be Remove in v1
799
+ * @returns
800
+ */
801
+ declare function ManageAccounts(): null;
802
+ declare function HeaderChooseProvider(): react_jsx_runtime.JSX.Element;
796
803
  declare function HeaderNested(props: {
797
804
  heading: string;
798
805
  image: {
@@ -936,4 +943,4 @@ declare function HBDrawerFooter({ className, ...props }: React$1.ComponentProps<
936
943
  declare function HBDrawerTitle({ className, ...props }: React$1.ComponentProps<typeof Drawer$1.Title>): react_jsx_runtime.JSX.Element;
937
944
  declare function HBDrawerDescription({ className, ...props }: React$1.ComponentProps<typeof Drawer$1.Description>): react_jsx_runtime.JSX.Element;
938
945
 
939
- export { AccessoryButton, type AccessoryButtonProps, AccountItem, AccountStack, type AccountStackProps, AddressInput, AddressInputFocusBehaviour, AssetList, AssetListItem, AssetValueTrend, Badge, BadgeIcon, Balance, BridgeForm, type BridgeFormProps, BridgeInput, BridgeSettings, type BridgeSettingsProps, BridgeTokenButton, Button, type ButtonProps, CWDrawerContent, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogMorphContent, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerContent, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, EmptyStateConceal, EmptyStateContent, EmptyStateDescription, EmptyStateTitle, type EstimatedTimeFormatted, GradientButton, HBDrawer, HBDrawerClose, HBDrawerContent, HBDrawerDescription, HBDrawerFooter, HBDrawerHeader, HBDrawerOverlay, HBDrawerPortal, HBDrawerTitle, HBDrawerTrigger, Header, HeaderContent, HeaderGradient, HeaderNested, IconButton, Input, type InputProps, LabelledSeperator, ListHeading, ListSection, ManageAccounts, Modal, type ModalProps, type Network, NetworkGroupItem, NetworkSelectionItem, NetworkSelector, type NetworkSelectorProps, NetworkSwitcher, NetworkSwitcherButton, type NetworkSwitcherProps, ReviewItem, ReviewItemAddress, ReviewItemCopyAddressButton, ScrollAwareSeparator, SearchInput, type SearchInputProps, Settings, type SettingsProps, Sheet, SheetContent, SheetTrigger, Summary, SummaryValues, SwapForm, type SwapFormProps, SwapTokenButton, SwapTokenItem, type SwapTokenItemProps, SwapTokenSelector, SwapTokenSelectorContent, type SwapTokenSelectorContentProps, SwapTokenSelectorEmpty, type SwapTokenSelectorEmptyProps, SwapTokenSelectorHeader, type SwapTokenSelectorHeaderProps, type SwapTokenSelectorProps, SwapTokenSelectorSearch, type SwapTokenSelectorSearchProps, SwapTokenSelectorSection, type SwapTokenSelectorSectionProps, TabAlt, TabAltContent, TabAltHeader, TabAltHeaders, TabAltPanel, TabItem, Tabs, TabsContent, TabsList, TagButton, Text, TimelineItem, TimelineList, TimelineListGroup, TimelineRoot, TimerWrap, ToastBox, type Token, TokenImage, type TokenInfo, TokenSelectionItem, TokenSelector, type TokenSelectorProps, TokenTransferPair, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TransactionTimer, TxList, TxListItem, TxListItemProcessing, type WalletAccount, WalletAccountItem, WalletConnectedHeader, type WalletConnectedHeaderProps, WalletHeader, type WalletHeaderCallbacks, WalletHeaderContent, WalletHeaderContentBlur, type WalletHeaderContentProps, type WalletHeaderProps, WalletHeaderTabItem, WalletHeaderTabs, WalletHeaderTabsContent, WalletHeaderTabsList, type WalletHeaderTabsProps, WalletManagerUIContent, WalletManagerUIProvider, WalletProviderItem, badgeVariants, makeEntry };
946
+ export { AccessoryButton, type AccessoryButtonProps, AccountItem, AccountStack, type AccountStackProps, AddressInput, AddressInputFocusBehaviour, AssetList, AssetListItem, AssetValueTrend, Badge, BadgeIcon, Balance, BridgeForm, type BridgeFormProps, BridgeInput, BridgeSettings, type BridgeSettingsProps, BridgeTokenButton, Button, type ButtonProps, CWDrawerContent, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogMorphContent, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerContent, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, EmptyStateConceal, EmptyStateContent, EmptyStateDescription, EmptyStateTitle, type EstimatedTimeFormatted, GradientButton, HBDrawer, HBDrawerClose, HBDrawerContent, HBDrawerDescription, HBDrawerFooter, HBDrawerHeader, HBDrawerOverlay, HBDrawerPortal, HBDrawerTitle, HBDrawerTrigger, Header, HeaderChooseProvider, HeaderContent, HeaderGradient, HeaderNested, IconButton, Input, type InputProps, LabelledSeperator, ListHeading, ListSection, ManageAccounts, Modal, type ModalProps, type Network, NetworkGroupItem, NetworkSelectionItem, NetworkSelector, type NetworkSelectorProps, NetworkSwitcher, NetworkSwitcherButton, type NetworkSwitcherProps, ReviewItem, ReviewItemAddress, ReviewItemCopyAddressButton, ScrollAwareSeparator, SearchInput, type SearchInputProps, Settings, type SettingsProps, Sheet, SheetContent, SheetTrigger, Summary, SummaryValues, SwapForm, type SwapFormProps, SwapTokenButton, SwapTokenItem, type SwapTokenItemProps, SwapTokenSelector, SwapTokenSelectorContent, type SwapTokenSelectorContentProps, SwapTokenSelectorEmpty, type SwapTokenSelectorEmptyProps, SwapTokenSelectorHeader, type SwapTokenSelectorHeaderProps, type SwapTokenSelectorProps, SwapTokenSelectorSearch, type SwapTokenSelectorSearchProps, SwapTokenSelectorSection, type SwapTokenSelectorSectionProps, TabAlt, TabAltContent, TabAltHeader, TabAltHeaders, TabAltPanel, TabItem, Tabs, TabsContent, TabsList, TagButton, Text, TimelineItem, TimelineList, TimelineListGroup, TimelineRoot, TimerWrap, ToastBox, type Token, TokenImage, type TokenInfo, TokenSelectionItem, TokenSelector, type TokenSelectorProps, TokenTransferPair, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TransactionTimer, TxList, TxListItem, TxListItemProcessing, type WalletAccount, WalletAccountItem, WalletConnectedHeader, type WalletConnectedHeaderProps, WalletHeader, type WalletHeaderCallbacks, WalletHeaderContent, WalletHeaderContentBlur, type WalletHeaderContentProps, type WalletHeaderProps, WalletHeaderTabItem, WalletHeaderTabs, WalletHeaderTabsContent, WalletHeaderTabsList, type WalletHeaderTabsProps, WalletManagerUIContent, WalletManagerUIProvider, WalletProviderItem, badgeVariants, makeEntry };
package/dist/index.mjs CHANGED
@@ -1111,16 +1111,111 @@ function NetworkSwitcherButton(props) {
1111
1111
 
1112
1112
  // src/components/network/network-selector.tsx
1113
1113
  import { useMemo } from "react";
1114
+ import React5 from "react";
1115
+
1116
+ // src/hooks/selector-hooks.ts
1117
+ import { useState as useState2, useRef, useEffect } from "react";
1118
+ var useScrollBorder = () => {
1119
+ const [showHeaderBorder, setShowHeaderBorder] = useState2(false);
1120
+ const scrollableRef = useRef(null);
1121
+ useEffect(() => {
1122
+ const scrollableElement = scrollableRef.current;
1123
+ if (!scrollableElement) return;
1124
+ const handleScroll = () => {
1125
+ const { scrollTop, scrollHeight, clientHeight } = scrollableElement;
1126
+ const hasOverflow = scrollHeight > clientHeight;
1127
+ const hasScrolled = scrollTop > 0;
1128
+ setShowHeaderBorder(hasOverflow && hasScrolled);
1129
+ };
1130
+ handleScroll();
1131
+ scrollableElement.addEventListener("scroll", handleScroll);
1132
+ const resizeObserver = new ResizeObserver(handleScroll);
1133
+ resizeObserver.observe(scrollableElement);
1134
+ return () => {
1135
+ scrollableElement.removeEventListener("scroll", handleScroll);
1136
+ resizeObserver.disconnect();
1137
+ };
1138
+ }, []);
1139
+ return { showHeaderBorder, scrollableRef };
1140
+ };
1141
+ var useSearch = () => {
1142
+ const [searchQuery, setSearchQuery] = useState2("");
1143
+ const resetSearch = () => setSearchQuery("");
1144
+ return { searchQuery, setSearchQuery, resetSearch };
1145
+ };
1146
+ var filterItems = (items, searchQuery, searchFields) => {
1147
+ if (!searchQuery.trim()) return items;
1148
+ const query = searchQuery.toLowerCase();
1149
+ return items.filter(
1150
+ (item) => searchFields(item).some((field) => field.toLowerCase().includes(query))
1151
+ );
1152
+ };
1153
+ var sortItems = (items, sortFn) => {
1154
+ return [...items].sort(sortFn);
1155
+ };
1156
+
1157
+ // src/components/molecules/empty-state.tsx
1158
+ import React3 from "react";
1159
+ import { Fragment, jsx as jsx15 } from "react/jsx-runtime";
1160
+ var ContextDefault = {
1161
+ isEmpty: true
1162
+ };
1163
+ var EmptyStateCtx = isSSR() ? {} : React3.createContext(ContextDefault);
1164
+ function useContext() {
1165
+ const context = React3.useContext(EmptyStateCtx);
1166
+ return isSSR() ? ContextDefault : context;
1167
+ }
1168
+ var EmptyStateContent = React3.forwardRef(function Content2(props, ref) {
1169
+ const { isEmpty } = useContext();
1170
+ if (!isEmpty) return null;
1171
+ return /* @__PURE__ */ jsx15(
1172
+ "div",
1173
+ __spreadProps(__spreadValues({}, props), {
1174
+ ref,
1175
+ className: cn("flex flex-col items-center gap-4", props.className)
1176
+ })
1177
+ );
1178
+ });
1179
+ var EmptyStateTitle = React3.forwardRef(function ESTitle(props, ref) {
1180
+ return /* @__PURE__ */ jsx15(
1181
+ "h6",
1182
+ __spreadProps(__spreadValues({
1183
+ ref
1184
+ }, props), {
1185
+ className: cn("font-500 text-center font-semibold", props.className)
1186
+ })
1187
+ );
1188
+ });
1189
+ var EmptyStateDescription = React3.forwardRef(function ESDescription(props, ref) {
1190
+ return /* @__PURE__ */ jsx15(
1191
+ "div",
1192
+ __spreadProps(__spreadValues({
1193
+ ref
1194
+ }, props), {
1195
+ className: cn("text-xs text-muted-foreground", props.className)
1196
+ })
1197
+ );
1198
+ });
1199
+ function EmptyStateConceal(props) {
1200
+ const { isEmpty } = useContext();
1201
+ if (isEmpty) return null;
1202
+ return /* @__PURE__ */ jsx15(Fragment, { children: props.children });
1203
+ }
1204
+ function EmptyState(props) {
1205
+ const { isEmpty = true, children } = props;
1206
+ if (isSSR()) return /* @__PURE__ */ jsx15(Fragment, { children });
1207
+ return /* @__PURE__ */ jsx15(EmptyStateCtx.Provider, { value: { isEmpty }, children });
1208
+ }
1114
1209
 
1115
1210
  // src/components/molecules/modal.tsx
1116
1211
  import { AnimatePresence, motion } from "motion/react";
1117
- import { useEffect as useEffect2 } from "react";
1212
+ import { useEffect as useEffect3 } from "react";
1118
1213
 
1119
1214
  // src/hooks/is-mobile.ts
1120
- import { useEffect, useState as useState2 } from "react";
1215
+ import { useEffect as useEffect2, useState as useState3 } from "react";
1121
1216
  var useIsMobile = () => {
1122
- const [isMobile, setIsMobile] = useState2(false);
1123
- useEffect(() => {
1217
+ const [isMobile, setIsMobile] = useState3(false);
1218
+ useEffect2(() => {
1124
1219
  const checkIsMobile = () => {
1125
1220
  setIsMobile(window.innerWidth < 768);
1126
1221
  };
@@ -1243,10 +1338,10 @@ var animationPresets = {
1243
1338
 
1244
1339
  // src/@/ui/drawer.tsx
1245
1340
  import { Drawer as DrawerPrimitive } from "vaul";
1246
- import { Fragment, jsx as jsx15, jsxs as jsxs10 } from "react/jsx-runtime";
1341
+ import { Fragment as Fragment2, jsx as jsx16, jsxs as jsxs10 } from "react/jsx-runtime";
1247
1342
  function Drawer(_a) {
1248
1343
  var props = __objRest(_a, []);
1249
- return /* @__PURE__ */ jsx15(DrawerPrimitive.Root, __spreadValues({ "data-slot": "drawer" }, props));
1344
+ return /* @__PURE__ */ jsx16(DrawerPrimitive.Root, __spreadValues({ "data-slot": "drawer" }, props));
1250
1345
  }
1251
1346
  function DrawerOverlay(_a) {
1252
1347
  var _b = _a, {
@@ -1254,7 +1349,7 @@ function DrawerOverlay(_a) {
1254
1349
  } = _b, props = __objRest(_b, [
1255
1350
  "className"
1256
1351
  ]);
1257
- return /* @__PURE__ */ jsx15(
1352
+ return /* @__PURE__ */ jsx16(
1258
1353
  DrawerPrimitive.Overlay,
1259
1354
  __spreadValues({
1260
1355
  "data-slot": "drawer-overlay",
@@ -1273,8 +1368,8 @@ function DrawerContent(_a) {
1273
1368
  "className",
1274
1369
  "children"
1275
1370
  ]);
1276
- return /* @__PURE__ */ jsxs10(Fragment, { children: [
1277
- /* @__PURE__ */ jsx15(DrawerOverlay, {}),
1371
+ return /* @__PURE__ */ jsxs10(Fragment2, { children: [
1372
+ /* @__PURE__ */ jsx16(DrawerOverlay, {}),
1278
1373
  /* @__PURE__ */ jsxs10(
1279
1374
  DrawerPrimitive.Content,
1280
1375
  __spreadProps(__spreadValues({
@@ -1289,7 +1384,7 @@ function DrawerContent(_a) {
1289
1384
  )
1290
1385
  }, props), {
1291
1386
  children: [
1292
- /* @__PURE__ */ jsx15("div", { className: "bg-brand-black-350 mx-auto my-2 hidden h-[5px] w-16 shrink-0 rounded-[2.5px] group-data-[vaul-drawer-direction=bottom]/drawer-content:block" }),
1387
+ /* @__PURE__ */ jsx16("div", { className: "bg-brand-black-350 mx-auto my-2 hidden h-[5px] w-16 shrink-0 rounded-[2.5px] group-data-[vaul-drawer-direction=bottom]/drawer-content:block" }),
1293
1388
  children
1294
1389
  ]
1295
1390
  })
@@ -1298,14 +1393,14 @@ function DrawerContent(_a) {
1298
1393
  }
1299
1394
 
1300
1395
  // src/components/molecules/modal.tsx
1301
- import { jsx as jsx16 } from "react/jsx-runtime";
1396
+ import { jsx as jsx17 } from "react/jsx-runtime";
1302
1397
  var Modal = (props) => {
1303
1398
  const { isOpen, children, onClose } = props;
1304
1399
  const isMobile = useIsMobile();
1305
1400
  if (isMobile) {
1306
- return /* @__PURE__ */ jsx16(Drawer, { open: isOpen, onOpenChange: onClose, children: /* @__PURE__ */ jsx16(DrawerContent, { className: "bg-brand-black-550 border-brand-black-300 min-h-[90dvh]", children }) });
1401
+ return /* @__PURE__ */ jsx17(Drawer, { open: isOpen, onOpenChange: onClose, children: /* @__PURE__ */ jsx17(DrawerContent, { className: "bg-brand-black-550 border-brand-black-300 min-h-[90dvh]", children }) });
1307
1402
  }
1308
- return /* @__PURE__ */ jsx16(DestkopModal, __spreadValues({}, props));
1403
+ return /* @__PURE__ */ jsx17(DestkopModal, __spreadValues({}, props));
1309
1404
  };
1310
1405
  function DestkopModal(props) {
1311
1406
  const {
@@ -1316,7 +1411,7 @@ function DestkopModal(props) {
1316
1411
  className
1317
1412
  } = props;
1318
1413
  const { variants, transition } = animationPresets[animationPreset];
1319
- useEffect2(() => {
1414
+ useEffect3(() => {
1320
1415
  const handleEscapeKey = (event) => {
1321
1416
  if (event.key === "Escape" && isOpen && onClose) {
1322
1417
  onClose();
@@ -1329,7 +1424,7 @@ function DestkopModal(props) {
1329
1424
  document.removeEventListener("keydown", handleEscapeKey);
1330
1425
  };
1331
1426
  }, [isOpen, onClose]);
1332
- return /* @__PURE__ */ jsx16(AnimatePresence, { mode: "wait", children: isOpen && /* @__PURE__ */ jsx16(
1427
+ return /* @__PURE__ */ jsx17(AnimatePresence, { mode: "wait", children: isOpen && /* @__PURE__ */ jsx17(
1333
1428
  motion.div,
1334
1429
  {
1335
1430
  "data-modal": "true",
@@ -1347,103 +1442,6 @@ function DestkopModal(props) {
1347
1442
  ) });
1348
1443
  }
1349
1444
 
1350
- // src/hooks/selector-hooks.ts
1351
- import { useState as useState4, useRef, useEffect as useEffect3 } from "react";
1352
- var useScrollBorder = () => {
1353
- const [showHeaderBorder, setShowHeaderBorder] = useState4(false);
1354
- const scrollableRef = useRef(null);
1355
- useEffect3(() => {
1356
- const scrollableElement = scrollableRef.current;
1357
- if (!scrollableElement) return;
1358
- const handleScroll = () => {
1359
- const { scrollTop, scrollHeight, clientHeight } = scrollableElement;
1360
- const hasOverflow = scrollHeight > clientHeight;
1361
- const hasScrolled = scrollTop > 0;
1362
- setShowHeaderBorder(hasOverflow && hasScrolled);
1363
- };
1364
- handleScroll();
1365
- scrollableElement.addEventListener("scroll", handleScroll);
1366
- const resizeObserver = new ResizeObserver(handleScroll);
1367
- resizeObserver.observe(scrollableElement);
1368
- return () => {
1369
- scrollableElement.removeEventListener("scroll", handleScroll);
1370
- resizeObserver.disconnect();
1371
- };
1372
- }, []);
1373
- return { showHeaderBorder, scrollableRef };
1374
- };
1375
- var useSearch = () => {
1376
- const [searchQuery, setSearchQuery] = useState4("");
1377
- const resetSearch = () => setSearchQuery("");
1378
- return { searchQuery, setSearchQuery, resetSearch };
1379
- };
1380
- var filterItems = (items, searchQuery, searchFields) => {
1381
- if (!searchQuery.trim()) return items;
1382
- const query = searchQuery.toLowerCase();
1383
- return items.filter(
1384
- (item) => searchFields(item).some((field) => field.toLowerCase().includes(query))
1385
- );
1386
- };
1387
- var sortItems = (items, sortFn) => {
1388
- return [...items].sort(sortFn);
1389
- };
1390
-
1391
- // src/components/molecules/empty-state.tsx
1392
- import React3 from "react";
1393
- import { Fragment as Fragment2, jsx as jsx17 } from "react/jsx-runtime";
1394
- var ContextDefault = {
1395
- isEmpty: true
1396
- };
1397
- var EmptyStateCtx = isSSR() ? {} : React3.createContext(ContextDefault);
1398
- function useContext() {
1399
- const context = React3.useContext(EmptyStateCtx);
1400
- return isSSR() ? ContextDefault : context;
1401
- }
1402
- var EmptyStateContent = React3.forwardRef(function Content2(props, ref) {
1403
- const { isEmpty } = useContext();
1404
- if (!isEmpty) return null;
1405
- return /* @__PURE__ */ jsx17(
1406
- "div",
1407
- __spreadProps(__spreadValues({}, props), {
1408
- ref,
1409
- className: cn("flex flex-col items-center gap-4", props.className)
1410
- })
1411
- );
1412
- });
1413
- var EmptyStateTitle = React3.forwardRef(function ESTitle(props, ref) {
1414
- return /* @__PURE__ */ jsx17(
1415
- "h6",
1416
- __spreadProps(__spreadValues({
1417
- ref
1418
- }, props), {
1419
- className: cn("font-500 text-center font-semibold", props.className)
1420
- })
1421
- );
1422
- });
1423
- var EmptyStateDescription = React3.forwardRef(function ESDescription(props, ref) {
1424
- return /* @__PURE__ */ jsx17(
1425
- "div",
1426
- __spreadProps(__spreadValues({
1427
- ref
1428
- }, props), {
1429
- className: cn("text-xs text-muted-foreground", props.className)
1430
- })
1431
- );
1432
- });
1433
- function EmptyStateConceal(props) {
1434
- const { isEmpty } = useContext();
1435
- if (isEmpty) return null;
1436
- return /* @__PURE__ */ jsx17(Fragment2, { children: props.children });
1437
- }
1438
- function EmptyState(props) {
1439
- const { isEmpty = true, children } = props;
1440
- if (isSSR()) return /* @__PURE__ */ jsx17(Fragment2, { children });
1441
- return /* @__PURE__ */ jsx17(EmptyStateCtx.Provider, { value: { isEmpty }, children });
1442
- }
1443
-
1444
- // src/components/network/network-selector.tsx
1445
- import React5 from "react";
1446
-
1447
1445
  // src/components/molecules/scroll-aware-area.tsx
1448
1446
  import React4 from "react";
1449
1447
  import { jsx as jsx18 } from "react/jsx-runtime";
@@ -1602,12 +1600,14 @@ function NetworkSelectionItem(props) {
1602
1600
  network,
1603
1601
  disabled = false,
1604
1602
  variant = "default",
1605
- isActive
1603
+ isActive,
1604
+ SecondaryContent
1606
1605
  } = _a, PROPS = __objRest(_a, [
1607
1606
  "network",
1608
1607
  "disabled",
1609
1608
  "variant",
1610
- "isActive"
1609
+ "isActive",
1610
+ "SecondaryContent"
1611
1611
  ]);
1612
1612
  const buttonRef = React5.useRef(null);
1613
1613
  const is_default_mode = variant === "default";
@@ -1647,7 +1647,7 @@ function NetworkSelectionItem(props) {
1647
1647
  })
1648
1648
  ),
1649
1649
  is_default_mode ? /* @__PURE__ */ jsx19(IconButton, { className: "cursor-pointer group", variant: "secondary", children: isActive ? /* @__PURE__ */ jsx19(Check_default, { className: "size-4 text-white" }) : /* @__PURE__ */ jsx19(Circle_default, { className: "size-4 text-brand-black-100 group-hover:text-white duration-200 transition-colors" }) }) : null,
1650
- variant === "secondary" ? props.SecondaryContent : null
1650
+ variant === "secondary" ? SecondaryContent : null
1651
1651
  ]
1652
1652
  }
1653
1653
  );
@@ -3304,16 +3304,30 @@ var StatusTextMap = {
3304
3304
  upcoming: "Upcoming",
3305
3305
  error: "Failed"
3306
3306
  };
3307
- function TimelineItem(props) {
3308
- var _a, _b, _c, _d;
3309
- const { processingStatus, caption, durationMode = "none" } = props;
3307
+ var TimelineItem = React13.forwardRef(function TimelineItem2(props, ref) {
3308
+ var _b, _c, _d, _e;
3309
+ const _a = props, {
3310
+ processingStatus,
3311
+ caption,
3312
+ secondary,
3313
+ data,
3314
+ durationMode = "none"
3315
+ } = _a, REST = __objRest(_a, [
3316
+ "processingStatus",
3317
+ "caption",
3318
+ "secondary",
3319
+ "data",
3320
+ "durationMode"
3321
+ ]);
3310
3322
  const is_visually_active = processingStatus !== "upcoming";
3311
3323
  const id = React13.useId();
3312
3324
  const layoutId = `${id}/${caption}/content-2`;
3313
3325
  const hideTime = durationMode === "none";
3314
3326
  return /* @__PURE__ */ jsx36(
3315
3327
  motion3.li,
3316
- {
3328
+ __spreadProps(__spreadValues({
3329
+ ref
3330
+ }, REST), {
3317
3331
  "data-process-status": processingStatus,
3318
3332
  className: "block bg-brand-black-350 cursor-default select-none font-medium text-brand-white-500",
3319
3333
  children: /* @__PURE__ */ jsxs25(
@@ -3351,7 +3365,7 @@ function TimelineItem(props) {
3351
3365
  ),
3352
3366
  /* @__PURE__ */ jsxs25("div", { className: "flex flex-col flex-1 gap-[calc(4/16rem)]", children: [
3353
3367
  /* @__PURE__ */ jsx36("div", { className: "text-brand-white-500 text-[1rem] h-[1.25rem]", children: caption }),
3354
- /* @__PURE__ */ jsx36("div", { className: "text-xs h-[1rem] text-brand-black-100", children: processingStatus === "completed" ? ((_a = props.data) == null ? void 0 : _a.transactionUrl) ? /* @__PURE__ */ jsxs25(
3368
+ /* @__PURE__ */ jsx36("div", { className: "text-xs h-[1rem] text-brand-black-100", children: processingStatus === "completed" ? ((_b = props.data) == null ? void 0 : _b.transactionUrl) ? /* @__PURE__ */ jsxs25(
3355
3369
  "a",
3356
3370
  {
3357
3371
  href: props.data.transactionUrl,
@@ -3363,7 +3377,7 @@ function TimelineItem(props) {
3363
3377
  /* @__PURE__ */ jsx36(ArrowUpRight_default, { width: "0.75rem", height: "0.75rem" })
3364
3378
  ]
3365
3379
  }
3366
- ) : /* @__PURE__ */ jsx36("span", { children: props.secondary }) : /* @__PURE__ */ jsx36("span", { children: (_b = props == null ? void 0 : props.secondary) != null ? _b : StatusTextMap[processingStatus] }) })
3380
+ ) : /* @__PURE__ */ jsx36("span", { children: props.secondary }) : /* @__PURE__ */ jsx36("span", { children: (_c = props == null ? void 0 : props.secondary) != null ? _c : StatusTextMap[processingStatus] }) })
3367
3381
  ] }),
3368
3382
  /* @__PURE__ */ jsxs25(AnimatePresence2, { children: [
3369
3383
  processingStatus === "completed" ? /* @__PURE__ */ jsxs25(
@@ -3375,7 +3389,7 @@ function TimelineItem(props) {
3375
3389
  exit: { x: 10, opacity: 0 },
3376
3390
  className: "flex gap-[calc(8rem/16)] items-center",
3377
3391
  children: [
3378
- !hideTime && /* @__PURE__ */ jsx36("span", { className: "text-[calc(13rem/16)] text-brand-black-100", children: (_c = props == null ? void 0 : props.data) == null ? void 0 : _c.completedIn }),
3392
+ !hideTime && /* @__PURE__ */ jsx36("span", { className: "text-[calc(13rem/16)] text-brand-black-100", children: (_d = props == null ? void 0 : props.data) == null ? void 0 : _d.completedIn }),
3379
3393
  /* @__PURE__ */ jsx36(
3380
3394
  Check_default,
3381
3395
  {
@@ -3396,7 +3410,7 @@ function TimelineItem(props) {
3396
3410
  layoutId,
3397
3411
  className: "flex gap-[calc(10rem/16)] items-center",
3398
3412
  children: [
3399
- !hideTime && /* @__PURE__ */ jsx36("span", { className: "text-[calc(13rem/16)]", children: (_d = props == null ? void 0 : props.data) == null ? void 0 : _d.eta }),
3413
+ !hideTime && /* @__PURE__ */ jsx36("span", { className: "text-[calc(13rem/16)]", children: (_e = props == null ? void 0 : props.data) == null ? void 0 : _e.eta }),
3400
3414
  /* @__PURE__ */ jsx36(
3401
3415
  Loader2,
3402
3416
  {
@@ -3411,9 +3425,9 @@ function TimelineItem(props) {
3411
3425
  ]
3412
3426
  }
3413
3427
  )
3414
- }
3428
+ })
3415
3429
  );
3416
- }
3430
+ });
3417
3431
  function TimelineListGroup(props) {
3418
3432
  return /* @__PURE__ */ jsx36("ul", { className: cn("flex flex-col overflow-hidden"), children: props.children });
3419
3433
  }
@@ -3835,9 +3849,8 @@ var currencyFormat = new Intl.NumberFormat("en-US", {
3835
3849
  });
3836
3850
  function Balance(props) {
3837
3851
  const { prefix = "$", suffix = "", formatter = currencyFormat } = props;
3838
- const [int_, decimal] = String(props.amount).split(".");
3839
- const int = Number.isNaN(+int_) ? 0 : int_;
3840
3852
  const is_zero = props.amount === 0;
3853
+ const [int_, fraction] = formatter.format(props.amount).split(".");
3841
3854
  return /* @__PURE__ */ jsx40("div", { className: "select-none", children: /* @__PURE__ */ jsxs28("span", { className: "text-[2.375rem] font-medium leading-[2.875rem] whitespace-nowrap", children: [
3842
3855
  /* @__PURE__ */ jsxs28(
3843
3856
  "span",
@@ -3847,13 +3860,13 @@ function Balance(props) {
3847
3860
  ),
3848
3861
  children: [
3849
3862
  prefix,
3850
- formatter.format(+int)
3863
+ int_
3851
3864
  ]
3852
3865
  }
3853
3866
  ),
3854
3867
  /* @__PURE__ */ jsxs28("span", { className: "text-brand-black-100", children: [
3855
3868
  ".",
3856
- decimal != null ? decimal : "00"
3869
+ fraction != null ? fraction : "00"
3857
3870
  ] }),
3858
3871
  /* @__PURE__ */ jsxs28("span", { className: "text-brand-white-500", children: [
3859
3872
  "\xA0",
@@ -4095,7 +4108,7 @@ var AccountStack = React14.forwardRef(
4095
4108
  children: /* @__PURE__ */ jsx41(Wallet_default, { className: "size-5" })
4096
4109
  }
4097
4110
  ),
4098
- /* @__PURE__ */ jsx41("p", { className: "text-base font-medium text-brand-white-100", children: "Connect Your Wallet" })
4111
+ /* @__PURE__ */ jsx41("p", { className: "text-base font-medium text-brand-white-100", children: "Select an account" })
4099
4112
  ] }) });
4100
4113
  }
4101
4114
  );
@@ -4692,6 +4705,10 @@ function HBDrawerDescription(_a) {
4692
4705
  // src/components/organisms/manage-account.tsx
4693
4706
  import { jsx as jsx48, jsxs as jsxs34 } from "react/jsx-runtime";
4694
4707
  function ManageAccounts() {
4708
+ console.warn("ManageAccounts is deprecated");
4709
+ return null;
4710
+ }
4711
+ function HeaderChooseProvider() {
4695
4712
  return /* @__PURE__ */ jsxs34(SheetHeader, { className: "p-[1rem] -mx-[1rem]", children: [
4696
4713
  /* @__PURE__ */ jsxs34("div", { className: "flex items-center gap-[0.625rem] select-none", children: [
4697
4714
  /* @__PURE__ */ jsx48(
@@ -5242,6 +5259,7 @@ export {
5242
5259
  HBDrawerTitle,
5243
5260
  HBDrawerTrigger,
5244
5261
  Header,
5262
+ HeaderChooseProvider,
5245
5263
  HeaderContent,
5246
5264
  HeaderGradient,
5247
5265
  HeaderNested,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hyperbridge/ui",
3
- "version": "0.0.14",
3
+ "version": "0.0.16",
4
4
  "sideEffects": false,
5
5
  "license": "MIT",
6
6
  "private": false,
@@ -33,8 +33,8 @@
33
33
  "typescript": "5.8.3",
34
34
  "vite": "^6.3.4",
35
35
  "vitest": "^3.1.2",
36
- "@repo/eslint-config": "0.0.0",
37
- "@repo/typescript-config": "0.0.0"
36
+ "@repo/typescript-config": "0.0.0",
37
+ "@repo/eslint-config": "0.0.0"
38
38
  },
39
39
  "dependencies": {
40
40
  "@radix-ui/react-dialog": "^1.1.14",