From 210c20eb65a3be14b3187e1dc64b7c4dfd68a2e2 Mon Sep 17 00:00:00 2001
From: Bereket Engida
Date: Tue, 4 Mar 2025 20:29:25 +0300
Subject: [PATCH] refactor: migrate UI components to React 19
---
demo/nextjs/components/ui/accordion.tsx | 41 +-
demo/nextjs/components/ui/alert-dialog.tsx | 164 ++++----
demo/nextjs/components/ui/alert.tsx | 70 +--
demo/nextjs/components/ui/avatar.tsx | 81 ++--
demo/nextjs/components/ui/breadcrumb.tsx | 109 ++---
demo/nextjs/components/ui/button.tsx | 33 +-
demo/nextjs/components/ui/card.tsx | 136 +++---
demo/nextjs/components/ui/carousel.tsx | 249 ++++++-----
demo/nextjs/components/ui/chart.tsx | 398 +++++++++---------
demo/nextjs/components/ui/checkbox.tsx | 41 +-
demo/nextjs/components/ui/command.tsx | 190 +++++----
demo/nextjs/components/ui/context-menu.tsx | 279 ++++++------
demo/nextjs/components/ui/dialog.tsx | 129 +++---
demo/nextjs/components/ui/drawer.tsx | 117 ++---
demo/nextjs/components/ui/dropdown-menu.tsx | 284 +++++++------
demo/nextjs/components/ui/form.tsx | 75 ++--
demo/nextjs/components/ui/hover-card.tsx | 35 +-
demo/nextjs/components/ui/input-otp.tsx | 79 ++--
demo/nextjs/components/ui/input.tsx | 37 +-
demo/nextjs/components/ui/label.tsx | 22 +-
demo/nextjs/components/ui/menubar.tsx | 351 +++++++--------
demo/nextjs/components/ui/navigation-menu.tsx | 196 +++++----
demo/nextjs/components/ui/pagination.tsx | 38 +-
demo/nextjs/components/ui/password-input.tsx | 94 +++--
demo/nextjs/components/ui/popover.tsx | 39 +-
demo/nextjs/components/ui/progress.tsx | 40 +-
demo/nextjs/components/ui/radio-group.tsx | 30 +-
demo/nextjs/components/ui/scroll-area.tsx | 80 ++--
demo/nextjs/components/ui/select.tsx | 261 ++++++------
demo/nextjs/components/ui/separator.tsx | 42 +-
demo/nextjs/components/ui/sheet.tsx | 54 ++-
demo/nextjs/components/ui/slider.tsx | 39 +-
demo/nextjs/components/ui/switch.tsx | 41 +-
demo/nextjs/components/ui/table.tsx | 204 +++++----
demo/nextjs/components/ui/tabs.tsx | 87 ++--
demo/nextjs/components/ui/textarea.tsx | 34 +-
demo/nextjs/components/ui/toast.tsx | 154 ++++---
demo/nextjs/components/ui/toggle-group.tsx | 50 ++-
demo/nextjs/components/ui/toggle.tsx | 24 +-
demo/nextjs/components/ui/tooltip.tsx | 32 +-
demo/nextjs/package.json | 6 +-
pnpm-lock.yaml | 22 +-
42 files changed, 2456 insertions(+), 2031 deletions(-)
diff --git a/demo/nextjs/components/ui/accordion.tsx b/demo/nextjs/components/ui/accordion.tsx
index 3b95eb7e..1fed710a 100644
--- a/demo/nextjs/components/ui/accordion.tsx
+++ b/demo/nextjs/components/ui/accordion.tsx
@@ -8,22 +8,29 @@ import { cn } from "@/lib/utils";
const Accordion = AccordionPrimitive.Root;
-const AccordionItem = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
+const AccordionItem = ({
+ ref,
+ className,
+ ...props
+}: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+}) => (
-));
+);
AccordionItem.displayName = "AccordionItem";
-const AccordionTrigger = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, children, ...props }, ref) => (
+const AccordionTrigger = ({
+ ref,
+ className,
+ children,
+ ...props
+}: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+}) => (
-));
+);
AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
-const AccordionContent = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, children, ...props }, ref) => (
+const AccordionContent = ({
+ ref,
+ className,
+ children,
+ ...props
+}: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+}) => (
{children}
-));
+);
AccordionContent.displayName = AccordionPrimitive.Content.displayName;
export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
diff --git a/demo/nextjs/components/ui/alert-dialog.tsx b/demo/nextjs/components/ui/alert-dialog.tsx
index f9ce27e8..51aee284 100644
--- a/demo/nextjs/components/ui/alert-dialog.tsx
+++ b/demo/nextjs/components/ui/alert-dialog.tsx
@@ -12,37 +12,43 @@ const AlertDialogTrigger = AlertDialogPrimitive.Trigger;
const AlertDialogPortal = AlertDialogPrimitive.Portal;
-const AlertDialogOverlay = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
+const AlertDialogOverlay = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
-const AlertDialogContent = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-
-
-
-));
+const AlertDialogContent = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => (
+
+
+);
AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;
const AlertDialogHeader = ({
@@ -73,57 +79,69 @@ const AlertDialogFooter = ({
);
AlertDialogFooter.displayName = "AlertDialogFooter";
-const AlertDialogTitle = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
+const AlertDialogTitle = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
-const AlertDialogDescription = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
+const AlertDialogDescription = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
AlertDialogDescription.displayName =
AlertDialogPrimitive.Description.displayName;
-const AlertDialogAction = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
+const AlertDialogAction = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
-const AlertDialogCancel = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
+const AlertDialogCancel = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;
export {
diff --git a/demo/nextjs/components/ui/alert.tsx b/demo/nextjs/components/ui/alert.tsx
index ee12747d..fabb3eb1 100644
--- a/demo/nextjs/components/ui/alert.tsx
+++ b/demo/nextjs/components/ui/alert.tsx
@@ -19,41 +19,49 @@ const alertVariants = cva(
},
);
-const Alert = React.forwardRef<
- HTMLDivElement,
- React.HTMLAttributes & VariantProps
->(({ className, variant, ...props }, ref) => (
-
-));
+const Alert = (
+ {
+ ref,
+ className,
+ variant,
+ ...props
+ }
+) => ();
Alert.displayName = "Alert";
-const AlertTitle = React.forwardRef<
- HTMLParagraphElement,
- React.HTMLAttributes
->(({ className, ...props }, ref) => (
-
-));
+const AlertTitle = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.HTMLAttributes & {
+ ref: React.RefObject;
+ }
+) => ();
AlertTitle.displayName = "AlertTitle";
-const AlertDescription = React.forwardRef<
- HTMLParagraphElement,
- React.HTMLAttributes
->(({ className, ...props }, ref) => (
-
-));
+const AlertDescription = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.HTMLAttributes & {
+ ref: React.RefObject;
+ }
+) => ();
AlertDescription.displayName = "AlertDescription";
export { Alert, AlertTitle, AlertDescription };
diff --git a/demo/nextjs/components/ui/avatar.tsx b/demo/nextjs/components/ui/avatar.tsx
index d9f1b10c..a97dc70f 100644
--- a/demo/nextjs/components/ui/avatar.tsx
+++ b/demo/nextjs/components/ui/avatar.tsx
@@ -5,46 +5,55 @@ import * as AvatarPrimitive from "@radix-ui/react-avatar";
import { cn } from "@/lib/utils";
-const Avatar = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
+const Avatar = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
Avatar.displayName = AvatarPrimitive.Root.displayName;
-const AvatarImage = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
+const AvatarImage = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
AvatarImage.displayName = AvatarPrimitive.Image.displayName;
-const AvatarFallback = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
+const AvatarFallback = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
export { Avatar, AvatarImage, AvatarFallback };
diff --git a/demo/nextjs/components/ui/breadcrumb.tsx b/demo/nextjs/components/ui/breadcrumb.tsx
index a7efa2ee..b1699108 100644
--- a/demo/nextjs/components/ui/breadcrumb.tsx
+++ b/demo/nextjs/components/ui/breadcrumb.tsx
@@ -4,47 +4,55 @@ import { Slot } from "@radix-ui/react-slot";
import { cn } from "@/lib/utils";
-const Breadcrumb = React.forwardRef<
- HTMLElement,
- React.ComponentPropsWithoutRef<"nav"> & {
- separator?: React.ReactNode;
- }
->(({ ...props }, ref) => );
+const Breadcrumb = (
+ {
+ ref,
+ ...props
+ }
+) => ;
Breadcrumb.displayName = "Breadcrumb";
-const BreadcrumbList = React.forwardRef<
- HTMLOListElement,
- React.ComponentPropsWithoutRef<"ol">
->(({ className, ...props }, ref) => (
-
-));
+const BreadcrumbList = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef<"ol"> & {
+ ref: React.RefObject;
+ }
+) => (
);
BreadcrumbList.displayName = "BreadcrumbList";
-const BreadcrumbItem = React.forwardRef<
- HTMLLIElement,
- React.ComponentPropsWithoutRef<"li">
->(({ className, ...props }, ref) => (
-
-));
+const BreadcrumbItem = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef<"li"> & {
+ ref: React.RefObject;
+ }
+) => ();
BreadcrumbItem.displayName = "BreadcrumbItem";
-const BreadcrumbLink = React.forwardRef<
- HTMLAnchorElement,
- React.ComponentPropsWithoutRef<"a"> & {
- asChild?: boolean;
- }
->(({ asChild, className, ...props }, ref) => {
+const BreadcrumbLink = (
+ {
+ ref,
+ asChild,
+ className,
+ ...props
+ }
+) => {
const Comp = asChild ? Slot : "a";
return (
@@ -54,22 +62,25 @@ const BreadcrumbLink = React.forwardRef<
{...props}
/>
);
-});
+};
BreadcrumbLink.displayName = "BreadcrumbLink";
-const BreadcrumbPage = React.forwardRef<
- HTMLSpanElement,
- React.ComponentPropsWithoutRef<"span">
->(({ className, ...props }, ref) => (
-
-));
+const BreadcrumbPage = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef<"span"> & {
+ ref: React.RefObject;
+ }
+) => ();
BreadcrumbPage.displayName = "BreadcrumbPage";
const BreadcrumbSeparator = ({
diff --git a/demo/nextjs/components/ui/button.tsx b/demo/nextjs/components/ui/button.tsx
index 076213c1..b8d93d00 100644
--- a/demo/nextjs/components/ui/button.tsx
+++ b/demo/nextjs/components/ui/button.tsx
@@ -40,18 +40,27 @@ export interface ButtonProps
asChild?: boolean;
}
-const Button = React.forwardRef(
- ({ className, variant, size, asChild = false, ...props }, ref) => {
- const Comp = asChild ? Slot : "button";
- return (
-
- );
- },
-);
+const Button = (
+ {
+ ref,
+ className,
+ variant,
+ size,
+ asChild = false,
+ ...props
+ }: ButtonProps & {
+ ref: React.RefObject;
+ }
+) => {
+ const Comp = asChild ? Slot : "button";
+ return (
+
+ );
+};
Button.displayName = "Button";
export { Button, buttonVariants };
diff --git a/demo/nextjs/components/ui/card.tsx b/demo/nextjs/components/ui/card.tsx
index 78cd0c34..60a07bcb 100644
--- a/demo/nextjs/components/ui/card.tsx
+++ b/demo/nextjs/components/ui/card.tsx
@@ -2,75 +2,93 @@ import * as React from "react";
import { cn } from "@/lib/utils";
-const Card = React.forwardRef<
- HTMLDivElement,
- React.HTMLAttributes
->(({ className, ...props }, ref) => (
-
-));
+const Card = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.HTMLAttributes & {
+ ref: React.RefObject;
+ }
+) => ();
Card.displayName = "Card";
-const CardHeader = React.forwardRef<
- HTMLDivElement,
- React.HTMLAttributes
->(({ className, ...props }, ref) => (
-
-));
+const CardHeader = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.HTMLAttributes & {
+ ref: React.RefObject;
+ }
+) => ();
CardHeader.displayName = "CardHeader";
-const CardTitle = React.forwardRef<
- HTMLParagraphElement,
- React.HTMLAttributes
->(({ className, ...props }, ref) => (
-
-));
+const CardTitle = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.HTMLAttributes & {
+ ref: React.RefObject;
+ }
+) => ();
CardTitle.displayName = "CardTitle";
-const CardDescription = React.forwardRef<
- HTMLParagraphElement,
- React.HTMLAttributes
->(({ className, ...props }, ref) => (
-
-));
+const CardDescription = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.HTMLAttributes & {
+ ref: React.RefObject;
+ }
+) => ();
CardDescription.displayName = "CardDescription";
-const CardContent = React.forwardRef<
- HTMLDivElement,
- React.HTMLAttributes
->(({ className, ...props }, ref) => (
-
-));
+const CardContent = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.HTMLAttributes & {
+ ref: React.RefObject;
+ }
+) => ();
CardContent.displayName = "CardContent";
-const CardFooter = React.forwardRef<
- HTMLDivElement,
- React.HTMLAttributes
->(({ className, ...props }, ref) => (
-
-));
+const CardFooter = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.HTMLAttributes & {
+ ref: React.RefObject;
+ }
+) => ();
CardFooter.displayName = "CardFooter";
export {
diff --git a/demo/nextjs/components/ui/carousel.tsx b/demo/nextjs/components/ui/carousel.tsx
index bb26ee98..ea3a750a 100644
--- a/demo/nextjs/components/ui/carousel.tsx
+++ b/demo/nextjs/components/ui/carousel.tsx
@@ -42,118 +42,118 @@ function useCarousel() {
return context;
}
-const Carousel = React.forwardRef<
- HTMLDivElement,
- React.HTMLAttributes & CarouselProps
->(
- (
- {
- orientation = "horizontal",
- opts,
- setApi,
- plugins,
- className,
- children,
- ...props
- },
- ref,
- ) => {
- const [carouselRef, api] = useEmblaCarousel(
- {
- ...opts,
- axis: orientation === "horizontal" ? "x" : "y",
- },
- plugins,
- );
- const [canScrollPrev, setCanScrollPrev] = React.useState(false);
- const [canScrollNext, setCanScrollNext] = React.useState(false);
+const Carousel = (
+ {
+ ref,
+ orientation = "horizontal",
+ opts,
+ setApi,
+ plugins,
+ className,
+ children,
+ ...props
+ }
+) => {
+ const [carouselRef, api] = useEmblaCarousel(
+ {
+ ...opts,
+ axis: orientation === "horizontal" ? "x" : "y",
+ },
+ plugins,
+ );
+ const [canScrollPrev, setCanScrollPrev] = React.useState(false);
+ const [canScrollNext, setCanScrollNext] = React.useState(false);
- const onSelect = React.useCallback((api: CarouselApi) => {
- if (!api) {
- return;
- }
+ const onSelect = React.useCallback((api: CarouselApi) => {
+ if (!api) {
+ return;
+ }
- setCanScrollPrev(api.canScrollPrev());
- setCanScrollNext(api.canScrollNext());
- }, []);
+ setCanScrollPrev(api.canScrollPrev());
+ setCanScrollNext(api.canScrollNext());
+ }, []);
- const scrollPrev = React.useCallback(() => {
- api?.scrollPrev();
- }, [api]);
+ const scrollPrev = React.useCallback(() => {
+ api?.scrollPrev();
+ }, [api]);
- const scrollNext = React.useCallback(() => {
- api?.scrollNext();
- }, [api]);
+ const scrollNext = React.useCallback(() => {
+ api?.scrollNext();
+ }, [api]);
- const handleKeyDown = React.useCallback(
- (event: React.KeyboardEvent) => {
- if (event.key === "ArrowLeft") {
- event.preventDefault();
- scrollPrev();
- } else if (event.key === "ArrowRight") {
- event.preventDefault();
- scrollNext();
- }
- },
- [scrollPrev, scrollNext],
- );
+ const handleKeyDown = React.useCallback(
+ (event: React.KeyboardEvent) => {
+ if (event.key === "ArrowLeft") {
+ event.preventDefault();
+ scrollPrev();
+ } else if (event.key === "ArrowRight") {
+ event.preventDefault();
+ scrollNext();
+ }
+ },
+ [scrollPrev, scrollNext],
+ );
- React.useEffect(() => {
- if (!api || !setApi) {
- return;
- }
+ React.useEffect(() => {
+ if (!api || !setApi) {
+ return;
+ }
- setApi(api);
- }, [api, setApi]);
+ setApi(api);
+ }, [api, setApi]);
- React.useEffect(() => {
- if (!api) {
- return;
- }
+ React.useEffect(() => {
+ if (!api) {
+ return;
+ }
- onSelect(api);
- api.on("reInit", onSelect);
- api.on("select", onSelect);
+ onSelect(api);
+ api.on("reInit", onSelect);
+ api.on("select", onSelect);
- return () => {
- api?.off("select", onSelect);
- };
- }, [api, onSelect]);
+ return () => {
+ api?.off("select", onSelect);
+ };
+ }, [api, onSelect]);
- return (
-
-
- {children}
-
-
- );
- },
-);
+ return (
+
+
+ {children}
+
+
+ );
+};
Carousel.displayName = "Carousel";
-const CarouselContent = React.forwardRef<
- HTMLDivElement,
- React.HTMLAttributes
->(({ className, ...props }, ref) => {
+const CarouselContent = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.HTMLAttributes & {
+ ref: React.RefObject;
+ }
+) => {
const { carouselRef, orientation } = useCarousel();
return (
@@ -169,13 +169,18 @@ const CarouselContent = React.forwardRef<
/>
);
-});
+};
CarouselContent.displayName = "CarouselContent";
-const CarouselItem = React.forwardRef<
- HTMLDivElement,
- React.HTMLAttributes
->(({ className, ...props }, ref) => {
+const CarouselItem = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.HTMLAttributes & {
+ ref: React.RefObject;
+ }
+) => {
const { orientation } = useCarousel();
return (
@@ -191,13 +196,20 @@ const CarouselItem = React.forwardRef<
{...props}
/>
);
-});
+};
CarouselItem.displayName = "CarouselItem";
-const CarouselPrevious = React.forwardRef<
- HTMLButtonElement,
- React.ComponentProps
->(({ className, variant = "outline", size = "icon", ...props }, ref) => {
+const CarouselPrevious = (
+ {
+ ref,
+ className,
+ variant = "outline",
+ size = "icon",
+ ...props
+ }: React.ComponentProps & {
+ ref: React.RefObject;
+ }
+) => {
const { orientation, scrollPrev, canScrollPrev } = useCarousel();
return (
@@ -220,13 +232,20 @@ const CarouselPrevious = React.forwardRef<
Previous slide
);
-});
+};
CarouselPrevious.displayName = "CarouselPrevious";
-const CarouselNext = React.forwardRef<
- HTMLButtonElement,
- React.ComponentProps
->(({ className, variant = "outline", size = "icon", ...props }, ref) => {
+const CarouselNext = (
+ {
+ ref,
+ className,
+ variant = "outline",
+ size = "icon",
+ ...props
+ }: React.ComponentProps & {
+ ref: React.RefObject;
+ }
+) => {
const { orientation, scrollNext, canScrollNext } = useCarousel();
return (
@@ -249,7 +268,7 @@ const CarouselNext = React.forwardRef<
Next slide
);
-});
+};
CarouselNext.displayName = "CarouselNext";
export {
diff --git a/demo/nextjs/components/ui/chart.tsx b/demo/nextjs/components/ui/chart.tsx
index aa3d5f99..7bff7d23 100644
--- a/demo/nextjs/components/ui/chart.tsx
+++ b/demo/nextjs/components/ui/chart.tsx
@@ -34,15 +34,16 @@ function useChart() {
return context;
}
-const ChartContainer = React.forwardRef<
- HTMLDivElement,
- React.ComponentProps<"div"> & {
- config: ChartConfig;
- children: React.ComponentProps<
- typeof RechartsPrimitive.ResponsiveContainer
- >["children"];
- }
->(({ id, className, children, config, ...props }, ref) => {
+const ChartContainer = (
+ {
+ ref,
+ id,
+ className,
+ children,
+ config,
+ ...props
+ }
+) => {
const uniqueId = React.useId();
const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
@@ -64,7 +65,7 @@ const ChartContainer = React.forwardRef<
);
-});
+};
ChartContainer.displayName = "Chart";
const ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {
@@ -102,218 +103,203 @@ ${colorConfig
const ChartTooltip = RechartsPrimitive.Tooltip;
-const ChartTooltipContent = React.forwardRef<
- HTMLDivElement,
- React.ComponentProps &
- React.ComponentProps<"div"> & {
- hideLabel?: boolean;
- hideIndicator?: boolean;
- indicator?: "line" | "dot" | "dashed";
- nameKey?: string;
- labelKey?: string;
- }
->(
- (
- {
- active,
- payload,
- className,
- indicator = "dot",
- hideLabel = false,
- hideIndicator = false,
- label,
- labelFormatter,
- labelClassName,
- formatter,
- color,
- nameKey,
- labelKey,
- },
- ref,
- ) => {
- const { config } = useChart();
+const ChartTooltipContent = (
+ {
+ ref,
+ active,
+ payload,
+ className,
+ indicator = "dot",
+ hideLabel = false,
+ hideIndicator = false,
+ label,
+ labelFormatter,
+ labelClassName,
+ formatter,
+ color,
+ nameKey,
+ labelKey
+ }
+) => {
+ const { config } = useChart();
- const tooltipLabel = React.useMemo(() => {
- if (hideLabel || !payload?.length) {
- return null;
- }
+ const tooltipLabel = React.useMemo(() => {
+ if (hideLabel || !payload?.length) {
+ return null;
+ }
- const [item] = payload;
- const key = `${labelKey || item.dataKey || item.name || "value"}`;
- const itemConfig = getPayloadConfigFromPayload(config, item, key);
- const value =
- !labelKey && typeof label === "string"
- ? config[label as keyof typeof config]?.label || label
- : itemConfig?.label;
+ const [item] = payload;
+ const key = `${labelKey || item.dataKey || item.name || "value"}`;
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
+ const value =
+ !labelKey && typeof label === "string"
+ ? config[label as keyof typeof config]?.label || label
+ : itemConfig?.label;
- if (labelFormatter) {
- return (
-
- {labelFormatter(value, payload)}
-
- );
- }
+ if (labelFormatter) {
+ return (
+
+ {labelFormatter(value, payload)}
+
+ );
+ }
- if (!value) {
- return null;
- }
+ if (!value) {
+ return null;
+ }
- return {value}
;
- }, [
- label,
- labelFormatter,
- payload,
- hideLabel,
- labelClassName,
- config,
- labelKey,
- ]);
+ return {value}
;
+ }, [
+ label,
+ labelFormatter,
+ payload,
+ hideLabel,
+ labelClassName,
+ config,
+ labelKey,
+ ]);
- if (!active || !payload?.length) {
- return null;
- }
+ if (!active || !payload?.length) {
+ return null;
+ }
- const nestLabel = payload.length === 1 && indicator !== "dot";
+ const nestLabel = payload.length === 1 && indicator !== "dot";
- return (
-
- {!nestLabel ? tooltipLabel : null}
-
- {payload.map((item, index) => {
- const key = `${nameKey || item.name || item.dataKey || "value"}`;
- const itemConfig = getPayloadConfigFromPayload(config, item, key);
- const indicatorColor = color || item.payload.fill || item.color;
+ return (
+
+ {!nestLabel ? tooltipLabel : null}
+
+ {payload.map((item, index) => {
+ const key = `${nameKey || item.name || item.dataKey || "value"}`;
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
+ const indicatorColor = color || item.payload.fill || item.color;
- return (
-
svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground",
- indicator === "dot" && "items-center",
- )}
- >
- {formatter && item?.value !== undefined && item.name ? (
- formatter(item.value, item.name, item, index, item.payload)
- ) : (
- <>
- {itemConfig?.icon ? (
-
- ) : (
- !hideIndicator && (
-
- )
- )}
-
-
- {nestLabel ? tooltipLabel : null}
-
- {itemConfig?.label || item.name}
-
-
- {item.value && (
-
- {item.value.toLocaleString()}
-
- )}
-
- >
- )}
-
- );
- })}
-
-
- );
- },
-);
+ return (
+
svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground",
+ indicator === "dot" && "items-center",
+ )}
+ >
+ {formatter && item?.value !== undefined && item.name ? (
+ formatter(item.value, item.name, item, index, item.payload)
+ ) : (
+ <>
+ {itemConfig?.icon ? (
+
+ ) : (
+ !hideIndicator && (
+
+ )
+ )}
+
+
+ {nestLabel ? tooltipLabel : null}
+
+ {itemConfig?.label || item.name}
+
+
+ {item.value && (
+
+ {item.value.toLocaleString()}
+
+ )}
+
+ >
+ )}
+
+ );
+ })}
+
+
+ );
+};
ChartTooltipContent.displayName = "ChartTooltip";
const ChartLegend = RechartsPrimitive.Legend;
-const ChartLegendContent = React.forwardRef<
- HTMLDivElement,
- React.ComponentProps<"div"> &
- Pick & {
- hideIcon?: boolean;
- nameKey?: string;
- }
->(
- (
- { className, hideIcon = false, payload, verticalAlign = "bottom", nameKey },
- ref,
- ) => {
- const { config } = useChart();
+const ChartLegendContent = (
+ {
+ ref,
+ className,
+ hideIcon = false,
+ payload,
+ verticalAlign = "bottom",
+ nameKey
+ }
+) => {
+ const { config } = useChart();
- if (!payload?.length) {
- return null;
- }
+ if (!payload?.length) {
+ return null;
+ }
- return (
-
- {payload.map((item) => {
- const key = `${nameKey || item.dataKey || "value"}`;
- const itemConfig = getPayloadConfigFromPayload(config, item, key);
+ return (
+
+ {payload.map((item) => {
+ const key = `${nameKey || item.dataKey || "value"}`;
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
- return (
-
svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground",
- )}
- >
- {itemConfig?.icon && !hideIcon ? (
-
- ) : (
-
- )}
- {itemConfig?.label}
-
- );
- })}
-
- );
- },
-);
+ return (
+
svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground",
+ )}
+ >
+ {itemConfig?.icon && !hideIcon ? (
+
+ ) : (
+
+ )}
+ {itemConfig?.label}
+
+ );
+ })}
+
+ );
+};
ChartLegendContent.displayName = "ChartLegend";
// Helper to extract item config from a payload.
diff --git a/demo/nextjs/components/ui/checkbox.tsx b/demo/nextjs/components/ui/checkbox.tsx
index 2a7e8b86..ea730ccb 100644
--- a/demo/nextjs/components/ui/checkbox.tsx
+++ b/demo/nextjs/components/ui/checkbox.tsx
@@ -6,25 +6,28 @@ import { CheckIcon } from "@radix-ui/react-icons";
import { cn } from "@/lib/utils";
-const Checkbox = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-
-
-
-
-));
+const Checkbox = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => (
+
+
+
+);
Checkbox.displayName = CheckboxPrimitive.Root.displayName;
export { Checkbox };
diff --git a/demo/nextjs/components/ui/command.tsx b/demo/nextjs/components/ui/command.tsx
index 96a1c977..b7c1abc2 100644
--- a/demo/nextjs/components/ui/command.tsx
+++ b/demo/nextjs/components/ui/command.tsx
@@ -8,19 +8,22 @@ import { Command as CommandPrimitive } from "cmdk";
import { cn } from "@/lib/utils";
import { Dialog, DialogContent } from "@/components/ui/dialog";
-const Command = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
+const Command = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
Command.displayName = CommandPrimitive.displayName;
interface CommandDialogProps extends DialogProps {}
@@ -37,92 +40,109 @@ const CommandDialog = ({ children, ...props }: CommandDialogProps) => {
);
};
-const CommandInput = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-
-
-
-));
+const CommandInput = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => (
+
+
+
);
CommandInput.displayName = CommandPrimitive.Input.displayName;
-const CommandList = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
+const CommandList = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
CommandList.displayName = CommandPrimitive.List.displayName;
-const CommandEmpty = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->((props, ref) => (
-
-));
+const CommandEmpty = (
+ {
+ ref,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
CommandEmpty.displayName = CommandPrimitive.Empty.displayName;
-const CommandGroup = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
+const CommandGroup = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
CommandGroup.displayName = CommandPrimitive.Group.displayName;
-const CommandSeparator = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
+const CommandSeparator = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
CommandSeparator.displayName = CommandPrimitive.Separator.displayName;
-const CommandItem = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
+const CommandItem = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
CommandItem.displayName = CommandPrimitive.Item.displayName;
diff --git a/demo/nextjs/components/ui/context-menu.tsx b/demo/nextjs/components/ui/context-menu.tsx
index 810feda8..edbfcdb7 100644
--- a/demo/nextjs/components/ui/context-menu.tsx
+++ b/demo/nextjs/components/ui/context-menu.tsx
@@ -22,151 +22,170 @@ const ContextMenuSub = ContextMenuPrimitive.Sub;
const ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;
-const ContextMenuSubTrigger = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef & {
- inset?: boolean;
- }
->(({ className, inset, children, ...props }, ref) => (
-
- {children}
-
-
-));
+const ContextMenuSubTrigger = (
+ {
+ ref,
+ className,
+ inset,
+ children,
+ ...props
+ }
+) => (
+ {children}
+
+);
ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;
-const ContextMenuSubContent = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
+const ContextMenuSubContent = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
ContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName;
-const ContextMenuContent = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-
-
-));
+const ContextMenuContent = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => (
+
+);
ContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;
-const ContextMenuItem = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef & {
- inset?: boolean;
- }
->(({ className, inset, ...props }, ref) => (
-
-));
+const ContextMenuItem = (
+ {
+ ref,
+ className,
+ inset,
+ ...props
+ }
+) => ();
ContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName;
-const ContextMenuCheckboxItem = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, children, checked, ...props }, ref) => (
-
-
-
-
-
-
- {children}
-
-));
+const ContextMenuCheckboxItem = (
+ {
+ ref,
+ className,
+ children,
+ checked,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => (
+
+
+
+
+
+ {children}
+);
ContextMenuCheckboxItem.displayName =
ContextMenuPrimitive.CheckboxItem.displayName;
-const ContextMenuRadioItem = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, children, ...props }, ref) => (
-
-
-
-
-
-
- {children}
-
-));
+const ContextMenuRadioItem = (
+ {
+ ref,
+ className,
+ children,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => (
+
+
+
+
+
+ {children}
+);
ContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName;
-const ContextMenuLabel = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef & {
- inset?: boolean;
- }
->(({ className, inset, ...props }, ref) => (
-
-));
+const ContextMenuLabel = (
+ {
+ ref,
+ className,
+ inset,
+ ...props
+ }
+) => ();
ContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName;
-const ContextMenuSeparator = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
+const ContextMenuSeparator = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
ContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName;
const ContextMenuShortcut = ({
diff --git a/demo/nextjs/components/ui/dialog.tsx b/demo/nextjs/components/ui/dialog.tsx
index ee3823fd..7eacf6b0 100644
--- a/demo/nextjs/components/ui/dialog.tsx
+++ b/demo/nextjs/components/ui/dialog.tsx
@@ -14,43 +14,50 @@ const DialogPortal = DialogPrimitive.Portal;
const DialogClose = DialogPrimitive.Close;
-const DialogOverlay = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
+const DialogOverlay = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
-const DialogContent = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, children, ...props }, ref) => (
-
-
-
- {children}
-
-
- Close
-
-
-
-));
+const DialogContent = (
+ {
+ ref,
+ className,
+ children,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => (
+
+
+ {children}
+
+
+ Close
+
+
+);
DialogContent.displayName = DialogPrimitive.Content.displayName;
const DialogHeader = ({
@@ -81,31 +88,37 @@ const DialogFooter = ({
);
DialogFooter.displayName = "DialogFooter";
-const DialogTitle = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
+const DialogTitle = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
DialogTitle.displayName = DialogPrimitive.Title.displayName;
-const DialogDescription = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
+const DialogDescription = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
DialogDescription.displayName = DialogPrimitive.Description.displayName;
export {
diff --git a/demo/nextjs/components/ui/drawer.tsx b/demo/nextjs/components/ui/drawer.tsx
index 224fb339..f8eaff7f 100644
--- a/demo/nextjs/components/ui/drawer.tsx
+++ b/demo/nextjs/components/ui/drawer.tsx
@@ -22,37 +22,44 @@ const DrawerPortal = DrawerPrimitive.Portal;
const DrawerClose = DrawerPrimitive.Close;
-const DrawerOverlay = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
+const DrawerOverlay = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
DrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName;
-const DrawerContent = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, children, ...props }, ref) => (
-
-
-
-
- {children}
-
-
-));
+const DrawerContent = (
+ {
+ ref,
+ className,
+ children,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => (
+
+
+
+ {children}
+
+);
DrawerContent.displayName = "DrawerContent";
const DrawerHeader = ({
@@ -77,31 +84,37 @@ const DrawerFooter = ({
);
DrawerFooter.displayName = "DrawerFooter";
-const DrawerTitle = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
+const DrawerTitle = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
DrawerTitle.displayName = DrawerPrimitive.Title.displayName;
-const DrawerDescription = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
+const DrawerDescription = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
DrawerDescription.displayName = DrawerPrimitive.Description.displayName;
export {
diff --git a/demo/nextjs/components/ui/dropdown-menu.tsx b/demo/nextjs/components/ui/dropdown-menu.tsx
index eb1dc44b..526f0953 100644
--- a/demo/nextjs/components/ui/dropdown-menu.tsx
+++ b/demo/nextjs/components/ui/dropdown-menu.tsx
@@ -22,155 +22,175 @@ const DropdownMenuSub = DropdownMenuPrimitive.Sub;
const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
-const DropdownMenuSubTrigger = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef & {
- inset?: boolean;
- }
->(({ className, inset, children, ...props }, ref) => (
-
- {children}
-
-
-));
+const DropdownMenuSubTrigger = (
+ {
+ ref,
+ className,
+ inset,
+ children,
+ ...props
+ }
+) => (
+ {children}
+
+);
DropdownMenuSubTrigger.displayName =
DropdownMenuPrimitive.SubTrigger.displayName;
-const DropdownMenuSubContent = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
+const DropdownMenuSubContent = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
DropdownMenuSubContent.displayName =
DropdownMenuPrimitive.SubContent.displayName;
-const DropdownMenuContent = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, sideOffset = 4, ...props }, ref) => (
-
-
-
-));
+const DropdownMenuContent = (
+ {
+ ref,
+ className,
+ sideOffset = 4,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => (
+
+);
DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
-const DropdownMenuItem = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef & {
- inset?: boolean;
- }
->(({ className, inset, ...props }, ref) => (
-
-));
+const DropdownMenuItem = (
+ {
+ ref,
+ className,
+ inset,
+ ...props
+ }
+) => ();
DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
-const DropdownMenuCheckboxItem = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, children, checked, ...props }, ref) => (
-
-
-
-
-
-
- {children}
-
-));
+const DropdownMenuCheckboxItem = (
+ {
+ ref,
+ className,
+ children,
+ checked,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => (
+
+
+
+
+
+ {children}
+);
DropdownMenuCheckboxItem.displayName =
DropdownMenuPrimitive.CheckboxItem.displayName;
-const DropdownMenuRadioItem = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, children, ...props }, ref) => (
-
-
-
-
-
-
- {children}
-
-));
+const DropdownMenuRadioItem = (
+ {
+ ref,
+ className,
+ children,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => (
+
+
+
+
+
+ {children}
+);
DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
-const DropdownMenuLabel = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef & {
- inset?: boolean;
- }
->(({ className, inset, ...props }, ref) => (
-
-));
+const DropdownMenuLabel = (
+ {
+ ref,
+ className,
+ inset,
+ ...props
+ }
+) => ();
DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
-const DropdownMenuSeparator = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
+const DropdownMenuSeparator = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
const DropdownMenuShortcut = ({
diff --git a/demo/nextjs/components/ui/form.tsx b/demo/nextjs/components/ui/form.tsx
index f15a05c5..867de34d 100644
--- a/demo/nextjs/components/ui/form.tsx
+++ b/demo/nextjs/components/ui/form.tsx
@@ -72,10 +72,15 @@ const FormItemContext = React.createContext(
{} as FormItemContextValue,
);
-const FormItem = React.forwardRef<
- HTMLDivElement,
- React.HTMLAttributes
->(({ className, ...props }, ref) => {
+const FormItem = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.HTMLAttributes & {
+ ref: React.RefObject;
+ }
+) => {
const id = React.useId();
return (
@@ -83,13 +88,18 @@ const FormItem = React.forwardRef<
);
-});
+};
FormItem.displayName = "FormItem";
-const FormLabel = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => {
+const FormLabel = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => {
const { error, formItemId } = useFormField();
return (
@@ -100,13 +110,17 @@ const FormLabel = React.forwardRef<
{...props}
/>
);
-});
+};
FormLabel.displayName = "FormLabel";
-const FormControl = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ ...props }, ref) => {
+const FormControl = (
+ {
+ ref,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => {
const { error, formItemId, formDescriptionId, formMessageId } =
useFormField();
@@ -123,13 +137,18 @@ const FormControl = React.forwardRef<
{...props}
/>
);
-});
+};
FormControl.displayName = "FormControl";
-const FormDescription = React.forwardRef<
- HTMLParagraphElement,
- React.HTMLAttributes
->(({ className, ...props }, ref) => {
+const FormDescription = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.HTMLAttributes & {
+ ref: React.RefObject;
+ }
+) => {
const { formDescriptionId } = useFormField();
return (
@@ -140,13 +159,19 @@ const FormDescription = React.forwardRef<
{...props}
/>
);
-});
+};
FormDescription.displayName = "FormDescription";
-const FormMessage = React.forwardRef<
- HTMLParagraphElement,
- React.HTMLAttributes
->(({ className, children, ...props }, ref) => {
+const FormMessage = (
+ {
+ ref,
+ className,
+ children,
+ ...props
+ }: React.HTMLAttributes & {
+ ref: React.RefObject;
+ }
+) => {
const { error, formMessageId } = useFormField();
const body = error ? String(error?.message) : children;
@@ -164,7 +189,7 @@ const FormMessage = React.forwardRef<
{body}
);
-});
+};
FormMessage.displayName = "FormMessage";
export {
diff --git a/demo/nextjs/components/ui/hover-card.tsx b/demo/nextjs/components/ui/hover-card.tsx
index 5fe6678a..d9f3c2c4 100644
--- a/demo/nextjs/components/ui/hover-card.tsx
+++ b/demo/nextjs/components/ui/hover-card.tsx
@@ -9,21 +9,26 @@ const HoverCard = HoverCardPrimitive.Root;
const HoverCardTrigger = HoverCardPrimitive.Trigger;
-const HoverCardContent = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, align = "center", sideOffset = 4, ...props }, ref) => (
-
-));
+const HoverCardContent = (
+ {
+ ref,
+ className,
+ align = "center",
+ sideOffset = 4,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
HoverCardContent.displayName = HoverCardPrimitive.Content.displayName;
export { HoverCard, HoverCardTrigger, HoverCardContent };
diff --git a/demo/nextjs/components/ui/input-otp.tsx b/demo/nextjs/components/ui/input-otp.tsx
index 0fa055a3..210255f7 100644
--- a/demo/nextjs/components/ui/input-otp.tsx
+++ b/demo/nextjs/components/ui/input-otp.tsx
@@ -6,34 +6,45 @@ import { OTPInput, OTPInputContext } from "input-otp";
import { cn } from "@/lib/utils";
-const InputOTP = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, containerClassName, ...props }, ref) => (
-
-));
+const InputOTP = (
+ {
+ ref,
+ className,
+ containerClassName,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
InputOTP.displayName = "InputOTP";
-const InputOTPGroup = React.forwardRef<
- React.ElementRef<"div">,
- React.ComponentPropsWithoutRef<"div">
->(({ className, ...props }, ref) => (
-
-));
+const InputOTPGroup = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef<"div"> & {
+ ref: React.RefObject>;
+ }
+) => ();
InputOTPGroup.displayName = "InputOTPGroup";
-const InputOTPSlot = React.forwardRef<
- React.ElementRef<"div">,
- React.ComponentPropsWithoutRef<"div"> & { index: number }
->(({ index, className, ...props }, ref) => {
+const InputOTPSlot = (
+ {
+ ref,
+ index,
+ className,
+ ...props
+ }
+) => {
const inputOTPContext = React.useContext(OTPInputContext);
const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index];
@@ -55,17 +66,19 @@ const InputOTPSlot = React.forwardRef<
)}
);
-});
+};
InputOTPSlot.displayName = "InputOTPSlot";
-const InputOTPSeparator = React.forwardRef<
- React.ElementRef<"div">,
- React.ComponentPropsWithoutRef<"div">
->(({ ...props }, ref) => (
-
-
-
-));
+const InputOTPSeparator = (
+ {
+ ref,
+ ...props
+ }: React.ComponentPropsWithoutRef<"div"> & {
+ ref: React.RefObject>;
+ }
+) => (
+
+
);
InputOTPSeparator.displayName = "InputOTPSeparator";
export { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator };
diff --git a/demo/nextjs/components/ui/input.tsx b/demo/nextjs/components/ui/input.tsx
index 9f91de4f..63fa8e48 100644
--- a/demo/nextjs/components/ui/input.tsx
+++ b/demo/nextjs/components/ui/input.tsx
@@ -5,21 +5,28 @@ import { cn } from "@/lib/utils";
export interface InputProps
extends React.InputHTMLAttributes {}
-const Input = React.forwardRef(
- ({ className, type, ...props }, ref) => {
- return (
-
- );
- },
-);
+const Input = (
+ {
+ ref,
+ className,
+ type,
+ ...props
+ }: InputProps & {
+ ref: React.RefObject;
+ }
+) => {
+ return (
+
+ );
+};
Input.displayName = "Input";
export { Input };
diff --git a/demo/nextjs/components/ui/label.tsx b/demo/nextjs/components/ui/label.tsx
index 3761db92..4d326da6 100644
--- a/demo/nextjs/components/ui/label.tsx
+++ b/demo/nextjs/components/ui/label.tsx
@@ -10,17 +10,17 @@ const labelVariants = cva(
"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
);
-const Label = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef &
- VariantProps
->(({ className, ...props }, ref) => (
-
-));
+const Label = (
+ {
+ ref,
+ className,
+ ...props
+ }
+) => ();
Label.displayName = LabelPrimitive.Root.displayName;
export { Label };
diff --git a/demo/nextjs/components/ui/menubar.tsx b/demo/nextjs/components/ui/menubar.tsx
index 9fde14df..65708a40 100644
--- a/demo/nextjs/components/ui/menubar.tsx
+++ b/demo/nextjs/components/ui/menubar.tsx
@@ -20,188 +20,211 @@ const MenubarSub = MenubarPrimitive.Sub;
const MenubarRadioGroup = MenubarPrimitive.RadioGroup;
-const Menubar = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
+const Menubar = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
Menubar.displayName = MenubarPrimitive.Root.displayName;
-const MenubarTrigger = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
+const MenubarTrigger = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
MenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName;
-const MenubarSubTrigger = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef & {
- inset?: boolean;
- }
->(({ className, inset, children, ...props }, ref) => (
-
- {children}
-
-
-));
+const MenubarSubTrigger = (
+ {
+ ref,
+ className,
+ inset,
+ children,
+ ...props
+ }
+) => (
+ {children}
+
+);
MenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName;
-const MenubarSubContent = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
+const MenubarSubContent = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
MenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName;
-const MenubarContent = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(
- (
- { className, align = "start", alignOffset = -4, sideOffset = 8, ...props },
- ref,
- ) => (
-
-
-
- ),
-);
+const MenubarContent = (
+ {
+ ref,
+ className,
+ align = "start",
+ alignOffset = -4,
+ sideOffset = 8,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => (
+
+);
MenubarContent.displayName = MenubarPrimitive.Content.displayName;
-const MenubarItem = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef & {
- inset?: boolean;
- }
->(({ className, inset, ...props }, ref) => (
-
-));
+const MenubarItem = (
+ {
+ ref,
+ className,
+ inset,
+ ...props
+ }
+) => ();
MenubarItem.displayName = MenubarPrimitive.Item.displayName;
-const MenubarCheckboxItem = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, children, checked, ...props }, ref) => (
-
-
-
-
-
-
- {children}
-
-));
+const MenubarCheckboxItem = (
+ {
+ ref,
+ className,
+ children,
+ checked,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => (
+
+
+
+
+
+ {children}
+);
MenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName;
-const MenubarRadioItem = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, children, ...props }, ref) => (
-
-
-
-
-
-
- {children}
-
-));
+const MenubarRadioItem = (
+ {
+ ref,
+ className,
+ children,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => (
+
+
+
+
+
+ {children}
+);
MenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName;
-const MenubarLabel = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef & {
- inset?: boolean;
- }
->(({ className, inset, ...props }, ref) => (
-
-));
+const MenubarLabel = (
+ {
+ ref,
+ className,
+ inset,
+ ...props
+ }
+) => ();
MenubarLabel.displayName = MenubarPrimitive.Label.displayName;
-const MenubarSeparator = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
+const MenubarSeparator = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
MenubarSeparator.displayName = MenubarPrimitive.Separator.displayName;
const MenubarShortcut = ({
diff --git a/demo/nextjs/components/ui/navigation-menu.tsx b/demo/nextjs/components/ui/navigation-menu.tsx
index d115c60d..0486eeb3 100644
--- a/demo/nextjs/components/ui/navigation-menu.tsx
+++ b/demo/nextjs/components/ui/navigation-menu.tsx
@@ -5,37 +5,44 @@ import { cva } from "class-variance-authority";
import { cn } from "@/lib/utils";
-const NavigationMenu = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, children, ...props }, ref) => (
-
- {children}
-
-
-));
+const NavigationMenu = (
+ {
+ ref,
+ className,
+ children,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => (
+ {children}
+
+);
NavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName;
-const NavigationMenuList = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
+const NavigationMenuList = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
NavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName;
const NavigationMenuItem = NavigationMenuPrimitive.Item;
@@ -44,74 +51,87 @@ const navigationMenuTriggerStyle = cva(
"group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50",
);
-const NavigationMenuTrigger = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, children, ...props }, ref) => (
-
- {children}{" "}
-
-
-));
+const NavigationMenuTrigger = (
+ {
+ ref,
+ className,
+ children,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => (
+ {children}{" "}
+
+);
NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName;
-const NavigationMenuContent = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
+const NavigationMenuContent = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName;
const NavigationMenuLink = NavigationMenuPrimitive.Link;
-const NavigationMenuViewport = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-
-
-));
+const NavigationMenuViewport = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => (
+
+
);
NavigationMenuViewport.displayName =
NavigationMenuPrimitive.Viewport.displayName;
-const NavigationMenuIndicator = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-
-
-));
+const NavigationMenuIndicator = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => (
+
+);
NavigationMenuIndicator.displayName =
NavigationMenuPrimitive.Indicator.displayName;
diff --git a/demo/nextjs/components/ui/pagination.tsx b/demo/nextjs/components/ui/pagination.tsx
index 00731b58..d5f07688 100644
--- a/demo/nextjs/components/ui/pagination.tsx
+++ b/demo/nextjs/components/ui/pagination.tsx
@@ -18,24 +18,30 @@ const Pagination = ({ className, ...props }: React.ComponentProps<"nav">) => (
);
Pagination.displayName = "Pagination";
-const PaginationContent = React.forwardRef<
- HTMLUListElement,
- React.ComponentProps<"ul">
->(({ className, ...props }, ref) => (
-
-));
+const PaginationContent = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentProps<"ul"> & {
+ ref: React.RefObject;
+ }
+) => ();
PaginationContent.displayName = "PaginationContent";
-const PaginationItem = React.forwardRef<
- HTMLLIElement,
- React.ComponentProps<"li">
->(({ className, ...props }, ref) => (
-
-));
+const PaginationItem = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentProps<"li"> & {
+ ref: React.RefObject;
+ }
+) => ();
PaginationItem.displayName = "PaginationItem";
type PaginationLinkProps = {
diff --git a/demo/nextjs/components/ui/password-input.tsx b/demo/nextjs/components/ui/password-input.tsx
index e44fc600..f0bdcd80 100644
--- a/demo/nextjs/components/ui/password-input.tsx
+++ b/demo/nextjs/components/ui/password-input.tsx
@@ -7,52 +7,58 @@ import { Button } from "@/components/ui/button";
import { Input, type InputProps } from "@/components/ui/input";
import { cn } from "@/lib/utils";
-const PasswordInput = React.forwardRef(
- ({ className, ...props }, ref) => {
- const [showPassword, setShowPassword] = React.useState(false);
- const disabled =
- props.value === "" || props.value === undefined || props.disabled;
+const PasswordInput = (
+ {
+ ref,
+ className,
+ ...props
+ }: InputProps & {
+ ref: React.RefObject;
+ }
+) => {
+ const [showPassword, setShowPassword] = React.useState(false);
+ const disabled =
+ props.value === "" || props.value === undefined || props.disabled;
- return (
-
+ );
+};
PasswordInput.displayName = "PasswordInput";
export { PasswordInput };
diff --git a/demo/nextjs/components/ui/popover.tsx b/demo/nextjs/components/ui/popover.tsx
index 537414cf..5b400682 100644
--- a/demo/nextjs/components/ui/popover.tsx
+++ b/demo/nextjs/components/ui/popover.tsx
@@ -11,23 +11,28 @@ const PopoverTrigger = PopoverPrimitive.Trigger;
const PopoverAnchor = PopoverPrimitive.Anchor;
-const PopoverContent = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, align = "center", sideOffset = 4, ...props }, ref) => (
-
-
-
-));
+const PopoverContent = (
+ {
+ ref,
+ className,
+ align = "center",
+ sideOffset = 4,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => (
+
+);
PopoverContent.displayName = PopoverPrimitive.Content.displayName;
export { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };
diff --git a/demo/nextjs/components/ui/progress.tsx b/demo/nextjs/components/ui/progress.tsx
index 655d9659..474a8818 100644
--- a/demo/nextjs/components/ui/progress.tsx
+++ b/demo/nextjs/components/ui/progress.tsx
@@ -5,24 +5,28 @@ import * as ProgressPrimitive from "@radix-ui/react-progress";
import { cn } from "@/lib/utils";
-const Progress = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, value, ...props }, ref) => (
-
-
-
-));
+const Progress = (
+ {
+ ref,
+ className,
+ value,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => (
+
+);
Progress.displayName = ProgressPrimitive.Root.displayName;
export { Progress };
diff --git a/demo/nextjs/components/ui/radio-group.tsx b/demo/nextjs/components/ui/radio-group.tsx
index 871ef82a..d1b45831 100644
--- a/demo/nextjs/components/ui/radio-group.tsx
+++ b/demo/nextjs/components/ui/radio-group.tsx
@@ -6,10 +6,15 @@ import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
import { cn } from "@/lib/utils";
-const RadioGroup = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => {
+const RadioGroup = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => {
return (
);
-});
+};
RadioGroup.displayName = RadioGroupPrimitive.Root.displayName;
-const RadioGroupItem = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => {
+const RadioGroupItem = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => {
return (
);
-});
+};
RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
export { RadioGroup, RadioGroupItem };
diff --git a/demo/nextjs/components/ui/scroll-area.tsx b/demo/nextjs/components/ui/scroll-area.tsx
index 2821ee49..9666d2e1 100644
--- a/demo/nextjs/components/ui/scroll-area.tsx
+++ b/demo/nextjs/components/ui/scroll-area.tsx
@@ -5,44 +5,52 @@ import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
import { cn } from "@/lib/utils";
-const ScrollArea = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, children, ...props }, ref) => (
-
-
- {children}
-
-
-
-
-));
+const ScrollArea = (
+ {
+ ref,
+ className,
+ children,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => (
+
+ {children}
+
+
+
+);
ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
-const ScrollBar = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, orientation = "vertical", ...props }, ref) => (
-
-
-
-));
+const ScrollBar = (
+ {
+ ref,
+ className,
+ orientation = "vertical",
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => (
+
+);
ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;
export { ScrollArea, ScrollBar };
diff --git a/demo/nextjs/components/ui/select.tsx b/demo/nextjs/components/ui/select.tsx
index 9b7e9b93..e357ff1d 100644
--- a/demo/nextjs/components/ui/select.tsx
+++ b/demo/nextjs/components/ui/select.tsx
@@ -17,137 +17,162 @@ const SelectGroup = SelectPrimitive.Group;
const SelectValue = SelectPrimitive.Value;
-const SelectTrigger = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, children, ...props }, ref) => (
- span]:line-clamp-1",
- className,
- )}
- {...props}
- >
- {children}
-
-
-
-
-));
+const SelectTrigger = (
+ {
+ ref,
+ className,
+ children,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => (span]:line-clamp-1",
+ className,
+ )}
+ {...props}
+>
+ {children}
+
+
+
+);
SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
-const SelectScrollUpButton = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-
-
-));
+const SelectScrollUpButton = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => (
+
+);
SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
-const SelectScrollDownButton = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-
-
-));
+const SelectScrollDownButton = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => (
+
+);
SelectScrollDownButton.displayName =
SelectPrimitive.ScrollDownButton.displayName;
-const SelectContent = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, children, position = "popper", ...props }, ref) => (
-
-
-
-
- {children}
-
-
-
-
-));
+const SelectContent = (
+ {
+ ref,
+ className,
+ children,
+ position = "popper",
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => (
+
+
+
+ {children}
+
+
+
+);
SelectContent.displayName = SelectPrimitive.Content.displayName;
-const SelectLabel = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
+const SelectLabel = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
SelectLabel.displayName = SelectPrimitive.Label.displayName;
-const SelectItem = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, children, ...props }, ref) => (
-
-
-
-
-
-
- {children}
-
-));
+const SelectItem = (
+ {
+ ref,
+ className,
+ children,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => (
+
+
+
+
+
+ {children}
+);
SelectItem.displayName = SelectPrimitive.Item.displayName;
-const SelectSeparator = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
+const SelectSeparator = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
export {
diff --git a/demo/nextjs/components/ui/separator.tsx b/demo/nextjs/components/ui/separator.tsx
index f3b1270c..d0da8034 100644
--- a/demo/nextjs/components/ui/separator.tsx
+++ b/demo/nextjs/components/ui/separator.tsx
@@ -5,27 +5,27 @@ import * as SeparatorPrimitive from "@radix-ui/react-separator";
import { cn } from "@/lib/utils";
-const Separator = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(
- (
- { className, orientation = "horizontal", decorative = true, ...props },
- ref,
- ) => (
-
- ),
-);
+const Separator = (
+ {
+ ref,
+ className,
+ orientation = "horizontal",
+ decorative = true,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
Separator.displayName = SeparatorPrimitive.Root.displayName;
export { Separator };
diff --git a/demo/nextjs/components/ui/sheet.tsx b/demo/nextjs/components/ui/sheet.tsx
index bcbd43d5..c2b299e0 100644
--- a/demo/nextjs/components/ui/sheet.tsx
+++ b/demo/nextjs/components/ui/sheet.tsx
@@ -15,10 +15,13 @@ const SheetClose = SheetPrimitive.Close;
const SheetPortal = SheetPrimitive.Portal;
-const SheetOverlay = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
+const SheetOverlay = ({
+ ref,
+ className,
+ ...props
+}: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+}) => (
-));
+);
SheetOverlay.displayName = SheetPrimitive.Overlay.displayName;
const sheetVariants = cva(
@@ -53,10 +56,15 @@ interface SheetContentProps
extends React.ComponentPropsWithoutRef,
VariantProps {}
-const SheetContent = React.forwardRef<
- React.ElementRef,
- SheetContentProps
->(({ side = "right", className, children, ...props }, ref) => (
+const SheetContent = ({
+ ref,
+ side = "right",
+ className,
+ children,
+ ...props
+}: SheetContentProps & {
+ ref: React.RefObject>;
+}) => (
-));
+);
SheetContent.displayName = SheetPrimitive.Content.displayName;
const SheetHeader = ({
@@ -102,28 +110,34 @@ const SheetFooter = ({
);
SheetFooter.displayName = "SheetFooter";
-const SheetTitle = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
+const SheetTitle = ({
+ ref,
+ className,
+ ...props
+}: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+}) => (
-));
+);
SheetTitle.displayName = SheetPrimitive.Title.displayName;
-const SheetDescription = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
+const SheetDescription = ({
+ ref,
+ className,
+ ...props
+}: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+}) => (
-));
+);
SheetDescription.displayName = SheetPrimitive.Description.displayName;
export {
diff --git a/demo/nextjs/components/ui/slider.tsx b/demo/nextjs/components/ui/slider.tsx
index 66fb4101..a63ad7a4 100644
--- a/demo/nextjs/components/ui/slider.tsx
+++ b/demo/nextjs/components/ui/slider.tsx
@@ -5,24 +5,27 @@ import * as SliderPrimitive from "@radix-ui/react-slider";
import { cn } from "@/lib/utils";
-const Slider = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-
-
-
-
-
-));
+const Slider = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => (
+
+
+
+
+);
Slider.displayName = SliderPrimitive.Root.displayName;
export { Slider };
diff --git a/demo/nextjs/components/ui/switch.tsx b/demo/nextjs/components/ui/switch.tsx
index 5139bf24..416ee699 100644
--- a/demo/nextjs/components/ui/switch.tsx
+++ b/demo/nextjs/components/ui/switch.tsx
@@ -5,25 +5,28 @@ import * as SwitchPrimitives from "@radix-ui/react-switch";
import { cn } from "@/lib/utils";
-const Switch = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-
-
-));
+const Switch = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => (
+
+);
Switch.displayName = SwitchPrimitives.Root.displayName;
export { Switch };
diff --git a/demo/nextjs/components/ui/table.tsx b/demo/nextjs/components/ui/table.tsx
index 38ac7462..dc48ea1b 100644
--- a/demo/nextjs/components/ui/table.tsx
+++ b/demo/nextjs/components/ui/table.tsx
@@ -2,110 +2,134 @@ import * as React from "react";
import { cn } from "@/lib/utils";
-const Table = React.forwardRef<
- HTMLTableElement,
- React.HTMLAttributes
->(({ className, ...props }, ref) => (
-
-));
+const Table = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.HTMLAttributes & {
+ ref: React.RefObject;
+ }
+) => ();
Table.displayName = "Table";
-const TableHeader = React.forwardRef<
- HTMLTableSectionElement,
- React.HTMLAttributes
->(({ className, ...props }, ref) => (
-
-));
+const TableHeader = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.HTMLAttributes & {
+ ref: React.RefObject;
+ }
+) => ();
TableHeader.displayName = "TableHeader";
-const TableBody = React.forwardRef<
- HTMLTableSectionElement,
- React.HTMLAttributes
->(({ className, ...props }, ref) => (
-
-));
+const TableBody = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.HTMLAttributes & {
+ ref: React.RefObject;
+ }
+) => ();
TableBody.displayName = "TableBody";
-const TableFooter = React.forwardRef<
- HTMLTableSectionElement,
- React.HTMLAttributes
->(({ className, ...props }, ref) => (
- tr]:last:border-b-0",
- className,
- )}
- {...props}
- />
-));
+const TableFooter = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.HTMLAttributes & {
+ ref: React.RefObject;
+ }
+) => (tr]:last:border-b-0",
+ className,
+ )}
+ {...props}
+/>);
TableFooter.displayName = "TableFooter";
-const TableRow = React.forwardRef<
- HTMLTableRowElement,
- React.HTMLAttributes
->(({ className, ...props }, ref) => (
-
-));
+const TableRow = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.HTMLAttributes & {
+ ref: React.RefObject;
+ }
+) => (
);
TableRow.displayName = "TableRow";
-const TableHead = React.forwardRef<
- HTMLTableCellElement,
- React.ThHTMLAttributes
->(({ className, ...props }, ref) => (
- [role=checkbox]]:translate-y-[2px]",
- className,
- )}
- {...props}
- />
-));
+const TableHead = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ThHTMLAttributes & {
+ ref: React.RefObject;
+ }
+) => ([role=checkbox]]:translate-y-[2px]",
+ className,
+ )}
+ {...props}
+/>);
TableHead.displayName = "TableHead";
-const TableCell = React.forwardRef<
- HTMLTableCellElement,
- React.TdHTMLAttributes
->(({ className, ...props }, ref) => (
- [role=checkbox]]:translate-y-[2px]",
- className,
- )}
- {...props}
- />
-));
+const TableCell = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.TdHTMLAttributes & {
+ ref: React.RefObject;
+ }
+) => (| [role=checkbox]]:translate-y-[2px]",
+ className,
+ )}
+ {...props}
+/>);
TableCell.displayName = "TableCell";
-const TableCaption = React.forwardRef<
- HTMLTableCaptionElement,
- React.HTMLAttributes
->(({ className, ...props }, ref) => (
-
-));
+const TableCaption = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.HTMLAttributes & {
+ ref: React.RefObject;
+ }
+) => ();
TableCaption.displayName = "TableCaption";
export {
diff --git a/demo/nextjs/components/ui/tabs.tsx b/demo/nextjs/components/ui/tabs.tsx
index 20938087..45b9b0b3 100644
--- a/demo/nextjs/components/ui/tabs.tsx
+++ b/demo/nextjs/components/ui/tabs.tsx
@@ -7,49 +7,58 @@ import { cn } from "@/lib/utils";
const Tabs = TabsPrimitive.Root;
-const TabsList = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
+const TabsList = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
TabsList.displayName = TabsPrimitive.List.displayName;
-const TabsTrigger = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
+const TabsTrigger = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
-const TabsContent = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
+const TabsContent = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
TabsContent.displayName = TabsPrimitive.Content.displayName;
export { Tabs, TabsList, TabsTrigger, TabsContent };
diff --git a/demo/nextjs/components/ui/textarea.tsx b/demo/nextjs/components/ui/textarea.tsx
index 0643869e..e4edaabf 100644
--- a/demo/nextjs/components/ui/textarea.tsx
+++ b/demo/nextjs/components/ui/textarea.tsx
@@ -5,20 +5,26 @@ import { cn } from "@/lib/utils";
export interface TextareaProps
extends React.TextareaHTMLAttributes {}
-const Textarea = React.forwardRef(
- ({ className, ...props }, ref) => {
- return (
-
- );
- },
-);
+const Textarea = (
+ {
+ ref,
+ className,
+ ...props
+ }: TextareaProps & {
+ ref: React.RefObject;
+ }
+) => {
+ return (
+
+ );
+};
Textarea.displayName = "Textarea";
export { Textarea };
diff --git a/demo/nextjs/components/ui/toast.tsx b/demo/nextjs/components/ui/toast.tsx
index 5f7c3861..054dec01 100644
--- a/demo/nextjs/components/ui/toast.tsx
+++ b/demo/nextjs/components/ui/toast.tsx
@@ -9,19 +9,22 @@ import { cn } from "@/lib/utils";
const ToastProvider = ToastPrimitives.Provider;
-const ToastViewport = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
+const ToastViewport = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
ToastViewport.displayName = ToastPrimitives.Viewport.displayName;
const toastVariants = cva(
@@ -40,11 +43,14 @@ const toastVariants = cva(
},
);
-const Toast = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef &
- VariantProps
->(({ className, variant, ...props }, ref) => {
+const Toast = (
+ {
+ ref,
+ className,
+ variant,
+ ...props
+ }
+) => {
return (
);
-});
+};
Toast.displayName = ToastPrimitives.Root.displayName;
-const ToastAction = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
+const ToastAction = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
ToastAction.displayName = ToastPrimitives.Action.displayName;
-const ToastClose = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-
-
-));
+const ToastClose = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => (
+
+);
ToastClose.displayName = ToastPrimitives.Close.displayName;
-const ToastTitle = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
+const ToastTitle = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
ToastTitle.displayName = ToastPrimitives.Title.displayName;
-const ToastDescription = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, ...props }, ref) => (
-
-));
+const ToastDescription = (
+ {
+ ref,
+ className,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
ToastDescription.displayName = ToastPrimitives.Description.displayName;
type ToastProps = React.ComponentPropsWithoutRef;
diff --git a/demo/nextjs/components/ui/toggle-group.tsx b/demo/nextjs/components/ui/toggle-group.tsx
index fef6b027..db150319 100644
--- a/demo/nextjs/components/ui/toggle-group.tsx
+++ b/demo/nextjs/components/ui/toggle-group.tsx
@@ -14,29 +14,37 @@ const ToggleGroupContext = React.createContext<
variant: "default",
});
-const ToggleGroup = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef &
- VariantProps
->(({ className, variant, size, children, ...props }, ref) => (
-
-
- {children}
-
-
-));
+const ToggleGroup = (
+ {
+ ref,
+ className,
+ variant,
+ size,
+ children,
+ ...props
+ }
+) => (
+
+ {children}
+
+);
ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
-const ToggleGroupItem = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef &
- VariantProps
->(({ className, children, variant, size, ...props }, ref) => {
+const ToggleGroupItem = (
+ {
+ ref,
+ className,
+ children,
+ variant,
+ size,
+ ...props
+ }
+) => {
const context = React.useContext(ToggleGroupContext);
return (
@@ -54,7 +62,7 @@ const ToggleGroupItem = React.forwardRef<
{children}
);
-});
+};
ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;
diff --git a/demo/nextjs/components/ui/toggle.tsx b/demo/nextjs/components/ui/toggle.tsx
index f3720ac6..ec6b01d6 100644
--- a/demo/nextjs/components/ui/toggle.tsx
+++ b/demo/nextjs/components/ui/toggle.tsx
@@ -28,17 +28,19 @@ const toggleVariants = cva(
},
);
-const Toggle = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef &
- VariantProps
->(({ className, variant, size, ...props }, ref) => (
-
-));
+const Toggle = (
+ {
+ ref,
+ className,
+ variant,
+ size,
+ ...props
+ }
+) => ();
Toggle.displayName = TogglePrimitive.Root.displayName;
diff --git a/demo/nextjs/components/ui/tooltip.tsx b/demo/nextjs/components/ui/tooltip.tsx
index d81f2a55..3387666c 100644
--- a/demo/nextjs/components/ui/tooltip.tsx
+++ b/demo/nextjs/components/ui/tooltip.tsx
@@ -11,20 +11,24 @@ const Tooltip = TooltipPrimitive.Root;
const TooltipTrigger = TooltipPrimitive.Trigger;
-const TooltipContent = React.forwardRef<
- React.ElementRef,
- React.ComponentPropsWithoutRef
->(({ className, sideOffset = 4, ...props }, ref) => (
-
-));
+const TooltipContent = (
+ {
+ ref,
+ className,
+ sideOffset = 4,
+ ...props
+ }: React.ComponentPropsWithoutRef & {
+ ref: React.RefObject>;
+ }
+) => ();
TooltipContent.displayName = TooltipPrimitive.Content.displayName;
export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };
diff --git a/demo/nextjs/package.json b/demo/nextjs/package.json
index 617d18cd..286fd948 100644
--- a/demo/nextjs/package.json
+++ b/demo/nextjs/package.json
@@ -66,15 +66,15 @@
"geist": "^1.3.1",
"input-otp": "^1.4.1",
"kysely": "^0.27.4",
- "lucide-react": "^0.439.0",
+ "lucide-react": "^0.477.0",
"mini-svg-data-uri": "^1.4.4",
"mysql2": "^3.11.5",
+ "next": "^15.2.0",
"next-themes": "^0.3.0",
"prisma": "^5.22.0",
- "next": "^15.2.0",
"react": "^19.0.0",
- "react-dom": "^19.0.0",
"react-day-picker": "8.10.1",
+ "react-dom": "^19.0.0",
"react-hook-form": "^7.54.0",
"react-qr-code": "^2.0.15",
"react-resizable-panels": "^2.1.7",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 3a747e13..76f85a03 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -229,8 +229,8 @@ importers:
specifier: ^0.27.4
version: 0.27.4
lucide-react:
- specifier: ^0.439.0
- version: 0.439.0(react@19.0.0)
+ specifier: ^0.477.0
+ version: 0.477.0(react@19.0.0)
mini-svg-data-uri:
specifier: ^1.4.4
version: 1.4.4
@@ -15030,11 +15030,6 @@ packages:
peerDependencies:
react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc
- lucide-react@0.439.0:
- resolution: {integrity: sha512-PafSWvDTpxdtNEndS2HIHxcNAbd54OaqSYJO90/b63rab2HWYqDbH194j0i82ZFdWOAcf0AHinRykXRRK2PJbw==}
- peerDependencies:
- react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc
-
lucide-react@0.447.0:
resolution: {integrity: sha512-SZ//hQmvi+kDKrNepArVkYK7/jfeZ5uFNEnYmd45RKZcbGD78KLnrcNXmgeg6m+xNHFvTG+CblszXCy4n6DN4w==}
peerDependencies:
@@ -15055,6 +15050,11 @@ packages:
peerDependencies:
react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ lucide-react@0.477.0:
+ resolution: {integrity: sha512-yCf7aYxerFZAbd8jHJxjwe1j7jEMPptjnaOqdYeirFnEy85cNR3/L+o0I875CYFYya+eEVzZSbNuRk8BZPDpVw==}
+ peerDependencies:
+ react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0
+
lucide-solid@0.445.0:
resolution: {integrity: sha512-YnrhONLbyFuJX8gVE0SUOQ9slugOghLzJyWf7HvOr3Ngkb0vm0tNQ9iGxqxY9iDwuratxkkOj82Q3C29aJoZkA==}
peerDependencies:
@@ -38079,10 +38079,6 @@ snapshots:
dependencies:
react: 18.3.1
- lucide-react@0.439.0(react@19.0.0):
- dependencies:
- react: 19.0.0
-
lucide-react@0.447.0(react@18.3.1):
dependencies:
react: 18.3.1
@@ -38099,6 +38095,10 @@ snapshots:
dependencies:
react: 18.3.1
+ lucide-react@0.477.0(react@19.0.0):
+ dependencies:
+ react: 19.0.0
+
lucide-solid@0.445.0(solid-js@1.9.5):
dependencies:
solid-js: 1.9.5
| | | |