@contractspec/example.learning-journey-ui-coaching 1.57.0 → 1.58.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 (87) hide show
  1. package/.turbo/turbo-build.log +58 -59
  2. package/.turbo/turbo-prebuild.log +1 -0
  3. package/CHANGELOG.md +18 -0
  4. package/dist/CoachingMiniApp.d.ts +4 -14
  5. package/dist/CoachingMiniApp.d.ts.map +1 -1
  6. package/dist/CoachingMiniApp.js +1056 -59
  7. package/dist/browser/CoachingMiniApp.js +1059 -0
  8. package/dist/browser/components/EngagementMeter.js +143 -0
  9. package/dist/browser/components/TipCard.js +89 -0
  10. package/dist/browser/components/TipFeed.js +90 -0
  11. package/dist/browser/components/index.js +320 -0
  12. package/dist/browser/docs/index.js +22 -0
  13. package/dist/browser/docs/learning-journey-ui-coaching.docblock.js +22 -0
  14. package/dist/browser/example.js +32 -0
  15. package/dist/browser/index.js +1118 -0
  16. package/dist/browser/views/Overview.js +303 -0
  17. package/dist/browser/views/Progress.js +344 -0
  18. package/dist/browser/views/Steps.js +159 -0
  19. package/dist/browser/views/Timeline.js +266 -0
  20. package/dist/browser/views/index.js +980 -0
  21. package/dist/components/EngagementMeter.d.ts +6 -15
  22. package/dist/components/EngagementMeter.d.ts.map +1 -1
  23. package/dist/components/EngagementMeter.js +143 -107
  24. package/dist/components/TipCard.d.ts +8 -18
  25. package/dist/components/TipCard.d.ts.map +1 -1
  26. package/dist/components/TipCard.js +86 -72
  27. package/dist/components/TipFeed.d.ts +7 -13
  28. package/dist/components/TipFeed.d.ts.map +1 -1
  29. package/dist/components/TipFeed.js +87 -62
  30. package/dist/components/index.d.ts +4 -4
  31. package/dist/components/index.d.ts.map +1 -0
  32. package/dist/components/index.js +320 -4
  33. package/dist/docs/index.d.ts +2 -1
  34. package/dist/docs/index.d.ts.map +1 -0
  35. package/dist/docs/index.js +23 -1
  36. package/dist/docs/learning-journey-ui-coaching.docblock.d.ts +2 -1
  37. package/dist/docs/learning-journey-ui-coaching.docblock.d.ts.map +1 -0
  38. package/dist/docs/learning-journey-ui-coaching.docblock.js +21 -18
  39. package/dist/example.d.ts +2 -6
  40. package/dist/example.d.ts.map +1 -1
  41. package/dist/example.js +31 -39
  42. package/dist/index.d.ts +6 -12
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +1119 -14
  45. package/dist/node/CoachingMiniApp.js +1059 -0
  46. package/dist/node/components/EngagementMeter.js +143 -0
  47. package/dist/node/components/TipCard.js +89 -0
  48. package/dist/node/components/TipFeed.js +90 -0
  49. package/dist/node/components/index.js +320 -0
  50. package/dist/node/docs/index.js +22 -0
  51. package/dist/node/docs/learning-journey-ui-coaching.docblock.js +22 -0
  52. package/dist/node/example.js +32 -0
  53. package/dist/node/index.js +1118 -0
  54. package/dist/node/views/Overview.js +303 -0
  55. package/dist/node/views/Progress.js +344 -0
  56. package/dist/node/views/Steps.js +159 -0
  57. package/dist/node/views/Timeline.js +266 -0
  58. package/dist/node/views/index.js +980 -0
  59. package/dist/views/Overview.d.ts +4 -13
  60. package/dist/views/Overview.d.ts.map +1 -1
  61. package/dist/views/Overview.js +301 -148
  62. package/dist/views/Progress.d.ts +3 -10
  63. package/dist/views/Progress.d.ts.map +1 -1
  64. package/dist/views/Progress.js +342 -112
  65. package/dist/views/Steps.d.ts +2 -11
  66. package/dist/views/Steps.d.ts.map +1 -1
  67. package/dist/views/Steps.js +157 -66
  68. package/dist/views/Timeline.d.ts +2 -10
  69. package/dist/views/Timeline.d.ts.map +1 -1
  70. package/dist/views/Timeline.js +264 -110
  71. package/dist/views/index.d.ts +5 -5
  72. package/dist/views/index.d.ts.map +1 -0
  73. package/dist/views/index.js +980 -5
  74. package/package.json +154 -38
  75. package/tsdown.config.js +1 -2
  76. package/.turbo/turbo-build$colon$bundle.log +0 -62
  77. package/dist/CoachingMiniApp.js.map +0 -1
  78. package/dist/components/EngagementMeter.js.map +0 -1
  79. package/dist/components/TipCard.js.map +0 -1
  80. package/dist/components/TipFeed.js.map +0 -1
  81. package/dist/docs/learning-journey-ui-coaching.docblock.js.map +0 -1
  82. package/dist/example.js.map +0 -1
  83. package/dist/views/Overview.js.map +0 -1
  84. package/dist/views/Progress.js.map +0 -1
  85. package/dist/views/Steps.js.map +0 -1
  86. package/dist/views/Timeline.js.map +0 -1
  87. package/tsconfig.tsbuildinfo +0 -1
@@ -1,115 +1,345 @@
1
- 'use client';
2
-
3
- import { EngagementMeter } from "../components/EngagementMeter.js";
4
- import { Card, CardContent, CardHeader, CardTitle } from "@contractspec/lib.ui-kit-web/ui/card";
5
- import { BadgeDisplay, StreakCounter, XpBar } from "@contractspec/example.learning-journey-ui-shared";
6
- import { jsx, jsxs } from "react/jsx-runtime";
1
+ // @bun
2
+ // src/components/EngagementMeter.tsx
3
+ import { jsxDEV } from "react/jsx-dev-runtime";
4
+ "use client";
5
+ function EngagementMeter({
6
+ acknowledged,
7
+ actioned,
8
+ pending,
9
+ streak = 0
10
+ }) {
11
+ const total = acknowledged + actioned + pending;
12
+ const actionedPercent = total > 0 ? actioned / total * 100 : 0;
13
+ const acknowledgedPercent = total > 0 ? acknowledged / total * 100 : 0;
14
+ return /* @__PURE__ */ jsxDEV("div", {
15
+ className: "space-y-4",
16
+ children: [
17
+ /* @__PURE__ */ jsxDEV("div", {
18
+ className: "flex items-center justify-center",
19
+ children: /* @__PURE__ */ jsxDEV("div", {
20
+ className: "relative h-32 w-32",
21
+ children: [
22
+ /* @__PURE__ */ jsxDEV("svg", {
23
+ className: "h-full w-full -rotate-90",
24
+ viewBox: "0 0 100 100",
25
+ children: [
26
+ /* @__PURE__ */ jsxDEV("circle", {
27
+ cx: "50",
28
+ cy: "50",
29
+ r: "40",
30
+ fill: "none",
31
+ strokeWidth: "12",
32
+ className: "stroke-muted"
33
+ }, undefined, false, undefined, this),
34
+ /* @__PURE__ */ jsxDEV("circle", {
35
+ cx: "50",
36
+ cy: "50",
37
+ r: "40",
38
+ fill: "none",
39
+ strokeWidth: "12",
40
+ strokeLinecap: "round",
41
+ strokeDasharray: `${actionedPercent * 2.51} 251`,
42
+ className: "stroke-green-500 transition-all duration-500"
43
+ }, undefined, false, undefined, this),
44
+ /* @__PURE__ */ jsxDEV("circle", {
45
+ cx: "50",
46
+ cy: "50",
47
+ r: "40",
48
+ fill: "none",
49
+ strokeWidth: "12",
50
+ strokeLinecap: "round",
51
+ strokeDasharray: `${acknowledgedPercent * 2.51} 251`,
52
+ strokeDashoffset: `${-actionedPercent * 2.51}`,
53
+ className: "stroke-amber-500 transition-all duration-500"
54
+ }, undefined, false, undefined, this)
55
+ ]
56
+ }, undefined, true, undefined, this),
57
+ /* @__PURE__ */ jsxDEV("div", {
58
+ className: "absolute inset-0 flex flex-col items-center justify-center",
59
+ children: [
60
+ /* @__PURE__ */ jsxDEV("span", {
61
+ className: "text-2xl font-bold",
62
+ children: total
63
+ }, undefined, false, undefined, this),
64
+ /* @__PURE__ */ jsxDEV("span", {
65
+ className: "text-muted-foreground text-xs",
66
+ children: "tips"
67
+ }, undefined, false, undefined, this)
68
+ ]
69
+ }, undefined, true, undefined, this)
70
+ ]
71
+ }, undefined, true, undefined, this)
72
+ }, undefined, false, undefined, this),
73
+ /* @__PURE__ */ jsxDEV("div", {
74
+ className: "flex justify-center gap-4 text-sm",
75
+ children: [
76
+ /* @__PURE__ */ jsxDEV("div", {
77
+ className: "flex items-center gap-1.5",
78
+ children: [
79
+ /* @__PURE__ */ jsxDEV("div", {
80
+ className: "h-3 w-3 rounded-full bg-green-500"
81
+ }, undefined, false, undefined, this),
82
+ /* @__PURE__ */ jsxDEV("span", {
83
+ children: [
84
+ "Actioned (",
85
+ actioned,
86
+ ")"
87
+ ]
88
+ }, undefined, true, undefined, this)
89
+ ]
90
+ }, undefined, true, undefined, this),
91
+ /* @__PURE__ */ jsxDEV("div", {
92
+ className: "flex items-center gap-1.5",
93
+ children: [
94
+ /* @__PURE__ */ jsxDEV("div", {
95
+ className: "h-3 w-3 rounded-full bg-amber-500"
96
+ }, undefined, false, undefined, this),
97
+ /* @__PURE__ */ jsxDEV("span", {
98
+ children: [
99
+ "Acknowledged (",
100
+ acknowledged,
101
+ ")"
102
+ ]
103
+ }, undefined, true, undefined, this)
104
+ ]
105
+ }, undefined, true, undefined, this),
106
+ /* @__PURE__ */ jsxDEV("div", {
107
+ className: "flex items-center gap-1.5",
108
+ children: [
109
+ /* @__PURE__ */ jsxDEV("div", {
110
+ className: "bg-muted h-3 w-3 rounded-full"
111
+ }, undefined, false, undefined, this),
112
+ /* @__PURE__ */ jsxDEV("span", {
113
+ children: [
114
+ "Pending (",
115
+ pending,
116
+ ")"
117
+ ]
118
+ }, undefined, true, undefined, this)
119
+ ]
120
+ }, undefined, true, undefined, this)
121
+ ]
122
+ }, undefined, true, undefined, this),
123
+ streak > 0 && /* @__PURE__ */ jsxDEV("div", {
124
+ className: "flex items-center justify-center gap-2 rounded-lg bg-orange-500/10 px-4 py-2",
125
+ children: [
126
+ /* @__PURE__ */ jsxDEV("span", {
127
+ className: "text-xl",
128
+ children: "\uD83D\uDD25"
129
+ }, undefined, false, undefined, this),
130
+ /* @__PURE__ */ jsxDEV("span", {
131
+ className: "font-semibold text-orange-500",
132
+ children: [
133
+ streak,
134
+ " day engagement streak!"
135
+ ]
136
+ }, undefined, true, undefined, this)
137
+ ]
138
+ }, undefined, true, undefined, this)
139
+ ]
140
+ }, undefined, true, undefined, this);
141
+ }
7
142
 
8
- //#region src/views/Progress.tsx
143
+ // src/views/Progress.tsx
144
+ import {
145
+ Card,
146
+ CardContent,
147
+ CardHeader,
148
+ CardTitle
149
+ } from "@contractspec/lib.ui-kit-web/ui/card";
150
+ import {
151
+ XpBar,
152
+ BadgeDisplay,
153
+ StreakCounter
154
+ } from "@contractspec/example.learning-journey-ui-shared";
155
+ import { jsxDEV as jsxDEV2 } from "react/jsx-dev-runtime";
156
+ "use client";
9
157
  function ProgressView({ track, progress }) {
10
- const totalXp = track.totalXp ?? track.steps.reduce((sum, s) => sum + (s.xpReward ?? 0), 0);
11
- const completedSteps = progress.completedStepIds.length;
12
- const pendingSteps = track.steps.length - completedSteps;
13
- const actioned = Math.floor(completedSteps * .7);
14
- const acknowledged = completedSteps - actioned;
15
- return /* @__PURE__ */ jsxs("div", {
16
- className: "space-y-6",
17
- children: [
18
- /* @__PURE__ */ jsxs(Card, { children: [/* @__PURE__ */ jsx(CardHeader, { children: /* @__PURE__ */ jsxs(CardTitle, {
19
- className: "flex items-center gap-2",
20
- children: [/* @__PURE__ */ jsx("span", { children: "📊" }), /* @__PURE__ */ jsx("span", { children: "Engagement Overview" })]
21
- }) }), /* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsx(EngagementMeter, {
22
- actioned,
23
- acknowledged,
24
- pending: pendingSteps,
25
- streak: progress.streakDays
26
- }) })] }),
27
- /* @__PURE__ */ jsxs("div", {
28
- className: "grid gap-4 md:grid-cols-2",
29
- children: [/* @__PURE__ */ jsxs(Card, { children: [/* @__PURE__ */ jsx(CardHeader, {
30
- className: "pb-2",
31
- children: /* @__PURE__ */ jsx(CardTitle, {
32
- className: "text-muted-foreground text-sm font-medium",
33
- children: "XP Earned"
34
- })
35
- }), /* @__PURE__ */ jsxs(CardContent, {
36
- className: "space-y-3",
37
- children: [/* @__PURE__ */ jsxs("div", {
38
- className: "flex items-baseline gap-2",
39
- children: [/* @__PURE__ */ jsx("span", {
40
- className: "text-3xl font-bold text-orange-500",
41
- children: progress.xpEarned
42
- }), /* @__PURE__ */ jsxs("span", {
43
- className: "text-muted-foreground",
44
- children: [
45
- "/ ",
46
- totalXp,
47
- " XP"
48
- ]
49
- })]
50
- }), /* @__PURE__ */ jsx(XpBar, {
51
- current: progress.xpEarned,
52
- max: totalXp,
53
- showLabel: false,
54
- size: "lg"
55
- })]
56
- })] }), /* @__PURE__ */ jsxs(Card, { children: [/* @__PURE__ */ jsx(CardHeader, {
57
- className: "pb-2",
58
- children: /* @__PURE__ */ jsx(CardTitle, {
59
- className: "text-muted-foreground text-sm font-medium",
60
- children: "Engagement Streak"
61
- })
62
- }), /* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsxs("div", {
63
- className: "flex items-center gap-4",
64
- children: [/* @__PURE__ */ jsx(StreakCounter, {
65
- days: progress.streakDays,
66
- size: "lg"
67
- }), /* @__PURE__ */ jsx("div", {
68
- className: "text-muted-foreground text-sm",
69
- children: progress.streakDays > 0 ? "Keep going!" : "Start your streak today!"
70
- })]
71
- }) })] })]
72
- }),
73
- /* @__PURE__ */ jsxs(Card, { children: [/* @__PURE__ */ jsx(CardHeader, { children: /* @__PURE__ */ jsxs(CardTitle, {
74
- className: "flex items-center gap-2",
75
- children: [/* @__PURE__ */ jsx("span", { children: "🏅" }), /* @__PURE__ */ jsx("span", { children: "Achievements" })]
76
- }) }), /* @__PURE__ */ jsxs(CardContent, { children: [/* @__PURE__ */ jsx(BadgeDisplay, {
77
- badges: progress.badges,
78
- size: "lg",
79
- maxVisible: 10
80
- }), progress.badges.length === 0 && /* @__PURE__ */ jsx("p", {
81
- className: "text-muted-foreground text-sm",
82
- children: "Action tips to unlock achievements!"
83
- })] })] }),
84
- /* @__PURE__ */ jsxs(Card, { children: [/* @__PURE__ */ jsx(CardHeader, { children: /* @__PURE__ */ jsxs(CardTitle, {
85
- className: "flex items-center gap-2",
86
- children: [/* @__PURE__ */ jsx("span", { children: "💡" }), /* @__PURE__ */ jsx("span", { children: "Tip Status" })]
87
- }) }), /* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsx("div", {
88
- className: "space-y-3",
89
- children: track.steps.map((step) => {
90
- const isCompleted = progress.completedStepIds.includes(step.id);
91
- return /* @__PURE__ */ jsxs("div", {
92
- className: "flex items-center justify-between rounded-lg border p-3",
93
- children: [/* @__PURE__ */ jsxs("div", {
94
- className: "flex items-center gap-3",
95
- children: [/* @__PURE__ */ jsx("span", {
96
- className: isCompleted ? "text-green-500" : "text-amber-500",
97
- children: isCompleted ? "✓" : "○"
98
- }), /* @__PURE__ */ jsx("span", {
99
- className: isCompleted ? "text-muted-foreground" : "text-foreground",
100
- children: step.title
101
- })]
102
- }), /* @__PURE__ */ jsx("span", {
103
- className: `text-sm ${isCompleted ? "text-green-500" : "text-muted-foreground"}`,
104
- children: isCompleted ? "Actioned" : "Pending"
105
- })]
106
- }, step.id);
107
- })
108
- }) })] })
109
- ]
110
- });
158
+ const totalXp = track.totalXp ?? track.steps.reduce((sum, s) => sum + (s.xpReward ?? 0), 0);
159
+ const completedSteps = progress.completedStepIds.length;
160
+ const totalSteps = track.steps.length;
161
+ const pendingSteps = totalSteps - completedSteps;
162
+ const actioned = Math.floor(completedSteps * 0.7);
163
+ const acknowledged = completedSteps - actioned;
164
+ return /* @__PURE__ */ jsxDEV2("div", {
165
+ className: "space-y-6",
166
+ children: [
167
+ /* @__PURE__ */ jsxDEV2(Card, {
168
+ children: [
169
+ /* @__PURE__ */ jsxDEV2(CardHeader, {
170
+ children: /* @__PURE__ */ jsxDEV2(CardTitle, {
171
+ className: "flex items-center gap-2",
172
+ children: [
173
+ /* @__PURE__ */ jsxDEV2("span", {
174
+ children: "\uD83D\uDCCA"
175
+ }, undefined, false, undefined, this),
176
+ /* @__PURE__ */ jsxDEV2("span", {
177
+ children: "Engagement Overview"
178
+ }, undefined, false, undefined, this)
179
+ ]
180
+ }, undefined, true, undefined, this)
181
+ }, undefined, false, undefined, this),
182
+ /* @__PURE__ */ jsxDEV2(CardContent, {
183
+ children: /* @__PURE__ */ jsxDEV2(EngagementMeter, {
184
+ actioned,
185
+ acknowledged,
186
+ pending: pendingSteps,
187
+ streak: progress.streakDays
188
+ }, undefined, false, undefined, this)
189
+ }, undefined, false, undefined, this)
190
+ ]
191
+ }, undefined, true, undefined, this),
192
+ /* @__PURE__ */ jsxDEV2("div", {
193
+ className: "grid gap-4 md:grid-cols-2",
194
+ children: [
195
+ /* @__PURE__ */ jsxDEV2(Card, {
196
+ children: [
197
+ /* @__PURE__ */ jsxDEV2(CardHeader, {
198
+ className: "pb-2",
199
+ children: /* @__PURE__ */ jsxDEV2(CardTitle, {
200
+ className: "text-muted-foreground text-sm font-medium",
201
+ children: "XP Earned"
202
+ }, undefined, false, undefined, this)
203
+ }, undefined, false, undefined, this),
204
+ /* @__PURE__ */ jsxDEV2(CardContent, {
205
+ className: "space-y-3",
206
+ children: [
207
+ /* @__PURE__ */ jsxDEV2("div", {
208
+ className: "flex items-baseline gap-2",
209
+ children: [
210
+ /* @__PURE__ */ jsxDEV2("span", {
211
+ className: "text-3xl font-bold text-orange-500",
212
+ children: progress.xpEarned
213
+ }, undefined, false, undefined, this),
214
+ /* @__PURE__ */ jsxDEV2("span", {
215
+ className: "text-muted-foreground",
216
+ children: [
217
+ "/ ",
218
+ totalXp,
219
+ " XP"
220
+ ]
221
+ }, undefined, true, undefined, this)
222
+ ]
223
+ }, undefined, true, undefined, this),
224
+ /* @__PURE__ */ jsxDEV2(XpBar, {
225
+ current: progress.xpEarned,
226
+ max: totalXp,
227
+ showLabel: false,
228
+ size: "lg"
229
+ }, undefined, false, undefined, this)
230
+ ]
231
+ }, undefined, true, undefined, this)
232
+ ]
233
+ }, undefined, true, undefined, this),
234
+ /* @__PURE__ */ jsxDEV2(Card, {
235
+ children: [
236
+ /* @__PURE__ */ jsxDEV2(CardHeader, {
237
+ className: "pb-2",
238
+ children: /* @__PURE__ */ jsxDEV2(CardTitle, {
239
+ className: "text-muted-foreground text-sm font-medium",
240
+ children: "Engagement Streak"
241
+ }, undefined, false, undefined, this)
242
+ }, undefined, false, undefined, this),
243
+ /* @__PURE__ */ jsxDEV2(CardContent, {
244
+ children: /* @__PURE__ */ jsxDEV2("div", {
245
+ className: "flex items-center gap-4",
246
+ children: [
247
+ /* @__PURE__ */ jsxDEV2(StreakCounter, {
248
+ days: progress.streakDays,
249
+ size: "lg"
250
+ }, undefined, false, undefined, this),
251
+ /* @__PURE__ */ jsxDEV2("div", {
252
+ className: "text-muted-foreground text-sm",
253
+ children: progress.streakDays > 0 ? "Keep going!" : "Start your streak today!"
254
+ }, undefined, false, undefined, this)
255
+ ]
256
+ }, undefined, true, undefined, this)
257
+ }, undefined, false, undefined, this)
258
+ ]
259
+ }, undefined, true, undefined, this)
260
+ ]
261
+ }, undefined, true, undefined, this),
262
+ /* @__PURE__ */ jsxDEV2(Card, {
263
+ children: [
264
+ /* @__PURE__ */ jsxDEV2(CardHeader, {
265
+ children: /* @__PURE__ */ jsxDEV2(CardTitle, {
266
+ className: "flex items-center gap-2",
267
+ children: [
268
+ /* @__PURE__ */ jsxDEV2("span", {
269
+ children: "\uD83C\uDFC5"
270
+ }, undefined, false, undefined, this),
271
+ /* @__PURE__ */ jsxDEV2("span", {
272
+ children: "Achievements"
273
+ }, undefined, false, undefined, this)
274
+ ]
275
+ }, undefined, true, undefined, this)
276
+ }, undefined, false, undefined, this),
277
+ /* @__PURE__ */ jsxDEV2(CardContent, {
278
+ children: [
279
+ /* @__PURE__ */ jsxDEV2(BadgeDisplay, {
280
+ badges: progress.badges,
281
+ size: "lg",
282
+ maxVisible: 10
283
+ }, undefined, false, undefined, this),
284
+ progress.badges.length === 0 && /* @__PURE__ */ jsxDEV2("p", {
285
+ className: "text-muted-foreground text-sm",
286
+ children: "Action tips to unlock achievements!"
287
+ }, undefined, false, undefined, this)
288
+ ]
289
+ }, undefined, true, undefined, this)
290
+ ]
291
+ }, undefined, true, undefined, this),
292
+ /* @__PURE__ */ jsxDEV2(Card, {
293
+ children: [
294
+ /* @__PURE__ */ jsxDEV2(CardHeader, {
295
+ children: /* @__PURE__ */ jsxDEV2(CardTitle, {
296
+ className: "flex items-center gap-2",
297
+ children: [
298
+ /* @__PURE__ */ jsxDEV2("span", {
299
+ children: "\uD83D\uDCA1"
300
+ }, undefined, false, undefined, this),
301
+ /* @__PURE__ */ jsxDEV2("span", {
302
+ children: "Tip Status"
303
+ }, undefined, false, undefined, this)
304
+ ]
305
+ }, undefined, true, undefined, this)
306
+ }, undefined, false, undefined, this),
307
+ /* @__PURE__ */ jsxDEV2(CardContent, {
308
+ children: /* @__PURE__ */ jsxDEV2("div", {
309
+ className: "space-y-3",
310
+ children: track.steps.map((step) => {
311
+ const isCompleted = progress.completedStepIds.includes(step.id);
312
+ return /* @__PURE__ */ jsxDEV2("div", {
313
+ className: "flex items-center justify-between rounded-lg border p-3",
314
+ children: [
315
+ /* @__PURE__ */ jsxDEV2("div", {
316
+ className: "flex items-center gap-3",
317
+ children: [
318
+ /* @__PURE__ */ jsxDEV2("span", {
319
+ className: isCompleted ? "text-green-500" : "text-amber-500",
320
+ children: isCompleted ? "\u2713" : "\u25CB"
321
+ }, undefined, false, undefined, this),
322
+ /* @__PURE__ */ jsxDEV2("span", {
323
+ className: isCompleted ? "text-muted-foreground" : "text-foreground",
324
+ children: step.title
325
+ }, undefined, false, undefined, this)
326
+ ]
327
+ }, undefined, true, undefined, this),
328
+ /* @__PURE__ */ jsxDEV2("span", {
329
+ className: `text-sm ${isCompleted ? "text-green-500" : "text-muted-foreground"}`,
330
+ children: isCompleted ? "Actioned" : "Pending"
331
+ }, undefined, false, undefined, this)
332
+ ]
333
+ }, step.id, true, undefined, this);
334
+ })
335
+ }, undefined, false, undefined, this)
336
+ }, undefined, false, undefined, this)
337
+ ]
338
+ }, undefined, true, undefined, this)
339
+ ]
340
+ }, undefined, true, undefined, this);
111
341
  }
112
-
113
- //#endregion
114
- export { ProgressView as Progress, ProgressView };
115
- //# sourceMappingURL=Progress.js.map
342
+ export {
343
+ ProgressView,
344
+ ProgressView as Progress
345
+ };
@@ -1,12 +1,3 @@
1
- import { LearningViewProps } from "@contractspec/example.learning-journey-ui-shared";
2
- import * as react_jsx_runtime0 from "react/jsx-runtime";
3
-
4
- //#region src/views/Steps.d.ts
5
- declare function Steps({
6
- track,
7
- progress,
8
- onStepComplete
9
- }: LearningViewProps): react_jsx_runtime0.JSX.Element;
10
- //#endregion
11
- export { Steps };
1
+ import type { LearningViewProps } from '@contractspec/example.learning-journey-ui-shared';
2
+ export declare function Steps({ track, progress, onStepComplete }: LearningViewProps): import("react/jsx-runtime").JSX.Element;
12
3
  //# sourceMappingURL=Steps.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Steps.d.ts","names":[],"sources":["../../src/views/Steps.tsx"],"mappings":";;;;iBAKgB,KAAA,CAAA;EAAQ,KAAA;EAAO,QAAA;EAAU;AAAA,GAAkB,iBAAA,GAAiB,kBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"Steps.d.ts","sourceRoot":"","sources":["../../src/views/Steps.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kDAAkD,CAAC;AAE1F,wBAAgB,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE,iBAAiB,2CAyD3E"}