ngxson's picture
ngxson HF staff
add blogmode
a2a351d
import { OpenInNewTab } from './utils/common';
import { PodcastGenerator } from './components/PodcastGenerator';
import { useState } from 'react';
import { ScriptMaker } from './components/ScriptMaker';
import { AuthCard } from './components/AuthCard';
function App() {
const [hfToken, setHfToken] = useState<string>('loading');
const [genratedScript, setGeneratedScript] = useState<string>('');
const [busy, setBusy] = useState<boolean>(false);
const [blogURL, setBlogURL] = useState<string>('');
return (
<div className="bg-base-300 min-h-screen">
<div className="max-w-screen-lg mx-auto p-4 pb-32 grid gap-4 grid-cols-1">
<div className="p-4 col-span-1">
<h1 className="text-3xl font-bold mb-2">
Podcast generator via Kokoro-TTS
</h1>
<p>
A space made by{' '}
<OpenInNewTab href="https://hf.co/ngxson">🤗 ngxson</OpenInNewTab>
</p>
</div>
<AuthCard hfToken={hfToken} setHfToken={setHfToken} />
{hfToken === 'loading' ? (
<div className="p-4 col-span-1">
<div className="loading loading-spinner loading-lg"></div>
</div>
) : !hfToken || !hfToken.startsWith('hf_') ? (
<></>
) : (
<>
<ScriptMaker
setScript={setGeneratedScript}
setBusy={setBusy}
setBlogURL={setBlogURL}
busy={busy}
hfToken={hfToken}
/>
<PodcastGenerator
genratedScript={genratedScript}
setBusy={setBusy}
busy={busy}
blogURL={blogURL}
/>
</>
)}
</div>
</div>
);
}
export default App;