import { ArrowDownWideNarrow, CheckCheck, RefreshCcwDot, StepForward, WrapText, } from "lucide-react"; import { getPrevText, useEditor } from "novel"; import { CommandGroup, CommandItem, CommandSeparator } from "../../ui/command"; const options = [ { value: "improve", label: "Improve writing", icon: RefreshCcwDot, }, { value: "fix", label: "Fix grammar", icon: CheckCheck, }, { value: "shorter", label: "Make shorter", icon: ArrowDownWideNarrow, }, { value: "longer", label: "Make longer", icon: WrapText, }, ]; interface AISelectorCommandsProps { onSelect: (value: string, option: string) => void; } const AISelectorCommands = ({ onSelect }: AISelectorCommandsProps) => { const { editor } = useEditor(); if (!editor) return null; return ( <> {options.map((option) => ( { const slice = editor.state.selection.content(); const text = editor.storage.markdown.serializer.serialize( slice.content, ); onSelect(text, value); }} className="flex gap-2 px-4" key={option.value} value={option.value} > {option.label} ))} { const pos = editor.state.selection.from; const text = getPrevText(editor, pos); onSelect(text, "continue"); }} value="continue" className="gap-2 px-4" > Continue writing ); }; export default AISelectorCommands;