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.
Files changed (2) hide show
  1. package/dist/index.js +317 -387
  2. 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
- }: AccordionProps,
154
- ref: React.Ref<HTMLDivElement>
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 }: AccordionItemProps, ref: React.Ref<HTMLDivElement>) => {
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(({ className, showChevron = true, children, ...props }: AccordionTriggerProps, ref: React.Ref<HTMLButtonElement>) => {
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(({ className, children, ...props }: AccordionContentProps, ref: React.Ref<HTMLDivElement>) => {
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
- }: AlertProps,
461
- ref: React.Ref<HTMLDivElement>
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(({ className, ...props }: React.HTMLAttributes<HTMLHeadingElement>, ref: React.Ref<HTMLHeadingElement>) => (
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(({ className, ...props }: React.HTMLAttributes<HTMLParagraphElement>, ref: React.Ref<HTMLParagraphElement>) => (
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
- }: AvatarProps,
651
- ref: React.Ref<HTMLDivElement>
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
- }: BadgeProps,
775
- ref: React.Ref<HTMLDivElement>
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-[var(--color-neutral-300,#D5D7DA)] bg-semantic-bg-primary text-semantic-text-secondary hover:bg-semantic-primary-surface",
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-link underline-offset-4 hover:underline",
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
- }: ButtonProps,
897
- ref: React.Ref<HTMLButtonElement>
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
- }: CheckboxProps,
1033
- ref: React.Ref<React.ElementRef<typeof CheckboxPrimitive.Root>>
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
- }: ConfirmationModalProps,
1223
- ref: React.Ref<HTMLDivElement>
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
- }: ContactListItemProps,
1314
- ref: React.Ref<HTMLDivElement>
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
- }: CreatableMultiSelectProps,
1437
- ref: React.Ref<HTMLDivElement>
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
- }: CreatableSelectProps,
1725
- ref: React.Ref<HTMLDivElement>
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 }: DateDividerProps, ref: React.Ref<HTMLDivElement>) => (
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
- }: DeleteConfirmationModalProps,
2106
- ref: React.Ref<HTMLDivElement>
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(({ className, ...props }: React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>, ref: React.Ref<React.ElementRef<typeof DialogPrimitive.Overlay>>) => (
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(({ className, children, size, hideCloseButton = false, ...props }: DialogContentProps, ref: React.Ref<React.ElementRef<typeof DialogPrimitive.Content>>) => {
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(({ className, ...props }: React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>, ref: React.Ref<React.ElementRef<typeof DialogPrimitive.Title>>) => (
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(({ className, ...props }: React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>, ref: React.Ref<React.ElementRef<typeof DialogPrimitive.Description>>) => (
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(({ className, ...props }: React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Trigger>, ref: React.Ref<React.ElementRef<typeof DropdownMenuPrimitive.Trigger>>) => (
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(({ className, inset, children, ...props }: React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {
2425
+ const DropdownMenuSubTrigger = React.forwardRef<
2426
+ React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,
2427
+ React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {
2379
2428
  inset?: boolean;
2380
- }, ref: React.Ref<React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>>) => (
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(({ className, ...props }: React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>, ref: React.Ref<React.ElementRef<typeof DropdownMenuPrimitive.SubContent>>) => (
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(({ className, sideOffset = 4, ...props }: React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>, ref: React.Ref<React.ElementRef<typeof DropdownMenuPrimitive.Content>>) => (
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(({ className, inset, children, description, suffix, ...props }: React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {
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
- }, ref: React.Ref<React.ElementRef<typeof DropdownMenuPrimitive.Item>>) => (
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(({ className, children, checked, description, suffix, ...props }: React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem> & {
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
- }, ref: React.Ref<React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>>) => (
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(({ className, children, description, suffix, ...props }: React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem> & {
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
- }, ref: React.Ref<React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>>) => (
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(({ className, inset, ...props }: React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {
2592
+ const DropdownMenuLabel = React.forwardRef<
2593
+ React.ElementRef<typeof DropdownMenuPrimitive.Label>,
2594
+ React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {
2528
2595
  inset?: boolean;
2529
- }, ref: React.Ref<React.ElementRef<typeof DropdownMenuPrimitive.Label>>) => (
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(({ className, ...props }: React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>, ref: React.Ref<React.ElementRef<typeof DropdownMenuPrimitive.Separator>>) => (
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
- }: FormModalProps,
2726
- ref: React.Ref<HTMLDivElement>
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 }: ImageMediaProps, ref: React.Ref<HTMLDivElement>) => {
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 }: InputProps, ref: React.Ref<HTMLInputElement>) => {
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
- }: MultiSelectProps,
3034
- ref: React.Ref<HTMLButtonElement>
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
- }: PageHeaderProps,
3446
- ref: React.Ref<HTMLDivElement>
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
- }: PanelProps,
4027
- ref: React.Ref<HTMLElement>
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
- }: PhoneInputProps,
4148
- ref: React.Ref<HTMLInputElement>
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
- }: ReadableFieldProps,
4260
- ref: React.Ref<HTMLDivElement>
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 }: ReplyQuoteProps, ref: React.Ref<HTMLDivElement>) => {
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
- }: SelectFieldProps,
4593
- ref: React.Ref<HTMLButtonElement>
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(({ className, ...props }: React.ComponentPropsWithoutRef<typeof SelectPrimitive.Value>, ref: React.Ref<React.ElementRef<typeof SelectPrimitive.Value>>) => (
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(({ className, state, children, ...props }: SelectTriggerProps, ref: React.Ref<React.ElementRef<typeof SelectPrimitive.Trigger>>) => (
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(({ className, ...props }: React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>, ref: React.Ref<React.ElementRef<typeof SelectPrimitive.ScrollUpButton>>) => (
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(({ className, ...props }: React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>, ref: React.Ref<React.ElementRef<typeof SelectPrimitive.ScrollDownButton>>) => (
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(({ className, children, position = "popper", ...props }: React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>, ref: React.Ref<React.ElementRef<typeof SelectPrimitive.Content>>) => {
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(({ className, ...props }: React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>, ref: React.Ref<React.ElementRef<typeof SelectPrimitive.Label>>) => (
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(({ className, children, ...props }: React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>, ref: React.Ref<React.ElementRef<typeof SelectPrimitive.Item>>) => (
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(({ className, ...props }: React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>, ref: React.Ref<React.ElementRef<typeof SelectPrimitive.Separator>>) => (
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 }: SkeletonProps, ref: React.Ref<HTMLDivElement>) => {
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
- }: SpinnerProps,
5182
- ref: React.Ref<HTMLDivElement>
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 }: SwitchProps,
5318
- ref: React.Ref<React.ElementRef<typeof SwitchPrimitives.Root>>
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 }: SystemMessageProps, ref: React.Ref<HTMLDivElement>) => (
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 }: TableProps, ref: React.Ref<HTMLTableElement>) => (
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(({ className, ...props }: React.HTMLAttributes<HTMLTableSectionElement>, ref: React.Ref<HTMLTableSectionElement>) => (
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 }: TableBodyProps, ref: React.Ref<HTMLTableSectionElement>) => (
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(({ className, ...props }: React.HTMLAttributes<HTMLTableSectionElement>, ref: React.Ref<HTMLTableSectionElement>) => (
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 }: TableRowProps, ref: React.Ref<HTMLTableRowElement>) => (
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 }: TableHeadProps,
5577
- ref: React.Ref<HTMLTableCellElement>
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 }: TableCellProps, ref: React.Ref<HTMLTableCellElement>) => (
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(({ className, ...props }: React.HTMLAttributes<HTMLTableCaptionElement>, ref: React.Ref<HTMLTableCaptionElement>) => (
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 }: TableToggleProps, ref: React.Ref<HTMLButtonElement>) => (
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(({ className, fullWidth, ...props }: TabsListProps, ref: React.Ref<React.ComponentRef<typeof TabsPrimitive.List>>) => (
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(({ className, ...props }: React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>, ref: React.Ref<React.ComponentRef<typeof TabsPrimitive.Trigger>>) => (
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(({ className, ...props }: React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>, ref: React.Ref<React.ComponentRef<typeof TabsPrimitive.Content>>) => (
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 }: TagProps, ref: React.Ref<HTMLSpanElement>) => {
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 * as React from "react";
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<React.ComponentProps<"input">, "size">,
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?: React.ReactNode;
6157
+ leftIcon?: ReactNode;
6030
6158
  /** Icon displayed on the right inside the input */
6031
- rightIcon?: React.ReactNode;
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 = React.forwardRef(
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
- }: TextFieldProps,
6083
- ref: React.ForwardedRef<HTMLInputElement>
6210
+ },
6211
+ ref
6084
6212
  ) => {
6085
6213
  // Internal ref for programmatic control (e.g., clearable)
6086
- const internalRef = React.useRef<HTMLInputElement | null>(null);
6087
- const mergedRef = React.useCallback(
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 && typeof ref === "object") ref.current = node;
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] = React.useState(
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: React.ChangeEvent<HTMLInputElement>) => {
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 = React.useId();
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-sm text-semantic-error-primary"
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-sm text-semantic-text-muted">
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-sm",
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(({ className, ...props }: React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>, ref: React.Ref<React.ElementRef<typeof ToastPrimitives.Viewport>>) => (
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(({ className, variant, ...props }: React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> &
6536
- VariantProps<typeof toastVariants>, ref: React.Ref<React.ElementRef<typeof ToastPrimitives.Root>>) => {
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(({ className, ...props }: React.ComponentPropsWithoutRef<typeof ToastPrimitives.Action>, ref: React.Ref<React.ElementRef<typeof ToastPrimitives.Action>>) => (
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(({ className, ...props }: React.ComponentPropsWithoutRef<typeof ToastPrimitives.Close>, ref: React.Ref<React.ElementRef<typeof ToastPrimitives.Close>>) => (
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(({ className, ...props }: React.ComponentPropsWithoutRef<typeof ToastPrimitives.Title>, ref: React.Ref<React.ElementRef<typeof ToastPrimitives.Title>>) => (
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(({ className, ...props }: React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>, ref: React.Ref<React.ElementRef<typeof ToastPrimitives.Description>>) => (
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(({ className, sideOffset = 4, ...props }: React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>, ref: React.Ref<React.ElementRef<typeof TooltipPrimitive.Content>>) => (
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(({ className, ...props }: React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Arrow>, ref: React.Ref<React.ElementRef<typeof TooltipPrimitive.Arrow>>) => (
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
- }: TypographyProps,
7153
- ref: React.Ref<HTMLElement>
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 }: UnreadSeparatorProps, ref: React.Ref<HTMLDivElement>) => (
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.",