Files
hr-appeals/src/features/feedback/texts.ts
T
gorbenko.pavel 010f78b138 feat: форма обращения сотрудника в HR департамент
Переносит вопросы из Microsoft Forms в собственный интерфейс: компания,
анонимность, ФИО и должность, вид обращения, описание ситуации и предложение.

Поля автора скрываются при анонимном обращении, а не блокируются: требовать ФИО
у анонима — противоречие, а серое неактивное поле выглядит как ошибка формы.

Состояние целиком в useFeedbackForm, правила заполнения — в отдельной чистой
функции validateFeedback: её можно покрыть тестами без React.

Отправки пока нет — по договорённости делаем только UI, submit пишет данные в
консоль (TODO в useFeedbackForm).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 18:15:10 +05:00

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;