@sp-days-framework/docusaurus-plugin-interactive-tasks 1.0.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 (173) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +339 -0
  3. package/lib/contexts/DocTaskCounterContext.d.ts +15 -0
  4. package/lib/contexts/DocTaskCounterContext.d.ts.map +1 -0
  5. package/lib/contexts/DocTaskCounterContext.js +7 -0
  6. package/lib/contexts/DocTaskCounterContext.js.map +1 -0
  7. package/lib/contexts/TaskContext.d.ts +72 -0
  8. package/lib/contexts/TaskContext.d.ts.map +1 -0
  9. package/lib/contexts/TaskContext.js +6 -0
  10. package/lib/contexts/TaskContext.js.map +1 -0
  11. package/lib/index.d.ts +14 -0
  12. package/lib/index.d.ts.map +1 -0
  13. package/lib/index.js +59 -0
  14. package/lib/index.js.map +1 -0
  15. package/lib/plugin/TaskRegistryPlugin.d.ts +27 -0
  16. package/lib/plugin/TaskRegistryPlugin.d.ts.map +1 -0
  17. package/lib/plugin/TaskRegistryPlugin.js +328 -0
  18. package/lib/plugin/TaskRegistryPlugin.js.map +1 -0
  19. package/lib/plugin/remarkTaskDirective.d.ts +29 -0
  20. package/lib/plugin/remarkTaskDirective.d.ts.map +1 -0
  21. package/lib/plugin/remarkTaskDirective.js +277 -0
  22. package/lib/plugin/remarkTaskDirective.js.map +1 -0
  23. package/lib/theme/DocRoot/Layout/index.d.ts +14 -0
  24. package/lib/theme/DocRoot/Layout/index.d.ts.map +1 -0
  25. package/lib/theme/DocRoot/Layout/index.js +27 -0
  26. package/lib/theme/DocRoot/Layout/index.js.map +1 -0
  27. package/lib/theme/DocRoot/index.d.ts +22 -0
  28. package/lib/theme/DocRoot/index.d.ts.map +1 -0
  29. package/lib/theme/DocRoot/index.js +33 -0
  30. package/lib/theme/DocRoot/index.js.map +1 -0
  31. package/lib/theme/DocSidebar/Desktop/CollapseButton/index.d.ts +4 -0
  32. package/lib/theme/DocSidebar/Desktop/CollapseButton/index.d.ts.map +1 -0
  33. package/lib/theme/DocSidebar/Desktop/CollapseButton/index.js +24 -0
  34. package/lib/theme/DocSidebar/Desktop/CollapseButton/index.js.map +1 -0
  35. package/lib/theme/DocSidebar/Desktop/CollapseButton/styles.module.css +40 -0
  36. package/lib/theme/DocSidebar/Desktop/Content/index.d.ts +4 -0
  37. package/lib/theme/DocSidebar/Desktop/Content/index.d.ts.map +1 -0
  38. package/lib/theme/DocSidebar/Desktop/Content/index.js +67 -0
  39. package/lib/theme/DocSidebar/Desktop/Content/index.js.map +1 -0
  40. package/lib/theme/DocSidebar/Desktop/Content/styles.module.css +16 -0
  41. package/lib/theme/DocSidebar/Desktop/index.d.ts +6 -0
  42. package/lib/theme/DocSidebar/Desktop/index.d.ts.map +1 -0
  43. package/lib/theme/DocSidebar/Desktop/index.js +21 -0
  44. package/lib/theme/DocSidebar/Desktop/index.js.map +1 -0
  45. package/lib/theme/DocSidebar/Desktop/styles.module.css +37 -0
  46. package/lib/theme/DocSidebar/Mobile/index.d.ts +6 -0
  47. package/lib/theme/DocSidebar/Mobile/index.d.ts.map +1 -0
  48. package/lib/theme/DocSidebar/Mobile/index.js +29 -0
  49. package/lib/theme/DocSidebar/Mobile/index.js.map +1 -0
  50. package/lib/theme/DocSidebar/index.d.ts +4 -0
  51. package/lib/theme/DocSidebar/index.d.ts.map +1 -0
  52. package/lib/theme/DocSidebar/index.js +21 -0
  53. package/lib/theme/DocSidebar/index.js.map +1 -0
  54. package/lib/theme/DocSidebarItem/Category/index.d.ts +4 -0
  55. package/lib/theme/DocSidebarItem/Category/index.d.ts.map +1 -0
  56. package/lib/theme/DocSidebarItem/Category/index.js +316 -0
  57. package/lib/theme/DocSidebarItem/Category/index.js.map +1 -0
  58. package/lib/theme/DocSidebarItem/Category/styles.module.css +187 -0
  59. package/lib/theme/DocSidebarItem/Html/index.d.ts +4 -0
  60. package/lib/theme/DocSidebarItem/Html/index.d.ts.map +1 -0
  61. package/lib/theme/DocSidebarItem/Html/index.js +17 -0
  62. package/lib/theme/DocSidebarItem/Html/index.js.map +1 -0
  63. package/lib/theme/DocSidebarItem/Html/styles.module.css +6 -0
  64. package/lib/theme/DocSidebarItem/Link/index.d.ts +6 -0
  65. package/lib/theme/DocSidebarItem/Link/index.d.ts.map +1 -0
  66. package/lib/theme/DocSidebarItem/Link/index.js +149 -0
  67. package/lib/theme/DocSidebarItem/Link/index.js.map +1 -0
  68. package/lib/theme/DocSidebarItem/Link/styles.module.css +197 -0
  69. package/lib/theme/DocSidebarItem/index.d.ts +4 -0
  70. package/lib/theme/DocSidebarItem/index.d.ts.map +1 -0
  71. package/lib/theme/DocSidebarItem/index.js +22 -0
  72. package/lib/theme/DocSidebarItem/index.js.map +1 -0
  73. package/lib/theme/DocSidebarItems/index.d.ts +6 -0
  74. package/lib/theme/DocSidebarItems/index.d.ts.map +1 -0
  75. package/lib/theme/DocSidebarItems/index.js +48 -0
  76. package/lib/theme/DocSidebarItems/index.js.map +1 -0
  77. package/lib/theme/DocTaskCounterProvider/index.d.ts +20 -0
  78. package/lib/theme/DocTaskCounterProvider/index.d.ts.map +1 -0
  79. package/lib/theme/DocTaskCounterProvider/index.js +105 -0
  80. package/lib/theme/DocTaskCounterProvider/index.js.map +1 -0
  81. package/lib/theme/MDXComponents.d.ts +19 -0
  82. package/lib/theme/MDXComponents.d.ts.map +1 -0
  83. package/lib/theme/MDXComponents.js +52 -0
  84. package/lib/theme/MDXComponents.js.map +1 -0
  85. package/lib/theme/Root.d.ts +9 -0
  86. package/lib/theme/Root.d.ts.map +1 -0
  87. package/lib/theme/Root.js +105 -0
  88. package/lib/theme/Root.js.map +1 -0
  89. package/lib/theme/Task/Hint/index.d.ts +14 -0
  90. package/lib/theme/Task/Hint/index.d.ts.map +1 -0
  91. package/lib/theme/Task/Hint/index.js +23 -0
  92. package/lib/theme/Task/Hint/index.js.map +1 -0
  93. package/lib/theme/Task/Hint/styles.module.css +72 -0
  94. package/lib/theme/Task/Solution/index.d.ts +14 -0
  95. package/lib/theme/Task/Solution/index.d.ts.map +1 -0
  96. package/lib/theme/Task/Solution/index.js +23 -0
  97. package/lib/theme/Task/Solution/index.js.map +1 -0
  98. package/lib/theme/Task/Solution/styles.module.css +71 -0
  99. package/lib/theme/Task/Text/index.d.ts +14 -0
  100. package/lib/theme/Task/Text/index.d.ts.map +1 -0
  101. package/lib/theme/Task/Text/index.js +18 -0
  102. package/lib/theme/Task/Text/index.js.map +1 -0
  103. package/lib/theme/Task/Text/styles.module.css +39 -0
  104. package/lib/theme/Task/index.d.ts +11 -0
  105. package/lib/theme/Task/index.d.ts.map +1 -0
  106. package/lib/theme/Task/index.js +286 -0
  107. package/lib/theme/Task/index.js.map +1 -0
  108. package/lib/theme/Task/styles.module.css +529 -0
  109. package/lib/theme/TaskAutoHideToggle/index.d.ts +10 -0
  110. package/lib/theme/TaskAutoHideToggle/index.d.ts.map +1 -0
  111. package/lib/theme/TaskAutoHideToggle/index.js +79 -0
  112. package/lib/theme/TaskAutoHideToggle/index.js.map +1 -0
  113. package/lib/theme/TaskAutoHideToggle/styles.module.css +41 -0
  114. package/lib/theme/TaskExample/index.d.ts +16 -0
  115. package/lib/theme/TaskExample/index.d.ts.map +1 -0
  116. package/lib/theme/TaskExample/index.js +249 -0
  117. package/lib/theme/TaskExample/index.js.map +1 -0
  118. package/lib/theme/TaskPlaceholder/README.md +119 -0
  119. package/lib/theme/TaskPlaceholder/index.d.ts +23 -0
  120. package/lib/theme/TaskPlaceholder/index.d.ts.map +1 -0
  121. package/lib/theme/TaskPlaceholder/index.js +293 -0
  122. package/lib/theme/TaskPlaceholder/index.js.map +1 -0
  123. package/lib/theme/TaskProgression/index.d.ts +11 -0
  124. package/lib/theme/TaskProgression/index.d.ts.map +1 -0
  125. package/lib/theme/TaskProgression/index.js +131 -0
  126. package/lib/theme/TaskProgression/index.js.map +1 -0
  127. package/lib/theme/TaskProgression/styles.module.css +162 -0
  128. package/lib/theme/TaskProgressionOverview/index.d.ts +10 -0
  129. package/lib/theme/TaskProgressionOverview/index.d.ts.map +1 -0
  130. package/lib/theme/TaskProgressionOverview/index.js +123 -0
  131. package/lib/theme/TaskProgressionOverview/index.js.map +1 -0
  132. package/lib/theme/TaskProgressionOverview/styles.module.css +159 -0
  133. package/lib/theme/TaskProvider/index.d.ts +15 -0
  134. package/lib/theme/TaskProvider/index.d.ts.map +1 -0
  135. package/lib/theme/TaskProvider/index.js +134 -0
  136. package/lib/theme/TaskProvider/index.js.map +1 -0
  137. package/lib/utils/badgeStyles.d.ts +29 -0
  138. package/lib/utils/badgeStyles.d.ts.map +1 -0
  139. package/lib/utils/badgeStyles.js +60 -0
  140. package/lib/utils/badgeStyles.js.map +1 -0
  141. package/lib/utils/icons.d.ts +38 -0
  142. package/lib/utils/icons.d.ts.map +1 -0
  143. package/lib/utils/icons.js +53 -0
  144. package/lib/utils/icons.js.map +1 -0
  145. package/lib/utils/logger.d.ts +38 -0
  146. package/lib/utils/logger.d.ts.map +1 -0
  147. package/lib/utils/logger.js +72 -0
  148. package/lib/utils/logger.js.map +1 -0
  149. package/lib/utils/storage.d.ts +33 -0
  150. package/lib/utils/storage.d.ts.map +1 -0
  151. package/lib/utils/storage.js +105 -0
  152. package/lib/utils/storage.js.map +1 -0
  153. package/lib/utils/useDocTaskStats.d.ts +58 -0
  154. package/lib/utils/useDocTaskStats.d.ts.map +1 -0
  155. package/lib/utils/useDocTaskStats.js +206 -0
  156. package/lib/utils/useDocTaskStats.js.map +1 -0
  157. package/lib/utils/usePluginId.d.ts +24 -0
  158. package/lib/utils/usePluginId.d.ts.map +1 -0
  159. package/lib/utils/usePluginId.js +61 -0
  160. package/lib/utils/usePluginId.js.map +1 -0
  161. package/lib/utils/useResolveDocPath.d.ts +33 -0
  162. package/lib/utils/useResolveDocPath.d.ts.map +1 -0
  163. package/lib/utils/useResolveDocPath.js +122 -0
  164. package/lib/utils/useResolveDocPath.js.map +1 -0
  165. package/lib/utils/useTaskBadgeAnimation.d.ts +16 -0
  166. package/lib/utils/useTaskBadgeAnimation.d.ts.map +1 -0
  167. package/lib/utils/useTaskBadgeAnimation.js +51 -0
  168. package/lib/utils/useTaskBadgeAnimation.js.map +1 -0
  169. package/lib/validateThemeConfig.d.ts +8 -0
  170. package/lib/validateThemeConfig.d.ts.map +1 -0
  171. package/lib/validateThemeConfig.js +15 -0
  172. package/lib/validateThemeConfig.js.map +1 -0
  173. package/package.json +82 -0
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ /**
3
+ * MDXComponents wrapper
4
+ * Makes Task components available in MDX
5
+ *
6
+ * NOTE: Users don't write <Task>, <Text>, <Hint>, <Solution> directly in MDX.
7
+ * Instead, they write directive syntax (:::task[Name]) which is transformed
8
+ * by our remark plugin into these JSX components during compilation.
9
+ *
10
+ * These components must still be exported here so they're available when
11
+ * the transformed JSX is rendered.
12
+ *
13
+ * TaskProgression, TaskProgressionOverview, and TaskPlaceholder ARE used directly by users.
14
+ *
15
+ * CRITICAL FIX: Import Code and Pre directly from theme-classic to avoid circular resolution
16
+ * when DocRoot uses direct imports (which breaks the @theme-original chain).
17
+ */
18
+ var __importDefault = (this && this.__importDefault) || function (mod) {
19
+ return (mod && mod.__esModule) ? mod : { "default": mod };
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ const MDXComponents_1 = __importDefault(require("@theme-original/MDXComponents"));
23
+ // Import Code and Pre directly from theme-classic to break potential circular resolution
24
+ const Code_1 = __importDefault(require("@docusaurus/theme-classic/lib/theme/MDXComponents/Code"));
25
+ const Pre_1 = __importDefault(require("@docusaurus/theme-classic/lib/theme/MDXComponents/Pre"));
26
+ const Admonition_1 = __importDefault(require("@docusaurus/theme-classic/lib/theme/Admonition"));
27
+ const Task_1 = __importDefault(require("@theme/Task"));
28
+ const TaskExample_1 = __importDefault(require("@theme/TaskExample"));
29
+ const TaskPlaceholder_1 = __importDefault(require("@theme/TaskPlaceholder"));
30
+ const Text_1 = __importDefault(require("@theme/Task/Text"));
31
+ const Hint_1 = __importDefault(require("@theme/Task/Hint"));
32
+ const Solution_1 = __importDefault(require("@theme/Task/Solution"));
33
+ const TaskProgression_1 = __importDefault(require("@theme/TaskProgression"));
34
+ const TaskProgressionOverview_1 = __importDefault(require("@theme/TaskProgressionOverview"));
35
+ exports.default = {
36
+ ...MDXComponents_1.default,
37
+ // Explicitly override code and pre components with direct imports
38
+ code: Code_1.default,
39
+ pre: Pre_1.default,
40
+ // Additional MDX components
41
+ admonition: Admonition_1.default,
42
+ // Task components
43
+ Task: Task_1.default,
44
+ TaskExample: TaskExample_1.default,
45
+ TaskPlaceholder: TaskPlaceholder_1.default,
46
+ Text: Text_1.default,
47
+ Hint: Hint_1.default,
48
+ Solution: Solution_1.default,
49
+ TaskProgression: TaskProgression_1.default,
50
+ TaskProgressionOverview: TaskProgressionOverview_1.default,
51
+ };
52
+ //# sourceMappingURL=MDXComponents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MDXComponents.js","sourceRoot":"","sources":["../../src/theme/MDXComponents.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;;;AAGH,kFAA0D;AAC1D,yFAAyF;AACzF,kGAA6E;AAC7E,gGAA2E;AAC3E,gGAAwE;AACxE,uDAA+B;AAC/B,qEAA6C;AAC7C,6EAAqD;AACrD,4DAAoC;AACpC,4DAAoC;AACpC,oEAA4C;AAC5C,6EAAqD;AACrD,6FAAqE;AAErE,kBAAe;IACb,GAAG,uBAAa;IAChB,kEAAkE;IAClE,IAAI,EAAE,cAAO;IACb,GAAG,EAAE,aAAM;IACX,4BAA4B;IAC5B,UAAU,EAAE,oBAAU;IACtB,kBAAkB;IAClB,IAAI,EAAJ,cAAI;IACJ,WAAW,EAAX,qBAAW;IACX,eAAe,EAAf,yBAAe;IACf,IAAI,EAAJ,cAAI;IACJ,IAAI,EAAJ,cAAI;IACJ,QAAQ,EAAR,kBAAQ;IACR,eAAe,EAAf,yBAAe;IACf,uBAAuB,EAAvB,iCAAuB;CACxB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Root component wrapper
3
+ * Injects TaskAutoHideToggle into the navbar using a custom element
4
+ */
5
+ import React from 'react';
6
+ export default function Root({ children }: {
7
+ children: React.ReactNode;
8
+ }): React.ReactElement;
9
+ //# sourceMappingURL=Root.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Root.d.ts","sourceRoot":"","sources":["../../src/theme/Root.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAoB,MAAM,OAAO,CAAC;AAOzC,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,GAAG,KAAK,CAAC,YAAY,CA+D5F"}
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ /**
3
+ * Root component wrapper
4
+ * Injects TaskAutoHideToggle into the navbar using a custom element
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ var __importDefault = (this && this.__importDefault) || function (mod) {
40
+ return (mod && mod.__esModule) ? mod : { "default": mod };
41
+ };
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.default = Root;
44
+ const react_1 = __importStar(require("react"));
45
+ const ReactDOM = __importStar(require("react-dom/client"));
46
+ const TaskAutoHideToggle_1 = __importDefault(require("./TaskAutoHideToggle"));
47
+ // Store root instance to prevent multiple renders
48
+ let toggleRoot = null;
49
+ function Root({ children }) {
50
+ (0, react_1.useEffect)(() => {
51
+ // Only run on client side
52
+ if (typeof window === 'undefined')
53
+ return;
54
+ const injectToggle = () => {
55
+ // Find the navbar right section
56
+ const navbar = document.querySelector('.navbar__items--right');
57
+ if (!navbar)
58
+ return;
59
+ // Check if already injected
60
+ const existingContainer = document.getElementById('task-auto-hide-toggle-container');
61
+ if (existingContainer)
62
+ return;
63
+ // Create container
64
+ const container = document.createElement('div');
65
+ container.id = 'task-auto-hide-toggle-container';
66
+ container.style.display = 'flex';
67
+ container.style.alignItems = 'center';
68
+ container.style.marginLeft = '12px';
69
+ // Insert at the beginning of right navbar items
70
+ navbar.insertBefore(container, navbar.firstChild);
71
+ // Render the toggle button using React 18/19 createRoot API
72
+ toggleRoot = ReactDOM.createRoot(container);
73
+ toggleRoot.render(react_1.default.createElement(TaskAutoHideToggle_1.default, null));
74
+ };
75
+ // Try immediately
76
+ injectToggle();
77
+ // Also try after a short delay in case navbar isn't ready
78
+ const timeoutId = setTimeout(injectToggle, 100);
79
+ // Observe DOM changes for hot reload
80
+ const observer = new MutationObserver(() => {
81
+ if (!document.getElementById('task-auto-hide-toggle-container')) {
82
+ injectToggle();
83
+ }
84
+ });
85
+ observer.observe(document.body, {
86
+ childList: true,
87
+ subtree: true,
88
+ });
89
+ return () => {
90
+ clearTimeout(timeoutId);
91
+ observer.disconnect();
92
+ // Clean up on unmount
93
+ if (toggleRoot) {
94
+ toggleRoot.unmount();
95
+ toggleRoot = null;
96
+ }
97
+ const container = document.getElementById('task-auto-hide-toggle-container');
98
+ if (container) {
99
+ container.remove();
100
+ }
101
+ };
102
+ }, []);
103
+ return react_1.default.createElement(react_1.default.Fragment, null, children);
104
+ }
105
+ //# sourceMappingURL=Root.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Root.js","sourceRoot":"","sources":["../../src/theme/Root.tsx"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASH,uBA+DC;AAtED,+CAAyC;AACzC,2DAA6C;AAC7C,8EAAsD;AAEtD,kDAAkD;AAClD,IAAI,UAAU,GAAyB,IAAI,CAAC;AAE5C,SAAwB,IAAI,CAAC,EAAE,QAAQ,EAAiC;IACtE,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,0BAA0B;QAC1B,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO;QAE1C,MAAM,YAAY,GAAG,GAAG,EAAE;YACxB,gCAAgC;YAChC,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC;YAC/D,IAAI,CAAC,MAAM;gBAAE,OAAO;YAEpB,4BAA4B;YAC5B,MAAM,iBAAiB,GAAG,QAAQ,CAAC,cAAc,CAAC,iCAAiC,CAAC,CAAC;YACrF,IAAI,iBAAiB;gBAAE,OAAO;YAE9B,mBAAmB;YACnB,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,SAAS,CAAC,EAAE,GAAG,iCAAiC,CAAC;YACjD,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YACjC,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;YACtC,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;YAEpC,gDAAgD;YAChD,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;YAElD,4DAA4D;YAC5D,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAC5C,UAAU,CAAC,MAAM,CAAC,8BAAC,4BAAkB,OAAG,CAAC,CAAC;QAC5C,CAAC,CAAC;QAEF,kBAAkB;QAClB,YAAY,EAAE,CAAC;QAEf,0DAA0D;QAC1D,MAAM,SAAS,GAAG,UAAU,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QAEhD,qCAAqC;QACrC,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,GAAG,EAAE;YACzC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,iCAAiC,CAAC,EAAE,CAAC;gBAChE,YAAY,EAAE,CAAC;YACjB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;YAC9B,SAAS,EAAE,IAAI;YACf,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QAEH,OAAO,GAAG,EAAE;YACV,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,QAAQ,CAAC,UAAU,EAAE,CAAC;YACtB,sBAAsB;YACtB,IAAI,UAAU,EAAE,CAAC;gBACf,UAAU,CAAC,OAAO,EAAE,CAAC;gBACrB,UAAU,GAAG,IAAI,CAAC;YACpB,CAAC;YACD,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,iCAAiC,CAAC,CAAC;YAC7E,IAAI,SAAS,EAAE,CAAC;gBACd,SAAS,CAAC,MAAM,EAAE,CAAC;YACrB,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,8DAAG,QAAQ,CAAI,CAAC;AACzB,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Hint Component
3
+ * Content area for task hints - rendered as a panel by parent Task component
4
+ */
5
+ import { type ReactNode, type ReactElement } from 'react';
6
+ export interface HintProps {
7
+ children?: ReactNode;
8
+ }
9
+ declare function Hint({ children }: HintProps): ReactElement;
10
+ declare namespace Hint {
11
+ var displayName: string;
12
+ }
13
+ export default Hint;
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/theme/Task/Hint/index.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAc,EAAE,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAIjE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAKD,iBAAwB,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,SAAS,GAAG,YAAY,CASlE;kBATuB,IAAI;;;eAAJ,IAAI"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ /**
3
+ * Hint Component
4
+ * Content area for task hints - rendered as a panel by parent Task component
5
+ */
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.default = Hint;
11
+ const react_1 = __importDefault(require("react"));
12
+ const icons_1 = require("../../../utils/icons");
13
+ const styles_module_css_1 = __importDefault(require("./styles.module.css"));
14
+ // Add displayName for parent component detection
15
+ Hint.displayName = 'Hint';
16
+ function Hint({ children }) {
17
+ return (react_1.default.createElement("div", { className: styles_module_css_1.default.hintPanel },
18
+ react_1.default.createElement("div", { className: styles_module_css_1.default.hintLabel },
19
+ icons_1.HINT_ICON,
20
+ "Hint"),
21
+ react_1.default.createElement("div", { className: styles_module_css_1.default.hintContent }, children)));
22
+ }
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/theme/Task/Hint/index.tsx"],"names":[],"mappings":";AAAA;;;GAGG;;;;;AAaH,uBASC;AApBD,kDAAiE;AACjE,gDAAiD;AACjD,4EAAyC;AAMzC,iDAAiD;AACjD,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;AAE1B,SAAwB,IAAI,CAAC,EAAE,QAAQ,EAAa;IAClD,OAAO,CACL,uCAAK,SAAS,EAAE,2BAAM,CAAC,SAAS;QAC9B,uCAAK,SAAS,EAAE,2BAAM,CAAC,SAAS;YAAG,iBAAS;mBAAW;QACvD,uCAAK,SAAS,EAAE,2BAAM,CAAC,WAAW,IAC/B,QAAQ,CACL,CACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Hint Panel Styles
3
+ */
4
+
5
+ .hintPanel {
6
+ padding: 1rem 1.25rem;
7
+ background-color: var(--ifm-color-warning-contrast-background);
8
+ border-left: 4px solid var(--ifm-color-warning);
9
+ border-radius: 4px;
10
+ }
11
+
12
+ .hintLabel {
13
+ font-weight: 600;
14
+ font-size: 0.95rem;
15
+ color: var(--ifm-color-warning-darker);
16
+ margin-bottom: 0.75rem;
17
+ display: flex;
18
+ align-items: center;
19
+ }
20
+
21
+ .hintContent {
22
+ color: var(--ifm-font-color-base);
23
+ line-height: 1.6;
24
+ }
25
+
26
+ .hintContent > *:first-child {
27
+ margin-top: 0;
28
+ }
29
+
30
+ .hintContent > *:last-child {
31
+ margin-bottom: 0;
32
+ }
33
+
34
+ .hintContent p {
35
+ margin-bottom: 0.75rem;
36
+ }
37
+
38
+ .hintContent ul,
39
+ .hintContent ol {
40
+ margin-left: 1.5rem;
41
+ margin-bottom: 0.75rem;
42
+ }
43
+
44
+ .hintContent li {
45
+ margin-bottom: 0.25rem;
46
+ }
47
+
48
+ .hintContent code {
49
+ background-color: unset;
50
+ border-radius: 3px;
51
+ padding: 0.125rem 0.375rem;
52
+ font-size: 0.9em;
53
+ }
54
+
55
+ .hintContent pre code {
56
+ padding: 16px;
57
+ }
58
+
59
+ .hintContent pre {
60
+ margin-top: 20px;
61
+ margin-bottom: 20px;
62
+ }
63
+
64
+ /* Dark mode adjustments */
65
+ html[data-theme='dark'] .hintPanel {
66
+ background-color: rgba(255, 196, 0, 0.1);
67
+ border-left-color: var(--ifm-color-warning-light);
68
+ }
69
+
70
+ html[data-theme='dark'] .hintLabel {
71
+ color: var(--ifm-color-warning-light);
72
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Solution Component
3
+ * Content area for task solutions - rendered as a panel by parent Task component
4
+ */
5
+ import { type ReactNode, type ReactElement } from 'react';
6
+ export interface SolutionProps {
7
+ children?: ReactNode;
8
+ }
9
+ declare function Solution({ children }: SolutionProps): ReactElement;
10
+ declare namespace Solution {
11
+ var displayName: string;
12
+ }
13
+ export default Solution;
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/theme/Task/Solution/index.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAc,EAAE,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAIjE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAKD,iBAAwB,QAAQ,CAAC,EAAE,QAAQ,EAAE,EAAE,aAAa,GAAG,YAAY,CAS1E;kBATuB,QAAQ;;;eAAR,QAAQ"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ /**
3
+ * Solution Component
4
+ * Content area for task solutions - rendered as a panel by parent Task component
5
+ */
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.default = Solution;
11
+ const react_1 = __importDefault(require("react"));
12
+ const icons_1 = require("../../../utils/icons");
13
+ const styles_module_css_1 = __importDefault(require("./styles.module.css"));
14
+ // Add displayName for parent component detection
15
+ Solution.displayName = 'Solution';
16
+ function Solution({ children }) {
17
+ return (react_1.default.createElement("div", { className: styles_module_css_1.default.solutionPanel },
18
+ react_1.default.createElement("div", { className: styles_module_css_1.default.solutionLabel },
19
+ icons_1.SOLUTION_ICON,
20
+ "Solution"),
21
+ react_1.default.createElement("div", { className: styles_module_css_1.default.solutionContent }, children)));
22
+ }
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/theme/Task/Solution/index.tsx"],"names":[],"mappings":";AAAA;;;GAGG;;;;;AAaH,2BASC;AApBD,kDAAiE;AACjE,gDAAqD;AACrD,4EAAyC;AAMzC,iDAAiD;AACjD,QAAQ,CAAC,WAAW,GAAG,UAAU,CAAC;AAElC,SAAwB,QAAQ,CAAC,EAAE,QAAQ,EAAiB;IAC1D,OAAO,CACL,uCAAK,SAAS,EAAE,2BAAM,CAAC,aAAa;QAClC,uCAAK,SAAS,EAAE,2BAAM,CAAC,aAAa;YAAG,qBAAa;uBAAe;QACnE,uCAAK,SAAS,EAAE,2BAAM,CAAC,eAAe,IACnC,QAAQ,CACL,CACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Solution Panel Styles
3
+ */
4
+
5
+ .solutionPanel {
6
+ padding: 1rem 1.25rem;
7
+ background-color: var(--ifm-color-info-contrast-background);
8
+ border-left: 4px solid var(--ifm-color-info);
9
+ border-radius: 4px;
10
+ }
11
+
12
+ .solutionLabel {
13
+ font-weight: 600;
14
+ font-size: 0.95rem;
15
+ color: var(--ifm-color-info-darker);
16
+ margin-bottom: 0.75rem;
17
+ display: flex;
18
+ align-items: center;
19
+ }
20
+
21
+ .solutionContent {
22
+ color: var(--ifm-font-color-base);
23
+ line-height: 1.6;
24
+ }
25
+
26
+ .solutionContent > *:first-child {
27
+ margin-top: 0;
28
+ }
29
+
30
+ .solutionContent > *:last-child {
31
+ margin-bottom: 0;
32
+ }
33
+
34
+ .solutionContent p {
35
+ margin-bottom: 0.75rem;
36
+ }
37
+
38
+ .solutionContent ul,
39
+ .solutionContent ol {
40
+ margin-left: 1.5rem;
41
+ margin-bottom: 0.75rem;
42
+ }
43
+
44
+ .solutionContent li {
45
+ margin-bottom: 0.25rem;
46
+ }
47
+
48
+ .solutionContent code {
49
+ background-color: unset;
50
+ border-radius: 3px;
51
+ padding: 0.125rem 0.375rem;
52
+ font-size: 0.9em;
53
+ }
54
+
55
+ .solutionContent pre code {
56
+ padding: 16px;
57
+ }
58
+
59
+ .solutionContent pre {
60
+ margin-top: 20px;
61
+ margin-bottom: 20px;
62
+ }
63
+
64
+ /* Dark mode adjustments */
65
+ html[data-theme='dark'] .solutionPanel {
66
+ border-left-color: var(--ifm-color-info-light);
67
+ }
68
+
69
+ html[data-theme='dark'] .solutionLabel {
70
+ color: var(--ifm-color-info-light);
71
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Text Component
3
+ * Main content area for task instructions
4
+ */
5
+ import { type ReactNode, type ReactElement } from 'react';
6
+ export interface TextProps {
7
+ children?: ReactNode;
8
+ }
9
+ declare function Text({ children }: TextProps): ReactElement;
10
+ declare namespace Text {
11
+ var displayName: string;
12
+ }
13
+ export default Text;
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/theme/Task/Text/index.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAc,EAAE,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAGjE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAKD,iBAAwB,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,SAAS,GAAG,YAAY,CAMlE;kBANuB,IAAI;;;eAAJ,IAAI"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ /**
3
+ * Text Component
4
+ * Main content area for task instructions
5
+ */
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.default = Text;
11
+ const react_1 = __importDefault(require("react"));
12
+ const styles_module_css_1 = __importDefault(require("./styles.module.css"));
13
+ // Add displayName for parent component detection
14
+ Text.displayName = 'Text';
15
+ function Text({ children }) {
16
+ return (react_1.default.createElement("div", { className: styles_module_css_1.default.textContainer }, children));
17
+ }
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/theme/Task/Text/index.tsx"],"names":[],"mappings":";AAAA;;;GAGG;;;;;AAYH,uBAMC;AAhBD,kDAAiE;AACjE,4EAAyC;AAMzC,iDAAiD;AACjD,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;AAE1B,SAAwB,IAAI,CAAC,EAAE,QAAQ,EAAa;IAClD,OAAO,CACL,uCAAK,SAAS,EAAE,2BAAM,CAAC,aAAa,IACjC,QAAQ,CACL,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,39 @@
1
+ .textContainer {
2
+ margin-bottom: 1rem;
3
+ color: var(--ifm-font-color-base);
4
+ line-height: 1.6;
5
+ }
6
+
7
+ .textContainer > *:last-child {
8
+ margin-bottom: 0;
9
+ }
10
+
11
+ .textContainer p {
12
+ margin-bottom: 0.75rem;
13
+ }
14
+
15
+ .textContainer ul,
16
+ .textContainer ol {
17
+ margin-left: 1.5rem;
18
+ margin-bottom: 0.75rem;
19
+ }
20
+
21
+ .textContainer li {
22
+ margin-bottom: 0.25rem;
23
+ }
24
+
25
+ .textContainer code {
26
+ background-color: unset;
27
+ border-radius: 3px;
28
+ padding: 0.125rem 0.375rem;
29
+ font-size: 0.9em;
30
+ }
31
+
32
+ .textContainer pre code {
33
+ padding: 16px;
34
+ }
35
+
36
+ .textContainer pre {
37
+ margin-top: 20px;
38
+ margin-bottom: 20px;
39
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Task Component
3
+ * Interactive collapsible task with optional hint and solution sections
4
+ */
5
+ import { type ReactNode, type ReactElement } from 'react';
6
+ export interface TaskProps {
7
+ name: string;
8
+ children?: ReactNode;
9
+ }
10
+ export default function Task({ name, children }: TaskProps): ReactElement;
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/theme/Task/index.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAc,EAAE,KAAK,SAAS,EAAY,KAAK,YAAY,EAAqB,MAAM,OAAO,CAAC;AAU9F,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,SAAS,GAAG,YAAY,CAqWxE"}