import { useState, useEffect } from "react"; import { CHARACTERS } from "../assets/characters"; import { t } from "../utils/i18n"; import CharacterBackdrop from "./CharacterBackdrop"; import { getTheme, getSurface } from "../utils/themes"; export default function CharacterSelect({ onSelect, language = "english", darkMode }) { const [selected, setSelected] = useState(null); const [previewing, setPreviewing] = useState(null); const theme = getTheme(selected, darkMode); useEffect(() => { document.body.style.background = theme.bgGradient; document.body.style.transition = "background 0.5s ease"; }, [theme.bgGradient]); const handlePreview = async (charId) => { setPreviewing(charId); try { const res = await fetch(`https://anabaena-vaaksiddhi.hf.space/speak/intro/${charId}`); const blob = await res.blob(); const url = URL.createObjectURL(blob); const audio = new Audio(url); audio.play(); audio.onended = () => setPreviewing(null); } catch { setPreviewing(null); } }; return (
{selected ? `${CHARACTERS[selected][language === "hindi" ? "tagline_hindi" : language === "kannada" ? "tagline_kannada" : "tagline"] || CHARACTERS[selected].tagline} ✨` : t(language, "chooseCharacterSub")}
{char.name}
{char[language === "hindi" ? "tagline_hindi" : language === "kannada" ? "tagline_kannada" : "tagline"] || char.tagline}