"use client"; import { useCallback, useMemo, useState } from "react"; import { toolGroups } from "@/config/tools"; import { noOp } from "@/lib/base"; import { countBytes, countCharacters, countLines, countWords, modeTitle, TextTransformMode, textTransformModes, transformText, } from "@/lib/text"; import { Textarea, TextareaProps } from "@/components/ui/textarea"; import { ToggleGroup, ToggleGroupItem } from "@/components/ui/toggle-group"; import * as Button from "@/components/buttons"; import { ControlMenu } from "@/components/control-menu"; import { PageRootSection } from "@/components/page-root-section"; import { PageSection } from "@/components/page-section"; export default function Page() { const [input, setInput] = useState("ConvertMe"); const [mode, setMode] = useState(TextTransformMode.original); const output = transformText(input, mode); const stats = useMemo( () => ({ characters: countCharacters(input), words: countWords(input), lines: countLines(input), bytes: countBytes(input), }), [input] ); const clearInput = useCallback(() => setInput(""), []); const onInputChange: TextareaProps["onChange"] = e => setInput(e.currentTarget.value); const onModeChange = (value: string) => { if (value && value in TextTransformMode) { setMode(value as TextTransformMode); } }; const inputPasteButton = ; const inputFileButton = ; const inputClearButton = ; const outputCopyButton = ; const inputControl = ; const outputControl = ; return ( {textTransformModes.map(m => ( {modeTitle[m]} ))}