A colored caret block consumes a phrase before typing its replacement in whole graphemes.
npx shadcn@latest add @000h-cojeev/caret-swap
caret-swap