@beanchain/handbook-lms 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +149 -0
  3. package/dist/adapter/index.cjs +4 -0
  4. package/dist/adapter/index.cjs.map +1 -0
  5. package/dist/adapter/index.d.cts +1 -0
  6. package/dist/adapter/index.d.ts +1 -0
  7. package/dist/adapter/index.js +3 -0
  8. package/dist/adapter/index.js.map +1 -0
  9. package/dist/chunk-6Z77HGDR.js +2384 -0
  10. package/dist/chunk-6Z77HGDR.js.map +1 -0
  11. package/dist/chunk-GZIXEHPW.js +268 -0
  12. package/dist/chunk-GZIXEHPW.js.map +1 -0
  13. package/dist/chunk-HOQRIQ33.js +3 -0
  14. package/dist/chunk-HOQRIQ33.js.map +1 -0
  15. package/dist/chunk-N4WYUTCR.js +264 -0
  16. package/dist/chunk-N4WYUTCR.js.map +1 -0
  17. package/dist/chunk-PYWAXMRT.js +6 -0
  18. package/dist/chunk-PYWAXMRT.js.map +1 -0
  19. package/dist/chunk-UVF7B4L2.js +73 -0
  20. package/dist/chunk-UVF7B4L2.js.map +1 -0
  21. package/dist/chunk-VRHNGFUG.js +90 -0
  22. package/dist/chunk-VRHNGFUG.js.map +1 -0
  23. package/dist/config/index.cjs +8 -0
  24. package/dist/config/index.cjs.map +1 -0
  25. package/dist/config/index.d.cts +52 -0
  26. package/dist/config/index.d.ts +52 -0
  27. package/dist/config/index.js +3 -0
  28. package/dist/config/index.js.map +1 -0
  29. package/dist/contracts/index.cjs +307 -0
  30. package/dist/contracts/index.cjs.map +1 -0
  31. package/dist/contracts/index.d.cts +3034 -0
  32. package/dist/contracts/index.d.ts +3034 -0
  33. package/dist/contracts/index.js +3 -0
  34. package/dist/contracts/index.js.map +1 -0
  35. package/dist/core/index.cjs +107 -0
  36. package/dist/core/index.cjs.map +1 -0
  37. package/dist/core/index.d.cts +293 -0
  38. package/dist/core/index.d.ts +293 -0
  39. package/dist/core/index.js +3 -0
  40. package/dist/core/index.js.map +1 -0
  41. package/dist/index-caUTkZqX.d.cts +321 -0
  42. package/dist/index-caUTkZqX.d.ts +321 -0
  43. package/dist/index.cjs +3129 -0
  44. package/dist/index.cjs.map +1 -0
  45. package/dist/index.d.cts +10 -0
  46. package/dist/index.d.ts +10 -0
  47. package/dist/index.js +9 -0
  48. package/dist/index.js.map +1 -0
  49. package/dist/react/index.cjs +77 -0
  50. package/dist/react/index.cjs.map +1 -0
  51. package/dist/react/index.d.cts +18 -0
  52. package/dist/react/index.d.ts +18 -0
  53. package/dist/react/index.js +3 -0
  54. package/dist/react/index.js.map +1 -0
  55. package/dist/react-headless/index.cjs +268 -0
  56. package/dist/react-headless/index.cjs.map +1 -0
  57. package/dist/react-headless/index.d.cts +181 -0
  58. package/dist/react-headless/index.d.ts +181 -0
  59. package/dist/react-headless/index.js +3 -0
  60. package/dist/react-headless/index.js.map +1 -0
  61. package/dist/react-mui/index.cjs +2653 -0
  62. package/dist/react-mui/index.cjs.map +1 -0
  63. package/dist/react-mui/index.d.cts +53 -0
  64. package/dist/react-mui/index.d.ts +53 -0
  65. package/dist/react-mui/index.js +4 -0
  66. package/dist/react-mui/index.js.map +1 -0
  67. package/package.json +85 -0
  68. package/sql/README.md +80 -0
  69. package/sql/blueprint.sql +7 -0
@@ -0,0 +1,268 @@
1
+ import { z } from 'zod';
2
+
3
+ // src/contracts/endpoints.ts
4
+ var handbookLmsRoutes = {
5
+ courses: "/api/lms-courses",
6
+ courseCurriculum: (slug) => `/api/lms-courses/${slug}/curriculum`,
7
+ courseProgress: (slug) => `/api/lms-courses/${slug}/progress`,
8
+ questionProgress: (slug, moduleId, questionId) => `/api/lms-courses/${slug}/progress/modules/${moduleId}/questions/${questionId}`,
9
+ submitModule: (slug, moduleId) => `/api/lms-courses/${slug}/progress/modules/${moduleId}/submit`,
10
+ reviewModule: (slug, moduleId) => `/api/lms-courses/${slug}/progress/modules/${moduleId}/review`,
11
+ assignmentProgress: (slug, assignmentId) => `/api/lms-courses/${slug}/progress/assignments/${assignmentId}`,
12
+ adminCourses: "/api/lms-courses-admin",
13
+ adminCourseCurriculum: (slug) => `/api/lms-courses-admin/${slug}/curriculum`
14
+ };
15
+ var handbookLmsOwnerScopeSchema = z.enum(["global", "handbook"]);
16
+ var handbookLmsProgressStatusSchema = z.enum(["pending", "in_progress", "submitted", "passed", "revision_required"]);
17
+ var handbookLmsModuleModeSchema = z.enum(["single_stage", "multi_stage"]);
18
+ var handbookLmsAssignmentResponseModeSchema = z.enum(["written", "in_person"]);
19
+ var handbookLmsAssignmentStatusSchema = z.enum(["pending", "submitted", "completed"]);
20
+ var handbookLmsQuestionResponseTypeSchema = z.enum(["short_text", "long_text", "checklist"]);
21
+ var optionalNullableString = z.string().nullable();
22
+ var requiredSlug = z.string().trim().min(1).max(120).regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/);
23
+ var requiredDisplayOrder = z.number().int().min(1);
24
+ var handbookLmsQuestionSchema = z.object({
25
+ id: z.string().min(1),
26
+ module_id: z.string().min(1),
27
+ stage_id: z.string().min(1),
28
+ prompt: z.string().trim().min(1),
29
+ response_type: handbookLmsQuestionResponseTypeSchema,
30
+ display_order: requiredDisplayOrder,
31
+ active: z.boolean()
32
+ });
33
+ var handbookLmsSectionSummarySchema = z.object({
34
+ id: z.string().min(1),
35
+ course_id: z.string().min(1),
36
+ slug: requiredSlug,
37
+ title: z.string().trim().min(1),
38
+ description: optionalNullableString,
39
+ display_order: requiredDisplayOrder,
40
+ active: z.boolean()
41
+ });
42
+ var handbookLmsStageSchema = z.object({
43
+ id: z.string().min(1),
44
+ module_id: z.string().min(1),
45
+ title: z.string().trim().min(1),
46
+ content_md: z.string(),
47
+ display_order: requiredDisplayOrder,
48
+ active: z.boolean(),
49
+ questions: z.array(handbookLmsQuestionSchema)
50
+ });
51
+ var handbookLmsModuleSchema = z.object({
52
+ id: z.string().min(1),
53
+ course_id: z.string().min(1),
54
+ section_id: z.string().min(1),
55
+ slug: requiredSlug,
56
+ module_type: z.string().trim().min(1),
57
+ module_mode: handbookLmsModuleModeSchema,
58
+ title: z.string().trim().min(1),
59
+ summary: z.string().trim().min(1),
60
+ display_order: requiredDisplayOrder,
61
+ active: z.boolean(),
62
+ archived_at: optionalNullableString,
63
+ section: handbookLmsSectionSummarySchema.nullable().optional(),
64
+ stages: z.array(handbookLmsStageSchema),
65
+ exercises: z.array(handbookLmsQuestionSchema).optional()
66
+ });
67
+ var handbookLmsSectionSchema = handbookLmsSectionSummarySchema.extend({
68
+ modules: z.array(handbookLmsModuleSchema)
69
+ });
70
+ var handbookLmsCourseSchema = z.object({
71
+ id: z.string().min(1),
72
+ handbook_id: optionalNullableString,
73
+ owner_scope: handbookLmsOwnerScopeSchema,
74
+ slug: requiredSlug,
75
+ title: z.string().trim().min(1),
76
+ description: optionalNullableString,
77
+ published: z.boolean(),
78
+ active: z.boolean(),
79
+ created_at: z.string(),
80
+ updated_at: z.string()
81
+ });
82
+ var handbookLmsCourseUpsertInputSchema = z.object({
83
+ owner_scope: handbookLmsOwnerScopeSchema.default("handbook"),
84
+ slug: requiredSlug,
85
+ title: z.string().trim().min(1).max(200),
86
+ description: z.string().trim().max(1e4).nullable().optional(),
87
+ published: z.boolean().optional(),
88
+ active: z.boolean().optional()
89
+ });
90
+ var handbookLmsCourseLibraryItemSchema = z.object({
91
+ id: z.string().min(1),
92
+ slug: requiredSlug,
93
+ title: z.string().trim().min(1),
94
+ description: optionalNullableString,
95
+ owner_scope: handbookLmsOwnerScopeSchema,
96
+ handbook_id: optionalNullableString,
97
+ published: z.boolean(),
98
+ active: z.boolean(),
99
+ total_modules: z.number().int().min(0),
100
+ passed_modules: z.number().int().min(0),
101
+ in_progress_modules: z.number().int().min(0),
102
+ submitted_modules: z.number().int().min(0)
103
+ });
104
+ var handbookLmsProgressSchema = z.object({
105
+ module_id: z.string().min(1),
106
+ status: handbookLmsProgressStatusSchema,
107
+ completed_at: optionalNullableString,
108
+ submitted_at: optionalNullableString,
109
+ reviewed_at: optionalNullableString,
110
+ reviewed_by: optionalNullableString,
111
+ review_feedback_md: optionalNullableString
112
+ });
113
+ var handbookLmsQuestionResponseSchema = z.object({
114
+ id: z.string().min(1),
115
+ module_id: z.string().min(1),
116
+ question_id: z.string().min(1),
117
+ response_md: z.string(),
118
+ updated_at: z.string(),
119
+ submitted_at: optionalNullableString
120
+ });
121
+ var handbookLmsModuleAssignmentSchema = z.object({
122
+ id: z.string().min(1),
123
+ module_id: z.string().min(1),
124
+ learner_user_id: z.string().min(1),
125
+ assigned_by_user_id: z.string().min(1),
126
+ prompt: z.string(),
127
+ target_question_ids: z.array(z.string().min(1)).nullable(),
128
+ target_original_answers_json: z.record(z.string()).nullable(),
129
+ target_updated_answers_json: z.record(z.string()).nullable(),
130
+ response_mode: handbookLmsAssignmentResponseModeSchema,
131
+ learner_assignment_response_md: optionalNullableString,
132
+ learner_additional_response_md: optionalNullableString,
133
+ learner_response_md: optionalNullableString,
134
+ status: handbookLmsAssignmentStatusSchema,
135
+ due_at: optionalNullableString,
136
+ submitted_at: optionalNullableString,
137
+ completed_at: optionalNullableString,
138
+ reviewer_note_md: optionalNullableString,
139
+ created_at: z.string(),
140
+ updated_at: z.string(),
141
+ learner_name: optionalNullableString.optional(),
142
+ assigned_by_name: optionalNullableString.optional()
143
+ });
144
+ var handbookLmsLearningRecordSchema = z.object({
145
+ module: handbookLmsModuleSchema,
146
+ progress: handbookLmsProgressSchema,
147
+ responses: z.array(handbookLmsQuestionResponseSchema),
148
+ assignments: z.array(handbookLmsModuleAssignmentSchema)
149
+ });
150
+ var handbookLmsLearningSummarySchema = z.object({
151
+ records: z.array(handbookLmsLearningRecordSchema),
152
+ review_queue: z.array(handbookLmsModuleAssignmentSchema)
153
+ });
154
+ var handbookLmsLearnerOptionSchema = z.object({
155
+ id: z.string().min(1),
156
+ name: optionalNullableString,
157
+ email: optionalNullableString
158
+ });
159
+ var handbookLmsCourseLibraryItemListSchema = z.array(handbookLmsCourseLibraryItemSchema);
160
+ var handbookLmsSectionListSchema = z.array(handbookLmsSectionSchema);
161
+ var handbookLmsLearnerOptionListSchema = z.array(handbookLmsLearnerOptionSchema);
162
+ var handbookLmsCreateSectionInputSchema = z.object({
163
+ slug: requiredSlug,
164
+ title: z.string().trim().min(1).max(200),
165
+ description: z.string().trim().max(2e3).nullable().optional(),
166
+ display_order: requiredDisplayOrder.optional(),
167
+ active: z.boolean().optional()
168
+ });
169
+ var handbookLmsUpdateSectionInputSchema = z.object({
170
+ slug: requiredSlug.optional(),
171
+ title: z.string().trim().min(1).max(200).optional(),
172
+ description: z.string().trim().max(2e3).nullable().optional(),
173
+ display_order: requiredDisplayOrder.optional(),
174
+ active: z.boolean().optional()
175
+ });
176
+ var handbookLmsCreateModuleInputSchema = z.object({
177
+ section_id: z.string().min(1),
178
+ slug: requiredSlug,
179
+ module_type: z.string().trim().min(1).max(120).optional(),
180
+ module_mode: handbookLmsModuleModeSchema,
181
+ title: z.string().trim().min(1).max(200),
182
+ summary: z.string().trim().min(1).max(2e3),
183
+ display_order: requiredDisplayOrder.optional(),
184
+ active: z.boolean().optional()
185
+ });
186
+ var handbookLmsUpdateModuleInputSchema = z.object({
187
+ section_id: z.string().min(1).optional(),
188
+ slug: requiredSlug.optional(),
189
+ module_type: z.string().trim().min(1).max(120).optional(),
190
+ module_mode: handbookLmsModuleModeSchema.optional(),
191
+ title: z.string().trim().min(1).max(200).optional(),
192
+ summary: z.string().trim().min(1).max(2e3).optional(),
193
+ display_order: requiredDisplayOrder.optional(),
194
+ active: z.boolean().optional()
195
+ });
196
+ var handbookLmsCreateStageInputSchema = z.object({
197
+ title: z.string().trim().min(1).max(200),
198
+ content_md: z.string().max(1e5),
199
+ display_order: requiredDisplayOrder.optional(),
200
+ active: z.boolean().optional()
201
+ });
202
+ var handbookLmsUpdateStageInputSchema = z.object({
203
+ title: z.string().trim().min(1).max(200).optional(),
204
+ content_md: z.string().max(1e5).optional(),
205
+ display_order: requiredDisplayOrder.optional(),
206
+ active: z.boolean().optional()
207
+ });
208
+ var handbookLmsCreateQuestionInputSchema = z.object({
209
+ prompt: z.string().trim().min(1).max(2e4),
210
+ response_type: handbookLmsQuestionResponseTypeSchema,
211
+ display_order: requiredDisplayOrder.optional(),
212
+ active: z.boolean().optional()
213
+ });
214
+ var handbookLmsUpdateQuestionInputSchema = z.object({
215
+ stage_id: z.string().min(1).optional(),
216
+ module_id: z.string().min(1).optional(),
217
+ prompt: z.string().trim().min(1).max(2e4).optional(),
218
+ response_type: handbookLmsQuestionResponseTypeSchema.optional(),
219
+ display_order: requiredDisplayOrder.optional(),
220
+ active: z.boolean().optional()
221
+ });
222
+ var handbookLmsReorderPayloadSchema = z.object({
223
+ sections: z.array(z.object({ id: z.string().min(1), display_order: requiredDisplayOrder })).optional(),
224
+ modules: z.array(z.object({ id: z.string().min(1), section_id: z.string().min(1), display_order: requiredDisplayOrder })).optional(),
225
+ stages: z.array(z.object({ id: z.string().min(1), module_id: z.string().min(1), display_order: requiredDisplayOrder })).optional(),
226
+ questions: z.array(
227
+ z.object({
228
+ id: z.string().min(1),
229
+ stage_id: z.string().min(1),
230
+ module_id: z.string().min(1),
231
+ display_order: requiredDisplayOrder
232
+ })
233
+ ).optional()
234
+ });
235
+ var handbookLmsSaveQuestionResponseInputSchema = z.object({
236
+ response_md: z.string().trim().min(1).max(25e3)
237
+ });
238
+ var handbookLmsReviewModuleInputSchema = z.object({
239
+ moduleId: z.string().min(1),
240
+ learner_user_id: z.string().min(1),
241
+ status: z.enum(["pending", "submitted", "passed", "revision_required"]),
242
+ review_feedback_md: z.string().trim().max(25e3).optional(),
243
+ assignment: z.object({
244
+ prompt: z.string().trim().max(1e4).optional(),
245
+ response_mode: handbookLmsAssignmentResponseModeSchema.optional(),
246
+ target_question_ids: z.array(z.string().min(1)).max(200).optional(),
247
+ due_at: z.string().nullable().optional(),
248
+ reviewer_note_md: z.string().trim().max(1e4).nullable().optional()
249
+ }).nullable().optional()
250
+ });
251
+ var handbookLmsUpdateAssignmentDataSchema = z.object({
252
+ learner_assignment_response_md: z.string().trim().max(25e3).nullable().optional(),
253
+ learner_additional_response_md: z.string().trim().max(25e3).nullable().optional(),
254
+ learner_response_md: z.string().trim().max(25e3).nullable().optional(),
255
+ status: handbookLmsAssignmentStatusSchema.optional(),
256
+ reviewer_note_md: z.string().trim().max(1e4).nullable().optional()
257
+ });
258
+ var handbookLmsUpdateAssignmentInputSchema = z.object({
259
+ assignmentId: z.string().min(1),
260
+ data: handbookLmsUpdateAssignmentDataSchema
261
+ });
262
+ var handbookLmsTrainingStepRequirementsInputSchema = z.object({
263
+ required_course_ids: z.array(z.string().min(1)).max(200)
264
+ });
265
+
266
+ export { handbookLmsAssignmentResponseModeSchema, handbookLmsAssignmentStatusSchema, handbookLmsCourseLibraryItemListSchema, handbookLmsCourseLibraryItemSchema, handbookLmsCourseSchema, handbookLmsCourseUpsertInputSchema, handbookLmsCreateModuleInputSchema, handbookLmsCreateQuestionInputSchema, handbookLmsCreateSectionInputSchema, handbookLmsCreateStageInputSchema, handbookLmsLearnerOptionListSchema, handbookLmsLearnerOptionSchema, handbookLmsLearningRecordSchema, handbookLmsLearningSummarySchema, handbookLmsModuleAssignmentSchema, handbookLmsModuleModeSchema, handbookLmsModuleSchema, handbookLmsOwnerScopeSchema, handbookLmsProgressSchema, handbookLmsProgressStatusSchema, handbookLmsQuestionResponseSchema, handbookLmsQuestionResponseTypeSchema, handbookLmsQuestionSchema, handbookLmsReorderPayloadSchema, handbookLmsReviewModuleInputSchema, handbookLmsRoutes, handbookLmsSaveQuestionResponseInputSchema, handbookLmsSectionListSchema, handbookLmsSectionSchema, handbookLmsSectionSummarySchema, handbookLmsStageSchema, handbookLmsTrainingStepRequirementsInputSchema, handbookLmsUpdateAssignmentDataSchema, handbookLmsUpdateAssignmentInputSchema, handbookLmsUpdateModuleInputSchema, handbookLmsUpdateQuestionInputSchema, handbookLmsUpdateSectionInputSchema, handbookLmsUpdateStageInputSchema };
267
+ //# sourceMappingURL=chunk-GZIXEHPW.js.map
268
+ //# sourceMappingURL=chunk-GZIXEHPW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/contracts/endpoints.ts","../src/contracts/schemas.ts"],"names":[],"mappings":"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","file":"chunk-GZIXEHPW.js","sourcesContent":["export const handbookLmsRoutes = {\n courses: \"/api/lms-courses\",\n courseCurriculum: (slug: string) => `/api/lms-courses/${slug}/curriculum`,\n courseProgress: (slug: string) => `/api/lms-courses/${slug}/progress`,\n questionProgress: (slug: string, moduleId: string, questionId: string) =>\n `/api/lms-courses/${slug}/progress/modules/${moduleId}/questions/${questionId}`,\n submitModule: (slug: string, moduleId: string) => `/api/lms-courses/${slug}/progress/modules/${moduleId}/submit`,\n reviewModule: (slug: string, moduleId: string) => `/api/lms-courses/${slug}/progress/modules/${moduleId}/review`,\n assignmentProgress: (slug: string, assignmentId: string) => `/api/lms-courses/${slug}/progress/assignments/${assignmentId}`,\n adminCourses: \"/api/lms-courses-admin\",\n adminCourseCurriculum: (slug: string) => `/api/lms-courses-admin/${slug}/curriculum`\n} as const;\r\n","import { z } from \"zod\";\n\nexport const handbookLmsOwnerScopeSchema = z.enum([\"global\", \"handbook\"]);\nexport const handbookLmsProgressStatusSchema = z.enum([\"pending\", \"in_progress\", \"submitted\", \"passed\", \"revision_required\"]);\nexport const handbookLmsModuleModeSchema = z.enum([\"single_stage\", \"multi_stage\"]);\nexport const handbookLmsAssignmentResponseModeSchema = z.enum([\"written\", \"in_person\"]);\nexport const handbookLmsAssignmentStatusSchema = z.enum([\"pending\", \"submitted\", \"completed\"]);\nexport const handbookLmsQuestionResponseTypeSchema = z.enum([\"short_text\", \"long_text\", \"checklist\"]);\n\nconst optionalNullableString = z.string().nullable();\nconst requiredSlug = z.string().trim().min(1).max(120).regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/);\nconst requiredDisplayOrder = z.number().int().min(1);\n\nexport const handbookLmsQuestionSchema = z.object({\n id: z.string().min(1),\n module_id: z.string().min(1),\n stage_id: z.string().min(1),\n prompt: z.string().trim().min(1),\n response_type: handbookLmsQuestionResponseTypeSchema,\n display_order: requiredDisplayOrder,\n active: z.boolean()\n});\n\nexport const handbookLmsSectionSummarySchema = z.object({\n id: z.string().min(1),\n course_id: z.string().min(1),\n slug: requiredSlug,\n title: z.string().trim().min(1),\n description: optionalNullableString,\n display_order: requiredDisplayOrder,\n active: z.boolean()\n});\n\nexport const handbookLmsStageSchema = z.object({\n id: z.string().min(1),\n module_id: z.string().min(1),\n title: z.string().trim().min(1),\n content_md: z.string(),\n display_order: requiredDisplayOrder,\n active: z.boolean(),\n questions: z.array(handbookLmsQuestionSchema)\n});\n\nexport const handbookLmsModuleSchema = z.object({\n id: z.string().min(1),\n course_id: z.string().min(1),\n section_id: z.string().min(1),\n slug: requiredSlug,\n module_type: z.string().trim().min(1),\n module_mode: handbookLmsModuleModeSchema,\n title: z.string().trim().min(1),\n summary: z.string().trim().min(1),\n display_order: requiredDisplayOrder,\n active: z.boolean(),\n archived_at: optionalNullableString,\n section: handbookLmsSectionSummarySchema.nullable().optional(),\n stages: z.array(handbookLmsStageSchema),\n exercises: z.array(handbookLmsQuestionSchema).optional()\n});\n\nexport const handbookLmsSectionSchema = handbookLmsSectionSummarySchema.extend({\n modules: z.array(handbookLmsModuleSchema)\n});\n\nexport const handbookLmsCourseSchema = z.object({\n id: z.string().min(1),\n handbook_id: optionalNullableString,\n owner_scope: handbookLmsOwnerScopeSchema,\n slug: requiredSlug,\n title: z.string().trim().min(1),\n description: optionalNullableString,\n published: z.boolean(),\n active: z.boolean(),\n created_at: z.string(),\n updated_at: z.string()\n});\n\nexport const handbookLmsCourseUpsertInputSchema = z.object({\n owner_scope: handbookLmsOwnerScopeSchema.default(\"handbook\"),\n slug: requiredSlug,\n title: z.string().trim().min(1).max(200),\n description: z.string().trim().max(10000).nullable().optional(),\n published: z.boolean().optional(),\n active: z.boolean().optional()\n});\n\nexport const handbookLmsCourseLibraryItemSchema = z.object({\n id: z.string().min(1),\n slug: requiredSlug,\n title: z.string().trim().min(1),\n description: optionalNullableString,\n owner_scope: handbookLmsOwnerScopeSchema,\n handbook_id: optionalNullableString,\n published: z.boolean(),\n active: z.boolean(),\n total_modules: z.number().int().min(0),\n passed_modules: z.number().int().min(0),\n in_progress_modules: z.number().int().min(0),\n submitted_modules: z.number().int().min(0)\n});\n\nexport const handbookLmsProgressSchema = z.object({\n module_id: z.string().min(1),\n status: handbookLmsProgressStatusSchema,\n completed_at: optionalNullableString,\n submitted_at: optionalNullableString,\n reviewed_at: optionalNullableString,\n reviewed_by: optionalNullableString,\n review_feedback_md: optionalNullableString\n});\n\nexport const handbookLmsQuestionResponseSchema = z.object({\n id: z.string().min(1),\n module_id: z.string().min(1),\n question_id: z.string().min(1),\n response_md: z.string(),\n updated_at: z.string(),\n submitted_at: optionalNullableString\n});\n\nexport const handbookLmsModuleAssignmentSchema = z.object({\n id: z.string().min(1),\n module_id: z.string().min(1),\n learner_user_id: z.string().min(1),\n assigned_by_user_id: z.string().min(1),\n prompt: z.string(),\n target_question_ids: z.array(z.string().min(1)).nullable(),\n target_original_answers_json: z.record(z.string()).nullable(),\n target_updated_answers_json: z.record(z.string()).nullable(),\n response_mode: handbookLmsAssignmentResponseModeSchema,\n learner_assignment_response_md: optionalNullableString,\n learner_additional_response_md: optionalNullableString,\n learner_response_md: optionalNullableString,\n status: handbookLmsAssignmentStatusSchema,\n due_at: optionalNullableString,\n submitted_at: optionalNullableString,\n completed_at: optionalNullableString,\n reviewer_note_md: optionalNullableString,\n created_at: z.string(),\n updated_at: z.string(),\n learner_name: optionalNullableString.optional(),\n assigned_by_name: optionalNullableString.optional()\n});\n\nexport const handbookLmsLearningRecordSchema = z.object({\n module: handbookLmsModuleSchema,\n progress: handbookLmsProgressSchema,\n responses: z.array(handbookLmsQuestionResponseSchema),\n assignments: z.array(handbookLmsModuleAssignmentSchema)\n});\n\nexport const handbookLmsLearningSummarySchema = z.object({\n records: z.array(handbookLmsLearningRecordSchema),\n review_queue: z.array(handbookLmsModuleAssignmentSchema)\n});\n\nexport const handbookLmsLearnerOptionSchema = z.object({\n id: z.string().min(1),\n name: optionalNullableString,\n email: optionalNullableString\n});\n\nexport const handbookLmsCourseLibraryItemListSchema = z.array(handbookLmsCourseLibraryItemSchema);\nexport const handbookLmsSectionListSchema = z.array(handbookLmsSectionSchema);\nexport const handbookLmsLearnerOptionListSchema = z.array(handbookLmsLearnerOptionSchema);\n\nexport const handbookLmsCreateSectionInputSchema = z.object({\n slug: requiredSlug,\n title: z.string().trim().min(1).max(200),\n description: z.string().trim().max(2000).nullable().optional(),\n display_order: requiredDisplayOrder.optional(),\n active: z.boolean().optional()\n});\n\nexport const handbookLmsUpdateSectionInputSchema = z.object({\n slug: requiredSlug.optional(),\n title: z.string().trim().min(1).max(200).optional(),\n description: z.string().trim().max(2000).nullable().optional(),\n display_order: requiredDisplayOrder.optional(),\n active: z.boolean().optional()\n});\n\nexport const handbookLmsCreateModuleInputSchema = z.object({\n section_id: z.string().min(1),\n slug: requiredSlug,\n module_type: z.string().trim().min(1).max(120).optional(),\n module_mode: handbookLmsModuleModeSchema,\n title: z.string().trim().min(1).max(200),\n summary: z.string().trim().min(1).max(2000),\n display_order: requiredDisplayOrder.optional(),\n active: z.boolean().optional()\n});\n\nexport const handbookLmsUpdateModuleInputSchema = z.object({\n section_id: z.string().min(1).optional(),\n slug: requiredSlug.optional(),\n module_type: z.string().trim().min(1).max(120).optional(),\n module_mode: handbookLmsModuleModeSchema.optional(),\n title: z.string().trim().min(1).max(200).optional(),\n summary: z.string().trim().min(1).max(2000).optional(),\n display_order: requiredDisplayOrder.optional(),\n active: z.boolean().optional()\n});\n\nexport const handbookLmsCreateStageInputSchema = z.object({\n title: z.string().trim().min(1).max(200),\n content_md: z.string().max(100000),\n display_order: requiredDisplayOrder.optional(),\n active: z.boolean().optional()\n});\n\nexport const handbookLmsUpdateStageInputSchema = z.object({\n title: z.string().trim().min(1).max(200).optional(),\n content_md: z.string().max(100000).optional(),\n display_order: requiredDisplayOrder.optional(),\n active: z.boolean().optional()\n});\n\nexport const handbookLmsCreateQuestionInputSchema = z.object({\n prompt: z.string().trim().min(1).max(20000),\n response_type: handbookLmsQuestionResponseTypeSchema,\n display_order: requiredDisplayOrder.optional(),\n active: z.boolean().optional()\n});\n\nexport const handbookLmsUpdateQuestionInputSchema = z.object({\n stage_id: z.string().min(1).optional(),\n module_id: z.string().min(1).optional(),\n prompt: z.string().trim().min(1).max(20000).optional(),\n response_type: handbookLmsQuestionResponseTypeSchema.optional(),\n display_order: requiredDisplayOrder.optional(),\n active: z.boolean().optional()\n});\n\nexport const handbookLmsReorderPayloadSchema = z.object({\n sections: z.array(z.object({ id: z.string().min(1), display_order: requiredDisplayOrder })).optional(),\n modules: z\n .array(z.object({ id: z.string().min(1), section_id: z.string().min(1), display_order: requiredDisplayOrder }))\n .optional(),\n stages: z\n .array(z.object({ id: z.string().min(1), module_id: z.string().min(1), display_order: requiredDisplayOrder }))\n .optional(),\n questions: z\n .array(\n z.object({\n id: z.string().min(1),\n stage_id: z.string().min(1),\n module_id: z.string().min(1),\n display_order: requiredDisplayOrder\n })\n )\n .optional()\n});\n\nexport const handbookLmsSaveQuestionResponseInputSchema = z.object({\n response_md: z.string().trim().min(1).max(25000)\n});\n\nexport const handbookLmsReviewModuleInputSchema = z.object({\n moduleId: z.string().min(1),\n learner_user_id: z.string().min(1),\n status: z.enum([\"pending\", \"submitted\", \"passed\", \"revision_required\"]),\n review_feedback_md: z.string().trim().max(25000).optional(),\n assignment: z\n .object({\n prompt: z.string().trim().max(10000).optional(),\n response_mode: handbookLmsAssignmentResponseModeSchema.optional(),\n target_question_ids: z.array(z.string().min(1)).max(200).optional(),\n due_at: z.string().nullable().optional(),\n reviewer_note_md: z.string().trim().max(10000).nullable().optional()\n })\n .nullable()\n .optional()\n});\n\nexport const handbookLmsUpdateAssignmentDataSchema = z.object({\n learner_assignment_response_md: z.string().trim().max(25000).nullable().optional(),\n learner_additional_response_md: z.string().trim().max(25000).nullable().optional(),\n learner_response_md: z.string().trim().max(25000).nullable().optional(),\n status: handbookLmsAssignmentStatusSchema.optional(),\n reviewer_note_md: z.string().trim().max(10000).nullable().optional()\n});\n\nexport const handbookLmsUpdateAssignmentInputSchema = z.object({\n assignmentId: z.string().min(1),\n data: handbookLmsUpdateAssignmentDataSchema\n});\n\nexport const handbookLmsTrainingStepRequirementsInputSchema = z.object({\n required_course_ids: z.array(z.string().min(1)).max(200)\n});\n"]}
@@ -0,0 +1,3 @@
1
+
2
+ //# sourceMappingURL=chunk-HOQRIQ33.js.map
3
+ //# sourceMappingURL=chunk-HOQRIQ33.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-HOQRIQ33.js"}
@@ -0,0 +1,264 @@
1
+ import { useState, useCallback, useEffect, useMemo } from 'react';
2
+
3
+ // src/react-headless/hooks.ts
4
+ var errorMessage = (error, fallback) => {
5
+ if (error instanceof Error) return error.message || fallback;
6
+ return fallback;
7
+ };
8
+ var sortCurriculum = (items) => [...items].sort((a, b) => a.display_order - b.display_order).map((section) => ({
9
+ ...section,
10
+ modules: [...section.modules ?? []].sort((a, b) => a.display_order - b.display_order).map((module) => ({
11
+ ...module,
12
+ stages: [...module.stages ?? []].sort((a, b) => a.display_order - b.display_order).map((stage) => ({
13
+ ...stage,
14
+ questions: [...stage.questions ?? []].sort((a, b) => a.display_order - b.display_order)
15
+ }))
16
+ }))
17
+ }));
18
+ var useLmsCurriculumEditor = ({
19
+ adapter,
20
+ courseSlug,
21
+ enabled = true
22
+ }) => {
23
+ const [sections, setSections] = useState([]);
24
+ const [isLoading, setIsLoading] = useState(false);
25
+ const [isSaving, setIsSaving] = useState(false);
26
+ const [error, setError] = useState(null);
27
+ const reload = useCallback(async () => {
28
+ if (!enabled || !courseSlug) return;
29
+ setIsLoading(true);
30
+ setError(null);
31
+ try {
32
+ const next = await adapter.getAdminCurriculum(courseSlug);
33
+ setSections(sortCurriculum(next));
34
+ } catch (err) {
35
+ setError(errorMessage(err, "Unable to load curriculum."));
36
+ } finally {
37
+ setIsLoading(false);
38
+ }
39
+ }, [adapter, courseSlug, enabled]);
40
+ useEffect(() => {
41
+ void reload();
42
+ }, [reload]);
43
+ const runSave = useCallback(
44
+ async (action, fallback) => {
45
+ setIsSaving(true);
46
+ setError(null);
47
+ try {
48
+ await action();
49
+ await reload();
50
+ return { ok: true, error: null };
51
+ } catch (err) {
52
+ const message = errorMessage(err, fallback);
53
+ setError(message);
54
+ return { ok: false, error: message };
55
+ } finally {
56
+ setIsSaving(false);
57
+ }
58
+ },
59
+ [reload]
60
+ );
61
+ return {
62
+ sections,
63
+ setSections,
64
+ isLoading,
65
+ isSaving,
66
+ error,
67
+ reload,
68
+ createSection: (data) => runSave(() => adapter.createSection({ courseSlug, data }), "Unable to create section."),
69
+ updateSection: (sectionId, data) => runSave(() => adapter.updateSection({ courseSlug, sectionId, data }), "Unable to update section."),
70
+ archiveSection: (sectionId) => runSave(() => adapter.archiveSection({ courseSlug, sectionId }), "Unable to archive section."),
71
+ createModule: (data) => runSave(() => adapter.createModule({ courseSlug, data }), "Unable to create module."),
72
+ updateModule: (moduleId, data) => runSave(() => adapter.updateModule({ courseSlug, moduleId, data }), "Unable to update module."),
73
+ archiveModule: (moduleId) => runSave(() => adapter.archiveModule({ courseSlug, moduleId }), "Unable to archive module."),
74
+ createStage: (moduleId, data) => runSave(() => adapter.createStage({ courseSlug, moduleId, data }), "Unable to create stage."),
75
+ updateStage: (stageId, data) => runSave(() => adapter.updateStage({ courseSlug, stageId, data }), "Unable to update stage."),
76
+ archiveStage: (stageId) => runSave(() => adapter.archiveStage({ courseSlug, stageId }), "Unable to archive stage."),
77
+ createQuestion: (stageId, data) => runSave(() => adapter.createQuestion({ courseSlug, stageId, data }), "Unable to create question."),
78
+ updateQuestion: (questionId, data) => runSave(() => adapter.updateQuestion({ courseSlug, questionId, data }), "Unable to update question."),
79
+ archiveQuestion: (questionId) => runSave(() => adapter.archiveQuestion({ courseSlug, questionId }), "Unable to archive question."),
80
+ reorderCurriculum: (data) => runSave(() => adapter.reorderCurriculum({ courseSlug, data }), "Unable to reorder curriculum.")
81
+ };
82
+ };
83
+ var useLmsReviewWorkspace = ({
84
+ adapter,
85
+ courseSlug,
86
+ enabled = true
87
+ }) => {
88
+ const [learners, setLearners] = useState([]);
89
+ const [selectedLearnerId, setSelectedLearnerId] = useState("");
90
+ const [summary, setSummary] = useState(null);
91
+ const [isLoading, setIsLoading] = useState(false);
92
+ const [isSaving, setIsSaving] = useState(false);
93
+ const [error, setError] = useState(null);
94
+ const loadLearners = useCallback(async () => {
95
+ if (!enabled) return;
96
+ try {
97
+ const rows = await adapter.listLearners();
98
+ setLearners(rows);
99
+ if (!selectedLearnerId && rows[0]) {
100
+ setSelectedLearnerId(rows[0].id);
101
+ }
102
+ } catch (err) {
103
+ setError(errorMessage(err, "Unable to load learners."));
104
+ }
105
+ }, [adapter, enabled, selectedLearnerId]);
106
+ const loadSummary = useCallback(async () => {
107
+ if (!enabled || !courseSlug || !selectedLearnerId) return;
108
+ setIsLoading(true);
109
+ setError(null);
110
+ try {
111
+ const next = await adapter.getLearningSummary({ courseSlug, learnerUserId: selectedLearnerId });
112
+ setSummary(next);
113
+ } catch (err) {
114
+ setError(errorMessage(err, "Unable to load learner summary."));
115
+ } finally {
116
+ setIsLoading(false);
117
+ }
118
+ }, [adapter, courseSlug, enabled, selectedLearnerId]);
119
+ useEffect(() => {
120
+ void loadLearners();
121
+ }, [loadLearners]);
122
+ useEffect(() => {
123
+ void loadSummary();
124
+ }, [loadSummary]);
125
+ const runSave = useCallback(
126
+ async (action, fallback) => {
127
+ setIsSaving(true);
128
+ setError(null);
129
+ try {
130
+ await action();
131
+ await loadSummary();
132
+ return { ok: true, error: null };
133
+ } catch (err) {
134
+ const message = errorMessage(err, fallback);
135
+ setError(message);
136
+ return { ok: false, error: message };
137
+ } finally {
138
+ setIsSaving(false);
139
+ }
140
+ },
141
+ [loadSummary]
142
+ );
143
+ const records = useMemo(() => summary?.records ?? [], [summary?.records]);
144
+ return {
145
+ learners,
146
+ selectedLearnerId,
147
+ setSelectedLearnerId,
148
+ summary,
149
+ records,
150
+ isLoading,
151
+ isSaving,
152
+ error,
153
+ reload: loadSummary,
154
+ reviewModule: (data) => runSave(() => adapter.reviewModule({ courseSlug, data }), "Unable to update review."),
155
+ updateAssignment: (data) => runSave(() => adapter.updateAssignment({ courseSlug, data }), "Unable to update assignment.")
156
+ };
157
+ };
158
+ var useLmsLearningWorkspace = ({
159
+ adapter,
160
+ courseSlug,
161
+ learnerUserId = null,
162
+ enabled = true
163
+ }) => {
164
+ const [summary, setSummary] = useState(null);
165
+ const [isLoading, setIsLoading] = useState(false);
166
+ const [isSavingQuestion, setIsSavingQuestion] = useState(false);
167
+ const [isSubmittingModule, setIsSubmittingModule] = useState(false);
168
+ const [isUpdatingAssignment, setIsUpdatingAssignment] = useState(false);
169
+ const [error, setError] = useState(null);
170
+ const loadSummary = useCallback(async () => {
171
+ if (!enabled || !courseSlug) {
172
+ setSummary(null);
173
+ return;
174
+ }
175
+ setIsLoading(true);
176
+ setError(null);
177
+ try {
178
+ const next = await adapter.getLearningSummary({ courseSlug, learnerUserId });
179
+ setSummary(next);
180
+ } catch (err) {
181
+ setError(errorMessage(err, "Unable to load learning summary."));
182
+ } finally {
183
+ setIsLoading(false);
184
+ }
185
+ }, [adapter, courseSlug, enabled, learnerUserId]);
186
+ useEffect(() => {
187
+ void loadSummary();
188
+ }, [loadSummary]);
189
+ const saveQuestionResponse = useCallback(
190
+ async (data, opts) => {
191
+ setIsSavingQuestion(true);
192
+ setError(null);
193
+ try {
194
+ await adapter.saveQuestionResponse(data);
195
+ if (opts?.reload) await loadSummary();
196
+ return { ok: true, error: null };
197
+ } catch (err) {
198
+ const message = errorMessage(err, "Unable to save response.");
199
+ setError(message);
200
+ return { ok: false, error: message };
201
+ } finally {
202
+ setIsSavingQuestion(false);
203
+ }
204
+ },
205
+ [adapter, loadSummary]
206
+ );
207
+ const submitModule = useCallback(
208
+ async (data, opts) => {
209
+ setIsSubmittingModule(true);
210
+ setError(null);
211
+ try {
212
+ await adapter.submitModule(data);
213
+ if (opts?.reload ?? true) await loadSummary();
214
+ return { ok: true, error: null };
215
+ } catch (err) {
216
+ const message = errorMessage(err, "Unable to submit module.");
217
+ setError(message);
218
+ return { ok: false, error: message };
219
+ } finally {
220
+ setIsSubmittingModule(false);
221
+ }
222
+ },
223
+ [adapter, loadSummary]
224
+ );
225
+ const updateAssignment = useCallback(
226
+ async (data, opts) => {
227
+ setIsUpdatingAssignment(true);
228
+ setError(null);
229
+ try {
230
+ await adapter.updateAssignment({ courseSlug, data });
231
+ if (opts?.reload ?? true) await loadSummary();
232
+ return { ok: true, error: null };
233
+ } catch (err) {
234
+ const message = errorMessage(err, "Unable to update assignment.");
235
+ setError(message);
236
+ return { ok: false, error: message };
237
+ } finally {
238
+ setIsUpdatingAssignment(false);
239
+ }
240
+ },
241
+ [adapter, courseSlug, loadSummary]
242
+ );
243
+ const records = useMemo(() => summary?.records ?? [], [summary?.records]);
244
+ const reviewQueue = useMemo(() => summary?.review_queue ?? [], [summary?.review_queue]);
245
+ return {
246
+ summary,
247
+ records,
248
+ reviewQueue,
249
+ isLoading,
250
+ isSavingQuestion,
251
+ isSubmittingModule,
252
+ isUpdatingAssignment,
253
+ isSaving: isSavingQuestion || isSubmittingModule || isUpdatingAssignment,
254
+ error,
255
+ reload: loadSummary,
256
+ saveQuestionResponse,
257
+ submitModule,
258
+ updateAssignment
259
+ };
260
+ };
261
+
262
+ export { useLmsCurriculumEditor, useLmsLearningWorkspace, useLmsReviewWorkspace };
263
+ //# sourceMappingURL=chunk-N4WYUTCR.js.map
264
+ //# sourceMappingURL=chunk-N4WYUTCR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/react-headless/hooks.ts"],"names":[],"mappings":"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","file":"chunk-N4WYUTCR.js","sourcesContent":["import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport type {\n HandbookLmsReorderPayload,\n HandbookLmsSection,\n HandbookLmsUpdateAssignmentInput,\n HandbookLmsReviewModuleInput,\n HandbookLmsLearningSummary,\n HandbookLmsLearnerOption\n} from \"../core/types\";\nimport type { HandbookLmsAdapter } from \"../core/adapter\";\n\nconst errorMessage = (error: unknown, fallback: string) => {\n if (error instanceof Error) return error.message || fallback;\n return fallback;\n};\n\nconst sortCurriculum = (items: HandbookLmsSection[]) =>\n [...items]\n .sort((a, b) => a.display_order - b.display_order)\n .map((section) => ({\n ...section,\n modules: [...(section.modules ?? [])]\n .sort((a, b) => a.display_order - b.display_order)\n .map((module) => ({\n ...module,\n stages: [...(module.stages ?? [])]\n .sort((a, b) => a.display_order - b.display_order)\n .map((stage) => ({\n ...stage,\n questions: [...(stage.questions ?? [])].sort((a, b) => a.display_order - b.display_order)\n }))\n }))\n }));\n\nexport const useLmsCurriculumEditor = ({\n adapter,\n courseSlug,\n enabled = true\n}: {\n adapter: HandbookLmsAdapter;\n courseSlug: string;\n enabled?: boolean;\n}) => {\n const [sections, setSections] = useState<HandbookLmsSection[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [isSaving, setIsSaving] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const reload = useCallback(async () => {\n if (!enabled || !courseSlug) return;\n setIsLoading(true);\n setError(null);\n try {\n const next = await adapter.getAdminCurriculum(courseSlug);\n setSections(sortCurriculum(next));\n } catch (err) {\n setError(errorMessage(err, \"Unable to load curriculum.\"));\n } finally {\n setIsLoading(false);\n }\n }, [adapter, courseSlug, enabled]);\n\n useEffect(() => {\n void reload();\n }, [reload]);\n\n const runSave = useCallback(\n async (action: () => Promise<void>, fallback: string) => {\n setIsSaving(true);\n setError(null);\n try {\n await action();\n await reload();\n return { ok: true as const, error: null };\n } catch (err) {\n const message = errorMessage(err, fallback);\n setError(message);\n return { ok: false as const, error: message };\n } finally {\n setIsSaving(false);\n }\n },\n [reload]\n );\n\n return {\n sections,\n setSections,\n isLoading,\n isSaving,\n error,\n reload,\n createSection: (data: Parameters<HandbookLmsAdapter[\"createSection\"]>[0][\"data\"]) =>\n runSave(() => adapter.createSection({ courseSlug, data }), \"Unable to create section.\"),\n updateSection: (sectionId: string, data: Parameters<HandbookLmsAdapter[\"updateSection\"]>[0][\"data\"]) =>\n runSave(() => adapter.updateSection({ courseSlug, sectionId, data }), \"Unable to update section.\"),\n archiveSection: (sectionId: string) =>\n runSave(() => adapter.archiveSection({ courseSlug, sectionId }), \"Unable to archive section.\"),\n createModule: (data: Parameters<HandbookLmsAdapter[\"createModule\"]>[0][\"data\"]) =>\n runSave(() => adapter.createModule({ courseSlug, data }), \"Unable to create module.\"),\n updateModule: (moduleId: string, data: Parameters<HandbookLmsAdapter[\"updateModule\"]>[0][\"data\"]) =>\n runSave(() => adapter.updateModule({ courseSlug, moduleId, data }), \"Unable to update module.\"),\n archiveModule: (moduleId: string) =>\n runSave(() => adapter.archiveModule({ courseSlug, moduleId }), \"Unable to archive module.\"),\n createStage: (moduleId: string, data: Parameters<HandbookLmsAdapter[\"createStage\"]>[0][\"data\"]) =>\n runSave(() => adapter.createStage({ courseSlug, moduleId, data }), \"Unable to create stage.\"),\n updateStage: (stageId: string, data: Parameters<HandbookLmsAdapter[\"updateStage\"]>[0][\"data\"]) =>\n runSave(() => adapter.updateStage({ courseSlug, stageId, data }), \"Unable to update stage.\"),\n archiveStage: (stageId: string) =>\n runSave(() => adapter.archiveStage({ courseSlug, stageId }), \"Unable to archive stage.\"),\n createQuestion: (stageId: string, data: Parameters<HandbookLmsAdapter[\"createQuestion\"]>[0][\"data\"]) =>\n runSave(() => adapter.createQuestion({ courseSlug, stageId, data }), \"Unable to create question.\"),\n updateQuestion: (questionId: string, data: Parameters<HandbookLmsAdapter[\"updateQuestion\"]>[0][\"data\"]) =>\n runSave(() => adapter.updateQuestion({ courseSlug, questionId, data }), \"Unable to update question.\"),\n archiveQuestion: (questionId: string) =>\n runSave(() => adapter.archiveQuestion({ courseSlug, questionId }), \"Unable to archive question.\"),\n reorderCurriculum: (data: HandbookLmsReorderPayload) =>\n runSave(() => adapter.reorderCurriculum({ courseSlug, data }), \"Unable to reorder curriculum.\")\n };\n};\n\nexport const useLmsReviewWorkspace = ({\n adapter,\n courseSlug,\n enabled = true\n}: {\n adapter: HandbookLmsAdapter;\n courseSlug: string;\n enabled?: boolean;\n}) => {\n const [learners, setLearners] = useState<HandbookLmsLearnerOption[]>([]);\n const [selectedLearnerId, setSelectedLearnerId] = useState(\"\");\n const [summary, setSummary] = useState<HandbookLmsLearningSummary | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [isSaving, setIsSaving] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const loadLearners = useCallback(async () => {\n if (!enabled) return;\n try {\n const rows = await adapter.listLearners();\n setLearners(rows);\n if (!selectedLearnerId && rows[0]) {\n setSelectedLearnerId(rows[0].id);\n }\n } catch (err) {\n setError(errorMessage(err, \"Unable to load learners.\"));\n }\n }, [adapter, enabled, selectedLearnerId]);\n\n const loadSummary = useCallback(async () => {\n if (!enabled || !courseSlug || !selectedLearnerId) return;\n setIsLoading(true);\n setError(null);\n try {\n const next = await adapter.getLearningSummary({ courseSlug, learnerUserId: selectedLearnerId });\n setSummary(next);\n } catch (err) {\n setError(errorMessage(err, \"Unable to load learner summary.\"));\n } finally {\n setIsLoading(false);\n }\n }, [adapter, courseSlug, enabled, selectedLearnerId]);\n\n useEffect(() => {\n void loadLearners();\n }, [loadLearners]);\n\n useEffect(() => {\n void loadSummary();\n }, [loadSummary]);\n\n const runSave = useCallback(\n async (action: () => Promise<void>, fallback: string) => {\n setIsSaving(true);\n setError(null);\n try {\n await action();\n await loadSummary();\n return { ok: true as const, error: null };\n } catch (err) {\n const message = errorMessage(err, fallback);\n setError(message);\n return { ok: false as const, error: message };\n } finally {\n setIsSaving(false);\n }\n },\n [loadSummary]\n );\n\n const records = useMemo(() => summary?.records ?? [], [summary?.records]);\n\n return {\n learners,\n selectedLearnerId,\n setSelectedLearnerId,\n summary,\n records,\n isLoading,\n isSaving,\n error,\n reload: loadSummary,\n reviewModule: (data: HandbookLmsReviewModuleInput) =>\n runSave(() => adapter.reviewModule({ courseSlug, data }), \"Unable to update review.\"),\n updateAssignment: (data: HandbookLmsUpdateAssignmentInput) =>\n runSave(() => adapter.updateAssignment({ courseSlug, data }), \"Unable to update assignment.\")\n };\n};\n\nexport const useLmsLearningWorkspace = ({\n adapter,\n courseSlug,\n learnerUserId = null,\n enabled = true\n}: {\n adapter: HandbookLmsAdapter;\n courseSlug: string;\n learnerUserId?: string | null;\n enabled?: boolean;\n}) => {\n const [summary, setSummary] = useState<HandbookLmsLearningSummary | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [isSavingQuestion, setIsSavingQuestion] = useState(false);\n const [isSubmittingModule, setIsSubmittingModule] = useState(false);\n const [isUpdatingAssignment, setIsUpdatingAssignment] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const loadSummary = useCallback(async () => {\n if (!enabled || !courseSlug) {\n setSummary(null);\n return;\n }\n\n setIsLoading(true);\n setError(null);\n try {\n const next = await adapter.getLearningSummary({ courseSlug, learnerUserId });\n setSummary(next);\n } catch (err) {\n setError(errorMessage(err, \"Unable to load learning summary.\"));\n } finally {\n setIsLoading(false);\n }\n }, [adapter, courseSlug, enabled, learnerUserId]);\n\n useEffect(() => {\n void loadSummary();\n }, [loadSummary]);\n\n const saveQuestionResponse = useCallback(\n async (\n data: Parameters<HandbookLmsAdapter[\"saveQuestionResponse\"]>[0],\n opts?: { reload?: boolean }\n ) => {\n setIsSavingQuestion(true);\n setError(null);\n try {\n await adapter.saveQuestionResponse(data);\n if (opts?.reload) await loadSummary();\n return { ok: true as const, error: null };\n } catch (err) {\n const message = errorMessage(err, \"Unable to save response.\");\n setError(message);\n return { ok: false as const, error: message };\n } finally {\n setIsSavingQuestion(false);\n }\n },\n [adapter, loadSummary]\n );\n\n const submitModule = useCallback(\n async (\n data: Parameters<HandbookLmsAdapter[\"submitModule\"]>[0],\n opts?: { reload?: boolean }\n ) => {\n setIsSubmittingModule(true);\n setError(null);\n try {\n await adapter.submitModule(data);\n if (opts?.reload ?? true) await loadSummary();\n return { ok: true as const, error: null };\n } catch (err) {\n const message = errorMessage(err, \"Unable to submit module.\");\n setError(message);\n return { ok: false as const, error: message };\n } finally {\n setIsSubmittingModule(false);\n }\n },\n [adapter, loadSummary]\n );\n\n const updateAssignment = useCallback(\n async (\n data: HandbookLmsUpdateAssignmentInput,\n opts?: { reload?: boolean }\n ) => {\n setIsUpdatingAssignment(true);\n setError(null);\n try {\n await adapter.updateAssignment({ courseSlug, data });\n if (opts?.reload ?? true) await loadSummary();\n return { ok: true as const, error: null };\n } catch (err) {\n const message = errorMessage(err, \"Unable to update assignment.\");\n setError(message);\n return { ok: false as const, error: message };\n } finally {\n setIsUpdatingAssignment(false);\n }\n },\n [adapter, courseSlug, loadSummary]\n );\n\n const records = useMemo(() => summary?.records ?? [], [summary?.records]);\n const reviewQueue = useMemo(() => summary?.review_queue ?? [], [summary?.review_queue]);\n\n return {\n summary,\n records,\n reviewQueue,\n isLoading,\n isSavingQuestion,\n isSubmittingModule,\n isUpdatingAssignment,\n isSaving: isSavingQuestion || isSubmittingModule || isUpdatingAssignment,\n error,\n reload: loadSummary,\n saveQuestionResponse,\n submitModule,\n updateAssignment\n };\n};\n"]}
@@ -0,0 +1,6 @@
1
+ // src/config/types.ts
2
+ var defineHandbookLmsConfig = (config) => config;
3
+
4
+ export { defineHandbookLmsConfig };
5
+ //# sourceMappingURL=chunk-PYWAXMRT.js.map
6
+ //# sourceMappingURL=chunk-PYWAXMRT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/config/types.ts"],"names":[],"mappings":";AAkDO,IAAM,uBAAA,GAA0B,CAAgC,MAAA,KAAc","file":"chunk-PYWAXMRT.js","sourcesContent":["export type HandbookLmsUiConfig = {\n labels: {\n editorTitle: string;\n reviewTitle: string;\n backButton: string;\n addSection: string;\n addModule: string;\n addStage: string;\n addQuestion: string;\n editAction: string;\n archiveAction: string;\n restoreAction: string;\n saveAction: string;\n cancelAction: string;\n saveResponseAction: string;\n submitModuleAction: string;\n passAction: string;\n requestRevisionAction: string;\n applyStatusAction: string;\n noModulesMessage: string;\n autosaveNotice: string;\n };\n workflow: {\n enableModuleDragAndDrop: boolean;\n enableStatusOverride: boolean;\n enableFollowUpAssignments: boolean;\n enableTargetedQuestionSelection: boolean;\n enableAutosaveNotifications: boolean;\n autosaveNotificationCooldownMs: number;\n };\n validation: {\n slugPattern: RegExp;\n slugPatternMessage: string;\n requiredTitleMessage: string;\n requiredSlugMessage: string;\n requiredSummaryMessage: string;\n requiredPromptMessage: string;\n };\n naming: {\n course: string;\n section: string;\n module: string;\n stage: string;\n question: string;\n learner: string;\n reviewer: string;\n assignment: string;\n };\n};\n\nexport const defineHandbookLmsConfig = <T extends HandbookLmsUiConfig>(config: T) => config;\r\n"]}