/** @jsxImportSource @emotion/react */ import { css } from '@emotion/react'; import { flip, offset, useClick, useDismiss, useFloating, useInteractions } from '@floating-ui/react'; import { INotification } from '@magicbell/react-headless'; import { useState } from 'react'; import { useTheme } from '../../context/MagicBellThemeContext.js'; import { useTranslate } from '../../context/TranslationsContext.js'; import MenuIcon from '../icons/MenuIcon.js'; import NotificationContextMenu from '../NotificationContextMenu/index.js'; export interface Props { notification: INotification; } /** * Component that renders the context menu * * @example * */ export default function NotificationMenu({ notification }: Props) { const { notification: themeVariants } = useTheme(); const t = useTranslate(); const [isOpen, setIsOpen] = useState(false); const theme = !notification.isSeen ? themeVariants.unseen : !notification.isRead ? themeVariants.unread : themeVariants.default; const { refs, context, floatingStyles } = useFloating({ placement: 'bottom-end', middleware: [flip(), offset({ mainAxis: 2, crossAxis: -4 })], open: isOpen, onOpenChange: setIsOpen, }); const dismiss = useDismiss(context); const click = useClick(context); const { getFloatingProps, getReferenceProps } = useInteractions([dismiss, click]); return ( <> {isOpen && (
)} ); }