@polyglot-bundles/th 0.1.1

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 (276) hide show
  1. package/dist/index-4uNMctdq.js +82 -0
  2. package/dist/index-4uNMctdq.js.map +1 -0
  3. package/dist/index-BM-LWlCm.js +52 -0
  4. package/dist/index-BM-LWlCm.js.map +1 -0
  5. package/dist/index-Bjym0crS.js +48 -0
  6. package/dist/index-Bjym0crS.js.map +1 -0
  7. package/dist/index-BuKXw7-Z.js +46 -0
  8. package/dist/index-BuKXw7-Z.js.map +1 -0
  9. package/dist/index-ByS0o5dz.js +52 -0
  10. package/dist/index-ByS0o5dz.js.map +1 -0
  11. package/dist/index-C9VnG7dT.js +52 -0
  12. package/dist/index-C9VnG7dT.js.map +1 -0
  13. package/dist/index-CPQkjFjV.js +50 -0
  14. package/dist/index-CPQkjFjV.js.map +1 -0
  15. package/dist/index-CkHd3Fal.js +56 -0
  16. package/dist/index-CkHd3Fal.js.map +1 -0
  17. package/dist/index-DBkPBXe2.js +52 -0
  18. package/dist/index-DBkPBXe2.js.map +1 -0
  19. package/dist/index.d.ts +15 -0
  20. package/dist/index.js +64 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/lesson-01-B0wtSaSl.js +118 -0
  23. package/dist/lesson-01-B0wtSaSl.js.map +1 -0
  24. package/dist/lesson-01-C9vbUlA4.js +138 -0
  25. package/dist/lesson-01-C9vbUlA4.js.map +1 -0
  26. package/dist/lesson-01-CPmBFTe0.js +132 -0
  27. package/dist/lesson-01-CPmBFTe0.js.map +1 -0
  28. package/dist/lesson-01-Cc4Ws8eR.js +158 -0
  29. package/dist/lesson-01-Cc4Ws8eR.js.map +1 -0
  30. package/dist/lesson-01-Cm5k-m-9.js +136 -0
  31. package/dist/lesson-01-Cm5k-m-9.js.map +1 -0
  32. package/dist/lesson-01-DELblCNj.js +97 -0
  33. package/dist/lesson-01-DELblCNj.js.map +1 -0
  34. package/dist/lesson-01-Djl_72e7.js +153 -0
  35. package/dist/lesson-01-Djl_72e7.js.map +1 -0
  36. package/dist/lesson-01-LEHTeGQQ.js +155 -0
  37. package/dist/lesson-01-LEHTeGQQ.js.map +1 -0
  38. package/dist/lesson-01-ih_-OO_O.js +111 -0
  39. package/dist/lesson-01-ih_-OO_O.js.map +1 -0
  40. package/dist/lesson-02-B2aZrKUQ.js +120 -0
  41. package/dist/lesson-02-B2aZrKUQ.js.map +1 -0
  42. package/dist/lesson-02-BI1Vnwiz.js +169 -0
  43. package/dist/lesson-02-BI1Vnwiz.js.map +1 -0
  44. package/dist/lesson-02-BXbwEMaL.js +180 -0
  45. package/dist/lesson-02-BXbwEMaL.js.map +1 -0
  46. package/dist/lesson-02-CbJJ5Amt.js +201 -0
  47. package/dist/lesson-02-CbJJ5Amt.js.map +1 -0
  48. package/dist/lesson-02-DGrALAgG.js +203 -0
  49. package/dist/lesson-02-DGrALAgG.js.map +1 -0
  50. package/dist/lesson-02-DcMDDBDL.js +116 -0
  51. package/dist/lesson-02-DcMDDBDL.js.map +1 -0
  52. package/dist/lesson-02-Dk59HZWp.js +222 -0
  53. package/dist/lesson-02-Dk59HZWp.js.map +1 -0
  54. package/dist/lesson-02-L8oNhBej.js +145 -0
  55. package/dist/lesson-02-L8oNhBej.js.map +1 -0
  56. package/dist/lesson-02-VDOme3ES.js +204 -0
  57. package/dist/lesson-02-VDOme3ES.js.map +1 -0
  58. package/dist/lesson-03-9WioSe19.js +196 -0
  59. package/dist/lesson-03-9WioSe19.js.map +1 -0
  60. package/dist/lesson-03-BZutWzMD.js +124 -0
  61. package/dist/lesson-03-BZutWzMD.js.map +1 -0
  62. package/dist/lesson-03-CSIF5xRS.js +181 -0
  63. package/dist/lesson-03-CSIF5xRS.js.map +1 -0
  64. package/dist/lesson-03-CSKig363.js +225 -0
  65. package/dist/lesson-03-CSKig363.js.map +1 -0
  66. package/dist/lesson-03-CoDPKwa1.js +152 -0
  67. package/dist/lesson-03-CoDPKwa1.js.map +1 -0
  68. package/dist/lesson-03-DPJOG2M_.js +138 -0
  69. package/dist/lesson-03-DPJOG2M_.js.map +1 -0
  70. package/dist/lesson-03-DkjCuJ26.js +237 -0
  71. package/dist/lesson-03-DkjCuJ26.js.map +1 -0
  72. package/dist/lesson-03-DucbRMOQ.js +171 -0
  73. package/dist/lesson-03-DucbRMOQ.js.map +1 -0
  74. package/dist/lesson-03-MIne1PbH.js +185 -0
  75. package/dist/lesson-03-MIne1PbH.js.map +1 -0
  76. package/dist/lesson-04-0Pj_x1DU.js +233 -0
  77. package/dist/lesson-04-0Pj_x1DU.js.map +1 -0
  78. package/dist/lesson-04-B9h0p9kE.js +190 -0
  79. package/dist/lesson-04-B9h0p9kE.js.map +1 -0
  80. package/dist/lesson-04-BLuPI1-X.js +216 -0
  81. package/dist/lesson-04-BLuPI1-X.js.map +1 -0
  82. package/dist/lesson-04-CmDvofL4.js +230 -0
  83. package/dist/lesson-04-CmDvofL4.js.map +1 -0
  84. package/dist/lesson-04-DGKHK4LW.js +178 -0
  85. package/dist/lesson-04-DGKHK4LW.js.map +1 -0
  86. package/dist/lesson-04-DUcHZzsk.js +218 -0
  87. package/dist/lesson-04-DUcHZzsk.js.map +1 -0
  88. package/dist/lesson-04-DnVIXXk-.js +141 -0
  89. package/dist/lesson-04-DnVIXXk-.js.map +1 -0
  90. package/dist/lesson-04-FZnIE7tu.js +187 -0
  91. package/dist/lesson-04-FZnIE7tu.js.map +1 -0
  92. package/dist/lesson-04-ToX3nRz1.js +172 -0
  93. package/dist/lesson-04-ToX3nRz1.js.map +1 -0
  94. package/dist/lesson-05-2aTCGXMh.js +181 -0
  95. package/dist/lesson-05-2aTCGXMh.js.map +1 -0
  96. package/dist/lesson-05-BvitRdE8.js +206 -0
  97. package/dist/lesson-05-BvitRdE8.js.map +1 -0
  98. package/dist/lesson-05-CgXGkcjS.js +143 -0
  99. package/dist/lesson-05-CgXGkcjS.js.map +1 -0
  100. package/dist/lesson-05-ClfrUrvX.js +244 -0
  101. package/dist/lesson-05-ClfrUrvX.js.map +1 -0
  102. package/dist/lesson-05-D2zf9n7k.js +201 -0
  103. package/dist/lesson-05-D2zf9n7k.js.map +1 -0
  104. package/dist/lesson-05-DWquBfdl.js +220 -0
  105. package/dist/lesson-05-DWquBfdl.js.map +1 -0
  106. package/dist/lesson-05-DpIkwhJ8.js +244 -0
  107. package/dist/lesson-05-DpIkwhJ8.js.map +1 -0
  108. package/dist/lesson-05-UYz39ORV.js +189 -0
  109. package/dist/lesson-05-UYz39ORV.js.map +1 -0
  110. package/dist/lesson-05-t6XuANiZ.js +180 -0
  111. package/dist/lesson-05-t6XuANiZ.js.map +1 -0
  112. package/dist/lesson-06-B2y08mKv.js +238 -0
  113. package/dist/lesson-06-B2y08mKv.js.map +1 -0
  114. package/dist/lesson-06-CHqaVQix.js +202 -0
  115. package/dist/lesson-06-CHqaVQix.js.map +1 -0
  116. package/dist/lesson-06-CaCZBX1V.js +273 -0
  117. package/dist/lesson-06-CaCZBX1V.js.map +1 -0
  118. package/dist/lesson-06-ClplsJBT.js +204 -0
  119. package/dist/lesson-06-ClplsJBT.js.map +1 -0
  120. package/dist/lesson-06-CzGnNKo5.js +141 -0
  121. package/dist/lesson-06-CzGnNKo5.js.map +1 -0
  122. package/dist/lesson-06-Dg_bQLNC.js +172 -0
  123. package/dist/lesson-06-Dg_bQLNC.js.map +1 -0
  124. package/dist/lesson-06-OWFMgO0a.js +231 -0
  125. package/dist/lesson-06-OWFMgO0a.js.map +1 -0
  126. package/dist/lesson-06-Q2aRAzws.js +190 -0
  127. package/dist/lesson-06-Q2aRAzws.js.map +1 -0
  128. package/dist/lesson-07-BLDUA_Ff.js +194 -0
  129. package/dist/lesson-07-BLDUA_Ff.js.map +1 -0
  130. package/dist/lesson-07-BpyF1Ssq.js +236 -0
  131. package/dist/lesson-07-BpyF1Ssq.js.map +1 -0
  132. package/dist/lesson-07-C4GrfDTW.js +234 -0
  133. package/dist/lesson-07-C4GrfDTW.js.map +1 -0
  134. package/dist/lesson-07-CVCUt1Jn.js +206 -0
  135. package/dist/lesson-07-CVCUt1Jn.js.map +1 -0
  136. package/dist/lesson-07-DQFXCZsZ.js +197 -0
  137. package/dist/lesson-07-DQFXCZsZ.js.map +1 -0
  138. package/dist/lesson-07-Dcry2Yjo.js +248 -0
  139. package/dist/lesson-07-Dcry2Yjo.js.map +1 -0
  140. package/dist/lesson-07-JS_cqdNr.js +142 -0
  141. package/dist/lesson-07-JS_cqdNr.js.map +1 -0
  142. package/dist/lesson-08-18gscaS0.js +227 -0
  143. package/dist/lesson-08-18gscaS0.js.map +1 -0
  144. package/dist/lesson-08-2kBUq_B2.js +220 -0
  145. package/dist/lesson-08-2kBUq_B2.js.map +1 -0
  146. package/dist/lesson-08-BP5lpiGe.js +287 -0
  147. package/dist/lesson-08-BP5lpiGe.js.map +1 -0
  148. package/dist/lesson-08-BXm9GgdN.js +146 -0
  149. package/dist/lesson-08-BXm9GgdN.js.map +1 -0
  150. package/dist/lesson-08-Bru0PdEK.js +277 -0
  151. package/dist/lesson-08-Bru0PdEK.js.map +1 -0
  152. package/dist/lesson-08-Dd-8cbGW.js +205 -0
  153. package/dist/lesson-08-Dd-8cbGW.js.map +1 -0
  154. package/dist/lesson-09-B1qWE3Yl.js +221 -0
  155. package/dist/lesson-09-B1qWE3Yl.js.map +1 -0
  156. package/dist/lesson-09-B5Vb70xj.js +143 -0
  157. package/dist/lesson-09-B5Vb70xj.js.map +1 -0
  158. package/dist/lesson-10-00qNLc7A.js +233 -0
  159. package/dist/lesson-10-00qNLc7A.js.map +1 -0
  160. package/dist/lesson-10-Dw-Jtm3D.js +156 -0
  161. package/dist/lesson-10-Dw-Jtm3D.js.map +1 -0
  162. package/dist/lesson-11-BM3R_S7I.js +260 -0
  163. package/dist/lesson-11-BM3R_S7I.js.map +1 -0
  164. package/dist/lesson-12-D1Wx7CyK.js +277 -0
  165. package/dist/lesson-12-D1Wx7CyK.js.map +1 -0
  166. package/dist/skills-hcn-pGD0.js +244 -0
  167. package/dist/skills-hcn-pGD0.js.map +1 -0
  168. package/dist/syllabi/alphabet/index.d.ts +7 -0
  169. package/dist/syllabi/alphabet/index.js +9 -0
  170. package/dist/syllabi/alphabet/index.js.map +1 -0
  171. package/dist/syllabi/dialogue/index.d.ts +7 -0
  172. package/dist/syllabi/dialogue/index.js +10 -0
  173. package/dist/syllabi/dialogue/index.js.map +1 -0
  174. package/dist/syllabi/essentials/index.d.ts +7 -0
  175. package/dist/syllabi/essentials/index.js +10 -0
  176. package/dist/syllabi/essentials/index.js.map +1 -0
  177. package/dist/syllabi/food/index.d.ts +7 -0
  178. package/dist/syllabi/food/index.js +10 -0
  179. package/dist/syllabi/food/index.js.map +1 -0
  180. package/dist/syllabi/grammar/index.d.ts +7 -0
  181. package/dist/syllabi/grammar/index.js +10 -0
  182. package/dist/syllabi/grammar/index.js.map +1 -0
  183. package/dist/syllabi/numbers/index.d.ts +7 -0
  184. package/dist/syllabi/numbers/index.js +10 -0
  185. package/dist/syllabi/numbers/index.js.map +1 -0
  186. package/dist/syllabi/reading/index.d.ts +7 -0
  187. package/dist/syllabi/reading/index.js +10 -0
  188. package/dist/syllabi/reading/index.js.map +1 -0
  189. package/dist/syllabi/travel/index.d.ts +7 -0
  190. package/dist/syllabi/travel/index.js +10 -0
  191. package/dist/syllabi/travel/index.js.map +1 -0
  192. package/dist/syllabi/vowels-tones/index.d.ts +7 -0
  193. package/dist/syllabi/vowels-tones/index.js +10 -0
  194. package/dist/syllabi/vowels-tones/index.js.map +1 -0
  195. package/package.json +92 -0
  196. package/src/syllabi/alphabet/lessons/lesson-01.mdx +153 -0
  197. package/src/syllabi/alphabet/lessons/lesson-02.mdx +196 -0
  198. package/src/syllabi/alphabet/lessons/lesson-03.mdx +147 -0
  199. package/src/syllabi/alphabet/lessons/lesson-04.mdx +211 -0
  200. package/src/syllabi/alphabet/lessons/lesson-05.mdx +196 -0
  201. package/src/syllabi/alphabet/lessons/lesson-06.mdx +226 -0
  202. package/src/syllabi/alphabet/lessons/lesson-07.mdx +231 -0
  203. package/src/syllabi/alphabet/lessons/lesson-08.mdx +222 -0
  204. package/src/syllabi/alphabet/lessons/lesson-09.mdx +216 -0
  205. package/src/syllabi/alphabet/lessons/lesson-10.mdx +228 -0
  206. package/src/syllabi/alphabet/lessons/lesson-11.mdx +255 -0
  207. package/src/syllabi/alphabet/lessons/lesson-12.mdx +272 -0
  208. package/src/syllabi/alphabet/meta.mdx +106 -0
  209. package/src/syllabi/dialogue/lessons/lesson-01.mdx +106 -0
  210. package/src/syllabi/dialogue/lessons/lesson-02.mdx +115 -0
  211. package/src/syllabi/dialogue/lessons/lesson-03.mdx +119 -0
  212. package/src/syllabi/dialogue/lessons/lesson-04.mdx +167 -0
  213. package/src/syllabi/dialogue/lessons/lesson-05.mdx +184 -0
  214. package/src/syllabi/dialogue/lessons/lesson-06.mdx +167 -0
  215. package/src/syllabi/dialogue/lessons/lesson-07.mdx +192 -0
  216. package/src/syllabi/dialogue/lessons/lesson-08.mdx +200 -0
  217. package/src/syllabi/dialogue/meta.mdx +58 -0
  218. package/src/syllabi/essentials/lessons/lesson-01.mdx +133 -0
  219. package/src/syllabi/essentials/lessons/lesson-02.mdx +199 -0
  220. package/src/syllabi/essentials/lessons/lesson-03.mdx +220 -0
  221. package/src/syllabi/essentials/lessons/lesson-04.mdx +228 -0
  222. package/src/syllabi/essentials/lessons/lesson-05.mdx +239 -0
  223. package/src/syllabi/essentials/lessons/lesson-06.mdx +268 -0
  224. package/src/syllabi/essentials/meta.mdx +99 -0
  225. package/src/syllabi/food/lessons/lesson-01.mdx +148 -0
  226. package/src/syllabi/food/lessons/lesson-02.mdx +217 -0
  227. package/src/syllabi/food/lessons/lesson-03.mdx +232 -0
  228. package/src/syllabi/food/lessons/lesson-04.mdx +225 -0
  229. package/src/syllabi/food/lessons/lesson-05.mdx +239 -0
  230. package/src/syllabi/food/lessons/lesson-06.mdx +233 -0
  231. package/src/syllabi/food/lessons/lesson-07.mdx +243 -0
  232. package/src/syllabi/food/lessons/lesson-08.mdx +282 -0
  233. package/src/syllabi/food/meta.mdx +102 -0
  234. package/src/syllabi/grammar/lessons/lesson-01.mdx +92 -0
  235. package/src/syllabi/grammar/lessons/lesson-02.mdx +111 -0
  236. package/src/syllabi/grammar/lessons/lesson-03.mdx +176 -0
  237. package/src/syllabi/grammar/lessons/lesson-04.mdx +185 -0
  238. package/src/syllabi/grammar/lessons/lesson-05.mdx +176 -0
  239. package/src/syllabi/grammar/lessons/lesson-06.mdx +197 -0
  240. package/src/syllabi/grammar/lessons/lesson-07.mdx +201 -0
  241. package/src/syllabi/grammar/lessons/lesson-08.mdx +215 -0
  242. package/src/syllabi/grammar/meta.mdx +57 -0
  243. package/src/syllabi/numbers/lessons/lesson-01.mdx +127 -0
  244. package/src/syllabi/numbers/lessons/lesson-02.mdx +198 -0
  245. package/src/syllabi/numbers/lessons/lesson-03.mdx +191 -0
  246. package/src/syllabi/numbers/lessons/lesson-04.mdx +213 -0
  247. package/src/syllabi/numbers/lessons/lesson-05.mdx +215 -0
  248. package/src/syllabi/numbers/meta.mdx +93 -0
  249. package/src/syllabi/reading/lessons/lesson-01.mdx +131 -0
  250. package/src/syllabi/reading/lessons/lesson-02.mdx +140 -0
  251. package/src/syllabi/reading/lessons/lesson-03.mdx +133 -0
  252. package/src/syllabi/reading/lessons/lesson-04.mdx +136 -0
  253. package/src/syllabi/reading/lessons/lesson-05.mdx +138 -0
  254. package/src/syllabi/reading/lessons/lesson-06.mdx +136 -0
  255. package/src/syllabi/reading/lessons/lesson-07.mdx +137 -0
  256. package/src/syllabi/reading/lessons/lesson-08.mdx +141 -0
  257. package/src/syllabi/reading/lessons/lesson-09.mdx +138 -0
  258. package/src/syllabi/reading/lessons/lesson-10.mdx +151 -0
  259. package/src/syllabi/reading/meta.mdx +46 -0
  260. package/src/syllabi/travel/lessons/lesson-01.mdx +150 -0
  261. package/src/syllabi/travel/lessons/lesson-02.mdx +164 -0
  262. package/src/syllabi/travel/lessons/lesson-03.mdx +166 -0
  263. package/src/syllabi/travel/lessons/lesson-04.mdx +173 -0
  264. package/src/syllabi/travel/lessons/lesson-05.mdx +175 -0
  265. package/src/syllabi/travel/lessons/lesson-06.mdx +185 -0
  266. package/src/syllabi/travel/lessons/lesson-07.mdx +189 -0
  267. package/src/syllabi/travel/meta.mdx +58 -0
  268. package/src/syllabi/vowels-tones/lessons/lesson-01.mdx +113 -0
  269. package/src/syllabi/vowels-tones/lessons/lesson-02.mdx +175 -0
  270. package/src/syllabi/vowels-tones/lessons/lesson-03.mdx +180 -0
  271. package/src/syllabi/vowels-tones/lessons/lesson-04.mdx +182 -0
  272. package/src/syllabi/vowels-tones/lessons/lesson-05.mdx +201 -0
  273. package/src/syllabi/vowels-tones/lessons/lesson-06.mdx +199 -0
  274. package/src/syllabi/vowels-tones/lessons/lesson-07.mdx +229 -0
  275. package/src/syllabi/vowels-tones/lessons/lesson-08.mdx +272 -0
  276. package/src/syllabi/vowels-tones/meta.mdx +89 -0
@@ -0,0 +1,7 @@
1
+ import { SyllabusConfig, ContentLoader } from '@syllst/content-shared';
2
+ export declare const config: SyllabusConfig;
3
+ export declare const loader: ContentLoader;
4
+ export declare const loadLesson: (lessonNumber: number) => Promise<import('@syllst/content-shared').LoadedLesson | null>;
5
+ export declare const loadAllLessons: () => Promise<import('@syllst/content-shared').LoadedLesson[]>;
6
+ export declare const getAvailableLessons: () => number[];
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,10 @@
1
+ import "../../skills-hcn-pGD0.js";
2
+ import { c as l, g as e, a as n, b as r, l as d } from "../../index-C9VnG7dT.js";
3
+ export {
4
+ l as config,
5
+ e as getAvailableLessons,
6
+ n as loadAllLessons,
7
+ r as loadLesson,
8
+ d as loader
9
+ };
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -0,0 +1,7 @@
1
+ import { SyllabusConfig, ContentLoader } from '@syllst/content-shared';
2
+ export declare const config: SyllabusConfig;
3
+ export declare const loader: ContentLoader;
4
+ export declare const loadLesson: (lessonNumber: number) => Promise<import('@syllst/content-shared').LoadedLesson | null>;
5
+ export declare const loadAllLessons: () => Promise<import('@syllst/content-shared').LoadedLesson[]>;
6
+ export declare const getAvailableLessons: () => number[];
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,10 @@
1
+ import "../../skills-hcn-pGD0.js";
2
+ import { c as l, g as e, a as n, b as r, l as d } from "../../index-BM-LWlCm.js";
3
+ export {
4
+ l as config,
5
+ e as getAvailableLessons,
6
+ n as loadAllLessons,
7
+ r as loadLesson,
8
+ d as loader
9
+ };
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -0,0 +1,7 @@
1
+ import { SyllabusConfig, ContentLoader } from '@syllst/content-shared';
2
+ export declare const config: SyllabusConfig;
3
+ export declare const loader: ContentLoader;
4
+ export declare const loadLesson: (lessonNumber: number) => Promise<import('@syllst/content-shared').LoadedLesson | null>;
5
+ export declare const loadAllLessons: () => Promise<import('@syllst/content-shared').LoadedLesson[]>;
6
+ export declare const getAvailableLessons: () => number[];
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,10 @@
1
+ import "../../skills-hcn-pGD0.js";
2
+ import { c as l, g as e, a as n, b as r, l as d } from "../../index-BuKXw7-Z.js";
3
+ export {
4
+ l as config,
5
+ e as getAvailableLessons,
6
+ n as loadAllLessons,
7
+ r as loadLesson,
8
+ d as loader
9
+ };
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -0,0 +1,7 @@
1
+ import { SyllabusConfig, ContentLoader } from '@syllst/content-shared';
2
+ export declare const config: SyllabusConfig;
3
+ export declare const loader: ContentLoader;
4
+ export declare const loadLesson: (lessonNumber: number) => Promise<import('@syllst/content-shared').LoadedLesson | null>;
5
+ export declare const loadAllLessons: () => Promise<import('@syllst/content-shared').LoadedLesson[]>;
6
+ export declare const getAvailableLessons: () => number[];
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,10 @@
1
+ import "../../skills-hcn-pGD0.js";
2
+ import { c as l, g as e, a as n, b as r, l as d } from "../../index-CkHd3Fal.js";
3
+ export {
4
+ l as config,
5
+ e as getAvailableLessons,
6
+ n as loadAllLessons,
7
+ r as loadLesson,
8
+ d as loader
9
+ };
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -0,0 +1,7 @@
1
+ import { SyllabusConfig, ContentLoader } from '@syllst/content-shared';
2
+ export declare const config: SyllabusConfig;
3
+ export declare const loader: ContentLoader;
4
+ export declare const loadLesson: (lessonNumber: number) => Promise<import('@syllst/content-shared').LoadedLesson | null>;
5
+ export declare const loadAllLessons: () => Promise<import('@syllst/content-shared').LoadedLesson[]>;
6
+ export declare const getAvailableLessons: () => number[];
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,10 @@
1
+ import "../../skills-hcn-pGD0.js";
2
+ import { c as l, g as e, a as n, b as r, l as d } from "../../index-CPQkjFjV.js";
3
+ export {
4
+ l as config,
5
+ e as getAvailableLessons,
6
+ n as loadAllLessons,
7
+ r as loadLesson,
8
+ d as loader
9
+ };
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -0,0 +1,7 @@
1
+ import { SyllabusConfig, ContentLoader } from '@syllst/content-shared';
2
+ export declare const config: SyllabusConfig;
3
+ export declare const loader: ContentLoader;
4
+ export declare const loadLesson: (lessonNumber: number) => Promise<import('@syllst/content-shared').LoadedLesson | null>;
5
+ export declare const loadAllLessons: () => Promise<import('@syllst/content-shared').LoadedLesson[]>;
6
+ export declare const getAvailableLessons: () => number[];
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,10 @@
1
+ import "../../skills-hcn-pGD0.js";
2
+ import { c as l, g as e, a as n, b as r, l as d } from "../../index-DBkPBXe2.js";
3
+ export {
4
+ l as config,
5
+ e as getAvailableLessons,
6
+ n as loadAllLessons,
7
+ r as loadLesson,
8
+ d as loader
9
+ };
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
package/package.json ADDED
@@ -0,0 +1,92 @@
1
+ {
2
+ "name": "@polyglot-bundles/th",
3
+ "version": "0.1.1",
4
+ "description": "Thai syllabus content - all Thai language syllabi in one package",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ },
13
+ "./alphabet": {
14
+ "types": "./dist/syllabi/alphabet/index.d.ts",
15
+ "import": "./dist/syllabi/alphabet/index.js"
16
+ },
17
+ "./vowels-tones": {
18
+ "types": "./dist/syllabi/vowels-tones/index.d.ts",
19
+ "import": "./dist/syllabi/vowels-tones/index.js"
20
+ },
21
+ "./numbers": {
22
+ "types": "./dist/syllabi/numbers/index.d.ts",
23
+ "import": "./dist/syllabi/numbers/index.js"
24
+ },
25
+ "./essentials": {
26
+ "types": "./dist/syllabi/essentials/index.d.ts",
27
+ "import": "./dist/syllabi/essentials/index.js"
28
+ },
29
+ "./food": {
30
+ "types": "./dist/syllabi/food/index.d.ts",
31
+ "import": "./dist/syllabi/food/index.js"
32
+ },
33
+ "./travel": {
34
+ "types": "./dist/syllabi/travel/index.d.ts",
35
+ "import": "./dist/syllabi/travel/index.js"
36
+ },
37
+ "./dialogue": {
38
+ "types": "./dist/syllabi/dialogue/index.d.ts",
39
+ "import": "./dist/syllabi/dialogue/index.js"
40
+ },
41
+ "./grammar": {
42
+ "types": "./dist/syllabi/grammar/index.d.ts",
43
+ "import": "./dist/syllabi/grammar/index.js"
44
+ },
45
+ "./reading": {
46
+ "types": "./dist/syllabi/reading/index.d.ts",
47
+ "import": "./dist/syllabi/reading/index.js"
48
+ }
49
+ },
50
+ "files": [
51
+ "dist",
52
+ "src/syllabi/**/*.mdx"
53
+ ],
54
+ "dependencies": {
55
+ "@polyglot-bundles/th-lang": "0.1.1"
56
+ },
57
+ "devDependencies": {
58
+ "tsx": "^4.7.0",
59
+ "vite": "^5.4.0",
60
+ "vite-plugin-dts": "^4.0.0",
61
+ "@polyglot-bundles/content-shared": "0.1.1"
62
+ },
63
+ "peerDependencies": {
64
+ "@syllst/core": "^0.6.0",
65
+ "@syllst/processor": "^0.5.6"
66
+ },
67
+ "publishConfig": {
68
+ "access": "public"
69
+ },
70
+ "keywords": [
71
+ "thai",
72
+ "language-learning",
73
+ "syllabi",
74
+ "mdx",
75
+ "alphabet",
76
+ "vocabulary",
77
+ "grammar"
78
+ ],
79
+ "license": "MIT",
80
+ "repository": {
81
+ "type": "git",
82
+ "url": "https://github.com/fustilio/polyglot-bundles",
83
+ "directory": "packages/th/content"
84
+ },
85
+ "scripts": {
86
+ "build": "vite build",
87
+ "clean": "rm -rf dist",
88
+ "lint": "eslint src",
89
+ "test": "vitest run",
90
+ "validate": "tsx scripts/validate-ids.ts"
91
+ }
92
+ }
@@ -0,0 +1,153 @@
1
+ ---
2
+ type: lesson
3
+ id: thai-script-lesson-01
4
+ title: "บทที่ 1 — พยัญชนะกลาง I"
5
+ description: "Middle-Class Consonants Part 1: ก จ ด ต ป บ — The foundation of Thai tones"
6
+ order: 1
7
+ parentId: thai-script-alphabet
8
+ difficulty: beginner
9
+ cefrLevel: A1
10
+ categories:
11
+ - consonants
12
+ - middle-class
13
+ - basic-characters
14
+ metadata:
15
+ estimatedTime: 25
16
+ prerequisites: []
17
+ learningObjectives:
18
+ - id: obj-recognize-mid-1
19
+ description: "Recognize the first 6 middle-class consonants"
20
+ skill: character-recognition
21
+ references: [chicken, plate, child, turtle, fish, leaf]
22
+ - id: obj-class-understanding
23
+ description: "Understand why consonant class matters for tones"
24
+ skill: character-class-identification
25
+ - id: obj-mnemonics-1
26
+ description: "Learn the mnemonic words for each consonant"
27
+ skill: character-name-recall
28
+ references: [chicken, plate, child, turtle, fish, leaf]
29
+ - id: obj-sounds-1
30
+ description: "Practice initial and final sounds"
31
+ skill: character-sound-mapping
32
+ references: [chicken, plate, child, turtle, fish, leaf]
33
+ ---
34
+
35
+ # บทที่ 1 (Lesson 1) — Middle-Class Consonants I
36
+
37
+ ## Introduction
38
+
39
+ Welcome 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.
40
+
41
+ ## Why Middle-Class First?
42
+
43
+ Thai has **5 tones** (mid, low, falling, high, rising), and determining the correct tone requires knowing the consonant's class. Middle-class consonants:
44
+
45
+ - Are the **simplest for tone rules** — they produce all 5 tones directly with tone marks
46
+ - Include the **most common consonants** in everyday Thai
47
+ - Provide the **baseline** for understanding how high and low classes differ
48
+
49
+ Think of middle class as "neutral" — the other classes modify from this baseline.
50
+
51
+ ## Characters
52
+
53
+ :::character-set{id="thai-middle-consonants-1" title="Middle-Class Consonants I"}
54
+
55
+ ::character{id="chicken" canonicalRef="chicken" data:class="middle" char="ก" name="ก ไก่ (gɔɔ gài)" nativeName="ก ไก่" transliteration="g/k" charType="consonant"}
56
+
57
+ ::character{id="plate" canonicalRef="plate" data:class="middle" char="จ" name="จ จาน (jɔɔ jaan)" nativeName="จ จาน" transliteration="j/t" charType="consonant"}
58
+
59
+ ::character{id="child" canonicalRef="child" data:class="middle" char="ด" name="ด เด็ก (dɔɔ dèk)" nativeName="ด เด็ก" transliteration="d/t" charType="consonant"}
60
+
61
+ ::character{id="turtle" canonicalRef="turtle" data:class="middle" char="ต" name="ต เต่า (dtɔɔ dtào)" nativeName="ต เต่า" transliteration="dt/t" charType="consonant"}
62
+
63
+ ::character{id="fish" canonicalRef="fish" data:class="middle" char="ป" name="ป ปลา (bpɔɔ bplaa)" nativeName="ป ปลา" transliteration="bp/p" charType="consonant"}
64
+
65
+ ::character{id="leaf" canonicalRef="leaf" data:class="middle" char="บ" name="บ ใบไม้ (bɔɔ baimáai)" nativeName="บ ใบไม้" transliteration="b/p" charType="consonant"}
66
+
67
+ :::
68
+
69
+ ## Sound Changes: Initial vs Final Position
70
+
71
+ One of Thai's unique features is that consonants often sound **different** at the beginning versus end of a syllable:
72
+
73
+ | Consonant | Initial Sound | Final Sound | Example |
74
+ |-----------|---------------|-------------|---------|
75
+ | ก | **g** (as in "go") | **k** (unreleased) | กา (gaa) vs อัก (àk) |
76
+ | จ | **j** (as in "jam") | **t** (unreleased) | จาน (jaan) vs มืจ (mʉ̀t) |
77
+ | ด | **d** (as in "do") | **t** (unreleased) | ดู (duu) vs วาด (wàat) |
78
+ | ต | **dt** (unaspirated) | **t** (unreleased) | ตา (dtaa) vs รัต (rát) |
79
+ | ป | **bp** (unaspirated) | **p** (unreleased) | ปา (bpaa) vs อับ (àp) |
80
+ | บ | **b** (as in "boy") | **p** (unreleased) | บาน (baan) vs รับ (ráp) |
81
+
82
+ **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.
83
+
84
+ ## The Unaspirated Pair: ต and ป
85
+
86
+ Notice **ต** (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:
87
+ - English "t" and "p" (slightly aspirated)
88
+ - Thai ท and พ (heavily aspirated, low-class)
89
+
90
+ Hold your hand in front of your mouth: you should feel air for English "top" but not for Thai ตา.
91
+
92
+ ## The Mnemonic System
93
+
94
+ Each 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!**
95
+
96
+ ## Key Points
97
+
98
+ 1. **Middle class = tone baseline**: These consonants produce a mid tone in basic syllables
99
+ 2. **Two sounds per consonant**: Initial vs final position changes pronunciation
100
+ 3. **Unaspirated consonants**: ต and ป have no puff of air (unlike English)
101
+ 4. **Mnemonics are names**: Learn them as the consonants' proper names, not just memory aids
102
+
103
+ ## Practice Recognition
104
+
105
+ Look at the shapes:
106
+ - **ก** has a "head" loop on top
107
+ - **จ** looks like a fishing hook
108
+ - **ด** and **ต** are similar — ด has a longer tail
109
+ - **ป** and **บ** are similar — ป is more "closed"
110
+
111
+ Shape similarities within pairs (ด/ต, ป/บ) are intentional — they represent related sounds.
112
+
113
+ ## Quick Quiz
114
+
115
+ :::exercise{id="quiz-01" type="matching" title="Match Consonants to Animals" skill="character-name-recall" tests="chicken,turtle,fish" objectiveId="obj-mnemonics-1"}
116
+
117
+ **Question:** Match each consonant to its mnemonic animal
118
+
119
+ - ก
120
+ - ต
121
+ - ป
122
+
123
+ **Answer:**
124
+
125
+ - chicken (ไก่)
126
+ - turtle (เต่า)
127
+ - fish (ปลา)
128
+
129
+ **Explanation:** Each Thai consonant has a traditional mnemonic word. When Thais spell words, they say the consonant name with its mnemonic.
130
+
131
+ :::
132
+
133
+ :::exercise{id="recognition-01" type="fill-in-blank" title="Sound Recognition" skill="character-sound-mapping" tests="chicken,plate,fish" objectiveId="obj-sounds-1"}
134
+
135
+ **Question:** Which consonant makes each sound?
136
+
137
+ - Initial "g" sound (as in "go")
138
+ - Initial "j" sound (as in "jam")
139
+ - Initial "bp" sound (unaspirated, no puff of air)
140
+
141
+ **Answer:**
142
+
143
+ - ก (gɔɔ gài)
144
+ - จ (jɔɔ jaan)
145
+ - ป (bpɔɔ bplaa)
146
+
147
+ **Explanation:** Middle-class consonants have predictable sounds at the start of syllables.
148
+
149
+ :::
150
+
151
+ ## What's Next
152
+
153
+ In Lesson 2, you'll learn the remaining middle-class consonants (ม ย ร ล อ), which include nasals and approximants with different final-position behaviors.
@@ -0,0 +1,196 @@
1
+ ---
2
+ type: lesson
3
+ id: thai-script-lesson-02
4
+ title: "บทที่ 2 — พยัญชนะกลาง II"
5
+ description: "Middle-Class Consonants Part 2: ม ย ร ล อ — Nasals, liquids, and the silent consonant"
6
+ order: 2
7
+ parentId: thai-script-alphabet
8
+ difficulty: beginner
9
+ cefrLevel: A1
10
+ categories:
11
+ - consonants
12
+ - middle-class
13
+ - nasal
14
+ - approximant
15
+ - basic-characters
16
+ metadata:
17
+ estimatedTime: 25
18
+ prerequisites:
19
+ - thai-script-lesson-01
20
+ learningObjectives:
21
+ - id: obj-complete-mid
22
+ description: "Complete your knowledge of middle-class consonants"
23
+ skill: character-recognition
24
+ references: [horse, ogre, boat, monkey, bowl]
25
+ - id: obj-nasal-approx
26
+ description: "Understand nasals and approximants"
27
+ skill: character-sound-mapping
28
+ - id: obj-silent-consonant
29
+ description: "Learn the special role of อ as a silent consonant"
30
+ skill: character-sound-mapping
31
+ references: [bowl]
32
+ - id: obj-syllable-reading
33
+ description: "Practice reading simple syllables"
34
+ skill: character-sound-mapping
35
+ ---
36
+
37
+ # บทที่ 2 (Lesson 2) — Middle-Class Consonants II
38
+
39
+ ## Introduction
40
+
41
+ In this lesson, you'll complete the middle-class consonants with 5 more characters. These include **nasals** (ม), **liquids** (ร ล), **approximants** (ย ว), and the unique **silent consonant** (อ).
42
+
43
+ ## Why These Are Different
44
+
45
+ The consonants in Lesson 1 were all **stops** — sounds made by completely blocking airflow then releasing. Today's consonants are different:
46
+
47
+ - **Nasals** (ม): Air flows through the nose
48
+ - **Liquids** (ร ล): Air flows around the tongue
49
+ - **Approximants** (ย): Tongue approaches but doesn't touch
50
+
51
+ This affects their behavior in final position — they don't become unreleased stops like the Lesson 1 consonants.
52
+
53
+ ## Characters
54
+
55
+ :::character-set{id="thai-middle-consonants-2" title="Middle-Class Consonants II"}
56
+
57
+ ::character{id="horse" canonicalRef="horse" data:class="low" char="ม" name="ม ม้า (mɔɔ máa)" nativeName="ม ม้า" transliteration="m" charType="consonant"}
58
+
59
+ ::character{id="ogre" canonicalRef="ogre" data:class="low" char="ย" name="ย ยักษ์ (yɔɔ yák)" nativeName="ย ยักษ์" transliteration="y" charType="consonant"}
60
+
61
+ ::character{id="boat" canonicalRef="boat" data:class="low" char="ร" name="ร เรือ (rɔɔ rʉa)" nativeName="ร เรือ" transliteration="r/n" charType="consonant"}
62
+
63
+ ::character{id="monkey" canonicalRef="monkey" data:class="low" char="ล" name="ล ลิง (lɔɔ ling)" nativeName="ล ลิง" transliteration="l/n" charType="consonant"}
64
+
65
+ ::character{id="bowl" canonicalRef="bowl" data:class="middle" char="อ" name="อ อ่าง (ɔɔ àang)" nativeName="อ อ่าง" transliteration="-/vowel" charType="consonant"}
66
+
67
+ :::
68
+
69
+ ## The Special Case: อ (Ɔɔ Àang)
70
+
71
+ **อ** is the most unusual Thai consonant. It has **two completely different roles**:
72
+
73
+ ### As Initial Consonant
74
+ When starting a syllable that begins with a vowel sound, อ serves as a **silent placeholder**:
75
+ - อา (aa) — the อ is silent, you just hear "aa"
76
+ - Without อ, there would be no consonant to "carry" the vowel
77
+
78
+ ### As Vowel Component
79
+ In certain vowel combinations, อ represents the sound /ɔɔ/:
80
+ - เมือง (mʉang) — the อ makes the /ɔ/ sound
81
+
82
+ This dual nature makes อ essential despite being "silent" in many words.
83
+
84
+ ## Sound Changes for Nasals and Liquids
85
+
86
+ Unlike the stop consonants from Lesson 1, these consonants keep their basic sound quality in final position:
87
+
88
+ | Consonant | Initial Sound | Final Sound | Example |
89
+ |-----------|---------------|-------------|---------|
90
+ | ม | **m** | **m** | มา (maa) / ลม (lom) |
91
+ | ย | **y** | **i** (as vowel) | ยา (yaa) / สาย (sǎai) |
92
+ | ร | **r** (rolled) | **n** | รัก (rák) / ตอร์ (dton) |
93
+ | ล | **l** | **n** | ลา (laa) / กล (gon) |
94
+
95
+ **Important**: Both ร and ล become /n/ in final position. This surprises many learners!
96
+
97
+ ## The Thai R Sound
98
+
99
+ Thai **ร** 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.
100
+
101
+ In careful speech:
102
+ - **ร** = alveolar trill or flap (tongue tip vibrates)
103
+ - **ล** = lateral (air flows around tongue sides)
104
+
105
+ ## Middle-Class Complete
106
+
107
+ You've now learned all 9 middle-class consonants! Here's the complete set:
108
+
109
+ | Stop Consonants | Nasals/Liquids |
110
+ |-----------------|----------------|
111
+ | ก จ ด ต ป บ | ม ย ร ล อ |
112
+
113
+ Why 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.
114
+
115
+ ## Tone Behavior of Middle Class
116
+
117
+ With no tone mark, middle-class consonants produce:
118
+ - **Live syllable** (open or nasal ending): **Mid tone**
119
+ - **Dead syllable** (stop ending, short vowel): **Low tone**
120
+
121
+ Examples:
122
+ - กา (gaa) — live, mid tone
123
+ - กับ (gàp) — dead, low tone
124
+
125
+ This will make more sense after you learn vowels and tone marks!
126
+
127
+ ## Key Points
128
+
129
+ 1. **ม** is a nasal — air through nose, same sound initial and final
130
+ 2. **ย** becomes a vowel sound (/i/) in final position
131
+ 3. **ร and ล** both become /n/ at syllable end
132
+ 4. **อ** is the "silent" consonant for vowel-initial words
133
+ 5. **All 9 middle-class** consonants share the same tone rules
134
+
135
+ ## Practice Tip: Shape Recognition
136
+
137
+ - **ม** looks like a "3" with a tail
138
+ - **ย** has a distinctive curving shape
139
+ - **ร and ล** can be confusing — ร has the loop on top, ล doesn't
140
+ - **อ** looks like a circle with a tail
141
+
142
+ ## Practice Exercises
143
+
144
+ :::exercise{id="middle-2-final-sounds" type="matching" title="Final Position Sounds" skill="character-sound-mapping" tests="boat,monkey,ogre,horse" objectiveId="obj-nasal-approx"}
145
+
146
+ **Question:** Match each consonant to its final position sound
147
+
148
+ - ร (boat)
149
+ - ล (monkey)
150
+ - ย (ogre)
151
+ - ม (horse)
152
+
153
+ **Answer:**
154
+
155
+ - ร → /n/ (becomes N in final position)
156
+ - ล → /n/ (becomes N in final position)
157
+ - ย → /i/ (becomes vowel-like sound)
158
+ - ม → /m/ (stays M in final position)
159
+
160
+ **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.
161
+
162
+ :::
163
+
164
+ :::exercise{id="middle-2-special-case" type="multiple-choice" title="The Special อ Consonant" skill="character-sound-mapping" tests="bowl" objectiveId="obj-silent-consonant"}
165
+
166
+ **Question:** What makes อ (bowl) special?
167
+
168
+ **Options:**
169
+ - It's the only vowel
170
+ - It serves as both silent consonant carrier and vowel component
171
+ - It's never used
172
+ - It's always pronounced
173
+
174
+ **Answer:** 2
175
+
176
+ **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.
177
+
178
+ :::
179
+
180
+ :::exercise{id="middle-2-complete-set" type="fill-in-blank" title="Complete Middle-Class Set" skill="character-recognition" objectiveId="obj-complete-mid"}
181
+
182
+ **Question:** How many middle-class consonants are there, and what are they?
183
+
184
+ **Answer:**
185
+
186
+ There are **9 middle-class consonants** total:
187
+ - Stop consonants: ก จ ด ต ป บ
188
+ - Nasals/Liquids: ม ย ร ล อ
189
+
190
+ **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.
191
+
192
+ :::
193
+
194
+ ## What's Next
195
+
196
+ In Lesson 3, you'll start learning **high-class consonants** — these create rising tones and are the "aspirated" (breathy) versions of sounds you already know.