{
+interface CollapsibleProps extends Omit
, "children"> {
open?: boolean
onOpenChange?: (open: boolean) => void
defaultOpen?: boolean
+ children?: ReactNode | ((state: { open: boolean; onOpenChange: (open: boolean) => void }) => ReactNode)
}
function Collapsible({
diff --git a/src/components/ui/dialog.tsx b/src/components/ui/dialog.tsx
index 9147b80..42edb41 100644
--- a/src/components/ui/dialog.tsx
+++ b/src/components/ui/dialog.tsx
@@ -27,8 +27,8 @@ function DialogTrigger({ children, onClick, asChild = false, ...props }: DialogT
return (
{children}
diff --git a/src/components/ui/popover.tsx b/src/components/ui/popover.tsx
index 08205b2..2774c50 100644
--- a/src/components/ui/popover.tsx
+++ b/src/components/ui/popover.tsx
@@ -1,6 +1,6 @@
"use client"
-import { ComponentProps, useState, useRef, useEffect } from "react"
+import React, { ComponentProps, useState, useRef, useEffect, createContext, useContext, isValidElement, cloneElement } from "react"
import { createPortal } from "react-dom"
import { cn } from "@/lib/utils"
@@ -9,7 +9,7 @@ interface PopoverContextValue {
setOpen: (open: boolean) => void
}
-const PopoverContext = React.createContext(null)
+const PopoverContext = createContext(null)
function Popover({ children }: { children: React.ReactNode }) {
const [open, setOpen] = useState(false)
@@ -21,14 +21,14 @@ function Popover({ children }: { children: React.ReactNode }) {
}
function PopoverTrigger({ children, asChild, ...props }: ComponentProps<"button"> & { asChild?: boolean }) {
- const context = React.useContext(PopoverContext)
+ const context = useContext(PopoverContext)
const handleClick = () => {
context?.setOpen(!context.open)
}
- if (asChild && React.isValidElement(children)) {
- return React.cloneElement(children as React.ReactElement, {
+ if (asChild && isValidElement(children)) {
+ return cloneElement(children as React.ReactElement, {
onClick: handleClick,
...props,
})
@@ -49,7 +49,7 @@ function PopoverContent({
align?: "start" | "center" | "end"
sideOffset?: number
}) {
- const context = React.useContext(PopoverContext)
+ const context = useContext(PopoverContext)
const contentRef = useRef(null)
const [mounted, setMounted] = useState(false)
@@ -107,7 +107,7 @@ function PopoverAnchor({ children }: { children: React.ReactNode }) {
}
function PopoverClose({ children, className, ...props }: ComponentProps<"button">) {
- const context = React.useContext(PopoverContext)
+ const context = useContext(PopoverContext)
return (