myoperator-mcp 0.2.44 → 0.2.46
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 +171 -171
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -21,7 +21,7 @@ const accordionVariants = cva("w-full", {
|
|
|
21
21
|
variants: {
|
|
22
22
|
variant: {
|
|
23
23
|
default: "",
|
|
24
|
-
bordered: "border border-
|
|
24
|
+
bordered: "border border-semantic-border-layout rounded-lg divide-y divide-semantic-border-layout",
|
|
25
25
|
},
|
|
26
26
|
},
|
|
27
27
|
defaultVariants: {
|
|
@@ -48,12 +48,12 @@ const accordionItemVariants = cva("", {
|
|
|
48
48
|
* Accordion trigger variants
|
|
49
49
|
*/
|
|
50
50
|
const accordionTriggerVariants = cva(
|
|
51
|
-
"flex w-full items-center justify-between text-left transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-
|
|
51
|
+
"flex w-full items-center justify-between text-left transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-semantic-primary focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
|
|
52
52
|
{
|
|
53
53
|
variants: {
|
|
54
54
|
variant: {
|
|
55
55
|
default: "py-3",
|
|
56
|
-
bordered: "p-4 hover:bg-[
|
|
56
|
+
bordered: "p-4 hover:bg-[var(--color-neutral-50)]",
|
|
57
57
|
},
|
|
58
58
|
},
|
|
59
59
|
defaultVariants: {
|
|
@@ -291,7 +291,7 @@ const AccordionTrigger = React.forwardRef<
|
|
|
291
291
|
{showChevron && (
|
|
292
292
|
<ChevronDown
|
|
293
293
|
className={cn(
|
|
294
|
-
"h-4 w-4 shrink-0 text-
|
|
294
|
+
"h-4 w-4 shrink-0 text-semantic-text-muted transition-transform duration-300",
|
|
295
295
|
isOpen && "rotate-180"
|
|
296
296
|
)}
|
|
297
297
|
/>
|
|
@@ -363,16 +363,16 @@ import { cn } from "@/lib/utils";
|
|
|
363
363
|
* Colors are hardcoded for Bootstrap compatibility.
|
|
364
364
|
*/
|
|
365
365
|
const alertVariants = cva(
|
|
366
|
-
"relative w-full rounded border p-4 text-sm text-
|
|
366
|
+
"relative w-full rounded border p-4 text-sm text-semantic-text-primary [&>svg~*]:pl-8 [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4",
|
|
367
367
|
{
|
|
368
368
|
variants: {
|
|
369
369
|
variant: {
|
|
370
|
-
default: "bg-
|
|
371
|
-
success: "bg-
|
|
372
|
-
error: "bg-
|
|
373
|
-
destructive: "bg-
|
|
374
|
-
warning: "bg-
|
|
375
|
-
info: "bg-
|
|
370
|
+
default: "bg-semantic-bg-ui border-semantic-border-layout [&>svg]:text-semantic-text-primary",
|
|
371
|
+
success: "bg-semantic-success-surface border-semantic-success-border [&>svg]:text-semantic-success-primary",
|
|
372
|
+
error: "bg-semantic-error-surface border-semantic-error-border [&>svg]:text-semantic-error-primary",
|
|
373
|
+
destructive: "bg-semantic-error-surface border-semantic-error-border [&>svg]:text-semantic-error-primary",
|
|
374
|
+
warning: "bg-semantic-warning-surface border-semantic-warning-border [&>svg]:text-semantic-warning-primary",
|
|
375
|
+
info: "bg-semantic-info-surface border-semantic-info-border [&>svg]:text-semantic-info-primary",
|
|
376
376
|
},
|
|
377
377
|
},
|
|
378
378
|
defaultVariants: {
|
|
@@ -504,12 +504,12 @@ const Alert = React.forwardRef<HTMLDivElement, AlertProps>(
|
|
|
504
504
|
onClick={handleClose}
|
|
505
505
|
className={cn(
|
|
506
506
|
"rounded-sm opacity-70 ring-offset-white transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-offset-2",
|
|
507
|
-
variant === "default" && "focus:ring-
|
|
508
|
-
variant === "success" && "focus:ring-
|
|
507
|
+
variant === "default" && "focus:ring-semantic-text-primary",
|
|
508
|
+
variant === "success" && "focus:ring-semantic-success-primary",
|
|
509
509
|
(variant === "error" || variant === "destructive") &&
|
|
510
|
-
"focus:ring-
|
|
511
|
-
variant === "warning" && "focus:ring-
|
|
512
|
-
variant === "info" && "focus:ring-
|
|
510
|
+
"focus:ring-semantic-error-primary",
|
|
511
|
+
variant === "warning" && "focus:ring-semantic-warning-primary",
|
|
512
|
+
variant === "info" && "focus:ring-semantic-info-primary"
|
|
513
513
|
)}
|
|
514
514
|
aria-label="Close alert"
|
|
515
515
|
>
|
|
@@ -569,15 +569,15 @@ const badgeVariants = cva(
|
|
|
569
569
|
variants: {
|
|
570
570
|
variant: {
|
|
571
571
|
// Status-based variants (existing)
|
|
572
|
-
active: "bg-
|
|
573
|
-
failed: "bg-
|
|
574
|
-
disabled: "bg-
|
|
575
|
-
default: "bg-
|
|
576
|
-
primary: "bg-
|
|
572
|
+
active: "bg-semantic-success-surface text-semantic-success-primary",
|
|
573
|
+
failed: "bg-semantic-error-surface text-semantic-error-primary",
|
|
574
|
+
disabled: "bg-semantic-bg-ui text-semantic-text-muted",
|
|
575
|
+
default: "bg-semantic-bg-ui text-semantic-text-primary",
|
|
576
|
+
primary: "bg-semantic-bg-ui text-semantic-text-primary",
|
|
577
577
|
// shadcn-style variants (new)
|
|
578
|
-
secondary: "bg-
|
|
579
|
-
outline: "border border-
|
|
580
|
-
destructive: "bg-
|
|
578
|
+
secondary: "bg-semantic-bg-ui text-semantic-text-primary",
|
|
579
|
+
outline: "border border-semantic-border-layout bg-transparent text-semantic-text-primary",
|
|
580
|
+
destructive: "bg-semantic-error-surface text-semantic-error-primary",
|
|
581
581
|
},
|
|
582
582
|
size: {
|
|
583
583
|
default: "px-3 py-1",
|
|
@@ -676,20 +676,20 @@ import { Loader2 } from "lucide-react";
|
|
|
676
676
|
import { cn } from "@/lib/utils";
|
|
677
677
|
|
|
678
678
|
const buttonVariants = cva(
|
|
679
|
-
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded text-sm font-medium transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-
|
|
679
|
+
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded text-sm font-medium transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-semantic-primary focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
|
|
680
680
|
{
|
|
681
681
|
variants: {
|
|
682
682
|
variant: {
|
|
683
|
-
default: "bg-
|
|
684
|
-
primary: "bg-
|
|
685
|
-
destructive: "bg-
|
|
683
|
+
default: "bg-semantic-primary text-semantic-text-inverted hover:bg-semantic-primary-hover",
|
|
684
|
+
primary: "bg-semantic-primary text-semantic-text-inverted hover:bg-semantic-primary-hover",
|
|
685
|
+
destructive: "bg-semantic-error-primary text-semantic-text-inverted hover:bg-semantic-error-hover",
|
|
686
686
|
outline:
|
|
687
|
-
"border border-
|
|
688
|
-
secondary: "bg-
|
|
689
|
-
ghost: "text-
|
|
690
|
-
link: "text-
|
|
687
|
+
"border border-semantic-border-primary bg-transparent text-semantic-text-secondary hover:bg-semantic-primary-surface",
|
|
688
|
+
secondary: "bg-semantic-primary-surface text-semantic-text-secondary hover:bg-semantic-bg-hover",
|
|
689
|
+
ghost: "text-semantic-text-muted hover:bg-semantic-bg-ui hover:text-semantic-text-primary",
|
|
690
|
+
link: "text-semantic-text-secondary underline-offset-4 hover:underline",
|
|
691
691
|
dashed:
|
|
692
|
-
"border border-dashed border-
|
|
692
|
+
"border border-dashed border-semantic-bg-hover bg-transparent text-semantic-text-muted hover:border-semantic-border-primary hover:text-semantic-text-secondary hover:bg-[var(--color-neutral-50)]",
|
|
693
693
|
},
|
|
694
694
|
size: {
|
|
695
695
|
default: "min-w-20 py-2.5 px-4 [&_svg]:size-4",
|
|
@@ -790,7 +790,7 @@ import { cn } from "@/lib/utils";
|
|
|
790
790
|
* Checkbox box variants (the outer container)
|
|
791
791
|
*/
|
|
792
792
|
const checkboxVariants = cva(
|
|
793
|
-
"peer inline-flex items-center justify-center shrink-0 rounded border-2 transition-colors duration-200 ease-in-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-
|
|
793
|
+
"peer inline-flex items-center justify-center shrink-0 rounded border-2 transition-colors duration-200 ease-in-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-semantic-primary focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-semantic-primary data-[state=checked]:border-semantic-primary data-[state=checked]:text-semantic-text-inverted data-[state=indeterminate]:bg-semantic-primary data-[state=indeterminate]:border-semantic-primary data-[state=indeterminate]:text-semantic-text-inverted data-[state=unchecked]:bg-semantic-bg-primary data-[state=unchecked]:border-semantic-border-input data-[state=unchecked]:hover:border-[var(--color-neutral-400)]",
|
|
794
794
|
{
|
|
795
795
|
variants: {
|
|
796
796
|
size: {
|
|
@@ -922,7 +922,7 @@ const Checkbox = React.forwardRef<
|
|
|
922
922
|
htmlFor={id}
|
|
923
923
|
className={cn(
|
|
924
924
|
labelSizeVariants({ size }),
|
|
925
|
-
"text-
|
|
925
|
+
"text-semantic-text-primary cursor-pointer",
|
|
926
926
|
disabled && "opacity-50 cursor-not-allowed",
|
|
927
927
|
labelClassName
|
|
928
928
|
)}
|
|
@@ -936,7 +936,7 @@ const Checkbox = React.forwardRef<
|
|
|
936
936
|
htmlFor={id}
|
|
937
937
|
className={cn(
|
|
938
938
|
labelSizeVariants({ size }),
|
|
939
|
-
"text-
|
|
939
|
+
"text-semantic-text-primary cursor-pointer",
|
|
940
940
|
disabled && "opacity-50 cursor-not-allowed",
|
|
941
941
|
labelClassName
|
|
942
942
|
)}
|
|
@@ -960,7 +960,7 @@ const Checkbox = React.forwardRef<
|
|
|
960
960
|
<span
|
|
961
961
|
className={cn(
|
|
962
962
|
labelSizeVariants({ size }),
|
|
963
|
-
"text-
|
|
963
|
+
"text-semantic-text-primary",
|
|
964
964
|
disabled && "opacity-50",
|
|
965
965
|
labelClassName
|
|
966
966
|
)}
|
|
@@ -973,7 +973,7 @@ const Checkbox = React.forwardRef<
|
|
|
973
973
|
<span
|
|
974
974
|
className={cn(
|
|
975
975
|
labelSizeVariants({ size }),
|
|
976
|
-
"text-
|
|
976
|
+
"text-semantic-text-primary",
|
|
977
977
|
disabled && "opacity-50",
|
|
978
978
|
labelClassName
|
|
979
979
|
)}
|
|
@@ -1495,7 +1495,7 @@ const DropdownMenuSubTrigger = React.forwardRef<
|
|
|
1495
1495
|
<DropdownMenuPrimitive.SubTrigger
|
|
1496
1496
|
ref={ref}
|
|
1497
1497
|
className={cn(
|
|
1498
|
-
"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-
|
|
1498
|
+
"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-semantic-bg-ui data-[state=open]:bg-semantic-bg-ui",
|
|
1499
1499
|
inset && "pl-8",
|
|
1500
1500
|
className
|
|
1501
1501
|
)}
|
|
@@ -1515,7 +1515,7 @@ const DropdownMenuSubContent = React.forwardRef<
|
|
|
1515
1515
|
<DropdownMenuPrimitive.SubContent
|
|
1516
1516
|
ref={ref}
|
|
1517
1517
|
className={cn(
|
|
1518
|
-
"z-50 min-w-[8rem] overflow-hidden rounded-md border border-
|
|
1518
|
+
"z-50 min-w-[8rem] overflow-hidden rounded-md border border-semantic-border-layout bg-semantic-bg-primary p-1 text-semantic-text-primary shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
|
1519
1519
|
className
|
|
1520
1520
|
)}
|
|
1521
1521
|
{...props}
|
|
@@ -1533,7 +1533,7 @@ const DropdownMenuContent = React.forwardRef<
|
|
|
1533
1533
|
ref={ref}
|
|
1534
1534
|
sideOffset={sideOffset}
|
|
1535
1535
|
className={cn(
|
|
1536
|
-
"z-50 min-w-[8rem] overflow-hidden rounded-md border border-
|
|
1536
|
+
"z-50 min-w-[8rem] overflow-hidden rounded-md border border-semantic-border-layout bg-semantic-bg-primary p-1 text-semantic-text-primary shadow-md",
|
|
1537
1537
|
"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
|
1538
1538
|
className
|
|
1539
1539
|
)}
|
|
@@ -1552,7 +1552,7 @@ const DropdownMenuItem = React.forwardRef<
|
|
|
1552
1552
|
<DropdownMenuPrimitive.Item
|
|
1553
1553
|
ref={ref}
|
|
1554
1554
|
className={cn(
|
|
1555
|
-
"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-
|
|
1555
|
+
"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-semantic-bg-ui focus:text-semantic-text-primary data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
1556
1556
|
inset && "pl-8",
|
|
1557
1557
|
className
|
|
1558
1558
|
)}
|
|
@@ -1568,7 +1568,7 @@ const DropdownMenuCheckboxItem = React.forwardRef<
|
|
|
1568
1568
|
<DropdownMenuPrimitive.CheckboxItem
|
|
1569
1569
|
ref={ref}
|
|
1570
1570
|
className={cn(
|
|
1571
|
-
"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-
|
|
1571
|
+
"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-semantic-bg-ui focus:text-semantic-text-primary data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
1572
1572
|
className
|
|
1573
1573
|
)}
|
|
1574
1574
|
checked={checked}
|
|
@@ -1592,7 +1592,7 @@ const DropdownMenuRadioItem = React.forwardRef<
|
|
|
1592
1592
|
<DropdownMenuPrimitive.RadioItem
|
|
1593
1593
|
ref={ref}
|
|
1594
1594
|
className={cn(
|
|
1595
|
-
"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-
|
|
1595
|
+
"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-semantic-bg-ui focus:text-semantic-text-primary data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
1596
1596
|
className
|
|
1597
1597
|
)}
|
|
1598
1598
|
{...props}
|
|
@@ -1631,7 +1631,7 @@ const DropdownMenuSeparator = React.forwardRef<
|
|
|
1631
1631
|
>(({ className, ...props }, ref) => (
|
|
1632
1632
|
<DropdownMenuPrimitive.Separator
|
|
1633
1633
|
ref={ref}
|
|
1634
|
-
className={cn("-mx-1 my-1 h-px bg-
|
|
1634
|
+
className={cn("-mx-1 my-1 h-px bg-semantic-border-layout", className)}
|
|
1635
1635
|
{...props}
|
|
1636
1636
|
/>
|
|
1637
1637
|
));
|
|
@@ -1677,14 +1677,14 @@ import { cn } from "@/lib/utils";
|
|
|
1677
1677
|
* Input variants for different visual states
|
|
1678
1678
|
*/
|
|
1679
1679
|
const inputVariants = cva(
|
|
1680
|
-
"h-10 w-full rounded bg-
|
|
1680
|
+
"h-10 w-full rounded bg-semantic-bg-primary px-4 py-2.5 text-sm text-semantic-text-primary transition-all file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-semantic-text-primary placeholder:text-semantic-text-placeholder disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-[var(--color-neutral-50)]",
|
|
1681
1681
|
{
|
|
1682
1682
|
variants: {
|
|
1683
1683
|
state: {
|
|
1684
1684
|
default:
|
|
1685
|
-
"border border-
|
|
1685
|
+
"border border-semantic-border-input focus:outline-none focus:border-semantic-border-input-focus/50 focus:shadow-[0_0_0_1px_rgba(43,188,202,0.15)]",
|
|
1686
1686
|
error:
|
|
1687
|
-
"border border-
|
|
1687
|
+
"border border-semantic-error-primary/40 focus:outline-none focus:border-semantic-error-primary/60 focus:shadow-[0_0_0_1px_rgba(240,68,56,0.1)]",
|
|
1688
1688
|
},
|
|
1689
1689
|
},
|
|
1690
1690
|
defaultVariants: {
|
|
@@ -1734,14 +1734,14 @@ import { cn } from "@/lib/utils";
|
|
|
1734
1734
|
* MultiSelect trigger variants matching TextField styling
|
|
1735
1735
|
*/
|
|
1736
1736
|
const multiSelectTriggerVariants = cva(
|
|
1737
|
-
"flex min-h-10 w-full items-center justify-between rounded bg-
|
|
1737
|
+
"flex min-h-10 w-full items-center justify-between rounded bg-semantic-bg-primary px-4 py-2 text-sm text-semantic-text-primary transition-all disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-[var(--color-neutral-50)]",
|
|
1738
1738
|
{
|
|
1739
1739
|
variants: {
|
|
1740
1740
|
state: {
|
|
1741
1741
|
default:
|
|
1742
|
-
"border border-
|
|
1742
|
+
"border border-semantic-border-input focus:outline-none focus:border-semantic-border-input-focus/50 focus:shadow-[0_0_0_1px_rgba(43,188,202,0.15)]",
|
|
1743
1743
|
error:
|
|
1744
|
-
"border border-
|
|
1744
|
+
"border border-semantic-error-primary/40 focus:outline-none focus:border-semantic-error-primary/60 focus:shadow-[0_0_0_1px_rgba(240,68,56,0.1)]",
|
|
1745
1745
|
},
|
|
1746
1746
|
},
|
|
1747
1747
|
defaultVariants: {
|
|
@@ -1959,10 +1959,10 @@ const MultiSelect = React.forwardRef<HTMLButtonElement, MultiSelectProps>(
|
|
|
1959
1959
|
{label && (
|
|
1960
1960
|
<label
|
|
1961
1961
|
htmlFor={selectId}
|
|
1962
|
-
className={cn("text-sm font-medium text-
|
|
1962
|
+
className={cn("text-sm font-medium text-semantic-text-primary", labelClassName)}
|
|
1963
1963
|
>
|
|
1964
1964
|
{label}
|
|
1965
|
-
{required && <span className="text-
|
|
1965
|
+
{required && <span className="text-semantic-error-primary ml-0.5">*</span>}
|
|
1966
1966
|
</label>
|
|
1967
1967
|
)}
|
|
1968
1968
|
|
|
@@ -1987,12 +1987,12 @@ const MultiSelect = React.forwardRef<HTMLButtonElement, MultiSelectProps>(
|
|
|
1987
1987
|
>
|
|
1988
1988
|
<div className="flex-1 flex flex-wrap gap-1">
|
|
1989
1989
|
{selectedValues.length === 0 ? (
|
|
1990
|
-
<span className="text-
|
|
1990
|
+
<span className="text-semantic-text-placeholder">{placeholder}</span>
|
|
1991
1991
|
) : (
|
|
1992
1992
|
selectedLabels.map((label, index) => (
|
|
1993
1993
|
<span
|
|
1994
1994
|
key={selectedValues[index]}
|
|
1995
|
-
className="inline-flex items-center gap-1 bg-
|
|
1995
|
+
className="inline-flex items-center gap-1 bg-semantic-bg-ui text-semantic-text-primary text-xs px-2 py-0.5 rounded"
|
|
1996
1996
|
>
|
|
1997
1997
|
{label}
|
|
1998
1998
|
<span
|
|
@@ -2008,7 +2008,7 @@ const MultiSelect = React.forwardRef<HTMLButtonElement, MultiSelectProps>(
|
|
|
2008
2008
|
);
|
|
2009
2009
|
}
|
|
2010
2010
|
}}
|
|
2011
|
-
className="cursor-pointer hover:text-
|
|
2011
|
+
className="cursor-pointer hover:text-semantic-error-primary focus:outline-none"
|
|
2012
2012
|
aria-label={\`Remove \${label}\`}
|
|
2013
2013
|
>
|
|
2014
2014
|
<X className="size-3" />
|
|
@@ -2029,18 +2029,18 @@ const MultiSelect = React.forwardRef<HTMLButtonElement, MultiSelectProps>(
|
|
|
2029
2029
|
clearAll(e as unknown as React.MouseEvent);
|
|
2030
2030
|
}
|
|
2031
2031
|
}}
|
|
2032
|
-
className="p-0.5 cursor-pointer hover:text-
|
|
2032
|
+
className="p-0.5 cursor-pointer hover:text-semantic-error-primary focus:outline-none"
|
|
2033
2033
|
aria-label="Clear all"
|
|
2034
2034
|
>
|
|
2035
|
-
<X className="size-4 text-
|
|
2035
|
+
<X className="size-4 text-semantic-text-muted" />
|
|
2036
2036
|
</span>
|
|
2037
2037
|
)}
|
|
2038
2038
|
{loading ? (
|
|
2039
|
-
<Loader2 className="size-4 animate-spin text-
|
|
2039
|
+
<Loader2 className="size-4 animate-spin text-semantic-text-muted" />
|
|
2040
2040
|
) : (
|
|
2041
2041
|
<ChevronDown
|
|
2042
2042
|
className={cn(
|
|
2043
|
-
"size-4 text-
|
|
2043
|
+
"size-4 text-semantic-text-muted transition-transform",
|
|
2044
2044
|
isOpen && "rotate-180"
|
|
2045
2045
|
)}
|
|
2046
2046
|
/>
|
|
@@ -2052,7 +2052,7 @@ const MultiSelect = React.forwardRef<HTMLButtonElement, MultiSelectProps>(
|
|
|
2052
2052
|
{isOpen && (
|
|
2053
2053
|
<div
|
|
2054
2054
|
className={cn(
|
|
2055
|
-
"absolute z-50 mt-1 w-full rounded bg-
|
|
2055
|
+
"absolute z-50 mt-1 w-full rounded bg-semantic-bg-primary border border-semantic-border-layout shadow-md",
|
|
2056
2056
|
"top-full"
|
|
2057
2057
|
)}
|
|
2058
2058
|
role="listbox"
|
|
@@ -2060,13 +2060,13 @@ const MultiSelect = React.forwardRef<HTMLButtonElement, MultiSelectProps>(
|
|
|
2060
2060
|
>
|
|
2061
2061
|
{/* Search input */}
|
|
2062
2062
|
{searchable && (
|
|
2063
|
-
<div className="p-2 border-b border-
|
|
2063
|
+
<div className="p-2 border-b border-semantic-border-layout">
|
|
2064
2064
|
<input
|
|
2065
2065
|
type="text"
|
|
2066
2066
|
placeholder={searchPlaceholder}
|
|
2067
2067
|
value={searchQuery}
|
|
2068
2068
|
onChange={(e) => setSearchQuery(e.target.value)}
|
|
2069
|
-
className="w-full h-8 px-3 text-sm border border-
|
|
2069
|
+
className="w-full h-8 px-3 text-sm border border-semantic-border-input rounded bg-semantic-bg-primary placeholder:text-semantic-text-placeholder focus:outline-none focus:border-semantic-border-input-focus/50"
|
|
2070
2070
|
onClick={(e) => e.stopPropagation()}
|
|
2071
2071
|
/>
|
|
2072
2072
|
</div>
|
|
@@ -2075,7 +2075,7 @@ const MultiSelect = React.forwardRef<HTMLButtonElement, MultiSelectProps>(
|
|
|
2075
2075
|
{/* Options */}
|
|
2076
2076
|
<div className="max-h-60 overflow-auto p-1">
|
|
2077
2077
|
{filteredOptions.length === 0 ? (
|
|
2078
|
-
<div className="py-6 text-center text-sm text-
|
|
2078
|
+
<div className="py-6 text-center text-sm text-semantic-text-muted">
|
|
2079
2079
|
No results found
|
|
2080
2080
|
</div>
|
|
2081
2081
|
) : (
|
|
@@ -2097,15 +2097,15 @@ const MultiSelect = React.forwardRef<HTMLButtonElement, MultiSelectProps>(
|
|
|
2097
2097
|
disabled={isDisabled}
|
|
2098
2098
|
onClick={() => !isDisabled && toggleOption(option.value)}
|
|
2099
2099
|
className={cn(
|
|
2100
|
-
"relative flex w-full cursor-pointer select-none items-center rounded-sm py-2 pl-4 pr-8 text-sm text-
|
|
2101
|
-
"hover:bg-
|
|
2102
|
-
isSelected && "bg-
|
|
2100
|
+
"relative flex w-full cursor-pointer select-none items-center rounded-sm py-2 pl-4 pr-8 text-sm text-semantic-text-primary outline-none",
|
|
2101
|
+
"hover:bg-semantic-bg-ui focus:bg-semantic-bg-ui",
|
|
2102
|
+
isSelected && "bg-semantic-bg-ui",
|
|
2103
2103
|
isDisabled && "pointer-events-none opacity-50"
|
|
2104
2104
|
)}
|
|
2105
2105
|
>
|
|
2106
2106
|
<span className="absolute right-2 flex size-4 items-center justify-center">
|
|
2107
2107
|
{isSelected && (
|
|
2108
|
-
<Check className="size-4 text-
|
|
2108
|
+
<Check className="size-4 text-semantic-brand" />
|
|
2109
2109
|
)}
|
|
2110
2110
|
</span>
|
|
2111
2111
|
{option.label}
|
|
@@ -2117,7 +2117,7 @@ const MultiSelect = React.forwardRef<HTMLButtonElement, MultiSelectProps>(
|
|
|
2117
2117
|
|
|
2118
2118
|
{/* Footer with count */}
|
|
2119
2119
|
{maxSelections && (
|
|
2120
|
-
<div className="p-2 border-t border-
|
|
2120
|
+
<div className="p-2 border-t border-semantic-border-layout text-xs text-semantic-text-muted">
|
|
2121
2121
|
{selectedValues.length} / {maxSelections} selected
|
|
2122
2122
|
</div>
|
|
2123
2123
|
)}
|
|
@@ -2134,11 +2134,11 @@ const MultiSelect = React.forwardRef<HTMLButtonElement, MultiSelectProps>(
|
|
|
2134
2134
|
{(error || helperText) && (
|
|
2135
2135
|
<div className="flex justify-between items-start gap-2">
|
|
2136
2136
|
{error ? (
|
|
2137
|
-
<span id={errorId} className="text-xs text-
|
|
2137
|
+
<span id={errorId} className="text-xs text-semantic-error-primary">
|
|
2138
2138
|
{error}
|
|
2139
2139
|
</span>
|
|
2140
2140
|
) : helperText ? (
|
|
2141
|
-
<span id={helperId} className="text-xs text-
|
|
2141
|
+
<span id={helperId} className="text-xs text-semantic-text-muted">
|
|
2142
2142
|
{helperText}
|
|
2143
2143
|
</span>
|
|
2144
2144
|
) : null}
|
|
@@ -2163,7 +2163,7 @@ import { Button } from "./button";
|
|
|
2163
2163
|
* PageHeader variants for layout styles.
|
|
2164
2164
|
*/
|
|
2165
2165
|
const pageHeaderVariants = cva(
|
|
2166
|
-
"flex flex-col sm:flex-row sm:items-center w-full bg-
|
|
2166
|
+
"flex flex-col sm:flex-row sm:items-center w-full bg-semantic-bg-primary",
|
|
2167
2167
|
{
|
|
2168
2168
|
variants: {},
|
|
2169
2169
|
defaultVariants: {},
|
|
@@ -2254,7 +2254,7 @@ const PageHeader = React.forwardRef<HTMLDivElement, PageHeaderProps>(
|
|
|
2254
2254
|
<button
|
|
2255
2255
|
type="button"
|
|
2256
2256
|
onClick={onBackClick}
|
|
2257
|
-
className="flex items-center justify-center w-10 h-10 rounded hover:bg-
|
|
2257
|
+
className="flex items-center justify-center w-10 h-10 rounded hover:bg-semantic-bg-ui transition-colors text-semantic-text-primary"
|
|
2258
2258
|
aria-label="Go back"
|
|
2259
2259
|
>
|
|
2260
2260
|
<ArrowLeft className="w-5 h-5" />
|
|
@@ -2263,7 +2263,7 @@ const PageHeader = React.forwardRef<HTMLDivElement, PageHeaderProps>(
|
|
|
2263
2263
|
}
|
|
2264
2264
|
if (icon) {
|
|
2265
2265
|
return (
|
|
2266
|
-
<div className="flex items-center justify-center w-10 h-10 [&_svg]:w-6 [&_svg]:h-6 text-
|
|
2266
|
+
<div className="flex items-center justify-center w-10 h-10 [&_svg]:w-6 [&_svg]:h-6 text-semantic-text-muted">
|
|
2267
2267
|
{icon}
|
|
2268
2268
|
</div>
|
|
2269
2269
|
);
|
|
@@ -2395,10 +2395,10 @@ const PageHeader = React.forwardRef<HTMLDivElement, PageHeaderProps>(
|
|
|
2395
2395
|
<div
|
|
2396
2396
|
ref={ref}
|
|
2397
2397
|
className={cn(
|
|
2398
|
-
"flex w-full bg-
|
|
2398
|
+
"flex w-full bg-semantic-bg-primary px-4",
|
|
2399
2399
|
layoutClasses[layout],
|
|
2400
2400
|
heightClasses[layout],
|
|
2401
|
-
showBorder && "border-b border-
|
|
2401
|
+
showBorder && "border-b border-semantic-border-layout",
|
|
2402
2402
|
className
|
|
2403
2403
|
)}
|
|
2404
2404
|
{...props}
|
|
@@ -2413,17 +2413,17 @@ const PageHeader = React.forwardRef<HTMLDivElement, PageHeaderProps>(
|
|
|
2413
2413
|
{/* Content Section: Title + Description */}
|
|
2414
2414
|
<div className="flex-1 min-w-0">
|
|
2415
2415
|
<div className="flex items-center gap-2">
|
|
2416
|
-
<h1 className="m-0 text-base font-semibold text-
|
|
2416
|
+
<h1 className="m-0 text-base font-semibold text-semantic-text-primary truncate">
|
|
2417
2417
|
{title}
|
|
2418
2418
|
</h1>
|
|
2419
2419
|
{infoIcon && (
|
|
2420
|
-
<span className="flex-shrink-0 [&_svg]:w-4 [&_svg]:h-4 text-
|
|
2420
|
+
<span className="flex-shrink-0 [&_svg]:w-4 [&_svg]:h-4 text-semantic-text-muted">
|
|
2421
2421
|
{infoIcon}
|
|
2422
2422
|
</span>
|
|
2423
2423
|
)}
|
|
2424
2424
|
</div>
|
|
2425
2425
|
{description && (
|
|
2426
|
-
<p className="m-0 text-sm text-
|
|
2426
|
+
<p className="m-0 text-sm text-semantic-text-primary font-normal mt-1 line-clamp-2">
|
|
2427
2427
|
{description}
|
|
2428
2428
|
</p>
|
|
2429
2429
|
)}
|
|
@@ -2606,10 +2606,10 @@ const SelectField = React.forwardRef<HTMLButtonElement, SelectFieldProps>(
|
|
|
2606
2606
|
{label && (
|
|
2607
2607
|
<label
|
|
2608
2608
|
htmlFor={selectId}
|
|
2609
|
-
className={cn("text-sm font-medium text-
|
|
2609
|
+
className={cn("text-sm font-medium text-semantic-text-primary", labelClassName)}
|
|
2610
2610
|
>
|
|
2611
2611
|
{label}
|
|
2612
|
-
{required && <span className="text-
|
|
2612
|
+
{required && <span className="text-semantic-error-primary ml-0.5">*</span>}
|
|
2613
2613
|
</label>
|
|
2614
2614
|
)}
|
|
2615
2615
|
|
|
@@ -2632,7 +2632,7 @@ const SelectField = React.forwardRef<HTMLButtonElement, SelectFieldProps>(
|
|
|
2632
2632
|
>
|
|
2633
2633
|
<SelectValue placeholder={placeholder} />
|
|
2634
2634
|
{loading && (
|
|
2635
|
-
<Loader2 className="absolute right-8 size-4 animate-spin text-
|
|
2635
|
+
<Loader2 className="absolute right-8 size-4 animate-spin text-semantic-text-muted" />
|
|
2636
2636
|
)}
|
|
2637
2637
|
</SelectTrigger>
|
|
2638
2638
|
<SelectContent>
|
|
@@ -2644,7 +2644,7 @@ const SelectField = React.forwardRef<HTMLButtonElement, SelectFieldProps>(
|
|
|
2644
2644
|
placeholder={searchPlaceholder}
|
|
2645
2645
|
value={searchQuery}
|
|
2646
2646
|
onChange={handleSearchChange}
|
|
2647
|
-
className="w-full h-8 px-3 text-sm border border-
|
|
2647
|
+
className="w-full h-8 px-3 text-sm border border-semantic-border-input rounded bg-semantic-bg-primary placeholder:text-semantic-text-placeholder focus:outline-none focus:border-semantic-border-input-focus/50"
|
|
2648
2648
|
// Prevent closing dropdown when clicking input
|
|
2649
2649
|
onClick={(e) => e.stopPropagation()}
|
|
2650
2650
|
onKeyDown={(e) => e.stopPropagation()}
|
|
@@ -2687,7 +2687,7 @@ const SelectField = React.forwardRef<HTMLButtonElement, SelectFieldProps>(
|
|
|
2687
2687
|
searchQuery &&
|
|
2688
2688
|
groupedOptions.ungrouped.length === 0 &&
|
|
2689
2689
|
Object.keys(groupedOptions.groups).length === 0 && (
|
|
2690
|
-
<div className="py-6 text-center text-sm text-
|
|
2690
|
+
<div className="py-6 text-center text-sm text-semantic-text-muted">
|
|
2691
2691
|
No results found
|
|
2692
2692
|
</div>
|
|
2693
2693
|
)}
|
|
@@ -2698,11 +2698,11 @@ const SelectField = React.forwardRef<HTMLButtonElement, SelectFieldProps>(
|
|
|
2698
2698
|
{(error || helperText) && (
|
|
2699
2699
|
<div className="flex justify-between items-start gap-2">
|
|
2700
2700
|
{error ? (
|
|
2701
|
-
<span id={errorId} className="text-xs text-
|
|
2701
|
+
<span id={errorId} className="text-xs text-semantic-error-primary">
|
|
2702
2702
|
{error}
|
|
2703
2703
|
</span>
|
|
2704
2704
|
) : helperText ? (
|
|
2705
|
-
<span id={helperId} className="text-xs text-
|
|
2705
|
+
<span id={helperId} className="text-xs text-semantic-text-muted">
|
|
2706
2706
|
{helperText}
|
|
2707
2707
|
</span>
|
|
2708
2708
|
) : null}
|
|
@@ -2727,14 +2727,14 @@ import { cn } from "@/lib/utils";
|
|
|
2727
2727
|
* SelectTrigger variants matching TextField styling
|
|
2728
2728
|
*/
|
|
2729
2729
|
const selectTriggerVariants = cva(
|
|
2730
|
-
"flex h-10 w-full items-center justify-between rounded bg-
|
|
2730
|
+
"flex h-10 w-full items-center justify-between rounded bg-semantic-bg-primary px-4 py-2.5 text-sm text-semantic-text-primary transition-all disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-[var(--color-neutral-50)] [&>span]:line-clamp-1",
|
|
2731
2731
|
{
|
|
2732
2732
|
variants: {
|
|
2733
2733
|
state: {
|
|
2734
2734
|
default:
|
|
2735
|
-
"border border-
|
|
2735
|
+
"border border-semantic-border-input focus:outline-none focus:border-semantic-border-input-focus/50 focus:shadow-[0_0_0_1px_rgba(43,188,202,0.15)]",
|
|
2736
2736
|
error:
|
|
2737
|
-
"border border-
|
|
2737
|
+
"border border-semantic-error-primary/40 focus:outline-none focus:border-semantic-error-primary/60 focus:shadow-[0_0_0_1px_rgba(240,68,56,0.1)]",
|
|
2738
2738
|
},
|
|
2739
2739
|
},
|
|
2740
2740
|
defaultVariants: {
|
|
@@ -2765,7 +2765,7 @@ const SelectTrigger = React.forwardRef<
|
|
|
2765
2765
|
>
|
|
2766
2766
|
{children}
|
|
2767
2767
|
<SelectPrimitive.Icon asChild>
|
|
2768
|
-
<ChevronDown className="size-4 text-
|
|
2768
|
+
<ChevronDown className="size-4 text-semantic-text-muted opacity-70" />
|
|
2769
2769
|
</SelectPrimitive.Icon>
|
|
2770
2770
|
</SelectPrimitive.Trigger>
|
|
2771
2771
|
));
|
|
@@ -2783,7 +2783,7 @@ const SelectScrollUpButton = React.forwardRef<
|
|
|
2783
2783
|
)}
|
|
2784
2784
|
{...props}
|
|
2785
2785
|
>
|
|
2786
|
-
<ChevronUp className="size-4 text-
|
|
2786
|
+
<ChevronUp className="size-4 text-semantic-text-muted" />
|
|
2787
2787
|
</SelectPrimitive.ScrollUpButton>
|
|
2788
2788
|
));
|
|
2789
2789
|
SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
|
|
@@ -2800,7 +2800,7 @@ const SelectScrollDownButton = React.forwardRef<
|
|
|
2800
2800
|
)}
|
|
2801
2801
|
{...props}
|
|
2802
2802
|
>
|
|
2803
|
-
<ChevronDown className="size-4 text-
|
|
2803
|
+
<ChevronDown className="size-4 text-semantic-text-muted" />
|
|
2804
2804
|
</SelectPrimitive.ScrollDownButton>
|
|
2805
2805
|
));
|
|
2806
2806
|
SelectScrollDownButton.displayName =
|
|
@@ -2814,7 +2814,7 @@ const SelectContent = React.forwardRef<
|
|
|
2814
2814
|
<SelectPrimitive.Content
|
|
2815
2815
|
ref={ref}
|
|
2816
2816
|
className={cn(
|
|
2817
|
-
"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded bg-
|
|
2817
|
+
"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded bg-semantic-bg-primary border border-semantic-border-layout shadow-md",
|
|
2818
2818
|
"data-[state=open]:animate-in data-[state=closed]:animate-out",
|
|
2819
2819
|
"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
2820
2820
|
"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
|
|
@@ -2849,7 +2849,7 @@ const SelectLabel = React.forwardRef<
|
|
|
2849
2849
|
>(({ className, ...props }, ref) => (
|
|
2850
2850
|
<SelectPrimitive.Label
|
|
2851
2851
|
ref={ref}
|
|
2852
|
-
className={cn("px-4 py-1.5 text-xs font-medium text-
|
|
2852
|
+
className={cn("px-4 py-1.5 text-xs font-medium text-semantic-text-muted", className)}
|
|
2853
2853
|
{...props}
|
|
2854
2854
|
/>
|
|
2855
2855
|
));
|
|
@@ -2862,8 +2862,8 @@ const SelectItem = React.forwardRef<
|
|
|
2862
2862
|
<SelectPrimitive.Item
|
|
2863
2863
|
ref={ref}
|
|
2864
2864
|
className={cn(
|
|
2865
|
-
"relative flex w-full cursor-pointer select-none items-center rounded-sm py-2 pl-4 pr-8 text-sm text-
|
|
2866
|
-
"hover:bg-
|
|
2865
|
+
"relative flex w-full cursor-pointer select-none items-center rounded-sm py-2 pl-4 pr-8 text-sm text-semantic-text-primary outline-none",
|
|
2866
|
+
"hover:bg-semantic-bg-ui focus:bg-semantic-bg-ui",
|
|
2867
2867
|
"data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
2868
2868
|
className
|
|
2869
2869
|
)}
|
|
@@ -2871,7 +2871,7 @@ const SelectItem = React.forwardRef<
|
|
|
2871
2871
|
>
|
|
2872
2872
|
<span className="absolute right-2 flex size-4 items-center justify-center">
|
|
2873
2873
|
<SelectPrimitive.ItemIndicator>
|
|
2874
|
-
<Check className="size-4 text-
|
|
2874
|
+
<Check className="size-4 text-semantic-brand" />
|
|
2875
2875
|
</SelectPrimitive.ItemIndicator>
|
|
2876
2876
|
</span>
|
|
2877
2877
|
<SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>
|
|
@@ -2885,7 +2885,7 @@ const SelectSeparator = React.forwardRef<
|
|
|
2885
2885
|
>(({ className, ...props }, ref) => (
|
|
2886
2886
|
<SelectPrimitive.Separator
|
|
2887
2887
|
ref={ref}
|
|
2888
|
-
className={cn("-mx-1 my-1 h-px bg-
|
|
2888
|
+
className={cn("-mx-1 my-1 h-px bg-semantic-border-layout", className)}
|
|
2889
2889
|
{...props}
|
|
2890
2890
|
/>
|
|
2891
2891
|
));
|
|
@@ -2915,7 +2915,7 @@ import { cn } from "@/lib/utils";
|
|
|
2915
2915
|
* Switch track variants (the outer container)
|
|
2916
2916
|
*/
|
|
2917
2917
|
const switchVariants = cva(
|
|
2918
|
-
"peer inline-flex shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-
|
|
2918
|
+
"peer inline-flex shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-semantic-primary focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-semantic-primary data-[state=unchecked]:bg-semantic-bg-grey",
|
|
2919
2919
|
{
|
|
2920
2920
|
variants: {
|
|
2921
2921
|
size: {
|
|
@@ -3019,7 +3019,7 @@ const Switch = React.forwardRef<
|
|
|
3019
3019
|
<span
|
|
3020
3020
|
className={cn(
|
|
3021
3021
|
labelSizeVariants({ size }),
|
|
3022
|
-
"text-
|
|
3022
|
+
"text-semantic-text-primary",
|
|
3023
3023
|
disabled && "opacity-50"
|
|
3024
3024
|
)}
|
|
3025
3025
|
>
|
|
@@ -3031,7 +3031,7 @@ const Switch = React.forwardRef<
|
|
|
3031
3031
|
<span
|
|
3032
3032
|
className={cn(
|
|
3033
3033
|
labelSizeVariants({ size }),
|
|
3034
|
-
"text-
|
|
3034
|
+
"text-semantic-text-primary",
|
|
3035
3035
|
disabled && "opacity-50"
|
|
3036
3036
|
)}
|
|
3037
3037
|
>
|
|
@@ -3106,7 +3106,7 @@ const Table = React.forwardRef<HTMLTableElement, TableProps>(
|
|
|
3106
3106
|
<div
|
|
3107
3107
|
className={cn(
|
|
3108
3108
|
"relative w-full overflow-auto",
|
|
3109
|
-
!withoutBorder && "rounded-lg border border-
|
|
3109
|
+
!withoutBorder && "rounded-lg border border-semantic-border-layout"
|
|
3110
3110
|
)}
|
|
3111
3111
|
>
|
|
3112
3112
|
<table
|
|
@@ -3125,7 +3125,7 @@ const TableHeader = React.forwardRef<
|
|
|
3125
3125
|
>(({ className, ...props }, ref) => (
|
|
3126
3126
|
<thead
|
|
3127
3127
|
ref={ref}
|
|
3128
|
-
className={cn("bg-[
|
|
3128
|
+
className={cn("bg-[var(--color-neutral-50)] [&_tr]:border-b", className)}
|
|
3129
3129
|
{...props}
|
|
3130
3130
|
/>
|
|
3131
3131
|
));
|
|
@@ -3150,7 +3150,7 @@ const TableFooter = React.forwardRef<
|
|
|
3150
3150
|
<tfoot
|
|
3151
3151
|
ref={ref}
|
|
3152
3152
|
className={cn(
|
|
3153
|
-
"border-t bg-[
|
|
3153
|
+
"border-t bg-[var(--color-neutral-50)] font-medium [&>tr]:last:border-b-0",
|
|
3154
3154
|
className
|
|
3155
3155
|
)}
|
|
3156
3156
|
{...props}
|
|
@@ -3168,10 +3168,10 @@ const TableRow = React.forwardRef<HTMLTableRowElement, TableRowProps>(
|
|
|
3168
3168
|
<tr
|
|
3169
3169
|
ref={ref}
|
|
3170
3170
|
className={cn(
|
|
3171
|
-
"border-b border-
|
|
3171
|
+
"border-b border-semantic-border-layout transition-colors",
|
|
3172
3172
|
highlighted
|
|
3173
|
-
? "bg-
|
|
3174
|
-
: "hover:bg-[
|
|
3173
|
+
? "bg-semantic-info-surface"
|
|
3174
|
+
: "hover:bg-[var(--color-neutral-50)]/50 data-[state=selected]:bg-semantic-bg-ui",
|
|
3175
3175
|
className
|
|
3176
3176
|
)}
|
|
3177
3177
|
{...props}
|
|
@@ -3197,8 +3197,8 @@ const TableHead = React.forwardRef<HTMLTableCellElement, TableHeadProps>(
|
|
|
3197
3197
|
<th
|
|
3198
3198
|
ref={ref}
|
|
3199
3199
|
className={cn(
|
|
3200
|
-
"h-12 px-4 text-left align-middle font-medium text-
|
|
3201
|
-
sticky && "sticky left-0 bg-[
|
|
3200
|
+
"h-12 px-4 text-left align-middle font-medium text-semantic-text-muted text-sm [&:has([role=checkbox])]:pr-0",
|
|
3201
|
+
sticky && "sticky left-0 bg-[var(--color-neutral-50)] z-10",
|
|
3202
3202
|
sortDirection && "cursor-pointer select-none",
|
|
3203
3203
|
className
|
|
3204
3204
|
)}
|
|
@@ -3207,12 +3207,12 @@ const TableHead = React.forwardRef<HTMLTableCellElement, TableHeadProps>(
|
|
|
3207
3207
|
<div className="flex items-center gap-1">
|
|
3208
3208
|
{children}
|
|
3209
3209
|
{sortDirection && (
|
|
3210
|
-
<span className="text-[
|
|
3210
|
+
<span className="text-[var(--color-neutral-400)]">
|
|
3211
3211
|
{sortDirection === "asc" ? "\u2191" : "\u2193"}
|
|
3212
3212
|
</span>
|
|
3213
3213
|
)}
|
|
3214
3214
|
{infoTooltip && (
|
|
3215
|
-
<span className="text-[
|
|
3215
|
+
<span className="text-[var(--color-neutral-400)] cursor-help" title={infoTooltip}>
|
|
3216
3216
|
\u24D8
|
|
3217
3217
|
</span>
|
|
3218
3218
|
)}
|
|
@@ -3232,8 +3232,8 @@ const TableCell = React.forwardRef<HTMLTableCellElement, TableCellProps>(
|
|
|
3232
3232
|
<td
|
|
3233
3233
|
ref={ref}
|
|
3234
3234
|
className={cn(
|
|
3235
|
-
"px-4 align-middle text-
|
|
3236
|
-
sticky && "sticky left-0 bg-
|
|
3235
|
+
"px-4 align-middle text-semantic-text-primary [&:has([role=checkbox])]:pr-0",
|
|
3236
|
+
sticky && "sticky left-0 bg-semantic-bg-primary z-10",
|
|
3237
3237
|
className
|
|
3238
3238
|
)}
|
|
3239
3239
|
{...props}
|
|
@@ -3248,7 +3248,7 @@ const TableCaption = React.forwardRef<
|
|
|
3248
3248
|
>(({ className, ...props }, ref) => (
|
|
3249
3249
|
<caption
|
|
3250
3250
|
ref={ref}
|
|
3251
|
-
className={cn("mt-4 text-sm text-
|
|
3251
|
+
className={cn("mt-4 text-sm text-semantic-text-muted", className)}
|
|
3252
3252
|
{...props}
|
|
3253
3253
|
/>
|
|
3254
3254
|
));
|
|
@@ -3271,7 +3271,7 @@ const TableSkeleton = ({ rows = 5, columns = 5 }: TableSkeletonProps) => (
|
|
|
3271
3271
|
{Array.from({ length: columns }).map((_, colIndex) => (
|
|
3272
3272
|
<TableCell key={colIndex}>
|
|
3273
3273
|
<div
|
|
3274
|
-
className="h-4 bg-
|
|
3274
|
+
className="h-4 bg-semantic-bg-grey rounded animate-pulse"
|
|
3275
3275
|
style={{
|
|
3276
3276
|
width: colIndex === 1 ? "80%" : colIndex === 2 ? "30%" : "60%",
|
|
3277
3277
|
}}
|
|
@@ -3296,7 +3296,7 @@ export interface TableEmptyProps {
|
|
|
3296
3296
|
|
|
3297
3297
|
const TableEmpty = ({ colSpan, children }: TableEmptyProps) => (
|
|
3298
3298
|
<TableRow>
|
|
3299
|
-
<TableCell colSpan={colSpan} className="text-center py-8 text-
|
|
3299
|
+
<TableCell colSpan={colSpan} className="text-center py-8 text-semantic-text-muted">
|
|
3300
3300
|
{children || "No data available"}
|
|
3301
3301
|
</TableCell>
|
|
3302
3302
|
</TableRow>
|
|
@@ -3366,14 +3366,14 @@ import { cn } from "@/lib/utils";
|
|
|
3366
3366
|
const tagVariants = cva("inline-flex items-center rounded text-sm", {
|
|
3367
3367
|
variants: {
|
|
3368
3368
|
variant: {
|
|
3369
|
-
default: "bg-
|
|
3370
|
-
primary: "bg-
|
|
3371
|
-
accent: "bg-
|
|
3372
|
-
secondary: "bg-
|
|
3373
|
-
success: "bg-
|
|
3374
|
-
warning: "bg-
|
|
3375
|
-
error: "bg-
|
|
3376
|
-
destructive: "bg-
|
|
3369
|
+
default: "bg-semantic-bg-ui text-semantic-text-primary",
|
|
3370
|
+
primary: "bg-semantic-bg-ui text-semantic-text-primary",
|
|
3371
|
+
accent: "bg-semantic-primary-surface text-semantic-text-secondary",
|
|
3372
|
+
secondary: "bg-semantic-bg-grey text-[var(--color-neutral-700)]",
|
|
3373
|
+
success: "bg-semantic-success-surface text-semantic-success-primary",
|
|
3374
|
+
warning: "bg-semantic-warning-surface text-semantic-warning-primary",
|
|
3375
|
+
error: "bg-semantic-error-surface text-semantic-error-primary",
|
|
3376
|
+
destructive: "bg-semantic-error-surface text-semantic-error-primary",
|
|
3377
3377
|
},
|
|
3378
3378
|
size: {
|
|
3379
3379
|
default: "px-2 py-1",
|
|
@@ -3500,17 +3500,17 @@ import { cn } from "@/lib/utils";
|
|
|
3500
3500
|
* TextField container variants for when icons/prefix/suffix are present
|
|
3501
3501
|
*/
|
|
3502
3502
|
const textFieldContainerVariants = cva(
|
|
3503
|
-
"relative flex items-center rounded bg-
|
|
3503
|
+
"relative flex items-center rounded bg-semantic-bg-primary transition-all",
|
|
3504
3504
|
{
|
|
3505
3505
|
variants: {
|
|
3506
3506
|
state: {
|
|
3507
3507
|
default:
|
|
3508
|
-
"border border-
|
|
3508
|
+
"border border-semantic-border-input focus-within:border-semantic-border-input-focus/50 focus-within:shadow-[0_0_0_1px_rgba(43,188,202,0.15)]",
|
|
3509
3509
|
error:
|
|
3510
|
-
"border border-
|
|
3510
|
+
"border border-semantic-error-primary/40 focus-within:border-semantic-error-primary/60 focus-within:shadow-[0_0_0_1px_rgba(240,68,56,0.1)]",
|
|
3511
3511
|
},
|
|
3512
3512
|
disabled: {
|
|
3513
|
-
true: "cursor-not-allowed opacity-50 bg-[
|
|
3513
|
+
true: "cursor-not-allowed opacity-50 bg-[var(--color-neutral-50)]",
|
|
3514
3514
|
false: "",
|
|
3515
3515
|
},
|
|
3516
3516
|
},
|
|
@@ -3525,14 +3525,14 @@ const textFieldContainerVariants = cva(
|
|
|
3525
3525
|
* TextField input variants (standalone without container)
|
|
3526
3526
|
*/
|
|
3527
3527
|
const textFieldInputVariants = cva(
|
|
3528
|
-
"h-10 w-full rounded bg-
|
|
3528
|
+
"h-10 w-full rounded bg-semantic-bg-primary px-4 py-2.5 text-sm text-semantic-text-primary transition-all file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-semantic-text-primary placeholder:text-semantic-text-placeholder disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-[var(--color-neutral-50)]",
|
|
3529
3529
|
{
|
|
3530
3530
|
variants: {
|
|
3531
3531
|
state: {
|
|
3532
3532
|
default:
|
|
3533
|
-
"border border-
|
|
3533
|
+
"border border-semantic-border-input focus:outline-none focus:border-semantic-border-input-focus/50 focus:shadow-[0_0_0_1px_rgba(43,188,202,0.15)]",
|
|
3534
3534
|
error:
|
|
3535
|
-
"border border-
|
|
3535
|
+
"border border-semantic-error-primary/40 focus:outline-none focus:border-semantic-error-primary/60 focus:shadow-[0_0_0_1px_rgba(240,68,56,0.1)]",
|
|
3536
3536
|
},
|
|
3537
3537
|
},
|
|
3538
3538
|
defaultVariants: {
|
|
@@ -3653,7 +3653,7 @@ const TextField = React.forwardRef<HTMLInputElement, TextFieldProps>(
|
|
|
3653
3653
|
id={inputId}
|
|
3654
3654
|
className={cn(
|
|
3655
3655
|
hasAddons
|
|
3656
|
-
? "flex-1 bg-transparent border-0 outline-none focus:ring-0 px-0 h-full text-sm text-
|
|
3656
|
+
? "flex-1 bg-transparent border-0 outline-none focus:ring-0 px-0 h-full text-sm text-semantic-text-primary placeholder:text-semantic-text-placeholder disabled:cursor-not-allowed"
|
|
3657
3657
|
: textFieldInputVariants({ state: derivedState, className })
|
|
3658
3658
|
)}
|
|
3659
3659
|
disabled={disabled || loading}
|
|
@@ -3673,10 +3673,10 @@ const TextField = React.forwardRef<HTMLInputElement, TextFieldProps>(
|
|
|
3673
3673
|
{label && (
|
|
3674
3674
|
<label
|
|
3675
3675
|
htmlFor={inputId}
|
|
3676
|
-
className={cn("text-sm font-medium text-
|
|
3676
|
+
className={cn("text-sm font-medium text-semantic-text-primary", labelClassName)}
|
|
3677
3677
|
>
|
|
3678
3678
|
{label}
|
|
3679
|
-
{required && <span className="text-
|
|
3679
|
+
{required && <span className="text-semantic-error-primary ml-0.5">*</span>}
|
|
3680
3680
|
</label>
|
|
3681
3681
|
)}
|
|
3682
3682
|
|
|
@@ -3693,26 +3693,26 @@ const TextField = React.forwardRef<HTMLInputElement, TextFieldProps>(
|
|
|
3693
3693
|
)}
|
|
3694
3694
|
>
|
|
3695
3695
|
{prefix && (
|
|
3696
|
-
<span className="text-sm text-
|
|
3696
|
+
<span className="text-sm text-semantic-text-muted mr-2 select-none">
|
|
3697
3697
|
{prefix}
|
|
3698
3698
|
</span>
|
|
3699
3699
|
)}
|
|
3700
3700
|
{leftIcon && (
|
|
3701
|
-
<span className="mr-2 text-
|
|
3701
|
+
<span className="mr-2 text-semantic-text-muted [&_svg]:size-4 flex-shrink-0">
|
|
3702
3702
|
{leftIcon}
|
|
3703
3703
|
</span>
|
|
3704
3704
|
)}
|
|
3705
3705
|
{inputElement}
|
|
3706
3706
|
{loading && (
|
|
3707
|
-
<Loader2 className="animate-spin size-4 text-
|
|
3707
|
+
<Loader2 className="animate-spin size-4 text-semantic-text-muted ml-2 flex-shrink-0" />
|
|
3708
3708
|
)}
|
|
3709
3709
|
{!loading && rightIcon && (
|
|
3710
|
-
<span className="ml-2 text-
|
|
3710
|
+
<span className="ml-2 text-semantic-text-muted [&_svg]:size-4 flex-shrink-0">
|
|
3711
3711
|
{rightIcon}
|
|
3712
3712
|
</span>
|
|
3713
3713
|
)}
|
|
3714
3714
|
{suffix && (
|
|
3715
|
-
<span className="text-sm text-
|
|
3715
|
+
<span className="text-sm text-semantic-text-muted ml-2 select-none">
|
|
3716
3716
|
{suffix}
|
|
3717
3717
|
</span>
|
|
3718
3718
|
)}
|
|
@@ -3725,11 +3725,11 @@ const TextField = React.forwardRef<HTMLInputElement, TextFieldProps>(
|
|
|
3725
3725
|
{(error || helperText || (showCount && maxLength)) && (
|
|
3726
3726
|
<div className="flex justify-between items-start gap-2">
|
|
3727
3727
|
{error ? (
|
|
3728
|
-
<span id={errorId} className="text-xs text-
|
|
3728
|
+
<span id={errorId} className="text-xs text-semantic-error-primary">
|
|
3729
3729
|
{error}
|
|
3730
3730
|
</span>
|
|
3731
3731
|
) : helperText ? (
|
|
3732
|
-
<span id={helperId} className="text-xs text-
|
|
3732
|
+
<span id={helperId} className="text-xs text-semantic-text-muted">
|
|
3733
3733
|
{helperText}
|
|
3734
3734
|
</span>
|
|
3735
3735
|
) : (
|
|
@@ -3739,7 +3739,7 @@ const TextField = React.forwardRef<HTMLInputElement, TextFieldProps>(
|
|
|
3739
3739
|
<span
|
|
3740
3740
|
className={cn(
|
|
3741
3741
|
"text-xs",
|
|
3742
|
-
charCount > maxLength ? "text-
|
|
3742
|
+
charCount > maxLength ? "text-semantic-error-primary" : "text-semantic-text-muted"
|
|
3743
3743
|
)}
|
|
3744
3744
|
>
|
|
3745
3745
|
{charCount}/{maxLength}
|
|
@@ -3784,11 +3784,11 @@ const toastVariants = cva(
|
|
|
3784
3784
|
{
|
|
3785
3785
|
variants: {
|
|
3786
3786
|
variant: {
|
|
3787
|
-
default: "border-
|
|
3788
|
-
success: "border-
|
|
3789
|
-
error: "border-
|
|
3790
|
-
warning: "border-
|
|
3791
|
-
info: "border-
|
|
3787
|
+
default: "border-semantic-border-layout bg-semantic-bg-primary text-semantic-text-primary",
|
|
3788
|
+
success: "border-semantic-success-border bg-semantic-success-surface text-semantic-success-hover",
|
|
3789
|
+
error: "border-semantic-error-border bg-semantic-error-surface text-semantic-error-hover",
|
|
3790
|
+
warning: "border-semantic-warning-border bg-semantic-warning-surface text-semantic-warning-hover",
|
|
3791
|
+
info: "border-semantic-info-border bg-semantic-info-surface text-semantic-info-hover",
|
|
3792
3792
|
},
|
|
3793
3793
|
},
|
|
3794
3794
|
defaultVariants: {
|
|
@@ -3819,11 +3819,11 @@ const ToastAction = React.forwardRef<
|
|
|
3819
3819
|
<ToastPrimitives.Action
|
|
3820
3820
|
ref={ref}
|
|
3821
3821
|
className={cn(
|
|
3822
|
-
"inline-flex h-8 shrink-0 items-center justify-center rounded border border-
|
|
3823
|
-
"group-[.success]:border-
|
|
3824
|
-
"group-[.error]:border-
|
|
3825
|
-
"group-[.warning]:border-
|
|
3826
|
-
"group-[.info]:border-
|
|
3822
|
+
"inline-flex h-8 shrink-0 items-center justify-center rounded border border-semantic-border-layout bg-transparent px-3 text-sm font-medium transition-colors hover:bg-semantic-bg-ui focus:outline-none focus:ring-2 focus:ring-semantic-info-primary focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
|
|
3823
|
+
"group-[.success]:border-semantic-success-primary/30 group-[.success]:hover:border-semantic-success-primary/50 group-[.success]:hover:bg-semantic-success-primary/10",
|
|
3824
|
+
"group-[.error]:border-semantic-error-primary/30 group-[.error]:hover:border-semantic-error-primary/50 group-[.error]:hover:bg-semantic-error-primary/10",
|
|
3825
|
+
"group-[.warning]:border-semantic-warning-primary/30 group-[.warning]:hover:border-semantic-warning-primary/50 group-[.warning]:hover:bg-semantic-warning-primary/10",
|
|
3826
|
+
"group-[.info]:border-semantic-info-primary/30 group-[.info]:hover:border-semantic-info-primary/50 group-[.info]:hover:bg-semantic-info-primary/10",
|
|
3827
3827
|
className
|
|
3828
3828
|
)}
|
|
3829
3829
|
{...props}
|
|
@@ -3838,11 +3838,11 @@ const ToastClose = React.forwardRef<
|
|
|
3838
3838
|
<ToastPrimitives.Close
|
|
3839
3839
|
ref={ref}
|
|
3840
3840
|
className={cn(
|
|
3841
|
-
"absolute right-2 top-2 rounded-md p-1 text-
|
|
3842
|
-
"group-[.success]:text-
|
|
3843
|
-
"group-[.error]:text-
|
|
3844
|
-
"group-[.warning]:text-
|
|
3845
|
-
"group-[.info]:text-
|
|
3841
|
+
"absolute right-2 top-2 rounded-md p-1 text-semantic-text-muted opacity-0 transition-opacity hover:text-semantic-text-primary focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100",
|
|
3842
|
+
"group-[.success]:text-semantic-success-hover group-[.success]:hover:text-semantic-success-hover",
|
|
3843
|
+
"group-[.error]:text-semantic-error-hover group-[.error]:hover:text-semantic-error-hover",
|
|
3844
|
+
"group-[.warning]:text-semantic-warning-hover group-[.warning]:hover:text-semantic-warning-hover",
|
|
3845
|
+
"group-[.info]:text-semantic-info-hover group-[.info]:hover:text-semantic-info-hover",
|
|
3846
3846
|
className
|
|
3847
3847
|
)}
|
|
3848
3848
|
toast-close=""
|
|
@@ -4136,10 +4136,10 @@ function Toaster() {
|
|
|
4136
4136
|
<Icon
|
|
4137
4137
|
className={cn(
|
|
4138
4138
|
"h-5 w-5 shrink-0",
|
|
4139
|
-
variant === "success" && "text-
|
|
4140
|
-
variant === "error" && "text-
|
|
4141
|
-
variant === "warning" && "text-
|
|
4142
|
-
variant === "info" && "text-
|
|
4139
|
+
variant === "success" && "text-semantic-success-primary",
|
|
4140
|
+
variant === "error" && "text-semantic-error-primary",
|
|
4141
|
+
variant === "warning" && "text-semantic-warning-primary",
|
|
4142
|
+
variant === "info" && "text-semantic-info-primary"
|
|
4143
4143
|
)}
|
|
4144
4144
|
/>
|
|
4145
4145
|
)}
|
|
@@ -4243,7 +4243,7 @@ const TooltipContent = React.forwardRef<
|
|
|
4243
4243
|
ref={ref}
|
|
4244
4244
|
sideOffset={sideOffset}
|
|
4245
4245
|
className={cn(
|
|
4246
|
-
"z-50 overflow-hidden rounded-md bg-
|
|
4246
|
+
"z-50 overflow-hidden rounded-md bg-semantic-primary px-3 py-1.5 text-xs text-semantic-text-inverted shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
|
4247
4247
|
className
|
|
4248
4248
|
)}
|
|
4249
4249
|
{...props}
|
|
@@ -4258,7 +4258,7 @@ const TooltipArrow = React.forwardRef<
|
|
|
4258
4258
|
>(({ className, ...props }, ref) => (
|
|
4259
4259
|
<TooltipPrimitive.Arrow
|
|
4260
4260
|
ref={ref}
|
|
4261
|
-
className={cn("fill-
|
|
4261
|
+
className={cn("fill-semantic-primary", className)}
|
|
4262
4262
|
{...props}
|
|
4263
4263
|
/>
|
|
4264
4264
|
));
|
|
@@ -4344,14 +4344,14 @@ const mapClassName: { [key in Key]: string } = {
|
|
|
4344
4344
|
* Maps color variants to Tailwind text color classes
|
|
4345
4345
|
*/
|
|
4346
4346
|
const mapColorClassName: { [key in Color]: string } = {
|
|
4347
|
-
primary: "text-
|
|
4348
|
-
secondary: "text-
|
|
4349
|
-
muted: "text-
|
|
4350
|
-
placeholder: "text-
|
|
4351
|
-
link: "text-
|
|
4352
|
-
inverted: "text-
|
|
4353
|
-
error: "text-
|
|
4354
|
-
success: "text-
|
|
4347
|
+
primary: "text-semantic-text-primary",
|
|
4348
|
+
secondary: "text-semantic-text-secondary",
|
|
4349
|
+
muted: "text-semantic-text-muted",
|
|
4350
|
+
placeholder: "text-semantic-text-placeholder",
|
|
4351
|
+
link: "text-semantic-text-link",
|
|
4352
|
+
inverted: "text-semantic-text-inverted",
|
|
4353
|
+
error: "text-semantic-error-primary",
|
|
4354
|
+
success: "text-semantic-success-primary",
|
|
4355
4355
|
};
|
|
4356
4356
|
|
|
4357
4357
|
/**
|
package/package.json
CHANGED