@almadar/std 14.26.0 → 14.28.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 (175) hide show
  1. package/behaviors/registry/app/atoms/std-applicant.orb +496 -42
  2. package/behaviors/registry/app/atoms/std-approval-chain.orb +106 -0
  3. package/behaviors/registry/app/atoms/std-approval-request.orb +433 -593
  4. package/behaviors/registry/app/atoms/std-campaign-goal.orb +438 -228
  5. package/behaviors/registry/app/atoms/std-change-order.orb +565 -307
  6. package/behaviors/registry/app/atoms/std-chart-of-accounts.orb +434 -97
  7. package/behaviors/registry/app/atoms/std-checkin.orb +434 -270
  8. package/behaviors/registry/app/atoms/std-class-roster.orb +495 -61
  9. package/behaviors/registry/app/atoms/std-class-session.orb +485 -104
  10. package/behaviors/registry/app/atoms/std-court-deadline.orb +519 -88
  11. package/behaviors/registry/app/atoms/std-customer-account.orb +577 -97
  12. package/behaviors/registry/app/atoms/std-donation-receipt.orb +498 -55
  13. package/behaviors/registry/app/atoms/std-donor.orb +445 -135
  14. package/behaviors/registry/app/atoms/std-drip-sequence.orb +445 -62
  15. package/behaviors/registry/app/atoms/std-driver.orb +465 -480
  16. package/behaviors/registry/app/atoms/std-dunning.orb +450 -512
  17. package/behaviors/registry/app/atoms/std-email-broadcast.orb +517 -64
  18. package/behaviors/registry/app/atoms/std-event.orb +465 -667
  19. package/behaviors/registry/app/atoms/std-health-score.orb +368 -371
  20. package/behaviors/registry/app/atoms/std-help-article.orb +373 -506
  21. package/behaviors/registry/app/atoms/std-help-category.orb +344 -359
  22. package/behaviors/registry/app/atoms/std-interview-slot.orb +490 -48
  23. package/behaviors/registry/app/atoms/std-invoice.orb +494 -291
  24. package/behaviors/registry/app/atoms/std-kitchen-display.orb +588 -96
  25. package/behaviors/registry/app/atoms/std-lease.orb +506 -190
  26. package/behaviors/registry/app/atoms/std-ledger-entry.orb +483 -154
  27. package/behaviors/registry/app/atoms/std-maintenance-request.orb +642 -192
  28. package/behaviors/registry/app/atoms/std-matter.orb +486 -318
  29. package/behaviors/registry/app/atoms/std-membership.orb +512 -102
  30. package/behaviors/registry/app/atoms/std-menu.orb +775 -183
  31. package/behaviors/registry/app/atoms/std-modifier-group.orb +522 -104
  32. package/behaviors/registry/app/atoms/std-multi-party-transaction.orb +130 -0
  33. package/behaviors/registry/app/atoms/std-nps-survey.orb +319 -327
  34. package/behaviors/registry/app/atoms/std-offer-letter.orb +497 -47
  35. package/behaviors/registry/app/atoms/std-payout-ledger.orb +378 -362
  36. package/behaviors/registry/app/atoms/std-pipeline.orb +139 -0
  37. package/behaviors/registry/app/atoms/std-question-bank.orb +379 -346
  38. package/behaviors/registry/app/atoms/std-receipt.orb +553 -44
  39. package/behaviors/registry/app/atoms/std-recurring-charge.orb +419 -832
  40. package/behaviors/registry/app/atoms/std-recurring-schedule.orb +94 -0
  41. package/behaviors/registry/app/atoms/std-renewal-risk.orb +370 -421
  42. package/behaviors/registry/app/atoms/std-rent-charge.orb +657 -55
  43. package/behaviors/registry/app/atoms/std-reorder-rule.orb +510 -59
  44. package/behaviors/registry/app/atoms/std-response-collector.orb +451 -144
  45. package/behaviors/registry/app/atoms/std-rfi.orb +502 -461
  46. package/behaviors/registry/app/atoms/std-route-optimize.orb +448 -158
  47. package/behaviors/registry/app/atoms/std-segment.orb +360 -98
  48. package/behaviors/registry/app/atoms/std-stock-level.orb +486 -103
  49. package/behaviors/registry/app/atoms/std-submittal.orb +538 -526
  50. package/behaviors/registry/app/atoms/std-table-map.orb +88 -51
  51. package/behaviors/registry/app/atoms/std-technician-dispatch.orb +653 -71
  52. package/behaviors/registry/app/atoms/std-telematics-event.orb +310 -215
  53. package/behaviors/registry/app/atoms/std-template-editor.orb +513 -90
  54. package/behaviors/registry/app/atoms/std-tenant.orb +525 -66
  55. package/behaviors/registry/app/atoms/std-ticket-tier.orb +472 -460
  56. package/behaviors/registry/app/atoms/std-time-entry.orb +354 -317
  57. package/behaviors/registry/app/atoms/std-timeline.orb +108 -0
  58. package/behaviors/registry/app/atoms/std-timesheet.orb +551 -284
  59. package/behaviors/registry/app/atoms/std-trial.orb +410 -317
  60. package/behaviors/registry/app/atoms/std-vehicle.orb +398 -563
  61. package/behaviors/registry/app/atoms/std-waitlist.orb +372 -283
  62. package/behaviors/registry/app/atoms/std-warehouse.orb +273 -214
  63. package/behaviors/registry/app/atoms/std-wizard-branching.orb +129 -0
  64. package/behaviors/registry/app/atoms/std-work-order.orb +628 -240
  65. package/behaviors/registry/app/molecules/std-applicant-form.orb +89 -83
  66. package/behaviors/registry/app/molecules/std-application.orb +178 -263
  67. package/behaviors/registry/app/molecules/std-broadcast-builder.orb +67 -176
  68. package/behaviors/registry/app/molecules/std-cart.orb +78 -72
  69. package/behaviors/registry/app/molecules/std-form-builder.orb +437 -176
  70. package/behaviors/registry/app/molecules/std-ledger-entry-form.orb +608 -89
  71. package/behaviors/registry/app/molecules/std-stock-adjustment.orb +501 -102
  72. package/behaviors/registry/app/molecules/std-vendor-onboarding.orb +383 -469
  73. package/behaviors/registry/core/atoms/std-billable-hour.orb +495 -91
  74. package/behaviors/registry/core/atoms/std-board.orb +1367 -0
  75. package/behaviors/registry/core/atoms/std-branching-logic.orb +271 -600
  76. package/behaviors/registry/core/atoms/std-event-log.orb +777 -0
  77. package/behaviors/registry/core/atoms/std-file-store.orb +534 -164
  78. package/behaviors/registry/core/atoms/std-gallery.orb +118 -101
  79. package/behaviors/registry/core/atoms/std-image-upload-multi.orb +87 -57
  80. package/behaviors/registry/core/atoms/std-multi-party-flow.orb +1313 -0
  81. package/behaviors/registry/core/atoms/std-page-tree.orb +342 -484
  82. package/behaviors/registry/core/atoms/std-recurrence.orb +937 -0
  83. package/behaviors/registry/core/atoms/std-rich-editor.orb +288 -416
  84. package/behaviors/registry/core/atoms/std-step-flow.orb +1155 -0
  85. package/behaviors/registry/core/atoms/std-version-history.orb +454 -430
  86. package/behaviors/registry/core/atoms/std-wizard.orb +1085 -0
  87. package/behaviors/registry/core/molecules/std-wizard-form.orb +222 -147
  88. package/dist/behaviors/registry/app/atoms/std-applicant.orb +496 -42
  89. package/dist/behaviors/registry/app/atoms/std-approval-chain.orb +106 -0
  90. package/dist/behaviors/registry/app/atoms/std-approval-request.orb +433 -593
  91. package/dist/behaviors/registry/app/atoms/std-campaign-goal.orb +438 -228
  92. package/dist/behaviors/registry/app/atoms/std-change-order.orb +565 -307
  93. package/dist/behaviors/registry/app/atoms/std-chart-of-accounts.orb +434 -97
  94. package/dist/behaviors/registry/app/atoms/std-checkin.orb +434 -270
  95. package/dist/behaviors/registry/app/atoms/std-class-roster.orb +495 -61
  96. package/dist/behaviors/registry/app/atoms/std-class-session.orb +485 -104
  97. package/dist/behaviors/registry/app/atoms/std-court-deadline.orb +519 -88
  98. package/dist/behaviors/registry/app/atoms/std-customer-account.orb +577 -97
  99. package/dist/behaviors/registry/app/atoms/std-donation-receipt.orb +498 -55
  100. package/dist/behaviors/registry/app/atoms/std-donor.orb +445 -135
  101. package/dist/behaviors/registry/app/atoms/std-drip-sequence.orb +445 -62
  102. package/dist/behaviors/registry/app/atoms/std-driver.orb +465 -480
  103. package/dist/behaviors/registry/app/atoms/std-dunning.orb +450 -512
  104. package/dist/behaviors/registry/app/atoms/std-email-broadcast.orb +517 -64
  105. package/dist/behaviors/registry/app/atoms/std-event.orb +465 -667
  106. package/dist/behaviors/registry/app/atoms/std-health-score.orb +368 -371
  107. package/dist/behaviors/registry/app/atoms/std-help-article.orb +373 -506
  108. package/dist/behaviors/registry/app/atoms/std-help-category.orb +344 -359
  109. package/dist/behaviors/registry/app/atoms/std-interview-slot.orb +490 -48
  110. package/dist/behaviors/registry/app/atoms/std-invoice.orb +494 -291
  111. package/dist/behaviors/registry/app/atoms/std-kitchen-display.orb +588 -96
  112. package/dist/behaviors/registry/app/atoms/std-lease.orb +506 -190
  113. package/dist/behaviors/registry/app/atoms/std-ledger-entry.orb +483 -154
  114. package/dist/behaviors/registry/app/atoms/std-maintenance-request.orb +642 -192
  115. package/dist/behaviors/registry/app/atoms/std-matter.orb +486 -318
  116. package/dist/behaviors/registry/app/atoms/std-membership.orb +512 -102
  117. package/dist/behaviors/registry/app/atoms/std-menu.orb +775 -183
  118. package/dist/behaviors/registry/app/atoms/std-modifier-group.orb +522 -104
  119. package/dist/behaviors/registry/app/atoms/std-multi-party-transaction.orb +130 -0
  120. package/dist/behaviors/registry/app/atoms/std-nps-survey.orb +319 -327
  121. package/dist/behaviors/registry/app/atoms/std-offer-letter.orb +497 -47
  122. package/dist/behaviors/registry/app/atoms/std-payout-ledger.orb +378 -362
  123. package/dist/behaviors/registry/app/atoms/std-pipeline.orb +139 -0
  124. package/dist/behaviors/registry/app/atoms/std-question-bank.orb +379 -346
  125. package/dist/behaviors/registry/app/atoms/std-receipt.orb +553 -44
  126. package/dist/behaviors/registry/app/atoms/std-recurring-charge.orb +419 -832
  127. package/dist/behaviors/registry/app/atoms/std-recurring-schedule.orb +94 -0
  128. package/dist/behaviors/registry/app/atoms/std-renewal-risk.orb +370 -421
  129. package/dist/behaviors/registry/app/atoms/std-rent-charge.orb +657 -55
  130. package/dist/behaviors/registry/app/atoms/std-reorder-rule.orb +510 -59
  131. package/dist/behaviors/registry/app/atoms/std-response-collector.orb +451 -144
  132. package/dist/behaviors/registry/app/atoms/std-rfi.orb +502 -461
  133. package/dist/behaviors/registry/app/atoms/std-route-optimize.orb +448 -158
  134. package/dist/behaviors/registry/app/atoms/std-segment.orb +360 -98
  135. package/dist/behaviors/registry/app/atoms/std-stock-level.orb +486 -103
  136. package/dist/behaviors/registry/app/atoms/std-submittal.orb +538 -526
  137. package/dist/behaviors/registry/app/atoms/std-table-map.orb +88 -51
  138. package/dist/behaviors/registry/app/atoms/std-technician-dispatch.orb +653 -71
  139. package/dist/behaviors/registry/app/atoms/std-telematics-event.orb +310 -215
  140. package/dist/behaviors/registry/app/atoms/std-template-editor.orb +513 -90
  141. package/dist/behaviors/registry/app/atoms/std-tenant.orb +525 -66
  142. package/dist/behaviors/registry/app/atoms/std-ticket-tier.orb +472 -460
  143. package/dist/behaviors/registry/app/atoms/std-time-entry.orb +354 -317
  144. package/dist/behaviors/registry/app/atoms/std-timeline.orb +108 -0
  145. package/dist/behaviors/registry/app/atoms/std-timesheet.orb +551 -284
  146. package/dist/behaviors/registry/app/atoms/std-trial.orb +410 -317
  147. package/dist/behaviors/registry/app/atoms/std-vehicle.orb +398 -563
  148. package/dist/behaviors/registry/app/atoms/std-waitlist.orb +372 -283
  149. package/dist/behaviors/registry/app/atoms/std-warehouse.orb +273 -214
  150. package/dist/behaviors/registry/app/atoms/std-wizard-branching.orb +129 -0
  151. package/dist/behaviors/registry/app/atoms/std-work-order.orb +628 -240
  152. package/dist/behaviors/registry/app/molecules/std-applicant-form.orb +89 -83
  153. package/dist/behaviors/registry/app/molecules/std-application.orb +178 -263
  154. package/dist/behaviors/registry/app/molecules/std-broadcast-builder.orb +67 -176
  155. package/dist/behaviors/registry/app/molecules/std-cart.orb +78 -72
  156. package/dist/behaviors/registry/app/molecules/std-form-builder.orb +437 -176
  157. package/dist/behaviors/registry/app/molecules/std-ledger-entry-form.orb +608 -89
  158. package/dist/behaviors/registry/app/molecules/std-stock-adjustment.orb +501 -102
  159. package/dist/behaviors/registry/app/molecules/std-vendor-onboarding.orb +383 -469
  160. package/dist/behaviors/registry/core/atoms/std-billable-hour.orb +495 -91
  161. package/dist/behaviors/registry/core/atoms/std-board.orb +1367 -0
  162. package/dist/behaviors/registry/core/atoms/std-branching-logic.orb +271 -600
  163. package/dist/behaviors/registry/core/atoms/std-event-log.orb +777 -0
  164. package/dist/behaviors/registry/core/atoms/std-file-store.orb +534 -164
  165. package/dist/behaviors/registry/core/atoms/std-gallery.orb +118 -101
  166. package/dist/behaviors/registry/core/atoms/std-image-upload-multi.orb +87 -57
  167. package/dist/behaviors/registry/core/atoms/std-multi-party-flow.orb +1313 -0
  168. package/dist/behaviors/registry/core/atoms/std-page-tree.orb +342 -484
  169. package/dist/behaviors/registry/core/atoms/std-recurrence.orb +937 -0
  170. package/dist/behaviors/registry/core/atoms/std-rich-editor.orb +288 -416
  171. package/dist/behaviors/registry/core/atoms/std-step-flow.orb +1155 -0
  172. package/dist/behaviors/registry/core/atoms/std-version-history.orb +454 -430
  173. package/dist/behaviors/registry/core/atoms/std-wizard.orb +1085 -0
  174. package/dist/behaviors/registry/core/molecules/std-wizard-form.orb +222 -147
  175. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "std-renewal-risk",
3
3
  "version": "1.0.0",
4
- "description": "std-renewal-risk — Customer Success renewal risk tracker for upcoming subscriptions with risk level, ARR, and CS action plan.",
4
+ "description": "std-renewal-risk — Customer Success renewal risk tracker. Lists at-risk accounts in `browsing`; opens detail in `viewing_single` with Mark Saved / Mark Churned actions.",
5
5
  "orbitals": [
6
6
  {
7
7
  "name": "RenewalRiskOrbital",
@@ -91,58 +91,7 @@
91
91
  "linkedEntity": "RenewalRisk",
92
92
  "emits": [
93
93
  {
94
- "event": "VIEW",
95
- "payloadSchema": [
96
- {
97
- "name": "id",
98
- "type": "string",
99
- "required": true
100
- },
101
- {
102
- "name": "source",
103
- "type": "string"
104
- }
105
- ]
106
- },
107
- {
108
- "event": "EDIT",
109
- "payloadSchema": [
110
- {
111
- "name": "id",
112
- "type": "string",
113
- "required": true
114
- },
115
- {
116
- "name": "source",
117
- "type": "string"
118
- }
119
- ]
120
- },
121
- {
122
- "event": "CREATE",
123
- "payloadSchema": [
124
- {
125
- "name": "source",
126
- "type": "string"
127
- }
128
- ]
129
- },
130
- {
131
- "event": "REQUEST_DELETE",
132
- "payloadSchema": [
133
- {
134
- "name": "id",
135
- "type": "string",
136
- "required": true
137
- },
138
- {
139
- "name": "source",
140
- "type": "string"
141
- }
142
- ]
143
- },
144
- {
145
- "event": "MARK_SAVED",
94
+ "event": "OPEN_RISK",
146
95
  "payloadSchema": [
147
96
  {
148
97
  "name": "id",
@@ -203,63 +152,25 @@
203
152
  ]
204
153
  },
205
154
  {
206
- "event": "MARK_CHURNED",
155
+ "event": "CLOSE_VIEW"
156
+ },
157
+ {
158
+ "event": "MARK_SAVED",
207
159
  "payloadSchema": [
208
160
  {
209
161
  "name": "id",
210
162
  "type": "string",
211
163
  "required": true
212
- },
213
- {
214
- "name": "row.id",
215
- "type": "string",
216
- "required": true
217
- },
218
- {
219
- "name": "row.customerId",
220
- "type": "string",
221
- "required": true
222
- },
223
- {
224
- "name": "row.customerName",
225
- "type": "string"
226
- },
164
+ }
165
+ ]
166
+ },
167
+ {
168
+ "event": "MARK_CHURNED",
169
+ "payloadSchema": [
227
170
  {
228
- "name": "row.renewalDate",
171
+ "name": "id",
229
172
  "type": "string",
230
173
  "required": true
231
- },
232
- {
233
- "name": "row.arrAmount",
234
- "type": "number"
235
- },
236
- {
237
- "name": "row.riskLevel",
238
- "type": "string"
239
- },
240
- {
241
- "name": "row.reason",
242
- "type": "string"
243
- },
244
- {
245
- "name": "row.mitigationPlan",
246
- "type": "string"
247
- },
248
- {
249
- "name": "row.status",
250
- "type": "string"
251
- },
252
- {
253
- "name": "row.assignedCsm",
254
- "type": "string"
255
- },
256
- {
257
- "name": "row.lastCheckIn",
258
- "type": "string"
259
- },
260
- {
261
- "name": "row.pendingId",
262
- "type": "string"
263
174
  }
264
175
  ]
265
176
  },
@@ -293,7 +204,10 @@
293
204
  "isInitial": true
294
205
  },
295
206
  {
296
- "name": "viewing"
207
+ "name": "browsing"
208
+ },
209
+ {
210
+ "name": "viewing_single"
297
211
  },
298
212
  {
299
213
  "name": "error"
@@ -329,74 +243,17 @@
329
243
  ]
330
244
  },
331
245
  {
332
- "key": "REFRESH",
333
- "name": "Refresh",
334
- "payloadSchema": [
335
- {
336
- "name": "source",
337
- "type": "string"
338
- }
339
- ]
340
- },
341
- {
342
- "key": "SEARCH",
343
- "name": "Search",
344
- "payloadSchema": [
345
- {
346
- "name": "query",
347
- "type": "string"
348
- }
349
- ]
350
- },
351
- {
352
- "key": "FILTER_RISK",
353
- "name": "Filter Risk",
354
- "payloadSchema": [
355
- {
356
- "name": "riskLevel",
357
- "type": "string"
358
- }
359
- ]
360
- },
361
- {
362
- "key": "FILTER_STATUS",
363
- "name": "Filter Status",
364
- "payloadSchema": [
365
- {
366
- "name": "status",
367
- "type": "string"
368
- }
369
- ]
370
- },
371
- {
372
- "key": "CREATE",
373
- "name": "Create",
374
- "payloadSchema": [
375
- {
376
- "name": "source",
377
- "type": "string"
378
- }
379
- ]
380
- },
381
- {
382
- "key": "VIEW",
383
- "name": "View",
246
+ "key": "OPEN_RISK",
247
+ "name": "Open Risk",
384
248
  "payloadSchema": [
385
249
  {
386
250
  "name": "id",
387
251
  "type": "string",
388
252
  "required": true
389
- }
390
- ]
391
- },
392
- {
393
- "key": "EDIT",
394
- "name": "Edit",
395
- "payloadSchema": [
253
+ },
396
254
  {
397
- "name": "id",
398
- "type": "string",
399
- "required": true
255
+ "name": "row",
256
+ "type": "RenewalRisk"
400
257
  }
401
258
  ]
402
259
  },
@@ -423,15 +280,8 @@
423
280
  ]
424
281
  },
425
282
  {
426
- "key": "REQUEST_DELETE",
427
- "name": "Request Delete",
428
- "payloadSchema": [
429
- {
430
- "name": "id",
431
- "type": "string",
432
- "required": true
433
- }
434
- ]
283
+ "key": "CLOSE_VIEW",
284
+ "name": "Close View"
435
285
  }
436
286
  ],
437
287
  "transitions": [
@@ -445,8 +295,8 @@
445
295
  "RenewalRisk",
446
296
  {
447
297
  "emit": {
448
- "failure": "RenewalRiskLoadFailed",
449
- "success": "RenewalRiskLoaded"
298
+ "success": "RenewalRiskLoaded",
299
+ "failure": "RenewalRiskLoadFailed"
450
300
  }
451
301
  }
452
302
  ],
@@ -454,126 +304,83 @@
454
304
  "render-ui",
455
305
  "main",
456
306
  {
457
- "gap": "md",
458
- "type": "stack",
307
+ "className": "py-12",
459
308
  "children": [
460
309
  {
461
310
  "type": "spinner"
462
311
  },
463
312
  {
464
313
  "content": "Loading renewal risks…",
465
- "variant": "caption",
466
314
  "type": "typography",
315
+ "variant": "caption",
467
316
  "color": "muted"
468
317
  }
469
318
  ],
470
319
  "direction": "vertical",
471
- "align": "center",
472
- "className": "py-12"
320
+ "gap": "md",
321
+ "type": "stack",
322
+ "align": "center"
473
323
  }
474
324
  ]
475
325
  ]
476
326
  },
477
327
  {
478
328
  "from": "loading",
479
- "to": "viewing",
329
+ "to": "browsing",
480
330
  "event": "RenewalRiskLoaded",
481
331
  "effects": [
482
332
  [
483
333
  "render-ui",
484
334
  "main",
485
335
  {
486
- "gap": "md",
487
336
  "direction": "vertical",
337
+ "gap": "md",
488
338
  "type": "stack",
489
339
  "children": [
490
340
  {
341
+ "gap": "sm",
342
+ "align": "center",
491
343
  "type": "stack",
492
344
  "children": [
493
345
  {
494
- "type": "icon",
495
- "name": "alert-triangle"
346
+ "name": "alert-triangle",
347
+ "type": "icon"
496
348
  },
497
349
  {
498
350
  "type": "typography",
499
351
  "variant": "h3",
500
352
  "content": "@config.title"
501
- },
502
- {
503
- "variant": "primary",
504
- "type": "button",
505
- "label": "Track Renewal Risk",
506
- "action": "CREATE"
507
353
  }
508
354
  ],
509
- "direction": "horizontal",
510
- "align": "center",
511
- "gap": "sm"
355
+ "direction": "horizontal"
512
356
  },
513
357
  {
514
- "showArea": true,
515
- "type": "line-chart",
516
- "showGrid": true,
517
- "data": [
518
- {
519
- "date": "Jan",
520
- "value": 8.0
521
- },
522
- {
523
- "date": "Feb",
524
- "value": 11.0
525
- },
526
- {
527
- "value": 9.0,
528
- "date": "Mar"
529
- },
530
- {
531
- "value": 14.0,
532
- "date": "Apr"
533
- },
534
- {
535
- "value": 12.0,
536
- "date": "May"
537
- }
538
- ]
539
- },
540
- {
541
- "fields": [
542
- "title",
543
- "date",
544
- "status",
545
- "description"
546
- ],
547
- "title": "Risk Event Chronology",
548
- "type": "timeline",
549
- "items": [
358
+ "cols": 4.0,
359
+ "type": "simple-grid",
360
+ "children": [
550
361
  {
551
- "id": "flagged",
552
- "title": "Flagged",
553
- "description": "Account flagged at risk",
554
- "status": "complete",
555
- "date": "2026-04-01"
362
+ "type": "stat-display",
363
+ "label": "At-risk accounts",
364
+ "value": "@payload.data.length",
365
+ "icon": "alert-triangle"
556
366
  },
557
367
  {
558
- "title": "Outreach",
559
- "status": "complete",
560
- "id": "outreach",
561
- "description": "CSM outreach attempted",
562
- "date": "2026-04-15"
368
+ "type": "stat-display",
369
+ "icon": "dollar-sign",
370
+ "value": "$1.2M",
371
+ "label": "ARR at risk"
563
372
  },
564
373
  {
565
- "description": "Escalated to leadership",
566
- "title": "Exec Review",
567
- "id": "exec-review",
568
- "status": "active",
569
- "date": "2026-05-01"
374
+ "label": "Critical",
375
+ "value": "8",
376
+ "icon": "flame",
377
+ "type": "stat-display"
570
378
  },
571
379
  {
572
- "title": "Renewal Date",
573
- "id": "renewal",
574
- "status": "pending",
575
- "date": "2026-06-15",
576
- "description": "Subscription renewal"
380
+ "value": "67%",
381
+ "label": "Save rate",
382
+ "type": "stat-display",
383
+ "icon": "trending-up"
577
384
  }
578
385
  ]
579
386
  },
@@ -581,34 +388,23 @@
581
388
  "type": "divider"
582
389
  },
583
390
  {
391
+ "entity": "@payload.data",
392
+ "cols": 1.0,
393
+ "gap": "sm",
584
394
  "itemActions": [
585
395
  {
586
- "variant": "secondary",
587
- "label": "View",
588
- "event": "VIEW"
589
- },
590
- {
591
- "event": "EDIT",
592
- "variant": "secondary",
593
- "label": "Edit"
594
- },
595
- {
596
- "event": "MARK_SAVED",
597
- "label": "Mark Saved",
598
- "variant": "primary"
396
+ "variant": "primary",
397
+ "icon": "arrow-right",
398
+ "label": "Open",
399
+ "event": "OPEN_RISK"
599
400
  },
600
401
  {
601
- "variant": "ghost",
402
+ "variant": "danger",
602
403
  "event": "MARK_CHURNED",
603
404
  "label": "Mark Churned"
604
- },
605
- {
606
- "label": "Delete",
607
- "event": "REQUEST_DELETE",
608
- "variant": "danger"
609
405
  }
610
406
  ],
611
- "entity": "@payload.data",
407
+ "type": "data-grid",
612
408
  "fields": [
613
409
  {
614
410
  "label": "Customer",
@@ -616,9 +412,9 @@
616
412
  "name": "customerName"
617
413
  },
618
414
  {
619
- "label": "Renewal Date",
620
415
  "variant": "caption",
621
- "name": "renewalDate"
416
+ "name": "renewalDate",
417
+ "label": "Renewal"
622
418
  },
623
419
  {
624
420
  "name": "arrAmount",
@@ -626,9 +422,9 @@
626
422
  "variant": "caption"
627
423
  },
628
424
  {
425
+ "name": "riskLevel",
629
426
  "label": "Risk",
630
- "variant": "badge",
631
- "name": "riskLevel"
427
+ "variant": "badge"
632
428
  },
633
429
  {
634
430
  "name": "status",
@@ -636,19 +432,11 @@
636
432
  "variant": "badge"
637
433
  },
638
434
  {
435
+ "label": "CSM",
639
436
  "variant": "caption",
640
- "name": "assignedCsm",
641
- "label": "CSM"
642
- },
643
- {
644
- "label": "Last Check-In",
645
- "name": "lastCheckIn",
646
- "variant": "caption"
437
+ "name": "assignedCsm"
647
438
  }
648
- ],
649
- "type": "data-grid",
650
- "cols": 1.0,
651
- "gap": "sm"
439
+ ]
652
440
  }
653
441
  ]
654
442
  }
@@ -664,27 +452,72 @@
664
452
  "render-ui",
665
453
  "main",
666
454
  {
667
- "variant": "error",
668
455
  "message": "@payload.message",
669
- "type": "alert"
456
+ "type": "alert",
457
+ "variant": "error"
670
458
  }
671
459
  ]
672
460
  ]
673
461
  },
674
462
  {
675
- "from": "viewing",
676
- "to": "loading",
677
- "event": "REFRESH",
463
+ "from": "browsing",
464
+ "to": "viewing_single",
465
+ "event": "OPEN_RISK",
678
466
  "effects": [
679
467
  [
680
- "fetch",
681
- "RenewalRisk",
682
- {
683
- "emit": {
684
- "failure": "RenewalRiskLoadFailed",
685
- "success": "RenewalRiskLoaded"
686
- }
687
- }
468
+ "set",
469
+ "@entity.id",
470
+ "@payload.row.id"
471
+ ],
472
+ [
473
+ "set",
474
+ "@entity.customerId",
475
+ "@payload.row.customerId"
476
+ ],
477
+ [
478
+ "set",
479
+ "@entity.customerName",
480
+ "@payload.row.customerName"
481
+ ],
482
+ [
483
+ "set",
484
+ "@entity.renewalDate",
485
+ "@payload.row.renewalDate"
486
+ ],
487
+ [
488
+ "set",
489
+ "@entity.arrAmount",
490
+ "@payload.row.arrAmount"
491
+ ],
492
+ [
493
+ "set",
494
+ "@entity.riskLevel",
495
+ "@payload.row.riskLevel"
496
+ ],
497
+ [
498
+ "set",
499
+ "@entity.reason",
500
+ "@payload.row.reason"
501
+ ],
502
+ [
503
+ "set",
504
+ "@entity.mitigationPlan",
505
+ "@payload.row.mitigationPlan"
506
+ ],
507
+ [
508
+ "set",
509
+ "@entity.status",
510
+ "@payload.row.status"
511
+ ],
512
+ [
513
+ "set",
514
+ "@entity.assignedCsm",
515
+ "@payload.row.assignedCsm"
516
+ ],
517
+ [
518
+ "set",
519
+ "@entity.lastCheckIn",
520
+ "@payload.row.lastCheckIn"
688
521
  ],
689
522
  [
690
523
  "render-ui",
@@ -692,29 +525,173 @@
692
525
  {
693
526
  "gap": "md",
694
527
  "direction": "vertical",
695
- "className": "py-12",
528
+ "type": "stack",
696
529
  "children": [
697
530
  {
698
- "type": "spinner"
531
+ "align": "center",
532
+ "children": [
533
+ {
534
+ "type": "button",
535
+ "label": "Back",
536
+ "variant": "ghost",
537
+ "action": "CLOSE_VIEW"
538
+ },
539
+ {
540
+ "type": "icon",
541
+ "name": "alert-triangle"
542
+ },
543
+ {
544
+ "content": "@entity.customerName",
545
+ "variant": "h3",
546
+ "type": "typography"
547
+ },
548
+ {
549
+ "variant": "danger",
550
+ "type": "badge",
551
+ "label": "@entity.riskLevel"
552
+ },
553
+ {
554
+ "label": "@entity.status",
555
+ "type": "badge",
556
+ "variant": "default"
557
+ }
558
+ ],
559
+ "type": "stack",
560
+ "direction": "horizontal",
561
+ "gap": "sm"
699
562
  },
700
563
  {
701
- "color": "muted",
702
- "content": "Refreshing renewal risks…",
703
- "type": "typography",
704
- "variant": "caption"
564
+ "type": "divider"
565
+ },
566
+ {
567
+ "children": [
568
+ {
569
+ "direction": "horizontal",
570
+ "gap": "md",
571
+ "children": [
572
+ {
573
+ "color": "muted",
574
+ "type": "typography",
575
+ "variant": "caption",
576
+ "content": "Reason"
577
+ },
578
+ {
579
+ "type": "typography",
580
+ "variant": "body",
581
+ "content": "@entity.reason"
582
+ }
583
+ ],
584
+ "type": "stack"
585
+ },
586
+ {
587
+ "gap": "md",
588
+ "type": "stack",
589
+ "children": [
590
+ {
591
+ "type": "typography",
592
+ "color": "muted",
593
+ "variant": "caption",
594
+ "content": "Mitigation plan"
595
+ },
596
+ {
597
+ "variant": "body",
598
+ "content": "@entity.mitigationPlan",
599
+ "type": "typography"
600
+ }
601
+ ],
602
+ "direction": "horizontal"
603
+ },
604
+ {
605
+ "children": [
606
+ {
607
+ "variant": "caption",
608
+ "content": "CSM",
609
+ "type": "typography",
610
+ "color": "muted"
611
+ },
612
+ {
613
+ "type": "typography",
614
+ "variant": "body",
615
+ "content": "@entity.assignedCsm"
616
+ }
617
+ ],
618
+ "type": "stack",
619
+ "direction": "horizontal",
620
+ "gap": "md"
621
+ }
622
+ ],
623
+ "direction": "vertical",
624
+ "gap": "sm",
625
+ "type": "stack"
626
+ },
627
+ {
628
+ "type": "divider"
629
+ },
630
+ {
631
+ "cols": 3.0,
632
+ "children": [
633
+ {
634
+ "icon": "dollar-sign",
635
+ "value": "@entity.arrAmount",
636
+ "type": "stat-display",
637
+ "label": "ARR"
638
+ },
639
+ {
640
+ "type": "stat-display",
641
+ "value": "@entity.renewalDate",
642
+ "icon": "calendar",
643
+ "label": "Renewal"
644
+ },
645
+ {
646
+ "label": "Last check-in",
647
+ "value": "@entity.lastCheckIn",
648
+ "type": "stat-display",
649
+ "icon": "phone"
650
+ }
651
+ ],
652
+ "type": "simple-grid"
653
+ },
654
+ {
655
+ "direction": "horizontal",
656
+ "align": "center",
657
+ "type": "stack",
658
+ "children": [
659
+ {
660
+ "actionPayload": {
661
+ "id": "@entity.id"
662
+ },
663
+ "action": "MARK_SAVED",
664
+ "type": "button",
665
+ "label": "Mark Saved",
666
+ "variant": "primary"
667
+ },
668
+ {
669
+ "variant": "danger",
670
+ "label": "Mark Churned",
671
+ "type": "button",
672
+ "action": "MARK_CHURNED",
673
+ "actionPayload": {
674
+ "id": "@entity.id"
675
+ }
676
+ }
677
+ ],
678
+ "gap": "sm"
705
679
  }
706
- ],
707
- "align": "center",
708
- "type": "stack"
680
+ ]
709
681
  }
710
682
  ]
711
683
  ]
712
684
  },
713
685
  {
714
- "from": "viewing",
686
+ "from": "browsing",
715
687
  "to": "loading",
716
- "event": "SEARCH",
688
+ "event": "MARK_SAVED",
717
689
  "effects": [
690
+ [
691
+ "set",
692
+ "@entity.id",
693
+ "@payload.id"
694
+ ],
718
695
  [
719
696
  "fetch",
720
697
  "RenewalRisk",
@@ -729,38 +706,43 @@
729
706
  "render-ui",
730
707
  "main",
731
708
  {
732
- "align": "center",
733
709
  "gap": "md",
710
+ "type": "stack",
711
+ "className": "py-12",
734
712
  "children": [
735
713
  {
736
714
  "type": "spinner"
737
715
  },
738
716
  {
739
- "content": "Searching renewal risks…",
740
- "type": "typography",
717
+ "content": "Marking saved…",
741
718
  "variant": "caption",
742
- "color": "muted"
719
+ "color": "muted",
720
+ "type": "typography"
743
721
  }
744
722
  ],
745
- "direction": "vertical",
746
- "className": "py-12",
747
- "type": "stack"
723
+ "align": "center",
724
+ "direction": "vertical"
748
725
  }
749
726
  ]
750
727
  ]
751
728
  },
752
729
  {
753
- "from": "viewing",
730
+ "from": "browsing",
754
731
  "to": "loading",
755
- "event": "FILTER_RISK",
732
+ "event": "MARK_CHURNED",
756
733
  "effects": [
734
+ [
735
+ "set",
736
+ "@entity.id",
737
+ "@payload.id"
738
+ ],
757
739
  [
758
740
  "fetch",
759
741
  "RenewalRisk",
760
742
  {
761
743
  "emit": {
762
- "success": "RenewalRiskLoaded",
763
- "failure": "RenewalRiskLoadFailed"
744
+ "failure": "RenewalRiskLoadFailed",
745
+ "success": "RenewalRiskLoaded"
764
746
  }
765
747
  }
766
748
  ],
@@ -774,32 +756,32 @@
774
756
  "type": "spinner"
775
757
  },
776
758
  {
777
- "content": "Filtering renewal risks…",
778
- "color": "muted",
759
+ "content": "Marking churned…",
779
760
  "type": "typography",
780
- "variant": "caption"
761
+ "variant": "caption",
762
+ "color": "muted"
781
763
  }
782
764
  ],
783
765
  "type": "stack",
784
766
  "direction": "vertical",
785
- "align": "center",
786
- "className": "py-12"
767
+ "className": "py-12",
768
+ "align": "center"
787
769
  }
788
770
  ]
789
771
  ]
790
772
  },
791
773
  {
792
- "from": "viewing",
774
+ "from": "viewing_single",
793
775
  "to": "loading",
794
- "event": "FILTER_STATUS",
776
+ "event": "CLOSE_VIEW",
795
777
  "effects": [
796
778
  [
797
779
  "fetch",
798
780
  "RenewalRisk",
799
781
  {
800
782
  "emit": {
801
- "success": "RenewalRiskLoaded",
802
- "failure": "RenewalRiskLoadFailed"
783
+ "failure": "RenewalRiskLoadFailed",
784
+ "success": "RenewalRiskLoaded"
803
785
  }
804
786
  }
805
787
  ],
@@ -807,46 +789,30 @@
807
789
  "render-ui",
808
790
  "main",
809
791
  {
810
- "align": "center",
811
- "direction": "vertical",
812
792
  "type": "stack",
813
793
  "className": "py-12",
794
+ "gap": "md",
795
+ "align": "center",
814
796
  "children": [
815
797
  {
816
798
  "type": "spinner"
817
799
  },
818
800
  {
819
- "content": "Filtering renewal risks…",
820
801
  "color": "muted",
821
- "variant": "caption",
822
- "type": "typography"
802
+ "type": "typography",
803
+ "content": "Loading renewal risks…",
804
+ "variant": "caption"
823
805
  }
824
806
  ],
825
- "gap": "md"
807
+ "direction": "vertical"
826
808
  }
827
809
  ]
828
810
  ]
829
811
  },
830
812
  {
831
- "from": "viewing",
832
- "to": "viewing",
833
- "event": "CREATE",
834
- "effects": [
835
- [
836
- "render-ui",
837
- "main",
838
- {
839
- "message": "Tracking new renewal risk",
840
- "type": "alert",
841
- "variant": "info"
842
- }
843
- ]
844
- ]
845
- },
846
- {
847
- "from": "viewing",
848
- "to": "viewing",
849
- "event": "VIEW",
813
+ "from": "viewing_single",
814
+ "to": "loading",
815
+ "event": "MARK_SAVED",
850
816
  "effects": [
851
817
  [
852
818
  "set",
@@ -854,61 +820,42 @@
854
820
  "@payload.id"
855
821
  ],
856
822
  [
857
- "render-ui",
858
- "main",
823
+ "fetch",
824
+ "RenewalRisk",
859
825
  {
860
- "message": "Viewing renewal risk",
861
- "type": "alert",
862
- "variant": "info"
826
+ "emit": {
827
+ "failure": "RenewalRiskLoadFailed",
828
+ "success": "RenewalRiskLoaded"
829
+ }
863
830
  }
864
- ]
865
- ]
866
- },
867
- {
868
- "from": "viewing",
869
- "to": "viewing",
870
- "event": "EDIT",
871
- "effects": [
872
- [
873
- "set",
874
- "@entity.id",
875
- "@payload.id"
876
831
  ],
877
832
  [
878
833
  "render-ui",
879
834
  "main",
880
835
  {
881
- "message": "Editing renewal risk",
882
- "type": "alert",
883
- "variant": "info"
884
- }
885
- ]
886
- ]
887
- },
888
- {
889
- "from": "viewing",
890
- "to": "viewing",
891
- "event": "MARK_SAVED",
892
- "effects": [
893
- [
894
- "set",
895
- "@entity.id",
896
- "@payload.id"
897
- ],
898
- [
899
- "render-ui",
900
- "main",
901
- {
902
- "variant": "success",
903
- "type": "alert",
904
- "message": "Renewal saved"
836
+ "className": "py-12",
837
+ "type": "stack",
838
+ "direction": "vertical",
839
+ "children": [
840
+ {
841
+ "type": "spinner"
842
+ },
843
+ {
844
+ "type": "typography",
845
+ "color": "muted",
846
+ "variant": "caption",
847
+ "content": "Marking saved…"
848
+ }
849
+ ],
850
+ "gap": "md",
851
+ "align": "center"
905
852
  }
906
853
  ]
907
854
  ]
908
855
  },
909
856
  {
910
- "from": "viewing",
911
- "to": "viewing",
857
+ "from": "viewing_single",
858
+ "to": "loading",
912
859
  "event": "MARK_CHURNED",
913
860
  "effects": [
914
861
  [
@@ -917,33 +864,35 @@
917
864
  "@payload.id"
918
865
  ],
919
866
  [
920
- "render-ui",
921
- "main",
867
+ "fetch",
868
+ "RenewalRisk",
922
869
  {
923
- "type": "alert",
924
- "variant": "warning",
925
- "message": "Customer churned"
870
+ "emit": {
871
+ "failure": "RenewalRiskLoadFailed",
872
+ "success": "RenewalRiskLoaded"
873
+ }
926
874
  }
927
- ]
928
- ]
929
- },
930
- {
931
- "from": "viewing",
932
- "to": "viewing",
933
- "event": "REQUEST_DELETE",
934
- "effects": [
935
- [
936
- "set",
937
- "@entity.id",
938
- "@payload.id"
939
875
  ],
940
876
  [
941
877
  "render-ui",
942
878
  "main",
943
879
  {
944
- "type": "alert",
945
- "variant": "warning",
946
- "message": "Delete requested"
880
+ "className": "py-12",
881
+ "gap": "md",
882
+ "children": [
883
+ {
884
+ "type": "spinner"
885
+ },
886
+ {
887
+ "content": "Marking churned…",
888
+ "variant": "caption",
889
+ "type": "typography",
890
+ "color": "muted"
891
+ }
892
+ ],
893
+ "type": "stack",
894
+ "direction": "vertical",
895
+ "align": "center"
947
896
  }
948
897
  ]
949
898
  ]
@@ -958,8 +907,8 @@
958
907
  "RenewalRisk",
959
908
  {
960
909
  "emit": {
961
- "success": "RenewalRiskLoaded",
962
- "failure": "RenewalRiskLoadFailed"
910
+ "failure": "RenewalRiskLoadFailed",
911
+ "success": "RenewalRiskLoaded"
963
912
  }
964
913
  }
965
914
  ],
@@ -967,8 +916,8 @@
967
916
  "render-ui",
968
917
  "main",
969
918
  {
970
- "type": "spinner",
971
- "size": "sm"
919
+ "size": "sm",
920
+ "type": "spinner"
972
921
  }
973
922
  ]
974
923
  ]