@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/COMPONENT-API.md +166 -1
- package/dist/editors.cjs +5 -2
- package/dist/editors.cjs.map +1 -1
- package/dist/editors.js +5 -2
- package/dist/editors.js.map +1 -1
- package/dist/index.cjs +229 -223
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +94 -85
- package/dist/index.d.ts +94 -85
- package/dist/index.js +229 -223
- package/dist/index.js.map +1 -1
- package/dist/markdown-editor.cjs +12 -7
- package/dist/markdown-editor.cjs.map +1 -1
- package/dist/markdown-editor.js +12 -7
- package/dist/markdown-editor.js.map +1 -1
- package/dist/mermaid.cjs +5 -2
- package/dist/mermaid.cjs.map +1 -1
- package/dist/mermaid.js +5 -2
- package/dist/mermaid.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/testing.cjs +75 -2
- package/dist/testing.cjs.map +1 -1
- package/dist/testing.js +75 -2
- package/dist/testing.js.map +1 -1
- package/package.json +2 -2
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
|
-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
3411
|
-
"tw-bg-
|
|
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 /
|
|
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-
|
|
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:
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
16393
|
-
"data-[variant=info]:tw-border-
|
|
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-
|
|
16399
|
-
"data-[variant=success]:tw-border-
|
|
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-
|
|
16660
|
-
success: "tw-bg-
|
|
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
|
-
|
|
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-
|
|
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" : ""}`);
|