@contractspec/example.learning-journey-ui-onboarding 3.7.6 → 3.7.7

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 (56) hide show
  1. package/.turbo/turbo-build.log +3 -3
  2. package/AGENTS.md +50 -24
  3. package/README.md +66 -26
  4. package/dist/OnboardingMiniApp.js +280 -280
  5. package/dist/browser/OnboardingMiniApp.js +280 -280
  6. package/dist/browser/components/CodeSnippet.js +4 -4
  7. package/dist/browser/components/JourneyMap.js +1 -1
  8. package/dist/browser/components/StepChecklist.js +6 -6
  9. package/dist/browser/components/index.js +11 -11
  10. package/dist/browser/index.js +285 -284
  11. package/dist/browser/views/Overview.js +14 -14
  12. package/dist/browser/views/Progress.js +9 -9
  13. package/dist/browser/views/Steps.js +8 -8
  14. package/dist/browser/views/Timeline.js +6 -6
  15. package/dist/browser/views/index.js +276 -276
  16. package/dist/components/CodeSnippet.js +4 -4
  17. package/dist/components/JourneyMap.js +1 -1
  18. package/dist/components/StepChecklist.js +6 -6
  19. package/dist/components/index.d.ts +1 -1
  20. package/dist/components/index.js +11 -11
  21. package/dist/index.d.ts +4 -4
  22. package/dist/index.js +285 -284
  23. package/dist/node/OnboardingMiniApp.js +280 -280
  24. package/dist/node/components/CodeSnippet.js +4 -4
  25. package/dist/node/components/JourneyMap.js +1 -1
  26. package/dist/node/components/StepChecklist.js +6 -6
  27. package/dist/node/components/index.js +11 -11
  28. package/dist/node/index.js +285 -284
  29. package/dist/node/views/Overview.js +14 -14
  30. package/dist/node/views/Progress.js +9 -9
  31. package/dist/node/views/Steps.js +8 -8
  32. package/dist/node/views/Timeline.js +6 -6
  33. package/dist/node/views/index.js +276 -276
  34. package/dist/views/Overview.js +14 -14
  35. package/dist/views/Progress.js +9 -9
  36. package/dist/views/Steps.js +8 -8
  37. package/dist/views/Timeline.js +6 -6
  38. package/dist/views/index.d.ts +1 -1
  39. package/dist/views/index.js +276 -276
  40. package/package.json +10 -10
  41. package/src/OnboardingMiniApp.tsx +70 -70
  42. package/src/components/CodeSnippet.tsx +43 -43
  43. package/src/components/JourneyMap.tsx +70 -70
  44. package/src/components/StepChecklist.tsx +118 -118
  45. package/src/components/index.ts +1 -1
  46. package/src/docs/learning-journey-ui-onboarding.docblock.ts +11 -11
  47. package/src/example.ts +25 -25
  48. package/src/index.ts +5 -6
  49. package/src/learning-journey-ui-onboarding.feature.ts +12 -12
  50. package/src/views/Overview.tsx +182 -182
  51. package/src/views/Progress.tsx +167 -167
  52. package/src/views/Steps.tsx +79 -79
  53. package/src/views/Timeline.tsx +126 -126
  54. package/src/views/index.ts +1 -1
  55. package/tsconfig.json +7 -8
  56. package/tsdown.config.js +7 -13
@@ -5,132 +5,132 @@ import { cn } from '@contractspec/lib.ui-kit-core';
5
5
  import type { LearningJourneyStepSpec } from '@contractspec/module.learning-journey/track-spec';
6
6
 
7
7
  interface StepChecklistProps {
8
- step: LearningJourneyStepSpec;
9
- stepNumber: number;
10
- isCompleted: boolean;
11
- isCurrent: boolean;
12
- isExpanded: boolean;
13
- onToggle: () => void;
14
- onComplete?: () => void;
8
+ step: LearningJourneyStepSpec;
9
+ stepNumber: number;
10
+ isCompleted: boolean;
11
+ isCurrent: boolean;
12
+ isExpanded: boolean;
13
+ onToggle: () => void;
14
+ onComplete?: () => void;
15
15
  }
16
16
 
17
17
  export function StepChecklist({
18
- step,
19
- stepNumber,
20
- isCompleted,
21
- isCurrent,
22
- isExpanded,
23
- onToggle,
24
- onComplete,
18
+ step,
19
+ stepNumber,
20
+ isCompleted,
21
+ isCurrent,
22
+ isExpanded,
23
+ onToggle,
24
+ onComplete,
25
25
  }: StepChecklistProps) {
26
- return (
27
- <div
28
- className={cn(
29
- 'rounded-xl border transition-all',
30
- isCompleted && 'border-green-500/50 bg-green-500/5',
31
- isCurrent && !isCompleted && 'border-violet-500 bg-violet-500/5',
32
- !isCompleted && !isCurrent && 'border-border'
33
- )}
34
- >
35
- {/* Header */}
36
- <button
37
- type="button"
38
- className="flex w-full items-center gap-4 p-4 text-left"
39
- onClick={onToggle}
40
- >
41
- {/* Checkbox/Number */}
42
- <div
43
- className={cn(
44
- 'flex h-8 w-8 shrink-0 items-center justify-center rounded-full border-2 text-sm font-semibold transition-colors',
45
- isCompleted && 'border-green-500 bg-green-500 text-white',
46
- isCurrent && !isCompleted && 'border-violet-500 text-violet-500',
47
- !isCompleted &&
48
- !isCurrent &&
49
- 'border-muted-foreground text-muted-foreground'
50
- )}
51
- >
52
- {isCompleted ? '✓' : stepNumber}
53
- </div>
26
+ return (
27
+ <div
28
+ className={cn(
29
+ 'rounded-xl border transition-all',
30
+ isCompleted && 'border-green-500/50 bg-green-500/5',
31
+ isCurrent && !isCompleted && 'border-violet-500 bg-violet-500/5',
32
+ !isCompleted && !isCurrent && 'border-border'
33
+ )}
34
+ >
35
+ {/* Header */}
36
+ <button
37
+ type="button"
38
+ className="flex w-full items-center gap-4 p-4 text-left"
39
+ onClick={onToggle}
40
+ >
41
+ {/* Checkbox/Number */}
42
+ <div
43
+ className={cn(
44
+ 'flex h-8 w-8 shrink-0 items-center justify-center rounded-full border-2 font-semibold text-sm transition-colors',
45
+ isCompleted && 'border-green-500 bg-green-500 text-white',
46
+ isCurrent && !isCompleted && 'border-violet-500 text-violet-500',
47
+ !isCompleted &&
48
+ !isCurrent &&
49
+ 'border-muted-foreground text-muted-foreground'
50
+ )}
51
+ >
52
+ {isCompleted ? '✓' : stepNumber}
53
+ </div>
54
54
 
55
- {/* Title & Description */}
56
- <div className="min-w-0 flex-1">
57
- <h4
58
- className={cn(
59
- 'font-semibold',
60
- isCompleted && 'text-green-500',
61
- isCurrent && !isCompleted && 'text-foreground',
62
- !isCompleted && !isCurrent && 'text-muted-foreground'
63
- )}
64
- >
65
- {step.title}
66
- </h4>
67
- {!isExpanded && step.description && (
68
- <p className="text-muted-foreground truncate text-sm">
69
- {step.description}
70
- </p>
71
- )}
72
- </div>
55
+ {/* Title & Description */}
56
+ <div className="min-w-0 flex-1">
57
+ <h4
58
+ className={cn(
59
+ 'font-semibold',
60
+ isCompleted && 'text-green-500',
61
+ isCurrent && !isCompleted && 'text-foreground',
62
+ !isCompleted && !isCurrent && 'text-muted-foreground'
63
+ )}
64
+ >
65
+ {step.title}
66
+ </h4>
67
+ {!isExpanded && step.description && (
68
+ <p className="truncate text-muted-foreground text-sm">
69
+ {step.description}
70
+ </p>
71
+ )}
72
+ </div>
73
73
 
74
- {/* XP Badge */}
75
- {step.xpReward && (
76
- <span
77
- className={cn(
78
- 'shrink-0 rounded-full px-2 py-1 text-xs font-semibold',
79
- isCompleted
80
- ? 'bg-green-500/10 text-green-500'
81
- : 'bg-muted text-muted-foreground'
82
- )}
83
- >
84
- +{step.xpReward} XP
85
- </span>
86
- )}
74
+ {/* XP Badge */}
75
+ {step.xpReward && (
76
+ <span
77
+ className={cn(
78
+ 'shrink-0 rounded-full px-2 py-1 font-semibold text-xs',
79
+ isCompleted
80
+ ? 'bg-green-500/10 text-green-500'
81
+ : 'bg-muted text-muted-foreground'
82
+ )}
83
+ >
84
+ +{step.xpReward} XP
85
+ </span>
86
+ )}
87
87
 
88
- {/* Expand indicator */}
89
- <span
90
- className={cn(
91
- 'shrink-0 transition-transform',
92
- isExpanded && 'rotate-180'
93
- )}
94
- >
95
-
96
- </span>
97
- </button>
88
+ {/* Expand indicator */}
89
+ <span
90
+ className={cn(
91
+ 'shrink-0 transition-transform',
92
+ isExpanded && 'rotate-180'
93
+ )}
94
+ >
95
+
96
+ </span>
97
+ </button>
98
98
 
99
- {/* Expanded Content */}
100
- {isExpanded && (
101
- <div className="border-t px-4 py-4">
102
- {step.description && (
103
- <p className="text-muted-foreground mb-4">{step.description}</p>
104
- )}
99
+ {/* Expanded Content */}
100
+ {isExpanded && (
101
+ <div className="border-t px-4 py-4">
102
+ {step.description && (
103
+ <p className="mb-4 text-muted-foreground">{step.description}</p>
104
+ )}
105
105
 
106
- {step.instructions && (
107
- <div className="bg-muted mb-4 rounded-lg p-4">
108
- <p className="mb-2 text-sm font-medium">Instructions:</p>
109
- <p className="text-muted-foreground text-sm">
110
- {step.instructions}
111
- </p>
112
- </div>
113
- )}
106
+ {step.instructions && (
107
+ <div className="mb-4 rounded-lg bg-muted p-4">
108
+ <p className="mb-2 font-medium text-sm">Instructions:</p>
109
+ <p className="text-muted-foreground text-sm">
110
+ {step.instructions}
111
+ </p>
112
+ </div>
113
+ )}
114
114
 
115
- {/* Action buttons */}
116
- <div className="flex flex-wrap gap-2">
117
- {step.actionUrl && (
118
- <Button
119
- variant="outline"
120
- size="sm"
121
- onClick={() => window.open(step.actionUrl, '_blank')}
122
- >
123
- {step.actionLabel ?? 'Try it'}
124
- </Button>
125
- )}
126
- {!isCompleted && (
127
- <Button size="sm" onClick={onComplete}>
128
- Mark as Complete
129
- </Button>
130
- )}
131
- </div>
132
- </div>
133
- )}
134
- </div>
135
- );
115
+ {/* Action buttons */}
116
+ <div className="flex flex-wrap gap-2">
117
+ {step.actionUrl && (
118
+ <Button
119
+ variant="outline"
120
+ size="sm"
121
+ onClick={() => window.open(step.actionUrl, '_blank')}
122
+ >
123
+ {step.actionLabel ?? 'Try it'}
124
+ </Button>
125
+ )}
126
+ {!isCompleted && (
127
+ <Button size="sm" onClick={onComplete}>
128
+ Mark as Complete
129
+ </Button>
130
+ )}
131
+ </div>
132
+ </div>
133
+ )}
134
+ </div>
135
+ );
136
136
  }
@@ -1,3 +1,3 @@
1
- export { StepChecklist } from './StepChecklist';
2
1
  export { CodeSnippet } from './CodeSnippet';
3
2
  export { JourneyMap } from './JourneyMap';
3
+ export { StepChecklist } from './StepChecklist';
@@ -2,17 +2,17 @@ import type { DocBlock } from '@contractspec/lib.contracts-spec/docs';
2
2
  import { registerDocBlocks } from '@contractspec/lib.contracts-spec/docs';
3
3
 
4
4
  const blocks: DocBlock[] = [
5
- {
6
- id: 'docs.examples.learning-journey-ui-onboarding',
7
- title: 'Learning Journey UI — Onboarding',
8
- summary:
9
- 'UI mini-app components for onboarding: checklists, snippets, and journey mapping.',
10
- kind: 'reference',
11
- visibility: 'public',
12
- route: '/docs/examples/learning-journey-ui-onboarding',
13
- tags: ['learning', 'ui', 'onboarding'],
14
- body: `## Includes\n- Onboarding mini-app shell\n- Views: overview, steps, progress, timeline\n- Components: step checklist, code snippet, journey map\n\n## Notes\n- Compose with design system components.\n- Ensure accessible labels and keyboard navigation.`,
15
- },
5
+ {
6
+ id: 'docs.examples.learning-journey-ui-onboarding',
7
+ title: 'Learning Journey UI — Onboarding',
8
+ summary:
9
+ 'UI mini-app components for onboarding: checklists, snippets, and journey mapping.',
10
+ kind: 'reference',
11
+ visibility: 'public',
12
+ route: '/docs/examples/learning-journey-ui-onboarding',
13
+ tags: ['learning', 'ui', 'onboarding'],
14
+ body: `## Includes\n- Onboarding mini-app shell\n- Views: overview, steps, progress, timeline\n- Components: step checklist, code snippet, journey map\n\n## Notes\n- Compose with design system components.\n- Ensure accessible labels and keyboard navigation.`,
15
+ },
16
16
  ];
17
17
 
18
18
  registerDocBlocks(blocks);
package/src/example.ts CHANGED
@@ -1,31 +1,31 @@
1
1
  import { defineExample } from '@contractspec/lib.contracts-spec';
2
2
 
3
3
  const example = defineExample({
4
- meta: {
5
- key: 'learning-journey-ui-onboarding',
6
- version: '1.0.0',
7
- title: 'Learning Journey UI — Onboarding',
8
- description:
9
- 'UI mini-app for onboarding patterns: checklists, code snippets, journey map.',
10
- kind: 'ui',
11
- visibility: 'public',
12
- stability: 'experimental',
13
- owners: ['@platform.core'],
14
- tags: ['learning', 'ui', 'onboarding'],
15
- },
16
- docs: {
17
- rootDocId: 'docs.examples.learning-journey-ui-onboarding',
18
- },
19
- entrypoints: {
20
- packageName: '@contractspec/example.learning-journey-ui-onboarding',
21
- docs: './docs',
22
- },
23
- surfaces: {
24
- templates: true,
25
- sandbox: { enabled: true, modes: ['playground', 'markdown'] },
26
- studio: { enabled: true, installable: true },
27
- mcp: { enabled: true },
28
- },
4
+ meta: {
5
+ key: 'learning-journey-ui-onboarding',
6
+ version: '1.0.0',
7
+ title: 'Learning Journey UI — Onboarding',
8
+ description:
9
+ 'UI mini-app for onboarding patterns: checklists, code snippets, journey map.',
10
+ kind: 'ui',
11
+ visibility: 'public',
12
+ stability: 'experimental',
13
+ owners: ['@platform.core'],
14
+ tags: ['learning', 'ui', 'onboarding'],
15
+ },
16
+ docs: {
17
+ rootDocId: 'docs.examples.learning-journey-ui-onboarding',
18
+ },
19
+ entrypoints: {
20
+ packageName: '@contractspec/example.learning-journey-ui-onboarding',
21
+ docs: './docs',
22
+ },
23
+ surfaces: {
24
+ templates: true,
25
+ sandbox: { enabled: true, modes: ['playground', 'markdown'] },
26
+ studio: { enabled: true, installable: true },
27
+ mcp: { enabled: true },
28
+ },
29
29
  });
30
30
 
31
31
  export default example;
package/src/index.ts CHANGED
@@ -1,11 +1,10 @@
1
1
  // Main mini-app
2
- export { OnboardingMiniApp } from './OnboardingMiniApp';
3
-
4
- // Views
5
- export { Overview, Steps, Progress, Timeline } from './views';
6
2
 
7
3
  // Components
8
- export { StepChecklist, CodeSnippet, JourneyMap } from './components';
9
- export * from './learning-journey-ui-onboarding.feature';
4
+ export { CodeSnippet, JourneyMap, StepChecklist } from './components';
10
5
  export { default as example } from './example';
6
+ export * from './learning-journey-ui-onboarding.feature';
7
+ export { OnboardingMiniApp } from './OnboardingMiniApp';
8
+ // Views
9
+ export { Overview, Progress, Steps, Timeline } from './views';
11
10
  import './docs';
@@ -1,17 +1,17 @@
1
1
  import { defineFeature } from '@contractspec/lib.contracts-spec';
2
2
 
3
3
  export const LearningJourneyUiOnboardingFeature = defineFeature({
4
- meta: {
5
- key: 'learning-journey-ui-onboarding',
6
- version: '1.0.0',
7
- title: 'Learning Journey UI: Onboarding',
8
- description:
9
- 'Developer onboarding UI with checklists, journey maps, and step-by-step progress',
10
- domain: 'learning-journey',
11
- owners: ['@examples'],
12
- tags: ['learning', 'ui', 'onboarding', 'checklists'],
13
- stability: 'experimental',
14
- },
4
+ meta: {
5
+ key: 'learning-journey-ui-onboarding',
6
+ version: '1.0.0',
7
+ title: 'Learning Journey UI: Onboarding',
8
+ description:
9
+ 'Developer onboarding UI with checklists, journey maps, and step-by-step progress',
10
+ domain: 'learning-journey',
11
+ owners: ['@examples'],
12
+ tags: ['learning', 'ui', 'onboarding', 'checklists'],
13
+ stability: 'experimental',
14
+ },
15
15
 
16
- docs: ['docs.examples.learning-journey-ui-onboarding'],
16
+ docs: ['docs.examples.learning-journey-ui-onboarding'],
17
17
  });