@polyglot-bundles/fr-syllabi 0.3.5 → 0.3.6
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/package.json +2 -2
- package/dist/basics-DZk3whBf.js +0 -55
- package/dist/basics-DZk3whBf.js.map +0 -1
- package/dist/index.d.ts +0 -80
- package/dist/index.js +0 -74
- package/dist/index.js.map +0 -1
- package/dist/lesson-01-SLn6amdW.js +0 -6
- package/dist/lesson-01-SLn6amdW.js.map +0 -1
- package/dist/lesson-02-Z-7kZjDB.js +0 -6
- package/dist/lesson-02-Z-7kZjDB.js.map +0 -1
- package/dist/lesson-03-D974bcKE.js +0 -6
- package/dist/lesson-03-D974bcKE.js.map +0 -1
- package/dist/lesson-04-auPnvqWT.js +0 -6
- package/dist/lesson-04-auPnvqWT.js.map +0 -1
- package/dist/lesson-05-1m0VxG4Q.js +0 -6
- package/dist/lesson-05-1m0VxG4Q.js.map +0 -1
- package/dist/lesson-06-BfQYo24W.js +0 -6
- package/dist/lesson-06-BfQYo24W.js.map +0 -1
- package/dist/lesson-07-BATIJhTw.js +0 -6
- package/dist/lesson-07-BATIJhTw.js.map +0 -1
- package/dist/lesson-08-BzFXM_-o.js +0 -6
- package/dist/lesson-08-BzFXM_-o.js.map +0 -1
- package/dist/lesson-09-dahFw-GS.js +0 -6
- package/dist/lesson-09-dahFw-GS.js.map +0 -1
- package/dist/lesson-10-Ddoeyppc.js +0 -6
- package/dist/lesson-10-Ddoeyppc.js.map +0 -1
- package/dist/syllabi/basics/index.d.ts +0 -7
- package/dist/syllabi/basics/index.js +0 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@polyglot-bundles/fr-syllabi",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.6",
|
|
4
4
|
"description": "French syllabi - French basics vocabulary syllabus",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"tsx": "^4.7.0",
|
|
25
25
|
"vite": "^8.0.8",
|
|
26
26
|
"vite-plugin-dts": "^4.5.4",
|
|
27
|
-
"@polyglot-bundles/content-shared": "0.5.
|
|
27
|
+
"@polyglot-bundles/content-shared": "0.5.6",
|
|
28
28
|
"@polyglot-bundles/lang-tooling": "0.0.0"
|
|
29
29
|
},
|
|
30
30
|
"peerDependencies": {
|
package/dist/basics-DZk3whBf.js
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
//#region src/shared.ts
|
|
2
|
-
function e(e, t) {
|
|
3
|
-
return {
|
|
4
|
-
config: e,
|
|
5
|
-
async loadLesson(n) {
|
|
6
|
-
if (n < 1 || n > e.lessonCount) throw Error(`Lesson ${n} not found. Valid range: 1-${e.lessonCount}`);
|
|
7
|
-
return {
|
|
8
|
-
number: n,
|
|
9
|
-
rawContent: (await t(n)).default
|
|
10
|
-
};
|
|
11
|
-
},
|
|
12
|
-
async loadAllLessons() {
|
|
13
|
-
let t = [];
|
|
14
|
-
for (let n = 1; n <= e.lessonCount; n++) t.push(await this.loadLesson(n));
|
|
15
|
-
return t;
|
|
16
|
-
},
|
|
17
|
-
getAvailableLessons() {
|
|
18
|
-
return Array.from({ length: e.lessonCount }, (e, t) => t + 1);
|
|
19
|
-
}
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
//#endregion
|
|
23
|
-
//#region src/syllabi/basics/index.ts
|
|
24
|
-
var t = {
|
|
25
|
-
id: "french-basics-vocabulary",
|
|
26
|
-
title: "French Basics - Essential Vocabulary",
|
|
27
|
-
description: "Learn essential French vocabulary - greetings, numbers, colors, family, animals, and more",
|
|
28
|
-
language: "fr",
|
|
29
|
-
locale: "fr-FR",
|
|
30
|
-
lessonCount: 10,
|
|
31
|
-
difficulty: "beginner",
|
|
32
|
-
cefrLevel: "A1",
|
|
33
|
-
icon: "vocabulary",
|
|
34
|
-
version: "0.1.0"
|
|
35
|
-
};
|
|
36
|
-
async function n(e) {
|
|
37
|
-
switch (e) {
|
|
38
|
-
case 1: return import("./lesson-01-SLn6amdW.js");
|
|
39
|
-
case 2: return import("./lesson-02-Z-7kZjDB.js");
|
|
40
|
-
case 3: return import("./lesson-03-D974bcKE.js");
|
|
41
|
-
case 4: return import("./lesson-04-auPnvqWT.js");
|
|
42
|
-
case 5: return import("./lesson-05-1m0VxG4Q.js");
|
|
43
|
-
case 6: return import("./lesson-06-BfQYo24W.js");
|
|
44
|
-
case 7: return import("./lesson-07-BATIJhTw.js");
|
|
45
|
-
case 8: return import("./lesson-08-BzFXM_-o.js");
|
|
46
|
-
case 9: return import("./lesson-09-dahFw-GS.js");
|
|
47
|
-
case 10: return import("./lesson-10-Ddoeyppc.js");
|
|
48
|
-
default: throw Error(`Lesson ${e} not found`);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
var r = e(t, n), i = r.loadLesson.bind(r), a = r.loadAllLessons.bind(r), o = r.getAvailableLessons.bind(r);
|
|
52
|
-
//#endregion
|
|
53
|
-
export { r as a, i, o as n, a as r, t };
|
|
54
|
-
|
|
55
|
-
//# sourceMappingURL=basics-DZk3whBf.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"basics-DZk3whBf.js","names":[],"sources":["../src/shared.ts","../src/syllabi/basics/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., \"french-basics\") */\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., \"fr-FR\") */\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 * French Basics Vocabulary Syllabus\n *\n * This module exports the French Basics vocabulary syllabus in syllst format.\n * The syllabus is defined in MDX files (meta.mdx + lessons/*.mdx) and can be\n * processed using @syllst/processor.\n *\n * Syllabus Structure:\n * - meta.mdx: Root syllabus definition with course overview\n * - lessons/lesson-01.mdx: Greetings & Basics\n * - lessons/lesson-02.mdx: Numbers\n * - lessons/lesson-03.mdx: Colors\n * - lessons/lesson-04.mdx: Family & People\n * - lessons/lesson-05.mdx: Animals\n * - lessons/lesson-06.mdx: Body Parts\n * - lessons/lesson-07.mdx: Food & Drink\n * - lessons/lesson-08.mdx: Places\n * - lessons/lesson-09.mdx: Common Verbs\n * - lessons/lesson-10.mdx: Time & Weather\n *\n * Total Vocabulary Items: ~100 essential words\n */\n\nimport { createContentLoader, type SyllabusConfig, type ContentLoader } from '../../shared.js';\n\nexport const config: SyllabusConfig = {\n id: \"french-basics-vocabulary\",\n title: \"French Basics - Essential Vocabulary\",\n description: \"Learn essential French vocabulary - greetings, numbers, colors, family, animals, and more\",\n language: 'fr',\n locale: 'fr-FR',\n lessonCount: 10,\n difficulty: 'beginner',\n cefrLevel: 'A1',\n icon: 'vocabulary',\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"],"mappings":";AAiFA,SAAgB,EACd,GACA,GACe;AACf,QAAO;EACL;EAEA,MAAM,WAAW,GAA6C;AAC5D,OAAI,IAAe,KAAK,IAAe,EAAO,YAC5C,OAAU,MAAM,UAAU,EAAa,6BAA6B,EAAO,cAAc;AAG3F,UAAO;IACL,QAAQ;IACR,aAHa,MAAM,EAAc,EAAa,EAG3B;IACpB;;EAGH,MAAM,iBAA0C;GAC9C,IAAM,IAA0B,EAAE;AAClC,QAAK,IAAI,IAAI,GAAG,KAAK,EAAO,aAAa,IACvC,GAAQ,KAAK,MAAM,KAAK,WAAW,EAAE,CAAC;AAExC,UAAO;;EAGT,sBAAgC;AAC9B,UAAO,MAAM,KAAK,EAAE,QAAQ,EAAO,aAAa,GAAG,GAAG,MAAM,IAAI,EAAE;;EAErE;;;;ACrFH,IAAa,IAAyB;CACpC,IAAI;CACJ,OAAO;CACP,aAAa;CACb,UAAU;CACV,QAAQ;CACR,aAAa;CACb,YAAY;CACZ,WAAW;CACX,MAAM;CACN,SAAS;CACV;AAED,eAAe,EAAc,GAAsB;AACjD,SAAQ,GAAR;EACE,KAAK,EAAG,QAAO,OAAO;EACtB,KAAK,EAAG,QAAO,OAAO;EACtB,KAAK,EAAG,QAAO,OAAO;EACtB,KAAK,EAAG,QAAO,OAAO;EACtB,KAAK,EAAG,QAAO,OAAO;EACtB,KAAK,EAAG,QAAO,OAAO;EACtB,KAAK,EAAG,QAAO,OAAO;EACtB,KAAK,EAAG,QAAO,OAAO;EACtB,KAAK,EAAG,QAAO,OAAO;EACtB,KAAK,GAAI,QAAO,OAAO;EACvB,QAAS,OAAU,MAAM,UAAU,EAAa,YAAY;;;AAIhE,IAAa,IAAwB,EAAoB,GAAQ,EAAc,EAClE,IAAa,EAAO,WAAW,KAAK,EAAO,EAC3C,IAAiB,EAAO,eAAe,KAAK,EAAO,EACnD,IAAsB,EAAO,oBAAoB,KAAK,EAAO"}
|
package/dist/index.d.ts
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared types and utilities for SYLLST content
|
|
3
|
-
* (Inlined from @syllst/content-shared to make package self-contained)
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* CEFR language proficiency levels
|
|
7
|
-
*/
|
|
8
|
-
declare type CEFRLevel = 'A1' | 'A2' | 'B1' | 'B2' | 'C1' | 'C2';
|
|
9
|
-
|
|
10
|
-
export declare const config: SyllabusConfig;
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Content loader interface
|
|
14
|
-
*/
|
|
15
|
-
declare interface ContentLoader {
|
|
16
|
-
/** Syllabus configuration */
|
|
17
|
-
config: SyllabusConfig;
|
|
18
|
-
/** Load a single lesson by number */
|
|
19
|
-
loadLesson(lessonNumber: number): Promise<LoadedLesson>;
|
|
20
|
-
/** Load all lessons */
|
|
21
|
-
loadAllLessons(): Promise<LoadedLesson[]>;
|
|
22
|
-
/** Get list of available lesson numbers */
|
|
23
|
-
getAvailableLessons(): number[];
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Difficulty levels
|
|
28
|
-
*/
|
|
29
|
-
declare type Difficulty = 'beginner' | 'intermediate' | 'advanced';
|
|
30
|
-
|
|
31
|
-
export declare const getAvailableLessons: () => number[];
|
|
32
|
-
|
|
33
|
-
export declare const loadAllLessons: () => Promise<LoadedLesson[]>;
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Result of loading a lesson
|
|
37
|
-
*/
|
|
38
|
-
declare interface LoadedLesson {
|
|
39
|
-
/** Lesson number (1-indexed) */
|
|
40
|
-
number: number;
|
|
41
|
-
/** Raw MDX content */
|
|
42
|
-
rawContent: string;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
export declare const loader: ContentLoader;
|
|
46
|
-
|
|
47
|
-
export declare const loadLesson: (lessonNumber: number) => Promise<LoadedLesson>;
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Configuration for a syllabus content package
|
|
51
|
-
*/
|
|
52
|
-
declare interface SyllabusConfig {
|
|
53
|
-
/** Unique syllabus ID (e.g., "french-basics") */
|
|
54
|
-
id: string;
|
|
55
|
-
/** Display title */
|
|
56
|
-
title: string;
|
|
57
|
-
/** Description */
|
|
58
|
-
description: string;
|
|
59
|
-
/** Language code (ISO 639-1) */
|
|
60
|
-
language: string;
|
|
61
|
-
/** Locale code (e.g., "fr-FR") */
|
|
62
|
-
locale: string;
|
|
63
|
-
/** Number of lessons */
|
|
64
|
-
lessonCount: number;
|
|
65
|
-
/** Difficulty level */
|
|
66
|
-
difficulty: Difficulty;
|
|
67
|
-
/** CEFR level */
|
|
68
|
-
cefrLevel: CEFRLevel;
|
|
69
|
-
/** Icon for display */
|
|
70
|
-
icon?: SyllabusIcon;
|
|
71
|
-
/** Package version */
|
|
72
|
-
version: string;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Icon types for syllabi
|
|
77
|
-
*/
|
|
78
|
-
declare type SyllabusIcon = 'alphabet' | 'dialogue' | 'vocabulary' | 'grammar' | 'reading' | 'numbers' | 'food' | 'travel';
|
|
79
|
-
|
|
80
|
-
export { }
|
package/dist/index.js
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { a as e, i as t, n, r, t as i } from "./basics-DZk3whBf.js";
|
|
2
|
-
import { buildLessonFromMDX as a } from "@syllst/processor";
|
|
3
|
-
//#region src/adapters/basics-syllabus-adapter.ts
|
|
4
|
-
async function o(e) {
|
|
5
|
-
let t = (await r()).find((t) => t.number === e);
|
|
6
|
-
if (!t) throw Error(`Lesson ${e} not found`);
|
|
7
|
-
return a(t.rawContent, {
|
|
8
|
-
validate: !0,
|
|
9
|
-
strictValidation: !1
|
|
10
|
-
});
|
|
11
|
-
}
|
|
12
|
-
async function s() {
|
|
13
|
-
let e = [];
|
|
14
|
-
for (let t = 1; t <= 10; t++) {
|
|
15
|
-
let n = await o(t);
|
|
16
|
-
e.push(n);
|
|
17
|
-
}
|
|
18
|
-
return e;
|
|
19
|
-
}
|
|
20
|
-
async function c() {
|
|
21
|
-
let e = await s();
|
|
22
|
-
return {
|
|
23
|
-
type: "syllabusRoot",
|
|
24
|
-
meta: {
|
|
25
|
-
id: i.id,
|
|
26
|
-
title: i.title,
|
|
27
|
-
language: i.language,
|
|
28
|
-
version: "1.0.0",
|
|
29
|
-
source: { title: "Lalia French Basics Syllabus" },
|
|
30
|
-
extractedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
31
|
-
},
|
|
32
|
-
children: e.map((e, t) => ({
|
|
33
|
-
type: "chapter",
|
|
34
|
-
id: `french-basics-chapter-${t + 1}`,
|
|
35
|
-
title: e.title,
|
|
36
|
-
description: e.description,
|
|
37
|
-
order: t + 1,
|
|
38
|
-
difficulty: e.difficulty,
|
|
39
|
-
cefrLevel: e.cefrLevel,
|
|
40
|
-
categories: e.categories,
|
|
41
|
-
children: [e]
|
|
42
|
-
}))
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
function l(e) {
|
|
46
|
-
let t = [];
|
|
47
|
-
for (let n of e.children) n.type === "vocabularySet" && t.push(...n.children);
|
|
48
|
-
return t;
|
|
49
|
-
}
|
|
50
|
-
async function u() {
|
|
51
|
-
return (await s()).flatMap(l);
|
|
52
|
-
}
|
|
53
|
-
async function d() {
|
|
54
|
-
let e = await s(), t = [];
|
|
55
|
-
for (let n of e) {
|
|
56
|
-
let e = l(n);
|
|
57
|
-
for (let r of e) t.push({
|
|
58
|
-
id: r.id,
|
|
59
|
-
word: r.word,
|
|
60
|
-
translation: r.translation || "",
|
|
61
|
-
partOfSpeech: r.partOfSpeech || "unknown",
|
|
62
|
-
gender: void 0,
|
|
63
|
-
lessonNumber: n.order
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
return t;
|
|
67
|
-
}
|
|
68
|
-
async function f() {
|
|
69
|
-
return (await d()).map((e) => `fr:vocab:basics:${e.id}`);
|
|
70
|
-
}
|
|
71
|
-
//#endregion
|
|
72
|
-
export { i as config, l as extractVocabItems, u as getAllFrenchBasicsVocab, n as getAvailableLessons, c as getFrenchBasicsSyllabus, d as getFrenchVocabForProgress, f as getFrenchVocabKubitIds, s as loadAllFrenchBasicsLessons, r as loadAllLessons, o as loadFrenchBasicsLesson, t as loadLesson, e as loader };
|
|
73
|
-
|
|
74
|
-
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../src/adapters/basics-syllabus-adapter.ts"],"sourcesContent":["/**\n * French Basics Syllabus Adapter\n *\n * Provides functions to load and process the French Basics vocabulary syllabus\n * from MDX files using @syllst/processor.\n */\n\nimport type {\n LessonAstNode,\n SyllabusRoot,\n VocabularyItemNode,\n VocabularySetNode,\n} from \"@syllst/processor\";\nimport { buildLessonFromMDX } from \"@syllst/processor\";\nimport { config, loadAllLessons } from \"../syllabi/basics\";\n\ntype LessonNumber = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10;\n\n/**\n * Load a specific French Basics lesson from MDX\n */\nexport async function loadFrenchBasicsLesson(\n lessonNumber: LessonNumber\n): Promise<LessonAstNode> {\n const loaded = await loadAllLessons();\n const lessonData = loaded.find((l) => l.number === lessonNumber);\n\n if (!lessonData) {\n throw new Error(`Lesson ${lessonNumber} not found`);\n }\n\n return buildLessonFromMDX(lessonData.rawContent, {\n validate: true,\n strictValidation: false,\n }) as Promise<LessonAstNode>;\n}\n\n/**\n * Load all French Basics lessons from MDX\n */\nexport async function loadAllFrenchBasicsLessons(): Promise<LessonAstNode[]> {\n const lessons: LessonAstNode[] = [];\n\n for (let i = 1; i <= 10; i++) {\n const lesson = await loadFrenchBasicsLesson(i as LessonNumber);\n lessons.push(lesson);\n }\n\n return lessons;\n}\n\n/**\n * Get the complete French Basics syllabus as a SyllabusRoot\n */\nexport async function getFrenchBasicsSyllabus(): Promise<SyllabusRoot> {\n const lessons = await loadAllFrenchBasicsLessons();\n\n return {\n type: \"syllabusRoot\",\n meta: {\n id: config.id,\n title: config.title,\n language: config.language,\n version: \"1.0.0\",\n source: {\n title: \"Lalia French Basics Syllabus\",\n },\n extractedAt: new Date().toISOString(),\n },\n children: lessons.map((lesson, index) => ({\n type: \"chapter\" as const,\n id: `french-basics-chapter-${index + 1}`,\n title: lesson.title,\n description: lesson.description,\n order: index + 1,\n difficulty: lesson.difficulty,\n cefrLevel: lesson.cefrLevel,\n categories: lesson.categories,\n children: [lesson],\n })),\n };\n}\n\n/**\n * Extract all vocabulary items from a lesson\n */\nexport function extractVocabItems(lesson: LessonAstNode): VocabularyItemNode[] {\n const items: VocabularyItemNode[] = [];\n\n for (const child of lesson.children) {\n if (child.type === \"vocabularySet\") {\n items.push(...(child as VocabularySetNode).children);\n }\n }\n\n return items;\n}\n\n/**\n * Get all vocabulary items from all French Basics lessons\n */\nexport async function getAllFrenchBasicsVocab(): Promise<VocabularyItemNode[]> {\n const lessons = await loadAllFrenchBasicsLessons();\n return lessons.flatMap(extractVocabItems);\n}\n\n/**\n * Vocabulary info for progress tracking\n */\nexport interface FrenchVocabInfo {\n id: string;\n word: string;\n translation: string;\n partOfSpeech: string;\n gender?: string;\n lessonNumber: number;\n}\n\n/**\n * Get all French vocabulary with lesson numbers for progress tracking\n */\nexport async function getFrenchVocabForProgress(): Promise<FrenchVocabInfo[]> {\n const lessons = await loadAllFrenchBasicsLessons();\n const vocabulary: FrenchVocabInfo[] = [];\n\n for (const lesson of lessons) {\n const items = extractVocabItems(lesson);\n for (const item of items) {\n vocabulary.push({\n id: item.id,\n word: item.word,\n translation: item.translation || \"\",\n partOfSpeech: item.partOfSpeech || \"unknown\",\n gender: undefined,\n lessonNumber: lesson.order,\n });\n }\n }\n\n return vocabulary;\n}\n\n/**\n * Get kubit IDs for all French vocabulary\n * Format: fr:vocab:basics:{word_id}\n */\nexport async function getFrenchVocabKubitIds(): Promise<string[]> {\n const vocab = await getFrenchVocabForProgress();\n return vocab.map(\n (v) => `fr:vocab:basics:${v.id}`\n );\n}\n"],"mappings":";;;AAqBA,eAAsB,EACpB,GACwB;CAExB,IAAM,KADS,MAAM,GAAgB,EACX,MAAM,MAAM,EAAE,WAAW,EAAa;AAEhE,KAAI,CAAC,EACH,OAAU,MAAM,UAAU,EAAa,YAAY;AAGrD,QAAO,EAAmB,EAAW,YAAY;EAC/C,UAAU;EACV,kBAAkB;EACnB,CAAC;;AAMJ,eAAsB,IAAuD;CAC3E,IAAM,IAA2B,EAAE;AAEnC,MAAK,IAAI,IAAI,GAAG,KAAK,IAAI,KAAK;EAC5B,IAAM,IAAS,MAAM,EAAuB,EAAkB;AAC9D,IAAQ,KAAK,EAAO;;AAGtB,QAAO;;AAMT,eAAsB,IAAiD;CACrE,IAAM,IAAU,MAAM,GAA4B;AAElD,QAAO;EACL,MAAM;EACN,MAAM;GACJ,IAAI,EAAO;GACX,OAAO,EAAO;GACd,UAAU,EAAO;GACjB,SAAS;GACT,QAAQ,EACN,OAAO,gCACR;GACD,8BAAa,IAAI,MAAM,EAAC,aAAa;GACtC;EACD,UAAU,EAAQ,KAAK,GAAQ,OAAW;GACxC,MAAM;GACN,IAAI,yBAAyB,IAAQ;GACrC,OAAO,EAAO;GACd,aAAa,EAAO;GACpB,OAAO,IAAQ;GACf,YAAY,EAAO;GACnB,WAAW,EAAO;GAClB,YAAY,EAAO;GACnB,UAAU,CAAC,EAAO;GACnB,EAAE;EACJ;;AAMH,SAAgB,EAAkB,GAA6C;CAC7E,IAAM,IAA8B,EAAE;AAEtC,MAAK,IAAM,KAAS,EAAO,SACzB,CAAI,EAAM,SAAS,mBACjB,EAAM,KAAK,GAAI,EAA4B,SAAS;AAIxD,QAAO;;AAMT,eAAsB,IAAyD;AAE7E,SADgB,MAAM,GAA4B,EACnC,QAAQ,EAAkB;;AAkB3C,eAAsB,IAAwD;CAC5E,IAAM,IAAU,MAAM,GAA4B,EAC5C,IAAgC,EAAE;AAExC,MAAK,IAAM,KAAU,GAAS;EAC5B,IAAM,IAAQ,EAAkB,EAAO;AACvC,OAAK,IAAM,KAAQ,EACjB,GAAW,KAAK;GACd,IAAI,EAAK;GACT,MAAM,EAAK;GACX,aAAa,EAAK,eAAe;GACjC,cAAc,EAAK,gBAAgB;GACnC,QAAQ,KAAA;GACR,cAAc,EAAO;GACtB,CAAC;;AAIN,QAAO;;AAOT,eAAsB,IAA4C;AAEhE,SADc,MAAM,GAA2B,EAClC,KACV,MAAM,mBAAmB,EAAE,KAC7B"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
//#region src/syllabi/basics/lessons/lesson-01.mdx?raw
|
|
2
|
-
var e = "---\ntype: lesson\nid: french-basics-lesson-01\ntitle: \"Leçon 1 — Salutations et Bases\"\ndescription: \"Greetings & Basic Expressions: bonjour, merci, oui, non, s'il vous plaît...\"\norder: 1\nparentId: french-basics-vocabulary\ndifficulty: beginner\ncefrLevel: A1\ncategories:\n - greetings\n - expressions\nmetadata:\n estimatedTime: 15\n prerequisites: []\n objectives:\n - \"Learn common French greetings\"\n - \"Master basic polite expressions\"\n - \"Understand formal vs informal address\"\n---\n\n# Leçon 1 (Lesson 1) — Salutations et Bases\n\n## Introduction\n\nThis lesson covers the essential greetings and basic expressions you'll use every day in French. These are the foundation of polite conversation.\n\n## Vocabulary\n\n:::vocabulary-set{id=\"french-greetings\" title=\"Greetings & Basic Expressions\"}\n\n::vocab{id=\"fr-bonjour\" word=\"bonjour\" translation=\"hello, good day\" partOfSpeech=\"interjection\"}\n::\n\n::vocab{id=\"fr-bonsoir\" word=\"bonsoir\" translation=\"good evening\" partOfSpeech=\"interjection\"}\n::\n\n::vocab{id=\"fr-salut\" word=\"salut\" translation=\"hi, bye (informal)\" partOfSpeech=\"interjection\"}\n::\n\n::vocab{id=\"fr-aurevoir\" word=\"au revoir\" translation=\"goodbye\" partOfSpeech=\"interjection\"}\n::\n\n::vocab{id=\"fr-merci\" word=\"merci\" translation=\"thank you\" partOfSpeech=\"interjection\"}\n::\n\n::vocab{id=\"fr-svp\" word=\"s'il vous plaît\" translation=\"please (formal)\" partOfSpeech=\"phrase\"}\n::\n\n::vocab{id=\"fr-stp\" word=\"s'il te plaît\" translation=\"please (informal)\" partOfSpeech=\"phrase\"}\n::\n\n::vocab{id=\"fr-oui\" word=\"oui\" translation=\"yes\" partOfSpeech=\"adverb\"}\n::\n\n::vocab{id=\"fr-non\" word=\"non\" translation=\"no\" partOfSpeech=\"adverb\"}\n::\n\n::vocab{id=\"fr-excusez\" word=\"excusez-moi\" translation=\"excuse me (formal)\" partOfSpeech=\"phrase\"}\n::\n\n:::\n\n## Key Points\n\n1. **Formal vs Informal**: \"Vous\" (formal) vs \"tu\" (informal)\n2. **Time of day matters**: bonjour (day) vs bonsoir (evening)\n3. **Politeness is essential**: Always use merci and s'il vous plaît\n";
|
|
3
|
-
//#endregion
|
|
4
|
-
export { e as default };
|
|
5
|
-
|
|
6
|
-
//# sourceMappingURL=lesson-01-SLn6amdW.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lesson-01-SLn6amdW.js","names":[],"sources":["../src/syllabi/basics/lessons/lesson-01.mdx?raw"],"sourcesContent":["export default \"---\\ntype: lesson\\nid: french-basics-lesson-01\\ntitle: \\\"Leçon 1 — Salutations et Bases\\\"\\ndescription: \\\"Greetings & Basic Expressions: bonjour, merci, oui, non, s'il vous plaît...\\\"\\norder: 1\\nparentId: french-basics-vocabulary\\ndifficulty: beginner\\ncefrLevel: A1\\ncategories:\\n - greetings\\n - expressions\\nmetadata:\\n estimatedTime: 15\\n prerequisites: []\\n objectives:\\n - \\\"Learn common French greetings\\\"\\n - \\\"Master basic polite expressions\\\"\\n - \\\"Understand formal vs informal address\\\"\\n---\\n\\n# Leçon 1 (Lesson 1) — Salutations et Bases\\n\\n## Introduction\\n\\nThis lesson covers the essential greetings and basic expressions you'll use every day in French. These are the foundation of polite conversation.\\n\\n## Vocabulary\\n\\n:::vocabulary-set{id=\\\"french-greetings\\\" title=\\\"Greetings & Basic Expressions\\\"}\\n\\n::vocab{id=\\\"fr-bonjour\\\" word=\\\"bonjour\\\" translation=\\\"hello, good day\\\" partOfSpeech=\\\"interjection\\\"}\\n::\\n\\n::vocab{id=\\\"fr-bonsoir\\\" word=\\\"bonsoir\\\" translation=\\\"good evening\\\" partOfSpeech=\\\"interjection\\\"}\\n::\\n\\n::vocab{id=\\\"fr-salut\\\" word=\\\"salut\\\" translation=\\\"hi, bye (informal)\\\" partOfSpeech=\\\"interjection\\\"}\\n::\\n\\n::vocab{id=\\\"fr-aurevoir\\\" word=\\\"au revoir\\\" translation=\\\"goodbye\\\" partOfSpeech=\\\"interjection\\\"}\\n::\\n\\n::vocab{id=\\\"fr-merci\\\" word=\\\"merci\\\" translation=\\\"thank you\\\" partOfSpeech=\\\"interjection\\\"}\\n::\\n\\n::vocab{id=\\\"fr-svp\\\" word=\\\"s'il vous plaît\\\" translation=\\\"please (formal)\\\" partOfSpeech=\\\"phrase\\\"}\\n::\\n\\n::vocab{id=\\\"fr-stp\\\" word=\\\"s'il te plaît\\\" translation=\\\"please (informal)\\\" partOfSpeech=\\\"phrase\\\"}\\n::\\n\\n::vocab{id=\\\"fr-oui\\\" word=\\\"oui\\\" translation=\\\"yes\\\" partOfSpeech=\\\"adverb\\\"}\\n::\\n\\n::vocab{id=\\\"fr-non\\\" word=\\\"non\\\" translation=\\\"no\\\" partOfSpeech=\\\"adverb\\\"}\\n::\\n\\n::vocab{id=\\\"fr-excusez\\\" word=\\\"excusez-moi\\\" translation=\\\"excuse me (formal)\\\" partOfSpeech=\\\"phrase\\\"}\\n::\\n\\n:::\\n\\n## Key Points\\n\\n1. **Formal vs Informal**: \\\"Vous\\\" (formal) vs \\\"tu\\\" (informal)\\n2. **Time of day matters**: bonjour (day) vs bonsoir (evening)\\n3. **Politeness is essential**: Always use merci and s'il vous plaît\\n\""],"mappings":";AAAA,IAAA,IAAe"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
//#region src/syllabi/basics/lessons/lesson-02.mdx?raw
|
|
2
|
-
var e = "---\ntype: lesson\nid: french-basics-lesson-02\ntitle: \"Leçon 2 — Les Nombres\"\ndescription: \"Numbers 1-12: un, deux, trois, quatre, cinq...\"\norder: 2\nparentId: french-basics-vocabulary\ndifficulty: beginner\ncefrLevel: A1\ncategories:\n - numbers\nmetadata:\n estimatedTime: 15\n prerequisites: [french-basics-lesson-01]\n objectives:\n - \"Count from 1 to 12 in French\"\n - \"Understand French number pronunciation\"\n---\n\n# Leçon 2 (Lesson 2) — Les Nombres\n\n## Introduction\n\nNumbers are essential for everyday life - shopping, telling time, and giving phone numbers.\n\n## Vocabulary\n\n:::vocabulary-set{id=\"french-numbers\" title=\"Numbers (Les Nombres)\"}\n\n::vocab{id=\"fr-un\" word=\"un\" translation=\"one (1)\" partOfSpeech=\"numeral\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-deux\" word=\"deux\" translation=\"two (2)\" partOfSpeech=\"numeral\"}\n::\n\n::vocab{id=\"fr-trois\" word=\"trois\" translation=\"three (3)\" partOfSpeech=\"numeral\"}\n::\n\n::vocab{id=\"fr-quatre\" word=\"quatre\" translation=\"four (4)\" partOfSpeech=\"numeral\"}\n::\n\n::vocab{id=\"fr-cinq\" word=\"cinq\" translation=\"five (5)\" partOfSpeech=\"numeral\"}\n::\n\n::vocab{id=\"fr-six\" word=\"six\" translation=\"six (6)\" partOfSpeech=\"numeral\"}\n::\n\n::vocab{id=\"fr-sept\" word=\"sept\" translation=\"seven (7)\" partOfSpeech=\"numeral\"}\n::\n\n::vocab{id=\"fr-huit\" word=\"huit\" translation=\"eight (8)\" partOfSpeech=\"numeral\"}\n::\n\n::vocab{id=\"fr-neuf\" word=\"neuf\" translation=\"nine (9)\" partOfSpeech=\"numeral\"}\n::\n\n::vocab{id=\"fr-dix\" word=\"dix\" translation=\"ten (10)\" partOfSpeech=\"numeral\"}\n::\n\n::vocab{id=\"fr-onze\" word=\"onze\" translation=\"eleven (11)\" partOfSpeech=\"numeral\"}\n::\n\n::vocab{id=\"fr-douze\" word=\"douze\" translation=\"twelve (12)\" partOfSpeech=\"numeral\"}\n::\n\n:::\n\n## Key Points\n\n1. **One is gendered**: \"un\" (masculine), \"une\" (feminine)\n2. **Pronunciation changes**: Final consonants often silent or change\n";
|
|
3
|
-
//#endregion
|
|
4
|
-
export { e as default };
|
|
5
|
-
|
|
6
|
-
//# sourceMappingURL=lesson-02-Z-7kZjDB.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lesson-02-Z-7kZjDB.js","names":[],"sources":["../src/syllabi/basics/lessons/lesson-02.mdx?raw"],"sourcesContent":["export default \"---\\ntype: lesson\\nid: french-basics-lesson-02\\ntitle: \\\"Leçon 2 — Les Nombres\\\"\\ndescription: \\\"Numbers 1-12: un, deux, trois, quatre, cinq...\\\"\\norder: 2\\nparentId: french-basics-vocabulary\\ndifficulty: beginner\\ncefrLevel: A1\\ncategories:\\n - numbers\\nmetadata:\\n estimatedTime: 15\\n prerequisites: [french-basics-lesson-01]\\n objectives:\\n - \\\"Count from 1 to 12 in French\\\"\\n - \\\"Understand French number pronunciation\\\"\\n---\\n\\n# Leçon 2 (Lesson 2) — Les Nombres\\n\\n## Introduction\\n\\nNumbers are essential for everyday life - shopping, telling time, and giving phone numbers.\\n\\n## Vocabulary\\n\\n:::vocabulary-set{id=\\\"french-numbers\\\" title=\\\"Numbers (Les Nombres)\\\"}\\n\\n::vocab{id=\\\"fr-un\\\" word=\\\"un\\\" translation=\\\"one (1)\\\" partOfSpeech=\\\"numeral\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-deux\\\" word=\\\"deux\\\" translation=\\\"two (2)\\\" partOfSpeech=\\\"numeral\\\"}\\n::\\n\\n::vocab{id=\\\"fr-trois\\\" word=\\\"trois\\\" translation=\\\"three (3)\\\" partOfSpeech=\\\"numeral\\\"}\\n::\\n\\n::vocab{id=\\\"fr-quatre\\\" word=\\\"quatre\\\" translation=\\\"four (4)\\\" partOfSpeech=\\\"numeral\\\"}\\n::\\n\\n::vocab{id=\\\"fr-cinq\\\" word=\\\"cinq\\\" translation=\\\"five (5)\\\" partOfSpeech=\\\"numeral\\\"}\\n::\\n\\n::vocab{id=\\\"fr-six\\\" word=\\\"six\\\" translation=\\\"six (6)\\\" partOfSpeech=\\\"numeral\\\"}\\n::\\n\\n::vocab{id=\\\"fr-sept\\\" word=\\\"sept\\\" translation=\\\"seven (7)\\\" partOfSpeech=\\\"numeral\\\"}\\n::\\n\\n::vocab{id=\\\"fr-huit\\\" word=\\\"huit\\\" translation=\\\"eight (8)\\\" partOfSpeech=\\\"numeral\\\"}\\n::\\n\\n::vocab{id=\\\"fr-neuf\\\" word=\\\"neuf\\\" translation=\\\"nine (9)\\\" partOfSpeech=\\\"numeral\\\"}\\n::\\n\\n::vocab{id=\\\"fr-dix\\\" word=\\\"dix\\\" translation=\\\"ten (10)\\\" partOfSpeech=\\\"numeral\\\"}\\n::\\n\\n::vocab{id=\\\"fr-onze\\\" word=\\\"onze\\\" translation=\\\"eleven (11)\\\" partOfSpeech=\\\"numeral\\\"}\\n::\\n\\n::vocab{id=\\\"fr-douze\\\" word=\\\"douze\\\" translation=\\\"twelve (12)\\\" partOfSpeech=\\\"numeral\\\"}\\n::\\n\\n:::\\n\\n## Key Points\\n\\n1. **One is gendered**: \\\"un\\\" (masculine), \\\"une\\\" (feminine)\\n2. **Pronunciation changes**: Final consonants often silent or change\\n\""],"mappings":";AAAA,IAAA,IAAe"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
//#region src/syllabi/basics/lessons/lesson-03.mdx?raw
|
|
2
|
-
var e = "---\ntype: lesson\nid: french-basics-lesson-03\ntitle: \"Leçon 3 — Les Couleurs\"\ndescription: \"Colors: rouge, bleu, vert, jaune, noir, blanc...\"\norder: 3\nparentId: french-basics-vocabulary\ndifficulty: beginner\ncefrLevel: A1\ncategories:\n - colors\n - adjectives\nmetadata:\n estimatedTime: 15\n prerequisites: [french-basics-lesson-01]\n objectives:\n - \"Learn basic color names in French\"\n - \"Understand color agreement with nouns\"\n---\n\n# Leçon 3 (Lesson 3) — Les Couleurs\n\n## Introduction\n\nColors are adjectives in French and change form based on the gender of the noun they describe.\n\n## Vocabulary\n\n:::vocabulary-set{id=\"french-colors\" title=\"Colors (Les Couleurs)\"}\n\n::vocab{id=\"fr-rouge\" word=\"rouge\" translation=\"red\" partOfSpeech=\"adjective\"}\n::\n\n::vocab{id=\"fr-bleu\" word=\"bleu\" translation=\"blue\" partOfSpeech=\"adjective\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-vert\" word=\"vert\" translation=\"green\" partOfSpeech=\"adjective\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-jaune\" word=\"jaune\" translation=\"yellow\" partOfSpeech=\"adjective\"}\n::\n\n::vocab{id=\"fr-orange\" word=\"orange\" translation=\"orange\" partOfSpeech=\"adjective\"}\n::\n\n::vocab{id=\"fr-noir\" word=\"noir\" translation=\"black\" partOfSpeech=\"adjective\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-blanc\" word=\"blanc\" translation=\"white\" partOfSpeech=\"adjective\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-gris\" word=\"gris\" translation=\"gray\" partOfSpeech=\"adjective\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-rose\" word=\"rose\" translation=\"pink\" partOfSpeech=\"adjective\"}\n::\n\n::vocab{id=\"fr-violet\" word=\"violet\" translation=\"purple\" partOfSpeech=\"adjective\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-marron\" word=\"marron\" translation=\"brown\" partOfSpeech=\"adjective\"}\n::\n\n:::\n\n## Key Points\n\n1. **Gender agreement**: Most colors change for feminine (add -e)\n2. **Invariable colors**: rouge, jaune, orange, rose, marron stay the same\n3. **Position**: Colors usually come after the noun\n";
|
|
3
|
-
//#endregion
|
|
4
|
-
export { e as default };
|
|
5
|
-
|
|
6
|
-
//# sourceMappingURL=lesson-03-D974bcKE.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lesson-03-D974bcKE.js","names":[],"sources":["../src/syllabi/basics/lessons/lesson-03.mdx?raw"],"sourcesContent":["export default \"---\\ntype: lesson\\nid: french-basics-lesson-03\\ntitle: \\\"Leçon 3 — Les Couleurs\\\"\\ndescription: \\\"Colors: rouge, bleu, vert, jaune, noir, blanc...\\\"\\norder: 3\\nparentId: french-basics-vocabulary\\ndifficulty: beginner\\ncefrLevel: A1\\ncategories:\\n - colors\\n - adjectives\\nmetadata:\\n estimatedTime: 15\\n prerequisites: [french-basics-lesson-01]\\n objectives:\\n - \\\"Learn basic color names in French\\\"\\n - \\\"Understand color agreement with nouns\\\"\\n---\\n\\n# Leçon 3 (Lesson 3) — Les Couleurs\\n\\n## Introduction\\n\\nColors are adjectives in French and change form based on the gender of the noun they describe.\\n\\n## Vocabulary\\n\\n:::vocabulary-set{id=\\\"french-colors\\\" title=\\\"Colors (Les Couleurs)\\\"}\\n\\n::vocab{id=\\\"fr-rouge\\\" word=\\\"rouge\\\" translation=\\\"red\\\" partOfSpeech=\\\"adjective\\\"}\\n::\\n\\n::vocab{id=\\\"fr-bleu\\\" word=\\\"bleu\\\" translation=\\\"blue\\\" partOfSpeech=\\\"adjective\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-vert\\\" word=\\\"vert\\\" translation=\\\"green\\\" partOfSpeech=\\\"adjective\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-jaune\\\" word=\\\"jaune\\\" translation=\\\"yellow\\\" partOfSpeech=\\\"adjective\\\"}\\n::\\n\\n::vocab{id=\\\"fr-orange\\\" word=\\\"orange\\\" translation=\\\"orange\\\" partOfSpeech=\\\"adjective\\\"}\\n::\\n\\n::vocab{id=\\\"fr-noir\\\" word=\\\"noir\\\" translation=\\\"black\\\" partOfSpeech=\\\"adjective\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-blanc\\\" word=\\\"blanc\\\" translation=\\\"white\\\" partOfSpeech=\\\"adjective\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-gris\\\" word=\\\"gris\\\" translation=\\\"gray\\\" partOfSpeech=\\\"adjective\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-rose\\\" word=\\\"rose\\\" translation=\\\"pink\\\" partOfSpeech=\\\"adjective\\\"}\\n::\\n\\n::vocab{id=\\\"fr-violet\\\" word=\\\"violet\\\" translation=\\\"purple\\\" partOfSpeech=\\\"adjective\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-marron\\\" word=\\\"marron\\\" translation=\\\"brown\\\" partOfSpeech=\\\"adjective\\\"}\\n::\\n\\n:::\\n\\n## Key Points\\n\\n1. **Gender agreement**: Most colors change for feminine (add -e)\\n2. **Invariable colors**: rouge, jaune, orange, rose, marron stay the same\\n3. **Position**: Colors usually come after the noun\\n\""],"mappings":";AAAA,IAAA,IAAe"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
//#region src/syllabi/basics/lessons/lesson-04.mdx?raw
|
|
2
|
-
var e = "---\ntype: lesson\nid: french-basics-lesson-04\ntitle: \"Leçon 4 — La Famille\"\ndescription: \"Family: mère, père, frère, soeur, fils, fille...\"\norder: 4\nparentId: french-basics-vocabulary\ndifficulty: beginner\ncefrLevel: A1\ncategories:\n - family\n - nouns\nmetadata:\n estimatedTime: 15\n prerequisites: [french-basics-lesson-01]\n objectives:\n - \"Learn family member vocabulary\"\n - \"Understand masculine/feminine pairs\"\n---\n\n# Leçon 4 (Lesson 4) — La Famille\n\n## Introduction\n\nFamily vocabulary is essential for introducing yourself and talking about your loved ones.\n\n## Vocabulary\n\n:::vocabulary-set{id=\"french-family\" title=\"Family (La Famille)\"}\n\n::vocab{id=\"fr-mere\" word=\"mère\" translation=\"mother\" partOfSpeech=\"noun\" gender=\"feminine\"}\n::\n\n::vocab{id=\"fr-pere\" word=\"père\" translation=\"father\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-frere\" word=\"frère\" translation=\"brother\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-soeur\" word=\"sœur\" translation=\"sister\" partOfSpeech=\"noun\" gender=\"feminine\"}\n::\n\n::vocab{id=\"fr-fils\" word=\"fils\" translation=\"son\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-fille\" word=\"fille\" translation=\"daughter\" partOfSpeech=\"noun\" gender=\"feminine\"}\n::\n\n::vocab{id=\"fr-grandmere\" word=\"grand-mère\" translation=\"grandmother\" partOfSpeech=\"noun\" gender=\"feminine\"}\n::\n\n::vocab{id=\"fr-grandpere\" word=\"grand-père\" translation=\"grandfather\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-ami\" word=\"ami\" translation=\"friend (male)\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-enfant\" word=\"enfant\" translation=\"child\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-famille\" word=\"famille\" translation=\"family\" partOfSpeech=\"noun\" gender=\"feminine\"}\n::\n\n:::\n\n## Key Points\n\n1. **Masculine/Feminine pairs**: père/mère, frère/sœur, fils/fille\n2. **Possessive adjectives**: mon (my, m.), ma (my, f.), mes (my, pl.)\n";
|
|
3
|
-
//#endregion
|
|
4
|
-
export { e as default };
|
|
5
|
-
|
|
6
|
-
//# sourceMappingURL=lesson-04-auPnvqWT.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lesson-04-auPnvqWT.js","names":[],"sources":["../src/syllabi/basics/lessons/lesson-04.mdx?raw"],"sourcesContent":["export default \"---\\ntype: lesson\\nid: french-basics-lesson-04\\ntitle: \\\"Leçon 4 — La Famille\\\"\\ndescription: \\\"Family: mère, père, frère, soeur, fils, fille...\\\"\\norder: 4\\nparentId: french-basics-vocabulary\\ndifficulty: beginner\\ncefrLevel: A1\\ncategories:\\n - family\\n - nouns\\nmetadata:\\n estimatedTime: 15\\n prerequisites: [french-basics-lesson-01]\\n objectives:\\n - \\\"Learn family member vocabulary\\\"\\n - \\\"Understand masculine/feminine pairs\\\"\\n---\\n\\n# Leçon 4 (Lesson 4) — La Famille\\n\\n## Introduction\\n\\nFamily vocabulary is essential for introducing yourself and talking about your loved ones.\\n\\n## Vocabulary\\n\\n:::vocabulary-set{id=\\\"french-family\\\" title=\\\"Family (La Famille)\\\"}\\n\\n::vocab{id=\\\"fr-mere\\\" word=\\\"mère\\\" translation=\\\"mother\\\" partOfSpeech=\\\"noun\\\" gender=\\\"feminine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-pere\\\" word=\\\"père\\\" translation=\\\"father\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-frere\\\" word=\\\"frère\\\" translation=\\\"brother\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-soeur\\\" word=\\\"sœur\\\" translation=\\\"sister\\\" partOfSpeech=\\\"noun\\\" gender=\\\"feminine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-fils\\\" word=\\\"fils\\\" translation=\\\"son\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-fille\\\" word=\\\"fille\\\" translation=\\\"daughter\\\" partOfSpeech=\\\"noun\\\" gender=\\\"feminine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-grandmere\\\" word=\\\"grand-mère\\\" translation=\\\"grandmother\\\" partOfSpeech=\\\"noun\\\" gender=\\\"feminine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-grandpere\\\" word=\\\"grand-père\\\" translation=\\\"grandfather\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-ami\\\" word=\\\"ami\\\" translation=\\\"friend (male)\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-enfant\\\" word=\\\"enfant\\\" translation=\\\"child\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-famille\\\" word=\\\"famille\\\" translation=\\\"family\\\" partOfSpeech=\\\"noun\\\" gender=\\\"feminine\\\"}\\n::\\n\\n:::\\n\\n## Key Points\\n\\n1. **Masculine/Feminine pairs**: père/mère, frère/sœur, fils/fille\\n2. **Possessive adjectives**: mon (my, m.), ma (my, f.), mes (my, pl.)\\n\""],"mappings":";AAAA,IAAA,IAAe"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
//#region src/syllabi/basics/lessons/lesson-05.mdx?raw
|
|
2
|
-
var e = "---\ntype: lesson\nid: french-basics-lesson-05\ntitle: \"Leçon 5 — Les Animaux\"\ndescription: \"Animals: chat, chien, oiseau, poisson, cheval...\"\norder: 5\nparentId: french-basics-vocabulary\ndifficulty: beginner\ncefrLevel: A1\ncategories:\n - animals\n - nouns\nmetadata:\n estimatedTime: 15\n prerequisites: [french-basics-lesson-01]\n objectives:\n - \"Learn common animal names\"\n - \"Practice noun genders with animals\"\n---\n\n# Leçon 5 (Lesson 5) — Les Animaux\n\n## Introduction\n\nAnimals are a fun way to practice French nouns and their genders.\n\n## Vocabulary\n\n:::vocabulary-set{id=\"french-animals\" title=\"Animals (Les Animaux)\"}\n\n::vocab{id=\"fr-chat\" word=\"chat\" translation=\"cat\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-chien\" word=\"chien\" translation=\"dog\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-oiseau\" word=\"oiseau\" translation=\"bird\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-poisson\" word=\"poisson\" translation=\"fish\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-cheval\" word=\"cheval\" translation=\"horse\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-vache\" word=\"vache\" translation=\"cow\" partOfSpeech=\"noun\" gender=\"feminine\"}\n::\n\n::vocab{id=\"fr-cochon\" word=\"cochon\" translation=\"pig\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-mouton\" word=\"mouton\" translation=\"sheep\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-lapin\" word=\"lapin\" translation=\"rabbit\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-souris\" word=\"souris\" translation=\"mouse\" partOfSpeech=\"noun\" gender=\"feminine\"}\n::\n\n::vocab{id=\"fr-canard\" word=\"canard\" translation=\"duck\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n:::\n\n## Key Points\n\n1. **Grammatical gender**: Each animal has a fixed gender\n2. **Irregular plurals**: cheval → chevaux, oiseau → oiseaux\n";
|
|
3
|
-
//#endregion
|
|
4
|
-
export { e as default };
|
|
5
|
-
|
|
6
|
-
//# sourceMappingURL=lesson-05-1m0VxG4Q.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lesson-05-1m0VxG4Q.js","names":[],"sources":["../src/syllabi/basics/lessons/lesson-05.mdx?raw"],"sourcesContent":["export default \"---\\ntype: lesson\\nid: french-basics-lesson-05\\ntitle: \\\"Leçon 5 — Les Animaux\\\"\\ndescription: \\\"Animals: chat, chien, oiseau, poisson, cheval...\\\"\\norder: 5\\nparentId: french-basics-vocabulary\\ndifficulty: beginner\\ncefrLevel: A1\\ncategories:\\n - animals\\n - nouns\\nmetadata:\\n estimatedTime: 15\\n prerequisites: [french-basics-lesson-01]\\n objectives:\\n - \\\"Learn common animal names\\\"\\n - \\\"Practice noun genders with animals\\\"\\n---\\n\\n# Leçon 5 (Lesson 5) — Les Animaux\\n\\n## Introduction\\n\\nAnimals are a fun way to practice French nouns and their genders.\\n\\n## Vocabulary\\n\\n:::vocabulary-set{id=\\\"french-animals\\\" title=\\\"Animals (Les Animaux)\\\"}\\n\\n::vocab{id=\\\"fr-chat\\\" word=\\\"chat\\\" translation=\\\"cat\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-chien\\\" word=\\\"chien\\\" translation=\\\"dog\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-oiseau\\\" word=\\\"oiseau\\\" translation=\\\"bird\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-poisson\\\" word=\\\"poisson\\\" translation=\\\"fish\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-cheval\\\" word=\\\"cheval\\\" translation=\\\"horse\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-vache\\\" word=\\\"vache\\\" translation=\\\"cow\\\" partOfSpeech=\\\"noun\\\" gender=\\\"feminine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-cochon\\\" word=\\\"cochon\\\" translation=\\\"pig\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-mouton\\\" word=\\\"mouton\\\" translation=\\\"sheep\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-lapin\\\" word=\\\"lapin\\\" translation=\\\"rabbit\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-souris\\\" word=\\\"souris\\\" translation=\\\"mouse\\\" partOfSpeech=\\\"noun\\\" gender=\\\"feminine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-canard\\\" word=\\\"canard\\\" translation=\\\"duck\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n:::\\n\\n## Key Points\\n\\n1. **Grammatical gender**: Each animal has a fixed gender\\n2. **Irregular plurals**: cheval → chevaux, oiseau → oiseaux\\n\""],"mappings":";AAAA,IAAA,IAAe"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
//#region src/syllabi/basics/lessons/lesson-06.mdx?raw
|
|
2
|
-
var e = "---\ntype: lesson\nid: french-basics-lesson-06\ntitle: \"Leçon 6 — Le Corps\"\ndescription: \"Body Parts: tête, main, pied, œil, bouche...\"\norder: 6\nparentId: french-basics-vocabulary\ndifficulty: beginner\ncefrLevel: A1\ncategories:\n - body\n - nouns\nmetadata:\n estimatedTime: 15\n prerequisites: [french-basics-lesson-01]\n objectives:\n - \"Learn body part vocabulary\"\n - \"Practice irregular plurals\"\n---\n\n# Leçon 6 (Lesson 6) — Le Corps\n\n## Introduction\n\nBody parts are essential vocabulary for describing people and health situations.\n\n## Vocabulary\n\n:::vocabulary-set{id=\"french-body\" title=\"Body Parts (Le Corps)\"}\n\n::vocab{id=\"fr-tete\" word=\"tête\" translation=\"head\" partOfSpeech=\"noun\" gender=\"feminine\"}\n::\n\n::vocab{id=\"fr-main\" word=\"main\" translation=\"hand\" partOfSpeech=\"noun\" gender=\"feminine\"}\n::\n\n::vocab{id=\"fr-pied\" word=\"pied\" translation=\"foot\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-bras\" word=\"bras\" translation=\"arm\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-jambe\" word=\"jambe\" translation=\"leg\" partOfSpeech=\"noun\" gender=\"feminine\"}\n::\n\n::vocab{id=\"fr-oeil\" word=\"œil\" translation=\"eye\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-yeux\" word=\"yeux\" translation=\"eyes\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-bouche\" word=\"bouche\" translation=\"mouth\" partOfSpeech=\"noun\" gender=\"feminine\"}\n::\n\n::vocab{id=\"fr-nez\" word=\"nez\" translation=\"nose\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-oreille\" word=\"oreille\" translation=\"ear\" partOfSpeech=\"noun\" gender=\"feminine\"}\n::\n\n::vocab{id=\"fr-cheveux\" word=\"cheveux\" translation=\"hair\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-dos\" word=\"dos\" translation=\"back\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n:::\n\n## Key Points\n\n1. **Irregular plural**: œil → yeux (completely different!)\n2. **Article usage**: Use le/la/les with body parts instead of possessives\n";
|
|
3
|
-
//#endregion
|
|
4
|
-
export { e as default };
|
|
5
|
-
|
|
6
|
-
//# sourceMappingURL=lesson-06-BfQYo24W.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lesson-06-BfQYo24W.js","names":[],"sources":["../src/syllabi/basics/lessons/lesson-06.mdx?raw"],"sourcesContent":["export default \"---\\ntype: lesson\\nid: french-basics-lesson-06\\ntitle: \\\"Leçon 6 — Le Corps\\\"\\ndescription: \\\"Body Parts: tête, main, pied, œil, bouche...\\\"\\norder: 6\\nparentId: french-basics-vocabulary\\ndifficulty: beginner\\ncefrLevel: A1\\ncategories:\\n - body\\n - nouns\\nmetadata:\\n estimatedTime: 15\\n prerequisites: [french-basics-lesson-01]\\n objectives:\\n - \\\"Learn body part vocabulary\\\"\\n - \\\"Practice irregular plurals\\\"\\n---\\n\\n# Leçon 6 (Lesson 6) — Le Corps\\n\\n## Introduction\\n\\nBody parts are essential vocabulary for describing people and health situations.\\n\\n## Vocabulary\\n\\n:::vocabulary-set{id=\\\"french-body\\\" title=\\\"Body Parts (Le Corps)\\\"}\\n\\n::vocab{id=\\\"fr-tete\\\" word=\\\"tête\\\" translation=\\\"head\\\" partOfSpeech=\\\"noun\\\" gender=\\\"feminine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-main\\\" word=\\\"main\\\" translation=\\\"hand\\\" partOfSpeech=\\\"noun\\\" gender=\\\"feminine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-pied\\\" word=\\\"pied\\\" translation=\\\"foot\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-bras\\\" word=\\\"bras\\\" translation=\\\"arm\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-jambe\\\" word=\\\"jambe\\\" translation=\\\"leg\\\" partOfSpeech=\\\"noun\\\" gender=\\\"feminine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-oeil\\\" word=\\\"œil\\\" translation=\\\"eye\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-yeux\\\" word=\\\"yeux\\\" translation=\\\"eyes\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-bouche\\\" word=\\\"bouche\\\" translation=\\\"mouth\\\" partOfSpeech=\\\"noun\\\" gender=\\\"feminine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-nez\\\" word=\\\"nez\\\" translation=\\\"nose\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-oreille\\\" word=\\\"oreille\\\" translation=\\\"ear\\\" partOfSpeech=\\\"noun\\\" gender=\\\"feminine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-cheveux\\\" word=\\\"cheveux\\\" translation=\\\"hair\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-dos\\\" word=\\\"dos\\\" translation=\\\"back\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n:::\\n\\n## Key Points\\n\\n1. **Irregular plural**: œil → yeux (completely different!)\\n2. **Article usage**: Use le/la/les with body parts instead of possessives\\n\""],"mappings":";AAAA,IAAA,IAAe"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
//#region src/syllabi/basics/lessons/lesson-07.mdx?raw
|
|
2
|
-
var e = "---\ntype: lesson\nid: french-basics-lesson-07\ntitle: \"Leçon 7 — La Nourriture\"\ndescription: \"Food & Drink: pain, eau, café, fromage, viande...\"\norder: 7\nparentId: french-basics-vocabulary\ndifficulty: beginner\ncefrLevel: A1\ncategories:\n - food\n - drink\n - nouns\nmetadata:\n estimatedTime: 15\n prerequisites: [french-basics-lesson-01]\n objectives:\n - \"Learn essential food vocabulary\"\n - \"Order food and drinks\"\n---\n\n# Leçon 7 (Lesson 7) — La Nourriture\n\n## Introduction\n\nFrance is famous for its cuisine! Learn food vocabulary for restaurants and daily life.\n\n## Vocabulary\n\n:::vocabulary-set{id=\"french-food\" title=\"Food & Drink (Nourriture et Boissons)\"}\n\n::vocab{id=\"fr-pain\" word=\"pain\" translation=\"bread\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-eau\" word=\"eau\" translation=\"water\" partOfSpeech=\"noun\" gender=\"feminine\"}\n::\n\n::vocab{id=\"fr-cafe\" word=\"café\" translation=\"coffee\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-the\" word=\"thé\" translation=\"tea\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-lait\" word=\"lait\" translation=\"milk\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-fromage\" word=\"fromage\" translation=\"cheese\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-viande\" word=\"viande\" translation=\"meat\" partOfSpeech=\"noun\" gender=\"feminine\"}\n::\n\n::vocab{id=\"fr-poisson-food\" word=\"poisson\" translation=\"fish (food)\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-legumes\" word=\"légumes\" translation=\"vegetables\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-fruit\" word=\"fruit\" translation=\"fruit\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-vin\" word=\"vin\" translation=\"wine\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-sucre\" word=\"sucre\" translation=\"sugar\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n:::\n\n## Key Points\n\n1. **Partitive articles**: du/de la/des for \"some\" (du pain = some bread)\n2. **Ordering phrases**: \"Je voudrais...\" (I would like...)\n";
|
|
3
|
-
//#endregion
|
|
4
|
-
export { e as default };
|
|
5
|
-
|
|
6
|
-
//# sourceMappingURL=lesson-07-BATIJhTw.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lesson-07-BATIJhTw.js","names":[],"sources":["../src/syllabi/basics/lessons/lesson-07.mdx?raw"],"sourcesContent":["export default \"---\\ntype: lesson\\nid: french-basics-lesson-07\\ntitle: \\\"Leçon 7 — La Nourriture\\\"\\ndescription: \\\"Food & Drink: pain, eau, café, fromage, viande...\\\"\\norder: 7\\nparentId: french-basics-vocabulary\\ndifficulty: beginner\\ncefrLevel: A1\\ncategories:\\n - food\\n - drink\\n - nouns\\nmetadata:\\n estimatedTime: 15\\n prerequisites: [french-basics-lesson-01]\\n objectives:\\n - \\\"Learn essential food vocabulary\\\"\\n - \\\"Order food and drinks\\\"\\n---\\n\\n# Leçon 7 (Lesson 7) — La Nourriture\\n\\n## Introduction\\n\\nFrance is famous for its cuisine! Learn food vocabulary for restaurants and daily life.\\n\\n## Vocabulary\\n\\n:::vocabulary-set{id=\\\"french-food\\\" title=\\\"Food & Drink (Nourriture et Boissons)\\\"}\\n\\n::vocab{id=\\\"fr-pain\\\" word=\\\"pain\\\" translation=\\\"bread\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-eau\\\" word=\\\"eau\\\" translation=\\\"water\\\" partOfSpeech=\\\"noun\\\" gender=\\\"feminine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-cafe\\\" word=\\\"café\\\" translation=\\\"coffee\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-the\\\" word=\\\"thé\\\" translation=\\\"tea\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-lait\\\" word=\\\"lait\\\" translation=\\\"milk\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-fromage\\\" word=\\\"fromage\\\" translation=\\\"cheese\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-viande\\\" word=\\\"viande\\\" translation=\\\"meat\\\" partOfSpeech=\\\"noun\\\" gender=\\\"feminine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-poisson-food\\\" word=\\\"poisson\\\" translation=\\\"fish (food)\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-legumes\\\" word=\\\"légumes\\\" translation=\\\"vegetables\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-fruit\\\" word=\\\"fruit\\\" translation=\\\"fruit\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-vin\\\" word=\\\"vin\\\" translation=\\\"wine\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-sucre\\\" word=\\\"sucre\\\" translation=\\\"sugar\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n:::\\n\\n## Key Points\\n\\n1. **Partitive articles**: du/de la/des for \\\"some\\\" (du pain = some bread)\\n2. **Ordering phrases**: \\\"Je voudrais...\\\" (I would like...)\\n\""],"mappings":";AAAA,IAAA,IAAe"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
//#region src/syllabi/basics/lessons/lesson-08.mdx?raw
|
|
2
|
-
var e = "---\ntype: lesson\nid: french-basics-lesson-08\ntitle: \"Leçon 8 — Les Lieux\"\ndescription: \"Places: maison, école, rue, ville, magasin...\"\norder: 8\nparentId: french-basics-vocabulary\ndifficulty: beginner\ncefrLevel: A1\ncategories:\n - places\n - nouns\nmetadata:\n estimatedTime: 15\n prerequisites: [french-basics-lesson-01]\n objectives:\n - \"Learn common location vocabulary\"\n - \"Ask for and give directions\"\n---\n\n# Leçon 8 (Lesson 8) — Les Lieux\n\n## Introduction\n\nPlace vocabulary helps you navigate and describe where you live.\n\n## Vocabulary\n\n:::vocabulary-set{id=\"french-places\" title=\"Places (Les Lieux)\"}\n\n::vocab{id=\"fr-maison\" word=\"maison\" translation=\"house, home\" partOfSpeech=\"noun\" gender=\"feminine\"}\n::\n\n::vocab{id=\"fr-ecole\" word=\"école\" translation=\"school\" partOfSpeech=\"noun\" gender=\"feminine\"}\n::\n\n::vocab{id=\"fr-rue\" word=\"rue\" translation=\"street\" partOfSpeech=\"noun\" gender=\"feminine\"}\n::\n\n::vocab{id=\"fr-ville\" word=\"ville\" translation=\"city, town\" partOfSpeech=\"noun\" gender=\"feminine\"}\n::\n\n::vocab{id=\"fr-pays\" word=\"pays\" translation=\"country\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-magasin\" word=\"magasin\" translation=\"store, shop\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-restaurant\" word=\"restaurant\" translation=\"restaurant\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-hopital\" word=\"hôpital\" translation=\"hospital\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-gare\" word=\"gare\" translation=\"train station\" partOfSpeech=\"noun\" gender=\"feminine\"}\n::\n\n::vocab{id=\"fr-aeroport\" word=\"aéroport\" translation=\"airport\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-bibliotheque\" word=\"bibliothèque\" translation=\"library\" partOfSpeech=\"noun\" gender=\"feminine\"}\n::\n\n::vocab{id=\"fr-jardin\" word=\"jardin\" translation=\"garden\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n:::\n\n## Key Points\n\n1. **Prepositions**: à (to/at), dans (in), en (in/to for countries)\n2. **Contractions**: à + le = au, à + les = aux\n";
|
|
3
|
-
//#endregion
|
|
4
|
-
export { e as default };
|
|
5
|
-
|
|
6
|
-
//# sourceMappingURL=lesson-08-BzFXM_-o.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lesson-08-BzFXM_-o.js","names":[],"sources":["../src/syllabi/basics/lessons/lesson-08.mdx?raw"],"sourcesContent":["export default \"---\\ntype: lesson\\nid: french-basics-lesson-08\\ntitle: \\\"Leçon 8 — Les Lieux\\\"\\ndescription: \\\"Places: maison, école, rue, ville, magasin...\\\"\\norder: 8\\nparentId: french-basics-vocabulary\\ndifficulty: beginner\\ncefrLevel: A1\\ncategories:\\n - places\\n - nouns\\nmetadata:\\n estimatedTime: 15\\n prerequisites: [french-basics-lesson-01]\\n objectives:\\n - \\\"Learn common location vocabulary\\\"\\n - \\\"Ask for and give directions\\\"\\n---\\n\\n# Leçon 8 (Lesson 8) — Les Lieux\\n\\n## Introduction\\n\\nPlace vocabulary helps you navigate and describe where you live.\\n\\n## Vocabulary\\n\\n:::vocabulary-set{id=\\\"french-places\\\" title=\\\"Places (Les Lieux)\\\"}\\n\\n::vocab{id=\\\"fr-maison\\\" word=\\\"maison\\\" translation=\\\"house, home\\\" partOfSpeech=\\\"noun\\\" gender=\\\"feminine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-ecole\\\" word=\\\"école\\\" translation=\\\"school\\\" partOfSpeech=\\\"noun\\\" gender=\\\"feminine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-rue\\\" word=\\\"rue\\\" translation=\\\"street\\\" partOfSpeech=\\\"noun\\\" gender=\\\"feminine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-ville\\\" word=\\\"ville\\\" translation=\\\"city, town\\\" partOfSpeech=\\\"noun\\\" gender=\\\"feminine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-pays\\\" word=\\\"pays\\\" translation=\\\"country\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-magasin\\\" word=\\\"magasin\\\" translation=\\\"store, shop\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-restaurant\\\" word=\\\"restaurant\\\" translation=\\\"restaurant\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-hopital\\\" word=\\\"hôpital\\\" translation=\\\"hospital\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-gare\\\" word=\\\"gare\\\" translation=\\\"train station\\\" partOfSpeech=\\\"noun\\\" gender=\\\"feminine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-aeroport\\\" word=\\\"aéroport\\\" translation=\\\"airport\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-bibliotheque\\\" word=\\\"bibliothèque\\\" translation=\\\"library\\\" partOfSpeech=\\\"noun\\\" gender=\\\"feminine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-jardin\\\" word=\\\"jardin\\\" translation=\\\"garden\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n:::\\n\\n## Key Points\\n\\n1. **Prepositions**: à (to/at), dans (in), en (in/to for countries)\\n2. **Contractions**: à + le = au, à + les = aux\\n\""],"mappings":";AAAA,IAAA,IAAe"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
//#region src/syllabi/basics/lessons/lesson-09.mdx?raw
|
|
2
|
-
var e = "---\ntype: lesson\nid: french-basics-lesson-09\ntitle: \"Leçon 9 — Les Verbes\"\ndescription: \"Common Verbs: être, avoir, aller, faire, vouloir...\"\norder: 9\nparentId: french-basics-vocabulary\ndifficulty: beginner\ncefrLevel: A1\ncategories:\n - verbs\nmetadata:\n estimatedTime: 20\n prerequisites: [french-basics-lesson-01]\n objectives:\n - \"Learn the most essential French verbs\"\n - \"Understand basic conjugation patterns\"\n---\n\n# Leçon 9 (Lesson 9) — Les Verbes Essentiels\n\n## Introduction\n\nVerbs are the heart of French sentences. The most common verbs are irregular but essential.\n\n## Vocabulary\n\n:::vocabulary-set{id=\"french-verbs\" title=\"Essential Verbs (Verbes Essentiels)\"}\n\n::vocab{id=\"fr-etre\" word=\"être\" translation=\"to be\" partOfSpeech=\"verb\"}\n::\n\n::vocab{id=\"fr-avoir\" word=\"avoir\" translation=\"to have\" partOfSpeech=\"verb\"}\n::\n\n::vocab{id=\"fr-aller\" word=\"aller\" translation=\"to go\" partOfSpeech=\"verb\"}\n::\n\n::vocab{id=\"fr-faire\" word=\"faire\" translation=\"to do, to make\" partOfSpeech=\"verb\"}\n::\n\n::vocab{id=\"fr-vouloir\" word=\"vouloir\" translation=\"to want\" partOfSpeech=\"verb\"}\n::\n\n::vocab{id=\"fr-pouvoir\" word=\"pouvoir\" translation=\"can, to be able to\" partOfSpeech=\"verb\"}\n::\n\n::vocab{id=\"fr-aimer\" word=\"aimer\" translation=\"to love, to like\" partOfSpeech=\"verb\"}\n::\n\n::vocab{id=\"fr-manger\" word=\"manger\" translation=\"to eat\" partOfSpeech=\"verb\"}\n::\n\n::vocab{id=\"fr-boire\" word=\"boire\" translation=\"to drink\" partOfSpeech=\"verb\"}\n::\n\n::vocab{id=\"fr-parler\" word=\"parler\" translation=\"to speak\" partOfSpeech=\"verb\"}\n::\n\n::vocab{id=\"fr-voir\" word=\"voir\" translation=\"to see\" partOfSpeech=\"verb\"}\n::\n\n::vocab{id=\"fr-venir\" word=\"venir\" translation=\"to come\" partOfSpeech=\"verb\"}\n::\n\n:::\n\n## Key Points\n\n1. **Irregular verbs**: être, avoir, aller, faire are irregular but essential\n2. **Regular -er verbs**: Follow predictable patterns (aimer, parler, manger)\n";
|
|
3
|
-
//#endregion
|
|
4
|
-
export { e as default };
|
|
5
|
-
|
|
6
|
-
//# sourceMappingURL=lesson-09-dahFw-GS.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lesson-09-dahFw-GS.js","names":[],"sources":["../src/syllabi/basics/lessons/lesson-09.mdx?raw"],"sourcesContent":["export default \"---\\ntype: lesson\\nid: french-basics-lesson-09\\ntitle: \\\"Leçon 9 — Les Verbes\\\"\\ndescription: \\\"Common Verbs: être, avoir, aller, faire, vouloir...\\\"\\norder: 9\\nparentId: french-basics-vocabulary\\ndifficulty: beginner\\ncefrLevel: A1\\ncategories:\\n - verbs\\nmetadata:\\n estimatedTime: 20\\n prerequisites: [french-basics-lesson-01]\\n objectives:\\n - \\\"Learn the most essential French verbs\\\"\\n - \\\"Understand basic conjugation patterns\\\"\\n---\\n\\n# Leçon 9 (Lesson 9) — Les Verbes Essentiels\\n\\n## Introduction\\n\\nVerbs are the heart of French sentences. The most common verbs are irregular but essential.\\n\\n## Vocabulary\\n\\n:::vocabulary-set{id=\\\"french-verbs\\\" title=\\\"Essential Verbs (Verbes Essentiels)\\\"}\\n\\n::vocab{id=\\\"fr-etre\\\" word=\\\"être\\\" translation=\\\"to be\\\" partOfSpeech=\\\"verb\\\"}\\n::\\n\\n::vocab{id=\\\"fr-avoir\\\" word=\\\"avoir\\\" translation=\\\"to have\\\" partOfSpeech=\\\"verb\\\"}\\n::\\n\\n::vocab{id=\\\"fr-aller\\\" word=\\\"aller\\\" translation=\\\"to go\\\" partOfSpeech=\\\"verb\\\"}\\n::\\n\\n::vocab{id=\\\"fr-faire\\\" word=\\\"faire\\\" translation=\\\"to do, to make\\\" partOfSpeech=\\\"verb\\\"}\\n::\\n\\n::vocab{id=\\\"fr-vouloir\\\" word=\\\"vouloir\\\" translation=\\\"to want\\\" partOfSpeech=\\\"verb\\\"}\\n::\\n\\n::vocab{id=\\\"fr-pouvoir\\\" word=\\\"pouvoir\\\" translation=\\\"can, to be able to\\\" partOfSpeech=\\\"verb\\\"}\\n::\\n\\n::vocab{id=\\\"fr-aimer\\\" word=\\\"aimer\\\" translation=\\\"to love, to like\\\" partOfSpeech=\\\"verb\\\"}\\n::\\n\\n::vocab{id=\\\"fr-manger\\\" word=\\\"manger\\\" translation=\\\"to eat\\\" partOfSpeech=\\\"verb\\\"}\\n::\\n\\n::vocab{id=\\\"fr-boire\\\" word=\\\"boire\\\" translation=\\\"to drink\\\" partOfSpeech=\\\"verb\\\"}\\n::\\n\\n::vocab{id=\\\"fr-parler\\\" word=\\\"parler\\\" translation=\\\"to speak\\\" partOfSpeech=\\\"verb\\\"}\\n::\\n\\n::vocab{id=\\\"fr-voir\\\" word=\\\"voir\\\" translation=\\\"to see\\\" partOfSpeech=\\\"verb\\\"}\\n::\\n\\n::vocab{id=\\\"fr-venir\\\" word=\\\"venir\\\" translation=\\\"to come\\\" partOfSpeech=\\\"verb\\\"}\\n::\\n\\n:::\\n\\n## Key Points\\n\\n1. **Irregular verbs**: être, avoir, aller, faire are irregular but essential\\n2. **Regular -er verbs**: Follow predictable patterns (aimer, parler, manger)\\n\""],"mappings":";AAAA,IAAA,IAAe"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
//#region src/syllabi/basics/lessons/lesson-10.mdx?raw
|
|
2
|
-
var e = "---\ntype: lesson\nid: french-basics-lesson-10\ntitle: \"Leçon 10 — Le Temps\"\ndescription: \"Time & Weather: jour, semaine, soleil, pluie, chaud, froid...\"\norder: 10\nparentId: french-basics-vocabulary\ndifficulty: beginner\ncefrLevel: A1\ncategories:\n - time\n - weather\nmetadata:\n estimatedTime: 15\n prerequisites: [french-basics-lesson-01]\n objectives:\n - \"Learn time vocabulary\"\n - \"Describe the weather\"\n---\n\n# Leçon 10 (Lesson 10) — Le Temps\n\n## Introduction\n\n\"Le temps\" in French means both \"time\" and \"weather\" - two essential topics.\n\n## Vocabulary\n\n:::vocabulary-set{id=\"french-time-weather\" title=\"Time & Weather (Le Temps)\"}\n\n::vocab{id=\"fr-jour\" word=\"jour\" translation=\"day\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-semaine\" word=\"semaine\" translation=\"week\" partOfSpeech=\"noun\" gender=\"feminine\"}\n::\n\n::vocab{id=\"fr-mois\" word=\"mois\" translation=\"month\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-annee\" word=\"année\" translation=\"year\" partOfSpeech=\"noun\" gender=\"feminine\"}\n::\n\n::vocab{id=\"fr-soleil\" word=\"soleil\" translation=\"sun\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-pluie\" word=\"pluie\" translation=\"rain\" partOfSpeech=\"noun\" gender=\"feminine\"}\n::\n\n::vocab{id=\"fr-neige\" word=\"neige\" translation=\"snow\" partOfSpeech=\"noun\" gender=\"feminine\"}\n::\n\n::vocab{id=\"fr-nuage\" word=\"nuage\" translation=\"cloud\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-chaud\" word=\"chaud\" translation=\"hot, warm\" partOfSpeech=\"adjective\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-froid\" word=\"froid\" translation=\"cold\" partOfSpeech=\"adjective\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-vent\" word=\"vent\" translation=\"wind\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n::vocab{id=\"fr-temps\" word=\"temps\" translation=\"time, weather\" partOfSpeech=\"noun\" gender=\"masculine\"}\n::\n\n:::\n\n## Key Points\n\n1. **\"Il fait\" + adjective**: Used for weather (Il fait chaud = It's hot)\n2. **\"J'ai chaud/froid\"**: Use \"avoir\" for personal feelings of temperature\n";
|
|
3
|
-
//#endregion
|
|
4
|
-
export { e as default };
|
|
5
|
-
|
|
6
|
-
//# sourceMappingURL=lesson-10-Ddoeyppc.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lesson-10-Ddoeyppc.js","names":[],"sources":["../src/syllabi/basics/lessons/lesson-10.mdx?raw"],"sourcesContent":["export default \"---\\ntype: lesson\\nid: french-basics-lesson-10\\ntitle: \\\"Leçon 10 — Le Temps\\\"\\ndescription: \\\"Time & Weather: jour, semaine, soleil, pluie, chaud, froid...\\\"\\norder: 10\\nparentId: french-basics-vocabulary\\ndifficulty: beginner\\ncefrLevel: A1\\ncategories:\\n - time\\n - weather\\nmetadata:\\n estimatedTime: 15\\n prerequisites: [french-basics-lesson-01]\\n objectives:\\n - \\\"Learn time vocabulary\\\"\\n - \\\"Describe the weather\\\"\\n---\\n\\n# Leçon 10 (Lesson 10) — Le Temps\\n\\n## Introduction\\n\\n\\\"Le temps\\\" in French means both \\\"time\\\" and \\\"weather\\\" - two essential topics.\\n\\n## Vocabulary\\n\\n:::vocabulary-set{id=\\\"french-time-weather\\\" title=\\\"Time & Weather (Le Temps)\\\"}\\n\\n::vocab{id=\\\"fr-jour\\\" word=\\\"jour\\\" translation=\\\"day\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-semaine\\\" word=\\\"semaine\\\" translation=\\\"week\\\" partOfSpeech=\\\"noun\\\" gender=\\\"feminine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-mois\\\" word=\\\"mois\\\" translation=\\\"month\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-annee\\\" word=\\\"année\\\" translation=\\\"year\\\" partOfSpeech=\\\"noun\\\" gender=\\\"feminine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-soleil\\\" word=\\\"soleil\\\" translation=\\\"sun\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-pluie\\\" word=\\\"pluie\\\" translation=\\\"rain\\\" partOfSpeech=\\\"noun\\\" gender=\\\"feminine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-neige\\\" word=\\\"neige\\\" translation=\\\"snow\\\" partOfSpeech=\\\"noun\\\" gender=\\\"feminine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-nuage\\\" word=\\\"nuage\\\" translation=\\\"cloud\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-chaud\\\" word=\\\"chaud\\\" translation=\\\"hot, warm\\\" partOfSpeech=\\\"adjective\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-froid\\\" word=\\\"froid\\\" translation=\\\"cold\\\" partOfSpeech=\\\"adjective\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-vent\\\" word=\\\"vent\\\" translation=\\\"wind\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n::vocab{id=\\\"fr-temps\\\" word=\\\"temps\\\" translation=\\\"time, weather\\\" partOfSpeech=\\\"noun\\\" gender=\\\"masculine\\\"}\\n::\\n\\n:::\\n\\n## Key Points\\n\\n1. **\\\"Il fait\\\" + adjective**: Used for weather (Il fait chaud = It's hot)\\n2. **\\\"J'ai chaud/froid\\\"**: Use \\\"avoir\\\" for personal feelings of temperature\\n\""],"mappings":";AAAA,IAAA,IAAe"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { SyllabusConfig, ContentLoader } from '../../shared.js';
|
|
2
|
-
export declare const config: SyllabusConfig;
|
|
3
|
-
export declare const loader: ContentLoader;
|
|
4
|
-
export declare const loadLesson: (lessonNumber: number) => Promise<import('../../shared.js').LoadedLesson>;
|
|
5
|
-
export declare const loadAllLessons: () => Promise<import('../../shared.js').LoadedLesson[]>;
|
|
6
|
-
export declare const getAvailableLessons: () => number[];
|
|
7
|
-
//# sourceMappingURL=index.d.ts.map
|