@syllst/th 0.1.3 → 0.2.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 (330) hide show
  1. package/dist/{index-of_athp-.js → index-4uNMctdq.js} +13 -13
  2. package/dist/{index-of_athp-.js.map → index-4uNMctdq.js.map} +1 -1
  3. package/dist/{index-Dy38Hmlm.js → index-BM-LWlCm.js} +10 -10
  4. package/dist/{index-Dy38Hmlm.js.map → index-BM-LWlCm.js.map} +1 -1
  5. package/dist/{index-CTQ45BVw.js → index-Bjym0crS.js} +8 -8
  6. package/dist/{index-CTQ45BVw.js.map → index-Bjym0crS.js.map} +1 -1
  7. package/dist/{index-B029m98V.js → index-BuKXw7-Z.js} +7 -7
  8. package/dist/{index-B029m98V.js.map → index-BuKXw7-Z.js.map} +1 -1
  9. package/dist/{index-CoqP9GZL.js → index-ByS0o5dz.js} +10 -10
  10. package/dist/{index-CoqP9GZL.js.map → index-ByS0o5dz.js.map} +1 -1
  11. package/dist/{index-BCA5Llwg.js → index-C9VnG7dT.js} +10 -10
  12. package/dist/{index-BCA5Llwg.js.map → index-C9VnG7dT.js.map} +1 -1
  13. package/dist/{index-vuRo2mLK.js → index-CPQkjFjV.js} +9 -9
  14. package/dist/{index-vuRo2mLK.js.map → index-CPQkjFjV.js.map} +1 -1
  15. package/dist/{index-BFcg5D_W.js → index-CkHd3Fal.js} +12 -12
  16. package/dist/{index-BFcg5D_W.js.map → index-CkHd3Fal.js.map} +1 -1
  17. package/dist/{index-CB8M6CK6.js → index-DBkPBXe2.js} +10 -10
  18. package/dist/{index-CB8M6CK6.js.map → index-DBkPBXe2.js.map} +1 -1
  19. package/dist/index.d.ts +1 -1
  20. package/dist/index.js +18 -18
  21. package/dist/{lesson-01--9NOyHZ6.js → lesson-01-B0wtSaSl.js} +21 -9
  22. package/dist/lesson-01-B0wtSaSl.js.map +1 -0
  23. package/dist/{lesson-01-97FtYE6g.js → lesson-01-C9vbUlA4.js} +14 -6
  24. package/dist/lesson-01-C9vbUlA4.js.map +1 -0
  25. package/dist/{lesson-01-CF4tJfZ3.js → lesson-01-CPmBFTe0.js} +28 -16
  26. package/dist/lesson-01-CPmBFTe0.js.map +1 -0
  27. package/dist/{lesson-01-3hBted4A.js → lesson-01-Cc4Ws8eR.js} +25 -14
  28. package/dist/lesson-01-Cc4Ws8eR.js.map +1 -0
  29. package/dist/{lesson-01-BYKAZiua.js → lesson-01-Cm5k-m-9.js} +14 -8
  30. package/dist/lesson-01-Cm5k-m-9.js.map +1 -0
  31. package/dist/{lesson-01-WV3ic8Ok.js → lesson-01-DELblCNj.js} +11 -5
  32. package/dist/lesson-01-DELblCNj.js.map +1 -0
  33. package/dist/{lesson-01-CRx-yw4C.js → lesson-01-Djl_72e7.js} +14 -6
  34. package/dist/lesson-01-Djl_72e7.js.map +1 -0
  35. package/dist/{lesson-01-BhjY6ArF.js → lesson-01-LEHTeGQQ.js} +17 -9
  36. package/dist/lesson-01-LEHTeGQQ.js.map +1 -0
  37. package/dist/{lesson-01-BNdHXAGR.js → lesson-01-ih_-OO_O.js} +14 -6
  38. package/dist/lesson-01-ih_-OO_O.js.map +1 -0
  39. package/dist/{lesson-02-C8dfzXvq.js → lesson-02-B2aZrKUQ.js} +14 -6
  40. package/dist/lesson-02-B2aZrKUQ.js.map +1 -0
  41. package/dist/{lesson-02-C2ALLvoT.js → lesson-02-BI1Vnwiz.js} +17 -9
  42. package/dist/lesson-02-BI1Vnwiz.js.map +1 -0
  43. package/dist/{lesson-02-BGnp0Ik_.js → lesson-02-BXbwEMaL.js} +27 -15
  44. package/dist/lesson-02-BXbwEMaL.js.map +1 -0
  45. package/dist/{lesson-02-BAbq-QGP.js → lesson-02-CbJJ5Amt.js} +24 -14
  46. package/dist/lesson-02-CbJJ5Amt.js.map +1 -0
  47. package/dist/{lesson-02-Bm9EJuN8.js → lesson-02-DGrALAgG.js} +21 -9
  48. package/dist/lesson-02-DGrALAgG.js.map +1 -0
  49. package/dist/{lesson-02-C0ZL4z3c.js → lesson-02-DcMDDBDL.js} +11 -5
  50. package/dist/lesson-02-DcMDDBDL.js.map +1 -0
  51. package/dist/{lesson-02-B2Xg7RVU.js → lesson-02-Dk59HZWp.js} +17 -9
  52. package/dist/lesson-02-Dk59HZWp.js.map +1 -0
  53. package/dist/{lesson-02-BO3BXPMJ.js → lesson-02-L8oNhBej.js} +14 -8
  54. package/dist/lesson-02-L8oNhBej.js.map +1 -0
  55. package/dist/{lesson-02-CsejVbCo.js → lesson-02-VDOme3ES.js} +17 -9
  56. package/dist/lesson-02-VDOme3ES.js.map +1 -0
  57. package/dist/{lesson-03-DV2SUWVH.js → lesson-03-9WioSe19.js} +21 -9
  58. package/dist/lesson-03-9WioSe19.js.map +1 -0
  59. package/dist/{lesson-03-DiV17_Os.js → lesson-03-BZutWzMD.js} +14 -6
  60. package/dist/lesson-03-BZutWzMD.js.map +1 -0
  61. package/dist/{lesson-03-Xc8-2Yt3.js → lesson-03-CSIF5xRS.js} +14 -8
  62. package/dist/lesson-03-CSIF5xRS.js.map +1 -0
  63. package/dist/{lesson-03-DrJgbfDQ.js → lesson-03-CSKig363.js} +17 -9
  64. package/dist/lesson-03-CSKig363.js.map +1 -0
  65. package/dist/{lesson-03-XVahXvgf.js → lesson-03-CoDPKwa1.js} +21 -14
  66. package/dist/lesson-03-CoDPKwa1.js.map +1 -0
  67. package/dist/{lesson-03-8NtAeqFh.js → lesson-03-DPJOG2M_.js} +14 -8
  68. package/dist/lesson-03-DPJOG2M_.js.map +1 -0
  69. package/dist/{lesson-03-CKTNtgY1.js → lesson-03-DkjCuJ26.js} +17 -9
  70. package/dist/lesson-03-DkjCuJ26.js.map +1 -0
  71. package/dist/{lesson-03-BdZfKRhq.js → lesson-03-DucbRMOQ.js} +17 -9
  72. package/dist/lesson-03-DucbRMOQ.js.map +1 -0
  73. package/dist/{lesson-03-D8va_Q9B.js → lesson-03-MIne1PbH.js} +26 -14
  74. package/dist/lesson-03-MIne1PbH.js.map +1 -0
  75. package/dist/{lesson-04-Dfc7S4nT.js → lesson-04-0Pj_x1DU.js} +17 -9
  76. package/dist/lesson-04-0Pj_x1DU.js.map +1 -0
  77. package/dist/{lesson-04-ZrSBM0BX.js → lesson-04-B9h0p9kE.js} +14 -8
  78. package/dist/lesson-04-B9h0p9kE.js.map +1 -0
  79. package/dist/{lesson-04-DEEPJ_rd.js → lesson-04-BLuPI1-X.js} +22 -13
  80. package/dist/lesson-04-BLuPI1-X.js.map +1 -0
  81. package/dist/{lesson-04-rapx_3vA.js → lesson-04-CmDvofL4.js} +17 -9
  82. package/dist/lesson-04-CmDvofL4.js.map +1 -0
  83. package/dist/{lesson-04-DtXVhdGB.js → lesson-04-DGKHK4LW.js} +17 -9
  84. package/dist/lesson-04-DGKHK4LW.js.map +1 -0
  85. package/dist/{lesson-04-CtNr2B3E.js → lesson-04-DUcHZzsk.js} +21 -9
  86. package/dist/lesson-04-DUcHZzsk.js.map +1 -0
  87. package/dist/{lesson-04-BpRrNmzO.js → lesson-04-DnVIXXk-.js} +14 -8
  88. package/dist/lesson-04-DnVIXXk-.js.map +1 -0
  89. package/dist/{lesson-04-ioLXnB0j.js → lesson-04-FZnIE7tu.js} +27 -15
  90. package/dist/lesson-04-FZnIE7tu.js.map +1 -0
  91. package/dist/{lesson-04-D__vMCyA.js → lesson-04-ToX3nRz1.js} +17 -9
  92. package/dist/lesson-04-ToX3nRz1.js.map +1 -0
  93. package/dist/{lesson-05-D_GdROUn.js → lesson-05-2aTCGXMh.js} +14 -8
  94. package/dist/lesson-05-2aTCGXMh.js.map +1 -0
  95. package/dist/{lesson-05-ip400cxe.js → lesson-05-BvitRdE8.js} +28 -16
  96. package/dist/lesson-05-BvitRdE8.js.map +1 -0
  97. package/dist/{lesson-05-D1d3kc3M.js → lesson-05-CgXGkcjS.js} +14 -8
  98. package/dist/lesson-05-CgXGkcjS.js.map +1 -0
  99. package/dist/{lesson-05-D2SVU-I0.js → lesson-05-ClfrUrvX.js} +17 -9
  100. package/dist/lesson-05-ClfrUrvX.js.map +1 -0
  101. package/dist/{lesson-05-CKxXcooO.js → lesson-05-D2zf9n7k.js} +23 -13
  102. package/dist/lesson-05-D2zf9n7k.js.map +1 -0
  103. package/dist/{lesson-05-DusKUtbm.js → lesson-05-DWquBfdl.js} +21 -9
  104. package/dist/lesson-05-DWquBfdl.js.map +1 -0
  105. package/dist/{lesson-05-Bm6fg-DJ.js → lesson-05-DpIkwhJ8.js} +17 -9
  106. package/dist/lesson-05-DpIkwhJ8.js.map +1 -0
  107. package/dist/{lesson-05-DBsHyFlt.js → lesson-05-UYz39ORV.js} +17 -9
  108. package/dist/lesson-05-UYz39ORV.js.map +1 -0
  109. package/dist/{lesson-05-DXOLS7G0.js → lesson-05-t6XuANiZ.js} +17 -9
  110. package/dist/lesson-05-t6XuANiZ.js.map +1 -0
  111. package/dist/{lesson-06-1ZsbrE1a.js → lesson-06-B2y08mKv.js} +17 -9
  112. package/dist/lesson-06-B2y08mKv.js.map +1 -0
  113. package/dist/{lesson-06-1CE05TRX.js → lesson-06-CHqaVQix.js} +16 -10
  114. package/dist/lesson-06-CHqaVQix.js.map +1 -0
  115. package/dist/{lesson-06-Bliedg7n.js → lesson-06-CaCZBX1V.js} +17 -9
  116. package/dist/lesson-06-CaCZBX1V.js.map +1 -0
  117. package/dist/{lesson-06-Du9J8sYl.js → lesson-06-ClplsJBT.js} +30 -18
  118. package/dist/lesson-06-ClplsJBT.js.map +1 -0
  119. package/dist/{lesson-06-BG26PBTF.js → lesson-06-CzGnNKo5.js} +14 -8
  120. package/dist/lesson-06-CzGnNKo5.js.map +1 -0
  121. package/dist/{lesson-06-CnKkcUb-.js → lesson-06-Dg_bQLNC.js} +17 -9
  122. package/dist/lesson-06-Dg_bQLNC.js.map +1 -0
  123. package/dist/{lesson-06-Aw-X-HMV.js → lesson-06-OWFMgO0a.js} +23 -14
  124. package/dist/lesson-06-OWFMgO0a.js.map +1 -0
  125. package/dist/{lesson-06-CvN9pDsE.js → lesson-06-Q2aRAzws.js} +17 -9
  126. package/dist/lesson-06-Q2aRAzws.js.map +1 -0
  127. package/dist/{lesson-07-DjCMCYkK.js → lesson-07-BLDUA_Ff.js} +17 -9
  128. package/dist/lesson-07-BLDUA_Ff.js.map +1 -0
  129. package/dist/{lesson-07-DezS1ojS.js → lesson-07-BpyF1Ssq.js} +27 -15
  130. package/dist/lesson-07-BpyF1Ssq.js.map +1 -0
  131. package/dist/{lesson-07-rvSSQiVh.js → lesson-07-C4GrfDTW.js} +25 -13
  132. package/dist/lesson-07-C4GrfDTW.js.map +1 -0
  133. package/dist/{lesson-07-CTFSd9gF.js → lesson-07-CVCUt1Jn.js} +14 -8
  134. package/dist/lesson-07-CVCUt1Jn.js.map +1 -0
  135. package/dist/{lesson-07-8zdPFyjE.js → lesson-07-DQFXCZsZ.js} +17 -9
  136. package/dist/lesson-07-DQFXCZsZ.js.map +1 -0
  137. package/dist/{lesson-07-X6anzbAn.js → lesson-07-Dcry2Yjo.js} +17 -9
  138. package/dist/lesson-07-Dcry2Yjo.js.map +1 -0
  139. package/dist/{lesson-07-B9bkJ3gP.js → lesson-07-JS_cqdNr.js} +14 -8
  140. package/dist/lesson-07-JS_cqdNr.js.map +1 -0
  141. package/dist/{lesson-08-CeDWopKc.js → lesson-08-18gscaS0.js} +25 -13
  142. package/dist/lesson-08-18gscaS0.js.map +1 -0
  143. package/dist/{lesson-08-Cyzy_VeP.js → lesson-08-2kBUq_B2.js} +14 -8
  144. package/dist/lesson-08-2kBUq_B2.js.map +1 -0
  145. package/dist/{lesson-08-BYfkPBkH.js → lesson-08-BP5lpiGe.js} +17 -9
  146. package/dist/lesson-08-BP5lpiGe.js.map +1 -0
  147. package/dist/{lesson-08-Bb_v_gD-.js → lesson-08-BXm9GgdN.js} +14 -8
  148. package/dist/lesson-08-BXm9GgdN.js.map +1 -0
  149. package/dist/{lesson-08-BqW5C_OE.js → lesson-08-Bru0PdEK.js} +21 -9
  150. package/dist/lesson-08-Bru0PdEK.js.map +1 -0
  151. package/dist/{lesson-08-hJlci9W5.js → lesson-08-Dd-8cbGW.js} +17 -9
  152. package/dist/lesson-08-Dd-8cbGW.js.map +1 -0
  153. package/dist/{lesson-09-DHRHZIc1.js → lesson-09-B1qWE3Yl.js} +27 -15
  154. package/dist/lesson-09-B1qWE3Yl.js.map +1 -0
  155. package/dist/{lesson-09-BQ1CZCjT.js → lesson-09-B5Vb70xj.js} +14 -8
  156. package/dist/lesson-09-B5Vb70xj.js.map +1 -0
  157. package/dist/{lesson-10-BdfkVT7s.js → lesson-10-00qNLc7A.js} +25 -13
  158. package/dist/lesson-10-00qNLc7A.js.map +1 -0
  159. package/dist/{lesson-10-C7YEQ8et.js → lesson-10-Dw-Jtm3D.js} +14 -8
  160. package/dist/lesson-10-Dw-Jtm3D.js.map +1 -0
  161. package/dist/{lesson-11-oJQ8ZxJk.js → lesson-11-BM3R_S7I.js} +25 -13
  162. package/dist/lesson-11-BM3R_S7I.js.map +1 -0
  163. package/dist/{lesson-12-D69m5ETy.js → lesson-12-D1Wx7CyK.js} +33 -21
  164. package/dist/lesson-12-D1Wx7CyK.js.map +1 -0
  165. package/dist/skills-hcn-pGD0.js +244 -0
  166. package/dist/skills-hcn-pGD0.js.map +1 -0
  167. package/dist/syllabi/alphabet/index.js +1 -1
  168. package/dist/syllabi/dialogue/index.d.ts +1 -1
  169. package/dist/syllabi/dialogue/index.js +2 -2
  170. package/dist/syllabi/essentials/index.d.ts +1 -1
  171. package/dist/syllabi/essentials/index.js +2 -2
  172. package/dist/syllabi/food/index.d.ts +1 -1
  173. package/dist/syllabi/food/index.js +2 -2
  174. package/dist/syllabi/grammar/index.d.ts +1 -1
  175. package/dist/syllabi/grammar/index.js +2 -2
  176. package/dist/syllabi/numbers/index.d.ts +1 -1
  177. package/dist/syllabi/numbers/index.js +2 -2
  178. package/dist/syllabi/reading/index.d.ts +1 -1
  179. package/dist/syllabi/reading/index.js +2 -2
  180. package/dist/syllabi/travel/index.d.ts +1 -1
  181. package/dist/syllabi/travel/index.js +2 -2
  182. package/dist/syllabi/vowels-tones/index.d.ts +1 -1
  183. package/dist/syllabi/vowels-tones/index.js +2 -2
  184. package/package.json +5 -5
  185. package/src/syllabi/alphabet/lessons/lesson-01.mdx +24 -13
  186. package/src/syllabi/alphabet/lessons/lesson-02.mdx +23 -13
  187. package/src/syllabi/alphabet/lessons/lesson-03.mdx +20 -13
  188. package/src/syllabi/alphabet/lessons/lesson-04.mdx +21 -12
  189. package/src/syllabi/alphabet/lessons/lesson-05.mdx +22 -12
  190. package/src/syllabi/alphabet/lessons/lesson-06.mdx +22 -13
  191. package/src/syllabi/alphabet/lessons/lesson-07.mdx +26 -14
  192. package/src/syllabi/alphabet/lessons/lesson-08.mdx +24 -12
  193. package/src/syllabi/alphabet/lessons/lesson-09.mdx +26 -14
  194. package/src/syllabi/alphabet/lessons/lesson-10.mdx +24 -12
  195. package/src/syllabi/alphabet/lessons/lesson-11.mdx +24 -12
  196. package/src/syllabi/alphabet/lessons/lesson-12.mdx +32 -20
  197. package/src/syllabi/dialogue/lessons/lesson-01.mdx +13 -5
  198. package/src/syllabi/dialogue/lessons/lesson-02.mdx +13 -5
  199. package/src/syllabi/dialogue/lessons/lesson-03.mdx +13 -5
  200. package/src/syllabi/dialogue/lessons/lesson-04.mdx +16 -8
  201. package/src/syllabi/dialogue/lessons/lesson-05.mdx +16 -8
  202. package/src/syllabi/dialogue/lessons/lesson-06.mdx +16 -8
  203. package/src/syllabi/dialogue/lessons/lesson-07.mdx +16 -8
  204. package/src/syllabi/dialogue/lessons/lesson-08.mdx +16 -8
  205. package/src/syllabi/essentials/lessons/lesson-01.mdx +13 -5
  206. package/src/syllabi/essentials/lessons/lesson-02.mdx +16 -8
  207. package/src/syllabi/essentials/lessons/lesson-03.mdx +16 -8
  208. package/src/syllabi/essentials/lessons/lesson-04.mdx +16 -8
  209. package/src/syllabi/essentials/lessons/lesson-05.mdx +16 -8
  210. package/src/syllabi/essentials/lessons/lesson-06.mdx +16 -8
  211. package/src/syllabi/food/lessons/lesson-01.mdx +13 -5
  212. package/src/syllabi/food/lessons/lesson-02.mdx +16 -8
  213. package/src/syllabi/food/lessons/lesson-03.mdx +16 -8
  214. package/src/syllabi/food/lessons/lesson-04.mdx +16 -8
  215. package/src/syllabi/food/lessons/lesson-05.mdx +16 -8
  216. package/src/syllabi/food/lessons/lesson-06.mdx +16 -8
  217. package/src/syllabi/food/lessons/lesson-07.mdx +16 -8
  218. package/src/syllabi/food/lessons/lesson-08.mdx +16 -8
  219. package/src/syllabi/grammar/lessons/lesson-01.mdx +10 -4
  220. package/src/syllabi/grammar/lessons/lesson-02.mdx +10 -4
  221. package/src/syllabi/grammar/lessons/lesson-03.mdx +13 -7
  222. package/src/syllabi/grammar/lessons/lesson-04.mdx +13 -7
  223. package/src/syllabi/grammar/lessons/lesson-05.mdx +13 -7
  224. package/src/syllabi/grammar/lessons/lesson-06.mdx +13 -7
  225. package/src/syllabi/grammar/lessons/lesson-07.mdx +13 -7
  226. package/src/syllabi/grammar/lessons/lesson-08.mdx +13 -7
  227. package/src/syllabi/numbers/lessons/lesson-01.mdx +27 -15
  228. package/src/syllabi/numbers/lessons/lesson-02.mdx +20 -8
  229. package/src/syllabi/numbers/lessons/lesson-03.mdx +20 -8
  230. package/src/syllabi/numbers/lessons/lesson-04.mdx +20 -8
  231. package/src/syllabi/numbers/lessons/lesson-05.mdx +20 -8
  232. package/src/syllabi/reading/lessons/lesson-01.mdx +13 -7
  233. package/src/syllabi/reading/lessons/lesson-02.mdx +13 -7
  234. package/src/syllabi/reading/lessons/lesson-03.mdx +13 -7
  235. package/src/syllabi/reading/lessons/lesson-04.mdx +13 -7
  236. package/src/syllabi/reading/lessons/lesson-05.mdx +13 -7
  237. package/src/syllabi/reading/lessons/lesson-06.mdx +13 -7
  238. package/src/syllabi/reading/lessons/lesson-07.mdx +13 -7
  239. package/src/syllabi/reading/lessons/lesson-08.mdx +13 -7
  240. package/src/syllabi/reading/lessons/lesson-09.mdx +13 -7
  241. package/src/syllabi/reading/lessons/lesson-10.mdx +13 -7
  242. package/src/syllabi/travel/lessons/lesson-01.mdx +16 -8
  243. package/src/syllabi/travel/lessons/lesson-02.mdx +16 -8
  244. package/src/syllabi/travel/lessons/lesson-03.mdx +16 -8
  245. package/src/syllabi/travel/lessons/lesson-04.mdx +16 -8
  246. package/src/syllabi/travel/lessons/lesson-05.mdx +16 -8
  247. package/src/syllabi/travel/lessons/lesson-06.mdx +16 -8
  248. package/src/syllabi/travel/lessons/lesson-07.mdx +16 -8
  249. package/src/syllabi/vowels-tones/lessons/lesson-01.mdx +20 -8
  250. package/src/syllabi/vowels-tones/lessons/lesson-02.mdx +26 -14
  251. package/src/syllabi/vowels-tones/lessons/lesson-03.mdx +25 -13
  252. package/src/syllabi/vowels-tones/lessons/lesson-04.mdx +24 -12
  253. package/src/syllabi/vowels-tones/lessons/lesson-05.mdx +27 -15
  254. package/src/syllabi/vowels-tones/lessons/lesson-06.mdx +29 -17
  255. package/src/syllabi/vowels-tones/lessons/lesson-07.mdx +24 -12
  256. package/src/syllabi/vowels-tones/lessons/lesson-08.mdx +20 -8
  257. package/dist/index-DADMaTE7.js +0 -27
  258. package/dist/index-DADMaTE7.js.map +0 -1
  259. package/dist/lesson-01--9NOyHZ6.js.map +0 -1
  260. package/dist/lesson-01-3hBted4A.js.map +0 -1
  261. package/dist/lesson-01-97FtYE6g.js.map +0 -1
  262. package/dist/lesson-01-BNdHXAGR.js.map +0 -1
  263. package/dist/lesson-01-BYKAZiua.js.map +0 -1
  264. package/dist/lesson-01-BhjY6ArF.js.map +0 -1
  265. package/dist/lesson-01-CF4tJfZ3.js.map +0 -1
  266. package/dist/lesson-01-CRx-yw4C.js.map +0 -1
  267. package/dist/lesson-01-WV3ic8Ok.js.map +0 -1
  268. package/dist/lesson-02-B2Xg7RVU.js.map +0 -1
  269. package/dist/lesson-02-BAbq-QGP.js.map +0 -1
  270. package/dist/lesson-02-BGnp0Ik_.js.map +0 -1
  271. package/dist/lesson-02-BO3BXPMJ.js.map +0 -1
  272. package/dist/lesson-02-Bm9EJuN8.js.map +0 -1
  273. package/dist/lesson-02-C0ZL4z3c.js.map +0 -1
  274. package/dist/lesson-02-C2ALLvoT.js.map +0 -1
  275. package/dist/lesson-02-C8dfzXvq.js.map +0 -1
  276. package/dist/lesson-02-CsejVbCo.js.map +0 -1
  277. package/dist/lesson-03-8NtAeqFh.js.map +0 -1
  278. package/dist/lesson-03-BdZfKRhq.js.map +0 -1
  279. package/dist/lesson-03-CKTNtgY1.js.map +0 -1
  280. package/dist/lesson-03-D8va_Q9B.js.map +0 -1
  281. package/dist/lesson-03-DV2SUWVH.js.map +0 -1
  282. package/dist/lesson-03-DiV17_Os.js.map +0 -1
  283. package/dist/lesson-03-DrJgbfDQ.js.map +0 -1
  284. package/dist/lesson-03-XVahXvgf.js.map +0 -1
  285. package/dist/lesson-03-Xc8-2Yt3.js.map +0 -1
  286. package/dist/lesson-04-BpRrNmzO.js.map +0 -1
  287. package/dist/lesson-04-CtNr2B3E.js.map +0 -1
  288. package/dist/lesson-04-DEEPJ_rd.js.map +0 -1
  289. package/dist/lesson-04-D__vMCyA.js.map +0 -1
  290. package/dist/lesson-04-Dfc7S4nT.js.map +0 -1
  291. package/dist/lesson-04-DtXVhdGB.js.map +0 -1
  292. package/dist/lesson-04-ZrSBM0BX.js.map +0 -1
  293. package/dist/lesson-04-ioLXnB0j.js.map +0 -1
  294. package/dist/lesson-04-rapx_3vA.js.map +0 -1
  295. package/dist/lesson-05-Bm6fg-DJ.js.map +0 -1
  296. package/dist/lesson-05-CKxXcooO.js.map +0 -1
  297. package/dist/lesson-05-D1d3kc3M.js.map +0 -1
  298. package/dist/lesson-05-D2SVU-I0.js.map +0 -1
  299. package/dist/lesson-05-DBsHyFlt.js.map +0 -1
  300. package/dist/lesson-05-DXOLS7G0.js.map +0 -1
  301. package/dist/lesson-05-D_GdROUn.js.map +0 -1
  302. package/dist/lesson-05-DusKUtbm.js.map +0 -1
  303. package/dist/lesson-05-ip400cxe.js.map +0 -1
  304. package/dist/lesson-06-1CE05TRX.js.map +0 -1
  305. package/dist/lesson-06-1ZsbrE1a.js.map +0 -1
  306. package/dist/lesson-06-Aw-X-HMV.js.map +0 -1
  307. package/dist/lesson-06-BG26PBTF.js.map +0 -1
  308. package/dist/lesson-06-Bliedg7n.js.map +0 -1
  309. package/dist/lesson-06-CnKkcUb-.js.map +0 -1
  310. package/dist/lesson-06-CvN9pDsE.js.map +0 -1
  311. package/dist/lesson-06-Du9J8sYl.js.map +0 -1
  312. package/dist/lesson-07-8zdPFyjE.js.map +0 -1
  313. package/dist/lesson-07-B9bkJ3gP.js.map +0 -1
  314. package/dist/lesson-07-CTFSd9gF.js.map +0 -1
  315. package/dist/lesson-07-DezS1ojS.js.map +0 -1
  316. package/dist/lesson-07-DjCMCYkK.js.map +0 -1
  317. package/dist/lesson-07-X6anzbAn.js.map +0 -1
  318. package/dist/lesson-07-rvSSQiVh.js.map +0 -1
  319. package/dist/lesson-08-BYfkPBkH.js.map +0 -1
  320. package/dist/lesson-08-Bb_v_gD-.js.map +0 -1
  321. package/dist/lesson-08-BqW5C_OE.js.map +0 -1
  322. package/dist/lesson-08-CeDWopKc.js.map +0 -1
  323. package/dist/lesson-08-Cyzy_VeP.js.map +0 -1
  324. package/dist/lesson-08-hJlci9W5.js.map +0 -1
  325. package/dist/lesson-09-BQ1CZCjT.js.map +0 -1
  326. package/dist/lesson-09-DHRHZIc1.js.map +0 -1
  327. package/dist/lesson-10-BdfkVT7s.js.map +0 -1
  328. package/dist/lesson-10-C7YEQ8et.js.map +0 -1
  329. package/dist/lesson-11-oJQ8ZxJk.js.map +0 -1
  330. package/dist/lesson-12-D69m5ETy.js.map +0 -1
@@ -15,11 +15,23 @@ metadata:
15
15
  estimatedTime: 30
16
16
  prerequisites:
17
17
  - thai-vowels-lesson-05
18
- objectives:
19
- - "Master the remaining compound vowels"
20
- - "Understand special vowel symbols"
21
- - "Learn the 'rue' and 'lue' vowels"
22
- - "Recognize rare and archaic vowel forms"
18
+ learningObjectives:
19
+ - id: obj-remaining-compound-vowels
20
+ description: "Master the remaining compound vowels"
21
+ skill: character-recognition
22
+ references: [vowel-ia, vowel-uea, vowel-ua, vowel-uai, vowel-uan]
23
+ - id: obj-special-vowel-symbols
24
+ description: "Understand special vowel symbols"
25
+ skill: character-sound-mapping
26
+ references: [vowel-rue, vowel-ruee, vowel-lue, vowel-luee]
27
+ - id: obj-rue-lue-vowels
28
+ description: "Learn the 'rue' and 'lue' vowels"
29
+ skill: character-recognition
30
+ references: [vowel-rue, vowel-ruee, vowel-lue, vowel-luee]
31
+ - id: obj-rare-archaic-vowels
32
+ description: "Recognize rare and archaic vowel forms"
33
+ skill: character-recognition
34
+ references: [vowel-lue, vowel-luee]
23
35
  ---
24
36
 
25
37
  # บทที่ 6 (Lesson 6) — Compound Vowels II
@@ -34,11 +46,11 @@ These are longer versions of some diphthongs from Lesson 5:
34
46
 
35
47
  :::character-set{id="thai-long-diphthongs" title="Long Diphthongs"}
36
48
 
37
- ::character{id="th-vowel-ia" char="เ-ีย" name="สระเอีย (sara ia)" nativeName="สระเอีย" transliteration="ia" charType="vowel"}
49
+ ::character{id="vowel-ia" canonicalRef="vowel-ia" char="เ-ีย" name="สระเอีย (sara ia)" nativeName="สระเอีย" transliteration="ia" charType="vowel"}
38
50
 
39
- ::character{id="th-vowel-uea" char="เ-ือ" name="สระเอือ (sara uea)" nativeName="สระเอือ" transliteration="ɯa" charType="vowel"}
51
+ ::character{id="vowel-uea" canonicalRef="vowel-uea" char="เ-ือ" name="สระเอือ (sara uea)" nativeName="สระเอือ" transliteration="ɯa" charType="vowel"}
40
52
 
41
- ::character{id="th-vowel-ua" char="-ัว" name="สระอัว (sara ua)" nativeName="สระอัว" transliteration="ua" charType="vowel"}
53
+ ::character{id="vowel-ua" canonicalRef="vowel-ua" char="-ัว" name="สระอัว (sara ua)" nativeName="สระอัว" transliteration="ua" charType="vowel"}
42
54
 
43
55
  :::
44
56
 
@@ -48,13 +60,13 @@ These vowels are used primarily in loanwords from Sanskrit and Pali:
48
60
 
49
61
  :::character-set{id="thai-special-vowels" title="Special Vowels (rue/lue)"}
50
62
 
51
- ::character{id="th-vowel-rue" char="ฤ" name="ฤ (rue)" nativeName="ฤ" transliteration="rue" charType="vowel"}
63
+ ::character{id="vowel-rue" canonicalRef="vowel-rue" char="ฤ" name="ฤ (rue)" nativeName="ฤ" transliteration="rue" charType="vowel"}
52
64
 
53
- ::character{id="th-vowel-ruee" char="ฤๅ" name="ฤๅ (ruee)" nativeName="ฤๅ" transliteration="ruee" charType="vowel"}
65
+ ::character{id="vowel-ruee" canonicalRef="vowel-ruee" char="ฤๅ" name="ฤๅ (ruee)" nativeName="ฤๅ" transliteration="ruee" charType="vowel"}
54
66
 
55
- ::character{id="th-vowel-lue" char="ฦ" name="ฦ (lue)" nativeName="ฦ" transliteration="lue" charType="vowel"}
67
+ ::character{id="vowel-lue" canonicalRef="vowel-lue" char="ฦ" name="ฦ (lue)" nativeName="ฦ" transliteration="lue" charType="vowel"}
56
68
 
57
- ::character{id="th-vowel-luee" char="ฦๅ" name="ฦๅ (luee)" nativeName="ฦๅ" transliteration="luee" charType="vowel"}
69
+ ::character{id="vowel-luee" canonicalRef="vowel-luee" char="ฦๅ" name="ฦๅ (luee)" nativeName="ฦๅ" transliteration="luee" charType="vowel"}
58
70
 
59
71
  :::
60
72
 
@@ -89,9 +101,9 @@ When vowels combine with ว, they often create "uan" or "uai" sounds:
89
101
 
90
102
  :::character-set{id="thai-vowel-w-combos" title="Vowel + ว Combinations"}
91
103
 
92
- ::character{id="th-vowel-uai" char="-วย" name="สระอวย (sara uai)" nativeName="สระอวย" transliteration="uai" charType="vowel"}
104
+ ::character{id="vowel-uai" canonicalRef="vowel-uai" char="-วย" name="สระอวย (sara uai)" nativeName="สระอวย" transliteration="uai" charType="vowel"}
93
105
 
94
- ::character{id="th-vowel-uan" char="-วน" name="สระอวน (sara uan)" nativeName="สระอวน" transliteration="uan" charType="vowel"}
106
+ ::character{id="vowel-uan" canonicalRef="vowel-uan" char="-วน" name="สระอวน (sara uan)" nativeName="สระอวน" transliteration="uan" charType="vowel"}
95
107
 
96
108
  :::
97
109
 
@@ -134,7 +146,7 @@ The mark **◌ั** (mai han akat) above a consonant indicates a short "a" sound
134
146
 
135
147
  ## Practice Exercises
136
148
 
137
- :::exercise{id="compound-2-special-vowels" type="multiple-choice" title="The ฤ Vowel"}
149
+ :::exercise{id="compound-2-special-vowels" type="multiple-choice" title="The ฤ Vowel" skill="character-recognition" tests="vowel-rue" objectiveId="obj-rue-lue-vowels"}
138
150
 
139
151
  **Question:** The vowel ฤ (rue) is unique because:
140
152
 
@@ -150,7 +162,7 @@ The mark **◌ั** (mai han akat) above a consonant indicates a short "a" sound
150
162
 
151
163
  :::
152
164
 
153
- :::exercise{id="compound-2-combination-recognition" type="matching" title="Vowel Combination Recognition"}
165
+ :::exercise{id="compound-2-combination-recognition" type="matching" title="Vowel Combination Recognition" skill="character-sound-mapping" tests="vowel-ia,vowel-uea,vowel-ua,vowel-uai" objectiveId="obj-remaining-compound-vowels"}
154
166
 
155
167
  **Question:** Match each vowel combination to its sound
156
168
 
@@ -170,7 +182,7 @@ The mark **◌ั** (mai han akat) above a consonant indicates a short "a" sound
170
182
 
171
183
  :::
172
184
 
173
- :::exercise{id="compound-2-mai-han-akat" type="fill-in-blank" title="Mai Han Akat Usage"}
185
+ :::exercise{id="compound-2-mai-han-akat" type="fill-in-blank" title="Mai Han Akat Usage" skill="vowel-positioning" tests="vowel-ua" objectiveId="obj-remaining-compound-vowels"}
174
186
 
175
187
  **Question:** What does the mark ◌ั (mai han akat) indicate?
176
188
 
@@ -14,11 +14,23 @@ metadata:
14
14
  estimatedTime: 35
15
15
  prerequisites:
16
16
  - thai-vowels-lesson-06
17
- objectives:
18
- - "Recognize all four tone marks"
19
- - "Understand how tone marks modify syllables"
20
- - "Learn which classes use which tone marks"
21
- - "Practice reading syllables with tone marks"
17
+ learningObjectives:
18
+ - id: obj-recognize-tone-marks
19
+ description: "Recognize all four tone marks"
20
+ skill: character-recognition
21
+ references: [mai-ek, mai-tho, mai-tri, mai-chattawa]
22
+ - id: obj-tone-mark-modification
23
+ description: "Understand how tone marks modify syllables"
24
+ skill: tone-rule-application
25
+ references: [mai-ek, mai-tho, mai-tri, mai-chattawa]
26
+ - id: obj-class-tone-mark-usage
27
+ description: "Learn which classes use which tone marks"
28
+ skill: tone-mark-placement
29
+ references: [mai-ek, mai-tho, mai-tri, mai-chattawa]
30
+ - id: obj-read-syllables-tone-marks
31
+ description: "Practice reading syllables with tone marks"
32
+ skill: tone-perception
33
+ references: [mai-ek, mai-tho, mai-tri, mai-chattawa]
22
34
  ---
23
35
 
24
36
  # บทที่ 7 (Lesson 7) — The Four Tone Marks
@@ -43,13 +55,13 @@ Before learning the marks, understand the five tones:
43
55
 
44
56
  :::character-set{id="thai-tone-marks" title="The Four Tone Marks"}
45
57
 
46
- ::character{id="th-tone-mai-ek" char="่" name="ไม้เอก (mai ek)" nativeName="ไม้เอก" transliteration="mai ek" charType="tone"}
58
+ ::character{id="mai-ek" canonicalRef="mai-ek" char="่" name="ไม้เอก (mai ek)" nativeName="ไม้เอก" transliteration="mai ek" charType="tone"}
47
59
 
48
- ::character{id="th-tone-mai-tho" char="้" name="ไม้โท (mai tho)" nativeName="ไม้โท" transliteration="mai tho" charType="tone"}
60
+ ::character{id="mai-tho" canonicalRef="mai-tho" char="้" name="ไม้โท (mai tho)" nativeName="ไม้โท" transliteration="mai tho" charType="tone"}
49
61
 
50
- ::character{id="th-tone-mai-tri" char="๊" name="ไม้ตรี (mai tri)" nativeName="ไม้ตรี" transliteration="mai tri" charType="tone"}
62
+ ::character{id="mai-tri" canonicalRef="mai-tri" char="๊" name="ไม้ตรี (mai tri)" nativeName="ไม้ตรี" transliteration="mai tri" charType="tone"}
51
63
 
52
- ::character{id="th-tone-mai-chattawa" char="๋" name="ไม้จัตวา (mai chattawa)" nativeName="ไม้จัตวา" transliteration="mai chattawa" charType="tone"}
64
+ ::character{id="mai-chattawa" canonicalRef="mai-chattawa" char="๋" name="ไม้จัตวา (mai chattawa)" nativeName="ไม้จัตวา" transliteration="mai chattawa" charType="tone"}
53
65
 
54
66
  :::
55
67
 
@@ -156,7 +168,7 @@ Understanding how the same tone mark produces different tones by class:
156
168
 
157
169
  ## Practice Exercises
158
170
 
159
- :::exercise{id="tone-marks-1-recognition" type="matching" title="Tone Mark Recognition"}
171
+ :::exercise{id="tone-marks-1-recognition" type="matching" title="Tone Mark Recognition" skill="character-recognition" tests="mai-ek,mai-tho,mai-tri,mai-chattawa" objectiveId="obj-recognize-tone-marks"}
160
172
 
161
173
  **Question:** Match each tone mark to its name
162
174
 
@@ -176,7 +188,7 @@ Understanding how the same tone mark produces different tones by class:
176
188
 
177
189
  :::
178
190
 
179
- :::exercise{id="tone-marks-1-class-interaction" type="multiple-choice" title="Tone Mark and Class"}
191
+ :::exercise{id="tone-marks-1-class-interaction" type="multiple-choice" title="Tone Mark and Class" skill="tone-rule-application" tests="mai-ek,mai-tho,mai-tri,mai-chattawa" objectiveId="obj-class-tone-mark-usage"}
180
192
 
181
193
  **Question:** Which tone mark can be used with all three consonant classes?
182
194
 
@@ -192,7 +204,7 @@ Understanding how the same tone mark produces different tones by class:
192
204
 
193
205
  :::
194
206
 
195
- :::exercise{id="tone-marks-1-prediction" type="fill-in-blank" title="Tone Prediction"}
207
+ :::exercise{id="tone-marks-1-prediction" type="fill-in-blank" title="Tone Prediction" skill="tone-rule-application" tests="mai-ek,mai-tho" objectiveId="obj-tone-mark-modification"}
196
208
 
197
209
  **Question:** Predict the tone for these words:
198
210
 
@@ -15,11 +15,23 @@ metadata:
15
15
  estimatedTime: 40
16
16
  prerequisites:
17
17
  - thai-vowels-lesson-07
18
- objectives:
19
- - "Understand live vs dead syllables"
20
- - "Apply tone rules based on syllable structure"
21
- - "Master the complete tone determination system"
22
- - "Practice reading tones without marks"
18
+ learningObjectives:
19
+ - id: obj-live-vs-dead-syllables
20
+ description: "Understand live vs dead syllables"
21
+ skill: syllable-analysis
22
+ references: []
23
+ - id: obj-apply-tone-rules
24
+ description: "Apply tone rules based on syllable structure"
25
+ skill: tone-rule-application
26
+ references: [mai-ek, mai-tho]
27
+ - id: obj-complete-tone-system
28
+ description: "Master the complete tone determination system"
29
+ skill: tone-rule-application
30
+ references: [mai-ek, mai-tho, mai-tri, mai-chattawa]
31
+ - id: obj-read-tones-without-marks
32
+ description: "Practice reading tones without marks"
33
+ skill: syllable-analysis
34
+ references: []
23
35
  ---
24
36
 
25
37
  # บทที่ 8 (Lesson 8) — Complete Tone Rules
@@ -188,7 +200,7 @@ When reading a new word:
188
200
 
189
201
  ## Practice Exercises
190
202
 
191
- :::exercise{id="tone-rules-1-syllable-type" type="multiple-choice" title="Live vs Dead Syllable"}
203
+ :::exercise{id="tone-rules-1-syllable-type" type="multiple-choice" title="Live vs Dead Syllable" skill="syllable-analysis" objectiveId="obj-live-vs-dead-syllables"}
192
204
 
193
205
  **Question:** Which syllable is "dead" (คำตาย)?
194
206
 
@@ -204,7 +216,7 @@ When reading a new word:
204
216
 
205
217
  :::
206
218
 
207
- :::exercise{id="tone-rules-1-tone-determination" type="fill-in-blank" title="Tone Determination Practice"}
219
+ :::exercise{id="tone-rules-1-tone-determination" type="fill-in-blank" title="Tone Determination Practice" skill="tone-rule-application" tests="mai-tho" objectiveId="obj-apply-tone-rules"}
208
220
 
209
221
  **Question:** Determine the tone for these syllables:
210
222
 
@@ -224,7 +236,7 @@ When reading a new word:
224
236
 
225
237
  :::
226
238
 
227
- :::exercise{id="tone-rules-1-leading-h" type="matching" title="The Leading ห Trick"}
239
+ :::exercise{id="tone-rules-1-leading-h" type="matching" title="The Leading ห Trick" skill="tone-rule-application" objectiveId="obj-read-tones-without-marks"}
228
240
 
229
241
  **Question:** Match each word to how ห affects the tone
230
242
 
@@ -1,27 +0,0 @@
1
- function e(o, s) {
2
- return {
3
- config: o,
4
- async loadLesson(n) {
5
- if (n < 1 || n > o.lessonCount)
6
- throw new Error(`Lesson ${n} not found. Valid range: 1-${o.lessonCount}`);
7
- const t = await s(n);
8
- return {
9
- number: n,
10
- rawContent: t.default
11
- };
12
- },
13
- async loadAllLessons() {
14
- const n = [];
15
- for (let t = 1; t <= o.lessonCount; t++)
16
- n.push(await this.loadLesson(t));
17
- return n;
18
- },
19
- getAvailableLessons() {
20
- return Array.from({ length: o.lessonCount }, (n, t) => t + 1);
21
- }
22
- };
23
- }
24
- export {
25
- e as c
26
- };
27
- //# sourceMappingURL=index-DADMaTE7.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-DADMaTE7.js","sources":["../../../../tooling/content-shared/dist/index.js"],"sourcesContent":["/**\n * @syllst/content-shared\n *\n * Shared utilities for SYLLST content packages.\n */\n/**\n * Create a content loader from config and lesson loader function\n */\nexport function createContentLoader(config, loadLessonMDX) {\n return {\n config,\n async loadLesson(lessonNumber) {\n if (lessonNumber < 1 || lessonNumber > config.lessonCount) {\n throw new Error(`Lesson ${lessonNumber} not found. Valid range: 1-${config.lessonCount}`);\n }\n const module = await loadLessonMDX(lessonNumber);\n return {\n number: lessonNumber,\n rawContent: module.default,\n };\n },\n async loadAllLessons() {\n const lessons = [];\n for (let i = 1; i <= config.lessonCount; i++) {\n lessons.push(await this.loadLesson(i));\n }\n return lessons;\n },\n getAvailableLessons() {\n return Array.from({ length: config.lessonCount }, (_, i) => i + 1);\n },\n };\n}\n//# sourceMappingURL=index.js.map"],"names":["createContentLoader","config","loadLessonMDX","lessonNumber","module","lessons","i","_"],"mappings":"AAQO,SAASA,EAAoBC,GAAQC,GAAe;AACvD,SAAO;AAAA,IACH,QAAAD;AAAA,IACA,MAAM,WAAWE,GAAc;AAC3B,UAAIA,IAAe,KAAKA,IAAeF,EAAO;AAC1C,cAAM,IAAI,MAAM,UAAUE,CAAY,8BAA8BF,EAAO,WAAW,EAAE;AAE5F,YAAMG,IAAS,MAAMF,EAAcC,CAAY;AAC/C,aAAO;AAAA,QACH,QAAQA;AAAA,QACR,YAAYC,EAAO;AAAA,MACnC;AAAA,IACQ;AAAA,IACA,MAAM,iBAAiB;AACnB,YAAMC,IAAU,CAAA;AAChB,eAASC,IAAI,GAAGA,KAAKL,EAAO,aAAaK;AACrC,QAAAD,EAAQ,KAAK,MAAM,KAAK,WAAWC,CAAC,CAAC;AAEzC,aAAOD;AAAA,IACX;AAAA,IACA,sBAAsB;AAClB,aAAO,MAAM,KAAK,EAAE,QAAQJ,EAAO,YAAW,GAAI,CAACM,GAAGD,MAAMA,IAAI,CAAC;AAAA,IACrE;AAAA,EACR;AACA;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"lesson-01--9NOyHZ6.js","sources":["../src/syllabi/vowels-tones/lessons/lesson-01.mdx?raw"],"sourcesContent":["export default \"---\\ntype: lesson\\nid: thai-vowels-lesson-01\\ntitle: \\\"บทที่ 1 — สระเสียงสั้น I\\\"\\ndescription: \\\"Short Vowels Part 1: Above and below the consonant\\\"\\norder: 1\\nparentId: thai-vowels-tones\\ndifficulty: beginner\\ncefrLevel: A1\\ncategories:\\n - vowels\\n - short-vowels\\n - basic-vowels\\nmetadata:\\n estimatedTime: 30\\n prerequisites:\\n - thai-alphabet\\n objectives:\\n - \\\"Recognize vowels written above consonants\\\"\\n - \\\"Recognize vowels written below consonants\\\"\\n - \\\"Understand the short vowel duration concept\\\"\\n - \\\"Practice combining vowels with familiar consonants\\\"\\n---\\n\\n# บทที่ 1 (Lesson 1) — Short Vowels I\\n\\n## Introduction\\n\\nWelcome to Thai vowels! Unlike English where vowels are standalone letters (a, e, i, o, u), Thai vowels are **diacritical marks** that attach to consonants in various positions. In this first lesson, you'll learn vowels that appear **above** and **below** the consonant.\\n\\n## Why Position Matters\\n\\nThai vowels can appear in four locations relative to a consonant:\\n- **Above** (◌ิ ◌ี) — like hats on the consonant\\n- **Below** (◌ุ ◌ู) — like shoes under the consonant\\n- **Before** (เ◌ แ◌) — written first, pronounced after\\n- **After** (◌า) — written and pronounced after\\n\\nToday we focus on **above** and **below** positions.\\n\\n## Characters\\n\\n:::character-set{id=\\\"thai-short-vowels-above\\\" title=\\\"Short Vowels Above Consonant\\\"}\\n\\n::character{id=\\\"th-vowel-i\\\" char=\\\"ิ\\\" name=\\\"สระอิ (sara i)\\\" nativeName=\\\"สระอิ\\\" transliteration=\\\"i\\\" charType=\\\"vowel\\\"}\\n\\n::character{id=\\\"th-vowel-ue\\\" char=\\\"ึ\\\" name=\\\"สระอึ (sara ue)\\\" nativeName=\\\"สระอึ\\\" transliteration=\\\"ue\\\" charType=\\\"vowel\\\"}\\n\\n:::\\n\\n:::character-set{id=\\\"thai-short-vowels-below\\\" title=\\\"Short Vowels Below Consonant\\\"}\\n\\n::character{id=\\\"th-vowel-u\\\" char=\\\"ุ\\\" name=\\\"สระอุ (sara u)\\\" nativeName=\\\"สระอุ\\\" transliteration=\\\"u\\\" charType=\\\"vowel\\\"}\\n\\n:::\\n\\n## How They Combine\\n\\nWhen you add these vowels to a consonant, watch the position:\\n\\n| Consonant + Vowel | Result | Pronunciation |\\n|-------------------|--------|---------------|\\n| ก + ิ | กิ | gi |\\n| ม + ิ | มิ | mi |\\n| ก + ึ | กึ | gue |\\n| ก + ุ | กุ | gu |\\n| ม + ุ | มุ | mu |\\n\\n## Short vs Long: A Preview\\n\\nThese are **short** vowels — they have a clipped, brief sound:\\n- **ิ (i)** is short — like the \\\"i\\\" in English \\\"bit\\\"\\n- **ี (ii)** is long — like the \\\"ee\\\" in English \\\"bee\\\"\\n\\nYou'll learn the long versions in Lesson 3. For now, focus on the brief, snappy quality of short vowels.\\n\\n## The \\\"ue\\\" Sound\\n\\nThe vowel **ึ** (sara ue) has no direct English equivalent. It's like:\\n- Saying \\\"ee\\\" but with unrounded lips\\n- Similar to the German \\\"ü\\\" but shorter\\n- Position your tongue for \\\"ee\\\" but spread your lips\\n\\n## Key Points\\n\\n1. **Position above**: ิ and ึ sit above the consonant like small marks\\n2. **Position below**: ุ sits below the consonant\\n3. **Short duration**: These vowels are brief — don't drag them out\\n4. **No standalone form**: These vowels must attach to a consonant\\n\\n## Practice Recognition\\n\\nWith consonants you know, try reading these syllables:\\n- กิ (gi) — like \\\"gee\\\" but shorter\\n- มิ (mi) — like \\\"me\\\" but shorter\\n- กุ (gu) — like \\\"goo\\\" but shorter\\n- มุ (mu) — like \\\"moo\\\" but shorter\\n\\n## What's Next\\n\\nIn Lesson 2, you'll learn more short vowels, including those that appear **before** and **around** consonants — Thai's unique feature where you write one thing but pronounce another!\\n\""],"names":["lesson01"],"mappings":"AAAA,MAAAA,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"lesson-01-3hBted4A.js","sources":["../src/syllabi/alphabet/lessons/lesson-01.mdx?raw"],"sourcesContent":["export default \"---\\ntype: lesson\\nid: thai-script-lesson-01\\ntitle: \\\"บทที่ 1 — พยัญชนะกลาง I\\\"\\ndescription: \\\"Middle-Class Consonants Part 1: ก จ ด ต ป บ — The foundation of Thai tones\\\"\\norder: 1\\nparentId: thai-script-alphabet\\ndifficulty: beginner\\ncefrLevel: A1\\ncategories:\\n - consonants\\n - middle-class\\n - basic-characters\\nmetadata:\\n estimatedTime: 25\\n prerequisites: []\\n objectives:\\n - \\\"Recognize the first 6 middle-class consonants\\\"\\n - \\\"Understand why consonant class matters for tones\\\"\\n - \\\"Learn the mnemonic words for each consonant\\\"\\n - \\\"Practice initial and final sounds\\\"\\n---\\n\\n# บทที่ 1 (Lesson 1) — Middle-Class Consonants I\\n\\n## Introduction\\n\\nWelcome to Thai script! In this first lesson, you'll learn 6 of the 9 **middle-class consonants** (พยัญชนะกลาง). We start here because middle-class consonants are the foundation of the Thai tone system.\\n\\n## Why Middle-Class First?\\n\\nThai has **5 tones** (mid, low, falling, high, rising), and determining the correct tone requires knowing the consonant's class. Middle-class consonants:\\n\\n- Are the **simplest for tone rules** — they produce all 5 tones directly with tone marks\\n- Include the **most common consonants** in everyday Thai\\n- Provide the **baseline** for understanding how high and low classes differ\\n\\nThink of middle class as \\\"neutral\\\" — the other classes modify from this baseline.\\n\\n## Characters\\n\\n:::character-set{id=\\\"thai-middle-consonants-1\\\" title=\\\"Middle-Class Consonants I\\\"}\\n\\n::character{id=\\\"th-chicken\\\" char=\\\"ก\\\" name=\\\"ก ไก่ (gɔɔ gài)\\\" nativeName=\\\"ก ไก่\\\" transliteration=\\\"g/k\\\" charType=\\\"consonant\\\"}\\n\\n::character{id=\\\"th-plate\\\" char=\\\"จ\\\" name=\\\"จ จาน (jɔɔ jaan)\\\" nativeName=\\\"จ จาน\\\" transliteration=\\\"j/t\\\" charType=\\\"consonant\\\"}\\n\\n::character{id=\\\"th-child\\\" char=\\\"ด\\\" name=\\\"ด เด็ก (dɔɔ dèk)\\\" nativeName=\\\"ด เด็ก\\\" transliteration=\\\"d/t\\\" charType=\\\"consonant\\\"}\\n\\n::character{id=\\\"th-turtle\\\" char=\\\"ต\\\" name=\\\"ต เต่า (dtɔɔ dtào)\\\" nativeName=\\\"ต เต่า\\\" transliteration=\\\"dt/t\\\" charType=\\\"consonant\\\"}\\n\\n::character{id=\\\"th-fish\\\" char=\\\"ป\\\" name=\\\"ป ปลา (bpɔɔ bplaa)\\\" nativeName=\\\"ป ปลา\\\" transliteration=\\\"bp/p\\\" charType=\\\"consonant\\\"}\\n\\n::character{id=\\\"th-leaf\\\" char=\\\"บ\\\" name=\\\"บ ใบไม้ (bɔɔ baimáai)\\\" nativeName=\\\"บ ใบไม้\\\" transliteration=\\\"b/p\\\" charType=\\\"consonant\\\"}\\n\\n:::\\n\\n## Sound Changes: Initial vs Final Position\\n\\nOne of Thai's unique features is that consonants often sound **different** at the beginning versus end of a syllable:\\n\\n| Consonant | Initial Sound | Final Sound | Example |\\n|-----------|---------------|-------------|---------|\\n| ก | **g** (as in \\\"go\\\") | **k** (unreleased) | กา (gaa) vs อัก (àk) |\\n| จ | **j** (as in \\\"jam\\\") | **t** (unreleased) | จาน (jaan) vs มืจ (mʉ̀t) |\\n| ด | **d** (as in \\\"do\\\") | **t** (unreleased) | ดู (duu) vs วาด (wàat) |\\n| ต | **dt** (unaspirated) | **t** (unreleased) | ตา (dtaa) vs รัต (rát) |\\n| ป | **bp** (unaspirated) | **p** (unreleased) | ปา (bpaa) vs อับ (àp) |\\n| บ | **b** (as in \\\"boy\\\") | **p** (unreleased) | บาน (baan) vs รับ (ráp) |\\n\\n**Key insight**: All these consonants become an unreleased stop (/t/ or /p/) when they end a syllable. This is why Thai speakers might say \\\"maak\\\" for \\\"mark\\\" — there's no equivalent of English final consonant sounds.\\n\\n## The Unaspirated Pair: ต and ป\\n\\nNotice **ต** (dt) and **ป** (bp) are written with two letters in romanization. This indicates they're **unaspirated** — no puff of air after the sound. This is different from:\\n- English \\\"t\\\" and \\\"p\\\" (slightly aspirated)\\n- Thai ท and พ (heavily aspirated, low-class)\\n\\nHold your hand in front of your mouth: you should feel air for English \\\"top\\\" but not for Thai ตา.\\n\\n## The Mnemonic System\\n\\nEach Thai consonant has a traditional **mnemonic word** starting with that consonant. When Thais spell words aloud, they say \\\"gɔɔ gài, jɔɔ jaan...\\\" — the mnemonic IS the letter's name. **Tap any character above to see its mnemonic!**\\n\\n## Key Points\\n\\n1. **Middle class = tone baseline**: These consonants produce a mid tone in basic syllables\\n2. **Two sounds per consonant**: Initial vs final position changes pronunciation\\n3. **Unaspirated consonants**: ต and ป have no puff of air (unlike English)\\n4. **Mnemonics are names**: Learn them as the consonants' proper names, not just memory aids\\n\\n## Practice Recognition\\n\\nLook at the shapes:\\n- **ก** has a \\\"head\\\" loop on top\\n- **จ** looks like a fishing hook\\n- **ด** and **ต** are similar — ด has a longer tail\\n- **ป** and **บ** are similar — ป is more \\\"closed\\\"\\n\\nShape similarities within pairs (ด/ต, ป/บ) are intentional — they represent related sounds.\\n\\n## Quick Quiz\\n\\n:::exercise{id=\\\"quiz-01\\\" type=\\\"matching\\\" title=\\\"Match Consonants to Animals\\\"}\\n\\n**Question:** Match each consonant to its mnemonic animal\\n\\n- ก\\n- ต\\n- ป\\n\\n**Answer:**\\n\\n- chicken (ไก่)\\n- turtle (เต่า)\\n- fish (ปลา)\\n\\n**Explanation:** Each Thai consonant has a traditional mnemonic word. When Thais spell words, they say the consonant name with its mnemonic.\\n\\n:::\\n\\n:::exercise{id=\\\"recognition-01\\\" type=\\\"fill-in-blank\\\" title=\\\"Sound Recognition\\\"}\\n\\n**Question:** Which consonant makes each sound?\\n\\n- Initial \\\"g\\\" sound (as in \\\"go\\\")\\n- Initial \\\"j\\\" sound (as in \\\"jam\\\")\\n- Initial \\\"bp\\\" sound (unaspirated, no puff of air)\\n\\n**Answer:**\\n\\n- ก (gɔɔ gài)\\n- จ (jɔɔ jaan)\\n- ป (bpɔɔ bplaa)\\n\\n**Explanation:** Middle-class consonants have predictable sounds at the start of syllables.\\n\\n:::\\n\\n## What's Next\\n\\nIn Lesson 2, you'll learn the remaining middle-class consonants (ม ย ร ล อ), which include nasals and approximants with different final-position behaviors.\\n\""],"names":["lesson01"],"mappings":"AAAA,MAAAA,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"lesson-01-97FtYE6g.js","sources":["../src/syllabi/essentials/lessons/lesson-01.mdx?raw"],"sourcesContent":["export default \"---\\ntype: lesson\\nid: thai-essentials-lesson-01\\ntitle: \\\"บทที่ 1 — ทักทายและแนะนำตัว\\\"\\ndescription: \\\"Greetings & Introductions: สวัสดี and meeting people\\\"\\norder: 1\\nparentId: thai-essentials\\ndifficulty: beginner\\ncefrLevel: A1\\ncategories:\\n - greetings\\n - introductions\\n - basics\\nmetadata:\\n estimatedTime: 30\\n prerequisites: []\\n objectives:\\n - \\\"Say hello and goodbye properly\\\"\\n - \\\"Introduce yourself with name and nationality\\\"\\n - \\\"Ask someone's name politely\\\"\\n - \\\"Understand the wai gesture\\\"\\n---\\n\\n# บทที่ 1 (Lesson 1) — Greetings & Introductions\\n\\n## Introduction\\n\\nThe first words you'll use in Thai are greetings. Thai has one versatile greeting word — สวัสดี (sà-wàt-dii) — that works for hello, goodbye, and general well-wishing. Combined with the polite particle, it's your key to making a good first impression.\\n\\n## The Universal Greeting\\n\\n:::vocabulary-set{id=\\\"thai-greetings\\\" title=\\\"Basic Greetings\\\"}\\n\\n::vocab-item{id=\\\"sawatdee\\\" word=\\\"สวัสดี\\\" pronunciation=\\\"sà-wàt-dii\\\" meaning=\\\"Hello / Goodbye / Greetings\\\"}\\n\\n::vocab-item{id=\\\"sawatdee-khrap\\\" word=\\\"สวัสดีครับ\\\" pronunciation=\\\"sà-wàt-dii khráp\\\" meaning=\\\"Hello (male speaker)\\\"}\\n\\n::vocab-item{id=\\\"sawatdee-kha\\\" word=\\\"สวัสดีค่ะ\\\" pronunciation=\\\"sà-wàt-dii khâ\\\" meaning=\\\"Hello (female speaker)\\\"}\\n\\n:::\\n\\n## Time-Specific Greetings\\n\\nWhile สวัสดี works anytime, you can also use:\\n\\n| Thai | Pronunciation | Meaning |\\n|------|---------------|---------|\\n| อรุณสวัสดิ์ | à-run-sà-wàt | Good morning (formal) |\\n| สวัสดีตอนเช้า | sà-wàt-dii dtɔɔn-cháo | Good morning |\\n| สวัสดีตอนบ่าย | sà-wàt-dii dtɔɔn-bàai | Good afternoon |\\n| ราตรีสวัสดิ์ | raa-dtrii-sà-wàt | Good night (formal) |\\n\\n## Introducing Yourself\\n\\n:::vocabulary-set{id=\\\"thai-introductions\\\" title=\\\"Self-Introduction\\\"}\\n\\n::vocab-item{id=\\\"phom\\\" word=\\\"ผม\\\" pronunciation=\\\"phǒm\\\" meaning=\\\"I (male)\\\"}\\n\\n::vocab-item{id=\\\"dichan\\\" word=\\\"ดิฉัน\\\" pronunciation=\\\"dì-chǎn\\\" meaning=\\\"I (female, formal)\\\"}\\n\\n::vocab-item{id=\\\"chan\\\" word=\\\"ฉัน\\\" pronunciation=\\\"chǎn\\\" meaning=\\\"I (casual)\\\"}\\n\\n::vocab-item{id=\\\"chue\\\" word=\\\"ชื่อ\\\" pronunciation=\\\"chʉ̂ʉ\\\" meaning=\\\"name\\\"}\\n\\n::vocab-item{id=\\\"khon-thai\\\" word=\\\"คนไทย\\\" pronunciation=\\\"khon thai\\\" meaning=\\\"Thai person\\\"}\\n\\n:::\\n\\n## Key Phrases\\n\\n| Thai | Pronunciation | Meaning |\\n|------|---------------|---------|\\n| ผม/ดิฉันชื่อ... | phǒm/dì-chǎn chʉ̂ʉ... | My name is... |\\n| คุณชื่ออะไร | khun chʉ̂ʉ à-rai | What's your name? |\\n| ยินดีที่ได้รู้จัก | yin-dii thîi dâai rúu-jàk | Nice to meet you |\\n| คุณเป็นคนที่ไหน | khun bpen khon thîi-nǎi | Where are you from? |\\n| ผม/ดิฉันมาจาก... | phǒm/dì-chǎn maa jàak... | I'm from... |\\n\\n## The Wai (ไหว้)\\n\\nThe traditional Thai greeting gesture:\\n\\n1. **Press palms together** at chest level, fingers pointing up\\n2. **Bow slightly** from the shoulders\\n3. **Say สวัสดี** + polite particle\\n\\n**When to wai:**\\n- Meeting someone for the first time\\n- Greeting elders or superiors\\n- Showing respect or gratitude\\n- Formal situations\\n\\n**When NOT to wai:**\\n- To children younger than you\\n- To service workers (a smile is fine)\\n- When your hands are full (nod instead)\\n\\n## Countries & Nationalities\\n\\n| Country | Thai | Nationality |\\n|---------|------|-------------|\\n| Thailand | ประเทศไทย | คนไทย (khon thai) |\\n| America | อเมริกา | คนอเมริกัน (khon a-mee-ri-gan) |\\n| England | อังกฤษ | คนอังกฤษ (khon ang-grìt) |\\n| Japan | ญี่ปุ่น | คนญี่ปุ่น (khon yîi-bpùn) |\\n| China | จีน | คนจีน (khon jiin) |\\n\\n## Sample Conversation\\n\\n**A**: สวัสดีครับ/ค่ะ (Hello)\\n**B**: สวัสดีครับ/ค่ะ (Hello)\\n**A**: ผม/ดิฉันชื่อจอห์น คุณชื่ออะไรครับ/คะ (My name is John. What's your name?)\\n**B**: ดิฉันชื่อสมศรีค่ะ ยินดีที่ได้รู้จักค่ะ (My name is Somsri. Nice to meet you.)\\n**A**: ยินดีที่ได้รู้จักครับ (Nice to meet you too.)\\n\\n## Key Points\\n\\n1. **สวัสดี works everywhere**: Morning, afternoon, evening, hello, goodbye\\n2. **Always add polite particle**: ครับ for men, ค่ะ/คะ for women\\n3. **Wai appropriately**: Match the depth to the relationship\\n4. **Smile**: It's called the Land of Smiles for a reason!\\n\\n## What's Next\\n\\nIn Lesson 2, you'll master the polite particle system — the key to speaking properly in all situations.\\n\""],"names":["lesson01"],"mappings":"AAAA,MAAAA,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"lesson-01-BNdHXAGR.js","sources":["../src/syllabi/dialogue/lessons/lesson-01.mdx?raw"],"sourcesContent":["export default \"---\\ntype: lesson\\nid: thai-dialogue-lesson-01\\ntitle: \\\"บทที่ 1 — ที่ตลาด\\\"\\ndescription: \\\"At the Market: Buying fruits, bargaining, and asking prices\\\"\\norder: 1\\nparentId: thai-dialogue\\ndifficulty: intermediate\\ncefrLevel: A2\\ncategories:\\n - dialogue\\n - market\\n - shopping\\nmetadata:\\n estimatedTime: 30\\n objectives:\\n - \\\"Ask prices at the market\\\"\\n - \\\"Bargain politely\\\"\\n - \\\"Buy fruits and vegetables\\\"\\n - \\\"Handle basic transactions\\\"\\n---\\n\\n# บทที่ 1 (Lesson 1) — At the Market\\n\\n## Situation\\n\\nYou're at a fresh market (ตลาดสด) buying mangoes from a vendor.\\n\\n## Dialogue\\n\\n:::dialogue{id=\\\"market-dialogue-1\\\" title=\\\"Buying Mangoes\\\"}\\n\\n**ผู้ขาย (Vendor):** สวัสดีค่ะ รับอะไรดีคะ?\\n*sà-wàt-dii khâ, ráp à-rai dii khá?*\\nHello! What would you like?\\n\\n**คุณ (You):** มะม่วงกิโลละเท่าไหร่ครับ/ค่ะ?\\n*má-mûang gì-loh lá thâo-rài khráp/khâ?*\\nHow much are the mangoes per kilo?\\n\\n**ผู้ขาย:** กิโลละ 60 บาทค่ะ\\n*gì-loh lá hòk-sìp bàat khâ*\\n60 baht per kilo.\\n\\n**คุณ:** ลดได้ไหมครับ/ค่ะ? 50 บาทได้ไหม?\\n*lót dâai mái khráp/khâ? hâa-sìp bàat dâai mái?*\\nCan you reduce it? How about 50 baht?\\n\\n**ผู้ขาย:** ไม่ได้ค่ะ แต่ซื้อ 2 กิโล 100 บาทนะคะ\\n*mâi dâai khâ, dtàe súue sǎawng gì-loh nùeng-rói bàat ná khá*\\nNo, but 2 kilos for 100 baht.\\n\\n**คุณ:** ได้ครับ/ค่ะ เอา 2 กิโล\\n*dâai khráp/khâ, ao sǎawng gì-loh*\\nOK, I'll take 2 kilos.\\n\\n**ผู้ขาย:** ค่ะ นี่ค่ะ ขอบคุณค่ะ\\n*khâ, nîi khâ, khàawp-khun khâ*\\nHere you go. Thank you!\\n\\n:::\\n\\n## Key Phrases\\n\\n| Thai | Romanization | Meaning |\\n|------|--------------|---------|\\n| รับอะไรดีคะ? | ráp à-rai dii khá? | What would you like? |\\n| ...เท่าไหร่? | ...thâo-rài? | How much is...? |\\n| กิโลละ... | gì-loh lá... | ...per kilo |\\n| ลดได้ไหม? | lót dâai mái? | Can you reduce it? |\\n| ไม่ได้ค่ะ | mâi dâai khâ | No, (I) can't |\\n| เอา... | ao... | I'll take... |\\n\\n## Bargaining Tips\\n\\n1. **Be friendly** - Smile and be polite\\n2. **Start lower** - Offer 20-30% less than asking price\\n3. **Walk away** - If they don't budge, start walking; they may call you back\\n4. **Bundle** - Ask for discounts on larger quantities\\n5. **Don't bargain at supermarkets** - Only at markets and small shops\\n\\n## Cultural Note\\n\\nBargaining (ต่อราคา, dtàaw raa-khaa) is expected at fresh markets but not at supermarkets or convenience stores. Always bargain with a smile!\\n\\n## Variations\\n\\n**Asking about ripeness:**\\n- สุกแล้วหรือยัง? (sùk láew rǔue yang?) - Is it ripe yet?\\n- มีสุกๆ ไหม? (mii sùk sùk mái?) - Do you have ripe ones?\\n\\n**Other quantities:**\\n- ขีดละเท่าไหร่? (khìit lá thâo-rài?) - How much per 100g?\\n- ลูกละเท่าไหร่? (lûuk lá thâo-rài?) - How much each?\\n\\n## What's Next\\n\\nIn Lesson 2, you'll learn restaurant dialogues — ordering food, making special requests, and handling the bill at Thai restaurants.\\n\""],"names":["lesson01"],"mappings":"AAAA,MAAAA,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"lesson-01-BYKAZiua.js","sources":["../src/syllabi/reading/lessons/lesson-01.mdx?raw"],"sourcesContent":["export default \"---\\ntype: lesson\\nid: thai-reading-lesson-01\\ntitle: \\\"บทที่ 1 — ป้ายถนน\\\"\\ndescription: \\\"Street Signs: Read common Thai street signs and navigate the city\\\"\\norder: 1\\nparentId: thai-reading\\ndifficulty: intermediate\\ncefrLevel: B1\\ncategories:\\n - reading\\n - signs\\n - navigation\\nmetadata:\\n estimatedTime: 25\\n prerequisites: []\\n objectives:\\n - \\\"Recognize common street sign vocabulary\\\"\\n - \\\"Read Thai addresses and street names\\\"\\n - \\\"Understand directional indicators on signs\\\"\\n---\\n\\n# Street Signs\\n\\nThai streets are full of signs that become readable with practice. This lesson covers the most common street signs you'll encounter.\\n\\n## Street Types\\n\\n| Thai | Romanization | English |\\n|------|--------------|---------|\\n| ถนน | thanon | road/street |\\n| ซอย | soi | alley/lane |\\n| ถนนใหญ่ | thanon yai | main road |\\n| ทางด่วน | thang duan | expressway |\\n\\n## Common Street Signs\\n\\n| Thai | Romanization | English |\\n|------|--------------|---------|\\n| หยุด | yut | stop |\\n| ห้ามจอด | ham jot | no parking |\\n| ห้ามเข้า | ham khao | no entry |\\n| ทางเดินเท้า | thang doen thao | pedestrian walkway |\\n\\n## Address Components\\n\\n| Thai | Romanization | English |\\n|------|--------------|---------|\\n| เลขที่ | lek thi | house number |\\n| หมู่ | mu | village/group |\\n| ตำบล | tambon | subdistrict |\\n| อำเภอ | amphoe | district |\\n\\n## Practice Reading\\n\\n**Sign 1:** ห้ามจอดรถ\\n*ham jot rot* - No parking (vehicles)\\n\\n**Sign 2:** ถนนสุขุมวิท ซอย 23\\n*thanon sukhumwit soi yii-sip-sam* - Sukhumvit Road, Soi 23\\n\\n**Sign 3:** ทางเข้าหมู่บ้าน\\n*thang khao mu ban* - Village entrance\\n\\n## Practice Exercises\\n\\n:::exercise{id=\\\"reading-1-sign-recognition\\\" type=\\\"matching\\\" title=\\\"Street Sign Recognition\\\"}\\n\\n**Question:** Match each sign to its meaning\\n\\n- หยุด\\n- ห้ามจอด\\n- ห้ามเข้า\\n- ทางเดินเท้า\\n\\n**Answer:**\\n\\n- หยุด → Stop\\n- ห้ามจอด → No parking\\n- ห้ามเข้า → No entry\\n- ทางเดินเท้า → Pedestrian walkway\\n\\n**Explanation:** ห้าม means \\\"prohibited\\\" and is used in many prohibition signs. ทาง means \\\"way/path\\\". Learning these patterns helps you read many signs.\\n\\n:::\\n\\n:::exercise{id=\\\"reading-1-address-components\\\" type=\\\"fill-in-blank\\\" title=\\\"Address Components\\\"}\\n\\n**Question:** What do these address components mean?\\n\\n- เลขที่\\n- หมู่\\n- ตำบล\\n- อำเภอ\\n\\n**Answer:**\\n\\n- เลขที่ → House number\\n- หมู่ → Village/group number\\n- ตำบล → Subdistrict\\n- อำเภอ → District\\n\\n**Explanation:** Thai addresses use a hierarchical system: house number → village → subdistrict → district → province. Understanding these helps you read addresses and give directions.\\n\\n:::\\n\\n:::exercise{id=\\\"reading-1-street-types\\\" type=\\\"multiple-choice\\\" title=\\\"Street Types\\\"}\\n\\n**Question:** What's the difference between ถนน and ซอย?\\n\\n**Options:**\\n- ถนน is a main road, ซอย is an alley/lane\\n- They mean the same thing\\n- ถนน is an alley, ซอย is a main road\\n- ถนน is for cars, ซอย is for pedestrians\\n\\n**Answer:** 1\\n\\n**Explanation:** ถนน means \\\"road/street\\\" (main thoroughfare), while ซอย means \\\"alley/lane\\\" (smaller side street). Bangkok addresses often use both: ถนนสุขุมวิท ซอย 23 (Sukhumvit Road, Soi 23).\\n\\n:::\\n\\n## What's Next\\n\\nIn Lesson 2, you'll learn to read restaurant menus — essential for ordering food and understanding Thai cuisine vocabulary.\\n\""],"names":["lesson01"],"mappings":"AAAA,MAAAA,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"lesson-01-BhjY6ArF.js","sources":["../src/syllabi/travel/lessons/lesson-01.mdx?raw"],"sourcesContent":["export default \"---\\ntype: lesson\\nid: thai-travel-lesson-01\\ntitle: \\\"บทที่ 1 — การเดินทาง\\\"\\ndescription: \\\"Getting Around: Transportation options in Thailand\\\"\\norder: 1\\nparentId: thai-vocab-travel\\ndifficulty: beginner\\ncefrLevel: A2\\ncategories:\\n - travel\\n - transport\\nmetadata:\\n estimatedTime: 25\\n objectives:\\n - \\\"Name common vehicles and transport types\\\"\\n - \\\"Hail taxis and tuk-tuks\\\"\\n - \\\"Use public transportation vocabulary\\\"\\n - \\\"Rent vehicles\\\"\\n---\\n\\n# บทที่ 1 (Lesson 1) — Getting Around\\n\\n## Introduction\\n\\nThailand has diverse transportation options from modern BTS trains to traditional tuk-tuks. Learning these words helps you choose the right transport for any situation.\\n\\n## Private Transport\\n\\n:::vocabulary-set{id=\\\"thai-private-transport\\\" title=\\\"Private Transport\\\"}\\n\\n::vocab-item{id=\\\"rot\\\" word=\\\"รถ\\\" pronunciation=\\\"rót\\\" meaning=\\\"vehicle/car\\\"}\\n\\n::vocab-item{id=\\\"rot-taxi\\\" word=\\\"รถแท็กซี่\\\" pronunciation=\\\"rót thák-sîi\\\" meaning=\\\"taxi\\\"}\\n\\n::vocab-item{id=\\\"tuk-tuk\\\" word=\\\"ตุ๊กตุ๊ก\\\" pronunciation=\\\"dtúk-dtúk\\\" meaning=\\\"tuk-tuk (three-wheeler)\\\"}\\n\\n::vocab-item{id=\\\"rot-motocai\\\" word=\\\"รถมอเตอร์ไซค์\\\" pronunciation=\\\"rót mɔɔ-dtəə-sai\\\" meaning=\\\"motorcycle\\\"}\\n\\n::vocab-item{id=\\\"rot-chao\\\" word=\\\"รถเช่า\\\" pronunciation=\\\"rót châo\\\" meaning=\\\"rental car\\\"}\\n\\n:::\\n\\n## Public Transport\\n\\n:::vocabulary-set{id=\\\"thai-public-transport\\\" title=\\\"Public Transport\\\"}\\n\\n::vocab-item{id=\\\"rot-me\\\" word=\\\"รถเมล์\\\" pronunciation=\\\"rót mee\\\" meaning=\\\"bus\\\"}\\n\\n::vocab-item{id=\\\"rot-fai\\\" word=\\\"รถไฟ\\\" pronunciation=\\\"rót fai\\\" meaning=\\\"train\\\"}\\n\\n::vocab-item{id=\\\"rot-fai-faa\\\" word=\\\"รถไฟฟ้า\\\" pronunciation=\\\"rót fai fáa\\\" meaning=\\\"BTS/MRT (electric train)\\\"}\\n\\n::vocab-item{id=\\\"reua\\\" word=\\\"เรือ\\\" pronunciation=\\\"rʉa\\\" meaning=\\\"boat\\\"}\\n\\n::vocab-item{id=\\\"kreuang-bin\\\" word=\\\"เครื่องบิน\\\" pronunciation=\\\"khrʉ̂ang bin\\\" meaning=\\\"airplane\\\"}\\n\\n:::\\n\\n## Useful Phrases\\n\\n| Thai | Meaning |\\n|------|---------|\\n| เรียกแท็กซี่ | Call a taxi |\\n| ไปที่ไหน | Where to? |\\n| ไป...ครับ | I'm going to... |\\n| เท่าไหร่ครับ | How much? |\\n| เปิดมิเตอร์ | Turn on the meter |\\n| จอดตรงนี้ | Stop here |\\n\\n## Sample Conversation\\n\\n**Hailing a taxi:**\\n- คุณ: แท็กซี่ครับ! (Taxi!)\\n- คนขับ: ไปไหนครับ (Where to?)\\n- คุณ: ไปสยามครับ เปิดมิเตอร์นะครับ (To Siam. Please use the meter)\\n- คนขับ: ได้ครับ (Okay)\\n\\n## Key Points\\n\\n1. **รถไฟฟ้า = BTS/MRT**: The modern sky train and subway\\n2. **เปิดมิเตอร์ = use meter**: Always ask in taxis\\n3. **ตุ๊กตุ๊ก**: Negotiate price before getting in\\n4. **รถเมล์**: Very cheap but can be confusing for beginners\\n\\n## Practice Exercises\\n\\n:::exercise{id=\\\"travel-1-transport-types\\\" type=\\\"matching\\\" title=\\\"Transportation Types\\\"}\\n\\n**Question:** Match each transport type to its Thai name\\n\\n- Taxi\\n- BTS/MRT\\n- Tuk-tuk\\n- Bus\\n- Boat\\n\\n**Answer:**\\n\\n- Taxi → รถแท็กซี่ or แท็กซี่\\n- BTS/MRT → รถไฟฟ้า (electric train)\\n- Tuk-tuk → ตุ๊กตุ๊ก\\n- Bus → รถเมล์\\n- Boat → เรือ\\n\\n**Explanation:** รถ means \\\"vehicle\\\" and is a prefix for many transport types. รถไฟฟ้า specifically means the electric train system (BTS/MRT). ตุ๊กตุ๊ก is the iconic three-wheeled vehicle.\\n\\n:::\\n\\n:::exercise{id=\\\"travel-1-taxi-etiquette\\\" type=\\\"multiple-choice\\\" title=\\\"Taxi Etiquette\\\"}\\n\\n**Question:** What should you always say when getting in a taxi in Thailand?\\n\\n**Options:**\\n- ไปเร็วๆ (go fast)\\n- เปิดมิเตอร์ (turn on meter)\\n- ไม่ต้องทอน (keep the change)\\n- ไปได้ไหม (can you go?)\\n\\n**Answer:** 2\\n\\n**Explanation:** Always say \\\"เปิดมิเตอร์\\\" (use the meter) to ensure fair pricing. Some drivers try to negotiate fixed prices which are usually higher. Insisting on the meter protects you.\\n\\n:::\\n\\n:::exercise{id=\\\"travel-1-hailing-transport\\\" type=\\\"fill-in-blank\\\" title=\\\"Hailing Transportation\\\"}\\n\\n**Question:** How do you hail different types of transport?\\n\\n**Answer:**\\n\\n- Taxi: Raise your hand and say \\\"แท็กซี่!\\\" or \\\"ไป[destination]ได้ไหมครับ\\\"\\n- Tuk-tuk: Approach and negotiate price first: \\\"[destination]เท่าไหร่\\\"\\n- BTS/MRT: Go to station and buy ticket (no hailing needed)\\n\\n**Explanation:** Taxis can be hailed on the street. Tuk-tuks require price negotiation before getting in. BTS/MRT use ticket systems - no hailing needed.\\n\\n:::\\n\\n## What's Next\\n\\nIn Lesson 2, you'll learn direction words to guide your driver or find your own way.\\n\""],"names":["lesson01"],"mappings":"AAAA,MAAAA,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"lesson-01-CF4tJfZ3.js","sources":["../src/syllabi/numbers/lessons/lesson-01.mdx?raw"],"sourcesContent":["export default \"---\\ntype: lesson\\nid: thai-numbers-lesson-01\\ntitle: \\\"บทที่ 1 — ตัวเลขไทย\\\"\\ndescription: \\\"Thai Numerals: The ten basic digits ๐-๙\\\"\\norder: 1\\nparentId: thai-numbers\\ndifficulty: beginner\\ncefrLevel: A1\\ncategories:\\n - numbers\\n - numerals\\n - basic\\nmetadata:\\n estimatedTime: 20\\n prerequisites:\\n - thai-alphabet\\n objectives:\\n - \\\"Recognize all 10 Thai numerals (๐-๙)\\\"\\n - \\\"Pronounce each number correctly\\\"\\n - \\\"Write Thai numerals\\\"\\n - \\\"Convert between Thai and Arabic numerals\\\"\\n---\\n\\n# บทที่ 1 (Lesson 1) — Thai Numerals\\n\\n## Introduction\\n\\nThai has its own beautiful numeral system that's been used for centuries. While Arabic numerals (0-9) are common in modern Thailand, Thai numerals still appear on official documents, currency, temple inscriptions, and formal contexts. Learning them connects you to Thai culture and history.\\n\\n## The Ten Digits\\n\\n:::character-set{id=\\\"thai-numerals\\\" title=\\\"Thai Numerals ๐-๙\\\"}\\n\\n::character{id=\\\"th-num-zero\\\" char=\\\"๐\\\" name=\\\"ศูนย์ (sǒon)\\\" transliteration=\\\"0\\\" charType=\\\"number\\\"}\\n\\n::character{id=\\\"th-num-one\\\" char=\\\"๑\\\" name=\\\"หนึ่ง (nʉ̀ng)\\\" transliteration=\\\"1\\\" charType=\\\"number\\\"}\\n\\n::character{id=\\\"th-num-two\\\" char=\\\"๒\\\" name=\\\"สอง (sǒng)\\\" transliteration=\\\"2\\\" charType=\\\"number\\\"}\\n\\n::character{id=\\\"th-num-three\\\" char=\\\"๓\\\" name=\\\"สาม (sǎam)\\\" transliteration=\\\"3\\\" charType=\\\"number\\\"}\\n\\n::character{id=\\\"th-num-four\\\" char=\\\"๔\\\" name=\\\"สี่ (sìi)\\\" transliteration=\\\"4\\\" charType=\\\"number\\\"}\\n\\n::character{id=\\\"th-num-five\\\" char=\\\"๕\\\" name=\\\"ห้า (hâa)\\\" transliteration=\\\"5\\\" charType=\\\"number\\\"}\\n\\n::character{id=\\\"th-num-six\\\" char=\\\"๖\\\" name=\\\"หก (hòk)\\\" transliteration=\\\"6\\\" charType=\\\"number\\\"}\\n\\n::character{id=\\\"th-num-seven\\\" char=\\\"๗\\\" name=\\\"เจ็ด (jèt)\\\" transliteration=\\\"7\\\" charType=\\\"number\\\"}\\n\\n::character{id=\\\"th-num-eight\\\" char=\\\"๘\\\" name=\\\"แปด (bpàet)\\\" transliteration=\\\"8\\\" charType=\\\"number\\\"}\\n\\n::character{id=\\\"th-num-nine\\\" char=\\\"๙\\\" name=\\\"เก้า (gâo)\\\" transliteration=\\\"9\\\" charType=\\\"number\\\"}\\n\\n:::\\n\\n## Recognizing the Shapes\\n\\nThai numerals have distinctive shapes. Here are some memory tips:\\n\\n| Numeral | Memory Tip |\\n|---------|------------|\\n| ๐ | Looks like a curly zero |\\n| ๑ | A simple hook — the first, simplest number |\\n| ๒ | Has two bumps on top |\\n| ๓ | Looks like a sideways 3 with curves |\\n| ๔ | Four strokes to write |\\n| ๕ | Looks like a squiggly 5 |\\n| ๖ | Has a loop like a 6 |\\n| ๗ | Looks like a 7 with a hat |\\n| ๘ | Has curves like an 8 |\\n| ๙ | A curly 9 shape |\\n\\n## Pronunciation Guide\\n\\n| Number | Thai | Romanization | Similar English Sound |\\n|--------|------|--------------|----------------------|\\n| 0 | ศูนย์ | sǒon | \\\"soon\\\" with rising tone |\\n| 1 | หนึ่ง | nʉ̀ng | \\\"nung\\\" (low tone) |\\n| 2 | สอง | sǒng | \\\"song\\\" with rising tone |\\n| 3 | สาม | sǎam | \\\"saam\\\" with rising tone |\\n| 4 | สี่ | sìi | \\\"see\\\" with low tone |\\n| 5 | ห้า | hâa | \\\"haa\\\" with falling tone |\\n| 6 | หก | hòk | \\\"hok\\\" with low tone |\\n| 7 | เจ็ด | jèt | \\\"jet\\\" with low tone |\\n| 8 | แปด | bpàet | \\\"bpaet\\\" with low tone |\\n| 9 | เก้า | gâo | \\\"gow\\\" with falling tone |\\n\\n## Where You'll See Thai Numerals\\n\\n- **Currency**: Thai banknotes show amounts in Thai numerals\\n- **Official documents**: ID cards, government papers\\n- **Temples**: Dates on Buddhist inscriptions\\n- **Royal contexts**: Formal announcements\\n- **Traditional calendars**: Buddhist Era dates\\n\\n## Key Points\\n\\n1. **10 digits**: Thai numerals work just like Arabic — position determines value\\n2. **Same math**: ๑๒๓ = 123 — the system is identical, just different symbols\\n3. **Tones matter**: Each number word has a specific tone\\n4. **Cultural value**: Knowing Thai numerals shows respect for Thai heritage\\n\\n## Practice\\n\\nConvert these Thai numbers to Arabic:\\n- ๕๗ = ?\\n- ๒๔ = ?\\n- ๑๐๐ = ?\\n\\n(Answers: 57, 24, 100)\\n\\n## What's Next\\n\\nIn Lesson 2, you'll learn how to count from 1 to 100, including the special rules for teens and the unique word for 20.\\n\""],"names":["lesson01"],"mappings":"AAAA,MAAAA,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"lesson-01-CRx-yw4C.js","sources":["../src/syllabi/food/lessons/lesson-01.mdx?raw"],"sourcesContent":["export default \"---\\ntype: lesson\\nid: thai-food-lesson-01\\ntitle: \\\"บทที่ 1 — คำศัพท์อาหารพื้นฐาน\\\"\\ndescription: \\\"Essential Food Words: Rice, noodles, and daily basics\\\"\\norder: 1\\nparentId: thai-food\\ndifficulty: beginner\\ncefrLevel: A2\\ncategories:\\n - food\\n - basics\\n - vocabulary\\nmetadata:\\n estimatedTime: 30\\n prerequisites: []\\n objectives:\\n - \\\"Name basic staple foods\\\"\\n - \\\"Order rice and noodle dishes\\\"\\n - \\\"Request water and common drinks\\\"\\n - \\\"Understand basic menu items\\\"\\n---\\n\\n# บทที่ 1 (Lesson 1) — Essential Food Words\\n\\n## Introduction\\n\\nBefore diving into Thai cuisine's complexity, you need the foundation: the words for rice, noodles, and basic items you'll encounter in every meal. These are the building blocks of Thai food vocabulary.\\n\\n## Rice — The Heart of Thai Meals\\n\\n:::vocabulary-set{id=\\\"thai-rice\\\" title=\\\"Rice Vocabulary\\\"}\\n\\n::vocab-item{id=\\\"khao\\\" word=\\\"ข้าว\\\" pronunciation=\\\"khâao\\\" meaning=\\\"rice\\\"}\\n\\n::vocab-item{id=\\\"khao-suay\\\" word=\\\"ข้าวสวย\\\" pronunciation=\\\"khâao sǔay\\\" meaning=\\\"steamed rice\\\"}\\n\\n::vocab-item{id=\\\"khao-niao\\\" word=\\\"ข้าวเหนียว\\\" pronunciation=\\\"khâao nǐao\\\" meaning=\\\"sticky rice\\\"}\\n\\n::vocab-item{id=\\\"khao-pad\\\" word=\\\"ข้าวผัด\\\" pronunciation=\\\"khâao phàt\\\" meaning=\\\"fried rice\\\"}\\n\\n::vocab-item{id=\\\"khao-tom\\\" word=\\\"ข้าวต้ม\\\" pronunciation=\\\"khâao dtôm\\\" meaning=\\\"rice porridge\\\"}\\n\\n:::\\n\\n### Rice in Thai Culture\\n\\nRice is so central that \\\"กินข้าว\\\" (gin khâao - eat rice) means \\\"to eat a meal\\\" even if no rice is involved!\\n\\n| Phrase | Meaning |\\n|--------|---------|\\n| กินข้าวหรือยัง | Have you eaten yet? (greeting) |\\n| ขอข้าวเพิ่ม | May I have more rice? |\\n| ข้าวหมดแล้ว | The rice is finished |\\n\\n## Noodles — The Other Staple\\n\\n:::vocabulary-set{id=\\\"thai-noodles\\\" title=\\\"Noodle Vocabulary\\\"}\\n\\n::vocab-item{id=\\\"kuay-tiaw\\\" word=\\\"ก๋วยเตี๋ยว\\\" pronunciation=\\\"gǔay-dtǐao\\\" meaning=\\\"noodles / noodle soup\\\"}\\n\\n::vocab-item{id=\\\"sen-lek\\\" word=\\\"เส้นเล็ก\\\" pronunciation=\\\"sên lék\\\" meaning=\\\"thin rice noodles\\\"}\\n\\n::vocab-item{id=\\\"sen-yai\\\" word=\\\"เส้นใหญ่\\\" pronunciation=\\\"sên yài\\\" meaning=\\\"wide rice noodles\\\"}\\n\\n::vocab-item{id=\\\"sen-mee\\\" word=\\\"เส้นหมี่\\\" pronunciation=\\\"sên mìi\\\" meaning=\\\"rice vermicelli\\\"}\\n\\n::vocab-item{id=\\\"ba-mee\\\" word=\\\"บะหมี่\\\" pronunciation=\\\"bà-mìi\\\" meaning=\\\"egg noodles\\\"}\\n\\n::vocab-item{id=\\\"wun-sen\\\" word=\\\"วุ้นเส้น\\\" pronunciation=\\\"wún sên\\\" meaning=\\\"glass noodles\\\"}\\n\\n:::\\n\\n### Noodle Soup Options\\n\\nWhen ordering noodle soup, you choose:\\n\\n| Choice | Options |\\n|--------|---------|\\n| Noodle type | เส้นเล็ก, เส้นใหญ่, เส้นหมี่, บะหมี่ |\\n| Soup style | น้ำ (with soup) / แห้ง (dry) |\\n| Protein | หมู (pork), ไก่ (chicken), เนื้อ (beef) |\\n\\n## Basic Food Items\\n\\n:::vocabulary-set{id=\\\"thai-basics\\\" title=\\\"Basic Food Items\\\"}\\n\\n::vocab-item{id=\\\"nam\\\" word=\\\"น้ำ\\\" pronunciation=\\\"náam\\\" meaning=\\\"water\\\"}\\n\\n::vocab-item{id=\\\"nam-plao\\\" word=\\\"น้ำเปล่า\\\" pronunciation=\\\"náam bplào\\\" meaning=\\\"plain water\\\"}\\n\\n::vocab-item{id=\\\"khai\\\" word=\\\"ไข่\\\" pronunciation=\\\"khài\\\" meaning=\\\"egg\\\"}\\n\\n::vocab-item{id=\\\"khai-dao\\\" word=\\\"ไข่ดาว\\\" pronunciation=\\\"khài daao\\\" meaning=\\\"fried egg\\\"}\\n\\n::vocab-item{id=\\\"khai-jiaw\\\" word=\\\"ไข่เจียว\\\" pronunciation=\\\"khài jiao\\\" meaning=\\\"Thai omelette\\\"}\\n\\n::vocab-item{id=\\\"phat-thai\\\" word=\\\"ผัดไทย\\\" pronunciation=\\\"phàt thai\\\" meaning=\\\"pad thai\\\"}\\n\\n:::\\n\\n## Essential Ordering Phrases\\n\\n| Thai | Meaning |\\n|------|---------|\\n| ขอ...หนึ่งที่ | One order of... please |\\n| ขอข้าวสวย | Steamed rice, please |\\n| ขอน้ำเปล่า | Plain water, please |\\n| เอาข้าวผัดไก่ | I'll have chicken fried rice |\\n| ก๋วยเตี๋ยวหมูน้ำ | Pork noodle soup |\\n\\n## Common Dishes to Know\\n\\n| Thai | Romanization | Description |\\n|------|--------------|-------------|\\n| ข้าวผัดไก่ | khâao phàt gài | Chicken fried rice |\\n| ข้าวผัดกุ้ง | khâao phàt gûng | Shrimp fried rice |\\n| ข้าวมันไก่ | khâao man gài | Hainanese chicken rice |\\n| ข้าวหมูแดง | khâao mǔu daeng | Red pork with rice |\\n| ผัดไทยไก่ | phàt thai gài | Pad Thai with chicken |\\n\\n## Practice Conversation\\n\\n**At a restaurant:**\\n- คุณ: ขอข้าวผัดไก่หนึ่งที่ครับ (One chicken fried rice, please)\\n- พนักงาน: เอาไข่ดาวไหมคะ (Would you like a fried egg?)\\n- คุณ: เอาครับ (Yes, please)\\n- พนักงาน: เอาอะไรดื่มคะ (What would you like to drink?)\\n- คุณ: ขอน้ำเปล่าครับ (Plain water, please)\\n\\n## Key Points\\n\\n1. **ข้าว is essential**: Rice appears in countless dish names\\n2. **ก๋วยเตี๋ยว = noodles**: Choose your noodle type\\n3. **น้ำเปล่า for water**: Specifying \\\"plain\\\" avoids confusion\\n4. **ขอ...หนึ่งที่**: Standard ordering pattern\\n\\n## What's Next\\n\\nIn Lesson 2, you'll learn the five tastes of Thai cuisine — essential for describing and customizing your food.\\n\""],"names":["lesson01"],"mappings":"AAAA,MAAAA,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"lesson-01-WV3ic8Ok.js","sources":["../src/syllabi/grammar/lessons/lesson-01.mdx?raw"],"sourcesContent":["export default \"---\\ntype: lesson\\nid: thai-grammar-lesson-01\\ntitle: \\\"บทที่ 1 — โครงสร้างประโยค\\\"\\ndescription: \\\"Sentence Structure: Subject + Verb + Object basics\\\"\\norder: 1\\nparentId: thai-grammar\\ndifficulty: intermediate\\ncefrLevel: A2\\ncategories:\\n - grammar\\n - sentence-structure\\nmetadata:\\n estimatedTime: 30\\n objectives:\\n - \\\"Understand basic Thai sentence order\\\"\\n - \\\"Form simple statements\\\"\\n - \\\"Recognize subject-verb-object patterns\\\"\\n---\\n\\n# บทที่ 1 (Lesson 1) — Sentence Structure\\n\\n## Introduction\\n\\nThai sentence structure is quite similar to English: **Subject + Verb + Object** (SVO). The good news? No verb conjugations!\\n\\n## Basic Pattern: S + V + O\\n\\n| Thai | Romanization | Meaning |\\n|------|--------------|---------|\\n| ผมกินข้าว | phǒm gin khâao | I eat rice |\\n| เขาอ่านหนังสือ | khǎo àan nǎng-sǔue | He reads a book |\\n| แม่ทำอาหาร | mâe tham aa-hǎan | Mom cooks food |\\n\\n## Subject Pronouns\\n\\n| Thai | Romanization | Meaning |\\n|------|--------------|---------|\\n| ผม | phǒm | I (male) |\\n| ดิฉัน | dì-chǎn | I (female, formal) |\\n| ฉัน | chǎn | I (neutral) |\\n| คุณ | khun | you |\\n| เขา | khǎo | he/she/they |\\n| เรา | rao | we |\\n| มัน | man | it |\\n| พวกเขา | phûuak-khǎo | they |\\n\\n## No Conjugation Needed!\\n\\nUnlike English, Thai verbs stay the same regardless of subject or tense:\\n\\n| Subject | Verb (กิน = eat) | Object |\\n|---------|------------------|--------|\\n| ผม | กิน | ข้าว |\\n| คุณ | กิน | ข้าว |\\n| เขา | กิน | ข้าว |\\n| เรา | กิน | ข้าว |\\n\\nAll = \\\"[subject] gin khâao\\\" = \\\"[subject] eat rice\\\"\\n\\n## Subject Dropping\\n\\nIn Thai, the subject is often dropped when it's clear from context:\\n\\n- **กินข้าวหรือยัง?** (gin khâao rǔue yang?) = \\\"Eaten yet?\\\" (subject \\\"you\\\" implied)\\n- **ไปเลย** (bpai ləəi) = \\\"Go!\\\" or \\\"I'm going\\\" (context determines subject)\\n\\n## Examples\\n\\n| Thai | Pattern | Meaning |\\n|------|---------|---------|\\n| ผมรักคุณ | S + V + O | I love you |\\n| เขาซื้อรถ | S + V + O | He/She buys a car |\\n| เราไปตลาด | S + V + O | We go to the market |\\n| หมากินข้าว | S + V + O | The dog eats rice |\\n\\n## Key Points\\n\\n1. **SVO order** - Same as English most of the time\\n2. **No conjugations** - Verbs never change form\\n3. **Subject dropping** - Common when obvious from context\\n4. **No articles** - No \\\"a\\\", \\\"an\\\", \\\"the\\\" needed\\n\\n## What's Next\\n\\nIn Lesson 2, you'll learn how to form questions in Thai — both yes/no questions and question words like \\\"what\\\", \\\"where\\\", and \\\"when\\\".\\n\""],"names":["lesson01"],"mappings":"AAAA,MAAAA,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"lesson-02-B2Xg7RVU.js","sources":["../src/syllabi/food/lessons/lesson-02.mdx?raw"],"sourcesContent":["export default \"---\\ntype: lesson\\nid: thai-food-lesson-02\\ntitle: \\\"บทที่ 2 — รสชาติ\\\"\\ndescription: \\\"Tastes & Flavors: Spicy, sweet, sour, salty, and bitter\\\"\\norder: 2\\nparentId: thai-food\\ndifficulty: beginner\\ncefrLevel: A2\\ncategories:\\n - food\\n - flavors\\n - adjectives\\nmetadata:\\n estimatedTime: 30\\n prerequisites:\\n - thai-food-lesson-01\\n objectives:\\n - \\\"Describe the five Thai tastes\\\"\\n - \\\"Adjust spice levels\\\"\\n - \\\"Express food preferences\\\"\\n - \\\"Understand flavor descriptions on menus\\\"\\n---\\n\\n# บทที่ 2 (Lesson 2) — Tastes & Flavors\\n\\n## Introduction\\n\\nThai cuisine is famous for balancing multiple flavors in a single dish. Understanding taste vocabulary lets you describe what you want, ask for adjustments, and appreciate the complexity of Thai cooking.\\n\\n## The Five Fundamental Tastes\\n\\n:::vocabulary-set{id=\\\"thai-tastes\\\" title=\\\"The Five Tastes\\\"}\\n\\n::vocab-item{id=\\\"phet\\\" word=\\\"เผ็ด\\\" pronunciation=\\\"phèt\\\" meaning=\\\"spicy\\\"}\\n\\n::vocab-item{id=\\\"waan\\\" word=\\\"หวาน\\\" pronunciation=\\\"wǎan\\\" meaning=\\\"sweet\\\"}\\n\\n::vocab-item{id=\\\"priao\\\" word=\\\"เปรี้ยว\\\" pronunciation=\\\"prîao\\\" meaning=\\\"sour\\\"}\\n\\n::vocab-item{id=\\\"khem\\\" word=\\\"เค็ม\\\" pronunciation=\\\"khem\\\" meaning=\\\"salty\\\"}\\n\\n::vocab-item{id=\\\"khom\\\" word=\\\"ขม\\\" pronunciation=\\\"khǒm\\\" meaning=\\\"bitter\\\"}\\n\\n:::\\n\\n### Taste Balance\\n\\nGreat Thai dishes balance these tastes. For example:\\n- **ต้มยำ** (tom yam): sour + spicy + salty\\n- **ผัดไทย** (pad thai): sweet + sour + salty\\n- **ส้มตำ** (som tam): sour + spicy + sweet + salty\\n\\n## Spice Levels — The Most Important Skill\\n\\n:::vocabulary-set{id=\\\"thai-spice\\\" title=\\\"Spice Vocabulary\\\"}\\n\\n::vocab-item{id=\\\"mai-phet\\\" word=\\\"ไม่เผ็ด\\\" pronunciation=\\\"mâi phèt\\\" meaning=\\\"not spicy\\\"}\\n\\n::vocab-item{id=\\\"phet-nit-noi\\\" word=\\\"เผ็ดนิดหน่อย\\\" pronunciation=\\\"phèt nít nòi\\\" meaning=\\\"a little spicy\\\"}\\n\\n::vocab-item{id=\\\"phet-klang\\\" word=\\\"เผ็ดกลาง\\\" pronunciation=\\\"phèt glaang\\\" meaning=\\\"medium spicy\\\"}\\n\\n::vocab-item{id=\\\"phet-maak\\\" word=\\\"เผ็ดมาก\\\" pronunciation=\\\"phèt mâak\\\" meaning=\\\"very spicy\\\"}\\n\\n::vocab-item{id=\\\"phet-thai\\\" word=\\\"เผ็ดแบบคนไทย\\\" pronunciation=\\\"phèt bàep khon thai\\\" meaning=\\\"Thai-style spicy\\\"}\\n\\n:::\\n\\n### Ordering with Spice Preference\\n\\n| Request | Meaning |\\n|---------|---------|\\n| ขอไม่เผ็ด | Not spicy, please |\\n| เผ็ดนิดหน่อยได้ไหม | Can it be a little spicy? |\\n| เผ็ดปกติ | Normal spice level |\\n| ใส่พริกเพิ่ม | Add more chili |\\n| ไม่ใส่พริก | No chili |\\n\\n**Warning**: \\\"เผ็ดแบบคนไทย\\\" means VERY spicy. Thai people often underestimate spice for foreigners, so this signals you can handle real heat.\\n\\n## Other Flavor Adjustments\\n\\n:::vocabulary-set{id=\\\"thai-flavor-adjust\\\" title=\\\"Flavor Adjustments\\\"}\\n\\n::vocab-item{id=\\\"mai-waan\\\" word=\\\"ไม่หวาน\\\" pronunciation=\\\"mâi wǎan\\\" meaning=\\\"not sweet\\\"}\\n\\n::vocab-item{id=\\\"mai-khem\\\" word=\\\"ไม่เค็ม\\\" pronunciation=\\\"mâi khem\\\" meaning=\\\"not salty\\\"}\\n\\n::vocab-item{id=\\\"waan-noi\\\" word=\\\"หวานน้อย\\\" pronunciation=\\\"wǎan nói\\\" meaning=\\\"less sweet\\\"}\\n\\n::vocab-item{id=\\\"khem-noi\\\" word=\\\"เค็มน้อย\\\" pronunciation=\\\"khem nói\\\" meaning=\\\"less salty\\\"}\\n\\n:::\\n\\n## Describing Food\\n\\n| Thai | Meaning | Example |\\n|------|---------|---------|\\n| อร่อย | delicious | อร่อยมาก! (Very delicious!) |\\n| เผ็ดไป | too spicy | เผ็ดไปหน่อย (a bit too spicy) |\\n| หวานไป | too sweet | หวานไปนิดหน่อย |\\n| กำลังดี | just right | รสชาติกำลังดี |\\n| จืด | bland | จืดไปหน่อย (a bit bland) |\\n\\n## Flavor Sources\\n\\n| Ingredient | Provides |\\n|------------|----------|\\n| พริก (chili) | เผ็ด (spicy) |\\n| น้ำตาล (sugar) | หวาน (sweet) |\\n| มะนาว (lime) | เปรี้ยว (sour) |\\n| น้ำปลา (fish sauce) | เค็ม (salty) |\\n| มะระ (bitter melon) | ขม (bitter) |\\n\\n## Common Taste Combinations\\n\\n| Dish | Dominant Tastes |\\n|------|-----------------|\\n| ต้มยำกุ้ง | เปรี้ยว + เผ็ด |\\n| แกงเขียวหวาน | เผ็ด + หวาน (slightly) |\\n| ส้มตำ | เปรี้ยว + เผ็ด + หวาน |\\n| มัสมั่น | หวาน + เค็ม |\\n| ลาบ | เปรี้ยว + เผ็ด + เค็ม |\\n\\n## Practice Conversations\\n\\n**Ordering with spice preference:**\\n- พนักงาน: เผ็ดได้ไหมคะ (Can you eat spicy?)\\n- คุณ: ได้ครับ แต่เผ็ดนิดหน่อยนะครับ (Yes, but just a little spicy)\\n\\n**Giving feedback:**\\n- พนักงาน: อร่อยไหมคะ (Is it delicious?)\\n- คุณ: อร่อยมากครับ แต่เผ็ดไปนิดหน่อย (Very delicious, but a bit too spicy)\\n\\n**Asking about a dish:**\\n- คุณ: อันนี้เผ็ดไหมครับ (Is this spicy?)\\n- พนักงาน: เผ็ดนิดหน่อยค่ะ (A little spicy)\\n\\n## Key Points\\n\\n1. **เผ็ด is the big one**: Master spice adjustment first\\n2. **ไม่... = not...**: Add ไม่ before any taste\\n3. **...น้อย = less...**: For reducing intensity\\n4. **...ไป = too...**: For feedback on excess\\n\\n## Practice Exercises\\n\\n:::exercise{id=\\\"food-2-spice-levels\\\" type=\\\"matching\\\" title=\\\"Spice Level Recognition\\\"}\\n\\n**Question:** Match each spice level to its Thai phrase\\n\\n- Not spicy at all\\n- A little spicy\\n- Normal spicy\\n- Very spicy\\n- Thai-style spicy\\n\\n**Answer:**\\n\\n- Not spicy at all → ไม่เผ็ดเลย\\n- A little spicy → เผ็ดนิดหน่อย\\n- Normal spicy → เผ็ดปกติ\\n- Very spicy → เผ็ดมาก\\n- Thai-style spicy → เผ็ดแบบคนไทย (warning: very hot!)\\n\\n**Explanation:** Mastering spice levels is crucial for enjoying Thai food. Start with เผ็ดนิดหน่อย if you're unsure. เผ็ดแบบคนไทย is extremely spicy - only use if you can handle real heat!\\n\\n:::\\n\\n:::exercise{id=\\\"food-2-taste-description\\\" type=\\\"fill-in-blank\\\" title=\\\"Describing Tastes\\\"}\\n\\n**Question:** How do you say these taste descriptions?\\n\\n- Too spicy\\n- Just right\\n- A bit bland\\n- Very delicious\\n\\n**Answer:**\\n\\n- เผ็ดไป (too spicy)\\n- กำลังดี (just right)\\n- จืดไปหน่อย (a bit bland)\\n- อร่อยมาก (very delicious)\\n\\n**Explanation:** Use ...ไป for \\\"too [adjective]\\\" and มาก for \\\"very\\\". กำลังดี means \\\"just right\\\" and is perfect for complimenting well-balanced dishes.\\n\\n:::\\n\\n:::exercise{id=\\\"food-2-five-tastes\\\" type=\\\"multiple-choice\\\" title=\\\"The Five Tastes\\\"}\\n\\n**Question:** Which dish is known for balancing sour, spicy, and salty flavors?\\n\\n**Options:**\\n- ผัดไทย (Pad Thai)\\n- ต้มยำกุ้ง (Tom Yum Goong)\\n- แกงเขียวหวาน (Green Curry)\\n- ส้มตำ (Som Tam)\\n\\n**Answer:** 2\\n\\n**Explanation:** ต้มยำกุ้ง (Tom Yum Goong) is famous for balancing เปรี้ยว (sour), เผ็ด (spicy), and เค็ม (salty). Understanding these taste combinations helps you appreciate Thai cuisine's complexity.\\n\\n:::\\n\\n## What's Next\\n\\nIn Lesson 3, you'll learn the words for proteins and vegetables — the ingredients that make up Thai dishes.\\n\""],"names":["lesson02"],"mappings":"AAAA,MAAAA,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"lesson-02-BAbq-QGP.js","sources":["../src/syllabi/alphabet/lessons/lesson-02.mdx?raw"],"sourcesContent":["export default \"---\\ntype: lesson\\nid: thai-script-lesson-02\\ntitle: \\\"บทที่ 2 — พยัญชนะกลาง II\\\"\\ndescription: \\\"Middle-Class Consonants Part 2: ม ย ร ล อ — Nasals, liquids, and the silent consonant\\\"\\norder: 2\\nparentId: thai-script-alphabet\\ndifficulty: beginner\\ncefrLevel: A1\\ncategories:\\n - consonants\\n - middle-class\\n - nasal\\n - approximant\\n - basic-characters\\nmetadata:\\n estimatedTime: 25\\n prerequisites:\\n - thai-script-lesson-01\\n objectives:\\n - \\\"Complete your knowledge of middle-class consonants\\\"\\n - \\\"Understand nasals and approximants\\\"\\n - \\\"Learn the special role of อ as a silent consonant\\\"\\n - \\\"Practice reading simple syllables\\\"\\n---\\n\\n# บทที่ 2 (Lesson 2) — Middle-Class Consonants II\\n\\n## Introduction\\n\\nIn this lesson, you'll complete the middle-class consonants with 5 more characters. These include **nasals** (ม), **liquids** (ร ล), **approximants** (ย ว), and the unique **silent consonant** (อ).\\n\\n## Why These Are Different\\n\\nThe consonants in Lesson 1 were all **stops** — sounds made by completely blocking airflow then releasing. Today's consonants are different:\\n\\n- **Nasals** (ม): Air flows through the nose\\n- **Liquids** (ร ล): Air flows around the tongue\\n- **Approximants** (ย): Tongue approaches but doesn't touch\\n\\nThis affects their behavior in final position — they don't become unreleased stops like the Lesson 1 consonants.\\n\\n## Characters\\n\\n:::character-set{id=\\\"thai-middle-consonants-2\\\" title=\\\"Middle-Class Consonants II\\\"}\\n\\n::character{id=\\\"th-horse\\\" char=\\\"ม\\\" name=\\\"ม ม้า (mɔɔ máa)\\\" nativeName=\\\"ม ม้า\\\" transliteration=\\\"m\\\" charType=\\\"consonant\\\"}\\n\\n::character{id=\\\"th-ogre\\\" char=\\\"ย\\\" name=\\\"ย ยักษ์ (yɔɔ yák)\\\" nativeName=\\\"ย ยักษ์\\\" transliteration=\\\"y\\\" charType=\\\"consonant\\\"}\\n\\n::character{id=\\\"th-boat\\\" char=\\\"ร\\\" name=\\\"ร เรือ (rɔɔ rʉa)\\\" nativeName=\\\"ร เรือ\\\" transliteration=\\\"r/n\\\" charType=\\\"consonant\\\"}\\n\\n::character{id=\\\"th-monkey\\\" char=\\\"ล\\\" name=\\\"ล ลิง (lɔɔ ling)\\\" nativeName=\\\"ล ลิง\\\" transliteration=\\\"l/n\\\" charType=\\\"consonant\\\"}\\n\\n::character{id=\\\"th-bowl\\\" char=\\\"อ\\\" name=\\\"อ อ่าง (ɔɔ àang)\\\" nativeName=\\\"อ อ่าง\\\" transliteration=\\\"-/vowel\\\" charType=\\\"consonant\\\"}\\n\\n:::\\n\\n## The Special Case: อ (Ɔɔ Àang)\\n\\n**อ** is the most unusual Thai consonant. It has **two completely different roles**:\\n\\n### As Initial Consonant\\nWhen starting a syllable that begins with a vowel sound, อ serves as a **silent placeholder**:\\n- อา (aa) — the อ is silent, you just hear \\\"aa\\\"\\n- Without อ, there would be no consonant to \\\"carry\\\" the vowel\\n\\n### As Vowel Component\\nIn certain vowel combinations, อ represents the sound /ɔɔ/:\\n- เมือง (mʉang) — the อ makes the /ɔ/ sound\\n\\nThis dual nature makes อ essential despite being \\\"silent\\\" in many words.\\n\\n## Sound Changes for Nasals and Liquids\\n\\nUnlike the stop consonants from Lesson 1, these consonants keep their basic sound quality in final position:\\n\\n| Consonant | Initial Sound | Final Sound | Example |\\n|-----------|---------------|-------------|---------|\\n| ม | **m** | **m** | มา (maa) / ลม (lom) |\\n| ย | **y** | **i** (as vowel) | ยา (yaa) / สาย (sǎai) |\\n| ร | **r** (rolled) | **n** | รัก (rák) / ตอร์ (dton) |\\n| ล | **l** | **n** | ลา (laa) / กล (gon) |\\n\\n**Important**: Both ร and ล become /n/ in final position. This surprises many learners!\\n\\n## The Thai R Sound\\n\\nThai **ร** is a rolled or flapped R, similar to Spanish. In casual speech, many Thai speakers substitute **ล** for **ร** (so \\\"ร เรือ\\\" sounds like \\\"ล เลือ\\\"). This is very common but considered informal.\\n\\nIn careful speech:\\n- **ร** = alveolar trill or flap (tongue tip vibrates)\\n- **ล** = lateral (air flows around tongue sides)\\n\\n## Middle-Class Complete\\n\\nYou've now learned all 9 middle-class consonants! Here's the complete set:\\n\\n| Stop Consonants | Nasals/Liquids |\\n|-----------------|----------------|\\n| ก จ ด ต ป บ | ม ย ร ล อ |\\n\\nWhy only 9 middle-class versus 24 low-class? Historical sound shifts moved many consonants to the low class over time. The remaining middle-class consonants are the \\\"original\\\" unvoiced stops plus sonorants.\\n\\n## Tone Behavior of Middle Class\\n\\nWith no tone mark, middle-class consonants produce:\\n- **Live syllable** (open or nasal ending): **Mid tone**\\n- **Dead syllable** (stop ending, short vowel): **Low tone**\\n\\nExamples:\\n- กา (gaa) — live, mid tone\\n- กับ (gàp) — dead, low tone\\n\\nThis will make more sense after you learn vowels and tone marks!\\n\\n## Key Points\\n\\n1. **ม** is a nasal — air through nose, same sound initial and final\\n2. **ย** becomes a vowel sound (/i/) in final position\\n3. **ร and ล** both become /n/ at syllable end\\n4. **อ** is the \\\"silent\\\" consonant for vowel-initial words\\n5. **All 9 middle-class** consonants share the same tone rules\\n\\n## Practice Tip: Shape Recognition\\n\\n- **ม** looks like a \\\"3\\\" with a tail\\n- **ย** has a distinctive curving shape\\n- **ร and ล** can be confusing — ร has the loop on top, ล doesn't\\n- **อ** looks like a circle with a tail\\n\\n## Practice Exercises\\n\\n:::exercise{id=\\\"middle-2-final-sounds\\\" type=\\\"matching\\\" title=\\\"Final Position Sounds\\\"}\\n\\n**Question:** Match each consonant to its final position sound\\n\\n- ร (boat)\\n- ล (monkey)\\n- ย (ogre)\\n- ม (horse)\\n\\n**Answer:**\\n\\n- ร → /n/ (becomes N in final position)\\n- ล → /n/ (becomes N in final position)\\n- ย → /i/ (becomes vowel-like sound)\\n- ม → /m/ (stays M in final position)\\n\\n**Explanation:** Unlike stop consonants, these sonorants maintain or transform their sound. Both ร and ล become /n/ finally, which surprises many learners. ย becomes vowel-like, and ม stays the same.\\n\\n:::\\n\\n:::exercise{id=\\\"middle-2-special-case\\\" type=\\\"multiple-choice\\\" title=\\\"The Special อ Consonant\\\"}\\n\\n**Question:** What makes อ (bowl) special?\\n\\n**Options:**\\n- It's the only vowel\\n- It serves as both silent consonant carrier and vowel component\\n- It's never used\\n- It's always pronounced\\n\\n**Answer:** 2\\n\\n**Explanation:** อ has dual functions: (1) as a silent placeholder for vowel-initial syllables (อา = \\\"aa\\\"), and (2) as a vowel component representing /ɔɔ/ in certain combinations. This makes it unique among Thai consonants.\\n\\n:::\\n\\n:::exercise{id=\\\"middle-2-complete-set\\\" type=\\\"fill-in-blank\\\" title=\\\"Complete Middle-Class Set\\\"}\\n\\n**Question:** How many middle-class consonants are there, and what are they?\\n\\n**Answer:**\\n\\nThere are **9 middle-class consonants** total:\\n- Stop consonants: ก จ ด ต ป บ\\n- Nasals/Liquids: ม ย ร ล อ\\n\\n**Explanation:** Middle-class is the smallest group (9 consonants) compared to high-class (11) and low-class (24). They're called \\\"middle\\\" because they produce mid tones in basic patterns, forming the baseline for the tone system.\\n\\n:::\\n\\n## What's Next\\n\\nIn Lesson 3, you'll start learning **high-class consonants** — these create rising tones and are the \\\"aspirated\\\" (breathy) versions of sounds you already know.\\n\""],"names":["lesson02"],"mappings":"AAAA,MAAAA,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"lesson-02-BGnp0Ik_.js","sources":["../src/syllabi/vowels-tones/lessons/lesson-02.mdx?raw"],"sourcesContent":["export default \"---\\ntype: lesson\\nid: thai-vowels-lesson-02\\ntitle: \\\"บทที่ 2 — สระเสียงสั้น II\\\"\\ndescription: \\\"Short Vowels Part 2: Before, after, and around consonants\\\"\\norder: 2\\nparentId: thai-vowels-tones\\ndifficulty: beginner\\ncefrLevel: A1\\ncategories:\\n - vowels\\n - short-vowels\\n - basic-vowels\\nmetadata:\\n estimatedTime: 35\\n prerequisites:\\n - thai-vowels-lesson-01\\n objectives:\\n - \\\"Recognize vowels written before consonants\\\"\\n - \\\"Recognize vowels written after consonants\\\"\\n - \\\"Understand 'write left, read right' principle\\\"\\n - \\\"Master the short 'a' vowel forms\\\"\\n---\\n\\n# บทที่ 2 (Lesson 2) — Short Vowels II\\n\\n## Introduction\\n\\nIn this lesson, you'll encounter Thai's most unique vowel feature: vowels that appear **before** the consonant in writing but are pronounced **after** it. This \\\"write left, read right\\\" pattern is essential for reading Thai fluently.\\n\\n## The Glottal Stop Vowel: ะ\\n\\nThe vowel **ะ** (sara a) is special — it creates a short \\\"a\\\" sound followed by a **glottal stop** (a brief catch in the throat, like the pause in \\\"uh-oh\\\").\\n\\n:::character-set{id=\\\"thai-short-vowel-a\\\" title=\\\"Short 'a' Vowel\\\"}\\n\\n::character{id=\\\"th-vowel-a\\\" char=\\\"ะ\\\" name=\\\"สระอะ (sara a)\\\" nativeName=\\\"สระอะ\\\" transliteration=\\\"a\\\" charType=\\\"vowel\\\"}\\n\\n:::\\n\\n## Leading Vowels: Write First, Pronounce After\\n\\nThese vowels are written **before** the consonant but pronounced **after** it:\\n\\n:::character-set{id=\\\"thai-leading-short-vowels\\\" title=\\\"Leading Short Vowels\\\"}\\n\\n::character{id=\\\"th-vowel-e\\\" char=\\\"เ-ะ\\\" name=\\\"สระเอะ (sara e)\\\" nativeName=\\\"สระเอะ\\\" transliteration=\\\"e\\\" charType=\\\"vowel\\\"}\\n\\n::character{id=\\\"th-vowel-ae\\\" char=\\\"แ-ะ\\\" name=\\\"สระแอะ (sara ae)\\\" nativeName=\\\"สระแอะ\\\" transliteration=\\\"ae\\\" charType=\\\"vowel\\\"}\\n\\n::character{id=\\\"th-vowel-o\\\" char=\\\"โ-ะ\\\" name=\\\"สระโอะ (sara o)\\\" nativeName=\\\"สระโอะ\\\" transliteration=\\\"o\\\" charType=\\\"vowel\\\"}\\n\\n::character{id=\\\"th-vowel-oe\\\" char=\\\"เ-อะ\\\" name=\\\"สระเออะ (sara oe)\\\" nativeName=\\\"สระเออะ\\\" transliteration=\\\"oe\\\" charType=\\\"vowel\\\"}\\n\\n:::\\n\\n## The Wrap-Around Vowel: เ-า\\n\\nThis vowel \\\"wraps around\\\" the consonant:\\n\\n:::character-set{id=\\\"thai-wraparound-vowel\\\" title=\\\"Wrap-Around Vowel\\\"}\\n\\n::character{id=\\\"th-vowel-ao\\\" char=\\\"เ-า\\\" name=\\\"สระเอา (sara ao)\\\" nativeName=\\\"สระเอา\\\" transliteration=\\\"ao\\\" charType=\\\"vowel\\\"}\\n\\n:::\\n\\n## Understanding \\\"Write Left, Read Right\\\"\\n\\nIn Thai, when you see: **เ** + ก → **เก**\\n\\nYou **write** เ first (to the left), but you **read** it as \\\"gee\\\" — the consonant ก comes first in pronunciation.\\n\\n| Written Form | How to Read | Pronunciation |\\n|--------------|-------------|---------------|\\n| เกะ | ก + เ-ะ | ge (short) |\\n| แกะ | ก + แ-ะ | gae (short) |\\n| โกะ | ก + โ-ะ | go (short) |\\n| เกา | ก + เ-า | gao |\\n\\n## Short Vowel Pairs\\n\\nEach short vowel has a long counterpart:\\n\\n| Short | Long | Sound Comparison |\\n|-------|------|------------------|\\n| ะ (a) | า (aa) | \\\"cut\\\" vs \\\"car\\\" |\\n| เ-ะ (e) | เ (ee) | \\\"pet\\\" vs \\\"pay\\\" |\\n| แ-ะ (ae) | แ (aae) | \\\"bat\\\" vs \\\"bad\\\" (longer) |\\n| โ-ะ (o) | โ (oo) | \\\"pot\\\" vs \\\"boat\\\" |\\n\\n## Key Points\\n\\n1. **Write left, read right**: Leading vowels are written first but pronounced after the consonant\\n2. **ะ marks shortness**: When you see ะ at the end, the vowel is short\\n3. **Glottal stop**: Short vowels often end with a brief throat catch\\n4. **Two-part vowels**: Some vowels wrap around the consonant (เ-า)\\n\\n## Common Words Practice\\n\\nTry reading these common words:\\n- เตะ (dte) — to kick\\n- แมะ (mae) — informal \\\"mom\\\" (some dialects)\\n- เกา (gao) — to scratch\\n\\n## Practice Exercises\\n\\n:::exercise{id=\\\"short-vowels-2-direction\\\" type=\\\"multiple-choice\\\" title=\\\"Write Left, Read Right\\\"}\\n\\n**Question:** When you see เก (written as เ + ก), how do you read it?\\n\\n**Options:**\\n- Read เ first, then ก (like \\\"ay-gor\\\")\\n- Read ก first, then เ (like \\\"gor-ay\\\")\\n- Read them simultaneously\\n- It depends on the word\\n\\n**Answer:** 2\\n\\n**Explanation:** Leading vowels follow the \\\"write left, read right\\\" principle. เ is written first (to the left), but you read ก first, then the vowel sound. เก is pronounced \\\"gee\\\" (ก + เ).\\n\\n:::\\n\\n:::exercise{id=\\\"short-vowels-2-recognition\\\" type=\\\"matching\\\" title=\\\"Short Vowel Recognition\\\"}\\n\\n**Question:** Match each written form to its pronunciation\\n\\n- เกะ (ก + เ-ะ)\\n- แกะ (ก + แ-ะ)\\n- โกะ (ก + โ-ะ)\\n- เกา (ก + เ-า)\\n\\n**Answer:**\\n\\n- เกะ → ge (short e)\\n- แกะ → gae (short ae)\\n- โกะ → go (short o)\\n- เกา → gao (ao sound)\\n\\n**Explanation:** Short vowels are marked with ะ at the end. The wrap-around vowel เ-า creates the \\\"ao\\\" sound. Remember to read the consonant first, then the vowel.\\n\\n:::\\n\\n:::exercise{id=\\\"short-vowels-2-pairs\\\" type=\\\"fill-in-blank\\\" title=\\\"Short vs Long Pairs\\\"}\\n\\n**Question:** What makes a vowel short vs long in these pairs?\\n\\n- ะ vs า\\n- เ-ะ vs เ\\n- แ-ะ vs แ\\n\\n**Answer:**\\n\\n- ะ is short, า is long (the ะ marks shortness)\\n- เ-ะ is short, เ is long (absence of ะ = long)\\n- แ-ะ is short, แ is long (same pattern)\\n\\n**Explanation:** The ะ mark indicates a short vowel. When ะ is absent, the vowel is long. This is a consistent pattern across Thai vowels.\\n\\n:::\\n\\n## What's Next\\n\\nIn Lesson 3, you'll learn the **long vowels** — extended sounds that are crucial for proper pronunciation and affect how tones work.\\n\""],"names":["lesson02"],"mappings":"AAAA,MAAAA,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"lesson-02-BO3BXPMJ.js","sources":["../src/syllabi/reading/lessons/lesson-02.mdx?raw"],"sourcesContent":["export default \"---\\ntype: lesson\\nid: thai-reading-lesson-02\\ntitle: \\\"บทที่ 2 — เมนูอาหาร\\\"\\ndescription: \\\"Restaurant Menus: Read Thai restaurant menus and order confidently\\\"\\norder: 2\\nparentId: thai-reading\\ndifficulty: intermediate\\ncefrLevel: B1\\ncategories:\\n - reading\\n - menus\\n - food\\nmetadata:\\n estimatedTime: 30\\n prerequisites:\\n - thai-reading-lesson-01\\n objectives:\\n - \\\"Read food names in Thai script\\\"\\n - \\\"Understand menu categories\\\"\\n - \\\"Recognize pricing and portion information\\\"\\n---\\n\\n# Restaurant Menus\\n\\nThai menus follow predictable patterns. Learn to read them and order with confidence.\\n\\n## Menu Categories\\n\\n| Thai | Romanization | English |\\n|------|--------------|---------|\\n| อาหารจานเดียว | ahan jan diao | single dishes |\\n| กับข้าว | kap khao | dishes with rice |\\n| เครื่องดื่ม | khrueang duem | beverages |\\n| ของหวาน | khong wan | desserts |\\n\\n## Common Menu Items\\n\\n| Thai | Romanization | English |\\n|------|--------------|---------|\\n| ข้าวผัด | khao phat | fried rice |\\n| ผัดไทย | phat thai | pad thai |\\n| ต้มยำกุ้ง | tom yam kung | spicy shrimp soup |\\n| แกงเขียวหวาน | kaeng khiao wan | green curry |\\n\\n## Menu Descriptors\\n\\n| Thai | Romanization | English |\\n|------|--------------|---------|\\n| พิเศษ | phiset | special |\\n| ธรรมดา | thammada | regular |\\n| ใหญ่ | yai | large |\\n| เล็ก | lek | small |\\n\\n## Price Indicators\\n\\n| Thai | Romanization | English |\\n|------|--------------|---------|\\n| ราคา | raka | price |\\n| บาท | baht | baht |\\n| ต่อจาน | to jan | per plate |\\n| ต่อถ้วย | to thuai | per bowl |\\n\\n## Sample Menu Reading\\n\\n**ผัดไทยกุ้ง (พิเศษ) - 80 บาท**\\n*phat thai kung (phiset) - paet-sip baht*\\nPad Thai with shrimp (special) - 80 baht\\n\\n**ข้าวผัดหมู - 50 บาท**\\n*khao phat mu - ha-sip baht*\\nPork fried rice - 50 baht\\n\\n## Practice Exercises\\n\\n:::exercise{id=\\\"reading-2-menu-categories\\\" type=\\\"matching\\\" title=\\\"Menu Category Recognition\\\"}\\n\\n**Question:** Match each menu category to its meaning\\n\\n- อาหารจานเดียว\\n- กับข้าว\\n- เครื่องดื่ม\\n- ของหวาน\\n\\n**Answer:**\\n\\n- อาหารจานเดียว → Single dishes (main dishes)\\n- กับข้าว → Dishes with rice (side dishes)\\n- เครื่องดื่ม → Beverages/drinks\\n- ของหวาน → Desserts\\n\\n**Explanation:** Thai menus are organized by category. อาหารจานเดียว are complete single-dish meals. กับข้าว are dishes meant to be eaten with rice. Understanding these categories helps you navigate menus.\\n\\n:::\\n\\n:::exercise{id=\\\"reading-2-menu-descriptors\\\" type=\\\"fill-in-blank\\\" title=\\\"Menu Descriptors\\\"}\\n\\n**Question:** What do these menu descriptors mean?\\n\\n- พิเศษ\\n- ธรรมดา\\n- ใหญ่\\n- เล็ก\\n\\n**Answer:**\\n\\n- พิเศษ → Special (often means larger portion or premium version)\\n- ธรรมดา → Regular/normal\\n- ใหญ่ → Large\\n- เล็ก → Small\\n\\n**Explanation:** These descriptors appear frequently on menus. พิเศษ often means a special or larger version. ใหญ่ and เล็ก refer to portion sizes.\\n\\n:::\\n\\n:::exercise{id=\\\"reading-2-price-reading\\\" type=\\\"multiple-choice\\\" title=\\\"Reading Prices\\\"}\\n\\n**Question:** How do you read \\\"80 บาท\\\" from a menu?\\n\\n**Options:**\\n- Eighty baht\\n- Eight-zero baht\\n- แปดสิบบาท (paet-sip baat)\\n- All of the above are correct\\n\\n**Answer:** 4\\n\\n**Explanation:** Prices can be written in Arabic numerals (80) or Thai numerals (๘๐), but are usually said in Thai: แปดสิบบาท. Always add บาท after the amount.\\n\\n:::\\n\\n## What's Next\\n\\nIn Lesson 3, you'll master transportation signs — navigate BTS/MRT stations, airports, and public transport with confidence.\\n\""],"names":["lesson02"],"mappings":"AAAA,MAAAA,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"lesson-02-Bm9EJuN8.js","sources":["../src/syllabi/numbers/lessons/lesson-02.mdx?raw"],"sourcesContent":["export default \"---\\ntype: lesson\\nid: thai-numbers-lesson-02\\ntitle: \\\"บทที่ 2 — นับ ๑-๑๐๐\\\"\\ndescription: \\\"Counting 1-100: Teens, tens, and special rules\\\"\\norder: 2\\nparentId: thai-numbers\\ndifficulty: beginner\\ncefrLevel: A1\\ncategories:\\n - numbers\\n - counting\\n - basics\\nmetadata:\\n estimatedTime: 25\\n prerequisites:\\n - thai-numbers-lesson-01\\n objectives:\\n - \\\"Count from 1 to 100 fluently\\\"\\n - \\\"Understand the special rule for 11-19\\\"\\n - \\\"Know why 20 uses ยี่ instead of สอง\\\"\\n - \\\"Form any two-digit number correctly\\\"\\n---\\n\\n# บทที่ 2 (Lesson 2) — Counting 1-100\\n\\n## Introduction\\n\\nThai counting follows a logical pattern, but with a few important exceptions that every learner must know. The rules for teens (11-19) and the word for 20 are different from what you might expect.\\n\\n## The Basic Pattern\\n\\nThai numbers follow a place-value system like English:\\n- **Tens place** + สิบ (sìp) = \\\"ten\\\"\\n- **Ones place** = the digit\\n\\nExample: 35 = สาม (3) + สิบ (10) + ห้า (5) = สามสิบห้า (sǎam-sìp-hâa)\\n\\n## The Teens (11-19): Special Rule #1\\n\\nFor 11-19, Thai uses สิบ (sìp) first, then adds the ones digit. But there's a catch:\\n\\n**หนึ่ง becomes เอ็ด (èt) when it's not alone.**\\n\\n| Number | Wrong | Correct | Pronunciation |\\n|--------|-------|---------|---------------|\\n| 10 | — | สิบ | sìp |\\n| 11 | ~~สิบหนึ่ง~~ | สิบเอ็ด | sìp-èt |\\n| 12 | — | สิบสอง | sìp-sǒng |\\n| 13 | — | สิบสาม | sìp-sǎam |\\n| 14 | — | สิบสี่ | sìp-sìi |\\n| 15 | — | สิบห้า | sìp-hâa |\\n| 16 | — | สิบหก | sìp-hòk |\\n| 17 | — | สิบเจ็ด | sìp-jèt |\\n| 18 | — | สิบแปด | sìp-bpàet |\\n| 19 | — | สิบเก้า | sìp-gâo |\\n\\n**Key rule**: หนึ่ง (nʉ̀ng) is only used when it stands alone. In compounds, it becomes เอ็ด (èt).\\n\\n## Twenty: Special Rule #2\\n\\nHere's the second exception: 20 is NOT สองสิบ!\\n\\n**20 = ยี่สิบ (yîi-sìp)**\\n\\nWhy? Historical reasons — ยี่ is an older word for \\\"two\\\" that survives only in this context.\\n\\n| Number | Thai | Pronunciation |\\n|--------|------|---------------|\\n| 20 | ยี่สิบ | yîi-sìp |\\n| 21 | ยี่สิบเอ็ด | yîi-sìp-èt |\\n| 22 | ยี่สิบสอง | yîi-sìp-sǒng |\\n| 29 | ยี่สิบเก้า | yîi-sìp-gâo |\\n\\n## The Regular Tens (30-90)\\n\\nAfter 20, the pattern is regular:\\n\\n| Number | Thai | Pronunciation |\\n|--------|------|---------------|\\n| 30 | สามสิบ | sǎam-sìp |\\n| 40 | สี่สิบ | sìi-sìp |\\n| 50 | ห้าสิบ | hâa-sìp |\\n| 60 | หกสิบ | hòk-sìp |\\n| 70 | เจ็ดสิบ | jèt-sìp |\\n| 80 | แปดสิบ | bpàet-sìp |\\n| 90 | เก้าสิบ | gâo-sìp |\\n| 100 | ร้อย | rɔ́ɔi |\\n\\n## Building Any Number 1-99\\n\\nFormula: **[tens word] + สิบ + [ones word]**\\n\\nRemember:\\n- Use เอ็ด for 1 in compounds (21, 31, 41...)\\n- Use ยี่สิบ for 20-29\\n- Everything else is regular\\n\\n| Number | Breakdown | Thai |\\n|--------|-----------|------|\\n| 47 | 4×10 + 7 | สี่สิบเจ็ด |\\n| 63 | 6×10 + 3 | หกสิบสาม |\\n| 81 | 8×10 + 1 | แปดสิบเอ็ด |\\n| 99 | 9×10 + 9 | เก้าสิบเก้า |\\n\\n## Key Points\\n\\n1. **เอ็ด replaces หนึ่ง**: Always in compound numbers (11, 21, 31...)\\n2. **ยี่สิบ for 20**: Never สองสิบ\\n3. **สิบ = 10**: The building block for all two-digit numbers\\n4. **Pattern is logical**: Once you know the exceptions, it's predictable\\n\\n## Common Mistakes\\n\\n- ❌ ยี่สิบหนึ่ง → ✓ ยี่สิบเอ็ด (21)\\n- ❌ สองสิบ → ✓ ยี่สิบ (20)\\n- ❌ สามสิบหนึ่ง → ✓ สามสิบเอ็ด (31)\\n\\n## Practice Counting\\n\\nTry saying these out loud:\\n- 15, 25, 35, 45, 55\\n- 11, 22, 33, 44, 55\\n- 19, 29, 39, 49, 59\\n\\n## Practice Exercises\\n\\n:::exercise{id=\\\"numbers-2-special-rules\\\" type=\\\"fill-in-blank\\\" title=\\\"Special Rules Practice\\\"}\\n\\n**Question:** Write these numbers in Thai:\\n\\n- 11 (ten + one)\\n- 20 (twenty)\\n- 21 (twenty + one)\\n- 31 (thirty + one)\\n\\n**Answer:**\\n\\n- 11 → สิบ**เอ็ด** (not สิบหนึ่ง)\\n- 20 → **ยี่**สิบ (not สองสิบ)\\n- 21 → ยี่สิบ**เอ็ด** (not ยี่สิบหนึ่ง)\\n- 31 → สามสิบ**เอ็ด** (not สามสิบหนึ่ง)\\n\\n**Explanation:** Remember the two special rules: (1) หนึ่ง becomes เอ็ด in compound numbers, and (2) 20 uses ยี่สิบ, not สองสิบ. These are the only exceptions to the regular pattern.\\n\\n:::\\n\\n:::exercise{id=\\\"numbers-2-building-numbers\\\" type=\\\"matching\\\" title=\\\"Building Two-Digit Numbers\\\"}\\n\\n**Question:** Match each number to its Thai form\\n\\n- 47\\n- 63\\n- 81\\n- 99\\n\\n**Answer:**\\n\\n- 47 → สี่สิบเจ็ด (4×10 + 7)\\n- 63 → หกสิบสาม (6×10 + 3)\\n- 81 → แปดสิบเอ็ด (8×10 + 1, remember เอ็ด!)\\n- 99 → เก้าสิบเก้า (9×10 + 9)\\n\\n**Explanation:** The pattern is [tens word] + สิบ + [ones word]. For numbers ending in 1, use เอ็ด instead of หนึ่ง.\\n\\n:::\\n\\n:::exercise{id=\\\"numbers-2-common-mistakes\\\" type=\\\"multiple-choice\\\" title=\\\"Common Mistakes\\\"}\\n\\n**Question:** Which is the correct way to say 21 in Thai?\\n\\n**Options:**\\n- ยี่สิบหนึ่ง\\n- ยี่สิบเอ็ด\\n- สองสิบเอ็ด\\n- ยี่สิบยี่\\n\\n**Answer:** 2\\n\\n**Explanation:** 21 is ยี่สิบเอ็ด. Remember: (1) 20 uses ยี่สิบ (not สองสิบ), and (2) หนึ่ง becomes เอ็ด in compounds. So ยี่สิบ + เอ็ด = ยี่สิบเอ็ด.\\n\\n:::\\n\\n## What's Next\\n\\nIn Lesson 3, you'll learn large numbers — hundreds, thousands, and millions — including how Thai groups numbers differently than English.\\n\""],"names":["lesson02"],"mappings":"AAAA,MAAAA,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"lesson-02-C0ZL4z3c.js","sources":["../src/syllabi/grammar/lessons/lesson-02.mdx?raw"],"sourcesContent":["export default \"---\\ntype: lesson\\nid: thai-grammar-lesson-02\\ntitle: \\\"บทที่ 2 — การถามคำถาม\\\"\\ndescription: \\\"Questions: Question words and yes/no questions\\\"\\norder: 2\\nparentId: thai-grammar\\ndifficulty: intermediate\\ncefrLevel: A2\\ncategories:\\n - grammar\\n - questions\\nmetadata:\\n estimatedTime: 30\\n prerequisites:\\n - thai-grammar-lesson-01\\n objectives:\\n - \\\"Form yes/no questions\\\"\\n - \\\"Use question words\\\"\\n - \\\"Understand question intonation\\\"\\n---\\n\\n# บทที่ 2 (Lesson 2) — Questions\\n\\n## Introduction\\n\\nThai has two main question types: **yes/no questions** (add ไหม at the end) and **wh-questions** (use question words).\\n\\n## Yes/No Questions: Add ไหม (mái)\\n\\nSimply add **ไหม** at the end of a statement:\\n\\n| Statement | Question |\\n|-----------|----------|\\n| คุณกินข้าว (you eat rice) | คุณกินข้าวไหม? (Do you eat rice?) |\\n| เขาไปตลาด (he goes to market) | เขาไปตลาดไหม? (Does he go to market?) |\\n| มีห้องว่าง (there's a room) | มีห้องว่างไหม? (Is there a room?) |\\n\\n## Answering Yes/No Questions\\n\\n| Response | Meaning |\\n|----------|---------|\\n| ครับ/ค่ะ | Yes (polite) |\\n| ใช่ (châi) | Yes/correct |\\n| ไม่ (mâi) + verb | No (repeat verb with ไม่) |\\n| ไม่ครับ/ค่ะ | No (polite) |\\n\\nExample:\\n- Q: คุณชอบอาหารไทยไหม? (Do you like Thai food?)\\n- A: ชอบครับ (Yes, I like it) or ไม่ชอบครับ (No, I don't like it)\\n\\n## Question Words\\n\\n| Thai | Romanization | Meaning |\\n|------|--------------|---------|\\n| อะไร | à-rai | what |\\n| ใคร | khrai | who |\\n| ที่ไหน | thîi-nǎi | where |\\n| เมื่อไหร่ | mûuea-rài | when |\\n| ทำไม | tham-mai | why |\\n| อย่างไร/ยังไง | yàang-rai/yang-ngai | how |\\n| เท่าไหร่ | thâo-rài | how much |\\n| กี่ | gìi | how many |\\n\\n## Question Word Placement\\n\\nQuestion words go **where the answer would go**:\\n\\n| Question | Answer |\\n|----------|--------|\\n| คุณกินอะไร? (What do you eat?) | ผมกินข้าว (I eat rice) |\\n| ใครมา? (Who came?) | เพื่อนมา (A friend came) |\\n| คุณไปที่ไหน? (Where do you go?) | ผมไปตลาด (I go to market) |\\n| นี่อะไร? (What is this?) | นี่หนังสือ (This is a book) |\\n\\n## Common Question Patterns\\n\\n| Pattern | Example | Meaning |\\n|---------|---------|---------|\\n| ...อะไร? | ชื่ออะไร? | What is (your) name? |\\n| ...ที่ไหน? | ห้องน้ำอยู่ที่ไหน? | Where is the bathroom? |\\n| ...เท่าไหร่? | ราคาเท่าไหร่? | How much (is the price)? |\\n| กี่...? | กี่โมง? | What time? (How many hours?) |\\n| ...หรือเปล่า? | ร้อนหรือเปล่า? | Is it hot? |\\n\\n## Alternative: หรือเปล่า (rǔue bplào)\\n\\nAnother way to ask yes/no questions:\\n\\n| With ไหม | With หรือเปล่า |\\n|----------|----------------|\\n| คุณหิวไหม? | คุณหิวหรือเปล่า? |\\n\\nBoth mean \\\"Are you hungry?\\\" but หรือเปล่า sounds slightly softer.\\n\\n## Key Points\\n\\n1. **ไหม at the end** makes any statement a yes/no question\\n2. **Answer by repeating the verb** (with or without ไม่)\\n3. **Question words** replace the unknown information\\n4. **No subject-verb inversion** like in English\\n\\n## What's Next\\n\\nIn Lesson 3, you'll learn about Thai negation — how to say \\\"no\\\" and \\\"not\\\" in different contexts, including the important distinction between ไม่ (mâi) and ไม่ใช่ (mâi châi).\\n\""],"names":["lesson02"],"mappings":"AAAA,MAAAA,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"lesson-02-C2ALLvoT.js","sources":["../src/syllabi/travel/lessons/lesson-02.mdx?raw"],"sourcesContent":["export default \"---\\ntype: lesson\\nid: thai-travel-lesson-02\\ntitle: \\\"บทที่ 2 — ทิศทาง\\\"\\ndescription: \\\"Directions: Navigate and give directions in Thai\\\"\\norder: 2\\nparentId: thai-vocab-travel\\ndifficulty: beginner\\ncefrLevel: A2\\ncategories:\\n - travel\\n - directions\\nmetadata:\\n estimatedTime: 25\\n prerequisites:\\n - thai-travel-lesson-01\\n objectives:\\n - \\\"Give and understand basic directions\\\"\\n - \\\"Ask where places are\\\"\\n - \\\"Describe relative positions\\\"\\n - \\\"Use distance vocabulary\\\"\\n---\\n\\n# บทที่ 2 (Lesson 2) — Directions\\n\\n## Introduction\\n\\nKnowing direction words transforms you from a lost tourist into a confident navigator. These are some of the most useful words in daily Thai life.\\n\\n## Basic Directions\\n\\n:::vocabulary-set{id=\\\"thai-directions\\\" title=\\\"Direction Words\\\"}\\n\\n::vocab-item{id=\\\"sai\\\" word=\\\"ซ้าย\\\" pronunciation=\\\"sáai\\\" meaning=\\\"left\\\"}\\n\\n::vocab-item{id=\\\"kwaa\\\" word=\\\"ขวา\\\" pronunciation=\\\"khwǎa\\\" meaning=\\\"right\\\"}\\n\\n::vocab-item{id=\\\"trong-pai\\\" word=\\\"ตรงไป\\\" pronunciation=\\\"dtrong bpai\\\" meaning=\\\"straight ahead\\\"}\\n\\n::vocab-item{id=\\\"liaw\\\" word=\\\"เลี้ยว\\\" pronunciation=\\\"líao\\\" meaning=\\\"turn\\\"}\\n\\n::vocab-item{id=\\\"klap\\\" word=\\\"กลับ\\\" pronunciation=\\\"glàp\\\" meaning=\\\"turn around/go back\\\"}\\n\\n:::\\n\\n## Distance & Position\\n\\n:::vocabulary-set{id=\\\"thai-distance\\\" title=\\\"Distance & Position\\\"}\\n\\n::vocab-item{id=\\\"glai\\\" word=\\\"ใกล้\\\" pronunciation=\\\"glâi\\\" meaning=\\\"near/close\\\"}\\n\\n::vocab-item{id=\\\"klai\\\" word=\\\"ไกล\\\" pronunciation=\\\"glai\\\" meaning=\\\"far\\\"}\\n\\n::vocab-item{id=\\\"trong-khaam\\\" word=\\\"ตรงข้าม\\\" pronunciation=\\\"dtrong khâam\\\" meaning=\\\"opposite/across from\\\"}\\n\\n::vocab-item{id=\\\"khaang\\\" word=\\\"ข้าง\\\" pronunciation=\\\"khâang\\\" meaning=\\\"beside/next to\\\"}\\n\\n::vocab-item{id=\\\"rawang\\\" word=\\\"ระหว่าง\\\" pronunciation=\\\"rá-wàang\\\" meaning=\\\"between\\\"}\\n\\n:::\\n\\n## Direction Phrases\\n\\n| Thai | Meaning |\\n|------|---------|\\n| เลี้ยวซ้าย | Turn left |\\n| เลี้ยวขวา | Turn right |\\n| ตรงไปเรื่อยๆ | Keep going straight |\\n| อยู่ข้างซ้าย | It's on the left |\\n| อยู่ตรงข้าม | It's across from |\\n| ไกลไหม | Is it far? |\\n| ใกล้มาก | Very close |\\n\\n## Asking Directions\\n\\n| Question | Meaning |\\n|----------|---------|\\n| ...อยู่ที่ไหนครับ | Where is...? |\\n| ไปยังไงครับ | How do I get there? |\\n| เดินไปได้ไหม | Can I walk there? |\\n| ใช้เวลานานไหม | Does it take long? |\\n\\n## Sample Conversation\\n\\n**Finding a place:**\\n- คุณ: ขอโทษครับ วัดพระแก้วอยู่ที่ไหนครับ (Excuse me, where is Wat Phra Kaew?)\\n- คนไทย: ตรงไปแล้วเลี้ยวซ้ายครับ ใกล้ๆ นี่เอง (Go straight then turn left. It's nearby)\\n- คุณ: ไกลไหมครับ (Is it far?)\\n- คนไทย: ไม่ไกลครับ เดินห้านาที (Not far. Five minutes walking)\\n\\n## Key Points\\n\\n1. **เลี้ยว + direction**: \\\"Turn\\\" + left/right\\n2. **ใกล้ vs ไกล**: Near vs far (tones matter!)\\n3. **อยู่ที่ไหน**: Essential question for finding anything\\n4. **ตรงข้าม**: Use with landmarks (ตรงข้ามเซเว่น = opposite 7-Eleven)\\n\\n## Practice Exercises\\n\\n:::exercise{id=\\\"travel-2-basic-directions\\\" type=\\\"matching\\\" title=\\\"Basic Direction Recognition\\\"}\\n\\n**Question:** Match each direction to its Thai word\\n\\n- Left\\n- Right\\n- Straight ahead\\n- Turn around\\n\\n**Answer:**\\n\\n- Left → ซ้าย\\n- Right → ขวา\\n- Straight ahead → ตรงไป\\n- Turn around → กลับ\\n\\n**Explanation:** These are the four basic directions. Remember: ซ้าย (left) and ขวา (right) have different tones - ซ้าย is falling, ขวา is rising. This matters for understanding!\\n\\n:::\\n\\n:::exercise{id=\\\"travel-2-distance\\\" type=\\\"multiple-choice\\\" title=\\\"Distance Vocabulary\\\"}\\n\\n**Question:** What's the difference between ใกล้ and ไกล?\\n\\n**Options:**\\n- ใกล้ means \\\"near\\\", ไกล means \\\"far\\\" - different tones\\n- They mean the same thing\\n- ใกล้ means \\\"far\\\", ไกล means \\\"near\\\"\\n- They're different words for the same concept\\n\\n**Answer:** 1\\n\\n**Explanation:** ใกล้ (glâi - falling tone) means \\\"near/close\\\", while ไกล (glai - mid tone) means \\\"far\\\". The tones are different, so listen carefully! This is a common confusion for learners.\\n\\n:::\\n\\n:::exercise{id=\\\"travel-2-asking-directions\\\" type=\\\"fill-in-blank\\\" title=\\\"Asking for Directions\\\"}\\n\\n**Question:** How do you ask these questions?\\n\\n- Where is the bathroom?\\n- How do I get there?\\n- Can I walk there?\\n\\n**Answer:**\\n\\n- ห้องน้ำอยู่ที่ไหนครับ/คะ (Where is the bathroom?)\\n- ไปยังไงครับ/คะ (How do I get there?)\\n- เดินไปได้ไหมครับ/คะ (Can I walk there?)\\n\\n**Explanation:** ...อยู่ที่ไหน is the standard \\\"where is...\\\" pattern. ไปยังไง means \\\"how to go\\\". เดินไปได้ไหม asks about walking ability. Always add polite particles!\\n\\n:::\\n\\n## What's Next\\n\\nIn Lesson 3, you'll learn the names of key places you'll want to find.\\n\""],"names":["lesson02"],"mappings":"AAAA,MAAAA,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"lesson-02-C8dfzXvq.js","sources":["../src/syllabi/dialogue/lessons/lesson-02.mdx?raw"],"sourcesContent":["export default \"---\\ntype: lesson\\nid: thai-dialogue-lesson-02\\ntitle: \\\"บทที่ 2 — ที่ร้านอาหาร\\\"\\ndescription: \\\"At the Restaurant: Ordering food and making special requests\\\"\\norder: 2\\nparentId: thai-dialogue\\ndifficulty: intermediate\\ncefrLevel: A2\\ncategories:\\n - dialogue\\n - restaurant\\n - food\\nmetadata:\\n estimatedTime: 30\\n prerequisites:\\n - thai-dialogue-lesson-01\\n objectives:\\n - \\\"Order food at a restaurant\\\"\\n - \\\"Make special dietary requests\\\"\\n - \\\"Ask for the bill\\\"\\n - \\\"Handle common restaurant situations\\\"\\n---\\n\\n# บทที่ 2 (Lesson 2) — At the Restaurant\\n\\n## Situation\\n\\nYou're at a Thai restaurant ordering lunch.\\n\\n## Dialogue\\n\\n:::dialogue{id=\\\"restaurant-dialogue-1\\\" title=\\\"Ordering Lunch\\\"}\\n\\n**พนักงาน (Server):** สวัสดีค่ะ สั่งอะไรดีคะ?\\n*sà-wàt-dii khâ, sàng à-rai dii khá?*\\nHello! What would you like to order?\\n\\n**คุณ (You):** ขอผัดไทยหนึ่งจานครับ/ค่ะ ไม่เผ็ดได้ไหม?\\n*khǎaw phàt-thai nùeng jaan khráp/khâ, mâi phèt dâai mái?*\\nI'd like one pad thai please. Can it be not spicy?\\n\\n**พนักงาน:** ได้ค่ะ ไม่เผ็ดเลยหรือเผ็ดนิดหน่อย?\\n*dâai khâ, mâi phèt ləəi rǔue phèt nít-nàwy?*\\nSure. Not spicy at all, or a little bit spicy?\\n\\n**คุณ:** ไม่เผ็ดเลยครับ/ค่ะ\\n*mâi phèt ləəi khráp/khâ*\\nNot spicy at all.\\n\\n**พนักงาน:** ค่ะ รับเครื่องดื่มอะไรไหมคะ?\\n*khâ, ráp khrûueang-dùuem à-rai mái khá?*\\nWould you like any drinks?\\n\\n**คุณ:** ขอน้ำเปล่าแก้วหนึ่งครับ/ค่ะ\\n*khǎaw náam-bplào gâew nùeng khráp/khâ*\\nOne glass of water, please.\\n\\n*[After eating]*\\n\\n**คุณ:** เก็บเงินด้วยครับ/ค่ะ\\n*gèp ngəən dûuay khráp/khâ*\\nCheck please.\\n\\n**พนักงาน:** ค่ะ ทั้งหมด 80 บาทค่ะ\\n*khâ, tháng-mòt bpàet-sìp bàat khâ*\\nThat's 80 baht total.\\n\\n:::\\n\\n## Key Phrases\\n\\n| Thai | Romanization | Meaning |\\n|------|--------------|---------|\\n| ขอ...หนึ่งจาน | khǎaw...nùeng jaan | I'd like one plate of... |\\n| สั่งอะไรดี? | sàng à-rai dii? | What would you like to order? |\\n| ไม่เผ็ด | mâi phèt | not spicy |\\n| เผ็ดนิดหน่อย | phèt nít-nàwy | a little spicy |\\n| เผ็ดมาก | phèt mâak | very spicy |\\n| เก็บเงินด้วย | gèp ngəən dûuay | Check please |\\n| ทั้งหมด | tháng-mòt | total/altogether |\\n\\n## Spice Levels\\n\\n| Thai | Level |\\n|------|-------|\\n| ไม่เผ็ดเลย | Not spicy at all |\\n| เผ็ดนิดหน่อย | A little spicy |\\n| เผ็ดปกติ | Normal spicy |\\n| เผ็ดมาก | Very spicy |\\n\\n## Special Requests\\n\\n| Request | Thai |\\n|---------|------|\\n| No MSG | ไม่ใส่ผงชูรส (mâi sài phǒng-chuu-rót) |\\n| No peanuts | ไม่ใส่ถั่ว (mâi sài thùa) |\\n| No meat | ไม่ใส่เนื้อสัตว์ (mâi sài núea-sàt) |\\n| Vegetarian | มังสวิรัติ (mang-sà-wí-rát) or เจ (jay) |\\n\\n## Cultural Note\\n\\nIn Thai restaurants, you don't tip at street food stalls, but 10% is appreciated at nicer restaurants. \\\"เก็บเงิน\\\" (check please) is more common than asking for \\\"บิล\\\" (bill).\\n\\n## What's Next\\n\\nIn Lesson 3, you'll learn dialogues for shopping — bargaining, asking about products, and handling transactions at markets and stores.\\n\""],"names":["lesson02"],"mappings":"AAAA,MAAAA,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"lesson-02-CsejVbCo.js","sources":["../src/syllabi/essentials/lessons/lesson-02.mdx?raw"],"sourcesContent":["export default \"---\\ntype: lesson\\nid: thai-essentials-lesson-02\\ntitle: \\\"บทที่ 2 — คำลงท้าย\\\"\\ndescription: \\\"Polite Particles: ครับ, ค่ะ, and showing respect\\\"\\norder: 2\\nparentId: thai-essentials\\ndifficulty: beginner\\ncefrLevel: A1\\ncategories:\\n - particles\\n - politeness\\n - grammar\\nmetadata:\\n estimatedTime: 25\\n prerequisites:\\n - thai-essentials-lesson-01\\n objectives:\\n - \\\"Use ครับ and ค่ะ/คะ correctly\\\"\\n - \\\"Understand other common particles\\\"\\n - \\\"Know when particles are optional\\\"\\n - \\\"Sound polite in any situation\\\"\\n---\\n\\n# บทที่ 2 (Lesson 2) — Polite Particles\\n\\n## Introduction\\n\\nIn Thai, how you end a sentence is as important as what you say. Polite particles (คำลงท้าย) show respect, indicate your gender, and mark whether you're asking or stating. Missing them makes you sound rude or abrupt.\\n\\n## The Core System\\n\\n| Speaker | Statement | Question |\\n|---------|-----------|----------|\\n| Male | ครับ (khráp) | ครับ (khráp) |\\n| Female | ค่ะ (khâ) | คะ (khá) |\\n\\n**Key insight**: Men use ครับ for everything. Women change tone: falling (ค่ะ) for statements, rising (คะ) for questions.\\n\\n## Examples in Action\\n\\n**Male speaker:**\\n- ขอบคุณครับ (Thank you)\\n- ใช่ครับ (Yes)\\n- ไม่ใช่ครับ (No, it isn't)\\n- อะไรครับ (What?)\\n\\n**Female speaker:**\\n- ขอบคุณค่ะ (Thank you)\\n- ใช่ค่ะ (Yes)\\n- ไม่ใช่ค่ะ (No, it isn't)\\n- อะไรคะ (What?)\\n\\n## When to Use Particles\\n\\n**Always use particles with:**\\n- Strangers and acquaintances\\n- Elders and superiors\\n- Service situations (shops, restaurants)\\n- Formal settings\\n- When in doubt\\n\\n**Particles optional with:**\\n- Close friends\\n- Family members\\n- Children\\n- Very casual situations\\n\\n## Other Important Particles\\n\\n:::vocabulary-set{id=\\\"thai-particles\\\" title=\\\"Common Particles\\\"}\\n\\n::vocab-item{id=\\\"na\\\" word=\\\"นะ\\\" pronunciation=\\\"ná\\\" meaning=\\\"softener, seeking agreement\\\"}\\n\\n::vocab-item{id=\\\"si\\\" word=\\\"สิ\\\" pronunciation=\\\"sì\\\" meaning=\\\"urging, encouragement\\\"}\\n\\n::vocab-item{id=\\\"la\\\" word=\\\"ล่ะ\\\" pronunciation=\\\"là\\\" meaning=\\\"emphasis, 'then/so'\\\"}\\n\\n::vocab-item{id=\\\"loei\\\" word=\\\"เลย\\\" pronunciation=\\\"ləəi\\\" meaning=\\\"emphasis, 'at all/really'\\\"}\\n\\n::vocab-item{id=\\\"roh\\\" word=\\\"หรอ\\\" pronunciation=\\\"rɔ̌ɔ\\\" meaning=\\\"really? (surprise)\\\"}\\n\\n:::\\n\\n## Using นะ (ná)\\n\\nThe particle นะ softens statements and seeks agreement:\\n\\n| Without นะ | With นะ | Effect |\\n|------------|---------|--------|\\n| ไปเลย (Go!) | ไปเลยนะ | Go, okay? (softer) |\\n| อร่อย (Delicious) | อร่อยนะ | It's good, right? |\\n| ขอบคุณ (Thanks) | ขอบคุณนะ | Thanks! (warmer) |\\n\\n## Using สิ (sì)\\n\\nThe particle สิ encourages or urges:\\n\\n| Thai | Meaning |\\n|------|---------|\\n| กินสิ | Go ahead and eat! |\\n| มาสิ | Come on! |\\n| ลองดูสิ | Give it a try! |\\n\\n## Combining Particles\\n\\nParticles can combine. Order: content particle + polite particle\\n\\n| Thai | Meaning |\\n|------|---------|\\n| ใช่นะครับ | Yes, right? (male) |\\n| อร่อยนะคะ | It's delicious, isn't it? (female) |\\n| ไปเลยนะค่ะ | Go ahead then, okay? (female) |\\n\\n## Common Mistakes\\n\\n❌ **Forgetting particles with strangers**\\n- ขอบคุณ (too abrupt) → ✓ ขอบคุณครับ/ค่ะ\\n\\n❌ **Wrong tone for questions (women)**\\n- อะไรค่ะ (wrong) → ✓ อะไรคะ (rising tone)\\n\\n❌ **Using ครับ as a woman**\\n- This sounds masculine; always use ค่ะ/คะ\\n\\n## Key Points\\n\\n1. **Always end politely**: ครับ for men, ค่ะ/คะ for women\\n2. **Question vs statement**: Women change tone\\n3. **นะ softens**: Makes requests and statements gentler\\n4. **When in doubt, use them**: Better to be too polite\\n\\n## Practice Exercises\\n\\n:::exercise{id=\\\"particles-1-practice\\\" type=\\\"fill-in-blank\\\" title=\\\"Particle Practice\\\"}\\n\\n**Question:** Add the correct particle:\\n\\n1. ขอบคุณ___ (male thanking someone)\\n2. อะไร___ (female asking \\\"what?\\\")\\n3. ใช่___ (female confirming)\\n4. ไม่เป็นไร___ (male saying \\\"no problem\\\")\\n\\n**Answer:**\\n\\n1. ขอบคุณ**ครับ** (male statement)\\n2. อะไร**คะ** (female question - rising tone)\\n3. ใช่**ค่ะ** (female statement - falling tone)\\n4. ไม่เป็นไร**ครับ** (male statement)\\n\\n**Explanation:** Men always use ครับ. Women use ค่ะ (falling) for statements and คะ (rising) for questions. This is essential for sounding polite in Thai.\\n\\n:::\\n\\n:::exercise{id=\\\"particles-1-combining\\\" type=\\\"matching\\\" title=\\\"Combining Particles\\\"}\\n\\n**Question:** Match each phrase to its correct particle combination\\n\\n- ใช่นะ (yes, right?)\\n- อร่อยนะ (it's delicious, isn't it?)\\n- ไปเลยนะ (go ahead, okay?)\\n\\n**Answer:**\\n\\n- ใช่นะ**ครับ** (male, seeking agreement)\\n- อร่อยนะ**คะ** (female, question form)\\n- ไปเลยนะ**ค่ะ** (female, statement form)\\n\\n**Explanation:** Particles can combine. The order is: content particle (นะ) + polite particle (ครับ/ค่ะ/คะ). นะ softens and seeks agreement, then add the gender-appropriate polite particle.\\n\\n:::\\n\\n:::exercise{id=\\\"particles-1-common-mistakes\\\" type=\\\"multiple-choice\\\" title=\\\"Common Mistakes\\\"}\\n\\n**Question:** What's wrong with this sentence: \\\"ขอบคุณค่ะ\\\" (spoken by a male)?\\n\\n**Options:**\\n- Nothing, it's correct\\n- Should be ขอบคุณครับ\\n- Should be ขอบคุณคะ\\n- Particles are optional\\n\\n**Answer:** 2\\n\\n**Explanation:** Men must use ครับ, not ค่ะ. Using ค่ะ as a man sounds feminine. Women use ค่ะ/คะ depending on whether it's a statement or question.\\n\\n:::\\n\\n## What's Next\\n\\nIn Lesson 3, you'll learn how to ask basic questions — who, what, where, when, why, how.\\n\""],"names":["lesson02"],"mappings":"AAAA,MAAAA,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}