@syllst/th 0.2.3 → 0.3.11
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.
- package/LICENSE +21 -0
- package/dist/index.d.ts +21 -15
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +98 -59
- package/dist/index.js.map +1 -1
- package/dist/index.umd.cjs +106 -0
- package/dist/index.umd.cjs.map +1 -0
- package/dist/syllabi/alphabet/index.d.ts +2 -5
- package/dist/syllabi/alphabet/index.d.ts.map +1 -0
- package/dist/syllabi/dialogue/index.d.ts +2 -5
- package/dist/syllabi/dialogue/index.d.ts.map +1 -0
- package/dist/syllabi/essentials/index.d.ts +2 -5
- package/dist/syllabi/essentials/index.d.ts.map +1 -0
- package/dist/syllabi/food/index.d.ts +2 -5
- package/dist/syllabi/food/index.d.ts.map +1 -0
- package/dist/syllabi/grammar/index.d.ts +2 -5
- package/dist/syllabi/grammar/index.d.ts.map +1 -0
- package/dist/syllabi/numbers/index.d.ts +2 -5
- package/dist/syllabi/numbers/index.d.ts.map +1 -0
- package/dist/syllabi/reading/index.d.ts +2 -5
- package/dist/syllabi/reading/index.d.ts.map +1 -0
- package/dist/syllabi/travel/index.d.ts +2 -5
- package/dist/syllabi/travel/index.d.ts.map +1 -0
- package/dist/syllabi/vowels-tones/index.d.ts +2 -5
- package/dist/syllabi/vowels-tones/index.d.ts.map +1 -0
- package/package.json +7 -5
- package/dist/index-BM-LWlCm.js +0 -52
- package/dist/index-BM-LWlCm.js.map +0 -1
- package/dist/index-Bjym0crS.js +0 -48
- package/dist/index-Bjym0crS.js.map +0 -1
- package/dist/index-BuKXw7-Z.js +0 -46
- package/dist/index-BuKXw7-Z.js.map +0 -1
- package/dist/index-ByS0o5dz.js +0 -52
- package/dist/index-ByS0o5dz.js.map +0 -1
- package/dist/index-C9VnG7dT.js +0 -52
- package/dist/index-C9VnG7dT.js.map +0 -1
- package/dist/index-CPQkjFjV.js +0 -50
- package/dist/index-CPQkjFjV.js.map +0 -1
- package/dist/index-CkHd3Fal.js +0 -56
- package/dist/index-CkHd3Fal.js.map +0 -1
- package/dist/index-DBkPBXe2.js +0 -52
- package/dist/index-DBkPBXe2.js.map +0 -1
- package/dist/index-DdRhLqkM.js +0 -82
- package/dist/index-DdRhLqkM.js.map +0 -1
- package/dist/lesson-01-B0wtSaSl.js +0 -118
- package/dist/lesson-01-B0wtSaSl.js.map +0 -1
- package/dist/lesson-01-C9vbUlA4.js +0 -138
- package/dist/lesson-01-C9vbUlA4.js.map +0 -1
- package/dist/lesson-01-CPmBFTe0.js +0 -132
- package/dist/lesson-01-CPmBFTe0.js.map +0 -1
- package/dist/lesson-01-Cc4Ws8eR.js +0 -158
- package/dist/lesson-01-Cc4Ws8eR.js.map +0 -1
- package/dist/lesson-01-Cm5k-m-9.js +0 -136
- package/dist/lesson-01-Cm5k-m-9.js.map +0 -1
- package/dist/lesson-01-DELblCNj.js +0 -97
- package/dist/lesson-01-DELblCNj.js.map +0 -1
- package/dist/lesson-01-Djl_72e7.js +0 -153
- package/dist/lesson-01-Djl_72e7.js.map +0 -1
- package/dist/lesson-01-LEHTeGQQ.js +0 -155
- package/dist/lesson-01-LEHTeGQQ.js.map +0 -1
- package/dist/lesson-01-ih_-OO_O.js +0 -111
- package/dist/lesson-01-ih_-OO_O.js.map +0 -1
- package/dist/lesson-02-B2aZrKUQ.js +0 -120
- package/dist/lesson-02-B2aZrKUQ.js.map +0 -1
- package/dist/lesson-02-BI1Vnwiz.js +0 -169
- package/dist/lesson-02-BI1Vnwiz.js.map +0 -1
- package/dist/lesson-02-BXbwEMaL.js +0 -180
- package/dist/lesson-02-BXbwEMaL.js.map +0 -1
- package/dist/lesson-02-CbJJ5Amt.js +0 -201
- package/dist/lesson-02-CbJJ5Amt.js.map +0 -1
- package/dist/lesson-02-DGrALAgG.js +0 -203
- package/dist/lesson-02-DGrALAgG.js.map +0 -1
- package/dist/lesson-02-DcMDDBDL.js +0 -116
- package/dist/lesson-02-DcMDDBDL.js.map +0 -1
- package/dist/lesson-02-Dk59HZWp.js +0 -222
- package/dist/lesson-02-Dk59HZWp.js.map +0 -1
- package/dist/lesson-02-L8oNhBej.js +0 -145
- package/dist/lesson-02-L8oNhBej.js.map +0 -1
- package/dist/lesson-02-VDOme3ES.js +0 -204
- package/dist/lesson-02-VDOme3ES.js.map +0 -1
- package/dist/lesson-03-9WioSe19.js +0 -196
- package/dist/lesson-03-9WioSe19.js.map +0 -1
- package/dist/lesson-03-BZutWzMD.js +0 -124
- package/dist/lesson-03-BZutWzMD.js.map +0 -1
- package/dist/lesson-03-Bj5hWZ9t.js +0 -152
- package/dist/lesson-03-Bj5hWZ9t.js.map +0 -1
- package/dist/lesson-03-CSIF5xRS.js +0 -181
- package/dist/lesson-03-CSIF5xRS.js.map +0 -1
- package/dist/lesson-03-CSKig363.js +0 -225
- package/dist/lesson-03-CSKig363.js.map +0 -1
- package/dist/lesson-03-DPJOG2M_.js +0 -138
- package/dist/lesson-03-DPJOG2M_.js.map +0 -1
- package/dist/lesson-03-DkjCuJ26.js +0 -237
- package/dist/lesson-03-DkjCuJ26.js.map +0 -1
- package/dist/lesson-03-DucbRMOQ.js +0 -171
- package/dist/lesson-03-DucbRMOQ.js.map +0 -1
- package/dist/lesson-03-MIne1PbH.js +0 -185
- package/dist/lesson-03-MIne1PbH.js.map +0 -1
- package/dist/lesson-04-0Pj_x1DU.js +0 -233
- package/dist/lesson-04-0Pj_x1DU.js.map +0 -1
- package/dist/lesson-04-B9h0p9kE.js +0 -190
- package/dist/lesson-04-B9h0p9kE.js.map +0 -1
- package/dist/lesson-04-BLuPI1-X.js +0 -216
- package/dist/lesson-04-BLuPI1-X.js.map +0 -1
- package/dist/lesson-04-CmDvofL4.js +0 -230
- package/dist/lesson-04-CmDvofL4.js.map +0 -1
- package/dist/lesson-04-DGKHK4LW.js +0 -178
- package/dist/lesson-04-DGKHK4LW.js.map +0 -1
- package/dist/lesson-04-DUcHZzsk.js +0 -218
- package/dist/lesson-04-DUcHZzsk.js.map +0 -1
- package/dist/lesson-04-DnVIXXk-.js +0 -141
- package/dist/lesson-04-DnVIXXk-.js.map +0 -1
- package/dist/lesson-04-FZnIE7tu.js +0 -187
- package/dist/lesson-04-FZnIE7tu.js.map +0 -1
- package/dist/lesson-04-ToX3nRz1.js +0 -172
- package/dist/lesson-04-ToX3nRz1.js.map +0 -1
- package/dist/lesson-05-2aTCGXMh.js +0 -181
- package/dist/lesson-05-2aTCGXMh.js.map +0 -1
- package/dist/lesson-05-BvitRdE8.js +0 -206
- package/dist/lesson-05-BvitRdE8.js.map +0 -1
- package/dist/lesson-05-CgXGkcjS.js +0 -143
- package/dist/lesson-05-CgXGkcjS.js.map +0 -1
- package/dist/lesson-05-ClfrUrvX.js +0 -244
- package/dist/lesson-05-ClfrUrvX.js.map +0 -1
- package/dist/lesson-05-D2zf9n7k.js +0 -201
- package/dist/lesson-05-D2zf9n7k.js.map +0 -1
- package/dist/lesson-05-DWquBfdl.js +0 -220
- package/dist/lesson-05-DWquBfdl.js.map +0 -1
- package/dist/lesson-05-DpIkwhJ8.js +0 -244
- package/dist/lesson-05-DpIkwhJ8.js.map +0 -1
- package/dist/lesson-05-UYz39ORV.js +0 -189
- package/dist/lesson-05-UYz39ORV.js.map +0 -1
- package/dist/lesson-05-t6XuANiZ.js +0 -180
- package/dist/lesson-05-t6XuANiZ.js.map +0 -1
- package/dist/lesson-06-B2y08mKv.js +0 -238
- package/dist/lesson-06-B2y08mKv.js.map +0 -1
- package/dist/lesson-06-CHqaVQix.js +0 -202
- package/dist/lesson-06-CHqaVQix.js.map +0 -1
- package/dist/lesson-06-CaCZBX1V.js +0 -273
- package/dist/lesson-06-CaCZBX1V.js.map +0 -1
- package/dist/lesson-06-ClplsJBT.js +0 -204
- package/dist/lesson-06-ClplsJBT.js.map +0 -1
- package/dist/lesson-06-CzGnNKo5.js +0 -141
- package/dist/lesson-06-CzGnNKo5.js.map +0 -1
- package/dist/lesson-06-Dg_bQLNC.js +0 -172
- package/dist/lesson-06-Dg_bQLNC.js.map +0 -1
- package/dist/lesson-06-OWFMgO0a.js +0 -231
- package/dist/lesson-06-OWFMgO0a.js.map +0 -1
- package/dist/lesson-06-Q2aRAzws.js +0 -190
- package/dist/lesson-06-Q2aRAzws.js.map +0 -1
- package/dist/lesson-07-BLDUA_Ff.js +0 -194
- package/dist/lesson-07-BLDUA_Ff.js.map +0 -1
- package/dist/lesson-07-BpyF1Ssq.js +0 -236
- package/dist/lesson-07-BpyF1Ssq.js.map +0 -1
- package/dist/lesson-07-C4GrfDTW.js +0 -234
- package/dist/lesson-07-C4GrfDTW.js.map +0 -1
- package/dist/lesson-07-CVCUt1Jn.js +0 -206
- package/dist/lesson-07-CVCUt1Jn.js.map +0 -1
- package/dist/lesson-07-DQFXCZsZ.js +0 -197
- package/dist/lesson-07-DQFXCZsZ.js.map +0 -1
- package/dist/lesson-07-Dcry2Yjo.js +0 -248
- package/dist/lesson-07-Dcry2Yjo.js.map +0 -1
- package/dist/lesson-07-JS_cqdNr.js +0 -142
- package/dist/lesson-07-JS_cqdNr.js.map +0 -1
- package/dist/lesson-08-18gscaS0.js +0 -227
- package/dist/lesson-08-18gscaS0.js.map +0 -1
- package/dist/lesson-08-2kBUq_B2.js +0 -220
- package/dist/lesson-08-2kBUq_B2.js.map +0 -1
- package/dist/lesson-08-BP5lpiGe.js +0 -287
- package/dist/lesson-08-BP5lpiGe.js.map +0 -1
- package/dist/lesson-08-BXm9GgdN.js +0 -146
- package/dist/lesson-08-BXm9GgdN.js.map +0 -1
- package/dist/lesson-08-Bru0PdEK.js +0 -277
- package/dist/lesson-08-Bru0PdEK.js.map +0 -1
- package/dist/lesson-08-Dd-8cbGW.js +0 -205
- package/dist/lesson-08-Dd-8cbGW.js.map +0 -1
- package/dist/lesson-09-B1qWE3Yl.js +0 -221
- package/dist/lesson-09-B1qWE3Yl.js.map +0 -1
- package/dist/lesson-09-B5Vb70xj.js +0 -143
- package/dist/lesson-09-B5Vb70xj.js.map +0 -1
- package/dist/lesson-10-00qNLc7A.js +0 -233
- package/dist/lesson-10-00qNLc7A.js.map +0 -1
- package/dist/lesson-10-Dw-Jtm3D.js +0 -156
- package/dist/lesson-10-Dw-Jtm3D.js.map +0 -1
- package/dist/lesson-11-BM3R_S7I.js +0 -260
- package/dist/lesson-11-BM3R_S7I.js.map +0 -1
- package/dist/lesson-12-D1Wx7CyK.js +0 -277
- package/dist/lesson-12-D1Wx7CyK.js.map +0 -1
- package/dist/skills-hcn-pGD0.js +0 -244
- package/dist/skills-hcn-pGD0.js.map +0 -1
- package/dist/syllabi/alphabet/index.js +0 -9
- package/dist/syllabi/alphabet/index.js.map +0 -1
- package/dist/syllabi/dialogue/index.js +0 -10
- package/dist/syllabi/dialogue/index.js.map +0 -1
- package/dist/syllabi/essentials/index.js +0 -10
- package/dist/syllabi/essentials/index.js.map +0 -1
- package/dist/syllabi/food/index.js +0 -10
- package/dist/syllabi/food/index.js.map +0 -1
- package/dist/syllabi/grammar/index.js +0 -10
- package/dist/syllabi/grammar/index.js.map +0 -1
- package/dist/syllabi/numbers/index.js +0 -10
- package/dist/syllabi/numbers/index.js.map +0 -1
- package/dist/syllabi/reading/index.js +0 -10
- package/dist/syllabi/reading/index.js.map +0 -1
- package/dist/syllabi/travel/index.js +0 -10
- package/dist/syllabi/travel/index.js.map +0 -1
- package/dist/syllabi/vowels-tones/index.js +0 -10
- package/dist/syllabi/vowels-tones/index.js.map +0 -1
package/dist/index-Bjym0crS.js
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { c as n } from "./skills-hcn-pGD0.js";
|
|
2
|
-
const o = {
|
|
3
|
-
id: "th-essentials",
|
|
4
|
-
title: "คำพื้นฐาน (Thai Essentials)",
|
|
5
|
-
description: "Essential phrases and greetings for everyday use",
|
|
6
|
-
language: "th",
|
|
7
|
-
locale: "th-TH",
|
|
8
|
-
lessonCount: 6,
|
|
9
|
-
difficulty: "beginner",
|
|
10
|
-
cefrLevel: "A1",
|
|
11
|
-
icon: "dialogue",
|
|
12
|
-
version: "0.1.0"
|
|
13
|
-
};
|
|
14
|
-
async function t(s) {
|
|
15
|
-
switch (s) {
|
|
16
|
-
case 1:
|
|
17
|
-
return import("./lesson-01-C9vbUlA4.js");
|
|
18
|
-
case 2:
|
|
19
|
-
return import("./lesson-02-VDOme3ES.js");
|
|
20
|
-
case 3:
|
|
21
|
-
return import("./lesson-03-CSKig363.js");
|
|
22
|
-
case 4:
|
|
23
|
-
return import("./lesson-04-0Pj_x1DU.js");
|
|
24
|
-
case 5:
|
|
25
|
-
return import("./lesson-05-ClfrUrvX.js");
|
|
26
|
-
case 6:
|
|
27
|
-
return import("./lesson-06-CaCZBX1V.js");
|
|
28
|
-
default:
|
|
29
|
-
throw new Error(`Lesson ${s} not found`);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
const e = n(o, t), a = e.loadLesson.bind(e), r = e.loadAllLessons.bind(e), i = e.getAvailableLessons.bind(e), c = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
33
|
-
__proto__: null,
|
|
34
|
-
config: o,
|
|
35
|
-
getAvailableLessons: i,
|
|
36
|
-
loadAllLessons: r,
|
|
37
|
-
loadLesson: a,
|
|
38
|
-
loader: e
|
|
39
|
-
}, Symbol.toStringTag, { value: "Module" }));
|
|
40
|
-
export {
|
|
41
|
-
r as a,
|
|
42
|
-
a as b,
|
|
43
|
-
o as c,
|
|
44
|
-
i as g,
|
|
45
|
-
c as i,
|
|
46
|
-
e as l
|
|
47
|
-
};
|
|
48
|
-
//# sourceMappingURL=index-Bjym0crS.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-Bjym0crS.js","sources":["../src/syllabi/essentials/index.ts"],"sourcesContent":["/**\n * Thai Essentials syllabus\n */\n\nimport { createContentLoader, type SyllabusConfig, type ContentLoader } from '@syllst/content-shared';\n\nexport const config: SyllabusConfig = {\n id: 'th-essentials',\n title: 'คำพื้นฐาน (Thai Essentials)',\n description: 'Essential phrases and greetings for everyday use',\n language: 'th',\n locale: 'th-TH',\n lessonCount: 6,\n difficulty: 'beginner',\n cefrLevel: 'A1',\n icon: 'dialogue',\n version: '0.1.0',\n};\n\nasync function loadLessonMDX(lessonNumber: number) {\n switch (lessonNumber) {\n case 1: return import('./lessons/lesson-01.mdx?raw');\n case 2: return import('./lessons/lesson-02.mdx?raw');\n case 3: return import('./lessons/lesson-03.mdx?raw');\n case 4: return import('./lessons/lesson-04.mdx?raw');\n case 5: return import('./lessons/lesson-05.mdx?raw');\n case 6: return import('./lessons/lesson-06.mdx?raw');\n default: throw new Error(`Lesson ${lessonNumber} not found`);\n }\n}\n\nexport const loader: ContentLoader = createContentLoader(config, loadLessonMDX);\nexport const loadLesson = loader.loadLesson.bind(loader);\nexport const loadAllLessons = loader.loadAllLessons.bind(loader);\nexport const getAvailableLessons = loader.getAvailableLessons.bind(loader);\n"],"names":["config","loadLessonMDX","lessonNumber","loader","createContentLoader","loadLesson","loadAllLessons","getAvailableLessons"],"mappings":";AAMO,MAAMA,IAAyB;AAAA,EACpC,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,aAAa;AAAA,EACb,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,SAAS;AACX;AAEA,eAAeC,EAAcC,GAAsB;AACjD,UAAQA,GAAA;AAAA,IACN,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD;AAAS,YAAM,IAAI,MAAM,UAAUA,CAAY,YAAY;AAAA,EAAA;AAE/D;AAEO,MAAMC,IAAwBC,EAAoBJ,GAAQC,CAAa,GACjEI,IAAaF,EAAO,WAAW,KAAKA,CAAM,GAC1CG,IAAiBH,EAAO,eAAe,KAAKA,CAAM,GAClDI,IAAsBJ,EAAO,oBAAoB,KAAKA,CAAM;;;;;;;;"}
|
package/dist/index-BuKXw7-Z.js
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { c as s } from "./skills-hcn-pGD0.js";
|
|
2
|
-
const o = {
|
|
3
|
-
id: "th-numbers",
|
|
4
|
-
title: "ตัวเลขไทย (Thai Numbers)",
|
|
5
|
-
description: "Learn Thai numerals and counting",
|
|
6
|
-
language: "th",
|
|
7
|
-
locale: "th-TH",
|
|
8
|
-
lessonCount: 5,
|
|
9
|
-
difficulty: "beginner",
|
|
10
|
-
cefrLevel: "A1",
|
|
11
|
-
icon: "numbers",
|
|
12
|
-
version: "0.1.0"
|
|
13
|
-
};
|
|
14
|
-
async function t(n) {
|
|
15
|
-
switch (n) {
|
|
16
|
-
case 1:
|
|
17
|
-
return import("./lesson-01-CPmBFTe0.js");
|
|
18
|
-
case 2:
|
|
19
|
-
return import("./lesson-02-DGrALAgG.js");
|
|
20
|
-
case 3:
|
|
21
|
-
return import("./lesson-03-9WioSe19.js");
|
|
22
|
-
case 4:
|
|
23
|
-
return import("./lesson-04-DUcHZzsk.js");
|
|
24
|
-
case 5:
|
|
25
|
-
return import("./lesson-05-DWquBfdl.js");
|
|
26
|
-
default:
|
|
27
|
-
throw new Error(`Lesson ${n} not found`);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
const e = s(o, t), r = e.loadLesson.bind(e), a = e.loadAllLessons.bind(e), i = e.getAvailableLessons.bind(e), c = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
31
|
-
__proto__: null,
|
|
32
|
-
config: o,
|
|
33
|
-
getAvailableLessons: i,
|
|
34
|
-
loadAllLessons: a,
|
|
35
|
-
loadLesson: r,
|
|
36
|
-
loader: e
|
|
37
|
-
}, Symbol.toStringTag, { value: "Module" }));
|
|
38
|
-
export {
|
|
39
|
-
a,
|
|
40
|
-
r as b,
|
|
41
|
-
o as c,
|
|
42
|
-
i as g,
|
|
43
|
-
c as i,
|
|
44
|
-
e as l
|
|
45
|
-
};
|
|
46
|
-
//# sourceMappingURL=index-BuKXw7-Z.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-BuKXw7-Z.js","sources":["../src/syllabi/numbers/index.ts"],"sourcesContent":["/**\n * Thai Numbers syllabus\n */\n\nimport { createContentLoader, type SyllabusConfig, type ContentLoader } from '@syllst/content-shared';\n\nexport const config: SyllabusConfig = {\n id: 'th-numbers',\n title: 'ตัวเลขไทย (Thai Numbers)',\n description: 'Learn Thai numerals and counting',\n language: 'th',\n locale: 'th-TH',\n lessonCount: 5,\n difficulty: 'beginner',\n cefrLevel: 'A1',\n icon: 'numbers',\n version: '0.1.0',\n};\n\nasync function loadLessonMDX(lessonNumber: number) {\n switch (lessonNumber) {\n case 1: return import('./lessons/lesson-01.mdx?raw');\n case 2: return import('./lessons/lesson-02.mdx?raw');\n case 3: return import('./lessons/lesson-03.mdx?raw');\n case 4: return import('./lessons/lesson-04.mdx?raw');\n case 5: return import('./lessons/lesson-05.mdx?raw');\n default: throw new Error(`Lesson ${lessonNumber} not found`);\n }\n}\n\nexport const loader: ContentLoader = createContentLoader(config, loadLessonMDX);\nexport const loadLesson = loader.loadLesson.bind(loader);\nexport const loadAllLessons = loader.loadAllLessons.bind(loader);\nexport const getAvailableLessons = loader.getAvailableLessons.bind(loader);\n"],"names":["config","loadLessonMDX","lessonNumber","loader","createContentLoader","loadLesson","loadAllLessons","getAvailableLessons"],"mappings":";AAMO,MAAMA,IAAyB;AAAA,EACpC,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,aAAa;AAAA,EACb,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,SAAS;AACX;AAEA,eAAeC,EAAcC,GAAsB;AACjD,UAAQA,GAAA;AAAA,IACN,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD;AAAS,YAAM,IAAI,MAAM,UAAUA,CAAY,YAAY;AAAA,EAAA;AAE/D;AAEO,MAAMC,IAAwBC,EAAoBJ,GAAQC,CAAa,GACjEI,IAAaF,EAAO,WAAW,KAAKA,CAAM,GAC1CG,IAAiBH,EAAO,eAAe,KAAKA,CAAM,GAClDI,IAAsBJ,EAAO,oBAAoB,KAAKA,CAAM;;;;;;;;"}
|
package/dist/index-ByS0o5dz.js
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { c as s } from "./skills-hcn-pGD0.js";
|
|
2
|
-
const t = {
|
|
3
|
-
id: "th-dialogue",
|
|
4
|
-
title: "บทสนทนา (Thai Dialogue)",
|
|
5
|
-
description: "Practical conversations for everyday situations",
|
|
6
|
-
language: "th",
|
|
7
|
-
locale: "th-TH",
|
|
8
|
-
lessonCount: 8,
|
|
9
|
-
difficulty: "intermediate",
|
|
10
|
-
cefrLevel: "A2",
|
|
11
|
-
icon: "dialogue",
|
|
12
|
-
version: "0.1.0"
|
|
13
|
-
};
|
|
14
|
-
async function n(o) {
|
|
15
|
-
switch (o) {
|
|
16
|
-
case 1:
|
|
17
|
-
return import("./lesson-01-ih_-OO_O.js");
|
|
18
|
-
case 2:
|
|
19
|
-
return import("./lesson-02-B2aZrKUQ.js");
|
|
20
|
-
case 3:
|
|
21
|
-
return import("./lesson-03-BZutWzMD.js");
|
|
22
|
-
case 4:
|
|
23
|
-
return import("./lesson-04-ToX3nRz1.js");
|
|
24
|
-
case 5:
|
|
25
|
-
return import("./lesson-05-UYz39ORV.js");
|
|
26
|
-
case 6:
|
|
27
|
-
return import("./lesson-06-Dg_bQLNC.js");
|
|
28
|
-
case 7:
|
|
29
|
-
return import("./lesson-07-DQFXCZsZ.js");
|
|
30
|
-
case 8:
|
|
31
|
-
return import("./lesson-08-Dd-8cbGW.js");
|
|
32
|
-
default:
|
|
33
|
-
throw new Error(`Lesson ${o} not found`);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
const e = s(t, n), r = e.loadLesson.bind(e), a = e.loadAllLessons.bind(e), i = e.getAvailableLessons.bind(e), l = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
37
|
-
__proto__: null,
|
|
38
|
-
config: t,
|
|
39
|
-
getAvailableLessons: i,
|
|
40
|
-
loadAllLessons: a,
|
|
41
|
-
loadLesson: r,
|
|
42
|
-
loader: e
|
|
43
|
-
}, Symbol.toStringTag, { value: "Module" }));
|
|
44
|
-
export {
|
|
45
|
-
a,
|
|
46
|
-
r as b,
|
|
47
|
-
t as c,
|
|
48
|
-
i as g,
|
|
49
|
-
l as i,
|
|
50
|
-
e as l
|
|
51
|
-
};
|
|
52
|
-
//# sourceMappingURL=index-ByS0o5dz.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-ByS0o5dz.js","sources":["../src/syllabi/dialogue/index.ts"],"sourcesContent":["/**\n * Thai Dialogue syllabus\n */\n\nimport { createContentLoader, type SyllabusConfig, type ContentLoader } from '@syllst/content-shared';\n\nexport const config: SyllabusConfig = {\n id: 'th-dialogue',\n title: 'บทสนทนา (Thai Dialogue)',\n description: 'Practical conversations for everyday situations',\n language: 'th',\n locale: 'th-TH',\n lessonCount: 8,\n difficulty: 'intermediate',\n cefrLevel: 'A2',\n icon: 'dialogue',\n version: '0.1.0',\n};\n\nasync function loadLessonMDX(lessonNumber: number) {\n switch (lessonNumber) {\n case 1: return import('./lessons/lesson-01.mdx?raw');\n case 2: return import('./lessons/lesson-02.mdx?raw');\n case 3: return import('./lessons/lesson-03.mdx?raw');\n case 4: return import('./lessons/lesson-04.mdx?raw');\n case 5: return import('./lessons/lesson-05.mdx?raw');\n case 6: return import('./lessons/lesson-06.mdx?raw');\n case 7: return import('./lessons/lesson-07.mdx?raw');\n case 8: return import('./lessons/lesson-08.mdx?raw');\n default: throw new Error(`Lesson ${lessonNumber} not found`);\n }\n}\n\nexport const loader: ContentLoader = createContentLoader(config, loadLessonMDX);\nexport const loadLesson = loader.loadLesson.bind(loader);\nexport const loadAllLessons = loader.loadAllLessons.bind(loader);\nexport const getAvailableLessons = loader.getAvailableLessons.bind(loader);\n"],"names":["config","loadLessonMDX","lessonNumber","loader","createContentLoader","loadLesson","loadAllLessons","getAvailableLessons"],"mappings":";AAMO,MAAMA,IAAyB;AAAA,EACpC,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,aAAa;AAAA,EACb,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,SAAS;AACX;AAEA,eAAeC,EAAcC,GAAsB;AACjD,UAAQA,GAAA;AAAA,IACN,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD;AAAS,YAAM,IAAI,MAAM,UAAUA,CAAY,YAAY;AAAA,EAAA;AAE/D;AAEO,MAAMC,IAAwBC,EAAoBJ,GAAQC,CAAa,GACjEI,IAAaF,EAAO,WAAW,KAAKA,CAAM,GAC1CG,IAAiBH,EAAO,eAAe,KAAKA,CAAM,GAClDI,IAAsBJ,EAAO,oBAAoB,KAAKA,CAAM;;;;;;;;"}
|
package/dist/index-C9VnG7dT.js
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { c as n } from "./skills-hcn-pGD0.js";
|
|
2
|
-
const t = {
|
|
3
|
-
id: "th-food",
|
|
4
|
-
title: "อาหารไทย (Thai Food)",
|
|
5
|
-
description: "Food vocabulary and ordering at restaurants",
|
|
6
|
-
language: "th",
|
|
7
|
-
locale: "th-TH",
|
|
8
|
-
lessonCount: 8,
|
|
9
|
-
difficulty: "beginner",
|
|
10
|
-
cefrLevel: "A2",
|
|
11
|
-
icon: "food",
|
|
12
|
-
version: "0.1.0"
|
|
13
|
-
};
|
|
14
|
-
async function r(e) {
|
|
15
|
-
switch (e) {
|
|
16
|
-
case 1:
|
|
17
|
-
return import("./lesson-01-Djl_72e7.js");
|
|
18
|
-
case 2:
|
|
19
|
-
return import("./lesson-02-Dk59HZWp.js");
|
|
20
|
-
case 3:
|
|
21
|
-
return import("./lesson-03-DkjCuJ26.js");
|
|
22
|
-
case 4:
|
|
23
|
-
return import("./lesson-04-CmDvofL4.js");
|
|
24
|
-
case 5:
|
|
25
|
-
return import("./lesson-05-DpIkwhJ8.js");
|
|
26
|
-
case 6:
|
|
27
|
-
return import("./lesson-06-B2y08mKv.js");
|
|
28
|
-
case 7:
|
|
29
|
-
return import("./lesson-07-Dcry2Yjo.js");
|
|
30
|
-
case 8:
|
|
31
|
-
return import("./lesson-08-BP5lpiGe.js");
|
|
32
|
-
default:
|
|
33
|
-
throw new Error(`Lesson ${e} not found`);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
const o = n(t, r), s = o.loadLesson.bind(o), a = o.loadAllLessons.bind(o), i = o.getAvailableLessons.bind(o), l = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
37
|
-
__proto__: null,
|
|
38
|
-
config: t,
|
|
39
|
-
getAvailableLessons: i,
|
|
40
|
-
loadAllLessons: a,
|
|
41
|
-
loadLesson: s,
|
|
42
|
-
loader: o
|
|
43
|
-
}, Symbol.toStringTag, { value: "Module" }));
|
|
44
|
-
export {
|
|
45
|
-
a,
|
|
46
|
-
s as b,
|
|
47
|
-
t as c,
|
|
48
|
-
i as g,
|
|
49
|
-
l as i,
|
|
50
|
-
o as l
|
|
51
|
-
};
|
|
52
|
-
//# sourceMappingURL=index-C9VnG7dT.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-C9VnG7dT.js","sources":["../src/syllabi/food/index.ts"],"sourcesContent":["/**\n * Thai Food syllabus\n */\n\nimport { createContentLoader, type SyllabusConfig, type ContentLoader } from '@syllst/content-shared';\n\nexport const config: SyllabusConfig = {\n id: 'th-food',\n title: 'อาหารไทย (Thai Food)',\n description: 'Food vocabulary and ordering at restaurants',\n language: 'th',\n locale: 'th-TH',\n lessonCount: 8,\n difficulty: 'beginner',\n cefrLevel: 'A2',\n icon: 'food',\n version: '0.1.0',\n};\n\nasync function loadLessonMDX(lessonNumber: number) {\n switch (lessonNumber) {\n case 1: return import('./lessons/lesson-01.mdx?raw');\n case 2: return import('./lessons/lesson-02.mdx?raw');\n case 3: return import('./lessons/lesson-03.mdx?raw');\n case 4: return import('./lessons/lesson-04.mdx?raw');\n case 5: return import('./lessons/lesson-05.mdx?raw');\n case 6: return import('./lessons/lesson-06.mdx?raw');\n case 7: return import('./lessons/lesson-07.mdx?raw');\n case 8: return import('./lessons/lesson-08.mdx?raw');\n default: throw new Error(`Lesson ${lessonNumber} not found`);\n }\n}\n\nexport const loader: ContentLoader = createContentLoader(config, loadLessonMDX);\nexport const loadLesson = loader.loadLesson.bind(loader);\nexport const loadAllLessons = loader.loadAllLessons.bind(loader);\nexport const getAvailableLessons = loader.getAvailableLessons.bind(loader);\n"],"names":["config","loadLessonMDX","lessonNumber","loader","createContentLoader","loadLesson","loadAllLessons","getAvailableLessons"],"mappings":";AAMO,MAAMA,IAAyB;AAAA,EACpC,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,aAAa;AAAA,EACb,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,SAAS;AACX;AAEA,eAAeC,EAAcC,GAAsB;AACjD,UAAQA,GAAA;AAAA,IACN,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD;AAAS,YAAM,IAAI,MAAM,UAAUA,CAAY,YAAY;AAAA,EAAA;AAE/D;AAEO,MAAMC,IAAwBC,EAAoBJ,GAAQC,CAAa,GACjEI,IAAaF,EAAO,WAAW,KAAKA,CAAM,GAC1CG,IAAiBH,EAAO,eAAe,KAAKA,CAAM,GAClDI,IAAsBJ,EAAO,oBAAoB,KAAKA,CAAM;;;;;;;;"}
|
package/dist/index-CPQkjFjV.js
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { c as n } from "./skills-hcn-pGD0.js";
|
|
2
|
-
const t = {
|
|
3
|
-
id: "th-travel",
|
|
4
|
-
title: "การเดินทาง (Thai Travel)",
|
|
5
|
-
description: "Travel vocabulary and directions",
|
|
6
|
-
language: "th",
|
|
7
|
-
locale: "th-TH",
|
|
8
|
-
lessonCount: 7,
|
|
9
|
-
difficulty: "beginner",
|
|
10
|
-
cefrLevel: "A2",
|
|
11
|
-
icon: "travel",
|
|
12
|
-
version: "0.1.0"
|
|
13
|
-
};
|
|
14
|
-
async function r(o) {
|
|
15
|
-
switch (o) {
|
|
16
|
-
case 1:
|
|
17
|
-
return import("./lesson-01-LEHTeGQQ.js");
|
|
18
|
-
case 2:
|
|
19
|
-
return import("./lesson-02-BI1Vnwiz.js");
|
|
20
|
-
case 3:
|
|
21
|
-
return import("./lesson-03-DucbRMOQ.js");
|
|
22
|
-
case 4:
|
|
23
|
-
return import("./lesson-04-DGKHK4LW.js");
|
|
24
|
-
case 5:
|
|
25
|
-
return import("./lesson-05-t6XuANiZ.js");
|
|
26
|
-
case 6:
|
|
27
|
-
return import("./lesson-06-Q2aRAzws.js");
|
|
28
|
-
case 7:
|
|
29
|
-
return import("./lesson-07-BLDUA_Ff.js");
|
|
30
|
-
default:
|
|
31
|
-
throw new Error(`Lesson ${o} not found`);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
const e = n(t, r), s = e.loadLesson.bind(e), a = e.loadAllLessons.bind(e), i = e.getAvailableLessons.bind(e), c = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
35
|
-
__proto__: null,
|
|
36
|
-
config: t,
|
|
37
|
-
getAvailableLessons: i,
|
|
38
|
-
loadAllLessons: a,
|
|
39
|
-
loadLesson: s,
|
|
40
|
-
loader: e
|
|
41
|
-
}, Symbol.toStringTag, { value: "Module" }));
|
|
42
|
-
export {
|
|
43
|
-
a,
|
|
44
|
-
s as b,
|
|
45
|
-
t as c,
|
|
46
|
-
i as g,
|
|
47
|
-
c as i,
|
|
48
|
-
e as l
|
|
49
|
-
};
|
|
50
|
-
//# sourceMappingURL=index-CPQkjFjV.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-CPQkjFjV.js","sources":["../src/syllabi/travel/index.ts"],"sourcesContent":["/**\n * Thai Travel syllabus\n */\n\nimport { createContentLoader, type SyllabusConfig, type ContentLoader } from '@syllst/content-shared';\n\nexport const config: SyllabusConfig = {\n id: 'th-travel',\n title: 'การเดินทาง (Thai Travel)',\n description: 'Travel vocabulary and directions',\n language: 'th',\n locale: 'th-TH',\n lessonCount: 7,\n difficulty: 'beginner',\n cefrLevel: 'A2',\n icon: 'travel',\n version: '0.1.0',\n};\n\nasync function loadLessonMDX(lessonNumber: number) {\n switch (lessonNumber) {\n case 1: return import('./lessons/lesson-01.mdx?raw');\n case 2: return import('./lessons/lesson-02.mdx?raw');\n case 3: return import('./lessons/lesson-03.mdx?raw');\n case 4: return import('./lessons/lesson-04.mdx?raw');\n case 5: return import('./lessons/lesson-05.mdx?raw');\n case 6: return import('./lessons/lesson-06.mdx?raw');\n case 7: return import('./lessons/lesson-07.mdx?raw');\n default: throw new Error(`Lesson ${lessonNumber} not found`);\n }\n}\n\nexport const loader: ContentLoader = createContentLoader(config, loadLessonMDX);\nexport const loadLesson = loader.loadLesson.bind(loader);\nexport const loadAllLessons = loader.loadAllLessons.bind(loader);\nexport const getAvailableLessons = loader.getAvailableLessons.bind(loader);\n"],"names":["config","loadLessonMDX","lessonNumber","loader","createContentLoader","loadLesson","loadAllLessons","getAvailableLessons"],"mappings":";AAMO,MAAMA,IAAyB;AAAA,EACpC,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,aAAa;AAAA,EACb,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,SAAS;AACX;AAEA,eAAeC,EAAcC,GAAsB;AACjD,UAAQA,GAAA;AAAA,IACN,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD;AAAS,YAAM,IAAI,MAAM,UAAUA,CAAY,YAAY;AAAA,EAAA;AAE/D;AAEO,MAAMC,IAAwBC,EAAoBJ,GAAQC,CAAa,GACjEI,IAAaF,EAAO,WAAW,KAAKA,CAAM,GAC1CG,IAAiBH,EAAO,eAAe,KAAKA,CAAM,GAClDI,IAAsBJ,EAAO,oBAAoB,KAAKA,CAAM;;;;;;;;"}
|
package/dist/index-CkHd3Fal.js
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { c as r } from "./skills-hcn-pGD0.js";
|
|
2
|
-
const o = {
|
|
3
|
-
id: "th-reading",
|
|
4
|
-
title: "การอ่าน (Thai Reading)",
|
|
5
|
-
description: "Reading practice with Thai texts",
|
|
6
|
-
language: "th",
|
|
7
|
-
locale: "th-TH",
|
|
8
|
-
lessonCount: 10,
|
|
9
|
-
difficulty: "intermediate",
|
|
10
|
-
cefrLevel: "B1",
|
|
11
|
-
icon: "reading",
|
|
12
|
-
version: "0.1.0"
|
|
13
|
-
};
|
|
14
|
-
async function n(t) {
|
|
15
|
-
switch (t) {
|
|
16
|
-
case 1:
|
|
17
|
-
return import("./lesson-01-Cm5k-m-9.js");
|
|
18
|
-
case 2:
|
|
19
|
-
return import("./lesson-02-L8oNhBej.js");
|
|
20
|
-
case 3:
|
|
21
|
-
return import("./lesson-03-DPJOG2M_.js");
|
|
22
|
-
case 4:
|
|
23
|
-
return import("./lesson-04-DnVIXXk-.js");
|
|
24
|
-
case 5:
|
|
25
|
-
return import("./lesson-05-CgXGkcjS.js");
|
|
26
|
-
case 6:
|
|
27
|
-
return import("./lesson-06-CzGnNKo5.js");
|
|
28
|
-
case 7:
|
|
29
|
-
return import("./lesson-07-JS_cqdNr.js");
|
|
30
|
-
case 8:
|
|
31
|
-
return import("./lesson-08-BXm9GgdN.js");
|
|
32
|
-
case 9:
|
|
33
|
-
return import("./lesson-09-B5Vb70xj.js");
|
|
34
|
-
case 10:
|
|
35
|
-
return import("./lesson-10-Dw-Jtm3D.js");
|
|
36
|
-
default:
|
|
37
|
-
throw new Error(`Lesson ${t} not found`);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
const e = r(o, n), s = e.loadLesson.bind(e), a = e.loadAllLessons.bind(e), i = e.getAvailableLessons.bind(e), l = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
41
|
-
__proto__: null,
|
|
42
|
-
config: o,
|
|
43
|
-
getAvailableLessons: i,
|
|
44
|
-
loadAllLessons: a,
|
|
45
|
-
loadLesson: s,
|
|
46
|
-
loader: e
|
|
47
|
-
}, Symbol.toStringTag, { value: "Module" }));
|
|
48
|
-
export {
|
|
49
|
-
a,
|
|
50
|
-
s as b,
|
|
51
|
-
o as c,
|
|
52
|
-
i as g,
|
|
53
|
-
l as i,
|
|
54
|
-
e as l
|
|
55
|
-
};
|
|
56
|
-
//# sourceMappingURL=index-CkHd3Fal.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-CkHd3Fal.js","sources":["../src/syllabi/reading/index.ts"],"sourcesContent":["/**\n * Thai Reading syllabus\n */\n\nimport { createContentLoader, type SyllabusConfig, type ContentLoader } from '@syllst/content-shared';\n\nexport const config: SyllabusConfig = {\n id: 'th-reading',\n title: 'การอ่าน (Thai Reading)',\n description: 'Reading practice with Thai texts',\n language: 'th',\n locale: 'th-TH',\n lessonCount: 10,\n difficulty: 'intermediate',\n cefrLevel: 'B1',\n icon: 'reading',\n version: '0.1.0',\n};\n\nasync function loadLessonMDX(lessonNumber: number) {\n switch (lessonNumber) {\n case 1: return import('./lessons/lesson-01.mdx?raw');\n case 2: return import('./lessons/lesson-02.mdx?raw');\n case 3: return import('./lessons/lesson-03.mdx?raw');\n case 4: return import('./lessons/lesson-04.mdx?raw');\n case 5: return import('./lessons/lesson-05.mdx?raw');\n case 6: return import('./lessons/lesson-06.mdx?raw');\n case 7: return import('./lessons/lesson-07.mdx?raw');\n case 8: return import('./lessons/lesson-08.mdx?raw');\n case 9: return import('./lessons/lesson-09.mdx?raw');\n case 10: return import('./lessons/lesson-10.mdx?raw');\n default: throw new Error(`Lesson ${lessonNumber} not found`);\n }\n}\n\nexport const loader: ContentLoader = createContentLoader(config, loadLessonMDX);\nexport const loadLesson = loader.loadLesson.bind(loader);\nexport const loadAllLessons = loader.loadAllLessons.bind(loader);\nexport const getAvailableLessons = loader.getAvailableLessons.bind(loader);\n"],"names":["config","loadLessonMDX","lessonNumber","loader","createContentLoader","loadLesson","loadAllLessons","getAvailableLessons"],"mappings":";AAMO,MAAMA,IAAyB;AAAA,EACpC,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,aAAa;AAAA,EACb,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,SAAS;AACX;AAEA,eAAeC,EAAcC,GAAsB;AACjD,UAAQA,GAAA;AAAA,IACN,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAI,aAAO,OAAO,yBAA6B;AAAA,IACpD;AAAS,YAAM,IAAI,MAAM,UAAUA,CAAY,YAAY;AAAA,EAAA;AAE/D;AAEO,MAAMC,IAAwBC,EAAoBJ,GAAQC,CAAa,GACjEI,IAAaF,EAAO,WAAW,KAAKA,CAAM,GAC1CG,IAAiBH,EAAO,eAAe,KAAKA,CAAM,GAClDI,IAAsBJ,EAAO,oBAAoB,KAAKA,CAAM;;;;;;;;"}
|
package/dist/index-DBkPBXe2.js
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { c as s } from "./skills-hcn-pGD0.js";
|
|
2
|
-
const t = {
|
|
3
|
-
id: "th-vowels-tones",
|
|
4
|
-
title: "สระและวรรณยุกต์ (Vowels & Tones)",
|
|
5
|
-
description: "Master Thai vowels and the five tones",
|
|
6
|
-
language: "th",
|
|
7
|
-
locale: "th-TH",
|
|
8
|
-
lessonCount: 8,
|
|
9
|
-
difficulty: "beginner",
|
|
10
|
-
cefrLevel: "A1",
|
|
11
|
-
icon: "alphabet",
|
|
12
|
-
version: "0.1.0"
|
|
13
|
-
};
|
|
14
|
-
async function n(o) {
|
|
15
|
-
switch (o) {
|
|
16
|
-
case 1:
|
|
17
|
-
return import("./lesson-01-B0wtSaSl.js");
|
|
18
|
-
case 2:
|
|
19
|
-
return import("./lesson-02-BXbwEMaL.js");
|
|
20
|
-
case 3:
|
|
21
|
-
return import("./lesson-03-MIne1PbH.js");
|
|
22
|
-
case 4:
|
|
23
|
-
return import("./lesson-04-FZnIE7tu.js");
|
|
24
|
-
case 5:
|
|
25
|
-
return import("./lesson-05-BvitRdE8.js");
|
|
26
|
-
case 6:
|
|
27
|
-
return import("./lesson-06-ClplsJBT.js");
|
|
28
|
-
case 7:
|
|
29
|
-
return import("./lesson-07-C4GrfDTW.js");
|
|
30
|
-
case 8:
|
|
31
|
-
return import("./lesson-08-Bru0PdEK.js");
|
|
32
|
-
default:
|
|
33
|
-
throw new Error(`Lesson ${o} not found`);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
const e = s(t, n), r = e.loadLesson.bind(e), a = e.loadAllLessons.bind(e), i = e.getAvailableLessons.bind(e), c = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
37
|
-
__proto__: null,
|
|
38
|
-
config: t,
|
|
39
|
-
getAvailableLessons: i,
|
|
40
|
-
loadAllLessons: a,
|
|
41
|
-
loadLesson: r,
|
|
42
|
-
loader: e
|
|
43
|
-
}, Symbol.toStringTag, { value: "Module" }));
|
|
44
|
-
export {
|
|
45
|
-
a,
|
|
46
|
-
r as b,
|
|
47
|
-
t as c,
|
|
48
|
-
i as g,
|
|
49
|
-
c as i,
|
|
50
|
-
e as l
|
|
51
|
-
};
|
|
52
|
-
//# sourceMappingURL=index-DBkPBXe2.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-DBkPBXe2.js","sources":["../src/syllabi/vowels-tones/index.ts"],"sourcesContent":["/**\n * Thai Vowels & Tones syllabus\n */\n\nimport { createContentLoader, type SyllabusConfig, type ContentLoader } from '@syllst/content-shared';\n\nexport const config: SyllabusConfig = {\n id: 'th-vowels-tones',\n title: 'สระและวรรณยุกต์ (Vowels & Tones)',\n description: 'Master Thai vowels and the five tones',\n language: 'th',\n locale: 'th-TH',\n lessonCount: 8,\n difficulty: 'beginner',\n cefrLevel: 'A1',\n icon: 'alphabet',\n version: '0.1.0',\n};\n\nasync function loadLessonMDX(lessonNumber: number) {\n switch (lessonNumber) {\n case 1: return import('./lessons/lesson-01.mdx?raw');\n case 2: return import('./lessons/lesson-02.mdx?raw');\n case 3: return import('./lessons/lesson-03.mdx?raw');\n case 4: return import('./lessons/lesson-04.mdx?raw');\n case 5: return import('./lessons/lesson-05.mdx?raw');\n case 6: return import('./lessons/lesson-06.mdx?raw');\n case 7: return import('./lessons/lesson-07.mdx?raw');\n case 8: return import('./lessons/lesson-08.mdx?raw');\n default: throw new Error(`Lesson ${lessonNumber} not found`);\n }\n}\n\nexport const loader: ContentLoader = createContentLoader(config, loadLessonMDX);\nexport const loadLesson = loader.loadLesson.bind(loader);\nexport const loadAllLessons = loader.loadAllLessons.bind(loader);\nexport const getAvailableLessons = loader.getAvailableLessons.bind(loader);\n"],"names":["config","loadLessonMDX","lessonNumber","loader","createContentLoader","loadLesson","loadAllLessons","getAvailableLessons"],"mappings":";AAMO,MAAMA,IAAyB;AAAA,EACpC,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,aAAa;AAAA,EACb,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,SAAS;AACX;AAEA,eAAeC,EAAcC,GAAsB;AACjD,UAAQA,GAAA;AAAA,IACN,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD;AAAS,YAAM,IAAI,MAAM,UAAUA,CAAY,YAAY;AAAA,EAAA;AAE/D;AAEO,MAAMC,IAAwBC,EAAoBJ,GAAQC,CAAa,GACjEI,IAAaF,EAAO,WAAW,KAAKA,CAAM,GAC1CG,IAAiBH,EAAO,eAAe,KAAKA,CAAM,GAClDI,IAAsBJ,EAAO,oBAAoB,KAAKA,CAAM;;;;;;;;"}
|
package/dist/index-DdRhLqkM.js
DELETED
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
function a(t, r) {
|
|
2
|
-
return {
|
|
3
|
-
config: t,
|
|
4
|
-
async loadLesson(e) {
|
|
5
|
-
if (e < 1 || e > t.lessonCount)
|
|
6
|
-
throw new Error(`Lesson ${e} not found. Valid range: 1-${t.lessonCount}`);
|
|
7
|
-
const n = await r(e);
|
|
8
|
-
return {
|
|
9
|
-
number: e,
|
|
10
|
-
rawContent: n.default
|
|
11
|
-
};
|
|
12
|
-
},
|
|
13
|
-
async loadAllLessons() {
|
|
14
|
-
const e = [];
|
|
15
|
-
for (let n = 1; n <= t.lessonCount; n++)
|
|
16
|
-
e.push(await this.loadLesson(n));
|
|
17
|
-
return e;
|
|
18
|
-
},
|
|
19
|
-
getAvailableLessons() {
|
|
20
|
-
return Array.from({ length: t.lessonCount }, (e, n) => n + 1);
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
const s = {
|
|
25
|
-
id: "th-alphabet",
|
|
26
|
-
title: "อักษรไทย (Thai Alphabet)",
|
|
27
|
-
description: "Learn the Thai writing system - consonants, vowels, and tone marks",
|
|
28
|
-
language: "th",
|
|
29
|
-
locale: "th-TH",
|
|
30
|
-
lessonCount: 12,
|
|
31
|
-
difficulty: "beginner",
|
|
32
|
-
cefrLevel: "A1",
|
|
33
|
-
icon: "alphabet",
|
|
34
|
-
version: "0.1.0"
|
|
35
|
-
};
|
|
36
|
-
async function l(t) {
|
|
37
|
-
switch (t) {
|
|
38
|
-
case 1:
|
|
39
|
-
return import("./lesson-01-Cc4Ws8eR.js");
|
|
40
|
-
case 2:
|
|
41
|
-
return import("./lesson-02-CbJJ5Amt.js");
|
|
42
|
-
case 3:
|
|
43
|
-
return import("./lesson-03-Bj5hWZ9t.js");
|
|
44
|
-
case 4:
|
|
45
|
-
return import("./lesson-04-BLuPI1-X.js");
|
|
46
|
-
case 5:
|
|
47
|
-
return import("./lesson-05-D2zf9n7k.js");
|
|
48
|
-
case 6:
|
|
49
|
-
return import("./lesson-06-OWFMgO0a.js");
|
|
50
|
-
case 7:
|
|
51
|
-
return import("./lesson-07-BpyF1Ssq.js");
|
|
52
|
-
case 8:
|
|
53
|
-
return import("./lesson-08-18gscaS0.js");
|
|
54
|
-
case 9:
|
|
55
|
-
return import("./lesson-09-B1qWE3Yl.js");
|
|
56
|
-
case 10:
|
|
57
|
-
return import("./lesson-10-00qNLc7A.js");
|
|
58
|
-
case 11:
|
|
59
|
-
return import("./lesson-11-BM3R_S7I.js");
|
|
60
|
-
case 12:
|
|
61
|
-
return import("./lesson-12-D1Wx7CyK.js");
|
|
62
|
-
default:
|
|
63
|
-
throw new Error(`Lesson ${t} not found`);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
const o = a(s, l), i = o.loadLesson.bind(o), c = o.loadAllLessons.bind(o), u = o.getAvailableLessons.bind(o), d = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
67
|
-
__proto__: null,
|
|
68
|
-
config: s,
|
|
69
|
-
getAvailableLessons: u,
|
|
70
|
-
loadAllLessons: c,
|
|
71
|
-
loadLesson: i,
|
|
72
|
-
loader: o
|
|
73
|
-
}, Symbol.toStringTag, { value: "Module" }));
|
|
74
|
-
export {
|
|
75
|
-
c as a,
|
|
76
|
-
i as b,
|
|
77
|
-
s as c,
|
|
78
|
-
u as g,
|
|
79
|
-
d as i,
|
|
80
|
-
o as l
|
|
81
|
-
};
|
|
82
|
-
//# sourceMappingURL=index-DdRhLqkM.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-DdRhLqkM.js","sources":["../src/shared.ts","../src/syllabi/alphabet/index.ts"],"sourcesContent":["/**\n * Shared types and utilities for SYLLST content\n * (Inlined from @syllst/content-shared to make package self-contained)\n */\n\n/**\n * CEFR language proficiency levels\n */\nexport type CEFRLevel = 'A1' | 'A2' | 'B1' | 'B2' | 'C1' | 'C2';\n\n/**\n * Difficulty levels\n */\nexport type Difficulty = 'beginner' | 'intermediate' | 'advanced';\n\n/**\n * Icon types for syllabi\n */\nexport type SyllabusIcon =\n | 'alphabet'\n | 'dialogue'\n | 'vocabulary'\n | 'grammar'\n | 'reading'\n | 'numbers'\n | 'food'\n | 'travel';\n\n/**\n * Configuration for a syllabus content package\n */\nexport interface SyllabusConfig {\n /** Unique syllabus ID (e.g., \"th-alphabet\") */\n id: string;\n /** Display title */\n title: string;\n /** Description */\n description: string;\n /** Language code (ISO 639-1) */\n language: string;\n /** Locale code (e.g., \"th-TH\") */\n locale: string;\n /** Number of lessons */\n lessonCount: number;\n /** Difficulty level */\n difficulty: Difficulty;\n /** CEFR level */\n cefrLevel: CEFRLevel;\n /** Icon for display */\n icon?: SyllabusIcon;\n /** Package version */\n version: string;\n}\n\n/**\n * Result of loading a lesson\n */\nexport interface LoadedLesson {\n /** Lesson number (1-indexed) */\n number: number;\n /** Raw MDX content */\n rawContent: string;\n}\n\n/**\n * Content loader interface\n */\nexport interface ContentLoader {\n /** Syllabus configuration */\n config: SyllabusConfig;\n /** Load a single lesson by number */\n loadLesson(lessonNumber: number): Promise<LoadedLesson>;\n /** Load all lessons */\n loadAllLessons(): Promise<LoadedLesson[]>;\n /** Get list of available lesson numbers */\n getAvailableLessons(): number[];\n}\n\n/**\n * Create a content loader from config and lesson loader function\n */\nexport function createContentLoader(\n config: SyllabusConfig,\n loadLessonMDX: (lessonNumber: number) => Promise<{ default: string }>\n): ContentLoader {\n return {\n config,\n\n async loadLesson(lessonNumber: number): Promise<LoadedLesson> {\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\n async loadAllLessons(): Promise<LoadedLesson[]> {\n const lessons: LoadedLesson[] = [];\n for (let i = 1; i <= config.lessonCount; i++) {\n lessons.push(await this.loadLesson(i));\n }\n return lessons;\n },\n\n getAvailableLessons(): number[] {\n return Array.from({ length: config.lessonCount }, (_, i) => i + 1);\n },\n };\n}\n","/**\n * Thai Alphabet syllabus\n */\n\nimport { createContentLoader, type SyllabusConfig, type ContentLoader } from '../../shared.js';\n\nexport const config: SyllabusConfig = {\n id: 'th-alphabet',\n title: 'อักษรไทย (Thai Alphabet)',\n description: 'Learn the Thai writing system - consonants, vowels, and tone marks',\n language: 'th',\n locale: 'th-TH',\n lessonCount: 12,\n difficulty: 'beginner',\n cefrLevel: 'A1',\n icon: 'alphabet',\n version: '0.1.0',\n};\n\nasync function loadLessonMDX(lessonNumber: number) {\n switch (lessonNumber) {\n case 1: return import('./lessons/lesson-01.mdx?raw');\n case 2: return import('./lessons/lesson-02.mdx?raw');\n case 3: return import('./lessons/lesson-03.mdx?raw');\n case 4: return import('./lessons/lesson-04.mdx?raw');\n case 5: return import('./lessons/lesson-05.mdx?raw');\n case 6: return import('./lessons/lesson-06.mdx?raw');\n case 7: return import('./lessons/lesson-07.mdx?raw');\n case 8: return import('./lessons/lesson-08.mdx?raw');\n case 9: return import('./lessons/lesson-09.mdx?raw');\n case 10: return import('./lessons/lesson-10.mdx?raw');\n case 11: return import('./lessons/lesson-11.mdx?raw');\n case 12: return import('./lessons/lesson-12.mdx?raw');\n default: throw new Error(`Lesson ${lessonNumber} not found`);\n }\n}\n\nexport const loader: ContentLoader = createContentLoader(config, loadLessonMDX);\nexport const loadLesson = loader.loadLesson.bind(loader);\nexport const loadAllLessons = loader.loadAllLessons.bind(loader);\nexport const getAvailableLessons = loader.getAvailableLessons.bind(loader);\n"],"names":["createContentLoader","config","loadLessonMDX","lessonNumber","module","lessons","i","_","loader","loadLesson","loadAllLessons","getAvailableLessons"],"mappings":"AAiFO,SAASA,EACdC,GACAC,GACe;AACf,SAAO;AAAA,IACL,QAAAD;AAAA,IAEA,MAAM,WAAWE,GAA6C;AAC5D,UAAIA,IAAe,KAAKA,IAAeF,EAAO;AAC5C,cAAM,IAAI,MAAM,UAAUE,CAAY,8BAA8BF,EAAO,WAAW,EAAE;AAE1F,YAAMG,IAAS,MAAMF,EAAcC,CAAY;AAC/C,aAAO;AAAA,QACL,QAAQA;AAAA,QACR,YAAYC,EAAO;AAAA,MAAA;AAAA,IAEvB;AAAA,IAEA,MAAM,iBAA0C;AAC9C,YAAMC,IAA0B,CAAA;AAChC,eAASC,IAAI,GAAGA,KAAKL,EAAO,aAAaK;AACvC,QAAAD,EAAQ,KAAK,MAAM,KAAK,WAAWC,CAAC,CAAC;AAEvC,aAAOD;AAAA,IACT;AAAA,IAEA,sBAAgC;AAC9B,aAAO,MAAM,KAAK,EAAE,QAAQJ,EAAO,YAAA,GAAe,CAACM,GAAGD,MAAMA,IAAI,CAAC;AAAA,IACnE;AAAA,EAAA;AAEJ;ACzGO,MAAML,IAAyB;AAAA,EACpC,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,aAAa;AAAA,EACb,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,SAAS;AACX;AAEA,eAAeC,EAAcC,GAAsB;AACjD,UAAQA,GAAA;AAAA,IACN,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAG,aAAO,OAAO,yBAA6B;AAAA,IACnD,KAAK;AAAI,aAAO,OAAO,yBAA6B;AAAA,IACpD,KAAK;AAAI,aAAO,OAAO,yBAA6B;AAAA,IACpD,KAAK;AAAI,aAAO,OAAO,yBAA6B;AAAA,IACpD;AAAS,YAAM,IAAI,MAAM,UAAUA,CAAY,YAAY;AAAA,EAAA;AAE/D;AAEO,MAAMK,IAAwBR,EAAoBC,GAAQC,CAAa,GACjEO,IAAaD,EAAO,WAAW,KAAKA,CAAM,GAC1CE,IAAiBF,EAAO,eAAe,KAAKA,CAAM,GAClDG,IAAsBH,EAAO,oBAAoB,KAAKA,CAAM;;;;;;;;"}
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
const n = `---
|
|
2
|
-
type: lesson
|
|
3
|
-
id: thai-vowels-lesson-01
|
|
4
|
-
title: "บทที่ 1 — สระเสียงสั้น I"
|
|
5
|
-
description: "Short Vowels Part 1: Above and below the consonant"
|
|
6
|
-
order: 1
|
|
7
|
-
parentId: thai-vowels-tones
|
|
8
|
-
difficulty: beginner
|
|
9
|
-
cefrLevel: A1
|
|
10
|
-
categories:
|
|
11
|
-
- vowels
|
|
12
|
-
- short-vowels
|
|
13
|
-
- basic-vowels
|
|
14
|
-
metadata:
|
|
15
|
-
estimatedTime: 30
|
|
16
|
-
prerequisites:
|
|
17
|
-
- thai-alphabet
|
|
18
|
-
learningObjectives:
|
|
19
|
-
- id: obj-recognize-above-vowels
|
|
20
|
-
description: "Recognize vowels written above consonants"
|
|
21
|
-
skill: character-recognition
|
|
22
|
-
references: [vowel-i, vowel-ue]
|
|
23
|
-
- id: obj-recognize-below-vowels
|
|
24
|
-
description: "Recognize vowels written below consonants"
|
|
25
|
-
skill: character-recognition
|
|
26
|
-
references: [vowel-u]
|
|
27
|
-
- id: obj-short-vowel-duration
|
|
28
|
-
description: "Understand the short vowel duration concept"
|
|
29
|
-
skill: character-sound-mapping
|
|
30
|
-
references: [vowel-i, vowel-ue, vowel-u]
|
|
31
|
-
- id: obj-combine-vowels-consonants
|
|
32
|
-
description: "Practice combining vowels with familiar consonants"
|
|
33
|
-
skill: vowel-positioning
|
|
34
|
-
references: [vowel-i, vowel-ue, vowel-u]
|
|
35
|
-
---
|
|
36
|
-
|
|
37
|
-
# บทที่ 1 (Lesson 1) — Short Vowels I
|
|
38
|
-
|
|
39
|
-
## Introduction
|
|
40
|
-
|
|
41
|
-
Welcome 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.
|
|
42
|
-
|
|
43
|
-
## Why Position Matters
|
|
44
|
-
|
|
45
|
-
Thai vowels can appear in four locations relative to a consonant:
|
|
46
|
-
- **Above** (◌ิ ◌ี) — like hats on the consonant
|
|
47
|
-
- **Below** (◌ุ ◌ู) — like shoes under the consonant
|
|
48
|
-
- **Before** (เ◌ แ◌) — written first, pronounced after
|
|
49
|
-
- **After** (◌า) — written and pronounced after
|
|
50
|
-
|
|
51
|
-
Today we focus on **above** and **below** positions.
|
|
52
|
-
|
|
53
|
-
## Characters
|
|
54
|
-
|
|
55
|
-
:::character-set{id="thai-short-vowels-above" title="Short Vowels Above Consonant"}
|
|
56
|
-
|
|
57
|
-
::character{id="vowel-i" canonicalRef="vowel-i" char="ิ" name="สระอิ (sara i)" nativeName="สระอิ" transliteration="i" charType="vowel"}
|
|
58
|
-
|
|
59
|
-
::character{id="vowel-ue" canonicalRef="vowel-ue" char="ึ" name="สระอึ (sara ue)" nativeName="สระอึ" transliteration="ue" charType="vowel"}
|
|
60
|
-
|
|
61
|
-
:::
|
|
62
|
-
|
|
63
|
-
:::character-set{id="thai-short-vowels-below" title="Short Vowels Below Consonant"}
|
|
64
|
-
|
|
65
|
-
::character{id="vowel-u" canonicalRef="vowel-u" char="ุ" name="สระอุ (sara u)" nativeName="สระอุ" transliteration="u" charType="vowel"}
|
|
66
|
-
|
|
67
|
-
:::
|
|
68
|
-
|
|
69
|
-
## How They Combine
|
|
70
|
-
|
|
71
|
-
When you add these vowels to a consonant, watch the position:
|
|
72
|
-
|
|
73
|
-
| Consonant + Vowel | Result | Pronunciation |
|
|
74
|
-
|-------------------|--------|---------------|
|
|
75
|
-
| ก + ิ | กิ | gi |
|
|
76
|
-
| ม + ิ | มิ | mi |
|
|
77
|
-
| ก + ึ | กึ | gue |
|
|
78
|
-
| ก + ุ | กุ | gu |
|
|
79
|
-
| ม + ุ | มุ | mu |
|
|
80
|
-
|
|
81
|
-
## Short vs Long: A Preview
|
|
82
|
-
|
|
83
|
-
These are **short** vowels — they have a clipped, brief sound:
|
|
84
|
-
- **ิ (i)** is short — like the "i" in English "bit"
|
|
85
|
-
- **ี (ii)** is long — like the "ee" in English "bee"
|
|
86
|
-
|
|
87
|
-
You'll learn the long versions in Lesson 3. For now, focus on the brief, snappy quality of short vowels.
|
|
88
|
-
|
|
89
|
-
## The "ue" Sound
|
|
90
|
-
|
|
91
|
-
The vowel **ึ** (sara ue) has no direct English equivalent. It's like:
|
|
92
|
-
- Saying "ee" but with unrounded lips
|
|
93
|
-
- Similar to the German "ü" but shorter
|
|
94
|
-
- Position your tongue for "ee" but spread your lips
|
|
95
|
-
|
|
96
|
-
## Key Points
|
|
97
|
-
|
|
98
|
-
1. **Position above**: ิ and ึ sit above the consonant like small marks
|
|
99
|
-
2. **Position below**: ุ sits below the consonant
|
|
100
|
-
3. **Short duration**: These vowels are brief — don't drag them out
|
|
101
|
-
4. **No standalone form**: These vowels must attach to a consonant
|
|
102
|
-
|
|
103
|
-
## Practice Recognition
|
|
104
|
-
|
|
105
|
-
With consonants you know, try reading these syllables:
|
|
106
|
-
- กิ (gi) — like "gee" but shorter
|
|
107
|
-
- มิ (mi) — like "me" but shorter
|
|
108
|
-
- กุ (gu) — like "goo" but shorter
|
|
109
|
-
- มุ (mu) — like "moo" but shorter
|
|
110
|
-
|
|
111
|
-
## What's Next
|
|
112
|
-
|
|
113
|
-
In 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!
|
|
114
|
-
`;
|
|
115
|
-
export {
|
|
116
|
-
n as default
|
|
117
|
-
};
|
|
118
|
-
//# sourceMappingURL=lesson-01-B0wtSaSl.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lesson-01-B0wtSaSl.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 learningObjectives:\\n - id: obj-recognize-above-vowels\\n description: \\\"Recognize vowels written above consonants\\\"\\n skill: character-recognition\\n references: [vowel-i, vowel-ue]\\n - id: obj-recognize-below-vowels\\n description: \\\"Recognize vowels written below consonants\\\"\\n skill: character-recognition\\n references: [vowel-u]\\n - id: obj-short-vowel-duration\\n description: \\\"Understand the short vowel duration concept\\\"\\n skill: character-sound-mapping\\n references: [vowel-i, vowel-ue, vowel-u]\\n - id: obj-combine-vowels-consonants\\n description: \\\"Practice combining vowels with familiar consonants\\\"\\n skill: vowel-positioning\\n references: [vowel-i, vowel-ue, vowel-u]\\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=\\\"vowel-i\\\" canonicalRef=\\\"vowel-i\\\" char=\\\"ิ\\\" name=\\\"สระอิ (sara i)\\\" nativeName=\\\"สระอิ\\\" transliteration=\\\"i\\\" charType=\\\"vowel\\\"}\\n\\n::character{id=\\\"vowel-ue\\\" canonicalRef=\\\"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=\\\"vowel-u\\\" canonicalRef=\\\"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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
|