@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-class-roster",
3
- "version": "1.1.0",
4
- "description": "std-class-roster — list of members enrolled in a specific class session. Lists roster entries in `browsing`; opens entry detail in `viewing_single` with Check In / No Show actions. Agents tune the list shape via `config.fields` + `config.itemActions`.",
3
+ "version": "1.2.0",
4
+ "description": "std-class-roster — members enrolled in a class session. Listens for SET_STATUS so sibling std-lifecycle can auto-transition. Exposes Scheduling/Booking + HR knobs (bookingWindowDays, noShowGracePeriodMinutes, anonymizeOnRejection, …).",
5
5
  "orbitals": [
6
6
  {
7
7
  "name": "ClassRosterOrbital",
@@ -237,6 +237,22 @@
237
237
  }
238
238
  ]
239
239
  },
240
+ {
241
+ "key": "SET_STATUS",
242
+ "name": "Set Status",
243
+ "payloadSchema": [
244
+ {
245
+ "name": "entityId",
246
+ "type": "string",
247
+ "required": true
248
+ },
249
+ {
250
+ "name": "newStatus",
251
+ "type": "string",
252
+ "required": true
253
+ }
254
+ ]
255
+ },
240
256
  {
241
257
  "key": "CLOSE_VIEW",
242
258
  "name": "Close View"
@@ -253,8 +269,8 @@
253
269
  "RosterEntry",
254
270
  {
255
271
  "emit": {
256
- "failure": "RosterEntryLoadFailed",
257
- "success": "RosterEntryLoaded"
272
+ "success": "RosterEntryLoaded",
273
+ "failure": "RosterEntryLoadFailed"
258
274
  }
259
275
  }
260
276
  ],
@@ -262,20 +278,20 @@
262
278
  "render-ui",
263
279
  "main",
264
280
  {
265
- "gap": "md",
266
- "type": "stack",
267
281
  "align": "center",
282
+ "gap": "md",
268
283
  "className": "py-12",
269
284
  "direction": "vertical",
285
+ "type": "stack",
270
286
  "children": [
271
287
  {
272
288
  "type": "spinner"
273
289
  },
274
290
  {
275
- "variant": "caption",
276
- "type": "typography",
277
291
  "color": "muted",
278
- "content": "Loading roster…"
292
+ "content": "Loading roster…",
293
+ "type": "typography",
294
+ "variant": "caption"
279
295
  }
280
296
  ]
281
297
  }
@@ -291,35 +307,33 @@
291
307
  "render-ui",
292
308
  "main",
293
309
  {
310
+ "type": "stack",
294
311
  "direction": "vertical",
295
- "gap": "md",
296
312
  "children": [
297
313
  {
314
+ "direction": "horizontal",
298
315
  "type": "stack",
299
316
  "align": "center",
300
317
  "children": [
301
318
  {
302
- "name": "users",
303
- "type": "icon"
319
+ "type": "icon",
320
+ "name": "users"
304
321
  },
305
322
  {
306
- "type": "typography",
307
323
  "content": "@config.title",
324
+ "type": "typography",
308
325
  "variant": "h3"
309
326
  }
310
327
  ],
311
- "gap": "sm",
312
- "direction": "horizontal"
328
+ "gap": "sm"
313
329
  },
314
330
  {
315
- "type": "simple-grid",
316
- "cols": 4.0,
317
331
  "children": [
318
332
  {
319
- "label": "Enrolled",
320
333
  "type": "stat-display",
334
+ "value": "@payload.data.length",
321
335
  "icon": "users",
322
- "value": "@payload.data.length"
336
+ "label": "Enrolled"
323
337
  },
324
338
  {
325
339
  "icon": "check-circle",
@@ -328,10 +342,10 @@
328
342
  "type": "stat-display"
329
343
  },
330
344
  {
331
- "icon": "user-x",
332
345
  "type": "stat-display",
333
346
  "value": "3",
334
- "label": "No shows"
347
+ "label": "No shows",
348
+ "icon": "user-x"
335
349
  },
336
350
  {
337
351
  "icon": "clock",
@@ -339,21 +353,23 @@
339
353
  "label": "Waitlist",
340
354
  "type": "stat-display"
341
355
  }
342
- ]
356
+ ],
357
+ "type": "simple-grid",
358
+ "cols": 4.0
343
359
  },
344
360
  {
345
361
  "type": "divider"
346
362
  },
347
363
  {
348
- "gap": "sm",
364
+ "itemActions": "@config.itemActions",
365
+ "entity": "@payload.data",
349
366
  "fields": "@config.fields",
350
367
  "type": "data-grid",
351
368
  "cols": 1.0,
352
- "itemActions": "@config.itemActions",
353
- "entity": "@payload.data"
369
+ "gap": "sm"
354
370
  }
355
371
  ],
356
- "type": "stack"
372
+ "gap": "md"
357
373
  }
358
374
  ]
359
375
  ]
@@ -368,8 +384,8 @@
368
384
  "main",
369
385
  {
370
386
  "message": "@payload.error",
371
- "variant": "error",
372
- "type": "alert"
387
+ "type": "alert",
388
+ "variant": "error"
373
389
  }
374
390
  ]
375
391
  ]
@@ -426,18 +442,19 @@
426
442
  "children": [
427
443
  {
428
444
  "type": "stack",
429
- "align": "center",
445
+ "direction": "horizontal",
430
446
  "gap": "sm",
447
+ "align": "center",
431
448
  "children": [
432
449
  {
433
- "action": "CLOSE_VIEW",
434
- "label": "Back",
435
450
  "variant": "ghost",
436
- "type": "button"
451
+ "label": "Back",
452
+ "type": "button",
453
+ "action": "CLOSE_VIEW"
437
454
  },
438
455
  {
439
- "name": "user",
440
- "type": "icon"
456
+ "type": "icon",
457
+ "name": "user"
441
458
  },
442
459
  {
443
460
  "type": "typography",
@@ -445,110 +462,109 @@
445
462
  "content": "@entity.memberName"
446
463
  },
447
464
  {
465
+ "type": "badge",
448
466
  "label": "@entity.status",
449
- "variant": "default",
450
- "type": "badge"
467
+ "variant": "default"
451
468
  }
452
- ],
453
- "direction": "horizontal"
469
+ ]
454
470
  },
455
471
  {
456
472
  "type": "divider"
457
473
  },
458
474
  {
459
475
  "type": "stack",
476
+ "gap": "sm",
460
477
  "children": [
461
478
  {
479
+ "type": "stack",
462
480
  "direction": "horizontal",
481
+ "gap": "md",
463
482
  "children": [
464
483
  {
465
- "type": "typography",
484
+ "content": "Session",
466
485
  "color": "muted",
467
- "variant": "caption",
468
- "content": "Session"
486
+ "type": "typography",
487
+ "variant": "caption"
469
488
  },
470
489
  {
471
- "content": "@entity.sessionId",
490
+ "type": "typography",
472
491
  "variant": "body",
473
- "type": "typography"
492
+ "content": "@entity.sessionId"
474
493
  }
475
- ],
476
- "gap": "md",
477
- "type": "stack"
494
+ ]
478
495
  },
479
496
  {
480
497
  "gap": "md",
481
- "direction": "horizontal",
482
498
  "type": "stack",
483
499
  "children": [
484
500
  {
485
- "type": "typography",
486
501
  "color": "muted",
502
+ "type": "typography",
487
503
  "content": "Notes",
488
504
  "variant": "caption"
489
505
  },
490
506
  {
491
- "content": "@entity.notes",
492
507
  "type": "typography",
508
+ "content": "@entity.notes",
493
509
  "variant": "body"
494
510
  }
495
- ]
511
+ ],
512
+ "direction": "horizontal"
496
513
  }
497
514
  ],
498
- "direction": "vertical",
499
- "gap": "sm"
515
+ "direction": "vertical"
500
516
  },
501
517
  {
502
518
  "type": "divider"
503
519
  },
504
520
  {
505
521
  "cols": 2.0,
522
+ "type": "simple-grid",
506
523
  "children": [
507
524
  {
508
- "label": "Enrolled at",
525
+ "icon": "calendar",
509
526
  "value": "@entity.enrolledAt",
510
- "type": "stat-display",
511
- "icon": "calendar"
527
+ "label": "Enrolled at",
528
+ "type": "stat-display"
512
529
  },
513
530
  {
514
- "label": "Checked in at",
515
- "icon": "check-circle",
516
531
  "value": "@entity.checkedInAt",
517
- "type": "stat-display"
532
+ "type": "stat-display",
533
+ "label": "Checked in at",
534
+ "icon": "check-circle"
518
535
  }
519
- ],
520
- "type": "simple-grid"
536
+ ]
521
537
  },
522
538
  {
523
- "gap": "sm",
524
539
  "type": "stack",
525
- "align": "center",
540
+ "direction": "horizontal",
541
+ "gap": "sm",
526
542
  "children": [
527
543
  {
528
- "label": "Check In",
529
544
  "variant": "primary",
530
545
  "type": "button",
546
+ "action": "CHECK_IN",
547
+ "label": "Check In",
531
548
  "actionPayload": {
532
549
  "id": "@entity.id"
533
- },
534
- "action": "CHECK_IN"
550
+ }
535
551
  },
536
552
  {
537
- "variant": "danger",
553
+ "label": "No Show",
538
554
  "actionPayload": {
539
555
  "id": "@entity.id"
540
556
  },
541
- "label": "No Show",
542
- "type": "button",
543
- "action": "MARK_NO_SHOW"
557
+ "action": "MARK_NO_SHOW",
558
+ "variant": "danger",
559
+ "type": "button"
544
560
  }
545
561
  ],
546
- "direction": "horizontal"
562
+ "align": "center"
547
563
  }
548
564
  ],
549
- "direction": "vertical",
565
+ "gap": "md",
550
566
  "type": "stack",
551
- "gap": "md"
567
+ "direction": "vertical"
552
568
  }
553
569
  ]
554
570
  ]
@@ -577,22 +593,22 @@
577
593
  "render-ui",
578
594
  "main",
579
595
  {
580
- "className": "py-12",
581
596
  "type": "stack",
597
+ "gap": "md",
582
598
  "direction": "vertical",
583
599
  "align": "center",
600
+ "className": "py-12",
584
601
  "children": [
585
602
  {
586
603
  "type": "spinner"
587
604
  },
588
605
  {
589
- "variant": "caption",
606
+ "content": "Checking in…",
590
607
  "type": "typography",
591
- "color": "muted",
592
- "content": "Checking in…"
608
+ "variant": "caption",
609
+ "color": "muted"
593
610
  }
594
- ],
595
- "gap": "md"
611
+ ]
596
612
  }
597
613
  ]
598
614
  ]
@@ -622,20 +638,71 @@
622
638
  "main",
623
639
  {
624
640
  "className": "py-12",
641
+ "type": "stack",
625
642
  "children": [
626
643
  {
627
644
  "type": "spinner"
628
645
  },
629
646
  {
630
- "content": "Marking no-show…",
631
- "type": "typography",
632
647
  "variant": "caption",
633
- "color": "muted"
648
+ "type": "typography",
649
+ "color": "muted",
650
+ "content": "Marking no-show…"
634
651
  }
635
652
  ],
653
+ "align": "center",
654
+ "gap": "md",
655
+ "direction": "vertical"
656
+ }
657
+ ]
658
+ ]
659
+ },
660
+ {
661
+ "from": "browsing",
662
+ "to": "loading",
663
+ "event": "SET_STATUS",
664
+ "effects": [
665
+ [
666
+ "set",
667
+ "@entity.id",
668
+ "@payload.entityId"
669
+ ],
670
+ [
671
+ "set",
672
+ "@entity.status",
673
+ "@payload.newStatus"
674
+ ],
675
+ [
676
+ "persist",
677
+ "update",
678
+ "RosterEntry",
679
+ "@entity",
680
+ {
681
+ "emit": {
682
+ "failure": "RosterEntryLoadFailed",
683
+ "success": "RosterEntryLoaded"
684
+ }
685
+ }
686
+ ],
687
+ [
688
+ "render-ui",
689
+ "main",
690
+ {
691
+ "align": "center",
692
+ "className": "py-12",
636
693
  "direction": "vertical",
637
694
  "type": "stack",
638
- "align": "center",
695
+ "children": [
696
+ {
697
+ "type": "spinner"
698
+ },
699
+ {
700
+ "type": "typography",
701
+ "color": "muted",
702
+ "content": "Updating roster entry status…",
703
+ "variant": "caption"
704
+ }
705
+ ],
639
706
  "gap": "md"
640
707
  }
641
708
  ]
@@ -662,20 +729,20 @@
662
729
  {
663
730
  "className": "py-12",
664
731
  "direction": "vertical",
732
+ "gap": "md",
665
733
  "children": [
666
734
  {
667
735
  "type": "spinner"
668
736
  },
669
737
  {
670
- "content": "Loading roster…",
671
- "type": "typography",
672
738
  "variant": "caption",
673
- "color": "muted"
739
+ "content": "Loading roster…",
740
+ "color": "muted",
741
+ "type": "typography"
674
742
  }
675
743
  ],
676
- "type": "stack",
677
- "gap": "md",
678
- "align": "center"
744
+ "align": "center",
745
+ "type": "stack"
679
746
  }
680
747
  ]
681
748
  ]
@@ -695,8 +762,8 @@
695
762
  "RosterEntry",
696
763
  {
697
764
  "emit": {
698
- "failure": "RosterEntryLoadFailed",
699
- "success": "RosterEntryLoaded"
765
+ "success": "RosterEntryLoaded",
766
+ "failure": "RosterEntryLoadFailed"
700
767
  }
701
768
  }
702
769
  ],
@@ -704,20 +771,20 @@
704
771
  "render-ui",
705
772
  "main",
706
773
  {
707
- "type": "stack",
708
- "gap": "md",
709
- "direction": "vertical",
710
774
  "className": "py-12",
711
775
  "align": "center",
776
+ "direction": "vertical",
777
+ "gap": "md",
778
+ "type": "stack",
712
779
  "children": [
713
780
  {
714
781
  "type": "spinner"
715
782
  },
716
783
  {
717
- "content": "Checking in…",
784
+ "variant": "caption",
718
785
  "color": "muted",
719
786
  "type": "typography",
720
- "variant": "caption"
787
+ "content": "Checking in…"
721
788
  }
722
789
  ]
723
790
  }
@@ -739,8 +806,8 @@
739
806
  "RosterEntry",
740
807
  {
741
808
  "emit": {
742
- "success": "RosterEntryLoaded",
743
- "failure": "RosterEntryLoadFailed"
809
+ "failure": "RosterEntryLoadFailed",
810
+ "success": "RosterEntryLoaded"
744
811
  }
745
812
  }
746
813
  ],
@@ -748,22 +815,22 @@
748
815
  "render-ui",
749
816
  "main",
750
817
  {
818
+ "gap": "md",
751
819
  "type": "stack",
752
820
  "direction": "vertical",
753
- "gap": "md",
754
821
  "align": "center",
755
- "className": "py-12",
756
822
  "children": [
757
823
  {
758
824
  "type": "spinner"
759
825
  },
760
826
  {
761
- "type": "typography",
762
- "color": "muted",
763
827
  "content": "Marking no-show…",
828
+ "color": "muted",
829
+ "type": "typography",
764
830
  "variant": "caption"
765
831
  }
766
- ]
832
+ ],
833
+ "className": "py-12"
767
834
  }
768
835
  ]
769
836
  ]
@@ -778,8 +845,8 @@
778
845
  "RosterEntry",
779
846
  {
780
847
  "emit": {
781
- "success": "RosterEntryLoaded",
782
- "failure": "RosterEntryLoadFailed"
848
+ "failure": "RosterEntryLoadFailed",
849
+ "success": "RosterEntryLoaded"
783
850
  }
784
851
  }
785
852
  ],
@@ -796,37 +863,85 @@
796
863
  ]
797
864
  },
798
865
  "config": {
799
- "itemActions": {
800
- "type": "[ItemAction]",
866
+ "title": {
867
+ "type": "string",
868
+ "default": "Class Roster",
869
+ "label": "Section title",
870
+ "description": "Heading shown above the class roster",
871
+ "tier": "customization"
872
+ },
873
+ "eVerifyRequired": {
874
+ "type": "boolean",
875
+ "default": false,
876
+ "label": "E-Verify required",
877
+ "description": "US I-9 / E-Verify gate (relevant for instructor rosters).",
878
+ "tier": "customization"
879
+ },
880
+ "rescheduleWindowHours": {
881
+ "type": "number",
882
+ "default": 4.0,
883
+ "label": "Reschedule window (hours)",
884
+ "description": "Hours before class start during which the member can self-reschedule.",
885
+ "tier": "customization"
886
+ },
887
+ "i9DocumentsRequired": {
888
+ "type": "boolean",
889
+ "default": false,
890
+ "label": "I-9 documents required",
891
+ "description": "Require I-9 supporting documents (instructor rosters).",
892
+ "tier": "customization"
893
+ },
894
+ "bookingHours": {
895
+ "type": "string",
896
+ "default": "06:00-22:00",
897
+ "label": "Booking hours",
898
+ "description": "Daily window during which enrollments can be made (HH:MM-HH:MM).",
899
+ "tier": "customization"
900
+ },
901
+ "maxReschedules": {
902
+ "type": "number",
903
+ "default": 3.0,
904
+ "label": "Max reschedules",
905
+ "description": "Hard cap on reschedule count per enrollment.",
906
+ "tier": "advanced"
907
+ },
908
+ "anonymizeOnRejection": {
909
+ "type": "boolean",
910
+ "default": false,
911
+ "label": "Anonymize on rejection",
912
+ "description": "When true, scrub member PII on no_show / removal. Pair with std-data-erasure.",
913
+ "tier": "customization"
914
+ },
915
+ "fields": {
916
+ "type": "[FieldSpec]",
801
917
  "default": [
802
918
  {
803
- "event": "OPEN_ENTRY",
804
- "variant": "primary",
805
- "label": "Open",
806
- "icon": "arrow-right"
919
+ "name": "memberName",
920
+ "variant": "caption",
921
+ "label": "Member"
807
922
  },
808
923
  {
809
- "label": "Check In",
810
- "event": "CHECK_IN",
811
- "variant": "secondary"
924
+ "label": "Session",
925
+ "variant": "caption",
926
+ "name": "sessionId"
812
927
  },
813
928
  {
814
- "event": "MARK_NO_SHOW",
815
- "label": "No Show",
816
- "variant": "danger"
929
+ "name": "status",
930
+ "label": "Status",
931
+ "variant": "badge"
932
+ },
933
+ {
934
+ "label": "Checked In",
935
+ "variant": "caption",
936
+ "name": "checkedInAt"
817
937
  }
818
938
  ],
819
- "label": "Row actions",
820
- "description": "Buttons users can click on each enrolled member",
939
+ "label": "Columns to show",
940
+ "description": "Each column maps to one field on the Roster Entry entity",
821
941
  "tier": "customization",
822
942
  "items": {
823
943
  "type": "object",
824
944
  "properties": {
825
- "icon": {
826
- "name": "icon",
827
- "type": "string",
828
- "required": false
829
- },
830
945
  "variant": {
831
946
  "name": "variant",
832
947
  "type": "string",
@@ -835,61 +950,108 @@
835
950
  "label": {
836
951
  "name": "label",
837
952
  "type": "string",
838
- "required": true
953
+ "required": false
839
954
  },
840
- "event": {
841
- "name": "event",
955
+ "name": {
956
+ "name": "name",
842
957
  "type": "string",
843
958
  "required": true
959
+ },
960
+ "icon": {
961
+ "name": "icon",
962
+ "type": "string",
963
+ "required": false
964
+ },
965
+ "key": {
966
+ "name": "key",
967
+ "type": "string",
968
+ "required": false
969
+ },
970
+ "format": {
971
+ "name": "format",
972
+ "type": "string",
973
+ "required": false
974
+ },
975
+ "header": {
976
+ "name": "header",
977
+ "type": "string",
978
+ "required": false
844
979
  }
845
980
  }
846
981
  }
847
982
  },
848
- "fields": {
849
- "type": "[FieldSpec]",
983
+ "noShowGracePeriodMinutes": {
984
+ "type": "number",
985
+ "default": 10.0,
986
+ "label": "No-show grace (minutes)",
987
+ "description": "Minutes after class start before the entry auto-marks no_show. Wire via std-lifecycle.",
988
+ "tier": "customization"
989
+ },
990
+ "cancellationPolicy": {
991
+ "type": "string",
992
+ "default": "free",
993
+ "label": "Cancellation policy",
994
+ "description": "Refund treatment when an enrollment is cancelled inside the reschedule window.",
995
+ "tier": "customization",
996
+ "values": [
997
+ "free",
998
+ "partial-refund",
999
+ "no-refund"
1000
+ ]
1001
+ },
1002
+ "equalOpportunityTrackingEnabled": {
1003
+ "type": "boolean",
1004
+ "default": false,
1005
+ "label": "Equal opportunity tracking",
1006
+ "description": "Capture demographic data separately for EEO reporting (sibling collection).",
1007
+ "tier": "advanced"
1008
+ },
1009
+ "blackoutDates": {
1010
+ "type": "[string]",
1011
+ "default": [],
1012
+ "label": "Blackout dates",
1013
+ "description": "ISO dates blocked from booking (e.g. holidays). Compose std-lifecycle to enforce.",
1014
+ "tier": "customization",
1015
+ "items": {
1016
+ "type": "string"
1017
+ }
1018
+ },
1019
+ "itemActions": {
1020
+ "type": "[ItemAction]",
850
1021
  "default": [
851
1022
  {
852
- "name": "memberName",
853
- "label": "Member",
854
- "variant": "caption"
855
- },
856
- {
857
- "name": "sessionId",
858
- "label": "Session",
859
- "variant": "caption"
1023
+ "variant": "primary",
1024
+ "icon": "arrow-right",
1025
+ "label": "Open",
1026
+ "event": "OPEN_ENTRY"
860
1027
  },
861
1028
  {
862
- "variant": "badge",
863
- "label": "Status",
864
- "name": "status"
1029
+ "event": "CHECK_IN",
1030
+ "label": "Check In",
1031
+ "variant": "secondary"
865
1032
  },
866
1033
  {
867
- "name": "checkedInAt",
868
- "variant": "caption",
869
- "label": "Checked In"
1034
+ "variant": "danger",
1035
+ "event": "MARK_NO_SHOW",
1036
+ "label": "No Show"
870
1037
  }
871
1038
  ],
872
- "label": "Columns to show",
873
- "description": "Each column maps to one field on the Roster Entry entity",
1039
+ "label": "Row actions",
1040
+ "description": "Buttons users can click on each enrolled member",
874
1041
  "tier": "customization",
875
1042
  "items": {
876
1043
  "type": "object",
877
1044
  "properties": {
878
- "key": {
879
- "name": "key",
1045
+ "icon": {
1046
+ "name": "icon",
880
1047
  "type": "string",
881
1048
  "required": false
882
1049
  },
883
- "name": {
884
- "name": "name",
1050
+ "event": {
1051
+ "name": "event",
885
1052
  "type": "string",
886
1053
  "required": true
887
1054
  },
888
- "format": {
889
- "name": "format",
890
- "type": "string",
891
- "required": false
892
- },
893
1055
  "variant": {
894
1056
  "name": "variant",
895
1057
  "type": "string",
@@ -898,27 +1060,38 @@
898
1060
  "label": {
899
1061
  "name": "label",
900
1062
  "type": "string",
901
- "required": false
902
- },
903
- "icon": {
904
- "name": "icon",
905
- "type": "string",
906
- "required": false
907
- },
908
- "header": {
909
- "name": "header",
910
- "type": "string",
911
- "required": false
1063
+ "required": true
912
1064
  }
913
1065
  }
914
1066
  }
915
1067
  },
916
- "title": {
917
- "type": "string",
918
- "default": "Class Roster",
919
- "label": "Section title",
920
- "description": "Heading shown above the class roster",
1068
+ "bookingWindowDays": {
1069
+ "type": "number",
1070
+ "default": 30.0,
1071
+ "label": "Booking window (days)",
1072
+ "description": "How far in advance members can enroll in a class.",
921
1073
  "tier": "customization"
1074
+ },
1075
+ "leadTimeMinutes": {
1076
+ "type": "number",
1077
+ "default": 15.0,
1078
+ "label": "Lead time (minutes)",
1079
+ "description": "Minimum minutes before class start that a new enrollment is accepted.",
1080
+ "tier": "customization"
1081
+ },
1082
+ "backgroundCheckRequired": {
1083
+ "type": "boolean",
1084
+ "default": false,
1085
+ "label": "Background check required",
1086
+ "description": "Block CHECK_IN until a background check is on file (e.g. youth programs).",
1087
+ "tier": "customization"
1088
+ },
1089
+ "retentionAfterRejectionDays": {
1090
+ "type": "number",
1091
+ "default": 730.0,
1092
+ "label": "Retention after rejection (days)",
1093
+ "description": "Days to keep no_show / removed roster entries.",
1094
+ "tier": "advanced"
922
1095
  }
923
1096
  },
924
1097
  "scope": "collection"
@@ -937,4 +1110,4 @@
937
1110
  ]
938
1111
  }
939
1112
  ]
940
- }
1113
+ }