"use client" import { useState, useCallback, lazy, Suspense, } from "react" import { type Editor } from "@tiptap/react" import { Smile } from "lucide-react" import { useTheme } from "next-themes" import { Popover, PopoverContent, PopoverTrigger, } from "@/components/ui/popover" import data from "@emoji-mart/data" import { cn } from "@/lib/utils" import { MAIL_COMPOSE_BOTTOM_ICON_BTN } from "@/lib/mail-chrome-classes" import { COMPOSE_PORTAL_Z } from "./compose-shared" const LazyPicker = lazy(() => import("@emoji-mart/react")) function ComposeEmojiPicker({ onSelect }: { onSelect: (emoji: { native: string }) => void }) { const { resolvedTheme } = useTheme() return ( Chargement…}> ) } export function ComposeEmojiButton({ editor, }: { editor: Editor | null }) { const [open, setOpen] = useState(false) const handleSelect = useCallback( (emoji: { native: string }) => { editor?.chain().focus().insertContent(emoji.native).run() setOpen(false) }, [editor] ) if (!editor) return null return ( e.preventDefault()} > ) }