@0xsquid/ui 2.6.3 → 2.6.4

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 (31) hide show
  1. package/dist/cjs/index.js +170 -35
  2. package/dist/cjs/types/components/buttons/Button.d.ts +4 -1
  3. package/dist/cjs/types/components/controls/Switch.d.ts +1 -1
  4. package/dist/cjs/types/components/icons/Generic.d.ts +8 -0
  5. package/dist/cjs/types/components/lists/ListItem.d.ts +4 -1
  6. package/dist/cjs/types/core/utils.d.ts +7 -0
  7. package/dist/cjs/types/hooks/useColorFromSeed.d.ts +1 -0
  8. package/dist/cjs/types/stories/buttons/AssetsButton.stories.d.ts +1 -0
  9. package/dist/cjs/types/stories/buttons/Button.stories.d.ts +30 -15
  10. package/dist/cjs/types/stories/controls/Switch.stories.d.ts +5 -3
  11. package/dist/cjs/types/stories/lists/ListItem.stories.d.ts +3 -0
  12. package/dist/cjs/types/types/components.d.ts +1 -1
  13. package/dist/cjs/types/types/config.d.ts +3 -3
  14. package/dist/cjs/types/types/index.d.ts +1 -1
  15. package/dist/esm/index.js +168 -36
  16. package/dist/esm/types/components/buttons/Button.d.ts +4 -1
  17. package/dist/esm/types/components/controls/Switch.d.ts +1 -1
  18. package/dist/esm/types/components/icons/Generic.d.ts +8 -0
  19. package/dist/esm/types/components/lists/ListItem.d.ts +4 -1
  20. package/dist/esm/types/core/utils.d.ts +7 -0
  21. package/dist/esm/types/hooks/useColorFromSeed.d.ts +1 -0
  22. package/dist/esm/types/stories/buttons/AssetsButton.stories.d.ts +1 -0
  23. package/dist/esm/types/stories/buttons/Button.stories.d.ts +30 -15
  24. package/dist/esm/types/stories/controls/Switch.stories.d.ts +5 -3
  25. package/dist/esm/types/stories/lists/ListItem.stories.d.ts +3 -0
  26. package/dist/esm/types/types/components.d.ts +1 -1
  27. package/dist/esm/types/types/config.d.ts +3 -3
  28. package/dist/esm/types/types/index.d.ts +1 -1
  29. package/dist/index.css +1 -1
  30. package/dist/index.d.ts +21 -7
  31. package/package.json +1 -1
@@ -1,11 +1,13 @@
1
- import { Meta, StoryObj } from "@storybook/react";
1
+ import { type Meta, type StoryObj } from "@storybook/react";
2
2
  import { Switch } from "../../components/controls/Switch";
3
3
  declare const meta: Meta<typeof Switch>;
4
4
  export default meta;
5
5
  type Story = StoryObj<typeof meta>;
6
6
  export declare const LargeChecked: Story;
7
7
  export declare const LargeUnchecked: Story;
8
- export declare const LargeDisabled: Story;
8
+ export declare const LargeCheckedDisabled: Story;
9
+ export declare const LargeUncheckedDisabled: Story;
9
10
  export declare const SmallChecked: Story;
10
11
  export declare const SmallUnchecked: Story;
11
- export declare const SmallDisabled: Story;
12
+ export declare const SmallCheckedDisabled: Story;
13
+ export declare const SmallUncheckedDisabled: Story;
@@ -33,3 +33,6 @@ export declare const SmallWithoutExtraPadding: Story;
33
33
  export declare const LargeWithoutExtraPadding: Story;
34
34
  export declare const LargeWithDropdownMenu: Story;
35
35
  export declare const LargeWithMultilineSubtitle: Story;
36
+ export declare const SmallWithSwitchControl: Story;
37
+ export declare const LargeWithSwitchControl: Story;
38
+ export declare const LargeWithSwitchControlDisabled: Story;
@@ -1,7 +1,7 @@
1
1
  export type TextSize = "small" | "medium" | "large";
2
2
  export type SwitchSize = "small" | "large";
3
3
  export type ButtonVariant = "primary" | "secondary" | "tertiary";
4
- export type ButtonSize = "md" | "lg";
4
+ export type ButtonSize = "sm" | "md" | "lg";
5
5
  export type SwapDirection = "from" | "to";
6
6
  export type BoostMode = "normal" | "boost";
7
7
  export type HistoryItemStatus = "completed" | "pending" | "failed" | "warning";
@@ -1,6 +1,6 @@
1
1
  import { type DeepPartial } from "./utils";
2
- declare const THEME_COLOR_KEYS: readonly ["grey-100", "grey-200", "grey-300", "grey-400", "grey-500", "grey-600", "grey-700", "grey-800", "grey-900", "royal-300", "royal-400", "royal-500", "royal-600", "royal-700", "highlight-700", "status-positive", "status-negative", "status-partial", "button-lg-primary-bg", "button-lg-primary-text", "button-lg-secondary-bg", "button-lg-secondary-text", "button-lg-tertiary-bg", "button-lg-tertiary-text", "button-md-primary-bg", "button-md-primary-text", "button-md-secondary-bg", "button-md-secondary-text", "button-md-tertiary-bg", "button-md-tertiary-text", "input-placeholder", "input-text", "input-selection", "input-bg", "animation-bg", "animation-text", "modal-backdrop", "menu-bg", "menu-text", "menu-backdrop", "material-light-thin", "material-light-average", "material-light-thick", "material-dark-thin", "material-dark-average", "material-dark-thick", "grey-100-005", "material-light-blend-grey-900", "material-light-blend-grey-800"];
3
- declare const THEME_BORDER_RADIUS_KEYS: readonly ["button-lg-primary", "button-lg-secondary", "button-lg-tertiary", "button-md-primary", "button-md-secondary", "button-md-tertiary", "container", "input", "menu-sm", "menu-lg", "modal"];
2
+ declare const THEME_COLOR_KEYS: readonly ["grey-100", "grey-200", "grey-300", "grey-400", "grey-500", "grey-600", "grey-700", "grey-800", "grey-900", "royal-300", "royal-400", "royal-500", "royal-600", "royal-700", "highlight-700", "status-positive", "status-negative", "status-partial", "button-lg-primary-bg", "button-lg-primary-text", "button-lg-secondary-bg", "button-lg-secondary-text", "button-lg-tertiary-bg", "button-lg-tertiary-text", "button-md-primary-bg", "button-md-primary-text", "button-md-secondary-bg", "button-md-secondary-text", "button-md-tertiary-bg", "button-md-tertiary-text", "button-sm-primary-bg", "button-sm-primary-text", "button-sm-secondary-bg", "button-sm-secondary-text", "button-sm-tertiary-bg", "button-sm-tertiary-text", "input-placeholder", "input-text", "input-selection", "input-bg", "animation-bg", "animation-text", "modal-backdrop", "menu-bg", "menu-text", "menu-backdrop", "material-light-thin", "material-light-average", "material-light-thick", "material-dark-thin", "material-dark-average", "material-dark-thick", "grey-100-005", "material-light-blend-grey-900", "material-light-blend-grey-800"];
3
+ declare const THEME_BORDER_RADIUS_KEYS: readonly ["button-lg-primary", "button-lg-secondary", "button-lg-tertiary", "button-md-primary", "button-md-secondary", "button-md-tertiary", "button-sm-primary", "button-sm-secondary", "button-sm-tertiary", "container", "input", "menu-sm", "menu-lg", "modal"];
4
4
  declare const THEME_FONT_SIZE_KEYS: readonly ["caption", "body-large", "body-medium", "body-small", "heading-small", "heading-medium", "heading-large"];
5
5
  declare const THEME_FONT_WEIGHT_KEYS: readonly ["caption", "body-small", "body-medium", "body-large", "heading-small", "heading-medium", "heading-large"];
6
6
  declare const THEME_FONT_FAMILY_KEYS: readonly ["squid-main"];
@@ -26,7 +26,7 @@ export interface InternalTheme {
26
26
  * These colors are optional
27
27
  * and will be generated internally using the base colors if not provided
28
28
  */
29
- type OptionalColorsKeys = "button-lg-primary-bg" | "button-lg-primary-text" | "button-lg-secondary-bg" | "button-lg-secondary-text" | "button-lg-tertiary-bg" | "button-lg-tertiary-text" | "button-md-primary-bg" | "button-md-primary-text" | "button-md-secondary-bg" | "button-md-secondary-text" | "button-md-tertiary-bg" | "button-md-tertiary-text" | "input-placeholder" | "input-text" | "input-selection" | "input-bg" | "animation-bg" | "animation-text" | "modal-backdrop" | "menu-bg" | "menu-text" | "menu-backdrop";
29
+ type OptionalColorsKeys = "button-lg-primary-bg" | "button-lg-primary-text" | "button-lg-secondary-bg" | "button-lg-secondary-text" | "button-lg-tertiary-bg" | "button-lg-tertiary-text" | "button-md-primary-bg" | "button-md-primary-text" | "button-md-secondary-bg" | "button-md-secondary-text" | "button-md-tertiary-bg" | "button-md-tertiary-text" | "button-sm-primary-bg" | "button-sm-primary-text" | "button-sm-secondary-bg" | "button-sm-secondary-text" | "button-sm-tertiary-bg" | "button-sm-tertiary-text" | "input-placeholder" | "input-text" | "input-selection" | "input-bg" | "animation-bg" | "animation-text" | "modal-backdrop" | "menu-bg" | "menu-text" | "menu-backdrop";
30
30
  /**
31
31
  * These colors are generated internally using the base colors
32
32
  */
@@ -1,4 +1,4 @@
1
1
  export type { Theme, PublicTheme, Settings } from "./config";
2
2
  export * from "./utils";
3
- export type { SwapState, ThemeType, SwapStep, HistoryItemStatus, ActionStatus, AssetsButtonVariant, ButtonVariant, ButtonSize, DescriptionBlock, } from "./components";
3
+ export type { SwapState, ThemeType, SwapStep, HistoryItemStatus, ActionStatus, AssetsButtonVariant, ButtonVariant, ButtonSize, DescriptionBlock, DropdownPosition, } from "./components";
4
4
  export { themeKeysToCssVariables } from "./config";
package/dist/esm/index.js CHANGED
@@ -97,6 +97,13 @@ const THEME_COLOR_KEYS = [
97
97
  "button-md-secondary-text",
98
98
  "button-md-tertiary-bg",
99
99
  "button-md-tertiary-text",
100
+ // sm button variant colors
101
+ "button-sm-primary-bg",
102
+ "button-sm-primary-text",
103
+ "button-sm-secondary-bg",
104
+ "button-sm-secondary-text",
105
+ "button-sm-tertiary-bg",
106
+ "button-sm-tertiary-text",
100
107
  // input colors
101
108
  "input-placeholder",
102
109
  "input-text",
@@ -126,12 +133,18 @@ const THEME_COLOR_KEYS = [
126
133
  "material-light-blend-grey-800",
127
134
  ];
128
135
  const THEME_BORDER_RADIUS_KEYS = [
136
+ // lg button
129
137
  "button-lg-primary",
130
138
  "button-lg-secondary",
131
139
  "button-lg-tertiary",
140
+ // md button
132
141
  "button-md-primary",
133
142
  "button-md-secondary",
134
143
  "button-md-tertiary",
144
+ // sm button
145
+ "button-sm-primary",
146
+ "button-sm-secondary",
147
+ "button-sm-tertiary",
135
148
  "container",
136
149
  "input",
137
150
  "menu-sm",
@@ -2933,6 +2946,19 @@ function mapToCssVariables(obj) {
2933
2946
  return acc;
2934
2947
  }, {});
2935
2948
  }
2949
+ /**
2950
+ * Simple hash function to create a deterministic index from a given string.
2951
+ * @param {string} str - The input string to hash.
2952
+ * @param {number} max - The maximum value for the hash.
2953
+ * @returns {number} - The index within the array.
2954
+ */
2955
+ function hashStringToIndex(str, max) {
2956
+ let index = 0;
2957
+ for (let i = 0; i < str.length; i++) {
2958
+ index = (index * 31 + str.charCodeAt(i)) % max;
2959
+ }
2960
+ return index;
2961
+ }
2936
2962
 
2937
2963
  const spacing$1 = {
2938
2964
  "squid-xxs": "0.3125rem", // 5px
@@ -3327,12 +3353,18 @@ const defaultFontFamily = {
3327
3353
  "squid-main": "Geist, sans-serif",
3328
3354
  };
3329
3355
  const defaultBorderRadius = {
3356
+ // lg button
3330
3357
  "button-lg-primary": spacing$1["squid-xxl"],
3331
3358
  "button-lg-secondary": spacing$1["squid-xxl"],
3332
3359
  "button-lg-tertiary": spacing$1["squid-xxl"],
3360
+ // md button
3333
3361
  "button-md-primary": spacing$1["squid-m"],
3334
3362
  "button-md-secondary": spacing$1["squid-m"],
3335
3363
  "button-md-tertiary": spacing$1["squid-m"],
3364
+ // sm button
3365
+ "button-sm-primary": spacing$1["squid-m"],
3366
+ "button-sm-secondary": spacing$1["squid-m"],
3367
+ "button-sm-tertiary": spacing$1["squid-m"],
3336
3368
  container: spacing$1["squid-l"],
3337
3369
  input: "9999px",
3338
3370
  "menu-sm": spacing$1["squid-s"],
@@ -3374,18 +3406,27 @@ const lightTheme = {
3374
3406
  "animation-bg": "#B893EC",
3375
3407
  "animation-text": "#FBFBFD",
3376
3408
  // buttons
3409
+ // lg button
3377
3410
  "button-lg-primary-bg": "#B893EC",
3378
3411
  "button-lg-primary-text": "#FBFBFD",
3379
3412
  "button-lg-secondary-bg": "#17191C",
3380
3413
  "button-lg-secondary-text": "#EDEEF3",
3381
3414
  "button-lg-tertiary-bg": "#EDEEF3",
3382
3415
  "button-lg-tertiary-text": "#292C32",
3416
+ // md button
3383
3417
  "button-md-primary-bg": "#B893EC",
3384
3418
  "button-md-primary-text": "#FBFBFD",
3385
3419
  "button-md-secondary-bg": "#17191C",
3386
3420
  "button-md-secondary-text": "#EDEEF3",
3387
3421
  "button-md-tertiary-bg": "#EDEEF3",
3388
3422
  "button-md-tertiary-text": "#292C32",
3423
+ // sm button
3424
+ "button-sm-primary-bg": "#B893EC",
3425
+ "button-sm-primary-text": "#FBFBFD",
3426
+ "button-sm-secondary-bg": "#17191C",
3427
+ "button-sm-secondary-text": "#EDEEF3",
3428
+ "button-sm-tertiary-bg": "#EDEEF3",
3429
+ "button-sm-tertiary-text": "#292C32",
3389
3430
  // input
3390
3431
  "input-bg": "#FBFBFD",
3391
3432
  "input-placeholder": "#A7ABBE",
@@ -3434,18 +3475,27 @@ const darkTheme = {
3434
3475
  "animation-bg": "#9E79D2",
3435
3476
  "animation-text": "#FBFBFD",
3436
3477
  // buttons
3478
+ // lg button
3437
3479
  "button-lg-primary-bg": "#9E79D2",
3438
3480
  "button-lg-primary-text": "#FBFBFD",
3439
3481
  "button-lg-secondary-bg": "#FBFBFD",
3440
3482
  "button-lg-secondary-text": "#292C32",
3441
3483
  "button-lg-tertiary-bg": "#292C32",
3442
3484
  "button-lg-tertiary-text": "#D1D6E0",
3485
+ // md button
3443
3486
  "button-md-primary-bg": "#9E79D2",
3444
3487
  "button-md-primary-text": "#FBFBFD",
3445
3488
  "button-md-secondary-bg": "#FBFBFD",
3446
3489
  "button-md-secondary-text": "#292C32",
3447
3490
  "button-md-tertiary-bg": "#292C32",
3448
3491
  "button-md-tertiary-text": "#D1D6E0",
3492
+ // sm button
3493
+ "button-sm-primary-bg": "#9E79D2",
3494
+ "button-sm-primary-text": "#FBFBFD",
3495
+ "button-sm-secondary-bg": "#FBFBFD",
3496
+ "button-sm-secondary-text": "#292C32",
3497
+ "button-sm-tertiary-bg": "#292C32",
3498
+ "button-sm-tertiary-text": "#D1D6E0",
3449
3499
  // input
3450
3500
  "input-bg": "#17191C",
3451
3501
  "input-placeholder": "#676B7E",
@@ -3524,7 +3574,7 @@ const boxShadowClassMap = {
3524
3574
  xlarge: "tw-shadow-elevation-light-2",
3525
3575
  xxlarge: "tw-shadow-elevation-dark-1",
3526
3576
  };
3527
- const roundedClassMap$1 = {
3577
+ const roundedClassMap = {
3528
3578
  xxs: "tw-rounded-squid-xxs",
3529
3579
  xs: "tw-rounded-squid-xs",
3530
3580
  s: "tw-rounded-squid-s",
@@ -3553,7 +3603,7 @@ const borderClassMap = {
3553
3603
  };
3554
3604
  function Image$1(_a) {
3555
3605
  var { src, size = "medium", className: propsClassName, placeholderImageUrl, border = "none", rounded = "xxs", shadow = false, children, containerProps } = _a, props = __rest$1(_a, ["src", "size", "className", "placeholderImageUrl", "border", "rounded", "shadow", "children", "containerProps"]);
3556
- const className = cn("tw-object-cover tw-aspect-square tw-relative tw-duration-300 tw-transition-[width,height] tw-max-w-full tw-bg-grey-500", sizeClassMap$1[size], propsClassName, roundedClassMap$1[rounded], shadow && boxShadowClassMap[size], borderClassMap[border]);
3606
+ const className = cn("tw-object-cover tw-aspect-square tw-relative tw-duration-300 tw-transition-[width,height] tw-max-w-full tw-bg-grey-500", sizeClassMap$1[size], propsClassName, roundedClassMap[rounded], shadow && boxShadowClassMap[size], borderClassMap[border]);
3557
3607
  const [imageState, setImageState] = useState(ImageState.LOADED);
3558
3608
  return (jsxs("div", Object.assign({}, containerProps, { className: cn("tw-relative", containerProps === null || containerProps === void 0 ? void 0 : containerProps.className), children: [border === "gradient" && (jsx("span", { style: {
3559
3609
  borderRadius: gradientRoundedClassMap[rounded],
@@ -4012,6 +4062,12 @@ function ArrowExpandIcon({ className, size = "24", }) {
4012
4062
  function MoneyBagIcon({ className, size = "24", }) {
4013
4063
  return (jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: size, height: size, viewBox: "0 0 24 24", fill: "none", className: className, children: jsx("path", { d: "M9.5 8H14.5M9.5 8C9.5 8 3.99996 11 4 16C4.00003 20.0207 7.97931 21 12 21C16.0207 21 20 20.0207 20 16C20 11 14.5 8 14.5 8M9.5 8L8.55725 5.48601C8.23089 4.6157 8.56249 3.64123 9.45158 3.37016C10.1074 3.1702 10.9686 3 12 3C13.0314 3 13.8926 3.1702 14.5484 3.37016C15.4375 3.64123 15.7691 4.6157 15.4427 5.48601L14.5 8", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) }));
4014
4064
  }
4065
+ function PluginIcon({ size = "16", className, }) {
4066
+ return (jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: size, height: size, viewBox: "0 0 16 16", fill: "none", className: className, children: jsx("path", { d: "M6.66675 1.99998C6.66675 1.63179 6.36827 1.33331 6.00008 1.33331C5.63189 1.33331 5.33341 1.63179 5.33341 1.99998V3.99998H4.66675C3.56218 3.99998 2.66675 4.89541 2.66675 5.99998V9.33331C2.66675 11.1743 4.15913 12.6666 6.00008 12.6666H7.33341V14C7.33341 14.3682 7.63189 14.6666 8.00008 14.6666C8.36827 14.6666 8.66675 14.3682 8.66675 14V12.6666H10.0001C11.841 12.6666 13.3334 11.1743 13.3334 9.33331V5.99998C13.3334 4.89541 12.438 3.99998 11.3334 3.99998H10.6667V1.99998C10.6667 1.63179 10.3683 1.33331 10.0001 1.33331C9.63189 1.33331 9.33341 1.63179 9.33341 1.99998V3.99998H6.66675V1.99998Z", fill: "currentColor" }) }));
4067
+ }
4068
+ function CircleCheckIcon({ className, size = "24", }) {
4069
+ return (jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: size, height: size, viewBox: "0 0 24 24", fill: "none", className: className, children: jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2ZM15.774 10.1333C16.1237 9.70582 16.0607 9.0758 15.6332 8.72607C15.2058 8.37635 14.5758 8.43935 14.226 8.86679L10.4258 13.5116L9.20711 12.2929C8.81658 11.9024 8.18342 11.9024 7.79289 12.2929C7.40237 12.6834 7.40237 13.3166 7.79289 13.7071L9.79289 15.7071C9.99267 15.9069 10.2676 16.0129 10.5498 15.9988C10.832 15.9847 11.095 15.8519 11.274 15.6333L15.774 10.1333Z", fill: "currentColor" }) }));
4070
+ }
4015
4071
 
4016
4072
  function EmptyHeartIcon({ className }) {
4017
4073
  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" }) }));
@@ -4378,16 +4434,23 @@ function Chip(_a) {
4378
4434
  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) })));
4379
4435
  }
4380
4436
 
4437
+ const loaderSizeMap = {
4438
+ sm: "16px",
4439
+ md: "24px",
4440
+ lg: "36px",
4441
+ };
4381
4442
  const baseButtonClassName = "tw-border tw-relative tw-overflow-hidden tw-group/base-button tw-flex tw-items-center tw-justify-center";
4382
4443
  const buttonWidthClassnameMap = {
4444
+ sm: "tw-w-max",
4383
4445
  md: "tw-min-w-[60px]",
4384
4446
  lg: "tw-w-full",
4385
4447
  };
4386
4448
  const buttonSizeClassMap = {
4387
4449
  md: "tw-px-squid-xs tw-py-squid-xxs tw-h-squid-xl",
4388
4450
  lg: "tw-p-1 tw-h-button",
4451
+ sm: "tw-h-squid-l tw-px-squid-xs",
4389
4452
  };
4390
- const roundedClassMap = {
4453
+ const buttonRoundedClassMap = {
4391
4454
  lg: {
4392
4455
  primary: "tw-rounded-button-lg-primary",
4393
4456
  secondary: "tw-rounded-button-lg-secondary",
@@ -4398,6 +4461,11 @@ const roundedClassMap = {
4398
4461
  secondary: "tw-rounded-button-md-secondary",
4399
4462
  tertiary: "tw-rounded-button-md-tertiary",
4400
4463
  },
4464
+ sm: {
4465
+ primary: "tw-rounded-button-sm-primary",
4466
+ secondary: "tw-rounded-button-sm-secondary",
4467
+ tertiary: "tw-rounded-button-sm-tertiary",
4468
+ },
4401
4469
  };
4402
4470
  const buttonVariantClassMap = {
4403
4471
  lg: {
@@ -4410,22 +4478,24 @@ const buttonVariantClassMap = {
4410
4478
  secondary: "tw-bg-button-md-secondary-bg tw-text-button-md-secondary-text",
4411
4479
  tertiary: "tw-bg-button-md-tertiary-bg tw-text-button-md-tertiary-text",
4412
4480
  },
4481
+ sm: {
4482
+ primary: "tw-bg-button-sm-primary-bg tw-text-button-sm-primary-text",
4483
+ secondary: "tw-bg-button-sm-secondary-bg tw-text-button-sm-secondary-text",
4484
+ tertiary: "tw-bg-button-sm-tertiary-bg tw-text-button-sm-tertiary-text",
4485
+ },
4413
4486
  };
4414
4487
  // right now all variants have the same disabled styles
4415
4488
  // in the future, we can add more disabled styles for different variants
4416
4489
  const buttonDisabledClass = "!tw-bg-grey-800 !tw-text-grey-600 tw-cursor-not-allowed";
4417
4490
  const loadingClassname = "tw-invisible tw-opacity-0";
4418
4491
  function Button$1(_a) {
4419
- var { label, disabled = false, size, variant, icon, link, isLoading = false, showLoader = false, chip, containerClassName, anchorRef, buttonRef } = _a, props = __rest$1(_a, ["label", "disabled", "size", "variant", "icon", "link", "isLoading", "showLoader", "chip", "containerClassName", "anchorRef", "buttonRef"]);
4492
+ var { label, disabled = false, size, variant, icon, link, isLoading = false, showLoader = false, loaderSize = "md", chip, containerClassName, anchorRef, buttonRef } = _a, props = __rest$1(_a, ["label", "disabled", "size", "variant", "icon", "link", "isLoading", "showLoader", "loaderSize", "chip", "containerClassName", "anchorRef", "buttonRef"]);
4420
4493
  const chipElement = chip != null ? (jsx(Chip, Object.assign({}, chip, { className: cn("tw-absolute -tw-right-squid-xxs -tw-top-squid-xxs tw-z-10", chip.className) }))) : null;
4421
- const children = (jsxs(Fragment, { children: [!disabled && !isLoading && (jsx(ButtonHoverOverlay, { className: roundedClassMap[size][variant] })), jsx("div", { className: "tw-relative tw-z-[5] tw-flex tw-items-center tw-justify-center tw-gap-squid-xxs", children: label == null && icon == null ? (props.children) : size === "lg" ? (jsxs("span", { className: "tw-flex tw-items-center tw-justify-center tw-gap-squid-xs tw-px-squid-m", children: [showLoader && jsx(Loader, {}), jsx(BodyText, { className: isLoading ? loadingClassname : "", size: "medium", children: label })] })) : size === "md" ? (label != null && icon == null ? (
4422
- // label only
4423
- jsx(BodyText, { className: isLoading ? loadingClassname : "", size: "small", children: label })) : label == null && icon != null ? (
4424
- // icon only
4425
- isLoading ? null : (icon)) : (
4426
- // icon and label
4427
- jsxs(Fragment, { children: [icon, jsx(BodyText, { className: "tw-pr-1", size: "small", children: label })] }))) : null })] }));
4428
- const className = cn(baseButtonClassName, buttonSizeClassMap[size], buttonWidthClassnameMap[size], buttonVariantClassMap[size][variant], "tw-border-material-light-thin", !disabled && !isLoading && "hover:tw-border-material-light-average", roundedClassMap[size][variant],
4494
+ const children = (jsxs(Fragment, { children: [!disabled && !isLoading && (jsx(ButtonHoverOverlay, { className: buttonRoundedClassMap[size][variant] })), jsx("div", { className: "tw-relative tw-z-[5] tw-flex tw-items-center tw-justify-center tw-gap-squid-xxs", children: label == null && icon == null && !showLoader ? (props.children) : (jsxs("span", { className: cn("tw-flex tw-items-center tw-justify-center", size === "lg"
4495
+ ? "tw-gap-squid-xs tw-px-squid-m"
4496
+ : "tw-gap-squid-xxs"), children: [showLoader && jsx(Loader, { size: loaderSizeMap[loaderSize] }), !isLoading && icon, label != null &&
4497
+ (size === "sm" ? (jsx(CaptionText, { className: cn(isLoading && loadingClassname, icon != null && "tw-pr-1"), children: label })) : (jsx(BodyText, { className: cn(isLoading && loadingClassname, icon != null && "tw-pr-1"), size: size === "lg" ? "medium" : "small", children: label })))] })) })] }));
4498
+ const className = cn(baseButtonClassName, buttonSizeClassMap[size], buttonWidthClassnameMap[size], buttonVariantClassMap[size][variant], "tw-border-material-light-thin", !disabled && !isLoading && "hover:tw-border-material-light-average", buttonRoundedClassMap[size][variant],
4429
4499
  // disabled styles
4430
4500
  disabled && buttonDisabledClass, isLoading && "tw-cursor-not-allowed",
4431
4501
  // custom classes from props
@@ -4443,7 +4513,7 @@ function Button$1(_a) {
4443
4513
  const ButtonHoverOverlay = ({ className }) => {
4444
4514
  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) }));
4445
4515
  };
4446
- const ButtonWrapper = ({ children, size, variant, className, }) => (jsx("div", { className: cn("tw-relative", buttonWidthClassnameMap[size], roundedClassMap[size][variant], className), children: children }));
4516
+ const ButtonWrapper = ({ children, size, variant, className, }) => (jsx("div", { className: cn("tw-relative", buttonWidthClassnameMap[size], buttonRoundedClassMap[size][variant], className), children: children }));
4447
4517
 
4448
4518
  function AccountsButton(_a) {
4449
4519
  var { imageUrls } = _a, props = __rest$1(_a, ["imageUrls"]);
@@ -4469,6 +4539,26 @@ function ArrowButton(_a) {
4469
4539
  "aria-disabled:tw-bg-grey-600 aria-disabled:tw-text-grey-800"), children: jsx(ArrowRightIcon, {}) })] })));
4470
4540
  }
4471
4541
 
4542
+ const colors = [
4543
+ "#D94E41",
4544
+ "#E58845",
4545
+ "#D9BA21",
4546
+ "#B1CC29",
4547
+ "#66CC33",
4548
+ "#19A654",
4549
+ "#56BFB6",
4550
+ "#45B0E5",
4551
+ "#3973E5",
4552
+ "#7562D9",
4553
+ "#B167E5",
4554
+ "#E573BF",
4555
+ ];
4556
+ function useColorFromSeed(seed) {
4557
+ return useMemo(() => {
4558
+ return colors[hashStringToIndex(seed, colors.length)];
4559
+ }, [seed]);
4560
+ }
4561
+
4472
4562
  function Input(_a) {
4473
4563
  var { placeholder = "Search", showIcon = true, className, icon, isError = false, isWarning = false, containerClassName, actionButtonProps, autoFocusTimeout, inputRef: inputRefProp } = _a, props = __rest$1(_a, ["placeholder", "showIcon", "className", "icon", "isError", "isWarning", "containerClassName", "actionButtonProps", "autoFocusTimeout", "inputRef"]);
4474
4564
  const showActionButton = actionButtonProps != null;
@@ -19362,7 +19452,7 @@ const collapsedListItemClassMap = {
19362
19452
  large: "tw-w-[80px]",
19363
19453
  };
19364
19454
  function ListItem(_a) {
19365
- var { itemTitle, mainImageUrl, subtitle, subtitleOnHover, detail, icon, secondaryImageUrl, placeholderImageUrl, size = "large", mainIcon, className, isSelected = false, onDetailClick, showDetailOnHoverOnly, rounded = "xxs", detailButtonClassName, loading, containerProps, compactOnMobile, extraPadding = true, itemsContainerRef, dropdownMenuContent, imageGroup, multilineSubtitle = false } = _a, props = __rest$1(_a, ["itemTitle", "mainImageUrl", "subtitle", "subtitleOnHover", "detail", "icon", "secondaryImageUrl", "placeholderImageUrl", "size", "mainIcon", "className", "isSelected", "onDetailClick", "showDetailOnHoverOnly", "rounded", "detailButtonClassName", "loading", "containerProps", "compactOnMobile", "extraPadding", "itemsContainerRef", "dropdownMenuContent", "imageGroup", "multilineSubtitle"]);
19455
+ var { itemTitle, mainImageUrl, subtitle, subtitleOnHover, detail, icon, secondaryImageUrl, placeholderImageUrl, size = "large", mainIcon, className, isSelected = false, onDetailClick, showDetailOnHoverOnly, rounded = "xxs", detailButtonClassName, loading, containerProps, compactOnMobile, extraPadding = true, itemsContainerRef, dropdownMenuContent, imageGroup, multilineSubtitle = false, control } = _a, props = __rest$1(_a, ["itemTitle", "mainImageUrl", "subtitle", "subtitleOnHover", "detail", "icon", "secondaryImageUrl", "placeholderImageUrl", "size", "mainIcon", "className", "isSelected", "onDetailClick", "showDetailOnHoverOnly", "rounded", "detailButtonClassName", "loading", "containerProps", "compactOnMobile", "extraPadding", "itemsContainerRef", "dropdownMenuContent", "imageGroup", "multilineSubtitle", "control"]);
19366
19456
  const { isDropdownOpen, dropdownRef, openDropdown, closeDropdown, openDropdownButtonRef, itemRef, menuRef, dropdownStyles, } = useDropdownMenu({
19367
19457
  itemsContainerRef,
19368
19458
  });
@@ -19398,9 +19488,11 @@ function ListItem(_a) {
19398
19488
  }
19399
19489
  return null;
19400
19490
  };
19401
- const isInteractive = !!props.onClick;
19402
- const ItemTag = isInteractive ? "button" : "div";
19403
- const itemProps = isInteractive ? props : {};
19491
+ const isInteractive = !!props.onClick || !!control;
19492
+ const ItemTag = isInteractive ? (control ? "label" : "button") : "div";
19493
+ const itemProps = isInteractive
19494
+ ? props
19495
+ : {};
19404
19496
  const handleInteraction = (e) => {
19405
19497
  var _a;
19406
19498
  e.preventDefault();
@@ -19417,9 +19509,9 @@ function ListItem(_a) {
19417
19509
  };
19418
19510
  return (jsxs("li", Object.assign({}, containerProps, { ref: itemRef, className: cn("tw-relative tw-flex tw-max-w-full tw-bg-grey-900 tw-text-grey-300 tw-highlight-adjacent", !multilineSubtitle && listItemSizeMap[size], extraPadding && "tw-px-squid-xs", compactOnMobile
19419
19511
  ? `${collapsedListItemClassMap[size]} mobile-lg:tw-w-full`
19420
- : "tw-w-full", className), children: [jsxs(ItemTag, Object.assign({}, itemProps, { onClick: handleItemClick, className: cn("tw-group/list-item tw-peer/list-item tw-relative tw-flex tw-w-full tw-max-w-full tw-justify-start tw-gap-squid-xs tw-rounded-squid-s tw-px-squid-xs", !multilineSubtitle
19512
+ : "tw-w-full", className), children: [jsxs(ItemTag, Object.assign({}, itemProps, { onClick: control == null ? handleItemClick : undefined, className: cn("tw-group/list-item tw-peer/list-item tw-relative tw-flex tw-w-full tw-max-w-full tw-justify-start tw-gap-squid-xs tw-rounded-squid-s tw-px-squid-xs", !multilineSubtitle
19421
19513
  ? "tw-items-center tw-py-squid-xxs"
19422
- : "tw-py-squid-xs", (isSelected || isDropdownOpen) && "tw-bg-material-light-thin", isInteractive && "hover:tw-bg-material-light-thin", isInteractive && "tw-text-left tw-normal-case"), children: [size === "large" ? (jsx("div", { className: "tw-h-10 tw-w-10", children: mainIcon !== null && mainIcon !== void 0 ? mainIcon : (imageGroup != null ? (jsx(ImageGroup, { size: "small", imageUrls: imageGroup })) : (jsx(BadgeImage, { image: {
19514
+ : "tw-py-squid-xs", (isSelected || isDropdownOpen) && "tw-bg-material-light-thin", isInteractive && control == null && "hover:tw-bg-material-light-thin", isInteractive && "tw-text-left tw-normal-case"), children: [size === "large" ? (jsx("div", { className: "tw-h-10 tw-w-10", children: mainIcon !== null && mainIcon !== void 0 ? mainIcon : (imageGroup != null ? (jsx(ImageGroup, { size: "small", imageUrls: imageGroup })) : (jsx(BadgeImage, { image: {
19423
19515
  src: mainImageUrl,
19424
19516
  placeholderImageUrl,
19425
19517
  size: "xlarge",
@@ -19439,7 +19531,7 @@ function ListItem(_a) {
19439
19531
  : "tw-flex", isDetailInteractive && "hover:tw-bg-material-light-thin", detailButtonClassName), children: [!!detail && (jsx(CaptionText, { className: "min-tw-w-4 min-tw-h-4 tw-px-squid-xxs tw-leading-[10px]", children: detail })), icon ? (jsx("span", { className: "tw-flex tw-items-center tw-justify-center tw-px-[3px] tw-py-2", children: icon })) : null] }))), !!dropdownMenuContent && (jsx(ListItemActionsButton, { ref: openDropdownButtonRef, onClick: (e) => {
19440
19532
  e.stopPropagation();
19441
19533
  isDropdownOpen ? closeDropdown() : openDropdown();
19442
- }, isActive: isDropdownOpen, className: "tw-z-20 peer-hover/list-item:tw-opacity-100" }))] })), isDropdownOpen && !!dropdownMenuContent ? (jsx(DropdownMenu, { menuRef: menuRef, isHidden: !dropdownStyles, className: cn(!!dropdownStyles &&
19534
+ }, isActive: isDropdownOpen, className: "tw-z-20 peer-hover/list-item:tw-opacity-100" })), control] })), isDropdownOpen && !!dropdownMenuContent ? (jsx(DropdownMenu, { menuRef: menuRef, isHidden: !dropdownStyles, className: cn(!!dropdownStyles &&
19443
19535
  dropdownPositionClassMap$1[dropdownStyles.position]), dropdownRef: dropdownRef, children: dropdownMenuContent })) : null] })));
19444
19536
  }
19445
19537
  const ListItemActionsButton = forwardRef((_a, ref) => {
@@ -27534,19 +27626,23 @@ function Switch({ checked = false, onChange, size, disabled = false, inputProps,
27534
27626
  // size styles
27535
27627
  switchSizeClassMap[size],
27536
27628
  // checked styles
27537
- checked ? "tw-bg-status-positive" : "tw-bg-grey-800",
27629
+ disabled || !checked ? "tw-bg-grey-800" : "tw-bg-status-positive",
27538
27630
  // disabled styles
27539
27631
  disabled ? "tw-cursor-not-allowed" : "tw-cursor-pointer",
27540
27632
  // Focus visible styles
27541
27633
  "tw-focus-visible-within-outline"), children: [jsx("input", Object.assign({}, inputProps, { disabled: disabled, checked: checked, onChange: disabled ? undefined : (e) => onChange === null || onChange === void 0 ? void 0 : onChange(e.target.checked), type: "checkbox", className: "tw-peer tw-sr-only" })), jsx("span", { style: {
27542
- filter: "drop-shadow(0px 5px 20px rgba(0, 0, 0, 0.33)) drop-shadow(0px 2px 5px rgba(0, 0, 0, 0.20))",
27634
+ filter: disabled
27635
+ ? "drop-shadow(0px 5px 20px rgba(0, 0, 0, 0.10)) drop-shadow(0px 1px 5px rgba(0, 0, 0, 0.10))"
27636
+ : "drop-shadow(0px 5px 20px rgba(0, 0, 0, 0.33)) drop-shadow(0px 2px 5px rgba(0, 0, 0, 0.20))",
27543
27637
  }, className: clsx("tw-absolute tw-rounded-full tw-border tw-border-material-light-thin tw-transition-all",
27544
27638
  // size styles
27545
27639
  switchKnobSizeClassMap[size],
27546
27640
  // checked styles
27547
- switchKnobCheckedClassMap[size][checked ? "checked" : "unchecked"], checked
27548
- ? "group-data-[squid-theme-type=dark]:tw-bg-grey-100 group-data-[squid-theme-type=light]:tw-bg-grey-900"
27549
- : "tw-bg-grey-500") })] }));
27641
+ switchKnobCheckedClassMap[size][checked ? "checked" : "unchecked"], disabled
27642
+ ? "group-data-[squid-theme-type=dark]:tw-bg-grey-700 group-data-[squid-theme-type=light]:tw-bg-grey-900"
27643
+ : checked
27644
+ ? "group-data-[squid-theme-type=dark]:tw-bg-grey-100 group-data-[squid-theme-type=light]:tw-bg-grey-900"
27645
+ : "tw-bg-grey-500") })] }));
27550
27646
  }
27551
27647
 
27552
27648
  function RangeInput({ label, initialValue, onChange, min = 0, max = 99, isWarning = false, }) {
@@ -27660,7 +27756,8 @@ function RangeInput({ label, initialValue, onChange, min = 0, max = 99, isWarnin
27660
27756
  }, onMouseLeave: handleUpdateValue, className: cn("tw-relative tw-flex tw-h-full tw-items-center tw-justify-center tw-self-stretch tw-rounded-squid-xs tw-p-squid-xxs tw-text-left tw-text-caption tw-font-caption tw-leading-[10px] placeholder-shown:tw-text-grey-600 hover:tw-bg-material-light-thin"), children: jsx(CirclePlusIcon, {}) })] })] }) }));
27661
27757
  }
27662
27758
 
27663
- const imageClass = "tw-w-[40px] tw-aspect-square tw-flex tw-items-center tw-justify-center";
27759
+ const imageWrapperClassName = "tw-w-[40px] tw-aspect-square tw-flex tw-items-center tw-justify-center";
27760
+ const tokenImageClassName = "tw-absolute tw-h-squid-xl tw-w-squid-xl tw-rounded-full tw-object-cover";
27664
27761
  const themeKeyVariantMap = {
27665
27762
  primary: "grey-800",
27666
27763
  accent: "royal-500",
@@ -27680,6 +27777,12 @@ var AssetsButtonState;
27680
27777
  AssetsButtonState[AssetsButtonState["EMPTY"] = 2] = "EMPTY";
27681
27778
  AssetsButtonState[AssetsButtonState["LOADING"] = 3] = "LOADING";
27682
27779
  })(AssetsButtonState || (AssetsButtonState = {}));
27780
+ var ImageLoadingState;
27781
+ (function (ImageLoadingState) {
27782
+ ImageLoadingState[ImageLoadingState["LOADING"] = 0] = "LOADING";
27783
+ ImageLoadingState[ImageLoadingState["LOADED"] = 1] = "LOADED";
27784
+ ImageLoadingState[ImageLoadingState["ERROR"] = 2] = "ERROR";
27785
+ })(ImageLoadingState || (ImageLoadingState = {}));
27683
27786
  const outlineWidthMap = {
27684
27787
  [AssetsButtonState.LOADING]: {
27685
27788
  inner: 75,
@@ -27699,7 +27802,9 @@ const outlineWidthMap = {
27699
27802
  },
27700
27803
  };
27701
27804
  function AssetsButton({ chain, token, onClick, variant = "primary", isLoading = false, tooltip, emptyTokenLabel = "Select token", }) {
27702
- var _a, _b;
27805
+ var _a, _b, _c, _d;
27806
+ const [tokenImageLoadingState, setTokenImageLoadingState] = useState(ImageLoadingState.LOADING);
27807
+ const fallbackBgColor = useColorFromSeed((_a = token === null || token === void 0 ? void 0 : token.symbol) !== null && _a !== void 0 ? _a : "");
27703
27808
  const state = useMemo(() => {
27704
27809
  if (chain != null && !isLoading) {
27705
27810
  if (token != null) {
@@ -27714,10 +27819,27 @@ function AssetsButton({ chain, token, onClick, variant = "primary", isLoading =
27714
27819
  }, [token, chain, isLoading]);
27715
27820
  const defaultBgColor = `var(${themeKeysToCssVariables.color[themeKeyVariantMap[variant]].cssVariable})`;
27716
27821
  const outlineWidth = outlineWidthMap[state];
27717
- const chainBgColor = (_a = chain === null || chain === void 0 ? void 0 : chain.bgColor) !== null && _a !== void 0 ? _a : defaultBgColor;
27718
- const tokenBgColor = state === AssetsButtonState.FULL
27719
- ? (_b = token === null || token === void 0 ? void 0 : token.bgColor) !== null && _b !== void 0 ? _b : defaultBgColor
27720
- : defaultBgColor;
27822
+ const chainBgColor = (_b = chain === null || chain === void 0 ? void 0 : chain.bgColor) !== null && _b !== void 0 ? _b : defaultBgColor;
27823
+ const tokenTextColor = tokenImageLoadingState === ImageLoadingState.ERROR
27824
+ ? "#fff"
27825
+ : token === null || token === void 0 ? void 0 : token.textColor;
27826
+ const tokenBgColor = useMemo(() => {
27827
+ if (state !== AssetsButtonState.FULL) {
27828
+ return defaultBgColor;
27829
+ }
27830
+ if (tokenImageLoadingState === ImageLoadingState.ERROR) {
27831
+ // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
27832
+ return fallbackBgColor || defaultBgColor;
27833
+ }
27834
+ // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
27835
+ return (token === null || token === void 0 ? void 0 : token.bgColor) || defaultBgColor;
27836
+ }, [
27837
+ state,
27838
+ token === null || token === void 0 ? void 0 : token.bgColor,
27839
+ defaultBgColor,
27840
+ tokenImageLoadingState,
27841
+ fallbackBgColor,
27842
+ ]);
27721
27843
  const bgGradient = useMemo(() => {
27722
27844
  switch (state) {
27723
27845
  case AssetsButtonState.EMPTY:
@@ -27735,12 +27857,22 @@ function AssetsButton({ chain, token, onClick, variant = "primary", isLoading =
27735
27857
  ? "tw-cursor-not-allowed"
27736
27858
  : "tw-group/assets-button"), children: [jsx("svg", { className: "tw-absolute tw-left-0 tw-z-10 tw-h-[40px] tw-w-[72px] tw-text-material-light-thin", viewBox: "0 0 72 40", xmlns: "http://www.w3.org/2000/svg", fill: "currentColor", children: jsx("path", { d: "m57.86 5.86c-.53.53-1.05 1.06-1.56 1.59-3.29 3.38-6.37 6.55-10.3 6.55s-7.01-3.17-10.3-6.55c-.51-.53-1.03-1.06-1.56-1.59-3.9-3.91-9.02-5.86-14.14-5.86s-10.24 1.95-14.14 5.86c-3.91 3.9-5.86 9.02-5.86 14.14s1.95 10.24 5.86 14.14c3.91 3.91 9.02 5.86 14.14 5.86s10.24-1.95 14.14-5.86c.52-.53 1.04-1.06 1.55-1.58 3.29-3.39 6.37-6.56 10.31-6.56s7.02 3.17 10.31 6.56c.51.53 1.03 1.06 1.55 1.58 3.91 3.91 9.02 5.86 14.14 5.86v-40c-5.12 0-10.24 1.95-14.14 5.86zm14.14 33.14c-5.07 0-9.85-1.98-13.43-5.56-.52-.52-1.02-1.04-1.54-1.57-3.43-3.53-6.67-6.86-11.02-6.86s-7.6 3.33-11.04 6.88c-.5.52-1.01 1.04-1.53 1.56-3.59 3.59-8.36 5.57-13.44 5.57s-9.85-1.98-13.43-5.57c-3.59-3.59-5.56-8.36-5.56-13.43s1.98-9.85 5.56-13.44c3.58-3.6 8.35-5.58 13.43-5.58s9.85 1.98 13.44 5.57c.52.52 1.04 1.05 1.55 1.58 3.43 3.53 6.66 6.86 11.02 6.86s7.59-3.33 11.02-6.86c.51-.52 1.02-1.05 1.55-1.58 3.59-3.59 8.36-5.56 13.43-5.56v38z" }) }), jsxs("svg", { className: "tw-absolute -tw-left-[2px] -tw-top-[2px] tw-z-20 tw-hidden group-hover/assets-button:tw-block", xmlns: "http://www.w3.org/2000/svg", width: outlineWidth.inner, height: "44", viewBox: `0 0 ${outlineWidth.inner} 44`, fill: "none", children: [jsx("clipPath", { id: "halfClip1", children: jsx("rect", { x: "0", y: "0", width: outlineWidth.inner, height: "44" }) }), jsx("path", { d: "M59.1506 36.849L59.1508 36.8492C63.2511 40.9496 68.6272 43 74.0001 43H145C156.598 43 166 33.598 166 22C166 10.402 156.598 1 145 1H74.0001C68.6272 0.999977 63.2511 3.05042 59.1508 7.15076C58.6183 7.68325 58.0958 8.22097 57.5842 8.74755L57.5817 8.75009C55.9228 10.4574 54.3925 12.0283 52.8031 13.1834C51.2282 14.3279 49.6791 15 48 15C46.3209 15 44.7718 14.3279 43.1969 13.1834C41.6075 12.0283 40.0772 10.4574 38.4183 8.75009L38.4159 8.74759C37.9042 8.22101 37.3817 7.68327 36.8492 7.15076C32.7489 3.05042 27.3728 0.999977 21.9999 1C16.6271 1.00002 11.251 3.05047 7.15076 7.15076C3.05045 11.2511 1 16.6272 1 22C1 27.3728 3.05045 32.7489 7.15076 36.8492C11.251 40.9495 16.6271 43 21.9999 43C27.3728 43 32.7489 40.9496 36.8492 36.8492L36.8494 36.849C37.3794 36.3188 37.8994 35.7834 38.4088 35.2589L38.4108 35.2569C40.0704 33.5483 41.6019 31.9756 43.1928 30.8191C44.7691 29.6731 46.3197 29 48 29C49.6803 29 51.2309 29.6731 52.8072 30.8191C54.3981 31.9756 55.9296 33.5483 57.5892 35.2569L57.5912 35.2589C58.1006 35.7834 58.6206 36.3188 59.1506 36.849Z", stroke: "currentColor", className: "tw-text-grey-900", strokeWidth: "2", clipPath: "url(#halfClip1)" })] }), jsxs("svg", { className: "tw-absolute -tw-left-[4px] -tw-top-[4px] tw-z-10 tw-hidden group-hover/assets-button:tw-block", xmlns: "http://www.w3.org/2000/svg", width: outlineWidth.outer, height: "48", viewBox: `0 0 ${outlineWidth.outer} 48`, fill: "none", children: [jsx("clipPath", { id: "halfClip2", children: jsx("rect", { x: "0", y: "0", width: outlineWidth.outer, height: "48" }) }), jsx("path", { d: "M60.4432 39.5559L60.4437 39.5564C64.7391 43.8517 70.3729 46 76.0001 46H147C159.15 46 169 36.1503 169 24C169 11.8497 159.15 2 147 2H76.0001C70.3729 1.99998 64.7391 4.14825 60.4437 8.44365C59.9062 8.98109 59.3797 9.52298 58.8697 10.0479L58.8645 10.0532C57.1905 11.7761 55.7217 13.2796 54.2152 14.3745C52.7378 15.4481 51.3923 16 50 16C48.6077 16 47.2622 15.4481 45.7848 14.3745C44.2783 13.2796 42.8095 11.7761 41.1355 10.0532L41.1305 10.0481C40.6205 9.52314 40.0939 8.98117 39.5563 8.44365C35.2609 4.14825 29.6271 1.99998 23.9999 2C18.3727 2.00002 12.739 4.1483 8.44365 8.44365C4.14827 12.739 2 18.3728 2 24C2 29.6272 4.14827 35.261 8.44365 39.5564C12.739 43.8517 18.3727 46 23.9999 46C29.6271 46 35.2609 43.8517 39.5563 39.5564L39.5568 39.5559C40.0917 39.0207 40.6159 38.481 41.1237 37.9582L41.1281 37.9537C42.8028 36.2295 44.2728 34.7243 45.7808 33.6279C47.2597 32.5528 48.6066 32 50 32C51.3934 32 52.7403 32.5528 54.2192 33.6279C55.7272 34.7243 57.1972 36.2295 58.8719 37.9537L58.8763 37.9582C59.3841 38.481 59.9083 39.0207 60.4432 39.5559Z", stroke: "currentColor", className: "tw-text-material-light-average", strokeWidth: "4", clipPath: "url(#halfClip2)" })] }), jsx("div", { className: cn("tw-assets-button-mask tw-flex tw-h-squid-xl tw-w-[92px] tw-items-center tw-justify-between", state !== AssetsButtonState.FULL && "!tw-w-[72px]"), style: {
27737
27859
  backgroundImage: bgGradient,
27738
- }, children: jsx("div", { className: clsx(imageClass), children: state === AssetsButtonState.CHAIN_ONLY ||
27739
- state === AssetsButtonState.FULL ? (jsx("img", { src: chain === null || chain === void 0 ? void 0 : chain.iconUrl, alt: "", className: "tw-h-squid-xl tw-w-squid-xl tw-rounded-full tw-object-cover" })) : (state !== AssetsButtonState.LOADING && (jsx("span", { className: emptyChainIconTextClassNameMap[variant], children: jsx(PlusIcon, {}) }))) }) }), state === AssetsButtonState.FULL ? (jsxs("div", { className: clsx(imageClass, "tw-absolute tw-left-[54px] tw-z-[5] tw-h-squid-xl tw-overflow-hidden"), children: [jsx("div", { className: "tw-absolute tw-right-0 tw-h-full tw-w-[22px]", style: {
27860
+ }, children: jsx("div", { className: clsx(imageWrapperClassName), children: state === AssetsButtonState.CHAIN_ONLY ||
27861
+ state === AssetsButtonState.FULL ? (jsx("img", { src: chain === null || chain === void 0 ? void 0 : chain.iconUrl, alt: "", className: "tw-h-squid-xl tw-w-squid-xl tw-rounded-full tw-object-cover" })) : (state !== AssetsButtonState.LOADING && (jsx("span", { className: emptyChainIconTextClassNameMap[variant], children: jsx(PlusIcon, {}) }))) }) }), state === AssetsButtonState.FULL ? (jsxs("div", { className: clsx(imageWrapperClassName, "tw-absolute tw-left-[54px] tw-z-[5] tw-h-squid-xl tw-overflow-hidden"), children: [jsx("div", { className: "tw-absolute tw-right-0 tw-h-full tw-w-[22px]", style: {
27740
27862
  backgroundColor: tokenBgColor,
27741
- } }), jsx("img", { src: token === null || token === void 0 ? void 0 : token.iconUrl, alt: token === null || token === void 0 ? void 0 : token.symbol, className: "tw-absolute tw-h-squid-xl tw-w-squid-xl tw-rounded-full tw-object-cover" }), jsx("div", { className: "tw-absolute tw-right-0 tw-h-full tw-w-[22px] tw-border-b\n tw-border-t tw-border-material-light-thin" })] })) : null, jsxs("div", { className: cn("tw-relative tw-flex tw-h-squid-xl tw-w-fit tw-min-w-fit tw-items-center tw-gap-squid-xxs tw-rounded-br-full tw-rounded-tr-full tw-border tw-border-l-0 tw-border-material-light-thin tw-py-squid-xs tw-pr-squid-xs before:tw-absolute before:-tw-inset-[3px] before:tw-z-[1] before:tw-w-[calc(100%+3px)] before:tw-translate-x-[3px] before:tw-rounded-br-full before:tw-rounded-tr-full before:tw-border-2 before:tw-border-l-0 before:tw-border-transparent after:tw-absolute after:-tw-inset-[5px] after:tw-z-0 after:tw-w-[calc(100%+4px)] after:tw-translate-x-[6px] after:tw-rounded-br-full after:tw-rounded-tr-full after:tw-border-4 after:tw-border-l-0 after:tw-border-transparent group-hover/assets-button:before:tw-border-grey-900 group-hover/assets-button:after:tw-border-material-light-average", state === AssetsButtonState.FULL && "tw-pl-[7px]"), style: {
27863
+ } }), tokenImageLoadingState === ImageLoadingState.ERROR && (
27864
+ // show fallback
27865
+ jsx("div", { style: { color: tokenTextColor }, className: cn(tokenImageClassName, "tw-flex tw-items-center tw-justify-center tw-text-body-small"), children: (_d = (_c = token === null || token === void 0 ? void 0 : token.symbol) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.toUpperCase() })), jsx("img", { onLoad: () => {
27866
+ setTokenImageLoadingState(ImageLoadingState.LOADED);
27867
+ }, onError: () => {
27868
+ setTokenImageLoadingState(ImageLoadingState.ERROR);
27869
+ }, src: token === null || token === void 0 ? void 0 : token.iconUrl, alt: token === null || token === void 0 ? void 0 : token.symbol, className: cn(tokenImageClassName,
27870
+ // when image load failed, hide it with opacity: 0 instead of display: none
27871
+ // so new images can load and update the loading state
27872
+ tokenImageLoadingState === ImageLoadingState.ERROR &&
27873
+ "tw-opacity-0") }), jsx("div", { className: "tw-absolute tw-right-0 tw-h-full tw-w-[22px] tw-border-b\n tw-border-t tw-border-material-light-thin" })] })) : null, jsxs("div", { className: cn("tw-relative tw-flex tw-h-squid-xl tw-w-fit tw-min-w-fit tw-items-center tw-gap-squid-xxs tw-rounded-br-full tw-rounded-tr-full tw-border tw-border-l-0 tw-border-material-light-thin tw-py-squid-xs tw-pr-squid-xs before:tw-absolute before:-tw-inset-[3px] before:tw-z-[1] before:tw-w-[calc(100%+3px)] before:tw-translate-x-[3px] before:tw-rounded-br-full before:tw-rounded-tr-full before:tw-border-2 before:tw-border-l-0 before:tw-border-transparent after:tw-absolute after:-tw-inset-[5px] after:tw-z-0 after:tw-w-[calc(100%+4px)] after:tw-translate-x-[6px] after:tw-rounded-br-full after:tw-rounded-tr-full after:tw-border-4 after:tw-border-l-0 after:tw-border-transparent group-hover/assets-button:before:tw-border-grey-900 group-hover/assets-button:after:tw-border-material-light-average", state === AssetsButtonState.FULL && "tw-pl-[7px]"), style: {
27742
27874
  backgroundColor: tokenBgColor,
27743
- color: token === null || token === void 0 ? void 0 : token.textColor,
27875
+ color: tokenTextColor,
27744
27876
  }, children: [jsx(BodyText, { size: "small", className: cn("tw-leading-[13px]", state === AssetsButtonState.LOADING && "tw-min-w-[135px]"), children: state === AssetsButtonState.FULL
27745
27877
  ? token === null || token === void 0 ? void 0 : token.symbol
27746
27878
  : state !== AssetsButtonState.LOADING && emptyTokenLabel }), state !== AssetsButtonState.LOADING && (jsx(ChevronLargeRightIcon, { className: "tw-w-4 tw-min-w-4 tw-opacity-66" }))] })] }) })));
@@ -69753,4 +69885,4 @@ function ThemeProvider(_a) {
69753
69885
  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 })));
69754
69886
  }
69755
69887
 
69756
- export { ANIMATION_DURATIONS, AccountListItem, AccountsButton, ActionLayout, ActionLineOutRow, ActionProperties, ActionRow, ActionStatusRow, ActionWrapper, AddressButton, AnimationWrapper, Announcement, AppContainer, Approve, ApproveAction, ArrowBottomTopIcon, ArrowButton, ArrowCornerDownRightIcon, ArrowDownIcon, ArrowExpandIcon, ArrowLeftIcon, ArrowOutOfBoxIcon, ArrowRightDownCircleIcon, ArrowRightDownIcon, ArrowRightIcon, ArrowRightUpCircleIcon, ArrowRightUpIcon, ArrowRotate, ArrowSplit, ArrowTriangle, ArrowUpIcon, ArrowWallDownIcon, ArrowsSwapIcon, AssetsButton, AtomIcon, BackpackIcon, BadgeImage, BankIcon, BellAlarmIcon, BlockSkeleton, BodyText, Boost, BoostBadge, BoostButton, BorderedContainer, Breadcrumb, BridgeAction, BridgeHeader, BridgeProperties, 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, Copy2Icon, CopyOutlinedIcon, CrossAnimatedIcon, CrossedOutSunSolidIcon, DashboardFast, DepositAddressView, DescriptionBlocks, DetailsToolbar, DiscordIcon, DockIconAnalytics, DockIconCheckout, DockIconHelp, DockIconProfile, DockIconScan, DockIconSwap, DockSwapIcon, DollarOutlinedIcon, DollarSolidIcon, DotGrid1x3HorizontalIcon, DropdownMenu, DropdownMenuItem, DropdownMenuTitle, EmojiMeh, EmojiSadIcon, EmptyHeartIcon, ErrorMessage, EthereumIcon, ExplosionIcon, EyeOpenIcon, FarcasterIcon, 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, ImageStack, ImageState, IncompleteAction, InfinityIcon, InfoBox, Inline, Input, InteractionHeader, InteractionProperties, InteractionTransactionView, Join, LaptopIcon, LightningIcon, LimitIcon, LinkIcon, ListItem, ListItemActionsButton, Loader, LoadingProvider, LoadingSkeleton, MEDIA_QUERIES, MarketCapIcon, MaxIcon, Menu, MenuItem, MenuSwapIcon, MirrorIcon, Modal, ModalContent, ModalContentDivider, MoneyBagIcon, MoonIcon, NavigationBar, NewsIcon, NewspaperIcon, NotAllowedIcon, NumericInput, PathSquareIcon, PauseIcon, PercentIcon, PhoneIcon, PieChartIcon, PipeSeparator, PlusIcon, PoopIcon, PowerIcon, PriceChange, ProductCard, ProfileHeader, ProfileHeaderBackground, PropertiesLayout, PropertyListItem, PunkIcon, QrCodeIcon, RangeInput, ReceiptBillIcon, ReceiveNFTAction, ReceiveTokensAction, 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, SwapErrorIcon, SwapHeader, SwapIcon, SwapInputsIcon, SwapProgressView, SwapProperties, SwapStepItem, SwapStepSeparator, SwapStepsCollapsed, SwapSuccessIcon, SwapTransactionView, SwapWarningIcon, Switch, Tab, Tabs, TagIcon, TagIconFilled, TelegramIcon, TextSkeleton, ThemePreference, ThemeProvider, ThumbsUp, Tick, TimeFliesIcon, Timeline, Timestamp, Toast, TokenDetailsView, TokenGroup, TokenGroups, TokenPair, Tooltip, TradingViewStepsIcon, TransactionAction, TransactionFilters, TransactionHeader, TransactionHeaderLayout, TransactionItem, TransactionProperties, TransactionSearch, TransactionState, TransactionView, TransactionViewLayout, Transfer, TranslateIcon, TriangleExclamation, TxProgressViewHeader, UnsupportedPairNotice, UsdAmount, WalletFilledIcon, WalletIcon, WalletLink, WrapAction, XSocialIcon, adjustColorForContrast, baseTailwindConfig, blendColors, cn, darkTheme, getColorBrightness, getContrastColor, getHexColorFromOpacityPercentage, getWalletCardBackground, hexToRgb, isValidHexColor, lightTheme, linkActionTimelineProps, parseColor, parseSquidTheme, pxToRem, remToPx, rgbToHex, spacing$1 as spacing, statusTextClassMap, themeKeysToCssVariables, transactionErrorPauseAnimation, transactionFailureAnimation, transactionHalfSuccessAnimation, transactionPendingAnimation, transactionProcessingAnimation, transactionRejectedAnimation, transactionSuccessAnimation, useCollapsibleMenu, useDropdownMenu, useMediaQuery, useOnResize, useRect, useTimer, useUserTheme, useVersion };
69888
+ export { ANIMATION_DURATIONS, AccountListItem, AccountsButton, ActionLayout, ActionLineOutRow, ActionProperties, ActionRow, ActionStatusRow, ActionWrapper, AddressButton, AnimationWrapper, Announcement, AppContainer, Approve, ApproveAction, ArrowBottomTopIcon, ArrowButton, ArrowCornerDownRightIcon, ArrowDownIcon, ArrowExpandIcon, ArrowLeftIcon, ArrowOutOfBoxIcon, ArrowRightDownCircleIcon, ArrowRightDownIcon, ArrowRightIcon, ArrowRightUpCircleIcon, ArrowRightUpIcon, ArrowRotate, ArrowSplit, ArrowTriangle, ArrowUpIcon, ArrowWallDownIcon, ArrowsSwapIcon, AssetsButton, AtomIcon, BackpackIcon, BadgeImage, BankIcon, BellAlarmIcon, BlockSkeleton, BodyText, Boost, BoostBadge, BoostButton, BorderedContainer, Breadcrumb, BridgeAction, BridgeHeader, BridgeProperties, 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, CircleCheckIcon, CircleMinusIcon, CirclePlusIcon, CircleX, CircleXFilledIcon, ClockOutlineIcon, ClockSolidIcon, CodeBracketsIcon, CodeSolidSquareIcon, CoinsAddIcon, CoinsIcon, CoinsOutlinedIcon, Collapse, CollapsibleMenu, CollectionIcon, ColorPaletteIcon, CommandIcon, CompassRoundOutlinedIcon, CompassRoundSolidIcon, ConsoleIcon, Copy2Icon, CopyOutlinedIcon, CrossAnimatedIcon, CrossedOutSunSolidIcon, DashboardFast, DepositAddressView, DescriptionBlocks, DetailsToolbar, DiscordIcon, DockIconAnalytics, DockIconCheckout, DockIconHelp, DockIconProfile, DockIconScan, DockIconSwap, DockSwapIcon, DollarOutlinedIcon, DollarSolidIcon, DotGrid1x3HorizontalIcon, DropdownMenu, DropdownMenuItem, DropdownMenuTitle, EmojiMeh, EmojiSadIcon, EmptyHeartIcon, ErrorMessage, EthereumIcon, ExplosionIcon, EyeOpenIcon, FarcasterIcon, 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, ImageStack, ImageState, IncompleteAction, InfinityIcon, InfoBox, Inline, Input, InteractionHeader, InteractionProperties, InteractionTransactionView, Join, LaptopIcon, LightningIcon, LimitIcon, LinkIcon, ListItem, ListItemActionsButton, Loader, LoadingProvider, LoadingSkeleton, MEDIA_QUERIES, MarketCapIcon, MaxIcon, Menu, MenuItem, MenuSwapIcon, MirrorIcon, Modal, ModalContent, ModalContentDivider, MoneyBagIcon, MoonIcon, NavigationBar, NewsIcon, NewspaperIcon, NotAllowedIcon, NumericInput, PathSquareIcon, PauseIcon, PercentIcon, PhoneIcon, PieChartIcon, PipeSeparator, PluginIcon, PlusIcon, PoopIcon, PowerIcon, PriceChange, ProductCard, ProfileHeader, ProfileHeaderBackground, PropertiesLayout, PropertyListItem, PunkIcon, QrCodeIcon, RangeInput, ReceiptBillIcon, ReceiveNFTAction, ReceiveTokensAction, 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, SwapErrorIcon, SwapHeader, SwapIcon, SwapInputsIcon, SwapProgressView, SwapProperties, SwapStepItem, SwapStepSeparator, SwapStepsCollapsed, SwapSuccessIcon, SwapTransactionView, SwapWarningIcon, Switch, Tab, Tabs, TagIcon, TagIconFilled, TelegramIcon, TextSkeleton, ThemePreference, ThemeProvider, ThumbsUp, Tick, TimeFliesIcon, Timeline, Timestamp, Toast, TokenDetailsView, TokenGroup, TokenGroups, TokenPair, Tooltip, TradingViewStepsIcon, TransactionAction, TransactionFilters, TransactionHeader, TransactionHeaderLayout, TransactionItem, TransactionProperties, TransactionSearch, TransactionState, TransactionView, TransactionViewLayout, Transfer, TranslateIcon, TriangleExclamation, TxProgressViewHeader, UnsupportedPairNotice, UsdAmount, WalletFilledIcon, WalletIcon, WalletLink, WrapAction, XSocialIcon, adjustColorForContrast, baseTailwindConfig, blendColors, buttonRoundedClassMap, cn, darkTheme, getColorBrightness, getContrastColor, getHexColorFromOpacityPercentage, getWalletCardBackground, hexToRgb, isValidHexColor, lightTheme, linkActionTimelineProps, parseColor, parseSquidTheme, pxToRem, remToPx, rgbToHex, spacing$1 as spacing, statusTextClassMap, themeKeysToCssVariables, transactionErrorPauseAnimation, transactionFailureAnimation, transactionHalfSuccessAnimation, transactionPendingAnimation, transactionProcessingAnimation, transactionRejectedAnimation, transactionSuccessAnimation, useCollapsibleMenu, useDropdownMenu, useMediaQuery, useOnResize, useRect, useTimer, useUserTheme, useVersion };
@@ -10,10 +10,13 @@ interface ButtonProps extends React.HTMLAttributes<HTMLButtonElement> {
10
10
  link?: string;
11
11
  isLoading?: boolean;
12
12
  showLoader?: boolean;
13
+ loaderSize?: LoaderSize;
13
14
  chip?: ChipProps;
14
15
  containerClassName?: string;
15
16
  buttonRef?: React.Ref<HTMLButtonElement>;
16
17
  anchorRef?: React.Ref<HTMLAnchorElement>;
17
18
  }
18
- export declare function Button({ label, disabled, size, variant, icon, link, isLoading, showLoader, chip, containerClassName, anchorRef, buttonRef, ...props }: ButtonProps): import("react/jsx-runtime").JSX.Element;
19
+ type LoaderSize = "sm" | "md" | "lg";
20
+ export declare const buttonRoundedClassMap: Record<ButtonSize, Record<ButtonVariant, string>>;
21
+ export declare function Button({ label, disabled, size, variant, icon, link, isLoading, showLoader, loaderSize, chip, containerClassName, anchorRef, buttonRef, ...props }: ButtonProps): import("react/jsx-runtime").JSX.Element;
19
22
  export {};
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { SwitchSize } from "../../types/components";
2
+ import { type SwitchSize } from "../../types/components";
3
3
  export interface SwitchProps {
4
4
  checked?: boolean;
5
5
  onChange?: (checked: boolean) => void;
@@ -114,3 +114,11 @@ export declare function MoneyBagIcon({ className, size, }: {
114
114
  className?: string;
115
115
  size?: string;
116
116
  }): import("react/jsx-runtime").JSX.Element;
117
+ export declare function PluginIcon({ size, className, }: {
118
+ size?: string;
119
+ className?: string;
120
+ }): import("react/jsx-runtime").JSX.Element;
121
+ export declare function CircleCheckIcon({ className, size, }: {
122
+ className?: string;
123
+ size?: string;
124
+ }): import("react/jsx-runtime").JSX.Element;
@@ -1,5 +1,6 @@
1
1
  /// <reference types="react" />
2
2
  import { type ImageRoundedSize } from "../../types/components";
3
+ type HTMLInteractiveItem = HTMLButtonElement | HTMLDivElement | HTMLLabelElement;
3
4
  interface ListItemProps extends React.HTMLAttributes<HTMLButtonElement> {
4
5
  itemTitle: string | React.ReactNode;
5
6
  mainImageUrl?: string;
@@ -27,9 +28,11 @@ interface ListItemProps extends React.HTMLAttributes<HTMLButtonElement> {
27
28
  itemsContainerRef?: React.RefObject<HTMLElement>;
28
29
  imageGroup?: string[];
29
30
  multilineSubtitle?: boolean;
31
+ control?: React.ReactNode;
32
+ onClick?: (event: React.MouseEvent<HTMLInteractiveItem>) => void;
30
33
  }
31
34
  type ListItemSize = "small" | "large";
32
- export declare function ListItem({ itemTitle, mainImageUrl, subtitle, subtitleOnHover, detail, icon, secondaryImageUrl, placeholderImageUrl, size, mainIcon, className, isSelected, onDetailClick, showDetailOnHoverOnly, rounded, detailButtonClassName, loading, containerProps, compactOnMobile, extraPadding, itemsContainerRef, dropdownMenuContent, imageGroup, multilineSubtitle, ...props }: ListItemProps): import("react/jsx-runtime").JSX.Element;
35
+ export declare function ListItem({ itemTitle, mainImageUrl, subtitle, subtitleOnHover, detail, icon, secondaryImageUrl, placeholderImageUrl, size, mainIcon, className, isSelected, onDetailClick, showDetailOnHoverOnly, rounded, detailButtonClassName, loading, containerProps, compactOnMobile, extraPadding, itemsContainerRef, dropdownMenuContent, imageGroup, multilineSubtitle, control, ...props }: ListItemProps): import("react/jsx-runtime").JSX.Element;
33
36
  export declare const ListItemActionsButton: import("react").ForwardRefExoticComponent<Omit<import("react").ClassAttributes<HTMLButtonElement> & import("react").ButtonHTMLAttributes<HTMLButtonElement> & {
34
37
  isActive?: boolean | undefined;
35
38
  }, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;