import styled from "@emotion/styled" import { Content, Portal, Root, Trigger } from "@radix-ui/react-dropdown-menu" import React, { FC, PropsWithChildren } from "react" export type MenuProps = PropsWithChildren<{ open?: boolean onOpenChange?: (open: boolean) => void trigger: React.ReactNode }> const StyledContent = styled(Content)` background: ${({ theme }) => theme.secondaryBackgroundColor}; border-radius: 0.5rem; box-shadow: 0 1rem 3rem ${({ theme }) => theme.shadowColor}; border: 1px solid ${({ theme }) => theme.backgroundColor}; margin: 0 1rem; padding: 0.5rem 0; ` const List = styled.ul` list-style: none; padding: 0; margin: 0; ` export const Menu: FC = ({ trigger, open, onOpenChange, children, }) => { return ( {trigger} {children} ) } const StyledLi = styled.li<{ disabled?: boolean }>` font-size: 0.8rem; color: ${({ theme, disabled }) => disabled ? theme.secondaryTextColor : theme.textColor}; display: flex; align-items: center; padding: 0.5rem 1rem; pointer-events: ${({ disabled }) => (disabled ? "none" : "auto")}; &:hover { background: ${({ theme, disabled }) => disabled ? "transparent" : theme.highlightColor}; } ` export type MenuItemProps = React.DetailedHTMLProps< React.LiHTMLAttributes, HTMLLIElement > & { disabled?: boolean } export const MenuItem: FC = ({ children, ...props }) => ( {children} ) export const MenuDivider = styled.hr` border: none; border-top: 1px solid ${({ theme }) => theme.dividerColor}; `