@deframe-sdk/components 0.1.56 → 0.1.57

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -52,7 +52,7 @@ function ActionButton(_a) {
52
52
  "className",
53
53
  "type"
54
54
  ]);
55
- const baseClasses = [
55
+ const baseClasses2 = [
56
56
  "flex-1 inline-flex items-center justify-center overflow-hidden",
57
57
  "h-[var(--deframe-widget-font-leading-lg)]",
58
58
  "px-[var(--deframe-widget-size-padding-x-sm)] py-[var(--deframe-widget-size-padding-y-xs)]",
@@ -62,7 +62,7 @@ function ActionButton(_a) {
62
62
  "transition-[background,border-color,box-shadow,opacity] duration-200",
63
63
  "focus:outline-none focus:ring-2 focus:ring-[color:var(--deframe-widget-color-brand-primary)]"
64
64
  ].join(" ");
65
- const stateClasses = disabled ? [
65
+ const stateClasses2 = disabled ? [
66
66
  "cursor-not-allowed",
67
67
  "bg-[var(--deframe-widget-color-bg-tertiary)]",
68
68
  "text-[color:var(--deframe-widget-color-text-primary-disabled)]"
@@ -74,8 +74,8 @@ function ActionButton(_a) {
74
74
  "hover:shadow-[0_2px_8px_color-mix(in_srgb,var(--deframe-widget-color-text-primary)_18%,transparent)]"
75
75
  ].join(" ");
76
76
  const containerClasses = twMerge(
77
- baseClasses,
78
- stateClasses,
77
+ baseClasses2,
78
+ stateClasses2,
79
79
  className
80
80
  );
81
81
  return /* @__PURE__ */ jsx(
@@ -90,13 +90,13 @@ function ActionButton(_a) {
90
90
  );
91
91
  }
92
92
  var CloseButton = ({ onClick, testId, ariaLabel = "Close", className }) => {
93
- const baseClasses = "w-12 h-12 rounded-[var(--deframe-widget-size-radius-sm)] flex items-center justify-center text-[color:var(--deframe-widget-color-text-secondary)] hover:bg-[color:color-mix(in_srgb,var(--deframe-widget-color-bg-tertiary)_92%,transparent)] transition-[background] duration-150 cursor-pointer";
93
+ const baseClasses2 = "w-12 h-12 rounded-[var(--deframe-widget-size-radius-sm)] flex items-center justify-center text-[color:var(--deframe-widget-color-text-secondary)] hover:bg-[color:color-mix(in_srgb,var(--deframe-widget-color-bg-tertiary)_92%,transparent)] transition-[background] duration-150 cursor-pointer";
94
94
  return /* @__PURE__ */ jsx(
95
95
  "button",
96
96
  {
97
97
  "data-test-id": testId != null ? testId : "close-button",
98
98
  onClick,
99
- className: twMerge(baseClasses, className),
99
+ className: twMerge(baseClasses2, className),
100
100
  "aria-label": ariaLabel,
101
101
  children: /* @__PURE__ */ jsx(HiXMark, { className: "w-6 h-6" })
102
102
  }
@@ -149,7 +149,7 @@ function PrimaryButton(_a) {
149
149
  "className",
150
150
  "type"
151
151
  ]);
152
- const baseClasses = [
152
+ const baseClasses2 = [
153
153
  /** layout */
154
154
  "overflow-hidden w-full flex items-center justify-center transition-all duration-200",
155
155
  /** typography */
@@ -165,7 +165,7 @@ function PrimaryButton(_a) {
165
165
  "border-solid border-[length:var(--deframe-widget-size-border-xs)]",
166
166
  "gap-[var(--deframe-widget-size-gap-sm)]"
167
167
  ].join(" ");
168
- const stateClasses = {
168
+ const stateClasses2 = {
169
169
  /** enabled state */
170
170
  enabled: [
171
171
  "hover:opacity-90",
@@ -183,8 +183,8 @@ function PrimaryButton(_a) {
183
183
  ].join(" ")
184
184
  };
185
185
  const buttonClasses = twMerge(
186
- baseClasses,
187
- stateClasses[disabled ? "disabled" : "enabled"],
186
+ baseClasses2,
187
+ stateClasses2[disabled ? "disabled" : "enabled"],
188
188
  className
189
189
  );
190
190
  return /* @__PURE__ */ jsx(
@@ -213,7 +213,7 @@ function SecondaryButton(_a) {
213
213
  "className",
214
214
  "type"
215
215
  ]);
216
- const baseClasses = [
216
+ const baseClasses2 = [
217
217
  /** layout */
218
218
  "overflow-hidden w-full flex items-center justify-center transition-all duration-200",
219
219
  /** typography */
@@ -230,7 +230,7 @@ function SecondaryButton(_a) {
230
230
  "border-solid border-[length:var(--deframe-widget-size-border-xs)]",
231
231
  "gap-[var(--deframe-widget-size-gap-sm)]"
232
232
  ].join(" ");
233
- const stateClasses = {
233
+ const stateClasses2 = {
234
234
  enabled: [
235
235
  "text-[color:var(--deframe-widget-color-brand-primary)]",
236
236
  "border-[color:var(--deframe-widget-color-brand-primary)]",
@@ -244,8 +244,8 @@ function SecondaryButton(_a) {
244
244
  ].join(" ")
245
245
  };
246
246
  const buttonClasses = twMerge(
247
- baseClasses,
248
- stateClasses[disabled ? "disabled" : "enabled"],
247
+ baseClasses2,
248
+ stateClasses2[disabled ? "disabled" : "enabled"],
249
249
  className
250
250
  );
251
251
  return /* @__PURE__ */ jsx(
@@ -274,7 +274,7 @@ function TertiaryButton(_a) {
274
274
  "className",
275
275
  "type"
276
276
  ]);
277
- const baseClasses = [
277
+ const baseClasses2 = [
278
278
  /** layout */
279
279
  "overflow-hidden w-full flex items-center justify-center transition-all duration-200",
280
280
  /** typography */
@@ -290,7 +290,7 @@ function TertiaryButton(_a) {
290
290
  "rounded-[var(--deframe-widget-size-radius-xs)]",
291
291
  "gap-[var(--deframe-widget-size-gap-sm)]"
292
292
  ].join(" ");
293
- const stateClasses = {
293
+ const stateClasses2 = {
294
294
  enabled: [
295
295
  "text-[color:var(--deframe-widget-color-text-tertiary)]",
296
296
  "hover:opacity-90",
@@ -302,8 +302,8 @@ function TertiaryButton(_a) {
302
302
  ].join(" ")
303
303
  };
304
304
  const buttonClasses = twMerge(
305
- baseClasses,
306
- stateClasses[disabled ? "disabled" : "enabled"],
305
+ baseClasses2,
306
+ stateClasses2[disabled ? "disabled" : "enabled"],
307
307
  className
308
308
  );
309
309
  return /* @__PURE__ */ jsx(
@@ -322,7 +322,7 @@ function TertiaryButton(_a) {
322
322
  }
323
323
  function Input(_a) {
324
324
  var _b = _a, { className = "" } = _b, props = __objRest(_b, ["className"]);
325
- const baseClasses = [
325
+ const baseClasses2 = [
326
326
  "flex flex-col",
327
327
  "[gap:var(--deframe-widget-size-gap-xs)]"
328
328
  ].join(" ");
@@ -331,13 +331,13 @@ function Input(_a) {
331
331
  __spreadValues({
332
332
  "data-slot": "input",
333
333
  "data-test-id": "input",
334
- className: twMerge(baseClasses, className)
334
+ className: twMerge(baseClasses2, className)
335
335
  }, props)
336
336
  );
337
337
  }
338
338
  function InputLabel(_a) {
339
339
  var _b = _a, { className = "" } = _b, props = __objRest(_b, ["className"]);
340
- const baseClasses = [
340
+ const baseClasses2 = [
341
341
  "[font-family:var(--deframe-widget-font-family)]",
342
342
  "[font-size:var(--deframe-widget-font-size-xs)]",
343
343
  "[font-weight:var(--deframe-widget-font-weight-medium)]",
@@ -348,13 +348,13 @@ function InputLabel(_a) {
348
348
  __spreadValues({
349
349
  "data-slot": "input-label",
350
350
  "data-test-id": "input-label",
351
- className: twMerge(baseClasses, className)
351
+ className: twMerge(baseClasses2, className)
352
352
  }, props)
353
353
  );
354
354
  }
355
355
  function InputField(_a) {
356
356
  var _b = _a, { hasError = false, disabled, className = "" } = _b, props = __objRest(_b, ["hasError", "disabled", "className"]);
357
- const baseClasses = [
357
+ const baseClasses2 = [
358
358
  "w-full",
359
359
  "[font-family:var(--deframe-widget-font-family)]",
360
360
  "[font-size:var(--deframe-widget-font-size-md)]",
@@ -368,7 +368,7 @@ function InputField(_a) {
368
368
  "outline-none",
369
369
  "transition-colors"
370
370
  ].join(" ");
371
- const stateClasses = {
371
+ const stateClasses2 = {
372
372
  default: [
373
373
  "border border-[var(--deframe-widget-color-border-primary)]",
374
374
  "bg-[var(--deframe-widget-color-bg-raised)]"
@@ -386,7 +386,7 @@ function InputField(_a) {
386
386
  ].join(" ")
387
387
  };
388
388
  const stateKey = hasError ? "error" : disabled ? "disabled" : "default";
389
- const fieldClasses = twMerge(baseClasses, stateClasses[stateKey], className);
389
+ const fieldClasses = twMerge(baseClasses2, stateClasses2[stateKey], className);
390
390
  return /* @__PURE__ */ jsx(
391
391
  "input",
392
392
  __spreadValues({
@@ -418,13 +418,13 @@ function Link(_a) {
418
418
  "replace",
419
419
  "scroll"
420
420
  ]);
421
- const baseClasses = [
421
+ const baseClasses2 = [
422
422
  "[font-family:var(--deframe-widget-font-family)]",
423
423
  "[font-size:var(--deframe-widget-font-size-md)]",
424
424
  "[font-weight:var(--deframe-widget-font-weight-medium)]",
425
425
  "[line-height:var(--deframe-widget-font-leading-lg)]"
426
426
  ].join(" ");
427
- const stateClasses = {
427
+ const stateClasses2 = {
428
428
  enabled: [
429
429
  "text-[color:var(--deframe-widget-color-text-primary)]",
430
430
  "hover:underline",
@@ -437,8 +437,8 @@ function Link(_a) {
437
437
  ].join(" ")
438
438
  };
439
439
  const linkClasses = twMerge(
440
- baseClasses,
441
- stateClasses[disabled ? "disabled" : "enabled"],
440
+ baseClasses2,
441
+ stateClasses2[disabled ? "disabled" : "enabled"],
442
442
  className
443
443
  );
444
444
  if (disabled) {
@@ -548,7 +548,7 @@ function ListItem(_a) {
548
548
  }
549
549
  function ListItemLeftSide(_a) {
550
550
  var _b = _a, { children, className } = _b, props = __objRest(_b, ["children", "className"]);
551
- const baseClasses = [
551
+ const baseClasses2 = [
552
552
  "flex justify-center items-center",
553
553
  "text-[var(--deframe-widget-color-text-primary)]"
554
554
  ].join(" ");
@@ -557,7 +557,7 @@ function ListItemLeftSide(_a) {
557
557
  __spreadProps(__spreadValues({
558
558
  "data-slot": "list-item-left-side",
559
559
  "data-test-id": "list-item-left-side",
560
- className: twMerge(baseClasses, className)
560
+ className: twMerge(baseClasses2, className)
561
561
  }, props), {
562
562
  children
563
563
  })
@@ -565,7 +565,7 @@ function ListItemLeftSide(_a) {
565
565
  }
566
566
  function ListItemContent(_a) {
567
567
  var _b = _a, { children, className } = _b, props = __objRest(_b, ["children", "className"]);
568
- const baseClasses = [
568
+ const baseClasses2 = [
569
569
  "flex-1 self-stretch inline-flex flex-col justify-center items-start overflow-hidden",
570
570
  "text-[var(--deframe-widget-color-text-primary)]"
571
571
  ].join(" ");
@@ -574,7 +574,7 @@ function ListItemContent(_a) {
574
574
  __spreadProps(__spreadValues({
575
575
  "data-slot": "list-item-content",
576
576
  "data-test-id": "list-item-content",
577
- className: twMerge(baseClasses, className)
577
+ className: twMerge(baseClasses2, className)
578
578
  }, props), {
579
579
  children
580
580
  })
@@ -582,7 +582,7 @@ function ListItemContent(_a) {
582
582
  }
583
583
  function ListItemRightSide(_a) {
584
584
  var _b = _a, { children, className } = _b, props = __objRest(_b, ["children", "className"]);
585
- const baseClasses = [
585
+ const baseClasses2 = [
586
586
  "flex flex-col justify-start items-end",
587
587
  "text-[var(--deframe-widget-color-text-primary)]"
588
588
  ].join(" ");
@@ -591,7 +591,7 @@ function ListItemRightSide(_a) {
591
591
  __spreadProps(__spreadValues({
592
592
  "data-slot": "list-item-right-side",
593
593
  "data-test-id": "list-item-right-side",
594
- className: twMerge(baseClasses, className)
594
+ className: twMerge(baseClasses2, className)
595
595
  }, props), {
596
596
  children
597
597
  })
@@ -901,19 +901,19 @@ var Text = React6.forwardRef(
901
901
  "disabled",
902
902
  "className"
903
903
  ]);
904
- const baseClasses = [
904
+ const baseClasses2 = [
905
905
  "[font-family:var(--deframe-widget-font-family)]",
906
906
  "[font-size:var(--deframe-widget-font-size-md)]",
907
907
  "[line-height:var(--deframe-widget-font-leading-md)]",
908
908
  "[font-weight:var(--deframe-widget-font-weight-regular)]"
909
909
  ].join(" ");
910
- const stateClasses = {
910
+ const stateClasses2 = {
911
911
  enabled: "text-[color:var(--deframe-widget-color-text-primary)]",
912
912
  disabled: "text-[color:var(--deframe-widget-color-text-primary-disabled)]"
913
913
  };
914
914
  const textClasses = twMerge(
915
- baseClasses,
916
- stateClasses[disabled ? "disabled" : "enabled"],
915
+ baseClasses2,
916
+ stateClasses2[disabled ? "disabled" : "enabled"],
917
917
  className
918
918
  );
919
919
  return React6.createElement(
@@ -959,14 +959,14 @@ var TextAccent = React6.forwardRef(
959
959
  "[font-weight:var(--deframe-widget-font-weight-semibold)]"
960
960
  ].join(" ")
961
961
  };
962
- const stateClasses = {
962
+ const stateClasses2 = {
963
963
  enabled: "text-[color:var(--deframe-widget-color-text-primary)]",
964
964
  disabled: "text-[color:var(--deframe-widget-color-text-primary-disabled)]"
965
965
  };
966
966
  const variantClass = accentVariants[variant];
967
967
  const accentClasses = twMerge(
968
968
  variantClass,
969
- stateClasses[disabled ? "disabled" : "enabled"],
969
+ stateClasses2[disabled ? "disabled" : "enabled"],
970
970
  className
971
971
  );
972
972
  return /* @__PURE__ */ jsx(
@@ -1013,14 +1013,14 @@ var TextBody = React6.forwardRef(
1013
1013
  "[font-weight:var(--deframe-widget-font-weight-regular)]"
1014
1014
  ].join(" ")
1015
1015
  };
1016
- const stateClasses = {
1016
+ const stateClasses2 = {
1017
1017
  enabled: "text-[color:var(--deframe-widget-color-text-primary)]",
1018
1018
  disabled: "text-[color:var(--deframe-widget-color-text-primary-disabled)]"
1019
1019
  };
1020
1020
  const variantClass = bodyVariants[variant];
1021
1021
  const bodyClasses = twMerge(
1022
1022
  variantClass,
1023
- stateClasses[disabled ? "disabled" : "enabled"],
1023
+ stateClasses2[disabled ? "disabled" : "enabled"],
1024
1024
  className
1025
1025
  );
1026
1026
  return /* @__PURE__ */ jsx(
@@ -1082,14 +1082,14 @@ var TextHeading = React6.forwardRef(
1082
1082
  "[font-weight:var(--deframe-widget-font-weight-bold)]"
1083
1083
  ].join(" ")
1084
1084
  };
1085
- const stateClasses = {
1085
+ const stateClasses2 = {
1086
1086
  enabled: "text-[color:var(--deframe-widget-color-text-primary)]",
1087
1087
  disabled: "text-[color:var(--deframe-widget-color-text-primary-disabled)]"
1088
1088
  };
1089
1089
  const variantClass = headingVariants[variant];
1090
1090
  const headingClasses = twMerge(
1091
1091
  variantClass,
1092
- stateClasses[disabled ? "disabled" : "enabled"],
1092
+ stateClasses2[disabled ? "disabled" : "enabled"],
1093
1093
  className
1094
1094
  );
1095
1095
  return /* @__PURE__ */ jsx(
@@ -1575,7 +1575,7 @@ var Skeleton = (_a) => {
1575
1575
  Skeleton.displayName = "Skeleton";
1576
1576
  function BannerNotificationIcon(_a) {
1577
1577
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1578
- const baseClasses = [
1578
+ const baseClasses2 = [
1579
1579
  "flex items-center justify-center",
1580
1580
  "flex-shrink-0",
1581
1581
  "[font-size:var(--deframe-widget-font-size-xxl)]"
@@ -1585,19 +1585,19 @@ function BannerNotificationIcon(_a) {
1585
1585
  __spreadValues({
1586
1586
  "data-slot": "banner-notification-icon",
1587
1587
  "data-test-id": "banner-notification-icon",
1588
- className: twMerge(baseClasses, className)
1588
+ className: twMerge(baseClasses2, className)
1589
1589
  }, props)
1590
1590
  );
1591
1591
  }
1592
1592
  function BannerNotificationContent(_a) {
1593
1593
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1594
- const baseClasses = "flex-1 min-w-0 px-[var(--deframe-widget-size-padding-x-sm)] py-[var(--deframe-widget-size-padding-y-sm)]";
1594
+ const baseClasses2 = "flex-1 min-w-0 px-[var(--deframe-widget-size-padding-x-sm)] py-[var(--deframe-widget-size-padding-y-sm)]";
1595
1595
  return /* @__PURE__ */ jsx(
1596
1596
  "div",
1597
1597
  __spreadValues({
1598
1598
  "data-slot": "banner-notification-content",
1599
1599
  "data-test-id": "banner-notification-content",
1600
- className: twMerge(baseClasses, className)
1600
+ className: twMerge(baseClasses2, className)
1601
1601
  }, props)
1602
1602
  );
1603
1603
  }
@@ -1628,7 +1628,7 @@ function BannerNotificationMessage(_a) {
1628
1628
  }
1629
1629
  function BannerNotificationClose(_a) {
1630
1630
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1631
- const baseClasses = [
1631
+ const baseClasses2 = [
1632
1632
  "flex-shrink-0",
1633
1633
  "self-start",
1634
1634
  "[font-size:var(--deframe-widget-font-size-xl)]",
@@ -1640,7 +1640,7 @@ function BannerNotificationClose(_a) {
1640
1640
  "data-slot": "banner-notification-close",
1641
1641
  "data-test-id": "banner-notification-close",
1642
1642
  "aria-label": "Close notification",
1643
- className: twMerge(baseClasses, className)
1643
+ className: twMerge(baseClasses2, className)
1644
1644
  }, props)
1645
1645
  );
1646
1646
  }
@@ -1739,7 +1739,7 @@ var BannerNotification = (_a) => {
1739
1739
  const v = variant;
1740
1740
  const t = type;
1741
1741
  const p = position;
1742
- const baseClasses = [
1742
+ const baseClasses2 = [
1743
1743
  "flex items-center",
1744
1744
  "[gap:var(--deframe-widget-size-gap-md)]",
1745
1745
  "px-[var(--deframe-widget-size-padding-x-md)]",
@@ -1757,7 +1757,7 @@ var BannerNotification = (_a) => {
1757
1757
  ].join(" ")
1758
1758
  };
1759
1759
  const bannerClasses = twMerge(
1760
- baseClasses,
1760
+ baseClasses2,
1761
1761
  typeClasses[t],
1762
1762
  t === "toast" ? "text-white" : variantTextClasses[v],
1763
1763
  isExiting && "opacity-0 -translate-y-2",
@@ -2219,13 +2219,13 @@ function DeframeComponentsProvider({
2219
2219
  );
2220
2220
  }
2221
2221
  var InfoRow = ({ children, borderBottom, className }) => {
2222
- const baseClasses = "self-stretch inline-flex justify-between items-start";
2222
+ const baseClasses2 = "self-stretch inline-flex justify-between items-start";
2223
2223
  const borderClasses = borderBottom ? "border-b border-[color:var(--deframe-widget-color-border-secondary)] pb-[var(--deframe-widget-size-padding-y-sm)]" : "";
2224
- return /* @__PURE__ */ jsx("div", { "data-test-id": "info-row", className: twMerge(baseClasses, borderClasses, className), children });
2224
+ return /* @__PURE__ */ jsx("div", { "data-test-id": "info-row", className: twMerge(baseClasses2, borderClasses, className), children });
2225
2225
  };
2226
2226
  var InfoLabel = ({ children, className }) => {
2227
- const baseClasses = "[font-size:var(--deframe-widget-font-size-sm)] [line-height:var(--deframe-widget-font-leading-sm)] text-[color:var(--deframe-widget-color-text-secondary)]";
2228
- return /* @__PURE__ */ jsx("div", { "data-test-id": "info-label", className: twMerge(baseClasses, className), children });
2227
+ const baseClasses2 = "[font-size:var(--deframe-widget-font-size-sm)] [line-height:var(--deframe-widget-font-leading-sm)] text-[color:var(--deframe-widget-color-text-secondary)]";
2228
+ return /* @__PURE__ */ jsx("div", { "data-test-id": "info-label", className: twMerge(baseClasses2, className), children });
2229
2229
  };
2230
2230
  var variantClasses = {
2231
2231
  default: "text-[color:var(--deframe-widget-color-text-primary)]",
@@ -2234,24 +2234,24 @@ var variantClasses = {
2234
2234
  error: "text-[color:var(--deframe-widget-color-state-error)]"
2235
2235
  };
2236
2236
  var InfoValue = ({ children, variant = "default", className }) => {
2237
- const baseClasses = "[font-size:var(--deframe-widget-font-size-sm)] [line-height:var(--deframe-widget-font-leading-sm)] [font-weight:var(--deframe-widget-font-weight-semibold)]";
2238
- return /* @__PURE__ */ jsx("div", { "data-test-id": "info-value", className: twMerge(baseClasses, variantClasses[variant], className), children });
2237
+ const baseClasses2 = "[font-size:var(--deframe-widget-font-size-sm)] [line-height:var(--deframe-widget-font-leading-sm)] [font-weight:var(--deframe-widget-font-weight-semibold)]";
2238
+ return /* @__PURE__ */ jsx("div", { "data-test-id": "info-value", className: twMerge(baseClasses2, variantClasses[variant], className), children });
2239
2239
  };
2240
2240
  var InfoRowWithIcon = ({ children, borderBottom, className }) => {
2241
- const baseClasses = "flex items-start justify-between h-[17px]";
2241
+ const baseClasses2 = "flex items-start justify-between h-[17px]";
2242
2242
  const borderClasses = borderBottom ? "border-b border-[color:var(--deframe-widget-color-border-secondary)] pb-[var(--deframe-widget-size-padding-y-sm)]" : "";
2243
- return /* @__PURE__ */ jsx("div", { "data-test-id": "info-row-with-icon", className: twMerge(baseClasses, borderClasses, className), children });
2243
+ return /* @__PURE__ */ jsx("div", { "data-test-id": "info-row-with-icon", className: twMerge(baseClasses2, borderClasses, className), children });
2244
2244
  };
2245
2245
  var InfoRowIconLabel = ({ children, className }) => {
2246
- const baseClasses = "[font-size:var(--deframe-widget-font-size-sm)] [line-height:var(--deframe-widget-font-leading-sm)] text-[color:var(--deframe-widget-color-text-secondary)]";
2247
- return /* @__PURE__ */ jsxs("div", { "data-test-id": "info-row-icon-label", className: twMerge(baseClasses, className), children: [
2246
+ const baseClasses2 = "[font-size:var(--deframe-widget-font-size-sm)] [line-height:var(--deframe-widget-font-leading-sm)] text-[color:var(--deframe-widget-color-text-secondary)]";
2247
+ return /* @__PURE__ */ jsxs("div", { "data-test-id": "info-row-icon-label", className: twMerge(baseClasses2, className), children: [
2248
2248
  "\u2022 ",
2249
2249
  children
2250
2250
  ] });
2251
2251
  };
2252
2252
  var InfoRowIconValue = ({ children, className }) => {
2253
- const baseClasses = "[font-size:var(--deframe-widget-font-size-sm)] [line-height:var(--deframe-widget-font-leading-sm)] [font-weight:var(--deframe-widget-font-weight-semibold)] text-[color:var(--deframe-widget-color-text-primary)]";
2254
- return /* @__PURE__ */ jsx("div", { "data-test-id": "info-row-icon-value", className: twMerge(baseClasses, className), children });
2253
+ const baseClasses2 = "[font-size:var(--deframe-widget-font-size-sm)] [line-height:var(--deframe-widget-font-leading-sm)] [font-weight:var(--deframe-widget-font-weight-semibold)] text-[color:var(--deframe-widget-color-text-primary)]";
2254
+ return /* @__PURE__ */ jsx("div", { "data-test-id": "info-row-icon-value", className: twMerge(baseClasses2, className), children });
2255
2255
  };
2256
2256
  var CollapsibleInfoRow = ({
2257
2257
  label,
@@ -2263,8 +2263,8 @@ var CollapsibleInfoRow = ({
2263
2263
  expandLabel
2264
2264
  }) => {
2265
2265
  const [isOpen, setIsOpen] = React6__default.useState(defaultOpen);
2266
- const baseClasses = "flex flex-col gap-[var(--deframe-widget-size-gap-sm)] w-full";
2267
- return /* @__PURE__ */ jsxs("div", { "data-test-id": "collapsible-info-row", className: twMerge(baseClasses, className), children: [
2266
+ const baseClasses2 = "flex flex-col gap-[var(--deframe-widget-size-gap-sm)] w-full";
2267
+ return /* @__PURE__ */ jsxs("div", { "data-test-id": "collapsible-info-row", className: twMerge(baseClasses2, className), children: [
2268
2268
  /* @__PURE__ */ jsxs(
2269
2269
  "button",
2270
2270
  {
@@ -2286,16 +2286,16 @@ var CollapsibleInfoRow = ({
2286
2286
  ] });
2287
2287
  };
2288
2288
  var BackgroundContainer = ({ children, className }) => {
2289
- const baseClasses = "w-full flex-1 min-h-0 px-[var(--deframe-widget-size-padding-x-md)] bg-[var(--deframe-widget-color-bg-primary)] lg:bg-[var(--deframe-widget-color-bg-secondary)] text-[color:var(--deframe-widget-color-text-primary)] flex flex-col relative overflow-y-auto";
2290
- return /* @__PURE__ */ jsx("div", { "data-test-id": "background-container", className: twMerge(baseClasses, className), children });
2289
+ const baseClasses2 = "w-full flex-1 min-h-0 px-[var(--deframe-widget-size-padding-x-md)] bg-[var(--deframe-widget-color-bg-primary)] lg:bg-[var(--deframe-widget-color-bg-secondary)] text-[color:var(--deframe-widget-color-text-primary)] flex flex-col relative overflow-y-auto";
2290
+ return /* @__PURE__ */ jsx("div", { "data-test-id": "background-container", className: twMerge(baseClasses2, className), children });
2291
2291
  };
2292
2292
  var SectionCard = ({ children, className }) => {
2293
- const baseClasses = "bg-[var(--deframe-widget-color-bg-secondary)] lg:!bg-[var(--deframe-widget-color-bg-secondary)] rounded-[var(--deframe-widget-size-radius-xs)] shadow-[0_2px_8px_color-mix(in_srgb,var(--deframe-widget-color-text-primary)_18%,transparent)] px-[var(--deframe-widget-size-padding-x-md)] py-[var(--deframe-widget-size-padding-y-md)] flex flex-col gap-[var(--deframe-widget-size-gap-sm)]";
2294
- return /* @__PURE__ */ jsx("div", { "data-test-id": "section-card", className: twMerge(baseClasses, className), children });
2293
+ const baseClasses2 = "bg-[var(--deframe-widget-color-bg-secondary)] lg:!bg-[var(--deframe-widget-color-bg-secondary)] rounded-[var(--deframe-widget-size-radius-xs)] shadow-[0_2px_8px_color-mix(in_srgb,var(--deframe-widget-color-text-primary)_18%,transparent)] px-[var(--deframe-widget-size-padding-x-md)] py-[var(--deframe-widget-size-padding-y-md)] flex flex-col gap-[var(--deframe-widget-size-gap-sm)]";
2294
+ return /* @__PURE__ */ jsx("div", { "data-test-id": "section-card", className: twMerge(baseClasses2, className), children });
2295
2295
  };
2296
2296
  var Navbar = ({ children, className }) => {
2297
- const baseClasses = "w-full px-[var(--deframe-widget-size-padding-x-sm)] pr-[var(--deframe-widget-size-padding-x-md)] pt-[var(--deframe-widget-size-padding-y-sm)] pb-[var(--deframe-widget-size-padding-y-md)] border-b items-center border-[color:var(--deframe-widget-color-border-tertiary)] flex";
2298
- return /* @__PURE__ */ jsx("nav", { "data-test-id": "navbar", className: twMerge(baseClasses, className), children });
2297
+ const baseClasses2 = "w-full px-[var(--deframe-widget-size-padding-x-sm)] pr-[var(--deframe-widget-size-padding-x-md)] pt-[var(--deframe-widget-size-padding-y-sm)] pb-[var(--deframe-widget-size-padding-y-md)] border-b items-center border-[color:var(--deframe-widget-color-border-tertiary)] flex";
2298
+ return /* @__PURE__ */ jsx("nav", { "data-test-id": "navbar", className: twMerge(baseClasses2, className), children });
2299
2299
  };
2300
2300
  var gapClasses = {
2301
2301
  xs: "gap-[var(--deframe-widget-size-gap-xs)]",
@@ -2304,8 +2304,8 @@ var gapClasses = {
2304
2304
  lg: "gap-[var(--deframe-widget-size-gap-lg)]"
2305
2305
  };
2306
2306
  var FlexCol = ({ children, className, gap = "xs" }) => {
2307
- const baseClasses = "flex flex-col";
2308
- return /* @__PURE__ */ jsx("div", { "data-test-id": "flex-col", className: twMerge(baseClasses, gapClasses[gap], className), children });
2307
+ const baseClasses2 = "flex flex-col";
2308
+ return /* @__PURE__ */ jsx("div", { "data-test-id": "flex-col", className: twMerge(baseClasses2, gapClasses[gap], className), children });
2309
2309
  };
2310
2310
  var gapClasses2 = {
2311
2311
  xs: "gap-[var(--deframe-widget-size-gap-xs)]",
@@ -2314,16 +2314,16 @@ var gapClasses2 = {
2314
2314
  lg: "gap-[var(--deframe-widget-size-gap-lg)]"
2315
2315
  };
2316
2316
  var FlexRow = ({ children, className, gap = "xs" }) => {
2317
- const baseClasses = "flex items-center";
2318
- return /* @__PURE__ */ jsx("div", { "data-test-id": "flex-row", className: twMerge(baseClasses, gapClasses2[gap], className), children });
2317
+ const baseClasses2 = "flex items-center";
2318
+ return /* @__PURE__ */ jsx("div", { "data-test-id": "flex-row", className: twMerge(baseClasses2, gapClasses2[gap], className), children });
2319
2319
  };
2320
2320
  var ScrollableContent = ({ children, className }) => {
2321
- const baseClasses = "flex-1 overflow-y-auto px-[var(--deframe-widget-size-padding-x-md)] py-[var(--deframe-widget-size-padding-y-lg)]";
2322
- return /* @__PURE__ */ jsx("div", { "data-test-id": "scrollable-content", className: twMerge(baseClasses, className), children });
2321
+ const baseClasses2 = "flex-1 overflow-y-auto px-[var(--deframe-widget-size-padding-x-md)] py-[var(--deframe-widget-size-padding-y-lg)]";
2322
+ return /* @__PURE__ */ jsx("div", { "data-test-id": "scrollable-content", className: twMerge(baseClasses2, className), children });
2323
2323
  };
2324
2324
  var DetailsHeader = ({ title, onBack, className, backAriaLabel = "Back" }) => {
2325
- const baseClasses = "w-full px-[var(--deframe-widget-size-padding-x-sm)] pr-[var(--deframe-widget-size-padding-x-md)] pt-[var(--deframe-widget-size-padding-y-sm)] pb-[var(--deframe-widget-size-padding-y-md)] border-b border-[color:var(--deframe-widget-color-border-tertiary)] flex items-center";
2326
- return /* @__PURE__ */ jsxs("div", { "data-test-id": "details-header", className: twMerge(baseClasses, className), children: [
2325
+ const baseClasses2 = "w-full px-[var(--deframe-widget-size-padding-x-sm)] pr-[var(--deframe-widget-size-padding-x-md)] pt-[var(--deframe-widget-size-padding-y-sm)] pb-[var(--deframe-widget-size-padding-y-md)] border-b border-[color:var(--deframe-widget-color-border-tertiary)] flex items-center";
2326
+ return /* @__PURE__ */ jsxs("div", { "data-test-id": "details-header", className: twMerge(baseClasses2, className), children: [
2327
2327
  /* @__PURE__ */ jsx(
2328
2328
  "button",
2329
2329
  {
@@ -2338,8 +2338,8 @@ var DetailsHeader = ({ title, onBack, className, backAriaLabel = "Back" }) => {
2338
2338
  ] });
2339
2339
  };
2340
2340
  var HighRiskBadge = ({ className, label }) => {
2341
- const baseClasses = "inline-flex justify-start items-start gap-[var(--deframe-widget-size-gap-xs)]";
2342
- return /* @__PURE__ */ jsx("div", { "data-test-id": "high-risk-badge", className: twMerge(baseClasses, className), children: /* @__PURE__ */ jsx(
2341
+ const baseClasses2 = "inline-flex justify-start items-start gap-[var(--deframe-widget-size-gap-xs)]";
2342
+ return /* @__PURE__ */ jsx("div", { "data-test-id": "high-risk-badge", className: twMerge(baseClasses2, className), children: /* @__PURE__ */ jsx(
2343
2343
  "div",
2344
2344
  {
2345
2345
  "data-size": "Small",
@@ -2350,8 +2350,8 @@ var HighRiskBadge = ({ className, label }) => {
2350
2350
  ) });
2351
2351
  };
2352
2352
  var MediumRiskBadge = ({ className, label }) => {
2353
- const baseClasses = "inline-flex justify-start items-start gap-[var(--deframe-widget-size-gap-xs)]";
2354
- return /* @__PURE__ */ jsx("div", { "data-test-id": "medium-risk-badge", className: twMerge(baseClasses, className), children: /* @__PURE__ */ jsx(
2353
+ const baseClasses2 = "inline-flex justify-start items-start gap-[var(--deframe-widget-size-gap-xs)]";
2354
+ return /* @__PURE__ */ jsx("div", { "data-test-id": "medium-risk-badge", className: twMerge(baseClasses2, className), children: /* @__PURE__ */ jsx(
2355
2355
  "div",
2356
2356
  {
2357
2357
  "data-size": "Small",
@@ -2362,8 +2362,8 @@ var MediumRiskBadge = ({ className, label }) => {
2362
2362
  ) });
2363
2363
  };
2364
2364
  var LowRiskBadge = ({ className, label }) => {
2365
- const baseClasses = "inline-flex justify-start items-start gap-[var(--deframe-widget-size-gap-xs)]";
2366
- return /* @__PURE__ */ jsx("div", { "data-test-id": "low-risk-badge", className: twMerge(baseClasses, className), children: /* @__PURE__ */ jsx(
2365
+ const baseClasses2 = "inline-flex justify-start items-start gap-[var(--deframe-widget-size-gap-xs)]";
2366
+ return /* @__PURE__ */ jsx("div", { "data-test-id": "low-risk-badge", className: twMerge(baseClasses2, className), children: /* @__PURE__ */ jsx(
2367
2367
  "div",
2368
2368
  {
2369
2369
  "data-size": "Small",
@@ -2387,7 +2387,7 @@ var ProcessingBadge = ({
2387
2387
  size = "default"
2388
2388
  }) => {
2389
2389
  const isCompact = size === "compact";
2390
- const baseClasses = [
2390
+ const baseClasses2 = [
2391
2391
  "inline-flex max-w-fit items-center gap-[var(--deframe-widget-size-gap-xs)] rounded-[var(--deframe-widget-size-radius-full)] border",
2392
2392
  "text-[color:var(--deframe-widget-color-state-info)]",
2393
2393
  "bg-[color:color-mix(in_srgb,var(--deframe-widget-color-state-info)_18%,transparent)]",
@@ -2398,7 +2398,7 @@ var ProcessingBadge = ({
2398
2398
  compact: "px-[calc(var(--deframe-widget-size-padding-x-xs)+2px)] py-[2px]"
2399
2399
  };
2400
2400
  const processingBadgeClasses = twMerge(
2401
- baseClasses,
2401
+ baseClasses2,
2402
2402
  sizeClasses[isCompact ? "compact" : "default"],
2403
2403
  className
2404
2404
  );
@@ -4252,7 +4252,7 @@ var SwapAmountInputView = ({
4252
4252
  }
4253
4253
  return val;
4254
4254
  };
4255
- const baseClasses = "[font-size:var(--deframe-widget-font-size-xxl)] [line-height:var(--deframe-widget-font-leading-xxl)] [font-weight:var(--deframe-widget-font-weight-extrabold)] bg-transparent outline-none text-right w-full min-w-[120px] placeholder:text-[color:var(--deframe-widget-color-text-primary-disabled)]";
4255
+ const baseClasses2 = "[font-size:var(--deframe-widget-font-size-xxl)] [line-height:var(--deframe-widget-font-leading-xxl)] [font-weight:var(--deframe-widget-font-weight-extrabold)] bg-transparent outline-none text-right w-full min-w-[120px] placeholder:text-[color:var(--deframe-widget-color-text-primary-disabled)]";
4256
4256
  const colorClasses = hasError ? "text-[color:var(--deframe-widget-color-state-error)]" : "text-[color:var(--deframe-widget-color-text-primary)]";
4257
4257
  return /* @__PURE__ */ jsx(
4258
4258
  "input",
@@ -4266,7 +4266,7 @@ var SwapAmountInputView = ({
4266
4266
  min: "0",
4267
4267
  step: "any",
4268
4268
  value,
4269
- className: twMerge(baseClasses, colorClasses, className)
4269
+ className: twMerge(baseClasses2, colorClasses, className)
4270
4270
  }, field), {
4271
4271
  onChange: (event) => {
4272
4272
  let normalized = normalizeAmountInput(event.target.value);
@@ -5818,14 +5818,14 @@ var SwapTokenSelectorView = ({
5818
5818
  selectTokenLabel = "Select token",
5819
5819
  className
5820
5820
  }) => {
5821
- const baseClasses = "h-[56px] border border-[color:var(--deframe-widget-color-border-secondary)] rounded-[var(--deframe-widget-size-radius-xs)] overflow-hidden hover:border-[color:var(--deframe-widget-color-border-primary)] transition-colors flex items-center px-[var(--deframe-widget-size-padding-x-sm)] py-[6px] w-full cursor-pointer";
5821
+ const baseClasses2 = "h-[56px] border border-[color:var(--deframe-widget-color-border-secondary)] rounded-[var(--deframe-widget-size-radius-xs)] overflow-hidden hover:border-[color:var(--deframe-widget-color-border-primary)] transition-colors flex items-center px-[var(--deframe-widget-size-padding-x-sm)] py-[6px] w-full cursor-pointer";
5822
5822
  return /* @__PURE__ */ jsxs(
5823
5823
  "button",
5824
5824
  {
5825
5825
  "data-test-id": testId,
5826
5826
  type: "button",
5827
5827
  onClick,
5828
- className: twMerge(baseClasses, className),
5828
+ className: twMerge(baseClasses2, className),
5829
5829
  "aria-label": token ? token.symbol : selectTokenLabel,
5830
5830
  children: [
5831
5831
  /* @__PURE__ */ jsx("div", { className: "flex items-center gap-[var(--deframe-widget-size-gap-sm)] flex-1", children: token ? /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -5845,8 +5845,8 @@ var SwapNetworkSelectorView = ({
5845
5845
  testId = "swap-network-selector",
5846
5846
  className
5847
5847
  }) => {
5848
- const baseClasses = "flex flex-row items-center gap-[var(--deframe-widget-size-gap-xs)]";
5849
- return /* @__PURE__ */ jsxs("div", { "data-test-id": testId, className: twMerge(baseClasses, className), children: [
5848
+ const baseClasses2 = "flex flex-row items-center gap-[var(--deframe-widget-size-gap-xs)]";
5849
+ return /* @__PURE__ */ jsxs("div", { "data-test-id": testId, className: twMerge(baseClasses2, className), children: [
5850
5850
  /* @__PURE__ */ jsx(TextBody, { as: "span", variant: "text-small", className: "tracking-wide text-[color:var(--deframe-widget-color-text-tertiary)]", children: directionLabel }),
5851
5851
  /* @__PURE__ */ jsxs(
5852
5852
  "button",
@@ -5967,8 +5967,8 @@ var SwapOutputAmountView = ({
5967
5967
  searchingQuoteLabel = "Searching quote...",
5968
5968
  className
5969
5969
  }) => {
5970
- const baseClasses = "[font-size:var(--deframe-widget-font-size-xxl)] [line-height:var(--deframe-widget-font-leading-xxl)] [font-weight:var(--deframe-widget-font-weight-extrabold)] text-right w-full min-w-[120px] text-[color:var(--deframe-widget-color-text-primary)]";
5971
- return /* @__PURE__ */ jsx("div", { "data-test-id": "swap-flow-output-amount", className: twMerge(baseClasses, className), children: isLoading ? /* @__PURE__ */ jsx(TextBody, { as: "span", variant: "text-small", className: "text-[color:var(--deframe-widget-color-text-primary-disabled)] inline-flex items-center", children: loadingElement != null ? loadingElement : searchingQuoteLabel }) : displayOutput });
5970
+ const baseClasses2 = "[font-size:var(--deframe-widget-font-size-xxl)] [line-height:var(--deframe-widget-font-leading-xxl)] [font-weight:var(--deframe-widget-font-weight-extrabold)] text-right w-full min-w-[120px] text-[color:var(--deframe-widget-color-text-primary)]";
5971
+ return /* @__PURE__ */ jsx("div", { "data-test-id": "swap-flow-output-amount", className: twMerge(baseClasses2, className), children: isLoading ? /* @__PURE__ */ jsx(TextBody, { as: "span", variant: "text-small", className: "text-[color:var(--deframe-widget-color-text-primary-disabled)] inline-flex items-center", children: loadingElement != null ? loadingElement : searchingQuoteLabel }) : displayOutput });
5972
5972
  };
5973
5973
  var SwapToCardView = ({
5974
5974
  labels,
@@ -6047,10 +6047,66 @@ var SwapToCardView = ({
6047
6047
  ] })
6048
6048
  ] }) });
6049
6049
  };
6050
+ var baseClasses = [
6051
+ "inline-flex items-center justify-center",
6052
+ "py-[3px] px-[10px]",
6053
+ "rounded-[var(--deframe-widget-size-radius-full)]",
6054
+ "cursor-pointer text-[12px] transition-all duration-150 outline-none",
6055
+ "font-[var(--deframe-widget-font-family)] whitespace-nowrap border"
6056
+ ].join(" ");
6057
+ var stateClasses = {
6058
+ active: [
6059
+ "border-[color:color-mix(in_srgb,var(--deframe-widget-color-brand-primary)_32%,transparent)]",
6060
+ "bg-[color:color-mix(in_srgb,var(--deframe-widget-color-brand-primary)_12%,transparent)]",
6061
+ "text-[color:var(--deframe-widget-color-brand-primary)]",
6062
+ "[font-weight:var(--deframe-widget-font-weight-semibold)]"
6063
+ ].join(" "),
6064
+ default: [
6065
+ "border-[color:var(--deframe-widget-color-border-secondary)]",
6066
+ "bg-[color:color-mix(in_srgb,var(--deframe-widget-color-bg-tertiary)_84%,transparent)]",
6067
+ "text-[color:var(--deframe-widget-color-text-secondary)]",
6068
+ "[font-weight:var(--deframe-widget-font-weight-regular)]",
6069
+ "hover:border-[color:var(--deframe-widget-color-border-primary)]",
6070
+ "hover:bg-[color:color-mix(in_srgb,var(--deframe-widget-color-bg-tertiary)_92%,transparent)]",
6071
+ "hover:text-[color:var(--deframe-widget-color-text-primary)]"
6072
+ ].join(" ")
6073
+ };
6074
+ function SlippageChip({
6075
+ options = [],
6076
+ selected = null,
6077
+ onSelect,
6078
+ formatLabel,
6079
+ className
6080
+ }) {
6081
+ return /* @__PURE__ */ jsx(
6082
+ "div",
6083
+ {
6084
+ "data-test-id": "slippage-chips",
6085
+ "data-slot": "slippage-chips",
6086
+ className: twMerge("flex gap-[6px] items-center", className),
6087
+ children: options.map((bps) => /* @__PURE__ */ jsx(
6088
+ "button",
6089
+ {
6090
+ "data-test-id": "slippage-chip",
6091
+ "data-slot": "slippage-chip",
6092
+ type: "button",
6093
+ onClick: () => onSelect(bps),
6094
+ className: twMerge(baseClasses, stateClasses[bps === selected ? "active" : "default"]),
6095
+ children: formatLabel(bps)
6096
+ },
6097
+ bps
6098
+ ))
6099
+ }
6100
+ );
6101
+ }
6050
6102
  var SwapAdvancedSettingsView = ({
6051
6103
  title,
6052
6104
  isOpen,
6053
6105
  onOpenChange,
6106
+ slippageBps,
6107
+ onSlippageSelect,
6108
+ formatPercentage,
6109
+ slippageOptions,
6054
6110
  percentageOptions,
6055
6111
  onPercentageClick,
6056
6112
  slippageFormatted,
@@ -6067,19 +6123,30 @@ var SwapAdvancedSettingsView = ({
6067
6123
  onOpenChange,
6068
6124
  collapseText,
6069
6125
  expandText,
6070
- children: /* @__PURE__ */ jsx("div", { className: "w-full", children: /* @__PURE__ */ jsx("div", { className: "flex w-full gap-sm", children: percentageOptions.map((pct, index) => {
6071
- const isMax = index === percentageOptions.length - 1;
6072
- const label = isMax ? maxLabel : `${pct / 100}%`;
6073
- return /* @__PURE__ */ jsx(
6074
- PercentageButton,
6126
+ children: /* @__PURE__ */ jsxs("div", { className: "w-full flex flex-col gap-sm", children: [
6127
+ /* @__PURE__ */ jsx(
6128
+ SlippageChip,
6075
6129
  {
6076
- type: "button",
6077
- onClick: () => onPercentageClick(pct),
6078
- children: label
6079
- },
6080
- pct
6081
- );
6082
- }) }) })
6130
+ options: slippageOptions,
6131
+ selected: slippageBps,
6132
+ onSelect: onSlippageSelect,
6133
+ formatLabel: formatPercentage
6134
+ }
6135
+ ),
6136
+ /* @__PURE__ */ jsx("div", { className: "flex w-full gap-sm", children: percentageOptions.map((pct, index) => {
6137
+ const isMax = index === percentageOptions.length - 1;
6138
+ const label = isMax ? maxLabel : `${pct / 100}%`;
6139
+ return /* @__PURE__ */ jsx(
6140
+ PercentageButton,
6141
+ {
6142
+ type: "button",
6143
+ onClick: () => onPercentageClick(pct),
6144
+ children: label
6145
+ },
6146
+ pct
6147
+ );
6148
+ }) })
6149
+ ] })
6083
6150
  }
6084
6151
  ) }) });
6085
6152
  };
@@ -6088,8 +6155,8 @@ var SwapQuoteHeaderView = ({
6088
6155
  timerElement,
6089
6156
  className
6090
6157
  }) => {
6091
- const baseClasses = "border-b border-[color:var(--deframe-widget-color-border-secondary)] pb-[var(--deframe-widget-size-padding-y-sm)]";
6092
- return /* @__PURE__ */ jsx("div", { "data-test-id": "swap-quote-header", className: twMerge(baseClasses, className), children: /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
6158
+ const baseClasses2 = "border-b border-[color:var(--deframe-widget-color-border-secondary)] pb-[var(--deframe-widget-size-padding-y-sm)]";
6159
+ return /* @__PURE__ */ jsx("div", { "data-test-id": "swap-quote-header", className: twMerge(baseClasses2, className), children: /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
6093
6160
  /* @__PURE__ */ jsx(TextBody, { as: "span", variant: "text-small", className: "[font-weight:var(--deframe-widget-font-weight-semibold)] text-[color:var(--deframe-widget-color-text-secondary)] inline-flex items-center", children: label }),
6094
6161
  /* @__PURE__ */ jsx("div", { className: "flex items-center gap-[var(--deframe-widget-size-gap-md)]", children: timerElement })
6095
6162
  ] }) });
@@ -6797,7 +6864,7 @@ function ChevronDown() {
6797
6864
  );
6798
6865
  }
6799
6866
  function ChipPill({ label, active, onClick }) {
6800
- const baseClasses = twMerge(
6867
+ const baseClasses2 = twMerge(
6801
6868
  "inline-flex items-center justify-center",
6802
6869
  "py-[3px] px-[10px]",
6803
6870
  "rounded-[var(--deframe-widget-size-radius-full)]",
@@ -6809,7 +6876,7 @@ function ChipPill({ label, active, onClick }) {
6809
6876
  "whitespace-nowrap",
6810
6877
  "border"
6811
6878
  );
6812
- const stateClasses = active ? twMerge(
6879
+ const stateClasses2 = active ? twMerge(
6813
6880
  "border-[color:color-mix(in_srgb,var(--deframe-widget-color-brand-primary)_32%,transparent)]",
6814
6881
  "bg-[color:color-mix(in_srgb,var(--deframe-widget-color-brand-primary)_12%,transparent)]",
6815
6882
  "text-[color:var(--deframe-widget-color-brand-primary)]",
@@ -6830,7 +6897,7 @@ function ChipPill({ label, active, onClick }) {
6830
6897
  type: "button",
6831
6898
  onClick,
6832
6899
  "aria-label": label,
6833
- className: twMerge(baseClasses, stateClasses),
6900
+ className: twMerge(baseClasses2, stateClasses2),
6834
6901
  children: /* @__PURE__ */ jsx("span", { "data-test-id": "swap-from-card-simple-chip-label", children: label })
6835
6902
  }
6836
6903
  );
@@ -7265,9 +7332,13 @@ var SwapFormViewSimple = ({
7265
7332
  if (!advancedSettings.isOpen) setShowPanel(false);
7266
7333
  }, [advancedSettings.isOpen]);
7267
7334
  const updatePanelPos = useCallback(() => {
7268
- if (containerRef.current && showPanel) {
7269
- const rect = containerRef.current.getBoundingClientRect();
7270
- setPanelPos({ top: rect.top, left: rect.right + 16 });
7335
+ if (!containerRef.current || !showPanel) return;
7336
+ const rect = containerRef.current.getBoundingClientRect();
7337
+ const GAP = 16;
7338
+ if (window.innerWidth < 640) {
7339
+ setPanelPos({ top: rect.bottom + GAP, left: rect.left, width: rect.width });
7340
+ } else {
7341
+ setPanelPos({ top: rect.top, left: rect.right + GAP });
7271
7342
  }
7272
7343
  }, [showPanel]);
7273
7344
  useEffect(() => {
@@ -7381,15 +7452,21 @@ var SwapFormViewSimple = ({
7381
7452
  {
7382
7453
  "data-test-id": "swap-form-simple-advanced-panel",
7383
7454
  className: twMerge(
7384
- "fixed",
7385
- "w-[320px] z-[9999]",
7455
+ "fixed z-[9999]",
7456
+ !panelPos.width && "w-[320px]",
7386
7457
  "bg-[var(--deframe-widget-color-bg-secondary)]",
7387
7458
  "rounded-[var(--deframe-widget-size-radius-md)]",
7388
7459
  "border border-[color:var(--deframe-widget-color-border-secondary)]",
7389
7460
  "shadow-[0px_4px_24px_0px_#0000003D]",
7390
- "font-[var(--deframe-widget-font-family)]"
7461
+ "font-[var(--deframe-widget-font-family)]",
7462
+ "overflow-y-auto"
7391
7463
  ),
7392
- style: { top: panelPos.top, left: panelPos.left },
7464
+ style: __spreadProps(__spreadValues({
7465
+ top: panelPos.top,
7466
+ left: panelPos.left
7467
+ }, panelPos.width && { width: panelPos.width }), {
7468
+ maxHeight: `calc(100vh - ${panelPos.top}px - 16px)`
7469
+ }),
7393
7470
  children: /* @__PURE__ */ jsx(
7394
7471
  AdvancedPanelContent,
7395
7472
  {
@@ -7548,6 +7625,7 @@ function AdvancedPill({ label, isOpen, onClick }) {
7548
7625
  );
7549
7626
  }
7550
7627
  function AdvancedPanelContent({ advancedSettings, transactionDetails }) {
7628
+ const handleSlippageSelect = advancedSettings.onSlippageSelect;
7551
7629
  return /* @__PURE__ */ jsxs(
7552
7630
  "div",
7553
7631
  {
@@ -7621,9 +7699,18 @@ function AdvancedPanelContent({ advancedSettings, transactionDetails }) {
7621
7699
  /* @__PURE__ */ jsx(DetailRow, { label: transactionDetails.labels.blockchainCostsLabel, value: transactionDetails.totalCostFormatted }),
7622
7700
  /* @__PURE__ */ jsx(DetailRow, { label: transactionDetails.labels.networkGasLabel, value: transactionDetails.gasCostFormatted }),
7623
7701
  /* @__PURE__ */ jsx(DetailRow, { label: transactionDetails.labels.protocolFeeLabel, value: transactionDetails.protocolFee }),
7624
- /* @__PURE__ */ jsx(DetailRow, { label: transactionDetails.labels.slippageLabel, value: transactionDetails.slippageFormatted }),
7702
+ /* @__PURE__ */ jsx(
7703
+ SlippageDetailRow,
7704
+ {
7705
+ label: transactionDetails.labels.slippageLabel,
7706
+ options: advancedSettings.slippageOptions,
7707
+ selected: advancedSettings.slippageBps,
7708
+ onSelect: handleSlippageSelect,
7709
+ formatLabel: advancedSettings.formatPercentage
7710
+ }
7711
+ ),
7625
7712
  /* @__PURE__ */ jsx(DetailRow, { label: transactionDetails.labels.etaLabel, value: transactionDetails.etaFormatted }),
7626
- transactionDetails.quoteId && /* @__PURE__ */ jsx(DetailRow, { label: transactionDetails.labels.quoteIdLabel, value: transactionDetails.quoteId })
7713
+ transactionDetails.quoteId && /* @__PURE__ */ jsx(QuoteIdRow, { label: transactionDetails.labels.quoteIdLabel, quoteId: transactionDetails.quoteId })
7627
7714
  ]
7628
7715
  }
7629
7716
  );
@@ -7656,6 +7743,61 @@ function DetailRow({ label, value }) {
7656
7743
  }
7657
7744
  );
7658
7745
  }
7746
+ function SlippageDetailRow({ label, options, selected, onSelect: handleSelect, formatLabel }) {
7747
+ return /* @__PURE__ */ jsxs(
7748
+ "div",
7749
+ {
7750
+ "data-test-id": "swap-form-simple-slippage-row",
7751
+ className: "flex justify-between items-center py-[10px] gap-[var(--deframe-widget-size-gap-sm)]",
7752
+ children: [
7753
+ /* @__PURE__ */ jsx(
7754
+ "span",
7755
+ {
7756
+ "data-test-id": "swap-form-simple-detail-row-label",
7757
+ className: "text-[11px] [font-weight:var(--deframe-widget-font-weight-medium)] uppercase tracking-[0.07em] text-[color:var(--deframe-widget-color-text-tertiary)] font-[var(--deframe-widget-font-family)] flex-shrink-0",
7758
+ children: label
7759
+ }
7760
+ ),
7761
+ /* @__PURE__ */ jsx(
7762
+ SlippageChip,
7763
+ {
7764
+ options,
7765
+ selected,
7766
+ onSelect: handleSelect,
7767
+ formatLabel,
7768
+ className: "gap-[4px] [&_button]:py-[2px] [&_button]:px-[7px] [&_button]:text-[11px]"
7769
+ }
7770
+ )
7771
+ ]
7772
+ }
7773
+ );
7774
+ }
7775
+ function QuoteIdRow({ label, quoteId }) {
7776
+ return /* @__PURE__ */ jsxs(
7777
+ "div",
7778
+ {
7779
+ "data-test-id": "swap-form-simple-quote-id-row",
7780
+ className: "flex justify-between items-center py-[10px] gap-[var(--deframe-widget-size-gap-sm)]",
7781
+ children: [
7782
+ /* @__PURE__ */ jsx(
7783
+ "span",
7784
+ {
7785
+ "data-test-id": "swap-form-simple-detail-row-label",
7786
+ className: "text-[11px] [font-weight:var(--deframe-widget-font-weight-medium)] uppercase tracking-[0.07em] text-[color:var(--deframe-widget-color-text-tertiary)] font-[var(--deframe-widget-font-family)] flex-shrink-0",
7787
+ children: label
7788
+ }
7789
+ ),
7790
+ /* @__PURE__ */ jsx(
7791
+ AddressDisplay,
7792
+ {
7793
+ address: quoteId,
7794
+ className: "py-[3px] px-[8px] max-w-[150px] min-w-0"
7795
+ }
7796
+ )
7797
+ ]
7798
+ }
7799
+ );
7800
+ }
7659
7801
  var ChooseANetworkView = ({
7660
7802
  labels,
7661
7803
  autoFocus = true,
@@ -7757,7 +7899,7 @@ function useIsMobile(breakpoint = 640) {
7757
7899
  return isMobile;
7758
7900
  }
7759
7901
  function CloseButtonInline({ onClick, ariaLabel }) {
7760
- const baseClasses = [
7902
+ const baseClasses2 = [
7761
7903
  "inline-flex items-center justify-center",
7762
7904
  "w-9 h-9",
7763
7905
  "rounded-[var(--deframe-widget-size-radius-sm)]",
@@ -7776,7 +7918,7 @@ function CloseButtonInline({ onClick, ariaLabel }) {
7776
7918
  "data-test-id": "close-button",
7777
7919
  onClick,
7778
7920
  "aria-label": ariaLabel,
7779
- className: baseClasses,
7921
+ className: baseClasses2,
7780
7922
  children: /* @__PURE__ */ jsx(
7781
7923
  "svg",
7782
7924
  {
@@ -7836,7 +7978,7 @@ function hasSignificantBalance(balanceUsd) {
7836
7978
  return !isNaN(num) && num >= 0.01;
7837
7979
  }
7838
7980
  function NetworkRow({ network, selected, onClick, onKeyDown, index }) {
7839
- const baseClasses = [
7981
+ const baseClasses2 = [
7840
7982
  "relative flex items-center gap-[10px]",
7841
7983
  "py-[9px] px-[var(--deframe-widget-size-padding-x-sm)] pl-[14px]",
7842
7984
  "rounded-[var(--deframe-widget-size-radius-sm)]",
@@ -7845,11 +7987,11 @@ function NetworkRow({ network, selected, onClick, onKeyDown, index }) {
7845
7987
  "mb-[var(--deframe-widget-size-gap-none)].5",
7846
7988
  "transition-[background] duration-150"
7847
7989
  ].join(" ");
7848
- const stateClasses = {
7990
+ const stateClasses2 = {
7849
7991
  selected: "bg-[color:color-mix(in_srgb,var(--deframe-widget-color-brand-primary)_12%,transparent)] hover:bg-[color:color-mix(in_srgb,var(--deframe-widget-color-brand-primary)_12%,transparent)]",
7850
7992
  default: "bg-transparent hover:bg-[color:color-mix(in_srgb,var(--deframe-widget-color-bg-secondary)_72%,transparent)]"
7851
7993
  };
7852
- const rowClasses = twMerge(baseClasses, stateClasses[selected ? "selected" : "default"]);
7994
+ const rowClasses = twMerge(baseClasses2, stateClasses2[selected ? "selected" : "default"]);
7853
7995
  const nameClasses = [
7854
7996
  "text-[14px] [font-weight:var(--deframe-widget-font-weight-medium)]",
7855
7997
  selected ? "text-[color:var(--deframe-widget-color-text-primary)]" : "text-[color:var(--deframe-widget-color-text-secondary)]"
@@ -7914,7 +8056,7 @@ function NetworkRow({ network, selected, onClick, onKeyDown, index }) {
7914
8056
  );
7915
8057
  }
7916
8058
  function NetworkChip({ network, selected, onClick }) {
7917
- const baseClasses = [
8059
+ const baseClasses2 = [
7918
8060
  "inline-flex items-center gap-[var(--deframe-widget-size-gap-sm)]",
7919
8061
  "py-[var(--deframe-widget-size-padding-y-sm)] pl-[var(--deframe-widget-size-padding-x-sm)] pr-[14px]",
7920
8062
  "rounded-[var(--deframe-widget-size-radius-full)]",
@@ -7925,11 +8067,11 @@ function NetworkChip({ network, selected, onClick }) {
7925
8067
  "outline-none",
7926
8068
  "border"
7927
8069
  ].join(" ");
7928
- const stateClasses = {
8070
+ const stateClasses2 = {
7929
8071
  selected: "border-[color:color-mix(in_srgb,var(--deframe-widget-color-brand-primary)_32%,transparent)] bg-[color:color-mix(in_srgb,var(--deframe-widget-color-brand-primary)_12%,transparent)]",
7930
8072
  default: "border-[color:var(--deframe-widget-color-border-secondary)] bg-[color:color-mix(in_srgb,var(--deframe-widget-color-bg-secondary)_72%,transparent)]"
7931
8073
  };
7932
- const buttonClasses = twMerge(baseClasses, stateClasses[selected ? "selected" : "default"]);
8074
+ const buttonClasses = twMerge(baseClasses2, stateClasses2[selected ? "selected" : "default"]);
7933
8075
  const nameLabelClasses = [
7934
8076
  "text-[13px] [font-weight:var(--deframe-widget-font-weight-medium)] leading-[1.2]",
7935
8077
  selected ? "text-[color:var(--deframe-widget-color-brand-primary)]" : "text-[color:var(--deframe-widget-color-text-secondary)]"
@@ -8063,7 +8205,7 @@ function AssetRowInline({
8063
8205
  const priceUSD = Number(balance == null ? void 0 : balance.priceUSD) || token.priceInUSD || 0;
8064
8206
  const formattedAmount = balance ? formatTokenAmount(balance.amountUI, priceUSD) : void 0;
8065
8207
  const formattedUsd = balance ? formatCurrencyValue(parseFloat(balance.amountInUSD)) : void 0;
8066
- const baseClasses = [
8208
+ const baseClasses2 = [
8067
8209
  "group",
8068
8210
  "relative flex items-center gap-[var(--deframe-widget-size-gap-sm)]",
8069
8211
  "py-[10px] px-[14px]",
@@ -8071,7 +8213,7 @@ function AssetRowInline({
8071
8213
  "cursor-pointer outline-none",
8072
8214
  "transition-[background] duration-150"
8073
8215
  ].join(" ");
8074
- const rowClasses = twMerge(baseClasses, "bg-transparent hover:bg-[color:color-mix(in_srgb,var(--deframe-widget-color-bg-secondary)_72%,transparent)]");
8216
+ const rowClasses = twMerge(baseClasses2, "bg-transparent hover:bg-[color:color-mix(in_srgb,var(--deframe-widget-color-bg-secondary)_72%,transparent)]");
8075
8217
  return /* @__PURE__ */ jsxs(
8076
8218
  "div",
8077
8219
  {
@@ -9579,13 +9721,13 @@ var StrategyGridCardSimple = ({
9579
9721
  );
9580
9722
  };
9581
9723
  var BackButton = ({ onClick, ariaLabel = "Back", className }) => {
9582
- const baseClasses = "w-12 h-12 rounded-[var(--deframe-widget-size-radius-full)] flex items-center justify-center text-[color:var(--deframe-widget-color-text-secondary)] hover:text-[color:var(--deframe-widget-color-brand-primary)] transition-colors cursor-pointer";
9724
+ const baseClasses2 = "w-12 h-12 rounded-[var(--deframe-widget-size-radius-full)] flex items-center justify-center text-[color:var(--deframe-widget-color-text-secondary)] hover:text-[color:var(--deframe-widget-color-brand-primary)] transition-colors cursor-pointer";
9583
9725
  return /* @__PURE__ */ jsx(
9584
9726
  "button",
9585
9727
  {
9586
9728
  "data-test-id": "back-button",
9587
9729
  onClick,
9588
- className: twMerge(baseClasses, className),
9730
+ className: twMerge(baseClasses2, className),
9589
9731
  "aria-label": ariaLabel,
9590
9732
  children: /* @__PURE__ */ jsx(HiArrowLeft, { className: "w-6 h-6" })
9591
9733
  }
@@ -11384,7 +11526,7 @@ var EarnTokenSelectorSimpleView = ({
11384
11526
  }) => {
11385
11527
  const hasToken = selectedToken != null;
11386
11528
  const isInteractive = !!onNetworkAndAssetClick;
11387
- const baseClasses = [
11529
+ const baseClasses2 = [
11388
11530
  "inline-flex items-center gap-[10px]",
11389
11531
  "h-[54px] px-[10px]",
11390
11532
  "rounded-[var(--deframe-widget-size-radius-sm)]",
@@ -11393,13 +11535,13 @@ var EarnTokenSelectorSimpleView = ({
11393
11535
  "transition-[background] duration-150",
11394
11536
  "flex-shrink-0"
11395
11537
  ].join(" ");
11396
- const stateClasses = {
11538
+ const stateClasses2 = {
11397
11539
  interactive: "cursor-pointer hover:bg-[color:color-mix(in_srgb,var(--deframe-widget-color-bg-tertiary)_92%,transparent)]",
11398
11540
  static: "cursor-default"
11399
11541
  };
11400
11542
  const selectorClasses = twMerge(
11401
- baseClasses,
11402
- stateClasses[isInteractive ? "interactive" : "static"],
11543
+ baseClasses2,
11544
+ stateClasses2[isInteractive ? "interactive" : "static"],
11403
11545
  className
11404
11546
  );
11405
11547
  return /* @__PURE__ */ jsx(
@@ -11730,14 +11872,14 @@ var EarnInlineNotificationSimpleView = ({
11730
11872
  variant,
11731
11873
  message
11732
11874
  }) => {
11733
- const baseClasses = [
11875
+ const baseClasses2 = [
11734
11876
  "relative flex items-center gap-[var(--deframe-widget-size-gap-sm)]",
11735
11877
  "py-[7px] pr-[10px] pl-[14px]",
11736
11878
  "rounded-[var(--deframe-widget-size-radius-sm)]",
11737
11879
  "border",
11738
11880
  "overflow-hidden"
11739
11881
  ].join(" ");
11740
- const wrapperClasses = twMerge(baseClasses, variantWrapperClasses[variant]);
11882
+ const wrapperClasses = twMerge(baseClasses2, variantWrapperClasses[variant]);
11741
11883
  return /* @__PURE__ */ jsxs(
11742
11884
  "div",
11743
11885
  {