@syllst/th 0.1.0 → 0.1.2
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/dist/index-B029m98V.js +46 -0
- package/dist/index-B029m98V.js.map +1 -0
- package/dist/index-BCA5Llwg.js +52 -0
- package/dist/index-BCA5Llwg.js.map +1 -0
- package/dist/index-BFcg5D_W.js +56 -0
- package/dist/index-BFcg5D_W.js.map +1 -0
- package/dist/index-CB8M6CK6.js +52 -0
- package/dist/index-CB8M6CK6.js.map +1 -0
- package/dist/index-CTQ45BVw.js +48 -0
- package/dist/index-CTQ45BVw.js.map +1 -0
- package/dist/index-CoqP9GZL.js +52 -0
- package/dist/index-CoqP9GZL.js.map +1 -0
- package/dist/index-DADMaTE7.js +27 -0
- package/dist/index-DADMaTE7.js.map +1 -0
- package/dist/index-Dy38Hmlm.js +52 -0
- package/dist/index-Dy38Hmlm.js.map +1 -0
- package/dist/index-of_athp-.js +82 -0
- package/dist/index-of_athp-.js.map +1 -0
- package/dist/index-vuRo2mLK.js +50 -0
- package/dist/index-vuRo2mLK.js.map +1 -0
- package/dist/index.d.ts +15 -45
- package/dist/index.js +62 -66
- package/dist/index.js.map +1 -1
- package/dist/lesson-01--9NOyHZ6.js +106 -0
- package/dist/lesson-01--9NOyHZ6.js.map +1 -0
- package/dist/lesson-01-3hBted4A.js +147 -0
- package/dist/lesson-01-3hBted4A.js.map +1 -0
- package/dist/lesson-01-97FtYE6g.js +130 -0
- package/dist/lesson-01-97FtYE6g.js.map +1 -0
- package/dist/lesson-01-BNdHXAGR.js +103 -0
- package/dist/lesson-01-BNdHXAGR.js.map +1 -0
- package/dist/lesson-01-BYKAZiua.js +130 -0
- package/dist/lesson-01-BYKAZiua.js.map +1 -0
- package/dist/lesson-01-BhjY6ArF.js +147 -0
- package/dist/lesson-01-BhjY6ArF.js.map +1 -0
- package/dist/lesson-01-CF4tJfZ3.js +120 -0
- package/dist/lesson-01-CF4tJfZ3.js.map +1 -0
- package/dist/lesson-01-CRx-yw4C.js +145 -0
- package/dist/lesson-01-CRx-yw4C.js.map +1 -0
- package/dist/lesson-01-WV3ic8Ok.js +91 -0
- package/dist/lesson-01-WV3ic8Ok.js.map +1 -0
- package/dist/lesson-02-B2Xg7RVU.js +214 -0
- package/dist/lesson-02-B2Xg7RVU.js.map +1 -0
- package/dist/lesson-02-BAbq-QGP.js +191 -0
- package/dist/lesson-02-BAbq-QGP.js.map +1 -0
- package/dist/lesson-02-BGnp0Ik_.js +168 -0
- package/dist/lesson-02-BGnp0Ik_.js.map +1 -0
- package/dist/lesson-02-BO3BXPMJ.js +139 -0
- package/dist/lesson-02-BO3BXPMJ.js.map +1 -0
- package/dist/lesson-02-Bm9EJuN8.js +191 -0
- package/dist/lesson-02-Bm9EJuN8.js.map +1 -0
- package/dist/lesson-02-C0ZL4z3c.js +110 -0
- package/dist/lesson-02-C0ZL4z3c.js.map +1 -0
- package/dist/lesson-02-C2ALLvoT.js +161 -0
- package/dist/lesson-02-C2ALLvoT.js.map +1 -0
- package/dist/lesson-02-C8dfzXvq.js +112 -0
- package/dist/lesson-02-C8dfzXvq.js.map +1 -0
- package/dist/lesson-02-CsejVbCo.js +196 -0
- package/dist/lesson-02-CsejVbCo.js.map +1 -0
- package/dist/lesson-03-8NtAeqFh.js +132 -0
- package/dist/lesson-03-8NtAeqFh.js.map +1 -0
- package/dist/lesson-03-BdZfKRhq.js +163 -0
- package/dist/lesson-03-BdZfKRhq.js.map +1 -0
- package/dist/lesson-03-CKTNtgY1.js +229 -0
- package/dist/lesson-03-CKTNtgY1.js.map +1 -0
- package/dist/lesson-03-D8va_Q9B.js +173 -0
- package/dist/lesson-03-D8va_Q9B.js.map +1 -0
- package/dist/lesson-03-DV2SUWVH.js +184 -0
- package/dist/lesson-03-DV2SUWVH.js.map +1 -0
- package/dist/lesson-03-DiV17_Os.js +116 -0
- package/dist/lesson-03-DiV17_Os.js.map +1 -0
- package/dist/lesson-03-DrJgbfDQ.js +217 -0
- package/dist/lesson-03-DrJgbfDQ.js.map +1 -0
- package/dist/lesson-03-XVahXvgf.js +145 -0
- package/dist/lesson-03-XVahXvgf.js.map +1 -0
- package/dist/lesson-03-Xc8-2Yt3.js +175 -0
- package/dist/lesson-03-Xc8-2Yt3.js.map +1 -0
- package/dist/lesson-04-BpRrNmzO.js +135 -0
- package/dist/lesson-04-BpRrNmzO.js.map +1 -0
- package/dist/lesson-04-CtNr2B3E.js +206 -0
- package/dist/lesson-04-CtNr2B3E.js.map +1 -0
- package/dist/lesson-04-DEEPJ_rd.js +207 -0
- package/dist/lesson-04-DEEPJ_rd.js.map +1 -0
- package/dist/lesson-04-D__vMCyA.js +164 -0
- package/dist/lesson-04-D__vMCyA.js.map +1 -0
- package/dist/lesson-04-Dfc7S4nT.js +225 -0
- package/dist/lesson-04-Dfc7S4nT.js.map +1 -0
- package/dist/lesson-04-DtXVhdGB.js +170 -0
- package/dist/lesson-04-DtXVhdGB.js.map +1 -0
- package/dist/lesson-04-ZrSBM0BX.js +184 -0
- package/dist/lesson-04-ZrSBM0BX.js.map +1 -0
- package/dist/lesson-04-ioLXnB0j.js +175 -0
- package/dist/lesson-04-ioLXnB0j.js.map +1 -0
- package/dist/lesson-04-rapx_3vA.js +222 -0
- package/dist/lesson-04-rapx_3vA.js.map +1 -0
- package/dist/lesson-05-Bm6fg-DJ.js +236 -0
- package/dist/lesson-05-Bm6fg-DJ.js.map +1 -0
- package/dist/lesson-05-CKxXcooO.js +191 -0
- package/dist/lesson-05-CKxXcooO.js.map +1 -0
- package/dist/lesson-05-D1d3kc3M.js +137 -0
- package/dist/lesson-05-D1d3kc3M.js.map +1 -0
- package/dist/lesson-05-D2SVU-I0.js +236 -0
- package/dist/lesson-05-D2SVU-I0.js.map +1 -0
- package/dist/lesson-05-DBsHyFlt.js +181 -0
- package/dist/lesson-05-DBsHyFlt.js.map +1 -0
- package/dist/lesson-05-DXOLS7G0.js +172 -0
- package/dist/lesson-05-DXOLS7G0.js.map +1 -0
- package/dist/lesson-05-D_GdROUn.js +175 -0
- package/dist/lesson-05-D_GdROUn.js.map +1 -0
- package/dist/lesson-05-DusKUtbm.js +208 -0
- package/dist/lesson-05-DusKUtbm.js.map +1 -0
- package/dist/lesson-05-ip400cxe.js +194 -0
- package/dist/lesson-05-ip400cxe.js.map +1 -0
- package/dist/lesson-06-1CE05TRX.js +196 -0
- package/dist/lesson-06-1CE05TRX.js.map +1 -0
- package/dist/lesson-06-1ZsbrE1a.js +230 -0
- package/dist/lesson-06-1ZsbrE1a.js.map +1 -0
- package/dist/lesson-06-Aw-X-HMV.js +222 -0
- package/dist/lesson-06-Aw-X-HMV.js.map +1 -0
- package/dist/lesson-06-BG26PBTF.js +135 -0
- package/dist/lesson-06-BG26PBTF.js.map +1 -0
- package/dist/lesson-06-Bliedg7n.js +265 -0
- package/dist/lesson-06-Bliedg7n.js.map +1 -0
- package/dist/lesson-06-CnKkcUb-.js +164 -0
- package/dist/lesson-06-CnKkcUb-.js.map +1 -0
- package/dist/lesson-06-CvN9pDsE.js +182 -0
- package/dist/lesson-06-CvN9pDsE.js.map +1 -0
- package/dist/lesson-06-Du9J8sYl.js +192 -0
- package/dist/lesson-06-Du9J8sYl.js.map +1 -0
- package/dist/lesson-07-8zdPFyjE.js +189 -0
- package/dist/lesson-07-8zdPFyjE.js.map +1 -0
- package/dist/lesson-07-B9bkJ3gP.js +136 -0
- package/dist/lesson-07-B9bkJ3gP.js.map +1 -0
- package/dist/lesson-07-CTFSd9gF.js +200 -0
- package/dist/lesson-07-CTFSd9gF.js.map +1 -0
- package/dist/lesson-07-DezS1ojS.js +224 -0
- package/dist/lesson-07-DezS1ojS.js.map +1 -0
- package/dist/lesson-07-DjCMCYkK.js +186 -0
- package/dist/lesson-07-DjCMCYkK.js.map +1 -0
- package/dist/lesson-07-X6anzbAn.js +240 -0
- package/dist/lesson-07-X6anzbAn.js.map +1 -0
- package/dist/lesson-07-rvSSQiVh.js +222 -0
- package/dist/lesson-07-rvSSQiVh.js.map +1 -0
- package/dist/lesson-08-BYfkPBkH.js +279 -0
- package/dist/lesson-08-BYfkPBkH.js.map +1 -0
- package/dist/lesson-08-Bb_v_gD-.js +140 -0
- package/dist/lesson-08-Bb_v_gD-.js.map +1 -0
- package/dist/lesson-08-BqW5C_OE.js +265 -0
- package/dist/lesson-08-BqW5C_OE.js.map +1 -0
- package/dist/lesson-08-CeDWopKc.js +215 -0
- package/dist/lesson-08-CeDWopKc.js.map +1 -0
- package/dist/lesson-08-Cyzy_VeP.js +214 -0
- package/dist/lesson-08-Cyzy_VeP.js.map +1 -0
- package/dist/lesson-08-hJlci9W5.js +197 -0
- package/dist/lesson-08-hJlci9W5.js.map +1 -0
- package/dist/lesson-09-BQ1CZCjT.js +137 -0
- package/dist/lesson-09-BQ1CZCjT.js.map +1 -0
- package/dist/lesson-09-DHRHZIc1.js +209 -0
- package/dist/lesson-09-DHRHZIc1.js.map +1 -0
- package/dist/lesson-10-BdfkVT7s.js +221 -0
- package/dist/lesson-10-BdfkVT7s.js.map +1 -0
- package/dist/lesson-10-C7YEQ8et.js +150 -0
- package/dist/lesson-10-C7YEQ8et.js.map +1 -0
- package/dist/lesson-11-oJQ8ZxJk.js +248 -0
- package/dist/lesson-11-oJQ8ZxJk.js.map +1 -0
- package/dist/lesson-12-D69m5ETy.js +265 -0
- package/dist/lesson-12-D69m5ETy.js.map +1 -0
- package/dist/syllabi/alphabet/index.d.ts +3 -6
- package/dist/syllabi/alphabet/index.js +8 -37
- package/dist/syllabi/alphabet/index.js.map +1 -1
- package/dist/syllabi/dialogue/index.d.ts +3 -6
- package/dist/syllabi/dialogue/index.js +9 -33
- package/dist/syllabi/dialogue/index.js.map +1 -1
- package/dist/syllabi/essentials/index.d.ts +3 -6
- package/dist/syllabi/essentials/index.js +9 -31
- package/dist/syllabi/essentials/index.js.map +1 -1
- package/dist/syllabi/food/index.d.ts +3 -6
- package/dist/syllabi/food/index.js +9 -33
- package/dist/syllabi/food/index.js.map +1 -1
- package/dist/syllabi/grammar/index.d.ts +3 -6
- package/dist/syllabi/grammar/index.js +9 -33
- package/dist/syllabi/grammar/index.js.map +1 -1
- package/dist/syllabi/numbers/index.d.ts +3 -6
- package/dist/syllabi/numbers/index.js +9 -30
- package/dist/syllabi/numbers/index.js.map +1 -1
- package/dist/syllabi/reading/index.d.ts +3 -6
- package/dist/syllabi/reading/index.js +9 -35
- package/dist/syllabi/reading/index.js.map +1 -1
- package/dist/syllabi/travel/index.d.ts +3 -6
- package/dist/syllabi/travel/index.js +9 -32
- package/dist/syllabi/travel/index.js.map +1 -1
- package/dist/syllabi/vowels-tones/index.d.ts +3 -6
- package/dist/syllabi/vowels-tones/index.js +9 -33
- package/dist/syllabi/vowels-tones/index.js.map +1 -1
- package/package.json +16 -13
- package/dist/index.d.ts.map +0 -1
- package/dist/syllabi/alphabet/index.d.ts.map +0 -1
- package/dist/syllabi/dialogue/index.d.ts.map +0 -1
- package/dist/syllabi/essentials/index.d.ts.map +0 -1
- package/dist/syllabi/food/index.d.ts.map +0 -1
- package/dist/syllabi/grammar/index.d.ts.map +0 -1
- package/dist/syllabi/numbers/index.d.ts.map +0 -1
- package/dist/syllabi/reading/index.d.ts.map +0 -1
- package/dist/syllabi/travel/index.d.ts.map +0 -1
- package/dist/syllabi/vowels-tones/index.d.ts.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,45 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
export
|
|
10
|
-
|
|
11
|
-
export
|
|
12
|
-
|
|
13
|
-
export
|
|
14
|
-
|
|
15
|
-
export
|
|
16
|
-
export * as reading from './syllabi/reading/index.js';
|
|
17
|
-
export { config as alphabetConfig } from './syllabi/alphabet/index.js';
|
|
18
|
-
export { config as vowelsTonesConfig } from './syllabi/vowels-tones/index.js';
|
|
19
|
-
export { config as numbersConfig } from './syllabi/numbers/index.js';
|
|
20
|
-
export { config as essentialsConfig } from './syllabi/essentials/index.js';
|
|
21
|
-
export { config as foodConfig } from './syllabi/food/index.js';
|
|
22
|
-
export { config as travelConfig } from './syllabi/travel/index.js';
|
|
23
|
-
export { config as dialogueConfig } from './syllabi/dialogue/index.js';
|
|
24
|
-
export { config as grammarConfig } from './syllabi/grammar/index.js';
|
|
25
|
-
export { config as readingConfig } from './syllabi/reading/index.js';
|
|
26
|
-
export { loader as alphabetLoader } from './syllabi/alphabet/index.js';
|
|
27
|
-
export { loader as vowelsTonesLoader } from './syllabi/vowels-tones/index.js';
|
|
28
|
-
export { loader as numbersLoader } from './syllabi/numbers/index.js';
|
|
29
|
-
export { loader as essentialsLoader } from './syllabi/essentials/index.js';
|
|
30
|
-
export { loader as foodLoader } from './syllabi/food/index.js';
|
|
31
|
-
export { loader as travelLoader } from './syllabi/travel/index.js';
|
|
32
|
-
export { loader as dialogueLoader } from './syllabi/dialogue/index.js';
|
|
33
|
-
export { loader as grammarLoader } from './syllabi/grammar/index.js';
|
|
34
|
-
export { loader as readingLoader } from './syllabi/reading/index.js';
|
|
35
|
-
export type { SyllabusConfig, ContentLoader, LoadedLesson } from '@syllst/content-shared';
|
|
36
|
-
import type { SyllabusConfig } from '@syllst/content-shared';
|
|
37
|
-
/**
|
|
38
|
-
* All Thai syllabi configurations
|
|
39
|
-
*/
|
|
40
|
-
export declare const allConfigs: SyllabusConfig[];
|
|
41
|
-
/**
|
|
42
|
-
* Get a syllabus config by ID
|
|
43
|
-
*/
|
|
44
|
-
export declare function getConfigById(id: string): SyllabusConfig | undefined;
|
|
45
|
-
//# sourceMappingURL=index.d.ts.map
|
|
1
|
+
import { ContentLoader } from '@syllst/content-shared';
|
|
2
|
+
import { LoadedLesson } from '@syllst/content-shared';
|
|
3
|
+
import { SyllabusConfig } from '@syllst/content-shared';
|
|
4
|
+
|
|
5
|
+
export declare const config: SyllabusConfig;
|
|
6
|
+
|
|
7
|
+
export declare const getAvailableLessons: () => number[];
|
|
8
|
+
|
|
9
|
+
export declare const loadAllLessons: () => Promise<LoadedLesson[]>;
|
|
10
|
+
|
|
11
|
+
export declare const loader: ContentLoader;
|
|
12
|
+
|
|
13
|
+
export declare const loadLesson: (lessonNumber: number) => Promise<LoadedLesson>;
|
|
14
|
+
|
|
15
|
+
export { }
|
package/dist/index.js
CHANGED
|
@@ -1,68 +1,64 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
export { loader as alphabetLoader } from './syllabi/alphabet/index.js';
|
|
30
|
-
export { loader as vowelsTonesLoader } from './syllabi/vowels-tones/index.js';
|
|
31
|
-
export { loader as numbersLoader } from './syllabi/numbers/index.js';
|
|
32
|
-
export { loader as essentialsLoader } from './syllabi/essentials/index.js';
|
|
33
|
-
export { loader as foodLoader } from './syllabi/food/index.js';
|
|
34
|
-
export { loader as travelLoader } from './syllabi/travel/index.js';
|
|
35
|
-
export { loader as dialogueLoader } from './syllabi/dialogue/index.js';
|
|
36
|
-
export { loader as grammarLoader } from './syllabi/grammar/index.js';
|
|
37
|
-
export { loader as readingLoader } from './syllabi/reading/index.js';
|
|
38
|
-
// Export all configs as array for iteration
|
|
39
|
-
import { config as alphabetConfig } from './syllabi/alphabet/index.js';
|
|
40
|
-
import { config as vowelsTonesConfig } from './syllabi/vowels-tones/index.js';
|
|
41
|
-
import { config as numbersConfig } from './syllabi/numbers/index.js';
|
|
42
|
-
import { config as essentialsConfig } from './syllabi/essentials/index.js';
|
|
43
|
-
import { config as foodConfig } from './syllabi/food/index.js';
|
|
44
|
-
import { config as travelConfig } from './syllabi/travel/index.js';
|
|
45
|
-
import { config as dialogueConfig } from './syllabi/dialogue/index.js';
|
|
46
|
-
import { config as grammarConfig } from './syllabi/grammar/index.js';
|
|
47
|
-
import { config as readingConfig } from './syllabi/reading/index.js';
|
|
48
|
-
/**
|
|
49
|
-
* All Thai syllabi configurations
|
|
50
|
-
*/
|
|
51
|
-
export const allConfigs = [
|
|
52
|
-
alphabetConfig,
|
|
53
|
-
vowelsTonesConfig,
|
|
54
|
-
numbersConfig,
|
|
55
|
-
essentialsConfig,
|
|
56
|
-
foodConfig,
|
|
57
|
-
travelConfig,
|
|
58
|
-
dialogueConfig,
|
|
59
|
-
grammarConfig,
|
|
60
|
-
readingConfig,
|
|
1
|
+
import { c as r } from "./index-of_athp-.js";
|
|
2
|
+
import { i as T, l as y } from "./index-of_athp-.js";
|
|
3
|
+
import { c as s } from "./index-CB8M6CK6.js";
|
|
4
|
+
import { i as I, l as j } from "./index-CB8M6CK6.js";
|
|
5
|
+
import { c as i } from "./index-B029m98V.js";
|
|
6
|
+
import { i as q, l as z } from "./index-B029m98V.js";
|
|
7
|
+
import { c as e } from "./index-CTQ45BVw.js";
|
|
8
|
+
import { i as D, l as E } from "./index-CTQ45BVw.js";
|
|
9
|
+
import { c as f } from "./index-BCA5Llwg.js";
|
|
10
|
+
import { i as G, l as H } from "./index-BCA5Llwg.js";
|
|
11
|
+
import { c as n } from "./index-vuRo2mLK.js";
|
|
12
|
+
import { i as K, l as M } from "./index-vuRo2mLK.js";
|
|
13
|
+
import { c as m } from "./index-CoqP9GZL.js";
|
|
14
|
+
import { i as O, l as P } from "./index-CoqP9GZL.js";
|
|
15
|
+
import { c as t } from "./index-Dy38Hmlm.js";
|
|
16
|
+
import { i as R, l as S } from "./index-Dy38Hmlm.js";
|
|
17
|
+
import { c as g } from "./index-BFcg5D_W.js";
|
|
18
|
+
import { i as V, l as W } from "./index-BFcg5D_W.js";
|
|
19
|
+
const l = [
|
|
20
|
+
r,
|
|
21
|
+
s,
|
|
22
|
+
i,
|
|
23
|
+
e,
|
|
24
|
+
f,
|
|
25
|
+
n,
|
|
26
|
+
m,
|
|
27
|
+
t,
|
|
28
|
+
g
|
|
61
29
|
];
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
*/
|
|
65
|
-
export function getConfigById(id) {
|
|
66
|
-
return allConfigs.find(c => c.id === id);
|
|
30
|
+
function v(o) {
|
|
31
|
+
return l.find((a) => a.id === o);
|
|
67
32
|
}
|
|
68
|
-
|
|
33
|
+
export {
|
|
34
|
+
l as allConfigs,
|
|
35
|
+
T as alphabet,
|
|
36
|
+
r as alphabetConfig,
|
|
37
|
+
y as alphabetLoader,
|
|
38
|
+
O as dialogue,
|
|
39
|
+
m as dialogueConfig,
|
|
40
|
+
P as dialogueLoader,
|
|
41
|
+
D as essentials,
|
|
42
|
+
e as essentialsConfig,
|
|
43
|
+
E as essentialsLoader,
|
|
44
|
+
G as food,
|
|
45
|
+
f as foodConfig,
|
|
46
|
+
H as foodLoader,
|
|
47
|
+
v as getConfigById,
|
|
48
|
+
R as grammar,
|
|
49
|
+
t as grammarConfig,
|
|
50
|
+
S as grammarLoader,
|
|
51
|
+
q as numbers,
|
|
52
|
+
i as numbersConfig,
|
|
53
|
+
z as numbersLoader,
|
|
54
|
+
V as reading,
|
|
55
|
+
g as readingConfig,
|
|
56
|
+
W as readingLoader,
|
|
57
|
+
K as travel,
|
|
58
|
+
n as travelConfig,
|
|
59
|
+
M as travelLoader,
|
|
60
|
+
I as vowelsTones,
|
|
61
|
+
s as vowelsTonesConfig,
|
|
62
|
+
j as vowelsTonesLoader
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["/**\n * @syllst/th\n *\n * Thai SYLLST content package.\n * Contains all Thai language syllabi: alphabet, vowels-tones, numbers,\n * essentials, food, travel, dialogue, grammar, and reading.\n */\n\n// Re-export all syllabi\nexport * as alphabet from './syllabi/alphabet/index.js';\nexport * as vowelsTones from './syllabi/vowels-tones/index.js';\nexport * as numbers from './syllabi/numbers/index.js';\nexport * as essentials from './syllabi/essentials/index.js';\nexport * as food from './syllabi/food/index.js';\nexport * as travel from './syllabi/travel/index.js';\nexport * as dialogue from './syllabi/dialogue/index.js';\nexport * as grammar from './syllabi/grammar/index.js';\nexport * as reading from './syllabi/reading/index.js';\n\n// Re-export configs for convenience\nexport { config as alphabetConfig } from './syllabi/alphabet/index.js';\nexport { config as vowelsTonesConfig } from './syllabi/vowels-tones/index.js';\nexport { config as numbersConfig } from './syllabi/numbers/index.js';\nexport { config as essentialsConfig } from './syllabi/essentials/index.js';\nexport { config as foodConfig } from './syllabi/food/index.js';\nexport { config as travelConfig } from './syllabi/travel/index.js';\nexport { config as dialogueConfig } from './syllabi/dialogue/index.js';\nexport { config as grammarConfig } from './syllabi/grammar/index.js';\nexport { config as readingConfig } from './syllabi/reading/index.js';\n\n// Re-export loaders for convenience\nexport { loader as alphabetLoader } from './syllabi/alphabet/index.js';\nexport { loader as vowelsTonesLoader } from './syllabi/vowels-tones/index.js';\nexport { loader as numbersLoader } from './syllabi/numbers/index.js';\nexport { loader as essentialsLoader } from './syllabi/essentials/index.js';\nexport { loader as foodLoader } from './syllabi/food/index.js';\nexport { loader as travelLoader } from './syllabi/travel/index.js';\nexport { loader as dialogueLoader } from './syllabi/dialogue/index.js';\nexport { loader as grammarLoader } from './syllabi/grammar/index.js';\nexport { loader as readingLoader } from './syllabi/reading/index.js';\n\n// Re-export types from content-shared\nexport type { SyllabusConfig, ContentLoader, LoadedLesson } from '@syllst/content-shared';\n\n// Export all configs as array for iteration\nimport { config as alphabetConfig } from './syllabi/alphabet/index.js';\nimport { config as vowelsTonesConfig } from './syllabi/vowels-tones/index.js';\nimport { config as numbersConfig } from './syllabi/numbers/index.js';\nimport { config as essentialsConfig } from './syllabi/essentials/index.js';\nimport { config as foodConfig } from './syllabi/food/index.js';\nimport { config as travelConfig } from './syllabi/travel/index.js';\nimport { config as dialogueConfig } from './syllabi/dialogue/index.js';\nimport { config as grammarConfig } from './syllabi/grammar/index.js';\nimport { config as readingConfig } from './syllabi/reading/index.js';\n\nimport type { SyllabusConfig } from '@syllst/content-shared';\n\n/**\n * All Thai syllabi configurations\n */\nexport const allConfigs: SyllabusConfig[] = [\n alphabetConfig,\n vowelsTonesConfig,\n numbersConfig,\n essentialsConfig,\n foodConfig,\n travelConfig,\n dialogueConfig,\n grammarConfig,\n readingConfig,\n];\n\n/**\n * Get a syllabus config by ID\n */\nexport function getConfigById(id: string): SyllabusConfig | undefined {\n return allConfigs.find(c => c.id === id);\n}\n"],"names":["allConfigs","alphabetConfig","vowelsTonesConfig","numbersConfig","essentialsConfig","foodConfig","travelConfig","dialogueConfig","grammarConfig","readingConfig","getConfigById","id","c"],"mappings":";;;;;;;;;;;;;;;;;;AA4DO,MAAMA,IAA+B;AAAA,EAC1CC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AACF;AAKO,SAASC,EAAcC,GAAwC;AACpE,SAAOX,EAAW,KAAK,CAAAY,MAAKA,EAAE,OAAOD,CAAE;AACzC;"}
|
|
@@ -0,0 +1,106 @@
|
|
|
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
|
+
objectives:
|
|
19
|
+
- "Recognize vowels written above consonants"
|
|
20
|
+
- "Recognize vowels written below consonants"
|
|
21
|
+
- "Understand the short vowel duration concept"
|
|
22
|
+
- "Practice combining vowels with familiar consonants"
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
# บทที่ 1 (Lesson 1) — Short Vowels I
|
|
26
|
+
|
|
27
|
+
## Introduction
|
|
28
|
+
|
|
29
|
+
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.
|
|
30
|
+
|
|
31
|
+
## Why Position Matters
|
|
32
|
+
|
|
33
|
+
Thai vowels can appear in four locations relative to a consonant:
|
|
34
|
+
- **Above** (◌ิ ◌ี) — like hats on the consonant
|
|
35
|
+
- **Below** (◌ุ ◌ู) — like shoes under the consonant
|
|
36
|
+
- **Before** (เ◌ แ◌) — written first, pronounced after
|
|
37
|
+
- **After** (◌า) — written and pronounced after
|
|
38
|
+
|
|
39
|
+
Today we focus on **above** and **below** positions.
|
|
40
|
+
|
|
41
|
+
## Characters
|
|
42
|
+
|
|
43
|
+
:::character-set{id="thai-short-vowels-above" title="Short Vowels Above Consonant"}
|
|
44
|
+
|
|
45
|
+
::character{id="th-vowel-i" char="ิ" name="สระอิ (sara i)" nativeName="สระอิ" transliteration="i" charType="vowel"}
|
|
46
|
+
|
|
47
|
+
::character{id="th-vowel-ue" char="ึ" name="สระอึ (sara ue)" nativeName="สระอึ" transliteration="ue" charType="vowel"}
|
|
48
|
+
|
|
49
|
+
:::
|
|
50
|
+
|
|
51
|
+
:::character-set{id="thai-short-vowels-below" title="Short Vowels Below Consonant"}
|
|
52
|
+
|
|
53
|
+
::character{id="th-vowel-u" char="ุ" name="สระอุ (sara u)" nativeName="สระอุ" transliteration="u" charType="vowel"}
|
|
54
|
+
|
|
55
|
+
:::
|
|
56
|
+
|
|
57
|
+
## How They Combine
|
|
58
|
+
|
|
59
|
+
When you add these vowels to a consonant, watch the position:
|
|
60
|
+
|
|
61
|
+
| Consonant + Vowel | Result | Pronunciation |
|
|
62
|
+
|-------------------|--------|---------------|
|
|
63
|
+
| ก + ิ | กิ | gi |
|
|
64
|
+
| ม + ิ | มิ | mi |
|
|
65
|
+
| ก + ึ | กึ | gue |
|
|
66
|
+
| ก + ุ | กุ | gu |
|
|
67
|
+
| ม + ุ | มุ | mu |
|
|
68
|
+
|
|
69
|
+
## Short vs Long: A Preview
|
|
70
|
+
|
|
71
|
+
These are **short** vowels — they have a clipped, brief sound:
|
|
72
|
+
- **ิ (i)** is short — like the "i" in English "bit"
|
|
73
|
+
- **ี (ii)** is long — like the "ee" in English "bee"
|
|
74
|
+
|
|
75
|
+
You'll learn the long versions in Lesson 3. For now, focus on the brief, snappy quality of short vowels.
|
|
76
|
+
|
|
77
|
+
## The "ue" Sound
|
|
78
|
+
|
|
79
|
+
The vowel **ึ** (sara ue) has no direct English equivalent. It's like:
|
|
80
|
+
- Saying "ee" but with unrounded lips
|
|
81
|
+
- Similar to the German "ü" but shorter
|
|
82
|
+
- Position your tongue for "ee" but spread your lips
|
|
83
|
+
|
|
84
|
+
## Key Points
|
|
85
|
+
|
|
86
|
+
1. **Position above**: ิ and ึ sit above the consonant like small marks
|
|
87
|
+
2. **Position below**: ุ sits below the consonant
|
|
88
|
+
3. **Short duration**: These vowels are brief — don't drag them out
|
|
89
|
+
4. **No standalone form**: These vowels must attach to a consonant
|
|
90
|
+
|
|
91
|
+
## Practice Recognition
|
|
92
|
+
|
|
93
|
+
With consonants you know, try reading these syllables:
|
|
94
|
+
- กิ (gi) — like "gee" but shorter
|
|
95
|
+
- มิ (mi) — like "me" but shorter
|
|
96
|
+
- กุ (gu) — like "goo" but shorter
|
|
97
|
+
- มุ (mu) — like "moo" but shorter
|
|
98
|
+
|
|
99
|
+
## What's Next
|
|
100
|
+
|
|
101
|
+
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!
|
|
102
|
+
`;
|
|
103
|
+
export {
|
|
104
|
+
n as default
|
|
105
|
+
};
|
|
106
|
+
//# sourceMappingURL=lesson-01--9NOyHZ6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lesson-01--9NOyHZ6.js","sources":["../src/syllabi/vowels-tones/lessons/lesson-01.mdx?raw"],"sourcesContent":["export default \"---\\ntype: lesson\\nid: thai-vowels-lesson-01\\ntitle: \\\"บทที่ 1 — สระเสียงสั้น I\\\"\\ndescription: \\\"Short Vowels Part 1: Above and below the consonant\\\"\\norder: 1\\nparentId: thai-vowels-tones\\ndifficulty: beginner\\ncefrLevel: A1\\ncategories:\\n - vowels\\n - short-vowels\\n - basic-vowels\\nmetadata:\\n estimatedTime: 30\\n prerequisites:\\n - thai-alphabet\\n objectives:\\n - \\\"Recognize vowels written above consonants\\\"\\n - \\\"Recognize vowels written below consonants\\\"\\n - \\\"Understand the short vowel duration concept\\\"\\n - \\\"Practice combining vowels with familiar consonants\\\"\\n---\\n\\n# บทที่ 1 (Lesson 1) — Short Vowels I\\n\\n## Introduction\\n\\nWelcome to Thai vowels! Unlike English where vowels are standalone letters (a, e, i, o, u), Thai vowels are **diacritical marks** that attach to consonants in various positions. In this first lesson, you'll learn vowels that appear **above** and **below** the consonant.\\n\\n## Why Position Matters\\n\\nThai vowels can appear in four locations relative to a consonant:\\n- **Above** (◌ิ ◌ี) — like hats on the consonant\\n- **Below** (◌ุ ◌ู) — like shoes under the consonant\\n- **Before** (เ◌ แ◌) — written first, pronounced after\\n- **After** (◌า) — written and pronounced after\\n\\nToday we focus on **above** and **below** positions.\\n\\n## Characters\\n\\n:::character-set{id=\\\"thai-short-vowels-above\\\" title=\\\"Short Vowels Above Consonant\\\"}\\n\\n::character{id=\\\"th-vowel-i\\\" char=\\\"ิ\\\" name=\\\"สระอิ (sara i)\\\" nativeName=\\\"สระอิ\\\" transliteration=\\\"i\\\" charType=\\\"vowel\\\"}\\n\\n::character{id=\\\"th-vowel-ue\\\" char=\\\"ึ\\\" name=\\\"สระอึ (sara ue)\\\" nativeName=\\\"สระอึ\\\" transliteration=\\\"ue\\\" charType=\\\"vowel\\\"}\\n\\n:::\\n\\n:::character-set{id=\\\"thai-short-vowels-below\\\" title=\\\"Short Vowels Below Consonant\\\"}\\n\\n::character{id=\\\"th-vowel-u\\\" char=\\\"ุ\\\" name=\\\"สระอุ (sara u)\\\" nativeName=\\\"สระอุ\\\" transliteration=\\\"u\\\" charType=\\\"vowel\\\"}\\n\\n:::\\n\\n## How They Combine\\n\\nWhen you add these vowels to a consonant, watch the position:\\n\\n| Consonant + Vowel | Result | Pronunciation |\\n|-------------------|--------|---------------|\\n| ก + ิ | กิ | gi |\\n| ม + ิ | มิ | mi |\\n| ก + ึ | กึ | gue |\\n| ก + ุ | กุ | gu |\\n| ม + ุ | มุ | mu |\\n\\n## Short vs Long: A Preview\\n\\nThese are **short** vowels — they have a clipped, brief sound:\\n- **ิ (i)** is short — like the \\\"i\\\" in English \\\"bit\\\"\\n- **ี (ii)** is long — like the \\\"ee\\\" in English \\\"bee\\\"\\n\\nYou'll learn the long versions in Lesson 3. For now, focus on the brief, snappy quality of short vowels.\\n\\n## The \\\"ue\\\" Sound\\n\\nThe vowel **ึ** (sara ue) has no direct English equivalent. It's like:\\n- Saying \\\"ee\\\" but with unrounded lips\\n- Similar to the German \\\"ü\\\" but shorter\\n- Position your tongue for \\\"ee\\\" but spread your lips\\n\\n## Key Points\\n\\n1. **Position above**: ิ and ึ sit above the consonant like small marks\\n2. **Position below**: ุ sits below the consonant\\n3. **Short duration**: These vowels are brief — don't drag them out\\n4. **No standalone form**: These vowels must attach to a consonant\\n\\n## Practice Recognition\\n\\nWith consonants you know, try reading these syllables:\\n- กิ (gi) — like \\\"gee\\\" but shorter\\n- มิ (mi) — like \\\"me\\\" but shorter\\n- กุ (gu) — like \\\"goo\\\" but shorter\\n- มุ (mu) — like \\\"moo\\\" but shorter\\n\\n## What's Next\\n\\nIn Lesson 2, you'll learn more short vowels, including those that appear **before** and **around** consonants — Thai's unique feature where you write one thing but pronounce another!\\n\""],"names":["lesson01"],"mappings":"AAAA,MAAAA,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
const n = `---
|
|
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
|
+
objectives:
|
|
18
|
+
- "Recognize the first 6 middle-class consonants"
|
|
19
|
+
- "Understand why consonant class matters for tones"
|
|
20
|
+
- "Learn the mnemonic words for each consonant"
|
|
21
|
+
- "Practice initial and final sounds"
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
# บทที่ 1 (Lesson 1) — Middle-Class Consonants I
|
|
25
|
+
|
|
26
|
+
## Introduction
|
|
27
|
+
|
|
28
|
+
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.
|
|
29
|
+
|
|
30
|
+
## Why Middle-Class First?
|
|
31
|
+
|
|
32
|
+
Thai has **5 tones** (mid, low, falling, high, rising), and determining the correct tone requires knowing the consonant's class. Middle-class consonants:
|
|
33
|
+
|
|
34
|
+
- Are the **simplest for tone rules** — they produce all 5 tones directly with tone marks
|
|
35
|
+
- Include the **most common consonants** in everyday Thai
|
|
36
|
+
- Provide the **baseline** for understanding how high and low classes differ
|
|
37
|
+
|
|
38
|
+
Think of middle class as "neutral" — the other classes modify from this baseline.
|
|
39
|
+
|
|
40
|
+
## Characters
|
|
41
|
+
|
|
42
|
+
:::character-set{id="thai-middle-consonants-1" title="Middle-Class Consonants I"}
|
|
43
|
+
|
|
44
|
+
::character{id="th-chicken" char="ก" name="ก ไก่ (gɔɔ gài)" nativeName="ก ไก่" transliteration="g/k" charType="consonant"}
|
|
45
|
+
|
|
46
|
+
::character{id="th-plate" char="จ" name="จ จาน (jɔɔ jaan)" nativeName="จ จาน" transliteration="j/t" charType="consonant"}
|
|
47
|
+
|
|
48
|
+
::character{id="th-child" char="ด" name="ด เด็ก (dɔɔ dèk)" nativeName="ด เด็ก" transliteration="d/t" charType="consonant"}
|
|
49
|
+
|
|
50
|
+
::character{id="th-turtle" char="ต" name="ต เต่า (dtɔɔ dtào)" nativeName="ต เต่า" transliteration="dt/t" charType="consonant"}
|
|
51
|
+
|
|
52
|
+
::character{id="th-fish" char="ป" name="ป ปลา (bpɔɔ bplaa)" nativeName="ป ปลา" transliteration="bp/p" charType="consonant"}
|
|
53
|
+
|
|
54
|
+
::character{id="th-leaf" char="บ" name="บ ใบไม้ (bɔɔ baimáai)" nativeName="บ ใบไม้" transliteration="b/p" charType="consonant"}
|
|
55
|
+
|
|
56
|
+
:::
|
|
57
|
+
|
|
58
|
+
## Sound Changes: Initial vs Final Position
|
|
59
|
+
|
|
60
|
+
One of Thai's unique features is that consonants often sound **different** at the beginning versus end of a syllable:
|
|
61
|
+
|
|
62
|
+
| Consonant | Initial Sound | Final Sound | Example |
|
|
63
|
+
|-----------|---------------|-------------|---------|
|
|
64
|
+
| ก | **g** (as in "go") | **k** (unreleased) | กา (gaa) vs อัก (àk) |
|
|
65
|
+
| จ | **j** (as in "jam") | **t** (unreleased) | จาน (jaan) vs มืจ (mʉ̀t) |
|
|
66
|
+
| ด | **d** (as in "do") | **t** (unreleased) | ดู (duu) vs วาด (wàat) |
|
|
67
|
+
| ต | **dt** (unaspirated) | **t** (unreleased) | ตา (dtaa) vs รัต (rát) |
|
|
68
|
+
| ป | **bp** (unaspirated) | **p** (unreleased) | ปา (bpaa) vs อับ (àp) |
|
|
69
|
+
| บ | **b** (as in "boy") | **p** (unreleased) | บาน (baan) vs รับ (ráp) |
|
|
70
|
+
|
|
71
|
+
**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.
|
|
72
|
+
|
|
73
|
+
## The Unaspirated Pair: ต and ป
|
|
74
|
+
|
|
75
|
+
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:
|
|
76
|
+
- English "t" and "p" (slightly aspirated)
|
|
77
|
+
- Thai ท and พ (heavily aspirated, low-class)
|
|
78
|
+
|
|
79
|
+
Hold your hand in front of your mouth: you should feel air for English "top" but not for Thai ตา.
|
|
80
|
+
|
|
81
|
+
## The Mnemonic System
|
|
82
|
+
|
|
83
|
+
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!**
|
|
84
|
+
|
|
85
|
+
## Key Points
|
|
86
|
+
|
|
87
|
+
1. **Middle class = tone baseline**: These consonants produce a mid tone in basic syllables
|
|
88
|
+
2. **Two sounds per consonant**: Initial vs final position changes pronunciation
|
|
89
|
+
3. **Unaspirated consonants**: ต and ป have no puff of air (unlike English)
|
|
90
|
+
4. **Mnemonics are names**: Learn them as the consonants' proper names, not just memory aids
|
|
91
|
+
|
|
92
|
+
## Practice Recognition
|
|
93
|
+
|
|
94
|
+
Look at the shapes:
|
|
95
|
+
- **ก** has a "head" loop on top
|
|
96
|
+
- **จ** looks like a fishing hook
|
|
97
|
+
- **ด** and **ต** are similar — ด has a longer tail
|
|
98
|
+
- **ป** and **บ** are similar — ป is more "closed"
|
|
99
|
+
|
|
100
|
+
Shape similarities within pairs (ด/ต, ป/บ) are intentional — they represent related sounds.
|
|
101
|
+
|
|
102
|
+
## Quick Quiz
|
|
103
|
+
|
|
104
|
+
:::exercise{id="quiz-01" type="matching" title="Match Consonants to Animals"}
|
|
105
|
+
|
|
106
|
+
**Question:** Match each consonant to its mnemonic animal
|
|
107
|
+
|
|
108
|
+
- ก
|
|
109
|
+
- ต
|
|
110
|
+
- ป
|
|
111
|
+
|
|
112
|
+
**Answer:**
|
|
113
|
+
|
|
114
|
+
- chicken (ไก่)
|
|
115
|
+
- turtle (เต่า)
|
|
116
|
+
- fish (ปลา)
|
|
117
|
+
|
|
118
|
+
**Explanation:** Each Thai consonant has a traditional mnemonic word. When Thais spell words, they say the consonant name with its mnemonic.
|
|
119
|
+
|
|
120
|
+
:::
|
|
121
|
+
|
|
122
|
+
:::exercise{id="recognition-01" type="fill-in-blank" title="Sound Recognition"}
|
|
123
|
+
|
|
124
|
+
**Question:** Which consonant makes each sound?
|
|
125
|
+
|
|
126
|
+
- Initial "g" sound (as in "go")
|
|
127
|
+
- Initial "j" sound (as in "jam")
|
|
128
|
+
- Initial "bp" sound (unaspirated, no puff of air)
|
|
129
|
+
|
|
130
|
+
**Answer:**
|
|
131
|
+
|
|
132
|
+
- ก (gɔɔ gài)
|
|
133
|
+
- จ (jɔɔ jaan)
|
|
134
|
+
- ป (bpɔɔ bplaa)
|
|
135
|
+
|
|
136
|
+
**Explanation:** Middle-class consonants have predictable sounds at the start of syllables.
|
|
137
|
+
|
|
138
|
+
:::
|
|
139
|
+
|
|
140
|
+
## What's Next
|
|
141
|
+
|
|
142
|
+
In Lesson 2, you'll learn the remaining middle-class consonants (ม ย ร ล อ), which include nasals and approximants with different final-position behaviors.
|
|
143
|
+
`;
|
|
144
|
+
export {
|
|
145
|
+
n as default
|
|
146
|
+
};
|
|
147
|
+
//# sourceMappingURL=lesson-01-3hBted4A.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lesson-01-3hBted4A.js","sources":["../src/syllabi/alphabet/lessons/lesson-01.mdx?raw"],"sourcesContent":["export default \"---\\ntype: lesson\\nid: thai-script-lesson-01\\ntitle: \\\"บทที่ 1 — พยัญชนะกลาง I\\\"\\ndescription: \\\"Middle-Class Consonants Part 1: ก จ ด ต ป บ — The foundation of Thai tones\\\"\\norder: 1\\nparentId: thai-script-alphabet\\ndifficulty: beginner\\ncefrLevel: A1\\ncategories:\\n - consonants\\n - middle-class\\n - basic-characters\\nmetadata:\\n estimatedTime: 25\\n prerequisites: []\\n objectives:\\n - \\\"Recognize the first 6 middle-class consonants\\\"\\n - \\\"Understand why consonant class matters for tones\\\"\\n - \\\"Learn the mnemonic words for each consonant\\\"\\n - \\\"Practice initial and final sounds\\\"\\n---\\n\\n# บทที่ 1 (Lesson 1) — Middle-Class Consonants I\\n\\n## Introduction\\n\\nWelcome to Thai script! In this first lesson, you'll learn 6 of the 9 **middle-class consonants** (พยัญชนะกลาง). We start here because middle-class consonants are the foundation of the Thai tone system.\\n\\n## Why Middle-Class First?\\n\\nThai has **5 tones** (mid, low, falling, high, rising), and determining the correct tone requires knowing the consonant's class. Middle-class consonants:\\n\\n- Are the **simplest for tone rules** — they produce all 5 tones directly with tone marks\\n- Include the **most common consonants** in everyday Thai\\n- Provide the **baseline** for understanding how high and low classes differ\\n\\nThink of middle class as \\\"neutral\\\" — the other classes modify from this baseline.\\n\\n## Characters\\n\\n:::character-set{id=\\\"thai-middle-consonants-1\\\" title=\\\"Middle-Class Consonants I\\\"}\\n\\n::character{id=\\\"th-chicken\\\" char=\\\"ก\\\" name=\\\"ก ไก่ (gɔɔ gài)\\\" nativeName=\\\"ก ไก่\\\" transliteration=\\\"g/k\\\" charType=\\\"consonant\\\"}\\n\\n::character{id=\\\"th-plate\\\" char=\\\"จ\\\" name=\\\"จ จาน (jɔɔ jaan)\\\" nativeName=\\\"จ จาน\\\" transliteration=\\\"j/t\\\" charType=\\\"consonant\\\"}\\n\\n::character{id=\\\"th-child\\\" char=\\\"ด\\\" name=\\\"ด เด็ก (dɔɔ dèk)\\\" nativeName=\\\"ด เด็ก\\\" transliteration=\\\"d/t\\\" charType=\\\"consonant\\\"}\\n\\n::character{id=\\\"th-turtle\\\" char=\\\"ต\\\" name=\\\"ต เต่า (dtɔɔ dtào)\\\" nativeName=\\\"ต เต่า\\\" transliteration=\\\"dt/t\\\" charType=\\\"consonant\\\"}\\n\\n::character{id=\\\"th-fish\\\" char=\\\"ป\\\" name=\\\"ป ปลา (bpɔɔ bplaa)\\\" nativeName=\\\"ป ปลา\\\" transliteration=\\\"bp/p\\\" charType=\\\"consonant\\\"}\\n\\n::character{id=\\\"th-leaf\\\" char=\\\"บ\\\" name=\\\"บ ใบไม้ (bɔɔ baimáai)\\\" nativeName=\\\"บ ใบไม้\\\" transliteration=\\\"b/p\\\" charType=\\\"consonant\\\"}\\n\\n:::\\n\\n## Sound Changes: Initial vs Final Position\\n\\nOne of Thai's unique features is that consonants often sound **different** at the beginning versus end of a syllable:\\n\\n| Consonant | Initial Sound | Final Sound | Example |\\n|-----------|---------------|-------------|---------|\\n| ก | **g** (as in \\\"go\\\") | **k** (unreleased) | กา (gaa) vs อัก (àk) |\\n| จ | **j** (as in \\\"jam\\\") | **t** (unreleased) | จาน (jaan) vs มืจ (mʉ̀t) |\\n| ด | **d** (as in \\\"do\\\") | **t** (unreleased) | ดู (duu) vs วาด (wàat) |\\n| ต | **dt** (unaspirated) | **t** (unreleased) | ตา (dtaa) vs รัต (rát) |\\n| ป | **bp** (unaspirated) | **p** (unreleased) | ปา (bpaa) vs อับ (àp) |\\n| บ | **b** (as in \\\"boy\\\") | **p** (unreleased) | บาน (baan) vs รับ (ráp) |\\n\\n**Key insight**: All these consonants become an unreleased stop (/t/ or /p/) when they end a syllable. This is why Thai speakers might say \\\"maak\\\" for \\\"mark\\\" — there's no equivalent of English final consonant sounds.\\n\\n## The Unaspirated Pair: ต and ป\\n\\nNotice **ต** (dt) and **ป** (bp) are written with two letters in romanization. This indicates they're **unaspirated** — no puff of air after the sound. This is different from:\\n- English \\\"t\\\" and \\\"p\\\" (slightly aspirated)\\n- Thai ท and พ (heavily aspirated, low-class)\\n\\nHold your hand in front of your mouth: you should feel air for English \\\"top\\\" but not for Thai ตา.\\n\\n## The Mnemonic System\\n\\nEach Thai consonant has a traditional **mnemonic word** starting with that consonant. When Thais spell words aloud, they say \\\"gɔɔ gài, jɔɔ jaan...\\\" — the mnemonic IS the letter's name. **Tap any character above to see its mnemonic!**\\n\\n## Key Points\\n\\n1. **Middle class = tone baseline**: These consonants produce a mid tone in basic syllables\\n2. **Two sounds per consonant**: Initial vs final position changes pronunciation\\n3. **Unaspirated consonants**: ต and ป have no puff of air (unlike English)\\n4. **Mnemonics are names**: Learn them as the consonants' proper names, not just memory aids\\n\\n## Practice Recognition\\n\\nLook at the shapes:\\n- **ก** has a \\\"head\\\" loop on top\\n- **จ** looks like a fishing hook\\n- **ด** and **ต** are similar — ด has a longer tail\\n- **ป** and **บ** are similar — ป is more \\\"closed\\\"\\n\\nShape similarities within pairs (ด/ต, ป/บ) are intentional — they represent related sounds.\\n\\n## Quick Quiz\\n\\n:::exercise{id=\\\"quiz-01\\\" type=\\\"matching\\\" title=\\\"Match Consonants to Animals\\\"}\\n\\n**Question:** Match each consonant to its mnemonic animal\\n\\n- ก\\n- ต\\n- ป\\n\\n**Answer:**\\n\\n- chicken (ไก่)\\n- turtle (เต่า)\\n- fish (ปลา)\\n\\n**Explanation:** Each Thai consonant has a traditional mnemonic word. When Thais spell words, they say the consonant name with its mnemonic.\\n\\n:::\\n\\n:::exercise{id=\\\"recognition-01\\\" type=\\\"fill-in-blank\\\" title=\\\"Sound Recognition\\\"}\\n\\n**Question:** Which consonant makes each sound?\\n\\n- Initial \\\"g\\\" sound (as in \\\"go\\\")\\n- Initial \\\"j\\\" sound (as in \\\"jam\\\")\\n- Initial \\\"bp\\\" sound (unaspirated, no puff of air)\\n\\n**Answer:**\\n\\n- ก (gɔɔ gài)\\n- จ (jɔɔ jaan)\\n- ป (bpɔɔ bplaa)\\n\\n**Explanation:** Middle-class consonants have predictable sounds at the start of syllables.\\n\\n:::\\n\\n## What's Next\\n\\nIn Lesson 2, you'll learn the remaining middle-class consonants (ม ย ร ล อ), which include nasals and approximants with different final-position behaviors.\\n\""],"names":["lesson01"],"mappings":"AAAA,MAAAA,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
const n = `---
|
|
2
|
+
type: lesson
|
|
3
|
+
id: thai-essentials-lesson-01
|
|
4
|
+
title: "บทที่ 1 — ทักทายและแนะนำตัว"
|
|
5
|
+
description: "Greetings & Introductions: สวัสดี and meeting people"
|
|
6
|
+
order: 1
|
|
7
|
+
parentId: thai-essentials
|
|
8
|
+
difficulty: beginner
|
|
9
|
+
cefrLevel: A1
|
|
10
|
+
categories:
|
|
11
|
+
- greetings
|
|
12
|
+
- introductions
|
|
13
|
+
- basics
|
|
14
|
+
metadata:
|
|
15
|
+
estimatedTime: 30
|
|
16
|
+
prerequisites: []
|
|
17
|
+
objectives:
|
|
18
|
+
- "Say hello and goodbye properly"
|
|
19
|
+
- "Introduce yourself with name and nationality"
|
|
20
|
+
- "Ask someone's name politely"
|
|
21
|
+
- "Understand the wai gesture"
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
# บทที่ 1 (Lesson 1) — Greetings & Introductions
|
|
25
|
+
|
|
26
|
+
## Introduction
|
|
27
|
+
|
|
28
|
+
The first words you'll use in Thai are greetings. Thai has one versatile greeting word — สวัสดี (sà-wàt-dii) — that works for hello, goodbye, and general well-wishing. Combined with the polite particle, it's your key to making a good first impression.
|
|
29
|
+
|
|
30
|
+
## The Universal Greeting
|
|
31
|
+
|
|
32
|
+
:::vocabulary-set{id="thai-greetings" title="Basic Greetings"}
|
|
33
|
+
|
|
34
|
+
::vocab-item{id="sawatdee" word="สวัสดี" pronunciation="sà-wàt-dii" meaning="Hello / Goodbye / Greetings"}
|
|
35
|
+
|
|
36
|
+
::vocab-item{id="sawatdee-khrap" word="สวัสดีครับ" pronunciation="sà-wàt-dii khráp" meaning="Hello (male speaker)"}
|
|
37
|
+
|
|
38
|
+
::vocab-item{id="sawatdee-kha" word="สวัสดีค่ะ" pronunciation="sà-wàt-dii khâ" meaning="Hello (female speaker)"}
|
|
39
|
+
|
|
40
|
+
:::
|
|
41
|
+
|
|
42
|
+
## Time-Specific Greetings
|
|
43
|
+
|
|
44
|
+
While สวัสดี works anytime, you can also use:
|
|
45
|
+
|
|
46
|
+
| Thai | Pronunciation | Meaning |
|
|
47
|
+
|------|---------------|---------|
|
|
48
|
+
| อรุณสวัสดิ์ | à-run-sà-wàt | Good morning (formal) |
|
|
49
|
+
| สวัสดีตอนเช้า | sà-wàt-dii dtɔɔn-cháo | Good morning |
|
|
50
|
+
| สวัสดีตอนบ่าย | sà-wàt-dii dtɔɔn-bàai | Good afternoon |
|
|
51
|
+
| ราตรีสวัสดิ์ | raa-dtrii-sà-wàt | Good night (formal) |
|
|
52
|
+
|
|
53
|
+
## Introducing Yourself
|
|
54
|
+
|
|
55
|
+
:::vocabulary-set{id="thai-introductions" title="Self-Introduction"}
|
|
56
|
+
|
|
57
|
+
::vocab-item{id="phom" word="ผม" pronunciation="phǒm" meaning="I (male)"}
|
|
58
|
+
|
|
59
|
+
::vocab-item{id="dichan" word="ดิฉัน" pronunciation="dì-chǎn" meaning="I (female, formal)"}
|
|
60
|
+
|
|
61
|
+
::vocab-item{id="chan" word="ฉัน" pronunciation="chǎn" meaning="I (casual)"}
|
|
62
|
+
|
|
63
|
+
::vocab-item{id="chue" word="ชื่อ" pronunciation="chʉ̂ʉ" meaning="name"}
|
|
64
|
+
|
|
65
|
+
::vocab-item{id="khon-thai" word="คนไทย" pronunciation="khon thai" meaning="Thai person"}
|
|
66
|
+
|
|
67
|
+
:::
|
|
68
|
+
|
|
69
|
+
## Key Phrases
|
|
70
|
+
|
|
71
|
+
| Thai | Pronunciation | Meaning |
|
|
72
|
+
|------|---------------|---------|
|
|
73
|
+
| ผม/ดิฉันชื่อ... | phǒm/dì-chǎn chʉ̂ʉ... | My name is... |
|
|
74
|
+
| คุณชื่ออะไร | khun chʉ̂ʉ à-rai | What's your name? |
|
|
75
|
+
| ยินดีที่ได้รู้จัก | yin-dii thîi dâai rúu-jàk | Nice to meet you |
|
|
76
|
+
| คุณเป็นคนที่ไหน | khun bpen khon thîi-nǎi | Where are you from? |
|
|
77
|
+
| ผม/ดิฉันมาจาก... | phǒm/dì-chǎn maa jàak... | I'm from... |
|
|
78
|
+
|
|
79
|
+
## The Wai (ไหว้)
|
|
80
|
+
|
|
81
|
+
The traditional Thai greeting gesture:
|
|
82
|
+
|
|
83
|
+
1. **Press palms together** at chest level, fingers pointing up
|
|
84
|
+
2. **Bow slightly** from the shoulders
|
|
85
|
+
3. **Say สวัสดี** + polite particle
|
|
86
|
+
|
|
87
|
+
**When to wai:**
|
|
88
|
+
- Meeting someone for the first time
|
|
89
|
+
- Greeting elders or superiors
|
|
90
|
+
- Showing respect or gratitude
|
|
91
|
+
- Formal situations
|
|
92
|
+
|
|
93
|
+
**When NOT to wai:**
|
|
94
|
+
- To children younger than you
|
|
95
|
+
- To service workers (a smile is fine)
|
|
96
|
+
- When your hands are full (nod instead)
|
|
97
|
+
|
|
98
|
+
## Countries & Nationalities
|
|
99
|
+
|
|
100
|
+
| Country | Thai | Nationality |
|
|
101
|
+
|---------|------|-------------|
|
|
102
|
+
| Thailand | ประเทศไทย | คนไทย (khon thai) |
|
|
103
|
+
| America | อเมริกา | คนอเมริกัน (khon a-mee-ri-gan) |
|
|
104
|
+
| England | อังกฤษ | คนอังกฤษ (khon ang-grìt) |
|
|
105
|
+
| Japan | ญี่ปุ่น | คนญี่ปุ่น (khon yîi-bpùn) |
|
|
106
|
+
| China | จีน | คนจีน (khon jiin) |
|
|
107
|
+
|
|
108
|
+
## Sample Conversation
|
|
109
|
+
|
|
110
|
+
**A**: สวัสดีครับ/ค่ะ (Hello)
|
|
111
|
+
**B**: สวัสดีครับ/ค่ะ (Hello)
|
|
112
|
+
**A**: ผม/ดิฉันชื่อจอห์น คุณชื่ออะไรครับ/คะ (My name is John. What's your name?)
|
|
113
|
+
**B**: ดิฉันชื่อสมศรีค่ะ ยินดีที่ได้รู้จักค่ะ (My name is Somsri. Nice to meet you.)
|
|
114
|
+
**A**: ยินดีที่ได้รู้จักครับ (Nice to meet you too.)
|
|
115
|
+
|
|
116
|
+
## Key Points
|
|
117
|
+
|
|
118
|
+
1. **สวัสดี works everywhere**: Morning, afternoon, evening, hello, goodbye
|
|
119
|
+
2. **Always add polite particle**: ครับ for men, ค่ะ/คะ for women
|
|
120
|
+
3. **Wai appropriately**: Match the depth to the relationship
|
|
121
|
+
4. **Smile**: It's called the Land of Smiles for a reason!
|
|
122
|
+
|
|
123
|
+
## What's Next
|
|
124
|
+
|
|
125
|
+
In Lesson 2, you'll master the polite particle system — the key to speaking properly in all situations.
|
|
126
|
+
`;
|
|
127
|
+
export {
|
|
128
|
+
n as default
|
|
129
|
+
};
|
|
130
|
+
//# sourceMappingURL=lesson-01-97FtYE6g.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lesson-01-97FtYE6g.js","sources":["../src/syllabi/essentials/lessons/lesson-01.mdx?raw"],"sourcesContent":["export default \"---\\ntype: lesson\\nid: thai-essentials-lesson-01\\ntitle: \\\"บทที่ 1 — ทักทายและแนะนำตัว\\\"\\ndescription: \\\"Greetings & Introductions: สวัสดี and meeting people\\\"\\norder: 1\\nparentId: thai-essentials\\ndifficulty: beginner\\ncefrLevel: A1\\ncategories:\\n - greetings\\n - introductions\\n - basics\\nmetadata:\\n estimatedTime: 30\\n prerequisites: []\\n objectives:\\n - \\\"Say hello and goodbye properly\\\"\\n - \\\"Introduce yourself with name and nationality\\\"\\n - \\\"Ask someone's name politely\\\"\\n - \\\"Understand the wai gesture\\\"\\n---\\n\\n# บทที่ 1 (Lesson 1) — Greetings & Introductions\\n\\n## Introduction\\n\\nThe first words you'll use in Thai are greetings. Thai has one versatile greeting word — สวัสดี (sà-wàt-dii) — that works for hello, goodbye, and general well-wishing. Combined with the polite particle, it's your key to making a good first impression.\\n\\n## The Universal Greeting\\n\\n:::vocabulary-set{id=\\\"thai-greetings\\\" title=\\\"Basic Greetings\\\"}\\n\\n::vocab-item{id=\\\"sawatdee\\\" word=\\\"สวัสดี\\\" pronunciation=\\\"sà-wàt-dii\\\" meaning=\\\"Hello / Goodbye / Greetings\\\"}\\n\\n::vocab-item{id=\\\"sawatdee-khrap\\\" word=\\\"สวัสดีครับ\\\" pronunciation=\\\"sà-wàt-dii khráp\\\" meaning=\\\"Hello (male speaker)\\\"}\\n\\n::vocab-item{id=\\\"sawatdee-kha\\\" word=\\\"สวัสดีค่ะ\\\" pronunciation=\\\"sà-wàt-dii khâ\\\" meaning=\\\"Hello (female speaker)\\\"}\\n\\n:::\\n\\n## Time-Specific Greetings\\n\\nWhile สวัสดี works anytime, you can also use:\\n\\n| Thai | Pronunciation | Meaning |\\n|------|---------------|---------|\\n| อรุณสวัสดิ์ | à-run-sà-wàt | Good morning (formal) |\\n| สวัสดีตอนเช้า | sà-wàt-dii dtɔɔn-cháo | Good morning |\\n| สวัสดีตอนบ่าย | sà-wàt-dii dtɔɔn-bàai | Good afternoon |\\n| ราตรีสวัสดิ์ | raa-dtrii-sà-wàt | Good night (formal) |\\n\\n## Introducing Yourself\\n\\n:::vocabulary-set{id=\\\"thai-introductions\\\" title=\\\"Self-Introduction\\\"}\\n\\n::vocab-item{id=\\\"phom\\\" word=\\\"ผม\\\" pronunciation=\\\"phǒm\\\" meaning=\\\"I (male)\\\"}\\n\\n::vocab-item{id=\\\"dichan\\\" word=\\\"ดิฉัน\\\" pronunciation=\\\"dì-chǎn\\\" meaning=\\\"I (female, formal)\\\"}\\n\\n::vocab-item{id=\\\"chan\\\" word=\\\"ฉัน\\\" pronunciation=\\\"chǎn\\\" meaning=\\\"I (casual)\\\"}\\n\\n::vocab-item{id=\\\"chue\\\" word=\\\"ชื่อ\\\" pronunciation=\\\"chʉ̂ʉ\\\" meaning=\\\"name\\\"}\\n\\n::vocab-item{id=\\\"khon-thai\\\" word=\\\"คนไทย\\\" pronunciation=\\\"khon thai\\\" meaning=\\\"Thai person\\\"}\\n\\n:::\\n\\n## Key Phrases\\n\\n| Thai | Pronunciation | Meaning |\\n|------|---------------|---------|\\n| ผม/ดิฉันชื่อ... | phǒm/dì-chǎn chʉ̂ʉ... | My name is... |\\n| คุณชื่ออะไร | khun chʉ̂ʉ à-rai | What's your name? |\\n| ยินดีที่ได้รู้จัก | yin-dii thîi dâai rúu-jàk | Nice to meet you |\\n| คุณเป็นคนที่ไหน | khun bpen khon thîi-nǎi | Where are you from? |\\n| ผม/ดิฉันมาจาก... | phǒm/dì-chǎn maa jàak... | I'm from... |\\n\\n## The Wai (ไหว้)\\n\\nThe traditional Thai greeting gesture:\\n\\n1. **Press palms together** at chest level, fingers pointing up\\n2. **Bow slightly** from the shoulders\\n3. **Say สวัสดี** + polite particle\\n\\n**When to wai:**\\n- Meeting someone for the first time\\n- Greeting elders or superiors\\n- Showing respect or gratitude\\n- Formal situations\\n\\n**When NOT to wai:**\\n- To children younger than you\\n- To service workers (a smile is fine)\\n- When your hands are full (nod instead)\\n\\n## Countries & Nationalities\\n\\n| Country | Thai | Nationality |\\n|---------|------|-------------|\\n| Thailand | ประเทศไทย | คนไทย (khon thai) |\\n| America | อเมริกา | คนอเมริกัน (khon a-mee-ri-gan) |\\n| England | อังกฤษ | คนอังกฤษ (khon ang-grìt) |\\n| Japan | ญี่ปุ่น | คนญี่ปุ่น (khon yîi-bpùn) |\\n| China | จีน | คนจีน (khon jiin) |\\n\\n## Sample Conversation\\n\\n**A**: สวัสดีครับ/ค่ะ (Hello)\\n**B**: สวัสดีครับ/ค่ะ (Hello)\\n**A**: ผม/ดิฉันชื่อจอห์น คุณชื่ออะไรครับ/คะ (My name is John. What's your name?)\\n**B**: ดิฉันชื่อสมศรีค่ะ ยินดีที่ได้รู้จักค่ะ (My name is Somsri. Nice to meet you.)\\n**A**: ยินดีที่ได้รู้จักครับ (Nice to meet you too.)\\n\\n## Key Points\\n\\n1. **สวัสดี works everywhere**: Morning, afternoon, evening, hello, goodbye\\n2. **Always add polite particle**: ครับ for men, ค่ะ/คะ for women\\n3. **Wai appropriately**: Match the depth to the relationship\\n4. **Smile**: It's called the Land of Smiles for a reason!\\n\\n## What's Next\\n\\nIn Lesson 2, you'll master the polite particle system — the key to speaking properly in all situations.\\n\""],"names":["lesson01"],"mappings":"AAAA,MAAAA,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
|