myoperator-mcp 0.2.385 → 0.2.387

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +91 -54
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -3494,6 +3494,14 @@ const DEFAULT_MINUTE_STEP = 5;
3494
3494
  const DEFAULT_SECOND_STEP = 5;
3495
3495
  const TIME_COLUMN_MAX_HEIGHT = 168;
3496
3496
  const DEFAULT_PLACEHOLDER = "--/--/---- --:-- --";
3497
+ /**
3498
+ * Masks used when only one half of a date-time value is filled in. The trigger
3499
+ * keeps both segments in place so the field reads as "date selected, time still
3500
+ * missing" rather than silently collapsing to a single value.
3501
+ */
3502
+ const DATE_SEGMENT_MASK = "--/--/----";
3503
+ const TIME_SEGMENT_MASK = "--:-- --";
3504
+ const TIME_SEGMENT_MASK_WITH_SECONDS = "--:--:-- --";
3497
3505
  const POPOVER_WIDTH = 336;
3498
3506
  // The popover follows the trigger width but is clamped to a usable design range
3499
3507
  // so it neither stretches across a full-width desktop field nor overflows a
@@ -3541,7 +3549,7 @@ const dateTimePickerVariants = cva("relative inline-block w-full max-w-full", {
3541
3549
  });
3542
3550
 
3543
3551
  const dateTimePickerTriggerVariants = cva(
3544
- "flex w-full items-center justify-between border border-solid border-semantic-border-input bg-semantic-bg-primary text-left text-semantic-text-primary outline-none transition-colors hover:border-semantic-border-input-focus/50 disabled:cursor-not-allowed disabled:opacity-50",
3552
+ "flex w-full items-center justify-between border border-solid border-[var(--semantic-border-input,#E9EAEB)] bg-[var(--semantic-bg-primary,#FFFFFF)] text-left text-[var(--semantic-text-primary,#181D27)] outline-none transition-colors hover:border-semantic-border-input-focus/50 disabled:cursor-not-allowed disabled:opacity-50",
3545
3553
  {
3546
3554
  variants: {
3547
3555
  size: {
@@ -3551,8 +3559,7 @@ const dateTimePickerTriggerVariants = cva(
3551
3559
  },
3552
3560
  state: {
3553
3561
  default: "",
3554
- error:
3555
- "border-semantic-error-primary hover:border-semantic-error-primary",
3562
+ error: "border-[var(--semantic-error-primary,#F04438)] hover:border-[var(--semantic-error-primary,#F04438)]",
3556
3563
  },
3557
3564
  },
3558
3565
  defaultVariants: {
@@ -3903,7 +3910,8 @@ function formatValueForDisplay(
3903
3910
  value: DateTimePickerValue,
3904
3911
  variant: DateTimePickerVariant,
3905
3912
  showEndTime: boolean,
3906
- showSeconds: boolean
3913
+ showSeconds: boolean,
3914
+ maskMissingSegments = false
3907
3915
  ) {
3908
3916
  if (variant === "date-only") {
3909
3917
  return formatDateOnlyForDisplay(value.date);
@@ -3924,6 +3932,17 @@ function formatValueForDisplay(
3924
3932
 
3925
3933
  if (!datePart && !timePart) return "";
3926
3934
 
3935
+ // Both segments are visible in the \`date-time\` variant, so a half-filled value
3936
+ // renders the missing half as its own placeholder mask instead of collapsing \u2014
3937
+ // otherwise a date-only selection reads as a complete value.
3938
+ if (maskMissingSegments) {
3939
+ const timeMask = showSeconds
3940
+ ? TIME_SEGMENT_MASK_WITH_SECONDS
3941
+ : TIME_SEGMENT_MASK;
3942
+
3943
+ return [datePart || DATE_SEGMENT_MASK, timePart || timeMask].join(" ");
3944
+ }
3945
+
3927
3946
  return [datePart, timePart].filter(Boolean).join(" ");
3928
3947
  }
3929
3948
 
@@ -4595,7 +4614,7 @@ function CalendarDropdown({
4595
4614
  role="listbox"
4596
4615
  aria-label={\`\${label} options\`}
4597
4616
  data-dtp-dropdown=""
4598
- className="flex flex-col gap-0.5 overflow-y-auto rounded-md border border-solid border-semantic-border-layout bg-semantic-bg-primary p-1 shadow-lg [scrollbar-width:thin] [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-semantic-border-secondary [&::-webkit-scrollbar-track]:bg-transparent [&::-webkit-scrollbar]:w-1.5"
4617
+ className="flex flex-col gap-0.5 overflow-y-auto rounded-md border border-solid border-[var(--semantic-border-layout,#E9EAEB)] bg-[var(--semantic-bg-primary,#FFFFFF)] p-1 shadow-lg [scrollbar-width:thin] [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-semantic-border-secondary [&::-webkit-scrollbar-track]:bg-transparent [&::-webkit-scrollbar]:w-1.5"
4599
4618
  style={{
4600
4619
  ...floatingStyles,
4601
4620
  width: \`var(\${DROPDOWN_WIDTH_VAR}, auto)\`,
@@ -4615,8 +4634,8 @@ function CalendarDropdown({
4615
4634
  className={cn(
4616
4635
  "flex w-full shrink-0 items-center rounded-md border border-solid px-2 py-1.5 text-left text-sm transition-colors disabled:cursor-not-allowed disabled:opacity-40",
4617
4636
  option.value === value
4618
- ? "border-semantic-info-border bg-semantic-info-surface font-semibold text-semantic-text-primary"
4619
- : "border-transparent text-semantic-text-secondary hover:bg-semantic-bg-hover"
4637
+ ? "border-[var(--semantic-info-border,#A8C0EC)] bg-[var(--semantic-info-surface,#ECF1FB)] font-semibold text-[var(--semantic-text-primary,#181D27)]"
4638
+ : "border-transparent text-[var(--semantic-text-secondary,#343E55)] hover:bg-[var(--semantic-bg-hover,#D5D7DA)]"
4620
4639
  )}
4621
4640
  onClick={() => {
4622
4641
  if (option.disabled) return;
@@ -4665,8 +4684,8 @@ function TimeColumn({
4665
4684
  }, []);
4666
4685
 
4667
4686
  return (
4668
- <div className="flex min-w-0 flex-col border-r border-solid border-semantic-border-layout last:border-r-0">
4669
- <div className="border-b border-solid border-semantic-border-layout px-1 py-2 text-center text-[11px] font-semibold uppercase tracking-wide text-semantic-text-muted">
4687
+ <div className="flex min-w-0 flex-col border-r border-solid border-[var(--semantic-border-layout,#E9EAEB)] last:border-r-0">
4688
+ <div className="border-b border-solid border-[var(--semantic-border-layout,#E9EAEB)] px-1 py-2 text-center text-[11px] font-semibold uppercase tracking-wide text-[var(--semantic-text-muted,#717680)]">
4670
4689
  {header}
4671
4690
  </div>
4672
4691
  <div
@@ -4686,8 +4705,8 @@ function TimeColumn({
4686
4705
  className={cn(
4687
4706
  "flex shrink-0 items-center justify-center rounded-md border border-solid px-2 py-1.5 text-sm transition-colors",
4688
4707
  option.selected
4689
- ? "border-semantic-info-border bg-semantic-info-surface font-semibold text-semantic-text-primary"
4690
- : "border-transparent text-semantic-text-secondary hover:bg-semantic-bg-hover"
4708
+ ? "border-[var(--semantic-info-border,#A8C0EC)] bg-[var(--semantic-info-surface,#ECF1FB)] font-semibold text-[var(--semantic-text-primary,#181D27)]"
4709
+ : "border-transparent text-[var(--semantic-text-secondary,#343E55)] hover:bg-[var(--semantic-bg-hover,#D5D7DA)]"
4691
4710
  )}
4692
4711
  onClick={() => onSelect(option.key)}
4693
4712
  >
@@ -4770,7 +4789,7 @@ function TimeField({
4770
4789
  <div className="flex flex-col gap-1.5">
4771
4790
  <span
4772
4791
  id={\`\${id}-label\`}
4773
- className="block text-sm font-semibold text-semantic-text-secondary"
4792
+ className="block text-sm font-semibold text-[var(--semantic-text-secondary,#343E55)]"
4774
4793
  >
4775
4794
  {label}
4776
4795
  </span>
@@ -4782,14 +4801,14 @@ function TimeField({
4782
4801
  aria-haspopup="listbox"
4783
4802
  aria-expanded={open}
4784
4803
  className={cn(
4785
- "flex h-[42px] w-full items-center gap-2 rounded border border-solid border-semantic-border-input bg-semantic-bg-primary px-3 text-left text-base text-semantic-text-primary outline-none transition-colors hover:border-semantic-border-input-focus/50",
4804
+ "flex h-[42px] w-full items-center gap-2 rounded border border-solid border-[var(--semantic-border-input,#E9EAEB)] bg-[var(--semantic-bg-primary,#FFFFFF)] px-3 text-left text-base text-[var(--semantic-text-primary,#181D27)] outline-none transition-colors hover:border-semantic-border-input-focus/50",
4786
4805
  open &&
4787
4806
  "border-semantic-border-input-focus/50 shadow-[0_0_0_1px_rgba(43,188,202,0.15)]"
4788
4807
  )}
4789
4808
  onClick={() => onOpenChange(!open)}
4790
4809
  >
4791
4810
  <Clock2
4792
- className="size-4 shrink-0 text-semantic-text-muted"
4811
+ className="size-4 shrink-0 text-[var(--semantic-text-muted,#717680)]"
4793
4812
  aria-hidden="true"
4794
4813
  />
4795
4814
  <span className="m-0 min-w-0 flex-1 truncate">
@@ -4797,7 +4816,7 @@ function TimeField({
4797
4816
  </span>
4798
4817
  <ChevronDown
4799
4818
  className={cn(
4800
- "size-4 shrink-0 text-semantic-text-muted transition-transform",
4819
+ "size-4 shrink-0 text-[var(--semantic-text-muted,#717680)] transition-transform",
4801
4820
  open && "rotate-180"
4802
4821
  )}
4803
4822
  aria-hidden="true"
@@ -4812,7 +4831,7 @@ function TimeField({
4812
4831
  aria-label={\`\${label} options\`}
4813
4832
  data-dtp-dropdown=""
4814
4833
  className={cn(
4815
- "grid overflow-hidden rounded-lg border border-solid border-semantic-border-layout bg-semantic-bg-primary shadow-lg",
4834
+ "grid overflow-hidden rounded-lg border border-solid border-[var(--semantic-border-layout,#E9EAEB)] bg-[var(--semantic-bg-primary,#FFFFFF)] shadow-lg",
4816
4835
  showSeconds ? "grid-cols-4" : "grid-cols-3"
4817
4836
  )}
4818
4837
  style={{
@@ -4942,7 +4961,8 @@ const DateTimePicker = React.forwardRef<HTMLDivElement, DateTimePickerProps>(
4942
4961
  currentValue,
4943
4962
  pickerVariant,
4944
4963
  resolvedShowEndTime,
4945
- resolvedShowSeconds
4964
+ resolvedShowSeconds,
4965
+ true
4946
4966
  )
4947
4967
  );
4948
4968
  const [isDateInputFocused, setIsDateInputFocused] = React.useState(false);
@@ -5007,12 +5027,27 @@ const DateTimePicker = React.forwardRef<HTMLDivElement, DateTimePickerProps>(
5007
5027
  const errorId = \`\${triggerId}-error\`;
5008
5028
  const helperId = \`\${triggerId}-helper\`;
5009
5029
  const describedBy = error ? errorId : helperText ? helperId : undefined;
5030
+ // Unmasked \u2014 this is what the typing path reads and writes. The masked variant
5031
+ // below is render-only; letting a mask reach \`dateInputValue\` would feed
5032
+ // "--/--/----" straight into the typed-input sanitizers.
5010
5033
  const displayValue = formatValueForDisplay(
5011
5034
  currentValue,
5012
5035
  pickerVariant,
5013
5036
  resolvedShowEndTime,
5014
5037
  resolvedShowSeconds
5015
5038
  );
5039
+ const maskedDisplayValue = formatValueForDisplay(
5040
+ currentValue,
5041
+ pickerVariant,
5042
+ resolvedShowEndTime,
5043
+ resolvedShowSeconds,
5044
+ true
5045
+ );
5046
+ const hasValue = Boolean(
5047
+ currentValue.date ||
5048
+ currentValue.startTime ||
5049
+ (resolvedShowEndTime && currentValue.endTime)
5050
+ );
5016
5051
  const effectiveMinDate = React.useMemo(() => {
5017
5052
  if (!disablePastDates) return minDate;
5018
5053
 
@@ -5068,9 +5103,9 @@ const DateTimePicker = React.forwardRef<HTMLDivElement, DateTimePickerProps>(
5068
5103
 
5069
5104
  React.useEffect(() => {
5070
5105
  if (!isDateInputFocused) {
5071
- setDateInputValue(displayValue);
5106
+ setDateInputValue(maskedDisplayValue);
5072
5107
  }
5073
- }, [displayValue, isDateInputFocused]);
5108
+ }, [maskedDisplayValue, isDateInputFocused]);
5074
5109
 
5075
5110
  React.useEffect(() => {
5076
5111
  if (!open) return;
@@ -5353,7 +5388,8 @@ const DateTimePicker = React.forwardRef<HTMLDivElement, DateTimePickerProps>(
5353
5388
  currentValue,
5354
5389
  pickerVariant,
5355
5390
  resolvedShowEndTime,
5356
- resolvedShowSeconds
5391
+ resolvedShowSeconds,
5392
+ true
5357
5393
  )
5358
5394
  );
5359
5395
  };
@@ -5373,7 +5409,7 @@ const DateTimePicker = React.forwardRef<HTMLDivElement, DateTimePickerProps>(
5373
5409
  }
5374
5410
  aria-label={showCalendar ? undefined : "Time picker"}
5375
5411
  className={cn(
5376
- "rounded-lg border border-solid border-semantic-border-layout bg-semantic-bg-primary shadow-lg flex flex-col min-h-0 overflow-y-auto overflow-x-hidden overscroll-contain pointer-events-auto",
5412
+ "rounded-lg border border-solid border-[var(--semantic-border-layout,#E9EAEB)] bg-[var(--semantic-bg-primary,#FFFFFF)] shadow-lg flex flex-col min-h-0 overflow-y-auto overflow-x-hidden overscroll-contain pointer-events-auto",
5377
5413
  "[scrollbar-gutter:stable] [scrollbar-width:thin] [scrollbar-color:var(--semantic-border-secondary)_transparent]",
5378
5414
  "[&::-webkit-scrollbar]:w-2 [&::-webkit-scrollbar-track]:bg-transparent [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-semantic-border-secondary"
5379
5415
  )}
@@ -5399,7 +5435,7 @@ const DateTimePicker = React.forwardRef<HTMLDivElement, DateTimePickerProps>(
5399
5435
  <button
5400
5436
  type="button"
5401
5437
  aria-label="Previous month"
5402
- className="p-1 rounded hover:bg-semantic-bg-hover text-semantic-text-secondary transition-colors"
5438
+ className="p-1 rounded hover:bg-[var(--semantic-bg-hover,#D5D7DA)] text-[var(--semantic-text-secondary,#343E55)] transition-colors"
5403
5439
  onClick={() =>
5404
5440
  syncCalendarMonthAndValue(addMonths(visibleMonth, -1))
5405
5441
  }
@@ -5471,7 +5507,7 @@ const DateTimePicker = React.forwardRef<HTMLDivElement, DateTimePickerProps>(
5471
5507
  <button
5472
5508
  type="button"
5473
5509
  aria-label="Next month"
5474
- className="p-1 rounded hover:bg-semantic-bg-hover text-semantic-text-secondary transition-colors"
5510
+ className="p-1 rounded hover:bg-[var(--semantic-bg-hover,#D5D7DA)] text-[var(--semantic-text-secondary,#343E55)] transition-colors"
5475
5511
  onClick={() =>
5476
5512
  syncCalendarMonthAndValue(addMonths(visibleMonth, 1))
5477
5513
  }
@@ -5484,7 +5520,7 @@ const DateTimePicker = React.forwardRef<HTMLDivElement, DateTimePickerProps>(
5484
5520
  {weekDays.map((day) => (
5485
5521
  <div
5486
5522
  key={day}
5487
- className="mx-auto flex size-8 items-center justify-center text-xs font-semibold text-semantic-text-muted"
5523
+ className="mx-auto flex size-8 items-center justify-center text-xs font-semibold text-[var(--semantic-text-muted,#717680)]"
5488
5524
  >
5489
5525
  {day}
5490
5526
  </div>
@@ -5514,13 +5550,13 @@ const DateTimePicker = React.forwardRef<HTMLDivElement, DateTimePickerProps>(
5514
5550
  className={cn(
5515
5551
  "relative flex items-center justify-center size-8 mx-auto rounded-full text-xs transition-colors",
5516
5552
  isSelected
5517
- ? "bg-semantic-primary text-semantic-text-inverted font-semibold"
5553
+ ? "bg-[var(--semantic-primary,#343E55)] text-[var(--semantic-text-inverted,#FFFFFF)] font-semibold"
5518
5554
  : isCurrentMonth
5519
- ? "text-semantic-text-primary hover:bg-semantic-bg-hover"
5520
- : "text-semantic-text-muted hover:bg-semantic-bg-hover",
5555
+ ? "text-[var(--semantic-text-primary,#181D27)] hover:bg-[var(--semantic-bg-hover,#D5D7DA)]"
5556
+ : "text-[var(--semantic-text-muted,#717680)] hover:bg-[var(--semantic-bg-hover,#D5D7DA)]",
5521
5557
  isToday &&
5522
5558
  !isSelected &&
5523
- "ring-1 ring-inset ring-semantic-border-secondary",
5559
+ "ring-1 ring-inset ring-[var(--semantic-border-secondary,#777E8D)]",
5524
5560
  isDisabled &&
5525
5561
  "opacity-40 cursor-not-allowed pointer-events-none"
5526
5562
  )}
@@ -5544,9 +5580,9 @@ const DateTimePicker = React.forwardRef<HTMLDivElement, DateTimePickerProps>(
5544
5580
  {showTimeFields && (
5545
5581
  <div
5546
5582
  className={cn(
5547
- "space-y-3 bg-semantic-bg-primary p-3",
5583
+ "space-y-3 bg-[var(--semantic-bg-primary,#FFFFFF)] p-3",
5548
5584
  showCalendar &&
5549
- "border-t border-solid border-semantic-border-layout"
5585
+ "border-t border-solid border-[var(--semantic-border-layout,#E9EAEB)]"
5550
5586
  )}
5551
5587
  >
5552
5588
  <TimeField
@@ -5623,13 +5659,13 @@ const DateTimePicker = React.forwardRef<HTMLDivElement, DateTimePickerProps>(
5623
5659
  <label
5624
5660
  htmlFor={triggerId}
5625
5661
  className={cn(
5626
- "mb-1.5 block text-sm font-semibold text-semantic-text-secondary",
5662
+ "mb-1.5 block text-sm font-semibold text-[var(--semantic-text-secondary,#343E55)]",
5627
5663
  labelClassName
5628
5664
  )}
5629
5665
  >
5630
5666
  {label}
5631
5667
  {required && (
5632
- <span className="text-semantic-error-primary ml-0.5">*</span>
5668
+ <span className="text-[var(--semantic-error-primary,#F04438)] ml-0.5">*</span>
5633
5669
  )}
5634
5670
  </label>
5635
5671
  )}
@@ -5640,9 +5676,9 @@ const DateTimePicker = React.forwardRef<HTMLDivElement, DateTimePickerProps>(
5640
5676
  open &&
5641
5677
  resolvedState !== "error" &&
5642
5678
  "border-semantic-border-input-focus/50 shadow-[0_0_0_1px_rgba(43,188,202,0.15)]",
5643
- !displayValue && "text-semantic-text-placeholder",
5679
+ !displayValue && "text-[var(--semantic-text-placeholder,#A2A6B1)]",
5644
5680
  disabled &&
5645
- "cursor-not-allowed bg-semantic-bg-ui text-semantic-text-muted hover:border-semantic-border-input"
5681
+ "cursor-not-allowed bg-[var(--semantic-bg-ui,#F5F5F5)] text-[var(--semantic-text-muted,#717680)] hover:border-[var(--semantic-border-input,#E9EAEB)]"
5646
5682
  )}
5647
5683
  >
5648
5684
  <input
@@ -5663,9 +5699,12 @@ const DateTimePicker = React.forwardRef<HTMLDivElement, DateTimePickerProps>(
5663
5699
  ? "Time"
5664
5700
  : "Date and time"
5665
5701
  }
5666
- className="min-w-0 flex-1 bg-transparent text-base text-semantic-text-primary outline-none placeholder:text-semantic-text-placeholder disabled:cursor-not-allowed read-only:cursor-not-allowed"
5702
+ className="min-w-0 flex-1 bg-transparent text-base text-[var(--semantic-text-primary,#181D27)] outline-none placeholder:text-[var(--semantic-text-placeholder,#A2A6B1)] disabled:cursor-not-allowed read-only:cursor-not-allowed"
5667
5703
  onFocus={() => {
5668
5704
  setIsDateInputFocused(true);
5705
+ // Drop the placeholder masks while editing so the sanitizers only
5706
+ // ever see real date/time characters.
5707
+ setDateInputValue(displayValue);
5669
5708
  setOpen(true);
5670
5709
  }}
5671
5710
  onClick={() => setOpen(true)}
@@ -5674,13 +5713,13 @@ const DateTimePicker = React.forwardRef<HTMLDivElement, DateTimePickerProps>(
5674
5713
  onBlur={handleTypedDateBlur}
5675
5714
  />
5676
5715
  {showClear &&
5677
- (displayValue || dateInputValue) &&
5716
+ (hasValue || dateInputValue) &&
5678
5717
  !disabled &&
5679
5718
  !readOnly && (
5680
5719
  <button
5681
5720
  type="button"
5682
5721
  aria-label="Clear date"
5683
- className="inline-flex size-5 items-center justify-center rounded text-semantic-text-muted hover:bg-semantic-bg-hover hover:text-semantic-text-primary"
5722
+ className="inline-flex size-5 items-center justify-center rounded text-[var(--semantic-text-muted,#717680)] hover:bg-[var(--semantic-bg-hover,#D5D7DA)] hover:text-[var(--semantic-text-primary,#181D27)]"
5684
5723
  onClick={clearValue}
5685
5724
  >
5686
5725
  <X className="size-4" aria-hidden="true" />
@@ -5690,7 +5729,7 @@ const DateTimePicker = React.forwardRef<HTMLDivElement, DateTimePickerProps>(
5690
5729
  type="button"
5691
5730
  disabled={disabled || readOnly}
5692
5731
  aria-label={showCalendar ? "Open calendar" : "Open time picker"}
5693
- className="inline-flex shrink-0 items-center justify-center rounded text-semantic-text-muted hover:bg-semantic-bg-hover hover:text-semantic-text-primary disabled:cursor-not-allowed"
5732
+ className="inline-flex shrink-0 items-center justify-center rounded text-[var(--semantic-text-muted,#717680)] hover:bg-[var(--semantic-bg-hover,#D5D7DA)] hover:text-[var(--semantic-text-primary,#181D27)] disabled:cursor-not-allowed"
5694
5733
  onClick={() => setOpen(!open)}
5695
5734
  >
5696
5735
  {showCalendar ? (
@@ -5711,14 +5750,14 @@ const DateTimePicker = React.forwardRef<HTMLDivElement, DateTimePickerProps>(
5711
5750
  <span
5712
5751
  id={errorId}
5713
5752
  role="alert"
5714
- className="text-sm text-semantic-error-primary"
5753
+ className="text-sm text-[var(--semantic-error-primary,#F04438)]"
5715
5754
  >
5716
5755
  {error}
5717
5756
  </span>
5718
5757
  ) : (
5719
5758
  <span
5720
5759
  id={helperId}
5721
- className="text-sm text-semantic-text-muted"
5760
+ className="text-sm text-[var(--semantic-text-muted,#717680)]"
5722
5761
  >
5723
5762
  {helperText}
5724
5763
  </span>
@@ -10737,14 +10776,12 @@ import { cn } from "@/lib/utils";
10737
10776
  * SelectTrigger variants matching TextField styling
10738
10777
  */
10739
10778
  const selectTriggerVariants = cva(
10740
- "flex h-[42px] w-full items-center justify-between gap-2 rounded bg-semantic-bg-primary px-4 py-2 text-left text-base text-semantic-text-primary outline-none transition-all disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-[var(--color-neutral-50)] [&>span]:min-w-0 [&>span]:flex-1 [&>span]:truncate",
10779
+ "flex h-[42px] w-full items-center justify-between gap-2 rounded bg-[var(--semantic-bg-primary,#FFFFFF)] px-4 py-2 text-left text-base text-[var(--semantic-text-primary,#181D27)] outline-none transition-all disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-[var(--color-neutral-50)] [&>span]:min-w-0 [&>span]:flex-1 [&>span]:truncate",
10741
10780
  {
10742
10781
  variants: {
10743
10782
  state: {
10744
- default:
10745
- "border border-solid border-semantic-border-input focus:outline-none focus:border-semantic-border-input-focus focus:shadow-[0_0_0_1px_rgba(43,188,202,0.15)]",
10746
- error:
10747
- "border border-solid border-semantic-error-primary focus:outline-none focus:border-semantic-error-primary focus:shadow-[0_0_0_1px_rgba(240,68,56,0.12)]",
10783
+ default: "border border-solid border-[var(--semantic-border-input,#E9EAEB)] focus:outline-none focus:border-[var(--semantic-border-input-focus,#2BBCCA)] focus:shadow-[0_0_0_1px_rgba(43,188,202,0.15)]",
10784
+ error: "border border-solid border-[var(--semantic-error-primary,#F04438)] focus:outline-none focus:border-[var(--semantic-error-primary,#F04438)] focus:shadow-[0_0_0_1px_rgba(240,68,56,0.12)]",
10748
10785
  },
10749
10786
  },
10750
10787
  defaultVariants: {
@@ -10788,7 +10825,7 @@ const SelectTrigger = React.forwardRef(({ className, state, children, ...props }
10788
10825
  >
10789
10826
  {children}
10790
10827
  <SelectPrimitive.Icon asChild>
10791
- <ChevronDown className="size-4 shrink-0 text-semantic-text-muted opacity-70" />
10828
+ <ChevronDown className="size-4 shrink-0 text-[var(--semantic-text-muted,#717680)] opacity-70" />
10792
10829
  </SelectPrimitive.Icon>
10793
10830
  </SelectPrimitive.Trigger>
10794
10831
  ));
@@ -10803,7 +10840,7 @@ const SelectScrollUpButton = React.forwardRef(({ className, ...props }: React.Co
10803
10840
  )}
10804
10841
  {...props}
10805
10842
  >
10806
- <ChevronUp className="size-4 text-semantic-text-muted" />
10843
+ <ChevronUp className="size-4 text-[var(--semantic-text-muted,#717680)]" />
10807
10844
  </SelectPrimitive.ScrollUpButton>
10808
10845
  ));
10809
10846
  SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
@@ -10817,7 +10854,7 @@ const SelectScrollDownButton = React.forwardRef(({ className, ...props }: React.
10817
10854
  )}
10818
10855
  {...props}
10819
10856
  >
10820
- <ChevronDown className="size-4 text-semantic-text-muted" />
10857
+ <ChevronDown className="size-4 text-[var(--semantic-text-muted,#717680)]" />
10821
10858
  </SelectPrimitive.ScrollDownButton>
10822
10859
  ));
10823
10860
  SelectScrollDownButton.displayName =
@@ -10969,7 +11006,7 @@ const SelectContent = React.forwardRef(
10969
11006
  <SelectPrimitive.Content
10970
11007
  ref={ref}
10971
11008
  className={cn(
10972
- "relative z-[9999] max-h-96 w-[var(--radix-select-trigger-width)] max-w-[var(--radix-select-trigger-width)] overflow-hidden rounded bg-semantic-bg-primary border border-solid border-semantic-border-layout shadow-md",
11009
+ "relative z-[9999] max-h-96 w-[var(--radix-select-trigger-width)] max-w-[var(--radix-select-trigger-width)] overflow-hidden rounded bg-[var(--semantic-bg-primary,#FFFFFF)] border border-solid border-[var(--semantic-border-layout,#E9EAEB)] shadow-md",
10973
11010
  "data-[state=open]:animate-in data-[state=closed]:animate-out",
10974
11011
  "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
10975
11012
  "data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
@@ -11008,7 +11045,7 @@ const SelectLabel = React.forwardRef(({ className, ...props }: React.ComponentPr
11008
11045
  <SelectPrimitive.Label
11009
11046
  ref={ref}
11010
11047
  className={cn(
11011
- "px-4 py-1.5 text-xs font-semibold text-semantic-text-muted",
11048
+ "px-4 py-1.5 text-xs font-semibold text-[var(--semantic-text-muted,#717680)]",
11012
11049
  className
11013
11050
  )}
11014
11051
  {...props}
@@ -11033,8 +11070,8 @@ const SelectItem = React.forwardRef(({ className, children, truncateOptionText,
11033
11070
  <SelectPrimitive.Item
11034
11071
  ref={ref}
11035
11072
  className={cn(
11036
- "relative flex w-full cursor-pointer select-none items-start rounded-sm py-2 pl-4 pr-8 text-base text-semantic-text-primary outline-none",
11037
- "hover:bg-semantic-bg-ui focus:bg-semantic-bg-ui",
11073
+ "relative flex w-full cursor-pointer select-none items-start rounded-sm py-2 pl-4 pr-8 text-base text-[var(--semantic-text-primary,#181D27)] outline-none",
11074
+ "hover:bg-[var(--semantic-bg-ui,#F5F5F5)] focus:bg-[var(--semantic-bg-ui,#F5F5F5)]",
11038
11075
  "data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
11039
11076
  className
11040
11077
  )}
@@ -11042,7 +11079,7 @@ const SelectItem = React.forwardRef(({ className, children, truncateOptionText,
11042
11079
  >
11043
11080
  <span className="absolute right-2 flex size-4 items-center justify-center">
11044
11081
  <SelectPrimitive.ItemIndicator>
11045
- <Check className="size-4 text-semantic-brand" />
11082
+ <Check className="size-4 text-[var(--semantic-brand,#2BBCCA)]" />
11046
11083
  </SelectPrimitive.ItemIndicator>
11047
11084
  </span>
11048
11085
  <span
@@ -11064,7 +11101,7 @@ SelectItem.displayName = SelectPrimitive.Item.displayName;
11064
11101
  const SelectSeparator = React.forwardRef(({ className, ...props }: React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>, ref: React.Ref<React.ElementRef<typeof SelectPrimitive.Separator>>) => (
11065
11102
  <SelectPrimitive.Separator
11066
11103
  ref={ref}
11067
- className={cn("-mx-1 my-1 h-px bg-semantic-border-layout", className)}
11104
+ className={cn("-mx-1 my-1 h-px bg-[var(--semantic-border-layout,#E9EAEB)]", className)}
11068
11105
  {...props}
11069
11106
  />
11070
11107
  ));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "myoperator-mcp",
3
- "version": "0.2.385",
3
+ "version": "0.2.387",
4
4
  "description": "MCP server for myOperator UI components - enables AI assistants to access component metadata, examples, and design tokens",
5
5
  "type": "module",
6
6
  "bin": "./dist/index.js",