@orderly.network/ui-transfer 3.0.4 → 3.1.0-alpha.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.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import { i18n, useTranslation, Trans } from '@orderly.network/i18n';
2
- import { registerSimpleDialog, registerSimpleSheet, Tabs, TabPanel, ArrowDownSquareFillIcon, ArrowUpSquareFillIcon, ExtensionSlot, ExtensionPositionEnum, Box, textVariants, Flex, toast, Text, cn, Button, Spinner, Select, Input, inputFormatter, useScreen, modal, Tooltip, Tips, AlertDialog, EditIcon, ArrowLeftRightIcon, WalletIcon, DropdownMenuRoot, DropdownMenuTrigger, DropdownMenuPortal, DropdownMenuContent, ScrollArea, ChainIcon, Badge, CaretUpIcon, CaretDownIcon, SimpleDialog, CloseRoundFillIcon, ExclamationFillIcon, TokenIcon, WarningIcon, SelectItem, ChevronRightIcon, Checkbox, CloseIcon } from '@orderly.network/ui';
2
+ import { registerSimpleDialog, registerSimpleSheet, Tabs, TabPanel, ArrowDownSquareFillIcon, ArrowUpSquareFillIcon, ExtensionSlot, ExtensionPositionEnum, Box, textVariants, Flex, toast, Text, cn, Button, useDocumentDirection, Spinner, Select, Input, inputFormatter, useScreen, modal, Tooltip, Tips, AlertDialog, EditIcon, ArrowLeftRightIcon, WalletIcon, DropdownMenuRoot, DropdownMenuTrigger, DropdownMenuPortal, DropdownMenuContent, ScrollArea, ChainIcon, Badge, CaretUpIcon, CaretDownIcon, SimpleDialog, CloseRoundFillIcon, ExclamationFillIcon, TokenIcon, WarningIcon, SelectItem, ChevronRightIcon, Checkbox, CloseIcon } from '@orderly.network/ui';
3
3
  import { forwardRef, useState, isValidElement, useMemo, useEffect, useCallback, useRef } from 'react';
4
4
  import { useConfig, useWalletConnector, useLocalStorage, useConvert, useOdosQuote, useComputedLTV, useAccount, useAppStore, useTransfer, useSubAccountDataObserver, useSubAccountMaxWithdrawal, useTokensInfo, useEventEmitter, usePositionStream, useIndexPricesStream, useOrderlyContext, useDeposit, useAssetsHistory, useChains, useMemoizedFn, useWithdraw, useWalletTopic, useQuery, useSWR, useTokenInfo, useHoldingStream, useInternalTransfer, useDebouncedCallback, usePrivateQuery, useTransferHistory, useBalanceTopic } from '@orderly.network/hooks';
5
5
  import { Decimal, zero, praseChainIdToNumber, int2hex, toNonExponential, formatWithPrecision, isSolana } from '@orderly.network/utils';
@@ -102,7 +102,7 @@ var LtvUI = (props) => {
102
102
  ltv_threshold
103
103
  }
104
104
  ),
105
- children: /* @__PURE__ */ jsx(TooltipIcon, { className: "oui-ml-[2px] oui-cursor-pointer oui-text-base-contrast-36" })
105
+ children: /* @__PURE__ */ jsx(TooltipIcon, { className: "oui-ms-[2px] oui-cursor-pointer oui-text-base-contrast-36" })
106
106
  }
107
107
  )
108
108
  ] }),
@@ -243,6 +243,8 @@ var AvailableQuantity = (props) => {
243
243
  const { quantity, maxQuantity, token, loading } = props;
244
244
  const { t } = useTranslation();
245
245
  const { isMobile } = useScreen();
246
+ const dir = useDocumentDirection();
247
+ const isRTL = dir === "rtl";
246
248
  const { getIndexPrice } = useIndexPricesStream();
247
249
  const name = token?.display_name || token?.symbol || "";
248
250
  const dp = token?.precision ?? token?.decimals ?? 2;
@@ -260,84 +262,100 @@ var AvailableQuantity = (props) => {
260
262
  "$",
261
263
  /* @__PURE__ */ jsx(Text.numeral, { dp: 2, padding: false, rm: Decimal.ROUND_DOWN, children: notional })
262
264
  ] }),
263
- /* @__PURE__ */ jsxs(Flex, { gapX: 2, itemAlign: "center", className: "oui-ml-auto", children: [
264
- /* @__PURE__ */ jsxs(Flex, { gapX: 1, itemAlign: "center", children: [
265
- props.tooltipContent ? isMobile ? /* @__PURE__ */ jsx(
266
- "button",
267
- {
268
- type: "button",
269
- className: "oui-p-0",
270
- onClick: () => {
271
- if (token?.symbol) {
272
- const anyToken = token;
273
- modal.alert({
274
- title: t("common.tips"),
275
- message: /* @__PURE__ */ jsx(
276
- AvailableTooltipMessage,
277
- {
278
- tokenSymbol: token.symbol,
279
- decimals: anyToken?.token_decimal ?? token.decimals ?? token.precision
280
- }
281
- )
282
- });
283
- } else {
284
- modal.alert({
285
- title: t("common.tips"),
286
- message: props.tooltipContent
287
- });
288
- }
289
- },
290
- children: /* @__PURE__ */ jsx(
291
- Text,
292
- {
293
- size: "2xs",
294
- intensity: 36,
295
- className: "oui-cursor-pointer oui-border-b oui-border-dashed oui-border-line-12",
296
- children: `${t("common.available")}: `
297
- }
298
- )
299
- }
300
- ) : /* @__PURE__ */ jsx(
301
- Tooltip,
302
- {
303
- content: props.tooltipContent,
304
- className: "oui-max-w-[274px]",
305
- children: /* @__PURE__ */ jsx(
306
- Text,
307
- {
308
- size: "2xs",
309
- intensity: 36,
310
- className: "oui-cursor-pointer oui-border-b oui-border-dashed oui-border-line-12",
311
- children: `${t("common.available")}: `
312
- }
313
- )
314
- }
315
- ) : /* @__PURE__ */ jsx(Text, { size: "2xs", intensity: 36, children: `${t("common.available")}: ` }),
316
- loading ? /* @__PURE__ */ jsx(Spinner, { size: "sm" }) : /* @__PURE__ */ jsx(
317
- Text.numeral,
318
- {
319
- size: "2xs",
320
- intensity: 36,
321
- rm: Decimal.ROUND_DOWN,
322
- dp,
323
- padding: false,
324
- "data-testid": "oui-testid-withdraw_deposit-dialog-available-value",
325
- children: maxQuantity
326
- }
327
- ),
328
- /* @__PURE__ */ jsx(Text, { size: "2xs", intensity: 36, children: ` ${name}` })
329
- ] }),
330
- /* @__PURE__ */ jsx(
331
- Text,
332
- {
333
- size: "2xs",
334
- color: "primary",
335
- className: "oui-cursor-pointer oui-select-none",
336
- onClick: props.onClick,
337
- children: t("common.max")
338
- }
339
- )
340
- ] })
265
+ /* @__PURE__ */ jsxs(
266
+ Flex,
267
+ {
268
+ gapX: 2,
269
+ itemAlign: "center",
270
+ className: cn("oui-ms-auto", isRTL && "oui-flex-row-reverse"),
271
+ children: [
272
+ /* @__PURE__ */ jsxs(
273
+ Flex,
274
+ {
275
+ gapX: 1,
276
+ itemAlign: "center",
277
+ className: cn(isRTL && "oui-flex-row-reverse"),
278
+ children: [
279
+ props.tooltipContent ? isMobile ? /* @__PURE__ */ jsx(
280
+ "button",
281
+ {
282
+ type: "button",
283
+ className: "oui-p-0",
284
+ onClick: () => {
285
+ if (token?.symbol) {
286
+ const anyToken = token;
287
+ modal.alert({
288
+ title: t("common.tips"),
289
+ message: /* @__PURE__ */ jsx(
290
+ AvailableTooltipMessage,
291
+ {
292
+ tokenSymbol: token.symbol,
293
+ decimals: anyToken?.token_decimal ?? token.decimals ?? token.precision
294
+ }
295
+ )
296
+ });
297
+ } else {
298
+ modal.alert({
299
+ title: t("common.tips"),
300
+ message: props.tooltipContent
301
+ });
302
+ }
303
+ },
304
+ children: /* @__PURE__ */ jsx(
305
+ Text,
306
+ {
307
+ size: "2xs",
308
+ intensity: 36,
309
+ className: "oui-cursor-pointer oui-border-b oui-border-dashed oui-border-line-12",
310
+ children: `${t("common.available")}: `
311
+ }
312
+ )
313
+ }
314
+ ) : /* @__PURE__ */ jsx(
315
+ Tooltip,
316
+ {
317
+ content: props.tooltipContent,
318
+ className: "oui-max-w-[274px]",
319
+ children: /* @__PURE__ */ jsx(
320
+ Text,
321
+ {
322
+ size: "2xs",
323
+ intensity: 36,
324
+ className: "oui-cursor-pointer oui-border-b oui-border-dashed oui-border-line-12",
325
+ children: `${t("common.available")}: `
326
+ }
327
+ )
328
+ }
329
+ ) : /* @__PURE__ */ jsx(Text, { size: "2xs", intensity: 36, children: `${t("common.available")}: ` }),
330
+ loading ? /* @__PURE__ */ jsx(Spinner, { size: "sm" }) : /* @__PURE__ */ jsx(
331
+ Text.numeral,
332
+ {
333
+ size: "2xs",
334
+ intensity: 36,
335
+ rm: Decimal.ROUND_DOWN,
336
+ dp,
337
+ padding: false,
338
+ "data-testid": "oui-testid-withdraw_deposit-dialog-available-value",
339
+ children: maxQuantity
340
+ }
341
+ ),
342
+ /* @__PURE__ */ jsx(Text, { size: "2xs", intensity: 36, children: ` ${name}` })
343
+ ]
344
+ }
345
+ ),
346
+ /* @__PURE__ */ jsx(
347
+ Text,
348
+ {
349
+ size: "2xs",
350
+ color: "primary",
351
+ className: cn("oui-cursor-pointer oui-select-none"),
352
+ onClick: props.onClick,
353
+ children: t("common.max")
354
+ }
355
+ )
356
+ ]
357
+ }
358
+ )
341
359
  ] });
342
360
  };
343
361
  var BrokerWallet = () => {
@@ -411,6 +429,8 @@ var ChainSelect = (props) => {
411
429
  const { chains, value, wrongNetwork, loading, disabled } = props;
412
430
  const [open, setOpen] = useState(false);
413
431
  const { t } = useTranslation();
432
+ const dir = useDocumentDirection();
433
+ const isRTL = dir === "rtl";
414
434
  const selectable = wrongNetwork || chains?.length > 1;
415
435
  const chainIcon = wrongNetwork ? /* @__PURE__ */ jsx(
416
436
  Flex,
@@ -451,11 +471,19 @@ var ChainSelect = (props) => {
451
471
  children: [
452
472
  /* @__PURE__ */ jsxs("div", { children: [
453
473
  /* @__PURE__ */ jsx(Flex, { children: /* @__PURE__ */ jsx(Text, { size: "2xs", intensity: 54, children: t("transfer.network") }) }),
454
- /* @__PURE__ */ jsxs(Flex, { gapX: 1, itemAlign: "center", children: [
455
- chainIcon,
456
- /* @__PURE__ */ jsx(Text, { size: "sm", intensity: 80, children: chainName }),
457
- !isCurrentChainSupported && /* @__PURE__ */ jsx(Badge, { color: "danger", size: "xs", children: t("common.notSupported") })
458
- ] })
474
+ /* @__PURE__ */ jsxs(
475
+ Flex,
476
+ {
477
+ direction: isRTL ? "rowReverse" : "row",
478
+ gapX: 1,
479
+ itemAlign: "center",
480
+ children: [
481
+ chainIcon,
482
+ /* @__PURE__ */ jsx(Text, { size: "sm", intensity: 80, children: chainName }),
483
+ !isCurrentChainSupported && /* @__PURE__ */ jsx(Badge, { color: "danger", size: "xs", children: t("common.notSupported") })
484
+ ]
485
+ }
486
+ )
459
487
  ] }),
460
488
  renderRightIcon()
461
489
  ]
@@ -470,6 +498,7 @@ var ChainSelect = (props) => {
470
498
  {
471
499
  px: 2,
472
500
  r: "base",
501
+ direction: isRTL ? "rowReverse" : "row",
473
502
  justify: "between",
474
503
  itemAlign: "center",
475
504
  className: cn(
@@ -485,17 +514,25 @@ var ChainSelect = (props) => {
485
514
  await props.onValueChange(chain);
486
515
  },
487
516
  children: [
488
- /* @__PURE__ */ jsxs(Flex, { gapX: 1, itemAlign: "center", children: [
489
- /* @__PURE__ */ jsx(
490
- ChainIcon,
491
- {
492
- className: cn("oui-size-[18px]", !isSupported && "oui-opacity-50"),
493
- chainId: chain.chain_id
494
- }
495
- ),
496
- /* @__PURE__ */ jsx(Text, { size: "2xs", intensity: isSupported ? 54 : 36, children: chain.name }),
497
- !isSupported && /* @__PURE__ */ jsx(Badge, { color: "danger", size: "xs", children: t("common.notSupported") })
498
- ] }),
517
+ /* @__PURE__ */ jsxs(
518
+ Flex,
519
+ {
520
+ direction: isRTL ? "rowReverse" : "row",
521
+ gapX: 1,
522
+ itemAlign: "center",
523
+ children: [
524
+ /* @__PURE__ */ jsx(
525
+ ChainIcon,
526
+ {
527
+ className: cn("oui-size-[18px]", !isSupported && "oui-opacity-50"),
528
+ chainId: chain.chain_id
529
+ }
530
+ ),
531
+ /* @__PURE__ */ jsx(Text, { size: "2xs", intensity: isSupported ? 54 : 36, children: chain.name }),
532
+ !isSupported && /* @__PURE__ */ jsx(Badge, { color: "danger", size: "xs", children: t("common.notSupported") })
533
+ ]
534
+ }
535
+ ),
499
536
  isActive && /* @__PURE__ */ jsx(
500
537
  Box,
501
538
  {
@@ -516,7 +553,7 @@ var ChainSelect = (props) => {
516
553
  DropdownMenuContent,
517
554
  {
518
555
  onCloseAutoFocus: (e) => e.preventDefault(),
519
- align: "start",
556
+ align: isRTL ? "end" : "start",
520
557
  sideOffset: 2,
521
558
  className: cn(
522
559
  "oui-deposit-token-select-dropdown-menu-content",
@@ -573,7 +610,7 @@ var CollateralRatioUI = (props) => {
573
610
  return /* @__PURE__ */ jsxs(Flex, { width: "100%", itemAlign: "center", justify: "between", children: [
574
611
  /* @__PURE__ */ jsxs(Flex, { justify: "start", itemAlign: "center", children: [
575
612
  /* @__PURE__ */ jsx(Text, { size: "2xs", intensity: 36, children: t("portfolio.overview.column.collateralRatio") }),
576
- /* @__PURE__ */ jsx(Tooltip, { className: "oui-p-2", content: /* @__PURE__ */ jsx(TooltipContent2, {}), children: /* @__PURE__ */ jsx(TooltipIcon, { className: "oui-ml-[2px] oui-cursor-pointer oui-text-base-contrast-36" }) })
613
+ /* @__PURE__ */ jsx(Tooltip, { className: "oui-p-2", content: /* @__PURE__ */ jsx(TooltipContent2, {}), children: /* @__PURE__ */ jsx(TooltipIcon, { className: "oui-ms-[2px] oui-cursor-pointer oui-text-base-contrast-36" }) })
577
614
  ] }),
578
615
  /* @__PURE__ */ jsx(
579
616
  Text.numeral,
@@ -715,7 +752,7 @@ var NetworkTokenSelect = ({
715
752
  return /* @__PURE__ */ jsxs(Fragment, { children: [
716
753
  /* @__PURE__ */ jsxs(Flex, { className: "oui-w-full", justify: "between", itemAlign: "center", children: [
717
754
  /* @__PURE__ */ jsx(Text, { size: "xs", intensity: 36, children: t("common.network") }),
718
- /* @__PURE__ */ jsx(Box, { className: "oui-ml-auto", children: /* @__PURE__ */ jsx(
755
+ /* @__PURE__ */ jsx(Box, { className: "oui-ms-auto", children: /* @__PURE__ */ jsx(
719
756
  Select,
720
757
  {
721
758
  size: "xs",
@@ -723,7 +760,7 @@ var NetworkTokenSelect = ({
723
760
  onValueChange: onNetworkChange,
724
761
  placeholder: t("transfer.exclusiveDeposit.selectNetwork"),
725
762
  variant: "text",
726
- classNames: { trigger: "oui-pr-0" },
763
+ classNames: { trigger: "oui-pe-0" },
727
764
  maxHeight: 128,
728
765
  contentProps: selectContentProps,
729
766
  children: networkOptions.map((opt) => /* @__PURE__ */ jsx(SelectItem, { value: opt.value, children: /* @__PURE__ */ jsxs(Flex, { gap: 1, itemAlign: "center", children: [
@@ -735,7 +772,7 @@ var NetworkTokenSelect = ({
735
772
  ] }),
736
773
  /* @__PURE__ */ jsxs(Flex, { className: "oui-w-full", justify: "between", itemAlign: "center", children: [
737
774
  /* @__PURE__ */ jsx(Text, { size: "xs", intensity: 36, children: t("common.token") }),
738
- /* @__PURE__ */ jsx(Box, { className: "oui-ml-auto", children: /* @__PURE__ */ jsx(
775
+ /* @__PURE__ */ jsx(Box, { className: "oui-ms-auto", children: /* @__PURE__ */ jsx(
739
776
  Select,
740
777
  {
741
778
  size: "xs",
@@ -743,7 +780,7 @@ var NetworkTokenSelect = ({
743
780
  onValueChange: onTokenChange,
744
781
  placeholder: t("transfer.exclusiveDeposit.selectToken"),
745
782
  variant: "text",
746
- classNames: { trigger: "oui-pr-0" },
783
+ classNames: { trigger: "oui-pe-0" },
747
784
  maxHeight: 128,
748
785
  contentProps: selectContentProps,
749
786
  children: tokenOptions.map((opt) => /* @__PURE__ */ jsx(SelectItem, { value: opt.value, children: /* @__PURE__ */ jsxs(Flex, { gap: 1, itemAlign: "center", children: [
@@ -1184,12 +1221,15 @@ var TokenOption = (props) => {
1184
1221
  } = props;
1185
1222
  const { symbol, precision, insufficientBalance } = token;
1186
1223
  const { apy } = useYieldAPY(symbol);
1224
+ const dir = useDocumentDirection();
1225
+ const isRTL = dir === "rtl";
1187
1226
  const showAPY = isYieldBearingAsset(symbol) && apy !== null;
1188
1227
  const { t } = useTranslation();
1189
1228
  if (displayType === "vaultBalance" && insufficientBalance) {
1190
1229
  return /* @__PURE__ */ jsx(
1191
1230
  Flex,
1192
1231
  {
1232
+ direction: isRTL ? "rowReverse" : "row",
1193
1233
  itemAlign: "center",
1194
1234
  justify: "between",
1195
1235
  px: 2,
@@ -1202,18 +1242,26 @@ var TokenOption = (props) => {
1202
1242
  props.index !== 0 && "oui-mt-[2px]",
1203
1243
  "oui-cursor-not-allowed"
1204
1244
  ),
1205
- children: /* @__PURE__ */ jsxs(Flex, { itemAlign: "center", gapX: 1, children: [
1206
- /* @__PURE__ */ jsx(
1207
- TokenIcon,
1208
- {
1209
- url: token.logo_uri,
1210
- name: symbol,
1211
- className: "oui-size-[16px] oui-opacity-50"
1212
- }
1213
- ),
1214
- /* @__PURE__ */ jsx(Text, { intensity: 36, className: "oui-max-w-[200px] oui-truncate", children: token.label }),
1215
- /* @__PURE__ */ jsx(Badge, { color: "neutral", size: "xs", children: t("transfer.withdraw.InsufficientVaultBalance") })
1216
- ] })
1245
+ children: /* @__PURE__ */ jsxs(
1246
+ Flex,
1247
+ {
1248
+ direction: isRTL ? "rowReverse" : "row",
1249
+ itemAlign: "center",
1250
+ gapX: 1,
1251
+ children: [
1252
+ /* @__PURE__ */ jsx(
1253
+ TokenIcon,
1254
+ {
1255
+ url: token.logo_uri,
1256
+ name: symbol,
1257
+ className: "oui-size-[16px] oui-opacity-50"
1258
+ }
1259
+ ),
1260
+ /* @__PURE__ */ jsx(Text, { intensity: 36, className: "oui-max-w-[200px] oui-truncate", children: token.label }),
1261
+ /* @__PURE__ */ jsx(Badge, { color: "neutral", size: "xs", children: t("transfer.withdraw.InsufficientVaultBalance") })
1262
+ ]
1263
+ }
1264
+ )
1217
1265
  },
1218
1266
  symbol
1219
1267
  );
@@ -1243,6 +1291,7 @@ var TokenOption = (props) => {
1243
1291
  return /* @__PURE__ */ jsxs(
1244
1292
  Flex,
1245
1293
  {
1294
+ direction: isRTL ? "rowReverse" : "row",
1246
1295
  justify: "between",
1247
1296
  px: 2,
1248
1297
  r: "base",
@@ -1258,40 +1307,48 @@ var TokenOption = (props) => {
1258
1307
  onTokenChange?.(token);
1259
1308
  },
1260
1309
  children: [
1261
- /* @__PURE__ */ jsxs(Flex, { gapX: 1, itemAlign: "center", children: [
1262
- /* @__PURE__ */ jsx(
1263
- TokenIcon,
1264
- {
1265
- name: symbol,
1266
- url: token.logo_uri,
1267
- className: "oui-size-[16px]"
1268
- }
1269
- ),
1270
- /* @__PURE__ */ jsx(
1271
- Text,
1272
- {
1273
- className: cn(
1274
- "oui-text-base-contrast-54 group-hover:oui-text-base-contrast-80",
1275
- isActive && "oui-text-base-contrast-80",
1276
- "oui-max-w-[200px] oui-truncate"
1310
+ /* @__PURE__ */ jsxs(
1311
+ Flex,
1312
+ {
1313
+ direction: isRTL ? "rowReverse" : "row",
1314
+ gapX: 1,
1315
+ itemAlign: "center",
1316
+ children: [
1317
+ /* @__PURE__ */ jsx(
1318
+ TokenIcon,
1319
+ {
1320
+ name: symbol,
1321
+ url: token.logo_uri,
1322
+ className: "oui-size-[16px]"
1323
+ }
1277
1324
  ),
1278
- children: token.label
1279
- }
1280
- ),
1281
- showAPY && /* @__PURE__ */ jsx(
1282
- Box,
1283
- {
1284
- height: 18,
1285
- px: 2,
1286
- r: "sm",
1287
- className: "oui-rounded-[4px] oui-bg-success/[0.15]",
1288
- children: /* @__PURE__ */ jsxs(Text, { size: "2xs", className: "oui-text-success", children: [
1289
- apy.toFixed(1),
1290
- "% APY"
1291
- ] })
1292
- }
1293
- )
1294
- ] }),
1325
+ /* @__PURE__ */ jsx(
1326
+ Text,
1327
+ {
1328
+ className: cn(
1329
+ "oui-text-base-contrast-54 group-hover:oui-text-base-contrast-80",
1330
+ isActive && "oui-text-base-contrast-80",
1331
+ "oui-max-w-[200px] oui-truncate"
1332
+ ),
1333
+ children: token.label
1334
+ }
1335
+ ),
1336
+ showAPY && /* @__PURE__ */ jsx(
1337
+ Box,
1338
+ {
1339
+ height: 18,
1340
+ px: 2,
1341
+ r: "sm",
1342
+ className: "oui-rounded-[4px] oui-bg-success/[0.15]",
1343
+ children: /* @__PURE__ */ jsxs(Text, { size: "2xs", className: "oui-text-success", children: [
1344
+ apy.toFixed(1),
1345
+ "% APY"
1346
+ ] })
1347
+ }
1348
+ )
1349
+ ]
1350
+ }
1351
+ ),
1295
1352
  renderValue()
1296
1353
  ]
1297
1354
  },
@@ -1322,6 +1379,7 @@ var QuantityInput = (props) => {
1322
1379
  ...rest
1323
1380
  } = props;
1324
1381
  const { t } = useTranslation();
1382
+ const dir = useDocumentDirection();
1325
1383
  const inputRef = useRef(null);
1326
1384
  const [open, setOpen] = useState(false);
1327
1385
  const [width, setWidth] = useState(0);
@@ -1372,7 +1430,7 @@ var QuantityInput = (props) => {
1372
1430
  /* @__PURE__ */ jsx(Box, { className: "oui-absolute oui-top-0", children: /* @__PURE__ */ jsx(Text, { size: "2xs", intensity: 36, children: label || t("common.quantity") }) }),
1373
1431
  loading && /* @__PURE__ */ jsx(Box, { className: "oui-absolute oui-bottom-1", children: /* @__PURE__ */ jsx(Spinner, { size: "sm" }) })
1374
1432
  ] });
1375
- const suffix = /* @__PURE__ */ jsx("div", { className: "oui-absolute oui-right-0", children: /* @__PURE__ */ jsx(
1433
+ const suffix = /* @__PURE__ */ jsx("div", { className: "oui-absolute oui-end-0", children: /* @__PURE__ */ jsx(
1376
1434
  Select.tokens,
1377
1435
  {
1378
1436
  open: selectOpen,
@@ -1397,7 +1455,7 @@ var QuantityInput = (props) => {
1397
1455
  inputRef.current?.focus();
1398
1456
  },
1399
1457
  style: { width },
1400
- align: "end",
1458
+ align: dir === "rtl" ? "start" : "end",
1401
1459
  sideOffset: 5,
1402
1460
  className: "oui-border oui-border-line-6"
1403
1461
  }
@@ -1567,7 +1625,7 @@ var Slippage = (props) => {
1567
1625
  "oui-h-[40px] oui-w-[74px]"
1568
1626
  ),
1569
1627
  input: "oui-text-base-contrast",
1570
- additional: "oui-pl-1",
1628
+ additional: "oui-ps-1",
1571
1629
  suffix: "oui-text-base-contrast-36"
1572
1630
  }
1573
1631
  }
@@ -2187,7 +2245,7 @@ function useChainSelect() {
2187
2245
  }
2188
2246
  });
2189
2247
  },
2190
- [currentChain, setChain, findByChainId]
2248
+ [connectedChain, currentChain, findByChainId, setChain, t]
2191
2249
  );
2192
2250
  return {
2193
2251
  chains,
@@ -4126,7 +4184,7 @@ var useSwapDeposit = (options2) => {
4126
4184
  toast.error(err.message || t("common.somethingWentWrong"));
4127
4185
  throw err;
4128
4186
  }
4129
- }, [account2, brokerId, swapData, sourceToken, targetToken, depositFee]);
4187
+ }, [account2, brokerId, depositFee, sourceToken, swapData, t, targetToken]);
4130
4188
  return {
4131
4189
  swapPrice,
4132
4190
  swapQuantity,
@@ -4415,7 +4473,7 @@ var TextAreaInput = (props) => {
4415
4473
  textarea.style.height = `${textarea.scrollHeight}px`;
4416
4474
  }
4417
4475
  }, [value, selectedAccount?.address]);
4418
- const prefix = /* @__PURE__ */ jsx("div", { className: "oui-absolute oui-left-3 oui-top-0.5 oui-z-[1]", children: /* @__PURE__ */ jsx(Text, { size: "2xs", intensity: 36, children: label }) });
4476
+ const prefix = /* @__PURE__ */ jsx("div", { className: "oui-absolute oui-start-3 oui-top-0.5 oui-z-[1]", children: /* @__PURE__ */ jsx(Text, { size: "2xs", intensity: 36, children: label }) });
4419
4477
  const message = /* @__PURE__ */ jsxs(Flex, { mb: 1, gapX: 1, px: 1, children: [
4420
4478
  /* @__PURE__ */ jsx(
4421
4479
  Box,
@@ -4498,7 +4556,7 @@ var TextAreaInput = (props) => {
4498
4556
  ]
4499
4557
  }
4500
4558
  ) }),
4501
- enableAccountLookup && /* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx("span", { className: "oui-absolute oui-left-0 oui-bottom-0 oui-w-0 oui-h-0" }) })
4559
+ enableAccountLookup && /* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx("span", { className: "oui-absolute oui-start-0 oui-bottom-0 oui-w-0 oui-h-0" }) })
4502
4560
  ]
4503
4561
  }
4504
4562
  )
@@ -4997,7 +5055,8 @@ var useVaultBalance = (inputs) => {
4997
5055
  crossChainWithdraw,
4998
5056
  chainName,
4999
5057
  sourceToken,
5000
- chainVaultBalance
5058
+ chainVaultBalance,
5059
+ t
5001
5060
  ]);
5002
5061
  const vaultBalanceListFilterCCTP = useMemo(() => {
5003
5062
  if (cctpSupportedChains.includes(currentChain?.id)) {
@@ -5220,7 +5279,7 @@ var useWithdrawLTV = (params) => {
5220
5279
  }
5221
5280
  }
5222
5281
  return "";
5223
- }, [nextLTV, ltv_threshold]);
5282
+ }, [ltv_threshold, nextLTV, t]);
5224
5283
  return {
5225
5284
  currentLTV,
5226
5285
  nextLTV,
@@ -5947,9 +6006,9 @@ var AddWalletDialog = ({
5947
6006
  onValueChange: onAddressChange,
5948
6007
  autoFocus: true,
5949
6008
  color: showBorderDanger ? "danger" : void 0,
5950
- className: cn("oui-bg-base-6 oui-bg-transparent"),
6009
+ className: "oui-bg-base-6",
5951
6010
  classNames: { input: "oui-text-base-contrast" },
5952
- suffix: address && /* @__PURE__ */ jsx(Box, { className: "oui-ml-2.5 oui-mr-2 oui-cursor-pointer", children: /* @__PURE__ */ jsx(
6011
+ suffix: address && /* @__PURE__ */ jsx(Box, { className: "oui-ms-2.5 oui-me-2 oui-cursor-pointer", children: /* @__PURE__ */ jsx(
5953
6012
  CloseRoundFillIcon,
5954
6013
  {
5955
6014
  size: 16,
@@ -6030,6 +6089,8 @@ var WalletSelector = ({
6030
6089
  }) => {
6031
6090
  const { t } = useTranslation();
6032
6091
  const [isOpen, setIsOpen] = useState(false);
6092
+ const dir = useDocumentDirection();
6093
+ const isRTL = dir === "rtl";
6033
6094
  const currentNetwork = useMemo(() => {
6034
6095
  if (!connectedWallet?.namespace) return void 0;
6035
6096
  const ns = connectedWallet.namespace.toLowerCase();
@@ -6077,7 +6138,7 @@ var WalletSelector = ({
6077
6138
  const dropdownContent = /* @__PURE__ */ jsx(DropdownMenuPortal, { children: /* @__PURE__ */ jsxs(
6078
6139
  DropdownMenuContent,
6079
6140
  {
6080
- align: "end",
6141
+ align: isRTL ? "start" : "end",
6081
6142
  className: "oui-max-h-[240px] oui-overflow-y-auto oui-custom-scrollbar",
6082
6143
  children: [
6083
6144
  showConnectedItem && connectedWallet && /* @__PURE__ */ jsx(
@@ -6131,6 +6192,7 @@ var WalletSelector = ({
6131
6192
  children: /* @__PURE__ */ jsxs(
6132
6193
  Flex,
6133
6194
  {
6195
+ direction: isRTL ? "rowReverse" : "row",
6134
6196
  itemAlign: "center",
6135
6197
  gapX: 1,
6136
6198
  className: "oui-text-primary oui-font-semibold oui-tracking-[0.03em]",
@@ -6148,20 +6210,29 @@ var WalletSelector = ({
6148
6210
  return /* @__PURE__ */ jsxs(Flex, { justify: "between", className: "oui-w-full oui-mb-3", children: [
6149
6211
  /* @__PURE__ */ jsx(Text, { size: "2xs", intensity: 36, children: t("common.wallet") }),
6150
6212
  /* @__PURE__ */ jsxs(DropdownMenuRoot, { open: isOpen, onOpenChange: setIsOpen, children: [
6151
- /* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxs("div", { className: "oui-flex oui-items-center oui-gap-1 oui-cursor-pointer oui-text-base-contrast-54 hover:oui-text-base-contrast-80", children: [
6152
- selectedWalletOpt?.name && /* @__PURE__ */ jsx(WalletIcon, { name: selectedWalletOpt.name, size: "3xs" }),
6153
- /* @__PURE__ */ jsx(Text.formatted, { size: "2xs", intensity: 54, rule: "address", children: selectedWalletOpt?.address || "" }),
6154
- /* @__PURE__ */ jsx(
6155
- Text,
6156
- {
6157
- size: "2xs",
6158
- intensity: 54,
6159
- className: "oui-text-base-contrast-36",
6160
- children: ` (${getChainLabel(selectedWalletOpt?.network)})`
6161
- }
6162
- ),
6163
- isOpen ? /* @__PURE__ */ jsx(CaretUpIcon, { size: 12, className: "oui-text-inherit" }) : /* @__PURE__ */ jsx(CaretDownIcon, { size: 12, className: "oui-text-inherit" })
6164
- ] }) }),
6213
+ /* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
6214
+ "div",
6215
+ {
6216
+ className: cn(
6217
+ "oui-flex oui-items-center oui-gap-1 oui-cursor-pointer oui-text-base-contrast-54 hover:oui-text-base-contrast-80",
6218
+ isRTL && "oui-flex-row-reverse"
6219
+ ),
6220
+ children: [
6221
+ selectedWalletOpt?.name && /* @__PURE__ */ jsx(WalletIcon, { name: selectedWalletOpt.name, size: "3xs" }),
6222
+ /* @__PURE__ */ jsx(Text.formatted, { size: "2xs", intensity: 54, rule: "address", children: selectedWalletOpt?.address || "" }),
6223
+ /* @__PURE__ */ jsx(
6224
+ Text,
6225
+ {
6226
+ size: "2xs",
6227
+ intensity: 54,
6228
+ className: "oui-text-base-contrast-36",
6229
+ children: ` (${getChainLabel(selectedWalletOpt?.network)})`
6230
+ }
6231
+ ),
6232
+ isOpen ? /* @__PURE__ */ jsx(CaretUpIcon, { size: 12, className: "oui-text-inherit" }) : /* @__PURE__ */ jsx(CaretDownIcon, { size: 12, className: "oui-text-inherit" })
6233
+ ]
6234
+ }
6235
+ ) }),
6165
6236
  dropdownContent
6166
6237
  ] })
6167
6238
  ] });
@@ -7023,7 +7094,7 @@ function useInputStatus(options2) {
7023
7094
  setHintMessage("");
7024
7095
  }
7025
7096
  }
7026
- }, [quantity, maxQuantity]);
7097
+ }, [maxQuantity, quantity, t, unsettledPnL]);
7027
7098
  return { inputStatus, hintMessage };
7028
7099
  }
7029
7100
  var TransferDialogId = "TransferDialogId";