feat: contact page improvements, Yandex map from addresses

- Instagram field: @username input with API validation (like team page)
- Phone validation: blocks auto-save when incomplete, shows warning
- SectionEditor: validate prop to conditionally block saves
- Yandex Map: auto-generated from addresses via Nominatim geocoding,
  dark theme, no API key needed
- Schedule: address hint linking to Contacts
- Renamed "Всплывающие окна" → "Формы записи", moved after Записи
This commit is contained in:
2026-03-30 16:59:24 +03:00
parent 22bd117dae
commit 06be6b48ce
7 changed files with 191 additions and 60 deletions
+12 -7
View File
@@ -952,13 +952,18 @@ function CalendarGrid({
value={location.name}
onChange={(v) => onChange({ ...location, name: v })}
/>
<SelectField
label="Адрес"
value={location.address}
onChange={(v) => onChange({ ...location, address: v })}
options={addresses.map((a) => ({ value: a, label: a }))}
placeholder="Выберите адрес"
/>
<div>
<SelectField
label="Адрес"
value={location.address}
onChange={(v) => onChange({ ...location, address: v })}
options={addresses.map((a) => ({ value: a, label: a }))}
placeholder="Выберите адрес"
/>
<p className="mt-1 text-xs text-neutral-500">
Адреса задаются в <a href="/admin/contact" className="text-gold hover:text-gold-light transition-colors">Контактах</a>
</p>
</div>
</div>
{/* Calendar */}