@polyglot-bundles/ro-minimal-pairs 0.2.0 → 0.2.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.
@@ -0,0 +1,4 @@
1
+ import { MinimalPairsMinimalPair } from '../../../../../content-shared/src';
2
+ export declare const level0Pairs: MinimalPairsMinimalPair[];
3
+ export default level0Pairs;
4
+ //# sourceMappingURL=level-0.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"level-0.d.ts","sourceRoot":"","sources":["../../src/data/level-0.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAEhF,eAAO,MAAM,WAAW,EAAE,uBAAuB,EA4BhD,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -0,0 +1,33 @@
1
+ const t = [
2
+ {
3
+ pairId: "ro_l0_001",
4
+ level: 0,
5
+ tags: ["level_0"],
6
+ contrastFeature: "consonant",
7
+ contrastDescription: "/p/ vs /b/",
8
+ word1: { script: "pat", definition: "pat", audioFile: null },
9
+ word2: { script: "bat", definition: "bat (flying mammal)", audioFile: null }
10
+ },
11
+ {
12
+ pairId: "ro_l0_002",
13
+ level: 0,
14
+ tags: ["level_0"],
15
+ contrastFeature: "consonant",
16
+ contrastDescription: "/t/ vs /d/",
17
+ word1: { script: "tat", definition: "tat (onomatopoeia)", audioFile: null },
18
+ word2: { script: "dat", definition: "given", audioFile: null }
19
+ },
20
+ {
21
+ pairId: "ro_l0_003",
22
+ level: 0,
23
+ tags: ["level_0"],
24
+ contrastFeature: "consonant",
25
+ contrastDescription: "/k/ vs /g/",
26
+ word1: { script: "casa", definition: "house", audioFile: null },
27
+ word2: { script: "gasa", definition: "gauze", audioFile: null }
28
+ }
29
+ ];
30
+ export {
31
+ t as default,
32
+ t as level0Pairs
33
+ };
@@ -0,0 +1,4 @@
1
+ import { MinimalPairsMinimalPair } from '../../../../../content-shared/src';
2
+ export declare const level1Pairs: MinimalPairsMinimalPair[];
3
+ export default level1Pairs;
4
+ //# sourceMappingURL=level-1.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"level-1.d.ts","sourceRoot":"","sources":["../../src/data/level-1.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAEhF,eAAO,MAAM,WAAW,EAAE,uBAAuB,EAuEhD,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -0,0 +1,76 @@
1
+ const i = [
2
+ {
3
+ pairId: "ro_l1_001",
4
+ level: 1,
5
+ tags: ["level_1", "vowel"],
6
+ contrastFeature: "vowel",
7
+ contrastDescription: "/a/ vs /aː/",
8
+ pronunciationTipId: "vowel_a_short_long",
9
+ word1: { script: "casa", definition: "house", audioFile: null },
10
+ word2: { script: "casa", definition: "house (long)", audioFile: null }
11
+ },
12
+ {
13
+ pairId: "ro_l1_002",
14
+ level: 1,
15
+ tags: ["level_1", "vowel"],
16
+ contrastFeature: "vowel",
17
+ contrastDescription: "/ɛ/ vs /e/",
18
+ pronunciationTipId: "vowel_e_open_closed",
19
+ word1: { script: "pescue", definition: "peach", audioFile: null },
20
+ word2: { script: "pescue", definition: "peach (closed)", audioFile: null }
21
+ },
22
+ {
23
+ pairId: "ro_l1_003",
24
+ level: 1,
25
+ tags: ["level_1", "vowel"],
26
+ contrastFeature: "vowel",
27
+ contrastDescription: "/i/ vs /iː/",
28
+ pronunciationTipId: "vowel_i_short_long",
29
+ word1: { script: "iartă", definition: "yesterday", audioFile: null },
30
+ word2: { script: "iartă", definition: "yesterday (long)", audioFile: null }
31
+ },
32
+ {
33
+ pairId: "ro_l1_004",
34
+ level: 1,
35
+ tags: ["level_1", "vowel"],
36
+ contrastFeature: "vowel",
37
+ contrastDescription: "/ɔ/ vs /o/",
38
+ pronunciationTipId: "vowel_o_open_closed_1",
39
+ word1: { script: "borș", definition: "sour soup", audioFile: null },
40
+ word2: { script: "borș", definition: "sour soup (closed)", audioFile: null }
41
+ },
42
+ {
43
+ pairId: "ro_l1_005",
44
+ level: 1,
45
+ tags: ["level_1", "vowel"],
46
+ contrastFeature: "vowel",
47
+ contrastDescription: "/u/ vs /uː/",
48
+ pronunciationTipId: "vowel_u_short_long",
49
+ word1: { script: "puta", definition: "prostitute", audioFile: null },
50
+ word2: { script: "puta", definition: "prostitute (long)", audioFile: null }
51
+ },
52
+ {
53
+ pairId: "ro_l1_006",
54
+ level: 1,
55
+ tags: ["level_1", "vowel", "nasal"],
56
+ contrastFeature: "vowel",
57
+ contrastDescription: "/ə/ (ă) vs /a/",
58
+ pronunciationTipId: "vowel_a_breve_a",
59
+ word1: { script: "cărămidă", definition: "brick", audioFile: null },
60
+ word2: { script: "carămidă", definition: "brick (dialectal)", audioFile: null }
61
+ },
62
+ {
63
+ pairId: "ro_l1_007",
64
+ level: 1,
65
+ tags: ["level_1", "vowel", "nasal"],
66
+ contrastFeature: "vowel",
67
+ contrastDescription: "/ə/ (â/î) vs /i/",
68
+ pronunciationTipId: "vowel_a_circumflex_i",
69
+ word1: { script: "râz", definition: "laughter", audioFile: null },
70
+ word2: { script: "riz", definition: "rice", audioFile: null }
71
+ }
72
+ ];
73
+ export {
74
+ i as default,
75
+ i as level1Pairs
76
+ };
@@ -0,0 +1,4 @@
1
+ import { MinimalPairsMinimalPair } from '../../../../../content-shared/src';
2
+ export declare const level2Pairs: MinimalPairsMinimalPair[];
3
+ export default level2Pairs;
4
+ //# sourceMappingURL=level-2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"level-2.d.ts","sourceRoot":"","sources":["../../src/data/level-2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAEhF,eAAO,MAAM,WAAW,EAAE,uBAAuB,EA+BhD,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -0,0 +1,36 @@
1
+ const n = [
2
+ {
3
+ pairId: "ro_l2_001",
4
+ level: 2,
5
+ tags: ["level_2", "consonant"],
6
+ contrastFeature: "consonant",
7
+ contrastDescription: "/f/ vs /v/",
8
+ pronunciationTipId: "consonant_f_v",
9
+ word1: { script: "foc", definition: "fire", audioFile: null },
10
+ word2: { script: "voc", definition: "voice", audioFile: null }
11
+ },
12
+ {
13
+ pairId: "ro_l2_002",
14
+ level: 2,
15
+ tags: ["level_2", "consonant"],
16
+ contrastFeature: "consonant",
17
+ contrastDescription: "/s/ vs /z/",
18
+ pronunciationTipId: "consonant_s_z",
19
+ word1: { script: "sos", definition: "arrives", audioFile: null },
20
+ word2: { script: "zos", definition: "zos (dialectal)", audioFile: null }
21
+ },
22
+ {
23
+ pairId: "ro_l2_003",
24
+ level: 2,
25
+ tags: ["level_2", "consonant"],
26
+ contrastFeature: "consonant",
27
+ contrastDescription: "/ʃ/ vs /ʒ/",
28
+ pronunciationTipId: "consonant_s_zh",
29
+ word1: { script: "șarpe", definition: "snake", audioFile: null },
30
+ word2: { script: "jap", definition: "jap (dialectal)", audioFile: null }
31
+ }
32
+ ];
33
+ export {
34
+ n as default,
35
+ n as level2Pairs
36
+ };
@@ -0,0 +1,4 @@
1
+ import { MinimalPairsMinimalPair } from '../../../../../content-shared/src';
2
+ export declare const level3Pairs: MinimalPairsMinimalPair[];
3
+ export default level3Pairs;
4
+ //# sourceMappingURL=level-3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"level-3.d.ts","sourceRoot":"","sources":["../../src/data/level-3.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAEhF,eAAO,MAAM,WAAW,EAAE,uBAAuB,EA+BhD,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -0,0 +1,36 @@
1
+ const i = [
2
+ {
3
+ pairId: "ro_l3_001",
4
+ level: 3,
5
+ tags: ["level_3", "consonant"],
6
+ contrastFeature: "consonant",
7
+ contrastDescription: "/ʃ/ vs /s/",
8
+ pronunciationTipId: "consonant_s_ș",
9
+ word1: { script: "șop", definition: "hole", audioFile: null },
10
+ word2: { script: "sop", definition: "sop (dialectal)", audioFile: null }
11
+ },
12
+ {
13
+ pairId: "ro_l3_002",
14
+ level: 3,
15
+ tags: ["level_3", "consonant"],
16
+ contrastFeature: "consonant",
17
+ contrastDescription: "/tʃ/ vs /ts/",
18
+ pronunciationTipId: "consonant_t_ț",
19
+ word1: { script: "țop", definition: "țop (dialectal)", audioFile: null },
20
+ word2: { script: "tsop", definition: "tsop (dialectal)", audioFile: null }
21
+ },
22
+ {
23
+ pairId: "ro_l3_003",
24
+ level: 3,
25
+ tags: ["level_3", "consonant"],
26
+ contrastFeature: "consonant",
27
+ contrastDescription: "/tʃ/ vs /dʒ/",
28
+ pronunciationTipId: "consonant_ci_gi",
29
+ word1: { script: "ciup", definition: "ciup (dialectal)", audioFile: null },
30
+ word2: { script: "giup", definition: "giup (dialectal)", audioFile: null }
31
+ }
32
+ ];
33
+ export {
34
+ i as default,
35
+ i as level3Pairs
36
+ };
@@ -0,0 +1,4 @@
1
+ import { MinimalPairsMinimalPair } from '../../../../../content-shared/src';
2
+ export declare const level4Pairs: MinimalPairsMinimalPair[];
3
+ export default level4Pairs;
4
+ //# sourceMappingURL=level-4.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"level-4.d.ts","sourceRoot":"","sources":["../../src/data/level-4.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAEhF,eAAO,MAAM,WAAW,EAAE,uBAAuB,EA+BhD,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -0,0 +1,36 @@
1
+ const i = [
2
+ {
3
+ pairId: "ro_l4_001",
4
+ level: 4,
5
+ tags: ["level_4", "consonant"],
6
+ contrastFeature: "consonant",
7
+ contrastDescription: "/tʃ/ vs /k/",
8
+ pronunciationTipId: "consonant_ci_c",
9
+ word1: { script: "ciup", definition: "ciup (dialectal)", audioFile: null },
10
+ word2: { script: "ciup", definition: "ciup (dialectal)", audioFile: null }
11
+ },
12
+ {
13
+ pairId: "ro_l4_002",
14
+ level: 4,
15
+ tags: ["level_4", "consonant"],
16
+ contrastFeature: "consonant",
17
+ contrastDescription: "/dʒ/ vs /g/",
18
+ pronunciationTipId: "consonant_gi_g",
19
+ word1: { script: "giul", definition: "giul (dialectal)", audioFile: null },
20
+ word2: { script: "gul", definition: "gul (dialectal)", audioFile: null }
21
+ },
22
+ {
23
+ pairId: "ro_l4_003",
24
+ level: 4,
25
+ tags: ["level_4", "consonant"],
26
+ contrastFeature: "consonant",
27
+ contrastDescription: "/ʃ/ vs /ʂ/",
28
+ pronunciationTipId: "consonant_s_ș_retroflex",
29
+ word1: { script: "șarpe", definition: "snake", audioFile: null },
30
+ word2: { script: "șarpe", definition: "snake (retroflex)", audioFile: null }
31
+ }
32
+ ];
33
+ export {
34
+ i as default,
35
+ i as level4Pairs
36
+ };
@@ -0,0 +1,4 @@
1
+ import { MinimalPairsMinimalPair } from '../../../../../content-shared/src';
2
+ export declare const level5Pairs: MinimalPairsMinimalPair[];
3
+ export default level5Pairs;
4
+ //# sourceMappingURL=level-5.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"level-5.d.ts","sourceRoot":"","sources":["../../src/data/level-5.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAEhF,eAAO,MAAM,WAAW,EAAE,uBAAuB,EA+BhD,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -0,0 +1,36 @@
1
+ const e = [
2
+ {
3
+ pairId: "ro_l5_001",
4
+ level: 5,
5
+ tags: ["level_5", "vowel"],
6
+ contrastFeature: "vowel",
7
+ contrastDescription: "/ɛ/ vs /e/ (closed)",
8
+ pronunciationTipId: "vowel_e_open_closed",
9
+ word1: { script: "peret", definition: "wall", audioFile: null },
10
+ word2: { script: "pereț", definition: "walls", audioFile: null }
11
+ },
12
+ {
13
+ pairId: "ro_l5_002",
14
+ level: 5,
15
+ tags: ["level_5", "vowel"],
16
+ contrastFeature: "vowel",
17
+ contrastDescription: "/ɔ/ vs /o/ (closed)",
18
+ pronunciationTipId: "vowel_o_open_closed",
19
+ word1: { script: "poartă", definition: "door", audioFile: null },
20
+ word2: { script: "poartă", definition: "door (closed)", audioFile: null }
21
+ },
22
+ {
23
+ pairId: "ro_l5_003",
24
+ level: 5,
25
+ tags: ["level_5", "stress"],
26
+ contrastFeature: "stress",
27
+ contrastDescription: "Penultimate vs antepenultimate stress",
28
+ word1: { script: "căsuță", definition: "little house", audioFile: null },
29
+ word2: { script: "căsuță", definition: "little house (antepenultimate)", audioFile: null },
30
+ notes: "Romanian stress is usually on the penultimate syllable."
31
+ }
32
+ ];
33
+ export {
34
+ e as default,
35
+ e as level5Pairs
36
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAEjF,eAAO,MAAM,gBAAgB,EAAE,wBA2R9B,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAoBjF,eAAO,MAAM,gBAAgB,EAAE,wBAI9B,CAAC;AACF,eAAe,gBAAgB,CAAC"}
package/dist/data.js CHANGED
@@ -1,262 +1,24 @@
1
- const i = {
2
- levels: [
3
- { level: 0, title: "Getting Started", description: "Practice with clearly different sounds" },
4
- { level: 1, title: "Vowels", description: "Short and long vowel contrasts" },
5
- { level: 2, title: "Consonant Pairs", description: "Voicing and place contrasts" },
6
- { level: 3, title: "Sibilant Sounds", description: "Ș/Ț vs S/Z contrasts" },
7
- { level: 4, title: "Palatal Sounds", description: "Palatal vs dental/alveolar contrasts" },
8
- { level: 5, title: "Expert Level", description: "The most challenging distinctions" }
9
- ],
10
- minimalPairs: [
11
- // Level 0: Clear contrasts
12
- {
13
- pairId: "ro_l0_001",
14
- level: 0,
15
- tags: ["level_0"],
16
- contrastFeature: "consonant",
17
- contrastDescription: "/p/ vs /b/",
18
- word1: { script: "pat", definition: "pat", audioFile: null },
19
- word2: { script: "bat", definition: "bat (flying mammal)", audioFile: null }
20
- },
21
- {
22
- pairId: "ro_l0_002",
23
- level: 0,
24
- tags: ["level_0"],
25
- contrastFeature: "consonant",
26
- contrastDescription: "/t/ vs /d/",
27
- word1: { script: "tat", definition: "tat (onomatopoeia)", audioFile: null },
28
- word2: { script: "dat", definition: "given", audioFile: null }
29
- },
30
- {
31
- pairId: "ro_l0_003",
32
- level: 0,
33
- tags: ["level_0"],
34
- contrastFeature: "consonant",
35
- contrastDescription: "/k/ vs /g/",
36
- word1: { script: "casa", definition: "house", audioFile: null },
37
- word2: { script: "gasa", definition: "gauze", audioFile: null }
38
- },
39
- // Level 1: Vowels - short vs long
40
- {
41
- pairId: "ro_l1_001",
42
- level: 1,
43
- tags: ["level_1", "vowel"],
44
- contrastFeature: "vowel",
45
- contrastDescription: "/a/ vs /aː/",
46
- pronunciationTipId: "vowel_a_short_long",
47
- word1: { script: "casa", definition: "house", audioFile: null },
48
- word2: { script: "casa", definition: "house (long)", audioFile: null }
49
- },
50
- {
51
- pairId: "ro_l1_002",
52
- level: 1,
53
- tags: ["level_1", "vowel"],
54
- contrastFeature: "vowel",
55
- contrastDescription: "/ɛ/ vs /e/",
56
- pronunciationTipId: "vowel_e_open_closed",
57
- word1: { script: "pescue", definition: "peach", audioFile: null },
58
- word2: { script: "pescue", definition: "peach (closed)", audioFile: null }
59
- },
60
- {
61
- pairId: "ro_l1_003",
62
- level: 1,
63
- tags: ["level_1", "vowel"],
64
- contrastFeature: "vowel",
65
- contrastDescription: "/i/ vs /iː/",
66
- pronunciationTipId: "vowel_i_short_long",
67
- word1: { script: "iartă", definition: "yesterday", audioFile: null },
68
- word2: { script: "iartă", definition: "yesterday (long)", audioFile: null }
69
- },
70
- {
71
- pairId: "ro_l1_004",
72
- level: 1,
73
- tags: ["level_1", "vowel"],
74
- contrastFeature: "vowel",
75
- contrastDescription: "/ɔ/ vs /o/",
76
- pronunciationTipId: "vowel_o_open_closed_1",
77
- word1: { script: "borș", definition: "sour soup", audioFile: null },
78
- word2: { script: "borș", definition: "sour soup (closed)", audioFile: null }
79
- },
80
- {
81
- pairId: "ro_l1_005",
82
- level: 1,
83
- tags: ["level_1", "vowel"],
84
- contrastFeature: "vowel",
85
- contrastDescription: "/u/ vs /uː/",
86
- pronunciationTipId: "vowel_u_short_long",
87
- word1: { script: "puta", definition: "prostitute", audioFile: null },
88
- word2: { script: "puta", definition: "prostitute (long)", audioFile: null }
89
- },
90
- // Level 1: Nasal vowels (ă, â/î)
91
- {
92
- pairId: "ro_l1_006",
93
- level: 1,
94
- tags: ["level_1", "vowel", "nasal"],
95
- contrastFeature: "vowel",
96
- contrastDescription: "/ə/ (ă) vs /a/",
97
- pronunciationTipId: "vowel_a_breve_a",
98
- word1: { script: "cărămidă", definition: "brick", audioFile: null },
99
- word2: { script: "carămidă", definition: "brick (dialectal)", audioFile: null }
100
- },
101
- {
102
- pairId: "ro_l1_007",
103
- level: 1,
104
- tags: ["level_1", "vowel", "nasal"],
105
- contrastFeature: "vowel",
106
- contrastDescription: "/ə/ (â/î) vs /i/",
107
- pronunciationTipId: "vowel_a_circumflex_i",
108
- word1: { script: "râz", definition: "laughter", audioFile: null },
109
- word2: { script: "riz", definition: "rice", audioFile: null }
110
- },
111
- // Level 2: Consonant pairs - voicing
112
- {
113
- pairId: "ro_l2_001",
114
- level: 2,
115
- tags: ["level_2", "consonant"],
116
- contrastFeature: "consonant",
117
- contrastDescription: "/f/ vs /v/",
118
- pronunciationTipId: "consonant_f_v",
119
- word1: { script: "foc", definition: "fire", audioFile: null },
120
- word2: { script: "voc", definition: "voice", audioFile: null }
121
- },
122
- {
123
- pairId: "ro_l2_002",
124
- level: 2,
125
- tags: ["level_2", "consonant"],
126
- contrastFeature: "consonant",
127
- contrastDescription: "/s/ vs /z/",
128
- pronunciationTipId: "consonant_s_z",
129
- word1: { script: "sos", definition: "arrives", audioFile: null },
130
- word2: { script: "zos", definition: "zos (dialectal)", audioFile: null }
131
- },
132
- {
133
- pairId: "ro_l2_003",
134
- level: 2,
135
- tags: ["level_2", "consonant"],
136
- contrastFeature: "consonant",
137
- contrastDescription: "/ʃ/ vs /ʒ/",
138
- pronunciationTipId: "consonant_s_zh",
139
- word1: { script: "șarpe", definition: "snake", audioFile: null },
140
- word2: { script: "jap", definition: "jap (dialectal)", audioFile: null }
141
- },
142
- // Level 3: Sibilant sounds (ș, ț)
143
- {
144
- pairId: "ro_l3_001",
145
- level: 3,
146
- tags: ["level_3", "consonant"],
147
- contrastFeature: "consonant",
148
- contrastDescription: "/ʃ/ vs /s/",
149
- pronunciationTipId: "consonant_s_ș",
150
- word1: { script: "șop", definition: "hole", audioFile: null },
151
- word2: { script: "sop", definition: "sop (dialectal)", audioFile: null }
152
- },
153
- {
154
- pairId: "ro_l3_002",
155
- level: 3,
156
- tags: ["level_3", "consonant"],
157
- contrastFeature: "consonant",
158
- contrastDescription: "/tʃ/ vs /ts/",
159
- pronunciationTipId: "consonant_t_ț",
160
- word1: { script: "țop", definition: "țop (dialectal)", audioFile: null },
161
- word2: { script: "tsop", definition: "tsop (dialectal)", audioFile: null }
162
- },
163
- // Level 3: Affricates
164
- {
165
- pairId: "ro_l3_003",
166
- level: 3,
167
- tags: ["level_3", "consonant"],
168
- contrastFeature: "consonant",
169
- contrastDescription: "/tʃ/ vs /dʒ/",
170
- pronunciationTipId: "consonant_ci_gi",
171
- word1: { script: "ciup", definition: "ciup (dialectal)", audioFile: null },
172
- word2: { script: "giup", definition: "giup (dialectal)", audioFile: null }
173
- },
174
- // Level 4: Palatal sounds
175
- {
176
- pairId: "ro_l4_001",
177
- level: 4,
178
- tags: ["level_4", "consonant"],
179
- contrastFeature: "consonant",
180
- contrastDescription: "/tʃ/ vs /k/",
181
- pronunciationTipId: "consonant_ci_c",
182
- word1: { script: "ciup", definition: "ciup (dialectal)", audioFile: null },
183
- word2: { script: "ciup", definition: "ciup (dialectal)", audioFile: null }
184
- },
185
- {
186
- pairId: "ro_l4_002",
187
- level: 4,
188
- tags: ["level_4", "consonant"],
189
- contrastFeature: "consonant",
190
- contrastDescription: "/dʒ/ vs /g/",
191
- pronunciationTipId: "consonant_gi_g",
192
- word1: { script: "giul", definition: "giul (dialectal)", audioFile: null },
193
- word2: { script: "gul", definition: "gul (dialectal)", audioFile: null }
194
- },
195
- // Level 4: Retroflex consonants
196
- {
197
- pairId: "ro_l4_003",
198
- level: 4,
199
- tags: ["level_4", "consonant"],
200
- contrastFeature: "consonant",
201
- contrastDescription: "/ʃ/ vs /ʂ/",
202
- pronunciationTipId: "consonant_s_ș_retroflex",
203
- word1: { script: "șarpe", definition: "snake", audioFile: null },
204
- word2: { script: "șarpe", definition: "snake (retroflex)", audioFile: null }
205
- },
206
- // Level 5: Expert - vowel quality
207
- {
208
- pairId: "ro_l5_001",
209
- level: 5,
210
- tags: ["level_5", "vowel"],
211
- contrastFeature: "vowel",
212
- contrastDescription: "/ɛ/ vs /e/ (closed)",
213
- pronunciationTipId: "vowel_e_open_closed",
214
- word1: { script: "peret", definition: "wall", audioFile: null },
215
- word2: { script: "pereț", definition: "walls", audioFile: null }
216
- },
217
- {
218
- pairId: "ro_l5_002",
219
- level: 5,
220
- tags: ["level_5", "vowel"],
221
- contrastFeature: "vowel",
222
- contrastDescription: "/ɔ/ vs /o/ (closed)",
223
- pronunciationTipId: "vowel_o_open_closed",
224
- word1: { script: "poartă", definition: "door", audioFile: null },
225
- word2: { script: "poartă", definition: "door (closed)", audioFile: null }
226
- },
227
- {
228
- pairId: "ro_l5_003",
229
- level: 5,
230
- tags: ["level_5", "stress"],
231
- contrastFeature: "stress",
232
- contrastDescription: "Penultimate vs antepenultimate stress",
233
- word1: { script: "căsuță", definition: "little house", audioFile: null },
234
- word2: { script: "căsuță", definition: "little house (antepenultimate)", audioFile: null },
235
- notes: "Romanian stress is usually on the penultimate syllable."
236
- }
237
- ],
238
- pronunciationTips: {
239
- vowel_a_short_long: "Short /a/ is quick and relaxed. Long /aː/ is held longer with the same position.",
240
- vowel_e_open_closed: "/ɛ/ (open) sounds like 'bed'. /e/ (closed) sounds like 'bay'. The difference is subtle.",
241
- vowel_i_short_long: "/i/ is short and lax. /iː/ is long and tense. The distinction is subtle.",
242
- vowel_o_open_closed_1: "/ɔ/ (open) has more rounded lips. /o/ (closed) is more closed.",
243
- vowel_u_short_long: "/u/ is short with rounded lips. /uː/ is long with the same rounded position.",
244
- vowel_a_breve_a: "/ə/ (ă) is central - tongue relaxed. /a/ is open - tongue low.",
245
- vowel_a_circumflex_i: "/ə/ (â/î) is central. /i/ is close front - tongue high and front.",
246
- consonant_f_v: "/f/ is voiceless - no throat vibration. /v/ is voiced - feel your throat vibrate.",
247
- consonant_s_z: "/s/ is voiceless. /z/ is voiced. The contrast is clear.",
248
- consonant_s_zh: "/ʃ/ (ș) is like 'sh' in 'ship'. /ʒ/ (j) is like 's' in 'measure'.",
249
- consonant_s_ș: "/ʃ/ (ș) is like 'sh' in 'ship'. /s/ (s) is hissing.",
250
- consonant_t_ț: "/tʃ/ (ț) is like 'ch' in 'chair'. /ts/ is like 'zz' in 'pizza'.",
251
- consonant_ci_gi: "/tʃ/ (ci) is like 'ch' in 'chair'. /dʒ/ (gi) is like 'j' in 'jump'.",
252
- consonant_ci_c: "/tʃ/ (ci) is palato-alveolar. /k/ (ci) is velar - tongue back.",
253
- consonant_gi_g: "/dʒ/ (gi) is palato-alveolar. /g/ (g) is velar - tongue back.",
254
- consonant_s_ș_retroflex: "/ʃ/ (ș) is postalveolar. /ʂ/ is retroflex - tongue curled back.",
255
- vowel_e_open_closed_2: "Open /ɛ/ (peret) is wider. Closed /e/ (pereț) is tighter.",
256
- vowel_o_open_closed_2: "Open /ɔ/ (poartă) is more open. Closed /o/ is more rounded."
257
- }
1
+ import r from "./data/level-0.js";
2
+ import i from "./data/level-1.js";
3
+ import o from "./data/level-2.js";
4
+ import m from "./data/level-3.js";
5
+ import l from "./data/level-4.js";
6
+ import e from "./data/level-5.js";
7
+ import a from "./levels.js";
8
+ import t from "./pronunciationTips.js";
9
+ const s = [
10
+ ...r,
11
+ ...i,
12
+ ...o,
13
+ ...m,
14
+ ...l,
15
+ ...e
16
+ ], x = {
17
+ levels: a,
18
+ minimalPairs: s,
19
+ pronunciationTips: t
258
20
  };
259
21
  export {
260
- i as default,
261
- i as minimalPairsData
22
+ x as default,
23
+ x as minimalPairsData
262
24
  };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,11 @@
1
1
  export { minimalPairsData as default } from './data';
2
- export { minimalPairsData } from './data';
2
+ export { level0Pairs } from './data/level-0';
3
+ export { level1Pairs } from './data/level-1';
4
+ export { level2Pairs } from './data/level-2';
5
+ export { level3Pairs } from './data/level-3';
6
+ export { level4Pairs } from './data/level-4';
7
+ export { level5Pairs } from './data/level-5';
8
+ export { levels } from './levels';
9
+ export { pronunciationTips } from './pronunciationTips';
3
10
  export type { MinimalPairsLanguageData, MinimalPairsLevelInfo, MinimalPairsMinimalPair, MinimalPairsPronunciationTipsMap, MinimalPairsRubySegment, MinimalPairsWordInfo, } from '../../../../content-shared/src';
4
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,IAAI,OAAO,EAAE,MAAM,QAAQ,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAG1C,YAAY,EACV,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,EACvB,gCAAgC,EAChC,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,kCAAkC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,IAAI,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGrD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,YAAY,EACV,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,EACvB,gCAAgC,EAChC,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,kCAAkC,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,20 @@
1
- import { default as e, default as f } from "./data.js";
1
+ import { default as a } from "./data.js";
2
+ import { default as o } from "./data/level-0.js";
3
+ import { default as f } from "./data/level-1.js";
4
+ import { default as p } from "./data/level-2.js";
5
+ import { default as d } from "./data/level-3.js";
6
+ import { default as m } from "./data/level-4.js";
7
+ import { default as v } from "./data/level-5.js";
8
+ import { default as n } from "./levels.js";
9
+ import { default as T } from "./pronunciationTips.js";
2
10
  export {
3
- e as default,
4
- f as minimalPairsData
11
+ a as default,
12
+ o as level0Pairs,
13
+ f as level1Pairs,
14
+ p as level2Pairs,
15
+ d as level3Pairs,
16
+ m as level4Pairs,
17
+ v as level5Pairs,
18
+ n as levels,
19
+ T as pronunciationTips
5
20
  };
@@ -0,0 +1,4 @@
1
+ import { MinimalPairsLevelInfo } from '../../../../content-shared/src';
2
+ export declare const levels: MinimalPairsLevelInfo[];
3
+ export default levels;
4
+ //# sourceMappingURL=levels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"levels.d.ts","sourceRoot":"","sources":["../src/levels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAE9E,eAAO,MAAM,MAAM,EAAE,qBAAqB,EAOzC,CAAC;AAEF,eAAe,MAAM,CAAC"}
package/dist/levels.js ADDED
@@ -0,0 +1,12 @@
1
+ const t = [
2
+ { level: 0, title: "Getting Started", description: "Practice with clearly different sounds" },
3
+ { level: 1, title: "Vowels", description: "Short and long vowel contrasts" },
4
+ { level: 2, title: "Consonant Pairs", description: "Voicing and place contrasts" },
5
+ { level: 3, title: "Sibilant Sounds", description: "Ș/Ț vs S/Z contrasts" },
6
+ { level: 4, title: "Palatal Sounds", description: "Palatal vs dental/alveolar contrasts" },
7
+ { level: 5, title: "Expert Level", description: "The most challenging distinctions" }
8
+ ];
9
+ export {
10
+ t as default,
11
+ t as levels
12
+ };
@@ -0,0 +1,4 @@
1
+ import { MinimalPairsPronunciationTipsMap } from '../../../../content-shared/src';
2
+ export declare const pronunciationTips: MinimalPairsPronunciationTipsMap;
3
+ export default pronunciationTips;
4
+ //# sourceMappingURL=pronunciationTips.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pronunciationTips.d.ts","sourceRoot":"","sources":["../src/pronunciationTips.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,kCAAkC,CAAC;AAEzF,eAAO,MAAM,iBAAiB,EAAE,gCAqC/B,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,24 @@
1
+ const e = {
2
+ vowel_a_short_long: "Short /a/ is quick and relaxed. Long /aː/ is held longer with the same position.",
3
+ vowel_e_open_closed: "/ɛ/ (open) sounds like 'bed'. /e/ (closed) sounds like 'bay'. The difference is subtle.",
4
+ vowel_i_short_long: "/i/ is short and lax. /iː/ is long and tense. The distinction is subtle.",
5
+ vowel_o_open_closed_1: "/ɔ/ (open) has more rounded lips. /o/ (closed) is more closed.",
6
+ vowel_u_short_long: "/u/ is short with rounded lips. /uː/ is long with the same rounded position.",
7
+ vowel_a_breve_a: "/ə/ (ă) is central - tongue relaxed. /a/ is open - tongue low.",
8
+ vowel_a_circumflex_i: "/ə/ (â/î) is central. /i/ is close front - tongue high and front.",
9
+ consonant_f_v: "/f/ is voiceless - no throat vibration. /v/ is voiced - feel your throat vibrate.",
10
+ consonant_s_z: "/s/ is voiceless. /z/ is voiced. The contrast is clear.",
11
+ consonant_s_zh: "/ʃ/ (ș) is like 'sh' in 'ship'. /ʒ/ (j) is like 's' in 'measure'.",
12
+ consonant_s_ș: "/ʃ/ (ș) is like 'sh' in 'ship'. /s/ (s) is hissing.",
13
+ consonant_t_ț: "/tʃ/ (ț) is like 'ch' in 'chair'. /ts/ is like 'zz' in 'pizza'.",
14
+ consonant_ci_gi: "/tʃ/ (ci) is like 'ch' in 'chair'. /dʒ/ (gi) is like 'j' in 'jump'.",
15
+ consonant_ci_c: "/tʃ/ (ci) is palato-alveolar. /k/ (ci) is velar - tongue back.",
16
+ consonant_gi_g: "/dʒ/ (gi) is palato-alveolar. /g/ (g) is velar - tongue back.",
17
+ consonant_s_ș_retroflex: "/ʃ/ (ș) is postalveolar. /ʂ/ is retroflex - tongue curled back.",
18
+ vowel_e_open_closed_2: "Open /ɛ/ (peret) is wider. Closed /e/ (pereț) is tighter.",
19
+ vowel_o_open_closed_2: "Open /ɔ/ (poartă) is more open. Closed /o/ is more rounded."
20
+ };
21
+ export {
22
+ e as default,
23
+ e as pronunciationTips
24
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@polyglot-bundles/ro-minimal-pairs",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -12,13 +12,45 @@
12
12
  "./data": {
13
13
  "types": "./dist/data.d.ts",
14
14
  "import": "./dist/data.js"
15
+ },
16
+ "./data/level-0": {
17
+ "types": "./dist/data/level-0.d.ts",
18
+ "import": "./dist/data/level-0.js"
19
+ },
20
+ "./data/level-1": {
21
+ "types": "./dist/data/level-1.d.ts",
22
+ "import": "./dist/data/level-1.js"
23
+ },
24
+ "./data/level-2": {
25
+ "types": "./dist/data/level-2.d.ts",
26
+ "import": "./dist/data/level-2.js"
27
+ },
28
+ "./data/level-3": {
29
+ "types": "./dist/data/level-3.d.ts",
30
+ "import": "./dist/data/level-3.js"
31
+ },
32
+ "./data/level-4": {
33
+ "types": "./dist/data/level-4.d.ts",
34
+ "import": "./dist/data/level-4.js"
35
+ },
36
+ "./data/level-5": {
37
+ "types": "./dist/data/level-5.d.ts",
38
+ "import": "./dist/data/level-5.js"
39
+ },
40
+ "./levels": {
41
+ "types": "./dist/levels.d.ts",
42
+ "import": "./dist/levels.js"
43
+ },
44
+ "./pronunciationTips": {
45
+ "types": "./dist/pronunciationTips.d.ts",
46
+ "import": "./dist/pronunciationTips.js"
15
47
  }
16
48
  },
17
49
  "files": [
18
50
  "dist"
19
51
  ],
20
52
  "dependencies": {
21
- "@polyglot-bundles/content-shared": "0.3.0"
53
+ "@polyglot-bundles/content-shared": "0.3.2"
22
54
  },
23
55
  "devDependencies": {
24
56
  "vite": "^5.4.0",