@luxfi/ui 7.4.12 → 7.4.13

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.cjs CHANGED
@@ -1657,7 +1657,6 @@ var Avatar = React32__namespace.forwardRef(
1657
1657
  gui.Avatar,
1658
1658
  {
1659
1659
  ref,
1660
- unstyled: true,
1661
1660
  position: "relative",
1662
1661
  display: "inline-flex",
1663
1662
  flexShrink: 0,
@@ -3764,22 +3763,30 @@ var InputGroup = React32__namespace.forwardRef(
3764
3763
  const { className: startClassName, ...startRest } = startElementProps ?? {};
3765
3764
  const { className: endClassName, ...endRest } = endElementProps ?? {};
3766
3765
  return /* @__PURE__ */ jsxRuntime.jsxs(
3767
- "div",
3766
+ gui.XStack,
3768
3767
  {
3769
3768
  ref: combinedRef,
3770
- className: cn("relative flex w-full items-center", className),
3769
+ position: "relative",
3770
+ width: "100%",
3771
+ alignItems: "center",
3772
+ className,
3771
3773
  ...rest,
3772
3774
  children: [
3773
3775
  startElement && /* @__PURE__ */ jsxRuntime.jsx(
3774
- "div",
3776
+ gui.XStack,
3775
3777
  {
3776
3778
  ref: startElementRef,
3777
- className: cn(
3778
- "pointer-events-none absolute inset-y-0 left-0 z-[1] flex items-center text-[var(--chakra-colors-input-element)]",
3779
- startClassName
3780
- ),
3779
+ position: "absolute",
3780
+ top: 0,
3781
+ bottom: 0,
3782
+ left: 0,
3783
+ zIndex: 1,
3784
+ alignItems: "center",
3785
+ pointerEvents: "none",
3786
+ style: { color: "var(--color-icon-secondary)" },
3787
+ className: startClassName,
3781
3788
  ...startRest,
3782
- children: startElement
3789
+ children: ink(startElement)
3783
3790
  }
3784
3791
  ),
3785
3792
  React32__namespace.Children.map(children, (child) => {
@@ -3798,15 +3805,20 @@ var InputGroup = React32__namespace.forwardRef(
3798
3805
  });
3799
3806
  }),
3800
3807
  endElement && /* @__PURE__ */ jsxRuntime.jsx(
3801
- "div",
3808
+ gui.XStack,
3802
3809
  {
3803
3810
  ref: endElementRef,
3804
- className: cn(
3805
- "pointer-events-none absolute inset-y-0 right-0 z-[1] flex items-center text-[var(--chakra-colors-input-element)]",
3806
- endClassName
3807
- ),
3811
+ position: "absolute",
3812
+ top: 0,
3813
+ bottom: 0,
3814
+ right: 0,
3815
+ zIndex: 1,
3816
+ alignItems: "center",
3817
+ pointerEvents: "none",
3818
+ style: { color: "var(--color-icon-secondary)" },
3819
+ className: endClassName,
3808
3820
  ...endRest,
3809
- children: endElement
3821
+ children: ink(endElement)
3810
3822
  }
3811
3823
  )
3812
3824
  ]
@@ -3815,20 +3827,26 @@ var InputGroup = React32__namespace.forwardRef(
3815
3827
  }
3816
3828
  );
3817
3829
  InputGroup.displayName = "InputGroup";
3818
- var INPUT_BASE = [
3819
- "w-10 h-10",
3820
- "text-center text-sm font-medium",
3821
- "border-2 rounded-md",
3822
- "outline-none appearance-none",
3823
- "bg-[var(--color-input-bg)] text-[var(--color-input-fg)]",
3824
- "border-[var(--color-input-border)]",
3825
- "placeholder:text-[var(--color-input-placeholder)]",
3826
- "hover:border-[var(--color-input-border-hover)]",
3827
- "focus:border-[var(--color-input-border-focus)] focus:shadow-md",
3828
- "disabled:opacity-40"
3829
- ].join(" ");
3830
- var INPUT_FILLED = "border-[var(--color-input-border)]";
3831
- var INPUT_INVALID = "border-[var(--color-border-error)] hover:border-[var(--color-border-error)]";
3830
+ var BOX = {
3831
+ width: 40,
3832
+ height: 40,
3833
+ textAlign: "center",
3834
+ fontSize: 14,
3835
+ fontWeight: 500,
3836
+ borderRadius: 6,
3837
+ borderWidth: 2,
3838
+ borderStyle: "solid",
3839
+ outlineWidth: 0,
3840
+ backgroundColor: "var(--color-input-bg)",
3841
+ color: "var(--color-input-fg)",
3842
+ borderColor: "var(--color-input-border)",
3843
+ hoverStyle: { borderColor: "var(--color-input-border-hover)" },
3844
+ focusStyle: {
3845
+ borderColor: "var(--color-input-border-focus)",
3846
+ boxShadow: "0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)"
3847
+ },
3848
+ disabledStyle: { opacity: 0.4 }
3849
+ };
3832
3850
  var PinInput = React32__namespace.forwardRef(
3833
3851
  function PinInput2(props, ref) {
3834
3852
  const {
@@ -3920,8 +3938,8 @@ var PinInput = React32__namespace.forwardRef(
3920
3938
  const onKeyDownAtIndex = React32__namespace.useCallback((index) => (e) => {
3921
3939
  handleKeyDown(index, e);
3922
3940
  }, [handleKeyDown]);
3923
- const bgStyle = bgColor ? { backgroundColor: `var(--color-${bgColor.replace(/\./g, "-")})` } : void 0;
3924
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref: rootRef, className: cn("inline-flex items-center", attached ? "gap-0" : "gap-2", className), children: [
3941
+ const boxBackground = bgColor ? `var(--color-${bgColor.replace(/\./g, "-")})` : BOX.backgroundColor;
3942
+ return /* @__PURE__ */ jsxRuntime.jsxs(gui.XStack, { ref: rootRef, alignItems: "center", gap: attached ? 0 : 8, className, children: [
3925
3943
  /* @__PURE__ */ jsxRuntime.jsx(
3926
3944
  "input",
3927
3945
  {
@@ -3933,9 +3951,10 @@ var PinInput = React32__namespace.forwardRef(
3933
3951
  }
3934
3952
  ),
3935
3953
  Array.from({ length: count }).map((_, index) => /* @__PURE__ */ jsxRuntime.jsx(
3936
- "input",
3954
+ gui.Input,
3937
3955
  {
3938
3956
  ref: setInputRef(index),
3957
+ unstyled: true,
3939
3958
  type: "text",
3940
3959
  inputMode: "numeric",
3941
3960
  autoComplete: otp ? "one-time-code" : "off",
@@ -3944,14 +3963,12 @@ var PinInput = React32__namespace.forwardRef(
3944
3963
  placeholder,
3945
3964
  disabled,
3946
3965
  "aria-invalid": invalid || void 0,
3966
+ "data-invalid": invalid || void 0,
3947
3967
  value: values[index] || "",
3948
- className: cn(
3949
- INPUT_BASE,
3950
- values[index] && INPUT_FILLED,
3951
- invalid && INPUT_INVALID,
3952
- attached && index > 0 && "-ml-0.5"
3953
- ),
3954
- style: bgStyle,
3968
+ className: "lux-control",
3969
+ ...BOX,
3970
+ backgroundColor: boxBackground,
3971
+ marginLeft: attached && index > 0 ? -2 : void 0,
3955
3972
  onInput: onInputAtIndex(index),
3956
3973
  onKeyDown: onKeyDownAtIndex(index),
3957
3974
  onPaste: handlePaste,
@@ -4279,11 +4296,11 @@ var Progress = React32__namespace.forwardRef(
4279
4296
  }
4280
4297
  );
4281
4298
  var SIZE_MAP = {
4282
- xs: { size: 24, thickness: 4, textClass: "text-[10px]" },
4283
- sm: { size: 32, thickness: 5, textClass: "text-[10px]" },
4284
- md: { size: 40, thickness: 6, textClass: "text-xs" },
4285
- lg: { size: 48, thickness: 7, textClass: "text-sm" },
4286
- xl: { size: 64, thickness: 8, textClass: "text-sm" }
4299
+ xs: { size: 24, thickness: 4, fontSize: 10 },
4300
+ sm: { size: 32, thickness: 5, fontSize: 10 },
4301
+ md: { size: 40, thickness: 6, fontSize: 12 },
4302
+ lg: { size: 48, thickness: 7, fontSize: 14 },
4303
+ xl: { size: 64, thickness: 8, fontSize: 14 }
4287
4304
  };
4288
4305
  var Ctx = React32__namespace.createContext({
4289
4306
  value: 0,
@@ -4304,16 +4321,18 @@ var ProgressCircleRoot = React32__namespace.forwardRef(function ProgressCircleRo
4304
4321
  [value, size, colorPalette]
4305
4322
  );
4306
4323
  return /* @__PURE__ */ jsxRuntime.jsx(Ctx.Provider, { value: ctx, children: /* @__PURE__ */ jsxRuntime.jsx(
4307
- "div",
4324
+ gui.View,
4308
4325
  {
4309
4326
  ref,
4310
4327
  role: "progressbar",
4311
4328
  "aria-valuenow": value ?? void 0,
4312
4329
  "aria-valuemin": 0,
4313
4330
  "aria-valuemax": 100,
4314
- className: cn("relative inline-flex text-sm", className),
4331
+ position: "relative",
4332
+ style: { display: "inline-flex", fontSize: 14 },
4333
+ className,
4315
4334
  ...rest,
4316
- children
4335
+ children: ink(children)
4317
4336
  }
4318
4337
  ) });
4319
4338
  });
@@ -4332,10 +4351,7 @@ var ProgressCircleRing = React32__namespace.forwardRef(function ProgressCircleRi
4332
4351
  width: size,
4333
4352
  height: size,
4334
4353
  viewBox: `0 0 ${size} ${size}`,
4335
- className: cn(
4336
- value === null && "animate-spin",
4337
- className
4338
- ),
4354
+ className: value === null ? cn("lux-spin", className) : className,
4339
4355
  ...rest,
4340
4356
  children: [
4341
4357
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -4347,7 +4363,7 @@ var ProgressCircleRing = React32__namespace.forwardRef(function ProgressCircleRi
4347
4363
  fill: "transparent",
4348
4364
  strokeWidth: thickness,
4349
4365
  stroke: trackColor ?? "currentColor",
4350
- className: !trackColor ? "opacity-20" : void 0
4366
+ opacity: !trackColor ? 0.2 : void 0
4351
4367
  }
4352
4368
  ),
4353
4369
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -4377,20 +4393,30 @@ var ProgressCircleRing = React32__namespace.forwardRef(function ProgressCircleRi
4377
4393
  var ProgressCircleValueText = React32__namespace.forwardRef(function ProgressCircleValueText2(props, ref) {
4378
4394
  const { className, children, ...rest } = props;
4379
4395
  const { value, size: sizeKey } = React32__namespace.useContext(Ctx);
4380
- const { textClass } = SIZE_MAP[sizeKey];
4396
+ const { fontSize } = SIZE_MAP[sizeKey];
4381
4397
  return /* @__PURE__ */ jsxRuntime.jsx(
4382
- "div",
4398
+ gui.View,
4383
4399
  {
4384
4400
  ref,
4385
4401
  "aria-live": "polite",
4386
- className: cn(
4387
- "absolute inset-0 flex items-center justify-center",
4388
- "font-medium tracking-tight tabular-nums leading-none",
4389
- textClass,
4390
- className
4391
- ),
4402
+ position: "absolute",
4403
+ top: 0,
4404
+ left: 0,
4405
+ right: 0,
4406
+ bottom: 0,
4407
+ display: "flex",
4408
+ alignItems: "center",
4409
+ justifyContent: "center",
4410
+ style: {
4411
+ fontWeight: 500,
4412
+ fontSize,
4413
+ lineHeight: `${fontSize}px`,
4414
+ letterSpacing: fontSize * -0.025,
4415
+ fontVariantNumeric: "tabular-nums"
4416
+ },
4417
+ className,
4392
4418
  ...rest,
4393
- children: children ?? `${Math.round(value ?? 0)}%`
4419
+ children: ink(children ?? `${Math.round(value ?? 0)}%`)
4394
4420
  }
4395
4421
  );
4396
4422
  });
@@ -4432,7 +4458,6 @@ var RadioGroupBase = React32__namespace.forwardRef(
4432
4458
  gui.RadioGroup,
4433
4459
  {
4434
4460
  ref,
4435
- unstyled: true,
4436
4461
  name,
4437
4462
  required,
4438
4463
  disabled: disabled || readOnly,
@@ -4510,8 +4535,8 @@ var RadioBase = React32__namespace.forwardRef(
4510
4535
  }
4511
4536
  );
4512
4537
  var Radio2 = RadioBase;
4513
- var StarFilledIcon = ({ className }) => /* @__PURE__ */ jsxRuntime.jsx("svg", { className, viewBox: "0 0 20 20", fill: "currentColor", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z" }) });
4514
- var StarOutlineIcon = ({ className }) => /* @__PURE__ */ jsxRuntime.jsx("svg", { className, viewBox: "0 0 20 20", fill: "none", stroke: "currentColor", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z", strokeWidth: "1.5" }) });
4538
+ var StarFilledIcon = () => /* @__PURE__ */ jsxRuntime.jsx("svg", { width: 20, height: 20, viewBox: "0 0 20 20", fill: "currentColor", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z" }) });
4539
+ var StarOutlineIcon = () => /* @__PURE__ */ jsxRuntime.jsx("svg", { width: 20, height: 20, viewBox: "0 0 20 20", fill: "none", stroke: "currentColor", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z", strokeWidth: "1.5" }) });
4515
4540
  var Rating = React32__namespace.forwardRef(
4516
4541
  function Rating2(props, ref) {
4517
4542
  const { count = 5, label: labelProp, defaultValue = 0, onValueChange, readOnly, className, ...rest } = props;
@@ -4531,28 +4556,30 @@ var Rating = React32__namespace.forwardRef(
4531
4556
  const handleMouseLeave = React32__namespace.useCallback(() => {
4532
4557
  setHoveredIndex(-1);
4533
4558
  }, []);
4534
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: cn("inline-flex items-center gap-1", className), ...rest, children: [
4535
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "inline-flex items-center", onMouseLeave: handleMouseLeave, children: Array.from({ length: count }).map((_, index) => {
4559
+ return /* @__PURE__ */ jsxRuntime.jsxs(gui.XStack, { ref, display: "inline-flex", alignItems: "center", gap: 4, className, ...rest, children: [
4560
+ /* @__PURE__ */ jsxRuntime.jsx(gui.XStack, { display: "inline-flex", alignItems: "center", onMouseLeave: handleMouseLeave, children: Array.from({ length: count }).map((_, index) => {
4536
4561
  const filled = index < highlightedIndex;
4537
4562
  const starIndex = index + 1;
4538
4563
  return /* @__PURE__ */ jsxRuntime.jsx(
4539
- "button",
4564
+ gui.View,
4540
4565
  {
4541
- type: "button",
4566
+ render: /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button" }),
4542
4567
  tabIndex: readOnly ? -1 : 0,
4543
4568
  "aria-label": `Rate ${starIndex} of ${count}`,
4544
- className: cn(
4545
- "inline-flex items-center justify-center w-5 h-5 text-current",
4546
- readOnly ? "cursor-default" : "cursor-pointer"
4547
- ),
4569
+ display: "inline-flex",
4570
+ alignItems: "center",
4571
+ justifyContent: "center",
4572
+ width: 20,
4573
+ height: 20,
4574
+ cursor: readOnly ? "default" : "pointer",
4548
4575
  onClick: handleClick(starIndex),
4549
4576
  onMouseEnter: handleMouseEnter(index),
4550
- children: filled ? /* @__PURE__ */ jsxRuntime.jsx(StarFilledIcon, { className: "w-5 h-5" }) : /* @__PURE__ */ jsxRuntime.jsx(StarOutlineIcon, { className: "w-5 h-5" })
4577
+ children: filled ? /* @__PURE__ */ jsxRuntime.jsx(StarFilledIcon, {}) : /* @__PURE__ */ jsxRuntime.jsx(StarOutlineIcon, {})
4551
4578
  },
4552
4579
  index
4553
4580
  );
4554
4581
  }) }),
4555
- label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm", children: label })
4582
+ label && /* @__PURE__ */ jsxRuntime.jsx(gui.Text, { fontSize: 14, children: label })
4556
4583
  ] });
4557
4584
  }
4558
4585
  );
@@ -5035,7 +5062,6 @@ var Slider = React32__namespace.forwardRef(
5035
5062
  gui.Slider,
5036
5063
  {
5037
5064
  ref,
5038
- unstyled: true,
5039
5065
  position: "relative",
5040
5066
  flexDirection: "row",
5041
5067
  width: "100%",
@@ -5785,21 +5811,24 @@ var Tag = React32__namespace.forwardRef(
5785
5811
  ":",
5786
5812
  nbsp
5787
5813
  ] }) : null;
5788
- const labelSpan = /* @__PURE__ */ jsxRuntime.jsxs(
5789
- gui.Text,
5790
- {
5791
- overflow: "hidden",
5792
- textOverflow: "ellipsis",
5793
- whiteSpace: "nowrap",
5794
- fontWeight: "500",
5795
- fontSize: TAG_SIZE_FONT[resolvedSize],
5796
- color,
5797
- hoverStyle: textHoverColor ? { color: textHoverColor } : void 0,
5798
- children: [
5799
- labelElement,
5800
- children
5801
- ]
5802
- }
5814
+ const labelSpan = (
5815
+ // `ellipsis` is Text's own built-in single-line-truncation variant —
5816
+ // the same rule Tailwind's `line-clamp-1`/`text-ellipsis` drew, through
5817
+ // the component's variants rather than three separate style props.
5818
+ /* @__PURE__ */ jsxRuntime.jsxs(
5819
+ gui.Text,
5820
+ {
5821
+ ellipsis: true,
5822
+ fontWeight: "500",
5823
+ fontSize: TAG_SIZE_FONT[resolvedSize],
5824
+ color,
5825
+ hoverStyle: textHoverColor ? { color: textHoverColor } : void 0,
5826
+ children: [
5827
+ labelElement,
5828
+ children
5829
+ ]
5830
+ }
5831
+ )
5803
5832
  );
5804
5833
  const contentElement = truncated ? /* @__PURE__ */ jsxRuntime.jsx(TruncatedTextTooltip2, { label: children, children: labelSpan }) : labelSpan;
5805
5834
  return /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { loading, asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
@@ -6385,84 +6414,145 @@ var STRATEGY_PRESETS = [
6385
6414
  ]
6386
6415
  }
6387
6416
  ];
6417
+ var MONO = "monospace";
6418
+ var CONTROL_BOX = {
6419
+ backgroundColor: "var(--color-input-bg)",
6420
+ borderWidth: 1,
6421
+ borderColor: "var(--color-input-border)",
6422
+ outlineWidth: 0,
6423
+ focusStyle: { borderColor: "var(--color-input-border-focus)" }
6424
+ };
6425
+ var CONTROL_INK = { color: "var(--color-input-fg)" };
6388
6426
  function LegRow({ leg, index, strikes, expirations, removable, onChange, onRemove }) {
6389
6427
  const update2 = (patch) => {
6390
6428
  onChange(index, { ...leg, ...patch });
6391
6429
  };
6392
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 rounded-md bg-zinc-800/50 px-2 py-1.5", children: [
6393
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] font-mono text-zinc-500 w-4 shrink-0", children: index + 1 }),
6394
- /* @__PURE__ */ jsxRuntime.jsx(
6395
- "button",
6396
- {
6397
- type: "button",
6398
- className: cn(
6399
- "px-2 py-0.5 rounded text-xs font-semibold transition-colors",
6400
- leg.action === "buy" ? "bg-emerald-900/60 text-emerald-400" : "bg-red-900/60 text-red-400"
6430
+ return /* @__PURE__ */ jsxRuntime.jsxs(
6431
+ gui.XStack,
6432
+ {
6433
+ alignItems: "center",
6434
+ gap: 8,
6435
+ borderRadius: 6,
6436
+ backgroundColor: "var(--color-tag-subtle-bg)",
6437
+ paddingHorizontal: 8,
6438
+ paddingVertical: 6,
6439
+ children: [
6440
+ /* @__PURE__ */ jsxRuntime.jsx(gui.Text, { fontSize: 10, style: { fontFamily: MONO }, flexShrink: 0, width: 16, color: "var(--color-text-secondary)", children: index + 1 }),
6441
+ /* @__PURE__ */ jsxRuntime.jsx(
6442
+ gui.XStack,
6443
+ {
6444
+ unstyled: true,
6445
+ render: /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button" }),
6446
+ onClick: () => update2({ action: leg.action === "buy" ? "sell" : "buy" }),
6447
+ paddingHorizontal: 8,
6448
+ paddingVertical: 2,
6449
+ borderRadius: 4,
6450
+ borderWidth: 0,
6451
+ cursor: "pointer",
6452
+ transition: "quick",
6453
+ backgroundColor: leg.action === "buy" ? "color-mix(in srgb, var(--color-status-good) 20%, transparent)" : "color-mix(in srgb, var(--color-status-bad) 20%, transparent)",
6454
+ children: /* @__PURE__ */ jsxRuntime.jsx(gui.Text, { fontSize: 12, fontWeight: "600", color: leg.action === "buy" ? "var(--color-status-good)" : "var(--color-status-bad)", children: leg.action === "buy" ? "BUY" : "SELL" })
6455
+ }
6401
6456
  ),
6402
- onClick: () => update2({ action: leg.action === "buy" ? "sell" : "buy" }),
6403
- children: leg.action === "buy" ? "BUY" : "SELL"
6404
- }
6405
- ),
6406
- /* @__PURE__ */ jsxRuntime.jsx(
6407
- "button",
6408
- {
6409
- type: "button",
6410
- className: cn(
6411
- "px-2 py-0.5 rounded text-xs font-medium transition-colors",
6412
- // Call vs put is a rank difference, not a hue difference.
6413
- leg.type === "call" ? "bg-[var(--secondary)] text-[var(--foreground)]" : "bg-[var(--muted)] text-[var(--muted-foreground)]"
6457
+ /* @__PURE__ */ jsxRuntime.jsx(
6458
+ gui.XStack,
6459
+ {
6460
+ unstyled: true,
6461
+ render: /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button" }),
6462
+ onClick: () => update2({ type: leg.type === "call" ? "put" : "call" }),
6463
+ paddingHorizontal: 8,
6464
+ paddingVertical: 2,
6465
+ borderRadius: 4,
6466
+ borderWidth: 0,
6467
+ cursor: "pointer",
6468
+ transition: "quick",
6469
+ backgroundColor: leg.type === "call" ? "var(--secondary)" : "var(--muted)",
6470
+ children: /* @__PURE__ */ jsxRuntime.jsx(gui.Text, { fontSize: 12, fontWeight: "500", color: leg.type === "call" ? "var(--foreground)" : "var(--muted-foreground)", children: leg.type === "call" ? "CALL" : "PUT" })
6471
+ }
6414
6472
  ),
6415
- onClick: () => update2({ type: leg.type === "call" ? "put" : "call" }),
6416
- children: leg.type === "call" ? "CALL" : "PUT"
6417
- }
6418
- ),
6419
- /* @__PURE__ */ jsxRuntime.jsx(
6420
- "select",
6421
- {
6422
- value: leg.strike,
6423
- onChange: (e) => update2({ strike: Number(e.target.value) }),
6424
- className: "bg-zinc-900 border border-zinc-700 rounded px-1.5 py-0.5 text-xs font-mono text-zinc-200 outline-none focus:border-zinc-500 min-w-[72px]",
6425
- children: strikes.map((s) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: s, children: s.toFixed(2) }, s))
6426
- }
6427
- ),
6428
- /* @__PURE__ */ jsxRuntime.jsx(
6429
- "select",
6430
- {
6431
- value: leg.expiration,
6432
- onChange: (e) => update2({ expiration: e.target.value }),
6433
- className: "bg-zinc-900 border border-zinc-700 rounded px-1.5 py-0.5 text-xs text-zinc-200 outline-none focus:border-zinc-500 min-w-[80px]",
6434
- children: expirations.map((exp) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: exp, children: exp }, exp))
6435
- }
6436
- ),
6437
- /* @__PURE__ */ jsxRuntime.jsx(
6438
- "input",
6439
- {
6440
- type: "number",
6441
- min: 1,
6442
- max: 999,
6443
- value: leg.quantity,
6444
- onChange: (e) => update2({ quantity: Math.max(1, parseInt(e.target.value, 10) || 1) }),
6445
- className: "bg-zinc-900 border border-zinc-700 rounded px-1.5 py-0.5 text-xs font-mono text-zinc-200 outline-none focus:border-zinc-500 w-[48px] text-center"
6446
- }
6447
- ),
6448
- leg.premium !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn(
6449
- "font-mono tabular-nums text-xs ml-auto",
6450
- leg.premium >= 0 ? "text-emerald-400" : "text-red-400"
6451
- ), children: [
6452
- leg.premium >= 0 ? "+" : "",
6453
- leg.premium.toFixed(2)
6454
- ] }),
6455
- removable && /* @__PURE__ */ jsxRuntime.jsx(
6456
- "button",
6457
- {
6458
- type: "button",
6459
- onClick: () => onRemove(index),
6460
- className: "ml-auto p-0.5 text-zinc-500 hover:text-red-400 transition-colors",
6461
- "aria-label": "Remove leg",
6462
- children: /* @__PURE__ */ jsxRuntime.jsx("svg", { className: "h-3.5 w-3.5", viewBox: "0 0 24 24", fill: "none", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M18 6L6 18M6 6l12 12", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }) })
6463
- }
6464
- )
6465
- ] });
6473
+ /* @__PURE__ */ jsxRuntime.jsx(
6474
+ gui.View,
6475
+ {
6476
+ unstyled: true,
6477
+ render: /* @__PURE__ */ jsxRuntime.jsx("select", { value: leg.strike, onChange: (e) => update2({ strike: Number(e.target.value) }) }),
6478
+ ...CONTROL_BOX,
6479
+ borderRadius: 4,
6480
+ paddingHorizontal: 6,
6481
+ paddingVertical: 2,
6482
+ minWidth: 72,
6483
+ style: { ...CONTROL_INK, fontFamily: MONO, fontSize: 12 },
6484
+ children: strikes.map((s) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: s, children: s.toFixed(2) }, s))
6485
+ }
6486
+ ),
6487
+ /* @__PURE__ */ jsxRuntime.jsx(
6488
+ gui.View,
6489
+ {
6490
+ unstyled: true,
6491
+ render: /* @__PURE__ */ jsxRuntime.jsx("select", { value: leg.expiration, onChange: (e) => update2({ expiration: e.target.value }) }),
6492
+ ...CONTROL_BOX,
6493
+ borderRadius: 4,
6494
+ paddingHorizontal: 6,
6495
+ paddingVertical: 2,
6496
+ minWidth: 80,
6497
+ style: { ...CONTROL_INK, fontSize: 12 },
6498
+ children: expirations.map((exp) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: exp, children: exp }, exp))
6499
+ }
6500
+ ),
6501
+ /* @__PURE__ */ jsxRuntime.jsx(
6502
+ gui.View,
6503
+ {
6504
+ unstyled: true,
6505
+ render: /* @__PURE__ */ jsxRuntime.jsx(
6506
+ "input",
6507
+ {
6508
+ type: "number",
6509
+ min: 1,
6510
+ max: 999,
6511
+ value: leg.quantity,
6512
+ onChange: (e) => update2({ quantity: Math.max(1, parseInt(e.target.value, 10) || 1) })
6513
+ }
6514
+ ),
6515
+ ...CONTROL_BOX,
6516
+ borderRadius: 4,
6517
+ paddingHorizontal: 6,
6518
+ paddingVertical: 2,
6519
+ width: 48,
6520
+ style: { ...CONTROL_INK, fontFamily: MONO, fontSize: 12, textAlign: "center" }
6521
+ }
6522
+ ),
6523
+ leg.premium !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs(
6524
+ gui.Text,
6525
+ {
6526
+ fontSize: 12,
6527
+ style: { fontFamily: MONO },
6528
+ fontVariant: ["tabular-nums"],
6529
+ marginLeft: "auto",
6530
+ color: leg.premium >= 0 ? "var(--color-status-good)" : "var(--color-status-bad)",
6531
+ children: [
6532
+ leg.premium >= 0 ? "+" : "",
6533
+ leg.premium.toFixed(2)
6534
+ ]
6535
+ }
6536
+ ),
6537
+ removable && /* @__PURE__ */ jsxRuntime.jsx(
6538
+ gui.XStack,
6539
+ {
6540
+ unstyled: true,
6541
+ render: /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", "aria-label": "Remove leg" }),
6542
+ onClick: () => onRemove(index),
6543
+ marginLeft: "auto",
6544
+ padding: 2,
6545
+ borderWidth: 0,
6546
+ cursor: "pointer",
6547
+ transition: "quick",
6548
+ style: { color: "var(--color-text-secondary)" },
6549
+ hoverStyle: { opacity: 0.7 },
6550
+ children: /* @__PURE__ */ jsxRuntime.jsx("svg", { width: 14, height: 14, viewBox: "0 0 24 24", fill: "none", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M18 6L6 18M6 6l12 12", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }) })
6551
+ }
6552
+ )
6553
+ ]
6554
+ }
6555
+ );
6466
6556
  }
6467
6557
  var StrategyBuilder = React32__namespace.forwardRef(
6468
6558
  function StrategyBuilder2(props, ref) {
@@ -6532,37 +6622,46 @@ var StrategyBuilder = React32__namespace.forwardRef(
6532
6622
  });
6533
6623
  }, [onSubmit, strategyType, legs, netPremium]);
6534
6624
  const currentPreset = STRATEGY_PRESETS.find((p) => p.value === strategyType);
6625
+ const netColor = netPremium > 0 ? "var(--color-status-good)" : netPremium < 0 ? "var(--color-status-bad)" : "var(--color-text-secondary)";
6535
6626
  return /* @__PURE__ */ jsxRuntime.jsxs(
6536
- "div",
6627
+ gui.YStack,
6537
6628
  {
6538
6629
  ref,
6539
- className: cn(
6540
- "flex flex-col gap-3 rounded-lg border border-zinc-800 bg-zinc-900/50 p-3",
6541
- className
6542
- ),
6630
+ gap: 12,
6631
+ borderRadius: 8,
6632
+ borderWidth: 1,
6633
+ borderColor: "var(--color-border-divider)",
6634
+ backgroundColor: "var(--card)",
6635
+ padding: 12,
6636
+ className,
6543
6637
  ...rest,
6544
6638
  children: [
6545
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-3", children: [
6546
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
6547
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-semibold uppercase tracking-wider text-zinc-500", children: "Strategy" }),
6548
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium text-zinc-200", children: underlying })
6639
+ /* @__PURE__ */ jsxRuntime.jsxs(gui.XStack, { alignItems: "center", justifyContent: "space-between", gap: 12, children: [
6640
+ /* @__PURE__ */ jsxRuntime.jsxs(gui.XStack, { alignItems: "center", gap: 8, children: [
6641
+ /* @__PURE__ */ jsxRuntime.jsx(gui.Text, { fontSize: 12, fontWeight: "600", textTransform: "uppercase", letterSpacing: 0.6, color: "var(--color-text-secondary)", children: "Strategy" }),
6642
+ /* @__PURE__ */ jsxRuntime.jsx(gui.Text, { fontSize: 14, fontWeight: "500", color: "var(--color-text-primary)", children: underlying })
6549
6643
  ] }),
6550
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[10px] text-zinc-500", children: [
6644
+ /* @__PURE__ */ jsxRuntime.jsxs(gui.Text, { fontSize: 10, color: "var(--color-text-secondary)", children: [
6551
6645
  "Spot: ",
6552
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono tabular-nums text-zinc-300", children: spotPrice.toFixed(2) })
6646
+ /* @__PURE__ */ jsxRuntime.jsx(gui.Text, { style: { fontFamily: MONO }, fontVariant: ["tabular-nums"], color: "var(--color-text-primary)", children: spotPrice.toFixed(2) })
6553
6647
  ] })
6554
6648
  ] }),
6555
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-2", children: /* @__PURE__ */ jsxRuntime.jsx(
6556
- "select",
6649
+ /* @__PURE__ */ jsxRuntime.jsx(gui.XStack, { alignItems: "center", gap: 8, children: /* @__PURE__ */ jsxRuntime.jsx(
6650
+ gui.View,
6557
6651
  {
6558
- value: strategyType,
6559
- onChange: handleStrategyChange,
6560
- className: "flex-1 bg-zinc-900 border border-zinc-700 rounded-md px-2.5 py-1.5 text-sm text-zinc-200 outline-none focus:border-zinc-500",
6652
+ unstyled: true,
6653
+ render: /* @__PURE__ */ jsxRuntime.jsx("select", { value: strategyType, onChange: handleStrategyChange }),
6654
+ flex: 1,
6655
+ ...CONTROL_BOX,
6656
+ borderRadius: 6,
6657
+ paddingHorizontal: 10,
6658
+ paddingVertical: 6,
6659
+ style: { ...CONTROL_INK, fontSize: 14 },
6561
6660
  children: STRATEGY_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: preset.value, children: preset.label }, preset.value))
6562
6661
  }
6563
6662
  ) }),
6564
- currentPreset && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[11px] text-zinc-500 -mt-1", children: currentPreset.description }),
6565
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col gap-1.5", children: legs.map((leg, i) => /* @__PURE__ */ jsxRuntime.jsx(
6663
+ currentPreset && /* @__PURE__ */ jsxRuntime.jsx(gui.Text, { fontSize: 11, marginTop: -4, color: "var(--color-text-secondary)", children: currentPreset.description }),
6664
+ /* @__PURE__ */ jsxRuntime.jsx(gui.YStack, { gap: 6, children: legs.map((leg, i) => /* @__PURE__ */ jsxRuntime.jsx(
6566
6665
  LegRow,
6567
6666
  {
6568
6667
  leg,
@@ -6576,40 +6675,53 @@ var StrategyBuilder = React32__namespace.forwardRef(
6576
6675
  i
6577
6676
  )) }),
6578
6677
  strategyType === "custom" && legs.length < 4 && /* @__PURE__ */ jsxRuntime.jsxs(
6579
- "button",
6678
+ gui.XStack,
6580
6679
  {
6581
- type: "button",
6680
+ unstyled: true,
6681
+ render: /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button" }),
6582
6682
  onClick: handleAddLeg,
6583
- className: "flex items-center justify-center gap-1 rounded-md border border-dashed border-zinc-700 py-1 text-xs text-zinc-500 hover:text-zinc-300 hover:border-zinc-500 transition-colors",
6683
+ alignItems: "center",
6684
+ justifyContent: "center",
6685
+ gap: 4,
6686
+ borderRadius: 6,
6687
+ borderWidth: 1,
6688
+ paddingVertical: 4,
6689
+ cursor: "pointer",
6690
+ transition: "quick",
6691
+ borderColor: "var(--color-border-divider)",
6692
+ hoverStyle: { borderColor: "var(--color-hover)" },
6693
+ style: { color: "var(--color-text-secondary)", borderStyle: "dashed" },
6584
6694
  children: [
6585
- /* @__PURE__ */ jsxRuntime.jsx("svg", { className: "h-3 w-3", viewBox: "0 0 24 24", fill: "none", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 5v14M5 12h14", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }) }),
6586
- "Add Leg"
6695
+ /* @__PURE__ */ jsxRuntime.jsx("svg", { width: 12, height: 12, viewBox: "0 0 24 24", fill: "none", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 5v14M5 12h14", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }) }),
6696
+ /* @__PURE__ */ jsxRuntime.jsx(gui.Text, { fontSize: 12, color: "var(--color-text-secondary)", children: "Add Leg" })
6587
6697
  ]
6588
6698
  }
6589
6699
  ),
6590
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between pt-1 border-t border-zinc-800", children: [
6591
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
6592
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-zinc-500", children: "Net:" }),
6593
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn(
6594
- "font-mono tabular-nums text-sm font-semibold",
6595
- netPremium > 0 ? "text-emerald-400" : netPremium < 0 ? "text-red-400" : "text-zinc-400"
6596
- ), children: [
6700
+ /* @__PURE__ */ jsxRuntime.jsxs(gui.XStack, { alignItems: "center", justifyContent: "space-between", paddingTop: 4, borderTopWidth: 1, borderColor: "var(--color-border-divider)", children: [
6701
+ /* @__PURE__ */ jsxRuntime.jsxs(gui.XStack, { alignItems: "center", gap: 8, children: [
6702
+ /* @__PURE__ */ jsxRuntime.jsx(gui.Text, { fontSize: 12, color: "var(--color-text-secondary)", children: "Net:" }),
6703
+ /* @__PURE__ */ jsxRuntime.jsxs(gui.Text, { fontSize: 14, fontWeight: "600", style: { fontFamily: MONO }, fontVariant: ["tabular-nums"], color: netColor, children: [
6597
6704
  netPremium > 0 ? "Credit " : netPremium < 0 ? "Debit " : "",
6598
6705
  netPremium !== 0 ? `$${Math.abs(netPremium).toFixed(2)}` : "-"
6599
6706
  ] })
6600
6707
  ] }),
6601
6708
  /* @__PURE__ */ jsxRuntime.jsx(
6602
- "button",
6709
+ gui.XStack,
6603
6710
  {
6604
- type: "button",
6711
+ unstyled: true,
6712
+ render: /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button" }),
6605
6713
  onClick: handleSubmit,
6606
6714
  disabled: legs.length === 0,
6607
- className: cn(
6608
- "px-4 py-1.5 rounded-md text-xs font-semibold transition-colors",
6609
- "bg-blue-600 text-white hover:bg-blue-500",
6610
- "disabled:opacity-40 disabled:cursor-not-allowed"
6611
- ),
6612
- children: "Review Order"
6715
+ paddingHorizontal: 16,
6716
+ paddingVertical: 6,
6717
+ borderRadius: 6,
6718
+ borderWidth: 0,
6719
+ cursor: "pointer",
6720
+ transition: "quick",
6721
+ backgroundColor: "var(--color-button-solid-bg)",
6722
+ hoverStyle: { backgroundColor: "var(--color-hover)" },
6723
+ disabledStyle: { opacity: 0.4, cursor: "not-allowed" },
6724
+ children: /* @__PURE__ */ jsxRuntime.jsx(gui.Text, { fontSize: 12, fontWeight: "600", color: "var(--color-button-solid-text)", children: "Review Order" })
6613
6725
  }
6614
6726
  )
6615
6727
  ] })
@@ -7048,7 +7160,7 @@ function formatDate(date) {
7048
7160
  const d = new Date(date);
7049
7161
  return d.toLocaleDateString("en-US", { month: "short", day: "numeric" });
7050
7162
  }
7051
- var MONO = { fontFamily: "monospace" };
7163
+ var MONO2 = { fontFamily: "monospace" };
7052
7164
  var OptionPositionCard = React32__namespace.forwardRef(
7053
7165
  function OptionPositionCard2(props, ref) {
7054
7166
  const {
@@ -7088,7 +7200,7 @@ var OptionPositionCard = React32__namespace.forwardRef(
7088
7200
  backgroundColor: isCall ? "var(--secondary)" : "var(--muted)",
7089
7201
  children: [
7090
7202
  /* @__PURE__ */ jsxRuntime.jsx(gui.Text, { fontSize: 12, fontWeight: "600", color: isCall ? "var(--foreground)" : "var(--muted-foreground)", children: position.underlying }),
7091
- /* @__PURE__ */ jsxRuntime.jsx(gui.Text, { fontSize: 12, fontWeight: "600", style: MONO, fontVariant: ["tabular-nums"], color: isCall ? "var(--foreground)" : "var(--muted-foreground)", children: position.strike }),
7203
+ /* @__PURE__ */ jsxRuntime.jsx(gui.Text, { fontSize: 12, fontWeight: "600", style: MONO2, fontVariant: ["tabular-nums"], color: isCall ? "var(--foreground)" : "var(--muted-foreground)", children: position.strike }),
7092
7204
  /* @__PURE__ */ jsxRuntime.jsx(gui.Text, { fontSize: 12, fontWeight: "600", textTransform: "uppercase", color: isCall ? "var(--foreground)" : "var(--muted-foreground)", children: position.type === "call" ? "C" : "P" }),
7093
7205
  /* @__PURE__ */ jsxRuntime.jsx(gui.Text, { fontSize: 12, fontWeight: "400", color: "var(--color-text-secondary)", children: formatDate(position.expiration) })
7094
7206
  ]
@@ -7099,7 +7211,7 @@ var OptionPositionCard = React32__namespace.forwardRef(
7099
7211
  {
7100
7212
  fontSize: 12,
7101
7213
  fontWeight: "600",
7102
- style: MONO,
7214
+ style: MONO2,
7103
7215
  fontVariant: ["tabular-nums"],
7104
7216
  color: isLong ? "var(--color-status-good)" : "var(--color-status-bad)",
7105
7217
  children: [
@@ -7112,14 +7224,14 @@ var OptionPositionCard = React32__namespace.forwardRef(
7112
7224
  /* @__PURE__ */ jsxRuntime.jsxs(gui.XStack, { gap: 12, children: [
7113
7225
  /* @__PURE__ */ jsxRuntime.jsxs(gui.YStack, { flex: 1, gap: 2, children: [
7114
7226
  /* @__PURE__ */ jsxRuntime.jsx(gui.Text, { fontSize: 10, textTransform: "uppercase", letterSpacing: 0.5, color: "var(--color-text-secondary)", children: "Avg Cost" }),
7115
- /* @__PURE__ */ jsxRuntime.jsxs(gui.Text, { fontSize: 12, style: MONO, fontVariant: ["tabular-nums"], color: "var(--color-text-primary)", children: [
7227
+ /* @__PURE__ */ jsxRuntime.jsxs(gui.Text, { fontSize: 12, style: MONO2, fontVariant: ["tabular-nums"], color: "var(--color-text-primary)", children: [
7116
7228
  "$",
7117
7229
  position.avgCost.toFixed(2)
7118
7230
  ] })
7119
7231
  ] }),
7120
7232
  /* @__PURE__ */ jsxRuntime.jsxs(gui.YStack, { flex: 1, gap: 2, children: [
7121
7233
  /* @__PURE__ */ jsxRuntime.jsx(gui.Text, { fontSize: 10, textTransform: "uppercase", letterSpacing: 0.5, color: "var(--color-text-secondary)", children: "Value" }),
7122
- /* @__PURE__ */ jsxRuntime.jsxs(gui.Text, { fontSize: 12, style: MONO, fontVariant: ["tabular-nums"], color: "var(--color-text-primary)", children: [
7234
+ /* @__PURE__ */ jsxRuntime.jsxs(gui.Text, { fontSize: 12, style: MONO2, fontVariant: ["tabular-nums"], color: "var(--color-text-primary)", children: [
7123
7235
  "$",
7124
7236
  position.currentValue.toFixed(2)
7125
7237
  ] })
@@ -7127,11 +7239,11 @@ var OptionPositionCard = React32__namespace.forwardRef(
7127
7239
  /* @__PURE__ */ jsxRuntime.jsxs(gui.YStack, { flex: 1, gap: 2, alignItems: "flex-end", children: [
7128
7240
  /* @__PURE__ */ jsxRuntime.jsx(gui.Text, { fontSize: 10, textTransform: "uppercase", letterSpacing: 0.5, color: "var(--color-text-secondary)", children: "P/L" }),
7129
7241
  /* @__PURE__ */ jsxRuntime.jsxs(gui.XStack, { alignItems: "center", gap: 4, children: [
7130
- /* @__PURE__ */ jsxRuntime.jsxs(gui.Text, { fontSize: 12, fontWeight: "600", style: MONO, fontVariant: ["tabular-nums"], color: pnlColor, children: [
7242
+ /* @__PURE__ */ jsxRuntime.jsxs(gui.Text, { fontSize: 12, fontWeight: "600", style: MONO2, fontVariant: ["tabular-nums"], color: pnlColor, children: [
7131
7243
  isProfitable ? "+" : "",
7132
7244
  position.pnl.toFixed(2)
7133
7245
  ] }),
7134
- /* @__PURE__ */ jsxRuntime.jsxs(gui.Text, { fontSize: 10, style: MONO, fontVariant: ["tabular-nums"], color: pnlColor, opacity: 0.7, children: [
7246
+ /* @__PURE__ */ jsxRuntime.jsxs(gui.Text, { fontSize: 10, style: MONO2, fontVariant: ["tabular-nums"], color: pnlColor, opacity: 0.7, children: [
7135
7247
  "(",
7136
7248
  isProfitable ? "+" : "",
7137
7249
  position.pnlPercent.toFixed(1),
@@ -7180,7 +7292,7 @@ function ActionButton({ onClick, children }) {
7180
7292
  function GreekPill({ label, value, color }) {
7181
7293
  return /* @__PURE__ */ jsxRuntime.jsxs(gui.XStack, { alignItems: "center", gap: 4, children: [
7182
7294
  /* @__PURE__ */ jsxRuntime.jsx(gui.Text, { fontSize: 10, fontWeight: "600", color, children: label }),
7183
- /* @__PURE__ */ jsxRuntime.jsx(gui.Text, { fontSize: 11, style: MONO, fontVariant: ["tabular-nums"], color: value < 0 ? "var(--color-status-bad)" : "var(--color-text-secondary)", children: value.toFixed(4) })
7295
+ /* @__PURE__ */ jsxRuntime.jsx(gui.Text, { fontSize: 11, style: MONO2, fontVariant: ["tabular-nums"], color: value < 0 ? "var(--color-status-bad)" : "var(--color-text-secondary)", children: value.toFixed(4) })
7184
7296
  ] });
7185
7297
  }
7186
7298
  function formatExpDate(date) {