myoperator-mcp 0.2.124 → 0.2.126
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 +317 -387
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -139,7 +139,7 @@ export interface AccordionProps
|
|
|
139
139
|
onValueChange?: (value: string[]) => void;
|
|
140
140
|
}
|
|
141
141
|
|
|
142
|
-
const Accordion = React.forwardRef(
|
|
142
|
+
const Accordion = React.forwardRef<HTMLDivElement, AccordionProps>(
|
|
143
143
|
(
|
|
144
144
|
{
|
|
145
145
|
className,
|
|
@@ -150,8 +150,8 @@ const Accordion = React.forwardRef(
|
|
|
150
150
|
onValueChange,
|
|
151
151
|
children,
|
|
152
152
|
...props
|
|
153
|
-
}
|
|
154
|
-
ref
|
|
153
|
+
},
|
|
154
|
+
ref
|
|
155
155
|
) => {
|
|
156
156
|
const [internalValue, setInternalValue] =
|
|
157
157
|
React.useState<string[]>(defaultValue);
|
|
@@ -207,8 +207,8 @@ export interface AccordionItemProps
|
|
|
207
207
|
disabled?: boolean;
|
|
208
208
|
}
|
|
209
209
|
|
|
210
|
-
const AccordionItem = React.forwardRef(
|
|
211
|
-
({ className, value, disabled, children, ...props }
|
|
210
|
+
const AccordionItem = React.forwardRef<HTMLDivElement, AccordionItemProps>(
|
|
211
|
+
({ className, value, disabled, children, ...props }, ref) => {
|
|
212
212
|
const { value: openValues, variant } = useAccordionContext();
|
|
213
213
|
const isOpen = openValues.includes(value);
|
|
214
214
|
|
|
@@ -248,7 +248,10 @@ export interface AccordionTriggerProps
|
|
|
248
248
|
showChevron?: boolean;
|
|
249
249
|
}
|
|
250
250
|
|
|
251
|
-
const AccordionTrigger = React.forwardRef
|
|
251
|
+
const AccordionTrigger = React.forwardRef<
|
|
252
|
+
HTMLButtonElement,
|
|
253
|
+
AccordionTriggerProps
|
|
254
|
+
>(({ className, showChevron = true, children, ...props }, ref) => {
|
|
252
255
|
const {
|
|
253
256
|
type,
|
|
254
257
|
value: openValues,
|
|
@@ -307,7 +310,10 @@ export interface AccordionContentProps
|
|
|
307
310
|
React.HTMLAttributes<HTMLDivElement>,
|
|
308
311
|
VariantProps<typeof accordionContentVariants> {}
|
|
309
312
|
|
|
310
|
-
const AccordionContent = React.forwardRef
|
|
313
|
+
const AccordionContent = React.forwardRef<
|
|
314
|
+
HTMLDivElement,
|
|
315
|
+
AccordionContentProps
|
|
316
|
+
>(({ className, children, ...props }, ref) => {
|
|
311
317
|
const { variant } = useAccordionContext();
|
|
312
318
|
const { isOpen } = useAccordionItemContext();
|
|
313
319
|
const contentRef = React.useRef<HTMLDivElement>(null);
|
|
@@ -442,7 +448,7 @@ export interface AlertProps
|
|
|
442
448
|
defaultOpen?: boolean;
|
|
443
449
|
}
|
|
444
450
|
|
|
445
|
-
const Alert = React.forwardRef(
|
|
451
|
+
const Alert = React.forwardRef<HTMLDivElement, AlertProps>(
|
|
446
452
|
(
|
|
447
453
|
{
|
|
448
454
|
className,
|
|
@@ -457,8 +463,8 @@ const Alert = React.forwardRef(
|
|
|
457
463
|
defaultOpen = true,
|
|
458
464
|
children,
|
|
459
465
|
...props
|
|
460
|
-
}
|
|
461
|
-
ref
|
|
466
|
+
},
|
|
467
|
+
ref
|
|
462
468
|
) => {
|
|
463
469
|
const [internalOpen, setInternalOpen] = React.useState(defaultOpen);
|
|
464
470
|
const isControlled = controlledOpen !== undefined;
|
|
@@ -530,19 +536,27 @@ Alert.displayName = "Alert";
|
|
|
530
536
|
/**
|
|
531
537
|
* Alert title component for the heading text.
|
|
532
538
|
*/
|
|
533
|
-
const AlertTitle = React.forwardRef
|
|
539
|
+
const AlertTitle = React.forwardRef<
|
|
540
|
+
HTMLHeadingElement,
|
|
541
|
+
React.HTMLAttributes<HTMLHeadingElement>
|
|
542
|
+
>(({ className, children, ...props }, ref) => (
|
|
534
543
|
<h5
|
|
535
544
|
ref={ref}
|
|
536
545
|
className={cn("font-semibold leading-tight tracking-tight", className)}
|
|
537
546
|
{...props}
|
|
538
|
-
|
|
547
|
+
>
|
|
548
|
+
{children}
|
|
549
|
+
</h5>
|
|
539
550
|
));
|
|
540
551
|
AlertTitle.displayName = "AlertTitle";
|
|
541
552
|
|
|
542
553
|
/**
|
|
543
554
|
* Alert description component for the body text.
|
|
544
555
|
*/
|
|
545
|
-
const AlertDescription = React.forwardRef
|
|
556
|
+
const AlertDescription = React.forwardRef<
|
|
557
|
+
HTMLParagraphElement,
|
|
558
|
+
React.HTMLAttributes<HTMLParagraphElement>
|
|
559
|
+
>(({ className, ...props }, ref) => (
|
|
546
560
|
<p ref={ref} className={cn("m-0 mt-1 text-sm", className)} {...props} />
|
|
547
561
|
));
|
|
548
562
|
AlertDescription.displayName = "AlertDescription";
|
|
@@ -634,7 +648,7 @@ export interface AvatarProps
|
|
|
634
648
|
* <Avatar initials="AS" size="xs" />
|
|
635
649
|
* \`\`\`
|
|
636
650
|
*/
|
|
637
|
-
const Avatar = React.forwardRef(
|
|
651
|
+
const Avatar = React.forwardRef<HTMLDivElement, AvatarProps>(
|
|
638
652
|
(
|
|
639
653
|
{
|
|
640
654
|
className,
|
|
@@ -647,8 +661,8 @@ const Avatar = React.forwardRef(
|
|
|
647
661
|
status,
|
|
648
662
|
children,
|
|
649
663
|
...props
|
|
650
|
-
}
|
|
651
|
-
ref
|
|
664
|
+
},
|
|
665
|
+
ref
|
|
652
666
|
) => {
|
|
653
667
|
const resolvedSize = size ?? "md";
|
|
654
668
|
const displayInitials = initials ?? (name ? getInitials(name) : undefined);
|
|
@@ -760,7 +774,7 @@ export interface BadgeProps
|
|
|
760
774
|
asChild?: boolean;
|
|
761
775
|
}
|
|
762
776
|
|
|
763
|
-
const Badge = React.forwardRef(
|
|
777
|
+
const Badge = React.forwardRef<HTMLDivElement, BadgeProps>(
|
|
764
778
|
(
|
|
765
779
|
{
|
|
766
780
|
className,
|
|
@@ -771,8 +785,8 @@ const Badge = React.forwardRef(
|
|
|
771
785
|
asChild = false,
|
|
772
786
|
children,
|
|
773
787
|
...props
|
|
774
|
-
}
|
|
775
|
-
ref
|
|
788
|
+
},
|
|
789
|
+
ref
|
|
776
790
|
) => {
|
|
777
791
|
const Comp = asChild ? Slot : "div";
|
|
778
792
|
|
|
@@ -828,12 +842,12 @@ const buttonVariants = cva(
|
|
|
828
842
|
success:
|
|
829
843
|
"bg-semantic-success-primary text-semantic-text-inverted hover:bg-semantic-success-hover",
|
|
830
844
|
outline:
|
|
831
|
-
"border border-
|
|
845
|
+
"border border-semantic-border-layout bg-semantic-bg-primary text-semantic-text-secondary hover:bg-semantic-primary-surface",
|
|
832
846
|
secondary:
|
|
833
847
|
"bg-semantic-primary-surface text-semantic-text-secondary hover:bg-semantic-bg-hover",
|
|
834
848
|
ghost:
|
|
835
849
|
"text-semantic-text-muted hover:bg-semantic-bg-ui hover:text-semantic-text-primary",
|
|
836
|
-
link: "text-semantic-text-
|
|
850
|
+
link: "text-semantic-text-secondary underline-offset-4 hover:underline",
|
|
837
851
|
dashed:
|
|
838
852
|
"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)]",
|
|
839
853
|
},
|
|
@@ -879,7 +893,7 @@ export interface ButtonProps
|
|
|
879
893
|
loadingText?: string;
|
|
880
894
|
}
|
|
881
895
|
|
|
882
|
-
const Button = React.forwardRef(
|
|
896
|
+
const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
|
|
883
897
|
(
|
|
884
898
|
{
|
|
885
899
|
className,
|
|
@@ -893,8 +907,8 @@ const Button = React.forwardRef(
|
|
|
893
907
|
children,
|
|
894
908
|
disabled,
|
|
895
909
|
...props
|
|
896
|
-
}
|
|
897
|
-
ref
|
|
910
|
+
},
|
|
911
|
+
ref
|
|
898
912
|
) => {
|
|
899
913
|
const Comp = asChild ? Slot : "button";
|
|
900
914
|
|
|
@@ -1016,7 +1030,10 @@ export interface CheckboxProps
|
|
|
1016
1030
|
separateLabel?: boolean;
|
|
1017
1031
|
}
|
|
1018
1032
|
|
|
1019
|
-
const Checkbox = React.forwardRef
|
|
1033
|
+
const Checkbox = React.forwardRef<
|
|
1034
|
+
React.ElementRef<typeof CheckboxPrimitive.Root>,
|
|
1035
|
+
CheckboxProps
|
|
1036
|
+
>(
|
|
1020
1037
|
(
|
|
1021
1038
|
{
|
|
1022
1039
|
className,
|
|
@@ -1029,8 +1046,8 @@ const Checkbox = React.forwardRef(
|
|
|
1029
1046
|
id,
|
|
1030
1047
|
disabled,
|
|
1031
1048
|
...props
|
|
1032
|
-
}
|
|
1033
|
-
ref
|
|
1049
|
+
},
|
|
1050
|
+
ref
|
|
1034
1051
|
) => {
|
|
1035
1052
|
const checkbox = (
|
|
1036
1053
|
<CheckboxPrimitive.Root
|
|
@@ -1204,7 +1221,10 @@ export interface ConfirmationModalProps {
|
|
|
1204
1221
|
* />
|
|
1205
1222
|
* \`\`\`
|
|
1206
1223
|
*/
|
|
1207
|
-
const ConfirmationModal = React.forwardRef
|
|
1224
|
+
const ConfirmationModal = React.forwardRef<
|
|
1225
|
+
HTMLDivElement,
|
|
1226
|
+
ConfirmationModalProps
|
|
1227
|
+
>(
|
|
1208
1228
|
(
|
|
1209
1229
|
{
|
|
1210
1230
|
open,
|
|
@@ -1219,8 +1239,8 @@ const ConfirmationModal = React.forwardRef(
|
|
|
1219
1239
|
cancelButtonText = "Cancel",
|
|
1220
1240
|
trigger,
|
|
1221
1241
|
className,
|
|
1222
|
-
}
|
|
1223
|
-
ref
|
|
1242
|
+
},
|
|
1243
|
+
ref
|
|
1224
1244
|
) => {
|
|
1225
1245
|
const handleConfirm = () => {
|
|
1226
1246
|
onConfirm?.();
|
|
@@ -1299,7 +1319,7 @@ export interface ContactListItemProps
|
|
|
1299
1319
|
* />
|
|
1300
1320
|
* \`\`\`
|
|
1301
1321
|
*/
|
|
1302
|
-
const ContactListItem = React.forwardRef(
|
|
1322
|
+
const ContactListItem = React.forwardRef<HTMLDivElement, ContactListItemProps>(
|
|
1303
1323
|
(
|
|
1304
1324
|
{
|
|
1305
1325
|
name,
|
|
@@ -1310,8 +1330,8 @@ const ContactListItem = React.forwardRef(
|
|
|
1310
1330
|
onClick,
|
|
1311
1331
|
className,
|
|
1312
1332
|
...props
|
|
1313
|
-
}
|
|
1314
|
-
ref
|
|
1333
|
+
},
|
|
1334
|
+
ref
|
|
1315
1335
|
) => {
|
|
1316
1336
|
return (
|
|
1317
1337
|
<div
|
|
@@ -1418,7 +1438,10 @@ export interface CreatableMultiSelectProps
|
|
|
1418
1438
|
maxLengthPerItem?: number
|
|
1419
1439
|
}
|
|
1420
1440
|
|
|
1421
|
-
const CreatableMultiSelect = React.forwardRef
|
|
1441
|
+
const CreatableMultiSelect = React.forwardRef<
|
|
1442
|
+
HTMLDivElement,
|
|
1443
|
+
CreatableMultiSelectProps
|
|
1444
|
+
>(
|
|
1422
1445
|
(
|
|
1423
1446
|
{
|
|
1424
1447
|
className,
|
|
@@ -1433,13 +1456,14 @@ const CreatableMultiSelect = React.forwardRef(
|
|
|
1433
1456
|
maxItems,
|
|
1434
1457
|
maxLengthPerItem,
|
|
1435
1458
|
...props
|
|
1436
|
-
}
|
|
1437
|
-
ref
|
|
1459
|
+
},
|
|
1460
|
+
ref
|
|
1438
1461
|
) => {
|
|
1439
1462
|
const [isOpen, setIsOpen] = React.useState(false)
|
|
1440
1463
|
const [inputValue, setInputValue] = React.useState("")
|
|
1441
1464
|
const containerRef = React.useRef<HTMLDivElement>(null)
|
|
1442
1465
|
const inputRef = React.useRef<HTMLInputElement>(null)
|
|
1466
|
+
const listboxId = React.useId()
|
|
1443
1467
|
|
|
1444
1468
|
React.useImperativeHandle(ref, () => containerRef.current!)
|
|
1445
1469
|
|
|
@@ -1577,6 +1601,7 @@ const CreatableMultiSelect = React.forwardRef(
|
|
|
1577
1601
|
className="flex-1 min-w-[100px] text-base bg-transparent outline-none text-semantic-text-primary placeholder:text-semantic-text-muted"
|
|
1578
1602
|
role="combobox"
|
|
1579
1603
|
aria-expanded={isOpen}
|
|
1604
|
+
aria-controls={listboxId}
|
|
1580
1605
|
aria-haspopup="listbox"
|
|
1581
1606
|
/>
|
|
1582
1607
|
|
|
@@ -1590,7 +1615,7 @@ const CreatableMultiSelect = React.forwardRef(
|
|
|
1590
1615
|
|
|
1591
1616
|
{/* Dropdown panel */}
|
|
1592
1617
|
{isOpen && (
|
|
1593
|
-
<div className="absolute z-[9999] top-full mt-1 w-full bg-semantic-bg-primary border border-semantic-border-layout rounded shadow-md animate-in fade-in-0 zoom-in-95 slide-in-from-top-2 duration-200">
|
|
1618
|
+
<div id={listboxId} role="listbox" className="absolute z-[9999] top-full mt-1 w-full bg-semantic-bg-primary border border-semantic-border-layout rounded shadow-md animate-in fade-in-0 zoom-in-95 slide-in-from-top-2 duration-200">
|
|
1594
1619
|
{/* Creatable hint \u2014 Enter key */}
|
|
1595
1620
|
<div className="flex items-center justify-between px-4 py-2 border-b border-semantic-border-layout">
|
|
1596
1621
|
<span className="text-sm text-semantic-text-muted">
|
|
@@ -1708,7 +1733,7 @@ export interface CreatableSelectProps
|
|
|
1708
1733
|
maxLength?: number
|
|
1709
1734
|
}
|
|
1710
1735
|
|
|
1711
|
-
const CreatableSelect = React.forwardRef(
|
|
1736
|
+
const CreatableSelect = React.forwardRef<HTMLDivElement, CreatableSelectProps>(
|
|
1712
1737
|
(
|
|
1713
1738
|
{
|
|
1714
1739
|
className,
|
|
@@ -1721,8 +1746,8 @@ const CreatableSelect = React.forwardRef(
|
|
|
1721
1746
|
disabled = false,
|
|
1722
1747
|
maxLength,
|
|
1723
1748
|
...props
|
|
1724
|
-
}
|
|
1725
|
-
ref
|
|
1749
|
+
},
|
|
1750
|
+
ref
|
|
1726
1751
|
) => {
|
|
1727
1752
|
const [open, setOpen] = React.useState(false)
|
|
1728
1753
|
const [search, setSearch] = React.useState("")
|
|
@@ -1730,6 +1755,7 @@ const CreatableSelect = React.forwardRef(
|
|
|
1730
1755
|
const containerRef = React.useRef<HTMLDivElement>(null)
|
|
1731
1756
|
const inputRef = React.useRef<HTMLInputElement>(null)
|
|
1732
1757
|
const listRef = React.useRef<HTMLDivElement>(null)
|
|
1758
|
+
const listboxId = React.useId()
|
|
1733
1759
|
|
|
1734
1760
|
// Merge forwarded ref with internal ref
|
|
1735
1761
|
React.useImperativeHandle(ref, () => containerRef.current!)
|
|
@@ -1872,6 +1898,7 @@ const CreatableSelect = React.forwardRef(
|
|
|
1872
1898
|
placeholder={selectedLabel || placeholder}
|
|
1873
1899
|
aria-expanded="true"
|
|
1874
1900
|
aria-haspopup="listbox"
|
|
1901
|
+
aria-controls={listboxId}
|
|
1875
1902
|
role="combobox"
|
|
1876
1903
|
aria-autocomplete="list"
|
|
1877
1904
|
/>
|
|
@@ -1888,6 +1915,7 @@ const CreatableSelect = React.forwardRef(
|
|
|
1888
1915
|
)}
|
|
1889
1916
|
aria-haspopup="listbox"
|
|
1890
1917
|
aria-expanded="false"
|
|
1918
|
+
aria-controls={listboxId}
|
|
1891
1919
|
>
|
|
1892
1920
|
<span
|
|
1893
1921
|
className={cn(
|
|
@@ -1917,6 +1945,7 @@ const CreatableSelect = React.forwardRef(
|
|
|
1917
1945
|
{/* Options list */}
|
|
1918
1946
|
<div
|
|
1919
1947
|
ref={listRef}
|
|
1948
|
+
id={listboxId}
|
|
1920
1949
|
role="listbox"
|
|
1921
1950
|
className="max-h-60 overflow-y-auto p-1"
|
|
1922
1951
|
>
|
|
@@ -1999,8 +2028,8 @@ export interface DateDividerProps
|
|
|
1999
2028
|
children: React.ReactNode;
|
|
2000
2029
|
}
|
|
2001
2030
|
|
|
2002
|
-
const DateDivider = React.forwardRef(
|
|
2003
|
-
({ className, children, ...props }
|
|
2031
|
+
const DateDivider = React.forwardRef<HTMLDivElement, DateDividerProps>(
|
|
2032
|
+
({ className, children, ...props }, ref) => (
|
|
2004
2033
|
<div
|
|
2005
2034
|
ref={ref}
|
|
2006
2035
|
className={cn("flex items-center gap-4 my-4", className)}
|
|
@@ -2086,7 +2115,10 @@ export interface DeleteConfirmationModalProps {
|
|
|
2086
2115
|
* />
|
|
2087
2116
|
* \`\`\`
|
|
2088
2117
|
*/
|
|
2089
|
-
const DeleteConfirmationModal = React.forwardRef
|
|
2118
|
+
const DeleteConfirmationModal = React.forwardRef<
|
|
2119
|
+
HTMLDivElement,
|
|
2120
|
+
DeleteConfirmationModalProps
|
|
2121
|
+
>(
|
|
2090
2122
|
(
|
|
2091
2123
|
{
|
|
2092
2124
|
open,
|
|
@@ -2102,8 +2134,8 @@ const DeleteConfirmationModal = React.forwardRef(
|
|
|
2102
2134
|
cancelButtonText = "Cancel",
|
|
2103
2135
|
trigger,
|
|
2104
2136
|
className,
|
|
2105
|
-
}
|
|
2106
|
-
ref
|
|
2137
|
+
},
|
|
2138
|
+
ref
|
|
2107
2139
|
) => {
|
|
2108
2140
|
const [inputValue, setInputValue] = React.useState("");
|
|
2109
2141
|
const isConfirmEnabled = inputValue === confirmText;
|
|
@@ -2199,7 +2231,10 @@ const DialogPortal = DialogPrimitive.Portal;
|
|
|
2199
2231
|
|
|
2200
2232
|
const DialogClose = DialogPrimitive.Close;
|
|
2201
2233
|
|
|
2202
|
-
const DialogOverlay = React.forwardRef
|
|
2234
|
+
const DialogOverlay = React.forwardRef<
|
|
2235
|
+
React.ElementRef<typeof DialogPrimitive.Overlay>,
|
|
2236
|
+
React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>
|
|
2237
|
+
>(({ className, ...props }, ref) => (
|
|
2203
2238
|
<DialogPrimitive.Overlay
|
|
2204
2239
|
ref={ref}
|
|
2205
2240
|
className={cn(
|
|
@@ -2257,7 +2292,10 @@ const hasDialogDescription = (children: React.ReactNode): boolean => {
|
|
|
2257
2292
|
return found;
|
|
2258
2293
|
};
|
|
2259
2294
|
|
|
2260
|
-
const DialogContent = React.forwardRef
|
|
2295
|
+
const DialogContent = React.forwardRef<
|
|
2296
|
+
React.ElementRef<typeof DialogPrimitive.Content>,
|
|
2297
|
+
DialogContentProps
|
|
2298
|
+
>(({ className, children, size, hideCloseButton = false, ...props }, ref) => {
|
|
2261
2299
|
const hasDescription = hasDialogDescription(children);
|
|
2262
2300
|
|
|
2263
2301
|
return (
|
|
@@ -2315,7 +2353,10 @@ const DialogFooter = ({
|
|
|
2315
2353
|
);
|
|
2316
2354
|
DialogFooter.displayName = "DialogFooter";
|
|
2317
2355
|
|
|
2318
|
-
const DialogTitle = React.forwardRef
|
|
2356
|
+
const DialogTitle = React.forwardRef<
|
|
2357
|
+
React.ElementRef<typeof DialogPrimitive.Title>,
|
|
2358
|
+
React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>
|
|
2359
|
+
>(({ className, ...props }, ref) => (
|
|
2319
2360
|
<DialogPrimitive.Title
|
|
2320
2361
|
ref={ref}
|
|
2321
2362
|
className={cn(
|
|
@@ -2327,7 +2368,10 @@ const DialogTitle = React.forwardRef(({ className, ...props }: React.ComponentPr
|
|
|
2327
2368
|
));
|
|
2328
2369
|
DialogTitle.displayName = DialogPrimitive.Title.displayName;
|
|
2329
2370
|
|
|
2330
|
-
const DialogDescription = React.forwardRef
|
|
2371
|
+
const DialogDescription = React.forwardRef<
|
|
2372
|
+
React.ElementRef<typeof DialogPrimitive.Description>,
|
|
2373
|
+
React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>
|
|
2374
|
+
>(({ className, ...props }, ref) => (
|
|
2331
2375
|
<DialogPrimitive.Description
|
|
2332
2376
|
ref={ref}
|
|
2333
2377
|
className={cn("text-sm text-muted-foreground", className)}
|
|
@@ -2358,7 +2402,10 @@ import { cn } from "@/lib/utils";
|
|
|
2358
2402
|
|
|
2359
2403
|
const DropdownMenu = DropdownMenuPrimitive.Root;
|
|
2360
2404
|
|
|
2361
|
-
const DropdownMenuTrigger = React.forwardRef
|
|
2405
|
+
const DropdownMenuTrigger = React.forwardRef<
|
|
2406
|
+
React.ElementRef<typeof DropdownMenuPrimitive.Trigger>,
|
|
2407
|
+
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Trigger>
|
|
2408
|
+
>(({ className, ...props }, ref) => (
|
|
2362
2409
|
<DropdownMenuPrimitive.Trigger
|
|
2363
2410
|
ref={ref}
|
|
2364
2411
|
className={cn("focus-visible:outline-none focus-visible:ring-0", className)}
|
|
@@ -2375,9 +2422,12 @@ const DropdownMenuSub = DropdownMenuPrimitive.Sub;
|
|
|
2375
2422
|
|
|
2376
2423
|
const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
|
|
2377
2424
|
|
|
2378
|
-
const DropdownMenuSubTrigger = React.forwardRef
|
|
2425
|
+
const DropdownMenuSubTrigger = React.forwardRef<
|
|
2426
|
+
React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,
|
|
2427
|
+
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {
|
|
2379
2428
|
inset?: boolean;
|
|
2380
|
-
}
|
|
2429
|
+
}
|
|
2430
|
+
>(({ className, inset, children, ...props }, ref) => (
|
|
2381
2431
|
<DropdownMenuPrimitive.SubTrigger
|
|
2382
2432
|
ref={ref}
|
|
2383
2433
|
className={cn(
|
|
@@ -2394,7 +2444,10 @@ const DropdownMenuSubTrigger = React.forwardRef(({ className, inset, children, .
|
|
|
2394
2444
|
DropdownMenuSubTrigger.displayName =
|
|
2395
2445
|
DropdownMenuPrimitive.SubTrigger.displayName;
|
|
2396
2446
|
|
|
2397
|
-
const DropdownMenuSubContent = React.forwardRef
|
|
2447
|
+
const DropdownMenuSubContent = React.forwardRef<
|
|
2448
|
+
React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,
|
|
2449
|
+
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>
|
|
2450
|
+
>(({ className, ...props }, ref) => (
|
|
2398
2451
|
<DropdownMenuPrimitive.SubContent
|
|
2399
2452
|
ref={ref}
|
|
2400
2453
|
className={cn(
|
|
@@ -2407,7 +2460,10 @@ const DropdownMenuSubContent = React.forwardRef(({ className, ...props }: React.
|
|
|
2407
2460
|
DropdownMenuSubContent.displayName =
|
|
2408
2461
|
DropdownMenuPrimitive.SubContent.displayName;
|
|
2409
2462
|
|
|
2410
|
-
const DropdownMenuContent = React.forwardRef
|
|
2463
|
+
const DropdownMenuContent = React.forwardRef<
|
|
2464
|
+
React.ElementRef<typeof DropdownMenuPrimitive.Content>,
|
|
2465
|
+
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>
|
|
2466
|
+
>(({ className, sideOffset = 4, ...props }, ref) => (
|
|
2411
2467
|
<DropdownMenuPrimitive.Portal>
|
|
2412
2468
|
<DropdownMenuPrimitive.Content
|
|
2413
2469
|
ref={ref}
|
|
@@ -2423,13 +2479,16 @@ const DropdownMenuContent = React.forwardRef(({ className, sideOffset = 4, ...pr
|
|
|
2423
2479
|
));
|
|
2424
2480
|
DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
|
|
2425
2481
|
|
|
2426
|
-
const DropdownMenuItem = React.forwardRef
|
|
2482
|
+
const DropdownMenuItem = React.forwardRef<
|
|
2483
|
+
React.ElementRef<typeof DropdownMenuPrimitive.Item>,
|
|
2484
|
+
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {
|
|
2427
2485
|
inset?: boolean;
|
|
2428
2486
|
/** Secondary text displayed below children */
|
|
2429
2487
|
description?: string;
|
|
2430
2488
|
/** Content displayed at the right edge of the item */
|
|
2431
2489
|
suffix?: React.ReactNode;
|
|
2432
|
-
}
|
|
2490
|
+
}
|
|
2491
|
+
>(({ className, inset, children, description, suffix, ...props }, ref) => (
|
|
2433
2492
|
<DropdownMenuPrimitive.Item
|
|
2434
2493
|
ref={ref}
|
|
2435
2494
|
className={cn(
|
|
@@ -2454,12 +2513,15 @@ const DropdownMenuItem = React.forwardRef(({ className, inset, children, descrip
|
|
|
2454
2513
|
));
|
|
2455
2514
|
DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
|
|
2456
2515
|
|
|
2457
|
-
const DropdownMenuCheckboxItem = React.forwardRef
|
|
2516
|
+
const DropdownMenuCheckboxItem = React.forwardRef<
|
|
2517
|
+
React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,
|
|
2518
|
+
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem> & {
|
|
2458
2519
|
/** Secondary text displayed below children */
|
|
2459
2520
|
description?: string;
|
|
2460
2521
|
/** Content displayed at the right edge of the item */
|
|
2461
2522
|
suffix?: React.ReactNode;
|
|
2462
|
-
}
|
|
2523
|
+
}
|
|
2524
|
+
>(({ className, children, checked, description, suffix, ...props }, ref) => (
|
|
2463
2525
|
<DropdownMenuPrimitive.CheckboxItem
|
|
2464
2526
|
ref={ref}
|
|
2465
2527
|
className={cn(
|
|
@@ -2490,12 +2552,15 @@ const DropdownMenuCheckboxItem = React.forwardRef(({ className, children, checke
|
|
|
2490
2552
|
DropdownMenuCheckboxItem.displayName =
|
|
2491
2553
|
DropdownMenuPrimitive.CheckboxItem.displayName;
|
|
2492
2554
|
|
|
2493
|
-
const DropdownMenuRadioItem = React.forwardRef
|
|
2555
|
+
const DropdownMenuRadioItem = React.forwardRef<
|
|
2556
|
+
React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,
|
|
2557
|
+
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem> & {
|
|
2494
2558
|
/** Secondary text displayed below children */
|
|
2495
2559
|
description?: string;
|
|
2496
2560
|
/** Content displayed at the right edge of the item */
|
|
2497
2561
|
suffix?: React.ReactNode;
|
|
2498
|
-
}
|
|
2562
|
+
}
|
|
2563
|
+
>(({ className, children, description, suffix, ...props }, ref) => (
|
|
2499
2564
|
<DropdownMenuPrimitive.RadioItem
|
|
2500
2565
|
ref={ref}
|
|
2501
2566
|
className={cn(
|
|
@@ -2524,9 +2589,12 @@ const DropdownMenuRadioItem = React.forwardRef(({ className, children, descripti
|
|
|
2524
2589
|
));
|
|
2525
2590
|
DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
|
|
2526
2591
|
|
|
2527
|
-
const DropdownMenuLabel = React.forwardRef
|
|
2592
|
+
const DropdownMenuLabel = React.forwardRef<
|
|
2593
|
+
React.ElementRef<typeof DropdownMenuPrimitive.Label>,
|
|
2594
|
+
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {
|
|
2528
2595
|
inset?: boolean;
|
|
2529
|
-
}
|
|
2596
|
+
}
|
|
2597
|
+
>(({ className, inset, ...props }, ref) => (
|
|
2530
2598
|
<DropdownMenuPrimitive.Label
|
|
2531
2599
|
ref={ref}
|
|
2532
2600
|
className={cn(
|
|
@@ -2539,7 +2607,10 @@ const DropdownMenuLabel = React.forwardRef(({ className, inset, ...props }: Reac
|
|
|
2539
2607
|
));
|
|
2540
2608
|
DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
|
|
2541
2609
|
|
|
2542
|
-
const DropdownMenuSeparator = React.forwardRef
|
|
2610
|
+
const DropdownMenuSeparator = React.forwardRef<
|
|
2611
|
+
React.ElementRef<typeof DropdownMenuPrimitive.Separator>,
|
|
2612
|
+
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>
|
|
2613
|
+
>(({ className, ...props }, ref) => (
|
|
2543
2614
|
<DropdownMenuPrimitive.Separator
|
|
2544
2615
|
ref={ref}
|
|
2545
2616
|
className={cn("-mx-1 my-1 h-px bg-semantic-border-layout", className)}
|
|
@@ -2706,7 +2777,7 @@ export interface FormModalProps {
|
|
|
2706
2777
|
* </FormModal>
|
|
2707
2778
|
* \`\`\`
|
|
2708
2779
|
*/
|
|
2709
|
-
const FormModal = React.forwardRef(
|
|
2780
|
+
const FormModal = React.forwardRef<HTMLDivElement, FormModalProps>(
|
|
2710
2781
|
(
|
|
2711
2782
|
{
|
|
2712
2783
|
open,
|
|
@@ -2722,8 +2793,8 @@ const FormModal = React.forwardRef(
|
|
|
2722
2793
|
disableSave = false,
|
|
2723
2794
|
className,
|
|
2724
2795
|
size = "sm",
|
|
2725
|
-
}
|
|
2726
|
-
ref
|
|
2796
|
+
},
|
|
2797
|
+
ref
|
|
2727
2798
|
) => {
|
|
2728
2799
|
const handleSave = () => {
|
|
2729
2800
|
onSave?.();
|
|
@@ -2797,8 +2868,8 @@ export interface ImageMediaProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
2797
2868
|
maxHeight?: number | string;
|
|
2798
2869
|
}
|
|
2799
2870
|
|
|
2800
|
-
const ImageMedia = React.forwardRef(
|
|
2801
|
-
({ className, src, alt = "Image", maxHeight = 280, ...props }
|
|
2871
|
+
const ImageMedia = React.forwardRef<HTMLDivElement, ImageMediaProps>(
|
|
2872
|
+
({ className, src, alt = "Image", maxHeight = 280, ...props }, ref) => {
|
|
2802
2873
|
const maxHeightStyle =
|
|
2803
2874
|
typeof maxHeight === "number" ? \`\${maxHeight}px\` : maxHeight;
|
|
2804
2875
|
|
|
@@ -2833,9 +2904,9 @@ const inputVariants = cva(
|
|
|
2833
2904
|
variants: {
|
|
2834
2905
|
state: {
|
|
2835
2906
|
default:
|
|
2836
|
-
"border border-semantic-border-input focus:outline-none focus:border-semantic-border-input-focus focus:shadow-[0_0_0_1px_rgba(43,188,202,0.15)]",
|
|
2907
|
+
"border border-semantic-border-input hover:border-semantic-border-input-focus focus:outline-none focus:border-semantic-border-input-focus focus:shadow-[0_0_0_1px_rgba(43,188,202,0.15)]",
|
|
2837
2908
|
error:
|
|
2838
|
-
"border border-semantic-error-primary/40 focus:outline-none focus:border-semantic-error-primary focus:shadow-[0_0_0_1px_rgba(240,68,56,0.1)]",
|
|
2909
|
+
"border border-semantic-error-primary/40 hover:border-semantic-error-primary focus:outline-none focus:border-semantic-error-primary focus:shadow-[0_0_0_1px_rgba(240,68,56,0.1)]",
|
|
2839
2910
|
},
|
|
2840
2911
|
},
|
|
2841
2912
|
defaultVariants: {
|
|
@@ -2862,8 +2933,8 @@ export interface InputProps
|
|
|
2862
2933
|
showCheckIcon?: boolean;
|
|
2863
2934
|
}
|
|
2864
2935
|
|
|
2865
|
-
const Input = React.forwardRef(
|
|
2866
|
-
({ className, state, type, showCheckIcon, onFocus, onBlur, onWheel, ...props }
|
|
2936
|
+
const Input = React.forwardRef<HTMLInputElement, InputProps>(
|
|
2937
|
+
({ className, state, type, showCheckIcon, onFocus, onBlur, onWheel, ...props }, ref) => {
|
|
2867
2938
|
const [isFocused, setIsFocused] = React.useState(false);
|
|
2868
2939
|
|
|
2869
2940
|
const inputEl = (
|
|
@@ -3007,7 +3078,7 @@ export interface MultiSelectProps extends VariantProps<
|
|
|
3007
3078
|
* />
|
|
3008
3079
|
* \`\`\`
|
|
3009
3080
|
*/
|
|
3010
|
-
const MultiSelect = React.forwardRef(
|
|
3081
|
+
const MultiSelect = React.forwardRef<HTMLButtonElement, MultiSelectProps>(
|
|
3011
3082
|
(
|
|
3012
3083
|
{
|
|
3013
3084
|
label,
|
|
@@ -3030,8 +3101,8 @@ const MultiSelect = React.forwardRef(
|
|
|
3030
3101
|
state,
|
|
3031
3102
|
id,
|
|
3032
3103
|
name,
|
|
3033
|
-
}
|
|
3034
|
-
ref
|
|
3104
|
+
},
|
|
3105
|
+
ref
|
|
3035
3106
|
) => {
|
|
3036
3107
|
// Internal state for selected values (uncontrolled mode)
|
|
3037
3108
|
const [internalValue, setInternalValue] =
|
|
@@ -3054,6 +3125,7 @@ const MultiSelect = React.forwardRef(
|
|
|
3054
3125
|
// Generate unique IDs for accessibility
|
|
3055
3126
|
const generatedId = React.useId();
|
|
3056
3127
|
const selectId = id || generatedId;
|
|
3128
|
+
const listboxId = \`\${selectId}-listbox\`;
|
|
3057
3129
|
const helperId = \`\${selectId}-helper\`;
|
|
3058
3130
|
const errorId = \`\${selectId}-error\`;
|
|
3059
3131
|
|
|
@@ -3167,6 +3239,7 @@ const MultiSelect = React.forwardRef(
|
|
|
3167
3239
|
role="combobox"
|
|
3168
3240
|
aria-expanded={isOpen}
|
|
3169
3241
|
aria-haspopup="listbox"
|
|
3242
|
+
aria-controls={listboxId}
|
|
3170
3243
|
aria-invalid={!!error}
|
|
3171
3244
|
aria-describedby={ariaDescribedBy}
|
|
3172
3245
|
disabled={disabled || loading}
|
|
@@ -3246,6 +3319,7 @@ const MultiSelect = React.forwardRef(
|
|
|
3246
3319
|
{/* Dropdown */}
|
|
3247
3320
|
{isOpen && (
|
|
3248
3321
|
<div
|
|
3322
|
+
id={listboxId}
|
|
3249
3323
|
className={cn(
|
|
3250
3324
|
"absolute z-50 mt-1 w-full rounded bg-semantic-bg-primary border border-semantic-border-layout shadow-md",
|
|
3251
3325
|
"top-full"
|
|
@@ -3426,7 +3500,7 @@ export interface PageHeaderProps
|
|
|
3426
3500
|
mobileOverflowLimit?: number;
|
|
3427
3501
|
}
|
|
3428
3502
|
|
|
3429
|
-
const PageHeader = React.forwardRef(
|
|
3503
|
+
const PageHeader = React.forwardRef<HTMLDivElement, PageHeaderProps>(
|
|
3430
3504
|
(
|
|
3431
3505
|
{
|
|
3432
3506
|
className,
|
|
@@ -3442,8 +3516,8 @@ const PageHeader = React.forwardRef(
|
|
|
3442
3516
|
layout = "responsive",
|
|
3443
3517
|
mobileOverflowLimit = 2,
|
|
3444
3518
|
...props
|
|
3445
|
-
}
|
|
3446
|
-
ref
|
|
3519
|
+
},
|
|
3520
|
+
ref
|
|
3447
3521
|
) => {
|
|
3448
3522
|
// State for overflow expansion (moved to top level)
|
|
3449
3523
|
const [isOverflowExpanded, setIsOverflowExpanded] = React.useState(false);
|
|
@@ -4009,7 +4083,7 @@ export interface PanelProps
|
|
|
4009
4083
|
* </Panel>
|
|
4010
4084
|
* \`\`\`
|
|
4011
4085
|
*/
|
|
4012
|
-
const Panel = React.forwardRef(
|
|
4086
|
+
const Panel = React.forwardRef<HTMLElement, PanelProps>(
|
|
4013
4087
|
(
|
|
4014
4088
|
{
|
|
4015
4089
|
open = true,
|
|
@@ -4023,8 +4097,8 @@ const Panel = React.forwardRef(
|
|
|
4023
4097
|
"aria-label": ariaLabel,
|
|
4024
4098
|
onKeyDown,
|
|
4025
4099
|
...props
|
|
4026
|
-
}
|
|
4027
|
-
ref
|
|
4100
|
+
},
|
|
4101
|
+
ref
|
|
4028
4102
|
) => {
|
|
4029
4103
|
const resolvedSize = size ?? "default";
|
|
4030
4104
|
const widthClass = panelWidths[resolvedSize];
|
|
@@ -4133,7 +4207,7 @@ export interface PhoneInputProps
|
|
|
4133
4207
|
wrapperClassName?: string;
|
|
4134
4208
|
}
|
|
4135
4209
|
|
|
4136
|
-
const PhoneInput = React.forwardRef(
|
|
4210
|
+
const PhoneInput = React.forwardRef<HTMLInputElement, PhoneInputProps>(
|
|
4137
4211
|
(
|
|
4138
4212
|
{
|
|
4139
4213
|
className,
|
|
@@ -4144,8 +4218,8 @@ const PhoneInput = React.forwardRef(
|
|
|
4144
4218
|
wrapperClassName,
|
|
4145
4219
|
disabled,
|
|
4146
4220
|
...props
|
|
4147
|
-
}
|
|
4148
|
-
ref
|
|
4221
|
+
},
|
|
4222
|
+
ref
|
|
4149
4223
|
) => {
|
|
4150
4224
|
return (
|
|
4151
4225
|
<div
|
|
@@ -4244,7 +4318,7 @@ export interface ReadableFieldProps
|
|
|
4244
4318
|
* />
|
|
4245
4319
|
* \`\`\`
|
|
4246
4320
|
*/
|
|
4247
|
-
export const ReadableField = React.forwardRef(
|
|
4321
|
+
export const ReadableField = React.forwardRef<HTMLDivElement, ReadableFieldProps>(
|
|
4248
4322
|
(
|
|
4249
4323
|
{
|
|
4250
4324
|
label,
|
|
@@ -4256,8 +4330,8 @@ export const ReadableField = React.forwardRef(
|
|
|
4256
4330
|
className,
|
|
4257
4331
|
inputClassName,
|
|
4258
4332
|
...props
|
|
4259
|
-
}
|
|
4260
|
-
ref
|
|
4333
|
+
},
|
|
4334
|
+
ref
|
|
4261
4335
|
) => {
|
|
4262
4336
|
const [copied, setCopied] = React.useState(false);
|
|
4263
4337
|
const [isVisible, setIsVisible] = React.useState(!secret);
|
|
@@ -4429,8 +4503,8 @@ export interface ReplyQuoteProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
4429
4503
|
message: string;
|
|
4430
4504
|
}
|
|
4431
4505
|
|
|
4432
|
-
const ReplyQuote = React.forwardRef(
|
|
4433
|
-
({ className, sender, message, onClick, onKeyDown, role, tabIndex, "aria-label": ariaLabel, ...props }
|
|
4506
|
+
const ReplyQuote = React.forwardRef<HTMLDivElement, ReplyQuoteProps>(
|
|
4507
|
+
({ className, sender, message, onClick, onKeyDown, role, tabIndex, "aria-label": ariaLabel, ...props }, ref) => {
|
|
4434
4508
|
const isInteractive = !!onClick;
|
|
4435
4509
|
|
|
4436
4510
|
const handleKeyDown = React.useCallback(
|
|
@@ -4566,7 +4640,7 @@ export interface SelectFieldProps {
|
|
|
4566
4640
|
* />
|
|
4567
4641
|
* \`\`\`
|
|
4568
4642
|
*/
|
|
4569
|
-
const SelectField = React.forwardRef(
|
|
4643
|
+
const SelectField = React.forwardRef<HTMLButtonElement, SelectFieldProps>(
|
|
4570
4644
|
(
|
|
4571
4645
|
{
|
|
4572
4646
|
label,
|
|
@@ -4589,8 +4663,8 @@ const SelectField = React.forwardRef(
|
|
|
4589
4663
|
labelClassName,
|
|
4590
4664
|
id,
|
|
4591
4665
|
name,
|
|
4592
|
-
}
|
|
4593
|
-
ref
|
|
4666
|
+
},
|
|
4667
|
+
ref
|
|
4594
4668
|
) => {
|
|
4595
4669
|
// Internal state for search
|
|
4596
4670
|
const [searchQuery, setSearchQuery] = React.useState("");
|
|
@@ -4838,7 +4912,10 @@ const Select = SelectPrimitive.Root;
|
|
|
4838
4912
|
|
|
4839
4913
|
const SelectGroup = SelectPrimitive.Group;
|
|
4840
4914
|
|
|
4841
|
-
const SelectValue = React.forwardRef
|
|
4915
|
+
const SelectValue = React.forwardRef<
|
|
4916
|
+
React.ElementRef<typeof SelectPrimitive.Value>,
|
|
4917
|
+
React.ComponentPropsWithoutRef<typeof SelectPrimitive.Value>
|
|
4918
|
+
>(({ className, ...props }, ref) => (
|
|
4842
4919
|
<SelectPrimitive.Value
|
|
4843
4920
|
ref={ref}
|
|
4844
4921
|
className={cn("[&[data-placeholder]]:text-semantic-text-muted", className)}
|
|
@@ -4852,7 +4929,10 @@ export interface SelectTriggerProps
|
|
|
4852
4929
|
React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>,
|
|
4853
4930
|
VariantProps<typeof selectTriggerVariants> {}
|
|
4854
4931
|
|
|
4855
|
-
const SelectTrigger = React.forwardRef
|
|
4932
|
+
const SelectTrigger = React.forwardRef<
|
|
4933
|
+
React.ElementRef<typeof SelectPrimitive.Trigger>,
|
|
4934
|
+
SelectTriggerProps
|
|
4935
|
+
>(({ className, state, children, ...props }, ref) => (
|
|
4856
4936
|
<SelectPrimitive.Trigger
|
|
4857
4937
|
ref={ref}
|
|
4858
4938
|
className={cn(selectTriggerVariants({ state, className }))}
|
|
@@ -4866,7 +4946,10 @@ const SelectTrigger = React.forwardRef(({ className, state, children, ...props }
|
|
|
4866
4946
|
));
|
|
4867
4947
|
SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
|
|
4868
4948
|
|
|
4869
|
-
const SelectScrollUpButton = React.forwardRef
|
|
4949
|
+
const SelectScrollUpButton = React.forwardRef<
|
|
4950
|
+
React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,
|
|
4951
|
+
React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>
|
|
4952
|
+
>(({ className, ...props }, ref) => (
|
|
4870
4953
|
<SelectPrimitive.ScrollUpButton
|
|
4871
4954
|
ref={ref}
|
|
4872
4955
|
className={cn(
|
|
@@ -4880,7 +4963,10 @@ const SelectScrollUpButton = React.forwardRef(({ className, ...props }: React.Co
|
|
|
4880
4963
|
));
|
|
4881
4964
|
SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
|
|
4882
4965
|
|
|
4883
|
-
const SelectScrollDownButton = React.forwardRef
|
|
4966
|
+
const SelectScrollDownButton = React.forwardRef<
|
|
4967
|
+
React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,
|
|
4968
|
+
React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>
|
|
4969
|
+
>(({ className, ...props }, ref) => (
|
|
4884
4970
|
<SelectPrimitive.ScrollDownButton
|
|
4885
4971
|
ref={ref}
|
|
4886
4972
|
className={cn(
|
|
@@ -4934,7 +5020,10 @@ function useUnlockBodyScroll() {
|
|
|
4934
5020
|
}, []);
|
|
4935
5021
|
}
|
|
4936
5022
|
|
|
4937
|
-
const SelectContent = React.forwardRef
|
|
5023
|
+
const SelectContent = React.forwardRef<
|
|
5024
|
+
React.ElementRef<typeof SelectPrimitive.Content>,
|
|
5025
|
+
React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>
|
|
5026
|
+
>(({ className, children, position = "popper", ...props }, ref) => {
|
|
4938
5027
|
useUnlockBodyScroll();
|
|
4939
5028
|
|
|
4940
5029
|
return (
|
|
@@ -4972,7 +5061,10 @@ const SelectContent = React.forwardRef(({ className, children, position = "poppe
|
|
|
4972
5061
|
});
|
|
4973
5062
|
SelectContent.displayName = SelectPrimitive.Content.displayName;
|
|
4974
5063
|
|
|
4975
|
-
const SelectLabel = React.forwardRef
|
|
5064
|
+
const SelectLabel = React.forwardRef<
|
|
5065
|
+
React.ElementRef<typeof SelectPrimitive.Label>,
|
|
5066
|
+
React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>
|
|
5067
|
+
>(({ className, ...props }, ref) => (
|
|
4976
5068
|
<SelectPrimitive.Label
|
|
4977
5069
|
ref={ref}
|
|
4978
5070
|
className={cn(
|
|
@@ -4984,7 +5076,10 @@ const SelectLabel = React.forwardRef(({ className, ...props }: React.ComponentPr
|
|
|
4984
5076
|
));
|
|
4985
5077
|
SelectLabel.displayName = SelectPrimitive.Label.displayName;
|
|
4986
5078
|
|
|
4987
|
-
const SelectItem = React.forwardRef
|
|
5079
|
+
const SelectItem = React.forwardRef<
|
|
5080
|
+
React.ElementRef<typeof SelectPrimitive.Item>,
|
|
5081
|
+
React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>
|
|
5082
|
+
>(({ className, children, ...props }, ref) => (
|
|
4988
5083
|
<SelectPrimitive.Item
|
|
4989
5084
|
ref={ref}
|
|
4990
5085
|
className={cn(
|
|
@@ -5005,7 +5100,10 @@ const SelectItem = React.forwardRef(({ className, children, ...props }: React.Co
|
|
|
5005
5100
|
));
|
|
5006
5101
|
SelectItem.displayName = SelectPrimitive.Item.displayName;
|
|
5007
5102
|
|
|
5008
|
-
const SelectSeparator = React.forwardRef
|
|
5103
|
+
const SelectSeparator = React.forwardRef<
|
|
5104
|
+
React.ElementRef<typeof SelectPrimitive.Separator>,
|
|
5105
|
+
React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>
|
|
5106
|
+
>(({ className, ...props }, ref) => (
|
|
5009
5107
|
<SelectPrimitive.Separator
|
|
5010
5108
|
ref={ref}
|
|
5011
5109
|
className={cn("-mx-1 my-1 h-px bg-semantic-border-layout", className)}
|
|
@@ -5083,8 +5181,8 @@ export interface SkeletonProps
|
|
|
5083
5181
|
height?: number | string;
|
|
5084
5182
|
}
|
|
5085
5183
|
|
|
5086
|
-
const Skeleton = React.forwardRef(
|
|
5087
|
-
({ className, variant, shape, width, height, style, ...props }
|
|
5184
|
+
const Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(
|
|
5185
|
+
({ className, variant, shape, width, height, style, ...props }, ref) => {
|
|
5088
5186
|
const dimensionStyle: React.CSSProperties = {
|
|
5089
5187
|
...style,
|
|
5090
5188
|
...(width !== undefined
|
|
@@ -5170,7 +5268,7 @@ export interface SpinnerProps
|
|
|
5170
5268
|
"aria-label"?: string;
|
|
5171
5269
|
}
|
|
5172
5270
|
|
|
5173
|
-
const Spinner = React.forwardRef(
|
|
5271
|
+
const Spinner = React.forwardRef<HTMLDivElement, SpinnerProps>(
|
|
5174
5272
|
(
|
|
5175
5273
|
{
|
|
5176
5274
|
className,
|
|
@@ -5178,8 +5276,8 @@ const Spinner = React.forwardRef(
|
|
|
5178
5276
|
variant,
|
|
5179
5277
|
"aria-label": ariaLabel = "Loading",
|
|
5180
5278
|
...props
|
|
5181
|
-
}
|
|
5182
|
-
ref
|
|
5279
|
+
},
|
|
5280
|
+
ref
|
|
5183
5281
|
) => {
|
|
5184
5282
|
const strokeWidth = strokeWidths[size || "default"] ?? 3;
|
|
5185
5283
|
const radius = 10;
|
|
@@ -5312,10 +5410,13 @@ export interface SwitchProps
|
|
|
5312
5410
|
labelPosition?: "left" | "right";
|
|
5313
5411
|
}
|
|
5314
5412
|
|
|
5315
|
-
const Switch = React.forwardRef
|
|
5413
|
+
const Switch = React.forwardRef<
|
|
5414
|
+
React.ElementRef<typeof SwitchPrimitives.Root>,
|
|
5415
|
+
SwitchProps
|
|
5416
|
+
>(
|
|
5316
5417
|
(
|
|
5317
|
-
{ className, size, label, labelPosition = "right", disabled, ...props }
|
|
5318
|
-
ref
|
|
5418
|
+
{ className, size, label, labelPosition = "right", disabled, ...props },
|
|
5419
|
+
ref
|
|
5319
5420
|
) => {
|
|
5320
5421
|
const switchElement = (
|
|
5321
5422
|
<SwitchPrimitives.Root
|
|
@@ -5391,8 +5492,8 @@ export interface SystemMessageProps
|
|
|
5391
5492
|
children: string;
|
|
5392
5493
|
}
|
|
5393
5494
|
|
|
5394
|
-
const SystemMessage = React.forwardRef(
|
|
5395
|
-
({ className, children, ...props }
|
|
5495
|
+
const SystemMessage = React.forwardRef<HTMLDivElement, SystemMessageProps>(
|
|
5496
|
+
({ className, children, ...props }, ref) => (
|
|
5396
5497
|
<div
|
|
5397
5498
|
ref={ref}
|
|
5398
5499
|
className={cn("flex justify-center my-1", className)}
|
|
@@ -5470,8 +5571,8 @@ export interface TableProps
|
|
|
5470
5571
|
wrapContent?: boolean;
|
|
5471
5572
|
}
|
|
5472
5573
|
|
|
5473
|
-
const Table = React.forwardRef(
|
|
5474
|
-
({ className, size, withoutBorder, wrapContent, ...props }
|
|
5574
|
+
const Table = React.forwardRef<HTMLTableElement, TableProps>(
|
|
5575
|
+
({ className, size, withoutBorder, wrapContent, ...props }, ref) => (
|
|
5475
5576
|
<div
|
|
5476
5577
|
className={cn(
|
|
5477
5578
|
"relative w-full overflow-auto",
|
|
@@ -5492,7 +5593,10 @@ const Table = React.forwardRef(
|
|
|
5492
5593
|
);
|
|
5493
5594
|
Table.displayName = "Table";
|
|
5494
5595
|
|
|
5495
|
-
const TableHeader = React.forwardRef
|
|
5596
|
+
const TableHeader = React.forwardRef<
|
|
5597
|
+
HTMLTableSectionElement,
|
|
5598
|
+
React.HTMLAttributes<HTMLTableSectionElement>
|
|
5599
|
+
>(({ className, ...props }, ref) => (
|
|
5496
5600
|
<thead
|
|
5497
5601
|
ref={ref}
|
|
5498
5602
|
className={cn("bg-[var(--color-neutral-100)] [&_tr]:border-b", className)}
|
|
@@ -5511,8 +5615,8 @@ export interface TableBodyProps
|
|
|
5511
5615
|
loadingColumns?: number;
|
|
5512
5616
|
}
|
|
5513
5617
|
|
|
5514
|
-
const TableBody = React.forwardRef(
|
|
5515
|
-
({ className, isLoading, loadingRows = 5, loadingColumns = 5, children, ...props }
|
|
5618
|
+
const TableBody = React.forwardRef<HTMLTableSectionElement, TableBodyProps>(
|
|
5619
|
+
({ className, isLoading, loadingRows = 5, loadingColumns = 5, children, ...props }, ref) => (
|
|
5516
5620
|
<tbody
|
|
5517
5621
|
ref={ref}
|
|
5518
5622
|
className={cn("[&_tr:last-child]:border-0", className)}
|
|
@@ -5528,7 +5632,10 @@ const TableBody = React.forwardRef(
|
|
|
5528
5632
|
);
|
|
5529
5633
|
TableBody.displayName = "TableBody";
|
|
5530
5634
|
|
|
5531
|
-
const TableFooter = React.forwardRef
|
|
5635
|
+
const TableFooter = React.forwardRef<
|
|
5636
|
+
HTMLTableSectionElement,
|
|
5637
|
+
React.HTMLAttributes<HTMLTableSectionElement>
|
|
5638
|
+
>(({ className, ...props }, ref) => (
|
|
5532
5639
|
<tfoot
|
|
5533
5640
|
ref={ref}
|
|
5534
5641
|
className={cn(
|
|
@@ -5545,8 +5652,8 @@ export interface TableRowProps extends React.HTMLAttributes<HTMLTableRowElement>
|
|
|
5545
5652
|
highlighted?: boolean;
|
|
5546
5653
|
}
|
|
5547
5654
|
|
|
5548
|
-
const TableRow = React.forwardRef(
|
|
5549
|
-
({ className, highlighted, ...props }
|
|
5655
|
+
const TableRow = React.forwardRef<HTMLTableRowElement, TableRowProps>(
|
|
5656
|
+
({ className, highlighted, ...props }, ref) => (
|
|
5550
5657
|
<tr
|
|
5551
5658
|
ref={ref}
|
|
5552
5659
|
className={cn(
|
|
@@ -5571,10 +5678,10 @@ export interface TableHeadProps extends React.ThHTMLAttributes<HTMLTableCellElem
|
|
|
5571
5678
|
infoTooltip?: string;
|
|
5572
5679
|
}
|
|
5573
5680
|
|
|
5574
|
-
const TableHead = React.forwardRef(
|
|
5681
|
+
const TableHead = React.forwardRef<HTMLTableCellElement, TableHeadProps>(
|
|
5575
5682
|
(
|
|
5576
|
-
{ className, sticky, sortDirection, infoTooltip, children, ...props }
|
|
5577
|
-
ref
|
|
5683
|
+
{ className, sticky, sortDirection, infoTooltip, children, ...props },
|
|
5684
|
+
ref
|
|
5578
5685
|
) => (
|
|
5579
5686
|
<th
|
|
5580
5687
|
ref={ref}
|
|
@@ -5612,8 +5719,8 @@ export interface TableCellProps extends React.TdHTMLAttributes<HTMLTableCellElem
|
|
|
5612
5719
|
sticky?: boolean;
|
|
5613
5720
|
}
|
|
5614
5721
|
|
|
5615
|
-
const TableCell = React.forwardRef(
|
|
5616
|
-
({ className, sticky, ...props }
|
|
5722
|
+
const TableCell = React.forwardRef<HTMLTableCellElement, TableCellProps>(
|
|
5723
|
+
({ className, sticky, ...props }, ref) => (
|
|
5617
5724
|
<td
|
|
5618
5725
|
ref={ref}
|
|
5619
5726
|
className={cn(
|
|
@@ -5627,7 +5734,10 @@ const TableCell = React.forwardRef(
|
|
|
5627
5734
|
);
|
|
5628
5735
|
TableCell.displayName = "TableCell";
|
|
5629
5736
|
|
|
5630
|
-
const TableCaption = React.forwardRef
|
|
5737
|
+
const TableCaption = React.forwardRef<
|
|
5738
|
+
HTMLTableCaptionElement,
|
|
5739
|
+
React.HTMLAttributes<HTMLTableCaptionElement>
|
|
5740
|
+
>(({ className, ...props }, ref) => (
|
|
5631
5741
|
<caption
|
|
5632
5742
|
ref={ref}
|
|
5633
5743
|
className={cn("mt-4 text-sm text-semantic-text-muted", className)}
|
|
@@ -5716,8 +5826,8 @@ export interface TableToggleProps extends Omit<SwitchProps, "size"> {
|
|
|
5716
5826
|
size?: "sm" | "default";
|
|
5717
5827
|
}
|
|
5718
5828
|
|
|
5719
|
-
const TableToggle = React.forwardRef(
|
|
5720
|
-
({ size = "sm", ...props }
|
|
5829
|
+
const TableToggle = React.forwardRef<HTMLButtonElement, TableToggleProps>(
|
|
5830
|
+
({ size = "sm", ...props }, ref) => (
|
|
5721
5831
|
<Switch ref={ref} size={size} {...props} />
|
|
5722
5832
|
)
|
|
5723
5833
|
);
|
|
@@ -5767,7 +5877,10 @@ export interface TabsListProps
|
|
|
5767
5877
|
fullWidth?: boolean
|
|
5768
5878
|
}
|
|
5769
5879
|
|
|
5770
|
-
const TabsList = React.forwardRef
|
|
5880
|
+
const TabsList = React.forwardRef<
|
|
5881
|
+
React.ComponentRef<typeof TabsPrimitive.List>,
|
|
5882
|
+
TabsListProps
|
|
5883
|
+
>(({ className, fullWidth, ...props }, ref) => (
|
|
5771
5884
|
<TabsPrimitive.List
|
|
5772
5885
|
ref={ref}
|
|
5773
5886
|
className={cn(
|
|
@@ -5780,7 +5893,10 @@ const TabsList = React.forwardRef(({ className, fullWidth, ...props }: TabsListP
|
|
|
5780
5893
|
))
|
|
5781
5894
|
TabsList.displayName = TabsPrimitive.List.displayName
|
|
5782
5895
|
|
|
5783
|
-
const TabsTrigger = React.forwardRef
|
|
5896
|
+
const TabsTrigger = React.forwardRef<
|
|
5897
|
+
React.ComponentRef<typeof TabsPrimitive.Trigger>,
|
|
5898
|
+
React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>
|
|
5899
|
+
>(({ className, ...props }, ref) => (
|
|
5784
5900
|
<TabsPrimitive.Trigger
|
|
5785
5901
|
ref={ref}
|
|
5786
5902
|
className={cn(
|
|
@@ -5795,7 +5911,10 @@ const TabsTrigger = React.forwardRef(({ className, ...props }: React.ComponentPr
|
|
|
5795
5911
|
))
|
|
5796
5912
|
TabsTrigger.displayName = TabsPrimitive.Trigger.displayName
|
|
5797
5913
|
|
|
5798
|
-
const TabsContent = React.forwardRef
|
|
5914
|
+
const TabsContent = React.forwardRef<
|
|
5915
|
+
React.ComponentRef<typeof TabsPrimitive.Content>,
|
|
5916
|
+
React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>
|
|
5917
|
+
>(({ className, ...props }, ref) => (
|
|
5799
5918
|
<TabsPrimitive.Content
|
|
5800
5919
|
ref={ref}
|
|
5801
5920
|
className={cn(
|
|
@@ -5859,8 +5978,8 @@ export interface TagProps
|
|
|
5859
5978
|
label?: string;
|
|
5860
5979
|
}
|
|
5861
5980
|
|
|
5862
|
-
const Tag = React.forwardRef(
|
|
5863
|
-
({ className, variant, size, label, children, ...props }
|
|
5981
|
+
const Tag = React.forwardRef<HTMLSpanElement, TagProps>(
|
|
5982
|
+
({ className, variant, size, label, children, ...props }, ref) => {
|
|
5864
5983
|
return (
|
|
5865
5984
|
<span
|
|
5866
5985
|
className={cn(tagVariants({ variant, size, className }))}
|
|
@@ -5945,7 +6064,16 @@ TagGroup.displayName = "TagGroup";
|
|
|
5945
6064
|
|
|
5946
6065
|
export { Tag, TagGroup, tagVariants };
|
|
5947
6066
|
`,
|
|
5948
|
-
"text-field": `import
|
|
6067
|
+
"text-field": `import {
|
|
6068
|
+
forwardRef,
|
|
6069
|
+
useRef,
|
|
6070
|
+
useCallback,
|
|
6071
|
+
useState,
|
|
6072
|
+
useId,
|
|
6073
|
+
type ChangeEvent,
|
|
6074
|
+
type ReactNode,
|
|
6075
|
+
type ComponentProps,
|
|
6076
|
+
} from "react";
|
|
5949
6077
|
import { cva, type VariantProps } from "class-variance-authority";
|
|
5950
6078
|
import { Loader2, X } from "lucide-react";
|
|
5951
6079
|
|
|
@@ -5960,9 +6088,9 @@ const textFieldContainerVariants = cva(
|
|
|
5960
6088
|
variants: {
|
|
5961
6089
|
state: {
|
|
5962
6090
|
default:
|
|
5963
|
-
"border border-semantic-border-input focus-within:border-semantic-border-input-focus focus-within:shadow-[0_0_0_1px_rgba(43,188,202,0.15)]",
|
|
6091
|
+
"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)]",
|
|
5964
6092
|
error:
|
|
5965
|
-
"border border-semantic-error-primary/40 focus-within:border-semantic-error-primary focus-within:shadow-[0_0_0_1px_rgba(240,68,56,0.1)]",
|
|
6093
|
+
"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)]",
|
|
5966
6094
|
},
|
|
5967
6095
|
disabled: {
|
|
5968
6096
|
true: "cursor-not-allowed opacity-50 bg-[var(--color-neutral-50)]",
|
|
@@ -5985,9 +6113,9 @@ const textFieldInputVariants = cva(
|
|
|
5985
6113
|
variants: {
|
|
5986
6114
|
state: {
|
|
5987
6115
|
default:
|
|
5988
|
-
"border border-semantic-border-input focus:outline-none focus:border-semantic-border-input-focus focus:shadow-[0_0_0_1px_rgba(43,188,202,0.15)]",
|
|
6116
|
+
"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)]",
|
|
5989
6117
|
error:
|
|
5990
|
-
"border border-semantic-error-primary/40 focus:outline-none focus:border-semantic-error-primary focus:shadow-[0_0_0_1px_rgba(240,68,56,0.1)]",
|
|
6118
|
+
"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)]",
|
|
5991
6119
|
},
|
|
5992
6120
|
size: {
|
|
5993
6121
|
default: "h-[42px] px-4 py-2 text-base file:text-base",
|
|
@@ -6013,7 +6141,7 @@ const textFieldInputVariants = cva(
|
|
|
6013
6141
|
*/
|
|
6014
6142
|
export interface TextFieldProps
|
|
6015
6143
|
extends
|
|
6016
|
-
Omit<
|
|
6144
|
+
Omit<ComponentProps<"input">, "size">,
|
|
6017
6145
|
VariantProps<typeof textFieldInputVariants> {
|
|
6018
6146
|
/** Size of the text field \u2014 \`default\` (42px) or \`sm\` (36px, compact) */
|
|
6019
6147
|
size?: "default" | "sm";
|
|
@@ -6026,9 +6154,9 @@ export interface TextFieldProps
|
|
|
6026
6154
|
/** Error message - shows error state with red styling */
|
|
6027
6155
|
error?: string;
|
|
6028
6156
|
/** Icon displayed on the left inside the input */
|
|
6029
|
-
leftIcon?:
|
|
6157
|
+
leftIcon?: ReactNode;
|
|
6030
6158
|
/** Icon displayed on the right inside the input */
|
|
6031
|
-
rightIcon?:
|
|
6159
|
+
rightIcon?: ReactNode;
|
|
6032
6160
|
/** Text prefix inside input (e.g., "https://") */
|
|
6033
6161
|
prefix?: string;
|
|
6034
6162
|
/** Text suffix inside input (e.g., ".com") */
|
|
@@ -6049,7 +6177,7 @@ export interface TextFieldProps
|
|
|
6049
6177
|
inputContainerClassName?: string;
|
|
6050
6178
|
}
|
|
6051
6179
|
|
|
6052
|
-
const TextField =
|
|
6180
|
+
const TextField = forwardRef<HTMLInputElement, TextFieldProps>(
|
|
6053
6181
|
(
|
|
6054
6182
|
{
|
|
6055
6183
|
className,
|
|
@@ -6079,22 +6207,22 @@ const TextField = React.forwardRef(
|
|
|
6079
6207
|
id,
|
|
6080
6208
|
type,
|
|
6081
6209
|
...props
|
|
6082
|
-
}
|
|
6083
|
-
ref
|
|
6210
|
+
},
|
|
6211
|
+
ref
|
|
6084
6212
|
) => {
|
|
6085
6213
|
// Internal ref for programmatic control (e.g., clearable)
|
|
6086
|
-
const internalRef =
|
|
6087
|
-
const mergedRef =
|
|
6214
|
+
const internalRef = useRef<HTMLInputElement>(null);
|
|
6215
|
+
const mergedRef = useCallback(
|
|
6088
6216
|
(node: HTMLInputElement | null) => {
|
|
6089
6217
|
internalRef.current = node;
|
|
6090
6218
|
if (typeof ref === "function") ref(node);
|
|
6091
|
-
else if (ref
|
|
6219
|
+
else if (ref) ref.current = node;
|
|
6092
6220
|
},
|
|
6093
6221
|
[ref]
|
|
6094
6222
|
);
|
|
6095
6223
|
|
|
6096
6224
|
// Internal state for character count in uncontrolled mode
|
|
6097
|
-
const [internalValue, setInternalValue] =
|
|
6225
|
+
const [internalValue, setInternalValue] = useState(
|
|
6098
6226
|
defaultValue ?? ""
|
|
6099
6227
|
);
|
|
6100
6228
|
|
|
@@ -6106,7 +6234,7 @@ const TextField = React.forwardRef(
|
|
|
6106
6234
|
const derivedState = error ? "error" : (state ?? "default");
|
|
6107
6235
|
|
|
6108
6236
|
// Handle change for both controlled and uncontrolled
|
|
6109
|
-
const handleChange = (e:
|
|
6237
|
+
const handleChange = (e: ChangeEvent<HTMLInputElement>) => {
|
|
6110
6238
|
if (!isControlled) {
|
|
6111
6239
|
setInternalValue(e.target.value);
|
|
6112
6240
|
}
|
|
@@ -6133,7 +6261,7 @@ const TextField = React.forwardRef(
|
|
|
6133
6261
|
const charCount = String(currentValue).length;
|
|
6134
6262
|
|
|
6135
6263
|
// Generate unique IDs for accessibility
|
|
6136
|
-
const generatedId =
|
|
6264
|
+
const generatedId = useId();
|
|
6137
6265
|
const inputId = id || generatedId;
|
|
6138
6266
|
const helperId = \`\${inputId}-helper\`;
|
|
6139
6267
|
const errorId = \`\${inputId}-error\`;
|
|
@@ -6252,12 +6380,12 @@ const TextField = React.forwardRef(
|
|
|
6252
6380
|
{error ? (
|
|
6253
6381
|
<span
|
|
6254
6382
|
id={errorId}
|
|
6255
|
-
className="text-
|
|
6383
|
+
className="text-xs text-semantic-error-primary"
|
|
6256
6384
|
>
|
|
6257
6385
|
{error}
|
|
6258
6386
|
</span>
|
|
6259
6387
|
) : helperText ? (
|
|
6260
|
-
<span id={helperId} className="text-
|
|
6388
|
+
<span id={helperId} className="text-xs text-semantic-text-muted">
|
|
6261
6389
|
{helperText}
|
|
6262
6390
|
</span>
|
|
6263
6391
|
) : (
|
|
@@ -6266,7 +6394,7 @@ const TextField = React.forwardRef(
|
|
|
6266
6394
|
{showCount && maxLength && (
|
|
6267
6395
|
<span
|
|
6268
6396
|
className={cn(
|
|
6269
|
-
"text-
|
|
6397
|
+
"text-xs",
|
|
6270
6398
|
charCount > maxLength
|
|
6271
6399
|
? "text-semantic-error-primary"
|
|
6272
6400
|
: "text-semantic-text-muted"
|
|
@@ -6284,210 +6412,6 @@ const TextField = React.forwardRef(
|
|
|
6284
6412
|
TextField.displayName = "TextField";
|
|
6285
6413
|
|
|
6286
6414
|
export { TextField, textFieldContainerVariants, textFieldInputVariants };
|
|
6287
|
-
`,
|
|
6288
|
-
"textarea": `import * as React from "react";
|
|
6289
|
-
import { cva, type VariantProps } from "class-variance-authority";
|
|
6290
|
-
|
|
6291
|
-
import { cn } from "@/lib/utils";
|
|
6292
|
-
|
|
6293
|
-
/**
|
|
6294
|
-
* Textarea variants for different visual states
|
|
6295
|
-
*/
|
|
6296
|
-
const textareaVariants = cva(
|
|
6297
|
-
"w-full rounded bg-semantic-bg-primary text-semantic-text-primary outline-none transition-all placeholder:text-semantic-text-placeholder disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-[var(--color-neutral-50)]",
|
|
6298
|
-
{
|
|
6299
|
-
variants: {
|
|
6300
|
-
state: {
|
|
6301
|
-
default:
|
|
6302
|
-
"border border-semantic-border-input focus:outline-none focus:border-semantic-border-input-focus focus:shadow-[0_0_0_1px_rgba(43,188,202,0.15)]",
|
|
6303
|
-
error:
|
|
6304
|
-
"border border-semantic-error-primary/40 focus:outline-none focus:border-semantic-error-primary focus:shadow-[0_0_0_1px_rgba(240,68,56,0.1)]",
|
|
6305
|
-
},
|
|
6306
|
-
size: {
|
|
6307
|
-
default: "px-4 py-2.5 text-base",
|
|
6308
|
-
sm: "px-3 py-2 text-sm",
|
|
6309
|
-
},
|
|
6310
|
-
},
|
|
6311
|
-
defaultVariants: {
|
|
6312
|
-
state: "default",
|
|
6313
|
-
size: "default",
|
|
6314
|
-
},
|
|
6315
|
-
}
|
|
6316
|
-
);
|
|
6317
|
-
|
|
6318
|
-
/**
|
|
6319
|
-
* A multi-line text input with label, error state, helper text, character counter, and resize control.
|
|
6320
|
-
*
|
|
6321
|
-
* @example
|
|
6322
|
-
* \`\`\`tsx
|
|
6323
|
-
* <Textarea label="Description" placeholder="Enter description" />
|
|
6324
|
-
* <Textarea label="Notes" error="Too short" showCount maxLength={500} />
|
|
6325
|
-
* <Textarea label="JSON" rows={8} resize="vertical" />
|
|
6326
|
-
* \`\`\`
|
|
6327
|
-
*/
|
|
6328
|
-
export interface TextareaProps
|
|
6329
|
-
extends Omit<React.ComponentProps<"textarea">, "size">,
|
|
6330
|
-
VariantProps<typeof textareaVariants> {
|
|
6331
|
-
/** Size of the textarea \u2014 \`default\` or \`sm\` (compact) */
|
|
6332
|
-
size?: "default" | "sm";
|
|
6333
|
-
/** Label text displayed above the textarea */
|
|
6334
|
-
label?: string;
|
|
6335
|
-
/** Shows red asterisk next to label when true */
|
|
6336
|
-
required?: boolean;
|
|
6337
|
-
/** Helper text displayed below the textarea */
|
|
6338
|
-
helperText?: string;
|
|
6339
|
-
/** Error message \u2014 shows error state with red styling */
|
|
6340
|
-
error?: string;
|
|
6341
|
-
/** Shows character count when maxLength is set */
|
|
6342
|
-
showCount?: boolean;
|
|
6343
|
-
/** Controls CSS resize behavior. Defaults to "none" */
|
|
6344
|
-
resize?: "none" | "vertical" | "horizontal" | "both";
|
|
6345
|
-
/** Additional class for the wrapper container */
|
|
6346
|
-
wrapperClassName?: string;
|
|
6347
|
-
/** Additional class for the label */
|
|
6348
|
-
labelClassName?: string;
|
|
6349
|
-
}
|
|
6350
|
-
|
|
6351
|
-
const Textarea = React.forwardRef(
|
|
6352
|
-
(
|
|
6353
|
-
{
|
|
6354
|
-
className,
|
|
6355
|
-
wrapperClassName,
|
|
6356
|
-
labelClassName,
|
|
6357
|
-
state,
|
|
6358
|
-
size,
|
|
6359
|
-
label,
|
|
6360
|
-
required,
|
|
6361
|
-
helperText,
|
|
6362
|
-
error,
|
|
6363
|
-
showCount,
|
|
6364
|
-
resize = "none",
|
|
6365
|
-
maxLength,
|
|
6366
|
-
rows = 4,
|
|
6367
|
-
value,
|
|
6368
|
-
defaultValue,
|
|
6369
|
-
onChange,
|
|
6370
|
-
disabled,
|
|
6371
|
-
id,
|
|
6372
|
-
...props
|
|
6373
|
-
}: TextareaProps,
|
|
6374
|
-
ref: React.ForwardedRef<HTMLTextAreaElement>
|
|
6375
|
-
) => {
|
|
6376
|
-
// Internal state for character count in uncontrolled mode
|
|
6377
|
-
const [internalValue, setInternalValue] = React.useState(
|
|
6378
|
-
defaultValue ?? ""
|
|
6379
|
-
);
|
|
6380
|
-
|
|
6381
|
-
// Determine if controlled
|
|
6382
|
-
const isControlled = value !== undefined;
|
|
6383
|
-
const currentValue = isControlled ? value : internalValue;
|
|
6384
|
-
|
|
6385
|
-
// Derive state from props
|
|
6386
|
-
const derivedState = error ? "error" : (state ?? "default");
|
|
6387
|
-
|
|
6388
|
-
// Handle change for both controlled and uncontrolled
|
|
6389
|
-
const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {
|
|
6390
|
-
if (!isControlled) {
|
|
6391
|
-
setInternalValue(e.target.value);
|
|
6392
|
-
}
|
|
6393
|
-
onChange?.(e);
|
|
6394
|
-
};
|
|
6395
|
-
|
|
6396
|
-
// Character count
|
|
6397
|
-
const charCount = String(currentValue).length;
|
|
6398
|
-
|
|
6399
|
-
// Generate unique IDs for accessibility
|
|
6400
|
-
const generatedId = React.useId();
|
|
6401
|
-
const textareaId = id || generatedId;
|
|
6402
|
-
const helperId = \`\${textareaId}-helper\`;
|
|
6403
|
-
const errorId = \`\${textareaId}-error\`;
|
|
6404
|
-
|
|
6405
|
-
// Determine aria-describedby
|
|
6406
|
-
const ariaDescribedBy = error ? errorId : helperText ? helperId : undefined;
|
|
6407
|
-
|
|
6408
|
-
// Resize class map
|
|
6409
|
-
const resizeClasses: Record<string, string> = {
|
|
6410
|
-
none: "resize-none",
|
|
6411
|
-
vertical: "resize-y",
|
|
6412
|
-
horizontal: "resize-x",
|
|
6413
|
-
both: "resize",
|
|
6414
|
-
};
|
|
6415
|
-
|
|
6416
|
-
return (
|
|
6417
|
-
<div className={cn("flex flex-col gap-1", wrapperClassName)}>
|
|
6418
|
-
{/* Label */}
|
|
6419
|
-
{label && (
|
|
6420
|
-
<label
|
|
6421
|
-
htmlFor={textareaId}
|
|
6422
|
-
className={cn(
|
|
6423
|
-
"text-sm font-medium text-semantic-text-muted",
|
|
6424
|
-
labelClassName
|
|
6425
|
-
)}
|
|
6426
|
-
>
|
|
6427
|
-
{label}
|
|
6428
|
-
{required && (
|
|
6429
|
-
<span className="text-semantic-error-primary ml-0.5">*</span>
|
|
6430
|
-
)}
|
|
6431
|
-
</label>
|
|
6432
|
-
)}
|
|
6433
|
-
|
|
6434
|
-
{/* Textarea */}
|
|
6435
|
-
<textarea
|
|
6436
|
-
ref={ref}
|
|
6437
|
-
id={textareaId}
|
|
6438
|
-
rows={rows}
|
|
6439
|
-
className={cn(
|
|
6440
|
-
textareaVariants({ state: derivedState, size, className }),
|
|
6441
|
-
resizeClasses[resize]
|
|
6442
|
-
)}
|
|
6443
|
-
disabled={disabled}
|
|
6444
|
-
maxLength={maxLength}
|
|
6445
|
-
value={isControlled ? value : undefined}
|
|
6446
|
-
defaultValue={!isControlled ? defaultValue : undefined}
|
|
6447
|
-
onChange={handleChange}
|
|
6448
|
-
aria-invalid={!!error}
|
|
6449
|
-
aria-describedby={ariaDescribedBy}
|
|
6450
|
-
{...props}
|
|
6451
|
-
/>
|
|
6452
|
-
|
|
6453
|
-
{/* Helper text / Error message / Character count */}
|
|
6454
|
-
{(error || helperText || (showCount && maxLength)) && (
|
|
6455
|
-
<div className="flex justify-between items-start gap-2">
|
|
6456
|
-
{error ? (
|
|
6457
|
-
<span
|
|
6458
|
-
id={errorId}
|
|
6459
|
-
className="text-sm text-semantic-error-primary"
|
|
6460
|
-
>
|
|
6461
|
-
{error}
|
|
6462
|
-
</span>
|
|
6463
|
-
) : helperText ? (
|
|
6464
|
-
<span id={helperId} className="text-sm text-semantic-text-muted">
|
|
6465
|
-
{helperText}
|
|
6466
|
-
</span>
|
|
6467
|
-
) : (
|
|
6468
|
-
<span />
|
|
6469
|
-
)}
|
|
6470
|
-
{showCount && maxLength && (
|
|
6471
|
-
<span
|
|
6472
|
-
className={cn(
|
|
6473
|
-
"text-sm",
|
|
6474
|
-
charCount > maxLength
|
|
6475
|
-
? "text-semantic-error-primary"
|
|
6476
|
-
: "text-semantic-text-muted"
|
|
6477
|
-
)}
|
|
6478
|
-
>
|
|
6479
|
-
{charCount}/{maxLength}
|
|
6480
|
-
</span>
|
|
6481
|
-
)}
|
|
6482
|
-
</div>
|
|
6483
|
-
)}
|
|
6484
|
-
</div>
|
|
6485
|
-
);
|
|
6486
|
-
}
|
|
6487
|
-
);
|
|
6488
|
-
Textarea.displayName = "Textarea";
|
|
6489
|
-
|
|
6490
|
-
export { Textarea, textareaVariants };
|
|
6491
6415
|
`,
|
|
6492
6416
|
"toast": `import * as React from "react";
|
|
6493
6417
|
import * as ToastPrimitives from "@radix-ui/react-toast";
|
|
@@ -6498,7 +6422,10 @@ import { cn } from "@/lib/utils";
|
|
|
6498
6422
|
|
|
6499
6423
|
const ToastProvider = ToastPrimitives.Provider;
|
|
6500
6424
|
|
|
6501
|
-
const ToastViewport = React.forwardRef
|
|
6425
|
+
const ToastViewport = React.forwardRef<
|
|
6426
|
+
React.ElementRef<typeof ToastPrimitives.Viewport>,
|
|
6427
|
+
React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>
|
|
6428
|
+
>(({ className, ...props }, ref) => (
|
|
6502
6429
|
<ToastPrimitives.Viewport
|
|
6503
6430
|
ref={ref}
|
|
6504
6431
|
className={cn(
|
|
@@ -6532,8 +6459,11 @@ const toastVariants = cva(
|
|
|
6532
6459
|
}
|
|
6533
6460
|
);
|
|
6534
6461
|
|
|
6535
|
-
const Toast = React.forwardRef
|
|
6536
|
-
|
|
6462
|
+
const Toast = React.forwardRef<
|
|
6463
|
+
React.ElementRef<typeof ToastPrimitives.Root>,
|
|
6464
|
+
React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> &
|
|
6465
|
+
VariantProps<typeof toastVariants>
|
|
6466
|
+
>(({ className, variant, ...props }, ref) => {
|
|
6537
6467
|
return (
|
|
6538
6468
|
<ToastPrimitives.Root
|
|
6539
6469
|
ref={ref}
|
|
@@ -6544,7 +6474,10 @@ const Toast = React.forwardRef(({ className, variant, ...props }: React.Componen
|
|
|
6544
6474
|
});
|
|
6545
6475
|
Toast.displayName = ToastPrimitives.Root.displayName;
|
|
6546
6476
|
|
|
6547
|
-
const ToastAction = React.forwardRef
|
|
6477
|
+
const ToastAction = React.forwardRef<
|
|
6478
|
+
React.ElementRef<typeof ToastPrimitives.Action>,
|
|
6479
|
+
React.ComponentPropsWithoutRef<typeof ToastPrimitives.Action>
|
|
6480
|
+
>(({ className, ...props }, ref) => (
|
|
6548
6481
|
<ToastPrimitives.Action
|
|
6549
6482
|
ref={ref}
|
|
6550
6483
|
className={cn(
|
|
@@ -6560,7 +6493,10 @@ const ToastAction = React.forwardRef(({ className, ...props }: React.ComponentPr
|
|
|
6560
6493
|
));
|
|
6561
6494
|
ToastAction.displayName = ToastPrimitives.Action.displayName;
|
|
6562
6495
|
|
|
6563
|
-
const ToastClose = React.forwardRef
|
|
6496
|
+
const ToastClose = React.forwardRef<
|
|
6497
|
+
React.ElementRef<typeof ToastPrimitives.Close>,
|
|
6498
|
+
React.ComponentPropsWithoutRef<typeof ToastPrimitives.Close>
|
|
6499
|
+
>(({ className, ...props }, ref) => (
|
|
6564
6500
|
<ToastPrimitives.Close
|
|
6565
6501
|
ref={ref}
|
|
6566
6502
|
className={cn(
|
|
@@ -6575,7 +6511,10 @@ const ToastClose = React.forwardRef(({ className, ...props }: React.ComponentPro
|
|
|
6575
6511
|
));
|
|
6576
6512
|
ToastClose.displayName = ToastPrimitives.Close.displayName;
|
|
6577
6513
|
|
|
6578
|
-
const ToastTitle = React.forwardRef
|
|
6514
|
+
const ToastTitle = React.forwardRef<
|
|
6515
|
+
React.ElementRef<typeof ToastPrimitives.Title>,
|
|
6516
|
+
React.ComponentPropsWithoutRef<typeof ToastPrimitives.Title>
|
|
6517
|
+
>(({ className, ...props }, ref) => (
|
|
6579
6518
|
<ToastPrimitives.Title
|
|
6580
6519
|
ref={ref}
|
|
6581
6520
|
className={cn("text-sm font-semibold tracking-[0.014px]", className)}
|
|
@@ -6584,7 +6523,10 @@ const ToastTitle = React.forwardRef(({ className, ...props }: React.ComponentPro
|
|
|
6584
6523
|
));
|
|
6585
6524
|
ToastTitle.displayName = ToastPrimitives.Title.displayName;
|
|
6586
6525
|
|
|
6587
|
-
const ToastDescription = React.forwardRef
|
|
6526
|
+
const ToastDescription = React.forwardRef<
|
|
6527
|
+
React.ElementRef<typeof ToastPrimitives.Description>,
|
|
6528
|
+
React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>
|
|
6529
|
+
>(({ className, ...props }, ref) => (
|
|
6588
6530
|
<ToastPrimitives.Description
|
|
6589
6531
|
ref={ref}
|
|
6590
6532
|
className={cn("text-xs tracking-[0.048px]", className)}
|
|
@@ -6969,7 +6911,10 @@ const Tooltip = TooltipPrimitive.Root;
|
|
|
6969
6911
|
|
|
6970
6912
|
const TooltipTrigger = TooltipPrimitive.Trigger;
|
|
6971
6913
|
|
|
6972
|
-
const TooltipContent = React.forwardRef
|
|
6914
|
+
const TooltipContent = React.forwardRef<
|
|
6915
|
+
React.ElementRef<typeof TooltipPrimitive.Content>,
|
|
6916
|
+
React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>
|
|
6917
|
+
>(({ className, sideOffset = 4, ...props }, ref) => (
|
|
6973
6918
|
<TooltipPrimitive.Portal>
|
|
6974
6919
|
<TooltipPrimitive.Content
|
|
6975
6920
|
ref={ref}
|
|
@@ -6984,7 +6929,10 @@ const TooltipContent = React.forwardRef(({ className, sideOffset = 4, ...props }
|
|
|
6984
6929
|
));
|
|
6985
6930
|
TooltipContent.displayName = TooltipPrimitive.Content.displayName;
|
|
6986
6931
|
|
|
6987
|
-
const TooltipArrow = React.forwardRef
|
|
6932
|
+
const TooltipArrow = React.forwardRef<
|
|
6933
|
+
React.ElementRef<typeof TooltipPrimitive.Arrow>,
|
|
6934
|
+
React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Arrow>
|
|
6935
|
+
>(({ className, ...props }, ref) => (
|
|
6988
6936
|
<TooltipPrimitive.Arrow
|
|
6989
6937
|
ref={ref}
|
|
6990
6938
|
className={cn("fill-semantic-primary", className)}
|
|
@@ -7136,7 +7084,7 @@ export interface TypographyProps extends React.HTMLAttributes<HTMLElement> {
|
|
|
7136
7084
|
* <Typography truncate>Very long text that will be truncated...</Typography>
|
|
7137
7085
|
* \`\`\`
|
|
7138
7086
|
*/
|
|
7139
|
-
const Typography = React.forwardRef(
|
|
7087
|
+
const Typography = React.forwardRef<HTMLElement, TypographyProps>(
|
|
7140
7088
|
(
|
|
7141
7089
|
{
|
|
7142
7090
|
children,
|
|
@@ -7149,8 +7097,8 @@ const Typography = React.forwardRef(
|
|
|
7149
7097
|
tag,
|
|
7150
7098
|
htmlFor,
|
|
7151
7099
|
...props
|
|
7152
|
-
}
|
|
7153
|
-
ref
|
|
7100
|
+
},
|
|
7101
|
+
ref
|
|
7154
7102
|
) => {
|
|
7155
7103
|
const key: Key = \`\${kind}-\${variant}\`;
|
|
7156
7104
|
const Tag = (tag || mapTagName[key]) as React.ElementType;
|
|
@@ -7211,8 +7159,8 @@ export interface UnreadSeparatorProps
|
|
|
7211
7159
|
label?: string;
|
|
7212
7160
|
}
|
|
7213
7161
|
|
|
7214
|
-
const UnreadSeparator = React.forwardRef(
|
|
7215
|
-
({ className, count, label, ...props }
|
|
7162
|
+
const UnreadSeparator = React.forwardRef<HTMLDivElement, UnreadSeparatorProps>(
|
|
7163
|
+
({ className, count, label, ...props }, ref) => (
|
|
7216
7164
|
<div
|
|
7217
7165
|
ref={ref}
|
|
7218
7166
|
className={cn("flex items-center gap-4 my-2", className)}
|
|
@@ -8514,24 +8462,6 @@ var componentMetadata = {
|
|
|
8514
8462
|
}
|
|
8515
8463
|
]
|
|
8516
8464
|
},
|
|
8517
|
-
"textarea": {
|
|
8518
|
-
"name": "Textarea",
|
|
8519
|
-
"description": "A textarea component.",
|
|
8520
|
-
"dependencies": [
|
|
8521
|
-
"class-variance-authority",
|
|
8522
|
-
"clsx",
|
|
8523
|
-
"tailwind-merge"
|
|
8524
|
-
],
|
|
8525
|
-
"props": [],
|
|
8526
|
-
"variants": [],
|
|
8527
|
-
"examples": [
|
|
8528
|
-
{
|
|
8529
|
-
"title": "Basic Textarea",
|
|
8530
|
-
"code": "<Textarea>Content</Textarea>",
|
|
8531
|
-
"description": "Simple textarea usage"
|
|
8532
|
-
}
|
|
8533
|
-
]
|
|
8534
|
-
},
|
|
8535
8465
|
"toast": {
|
|
8536
8466
|
"name": "Toast",
|
|
8537
8467
|
"description": "A toast component.",
|