@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-waitlist",
3
- "version": "1.1.0",
4
- "description": "std-waitlist — sorted queue with auto-promote-on-cancel. Lists waitlist entries in `browsing`; opens detail in `viewing_single` with Promote / Cancel actions. Agents tune the list shape via `config.fields` + `config.itemActions`.",
3
+ "version": "1.2.0",
4
+ "description": "std-waitlist — sorted queue with auto-promote-on-cancel. Listens for SET_STATUS so std-lifecycle can auto-expire. Exposes Scheduling/Booking knobs (bookingWindowDays, leadTimeMinutes, cancellationPolicy, …).",
5
5
  "orbitals": [
6
6
  {
7
7
  "name": "WaitlistOrbital",
@@ -320,6 +320,22 @@
320
320
  }
321
321
  ]
322
322
  },
323
+ {
324
+ "key": "SET_STATUS",
325
+ "name": "Set Status",
326
+ "payloadSchema": [
327
+ {
328
+ "name": "entityId",
329
+ "type": "string",
330
+ "required": true
331
+ },
332
+ {
333
+ "name": "newStatus",
334
+ "type": "string",
335
+ "required": true
336
+ }
337
+ ]
338
+ },
323
339
  {
324
340
  "key": "CLOSE_VIEW",
325
341
  "name": "Close View"
@@ -360,22 +376,22 @@
360
376
  "render-ui",
361
377
  "main",
362
378
  {
363
- "direction": "vertical",
379
+ "className": "py-12",
364
380
  "gap": "md",
381
+ "type": "stack",
382
+ "align": "center",
383
+ "direction": "vertical",
365
384
  "children": [
366
385
  {
367
386
  "type": "spinner"
368
387
  },
369
388
  {
370
- "type": "typography",
371
- "color": "muted",
372
389
  "variant": "caption",
373
- "content": "Loading waitlist…"
390
+ "content": "Loading waitlist…",
391
+ "type": "typography",
392
+ "color": "muted"
374
393
  }
375
- ],
376
- "align": "center",
377
- "className": "py-12",
378
- "type": "stack"
394
+ ]
379
395
  }
380
396
  ]
381
397
  ]
@@ -389,13 +405,11 @@
389
405
  "render-ui",
390
406
  "main",
391
407
  {
392
- "direction": "vertical",
393
- "gap": "md",
394
- "type": "stack",
395
408
  "children": [
396
409
  {
410
+ "gap": "sm",
397
411
  "direction": "horizontal",
398
- "align": "center",
412
+ "type": "stack",
399
413
  "children": [
400
414
  {
401
415
  "type": "icon",
@@ -407,51 +421,53 @@
407
421
  "variant": "h3"
408
422
  }
409
423
  ],
410
- "gap": "sm",
411
- "type": "stack"
424
+ "align": "center"
412
425
  },
413
426
  {
427
+ "type": "simple-grid",
428
+ "cols": 4.0,
414
429
  "children": [
415
430
  {
416
431
  "icon": "users",
417
432
  "type": "stat-display",
418
- "label": "Total entries",
419
- "value": "@payload.data.length"
433
+ "value": "@payload.data.length",
434
+ "label": "Total entries"
420
435
  },
421
436
  {
422
- "value": "126",
423
437
  "label": "Waiting",
438
+ "value": "126",
424
439
  "type": "stat-display",
425
440
  "icon": "hourglass"
426
441
  },
427
442
  {
443
+ "type": "stat-display",
428
444
  "icon": "arrow-up",
429
445
  "value": "24",
430
- "type": "stat-display",
431
446
  "label": "Promoted 7d"
432
447
  },
433
448
  {
434
- "type": "stat-display",
435
449
  "value": "3d",
436
- "icon": "clock",
437
- "label": "Avg wait time"
450
+ "type": "stat-display",
451
+ "label": "Avg wait time",
452
+ "icon": "clock"
438
453
  }
439
- ],
440
- "cols": 4.0,
441
- "type": "simple-grid"
454
+ ]
442
455
  },
443
456
  {
444
457
  "type": "divider"
445
458
  },
446
459
  {
447
460
  "type": "data-grid",
448
- "fields": "@config.fields",
449
461
  "entity": "@payload.data",
462
+ "fields": "@config.fields",
450
463
  "cols": 1.0,
451
464
  "gap": "sm",
452
465
  "itemActions": "@config.itemActions"
453
466
  }
454
- ]
467
+ ],
468
+ "type": "stack",
469
+ "direction": "vertical",
470
+ "gap": "md"
455
471
  }
456
472
  ]
457
473
  ]
@@ -465,8 +481,8 @@
465
481
  "render-ui",
466
482
  "main",
467
483
  {
468
- "variant": "error",
469
484
  "message": "@payload.error",
485
+ "variant": "error",
470
486
  "type": "alert"
471
487
  }
472
488
  ]
@@ -526,146 +542,146 @@
526
542
  "render-ui",
527
543
  "main",
528
544
  {
529
- "type": "stack",
530
545
  "children": [
531
546
  {
547
+ "type": "stack",
548
+ "align": "center",
549
+ "gap": "sm",
550
+ "direction": "horizontal",
532
551
  "children": [
533
552
  {
534
- "variant": "ghost",
535
553
  "label": "Back",
554
+ "variant": "ghost",
536
555
  "action": "CLOSE_VIEW",
537
556
  "type": "button"
538
557
  },
539
558
  {
540
- "type": "icon",
541
- "name": "users"
559
+ "name": "users",
560
+ "type": "icon"
542
561
  },
543
562
  {
563
+ "variant": "h3",
544
564
  "content": "@entity.userId",
545
- "type": "typography",
546
- "variant": "h3"
565
+ "type": "typography"
547
566
  },
548
567
  {
549
568
  "type": "badge",
550
569
  "label": "@entity.status",
551
570
  "variant": "primary"
552
571
  }
553
- ],
554
- "direction": "horizontal",
555
- "gap": "sm",
556
- "align": "center",
557
- "type": "stack"
572
+ ]
558
573
  },
559
574
  {
560
575
  "type": "divider"
561
576
  },
562
577
  {
578
+ "gap": "sm",
563
579
  "direction": "vertical",
580
+ "type": "stack",
564
581
  "children": [
565
582
  {
566
583
  "type": "stack",
567
- "gap": "md",
568
584
  "direction": "horizontal",
585
+ "gap": "md",
569
586
  "children": [
570
587
  {
571
- "type": "typography",
572
588
  "color": "muted",
573
- "content": "Target",
574
- "variant": "caption"
589
+ "variant": "caption",
590
+ "type": "typography",
591
+ "content": "Target"
575
592
  },
576
593
  {
594
+ "content": "@entity.targetId",
577
595
  "variant": "body",
578
- "type": "typography",
579
- "content": "@entity.targetId"
596
+ "type": "typography"
580
597
  }
581
598
  ]
582
599
  },
583
600
  {
601
+ "type": "stack",
602
+ "gap": "md",
603
+ "direction": "horizontal",
584
604
  "children": [
585
605
  {
586
- "type": "typography",
587
- "variant": "caption",
606
+ "color": "muted",
588
607
  "content": "Target type",
589
- "color": "muted"
608
+ "type": "typography",
609
+ "variant": "caption"
590
610
  },
591
611
  {
592
612
  "variant": "body",
593
- "content": "@entity.targetType",
594
- "type": "typography"
613
+ "type": "typography",
614
+ "content": "@entity.targetType"
595
615
  }
596
- ],
597
- "type": "stack",
598
- "direction": "horizontal",
599
- "gap": "md"
616
+ ]
600
617
  }
601
- ],
602
- "gap": "sm",
603
- "type": "stack"
618
+ ]
604
619
  },
605
620
  {
606
621
  "type": "divider"
607
622
  },
608
623
  {
609
624
  "type": "simple-grid",
610
- "cols": 4.0,
611
625
  "children": [
612
626
  {
613
- "value": "@entity.position",
614
- "icon": "hash",
627
+ "label": "Position",
615
628
  "type": "stat-display",
616
- "label": "Position"
629
+ "value": "@entity.position",
630
+ "icon": "hash"
617
631
  },
618
632
  {
619
633
  "icon": "calendar",
620
- "label": "Joined",
634
+ "type": "stat-display",
621
635
  "value": "@entity.joinedAt",
622
- "type": "stat-display"
636
+ "label": "Joined"
623
637
  },
624
638
  {
625
- "value": "@entity.promotedAt",
626
- "icon": "arrow-up",
627
639
  "type": "stat-display",
628
- "label": "Promoted"
640
+ "value": "@entity.promotedAt",
641
+ "label": "Promoted",
642
+ "icon": "arrow-up"
629
643
  },
630
644
  {
631
- "label": "Notified",
632
- "value": "@entity.notifiedAt",
633
645
  "icon": "bell",
634
- "type": "stat-display"
646
+ "label": "Notified",
647
+ "type": "stat-display",
648
+ "value": "@entity.notifiedAt"
635
649
  }
636
- ]
650
+ ],
651
+ "cols": 4.0
637
652
  },
638
653
  {
639
- "direction": "horizontal",
640
- "gap": "sm",
641
- "type": "stack",
642
654
  "align": "center",
643
655
  "children": [
644
656
  {
645
- "variant": "primary",
646
657
  "label": "Promote",
647
- "actionPayload": {
648
- "entryId": "@entity.id",
649
- "row": "@entity"
650
- },
658
+ "variant": "primary",
659
+ "action": "PROMOTE",
651
660
  "type": "button",
652
- "action": "PROMOTE"
661
+ "actionPayload": {
662
+ "row": "@entity",
663
+ "entryId": "@entity.id"
664
+ }
653
665
  },
654
666
  {
655
- "action": "CANCEL",
656
- "variant": "danger",
657
- "type": "button",
658
667
  "label": "Cancel",
668
+ "action": "CANCEL",
659
669
  "actionPayload": {
660
- "entryId": "@entity.id",
661
- "row": "@entity"
662
- }
670
+ "row": "@entity",
671
+ "entryId": "@entity.id"
672
+ },
673
+ "type": "button",
674
+ "variant": "danger"
663
675
  }
664
- ]
676
+ ],
677
+ "type": "stack",
678
+ "gap": "sm",
679
+ "direction": "horizontal"
665
680
  }
666
681
  ],
667
- "direction": "vertical",
668
- "gap": "md"
682
+ "gap": "md",
683
+ "type": "stack",
684
+ "direction": "vertical"
669
685
  }
670
686
  ]
671
687
  ]
@@ -694,21 +710,72 @@
694
710
  "render-ui",
695
711
  "main",
696
712
  {
713
+ "type": "stack",
697
714
  "direction": "vertical",
698
- "gap": "md",
699
715
  "className": "py-12",
700
- "align": "center",
701
- "type": "stack",
702
716
  "children": [
703
717
  {
704
718
  "type": "spinner"
705
719
  },
706
720
  {
707
721
  "type": "typography",
708
- "color": "muted",
709
722
  "content": "Cancelling entry…",
723
+ "color": "muted",
710
724
  "variant": "caption"
711
725
  }
726
+ ],
727
+ "gap": "md",
728
+ "align": "center"
729
+ }
730
+ ]
731
+ ]
732
+ },
733
+ {
734
+ "from": "browsing",
735
+ "to": "loading",
736
+ "event": "SET_STATUS",
737
+ "effects": [
738
+ [
739
+ "set",
740
+ "@entity.id",
741
+ "@payload.entityId"
742
+ ],
743
+ [
744
+ "set",
745
+ "@entity.status",
746
+ "@payload.newStatus"
747
+ ],
748
+ [
749
+ "persist",
750
+ "update",
751
+ "WaitlistEntry",
752
+ "@entity",
753
+ {
754
+ "emit": {
755
+ "success": "WaitlistEntryLoaded",
756
+ "failure": "WaitlistEntryLoadFailed"
757
+ }
758
+ }
759
+ ],
760
+ [
761
+ "render-ui",
762
+ "main",
763
+ {
764
+ "type": "stack",
765
+ "direction": "vertical",
766
+ "className": "py-12",
767
+ "gap": "md",
768
+ "align": "center",
769
+ "children": [
770
+ {
771
+ "type": "spinner"
772
+ },
773
+ {
774
+ "type": "typography",
775
+ "content": "Updating waitlist entry status…",
776
+ "variant": "caption",
777
+ "color": "muted"
778
+ }
712
779
  ]
713
780
  }
714
781
  ]
@@ -724,8 +791,8 @@
724
791
  "WaitlistEntry",
725
792
  {
726
793
  "emit": {
727
- "success": "WaitlistEntryLoaded",
728
- "failure": "WaitlistEntryLoadFailed"
794
+ "failure": "WaitlistEntryLoadFailed",
795
+ "success": "WaitlistEntryLoaded"
729
796
  }
730
797
  }
731
798
  ],
@@ -738,16 +805,16 @@
738
805
  "type": "spinner"
739
806
  },
740
807
  {
741
- "color": "muted",
742
808
  "type": "typography",
743
809
  "content": "Loading waitlist…",
744
- "variant": "caption"
810
+ "variant": "caption",
811
+ "color": "muted"
745
812
  }
746
813
  ],
814
+ "align": "center",
747
815
  "direction": "vertical",
748
- "gap": "md",
749
816
  "type": "stack",
750
- "align": "center",
817
+ "gap": "md",
751
818
  "className": "py-12"
752
819
  }
753
820
  ]
@@ -777,22 +844,22 @@
777
844
  "render-ui",
778
845
  "main",
779
846
  {
780
- "gap": "md",
781
847
  "children": [
782
848
  {
783
849
  "type": "spinner"
784
850
  },
785
851
  {
786
- "content": "Promoting entry…",
787
- "color": "muted",
852
+ "type": "typography",
788
853
  "variant": "caption",
789
- "type": "typography"
854
+ "color": "muted",
855
+ "content": "Promoting entry…"
790
856
  }
791
857
  ],
792
- "direction": "vertical",
858
+ "gap": "md",
859
+ "align": "center",
793
860
  "className": "py-12",
794
861
  "type": "stack",
795
- "align": "center"
862
+ "direction": "vertical"
796
863
  }
797
864
  ]
798
865
  ]
@@ -812,8 +879,8 @@
812
879
  "WaitlistEntry",
813
880
  {
814
881
  "emit": {
815
- "failure": "WaitlistEntryLoadFailed",
816
- "success": "WaitlistEntryLoaded"
882
+ "success": "WaitlistEntryLoaded",
883
+ "failure": "WaitlistEntryLoadFailed"
817
884
  }
818
885
  }
819
886
  ],
@@ -821,9 +888,11 @@
821
888
  "render-ui",
822
889
  "main",
823
890
  {
824
- "type": "stack",
825
- "align": "center",
826
891
  "direction": "vertical",
892
+ "align": "center",
893
+ "gap": "md",
894
+ "type": "stack",
895
+ "className": "py-12",
827
896
  "children": [
828
897
  {
829
898
  "type": "spinner"
@@ -831,12 +900,10 @@
831
900
  {
832
901
  "content": "Cancelling entry…",
833
902
  "color": "muted",
834
- "variant": "caption",
835
- "type": "typography"
903
+ "type": "typography",
904
+ "variant": "caption"
836
905
  }
837
- ],
838
- "className": "py-12",
839
- "gap": "md"
906
+ ]
840
907
  }
841
908
  ]
842
909
  ]
@@ -851,8 +918,8 @@
851
918
  "WaitlistEntry",
852
919
  {
853
920
  "emit": {
854
- "failure": "WaitlistEntryLoadFailed",
855
- "success": "WaitlistEntryLoaded"
921
+ "success": "WaitlistEntryLoaded",
922
+ "failure": "WaitlistEntryLoadFailed"
856
923
  }
857
924
  }
858
925
  ],
@@ -860,8 +927,8 @@
860
927
  "render-ui",
861
928
  "main",
862
929
  {
863
- "type": "spinner",
864
- "size": "sm"
930
+ "size": "sm",
931
+ "type": "spinner"
865
932
  }
866
933
  ]
867
934
  ]
@@ -869,6 +936,75 @@
869
936
  ]
870
937
  },
871
938
  "config": {
939
+ "bookingWindowDays": {
940
+ "type": "number",
941
+ "default": 30.0,
942
+ "label": "Booking window (days)",
943
+ "description": "How far in advance users can join the waitlist.",
944
+ "tier": "customization"
945
+ },
946
+ "itemActions": {
947
+ "type": "[ItemAction]",
948
+ "default": [
949
+ {
950
+ "icon": "arrow-right",
951
+ "event": "OPEN_ENTRY",
952
+ "label": "Open",
953
+ "variant": "primary"
954
+ },
955
+ {
956
+ "event": "CANCEL",
957
+ "label": "Cancel",
958
+ "variant": "danger",
959
+ "icon": "x"
960
+ }
961
+ ],
962
+ "label": "Row actions",
963
+ "description": "Buttons users can click on each waitlist entry",
964
+ "tier": "customization",
965
+ "items": {
966
+ "type": "object",
967
+ "properties": {
968
+ "label": {
969
+ "name": "label",
970
+ "type": "string",
971
+ "required": true
972
+ },
973
+ "icon": {
974
+ "name": "icon",
975
+ "type": "string",
976
+ "required": false
977
+ },
978
+ "variant": {
979
+ "name": "variant",
980
+ "type": "string",
981
+ "required": false
982
+ },
983
+ "event": {
984
+ "name": "event",
985
+ "type": "string",
986
+ "required": true
987
+ }
988
+ }
989
+ }
990
+ },
991
+ "blackoutDates": {
992
+ "type": "[string]",
993
+ "default": [],
994
+ "label": "Blackout dates",
995
+ "description": "ISO dates blocked from joining the waitlist.",
996
+ "tier": "customization",
997
+ "items": {
998
+ "type": "string"
999
+ }
1000
+ },
1001
+ "rescheduleWindowHours": {
1002
+ "type": "number",
1003
+ "default": 24.0,
1004
+ "label": "Reschedule window (hours)",
1005
+ "description": "Hours during which a user can defer their promoted slot.",
1006
+ "tier": "customization"
1007
+ },
872
1008
  "title": {
873
1009
  "type": "string",
874
1010
  "default": "Waitlist",
@@ -876,6 +1012,27 @@
876
1012
  "description": "Heading shown above the waitlist queue",
877
1013
  "tier": "customization"
878
1014
  },
1015
+ "bookingHours": {
1016
+ "type": "string",
1017
+ "default": "00:00-23:59",
1018
+ "label": "Booking hours",
1019
+ "description": "Daily window during which waitlist joins are accepted (HH:MM-HH:MM).",
1020
+ "tier": "customization"
1021
+ },
1022
+ "noShowGracePeriodMinutes": {
1023
+ "type": "number",
1024
+ "default": 60.0,
1025
+ "label": "No-show grace (minutes)",
1026
+ "description": "Minutes after promotion notice before the entry auto-expires if not claimed. Wire via std-lifecycle.",
1027
+ "tier": "customization"
1028
+ },
1029
+ "maxReschedules": {
1030
+ "type": "number",
1031
+ "default": 1.0,
1032
+ "label": "Max reschedules",
1033
+ "description": "Hard cap on deferral count per waitlist entry.",
1034
+ "tier": "advanced"
1035
+ },
879
1036
  "fields": {
880
1037
  "type": "[FieldSpec]",
881
1038
  "default": [
@@ -885,23 +1042,23 @@
885
1042
  "variant": "badge"
886
1043
  },
887
1044
  {
888
- "name": "userId",
1045
+ "label": "User",
889
1046
  "variant": "caption",
890
- "label": "User"
1047
+ "name": "userId"
891
1048
  },
892
1049
  {
1050
+ "name": "targetType",
893
1051
  "label": "Type",
894
- "variant": "badge",
895
- "name": "targetType"
1052
+ "variant": "badge"
896
1053
  },
897
1054
  {
898
- "label": "Status",
899
1055
  "name": "status",
1056
+ "label": "Status",
900
1057
  "variant": "badge"
901
1058
  },
902
1059
  {
903
- "variant": "caption",
904
1060
  "name": "joinedAt",
1061
+ "variant": "caption",
905
1062
  "label": "Joined"
906
1063
  }
907
1064
  ],
@@ -916,18 +1073,18 @@
916
1073
  "type": "string",
917
1074
  "required": false
918
1075
  },
919
- "key": {
920
- "name": "key",
1076
+ "variant": {
1077
+ "name": "variant",
921
1078
  "type": "string",
922
1079
  "required": false
923
1080
  },
924
- "variant": {
925
- "name": "variant",
1081
+ "format": {
1082
+ "name": "format",
926
1083
  "type": "string",
927
1084
  "required": false
928
1085
  },
929
- "label": {
930
- "name": "label",
1086
+ "key": {
1087
+ "name": "key",
931
1088
  "type": "string",
932
1089
  "required": false
933
1090
  },
@@ -936,63 +1093,37 @@
936
1093
  "type": "string",
937
1094
  "required": true
938
1095
  },
939
- "format": {
940
- "name": "format",
941
- "type": "string",
942
- "required": false
943
- },
944
1096
  "header": {
945
1097
  "name": "header",
946
1098
  "type": "string",
947
1099
  "required": false
948
- }
949
- }
950
- }
951
- },
952
- "itemActions": {
953
- "type": "[ItemAction]",
954
- "default": [
955
- {
956
- "event": "OPEN_ENTRY",
957
- "label": "Open",
958
- "icon": "arrow-right",
959
- "variant": "primary"
960
- },
961
- {
962
- "label": "Cancel",
963
- "event": "CANCEL",
964
- "variant": "danger",
965
- "icon": "x"
966
- }
967
- ],
968
- "label": "Row actions",
969
- "description": "Buttons users can click on each waitlist entry",
970
- "tier": "customization",
971
- "items": {
972
- "type": "object",
973
- "properties": {
1100
+ },
974
1101
  "label": {
975
1102
  "name": "label",
976
1103
  "type": "string",
977
- "required": true
978
- },
979
- "icon": {
980
- "name": "icon",
981
- "type": "string",
982
- "required": false
983
- },
984
- "event": {
985
- "name": "event",
986
- "type": "string",
987
- "required": true
988
- },
989
- "variant": {
990
- "name": "variant",
991
- "type": "string",
992
1104
  "required": false
993
1105
  }
994
1106
  }
995
1107
  }
1108
+ },
1109
+ "leadTimeMinutes": {
1110
+ "type": "number",
1111
+ "default": 0.0,
1112
+ "label": "Lead time (minutes)",
1113
+ "description": "Minutes before target availability that the waitlist still accepts joins.",
1114
+ "tier": "customization"
1115
+ },
1116
+ "cancellationPolicy": {
1117
+ "type": "string",
1118
+ "default": "free",
1119
+ "label": "Cancellation policy",
1120
+ "description": "Refund treatment when a waitlist entry is cancelled after a deposit.",
1121
+ "tier": "customization",
1122
+ "values": [
1123
+ "free",
1124
+ "partial-refund",
1125
+ "no-refund"
1126
+ ]
996
1127
  }
997
1128
  },
998
1129
  "scope": "collection"
@@ -1011,4 +1142,4 @@
1011
1142
  ]
1012
1143
  }
1013
1144
  ]
1014
- }
1145
+ }