@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 +12 -5
- package/dist/index.mjs +148 -130
- package/package.json +3 -3
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
|
|
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
|
-
|
|
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
|
|
1212
|
+
import { useEffect as useEffect3 } from "react";
|
|
1118
1213
|
|
|
1119
1214
|
// src/hooks/is-mobile.ts
|
|
1120
|
-
import { useEffect, useState as
|
|
1215
|
+
import { useEffect as useEffect2, useState as useState3 } from "react";
|
|
1121
1216
|
var useIsMobile = () => {
|
|
1122
|
-
const [isMobile, setIsMobile] =
|
|
1123
|
-
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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(
|
|
1277
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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
|
-
|
|
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__ */
|
|
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" ?
|
|
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
|
-
|
|
3308
|
-
var
|
|
3309
|
-
const
|
|
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" ? ((
|
|
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: (
|
|
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: (
|
|
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: (
|
|
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
|
-
|
|
3863
|
+
int_
|
|
3851
3864
|
]
|
|
3852
3865
|
}
|
|
3853
3866
|
),
|
|
3854
3867
|
/* @__PURE__ */ jsxs28("span", { className: "text-brand-black-100", children: [
|
|
3855
3868
|
".",
|
|
3856
|
-
|
|
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: "
|
|
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.
|
|
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/
|
|
37
|
-
"@repo/
|
|
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",
|