@contractspec/example.learning-journey-ui-coaching 1.46.1 → 1.48.1

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.
@@ -1,7 +1,7 @@
1
1
  $ tsdown
2
- ℹ tsdown v0.18.3 powered by rolldown v1.0.0-beta.57
2
+ ℹ tsdown v0.19.0 powered by rolldown v1.0.0-beta.59
3
3
  ℹ config file: /home/runner/work/contractspec/contractspec/packages/examples/learning-journey-ui-coaching/tsdown.config.js
4
- ℹ entry: src/CoachingMiniApp.tsx, src/example.ts, src/index.ts, src/components/EngagementMeter.tsx, src/components/TipCard.tsx, src/components/TipFeed.tsx, src/components/index.ts, src/views/Overview.tsx, src/views/Progress.tsx, src/views/Steps.tsx, src/views/Timeline.tsx, src/views/index.ts, src/docs/index.ts, src/docs/learning-journey-ui-coaching.docblock.ts
4
+ ℹ entry: src/CoachingMiniApp.tsx, src/example.ts, src/index.ts, src/components/EngagementMeter.tsx, src/components/TipCard.tsx, src/components/TipFeed.tsx, src/components/index.ts, src/docs/index.ts, src/docs/learning-journey-ui-coaching.docblock.ts, src/views/Overview.tsx, src/views/Progress.tsx, src/views/Steps.tsx, src/views/Timeline.tsx, src/views/index.ts
5
5
  ℹ target: esnext
6
6
  ℹ tsconfig: tsconfig.json
7
7
  ℹ Build start
@@ -14,7 +14,7 @@ $ tsdown
14
14
  ℹ dist/components/TipFeed.js 2.59 kB │ gzip: 1.02 kB
15
15
  ℹ dist/CoachingMiniApp.js 2.34 kB │ gzip: 0.79 kB
16
16
  ℹ dist/views/Steps.js 2.05 kB │ gzip: 0.74 kB
17
- ℹ dist/example.js 0.88 kB │ gzip: 0.49 kB
17
+ ℹ dist/example.js 0.96 kB │ gzip: 0.52 kB
18
18
  ℹ dist/docs/learning-journey-ui-coaching.docblock.js 0.81 kB │ gzip: 0.46 kB
19
19
  ℹ dist/index.js 0.70 kB │ gzip: 0.24 kB
20
20
  ℹ dist/views/index.js 0.24 kB │ gzip: 0.12 kB
@@ -24,11 +24,11 @@ $ tsdown
24
24
  ℹ dist/views/Progress.js.map 7.15 kB │ gzip: 2.08 kB
25
25
  ℹ dist/views/Timeline.js.map 5.57 kB │ gzip: 1.59 kB
26
26
  ℹ dist/components/EngagementMeter.js.map 4.44 kB │ gzip: 1.34 kB
27
- ℹ dist/components/TipFeed.js.map 4.35 kB │ gzip: 1.66 kB
28
- ℹ dist/components/TipCard.js.map 4.02 kB │ gzip: 1.61 kB
27
+ ℹ dist/components/TipFeed.js.map 4.31 kB │ gzip: 1.65 kB
28
+ ℹ dist/components/TipCard.js.map 3.98 kB │ gzip: 1.61 kB
29
29
  ℹ dist/CoachingMiniApp.js.map 3.63 kB │ gzip: 1.31 kB
30
30
  ℹ dist/views/Steps.js.map 3.09 kB │ gzip: 1.24 kB
31
- ℹ dist/example.js.map 1.40 kB │ gzip: 0.70 kB
31
+ ℹ dist/example.js.map 1.39 kB │ gzip: 0.71 kB
32
32
  ℹ dist/docs/learning-journey-ui-coaching.docblock.js.map 1.14 kB │ gzip: 0.61 kB
33
33
  ℹ dist/components/TipCard.d.ts.map 0.36 kB │ gzip: 0.22 kB
34
34
  ℹ dist/components/EngagementMeter.d.ts.map 0.32 kB │ gzip: 0.21 kB
@@ -38,7 +38,7 @@ $ tsdown
38
38
  ℹ dist/views/Progress.d.ts.map 0.18 kB │ gzip: 0.15 kB
39
39
  ℹ dist/views/Timeline.d.ts.map 0.17 kB │ gzip: 0.15 kB
40
40
  ℹ dist/views/Steps.d.ts.map 0.17 kB │ gzip: 0.15 kB
41
- ℹ dist/example.d.ts.map 0.12 kB │ gzip: 0.12 kB
41
+ ℹ dist/example.d.ts.map 0.14 kB │ gzip: 0.13 kB
42
42
  ℹ dist/index.d.ts 0.65 kB │ gzip: 0.23 kB
43
43
  ℹ dist/CoachingMiniApp.d.ts 0.59 kB │ gzip: 0.33 kB
44
44
  ℹ dist/components/TipCard.d.ts 0.56 kB │ gzip: 0.32 kB
@@ -48,10 +48,10 @@ $ tsdown
48
48
  ℹ dist/views/Progress.d.ts 0.39 kB │ gzip: 0.25 kB
49
49
  ℹ dist/views/Steps.d.ts 0.36 kB │ gzip: 0.25 kB
50
50
  ℹ dist/views/Timeline.d.ts 0.35 kB │ gzip: 0.24 kB
51
+ ℹ dist/example.d.ts 0.25 kB │ gzip: 0.17 kB
51
52
  ℹ dist/views/index.d.ts 0.24 kB │ gzip: 0.12 kB
52
- ℹ dist/example.d.ts 0.20 kB │ gzip: 0.16 kB
53
53
  ℹ dist/components/index.d.ts 0.18 kB │ gzip: 0.10 kB
54
54
  ℹ dist/docs/index.d.ts 0.01 kB │ gzip: 0.03 kB
55
55
  ℹ dist/docs/learning-journey-ui-coaching.docblock.d.ts 0.01 kB │ gzip: 0.03 kB
56
- ℹ 47 files, total: 79.94 kB
57
- ✔ Build complete in 5565ms
56
+ ℹ 47 files, total: 79.99 kB
57
+ ✔ Build complete in 3343ms
@@ -1,7 +1,7 @@
1
1
  $ bun build:types && bun build:bundle
2
2
  $ tsc --noEmit
3
3
  $ tsdown
4
- ℹ tsdown v0.18.3 powered by rolldown v1.0.0-beta.57
4
+ ℹ tsdown v0.19.0 powered by rolldown v1.0.0-beta.59
5
5
  ℹ config file: /home/runner/work/contractspec/contractspec/packages/examples/learning-journey-ui-coaching/tsdown.config.js
6
6
  ℹ entry: src/CoachingMiniApp.tsx, src/example.ts, src/index.ts, src/components/EngagementMeter.tsx, src/components/TipCard.tsx, src/components/TipFeed.tsx, src/components/index.ts, src/docs/index.ts, src/docs/learning-journey-ui-coaching.docblock.ts, src/views/Overview.tsx, src/views/Progress.tsx, src/views/Steps.tsx, src/views/Timeline.tsx, src/views/index.ts
7
7
  ℹ target: esnext
@@ -15,7 +15,7 @@ $ tsdown
15
15
  ℹ dist/components/TipFeed.js 2.59 kB │ gzip: 1.02 kB
16
16
  ℹ dist/CoachingMiniApp.js 2.34 kB │ gzip: 0.79 kB
17
17
  ℹ dist/views/Steps.js 2.05 kB │ gzip: 0.74 kB
18
- ℹ dist/example.js 0.88 kB │ gzip: 0.49 kB
18
+ ℹ dist/example.js 0.96 kB │ gzip: 0.52 kB
19
19
  ℹ dist/docs/learning-journey-ui-coaching.docblock.js 0.81 kB │ gzip: 0.46 kB
20
20
  ℹ dist/index.js 0.70 kB │ gzip: 0.24 kB
21
21
  ℹ dist/views/index.js 0.24 kB │ gzip: 0.12 kB
@@ -25,11 +25,11 @@ $ tsdown
25
25
  ℹ dist/views/Progress.js.map 7.15 kB │ gzip: 2.08 kB
26
26
  ℹ dist/views/Timeline.js.map 5.57 kB │ gzip: 1.59 kB
27
27
  ℹ dist/components/EngagementMeter.js.map 4.44 kB │ gzip: 1.34 kB
28
- ℹ dist/components/TipFeed.js.map 4.35 kB │ gzip: 1.66 kB
29
- ℹ dist/components/TipCard.js.map 4.02 kB │ gzip: 1.61 kB
28
+ ℹ dist/components/TipFeed.js.map 4.31 kB │ gzip: 1.65 kB
29
+ ℹ dist/components/TipCard.js.map 3.98 kB │ gzip: 1.61 kB
30
30
  ℹ dist/CoachingMiniApp.js.map 3.63 kB │ gzip: 1.31 kB
31
31
  ℹ dist/views/Steps.js.map 3.09 kB │ gzip: 1.24 kB
32
- ℹ dist/example.js.map 1.40 kB │ gzip: 0.70 kB
32
+ ℹ dist/example.js.map 1.39 kB │ gzip: 0.71 kB
33
33
  ℹ dist/docs/learning-journey-ui-coaching.docblock.js.map 1.14 kB │ gzip: 0.61 kB
34
34
  ℹ dist/components/TipCard.d.ts.map 0.36 kB │ gzip: 0.22 kB
35
35
  ℹ dist/components/EngagementMeter.d.ts.map 0.32 kB │ gzip: 0.21 kB
@@ -39,7 +39,7 @@ $ tsdown
39
39
  ℹ dist/views/Progress.d.ts.map 0.18 kB │ gzip: 0.15 kB
40
40
  ℹ dist/views/Timeline.d.ts.map 0.17 kB │ gzip: 0.15 kB
41
41
  ℹ dist/views/Steps.d.ts.map 0.17 kB │ gzip: 0.15 kB
42
- ℹ dist/example.d.ts.map 0.12 kB │ gzip: 0.12 kB
42
+ ℹ dist/example.d.ts.map 0.14 kB │ gzip: 0.13 kB
43
43
  ℹ dist/index.d.ts 0.65 kB │ gzip: 0.23 kB
44
44
  ℹ dist/CoachingMiniApp.d.ts 0.59 kB │ gzip: 0.33 kB
45
45
  ℹ dist/components/TipCard.d.ts 0.56 kB │ gzip: 0.32 kB
@@ -49,10 +49,10 @@ $ tsdown
49
49
  ℹ dist/views/Progress.d.ts 0.39 kB │ gzip: 0.25 kB
50
50
  ℹ dist/views/Steps.d.ts 0.36 kB │ gzip: 0.25 kB
51
51
  ℹ dist/views/Timeline.d.ts 0.35 kB │ gzip: 0.24 kB
52
+ ℹ dist/example.d.ts 0.25 kB │ gzip: 0.17 kB
52
53
  ℹ dist/views/index.d.ts 0.24 kB │ gzip: 0.12 kB
53
- ℹ dist/example.d.ts 0.20 kB │ gzip: 0.16 kB
54
54
  ℹ dist/components/index.d.ts 0.18 kB │ gzip: 0.10 kB
55
55
  ℹ dist/docs/index.d.ts 0.01 kB │ gzip: 0.03 kB
56
56
  ℹ dist/docs/learning-journey-ui-coaching.docblock.d.ts 0.01 kB │ gzip: 0.03 kB
57
- ℹ 47 files, total: 79.94 kB
58
- ✔ Build complete in 8012ms
57
+ ℹ 47 files, total: 79.99 kB
58
+ ✔ Build complete in 3307ms
package/CHANGELOG.md CHANGED
@@ -1,5 +1,76 @@
1
1
  # @contractspec/example.learning-journey-ui-coaching
2
2
 
3
+ ## 1.48.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [c560ee7]
8
+ - Updated dependencies [1536bf3]
9
+ - @contractspec/lib.design-system@1.48.1
10
+ - @contractspec/lib.contracts@1.48.1
11
+ - @contractspec/example.learning-journey-ui-shared@1.48.1
12
+ - @contractspec/example.learning-journey-ambient-coach@1.48.1
13
+ - @contractspec/example.learning-journey-crm-onboarding@1.48.1
14
+ - @contractspec/module.learning-journey@1.48.1
15
+
16
+ ## 1.48.0
17
+
18
+ ### Minor Changes
19
+
20
+ - b0444a4: feat: reduce adoption's friction by allowing generation of contracts from an analyse of the codebase
21
+
22
+ ### Patch Changes
23
+
24
+ - Updated dependencies [b0444a4]
25
+ - @contractspec/example.learning-journey-crm-onboarding@1.48.0
26
+ - @contractspec/example.learning-journey-ambient-coach@1.48.0
27
+ - @contractspec/example.learning-journey-ui-shared@1.48.0
28
+ - @contractspec/module.learning-journey@1.48.0
29
+ - @contractspec/lib.design-system@1.48.0
30
+ - @contractspec/lib.ui-kit-web@1.48.0
31
+ - @contractspec/lib.contracts@1.48.0
32
+
33
+ ## 1.47.0
34
+
35
+ ### Minor Changes
36
+
37
+ - caf8701: feat: add cli vibe command to run workflow
38
+ - c69b849: feat: add api web services (mcp & website)
39
+ - 42b8d78: feat: add cli `contractspec vibe` workflow to simplify usage
40
+ - fd38e85: feat: auto-fix contractspec issues
41
+
42
+ ### Patch Changes
43
+
44
+ - e7ded36: feat: improve stability (adding ts-morph)
45
+ - c231a8b: test: improve workspace stability
46
+ - Updated dependencies [e7ded36]
47
+ - Updated dependencies [caf8701]
48
+ - Updated dependencies [c69b849]
49
+ - Updated dependencies [c231a8b]
50
+ - Updated dependencies [42b8d78]
51
+ - Updated dependencies [fd38e85]
52
+ - @contractspec/example.learning-journey-crm-onboarding@1.47.0
53
+ - @contractspec/example.learning-journey-ambient-coach@1.47.0
54
+ - @contractspec/example.learning-journey-ui-shared@1.47.0
55
+ - @contractspec/module.learning-journey@1.47.0
56
+ - @contractspec/lib.design-system@1.47.0
57
+ - @contractspec/lib.ui-kit-web@1.47.0
58
+ - @contractspec/lib.contracts@1.47.0
59
+
60
+ ## 1.46.2
61
+
62
+ ### Patch Changes
63
+
64
+ - 7e21625: feat: library services (landing page & api)
65
+ - Updated dependencies [7e21625]
66
+ - @contractspec/example.learning-journey-crm-onboarding@1.46.2
67
+ - @contractspec/example.learning-journey-ambient-coach@1.46.2
68
+ - @contractspec/example.learning-journey-ui-shared@1.46.2
69
+ - @contractspec/module.learning-journey@1.46.2
70
+ - @contractspec/lib.design-system@1.46.2
71
+ - @contractspec/lib.ui-kit-web@1.46.2
72
+ - @contractspec/lib.contracts@1.46.2
73
+
3
74
  ## 1.46.1
4
75
 
5
76
  ### Patch Changes
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime0 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime5 from "react/jsx-runtime";
2
2
 
3
3
  //#region src/components/EngagementMeter.d.ts
4
4
  interface EngagementMeterProps {
@@ -12,7 +12,7 @@ declare function EngagementMeter({
12
12
  actioned,
13
13
  pending,
14
14
  streak
15
- }: EngagementMeterProps): react_jsx_runtime0.JSX.Element;
15
+ }: EngagementMeterProps): react_jsx_runtime5.JSX.Element;
16
16
  //#endregion
17
17
  export { EngagementMeter };
18
18
  //# sourceMappingURL=EngagementMeter.d.ts.map
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime1 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime6 from "react/jsx-runtime";
2
2
  import { LearningJourneyStepSpec } from "@contractspec/module.learning-journey/track-spec";
3
3
 
4
4
  //#region src/components/TipCard.d.ts
@@ -15,7 +15,7 @@ declare function TipCard({
15
15
  isCurrent,
16
16
  onComplete,
17
17
  onDismiss
18
- }: TipCardProps): react_jsx_runtime1.JSX.Element;
18
+ }: TipCardProps): react_jsx_runtime6.JSX.Element;
19
19
  //#endregion
20
20
  export { TipCard };
21
21
  //# sourceMappingURL=TipCard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TipCard.js","names":["TIP_ICONS: Record<string, string>"],"sources":["../../src/components/TipCard.tsx"],"sourcesContent":["'use client';\n\nimport { Button } from '@contractspec/lib.design-system';\nimport { Card, CardContent } from '@contractspec/lib.ui-kit-web/ui/card';\nimport { cn } from '@contractspec/lib.ui-kit-web/ui/utils';\nimport type { LearningJourneyStepSpec } from '@contractspec/module.learning-journey/track-spec';\n\ninterface TipCardProps {\n step: LearningJourneyStepSpec;\n isCompleted: boolean;\n isCurrent: boolean;\n onComplete?: () => void;\n onDismiss?: () => void;\n}\n\nconst TIP_ICONS: Record<string, string> = {\n cash_buffer_too_high: '💰',\n no_savings_goal: '🎯',\n irregular_savings: '📅',\n noise_late_evening: '🔇',\n guest_frequency_high: '👥',\n shared_space_conflicts: '🏠',\n default: '💡',\n};\n\nexport function TipCard({\n step,\n isCompleted,\n isCurrent,\n onComplete,\n onDismiss,\n}: TipCardProps) {\n const tipId = (step.metadata?.tipId as string) ?? 'default';\n const icon = TIP_ICONS[tipId] ?? TIP_ICONS.default;\n\n return (\n <Card\n className={cn(\n 'transition-all',\n isCompleted && 'opacity-60',\n isCurrent && 'ring-2 ring-amber-500'\n )}\n >\n <CardContent className=\"p-4\">\n <div className=\"flex gap-4\">\n {/* Icon */}\n <div\n className={cn(\n 'flex h-12 w-12 shrink-0 items-center justify-center rounded-xl text-2xl',\n isCompleted\n ? 'bg-green-500/10'\n : isCurrent\n ? 'bg-amber-500/10'\n : 'bg-muted'\n )}\n >\n {isCompleted ? '✓' : icon}\n </div>\n\n {/* Content */}\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-start justify-between gap-2\">\n <h4 className=\"font-semibold\">{step.title}</h4>\n {step.xpReward && (\n <span\n className={cn(\n 'shrink-0 rounded-full px-2 py-0.5 text-xs font-semibold',\n isCompleted\n ? 'bg-green-500/10 text-green-500'\n : 'bg-amber-500/10 text-amber-500'\n )}\n >\n +{step.xpReward} XP\n </span>\n )}\n </div>\n <p className=\"text-muted-foreground mt-1 text-sm\">\n {step.description}\n </p>\n\n {/* Actions */}\n {!isCompleted && (\n <div className=\"mt-3 flex flex-wrap gap-2\">\n <Button size=\"sm\" onClick={onComplete}>\n Take Action\n </Button>\n <Button variant=\"outline\" size=\"sm\" onClick={onDismiss}>\n Dismiss\n </Button>\n </div>\n )}\n\n {isCompleted && (\n <p className=\"mt-2 text-sm text-green-500\">✓ Tip acknowledged</p>\n )}\n </div>\n </div>\n </CardContent>\n </Card>\n );\n}\n"],"mappings":";;;;;;;;AAeA,MAAMA,YAAoC;CACxC,sBAAsB;CACtB,iBAAiB;CACjB,mBAAmB;CACnB,oBAAoB;CACpB,sBAAsB;CACtB,wBAAwB;CACxB,SAAS;CACV;AAED,SAAgB,QAAQ,EACtB,MACA,aACA,WACA,YACA,aACe;CAEf,MAAM,OAAO,UADE,KAAK,UAAU,SAAoB,cACjB,UAAU;AAE3C,QACE,oBAAC;EACC,WAAW,GACT,kBACA,eAAe,cACf,aAAa,wBACd;YAED,oBAAC;GAAY,WAAU;aACrB,qBAAC;IAAI,WAAU;eAEb,oBAAC;KACC,WAAW,GACT,2EACA,cACI,oBACA,YACE,oBACA,WACP;eAEA,cAAc,MAAM;MACjB,EAGN,qBAAC;KAAI,WAAU;;MACb,qBAAC;OAAI,WAAU;kBACb,oBAAC;QAAG,WAAU;kBAAiB,KAAK;SAAW,EAC9C,KAAK,YACJ,qBAAC;QACC,WAAW,GACT,2DACA,cACI,mCACA,iCACL;;SACF;SACG,KAAK;SAAS;;SACX;QAEL;MACN,oBAAC;OAAE,WAAU;iBACV,KAAK;QACJ;MAGH,CAAC,eACA,qBAAC;OAAI,WAAU;kBACb,oBAAC;QAAO,MAAK;QAAK,SAAS;kBAAY;SAE9B,EACT,oBAAC;QAAO,SAAQ;QAAU,MAAK;QAAK,SAAS;kBAAW;SAE/C;QACL;MAGP,eACC,oBAAC;OAAE,WAAU;iBAA8B;QAAsB;;MAE/D;KACF;IACM;GACT"}
1
+ {"version":3,"file":"TipCard.js","names":[],"sources":["../../src/components/TipCard.tsx"],"sourcesContent":["'use client';\n\nimport { Button } from '@contractspec/lib.design-system';\nimport { Card, CardContent } from '@contractspec/lib.ui-kit-web/ui/card';\nimport { cn } from '@contractspec/lib.ui-kit-web/ui/utils';\nimport type { LearningJourneyStepSpec } from '@contractspec/module.learning-journey/track-spec';\n\ninterface TipCardProps {\n step: LearningJourneyStepSpec;\n isCompleted: boolean;\n isCurrent: boolean;\n onComplete?: () => void;\n onDismiss?: () => void;\n}\n\nconst TIP_ICONS: Record<string, string> = {\n cash_buffer_too_high: '💰',\n no_savings_goal: '🎯',\n irregular_savings: '📅',\n noise_late_evening: '🔇',\n guest_frequency_high: '👥',\n shared_space_conflicts: '🏠',\n default: '💡',\n};\n\nexport function TipCard({\n step,\n isCompleted,\n isCurrent,\n onComplete,\n onDismiss,\n}: TipCardProps) {\n const tipId = (step.metadata?.tipId as string) ?? 'default';\n const icon = TIP_ICONS[tipId] ?? TIP_ICONS.default;\n\n return (\n <Card\n className={cn(\n 'transition-all',\n isCompleted && 'opacity-60',\n isCurrent && 'ring-2 ring-amber-500'\n )}\n >\n <CardContent className=\"p-4\">\n <div className=\"flex gap-4\">\n {/* Icon */}\n <div\n className={cn(\n 'flex h-12 w-12 shrink-0 items-center justify-center rounded-xl text-2xl',\n isCompleted\n ? 'bg-green-500/10'\n : isCurrent\n ? 'bg-amber-500/10'\n : 'bg-muted'\n )}\n >\n {isCompleted ? '✓' : icon}\n </div>\n\n {/* Content */}\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-start justify-between gap-2\">\n <h4 className=\"font-semibold\">{step.title}</h4>\n {step.xpReward && (\n <span\n className={cn(\n 'shrink-0 rounded-full px-2 py-0.5 text-xs font-semibold',\n isCompleted\n ? 'bg-green-500/10 text-green-500'\n : 'bg-amber-500/10 text-amber-500'\n )}\n >\n +{step.xpReward} XP\n </span>\n )}\n </div>\n <p className=\"text-muted-foreground mt-1 text-sm\">\n {step.description}\n </p>\n\n {/* Actions */}\n {!isCompleted && (\n <div className=\"mt-3 flex flex-wrap gap-2\">\n <Button size=\"sm\" onClick={onComplete}>\n Take Action\n </Button>\n <Button variant=\"outline\" size=\"sm\" onClick={onDismiss}>\n Dismiss\n </Button>\n </div>\n )}\n\n {isCompleted && (\n <p className=\"mt-2 text-sm text-green-500\">✓ Tip acknowledged</p>\n )}\n </div>\n </div>\n </CardContent>\n </Card>\n );\n}\n"],"mappings":";;;;;;;;AAeA,MAAM,YAAoC;CACxC,sBAAsB;CACtB,iBAAiB;CACjB,mBAAmB;CACnB,oBAAoB;CACpB,sBAAsB;CACtB,wBAAwB;CACxB,SAAS;CACV;AAED,SAAgB,QAAQ,EACtB,MACA,aACA,WACA,YACA,aACe;CAEf,MAAM,OAAO,UADE,KAAK,UAAU,SAAoB,cACjB,UAAU;AAE3C,QACE,oBAAC;EACC,WAAW,GACT,kBACA,eAAe,cACf,aAAa,wBACd;YAED,oBAAC;GAAY,WAAU;aACrB,qBAAC;IAAI,WAAU;eAEb,oBAAC;KACC,WAAW,GACT,2EACA,cACI,oBACA,YACE,oBACA,WACP;eAEA,cAAc,MAAM;MACjB,EAGN,qBAAC;KAAI,WAAU;;MACb,qBAAC;OAAI,WAAU;kBACb,oBAAC;QAAG,WAAU;kBAAiB,KAAK;SAAW,EAC9C,KAAK,YACJ,qBAAC;QACC,WAAW,GACT,2DACA,cACI,mCACA,iCACL;;SACF;SACG,KAAK;SAAS;;SACX;QAEL;MACN,oBAAC;OAAE,WAAU;iBACV,KAAK;QACJ;MAGH,CAAC,eACA,qBAAC;OAAI,WAAU;kBACb,oBAAC;QAAO,MAAK;QAAK,SAAS;kBAAY;SAE9B,EACT,oBAAC;QAAO,SAAQ;QAAU,MAAK;QAAK,SAAS;kBAAW;SAE/C;QACL;MAGP,eACC,oBAAC;OAAE,WAAU;iBAA8B;QAAsB;;MAE/D;KACF;IACM;GACT"}
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime2 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
2
2
  import { LearningJourneyStepSpec } from "@contractspec/module.learning-journey/track-spec";
3
3
 
4
4
  //#region src/components/TipFeed.d.ts
@@ -12,7 +12,7 @@ interface TipFeedProps {
12
12
  }
13
13
  declare function TipFeed({
14
14
  items
15
- }: TipFeedProps): react_jsx_runtime2.JSX.Element;
15
+ }: TipFeedProps): react_jsx_runtime0.JSX.Element;
16
16
  //#endregion
17
17
  export { TipFeed };
18
18
  //# sourceMappingURL=TipFeed.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TipFeed.js","names":["TIP_ICONS: Record<string, string>"],"sources":["../../src/components/TipFeed.tsx"],"sourcesContent":["'use client';\n\nimport { cn } from '@contractspec/lib.ui-kit-web/ui/utils';\nimport type { LearningJourneyStepSpec } from '@contractspec/module.learning-journey/track-spec';\n\ninterface TipFeedItem {\n step: LearningJourneyStepSpec;\n isCompleted: boolean;\n completedAt?: string;\n}\n\ninterface TipFeedProps {\n items: TipFeedItem[];\n}\n\nconst TIP_ICONS: Record<string, string> = {\n cash_buffer_too_high: '💰',\n no_savings_goal: '🎯',\n irregular_savings: '📅',\n noise_late_evening: '🔇',\n guest_frequency_high: '👥',\n shared_space_conflicts: '🏠',\n default: '💡',\n};\n\nexport function TipFeed({ items }: TipFeedProps) {\n if (items.length === 0) {\n return (\n <div className=\"text-muted-foreground py-8 text-center\">\n No tips yet. Start engaging with coaching tips!\n </div>\n );\n }\n\n return (\n <div className=\"relative\">\n {/* Timeline line */}\n <div className=\"bg-border absolute top-0 left-4 h-full w-0.5\" />\n\n {/* Feed items */}\n <div className=\"space-y-4\">\n {items.map((item) => {\n const tipId = (item.step.metadata?.tipId as string) ?? 'default';\n const icon = TIP_ICONS[tipId] ?? TIP_ICONS.default;\n\n return (\n <div key={item.step.id} className=\"relative flex gap-4 pl-2\">\n {/* Node */}\n <div\n className={cn(\n 'relative z-10 flex h-8 w-8 shrink-0 items-center justify-center rounded-full text-sm',\n item.isCompleted\n ? 'bg-green-500 text-white'\n : 'bg-muted text-muted-foreground'\n )}\n >\n {item.isCompleted ? '✓' : icon}\n </div>\n\n {/* Content */}\n <div className=\"bg-card flex-1 rounded-lg border p-3\">\n <div className=\"flex items-start justify-between gap-2\">\n <div>\n <p className=\"font-medium\">{item.step.title}</p>\n <p className=\"text-muted-foreground mt-0.5 text-sm\">\n {item.step.description}\n </p>\n </div>\n {item.step.xpReward && (\n <span\n className={cn(\n 'shrink-0 text-xs font-medium',\n item.isCompleted\n ? 'text-green-500'\n : 'text-muted-foreground'\n )}\n >\n +{item.step.xpReward} XP\n </span>\n )}\n </div>\n\n {/* Timestamp */}\n <div className=\"text-muted-foreground mt-2 flex items-center gap-2 text-xs\">\n {item.isCompleted ? (\n <span className=\"text-green-500\">\n ✓ Completed\n {item.completedAt && ` • ${item.completedAt}`}\n </span>\n ) : (\n <span>Pending action</span>\n )}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;AAeA,MAAMA,YAAoC;CACxC,sBAAsB;CACtB,iBAAiB;CACjB,mBAAmB;CACnB,oBAAoB;CACpB,sBAAsB;CACtB,wBAAwB;CACxB,SAAS;CACV;AAED,SAAgB,QAAQ,EAAE,SAAuB;AAC/C,KAAI,MAAM,WAAW,EACnB,QACE,oBAAC;EAAI,WAAU;YAAyC;GAElD;AAIV,QACE,qBAAC;EAAI,WAAU;aAEb,oBAAC,SAAI,WAAU,iDAAiD,EAGhE,oBAAC;GAAI,WAAU;aACZ,MAAM,KAAK,SAAS;IAEnB,MAAM,OAAO,UADE,KAAK,KAAK,UAAU,SAAoB,cACtB,UAAU;AAE3C,WACE,qBAAC;KAAuB,WAAU;gBAEhC,oBAAC;MACC,WAAW,GACT,wFACA,KAAK,cACD,4BACA,iCACL;gBAEA,KAAK,cAAc,MAAM;OACtB,EAGN,qBAAC;MAAI,WAAU;iBACb,qBAAC;OAAI,WAAU;kBACb,qBAAC,oBACC,oBAAC;QAAE,WAAU;kBAAe,KAAK,KAAK;SAAU,EAChD,oBAAC;QAAE,WAAU;kBACV,KAAK,KAAK;SACT,IACA,EACL,KAAK,KAAK,YACT,qBAAC;QACC,WAAW,GACT,gCACA,KAAK,cACD,mBACA,wBACL;;SACF;SACG,KAAK,KAAK;SAAS;;SAChB;QAEL,EAGN,oBAAC;OAAI,WAAU;iBACZ,KAAK,cACJ,qBAAC;QAAK,WAAU;mBAAiB,eAE9B,KAAK,eAAe,MAAM,KAAK;SAC3B,GAEP,oBAAC,oBAAK,mBAAqB;QAEzB;OACF;OA/CE,KAAK,KAAK,GAgDd;KAER;IACE;GACF"}
1
+ {"version":3,"file":"TipFeed.js","names":[],"sources":["../../src/components/TipFeed.tsx"],"sourcesContent":["'use client';\n\nimport { cn } from '@contractspec/lib.ui-kit-web/ui/utils';\nimport type { LearningJourneyStepSpec } from '@contractspec/module.learning-journey/track-spec';\n\ninterface TipFeedItem {\n step: LearningJourneyStepSpec;\n isCompleted: boolean;\n completedAt?: string;\n}\n\ninterface TipFeedProps {\n items: TipFeedItem[];\n}\n\nconst TIP_ICONS: Record<string, string> = {\n cash_buffer_too_high: '💰',\n no_savings_goal: '🎯',\n irregular_savings: '📅',\n noise_late_evening: '🔇',\n guest_frequency_high: '👥',\n shared_space_conflicts: '🏠',\n default: '💡',\n};\n\nexport function TipFeed({ items }: TipFeedProps) {\n if (items.length === 0) {\n return (\n <div className=\"text-muted-foreground py-8 text-center\">\n No tips yet. Start engaging with coaching tips!\n </div>\n );\n }\n\n return (\n <div className=\"relative\">\n {/* Timeline line */}\n <div className=\"bg-border absolute top-0 left-4 h-full w-0.5\" />\n\n {/* Feed items */}\n <div className=\"space-y-4\">\n {items.map((item) => {\n const tipId = (item.step.metadata?.tipId as string) ?? 'default';\n const icon = TIP_ICONS[tipId] ?? TIP_ICONS.default;\n\n return (\n <div key={item.step.id} className=\"relative flex gap-4 pl-2\">\n {/* Node */}\n <div\n className={cn(\n 'relative z-10 flex h-8 w-8 shrink-0 items-center justify-center rounded-full text-sm',\n item.isCompleted\n ? 'bg-green-500 text-white'\n : 'bg-muted text-muted-foreground'\n )}\n >\n {item.isCompleted ? '✓' : icon}\n </div>\n\n {/* Content */}\n <div className=\"bg-card flex-1 rounded-lg border p-3\">\n <div className=\"flex items-start justify-between gap-2\">\n <div>\n <p className=\"font-medium\">{item.step.title}</p>\n <p className=\"text-muted-foreground mt-0.5 text-sm\">\n {item.step.description}\n </p>\n </div>\n {item.step.xpReward && (\n <span\n className={cn(\n 'shrink-0 text-xs font-medium',\n item.isCompleted\n ? 'text-green-500'\n : 'text-muted-foreground'\n )}\n >\n +{item.step.xpReward} XP\n </span>\n )}\n </div>\n\n {/* Timestamp */}\n <div className=\"text-muted-foreground mt-2 flex items-center gap-2 text-xs\">\n {item.isCompleted ? (\n <span className=\"text-green-500\">\n ✓ Completed\n {item.completedAt && ` • ${item.completedAt}`}\n </span>\n ) : (\n <span>Pending action</span>\n )}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;AAeA,MAAM,YAAoC;CACxC,sBAAsB;CACtB,iBAAiB;CACjB,mBAAmB;CACnB,oBAAoB;CACpB,sBAAsB;CACtB,wBAAwB;CACxB,SAAS;CACV;AAED,SAAgB,QAAQ,EAAE,SAAuB;AAC/C,KAAI,MAAM,WAAW,EACnB,QACE,oBAAC;EAAI,WAAU;YAAyC;GAElD;AAIV,QACE,qBAAC;EAAI,WAAU;aAEb,oBAAC,SAAI,WAAU,iDAAiD,EAGhE,oBAAC;GAAI,WAAU;aACZ,MAAM,KAAK,SAAS;IAEnB,MAAM,OAAO,UADE,KAAK,KAAK,UAAU,SAAoB,cACtB,UAAU;AAE3C,WACE,qBAAC;KAAuB,WAAU;gBAEhC,oBAAC;MACC,WAAW,GACT,wFACA,KAAK,cACD,4BACA,iCACL;gBAEA,KAAK,cAAc,MAAM;OACtB,EAGN,qBAAC;MAAI,WAAU;iBACb,qBAAC;OAAI,WAAU;kBACb,qBAAC,oBACC,oBAAC;QAAE,WAAU;kBAAe,KAAK,KAAK;SAAU,EAChD,oBAAC;QAAE,WAAU;kBACV,KAAK,KAAK;SACT,IACA,EACL,KAAK,KAAK,YACT,qBAAC;QACC,WAAW,GACT,gCACA,KAAK,cACD,mBACA,wBACL;;SACF;SACG,KAAK,KAAK;SAAS;;SAChB;QAEL,EAGN,oBAAC;OAAI,WAAU;iBACZ,KAAK,cACJ,qBAAC;QAAK,WAAU;mBAAiB,eAE9B,KAAK,eAAe,MAAM,KAAK;SAC3B,GAEP,oBAAC,oBAAK,mBAAqB;QAEzB;OACF;OA/CE,KAAK,KAAK,GAgDd;KAER;IACE;GACF"}
package/dist/example.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { ExampleSpec } from "@contractspec/lib.contracts";
1
+ import * as _contractspec_lib_contracts0 from "@contractspec/lib.contracts";
2
2
 
3
3
  //#region src/example.d.ts
4
- declare const example: ExampleSpec;
4
+ declare const example: _contractspec_lib_contracts0.ExampleSpec;
5
5
  //#endregion
6
6
  export { example as default };
7
7
  //# sourceMappingURL=example.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"example.d.ts","names":[],"sources":["../src/example.ts"],"sourcesContent":[],"mappings":";;;cAEM,SAAS"}
1
+ {"version":3,"file":"example.d.ts","names":[],"sources":["../src/example.ts"],"sourcesContent":[],"mappings":";;;cAEM,SA0BJ,4BAAA,CA1BW"}
package/dist/example.js CHANGED
@@ -1,5 +1,7 @@
1
+ import { defineExample } from "@contractspec/lib.contracts";
2
+
1
3
  //#region src/example.ts
2
- const example = {
4
+ const example = defineExample({
3
5
  meta: {
4
6
  key: "learning-journey-ui-coaching",
5
7
  version: "1.0.0",
@@ -32,7 +34,7 @@ const example = {
32
34
  },
33
35
  mcp: { enabled: true }
34
36
  }
35
- };
37
+ });
36
38
  var example_default = example;
37
39
 
38
40
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"example.js","names":["example: ExampleSpec"],"sources":["../src/example.ts"],"sourcesContent":["import type { ExampleSpec } from '@contractspec/lib.contracts';\n\nconst example: ExampleSpec = {\n meta: {\n key: 'learning-journey-ui-coaching',\n version: '1.0.0',\n title: 'Learning Journey UI — Coaching',\n description:\n 'UI mini-app for coaching patterns: tips, engagement meter, progress.',\n kind: 'ui',\n visibility: 'public',\n stability: 'experimental',\n owners: ['@platform.core'],\n tags: ['learning', 'ui', 'coaching'],\n },\n docs: {\n rootDocId: 'docs.examples.learning-journey-ui-coaching',\n },\n entrypoints: {\n packageName: '@contractspec/example.learning-journey-ui-coaching',\n docs: './docs',\n },\n surfaces: {\n templates: true,\n sandbox: { enabled: true, modes: ['playground', 'markdown'] },\n studio: { enabled: true, installable: true },\n mcp: { enabled: true },\n },\n};\n\nexport default example;\n"],"mappings":";AAEA,MAAMA,UAAuB;CAC3B,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aACE;EACF,MAAM;EACN,YAAY;EACZ,WAAW;EACX,QAAQ,CAAC,iBAAiB;EAC1B,MAAM;GAAC;GAAY;GAAM;GAAW;EACrC;CACD,MAAM,EACJ,WAAW,8CACZ;CACD,aAAa;EACX,aAAa;EACb,MAAM;EACP;CACD,UAAU;EACR,WAAW;EACX,SAAS;GAAE,SAAS;GAAM,OAAO,CAAC,cAAc,WAAW;GAAE;EAC7D,QAAQ;GAAE,SAAS;GAAM,aAAa;GAAM;EAC5C,KAAK,EAAE,SAAS,MAAM;EACvB;CACF;AAED,sBAAe"}
1
+ {"version":3,"file":"example.js","names":[],"sources":["../src/example.ts"],"sourcesContent":["import { defineExample } from '@contractspec/lib.contracts';\n\nconst example = defineExample({\n meta: {\n key: 'learning-journey-ui-coaching',\n version: '1.0.0',\n title: 'Learning Journey UI — Coaching',\n description:\n 'UI mini-app for coaching patterns: tips, engagement meter, progress.',\n kind: 'ui',\n visibility: 'public',\n stability: 'experimental',\n owners: ['@platform.core'],\n tags: ['learning', 'ui', 'coaching'],\n },\n docs: {\n rootDocId: 'docs.examples.learning-journey-ui-coaching',\n },\n entrypoints: {\n packageName: '@contractspec/example.learning-journey-ui-coaching',\n docs: './docs',\n },\n surfaces: {\n templates: true,\n sandbox: { enabled: true, modes: ['playground', 'markdown'] },\n studio: { enabled: true, installable: true },\n mcp: { enabled: true },\n },\n});\n\nexport default example;\n"],"mappings":";;;AAEA,MAAM,UAAU,cAAc;CAC5B,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aACE;EACF,MAAM;EACN,YAAY;EACZ,WAAW;EACX,QAAQ,CAAC,iBAAiB;EAC1B,MAAM;GAAC;GAAY;GAAM;GAAW;EACrC;CACD,MAAM,EACJ,WAAW,8CACZ;CACD,aAAa;EACX,aAAa;EACb,MAAM;EACP;CACD,UAAU;EACR,WAAW;EACX,SAAS;GAAE,SAAS;GAAM,OAAO,CAAC,cAAc,WAAW;GAAE;EAC7D,QAAQ;GAAE,SAAS;GAAM,aAAa;GAAM;EAC5C,KAAK,EAAE,SAAS,MAAM;EACvB;CACF,CAAC;AAEF,sBAAe"}
@@ -1,5 +1,5 @@
1
1
  import { LearningViewProps } from "@contractspec/example.learning-journey-ui-shared";
2
- import * as react_jsx_runtime3 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime2 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/views/Overview.d.ts
5
5
  interface CoachingOverviewProps extends LearningViewProps {
@@ -10,7 +10,7 @@ declare function Overview({
10
10
  progress,
11
11
  onStepComplete,
12
12
  onStart
13
- }: CoachingOverviewProps): react_jsx_runtime3.JSX.Element;
13
+ }: CoachingOverviewProps): react_jsx_runtime2.JSX.Element;
14
14
  //#endregion
15
15
  export { Overview };
16
16
  //# sourceMappingURL=Overview.d.ts.map
@@ -1,12 +1,12 @@
1
1
  import { LearningViewProps } from "@contractspec/example.learning-journey-ui-shared";
2
- import * as react_jsx_runtime5 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime1 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/views/Steps.d.ts
5
5
  declare function Steps({
6
6
  track,
7
7
  progress,
8
8
  onStepComplete
9
- }: LearningViewProps): react_jsx_runtime5.JSX.Element;
9
+ }: LearningViewProps): react_jsx_runtime1.JSX.Element;
10
10
  //#endregion
11
11
  export { Steps };
12
12
  //# sourceMappingURL=Steps.d.ts.map
@@ -1,11 +1,11 @@
1
1
  import { LearningViewProps } from "@contractspec/example.learning-journey-ui-shared";
2
- import * as react_jsx_runtime6 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime3 from "react/jsx-runtime";
3
3
 
4
4
  //#region src/views/Timeline.d.ts
5
5
  declare function Timeline({
6
6
  track,
7
7
  progress
8
- }: LearningViewProps): react_jsx_runtime6.JSX.Element;
8
+ }: LearningViewProps): react_jsx_runtime3.JSX.Element;
9
9
  //#endregion
10
10
  export { Timeline };
11
11
  //# sourceMappingURL=Timeline.d.ts.map
package/package.json CHANGED
@@ -1,9 +1,8 @@
1
1
  {
2
2
  "name": "@contractspec/example.learning-journey-ui-coaching",
3
- "version": "1.46.1",
3
+ "version": "1.48.1",
4
4
  "description": "Contextual coaching UI with tip cards and engagement tracking.",
5
5
  "type": "module",
6
- "main": "./dist/index.js",
7
6
  "types": "./dist/index.d.ts",
8
7
  "exports": {
9
8
  ".": "./dist/index.js",
@@ -36,26 +35,25 @@
36
35
  "test": "bun test"
37
36
  },
38
37
  "dependencies": {
39
- "@contractspec/lib.contracts": "1.46.1",
40
- "@contractspec/example.learning-journey-ui-shared": "1.46.1",
41
- "@contractspec/example.learning-journey-ambient-coach": "1.46.1",
42
- "@contractspec/example.learning-journey-crm-onboarding": "1.46.1",
43
- "@contractspec/module.learning-journey": "1.46.1",
44
- "@contractspec/lib.design-system": "1.46.1",
45
- "@contractspec/lib.ui-kit-web": "1.46.1",
38
+ "@contractspec/lib.contracts": "1.48.1",
39
+ "@contractspec/example.learning-journey-ui-shared": "1.48.1",
40
+ "@contractspec/example.learning-journey-ambient-coach": "1.48.1",
41
+ "@contractspec/example.learning-journey-crm-onboarding": "1.48.1",
42
+ "@contractspec/module.learning-journey": "1.48.1",
43
+ "@contractspec/lib.design-system": "1.48.1",
44
+ "@contractspec/lib.ui-kit-web": "1.48.0",
46
45
  "react": "19.2.3"
47
46
  },
48
47
  "devDependencies": {
49
- "@contractspec/tool.tsdown": "1.46.1",
50
- "@contractspec/tool.typescript": "1.46.1",
51
- "@types/react": "^19.1.6",
52
- "tsdown": "^0.18.3",
48
+ "@contractspec/tool.tsdown": "1.48.0",
49
+ "@contractspec/tool.typescript": "1.48.0",
50
+ "@types/react": "^19.2.8",
51
+ "tsdown": "^0.19.0",
53
52
  "typescript": "^5.9.3"
54
53
  },
55
54
  "peerDependencies": {
56
55
  "react": "^19.2.3"
57
56
  },
58
- "module": "./dist/index.js",
59
57
  "publishConfig": {
60
58
  "exports": {
61
59
  ".": "./dist/index.js",
package/src/example.ts CHANGED
@@ -1,6 +1,6 @@
1
- import type { ExampleSpec } from '@contractspec/lib.contracts';
1
+ import { defineExample } from '@contractspec/lib.contracts';
2
2
 
3
- const example: ExampleSpec = {
3
+ const example = defineExample({
4
4
  meta: {
5
5
  key: 'learning-journey-ui-coaching',
6
6
  version: '1.0.0',
@@ -26,6 +26,6 @@ const example: ExampleSpec = {
26
26
  studio: { enabled: true, installable: true },
27
27
  mcp: { enabled: true },
28
28
  },
29
- };
29
+ });
30
30
 
31
31
  export default example;