import React, { useState } from "react"; import { stringWidth } from "#/ansi/string-width.ts"; import { render, Box, Text, useInput, useCursor } from "#/index.ts"; function App() { const [text, setText] = useState(""); const { setCursorPosition } = useCursor(); useInput((input, key) => { if (key.backspace || key.delete) { setText((previous) => previous.slice(0, -1)); return; } if (!key.ctrl && !key.meta && input) { setText((previous) => previous + input); } }); // Use stringWidth for correct cursor position with wide characters (Korean, CJK, emoji) const prompt = "> "; setCursorPosition({ x: stringWidth(prompt + text), y: 1 }); return ( Type Korean (Ctrl+C to exit): {prompt} {text} ); } render();