@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-customer-account",
3
- "version": "1.1.0",
4
- "description": "std-customer-account — retail customer profile primitive with loyalty points, store credit, and spend history. Lists customers in `browsing`; opens detail in `viewing_single` with Grant Points / Issue Credit / Ban actions. Agents tune the list shape via `config.fields` + `config.itemActions`.",
3
+ "version": "1.2.0",
4
+ "description": "std-customer-account — retail customer profile with loyalty points, store credit and Grant Points / Issue Credit / Ban actions. Listens for SET_STATUS so std-lifecycle can drive automated transitions. Exposes CRM-pattern knobs.",
5
5
  "orbitals": [
6
6
  {
7
7
  "name": "CustomerAccountOrbital",
@@ -179,6 +179,66 @@
179
179
  "type": "string"
180
180
  }
181
181
  ]
182
+ },
183
+ {
184
+ "event": "CustomerAccountUpdated",
185
+ "payloadSchema": [
186
+ {
187
+ "name": "row.id",
188
+ "type": "string",
189
+ "required": true
190
+ },
191
+ {
192
+ "name": "row.name",
193
+ "type": "string",
194
+ "required": true
195
+ },
196
+ {
197
+ "name": "row.email",
198
+ "type": "string"
199
+ },
200
+ {
201
+ "name": "row.phone",
202
+ "type": "string"
203
+ },
204
+ {
205
+ "name": "row.loyaltyPoints",
206
+ "type": "number"
207
+ },
208
+ {
209
+ "name": "row.storeCreditAmount",
210
+ "type": "number"
211
+ },
212
+ {
213
+ "name": "row.totalSpent",
214
+ "type": "number"
215
+ },
216
+ {
217
+ "name": "row.joinedAt",
218
+ "type": "string"
219
+ },
220
+ {
221
+ "name": "row.lastVisitAt",
222
+ "type": "string"
223
+ },
224
+ {
225
+ "name": "row.status",
226
+ "type": "string"
227
+ }
228
+ ]
229
+ },
230
+ {
231
+ "event": "CustomerAccountUpdateFailed",
232
+ "payloadSchema": [
233
+ {
234
+ "name": "error",
235
+ "type": "string"
236
+ },
237
+ {
238
+ "name": "code",
239
+ "type": "string"
240
+ }
241
+ ]
182
242
  }
183
243
  ],
184
244
  "stateMachine": {
@@ -252,6 +312,46 @@
252
312
  }
253
313
  ]
254
314
  },
315
+ {
316
+ "key": "SET_STATUS",
317
+ "name": "Set Status",
318
+ "payloadSchema": [
319
+ {
320
+ "name": "entityId",
321
+ "type": "string",
322
+ "required": true
323
+ },
324
+ {
325
+ "name": "newStatus",
326
+ "type": "string",
327
+ "required": true
328
+ }
329
+ ]
330
+ },
331
+ {
332
+ "key": "CustomerAccountUpdated",
333
+ "name": "CustomerAccount updated",
334
+ "payloadSchema": [
335
+ {
336
+ "name": "row",
337
+ "type": "CustomerAccount"
338
+ }
339
+ ]
340
+ },
341
+ {
342
+ "key": "CustomerAccountUpdateFailed",
343
+ "name": "CustomerAccount update failed",
344
+ "payloadSchema": [
345
+ {
346
+ "name": "error",
347
+ "type": "string"
348
+ },
349
+ {
350
+ "name": "code",
351
+ "type": "string"
352
+ }
353
+ ]
354
+ },
255
355
  {
256
356
  "key": "CLOSE_VIEW",
257
357
  "name": "Close View"
@@ -300,21 +400,21 @@
300
400
  "main",
301
401
  {
302
402
  "gap": "md",
303
- "type": "stack",
304
- "direction": "vertical",
305
403
  "align": "center",
404
+ "className": "py-12",
306
405
  "children": [
307
406
  {
308
407
  "type": "spinner"
309
408
  },
310
409
  {
311
- "variant": "caption",
312
410
  "type": "typography",
313
- "content": "Loading customers…",
314
- "color": "muted"
411
+ "variant": "caption",
412
+ "color": "muted",
413
+ "content": "Loading customers…"
315
414
  }
316
415
  ],
317
- "className": "py-12"
416
+ "type": "stack",
417
+ "direction": "vertical"
318
418
  }
319
419
  ]
320
420
  ]
@@ -328,67 +428,67 @@
328
428
  "render-ui",
329
429
  "main",
330
430
  {
431
+ "direction": "vertical",
331
432
  "children": [
332
433
  {
434
+ "align": "center",
435
+ "direction": "horizontal",
436
+ "gap": "sm",
437
+ "type": "stack",
333
438
  "children": [
334
439
  {
335
- "type": "icon",
336
- "name": "users"
440
+ "name": "users",
441
+ "type": "icon"
337
442
  },
338
443
  {
444
+ "type": "typography",
339
445
  "content": "@config.title",
340
- "variant": "h3",
341
- "type": "typography"
446
+ "variant": "h3"
342
447
  }
343
- ],
344
- "gap": "sm",
345
- "type": "stack",
346
- "direction": "horizontal",
347
- "align": "center"
448
+ ]
348
449
  },
349
450
  {
350
- "type": "simple-grid",
351
- "cols": 4.0,
352
451
  "children": [
353
452
  {
354
453
  "value": "@payload.data.length",
355
- "label": "Total customers",
356
454
  "type": "stat-display",
455
+ "label": "Total customers",
357
456
  "icon": "users"
358
457
  },
359
458
  {
360
- "type": "stat-display",
361
459
  "label": "Active",
362
- "value": "1,284",
363
- "icon": "check-circle"
460
+ "icon": "check-circle",
461
+ "type": "stat-display",
462
+ "value": "1,284"
364
463
  },
365
464
  {
366
- "label": "Loyalty members",
367
465
  "icon": "award",
368
- "value": "76%",
369
- "type": "stat-display"
466
+ "label": "Loyalty members",
467
+ "type": "stat-display",
468
+ "value": "76%"
370
469
  },
371
470
  {
372
- "value": "$412",
373
- "icon": "dollar-sign",
374
471
  "type": "stat-display",
375
- "label": "Avg lifetime value"
472
+ "value": "$412",
473
+ "label": "Avg lifetime value",
474
+ "icon": "dollar-sign"
376
475
  }
377
- ]
476
+ ],
477
+ "type": "simple-grid",
478
+ "cols": 4.0
378
479
  },
379
480
  {
380
481
  "type": "divider"
381
482
  },
382
483
  {
383
- "cols": 1.0,
484
+ "type": "data-grid",
384
485
  "entity": "@payload.data",
385
- "fields": "@config.fields",
486
+ "cols": 1.0,
386
487
  "gap": "sm",
387
- "type": "data-grid",
388
- "itemActions": "@config.itemActions"
488
+ "itemActions": "@config.itemActions",
489
+ "fields": "@config.fields"
389
490
  }
390
491
  ],
391
- "direction": "vertical",
392
492
  "type": "stack",
393
493
  "gap": "md"
394
494
  }
@@ -470,68 +570,70 @@
470
570
  "render-ui",
471
571
  "main",
472
572
  {
573
+ "direction": "vertical",
574
+ "type": "stack",
575
+ "gap": "md",
473
576
  "children": [
474
577
  {
475
- "gap": "sm",
476
578
  "children": [
477
579
  {
478
- "action": "CLOSE_VIEW",
479
- "variant": "ghost",
480
580
  "type": "button",
581
+ "variant": "ghost",
582
+ "action": "CLOSE_VIEW",
481
583
  "label": "Back"
482
584
  },
483
585
  {
484
- "name": "user",
485
- "type": "icon"
586
+ "type": "icon",
587
+ "name": "user"
486
588
  },
487
589
  {
590
+ "type": "typography",
488
591
  "content": "@entity.name",
489
- "variant": "h3",
490
- "type": "typography"
592
+ "variant": "h3"
491
593
  },
492
594
  {
493
595
  "type": "badge",
494
- "variant": "primary",
495
- "label": "@entity.status"
596
+ "label": "@entity.status",
597
+ "variant": "primary"
496
598
  }
497
599
  ],
498
- "align": "center",
600
+ "gap": "sm",
499
601
  "type": "stack",
602
+ "align": "center",
500
603
  "direction": "horizontal"
501
604
  },
502
605
  {
503
606
  "type": "divider"
504
607
  },
505
608
  {
506
- "type": "stack",
507
609
  "direction": "vertical",
610
+ "type": "stack",
508
611
  "children": [
509
612
  {
510
613
  "gap": "md",
511
614
  "children": [
512
615
  {
513
616
  "color": "muted",
617
+ "variant": "caption",
514
618
  "type": "typography",
515
- "content": "Email",
516
- "variant": "caption"
619
+ "content": "Email"
517
620
  },
518
621
  {
519
- "type": "typography",
520
622
  "variant": "body",
521
- "content": "@entity.email"
623
+ "content": "@entity.email",
624
+ "type": "typography"
522
625
  }
523
626
  ],
524
627
  "direction": "horizontal",
525
628
  "type": "stack"
526
629
  },
527
630
  {
528
- "gap": "md",
529
631
  "children": [
530
632
  {
531
- "variant": "caption",
532
- "content": "Phone",
533
633
  "type": "typography",
534
- "color": "muted"
634
+ "color": "muted",
635
+ "variant": "caption",
636
+ "content": "Phone"
535
637
  },
536
638
  {
537
639
  "type": "typography",
@@ -539,8 +641,9 @@
539
641
  "content": "@entity.phone"
540
642
  }
541
643
  ],
542
- "type": "stack",
543
- "direction": "horizontal"
644
+ "gap": "md",
645
+ "direction": "horizontal",
646
+ "type": "stack"
544
647
  }
545
648
  ],
546
649
  "gap": "sm"
@@ -549,74 +652,71 @@
549
652
  "type": "divider"
550
653
  },
551
654
  {
655
+ "type": "simple-grid",
656
+ "cols": 4.0,
552
657
  "children": [
553
658
  {
554
- "icon": "award",
555
- "type": "stat-display",
659
+ "value": "@entity.loyaltyPoints",
556
660
  "label": "Loyalty points",
557
- "value": "@entity.loyaltyPoints"
661
+ "icon": "award",
662
+ "type": "stat-display"
558
663
  },
559
664
  {
560
- "label": "Store credit",
561
665
  "type": "stat-display",
562
- "value": "@entity.storeCreditAmount",
563
- "icon": "credit-card"
666
+ "icon": "credit-card",
667
+ "label": "Store credit",
668
+ "value": "@entity.storeCreditAmount"
564
669
  },
565
670
  {
566
- "label": "Total spent",
671
+ "icon": "dollar-sign",
567
672
  "type": "stat-display",
568
673
  "value": "@entity.totalSpent",
569
- "icon": "dollar-sign"
674
+ "label": "Total spent"
570
675
  },
571
676
  {
572
- "value": "@entity.lastVisitAt",
573
677
  "type": "stat-display",
678
+ "value": "@entity.lastVisitAt",
574
679
  "label": "Last visit",
575
680
  "icon": "calendar"
576
681
  }
577
- ],
578
- "cols": 4.0,
579
- "type": "simple-grid"
682
+ ]
580
683
  },
581
684
  {
582
- "direction": "horizontal",
583
- "align": "center",
584
685
  "children": [
585
686
  {
586
- "actionPayload": {
587
- "id": "@entity.id"
588
- },
589
687
  "type": "button",
590
688
  "label": "Grant Points",
591
689
  "variant": "primary",
592
- "action": "GRANT_POINTS"
690
+ "action": "GRANT_POINTS",
691
+ "actionPayload": {
692
+ "id": "@entity.id"
693
+ }
593
694
  },
594
695
  {
595
696
  "action": "GRANT_CREDIT",
596
697
  "variant": "secondary",
597
- "type": "button",
598
698
  "actionPayload": {
599
699
  "id": "@entity.id"
600
700
  },
601
- "label": "Issue Credit"
701
+ "label": "Issue Credit",
702
+ "type": "button"
602
703
  },
603
704
  {
604
- "variant": "danger",
705
+ "label": "Ban",
605
706
  "type": "button",
707
+ "action": "BAN_CUSTOMER",
606
708
  "actionPayload": {
607
709
  "id": "@entity.id"
608
710
  },
609
- "label": "Ban",
610
- "action": "BAN_CUSTOMER"
711
+ "variant": "danger"
611
712
  }
612
713
  ],
613
714
  "type": "stack",
715
+ "direction": "horizontal",
716
+ "align": "center",
614
717
  "gap": "sm"
615
718
  }
616
- ],
617
- "gap": "md",
618
- "direction": "vertical",
619
- "type": "stack"
719
+ ]
620
720
  }
621
721
  ]
622
722
  ]
@@ -645,22 +745,106 @@
645
745
  "render-ui",
646
746
  "main",
647
747
  {
648
- "type": "stack",
649
- "className": "py-12",
748
+ "children": [
749
+ {
750
+ "type": "spinner"
751
+ },
752
+ {
753
+ "variant": "caption",
754
+ "type": "typography",
755
+ "color": "muted",
756
+ "content": "Banning customer…"
757
+ }
758
+ ],
650
759
  "gap": "md",
760
+ "className": "py-12",
651
761
  "direction": "vertical",
762
+ "type": "stack",
763
+ "align": "center"
764
+ }
765
+ ]
766
+ ]
767
+ },
768
+ {
769
+ "from": "browsing",
770
+ "to": "loading",
771
+ "event": "SET_STATUS",
772
+ "effects": [
773
+ [
774
+ "set",
775
+ "@entity.id",
776
+ "@payload.entityId"
777
+ ],
778
+ [
779
+ "set",
780
+ "@entity.status",
781
+ "@payload.newStatus"
782
+ ],
783
+ [
784
+ "persist",
785
+ "update",
786
+ "CustomerAccount",
787
+ "@entity",
788
+ {
789
+ "emit": {
790
+ "success": "CustomerAccountUpdated",
791
+ "failure": "CustomerAccountUpdateFailed"
792
+ }
793
+ }
794
+ ],
795
+ [
796
+ "render-ui",
797
+ "main",
798
+ {
652
799
  "align": "center",
800
+ "className": "py-12",
653
801
  "children": [
654
802
  {
655
803
  "type": "spinner"
656
804
  },
657
805
  {
658
- "color": "muted",
659
806
  "type": "typography",
660
- "variant": "caption",
661
- "content": "Banning customer…"
807
+ "color": "muted",
808
+ "content": "Updating customer status…",
809
+ "variant": "caption"
662
810
  }
663
- ]
811
+ ],
812
+ "type": "stack",
813
+ "direction": "vertical",
814
+ "gap": "md"
815
+ }
816
+ ]
817
+ ]
818
+ },
819
+ {
820
+ "from": "browsing",
821
+ "to": "loading",
822
+ "event": "CustomerAccountUpdated",
823
+ "effects": [
824
+ [
825
+ "fetch",
826
+ "CustomerAccount",
827
+ {
828
+ "emit": {
829
+ "failure": "CustomerAccountLoadFailed",
830
+ "success": "CustomerAccountLoaded"
831
+ }
832
+ }
833
+ ]
834
+ ]
835
+ },
836
+ {
837
+ "from": "browsing",
838
+ "to": "browsing",
839
+ "event": "CustomerAccountUpdateFailed",
840
+ "effects": [
841
+ [
842
+ "render-ui",
843
+ "main",
844
+ {
845
+ "type": "alert",
846
+ "variant": "error",
847
+ "message": "@payload.error"
664
848
  }
665
849
  ]
666
850
  ]
@@ -685,21 +869,21 @@
685
869
  "main",
686
870
  {
687
871
  "type": "stack",
872
+ "align": "center",
688
873
  "className": "py-12",
874
+ "gap": "md",
875
+ "direction": "vertical",
689
876
  "children": [
690
877
  {
691
878
  "type": "spinner"
692
879
  },
693
880
  {
694
- "type": "typography",
695
- "color": "muted",
696
881
  "variant": "caption",
882
+ "color": "muted",
883
+ "type": "typography",
697
884
  "content": "Loading customers…"
698
885
  }
699
- ],
700
- "direction": "vertical",
701
- "gap": "md",
702
- "align": "center"
886
+ ]
703
887
  }
704
888
  ]
705
889
  ]
@@ -728,22 +912,22 @@
728
912
  "render-ui",
729
913
  "main",
730
914
  {
731
- "className": "py-12",
732
915
  "align": "center",
916
+ "direction": "vertical",
917
+ "type": "stack",
918
+ "className": "py-12",
919
+ "gap": "md",
733
920
  "children": [
734
921
  {
735
922
  "type": "spinner"
736
923
  },
737
924
  {
738
- "content": "Granting points…",
739
- "color": "muted",
740
925
  "type": "typography",
741
- "variant": "caption"
926
+ "variant": "caption",
927
+ "content": "Granting points…",
928
+ "color": "muted"
742
929
  }
743
- ],
744
- "type": "stack",
745
- "direction": "vertical",
746
- "gap": "md"
930
+ ]
747
931
  }
748
932
  ]
749
933
  ]
@@ -763,8 +947,8 @@
763
947
  "CustomerAccount",
764
948
  {
765
949
  "emit": {
766
- "success": "CustomerAccountLoaded",
767
- "failure": "CustomerAccountLoadFailed"
950
+ "failure": "CustomerAccountLoadFailed",
951
+ "success": "CustomerAccountLoaded"
768
952
  }
769
953
  }
770
954
  ],
@@ -773,21 +957,21 @@
773
957
  "main",
774
958
  {
775
959
  "gap": "md",
960
+ "direction": "vertical",
961
+ "align": "center",
776
962
  "children": [
777
963
  {
778
964
  "type": "spinner"
779
965
  },
780
966
  {
781
- "color": "muted",
967
+ "content": "Issuing store credit…",
782
968
  "variant": "caption",
783
969
  "type": "typography",
784
- "content": "Issuing store credit…"
970
+ "color": "muted"
785
971
  }
786
972
  ],
787
- "className": "py-12",
788
- "direction": "vertical",
789
973
  "type": "stack",
790
- "align": "center"
974
+ "className": "py-12"
791
975
  }
792
976
  ]
793
977
  ]
@@ -816,22 +1000,22 @@
816
1000
  "render-ui",
817
1001
  "main",
818
1002
  {
819
- "className": "py-12",
820
- "type": "stack",
821
1003
  "children": [
822
1004
  {
823
1005
  "type": "spinner"
824
1006
  },
825
1007
  {
1008
+ "color": "muted",
826
1009
  "variant": "caption",
827
1010
  "type": "typography",
828
- "color": "muted",
829
1011
  "content": "Banning customer…"
830
1012
  }
831
1013
  ],
832
1014
  "gap": "md",
833
- "direction": "vertical",
834
- "align": "center"
1015
+ "align": "center",
1016
+ "className": "py-12",
1017
+ "type": "stack",
1018
+ "direction": "vertical"
835
1019
  }
836
1020
  ]
837
1021
  ]
@@ -846,8 +1030,8 @@
846
1030
  "CustomerAccount",
847
1031
  {
848
1032
  "emit": {
849
- "success": "CustomerAccountLoaded",
850
- "failure": "CustomerAccountLoadFailed"
1033
+ "failure": "CustomerAccountLoadFailed",
1034
+ "success": "CustomerAccountLoaded"
851
1035
  }
852
1036
  }
853
1037
  ],
@@ -864,18 +1048,32 @@
864
1048
  ]
865
1049
  },
866
1050
  "config": {
1051
+ "archiveInactiveAfterDays": {
1052
+ "type": "number",
1053
+ "default": 365.0,
1054
+ "label": "Archive inactive after (days)",
1055
+ "description": "Days of inactivity before customer is auto-archived. Declarative; wire via sibling std-lifecycle.",
1056
+ "tier": "advanced"
1057
+ },
1058
+ "title": {
1059
+ "type": "string",
1060
+ "default": "Customers",
1061
+ "label": "Section title",
1062
+ "description": "Heading shown above the customer directory",
1063
+ "tier": "customization"
1064
+ },
867
1065
  "fields": {
868
1066
  "type": "[FieldSpec]",
869
1067
  "default": [
870
1068
  {
1069
+ "label": "Name",
871
1070
  "variant": "caption",
872
- "name": "name",
873
- "label": "Name"
1071
+ "name": "name"
874
1072
  },
875
1073
  {
876
1074
  "name": "email",
877
- "variant": "caption",
878
- "label": "Email"
1075
+ "label": "Email",
1076
+ "variant": "caption"
879
1077
  },
880
1078
  {
881
1079
  "label": "Phone",
@@ -883,19 +1081,19 @@
883
1081
  "variant": "caption"
884
1082
  },
885
1083
  {
1084
+ "label": "Points",
886
1085
  "variant": "caption",
887
- "name": "loyaltyPoints",
888
- "label": "Points"
1086
+ "name": "loyaltyPoints"
889
1087
  },
890
1088
  {
891
1089
  "name": "totalSpent",
892
- "label": "Total Spent",
893
- "variant": "caption"
1090
+ "variant": "caption",
1091
+ "label": "Total Spent"
894
1092
  },
895
1093
  {
1094
+ "label": "Status",
896
1095
  "variant": "badge",
897
- "name": "status",
898
- "label": "Status"
1096
+ "name": "status"
899
1097
  }
900
1098
  ],
901
1099
  "label": "Columns to show",
@@ -904,49 +1102,56 @@
904
1102
  "items": {
905
1103
  "type": "object",
906
1104
  "properties": {
907
- "format": {
908
- "name": "format",
1105
+ "header": {
1106
+ "name": "header",
909
1107
  "type": "string",
910
1108
  "required": false
911
1109
  },
912
- "key": {
913
- "name": "key",
1110
+ "icon": {
1111
+ "name": "icon",
914
1112
  "type": "string",
915
1113
  "required": false
916
1114
  },
917
- "label": {
918
- "name": "label",
1115
+ "name": {
1116
+ "name": "name",
919
1117
  "type": "string",
920
- "required": false
1118
+ "required": true
921
1119
  },
922
- "variant": {
923
- "name": "variant",
1120
+ "format": {
1121
+ "name": "format",
924
1122
  "type": "string",
925
1123
  "required": false
926
1124
  },
927
- "name": {
928
- "name": "name",
1125
+ "label": {
1126
+ "name": "label",
929
1127
  "type": "string",
930
- "required": true
1128
+ "required": false
931
1129
  },
932
- "icon": {
933
- "name": "icon",
1130
+ "key": {
1131
+ "name": "key",
934
1132
  "type": "string",
935
1133
  "required": false
936
1134
  },
937
- "header": {
938
- "name": "header",
1135
+ "variant": {
1136
+ "name": "variant",
939
1137
  "type": "string",
940
1138
  "required": false
941
1139
  }
942
1140
  }
943
1141
  }
944
1142
  },
945
- "title": {
946
- "type": "string",
947
- "default": "Customers",
948
- "label": "Section title",
949
- "description": "Heading shown above the customer directory",
1143
+ "healthScoreThresholdAlert": {
1144
+ "type": "number",
1145
+ "default": 50.0,
1146
+ "label": "Health score threshold",
1147
+ "description": "Customers with health score below this trigger an alert. Declarative; wire via sibling std-notify.",
1148
+ "tier": "customization"
1149
+ },
1150
+ "consentTrackingEnabled": {
1151
+ "type": "boolean",
1152
+ "default": true,
1153
+ "label": "Track consent",
1154
+ "description": "Whether to record marketing/data-processing consent on the customer profile. Declarative.",
950
1155
  "tier": "customization"
951
1156
  },
952
1157
  "itemActions": {
@@ -954,14 +1159,14 @@
954
1159
  "default": [
955
1160
  {
956
1161
  "label": "Open",
957
- "variant": "primary",
958
1162
  "event": "OPEN_CUSTOMER",
959
- "icon": "arrow-right"
1163
+ "icon": "arrow-right",
1164
+ "variant": "primary"
960
1165
  },
961
1166
  {
962
- "label": "Ban",
963
1167
  "variant": "danger",
964
- "event": "BAN_CUSTOMER"
1168
+ "event": "BAN_CUSTOMER",
1169
+ "label": "Ban"
965
1170
  }
966
1171
  ],
967
1172
  "label": "Row actions",
@@ -975,8 +1180,8 @@
975
1180
  "type": "string",
976
1181
  "required": false
977
1182
  },
978
- "event": {
979
- "name": "event",
1183
+ "label": {
1184
+ "name": "label",
980
1185
  "type": "string",
981
1186
  "required": true
982
1187
  },
@@ -985,13 +1190,27 @@
985
1190
  "type": "string",
986
1191
  "required": false
987
1192
  },
988
- "label": {
989
- "name": "label",
1193
+ "event": {
1194
+ "name": "event",
990
1195
  "type": "string",
991
1196
  "required": true
992
1197
  }
993
1198
  }
994
1199
  }
1200
+ },
1201
+ "renewalReminderDaysBefore": {
1202
+ "type": "[number]",
1203
+ "default": [
1204
+ 30.0,
1205
+ 7.0,
1206
+ 1.0
1207
+ ],
1208
+ "label": "Renewal reminder days-before",
1209
+ "description": "Days before subscription renewal to send reminders. Declarative; wire via sibling std-reminder-scheduler.",
1210
+ "tier": "customization",
1211
+ "items": {
1212
+ "type": "number"
1213
+ }
995
1214
  }
996
1215
  },
997
1216
  "scope": "collection"
@@ -1010,4 +1229,4 @@
1010
1229
  ]
1011
1230
  }
1012
1231
  ]
1013
- }
1232
+ }