@lssm/example.learning-journey-ui-coaching 0.0.0-canary-20251217080011 → 0.0.0-canary-20251217083314

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 (126) hide show
  1. package/.turbo/turbo-build$colon$bundle.log +395 -14
  2. package/CHANGELOG.md +9 -9
  3. package/dist/CoachingMiniApp.d.ts +16 -0
  4. package/dist/CoachingMiniApp.js +64 -0
  5. package/dist/components/EngagementMeter.d.ts +17 -0
  6. package/dist/components/EngagementMeter.js +107 -0
  7. package/dist/components/TipCard.d.ts +20 -0
  8. package/dist/components/TipCard.js +75 -0
  9. package/dist/components/TipFeed.d.ts +17 -0
  10. package/dist/components/TipFeed.js +65 -0
  11. package/dist/components/index.d.ts +4 -0
  12. package/dist/components/index.js +5 -0
  13. package/dist/docs/index.d.ts +1 -0
  14. package/dist/docs/index.js +1 -0
  15. package/dist/docs/learning-journey-ui-coaching.docblock.d.ts +1 -0
  16. package/dist/docs/learning-journey-ui-coaching.docblock.js +20 -0
  17. package/dist/{index.d.mts → example.d.ts} +1 -18
  18. package/dist/example.js +34 -0
  19. package/dist/examples/learning-journey-ui-shared/dist/components/BadgeDisplay.js +44 -0
  20. package/dist/examples/learning-journey-ui-shared/dist/components/StreakCounter.js +45 -0
  21. package/dist/examples/learning-journey-ui-shared/dist/components/ViewTabs.js +48 -0
  22. package/dist/examples/learning-journey-ui-shared/dist/components/XpBar.js +46 -0
  23. package/dist/examples/learning-journey-ui-shared/dist/components/index.js +4 -0
  24. package/dist/examples/learning-journey-ui-shared/dist/docs/index.js +1 -0
  25. package/dist/examples/learning-journey-ui-shared/dist/docs/learning-journey-ui-shared.docblock.js +20 -0
  26. package/dist/examples/learning-journey-ui-shared/dist/hooks/index.js +1 -0
  27. package/dist/examples/learning-journey-ui-shared/dist/hooks/useLearningProgress.js +73 -0
  28. package/dist/examples/learning-journey-ui-shared/dist/index.js +8 -0
  29. package/dist/examples/learning-journey-ui-shared/dist/libs/contracts/dist/docs/PUBLISHING.docblock.js +15 -0
  30. package/dist/examples/learning-journey-ui-shared/dist/libs/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js +15 -0
  31. package/dist/examples/learning-journey-ui-shared/dist/libs/contracts/dist/docs/index.js +28 -0
  32. package/dist/examples/learning-journey-ui-shared/dist/libs/contracts/dist/docs/presentations.js +71 -0
  33. package/dist/examples/learning-journey-ui-shared/dist/libs/contracts/dist/docs/registry.js +44 -0
  34. package/dist/examples/learning-journey-ui-shared/dist/libs/contracts/dist/docs/tech/PHASE_1_QUICKSTART.docblock.js +15 -0
  35. package/dist/examples/learning-journey-ui-shared/dist/libs/contracts/dist/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS.docblock.js +15 -0
  36. package/dist/examples/learning-journey-ui-shared/dist/libs/contracts/dist/docs/tech/PHASE_3_AUTO_EVOLUTION.docblock.js +15 -0
  37. package/dist/examples/learning-journey-ui-shared/dist/libs/contracts/dist/docs/tech/PHASE_4_PERSONALIZATION_ENGINE.docblock.js +15 -0
  38. package/dist/examples/learning-journey-ui-shared/dist/libs/contracts/dist/docs/tech/PHASE_5_ZERO_TOUCH_OPERATIONS.docblock.js +15 -0
  39. package/dist/examples/learning-journey-ui-shared/dist/libs/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js +79 -0
  40. package/dist/examples/learning-journey-ui-shared/dist/libs/contracts/dist/docs/tech/contracts/openapi-export.docblock.js +56 -0
  41. package/dist/examples/learning-journey-ui-shared/dist/libs/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js +15 -0
  42. package/dist/examples/learning-journey-ui-shared/dist/libs/contracts/dist/docs/tech/llm/llm-integration.docblock.js +356 -0
  43. package/dist/examples/learning-journey-ui-shared/dist/libs/contracts/dist/docs/tech/mcp-endpoints.docblock.js +36 -0
  44. package/dist/examples/learning-journey-ui-shared/dist/libs/contracts/dist/docs/tech/presentation-runtime.docblock.js +15 -0
  45. package/dist/examples/learning-journey-ui-shared/dist/libs/contracts/dist/docs/tech/schema/README.docblock.js +19 -0
  46. package/dist/examples/learning-journey-ui-shared/dist/libs/contracts/dist/docs/tech/studio/learning-events.docblock.js +47 -0
  47. package/dist/examples/learning-journey-ui-shared/dist/libs/contracts/dist/docs/tech/studio/learning-journeys.docblock.js +78 -0
  48. package/dist/examples/learning-journey-ui-shared/dist/libs/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js +83 -0
  49. package/dist/examples/learning-journey-ui-shared/dist/libs/contracts/dist/docs/tech/studio/project-access-teams.docblock.js +44 -0
  50. package/dist/examples/learning-journey-ui-shared/dist/libs/contracts/dist/docs/tech/studio/project-routing.docblock.js +66 -0
  51. package/dist/examples/learning-journey-ui-shared/dist/libs/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js +39 -0
  52. package/dist/examples/learning-journey-ui-shared/dist/libs/contracts/dist/docs/tech/studio/team-invitations.docblock.js +68 -0
  53. package/dist/examples/learning-journey-ui-shared/dist/libs/contracts/dist/docs/tech/studio/workspace-ops.docblock.js +46 -0
  54. package/dist/examples/learning-journey-ui-shared/dist/libs/contracts/dist/docs/tech/studio/workspaces.docblock.js +61 -0
  55. package/dist/examples/learning-journey-ui-shared/dist/libs/contracts/dist/docs/tech/telemetry-ingest.docblock.js +154 -0
  56. package/dist/examples/learning-journey-ui-shared/dist/libs/contracts/dist/docs/tech/templates/runtime.docblock.js +19 -0
  57. package/dist/examples/learning-journey-ui-shared/dist/libs/contracts/dist/docs/tech/vscode-extension.docblock.js +100 -0
  58. package/dist/examples/learning-journey-ui-shared/dist/libs/contracts/dist/docs/tech/workflows/overview.docblock.js +19 -0
  59. package/dist/examples/learning-journey-ui-shared/dist/libs/design-system/dist/_virtual/rolldown_runtime.js +5 -0
  60. package/dist/examples/learning-journey-ui-shared/dist/libs/design-system/dist/components/atoms/Button.js +33 -0
  61. package/dist/examples/learning-journey-ui-shared/dist/libs/design-system/dist/ui-kit-web/dist/ui/button.js +55 -0
  62. package/dist/examples/learning-journey-ui-shared/dist/libs/design-system/dist/ui-kit-web/dist/ui-kit-core/dist/utils.js +13 -0
  63. package/dist/examples/learning-journey-ui-shared/dist/libs/ui-kit-web/dist/ui/progress.js +23 -0
  64. package/dist/examples/learning-journey-ui-shared/dist/libs/ui-kit-web/dist/ui/utils.js +10 -0
  65. package/dist/examples/learning-journey-ui-shared/dist/libs/ui-kit-web/dist/ui-kit-core/dist/utils.js +10 -0
  66. package/dist/index.d.ts +12 -0
  67. package/dist/index.js +14 -0
  68. package/dist/libs/contracts/dist/docs/PUBLISHING.docblock.js +16 -0
  69. package/dist/libs/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js +16 -0
  70. package/dist/libs/contracts/dist/docs/index.js +29 -0
  71. package/dist/libs/contracts/dist/docs/presentations.js +71 -0
  72. package/dist/libs/contracts/dist/docs/registry.js +44 -0
  73. package/dist/libs/contracts/dist/docs/tech/PHASE_1_QUICKSTART.docblock.js +16 -0
  74. package/dist/libs/contracts/dist/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS.docblock.js +16 -0
  75. package/dist/libs/contracts/dist/docs/tech/PHASE_3_AUTO_EVOLUTION.docblock.js +16 -0
  76. package/dist/libs/contracts/dist/docs/tech/PHASE_4_PERSONALIZATION_ENGINE.docblock.js +16 -0
  77. package/dist/libs/contracts/dist/docs/tech/PHASE_5_ZERO_TOUCH_OPERATIONS.docblock.js +16 -0
  78. package/dist/libs/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js +80 -0
  79. package/dist/libs/contracts/dist/docs/tech/contracts/openapi-export.docblock.js +57 -0
  80. package/dist/libs/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js +16 -0
  81. package/dist/libs/contracts/dist/docs/tech/llm/llm-integration.docblock.js +357 -0
  82. package/dist/libs/contracts/dist/docs/tech/mcp-endpoints.docblock.js +37 -0
  83. package/dist/libs/contracts/dist/docs/tech/presentation-runtime.docblock.js +16 -0
  84. package/dist/libs/contracts/dist/docs/tech/schema/README.docblock.js +20 -0
  85. package/dist/libs/contracts/dist/docs/tech/studio/learning-events.docblock.js +48 -0
  86. package/dist/libs/contracts/dist/docs/tech/studio/learning-journeys.docblock.js +79 -0
  87. package/dist/libs/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js +84 -0
  88. package/dist/libs/contracts/dist/docs/tech/studio/project-access-teams.docblock.js +45 -0
  89. package/dist/libs/contracts/dist/docs/tech/studio/project-routing.docblock.js +67 -0
  90. package/dist/libs/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js +40 -0
  91. package/dist/libs/contracts/dist/docs/tech/studio/team-invitations.docblock.js +69 -0
  92. package/dist/libs/contracts/dist/docs/tech/studio/workspace-ops.docblock.js +47 -0
  93. package/dist/libs/contracts/dist/docs/tech/studio/workspaces.docblock.js +62 -0
  94. package/dist/libs/contracts/dist/docs/tech/telemetry-ingest.docblock.js +155 -0
  95. package/dist/libs/contracts/dist/docs/tech/templates/runtime.docblock.js +20 -0
  96. package/dist/libs/contracts/dist/docs/tech/vscode-extension.docblock.js +101 -0
  97. package/dist/libs/contracts/dist/docs/tech/workflows/overview.docblock.js +20 -0
  98. package/dist/libs/design-system/dist/_virtual/rolldown_runtime.js +5 -0
  99. package/dist/libs/design-system/dist/components/atoms/Button.js +33 -0
  100. package/dist/libs/design-system/dist/ui-kit-web/dist/ui/button.js +55 -0
  101. package/dist/libs/design-system/dist/ui-kit-web/dist/ui-kit-core/dist/utils.js +13 -0
  102. package/dist/libs/ui-kit-web/dist/ui/card.js +36 -0
  103. package/dist/libs/ui-kit-web/dist/ui/utils.js +10 -0
  104. package/dist/libs/ui-kit-web/dist/ui-kit-core/dist/utils.js +10 -0
  105. package/dist/views/Overview.d.ts +15 -0
  106. package/dist/views/Overview.js +152 -0
  107. package/dist/views/Progress.d.ts +10 -0
  108. package/dist/views/Progress.js +117 -0
  109. package/dist/views/Steps.d.ts +11 -0
  110. package/dist/views/Steps.js +68 -0
  111. package/dist/views/Timeline.d.ts +10 -0
  112. package/dist/views/Timeline.js +112 -0
  113. package/dist/views/index.d.ts +5 -0
  114. package/dist/views/index.js +6 -0
  115. package/package.json +25 -16
  116. package/tsdown.config.js +14 -10
  117. package/dist/TipFeed-_1oKR35X.mjs +0 -234
  118. package/dist/components/index.d.mts +0 -2
  119. package/dist/components/index.mjs +0 -4
  120. package/dist/components-kh0CpIG2.mjs +0 -1
  121. package/dist/index-BH0UbqIy.d.mts +0 -47
  122. package/dist/index-BjhNDTSh.d.mts +0 -34
  123. package/dist/index.mjs +0 -110
  124. package/dist/views/index.d.mts +0 -2
  125. package/dist/views/index.mjs +0 -4
  126. package/dist/views-BTGcWRSz.mjs +0 -421
@@ -0,0 +1,68 @@
1
+ 'use client';
2
+
3
+ import { TipCard } from "../components/TipCard.js";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+
6
+ //#region src/views/Steps.tsx
7
+ function Steps({ track, progress, onStepComplete }) {
8
+ const completedSteps = progress.completedStepIds.length;
9
+ const totalSteps = track.steps.length;
10
+ const sortedSteps = [...track.steps].sort((a, b) => {
11
+ const aCompleted = progress.completedStepIds.includes(a.id);
12
+ if (aCompleted === progress.completedStepIds.includes(b.id)) return 0;
13
+ return aCompleted ? 1 : -1;
14
+ });
15
+ const currentStepId = track.steps.find((s) => !progress.completedStepIds.includes(s.id))?.id;
16
+ return /* @__PURE__ */ jsxs("div", {
17
+ className: "space-y-6",
18
+ children: [
19
+ /* @__PURE__ */ jsxs("div", {
20
+ className: "text-center",
21
+ children: [
22
+ /* @__PURE__ */ jsx("h2", {
23
+ className: "text-xl font-bold",
24
+ children: "Coaching Tips"
25
+ }),
26
+ /* @__PURE__ */ jsx("p", {
27
+ className: "text-muted-foreground",
28
+ children: "Review and take action on personalized tips"
29
+ }),
30
+ /* @__PURE__ */ jsxs("p", {
31
+ className: "text-muted-foreground mt-2 text-sm",
32
+ children: [
33
+ completedSteps,
34
+ " of ",
35
+ totalSteps,
36
+ " tips actioned"
37
+ ]
38
+ })
39
+ ]
40
+ }),
41
+ /* @__PURE__ */ jsx("div", {
42
+ className: "space-y-3",
43
+ children: sortedSteps.map((step) => {
44
+ return /* @__PURE__ */ jsx(TipCard, {
45
+ step,
46
+ isCompleted: progress.completedStepIds.includes(step.id),
47
+ isCurrent: step.id === currentStepId,
48
+ onComplete: () => onStepComplete?.(step.id),
49
+ onDismiss: () => onStepComplete?.(step.id)
50
+ }, step.id);
51
+ })
52
+ }),
53
+ completedSteps === totalSteps && /* @__PURE__ */ jsxs("div", {
54
+ className: "text-muted-foreground text-center",
55
+ children: [/* @__PURE__ */ jsx("span", {
56
+ className: "text-2xl",
57
+ children: "✨"
58
+ }), /* @__PURE__ */ jsx("p", {
59
+ className: "mt-2",
60
+ children: "All tips have been addressed!"
61
+ })]
62
+ })
63
+ ]
64
+ });
65
+ }
66
+
67
+ //#endregion
68
+ export { Steps };
@@ -0,0 +1,10 @@
1
+ import * as react_jsx_runtime2 from "react/jsx-runtime";
2
+ import { LearningViewProps } from "@lssm/example.learning-journey-ui-shared";
3
+
4
+ //#region src/views/Timeline.d.ts
5
+ declare function Timeline({
6
+ track,
7
+ progress
8
+ }: LearningViewProps): react_jsx_runtime2.JSX.Element;
9
+ //#endregion
10
+ export { Timeline };
@@ -0,0 +1,112 @@
1
+ 'use client';
2
+
3
+ import { Card, CardContent, CardHeader, CardTitle } from "../libs/ui-kit-web/dist/ui/card.js";
4
+ import { TipFeed } from "../components/TipFeed.js";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+
7
+ //#region src/views/Timeline.tsx
8
+ function Timeline({ track, progress }) {
9
+ const feedItems = track.steps.map((step) => ({
10
+ step,
11
+ isCompleted: progress.completedStepIds.includes(step.id),
12
+ completedAt: progress.completedStepIds.includes(step.id) ? "Recently" : void 0
13
+ })).sort((a, b) => {
14
+ if (a.isCompleted && !b.isCompleted) return -1;
15
+ if (!a.isCompleted && b.isCompleted) return 1;
16
+ return 0;
17
+ });
18
+ const completedCount = feedItems.filter((f) => f.isCompleted).length;
19
+ const pendingCount = feedItems.length - completedCount;
20
+ return /* @__PURE__ */ jsxs("div", {
21
+ className: "space-y-6",
22
+ children: [
23
+ /* @__PURE__ */ jsxs("div", {
24
+ className: "text-center",
25
+ children: [/* @__PURE__ */ jsx("h2", {
26
+ className: "text-xl font-bold",
27
+ children: "Activity Timeline"
28
+ }), /* @__PURE__ */ jsx("p", {
29
+ className: "text-muted-foreground",
30
+ children: "Your coaching journey and tip history"
31
+ })]
32
+ }),
33
+ /* @__PURE__ */ jsxs("div", {
34
+ className: "grid grid-cols-2 gap-4",
35
+ children: [/* @__PURE__ */ jsx(Card, { children: /* @__PURE__ */ jsxs(CardContent, {
36
+ className: "p-4 text-center",
37
+ children: [/* @__PURE__ */ jsx("div", {
38
+ className: "text-2xl font-bold text-green-500",
39
+ children: completedCount
40
+ }), /* @__PURE__ */ jsx("div", {
41
+ className: "text-muted-foreground text-sm",
42
+ children: "Tips Actioned"
43
+ })]
44
+ }) }), /* @__PURE__ */ jsx(Card, { children: /* @__PURE__ */ jsxs(CardContent, {
45
+ className: "p-4 text-center",
46
+ children: [/* @__PURE__ */ jsx("div", {
47
+ className: "text-2xl font-bold text-amber-500",
48
+ children: pendingCount
49
+ }), /* @__PURE__ */ jsx("div", {
50
+ className: "text-muted-foreground text-sm",
51
+ children: "Tips Pending"
52
+ })]
53
+ }) })]
54
+ }),
55
+ /* @__PURE__ */ jsxs(Card, { children: [/* @__PURE__ */ jsx(CardHeader, { children: /* @__PURE__ */ jsxs(CardTitle, {
56
+ className: "flex items-center gap-2",
57
+ children: [/* @__PURE__ */ jsx("span", { children: "📝" }), /* @__PURE__ */ jsx("span", { children: "Coaching Feed" })]
58
+ }) }), /* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsx(TipFeed, { items: feedItems }) })] }),
59
+ /* @__PURE__ */ jsxs(Card, { children: [/* @__PURE__ */ jsx(CardHeader, { children: /* @__PURE__ */ jsxs(CardTitle, {
60
+ className: "flex items-center gap-2",
61
+ children: [/* @__PURE__ */ jsx("span", { children: "📈" }), /* @__PURE__ */ jsx("span", { children: "Journey Stats" })]
62
+ }) }), /* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsxs("div", {
63
+ className: "space-y-4",
64
+ children: [
65
+ /* @__PURE__ */ jsxs("div", {
66
+ className: "flex items-center justify-between",
67
+ children: [/* @__PURE__ */ jsx("span", {
68
+ className: "text-muted-foreground",
69
+ children: "Total Tips"
70
+ }), /* @__PURE__ */ jsx("span", {
71
+ className: "font-semibold",
72
+ children: track.steps.length
73
+ })]
74
+ }),
75
+ /* @__PURE__ */ jsxs("div", {
76
+ className: "flex items-center justify-between",
77
+ children: [/* @__PURE__ */ jsx("span", {
78
+ className: "text-muted-foreground",
79
+ children: "Completed"
80
+ }), /* @__PURE__ */ jsx("span", {
81
+ className: "font-semibold text-green-500",
82
+ children: completedCount
83
+ })]
84
+ }),
85
+ /* @__PURE__ */ jsxs("div", {
86
+ className: "flex items-center justify-between",
87
+ children: [/* @__PURE__ */ jsx("span", {
88
+ className: "text-muted-foreground",
89
+ children: "XP Earned"
90
+ }), /* @__PURE__ */ jsx("span", {
91
+ className: "font-semibold text-orange-500",
92
+ children: progress.xpEarned
93
+ })]
94
+ }),
95
+ /* @__PURE__ */ jsxs("div", {
96
+ className: "flex items-center justify-between",
97
+ children: [/* @__PURE__ */ jsx("span", {
98
+ className: "text-muted-foreground",
99
+ children: "Current Streak"
100
+ }), /* @__PURE__ */ jsx("span", {
101
+ className: "font-semibold",
102
+ children: progress.streakDays > 0 ? `🔥 ${progress.streakDays} days` : "Start today!"
103
+ })]
104
+ })
105
+ ]
106
+ }) })] })
107
+ ]
108
+ });
109
+ }
110
+
111
+ //#endregion
112
+ export { Timeline };
@@ -0,0 +1,5 @@
1
+ import { Overview } from "./Overview.js";
2
+ import { Steps } from "./Steps.js";
3
+ import { Progress as ProgressView } from "./Progress.js";
4
+ import { Timeline } from "./Timeline.js";
5
+ export { Overview, ProgressView as Progress, Steps, Timeline };
@@ -0,0 +1,6 @@
1
+ import { Overview } from "./Overview.js";
2
+ import { Steps } from "./Steps.js";
3
+ import { Progress as ProgressView } from "./Progress.js";
4
+ import { Timeline } from "./Timeline.js";
5
+
6
+ export { Overview, ProgressView as Progress, Steps, Timeline };
package/package.json CHANGED
@@ -1,16 +1,25 @@
1
1
  {
2
2
  "name": "@lssm/example.learning-journey-ui-coaching",
3
- "version": "0.0.0-canary-20251217080011",
3
+ "version": "0.0.0-canary-20251217083314",
4
4
  "description": "Contextual coaching UI with tip cards and engagement tracking.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
8
8
  "exports": {
9
- ".": "./src/index.ts",
10
- "./example": "./src/example.ts",
11
- "./docs": "./src/docs/index.ts",
12
- "./views": "./src/views/index.ts",
13
- "./components": "./src/components/index.ts",
9
+ ".": "./dist/index.js",
10
+ "./CoachingMiniApp": "./dist/CoachingMiniApp.js",
11
+ "./components": "./dist/components/index.js",
12
+ "./components/EngagementMeter": "./dist/components/EngagementMeter.js",
13
+ "./components/TipCard": "./dist/components/TipCard.js",
14
+ "./components/TipFeed": "./dist/components/TipFeed.js",
15
+ "./docs": "./dist/docs/index.js",
16
+ "./docs/learning-journey-ui-coaching.docblock": "./dist/docs/learning-journey-ui-coaching.docblock.js",
17
+ "./example": "./dist/example.js",
18
+ "./views": "./dist/views/index.js",
19
+ "./views/Overview": "./dist/views/Overview.js",
20
+ "./views/Progress": "./dist/views/Progress.js",
21
+ "./views/Steps": "./dist/views/Steps.js",
22
+ "./views/Timeline": "./dist/views/Timeline.js",
14
23
  "./*": "./*"
15
24
  },
16
25
  "scripts": {
@@ -27,19 +36,19 @@
27
36
  "test": "bun test"
28
37
  },
29
38
  "dependencies": {
30
- "@lssm/lib.schema": "0.0.0-canary-20251217080011",
31
- "@lssm/lib.contracts": "0.0.0-canary-20251217080011",
32
- "@lssm/example.learning-journey-ui-shared": "0.0.0-canary-20251217080011",
33
- "@lssm/example.learning-journey-ambient-coach": "0.0.0-canary-20251217080011",
34
- "@lssm/example.learning-journey-crm-onboarding": "0.0.0-canary-20251217080011",
35
- "@lssm/module.learning-journey": "0.0.0-canary-20251217080011",
36
- "@lssm/lib.design-system": "0.0.0-canary-20251217080011",
37
- "@lssm/lib.ui-kit-web": "0.0.0-canary-20251217080011",
39
+ "@lssm/lib.schema": "0.0.0-canary-20251217083314",
40
+ "@lssm/lib.contracts": "0.0.0-canary-20251217083314",
41
+ "@lssm/example.learning-journey-ui-shared": "0.0.0-canary-20251217083314",
42
+ "@lssm/example.learning-journey-ambient-coach": "0.0.0-canary-20251217083314",
43
+ "@lssm/example.learning-journey-crm-onboarding": "0.0.0-canary-20251217083314",
44
+ "@lssm/module.learning-journey": "0.0.0-canary-20251217083314",
45
+ "@lssm/lib.design-system": "0.0.0-canary-20251217083314",
46
+ "@lssm/lib.ui-kit-web": "0.0.0-canary-20251217083314",
38
47
  "react": "^19.2.3"
39
48
  },
40
49
  "devDependencies": {
41
- "@lssm/tool.tsdown": "0.0.0-canary-20251217080011",
42
- "@lssm/tool.typescript": "0.0.0-canary-20251217080011",
50
+ "@lssm/tool.tsdown": "0.0.0-canary-20251217083314",
51
+ "@lssm/tool.typescript": "0.0.0-canary-20251217083314",
43
52
  "@types/react": "^19.1.6",
44
53
  "tsdown": "^0.17.4",
45
54
  "typescript": "^5.9.3"
package/tsdown.config.js CHANGED
@@ -1,13 +1,17 @@
1
1
  import { defineConfig } from 'tsdown';
2
+ import { moduleLibrary, withDevExports } from '@lssm/tool.tsdown';
3
+
4
+ export default defineConfig(() => ({
5
+ ...moduleLibrary,
6
+ ...withDevExports,
7
+ }));
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
2
16
 
3
- export default defineConfig({
4
- entry: [
5
- 'src/index.ts',
6
- 'src/views/index.ts',
7
- 'src/components/index.ts',
8
- ],
9
- format: 'esm',
10
- target: 'esnext',
11
- dts: true,
12
- });
13
17
 
@@ -1,234 +0,0 @@
1
- import { Card, CardContent } from "@lssm/lib.ui-kit-web/ui/card";
2
- import { Button } from "@lssm/lib.design-system";
3
- import { cn } from "@lssm/lib.ui-kit-web/ui/utils";
4
- import { jsx, jsxs } from "react/jsx-runtime";
5
-
6
- //#region src/components/TipCard.tsx
7
- const TIP_ICONS$1 = {
8
- cash_buffer_too_high: "💰",
9
- no_savings_goal: "🎯",
10
- irregular_savings: "📅",
11
- noise_late_evening: "🔇",
12
- guest_frequency_high: "👥",
13
- shared_space_conflicts: "🏠",
14
- default: "💡"
15
- };
16
- function TipCard({ step, isCompleted, isCurrent, onComplete, onDismiss }) {
17
- const icon = TIP_ICONS$1[step.metadata?.tipId ?? "default"] ?? TIP_ICONS$1.default;
18
- return /* @__PURE__ */ jsx(Card, {
19
- className: cn("transition-all", isCompleted && "opacity-60", isCurrent && "ring-2 ring-amber-500"),
20
- children: /* @__PURE__ */ jsx(CardContent, {
21
- className: "p-4",
22
- children: /* @__PURE__ */ jsxs("div", {
23
- className: "flex gap-4",
24
- children: [/* @__PURE__ */ jsx("div", {
25
- className: cn("flex h-12 w-12 shrink-0 items-center justify-center rounded-xl text-2xl", isCompleted ? "bg-green-500/10" : isCurrent ? "bg-amber-500/10" : "bg-muted"),
26
- children: isCompleted ? "✓" : icon
27
- }), /* @__PURE__ */ jsxs("div", {
28
- className: "min-w-0 flex-1",
29
- children: [
30
- /* @__PURE__ */ jsxs("div", {
31
- className: "flex items-start justify-between gap-2",
32
- children: [/* @__PURE__ */ jsx("h4", {
33
- className: "font-semibold",
34
- children: step.title
35
- }), step.xpReward && /* @__PURE__ */ jsxs("span", {
36
- className: cn("shrink-0 rounded-full px-2 py-0.5 text-xs font-semibold", isCompleted ? "bg-green-500/10 text-green-500" : "bg-amber-500/10 text-amber-500"),
37
- children: [
38
- "+",
39
- step.xpReward,
40
- " XP"
41
- ]
42
- })]
43
- }),
44
- /* @__PURE__ */ jsx("p", {
45
- className: "text-muted-foreground mt-1 text-sm",
46
- children: step.description
47
- }),
48
- !isCompleted && /* @__PURE__ */ jsxs("div", {
49
- className: "mt-3 flex flex-wrap gap-2",
50
- children: [/* @__PURE__ */ jsx(Button, {
51
- size: "sm",
52
- onClick: onComplete,
53
- children: "Take Action"
54
- }), /* @__PURE__ */ jsx(Button, {
55
- variant: "outline",
56
- size: "sm",
57
- onClick: onDismiss,
58
- children: "Dismiss"
59
- })]
60
- }),
61
- isCompleted && /* @__PURE__ */ jsx("p", {
62
- className: "mt-2 text-sm text-green-500",
63
- children: "✓ Tip acknowledged"
64
- })
65
- ]
66
- })]
67
- })
68
- })
69
- });
70
- }
71
-
72
- //#endregion
73
- //#region src/components/EngagementMeter.tsx
74
- function EngagementMeter({ acknowledged, actioned, pending, streak = 0 }) {
75
- const total = acknowledged + actioned + pending;
76
- const actionedPercent = total > 0 ? actioned / total * 100 : 0;
77
- const acknowledgedPercent = total > 0 ? acknowledged / total * 100 : 0;
78
- return /* @__PURE__ */ jsxs("div", {
79
- className: "space-y-4",
80
- children: [
81
- /* @__PURE__ */ jsx("div", {
82
- className: "flex items-center justify-center",
83
- children: /* @__PURE__ */ jsxs("div", {
84
- className: "relative h-32 w-32",
85
- children: [/* @__PURE__ */ jsxs("svg", {
86
- className: "h-full w-full -rotate-90",
87
- viewBox: "0 0 100 100",
88
- children: [
89
- /* @__PURE__ */ jsx("circle", {
90
- cx: "50",
91
- cy: "50",
92
- r: "40",
93
- fill: "none",
94
- strokeWidth: "12",
95
- className: "stroke-muted"
96
- }),
97
- /* @__PURE__ */ jsx("circle", {
98
- cx: "50",
99
- cy: "50",
100
- r: "40",
101
- fill: "none",
102
- strokeWidth: "12",
103
- strokeLinecap: "round",
104
- strokeDasharray: `${actionedPercent * 2.51} 251`,
105
- className: "stroke-green-500 transition-all duration-500"
106
- }),
107
- /* @__PURE__ */ jsx("circle", {
108
- cx: "50",
109
- cy: "50",
110
- r: "40",
111
- fill: "none",
112
- strokeWidth: "12",
113
- strokeLinecap: "round",
114
- strokeDasharray: `${acknowledgedPercent * 2.51} 251`,
115
- strokeDashoffset: `${-actionedPercent * 2.51}`,
116
- className: "stroke-amber-500 transition-all duration-500"
117
- })
118
- ]
119
- }), /* @__PURE__ */ jsxs("div", {
120
- className: "absolute inset-0 flex flex-col items-center justify-center",
121
- children: [/* @__PURE__ */ jsx("span", {
122
- className: "text-2xl font-bold",
123
- children: total
124
- }), /* @__PURE__ */ jsx("span", {
125
- className: "text-muted-foreground text-xs",
126
- children: "tips"
127
- })]
128
- })]
129
- })
130
- }),
131
- /* @__PURE__ */ jsxs("div", {
132
- className: "flex justify-center gap-4 text-sm",
133
- children: [
134
- /* @__PURE__ */ jsxs("div", {
135
- className: "flex items-center gap-1.5",
136
- children: [/* @__PURE__ */ jsx("div", { className: "h-3 w-3 rounded-full bg-green-500" }), /* @__PURE__ */ jsxs("span", { children: [
137
- "Actioned (",
138
- actioned,
139
- ")"
140
- ] })]
141
- }),
142
- /* @__PURE__ */ jsxs("div", {
143
- className: "flex items-center gap-1.5",
144
- children: [/* @__PURE__ */ jsx("div", { className: "h-3 w-3 rounded-full bg-amber-500" }), /* @__PURE__ */ jsxs("span", { children: [
145
- "Acknowledged (",
146
- acknowledged,
147
- ")"
148
- ] })]
149
- }),
150
- /* @__PURE__ */ jsxs("div", {
151
- className: "flex items-center gap-1.5",
152
- children: [/* @__PURE__ */ jsx("div", { className: "bg-muted h-3 w-3 rounded-full" }), /* @__PURE__ */ jsxs("span", { children: [
153
- "Pending (",
154
- pending,
155
- ")"
156
- ] })]
157
- })
158
- ]
159
- }),
160
- streak > 0 && /* @__PURE__ */ jsxs("div", {
161
- className: "flex items-center justify-center gap-2 rounded-lg bg-orange-500/10 px-4 py-2",
162
- children: [/* @__PURE__ */ jsx("span", {
163
- className: "text-xl",
164
- children: "🔥"
165
- }), /* @__PURE__ */ jsxs("span", {
166
- className: "font-semibold text-orange-500",
167
- children: [streak, " day engagement streak!"]
168
- })]
169
- })
170
- ]
171
- });
172
- }
173
-
174
- //#endregion
175
- //#region src/components/TipFeed.tsx
176
- const TIP_ICONS = {
177
- cash_buffer_too_high: "💰",
178
- no_savings_goal: "🎯",
179
- irregular_savings: "📅",
180
- noise_late_evening: "🔇",
181
- guest_frequency_high: "👥",
182
- shared_space_conflicts: "🏠",
183
- default: "💡"
184
- };
185
- function TipFeed({ items }) {
186
- if (items.length === 0) return /* @__PURE__ */ jsx("div", {
187
- className: "text-muted-foreground py-8 text-center",
188
- children: "No tips yet. Start engaging with coaching tips!"
189
- });
190
- return /* @__PURE__ */ jsxs("div", {
191
- className: "relative",
192
- children: [/* @__PURE__ */ jsx("div", { className: "bg-border absolute top-0 left-4 h-full w-0.5" }), /* @__PURE__ */ jsx("div", {
193
- className: "space-y-4",
194
- children: items.map((item, index) => {
195
- const icon = TIP_ICONS[item.step.metadata?.tipId ?? "default"] ?? TIP_ICONS.default;
196
- return /* @__PURE__ */ jsxs("div", {
197
- className: "relative flex gap-4 pl-2",
198
- children: [/* @__PURE__ */ jsx("div", {
199
- className: cn("relative z-10 flex h-8 w-8 shrink-0 items-center justify-center rounded-full text-sm", item.isCompleted ? "bg-green-500 text-white" : "bg-muted text-muted-foreground"),
200
- children: item.isCompleted ? "✓" : icon
201
- }), /* @__PURE__ */ jsxs("div", {
202
- className: "bg-card flex-1 rounded-lg border p-3",
203
- children: [/* @__PURE__ */ jsxs("div", {
204
- className: "flex items-start justify-between gap-2",
205
- children: [/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("p", {
206
- className: "font-medium",
207
- children: item.step.title
208
- }), /* @__PURE__ */ jsx("p", {
209
- className: "text-muted-foreground mt-0.5 text-sm",
210
- children: item.step.description
211
- })] }), item.step.xpReward && /* @__PURE__ */ jsxs("span", {
212
- className: cn("shrink-0 text-xs font-medium", item.isCompleted ? "text-green-500" : "text-muted-foreground"),
213
- children: [
214
- "+",
215
- item.step.xpReward,
216
- " XP"
217
- ]
218
- })]
219
- }), /* @__PURE__ */ jsx("div", {
220
- className: "text-muted-foreground mt-2 flex items-center gap-2 text-xs",
221
- children: item.isCompleted ? /* @__PURE__ */ jsxs("span", {
222
- className: "text-green-500",
223
- children: ["✓ Completed", item.completedAt && ` • ${item.completedAt}`]
224
- }) : /* @__PURE__ */ jsx("span", { children: "Pending action" })
225
- })]
226
- })]
227
- }, item.step.id);
228
- })
229
- })]
230
- });
231
- }
232
-
233
- //#endregion
234
- export { EngagementMeter as n, TipCard as r, TipFeed as t };
@@ -1,2 +0,0 @@
1
- import { n as EngagementMeter, r as TipCard, t as TipFeed } from "../index-BH0UbqIy.mjs";
2
- export { EngagementMeter, TipCard, TipFeed };
@@ -1,4 +0,0 @@
1
- import { n as EngagementMeter, r as TipCard, t as TipFeed } from "../TipFeed-_1oKR35X.mjs";
2
- import "../components-kh0CpIG2.mjs";
3
-
4
- export { EngagementMeter, TipCard, TipFeed };
@@ -1 +0,0 @@
1
- export { };
@@ -1,47 +0,0 @@
1
- import * as react_jsx_runtime0 from "react/jsx-runtime";
2
- import { LearningJourneyStepSpec } from "@lssm/module.learning-journey/track-spec";
3
-
4
- //#region src/components/TipCard.d.ts
5
- interface TipCardProps {
6
- step: LearningJourneyStepSpec;
7
- isCompleted: boolean;
8
- isCurrent: boolean;
9
- onComplete?: () => void;
10
- onDismiss?: () => void;
11
- }
12
- declare function TipCard({
13
- step,
14
- isCompleted,
15
- isCurrent,
16
- onComplete,
17
- onDismiss
18
- }: TipCardProps): react_jsx_runtime0.JSX.Element;
19
- //#endregion
20
- //#region src/components/EngagementMeter.d.ts
21
- interface EngagementMeterProps {
22
- acknowledged: number;
23
- actioned: number;
24
- pending: number;
25
- streak?: number;
26
- }
27
- declare function EngagementMeter({
28
- acknowledged,
29
- actioned,
30
- pending,
31
- streak
32
- }: EngagementMeterProps): react_jsx_runtime0.JSX.Element;
33
- //#endregion
34
- //#region src/components/TipFeed.d.ts
35
- interface TipFeedItem {
36
- step: LearningJourneyStepSpec;
37
- isCompleted: boolean;
38
- completedAt?: string;
39
- }
40
- interface TipFeedProps {
41
- items: TipFeedItem[];
42
- }
43
- declare function TipFeed({
44
- items
45
- }: TipFeedProps): react_jsx_runtime0.JSX.Element;
46
- //#endregion
47
- export { EngagementMeter as n, TipCard as r, TipFeed as t };
@@ -1,34 +0,0 @@
1
- import { LearningViewProps } from "@lssm/example.learning-journey-ui-shared";
2
- import * as react_jsx_runtime4 from "react/jsx-runtime";
3
-
4
- //#region src/views/Overview.d.ts
5
- interface CoachingOverviewProps extends LearningViewProps {
6
- onStart?: () => void;
7
- }
8
- declare function Overview({
9
- track,
10
- progress,
11
- onStepComplete,
12
- onStart
13
- }: CoachingOverviewProps): react_jsx_runtime4.JSX.Element;
14
- //#endregion
15
- //#region src/views/Steps.d.ts
16
- declare function Steps({
17
- track,
18
- progress,
19
- onStepComplete
20
- }: LearningViewProps): react_jsx_runtime4.JSX.Element;
21
- //#endregion
22
- //#region src/views/Progress.d.ts
23
- declare function ProgressView({
24
- track,
25
- progress
26
- }: LearningViewProps): react_jsx_runtime4.JSX.Element;
27
- //#endregion
28
- //#region src/views/Timeline.d.ts
29
- declare function Timeline({
30
- track,
31
- progress
32
- }: LearningViewProps): react_jsx_runtime4.JSX.Element;
33
- //#endregion
34
- export { Overview as i, ProgressView as n, Steps as r, Timeline as t };