import { Menu } from "@headlessui/react"; import { Placement } from "@popperjs/core"; import clsx from "clsx"; import * as React from "react"; import ReactDOM from "react-dom"; import { usePopper } from "react-popper"; export interface DropdownProps { trigger?: React.ReactNode; children?: React.ReactNode; className?: string; placement?: Placement; } const Dropdown: React.VoidFunctionComponent = ({ children, className, trigger, placement, }) => { const [referenceElement, setReferenceElement] = React.useState(null); const [popperElement, setPopperElement] = React.useState(null); const { styles, attributes } = usePopper(referenceElement, popperElement, { placement, modifiers: [ { name: "offset", options: { offset: [0, 5], }, }, ], }); const portal = document.getElementById("portal"); return ( {trigger} {portal && ReactDOM.createPortal( {children} , portal, )} ); }; export const DropdownItem: React.VoidFunctionComponent<{ icon?: React.ComponentType<{ className?: string }>; label?: React.ReactNode; disabled?: boolean; onClick?: () => void; }> = ({ icon: Icon, label, onClick, disabled }) => { return ( {({ active }) => ( )} ); }; export default Dropdown;