@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-route-optimize",
3
- "version": "1.1.0",
4
- "description": "std-route-optimize — multi-stop route ordering for technician dispatch. Lists routes in `browsing`; opens detail in `viewing_single` with Optimize / Reset actions. Agents tune the list shape via `config.fields` + `config.itemActions`.",
3
+ "version": "1.2.0",
4
+ "description": "std-route-optimize — multi-stop route ordering for technician dispatch. Lists routes; detail offers Optimize / Reset. Exposes Inventory/Logistics knobs (defaultWarehouse, multiLocationEnabled, hazmatEnabled, …) for the questionnaire.",
5
5
  "orbitals": [
6
6
  {
7
7
  "name": "RouteOptimizeOrbital",
@@ -250,22 +250,22 @@
250
250
  "render-ui",
251
251
  "main",
252
252
  {
253
- "align": "center",
254
- "className": "py-12",
255
- "type": "stack",
256
- "direction": "vertical",
253
+ "gap": "md",
257
254
  "children": [
258
255
  {
259
256
  "type": "spinner"
260
257
  },
261
258
  {
262
- "type": "typography",
263
259
  "color": "muted",
264
- "content": "Loading routes…",
265
- "variant": "caption"
260
+ "variant": "caption",
261
+ "type": "typography",
262
+ "content": "Loading routes…"
266
263
  }
267
264
  ],
268
- "gap": "md"
265
+ "className": "py-12",
266
+ "type": "stack",
267
+ "direction": "vertical",
268
+ "align": "center"
269
269
  }
270
270
  ]
271
271
  ]
@@ -280,13 +280,9 @@
280
280
  "main",
281
281
  {
282
282
  "direction": "vertical",
283
- "type": "stack",
284
- "gap": "md",
285
283
  "children": [
286
284
  {
287
285
  "direction": "horizontal",
288
- "gap": "sm",
289
- "type": "stack",
290
286
  "align": "center",
291
287
  "children": [
292
288
  {
@@ -294,54 +290,58 @@
294
290
  "name": "map"
295
291
  },
296
292
  {
297
- "type": "typography",
293
+ "content": "@config.title",
298
294
  "variant": "h3",
299
- "content": "@config.title"
295
+ "type": "typography"
300
296
  }
301
- ]
297
+ ],
298
+ "type": "stack",
299
+ "gap": "sm"
302
300
  },
303
301
  {
304
- "type": "simple-grid",
305
- "cols": 4.0,
306
302
  "children": [
307
303
  {
308
- "type": "stat-display",
304
+ "icon": "map",
309
305
  "label": "Total routes",
310
- "value": "@payload.data.length",
311
- "icon": "map"
306
+ "type": "stat-display",
307
+ "value": "@payload.data.length"
312
308
  },
313
309
  {
314
- "type": "stat-display",
315
- "icon": "check-circle",
316
310
  "value": "14",
317
- "label": "Optimized today"
311
+ "label": "Optimized today",
312
+ "icon": "check-circle",
313
+ "type": "stat-display"
318
314
  },
319
315
  {
320
- "value": "1,284 km",
321
- "label": "Total distance",
322
316
  "type": "stat-display",
323
- "icon": "navigation"
317
+ "icon": "navigation",
318
+ "value": "1,284 km",
319
+ "label": "Total distance"
324
320
  },
325
321
  {
326
- "icon": "clock",
327
322
  "value": "92 min",
328
323
  "type": "stat-display",
329
- "label": "Avg duration"
324
+ "label": "Avg duration",
325
+ "icon": "clock"
330
326
  }
331
- ]
327
+ ],
328
+ "type": "simple-grid",
329
+ "cols": 4.0
332
330
  },
333
331
  {
334
332
  "type": "divider"
335
333
  },
336
334
  {
337
- "itemActions": "@config.itemActions",
338
335
  "gap": "sm",
339
- "type": "data-grid",
336
+ "itemActions": "@config.itemActions",
340
337
  "entity": "@payload.data",
341
338
  "fields": "@config.fields",
339
+ "type": "data-grid",
342
340
  "cols": 1.0
343
341
  }
344
- ]
342
+ ],
343
+ "gap": "md",
344
+ "type": "stack"
345
345
  }
346
346
  ]
347
347
  ]
@@ -355,9 +355,9 @@
355
355
  "render-ui",
356
356
  "main",
357
357
  {
358
- "variant": "error",
358
+ "type": "alert",
359
359
  "message": "@payload.error",
360
- "type": "alert"
360
+ "variant": "error"
361
361
  }
362
362
  ]
363
363
  ]
@@ -406,25 +406,25 @@
406
406
  "render-ui",
407
407
  "main",
408
408
  {
409
- "gap": "md",
410
- "type": "stack",
411
- "direction": "vertical",
412
409
  "children": [
413
410
  {
411
+ "type": "stack",
412
+ "direction": "horizontal",
413
+ "align": "center",
414
414
  "children": [
415
415
  {
416
- "variant": "ghost",
417
- "label": "Back",
416
+ "action": "CLOSE_VIEW",
418
417
  "type": "button",
419
- "action": "CLOSE_VIEW"
418
+ "variant": "ghost",
419
+ "label": "Back"
420
420
  },
421
421
  {
422
- "name": "map",
423
- "type": "icon"
422
+ "type": "icon",
423
+ "name": "map"
424
424
  },
425
425
  {
426
- "variant": "h3",
427
426
  "type": "typography",
427
+ "variant": "h3",
428
428
  "content": "@entity.technicianId"
429
429
  },
430
430
  {
@@ -433,27 +433,21 @@
433
433
  "variant": "success"
434
434
  }
435
435
  ],
436
- "direction": "horizontal",
437
- "gap": "sm",
438
- "align": "center",
439
- "type": "stack"
436
+ "gap": "sm"
440
437
  },
441
438
  {
442
439
  "type": "divider"
443
440
  },
444
441
  {
445
- "direction": "vertical",
446
- "gap": "sm",
442
+ "type": "stack",
447
443
  "children": [
448
444
  {
449
- "gap": "md",
450
445
  "type": "stack",
451
- "direction": "horizontal",
452
446
  "children": [
453
447
  {
454
- "content": "Origin lat",
455
448
  "variant": "caption",
456
449
  "color": "muted",
450
+ "content": "Origin lat",
457
451
  "type": "typography"
458
452
  },
459
453
  {
@@ -461,83 +455,89 @@
461
455
  "variant": "body",
462
456
  "content": "@entity.originLat"
463
457
  }
464
- ]
458
+ ],
459
+ "gap": "md",
460
+ "direction": "horizontal"
465
461
  },
466
462
  {
467
- "gap": "md",
468
- "direction": "horizontal",
469
463
  "children": [
470
464
  {
471
- "variant": "caption",
472
465
  "type": "typography",
466
+ "color": "muted",
473
467
  "content": "Origin lng",
474
- "color": "muted"
468
+ "variant": "caption"
475
469
  },
476
470
  {
477
- "content": "@entity.originLng",
471
+ "type": "typography",
478
472
  "variant": "body",
479
- "type": "typography"
473
+ "content": "@entity.originLng"
480
474
  }
481
475
  ],
482
- "type": "stack"
476
+ "direction": "horizontal",
477
+ "type": "stack",
478
+ "gap": "md"
483
479
  }
484
480
  ],
485
- "type": "stack"
481
+ "direction": "vertical",
482
+ "gap": "sm"
486
483
  },
487
484
  {
488
485
  "type": "divider"
489
486
  },
490
487
  {
488
+ "type": "simple-grid",
491
489
  "children": [
492
490
  {
493
- "type": "stat-display",
494
491
  "label": "Distance (km)",
492
+ "type": "stat-display",
495
493
  "value": "@entity.totalDistanceKm",
496
494
  "icon": "navigation"
497
495
  },
498
496
  {
499
- "label": "Duration (min)",
500
497
  "value": "@entity.totalDurationMinutes",
498
+ "type": "stat-display",
501
499
  "icon": "clock",
502
- "type": "stat-display"
500
+ "label": "Duration (min)"
503
501
  },
504
502
  {
505
- "value": "@entity.optimizedAt",
506
- "type": "stat-display",
507
503
  "label": "Last optimized",
504
+ "type": "stat-display",
505
+ "value": "@entity.optimizedAt",
508
506
  "icon": "calendar"
509
507
  }
510
508
  ],
511
- "type": "simple-grid",
512
509
  "cols": 3.0
513
510
  },
514
511
  {
515
512
  "direction": "horizontal",
516
- "align": "center",
513
+ "type": "stack",
517
514
  "children": [
518
515
  {
519
- "label": "Optimize",
520
- "variant": "primary",
521
- "type": "button",
522
516
  "action": "OPTIMIZE",
523
517
  "actionPayload": {
524
518
  "id": "@entity.id"
525
- }
519
+ },
520
+ "variant": "primary",
521
+ "type": "button",
522
+ "label": "Optimize"
526
523
  },
527
524
  {
525
+ "type": "button",
528
526
  "label": "Reset",
527
+ "variant": "danger",
528
+ "action": "RESET_ROUTE",
529
529
  "actionPayload": {
530
530
  "id": "@entity.id"
531
- },
532
- "variant": "danger",
533
- "type": "button",
534
- "action": "RESET_ROUTE"
531
+ }
535
532
  }
536
533
  ],
537
- "type": "stack",
534
+ "align": "center",
538
535
  "gap": "sm"
539
536
  }
540
- ]
537
+ ],
538
+ "gap": "md",
539
+ "direction": "vertical",
540
+ "type": "stack"
541
541
  }
542
542
  ]
543
543
  ]
@@ -557,8 +557,8 @@
557
557
  "Route",
558
558
  {
559
559
  "emit": {
560
- "failure": "RouteLoadFailed",
561
- "success": "RouteLoaded"
560
+ "success": "RouteLoaded",
561
+ "failure": "RouteLoadFailed"
562
562
  }
563
563
  }
564
564
  ],
@@ -567,21 +567,21 @@
567
567
  "main",
568
568
  {
569
569
  "type": "stack",
570
- "direction": "vertical",
571
570
  "align": "center",
572
571
  "className": "py-12",
573
- "gap": "md",
572
+ "direction": "vertical",
574
573
  "children": [
575
574
  {
576
575
  "type": "spinner"
577
576
  },
578
577
  {
579
- "variant": "caption",
580
578
  "type": "typography",
579
+ "color": "muted",
581
580
  "content": "Optimizing route…",
582
- "color": "muted"
581
+ "variant": "caption"
583
582
  }
584
- ]
583
+ ],
584
+ "gap": "md"
585
585
  }
586
586
  ]
587
587
  ]
@@ -601,8 +601,8 @@
601
601
  "Route",
602
602
  {
603
603
  "emit": {
604
- "failure": "RouteLoadFailed",
605
- "success": "RouteLoaded"
604
+ "success": "RouteLoaded",
605
+ "failure": "RouteLoadFailed"
606
606
  }
607
607
  }
608
608
  ],
@@ -612,9 +612,6 @@
612
612
  {
613
613
  "align": "center",
614
614
  "gap": "md",
615
- "type": "stack",
616
- "className": "py-12",
617
- "direction": "vertical",
618
615
  "children": [
619
616
  {
620
617
  "type": "spinner"
@@ -625,7 +622,10 @@
625
622
  "type": "typography",
626
623
  "content": "Resetting route…"
627
624
  }
628
- ]
625
+ ],
626
+ "type": "stack",
627
+ "className": "py-12",
628
+ "direction": "vertical"
629
629
  }
630
630
  ]
631
631
  ]
@@ -640,8 +640,8 @@
640
640
  "Route",
641
641
  {
642
642
  "emit": {
643
- "failure": "RouteLoadFailed",
644
- "success": "RouteLoaded"
643
+ "success": "RouteLoaded",
644
+ "failure": "RouteLoadFailed"
645
645
  }
646
646
  }
647
647
  ],
@@ -649,22 +649,22 @@
649
649
  "render-ui",
650
650
  "main",
651
651
  {
652
- "align": "center",
652
+ "direction": "vertical",
653
+ "className": "py-12",
653
654
  "children": [
654
655
  {
655
656
  "type": "spinner"
656
657
  },
657
658
  {
658
- "variant": "caption",
659
+ "content": "Loading routes…",
659
660
  "type": "typography",
660
661
  "color": "muted",
661
- "content": "Loading routes…"
662
+ "variant": "caption"
662
663
  }
663
664
  ],
664
665
  "type": "stack",
665
- "direction": "vertical",
666
- "className": "py-12",
667
- "gap": "md"
666
+ "gap": "md",
667
+ "align": "center"
668
668
  }
669
669
  ]
670
670
  ]
@@ -694,21 +694,21 @@
694
694
  "main",
695
695
  {
696
696
  "direction": "vertical",
697
- "className": "py-12",
697
+ "align": "center",
698
698
  "children": [
699
699
  {
700
700
  "type": "spinner"
701
701
  },
702
702
  {
703
+ "type": "typography",
703
704
  "variant": "caption",
704
705
  "color": "muted",
705
- "type": "typography",
706
706
  "content": "Optimizing route…"
707
707
  }
708
708
  ],
709
709
  "type": "stack",
710
710
  "gap": "md",
711
- "align": "center"
711
+ "className": "py-12"
712
712
  }
713
713
  ]
714
714
  ]
@@ -737,22 +737,22 @@
737
737
  "render-ui",
738
738
  "main",
739
739
  {
740
- "direction": "vertical",
741
- "align": "center",
742
- "className": "py-12",
740
+ "gap": "md",
743
741
  "type": "stack",
744
742
  "children": [
745
743
  {
746
744
  "type": "spinner"
747
745
  },
748
746
  {
749
- "type": "typography",
750
- "variant": "caption",
751
747
  "color": "muted",
748
+ "variant": "caption",
749
+ "type": "typography",
752
750
  "content": "Resetting route…"
753
751
  }
754
752
  ],
755
- "gap": "md"
753
+ "align": "center",
754
+ "className": "py-12",
755
+ "direction": "vertical"
756
756
  }
757
757
  ]
758
758
  ]
@@ -767,8 +767,8 @@
767
767
  "Route",
768
768
  {
769
769
  "emit": {
770
- "success": "RouteLoaded",
771
- "failure": "RouteLoadFailed"
770
+ "failure": "RouteLoadFailed",
771
+ "success": "RouteLoaded"
772
772
  }
773
773
  }
774
774
  ],
@@ -776,8 +776,8 @@
776
776
  "render-ui",
777
777
  "main",
778
778
  {
779
- "type": "spinner",
780
- "size": "sm"
779
+ "size": "sm",
780
+ "type": "spinner"
781
781
  }
782
782
  ]
783
783
  ]
@@ -785,23 +785,37 @@
785
785
  ]
786
786
  },
787
787
  "config": {
788
+ "defaultWarehouse": {
789
+ "type": "string",
790
+ "default": "",
791
+ "label": "Default depot / warehouse",
792
+ "description": "Origin depot routes start from by default.",
793
+ "tier": "customization"
794
+ },
795
+ "lotTrackingEnabled": {
796
+ "type": "boolean",
797
+ "default": false,
798
+ "label": "Lot tracking",
799
+ "description": "Honor lot/batch tracking when ordering pickups/drops.",
800
+ "tier": "customization"
801
+ },
788
802
  "fields": {
789
803
  "type": "[FieldSpec]",
790
804
  "default": [
791
805
  {
806
+ "name": "technicianId",
792
807
  "label": "Technician",
793
- "variant": "caption",
794
- "name": "technicianId"
808
+ "variant": "caption"
795
809
  },
796
810
  {
797
- "name": "totalDistanceKm",
798
811
  "label": "Distance (km)",
799
- "variant": "caption"
812
+ "variant": "caption",
813
+ "name": "totalDistanceKm"
800
814
  },
801
815
  {
802
- "label": "Duration (min)",
803
816
  "variant": "caption",
804
- "name": "totalDurationMinutes"
817
+ "name": "totalDurationMinutes",
818
+ "label": "Duration (min)"
805
819
  },
806
820
  {
807
821
  "variant": "caption",
@@ -815,23 +829,23 @@
815
829
  "items": {
816
830
  "type": "object",
817
831
  "properties": {
818
- "name": {
819
- "name": "name",
832
+ "label": {
833
+ "name": "label",
820
834
  "type": "string",
821
- "required": true
835
+ "required": false
822
836
  },
823
837
  "icon": {
824
838
  "name": "icon",
825
839
  "type": "string",
826
840
  "required": false
827
841
  },
828
- "key": {
829
- "name": "key",
842
+ "format": {
843
+ "name": "format",
830
844
  "type": "string",
831
845
  "required": false
832
846
  },
833
- "label": {
834
- "name": "label",
847
+ "key": {
848
+ "name": "key",
835
849
  "type": "string",
836
850
  "required": false
837
851
  },
@@ -845,27 +859,55 @@
845
859
  "type": "string",
846
860
  "required": false
847
861
  },
848
- "format": {
849
- "name": "format",
862
+ "name": {
863
+ "name": "name",
850
864
  "type": "string",
851
- "required": false
865
+ "required": true
852
866
  }
853
867
  }
854
868
  }
855
869
  },
870
+ "hazmatEnabled": {
871
+ "type": "boolean",
872
+ "default": false,
873
+ "label": "Hazmat routing",
874
+ "description": "Route honors hazmat-restricted lanes and depots.",
875
+ "tier": "advanced"
876
+ },
877
+ "multiLocationEnabled": {
878
+ "type": "boolean",
879
+ "default": false,
880
+ "label": "Multi-location",
881
+ "description": "Allow routes to span multiple depots/warehouses.",
882
+ "tier": "customization"
883
+ },
884
+ "serialTrackingEnabled": {
885
+ "type": "boolean",
886
+ "default": false,
887
+ "label": "Serial tracking",
888
+ "description": "Honor serial-tracked items on route stops. v1.2 declarative.",
889
+ "tier": "customization"
890
+ },
891
+ "cycleCountFrequencyDays": {
892
+ "type": "number",
893
+ "default": 30.0,
894
+ "label": "Cycle count cadence (days)",
895
+ "description": "Days between scheduled cycle counts on vehicles assigned to optimized routes. v1.2 declarative.",
896
+ "tier": "advanced"
897
+ },
856
898
  "itemActions": {
857
899
  "type": "[ItemAction]",
858
900
  "default": [
859
901
  {
860
- "variant": "primary",
861
- "label": "Open",
862
902
  "event": "OPEN_ROUTE",
863
- "icon": "arrow-right"
903
+ "icon": "arrow-right",
904
+ "variant": "primary",
905
+ "label": "Open"
864
906
  },
865
907
  {
866
- "event": "OPTIMIZE",
908
+ "variant": "danger",
867
909
  "label": "Optimize",
868
- "variant": "danger"
910
+ "event": "OPTIMIZE"
869
911
  }
870
912
  ],
871
913
  "label": "Row actions",
@@ -874,29 +916,36 @@
874
916
  "items": {
875
917
  "type": "object",
876
918
  "properties": {
877
- "event": {
878
- "name": "event",
879
- "type": "string",
880
- "required": true
881
- },
882
- "label": {
883
- "name": "label",
884
- "type": "string",
885
- "required": true
886
- },
887
919
  "icon": {
888
920
  "name": "icon",
889
921
  "type": "string",
890
922
  "required": false
891
923
  },
924
+ "event": {
925
+ "name": "event",
926
+ "type": "string",
927
+ "required": true
928
+ },
892
929
  "variant": {
893
930
  "name": "variant",
894
931
  "type": "string",
895
932
  "required": false
933
+ },
934
+ "label": {
935
+ "name": "label",
936
+ "type": "string",
937
+ "required": true
896
938
  }
897
939
  }
898
940
  }
899
941
  },
942
+ "expiryTrackingEnabled": {
943
+ "type": "boolean",
944
+ "default": false,
945
+ "label": "Expiry tracking",
946
+ "description": "Prioritize near-expiry items in route ordering.",
947
+ "tier": "customization"
948
+ },
900
949
  "title": {
901
950
  "type": "string",
902
951
  "default": "Routes",
@@ -921,4 +970,4 @@
921
970
  ]
922
971
  }
923
972
  ]
924
- }
973
+ }