@0xsquid/ui 2.2.11 → 2.3.1

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.
Files changed (43) hide show
  1. package/dist/cjs/index.js +147 -64
  2. package/dist/cjs/types/components/badges/ImageGroup.d.ts +6 -0
  3. package/dist/cjs/types/components/badges/index.d.ts +1 -0
  4. package/dist/cjs/types/components/buttons/AccountsButton.d.ts +6 -0
  5. package/dist/cjs/types/components/buttons/index.d.ts +2 -1
  6. package/dist/cjs/types/components/icons/Arrow.d.ts +2 -3
  7. package/dist/cjs/types/components/icons/Generic.d.ts +15 -0
  8. package/dist/cjs/types/components/layout/ImageStack.d.ts +4 -2
  9. package/dist/cjs/types/components/layout/Modal.d.ts +2 -1
  10. package/dist/cjs/types/components/layout/TokenDetailsView.d.ts +11 -5
  11. package/dist/cjs/types/components/layout/Transfer.d.ts +1 -1
  12. package/dist/cjs/types/components/navigation/Tabs.d.ts +18 -0
  13. package/dist/cjs/types/components/navigation/index.d.ts +1 -0
  14. package/dist/cjs/types/components/typography/CaptionText.d.ts +2 -1
  15. package/dist/cjs/types/services/internal/colorService.d.ts +2 -1
  16. package/dist/cjs/types/stories/badges/ImageGroup.stories.d.ts +6 -0
  17. package/dist/cjs/types/stories/buttons/AccountsButton.stories.d.ts +6 -0
  18. package/dist/cjs/types/stories/lists/TokenGroup.stories.d.ts +2 -0
  19. package/dist/cjs/types/stories/navigation/Tabs.stories.d.ts +7 -0
  20. package/dist/cjs/types/stories/views/SwapProgressView.stories.d.ts +1 -1
  21. package/dist/esm/index.js +141 -65
  22. package/dist/esm/types/components/badges/ImageGroup.d.ts +6 -0
  23. package/dist/esm/types/components/badges/index.d.ts +1 -0
  24. package/dist/esm/types/components/buttons/AccountsButton.d.ts +6 -0
  25. package/dist/esm/types/components/buttons/index.d.ts +2 -1
  26. package/dist/esm/types/components/icons/Arrow.d.ts +2 -3
  27. package/dist/esm/types/components/icons/Generic.d.ts +15 -0
  28. package/dist/esm/types/components/layout/ImageStack.d.ts +4 -2
  29. package/dist/esm/types/components/layout/Modal.d.ts +2 -1
  30. package/dist/esm/types/components/layout/TokenDetailsView.d.ts +11 -5
  31. package/dist/esm/types/components/layout/Transfer.d.ts +1 -1
  32. package/dist/esm/types/components/navigation/Tabs.d.ts +18 -0
  33. package/dist/esm/types/components/navigation/index.d.ts +1 -0
  34. package/dist/esm/types/components/typography/CaptionText.d.ts +2 -1
  35. package/dist/esm/types/services/internal/colorService.d.ts +2 -1
  36. package/dist/esm/types/stories/badges/ImageGroup.stories.d.ts +6 -0
  37. package/dist/esm/types/stories/buttons/AccountsButton.stories.d.ts +6 -0
  38. package/dist/esm/types/stories/lists/TokenGroup.stories.d.ts +2 -0
  39. package/dist/esm/types/stories/navigation/Tabs.stories.d.ts +7 -0
  40. package/dist/esm/types/stories/views/SwapProgressView.stories.d.ts +1 -1
  41. package/dist/index.css +1 -1
  42. package/dist/index.d.ts +50 -17
  43. package/package.json +1 -1
@@ -4,8 +4,6 @@ interface Token {
4
4
  name: string;
5
5
  symbol: string;
6
6
  image: string;
7
- color: string;
8
- textColor: string;
9
7
  chainId: string;
10
8
  }
11
9
  interface Chain {
@@ -33,8 +31,16 @@ interface TokenDetailsViewProps {
33
31
  }>;
34
32
  initialTimeframe?: Timeframe;
35
33
  onTimeframeChange?: (timeframe: Timeframe) => void;
36
- onSwapFrom: (token: Pick<Token, "address" | "chainId">) => void;
37
- onSwapTo: (token: Pick<Token, "address" | "chainId">) => void;
34
+ footerButtons: FooterButtonProps[];
35
+ backdropStyle?: React.CSSProperties;
36
+ colors?: {
37
+ backgroundColor: string;
38
+ textColor: string;
39
+ };
38
40
  }
39
- export declare const TokenDetailsView: ({ isOpen, onClose, token, chain, tokenPrice, priceChange, balance, balanceUSD, volume24h, marketCap, totalSupply, loading, onLikeToken, isFavorite, Chart, initialTimeframe, onTimeframeChange, onSwapFrom, onSwapTo, }: TokenDetailsViewProps) => import("react/jsx-runtime").JSX.Element;
41
+ interface FooterButtonProps extends React.ComponentProps<"button"> {
42
+ label: string;
43
+ icon: React.ReactNode;
44
+ }
45
+ export declare const TokenDetailsView: ({ isOpen, onClose, token, chain, tokenPrice, priceChange, balance, balanceUSD, volume24h, marketCap, totalSupply, loading, onLikeToken, isFavorite, Chart, initialTimeframe, onTimeframeChange, footerButtons, backdropStyle, colors, }: TokenDetailsViewProps) => import("react/jsx-runtime").JSX.Element;
40
46
  export {};
@@ -1,4 +1,4 @@
1
- import { ReactNode } from "react";
1
+ import { type ReactNode } from "react";
2
2
  interface FromToProps {
3
3
  isLoading?: boolean;
4
4
  from?: ReactNode;
@@ -0,0 +1,18 @@
1
+ import React from "react";
2
+ type TabSize = "small" | "large";
3
+ interface TabsProps {
4
+ tabs: Array<{
5
+ label: string;
6
+ }>;
7
+ size?: TabSize;
8
+ activeTab?: number;
9
+ onTabChange?: (tabIndex: number) => void;
10
+ }
11
+ export declare function Tabs({ tabs, size, onTabChange, activeTab, }: TabsProps): import("react/jsx-runtime").JSX.Element;
12
+ interface TabProps extends React.ComponentProps<"button"> {
13
+ label: string;
14
+ size: TabSize;
15
+ isActive?: boolean;
16
+ }
17
+ export declare function Tab({ label, isActive, size, ...props }: TabProps): import("react/jsx-runtime").JSX.Element;
18
+ export {};
@@ -0,0 +1 @@
1
+ export * from "./Tabs";
@@ -7,6 +7,7 @@ interface CaptionProps extends React.HTMLAttributes<HTMLSpanElement> {
7
7
  isLoading?: boolean;
8
8
  width?: string;
9
9
  };
10
+ truncate?: boolean;
10
11
  }
11
- export declare function CaptionText({ children, bold, loading, tight, ...props }: CaptionProps): import("react/jsx-runtime").JSX.Element;
12
+ export declare function CaptionText({ children, bold, loading, tight, truncate, ...props }: CaptionProps): import("react/jsx-runtime").JSX.Element;
12
13
  export {};
@@ -36,7 +36,8 @@ export declare function hexToRgb(hex: string): {
36
36
  a: number;
37
37
  } | null;
38
38
  export declare function rgbToHex(r: number, g: number, b: number): string;
39
- export declare function blendColors(foreground: string, background: string, factor?: number): string | null;
39
+ export declare function blendColors(foreground: string, background: string): string | null;
40
+ export declare function adjustColorForContrast(foreground: string, background: string, factor?: number): string | null;
40
41
  export declare const isValidHexColor: (hex: string) => boolean;
41
42
  export declare function parseColor(color: string): RGB | null;
42
43
  export declare const getColorBrightness: (color: string) => number;
@@ -0,0 +1,6 @@
1
+ import { type Meta, type StoryObj } from "@storybook/react";
2
+ import { ImageGroup } from "../../components/badges/ImageGroup";
3
+ declare const meta: Meta<typeof ImageGroup>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Default: Story;
@@ -0,0 +1,6 @@
1
+ import { type Meta, type StoryObj } from "@storybook/react";
2
+ import { AccountsButton } from "../../components/buttons/AccountsButton";
3
+ declare const meta: Meta<typeof AccountsButton>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Default: Story;
@@ -12,4 +12,6 @@ export declare const LargeVariant: Story;
12
12
  export declare const SmallVariant: Story;
13
13
  export declare const CompactVariant: Story;
14
14
  export declare const LargeVariantWithItems: Story;
15
+ export declare const LargeVariantLongTokenName: Story;
15
16
  export declare const CompactVariantWithItems: Story;
17
+ export declare const CompactVariantLongTokenName: Story;
@@ -0,0 +1,7 @@
1
+ import { type Meta, type StoryObj } from "@storybook/react";
2
+ import { Tabs } from "../../components/navigation/Tabs";
3
+ declare const meta: Meta<typeof Tabs>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Small: Story;
7
+ export declare const Large: Story;
@@ -1,4 +1,4 @@
1
- import { Meta, StoryObj } from "@storybook/react";
1
+ import { type Meta, type StoryObj } from "@storybook/react";
2
2
  import { SwapProgressView } from "../../components/views/SwapProgressView";
3
3
  declare const meta: Meta<typeof SwapProgressView>;
4
4
  export default meta;
package/dist/esm/index.js CHANGED
@@ -3041,6 +3041,26 @@ const baseTailwindConfig = {
3041
3041
  transform: "translate3d(0, 650px, 0)",
3042
3042
  },
3043
3043
  },
3044
+ "slide-to-top-and-fade-in": {
3045
+ "0%": {
3046
+ transform: "translate3d(0, 650px, 0)",
3047
+ opacity: "0",
3048
+ },
3049
+ "100%": {
3050
+ transform: "translate3d(0, 0, 0)",
3051
+ opacity: "1",
3052
+ },
3053
+ },
3054
+ "slide-to-bottom-and-fade-out": {
3055
+ "0%": {
3056
+ transform: "translate3d(0, 0, 0)",
3057
+ opacity: "1",
3058
+ },
3059
+ "100%": {
3060
+ transform: "translate3d(0, 650px, 0)",
3061
+ opacity: "0",
3062
+ },
3063
+ },
3044
3064
  "expand-route": {
3045
3065
  "0%": {
3046
3066
  height: "60px",
@@ -3170,6 +3190,8 @@ const baseTailwindConfig = {
3170
3190
  "move-to-left-with-spring-bounce": `move-to-left-with-spring-bounce var(${CSS_VARS.MOVE_WITH_SPRING_BOUNCE_DURATION}, 0s) ease-out both`,
3171
3191
  "slide-to-top": `slide-to-top var(${CSS_VARS.SLIDE_TO_TOP_DURATION}, 0s) ${ANIMATION_TIMINGS.SHOW_ROUTE} both`,
3172
3192
  "slide-to-bottom": `slide-to-bottom var(${CSS_VARS.SLIDE_TO_BOTTOM_DURATION}, 0s) ${ANIMATION_TIMINGS.HIDE_ROUTE} both`,
3193
+ "slide-to-top-and-fade-in": `slide-to-top-and-fade-in var(${CSS_VARS.SLIDE_TO_TOP_DURATION}, 0s) ${ANIMATION_TIMINGS.SHOW_ROUTE} both`,
3194
+ "slide-to-bottom-and-fade-out": `slide-to-bottom-and-fade-out var(${CSS_VARS.SLIDE_TO_BOTTOM_DURATION}, 0s) ${ANIMATION_TIMINGS.HIDE_ROUTE} both`,
3173
3195
  "expand-route": `expand-route var(${CSS_VARS.EXPAND_ROUTE_DURATION}, 0s) ${ANIMATION_TIMINGS.EXPAND_ROUTE} both`,
3174
3196
  "collapse-route": `collapse-route var(${CSS_VARS.COLLAPSE_ROUTE_DURATION}, 0s) ${ANIMATION_TIMINGS.COLLAPSE_ROUTE} both`,
3175
3197
  "fade-in": `fade-in var(${CSS_VARS.FADE_IN_DURATION}, 0s) ease-out both`,
@@ -3568,13 +3590,14 @@ function BodyText(_a) {
3568
3590
 
3569
3591
  function CaptionText(_a) {
3570
3592
  var _b, _c;
3571
- var { children, bold = false, loading, tight = false } = _a, props = __rest$1(_a, ["children", "bold", "loading", "tight"]);
3593
+ var { children, bold = false, loading, tight = false, truncate = false } = _a, props = __rest$1(_a, ["children", "bold", "loading", "tight", "truncate"]);
3572
3594
  const boldClass = bold ? "!tw-font-bold" : "";
3573
3595
  const className = cn("tw-text-caption tw-font-caption tw-leading-caption", boldClass, tight && "!tw-leading-[1]", props.className);
3574
3596
  if ((_b = loading === null || loading === void 0 ? void 0 : loading.isLoading) !== null && _b !== void 0 ? _b : false) {
3575
3597
  return (jsx(TextSkeleton, { className: className, width: (_c = loading === null || loading === void 0 ? void 0 : loading.width) !== null && _c !== void 0 ? _c : "100%", isLoading: true }));
3576
3598
  }
3577
- return (jsx("span", Object.assign({}, props, { className: className, children: children })));
3599
+ return (jsx("span", Object.assign({}, props, { className: className, style: truncate
3600
+ ? Object.assign(Object.assign({}, props.style), { whiteSpace: "nowrap", overflow: "hidden", textOverflow: "ellipsis" }) : props.style, children: children })));
3578
3601
  }
3579
3602
 
3580
3603
  // font size, line height, and letter spacing classes
@@ -3592,6 +3615,14 @@ function IconLabel({ src, children, rounded }) {
3592
3615
  return (jsxs("div", { className: "tw-inline-flex tw-items-center tw-gap-squid-xxs", children: [src && jsx(Image$1, { src: src, rounded: rounded, size: "medium" }), typeof children === "string" ? (jsx(CaptionText, { children: children })) : (children)] }));
3593
3616
  }
3594
3617
 
3618
+ function ImageGroup({ imageUrls, badgeUrl }) {
3619
+ return (jsxs("div", { className: "tw-relative tw-flex tw-h-squid-xxl tw-w-squid-xxl tw-flex-shrink-0 tw-flex-wrap tw-content-center tw-items-center tw-justify-center tw-gap-0.5 tw-rounded-squid-s tw-border tw-border-solid tw-border-material-light-thin tw-bg-grey-700", children: [imageUrls.map((url) => (jsx(Image$1, { src: url, size: "medium", rounded: "xxs", style: {
3620
+ width: "24px",
3621
+ height: "24px",
3622
+ borderRadius: "7.5px",
3623
+ } }, url))), jsx("div", { className: "tw-absolute -tw-bottom-[1px] -tw-right-[1px] tw-bg-highlight-700", children: jsx(Image$1, { border: "outline-lg", src: badgeUrl, size: "medium", className: "tw-p-0.5" }) })] }));
3624
+ }
3625
+
3595
3626
  function Approve() {
3596
3627
  return (jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "30", height: "31", fill: "none", viewBox: "0 0 30 31", children: [jsx("path", { fill: "color(display-p3 0.7208 0.5750 0.9250)", d: "M0 5.5a5 5 0 015-5h20a5 5 0 015 5v20a5 5 0 01-5 5H5a5 5 0 01-5-5v-20z" }), jsx("path", { stroke: "color(display-p3 0.9840 0.9861 0.9904)", strokeLinejoin: "round", strokeWidth: "2", d: "M16.454 6.557L16 6.5c-.965 2.309-2.406 4.303-4.107 6.098-.558.589-.893 1.36-.893 2.172v6.455c0 .778.447 1.496 1.178 1.762 2.48.903 5.073 1.097 7.695.87 1.601-.14 2.856-1.376 3.21-2.944l.844-3.755A3 3 0 0021 13.5h-3l.949-3.084a3 3 0 00-2.495-3.86zM6 15.5a2 2 0 012-2 3 3 0 013 3v4a3 3 0 01-3 3 2 2 0 01-2-2v-6z" })] }));
3597
3628
  }
@@ -3620,8 +3651,8 @@ function ChevronTopSmallIcon() {
3620
3651
  function ChevronLargeDownIcon({ size = "24", className, }) {
3621
3652
  return (jsx("svg", { width: size, height: size, viewBox: "0 0 24 25", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: className, children: jsx("path", { d: "M3 10.5L11.0287 14.9604C11.6328 15.296 12.3672 15.296 12.9713 14.9604L21 10.5", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) }));
3622
3653
  }
3623
- function ChevronTopIcon({ className }) {
3624
- return (jsx("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: className, children: jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M8.47139 6.08088C8.21104 5.82053 7.78893 5.82053 7.52858 6.08088L3.13807 10.4714C2.87772 10.7318 2.45561 10.7318 2.19526 10.4714C1.93491 10.2111 1.93491 9.78895 2.19526 9.5286L6.58577 5.13807C7.36682 4.35702 8.63315 4.35702 9.4142 5.13807L13.8047 9.52859C14.0651 9.78894 14.0651 10.2111 13.8047 10.4714C13.5444 10.7318 13.1223 10.7318 12.8619 10.4714L8.47139 6.08088Z", fill: "currentColor" }) }));
3654
+ function ChevronTopIcon(props) {
3655
+ return (jsx("svg", Object.assign({}, props, { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M8.47139 6.08088C8.21104 5.82053 7.78893 5.82053 7.52858 6.08088L3.13807 10.4714C2.87772 10.7318 2.45561 10.7318 2.19526 10.4714C1.93491 10.2111 1.93491 9.78895 2.19526 9.5286L6.58577 5.13807C7.36682 4.35702 8.63315 4.35702 9.4142 5.13807L13.8047 9.52859C14.0651 9.78894 14.0651 10.2111 13.8047 10.4714C13.5444 10.7318 13.1223 10.7318 12.8619 10.4714L8.47139 6.08088Z", fill: "currentColor" }) })));
3625
3656
  }
3626
3657
  function ChevronLargeRightIcon({ size = "16", className, }) {
3627
3658
  return (jsx("svg", { width: size, height: size, viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: className, children: jsx("path", { d: "M6.66675 14L9.64035 8.64754C9.86407 8.24484 9.86407 7.75519 9.64035 7.35249L6.66675 2", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) }));
@@ -3921,6 +3952,18 @@ function CodeBracketsIcon({ size = "20", className, }) {
3921
3952
  function CommandIcon({ size = "22", className, }) {
3922
3953
  return (jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: size, height: size, viewBox: "0 0 22 22", fill: "none", className: className, children: jsx("path", { d: "M8 17V17C8 16.0219 8.28951 15.0657 8.83205 14.2519L13.1679 7.74808C13.7105 6.93427 14 5.97808 14 5V5", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) }));
3923
3954
  }
3955
+ function NewsIcon({ className }) {
3956
+ return (jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "34", height: "28", viewBox: "0 0 34 28", fill: "none", className: className, children: [jsx("path", { d: "M22.8645 1H11.1245C5.53665 1 1 5.48783 1 11.0155C1 16.5432 5.53665 21.031 11.1245 21.031H11.4786C12.1978 22.5744 14.4882 26.3727 19.9765 26.9966C20.4965 27.0513 20.8285 26.4383 20.4744 26.0552C19.4011 24.895 18.0401 22.9356 18.8589 21.031H22.8755C28.4633 21.031 33 16.5432 33 11.0155C33 5.48783 28.4633 1 22.8755 1H22.8645Z", fill: "currentColor", stroke: "black", strokeLinecap: "round", strokeLinejoin: "round" }), jsx("text", { x: "17", y: "12", fontFamily: "Arial", fontSize: "10", fill: "black", textAnchor: "middle", dominantBaseline: "middle", children: "news" })] }));
3957
+ }
3958
+ function CelebrateIcon({ className, size = "27", }) {
3959
+ return (jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: size, height: size, viewBox: "0 0 27 27", fill: "none", className: className, children: [jsxs("g", { clipPath: "url(#clip0_1739_52134)", children: [jsx("path", { d: "M15.2972 19.8873L1.47657 26.8989C0.615947 27.3376 -0.295303 26.4179 0.143447 25.5657L7.15501 11.7451L15.2972 19.8873Z", fill: "currentColor" }), jsx("path", { d: "M15.585 19.6563C16.5109 18.7304 15.4264 16.1447 13.1628 13.881C10.8991 11.6173 8.31342 10.5329 7.38752 11.4588C6.46162 12.3847 7.5461 14.9703 9.80978 17.234C12.0735 19.4977 14.6591 20.5822 15.585 19.6563Z", fill: "black" }), jsx("path", { d: "M12.7238 17.314C13.1456 16.8077 13.8459 15.9471 14.3606 15.5505C16.1241 14.1752 18.2588 13.2808 20.5284 13.4412C21.9544 13.5424 23.2622 14.3271 24.705 14.2849C25.8778 14.2512 27.1603 13.399 26.9578 12.0912C26.7553 10.7918 25.3125 10.0155 24.0891 9.76241C22.2581 9.38272 20.4356 9.84679 18.7903 10.6905C16.3856 11.9224 14.2256 13.7618 12.3356 15.6771C12.2934 15.7193 11.6944 16.369 11.6606 16.4027C11.6522 16.4027 11.9644 16.8921 12.7238 17.314Z", fill: "currentColor" }), jsx("path", { d: "M26.6625 22.3172C26.1478 22.8825 25.1691 22.6884 24.5953 22.1822C23.9878 21.6422 23.6419 20.8997 23.1272 20.2837C22.14 19.1194 21.2288 18.3094 19.9294 17.6091C19.4822 17.3644 17.8031 16.7822 17.9297 16.7906C18.1406 16.8075 18.3516 16.8244 18.5625 16.8497C18.9844 16.8919 19.4063 16.9509 19.8281 17.0184C20.6635 17.1534 21.4988 17.3306 22.3088 17.5753C23.8444 18.0394 25.5066 18.765 26.4516 20.1319C26.8988 20.7731 27.2025 21.7266 26.6625 22.3172Z", fill: "currentColor" }), jsx("path", { d: "M14.251 0.0504011C13.635 0.295089 13.4831 1.13884 13.7194 1.75478C13.9641 2.4129 14.4535 2.91915 14.791 3.52665C15.4238 4.68259 15.7866 5.66134 15.9553 6.92696C16.0144 7.36571 15.9806 8.41196 15.9891 8.79165C16.1578 8.2179 16.3181 7.55978 16.3941 7.19696C16.546 6.47978 16.6556 5.76259 16.7147 5.02853C16.8244 3.64478 16.7569 2.09228 15.9469 0.902589C15.5588 0.337276 14.8922 -0.194286 14.251 0.0504011Z", fill: "currentColor" }), jsx("path", { d: "M10.4878 15.0863C11.3737 14.6307 12.6647 13.0275 12.6647 13.0275C15.6769 9.38254 13.9134 4.29472 10.6565 1.48504C9.86342 0.801599 8.94374 0.194099 7.90592 0.0337867C6.87655 -0.126526 5.70374 0.261599 5.17217 1.16441C4.56467 2.22754 5.02874 3.6366 5.88936 4.50566C7.39124 6.03285 9.6778 6.37035 11.1628 7.9566C11.7787 8.60629 12.1837 9.45847 12.2428 10.3697C12.3525 12.1585 9.6778 13.7194 9.55967 13.7785C9.98155 14.5463 9.98155 14.5463 10.4878 15.0863Z", fill: "currentColor" }), jsx("path", { d: "M2.77594 11.9896C4.27177 11.9896 5.48438 10.777 5.48438 9.28119C5.48438 7.78536 4.27177 6.57275 2.77594 6.57275C1.28011 6.57275 0.0675049 7.78536 0.0675049 9.28119C0.0675049 10.777 1.28011 11.9896 2.77594 11.9896Z", fill: "currentColor" }), jsx("path", { d: "M24.0891 5.79674C25.6595 5.79674 26.9325 4.52369 26.9325 2.9533C26.9325 1.38291 25.6595 0.109863 24.0891 0.109863C22.5187 0.109863 21.2456 1.38291 21.2456 2.9533C21.2456 4.52369 22.5187 5.79674 24.0891 5.79674Z", fill: "currentColor" }), jsx("path", { d: "M19.6341 9.13762C20.5148 9.13762 21.2287 8.42365 21.2287 7.54293C21.2287 6.66221 20.5148 5.94824 19.6341 5.94824C18.7533 5.94824 18.0394 6.66221 18.0394 7.54293C18.0394 8.42365 18.7533 9.13762 19.6341 9.13762Z", fill: "currentColor" })] }), jsx("defs", { children: jsx("clipPath", { id: "clip0_1739_52134", children: jsx("rect", { width: "27", height: "27", fill: "white" }) }) })] }));
3960
+ }
3961
+ function SmileFilledIcon({ className, size = "27", }) {
3962
+ return (jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: size, height: size, viewBox: "0 0 27 27", fill: "none", className: className, children: [jsx("path", { d: "M13.3473 25.6812C20.1666 25.6812 25.6947 20.1561 25.6947 13.3406C25.6947 6.52507 20.1666 1 13.3473 1C6.52809 1 1 6.52507 1 13.3406C1 20.1561 6.52809 25.6812 13.3473 25.6812Z", fill: "currentColor", stroke: "black", strokeLinecap: "round", strokeLinejoin: "round" }), jsx("path", { d: "M12.2618 16.4004C13.5833 18.38 16.1579 19.2247 18.4518 18.292C20.7457 17.3592 21.9008 15.1253 21.5941 12.8652", fill: "currentColor" }), jsx("path", { d: "M12.2618 16.4004C13.5833 18.38 16.1579 19.2247 18.4518 18.292C20.7457 17.3592 21.9008 15.1253 21.5941 12.8652", stroke: "black", strokeLinecap: "round", strokeLinejoin: "round" }), jsx("path", { d: "M19.6634 10.5012C19.2946 9.92059 18.557 9.65636 17.8879 9.9108C17.2416 10.1555 16.8695 10.8014 16.9413 11.4571", fill: "currentColor" }), jsx("path", { d: "M19.6634 10.5012C19.2946 9.92059 18.557 9.65636 17.8879 9.9108C17.2416 10.1555 16.8695 10.8014 16.9413 11.4571", stroke: "black", strokeLinecap: "round", strokeLinejoin: "round" }), jsx("path", { d: "M15.121 12.0857C14.7522 11.5051 14.0146 11.2408 13.3455 11.4953C12.6992 11.7399 12.3271 12.3858 12.3989 13.0415", fill: "currentColor" }), jsx("path", { d: "M15.121 12.0857C14.7522 11.5051 14.0146 11.2408 13.3455 11.4953C12.6992 11.7399 12.3271 12.3858 12.3989 13.0415", stroke: "black", strokeLinecap: "round", strokeLinejoin: "round" }), jsx("path", { d: "M22.3289 12.7085C21.8132 12.8325 21.2714 12.839 20.7525 12.7346L22.3289 12.7085Z", fill: "currentColor" }), jsx("path", { d: "M22.3289 12.7085C21.8132 12.8325 21.2714 12.839 20.7525 12.7346", stroke: "black", strokeLinecap: "round", strokeLinejoin: "round" })] }));
3963
+ }
3964
+ function StarLinesIcon({ size = "20", className, }) {
3965
+ return (jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: size, height: size, viewBox: "0 0 20 20", fill: "none", className: className, children: jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M11.8455 1.41356C12.3313 0.606286 13.5017 0.606288 13.9875 1.41356L15.2314 3.4805L17.5816 4.0248C18.4995 4.23739 18.8611 5.35048 18.2435 6.06199L16.6621 7.88373L16.8707 10.2871C16.9522 11.2257 16.0053 11.9137 15.1378 11.5461L12.9165 10.6051L10.6952 11.5461C9.8277 11.9137 8.88085 11.2257 8.96232 10.2871L9.1709 7.88373L7.58951 6.06199C6.97187 5.35048 7.33354 4.23739 8.25143 4.0248L10.6016 3.4805L11.8455 1.41356ZM6.42243 8.57745C6.74786 8.90289 6.74786 9.43053 6.42243 9.75596L3.08909 13.0893C2.76366 13.4147 2.23602 13.4147 1.91058 13.0893C1.58514 12.7639 1.58514 12.2362 1.91058 11.9108L5.24392 8.57745C5.56935 8.25202 6.09699 8.25202 6.42243 8.57745ZM8.08909 12.7441C8.41453 13.0696 8.41453 13.5972 8.08909 13.9226L4.75576 17.256C4.43032 17.5814 3.90269 17.5814 3.57725 17.256C3.25181 16.9305 3.25181 16.4029 3.57725 16.0775L6.91058 12.7441C7.23602 12.4187 7.76366 12.4187 8.08909 12.7441ZM13.9224 12.7441C14.2479 13.0696 14.2479 13.5972 13.9224 13.9226L10.5891 17.256C10.2637 17.5814 9.73602 17.5814 9.41058 17.256C9.08515 16.9305 9.08515 16.4029 9.41058 16.0775L12.7439 12.7441C13.0694 12.4187 13.597 12.4187 13.9224 12.7441Z", fill: "currentColor" }) }));
3966
+ }
3924
3967
 
3925
3968
  function EmptyHeartIcon({ className }) {
3926
3969
  return (jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", className: className, children: jsx("path", { d: "M21 10C21 15.75 12.75 20 12 20C11.25 20 3 15.75 3 10C3 6 5.5 4 8 4C10.5 4 12 5.5 12 5.5C12 5.5 13.5 4 16 4C18.5 4 21 6 21 10Z", stroke: "currentColor", strokeWidth: "2", strokeLinejoin: "round" }) }));
@@ -4178,7 +4221,7 @@ const priceChangeSignToIconMap = {
4178
4221
  [PriceChangeSign.NEGATIVE]: (jsx(ArrowTriangle, { className: "tw-text-status-negative" })),
4179
4222
  [PriceChangeSign.NEUTRAL]: jsx(PauseIcon, {}),
4180
4223
  };
4181
- function PriceChange({ value: rawValue, variant = "small", }) {
4224
+ function PriceChange({ value: rawValue = 0, variant = "small", }) {
4182
4225
  const valueFormatted = Math.abs(Number(rawValue)).toFixed(2);
4183
4226
  const sign = Number(rawValue) > 0
4184
4227
  ? PriceChangeSign.POSITIVE
@@ -4254,6 +4297,28 @@ function WalletLink({ imageURI, address }) {
4254
4297
  return (jsx(IconLabel, { src: imageURI, rounded: "full", children: jsx(HashLink, { hash: address, showCopyButton: true, children: jsx(BodyText, { size: "small", children: truncateHash(address) }) }) }));
4255
4298
  }
4256
4299
 
4300
+ const extraPaddingMap = {
4301
+ "outline-sm": "1px",
4302
+ "outline-lg": "3px",
4303
+ };
4304
+ function ImageStack(_a) {
4305
+ var { imageUrls, spacing, stackOnTop = true, addExtraPadding, removeDuplicates = false } = _a, imageProps = __rest$1(_a, ["imageUrls", "spacing", "stackOnTop", "addExtraPadding", "removeDuplicates"]);
4306
+ const imagesToRender = removeDuplicates ? [...new Set(imageUrls)] : imageUrls;
4307
+ return (jsx("div", { style: {
4308
+ // @ts-expect-error Custom CSS property
4309
+ "--image-stack-spacing": spacing,
4310
+ padding: addExtraPadding && imageProps.border
4311
+ ? extraPaddingMap[imageProps.border]
4312
+ : undefined,
4313
+ }, className: "tw-flex tw-items-center tw-space-x-[--image-stack-spacing]", children: imagesToRender.map((url, index, self) => (jsx(Image$1, Object.assign({ src: url, containerProps: stackOnTop
4314
+ ? {
4315
+ style: {
4316
+ zIndex: self.length - index,
4317
+ },
4318
+ }
4319
+ : undefined }, imageProps), index))) }));
4320
+ }
4321
+
4257
4322
  function Chip(_a) {
4258
4323
  var { label, icon } = _a, props = __rest$1(_a, ["label", "icon"]);
4259
4324
  return (jsx("div", Object.assign({}, props, { className: cn("tw-flex tw-h-squid-m tw-items-center tw-justify-center tw-rounded-squid-m tw-bg-grey-500 tw-text-grey-900", icon && "tw-w-squid-m", props.className), children: label ? (jsx(CaptionText, { className: "tw-min-w-squid-xl tw-text-nowrap tw-px-squid-xxs tw-text-center", children: label })) : (icon) })));
@@ -4321,6 +4386,11 @@ const ButtonHoverOverlay = ({ className }) => {
4321
4386
  return (jsx("span", { className: cn("tw-absolute tw-inset-0 tw-z-0 tw-hidden tw-h-full tw-w-full tw-bg-material-light-thin group-hover/base-button:tw-block", className) }));
4322
4387
  };
4323
4388
 
4389
+ function AccountsButton(_a) {
4390
+ var { imageUrls } = _a, props = __rest$1(_a, ["imageUrls"]);
4391
+ return (jsx(Button$1, Object.assign({}, props, { size: "md", variant: "tertiary", className: cn("tw-group/accounts-button", props.className), children: jsxs("div", { className: "tw-flex tw-items-center tw-gap-squid-xxs tw-text-grey-300", children: [jsx(ImageStack, { imageUrls: imageUrls, spacing: "-10px", border: "outline-lg", size: "medium", rounded: "xxs", className: "!tw-outline-button-md-tertiary-bg group-hover/accounts-button:!tw-outline-material-light-blend-grey-800" }), jsx(BodyText, { size: "small", children: "Accounts" }), jsx(ChevronDownSmallIcon, { size: "16" })] }) })));
4392
+ }
4393
+
4324
4394
  function AddressButton(_a) {
4325
4395
  var { label, imageUrl, badgeUrl, isLoading } = _a, props = __rest$1(_a, ["label", "imageUrl", "badgeUrl", "isLoading"]);
4326
4396
  return (jsx(Button$1, Object.assign({ size: "md", variant: "tertiary" }, props, { disabled: isLoading, className: !isLoading && imageUrl ? "tw-pl-1 tw-pr-4" : "!tw-px-4", children: isLoading ? (jsx("span", { className: "tw-mx-auto tw-px-4 tw-text-grey-300", children: jsx(Loader, {}) })) : (jsxs(Fragment, { children: [jsx(BadgeImage, { image: {
@@ -18738,7 +18808,7 @@ const modalWidthClassMap = {
18738
18808
  large: "mobile-lg:tw-w-modal-large",
18739
18809
  "extra-large": "mobile-lg:tw-w-modal-extra-large",
18740
18810
  };
18741
- function Modal({ children, className, onBackdropClick, isOpen: _isOpen = true, maxHeight = false, width = "large", animateOpacity = false, }) {
18811
+ function Modal({ children, className, onBackdropClick, isOpen: _isOpen = true, maxHeight = false, width = "large", animateOpacity = false, backdropStyle, }) {
18742
18812
  const [isOpen, setIsOpen] = useState(_isOpen);
18743
18813
  useEffect(() => {
18744
18814
  if (_isOpen) {
@@ -18760,16 +18830,18 @@ function Modal({ children, className, onBackdropClick, isOpen: _isOpen = true, m
18760
18830
  onBackdropClick();
18761
18831
  }
18762
18832
  }
18763
- : undefined, style: {
18764
- [CSS_VARS.BLUR_IN_DURATION]: `${ANIMATION_DURATIONS.SHOW_MODAL}ms`,
18765
- [CSS_VARS.BLUR_OUT_DURATION]: `${ANIMATION_DURATIONS.HIDE_MODAL}ms`,
18766
- }, className: cn("tw-absolute tw-inset-0 tw-z-40 tw-flex tw-items-start tw-justify-center tw-px-squid-xs tw-py-squid-xl tw-pb-squid-m", _isOpen ? "tw-animate-blur-in" : "tw-animate-blur-out"), children: jsx("div", { style: {
18833
+ : undefined, style: Object.assign({ [CSS_VARS.BLUR_IN_DURATION]: `${ANIMATION_DURATIONS.SHOW_MODAL}ms`, [CSS_VARS.BLUR_OUT_DURATION]: `${ANIMATION_DURATIONS.HIDE_MODAL}ms` }, backdropStyle), className: cn("tw-absolute tw-inset-0 tw-z-40 tw-flex tw-items-start tw-justify-center tw-px-squid-xs tw-py-squid-xl tw-pb-squid-m", _isOpen ? "tw-animate-blur-in" : "tw-animate-blur-out"), children: jsx("div", { style: {
18767
18834
  [CSS_VARS.SLIDE_TO_TOP_DURATION]: `${ANIMATION_DURATIONS.SHOW_MODAL}ms`,
18768
18835
  [CSS_VARS.SLIDE_TO_BOTTOM_DURATION]: `${ANIMATION_DURATIONS.HIDE_MODAL}ms`,
18769
18836
  [CSS_VARS.FADE_IN_DURATION]: `${ANIMATION_DURATIONS.SHOW_MODAL}ms`,
18770
18837
  [CSS_VARS.FADE_OUT_DURATION]: `${ANIMATION_DURATIONS.HIDE_MODAL}ms`,
18771
- }, className: cn("tw-relative tw-flex tw-max-h-modal-compact tw-max-w-full tw-flex-col tw-items-start tw-justify-end tw-gap-squid-xxs tw-self-end mobile-xs:tw-w-modal-compact mobile-lg:tw-max-h-modal-large", className, _isOpen ? "tw-animate-slide-to-top" : "tw-animate-slide-to-bottom", animateOpacity &&
18772
- (_isOpen ? "tw-animate-fade-in" : "tw-animate-fade-out"), maxHeight && "tw-h-full", modalWidthClassMap[width]), children: children }) })));
18838
+ }, className: cn("tw-relative tw-flex tw-max-h-modal-compact tw-max-w-full tw-flex-col tw-items-start tw-justify-end tw-gap-squid-xxs tw-self-end mobile-xs:tw-w-modal-compact mobile-lg:tw-max-h-modal-large", className, animateOpacity
18839
+ ? _isOpen
18840
+ ? "tw-animate-slide-to-top-and-fade-in"
18841
+ : "tw-animate-slide-to-bottom-and-fade-out"
18842
+ : _isOpen
18843
+ ? "tw-animate-slide-to-top"
18844
+ : "tw-animate-slide-to-bottom", maxHeight && "tw-h-full", modalWidthClassMap[width]), children: children }) })));
18773
18845
  }
18774
18846
 
18775
18847
  const borderTypeClassMap = {
@@ -18865,7 +18937,7 @@ function SwapConfiguration({ amount, tokenPrice = 0, isFetching: isFetchingProp
18865
18937
  }
18866
18938
 
18867
18939
  function SwapProgressViewHeader({ title, description, }) {
18868
- return (jsxs("header", { className: "tw-flex tw-h-[95px] tw-w-full tw-flex-col tw-gap-squid-s tw-bg-grey-800 tw-px-squid-m tw-py-squid-s", children: [jsx(BodyText, { size: "large", className: "tw-h-squid-m !tw-leading-[20px] tw-text-grey-300", children: title }), jsx(CaptionText, { className: "tw-h-squid-l tw-text-grey-500", children: description })] }));
18940
+ return (jsxs("header", { className: "tw-flex tw-min-h-[95px] tw-w-full tw-flex-col tw-gap-squid-s tw-bg-grey-800 tw-px-squid-m tw-py-squid-s", children: [jsx(BodyText, { size: "large", className: "tw-min-h-squid-m !tw-leading-[25px] tw-text-grey-300", children: title }), jsx(CaptionText, { className: "tw-h-squid-l tw-text-grey-500", children: description })] }));
18869
18941
  }
18870
18942
 
18871
18943
  const SPACING = 10;
@@ -19182,28 +19254,6 @@ function DropdownMenuTitle({ title }) {
19182
19254
  return (jsx("div", { className: "tw-flex tw-items-center tw-gap-squid-xs tw-self-stretch tw-p-squid-xs tw-pb-squid-xxs tw-text-material-light-average", children: jsx(CaptionText, { children: title }) }));
19183
19255
  }
19184
19256
 
19185
- const extraPaddingMap = {
19186
- "outline-sm": "1px",
19187
- "outline-lg": "3px",
19188
- };
19189
- function ImageStack(_a) {
19190
- var { imageUrls, spacing, stackOnTop = true, addExtraPadding, removeDuplicates = false } = _a, imageProps = __rest$1(_a, ["imageUrls", "spacing", "stackOnTop", "addExtraPadding", "removeDuplicates"]);
19191
- const imagesToRender = removeDuplicates ? [...new Set(imageUrls)] : imageUrls;
19192
- return (jsx("div", { style: {
19193
- // @ts-expect-error Custom CSS property
19194
- "--image-stack-spacing": spacing,
19195
- padding: addExtraPadding && imageProps.border
19196
- ? extraPaddingMap[imageProps.border]
19197
- : undefined,
19198
- }, className: "tw-flex tw-items-center tw-space-x-[--image-stack-spacing]", children: imagesToRender.map((url, index, self) => (jsx(Image$1, Object.assign({ src: url, containerProps: stackOnTop
19199
- ? {
19200
- style: {
19201
- zIndex: self.length - index,
19202
- },
19203
- }
19204
- : undefined }, imageProps), index))) }));
19205
- }
19206
-
19207
19257
  function useOnClickOutside(callback, externalRef) {
19208
19258
  const internalRef = useRef(null);
19209
19259
  const ref = externalRef !== null && externalRef !== void 0 ? externalRef : internalRef;
@@ -19387,7 +19437,7 @@ function SmallBodyText(props) {
19387
19437
  function PropertyListItem(_a) {
19388
19438
  var { isLoading = false, label, detail, icon, className, variant = "small", showGradientBg = true, labelClassName, iconClassName, detailClassName } = _a, props = __rest$1(_a, ["isLoading", "label", "detail", "icon", "className", "variant", "showGradientBg", "labelClassName", "iconClassName", "detailClassName"]);
19389
19439
  const Text = variant === "small" ? CaptionText : SmallBodyText;
19390
- return (jsx("li", Object.assign({}, props, { className: cn("tw-flex tw-w-full tw-gap-squid-xs tw-rounded-squid-xs tw-text-grey-300", showGradientBg && "squid-property-row-bg", containerVariantClassNameMap[variant], className), children: jsxs("div", { className: cn("tw-flex tw-h-squid-l tw-w-full tw-items-center tw-justify-between tw-gap-squid-xs tw-rounded-squid-xs", childrenVariantClassNameMap[variant]), children: [jsx("div", { className: cn("tw-w-6 tw-text-grey-500", iconClassName), children: icon }), jsx(Text, { className: cn("tw-flex-1 tw-text-grey-500", labelClassName), children: jsx(TextSkeleton, { isLoading: isLoading, children: label }) }), jsx(Text, { className: cn("tw-flex tw-text-grey-300", detailClassName), children: jsx(TextSkeleton, { isLoading: isLoading, children: detail }) })] }) })));
19440
+ return (jsx("li", Object.assign({}, props, { className: cn("tw-flex tw-w-full tw-gap-squid-xs tw-rounded-squid-xs tw-text-grey-300", showGradientBg && "squid-property-row-bg", containerVariantClassNameMap[variant], className), children: jsxs("div", { className: cn("tw-flex tw-h-squid-l tw-w-full tw-items-center tw-justify-between tw-gap-squid-xs tw-rounded-squid-xs", childrenVariantClassNameMap[variant]), children: [jsx("div", { className: cn("tw-w-6 tw-text-grey-500", iconClassName), children: icon }), jsx(Text, { className: cn("tw-min-w-fit tw-flex-1 tw-text-grey-500", labelClassName), children: jsx(TextSkeleton, { isLoading: isLoading, children: label }) }), jsx(Text, { truncate: variant === "small" || undefined, className: cn("tw-flex tw-text-grey-300", detailClassName), children: jsx(TextSkeleton, { isLoading: isLoading, children: detail }) })] }) })));
19391
19441
  }
19392
19442
 
19393
19443
  function RouteStep({ imageUrl, descriptionBlocks, subtitle, showStepSeparator = false, }) {
@@ -19496,7 +19546,9 @@ function TokenGroup({ isSelected = false, tokenItems, priceChange, balance, bala
19496
19546
  const handleToggleCollapsed = useCallback(() => {
19497
19547
  setIsCollapsed((prev) => !prev);
19498
19548
  }, []);
19499
- return (jsxs("li", { className: cn("tw-w-full tw-self-stretch", extraSpacing && "tw-px-squid-xs tw-pt-squid-xs", !isCollapsed &&
19549
+ return (jsxs("li", { style: {
19550
+ transition: `padding ${ANIMATION_DURATIONS.GENERIC}ms ${ANIMATION_TIMINGS.GENERIC}`,
19551
+ }, className: cn("tw-w-full tw-self-stretch", extraSpacing && "tw-px-squid-xs tw-pt-squid-xs", !isCollapsed &&
19500
19552
  "tw-border-y tw-border-solid tw-border-y-material-light-thin tw-py-squid-xs", className), children: [jsxs(ContentTag, { onClick: (event) => {
19501
19553
  onClick === null || onClick === void 0 ? void 0 : onClick(event);
19502
19554
  if (isCollapsible)
@@ -19504,7 +19556,7 @@ function TokenGroup({ isSelected = false, tokenItems, priceChange, balance, bala
19504
19556
  }, style: isCollapsible
19505
19557
  ? {
19506
19558
  transition: `${ANIMATION_DURATIONS.GENERIC}ms ${ANIMATION_TIMINGS.GENERIC}`,
19507
- transitionProperty: "height",
19559
+ transitionProperty: "height, gap",
19508
19560
  }
19509
19561
  : undefined, className: cn("tw-flex tw-w-full tw-items-center tw-rounded-squid-s tw-px-squid-xs", isSelected && "tw-bg-material-light-thin", isInteractive && "hover:tw-bg-material-light-thin", isLargeVariant
19510
19562
  ? isCollapsed
@@ -19512,7 +19564,7 @@ function TokenGroup({ isSelected = false, tokenItems, priceChange, balance, bala
19512
19564
  : "tw-h-squid-xl tw-gap-squid-xxs"
19513
19565
  : isSmallVariant
19514
19566
  ? "tw-h-[50px] tw-gap-squid-s tw-py-squid-xxs"
19515
- : "tw-h-squid-xl tw-gap-squid-xxs"), children: [jsxs("div", { className: "tw-relative", children: [jsx(Image$1, { src: imageUrl, size: isLargeVariant && !isCollapsed
19567
+ : "tw-h-squid-xl tw-gap-squid-xxs"), children: [jsxs("div", { className: "tw-relative tw-min-w-fit", children: [jsx(Image$1, { src: imageUrl, size: isLargeVariant && !isCollapsed
19516
19568
  ? "medium"
19517
19569
  : (_a = mainImageSizeMap[variant]) !== null && _a !== void 0 ? _a : "medium", rounded: isCompactVariant ? "xxs" : "full", style: {
19518
19570
  transition: `${ANIMATION_DURATIONS.GENERIC}ms ${ANIMATION_TIMINGS.GENERIC}`,
@@ -19530,8 +19582,19 @@ function TokenGroup({ isSelected = false, tokenItems, priceChange, balance, bala
19530
19582
  ? "-tw-bottom-0 -tw-right-0"
19531
19583
  : "-tw-bottom-[3px] -tw-right-[3px]"), children: jsx(ImageStack, { spacing: "-10px", removeDuplicates: true, addExtraPadding: !isCollapsible, size: "medium", rounded: "xxs", border: "outline-lg", imageUrls: isCollapsible
19532
19584
  ? tokenItems === null || tokenItems === void 0 ? void 0 : tokenItems.slice(0, MAX_PREVIEW_ITEMS).map((item) => item.chainImageUrl)
19533
- : [chainImageUrl] }) }))] }), jsxs("div", { className: cn("tw-flex tw-flex-1 tw-flex-col tw-items-start tw-justify-center tw-text-grey-300", isCollapsed &&
19534
- (isSmallVariant ? "tw-gap-squid-xs" : "tw-gap-squid-xxs"), isSmallVariant && "tw-h-[45px]"), children: [jsxs("div", { className: cn("tw-flex tw-gap-squid-xxs tw-self-stretch", isSmallVariant ? "tw-h-[13px] tw-items-end" : "tw-items-center", isLargeVariant && "tw-h-squid-m"), children: [jsx(BodyText, { size: "small", className: "tw-h-fit !tw-leading-[13px]", children: name }), (!isCollapsed || isCompactVariant) && (jsx(ChevronTopIcon, { className: cn("tw-text-grey-500", isCollapsed ? "tw-rotate-90" : "tw-rotate-180") })), balanceUsd ? (jsx("span", { className: cn("tw-flex tw-flex-1 tw-items-center tw-justify-end", isCollapsed ? "tw-text-grey-300" : "tw-text-grey-500"), children: isSmallVariant ? (jsxs(Fragment, { children: [jsx(CaptionText, { className: "!tw-leading-[10px] tw-opacity-66", children: "$" }), jsx(CaptionText, { className: "!tw-leading-[10px]", children: balanceUsd })] })) : (jsxs(Fragment, { children: [jsx(BodyText, { size: "small", className: "!tw-leading-[10px] tw-opacity-66", children: "$" }), jsx(BodyText, { size: "small", className: "!tw-leading-[10px]", children: balanceUsd })] })) })) : null] }), !isCompactVariant && (jsx(Collapse, { collapsed: !isCollapsed, contentsClassName: "tw-flex tw-w-full tw-items-start tw-justify-between", className: "tw-w-full", children: jsxs("div", { className: cn("tw-flex tw-w-full tw-items-center tw-justify-between tw-self-stretch", isLargeVariant && "tw-h-squid-m"), children: [jsx("div", { className: "tw-flex tw-flex-1 tw-items-center tw-gap-squid-xxs tw-text-grey-400", children: jsxs(CaptionText, { className: "!tw-leading-[10px]", children: [balance, symbol] }) }), priceChange && jsx(PriceChange, { value: priceChange })] }) }))] })] }), jsx(Collapse, { collapsed: isCollapsed, children: jsx("ul", { className: cn("tw-flex tw-flex-col tw-items-start tw-justify-end tw-self-stretch", isCompactVariant && "tw-gap-squid-xs tw-pt-squid-xs"), children: tokenItems === null || tokenItems === void 0 ? void 0 : tokenItems.map((token) => (jsx(TokenGroup, Object.assign({}, token, { extraSpacing: false, variant: isCompactVariant ? "small" : "large", onClick: () => onChildClick === null || onChildClick === void 0 ? void 0 : onChildClick(token) }), token.chainImageUrl))) }) })] }));
19585
+ : [chainImageUrl] }) }))] }), jsxs("div", { style: {
19586
+ transition: `max-width ${ANIMATION_DURATIONS.GENERIC}ms ${ANIMATION_TIMINGS.GENERIC}`,
19587
+ }, className: cn("tw-flex tw-flex-1 tw-flex-col tw-text-grey-300", isCollapsed && "tw-gap-squid-xxs", !isSmallVariant && "tw-justify-center", isCompactVariant && "tw-max-w-[calc(100%-30px)]", isSmallVariant &&
19588
+ "tw-h-[45px] tw-max-w-[calc(100%-60px)] tw-justify-end", isLargeVariant &&
19589
+ (isCollapsed
19590
+ ? "tw-max-w-[calc(100%-80px)]"
19591
+ : "tw-max-w-[calc(100%-30px)]")), children: [jsxs("div", { className: cn("tw-flex tw-w-full tw-items-center tw-gap-squid-xxs tw-self-stretch", isSmallVariant ? "tw-h-[13px] tw-items-end" : "tw-items-center", isLargeVariant && "tw-h-squid-m"), children: [jsx(BodyText, { size: "small", className: "tw-h-fit tw-max-w-fit tw-flex-grow tw-truncate", style: {
19592
+ whiteSpace: "nowrap",
19593
+ overflow: "hidden",
19594
+ textOverflow: "ellipsis",
19595
+ }, children: name }), isCollapsible && (jsx(ChevronTopIcon, { style: {
19596
+ transition: `transform ${ANIMATION_DURATIONS.GENERIC}ms ${ANIMATION_TIMINGS.GENERIC}`,
19597
+ }, className: cn("tw-min-w-fit tw-text-grey-500", isCollapsed ? "tw-rotate-90" : "tw-rotate-180") })), balanceUsd ? (jsx("span", { className: cn("tw-flex tw-flex-1 tw-items-center tw-justify-end", isCollapsed ? "tw-text-grey-300" : "tw-text-grey-500"), children: isSmallVariant ? (jsxs(Fragment, { children: [jsx(CaptionText, { className: "tw-opacity-66", children: "$" }), jsx(CaptionText, { children: balanceUsd })] })) : (jsxs(Fragment, { children: [jsx(BodyText, { size: "small", className: "tw-opacity-66", children: "$" }), jsx(BodyText, { size: "small", children: balanceUsd })] })) })) : null] }), !isCompactVariant && (jsx(Collapse, { collapsed: !isCollapsed, contentsClassName: "tw-flex tw-w-full tw-items-start tw-justify-between", className: "tw-w-full", children: jsxs("div", { className: cn("tw-flex tw-w-full tw-items-center tw-justify-between tw-self-stretch", isLargeVariant && "tw-h-squid-m"), children: [jsx("div", { className: "tw-flex tw-flex-1 tw-items-center tw-gap-squid-xxs tw-text-grey-400", children: jsxs(CaptionText, { children: [balance, " ", symbol] }) }), priceChange && jsx(PriceChange, { value: priceChange })] }) }))] })] }), jsx(Collapse, { collapsed: isCollapsed, children: jsx("ul", { className: cn("tw-flex tw-flex-col tw-items-start tw-justify-end tw-self-stretch", isCompactVariant && "tw-gap-squid-xs tw-pt-squid-xs"), children: tokenItems === null || tokenItems === void 0 ? void 0 : tokenItems.map((token) => (jsx(TokenGroup, Object.assign({}, token, { extraSpacing: false, variant: isCompactVariant ? "small" : "large", onClick: () => onChildClick === null || onChildClick === void 0 ? void 0 : onChildClick(token) }), token.chainImageUrl + token.symbol))) }) })] }));
19535
19598
  }
19536
19599
 
19537
19600
  function ActionLayout({ lineCap = jsx(Timeline.CapTop, {}), status = "executed", showTimeline = true, showBody = true, nextStatus, statusIcon, description, title, icon, children, }) {
@@ -19672,7 +19735,7 @@ function TransactionAction({ type, props }) {
19672
19735
  }
19673
19736
 
19674
19737
  function Transfer({ isLoading, from, to, className }) {
19675
- return (jsx("div", { className: cn("tw-flex tw-items-center tw-gap-squid-xxs", className), children: jsxs(Join, { glue: () => jsx(ChevronLargeRightIcon, { className: "tw-text-grey-500" }), children: [isLoading ? jsx(TextSkeleton, {}) : from, isLoading ? jsx(TextSkeleton, {}) : to] }) }));
19738
+ return (jsx("div", { className: cn("tw-flex tw-max-w-full tw-items-center tw-gap-squid-xxs", className), children: jsxs(Join, { glue: () => jsx(ChevronLargeRightIcon, { className: "tw-text-grey-500" }), children: [isLoading ? (jsx(TextSkeleton, {})) : typeof from === "string" ? (jsx(CaptionText, { truncate: true, children: from })) : (from), isLoading ? (jsx(TextSkeleton, {})) : typeof to === "string" ? (jsx(CaptionText, { truncate: true, children: to })) : (to)] }) }));
19676
19739
  }
19677
19740
 
19678
19741
  function TransactionItem({ className, isLoading = false, status, image, type, hash, fromChain, toChain, fromAmount, toAmount, timestamp, variant = "full", }) {
@@ -19792,6 +19855,8 @@ function Toast({ headerContent, actionsContent, description, chipLabel, title, }
19792
19855
  }, rounded: "sm", children: [headerContent, jsx("header", { className: "tw-flex tw-flex-col tw-items-center tw-justify-center tw-self-stretch tw-px-0 tw-py-squid-xxs", children: jsx(BodyText, { size: "small", className: "tw-text-grey-100", children: title }) }), jsx(CaptionText, { className: "tw-text-center tw-text-material-light-thick", children: description }), jsx("menu", { className: "tw-flex tw-flex-col tw-items-center tw-justify-center tw-gap-squid-xs tw-self-stretch tw-pt-squid-xs", children: actionsContent }), chipLabel && (jsx(Chip, { label: chipLabel, className: "tw-absolute tw-right-squid-xs tw-top-squid-xs" }))] }));
19793
19856
  }
19794
19857
 
19858
+ const BACKGROUND_COLOR_CSS_VARIABLE = "--token-details-view-bg-color";
19859
+ const TEXT_COLOR_CSS_VARIABLE = "--token-details-view-text-color";
19795
19860
  const DEFAULT_TIMEFRAME = "1D";
19796
19861
  const DefaultChart = ({ timeframe, }) => (jsx("div", { className: "tw-flex tw-h-full tw-w-full tw-items-center tw-justify-center", children: jsxs(BodyText, { size: "small", children: ["Chart (", timeframe, ")"] }) }));
19797
19862
  const TokenModalHeader = ({ token, chain, onLikeToken, onClose, isFavorite, }) => (jsxs("div", { className: "tw-flex tw-w-full tw-items-start tw-justify-between", children: [jsx("div", { className: "tw-flex tw-items-center tw-gap-squid-xs tw-pb-squid-xs", children: jsx(BadgeImage, { image: {
@@ -19809,34 +19874,35 @@ const TokenInfo = ({ token, tokenPrice, priceChange, loading, }) => (jsxs("div",
19809
19874
  const BalanceInfo = ({ balance, balanceUSD, token, loading, }) => (jsxs("div", { className: "tw-flex tw-flex-col", children: [jsx(CaptionText, { className: "tw-text-grey-400", children: "Balance" }), jsxs("div", { className: "tw-flex tw-flex-row tw-justify-between", children: [jsxs("span", { className: "tw-flex tw-flex-row tw-items-center tw-gap-squid-xxs", children: [jsx("img", { src: token.image, alt: token.name, className: "tw-h-squid-m tw-w-squid-m tw-rounded-full" }), jsxs(BodyText, { size: "small", loading: { isLoading: loading, width: "80px" }, children: [balance, " ", token.symbol] })] }), jsxs(CaptionText, { className: "tw-text-grey-500", loading: { isLoading: loading, width: "60px" }, children: [jsx("span", { className: "tw-opacity-66", children: "$" }), balanceUSD] })] })] }));
19810
19875
  const MarketDataItem = ({ label, value, showDollar, loading, }) => (jsxs("div", { className: "tw-flex tw-flex-col", children: [jsx(CaptionText, { className: "tw-text-grey-500", children: label }), jsxs(CaptionText, { loading: { isLoading: loading, width: "60px" }, children: [showDollar && jsx("span", { className: "tw-text-grey-500", children: "$" }), value] })] }));
19811
19876
  const TokenMarketData = ({ volume24h, marketCap, totalSupply, loading, }) => (jsxs("div", { className: "tw-flex tw-h-full tw-w-full tw-flex-row tw-items-center tw-justify-between", children: [jsx(MarketDataItem, { label: "24h volume", value: volume24h, showDollar: true, loading: loading }), jsx(MarketDataItem, { label: "Market cap", value: marketCap, showDollar: true, loading: loading }), jsx(MarketDataItem, { label: "Total supply", value: totalSupply, loading: loading })] }));
19812
- const SwapButton = ({ label, color, icon, onClick, textColor, }) => (jsxs("div", { className: "tw-flex tw-flex-1 tw-flex-col tw-items-center tw-justify-center tw-gap-squid-xs", children: [jsx(IconButton, { icon: icon, className: "tw-text-grey-900", style: {
19813
- height: "40px",
19814
- width: "40px",
19815
- borderRadius: "100%",
19816
- backgroundColor: color,
19817
- color: textColor,
19818
- }, onClick: onClick }), jsx(CaptionText, { className: "tw-text-grey-400", children: label })] }));
19819
- const SwapButtons = ({ token, onSwapFrom, onSwapTo, }) => (jsxs("div", { className: "tw-flex tw-justify-between tw-py-5", children: [jsx(SwapButton, { label: "Swap From", color: token.color, textColor: token.textColor, icon: jsx(ArrowUpIcon, {}), onClick: () => {
19820
- onSwapFrom({ address: token.address, chainId: token.chainId });
19821
- } }), jsx(SwapButton, { label: "Swap To", color: token.color, textColor: token.textColor, icon: jsx(ArrowDownIcon, {}), onClick: () => {
19822
- onSwapTo({ address: token.address, chainId: token.chainId });
19823
- } })] }));
19824
- const TimeframeChip = ({ label, isSelected, onClick, }) => (jsx(Chip, { className: cn("tw-w-squid-xl tw-cursor-pointer hover:tw-bg-material-light-thin", isSelected
19825
- ? "!tw-bg-grey-300 !tw-text-grey-900"
19826
- : "tw-bg-transparent !tw-text-grey-600"), label: label, onClick: onClick }));
19877
+ const FooterButton = (_a) => {
19878
+ var { icon, label } = _a, props = __rest$1(_a, ["icon", "label"]);
19879
+ return (jsxs("div", { className: "tw-flex tw-flex-1 tw-flex-col tw-items-center tw-justify-center tw-gap-squid-xs", children: [jsx("button", Object.assign({}, props, { className: "tw-flex tw-h-squid-xl tw-w-squid-xl tw-items-center tw-justify-center tw-rounded-full tw-border tw-border-material-light-thin tw-text-grey-900 tw-shadow-elevation-light-1 disabled:tw-bg-grey-700", style: props.disabled
19880
+ ? undefined
19881
+ : {
19882
+ backgroundColor: `var(${BACKGROUND_COLOR_CSS_VARIABLE})`,
19883
+ color: `var(${TEXT_COLOR_CSS_VARIABLE})`,
19884
+ }, children: icon })), jsx(CaptionText, { className: props.disabled ? "tw-text-grey-700" : "tw-text-grey-400", children: label })] }));
19885
+ };
19886
+ const FooterButtons = ({ buttons }) => (jsx("div", { className: "tw-flex tw-justify-between tw-py-5", children: buttons.map((button) => (jsx(FooterButton, Object.assign({}, button), button.label))) }));
19887
+ const TimeframeChip = ({ label, isSelected, onClick, }) => (jsx("button", { onClick: onClick, className: "tw-rounded-squid-m", children: jsx(Chip, { className: cn("tw-w-squid-xl tw-cursor-pointer hover:tw-bg-material-light-thin", isSelected
19888
+ ? "!tw-bg-grey-300 !tw-text-grey-900"
19889
+ : "tw-bg-transparent !tw-text-grey-600"), label: label }) }));
19827
19890
  const ChartTimeframeSelector = ({ selectedTimeframe, onTimeframeChange, }) => {
19828
19891
  const timeframes = ["1H", "1D", "1W", "1Y"];
19829
19892
  return (jsx("div", { className: "tw-mt-squid-s tw-flex tw-justify-center tw-gap-squid-xs", children: timeframes.map((timeframe) => (jsx(TimeframeChip, { label: timeframe, isSelected: selectedTimeframe === timeframe, onClick: () => {
19830
19893
  onTimeframeChange(timeframe);
19831
19894
  } }, timeframe))) }));
19832
19895
  };
19833
- const TokenDetailsView = ({ isOpen, onClose, token, chain, tokenPrice, priceChange, balance, balanceUSD, volume24h, marketCap, totalSupply, loading, onLikeToken, isFavorite, Chart = DefaultChart, initialTimeframe = DEFAULT_TIMEFRAME, onTimeframeChange = () => { }, onSwapFrom, onSwapTo, }) => {
19896
+ const TokenDetailsView = ({ isOpen, onClose, token, chain, tokenPrice, priceChange, balance, balanceUSD, volume24h, marketCap, totalSupply, loading, onLikeToken, isFavorite, Chart = DefaultChart, initialTimeframe = DEFAULT_TIMEFRAME, onTimeframeChange = () => { }, footerButtons, backdropStyle, colors, }) => {
19834
19897
  const [selectedTimeframe, setSelectedTimeframe] = useState(initialTimeframe);
19835
19898
  const handleTimeframeChange = (timeframe) => {
19836
19899
  setSelectedTimeframe(timeframe);
19837
19900
  onTimeframeChange(timeframe);
19838
19901
  };
19839
- return (jsx(Modal, { animateOpacity: true, isOpen: isOpen, onBackdropClick: onClose, width: "extra-large", className: "tw-my-auto", children: jsxs(ModalContent, { className: "tw-flex tw-min-h-[631px] tw-flex-col !tw-bg-grey-900 tw-pt-squid-m", children: [jsxs("div", { className: "tw-px-squid-m", children: [jsx(TokenModalHeader, { token: token, chain: chain, onLikeToken: onLikeToken, isFavorite: isFavorite, onClose: onClose }), jsx(TokenInfo, { token: token, tokenPrice: tokenPrice, priceChange: priceChange, loading: loading })] }), jsxs("div", { className: "tw-flex tw-w-full tw-grow tw-flex-col tw-justify-between tw-text-center", children: [jsx("span", { className: "tw-flex tw-h-full tw-grow tw-items-center tw-justify-center", children: loading ? jsx(Loader, {}) : jsx(Chart, { timeframe: selectedTimeframe }) }), jsx(ChartTimeframeSelector, { selectedTimeframe: selectedTimeframe, onTimeframeChange: handleTimeframeChange })] }), jsx("hr", { className: "tw-my-squid-xs tw-h-px tw-border-0 tw-bg-material-light-thin" }), jsxs("div", { className: "tw-flex tw-flex-col", children: [jsxs("div", { className: "tw-gap-squid-sm tw-flex tw-flex-col tw-px-squid-m", children: [jsx(BalanceInfo, { balance: balance, balanceUSD: balanceUSD, token: token, loading: loading }), jsx("hr", { className: "tw-my-squid-xs tw-h-px tw-border-0 tw-bg-material-light-thin" }), jsx(TokenMarketData, { volume24h: volume24h, marketCap: marketCap, totalSupply: totalSupply, loading: loading })] }), jsx("hr", { className: "tw-my-squid-xs tw-h-px tw-border-0 tw-bg-material-light-thin" }), jsx(SwapButtons, { token: token, onSwapFrom: onSwapFrom, onSwapTo: onSwapTo })] })] }) }));
19902
+ return (jsx(Modal, { animateOpacity: true, isOpen: isOpen, onBackdropClick: onClose, width: "extra-large", className: "tw-my-auto", backdropStyle: backdropStyle, children: jsxs(ModalContent, { style: {
19903
+ [BACKGROUND_COLOR_CSS_VARIABLE]: colors === null || colors === void 0 ? void 0 : colors.backgroundColor,
19904
+ [TEXT_COLOR_CSS_VARIABLE]: colors === null || colors === void 0 ? void 0 : colors.textColor,
19905
+ }, className: "tw-flex tw-min-h-[631px] tw-flex-col !tw-bg-grey-900 tw-pt-squid-m", children: [jsxs("div", { className: "tw-px-squid-m", children: [jsx(TokenModalHeader, { token: token, chain: chain, onLikeToken: onLikeToken, isFavorite: isFavorite, onClose: onClose }), jsx(TokenInfo, { token: token, tokenPrice: tokenPrice, priceChange: priceChange, loading: loading })] }), jsxs("div", { className: "tw-flex tw-w-full tw-grow tw-flex-col tw-justify-between tw-text-center", children: [jsx("span", { className: "tw-flex tw-h-full tw-grow tw-items-center tw-justify-center", children: loading ? jsx(Loader, {}) : jsx(Chart, { timeframe: selectedTimeframe }) }), jsx(ChartTimeframeSelector, { selectedTimeframe: selectedTimeframe, onTimeframeChange: handleTimeframeChange })] }), jsx("hr", { className: "tw-my-squid-xs tw-h-px tw-border-0 tw-bg-material-light-thin" }), jsxs("div", { className: "tw-flex tw-flex-col", children: [jsxs("div", { className: "tw-gap-squid-sm tw-flex tw-flex-col tw-px-squid-m", children: [jsx(BalanceInfo, { balance: balance, balanceUSD: balanceUSD, token: token, loading: loading }), jsx("hr", { className: "tw-my-squid-xs tw-h-px tw-border-0 tw-bg-material-light-thin" }), jsx(TokenMarketData, { volume24h: volume24h, marketCap: marketCap, totalSupply: totalSupply, loading: loading })] }), jsx("hr", { className: "tw-my-squid-xs tw-h-px tw-border-0 tw-bg-material-light-thin" }), jsx(FooterButtons, { buttons: footerButtons })] })] }) }));
19840
19906
  };
19841
19907
 
19842
19908
  const WIDTH_SM = "69";
@@ -27559,16 +27625,16 @@ function FilterButton({ selected, numApplied = 0, onClick, }) {
27559
27625
  : "!tw-border-transparent !tw-bg-grey-800 !tw-text-grey-500"), onClick: onClick, children: jsx(FilterIcon, {}) }), numApplied > 0 && (jsx("div", { className: "tw-absolute tw-right-0 tw-top-0 tw-h-squid-m tw-w-squid-xl -tw-translate-y-1/2 tw-translate-x-1/2 tw-rounded-full tw-bg-highlight-700 tw-text-center tw-leading-[1]", children: jsx(CaptionText, { children: numApplied }) }))] }));
27560
27626
  }
27561
27627
 
27562
- function SettingsButton({ label, isSelected = false, onClick, }) {
27563
- return (jsx("button", { onClick: onClick, className: cn("tw-flex tw-h-[30px] tw-items-center tw-justify-center tw-self-stretch tw-rounded-squid-xs tw-border-2 tw-border-transparent tw-p-squid-xs -tw-outline-offset-2 hover:tw-bg-material-light-thin", isSelected && "tw-outline tw-outline-2 tw-outline-royal-500"), children: jsx(CaptionText, { className: "!tw-font-medium", children: label }) }));
27564
- }
27565
-
27566
27628
  const IconButton = forwardRef((_a, ref) => {
27567
27629
  var { icon, disabled = false } = _a, props = __rest$1(_a, ["icon", "disabled"]);
27568
27630
  return (jsx("button", Object.assign({}, props, { ref: ref, disabled: disabled, className: cn("tw-flex tw-h-8 tw-w-8 tw-min-w-8 tw-items-center tw-justify-center tw-rounded-squid-xs hover:tw-bg-material-light-thin", disabled ? "tw-text-grey-600" : "tw-text-grey-300", props.className), children: icon })));
27569
27631
  });
27570
27632
  IconButton.displayName = "IconButton";
27571
27633
 
27634
+ function SettingsButton({ label, isSelected = false, onClick, }) {
27635
+ return (jsx("button", { onClick: onClick, className: cn("tw-flex tw-h-[30px] tw-items-center tw-justify-center tw-self-stretch tw-rounded-squid-xs tw-border-2 tw-border-transparent tw-p-squid-xs -tw-outline-offset-2 hover:tw-bg-material-light-thin", isSelected && "tw-outline tw-outline-2 tw-outline-royal-500"), children: jsx(CaptionText, { className: "!tw-font-medium", children: label }) }));
27636
+ }
27637
+
27572
27638
  function AssetsView({ chains, favoriteTokens, popularTokens, userTokens, }) {
27573
27639
  const matchesMobileLg = useMediaQuery(MEDIA_QUERIES.MOBILE_LG.media);
27574
27640
  return (jsxs(ProductCard, { children: [jsx(NavigationBar, { displayBackButton: true, subtitle: "Select a token to receive" }), jsx("div", { className: "tw-max-h-[60px] tw-px-squid-m tw-py-squid-xs", children: jsx(Input, {}) }), jsx(BorderedContainer, { children: jsxs("div", { className: cn("tw-grid", matchesMobileLg
@@ -69536,7 +69602,17 @@ function rgbToHex(r, g, b) {
69536
69602
  // let bgColor = '#17191C'
69537
69603
  // let resultingColor = blendColors(foregroundColor, bgColor)
69538
69604
  // console.log(resultingColor) // Output: ~#2f3033
69539
- function blendColors(foreground, background, factor = 1) {
69605
+ function blendColors(foreground, background) {
69606
+ const fg = hexToRgb(foreground);
69607
+ const bg = hexToRgb(background);
69608
+ if (fg == null || bg == null)
69609
+ return null;
69610
+ const r = Math.round(fg.r * fg.a + bg.r * (1 - fg.a));
69611
+ const g = Math.round(fg.g * fg.a + bg.g * (1 - fg.a));
69612
+ const b = Math.round(fg.b * fg.a + bg.b * (1 - fg.a));
69613
+ return rgbToHex(r, g, b);
69614
+ }
69615
+ function adjustColorForContrast(foreground, background, factor = 1) {
69540
69616
  const fg = parseColor(foreground);
69541
69617
  const bg = parseColor(background);
69542
69618
  if (fg == null || bg == null)
@@ -69594,4 +69670,4 @@ function ThemeProvider(_a) {
69594
69670
  return (jsx("div", Object.assign({}, props, { style: Object.assign(Object.assign({}, props.style), parsedStyle), "data-squid-theme-type": themeType, className: cn("tw-group tw-relative tw-flex tw-font-squid-main tw-h-d-screen mobile-lg:tw-h-auto", props.className), children: children })));
69595
69671
  }
69596
69672
 
69597
- export { ANIMATION_DURATIONS, ActionLayout, ActionLineOutRow, ActionProperties, ActionRow, ActionStatusRow, ActionWrapper, AddressButton, AnimationWrapper, Announcement, AppContainer, Approve, ApproveAction, ArrowBottomTopIcon, ArrowButton, ArrowCornerDownRightIcon, ArrowDownIcon, ArrowLeftIcon, ArrowOutOfBoxIcon, ArrowRightDownCircleIcon, ArrowRightDownIcon, ArrowRightIcon, ArrowRightUpCircleIcon, ArrowRightUpIcon, ArrowRotate, ArrowSplit, ArrowTriangle, ArrowUpIcon, ArrowWallDownIcon, ArrowsSwapIcon, AssetsButton, AssetsView, AtomIcon, BackpackIcon, BadgeImage, BankIcon, BellAlarmIcon, BlockSkeleton, BodyText, Boost, BoostBadge, BoostButton, BorderedContainer, Breadcrumb, BridgeAction, BridgeHeader, BridgeProperties, BridgeTransactionView, BrokenHeartIcon, BubblesIcon, Button$1 as Button, BuyNFTHeader, BuyNFTProperties, BuyNFTTransactionView, CSS_VARS, Calendar, CaptionText, CatSquareIcon, ChainLink, Checkmark1Icon, Checkmark2Icon, ChevronArrowIcon, ChevronDownSmallIcon, ChevronGrabberVerticalIcon, ChevronLargeDownIcon, ChevronLargeRightIcon, ChevronRightSmallIcon, ChevronTopIcon, ChevronTopSmallIcon, Chip, CircleMinusIcon, CirclePlusIcon, CircleX, CircleXFilledIcon, ClockOutlineIcon, ClockSolidIcon, CodeBracketsIcon, CodeSolidSquareIcon, CoinsAddIcon, CoinsIcon, CoinsOutlinedIcon, Collapse, CollapsibleMenu, CollectionIcon, ColorPaletteIcon, CommandIcon, CompassRoundOutlinedIcon, CompassRoundSolidIcon, ConsoleIcon, Copy, CopyIcon, CrossAnimatedIcon, CrossedOutSunSolidIcon, DashboardFast, DescriptionBlocks, DetailsToolbar, DiscordIcon, DockIconAnalytics, DockIconCheckout, DockIconHelp, DockIconProfile, DockIconScan, DockIconSwap, DockSwapIcon, DollarOutlinedIcon, DollarSolidIcon, DotGrid1x3HorizontalIcon, DropdownMenu, DropdownMenuItem, DropdownMenuTitle, EmojiMeh, EmojiSadIcon, EmptyHeartIcon, ErrorMessage, EthereumIcon, ExplosionIcon, EyeOpenIcon, FavouriteFilterIcon, FeeButton, FeesAction, FeesLines, FeesTotal, FileDownloadIcon, FilledHeartIcon, FilterAscendingIcon, FilterButton, FilterIcon, FilterTimelineIcon, GasIcon, GhostIcon, GithubIcon, HashLink, HeadingText, HeartSmallIcon, HelpIcon, HighestPriceRangeIcon, HistoryItem, HomeIcon, IconButton, IconLabel, Image$1 as Image, ImageIcon, ImageSparkle, ImageState, IncompleteAction, InfinityIcon, InfoBox, Inline, Input, InteractionHeader, InteractionProperties, InteractionTransactionView, Join, LaptopIcon, LightningIcon, LimitIcon, LinkIcon, List, ListItem, ListItemActionsButton, Loader, LoadingProvider, LoadingSkeleton, MEDIA_QUERIES, MainView, MarketCapIcon, MaxIcon, Menu, MenuItem, MenuSwapIcon, MirrorIcon, Modal, ModalContent, ModalContentDivider, MoonIcon, NavigationBar, NewspaperIcon, NotAllowedIcon, NumericInput, PathSquareIcon, PauseIcon, PercentIcon, PhoneIcon, PieChartIcon, PipeSeparator, PlusIcon, PoopIcon, PowerIcon, PriceChange, ProductCard, ProfileHeader, ProfileHeaderBackground, PropertiesLayout, PropertyListItem, PunkIcon, RangeInput, ReceiptBillIcon, ReceiveNFTAction, ReceiveTokensAction, RecipientView, RefreshIcon, ReorderIcon, RouteStep, STEP_ITEM_HEIGHT, SearchIcon, SectionTitle, SendTokensAction, SettingsButton, SettingsGearIcon, SettingsItem, SettingsSlider, SettingsSliderIcon, ShoppingBagIcon, SizeTransition, SmileIcon, SnapIcon, SortIcon, SparkleIcon, SparklesIcon, SquareArrowCenter, SquareArrowTopLeftIcon, SquareArrowTopRight2Icon, SquidLogo, SquidVector, StakeAction, StartAction, StocksIcon, SuccessAction, SunIcon, SunOutlinedIcon, SunriseIcon, SunriseSmallIcon, SwapAction, SwapConfiguration, SwapDetailsView, SwapErrorIcon, SwapHeader, SwapIcon, SwapInputsIcon, SwapProgressView, SwapProgressViewHeader, SwapProperties, SwapStepItem, SwapStepSeparator, SwapStepsCollapsed, SwapSuccessIcon, SwapTransactionView, SwapWarningIcon, Switch, TagIcon, TagIconFilled, TextSkeleton, ThemePreference, ThemeProvider, ThumbsUp, Tick, TimeFliesIcon, Timeline, Timestamp, Toast, TokenDetailsView, TokenGroup, TokenPair, Tooltip, TradingViewStepsIcon, TransactionAction, TransactionFilters, TransactionHeader, TransactionHeaderLayout, TransactionItem, TransactionProperties, TransactionSearch, TransactionState, TransactionView, TransactionViewLayout, Transfer, TranslateIcon, TriangleExclamation, UsdAmount, WalletFilledIcon, WalletIcon, WalletLink, WalletsView, WrapAction, XSocial, baseTailwindConfig, blendColors, cn, darkTheme, getColorBrightness, getContrastColor, getHexColorFromOpacityPercentage, getWalletCardBackground, hexToRgb, isValidHexColor, lightTheme, linkActionTimelineProps, parseColor, parseSquidTheme, pxToRem, remToPx, rgbToHex, spacing$1 as spacing, statusTextClassMap, transactionErrorPauseAnimation, transactionFailureAnimation, transactionHalfSuccessAnimation, transactionPendingAnimation, transactionProcessingAnimation, transactionRejectedAnimation, transactionSuccessAnimation, useCollapsibleMenu, useDropdownMenu, useMediaQuery, useOnResize, useRect, useTimer, useUserTheme, useVersion };
69673
+ export { ANIMATION_DURATIONS, AccountsButton, ActionLayout, ActionLineOutRow, ActionProperties, ActionRow, ActionStatusRow, ActionWrapper, AddressButton, AnimationWrapper, Announcement, AppContainer, Approve, ApproveAction, ArrowBottomTopIcon, ArrowButton, ArrowCornerDownRightIcon, ArrowDownIcon, ArrowLeftIcon, ArrowOutOfBoxIcon, ArrowRightDownCircleIcon, ArrowRightDownIcon, ArrowRightIcon, ArrowRightUpCircleIcon, ArrowRightUpIcon, ArrowRotate, ArrowSplit, ArrowTriangle, ArrowUpIcon, ArrowWallDownIcon, ArrowsSwapIcon, AssetsButton, AssetsView, AtomIcon, BackpackIcon, BadgeImage, BankIcon, BellAlarmIcon, BlockSkeleton, BodyText, Boost, BoostBadge, BoostButton, BorderedContainer, Breadcrumb, BridgeAction, BridgeHeader, BridgeProperties, BridgeTransactionView, BrokenHeartIcon, BubblesIcon, Button$1 as Button, BuyNFTHeader, BuyNFTProperties, BuyNFTTransactionView, CSS_VARS, Calendar, CaptionText, CatSquareIcon, CelebrateIcon, ChainLink, Checkmark1Icon, Checkmark2Icon, ChevronArrowIcon, ChevronDownSmallIcon, ChevronGrabberVerticalIcon, ChevronLargeDownIcon, ChevronLargeRightIcon, ChevronRightSmallIcon, ChevronTopIcon, ChevronTopSmallIcon, Chip, CircleMinusIcon, CirclePlusIcon, CircleX, CircleXFilledIcon, ClockOutlineIcon, ClockSolidIcon, CodeBracketsIcon, CodeSolidSquareIcon, CoinsAddIcon, CoinsIcon, CoinsOutlinedIcon, Collapse, CollapsibleMenu, CollectionIcon, ColorPaletteIcon, CommandIcon, CompassRoundOutlinedIcon, CompassRoundSolidIcon, ConsoleIcon, Copy, CopyIcon, CrossAnimatedIcon, CrossedOutSunSolidIcon, DashboardFast, DescriptionBlocks, DetailsToolbar, DiscordIcon, DockIconAnalytics, DockIconCheckout, DockIconHelp, DockIconProfile, DockIconScan, DockIconSwap, DockSwapIcon, DollarOutlinedIcon, DollarSolidIcon, DotGrid1x3HorizontalIcon, DropdownMenu, DropdownMenuItem, DropdownMenuTitle, EmojiMeh, EmojiSadIcon, EmptyHeartIcon, ErrorMessage, EthereumIcon, ExplosionIcon, EyeOpenIcon, FavouriteFilterIcon, FeeButton, FeesAction, FeesLines, FeesTotal, FileDownloadIcon, FilledHeartIcon, FilterAscendingIcon, FilterButton, FilterIcon, FilterTimelineIcon, GasIcon, GhostIcon, GithubIcon, HashLink, HeadingText, HeartSmallIcon, HelpIcon, HighestPriceRangeIcon, HistoryItem, HomeIcon, IconButton, IconLabel, Image$1 as Image, ImageGroup, ImageIcon, ImageSparkle, ImageState, IncompleteAction, InfinityIcon, InfoBox, Inline, Input, InteractionHeader, InteractionProperties, InteractionTransactionView, Join, LaptopIcon, LightningIcon, LimitIcon, LinkIcon, List, ListItem, ListItemActionsButton, Loader, LoadingProvider, LoadingSkeleton, MEDIA_QUERIES, MainView, MarketCapIcon, MaxIcon, Menu, MenuItem, MenuSwapIcon, MirrorIcon, Modal, ModalContent, ModalContentDivider, MoonIcon, NavigationBar, NewsIcon, NewspaperIcon, NotAllowedIcon, NumericInput, PathSquareIcon, PauseIcon, PercentIcon, PhoneIcon, PieChartIcon, PipeSeparator, PlusIcon, PoopIcon, PowerIcon, PriceChange, ProductCard, ProfileHeader, ProfileHeaderBackground, PropertiesLayout, PropertyListItem, PunkIcon, RangeInput, ReceiptBillIcon, ReceiveNFTAction, ReceiveTokensAction, RecipientView, RefreshIcon, ReorderIcon, RouteStep, STEP_ITEM_HEIGHT, SearchIcon, SectionTitle, SendTokensAction, SettingsButton, SettingsGearIcon, SettingsItem, SettingsSlider, SettingsSliderIcon, ShoppingBagIcon, SizeTransition, SmileFilledIcon, SmileIcon, SnapIcon, SortIcon, SparkleIcon, SparklesIcon, SquareArrowCenter, SquareArrowTopLeftIcon, SquareArrowTopRight2Icon, SquidLogo, SquidVector, StakeAction, StarLinesIcon, StartAction, StocksIcon, SuccessAction, SunIcon, SunOutlinedIcon, SunriseIcon, SunriseSmallIcon, SwapAction, SwapConfiguration, SwapDetailsView, SwapErrorIcon, SwapHeader, SwapIcon, SwapInputsIcon, SwapProgressView, SwapProgressViewHeader, SwapProperties, SwapStepItem, SwapStepSeparator, SwapStepsCollapsed, SwapSuccessIcon, SwapTransactionView, SwapWarningIcon, Switch, TagIcon, TagIconFilled, TextSkeleton, ThemePreference, ThemeProvider, ThumbsUp, Tick, TimeFliesIcon, Timeline, Timestamp, Toast, TokenDetailsView, TokenGroup, TokenPair, Tooltip, TradingViewStepsIcon, TransactionAction, TransactionFilters, TransactionHeader, TransactionHeaderLayout, TransactionItem, TransactionProperties, TransactionSearch, TransactionState, TransactionView, TransactionViewLayout, Transfer, TranslateIcon, TriangleExclamation, UsdAmount, WalletFilledIcon, WalletIcon, WalletLink, WalletsView, WrapAction, XSocial, adjustColorForContrast, baseTailwindConfig, blendColors, cn, darkTheme, getColorBrightness, getContrastColor, getHexColorFromOpacityPercentage, getWalletCardBackground, hexToRgb, isValidHexColor, lightTheme, linkActionTimelineProps, parseColor, parseSquidTheme, pxToRem, remToPx, rgbToHex, spacing$1 as spacing, statusTextClassMap, transactionErrorPauseAnimation, transactionFailureAnimation, transactionHalfSuccessAnimation, transactionPendingAnimation, transactionProcessingAnimation, transactionRejectedAnimation, transactionSuccessAnimation, useCollapsibleMenu, useDropdownMenu, useMediaQuery, useOnResize, useRect, useTimer, useUserTheme, useVersion };
@@ -0,0 +1,6 @@
1
+ interface ImageGroupProps {
2
+ imageUrls: string[];
3
+ badgeUrl?: string;
4
+ }
5
+ export declare function ImageGroup({ imageUrls, badgeUrl }: ImageGroupProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
@@ -1,6 +1,7 @@
1
1
  export * from "./BadgeImage";
2
2
  export * from "./IconLabel";
3
3
  export * from "./Image";
4
+ export * from "./ImageGroup";
4
5
  export * from "./LoadingSkeleton";
5
6
  export * from "./PriceChange";
6
7
  export * from "./TransactionState";