@keboola/design 4.3.0 → 4.3.2

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.js CHANGED
@@ -1402,7 +1402,7 @@ var variants = cva(
1402
1402
  "tw-tracking-[1px]",
1403
1403
  "tw-uppercase",
1404
1404
  // border
1405
- "tw-rounded",
1405
+ "tw-rounded-[var(--radius-lg,0.25rem)]",
1406
1406
  "tw-border",
1407
1407
  "tw-border-transparent",
1408
1408
  // styling
@@ -1556,7 +1556,7 @@ var argoVariants = cva(
1556
1556
  // border
1557
1557
  "tw-border",
1558
1558
  "tw-border-transparent",
1559
- "tw-rounded-lg",
1559
+ "tw-rounded-[var(--radius-lg,0.25rem)]",
1560
1560
  // text
1561
1561
  "tw-font-medium",
1562
1562
  "tw-select-none",
@@ -1618,6 +1618,9 @@ var argoVariants = cva(
1618
1618
  outline: [
1619
1619
  "!tw-border-input",
1620
1620
  "tw-bg-background",
1621
+ // Semantic base text color so the label/icon flips in dark mode
1622
+ // (matches `invisible`); previously unset → inherited a fixed dark color.
1623
+ "tw-text-foreground",
1621
1624
  "hover:not-disabled:tw-bg-accent",
1622
1625
  "hover:not-disabled:tw-text-accent-foreground",
1623
1626
  "hover:active:tw-bg-background",
@@ -2276,7 +2279,10 @@ var DropdownMenuRadioItem = ({
2276
2279
  "data-[state=checked]:tw-cursor-default",
2277
2280
  {
2278
2281
  "data-[state=checked]:tw-bg-neutral-100": indicator === "none",
2279
- "group-data-[variant=argo]/dropdown-menu-content:data-[state=checked]:tw-bg-sky-100": indicator === "check"
2282
+ // Semantic brand tint (flips under `[data-theme='dark']`) instead of a
2283
+ // hardcoded `tw-bg-sky-100`, which stayed light in dark mode and left the
2284
+ // checked item's text near-invisible.
2285
+ "group-data-[variant=argo]/dropdown-menu-content:data-[state=checked]:tw-bg-primary/10": indicator === "check"
2280
2286
  },
2281
2287
  className
2282
2288
  ),
@@ -2866,10 +2872,10 @@ var AlertModalIcon = ({ variant, icon }) => {
2866
2872
  "div",
2867
2873
  {
2868
2874
  className: cn("tw-relative", "tw-rounded-full", "tw-size-12", {
2869
- "tw-bg-secondary-500": variant === "info",
2875
+ "tw-bg-blue-500": variant === "info",
2870
2876
  "tw-bg-warning-500": variant === "warning",
2871
2877
  "tw-bg-error-500": variant === "danger",
2872
- "tw-bg-primary-500": variant === "success"
2878
+ "tw-bg-green-500": variant === "success"
2873
2879
  }),
2874
2880
  children: /* @__PURE__ */ jsx(
2875
2881
  "span",
@@ -2909,10 +2915,10 @@ var AlertModalIcon = ({ variant, icon }) => {
2909
2915
  "tw-size-8",
2910
2916
  '[&_svg:not([class*="tw-size-"])]:tw-size-5',
2911
2917
  {
2912
- "tw-bg-secondary-100 tw-text-secondary-600": variant === "info",
2918
+ "tw-bg-blue-100 tw-text-blue-600": variant === "info",
2913
2919
  "tw-bg-warning-100 tw-text-warning-500": variant === "warning",
2914
2920
  "tw-bg-error-100 tw-text-error-500": variant === "danger",
2915
- "tw-bg-primary-100 tw-text-primary-900": variant === "success"
2921
+ "tw-bg-green-100 tw-text-green-900": variant === "success"
2916
2922
  }
2917
2923
  ),
2918
2924
  children: glyph
@@ -3407,8 +3413,8 @@ var ModalIcon = (props) => {
3407
3413
  {
3408
3414
  className: cn("tw-relative", "tw-rounded-full", "tw-size-12", {
3409
3415
  "tw-bg-warning-500": props.color === "orange",
3410
- "tw-bg-secondary-500": props.color === "blue",
3411
- "tw-bg-primary-500": props.color === "green",
3416
+ "tw-bg-blue-500": props.color === "blue",
3417
+ "tw-bg-green-500": props.color === "green",
3412
3418
  "tw-bg-error-500": props.color === "red",
3413
3419
  "tw-bg-neutral-150": props.color === "gray",
3414
3420
  "tw-bg-purple-100": props.color === "violet"
@@ -8695,7 +8701,7 @@ var inputGroupVariants = cva(
8695
8701
  "tw-flex",
8696
8702
  "tw-items-center",
8697
8703
  // base
8698
- "tw-rounded",
8704
+ "tw-rounded-[var(--radius-lg,0.25rem)]",
8699
8705
  "tw-border",
8700
8706
  "tw-border-solid",
8701
8707
  "tw-border-neutral-200",
@@ -8816,7 +8822,6 @@ var inputGroupVariants = cva(
8816
8822
  // muted filled input surface — gray, distinct from white containers; not the app-background token
8817
8823
  "tw-bg-muted",
8818
8824
  "tw-border-input",
8819
- "tw-rounded-lg",
8820
8825
  "tw-text-foreground",
8821
8826
  "has-[:is(input,textarea):disabled]:tw-opacity-50",
8822
8827
  // higher specificity than has-[:is(input,textarea):focus] — prevents focus border on readonly
@@ -9322,198 +9327,6 @@ var TextInput = ({
9322
9327
  }
9323
9328
  );
9324
9329
  };
9325
- var TimePickerButton = ({
9326
- ref,
9327
- className,
9328
- children,
9329
- ...rest
9330
- }) => /* @__PURE__ */ jsx(
9331
- "button",
9332
- {
9333
- ...rest,
9334
- ref,
9335
- type: "button",
9336
- className: cn(
9337
- "tailwindcss-preflight",
9338
- "tw-flex",
9339
- "tw-items-center",
9340
- "tw-justify-center",
9341
- "tw-size-10",
9342
- "tw-rounded",
9343
- "tw-transition-colors",
9344
- "tw-select-none",
9345
- "hover:tw-bg-accent",
9346
- "focus-visible:tw-outline",
9347
- "focus-visible:tw-outline-2",
9348
- "focus-visible:tw-outline-primary",
9349
- "aria-selected:tw-bg-primary",
9350
- "aria-selected:tw-text-primary-foreground",
9351
- className
9352
- ),
9353
- children
9354
- }
9355
- );
9356
-
9357
- // src/components/TimePicker/utils.ts
9358
- var pad = (n) => n.toString().padStart(2, "0");
9359
- var parseTime = (time) => {
9360
- if (!time) return { hour: null, minute: null };
9361
- const match2 = /^(\d{1,2}):(\d{1,2})$/.exec(time.trim());
9362
- if (!match2) return { hour: null, minute: null };
9363
- const hour = Number(match2[1]);
9364
- const minute = Number(match2[2]);
9365
- if (Number.isNaN(hour) || Number.isNaN(minute) || hour < 0 || hour > 23 || minute < 0 || minute > 59)
9366
- return { hour: null, minute: null };
9367
- return { hour, minute };
9368
- };
9369
- var scrollToSelected = (viewport) => {
9370
- if (!viewport) return;
9371
- requestAnimationFrame(() => {
9372
- const selected = viewport.querySelector('[aria-selected="true"]');
9373
- selected?.scrollIntoView({ block: "center" });
9374
- });
9375
- };
9376
- var HOURS = Array.from({ length: 24 }, (_, i) => i);
9377
- var MINUTES = Array.from({ length: 60 }, (_, i) => i);
9378
- var TimePicker = ({
9379
- align = "end",
9380
- alignOffset = -18,
9381
- children,
9382
- defaultOpen,
9383
- defaultSelected,
9384
- onOpenChange,
9385
- onSelect,
9386
- open,
9387
- selected,
9388
- sideOffset = 12
9389
- }) => {
9390
- const [internalSelected, setInternalSelected] = useState(defaultSelected ?? null);
9391
- const isControlled = selected !== void 0;
9392
- const currentValue = isControlled ? selected : internalSelected;
9393
- const parsed = parseTime(currentValue);
9394
- const hour = parsed.hour ?? null;
9395
- const minute = parsed.minute ?? null;
9396
- const handleSelect = (time) => {
9397
- if (!isControlled) {
9398
- setInternalSelected(time);
9399
- }
9400
- onSelect?.(time);
9401
- };
9402
- const handleHourSelect = (h) => {
9403
- const m = minute ?? 0;
9404
- handleSelect(`${pad(h)}:${pad(m)}`);
9405
- };
9406
- const handleMinuteSelect = (m) => {
9407
- const h = hour ?? 0;
9408
- handleSelect(`${pad(h)}:${pad(m)}`);
9409
- };
9410
- return /* @__PURE__ */ jsxs(Popover, { defaultOpen, onOpenChange, open, children: [
9411
- /* @__PURE__ */ jsx(Popover.Trigger, { asChild: true, children }),
9412
- /* @__PURE__ */ jsxs(
9413
- Popover.Content,
9414
- {
9415
- align,
9416
- alignOffset,
9417
- sideOffset,
9418
- className: "tw-flex tw-flex-row",
9419
- children: [
9420
- /* @__PURE__ */ jsx(ScrollArea, { type: "always", ref: scrollToSelected, viewPortClassName: "tw-h-60 tw-px-3", children: HOURS.map((value) => /* @__PURE__ */ jsx(
9421
- TimePickerButton,
9422
- {
9423
- onClick: () => handleHourSelect(value),
9424
- "aria-selected": value === hour,
9425
- children: pad(value)
9426
- },
9427
- value
9428
- )) }),
9429
- /* @__PURE__ */ jsx(ScrollArea, { type: "always", ref: scrollToSelected, viewPortClassName: "tw-h-60 tw-px-3", children: MINUTES.map((value) => /* @__PURE__ */ jsx(
9430
- TimePickerButton,
9431
- {
9432
- onClick: () => handleMinuteSelect(value),
9433
- "aria-selected": value === minute,
9434
- children: pad(value)
9435
- },
9436
- value
9437
- )) })
9438
- ]
9439
- }
9440
- )
9441
- ] });
9442
- };
9443
- var TimeInput = ({
9444
- ref,
9445
- defaultValue,
9446
- disabled,
9447
- onBlur,
9448
- onChange,
9449
- onValueBlur,
9450
- onValueChange,
9451
- placeholder = "Select time",
9452
- readOnly,
9453
- value,
9454
- variant,
9455
- className,
9456
- ...props
9457
- }) => {
9458
- const [isOpen, setIsOpen] = useState(false);
9459
- const [internalValue, setInternalValue] = useState(defaultValue ?? null);
9460
- const isControlled = value !== void 0;
9461
- const currentValue = isControlled ? value : internalValue;
9462
- const handleChange = (event) => {
9463
- const newValue = event.target.value || null;
9464
- onChange?.(event);
9465
- onValueChange?.(newValue);
9466
- if (!isControlled) {
9467
- setInternalValue(newValue);
9468
- }
9469
- };
9470
- const handleBlur = (event) => {
9471
- const newValue = event.target.value || null;
9472
- onBlur?.(event);
9473
- onValueBlur?.(newValue);
9474
- if (!isControlled) {
9475
- setInternalValue(newValue);
9476
- }
9477
- };
9478
- const handleTimePickerSelect = (time) => {
9479
- if (!isControlled) setInternalValue(time);
9480
- onValueChange?.(time);
9481
- };
9482
- const handleClear = () => {
9483
- if (!isControlled) setInternalValue(null);
9484
- onValueChange?.(null);
9485
- };
9486
- const handleOpenChange = (open) => {
9487
- setIsOpen(open);
9488
- };
9489
- return /* @__PURE__ */ jsx(
9490
- Input,
9491
- {
9492
- ...props,
9493
- ref,
9494
- type: "time",
9495
- disabled,
9496
- readOnly,
9497
- placeholder,
9498
- className: cn("[&_input::-webkit-calendar-picker-indicator]:tw-hidden", className),
9499
- value: currentValue,
9500
- variant,
9501
- onChange: handleChange,
9502
- onBlur: handleBlur,
9503
- onClear: currentValue ? handleClear : void 0,
9504
- rightSuffix: !disabled && !readOnly ? /* @__PURE__ */ jsx(
9505
- TimePicker,
9506
- {
9507
- open: isOpen,
9508
- onOpenChange: handleOpenChange,
9509
- onSelect: handleTimePickerSelect,
9510
- selected: currentValue,
9511
- children: /* @__PURE__ */ jsx(Button, { "aria-label": "Select Time", variant: "inline", size: "icon-3xs", children: /* @__PURE__ */ jsx(icons_exports.Clock, { className: "tw-size-4" }) })
9512
- }
9513
- ) : void 0
9514
- }
9515
- );
9516
- };
9517
9330
  var CommandInput = ({
9518
9331
  ref,
9519
9332
  className,
@@ -9772,6 +9585,97 @@ var DateRangePicker = ({
9772
9585
  ] }) })
9773
9586
  ] });
9774
9587
  DateRangePicker.displayName = "DateRangePicker";
9588
+
9589
+ // src/components/TimePicker/utils.ts
9590
+ var pad = (n) => n.toString().padStart(2, "0");
9591
+ var parseTime = (time) => {
9592
+ if (!time) return { hour: null, minute: null };
9593
+ const match2 = /^(\d{1,2}):(\d{1,2})$/.exec(time.trim());
9594
+ if (!match2) return { hour: null, minute: null };
9595
+ const hour = Number(match2[1]);
9596
+ const minute = Number(match2[2]);
9597
+ if (Number.isNaN(hour) || Number.isNaN(minute) || hour < 0 || hour > 23 || minute < 0 || minute > 59)
9598
+ return { hour: null, minute: null };
9599
+ return { hour, minute };
9600
+ };
9601
+ var scrollToSelected = (viewport) => {
9602
+ if (!viewport) return;
9603
+ requestAnimationFrame(() => {
9604
+ const selected = viewport.querySelector('[aria-pressed="true"]');
9605
+ selected?.scrollIntoView({ block: "center" });
9606
+ });
9607
+ };
9608
+ var HOURS = Array.from({ length: 24 }, (_, i) => i);
9609
+ var MINUTES = Array.from({ length: 60 }, (_, i) => i);
9610
+ var TimePicker = ({
9611
+ align = "end",
9612
+ alignOffset = -18,
9613
+ children,
9614
+ defaultOpen,
9615
+ defaultSelected,
9616
+ onOpenChange,
9617
+ onSelect,
9618
+ open,
9619
+ selected,
9620
+ sideOffset = 12
9621
+ }) => {
9622
+ const [internalSelected, setInternalSelected] = useState(defaultSelected ?? null);
9623
+ const isControlled = selected !== void 0;
9624
+ const currentValue = isControlled ? selected : internalSelected;
9625
+ const parsed = parseTime(currentValue);
9626
+ const hour = parsed.hour ?? null;
9627
+ const minute = parsed.minute ?? null;
9628
+ const handleSelect = (time) => {
9629
+ if (!isControlled) {
9630
+ setInternalSelected(time);
9631
+ }
9632
+ onSelect?.(time);
9633
+ };
9634
+ const handleHourSelect = (h) => {
9635
+ const m = minute ?? 0;
9636
+ handleSelect(`${pad(h)}:${pad(m)}`);
9637
+ };
9638
+ const handleMinuteSelect = (m) => {
9639
+ const h = hour ?? 0;
9640
+ handleSelect(`${pad(h)}:${pad(m)}`);
9641
+ };
9642
+ return /* @__PURE__ */ jsxs(Popover, { defaultOpen, onOpenChange, open, children: [
9643
+ /* @__PURE__ */ jsx(Popover.Trigger, { asChild: true, children }),
9644
+ /* @__PURE__ */ jsxs(
9645
+ Popover.Content,
9646
+ {
9647
+ align,
9648
+ alignOffset,
9649
+ sideOffset,
9650
+ className: "tw-flex tw-flex-row",
9651
+ children: [
9652
+ /* @__PURE__ */ jsx(ScrollArea, { type: "always", ref: scrollToSelected, viewPortClassName: "tw-h-60 tw-p-3", children: HOURS.map((value) => /* @__PURE__ */ jsx(
9653
+ Toggle,
9654
+ {
9655
+ variant: "ghost",
9656
+ className: "tw-size-10 tw-p-0",
9657
+ pressed: value === hour,
9658
+ onPressedChange: () => handleHourSelect(value),
9659
+ children: pad(value)
9660
+ },
9661
+ value
9662
+ )) }),
9663
+ /* @__PURE__ */ jsx(ScrollArea, { type: "always", ref: scrollToSelected, viewPortClassName: "tw-h-60 tw-p-3", children: MINUTES.map((value) => /* @__PURE__ */ jsx(
9664
+ Toggle,
9665
+ {
9666
+ variant: "ghost",
9667
+ className: "tw-size-10 tw-p-0",
9668
+ pressed: value === minute,
9669
+ onPressedChange: () => handleMinuteSelect(value),
9670
+ children: pad(value)
9671
+ },
9672
+ value
9673
+ )) })
9674
+ ]
9675
+ }
9676
+ )
9677
+ ] });
9678
+ };
9775
9679
  var Optional = ({ className }) => /* @__PURE__ */ jsx("span", { className: cn("tw-text-muted-foreground", className), children: "(optional)" });
9776
9680
  var Label2 = ({ className, children, id, htmlFor, ...rest }) => {
9777
9681
  return /* @__PURE__ */ jsx(
@@ -11093,10 +10997,10 @@ var variants4 = cva(
11093
10997
  ]
11094
10998
  },
11095
10999
  sizing: {
11096
- // border-inclusive heights: 40 / 36 / 34 px
11000
+ // border-inclusive heights: 40 / 36 / 32 px (small matches Button small)
11097
11001
  default: ["tw-px-4", "tw-py-2.5", "tw-text-sm/[18px]", "tw-h-10", "tw-min-h-10"],
11098
11002
  medium: ["tw-px-4", "tw-py-2", "tw-text-sm/[18px]", "tw-h-9", "tw-min-h-9"],
11099
- small: ["tw-px-4", "tw-py-2", "tw-text-sm/[16px]", "tw-h-[34px]", "tw-min-h-[34px]"]
11003
+ small: ["tw-px-4", "tw-py-2", "tw-text-sm/[16px]", "tw-h-8", "tw-min-h-8"]
11100
11004
  },
11101
11005
  state: {
11102
11006
  default: [
@@ -11316,7 +11220,7 @@ function Checkbox({
11316
11220
  description && /* @__PURE__ */ jsx(FieldBox.Description, { children: description })
11317
11221
  ] });
11318
11222
  if (!tooltip) return rendered;
11319
- return /* @__PURE__ */ jsx(Tooltip, { tooltip, placement: tooltipPlacement, triggerAsChild: true, children: rendered });
11223
+ return /* @__PURE__ */ jsx(Tooltip, { tooltip, placement: tooltipPlacement, triggerAsChild: !!children, children: rendered });
11320
11224
  }
11321
11225
  var addonVariants2 = cva(
11322
11226
  [
@@ -12395,7 +12299,7 @@ var AutoSaveTextarea = ({
12395
12299
  " Saving"
12396
12300
  ] }),
12397
12301
  !isOverLimit && value !== null && !isChanged && !isSaving && /* @__PURE__ */ jsxs(Fragment$1, { children: [
12398
- /* @__PURE__ */ jsx(icons_exports.CircleCheck, { className: "tw-size-4 tw-text-primary-500" }),
12302
+ /* @__PURE__ */ jsx(icons_exports.CircleCheck, { className: "tw-size-4 tw-text-green-500" }),
12399
12303
  " Saved"
12400
12304
  ] })
12401
12305
  ] })
@@ -12819,6 +12723,107 @@ var PasswordInput = ({
12819
12723
  }
12820
12724
  );
12821
12725
  };
12726
+ var TimeInput = ({
12727
+ ref,
12728
+ // group props
12729
+ state,
12730
+ variant,
12731
+ focusVariant,
12732
+ sizing,
12733
+ className,
12734
+ // own props
12735
+ value: valueProp,
12736
+ defaultValue,
12737
+ onValueChange,
12738
+ onValueBlur,
12739
+ onChange,
12740
+ onBlur,
12741
+ allowClear = false,
12742
+ // input props
12743
+ disabled,
12744
+ readOnly,
12745
+ placeholder = "Select time",
12746
+ ...restInputProps
12747
+ }) => {
12748
+ const inputRef = useRef(null);
12749
+ const [isOpen, setIsOpen] = useState(false);
12750
+ const [internalValue, setInternalValue] = useState(defaultValue ?? null);
12751
+ const isControlled = valueProp !== void 0;
12752
+ const value = isControlled ? valueProp ?? null : internalValue;
12753
+ const setValue = (next) => {
12754
+ if (!isControlled) setInternalValue(next);
12755
+ onValueChange?.(next);
12756
+ };
12757
+ const canClear = allowClear && !!value && !disabled && !readOnly;
12758
+ const showPicker2 = !disabled && !readOnly;
12759
+ const handleChange = (event) => {
12760
+ setValue(event.target.value || null);
12761
+ onChange?.(event);
12762
+ };
12763
+ const handleBlur = (event) => {
12764
+ const newValue = event.target.value || null;
12765
+ if (!isControlled) setInternalValue(newValue);
12766
+ onValueBlur?.(newValue);
12767
+ onBlur?.(event);
12768
+ };
12769
+ const handleTimePickerSelect = (time) => {
12770
+ setValue(time);
12771
+ };
12772
+ const handleClear = () => {
12773
+ if (!inputRef.current) return;
12774
+ inputRef.current.value = "";
12775
+ setValue(null);
12776
+ onChange?.(createChangeInputEvent(inputRef.current));
12777
+ };
12778
+ return /* @__PURE__ */ jsxs(
12779
+ InputGroup,
12780
+ {
12781
+ state,
12782
+ variant,
12783
+ sizing,
12784
+ focusVariant,
12785
+ className,
12786
+ children: [
12787
+ /* @__PURE__ */ jsx(
12788
+ InputGroup.Input,
12789
+ {
12790
+ ...restInputProps,
12791
+ ref: mergeRefs(ref ?? null, inputRef),
12792
+ type: "time",
12793
+ className: "[&::-webkit-calendar-picker-indicator]:tw-hidden [&::-webkit-datetime-edit-fields-wrapper]:tw-py-0",
12794
+ value: value ?? "",
12795
+ placeholder,
12796
+ onChange: handleChange,
12797
+ onBlur: handleBlur,
12798
+ disabled,
12799
+ readOnly
12800
+ }
12801
+ ),
12802
+ (canClear || showPicker2) && /* @__PURE__ */ jsxs(InputGroup.Addon, { align: "inline-end", children: [
12803
+ canClear && /* @__PURE__ */ jsx(
12804
+ InputGroup.Button,
12805
+ {
12806
+ "aria-label": "Clear time",
12807
+ onMouseDown: (event) => event.preventDefault(),
12808
+ onClick: handleClear,
12809
+ children: /* @__PURE__ */ jsx(icons_exports.X, { className: "tw-size-4" })
12810
+ }
12811
+ ),
12812
+ showPicker2 && /* @__PURE__ */ jsx(
12813
+ TimePicker,
12814
+ {
12815
+ open: isOpen,
12816
+ onOpenChange: setIsOpen,
12817
+ onSelect: handleTimePickerSelect,
12818
+ selected: value,
12819
+ children: /* @__PURE__ */ jsx(InputGroup.Button, { "aria-label": "Select time", children: /* @__PURE__ */ jsx(icons_exports.Clock, { className: "tw-size-4" }) })
12820
+ }
12821
+ )
12822
+ ] })
12823
+ ]
12824
+ }
12825
+ );
12826
+ };
12822
12827
  var InputOtpVariantContext = createContext({
12823
12828
  sizing: "md",
12824
12829
  state: "default"
@@ -16163,7 +16168,7 @@ var ThinkingIndicator = ({ label = "Thinking..." }) => {
16163
16168
  // src/blocks/AIKit/usageStatsHelpers.ts
16164
16169
  var clampPercentage = (value) => Number.isFinite(value) ? Math.min(100, Math.max(0, value)) : 0;
16165
16170
  var UsageStatsRing = ({ value, size = 16, strokeWidth = 2.5, className }) => {
16166
- const radius = Math.max(0, (size - strokeWidth) / 2);
16171
+ const radius = Math.max(0, (size - strokeWidth) / 2 - 1);
16167
16172
  const circumference = 2 * Math.PI * radius;
16168
16173
  const offset = circumference * (1 - clampPercentage(value) / 100);
16169
16174
  return /* @__PURE__ */ jsxs(
@@ -16291,10 +16296,10 @@ var AlertCollapsibleIcon = ({ open }) => /* @__PURE__ */ jsx(Tooltip, { placemen
16291
16296
  "tw-size-5",
16292
16297
  "tw-text-neutral-400",
16293
16298
  "group-data-[state=open]/alert:tw-rotate-180",
16294
- "group-data-[variant=info]/alert:group-hover:tw-text-secondary-600",
16299
+ "group-data-[variant=info]/alert:group-hover:tw-text-blue-600",
16295
16300
  "group-data-[variant=warning]/alert:group-hover:tw-text-warning-600",
16296
16301
  "group-data-[variant=error]/alert:group-hover:tw-text-error-600",
16297
- "group-data-[variant=success]/alert:group-hover:tw-text-primary-600"
16302
+ "group-data-[variant=success]/alert:group-hover:tw-text-green-600"
16298
16303
  )
16299
16304
  }
16300
16305
  ) });
@@ -16342,10 +16347,10 @@ var AlertIcon = ({ variant, icon, className, ...rest }) => /* @__PURE__ */ jsx(
16342
16347
  "tw-self-start",
16343
16348
  "tw-p-0.5",
16344
16349
  '[&_svg:not([class*="tw-size-"])]:tw-size-4',
16345
- "group-data-[variant=info]/alert:tw-text-secondary-500",
16350
+ "group-data-[variant=info]/alert:tw-text-blue-500",
16346
16351
  "group-data-[variant=warning]/alert:tw-text-warning-500",
16347
16352
  "group-data-[variant=error]/alert:tw-text-error-500",
16348
- "group-data-[variant=success]/alert:tw-text-primary-500",
16353
+ "group-data-[variant=success]/alert:tw-text-green-500",
16349
16354
  className
16350
16355
  ),
16351
16356
  children: icon ?? VARIANT_ICONS2[variant]
@@ -16384,19 +16389,18 @@ var AlertRoot = ({
16384
16389
  "tw-text-left",
16385
16390
  "tw-p-4",
16386
16391
  // border
16387
- "tw-rounded",
16388
- "data-[argo=true]:tw-rounded-lg",
16392
+ "tw-rounded-[var(--radius-lg,0.25rem)]",
16389
16393
  "tw-border",
16390
16394
  "tw-border-solid",
16391
16395
  // border variants
16392
- "data-[variant=info]:tw-bg-secondary-100",
16393
- "data-[variant=info]:tw-border-secondary-200",
16396
+ "data-[variant=info]:tw-bg-blue-100",
16397
+ "data-[variant=info]:tw-border-blue-200",
16394
16398
  "data-[variant=warning]:tw-bg-warning-100",
16395
16399
  "data-[variant=warning]:tw-border-warning-300",
16396
16400
  "data-[variant=error]:tw-bg-error-100",
16397
16401
  "data-[variant=error]:tw-border-error-200",
16398
- "data-[variant=success]:tw-bg-primary-100",
16399
- "data-[variant=success]:tw-border-primary-200",
16402
+ "data-[variant=success]:tw-bg-green-100",
16403
+ "data-[variant=success]:tw-border-green-200",
16400
16404
  className
16401
16405
  ),
16402
16406
  children
@@ -16656,8 +16660,8 @@ var variants6 = cva(
16656
16660
  variant: {
16657
16661
  default: "tw-border tw-border-border tw-bg-popover",
16658
16662
  error: "tw-bg-error-550",
16659
- info: "tw-bg-secondary-600",
16660
- success: "tw-bg-primary-700",
16663
+ info: "tw-bg-blue-600",
16664
+ success: "tw-bg-green-700",
16661
16665
  warning: "tw-bg-warning-550"
16662
16666
  }
16663
16667
  }
@@ -17466,7 +17470,7 @@ var ThemeProvider = ({
17466
17470
  }, [brand, resolvedMode]);
17467
17471
  return /* @__PURE__ */ jsxs(ThemeContext, { value: { brand, setBrand, colorScheme, resolvedMode }, children: [
17468
17472
  isRoot && /* @__PURE__ */ jsx(AIGradientsSvg, {}),
17469
- children
17473
+ isRoot ? /* @__PURE__ */ jsx(TooltipProvider, { children }) : children
17470
17474
  ] });
17471
17475
  };
17472
17476
  var useTheme = () => {
@@ -20340,7 +20344,9 @@ var Table = ({
20340
20344
  "table",
20341
20345
  {
20342
20346
  className: cn(
20343
- "tw-w-full tw-caption-bottom tw-text-sm",
20347
+ // `tw-text-foreground` (a semantic token) so header + cell text flips
20348
+ // under `[data-theme='dark']` instead of inheriting a fixed dark color.
20349
+ "tw-w-full tw-caption-bottom tw-text-sm tw-text-foreground",
20344
20350
  borderCollapsed ? "tw-border-collapse" : "tw-border-separate tw-border-spacing-y-1",
20345
20351
  className
20346
20352
  ),
@@ -21112,7 +21118,7 @@ var PaneHeader = ({ label, sublabel }) => /* @__PURE__ */ jsxs("div", { children
21112
21118
  var ConflictStatusIndicator = ({ remainingConflicts, remainingSafeChanges }) => {
21113
21119
  const hasConflicts = remainingConflicts > 0;
21114
21120
  const allDone = !hasConflicts && remainingSafeChanges === 0;
21115
- const colorClass = hasConflicts ? "tw-text-warning-500" : allDone ? "tw-text-primary-500" : "tw-text-muted-foreground";
21121
+ const colorClass = hasConflicts ? "tw-text-warning-500" : allDone ? "tw-text-green-500" : "tw-text-muted-foreground";
21116
21122
  const parts = [];
21117
21123
  if (hasConflicts) {
21118
21124
  parts.push(`${remainingConflicts} conflict${remainingConflicts !== 1 ? "s" : ""}`);