// Word Counter — live word, character, sentence, paragraph, and reading-time stats.

window.TOOL_HANDLERS['word-counter'] = function WordCounterTool() {
  const [text, setText] = React.useState('');
  const stats = React.useMemo(() => {
    const trimmed = text.trim();
    const words = trimmed ? trimmed.split(/\s+/).length : 0;
    const chars = text.length;
    const charsNoSpace = text.replace(/\s/g, '').length;
    const sentences = trimmed ? (text.match(/[.!?]+(\s|$)/g) || ['']).length : 0;
    const paragraphs = trimmed ? text.split(/\n\s*\n/).filter(Boolean).length : 0;
    const readingTime = Math.max(1, Math.ceil(words / 225));
    return { words, chars, charsNoSpace, sentences, paragraphs, readingTime };
  }, [text]);

  return (
    <div className="mini-tool">
      <textarea className="mini-input mini-textarea" style={{ minHeight: 180 }}
        placeholder="Paste or type your text here…" value={text} onChange={(e) => setText(e.target.value)} />
      <div className="wc-grid">
        <div className="wc-stat"><div className="wc-v">{stats.words.toLocaleString()}</div><div className="wc-l">Words</div></div>
        <div className="wc-stat"><div className="wc-v">{stats.chars.toLocaleString()}</div><div className="wc-l">Characters</div></div>
        <div className="wc-stat"><div className="wc-v">{stats.charsNoSpace.toLocaleString()}</div><div className="wc-l">No spaces</div></div>
        <div className="wc-stat"><div className="wc-v">{stats.sentences.toLocaleString()}</div><div className="wc-l">Sentences</div></div>
        <div className="wc-stat"><div className="wc-v">{stats.paragraphs.toLocaleString()}</div><div className="wc-l">Paragraphs</div></div>
        <div className="wc-stat"><div className="wc-v">{stats.readingTime} min</div><div className="wc-l">Read time</div></div>
      </div>
    </div>
  );
};
