@forwardimpact/pathway 0.22.0 → 0.23.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.
Files changed (78) hide show
  1. package/bin/fit-pathway.js +8 -4
  2. package/package.json +6 -2
  3. package/src/commands/agent.js +6 -3
  4. package/src/commands/behaviour.js +11 -1
  5. package/src/commands/build.js +11 -2
  6. package/src/commands/command-factory.js +4 -2
  7. package/src/commands/dev.js +9 -2
  8. package/src/commands/discipline.js +25 -10
  9. package/src/commands/driver.js +11 -1
  10. package/src/commands/job.js +127 -28
  11. package/src/commands/level.js +25 -3
  12. package/src/commands/skill.js +11 -1
  13. package/src/commands/stage.js +11 -1
  14. package/src/commands/tool.js +6 -3
  15. package/src/commands/track.js +20 -4
  16. package/src/components/card.js +8 -104
  17. package/src/components/comparison-radar.js +1 -1
  18. package/src/components/detail.js +16 -118
  19. package/src/components/error-page.js +8 -68
  20. package/src/components/grid.js +12 -106
  21. package/src/components/list.js +7 -116
  22. package/src/components/nav.js +7 -60
  23. package/src/css/bundles/app.css +25 -21
  24. package/src/css/bundles/handout.css +33 -33
  25. package/src/css/bundles/slides.css +25 -25
  26. package/src/formatters/discipline/markdown.js +16 -1
  27. package/src/formatters/interview/shared.js +3 -3
  28. package/src/formatters/job/description.js +2 -2
  29. package/src/formatters/progress/shared.js +3 -3
  30. package/src/formatters/skill/shared.js +1 -1
  31. package/src/formatters/track/markdown.js +14 -0
  32. package/src/formatters/track/shared.js +1 -1
  33. package/src/handout.html +32 -13
  34. package/src/index.html +32 -13
  35. package/src/lib/error-boundary.js +3 -66
  36. package/src/lib/errors.js +7 -45
  37. package/src/lib/job-cache.js +1 -1
  38. package/src/lib/markdown.js +2 -109
  39. package/src/lib/reactive.js +7 -73
  40. package/src/lib/render.js +49 -197
  41. package/src/lib/router-core.js +2 -156
  42. package/src/lib/router-pages.js +2 -11
  43. package/src/lib/router-slides.js +2 -197
  44. package/src/lib/state.js +14 -63
  45. package/src/lib/utils.js +3 -10
  46. package/src/lib/yaml-loader.js +13 -71
  47. package/src/pages/agent-builder.js +1 -1
  48. package/src/pages/assessment-results.js +1 -1
  49. package/src/pages/job-builder.js +1 -1
  50. package/src/pages/job.js +1 -1
  51. package/src/pages/skill.js +1 -1
  52. package/src/slide-main.js +1 -1
  53. package/src/slides/index.js +1 -1
  54. package/src/slides/job.js +1 -1
  55. package/src/slides/overview.js +1 -1
  56. package/src/slides.html +32 -13
  57. package/src/css/base.css +0 -56
  58. package/src/css/components/badges.css +0 -232
  59. package/src/css/components/buttons.css +0 -101
  60. package/src/css/components/forms.css +0 -191
  61. package/src/css/components/layout.css +0 -218
  62. package/src/css/components/nav.css +0 -206
  63. package/src/css/components/progress.css +0 -166
  64. package/src/css/components/states.css +0 -82
  65. package/src/css/components/surfaces.css +0 -347
  66. package/src/css/components/tables.css +0 -362
  67. package/src/css/components/top-bar.css +0 -180
  68. package/src/css/components/typography.css +0 -121
  69. package/src/css/components/utilities.css +0 -41
  70. package/src/css/pages/detail.css +0 -119
  71. package/src/css/reset.css +0 -50
  72. package/src/css/tokens.css +0 -162
  73. package/src/css/views/handout.css +0 -30
  74. package/src/css/views/print.css +0 -634
  75. package/src/css/views/slide-animations.css +0 -113
  76. package/src/css/views/slide-base.css +0 -331
  77. package/src/css/views/slide-sections.css +0 -597
  78. package/src/css/views/slide-tables.css +0 -275
@@ -1,597 +0,0 @@
1
- /**
2
- * Slide Section Styles
3
- *
4
- * Section and content formatting for slides.
5
- */
6
-
7
- @layer slides {
8
- /* Sections */
9
- .slide-section {
10
- margin-bottom: var(--space-xl);
11
- page-break-inside: avoid;
12
- background: rgba(255, 255, 255, 0.7);
13
- backdrop-filter: blur(10px);
14
- border-radius: var(--radius-lg);
15
- padding: var(--space-lg);
16
- border: 1px solid rgba(59, 130, 246, 0.1);
17
- box-shadow:
18
- 0 2px 12px rgba(59, 130, 246, 0.06),
19
- 0 1px 4px rgba(147, 51, 234, 0.04);
20
- transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
21
- position: relative;
22
- }
23
-
24
- .slide-section:hover {
25
- box-shadow:
26
- 0 4px 20px rgba(59, 130, 246, 0.1),
27
- 0 2px 8px rgba(147, 51, 234, 0.08);
28
- transform: translateY(-2px);
29
- }
30
-
31
- .slide-section-title {
32
- font-size: var(--font-size-xl);
33
- font-weight: 600;
34
- margin: 0 0 var(--space-md);
35
- color: var(--color-text);
36
- border-bottom: 2px solid transparent;
37
- border-image: linear-gradient(
38
- 90deg,
39
- rgba(59, 130, 246, 0.4),
40
- rgba(147, 51, 234, 0.4)
41
- )
42
- 1;
43
- padding-bottom: var(--space-sm);
44
- position: relative;
45
- }
46
-
47
- .slide-section-title .gradient-text {
48
- background: linear-gradient(135deg, #1e40af, #7c3aed);
49
- -webkit-background-clip: text;
50
- -webkit-text-fill-color: transparent;
51
- background-clip: text;
52
- }
53
-
54
- .slide-section-content {
55
- padding: var(--space-md) 0;
56
- }
57
-
58
- /* Stats grid */
59
- .slide-stats {
60
- display: grid;
61
- grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
62
- gap: var(--space-md);
63
- margin-bottom: var(--space-xl);
64
- }
65
-
66
- .slide-stat {
67
- background: linear-gradient(
68
- 135deg,
69
- rgba(255, 255, 255, 0.95) 0%,
70
- rgba(248, 250, 252, 0.9) 100%
71
- );
72
- backdrop-filter: blur(10px);
73
- padding: var(--space-md);
74
- border-radius: var(--radius-lg);
75
- text-align: center;
76
- border: 1px solid rgba(59, 130, 246, 0.15);
77
- box-shadow:
78
- 0 4px 12px rgba(59, 130, 246, 0.08),
79
- 0 2px 6px rgba(147, 51, 234, 0.05);
80
- transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
81
- position: relative;
82
- overflow: hidden;
83
- }
84
-
85
- .slide-stat::before {
86
- content: "";
87
- position: absolute;
88
- top: 0;
89
- left: 0;
90
- right: 0;
91
- height: 3px;
92
- background: linear-gradient(90deg, #3b82f6, #9333ea);
93
- opacity: 0.6;
94
- }
95
-
96
- .slide-stat:hover {
97
- transform: translateY(-4px) scale(1.02);
98
- box-shadow:
99
- 0 8px 24px rgba(59, 130, 246, 0.15),
100
- 0 4px 12px rgba(147, 51, 234, 0.1);
101
- border-color: rgba(59, 130, 246, 0.3);
102
- }
103
-
104
- .slide-stat-value {
105
- font-size: var(--font-size-2xl);
106
- font-weight: 700;
107
- background: linear-gradient(135deg, #3b82f6, #9333ea);
108
- -webkit-background-clip: text;
109
- -webkit-text-fill-color: transparent;
110
- background-clip: text;
111
- line-height: 1.2;
112
- }
113
-
114
- .slide-stat-label {
115
- font-size: var(--font-size-sm);
116
- color: var(--color-text-muted);
117
- text-transform: uppercase;
118
- letter-spacing: 0.025em;
119
- margin-top: var(--space-xs);
120
- font-weight: 500;
121
- }
122
-
123
- /* Skill matrix */
124
- .slide-skill-matrix {
125
- width: 100%;
126
- }
127
-
128
- .slide-skill-row {
129
- display: grid;
130
- grid-template-columns: 2fr 100px 120px 1fr;
131
- gap: var(--space-md);
132
- padding: var(--space-sm) var(--space-md);
133
- border-bottom: 1px solid rgba(59, 130, 246, 0.1);
134
- align-items: center;
135
- background: rgba(255, 255, 255, 0.5);
136
- backdrop-filter: blur(5px);
137
- margin-bottom: var(--space-xs);
138
- border-radius: var(--radius-sm);
139
- transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
140
- }
141
-
142
- .slide-skill-row:hover:not(.header) {
143
- background: linear-gradient(
144
- 90deg,
145
- rgba(59, 130, 246, 0.05) 0%,
146
- rgba(147, 51, 234, 0.03) 100%
147
- );
148
- transform: translateX(4px);
149
- box-shadow: 0 2px 8px rgba(59, 130, 246, 0.1);
150
- }
151
-
152
- .slide-skill-row.header {
153
- font-weight: 600;
154
- background: linear-gradient(
155
- 135deg,
156
- rgba(59, 130, 246, 0.08) 0%,
157
- rgba(147, 51, 234, 0.05) 100%
158
- );
159
- backdrop-filter: blur(10px);
160
- padding: var(--space-sm) var(--space-md);
161
- color: var(--color-text-muted);
162
- font-size: var(--font-size-sm);
163
- text-transform: uppercase;
164
- letter-spacing: 0.05em;
165
- border-radius: var(--radius-sm);
166
- }
167
-
168
- .slide-skill-name {
169
- font-weight: 500;
170
- }
171
-
172
- .slide-skill-type {
173
- font-size: var(--font-size-sm);
174
- }
175
-
176
- .slide-skill-level {
177
- text-align: center;
178
- }
179
-
180
- .slide-skill-description {
181
- font-size: var(--font-size-sm);
182
- color: var(--color-text-muted);
183
- }
184
-
185
- /* Behaviour profile */
186
- .slide-behaviour-row {
187
- display: grid;
188
- grid-template-columns: 2fr 140px 1fr;
189
- gap: var(--space-md);
190
- padding: var(--space-sm) var(--space-md);
191
- border-bottom: 1px solid rgba(59, 130, 246, 0.1);
192
- align-items: center;
193
- background: rgba(255, 255, 255, 0.5);
194
- backdrop-filter: blur(5px);
195
- margin-bottom: var(--space-xs);
196
- border-radius: var(--radius-sm);
197
- transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
198
- }
199
-
200
- .slide-behaviour-row:hover:not(.header) {
201
- background: linear-gradient(
202
- 90deg,
203
- rgba(59, 130, 246, 0.05) 0%,
204
- rgba(147, 51, 234, 0.03) 100%
205
- );
206
- transform: translateX(4px);
207
- box-shadow: 0 2px 8px rgba(59, 130, 246, 0.1);
208
- }
209
-
210
- .slide-behaviour-row.header {
211
- font-weight: 600;
212
- background: linear-gradient(
213
- 135deg,
214
- rgba(59, 130, 246, 0.08) 0%,
215
- rgba(147, 51, 234, 0.05) 100%
216
- );
217
- backdrop-filter: blur(10px);
218
- padding: var(--space-sm) var(--space-md);
219
- color: var(--color-text-muted);
220
- font-size: var(--font-size-sm);
221
- text-transform: uppercase;
222
- letter-spacing: 0.05em;
223
- border-radius: var(--radius-sm);
224
- }
225
-
226
- /* Two-column layout */
227
- .slide-columns {
228
- display: grid;
229
- grid-template-columns: 1fr 1fr;
230
- gap: var(--space-xl);
231
- }
232
-
233
- @media (max-width: 768px) {
234
- .slide-columns {
235
- grid-template-columns: 1fr;
236
- }
237
-
238
- .slide-skill-row,
239
- .slide-behaviour-row {
240
- grid-template-columns: 1fr;
241
- gap: var(--space-xs);
242
- }
243
-
244
- .slide-skill-row.header,
245
- .slide-behaviour-row.header {
246
- display: none;
247
- }
248
- }
249
-
250
- /* Related lists */
251
- .slide-view .related-list {
252
- list-style: none;
253
- padding: 0;
254
- margin: 0;
255
- }
256
-
257
- .slide-view .related-list li {
258
- padding: var(--space-sm) var(--space-md);
259
- border-bottom: 1px solid rgba(59, 130, 246, 0.1);
260
- display: flex;
261
- justify-content: space-between;
262
- align-items: center;
263
- background: rgba(255, 255, 255, 0.5);
264
- margin-bottom: var(--space-xs);
265
- border-radius: var(--radius-sm);
266
- transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
267
- }
268
-
269
- .slide-view .related-list li:hover {
270
- background: linear-gradient(
271
- 90deg,
272
- rgba(59, 130, 246, 0.05),
273
- rgba(147, 51, 234, 0.03)
274
- );
275
- transform: translateX(4px);
276
- box-shadow: 0 2px 8px rgba(59, 130, 246, 0.1);
277
- }
278
-
279
- .slide-view .related-list li:last-child {
280
- border-bottom: 1px solid rgba(59, 130, 246, 0.1);
281
- }
282
-
283
- /* Slide list items */
284
- .slide-list-item {
285
- padding: var(--space-sm) var(--space-md);
286
- background: linear-gradient(
287
- 135deg,
288
- rgba(255, 255, 255, 0.8) 0%,
289
- rgba(248, 250, 252, 0.7) 100%
290
- );
291
- backdrop-filter: blur(5px);
292
- border-radius: var(--radius-md);
293
- margin-bottom: var(--space-sm);
294
- border: 1px solid rgba(59, 130, 246, 0.1);
295
- box-shadow: 0 1px 4px rgba(59, 130, 246, 0.05);
296
- transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
297
- }
298
-
299
- .slide-list-item:hover {
300
- transform: translateX(4px);
301
- box-shadow: 0 2px 12px rgba(59, 130, 246, 0.12);
302
- border-color: rgba(59, 130, 246, 0.2);
303
- }
304
-
305
- /* Radar chart container */
306
- .slide-radar-container {
307
- display: flex;
308
- justify-content: center;
309
- margin: var(--space-xl) 0;
310
- }
311
-
312
- /* Driver coverage */
313
- .slide-driver-coverage {
314
- display: grid;
315
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
316
- gap: var(--space-md);
317
- }
318
-
319
- .slide-driver-item {
320
- display: flex;
321
- justify-content: space-between;
322
- align-items: center;
323
- padding: var(--space-sm);
324
- background: linear-gradient(
325
- 135deg,
326
- rgba(255, 255, 255, 0.9) 0%,
327
- rgba(248, 250, 252, 0.85) 100%
328
- );
329
- backdrop-filter: blur(10px);
330
- border-radius: var(--radius-md);
331
- border: 1px solid rgba(59, 130, 246, 0.1);
332
- box-shadow: 0 2px 8px rgba(59, 130, 246, 0.06);
333
- transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
334
- }
335
-
336
- .slide-driver-item:hover {
337
- transform: translateY(-2px) scale(1.02);
338
- box-shadow: 0 4px 16px rgba(59, 130, 246, 0.12);
339
- border-color: rgba(59, 130, 246, 0.2);
340
- }
341
-
342
- .slide-driver-name {
343
- font-weight: 500;
344
- }
345
-
346
- .slide-driver-value {
347
- font-weight: 600;
348
- background: linear-gradient(135deg, #3b82f6, #9333ea);
349
- -webkit-background-clip: text;
350
- -webkit-text-fill-color: transparent;
351
- background-clip: text;
352
- }
353
-
354
- /* Interview questions */
355
- .slide-question-section {
356
- margin-bottom: var(--space-xl);
357
- }
358
-
359
- .slide-question-header {
360
- display: flex;
361
- justify-content: space-between;
362
- align-items: center;
363
- margin-bottom: var(--space-md);
364
- }
365
-
366
- .slide-question {
367
- background: linear-gradient(
368
- 135deg,
369
- rgba(255, 255, 255, 0.9) 0%,
370
- rgba(248, 250, 252, 0.85) 100%
371
- );
372
- backdrop-filter: blur(10px);
373
- padding: var(--space-md);
374
- border-radius: var(--radius-md);
375
- margin-bottom: var(--space-md);
376
- border-left: 4px solid transparent;
377
- border-image: linear-gradient(180deg, #3b82f6, #9333ea) 1;
378
- box-shadow: 0 2px 12px rgba(59, 130, 246, 0.1);
379
- transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
380
- position: relative;
381
- overflow: hidden;
382
- }
383
-
384
- .slide-question::before {
385
- content: "";
386
- position: absolute;
387
- top: 0;
388
- right: 0;
389
- width: 100px;
390
- height: 100%;
391
- background: linear-gradient(90deg, transparent, rgba(59, 130, 246, 0.03));
392
- pointer-events: none;
393
- }
394
-
395
- .slide-question:hover {
396
- transform: translateX(4px);
397
- box-shadow:
398
- 0 4px 20px rgba(59, 130, 246, 0.15),
399
- 0 2px 8px rgba(147, 51, 234, 0.1);
400
- }
401
-
402
- .slide-question-text {
403
- font-size: var(--font-size-base);
404
- font-weight: 500;
405
- margin: 0 0 var(--space-sm);
406
- position: relative;
407
- }
408
-
409
- .slide-followups {
410
- margin: var(--space-sm) 0 0;
411
- padding-left: var(--space-md);
412
- }
413
-
414
- .slide-followup {
415
- font-size: var(--font-size-sm);
416
- color: var(--color-text-muted);
417
- margin-bottom: var(--space-xs);
418
- }
419
-
420
- /* Career progression */
421
- .slide-progression-summary {
422
- display: grid;
423
- grid-template-columns: repeat(4, 1fr);
424
- gap: var(--space-md);
425
- margin-bottom: var(--space-xl);
426
- }
427
-
428
- .slide-progression-stat {
429
- text-align: center;
430
- padding: var(--space-md);
431
- background: linear-gradient(
432
- 135deg,
433
- rgba(255, 255, 255, 0.95) 0%,
434
- rgba(248, 250, 252, 0.9) 100%
435
- );
436
- backdrop-filter: blur(10px);
437
- border-radius: var(--radius-md);
438
- border: 1px solid rgba(59, 130, 246, 0.15);
439
- box-shadow: 0 4px 12px rgba(59, 130, 246, 0.08);
440
- transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
441
- position: relative;
442
- overflow: hidden;
443
- }
444
-
445
- .slide-progression-stat::after {
446
- content: "";
447
- position: absolute;
448
- bottom: 0;
449
- left: 0;
450
- right: 0;
451
- height: 3px;
452
- background: linear-gradient(90deg, #3b82f6, #9333ea);
453
- opacity: 0.7;
454
- }
455
-
456
- .slide-progression-stat:hover {
457
- transform: translateY(-4px) scale(1.03);
458
- box-shadow: 0 8px 24px rgba(59, 130, 246, 0.15);
459
- border-color: rgba(59, 130, 246, 0.3);
460
- }
461
-
462
- .slide-progression-value {
463
- font-size: var(--font-size-2xl);
464
- font-weight: 700;
465
- background: linear-gradient(135deg, #3b82f6, #9333ea);
466
- -webkit-background-clip: text;
467
- -webkit-text-fill-color: transparent;
468
- background-clip: text;
469
- }
470
-
471
- .slide-progression-label {
472
- font-size: var(--font-size-sm);
473
- color: var(--color-text-muted);
474
- font-weight: 500;
475
- }
476
-
477
- .slide-change-row {
478
- display: grid;
479
- grid-template-columns: 2fr 1fr 1fr 80px;
480
- gap: var(--space-md);
481
- padding: var(--space-sm) var(--space-md);
482
- border-bottom: 1px solid rgba(59, 130, 246, 0.1);
483
- align-items: center;
484
- background: rgba(255, 255, 255, 0.5);
485
- backdrop-filter: blur(5px);
486
- margin-bottom: var(--space-xs);
487
- border-radius: var(--radius-sm);
488
- transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
489
- }
490
-
491
- .slide-change-row:hover:not(.header) {
492
- background: linear-gradient(
493
- 90deg,
494
- rgba(59, 130, 246, 0.05) 0%,
495
- rgba(147, 51, 234, 0.03) 100%
496
- );
497
- transform: translateX(4px);
498
- box-shadow: 0 2px 8px rgba(59, 130, 246, 0.1);
499
- }
500
-
501
- .slide-change-row.header {
502
- font-weight: 600;
503
- background: linear-gradient(
504
- 135deg,
505
- rgba(59, 130, 246, 0.08) 0%,
506
- rgba(147, 51, 234, 0.05) 100%
507
- );
508
- backdrop-filter: blur(10px);
509
- padding: var(--space-sm) var(--space-md);
510
- color: var(--color-text-muted);
511
- font-size: var(--font-size-sm);
512
- text-transform: uppercase;
513
- letter-spacing: 0.05em;
514
- border-radius: var(--radius-sm);
515
- }
516
-
517
- @media (max-width: 768px) {
518
- .slide-change-row {
519
- grid-template-columns: 1fr;
520
- gap: var(--space-xs);
521
- }
522
-
523
- .slide-change-row.header {
524
- display: none;
525
- }
526
-
527
- .slide-progression-summary {
528
- grid-template-columns: repeat(2, 1fr);
529
- }
530
- }
531
-
532
- /* Overview slide */
533
- .overview-slide {
534
- padding: var(--space-xl);
535
- page-break-after: always;
536
- }
537
-
538
- .overview-header {
539
- text-align: center;
540
- margin-bottom: var(--space-2xl);
541
- padding-bottom: var(--space-lg);
542
- border-bottom: 2px solid transparent;
543
- border-image: linear-gradient(
544
- 90deg,
545
- transparent 0%,
546
- rgba(59, 130, 246, 0.4) 15%,
547
- rgba(147, 51, 234, 0.4) 50%,
548
- rgba(59, 130, 246, 0.4) 85%,
549
- transparent 100%
550
- )
551
- 1;
552
- }
553
-
554
- .overview-title {
555
- font-size: var(--font-size-3xl);
556
- font-weight: 700;
557
- margin-bottom: var(--space-md);
558
- color: var(--color-text);
559
- }
560
-
561
- .overview-title .gradient-text {
562
- background: linear-gradient(135deg, #3b82f6, #9333ea);
563
- -webkit-background-clip: text;
564
- -webkit-text-fill-color: transparent;
565
- background-clip: text;
566
- }
567
-
568
- .overview-description {
569
- font-size: var(--font-size-lg);
570
- color: var(--color-text-muted);
571
- line-height: 1.6;
572
- max-width: 800px;
573
- margin: 0 auto;
574
- white-space: pre-line;
575
- }
576
-
577
- .overview-slide .card {
578
- transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
579
- }
580
-
581
- .overview-slide .card:hover {
582
- transform: translateY(-4px);
583
- box-shadow:
584
- 0 8px 24px rgba(59, 130, 246, 0.15),
585
- 0 4px 12px rgba(147, 51, 234, 0.1);
586
- }
587
-
588
- @media (max-width: 768px) {
589
- .overview-title {
590
- font-size: var(--font-size-2xl);
591
- }
592
-
593
- .overview-description {
594
- font-size: var(--font-size-base);
595
- }
596
- }
597
- }