import { getCurrentUrl, Link } from 'preact-router' import { useCallback } from 'preact/hooks' import type { ConfigGenerator } from '../Config.js' import config from '../Config.js' import { useLocale, useTheme, useTitle, useVersion } from '../contexts/index.js' import { cleanUrl, getGenerator, SOURCE_REPO_URL } from '../Utils.js' import { FancyMenu } from './FancyMenu.jsx' import { searchGenerators } from './generator/GeneratorList.jsx' import { Btn, BtnMenu, Icons, Octicon } from './index.js' const Themes: Record = { system: 'device_desktop', dark: 'moon', light: 'sun', } export function Header() { const { lang, locale, changeLocale: changeLanguage } = useLocale() const { theme, changeTheme } = useTheme() const { title } = useTitle() const url = getCurrentUrl() const gen = getGenerator(url) return
{Icons.home} {gen ? :

{title}

}
} interface GeneratorTitleProps { title: string gen: ConfigGenerator } function GeneratorTitle({ title, gen }: GeneratorTitleProps) { const { locale } = useLocale() const { version } = useVersion() const icon = Object.keys(Icons).includes(gen.id) ? gen.id as keyof typeof Icons : undefined const getGenerators = useCallback((search: string, close: () => void) => { let results = config.generators .filter(g => !g.dependency) .map(g => ({ ...g, name: locale(`generator.${g.id}`).toLowerCase() })) results = searchGenerators(results, search) if (results.length === 0) { return [{locale('generators.no_results')}] } return results.map(g => {locale(`generator.${g.id}`)} {Object.keys(Icons).includes(g.id) ? Icons[g.id as keyof typeof Icons] : undefined}
{g.tags?.filter(t => t === 'assets').map(t =>
{t}
)} ) }, [locale, version]) return

{title} {icon && Icons[icon]}

}