import { getNetworks } from '../lib/api' import { isLoggedIn } from '../lib/auth' let currentNetwork = 'bsky.social' let currentLang = localStorage.getItem('preferred-lang') || 'en' export function getCurrentNetwork(): string { return currentNetwork } export function setCurrentNetwork(network: string): void { currentNetwork = network } export function getCurrentLang(): string { return currentLang } export function setCurrentLang(lang: string): void { currentLang = lang localStorage.setItem('preferred-lang', lang) } export function renderModeTabs(handle: string, activeTab: 'blog' | 'browser' | 'post' | 'chat' = 'blog', isLocalUser: boolean = false): string { let tabs = ` / ${handle} at ` // Chat tab only for local user (admin) if (isLocalUser) { tabs += `chat` } if (isLoggedIn()) { tabs += `post` } tabs += `
` return `
${tabs}
` } // Render language selector (above content) export function renderLangSelector(langs: string[]): string { if (langs.length < 2) return '' return `
` } export async function setupModeTabs(onNetworkChange: (network: string) => void, availableLangs?: string[], onLangChange?: (lang: string) => void): Promise { const pdsTab = document.getElementById('pds-tab') const pdsDropdown = document.getElementById('pds-dropdown') if (pdsTab && pdsDropdown) { // Load networks const networks = await getNetworks() // Build options const optionsHtml = Object.keys(networks).map(key => { const isSelected = key === currentNetwork return `
${key}
` }).join('') pdsDropdown.innerHTML = optionsHtml // Toggle dropdown pdsTab.addEventListener('click', (e) => { e.stopPropagation() pdsDropdown.classList.toggle('show') }) // Handle option selection pdsDropdown.querySelectorAll('.pds-option').forEach(opt => { opt.addEventListener('click', (e) => { e.stopPropagation() const network = (opt as HTMLElement).dataset.network || '' currentNetwork = network // Update UI pdsDropdown.querySelectorAll('.pds-option').forEach(o => { o.classList.remove('selected') }) opt.classList.add('selected') pdsDropdown.classList.remove('show') onNetworkChange(network) }) }) } // Setup language selector const langTab = document.getElementById('lang-tab') const langDropdown = document.getElementById('lang-dropdown') if (langTab && langDropdown && availableLangs && availableLangs.length > 0) { // Build language options const langOptionsHtml = availableLangs.map(lang => { const isSelected = lang === currentLang return `
${lang.toUpperCase()}
` }).join('') langDropdown.innerHTML = langOptionsHtml // Toggle dropdown langTab.addEventListener('click', (e) => { e.stopPropagation() langDropdown.classList.toggle('show') }) // Handle option selection langDropdown.querySelectorAll('.lang-option').forEach(opt => { opt.addEventListener('click', (e) => { e.stopPropagation() const lang = (opt as HTMLElement).dataset.lang || '' setCurrentLang(lang) // Update UI langDropdown.querySelectorAll('.lang-option').forEach(o => { o.classList.remove('selected') }) opt.classList.add('selected') langDropdown.classList.remove('show') if (onLangChange) onLangChange(lang) }) }) } // Close dropdowns on outside click document.addEventListener('click', () => { pdsDropdown?.classList.remove('show') langDropdown?.classList.remove('show') }) }