@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-membership",
3
- "version": "1.1.0",
4
- "description": "std-membership — recurring gym/fitness/club membership with tier, renewal, freeze, and self-managed cancel. Lists memberships in `browsing`; opens membership detail in `viewing_single` with Upgrade / Freeze / Cancel actions. Agents tune the list shape via `config.fields` + `config.itemActions`.",
3
+ "version": "1.2.0",
4
+ "description": "std-membership — gym/club membership with tier, renewal, freeze, cancel. Listens for SET_STATUS so std-lifecycle can drive automated transitions. Exposes CRM-pattern knobs.",
5
5
  "orbitals": [
6
6
  {
7
7
  "name": "MembershipOrbital",
@@ -190,6 +190,67 @@
190
190
  "type": "string"
191
191
  }
192
192
  ]
193
+ },
194
+ {
195
+ "event": "MembershipUpdated",
196
+ "payloadSchema": [
197
+ {
198
+ "name": "row.id",
199
+ "type": "string",
200
+ "required": true
201
+ },
202
+ {
203
+ "name": "row.memberId",
204
+ "type": "string",
205
+ "required": true
206
+ },
207
+ {
208
+ "name": "row.memberName",
209
+ "type": "string"
210
+ },
211
+ {
212
+ "name": "row.tier",
213
+ "type": "string"
214
+ },
215
+ {
216
+ "name": "row.monthlyDues",
217
+ "type": "number"
218
+ },
219
+ {
220
+ "name": "row.startDate",
221
+ "type": "string",
222
+ "required": true
223
+ },
224
+ {
225
+ "name": "row.renewalDate",
226
+ "type": "string"
227
+ },
228
+ {
229
+ "name": "row.status",
230
+ "type": "string"
231
+ },
232
+ {
233
+ "name": "row.accessLevel",
234
+ "type": "string"
235
+ },
236
+ {
237
+ "name": "row.notes",
238
+ "type": "string"
239
+ }
240
+ ]
241
+ },
242
+ {
243
+ "event": "MembershipUpdateFailed",
244
+ "payloadSchema": [
245
+ {
246
+ "name": "error",
247
+ "type": "string"
248
+ },
249
+ {
250
+ "name": "code",
251
+ "type": "string"
252
+ }
253
+ ]
193
254
  }
194
255
  ],
195
256
  "stateMachine": {
@@ -263,6 +324,46 @@
263
324
  }
264
325
  ]
265
326
  },
327
+ {
328
+ "key": "SET_STATUS",
329
+ "name": "Set Status",
330
+ "payloadSchema": [
331
+ {
332
+ "name": "entityId",
333
+ "type": "string",
334
+ "required": true
335
+ },
336
+ {
337
+ "name": "newStatus",
338
+ "type": "string",
339
+ "required": true
340
+ }
341
+ ]
342
+ },
343
+ {
344
+ "key": "MembershipUpdated",
345
+ "name": "Membership updated",
346
+ "payloadSchema": [
347
+ {
348
+ "name": "row",
349
+ "type": "Membership"
350
+ }
351
+ ]
352
+ },
353
+ {
354
+ "key": "MembershipUpdateFailed",
355
+ "name": "Membership update failed",
356
+ "payloadSchema": [
357
+ {
358
+ "name": "error",
359
+ "type": "string"
360
+ },
361
+ {
362
+ "name": "code",
363
+ "type": "string"
364
+ }
365
+ ]
366
+ },
266
367
  {
267
368
  "key": "CLOSE_MEMBERSHIP",
268
369
  "name": "Close Membership"
@@ -310,22 +411,22 @@
310
411
  "render-ui",
311
412
  "main",
312
413
  {
313
- "align": "center",
414
+ "gap": "md",
314
415
  "type": "stack",
416
+ "align": "center",
417
+ "className": "py-12",
418
+ "direction": "vertical",
315
419
  "children": [
316
420
  {
317
421
  "type": "spinner"
318
422
  },
319
423
  {
320
- "variant": "caption",
321
424
  "content": "Loading memberships…",
322
- "color": "muted",
323
- "type": "typography"
425
+ "type": "typography",
426
+ "variant": "caption",
427
+ "color": "muted"
324
428
  }
325
- ],
326
- "className": "py-12",
327
- "gap": "md",
328
- "direction": "vertical"
429
+ ]
329
430
  }
330
431
  ]
331
432
  ]
@@ -339,12 +440,10 @@
339
440
  "render-ui",
340
441
  "main",
341
442
  {
443
+ "direction": "vertical",
444
+ "type": "stack",
342
445
  "children": [
343
446
  {
344
- "gap": "sm",
345
- "align": "center",
346
- "type": "stack",
347
- "direction": "horizontal",
348
447
  "children": [
349
448
  {
350
449
  "type": "icon",
@@ -352,56 +451,58 @@
352
451
  },
353
452
  {
354
453
  "variant": "h3",
355
- "content": "@config.title",
356
- "type": "typography"
454
+ "type": "typography",
455
+ "content": "@config.title"
357
456
  }
358
- ]
457
+ ],
458
+ "direction": "horizontal",
459
+ "gap": "sm",
460
+ "type": "stack",
461
+ "align": "center"
359
462
  },
360
463
  {
464
+ "cols": 4.0,
361
465
  "children": [
362
466
  {
363
- "icon": "credit-card",
364
- "label": "Total memberships",
365
467
  "value": "@payload.data.length",
366
- "type": "stat-display"
468
+ "icon": "credit-card",
469
+ "type": "stat-display",
470
+ "label": "Total memberships"
367
471
  },
368
472
  {
369
- "label": "Active",
473
+ "type": "stat-display",
370
474
  "value": "112",
371
475
  "icon": "check-circle",
372
- "type": "stat-display"
476
+ "label": "Active"
373
477
  },
374
478
  {
375
- "value": "8",
479
+ "type": "stat-display",
376
480
  "icon": "pause-circle",
377
481
  "label": "Frozen",
378
- "type": "stat-display"
482
+ "value": "8"
379
483
  },
380
484
  {
381
485
  "label": "MRR",
486
+ "icon": "dollar-sign",
382
487
  "type": "stat-display",
383
- "value": "$14,820",
384
- "icon": "dollar-sign"
488
+ "value": "$14,820"
385
489
  }
386
490
  ],
387
- "type": "simple-grid",
388
- "cols": 4.0
491
+ "type": "simple-grid"
389
492
  },
390
493
  {
391
494
  "type": "divider"
392
495
  },
393
496
  {
394
- "entity": "@payload.data",
395
497
  "cols": 1.0,
396
- "type": "data-grid",
498
+ "fields": "@config.fields",
397
499
  "gap": "sm",
398
500
  "itemActions": "@config.itemActions",
399
- "fields": "@config.fields"
501
+ "type": "data-grid",
502
+ "entity": "@payload.data"
400
503
  }
401
504
  ],
402
- "gap": "md",
403
- "type": "stack",
404
- "direction": "vertical"
505
+ "gap": "md"
405
506
  }
406
507
  ]
407
508
  ]
@@ -416,8 +517,8 @@
416
517
  "main",
417
518
  {
418
519
  "type": "alert",
419
- "variant": "error",
420
- "message": "@payload.error"
520
+ "message": "@payload.error",
521
+ "variant": "error"
421
522
  }
422
523
  ]
423
524
  ]
@@ -481,150 +582,150 @@
481
582
  "render-ui",
482
583
  "main",
483
584
  {
484
- "direction": "vertical",
485
585
  "gap": "md",
486
586
  "type": "stack",
587
+ "direction": "vertical",
487
588
  "children": [
488
589
  {
489
- "direction": "horizontal",
490
- "align": "center",
491
- "type": "stack",
492
- "gap": "sm",
493
590
  "children": [
494
591
  {
495
- "variant": "ghost",
496
592
  "type": "button",
497
- "label": "Back",
498
- "action": "CLOSE_MEMBERSHIP"
593
+ "action": "CLOSE_MEMBERSHIP",
594
+ "variant": "ghost",
595
+ "label": "Back"
499
596
  },
500
597
  {
501
598
  "type": "icon",
502
599
  "name": "credit-card"
503
600
  },
504
601
  {
602
+ "content": "@entity.memberName",
505
603
  "type": "typography",
506
- "variant": "h3",
507
- "content": "@entity.memberName"
604
+ "variant": "h3"
508
605
  },
509
606
  {
510
- "variant": "primary",
511
607
  "type": "badge",
512
- "label": "@entity.tier"
608
+ "label": "@entity.tier",
609
+ "variant": "primary"
513
610
  },
514
611
  {
515
612
  "type": "badge",
516
613
  "label": "@entity.status",
517
614
  "variant": "default"
518
615
  }
519
- ]
616
+ ],
617
+ "gap": "sm",
618
+ "type": "stack",
619
+ "direction": "horizontal",
620
+ "align": "center"
520
621
  },
521
622
  {
522
623
  "type": "divider"
523
624
  },
524
625
  {
525
- "type": "stack",
526
- "direction": "vertical",
527
626
  "children": [
528
627
  {
628
+ "type": "stack",
629
+ "direction": "horizontal",
529
630
  "children": [
530
631
  {
531
632
  "color": "muted",
532
- "content": "Access level",
533
633
  "variant": "caption",
634
+ "content": "Access level",
534
635
  "type": "typography"
535
636
  },
536
637
  {
537
- "variant": "body",
638
+ "type": "typography",
538
639
  "content": "@entity.accessLevel",
539
- "type": "typography"
640
+ "variant": "body"
540
641
  }
541
642
  ],
542
- "type": "stack",
543
- "gap": "md",
544
- "direction": "horizontal"
643
+ "gap": "md"
545
644
  },
546
645
  {
547
- "gap": "md",
548
- "direction": "horizontal",
549
- "type": "stack",
550
646
  "children": [
551
647
  {
552
- "variant": "caption",
553
- "color": "muted",
648
+ "type": "typography",
554
649
  "content": "Notes",
555
- "type": "typography"
650
+ "color": "muted",
651
+ "variant": "caption"
556
652
  },
557
653
  {
654
+ "type": "typography",
558
655
  "variant": "body",
559
- "content": "@entity.notes",
560
- "type": "typography"
656
+ "content": "@entity.notes"
561
657
  }
562
- ]
658
+ ],
659
+ "type": "stack",
660
+ "gap": "md",
661
+ "direction": "horizontal"
563
662
  }
564
663
  ],
664
+ "type": "stack",
665
+ "direction": "vertical",
565
666
  "gap": "sm"
566
667
  },
567
668
  {
568
669
  "type": "divider"
569
670
  },
570
671
  {
571
- "type": "simple-grid",
572
672
  "cols": 3.0,
573
673
  "children": [
574
674
  {
575
- "value": "@entity.monthlyDues",
576
675
  "icon": "dollar-sign",
577
676
  "label": "Monthly dues",
578
- "type": "stat-display"
677
+ "type": "stat-display",
678
+ "value": "@entity.monthlyDues"
579
679
  },
580
680
  {
581
- "icon": "calendar",
582
- "type": "stat-display",
583
681
  "label": "Started",
584
- "value": "@entity.startDate"
682
+ "icon": "calendar",
683
+ "value": "@entity.startDate",
684
+ "type": "stat-display"
585
685
  },
586
686
  {
587
- "label": "Renews",
588
687
  "icon": "refresh-cw",
589
688
  "type": "stat-display",
689
+ "label": "Renews",
590
690
  "value": "@entity.renewalDate"
591
691
  }
592
- ]
692
+ ],
693
+ "type": "simple-grid"
593
694
  },
594
695
  {
595
696
  "direction": "horizontal",
697
+ "type": "stack",
698
+ "align": "center",
699
+ "gap": "sm",
596
700
  "children": [
597
701
  {
598
- "variant": "primary",
599
- "label": "Upgrade Tier",
600
702
  "type": "button",
601
- "action": "UPGRADE_TIER",
703
+ "variant": "primary",
602
704
  "actionPayload": {
603
705
  "id": "@entity.id"
604
- }
706
+ },
707
+ "label": "Upgrade Tier",
708
+ "action": "UPGRADE_TIER"
605
709
  },
606
710
  {
607
- "type": "button",
608
711
  "action": "FREEZE_MEMBERSHIP",
712
+ "label": "Freeze",
713
+ "type": "button",
609
714
  "actionPayload": {
610
715
  "id": "@entity.id"
611
716
  },
612
- "label": "Freeze",
613
717
  "variant": "secondary"
614
718
  },
615
719
  {
616
- "label": "Cancel",
617
- "type": "button",
720
+ "action": "CANCEL_MEMBERSHIP",
721
+ "variant": "danger",
618
722
  "actionPayload": {
619
723
  "id": "@entity.id"
620
724
  },
621
- "action": "CANCEL_MEMBERSHIP",
622
- "variant": "danger"
725
+ "type": "button",
726
+ "label": "Cancel"
623
727
  }
624
- ],
625
- "type": "stack",
626
- "gap": "sm",
627
- "align": "center"
728
+ ]
628
729
  }
629
730
  ]
630
731
  }
@@ -655,30 +756,81 @@
655
756
  "render-ui",
656
757
  "main",
657
758
  {
658
- "direction": "vertical",
659
759
  "type": "stack",
760
+ "direction": "vertical",
761
+ "align": "center",
660
762
  "className": "py-12",
763
+ "gap": "md",
661
764
  "children": [
662
765
  {
663
766
  "type": "spinner"
664
767
  },
665
768
  {
666
- "type": "typography",
667
- "variant": "caption",
668
769
  "color": "muted",
669
- "content": "Cancelling membership…"
770
+ "content": "Cancelling membership…",
771
+ "variant": "caption",
772
+ "type": "typography"
670
773
  }
671
- ],
774
+ ]
775
+ }
776
+ ]
777
+ ]
778
+ },
779
+ {
780
+ "from": "browsing",
781
+ "to": "loading",
782
+ "event": "SET_STATUS",
783
+ "effects": [
784
+ [
785
+ "set",
786
+ "@entity.id",
787
+ "@payload.entityId"
788
+ ],
789
+ [
790
+ "set",
791
+ "@entity.status",
792
+ "@payload.newStatus"
793
+ ],
794
+ [
795
+ "persist",
796
+ "update",
797
+ "Membership",
798
+ "@entity",
799
+ {
800
+ "emit": {
801
+ "failure": "MembershipUpdateFailed",
802
+ "success": "MembershipUpdated"
803
+ }
804
+ }
805
+ ],
806
+ [
807
+ "render-ui",
808
+ "main",
809
+ {
672
810
  "align": "center",
673
- "gap": "md"
811
+ "className": "py-12",
812
+ "type": "stack",
813
+ "direction": "vertical",
814
+ "gap": "md",
815
+ "children": [
816
+ {
817
+ "type": "spinner"
818
+ },
819
+ {
820
+ "content": "Updating membership status…",
821
+ "color": "muted",
822
+ "type": "typography",
823
+ "variant": "caption"
824
+ }
825
+ ]
674
826
  }
675
827
  ]
676
828
  ]
677
829
  },
678
830
  {
679
- "from": "viewing_single",
831
+ "from": "browsing",
680
832
  "to": "loading",
681
- "event": "CLOSE_MEMBERSHIP",
833
+ "event": "MembershipUpdated",
682
834
  "effects": [
683
835
  [
684
836
  "fetch",
@@ -689,27 +841,60 @@
689
841
  "failure": "MembershipLoadFailed"
690
842
  }
691
843
  }
844
+ ]
845
+ ]
846
+ },
847
+ {
848
+ "from": "browsing",
849
+ "to": "browsing",
850
+ "event": "MembershipUpdateFailed",
851
+ "effects": [
852
+ [
853
+ "render-ui",
854
+ "main",
855
+ {
856
+ "type": "alert",
857
+ "message": "@payload.error",
858
+ "variant": "error"
859
+ }
860
+ ]
861
+ ]
862
+ },
863
+ {
864
+ "from": "viewing_single",
865
+ "to": "loading",
866
+ "event": "CLOSE_MEMBERSHIP",
867
+ "effects": [
868
+ [
869
+ "fetch",
870
+ "Membership",
871
+ {
872
+ "emit": {
873
+ "failure": "MembershipLoadFailed",
874
+ "success": "MembershipLoaded"
875
+ }
876
+ }
692
877
  ],
693
878
  [
694
879
  "render-ui",
695
880
  "main",
696
881
  {
882
+ "type": "stack",
883
+ "className": "py-12",
884
+ "gap": "md",
697
885
  "children": [
698
886
  {
699
887
  "type": "spinner"
700
888
  },
701
889
  {
890
+ "variant": "caption",
702
891
  "color": "muted",
703
892
  "type": "typography",
704
- "content": "Loading memberships…",
705
- "variant": "caption"
893
+ "content": "Loading memberships…"
706
894
  }
707
895
  ],
708
896
  "direction": "vertical",
709
- "type": "stack",
710
- "align": "center",
711
- "className": "py-12",
712
- "gap": "md"
897
+ "align": "center"
713
898
  }
714
899
  ]
715
900
  ]
@@ -729,8 +914,8 @@
729
914
  "Membership",
730
915
  {
731
916
  "emit": {
732
- "failure": "MembershipLoadFailed",
733
- "success": "MembershipLoaded"
917
+ "success": "MembershipLoaded",
918
+ "failure": "MembershipLoadFailed"
734
919
  }
735
920
  }
736
921
  ],
@@ -738,22 +923,22 @@
738
923
  "render-ui",
739
924
  "main",
740
925
  {
741
- "align": "center",
742
- "gap": "md",
743
926
  "direction": "vertical",
744
- "type": "stack",
927
+ "align": "center",
745
928
  "className": "py-12",
929
+ "type": "stack",
746
930
  "children": [
747
931
  {
748
932
  "type": "spinner"
749
933
  },
750
934
  {
751
- "variant": "caption",
752
935
  "type": "typography",
753
- "content": "Upgrading tier…",
754
- "color": "muted"
936
+ "variant": "caption",
937
+ "color": "muted",
938
+ "content": "Upgrading tier…"
755
939
  }
756
- ]
940
+ ],
941
+ "gap": "md"
757
942
  }
758
943
  ]
759
944
  ]
@@ -773,8 +958,8 @@
773
958
  "Membership",
774
959
  {
775
960
  "emit": {
776
- "failure": "MembershipLoadFailed",
777
- "success": "MembershipLoaded"
961
+ "success": "MembershipLoaded",
962
+ "failure": "MembershipLoadFailed"
778
963
  }
779
964
  }
780
965
  ],
@@ -782,22 +967,22 @@
782
967
  "render-ui",
783
968
  "main",
784
969
  {
785
- "className": "py-12",
786
- "type": "stack",
787
- "direction": "vertical",
788
970
  "gap": "md",
971
+ "align": "center",
972
+ "direction": "vertical",
973
+ "className": "py-12",
789
974
  "children": [
790
975
  {
791
976
  "type": "spinner"
792
977
  },
793
978
  {
794
- "type": "typography",
795
- "variant": "caption",
979
+ "content": "Freezing membership…",
796
980
  "color": "muted",
797
- "content": "Freezing membership…"
981
+ "type": "typography",
982
+ "variant": "caption"
798
983
  }
799
984
  ],
800
- "align": "center"
985
+ "type": "stack"
801
986
  }
802
987
  ]
803
988
  ]
@@ -826,7 +1011,6 @@
826
1011
  "render-ui",
827
1012
  "main",
828
1013
  {
829
- "direction": "vertical",
830
1014
  "type": "stack",
831
1015
  "align": "center",
832
1016
  "children": [
@@ -840,8 +1024,9 @@
840
1024
  "color": "muted"
841
1025
  }
842
1026
  ],
843
- "gap": "md",
844
- "className": "py-12"
1027
+ "className": "py-12",
1028
+ "direction": "vertical",
1029
+ "gap": "md"
845
1030
  }
846
1031
  ]
847
1032
  ]
@@ -856,8 +1041,8 @@
856
1041
  "Membership",
857
1042
  {
858
1043
  "emit": {
859
- "success": "MembershipLoaded",
860
- "failure": "MembershipLoadFailed"
1044
+ "failure": "MembershipLoadFailed",
1045
+ "success": "MembershipLoaded"
861
1046
  }
862
1047
  }
863
1048
  ],
@@ -865,8 +1050,8 @@
865
1050
  "render-ui",
866
1051
  "main",
867
1052
  {
868
- "type": "spinner",
869
- "size": "sm"
1053
+ "size": "sm",
1054
+ "type": "spinner"
870
1055
  }
871
1056
  ]
872
1057
  ]
@@ -874,19 +1059,47 @@
874
1059
  ]
875
1060
  },
876
1061
  "config": {
1062
+ "healthScoreThresholdAlert": {
1063
+ "type": "number",
1064
+ "default": 50.0,
1065
+ "label": "Health score threshold",
1066
+ "description": "Members below this engagement score get flagged for win-back outreach. Declarative; wire via sibling std-notify.",
1067
+ "tier": "customization"
1068
+ },
1069
+ "renewalReminderDaysBefore": {
1070
+ "type": "[number]",
1071
+ "default": [
1072
+ 30.0,
1073
+ 14.0,
1074
+ 7.0
1075
+ ],
1076
+ "label": "Renewal reminder days-before",
1077
+ "description": "Days before renewalDate to send renewal reminders. Declarative; wire via sibling std-reminder-scheduler.",
1078
+ "tier": "customization",
1079
+ "items": {
1080
+ "type": "number"
1081
+ }
1082
+ },
1083
+ "archiveInactiveAfterDays": {
1084
+ "type": "number",
1085
+ "default": 365.0,
1086
+ "label": "Archive inactive after (days)",
1087
+ "description": "Days after cancellation/expiry before membership record is archived. Declarative; wire via sibling std-lifecycle.",
1088
+ "tier": "advanced"
1089
+ },
877
1090
  "itemActions": {
878
1091
  "type": "[ItemAction]",
879
1092
  "default": [
880
1093
  {
881
- "icon": "arrow-right",
882
1094
  "event": "OPEN_MEMBERSHIP",
883
- "variant": "primary",
884
- "label": "Open"
1095
+ "icon": "arrow-right",
1096
+ "label": "Open",
1097
+ "variant": "primary"
885
1098
  },
886
1099
  {
887
- "variant": "danger",
888
1100
  "event": "CANCEL_MEMBERSHIP",
889
- "label": "Cancel"
1101
+ "label": "Cancel",
1102
+ "variant": "danger"
890
1103
  }
891
1104
  ],
892
1105
  "label": "Row actions",
@@ -895,11 +1108,6 @@
895
1108
  "items": {
896
1109
  "type": "object",
897
1110
  "properties": {
898
- "event": {
899
- "name": "event",
900
- "type": "string",
901
- "required": true
902
- },
903
1111
  "icon": {
904
1112
  "name": "icon",
905
1113
  "type": "string",
@@ -910,6 +1118,11 @@
910
1118
  "type": "string",
911
1119
  "required": true
912
1120
  },
1121
+ "event": {
1122
+ "name": "event",
1123
+ "type": "string",
1124
+ "required": true
1125
+ },
913
1126
  "variant": {
914
1127
  "name": "variant",
915
1128
  "type": "string",
@@ -918,33 +1131,47 @@
918
1131
  }
919
1132
  }
920
1133
  },
1134
+ "consentTrackingEnabled": {
1135
+ "type": "boolean",
1136
+ "default": true,
1137
+ "label": "Track consent",
1138
+ "description": "Whether to record marketing/data-processing consent on the member profile. Declarative.",
1139
+ "tier": "customization"
1140
+ },
1141
+ "title": {
1142
+ "type": "string",
1143
+ "default": "Memberships",
1144
+ "label": "Section title",
1145
+ "description": "Heading shown above the membership list",
1146
+ "tier": "customization"
1147
+ },
921
1148
  "fields": {
922
1149
  "type": "[FieldSpec]",
923
1150
  "default": [
924
1151
  {
1152
+ "name": "memberName",
925
1153
  "variant": "caption",
926
- "label": "Member",
927
- "name": "memberName"
1154
+ "label": "Member"
928
1155
  },
929
1156
  {
1157
+ "label": "Tier",
930
1158
  "name": "tier",
931
- "variant": "badge",
932
- "label": "Tier"
1159
+ "variant": "badge"
933
1160
  },
934
1161
  {
935
- "name": "monthlyDues",
1162
+ "variant": "caption",
936
1163
  "label": "Monthly Dues",
937
- "variant": "caption"
1164
+ "name": "monthlyDues"
938
1165
  },
939
1166
  {
940
- "name": "renewalDate",
941
1167
  "label": "Renews",
942
- "variant": "caption"
1168
+ "variant": "caption",
1169
+ "name": "renewalDate"
943
1170
  },
944
1171
  {
1172
+ "name": "status",
945
1173
  "label": "Status",
946
- "variant": "badge",
947
- "name": "status"
1174
+ "variant": "badge"
948
1175
  }
949
1176
  ],
950
1177
  "label": "Columns to show",
@@ -958,45 +1185,38 @@
958
1185
  "type": "string",
959
1186
  "required": false
960
1187
  },
961
- "key": {
962
- "name": "key",
1188
+ "format": {
1189
+ "name": "format",
963
1190
  "type": "string",
964
1191
  "required": false
965
1192
  },
966
- "name": {
967
- "name": "name",
1193
+ "label": {
1194
+ "name": "label",
968
1195
  "type": "string",
969
- "required": true
1196
+ "required": false
970
1197
  },
971
1198
  "header": {
972
1199
  "name": "header",
973
1200
  "type": "string",
974
1201
  "required": false
975
1202
  },
976
- "label": {
977
- "name": "label",
1203
+ "name": {
1204
+ "name": "name",
978
1205
  "type": "string",
979
- "required": false
1206
+ "required": true
980
1207
  },
981
- "format": {
982
- "name": "format",
1208
+ "variant": {
1209
+ "name": "variant",
983
1210
  "type": "string",
984
1211
  "required": false
985
1212
  },
986
- "variant": {
987
- "name": "variant",
1213
+ "key": {
1214
+ "name": "key",
988
1215
  "type": "string",
989
1216
  "required": false
990
1217
  }
991
1218
  }
992
1219
  }
993
- },
994
- "title": {
995
- "type": "string",
996
- "default": "Memberships",
997
- "label": "Section title",
998
- "description": "Heading shown above the membership list",
999
- "tier": "customization"
1000
1220
  }
1001
1221
  },
1002
1222
  "scope": "collection"
@@ -1015,4 +1235,4 @@
1015
1235
  ]
1016
1236
  }
1017
1237
  ]
1018
- }
1238
+ }