@almadar/std 14.26.0 → 14.27.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 (151) hide show
  1. package/behaviors/registry/app/atoms/std-applicant.orb +496 -42
  2. package/behaviors/registry/app/atoms/std-approval-request.orb +433 -593
  3. package/behaviors/registry/app/atoms/std-campaign-goal.orb +438 -228
  4. package/behaviors/registry/app/atoms/std-change-order.orb +565 -307
  5. package/behaviors/registry/app/atoms/std-chart-of-accounts.orb +434 -97
  6. package/behaviors/registry/app/atoms/std-checkin.orb +434 -270
  7. package/behaviors/registry/app/atoms/std-class-roster.orb +495 -61
  8. package/behaviors/registry/app/atoms/std-class-session.orb +485 -104
  9. package/behaviors/registry/app/atoms/std-court-deadline.orb +519 -88
  10. package/behaviors/registry/app/atoms/std-customer-account.orb +577 -97
  11. package/behaviors/registry/app/atoms/std-donation-receipt.orb +498 -55
  12. package/behaviors/registry/app/atoms/std-donor.orb +445 -135
  13. package/behaviors/registry/app/atoms/std-drip-sequence.orb +445 -62
  14. package/behaviors/registry/app/atoms/std-driver.orb +465 -480
  15. package/behaviors/registry/app/atoms/std-dunning.orb +450 -512
  16. package/behaviors/registry/app/atoms/std-email-broadcast.orb +517 -64
  17. package/behaviors/registry/app/atoms/std-event.orb +465 -667
  18. package/behaviors/registry/app/atoms/std-health-score.orb +368 -371
  19. package/behaviors/registry/app/atoms/std-help-article.orb +373 -506
  20. package/behaviors/registry/app/atoms/std-help-category.orb +344 -359
  21. package/behaviors/registry/app/atoms/std-interview-slot.orb +490 -48
  22. package/behaviors/registry/app/atoms/std-invoice.orb +494 -291
  23. package/behaviors/registry/app/atoms/std-kitchen-display.orb +588 -96
  24. package/behaviors/registry/app/atoms/std-lease.orb +506 -190
  25. package/behaviors/registry/app/atoms/std-ledger-entry.orb +483 -154
  26. package/behaviors/registry/app/atoms/std-maintenance-request.orb +642 -192
  27. package/behaviors/registry/app/atoms/std-matter.orb +486 -318
  28. package/behaviors/registry/app/atoms/std-membership.orb +512 -102
  29. package/behaviors/registry/app/atoms/std-menu.orb +775 -183
  30. package/behaviors/registry/app/atoms/std-modifier-group.orb +522 -104
  31. package/behaviors/registry/app/atoms/std-nps-survey.orb +319 -327
  32. package/behaviors/registry/app/atoms/std-offer-letter.orb +497 -47
  33. package/behaviors/registry/app/atoms/std-payout-ledger.orb +378 -362
  34. package/behaviors/registry/app/atoms/std-question-bank.orb +379 -346
  35. package/behaviors/registry/app/atoms/std-receipt.orb +553 -44
  36. package/behaviors/registry/app/atoms/std-recurring-charge.orb +419 -832
  37. package/behaviors/registry/app/atoms/std-renewal-risk.orb +370 -421
  38. package/behaviors/registry/app/atoms/std-rent-charge.orb +657 -55
  39. package/behaviors/registry/app/atoms/std-reorder-rule.orb +510 -59
  40. package/behaviors/registry/app/atoms/std-response-collector.orb +451 -144
  41. package/behaviors/registry/app/atoms/std-rfi.orb +502 -461
  42. package/behaviors/registry/app/atoms/std-route-optimize.orb +448 -158
  43. package/behaviors/registry/app/atoms/std-segment.orb +360 -98
  44. package/behaviors/registry/app/atoms/std-stock-level.orb +486 -103
  45. package/behaviors/registry/app/atoms/std-submittal.orb +538 -526
  46. package/behaviors/registry/app/atoms/std-table-map.orb +88 -51
  47. package/behaviors/registry/app/atoms/std-technician-dispatch.orb +653 -71
  48. package/behaviors/registry/app/atoms/std-telematics-event.orb +310 -215
  49. package/behaviors/registry/app/atoms/std-template-editor.orb +513 -90
  50. package/behaviors/registry/app/atoms/std-tenant.orb +525 -66
  51. package/behaviors/registry/app/atoms/std-ticket-tier.orb +472 -460
  52. package/behaviors/registry/app/atoms/std-time-entry.orb +354 -317
  53. package/behaviors/registry/app/atoms/std-timesheet.orb +551 -284
  54. package/behaviors/registry/app/atoms/std-trial.orb +410 -317
  55. package/behaviors/registry/app/atoms/std-vehicle.orb +398 -563
  56. package/behaviors/registry/app/atoms/std-waitlist.orb +372 -283
  57. package/behaviors/registry/app/atoms/std-warehouse.orb +273 -214
  58. package/behaviors/registry/app/atoms/std-work-order.orb +628 -240
  59. package/behaviors/registry/app/molecules/std-applicant-form.orb +89 -83
  60. package/behaviors/registry/app/molecules/std-application.orb +178 -263
  61. package/behaviors/registry/app/molecules/std-broadcast-builder.orb +67 -176
  62. package/behaviors/registry/app/molecules/std-cart.orb +78 -72
  63. package/behaviors/registry/app/molecules/std-form-builder.orb +437 -176
  64. package/behaviors/registry/app/molecules/std-ledger-entry-form.orb +608 -89
  65. package/behaviors/registry/app/molecules/std-stock-adjustment.orb +501 -102
  66. package/behaviors/registry/app/molecules/std-vendor-onboarding.orb +383 -469
  67. package/behaviors/registry/core/atoms/std-billable-hour.orb +495 -91
  68. package/behaviors/registry/core/atoms/std-branching-logic.orb +271 -600
  69. package/behaviors/registry/core/atoms/std-file-store.orb +534 -164
  70. package/behaviors/registry/core/atoms/std-gallery.orb +118 -101
  71. package/behaviors/registry/core/atoms/std-image-upload-multi.orb +87 -57
  72. package/behaviors/registry/core/atoms/std-page-tree.orb +342 -484
  73. package/behaviors/registry/core/atoms/std-rich-editor.orb +288 -416
  74. package/behaviors/registry/core/atoms/std-version-history.orb +454 -430
  75. package/behaviors/registry/core/molecules/std-wizard-form.orb +222 -147
  76. package/dist/behaviors/registry/app/atoms/std-applicant.orb +496 -42
  77. package/dist/behaviors/registry/app/atoms/std-approval-request.orb +433 -593
  78. package/dist/behaviors/registry/app/atoms/std-campaign-goal.orb +438 -228
  79. package/dist/behaviors/registry/app/atoms/std-change-order.orb +565 -307
  80. package/dist/behaviors/registry/app/atoms/std-chart-of-accounts.orb +434 -97
  81. package/dist/behaviors/registry/app/atoms/std-checkin.orb +434 -270
  82. package/dist/behaviors/registry/app/atoms/std-class-roster.orb +495 -61
  83. package/dist/behaviors/registry/app/atoms/std-class-session.orb +485 -104
  84. package/dist/behaviors/registry/app/atoms/std-court-deadline.orb +519 -88
  85. package/dist/behaviors/registry/app/atoms/std-customer-account.orb +577 -97
  86. package/dist/behaviors/registry/app/atoms/std-donation-receipt.orb +498 -55
  87. package/dist/behaviors/registry/app/atoms/std-donor.orb +445 -135
  88. package/dist/behaviors/registry/app/atoms/std-drip-sequence.orb +445 -62
  89. package/dist/behaviors/registry/app/atoms/std-driver.orb +465 -480
  90. package/dist/behaviors/registry/app/atoms/std-dunning.orb +450 -512
  91. package/dist/behaviors/registry/app/atoms/std-email-broadcast.orb +517 -64
  92. package/dist/behaviors/registry/app/atoms/std-event.orb +465 -667
  93. package/dist/behaviors/registry/app/atoms/std-health-score.orb +368 -371
  94. package/dist/behaviors/registry/app/atoms/std-help-article.orb +373 -506
  95. package/dist/behaviors/registry/app/atoms/std-help-category.orb +344 -359
  96. package/dist/behaviors/registry/app/atoms/std-interview-slot.orb +490 -48
  97. package/dist/behaviors/registry/app/atoms/std-invoice.orb +494 -291
  98. package/dist/behaviors/registry/app/atoms/std-kitchen-display.orb +588 -96
  99. package/dist/behaviors/registry/app/atoms/std-lease.orb +506 -190
  100. package/dist/behaviors/registry/app/atoms/std-ledger-entry.orb +483 -154
  101. package/dist/behaviors/registry/app/atoms/std-maintenance-request.orb +642 -192
  102. package/dist/behaviors/registry/app/atoms/std-matter.orb +486 -318
  103. package/dist/behaviors/registry/app/atoms/std-membership.orb +512 -102
  104. package/dist/behaviors/registry/app/atoms/std-menu.orb +775 -183
  105. package/dist/behaviors/registry/app/atoms/std-modifier-group.orb +522 -104
  106. package/dist/behaviors/registry/app/atoms/std-nps-survey.orb +319 -327
  107. package/dist/behaviors/registry/app/atoms/std-offer-letter.orb +497 -47
  108. package/dist/behaviors/registry/app/atoms/std-payout-ledger.orb +378 -362
  109. package/dist/behaviors/registry/app/atoms/std-question-bank.orb +379 -346
  110. package/dist/behaviors/registry/app/atoms/std-receipt.orb +553 -44
  111. package/dist/behaviors/registry/app/atoms/std-recurring-charge.orb +419 -832
  112. package/dist/behaviors/registry/app/atoms/std-renewal-risk.orb +370 -421
  113. package/dist/behaviors/registry/app/atoms/std-rent-charge.orb +657 -55
  114. package/dist/behaviors/registry/app/atoms/std-reorder-rule.orb +510 -59
  115. package/dist/behaviors/registry/app/atoms/std-response-collector.orb +451 -144
  116. package/dist/behaviors/registry/app/atoms/std-rfi.orb +502 -461
  117. package/dist/behaviors/registry/app/atoms/std-route-optimize.orb +448 -158
  118. package/dist/behaviors/registry/app/atoms/std-segment.orb +360 -98
  119. package/dist/behaviors/registry/app/atoms/std-stock-level.orb +486 -103
  120. package/dist/behaviors/registry/app/atoms/std-submittal.orb +538 -526
  121. package/dist/behaviors/registry/app/atoms/std-table-map.orb +88 -51
  122. package/dist/behaviors/registry/app/atoms/std-technician-dispatch.orb +653 -71
  123. package/dist/behaviors/registry/app/atoms/std-telematics-event.orb +310 -215
  124. package/dist/behaviors/registry/app/atoms/std-template-editor.orb +513 -90
  125. package/dist/behaviors/registry/app/atoms/std-tenant.orb +525 -66
  126. package/dist/behaviors/registry/app/atoms/std-ticket-tier.orb +472 -460
  127. package/dist/behaviors/registry/app/atoms/std-time-entry.orb +354 -317
  128. package/dist/behaviors/registry/app/atoms/std-timesheet.orb +551 -284
  129. package/dist/behaviors/registry/app/atoms/std-trial.orb +410 -317
  130. package/dist/behaviors/registry/app/atoms/std-vehicle.orb +398 -563
  131. package/dist/behaviors/registry/app/atoms/std-waitlist.orb +372 -283
  132. package/dist/behaviors/registry/app/atoms/std-warehouse.orb +273 -214
  133. package/dist/behaviors/registry/app/atoms/std-work-order.orb +628 -240
  134. package/dist/behaviors/registry/app/molecules/std-applicant-form.orb +89 -83
  135. package/dist/behaviors/registry/app/molecules/std-application.orb +178 -263
  136. package/dist/behaviors/registry/app/molecules/std-broadcast-builder.orb +67 -176
  137. package/dist/behaviors/registry/app/molecules/std-cart.orb +78 -72
  138. package/dist/behaviors/registry/app/molecules/std-form-builder.orb +437 -176
  139. package/dist/behaviors/registry/app/molecules/std-ledger-entry-form.orb +608 -89
  140. package/dist/behaviors/registry/app/molecules/std-stock-adjustment.orb +501 -102
  141. package/dist/behaviors/registry/app/molecules/std-vendor-onboarding.orb +383 -469
  142. package/dist/behaviors/registry/core/atoms/std-billable-hour.orb +495 -91
  143. package/dist/behaviors/registry/core/atoms/std-branching-logic.orb +271 -600
  144. package/dist/behaviors/registry/core/atoms/std-file-store.orb +534 -164
  145. package/dist/behaviors/registry/core/atoms/std-gallery.orb +118 -101
  146. package/dist/behaviors/registry/core/atoms/std-image-upload-multi.orb +87 -57
  147. package/dist/behaviors/registry/core/atoms/std-page-tree.orb +342 -484
  148. package/dist/behaviors/registry/core/atoms/std-rich-editor.orb +288 -416
  149. package/dist/behaviors/registry/core/atoms/std-version-history.orb +454 -430
  150. package/dist/behaviors/registry/core/molecules/std-wizard-form.orb +222 -147
  151. package/package.json +1 -1
@@ -74,6 +74,58 @@
74
74
  "category": "interaction",
75
75
  "linkedEntity": "InterviewSlot",
76
76
  "emits": [
77
+ {
78
+ "event": "OPEN_INTERVIEW",
79
+ "payloadSchema": [
80
+ {
81
+ "name": "id",
82
+ "type": "string",
83
+ "required": true
84
+ },
85
+ {
86
+ "name": "row.id",
87
+ "type": "string",
88
+ "required": true
89
+ },
90
+ {
91
+ "name": "row.applicantId",
92
+ "type": "string",
93
+ "required": true
94
+ },
95
+ {
96
+ "name": "row.applicantName",
97
+ "type": "string"
98
+ },
99
+ {
100
+ "name": "row.interviewerName",
101
+ "type": "string"
102
+ },
103
+ {
104
+ "name": "row.scheduledAt",
105
+ "type": "string",
106
+ "required": true
107
+ },
108
+ {
109
+ "name": "row.durationMinutes",
110
+ "type": "number"
111
+ },
112
+ {
113
+ "name": "row.format",
114
+ "type": "string"
115
+ },
116
+ {
117
+ "name": "row.status",
118
+ "type": "string"
119
+ },
120
+ {
121
+ "name": "row.notes",
122
+ "type": "string"
123
+ }
124
+ ]
125
+ },
126
+ {
127
+ "event": "CLOSE_VIEW"
128
+ },
77
129
  {
78
130
  "event": "COMPLETE_INTERVIEW",
79
131
  "payloadSchema": [
@@ -126,6 +178,9 @@
126
178
  {
127
179
  "name": "browsing"
128
180
  },
181
+ {
182
+ "name": "viewing_single"
183
+ },
129
184
  {
130
185
  "name": "error"
131
186
  }
@@ -160,13 +215,17 @@
160
215
  ]
161
216
  },
162
217
  {
163
- "key": "COMPLETE_INTERVIEW",
164
- "name": "Complete Interview",
218
+ "key": "OPEN_INTERVIEW",
219
+ "name": "Open Interview",
165
220
  "payloadSchema": [
166
221
  {
167
222
  "name": "id",
168
223
  "type": "string",
169
224
  "required": true
225
+ },
226
+ {
227
+ "name": "row",
228
+ "type": "InterviewSlot"
170
229
  }
171
230
  ]
172
231
  },
@@ -180,6 +239,21 @@
180
239
  "required": true
181
240
  }
182
241
  ]
242
+ },
243
+ {
244
+ "key": "CLOSE_VIEW",
245
+ "name": "Close View"
246
+ },
247
+ {
248
+ "key": "COMPLETE_INTERVIEW",
249
+ "name": "Complete Interview",
250
+ "payloadSchema": [
251
+ {
252
+ "name": "id",
253
+ "type": "string",
254
+ "required": true
255
+ }
256
+ ]
183
257
  }
184
258
  ],
185
259
  "transitions": [
@@ -193,8 +267,8 @@
193
267
  "InterviewSlot",
194
268
  {
195
269
  "emit": {
196
- "success": "InterviewSlotLoaded",
197
- "failure": "InterviewSlotLoadFailed"
270
+ "failure": "InterviewSlotLoadFailed",
271
+ "success": "InterviewSlotLoaded"
198
272
  }
199
273
  }
200
274
  ],
@@ -202,22 +276,22 @@
202
276
  "render-ui",
203
277
  "main",
204
278
  {
279
+ "align": "center",
280
+ "type": "stack",
205
281
  "className": "py-12",
206
282
  "gap": "md",
207
- "direction": "vertical",
208
- "type": "stack",
209
283
  "children": [
210
284
  {
211
285
  "type": "spinner"
212
286
  },
213
287
  {
214
- "type": "typography",
215
- "variant": "caption",
216
288
  "content": "Loading interviews…",
217
- "color": "muted"
289
+ "variant": "caption",
290
+ "color": "muted",
291
+ "type": "typography"
218
292
  }
219
293
  ],
220
- "align": "center"
294
+ "direction": "vertical"
221
295
  }
222
296
  ]
223
297
  ]
@@ -233,8 +307,6 @@
233
307
  {
234
308
  "children": [
235
309
  {
236
- "gap": "sm",
237
- "type": "stack",
238
310
  "children": [
239
311
  {
240
312
  "type": "icon",
@@ -246,38 +318,58 @@
246
318
  "variant": "h3"
247
319
  }
248
320
  ],
249
- "direction": "horizontal"
250
- },
251
- {
252
- "type": "divider"
321
+ "direction": "horizontal",
322
+ "type": "stack",
323
+ "gap": "sm",
324
+ "align": "center"
253
325
  },
254
326
  {
255
- "gap": "sm",
256
- "cols": 1.0,
257
- "type": "data-grid",
258
- "entity": "@payload.data",
259
- "itemActions": [
327
+ "children": [
260
328
  {
261
- "variant": "primary",
262
- "label": "Complete",
263
- "event": "COMPLETE_INTERVIEW"
329
+ "value": "@payload.data.length",
330
+ "label": "Scheduled",
331
+ "icon": "calendar",
332
+ "type": "stat-display"
264
333
  },
265
334
  {
266
- "event": "CANCEL_INTERVIEW",
267
- "variant": "danger",
268
- "label": "Cancel"
335
+ "type": "stat-display",
336
+ "value": "9",
337
+ "icon": "clock",
338
+ "label": "Today"
339
+ },
340
+ {
341
+ "type": "stat-display",
342
+ "value": "37",
343
+ "label": "Completed this week",
344
+ "icon": "check-circle"
345
+ },
346
+ {
347
+ "label": "No-show rate",
348
+ "icon": "alert-triangle",
349
+ "type": "stat-display",
350
+ "value": "6%"
269
351
  }
270
352
  ],
353
+ "type": "simple-grid",
354
+ "cols": 4.0
355
+ },
356
+ {
357
+ "type": "divider"
358
+ },
359
+ {
360
+ "type": "data-grid",
361
+ "entity": "@payload.data",
362
+ "cols": 1.0,
271
363
  "fields": [
272
364
  {
365
+ "name": "applicantName",
273
366
  "label": "Applicant",
274
- "variant": "caption",
275
- "name": "applicantName"
367
+ "variant": "caption"
276
368
  },
277
369
  {
370
+ "variant": "caption",
278
371
  "name": "interviewerName",
279
- "label": "Interviewer",
280
- "variant": "caption"
372
+ "label": "Interviewer"
281
373
  },
282
374
  {
283
375
  "label": "Scheduled",
@@ -285,21 +377,35 @@
285
377
  "variant": "caption"
286
378
  },
287
379
  {
288
- "name": "format",
289
380
  "label": "Format",
290
- "variant": "badge"
381
+ "variant": "badge",
382
+ "name": "format"
291
383
  },
292
384
  {
293
- "name": "status",
294
385
  "variant": "badge",
386
+ "name": "status",
295
387
  "label": "Status"
296
388
  }
389
+ ],
390
+ "gap": "sm",
391
+ "itemActions": [
392
+ {
393
+ "event": "OPEN_INTERVIEW",
394
+ "icon": "arrow-right",
395
+ "variant": "primary",
396
+ "label": "Open"
397
+ },
398
+ {
399
+ "label": "Cancel",
400
+ "event": "CANCEL_INTERVIEW",
401
+ "variant": "danger"
402
+ }
297
403
  ]
298
404
  }
299
405
  ],
300
- "gap": "md",
301
406
  "type": "stack",
302
- "direction": "vertical"
407
+ "direction": "vertical",
408
+ "gap": "md"
303
409
  }
304
410
  ]
305
411
  ]
@@ -313,8 +419,8 @@
313
419
  "render-ui",
314
420
  "main",
315
421
  {
316
- "type": "alert",
317
422
  "message": "@payload.error",
423
+ "type": "alert",
318
424
  "variant": "error"
319
425
  }
320
426
  ]
@@ -322,7 +428,297 @@
322
428
  },
323
429
  {
324
430
  "from": "browsing",
325
- "to": "browsing",
431
+ "to": "viewing_single",
432
+ "event": "OPEN_INTERVIEW",
433
+ "effects": [
434
+ [
435
+ "set",
436
+ "@entity.id",
437
+ "@payload.row.id"
438
+ ],
439
+ [
440
+ "set",
441
+ "@entity.applicantId",
442
+ "@payload.row.applicantId"
443
+ ],
444
+ [
445
+ "set",
446
+ "@entity.applicantName",
447
+ "@payload.row.applicantName"
448
+ ],
449
+ [
450
+ "set",
451
+ "@entity.interviewerName",
452
+ "@payload.row.interviewerName"
453
+ ],
454
+ [
455
+ "set",
456
+ "@entity.scheduledAt",
457
+ "@payload.row.scheduledAt"
458
+ ],
459
+ [
460
+ "set",
461
+ "@entity.durationMinutes",
462
+ "@payload.row.durationMinutes"
463
+ ],
464
+ [
465
+ "set",
466
+ "@entity.format",
467
+ "@payload.row.format"
468
+ ],
469
+ [
470
+ "set",
471
+ "@entity.status",
472
+ "@payload.row.status"
473
+ ],
474
+ [
475
+ "set",
476
+ "@entity.notes",
477
+ "@payload.row.notes"
478
+ ],
479
+ [
480
+ "render-ui",
481
+ "main",
482
+ {
483
+ "type": "stack",
484
+ "children": [
485
+ {
486
+ "children": [
487
+ {
488
+ "variant": "ghost",
489
+ "label": "Back",
490
+ "type": "button",
491
+ "action": "CLOSE_VIEW"
492
+ },
493
+ {
494
+ "type": "icon",
495
+ "name": "calendar"
496
+ },
497
+ {
498
+ "content": "@entity.applicantName",
499
+ "variant": "h3",
500
+ "type": "typography"
501
+ },
502
+ {
503
+ "label": "@entity.format",
504
+ "variant": "primary",
505
+ "type": "badge"
506
+ },
507
+ {
508
+ "type": "badge",
509
+ "label": "@entity.status",
510
+ "variant": "default"
511
+ }
512
+ ],
513
+ "align": "center",
514
+ "gap": "sm",
515
+ "type": "stack",
516
+ "direction": "horizontal"
517
+ },
518
+ {
519
+ "type": "divider"
520
+ },
521
+ {
522
+ "type": "stack",
523
+ "children": [
524
+ {
525
+ "children": [
526
+ {
527
+ "color": "muted",
528
+ "variant": "caption",
529
+ "type": "typography",
530
+ "content": "Interviewer"
531
+ },
532
+ {
533
+ "variant": "body",
534
+ "content": "@entity.interviewerName",
535
+ "type": "typography"
536
+ }
537
+ ],
538
+ "type": "stack",
539
+ "direction": "horizontal",
540
+ "gap": "md"
541
+ },
542
+ {
543
+ "type": "stack",
544
+ "direction": "horizontal",
545
+ "gap": "md",
546
+ "children": [
547
+ {
548
+ "type": "typography",
549
+ "variant": "caption",
550
+ "content": "Applicant ID",
551
+ "color": "muted"
552
+ },
553
+ {
554
+ "content": "@entity.applicantId",
555
+ "type": "typography",
556
+ "variant": "body"
557
+ }
558
+ ]
559
+ },
560
+ {
561
+ "children": [
562
+ {
563
+ "content": "Notes",
564
+ "variant": "caption",
565
+ "color": "muted",
566
+ "type": "typography"
567
+ },
568
+ {
569
+ "variant": "body",
570
+ "content": "@entity.notes",
571
+ "type": "typography"
572
+ }
573
+ ],
574
+ "type": "stack",
575
+ "direction": "horizontal",
576
+ "gap": "md"
577
+ }
578
+ ],
579
+ "direction": "vertical",
580
+ "gap": "sm"
581
+ },
582
+ {
583
+ "type": "divider"
584
+ },
585
+ {
586
+ "type": "simple-grid",
587
+ "cols": 2.0,
588
+ "children": [
589
+ {
590
+ "label": "Scheduled",
591
+ "icon": "calendar",
592
+ "value": "@entity.scheduledAt",
593
+ "type": "stat-display"
594
+ },
595
+ {
596
+ "label": "Duration (min)",
597
+ "icon": "clock",
598
+ "value": "@entity.durationMinutes",
599
+ "type": "stat-display"
600
+ }
601
+ ]
602
+ },
603
+ {
604
+ "align": "center",
605
+ "direction": "horizontal",
606
+ "gap": "sm",
607
+ "children": [
608
+ {
609
+ "action": "COMPLETE_INTERVIEW",
610
+ "type": "button",
611
+ "variant": "primary",
612
+ "label": "Complete",
613
+ "actionPayload": {
614
+ "id": "@entity.id"
615
+ }
616
+ },
617
+ {
618
+ "label": "Cancel",
619
+ "actionPayload": {
620
+ "id": "@entity.id"
621
+ },
622
+ "action": "CANCEL_INTERVIEW",
623
+ "variant": "danger",
624
+ "type": "button"
625
+ }
626
+ ],
627
+ "type": "stack"
628
+ }
629
+ ],
630
+ "direction": "vertical",
631
+ "gap": "md"
632
+ }
633
+ ]
634
+ ]
635
+ },
636
+ {
637
+ "from": "browsing",
638
+ "to": "loading",
639
+ "event": "CANCEL_INTERVIEW",
640
+ "effects": [
641
+ [
642
+ "set",
643
+ "@entity.id",
644
+ "@payload.id"
645
+ ],
646
+ [
647
+ "fetch",
648
+ "InterviewSlot",
649
+ {
650
+ "emit": {
651
+ "success": "InterviewSlotLoaded",
652
+ "failure": "InterviewSlotLoadFailed"
653
+ }
654
+ }
655
+ ],
656
+ [
657
+ "render-ui",
658
+ "main",
659
+ {
660
+ "gap": "md",
661
+ "align": "center",
662
+ "direction": "vertical",
663
+ "type": "stack",
664
+ "className": "py-12",
665
+ "children": [
666
+ {
667
+ "type": "spinner"
668
+ },
669
+ {
670
+ "content": "Cancelling interview…",
671
+ "color": "muted",
672
+ "variant": "caption",
673
+ "type": "typography"
674
+ }
675
+ ]
676
+ }
677
+ ]
678
+ ]
679
+ },
680
+ {
681
+ "from": "viewing_single",
682
+ "to": "loading",
683
+ "event": "CLOSE_VIEW",
684
+ "effects": [
685
+ [
686
+ "fetch",
687
+ "InterviewSlot",
688
+ {
689
+ "emit": {
690
+ "failure": "InterviewSlotLoadFailed",
691
+ "success": "InterviewSlotLoaded"
692
+ }
693
+ }
694
+ ],
695
+ [
696
+ "render-ui",
697
+ "main",
698
+ {
699
+ "gap": "md",
700
+ "align": "center",
701
+ "type": "stack",
702
+ "className": "py-12",
703
+ "children": [
704
+ {
705
+ "type": "spinner"
706
+ },
707
+ {
708
+ "color": "muted",
709
+ "content": "Loading interviews…",
710
+ "type": "typography",
711
+ "variant": "caption"
712
+ }
713
+ ],
714
+ "direction": "vertical"
715
+ }
716
+ ]
717
+ ]
718
+ },
719
+ {
720
+ "from": "viewing_single",
721
+ "to": "loading",
326
722
  "event": "COMPLETE_INTERVIEW",
327
723
  "effects": [
328
724
  [
@@ -330,20 +726,43 @@
330
726
  "@entity.id",
331
727
  "@payload.id"
332
728
  ],
729
+ [
730
+ "fetch",
731
+ "InterviewSlot",
732
+ {
733
+ "emit": {
734
+ "failure": "InterviewSlotLoadFailed",
735
+ "success": "InterviewSlotLoaded"
736
+ }
737
+ }
738
+ ],
333
739
  [
334
740
  "render-ui",
335
741
  "main",
336
742
  {
337
- "type": "alert",
338
- "variant": "success",
339
- "message": "Interview marked complete"
743
+ "align": "center",
744
+ "className": "py-12",
745
+ "children": [
746
+ {
747
+ "type": "spinner"
748
+ },
749
+ {
750
+ "variant": "caption",
751
+ "content": "Completing interview…",
752
+ "type": "typography",
753
+ "color": "muted"
754
+ }
755
+ ],
756
+ "type": "stack",
757
+ "direction": "vertical",
758
+ "gap": "md"
340
759
  }
341
760
  ]
342
761
  ]
343
762
  },
344
763
  {
345
- "from": "browsing",
346
- "to": "browsing",
764
+ "from": "viewing_single",
765
+ "to": "loading",
347
766
  "event": "CANCEL_INTERVIEW",
348
767
  "effects": [
349
768
  [
@@ -351,13 +770,36 @@
351
770
  "@entity.id",
352
771
  "@payload.id"
353
772
  ],
773
+ [
774
+ "fetch",
775
+ "InterviewSlot",
776
+ {
777
+ "emit": {
778
+ "success": "InterviewSlotLoaded",
779
+ "failure": "InterviewSlotLoadFailed"
780
+ }
781
+ }
782
+ ],
354
783
  [
355
784
  "render-ui",
356
785
  "main",
357
786
  {
358
- "variant": "info",
359
- "type": "alert",
360
- "message": "Interview cancelled"
787
+ "gap": "md",
788
+ "align": "center",
789
+ "className": "py-12",
790
+ "children": [
791
+ {
792
+ "type": "spinner"
793
+ },
794
+ {
795
+ "type": "typography",
796
+ "content": "Cancelling interview…",
797
+ "color": "muted",
798
+ "variant": "caption"
799
+ }
800
+ ],
801
+ "direction": "vertical",
802
+ "type": "stack"
361
803
  }
362
804
  ]
363
805
  ]
@@ -372,8 +814,8 @@
372
814
  "InterviewSlot",
373
815
  {
374
816
  "emit": {
375
- "success": "InterviewSlotLoaded",
376
- "failure": "InterviewSlotLoadFailed"
817
+ "failure": "InterviewSlotLoadFailed",
818
+ "success": "InterviewSlotLoaded"
377
819
  }
378
820
  }
379
821
  ],