010f78b138
Переносит вопросы из Microsoft Forms в собственный интерфейс: компания, анонимность, ФИО и должность, вид обращения, описание ситуации и предложение. Поля автора скрываются при анонимном обращении, а не блокируются: требовать ФИО у анонима — противоречие, а серое неактивное поле выглядит как ошибка формы. Состояние целиком в useFeedbackForm, правила заполнения — в отдельной чистой функции validateFeedback: её можно покрыть тестами без React. Отправки пока нет — по договорённости делаем только UI, submit пишет данные в консоль (TODO в useFeedbackForm). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
59 lines
2.8 KiB
TypeScript
59 lines
2.8 KiB
TypeScript
/**
|
|
* Все пользовательские строки формы в одном месте — задел под локализацию
|
|
* и защита от расползания текста по JSX.
|
|
*/
|
|
export const TEXTS = {
|
|
pageTitle: 'Обращение',
|
|
pageSubtitle: 'Данное обращение будет направлено в HR департамент',
|
|
|
|
formTitle: 'Обращение в HR департамент',
|
|
|
|
privacyNotice:
|
|
'Форма не собирает автоматически ваше имя и адрес электронной почты — только то, что вы укажете сами.',
|
|
|
|
anonymousHint:
|
|
'Анонимное обращение: мы не сможем дать вам обратную связь. Именные обращения обрабатываются в течение 3–5 рабочих дней, если вопрос не требует большего срока.',
|
|
|
|
labels: {
|
|
company: 'Компания',
|
|
isAnonymous: 'Обращение анонимное',
|
|
fullName: 'Фамилия Имя Отчество',
|
|
position: 'Должность',
|
|
wantsFeedback: 'Хочу получить обратную связь',
|
|
kind: 'Вид обращения',
|
|
kindOther: 'Уточните вид обращения',
|
|
situation: 'Описание ситуации',
|
|
suggestion: 'Предложение по улучшению'
|
|
},
|
|
|
|
placeholders: {
|
|
company: 'Выберите компанию',
|
|
fullName: 'Иванов Иван Иванович',
|
|
position: 'Например: инженер-проектировщик',
|
|
kindOther: 'Свой вариант',
|
|
situation: 'Опишите, что произошло: когда, где, кто участвовал',
|
|
suggestion: 'Что, по вашему мнению, стоит изменить'
|
|
},
|
|
|
|
actions: {
|
|
submit: 'Отправить',
|
|
reset: 'Очистить',
|
|
newAppeal: 'Отправить ещё одно обращение'
|
|
},
|
|
|
|
errors: {
|
|
required: 'Заполните поле',
|
|
selectRequired: 'Выберите значение',
|
|
tooShort: 'Слишком короткий ответ — опишите подробнее',
|
|
hasErrors: 'Проверьте выделенные поля — что-то заполнено не полностью.'
|
|
},
|
|
|
|
thanks: {
|
|
title: 'Обращение отправлено',
|
|
named:
|
|
'Спасибо! Мы рассмотрим обращение в течение 3–5 рабочих дней и вернёмся с ответом.',
|
|
anonymous:
|
|
'Спасибо! Обращение отправлено анонимно, поэтому ответ по нему не придёт — но мы его обязательно рассмотрим.'
|
|
}
|
|
} as const;
|