/** * Hardcoded English labels for ExerciseQuestion Storybook demos. * * These keys must stay in sync with apps/dashboard/src/lib/features/course/components/exercise/question-labels.ts, * which provides translated values via getExerciseQuestionLabels(). When adding or changing labels for a question type, * update both files. */ export const QUESTION_LABELS = { 'common.option_prefix': 'Option', 'common.remove': 'Remove', 'common.add_option': 'Add option', 'common.correct_badge': 'Correct', 'common.incorrect_badge': 'Incorrect', 'common.not_set': 'Not set', 'navigation.previous': 'Previous', 'navigation.next': 'Next', 'navigation.finish': 'Finish', 'question.edit.title_label': 'Title', 'question.edit.title_placeholder': 'Question prompt', 'question.edit.description_label': 'Description (optional)', 'question.edit.description_placeholder': 'Add additional context for this question', 'question.edit.add_description': 'Add description', 'question.edit.remove_description': 'Remove description', 'question.edit.media_menu_sr': 'Question extras menu', 'question.edit.add_image': 'Add image', 'question.edit.add_video': 'Add video', 'question.edit.remove_image_tooltip': 'Remove image', 'question.edit.remove_image_sr': 'Remove image', 'question.edit.remove_video_tooltip': 'Remove video', 'question.edit.remove_video_sr': 'Remove video', 'question.edit.image_alt': 'Question context', 'question.edit.video_modal_title': 'Add YouTube video', 'question.edit.video_link_label': 'YouTube link', 'question.edit.video_link_placeholder': 'https://www.youtube.com/watch?v=', 'question.edit.video_add_button': 'Add video', 'question.edit.video_invalid_link': 'Please enter a valid YouTube link.', 'question.edit.upload_error_only_images': 'Only image files are supported.', 'question.edit.upload_error_skipped': 'Some files were skipped because they are not images.', 'question.edit.upload_error_failed': 'Failed to upload image. Try again.', 'radio.edit.helper': 'Select exactly one correct option.', 'radio.edit.correct_selected_tooltip': 'Correct answer selected', 'radio.edit.mark_correct_tooltip': 'Mark as correct answer', 'radio.edit.mark_correct_sr': 'Mark option as correct', 'checkbox.edit.helper': 'Mark one or more options as correct.', 'checkbox.edit.correct_selected_tooltip': 'Correct answer selected', 'checkbox.edit.toggle_correct_tooltip': 'Toggle correct answer', 'checkbox.edit.toggle_correct_sr': 'Toggle option as correct', 'true_false.true_label': 'True', 'true_false.false_label': 'False', 'true_false.edit.correct_answer_label': 'Correct answer', 'true_false.preview.correct_value_label': 'Correct value', 'thumbs.yes_label': 'Yes', 'thumbs.no_label': 'No', 'thumbs.edit.positive_option_label': 'Thumbs up label', 'thumbs.edit.negative_option_label': 'Thumbs down label', 'thumbs.preview.helper': 'Open-ended — students choose thumbs up or down.', 'short_answer.edit.instructions_placeholder': 'Optional instructions', 'short_answer.take.placeholder': 'Type your answer', 'short_answer.preview.helper': 'Free-text answer question.', 'short_answer.review.your_answer_label': 'Submitted:', 'short_answer.review.accepted_label': 'Accepted answers', 'numeric.edit.correct_value_label': 'Correct value', 'numeric.edit.correct_value_info': 'Expected numeric answer to mark as correct.', 'numeric.edit.tolerance_label': 'Tolerance', 'numeric.edit.tolerance_info': 'Allowed +/- range from the correct value.', 'numeric.edit.correct_value_placeholder': 'Correct value', 'numeric.edit.tolerance_placeholder': 'Tolerance', 'numeric.take.placeholder': 'Enter a number', 'numeric.preview.correct_value_label': 'Correct value', 'numeric.preview.tolerance_label': 'Tolerance', 'numeric.review.your_answer_label': 'Submitted:', 'numeric.review.in_range': 'Within tolerance', 'numeric.review.out_of_range': 'Outside tolerance', 'star.edit.correct_value_label': 'Correct star value', 'star.edit.correct_value_info': 'Expected star count for full credit.', 'star.edit.max_stars_label': 'Maximum stars', 'star.edit.max_stars_info': 'Stars shown to learners (1–10).', 'star.edit.correct_value_placeholder': 'e.g. 3', 'star.edit.max_stars_placeholder': 'e.g. 5', 'star.take.helper': 'Select your rating.', 'star.take.star_sr': 'Star {n} of {max}', 'star.preview.correct_label': 'Correct answer', 'fill_blank.edit.accepted_answers_placeholder': 'Accepted answers (comma separated)', 'fill_blank.take.placeholder': 'Enter answers separated by commas', 'fill_blank.preview.accepted_answers_label': 'Accepted answers', 'fill_blank.review.your_answer_label': 'Submitted:', 'word_bank.edit.template_label': 'Sentence template', 'word_bank.edit.template_placeholder': 'Use ___ for each blank...', 'word_bank.edit.template_helper': 'Use three underscores (___) for each blank.', 'word_bank.edit.no_blanks_warning': 'Add at least one ___ blank marker in your template.', 'word_bank.edit.correct_answers_heading': 'Correct answer for each blank', 'word_bank.edit.blank_label': 'Blank', 'word_bank.edit.correct_placeholder': 'Correct term or phrase', 'word_bank.edit.distractors_heading': 'Extra words (distractors)', 'word_bank.edit.distractor_placeholder': 'Wrong option', 'word_bank.edit.add_distractor': 'Add distractor', 'word_bank.take.helper': 'Click or drag words into blanks.', 'word_bank.take.bank_heading': 'Word bank', 'word_bank.take.clear_blank_sr': 'Remove word from blank', 'word_bank.preview.filled_label': 'Expected answers in context', 'word_bank.review.your_answer_label': 'Your answers', 'word_bank.review.correct_label': 'Correct answers', 'file_upload.edit.accepted_types_placeholder': 'Select accepted file formats', 'file_upload.edit.max_size_placeholder': 'Max size (MB)', 'file_upload.take.selected_file_label': 'Selected file', 'file_upload.take.upload_button': 'Upload', 'file_upload.take.upload_progress': 'Uploading...', 'file_upload.take.upload_error': 'Upload failed', 'file_upload.take.view': 'View', 'file_upload.take.download': 'Download', 'file_upload.preview.accepted_types_label': 'Accepted types', 'file_upload.preview.max_size_label': 'Max size (MB)', 'video_recording.edit.max_duration_label': 'Max duration', 'video_recording.edit.max_duration_helper': 'Students record in the browser and can retake before submitting.', 'video_recording.edit.max_duration_placeholder': '60', 'video_recording.edit.manual_grading': 'Requires manual grading', 'video_recording.take.unsupported': 'Video recording is not supported in this browser.', 'video_recording.take.permission_prompt': 'Allow camera and microphone access to record your answer.', 'video_recording.take.permission_denied': 'Camera or microphone access was blocked. Check browser permissions.', 'video_recording.take.start_camera': 'Set up camera', 'video_recording.take.camera_label': 'Camera', 'video_recording.take.camera_placeholder': 'Select camera', 'video_recording.take.play_preview': 'Play recording preview', 'video_recording.take.pause_preview': 'Pause recording preview', 'video_recording.take.start_recording': 'Start recording', 'video_recording.take.stop_recording': 'Stop recording', 'video_recording.take.elapsed': 'Elapsed', 'video_recording.take.remaining': 'Remaining', 'video_recording.take.max_duration': 'Max', 'video_recording.take.too_short': 'Record for at least 1 second.', 'video_recording.take.use_recording': 'Use recording', 'video_recording.take.retake': 'Retake', 'video_recording.take.delete': 'Delete recording', 'video_recording.take.retry_upload': 'Retry upload', 'video_recording.take.uploading': 'Uploading recording...', 'video_recording.take.uploaded': 'Recording uploaded', 'video_recording.take.upload_failed': 'Upload failed. Try again.', 'video_recording.take.replaces_previous': 'A new accepted take replaces the previous answer after upload.', 'video_recording.preview.max_duration_label': 'Max duration', 'video_recording.preview.manual_grading': 'Learners record a short video response. Manual grading required.', 'video_recording.submission.no_video': 'No video submitted.', 'video_recording.submission.unavailable': 'Video unavailable.', 'video_recording.submission.duration': 'Duration', 'video_recording.submission.file_size': 'File size', 'video_recording.submission.recorded_at': 'Recorded', 'video_recording.submission.uploaded_at': 'Uploaded', 'video_recording.submission.retake_count': 'Retakes', 'link.edit.instructions_placeholder': 'Optional instructions for learners', 'link.edit.helper': 'Learners can submit one or more valid URLs (http/https).', 'link.take.helper': 'Add one or more links. Only valid http/https URLs are accepted.', 'link.take.placeholder': 'https://example.com/resource-{index}', 'link.take.remove_tooltip': 'Remove link', 'link.take.remove_sr': 'Remove link', 'link.take.invalid_url_error': 'Please enter a valid URL (http/https).', 'link.take.add_button': 'Add link', 'link.preview.empty': 'No links submitted.', 'link.preview.item_label': 'Link {index}', 'matching.edit.helper': 'Configure pairs in question settings via host app controls.', 'matching.take.placeholder': 'Provide matching pairs as JSON', 'matching.preview.helper': 'Matching pairs preview is provided by host app settings.', 'ordering.fallback_step_prefix': 'Step', 'ordering.edit.helper': 'Drag items to define the correct order.', 'ordering.edit.add_step': 'Add step', 'ordering.edit.empty': 'Add steps, then drag to set the expected order.', 'ordering.edit.step_placeholder': 'Step {index}', 'ordering.edit.remove_step_tooltip': 'Remove step', 'ordering.take.helper': 'Drag and drop to arrange the items in the correct order.', 'ordering.take.empty': 'No ordering items are configured for this question yet.', 'ordering.preview.submitted_label': 'Submitted order', 'ordering.preview.expected_label': 'Expected order', 'ordering.preview.matches': 'Submitted order matches expected order.', 'ordering.preview.differs': 'Submitted order differs from expected order.', 'hotspot.edit.helper': 'Configure hotspot image and zones in question settings via host app controls.', 'hotspot.take.placeholder': 'Provide hotspot coordinates as JSON', 'hotspot.preview.helper': 'Hotspot preview is provided by host app image and hotspot settings.', 'textarea.edit.placeholder': 'Learners will answer with long-form text', 'textarea.edit.min_characters_label': 'Minimum characters', 'textarea.edit.min_characters_placeholder': 'Minimum characters', 'textarea.edit.max_characters_label': 'Maximum characters', 'textarea.edit.max_characters_placeholder': 'Maximum characters', 'textarea.take.placeholder': 'Write your answer', 'submission.common.no_answer': 'No answer', 'submission.common.other': 'Other', 'submission.chart.responses': 'Responses', 'submission.chart.no_data': 'No responses yet', 'submission.list.responses': 'Responses', 'submission.list.no_responses': 'No responses yet' } as const;