import { renderHeader } from '../components/header.js?v=20260330001044'; import { contactDirectory, directMessages } from '../mock-data.js?v=20260330001044'; import { ensureChat } from '../state.js?v=20260330001044'; export const pageMeta = { id: 'contact-search-view', title: 'Поиск контактов' }; function getMatches(query) { const normalized = query.trim().toLowerCase(); if (!normalized) return []; return contactDirectory .filter((contact) => contact.name.toLowerCase().startsWith(normalized)) .slice(0, 5); } export function render({ navigate }) { const screen = document.createElement('section'); screen.className = 'stack'; const input = document.createElement('input'); input.className = 'input'; input.type = 'text'; input.name = 'contact'; input.placeholder = 'Введите имя контакта'; input.autocomplete = 'off'; input.maxLength = 80; const resultsCard = document.createElement('section'); resultsCard.className = 'card stack'; resultsCard.hidden = true; const status = document.createElement('p'); status.className = 'meta-muted'; const resultsList = document.createElement('div'); resultsList.className = 'stack'; let latestMatches = []; const renderResults = (matches, query) => { latestMatches = matches; resultsList.innerHTML = ''; resultsCard.hidden = false; if (!query.trim()) { status.textContent = 'Введите первые буквы имени, чтобы найти контакт.'; return; } if (!matches.length) { status.textContent = 'Совпадений не найдено.'; return; } status.textContent = `Найдено пользователей: ${matches.length}`; matches.forEach((contact) => { const row = document.createElement('article'); row.className = 'list-item'; row.innerHTML = `