import React, { useCallback, useEffect, useState } from "react"; import spinner from "../assets/icons/spinner.svg"; import likeIcon from "../assets/icons/heart.svg"; import commentsIcon from "../assets/icons/quote.svg"; import shareIcon from "../assets/icons/share.svg"; import fontIcon from "../assets/icons/font.svg"; import bookmarkIcon from "@/assets/icons/bookmark.svg"; import speakerIcon from "@/assets/icons/speaker.svg"; import type { AnalyzeRes, ColorTheme, Meaning } from "@/logic/types"; import { ColoredText } from "../Sentence.tsx"; import { P, Span, useSpeechSynthesis } from "@/hooks/useLang.tsx"; import type { FullWordData } from "@sortug/langlib"; import { cycleNext } from "@sortug/lib"; import FontChanger from "@/fonts/FontChanger.tsx"; import Phonetic from "./Phonetic.tsx"; function Word({ data, lang, theme, }: { data: FullWordData; lang: string; theme: ColorTheme; }) { async function load() { // const wiki = await fetchWiki(data.word); // console.log(wiki, "wiki res"); // if ("ok" in wiki) setM(wiki.ok.meanings); // else setError(wiki.error); // setLoading(false); } useEffect(() => { load(); }, []); const [error, setError] = useState(""); const [loading, setLoading] = useState(false); const [meanings, setM] = useState([]); const [fontIdx, setFont] = useState(0); const { voices, speaking, speak, stop } = useSpeechSynthesis(); function playAudio() { console.log({ voices, speaking }); console.log("word", data); speak(data.spelling); } console.log({ data }); async function saveW() {} return (
({ data: s, display: s.spelling, colorBy: s.tone.name, }))} theme={theme} />

{data.phonetic.ipa}

{loading ? ( ) : ( data.senses.map((m) => (
{m.pos}
    {m.glosses.map((t, i) => (
  1. {t}

  2. ))}
)) )} {error &&
{error}
}
); } export default Word;
Meanings Grammar Examples

Tone Analysis

{tones.map((tone, idx) => ( Syl {idx + 1}:{" "} {tone} ))}

Word Structure

This word consists of {syls.length} syllable {syls.length > 1 ? "s" : ""}. The tone pattern is essential for conveying the correct meaning.

s.examples || [])} />
;