da77c8d755
Добавляет zh-CN, fa, ar, tr, uk, be, vi, uz локали (81 ключ, идентичная структура) к существующим en/ru; ToggleLanguge.tsx переделан из бинарного ru/en тумблера в выпадающий список всех 10 языков. TelegramWeb.tsx был полностью на захардкоженном русском несмотря на импорт useTranslation — переведён на i18n-ключи. rtlLanguages.ts выносит список RTL-языков в отдельный .ts-файл (именованный импорт из .js падал на allowJs). App.tsx реактивно переключает document.dir/lang при смене языка. Логические CSS-свойства (ps-/pe-/start-/end-/border-e) вместо физических в badge/button/dialog/select и BurgerMenu — Flexbox иначе визуально переворачивает детей под dir=rtl, ломая анимацию бургер-меню. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
src/lib/
| Файл | Назначение |
|---|---|
api.ts |
REST-клиент бэкенда (GET /api/v1/nodes). Анонимная авторизация: генерирует/логинится по seed через /auth/seed/* ("Ghost Protocol"), кеширует короткоживущий JWT (~10 мин) в localStorage. Сейчас не задействован напрямую (useNodesStore работает в статическом режиме), но остаётся рабочим для будущего включения. |
platform.ts |
Детект платформы (desktop/android/ios/web). Сначала проверяет window.__TAURI_INTERNALS__ — отличает реальный Tauri-webview от обычного браузера (например, pnpm dev без Tauri), и только внутри Tauri дальше уточняет ОС по navigator.userAgent, т.к. Tauri-рантайм один и тот же на всех платформах. |
utils.ts |
cn() — склейка classNames (clsx + tailwind-merge). |