@academy-sdk/sdk 0.1.1 → 0.2.1

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 (239) hide show
  1. package/dist/academy-sdk-sdk-v1.0.0.zip +0 -0
  2. package/dist/bundle.js +70 -0
  3. package/dist/manifest.json +5 -0
  4. package/dist/styles.css +3307 -0
  5. package/package.json +41 -46
  6. package/src/components/atoms/Avatar.tsx +38 -0
  7. package/src/components/atoms/Badge.tsx +32 -0
  8. package/src/components/atoms/Button.tsx +48 -0
  9. package/src/components/atoms/Card.tsx +33 -0
  10. package/src/components/atoms/Input.tsx +39 -0
  11. package/src/components/atoms/ProgressBar.tsx +52 -0
  12. package/src/components/atoms/Tabs.tsx +47 -0
  13. package/{dist/components/atoms/index.d.ts → src/components/atoms/index.ts} +0 -1
  14. package/{dist/components/index.d.ts → src/components/index.ts} +7 -1
  15. package/src/components/molecules/CourseCard.tsx +215 -0
  16. package/src/components/molecules/EmptyState.tsx +23 -0
  17. package/src/components/molecules/LoadingSpinner.tsx +27 -0
  18. package/src/components/molecules/PageHeader.tsx +22 -0
  19. package/src/components/molecules/Pagination.tsx +82 -0
  20. package/src/components/molecules/SearchInput.tsx +35 -0
  21. package/{dist/components/molecules/index.d.ts → src/components/molecules/index.ts} +0 -1
  22. package/src/components/organisms/CourseSidebar.tsx +276 -0
  23. package/src/components/organisms/LearnerNavbar.tsx +129 -0
  24. package/src/components/organisms/LearnerSidebar.tsx +148 -0
  25. package/src/components/organisms/LessonBookmarks.tsx +128 -0
  26. package/src/components/organisms/LessonNotes.tsx +153 -0
  27. package/{dist/components/organisms/index.d.ts → src/components/organisms/index.ts} +0 -1
  28. package/src/components/pages/BundleDetailPage.tsx +388 -0
  29. package/src/components/pages/CatalogBundlesPage.tsx +96 -0
  30. package/src/components/pages/CatalogCoursesPage.tsx +299 -0
  31. package/src/components/pages/CourseDetailPage.tsx +582 -0
  32. package/src/components/pages/CoursePlayerPage.tsx +481 -0
  33. package/src/components/pages/CreatorProfilePage.tsx +161 -0
  34. package/src/components/pages/LearnerSettingsPage.tsx +58 -0
  35. package/src/components/pages/ManualReviewDetailPage.tsx +254 -0
  36. package/src/components/pages/ManualReviewPage.tsx +228 -0
  37. package/src/components/pages/MessagesPage.tsx +285 -0
  38. package/src/components/pages/MyLearningPage.tsx +239 -0
  39. package/src/components/pages/PaymentCancelPage.tsx +74 -0
  40. package/src/components/pages/PaymentSuccessPage.tsx +73 -0
  41. package/{dist/components/pages/index.d.ts → src/components/pages/index.ts} +0 -1
  42. package/src/components/utils.ts +6 -0
  43. package/src/contracts/components.contract.ts +89 -0
  44. package/{dist/contracts/index.d.ts → src/contracts/index.ts} +0 -1
  45. package/src/contracts/layout.contract.ts +36 -0
  46. package/src/contracts/pages.contract.ts +275 -0
  47. package/src/contracts/template.contract.ts +100 -0
  48. package/src/default-template.tsx +52 -0
  49. package/{dist/hooks/index.d.ts → src/hooks/index.ts} +15 -1
  50. package/src/hooks/sdk-context.tsx +152 -0
  51. package/src/hooks/useAiCoach.ts +27 -0
  52. package/src/hooks/useBookmarks.ts +35 -0
  53. package/{dist/hooks/useCourseSearch.d.ts → src/hooks/useCourseSearch.ts} +8 -5
  54. package/{dist/hooks/useDebounce.d.ts → src/hooks/useDebounce.ts} +8 -2
  55. package/{dist/hooks/useMyBundles.d.ts → src/hooks/useMyBundles.ts} +8 -6
  56. package/{dist/hooks/useMyCourses.d.ts → src/hooks/useMyCourses.ts} +8 -6
  57. package/src/hooks/useNotes.ts +35 -0
  58. package/src/hooks/useNotifications.ts +16 -0
  59. package/{dist/hooks/useTheme.d.ts → src/hooks/useTheme.ts} +8 -5
  60. package/src/hooks/useToast.ts +17 -0
  61. package/{dist/hooks/useUser.d.ts → src/hooks/useUser.ts} +13 -9
  62. package/src/index.ts +33 -0
  63. package/src/layouts/DefaultLayout.tsx +58 -0
  64. package/src/manifest.json +5 -0
  65. package/src/styles.css +43 -0
  66. package/src/types/ai-coach.ts +25 -0
  67. package/src/types/bookmarks.ts +20 -0
  68. package/src/types/bundle.ts +119 -0
  69. package/src/types/common.ts +24 -0
  70. package/src/types/course.ts +135 -0
  71. package/src/types/enrollment.ts +35 -0
  72. package/{dist/types/index.d.ts → src/types/index.ts} +0 -1
  73. package/src/types/lesson.ts +106 -0
  74. package/src/types/manual-review.ts +116 -0
  75. package/src/types/messaging.ts +109 -0
  76. package/src/types/notification.ts +30 -0
  77. package/src/types/payment.ts +40 -0
  78. package/src/types/progress.ts +19 -0
  79. package/src/types/rating.ts +20 -0
  80. package/src/types/search.ts +31 -0
  81. package/src/types/user.ts +16 -0
  82. package/src/utils/formatters.ts +74 -0
  83. package/src/utils/index.ts +8 -0
  84. package/dist/components/atoms/Avatar.d.ts +0 -9
  85. package/dist/components/atoms/Avatar.d.ts.map +0 -1
  86. package/dist/components/atoms/Badge.d.ts +0 -10
  87. package/dist/components/atoms/Badge.d.ts.map +0 -1
  88. package/dist/components/atoms/Button.d.ts +0 -11
  89. package/dist/components/atoms/Button.d.ts.map +0 -1
  90. package/dist/components/atoms/Card.d.ts +0 -11
  91. package/dist/components/atoms/Card.d.ts.map +0 -1
  92. package/dist/components/atoms/Input.d.ts +0 -7
  93. package/dist/components/atoms/Input.d.ts.map +0 -1
  94. package/dist/components/atoms/ProgressBar.d.ts +0 -11
  95. package/dist/components/atoms/ProgressBar.d.ts.map +0 -1
  96. package/dist/components/atoms/Tabs.d.ts +0 -16
  97. package/dist/components/atoms/Tabs.d.ts.map +0 -1
  98. package/dist/components/atoms/index.cjs +0 -318
  99. package/dist/components/atoms/index.d.ts.map +0 -1
  100. package/dist/components/atoms/index.js +0 -288
  101. package/dist/components/index.cjs +0 -1275
  102. package/dist/components/index.d.ts.map +0 -1
  103. package/dist/components/index.js +0 -1245
  104. package/dist/components/molecules/CourseCard.d.ts +0 -25
  105. package/dist/components/molecules/CourseCard.d.ts.map +0 -1
  106. package/dist/components/molecules/EmptyState.d.ts +0 -10
  107. package/dist/components/molecules/EmptyState.d.ts.map +0 -1
  108. package/dist/components/molecules/LoadingSpinner.d.ts +0 -7
  109. package/dist/components/molecules/LoadingSpinner.d.ts.map +0 -1
  110. package/dist/components/molecules/PageHeader.d.ts +0 -8
  111. package/dist/components/molecules/PageHeader.d.ts.map +0 -1
  112. package/dist/components/molecules/Pagination.d.ts +0 -13
  113. package/dist/components/molecules/Pagination.d.ts.map +0 -1
  114. package/dist/components/molecules/SearchInput.d.ts +0 -8
  115. package/dist/components/molecules/SearchInput.d.ts.map +0 -1
  116. package/dist/components/molecules/index.cjs +0 -334
  117. package/dist/components/molecules/index.d.ts.map +0 -1
  118. package/dist/components/molecules/index.js +0 -311
  119. package/dist/components/organisms/CourseSidebar.d.ts +0 -37
  120. package/dist/components/organisms/CourseSidebar.d.ts.map +0 -1
  121. package/dist/components/organisms/LearnerNavbar.d.ts +0 -8
  122. package/dist/components/organisms/LearnerNavbar.d.ts.map +0 -1
  123. package/dist/components/organisms/LearnerSidebar.d.ts +0 -16
  124. package/dist/components/organisms/LearnerSidebar.d.ts.map +0 -1
  125. package/dist/components/organisms/LessonBookmarks.d.ts +0 -8
  126. package/dist/components/organisms/LessonBookmarks.d.ts.map +0 -1
  127. package/dist/components/organisms/LessonNotes.d.ts +0 -8
  128. package/dist/components/organisms/LessonNotes.d.ts.map +0 -1
  129. package/dist/components/organisms/index.cjs +0 -855
  130. package/dist/components/organisms/index.d.ts.map +0 -1
  131. package/dist/components/organisms/index.js +0 -825
  132. package/dist/components/pages/BundleDetailPage.d.ts +0 -3
  133. package/dist/components/pages/BundleDetailPage.d.ts.map +0 -1
  134. package/dist/components/pages/CatalogBundlesPage.d.ts +0 -3
  135. package/dist/components/pages/CatalogBundlesPage.d.ts.map +0 -1
  136. package/dist/components/pages/CatalogCoursesPage.d.ts +0 -3
  137. package/dist/components/pages/CatalogCoursesPage.d.ts.map +0 -1
  138. package/dist/components/pages/CourseDetailPage.d.ts +0 -3
  139. package/dist/components/pages/CourseDetailPage.d.ts.map +0 -1
  140. package/dist/components/pages/CoursePlayerPage.d.ts +0 -8
  141. package/dist/components/pages/CoursePlayerPage.d.ts.map +0 -1
  142. package/dist/components/pages/CreatorProfilePage.d.ts +0 -3
  143. package/dist/components/pages/CreatorProfilePage.d.ts.map +0 -1
  144. package/dist/components/pages/LearnerSettingsPage.d.ts +0 -3
  145. package/dist/components/pages/LearnerSettingsPage.d.ts.map +0 -1
  146. package/dist/components/pages/ManualReviewDetailPage.d.ts +0 -3
  147. package/dist/components/pages/ManualReviewDetailPage.d.ts.map +0 -1
  148. package/dist/components/pages/ManualReviewPage.d.ts +0 -3
  149. package/dist/components/pages/ManualReviewPage.d.ts.map +0 -1
  150. package/dist/components/pages/MessagesPage.d.ts +0 -3
  151. package/dist/components/pages/MessagesPage.d.ts.map +0 -1
  152. package/dist/components/pages/MyLearningPage.d.ts +0 -3
  153. package/dist/components/pages/MyLearningPage.d.ts.map +0 -1
  154. package/dist/components/pages/PaymentCancelPage.d.ts +0 -3
  155. package/dist/components/pages/PaymentCancelPage.d.ts.map +0 -1
  156. package/dist/components/pages/PaymentSuccessPage.d.ts +0 -3
  157. package/dist/components/pages/PaymentSuccessPage.d.ts.map +0 -1
  158. package/dist/components/pages/index.cjs +0 -3306
  159. package/dist/components/pages/index.d.ts.map +0 -1
  160. package/dist/components/pages/index.js +0 -3315
  161. package/dist/components/utils.d.ts +0 -3
  162. package/dist/components/utils.d.ts.map +0 -1
  163. package/dist/contracts/components.contract.d.ts +0 -87
  164. package/dist/contracts/components.contract.d.ts.map +0 -1
  165. package/dist/contracts/index.cjs +0 -52
  166. package/dist/contracts/index.d.ts.map +0 -1
  167. package/dist/contracts/index.js +0 -29
  168. package/dist/contracts/layout.contract.d.ts +0 -35
  169. package/dist/contracts/layout.contract.d.ts.map +0 -1
  170. package/dist/contracts/pages.contract.d.ts +0 -192
  171. package/dist/contracts/pages.contract.d.ts.map +0 -1
  172. package/dist/contracts/template.contract.d.ts +0 -49
  173. package/dist/contracts/template.contract.d.ts.map +0 -1
  174. package/dist/hooks/index.cjs +0 -165
  175. package/dist/hooks/index.d.ts.map +0 -1
  176. package/dist/hooks/index.js +0 -142
  177. package/dist/hooks/sdk-context.d.ts +0 -125
  178. package/dist/hooks/sdk-context.d.ts.map +0 -1
  179. package/dist/hooks/useAiCoach.d.ts +0 -32
  180. package/dist/hooks/useAiCoach.d.ts.map +0 -1
  181. package/dist/hooks/useBookmarks.d.ts +0 -31
  182. package/dist/hooks/useBookmarks.d.ts.map +0 -1
  183. package/dist/hooks/useCourseSearch.d.ts.map +0 -1
  184. package/dist/hooks/useDebounce.d.ts.map +0 -1
  185. package/dist/hooks/useMyBundles.d.ts.map +0 -1
  186. package/dist/hooks/useMyCourses.d.ts.map +0 -1
  187. package/dist/hooks/useNotes.d.ts +0 -31
  188. package/dist/hooks/useNotes.d.ts.map +0 -1
  189. package/dist/hooks/useNotifications.d.ts +0 -19
  190. package/dist/hooks/useNotifications.d.ts.map +0 -1
  191. package/dist/hooks/useTheme.d.ts.map +0 -1
  192. package/dist/hooks/useToast.d.ts +0 -17
  193. package/dist/hooks/useToast.d.ts.map +0 -1
  194. package/dist/hooks/useUser.d.ts.map +0 -1
  195. package/dist/index.cjs +0 -630
  196. package/dist/index.d.ts +0 -17
  197. package/dist/index.d.ts.map +0 -1
  198. package/dist/index.js +0 -600
  199. package/dist/layouts/DefaultLayout.d.ts +0 -9
  200. package/dist/layouts/DefaultLayout.d.ts.map +0 -1
  201. package/dist/types/ai-coach.d.ts +0 -22
  202. package/dist/types/ai-coach.d.ts.map +0 -1
  203. package/dist/types/bookmarks.d.ts +0 -19
  204. package/dist/types/bookmarks.d.ts.map +0 -1
  205. package/dist/types/bundle.d.ts +0 -114
  206. package/dist/types/bundle.d.ts.map +0 -1
  207. package/dist/types/common.d.ts +0 -23
  208. package/dist/types/common.d.ts.map +0 -1
  209. package/dist/types/course.d.ts +0 -127
  210. package/dist/types/course.d.ts.map +0 -1
  211. package/dist/types/enrollment.d.ts +0 -34
  212. package/dist/types/enrollment.d.ts.map +0 -1
  213. package/dist/types/index.cjs +0 -18
  214. package/dist/types/index.d.ts.map +0 -1
  215. package/dist/types/index.js +0 -0
  216. package/dist/types/lesson.d.ts +0 -105
  217. package/dist/types/lesson.d.ts.map +0 -1
  218. package/dist/types/manual-review.d.ts +0 -123
  219. package/dist/types/manual-review.d.ts.map +0 -1
  220. package/dist/types/messaging.d.ts +0 -101
  221. package/dist/types/messaging.d.ts.map +0 -1
  222. package/dist/types/notification.d.ts +0 -28
  223. package/dist/types/notification.d.ts.map +0 -1
  224. package/dist/types/payment.d.ts +0 -38
  225. package/dist/types/payment.d.ts.map +0 -1
  226. package/dist/types/progress.d.ts +0 -18
  227. package/dist/types/progress.d.ts.map +0 -1
  228. package/dist/types/rating.d.ts +0 -20
  229. package/dist/types/rating.d.ts.map +0 -1
  230. package/dist/types/search.d.ts +0 -28
  231. package/dist/types/search.d.ts.map +0 -1
  232. package/dist/types/user.d.ts +0 -15
  233. package/dist/types/user.d.ts.map +0 -1
  234. package/dist/utils/formatters.d.ts +0 -25
  235. package/dist/utils/formatters.d.ts.map +0 -1
  236. package/dist/utils/index.cjs +0 -80
  237. package/dist/utils/index.d.ts +0 -2
  238. package/dist/utils/index.d.ts.map +0 -1
  239. package/dist/utils/index.js +0 -57
@@ -1,3 +0,0 @@
1
- import { type ClassValue } from 'clsx';
2
- export declare function cn(...inputs: ClassValue[]): string;
3
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/components/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAQ,MAAM,MAAM,CAAC;AAG7C,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,UAEzC"}
@@ -1,87 +0,0 @@
1
- /**
2
- * Props for a course card component (used in grids/lists)
3
- */
4
- export interface CourseCardProps {
5
- id: string;
6
- title: string;
7
- thumbnail?: string;
8
- thumbnails?: string[];
9
- totalLessons: number;
10
- progress: number;
11
- status?: 'in-progress' | 'completed';
12
- isFree: boolean;
13
- price?: number;
14
- currency?: string;
15
- description?: string;
16
- showPrice?: boolean;
17
- showProgress?: boolean;
18
- category?: string;
19
- duration?: string;
20
- instructorName?: string;
21
- instructorAvatar?: string;
22
- originalPrice?: number;
23
- isBundle?: boolean;
24
- onClick?: () => void;
25
- }
26
- /**
27
- * Props for a video player component
28
- */
29
- export interface VideoPlayerProps {
30
- videoUrl: string;
31
- provider?: 'YOUTUBE' | 'VIMEO' | 'LOOM' | 'OTHERS';
32
- startTime?: number;
33
- onReady?: (player: any) => void;
34
- onPlay?: () => void;
35
- onPause?: () => void;
36
- onEnd?: () => void;
37
- onStateChange?: (event: any) => void;
38
- }
39
- /**
40
- * Props for pagination component
41
- */
42
- export interface PaginationComponentProps {
43
- currentPage: number;
44
- totalPages: number;
45
- total: number;
46
- pageSize: number;
47
- hasNextPage: boolean;
48
- hasPreviousPage: boolean;
49
- onPageChange: (page: number) => void;
50
- maxVisiblePages?: number;
51
- }
52
- /**
53
- * Props for a page header component
54
- */
55
- export interface PageHeaderProps {
56
- title: string;
57
- description?: string;
58
- className?: string;
59
- }
60
- /**
61
- * Props for search results view
62
- */
63
- export interface SearchResultsViewProps {
64
- results: any;
65
- isSearching: boolean;
66
- searchQuery: string;
67
- onCourseClick: (courseId: string, enrollmentId?: string) => void;
68
- onLessonClick: (courseId: string, lessonId: string) => void;
69
- }
70
- /**
71
- * Props for the learner sidebar component override
72
- */
73
- export interface LearnerSidebarComponentProps {
74
- isOpen: boolean;
75
- isCollapsed: boolean;
76
- onClose: () => void;
77
- onToggle: () => void;
78
- currentPath: string;
79
- onNavigate: (href: string) => void;
80
- user: {
81
- name: string;
82
- email: string;
83
- avatar?: string;
84
- } | null;
85
- onLogout: () => void;
86
- }
87
- //# sourceMappingURL=components.contract.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"components.contract.d.ts","sourceRoot":"","sources":["../../src/contracts/components.contract.ts"],"names":[],"mappings":"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"}
@@ -1,52 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/contracts/index.ts
21
- var contracts_exports = {};
22
- __export(contracts_exports, {
23
- validateTemplateManifest: () => validateTemplateManifest
24
- });
25
- module.exports = __toCommonJS(contracts_exports);
26
-
27
- // src/contracts/template.contract.ts
28
- function validateTemplateManifest(manifest) {
29
- if (!manifest.name) throw new Error("Template manifest must have a name");
30
- if (!manifest.version) throw new Error("Template manifest must have a version");
31
- if (!manifest.LearnerLayout) throw new Error("Template must provide LearnerLayout");
32
- const requiredPages = [
33
- "MyLearningPage",
34
- "CatalogCoursesPage",
35
- "CatalogBundlesPage",
36
- "CourseDetailPage",
37
- "BundleDetailPage",
38
- "CoursePlayerPage",
39
- "MessagesPage",
40
- "ManualReviewPage",
41
- "ManualReviewDetailPage",
42
- "LearnerSettingsPage",
43
- "PaymentSuccessPage",
44
- "PaymentCancelPage",
45
- "CreatorProfilePage"
46
- ];
47
- for (const page of requiredPages) {
48
- if (!manifest.pages[page]) {
49
- throw new Error(`Template must provide pages.${page}`);
50
- }
51
- }
52
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contracts/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC"}
@@ -1,29 +0,0 @@
1
- // src/contracts/template.contract.ts
2
- function validateTemplateManifest(manifest) {
3
- if (!manifest.name) throw new Error("Template manifest must have a name");
4
- if (!manifest.version) throw new Error("Template manifest must have a version");
5
- if (!manifest.LearnerLayout) throw new Error("Template must provide LearnerLayout");
6
- const requiredPages = [
7
- "MyLearningPage",
8
- "CatalogCoursesPage",
9
- "CatalogBundlesPage",
10
- "CourseDetailPage",
11
- "BundleDetailPage",
12
- "CoursePlayerPage",
13
- "MessagesPage",
14
- "ManualReviewPage",
15
- "ManualReviewDetailPage",
16
- "LearnerSettingsPage",
17
- "PaymentSuccessPage",
18
- "PaymentCancelPage",
19
- "CreatorProfilePage"
20
- ];
21
- for (const page of requiredPages) {
22
- if (!manifest.pages[page]) {
23
- throw new Error(`Template must provide pages.${page}`);
24
- }
25
- }
26
- }
27
- export {
28
- validateTemplateManifest
29
- };
@@ -1,35 +0,0 @@
1
- import type { ReactNode } from 'react';
2
- import type { User, Membership } from '../types';
3
- /**
4
- * Props for the top-level learner layout wrapper.
5
- * The template's layout receives these and renders navbar + sidebar + content.
6
- */
7
- export interface LearnerLayoutProps {
8
- children: ReactNode;
9
- /** Current authenticated user */
10
- user: User | null;
11
- /** User's memberships */
12
- memberships: Membership[];
13
- /** Whether sidebar is open (mobile) */
14
- sidebarOpen: boolean;
15
- /** Whether sidebar is collapsed (desktop) */
16
- sidebarCollapsed: boolean;
17
- /** Toggle sidebar open/close */
18
- onToggleSidebar: () => void;
19
- /** Close sidebar (mobile) */
20
- onCloseSidebar: () => void;
21
- /** Logout handler */
22
- onLogout: () => void;
23
- /** Current pathname for active link highlighting */
24
- pathname: string;
25
- }
26
- /**
27
- * Navigation item for the sidebar
28
- */
29
- export interface SidebarNavItem {
30
- label: string;
31
- href: string;
32
- icon: string;
33
- badge?: number;
34
- }
35
- //# sourceMappingURL=layout.contract.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"layout.contract.d.ts","sourceRoot":"","sources":["../../src/contracts/layout.contract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEjD;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,SAAS,CAAC;IACpB,iCAAiC;IACjC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,yBAAyB;IACzB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,uCAAuC;IACvC,WAAW,EAAE,OAAO,CAAC;IACrB,6CAA6C;IAC7C,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gCAAgC;IAChC,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,6BAA6B;IAC7B,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,qBAAqB;IACrB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,oDAAoD;IACpD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -1,192 +0,0 @@
1
- import type { Course, CoursePlayerCourse, Bundle, LearnerBundle, SearchResponse, PaginationMeta, User, LearnerManualReviewSubmission, LearnerManualReviewSummary, LearnerManualReviewPagination, LearnerManualReviewDetailResponse, LearnerManualReviewStatus, AICoachInfo, Rating, RatingSummary, PaymentProvider, Coupon, LessonNote, Bookmark } from '../types';
2
- export interface MyLearningPageProps {
3
- user: User | null;
4
- courses: any[];
5
- coursesMeta: PaginationMeta | null;
6
- coursesLoading: boolean;
7
- coursesPage: number;
8
- onCoursesPageChange: (page: number) => void;
9
- bundles: any[];
10
- bundlesMeta: PaginationMeta | null;
11
- bundlesLoading: boolean;
12
- bundlesPage: number;
13
- onBundlesPageChange: (page: number) => void;
14
- searchQuery: string;
15
- onSearchChange: (query: string) => void;
16
- searchResults: SearchResponse | null;
17
- isSearching: boolean;
18
- activeTab: 'courses' | 'bundles';
19
- onTabChange: (tab: 'courses' | 'bundles') => void;
20
- statusFilter: string;
21
- onStatusFilterChange: (status: string) => void;
22
- onCourseClick: (courseId: string, enrollmentId?: string) => void;
23
- onBundleClick: (bundleId: string) => void;
24
- }
25
- export interface CatalogCoursesPageProps {
26
- courses: Course[];
27
- meta: PaginationMeta | null;
28
- loading: boolean;
29
- searchQuery: string;
30
- page: number;
31
- onSearchChange: (query: string) => void;
32
- onPageChange: (page: number) => void;
33
- onCourseClick: (courseId: string) => void;
34
- }
35
- export interface CatalogBundlesPageProps {
36
- bundles: Bundle[];
37
- meta: PaginationMeta | null;
38
- loading: boolean;
39
- searchQuery: string;
40
- page: number;
41
- onSearchChange: (query: string) => void;
42
- onPageChange: (page: number) => void;
43
- onBundleClick: (bundleId: string) => void;
44
- }
45
- export interface CourseDetailPageProps {
46
- course: any | null;
47
- isLoading: boolean;
48
- notFound: boolean;
49
- isEnrolled: boolean;
50
- enrollmentId: string | null;
51
- onEnroll: () => Promise<void>;
52
- onStartLearning: (enrollmentId: string) => void;
53
- isProcessingEnrollment: boolean;
54
- paymentProviders: PaymentProvider[];
55
- onCheckout: (providerId: string) => Promise<void>;
56
- isProcessingCheckout: boolean;
57
- couponCode: string;
58
- onCouponCodeChange: (code: string) => void;
59
- onApplyCoupon: () => Promise<void>;
60
- appliedCoupon: Coupon | null;
61
- couponError: string | null;
62
- isApplyingCoupon: boolean;
63
- discountedPrice: number | undefined;
64
- activeTab: 'overview' | 'curriculum';
65
- onTabChange: (tab: 'overview' | 'curriculum') => void;
66
- relatedCourses: any[];
67
- isRelatedLoading: boolean;
68
- onRelatedCourseClick: (courseId: string) => void;
69
- ratings?: Rating[];
70
- ratingSummary?: RatingSummary;
71
- }
72
- export interface BundleDetailPageProps {
73
- bundle: LearnerBundle | null;
74
- isLoading: boolean;
75
- notFound: boolean;
76
- isEnrolled: boolean;
77
- onEnroll: () => Promise<void>;
78
- isProcessingEnrollment: boolean;
79
- paymentProviders: PaymentProvider[];
80
- onCheckout: (providerId: string) => Promise<void>;
81
- isProcessingCheckout: boolean;
82
- couponCode: string;
83
- onCouponCodeChange: (code: string) => void;
84
- onApplyCoupon: () => Promise<void>;
85
- appliedCoupon: Coupon | null;
86
- couponError: string | null;
87
- onCourseClick: (courseId: string, enrollmentId?: string) => void;
88
- }
89
- export interface CoursePlayerPageProps {
90
- course: CoursePlayerCourse | null;
91
- actualCourseId: string | null;
92
- isLoading: boolean;
93
- courseNotFound: boolean;
94
- currentLessonId: string;
95
- currentModuleIndex: number;
96
- currentLessonIndex: number;
97
- expandedModules: Set<string>;
98
- onToggleModule: (moduleId: string) => void;
99
- onSelectLesson: (lessonId: string) => void;
100
- completedCount: number;
101
- totalCount: number;
102
- isCompleted: boolean;
103
- currentVideoTime: number;
104
- isPlaying: boolean;
105
- onVideoReady: (player: any) => void;
106
- onVideoPlay: () => void;
107
- onVideoPause: () => void;
108
- onVideoEnd: () => void;
109
- onVideoStateChange: (event: any) => void;
110
- activeTab: string;
111
- onTabChange: (tab: string) => void;
112
- notes: LessonNote[];
113
- onCreateNote: (text: string, timestamp?: number) => Promise<void>;
114
- onUpdateNote: (noteId: string, text: string) => Promise<void>;
115
- onDeleteNote: (noteId: string) => Promise<void>;
116
- bookmarks: Bookmark[];
117
- onCreateBookmark: (second: number, label?: string) => Promise<void>;
118
- onUpdateBookmark: (id: string, label: string) => Promise<void>;
119
- onDeleteBookmark: (id: string) => Promise<void>;
120
- aiCoachAvailable: boolean;
121
- aiCoachInfo: AICoachInfo | null;
122
- certificateEnabled: boolean;
123
- onDownloadCertificate: () => Promise<void>;
124
- showRatingModal: boolean;
125
- onSubmitRating: (rating: number, review: string) => Promise<void>;
126
- onCloseRatingModal: () => void;
127
- slackCommunityEnabled: boolean;
128
- onJoinSlackChannel: () => Promise<void>;
129
- isMobileSidebarOpen: boolean;
130
- onToggleMobileSidebar: () => void;
131
- getLiveCurrentTime: () => number;
132
- }
133
- export interface MessagesPageProps {
134
- conversations: any[];
135
- isLoadingConversations: boolean;
136
- selectedConversation: any | null;
137
- onSelectConversation: (conv: any) => void;
138
- messages: any[];
139
- isLoadingMessages: boolean;
140
- isLoadingMore: boolean;
141
- hasMoreMessages: boolean;
142
- onLoadMoreMessages: () => void;
143
- onSendMessage: (content: string) => Promise<void>;
144
- isSending: boolean;
145
- searchQuery: string;
146
- onSearchChange: (query: string) => void;
147
- onDeleteMessage: (messageId: string) => void;
148
- showNewMessageDialog: boolean;
149
- onNewMessageDialogChange: (show: boolean) => void;
150
- onNewMessage: (courseId: string, message: string, conversationId: string, courseName?: string) => void;
151
- notifications: any[];
152
- unreadCount: number;
153
- mobileView: 'list' | 'chat';
154
- onMobileViewChange: (view: 'list' | 'chat') => void;
155
- currentUserId: string;
156
- }
157
- export interface ManualReviewPageProps {
158
- submissions: LearnerManualReviewSubmission[];
159
- summary: LearnerManualReviewSummary;
160
- pagination: LearnerManualReviewPagination;
161
- isLoading: boolean;
162
- filterStatus: LearnerManualReviewStatus | 'ALL';
163
- onFilterStatusChange: (status: LearnerManualReviewStatus | 'ALL') => void;
164
- searchQuery: string;
165
- onSearchChange: (query: string) => void;
166
- currentPage: number;
167
- onPageChange: (page: number) => void;
168
- onSubmissionClick: (submissionId: string) => void;
169
- }
170
- export interface ManualReviewDetailPageProps {
171
- submission: LearnerManualReviewDetailResponse | null;
172
- isLoading: boolean;
173
- notFound: boolean;
174
- onBack: () => void;
175
- }
176
- export interface LearnerSettingsPageProps {
177
- user: User | null;
178
- }
179
- export interface PaymentSuccessPageProps {
180
- onContinueLearning: () => void;
181
- }
182
- export interface PaymentCancelPageProps {
183
- onRetry: () => void;
184
- onGoBack: () => void;
185
- }
186
- export interface CreatorProfilePageProps {
187
- creator: any | null;
188
- courses: Course[];
189
- isLoading: boolean;
190
- onCourseClick: (courseId: string) => void;
191
- }
192
- //# sourceMappingURL=pages.contract.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pages.contract.d.ts","sourceRoot":"","sources":["../../src/contracts/pages.contract.ts"],"names":[],"mappings":"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"}
@@ -1,49 +0,0 @@
1
- import type { ComponentType } from 'react';
2
- import type { LearnerLayoutProps } from './layout.contract';
3
- import type { MyLearningPageProps, CatalogCoursesPageProps, CatalogBundlesPageProps, CourseDetailPageProps, BundleDetailPageProps, CoursePlayerPageProps, MessagesPageProps, ManualReviewPageProps, ManualReviewDetailPageProps, LearnerSettingsPageProps, PaymentSuccessPageProps, PaymentCancelPageProps, CreatorProfilePageProps } from './pages.contract';
4
- import type { CourseCardProps, VideoPlayerProps, PaginationComponentProps, PageHeaderProps, SearchResultsViewProps, LearnerSidebarComponentProps } from './components.contract';
5
- /**
6
- * TemplateManifest defines the complete set of components a template must/can provide.
7
- *
8
- * Required: LearnerLayout + all page components
9
- * Optional: component overrides (will fallback to platform defaults if not provided)
10
- */
11
- export interface TemplateManifest {
12
- /** Unique template name (e.g., "@client/modern-template") */
13
- name: string;
14
- /** Template version (semver) */
15
- version: string;
16
- /** The root layout component wrapping all learner pages */
17
- LearnerLayout: ComponentType<LearnerLayoutProps>;
18
- /** Page components — one per learner route */
19
- pages: {
20
- MyLearningPage: ComponentType<Partial<MyLearningPageProps>>;
21
- CatalogCoursesPage: ComponentType<Partial<CatalogCoursesPageProps>>;
22
- CatalogBundlesPage: ComponentType<Partial<CatalogBundlesPageProps>>;
23
- CourseDetailPage: ComponentType<Partial<CourseDetailPageProps>>;
24
- BundleDetailPage: ComponentType<Partial<BundleDetailPageProps>>;
25
- CoursePlayerPage: ComponentType<Partial<CoursePlayerPageProps>>;
26
- MessagesPage: ComponentType<Partial<MessagesPageProps>>;
27
- ManualReviewPage: ComponentType<Partial<ManualReviewPageProps>>;
28
- ManualReviewDetailPage: ComponentType<Partial<ManualReviewDetailPageProps>>;
29
- LearnerSettingsPage: ComponentType<Partial<LearnerSettingsPageProps>>;
30
- PaymentSuccessPage: ComponentType<Partial<PaymentSuccessPageProps>>;
31
- PaymentCancelPage: ComponentType<Partial<PaymentCancelPageProps>>;
32
- CreatorProfilePage: ComponentType<Partial<CreatorProfilePageProps>>;
33
- };
34
- /** Optional component overrides — templates can provide custom implementations */
35
- components?: {
36
- CourseCard?: ComponentType<CourseCardProps>;
37
- VideoPlayer?: ComponentType<VideoPlayerProps>;
38
- Pagination?: ComponentType<PaginationComponentProps>;
39
- PageHeader?: ComponentType<PageHeaderProps>;
40
- SearchResultsView?: ComponentType<SearchResultsViewProps>;
41
- LearnerSidebar?: ComponentType<LearnerSidebarComponentProps>;
42
- };
43
- }
44
- /**
45
- * Validates that a template manifest has all required fields.
46
- * Throws an error if any required page is missing.
47
- */
48
- export declare function validateTemplateManifest(manifest: TemplateManifest): void;
49
- //# sourceMappingURL=template.contract.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"template.contract.d.ts","sourceRoot":"","sources":["../../src/contracts/template.contract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EACV,mBAAmB,EACnB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,2BAA2B,EAC3B,wBAAwB,EACxB,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,wBAAwB,EACxB,eAAe,EACf,sBAAsB,EACtB,4BAA4B,EAC7B,MAAM,uBAAuB,CAAC;AAE/B;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAEhB,2DAA2D;IAC3D,aAAa,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAEjD,8CAA8C;IAC9C,KAAK,EAAE;QACL,cAAc,EAAE,aAAa,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAC5D,kBAAkB,EAAE,aAAa,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC;QACpE,kBAAkB,EAAE,aAAa,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC;QACpE,gBAAgB,EAAE,aAAa,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAChE,gBAAgB,EAAE,aAAa,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAChE,gBAAgB,EAAE,aAAa,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAChE,YAAY,EAAE,aAAa,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACxD,gBAAgB,EAAE,aAAa,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAChE,sBAAsB,EAAE,aAAa,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC,CAAC;QAC5E,mBAAmB,EAAE,aAAa,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC;QACtE,kBAAkB,EAAE,aAAa,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC;QACpE,iBAAiB,EAAE,aAAa,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAClE,kBAAkB,EAAE,aAAa,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC;KACrE,CAAC;IAEF,kFAAkF;IAClF,UAAU,CAAC,EAAE;QACX,UAAU,CAAC,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;QAC5C,WAAW,CAAC,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;QAC9C,UAAU,CAAC,EAAE,aAAa,CAAC,wBAAwB,CAAC,CAAC;QACrD,UAAU,CAAC,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;QAC5C,iBAAiB,CAAC,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;QAC1D,cAAc,CAAC,EAAE,aAAa,CAAC,4BAA4B,CAAC,CAAC;KAC9D,CAAC;CACH;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CA0BzE"}
@@ -1,165 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/hooks/index.ts
21
- var hooks_exports = {};
22
- __export(hooks_exports, {
23
- SDKProvider: () => SDKProvider,
24
- useAiCoachAvailability: () => useAiCoachAvailability,
25
- useAiCoachChat: () => useAiCoachChat,
26
- useAiCoachHistory: () => useAiCoachHistory,
27
- useCourseSearch: () => useCourseSearch,
28
- useCreateBookmark: () => useCreateBookmark,
29
- useCreateNote: () => useCreateNote,
30
- useDebounce: () => useDebounce,
31
- useDeleteBookmark: () => useDeleteBookmark,
32
- useDeleteNote: () => useDeleteNote,
33
- useLessonBookmarks: () => useLessonBookmarks,
34
- useLessonNotes: () => useLessonNotes,
35
- useLogout: () => useLogout,
36
- useMyBundles: () => useMyBundles,
37
- useMyCourses: () => useMyCourses,
38
- useNotifications: () => useNotifications,
39
- useSDK: () => useSDK,
40
- useTheme: () => useTheme,
41
- useToast: () => useToast,
42
- useUpdateBookmark: () => useUpdateBookmark,
43
- useUpdateNote: () => useUpdateNote,
44
- useUser: () => useUser
45
- });
46
- module.exports = __toCommonJS(hooks_exports);
47
-
48
- // src/hooks/sdk-context.tsx
49
- var import_react = require("react");
50
- var import_jsx_runtime = require("react/jsx-runtime");
51
- var SDKContext = (0, import_react.createContext)(null);
52
- function SDKProvider({ implementations, children }) {
53
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SDKContext.Provider, { value: implementations, children });
54
- }
55
- function useSDK() {
56
- const ctx = (0, import_react.useContext)(SDKContext);
57
- if (!ctx) {
58
- throw new Error(
59
- "useSDK must be used within an SDKProvider. Make sure your learner routes are wrapped with <SDKProvider>."
60
- );
61
- }
62
- return ctx;
63
- }
64
-
65
- // src/hooks/useUser.ts
66
- function useUser() {
67
- const sdk = useSDK();
68
- return sdk.useUser();
69
- }
70
- function useLogout() {
71
- const sdk = useSDK();
72
- return sdk.useLogout();
73
- }
74
-
75
- // src/hooks/useMyCourses.ts
76
- function useMyCourses(status, page, limit) {
77
- const sdk = useSDK();
78
- return sdk.useMyCourses(status, page, limit);
79
- }
80
-
81
- // src/hooks/useMyBundles.ts
82
- function useMyBundles(status, page, limit, search) {
83
- const sdk = useSDK();
84
- return sdk.useMyBundles(status, page, limit, search);
85
- }
86
-
87
- // src/hooks/useCourseSearch.ts
88
- function useCourseSearch(query) {
89
- const sdk = useSDK();
90
- return sdk.useCourseSearch(query);
91
- }
92
-
93
- // src/hooks/useNotes.ts
94
- function useLessonNotes(activityId) {
95
- const sdk = useSDK();
96
- return sdk.useLessonNotes(activityId);
97
- }
98
- function useCreateNote() {
99
- const sdk = useSDK();
100
- return sdk.useCreateNote();
101
- }
102
- function useUpdateNote() {
103
- const sdk = useSDK();
104
- return sdk.useUpdateNote();
105
- }
106
- function useDeleteNote() {
107
- const sdk = useSDK();
108
- return sdk.useDeleteNote();
109
- }
110
-
111
- // src/hooks/useBookmarks.ts
112
- function useLessonBookmarks(activityId) {
113
- const sdk = useSDK();
114
- return sdk.useLessonBookmarks(activityId);
115
- }
116
- function useCreateBookmark() {
117
- const sdk = useSDK();
118
- return sdk.useCreateBookmark();
119
- }
120
- function useUpdateBookmark() {
121
- const sdk = useSDK();
122
- return sdk.useUpdateBookmark();
123
- }
124
- function useDeleteBookmark() {
125
- const sdk = useSDK();
126
- return sdk.useDeleteBookmark();
127
- }
128
-
129
- // src/hooks/useAiCoach.ts
130
- function useAiCoachAvailability(courseId) {
131
- const sdk = useSDK();
132
- return sdk.useAiCoachAvailability(courseId);
133
- }
134
- function useAiCoachChat(courseId) {
135
- const sdk = useSDK();
136
- return sdk.useAiCoachChat(courseId);
137
- }
138
- function useAiCoachHistory(courseId, enabled) {
139
- const sdk = useSDK();
140
- return sdk.useAiCoachHistory(courseId, enabled);
141
- }
142
-
143
- // src/hooks/useNotifications.ts
144
- function useNotifications() {
145
- const sdk = useSDK();
146
- return sdk.useNotifications();
147
- }
148
-
149
- // src/hooks/useTheme.ts
150
- function useTheme() {
151
- const sdk = useSDK();
152
- return sdk.useTheme();
153
- }
154
-
155
- // src/hooks/useDebounce.ts
156
- function useDebounce(value, delay) {
157
- const sdk = useSDK();
158
- return sdk.useDebounce(value, delay);
159
- }
160
-
161
- // src/hooks/useToast.ts
162
- function useToast() {
163
- const sdk = useSDK();
164
- return sdk.useToast();
165
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACpD,YAAY,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAG9E,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAG/C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACzF,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAG7G,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}