@tinyweb_dev/oe-exam-sdk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2020) hide show
  1. package/README.md +254 -0
  2. package/dist/api/exam-create.d.ts +18 -0
  3. package/dist/api/exam-create.d.ts.map +1 -0
  4. package/dist/api/exam-create.js +180 -0
  5. package/dist/api/exam-create.js.map +1 -0
  6. package/dist/api/exam-create.types.d.ts +149 -0
  7. package/dist/api/exam-create.types.d.ts.map +1 -0
  8. package/dist/api/exam-create.types.js +2 -0
  9. package/dist/api/exam-create.types.js.map +1 -0
  10. package/dist/api/exam-questions.d.ts +10 -0
  11. package/dist/api/exam-questions.d.ts.map +1 -0
  12. package/dist/api/exam-questions.js +99 -0
  13. package/dist/api/exam-questions.js.map +1 -0
  14. package/dist/api/exam-questions.types.d.ts +63 -0
  15. package/dist/api/exam-questions.types.d.ts.map +1 -0
  16. package/dist/api/exam-questions.types.js +2 -0
  17. package/dist/api/exam-questions.types.js.map +1 -0
  18. package/dist/api/exam-taking.d.ts +8 -0
  19. package/dist/api/exam-taking.d.ts.map +1 -0
  20. package/dist/api/exam-taking.js +74 -0
  21. package/dist/api/exam-taking.js.map +1 -0
  22. package/dist/api/exam-taking.types.d.ts +148 -0
  23. package/dist/api/exam-taking.types.d.ts.map +1 -0
  24. package/dist/api/exam-taking.types.js +2 -0
  25. package/dist/api/exam-taking.types.js.map +1 -0
  26. package/dist/api/index.d.ts +8 -0
  27. package/dist/api/index.d.ts.map +1 -0
  28. package/dist/api/index.js +7 -0
  29. package/dist/api/index.js.map +1 -0
  30. package/dist/api/result-review.d.ts +8 -0
  31. package/dist/api/result-review.d.ts.map +1 -0
  32. package/dist/api/result-review.js +51 -0
  33. package/dist/api/result-review.js.map +1 -0
  34. package/dist/api/result-review.types.d.ts +86 -0
  35. package/dist/api/result-review.types.d.ts.map +1 -0
  36. package/dist/api/result-review.types.js +2 -0
  37. package/dist/api/result-review.types.js.map +1 -0
  38. package/dist/components/CueCardEditor.d.ts +8 -0
  39. package/dist/components/CueCardEditor.d.ts.map +1 -0
  40. package/dist/components/CueCardEditor.js +59 -0
  41. package/dist/components/CueCardEditor.js.map +1 -0
  42. package/dist/components/common/ResolvedImage.d.ts +9 -0
  43. package/dist/components/common/ResolvedImage.d.ts.map +1 -0
  44. package/dist/components/common/ResolvedImage.js +16 -0
  45. package/dist/components/common/ResolvedImage.js.map +1 -0
  46. package/dist/components/exams/CreateExamInfoForm.d.ts +9 -0
  47. package/dist/components/exams/CreateExamInfoForm.d.ts.map +1 -0
  48. package/dist/components/exams/CreateExamInfoForm.js +36 -0
  49. package/dist/components/exams/CreateExamInfoForm.js.map +1 -0
  50. package/dist/components/exams/CreateExamPageContainer.d.ts +10 -0
  51. package/dist/components/exams/CreateExamPageContainer.d.ts.map +1 -0
  52. package/dist/components/exams/CreateExamPageContainer.js +104 -0
  53. package/dist/components/exams/CreateExamPageContainer.js.map +1 -0
  54. package/dist/components/exams/ExamCreator.d.ts +17 -0
  55. package/dist/components/exams/ExamCreator.d.ts.map +1 -0
  56. package/dist/components/exams/ExamCreator.js +90 -0
  57. package/dist/components/exams/ExamCreator.js.map +1 -0
  58. package/dist/components/exams/ExamPartTabs.d.ts +10 -0
  59. package/dist/components/exams/ExamPartTabs.d.ts.map +1 -0
  60. package/dist/components/exams/ExamPartTabs.js +41 -0
  61. package/dist/components/exams/ExamPartTabs.js.map +1 -0
  62. package/dist/components/exams/ExamQuestionGrid.d.ts +10 -0
  63. package/dist/components/exams/ExamQuestionGrid.d.ts.map +1 -0
  64. package/dist/components/exams/ExamQuestionGrid.js +19 -0
  65. package/dist/components/exams/ExamQuestionGrid.js.map +1 -0
  66. package/dist/components/exams/ExamQuestionsPageContainer.d.ts +11 -0
  67. package/dist/components/exams/ExamQuestionsPageContainer.d.ts.map +1 -0
  68. package/dist/components/exams/ExamQuestionsPageContainer.js +91 -0
  69. package/dist/components/exams/ExamQuestionsPageContainer.js.map +1 -0
  70. package/dist/components/exams/PartAudioUploader.d.ts +10 -0
  71. package/dist/components/exams/PartAudioUploader.d.ts.map +1 -0
  72. package/dist/components/exams/PartAudioUploader.js +10 -0
  73. package/dist/components/exams/PartAudioUploader.js.map +1 -0
  74. package/dist/components/exams/TemplateSelector.d.ts +9 -0
  75. package/dist/components/exams/TemplateSelector.d.ts.map +1 -0
  76. package/dist/components/exams/TemplateSelector.js +67 -0
  77. package/dist/components/exams/TemplateSelector.js.map +1 -0
  78. package/dist/components/exams/api.d.ts +6 -0
  79. package/dist/components/exams/api.d.ts.map +1 -0
  80. package/dist/components/exams/api.js +4 -0
  81. package/dist/components/exams/api.js.map +1 -0
  82. package/dist/components/exams/create-exam.validation.d.ts +11 -0
  83. package/dist/components/exams/create-exam.validation.d.ts.map +1 -0
  84. package/dist/components/exams/create-exam.validation.js +19 -0
  85. package/dist/components/exams/create-exam.validation.js.map +1 -0
  86. package/dist/components/exams/exam-template.utils.d.ts +59 -0
  87. package/dist/components/exams/exam-template.utils.d.ts.map +1 -0
  88. package/dist/components/exams/exam-template.utils.js +19 -0
  89. package/dist/components/exams/exam-template.utils.js.map +1 -0
  90. package/dist/components/exams/index.d.ts +18 -0
  91. package/dist/components/exams/index.d.ts.map +1 -0
  92. package/dist/components/exams/index.js +11 -0
  93. package/dist/components/exams/index.js.map +1 -0
  94. package/dist/components/exams/take/ExamTakingPageContainer.d.ts +10 -0
  95. package/dist/components/exams/take/ExamTakingPageContainer.d.ts.map +1 -0
  96. package/dist/components/exams/take/ExamTakingPageContainer.js +154 -0
  97. package/dist/components/exams/take/ExamTakingPageContainer.js.map +1 -0
  98. package/dist/components/exams/take/GenericQuestionRenderer.d.ts +8 -0
  99. package/dist/components/exams/take/GenericQuestionRenderer.d.ts.map +1 -0
  100. package/dist/components/exams/take/GenericQuestionRenderer.js +15 -0
  101. package/dist/components/exams/take/GenericQuestionRenderer.js.map +1 -0
  102. package/dist/components/exams/take/exam-taking.utils.d.ts +116 -0
  103. package/dist/components/exams/take/exam-taking.utils.d.ts.map +1 -0
  104. package/dist/components/exams/take/exam-taking.utils.js +89 -0
  105. package/dist/components/exams/take/exam-taking.utils.js.map +1 -0
  106. package/dist/components/exams/take/hooks/useSpeakingRecorder.d.ts +9 -0
  107. package/dist/components/exams/take/hooks/useSpeakingRecorder.d.ts.map +1 -0
  108. package/dist/components/exams/take/hooks/useSpeakingRecorder.js +25 -0
  109. package/dist/components/exams/take/hooks/useSpeakingRecorder.js.map +1 -0
  110. package/dist/components/exams/take/index.d.ts +7 -0
  111. package/dist/components/exams/take/index.d.ts.map +1 -0
  112. package/dist/components/exams/take/index.js +3 -0
  113. package/dist/components/exams/take/index.js.map +1 -0
  114. package/dist/components/exams/take/types.d.ts +2 -0
  115. package/dist/components/exams/take/types.d.ts.map +1 -0
  116. package/dist/components/exams/take/types.js +2 -0
  117. package/dist/components/exams/take/types.js.map +1 -0
  118. package/dist/components/index.d.ts +43 -0
  119. package/dist/components/index.d.ts.map +1 -0
  120. package/dist/components/index.js +43 -0
  121. package/dist/components/index.js.map +1 -0
  122. package/dist/components/questions/_shared/config/question-types.config.d.ts +10 -0
  123. package/dist/components/questions/_shared/config/question-types.config.d.ts.map +1 -0
  124. package/dist/components/questions/_shared/config/question-types.config.js +334 -0
  125. package/dist/components/questions/_shared/config/question-types.config.js.map +1 -0
  126. package/dist/components/questions/_shared/constants/color-palette.d.ts +7 -0
  127. package/dist/components/questions/_shared/constants/color-palette.d.ts.map +1 -0
  128. package/dist/components/questions/_shared/constants/color-palette.js +22 -0
  129. package/dist/components/questions/_shared/constants/color-palette.js.map +1 -0
  130. package/dist/components/questions/_shared/hooks/useAnswerGroupQuestionGroup.d.ts +25 -0
  131. package/dist/components/questions/_shared/hooks/useAnswerGroupQuestionGroup.d.ts.map +1 -0
  132. package/dist/components/questions/_shared/hooks/useAnswerGroupQuestionGroup.js +106 -0
  133. package/dist/components/questions/_shared/hooks/useAnswerGroupQuestionGroup.js.map +1 -0
  134. package/dist/components/questions/_shared/hooks/useBasicQuestionGroup.d.ts +57 -0
  135. package/dist/components/questions/_shared/hooks/useBasicQuestionGroup.d.ts.map +1 -0
  136. package/dist/components/questions/_shared/hooks/useBasicQuestionGroup.js +223 -0
  137. package/dist/components/questions/_shared/hooks/useBasicQuestionGroup.js.map +1 -0
  138. package/dist/components/questions/_shared/hooks/useCompareImagesGroup.d.ts +12 -0
  139. package/dist/components/questions/_shared/hooks/useCompareImagesGroup.d.ts.map +1 -0
  140. package/dist/components/questions/_shared/hooks/useCompareImagesGroup.js +141 -0
  141. package/dist/components/questions/_shared/hooks/useCompareImagesGroup.js.map +1 -0
  142. package/dist/components/questions/_shared/hooks/useImageQuestionGroup.d.ts +20 -0
  143. package/dist/components/questions/_shared/hooks/useImageQuestionGroup.d.ts.map +1 -0
  144. package/dist/components/questions/_shared/hooks/useImageQuestionGroup.js +124 -0
  145. package/dist/components/questions/_shared/hooks/useImageQuestionGroup.js.map +1 -0
  146. package/dist/components/questions/_shared/hooks/useInfoExchangeGroup.d.ts +35 -0
  147. package/dist/components/questions/_shared/hooks/useInfoExchangeGroup.d.ts.map +1 -0
  148. package/dist/components/questions/_shared/hooks/useInfoExchangeGroup.js +51 -0
  149. package/dist/components/questions/_shared/hooks/useInfoExchangeGroup.js.map +1 -0
  150. package/dist/components/questions/_shared/hooks/useQuestionFormState.d.ts +90 -0
  151. package/dist/components/questions/_shared/hooks/useQuestionFormState.d.ts.map +1 -0
  152. package/dist/components/questions/_shared/hooks/useQuestionFormState.js +55 -0
  153. package/dist/components/questions/_shared/hooks/useQuestionFormState.js.map +1 -0
  154. package/dist/components/questions/_shared/hooks/useQuestionInitialization.d.ts +13 -0
  155. package/dist/components/questions/_shared/hooks/useQuestionInitialization.d.ts.map +1 -0
  156. package/dist/components/questions/_shared/hooks/useQuestionInitialization.js +124 -0
  157. package/dist/components/questions/_shared/hooks/useQuestionInitialization.js.map +1 -0
  158. package/dist/components/questions/_shared/hooks/useQuestionListGroup.d.ts +20 -0
  159. package/dist/components/questions/_shared/hooks/useQuestionListGroup.d.ts.map +1 -0
  160. package/dist/components/questions/_shared/hooks/useQuestionListGroup.js +122 -0
  161. package/dist/components/questions/_shared/hooks/useQuestionListGroup.js.map +1 -0
  162. package/dist/components/questions/_shared/hooks/useQuestionOnChange.d.ts +13 -0
  163. package/dist/components/questions/_shared/hooks/useQuestionOnChange.d.ts.map +1 -0
  164. package/dist/components/questions/_shared/hooks/useQuestionOnChange.js +71 -0
  165. package/dist/components/questions/_shared/hooks/useQuestionOnChange.js.map +1 -0
  166. package/dist/components/questions/_shared/hooks/useSceneQuestionGroup.d.ts +51 -0
  167. package/dist/components/questions/_shared/hooks/useSceneQuestionGroup.d.ts.map +1 -0
  168. package/dist/components/questions/_shared/hooks/useSceneQuestionGroup.js +195 -0
  169. package/dist/components/questions/_shared/hooks/useSceneQuestionGroup.js.map +1 -0
  170. package/dist/components/questions/_shared/index.d.ts +8 -0
  171. package/dist/components/questions/_shared/index.d.ts.map +1 -0
  172. package/dist/components/questions/_shared/index.js +8 -0
  173. package/dist/components/questions/_shared/index.js.map +1 -0
  174. package/dist/components/questions/_shared/types/answer-the-question.type.d.ts +59 -0
  175. package/dist/components/questions/_shared/types/answer-the-question.type.d.ts.map +1 -0
  176. package/dist/components/questions/_shared/types/answer-the-question.type.js +2 -0
  177. package/dist/components/questions/_shared/types/answer-the-question.type.js.map +1 -0
  178. package/dist/components/questions/_shared/types/arrange-letters-into-words.type.d.ts +24 -0
  179. package/dist/components/questions/_shared/types/arrange-letters-into-words.type.d.ts.map +1 -0
  180. package/dist/components/questions/_shared/types/arrange-letters-into-words.type.js +2 -0
  181. package/dist/components/questions/_shared/types/arrange-letters-into-words.type.js.map +1 -0
  182. package/dist/components/questions/_shared/types/choose-correct-adjective.type.d.ts +22 -0
  183. package/dist/components/questions/_shared/types/choose-correct-adjective.type.d.ts.map +1 -0
  184. package/dist/components/questions/_shared/types/choose-correct-adjective.type.js +4 -0
  185. package/dist/components/questions/_shared/types/choose-correct-adjective.type.js.map +1 -0
  186. package/dist/components/questions/_shared/types/color-region.config.d.ts +34 -0
  187. package/dist/components/questions/_shared/types/color-region.config.d.ts.map +1 -0
  188. package/dist/components/questions/_shared/types/color-region.config.js +2 -0
  189. package/dist/components/questions/_shared/types/color-region.config.js.map +1 -0
  190. package/dist/components/questions/_shared/types/fill-in-blank.type.d.ts +53 -0
  191. package/dist/components/questions/_shared/types/fill-in-blank.type.d.ts.map +1 -0
  192. package/dist/components/questions/_shared/types/fill-in-blank.type.js +2 -0
  193. package/dist/components/questions/_shared/types/fill-in-blank.type.js.map +1 -0
  194. package/dist/components/questions/_shared/types/fill-missing-words-in-grid.type.d.ts +48 -0
  195. package/dist/components/questions/_shared/types/fill-missing-words-in-grid.type.d.ts.map +1 -0
  196. package/dist/components/questions/_shared/types/fill-missing-words-in-grid.type.js +2 -0
  197. package/dist/components/questions/_shared/types/fill-missing-words-in-grid.type.js.map +1 -0
  198. package/dist/components/questions/_shared/types/gn-speaking-interview.type.d.ts +33 -0
  199. package/dist/components/questions/_shared/types/gn-speaking-interview.type.d.ts.map +1 -0
  200. package/dist/components/questions/_shared/types/gn-speaking-interview.type.js +2 -0
  201. package/dist/components/questions/_shared/types/gn-speaking-interview.type.js.map +1 -0
  202. package/dist/components/questions/_shared/types/index.d.ts +13 -0
  203. package/dist/components/questions/_shared/types/index.d.ts.map +1 -0
  204. package/dist/components/questions/_shared/types/index.js +13 -0
  205. package/dist/components/questions/_shared/types/index.js.map +1 -0
  206. package/dist/components/questions/_shared/types/label-the-picture.type.d.ts +33 -0
  207. package/dist/components/questions/_shared/types/label-the-picture.type.d.ts.map +1 -0
  208. package/dist/components/questions/_shared/types/label-the-picture.type.js +2 -0
  209. package/dist/components/questions/_shared/types/label-the-picture.type.js.map +1 -0
  210. package/dist/components/questions/_shared/types/listen-and-choose-from-answer-group.type.d.ts +48 -0
  211. package/dist/components/questions/_shared/types/listen-and-choose-from-answer-group.type.d.ts.map +1 -0
  212. package/dist/components/questions/_shared/types/listen-and-choose-from-answer-group.type.js +2 -0
  213. package/dist/components/questions/_shared/types/listen-and-choose-from-answer-group.type.js.map +1 -0
  214. package/dist/components/questions/_shared/types/listen-and-choose-objects-in-scene.type.d.ts +56 -0
  215. package/dist/components/questions/_shared/types/listen-and-choose-objects-in-scene.type.d.ts.map +1 -0
  216. package/dist/components/questions/_shared/types/listen-and-choose-objects-in-scene.type.js +2 -0
  217. package/dist/components/questions/_shared/types/listen-and-choose-objects-in-scene.type.js.map +1 -0
  218. package/dist/components/questions/_shared/types/listen-and-drag-objects-into-scene.type.d.ts +66 -0
  219. package/dist/components/questions/_shared/types/listen-and-drag-objects-into-scene.type.d.ts.map +1 -0
  220. package/dist/components/questions/_shared/types/listen-and-drag-objects-into-scene.type.js +2 -0
  221. package/dist/components/questions/_shared/types/listen-and-drag-objects-into-scene.type.js.map +1 -0
  222. package/dist/components/questions/_shared/types/listen-and-speak-answer.type.d.ts +32 -0
  223. package/dist/components/questions/_shared/types/listen-and-speak-answer.type.d.ts.map +1 -0
  224. package/dist/components/questions/_shared/types/listen-and-speak-answer.type.js +2 -0
  225. package/dist/components/questions/_shared/types/listen-and-speak-answer.type.js.map +1 -0
  226. package/dist/components/questions/_shared/types/listen-and-speak-compare-images.type.d.ts +35 -0
  227. package/dist/components/questions/_shared/types/listen-and-speak-compare-images.type.d.ts.map +1 -0
  228. package/dist/components/questions/_shared/types/listen-and-speak-compare-images.type.js +2 -0
  229. package/dist/components/questions/_shared/types/listen-and-speak-compare-images.type.js.map +1 -0
  230. package/dist/components/questions/_shared/types/listen-and-speak-image-group.type.d.ts +30 -0
  231. package/dist/components/questions/_shared/types/listen-and-speak-image-group.type.d.ts.map +1 -0
  232. package/dist/components/questions/_shared/types/listen-and-speak-image-group.type.js +2 -0
  233. package/dist/components/questions/_shared/types/listen-and-speak-image-group.type.js.map +1 -0
  234. package/dist/components/questions/_shared/types/listen-and-speak-info-exchange.type.d.ts +39 -0
  235. package/dist/components/questions/_shared/types/listen-and-speak-info-exchange.type.d.ts.map +1 -0
  236. package/dist/components/questions/_shared/types/listen-and-speak-info-exchange.type.js +2 -0
  237. package/dist/components/questions/_shared/types/listen-and-speak-info-exchange.type.js.map +1 -0
  238. package/dist/components/questions/_shared/types/listen-and-speak-odd-one-out.type.d.ts +26 -0
  239. package/dist/components/questions/_shared/types/listen-and-speak-odd-one-out.type.d.ts.map +1 -0
  240. package/dist/components/questions/_shared/types/listen-and-speak-odd-one-out.type.js +4 -0
  241. package/dist/components/questions/_shared/types/listen-and-speak-odd-one-out.type.js.map +1 -0
  242. package/dist/components/questions/_shared/types/listen-and-speak-question-list.type.d.ts +28 -0
  243. package/dist/components/questions/_shared/types/listen-and-speak-question-list.type.d.ts.map +1 -0
  244. package/dist/components/questions/_shared/types/listen-and-speak-question-list.type.js +2 -0
  245. package/dist/components/questions/_shared/types/listen-and-speak-question-list.type.js.map +1 -0
  246. package/dist/components/questions/_shared/types/listen-and-speak-with-story-images.type.d.ts +25 -0
  247. package/dist/components/questions/_shared/types/listen-and-speak-with-story-images.type.d.ts.map +1 -0
  248. package/dist/components/questions/_shared/types/listen-and-speak-with-story-images.type.js +4 -0
  249. package/dist/components/questions/_shared/types/listen-and-speak-with-story-images.type.js.map +1 -0
  250. package/dist/components/questions/_shared/types/listen-and-tick-answer.type.d.ts +33 -0
  251. package/dist/components/questions/_shared/types/listen-and-tick-answer.type.d.ts.map +1 -0
  252. package/dist/components/questions/_shared/types/listen-and-tick-answer.type.js +2 -0
  253. package/dist/components/questions/_shared/types/listen-and-tick-answer.type.js.map +1 -0
  254. package/dist/components/questions/_shared/types/listening-drawline.type.d.ts +40 -0
  255. package/dist/components/questions/_shared/types/listening-drawline.type.d.ts.map +1 -0
  256. package/dist/components/questions/_shared/types/listening-drawline.type.js +2 -0
  257. package/dist/components/questions/_shared/types/listening-drawline.type.js.map +1 -0
  258. package/dist/components/questions/_shared/types/look-and-choose-answer.type.d.ts +64 -0
  259. package/dist/components/questions/_shared/types/look-and-choose-answer.type.d.ts.map +1 -0
  260. package/dist/components/questions/_shared/types/look-and-choose-answer.type.js +2 -0
  261. package/dist/components/questions/_shared/types/look-and-choose-answer.type.js.map +1 -0
  262. package/dist/components/questions/_shared/types/look-picture-fill-word-hint.type.d.ts +48 -0
  263. package/dist/components/questions/_shared/types/look-picture-fill-word-hint.type.d.ts.map +1 -0
  264. package/dist/components/questions/_shared/types/look-picture-fill-word-hint.type.js +2 -0
  265. package/dist/components/questions/_shared/types/look-picture-fill-word-hint.type.js.map +1 -0
  266. package/dist/components/questions/_shared/types/match-by-writing-answer.type.d.ts +52 -0
  267. package/dist/components/questions/_shared/types/match-by-writing-answer.type.d.ts.map +1 -0
  268. package/dist/components/questions/_shared/types/match-by-writing-answer.type.js +2 -0
  269. package/dist/components/questions/_shared/types/match-by-writing-answer.type.js.map +1 -0
  270. package/dist/components/questions/_shared/types/multiple-choice.type.d.ts +39 -0
  271. package/dist/components/questions/_shared/types/multiple-choice.type.d.ts.map +1 -0
  272. package/dist/components/questions/_shared/types/multiple-choice.type.js +2 -0
  273. package/dist/components/questions/_shared/types/multiple-choice.type.js.map +1 -0
  274. package/dist/components/questions/_shared/types/question-group.type.d.ts +45 -0
  275. package/dist/components/questions/_shared/types/question-group.type.d.ts.map +1 -0
  276. package/dist/components/questions/_shared/types/question-group.type.js +12 -0
  277. package/dist/components/questions/_shared/types/question-group.type.js.map +1 -0
  278. package/dist/components/questions/_shared/types/read-and-color-objects.type.d.ts +44 -0
  279. package/dist/components/questions/_shared/types/read-and-color-objects.type.d.ts.map +1 -0
  280. package/dist/components/questions/_shared/types/read-and-color-objects.type.js +2 -0
  281. package/dist/components/questions/_shared/types/read-and-color-objects.type.js.map +1 -0
  282. package/dist/components/questions/_shared/types/read-displayed-content.type.d.ts +19 -0
  283. package/dist/components/questions/_shared/types/read-displayed-content.type.d.ts.map +1 -0
  284. package/dist/components/questions/_shared/types/read-displayed-content.type.js +2 -0
  285. package/dist/components/questions/_shared/types/read-displayed-content.type.js.map +1 -0
  286. package/dist/components/questions/_shared/types/read-passage-and-answer-questions.type.d.ts +46 -0
  287. package/dist/components/questions/_shared/types/read-passage-and-answer-questions.type.d.ts.map +1 -0
  288. package/dist/components/questions/_shared/types/read-passage-and-answer-questions.type.js +2 -0
  289. package/dist/components/questions/_shared/types/read-passage-and-answer-questions.type.js.map +1 -0
  290. package/dist/components/questions/_shared/types/speaking-describe-image.type.d.ts +18 -0
  291. package/dist/components/questions/_shared/types/speaking-describe-image.type.d.ts.map +1 -0
  292. package/dist/components/questions/_shared/types/speaking-describe-image.type.js +2 -0
  293. package/dist/components/questions/_shared/types/speaking-describe-image.type.js.map +1 -0
  294. package/dist/components/questions/_shared/types/spontaneous-qa.type.d.ts +25 -0
  295. package/dist/components/questions/_shared/types/spontaneous-qa.type.d.ts.map +1 -0
  296. package/dist/components/questions/_shared/types/spontaneous-qa.type.js +2 -0
  297. package/dist/components/questions/_shared/types/spontaneous-qa.type.js.map +1 -0
  298. package/dist/components/questions/_shared/types/word-fill-paragraph-with-options.type.d.ts +47 -0
  299. package/dist/components/questions/_shared/types/word-fill-paragraph-with-options.type.d.ts.map +1 -0
  300. package/dist/components/questions/_shared/types/word-fill-paragraph-with-options.type.js +2 -0
  301. package/dist/components/questions/_shared/types/word-fill-paragraph-with-options.type.js.map +1 -0
  302. package/dist/components/questions/_shared/types/word-fill-paragraph.type.d.ts +53 -0
  303. package/dist/components/questions/_shared/types/word-fill-paragraph.type.d.ts.map +1 -0
  304. package/dist/components/questions/_shared/types/word-fill-paragraph.type.js +2 -0
  305. package/dist/components/questions/_shared/types/word-fill-paragraph.type.js.map +1 -0
  306. package/dist/components/questions/_shared/types/word-fill-structured-form.type.d.ts +47 -0
  307. package/dist/components/questions/_shared/types/word-fill-structured-form.type.d.ts.map +1 -0
  308. package/dist/components/questions/_shared/types/word-fill-structured-form.type.js +2 -0
  309. package/dist/components/questions/_shared/types/word-fill-structured-form.type.js.map +1 -0
  310. package/dist/components/questions/_shared/types/word-ordering.type.d.ts +36 -0
  311. package/dist/components/questions/_shared/types/word-ordering.type.d.ts.map +1 -0
  312. package/dist/components/questions/_shared/types/word-ordering.type.js +2 -0
  313. package/dist/components/questions/_shared/types/word-ordering.type.js.map +1 -0
  314. package/dist/components/questions/_shared/types/write-a-short-letter.type.d.ts +36 -0
  315. package/dist/components/questions/_shared/types/write-a-short-letter.type.d.ts.map +1 -0
  316. package/dist/components/questions/_shared/types/write-a-short-letter.type.js +2 -0
  317. package/dist/components/questions/_shared/types/write-a-short-letter.type.js.map +1 -0
  318. package/dist/components/questions/_shared/types/write-correct-verb-form.type.d.ts +29 -0
  319. package/dist/components/questions/_shared/types/write-correct-verb-form.type.d.ts.map +1 -0
  320. package/dist/components/questions/_shared/types/write-correct-verb-form.type.js +4 -0
  321. package/dist/components/questions/_shared/types/write-correct-verb-form.type.js.map +1 -0
  322. package/dist/components/questions/_shared/types/write-sentences.type.d.ts +41 -0
  323. package/dist/components/questions/_shared/types/write-sentences.type.d.ts.map +1 -0
  324. package/dist/components/questions/_shared/types/write-sentences.type.js +2 -0
  325. package/dist/components/questions/_shared/types/write-sentences.type.js.map +1 -0
  326. package/dist/components/questions/_shared/types/write-short-paragraph.type.d.ts +31 -0
  327. package/dist/components/questions/_shared/types/write-short-paragraph.type.d.ts.map +1 -0
  328. package/dist/components/questions/_shared/types/write-short-paragraph.type.js +2 -0
  329. package/dist/components/questions/_shared/types/write-short-paragraph.type.js.map +1 -0
  330. package/dist/components/questions/_shared/utils/answer-builder.d.ts +4 -0
  331. package/dist/components/questions/_shared/utils/answer-builder.d.ts.map +1 -0
  332. package/dist/components/questions/_shared/utils/answer-builder.js +80 -0
  333. package/dist/components/questions/_shared/utils/answer-builder.js.map +1 -0
  334. package/dist/components/questions/_shared/utils/createColorRegionRegistration.d.ts +7 -0
  335. package/dist/components/questions/_shared/utils/createColorRegionRegistration.d.ts.map +1 -0
  336. package/dist/components/questions/_shared/utils/createColorRegionRegistration.js +40 -0
  337. package/dist/components/questions/_shared/utils/createColorRegionRegistration.js.map +1 -0
  338. package/dist/components/questions/_shared/utils/id-generator.d.ts +2 -0
  339. package/dist/components/questions/_shared/utils/id-generator.d.ts.map +1 -0
  340. package/dist/components/questions/_shared/utils/id-generator.js +4 -0
  341. package/dist/components/questions/_shared/utils/id-generator.js.map +1 -0
  342. package/dist/components/questions/_shared/utils/question-validation.d.ts +6 -0
  343. package/dist/components/questions/_shared/utils/question-validation.d.ts.map +1 -0
  344. package/dist/components/questions/_shared/utils/question-validation.js +22 -0
  345. package/dist/components/questions/_shared/utils/question-validation.js.map +1 -0
  346. package/dist/components/questions/components/ColorNode.d.ts +20 -0
  347. package/dist/components/questions/components/ColorNode.d.ts.map +1 -0
  348. package/dist/components/questions/components/ColorNode.js +86 -0
  349. package/dist/components/questions/components/ColorNode.js.map +1 -0
  350. package/dist/components/questions/components/ColorRegionClient.d.ts +12 -0
  351. package/dist/components/questions/components/ColorRegionClient.d.ts.map +1 -0
  352. package/dist/components/questions/components/ColorRegionClient.js +546 -0
  353. package/dist/components/questions/components/ColorRegionClient.js.map +1 -0
  354. package/dist/components/questions/components/ColorRegionCreator.d.ts +8 -0
  355. package/dist/components/questions/components/ColorRegionCreator.d.ts.map +1 -0
  356. package/dist/components/questions/components/ColorRegionCreator.js +421 -0
  357. package/dist/components/questions/components/ColorRegionCreator.js.map +1 -0
  358. package/dist/components/questions/components/ColorRegionNode.d.ts +20 -0
  359. package/dist/components/questions/components/ColorRegionNode.d.ts.map +1 -0
  360. package/dist/components/questions/components/ColorRegionNode.js +60 -0
  361. package/dist/components/questions/components/ColorRegionNode.js.map +1 -0
  362. package/dist/components/questions/components/CreatorGuide.d.ts +103 -0
  363. package/dist/components/questions/components/CreatorGuide.d.ts.map +1 -0
  364. package/dist/components/questions/components/CreatorGuide.js +104 -0
  365. package/dist/components/questions/components/CreatorGuide.js.map +1 -0
  366. package/dist/components/questions/components/NameNode.d.ts +18 -0
  367. package/dist/components/questions/components/NameNode.d.ts.map +1 -0
  368. package/dist/components/questions/components/NameNode.js +27 -0
  369. package/dist/components/questions/components/NameNode.js.map +1 -0
  370. package/dist/components/questions/components/QuestionBankOption.d.ts +33 -0
  371. package/dist/components/questions/components/QuestionBankOption.d.ts.map +1 -0
  372. package/dist/components/questions/components/QuestionBankOption.js +47 -0
  373. package/dist/components/questions/components/QuestionBankOption.js.map +1 -0
  374. package/dist/components/questions/components/QuestionBasicInfoForm.d.ts +20 -0
  375. package/dist/components/questions/components/QuestionBasicInfoForm.d.ts.map +1 -0
  376. package/dist/components/questions/components/QuestionBasicInfoForm.js +10 -0
  377. package/dist/components/questions/components/QuestionBasicInfoForm.js.map +1 -0
  378. package/dist/components/questions/components/QuestionCommonFields.d.ts +23 -0
  379. package/dist/components/questions/components/QuestionCommonFields.d.ts.map +1 -0
  380. package/dist/components/questions/components/QuestionCommonFields.js +34 -0
  381. package/dist/components/questions/components/QuestionCommonFields.js.map +1 -0
  382. package/dist/components/questions/components/QuestionSearchDropdown.d.ts +42 -0
  383. package/dist/components/questions/components/QuestionSearchDropdown.d.ts.map +1 -0
  384. package/dist/components/questions/components/QuestionSearchDropdown.js +259 -0
  385. package/dist/components/questions/components/QuestionSearchDropdown.js.map +1 -0
  386. package/dist/components/questions/components/QuestionTypeSelector.d.ts +9 -0
  387. package/dist/components/questions/components/QuestionTypeSelector.d.ts.map +1 -0
  388. package/dist/components/questions/components/QuestionTypeSelector.js +33 -0
  389. package/dist/components/questions/components/QuestionTypeSelector.js.map +1 -0
  390. package/dist/components/questions/components/QuestionTypeSpecificForms.d.ts +10 -0
  391. package/dist/components/questions/components/QuestionTypeSpecificForms.d.ts.map +1 -0
  392. package/dist/components/questions/components/QuestionTypeSpecificForms.js +7 -0
  393. package/dist/components/questions/components/QuestionTypeSpecificForms.js.map +1 -0
  394. package/dist/components/questions/components/RegionNode.d.ts +20 -0
  395. package/dist/components/questions/components/RegionNode.d.ts.map +1 -0
  396. package/dist/components/questions/components/RegionNode.js +95 -0
  397. package/dist/components/questions/components/RegionNode.js.map +1 -0
  398. package/dist/components/questions/components/index.d.ts +15 -0
  399. package/dist/components/questions/components/index.d.ts.map +1 -0
  400. package/dist/components/questions/components/index.js +15 -0
  401. package/dist/components/questions/components/index.js.map +1 -0
  402. package/dist/components/questions/creator/QuestionCreator.d.ts +35 -0
  403. package/dist/components/questions/creator/QuestionCreator.d.ts.map +1 -0
  404. package/dist/components/questions/creator/QuestionCreator.js +91 -0
  405. package/dist/components/questions/creator/QuestionCreator.js.map +1 -0
  406. package/dist/components/questions/creator/QuestionGroupCreator.d.ts +8 -0
  407. package/dist/components/questions/creator/QuestionGroupCreator.d.ts.map +1 -0
  408. package/dist/components/questions/creator/QuestionGroupCreator.js +120 -0
  409. package/dist/components/questions/creator/QuestionGroupCreator.js.map +1 -0
  410. package/dist/components/questions/creator/dedicated-component-router.d.ts +39 -0
  411. package/dist/components/questions/creator/dedicated-component-router.d.ts.map +1 -0
  412. package/dist/components/questions/creator/dedicated-component-router.js +80 -0
  413. package/dist/components/questions/creator/dedicated-component-router.js.map +1 -0
  414. package/dist/components/questions/creator/index.d.ts +4 -0
  415. package/dist/components/questions/creator/index.d.ts.map +1 -0
  416. package/dist/components/questions/creator/index.js +4 -0
  417. package/dist/components/questions/creator/index.js.map +1 -0
  418. package/dist/components/questions/creator/question-type-registry.d.ts +66 -0
  419. package/dist/components/questions/creator/question-type-registry.d.ts.map +1 -0
  420. package/dist/components/questions/creator/question-type-registry.js +81 -0
  421. package/dist/components/questions/creator/question-type-registry.js.map +1 -0
  422. package/dist/components/questions/groups/ArticlesGroupCard.d.ts +35 -0
  423. package/dist/components/questions/groups/ArticlesGroupCard.d.ts.map +1 -0
  424. package/dist/components/questions/groups/ArticlesGroupCard.js +122 -0
  425. package/dist/components/questions/groups/ArticlesGroupCard.js.map +1 -0
  426. package/dist/components/questions/groups/BasicQuestionGroupCard.d.ts +51 -0
  427. package/dist/components/questions/groups/BasicQuestionGroupCard.d.ts.map +1 -0
  428. package/dist/components/questions/groups/BasicQuestionGroupCard.js +51 -0
  429. package/dist/components/questions/groups/BasicQuestionGroupCard.js.map +1 -0
  430. package/dist/components/questions/groups/DocumentGroupCard.d.ts +35 -0
  431. package/dist/components/questions/groups/DocumentGroupCard.d.ts.map +1 -0
  432. package/dist/components/questions/groups/DocumentGroupCard.js +115 -0
  433. package/dist/components/questions/groups/DocumentGroupCard.js.map +1 -0
  434. package/dist/components/questions/groups/MatchAnswerGroupCard.d.ts +19 -0
  435. package/dist/components/questions/groups/MatchAnswerGroupCard.d.ts.map +1 -0
  436. package/dist/components/questions/groups/MatchAnswerGroupCard.js +26 -0
  437. package/dist/components/questions/groups/MatchAnswerGroupCard.js.map +1 -0
  438. package/dist/components/questions/index.d.ts +11 -0
  439. package/dist/components/questions/index.d.ts.map +1 -0
  440. package/dist/components/questions/index.js +11 -0
  441. package/dist/components/questions/index.js.map +1 -0
  442. package/dist/components/questions/types/answer-the-question/AnswerTheQuestionClient.d.ts +3 -0
  443. package/dist/components/questions/types/answer-the-question/AnswerTheQuestionClient.d.ts.map +1 -0
  444. package/dist/components/questions/types/answer-the-question/AnswerTheQuestionClient.js +38 -0
  445. package/dist/components/questions/types/answer-the-question/AnswerTheQuestionClient.js.map +1 -0
  446. package/dist/components/questions/types/answer-the-question/AnswerTheQuestionCreator.d.ts +3 -0
  447. package/dist/components/questions/types/answer-the-question/AnswerTheQuestionCreator.d.ts.map +1 -0
  448. package/dist/components/questions/types/answer-the-question/AnswerTheQuestionCreator.js +352 -0
  449. package/dist/components/questions/types/answer-the-question/AnswerTheQuestionCreator.js.map +1 -0
  450. package/dist/components/questions/types/answer-the-question/register.d.ts +3 -0
  451. package/dist/components/questions/types/answer-the-question/register.d.ts.map +1 -0
  452. package/dist/components/questions/types/answer-the-question/register.js +68 -0
  453. package/dist/components/questions/types/answer-the-question/register.js.map +1 -0
  454. package/dist/components/questions/types/answer-the-question/transform.d.ts +3 -0
  455. package/dist/components/questions/types/answer-the-question/transform.d.ts.map +1 -0
  456. package/dist/components/questions/types/answer-the-question/transform.js +37 -0
  457. package/dist/components/questions/types/answer-the-question/transform.js.map +1 -0
  458. package/dist/components/questions/types/arrange-letters-into-words/ArrangeLettersIntoWordsClient.d.ts +3 -0
  459. package/dist/components/questions/types/arrange-letters-into-words/ArrangeLettersIntoWordsClient.d.ts.map +1 -0
  460. package/dist/components/questions/types/arrange-letters-into-words/ArrangeLettersIntoWordsClient.js +142 -0
  461. package/dist/components/questions/types/arrange-letters-into-words/ArrangeLettersIntoWordsClient.js.map +1 -0
  462. package/dist/components/questions/types/arrange-letters-into-words/ArrangeLettersIntoWordsCreator.d.ts +3 -0
  463. package/dist/components/questions/types/arrange-letters-into-words/ArrangeLettersIntoWordsCreator.d.ts.map +1 -0
  464. package/dist/components/questions/types/arrange-letters-into-words/ArrangeLettersIntoWordsCreator.js +119 -0
  465. package/dist/components/questions/types/arrange-letters-into-words/ArrangeLettersIntoWordsCreator.js.map +1 -0
  466. package/dist/components/questions/types/arrange-letters-into-words/index.d.ts +3 -0
  467. package/dist/components/questions/types/arrange-letters-into-words/index.d.ts.map +1 -0
  468. package/dist/components/questions/types/arrange-letters-into-words/index.js +3 -0
  469. package/dist/components/questions/types/arrange-letters-into-words/index.js.map +1 -0
  470. package/dist/components/questions/types/arrange-letters-into-words/register.d.ts +3 -0
  471. package/dist/components/questions/types/arrange-letters-into-words/register.d.ts.map +1 -0
  472. package/dist/components/questions/types/arrange-letters-into-words/register.js +5 -0
  473. package/dist/components/questions/types/arrange-letters-into-words/register.js.map +1 -0
  474. package/dist/components/questions/types/arrange-letters-into-words/transform.d.ts +3 -0
  475. package/dist/components/questions/types/arrange-letters-into-words/transform.d.ts.map +1 -0
  476. package/dist/components/questions/types/arrange-letters-into-words/transform.js +25 -0
  477. package/dist/components/questions/types/arrange-letters-into-words/transform.js.map +1 -0
  478. package/dist/components/questions/types/choose-correct-adjective/ChooseCorrectAdjectiveClient.d.ts +3 -0
  479. package/dist/components/questions/types/choose-correct-adjective/ChooseCorrectAdjectiveClient.d.ts.map +1 -0
  480. package/dist/components/questions/types/choose-correct-adjective/ChooseCorrectAdjectiveClient.js +65 -0
  481. package/dist/components/questions/types/choose-correct-adjective/ChooseCorrectAdjectiveClient.js.map +1 -0
  482. package/dist/components/questions/types/choose-correct-adjective/ChooseCorrectAdjectiveCreator.d.ts +3 -0
  483. package/dist/components/questions/types/choose-correct-adjective/ChooseCorrectAdjectiveCreator.d.ts.map +1 -0
  484. package/dist/components/questions/types/choose-correct-adjective/ChooseCorrectAdjectiveCreator.js +170 -0
  485. package/dist/components/questions/types/choose-correct-adjective/ChooseCorrectAdjectiveCreator.js.map +1 -0
  486. package/dist/components/questions/types/choose-correct-adjective/index.d.ts +3 -0
  487. package/dist/components/questions/types/choose-correct-adjective/index.d.ts.map +1 -0
  488. package/dist/components/questions/types/choose-correct-adjective/index.js +3 -0
  489. package/dist/components/questions/types/choose-correct-adjective/index.js.map +1 -0
  490. package/dist/components/questions/types/choose-correct-adjective/register.d.ts +3 -0
  491. package/dist/components/questions/types/choose-correct-adjective/register.d.ts.map +1 -0
  492. package/dist/components/questions/types/choose-correct-adjective/register.js +56 -0
  493. package/dist/components/questions/types/choose-correct-adjective/register.js.map +1 -0
  494. package/dist/components/questions/types/choose-correct-adjective/transform.d.ts +3 -0
  495. package/dist/components/questions/types/choose-correct-adjective/transform.d.ts.map +1 -0
  496. package/dist/components/questions/types/choose-correct-adjective/transform.js +17 -0
  497. package/dist/components/questions/types/choose-correct-adjective/transform.js.map +1 -0
  498. package/dist/components/questions/types/choose-the-correct-answer/ChooseTheCorrectAnswerClient.d.ts +3 -0
  499. package/dist/components/questions/types/choose-the-correct-answer/ChooseTheCorrectAnswerClient.d.ts.map +1 -0
  500. package/dist/components/questions/types/choose-the-correct-answer/ChooseTheCorrectAnswerClient.js +132 -0
  501. package/dist/components/questions/types/choose-the-correct-answer/ChooseTheCorrectAnswerClient.js.map +1 -0
  502. package/dist/components/questions/types/choose-the-correct-answer/ChooseTheCorrectAnswerCreator.d.ts +26 -0
  503. package/dist/components/questions/types/choose-the-correct-answer/ChooseTheCorrectAnswerCreator.d.ts.map +1 -0
  504. package/dist/components/questions/types/choose-the-correct-answer/ChooseTheCorrectAnswerCreator.js +582 -0
  505. package/dist/components/questions/types/choose-the-correct-answer/ChooseTheCorrectAnswerCreator.js.map +1 -0
  506. package/dist/components/questions/types/choose-the-correct-answer/index.d.ts +3 -0
  507. package/dist/components/questions/types/choose-the-correct-answer/index.d.ts.map +1 -0
  508. package/dist/components/questions/types/choose-the-correct-answer/index.js +3 -0
  509. package/dist/components/questions/types/choose-the-correct-answer/index.js.map +1 -0
  510. package/dist/components/questions/types/choose-the-correct-answer/register.d.ts +3 -0
  511. package/dist/components/questions/types/choose-the-correct-answer/register.d.ts.map +1 -0
  512. package/dist/components/questions/types/choose-the-correct-answer/register.js +102 -0
  513. package/dist/components/questions/types/choose-the-correct-answer/register.js.map +1 -0
  514. package/dist/components/questions/types/choose-the-correct-answer/transform.d.ts +3 -0
  515. package/dist/components/questions/types/choose-the-correct-answer/transform.d.ts.map +1 -0
  516. package/dist/components/questions/types/choose-the-correct-answer/transform.js +44 -0
  517. package/dist/components/questions/types/choose-the-correct-answer/transform.js.map +1 -0
  518. package/dist/components/questions/types/fill-in-blank/FillInBlankClient.d.ts +3 -0
  519. package/dist/components/questions/types/fill-in-blank/FillInBlankClient.d.ts.map +1 -0
  520. package/dist/components/questions/types/fill-in-blank/FillInBlankClient.js +276 -0
  521. package/dist/components/questions/types/fill-in-blank/FillInBlankClient.js.map +1 -0
  522. package/dist/components/questions/types/fill-in-blank/FillInBlankCreator.d.ts +3 -0
  523. package/dist/components/questions/types/fill-in-blank/FillInBlankCreator.d.ts.map +1 -0
  524. package/dist/components/questions/types/fill-in-blank/FillInBlankCreator.js +449 -0
  525. package/dist/components/questions/types/fill-in-blank/FillInBlankCreator.js.map +1 -0
  526. package/dist/components/questions/types/fill-in-blank/index.d.ts +3 -0
  527. package/dist/components/questions/types/fill-in-blank/index.d.ts.map +1 -0
  528. package/dist/components/questions/types/fill-in-blank/index.js +3 -0
  529. package/dist/components/questions/types/fill-in-blank/index.js.map +1 -0
  530. package/dist/components/questions/types/fill-in-blank/register.d.ts +3 -0
  531. package/dist/components/questions/types/fill-in-blank/register.d.ts.map +1 -0
  532. package/dist/components/questions/types/fill-in-blank/register.js +139 -0
  533. package/dist/components/questions/types/fill-in-blank/register.js.map +1 -0
  534. package/dist/components/questions/types/fill-in-blank/transform.d.ts +3 -0
  535. package/dist/components/questions/types/fill-in-blank/transform.d.ts.map +1 -0
  536. package/dist/components/questions/types/fill-in-blank/transform.js +60 -0
  537. package/dist/components/questions/types/fill-in-blank/transform.js.map +1 -0
  538. package/dist/components/questions/types/fill-missing-words-in-grid/FillMissingWordsInGridClient.d.ts +8 -0
  539. package/dist/components/questions/types/fill-missing-words-in-grid/FillMissingWordsInGridClient.d.ts.map +1 -0
  540. package/dist/components/questions/types/fill-missing-words-in-grid/FillMissingWordsInGridClient.js +118 -0
  541. package/dist/components/questions/types/fill-missing-words-in-grid/FillMissingWordsInGridClient.js.map +1 -0
  542. package/dist/components/questions/types/fill-missing-words-in-grid/FillMissingWordsInGridCreator.d.ts +4 -0
  543. package/dist/components/questions/types/fill-missing-words-in-grid/FillMissingWordsInGridCreator.d.ts.map +1 -0
  544. package/dist/components/questions/types/fill-missing-words-in-grid/FillMissingWordsInGridCreator.js +672 -0
  545. package/dist/components/questions/types/fill-missing-words-in-grid/FillMissingWordsInGridCreator.js.map +1 -0
  546. package/dist/components/questions/types/fill-missing-words-in-grid/index.d.ts +3 -0
  547. package/dist/components/questions/types/fill-missing-words-in-grid/index.d.ts.map +1 -0
  548. package/dist/components/questions/types/fill-missing-words-in-grid/index.js +3 -0
  549. package/dist/components/questions/types/fill-missing-words-in-grid/index.js.map +1 -0
  550. package/dist/components/questions/types/fill-missing-words-in-grid/register.d.ts +4 -0
  551. package/dist/components/questions/types/fill-missing-words-in-grid/register.d.ts.map +1 -0
  552. package/dist/components/questions/types/fill-missing-words-in-grid/register.js +38 -0
  553. package/dist/components/questions/types/fill-missing-words-in-grid/register.js.map +1 -0
  554. package/dist/components/questions/types/fill-missing-words-in-grid/transform.d.ts +3 -0
  555. package/dist/components/questions/types/fill-missing-words-in-grid/transform.d.ts.map +1 -0
  556. package/dist/components/questions/types/fill-missing-words-in-grid/transform.js +16 -0
  557. package/dist/components/questions/types/fill-missing-words-in-grid/transform.js.map +1 -0
  558. package/dist/components/questions/types/gn-speaking-interview/GNSpeakingInterviewCreator.d.ts +3 -0
  559. package/dist/components/questions/types/gn-speaking-interview/GNSpeakingInterviewCreator.d.ts.map +1 -0
  560. package/dist/components/questions/types/gn-speaking-interview/GNSpeakingInterviewCreator.js +263 -0
  561. package/dist/components/questions/types/gn-speaking-interview/GNSpeakingInterviewCreator.js.map +1 -0
  562. package/dist/components/questions/types/gn-speaking-interview/register.d.ts +3 -0
  563. package/dist/components/questions/types/gn-speaking-interview/register.d.ts.map +1 -0
  564. package/dist/components/questions/types/gn-speaking-interview/register.js +122 -0
  565. package/dist/components/questions/types/gn-speaking-interview/register.js.map +1 -0
  566. package/dist/components/questions/types/gn-speaking-interview/transform.d.ts +3 -0
  567. package/dist/components/questions/types/gn-speaking-interview/transform.d.ts.map +1 -0
  568. package/dist/components/questions/types/gn-speaking-interview/transform.js +49 -0
  569. package/dist/components/questions/types/gn-speaking-interview/transform.js.map +1 -0
  570. package/dist/components/questions/types/image-object-matching/ImageObjectMatchingClient.d.ts +8 -0
  571. package/dist/components/questions/types/image-object-matching/ImageObjectMatchingClient.d.ts.map +1 -0
  572. package/dist/components/questions/types/image-object-matching/ImageObjectMatchingClient.js +17 -0
  573. package/dist/components/questions/types/image-object-matching/ImageObjectMatchingClient.js.map +1 -0
  574. package/dist/components/questions/types/image-object-matching/ImageObjectMatchingCreator.d.ts +3 -0
  575. package/dist/components/questions/types/image-object-matching/ImageObjectMatchingCreator.d.ts.map +1 -0
  576. package/dist/components/questions/types/image-object-matching/ImageObjectMatchingCreator.js +28 -0
  577. package/dist/components/questions/types/image-object-matching/ImageObjectMatchingCreator.js.map +1 -0
  578. package/dist/components/questions/types/image-object-matching/index.d.ts +3 -0
  579. package/dist/components/questions/types/image-object-matching/index.d.ts.map +1 -0
  580. package/dist/components/questions/types/image-object-matching/index.js +3 -0
  581. package/dist/components/questions/types/image-object-matching/index.js.map +1 -0
  582. package/dist/components/questions/types/image-object-matching/register.d.ts +2 -0
  583. package/dist/components/questions/types/image-object-matching/register.d.ts.map +1 -0
  584. package/dist/components/questions/types/image-object-matching/register.js +4 -0
  585. package/dist/components/questions/types/image-object-matching/register.js.map +1 -0
  586. package/dist/components/questions/types/image-object-matching/transform.d.ts +2 -0
  587. package/dist/components/questions/types/image-object-matching/transform.d.ts.map +1 -0
  588. package/dist/components/questions/types/image-object-matching/transform.js +3 -0
  589. package/dist/components/questions/types/image-object-matching/transform.js.map +1 -0
  590. package/dist/components/questions/types/label-the-picture/LabelThePictureClient.d.ts +7 -0
  591. package/dist/components/questions/types/label-the-picture/LabelThePictureClient.d.ts.map +1 -0
  592. package/dist/components/questions/types/label-the-picture/LabelThePictureClient.js +103 -0
  593. package/dist/components/questions/types/label-the-picture/LabelThePictureClient.js.map +1 -0
  594. package/dist/components/questions/types/label-the-picture/LabelThePictureCreator.d.ts +3 -0
  595. package/dist/components/questions/types/label-the-picture/LabelThePictureCreator.d.ts.map +1 -0
  596. package/dist/components/questions/types/label-the-picture/LabelThePictureCreator.js +345 -0
  597. package/dist/components/questions/types/label-the-picture/LabelThePictureCreator.js.map +1 -0
  598. package/dist/components/questions/types/label-the-picture/index.d.ts +3 -0
  599. package/dist/components/questions/types/label-the-picture/index.d.ts.map +1 -0
  600. package/dist/components/questions/types/label-the-picture/index.js +3 -0
  601. package/dist/components/questions/types/label-the-picture/index.js.map +1 -0
  602. package/dist/components/questions/types/label-the-picture/register.d.ts +3 -0
  603. package/dist/components/questions/types/label-the-picture/register.d.ts.map +1 -0
  604. package/dist/components/questions/types/label-the-picture/register.js +55 -0
  605. package/dist/components/questions/types/label-the-picture/register.js.map +1 -0
  606. package/dist/components/questions/types/label-the-picture/transform.d.ts +3 -0
  607. package/dist/components/questions/types/label-the-picture/transform.d.ts.map +1 -0
  608. package/dist/components/questions/types/label-the-picture/transform.js +29 -0
  609. package/dist/components/questions/types/label-the-picture/transform.js.map +1 -0
  610. package/dist/components/questions/types/listen-and-choose-from-answer-group/ListenAndChooseFromAnswerGroupClient.d.ts +3 -0
  611. package/dist/components/questions/types/listen-and-choose-from-answer-group/ListenAndChooseFromAnswerGroupClient.d.ts.map +1 -0
  612. package/dist/components/questions/types/listen-and-choose-from-answer-group/ListenAndChooseFromAnswerGroupClient.js +79 -0
  613. package/dist/components/questions/types/listen-and-choose-from-answer-group/ListenAndChooseFromAnswerGroupClient.js.map +1 -0
  614. package/dist/components/questions/types/listen-and-choose-from-answer-group/ListenAndChooseFromAnswerGroupCreator.d.ts +3 -0
  615. package/dist/components/questions/types/listen-and-choose-from-answer-group/ListenAndChooseFromAnswerGroupCreator.d.ts.map +1 -0
  616. package/dist/components/questions/types/listen-and-choose-from-answer-group/ListenAndChooseFromAnswerGroupCreator.js +233 -0
  617. package/dist/components/questions/types/listen-and-choose-from-answer-group/ListenAndChooseFromAnswerGroupCreator.js.map +1 -0
  618. package/dist/components/questions/types/listen-and-choose-from-answer-group/index.d.ts +3 -0
  619. package/dist/components/questions/types/listen-and-choose-from-answer-group/index.d.ts.map +1 -0
  620. package/dist/components/questions/types/listen-and-choose-from-answer-group/index.js +3 -0
  621. package/dist/components/questions/types/listen-and-choose-from-answer-group/index.js.map +1 -0
  622. package/dist/components/questions/types/listen-and-choose-from-answer-group/register.d.ts +3 -0
  623. package/dist/components/questions/types/listen-and-choose-from-answer-group/register.d.ts.map +1 -0
  624. package/dist/components/questions/types/listen-and-choose-from-answer-group/register.js +83 -0
  625. package/dist/components/questions/types/listen-and-choose-from-answer-group/register.js.map +1 -0
  626. package/dist/components/questions/types/listen-and-choose-from-answer-group/transform.d.ts +3 -0
  627. package/dist/components/questions/types/listen-and-choose-from-answer-group/transform.d.ts.map +1 -0
  628. package/dist/components/questions/types/listen-and-choose-from-answer-group/transform.js +28 -0
  629. package/dist/components/questions/types/listen-and-choose-from-answer-group/transform.js.map +1 -0
  630. package/dist/components/questions/types/listen-and-choose-objects-in-scene/ListenAndChooseObjectsInSceneClient.d.ts +10 -0
  631. package/dist/components/questions/types/listen-and-choose-objects-in-scene/ListenAndChooseObjectsInSceneClient.d.ts.map +1 -0
  632. package/dist/components/questions/types/listen-and-choose-objects-in-scene/ListenAndChooseObjectsInSceneClient.js +71 -0
  633. package/dist/components/questions/types/listen-and-choose-objects-in-scene/ListenAndChooseObjectsInSceneClient.js.map +1 -0
  634. package/dist/components/questions/types/listen-and-choose-objects-in-scene/ListenAndChooseObjectsInSceneCreator.d.ts +12 -0
  635. package/dist/components/questions/types/listen-and-choose-objects-in-scene/ListenAndChooseObjectsInSceneCreator.d.ts.map +1 -0
  636. package/dist/components/questions/types/listen-and-choose-objects-in-scene/ListenAndChooseObjectsInSceneCreator.js +387 -0
  637. package/dist/components/questions/types/listen-and-choose-objects-in-scene/ListenAndChooseObjectsInSceneCreator.js.map +1 -0
  638. package/dist/components/questions/types/listen-and-choose-objects-in-scene/index.d.ts +3 -0
  639. package/dist/components/questions/types/listen-and-choose-objects-in-scene/index.d.ts.map +1 -0
  640. package/dist/components/questions/types/listen-and-choose-objects-in-scene/index.js +3 -0
  641. package/dist/components/questions/types/listen-and-choose-objects-in-scene/index.js.map +1 -0
  642. package/dist/components/questions/types/listen-and-choose-objects-in-scene/register.d.ts +3 -0
  643. package/dist/components/questions/types/listen-and-choose-objects-in-scene/register.d.ts.map +1 -0
  644. package/dist/components/questions/types/listen-and-choose-objects-in-scene/register.js +101 -0
  645. package/dist/components/questions/types/listen-and-choose-objects-in-scene/register.js.map +1 -0
  646. package/dist/components/questions/types/listen-and-choose-objects-in-scene/transform.d.ts +3 -0
  647. package/dist/components/questions/types/listen-and-choose-objects-in-scene/transform.d.ts.map +1 -0
  648. package/dist/components/questions/types/listen-and-choose-objects-in-scene/transform.js +34 -0
  649. package/dist/components/questions/types/listen-and-choose-objects-in-scene/transform.js.map +1 -0
  650. package/dist/components/questions/types/listen-and-drag-objects-into-scene/ListenAndDragObjectsIntoSceneClient.d.ts +10 -0
  651. package/dist/components/questions/types/listen-and-drag-objects-into-scene/ListenAndDragObjectsIntoSceneClient.d.ts.map +1 -0
  652. package/dist/components/questions/types/listen-and-drag-objects-into-scene/ListenAndDragObjectsIntoSceneClient.js +107 -0
  653. package/dist/components/questions/types/listen-and-drag-objects-into-scene/ListenAndDragObjectsIntoSceneClient.js.map +1 -0
  654. package/dist/components/questions/types/listen-and-drag-objects-into-scene/ListenAndDragObjectsIntoSceneCreator.d.ts +12 -0
  655. package/dist/components/questions/types/listen-and-drag-objects-into-scene/ListenAndDragObjectsIntoSceneCreator.d.ts.map +1 -0
  656. package/dist/components/questions/types/listen-and-drag-objects-into-scene/ListenAndDragObjectsIntoSceneCreator.js +458 -0
  657. package/dist/components/questions/types/listen-and-drag-objects-into-scene/ListenAndDragObjectsIntoSceneCreator.js.map +1 -0
  658. package/dist/components/questions/types/listen-and-drag-objects-into-scene/index.d.ts +3 -0
  659. package/dist/components/questions/types/listen-and-drag-objects-into-scene/index.d.ts.map +1 -0
  660. package/dist/components/questions/types/listen-and-drag-objects-into-scene/index.js +3 -0
  661. package/dist/components/questions/types/listen-and-drag-objects-into-scene/index.js.map +1 -0
  662. package/dist/components/questions/types/listen-and-drag-objects-into-scene/register.d.ts +3 -0
  663. package/dist/components/questions/types/listen-and-drag-objects-into-scene/register.d.ts.map +1 -0
  664. package/dist/components/questions/types/listen-and-drag-objects-into-scene/register.js +111 -0
  665. package/dist/components/questions/types/listen-and-drag-objects-into-scene/register.js.map +1 -0
  666. package/dist/components/questions/types/listen-and-drag-objects-into-scene/transform.d.ts +3 -0
  667. package/dist/components/questions/types/listen-and-drag-objects-into-scene/transform.d.ts.map +1 -0
  668. package/dist/components/questions/types/listen-and-drag-objects-into-scene/transform.js +36 -0
  669. package/dist/components/questions/types/listen-and-drag-objects-into-scene/transform.js.map +1 -0
  670. package/dist/components/questions/types/listen-and-speak-answer/ArrowIndicator.d.ts +21 -0
  671. package/dist/components/questions/types/listen-and-speak-answer/ArrowIndicator.d.ts.map +1 -0
  672. package/dist/components/questions/types/listen-and-speak-answer/ArrowIndicator.js +9 -0
  673. package/dist/components/questions/types/listen-and-speak-answer/ArrowIndicator.js.map +1 -0
  674. package/dist/components/questions/types/listen-and-speak-answer/ListenAndSpeakAnswerClient.d.ts +3 -0
  675. package/dist/components/questions/types/listen-and-speak-answer/ListenAndSpeakAnswerClient.d.ts.map +1 -0
  676. package/dist/components/questions/types/listen-and-speak-answer/ListenAndSpeakAnswerClient.js +23 -0
  677. package/dist/components/questions/types/listen-and-speak-answer/ListenAndSpeakAnswerClient.js.map +1 -0
  678. package/dist/components/questions/types/listen-and-speak-answer/ListenAndSpeakAnswerCreator.d.ts +10 -0
  679. package/dist/components/questions/types/listen-and-speak-answer/ListenAndSpeakAnswerCreator.d.ts.map +1 -0
  680. package/dist/components/questions/types/listen-and-speak-answer/ListenAndSpeakAnswerCreator.js +292 -0
  681. package/dist/components/questions/types/listen-and-speak-answer/ListenAndSpeakAnswerCreator.js.map +1 -0
  682. package/dist/components/questions/types/listen-and-speak-answer/index.d.ts +3 -0
  683. package/dist/components/questions/types/listen-and-speak-answer/index.d.ts.map +1 -0
  684. package/dist/components/questions/types/listen-and-speak-answer/index.js +3 -0
  685. package/dist/components/questions/types/listen-and-speak-answer/index.js.map +1 -0
  686. package/dist/components/questions/types/listen-and-speak-answer/register.d.ts +3 -0
  687. package/dist/components/questions/types/listen-and-speak-answer/register.d.ts.map +1 -0
  688. package/dist/components/questions/types/listen-and-speak-answer/register.js +85 -0
  689. package/dist/components/questions/types/listen-and-speak-answer/register.js.map +1 -0
  690. package/dist/components/questions/types/listen-and-speak-answer/transform.d.ts +3 -0
  691. package/dist/components/questions/types/listen-and-speak-answer/transform.d.ts.map +1 -0
  692. package/dist/components/questions/types/listen-and-speak-answer/transform.js +28 -0
  693. package/dist/components/questions/types/listen-and-speak-answer/transform.js.map +1 -0
  694. package/dist/components/questions/types/listen-and-speak-compare-images/ListenAndSpeakCompareImagesClient.d.ts +4 -0
  695. package/dist/components/questions/types/listen-and-speak-compare-images/ListenAndSpeakCompareImagesClient.d.ts.map +1 -0
  696. package/dist/components/questions/types/listen-and-speak-compare-images/ListenAndSpeakCompareImagesClient.js +33 -0
  697. package/dist/components/questions/types/listen-and-speak-compare-images/ListenAndSpeakCompareImagesClient.js.map +1 -0
  698. package/dist/components/questions/types/listen-and-speak-compare-images/ListenAndSpeakCompareImagesCreator.d.ts +11 -0
  699. package/dist/components/questions/types/listen-and-speak-compare-images/ListenAndSpeakCompareImagesCreator.d.ts.map +1 -0
  700. package/dist/components/questions/types/listen-and-speak-compare-images/ListenAndSpeakCompareImagesCreator.js +296 -0
  701. package/dist/components/questions/types/listen-and-speak-compare-images/ListenAndSpeakCompareImagesCreator.js.map +1 -0
  702. package/dist/components/questions/types/listen-and-speak-compare-images/register.d.ts +3 -0
  703. package/dist/components/questions/types/listen-and-speak-compare-images/register.d.ts.map +1 -0
  704. package/dist/components/questions/types/listen-and-speak-compare-images/register.js +80 -0
  705. package/dist/components/questions/types/listen-and-speak-compare-images/register.js.map +1 -0
  706. package/dist/components/questions/types/listen-and-speak-compare-images/transform.d.ts +3 -0
  707. package/dist/components/questions/types/listen-and-speak-compare-images/transform.d.ts.map +1 -0
  708. package/dist/components/questions/types/listen-and-speak-compare-images/transform.js +28 -0
  709. package/dist/components/questions/types/listen-and-speak-compare-images/transform.js.map +1 -0
  710. package/dist/components/questions/types/listen-and-speak-image-group/ListenAndSpeakImageGroupClient.d.ts +4 -0
  711. package/dist/components/questions/types/listen-and-speak-image-group/ListenAndSpeakImageGroupClient.d.ts.map +1 -0
  712. package/dist/components/questions/types/listen-and-speak-image-group/ListenAndSpeakImageGroupClient.js +35 -0
  713. package/dist/components/questions/types/listen-and-speak-image-group/ListenAndSpeakImageGroupClient.js.map +1 -0
  714. package/dist/components/questions/types/listen-and-speak-image-group/ListenAndSpeakImageGroupCreator.d.ts +11 -0
  715. package/dist/components/questions/types/listen-and-speak-image-group/ListenAndSpeakImageGroupCreator.d.ts.map +1 -0
  716. package/dist/components/questions/types/listen-and-speak-image-group/ListenAndSpeakImageGroupCreator.js +286 -0
  717. package/dist/components/questions/types/listen-and-speak-image-group/ListenAndSpeakImageGroupCreator.js.map +1 -0
  718. package/dist/components/questions/types/listen-and-speak-image-group/register.d.ts +3 -0
  719. package/dist/components/questions/types/listen-and-speak-image-group/register.d.ts.map +1 -0
  720. package/dist/components/questions/types/listen-and-speak-image-group/register.js +82 -0
  721. package/dist/components/questions/types/listen-and-speak-image-group/register.js.map +1 -0
  722. package/dist/components/questions/types/listen-and-speak-image-group/transform.d.ts +3 -0
  723. package/dist/components/questions/types/listen-and-speak-image-group/transform.d.ts.map +1 -0
  724. package/dist/components/questions/types/listen-and-speak-image-group/transform.js +27 -0
  725. package/dist/components/questions/types/listen-and-speak-image-group/transform.js.map +1 -0
  726. package/dist/components/questions/types/listen-and-speak-info-exchange/ListenAndSpeakInfoExchangeClient.d.ts +4 -0
  727. package/dist/components/questions/types/listen-and-speak-info-exchange/ListenAndSpeakInfoExchangeClient.d.ts.map +1 -0
  728. package/dist/components/questions/types/listen-and-speak-info-exchange/ListenAndSpeakInfoExchangeClient.js +39 -0
  729. package/dist/components/questions/types/listen-and-speak-info-exchange/ListenAndSpeakInfoExchangeClient.js.map +1 -0
  730. package/dist/components/questions/types/listen-and-speak-info-exchange/ListenAndSpeakInfoExchangeCreator.d.ts +12 -0
  731. package/dist/components/questions/types/listen-and-speak-info-exchange/ListenAndSpeakInfoExchangeCreator.d.ts.map +1 -0
  732. package/dist/components/questions/types/listen-and-speak-info-exchange/ListenAndSpeakInfoExchangeCreator.js +386 -0
  733. package/dist/components/questions/types/listen-and-speak-info-exchange/ListenAndSpeakInfoExchangeCreator.js.map +1 -0
  734. package/dist/components/questions/types/listen-and-speak-info-exchange/register.d.ts +3 -0
  735. package/dist/components/questions/types/listen-and-speak-info-exchange/register.d.ts.map +1 -0
  736. package/dist/components/questions/types/listen-and-speak-info-exchange/register.js +88 -0
  737. package/dist/components/questions/types/listen-and-speak-info-exchange/register.js.map +1 -0
  738. package/dist/components/questions/types/listen-and-speak-info-exchange/transform.d.ts +3 -0
  739. package/dist/components/questions/types/listen-and-speak-info-exchange/transform.d.ts.map +1 -0
  740. package/dist/components/questions/types/listen-and-speak-info-exchange/transform.js +33 -0
  741. package/dist/components/questions/types/listen-and-speak-info-exchange/transform.js.map +1 -0
  742. package/dist/components/questions/types/listen-and-speak-odd-one-out/ListenAndSpeakOddOneOutClient.d.ts +4 -0
  743. package/dist/components/questions/types/listen-and-speak-odd-one-out/ListenAndSpeakOddOneOutClient.d.ts.map +1 -0
  744. package/dist/components/questions/types/listen-and-speak-odd-one-out/ListenAndSpeakOddOneOutClient.js +27 -0
  745. package/dist/components/questions/types/listen-and-speak-odd-one-out/ListenAndSpeakOddOneOutClient.js.map +1 -0
  746. package/dist/components/questions/types/listen-and-speak-odd-one-out/ListenAndSpeakOddOneOutCreator.d.ts +4 -0
  747. package/dist/components/questions/types/listen-and-speak-odd-one-out/ListenAndSpeakOddOneOutCreator.d.ts.map +1 -0
  748. package/dist/components/questions/types/listen-and-speak-odd-one-out/ListenAndSpeakOddOneOutCreator.js +248 -0
  749. package/dist/components/questions/types/listen-and-speak-odd-one-out/ListenAndSpeakOddOneOutCreator.js.map +1 -0
  750. package/dist/components/questions/types/listen-and-speak-odd-one-out/register.d.ts +3 -0
  751. package/dist/components/questions/types/listen-and-speak-odd-one-out/register.d.ts.map +1 -0
  752. package/dist/components/questions/types/listen-and-speak-odd-one-out/register.js +60 -0
  753. package/dist/components/questions/types/listen-and-speak-odd-one-out/register.js.map +1 -0
  754. package/dist/components/questions/types/listen-and-speak-odd-one-out/transform.d.ts +3 -0
  755. package/dist/components/questions/types/listen-and-speak-odd-one-out/transform.d.ts.map +1 -0
  756. package/dist/components/questions/types/listen-and-speak-odd-one-out/transform.js +19 -0
  757. package/dist/components/questions/types/listen-and-speak-odd-one-out/transform.js.map +1 -0
  758. package/dist/components/questions/types/listen-and-speak-question-list/ListenAndSpeakQuestionListClient.d.ts +4 -0
  759. package/dist/components/questions/types/listen-and-speak-question-list/ListenAndSpeakQuestionListClient.d.ts.map +1 -0
  760. package/dist/components/questions/types/listen-and-speak-question-list/ListenAndSpeakQuestionListClient.js +27 -0
  761. package/dist/components/questions/types/listen-and-speak-question-list/ListenAndSpeakQuestionListClient.js.map +1 -0
  762. package/dist/components/questions/types/listen-and-speak-question-list/ListenAndSpeakQuestionListCreator.d.ts +15 -0
  763. package/dist/components/questions/types/listen-and-speak-question-list/ListenAndSpeakQuestionListCreator.d.ts.map +1 -0
  764. package/dist/components/questions/types/listen-and-speak-question-list/ListenAndSpeakQuestionListCreator.js +257 -0
  765. package/dist/components/questions/types/listen-and-speak-question-list/ListenAndSpeakQuestionListCreator.js.map +1 -0
  766. package/dist/components/questions/types/listen-and-speak-question-list/register.d.ts +3 -0
  767. package/dist/components/questions/types/listen-and-speak-question-list/register.d.ts.map +1 -0
  768. package/dist/components/questions/types/listen-and-speak-question-list/register.js +82 -0
  769. package/dist/components/questions/types/listen-and-speak-question-list/register.js.map +1 -0
  770. package/dist/components/questions/types/listen-and-speak-question-list/transform.d.ts +4 -0
  771. package/dist/components/questions/types/listen-and-speak-question-list/transform.d.ts.map +1 -0
  772. package/dist/components/questions/types/listen-and-speak-question-list/transform.js +27 -0
  773. package/dist/components/questions/types/listen-and-speak-question-list/transform.js.map +1 -0
  774. package/dist/components/questions/types/listen-and-speak-with-story-images/ListenAndSpeakWithStoryImagesClient.d.ts +4 -0
  775. package/dist/components/questions/types/listen-and-speak-with-story-images/ListenAndSpeakWithStoryImagesClient.d.ts.map +1 -0
  776. package/dist/components/questions/types/listen-and-speak-with-story-images/ListenAndSpeakWithStoryImagesClient.js +27 -0
  777. package/dist/components/questions/types/listen-and-speak-with-story-images/ListenAndSpeakWithStoryImagesClient.js.map +1 -0
  778. package/dist/components/questions/types/listen-and-speak-with-story-images/ListenAndSpeakWithStoryImagesCreator.d.ts +4 -0
  779. package/dist/components/questions/types/listen-and-speak-with-story-images/ListenAndSpeakWithStoryImagesCreator.d.ts.map +1 -0
  780. package/dist/components/questions/types/listen-and-speak-with-story-images/ListenAndSpeakWithStoryImagesCreator.js +231 -0
  781. package/dist/components/questions/types/listen-and-speak-with-story-images/ListenAndSpeakWithStoryImagesCreator.js.map +1 -0
  782. package/dist/components/questions/types/listen-and-speak-with-story-images/register.d.ts +3 -0
  783. package/dist/components/questions/types/listen-and-speak-with-story-images/register.d.ts.map +1 -0
  784. package/dist/components/questions/types/listen-and-speak-with-story-images/register.js +57 -0
  785. package/dist/components/questions/types/listen-and-speak-with-story-images/register.js.map +1 -0
  786. package/dist/components/questions/types/listen-and-speak-with-story-images/transform.d.ts +3 -0
  787. package/dist/components/questions/types/listen-and-speak-with-story-images/transform.d.ts.map +1 -0
  788. package/dist/components/questions/types/listen-and-speak-with-story-images/transform.js +17 -0
  789. package/dist/components/questions/types/listen-and-speak-with-story-images/transform.js.map +1 -0
  790. package/dist/components/questions/types/look-picture-choose-correct-answer/LookPictureChooseCorrectAnswerClient.d.ts +21 -0
  791. package/dist/components/questions/types/look-picture-choose-correct-answer/LookPictureChooseCorrectAnswerClient.d.ts.map +1 -0
  792. package/dist/components/questions/types/look-picture-choose-correct-answer/LookPictureChooseCorrectAnswerClient.js +73 -0
  793. package/dist/components/questions/types/look-picture-choose-correct-answer/LookPictureChooseCorrectAnswerClient.js.map +1 -0
  794. package/dist/components/questions/types/look-picture-choose-correct-answer/LookPictureChooseCorrectAnswerCreator.d.ts +16 -0
  795. package/dist/components/questions/types/look-picture-choose-correct-answer/LookPictureChooseCorrectAnswerCreator.d.ts.map +1 -0
  796. package/dist/components/questions/types/look-picture-choose-correct-answer/LookPictureChooseCorrectAnswerCreator.js +231 -0
  797. package/dist/components/questions/types/look-picture-choose-correct-answer/LookPictureChooseCorrectAnswerCreator.js.map +1 -0
  798. package/dist/components/questions/types/look-picture-choose-correct-answer/index.d.ts +2 -0
  799. package/dist/components/questions/types/look-picture-choose-correct-answer/index.d.ts.map +1 -0
  800. package/dist/components/questions/types/look-picture-choose-correct-answer/index.js +2 -0
  801. package/dist/components/questions/types/look-picture-choose-correct-answer/index.js.map +1 -0
  802. package/dist/components/questions/types/look-picture-choose-correct-answer/register.d.ts +3 -0
  803. package/dist/components/questions/types/look-picture-choose-correct-answer/register.d.ts.map +1 -0
  804. package/dist/components/questions/types/look-picture-choose-correct-answer/register.js +67 -0
  805. package/dist/components/questions/types/look-picture-choose-correct-answer/register.js.map +1 -0
  806. package/dist/components/questions/types/look-picture-choose-correct-answer/transform.d.ts +3 -0
  807. package/dist/components/questions/types/look-picture-choose-correct-answer/transform.d.ts.map +1 -0
  808. package/dist/components/questions/types/look-picture-choose-correct-answer/transform.js +43 -0
  809. package/dist/components/questions/types/look-picture-choose-correct-answer/transform.js.map +1 -0
  810. package/dist/components/questions/types/look-picture-fill-blank-choose-answer/LookPictureFillBlankChooseAnswerClient.d.ts +7 -0
  811. package/dist/components/questions/types/look-picture-fill-blank-choose-answer/LookPictureFillBlankChooseAnswerClient.d.ts.map +1 -0
  812. package/dist/components/questions/types/look-picture-fill-blank-choose-answer/LookPictureFillBlankChooseAnswerClient.js +97 -0
  813. package/dist/components/questions/types/look-picture-fill-blank-choose-answer/LookPictureFillBlankChooseAnswerClient.js.map +1 -0
  814. package/dist/components/questions/types/look-picture-fill-blank-choose-answer/LookPictureFillBlankChooseAnswerCreator.d.ts +16 -0
  815. package/dist/components/questions/types/look-picture-fill-blank-choose-answer/LookPictureFillBlankChooseAnswerCreator.d.ts.map +1 -0
  816. package/dist/components/questions/types/look-picture-fill-blank-choose-answer/LookPictureFillBlankChooseAnswerCreator.js +239 -0
  817. package/dist/components/questions/types/look-picture-fill-blank-choose-answer/LookPictureFillBlankChooseAnswerCreator.js.map +1 -0
  818. package/dist/components/questions/types/look-picture-fill-blank-choose-answer/index.d.ts +3 -0
  819. package/dist/components/questions/types/look-picture-fill-blank-choose-answer/index.d.ts.map +1 -0
  820. package/dist/components/questions/types/look-picture-fill-blank-choose-answer/index.js +3 -0
  821. package/dist/components/questions/types/look-picture-fill-blank-choose-answer/index.js.map +1 -0
  822. package/dist/components/questions/types/look-picture-fill-blank-choose-answer/register.d.ts +3 -0
  823. package/dist/components/questions/types/look-picture-fill-blank-choose-answer/register.d.ts.map +1 -0
  824. package/dist/components/questions/types/look-picture-fill-blank-choose-answer/register.js +77 -0
  825. package/dist/components/questions/types/look-picture-fill-blank-choose-answer/register.js.map +1 -0
  826. package/dist/components/questions/types/look-picture-fill-blank-choose-answer/transform.d.ts +3 -0
  827. package/dist/components/questions/types/look-picture-fill-blank-choose-answer/transform.d.ts.map +1 -0
  828. package/dist/components/questions/types/look-picture-fill-blank-choose-answer/transform.js +20 -0
  829. package/dist/components/questions/types/look-picture-fill-blank-choose-answer/transform.js.map +1 -0
  830. package/dist/components/questions/types/look-picture-fill-word-hint/LookPictureFillWordHintClient.d.ts +8 -0
  831. package/dist/components/questions/types/look-picture-fill-word-hint/LookPictureFillWordHintClient.d.ts.map +1 -0
  832. package/dist/components/questions/types/look-picture-fill-word-hint/LookPictureFillWordHintClient.js +135 -0
  833. package/dist/components/questions/types/look-picture-fill-word-hint/LookPictureFillWordHintClient.js.map +1 -0
  834. package/dist/components/questions/types/look-picture-fill-word-hint/LookPictureFillWordHintCreator.d.ts +4 -0
  835. package/dist/components/questions/types/look-picture-fill-word-hint/LookPictureFillWordHintCreator.d.ts.map +1 -0
  836. package/dist/components/questions/types/look-picture-fill-word-hint/LookPictureFillWordHintCreator.js +618 -0
  837. package/dist/components/questions/types/look-picture-fill-word-hint/LookPictureFillWordHintCreator.js.map +1 -0
  838. package/dist/components/questions/types/look-picture-fill-word-hint/index.d.ts +3 -0
  839. package/dist/components/questions/types/look-picture-fill-word-hint/index.d.ts.map +1 -0
  840. package/dist/components/questions/types/look-picture-fill-word-hint/index.js +3 -0
  841. package/dist/components/questions/types/look-picture-fill-word-hint/index.js.map +1 -0
  842. package/dist/components/questions/types/look-picture-fill-word-hint/register.d.ts +3 -0
  843. package/dist/components/questions/types/look-picture-fill-word-hint/register.d.ts.map +1 -0
  844. package/dist/components/questions/types/look-picture-fill-word-hint/register.js +83 -0
  845. package/dist/components/questions/types/look-picture-fill-word-hint/register.js.map +1 -0
  846. package/dist/components/questions/types/look-picture-fill-word-hint/transform.d.ts +3 -0
  847. package/dist/components/questions/types/look-picture-fill-word-hint/transform.d.ts.map +1 -0
  848. package/dist/components/questions/types/look-picture-fill-word-hint/transform.js +30 -0
  849. package/dist/components/questions/types/look-picture-fill-word-hint/transform.js.map +1 -0
  850. package/dist/components/questions/types/match-by-writing-answer/MatchByWritingAnswerClient.d.ts +3 -0
  851. package/dist/components/questions/types/match-by-writing-answer/MatchByWritingAnswerClient.d.ts.map +1 -0
  852. package/dist/components/questions/types/match-by-writing-answer/MatchByWritingAnswerClient.js +39 -0
  853. package/dist/components/questions/types/match-by-writing-answer/MatchByWritingAnswerClient.js.map +1 -0
  854. package/dist/components/questions/types/match-by-writing-answer/MatchByWritingAnswerCreator.d.ts +3 -0
  855. package/dist/components/questions/types/match-by-writing-answer/MatchByWritingAnswerCreator.d.ts.map +1 -0
  856. package/dist/components/questions/types/match-by-writing-answer/MatchByWritingAnswerCreator.js +360 -0
  857. package/dist/components/questions/types/match-by-writing-answer/MatchByWritingAnswerCreator.js.map +1 -0
  858. package/dist/components/questions/types/match-by-writing-answer/index.d.ts +4 -0
  859. package/dist/components/questions/types/match-by-writing-answer/index.d.ts.map +1 -0
  860. package/dist/components/questions/types/match-by-writing-answer/index.js +4 -0
  861. package/dist/components/questions/types/match-by-writing-answer/index.js.map +1 -0
  862. package/dist/components/questions/types/match-by-writing-answer/register.d.ts +3 -0
  863. package/dist/components/questions/types/match-by-writing-answer/register.d.ts.map +1 -0
  864. package/dist/components/questions/types/match-by-writing-answer/register.js +59 -0
  865. package/dist/components/questions/types/match-by-writing-answer/register.js.map +1 -0
  866. package/dist/components/questions/types/match-by-writing-answer/transform.d.ts +12 -0
  867. package/dist/components/questions/types/match-by-writing-answer/transform.d.ts.map +1 -0
  868. package/dist/components/questions/types/match-by-writing-answer/transform.js +62 -0
  869. package/dist/components/questions/types/match-by-writing-answer/transform.js.map +1 -0
  870. package/dist/components/questions/types/read-and-color-objects/ReadAndColorObjectsClient.d.ts +8 -0
  871. package/dist/components/questions/types/read-and-color-objects/ReadAndColorObjectsClient.d.ts.map +1 -0
  872. package/dist/components/questions/types/read-and-color-objects/ReadAndColorObjectsClient.js +17 -0
  873. package/dist/components/questions/types/read-and-color-objects/ReadAndColorObjectsClient.js.map +1 -0
  874. package/dist/components/questions/types/read-and-color-objects/ReadAndColorObjectsCreator.d.ts +3 -0
  875. package/dist/components/questions/types/read-and-color-objects/ReadAndColorObjectsCreator.d.ts.map +1 -0
  876. package/dist/components/questions/types/read-and-color-objects/ReadAndColorObjectsCreator.js +24 -0
  877. package/dist/components/questions/types/read-and-color-objects/ReadAndColorObjectsCreator.js.map +1 -0
  878. package/dist/components/questions/types/read-and-color-objects/index.d.ts +3 -0
  879. package/dist/components/questions/types/read-and-color-objects/index.d.ts.map +1 -0
  880. package/dist/components/questions/types/read-and-color-objects/index.js +3 -0
  881. package/dist/components/questions/types/read-and-color-objects/index.js.map +1 -0
  882. package/dist/components/questions/types/read-and-color-objects/register.d.ts +2 -0
  883. package/dist/components/questions/types/read-and-color-objects/register.d.ts.map +1 -0
  884. package/dist/components/questions/types/read-and-color-objects/register.js +4 -0
  885. package/dist/components/questions/types/read-and-color-objects/register.js.map +1 -0
  886. package/dist/components/questions/types/read-and-color-objects/transform.d.ts +3 -0
  887. package/dist/components/questions/types/read-and-color-objects/transform.d.ts.map +1 -0
  888. package/dist/components/questions/types/read-and-color-objects/transform.js +37 -0
  889. package/dist/components/questions/types/read-and-color-objects/transform.js.map +1 -0
  890. package/dist/components/questions/types/read-displayed-content/ReadDisplayedContentCreator.d.ts +3 -0
  891. package/dist/components/questions/types/read-displayed-content/ReadDisplayedContentCreator.d.ts.map +1 -0
  892. package/dist/components/questions/types/read-displayed-content/ReadDisplayedContentCreator.js +126 -0
  893. package/dist/components/questions/types/read-displayed-content/ReadDisplayedContentCreator.js.map +1 -0
  894. package/dist/components/questions/types/read-displayed-content/register.d.ts +3 -0
  895. package/dist/components/questions/types/read-displayed-content/register.d.ts.map +1 -0
  896. package/dist/components/questions/types/read-displayed-content/register.js +65 -0
  897. package/dist/components/questions/types/read-displayed-content/register.js.map +1 -0
  898. package/dist/components/questions/types/read-displayed-content/transform.d.ts +3 -0
  899. package/dist/components/questions/types/read-displayed-content/transform.d.ts.map +1 -0
  900. package/dist/components/questions/types/read-displayed-content/transform.js +13 -0
  901. package/dist/components/questions/types/read-displayed-content/transform.js.map +1 -0
  902. package/dist/components/questions/types/read-passage-and-answer-questions/ReadPassageAndAnswerQuestionsClient.d.ts +3 -0
  903. package/dist/components/questions/types/read-passage-and-answer-questions/ReadPassageAndAnswerQuestionsClient.d.ts.map +1 -0
  904. package/dist/components/questions/types/read-passage-and-answer-questions/ReadPassageAndAnswerQuestionsClient.js +65 -0
  905. package/dist/components/questions/types/read-passage-and-answer-questions/ReadPassageAndAnswerQuestionsClient.js.map +1 -0
  906. package/dist/components/questions/types/read-passage-and-answer-questions/ReadPassageAndAnswerQuestionsCreator.d.ts +3 -0
  907. package/dist/components/questions/types/read-passage-and-answer-questions/ReadPassageAndAnswerQuestionsCreator.d.ts.map +1 -0
  908. package/dist/components/questions/types/read-passage-and-answer-questions/ReadPassageAndAnswerQuestionsCreator.js +512 -0
  909. package/dist/components/questions/types/read-passage-and-answer-questions/ReadPassageAndAnswerQuestionsCreator.js.map +1 -0
  910. package/dist/components/questions/types/read-passage-and-answer-questions/index.d.ts +3 -0
  911. package/dist/components/questions/types/read-passage-and-answer-questions/index.d.ts.map +1 -0
  912. package/dist/components/questions/types/read-passage-and-answer-questions/index.js +3 -0
  913. package/dist/components/questions/types/read-passage-and-answer-questions/index.js.map +1 -0
  914. package/dist/components/questions/types/read-passage-and-answer-questions/register.d.ts +3 -0
  915. package/dist/components/questions/types/read-passage-and-answer-questions/register.d.ts.map +1 -0
  916. package/dist/components/questions/types/read-passage-and-answer-questions/register.js +59 -0
  917. package/dist/components/questions/types/read-passage-and-answer-questions/register.js.map +1 -0
  918. package/dist/components/questions/types/read-passage-and-answer-questions/transform.d.ts +3 -0
  919. package/dist/components/questions/types/read-passage-and-answer-questions/transform.d.ts.map +1 -0
  920. package/dist/components/questions/types/read-passage-and-answer-questions/transform.js +29 -0
  921. package/dist/components/questions/types/read-passage-and-answer-questions/transform.js.map +1 -0
  922. package/dist/components/questions/types/speaking-conversation/SpeakingConversationCreator.d.ts +16 -0
  923. package/dist/components/questions/types/speaking-conversation/SpeakingConversationCreator.d.ts.map +1 -0
  924. package/dist/components/questions/types/speaking-conversation/SpeakingConversationCreator.js +374 -0
  925. package/dist/components/questions/types/speaking-conversation/SpeakingConversationCreator.js.map +1 -0
  926. package/dist/components/questions/types/speaking-conversation/SpeakingConversationPreviewClient.d.ts +22 -0
  927. package/dist/components/questions/types/speaking-conversation/SpeakingConversationPreviewClient.d.ts.map +1 -0
  928. package/dist/components/questions/types/speaking-conversation/SpeakingConversationPreviewClient.js +42 -0
  929. package/dist/components/questions/types/speaking-conversation/SpeakingConversationPreviewClient.js.map +1 -0
  930. package/dist/components/questions/types/speaking-conversation/register.d.ts +3 -0
  931. package/dist/components/questions/types/speaking-conversation/register.d.ts.map +1 -0
  932. package/dist/components/questions/types/speaking-conversation/register.js +111 -0
  933. package/dist/components/questions/types/speaking-conversation/register.js.map +1 -0
  934. package/dist/components/questions/types/speaking-conversation/transform.d.ts +3 -0
  935. package/dist/components/questions/types/speaking-conversation/transform.d.ts.map +1 -0
  936. package/dist/components/questions/types/speaking-conversation/transform.js +35 -0
  937. package/dist/components/questions/types/speaking-conversation/transform.js.map +1 -0
  938. package/dist/components/questions/types/speaking-cue-card/SpeakingCueCardCreator.d.ts +11 -0
  939. package/dist/components/questions/types/speaking-cue-card/SpeakingCueCardCreator.d.ts.map +1 -0
  940. package/dist/components/questions/types/speaking-cue-card/SpeakingCueCardCreator.js +75 -0
  941. package/dist/components/questions/types/speaking-cue-card/SpeakingCueCardCreator.js.map +1 -0
  942. package/dist/components/questions/types/speaking-cue-card/register.d.ts +3 -0
  943. package/dist/components/questions/types/speaking-cue-card/register.d.ts.map +1 -0
  944. package/dist/components/questions/types/speaking-cue-card/register.js +53 -0
  945. package/dist/components/questions/types/speaking-cue-card/register.js.map +1 -0
  946. package/dist/components/questions/types/speaking-cue-card/transform.d.ts +3 -0
  947. package/dist/components/questions/types/speaking-cue-card/transform.d.ts.map +1 -0
  948. package/dist/components/questions/types/speaking-cue-card/transform.js +13 -0
  949. package/dist/components/questions/types/speaking-cue-card/transform.js.map +1 -0
  950. package/dist/components/questions/types/speaking-describe-image/SpeakingDescribeImageClient.d.ts +11 -0
  951. package/dist/components/questions/types/speaking-describe-image/SpeakingDescribeImageClient.d.ts.map +1 -0
  952. package/dist/components/questions/types/speaking-describe-image/SpeakingDescribeImageClient.js +11 -0
  953. package/dist/components/questions/types/speaking-describe-image/SpeakingDescribeImageClient.js.map +1 -0
  954. package/dist/components/questions/types/speaking-describe-image/SpeakingDescribeImageCreator.d.ts +3 -0
  955. package/dist/components/questions/types/speaking-describe-image/SpeakingDescribeImageCreator.d.ts.map +1 -0
  956. package/dist/components/questions/types/speaking-describe-image/SpeakingDescribeImageCreator.js +162 -0
  957. package/dist/components/questions/types/speaking-describe-image/SpeakingDescribeImageCreator.js.map +1 -0
  958. package/dist/components/questions/types/speaking-describe-image/index.d.ts +3 -0
  959. package/dist/components/questions/types/speaking-describe-image/index.d.ts.map +1 -0
  960. package/dist/components/questions/types/speaking-describe-image/index.js +3 -0
  961. package/dist/components/questions/types/speaking-describe-image/index.js.map +1 -0
  962. package/dist/components/questions/types/speaking-describe-image/register.d.ts +3 -0
  963. package/dist/components/questions/types/speaking-describe-image/register.d.ts.map +1 -0
  964. package/dist/components/questions/types/speaking-describe-image/register.js +70 -0
  965. package/dist/components/questions/types/speaking-describe-image/register.js.map +1 -0
  966. package/dist/components/questions/types/speaking-describe-image/transform.d.ts +3 -0
  967. package/dist/components/questions/types/speaking-describe-image/transform.d.ts.map +1 -0
  968. package/dist/components/questions/types/speaking-describe-image/transform.js +17 -0
  969. package/dist/components/questions/types/speaking-describe-image/transform.js.map +1 -0
  970. package/dist/components/questions/types/spontaneous-qa/SpontaneousQACreator.d.ts +3 -0
  971. package/dist/components/questions/types/spontaneous-qa/SpontaneousQACreator.d.ts.map +1 -0
  972. package/dist/components/questions/types/spontaneous-qa/SpontaneousQACreator.js +235 -0
  973. package/dist/components/questions/types/spontaneous-qa/SpontaneousQACreator.js.map +1 -0
  974. package/dist/components/questions/types/spontaneous-qa/register.d.ts +3 -0
  975. package/dist/components/questions/types/spontaneous-qa/register.d.ts.map +1 -0
  976. package/dist/components/questions/types/spontaneous-qa/register.js +94 -0
  977. package/dist/components/questions/types/spontaneous-qa/register.js.map +1 -0
  978. package/dist/components/questions/types/spontaneous-qa/transform.d.ts +3 -0
  979. package/dist/components/questions/types/spontaneous-qa/transform.d.ts.map +1 -0
  980. package/dist/components/questions/types/spontaneous-qa/transform.js +35 -0
  981. package/dist/components/questions/types/spontaneous-qa/transform.js.map +1 -0
  982. package/dist/components/questions/types/true-false/TrueFalseClient.d.ts +15 -0
  983. package/dist/components/questions/types/true-false/TrueFalseClient.d.ts.map +1 -0
  984. package/dist/components/questions/types/true-false/TrueFalseClient.js +76 -0
  985. package/dist/components/questions/types/true-false/TrueFalseClient.js.map +1 -0
  986. package/dist/components/questions/types/true-false/TrueFalseCreator.d.ts +22 -0
  987. package/dist/components/questions/types/true-false/TrueFalseCreator.d.ts.map +1 -0
  988. package/dist/components/questions/types/true-false/TrueFalseCreator.js +245 -0
  989. package/dist/components/questions/types/true-false/TrueFalseCreator.js.map +1 -0
  990. package/dist/components/questions/types/true-false/index.d.ts +3 -0
  991. package/dist/components/questions/types/true-false/index.d.ts.map +1 -0
  992. package/dist/components/questions/types/true-false/index.js +3 -0
  993. package/dist/components/questions/types/true-false/index.js.map +1 -0
  994. package/dist/components/questions/types/true-false/register.d.ts +3 -0
  995. package/dist/components/questions/types/true-false/register.d.ts.map +1 -0
  996. package/dist/components/questions/types/true-false/register.js +78 -0
  997. package/dist/components/questions/types/true-false/register.js.map +1 -0
  998. package/dist/components/questions/types/true-false/transform.d.ts +3 -0
  999. package/dist/components/questions/types/true-false/transform.d.ts.map +1 -0
  1000. package/dist/components/questions/types/true-false/transform.js +33 -0
  1001. package/dist/components/questions/types/true-false/transform.js.map +1 -0
  1002. package/dist/components/questions/types/word-fill-paragraph/WordFillParagraphClient.d.ts +26 -0
  1003. package/dist/components/questions/types/word-fill-paragraph/WordFillParagraphClient.d.ts.map +1 -0
  1004. package/dist/components/questions/types/word-fill-paragraph/WordFillParagraphClient.js +234 -0
  1005. package/dist/components/questions/types/word-fill-paragraph/WordFillParagraphClient.js.map +1 -0
  1006. package/dist/components/questions/types/word-fill-paragraph/WordFillParagraphCreator.d.ts +14 -0
  1007. package/dist/components/questions/types/word-fill-paragraph/WordFillParagraphCreator.d.ts.map +1 -0
  1008. package/dist/components/questions/types/word-fill-paragraph/WordFillParagraphCreator.js +632 -0
  1009. package/dist/components/questions/types/word-fill-paragraph/WordFillParagraphCreator.js.map +1 -0
  1010. package/dist/components/questions/types/word-fill-paragraph/WordFillParagraphWrapper.d.ts +19 -0
  1011. package/dist/components/questions/types/word-fill-paragraph/WordFillParagraphWrapper.d.ts.map +1 -0
  1012. package/dist/components/questions/types/word-fill-paragraph/WordFillParagraphWrapper.js +29 -0
  1013. package/dist/components/questions/types/word-fill-paragraph/WordFillParagraphWrapper.js.map +1 -0
  1014. package/dist/components/questions/types/word-fill-paragraph/index.d.ts +3 -0
  1015. package/dist/components/questions/types/word-fill-paragraph/index.d.ts.map +1 -0
  1016. package/dist/components/questions/types/word-fill-paragraph/index.js +3 -0
  1017. package/dist/components/questions/types/word-fill-paragraph/index.js.map +1 -0
  1018. package/dist/components/questions/types/word-fill-paragraph/register.d.ts +9 -0
  1019. package/dist/components/questions/types/word-fill-paragraph/register.d.ts.map +1 -0
  1020. package/dist/components/questions/types/word-fill-paragraph/register.js +137 -0
  1021. package/dist/components/questions/types/word-fill-paragraph/register.js.map +1 -0
  1022. package/dist/components/questions/types/word-fill-paragraph/transform.d.ts +8 -0
  1023. package/dist/components/questions/types/word-fill-paragraph/transform.d.ts.map +1 -0
  1024. package/dist/components/questions/types/word-fill-paragraph/transform.js +57 -0
  1025. package/dist/components/questions/types/word-fill-paragraph/transform.js.map +1 -0
  1026. package/dist/components/questions/types/word-fill-structured-form/WordFillStructuredFormClient.d.ts +4 -0
  1027. package/dist/components/questions/types/word-fill-structured-form/WordFillStructuredFormClient.d.ts.map +1 -0
  1028. package/dist/components/questions/types/word-fill-structured-form/WordFillStructuredFormClient.js +139 -0
  1029. package/dist/components/questions/types/word-fill-structured-form/WordFillStructuredFormClient.js.map +1 -0
  1030. package/dist/components/questions/types/word-fill-structured-form/WordFillStructuredFormCreator.d.ts +3 -0
  1031. package/dist/components/questions/types/word-fill-structured-form/WordFillStructuredFormCreator.d.ts.map +1 -0
  1032. package/dist/components/questions/types/word-fill-structured-form/WordFillStructuredFormCreator.js +262 -0
  1033. package/dist/components/questions/types/word-fill-structured-form/WordFillStructuredFormCreator.js.map +1 -0
  1034. package/dist/components/questions/types/word-fill-structured-form/index.d.ts +3 -0
  1035. package/dist/components/questions/types/word-fill-structured-form/index.d.ts.map +1 -0
  1036. package/dist/components/questions/types/word-fill-structured-form/index.js +3 -0
  1037. package/dist/components/questions/types/word-fill-structured-form/index.js.map +1 -0
  1038. package/dist/components/questions/types/word-fill-structured-form/register.d.ts +3 -0
  1039. package/dist/components/questions/types/word-fill-structured-form/register.d.ts.map +1 -0
  1040. package/dist/components/questions/types/word-fill-structured-form/register.js +68 -0
  1041. package/dist/components/questions/types/word-fill-structured-form/register.js.map +1 -0
  1042. package/dist/components/questions/types/word-fill-structured-form/transform.d.ts +11 -0
  1043. package/dist/components/questions/types/word-fill-structured-form/transform.d.ts.map +1 -0
  1044. package/dist/components/questions/types/word-fill-structured-form/transform.js +41 -0
  1045. package/dist/components/questions/types/word-fill-structured-form/transform.js.map +1 -0
  1046. package/dist/components/questions/types/word-ordering/WordOrderingClient.d.ts +3 -0
  1047. package/dist/components/questions/types/word-ordering/WordOrderingClient.d.ts.map +1 -0
  1048. package/dist/components/questions/types/word-ordering/WordOrderingClient.js +85 -0
  1049. package/dist/components/questions/types/word-ordering/WordOrderingClient.js.map +1 -0
  1050. package/dist/components/questions/types/word-ordering/WordOrderingCreator.d.ts +12 -0
  1051. package/dist/components/questions/types/word-ordering/WordOrderingCreator.d.ts.map +1 -0
  1052. package/dist/components/questions/types/word-ordering/WordOrderingCreator.js +193 -0
  1053. package/dist/components/questions/types/word-ordering/WordOrderingCreator.js.map +1 -0
  1054. package/dist/components/questions/types/word-ordering/index.d.ts +3 -0
  1055. package/dist/components/questions/types/word-ordering/index.d.ts.map +1 -0
  1056. package/dist/components/questions/types/word-ordering/index.js +3 -0
  1057. package/dist/components/questions/types/word-ordering/index.js.map +1 -0
  1058. package/dist/components/questions/types/word-ordering/register.d.ts +3 -0
  1059. package/dist/components/questions/types/word-ordering/register.d.ts.map +1 -0
  1060. package/dist/components/questions/types/word-ordering/register.js +47 -0
  1061. package/dist/components/questions/types/word-ordering/register.js.map +1 -0
  1062. package/dist/components/questions/types/word-ordering/transform.d.ts +8 -0
  1063. package/dist/components/questions/types/word-ordering/transform.d.ts.map +1 -0
  1064. package/dist/components/questions/types/word-ordering/transform.js +25 -0
  1065. package/dist/components/questions/types/word-ordering/transform.js.map +1 -0
  1066. package/dist/components/questions/types/write-a-short-letter/WriteAShortLetterClient.d.ts +7 -0
  1067. package/dist/components/questions/types/write-a-short-letter/WriteAShortLetterClient.d.ts.map +1 -0
  1068. package/dist/components/questions/types/write-a-short-letter/WriteAShortLetterClient.js +99 -0
  1069. package/dist/components/questions/types/write-a-short-letter/WriteAShortLetterClient.js.map +1 -0
  1070. package/dist/components/questions/types/write-a-short-letter/WriteAShortLetterCreator.d.ts +3 -0
  1071. package/dist/components/questions/types/write-a-short-letter/WriteAShortLetterCreator.d.ts.map +1 -0
  1072. package/dist/components/questions/types/write-a-short-letter/WriteAShortLetterCreator.js +321 -0
  1073. package/dist/components/questions/types/write-a-short-letter/WriteAShortLetterCreator.js.map +1 -0
  1074. package/dist/components/questions/types/write-a-short-letter/index.d.ts +3 -0
  1075. package/dist/components/questions/types/write-a-short-letter/index.d.ts.map +1 -0
  1076. package/dist/components/questions/types/write-a-short-letter/index.js +3 -0
  1077. package/dist/components/questions/types/write-a-short-letter/index.js.map +1 -0
  1078. package/dist/components/questions/types/write-a-short-letter/register.d.ts +3 -0
  1079. package/dist/components/questions/types/write-a-short-letter/register.d.ts.map +1 -0
  1080. package/dist/components/questions/types/write-a-short-letter/register.js +69 -0
  1081. package/dist/components/questions/types/write-a-short-letter/register.js.map +1 -0
  1082. package/dist/components/questions/types/write-a-short-letter/transform.d.ts +3 -0
  1083. package/dist/components/questions/types/write-a-short-letter/transform.d.ts.map +1 -0
  1084. package/dist/components/questions/types/write-a-short-letter/transform.js +26 -0
  1085. package/dist/components/questions/types/write-a-short-letter/transform.js.map +1 -0
  1086. package/dist/components/questions/types/write-correct-verb-form/WriteCorrectVerbFormClient.d.ts +3 -0
  1087. package/dist/components/questions/types/write-correct-verb-form/WriteCorrectVerbFormClient.d.ts.map +1 -0
  1088. package/dist/components/questions/types/write-correct-verb-form/WriteCorrectVerbFormClient.js +62 -0
  1089. package/dist/components/questions/types/write-correct-verb-form/WriteCorrectVerbFormClient.js.map +1 -0
  1090. package/dist/components/questions/types/write-correct-verb-form/WriteCorrectVerbFormCreator.d.ts +3 -0
  1091. package/dist/components/questions/types/write-correct-verb-form/WriteCorrectVerbFormCreator.d.ts.map +1 -0
  1092. package/dist/components/questions/types/write-correct-verb-form/WriteCorrectVerbFormCreator.js +197 -0
  1093. package/dist/components/questions/types/write-correct-verb-form/WriteCorrectVerbFormCreator.js.map +1 -0
  1094. package/dist/components/questions/types/write-correct-verb-form/index.d.ts +3 -0
  1095. package/dist/components/questions/types/write-correct-verb-form/index.d.ts.map +1 -0
  1096. package/dist/components/questions/types/write-correct-verb-form/index.js +3 -0
  1097. package/dist/components/questions/types/write-correct-verb-form/index.js.map +1 -0
  1098. package/dist/components/questions/types/write-correct-verb-form/register.d.ts +3 -0
  1099. package/dist/components/questions/types/write-correct-verb-form/register.d.ts.map +1 -0
  1100. package/dist/components/questions/types/write-correct-verb-form/register.js +63 -0
  1101. package/dist/components/questions/types/write-correct-verb-form/register.js.map +1 -0
  1102. package/dist/components/questions/types/write-correct-verb-form/transform.d.ts +3 -0
  1103. package/dist/components/questions/types/write-correct-verb-form/transform.d.ts.map +1 -0
  1104. package/dist/components/questions/types/write-correct-verb-form/transform.js +18 -0
  1105. package/dist/components/questions/types/write-correct-verb-form/transform.js.map +1 -0
  1106. package/dist/components/questions/types/write-sentences/WriteSentencesClient.d.ts +3 -0
  1107. package/dist/components/questions/types/write-sentences/WriteSentencesClient.d.ts.map +1 -0
  1108. package/dist/components/questions/types/write-sentences/WriteSentencesClient.js +23 -0
  1109. package/dist/components/questions/types/write-sentences/WriteSentencesClient.js.map +1 -0
  1110. package/dist/components/questions/types/write-sentences/WriteSentencesCreator.d.ts +3 -0
  1111. package/dist/components/questions/types/write-sentences/WriteSentencesCreator.d.ts.map +1 -0
  1112. package/dist/components/questions/types/write-sentences/WriteSentencesCreator.js +175 -0
  1113. package/dist/components/questions/types/write-sentences/WriteSentencesCreator.js.map +1 -0
  1114. package/dist/components/questions/types/write-sentences/index.d.ts +3 -0
  1115. package/dist/components/questions/types/write-sentences/index.d.ts.map +1 -0
  1116. package/dist/components/questions/types/write-sentences/index.js +3 -0
  1117. package/dist/components/questions/types/write-sentences/index.js.map +1 -0
  1118. package/dist/components/questions/types/write-sentences/register.d.ts +3 -0
  1119. package/dist/components/questions/types/write-sentences/register.d.ts.map +1 -0
  1120. package/dist/components/questions/types/write-sentences/register.js +59 -0
  1121. package/dist/components/questions/types/write-sentences/register.js.map +1 -0
  1122. package/dist/components/questions/types/write-sentences/transform.d.ts +3 -0
  1123. package/dist/components/questions/types/write-sentences/transform.d.ts.map +1 -0
  1124. package/dist/components/questions/types/write-sentences/transform.js +29 -0
  1125. package/dist/components/questions/types/write-sentences/transform.js.map +1 -0
  1126. package/dist/components/questions/types/write-short-paragraph/WriteShortParagraphClient.d.ts +3 -0
  1127. package/dist/components/questions/types/write-short-paragraph/WriteShortParagraphClient.d.ts.map +1 -0
  1128. package/dist/components/questions/types/write-short-paragraph/WriteShortParagraphClient.js +97 -0
  1129. package/dist/components/questions/types/write-short-paragraph/WriteShortParagraphClient.js.map +1 -0
  1130. package/dist/components/questions/types/write-short-paragraph/WriteShortParagraphCreator.d.ts +3 -0
  1131. package/dist/components/questions/types/write-short-paragraph/WriteShortParagraphCreator.d.ts.map +1 -0
  1132. package/dist/components/questions/types/write-short-paragraph/WriteShortParagraphCreator.js +162 -0
  1133. package/dist/components/questions/types/write-short-paragraph/WriteShortParagraphCreator.js.map +1 -0
  1134. package/dist/components/questions/types/write-short-paragraph/index.d.ts +3 -0
  1135. package/dist/components/questions/types/write-short-paragraph/index.d.ts.map +1 -0
  1136. package/dist/components/questions/types/write-short-paragraph/index.js +3 -0
  1137. package/dist/components/questions/types/write-short-paragraph/index.js.map +1 -0
  1138. package/dist/components/questions/types/write-short-paragraph/register.d.ts +3 -0
  1139. package/dist/components/questions/types/write-short-paragraph/register.d.ts.map +1 -0
  1140. package/dist/components/questions/types/write-short-paragraph/register.js +5 -0
  1141. package/dist/components/questions/types/write-short-paragraph/register.js.map +1 -0
  1142. package/dist/components/questions/types/write-short-paragraph/transform.d.ts +3 -0
  1143. package/dist/components/questions/types/write-short-paragraph/transform.d.ts.map +1 -0
  1144. package/dist/components/questions/types/write-short-paragraph/transform.js +22 -0
  1145. package/dist/components/questions/types/write-short-paragraph/transform.js.map +1 -0
  1146. package/dist/components/questions/viewer/QuestionGroupViewer.d.ts +9 -0
  1147. package/dist/components/questions/viewer/QuestionGroupViewer.d.ts.map +1 -0
  1148. package/dist/components/questions/viewer/QuestionGroupViewer.js +37 -0
  1149. package/dist/components/questions/viewer/QuestionGroupViewer.js.map +1 -0
  1150. package/dist/components/questions/viewer/QuestionViewer.d.ts +10 -0
  1151. package/dist/components/questions/viewer/QuestionViewer.d.ts.map +1 -0
  1152. package/dist/components/questions/viewer/QuestionViewer.js +447 -0
  1153. package/dist/components/questions/viewer/QuestionViewer.js.map +1 -0
  1154. package/dist/components/questions/viewer/index.d.ts +3 -0
  1155. package/dist/components/questions/viewer/index.d.ts.map +1 -0
  1156. package/dist/components/questions/viewer/index.js +3 -0
  1157. package/dist/components/questions/viewer/index.js.map +1 -0
  1158. package/dist/components/results/ResultReviewPageContainer.d.ts +14 -0
  1159. package/dist/components/results/ResultReviewPageContainer.d.ts.map +1 -0
  1160. package/dist/components/results/ResultReviewPageContainer.js +99 -0
  1161. package/dist/components/results/ResultReviewPageContainer.js.map +1 -0
  1162. package/dist/components/results/ReviewQuestionRenderer.d.ts +7 -0
  1163. package/dist/components/results/ReviewQuestionRenderer.d.ts.map +1 -0
  1164. package/dist/components/results/ReviewQuestionRenderer.js +73 -0
  1165. package/dist/components/results/ReviewQuestionRenderer.js.map +1 -0
  1166. package/dist/components/results/index.d.ts +5 -0
  1167. package/dist/components/results/index.d.ts.map +1 -0
  1168. package/dist/components/results/index.js +3 -0
  1169. package/dist/components/results/index.js.map +1 -0
  1170. package/dist/components/results/result-review.utils.d.ts +3 -0
  1171. package/dist/components/results/result-review.utils.d.ts.map +1 -0
  1172. package/dist/components/results/result-review.utils.js +7 -0
  1173. package/dist/components/results/result-review.utils.js.map +1 -0
  1174. package/dist/components/results/review-data.d.ts +3 -0
  1175. package/dist/components/results/review-data.d.ts.map +1 -0
  1176. package/dist/components/results/review-data.js +151 -0
  1177. package/dist/components/results/review-data.js.map +1 -0
  1178. package/dist/components/results/review-renderer.utils.d.ts +68 -0
  1179. package/dist/components/results/review-renderer.utils.d.ts.map +1 -0
  1180. package/dist/components/results/review-renderer.utils.js +98 -0
  1181. package/dist/components/results/review-renderer.utils.js.map +1 -0
  1182. package/dist/components/results/review-types.d.ts +62 -0
  1183. package/dist/components/results/review-types.d.ts.map +1 -0
  1184. package/dist/components/results/review-types.js +2 -0
  1185. package/dist/components/results/review-types.js.map +1 -0
  1186. package/dist/components/themes/cambridge-yle/CambridgeYleAudioPlayer.d.ts +9 -0
  1187. package/dist/components/themes/cambridge-yle/CambridgeYleAudioPlayer.d.ts.map +1 -0
  1188. package/dist/components/themes/cambridge-yle/CambridgeYleAudioPlayer.js +139 -0
  1189. package/dist/components/themes/cambridge-yle/CambridgeYleAudioPlayer.js.map +1 -0
  1190. package/dist/components/themes/cambridge-yle/CambridgeYleBottomNav.d.ts +11 -0
  1191. package/dist/components/themes/cambridge-yle/CambridgeYleBottomNav.d.ts.map +1 -0
  1192. package/dist/components/themes/cambridge-yle/CambridgeYleBottomNav.js +13 -0
  1193. package/dist/components/themes/cambridge-yle/CambridgeYleBottomNav.js.map +1 -0
  1194. package/dist/components/themes/cambridge-yle/CambridgeYleExamLayout.d.ts +3 -0
  1195. package/dist/components/themes/cambridge-yle/CambridgeYleExamLayout.d.ts.map +1 -0
  1196. package/dist/components/themes/cambridge-yle/CambridgeYleExamLayout.js +19 -0
  1197. package/dist/components/themes/cambridge-yle/CambridgeYleExamLayout.js.map +1 -0
  1198. package/dist/components/themes/cambridge-yle/CambridgeYleExampleText.d.ts +7 -0
  1199. package/dist/components/themes/cambridge-yle/CambridgeYleExampleText.d.ts.map +1 -0
  1200. package/dist/components/themes/cambridge-yle/CambridgeYleExampleText.js +12 -0
  1201. package/dist/components/themes/cambridge-yle/CambridgeYleExampleText.js.map +1 -0
  1202. package/dist/components/themes/cambridge-yle/CambridgeYleHeader.d.ts +14 -0
  1203. package/dist/components/themes/cambridge-yle/CambridgeYleHeader.d.ts.map +1 -0
  1204. package/dist/components/themes/cambridge-yle/CambridgeYleHeader.js +12 -0
  1205. package/dist/components/themes/cambridge-yle/CambridgeYleHeader.js.map +1 -0
  1206. package/dist/components/themes/cambridge-yle/CambridgeYleInstructionBanner.d.ts +10 -0
  1207. package/dist/components/themes/cambridge-yle/CambridgeYleInstructionBanner.d.ts.map +1 -0
  1208. package/dist/components/themes/cambridge-yle/CambridgeYleInstructionBanner.js +10 -0
  1209. package/dist/components/themes/cambridge-yle/CambridgeYleInstructionBanner.js.map +1 -0
  1210. package/dist/components/themes/cambridge-yle/CambridgeYleNavButton.d.ts +8 -0
  1211. package/dist/components/themes/cambridge-yle/CambridgeYleNavButton.d.ts.map +1 -0
  1212. package/dist/components/themes/cambridge-yle/CambridgeYleNavButton.js +14 -0
  1213. package/dist/components/themes/cambridge-yle/CambridgeYleNavButton.js.map +1 -0
  1214. package/dist/components/themes/cambridge-yle/CambridgeYlePartBanner.d.ts +9 -0
  1215. package/dist/components/themes/cambridge-yle/CambridgeYlePartBanner.d.ts.map +1 -0
  1216. package/dist/components/themes/cambridge-yle/CambridgeYlePartBanner.js +9 -0
  1217. package/dist/components/themes/cambridge-yle/CambridgeYlePartBanner.js.map +1 -0
  1218. package/dist/components/themes/cambridge-yle/CambridgeYleProgressBar.d.ts +7 -0
  1219. package/dist/components/themes/cambridge-yle/CambridgeYleProgressBar.d.ts.map +1 -0
  1220. package/dist/components/themes/cambridge-yle/CambridgeYleProgressBar.js +7 -0
  1221. package/dist/components/themes/cambridge-yle/CambridgeYleProgressBar.js.map +1 -0
  1222. package/dist/components/themes/cambridge-yle/CambridgeYleQuestionCard.d.ts +8 -0
  1223. package/dist/components/themes/cambridge-yle/CambridgeYleQuestionCard.d.ts.map +1 -0
  1224. package/dist/components/themes/cambridge-yle/CambridgeYleQuestionCard.js +6 -0
  1225. package/dist/components/themes/cambridge-yle/CambridgeYleQuestionCard.js.map +1 -0
  1226. package/dist/components/themes/cambridge-yle/CambridgeYleQuestionCardFullWidth.d.ts +11 -0
  1227. package/dist/components/themes/cambridge-yle/CambridgeYleQuestionCardFullWidth.d.ts.map +1 -0
  1228. package/dist/components/themes/cambridge-yle/CambridgeYleQuestionCardFullWidth.js +10 -0
  1229. package/dist/components/themes/cambridge-yle/CambridgeYleQuestionCardFullWidth.js.map +1 -0
  1230. package/dist/components/themes/cambridge-yle/CambridgeYleSidebar.d.ts +25 -0
  1231. package/dist/components/themes/cambridge-yle/CambridgeYleSidebar.d.ts.map +1 -0
  1232. package/dist/components/themes/cambridge-yle/CambridgeYleSidebar.js +42 -0
  1233. package/dist/components/themes/cambridge-yle/CambridgeYleSidebar.js.map +1 -0
  1234. package/dist/components/themes/cambridge-yle/CambridgeYleTimer.d.ts +8 -0
  1235. package/dist/components/themes/cambridge-yle/CambridgeYleTimer.d.ts.map +1 -0
  1236. package/dist/components/themes/cambridge-yle/CambridgeYleTimer.js +26 -0
  1237. package/dist/components/themes/cambridge-yle/CambridgeYleTimer.js.map +1 -0
  1238. package/dist/components/themes/cambridge-yle/assets/images/background-ocean-edu-2.png +0 -0
  1239. package/dist/components/themes/cambridge-yle/assets/images/background-ocean-edu-neutral.png +0 -0
  1240. package/dist/components/themes/cambridge-yle/assets/images/background-ocean-edu.png +0 -0
  1241. package/dist/components/themes/cambridge-yle/assets/images/bg-gradient.png +0 -0
  1242. package/dist/components/themes/cambridge-yle/assets/images/bg-title-old.png +0 -0
  1243. package/dist/components/themes/cambridge-yle/assets/images/bg-title-part.png +0 -0
  1244. package/dist/components/themes/cambridge-yle/assets/images/bg-title.png +0 -0
  1245. package/dist/components/themes/cambridge-yle/assets/images/bg.jpeg +0 -0
  1246. package/dist/components/themes/cambridge-yle/assets/images/border-2.png +0 -0
  1247. package/dist/components/themes/cambridge-yle/assets/images/border-old.png +0 -0
  1248. package/dist/components/themes/cambridge-yle/assets/images/border.png +0 -0
  1249. package/dist/components/themes/cambridge-yle/assets/images/button_feedback_vi.png +0 -0
  1250. package/dist/components/themes/cambridge-yle/assets/images/button_feedback_vi.webp +0 -0
  1251. package/dist/components/themes/cambridge-yle/assets/images/close.png +0 -0
  1252. package/dist/components/themes/cambridge-yle/assets/images/close_old.png +0 -0
  1253. package/dist/components/themes/cambridge-yle/assets/images/demo-audio.mp3 +0 -0
  1254. package/dist/components/themes/cambridge-yle/assets/images/demo-image.jpeg +0 -0
  1255. package/dist/components/themes/cambridge-yle/assets/images/frame-old.png +0 -0
  1256. package/dist/components/themes/cambridge-yle/assets/images/frame.png +0 -0
  1257. package/dist/components/themes/cambridge-yle/assets/images/ic-pause.png +0 -0
  1258. package/dist/components/themes/cambridge-yle/assets/images/icon-bottom-left.png +0 -0
  1259. package/dist/components/themes/cambridge-yle/assets/images/icon-bottom-right.png +0 -0
  1260. package/dist/components/themes/cambridge-yle/assets/images/new_design.png +0 -0
  1261. package/dist/components/themes/cambridge-yle/assets/images/phao.png +0 -0
  1262. package/dist/components/themes/cambridge-yle/assets/images/question-card-bg-full.png +0 -0
  1263. package/dist/components/themes/cambridge-yle/assets/images/question-card-bg.png +0 -0
  1264. package/dist/components/themes/cambridge-yle/assets/images/rangsanho.png +0 -0
  1265. package/dist/components/themes/cambridge-yle/assets/images/rocket.png +0 -0
  1266. package/dist/components/themes/cambridge-yle/assets/images/sanho.png +0 -0
  1267. package/dist/components/themes/cambridge-yle/assets/images/sao.png +0 -0
  1268. package/dist/components/themes/cambridge-yle/assets/images/vooc.png +0 -0
  1269. package/dist/components/themes/cambridge-yle/index.d.ts +13 -0
  1270. package/dist/components/themes/cambridge-yle/index.d.ts.map +1 -0
  1271. package/dist/components/themes/cambridge-yle/index.js +14 -0
  1272. package/dist/components/themes/cambridge-yle/index.js.map +1 -0
  1273. package/dist/components/themes/english-certification/EcAnswerTheQuestion.d.ts +19 -0
  1274. package/dist/components/themes/english-certification/EcAnswerTheQuestion.d.ts.map +1 -0
  1275. package/dist/components/themes/english-certification/EcAnswerTheQuestion.js +25 -0
  1276. package/dist/components/themes/english-certification/EcAnswerTheQuestion.js.map +1 -0
  1277. package/dist/components/themes/english-certification/EcMatchByWritingAnswer.d.ts +22 -0
  1278. package/dist/components/themes/english-certification/EcMatchByWritingAnswer.d.ts.map +1 -0
  1279. package/dist/components/themes/english-certification/EcMatchByWritingAnswer.js +89 -0
  1280. package/dist/components/themes/english-certification/EcMatchByWritingAnswer.js.map +1 -0
  1281. package/dist/components/themes/english-certification/EcWordFillParagraph.d.ts +20 -0
  1282. package/dist/components/themes/english-certification/EcWordFillParagraph.d.ts.map +1 -0
  1283. package/dist/components/themes/english-certification/EcWordFillParagraph.js +56 -0
  1284. package/dist/components/themes/english-certification/EcWordFillParagraph.js.map +1 -0
  1285. package/dist/components/themes/english-certification/EcWordFillStructuredForm.d.ts +20 -0
  1286. package/dist/components/themes/english-certification/EcWordFillStructuredForm.d.ts.map +1 -0
  1287. package/dist/components/themes/english-certification/EcWordFillStructuredForm.js +157 -0
  1288. package/dist/components/themes/english-certification/EcWordFillStructuredForm.js.map +1 -0
  1289. package/dist/components/themes/english-certification/EcWritingTask.d.ts +19 -0
  1290. package/dist/components/themes/english-certification/EcWritingTask.d.ts.map +1 -0
  1291. package/dist/components/themes/english-certification/EcWritingTask.js +35 -0
  1292. package/dist/components/themes/english-certification/EcWritingTask.js.map +1 -0
  1293. package/dist/components/themes/english-certification/EnglishCertificationAudioPlayer.d.ts +14 -0
  1294. package/dist/components/themes/english-certification/EnglishCertificationAudioPlayer.d.ts.map +1 -0
  1295. package/dist/components/themes/english-certification/EnglishCertificationAudioPlayer.js +115 -0
  1296. package/dist/components/themes/english-certification/EnglishCertificationAudioPlayer.js.map +1 -0
  1297. package/dist/components/themes/english-certification/EnglishCertificationBrand.d.ts +11 -0
  1298. package/dist/components/themes/english-certification/EnglishCertificationBrand.d.ts.map +1 -0
  1299. package/dist/components/themes/english-certification/EnglishCertificationBrand.js +12 -0
  1300. package/dist/components/themes/english-certification/EnglishCertificationBrand.js.map +1 -0
  1301. package/dist/components/themes/english-certification/EnglishCertificationExamLayout.d.ts +20 -0
  1302. package/dist/components/themes/english-certification/EnglishCertificationExamLayout.d.ts.map +1 -0
  1303. package/dist/components/themes/english-certification/EnglishCertificationExamLayout.js +22 -0
  1304. package/dist/components/themes/english-certification/EnglishCertificationExamLayout.js.map +1 -0
  1305. package/dist/components/themes/english-certification/EnglishCertificationFlagButton.d.ts +23 -0
  1306. package/dist/components/themes/english-certification/EnglishCertificationFlagButton.d.ts.map +1 -0
  1307. package/dist/components/themes/english-certification/EnglishCertificationFlagButton.js +16 -0
  1308. package/dist/components/themes/english-certification/EnglishCertificationFlagButton.js.map +1 -0
  1309. package/dist/components/themes/english-certification/EnglishCertificationFooterBar.d.ts +23 -0
  1310. package/dist/components/themes/english-certification/EnglishCertificationFooterBar.d.ts.map +1 -0
  1311. package/dist/components/themes/english-certification/EnglishCertificationFooterBar.js +20 -0
  1312. package/dist/components/themes/english-certification/EnglishCertificationFooterBar.js.map +1 -0
  1313. package/dist/components/themes/english-certification/EnglishCertificationGroupedQuestion.d.ts +25 -0
  1314. package/dist/components/themes/english-certification/EnglishCertificationGroupedQuestion.d.ts.map +1 -0
  1315. package/dist/components/themes/english-certification/EnglishCertificationGroupedQuestion.js +149 -0
  1316. package/dist/components/themes/english-certification/EnglishCertificationGroupedQuestion.js.map +1 -0
  1317. package/dist/components/themes/english-certification/EnglishCertificationHeader.d.ts +25 -0
  1318. package/dist/components/themes/english-certification/EnglishCertificationHeader.d.ts.map +1 -0
  1319. package/dist/components/themes/english-certification/EnglishCertificationHeader.js +32 -0
  1320. package/dist/components/themes/english-certification/EnglishCertificationHeader.js.map +1 -0
  1321. package/dist/components/themes/english-certification/EnglishCertificationNavigationPanel.d.ts +19 -0
  1322. package/dist/components/themes/english-certification/EnglishCertificationNavigationPanel.d.ts.map +1 -0
  1323. package/dist/components/themes/english-certification/EnglishCertificationNavigationPanel.js +72 -0
  1324. package/dist/components/themes/english-certification/EnglishCertificationNavigationPanel.js.map +1 -0
  1325. package/dist/components/themes/english-certification/EnglishCertificationOptionSelector.d.ts +29 -0
  1326. package/dist/components/themes/english-certification/EnglishCertificationOptionSelector.d.ts.map +1 -0
  1327. package/dist/components/themes/english-certification/EnglishCertificationOptionSelector.js +34 -0
  1328. package/dist/components/themes/english-certification/EnglishCertificationOptionSelector.js.map +1 -0
  1329. package/dist/components/themes/english-certification/EnglishCertificationPassagePanel.d.ts +22 -0
  1330. package/dist/components/themes/english-certification/EnglishCertificationPassagePanel.d.ts.map +1 -0
  1331. package/dist/components/themes/english-certification/EnglishCertificationPassagePanel.js +17 -0
  1332. package/dist/components/themes/english-certification/EnglishCertificationPassagePanel.js.map +1 -0
  1333. package/dist/components/themes/english-certification/EnglishCertificationQuestionCard.d.ts +21 -0
  1334. package/dist/components/themes/english-certification/EnglishCertificationQuestionCard.d.ts.map +1 -0
  1335. package/dist/components/themes/english-certification/EnglishCertificationQuestionCard.js +23 -0
  1336. package/dist/components/themes/english-certification/EnglishCertificationQuestionCard.js.map +1 -0
  1337. package/dist/components/themes/english-certification/EnglishCertificationQuestionItem.d.ts +26 -0
  1338. package/dist/components/themes/english-certification/EnglishCertificationQuestionItem.d.ts.map +1 -0
  1339. package/dist/components/themes/english-certification/EnglishCertificationQuestionItem.js +38 -0
  1340. package/dist/components/themes/english-certification/EnglishCertificationQuestionItem.js.map +1 -0
  1341. package/dist/components/themes/english-certification/EnglishCertificationQuestionRenderer.d.ts +25 -0
  1342. package/dist/components/themes/english-certification/EnglishCertificationQuestionRenderer.d.ts.map +1 -0
  1343. package/dist/components/themes/english-certification/EnglishCertificationQuestionRenderer.js +73 -0
  1344. package/dist/components/themes/english-certification/EnglishCertificationQuestionRenderer.js.map +1 -0
  1345. package/dist/components/themes/english-certification/EnglishCertificationReadingSection.d.ts +29 -0
  1346. package/dist/components/themes/english-certification/EnglishCertificationReadingSection.d.ts.map +1 -0
  1347. package/dist/components/themes/english-certification/EnglishCertificationReadingSection.js +91 -0
  1348. package/dist/components/themes/english-certification/EnglishCertificationReadingSection.js.map +1 -0
  1349. package/dist/components/themes/english-certification/EnglishCertificationSingleQuestion.d.ts +32 -0
  1350. package/dist/components/themes/english-certification/EnglishCertificationSingleQuestion.d.ts.map +1 -0
  1351. package/dist/components/themes/english-certification/EnglishCertificationSingleQuestion.js +19 -0
  1352. package/dist/components/themes/english-certification/EnglishCertificationSingleQuestion.js.map +1 -0
  1353. package/dist/components/themes/english-certification/EnglishCertificationSingleQuestionList.d.ts +26 -0
  1354. package/dist/components/themes/english-certification/EnglishCertificationSingleQuestionList.d.ts.map +1 -0
  1355. package/dist/components/themes/english-certification/EnglishCertificationSingleQuestionList.js +30 -0
  1356. package/dist/components/themes/english-certification/EnglishCertificationSingleQuestionList.js.map +1 -0
  1357. package/dist/components/themes/english-certification/english-certification-theme.d.ts +57 -0
  1358. package/dist/components/themes/english-certification/english-certification-theme.d.ts.map +1 -0
  1359. package/dist/components/themes/english-certification/english-certification-theme.js +59 -0
  1360. package/dist/components/themes/english-certification/english-certification-theme.js.map +1 -0
  1361. package/dist/components/themes/english-certification/grouped-question-utils.d.ts +24 -0
  1362. package/dist/components/themes/english-certification/grouped-question-utils.d.ts.map +1 -0
  1363. package/dist/components/themes/english-certification/grouped-question-utils.js +219 -0
  1364. package/dist/components/themes/english-certification/grouped-question-utils.js.map +1 -0
  1365. package/dist/components/themes/english-certification/index.d.ts +23 -0
  1366. package/dist/components/themes/english-certification/index.d.ts.map +1 -0
  1367. package/dist/components/themes/english-certification/index.js +22 -0
  1368. package/dist/components/themes/english-certification/index.js.map +1 -0
  1369. package/dist/components/themes/index.d.ts +8 -0
  1370. package/dist/components/themes/index.d.ts.map +1 -0
  1371. package/dist/components/themes/index.js +7 -0
  1372. package/dist/components/themes/index.js.map +1 -0
  1373. package/dist/components/themes/summer-sky/SummerSkyAudioPlayer.d.ts +10 -0
  1374. package/dist/components/themes/summer-sky/SummerSkyAudioPlayer.d.ts.map +1 -0
  1375. package/dist/components/themes/summer-sky/SummerSkyAudioPlayer.js +171 -0
  1376. package/dist/components/themes/summer-sky/SummerSkyAudioPlayer.js.map +1 -0
  1377. package/dist/components/themes/summer-sky/SummerSkyLayout.d.ts +3 -0
  1378. package/dist/components/themes/summer-sky/SummerSkyLayout.d.ts.map +1 -0
  1379. package/dist/components/themes/summer-sky/SummerSkyLayout.js +222 -0
  1380. package/dist/components/themes/summer-sky/SummerSkyLayout.js.map +1 -0
  1381. package/dist/components/themes/summer-sky/SummerSkySubmitModal.d.ts +9 -0
  1382. package/dist/components/themes/summer-sky/SummerSkySubmitModal.d.ts.map +1 -0
  1383. package/dist/components/themes/summer-sky/SummerSkySubmitModal.js +19 -0
  1384. package/dist/components/themes/summer-sky/SummerSkySubmitModal.js.map +1 -0
  1385. package/dist/components/themes/summer-sky/SummerSkyWaitingRoom.d.ts +10 -0
  1386. package/dist/components/themes/summer-sky/SummerSkyWaitingRoom.d.ts.map +1 -0
  1387. package/dist/components/themes/summer-sky/SummerSkyWaitingRoom.js +195 -0
  1388. package/dist/components/themes/summer-sky/SummerSkyWaitingRoom.js.map +1 -0
  1389. package/dist/components/themes/summer-sky/assets/images/Group_3432849.png +0 -0
  1390. package/dist/components/themes/summer-sky/assets/images/arrow-left.png +0 -0
  1391. package/dist/components/themes/summer-sky/assets/images/audio-icon.png +0 -0
  1392. package/dist/components/themes/summer-sky/assets/images/audio_ver2_icon.png +0 -0
  1393. package/dist/components/themes/summer-sky/assets/images/background-noticesubmit.png +0 -0
  1394. package/dist/components/themes/summer-sky/assets/images/background-question.png +0 -0
  1395. package/dist/components/themes/summer-sky/assets/images/background-v2.png +0 -0
  1396. package/dist/components/themes/summer-sky/assets/images/background_title.png +0 -0
  1397. package/dist/components/themes/summer-sky/assets/images/btn-notisubmid.png +0 -0
  1398. package/dist/components/themes/summer-sky/assets/images/button_feedback_vi.png +0 -0
  1399. package/dist/components/themes/summer-sky/assets/images/check-mic-btn.png +0 -0
  1400. package/dist/components/themes/summer-sky/assets/images/clock.png +0 -0
  1401. package/dist/components/themes/summer-sky/assets/images/has_answered.png +0 -0
  1402. package/dist/components/themes/summer-sky/assets/images/ic-mute-sunset.png +0 -0
  1403. package/dist/components/themes/summer-sky/assets/images/ic-mute.png +0 -0
  1404. package/dist/components/themes/summer-sky/assets/images/ic-play-sunset.png +0 -0
  1405. package/dist/components/themes/summer-sky/assets/images/ic-play-violet.webp +0 -0
  1406. package/dist/components/themes/summer-sky/assets/images/ic-play.webp +0 -0
  1407. package/dist/components/themes/summer-sky/assets/images/instruction-step.png +0 -0
  1408. package/dist/components/themes/summer-sky/assets/images/listen-audio.png +0 -0
  1409. package/dist/components/themes/summer-sky/assets/images/lock_mic_ver2_icon.png +0 -0
  1410. package/dist/components/themes/summer-sky/assets/images/mic-icon.png +0 -0
  1411. package/dist/components/themes/summer-sky/assets/images/mic_ver2_icon.png +0 -0
  1412. package/dist/components/themes/summer-sky/assets/images/next-btn.png +0 -0
  1413. package/dist/components/themes/summer-sky/assets/images/next-question-btn.png +0 -0
  1414. package/dist/components/themes/summer-sky/assets/images/ocean-frame.png +0 -0
  1415. package/dist/components/themes/summer-sky/assets/images/oceanedu-mascot.png +0 -0
  1416. package/dist/components/themes/summer-sky/assets/images/ong.png +0 -0
  1417. package/dist/components/themes/summer-sky/assets/images/pause-audio.png +0 -0
  1418. package/dist/components/themes/summer-sky/assets/images/pause_audio_ver2_icon.png +0 -0
  1419. package/dist/components/themes/summer-sky/assets/images/prev-question-btn.png +0 -0
  1420. package/dist/components/themes/summer-sky/assets/images/question-badge-sunset.png +0 -0
  1421. package/dist/components/themes/summer-sky/assets/images/radio-check.png +0 -0
  1422. package/dist/components/themes/summer-sky/assets/images/red-circle.png +0 -0
  1423. package/dist/components/themes/summer-sky/assets/images/rope.png +0 -0
  1424. package/dist/components/themes/summer-sky/assets/images/rope_2.png +0 -0
  1425. package/dist/components/themes/summer-sky/assets/images/rope_v3.png +0 -0
  1426. package/dist/components/themes/summer-sky/assets/images/start-exam.png +0 -0
  1427. package/dist/components/themes/summer-sky/assets/images/stop-mic.png +0 -0
  1428. package/dist/components/themes/summer-sky/assets/images/stop_audio_ver2_icon.png +0 -0
  1429. package/dist/components/themes/summer-sky/assets/images/student-avatar.png +0 -0
  1430. package/dist/components/themes/summer-sky/assets/images/submit.png +0 -0
  1431. package/dist/components/themes/summer-sky/assets/images/teacher_transparent (1).mp4 +0 -0
  1432. package/dist/components/themes/summer-sky/assets/images/title-logo.png +0 -0
  1433. package/dist/components/themes/summer-sky/assets/images/title-notisubmit.png +0 -0
  1434. package/dist/components/themes/summer-sky/assets/images/title_table.png +0 -0
  1435. package/dist/components/themes/summer-sky/assets/images/traloicauhoi.png +0 -0
  1436. package/dist/components/themes/summer-sky/assets/images/x-noticesubmit.png.png +0 -0
  1437. package/dist/components/themes/summer-sky/assets/styles/SummerSkyLayout.module.css +406 -0
  1438. package/dist/components/themes/summer-sky/assets/styles/SummerSkyWaitingRoom.module.css +419 -0
  1439. package/dist/components/themes/types.d.ts +62 -0
  1440. package/dist/components/themes/types.d.ts.map +1 -0
  1441. package/dist/components/themes/types.js +2 -0
  1442. package/dist/components/themes/types.js.map +1 -0
  1443. package/dist/components/ui/alert-dialog.d.ts +21 -0
  1444. package/dist/components/ui/alert-dialog.d.ts.map +1 -0
  1445. package/dist/components/ui/alert-dialog.js +27 -0
  1446. package/dist/components/ui/alert-dialog.js.map +1 -0
  1447. package/dist/components/ui/alert.d.ts +9 -0
  1448. package/dist/components/ui/alert.d.ts.map +1 -0
  1449. package/dist/components/ui/alert.js +23 -0
  1450. package/dist/components/ui/alert.js.map +1 -0
  1451. package/dist/components/ui/avatar.d.ts +7 -0
  1452. package/dist/components/ui/avatar.d.ts.map +1 -0
  1453. package/dist/components/ui/avatar.js +13 -0
  1454. package/dist/components/ui/avatar.js.map +1 -0
  1455. package/dist/components/ui/badge.d.ts +16 -0
  1456. package/dist/components/ui/badge.d.ts.map +1 -0
  1457. package/dist/components/ui/badge.js +39 -0
  1458. package/dist/components/ui/badge.js.map +1 -0
  1459. package/dist/components/ui/button.d.ts +11 -0
  1460. package/dist/components/ui/button.d.ts.map +1 -0
  1461. package/dist/components/ui/button.js +36 -0
  1462. package/dist/components/ui/button.js.map +1 -0
  1463. package/dist/components/ui/calendar.d.ts +9 -0
  1464. package/dist/components/ui/calendar.d.ts.map +1 -0
  1465. package/dist/components/ui/calendar.js +77 -0
  1466. package/dist/components/ui/calendar.js.map +1 -0
  1467. package/dist/components/ui/card.d.ts +9 -0
  1468. package/dist/components/ui/card.d.ts.map +1 -0
  1469. package/dist/components/ui/card.js +17 -0
  1470. package/dist/components/ui/card.js.map +1 -0
  1471. package/dist/components/ui/carousel.d.ts +20 -0
  1472. package/dist/components/ui/carousel.d.ts.map +1 -0
  1473. package/dist/components/ui/carousel.js +92 -0
  1474. package/dist/components/ui/carousel.js.map +1 -0
  1475. package/dist/components/ui/checkbox.d.ts +5 -0
  1476. package/dist/components/ui/checkbox.d.ts.map +1 -0
  1477. package/dist/components/ui/checkbox.js +10 -0
  1478. package/dist/components/ui/checkbox.js.map +1 -0
  1479. package/dist/components/ui/collapsible.d.ts +6 -0
  1480. package/dist/components/ui/collapsible.d.ts.map +1 -0
  1481. package/dist/components/ui/collapsible.js +14 -0
  1482. package/dist/components/ui/collapsible.js.map +1 -0
  1483. package/dist/components/ui/command.d.ts +19 -0
  1484. package/dist/components/ui/command.d.ts.map +1 -0
  1485. package/dist/components/ui/command.js +35 -0
  1486. package/dist/components/ui/command.js.map +1 -0
  1487. package/dist/components/ui/confirm-dialog.d.ts +24 -0
  1488. package/dist/components/ui/confirm-dialog.d.ts.map +1 -0
  1489. package/dist/components/ui/confirm-dialog.js +50 -0
  1490. package/dist/components/ui/confirm-dialog.js.map +1 -0
  1491. package/dist/components/ui/dialog.d.ts +20 -0
  1492. package/dist/components/ui/dialog.d.ts.map +1 -0
  1493. package/dist/components/ui/dialog.js +24 -0
  1494. package/dist/components/ui/dialog.js.map +1 -0
  1495. package/dist/components/ui/drawer.d.ts +14 -0
  1496. package/dist/components/ui/drawer.d.ts.map +1 -0
  1497. package/dist/components/ui/drawer.js +36 -0
  1498. package/dist/components/ui/drawer.js.map +1 -0
  1499. package/dist/components/ui/dropdown-menu.d.ts +28 -0
  1500. package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
  1501. package/dist/components/ui/dropdown-menu.js +34 -0
  1502. package/dist/components/ui/dropdown-menu.js.map +1 -0
  1503. package/dist/components/ui/file-upload.d.ts +25 -0
  1504. package/dist/components/ui/file-upload.d.ts.map +1 -0
  1505. package/dist/components/ui/file-upload.js +156 -0
  1506. package/dist/components/ui/file-upload.js.map +1 -0
  1507. package/dist/components/ui/form.d.ts +26 -0
  1508. package/dist/components/ui/form.d.ts.map +1 -0
  1509. package/dist/components/ui/form.js +63 -0
  1510. package/dist/components/ui/form.js.map +1 -0
  1511. package/dist/components/ui/hover-card.d.ts +7 -0
  1512. package/dist/components/ui/hover-card.d.ts.map +1 -0
  1513. package/dist/components/ui/hover-card.js +11 -0
  1514. package/dist/components/ui/hover-card.js.map +1 -0
  1515. package/dist/components/ui/image-preview.d.ts +19 -0
  1516. package/dist/components/ui/image-preview.d.ts.map +1 -0
  1517. package/dist/components/ui/image-preview.js +30 -0
  1518. package/dist/components/ui/image-preview.js.map +1 -0
  1519. package/dist/components/ui/input.d.ts +4 -0
  1520. package/dist/components/ui/input.d.ts.map +1 -0
  1521. package/dist/components/ui/input.js +9 -0
  1522. package/dist/components/ui/input.js.map +1 -0
  1523. package/dist/components/ui/label.d.ts +6 -0
  1524. package/dist/components/ui/label.d.ts.map +1 -0
  1525. package/dist/components/ui/label.js +10 -0
  1526. package/dist/components/ui/label.js.map +1 -0
  1527. package/dist/components/ui/language-switcher.d.ts +2 -0
  1528. package/dist/components/ui/language-switcher.d.ts.map +1 -0
  1529. package/dist/components/ui/language-switcher.js +16 -0
  1530. package/dist/components/ui/language-switcher.js.map +1 -0
  1531. package/dist/components/ui/multi-select.d.ts +17 -0
  1532. package/dist/components/ui/multi-select.d.ts.map +1 -0
  1533. package/dist/components/ui/multi-select.js +91 -0
  1534. package/dist/components/ui/multi-select.js.map +1 -0
  1535. package/dist/components/ui/points-input.d.ts +16 -0
  1536. package/dist/components/ui/points-input.d.ts.map +1 -0
  1537. package/dist/components/ui/points-input.js +34 -0
  1538. package/dist/components/ui/points-input.js.map +1 -0
  1539. package/dist/components/ui/popover.d.ts +11 -0
  1540. package/dist/components/ui/popover.d.ts.map +1 -0
  1541. package/dist/components/ui/popover.js +27 -0
  1542. package/dist/components/ui/popover.js.map +1 -0
  1543. package/dist/components/ui/progress.d.ts +5 -0
  1544. package/dist/components/ui/progress.d.ts.map +1 -0
  1545. package/dist/components/ui/progress.js +17 -0
  1546. package/dist/components/ui/progress.js.map +1 -0
  1547. package/dist/components/ui/radio-group.d.ts +6 -0
  1548. package/dist/components/ui/radio-group.d.ts.map +1 -0
  1549. package/dist/components/ui/radio-group.js +13 -0
  1550. package/dist/components/ui/radio-group.js.map +1 -0
  1551. package/dist/components/ui/scroll-area.d.ts +6 -0
  1552. package/dist/components/ui/scroll-area.d.ts.map +1 -0
  1553. package/dist/components/ui/scroll-area.js +12 -0
  1554. package/dist/components/ui/scroll-area.js.map +1 -0
  1555. package/dist/components/ui/select.d.ts +16 -0
  1556. package/dist/components/ui/select.d.ts.map +1 -0
  1557. package/dist/components/ui/select.js +39 -0
  1558. package/dist/components/ui/select.js.map +1 -0
  1559. package/dist/components/ui/separator.d.ts +5 -0
  1560. package/dist/components/ui/separator.d.ts.map +1 -0
  1561. package/dist/components/ui/separator.js +9 -0
  1562. package/dist/components/ui/separator.js.map +1 -0
  1563. package/dist/components/ui/sheet.d.ts +14 -0
  1564. package/dist/components/ui/sheet.d.ts.map +1 -0
  1565. package/dist/components/ui/sheet.js +41 -0
  1566. package/dist/components/ui/sheet.js.map +1 -0
  1567. package/dist/components/ui/single-select.d.ts +18 -0
  1568. package/dist/components/ui/single-select.d.ts.map +1 -0
  1569. package/dist/components/ui/single-select.js +77 -0
  1570. package/dist/components/ui/single-select.js.map +1 -0
  1571. package/dist/components/ui/skeleton.d.ts +3 -0
  1572. package/dist/components/ui/skeleton.d.ts.map +1 -0
  1573. package/dist/components/ui/skeleton.js +7 -0
  1574. package/dist/components/ui/skeleton.js.map +1 -0
  1575. package/dist/components/ui/switch.d.ts +5 -0
  1576. package/dist/components/ui/switch.d.ts.map +1 -0
  1577. package/dist/components/ui/switch.js +9 -0
  1578. package/dist/components/ui/switch.js.map +1 -0
  1579. package/dist/components/ui/table.d.ts +11 -0
  1580. package/dist/components/ui/table.d.ts.map +1 -0
  1581. package/dist/components/ui/table.js +21 -0
  1582. package/dist/components/ui/table.js.map +1 -0
  1583. package/dist/components/ui/tabs.d.ts +8 -0
  1584. package/dist/components/ui/tabs.d.ts.map +1 -0
  1585. package/dist/components/ui/tabs.js +18 -0
  1586. package/dist/components/ui/tabs.js.map +1 -0
  1587. package/dist/components/ui/textarea.d.ts +6 -0
  1588. package/dist/components/ui/textarea.d.ts.map +1 -0
  1589. package/dist/components/ui/textarea.js +9 -0
  1590. package/dist/components/ui/textarea.js.map +1 -0
  1591. package/dist/components/ui/tooltip.d.ts +8 -0
  1592. package/dist/components/ui/tooltip.d.ts.map +1 -0
  1593. package/dist/components/ui/tooltip.js +12 -0
  1594. package/dist/components/ui/tooltip.js.map +1 -0
  1595. package/dist/global.d.ts +46 -0
  1596. package/dist/index.d.ts +28 -0
  1597. package/dist/index.d.ts.map +1 -0
  1598. package/dist/index.js +20 -0
  1599. package/dist/index.js.map +1 -0
  1600. package/dist/mcp/config.d.ts +13 -0
  1601. package/dist/mcp/config.d.ts.map +1 -0
  1602. package/dist/mcp/config.js +33 -0
  1603. package/dist/mcp/config.js.map +1 -0
  1604. package/dist/mcp/http-client.d.ts +7 -0
  1605. package/dist/mcp/http-client.d.ts.map +1 -0
  1606. package/dist/mcp/http-client.js +49 -0
  1607. package/dist/mcp/http-client.js.map +1 -0
  1608. package/dist/mcp/index.d.ts +7 -0
  1609. package/dist/mcp/index.d.ts.map +1 -0
  1610. package/dist/mcp/index.js +31 -0
  1611. package/dist/mcp/index.js.map +1 -0
  1612. package/dist/mcp/tools/_helpers.d.ts +5 -0
  1613. package/dist/mcp/tools/_helpers.d.ts.map +1 -0
  1614. package/dist/mcp/tools/_helpers.js +26 -0
  1615. package/dist/mcp/tools/_helpers.js.map +1 -0
  1616. package/dist/mcp/tools/exams.d.ts +3 -0
  1617. package/dist/mcp/tools/exams.d.ts.map +1 -0
  1618. package/dist/mcp/tools/exams.js +440 -0
  1619. package/dist/mcp/tools/exams.js.map +1 -0
  1620. package/dist/mcp/tools/index.d.ts +3 -0
  1621. package/dist/mcp/tools/index.d.ts.map +1 -0
  1622. package/dist/mcp/tools/index.js +7 -0
  1623. package/dist/mcp/tools/index.js.map +1 -0
  1624. package/dist/mcp/tools/results.d.ts +3 -0
  1625. package/dist/mcp/tools/results.d.ts.map +1 -0
  1626. package/dist/mcp/tools/results.js +20 -0
  1627. package/dist/mcp/tools/results.js.map +1 -0
  1628. package/dist/shared/constants/ApiConstant.d.ts +232 -0
  1629. package/dist/shared/constants/ApiConstant.d.ts.map +1 -0
  1630. package/dist/shared/constants/ApiConstant.js +277 -0
  1631. package/dist/shared/constants/ApiConstant.js.map +1 -0
  1632. package/dist/shared/constants/QueryKeyConstant.d.ts +99 -0
  1633. package/dist/shared/constants/QueryKeyConstant.d.ts.map +1 -0
  1634. package/dist/shared/constants/QueryKeyConstant.js +113 -0
  1635. package/dist/shared/constants/QueryKeyConstant.js.map +1 -0
  1636. package/dist/shared/constants/exam-level.enum.d.ts +33 -0
  1637. package/dist/shared/constants/exam-level.enum.d.ts.map +1 -0
  1638. package/dist/shared/constants/exam-level.enum.js +42 -0
  1639. package/dist/shared/constants/exam-level.enum.js.map +1 -0
  1640. package/dist/shared/constants/landings/placement-test.constants.d.ts +128 -0
  1641. package/dist/shared/constants/landings/placement-test.constants.d.ts.map +1 -0
  1642. package/dist/shared/constants/landings/placement-test.constants.js +432 -0
  1643. package/dist/shared/constants/landings/placement-test.constants.js.map +1 -0
  1644. package/dist/shared/constants/question-skills.d.ts +93 -0
  1645. package/dist/shared/constants/question-skills.d.ts.map +1 -0
  1646. package/dist/shared/constants/question-skills.js +268 -0
  1647. package/dist/shared/constants/question-skills.js.map +1 -0
  1648. package/dist/shared/constants/routes.d.ts +70 -0
  1649. package/dist/shared/constants/routes.d.ts.map +1 -0
  1650. package/dist/shared/constants/routes.js +82 -0
  1651. package/dist/shared/constants/routes.js.map +1 -0
  1652. package/dist/shared/index.d.ts +8 -0
  1653. package/dist/shared/index.d.ts.map +1 -0
  1654. package/dist/shared/index.js +8 -0
  1655. package/dist/shared/index.js.map +1 -0
  1656. package/dist/shared/lib/hooks/index.d.ts +11 -0
  1657. package/dist/shared/lib/hooks/index.d.ts.map +1 -0
  1658. package/dist/shared/lib/hooks/index.js +11 -0
  1659. package/dist/shared/lib/hooks/index.js.map +1 -0
  1660. package/dist/shared/lib/hooks/useAlertDialog.d.ts +36 -0
  1661. package/dist/shared/lib/hooks/useAlertDialog.d.ts.map +1 -0
  1662. package/dist/shared/lib/hooks/useAlertDialog.js +58 -0
  1663. package/dist/shared/lib/hooks/useAlertDialog.js.map +1 -0
  1664. package/dist/shared/lib/hooks/useAudioPlayCounter.d.ts +8 -0
  1665. package/dist/shared/lib/hooks/useAudioPlayCounter.d.ts.map +1 -0
  1666. package/dist/shared/lib/hooks/useAudioPlayCounter.js +31 -0
  1667. package/dist/shared/lib/hooks/useAudioPlayCounter.js.map +1 -0
  1668. package/dist/shared/lib/hooks/useAudioPreview.d.ts +16 -0
  1669. package/dist/shared/lib/hooks/useAudioPreview.d.ts.map +1 -0
  1670. package/dist/shared/lib/hooks/useAudioPreview.js +82 -0
  1671. package/dist/shared/lib/hooks/useAudioPreview.js.map +1 -0
  1672. package/dist/shared/lib/hooks/useAudioUpload.d.ts +18 -0
  1673. package/dist/shared/lib/hooks/useAudioUpload.d.ts.map +1 -0
  1674. package/dist/shared/lib/hooks/useAudioUpload.js +25 -0
  1675. package/dist/shared/lib/hooks/useAudioUpload.js.map +1 -0
  1676. package/dist/shared/lib/hooks/useConfirmDialog.d.ts +44 -0
  1677. package/dist/shared/lib/hooks/useConfirmDialog.d.ts.map +1 -0
  1678. package/dist/shared/lib/hooks/useConfirmDialog.js +90 -0
  1679. package/dist/shared/lib/hooks/useConfirmDialog.js.map +1 -0
  1680. package/dist/shared/lib/hooks/useDebouncedCallback.d.ts +8 -0
  1681. package/dist/shared/lib/hooks/useDebouncedCallback.d.ts.map +1 -0
  1682. package/dist/shared/lib/hooks/useDebouncedCallback.js +33 -0
  1683. package/dist/shared/lib/hooks/useDebouncedCallback.js.map +1 -0
  1684. package/dist/shared/lib/hooks/useDelayedAutoPlay.d.ts +11 -0
  1685. package/dist/shared/lib/hooks/useDelayedAutoPlay.d.ts.map +1 -0
  1686. package/dist/shared/lib/hooks/useDelayedAutoPlay.js +13 -0
  1687. package/dist/shared/lib/hooks/useDelayedAutoPlay.js.map +1 -0
  1688. package/dist/shared/lib/hooks/useFileUpload.d.ts +15 -0
  1689. package/dist/shared/lib/hooks/useFileUpload.d.ts.map +1 -0
  1690. package/dist/shared/lib/hooks/useFileUpload.js +25 -0
  1691. package/dist/shared/lib/hooks/useFileUpload.js.map +1 -0
  1692. package/dist/shared/lib/hooks/useImageUrl.d.ts +2 -0
  1693. package/dist/shared/lib/hooks/useImageUrl.d.ts.map +1 -0
  1694. package/dist/shared/lib/hooks/useImageUrl.js +6 -0
  1695. package/dist/shared/lib/hooks/useImageUrl.js.map +1 -0
  1696. package/dist/shared/lib/hooks/usePresignedFileUrl.d.ts +11 -0
  1697. package/dist/shared/lib/hooks/usePresignedFileUrl.d.ts.map +1 -0
  1698. package/dist/shared/lib/hooks/usePresignedFileUrl.js +11 -0
  1699. package/dist/shared/lib/hooks/usePresignedFileUrl.js.map +1 -0
  1700. package/dist/shared/lib/hooks/useReactHookForm.d.ts +34 -0
  1701. package/dist/shared/lib/hooks/useReactHookForm.d.ts.map +1 -0
  1702. package/dist/shared/lib/hooks/useReactHookForm.js +32 -0
  1703. package/dist/shared/lib/hooks/useReactHookForm.js.map +1 -0
  1704. package/dist/shared/lib/hooks/useToast.d.ts +35 -0
  1705. package/dist/shared/lib/hooks/useToast.d.ts.map +1 -0
  1706. package/dist/shared/lib/hooks/useToast.js +63 -0
  1707. package/dist/shared/lib/hooks/useToast.js.map +1 -0
  1708. package/dist/shared/lib/i18n/index.d.ts +32 -0
  1709. package/dist/shared/lib/i18n/index.d.ts.map +1 -0
  1710. package/dist/shared/lib/i18n/index.js +55 -0
  1711. package/dist/shared/lib/i18n/index.js.map +1 -0
  1712. package/dist/shared/lib/i18n/messages/en/admin.d.ts +1937 -0
  1713. package/dist/shared/lib/i18n/messages/en/admin.d.ts.map +1 -0
  1714. package/dist/shared/lib/i18n/messages/en/admin.js +2105 -0
  1715. package/dist/shared/lib/i18n/messages/en/admin.js.map +1 -0
  1716. package/dist/shared/lib/i18n/messages/en/auth.d.ts +82 -0
  1717. package/dist/shared/lib/i18n/messages/en/auth.d.ts.map +1 -0
  1718. package/dist/shared/lib/i18n/messages/en/auth.js +87 -0
  1719. package/dist/shared/lib/i18n/messages/en/auth.js.map +1 -0
  1720. package/dist/shared/lib/i18n/messages/en/common.d.ts +125 -0
  1721. package/dist/shared/lib/i18n/messages/en/common.d.ts.map +1 -0
  1722. package/dist/shared/lib/i18n/messages/en/common.js +141 -0
  1723. package/dist/shared/lib/i18n/messages/en/common.js.map +1 -0
  1724. package/dist/shared/lib/i18n/messages/en/file-upload.d.ts +17 -0
  1725. package/dist/shared/lib/i18n/messages/en/file-upload.d.ts.map +1 -0
  1726. package/dist/shared/lib/i18n/messages/en/file-upload.js +19 -0
  1727. package/dist/shared/lib/i18n/messages/en/file-upload.js.map +1 -0
  1728. package/dist/shared/lib/i18n/messages/en/student.d.ts +125 -0
  1729. package/dist/shared/lib/i18n/messages/en/student.d.ts.map +1 -0
  1730. package/dist/shared/lib/i18n/messages/en/student.js +134 -0
  1731. package/dist/shared/lib/i18n/messages/en/student.js.map +1 -0
  1732. package/dist/shared/lib/i18n/messages/en/terms.d.ts +27 -0
  1733. package/dist/shared/lib/i18n/messages/en/terms.d.ts.map +1 -0
  1734. package/dist/shared/lib/i18n/messages/en/terms.js +38 -0
  1735. package/dist/shared/lib/i18n/messages/en/terms.js.map +1 -0
  1736. package/dist/shared/lib/i18n/messages/en.d.ts +2293 -0
  1737. package/dist/shared/lib/i18n/messages/en.d.ts.map +1 -0
  1738. package/dist/shared/lib/i18n/messages/en.js +16 -0
  1739. package/dist/shared/lib/i18n/messages/en.js.map +1 -0
  1740. package/dist/shared/lib/i18n/messages/vi/admin.d.ts +1937 -0
  1741. package/dist/shared/lib/i18n/messages/vi/admin.d.ts.map +1 -0
  1742. package/dist/shared/lib/i18n/messages/vi/admin.js +2105 -0
  1743. package/dist/shared/lib/i18n/messages/vi/admin.js.map +1 -0
  1744. package/dist/shared/lib/i18n/messages/vi/auth.d.ts +82 -0
  1745. package/dist/shared/lib/i18n/messages/vi/auth.d.ts.map +1 -0
  1746. package/dist/shared/lib/i18n/messages/vi/auth.js +87 -0
  1747. package/dist/shared/lib/i18n/messages/vi/auth.js.map +1 -0
  1748. package/dist/shared/lib/i18n/messages/vi/common.d.ts +125 -0
  1749. package/dist/shared/lib/i18n/messages/vi/common.d.ts.map +1 -0
  1750. package/dist/shared/lib/i18n/messages/vi/common.js +141 -0
  1751. package/dist/shared/lib/i18n/messages/vi/common.js.map +1 -0
  1752. package/dist/shared/lib/i18n/messages/vi/file-upload.d.ts +17 -0
  1753. package/dist/shared/lib/i18n/messages/vi/file-upload.d.ts.map +1 -0
  1754. package/dist/shared/lib/i18n/messages/vi/file-upload.js +19 -0
  1755. package/dist/shared/lib/i18n/messages/vi/file-upload.js.map +1 -0
  1756. package/dist/shared/lib/i18n/messages/vi/student.d.ts +125 -0
  1757. package/dist/shared/lib/i18n/messages/vi/student.d.ts.map +1 -0
  1758. package/dist/shared/lib/i18n/messages/vi/student.js +134 -0
  1759. package/dist/shared/lib/i18n/messages/vi/student.js.map +1 -0
  1760. package/dist/shared/lib/i18n/messages/vi/terms.d.ts +27 -0
  1761. package/dist/shared/lib/i18n/messages/vi/terms.d.ts.map +1 -0
  1762. package/dist/shared/lib/i18n/messages/vi/terms.js +38 -0
  1763. package/dist/shared/lib/i18n/messages/vi/terms.js.map +1 -0
  1764. package/dist/shared/lib/i18n/messages/vi.d.ts +2293 -0
  1765. package/dist/shared/lib/i18n/messages/vi.d.ts.map +1 -0
  1766. package/dist/shared/lib/i18n/messages/vi.js +16 -0
  1767. package/dist/shared/lib/i18n/messages/vi.js.map +1 -0
  1768. package/dist/shared/lib/i18n/types.d.ts +4 -0
  1769. package/dist/shared/lib/i18n/types.d.ts.map +1 -0
  1770. package/dist/shared/lib/i18n/types.js +2 -0
  1771. package/dist/shared/lib/i18n/types.js.map +1 -0
  1772. package/dist/shared/lib/stores/examQuestionStore.d.ts +95 -0
  1773. package/dist/shared/lib/stores/examQuestionStore.d.ts.map +1 -0
  1774. package/dist/shared/lib/stores/examQuestionStore.js +213 -0
  1775. package/dist/shared/lib/stores/examQuestionStore.js.map +1 -0
  1776. package/dist/shared/lib/stores/localeStore.d.ts +20 -0
  1777. package/dist/shared/lib/stores/localeStore.d.ts.map +1 -0
  1778. package/dist/shared/lib/stores/localeStore.js +11 -0
  1779. package/dist/shared/lib/stores/localeStore.js.map +1 -0
  1780. package/dist/shared/lib/utils/public-page.d.ts +9 -0
  1781. package/dist/shared/lib/utils/public-page.d.ts.map +1 -0
  1782. package/dist/shared/lib/utils/public-page.js +45 -0
  1783. package/dist/shared/lib/utils/public-page.js.map +1 -0
  1784. package/dist/shared/lib/utils/question-transform-types.d.ts +398 -0
  1785. package/dist/shared/lib/utils/question-transform-types.d.ts.map +1 -0
  1786. package/dist/shared/lib/utils/question-transform-types.js +2 -0
  1787. package/dist/shared/lib/utils/question-transform-types.js.map +1 -0
  1788. package/dist/shared/lib/utils/question-transform.d.ts +31 -0
  1789. package/dist/shared/lib/utils/question-transform.d.ts.map +1 -0
  1790. package/dist/shared/lib/utils/question-transform.js +175 -0
  1791. package/dist/shared/lib/utils/question-transform.js.map +1 -0
  1792. package/dist/shared/lib/utils.d.ts +70 -0
  1793. package/dist/shared/lib/utils.d.ts.map +1 -0
  1794. package/dist/shared/lib/utils.js +169 -0
  1795. package/dist/shared/lib/utils.js.map +1 -0
  1796. package/dist/shared/lib/validation/choose-correct-answer.validation.d.ts +19 -0
  1797. package/dist/shared/lib/validation/choose-correct-answer.validation.d.ts.map +1 -0
  1798. package/dist/shared/lib/validation/choose-correct-answer.validation.js +112 -0
  1799. package/dist/shared/lib/validation/choose-correct-answer.validation.js.map +1 -0
  1800. package/dist/shared/lib/validation/label-the-picture.validation.d.ts +13 -0
  1801. package/dist/shared/lib/validation/label-the-picture.validation.d.ts.map +1 -0
  1802. package/dist/shared/lib/validation/label-the-picture.validation.js +20 -0
  1803. package/dist/shared/lib/validation/label-the-picture.validation.js.map +1 -0
  1804. package/dist/shared/lib/validation/listen-and-choose-from-answer-group.validation.d.ts +27 -0
  1805. package/dist/shared/lib/validation/listen-and-choose-from-answer-group.validation.d.ts.map +1 -0
  1806. package/dist/shared/lib/validation/listen-and-choose-from-answer-group.validation.js +47 -0
  1807. package/dist/shared/lib/validation/listen-and-choose-from-answer-group.validation.js.map +1 -0
  1808. package/dist/shared/lib/validation/listen-and-choose-objects-in-scene.validation.d.ts +18 -0
  1809. package/dist/shared/lib/validation/listen-and-choose-objects-in-scene.validation.d.ts.map +1 -0
  1810. package/dist/shared/lib/validation/listen-and-choose-objects-in-scene.validation.js +22 -0
  1811. package/dist/shared/lib/validation/listen-and-choose-objects-in-scene.validation.js.map +1 -0
  1812. package/dist/shared/lib/validation/listen-and-drag-objects-into-scene.validation.d.ts +23 -0
  1813. package/dist/shared/lib/validation/listen-and-drag-objects-into-scene.validation.d.ts.map +1 -0
  1814. package/dist/shared/lib/validation/listen-and-drag-objects-into-scene.validation.js +35 -0
  1815. package/dist/shared/lib/validation/listen-and-drag-objects-into-scene.validation.js.map +1 -0
  1816. package/dist/shared/lib/validation/listen-and-speak-answer.validation.d.ts +17 -0
  1817. package/dist/shared/lib/validation/listen-and-speak-answer.validation.d.ts.map +1 -0
  1818. package/dist/shared/lib/validation/listen-and-speak-answer.validation.js +41 -0
  1819. package/dist/shared/lib/validation/listen-and-speak-answer.validation.js.map +1 -0
  1820. package/dist/shared/lib/validation/listen-and-speak-compare-images.validation.d.ts +16 -0
  1821. package/dist/shared/lib/validation/listen-and-speak-compare-images.validation.d.ts.map +1 -0
  1822. package/dist/shared/lib/validation/listen-and-speak-compare-images.validation.js +46 -0
  1823. package/dist/shared/lib/validation/listen-and-speak-compare-images.validation.js.map +1 -0
  1824. package/dist/shared/lib/validation/listen-and-speak-image-group.validation.d.ts +22 -0
  1825. package/dist/shared/lib/validation/listen-and-speak-image-group.validation.d.ts.map +1 -0
  1826. package/dist/shared/lib/validation/listen-and-speak-image-group.validation.js +20 -0
  1827. package/dist/shared/lib/validation/listen-and-speak-image-group.validation.js.map +1 -0
  1828. package/dist/shared/lib/validation/listen-and-speak-info-exchange.validation.d.ts +27 -0
  1829. package/dist/shared/lib/validation/listen-and-speak-info-exchange.validation.d.ts.map +1 -0
  1830. package/dist/shared/lib/validation/listen-and-speak-info-exchange.validation.js +40 -0
  1831. package/dist/shared/lib/validation/listen-and-speak-info-exchange.validation.js.map +1 -0
  1832. package/dist/shared/lib/validation/listen-and-speak-odd-one-out.validation.d.ts +12 -0
  1833. package/dist/shared/lib/validation/listen-and-speak-odd-one-out.validation.d.ts.map +1 -0
  1834. package/dist/shared/lib/validation/listen-and-speak-odd-one-out.validation.js +33 -0
  1835. package/dist/shared/lib/validation/listen-and-speak-odd-one-out.validation.js.map +1 -0
  1836. package/dist/shared/lib/validation/listen-and-speak-question-list.validation.d.ts +18 -0
  1837. package/dist/shared/lib/validation/listen-and-speak-question-list.validation.d.ts.map +1 -0
  1838. package/dist/shared/lib/validation/listen-and-speak-question-list.validation.js +20 -0
  1839. package/dist/shared/lib/validation/listen-and-speak-question-list.validation.js.map +1 -0
  1840. package/dist/shared/lib/validation/listen-and-speak-with-story-images.validation.d.ts +11 -0
  1841. package/dist/shared/lib/validation/listen-and-speak-with-story-images.validation.d.ts.map +1 -0
  1842. package/dist/shared/lib/validation/listen-and-speak-with-story-images.validation.js +29 -0
  1843. package/dist/shared/lib/validation/listen-and-speak-with-story-images.validation.js.map +1 -0
  1844. package/dist/shared/lib/validation/look-picture-choose-correct-answer.validation.d.ts +10 -0
  1845. package/dist/shared/lib/validation/look-picture-choose-correct-answer.validation.d.ts.map +1 -0
  1846. package/dist/shared/lib/validation/look-picture-choose-correct-answer.validation.js +13 -0
  1847. package/dist/shared/lib/validation/look-picture-choose-correct-answer.validation.js.map +1 -0
  1848. package/dist/shared/lib/validation/look-picture-fill-blank-choose-answer.validation.d.ts +18 -0
  1849. package/dist/shared/lib/validation/look-picture-fill-blank-choose-answer.validation.d.ts.map +1 -0
  1850. package/dist/shared/lib/validation/look-picture-fill-blank-choose-answer.validation.js +48 -0
  1851. package/dist/shared/lib/validation/look-picture-fill-blank-choose-answer.validation.js.map +1 -0
  1852. package/dist/shared/lib/validation/read-and-color-objects.validation.d.ts +21 -0
  1853. package/dist/shared/lib/validation/read-and-color-objects.validation.d.ts.map +1 -0
  1854. package/dist/shared/lib/validation/read-and-color-objects.validation.js +30 -0
  1855. package/dist/shared/lib/validation/read-and-color-objects.validation.js.map +1 -0
  1856. package/dist/shared/lib/validation/read-displayed-content.validation.d.ts +8 -0
  1857. package/dist/shared/lib/validation/read-displayed-content.validation.d.ts.map +1 -0
  1858. package/dist/shared/lib/validation/read-displayed-content.validation.js +29 -0
  1859. package/dist/shared/lib/validation/read-displayed-content.validation.js.map +1 -0
  1860. package/dist/shared/lib/validation/speaking-conversation.validation.d.ts +30 -0
  1861. package/dist/shared/lib/validation/speaking-conversation.validation.d.ts.map +1 -0
  1862. package/dist/shared/lib/validation/speaking-conversation.validation.js +76 -0
  1863. package/dist/shared/lib/validation/speaking-conversation.validation.js.map +1 -0
  1864. package/dist/shared/lib/validation/speaking-describe-image.validation.d.ts +10 -0
  1865. package/dist/shared/lib/validation/speaking-describe-image.validation.d.ts.map +1 -0
  1866. package/dist/shared/lib/validation/speaking-describe-image.validation.js +32 -0
  1867. package/dist/shared/lib/validation/speaking-describe-image.validation.js.map +1 -0
  1868. package/dist/shared/lib/validation/spontaneous-qa.validation.d.ts +14 -0
  1869. package/dist/shared/lib/validation/spontaneous-qa.validation.d.ts.map +1 -0
  1870. package/dist/shared/lib/validation/spontaneous-qa.validation.js +49 -0
  1871. package/dist/shared/lib/validation/spontaneous-qa.validation.js.map +1 -0
  1872. package/dist/shared/lib/validation/word-fill-paragraph-default.validation.d.ts +18 -0
  1873. package/dist/shared/lib/validation/word-fill-paragraph-default.validation.d.ts.map +1 -0
  1874. package/dist/shared/lib/validation/word-fill-paragraph-default.validation.js +39 -0
  1875. package/dist/shared/lib/validation/word-fill-paragraph-default.validation.js.map +1 -0
  1876. package/dist/shared/lib/validation/word-fill-paragraph-with-options.validation.d.ts +16 -0
  1877. package/dist/shared/lib/validation/word-fill-paragraph-with-options.validation.d.ts.map +1 -0
  1878. package/dist/shared/lib/validation/word-fill-paragraph-with-options.validation.js +40 -0
  1879. package/dist/shared/lib/validation/word-fill-paragraph-with-options.validation.js.map +1 -0
  1880. package/dist/shared/lib/validation/word-fill-paragraph.validation.d.ts +20 -0
  1881. package/dist/shared/lib/validation/word-fill-paragraph.validation.d.ts.map +1 -0
  1882. package/dist/shared/lib/validation/word-fill-paragraph.validation.js +44 -0
  1883. package/dist/shared/lib/validation/word-fill-paragraph.validation.js.map +1 -0
  1884. package/dist/shared/lib/validation/word-ordering.validation.d.ts +11 -0
  1885. package/dist/shared/lib/validation/word-ordering.validation.d.ts.map +1 -0
  1886. package/dist/shared/lib/validation/word-ordering.validation.js +34 -0
  1887. package/dist/shared/lib/validation/word-ordering.validation.js.map +1 -0
  1888. package/dist/shared/types/branch.types.d.ts +154 -0
  1889. package/dist/shared/types/branch.types.d.ts.map +1 -0
  1890. package/dist/shared/types/branch.types.js +7 -0
  1891. package/dist/shared/types/branch.types.js.map +1 -0
  1892. package/dist/shared/types/common.types.d.ts +81 -0
  1893. package/dist/shared/types/common.types.d.ts.map +1 -0
  1894. package/dist/shared/types/common.types.js +51 -0
  1895. package/dist/shared/types/common.types.js.map +1 -0
  1896. package/dist/shared/types/entities/exam-schedule.types.d.ts +66 -0
  1897. package/dist/shared/types/entities/exam-schedule.types.d.ts.map +1 -0
  1898. package/dist/shared/types/entities/exam-schedule.types.js +6 -0
  1899. package/dist/shared/types/entities/exam-schedule.types.js.map +1 -0
  1900. package/dist/shared/types/entities/exam.types.d.ts +111 -0
  1901. package/dist/shared/types/entities/exam.types.d.ts.map +1 -0
  1902. package/dist/shared/types/entities/exam.types.js +2 -0
  1903. package/dist/shared/types/entities/exam.types.js.map +1 -0
  1904. package/dist/shared/types/entities/question.types.d.ts +359 -0
  1905. package/dist/shared/types/entities/question.types.d.ts.map +1 -0
  1906. package/dist/shared/types/entities/question.types.js +5 -0
  1907. package/dist/shared/types/entities/question.types.js.map +1 -0
  1908. package/dist/shared/types/entities/result.types.d.ts +41 -0
  1909. package/dist/shared/types/entities/result.types.d.ts.map +1 -0
  1910. package/dist/shared/types/entities/result.types.js +5 -0
  1911. package/dist/shared/types/entities/result.types.js.map +1 -0
  1912. package/dist/shared/types/entities/user.types.d.ts +42 -0
  1913. package/dist/shared/types/entities/user.types.d.ts.map +1 -0
  1914. package/dist/shared/types/entities/user.types.js +5 -0
  1915. package/dist/shared/types/entities/user.types.js.map +1 -0
  1916. package/dist/shared/types/exam-taking.types.d.ts +39 -0
  1917. package/dist/shared/types/exam-taking.types.d.ts.map +1 -0
  1918. package/dist/shared/types/exam-taking.types.js +3 -0
  1919. package/dist/shared/types/exam-taking.types.js.map +1 -0
  1920. package/dist/shared/types/history.types.d.ts +21 -0
  1921. package/dist/shared/types/history.types.d.ts.map +1 -0
  1922. package/dist/shared/types/history.types.js +35 -0
  1923. package/dist/shared/types/history.types.js.map +1 -0
  1924. package/dist/shared/types/index.d.ts +102 -0
  1925. package/dist/shared/types/index.d.ts.map +1 -0
  1926. package/dist/shared/types/index.js +2 -0
  1927. package/dist/shared/types/index.js.map +1 -0
  1928. package/dist/shared/types/questions/choose-correct-adjective.d.ts +38 -0
  1929. package/dist/shared/types/questions/choose-correct-adjective.d.ts.map +1 -0
  1930. package/dist/shared/types/questions/choose-correct-adjective.js +5 -0
  1931. package/dist/shared/types/questions/choose-correct-adjective.js.map +1 -0
  1932. package/dist/shared/types/questions/choose-the-correct-answer.d.ts +73 -0
  1933. package/dist/shared/types/questions/choose-the-correct-answer.d.ts.map +1 -0
  1934. package/dist/shared/types/questions/choose-the-correct-answer.js +10 -0
  1935. package/dist/shared/types/questions/choose-the-correct-answer.js.map +1 -0
  1936. package/dist/shared/types/questions/fill-missing-words-in-grid.d.ts +72 -0
  1937. package/dist/shared/types/questions/fill-missing-words-in-grid.d.ts.map +1 -0
  1938. package/dist/shared/types/questions/fill-missing-words-in-grid.js +12 -0
  1939. package/dist/shared/types/questions/fill-missing-words-in-grid.js.map +1 -0
  1940. package/dist/shared/types/questions/index.d.ts +29 -0
  1941. package/dist/shared/types/questions/index.d.ts.map +1 -0
  1942. package/dist/shared/types/questions/index.js +41 -0
  1943. package/dist/shared/types/questions/index.js.map +1 -0
  1944. package/dist/shared/types/questions/listen-and-speak-answer.d.ts +47 -0
  1945. package/dist/shared/types/questions/listen-and-speak-answer.d.ts.map +1 -0
  1946. package/dist/shared/types/questions/listen-and-speak-answer.js +2 -0
  1947. package/dist/shared/types/questions/listen-and-speak-answer.js.map +1 -0
  1948. package/dist/shared/types/questions/listen-and-speak-compare-images.d.ts +23 -0
  1949. package/dist/shared/types/questions/listen-and-speak-compare-images.d.ts.map +1 -0
  1950. package/dist/shared/types/questions/listen-and-speak-compare-images.js +2 -0
  1951. package/dist/shared/types/questions/listen-and-speak-compare-images.js.map +1 -0
  1952. package/dist/shared/types/questions/listen-and-speak-image-group.d.ts +30 -0
  1953. package/dist/shared/types/questions/listen-and-speak-image-group.d.ts.map +1 -0
  1954. package/dist/shared/types/questions/listen-and-speak-image-group.js +2 -0
  1955. package/dist/shared/types/questions/listen-and-speak-image-group.js.map +1 -0
  1956. package/dist/shared/types/questions/listen-and-speak-info-exchange.d.ts +30 -0
  1957. package/dist/shared/types/questions/listen-and-speak-info-exchange.d.ts.map +1 -0
  1958. package/dist/shared/types/questions/listen-and-speak-info-exchange.js +4 -0
  1959. package/dist/shared/types/questions/listen-and-speak-info-exchange.js.map +1 -0
  1960. package/dist/shared/types/questions/listen-and-speak-odd-one-out.d.ts +14 -0
  1961. package/dist/shared/types/questions/listen-and-speak-odd-one-out.d.ts.map +1 -0
  1962. package/dist/shared/types/questions/listen-and-speak-odd-one-out.js +4 -0
  1963. package/dist/shared/types/questions/listen-and-speak-odd-one-out.js.map +1 -0
  1964. package/dist/shared/types/questions/listen-and-speak-question-list.d.ts +19 -0
  1965. package/dist/shared/types/questions/listen-and-speak-question-list.d.ts.map +1 -0
  1966. package/dist/shared/types/questions/listen-and-speak-question-list.js +2 -0
  1967. package/dist/shared/types/questions/listen-and-speak-question-list.js.map +1 -0
  1968. package/dist/shared/types/questions/listen-and-speak-with-story-images.d.ts +14 -0
  1969. package/dist/shared/types/questions/listen-and-speak-with-story-images.d.ts.map +1 -0
  1970. package/dist/shared/types/questions/listen-and-speak-with-story-images.js +4 -0
  1971. package/dist/shared/types/questions/listen-and-speak-with-story-images.js.map +1 -0
  1972. package/dist/shared/types/questions/look-picture-choose-correct-answer.d.ts +39 -0
  1973. package/dist/shared/types/questions/look-picture-choose-correct-answer.d.ts.map +1 -0
  1974. package/dist/shared/types/questions/look-picture-choose-correct-answer.js +6 -0
  1975. package/dist/shared/types/questions/look-picture-choose-correct-answer.js.map +1 -0
  1976. package/dist/shared/types/questions/look-picture-fill-blank-choose-answer.d.ts +64 -0
  1977. package/dist/shared/types/questions/look-picture-fill-blank-choose-answer.d.ts.map +1 -0
  1978. package/dist/shared/types/questions/look-picture-fill-blank-choose-answer.js +10 -0
  1979. package/dist/shared/types/questions/look-picture-fill-blank-choose-answer.js.map +1 -0
  1980. package/dist/shared/types/questions/look-picture-fill-word-hint.d.ts +58 -0
  1981. package/dist/shared/types/questions/look-picture-fill-word-hint.d.ts.map +1 -0
  1982. package/dist/shared/types/questions/look-picture-fill-word-hint.js +8 -0
  1983. package/dist/shared/types/questions/look-picture-fill-word-hint.js.map +1 -0
  1984. package/dist/shared/types/questions/read-displayed-content.d.ts +68 -0
  1985. package/dist/shared/types/questions/read-displayed-content.d.ts.map +1 -0
  1986. package/dist/shared/types/questions/read-displayed-content.js +2 -0
  1987. package/dist/shared/types/questions/read-displayed-content.js.map +1 -0
  1988. package/dist/shared/types/questions/speaking-conversation.d.ts +51 -0
  1989. package/dist/shared/types/questions/speaking-conversation.d.ts.map +1 -0
  1990. package/dist/shared/types/questions/speaking-conversation.js +8 -0
  1991. package/dist/shared/types/questions/speaking-conversation.js.map +1 -0
  1992. package/dist/shared/types/questions/speaking-describe-image.d.ts +41 -0
  1993. package/dist/shared/types/questions/speaking-describe-image.d.ts.map +1 -0
  1994. package/dist/shared/types/questions/speaking-describe-image.js +2 -0
  1995. package/dist/shared/types/questions/speaking-describe-image.js.map +1 -0
  1996. package/dist/shared/types/questions/spontaneous-qa.d.ts +80 -0
  1997. package/dist/shared/types/questions/spontaneous-qa.d.ts.map +1 -0
  1998. package/dist/shared/types/questions/spontaneous-qa.js +2 -0
  1999. package/dist/shared/types/questions/spontaneous-qa.js.map +1 -0
  2000. package/dist/shared/types/questions/write-correct-verb-form.d.ts +110 -0
  2001. package/dist/shared/types/questions/write-correct-verb-form.d.ts.map +1 -0
  2002. package/dist/shared/types/questions/write-correct-verb-form.js +13 -0
  2003. package/dist/shared/types/questions/write-correct-verb-form.js.map +1 -0
  2004. package/dist/shared/types/role.types.d.ts +61 -0
  2005. package/dist/shared/types/role.types.d.ts.map +1 -0
  2006. package/dist/shared/types/role.types.js +2 -0
  2007. package/dist/shared/types/role.types.js.map +1 -0
  2008. package/dist/shared/types/structure-management.d.ts +218 -0
  2009. package/dist/shared/types/structure-management.d.ts.map +1 -0
  2010. package/dist/shared/types/structure-management.js +29 -0
  2011. package/dist/shared/types/structure-management.js.map +1 -0
  2012. package/dist/shared/types/student.types.d.ts +396 -0
  2013. package/dist/shared/types/student.types.d.ts.map +1 -0
  2014. package/dist/shared/types/student.types.js +55 -0
  2015. package/dist/shared/types/student.types.js.map +1 -0
  2016. package/dist/shared/types/teacher-dashboard-rooms.d.ts +61 -0
  2017. package/dist/shared/types/teacher-dashboard-rooms.d.ts.map +1 -0
  2018. package/dist/shared/types/teacher-dashboard-rooms.js +3 -0
  2019. package/dist/shared/types/teacher-dashboard-rooms.js.map +1 -0
  2020. package/package.json +144 -0
@@ -0,0 +1,2293 @@
1
+ declare const en: {
2
+ readonly 'terms.page.title': "Terms of Service";
3
+ readonly 'terms.page.lastUpdated': "Last updated: April 15, 2026";
4
+ readonly 'terms.page.backToHome': "Back to Home";
5
+ readonly 'terms.section1.title': "1. Introduction";
6
+ readonly 'terms.section1.content': "Ocean Edu Exam (\"Platform\") is an online examination system developed and operated by Ocean Edu International English Language System. By accessing and using the Platform, you agree to comply with the terms and conditions set forth in this document. If you do not agree with any of these terms, please stop using the Platform.";
7
+ readonly 'terms.section2.title': "2. Terms of Use";
8
+ readonly 'terms.section2.content': "To use the Platform, you must meet the following conditions:\n• Be at least 6 years old. Users under 13 years of age require consent and supervision from a parent or legal guardian.\n• Provide accurate and complete registration information.\n• Accept and comply with all of these Terms of Service.\n• Not use the Platform for illegal purposes or in violation of the rights of others.";
9
+ readonly 'terms.section3.title': "3. User Account";
10
+ readonly 'terms.section3.content': "You are responsible for:\n• Keeping your login credentials (email/username and password) secure.\n• Not sharing your account with others.\n• Notifying us immediately if you discover unauthorized access to your account.\n• Providing accurate personal information and updating it when changes occur.\n\nWe are not responsible for any damages arising from your failure to secure your account.";
11
+ readonly 'terms.section4.title': "4. Examination Rules";
12
+ readonly 'terms.section4.content': "When participating in exams on the Platform, you agree to:\n• Complete the exam by yourself without assistance from others.\n• Not use reference materials, assistive software, or any form of cheating.\n• Not copy, screenshot, record, or share exam content in any form.\n• Comply with the time limits and specific rules of each examination.\n\nViolation of exam rules may result in exam result cancellation and account suspension.";
13
+ readonly 'terms.section5.title': "5. Intellectual Property";
14
+ readonly 'terms.section5.content': "All content on the Platform, including but not limited to: exam papers, questions, images, audio, video, interface, source code, and related materials are the intellectual property of Ocean Edu or its licensed partners.\n\nYou may not:\n• Copy, distribute, modify, or create derivative works from Platform content.\n• Use content for commercial purposes without written consent.\n• Extract system data using automated tools (crawlers, bots, scrapers).";
15
+ readonly 'terms.section6.title': "6. Privacy & Security";
16
+ readonly 'terms.section6.content': "We are committed to protecting your personal information:\n• We collect minimal data necessary to provide the service (full name, email, exam results).\n• We do not sell or share personal information with third parties for commercial purposes.\n• We apply technical security measures to protect user data.\n• Exam result data is stored securely and accessible only to the user or authorized administrators.\n\nPlease contact us if you wish to request deletion of your personal data.";
17
+ readonly 'terms.section7.title': "7. Limitation of Liability";
18
+ readonly 'terms.section7.content': "The Platform is provided on an \"as-is\" basis. We strive to ensure stable system operation but do not guarantee:\n• 100% uninterrupted service availability.\n• Absence of technical errors or system issues.\n• Exam results absolutely and accurately reflecting actual ability.\n\nWe are not liable for indirect damages arising from the use or inability to use the Platform.";
19
+ readonly 'terms.section8.title': "8. Account Termination";
20
+ readonly 'terms.section8.content': "We reserve the right to temporarily suspend or permanently delete your account if:\n• You violate these Terms of Service.\n• Cheating behavior is detected in examinations.\n• The Platform is used to harass, sabotage, or harm other users.\n• False information is provided during registration.\n\nYou may also request account deletion at any time by contacting us.";
21
+ readonly 'terms.section9.title': "9. Changes to Terms";
22
+ readonly 'terms.section9.content': "We reserve the right to update or modify these Terms of Service at any time. When significant changes are made:\n• We will notify you on the Platform or via your registered email.\n• The update date will be clearly noted at the top of the page.\n• Your continued use of the Platform after changes take effect constitutes acceptance of the new terms.";
23
+ readonly 'terms.section10.title': "10. Contact";
24
+ readonly 'terms.section10.content': "If you have any questions or concerns about these Terms of Service, please contact us:\n\n• Email: support@ocean.edu.vn\n• Hotline: 1900 0340\n• Website: https://ocean.edu.vn";
25
+ readonly 'fileUpload.success': "File uploaded successfully!";
26
+ readonly 'fileUpload.error': "File upload error: {message}";
27
+ readonly 'fileUpload.invalidFormat': "Invalid file format. Please select a file with format: {accept}";
28
+ readonly 'fileUpload.tooLarge': "File too large! Maximum size: {maxSize}MB";
29
+ readonly 'fileUpload.uploaded': "Uploaded: {name}";
30
+ readonly 'fileUpload.audio.success': "Audio file uploaded successfully!";
31
+ readonly 'fileUpload.audio.missingExamId': "Missing examId for audio upload";
32
+ readonly 'fileUpload.audio.error': "Unable to upload audio file. Please try again.";
33
+ readonly 'fileUpload.audio.timeout': "Audio upload timed out. Please try again.";
34
+ readonly 'fileUpload.audio.networkError': "Network error. Please check your connection and try again.";
35
+ readonly 'fileUpload.audio.tooLarge': "Audio file exceeds the allowed size. Please select a smaller file.";
36
+ readonly 'fileUpload.audio.noUrl': "No audio URL available to play";
37
+ readonly 'fileUpload.audio.playError': "Unable to play audio file";
38
+ readonly 'student.room.join.enterCode': "Please enter the room code";
39
+ readonly 'student.room.join.success': "Joined exam room successfully!";
40
+ readonly 'student.room.join.invalidCode': "Invalid room code";
41
+ readonly 'student.room.join.noAccess': "You do not have access to this exam room";
42
+ readonly 'student.room.join.unavailable': "Exam room is not available";
43
+ readonly 'student.room.join.error': "Unable to join exam room";
44
+ readonly 'student.exam.entry.loadError': "Unable to load exam room information";
45
+ readonly 'student.exam.entry.notStarted': "Exam has not started yet";
46
+ readonly 'student.exam.entry.expired': "Exam time has expired";
47
+ readonly 'student.exam.entry.startError': "Unable to start the exam";
48
+ readonly 'student.exam.entry.otherRoom': "You have an ongoing exam in another room. Please complete it first.";
49
+ readonly 'student.exam.entry.continue': "Continuing the exam!";
50
+ readonly 'student.exam.entry.restartError': "Unable to restart the exam";
51
+ readonly 'student.exam.take.noActive': "No active exam in progress";
52
+ readonly 'student.exam.take.otherRoom': "You have another exam in progress";
53
+ readonly 'student.exam.take.submitted': "Exam has been submitted";
54
+ readonly 'student.exam.take.timeExpired': "Time is up";
55
+ readonly 'student.exam.take.loadError': "Error loading the exam";
56
+ readonly 'student.exam.take.autoSubmit': "Time's up! Submitting...";
57
+ readonly 'student.exam.take.timeWarning': "5 minutes left! Please finish your exam.";
58
+ readonly 'student.exam.take.saved': "Saved";
59
+ readonly 'student.exam.take.saveError': "Save error";
60
+ readonly 'student.exam.take.submitSuccess': "Exam submitted successfully!";
61
+ readonly 'student.exam.take.submittedAIGradingInProgress': "Submitted! AI is grading your Speaking answers, please wait a moment...";
62
+ readonly 'student.exam.take.submitError': "Unable to submit. Please try again.";
63
+ readonly 'student.schedule.exportSuccess': "Exported exam schedule to Google Calendar";
64
+ readonly 'student.audio.maxPlayReached': "You can only listen up to {maxPlayCount} times!";
65
+ readonly 'student.contest.discover.title': "Discover Contests";
66
+ readonly 'student.contest.discover.description': "Explore and join public contests";
67
+ readonly 'student.contest.discover.search': "Search contests...";
68
+ readonly 'student.contest.discover.noContests': "No contests available at the moment";
69
+ readonly 'student.contest.discover.upcoming': "Upcoming";
70
+ readonly 'student.contest.discover.inProgress': "In Progress";
71
+ readonly 'student.contest.discover.completed': "Completed";
72
+ readonly 'student.contest.discover.all': "All";
73
+ readonly 'student.contest.discover.register': "Register";
74
+ readonly 'student.contest.discover.registered': "Registered";
75
+ readonly 'student.contest.discover.viewDetail': "View Details";
76
+ readonly 'student.contest.discover.participants': "{count} participants";
77
+ readonly 'student.contest.discover.timeRemaining': "{time} remaining";
78
+ readonly 'student.contest.discover.myContestsTitle': "My Contests";
79
+ readonly 'student.contest.discover.myContestsDescription': "Contests you are currently participating in";
80
+ readonly 'student.contest.discover.viewAll': "View All";
81
+ readonly 'student.contest.discover.noMyContests': "You have not joined any contests yet";
82
+ readonly 'student.contest.discover.noDescription': "No description yet";
83
+ readonly 'student.contest.my.title': "My Contests";
84
+ readonly 'student.contest.my.description': "Contests you are participating in or have participated in";
85
+ readonly 'student.contest.my.participating': "Participating";
86
+ readonly 'student.contest.my.completed': "Completed";
87
+ readonly 'student.contest.my.all': "All";
88
+ readonly 'student.contest.my.noContests': "You have not joined any contests yet";
89
+ readonly 'student.contest.my.goDiscover': "Discover Contests";
90
+ readonly 'student.contest.my.enterContest': "Enter Contest";
91
+ readonly 'student.contest.detail.schedules': "Schedules";
92
+ readonly 'student.contest.detail.rooms': "Exam Rooms";
93
+ readonly 'student.contest.detail.results': "Results";
94
+ readonly 'student.contest.detail.history': "Exam History";
95
+ readonly 'student.contest.detail.overview': "Overview";
96
+ readonly 'student.contest.detail.notFound': "Contest not found";
97
+ readonly 'student.contest.detail.backToContests': "Back to Contests";
98
+ readonly 'student.contest.detail.registerNow': "Register Now";
99
+ readonly 'student.contest.detail.alreadyRegistered': "Registered ✓";
100
+ readonly 'student.contest.detail.registering': "Registering...";
101
+ readonly 'student.contest.detail.startDate': "Start";
102
+ readonly 'student.contest.detail.endDate': "End";
103
+ readonly 'student.contest.detail.examRooms': "Exam Rooms";
104
+ readonly 'student.contest.detail.participants': "Participants";
105
+ readonly 'student.contest.detail.aboutContest': "About This Contest";
106
+ readonly 'student.contest.detail.examFlow': "Your Journey";
107
+ readonly 'student.contest.detail.flowStep1Title': "Explore";
108
+ readonly 'student.contest.detail.flowStep1Desc': "Read contest info and rules";
109
+ readonly 'student.contest.detail.flowStep2Title': "Register";
110
+ readonly 'student.contest.detail.flowStep2Desc': "Sign up to participate";
111
+ readonly 'student.contest.detail.flowStep3Title': "Enter Room";
112
+ readonly 'student.contest.detail.flowStep3Desc': "Join your exam room when it's time";
113
+ readonly 'student.contest.detail.flowStep4Title': "Take Exam";
114
+ readonly 'student.contest.detail.flowStep4Desc': "Complete the exam within time limit";
115
+ readonly 'student.contest.detail.flowStep5Title': "Get Results";
116
+ readonly 'student.contest.detail.flowStep5Desc': "View your score and ranking";
117
+ readonly 'student.contest.detail.statsTitle': "Contest Statistics";
118
+ readonly 'student.contest.detail.avgScore': "Average Score";
119
+ readonly 'student.contest.detail.highestScore': "Highest Score";
120
+ readonly 'student.contest.detail.completionRate': "Completion Rate";
121
+ readonly 'student.contest.detail.countdown.days': "Days";
122
+ readonly 'student.contest.detail.countdown.hours': "Hours";
123
+ readonly 'student.contest.detail.countdown.minutes': "Mins";
124
+ readonly 'student.contest.detail.countdown.seconds': "Secs";
125
+ readonly 'student.contest.detail.countdown.startsIn': "Contest starts in";
126
+ readonly 'student.contest.detail.countdown.endsIn': "Contest ends in";
127
+ readonly 'student.contest.detail.countdown.ended': "Contest has ended";
128
+ readonly 'student.contest.detail.quickActions': "Quick Actions";
129
+ readonly 'student.contest.detail.viewRooms': "View Rooms";
130
+ readonly 'student.contest.detail.viewSchedule': "View Schedule";
131
+ readonly 'student.contest.detail.viewResults': "View Results";
132
+ readonly 'student.contest.visibility.internal': "Internal";
133
+ readonly 'student.contest.visibility.internalBadge': "Internal Contest";
134
+ readonly 'student.contest.visibility.registerPendingApproval': "Registration pending approval";
135
+ readonly 'student.contest.visibility.pendingApprovalDesc': "Your registration request has been submitted and is pending admin/mod approval.";
136
+ readonly 'student.contest.visibility.registerRequiresApproval': "Register (requires approval)";
137
+ readonly 'student.contest.visibility.approvalRequired': "Approval required";
138
+ readonly 'student.contest.visibility.approvalRequiredDesc': "This is an internal contest. After registering, you need admin or mod approval to participate.";
139
+ readonly 'student.contest.visibility.privateTitle': "Private Contest";
140
+ readonly 'student.contest.visibility.privateDesc': "This contest is private. You cannot view details or register. Please contact admin/mod to be added.";
141
+ readonly 'student.contest.visibility.accessDenied': "Access Denied";
142
+ readonly 'student.contest.visibility.accessDeniedDesc': "You do not have permission to view this contest.";
143
+ readonly 'student.contest.discover.registerSuccess': "Successfully registered for the contest!";
144
+ readonly 'student.contest.discover.registerPendingSuccess': "Registration request submitted! Please wait for admin/mod approval.";
145
+ readonly 'student.contest.discover.registerError': "Unable to register for the contest. Please try again.";
146
+ readonly 'student.contest.discover.cancelRegistration': "Cancel Registration";
147
+ readonly 'student.contest.discover.cancelRegistrationSuccess': "Successfully cancelled contest registration!";
148
+ readonly 'student.contest.discover.cancelRegistrationError': "Unable to cancel registration. Please try again.";
149
+ readonly 'student.contest.discover.cancelRegistrationExamAttempted': "Cannot cancel registration because you have already attempted the exam.";
150
+ readonly 'student.contest.discover.cancelRegistrationNotFound': "Contest registration not found.";
151
+ readonly 'student.contest.discover.cancelling': "Cancelling...";
152
+ readonly 'student.contest.registration.pending': "Pending Approval";
153
+ readonly 'student.contest.registration.pendingBadge': "⏳ Pending";
154
+ readonly 'student.contest.registration.pendingDesc': "Your registration request has been submitted and is waiting for admin approval.";
155
+ readonly 'student.contest.registration.rejected': "Registration Rejected";
156
+ readonly 'student.contest.registration.rejectedBadge': "✗ Rejected";
157
+ readonly 'student.contest.registration.rejectedDesc': "Your registration request has been rejected. Please contact admin for details.";
158
+ readonly 'student.contest.registration.approved': "Approved";
159
+ readonly 'admin.user.create.success': "User created successfully!";
160
+ readonly 'admin.user.update.success': "User updated successfully!";
161
+ readonly 'admin.user.update.error': "An error occurred while updating the user!";
162
+ readonly 'admin.user.delete.success': "User deleted successfully!";
163
+ readonly 'admin.user.delete.error': "An error occurred while deleting the user!";
164
+ readonly 'admin.exam.create.error': "Unable to create exam. Please try again!";
165
+ readonly 'admin.exam.update.error': "Unable to update exam. Please try again!";
166
+ readonly 'admin.exam.delete.error': "Unable to delete exam. Please try again!";
167
+ readonly 'admin.exam.template.update.error': "Unable to update template. Please try again!";
168
+ readonly 'admin.exam.copy.success': "Exam copied successfully: {name} ({count} questions)";
169
+ readonly 'admin.exam.copy.error': "Unable to copy exam. Please try again!";
170
+ readonly 'admin.exam.toggle.activated': "Exam \"{name}\" activated!";
171
+ readonly 'admin.exam.toggle.deactivated': "Exam \"{name}\" deactivated!";
172
+ readonly 'admin.exam.toggle.error': "Unable to change exam status. Please try again!";
173
+ readonly 'admin.exam.variants.delete.success': "Successfully deleted {count} shuffled variants!";
174
+ readonly 'admin.exam.variants.delete.empty': "No shuffled variants to delete.";
175
+ readonly 'admin.exam.variants.delete.error': "Unable to delete shuffled variants. Please try again!";
176
+ readonly 'admin.question.batchCreate.partial': "Created {successCount}/{total} questions successfully. {errorCount} failed.";
177
+ readonly 'admin.question.batchCreate.itemError': "Question {index}: {error}";
178
+ readonly 'admin.question.batchCreate.error': "Error creating questions: {message}";
179
+ readonly 'admin.questionBank.update.success': "Question updated successfully!";
180
+ readonly 'admin.questionBank.update.error': "Unable to update question. Please try again!";
181
+ readonly 'admin.questionBank.delete.success': "Question deleted successfully!";
182
+ readonly 'admin.questionBank.delete.error': "Unable to delete question. Please try again!";
183
+ readonly 'admin.questionBank.create.missingInfo': "Missing information";
184
+ readonly 'admin.questionBank.create.success': "Success!";
185
+ readonly 'admin.questionBank.create.error': "Error";
186
+ readonly 'admin.questionBank.create.preview': "Preview";
187
+ readonly 'admin.questionBank.page.title': "Question Bank";
188
+ readonly 'admin.questionBank.page.subtitle': "Manage and organize questions for exams";
189
+ readonly 'admin.questionBank.btn.add': "Add question";
190
+ readonly 'admin.questionBank.fetch.error': "Error";
191
+ readonly 'admin.questionBank.fetch.errorDesc': "Unable to load question list";
192
+ readonly 'admin.questionBank.delete.successMsg': "Question deleted";
193
+ readonly 'admin.questionBank.delete.successDesc': "Deleted question {code}";
194
+ readonly 'admin.questionBank.delete.errorMsg': "Error";
195
+ readonly 'admin.questionBank.delete.errorDesc': "Unable to delete question";
196
+ readonly 'admin.questionBank.update.successMsg': "Updated";
197
+ readonly 'admin.questionBank.update.successDesc': "Updated question {code}!";
198
+ readonly 'admin.questionBank.update.errorMsg': "Error";
199
+ readonly 'admin.questionBank.update.errorDesc': "Unable to update question";
200
+ readonly 'admin.questionBank.create.successMsg': "Question created";
201
+ readonly 'admin.questionBank.create.successDesc': "Successfully created question {code}!";
202
+ readonly 'admin.questionBank.stats.totalQuestions': "Total Questions";
203
+ readonly 'admin.questionBank.stats.inBank': "In question bank";
204
+ readonly 'admin.questionBank.stats.totalUsage': "Usage Count";
205
+ readonly 'admin.questionBank.stats.inExams': "In exams";
206
+ readonly 'admin.questionBank.stats.avgPoints': "Avg Points";
207
+ readonly 'admin.questionBank.stats.avgScore': "Average score";
208
+ readonly 'admin.questionBank.stats.difficultyDistribution': "Difficulty Distribution";
209
+ readonly 'admin.questionBank.stats.questions': "questions";
210
+ readonly 'admin.questionBank.difficulty.easy': "Easy";
211
+ readonly 'admin.questionBank.difficulty.medium': "Medium";
212
+ readonly 'admin.questionBank.difficulty.hard': "Hard";
213
+ readonly 'admin.questionBank.table.title': "Question List";
214
+ readonly 'admin.questionBank.table.loading': "Loading...";
215
+ readonly 'admin.questionBank.table.showing': "Showing {count} / {total} questions";
216
+ readonly 'admin.questionBank.table.empty': "No questions found";
217
+ readonly 'admin.questionBank.table.loadingData': "Loading data...";
218
+ readonly 'admin.questionBank.table.created': "Created: {date}";
219
+ readonly 'admin.questionBank.table.pointsUnit': "pts";
220
+ readonly 'admin.questionBank.table.usageUnit': "times";
221
+ readonly 'admin.questionBank.filter.searchPlaceholder': "Search by content...";
222
+ readonly 'admin.questionBank.filter.typePlaceholder': "Question type";
223
+ readonly 'admin.questionBank.filter.typeAll': "All types";
224
+ readonly 'admin.questionBank.filter.difficultyPlaceholder': "Difficulty";
225
+ readonly 'admin.questionBank.filter.difficultyAll': "All difficulties";
226
+ readonly 'admin.questionBank.filter.skillPlaceholder': "Skill";
227
+ readonly 'admin.questionBank.filter.skillAll': "All skills";
228
+ readonly 'admin.questionBank.filter.clear': "Clear filters";
229
+ readonly 'admin.questionBank.col.code': "CODE";
230
+ readonly 'admin.questionBank.col.title': "Title";
231
+ readonly 'admin.questionBank.col.type': "TYPE";
232
+ readonly 'admin.questionBank.col.difficulty': "DIFFICULTY";
233
+ readonly 'admin.questionBank.col.skill': "SKILL";
234
+ readonly 'admin.questionBank.col.points': "POINTS";
235
+ readonly 'admin.questionBank.col.usage': "USAGE";
236
+ readonly 'admin.questionBank.col.actions': "ACTIONS";
237
+ readonly 'admin.questionBank.action.view': "View details";
238
+ readonly 'admin.questionBank.action.edit': "Edit";
239
+ readonly 'admin.questionBank.action.delete': "Delete";
240
+ readonly 'admin.questionBank.dialog.add.title': "Add New Question";
241
+ readonly 'admin.questionBank.dialog.add.section1': "Basic Information";
242
+ readonly 'admin.questionBank.dialog.add.section2': "Question Type";
243
+ readonly 'admin.questionBank.dialog.add.section3': "Question Content";
244
+ readonly 'admin.questionBank.dialog.add.code': "Question Code";
245
+ readonly 'admin.questionBank.dialog.add.codePlaceholder': "E.g.: QB001";
246
+ readonly 'admin.questionBank.dialog.add.titleLabel': "Title";
247
+ readonly 'admin.questionBank.dialog.add.titlePlaceholder': "Brief description of the question";
248
+ readonly 'admin.questionBank.dialog.add.difficulty': "Difficulty Level";
249
+ readonly 'admin.questionBank.dialog.add.skill': "Skill";
250
+ readonly 'admin.questionBank.dialog.add.typePlaceholder': "Select question type...";
251
+ readonly 'admin.questionBank.dialog.add.typeNoOptions': "No question types for {skill}";
252
+ readonly 'admin.questionBank.dialog.add.noTypeSelected': "No question type selected";
253
+ readonly 'admin.questionBank.dialog.add.selectTypeHint': "Please select a question type in step 2";
254
+ readonly 'admin.questionBank.dialog.add.required': "Required";
255
+ readonly 'admin.questionBank.dialog.add.cancel': "Cancel";
256
+ readonly 'admin.questionBank.dialog.add.saving': "Saving...";
257
+ readonly 'admin.questionBank.dialog.add.save': "Add question";
258
+ readonly 'admin.questionBank.dialog.add.codeError': "Please enter question code";
259
+ readonly 'admin.questionBank.dialog.add.titleError': "Please enter title";
260
+ readonly 'admin.questionBank.dialog.add.typeError': "Please select question type";
261
+ readonly 'admin.questionBank.dialog.edit.title': "Edit Question";
262
+ readonly 'admin.questionBank.dialog.edit.section1': "Basic Information";
263
+ readonly 'admin.questionBank.dialog.edit.section2': "Question Type";
264
+ readonly 'admin.questionBank.dialog.edit.section3': "Question Content";
265
+ readonly 'admin.questionBank.dialog.edit.code': "Question Code";
266
+ readonly 'admin.questionBank.dialog.edit.codePlaceholder': "Enter question code";
267
+ readonly 'admin.questionBank.dialog.edit.titleLabel': "Title";
268
+ readonly 'admin.questionBank.dialog.edit.titlePlaceholder': "Brief description of the question";
269
+ readonly 'admin.questionBank.dialog.edit.difficulty': "Difficulty Level";
270
+ readonly 'admin.questionBank.dialog.edit.skill': "Skill";
271
+ readonly 'admin.questionBank.dialog.edit.unchangeable': "(Cannot be changed)";
272
+ readonly 'admin.questionBank.dialog.edit.required': "Required";
273
+ readonly 'admin.questionBank.dialog.edit.cancel': "Cancel";
274
+ readonly 'admin.questionBank.dialog.edit.saving': "Saving...";
275
+ readonly 'admin.questionBank.dialog.edit.save': "Save changes";
276
+ readonly 'admin.questionBank.dialog.edit.codeError': "Please enter question code";
277
+ readonly 'admin.questionBank.dialog.edit.titleError': "Please enter title";
278
+ readonly 'admin.questionBank.dialog.delete.title': "Confirm Delete Question";
279
+ readonly 'admin.questionBank.dialog.delete.message': "Are you sure you want to delete question";
280
+ readonly 'admin.questionBank.dialog.delete.warning': "This action cannot be undone.";
281
+ readonly 'admin.questionBank.dialog.delete.cancel': "Cancel";
282
+ readonly 'admin.questionBank.dialog.delete.deleting': "Deleting...";
283
+ readonly 'admin.questionBank.dialog.delete.confirm': "Delete question";
284
+ readonly 'admin.questionBank.dialog.view.title': "Question Details";
285
+ readonly 'admin.questionBank.dialog.view.points': "points";
286
+ readonly 'admin.questionBank.dialog.view.usage': "Used {count} times";
287
+ readonly 'admin.questionBank.dialog.view.preview': "Question Preview";
288
+ readonly 'admin.questionBank.dialog.view.explanation': "Answer Explanation";
289
+ readonly 'admin.questionBank.createPage.title': "Create New Question";
290
+ readonly 'admin.questionBank.createPage.subtitle': "Add question to the Bank for reuse in exam sets";
291
+ readonly 'admin.questionBank.createPage.breadcrumb.list': "Question Bank";
292
+ readonly 'admin.questionBank.createPage.breadcrumb.create': "Create New";
293
+ readonly 'admin.questionBank.createPage.infoTitle': "Creating question type: {type}";
294
+ readonly 'admin.questionBank.createPage.infoDesc': "Fill in the complete question information below. You can preview the question before saving.";
295
+ readonly 'admin.questionBank.createPage.loading': "Loading...";
296
+ readonly 'admin.questionBank.createPage.back': "Go back";
297
+ readonly 'admin.questionBank.createPage.preview': "Preview";
298
+ readonly 'admin.questionBank.createPage.saving': "Saving...";
299
+ readonly 'admin.questionBank.createPage.save': "Save question";
300
+ readonly 'admin.questionBank.createPage.cancelTitle': "Cancel question creation?";
301
+ readonly 'admin.questionBank.createPage.cancelMessage': "You have unsaved changes. If you cancel, all information will be lost. Are you sure you want to cancel?";
302
+ readonly 'admin.questionBank.createPage.continueEditing': "Continue editing";
303
+ readonly 'admin.questionBank.createPage.cancelAndExit': "Cancel and exit";
304
+ readonly 'admin.questionBank.createPage.missingInfoDesc': "Please fill in all question information";
305
+ readonly 'admin.questionBank.createPage.savedDesc': "Saved question \"{title}\" to the bank";
306
+ readonly 'admin.questionBank.createPage.saveErrorDesc': "Unable to save question. Please try again.";
307
+ readonly 'admin.questionBank.createPage.previewDesc': "Preview feature is under development";
308
+ readonly 'admin.schedule.update.success': "Schedule updated successfully!";
309
+ readonly 'admin.schedule.delete.success': "Deleted schedule {id}";
310
+ readonly 'admin.schedules.title': "Schedule Management";
311
+ readonly 'admin.schedules.subtitle': "Schedule and manage exam times for contests";
312
+ readonly 'admin.schedules.viewCalendar': "Calendar";
313
+ readonly 'admin.schedules.viewList': "List";
314
+ readonly 'admin.schedules.stats.totalSchedules': "Total Schedules";
315
+ readonly 'admin.schedules.stats.totalSchedulesDesc': "All exam schedules";
316
+ readonly 'admin.schedules.stats.confirmed': "Confirmed";
317
+ readonly 'admin.schedules.stats.confirmedDesc': "Schedules ready";
318
+ readonly 'admin.schedules.stats.totalStudents': "Total Students";
319
+ readonly 'admin.schedules.stats.totalStudentsDesc': "Assigned to schedules";
320
+ readonly 'admin.schedules.filters.searchPlaceholder': "Search schedules...";
321
+ readonly 'admin.schedules.filters.skill': "Skill";
322
+ readonly 'admin.schedules.filters.allSkills': "All skills";
323
+ readonly 'admin.schedules.filters.status': "Status";
324
+ readonly 'admin.schedules.filters.allStatuses': "All statuses";
325
+ readonly 'admin.schedules.filters.statusOpen': "Open";
326
+ readonly 'admin.schedules.filters.statusLocked': "Locked";
327
+ readonly 'admin.schedules.filters.clear': "Clear filters";
328
+ readonly 'admin.schedules.calendar.today': "Today";
329
+ readonly 'admin.schedules.calendar.daySun': "Sun";
330
+ readonly 'admin.schedules.calendar.dayMon': "Mon";
331
+ readonly 'admin.schedules.calendar.dayTue': "Tue";
332
+ readonly 'admin.schedules.calendar.dayWed': "Wed";
333
+ readonly 'admin.schedules.calendar.dayThu': "Thu";
334
+ readonly 'admin.schedules.calendar.dayFri': "Fri";
335
+ readonly 'admin.schedules.calendar.daySat': "Sat";
336
+ readonly 'admin.schedules.calendar.loading': "Loading schedules...";
337
+ readonly 'admin.schedules.calendar.noLimit': "No limit";
338
+ readonly 'admin.schedules.list.title': "Schedule List";
339
+ readonly 'admin.schedules.list.loading': "Loading...";
340
+ readonly 'admin.schedules.list.loadingList': "Loading schedule list...";
341
+ readonly 'admin.schedules.list.showing': "Showing {current} / {total} schedules";
342
+ readonly 'admin.schedules.list.empty': "No schedules found";
343
+ readonly 'admin.schedules.list.locked': "Locked";
344
+ readonly 'admin.schedules.list.open': "Open";
345
+ readonly 'admin.schedules.list.contest': "Contest:";
346
+ readonly 'admin.schedules.list.exam': "Exam:";
347
+ readonly 'admin.schedules.list.startTime': "Start:";
348
+ readonly 'admin.schedules.list.endTime': "End:";
349
+ readonly 'admin.schedules.list.noLimit': "No limit";
350
+ readonly 'admin.schedules.list.locationUnknown': "Not specified";
351
+ readonly 'admin.schedules.list.noSupervisor': "Not assigned";
352
+ readonly 'admin.schedules.list.participants': "{count} participants";
353
+ readonly 'admin.schedules.list.page': "Page {current} / {total}";
354
+ readonly 'admin.schedules.list.prev': "Previous";
355
+ readonly 'admin.schedules.list.next': "Next";
356
+ readonly 'admin.schedules.dialog.detailTitle': "Schedule Details";
357
+ readonly 'admin.schedules.dialog.room': "Exam Room";
358
+ readonly 'admin.schedules.dialog.contest': "Contest";
359
+ readonly 'admin.schedules.dialog.exam': "Exam";
360
+ readonly 'admin.schedules.dialog.startTime': "Start Time";
361
+ readonly 'admin.schedules.dialog.endTime': "End Time";
362
+ readonly 'admin.schedules.dialog.duration': "Duration";
363
+ readonly 'admin.schedules.dialog.status': "Status";
364
+ readonly 'admin.schedules.dialog.participantCount': "Participants";
365
+ readonly 'admin.schedules.dialog.participants': "{count} participants";
366
+ readonly 'admin.schedules.dialog.notAssigned': "Not assigned";
367
+ readonly 'admin.schedules.dialog.notSet': "Not specified";
368
+ readonly 'admin.schedules.dialog.noLimit': "No limit";
369
+ readonly 'admin.schedules.dialog.locked': "Locked";
370
+ readonly 'admin.schedules.dialog.open': "Open";
371
+ readonly 'admin.schedules.dialog.durationMinutes': "{duration} minutes";
372
+ readonly 'admin.schedules.dialog.location': "Location";
373
+ readonly 'admin.schedules.dialog.supervisor': "Supervisor";
374
+ readonly 'admin.schedules.dialog.noSupervisor': "Not assigned";
375
+ readonly 'admin.schedules.view.title': "Schedule Details";
376
+ readonly 'admin.schedules.view.contest': "Contest";
377
+ readonly 'admin.schedules.view.skill': "Skill";
378
+ readonly 'admin.schedules.view.status': "Status";
379
+ readonly 'admin.schedules.view.examDate': "Exam Date";
380
+ readonly 'admin.schedules.view.startTime': "Start Time";
381
+ readonly 'admin.schedules.view.endTime': "End Time";
382
+ readonly 'admin.schedules.view.location': "Location";
383
+ readonly 'admin.schedules.view.supervisor': "Supervisor";
384
+ readonly 'admin.schedules.view.studentCount': "Student Count";
385
+ readonly 'admin.schedules.view.duration': "Duration";
386
+ readonly 'admin.schedules.view.durationMinutes': "{duration} minutes";
387
+ readonly 'admin.schedules.edit.title': "Edit Schedule";
388
+ readonly 'admin.schedules.edit.contest': "Contest";
389
+ readonly 'admin.schedules.edit.skill': "Skill";
390
+ readonly 'admin.schedules.edit.skillPlaceholder': "Select skill";
391
+ readonly 'admin.schedules.edit.examDate': "Exam Date";
392
+ readonly 'admin.schedules.edit.startTime': "Start Time";
393
+ readonly 'admin.schedules.edit.endTime': "End Time";
394
+ readonly 'admin.schedules.edit.room': "Exam Room";
395
+ readonly 'admin.schedules.edit.roomPlaceholder': "Select room";
396
+ readonly 'admin.schedules.edit.invigilator': "Invigilator";
397
+ readonly 'admin.schedules.edit.invigilatorPlaceholder': "Select invigilator";
398
+ readonly 'admin.schedules.edit.capacity': "Capacity";
399
+ readonly 'admin.schedules.edit.status': "Status";
400
+ readonly 'admin.schedules.edit.statusPlaceholder': "Select status";
401
+ readonly 'admin.schedules.edit.location': "Location";
402
+ readonly 'admin.schedules.edit.locationPlaceholder': "Enter location (e.g., Floor 1, Building A)";
403
+ readonly 'admin.schedules.edit.notes': "Notes";
404
+ readonly 'admin.schedules.edit.notesPlaceholder': "Enter notes about the schedule (optional)";
405
+ readonly 'admin.schedules.edit.cancel': "Cancel";
406
+ readonly 'admin.schedules.edit.save': "Save Changes";
407
+ readonly 'admin.schedules.delete.title': "Confirm Delete Schedule";
408
+ readonly 'admin.schedules.delete.message': "Are you sure you want to delete schedule";
409
+ readonly 'admin.schedules.delete.warning': "This action cannot be undone.";
410
+ readonly 'admin.schedules.delete.cancel': "Cancel";
411
+ readonly 'admin.schedules.delete.confirm': "Delete Schedule";
412
+ readonly 'admin.schedules.utils.notSet': "Not set";
413
+ readonly 'admin.schedules.utils.noLimit': "No limit";
414
+ readonly 'admin.schedules.utils.statusDraft': "Draft";
415
+ readonly 'admin.schedules.utils.statusConfirmed': "Confirmed";
416
+ readonly 'admin.schedules.utils.statusInProgress': "In Progress";
417
+ readonly 'admin.schedules.utils.statusCompleted': "Completed";
418
+ readonly 'admin.schedules.utils.statusCancelled': "Cancelled";
419
+ readonly 'admin.report.exam.loadError': "Unable to load exam report data";
420
+ readonly 'admin.report.exam.exportError': "Unable to export report";
421
+ readonly 'admin.report.room.loadError': "Unable to load room report data";
422
+ readonly 'admin.report.room.exportSuccess': "Exported {format} report successfully";
423
+ readonly 'admin.report.room.exportError': "Unable to export report";
424
+ readonly 'admin.report.branch.loadError': "Unable to load branch report data";
425
+ readonly 'admin.report.branch.exportError': "Unable to export report";
426
+ readonly 'admin.user.resetPassword.success': "Password reset for {name}!";
427
+ readonly 'admin.user.resetPassword.error': "An error occurred while resetting the password!";
428
+ readonly 'admin.user.lock.success': "Account {name} has been locked";
429
+ readonly 'admin.user.unlock.success': "Account {name} has been unlocked";
430
+ readonly 'admin.user.toggleStatus.error': "An error occurred while changing account status!";
431
+ readonly 'admin.user.export.success': "Excel file exported successfully!";
432
+ readonly 'admin.user.export.error': "An error occurred while exporting the Excel file!";
433
+ readonly 'admin.user.syncEBM.success': "EBM sync successful!";
434
+ readonly 'admin.user.syncEBM.error': "An error occurred while syncing EBM!";
435
+ readonly 'admin.users.title': "User Management";
436
+ readonly 'admin.users.subtitle': "Manage Admin, Teacher and Student accounts";
437
+ readonly 'admin.users.table.title': "User List";
438
+ readonly 'admin.users.table.loading': "Loading data...";
439
+ readonly 'admin.users.table.showing': "Showing {count} / {total} users";
440
+ readonly 'admin.users.table.empty': "No users found";
441
+ readonly 'admin.users.table.neverLoggedIn': "Never logged in";
442
+ readonly 'admin.users.table.exportExcel': "Export Excel";
443
+ readonly 'admin.users.table.syncEBM': "Sync EBM";
444
+ readonly 'admin.users.table.addUser': "Add User";
445
+ readonly 'admin.users.col.userInfo': "USER INFO";
446
+ readonly 'admin.users.col.branch': "BRANCH";
447
+ readonly 'admin.users.col.contact': "CONTACT";
448
+ readonly 'admin.users.col.role': "ROLE";
449
+ readonly 'admin.users.col.source': "SOURCE";
450
+ readonly 'admin.users.col.status': "STATUS";
451
+ readonly 'admin.users.col.lastLogin': "LAST LOGIN";
452
+ readonly 'admin.users.col.actions': "ACTIONS";
453
+ readonly 'admin.users.filter.searchPlaceholder': "Search by email, username, phone...";
454
+ readonly 'admin.users.filter.allRoles': "All roles";
455
+ readonly 'admin.users.filter.allStatuses': "All statuses";
456
+ readonly 'admin.users.filter.active': "Active";
457
+ readonly 'admin.users.filter.inactive': "Inactive";
458
+ readonly 'admin.users.filter.clearFilters': "Clear filters";
459
+ readonly 'admin.users.filter.searchLabel': "Search:";
460
+ readonly 'admin.users.filter.roleLabel': "Role:";
461
+ readonly 'admin.users.filter.statusLabel': "Status:";
462
+ readonly 'admin.users.role.systemAdmin': "System Admin";
463
+ readonly 'admin.users.role.admin': "Admin";
464
+ readonly 'admin.users.role.teacher': "Teacher";
465
+ readonly 'admin.users.role.student': "Student";
466
+ readonly 'admin.users.action.view': "View details";
467
+ readonly 'admin.users.action.viewDetail': "View user detail page";
468
+ readonly 'admin.users.action.edit': "Edit";
469
+ readonly 'admin.users.action.resetPassword': "Reset password";
470
+ readonly 'admin.users.action.lock': "Lock account";
471
+ readonly 'admin.users.action.unlock': "Unlock account";
472
+ readonly 'admin.users.action.delete': "Delete user";
473
+ readonly 'admin.users.field.branch': "Branch";
474
+ readonly 'admin.users.field.branchPlaceholder': "Search and select branch...";
475
+ readonly 'admin.users.field.fullName': "Full name";
476
+ readonly 'admin.users.field.fullNamePlaceholder': "Enter full name...";
477
+ readonly 'admin.users.field.email': "Email";
478
+ readonly 'admin.users.field.emailPlaceholder': "Enter email...";
479
+ readonly 'admin.users.field.phone': "Phone number";
480
+ readonly 'admin.users.field.phonePlaceholder': "Enter phone number...";
481
+ readonly 'admin.users.field.address': "Address";
482
+ readonly 'admin.users.field.addressPlaceholder': "Enter address...";
483
+ readonly 'admin.users.field.usernamePlaceholder': "Enter username...";
484
+ readonly 'admin.users.field.usernameHint': "Start with a letter, only letters, numbers and _ allowed";
485
+ readonly 'admin.users.field.password': "Password";
486
+ readonly 'admin.users.field.passwordPlaceholder': "Enter password...";
487
+ readonly 'admin.users.field.passwordHint': "At least 8 characters including uppercase, lowercase, number and special character";
488
+ readonly 'admin.users.field.role': "Role";
489
+ readonly 'admin.users.field.rolePlaceholder': "Select role...";
490
+ readonly 'admin.users.field.activeStatus': "Account status";
491
+ readonly 'admin.users.field.activeHint': "Account will be active immediately after creation";
492
+ readonly 'admin.users.field.inactiveHint': "Account will be locked, can be activated later";
493
+ readonly 'admin.users.field.activeStatusDesc': "Account is active";
494
+ readonly 'admin.users.field.inactiveStatusDesc': "Account is locked";
495
+ readonly 'admin.users.field.registrationSource': "Registration source";
496
+ readonly 'admin.users.field.createdAt': "Created at";
497
+ readonly 'admin.users.field.updatedAt': "Last updated";
498
+ readonly 'admin.users.field.status': "Status";
499
+ readonly 'admin.users.field.dateOfBirth': "Date of birth";
500
+ readonly 'admin.users.field.dateOfBirthPlaceholder': "Select date of birth...";
501
+ readonly 'admin.users.add.title': "Add New User";
502
+ readonly 'admin.users.add.desc': "Fill in the information to create a new user account";
503
+ readonly 'admin.users.add.submitting': "Creating...";
504
+ readonly 'admin.users.add.submit': "Add User";
505
+ readonly 'admin.users.edit.title': "Edit User";
506
+ readonly 'admin.users.edit.desc': "Update user information: {name}";
507
+ readonly 'admin.users.edit.submitting': "Updating...";
508
+ readonly 'admin.users.edit.submit': "Update";
509
+ readonly 'admin.users.delete.title': "Confirm Delete User";
510
+ readonly 'admin.users.delete.desc': "Are you sure you want to delete user {name}?";
511
+ readonly 'admin.users.delete.warning': "This action cannot be undone.";
512
+ readonly 'admin.users.delete.confirm': "Delete User";
513
+ readonly 'admin.users.view.title': "User Information";
514
+ readonly 'admin.users.view.subtitle': "Account details";
515
+ readonly 'admin.users.view.close': "Close";
516
+ readonly 'admin.users.resetPassword.title': "Reset Password";
517
+ readonly 'admin.users.resetPassword.desc': "Enter a new password for user {name}";
518
+ readonly 'admin.users.resetPassword.label': "New password";
519
+ readonly 'admin.users.resetPassword.placeholder': "Enter new password...";
520
+ readonly 'admin.users.resetPassword.hint': "Password should be at least 8 characters including uppercase, lowercase and numbers";
521
+ readonly 'admin.users.resetPassword.submit': "Reset Password";
522
+ readonly 'admin.users.lock.title': "Lock Account";
523
+ readonly 'admin.users.lock.desc': "Are you sure you want to lock the account {name}? The user will not be able to log in.";
524
+ readonly 'admin.users.lock.confirm': "Lock Account";
525
+ readonly 'admin.users.unlock.title': "Unlock Account";
526
+ readonly 'admin.users.unlock.desc': "Are you sure you want to unlock the account {name}? The user will be able to log in.";
527
+ readonly 'admin.users.unlock.confirm': "Unlock Account";
528
+ readonly 'admin.reports.title': "Reports";
529
+ readonly 'admin.reports.subtitle': "View overview and analyze exam results";
530
+ readonly 'admin.reports.viewDetail': "View details →";
531
+ readonly 'admin.reports.overview.title': "Overview Report";
532
+ readonly 'admin.reports.overview.desc': "System-wide statistics";
533
+ readonly 'admin.reports.overview.content': "View exam results overview, student numbers, average scores over time";
534
+ readonly 'admin.reports.class.title': "Class Report";
535
+ readonly 'admin.reports.class.desc': "Details by class";
536
+ readonly 'admin.reports.class.content': "Analyze exam results, rankings and learning progress by class";
537
+ readonly 'admin.reports.branch.title': "Branch Report";
538
+ readonly 'admin.reports.branch.desc': "Compare between branches";
539
+ readonly 'admin.reports.branch.content': "Compare performance and learning results between branches";
540
+ readonly 'admin.reports.exam.title': "Exam Report";
541
+ readonly 'admin.reports.exam.desc': "Statistics by exam";
542
+ readonly 'admin.reports.exam.content': "Statistics on results, scores and pass rates by exam";
543
+ readonly 'admin.reports.room.title': "Room Report";
544
+ readonly 'admin.reports.room.desc': "Details by room";
545
+ readonly 'admin.reports.room.content': "Statistics on exam results, scores, pass rates by room";
546
+ readonly 'admin.reports.competency.title': "Student Competency Report";
547
+ readonly 'admin.reports.competency.desc': "Skill analysis by student";
548
+ readonly 'admin.reports.competency.content': "Analyze scores by 4 skills: Reading, Listening, Writing, Speaking per student";
549
+ readonly 'admin.reports.room.pageTitle': "Room Report";
550
+ readonly 'admin.reports.room.pageSubtitle': "Detailed statistics about exam rooms";
551
+ readonly 'admin.reports.room.export': "Export report";
552
+ readonly 'admin.reports.room.exporting': "Exporting...";
553
+ readonly 'admin.reports.room.exportExcel': "Export Excel (.xlsx)";
554
+ readonly 'admin.reports.room.exportCsv': "Export CSV (.csv)";
555
+ readonly 'admin.reports.room.viewFull': "View full report";
556
+ readonly 'admin.reports.room.totalRooms': "Total Rooms";
557
+ readonly 'admin.reports.room.totalStudents': "Total Students";
558
+ readonly 'admin.reports.room.totalSubmitted': "Submitted";
559
+ readonly 'admin.reports.room.avgScore': "Avg Score";
560
+ readonly 'admin.reports.room.passRate': "Pass Rate";
561
+ readonly 'admin.reports.room.avgDuration': "Avg Duration";
562
+ readonly 'admin.reports.room.scoreDistribution': "Score Distribution";
563
+ readonly 'admin.reports.room.topRooms': "Top Scoring Rooms";
564
+ readonly 'admin.reports.room.noData': "No data yet";
565
+ readonly 'admin.reports.room.excellent': "Excellent (9-10)";
566
+ readonly 'admin.reports.room.good': "Good (7-8.9)";
567
+ readonly 'admin.reports.room.average': "Average (5-6.9)";
568
+ readonly 'admin.reports.room.poor': "Poor (<5)";
569
+ readonly 'admin.reports.room.searchPlaceholder': "Search rooms...";
570
+ readonly 'admin.reports.room.statusPlaceholder': "Status";
571
+ readonly 'admin.reports.room.statusAll': "All statuses";
572
+ readonly 'admin.reports.room.statusScheduled': "Scheduled";
573
+ readonly 'admin.reports.room.statusInProgress': "In Progress";
574
+ readonly 'admin.reports.room.statusCompleted': "Completed";
575
+ readonly 'admin.reports.room.clearFilters': "Clear filters";
576
+ readonly 'admin.reports.room.roomList': "Room List";
577
+ readonly 'admin.reports.room.colRoom': "Room";
578
+ readonly 'admin.reports.room.colContest': "Contest";
579
+ readonly 'admin.reports.room.colStatus': "Status";
580
+ readonly 'admin.reports.room.colStudents': "Students";
581
+ readonly 'admin.reports.room.colAvgScore': "Avg Score";
582
+ readonly 'admin.reports.room.colHighLow': "High/Low";
583
+ readonly 'admin.reports.room.colPassRate': "Pass Rate";
584
+ readonly 'admin.reports.room.colTeachers': "Proctors";
585
+ readonly 'admin.reports.room.empty': "No rooms found";
586
+ readonly 'admin.reports.room.loading': "Loading data...";
587
+ readonly 'admin.reports.room.dialogTitle': "Room Report";
588
+ readonly 'admin.reports.room.dialogDesc': "Detailed exam results statistics by room";
589
+ readonly 'admin.reports.exporting': "Exporting...";
590
+ readonly 'admin.reports.exportExcel': "Export Excel";
591
+ readonly 'admin.reports.loading': "Loading data...";
592
+ readonly 'admin.reports.close': "Close";
593
+ readonly 'admin.reports.common.avgScore': "Avg Score";
594
+ readonly 'admin.reports.common.passRate': "Pass Rate";
595
+ readonly 'admin.reports.common.totalStudents': "Total Students";
596
+ readonly 'admin.reports.common.students': "Students";
597
+ readonly 'admin.reports.common.teachers': "Teachers";
598
+ readonly 'admin.reports.common.classes': "Classes";
599
+ readonly 'admin.reports.stats.totalExams': "Total Exams";
600
+ readonly 'admin.reports.stats.totalStudents': "Participants";
601
+ readonly 'admin.reports.stats.avgScore': "Average Score";
602
+ readonly 'admin.reports.stats.passRate': "Pass Rate";
603
+ readonly 'admin.reports.stats.vsLastMonth': "vs last month";
604
+ readonly 'admin.reports.overview.dialogTitle': "Overview Report";
605
+ readonly 'admin.reports.overview.dialogDesc': "System-wide statistics for Ocean Edu";
606
+ readonly 'admin.reports.overview.totalExams': "Total Exams";
607
+ readonly 'admin.reports.overview.totalStudents': "Students";
608
+ readonly 'admin.reports.overview.avgScore': "System Avg Score";
609
+ readonly 'admin.reports.overview.passRate': "Pass Rate";
610
+ readonly 'admin.reports.overview.vsPrevPeriod': "vs previous period";
611
+ readonly 'admin.reports.overview.questions': "Questions";
612
+ readonly 'admin.reports.overview.classes': "Classes";
613
+ readonly 'admin.reports.overview.examRooms': "Exam Rooms";
614
+ readonly 'admin.reports.overview.activeContests': "Active Contests";
615
+ readonly 'admin.reports.overview.examsByLevel': "Statistics by Exam Level";
616
+ readonly 'admin.reports.overview.examsUnit': "exams";
617
+ readonly 'admin.reports.overview.questionsByType': "Question Type Distribution";
618
+ readonly 'admin.reports.overview.questionsUnit': "questions";
619
+ readonly 'admin.reports.overview.recentActivity': "Recent Activity";
620
+ readonly 'admin.reports.overview.minutesAgo': "{count} minutes ago";
621
+ readonly 'admin.reports.overview.hoursAgo': "{count} hours ago";
622
+ readonly 'admin.reports.overview.daysAgo': "{count} days ago";
623
+ readonly 'admin.reports.class.dialogTitle': "Class Report";
624
+ readonly 'admin.reports.class.dialogDesc': "Learning performance statistics by class";
625
+ readonly 'admin.reports.class.gradeAll': "All";
626
+ readonly 'admin.reports.class.totalClasses': "Total Classes";
627
+ readonly 'admin.reports.class.totalStudents': "Total Students";
628
+ readonly 'admin.reports.class.avgPassRate': "Avg Pass Rate";
629
+ readonly 'admin.reports.class.classList': "Class List";
630
+ readonly 'admin.reports.class.colClass': "Class";
631
+ readonly 'admin.reports.class.colLevel': "Level";
632
+ readonly 'admin.reports.class.colSize': "Size";
633
+ readonly 'admin.reports.class.colAvgScore': "Avg Score";
634
+ readonly 'admin.reports.class.colPassRate': "Pass Rate";
635
+ readonly 'admin.reports.class.colTeacher': "Teacher";
636
+ readonly 'admin.reports.class.topStudents': "Top 5 Outstanding Students";
637
+ readonly 'admin.reports.class.totalExams': "Exams";
638
+ readonly 'admin.reports.class.searchPlaceholder': "Search by class name or code...";
639
+ readonly 'admin.reports.branch.dialogTitle': "Branch Report";
640
+ readonly 'admin.reports.branch.dialogDesc': "Compare performance between branches";
641
+ readonly 'admin.reports.branch.totalBranches': "Total Branches";
642
+ readonly 'admin.reports.branch.totalStudents': "Total Students";
643
+ readonly 'admin.reports.branch.totalClasses': "Total Classes";
644
+ readonly 'admin.reports.branch.avgScore': "Overall Avg Score";
645
+ readonly 'admin.reports.branch.comparison': "Branch Comparison";
646
+ readonly 'admin.reports.exam.dialogTitle': "Exam Report";
647
+ readonly 'admin.reports.exam.dialogDesc': "Results statistics by contest";
648
+ readonly 'admin.reports.exam.statusDraft': "Draft";
649
+ readonly 'admin.reports.exam.statusPublished': "Published";
650
+ readonly 'admin.reports.exam.statusActive': "In Progress";
651
+ readonly 'admin.reports.exam.statusCompleted': "Completed";
652
+ readonly 'admin.reports.exam.totalContests': "Total Contests";
653
+ readonly 'admin.reports.exam.totalStudents': "Total Students";
654
+ readonly 'admin.reports.exam.avgScore': "Avg Score";
655
+ readonly 'admin.reports.exam.passRate': "Pass Rate";
656
+ readonly 'admin.reports.exam.contestList': "Contest List";
657
+ readonly 'admin.reports.exam.code': "Code: {code}";
658
+ readonly 'admin.reports.exam.noData': "No data yet";
659
+ readonly 'admin.reports.competency.dialogTitle': "Student Competency Report";
660
+ readonly 'admin.reports.competency.dialogDesc': "Skill-based score analysis";
661
+ readonly 'admin.reports.competency.searchPlaceholder': "Search by name or email...";
662
+ readonly 'admin.reports.competency.totalStudents': "Total Students";
663
+ readonly 'admin.reports.competency.avgScore': "Avg Score";
664
+ readonly 'admin.reports.competency.passRate': "Pass Rate";
665
+ readonly 'admin.reports.competency.bestSkill': "Best Skill";
666
+ readonly 'admin.reports.competency.skillDistribution': "Score Distribution by Skill";
667
+ readonly 'admin.reports.competency.avgScoreTooltip': "Avg Score";
668
+ readonly 'admin.reports.competency.studentList': "Student List ({count})";
669
+ readonly 'admin.reports.competency.colName': "Name";
670
+ readonly 'admin.reports.competency.colClass': "Class";
671
+ readonly 'admin.reports.competency.colReading': "Reading";
672
+ readonly 'admin.reports.competency.colListening': "Listening";
673
+ readonly 'admin.reports.competency.colWriting': "Writing";
674
+ readonly 'admin.reports.competency.colSpeaking': "Speaking";
675
+ readonly 'admin.reports.competency.colTotal': "Total";
676
+ readonly 'admin.reports.competency.colExams': "Exams";
677
+ readonly 'admin.reports.competency.noData': "No data";
678
+ readonly 'admin.reports.competency.page': "Page {page} / {totalPages}";
679
+ readonly 'admin.reports.competency.prev': "Previous";
680
+ readonly 'admin.reports.competency.next': "Next";
681
+ readonly 'admin.reports.competency.reading': "Reading";
682
+ readonly 'admin.reports.competency.listening': "Listening";
683
+ readonly 'admin.reports.competency.writing': "Writing";
684
+ readonly 'admin.reports.competency.speaking': "Speaking";
685
+ readonly 'admin.reports.competency.pageTitle': "Student Competency Report";
686
+ readonly 'admin.reports.competency.pageSubtitle': "Score analysis by skill";
687
+ readonly 'admin.reports.competency.backToReports': "Back to Reports";
688
+ readonly 'admin.reports.competency.export': "Export Excel";
689
+ readonly 'admin.reports.competency.exporting': "Exporting...";
690
+ readonly 'admin.reports.competency.atRisk': "At-Risk Students";
691
+ readonly 'admin.reports.competency.atRiskDesc': "Below 5.0";
692
+ readonly 'admin.reports.competency.radarTitle': "Competency by Skill";
693
+ readonly 'admin.reports.competency.radarClassAvg': "This Class";
694
+ readonly 'admin.reports.competency.radarSysAvg': "System Average";
695
+ readonly 'admin.reports.competency.trendTitle': "Score Trend Over Time";
696
+ readonly 'admin.reports.competency.trend3m': "3 Months";
697
+ readonly 'admin.reports.competency.trend6m': "6 Months";
698
+ readonly 'admin.reports.competency.trend12m': "12 Months";
699
+ readonly 'admin.reports.competency.skillBreakdownTitle': "Skill Analysis";
700
+ readonly 'admin.reports.competency.strengthsTitle': "Strengths";
701
+ readonly 'admin.reports.competency.weaknessesTitle': "Weaknesses";
702
+ readonly 'admin.reports.competency.noStrengths': "No data";
703
+ readonly 'admin.reports.competency.noWeaknesses': "No data";
704
+ readonly 'admin.reports.competency.bandExcellent': "Excellent";
705
+ readonly 'admin.reports.competency.bandGood': "Good";
706
+ readonly 'admin.reports.competency.bandAverage': "Average";
707
+ readonly 'admin.reports.competency.bandWeak': "Weak";
708
+ readonly 'admin.reports.competency.colTrend': "Trend";
709
+ readonly 'admin.reports.competency.colBand': "Band";
710
+ readonly 'admin.reports.competency.filterAll': "All";
711
+ readonly 'admin.reports.competency.filterWeak': "Needs Support";
712
+ readonly 'admin.reports.competency.filterGood': "Good - Excellent";
713
+ readonly 'admin.reports.competency.searchPlaceholder2': "Find student...";
714
+ readonly 'admin.reports.competency.examRoomFilter.placeholder': "All exam rooms";
715
+ readonly 'admin.reports.competency.examRoomFilter.searchPlaceholder': "Search exam rooms...";
716
+ readonly 'admin.reports.competency.examRoomFilter.noRooms': "No exam rooms found";
717
+ readonly 'admin.reports.competency.examRoomFilter.allRooms': "All exam rooms";
718
+ readonly 'admin.reports.period.week': "This week";
719
+ readonly 'admin.reports.period.month': "This month";
720
+ readonly 'admin.reports.period.quarter': "This quarter";
721
+ readonly 'admin.reports.period.year': "This year";
722
+ readonly 'admin.reports.period.custom': "Custom";
723
+ readonly 'admin.reports.period.fromDate': "From date";
724
+ readonly 'admin.reports.period.toDate': "To date";
725
+ readonly 'admin.dashboard.title': "Admin Dashboard";
726
+ readonly 'admin.dashboard.subtitle': "Manage Ocean Edu online exam system";
727
+ readonly 'admin.dashboard.totalStudents': "Total Students";
728
+ readonly 'admin.dashboard.totalStudents.monthly': "+{count} new students this month";
729
+ readonly 'admin.dashboard.totalStudents.growth': "M{lastMonth} {action} {percent}% vs M{prevMonth}";
730
+ readonly 'admin.dashboard.totalExams': "Exams";
731
+ readonly 'admin.dashboard.totalExams.weekly': "+{count} new exams this week";
732
+ readonly 'admin.dashboard.examRooms': "Exam Rooms";
733
+ readonly 'admin.dashboard.examRooms.active': "{count} rooms active";
734
+ readonly 'admin.dashboard.teachers': "Teachers";
735
+ readonly 'admin.dashboard.teachers.yearly': "+{count} new teachers this year";
736
+ readonly 'admin.dashboard.contests': "Contests";
737
+ readonly 'admin.dashboard.contests.ongoing': "{count} ongoing";
738
+ readonly 'admin.dashboard.inProgressRooms': "Rooms In Progress";
739
+ readonly 'admin.dashboard.inProgressRooms.status': "In progress";
740
+ readonly 'admin.dashboard.studentsInExam': "Students In Exam";
741
+ readonly 'admin.dashboard.studentsInExam.rooms': "In {count} rooms";
742
+ readonly 'admin.dashboard.pendingGrading': "Pending Grading";
743
+ readonly 'admin.dashboard.pendingGrading.action': "Needs attention";
744
+ readonly 'admin.dashboard.userGrowth.title': "User Growth";
745
+ readonly 'admin.dashboard.userGrowth.desc': "Student and teacher count over the last 6 months";
746
+ readonly 'admin.dashboard.userGrowth.students': "Students";
747
+ readonly 'admin.dashboard.userGrowth.teachers': "Teachers";
748
+ readonly 'admin.dashboard.examStats.title': "Exam Statistics";
749
+ readonly 'admin.dashboard.examStats.desc': "Completed and pending exams by subject";
750
+ readonly 'admin.dashboard.examStats.completed': "Completed";
751
+ readonly 'admin.dashboard.examStats.pending': "Pending";
752
+ readonly 'admin.dashboard.recentActivity.title': "Recent Activity";
753
+ readonly 'admin.dashboard.recentActivity.desc': "Latest activities in the system";
754
+ readonly 'admin.dashboard.recentActivity.colActivity': "Activity";
755
+ readonly 'admin.dashboard.recentActivity.colUser': "User";
756
+ readonly 'admin.dashboard.recentActivity.colStatus': "Status";
757
+ readonly 'admin.dashboard.recentActivity.colTime': "Time";
758
+ readonly 'admin.dashboard.recentActivity.empty': "No activities yet";
759
+ readonly 'admin.dashboard.growth.increase': "increased";
760
+ readonly 'admin.dashboard.growth.decrease': "decreased";
761
+ readonly 'admin.dashboard.growth.unchanged': "unchanged";
762
+ readonly 'admin.dashboard.time.justNow': "just now";
763
+ readonly 'admin.dashboard.time.minutesAgo': "{count} minutes ago";
764
+ readonly 'admin.dashboard.time.hoursAgo': "{count} hours ago";
765
+ readonly 'admin.dashboard.time.daysAgo': "{count} days ago";
766
+ readonly 'admin.dashboard.time.weeksAgo': "{count} weeks ago";
767
+ readonly 'admin.dashboard.time.monthsAgo': "{count} months ago";
768
+ readonly 'admin.branch.create.success': "Branch created successfully";
769
+ readonly 'admin.branch.create.successDesc': "New branch created with {count} teachers. PLACEMENT TEST room has been automatically created.";
770
+ readonly 'admin.branch.create.successDescNoTeacher': "New branch created. PLACEMENT TEST room has been automatically created.";
771
+ readonly 'admin.branch.update.success': "Branch updated successfully";
772
+ readonly 'admin.branch.update.successDesc': "Branch information updated ({count} teacher changes)";
773
+ readonly 'admin.branch.update.successDescNoChange': "Branch information updated";
774
+ readonly 'admin.branch.delete.success': "Branch deleted successfully";
775
+ readonly 'admin.branch.delete.successDesc': "Branch {code} - {name} has been deleted";
776
+ readonly 'admin.branch.activate.success': "Branch activated successfully";
777
+ readonly 'admin.branch.deactivate.success': "Branch deactivated successfully";
778
+ readonly 'admin.branch.toggleStatus.successDesc': "Branch {code} - {name} has been {status}";
779
+ readonly 'admin.branch.toggleStatus.activated': "activated";
780
+ readonly 'admin.branch.toggleStatus.deactivated': "deactivated";
781
+ readonly 'admin.branches.title': "Branch Management";
782
+ readonly 'admin.branches.subtitle': "Manage branch information in the system";
783
+ readonly 'admin.branches.loading': "Loading data...";
784
+ readonly 'admin.branches.stats.total': "Total Branches";
785
+ readonly 'admin.branches.stats.active': "Active";
786
+ readonly 'admin.branches.stats.inactive': "Inactive";
787
+ readonly 'admin.branches.stats.distribution': "Manager Distribution";
788
+ readonly 'admin.branches.stats.activeBranches': "Active";
789
+ readonly 'admin.branches.stats.inactiveBranches': "Inactive";
790
+ readonly 'admin.branches.stats.withManager': "Has Manager";
791
+ readonly 'admin.branches.stats.withoutManager': "No Manager";
792
+ readonly 'admin.branches.stats.branchUnit': "branches";
793
+ readonly 'admin.branches.table.title': "Branch List";
794
+ readonly 'admin.branches.table.showing': "Showing {count} / {total} branches";
795
+ readonly 'admin.branches.table.addBranch': "Add Branch";
796
+ readonly 'admin.branches.table.loading': "Loading...";
797
+ readonly 'admin.branches.table.empty': "No branches found";
798
+ readonly 'admin.branches.table.notUpdated': "Not updated";
799
+ readonly 'admin.branches.table.notAssigned': "Not assigned";
800
+ readonly 'admin.branches.col.code': "BRANCH CODE";
801
+ readonly 'admin.branches.col.name': "BRANCH NAME";
802
+ readonly 'admin.branches.col.address': "ADDRESS";
803
+ readonly 'admin.branches.col.contact': "CONTACT";
804
+ readonly 'admin.branches.col.manager': "MANAGER";
805
+ readonly 'admin.branches.col.status': "STATUS";
806
+ readonly 'admin.branches.col.actions': "ACTIONS";
807
+ readonly 'admin.branches.filter.searchPlaceholder': "Search by name or branch code";
808
+ readonly 'admin.branches.filter.statusPlaceholder': "Status";
809
+ readonly 'admin.branches.filter.allStatuses': "All statuses";
810
+ readonly 'admin.branches.filter.active': "Active";
811
+ readonly 'admin.branches.filter.inactive': "Inactive";
812
+ readonly 'admin.branches.filter.clearFilters': "Clear filters";
813
+ readonly 'admin.branches.filter.searchLabel': "Search:";
814
+ readonly 'admin.branches.filter.statusLabel': "Status:";
815
+ readonly 'admin.branches.status.active': "Active";
816
+ readonly 'admin.branches.status.activeDetail': "Active";
817
+ readonly 'admin.branches.status.inactive': "Inactive";
818
+ readonly 'admin.branches.action.view': "View details";
819
+ readonly 'admin.branches.action.edit': "Edit";
820
+ readonly 'admin.branches.action.delete': "Delete";
821
+ readonly 'admin.branches.field.basicInfo': "Basic Information";
822
+ readonly 'admin.branches.field.code': "Branch code";
823
+ readonly 'admin.branches.field.codePlaceholder': "E.g.: CN-HN-01";
824
+ readonly 'admin.branches.field.name': "Branch name";
825
+ readonly 'admin.branches.field.namePlaceholder': "E.g.: Hanoi Branch";
826
+ readonly 'admin.branches.field.address': "Address";
827
+ readonly 'admin.branches.field.addressPlaceholder': "Enter branch address...";
828
+ readonly 'admin.branches.field.contactInfo': "Contact Information";
829
+ readonly 'admin.branches.field.phone': "Phone number";
830
+ readonly 'admin.branches.field.phonePlaceholder': "E.g.: 0912345678";
831
+ readonly 'admin.branches.field.email': "Email";
832
+ readonly 'admin.branches.field.emailPlaceholder': "E.g.: branch@ocean.edu.vn";
833
+ readonly 'admin.branches.field.managerSection': "Manager";
834
+ readonly 'admin.branches.field.selectManager': "Select manager";
835
+ readonly 'admin.branches.field.selectManagerPlaceholder': "Select manager...";
836
+ readonly 'admin.branches.field.managerHint': "The manager will have administrative rights for this branch";
837
+ readonly 'admin.branches.field.statusSection': "Status";
838
+ readonly 'admin.branches.teacher.title': "Select Teachers";
839
+ readonly 'admin.branches.teacher.searchPlaceholder': "Search teachers by name, email or phone number";
840
+ readonly 'admin.branches.teacher.colName': "Full name";
841
+ readonly 'admin.branches.teacher.colEmail': "Email";
842
+ readonly 'admin.branches.teacher.colPhone': "Phone";
843
+ readonly 'admin.branches.teacher.notFound': "No teachers found";
844
+ readonly 'admin.branches.teacher.empty': "No teachers in the system";
845
+ readonly 'admin.branches.teacher.selected': "Selected: {count} teachers";
846
+ readonly 'admin.branches.teacher.clearAll': "Clear all";
847
+ readonly 'admin.branches.add.title': "Add New Branch";
848
+ readonly 'admin.branches.add.desc': "Enter information for the new branch";
849
+ readonly 'admin.branches.add.activateLabel': "Activate branch";
850
+ readonly 'admin.branches.add.activateDescActive': "Branch will be active immediately after creation";
851
+ readonly 'admin.branches.add.activateDescInactive': "Branch will be inactive after creation";
852
+ readonly 'admin.branches.add.submitting': "Processing...";
853
+ readonly 'admin.branches.add.submit': "Add Branch";
854
+ readonly 'admin.branches.edit.title': "Edit Branch";
855
+ readonly 'admin.branches.edit.desc': "Update information for branch: {name}";
856
+ readonly 'admin.branches.edit.statusLabel': "Active status";
857
+ readonly 'admin.branches.edit.statusDescActive': "Branch is currently active";
858
+ readonly 'admin.branches.edit.statusDescInactive': "Branch is currently inactive";
859
+ readonly 'admin.branches.edit.submitting': "Processing...";
860
+ readonly 'admin.branches.edit.submit': "Update";
861
+ readonly 'admin.branches.delete.title': "Confirm Delete Branch";
862
+ readonly 'admin.branches.delete.desc': "Are you sure you want to delete this branch?";
863
+ readonly 'admin.branches.delete.warning': "This action cannot be undone and will delete all data related to this branch.";
864
+ readonly 'admin.branches.delete.submitting': "Processing...";
865
+ readonly 'admin.branches.delete.confirm': "Delete Branch";
866
+ readonly 'admin.branches.toggleStatus.activateTitle': "Activate Branch";
867
+ readonly 'admin.branches.toggleStatus.deactivateTitle': "Deactivate Branch";
868
+ readonly 'admin.branches.toggleStatus.activateDesc': "Are you sure you want to activate this branch?";
869
+ readonly 'admin.branches.toggleStatus.deactivateDesc': "Are you sure you want to deactivate this branch?";
870
+ readonly 'admin.branches.toggleStatus.activateInfo': "The branch will be activated and operate normally.";
871
+ readonly 'admin.branches.toggleStatus.deactivateInfo': "The branch will be deactivated but data will be preserved.";
872
+ readonly 'admin.branches.toggleStatus.submitting': "Processing...";
873
+ readonly 'admin.branches.toggleStatus.activate': "Activate";
874
+ readonly 'admin.branches.toggleStatus.deactivate': "Deactivate";
875
+ readonly 'admin.branches.view.title': "Branch Details: {name}";
876
+ readonly 'admin.branches.view.desc': "View detailed branch information";
877
+ readonly 'admin.branches.view.basicInfo': "Basic Information";
878
+ readonly 'admin.branches.view.codeLabel': "Branch Code";
879
+ readonly 'admin.branches.view.nameLabel': "Branch Name";
880
+ readonly 'admin.branches.view.statusLabel': "Status";
881
+ readonly 'admin.branches.view.contactInfo': "Contact Information";
882
+ readonly 'admin.branches.view.addressLabel': "Address";
883
+ readonly 'admin.branches.view.phoneLabel': "Phone Number";
884
+ readonly 'admin.branches.view.emailLabel': "Email";
885
+ readonly 'admin.branches.view.notUpdated': "Not updated";
886
+ readonly 'admin.branches.view.managerSection': "Manager";
887
+ readonly 'admin.branches.view.noManager': "No manager assigned";
888
+ readonly 'admin.branches.view.teacherSection': "Teachers";
889
+ readonly 'admin.branches.view.noTeachers': "No teachers assigned";
890
+ readonly 'admin.branches.view.moreTeachers': "and {count} more teachers...";
891
+ readonly 'admin.branches.view.changeHistory': "Change History";
892
+ readonly 'admin.branches.view.createdAt': "Created";
893
+ readonly 'admin.branches.view.createdBy': "by";
894
+ readonly 'admin.branches.view.noCreator': "No creator information";
895
+ readonly 'admin.branches.view.updatedAt': "Last Updated";
896
+ readonly 'admin.branches.view.noUpdater': "No updater information";
897
+ readonly 'admin.branches.view.branchId': "Branch ID";
898
+ readonly 'admin.rooms.title': "Exam Room Management";
899
+ readonly 'admin.rooms.subtitle': "Create and manage exam rooms";
900
+ readonly 'admin.rooms.loading': "Loading data...";
901
+ readonly 'admin.rooms.stats.totalRooms': "Total Rooms";
902
+ readonly 'admin.rooms.stats.activeRooms': "{count} active rooms";
903
+ readonly 'admin.rooms.stats.students': "Students";
904
+ readonly 'admin.rooms.stats.totalStudents': "Total enrolled students";
905
+ readonly 'admin.rooms.stats.completed': "Completed";
906
+ readonly 'admin.rooms.stats.completedRooms': "Rooms completed";
907
+ readonly 'admin.rooms.stats.statusDistribution': "Status distribution";
908
+ readonly 'admin.rooms.stats.ongoing': "In progress";
909
+ readonly 'admin.rooms.stats.scheduled': "Scheduled";
910
+ readonly 'admin.rooms.stats.roomUnit': "rooms";
911
+ readonly 'admin.rooms.table.title': "Exam Room List";
912
+ readonly 'admin.rooms.table.showing': "Showing {count} / {total} rooms";
913
+ readonly 'admin.rooms.table.addRoom': "Create Room";
914
+ readonly 'admin.rooms.table.loading': "Loading...";
915
+ readonly 'admin.rooms.table.empty': "No exam rooms found";
916
+ readonly 'admin.rooms.table.notAssigned': "Not assigned";
917
+ readonly 'admin.rooms.table.unlimited': "Unlimited";
918
+ readonly 'admin.rooms.col.name': "ROOM NAME";
919
+ readonly 'admin.rooms.col.code': "ROOM CODE";
920
+ readonly 'admin.rooms.col.branch': "BRANCH";
921
+ readonly 'admin.rooms.col.exam': "EXAM & QUESTIONS";
922
+ readonly 'admin.rooms.col.time': "TIME";
923
+ readonly 'admin.rooms.col.progress': "PROGRESS";
924
+ readonly 'admin.rooms.col.lock': "LOCK";
925
+ readonly 'admin.rooms.col.actions': "ACTIONS";
926
+ readonly 'admin.rooms.filter.searchPlaceholder': "Search by room name or room code";
927
+ readonly 'admin.rooms.filter.statusPlaceholder': "Status";
928
+ readonly 'admin.rooms.filter.allStatuses': "All statuses";
929
+ readonly 'admin.rooms.filter.branchPlaceholder': "Branch";
930
+ readonly 'admin.rooms.filter.allBranches': "All branches";
931
+ readonly 'admin.rooms.filter.clearFilters': "Clear filters";
932
+ readonly 'admin.rooms.status.completed': "Completed";
933
+ readonly 'admin.rooms.status.inProgress': "In Progress";
934
+ readonly 'admin.rooms.status.scheduled': "Scheduled";
935
+ readonly 'admin.rooms.exam.viewContent': "View content";
936
+ readonly 'admin.rooms.exam.changeExam': "Change exam";
937
+ readonly 'admin.rooms.exam.selectExam': "+ Select exam";
938
+ readonly 'admin.rooms.action.view': "View details";
939
+ readonly 'admin.rooms.action.edit': "Edit";
940
+ readonly 'admin.rooms.action.schedule': "Edit schedule";
941
+ readonly 'admin.rooms.action.delete': "Delete";
942
+ readonly 'admin.rooms.toast.loadError': "Failed to load data";
943
+ readonly 'admin.rooms.toast.loadRoomsError': "Unable to load exam rooms. Please try again later.";
944
+ readonly 'admin.rooms.toast.loadTeachersError': "Unable to load supervisors. Please try again later.";
945
+ readonly 'admin.rooms.toast.loadStudentsError': "Unable to load students. Please try again later.";
946
+ readonly 'admin.rooms.toast.loadExamsError': "Unable to load exams. Please try again later.";
947
+ readonly 'admin.rooms.toast.loadContestsError': "Unable to load contests. Please try again later.";
948
+ readonly 'admin.rooms.toast.loadClassesError': "Unable to load classes. Please try again later.";
949
+ readonly 'admin.rooms.toast.loadBranchesError': "Unable to load branches. Please try again later.";
950
+ readonly 'admin.rooms.toast.cannotChangeExam': "Cannot change exam";
951
+ readonly 'admin.rooms.toast.cannotChangeExamDesc': "Rooms that have started or completed cannot have their exam changed";
952
+ readonly 'admin.rooms.toast.assignExamSuccess': "Exam assigned successfully";
953
+ readonly 'admin.rooms.toast.assignExamSuccessDesc': "Exam \"{examName}\" with {childCount} variants has been assigned to room {roomCode}";
954
+ readonly 'admin.rooms.toast.cannotRemoveExam': "Cannot remove exam";
955
+ readonly 'admin.rooms.toast.cannotRemoveExamDesc': "Rooms that have started or completed cannot have their exam removed";
956
+ readonly 'admin.rooms.toast.removeExamSuccess': "Exam removed successfully";
957
+ readonly 'admin.rooms.toast.removeExamSuccessDesc': "Exam has been removed from room {roomCode}";
958
+ readonly 'admin.rooms.toast.saveSettingsSuccess': "Settings saved successfully";
959
+ readonly 'admin.rooms.toast.saveSettingsSuccessDesc': "Your exam settings have been saved";
960
+ readonly 'admin.rooms.toast.updateScheduleSuccess': "Schedule updated successfully";
961
+ readonly 'admin.rooms.toast.updateScheduleSuccessDesc': "Schedule for room {roomCode} has been updated";
962
+ readonly 'admin.rooms.toast.updateScheduleError': "Failed to update schedule";
963
+ readonly 'admin.rooms.toast.updateScheduleErrorDesc': "Error updating schedule for room {roomCode}";
964
+ readonly 'admin.rooms.add.title': "Add New Exam Room";
965
+ readonly 'admin.rooms.add.description': "Enter information for the new exam room";
966
+ readonly 'admin.rooms.add.cancel': "Cancel";
967
+ readonly 'admin.rooms.add.submit': "Add Room";
968
+ readonly 'admin.rooms.add.success': "Room created successfully";
969
+ readonly 'admin.rooms.add.successDesc': "Exam room {code} has been created";
970
+ readonly 'admin.rooms.add.error': "Failed to create room";
971
+ readonly 'admin.rooms.add.errorDesc': "An error occurred while creating the exam room";
972
+ readonly 'admin.rooms.edit.title': "Edit Room: {name}";
973
+ readonly 'admin.rooms.edit.description': "Update exam room information";
974
+ readonly 'admin.rooms.edit.cancel': "Cancel";
975
+ readonly 'admin.rooms.edit.saving': "Saving...";
976
+ readonly 'admin.rooms.edit.submit': "Save Changes";
977
+ readonly 'admin.rooms.edit.success': "Room updated successfully";
978
+ readonly 'admin.rooms.edit.successDesc': "Exam room {code} has been updated";
979
+ readonly 'admin.rooms.edit.error': "Failed to update room";
980
+ readonly 'admin.rooms.edit.errorDesc': "An error occurred while updating the exam room";
981
+ readonly 'admin.rooms.delete.title': "Confirm Delete Room";
982
+ readonly 'admin.rooms.delete.description': "Are you sure you want to delete room";
983
+ readonly 'admin.rooms.delete.warning': "This action cannot be undone and will delete all related data.";
984
+ readonly 'admin.rooms.delete.cancel': "Cancel";
985
+ readonly 'admin.rooms.delete.processing': "Processing...";
986
+ readonly 'admin.rooms.delete.submit': "Delete Room";
987
+ readonly 'admin.rooms.delete.success': "Room deleted successfully";
988
+ readonly 'admin.rooms.delete.successDesc': "Exam room {code} has been deleted";
989
+ readonly 'admin.rooms.delete.error': "Failed to delete room";
990
+ readonly 'admin.rooms.delete.errorDesc': "Unable to delete exam room. Please try again later.";
991
+ readonly 'admin.rooms.view.title': "Room Details: {name}";
992
+ readonly 'admin.rooms.view.close': "Close";
993
+ readonly 'admin.rooms.view.locked': "Locked";
994
+ readonly 'admin.rooms.view.unlocked': "Unlocked";
995
+ readonly 'admin.rooms.view.undetermined': "Not set";
996
+ readonly 'admin.rooms.unlimitedTime': "Unlimited time";
997
+ readonly 'admin.rooms.view.stats.candidates': "Candidates";
998
+ readonly 'admin.rooms.view.stats.supervisors': "Supervisors";
999
+ readonly 'admin.rooms.view.stats.submitted': "Submitted";
1000
+ readonly 'admin.rooms.view.stats.submissionRate': "Submission rate";
1001
+ readonly 'admin.rooms.view.section.basicInfo': "Basic Information";
1002
+ readonly 'admin.rooms.view.section.time': "Schedule";
1003
+ readonly 'admin.rooms.view.section.exams': "Exams";
1004
+ readonly 'admin.rooms.view.section.supervisors': "Supervisors";
1005
+ readonly 'admin.rooms.view.section.classes': "Classes";
1006
+ readonly 'admin.rooms.view.section.assignedStudents': "Assigned Students";
1007
+ readonly 'admin.rooms.view.field.contest': "Contest";
1008
+ readonly 'admin.rooms.view.field.location': "Location";
1009
+ readonly 'admin.rooms.view.field.branch': "Branch";
1010
+ readonly 'admin.rooms.view.field.candidateSelection': "Candidate selection";
1011
+ readonly 'admin.rooms.view.field.description': "Description";
1012
+ readonly 'admin.rooms.view.field.start': "Start";
1013
+ readonly 'admin.rooms.view.field.end': "End";
1014
+ readonly 'admin.rooms.view.field.createdAt': "Created at:";
1015
+ readonly 'admin.rooms.view.field.updatedAt': "Updated at:";
1016
+ readonly 'admin.rooms.view.selectionType.all': "All students";
1017
+ readonly 'admin.rooms.view.selectionType.specific': "Specific students";
1018
+ readonly 'admin.rooms.view.locationNotSet': "Not set";
1019
+ readonly 'admin.rooms.view.noSupervisors': "No supervisors assigned";
1020
+ readonly 'admin.rooms.view.examOriginal': "Original exam";
1021
+ readonly 'admin.rooms.view.examVariants': "Exam variants ({count})";
1022
+ readonly 'admin.rooms.view.status.scheduled': "Scheduled";
1023
+ readonly 'admin.rooms.view.status.inProgress': "In Progress";
1024
+ readonly 'admin.rooms.view.status.completed': "Completed";
1025
+ readonly 'admin.rooms.view.type.contest': "Contest";
1026
+ readonly 'admin.rooms.view.type.practiceTest': "Practice Test";
1027
+ readonly 'admin.rooms.view.classCode': "Code:";
1028
+ readonly 'admin.rooms.view.classGrade': "Grade:";
1029
+ readonly 'admin.rooms.view.classStudents': "{count} students";
1030
+ readonly 'admin.rooms.lock.titleLock': "Lock exam room?";
1031
+ readonly 'admin.rooms.lock.titleUnlock': "Unlock exam room?";
1032
+ readonly 'admin.rooms.lock.statusLocked': "Locked";
1033
+ readonly 'admin.rooms.lock.statusUnlocked': "Unlocked";
1034
+ readonly 'admin.rooms.lock.confirmUnlock': "Are you sure you want to";
1035
+ readonly 'admin.rooms.lock.unlock': "unlock";
1036
+ readonly 'admin.rooms.lock.lock': "lock";
1037
+ readonly 'admin.rooms.lock.confirmSuffix': "this exam room?";
1038
+ readonly 'admin.rooms.lock.unlockEffect': "Students will be able to access and take the exam in this room.";
1039
+ readonly 'admin.rooms.lock.lockEffect': "Students will not be able to access or take the exam in this room until it is unlocked.";
1040
+ readonly 'admin.rooms.lock.cancel': "Cancel";
1041
+ readonly 'admin.rooms.lock.processing': "Processing...";
1042
+ readonly 'admin.rooms.lock.submitLock': "Lock Room";
1043
+ readonly 'admin.rooms.lock.submitUnlock': "Unlock";
1044
+ readonly 'admin.rooms.lock.successLock': "Room locked successfully";
1045
+ readonly 'admin.rooms.lock.successUnlock': "Room unlocked successfully";
1046
+ readonly 'admin.rooms.lock.successDesc': "Exam room {code} has been {action}";
1047
+ readonly 'admin.rooms.lock.locked': "locked";
1048
+ readonly 'admin.rooms.lock.unlocked': "unlocked";
1049
+ readonly 'admin.rooms.lock.error': "Failed to change lock status";
1050
+ readonly 'admin.rooms.lock.errorDesc': "Unable to change the lock status of the exam room. Please try again later.";
1051
+ readonly 'admin.rooms.removeExam.title': "Remove Exam from Room";
1052
+ readonly 'admin.rooms.removeExam.description': "Are you sure you want to remove exam";
1053
+ readonly 'admin.rooms.removeExam.fromRoom': "from room";
1054
+ readonly 'admin.rooms.removeExam.cannotRemove': "Cannot remove exam from a room that has started or completed!";
1055
+ readonly 'admin.rooms.removeExam.effect': "The room will no longer have an assigned exam. You can select a new exam later.";
1056
+ readonly 'admin.rooms.removeExam.cancel': "Cancel";
1057
+ readonly 'admin.rooms.removeExam.submit': "Remove Exam";
1058
+ readonly 'admin.rooms.schedule.title': "Edit Schedule: {name}";
1059
+ readonly 'admin.rooms.schedule.description': "Update the exam schedule for this room";
1060
+ readonly 'admin.rooms.schedule.contestInfo': "Contest info: {name}";
1061
+ readonly 'admin.rooms.schedule.unlimitedContest': "This contest has no time limit.";
1062
+ readonly 'admin.rooms.schedule.contestRange': "From {start} to {end}";
1063
+ readonly 'admin.rooms.schedule.contestConstraint': "Room schedule must fall within the contest time range";
1064
+ readonly 'admin.rooms.schedule.unlimitedBadge': "Unlimited";
1065
+ readonly 'admin.rooms.schedule.unlimitedNote': "This contest has no time limit. You do not need to set a schedule for this room.";
1066
+ readonly 'admin.rooms.schedule.startTime': "Start time *";
1067
+ readonly 'admin.rooms.schedule.endTime': "End time *";
1068
+ readonly 'admin.rooms.schedule.cancel': "Cancel";
1069
+ readonly 'admin.rooms.schedule.save': "Save Schedule";
1070
+ readonly 'admin.rooms.schedule.validation.startRequired': "Please select a start time";
1071
+ readonly 'admin.rooms.schedule.validation.endRequired': "Please select an end time";
1072
+ readonly 'admin.rooms.schedule.validation.endAfterStart': "End time must be after start time";
1073
+ readonly 'admin.rooms.selectExam.title': "Select Exam for Room: {name}";
1074
+ readonly 'admin.rooms.selectExam.description': "Select 1 parent exam and child exams (variants) to assign to this room";
1075
+ readonly 'admin.rooms.selectExam.parentCount': "Parent Exam";
1076
+ readonly 'admin.rooms.selectExam.childCount': "Child Exams";
1077
+ readonly 'admin.rooms.selectExam.noParentSelected': "No parent exam selected";
1078
+ readonly 'admin.rooms.selectExam.noParentSelectedDesc': "Please select a parent exam first";
1079
+ readonly 'admin.rooms.selectExam.childCode': "Code: {code} • Variant #{variant}";
1080
+ readonly 'admin.rooms.selectExam.selectAll': "Select all";
1081
+ readonly 'admin.rooms.selectExam.deselectAll': "Deselect all";
1082
+ readonly 'admin.rooms.selectExam.noParentExams': "No parent exams available";
1083
+ readonly 'admin.rooms.selectExam.selectedParent': "Selected Parent Exam";
1084
+ readonly 'admin.rooms.selectExam.selectedChildren': "Selected Child Exams ({count})";
1085
+ readonly 'admin.rooms.selectExam.cancel': "Cancel";
1086
+ readonly 'admin.rooms.selectExam.confirm': "Confirm";
1087
+ readonly 'admin.rooms.selectExam.childExams': "{count} variants";
1088
+ readonly 'admin.rooms.selectExam.warning.title': "Insufficient data";
1089
+ readonly 'admin.rooms.selectExam.warning.desc': "Please select a parent exam and at least one child exam";
1090
+ readonly 'admin.rooms.selectExam.clearTitle': "Clear Selection?";
1091
+ readonly 'admin.rooms.selectExam.clearDesc': "Are you sure you want to clear the parent exam and {count} child exams?";
1092
+ readonly 'admin.rooms.selectExam.clearCancel': "Cancel";
1093
+ readonly 'admin.rooms.selectExam.clearConfirm': "Clear";
1094
+ readonly 'admin.rooms.selectExam.dialogTitle': "Select Exam";
1095
+ readonly 'admin.rooms.selectExam.dialogDescription': "Select a parent exam and the corresponding child exams for your exam room";
1096
+ readonly 'admin.rooms.selectExam.searchPlaceholder': "Search exams by name, code, subject...";
1097
+ readonly 'admin.rooms.selectExam.noParentSelectedInfo': "Please select a parent exam before selecting child exams";
1098
+ readonly 'admin.rooms.selectExam.examCode': "Code: {name}";
1099
+ readonly 'admin.rooms.selectExam.original': "Original";
1100
+ readonly 'admin.rooms.selectExam.questions': "{count} questions";
1101
+ readonly 'admin.rooms.selectExam.minutes': "{count} min";
1102
+ readonly 'admin.rooms.selectExam.difficulty.easy': "Easy";
1103
+ readonly 'admin.rooms.selectExam.difficulty.medium': "Medium";
1104
+ readonly 'admin.rooms.selectExam.difficulty.hard': "Hard";
1105
+ readonly 'admin.rooms.selectExam.emptySearch': "No matching exams found";
1106
+ readonly 'admin.rooms.selectExam.emptyAll': "No exams available";
1107
+ readonly 'admin.rooms.selectExam.emptySearchHint': "Try searching with different keywords";
1108
+ readonly 'admin.rooms.selectExam.emptyAllHint': "Create a new exam to get started";
1109
+ readonly 'admin.rooms.selectExam.clearSearch': "Clear search";
1110
+ readonly 'admin.rooms.selectExam.selected': "Selected";
1111
+ readonly 'admin.rooms.selectExam.selectedParentLabel': "Parent Exam";
1112
+ readonly 'admin.rooms.changeExam.title': "Change Exam for Room: {name}";
1113
+ readonly 'admin.rooms.changeExam.description': "Select a new exam to replace the current one";
1114
+ readonly 'admin.rooms.changeExam.currentExam': "Current exam";
1115
+ readonly 'admin.rooms.changeExam.currentExamHint': "Select a new exam from the list below to replace it";
1116
+ readonly 'admin.rooms.changeExam.childCount': "({count} variants)";
1117
+ readonly 'admin.rooms.changeExam.newParent': "New Parent Exam";
1118
+ readonly 'admin.rooms.changeExam.newParentSelected': "Selected New Parent Exam";
1119
+ readonly 'admin.rooms.changeExam.currentBadge': "Current";
1120
+ readonly 'admin.rooms.changeExam.cancel': "Cancel";
1121
+ readonly 'admin.rooms.changeExam.submit': "Change Exam";
1122
+ readonly 'admin.rooms.changeExam.confirmTitle': "Confirm exam change?";
1123
+ readonly 'admin.rooms.changeExam.confirmDesc': "Are you sure you want to change the exam for room {name}?";
1124
+ readonly 'admin.rooms.changeExam.confirmEffect': "The new exam will replace the current one with {count} child exams.";
1125
+ readonly 'admin.rooms.changeExam.confirmCancel': "Cancel";
1126
+ readonly 'admin.rooms.changeExam.confirmSubmit': "Confirm Change";
1127
+ readonly 'admin.rooms.editWarning.title': "Edit Room Warning";
1128
+ readonly 'admin.rooms.editWarning.description': "is currently";
1129
+ readonly 'admin.rooms.editWarning.status': "In Progress";
1130
+ readonly 'admin.rooms.editWarning.effect': "Editing may affect students currently taking the exam.";
1131
+ readonly 'admin.rooms.editWarning.confirm': "Are you sure you want to continue editing?";
1132
+ readonly 'admin.rooms.editWarning.cancel': "Cancel";
1133
+ readonly 'admin.rooms.editWarning.submit': "Continue Editing";
1134
+ readonly 'admin.rooms.examChangeWarning.title': "Change Exam?";
1135
+ readonly 'admin.rooms.examChangeWarning.description': "The exam was automatically selected from the chosen contest. Are you sure you want to change to a different exam?";
1136
+ readonly 'admin.rooms.examChangeWarning.cancel': "Cancel";
1137
+ readonly 'admin.rooms.examChangeWarning.submit': "Continue Changing";
1138
+ readonly 'admin.rooms.settings.title': "Exam Room Settings";
1139
+ readonly 'admin.rooms.settings.description': "Default parameters for exams";
1140
+ readonly 'admin.rooms.settings.maxStudents': "Max students per room";
1141
+ readonly 'admin.rooms.settings.defaultDuration': "Default exam duration (minutes)";
1142
+ readonly 'admin.rooms.settings.edit': "Edit";
1143
+ readonly 'admin.rooms.settings.cancel': "Cancel";
1144
+ readonly 'admin.rooms.settings.save': "Save Changes";
1145
+ readonly 'admin.rooms.form.branch': "Branch";
1146
+ readonly 'admin.rooms.form.branchPlaceholder': "Select branch...";
1147
+ readonly 'admin.rooms.form.branchReload': "Reload";
1148
+ readonly 'admin.rooms.form.branchCreate': "Create branch";
1149
+ readonly 'admin.rooms.form.branchEmpty': "No branches available. Please create a branch first.";
1150
+ readonly 'admin.rooms.form.contest': "Select contest";
1151
+ readonly 'admin.rooms.form.contestPlaceholder': "Select contest...";
1152
+ readonly 'admin.rooms.form.contestReload': "Reload";
1153
+ readonly 'admin.rooms.form.contestCreate': "Create contest";
1154
+ readonly 'admin.rooms.form.contestEmpty': "No contests available. Please create a contest first.";
1155
+ readonly 'admin.rooms.form.contestUnlimitedInfo': "Contest has no time limit";
1156
+ readonly 'admin.rooms.form.contestUnlimitedStart': "Starts from: {time}";
1157
+ readonly 'admin.rooms.form.contestUnlimitedHint': "Start time is required, end time is optional";
1158
+ readonly 'admin.rooms.form.contestLimitedInfo': "Contest time range";
1159
+ readonly 'admin.rooms.form.contestLimitedRange': "From {start} to {end}";
1160
+ readonly 'admin.rooms.form.contestLimitedHint': "Room schedule must fall within the contest time range";
1161
+ readonly 'admin.rooms.form.startTime': "Start time";
1162
+ readonly 'admin.rooms.form.endTime': "End time";
1163
+ readonly 'admin.rooms.form.endTimeOptional': "(optional)";
1164
+ readonly 'admin.rooms.form.endTimeUnlimitedHint': "If not set, the room will have no time limit.";
1165
+ readonly 'admin.rooms.form.roomName': "Room name";
1166
+ readonly 'admin.rooms.form.roomNamePlaceholder': "Room A101";
1167
+ readonly 'admin.rooms.form.roomCode': "Room code";
1168
+ readonly 'admin.rooms.form.roomCodePlaceholder': "ROOM-A101";
1169
+ readonly 'admin.rooms.form.examSelection': "Select exam";
1170
+ readonly 'admin.rooms.form.examPlaceholder': "Select exam...";
1171
+ readonly 'admin.rooms.form.examDisabledHint': "Please select a contest first to show matching exams";
1172
+ readonly 'admin.rooms.form.examSelectContestFirst': "Please select a contest first";
1173
+ readonly 'admin.rooms.form.examNoMatchClassification': "No exams match the classification of the selected contest";
1174
+ readonly 'admin.rooms.form.examSummaryParent': "Parent Exam ({count})";
1175
+ readonly 'admin.rooms.form.examSummaryChild': "Child Exams ({count})";
1176
+ readonly 'admin.rooms.form.examChildCode': "Code: {name}";
1177
+ readonly 'admin.rooms.form.location': "Location";
1178
+ readonly 'admin.rooms.form.locationPlaceholder': "Floor 1, Building A";
1179
+ readonly 'admin.rooms.form.lockRoom': "Lock room";
1180
+ readonly 'admin.rooms.form.lockHint': "Students cannot enter the room when locked";
1181
+ readonly 'admin.rooms.form.supervisors': "Select supervisors";
1182
+ readonly 'admin.rooms.form.supervisorPlaceholder': "Select supervisors...";
1183
+ readonly 'admin.rooms.form.roomType': "Room type";
1184
+ readonly 'admin.rooms.form.roomTypeContest': "Contest";
1185
+ readonly 'admin.rooms.form.roomTypePractice': "Practice Test";
1186
+ readonly 'admin.rooms.form.description': "Description";
1187
+ readonly 'admin.rooms.form.descriptionPlaceholder': "Detailed description of the exam room...";
1188
+ readonly 'admin.rooms.form.validation.branchRequired': "Please select a branch";
1189
+ readonly 'admin.rooms.form.validation.contestRequired': "Please select a contest";
1190
+ readonly 'admin.rooms.form.validation.examRequired': "Please select an exam";
1191
+ readonly 'admin.rooms.form.validation.startRequired': "Please select a start time";
1192
+ readonly 'admin.rooms.form.validation.startFuture': "Start time must be greater than or equal to the current time";
1193
+ readonly 'admin.rooms.form.validation.endRequired': "Please select an end time";
1194
+ readonly 'admin.rooms.form.validation.endAfterStart': "End time must be after start time";
1195
+ readonly 'admin.rooms.form.validation.classRequired': "Please select at least 1 class";
1196
+ readonly 'admin.rooms.form.validation.studentRequired': "Please select at least 1 student";
1197
+ readonly 'admin.rooms.studentSelection.label': "Participants";
1198
+ readonly 'admin.rooms.studentSelection.all': "All participants";
1199
+ readonly 'admin.rooms.studentSelection.byClass': "By class";
1200
+ readonly 'admin.rooms.studentSelection.byStudent': "Specific students";
1201
+ readonly 'admin.rooms.studentSelection.selectClass': "Select classes";
1202
+ readonly 'admin.rooms.studentSelection.classSearchPlaceholder': "Search classes (name, code)...";
1203
+ readonly 'admin.rooms.studentSelection.gradeFilterPlaceholder': "Filter by grade";
1204
+ readonly 'admin.rooms.studentSelection.allGrades': "All grades";
1205
+ readonly 'admin.rooms.studentSelection.gradeItem': "Grade {grade}";
1206
+ readonly 'admin.rooms.studentSelection.colClassName': "Class name";
1207
+ readonly 'admin.rooms.studentSelection.colClassCode': "Class code";
1208
+ readonly 'admin.rooms.studentSelection.colGrade': "Grade";
1209
+ readonly 'admin.rooms.studentSelection.colStudentCount': "Students";
1210
+ readonly 'admin.rooms.studentSelection.noClasses': "No classes found";
1211
+ readonly 'admin.rooms.studentSelection.selectedClasses': "Selected classes: {count}";
1212
+ readonly 'admin.rooms.studentSelection.clearAll': "Clear all";
1213
+ readonly 'admin.rooms.studentSelection.selectStudent': "Select students";
1214
+ readonly 'admin.rooms.studentSelection.studentSearchPlaceholder': "Search students (name, username, email)...";
1215
+ readonly 'admin.rooms.studentSelection.classFilterPlaceholder': "Filter by class";
1216
+ readonly 'admin.rooms.studentSelection.allClasses': "All classes";
1217
+ readonly 'admin.rooms.studentSelection.colStudentId': "Student ID";
1218
+ readonly 'admin.rooms.studentSelection.colName': "Full name";
1219
+ readonly 'admin.rooms.studentSelection.colEmail': "Email";
1220
+ readonly 'admin.rooms.studentSelection.colClass': "Class";
1221
+ readonly 'admin.rooms.studentSelection.noStudents': "No students found";
1222
+ readonly 'admin.rooms.studentSelection.selectedStudents': "Selected students: {count}";
1223
+ readonly 'admin.rooms.studentSelection.noClass': "No class";
1224
+ readonly 'admin.rooms.studentSelection.allParticipate': "All students will be able to participate in this exam room.";
1225
+ readonly 'admin.rooms.studentSelection.summaryClasses': "Selected classes:";
1226
+ readonly 'admin.rooms.studentSelection.noClassSelected': "No class selected";
1227
+ readonly 'admin.rooms.studentSelection.summaryStudents': "Selected students:";
1228
+ readonly 'admin.rooms.studentSelection.noStudentSelected': "No students selected";
1229
+ readonly 'admin.rooms.studentSelection.classUnit': "{count} students";
1230
+ readonly 'admin.rooms.studentSelection.studentUnit': "{count} students";
1231
+ readonly 'admin.rooms.studentSelection.zeroClass': "0 classes";
1232
+ readonly 'admin.rooms.studentSelection.zeroStudent': "0 students";
1233
+ readonly 'admin.contests.title': "Contest Management";
1234
+ readonly 'admin.contests.subtitle': "Create and manage contests, view reports and rankings";
1235
+ readonly 'admin.contests.teacher.subtitle': "View and manage contests, track student rankings";
1236
+ readonly 'admin.contests.tab.rankings': "Rankings & Statistics";
1237
+ readonly 'admin.contests.tab.management': "Contest Management";
1238
+ readonly 'admin.contests.stats.total': "Total Contests";
1239
+ readonly 'admin.contests.stats.totalCompleted': "{count} completed";
1240
+ readonly 'admin.contests.stats.upcoming': "Upcoming Contest";
1241
+ readonly 'admin.contests.stats.upcomingDays': "days left";
1242
+ readonly 'admin.contests.stats.totalParticipants': "Total Participants";
1243
+ readonly 'admin.contests.stats.participated': "participated";
1244
+ readonly 'admin.contests.stats.avgScore': "System Avg Score";
1245
+ readonly 'admin.contests.stats.overContests': "across {count} contests";
1246
+ readonly 'admin.contests.list.title': "Contest List";
1247
+ readonly 'admin.contests.list.desc': "View detailed statistics per contest";
1248
+ readonly 'admin.contests.list.loading': "Loading...";
1249
+ readonly 'admin.contests.list.empty': "No contests yet";
1250
+ readonly 'admin.contests.list.participants': "Participants:";
1251
+ readonly 'admin.contests.list.avgScore': "Avg Score:";
1252
+ readonly 'admin.contests.list.highest': "Highest:";
1253
+ readonly 'admin.contests.list.lowest': "Lowest:";
1254
+ readonly 'admin.contests.list.completionRate': "Completion Rate:";
1255
+ readonly 'admin.contests.list.viewDetail': "View details";
1256
+ readonly 'admin.contests.ranking.latestTitle': "Top students in latest contest";
1257
+ readonly 'admin.contests.ranking.latestNoContest': "No contest yet";
1258
+ readonly 'admin.contests.ranking.allTimeTitle': "Top students by total score";
1259
+ readonly 'admin.contests.ranking.allTimeDesc': "Top 3 all-time outstanding students";
1260
+ readonly 'admin.contests.ranking.loading': "Loading...";
1261
+ readonly 'admin.contests.ranking.noData': "No data yet";
1262
+ readonly 'admin.contests.ranking.scoreLabel': "pts";
1263
+ readonly 'admin.contests.ranking.totalScoreLabel': "total pts";
1264
+ readonly 'admin.contests.ranking.contestsAvg': "{count} contests • Avg: {avg}";
1265
+ readonly 'admin.contests.management.title': "Contest List";
1266
+ readonly 'admin.contests.management.showing': "Showing {count} / {total} contests";
1267
+ readonly 'admin.contests.management.addNew': "Add New Contest";
1268
+ readonly 'admin.contests.management.loading': "Loading data...";
1269
+ readonly 'admin.contests.management.emptyTitle': "No contests yet";
1270
+ readonly 'admin.contests.management.emptyDesc': "Click \"Add New Contest\" to create the first contest";
1271
+ readonly 'admin.contests.filter.title': "Search Filters";
1272
+ readonly 'admin.contests.filter.desc': "Filter and search contests by criteria";
1273
+ readonly 'admin.contests.filter.activeCount': "{count} filters applied";
1274
+ readonly 'admin.contests.filter.clearAll': "Clear all";
1275
+ readonly 'admin.contests.filter.activeLabel': "Filtering:";
1276
+ readonly 'admin.contests.filter.searchLabel': "Search";
1277
+ readonly 'admin.contests.filter.searchPlaceholder': "Enter contest name";
1278
+ readonly 'admin.contests.filter.statusLabel': "Status";
1279
+ readonly 'admin.contests.filter.statusPlaceholder': "Select status";
1280
+ readonly 'admin.contests.filter.timeTypeLabel': "Contest Model";
1281
+ readonly 'admin.contests.filter.timeTypePlaceholder': "Select contest model type";
1282
+ readonly 'admin.contests.filter.allStatuses': "All statuses";
1283
+ readonly 'admin.contests.filter.allTimeTypes': "All contest model types";
1284
+ readonly 'admin.contests.filter.visibilityLabel': "Visibility";
1285
+ readonly 'admin.contests.filter.visibilityPlaceholder': "Select visibility";
1286
+ readonly 'admin.contests.filter.allVisibilities': "All visibilities";
1287
+ readonly 'admin.contests.filter.noEndDate': "No end date";
1288
+ readonly 'admin.contests.table.name': "Contest Name";
1289
+ readonly 'admin.contests.table.classification': "Classification";
1290
+ readonly 'admin.contests.table.timeType': "Contest Model";
1291
+ readonly 'admin.contests.table.time': "Time";
1292
+ readonly 'admin.contests.table.status': "Status";
1293
+ readonly 'admin.contests.table.active': "Active";
1294
+ readonly 'admin.contests.table.actions': "Actions";
1295
+ readonly 'admin.contests.table.timeTo': "to";
1296
+ readonly 'admin.contests.status.upcoming': "Upcoming";
1297
+ readonly 'admin.contests.status.inProgress': "In Progress";
1298
+ readonly 'admin.contests.status.completed': "Completed";
1299
+ readonly 'admin.contests.timeType.unlimited': "Unlimited";
1300
+ readonly 'admin.contests.timeType.limited': "Time Limited";
1301
+ readonly 'admin.contests.active.active': "Active";
1302
+ readonly 'admin.contests.active.paused': "Paused";
1303
+ readonly 'admin.contests.visibility.public': "Public";
1304
+ readonly 'admin.contests.visibility.internal': "Internal";
1305
+ readonly 'admin.contests.visibility.private': "Private";
1306
+ readonly 'admin.contests.action.viewDetail': "View details";
1307
+ readonly 'admin.contests.action.edit': "Edit";
1308
+ readonly 'admin.contests.action.delete': "Delete";
1309
+ readonly 'admin.contests.add.title': "Add New Contest";
1310
+ readonly 'admin.contests.add.desc': "Enter information to create a new contest in the system";
1311
+ readonly 'admin.contests.add.submitting': "Adding...";
1312
+ readonly 'admin.contests.add.submit': "Add Contest";
1313
+ readonly 'admin.contests.add.cancel': "Cancel";
1314
+ readonly 'admin.contests.edit.title': "Edit Contest";
1315
+ readonly 'admin.contests.edit.desc': "Update contest information: {name}";
1316
+ readonly 'admin.contests.edit.submitting': "Updating...";
1317
+ readonly 'admin.contests.edit.submit': "Update";
1318
+ readonly 'admin.contests.edit.cancel': "Cancel";
1319
+ readonly 'admin.contests.delete.title': "Delete Contest";
1320
+ readonly 'admin.contests.delete.cannotUndo': "This action cannot be undone";
1321
+ readonly 'admin.contests.delete.participants': "{count} participants";
1322
+ readonly 'admin.contests.delete.rooms': "{count} rooms";
1323
+ readonly 'admin.contests.delete.warningTitle': "Important Warning";
1324
+ readonly 'admin.contests.delete.warningRooms': "All exam rooms will be deleted";
1325
+ readonly 'admin.contests.delete.warningData': "Participant data will be deleted";
1326
+ readonly 'admin.contests.delete.warningResults': "Exam results cannot be recovered";
1327
+ readonly 'admin.contests.delete.cancel': "Cancel";
1328
+ readonly 'admin.contests.delete.submitting': "Deleting...";
1329
+ readonly 'admin.contests.delete.confirm': "Confirm Delete";
1330
+ readonly 'admin.contests.detail.title': "Contest Details";
1331
+ readonly 'admin.contests.detail.desc': "Detailed statistics and analysis of exam results";
1332
+ readonly 'admin.contests.detail.loading': "Loading data...";
1333
+ readonly 'admin.contests.detail.statAvgScore': "Avg Score";
1334
+ readonly 'admin.contests.detail.statParticipants': "Participants";
1335
+ readonly 'admin.contests.detail.statCompletion': "Completion";
1336
+ readonly 'admin.contests.detail.statAvgTime': "Avg Min";
1337
+ readonly 'admin.contests.detail.top3Title': "Top 3 Outstanding Students";
1338
+ readonly 'admin.contests.detail.noStudents': "No student data yet";
1339
+ readonly 'admin.contests.detail.scoreDistTitle': "Score Distribution";
1340
+ readonly 'admin.contests.detail.noScoreDist': "No score distribution data yet";
1341
+ readonly 'admin.contests.detail.classAvgTitle': "Avg Score by Class";
1342
+ readonly 'admin.contests.detail.noClassData': "No class data yet";
1343
+ readonly 'admin.contests.detail.classStudentCount': "{count} students";
1344
+ readonly 'admin.contests.detail.avgTimeLabel': "Avg Completion Time";
1345
+ readonly 'admin.contests.detail.fastestLabel': "Fastest";
1346
+ readonly 'admin.contests.detail.slowestLabel': "Slowest";
1347
+ readonly 'admin.contests.detail.minuteUnit': "min";
1348
+ readonly 'admin.contests.detail.contestLabel': "Contest";
1349
+ readonly 'admin.contests.detail.timeLabel': "Time";
1350
+ readonly 'admin.contests.detail.unlimited': "Unlimited";
1351
+ readonly 'admin.contests.detail.loadError': "Unable to load statistics data. Please try again later.";
1352
+ readonly 'admin.contests.student.title': "Student Profile: {name}";
1353
+ readonly 'admin.contests.student.desc': "Participation history and detailed statistics";
1354
+ readonly 'admin.contests.student.loading': "Loading data...";
1355
+ readonly 'admin.contests.student.noClass': "No class assigned";
1356
+ readonly 'admin.contests.student.codeLabel': "Code: {code}";
1357
+ readonly 'admin.contests.student.avgScoreLabel': "Avg Score";
1358
+ readonly 'admin.contests.student.statTotalScore': "Total Score";
1359
+ readonly 'admin.contests.student.statContests': "Contests Joined";
1360
+ readonly 'admin.contests.student.statBestRank': "Best Rank";
1361
+ readonly 'admin.contests.student.statHighest': "Highest Score";
1362
+ readonly 'admin.contests.student.scoreRangeTitle': "Score Range";
1363
+ readonly 'admin.contests.student.scoreHighest': "Highest Score";
1364
+ readonly 'admin.contests.student.scoreAvg': "Average Score";
1365
+ readonly 'admin.contests.student.scoreLowest': "Lowest Score";
1366
+ readonly 'admin.contests.student.trendTitle': "Score Trend";
1367
+ readonly 'admin.contests.student.noTrendData': "No score data yet";
1368
+ readonly 'admin.contests.student.skillsTitle': "Competency Analysis";
1369
+ readonly 'admin.contests.student.historyTitle': "Contest Participation History";
1370
+ readonly 'admin.contests.student.historyScore': "Score:";
1371
+ readonly 'admin.contests.student.historyRank': "Rank:";
1372
+ readonly 'admin.contests.student.historyEmpty': "No contest participation history";
1373
+ readonly 'admin.contests.student.awardsTitle': "Awards & Achievements";
1374
+ readonly 'admin.contests.student.rank1': "🥇 1st";
1375
+ readonly 'admin.contests.student.rank2': "🥈 2nd";
1376
+ readonly 'admin.contests.student.rank3': "🥉 3rd";
1377
+ readonly 'admin.contests.student.rankN': "#{rank}";
1378
+ readonly 'admin.contests.student.loadError': "Unable to load student data. Please try again later.";
1379
+ readonly 'admin.contests.student.scoreRadarName': "Score";
1380
+ readonly 'admin.contests.toast.addSuccess': "Success";
1381
+ readonly 'admin.contests.toast.addSuccessDesc': "New contest added!";
1382
+ readonly 'admin.contests.toast.editSuccess': "Success";
1383
+ readonly 'admin.contests.toast.editSuccessDesc': "Contest updated!";
1384
+ readonly 'admin.contests.toast.deleteSuccess': "Success";
1385
+ readonly 'admin.contests.toast.deleteSuccessDesc': "Contest \"{name}\" deleted";
1386
+ readonly 'admin.contests.form.nameLabel': "Contest Name";
1387
+ readonly 'admin.contests.form.namePlaceholder': "E.g.: English Talent 2025";
1388
+ readonly 'admin.contests.form.charCount': "{current}/{max} characters";
1389
+ readonly 'admin.contests.form.classificationLabel': "Classification";
1390
+ readonly 'admin.contests.form.classificationPlaceholder': "Select classification";
1391
+ readonly 'admin.contests.form.roomCreationLabel': "Rooms by Class";
1392
+ readonly 'admin.contests.form.roomCreationAll': "Create all classes";
1393
+ readonly 'admin.contests.form.roomCreationAllDesc': "Automatically create exam rooms for all classes";
1394
+ readonly 'admin.contests.form.roomCreationSelected': "Specify classes";
1395
+ readonly 'admin.contests.form.roomCreationSelectedDesc': "Select classes to create exam rooms";
1396
+ readonly 'admin.contests.form.examLabel': "Exam";
1397
+ readonly 'admin.contests.form.examSelected': "{parentCount} parent exam, {childCount} child exams";
1398
+ readonly 'admin.contests.form.examNone': "No exam selected";
1399
+ readonly 'admin.contests.form.examSelectBtn': "Select Exam";
1400
+ readonly 'admin.contests.form.examHint': "Select the exam for this contest";
1401
+ readonly 'admin.contests.form.examError': "Please select an exam for this contest";
1402
+ readonly 'admin.contests.form.examSelectClassificationFirst': "Please select contest classification first";
1403
+ readonly 'admin.contests.form.examParentLabel': "Parent Exam ({count})";
1404
+ readonly 'admin.contests.form.examChildLabel': "Child Exams ({count})";
1405
+ readonly 'admin.contests.form.examChildCode': "Code: {name}";
1406
+ readonly 'admin.contests.form.descriptionLabel': "Description";
1407
+ readonly 'admin.contests.form.descriptionPlaceholder': "Detailed description about the contest...";
1408
+ readonly 'admin.contests.form.timeTypeLabel': "Contest Model";
1409
+ readonly 'admin.contests.form.timeTypeLimited': "Time Limited";
1410
+ readonly 'admin.contests.form.timeTypeLimitedDesc': "Has start and end time";
1411
+ readonly 'admin.contests.form.timeTypeUnlimited': "Unlimited";
1412
+ readonly 'admin.contests.form.timeTypeUnlimitedDesc': "Has start time only, no end time";
1413
+ readonly 'admin.contests.form.unlimitedInfo': "Unlimited time contest";
1414
+ readonly 'admin.contests.form.unlimitedInfoDesc': "Students can join the contest anytime after the start time. There is no end time.";
1415
+ readonly 'admin.contests.form.contestDuration': "Contest duration";
1416
+ readonly 'admin.contests.form.startTime': "Contest start time";
1417
+ readonly 'admin.contests.form.startDate': "Start Date";
1418
+ readonly 'admin.contests.form.startHour': "Start Time";
1419
+ readonly 'admin.contests.form.endDate': "End Date";
1420
+ readonly 'admin.contests.form.endHour': "End Time";
1421
+ readonly 'admin.contests.form.activeStatusLabel': "Active Status";
1422
+ readonly 'admin.contests.form.activeStatusHintActive': "Contest will be active immediately after creation";
1423
+ readonly 'admin.contests.form.activeStatusHintPaused': "Contest will be paused, can be activated later";
1424
+ readonly 'admin.contests.form.activeStatusDescActive': "Contest is currently active";
1425
+ readonly 'admin.contests.form.activeStatusDescPaused': "Contest is currently paused";
1426
+ readonly 'admin.exams.title': "Exam Management";
1427
+ readonly 'admin.exams.subtitle': "Manage exams and create new questions from templates";
1428
+ readonly 'admin.exams.examFallbackName': "Exam {id}";
1429
+ readonly 'admin.exams.uncategorized': "Uncategorized";
1430
+ readonly 'admin.exams.toast.deleteSuccess': "Exam deleted successfully!";
1431
+ readonly 'admin.exams.toast.deleteSuccessDesc': "Deleted exam \"{name}\"";
1432
+ readonly 'admin.exams.toast.deleteFailed': "Deletion failed";
1433
+ readonly 'admin.exams.toast.deleteError': "An error occurred while deleting the exam. Please try again.";
1434
+ readonly 'admin.exams.toast.success': "Success";
1435
+ readonly 'admin.exams.toast.copySuccess': "Copied exam {id}";
1436
+ readonly 'admin.exams.toast.shuffleSuccess': "Created {count} shuffled variants from exam {id}! Question order has been randomized.";
1437
+ readonly 'admin.exams.error.loadTitle': "Unable to load exam list";
1438
+ readonly 'admin.exams.error.loadMessage': "An error occurred while loading data. Please try again.";
1439
+ readonly 'admin.exams.stats.totalExams': "Total Exams";
1440
+ readonly 'admin.exams.stats.activeExams': "{count} exams active";
1441
+ readonly 'admin.exams.stats.rooms': "Rooms";
1442
+ readonly 'admin.exams.stats.totalAssigned': "Total assigned rooms";
1443
+ readonly 'admin.exams.stats.completed': "Completed";
1444
+ readonly 'admin.exams.stats.studentsSubmitted': "Students submitted";
1445
+ readonly 'admin.exams.stats.statusDistribution': "Status Distribution";
1446
+ readonly 'admin.exams.stats.ready': "Ready";
1447
+ readonly 'admin.exams.stats.notReady': "Not Ready";
1448
+ readonly 'admin.exams.stats.activated': "Activated";
1449
+ readonly 'admin.exams.stats.deactivated': "Deactivated";
1450
+ readonly 'admin.exams.stats.examUnit': "{count} exams";
1451
+ readonly 'admin.exams.table.title': "Exam List";
1452
+ readonly 'admin.exams.table.showing': "Showing {count} / {total} exams";
1453
+ readonly 'admin.exams.table.createExam': "Create Exam";
1454
+ readonly 'admin.exams.table.loading': "Loading data...";
1455
+ readonly 'admin.exams.table.empty': "No exams found";
1456
+ readonly 'admin.exams.table.createdPrefix': "Created:";
1457
+ readonly 'admin.exams.table.minutes': "{count} min";
1458
+ readonly 'admin.exams.table.questionCount': "{count}/{total} questions";
1459
+ readonly 'admin.exams.table.completed': "Completed";
1460
+ readonly 'admin.exams.table.ready': "Completed";
1461
+ readonly 'admin.exams.table.notReady': "Incomplete";
1462
+ readonly 'admin.exams.table.activated': "Activated";
1463
+ readonly 'admin.exams.table.deactivated': "Deactivated";
1464
+ readonly 'admin.exams.table.cannotActivate': "Exam is not ready, cannot activate";
1465
+ readonly 'admin.exams.table.editContent': "Edit exam content";
1466
+ readonly 'admin.exams.filter.searchPlaceholder': "Search by name, exam code...";
1467
+ readonly 'admin.exams.filter.level': "Level";
1468
+ readonly 'admin.exams.filter.allLevels': "All Levels";
1469
+ readonly 'admin.exams.filter.ready': "Completed";
1470
+ readonly 'admin.exams.filter.allReady': "All Completion";
1471
+ readonly 'admin.exams.filter.isReady': "Completed";
1472
+ readonly 'admin.exams.filter.notReady': "Incomplete";
1473
+ readonly 'admin.exams.filter.status': "Status";
1474
+ readonly 'admin.exams.filter.allStatuses': "All Statuses";
1475
+ readonly 'admin.exams.filter.activated': "Activated";
1476
+ readonly 'admin.exams.filter.deactivated': "Deactivated";
1477
+ readonly 'admin.exams.filter.clearFilters': "Clear Filters";
1478
+ readonly 'admin.exams.filter.searchLabel': "Search:";
1479
+ readonly 'admin.exams.filter.levelLabel': "Level:";
1480
+ readonly 'admin.exams.filter.readyLabel': "Completed:";
1481
+ readonly 'admin.exams.filter.statusLabel': "Status:";
1482
+ readonly 'admin.exams.col.code': "Code";
1483
+ readonly 'admin.exams.col.name': "Title";
1484
+ readonly 'admin.exams.col.level': "Level";
1485
+ readonly 'admin.exams.col.difficulty': "Difficulty";
1486
+ readonly 'admin.exams.col.duration': "Duration";
1487
+ readonly 'admin.exams.col.questions': "Questions";
1488
+ readonly 'admin.exams.col.assigned': "Assigned";
1489
+ readonly 'admin.exams.col.ready': "Completed";
1490
+ readonly 'admin.exams.col.status': "Status";
1491
+ readonly 'admin.exams.col.actions': "Actions";
1492
+ readonly 'admin.exams.col.classification': "Classification";
1493
+ readonly 'admin.exams.col.creator': "Creator";
1494
+ readonly 'admin.exams.col.createdAt': "Created date";
1495
+ readonly 'admin.exams.action.view': "View Details";
1496
+ readonly 'admin.exams.action.preview': "Preview Exam";
1497
+ readonly 'admin.exams.action.edit': "Edit";
1498
+ readonly 'admin.exams.action.copy': "Copy";
1499
+ readonly 'admin.exams.action.shuffle': "Create Shuffled Exam";
1500
+ readonly 'admin.exams.action.delete': "Delete";
1501
+ readonly 'admin.exams.difficulty.easy': "Easy";
1502
+ readonly 'admin.exams.difficulty.medium': "Medium";
1503
+ readonly 'admin.exams.difficulty.hard': "Hard";
1504
+ readonly 'admin.exams.delete.title': "Confirm Delete Exam";
1505
+ readonly 'admin.exams.delete.confirm': "Are you sure you want to delete exam";
1506
+ readonly 'admin.exams.delete.warning': "This action cannot be undone and will delete all related data.";
1507
+ readonly 'admin.exams.delete.cancel': "Cancel";
1508
+ readonly 'admin.exams.delete.submit': "Delete";
1509
+ readonly 'admin.exams.duplicate.title': "Copy Exam";
1510
+ readonly 'admin.exams.duplicate.subtitle': "Create a complete copy";
1511
+ readonly 'admin.exams.duplicate.originalExam': "Original Exam";
1512
+ readonly 'admin.exams.duplicate.copyIncludes': "Copy will include";
1513
+ readonly 'admin.exams.duplicate.examInfo': "Exam information";
1514
+ readonly 'admin.exams.duplicate.allSettings': "All configurations and settings";
1515
+ readonly 'admin.exams.duplicate.questions': "Questions";
1516
+ readonly 'admin.exams.duplicate.questionCount': "{count} questions";
1517
+ readonly 'admin.exams.duplicate.newName': "New Name";
1518
+ readonly 'admin.exams.duplicate.newCode': "New Code";
1519
+ readonly 'admin.exams.duplicate.draftNote': "The copy will be created with status";
1520
+ readonly 'admin.exams.duplicate.draft': "Draft";
1521
+ readonly 'admin.exams.duplicate.editableNote': "and can be edited right after creation.";
1522
+ readonly 'admin.exams.duplicate.cancel': "Cancel";
1523
+ readonly 'admin.exams.duplicate.copying': "Copying...";
1524
+ readonly 'admin.exams.duplicate.submit': "Create Copy";
1525
+ readonly 'admin.exams.view.subject': "Subject";
1526
+ readonly 'admin.exams.view.level': "Level";
1527
+ readonly 'admin.exams.view.duration': "Duration";
1528
+ readonly 'admin.exams.view.minutes': "{count} min";
1529
+ readonly 'admin.exams.view.questionCount': "Question Count";
1530
+ readonly 'admin.exams.view.questions': "{count} questions";
1531
+ readonly 'admin.exams.view.totalPoints': "Total Points";
1532
+ readonly 'admin.exams.view.points': "{count} pts";
1533
+ readonly 'admin.exams.view.difficulty': "Difficulty";
1534
+ readonly 'admin.exams.view.description': "Description";
1535
+ readonly 'admin.exams.view.close': "Close";
1536
+ readonly 'admin.exams.shuffle.title': "Create Shuffled Exam Set";
1537
+ readonly 'admin.exams.shuffle.desc': "Create multiple exam versions from {code} with randomly shuffled question order";
1538
+ readonly 'admin.exams.shuffle.questionCount': "{count} questions";
1539
+ readonly 'admin.exams.shuffle.minutes': "{count} min";
1540
+ readonly 'admin.exams.shuffle.points': "{count} pts";
1541
+ readonly 'admin.exams.shuffle.howItWorks': "How it works";
1542
+ readonly 'admin.exams.shuffle.info1': "Each variant contains the exact same set of questions as the original";
1543
+ readonly 'admin.exams.shuffle.info2': "The order of Parts is preserved";
1544
+ readonly 'admin.exams.shuffle.info3': "Questions within the same Part are randomly shuffled";
1545
+ readonly 'admin.exams.shuffle.info4': "Variants are linked to the parent exam for management";
1546
+ readonly 'admin.exams.shuffle.countLabel': "Number of variants to create";
1547
+ readonly 'admin.exams.shuffle.strategyLabel': "Existing exam handling option";
1548
+ readonly 'admin.exams.shuffle.keepOld': "Keep existing exams and add new ones";
1549
+ readonly 'admin.exams.shuffle.replaceAll': "Create a completely new set";
1550
+ readonly 'admin.exams.shuffle.existingVariants': "Existing exams ({count})";
1551
+ readonly 'admin.exams.shuffle.deleteAll': "Delete all ({count})";
1552
+ readonly 'admin.exams.shuffle.loading': "Loading...";
1553
+ readonly 'admin.exams.shuffle.noVariants': "No shuffled exams yet";
1554
+ readonly 'admin.exams.shuffle.variantCode': "Code: {name}";
1555
+ readonly 'admin.exams.shuffle.originalBadge': "📌 Original";
1556
+ readonly 'admin.exams.shuffle.originalNote': "Original question order, cannot be deleted";
1557
+ readonly 'admin.exams.shuffle.preview': "Preview";
1558
+ readonly 'admin.exams.shuffle.close': "Close";
1559
+ readonly 'admin.exams.shuffle.creating': "Creating...";
1560
+ readonly 'admin.exams.shuffle.createButton': "Create {count} shuffled exams";
1561
+ readonly 'admin.exams.shuffle.confirmDeleteAllTitle': "Delete all shuffled exams?";
1562
+ readonly 'admin.exams.shuffle.confirmDeleteAllDesc': "Are you sure you want to delete all {count} shuffled exams? The original exam (Code: 000) will be kept. This action cannot be undone.";
1563
+ readonly 'admin.exams.shuffle.cancel': "Cancel";
1564
+ readonly 'admin.exams.shuffle.deleteAllBtn': "Delete All";
1565
+ readonly 'admin.exams.shuffle.confirmDeleteOneTitle': "Delete this exam?";
1566
+ readonly 'admin.exams.shuffle.confirmDeleteOneDesc': "Are you sure you want to delete this exam? This action cannot be undone.";
1567
+ readonly 'admin.exams.shuffle.deleteBtn': "Delete";
1568
+ readonly 'admin.exams.create.title': "Create New Exam";
1569
+ readonly 'admin.exams.create.step1': "Step 1: Enter basic exam information";
1570
+ readonly 'admin.exams.create.success': "Success";
1571
+ readonly 'admin.exams.create.successDesc': "Saved exam \"{name}\". Redirecting to Template selection...";
1572
+ readonly 'admin.exams.create.incompleteInfo': "Incomplete Information";
1573
+ readonly 'admin.exams.create.incompleteInfoDesc': "Please fill in all required fields and check the information entered";
1574
+ readonly 'admin.exams.create.cancel': "Cancel";
1575
+ readonly 'admin.exams.create.saving': "Saving...";
1576
+ readonly 'admin.exams.create.saveAndContinue': "Create exam and start editing content";
1577
+ readonly 'admin.exams.create.loading': "Loading...";
1578
+ readonly 'admin.exams.form.basicInfo': "Basic Information";
1579
+ readonly 'admin.exams.form.requiredHint': "Required fields are marked with (*)";
1580
+ readonly 'admin.exams.form.codeLabel': "Exam Code";
1581
+ readonly 'admin.exams.form.codePlaceholder': "Enter exam code...";
1582
+ readonly 'admin.exams.form.charCount': "{count}/{max} characters";
1583
+ readonly 'admin.exams.form.nameLabel': "Exam Name";
1584
+ readonly 'admin.exams.form.namePlaceholder': "Enter exam name...";
1585
+ readonly 'admin.exams.form.subject': "Subject";
1586
+ readonly 'admin.exams.form.subjectPlaceholder': "Select subject";
1587
+ readonly 'admin.exams.form.loading': "Loading...";
1588
+ readonly 'admin.exams.form.level': "Level";
1589
+ readonly 'admin.exams.form.levelPlaceholder': "Select level";
1590
+ readonly 'admin.exams.form.difficulty': "Difficulty";
1591
+ readonly 'admin.exams.form.difficultyPlaceholder': "Select difficulty";
1592
+ readonly 'admin.exams.form.easy': "Easy";
1593
+ readonly 'admin.exams.form.medium': "Medium";
1594
+ readonly 'admin.exams.form.hard': "Hard";
1595
+ readonly 'admin.exams.form.duration': "Exam Duration (minutes)";
1596
+ readonly 'admin.exams.form.totalPoints': "Total Points";
1597
+ readonly 'admin.exams.form.description': "Description";
1598
+ readonly 'admin.exams.form.descriptionPlaceholder': "Detailed description about the exam, objectives, target audience...";
1599
+ readonly 'admin.exams.form.classification': "Exam Classification";
1600
+ readonly 'admin.exams.form.classificationPlaceholder': "Select exam classification";
1601
+ readonly 'admin.exams.edit.title': "Edit Exam";
1602
+ readonly 'admin.exams.edit.subtitle': "Update your exam information";
1603
+ readonly 'admin.exams.edit.loading': "Loading exam information...";
1604
+ readonly 'admin.exams.edit.loadError': "Unable to load exam information";
1605
+ readonly 'admin.exams.edit.loadErrorDesc': "An error occurred while loading data. Please try again.";
1606
+ readonly 'admin.exams.edit.backToList': "Back to list";
1607
+ readonly 'admin.exams.edit.success': "Updated exam {name} successfully!";
1608
+ readonly 'admin.exams.edit.invalidInfo': "Invalid Information";
1609
+ readonly 'admin.exams.edit.invalidInfoDesc': "Please check the information fields";
1610
+ readonly 'admin.exams.edit.templateInfoTitle': "Template Information (Cannot be changed)";
1611
+ readonly 'admin.exams.edit.templateInfoDesc': "The exam template was selected when creating the exam and cannot be changed";
1612
+ readonly 'admin.exams.edit.templateName': "Template Name:";
1613
+ readonly 'admin.exams.edit.templateParts': "Parts:";
1614
+ readonly 'admin.exams.edit.templateQuestions': "Questions:";
1615
+ readonly 'admin.exams.edit.noTemplate': "No Template Selected";
1616
+ readonly 'admin.exams.edit.noTemplateDesc': "You need to select a Template to complete the exam structure.";
1617
+ readonly 'admin.exams.edit.editQuestions': "Edit Questions";
1618
+ readonly 'admin.exams.edit.back': "Back";
1619
+ readonly 'admin.exams.edit.saving': "Saving...";
1620
+ readonly 'admin.exams.edit.saveChanges': "Save Changes";
1621
+ readonly 'admin.exams.edit.saveAndSelectTemplate': "Save exam and continue to Template selection";
1622
+ readonly 'admin.exams.edit.saved': "Exam saved";
1623
+ readonly 'admin.exams.edit.redirectToTemplate': "Redirecting to Template selection...";
1624
+ readonly 'admin.exams.edit.loadingFallback': "Loading...";
1625
+ readonly 'admin.exams.template.exam': "Exam";
1626
+ readonly 'admin.exams.template.examCode': "Exam Code:";
1627
+ readonly 'admin.exams.template.step2': "Step 2: Select Exam Template";
1628
+ readonly 'admin.exams.template.selectTemplate': "Select Exam Template";
1629
+ readonly 'admin.exams.template.error': "Error";
1630
+ readonly 'admin.exams.template.loadError': "Unable to load exam information. Please try again.";
1631
+ readonly 'admin.exams.template.loading': "Loading exam information...";
1632
+ readonly 'admin.exams.template.loadingFallback': "Loading...";
1633
+ readonly 'admin.exams.preview.title': "Preview Exam: {name}";
1634
+ readonly 'admin.exams.preview.examInfo': "Exam Information";
1635
+ readonly 'admin.exams.preview.duration': "Duration:";
1636
+ readonly 'admin.exams.preview.questionCount': "Questions:";
1637
+ readonly 'admin.exams.preview.totalPoints': "Total Points:";
1638
+ readonly 'admin.exams.preview.progress': "Progress";
1639
+ readonly 'admin.exams.preview.loading': "Loading...";
1640
+ readonly 'admin.exams.preview.questionNavigation': "Question Navigation";
1641
+ readonly 'admin.exams.preview.all': "All";
1642
+ readonly 'admin.exams.preview.allQuestions': "All {count} questions";
1643
+ readonly 'admin.exams.preview.partQuestions': "Part {part}: {count} questions";
1644
+ readonly 'admin.exams.preview.collapse': "Collapse";
1645
+ readonly 'admin.exams.preview.detail': "Details";
1646
+ readonly 'admin.exams.preview.questionIndex': "Question {index} / {total}";
1647
+ readonly 'admin.exams.preview.noQuestions': "No questions yet";
1648
+ readonly 'admin.exams.preview.loadingQuestions': "Loading questions...";
1649
+ readonly 'admin.exams.preview.retry': "Retry";
1650
+ readonly 'admin.exams.preview.examNoQuestions': "This exam has no questions yet.";
1651
+ readonly 'admin.exams.preview.prevQuestion': "Previous Question";
1652
+ readonly 'admin.exams.preview.prev': "Prev";
1653
+ readonly 'admin.exams.preview.nextQuestion': "Next Question";
1654
+ readonly 'admin.exams.preview.next': "Next";
1655
+ readonly 'admin.exams.preview.footerNote': "This is a preview mode to check the layout and content of the exam.";
1656
+ readonly 'admin.exams.preview.close': "Close";
1657
+ readonly 'admin.exams.preview.loadError': "Unable to load questions. Please try again.";
1658
+ readonly 'admin.exams.preview.points': "{count} pts";
1659
+ readonly 'admin.exams.preview.questions': "{count} questions";
1660
+ readonly 'admin.exams.preview.unsupportedType': "Question type not yet supported for preview:";
1661
+ readonly 'admin.exams.preview.lookAndChoose': "Look at the picture and choose the correct answer";
1662
+ readonly 'admin.exams.configure.error': "Error";
1663
+ readonly 'admin.exams.configure.loadError': "Unable to load exam information. Please try again.";
1664
+ readonly 'admin.exams.configure.missingInfo': "Missing information";
1665
+ readonly 'admin.exams.configure.selectTemplateFirst': "Please select a template first.";
1666
+ readonly 'admin.exams.configure.templateNotFound': "Template information not found.";
1667
+ readonly 'admin.exams.configure.success': "Success";
1668
+ readonly 'admin.exams.configure.successDesc': "Template configuration saved. Redirecting to question creation page...";
1669
+ readonly 'admin.exams.configure.loading': "Loading information...";
1670
+ readonly 'admin.exams.configure.noTemplate': "Template information not found";
1671
+ readonly 'admin.exams.configure.backToTemplate': "Back to template selection";
1672
+ readonly 'admin.exams.configure.saving': "Saving configuration...";
1673
+ readonly 'admin.exams.configure.loadingFallback': "Loading...";
1674
+ readonly 'admin.exams.questions.missingTemplate': "Missing template";
1675
+ readonly 'admin.exams.questions.missingTemplateDesc': "Exam has no template assigned. Please select a template first.";
1676
+ readonly 'admin.exams.questions.error': "Error";
1677
+ readonly 'admin.exams.questions.loadError': "Unable to load exam information. Please try again.";
1678
+ readonly 'admin.exams.questions.loading': "Loading exam information...";
1679
+ readonly 'admin.exams.questions.noTemplate': "No template found for this exam";
1680
+ readonly 'admin.exams.questions.noTemplateDesc': "Please select a template before creating questions";
1681
+ readonly 'admin.exams.questions.back': "Back";
1682
+ readonly 'admin.exams.questions.createQuestions': "Create Questions";
1683
+ readonly 'admin.exams.questions.step4': "Step 4: Create and edit exam questions";
1684
+ readonly 'admin.exams.questions.createAndEditQuestions': "Create and edit exam questions";
1685
+ readonly 'admin.exams.questions.loadingFallback': "Loading...";
1686
+ readonly 'admin.exams.questions.guide.title': "Question Creation Guide";
1687
+ readonly 'admin.exams.questions.guide.subtitle': "4 simple steps • Helpful tips • Save time";
1688
+ readonly 'admin.exams.questions.guide.step1Title': "Follow the order";
1689
+ readonly 'admin.exams.questions.guide.step1Desc': "Complete each question in order within each Part";
1690
+ readonly 'admin.exams.questions.guide.step1Tip': "Move to the next Part after completing all questions in the current Part";
1691
+ readonly 'admin.exams.questions.guide.step2Title': "Standardized template";
1692
+ readonly 'admin.exams.questions.guide.step2Desc': "Each Part has a predefined question type based on the template standard";
1693
+ readonly 'admin.exams.questions.guide.step2Tip': "No need to worry about format - the system will automatically format according to the standard";
1694
+ readonly 'admin.exams.questions.guide.step3Title': "Safe storage";
1695
+ readonly 'admin.exams.questions.guide.step3Desc': "Use \"Save Question\" to save each question";
1696
+ readonly 'admin.exams.questions.guide.step3Tip': "Press \"Save Exam\" when done to save everything and publish";
1697
+ readonly 'admin.exams.questions.guide.step4Title': "Question bank";
1698
+ readonly 'admin.exams.questions.guide.step4Desc': "Check \"Add to bank\" to reuse";
1699
+ readonly 'admin.exams.questions.guide.step4Tip': "Questions will be saved to the shared pool and can be used in other exams";
1700
+ readonly 'admin.exams.questions.guide.quickTips': "Quick tips:";
1701
+ readonly 'admin.exams.questions.guide.tip1': "Ctrl+S to quickly save the current question";
1702
+ readonly 'admin.exams.questions.guide.tip2': "Data is auto-saved locally on change";
1703
+ readonly 'admin.exams.questions.guide.tip3': "Preview questions with the \"Preview\" button";
1704
+ readonly 'admin.exams.partEditor.skillListening': "Listening";
1705
+ readonly 'admin.exams.partEditor.skillSpeaking': "Speaking";
1706
+ readonly 'admin.exams.partEditor.skillReading': "Reading";
1707
+ readonly 'admin.exams.partEditor.skillWriting': "Writing";
1708
+ readonly 'admin.exams.partEditor.qtFillMissingWordsInGrid': "Fill in missing letters";
1709
+ readonly 'admin.exams.partEditor.qtLookPictureFillBlankChooseAnswer': "Look at picture, fill in the blank";
1710
+ readonly 'admin.exams.partEditor.qtLookPictureChooseCorrectAnswer': "Look at picture, choose correct answer";
1711
+ readonly 'admin.exams.partEditor.qtLookPictureFillWordHint': "Look at picture, fill word (with hint)";
1712
+ readonly 'admin.exams.partEditor.qtLabelThePicture': "Label the picture";
1713
+ readonly 'admin.exams.partEditor.qtReadAndColorObjects': "Read and color";
1714
+ readonly 'admin.exams.partEditor.qtMultipleChoice': "Multiple choice";
1715
+ readonly 'admin.exams.partEditor.qtListening': "Listening comprehension";
1716
+ readonly 'admin.exams.partEditor.qtReading': "Reading comprehension";
1717
+ readonly 'admin.exams.partEditor.defaultBack': "Back";
1718
+ readonly 'admin.exams.partEditor.defaultContinue': "Save configuration and continue";
1719
+ readonly 'admin.exams.partEditor.defaultExamName': "Configure Exam";
1720
+ readonly 'admin.exams.partEditor.step3': "Step 3: Configure question count";
1721
+ readonly 'admin.exams.partEditor.templateLabel': "Template:";
1722
+ readonly 'admin.exams.partEditor.totalQuestions': "Total questions";
1723
+ readonly 'admin.exams.partEditor.changedFrom': "Changed from {from} questions";
1724
+ readonly 'admin.exams.partEditor.keepDefault': "Keeping default template settings";
1725
+ readonly 'admin.exams.partEditor.questionsUnit': "questions";
1726
+ readonly 'admin.exams.partEditor.reset': "Reset";
1727
+ readonly 'admin.exams.partEditor.defaultCount': "Default: {count}";
1728
+ readonly 'admin.exams.partEditor.currentCount': "Current: {count}";
1729
+ readonly 'admin.exams.partEditor.configParts': "Configure Each Part";
1730
+ readonly 'admin.exams.partEditor.configPartsDesc': "Customize the number of questions for each part. Grouped questions can adjust the number of groups and questions per group.";
1731
+ readonly 'admin.exams.partEditor.groupBadge': "Question group";
1732
+ readonly 'admin.exams.partEditor.totalPartQuestions': "Total questions";
1733
+ readonly 'admin.exams.partEditor.skillLabel': "Skill";
1734
+ readonly 'admin.exams.partEditor.selectSkill': "Select skill";
1735
+ readonly 'admin.exams.partEditor.defaultSkill': "(default: {skill})";
1736
+ readonly 'admin.exams.partEditor.audioFile': "Audio file";
1737
+ readonly 'admin.exams.partEditor.audioPlaceholder': "Select audio file for this part...";
1738
+ readonly 'admin.exams.partEditor.questionCount': "Question count";
1739
+ readonly 'admin.exams.partEditor.groupCount': "Number of groups";
1740
+ readonly 'admin.exams.partEditor.addOrRemoveGroup': "Add or remove question groups";
1741
+ readonly 'admin.exams.partEditor.questionsPerGroup': "Questions per group";
1742
+ readonly 'admin.exams.partEditor.group': "Group {index}";
1743
+ readonly 'admin.exams.partEditor.defaultValue': "(default: {value})";
1744
+ readonly 'admin.exams.partEditor.unsavedChanges': "• Unsaved changes";
1745
+ readonly 'admin.exams.partEditor.readyToContinue': "✓ Ready to continue";
1746
+ readonly 'admin.exams.partEditor.saving': "Saving...";
1747
+ readonly 'admin.settings.title': "System Settings";
1748
+ readonly 'admin.settings.subtitle': "Manage system configuration and parameters";
1749
+ readonly 'admin.settings.save.success': "Saved";
1750
+ readonly 'admin.settings.save.successDesc': "Settings have been saved!";
1751
+ readonly 'admin.settings.systemInfo.title': "System Information";
1752
+ readonly 'admin.settings.systemInfo.desc': "General system configuration";
1753
+ readonly 'admin.settings.systemInfo.edit': "Edit";
1754
+ readonly 'admin.settings.systemInfo.cancel': "Cancel";
1755
+ readonly 'admin.settings.systemInfo.save': "Save Changes";
1756
+ readonly 'admin.settings.systemInfo.systemName': "System Name";
1757
+ readonly 'admin.settings.systemInfo.systemEmail': "System Email";
1758
+ readonly 'admin.settings.systemInfo.supportEmail': "Support Email";
1759
+ readonly 'admin.settings.notification.title': "Notification Settings";
1760
+ readonly 'admin.settings.notification.desc': "Manage notification channels";
1761
+ readonly 'admin.settings.notification.email': "Email Notifications";
1762
+ readonly 'admin.settings.notification.emailDesc': "Send email notifications to students and teachers";
1763
+ readonly 'admin.settings.notification.sms': "SMS Notifications";
1764
+ readonly 'admin.settings.notification.smsDesc': "Send important SMS notifications";
1765
+ readonly 'admin.settings.ebm.title': "EBM Integration";
1766
+ readonly 'admin.settings.ebm.desc': "Configure connection to EBM system";
1767
+ readonly 'admin.settings.ebm.testConnection': "Test Connection";
1768
+ readonly 'admin.settings.ebm.syncNow': "Sync Now";
1769
+ readonly 'admin.settings.status.title': "System Status";
1770
+ readonly 'admin.settings.status.desc': "System operation information";
1771
+ readonly 'admin.settings.status.operational': "Operational";
1772
+ readonly 'admin.settings.status.connected': "Connected";
1773
+ readonly 'admin.settings.status.active': "Active";
1774
+ readonly 'admin.settings.status.paused': "Paused";
1775
+ readonly 'admin.settings.status.lastBackup': "Yesterday 23:00";
1776
+ readonly 'admin.testParticipants.title': "Test Participants";
1777
+ readonly 'admin.testParticipants.subtitle': "Track information and exam results of participants in the system";
1778
+ readonly 'admin.testParticipants.cardTitle': "Test Participants List";
1779
+ readonly 'admin.testParticipants.cardDescription': "Total {totalItems} participants found";
1780
+ readonly 'admin.testParticipants.clearFilters': "Clear filters";
1781
+ readonly 'admin.testParticipants.filterHeader': "Search filters";
1782
+ readonly 'admin.testParticipants.searchPlaceholder': "Search by name, email or phone number...";
1783
+ readonly 'admin.testParticipants.branchLabel': "Branch";
1784
+ readonly 'admin.testParticipants.allBranches': "All branches";
1785
+ readonly 'admin.testParticipants.contestLabel': "Contest";
1786
+ readonly 'admin.testParticipants.allContests': "All contests";
1787
+ readonly 'admin.testParticipants.fromDate': "From date";
1788
+ readonly 'admin.testParticipants.toDate': "To date";
1789
+ readonly 'admin.testParticipants.col.participant': "Participant";
1790
+ readonly 'admin.testParticipants.col.phone': "Phone";
1791
+ readonly 'admin.testParticipants.col.dob': "Date of Birth";
1792
+ readonly 'admin.testParticipants.col.branch': "Branch";
1793
+ readonly 'admin.testParticipants.col.contest': "Contest";
1794
+ readonly 'admin.testParticipants.col.exam': "Exam";
1795
+ readonly 'admin.testParticipants.col.bestScore': "Best Score";
1796
+ readonly 'admin.testParticipants.col.maxScore': "Max Score";
1797
+ readonly 'admin.testParticipants.col.attemptCount': "Attempts";
1798
+ readonly 'admin.testParticipants.col.lastAttempt': "Last Attempt";
1799
+ readonly 'admin.testParticipants.col.actions': "Actions";
1800
+ readonly 'admin.testParticipants.loading': "Loading data...";
1801
+ readonly 'admin.testParticipants.empty.title': "No data found";
1802
+ readonly 'admin.testParticipants.empty.withFilters': "No results match the current filters. Please adjust your search criteria.";
1803
+ readonly 'admin.testParticipants.empty.noData': "No participants have taken any exams yet.";
1804
+ readonly 'admin.testParticipants.viewDetail': "View exam history details";
1805
+ readonly 'admin.testParticipants.detail': "Details";
1806
+ readonly 'admin.testParticipants.dialog.title': "Exam History Details";
1807
+ readonly 'admin.testParticipants.dialog.description': "Detailed information about exam results and attempt history of the participant";
1808
+ readonly 'admin.testParticipants.dialog.studentInfo': "Participant Information";
1809
+ readonly 'admin.testParticipants.dialog.fullName': "Full Name";
1810
+ readonly 'admin.testParticipants.dialog.email': "Email Address";
1811
+ readonly 'admin.testParticipants.dialog.phone': "Phone Number";
1812
+ readonly 'admin.testParticipants.dialog.dob': "Date of Birth";
1813
+ readonly 'admin.testParticipants.dialog.branch': "Branch";
1814
+ readonly 'admin.testParticipants.dialog.examInfo': "Exam Information";
1815
+ readonly 'admin.testParticipants.dialog.contest': "Contest";
1816
+ readonly 'admin.testParticipants.dialog.exam': "Exam";
1817
+ readonly 'admin.testParticipants.dialog.lastAttempt': "Last Attempt";
1818
+ readonly 'admin.testParticipants.dialog.bestScore': "Best Score";
1819
+ readonly 'admin.testParticipants.dialog.passRate': "Pass Rate";
1820
+ readonly 'admin.testParticipants.dialog.totalAttempts': "Total Attempts";
1821
+ readonly 'admin.testParticipants.dialog.historyTitle': "Attempt History";
1822
+ readonly 'admin.testParticipants.dialog.col.attempt': "Attempt";
1823
+ readonly 'admin.testParticipants.dialog.col.score': "Score";
1824
+ readonly 'admin.testParticipants.dialog.col.rate': "Rate";
1825
+ readonly 'admin.testParticipants.dialog.col.status': "Status";
1826
+ readonly 'admin.testParticipants.dialog.col.startTime': "Start Time";
1827
+ readonly 'admin.testParticipants.dialog.col.submitTime': "Submit Time";
1828
+ readonly 'admin.testParticipants.dialog.noAttempts': "No attempt data available.";
1829
+ readonly 'admin.testParticipants.status.inProgress': "In Progress";
1830
+ readonly 'admin.testParticipants.status.submitted': "Submitted";
1831
+ readonly 'admin.testParticipants.status.graded': "Graded";
1832
+ readonly 'admin.testParticipants.status.published': "Published";
1833
+ readonly 'admin.roles.title': "Role Management";
1834
+ readonly 'admin.roles.subtitle': "Manage roles and permissions in the system";
1835
+ readonly 'admin.roles.table.title': "Role List";
1836
+ readonly 'admin.roles.table.showing': "Showing {count} roles";
1837
+ readonly 'admin.roles.table.empty': "No roles found";
1838
+ readonly 'admin.roles.table.loading': "Loading...";
1839
+ readonly 'admin.roles.table.addRole': "Create new role";
1840
+ readonly 'admin.roles.col.name': "Role name";
1841
+ readonly 'admin.roles.col.slug': "Slug";
1842
+ readonly 'admin.roles.col.level': "Level";
1843
+ readonly 'admin.roles.col.permCount': "Permissions";
1844
+ readonly 'admin.roles.col.type': "Type";
1845
+ readonly 'admin.roles.col.actions': "Actions";
1846
+ readonly 'admin.roles.filter.searchPlaceholder': "Search by name or slug...";
1847
+ readonly 'admin.roles.filter.allLevels': "All levels";
1848
+ readonly 'admin.roles.level.system': "System";
1849
+ readonly 'admin.roles.level.branch': "Branch";
1850
+ readonly 'admin.roles.type.system': "System";
1851
+ readonly 'admin.roles.type.custom': "Custom";
1852
+ readonly 'admin.role.create.title': "Create new role";
1853
+ readonly 'admin.role.create.subtitle': "Create a custom role for the system";
1854
+ readonly 'admin.role.create.success': "Role created successfully";
1855
+ readonly 'admin.role.create.submit': "Create role";
1856
+ readonly 'admin.role.create.submitting': "Creating...";
1857
+ readonly 'admin.role.field.name': "Role name";
1858
+ readonly 'admin.role.field.slug': "Slug";
1859
+ readonly 'admin.role.field.slugHint': "Lowercase letters, numbers, underscores and hyphens only";
1860
+ readonly 'admin.role.field.level': "Level";
1861
+ readonly 'admin.role.field.description': "Description";
1862
+ readonly 'admin.role.field.portalType': "Belongs to portal";
1863
+ readonly 'admin.role.field.portalTypeHint': "Select the portal this role will have access to";
1864
+ readonly 'admin.role.field.portal.admin': "Admin Portal";
1865
+ readonly 'admin.role.field.portal.adminDesc': "System, exam & user management";
1866
+ readonly 'admin.role.field.portal.teacher': "Teacher Portal";
1867
+ readonly 'admin.role.field.portal.teacherDesc': "Class management & grading";
1868
+ readonly 'admin.role.field.portal.student': "Student Portal";
1869
+ readonly 'admin.role.field.portal.studentDesc': "Online exams & results";
1870
+ readonly 'admin.role.delete.title': "Delete role";
1871
+ readonly 'admin.role.delete.desc': "Are you sure you want to delete the role \"{name}\"? This action cannot be undone.";
1872
+ readonly 'admin.role.delete.confirm': "Delete role";
1873
+ readonly 'admin.role.delete.success': "Role \"{name}\" deleted";
1874
+ readonly 'admin.role.delete.cannotSystem': "Cannot delete a system role";
1875
+ readonly 'admin.role.backToList': "Back to list";
1876
+ readonly 'admin.role.info.title': "Role information";
1877
+ readonly 'admin.role.info.edit': "Edit";
1878
+ readonly 'admin.role.info.save': "Save";
1879
+ readonly 'admin.role.info.cancel': "Cancel";
1880
+ readonly 'admin.role.update.success': "Role updated successfully";
1881
+ readonly 'admin.role.permissions.title': "Permissions";
1882
+ readonly 'admin.role.permissions.showing': "{selected}/{total} permissions selected";
1883
+ readonly 'admin.role.permissions.save': "Save changes";
1884
+ readonly 'admin.role.permissions.saving': "Saving...";
1885
+ readonly 'admin.role.permissions.saveSuccess': "Permissions updated successfully";
1886
+ readonly 'admin.role.permissions.systemWarning': "This is a system role. Permissions cannot be edited.";
1887
+ readonly 'admin.role.permissions.selectAll': "Select all";
1888
+ readonly 'admin.role.permissions.unsavedChanges': "{count} unsaved changes";
1889
+ readonly 'admin.user.roles.title': "Assigned roles";
1890
+ readonly 'admin.user.roles.assign': "Assign role";
1891
+ readonly 'admin.user.roles.empty': "No roles assigned yet";
1892
+ readonly 'admin.user.roles.col.role': "Role";
1893
+ readonly 'admin.user.roles.col.branch': "Branch";
1894
+ readonly 'admin.user.roles.col.assignedAt': "Assigned date";
1895
+ readonly 'admin.user.roles.col.assignedBy': "Assigned by";
1896
+ readonly 'admin.user.roles.col.actions': "Actions";
1897
+ readonly 'admin.user.roles.sessionCacheInfo': "Role changes will take effect after the user logs in again.";
1898
+ readonly 'admin.user.role.assign.title': "Assign role";
1899
+ readonly 'admin.user.role.assign.desc': "Select a role and branch to assign to the user";
1900
+ readonly 'admin.user.role.assign.roleLabel': "Role";
1901
+ readonly 'admin.user.role.assign.rolePlaceholder': "Select a role";
1902
+ readonly 'admin.user.role.assign.branchLabel': "Branch";
1903
+ readonly 'admin.user.role.assign.branchPlaceholder': "Select a branch";
1904
+ readonly 'admin.user.role.assign.submit': "Assign role";
1905
+ readonly 'admin.user.role.assign.success': "Role \"{role}\" assigned successfully";
1906
+ readonly 'admin.user.role.remove.title': "Remove role";
1907
+ readonly 'admin.user.role.remove.desc': "Are you sure you want to remove the role \"{role}\" from this user?";
1908
+ readonly 'admin.user.role.remove.confirm': "Remove role";
1909
+ readonly 'admin.user.role.remove.success': "Role \"{role}\" removed successfully";
1910
+ readonly 'admin.templates.title': "Exam Template Management";
1911
+ readonly 'admin.templates.subtitle': "View, import, export, and delete exam templates";
1912
+ readonly 'admin.templates.table.title': "Template List";
1913
+ readonly 'admin.templates.searchPlaceholder': "Search templates";
1914
+ readonly 'admin.templates.table.empty': "No templates found";
1915
+ readonly 'admin.templates.table.loading': "Loading templates...";
1916
+ readonly 'admin.templates.table.showing': "Showing {count} templates";
1917
+ readonly 'admin.templates.col.title': "Title";
1918
+ readonly 'admin.templates.col.subTitle': "Subtitle";
1919
+ readonly 'admin.templates.col.examLevel': "Level";
1920
+ readonly 'admin.templates.col.theme': "Theme";
1921
+ readonly 'admin.templates.col.totalParts': "Parts";
1922
+ readonly 'admin.templates.col.totalQuestions': "Questions";
1923
+ readonly 'admin.templates.col.createdBy': "Created By";
1924
+ readonly 'admin.templates.col.createdAt': "Created";
1925
+ readonly 'admin.templates.col.updatedAt': "Updated";
1926
+ readonly 'admin.templates.col.examCount': "Exams";
1927
+ readonly 'admin.templates.col.actions': "Actions";
1928
+ readonly 'admin.templates.filter.searchPlaceholder': "Search by title...";
1929
+ readonly 'admin.templates.action.view': "View details";
1930
+ readonly 'admin.templates.action.export': "Export";
1931
+ readonly 'admin.templates.action.delete': "Delete";
1932
+ readonly 'admin.templates.action.import': "Import Template";
1933
+ readonly 'admin.templates.action.exporting': "Exporting...";
1934
+ readonly 'admin.templates.export.success': "Template exported successfully";
1935
+ readonly 'admin.templates.export.error': "Failed to export template";
1936
+ readonly 'admin.templates.import.success': "Template imported successfully";
1937
+ readonly 'admin.templates.import.error': "Failed to import template";
1938
+ readonly 'admin.templates.import.invalidJson': "Invalid JSON file. Please check the file format.";
1939
+ readonly 'admin.templates.import.invalidFile': "Please select a valid .json file.";
1940
+ readonly 'admin.templates.import.invalidFormat': "Invalid template format. The file must contain title and parts fields.";
1941
+ readonly 'admin.templates.import.parseError': "Failed to parse JSON file. Please check the file content.";
1942
+ readonly 'admin.templates.import.readError': "Failed to read file. Please try again.";
1943
+ readonly 'admin.templates.import.title': "Import Template";
1944
+ readonly 'admin.templates.import.desc': "Select a JSON file previously exported from the system. If a template with the same ID already exists, it will be replaced.";
1945
+ readonly 'admin.templates.import.selectFile': "Select JSON file";
1946
+ readonly 'admin.templates.import.submit': "Import";
1947
+ readonly 'admin.templates.import.submitting': "Importing...";
1948
+ readonly 'admin.templates.delete.title': "Delete Template";
1949
+ readonly 'admin.templates.delete.desc': "Are you sure you want to delete the template \"{title}\"? This action cannot be undone.";
1950
+ readonly 'admin.templates.delete.confirm': "Delete template";
1951
+ readonly 'admin.templates.delete.success': "Template \"{title}\" deleted successfully";
1952
+ readonly 'admin.templates.detail.title': "Template Details";
1953
+ readonly 'admin.templates.detail.back': "Back to list";
1954
+ readonly 'admin.templates.detail.jsonView': "JSON Content";
1955
+ readonly 'admin.templates.detail.info': "General Information";
1956
+ readonly 'admin.templates.detail.parts': "Parts ({count})";
1957
+ readonly 'admin.templates.detail.copyJson': "Copy JSON";
1958
+ readonly 'admin.templates.detail.jsonCopied': "JSON copied to clipboard";
1959
+ readonly 'admin.templates.create.title': "Create Template";
1960
+ readonly 'admin.templates.create.desc': "Fill in the template details below. Only the Parts field requires JSON input.";
1961
+ readonly 'admin.templates.create.placeholder': "Paste JSON content here...\n\n{\n \"title\": \"...\",\n \"examLevel\": \"...\",\n \"parts\": [...]\n}";
1962
+ readonly 'admin.templates.create.submit': "Create Template";
1963
+ readonly 'admin.templates.create.creating': "Creating...";
1964
+ readonly 'admin.templates.create.success': "Template created successfully";
1965
+ readonly 'admin.templates.create.emptyJson': "Please paste JSON content.";
1966
+ readonly 'admin.templates.create.invalidFormat': "Invalid template format. The JSON must contain title, examLevel and parts fields.";
1967
+ readonly 'admin.templates.create.parseError': "Invalid JSON. Please check the content and try again.";
1968
+ readonly 'admin.templates.create.validJson': "Valid JSON — ready to create";
1969
+ readonly 'admin.templates.action.create': "Create Template";
1970
+ readonly 'admin.templates.action.edit': "Edit";
1971
+ readonly 'admin.templates.form.titleLabel': "Title";
1972
+ readonly 'admin.templates.form.titlePlaceholder': "Enter template title...";
1973
+ readonly 'admin.templates.form.titleRequired': "Title is required.";
1974
+ readonly 'admin.templates.form.subTitleLabel': "Subtitle";
1975
+ readonly 'admin.templates.form.subTitlePlaceholder': "Enter subtitle (optional)...";
1976
+ readonly 'admin.templates.form.descriptionLabel': "Description";
1977
+ readonly 'admin.templates.form.descriptionPlaceholder': "Enter description (optional)...";
1978
+ readonly 'admin.templates.form.examLevelLabel': "Exam Level (CEFR)";
1979
+ readonly 'admin.templates.form.examLevelPlaceholder': "Select exam level...";
1980
+ readonly 'admin.templates.form.totalQuestionsLabel': "Total Questions";
1981
+ readonly 'admin.templates.form.totalPartsLabel': "Total Parts";
1982
+ readonly 'admin.templates.form.partsLabel': "Parts (JSON)";
1983
+ readonly 'admin.templates.form.partsPlaceholder': "[\n {\n \"partNumber\": 1,\n \"title\": \"Part 1\",\n \"questionCount\": 5,\n ...\n }\n]";
1984
+ readonly 'admin.templates.form.partsRequired': "Parts JSON is required and must be a non-empty array.";
1985
+ readonly 'admin.templates.form.partsNotArray': "Parts must be a JSON array.";
1986
+ readonly 'admin.templates.form.partsParseError': "Invalid JSON. Please check the content.";
1987
+ readonly 'admin.templates.form.validJson': "Valid JSON";
1988
+ readonly 'admin.templates.form.themeLabel': "Theme";
1989
+ readonly 'admin.templates.form.themePlaceholder': "Select theme...";
1990
+ readonly 'admin.templates.form.themeNone': "None";
1991
+ readonly 'admin.templates.edit.title': "Edit Template";
1992
+ readonly 'admin.templates.edit.desc': "Modify the template details below. Only the Parts field requires JSON input.";
1993
+ readonly 'admin.templates.edit.submit': "Save Changes";
1994
+ readonly 'admin.templates.edit.saving': "Saving...";
1995
+ readonly 'admin.templates.edit.success': "Template updated successfully";
1996
+ readonly 'admin.templates.edit.loadError': "Failed to load template data for editing";
1997
+ readonly 'bulkRooms.sidebar.label': "Bulk Exam Rooms";
1998
+ readonly 'bulkRooms.page.title': "Bulk Exam Room Provisioning";
1999
+ readonly 'bulkRooms.page.description': "Create many exam rooms for a contest across multiple branches in a single operation.";
2000
+ readonly 'bulkRooms.actions.next': "Next";
2001
+ readonly 'bulkRooms.actions.back': "Back";
2002
+ readonly 'bulkRooms.actions.preview': "Preview";
2003
+ readonly 'bulkRooms.actions.commit': "Create rooms";
2004
+ readonly 'bulkRooms.actions.confirm': "Confirm";
2005
+ readonly 'bulkRooms.actions.cancel': "Cancel";
2006
+ readonly 'bulkRooms.actions.reset': "Start over";
2007
+ readonly 'bulkRooms.actions.close': "Close";
2008
+ readonly 'bulkRooms.steps.contest': "Pick contest";
2009
+ readonly 'bulkRooms.steps.branches': "Pick branches";
2010
+ readonly 'bulkRooms.steps.config': "Configure";
2011
+ readonly 'bulkRooms.steps.preview': "Preview";
2012
+ readonly 'bulkRooms.steps.commit': "Create rooms";
2013
+ readonly 'bulkRooms.steps.indicator': "Step {current} of {total}";
2014
+ readonly 'bulkRooms.contest.title': "Pick a contest";
2015
+ readonly 'bulkRooms.contest.description': "Choose the contest the new rooms will belong to.";
2016
+ readonly 'bulkRooms.contest.placeholder': "Search contests by name...";
2017
+ readonly 'bulkRooms.contest.empty': "No contests found.";
2018
+ readonly 'bulkRooms.contest.selected': "Selected: {name}";
2019
+ readonly 'bulkRooms.branches.title': "Pick branches";
2020
+ readonly 'bulkRooms.branches.description': "Select one or more branches to provision rooms for.";
2021
+ readonly 'bulkRooms.branches.placeholder': "Choose branches...";
2022
+ readonly 'bulkRooms.branches.empty': "No branches available.";
2023
+ readonly 'bulkRooms.branches.selectedCount': "{count} branches selected";
2024
+ readonly 'bulkRooms.branches.sourceEbm': "Branch list is loaded from the EBM system.";
2025
+ readonly 'bulkRooms.branches.selectAll': "Select all branches";
2026
+ readonly 'bulkRooms.branches.selectedSummary': "{selected}/{total} branches selected";
2027
+ readonly 'bulkRooms.config.title': "Per-branch configuration";
2028
+ readonly 'bulkRooms.config.description': "Configure how rooms are generated for each selected branch.";
2029
+ readonly 'bulkRooms.config.mode.label': "Provisioning mode";
2030
+ readonly 'bulkRooms.config.mode.AUTO_CLASS': "Auto from classes";
2031
+ readonly 'bulkRooms.config.mode.MANUAL': "Manual";
2032
+ readonly 'bulkRooms.config.mode.AUTO_CLASS.help': "Generate one room per active class room of the branch.";
2033
+ readonly 'bulkRooms.config.mode.MANUAL.help': "Define rooms and student codes manually.";
2034
+ readonly 'bulkRooms.config.onlyTeacher.label': "Add branch teachers to the rooms";
2035
+ readonly 'bulkRooms.config.onlyTeacher.help': "If checked, all teachers of the branch will be added. If unchecked, no teachers will be added.";
2036
+ readonly 'bulkRooms.config.nameFormat.label': "Room name format";
2037
+ readonly 'bulkRooms.config.nameFormat.placeholder': "{branchCode} - {className}";
2038
+ readonly 'bulkRooms.config.codeFormat.label': "Room code format (optional)";
2039
+ readonly 'bulkRooms.config.codeFormat.placeholder': "{branchCode}_ROOM_{index}";
2040
+ readonly 'bulkRooms.config.tokens.help': "Supported tokens: {tokens}";
2041
+ readonly 'bulkRooms.config.classEbmIds.label': "Class room ids (optional)";
2042
+ readonly 'bulkRooms.config.classEbmIds.placeholder': "Comma-separated class room ids";
2043
+ readonly 'bulkRooms.config.classEbmIds.help': "Leave empty to use all active class rooms of the branch.";
2044
+ readonly 'bulkRooms.config.rooms.title': "Rooms (manual mode)";
2045
+ readonly 'bulkRooms.config.rooms.add': "Add room";
2046
+ readonly 'bulkRooms.config.rooms.remove': "Remove";
2047
+ readonly 'bulkRooms.config.rooms.empty': "No rooms yet. Click \"Add room\" to start.";
2048
+ readonly 'bulkRooms.config.studentCodes.label': "Student codes (optional, one per line)";
2049
+ readonly 'bulkRooms.config.studentCodes.placeholder': "HS001\nHS002\n...";
2050
+ readonly 'bulkRooms.config.studentCodes.help': "Missing users will be created on commit (default password = student code).";
2051
+ readonly 'bulkRooms.preview.title': "Preview";
2052
+ readonly 'bulkRooms.preview.description': "Review the planned rooms before confirming.";
2053
+ readonly 'bulkRooms.preview.loading': "Building plan...";
2054
+ readonly 'bulkRooms.preview.error': "Failed to build preview.";
2055
+ readonly 'bulkRooms.preview.requiresForm': "Select contest, branches and complete config to enable preview.";
2056
+ readonly 'bulkRooms.preview.summary.totalRooms': "Total rooms";
2057
+ readonly 'bulkRooms.preview.summary.totalStaff': "Total staff";
2058
+ readonly 'bulkRooms.preview.summary.totalStudents': "Total students";
2059
+ readonly 'bulkRooms.preview.summary.totalNewUsers': "New users to create";
2060
+ readonly 'bulkRooms.preview.summary.totalNewStudents': "New student accounts";
2061
+ readonly 'bulkRooms.preview.summary.totalNewTeachers': "New teacher accounts";
2062
+ readonly 'bulkRooms.preview.table.branch': "Branch";
2063
+ readonly 'bulkRooms.preview.table.room': "Room name";
2064
+ readonly 'bulkRooms.preview.table.code': "Room code";
2065
+ readonly 'bulkRooms.preview.table.staff': "Staff";
2066
+ readonly 'bulkRooms.preview.table.students': "Students";
2067
+ readonly 'bulkRooms.preview.table.newUsers': "New users";
2068
+ readonly 'bulkRooms.preview.table.roomName': "Room name";
2069
+ readonly 'bulkRooms.preview.table.roomCode': "Room code";
2070
+ readonly 'bulkRooms.preview.table.staffCount': "Staff";
2071
+ readonly 'bulkRooms.preview.table.studentCount': "Students";
2072
+ readonly 'bulkRooms.preview.table.roomCount': "{count} rooms";
2073
+ readonly 'bulkRooms.preview.table.noRooms': "No rooms for this branch.";
2074
+ readonly 'bulkRooms.preview.table.showMore': "Show {count} more rooms";
2075
+ readonly 'bulkRooms.preview.table.collapse': "Collapse";
2076
+ readonly 'bulkRooms.preview.empty': "No rooms in the plan.";
2077
+ readonly 'bulkRooms.commit.dialog.title': "Confirm bulk provisioning";
2078
+ readonly 'bulkRooms.commit.dialog.description': "You are about to create {rooms} rooms and {users} new users. This action cannot be undone.";
2079
+ readonly 'bulkRooms.commit.dialog.warning': "This will create rooms and users in the database and cannot be undone.";
2080
+ readonly 'bulkRooms.commit.dialog.confirmCheckbox': "I have reviewed the preview and confirm creating these rooms.";
2081
+ readonly 'bulkRooms.commit.dialog.committing': "Creating...";
2082
+ readonly 'bulkRooms.commit.success.title': "Provisioning succeeded";
2083
+ readonly 'bulkRooms.commit.success.description': "Created {rooms} rooms, {participants} participants and {users} new users.";
2084
+ readonly 'bulkRooms.commit.success.rooms': "Rooms created";
2085
+ readonly 'bulkRooms.commit.success.participants': "Participants";
2086
+ readonly 'bulkRooms.commit.success.users': "New users";
2087
+ readonly 'bulkRooms.commit.error.title': "Provisioning failed";
2088
+ readonly 'bulkRooms.commit.error.description': "Some branches failed to provision. See error details below.";
2089
+ readonly 'bulkRooms.commit.error.list': "Error list";
2090
+ readonly 'bulkRooms.commit.error.partial': "{count} branch(es) reported errors.";
2091
+ readonly 'bulkRooms.commit.error.branch': "Branch {branchId} (EBM #{ebmBranchId}): {reason}";
2092
+ readonly 'auth.register.success': "Registration successful! Please log in.";
2093
+ readonly 'auth.register.loadError': "Unable to load data. Please try again.";
2094
+ readonly 'auth.register.title': "Create Account";
2095
+ readonly 'auth.register.description': "Register a student account for Ocean Edu Exam";
2096
+ readonly 'auth.register.withGoogle': "Sign up with Google";
2097
+ readonly 'auth.register.signingUp': "Signing up...";
2098
+ readonly 'auth.register.nameLabel': "Full Name";
2099
+ readonly 'auth.register.namePlaceholder': "John Doe";
2100
+ readonly 'auth.register.branchLabel': "Branch";
2101
+ readonly 'auth.register.branchPlaceholder': "-- Select branch --";
2102
+ readonly 'auth.register.levelLabel': "Level";
2103
+ readonly 'auth.register.levelPlaceholder': "-- Select level --";
2104
+ readonly 'auth.register.phoneLabel': "Phone Number";
2105
+ readonly 'auth.register.phonePlaceholder': "0901234567";
2106
+ readonly 'auth.register.emailLabel': "Email";
2107
+ readonly 'auth.register.emailPlaceholder': "email@example.com";
2108
+ readonly 'auth.register.identifierLabel': "Email or Username";
2109
+ readonly 'auth.register.identifierPlaceholder': "email@example.com or username";
2110
+ readonly 'auth.register.usernameLabel': "Username";
2111
+ readonly 'auth.register.usernamePlaceholder': "username";
2112
+ readonly 'auth.register.passwordLabel': "Password";
2113
+ readonly 'auth.register.passwordPlaceholder': "••••••••";
2114
+ readonly 'auth.register.confirmPasswordLabel': "Confirm Password";
2115
+ readonly 'auth.register.confirmPasswordPlaceholder': "••••••••";
2116
+ readonly 'auth.register.submit': "Register";
2117
+ readonly 'auth.register.submitting': "Registering...";
2118
+ readonly 'auth.register.failed': "Registration failed. Please try again.";
2119
+ readonly 'auth.register.emailExists': "Email is already in use";
2120
+ readonly 'auth.register.identifierExists': "Email or username is already in use";
2121
+ readonly 'auth.register.phoneExists': "Phone number is already in use";
2122
+ readonly 'auth.register.usernameExists': "Username is already in use";
2123
+ readonly 'auth.register.loading': "Loading...";
2124
+ readonly 'auth.register.hasAccount': "Already have an account?";
2125
+ readonly 'auth.register.loginNow': "Sign in";
2126
+ readonly 'auth.upgrade.success': "Account updated! Please log in again with your new email and password.";
2127
+ readonly 'auth.upgrade.clientError': "An error occurred. Please try again.";
2128
+ readonly 'auth.upgrade.systemError': "System error. Please try again later.";
2129
+ readonly 'auth.lead.branchLoadError': "Unable to load branch list. Please reload the page.";
2130
+ readonly 'auth.lead.submitSuccess': "Registration successful! Redirecting...";
2131
+ readonly 'auth.login.title': "Ocean Edu Exam";
2132
+ readonly 'auth.login.description': "Sign in to continue using the system";
2133
+ readonly 'auth.login.withGoogle': "Sign in with Google";
2134
+ readonly 'auth.login.loggingIn': "Signing in...";
2135
+ readonly 'auth.login.secureNote': "Secure & Safe";
2136
+ readonly 'auth.login.termsAgreement': "By signing in, you agree to our";
2137
+ readonly 'auth.login.termsOfService': "Terms of Service";
2138
+ readonly 'auth.login.emailLabel': "Email";
2139
+ readonly 'auth.login.emailPlaceholder': "your-email@oceanedu.com";
2140
+ readonly 'auth.login.identifierLabel': "Email or Username";
2141
+ readonly 'auth.login.identifierPlaceholder': "email@oceanedu.com or username";
2142
+ readonly 'auth.login.passwordLabel': "Password";
2143
+ readonly 'auth.login.passwordPlaceholder': "••••••••";
2144
+ readonly 'auth.login.submit': "Sign in";
2145
+ readonly 'auth.login.submitting': "Signing in...";
2146
+ readonly 'auth.login.failed': "Sign in failed";
2147
+ readonly 'auth.login.or': "or";
2148
+ readonly 'auth.login.googleError': "Google sign in failed. Please try again.";
2149
+ readonly 'auth.login.noAccount': "Don't have an account?";
2150
+ readonly 'auth.login.registerNow': "Register now";
2151
+ readonly 'auth.completeProfile.title': "Complete Your Profile";
2152
+ readonly 'auth.completeProfile.description': "Please update your personal information to use the system";
2153
+ readonly 'auth.completeProfile.nameLabel': "Full Name";
2154
+ readonly 'auth.completeProfile.namePlaceholder': "John Doe";
2155
+ readonly 'auth.completeProfile.nameRequired': "Please enter your name";
2156
+ readonly 'auth.completeProfile.phoneLabel': "Phone Number";
2157
+ readonly 'auth.completeProfile.phonePlaceholder': "0901234567";
2158
+ readonly 'auth.completeProfile.phoneRequired': "Please enter your phone number";
2159
+ readonly 'auth.completeProfile.phoneInvalid': "Invalid phone number (10-11 digits)";
2160
+ readonly 'auth.completeProfile.levelLabel': "English Level";
2161
+ readonly 'auth.completeProfile.levelPlaceholder': "-- Select level --";
2162
+ readonly 'auth.completeProfile.levelRequired': "Please select your English level";
2163
+ readonly 'auth.completeProfile.dateOfBirthLabel': "Date of Birth";
2164
+ readonly 'auth.completeProfile.branchLabel': "Branch";
2165
+ readonly 'auth.completeProfile.branchPlaceholder': "-- Select branch (optional) --";
2166
+ readonly 'auth.completeProfile.submit': "Complete";
2167
+ readonly 'auth.completeProfile.submitting': "Updating...";
2168
+ readonly 'auth.completeProfile.success': "Profile updated successfully!";
2169
+ readonly 'auth.completeProfile.failed': "Update failed. Please try again.";
2170
+ readonly 'common.http.400': "Invalid data. Please check your input!";
2171
+ readonly 'common.http.403': "You do not have permission to perform this action!";
2172
+ readonly 'common.http.404': "Data not found!";
2173
+ readonly 'common.http.409': "Data already exists!";
2174
+ readonly 'common.http.500': "Server error. Please try again later!";
2175
+ readonly 'common.http.generic': "An error occurred. Please try again!";
2176
+ readonly 'common.cancel': "Cancel";
2177
+ readonly 'common.close': "Close";
2178
+ readonly 'common.error.system': "System error. Please try again later.";
2179
+ readonly 'common.error.loadData': "Unable to load data. Please try again.";
2180
+ readonly 'common.form.validationError': "Please check your input!";
2181
+ readonly 'common.comingSoon': "Coming soon";
2182
+ readonly 'common.examCreator.fillInfoBeforeSave': "Please fill in all information before saving!";
2183
+ readonly 'common.examCreator.invalidQuestions': "Invalid question(s): {errors}";
2184
+ readonly 'common.examCreator.noValidData': "No valid question data";
2185
+ readonly 'common.examCreator.saveError': "Error saving question {index}";
2186
+ readonly 'common.examCreator.saveWithBankSuccess': "Successfully saved question {index} and added to question bank with code \"{code}\".";
2187
+ readonly 'common.examCreator.saveSuccess': "Successfully saved question {index}.";
2188
+ readonly 'common.examCreator.bankSelected': "Question selected from bank. Click \"Save question\" to save.";
2189
+ readonly 'common.examCreator.saveBeforeExit': "Please save the current question before exiting.";
2190
+ readonly 'common.examCreator.previewLoadError': "Unable to load questions";
2191
+ readonly 'common.autoFill.loadBankError': "Unable to load question bank information";
2192
+ readonly 'common.autoFill.noQuestions': "No questions to fill";
2193
+ readonly 'common.autoFill.success': "Filled {count} questions from bank";
2194
+ readonly 'common.autoFill.noneApplied': "No questions were filled";
2195
+ readonly 'common.autoFill.error': "An error occurred while auto-filling questions";
2196
+ readonly 'common.question.create.fillInfo': "Please fill in all information!";
2197
+ readonly 'common.question.create.success': "Question created successfully.";
2198
+ readonly 'common.questionGroup.create.fillInfo': "Please fill in all information and select at least 1 question!";
2199
+ readonly 'common.questionGroup.create.success': "Question group created successfully!";
2200
+ readonly 'common.multipleChoice.minAnswers': "Minimum 2 answers required!";
2201
+ readonly 'common.multipleChoice.enterQuestion': "Please enter the question!";
2202
+ readonly 'common.multipleChoice.atLeastTwo': "Must have at least 2 answers!";
2203
+ readonly 'common.multipleChoice.selectCorrect': "Please select the correct answer!";
2204
+ readonly 'common.questionType.missingAnswer': "Missing cell #{index} at position ({row}, {col}): Please enter an answer!";
2205
+ readonly 'common.questionType.addImage': "Question {index}: Please add an image";
2206
+ readonly 'common.questionType.enterContent': "Question {index}: Please enter content";
2207
+ readonly 'common.questionType.answerTooLong': "Answer cannot exceed {limit} words";
2208
+ readonly 'common.audio.maxPlayReached': "You can only listen up to {maxPlay} times!";
2209
+ readonly 'layout.sidebar.admin.dashboard': "Dashboard";
2210
+ readonly 'layout.sidebar.admin.users': "User Management";
2211
+ readonly 'layout.sidebar.admin.roles': "Roles";
2212
+ readonly 'layout.sidebar.admin.classrooms': "Class Management";
2213
+ readonly 'layout.sidebar.admin.branches': "Branch Management";
2214
+ readonly 'layout.sidebar.admin.contests': "Contest Management";
2215
+ readonly 'layout.sidebar.admin.rooms': "Room Management";
2216
+ readonly 'layout.sidebar.admin.exams': "Exam Management";
2217
+ readonly 'layout.sidebar.admin.questionBanks': "Question Banks";
2218
+ readonly 'layout.sidebar.admin.schedules': "Schedule Management";
2219
+ readonly 'layout.sidebar.admin.templates': "Exam Templates";
2220
+ readonly 'layout.sidebar.admin.testParticipants': "Test Participants";
2221
+ readonly 'layout.sidebar.admin.reports': "Reports";
2222
+ readonly 'layout.sidebar.admin.settings': "System Settings";
2223
+ readonly 'layout.sidebar.student.home': "Home";
2224
+ readonly 'layout.sidebar.student.contests': "Contests";
2225
+ readonly 'layout.sidebar.student.discoverContests': "Discover Contests";
2226
+ readonly 'layout.sidebar.student.myContests': "My Contests";
2227
+ readonly 'layout.sidebar.student.mySchedule': "My Schedule";
2228
+ readonly 'layout.sidebar.student.examRooms': "Exam Rooms";
2229
+ readonly 'layout.sidebar.student.roomList': "Room List";
2230
+ readonly 'layout.sidebar.student.joinedRooms': "Joined Rooms";
2231
+ readonly 'layout.sidebar.student.results': "Results";
2232
+ readonly 'layout.sidebar.student.history': "Exam History";
2233
+ readonly 'layout.sidebar.logout': "Log out";
2234
+ readonly 'layout.sidebar.loggingOut': "Logging out...";
2235
+ readonly 'layout.sidebar.expand': "Expand menu";
2236
+ readonly 'layout.sidebar.collapse': "Collapse menu";
2237
+ readonly 'layout.sidebar.systemAdmin.dashboard': "Dashboard";
2238
+ readonly 'layout.sidebar.systemAdmin.users': "User Management";
2239
+ readonly 'layout.topbar.greeting': "Hello, {name}";
2240
+ readonly 'layout.topbar.notification': "Notifications";
2241
+ readonly 'layout.topbar.userMenu': "User menu";
2242
+ readonly 'layout.topbar.profile': "Profile";
2243
+ readonly 'layout.topbar.changePassword': "Change Password";
2244
+ readonly 'layout.topbar.systemAdmin': "System Admin";
2245
+ readonly 'common.pagination.showing': "Showing {start} - {end} of {total} records";
2246
+ readonly 'common.pagination.display': "Show:";
2247
+ readonly 'common.pagination.first': "First";
2248
+ readonly 'common.pagination.previous': "Previous";
2249
+ readonly 'common.pagination.next': "Next";
2250
+ readonly 'common.pagination.last': "Last";
2251
+ readonly 'common.table.loading': "Loading data...";
2252
+ readonly 'common.table.showing': "Showing {count} of {total} records";
2253
+ readonly 'common.table.all': "All";
2254
+ readonly 'common.table.clearFilters': "Clear filters";
2255
+ readonly 'common.table.defaultTitle': "List";
2256
+ readonly 'common.table.noData': "No data";
2257
+ readonly 'common.table.search': "Search...";
2258
+ readonly 'common.badge.role.systemAdmin': "System Admin";
2259
+ readonly 'common.badge.role.admin': "Admin";
2260
+ readonly 'common.badge.role.teacher': "Teacher";
2261
+ readonly 'common.badge.role.student': "Student";
2262
+ readonly 'common.badge.status.active': "Active";
2263
+ readonly 'common.badge.status.inactive': "Inactive";
2264
+ readonly 'common.badge.status.verified': "Verified";
2265
+ readonly 'common.badge.status.pending': "Pending";
2266
+ readonly 'common.badge.status.processing': "Processing";
2267
+ readonly 'common.badge.status.completed': "Completed";
2268
+ readonly 'common.badge.status.approved': "Approved";
2269
+ readonly 'common.badge.status.graded': "Graded";
2270
+ readonly 'common.badge.status.draft': "Draft";
2271
+ readonly 'common.badge.status.rejected': "Rejected";
2272
+ readonly 'common.badge.status.cancelled': "Cancelled";
2273
+ readonly 'common.badge.status.failed': "Failed";
2274
+ readonly 'common.badge.status.error': "Error";
2275
+ readonly 'common.badge.status.locked': "Locked";
2276
+ readonly 'common.badge.status.open': "Open";
2277
+ readonly 'common.badge.status.ready': "Ready";
2278
+ readonly 'common.badge.status.inProgress': "In Progress";
2279
+ readonly 'common.badge.status.paid': "Paid";
2280
+ readonly 'common.badge.status.success': "Success";
2281
+ readonly 'common.badge.status.info': "Info";
2282
+ readonly 'common.badge.status.unpaid': "Unpaid";
2283
+ readonly 'common.badge.status.warning': "Warning";
2284
+ readonly 'common.badge.status.overdue': "Overdue";
2285
+ readonly 'common.badge.status.disabled': "Disabled";
2286
+ readonly 'common.badge.status.archived': "Archived";
2287
+ readonly 'common.badge.source.selfRegistered': "Self-registered";
2288
+ readonly 'common.badge.source.createdByAdmin': "Created by admin";
2289
+ readonly 'common.badge.source.createdByTeacher': "Created by teacher";
2290
+ readonly 'common.badge.source.createdFromEBM': "Synced from EBM";
2291
+ };
2292
+ export default en;
2293
+ //# sourceMappingURL=en.d.ts.map