@sp-days-framework/docusaurus-plugin-interactive-tasks 1.0.4-rc1 → 1.0.5-rc1

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 (36) hide show
  1. package/README.md +63 -6
  2. package/lib/index.d.ts +2 -4
  3. package/lib/index.d.ts.map +1 -1
  4. package/lib/index.js +1 -1
  5. package/lib/index.js.map +1 -1
  6. package/lib/plugin/remarkTaskDirective.d.ts +3 -1
  7. package/lib/plugin/remarkTaskDirective.d.ts.map +1 -1
  8. package/lib/plugin/remarkTaskDirective.js +80 -21
  9. package/lib/plugin/remarkTaskDirective.js.map +1 -1
  10. package/lib/theme/MDXComponents.d.ts.map +1 -1
  11. package/lib/theme/MDXComponents.js +2 -0
  12. package/lib/theme/MDXComponents.js.map +1 -1
  13. package/lib/theme/Task/Output/index.d.ts +14 -0
  14. package/lib/theme/Task/Output/index.d.ts.map +1 -0
  15. package/lib/theme/Task/Output/index.js +23 -0
  16. package/lib/theme/Task/Output/index.js.map +1 -0
  17. package/lib/theme/Task/Output/styles.module.css +72 -0
  18. package/lib/theme/Task/Solution/styles.module.css +7 -5
  19. package/lib/theme/Task/index.d.ts +3 -2
  20. package/lib/theme/Task/index.d.ts.map +1 -1
  21. package/lib/theme/Task/index.js +147 -100
  22. package/lib/theme/Task/index.js.map +1 -1
  23. package/lib/theme/Task/styles.module.css +122 -167
  24. package/lib/theme/TaskExample/index.d.ts +2 -1
  25. package/lib/theme/TaskExample/index.d.ts.map +1 -1
  26. package/lib/theme/TaskExample/index.js +133 -90
  27. package/lib/theme/TaskExample/index.js.map +1 -1
  28. package/lib/theme/TaskPlaceholder/index.d.ts.map +1 -1
  29. package/lib/theme/TaskPlaceholder/index.js +133 -94
  30. package/lib/theme/TaskPlaceholder/index.js.map +1 -1
  31. package/lib/theme/TaskProgressionOverview/styles.module.css +2 -2
  32. package/lib/utils/icons.d.ts +5 -0
  33. package/lib/utils/icons.d.ts.map +1 -1
  34. package/lib/utils/icons.js +7 -1
  35. package/lib/utils/icons.js.map +1 -1
  36. package/package.json +1 -1
package/README.md CHANGED
@@ -1,11 +1,11 @@
1
1
  # Docusaurus Interactive Tasks Plugin
2
2
 
3
- A Docusaurus plugin that transforms documentation into interactive learning experiences with tasks, hints, solutions, and automatic progress tracking.
3
+ A Docusaurus plugin that transforms documentation into interactive learning experiences with tasks, hints, solutions, expected outputs, and automatic progress tracking.
4
4
 
5
5
  ## Features
6
6
 
7
7
  - **Interactive Tasks** - Collapsible task components with completion tracking
8
- - **Hints & Solutions** - Optional toggleable hints and solutions for each task
8
+ - **Hints, Solutions & Expected Outputs** - Optional toggleable hints, solutions, and expected outputs for each task
9
9
  - **Auto-Numbering** - Automatic task numbering per page
10
10
  - **Persistent Progress** - Completion status saved to localStorage
11
11
  - **Progress Tracking** - Visual progress indicators in sidebar and task progression components
@@ -35,7 +35,7 @@ module.exports = {
35
35
  "classic",
36
36
  {
37
37
  docs: {
38
- remarkPlugins: [
38
+ beforeDefaultRemarkPlugins: [
39
39
  require("@sp-days-framework/docusaurus-plugin-interactive-tasks")
40
40
  .remarkTaskDirective,
41
41
  ],
@@ -72,9 +72,10 @@ Download from https://nodejs.org/. npm is included with Node.js.
72
72
  **Syntax Rules:**
73
73
 
74
74
  - Use **4 colons** (`::::`) for task containers
75
- - Use **3 colons** (`:::`) for hint and solution blocks
75
+ - Use **3 colons** (`:::`) for hint, solution, and output blocks
76
76
  - Tasks are automatically numbered within each page
77
77
  - Completion state persists across sessions
78
+ - **Expected Output** blocks use success color theme (`--ifm-color-success`)
78
79
 
79
80
  ## Usage
80
81
 
@@ -134,6 +135,62 @@ return Response.json({ success: true });
134
135
  ::::
135
136
  ```
136
137
 
138
+ ### Task with Expected Output
139
+
140
+ Show users what output they should expect:
141
+
142
+ ```mdx
143
+ ::::task[Run Docker Container]
144
+
145
+ Start a new nginx container in detached mode on port 8080.
146
+
147
+ :::output
148
+ \`\`\`bash
149
+ $ docker run -d -p 8080:80 nginx
150
+ a3f5c8b9d2e1f4a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1
151
+ \`\`\`
152
+
153
+ Visit `http://localhost:8080` and you should see the nginx welcome page.
154
+ :::
155
+
156
+ ::::
157
+ ```
158
+
159
+ ### Task with All Features
160
+
161
+ Combine hint, solution, and expected output:
162
+
163
+ ```mdx
164
+ ::::task[Build Application]
165
+
166
+ Build the application and verify it works.
167
+
168
+ :::hint
169
+ Use the npm script defined in `package.json`.
170
+ :::
171
+
172
+ :::solution
173
+ \`\`\`bash
174
+ npm run build
175
+ npm run test
176
+ \`\`\`
177
+ :::
178
+
179
+ :::output
180
+ \`\`\`bash
181
+ $ npm run build
182
+ > Building application...
183
+ > ✓ Compiled successfully
184
+
185
+ $ npm run test
186
+ > Running tests...
187
+ > ✓ All tests passed (12/12)
188
+ \`\`\`
189
+ :::
190
+
191
+ ::::
192
+ ```
193
+
137
194
  ### Task Examples (Non-Persistent)
138
195
 
139
196
  For demonstration purposes, use task examples that don't save completion state:
@@ -252,7 +309,7 @@ module.exports = {
252
309
  {
253
310
  docs: {
254
311
  // Default docs instance
255
- remarkPlugins: [
312
+ beforeDefaultRemarkPlugins: [
256
313
  require('@sp-days-framework/docusaurus-plugin-interactive-tasks').remarkTaskDirective,
257
314
  ],
258
315
  },
@@ -267,7 +324,7 @@ module.exports = {
267
324
  id: 'community',
268
325
  path: 'community',
269
326
  // Community docs instance
270
- remarkPlugins: [
327
+ beforeDefaultRemarkPlugins: [
271
328
  require('@sp-days-framework/docusaurus-plugin-interactive-tasks').remarkTaskDirective,
272
329
  ],
273
330
  },
package/lib/index.d.ts CHANGED
@@ -3,12 +3,10 @@
3
3
  * A plugin providing interactive task components with progress tracking
4
4
  */
5
5
  import type { LoadContext, Plugin } from "@docusaurus/types";
6
- export interface PluginOptions {
7
- }
8
- export default function interactiveTasksPlugin(context: LoadContext, options: PluginOptions): Plugin;
6
+ export default function interactiveTasksPlugin(context: LoadContext): Plugin;
9
7
  export declare function getSwizzleComponentList(): string[];
10
8
  export { validateThemeConfig } from "./validateThemeConfig";
11
9
  export { useDocTaskStats, useCategoryTaskStats } from "./utils/useDocTaskStats";
12
10
  export type { DocTaskStats } from "./utils/useDocTaskStats";
13
- export { remarkTaskDirective } from "./plugin/remarkTaskDirective";
11
+ export { remarkTaskDirective, type PluginOptions } from "./plugin/remarkTaskDirective";
14
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAK7D,MAAM,WAAW,aAAa;CAE7B;AAED,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAC5C,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,aAAa,GACrB,MAAM,CAoCR;AAGD,wBAAgB,uBAAuB,IAAI,MAAM,EAAE,CAElD;AAED,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAChF,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAK5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAK7D,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAC5C,OAAO,EAAE,WAAW,GACnB,MAAM,CAoCR;AAGD,wBAAgB,uBAAuB,IAAI,MAAM,EAAE,CAElD;AAED,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAChF,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAK5D,OAAO,EAAE,mBAAmB,EAAE,KAAK,aAAa,EAAE,MAAM,8BAA8B,CAAC"}
package/lib/index.js CHANGED
@@ -12,7 +12,7 @@ exports.default = interactiveTasksPlugin;
12
12
  exports.getSwizzleComponentList = getSwizzleComponentList;
13
13
  const path_1 = __importDefault(require("path"));
14
14
  const TaskRegistryPlugin_1 = require("./plugin/TaskRegistryPlugin");
15
- function interactiveTasksPlugin(context, options) {
15
+ function interactiveTasksPlugin(context) {
16
16
  const { siteDir } = context;
17
17
  return {
18
18
  name: "@sp-days-framework/docusaurus-plugin-interactive-tasks",
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;AAYH,yCAuCC;AAGD,0DAEC;AAtDD,gDAAwB;AAGxB,oEAAiE;AAOjE,SAAwB,sBAAsB,CAC5C,OAAoB,EACpB,OAAsB;IAEtB,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAE5B,OAAO;QACL,IAAI,EAAE,wDAAwD;QAE9D,YAAY;YACV,OAAO,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC5C,CAAC;QAED,sBAAsB;YACpB,OAAO,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QACjD,CAAC;QAED,gBAAgB;YACd,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,gBAAgB,CAAC,MAAqB,EAAE,QAAiB;YACvD,MAAM,OAAO,GAAU,EAAE,CAAC;YAE1B,0DAA0D;YAC1D,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,CAAC,IAAI,CAAC,IAAI,uCAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;YAChD,CAAC;YAED,OAAO;gBACL,OAAO;aACR,CAAC;QACJ,CAAC;QAED,yDAAyD;QACzD,iCAAiC;YAC/B,OAAO,EAAE,CAAC;QACZ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,2DAA2D;AAC3D,SAAgB,uBAAuB;IACrC,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAE5B,6CAA6C;AAC7C,2DAAgF;AAAvE,kHAAA,eAAe,OAAA;AAAE,uHAAA,oBAAoB,OAAA;AAE9C,uFAAuF;AACvF,yFAAyF;AAEzF,6EAA6E;AAC7E,oEAAmE;AAA1D,0HAAA,mBAAmB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;AAQH,yCAsCC;AAGD,0DAEC;AAjDD,gDAAwB;AAGxB,oEAAiE;AAGjE,SAAwB,sBAAsB,CAC5C,OAAoB;IAEpB,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAE5B,OAAO;QACL,IAAI,EAAE,wDAAwD;QAE9D,YAAY;YACV,OAAO,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC5C,CAAC;QAED,sBAAsB;YACpB,OAAO,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QACjD,CAAC;QAED,gBAAgB;YACd,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,gBAAgB,CAAC,MAAqB,EAAE,QAAiB;YACvD,MAAM,OAAO,GAAU,EAAE,CAAC;YAE1B,0DAA0D;YAC1D,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,CAAC,IAAI,CAAC,IAAI,uCAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;YAChD,CAAC;YAED,OAAO;gBACL,OAAO;aACR,CAAC;QACJ,CAAC;QAED,yDAAyD;QACzD,iCAAiC;YAC/B,OAAO,EAAE,CAAC;QACZ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,2DAA2D;AAC3D,SAAgB,uBAAuB;IACrC,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAE5B,6CAA6C;AAC7C,2DAAgF;AAAvE,kHAAA,eAAe,OAAA;AAAE,uHAAA,oBAAoB,OAAA;AAE9C,uFAAuF;AACvF,yFAAyF;AAEzF,6EAA6E;AAC7E,oEAAuF;AAA9E,0HAAA,mBAAmB,OAAA"}
@@ -18,8 +18,10 @@
18
18
  */
19
19
  import type { Plugin } from "unified";
20
20
  import type { Root } from "mdast";
21
- interface PluginOptions {
21
+ export interface PluginOptions {
22
22
  filePath?: string;
23
+ tocEnabled?: boolean;
24
+ tocHeadingLevel?: 2 | 3 | 4 | 5 | 6;
23
25
  }
24
26
  /**
25
27
  * Remark plugin to transform task directives
@@ -1 +1 @@
1
- {"version":3,"file":"remarkTaskDirective.d.ts","sourceRoot":"","sources":["../../src/plugin/remarkTaskDirective.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,EAAE,IAAI,EAAmB,MAAM,OAAO,CAAC;AAWnD,UAAU,aAAa;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA2QD;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,CAuE9D,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"remarkTaskDirective.d.ts","sourceRoot":"","sources":["../../src/plugin/remarkTaskDirective.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,EAAE,IAAI,EAAmB,MAAM,OAAO,CAAC;AAWnD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACrC;AAwUD;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,CAuG9D,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
@@ -61,6 +61,13 @@ function isSolutionDirective(node) {
61
61
  return (node.type === "containerDirective" &&
62
62
  node.name === "solution");
63
63
  }
64
+ /**
65
+ * Check if a node is an output directive
66
+ */
67
+ function isOutputDirective(node) {
68
+ return (node.type === "containerDirective" &&
69
+ node.name === "output");
70
+ }
64
71
  /**
65
72
  * Check if a node is an allowed admonition (nested inside task)
66
73
  * Allows standard Docusaurus admonitions to pass through
@@ -111,8 +118,9 @@ function warn(message, filePath, position) {
111
118
  }
112
119
  /**
113
120
  * Transform a task or task-example directive into JSX components
121
+ * Returns an array containing [headingNode, taskJSX] for TOC integration
114
122
  */
115
- function transformTaskDirective(node, filePath, isExample = false) {
123
+ function transformTaskDirective(node, filePath, isExample = false, taskNumber, tocEnabled = true, tocHeadingLevel = 2) {
116
124
  // Extract task name from label
117
125
  // In remark-directive, :::task[Name] stores "Name" as the first paragraph child with data.directiveLabel: true
118
126
  let taskName = "";
@@ -138,15 +146,18 @@ function transformTaskDirective(node, filePath, isExample = false) {
138
146
  if (!taskName) {
139
147
  warn(`Task is missing a name. Usage: ::::task[Task Name] (note: 4 colons for tasks). This task will be hidden.`, filePath, node.position);
140
148
  // Return empty paragraph to hide the task
141
- return {
142
- type: "paragraph",
143
- children: [],
144
- };
149
+ return [
150
+ {
151
+ type: "paragraph",
152
+ children: [],
153
+ },
154
+ ];
145
155
  }
146
- // Separate children into text content, hints, and solutions
156
+ // Separate children into text content, hints, solutions, and outputs
147
157
  const textContent = [];
148
158
  const hints = [];
149
159
  const solutions = [];
160
+ const outputs = [];
150
161
  const unknownDirectives = [];
151
162
  for (const child of taskContent) {
152
163
  if (isHintDirective(child)) {
@@ -155,6 +166,9 @@ function transformTaskDirective(node, filePath, isExample = false) {
155
166
  else if (isSolutionDirective(child)) {
156
167
  solutions.push(child);
157
168
  }
169
+ else if (isOutputDirective(child)) {
170
+ outputs.push(child);
171
+ }
158
172
  else if (isNestedContainerDirective(child)) {
159
173
  const directiveName = child.name;
160
174
  // Allow standard admonitions and other nested tasks to pass through
@@ -177,7 +191,7 @@ function transformTaskDirective(node, filePath, isExample = false) {
177
191
  if (unknownDirectives.length > 0) {
178
192
  warn(`Unknown directive(s) ${unknownDirectives
179
193
  .map((d) => `:::${d}`)
180
- .join(", ")} inside task "${taskName}". Only :::hint and :::solution are supported inside ::::task.`, filePath, node.position);
194
+ .join(", ")} inside task "${taskName}". Only :::hint, :::solution, and :::output are supported inside ::::task.`, filePath, node.position);
181
195
  }
182
196
  // Validation: Warn about multiple hints
183
197
  if (hints.length > 1) {
@@ -187,10 +201,15 @@ function transformTaskDirective(node, filePath, isExample = false) {
187
201
  if (solutions.length > 1) {
188
202
  warn(`Multiple :::solution sections found in task "${taskName}". Only the first will be used.`, filePath, node.position);
189
203
  }
204
+ // Validation: Warn about multiple outputs
205
+ if (outputs.length > 1) {
206
+ warn(`Multiple :::output sections found in task "${taskName}". Only the first will be used.`, filePath, node.position);
207
+ }
190
208
  // Validation: Warn if task is empty
191
209
  if (textContent.length === 0 &&
192
210
  hints.length === 0 &&
193
- solutions.length === 0) {
211
+ solutions.length === 0 &&
212
+ outputs.length === 0) {
194
213
  warn(`Task "${taskName}" has no content. Add task instructions.`, filePath, node.position);
195
214
  }
196
215
  // Build JSX structure
@@ -209,9 +228,35 @@ function transformTaskDirective(node, filePath, isExample = false) {
209
228
  const solutionChildren = solutions[0].children || [];
210
229
  taskChildren.push(createJSXElement("Solution", [], solutionChildren));
211
230
  }
231
+ // Add <Output> (use only first one)
232
+ if (outputs.length > 0) {
233
+ const outputChildren = outputs[0].children || [];
234
+ taskChildren.push(createJSXElement("Output", [], outputChildren));
235
+ }
236
+ // Create a heading node for TOC integration (if enabled)
237
+ // The headings plugin will automatically assign an ID to this node
238
+ // Include task number prefix in heading text for TOC display
239
+ const nodes = [];
240
+ if (tocEnabled) {
241
+ const headingPrefix = isExample
242
+ ? (taskNumber !== undefined ? `Example ${taskNumber}: ` : "Example: ")
243
+ : (taskNumber !== undefined ? `Task ${taskNumber}: ` : "Task: ");
244
+ const headingNode = {
245
+ type: "heading",
246
+ depth: tocHeadingLevel, // Configurable heading level for TOC
247
+ children: [{ type: "text", value: `${headingPrefix}${taskName}` }],
248
+ data: {
249
+ // The headings plugin will populate this with hProperties.id
250
+ },
251
+ };
252
+ nodes.push(headingNode);
253
+ }
212
254
  // Create <Task name="..."> or <TaskExample name="..."> element
213
255
  const componentName = isExample ? "TaskExample" : "Task";
214
- return createJSXElement(componentName, [createJSXAttribute("name", taskName)], taskChildren);
256
+ const taskJSX = createJSXElement(componentName, [createJSXAttribute("name", taskName)], taskChildren);
257
+ // Return heading (if TOC enabled) and task component
258
+ nodes.push(taskJSX);
259
+ return nodes;
215
260
  }
216
261
  /**
217
262
  * Remark plugin to transform task directives
@@ -219,6 +264,12 @@ function transformTaskDirective(node, filePath, isExample = false) {
219
264
  const remarkTaskDirective = (options = {}) => {
220
265
  return (tree, file) => {
221
266
  const filePath = options.filePath || file.path || file.history?.[0] || "unknown";
267
+ // Get TOC configuration with defaults
268
+ const tocEnabled = options.tocEnabled ?? true;
269
+ const tocHeadingLevel = options.tocHeadingLevel ?? 2;
270
+ // Track task numbers within this file for TOC pre-link
271
+ let taskCounter = 0;
272
+ let exampleCounter = 0;
222
273
  // First pass: Check for orphaned hints/solutions and task directives
223
274
  (0, unist_util_visit_1.visit)(tree, (node, index, parent) => {
224
275
  if (isTaskDirective(node)) {
@@ -227,11 +278,13 @@ const remarkTaskDirective = (options = {}) => {
227
278
  node.data = {};
228
279
  }
229
280
  node.data.directiveHandled = true;
230
- // Transform the task directive
231
- const transformed = transformTaskDirective(node, filePath, false);
232
- // Replace the node in the tree
281
+ // Increment task counter
282
+ taskCounter++;
283
+ // Transform the task directive - returns array of nodes
284
+ const transformedNodes = transformTaskDirective(node, filePath, false, taskCounter, tocEnabled, tocHeadingLevel);
285
+ // Replace the single node with multiple nodes (heading + task, or just task)
233
286
  if (parent && typeof index === "number") {
234
- parent.children[index] = transformed;
287
+ parent.children.splice(index, 1, ...transformedNodes);
235
288
  }
236
289
  // Skip traversing into children - they're already processed by transformTaskDirective
237
290
  return "skip";
@@ -242,25 +295,31 @@ const remarkTaskDirective = (options = {}) => {
242
295
  node.data = {};
243
296
  }
244
297
  node.data.directiveHandled = true;
245
- // Transform the task-example directive (isExample = true)
246
- const transformed = transformTaskDirective(node, filePath, true);
247
- // Replace the node in the tree
298
+ // Increment example counter
299
+ exampleCounter++;
300
+ // Transform the task-example directive (isExample = true) - returns array of nodes
301
+ const transformedNodes = transformTaskDirective(node, filePath, true, exampleCounter, tocEnabled, tocHeadingLevel);
302
+ // Replace the single node with multiple nodes (heading + task, or just task)
248
303
  if (parent && typeof index === "number") {
249
- parent.children[index] = transformed;
304
+ parent.children.splice(index, 1, ...transformedNodes);
250
305
  }
251
306
  // Skip traversing into children - they're already processed by transformTaskDirective
252
307
  return "skip";
253
308
  }
254
- else if (isHintDirective(node) || isSolutionDirective(node)) {
309
+ else if (isHintDirective(node) || isSolutionDirective(node) || isOutputDirective(node)) {
255
310
  // Mark as handled to suppress Docusaurus warning
256
311
  if (!node.data) {
257
312
  node.data = {};
258
313
  }
259
314
  node.data.directiveHandled = true;
260
- // Check if this hint/solution is inside a task
261
- // This is an orphaned hint/solution (we already processed tasks above)
315
+ // Check if this hint/solution/output is inside a task
316
+ // This is an orphaned hint/solution/output (we already processed tasks above)
262
317
  const directiveName = node.name;
263
- warn(`:::${directiveName} directive found outside of ::::task context. ${directiveName === "hint" ? "Hints" : "Solutions"} must be inside a task.`, filePath, node.position);
318
+ warn(`:::${directiveName} directive found outside of ::::task context. ${directiveName === "hint"
319
+ ? "Hints"
320
+ : directiveName === "solution"
321
+ ? "Solutions"
322
+ : "Output"} must be inside a task.`, filePath, node.position);
264
323
  // Replace with empty paragraph to hide
265
324
  if (parent && typeof index === "number") {
266
325
  parent.children[index] = {
@@ -1 +1 @@
1
- {"version":3,"file":"remarkTaskDirective.js","sourceRoot":"","sources":["../../src/plugin/remarkTaskDirective.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remarkTaskDirective.js","sourceRoot":"","sources":["../../src/plugin/remarkTaskDirective.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"MDXComponents.d.ts","sourceRoot":"","sources":["../../src/theme/MDXComponents.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;;AA2BH,wBA8BE"}
1
+ {"version":3,"file":"MDXComponents.d.ts","sourceRoot":"","sources":["../../src/theme/MDXComponents.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;;AA4BH,wBA+BE"}
@@ -41,6 +41,7 @@ const TaskPlaceholder_1 = __importDefault(require("@theme/TaskPlaceholder"));
41
41
  const Text_1 = __importDefault(require("@theme/Task/Text"));
42
42
  const Hint_1 = __importDefault(require("@theme/Task/Hint"));
43
43
  const Solution_1 = __importDefault(require("@theme/Task/Solution"));
44
+ const Output_1 = __importDefault(require("@theme/Task/Output"));
44
45
  const TaskProgression_1 = __importDefault(require("@theme/TaskProgression"));
45
46
  const TaskProgressionOverview_1 = __importDefault(require("@theme/TaskProgressionOverview"));
46
47
  exports.default = {
@@ -71,6 +72,7 @@ exports.default = {
71
72
  Text: Text_1.default,
72
73
  Hint: Hint_1.default,
73
74
  Solution: Solution_1.default,
75
+ Output: Output_1.default,
74
76
  TaskProgression: TaskProgression_1.default,
75
77
  TaskProgressionOverview: TaskProgressionOverview_1.default,
76
78
  };
@@ -1 +1 @@
1
- {"version":3,"file":"MDXComponents.js","sourceRoot":"","sources":["../../src/theme/MDXComponents.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;;;AAEH,kDAAsE;AACtE,kFAA0D;AAC1D,2FAA2F;AAC3F,4EAA4E;AAC5E,4DAAoC;AACpC,kGAA6E;AAC7E,4FAAuE;AACvE,gGAA2E;AAC3E,wGAAmF;AACnF,wGAAmF;AACnF,8FAAyE;AACzE,8FAAyE;AACzE,gGAA2E;AAC3E,gGAAwE;AACxE,0FAAkE;AAClE,kBAAkB;AAClB,uDAA+B;AAC/B,qEAA6C;AAC7C,6EAAqD;AACrD,4DAAoC;AACpC,4DAAoC;AACpC,oEAA4C;AAC5C,6EAAqD;AACrD,6FAAqE;AAErE,kBAAe;IACb,GAAG,uBAAa;IAChB,4DAA4D;IAC5D,IAAI,EAAJ,cAAI;IACJ,OAAO,EAAE,iBAAU;IACnB,OAAO,EAAE,iBAAU;IACnB,IAAI,EAAE,cAAO;IACb,CAAC,EAAE,WAAI;IACP,GAAG,EAAE,aAAM;IACX,EAAE,EAAE,YAAK;IACT,EAAE,EAAE,YAAK;IACT,GAAG,EAAE,aAAM;IACX,oDAAoD;IACpD,EAAE,EAAE,CAAC,KAA2B,EAAE,EAAE,CAAC,8BAAC,iBAAU,IAAC,EAAE,EAAC,IAAI,KAAK,KAAK,GAAI;IACtE,EAAE,EAAE,CAAC,KAA2B,EAAE,EAAE,CAAC,8BAAC,iBAAU,IAAC,EAAE,EAAC,IAAI,KAAK,KAAK,GAAI;IACtE,EAAE,EAAE,CAAC,KAA2B,EAAE,EAAE,CAAC,8BAAC,iBAAU,IAAC,EAAE,EAAC,IAAI,KAAK,KAAK,GAAI;IACtE,EAAE,EAAE,CAAC,KAA2B,EAAE,EAAE,CAAC,8BAAC,iBAAU,IAAC,EAAE,EAAC,IAAI,KAAK,KAAK,GAAI;IACtE,EAAE,EAAE,CAAC,KAA2B,EAAE,EAAE,CAAC,8BAAC,iBAAU,IAAC,EAAE,EAAC,IAAI,KAAK,KAAK,GAAI;IACtE,EAAE,EAAE,CAAC,KAA2B,EAAE,EAAE,CAAC,8BAAC,iBAAU,IAAC,EAAE,EAAC,IAAI,KAAK,KAAK,GAAI;IACtE,UAAU,EAAE,oBAAU;IACtB,OAAO,EAAE,iBAAO;IAChB,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"}
1
+ {"version":3,"file":"MDXComponents.js","sourceRoot":"","sources":["../../src/theme/MDXComponents.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;;;AAEH,kDAAsE;AACtE,kFAA0D;AAC1D,2FAA2F;AAC3F,4EAA4E;AAC5E,4DAAoC;AACpC,kGAA6E;AAC7E,4FAAuE;AACvE,gGAA2E;AAC3E,wGAAmF;AACnF,wGAAmF;AACnF,8FAAyE;AACzE,8FAAyE;AACzE,gGAA2E;AAC3E,gGAAwE;AACxE,0FAAkE;AAClE,kBAAkB;AAClB,uDAA+B;AAC/B,qEAA6C;AAC7C,6EAAqD;AACrD,4DAAoC;AACpC,4DAAoC;AACpC,oEAA4C;AAC5C,gEAAwC;AACxC,6EAAqD;AACrD,6FAAqE;AAErE,kBAAe;IACb,GAAG,uBAAa;IAChB,4DAA4D;IAC5D,IAAI,EAAJ,cAAI;IACJ,OAAO,EAAE,iBAAU;IACnB,OAAO,EAAE,iBAAU;IACnB,IAAI,EAAE,cAAO;IACb,CAAC,EAAE,WAAI;IACP,GAAG,EAAE,aAAM;IACX,EAAE,EAAE,YAAK;IACT,EAAE,EAAE,YAAK;IACT,GAAG,EAAE,aAAM;IACX,oDAAoD;IACpD,EAAE,EAAE,CAAC,KAA2B,EAAE,EAAE,CAAC,8BAAC,iBAAU,IAAC,EAAE,EAAC,IAAI,KAAK,KAAK,GAAI;IACtE,EAAE,EAAE,CAAC,KAA2B,EAAE,EAAE,CAAC,8BAAC,iBAAU,IAAC,EAAE,EAAC,IAAI,KAAK,KAAK,GAAI;IACtE,EAAE,EAAE,CAAC,KAA2B,EAAE,EAAE,CAAC,8BAAC,iBAAU,IAAC,EAAE,EAAC,IAAI,KAAK,KAAK,GAAI;IACtE,EAAE,EAAE,CAAC,KAA2B,EAAE,EAAE,CAAC,8BAAC,iBAAU,IAAC,EAAE,EAAC,IAAI,KAAK,KAAK,GAAI;IACtE,EAAE,EAAE,CAAC,KAA2B,EAAE,EAAE,CAAC,8BAAC,iBAAU,IAAC,EAAE,EAAC,IAAI,KAAK,KAAK,GAAI;IACtE,EAAE,EAAE,CAAC,KAA2B,EAAE,EAAE,CAAC,8BAAC,iBAAU,IAAC,EAAE,EAAC,IAAI,KAAK,KAAK,GAAI;IACtE,UAAU,EAAE,oBAAU;IACtB,OAAO,EAAE,iBAAO;IAChB,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,MAAM,EAAN,gBAAM;IACN,eAAe,EAAf,yBAAe;IACf,uBAAuB,EAAvB,iCAAuB;CACxB,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Output Component
3
+ * Content area for expected output - rendered as a panel by parent Task component
4
+ */
5
+ import { type ReactNode, type ReactElement } from 'react';
6
+ export interface OutputProps {
7
+ children?: ReactNode;
8
+ }
9
+ declare function Output({ children }: OutputProps): ReactElement;
10
+ declare namespace Output {
11
+ var displayName: string;
12
+ }
13
+ export default Output;
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/theme/Task/Output/index.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAc,EAAE,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAIjE,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAKD,iBAAwB,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,WAAW,GAAG,YAAY,CAStE;kBATuB,MAAM;;;eAAN,MAAM"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ /**
3
+ * Output Component
4
+ * Content area for expected output - 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 = Output;
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
+ Output.displayName = 'Output';
16
+ function Output({ children }) {
17
+ return (react_1.default.createElement("div", { className: styles_module_css_1.default.outputPanel },
18
+ react_1.default.createElement("div", { className: styles_module_css_1.default.outputLabel },
19
+ icons_1.OUTPUT_ICON,
20
+ "Expected Output"),
21
+ react_1.default.createElement("div", { className: styles_module_css_1.default.outputContent }, children)));
22
+ }
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/theme/Task/Output/index.tsx"],"names":[],"mappings":";AAAA;;;GAGG;;;;;AAaH,yBASC;AApBD,kDAAiE;AACjE,gDAAmD;AACnD,4EAAyC;AAMzC,iDAAiD;AACjD,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC;AAE9B,SAAwB,MAAM,CAAC,EAAE,QAAQ,EAAe;IACtD,OAAO,CACL,uCAAK,SAAS,EAAE,2BAAM,CAAC,WAAW;QAChC,uCAAK,SAAS,EAAE,2BAAM,CAAC,WAAW;YAAG,mBAAW;8BAAsB;QACtE,uCAAK,SAAS,EAAE,2BAAM,CAAC,aAAa,IACjC,QAAQ,CACL,CACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Output Panel Styles
3
+ * Uses info color scheme (--ifm-color-info) for expected output display
4
+ */
5
+
6
+ .outputPanel {
7
+ padding: 1rem 1.25rem;
8
+ background-color: var(--ifm-color-info-contrast-background);
9
+ border-left: 4px solid var(--ifm-color-info);
10
+ border-radius: 4px;
11
+ }
12
+
13
+ .outputLabel {
14
+ font-weight: 600;
15
+ font-size: 0.95rem;
16
+ color: var(--ifm-color-info-darker);
17
+ margin-bottom: 0.75rem;
18
+ display: flex;
19
+ align-items: center;
20
+ gap: 0.5rem;
21
+ }
22
+
23
+ .outputContent {
24
+ color: var(--ifm-font-color-base);
25
+ line-height: 1.6;
26
+ }
27
+
28
+ .outputContent > *:first-child {
29
+ margin-top: 0;
30
+ }
31
+
32
+ .outputContent > *:last-child {
33
+ margin-bottom: 0;
34
+ }
35
+
36
+ .outputContent p {
37
+ margin-bottom: 0.75rem;
38
+ }
39
+
40
+ .outputContent ul,
41
+ .outputContent ol {
42
+ margin-left: 1.5rem;
43
+ margin-bottom: 0.75rem;
44
+ }
45
+
46
+ .outputContent li {
47
+ margin-bottom: 0.25rem;
48
+ }
49
+
50
+ .outputContent code {
51
+ border-radius: 3px;
52
+ padding: 0.125rem 0.375rem;
53
+ font-size: 0.9em;
54
+ }
55
+
56
+ .outputContent pre code {
57
+ padding: 16px;
58
+ }
59
+
60
+ .outputContent pre {
61
+ margin-top: 20px;
62
+ margin-bottom: 20px;
63
+ }
64
+
65
+ /* Dark mode adjustments */
66
+ html[data-theme='dark'] .outputPanel {
67
+ border-left-color: var(--ifm-color-info-light);
68
+ }
69
+
70
+ html[data-theme='dark'] .outputLabel {
71
+ color: var(--ifm-color-info-light);
72
+ }
@@ -1,18 +1,19 @@
1
1
  /**
2
2
  * Solution Panel Styles
3
+ * Uses success color scheme (--ifm-color-success)
3
4
  */
4
5
 
5
6
  .solutionPanel {
6
7
  padding: 1rem 1.25rem;
7
- background-color: var(--ifm-color-info-contrast-background);
8
- border-left: 4px solid var(--ifm-color-info);
8
+ background-color: var(--ifm-color-success-contrast-background);
9
+ border-left: 4px solid var(--ifm-color-success);
9
10
  border-radius: 4px;
10
11
  }
11
12
 
12
13
  .solutionLabel {
13
14
  font-weight: 600;
14
15
  font-size: 0.95rem;
15
- color: var(--ifm-color-info-darker);
16
+ color: var(--ifm-color-success-darker);
16
17
  margin-bottom: 0.75rem;
17
18
  display: flex;
18
19
  align-items: center;
@@ -62,9 +63,10 @@
62
63
 
63
64
  /* Dark mode adjustments */
64
65
  html[data-theme='dark'] .solutionPanel {
65
- border-left-color: var(--ifm-color-info-light);
66
+ background-color: rgba(0, 210, 91, 0.1);
67
+ border-left-color: var(--ifm-color-success-light);
66
68
  }
67
69
 
68
70
  html[data-theme='dark'] .solutionLabel {
69
- color: var(--ifm-color-info-light);
71
+ color: var(--ifm-color-success-light);
70
72
  }
@@ -2,10 +2,11 @@
2
2
  * Task Component
3
3
  * Interactive collapsible task with optional hint and solution sections
4
4
  */
5
- import { type ReactNode, type ReactElement } from 'react';
5
+ import { type ReactNode, type ReactElement } from "react";
6
6
  export interface TaskProps {
7
7
  name: string;
8
8
  children?: ReactNode;
9
+ id?: string;
9
10
  }
10
- export default function Task({ name, children }: TaskProps): ReactElement;
11
+ export default function Task({ name, children, id }: TaskProps): ReactElement;
11
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/theme/Task/index.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAc,EACZ,KAAK,SAAS,EAEd,KAAK,YAAY,EAGlB,MAAM,OAAO,CAAC;AAaf,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,SAAS,GAAG,YAAY,CA2c5E"}