@orderly.network/ui 3.0.1 → 3.0.2-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
@@ -1446,25 +1446,50 @@ var ChainIcon = (props) => {
1446
1446
  }
1447
1447
  );
1448
1448
  };
1449
+ var BASE_URL = "https://oss.orderly.network/static";
1449
1450
  var TokenIcon = (props) => {
1450
- const url = useMemo(() => {
1451
+ const { primaryUrl, fallbackUrl } = useMemo(() => {
1451
1452
  if (props.url) {
1452
- return props.url;
1453
+ return { primaryUrl: props.url, fallbackUrl: props.url };
1453
1454
  }
1454
1455
  let name = props.name;
1456
+ let hasBroker = false;
1457
+ let brokerId;
1455
1458
  if (typeof props.symbol === "string") {
1456
- const arr = props.symbol?.split("_");
1457
- name = arr[1];
1459
+ const arr = props.symbol.split("_");
1460
+ if (arr.length >= 2) {
1461
+ name = arr[1];
1462
+ }
1463
+ brokerId = arr[3]?.trim();
1464
+ hasBroker = !!brokerId;
1465
+ }
1466
+ if (!name) {
1467
+ return { primaryUrl: void 0, fallbackUrl: void 0 };
1458
1468
  }
1459
- return `https://oss.orderly.network/static/symbol_logo/${name}.png`;
1469
+ const symbolUrl = `${BASE_URL}/symbol_logo/${name}.png`;
1470
+ const brokerName = hasBroker && brokerId ? `${name}_${brokerId}` : name;
1471
+ const brokerUrl = `${BASE_URL}/broker_symbol_logo/${brokerName}.png`;
1472
+ return {
1473
+ primaryUrl: hasBroker ? brokerUrl : symbolUrl,
1474
+ fallbackUrl: symbolUrl
1475
+ };
1460
1476
  }, [props.name, props.symbol, props.url]);
1477
+ const [currentSrc, setCurrentSrc] = useState(primaryUrl);
1478
+ useEffect(() => {
1479
+ setCurrentSrc(primaryUrl);
1480
+ }, [primaryUrl]);
1461
1481
  return /* @__PURE__ */ jsx(
1462
1482
  Avatar,
1463
1483
  {
1464
1484
  size: props.size,
1465
- src: url,
1485
+ src: currentSrc,
1466
1486
  alt: props.name,
1467
- className: props.className
1487
+ className: props.className,
1488
+ onLoadingStatusChange: (status) => {
1489
+ if (status === "error" && primaryUrl !== fallbackUrl) {
1490
+ setCurrentSrc((prev) => prev === primaryUrl ? fallbackUrl : prev);
1491
+ }
1492
+ }
1468
1493
  }
1469
1494
  );
1470
1495
  };
@@ -4744,7 +4769,7 @@ function useMediaQuery(query) {
4744
4769
 
4745
4770
  // src/hooks/useScreen.ts
4746
4771
  function useScreen() {
4747
- const isMobile = useMediaQuery("(max-width: 768px)");
4772
+ const isMobile = useMediaQuery("(max-width: 1023.98px)");
4748
4773
  return {
4749
4774
  isMobile,
4750
4775
  isDesktop: !isMobile
@@ -9317,13 +9342,13 @@ var DateRangePicker = (props) => {
9317
9342
  );
9318
9343
  const [isMobileView, setIsMobileView] = useState(false);
9319
9344
  const update = useDebouncedCallback((width) => {
9320
- setIsMobileView(width <= 768);
9345
+ setIsMobileView(width < 1024);
9321
9346
  }, 100);
9322
9347
  useEffect(() => {
9323
9348
  const handleResize = () => {
9324
9349
  update(window.innerWidth);
9325
9350
  };
9326
- setIsMobileView(window.innerWidth <= 768);
9351
+ setIsMobileView(window.innerWidth < 1024);
9327
9352
  window.addEventListener("resize", handleResize);
9328
9353
  return () => {
9329
9354
  window.removeEventListener("resize", handleResize);