@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,293 @@
1
+ "use strict";
2
+ /**
3
+ * TaskPlaceholder Component
4
+ * A standalone task component for use outside of doc pages (e.g., landing pages, standalone pages)
5
+ *
6
+ * Key differences from Task/TaskExample:
7
+ * - No dependency on TaskProvider or DocTaskCounterProvider
8
+ * - Can be used anywhere (not just in docs)
9
+ * - Custom badge text with auto-increment fallback
10
+ * - Respects global auto-collapse setting from localStorage
11
+ * - Ephemeral completion state (not persisted)
12
+ * - Supports MDX content with Hint and Solution components
13
+ */
14
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ var desc = Object.getOwnPropertyDescriptor(m, k);
17
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
18
+ desc = { enumerable: true, get: function() { return m[k]; } };
19
+ }
20
+ Object.defineProperty(o, k2, desc);
21
+ }) : (function(o, m, k, k2) {
22
+ if (k2 === undefined) k2 = k;
23
+ o[k2] = m[k];
24
+ }));
25
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
26
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
27
+ }) : function(o, v) {
28
+ o["default"] = v;
29
+ });
30
+ var __importStar = (this && this.__importStar) || (function () {
31
+ var ownKeys = function(o) {
32
+ ownKeys = Object.getOwnPropertyNames || function (o) {
33
+ var ar = [];
34
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
35
+ return ar;
36
+ };
37
+ return ownKeys(o);
38
+ };
39
+ return function (mod) {
40
+ if (mod && mod.__esModule) return mod;
41
+ var result = {};
42
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
43
+ __setModuleDefault(result, mod);
44
+ return result;
45
+ };
46
+ })();
47
+ var __importDefault = (this && this.__importDefault) || function (mod) {
48
+ return (mod && mod.__esModule) ? mod : { "default": mod };
49
+ };
50
+ Object.defineProperty(exports, "__esModule", { value: true });
51
+ exports.default = TaskPlaceholder;
52
+ const react_1 = __importStar(require("react"));
53
+ const clsx_1 = __importDefault(require("clsx"));
54
+ const icons_1 = require("../../utils/icons");
55
+ const storage_1 = require("../../utils/storage");
56
+ const styles_module_css_1 = __importDefault(require("../Task/styles.module.css")); // Reuse Task styles
57
+ // Counter for auto-numbering demos (module-level state)
58
+ let demoCounter = 0;
59
+ function TaskPlaceholder({ title, badge, children }) {
60
+ // Auto-increment demo number if no custom badge provided
61
+ const demoNumberRef = (0, react_1.useRef)(0);
62
+ if (demoNumberRef.current === 0) {
63
+ demoCounter += 1;
64
+ demoNumberRef.current = demoCounter;
65
+ }
66
+ const defaultBadge = `Demo ${demoNumberRef.current}`;
67
+ const taskBadge = badge || defaultBadge;
68
+ // Load auto-collapse preference from localStorage
69
+ const [autoCollapseCompletedTasks, setAutoCollapseCompletedTasks] = (0, react_1.useState)(() => (0, storage_1.loadAutoCollapseFromStorage)());
70
+ // Local state only (no persistence - ephemeral like TaskExample)
71
+ const [isCompleted, setIsCompleted] = (0, react_1.useState)(false);
72
+ const [isExpanded, setIsExpanded] = (0, react_1.useState)(true);
73
+ const [showHint, setShowHint] = (0, react_1.useState)(false);
74
+ const [showSolution, setShowSolution] = (0, react_1.useState)(false);
75
+ const [isAnimatingCompletion, setIsAnimatingCompletion] = (0, react_1.useState)(false);
76
+ const [isRemovingCheckmark, setIsRemovingCheckmark] = (0, react_1.useState)(false);
77
+ const [isCollapsingHint, setIsCollapsingHint] = (0, react_1.useState)(false);
78
+ const [isCollapsingSolution, setIsCollapsingSolution] = (0, react_1.useState)(false);
79
+ const [isSwitchingPanels, setIsSwitchingPanels] = (0, react_1.useState)(false);
80
+ const [isCollapsingBody, setIsCollapsingBody] = (0, react_1.useState)(false);
81
+ const [panelSpacerHeight, setPanelSpacerHeight] = (0, react_1.useState)(0);
82
+ // Refs for measuring panel heights
83
+ const hintRef = (0, react_1.useRef)(null);
84
+ const solutionRef = (0, react_1.useRef)(null);
85
+ // Track previous completion state
86
+ const prevIsCompleted = (0, react_1.useRef)(isCompleted);
87
+ // Listen for auto-collapse changes from storage events (cross-tab sync)
88
+ (0, react_1.useEffect)(() => {
89
+ const handleStorageChange = () => {
90
+ setAutoCollapseCompletedTasks((0, storage_1.loadAutoCollapseFromStorage)());
91
+ };
92
+ const handleCustomEvent = () => {
93
+ setAutoCollapseCompletedTasks((0, storage_1.loadAutoCollapseFromStorage)());
94
+ };
95
+ // Listen to storage events (cross-tab sync)
96
+ window.addEventListener('storage', handleStorageChange);
97
+ // Listen to custom events (same-page sync from TaskAutoHideToggle)
98
+ window.addEventListener('task-auto-collapse-changed', handleCustomEvent);
99
+ return () => {
100
+ window.removeEventListener('storage', handleStorageChange);
101
+ window.removeEventListener('task-auto-collapse-changed', handleCustomEvent);
102
+ };
103
+ }, []);
104
+ // Detect when completion state changes
105
+ (0, react_1.useEffect)(() => {
106
+ if (prevIsCompleted.current !== isCompleted) {
107
+ // When task becomes completed
108
+ if (isCompleted && !prevIsCompleted.current) {
109
+ setIsAnimatingCompletion(true);
110
+ setIsRemovingCheckmark(false);
111
+ // Wait for completion animation (600ms) before auto-collapsing
112
+ if (autoCollapseCompletedTasks) {
113
+ setTimeout(() => {
114
+ setIsAnimatingCompletion(false);
115
+ // Trigger collapse animation
116
+ setIsCollapsingBody(true);
117
+ setShowHint(false);
118
+ setShowSolution(false);
119
+ setTimeout(() => {
120
+ setIsExpanded(false);
121
+ setIsCollapsingBody(false);
122
+ }, 300);
123
+ }, 600);
124
+ }
125
+ else {
126
+ setTimeout(() => {
127
+ setIsAnimatingCompletion(false);
128
+ }, 600);
129
+ }
130
+ }
131
+ // When task is uncompleted (undo)
132
+ if (!isCompleted && prevIsCompleted.current) {
133
+ setIsRemovingCheckmark(true);
134
+ }
135
+ prevIsCompleted.current = isCompleted;
136
+ }
137
+ }, [isCompleted, autoCollapseCompletedTasks]);
138
+ // Measure panel heights and update spacer
139
+ (0, react_1.useEffect)(() => {
140
+ const updateSpacerHeight = () => {
141
+ if (showHint && hintRef.current) {
142
+ setPanelSpacerHeight(hintRef.current.offsetHeight);
143
+ }
144
+ else if (showSolution && solutionRef.current) {
145
+ setPanelSpacerHeight(solutionRef.current.offsetHeight);
146
+ }
147
+ else {
148
+ setPanelSpacerHeight(0);
149
+ }
150
+ };
151
+ // Update immediately
152
+ updateSpacerHeight();
153
+ // Also update on window resize (for responsive content)
154
+ window.addEventListener('resize', updateSpacerHeight);
155
+ return () => window.removeEventListener('resize', updateSpacerHeight);
156
+ }, [showHint, showSolution]);
157
+ const toggleExpanded = () => {
158
+ // When collapsing, start animation then remove from DOM
159
+ if (isExpanded) {
160
+ setIsCollapsingBody(true);
161
+ setShowHint(false);
162
+ setShowSolution(false);
163
+ setTimeout(() => {
164
+ setIsExpanded(false);
165
+ setIsCollapsingBody(false);
166
+ }, 300); // Match animation duration
167
+ }
168
+ else {
169
+ // When expanding, add to DOM immediately
170
+ setIsExpanded(true);
171
+ }
172
+ };
173
+ const toggleCompleted = () => {
174
+ // Toggle completion state locally (no persistence)
175
+ setIsCompleted(!isCompleted);
176
+ };
177
+ const toggleHint = () => {
178
+ if (showHint) {
179
+ // Closing hint
180
+ setIsCollapsingHint(true);
181
+ setIsSwitchingPanels(false);
182
+ setTimeout(() => {
183
+ setShowHint(false);
184
+ setIsCollapsingHint(false);
185
+ }, 300);
186
+ }
187
+ else {
188
+ // Opening hint
189
+ if (showSolution) {
190
+ // Switching from solution to hint
191
+ setIsSwitchingPanels(true);
192
+ setIsCollapsingSolution(true);
193
+ setTimeout(() => {
194
+ setShowSolution(false);
195
+ setIsCollapsingSolution(false);
196
+ // Delay before showing hint panel
197
+ setTimeout(() => {
198
+ setShowHint(true);
199
+ }, 20);
200
+ }, 300);
201
+ }
202
+ else {
203
+ setIsSwitchingPanels(false);
204
+ setShowHint(true);
205
+ }
206
+ }
207
+ };
208
+ const toggleSolution = () => {
209
+ if (showSolution) {
210
+ // Closing solution
211
+ setIsCollapsingSolution(true);
212
+ setIsSwitchingPanels(false);
213
+ setTimeout(() => {
214
+ setShowSolution(false);
215
+ setIsCollapsingSolution(false);
216
+ }, 300);
217
+ }
218
+ else {
219
+ // Opening solution
220
+ if (showHint) {
221
+ // Switching from hint to solution
222
+ setIsSwitchingPanels(true);
223
+ setIsCollapsingHint(true);
224
+ setTimeout(() => {
225
+ setShowHint(false);
226
+ setIsCollapsingHint(false);
227
+ // Delay before showing solution panel
228
+ setTimeout(() => {
229
+ setShowSolution(true);
230
+ }, 20);
231
+ }, 300);
232
+ }
233
+ else {
234
+ setIsSwitchingPanels(false);
235
+ setShowSolution(true);
236
+ }
237
+ }
238
+ };
239
+ // Extract child components
240
+ let textComponent = null;
241
+ let hintComponent = null;
242
+ let solutionComponent = null;
243
+ react_1.default.Children.forEach(children, (child) => {
244
+ if (!react_1.default.isValidElement(child))
245
+ return;
246
+ const childType = child.type?.displayName || child.type?.name;
247
+ if (childType === 'Text') {
248
+ textComponent = child;
249
+ }
250
+ else if (childType === 'Hint') {
251
+ hintComponent = child;
252
+ }
253
+ else if (childType === 'Solution') {
254
+ solutionComponent = child;
255
+ }
256
+ });
257
+ return (react_1.default.createElement("div", { className: (0, clsx_1.default)(styles_module_css_1.default.taskContainer, isCompleted && styles_module_css_1.default.taskCompleted, isAnimatingCompletion && styles_module_css_1.default.taskCompletedAnimating) },
258
+ react_1.default.createElement("div", { className: styles_module_css_1.default.taskHeader, onClick: toggleExpanded },
259
+ react_1.default.createElement("div", { className: styles_module_css_1.default.taskHeaderLeft },
260
+ react_1.default.createElement("span", { className: styles_module_css_1.default.taskBadge }, taskBadge),
261
+ react_1.default.createElement("h3", { className: styles_module_css_1.default.taskName },
262
+ title,
263
+ react_1.default.createElement("span", { className: (0, clsx_1.default)(styles_module_css_1.default.checkmark, isCompleted && !isAnimatingCompletion && !isRemovingCheckmark && styles_module_css_1.default.checkmarkVisible, isAnimatingCompletion && styles_module_css_1.default.checkmarkAnimating, isRemovingCheckmark && styles_module_css_1.default.checkmarkRemoving) }, icons_1.CHECKMARK_CIRCLE_FILL_ICON))),
264
+ react_1.default.createElement("button", { type: "button", className: styles_module_css_1.default.expandButton, "aria-expanded": isExpanded, "aria-label": isExpanded ? 'Collapse task' : 'Expand task' },
265
+ react_1.default.createElement("span", { className: (0, clsx_1.default)(styles_module_css_1.default.chevron, !isExpanded && styles_module_css_1.default.chevronCollapsed) }, icons_1.CHEVRON_DOWN_ICON))),
266
+ (isExpanded || isCollapsingBody) && (react_1.default.createElement(react_1.default.Fragment, null,
267
+ react_1.default.createElement("div", { className: (0, clsx_1.default)(styles_module_css_1.default.taskBody, isCollapsingBody && styles_module_css_1.default.taskBodyCollapsing) }, textComponent),
268
+ react_1.default.createElement("div", { className: (0, clsx_1.default)(styles_module_css_1.default.taskFooter, isCollapsingBody && styles_module_css_1.default.taskFooterCollapsing) },
269
+ react_1.default.createElement("div", { className: styles_module_css_1.default.taskActions },
270
+ hintComponent && (react_1.default.createElement("button", { type: "button", className: (0, clsx_1.default)(styles_module_css_1.default.taskButton, styles_module_css_1.default.hintButton, showHint && styles_module_css_1.default.active), onClick: (e) => {
271
+ e.stopPropagation();
272
+ toggleHint();
273
+ } }, "Hint")),
274
+ solutionComponent && (react_1.default.createElement("button", { type: "button", className: (0, clsx_1.default)(styles_module_css_1.default.taskButton, styles_module_css_1.default.solutionButton, showSolution && styles_module_css_1.default.active), onClick: (e) => {
275
+ e.stopPropagation();
276
+ toggleSolution();
277
+ } }, "Solution"))),
278
+ react_1.default.createElement("button", { type: "button", className: (0, clsx_1.default)(styles_module_css_1.default.taskButton, styles_module_css_1.default.completeButton, isCompleted && styles_module_css_1.default.completedButton), onClick: (e) => {
279
+ e.stopPropagation();
280
+ toggleCompleted();
281
+ } }, isCompleted ? 'Undo Task' : 'Mark as Done')),
282
+ (hintComponent || solutionComponent) && (react_1.default.createElement("div", { className: styles_module_css_1.default.panelWrapper, style: {
283
+ marginBottom: panelSpacerHeight > 0 ? '1rem' : 0,
284
+ transition: 'margin-bottom 0.3s ease-out'
285
+ } },
286
+ react_1.default.createElement("div", { className: styles_module_css_1.default.panelSpacer, style: {
287
+ height: panelSpacerHeight > 0 ? `${panelSpacerHeight}px` : 0,
288
+ transition: 'height 0.3s ease-out'
289
+ } }),
290
+ hintComponent && (react_1.default.createElement("div", { ref: hintRef, className: (0, clsx_1.default)(styles_module_css_1.default.panelContainer, styles_module_css_1.default.panelAbsolute, (showHint || isCollapsingHint) && styles_module_css_1.default.panelVisible, showHint && !isCollapsingHint && !isSwitchingPanels && styles_module_css_1.default.panelContainerExpanding, showHint && !isCollapsingHint && isSwitchingPanels && styles_module_css_1.default.hintPanelContainerExpandingSwitching, isCollapsingHint && !isSwitchingPanels && styles_module_css_1.default.panelContainerCollapsing, isCollapsingHint && isSwitchingPanels && styles_module_css_1.default.hintPanelContainerCollapsingSwitching) }, hintComponent)),
291
+ solutionComponent && (react_1.default.createElement("div", { ref: solutionRef, className: (0, clsx_1.default)(styles_module_css_1.default.panelContainer, styles_module_css_1.default.panelAbsolute, (showSolution || isCollapsingSolution) && styles_module_css_1.default.panelVisible, showSolution && !isCollapsingSolution && !isSwitchingPanels && styles_module_css_1.default.panelContainerExpanding, showSolution && !isCollapsingSolution && isSwitchingPanels && styles_module_css_1.default.solutionPanelContainerExpandingSwitching, isCollapsingSolution && !isSwitchingPanels && styles_module_css_1.default.panelContainerCollapsing, isCollapsingSolution && isSwitchingPanels && styles_module_css_1.default.solutionPanelContainerCollapsingSwitching) }, solutionComponent))))))));
292
+ }
293
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/theme/TaskPlaceholder/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * TaskProgression Component
3
+ * Displays task completion progress for a specific document
4
+ */
5
+ import { type ReactElement } from 'react';
6
+ export interface TaskProgressionProps {
7
+ path: string;
8
+ pluginId?: string;
9
+ }
10
+ export default function TaskProgression({ path, pluginId, }: TaskProgressionProps): ReactElement;
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/theme/TaskProgression/index.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAc,EAAE,KAAK,YAAY,EAAa,MAAM,OAAO,CAAC;AAW5D,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EACtC,IAAI,EACJ,QAAQ,GACT,EAAE,oBAAoB,GAAG,YAAY,CAgIrC"}
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ /**
3
+ * TaskProgression Component
4
+ * Displays task completion progress for a specific document
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 = TaskProgression;
44
+ const react_1 = __importStar(require("react"));
45
+ const Link_1 = __importDefault(require("@docusaurus/Link"));
46
+ const client_1 = require("@docusaurus/plugin-content-docs/client");
47
+ const clsx_1 = __importDefault(require("clsx"));
48
+ const TaskProvider_1 = require("../TaskProvider");
49
+ const useResolveDocPath_1 = require("../../utils/useResolveDocPath");
50
+ const useDocTaskStats_1 = require("../../utils/useDocTaskStats");
51
+ const usePluginId_1 = require("../../utils/usePluginId");
52
+ const styles_module_css_1 = __importDefault(require("./styles.module.css"));
53
+ function TaskProgression({ path, pluginId, }) {
54
+ const { metadata } = (0, client_1.useDoc)();
55
+ const { taskRegistry } = (0, TaskProvider_1.useTaskContext)();
56
+ const currentDocId = metadata.id;
57
+ // Get the correct plugin ID for this doc
58
+ const detectedPluginId = (0, usePluginId_1.usePluginId)();
59
+ // Auto-detect pluginId from current doc if not provided
60
+ const effectivePluginId = pluginId ?? detectedPluginId;
61
+ // Resolve the path to a docId
62
+ const resolved = (0, useResolveDocPath_1.useResolveDocPath)(path, effectivePluginId);
63
+ // Get task statistics for the resolved doc
64
+ const stats = (0, useDocTaskStats_1.useDocTaskStats)(resolved.error ? undefined : resolved.docId, resolved.error ? undefined : resolved.pluginId);
65
+ // Only log warnings for actual path errors after registry is loaded
66
+ (0, react_1.useEffect)(() => {
67
+ // Skip if registry isn't loaded yet - not an error, just loading
68
+ if (!taskRegistry) {
69
+ return;
70
+ }
71
+ // Now we can check for actual path resolution errors
72
+ if (resolved.error && resolved.errorMessage !== 'Task registry loading...') {
73
+ const errorMsg = 'errorMessage' in resolved ? resolved.errorMessage : 'Unknown error';
74
+ console.warn(`[Interactive Tasks] Path resolution error in TaskProgression: ${errorMsg}`, {
75
+ path,
76
+ pluginId: effectivePluginId,
77
+ resolved,
78
+ });
79
+ }
80
+ }, [resolved, path, effectivePluginId, taskRegistry]);
81
+ // Show loading state while registry is loading
82
+ if (!taskRegistry) {
83
+ return (react_1.default.createElement("div", { className: (0, clsx_1.default)(styles_module_css_1.default.progressionBox, styles_module_css_1.default.loadingBox) },
84
+ react_1.default.createElement("div", { className: styles_module_css_1.default.contentArea },
85
+ react_1.default.createElement("div", { className: styles_module_css_1.default.title }, "Loading...")),
86
+ react_1.default.createElement("div", { className: (0, clsx_1.default)(styles_module_css_1.default.progressSquare, styles_module_css_1.default.primarySquare) }, "-/-")));
87
+ }
88
+ // Determine if this is the current page
89
+ const isCurrentPage = !resolved.error &&
90
+ resolved.docId === currentDocId &&
91
+ resolved.pluginId === detectedPluginId;
92
+ // Error state - show danger box
93
+ if (resolved.error) {
94
+ const errorMsg = 'errorMessage' in resolved ? resolved.errorMessage : 'Unknown error';
95
+ return (react_1.default.createElement("div", { className: (0, clsx_1.default)(styles_module_css_1.default.progressionBox, styles_module_css_1.default.errorBox) },
96
+ react_1.default.createElement("div", { className: styles_module_css_1.default.contentArea },
97
+ react_1.default.createElement("div", { className: styles_module_css_1.default.title }, "Error: Path Not Found"),
98
+ react_1.default.createElement("div", { className: styles_module_css_1.default.errorMessage }, errorMsg)),
99
+ react_1.default.createElement("div", { className: (0, clsx_1.default)(styles_module_css_1.default.progressSquare, styles_module_css_1.default.errorSquare) }, "?/?")));
100
+ }
101
+ // No stats available (shouldn't happen if resolved successfully)
102
+ if (!stats) {
103
+ console.warn('[Interactive Tasks] No stats available for resolved path in TaskProgression', {
104
+ path,
105
+ resolved,
106
+ });
107
+ return (react_1.default.createElement("div", { className: (0, clsx_1.default)(styles_module_css_1.default.progressionBox, styles_module_css_1.default.errorBox) },
108
+ react_1.default.createElement("div", { className: styles_module_css_1.default.contentArea },
109
+ react_1.default.createElement("div", { className: styles_module_css_1.default.title }, "Error: No Task Data")),
110
+ react_1.default.createElement("div", { className: (0, clsx_1.default)(styles_module_css_1.default.progressSquare, styles_module_css_1.default.errorSquare) }, "?/?")));
111
+ }
112
+ // Determine color based on completion
113
+ const isComplete = stats.isComplete;
114
+ const squareClass = isComplete ? styles_module_css_1.default.successSquare : styles_module_css_1.default.primarySquare;
115
+ // Build content
116
+ const content = (react_1.default.createElement(react_1.default.Fragment, null,
117
+ react_1.default.createElement("div", { className: styles_module_css_1.default.contentArea },
118
+ stats.hasSectionName && (react_1.default.createElement("div", { className: styles_module_css_1.default.sectionName }, stats.sectionName)),
119
+ react_1.default.createElement("div", { className: styles_module_css_1.default.title }, stats.title)),
120
+ react_1.default.createElement("div", { className: (0, clsx_1.default)(styles_module_css_1.default.progressSquare, squareClass) },
121
+ stats.completedTasks,
122
+ "/",
123
+ stats.totalTasks)));
124
+ // If it's the current page, render non-clickable box
125
+ if (isCurrentPage) {
126
+ return (react_1.default.createElement("div", { className: (0, clsx_1.default)(styles_module_css_1.default.progressionBox, styles_module_css_1.default.currentPage) }, content));
127
+ }
128
+ // Otherwise, render as a Link
129
+ return (react_1.default.createElement(Link_1.default, { to: stats.permalink, className: (0, clsx_1.default)(styles_module_css_1.default.progressionBox, styles_module_css_1.default.clickable) }, content));
130
+ }
131
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/theme/TaskProgression/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,162 @@
1
+ /**
2
+ * TaskProgression Styles
3
+ * Borderless design with float effect and hover animations
4
+ */
5
+
6
+ .progressionBox {
7
+ display: grid;
8
+ grid-template-columns: 1fr auto;
9
+ grid-template-areas: "content progress";
10
+ align-items: center;
11
+ gap: 1rem;
12
+ padding: 0.875rem 1.125rem;
13
+ min-height: 70px;
14
+
15
+ /* Borderless with subtle shadow for float effect */
16
+ background-color: var(--ifm-card-background-color);
17
+ border-radius: 8px;
18
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
19
+
20
+ /* Smooth transitions */
21
+ transition: all 0.25s ease;
22
+
23
+ /* Remove link styling */
24
+ text-decoration: none;
25
+ color: inherit;
26
+
27
+ margin-bottom: 24px;
28
+ }
29
+
30
+ /* Clickable state - adds hover effect */
31
+ .progressionBox.clickable {
32
+ cursor: pointer;
33
+ }
34
+
35
+ .progressionBox.clickable:hover {
36
+ /* Pop effect on hover */
37
+ transform: translateY(-3px);
38
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
39
+ }
40
+
41
+ /* Current page - non-clickable */
42
+ .progressionBox.currentPage {
43
+ cursor: default;
44
+ opacity: 0.85;
45
+ }
46
+
47
+ /* Error state */
48
+ .progressionBox.errorBox {
49
+ background-color: var(--ifm-color-danger-contrast-background);
50
+ box-shadow: 0 2px 8px rgba(var(--ifm-color-danger-rgb), 0.15);
51
+ }
52
+
53
+ /* Loading state */
54
+ .progressionBox.loadingBox {
55
+ opacity: 0.6;
56
+ cursor: default;
57
+ }
58
+
59
+ /* Content area - left side */
60
+ .contentArea {
61
+ grid-area: content;
62
+ display: flex;
63
+ flex-direction: column;
64
+ gap: 0.25rem;
65
+ min-width: 0; /* Allow text truncation if needed */
66
+ }
67
+
68
+ /* Section name styling (bold, smaller) */
69
+ .sectionName {
70
+ font-weight: 700;
71
+ font-size: 0.875rem;
72
+ color: var(--ifm-color-emphasis-800);
73
+ line-height: 1.3;
74
+ }
75
+
76
+ /* Title styling */
77
+ .title {
78
+ font-size: 0.95rem;
79
+ color: var(--ifm-color-emphasis-900);
80
+ line-height: 1.4;
81
+ font-weight: 500;
82
+ }
83
+
84
+ /* Error message styling */
85
+ .errorMessage {
86
+ font-size: 0.8rem;
87
+ color: var(--ifm-color-danger);
88
+ font-style: italic;
89
+ }
90
+
91
+ /* Progress square - right side */
92
+ .progressSquare {
93
+ grid-area: progress;
94
+ padding: 0.5rem 0.875rem;
95
+ border-radius: 6px;
96
+ font-weight: 700;
97
+ font-size: 0.9rem;
98
+ text-align: center;
99
+ white-space: nowrap;
100
+ min-width: 50px;
101
+
102
+ /* Smooth color transitions */
103
+ transition: background-color 0.3s ease, color 0.3s ease;
104
+ }
105
+
106
+ /* Primary color - incomplete tasks */
107
+ .primarySquare {
108
+ background-color: var(--ifm-color-primary);
109
+ color: var(--ifm-color-primary-contrast-background);
110
+ }
111
+
112
+ /* Success color - all tasks completed */
113
+ .successSquare {
114
+ background-color: var(--ifm-color-success);
115
+ color: var(--ifm-color-success-contrast-background);
116
+ }
117
+
118
+ /* Error/danger color */
119
+ .errorSquare {
120
+ background-color: var(--ifm-color-danger);
121
+ color: var(--ifm-color-danger-contrast-background);
122
+ }
123
+
124
+ /* Dark mode adjustments */
125
+ [data-theme='dark'] .progressionBox {
126
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
127
+ }
128
+
129
+ [data-theme='dark'] .progressionBox.clickable:hover {
130
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.5);
131
+ }
132
+
133
+ [data-theme='dark'] .sectionName {
134
+ color: var(--ifm-color-emphasis-700);
135
+ }
136
+
137
+ [data-theme='dark'] .title {
138
+ color: var(--ifm-color-emphasis-800);
139
+ }
140
+
141
+ /* Responsive adjustments for smaller screens */
142
+ @media (max-width: 768px) {
143
+ .progressionBox {
144
+ padding: 0.75rem 1rem;
145
+ min-height: 65px;
146
+ gap: 0.75rem;
147
+ }
148
+
149
+ .sectionName {
150
+ font-size: 0.8rem;
151
+ }
152
+
153
+ .title {
154
+ font-size: 0.875rem;
155
+ }
156
+
157
+ .progressSquare {
158
+ padding: 0.4rem 0.75rem;
159
+ font-size: 0.85rem;
160
+ min-width: 45px;
161
+ }
162
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * TaskProgressionOverview Component
3
+ * Displays all task progressions across all docs in the plugin
4
+ */
5
+ import { type ReactElement } from 'react';
6
+ export interface TaskProgressionOverviewProps {
7
+ pluginId?: string;
8
+ }
9
+ export default function TaskProgressionOverview({ pluginId, }: TaskProgressionOverviewProps): ReactElement;
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/theme/TaskProgressionOverview/index.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAc,EAAE,KAAK,YAAY,EAAW,MAAM,OAAO,CAAC;AAU1D,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAoCD,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAAC,EAC9C,QAAQ,GACT,EAAE,4BAA4B,GAAG,YAAY,CAgF7C"}