import React, { ComponentProps, PropsWithChildren, ReactNode, useEffect, useState, } from 'react' import classNames from 'classnames' import * as PopoverPrimitive from '@radix-ui/react-popover' import ChevronIcon from '~public/icons/Chevron.svg' import './index.scss' interface Props extends ComponentProps<'div'> { open: boolean disabled?: boolean icon?: { src: string alt: string } trigger?: { className?: string placeholder?: string } triggerTabIndex?: number value?: { element: ReactNode rawValue: string } onOpenChange?: () => void } const Popover = React.forwardRef(function Popover( { children, ...props }: PropsWithChildren, forwardedRef ) { // Component state const [open, setOpen] = useState(false) // Element classes const triggerClasses = classNames( { SelectTrigger: true, Disabled: props.disabled, }, props.trigger?.className ) // Hooks useEffect(() => { setOpen(props.open) }, [props.open]) // Elements const value = props.value ? ( {props.value?.element} ) : ( {props.placeholder} ) const icon = props.icon ? ( {props.icon.alt} ) : ( '' ) const arrow = !props.disabled ? ( ) : ( '' ) return ( {icon} {value} {arrow} {children} ) }) Popover.defaultProps = { disabled: false, } export default Popover