import BoldIcon from '@heroicons/react/24/solid/BoldIcon' import CodeBracketIcon from '@heroicons/react/24/solid/CodeBracketIcon' import H1Icon from '@heroicons/react/24/solid/H1Icon' import H2Icon from '@heroicons/react/24/solid/H2Icon' import H3Icon from '@heroicons/react/24/solid/H3Icon' import ItalicIcon from '@heroicons/react/24/solid/ItalicIcon' import ListBulletIcon from '@heroicons/react/24/solid/ListBulletIcon' import NumberedListIcon from '@heroicons/react/24/solid/NumberedListIcon' import { useEditorState } from '@tiptap/react' import { FaQuoteLeft } from 'react-icons/fa6' import { MdUndo, MdRedo, MdHorizontalRule } from 'react-icons/md' import { LiaTextHeightSolid } from 'react-icons/lia' import type { Editor } from '@tiptap/react' export const TextEditorMenu = ({ editor }: { editor: Editor }) => { const editorState = useEditorState({ editor, selector: (ctx) => { return { isBold: ctx.editor.isActive('bold'), canBold: ctx.editor.can().chain().focus().toggleBold().run(), isItalic: ctx.editor.isActive('italic'), canItalic: ctx.editor.can().chain().focus().toggleItalic().run(), isStrike: ctx.editor.isActive('strike'), canStrike: ctx.editor.can().chain().focus().toggleStrike().run(), isCode: ctx.editor.isActive('code'), canCode: ctx.editor.can().chain().focus().toggleCode().run(), canClearMarks: ctx.editor.can().chain().focus().unsetAllMarks().run(), isParagraph: ctx.editor.isActive('paragraph'), isHeading1: ctx.editor.isActive('heading', { level: 1 }), isHeading2: ctx.editor.isActive('heading', { level: 2 }), isHeading3: ctx.editor.isActive('heading', { level: 3 }), isHeading4: ctx.editor.isActive('heading', { level: 4 }), isHeading5: ctx.editor.isActive('heading', { level: 5 }), isHeading6: ctx.editor.isActive('heading', { level: 6 }), isBulletList: ctx.editor.isActive('bulletList'), isOrderedList: ctx.editor.isActive('orderedList'), isCodeBlock: ctx.editor.isActive('codeBlock'), isBlockquote: ctx.editor.isActive('blockquote'), canUndo: ctx.editor.can().chain().focus().undo().run(), canRedo: ctx.editor.can().chain().focus().redo().run(), } }, }) const addYoutubeVideo = () => { const url = prompt('Enter YouTube URL') if (url) { editor.commands.setYoutubeVideo({ src: url, width: Math.max(320) || 640, height: Math.max(180) || 480, }) } } return ( <>