/** * BoostMedia AI Content Generator Admin - Onboarding Banner * * Shows a dismissible welcome banner when no content has been generated yet. * * @package BoostMedia_AI * @license GPL-2.0-or-later */ import { useState, useEffect } from 'react' import { X, Search, Eye, Sparkles, CheckCircle } from 'lucide-react' import { t } from '../../lib/i18n' import { endpoints } from '../../api/client' const DISMISSED_KEY = 'bmai_onboarding_dismissed' export function OnboardingBanner() { const [visible, setVisible] = useState(false) const [loaded, setLoaded] = useState(false) useEffect(() => { if (localStorage.getItem(DISMISSED_KEY) === '1') { setLoaded(true) return } endpoints.getGenerateStats().then((res) => { const stats = res.data as { total?: number } | null if (!stats?.total || stats.total === 0) { setVisible(true) } setLoaded(true) }).catch(() => { setVisible(false) setLoaded(true) }) }, []) if (!loaded || !visible) return null const dismiss = () => { localStorage.setItem(DISMISSED_KEY, '1') setVisible(false) } const steps = [ { icon: , title: t('Scan your site'), desc: t('Click Rescan to discover your content types and meta fields'), link: '#/post-types', }, { icon: , title: t('Review your content types'), desc: t('Make sure the right types and fields are detected'), link: '#/post-types', }, { icon: , title: t('Generate your first post'), desc: t('Go to Create Content, pick a type, enter a keyword, generate 1 draft'), link: '#/generate', }, { icon: , title: t('Review and publish'), desc: t('Check the draft, then decide to generate more'), link: '#/generated', }, ] return (

{t('Welcome to BoostMedia AI Content Generator!')}

{t('Get started in 4 easy steps to create AI-powered content for your site.')}

) }