import { createTopBar } from '../components/topbar.js'; import { saveEntryLanguage, state } from '../state.js'; export const pageMeta = { id: 'language-view', title: 'Язык' }; function resolveReturnPage() { const stored = String(sessionStorage.getItem('shine-language-return-page') || '').trim(); return stored === 'start-view' ? 'start-view' : 'settings-view'; } export function render({navigate, chrome}) { const screen = document.createElement('section'); screen.className = 'stack language-screen'; const returnPage = resolveReturnPage(); let pendingLanguage = state.entrySettings.language === 'en' ? 'en' : 'ru'; chrome?.setTopbar(createTopBar({ title: 'Язык / Language', back: { label: '←', onClick: () => { sessionStorage.removeItem('shine-language-return-page'); navigate(returnPage); } }, })); const card = document.createElement('div'); card.className = 'card stack language-choice-card'; card.innerHTML = `

Выберите язык интерфейса

`; const syncSelection = () => { card.dataset.language = pendingLanguage; card.querySelectorAll('[data-language]').forEach((item) => { const selected = item.dataset.language === pendingLanguage; item.classList.toggle('is-selected', selected); item.setAttribute('aria-checked', String(selected)); }); }; syncSelection(); card.querySelectorAll('[data-language]').forEach((button) => { button.addEventListener('click', () => { pendingLanguage = button.dataset.language === 'en' ? 'en' : 'ru'; syncSelection(); }); }); card.querySelector('[data-action="cancel"]')?.addEventListener('click', () => { sessionStorage.removeItem('shine-language-return-page'); navigate(returnPage); }); card.querySelector('[data-action="ok"]')?.addEventListener('click', () => { saveEntryLanguage(pendingLanguage); sessionStorage.removeItem('shine-language-return-page'); navigate(returnPage); }); screen.append(card); return screen; }