feat: форма обращения сотрудника в HR департамент
Переносит вопросы из Microsoft Forms в собственный интерфейс: компания, анонимность, ФИО и должность, вид обращения, описание ситуации и предложение. Поля автора скрываются при анонимном обращении, а не блокируются: требовать ФИО у анонима — противоречие, а серое неактивное поле выглядит как ошибка формы. Состояние целиком в useFeedbackForm, правила заполнения — в отдельной чистой функции validateFeedback: её можно покрыть тестами без React. Отправки пока нет — по договорённости делаем только UI, submit пишет данные в консоль (TODO в useFeedbackForm). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
/**
|
||||
* Все пользовательские строки формы в одном месте — задел под локализацию
|
||||
* и защита от расползания текста по 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;
|
||||
Reference in New Issue
Block a user