@almadar/std 15.15.0 → 15.15.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 (273) hide show
  1. package/behaviors/registry/app/atoms/std-ap-bill.orb +423 -171
  2. package/behaviors/registry/app/atoms/std-applicant.orb +207 -165
  3. package/behaviors/registry/app/atoms/std-application.orb +300 -188
  4. package/behaviors/registry/app/atoms/std-approval-request.orb +370 -215
  5. package/behaviors/registry/app/atoms/std-campaign-goal.orb +382 -167
  6. package/behaviors/registry/app/atoms/std-change-order.orb +458 -194
  7. package/behaviors/registry/app/atoms/std-chart-of-accounts.orb +201 -130
  8. package/behaviors/registry/app/atoms/std-checkin.orb +215 -151
  9. package/behaviors/registry/app/atoms/std-checkout-terminal.orb +322 -133
  10. package/behaviors/registry/app/atoms/std-class-roster.orb +343 -170
  11. package/behaviors/registry/app/atoms/std-class-session.orb +321 -190
  12. package/behaviors/registry/app/atoms/std-court-deadline.orb +353 -182
  13. package/behaviors/registry/app/atoms/std-customer-account.orb +376 -157
  14. package/behaviors/registry/app/atoms/std-donation-receipt.orb +214 -143
  15. package/behaviors/registry/app/atoms/std-donor.orb +191 -156
  16. package/behaviors/registry/app/atoms/std-drip-sequence.orb +409 -170
  17. package/behaviors/registry/app/atoms/std-driver.orb +440 -202
  18. package/behaviors/registry/app/atoms/std-dunning.orb +431 -167
  19. package/behaviors/registry/app/atoms/std-email-broadcast.orb +386 -143
  20. package/behaviors/registry/app/atoms/std-event.orb +309 -178
  21. package/behaviors/registry/app/atoms/std-form-builder.orb +353 -220
  22. package/behaviors/registry/app/atoms/std-health-score.orb +218 -183
  23. package/behaviors/registry/app/atoms/std-help-article.orb +425 -162
  24. package/behaviors/registry/app/atoms/std-help-category.orb +409 -166
  25. package/behaviors/registry/app/atoms/std-interview-slot.orb +311 -138
  26. package/behaviors/registry/app/atoms/std-invoice.orb +349 -211
  27. package/behaviors/registry/app/atoms/std-kitchen-display.orb +308 -184
  28. package/behaviors/registry/app/atoms/std-lease.orb +411 -178
  29. package/behaviors/registry/app/atoms/std-ledger-entry.orb +266 -195
  30. package/behaviors/registry/app/atoms/std-maintenance-request.orb +396 -177
  31. package/behaviors/registry/app/atoms/std-matter.orb +415 -189
  32. package/behaviors/registry/app/atoms/std-membership.orb +387 -167
  33. package/behaviors/registry/app/atoms/std-menu.orb +232 -175
  34. package/behaviors/registry/app/atoms/std-modifier-group.orb +224 -167
  35. package/behaviors/registry/app/atoms/std-nps-survey.orb +390 -138
  36. package/behaviors/registry/app/atoms/std-offer-letter.orb +242 -133
  37. package/behaviors/registry/app/atoms/std-payout-ledger.orb +428 -176
  38. package/behaviors/registry/app/atoms/std-question-bank.orb +211 -145
  39. package/behaviors/registry/app/atoms/std-receipt.orb +248 -177
  40. package/behaviors/registry/app/atoms/std-recurring-charge.orb +421 -149
  41. package/behaviors/registry/app/atoms/std-renewal-risk.orb +382 -153
  42. package/behaviors/registry/app/atoms/std-rent-charge.orb +476 -176
  43. package/behaviors/registry/app/atoms/std-reorder-rule.orb +246 -176
  44. package/behaviors/registry/app/atoms/std-response-collector.orb +213 -150
  45. package/behaviors/registry/app/atoms/std-rfi.orb +365 -210
  46. package/behaviors/registry/app/atoms/std-route-optimize.orb +195 -146
  47. package/behaviors/registry/app/atoms/std-segment.orb +173 -139
  48. package/behaviors/registry/app/atoms/std-stock-level.orb +205 -135
  49. package/behaviors/registry/app/atoms/std-submittal.orb +323 -166
  50. package/behaviors/registry/app/atoms/std-table-map.orb +187 -63
  51. package/behaviors/registry/app/atoms/std-technician-dispatch.orb +290 -202
  52. package/behaviors/registry/app/atoms/std-telematics-event.orb +156 -128
  53. package/behaviors/registry/app/atoms/std-template-editor.orb +255 -189
  54. package/behaviors/registry/app/atoms/std-tenant.orb +375 -147
  55. package/behaviors/registry/app/atoms/std-ticket-tier.orb +463 -150
  56. package/behaviors/registry/app/atoms/std-time-entry.orb +259 -150
  57. package/behaviors/registry/app/atoms/std-timesheet.orb +292 -183
  58. package/behaviors/registry/app/atoms/std-trial.orb +401 -183
  59. package/behaviors/registry/app/atoms/std-vehicle.orb +447 -205
  60. package/behaviors/registry/app/atoms/std-vendor-onboarding.orb +289 -245
  61. package/behaviors/registry/app/atoms/std-waitlist.orb +308 -177
  62. package/behaviors/registry/app/atoms/std-warehouse.orb +211 -141
  63. package/behaviors/registry/app/atoms/std-work-order.orb +374 -219
  64. package/behaviors/registry/app/organisms/std-subscription-billing.orb +282 -195
  65. package/behaviors/registry/core/atoms/std-approval-gate.orb +703 -0
  66. package/behaviors/registry/core/atoms/std-audit-capture.orb +150 -64
  67. package/behaviors/registry/core/atoms/std-data-erasure.orb +546 -0
  68. package/behaviors/registry/core/atoms/std-lifecycle.orb +343 -0
  69. package/behaviors/registry/core/atoms/std-notify-on-event.orb +132 -46
  70. package/behaviors/registry/core/atoms/std-reminder-scheduler.orb +330 -0
  71. package/behaviors/registry/marketing/atoms/std-marketing-article.orb +96 -0
  72. package/behaviors/registry/marketing/atoms/std-marketing-case-studies.orb +243 -0
  73. package/behaviors/registry/marketing/atoms/std-marketing-community.orb +134 -0
  74. package/behaviors/registry/marketing/atoms/std-marketing-cta.orb +206 -0
  75. package/behaviors/registry/marketing/atoms/std-marketing-features.orb +193 -0
  76. package/behaviors/registry/marketing/atoms/std-marketing-footer.orb +192 -0
  77. package/behaviors/registry/marketing/atoms/std-marketing-hero.orb +262 -0
  78. package/behaviors/registry/marketing/atoms/std-marketing-nav.orb +190 -0
  79. package/behaviors/registry/marketing/atoms/std-marketing-pricing.orb +232 -0
  80. package/behaviors/registry/marketing/atoms/std-marketing-showcase.orb +276 -0
  81. package/behaviors/registry/marketing/atoms/std-marketing-split.orb +135 -0
  82. package/behaviors/registry/marketing/atoms/std-marketing-stats.orb +120 -0
  83. package/behaviors/registry/marketing/atoms/std-marketing-steps.orb +179 -0
  84. package/behaviors/registry/marketing/atoms/std-marketing-team.orb +192 -0
  85. package/behaviors/registry/marketing/atoms/std-marketing-testimonials.orb +124 -0
  86. package/behaviors/registry/marketing/molecules/std-about-page.orb +440 -0
  87. package/behaviors/registry/marketing/molecules/std-feature-detail-page.orb +371 -0
  88. package/behaviors/registry/marketing/molecules/std-landing-page.orb +521 -0
  89. package/behaviors/registry/marketing/molecules/std-pricing-page.orb +406 -0
  90. package/behaviors/registry/marketing/organisms/std-marketing-site.orb +1654 -0
  91. package/dist/behaviors/behaviors-registry.json +2913 -156
  92. package/dist/behaviors/registry/app/atoms/std-ap-bill.orb +423 -171
  93. package/dist/behaviors/registry/app/atoms/std-applicant.orb +207 -165
  94. package/dist/behaviors/registry/app/atoms/std-application.orb +300 -188
  95. package/dist/behaviors/registry/app/atoms/std-approval-request.orb +370 -215
  96. package/dist/behaviors/registry/app/atoms/std-campaign-goal.orb +382 -167
  97. package/dist/behaviors/registry/app/atoms/std-change-order.orb +458 -194
  98. package/dist/behaviors/registry/app/atoms/std-chart-of-accounts.orb +201 -130
  99. package/dist/behaviors/registry/app/atoms/std-checkin.orb +215 -151
  100. package/dist/behaviors/registry/app/atoms/std-checkout-terminal.orb +322 -133
  101. package/dist/behaviors/registry/app/atoms/std-class-roster.orb +343 -170
  102. package/dist/behaviors/registry/app/atoms/std-class-session.orb +321 -190
  103. package/dist/behaviors/registry/app/atoms/std-court-deadline.orb +353 -182
  104. package/dist/behaviors/registry/app/atoms/std-customer-account.orb +376 -157
  105. package/dist/behaviors/registry/app/atoms/std-donation-receipt.orb +214 -143
  106. package/dist/behaviors/registry/app/atoms/std-donor.orb +191 -156
  107. package/dist/behaviors/registry/app/atoms/std-drip-sequence.orb +409 -170
  108. package/dist/behaviors/registry/app/atoms/std-driver.orb +440 -202
  109. package/dist/behaviors/registry/app/atoms/std-dunning.orb +431 -167
  110. package/dist/behaviors/registry/app/atoms/std-email-broadcast.orb +386 -143
  111. package/dist/behaviors/registry/app/atoms/std-event.orb +309 -178
  112. package/dist/behaviors/registry/app/atoms/std-form-builder.orb +353 -220
  113. package/dist/behaviors/registry/app/atoms/std-health-score.orb +218 -183
  114. package/dist/behaviors/registry/app/atoms/std-help-article.orb +425 -162
  115. package/dist/behaviors/registry/app/atoms/std-help-category.orb +409 -166
  116. package/dist/behaviors/registry/app/atoms/std-interview-slot.orb +311 -138
  117. package/dist/behaviors/registry/app/atoms/std-invoice.orb +349 -211
  118. package/dist/behaviors/registry/app/atoms/std-kitchen-display.orb +308 -184
  119. package/dist/behaviors/registry/app/atoms/std-lease.orb +411 -178
  120. package/dist/behaviors/registry/app/atoms/std-ledger-entry.orb +266 -195
  121. package/dist/behaviors/registry/app/atoms/std-maintenance-request.orb +396 -177
  122. package/dist/behaviors/registry/app/atoms/std-matter.orb +415 -189
  123. package/dist/behaviors/registry/app/atoms/std-membership.orb +387 -167
  124. package/dist/behaviors/registry/app/atoms/std-menu.orb +232 -175
  125. package/dist/behaviors/registry/app/atoms/std-modifier-group.orb +224 -167
  126. package/dist/behaviors/registry/app/atoms/std-nps-survey.orb +390 -138
  127. package/dist/behaviors/registry/app/atoms/std-offer-letter.orb +242 -133
  128. package/dist/behaviors/registry/app/atoms/std-payout-ledger.orb +428 -176
  129. package/dist/behaviors/registry/app/atoms/std-question-bank.orb +211 -145
  130. package/dist/behaviors/registry/app/atoms/std-receipt.orb +248 -177
  131. package/dist/behaviors/registry/app/atoms/std-recurring-charge.orb +421 -149
  132. package/dist/behaviors/registry/app/atoms/std-renewal-risk.orb +382 -153
  133. package/dist/behaviors/registry/app/atoms/std-rent-charge.orb +476 -176
  134. package/dist/behaviors/registry/app/atoms/std-reorder-rule.orb +246 -176
  135. package/dist/behaviors/registry/app/atoms/std-response-collector.orb +213 -150
  136. package/dist/behaviors/registry/app/atoms/std-rfi.orb +365 -210
  137. package/dist/behaviors/registry/app/atoms/std-route-optimize.orb +195 -146
  138. package/dist/behaviors/registry/app/atoms/std-segment.orb +173 -139
  139. package/dist/behaviors/registry/app/atoms/std-stock-level.orb +205 -135
  140. package/dist/behaviors/registry/app/atoms/std-submittal.orb +323 -166
  141. package/dist/behaviors/registry/app/atoms/std-table-map.orb +187 -63
  142. package/dist/behaviors/registry/app/atoms/std-technician-dispatch.orb +290 -202
  143. package/dist/behaviors/registry/app/atoms/std-telematics-event.orb +156 -128
  144. package/dist/behaviors/registry/app/atoms/std-template-editor.orb +255 -189
  145. package/dist/behaviors/registry/app/atoms/std-tenant.orb +375 -147
  146. package/dist/behaviors/registry/app/atoms/std-ticket-tier.orb +463 -150
  147. package/dist/behaviors/registry/app/atoms/std-time-entry.orb +259 -150
  148. package/dist/behaviors/registry/app/atoms/std-timesheet.orb +292 -183
  149. package/dist/behaviors/registry/app/atoms/std-trial.orb +401 -183
  150. package/dist/behaviors/registry/app/atoms/std-vehicle.orb +447 -205
  151. package/dist/behaviors/registry/app/atoms/std-vendor-onboarding.orb +289 -245
  152. package/dist/behaviors/registry/app/atoms/std-waitlist.orb +308 -177
  153. package/dist/behaviors/registry/app/atoms/std-warehouse.orb +211 -141
  154. package/dist/behaviors/registry/app/atoms/std-work-order.orb +374 -219
  155. package/dist/behaviors/registry/app/organisms/std-subscription-billing.orb +282 -195
  156. package/dist/behaviors/registry/core/atoms/std-approval-gate.orb +703 -0
  157. package/dist/behaviors/registry/core/atoms/std-audit-capture.orb +150 -64
  158. package/dist/behaviors/registry/core/atoms/std-data-erasure.orb +546 -0
  159. package/dist/behaviors/registry/core/atoms/std-lifecycle.orb +343 -0
  160. package/dist/behaviors/registry/core/atoms/std-notify-on-event.orb +132 -46
  161. package/dist/behaviors/registry/core/atoms/std-reminder-scheduler.orb +330 -0
  162. package/dist/behaviors/registry/marketing/atoms/std-marketing-article.orb +96 -0
  163. package/dist/behaviors/registry/marketing/atoms/std-marketing-case-studies.orb +243 -0
  164. package/dist/behaviors/registry/marketing/atoms/std-marketing-community.orb +134 -0
  165. package/dist/behaviors/registry/marketing/atoms/std-marketing-cta.orb +206 -0
  166. package/dist/behaviors/registry/marketing/atoms/std-marketing-features.orb +193 -0
  167. package/dist/behaviors/registry/marketing/atoms/std-marketing-footer.orb +192 -0
  168. package/dist/behaviors/registry/marketing/atoms/std-marketing-hero.orb +262 -0
  169. package/dist/behaviors/registry/marketing/atoms/std-marketing-nav.orb +190 -0
  170. package/dist/behaviors/registry/marketing/atoms/std-marketing-pricing.orb +232 -0
  171. package/dist/behaviors/registry/marketing/atoms/std-marketing-showcase.orb +276 -0
  172. package/dist/behaviors/registry/marketing/atoms/std-marketing-split.orb +135 -0
  173. package/dist/behaviors/registry/marketing/atoms/std-marketing-stats.orb +120 -0
  174. package/dist/behaviors/registry/marketing/atoms/std-marketing-steps.orb +179 -0
  175. package/dist/behaviors/registry/marketing/atoms/std-marketing-team.orb +192 -0
  176. package/dist/behaviors/registry/marketing/atoms/std-marketing-testimonials.orb +124 -0
  177. package/dist/behaviors/registry/marketing/molecules/std-about-page.orb +440 -0
  178. package/dist/behaviors/registry/marketing/molecules/std-feature-detail-page.orb +371 -0
  179. package/dist/behaviors/registry/marketing/molecules/std-landing-page.orb +521 -0
  180. package/dist/behaviors/registry/marketing/molecules/std-pricing-page.orb +406 -0
  181. package/dist/behaviors/registry/marketing/organisms/std-marketing-site.orb +1654 -0
  182. package/dist/behaviors-registry.json +2913 -156
  183. package/dist/registry/app/atoms/std-ap-bill.orb +423 -171
  184. package/dist/registry/app/atoms/std-applicant.orb +207 -165
  185. package/dist/registry/app/atoms/std-application.orb +300 -188
  186. package/dist/registry/app/atoms/std-approval-request.orb +370 -215
  187. package/dist/registry/app/atoms/std-campaign-goal.orb +382 -167
  188. package/dist/registry/app/atoms/std-change-order.orb +458 -194
  189. package/dist/registry/app/atoms/std-chart-of-accounts.orb +201 -130
  190. package/dist/registry/app/atoms/std-checkin.orb +215 -151
  191. package/dist/registry/app/atoms/std-checkout-terminal.orb +322 -133
  192. package/dist/registry/app/atoms/std-class-roster.orb +343 -170
  193. package/dist/registry/app/atoms/std-class-session.orb +321 -190
  194. package/dist/registry/app/atoms/std-court-deadline.orb +353 -182
  195. package/dist/registry/app/atoms/std-customer-account.orb +376 -157
  196. package/dist/registry/app/atoms/std-donation-receipt.orb +214 -143
  197. package/dist/registry/app/atoms/std-donor.orb +191 -156
  198. package/dist/registry/app/atoms/std-drip-sequence.orb +409 -170
  199. package/dist/registry/app/atoms/std-driver.orb +440 -202
  200. package/dist/registry/app/atoms/std-dunning.orb +431 -167
  201. package/dist/registry/app/atoms/std-email-broadcast.orb +386 -143
  202. package/dist/registry/app/atoms/std-event.orb +309 -178
  203. package/dist/registry/app/atoms/std-form-builder.orb +353 -220
  204. package/dist/registry/app/atoms/std-health-score.orb +218 -183
  205. package/dist/registry/app/atoms/std-help-article.orb +425 -162
  206. package/dist/registry/app/atoms/std-help-category.orb +409 -166
  207. package/dist/registry/app/atoms/std-interview-slot.orb +311 -138
  208. package/dist/registry/app/atoms/std-invoice.orb +349 -211
  209. package/dist/registry/app/atoms/std-kitchen-display.orb +308 -184
  210. package/dist/registry/app/atoms/std-lease.orb +411 -178
  211. package/dist/registry/app/atoms/std-ledger-entry.orb +266 -195
  212. package/dist/registry/app/atoms/std-maintenance-request.orb +396 -177
  213. package/dist/registry/app/atoms/std-matter.orb +415 -189
  214. package/dist/registry/app/atoms/std-membership.orb +387 -167
  215. package/dist/registry/app/atoms/std-menu.orb +232 -175
  216. package/dist/registry/app/atoms/std-modifier-group.orb +224 -167
  217. package/dist/registry/app/atoms/std-nps-survey.orb +390 -138
  218. package/dist/registry/app/atoms/std-offer-letter.orb +242 -133
  219. package/dist/registry/app/atoms/std-payout-ledger.orb +428 -176
  220. package/dist/registry/app/atoms/std-question-bank.orb +211 -145
  221. package/dist/registry/app/atoms/std-receipt.orb +248 -177
  222. package/dist/registry/app/atoms/std-recurring-charge.orb +421 -149
  223. package/dist/registry/app/atoms/std-renewal-risk.orb +382 -153
  224. package/dist/registry/app/atoms/std-rent-charge.orb +476 -176
  225. package/dist/registry/app/atoms/std-reorder-rule.orb +246 -176
  226. package/dist/registry/app/atoms/std-response-collector.orb +213 -150
  227. package/dist/registry/app/atoms/std-rfi.orb +365 -210
  228. package/dist/registry/app/atoms/std-route-optimize.orb +195 -146
  229. package/dist/registry/app/atoms/std-segment.orb +173 -139
  230. package/dist/registry/app/atoms/std-stock-level.orb +205 -135
  231. package/dist/registry/app/atoms/std-submittal.orb +323 -166
  232. package/dist/registry/app/atoms/std-table-map.orb +187 -63
  233. package/dist/registry/app/atoms/std-technician-dispatch.orb +290 -202
  234. package/dist/registry/app/atoms/std-telematics-event.orb +156 -128
  235. package/dist/registry/app/atoms/std-template-editor.orb +255 -189
  236. package/dist/registry/app/atoms/std-tenant.orb +375 -147
  237. package/dist/registry/app/atoms/std-ticket-tier.orb +463 -150
  238. package/dist/registry/app/atoms/std-time-entry.orb +259 -150
  239. package/dist/registry/app/atoms/std-timesheet.orb +292 -183
  240. package/dist/registry/app/atoms/std-trial.orb +401 -183
  241. package/dist/registry/app/atoms/std-vehicle.orb +447 -205
  242. package/dist/registry/app/atoms/std-vendor-onboarding.orb +289 -245
  243. package/dist/registry/app/atoms/std-waitlist.orb +308 -177
  244. package/dist/registry/app/atoms/std-warehouse.orb +211 -141
  245. package/dist/registry/app/atoms/std-work-order.orb +374 -219
  246. package/dist/registry/app/organisms/std-subscription-billing.orb +282 -195
  247. package/dist/registry/core/atoms/std-approval-gate.orb +703 -0
  248. package/dist/registry/core/atoms/std-audit-capture.orb +150 -64
  249. package/dist/registry/core/atoms/std-data-erasure.orb +546 -0
  250. package/dist/registry/core/atoms/std-lifecycle.orb +343 -0
  251. package/dist/registry/core/atoms/std-notify-on-event.orb +132 -46
  252. package/dist/registry/core/atoms/std-reminder-scheduler.orb +330 -0
  253. package/dist/registry/marketing/atoms/std-marketing-article.orb +96 -0
  254. package/dist/registry/marketing/atoms/std-marketing-case-studies.orb +243 -0
  255. package/dist/registry/marketing/atoms/std-marketing-community.orb +134 -0
  256. package/dist/registry/marketing/atoms/std-marketing-cta.orb +206 -0
  257. package/dist/registry/marketing/atoms/std-marketing-features.orb +193 -0
  258. package/dist/registry/marketing/atoms/std-marketing-footer.orb +192 -0
  259. package/dist/registry/marketing/atoms/std-marketing-hero.orb +262 -0
  260. package/dist/registry/marketing/atoms/std-marketing-nav.orb +190 -0
  261. package/dist/registry/marketing/atoms/std-marketing-pricing.orb +232 -0
  262. package/dist/registry/marketing/atoms/std-marketing-showcase.orb +276 -0
  263. package/dist/registry/marketing/atoms/std-marketing-split.orb +135 -0
  264. package/dist/registry/marketing/atoms/std-marketing-stats.orb +120 -0
  265. package/dist/registry/marketing/atoms/std-marketing-steps.orb +179 -0
  266. package/dist/registry/marketing/atoms/std-marketing-team.orb +192 -0
  267. package/dist/registry/marketing/atoms/std-marketing-testimonials.orb +124 -0
  268. package/dist/registry/marketing/molecules/std-about-page.orb +440 -0
  269. package/dist/registry/marketing/molecules/std-feature-detail-page.orb +371 -0
  270. package/dist/registry/marketing/molecules/std-landing-page.orb +521 -0
  271. package/dist/registry/marketing/molecules/std-pricing-page.orb +406 -0
  272. package/dist/registry/marketing/organisms/std-marketing-site.orb +1654 -0
  273. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "std-technician-dispatch",
3
- "version": "1.1.0",
4
- "description": "std-technician-dispatch — dispatch board for field technicians. Lists technicians in `browsing`; opens detail in `viewing_single` with Assign / Accept / Reject / Toggle Availability actions. Agents tune the list shape via `config.fields` + `config.itemActions`.",
3
+ "version": "1.2.0",
4
+ "description": "std-technician-dispatch — dispatch board for field technicians. Exposes Service/Operations knobs (serviceAreaRadius, dispatchStrategy, responseTimeMinutes, …).",
5
5
  "orbitals": [
6
6
  {
7
7
  "name": "TechnicianDispatchOrbital",
@@ -445,22 +445,22 @@
445
445
  "render-ui",
446
446
  "main",
447
447
  {
448
- "direction": "vertical",
449
- "type": "stack",
450
448
  "align": "center",
451
- "className": "py-12",
452
- "gap": "md",
453
449
  "children": [
454
450
  {
455
451
  "type": "spinner"
456
452
  },
457
453
  {
454
+ "variant": "caption",
458
455
  "color": "muted",
459
456
  "content": "Loading technicians…",
460
- "type": "typography",
461
- "variant": "caption"
457
+ "type": "typography"
462
458
  }
463
- ]
459
+ ],
460
+ "className": "py-12",
461
+ "type": "stack",
462
+ "direction": "vertical",
463
+ "gap": "md"
464
464
  }
465
465
  ]
466
466
  ]
@@ -474,47 +474,47 @@
474
474
  "render-ui",
475
475
  "main",
476
476
  {
477
- "gap": "md",
478
- "direction": "vertical",
479
477
  "type": "stack",
478
+ "gap": "md",
480
479
  "children": [
481
480
  {
482
- "gap": "sm",
483
- "type": "stack",
484
- "direction": "horizontal",
485
- "align": "center",
486
481
  "children": [
487
482
  {
488
483
  "name": "hard-hat",
489
484
  "type": "icon"
490
485
  },
491
486
  {
487
+ "variant": "h3",
492
488
  "type": "typography",
493
- "content": "@config.title",
494
- "variant": "h3"
489
+ "content": "@config.title"
495
490
  }
496
- ]
491
+ ],
492
+ "type": "stack",
493
+ "direction": "horizontal",
494
+ "gap": "sm",
495
+ "align": "center"
497
496
  },
498
497
  {
499
498
  "cols": 4.0,
499
+ "type": "simple-grid",
500
500
  "children": [
501
501
  {
502
+ "label": "Total technicians",
502
503
  "type": "stat-display",
503
504
  "value": "@payload.data.length",
504
- "label": "Total technicians",
505
505
  "icon": "users"
506
506
  },
507
507
  {
508
- "type": "stat-display",
508
+ "value": "18",
509
509
  "label": "Available now",
510
510
  "icon": "check-circle",
511
- "value": "18"
511
+ "type": "stat-display"
512
512
  },
513
513
  {
514
- "value": "9",
515
- "icon": "navigation",
514
+ "label": "On assignment",
516
515
  "type": "stat-display",
517
- "label": "On assignment"
516
+ "value": "9",
517
+ "icon": "navigation"
518
518
  },
519
519
  {
520
520
  "type": "stat-display",
@@ -522,21 +522,21 @@
522
522
  "value": "12m",
523
523
  "icon": "clock"
524
524
  }
525
- ],
526
- "type": "simple-grid"
525
+ ]
527
526
  },
528
527
  {
529
528
  "type": "divider"
530
529
  },
531
530
  {
532
- "type": "data-grid",
531
+ "fields": "@config.fields",
533
532
  "itemActions": "@config.itemActions",
534
- "cols": 1.0,
533
+ "type": "data-grid",
534
+ "gap": "sm",
535
535
  "entity": "@payload.data",
536
- "fields": "@config.fields",
537
- "gap": "sm"
536
+ "cols": 1.0
538
537
  }
539
- ]
538
+ ],
539
+ "direction": "vertical"
540
540
  }
541
541
  ]
542
542
  ]
@@ -550,9 +550,9 @@
550
550
  "render-ui",
551
551
  "main",
552
552
  {
553
- "type": "alert",
554
553
  "variant": "error",
555
- "message": "@payload.error"
554
+ "message": "@payload.error",
555
+ "type": "alert"
556
556
  }
557
557
  ]
558
558
  ]
@@ -611,88 +611,90 @@
611
611
  "render-ui",
612
612
  "main",
613
613
  {
614
+ "direction": "vertical",
615
+ "type": "stack",
614
616
  "gap": "md",
615
617
  "children": [
616
618
  {
619
+ "type": "stack",
620
+ "direction": "horizontal",
621
+ "gap": "sm",
622
+ "align": "center",
617
623
  "children": [
618
624
  {
625
+ "type": "button",
619
626
  "label": "Back",
620
627
  "variant": "ghost",
621
- "type": "button",
622
628
  "action": "CLOSE_VIEW"
623
629
  },
624
630
  {
625
- "type": "icon",
626
- "name": "hard-hat"
631
+ "name": "hard-hat",
632
+ "type": "icon"
627
633
  },
628
634
  {
629
635
  "content": "@entity.name",
630
- "variant": "h3",
631
- "type": "typography"
636
+ "type": "typography",
637
+ "variant": "h3"
632
638
  },
633
639
  {
634
640
  "type": "badge",
635
641
  "label": "@entity.lastSeenAt",
636
642
  "variant": "primary"
637
643
  }
638
- ],
639
- "type": "stack",
640
- "align": "center",
641
- "direction": "horizontal",
642
- "gap": "sm"
644
+ ]
643
645
  },
644
646
  {
645
647
  "type": "divider"
646
648
  },
647
649
  {
648
650
  "type": "stack",
651
+ "gap": "sm",
649
652
  "direction": "vertical",
650
653
  "children": [
651
654
  {
652
- "direction": "horizontal",
653
655
  "type": "stack",
656
+ "direction": "horizontal",
654
657
  "gap": "md",
655
658
  "children": [
656
659
  {
657
660
  "variant": "caption",
658
- "color": "muted",
659
661
  "type": "typography",
662
+ "color": "muted",
660
663
  "content": "Phone"
661
664
  },
662
665
  {
663
- "variant": "body",
666
+ "type": "typography",
664
667
  "content": "@entity.phone",
665
- "type": "typography"
668
+ "variant": "body"
666
669
  }
667
670
  ]
668
671
  },
669
672
  {
670
- "gap": "md",
671
- "type": "stack",
672
673
  "children": [
673
674
  {
674
675
  "type": "typography",
675
- "content": "Current order",
676
676
  "color": "muted",
677
- "variant": "caption"
677
+ "variant": "caption",
678
+ "content": "Current order"
678
679
  },
679
680
  {
680
- "variant": "body",
681
681
  "type": "typography",
682
+ "variant": "body",
682
683
  "content": "@entity.currentOrderId"
683
684
  }
684
685
  ],
685
- "direction": "horizontal"
686
+ "direction": "horizontal",
687
+ "gap": "md",
688
+ "type": "stack"
686
689
  },
687
690
  {
688
691
  "direction": "horizontal",
689
- "gap": "md",
690
692
  "children": [
691
693
  {
692
- "variant": "caption",
694
+ "content": "Last seen",
693
695
  "type": "typography",
694
- "color": "muted",
695
- "content": "Last seen"
696
+ "variant": "caption",
697
+ "color": "muted"
696
698
  },
697
699
  {
698
700
  "variant": "body",
@@ -700,21 +702,21 @@
700
702
  "content": "@entity.lastSeenAt"
701
703
  }
702
704
  ],
705
+ "gap": "md",
703
706
  "type": "stack"
704
707
  }
705
- ],
706
- "gap": "sm"
708
+ ]
707
709
  },
708
710
  {
709
711
  "type": "divider"
710
712
  },
711
713
  {
712
- "type": "simple-grid",
714
+ "cols": 2.0,
713
715
  "children": [
714
716
  {
717
+ "icon": "map-pin",
715
718
  "type": "stat-display",
716
719
  "label": "Latitude",
717
- "icon": "map-pin",
718
720
  "value": "@entity.lat"
719
721
  },
720
722
  {
@@ -724,57 +726,55 @@
724
726
  "type": "stat-display"
725
727
  }
726
728
  ],
727
- "cols": 2.0
729
+ "type": "simple-grid"
728
730
  },
729
731
  {
730
732
  "align": "center",
731
- "gap": "sm",
732
733
  "type": "stack",
733
- "direction": "horizontal",
734
+ "gap": "sm",
734
735
  "children": [
735
736
  {
736
737
  "action": "ASSIGN",
738
+ "type": "button",
739
+ "label": "Assign",
740
+ "variant": "primary",
737
741
  "actionPayload": {
738
742
  "technicianId": "@entity.id",
739
743
  "orderId": "@entity.currentOrderId"
740
- },
741
- "variant": "primary",
742
- "label": "Assign",
743
- "type": "button"
744
+ }
744
745
  },
745
746
  {
746
- "type": "button",
747
- "label": "Accept",
748
747
  "variant": "secondary",
749
- "action": "ACCEPT",
748
+ "type": "button",
750
749
  "actionPayload": {
751
750
  "technicianId": "@entity.id"
752
- }
751
+ },
752
+ "action": "ACCEPT",
753
+ "label": "Accept"
753
754
  },
754
755
  {
756
+ "variant": "danger",
757
+ "type": "button",
758
+ "action": "REJECT",
755
759
  "actionPayload": {
756
760
  "technicianId": "@entity.id"
757
761
  },
758
- "label": "Reject",
759
- "type": "button",
760
- "variant": "danger",
761
- "action": "REJECT"
762
+ "label": "Reject"
762
763
  },
763
764
  {
764
- "type": "button",
765
- "variant": "secondary",
766
765
  "action": "TOGGLE_AVAILABLE",
766
+ "label": "Toggle Available",
767
+ "variant": "secondary",
767
768
  "actionPayload": {
768
769
  "technicianId": "@entity.id",
769
770
  "available": false
770
771
  },
771
- "label": "Toggle Available"
772
+ "type": "button"
772
773
  }
773
- ]
774
+ ],
775
+ "direction": "horizontal"
774
776
  }
775
- ],
776
- "type": "stack",
777
- "direction": "vertical"
777
+ ]
778
778
  }
779
779
  ]
780
780
  ]
@@ -794,8 +794,8 @@
794
794
  "Technician",
795
795
  {
796
796
  "emit": {
797
- "failure": "TechnicianLoadFailed",
798
- "success": "TechnicianLoaded"
797
+ "success": "TechnicianLoaded",
798
+ "failure": "TechnicianLoadFailed"
799
799
  }
800
800
  }
801
801
  ],
@@ -803,22 +803,22 @@
803
803
  "render-ui",
804
804
  "main",
805
805
  {
806
- "direction": "vertical",
806
+ "className": "py-12",
807
+ "gap": "md",
808
+ "align": "center",
807
809
  "children": [
808
810
  {
809
811
  "type": "spinner"
810
812
  },
811
813
  {
812
- "color": "muted",
813
- "variant": "caption",
814
814
  "type": "typography",
815
- "content": "Assigning technician…"
815
+ "content": "Assigning technician…",
816
+ "variant": "caption",
817
+ "color": "muted"
816
818
  }
817
819
  ],
818
820
  "type": "stack",
819
- "gap": "md",
820
- "align": "center",
821
- "className": "py-12"
821
+ "direction": "vertical"
822
822
  }
823
823
  ]
824
824
  ]
@@ -859,8 +859,8 @@
859
859
  "Technician",
860
860
  {
861
861
  "emit": {
862
- "success": "TechnicianLoaded",
863
- "failure": "TechnicianLoadFailed"
862
+ "failure": "TechnicianLoadFailed",
863
+ "success": "TechnicianLoaded"
864
864
  }
865
865
  }
866
866
  ],
@@ -868,22 +868,22 @@
868
868
  "render-ui",
869
869
  "main",
870
870
  {
871
+ "type": "stack",
872
+ "align": "center",
873
+ "className": "py-12",
874
+ "direction": "vertical",
875
+ "gap": "md",
871
876
  "children": [
872
877
  {
873
878
  "type": "spinner"
874
879
  },
875
880
  {
876
- "variant": "caption",
877
- "color": "muted",
878
881
  "content": "Releasing technician…",
879
- "type": "typography"
882
+ "type": "typography",
883
+ "variant": "caption",
884
+ "color": "muted"
880
885
  }
881
- ],
882
- "align": "center",
883
- "className": "py-12",
884
- "type": "stack",
885
- "direction": "vertical",
886
- "gap": "md"
886
+ ]
887
887
  }
888
888
  ]
889
889
  ]
@@ -919,22 +919,22 @@
919
919
  "render-ui",
920
920
  "main",
921
921
  {
922
- "gap": "md",
922
+ "className": "py-12",
923
923
  "type": "stack",
924
- "align": "center",
924
+ "direction": "vertical",
925
+ "gap": "md",
925
926
  "children": [
926
927
  {
927
928
  "type": "spinner"
928
929
  },
929
930
  {
930
- "variant": "caption",
931
931
  "type": "typography",
932
+ "variant": "caption",
932
933
  "color": "muted",
933
934
  "content": "Updating availability…"
934
935
  }
935
936
  ],
936
- "direction": "vertical",
937
- "className": "py-12"
937
+ "align": "center"
938
938
  }
939
939
  ]
940
940
  ]
@@ -949,8 +949,8 @@
949
949
  "Technician",
950
950
  {
951
951
  "emit": {
952
- "failure": "TechnicianLoadFailed",
953
- "success": "TechnicianLoaded"
952
+ "success": "TechnicianLoaded",
953
+ "failure": "TechnicianLoadFailed"
954
954
  }
955
955
  }
956
956
  ]
@@ -966,8 +966,8 @@
966
966
  "main",
967
967
  {
968
968
  "type": "alert",
969
- "variant": "error",
970
- "message": "@payload.error"
969
+ "message": "@payload.error",
970
+ "variant": "error"
971
971
  }
972
972
  ]
973
973
  ]
@@ -992,8 +992,8 @@
992
992
  "Technician",
993
993
  {
994
994
  "emit": {
995
- "success": "TechnicianLoaded",
996
- "failure": "TechnicianLoadFailed"
995
+ "failure": "TechnicianLoadFailed",
996
+ "success": "TechnicianLoaded"
997
997
  }
998
998
  }
999
999
  ],
@@ -1001,22 +1001,22 @@
1001
1001
  "render-ui",
1002
1002
  "main",
1003
1003
  {
1004
- "direction": "vertical",
1005
- "align": "center",
1006
1004
  "children": [
1007
1005
  {
1008
1006
  "type": "spinner"
1009
1007
  },
1010
1008
  {
1011
1009
  "variant": "caption",
1012
- "type": "typography",
1013
1010
  "color": "muted",
1011
+ "type": "typography",
1014
1012
  "content": "Loading technicians…"
1015
1013
  }
1016
1014
  ],
1017
- "className": "py-12",
1015
+ "direction": "vertical",
1016
+ "gap": "md",
1018
1017
  "type": "stack",
1019
- "gap": "md"
1018
+ "className": "py-12",
1019
+ "align": "center"
1020
1020
  }
1021
1021
  ]
1022
1022
  ]
@@ -1045,22 +1045,22 @@
1045
1045
  "render-ui",
1046
1046
  "main",
1047
1047
  {
1048
- "className": "py-12",
1049
1048
  "direction": "vertical",
1050
- "type": "stack",
1051
1049
  "align": "center",
1052
- "gap": "md",
1050
+ "className": "py-12",
1053
1051
  "children": [
1054
1052
  {
1055
1053
  "type": "spinner"
1056
1054
  },
1057
1055
  {
1058
1056
  "content": "Assigning technician…",
1059
- "variant": "caption",
1060
1057
  "type": "typography",
1061
- "color": "muted"
1058
+ "color": "muted",
1059
+ "variant": "caption"
1062
1060
  }
1063
- ]
1061
+ ],
1062
+ "gap": "md",
1063
+ "type": "stack"
1064
1064
  }
1065
1065
  ]
1066
1066
  ]
@@ -1080,8 +1080,8 @@
1080
1080
  "Technician",
1081
1081
  {
1082
1082
  "emit": {
1083
- "failure": "TechnicianLoadFailed",
1084
- "success": "TechnicianLoaded"
1083
+ "success": "TechnicianLoaded",
1084
+ "failure": "TechnicianLoadFailed"
1085
1085
  }
1086
1086
  }
1087
1087
  ],
@@ -1089,19 +1089,19 @@
1089
1089
  "render-ui",
1090
1090
  "main",
1091
1091
  {
1092
- "direction": "vertical",
1092
+ "gap": "md",
1093
1093
  "type": "stack",
1094
1094
  "className": "py-12",
1095
- "gap": "md",
1095
+ "direction": "vertical",
1096
1096
  "children": [
1097
1097
  {
1098
1098
  "type": "spinner"
1099
1099
  },
1100
1100
  {
1101
1101
  "type": "typography",
1102
- "variant": "caption",
1102
+ "color": "muted",
1103
1103
  "content": "Confirming assignment…",
1104
- "color": "muted"
1104
+ "variant": "caption"
1105
1105
  }
1106
1106
  ],
1107
1107
  "align": "center"
@@ -1133,22 +1133,22 @@
1133
1133
  "render-ui",
1134
1134
  "main",
1135
1135
  {
1136
+ "align": "center",
1137
+ "direction": "vertical",
1138
+ "type": "stack",
1139
+ "className": "py-12",
1136
1140
  "children": [
1137
1141
  {
1138
1142
  "type": "spinner"
1139
1143
  },
1140
1144
  {
1141
1145
  "type": "typography",
1142
- "color": "muted",
1143
1146
  "variant": "caption",
1144
- "content": "Releasing technician…"
1147
+ "content": "Releasing technician…",
1148
+ "color": "muted"
1145
1149
  }
1146
1150
  ],
1147
- "direction": "vertical",
1148
- "type": "stack",
1149
- "align": "center",
1150
- "gap": "md",
1151
- "className": "py-12"
1151
+ "gap": "md"
1152
1152
  }
1153
1153
  ]
1154
1154
  ]
@@ -1168,8 +1168,8 @@
1168
1168
  "Technician",
1169
1169
  {
1170
1170
  "emit": {
1171
- "failure": "TechnicianLoadFailed",
1172
- "success": "TechnicianLoaded"
1171
+ "success": "TechnicianLoaded",
1172
+ "failure": "TechnicianLoadFailed"
1173
1173
  }
1174
1174
  }
1175
1175
  ],
@@ -1178,21 +1178,21 @@
1178
1178
  "main",
1179
1179
  {
1180
1180
  "type": "stack",
1181
- "gap": "md",
1182
1181
  "direction": "vertical",
1182
+ "gap": "md",
1183
1183
  "className": "py-12",
1184
+ "align": "center",
1184
1185
  "children": [
1185
1186
  {
1186
1187
  "type": "spinner"
1187
1188
  },
1188
1189
  {
1190
+ "variant": "caption",
1189
1191
  "color": "muted",
1190
1192
  "content": "Updating availability…",
1191
- "type": "typography",
1192
- "variant": "caption"
1193
+ "type": "typography"
1193
1194
  }
1194
- ],
1195
- "align": "center"
1195
+ ]
1196
1196
  }
1197
1197
  ]
1198
1198
  ]
@@ -1225,48 +1225,21 @@
1225
1225
  ]
1226
1226
  },
1227
1227
  "config": {
1228
- "itemActions": {
1229
- "type": "[ItemAction]",
1230
- "default": [
1231
- {
1232
- "icon": "arrow-right",
1233
- "label": "Open",
1234
- "event": "OPEN_TECHNICIAN",
1235
- "variant": "primary"
1236
- },
1237
- {
1238
- "variant": "danger",
1239
- "event": "ASSIGN",
1240
- "label": "Assign"
1241
- }
1242
- ],
1243
- "label": "Row actions",
1244
- "description": "Buttons users can click on each technician row",
1228
+ "responseTimeMinutes": {
1229
+ "type": "number",
1230
+ "default": 30.0,
1231
+ "label": "Response time SLA (min)",
1232
+ "description": "Target minutes from dispatch to tech acknowledgement.",
1233
+ "tier": "essential"
1234
+ },
1235
+ "serviceZones": {
1236
+ "type": "[string]",
1237
+ "default": [],
1238
+ "label": "Service zones",
1239
+ "description": "Named geographic zones for dispatch grouping. Empty = no zone restriction.",
1245
1240
  "tier": "customization",
1246
1241
  "items": {
1247
- "type": "object",
1248
- "properties": {
1249
- "icon": {
1250
- "name": "icon",
1251
- "type": "string",
1252
- "required": false
1253
- },
1254
- "event": {
1255
- "name": "event",
1256
- "type": "string",
1257
- "required": true
1258
- },
1259
- "variant": {
1260
- "name": "variant",
1261
- "type": "string",
1262
- "required": false
1263
- },
1264
- "label": {
1265
- "name": "label",
1266
- "type": "string",
1267
- "required": true
1268
- }
1269
- }
1242
+ "type": "string"
1270
1243
  }
1271
1244
  },
1272
1245
  "title": {
@@ -1276,33 +1249,104 @@
1276
1249
  "description": "Heading shown above the technician dispatch board",
1277
1250
  "tier": "customization"
1278
1251
  },
1252
+ "serviceAreaRadius": {
1253
+ "type": "number",
1254
+ "default": 50.0,
1255
+ "label": "Service area radius (mi)",
1256
+ "description": "Maximum distance from a tech's home base for dispatch eligibility.",
1257
+ "tier": "customization"
1258
+ },
1259
+ "dispatchStrategy": {
1260
+ "type": "string",
1261
+ "default": "nearest",
1262
+ "label": "Dispatch strategy",
1263
+ "description": "How techs are selected: nearest, round-robin, or manual pick.",
1264
+ "tier": "customization",
1265
+ "values": [
1266
+ "nearest",
1267
+ "round-robin",
1268
+ "manual"
1269
+ ]
1270
+ },
1271
+ "skillsRequired": {
1272
+ "type": "[string]",
1273
+ "default": [],
1274
+ "label": "Required skills",
1275
+ "description": "Capability tags a tech must hold to be eligible for the queue.",
1276
+ "tier": "customization",
1277
+ "items": {
1278
+ "type": "string"
1279
+ }
1280
+ },
1281
+ "escalationThresholdHours": {
1282
+ "type": "number",
1283
+ "default": 12.0,
1284
+ "label": "Escalation threshold (hours)",
1285
+ "description": "Hours after which an unacknowledged dispatch auto-escalates.",
1286
+ "tier": "customization"
1287
+ },
1288
+ "customerVisibleStatuses": {
1289
+ "type": "[string]",
1290
+ "default": [
1291
+ "available",
1292
+ "en-route",
1293
+ "on-site"
1294
+ ],
1295
+ "label": "Customer-visible statuses",
1296
+ "description": "Subset of tech statuses surfaced in the customer tracking view.",
1297
+ "tier": "customization",
1298
+ "items": {
1299
+ "type": "string"
1300
+ }
1301
+ },
1302
+ "requireSignatureOnComplete": {
1303
+ "type": "boolean",
1304
+ "default": false,
1305
+ "label": "Require customer signature on complete",
1306
+ "description": "Block completion unless customer signature is captured (compose std-signature-capture).",
1307
+ "tier": "customization"
1308
+ },
1309
+ "resolutionSLAHours": {
1310
+ "type": "number",
1311
+ "default": 8.0,
1312
+ "label": "Resolution SLA (hours)",
1313
+ "description": "Target hours from dispatch to job completion. Compose std-lifecycle to auto-escalate.",
1314
+ "tier": "essential"
1315
+ },
1316
+ "requirePhotoOnComplete": {
1317
+ "type": "boolean",
1318
+ "default": false,
1319
+ "label": "Require photo on complete",
1320
+ "description": "Block job completion until the tech attaches a completion photo.",
1321
+ "tier": "customization"
1322
+ },
1279
1323
  "fields": {
1280
1324
  "type": "[FieldSpec]",
1281
1325
  "default": [
1282
1326
  {
1283
- "name": "name",
1327
+ "variant": "body",
1284
1328
  "label": "Technician",
1285
- "variant": "body"
1329
+ "name": "name"
1286
1330
  },
1287
1331
  {
1288
- "name": "skills",
1289
1332
  "variant": "caption",
1333
+ "name": "skills",
1290
1334
  "label": "Skills"
1291
1335
  },
1292
1336
  {
1293
- "label": "Available",
1294
1337
  "variant": "badge",
1338
+ "label": "Available",
1295
1339
  "name": "available"
1296
1340
  },
1297
1341
  {
1342
+ "label": "Current Order",
1298
1343
  "variant": "caption",
1299
- "name": "currentOrderId",
1300
- "label": "Current Order"
1344
+ "name": "currentOrderId"
1301
1345
  },
1302
1346
  {
1347
+ "label": "Last Seen",
1303
1348
  "name": "lastSeenAt",
1304
- "variant": "caption",
1305
- "label": "Last Seen"
1349
+ "variant": "caption"
1306
1350
  }
1307
1351
  ],
1308
1352
  "label": "Columns to show",
@@ -1311,6 +1355,21 @@
1311
1355
  "items": {
1312
1356
  "type": "object",
1313
1357
  "properties": {
1358
+ "name": {
1359
+ "name": "name",
1360
+ "type": "string",
1361
+ "required": true
1362
+ },
1363
+ "icon": {
1364
+ "name": "icon",
1365
+ "type": "string",
1366
+ "required": false
1367
+ },
1368
+ "format": {
1369
+ "name": "format",
1370
+ "type": "string",
1371
+ "required": false
1372
+ },
1314
1373
  "key": {
1315
1374
  "name": "key",
1316
1375
  "type": "string",
@@ -1321,11 +1380,6 @@
1321
1380
  "type": "string",
1322
1381
  "required": false
1323
1382
  },
1324
- "name": {
1325
- "name": "name",
1326
- "type": "string",
1327
- "required": true
1328
- },
1329
1383
  "label": {
1330
1384
  "name": "label",
1331
1385
  "type": "string",
@@ -1335,16 +1389,50 @@
1335
1389
  "name": "variant",
1336
1390
  "type": "string",
1337
1391
  "required": false
1392
+ }
1393
+ }
1394
+ }
1395
+ },
1396
+ "itemActions": {
1397
+ "type": "[ItemAction]",
1398
+ "default": [
1399
+ {
1400
+ "variant": "primary",
1401
+ "event": "OPEN_TECHNICIAN",
1402
+ "icon": "arrow-right",
1403
+ "label": "Open"
1404
+ },
1405
+ {
1406
+ "label": "Assign",
1407
+ "variant": "danger",
1408
+ "event": "ASSIGN"
1409
+ }
1410
+ ],
1411
+ "label": "Row actions",
1412
+ "description": "Buttons users can click on each technician row",
1413
+ "tier": "customization",
1414
+ "items": {
1415
+ "type": "object",
1416
+ "properties": {
1417
+ "event": {
1418
+ "name": "event",
1419
+ "type": "string",
1420
+ "required": true
1338
1421
  },
1339
- "format": {
1340
- "name": "format",
1422
+ "label": {
1423
+ "name": "label",
1341
1424
  "type": "string",
1342
- "required": false
1425
+ "required": true
1343
1426
  },
1344
1427
  "icon": {
1345
1428
  "name": "icon",
1346
1429
  "type": "string",
1347
1430
  "required": false
1431
+ },
1432
+ "variant": {
1433
+ "name": "variant",
1434
+ "type": "string",
1435
+ "required": false
1348
1436
  }
1349
1437
  }
1350
1438
  }
@@ -1366,4 +1454,4 @@
1366
1454
  ]
1367
1455
  }
1368
1456
  ]
1369
- }
1457
+ }