@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
@@ -0,0 +1,159 @@
1
+ // src/components/TipCard.tsx
2
+ import { Button } from "@contractspec/lib.design-system";
3
+ import { Card, CardContent } from "@contractspec/lib.ui-kit-web/ui/card";
4
+ import { cn } from "@contractspec/lib.ui-kit-web/ui/utils";
5
+ import { jsxDEV } from "react/jsx-dev-runtime";
6
+ "use client";
7
+ var TIP_ICONS = {
8
+ cash_buffer_too_high: "\uD83D\uDCB0",
9
+ no_savings_goal: "\uD83C\uDFAF",
10
+ irregular_savings: "\uD83D\uDCC5",
11
+ noise_late_evening: "\uD83D\uDD07",
12
+ guest_frequency_high: "\uD83D\uDC65",
13
+ shared_space_conflicts: "\uD83C\uDFE0",
14
+ default: "\uD83D\uDCA1"
15
+ };
16
+ function TipCard({
17
+ step,
18
+ isCompleted,
19
+ isCurrent,
20
+ onComplete,
21
+ onDismiss
22
+ }) {
23
+ const tipId = step.metadata?.tipId ?? "default";
24
+ const icon = TIP_ICONS[tipId] ?? TIP_ICONS.default;
25
+ return /* @__PURE__ */ jsxDEV(Card, {
26
+ className: cn("transition-all", isCompleted && "opacity-60", isCurrent && "ring-2 ring-amber-500"),
27
+ children: /* @__PURE__ */ jsxDEV(CardContent, {
28
+ className: "p-4",
29
+ children: /* @__PURE__ */ jsxDEV("div", {
30
+ className: "flex gap-4",
31
+ children: [
32
+ /* @__PURE__ */ jsxDEV("div", {
33
+ 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"),
34
+ children: isCompleted ? "✓" : icon
35
+ }, undefined, false, undefined, this),
36
+ /* @__PURE__ */ jsxDEV("div", {
37
+ className: "min-w-0 flex-1",
38
+ children: [
39
+ /* @__PURE__ */ jsxDEV("div", {
40
+ className: "flex items-start justify-between gap-2",
41
+ children: [
42
+ /* @__PURE__ */ jsxDEV("h4", {
43
+ className: "font-semibold",
44
+ children: step.title
45
+ }, undefined, false, undefined, this),
46
+ step.xpReward && /* @__PURE__ */ jsxDEV("span", {
47
+ 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"),
48
+ children: [
49
+ "+",
50
+ step.xpReward,
51
+ " XP"
52
+ ]
53
+ }, undefined, true, undefined, this)
54
+ ]
55
+ }, undefined, true, undefined, this),
56
+ /* @__PURE__ */ jsxDEV("p", {
57
+ className: "text-muted-foreground mt-1 text-sm",
58
+ children: step.description
59
+ }, undefined, false, undefined, this),
60
+ !isCompleted && /* @__PURE__ */ jsxDEV("div", {
61
+ className: "mt-3 flex flex-wrap gap-2",
62
+ children: [
63
+ /* @__PURE__ */ jsxDEV(Button, {
64
+ size: "sm",
65
+ onClick: onComplete,
66
+ children: "Take Action"
67
+ }, undefined, false, undefined, this),
68
+ /* @__PURE__ */ jsxDEV(Button, {
69
+ variant: "outline",
70
+ size: "sm",
71
+ onClick: onDismiss,
72
+ children: "Dismiss"
73
+ }, undefined, false, undefined, this)
74
+ ]
75
+ }, undefined, true, undefined, this),
76
+ isCompleted && /* @__PURE__ */ jsxDEV("p", {
77
+ className: "mt-2 text-sm text-green-500",
78
+ children: "✓ Tip acknowledged"
79
+ }, undefined, false, undefined, this)
80
+ ]
81
+ }, undefined, true, undefined, this)
82
+ ]
83
+ }, undefined, true, undefined, this)
84
+ }, undefined, false, undefined, this)
85
+ }, undefined, false, undefined, this);
86
+ }
87
+
88
+ // src/views/Steps.tsx
89
+ import { jsxDEV as jsxDEV2 } from "react/jsx-dev-runtime";
90
+ "use client";
91
+ function Steps({ track, progress, onStepComplete }) {
92
+ const completedSteps = progress.completedStepIds.length;
93
+ const totalSteps = track.steps.length;
94
+ const sortedSteps = [...track.steps].sort((a, b) => {
95
+ const aCompleted = progress.completedStepIds.includes(a.id);
96
+ const bCompleted = progress.completedStepIds.includes(b.id);
97
+ if (aCompleted === bCompleted)
98
+ return 0;
99
+ return aCompleted ? 1 : -1;
100
+ });
101
+ const currentStepId = track.steps.find((s) => !progress.completedStepIds.includes(s.id))?.id;
102
+ return /* @__PURE__ */ jsxDEV2("div", {
103
+ className: "space-y-6",
104
+ children: [
105
+ /* @__PURE__ */ jsxDEV2("div", {
106
+ className: "text-center",
107
+ children: [
108
+ /* @__PURE__ */ jsxDEV2("h2", {
109
+ className: "text-xl font-bold",
110
+ children: "Coaching Tips"
111
+ }, undefined, false, undefined, this),
112
+ /* @__PURE__ */ jsxDEV2("p", {
113
+ className: "text-muted-foreground",
114
+ children: "Review and take action on personalized tips"
115
+ }, undefined, false, undefined, this),
116
+ /* @__PURE__ */ jsxDEV2("p", {
117
+ className: "text-muted-foreground mt-2 text-sm",
118
+ children: [
119
+ completedSteps,
120
+ " of ",
121
+ totalSteps,
122
+ " tips actioned"
123
+ ]
124
+ }, undefined, true, undefined, this)
125
+ ]
126
+ }, undefined, true, undefined, this),
127
+ /* @__PURE__ */ jsxDEV2("div", {
128
+ className: "space-y-3",
129
+ children: sortedSteps.map((step) => {
130
+ const isCompleted = progress.completedStepIds.includes(step.id);
131
+ const isCurrent = step.id === currentStepId;
132
+ return /* @__PURE__ */ jsxDEV2(TipCard, {
133
+ step,
134
+ isCompleted,
135
+ isCurrent,
136
+ onComplete: () => onStepComplete?.(step.id),
137
+ onDismiss: () => onStepComplete?.(step.id)
138
+ }, step.id, false, undefined, this);
139
+ })
140
+ }, undefined, false, undefined, this),
141
+ completedSteps === totalSteps && /* @__PURE__ */ jsxDEV2("div", {
142
+ className: "text-muted-foreground text-center",
143
+ children: [
144
+ /* @__PURE__ */ jsxDEV2("span", {
145
+ className: "text-2xl",
146
+ children: "✨"
147
+ }, undefined, false, undefined, this),
148
+ /* @__PURE__ */ jsxDEV2("p", {
149
+ className: "mt-2",
150
+ children: "All tips have been addressed!"
151
+ }, undefined, false, undefined, this)
152
+ ]
153
+ }, undefined, true, undefined, this)
154
+ ]
155
+ }, undefined, true, undefined, this);
156
+ }
157
+ export {
158
+ Steps
159
+ };
@@ -0,0 +1,266 @@
1
+ // src/components/TipFeed.tsx
2
+ import { cn } from "@contractspec/lib.ui-kit-web/ui/utils";
3
+ import { jsxDEV } from "react/jsx-dev-runtime";
4
+ "use client";
5
+ var TIP_ICONS = {
6
+ cash_buffer_too_high: "\uD83D\uDCB0",
7
+ no_savings_goal: "\uD83C\uDFAF",
8
+ irregular_savings: "\uD83D\uDCC5",
9
+ noise_late_evening: "\uD83D\uDD07",
10
+ guest_frequency_high: "\uD83D\uDC65",
11
+ shared_space_conflicts: "\uD83C\uDFE0",
12
+ default: "\uD83D\uDCA1"
13
+ };
14
+ function TipFeed({ items }) {
15
+ if (items.length === 0) {
16
+ return /* @__PURE__ */ jsxDEV("div", {
17
+ className: "text-muted-foreground py-8 text-center",
18
+ children: "No tips yet. Start engaging with coaching tips!"
19
+ }, undefined, false, undefined, this);
20
+ }
21
+ return /* @__PURE__ */ jsxDEV("div", {
22
+ className: "relative",
23
+ children: [
24
+ /* @__PURE__ */ jsxDEV("div", {
25
+ className: "bg-border absolute top-0 left-4 h-full w-0.5"
26
+ }, undefined, false, undefined, this),
27
+ /* @__PURE__ */ jsxDEV("div", {
28
+ className: "space-y-4",
29
+ children: items.map((item) => {
30
+ const tipId = item.step.metadata?.tipId ?? "default";
31
+ const icon = TIP_ICONS[tipId] ?? TIP_ICONS.default;
32
+ return /* @__PURE__ */ jsxDEV("div", {
33
+ className: "relative flex gap-4 pl-2",
34
+ children: [
35
+ /* @__PURE__ */ jsxDEV("div", {
36
+ 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"),
37
+ children: item.isCompleted ? "✓" : icon
38
+ }, undefined, false, undefined, this),
39
+ /* @__PURE__ */ jsxDEV("div", {
40
+ className: "bg-card flex-1 rounded-lg border p-3",
41
+ children: [
42
+ /* @__PURE__ */ jsxDEV("div", {
43
+ className: "flex items-start justify-between gap-2",
44
+ children: [
45
+ /* @__PURE__ */ jsxDEV("div", {
46
+ children: [
47
+ /* @__PURE__ */ jsxDEV("p", {
48
+ className: "font-medium",
49
+ children: item.step.title
50
+ }, undefined, false, undefined, this),
51
+ /* @__PURE__ */ jsxDEV("p", {
52
+ className: "text-muted-foreground mt-0.5 text-sm",
53
+ children: item.step.description
54
+ }, undefined, false, undefined, this)
55
+ ]
56
+ }, undefined, true, undefined, this),
57
+ item.step.xpReward && /* @__PURE__ */ jsxDEV("span", {
58
+ className: cn("shrink-0 text-xs font-medium", item.isCompleted ? "text-green-500" : "text-muted-foreground"),
59
+ children: [
60
+ "+",
61
+ item.step.xpReward,
62
+ " XP"
63
+ ]
64
+ }, undefined, true, undefined, this)
65
+ ]
66
+ }, undefined, true, undefined, this),
67
+ /* @__PURE__ */ jsxDEV("div", {
68
+ className: "text-muted-foreground mt-2 flex items-center gap-2 text-xs",
69
+ children: item.isCompleted ? /* @__PURE__ */ jsxDEV("span", {
70
+ className: "text-green-500",
71
+ children: [
72
+ "✓ Completed",
73
+ item.completedAt && ` • ${item.completedAt}`
74
+ ]
75
+ }, undefined, true, undefined, this) : /* @__PURE__ */ jsxDEV("span", {
76
+ children: "Pending action"
77
+ }, undefined, false, undefined, this)
78
+ }, undefined, false, undefined, this)
79
+ ]
80
+ }, undefined, true, undefined, this)
81
+ ]
82
+ }, item.step.id, true, undefined, this);
83
+ })
84
+ }, undefined, false, undefined, this)
85
+ ]
86
+ }, undefined, true, undefined, this);
87
+ }
88
+
89
+ // src/views/Timeline.tsx
90
+ import {
91
+ Card,
92
+ CardContent,
93
+ CardHeader,
94
+ CardTitle
95
+ } from "@contractspec/lib.ui-kit-web/ui/card";
96
+ import { jsxDEV as jsxDEV2 } from "react/jsx-dev-runtime";
97
+ "use client";
98
+ function Timeline({ track, progress }) {
99
+ const feedItems = track.steps.map((step) => ({
100
+ step,
101
+ isCompleted: progress.completedStepIds.includes(step.id),
102
+ completedAt: progress.completedStepIds.includes(step.id) ? "Recently" : undefined
103
+ })).sort((a, b) => {
104
+ if (a.isCompleted && !b.isCompleted)
105
+ return -1;
106
+ if (!a.isCompleted && b.isCompleted)
107
+ return 1;
108
+ return 0;
109
+ });
110
+ const completedCount = feedItems.filter((f) => f.isCompleted).length;
111
+ const pendingCount = feedItems.length - completedCount;
112
+ return /* @__PURE__ */ jsxDEV2("div", {
113
+ className: "space-y-6",
114
+ children: [
115
+ /* @__PURE__ */ jsxDEV2("div", {
116
+ className: "text-center",
117
+ children: [
118
+ /* @__PURE__ */ jsxDEV2("h2", {
119
+ className: "text-xl font-bold",
120
+ children: "Activity Timeline"
121
+ }, undefined, false, undefined, this),
122
+ /* @__PURE__ */ jsxDEV2("p", {
123
+ className: "text-muted-foreground",
124
+ children: "Your coaching journey and tip history"
125
+ }, undefined, false, undefined, this)
126
+ ]
127
+ }, undefined, true, undefined, this),
128
+ /* @__PURE__ */ jsxDEV2("div", {
129
+ className: "grid grid-cols-2 gap-4",
130
+ children: [
131
+ /* @__PURE__ */ jsxDEV2(Card, {
132
+ children: /* @__PURE__ */ jsxDEV2(CardContent, {
133
+ className: "p-4 text-center",
134
+ children: [
135
+ /* @__PURE__ */ jsxDEV2("div", {
136
+ className: "text-2xl font-bold text-green-500",
137
+ children: completedCount
138
+ }, undefined, false, undefined, this),
139
+ /* @__PURE__ */ jsxDEV2("div", {
140
+ className: "text-muted-foreground text-sm",
141
+ children: "Tips Actioned"
142
+ }, undefined, false, undefined, this)
143
+ ]
144
+ }, undefined, true, undefined, this)
145
+ }, undefined, false, undefined, this),
146
+ /* @__PURE__ */ jsxDEV2(Card, {
147
+ children: /* @__PURE__ */ jsxDEV2(CardContent, {
148
+ className: "p-4 text-center",
149
+ children: [
150
+ /* @__PURE__ */ jsxDEV2("div", {
151
+ className: "text-2xl font-bold text-amber-500",
152
+ children: pendingCount
153
+ }, undefined, false, undefined, this),
154
+ /* @__PURE__ */ jsxDEV2("div", {
155
+ className: "text-muted-foreground text-sm",
156
+ children: "Tips Pending"
157
+ }, undefined, false, undefined, this)
158
+ ]
159
+ }, undefined, true, undefined, this)
160
+ }, undefined, false, undefined, this)
161
+ ]
162
+ }, undefined, true, undefined, this),
163
+ /* @__PURE__ */ jsxDEV2(Card, {
164
+ children: [
165
+ /* @__PURE__ */ jsxDEV2(CardHeader, {
166
+ children: /* @__PURE__ */ jsxDEV2(CardTitle, {
167
+ className: "flex items-center gap-2",
168
+ children: [
169
+ /* @__PURE__ */ jsxDEV2("span", {
170
+ children: "\uD83D\uDCDD"
171
+ }, undefined, false, undefined, this),
172
+ /* @__PURE__ */ jsxDEV2("span", {
173
+ children: "Coaching Feed"
174
+ }, undefined, false, undefined, this)
175
+ ]
176
+ }, undefined, true, undefined, this)
177
+ }, undefined, false, undefined, this),
178
+ /* @__PURE__ */ jsxDEV2(CardContent, {
179
+ children: /* @__PURE__ */ jsxDEV2(TipFeed, {
180
+ items: feedItems
181
+ }, undefined, false, undefined, this)
182
+ }, undefined, false, undefined, this)
183
+ ]
184
+ }, undefined, true, undefined, this),
185
+ /* @__PURE__ */ jsxDEV2(Card, {
186
+ children: [
187
+ /* @__PURE__ */ jsxDEV2(CardHeader, {
188
+ children: /* @__PURE__ */ jsxDEV2(CardTitle, {
189
+ className: "flex items-center gap-2",
190
+ children: [
191
+ /* @__PURE__ */ jsxDEV2("span", {
192
+ children: "\uD83D\uDCC8"
193
+ }, undefined, false, undefined, this),
194
+ /* @__PURE__ */ jsxDEV2("span", {
195
+ children: "Journey Stats"
196
+ }, undefined, false, undefined, this)
197
+ ]
198
+ }, undefined, true, undefined, this)
199
+ }, undefined, false, undefined, this),
200
+ /* @__PURE__ */ jsxDEV2(CardContent, {
201
+ children: /* @__PURE__ */ jsxDEV2("div", {
202
+ className: "space-y-4",
203
+ children: [
204
+ /* @__PURE__ */ jsxDEV2("div", {
205
+ className: "flex items-center justify-between",
206
+ children: [
207
+ /* @__PURE__ */ jsxDEV2("span", {
208
+ className: "text-muted-foreground",
209
+ children: "Total Tips"
210
+ }, undefined, false, undefined, this),
211
+ /* @__PURE__ */ jsxDEV2("span", {
212
+ className: "font-semibold",
213
+ children: track.steps.length
214
+ }, undefined, false, undefined, this)
215
+ ]
216
+ }, undefined, true, undefined, this),
217
+ /* @__PURE__ */ jsxDEV2("div", {
218
+ className: "flex items-center justify-between",
219
+ children: [
220
+ /* @__PURE__ */ jsxDEV2("span", {
221
+ className: "text-muted-foreground",
222
+ children: "Completed"
223
+ }, undefined, false, undefined, this),
224
+ /* @__PURE__ */ jsxDEV2("span", {
225
+ className: "font-semibold text-green-500",
226
+ children: completedCount
227
+ }, undefined, false, undefined, this)
228
+ ]
229
+ }, undefined, true, undefined, this),
230
+ /* @__PURE__ */ jsxDEV2("div", {
231
+ className: "flex items-center justify-between",
232
+ children: [
233
+ /* @__PURE__ */ jsxDEV2("span", {
234
+ className: "text-muted-foreground",
235
+ children: "XP Earned"
236
+ }, undefined, false, undefined, this),
237
+ /* @__PURE__ */ jsxDEV2("span", {
238
+ className: "font-semibold text-orange-500",
239
+ children: progress.xpEarned
240
+ }, undefined, false, undefined, this)
241
+ ]
242
+ }, undefined, true, undefined, this),
243
+ /* @__PURE__ */ jsxDEV2("div", {
244
+ className: "flex items-center justify-between",
245
+ children: [
246
+ /* @__PURE__ */ jsxDEV2("span", {
247
+ className: "text-muted-foreground",
248
+ children: "Current Streak"
249
+ }, undefined, false, undefined, this),
250
+ /* @__PURE__ */ jsxDEV2("span", {
251
+ className: "font-semibold",
252
+ children: progress.streakDays > 0 ? `\uD83D\uDD25 ${progress.streakDays} days` : "Start today!"
253
+ }, undefined, false, undefined, this)
254
+ ]
255
+ }, undefined, true, undefined, this)
256
+ ]
257
+ }, undefined, true, undefined, this)
258
+ }, undefined, false, undefined, this)
259
+ ]
260
+ }, undefined, true, undefined, this)
261
+ ]
262
+ }, undefined, true, undefined, this);
263
+ }
264
+ export {
265
+ Timeline
266
+ };