@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-drip-sequence",
3
- "version": "1.1.0",
4
- "description": "std-drip-sequence — ordered email drip campaign primitive. Lists sequences in `browsing`; opens detail in `viewing_single` with Activate / Pause / Archive actions. Agents tune the list shape via `config.fields` + `config.itemActions`.",
3
+ "version": "1.2.0",
4
+ "description": "std-drip-sequence — ordered email drip campaign primitive. Lists sequences; detail offers Activate / Pause / Archive. Listens for SET_STATUS so std-lifecycle can drive transitions. Exposes Communication knobs (sendsPerHour, gdprConsentRequired, unsubscribe link, …).",
5
5
  "orbitals": [
6
6
  {
7
7
  "name": "DripSequenceOrbital",
@@ -152,6 +152,58 @@
152
152
  "type": "string"
153
153
  }
154
154
  ]
155
+ },
156
+ {
157
+ "event": "DripSequenceUpdated",
158
+ "payloadSchema": [
159
+ {
160
+ "name": "row.id",
161
+ "type": "string",
162
+ "required": true
163
+ },
164
+ {
165
+ "name": "row.name",
166
+ "type": "string",
167
+ "required": true
168
+ },
169
+ {
170
+ "name": "row.description",
171
+ "type": "string"
172
+ },
173
+ {
174
+ "name": "row.triggerEvent",
175
+ "type": "string"
176
+ },
177
+ {
178
+ "name": "row.stepsJson",
179
+ "type": "string"
180
+ },
181
+ {
182
+ "name": "row.status",
183
+ "type": "string"
184
+ },
185
+ {
186
+ "name": "row.totalEnrolled",
187
+ "type": "number"
188
+ },
189
+ {
190
+ "name": "row.totalCompleted",
191
+ "type": "number"
192
+ }
193
+ ]
194
+ },
195
+ {
196
+ "event": "DripSequenceUpdateFailed",
197
+ "payloadSchema": [
198
+ {
199
+ "name": "error",
200
+ "type": "string"
201
+ },
202
+ {
203
+ "name": "code",
204
+ "type": "string"
205
+ }
206
+ ]
155
207
  }
156
208
  ],
157
209
  "stateMachine": {
@@ -225,6 +277,46 @@
225
277
  }
226
278
  ]
227
279
  },
280
+ {
281
+ "key": "SET_STATUS",
282
+ "name": "Set Status",
283
+ "payloadSchema": [
284
+ {
285
+ "name": "entityId",
286
+ "type": "string",
287
+ "required": true
288
+ },
289
+ {
290
+ "name": "newStatus",
291
+ "type": "string",
292
+ "required": true
293
+ }
294
+ ]
295
+ },
296
+ {
297
+ "key": "DripSequenceUpdated",
298
+ "name": "DripSequence updated",
299
+ "payloadSchema": [
300
+ {
301
+ "name": "row",
302
+ "type": "DripSequence"
303
+ }
304
+ ]
305
+ },
306
+ {
307
+ "key": "DripSequenceUpdateFailed",
308
+ "name": "DripSequence update failed",
309
+ "payloadSchema": [
310
+ {
311
+ "name": "error",
312
+ "type": "string"
313
+ },
314
+ {
315
+ "name": "code",
316
+ "type": "string"
317
+ }
318
+ ]
319
+ },
228
320
  {
229
321
  "key": "CLOSE_VIEW",
230
322
  "name": "Close View"
@@ -261,22 +353,22 @@
261
353
  "render-ui",
262
354
  "main",
263
355
  {
264
- "align": "center",
265
- "className": "py-12",
266
- "gap": "md",
267
- "type": "stack",
268
- "direction": "vertical",
269
356
  "children": [
270
357
  {
271
358
  "type": "spinner"
272
359
  },
273
360
  {
274
- "type": "typography",
275
361
  "variant": "caption",
276
362
  "color": "muted",
277
- "content": "Loading drip sequences…"
363
+ "content": "Loading drip sequences…",
364
+ "type": "typography"
278
365
  }
279
- ]
366
+ ],
367
+ "direction": "vertical",
368
+ "align": "center",
369
+ "className": "py-12",
370
+ "type": "stack",
371
+ "gap": "md"
280
372
  }
281
373
  ]
282
374
  ]
@@ -292,67 +384,67 @@
292
384
  {
293
385
  "children": [
294
386
  {
387
+ "gap": "sm",
388
+ "align": "center",
389
+ "direction": "horizontal",
295
390
  "children": [
296
391
  {
297
- "type": "icon",
298
- "name": "mail"
392
+ "name": "mail",
393
+ "type": "icon"
299
394
  },
300
395
  {
301
396
  "type": "typography",
302
- "content": "@config.title",
303
- "variant": "h3"
397
+ "variant": "h3",
398
+ "content": "@config.title"
304
399
  }
305
400
  ],
306
- "direction": "horizontal",
307
- "type": "stack",
308
- "gap": "sm",
309
- "align": "center"
401
+ "type": "stack"
310
402
  },
311
403
  {
404
+ "type": "simple-grid",
312
405
  "cols": 4.0,
313
406
  "children": [
314
407
  {
315
- "label": "Total sequences",
316
- "type": "stat-display",
408
+ "icon": "mail",
317
409
  "value": "@payload.data.length",
318
- "icon": "mail"
410
+ "type": "stat-display",
411
+ "label": "Total sequences"
319
412
  },
320
413
  {
321
414
  "value": "14",
322
- "type": "stat-display",
323
415
  "icon": "play-circle",
324
- "label": "Active"
416
+ "label": "Active",
417
+ "type": "stat-display"
325
418
  },
326
419
  {
327
- "value": "8,420",
328
420
  "type": "stat-display",
329
421
  "label": "Enrolled",
422
+ "value": "8,420",
330
423
  "icon": "users"
331
424
  },
332
425
  {
333
426
  "value": "67%",
427
+ "icon": "check-circle",
334
428
  "type": "stat-display",
335
- "label": "Completion rate",
336
- "icon": "check-circle"
429
+ "label": "Completion rate"
337
430
  }
338
- ],
339
- "type": "simple-grid"
431
+ ]
340
432
  },
341
433
  {
342
434
  "type": "divider"
343
435
  },
344
436
  {
345
- "fields": "@config.fields",
437
+ "gap": "sm",
438
+ "entity": "@payload.data",
439
+ "cols": 1.0,
346
440
  "type": "data-grid",
347
441
  "itemActions": "@config.itemActions",
348
- "entity": "@payload.data",
349
- "gap": "sm",
350
- "cols": 1.0
442
+ "fields": "@config.fields"
351
443
  }
352
444
  ],
445
+ "direction": "vertical",
353
446
  "gap": "md",
354
- "type": "stack",
355
- "direction": "vertical"
447
+ "type": "stack"
356
448
  }
357
449
  ]
358
450
  ]
@@ -366,9 +458,9 @@
366
458
  "render-ui",
367
459
  "main",
368
460
  {
369
- "message": "@payload.error",
370
461
  "type": "alert",
371
- "variant": "error"
462
+ "variant": "error",
463
+ "message": "@payload.error"
372
464
  }
373
465
  ]
374
466
  ]
@@ -423,21 +515,22 @@
423
515
  "main",
424
516
  {
425
517
  "gap": "md",
426
- "type": "stack",
427
518
  "direction": "vertical",
519
+ "type": "stack",
428
520
  "children": [
429
521
  {
430
- "direction": "horizontal",
522
+ "align": "center",
523
+ "gap": "sm",
431
524
  "children": [
432
525
  {
433
- "label": "Back",
434
526
  "variant": "ghost",
435
- "action": "CLOSE_VIEW",
436
- "type": "button"
527
+ "type": "button",
528
+ "label": "Back",
529
+ "action": "CLOSE_VIEW"
437
530
  },
438
531
  {
439
- "type": "icon",
440
- "name": "mail"
532
+ "name": "mail",
533
+ "type": "icon"
441
534
  },
442
535
  {
443
536
  "variant": "h3",
@@ -445,14 +538,13 @@
445
538
  "content": "@entity.name"
446
539
  },
447
540
  {
541
+ "type": "badge",
448
542
  "variant": "primary",
449
- "label": "@entity.status",
450
- "type": "badge"
543
+ "label": "@entity.status"
451
544
  }
452
545
  ],
453
546
  "type": "stack",
454
- "align": "center",
455
- "gap": "sm"
547
+ "direction": "horizontal"
456
548
  },
457
549
  {
458
550
  "type": "divider"
@@ -460,40 +552,40 @@
460
552
  {
461
553
  "children": [
462
554
  {
463
- "type": "stack",
464
555
  "children": [
465
556
  {
466
- "type": "typography",
467
- "content": "Description",
468
557
  "color": "muted",
469
- "variant": "caption"
558
+ "variant": "caption",
559
+ "content": "Description",
560
+ "type": "typography"
470
561
  },
471
562
  {
472
- "variant": "body",
473
563
  "type": "typography",
564
+ "variant": "body",
474
565
  "content": "@entity.description"
475
566
  }
476
567
  ],
477
- "gap": "md",
478
- "direction": "horizontal"
568
+ "type": "stack",
569
+ "direction": "horizontal",
570
+ "gap": "md"
479
571
  },
480
572
  {
573
+ "direction": "horizontal",
481
574
  "gap": "md",
482
575
  "type": "stack",
483
576
  "children": [
484
577
  {
485
- "content": "Trigger",
486
- "type": "typography",
487
578
  "variant": "caption",
488
- "color": "muted"
579
+ "color": "muted",
580
+ "content": "Trigger",
581
+ "type": "typography"
489
582
  },
490
583
  {
491
- "type": "typography",
492
584
  "variant": "body",
585
+ "type": "typography",
493
586
  "content": "@entity.triggerEvent"
494
587
  }
495
- ],
496
- "direction": "horizontal"
588
+ ]
497
589
  }
498
590
  ],
499
591
  "gap": "sm",
@@ -504,48 +596,48 @@
504
596
  "type": "divider"
505
597
  },
506
598
  {
507
- "type": "simple-grid",
508
599
  "cols": 2.0,
600
+ "type": "simple-grid",
509
601
  "children": [
510
602
  {
511
- "type": "stat-display",
512
603
  "label": "Enrolled",
513
- "value": "@entity.totalEnrolled",
514
- "icon": "users"
604
+ "icon": "users",
605
+ "type": "stat-display",
606
+ "value": "@entity.totalEnrolled"
515
607
  },
516
608
  {
517
- "type": "stat-display",
518
609
  "label": "Completed",
519
- "value": "@entity.totalCompleted",
520
- "icon": "check-circle"
610
+ "icon": "check-circle",
611
+ "type": "stat-display",
612
+ "value": "@entity.totalCompleted"
521
613
  }
522
614
  ]
523
615
  },
524
616
  {
525
- "align": "center",
526
617
  "type": "stack",
527
- "direction": "horizontal",
528
618
  "gap": "sm",
619
+ "align": "center",
529
620
  "children": [
530
621
  {
622
+ "type": "button",
531
623
  "actionPayload": {
532
624
  "id": "@entity.id"
533
625
  },
534
- "type": "button",
626
+ "label": "Activate",
535
627
  "variant": "primary",
536
- "action": "ACTIVATE",
537
- "label": "Activate"
628
+ "action": "ACTIVATE"
538
629
  },
539
630
  {
540
- "label": "Pause",
541
- "variant": "danger",
542
631
  "action": "PAUSE",
632
+ "type": "button",
633
+ "variant": "danger",
634
+ "label": "Pause",
543
635
  "actionPayload": {
544
636
  "id": "@entity.id"
545
- },
546
- "type": "button"
637
+ }
547
638
  }
548
- ]
639
+ ],
640
+ "direction": "horizontal"
549
641
  }
550
642
  ]
551
643
  }
@@ -567,8 +659,8 @@
567
659
  "DripSequence",
568
660
  {
569
661
  "emit": {
570
- "failure": "DripSequenceLoadFailed",
571
- "success": "DripSequenceLoaded"
662
+ "success": "DripSequenceLoaded",
663
+ "failure": "DripSequenceLoadFailed"
572
664
  }
573
665
  }
574
666
  ],
@@ -576,26 +668,110 @@
576
668
  "render-ui",
577
669
  "main",
578
670
  {
579
- "align": "center",
580
- "gap": "md",
581
- "className": "py-12",
582
671
  "type": "stack",
672
+ "gap": "md",
583
673
  "direction": "vertical",
674
+ "align": "center",
675
+ "className": "py-12",
584
676
  "children": [
585
677
  {
586
678
  "type": "spinner"
587
679
  },
588
680
  {
589
681
  "color": "muted",
590
- "variant": "caption",
682
+ "content": "Pausing sequence…",
591
683
  "type": "typography",
592
- "content": "Pausing sequence…"
684
+ "variant": "caption"
593
685
  }
594
686
  ]
595
687
  }
596
688
  ]
597
689
  ]
598
690
  },
691
+ {
692
+ "from": "browsing",
693
+ "to": "loading",
694
+ "event": "SET_STATUS",
695
+ "effects": [
696
+ [
697
+ "set",
698
+ "@entity.id",
699
+ "@payload.entityId"
700
+ ],
701
+ [
702
+ "set",
703
+ "@entity.status",
704
+ "@payload.newStatus"
705
+ ],
706
+ [
707
+ "persist",
708
+ "update",
709
+ "DripSequence",
710
+ "@entity",
711
+ {
712
+ "emit": {
713
+ "success": "DripSequenceUpdated",
714
+ "failure": "DripSequenceUpdateFailed"
715
+ }
716
+ }
717
+ ],
718
+ [
719
+ "render-ui",
720
+ "main",
721
+ {
722
+ "align": "center",
723
+ "gap": "md",
724
+ "className": "py-12",
725
+ "children": [
726
+ {
727
+ "type": "spinner"
728
+ },
729
+ {
730
+ "variant": "caption",
731
+ "color": "muted",
732
+ "content": "Updating sequence status…",
733
+ "type": "typography"
734
+ }
735
+ ],
736
+ "type": "stack",
737
+ "direction": "vertical"
738
+ }
739
+ ]
740
+ ]
741
+ },
742
+ {
743
+ "from": "browsing",
744
+ "to": "loading",
745
+ "event": "DripSequenceUpdated",
746
+ "effects": [
747
+ [
748
+ "fetch",
749
+ "DripSequence",
750
+ {
751
+ "emit": {
752
+ "failure": "DripSequenceLoadFailed",
753
+ "success": "DripSequenceLoaded"
754
+ }
755
+ }
756
+ ]
757
+ ]
758
+ },
759
+ {
760
+ "from": "browsing",
761
+ "to": "browsing",
762
+ "event": "DripSequenceUpdateFailed",
763
+ "effects": [
764
+ [
765
+ "render-ui",
766
+ "main",
767
+ {
768
+ "variant": "error",
769
+ "message": "@payload.error",
770
+ "type": "alert"
771
+ }
772
+ ]
773
+ ]
774
+ },
599
775
  {
600
776
  "from": "viewing_single",
601
777
  "to": "loading",
@@ -616,21 +792,21 @@
616
792
  "main",
617
793
  {
618
794
  "gap": "md",
619
- "direction": "vertical",
795
+ "align": "center",
620
796
  "type": "stack",
797
+ "className": "py-12",
621
798
  "children": [
622
799
  {
623
800
  "type": "spinner"
624
801
  },
625
802
  {
626
- "variant": "caption",
627
- "type": "typography",
803
+ "color": "muted",
628
804
  "content": "Loading drip sequences…",
629
- "color": "muted"
805
+ "type": "typography",
806
+ "variant": "caption"
630
807
  }
631
808
  ],
632
- "className": "py-12",
633
- "align": "center"
809
+ "direction": "vertical"
634
810
  }
635
811
  ]
636
812
  ]
@@ -650,8 +826,8 @@
650
826
  "DripSequence",
651
827
  {
652
828
  "emit": {
653
- "success": "DripSequenceLoaded",
654
- "failure": "DripSequenceLoadFailed"
829
+ "failure": "DripSequenceLoadFailed",
830
+ "success": "DripSequenceLoaded"
655
831
  }
656
832
  }
657
833
  ],
@@ -660,8 +836,6 @@
660
836
  "main",
661
837
  {
662
838
  "align": "center",
663
- "gap": "md",
664
- "className": "py-12",
665
839
  "direction": "vertical",
666
840
  "type": "stack",
667
841
  "children": [
@@ -669,12 +843,14 @@
669
843
  "type": "spinner"
670
844
  },
671
845
  {
672
- "type": "typography",
673
- "content": "Activating sequence…",
674
846
  "color": "muted",
675
- "variant": "caption"
847
+ "type": "typography",
848
+ "variant": "caption",
849
+ "content": "Activating sequence…"
676
850
  }
677
- ]
851
+ ],
852
+ "className": "py-12",
853
+ "gap": "md"
678
854
  }
679
855
  ]
680
856
  ]
@@ -703,22 +879,22 @@
703
879
  "render-ui",
704
880
  "main",
705
881
  {
706
- "type": "stack",
707
- "align": "center",
708
- "gap": "md",
709
882
  "children": [
710
883
  {
711
884
  "type": "spinner"
712
885
  },
713
886
  {
887
+ "type": "typography",
714
888
  "variant": "caption",
715
- "color": "muted",
716
889
  "content": "Pausing sequence…",
717
- "type": "typography"
890
+ "color": "muted"
718
891
  }
719
892
  ],
720
893
  "className": "py-12",
721
- "direction": "vertical"
894
+ "direction": "vertical",
895
+ "type": "stack",
896
+ "gap": "md",
897
+ "align": "center"
722
898
  }
723
899
  ]
724
900
  ]
@@ -742,8 +918,8 @@
742
918
  "render-ui",
743
919
  "main",
744
920
  {
745
- "type": "spinner",
746
- "size": "sm"
921
+ "size": "sm",
922
+ "type": "spinner"
747
923
  }
748
924
  ]
749
925
  ]
@@ -751,84 +927,61 @@
751
927
  ]
752
928
  },
753
929
  "config": {
754
- "itemActions": {
755
- "type": "[ItemAction]",
756
- "default": [
757
- {
758
- "icon": "arrow-right",
759
- "event": "OPEN_SEQUENCE",
760
- "variant": "primary",
761
- "label": "Open"
762
- },
763
- {
764
- "label": "Pause",
765
- "event": "PAUSE",
766
- "variant": "danger"
767
- }
768
- ],
769
- "label": "Row actions",
770
- "description": "Buttons users can click on each sequence row",
771
- "tier": "customization",
772
- "items": {
773
- "type": "object",
774
- "properties": {
775
- "event": {
776
- "name": "event",
777
- "type": "string",
778
- "required": true
779
- },
780
- "label": {
781
- "name": "label",
782
- "type": "string",
783
- "required": true
784
- },
785
- "variant": {
786
- "name": "variant",
787
- "type": "string",
788
- "required": false
789
- },
790
- "icon": {
791
- "name": "icon",
792
- "type": "string",
793
- "required": false
794
- }
795
- }
796
- }
930
+ "includeUnsubscribeLink": {
931
+ "type": "boolean",
932
+ "default": true,
933
+ "label": "Include unsubscribe link",
934
+ "description": "Append a CAN-SPAM/GDPR-compliant unsubscribe link to every step.",
935
+ "tier": "essential"
797
936
  },
798
- "title": {
799
- "type": "string",
800
- "default": "Drip Sequences",
801
- "label": "Section title",
802
- "description": "Heading shown above the drip campaign list",
937
+ "suppressionListEnabled": {
938
+ "type": "boolean",
939
+ "default": true,
940
+ "label": "Honor suppression list",
941
+ "description": "Skip enrolled contacts on the global suppression / bounce list.",
803
942
  "tier": "customization"
804
943
  },
944
+ "trackClicks": {
945
+ "type": "boolean",
946
+ "default": true,
947
+ "label": "Track clicks",
948
+ "description": "Wrap outbound links for click attribution per step.",
949
+ "tier": "advanced"
950
+ },
951
+ "physicalAddressFooter": {
952
+ "type": "string",
953
+ "default": "",
954
+ "label": "Physical address footer",
955
+ "description": "CAN-SPAM-required postal address appended to every step.",
956
+ "tier": "essential"
957
+ },
805
958
  "fields": {
806
959
  "type": "[FieldSpec]",
807
960
  "default": [
808
961
  {
809
- "name": "name",
810
962
  "variant": "caption",
811
- "label": "Name"
963
+ "label": "Name",
964
+ "name": "name"
812
965
  },
813
966
  {
814
- "variant": "caption",
815
967
  "label": "Description",
816
- "name": "description"
968
+ "name": "description",
969
+ "variant": "caption"
817
970
  },
818
971
  {
819
- "name": "triggerEvent",
820
972
  "label": "Trigger",
973
+ "name": "triggerEvent",
821
974
  "variant": "caption"
822
975
  },
823
976
  {
977
+ "label": "Status",
824
978
  "variant": "badge",
825
- "name": "status",
826
- "label": "Status"
979
+ "name": "status"
827
980
  },
828
981
  {
982
+ "variant": "caption",
829
983
  "name": "totalEnrolled",
830
- "label": "Enrolled",
831
- "variant": "caption"
984
+ "label": "Enrolled"
832
985
  },
833
986
  {
834
987
  "name": "totalCompleted",
@@ -842,6 +995,21 @@
842
995
  "items": {
843
996
  "type": "object",
844
997
  "properties": {
998
+ "icon": {
999
+ "name": "icon",
1000
+ "type": "string",
1001
+ "required": false
1002
+ },
1003
+ "header": {
1004
+ "name": "header",
1005
+ "type": "string",
1006
+ "required": false
1007
+ },
1008
+ "name": {
1009
+ "name": "name",
1010
+ "type": "string",
1011
+ "required": true
1012
+ },
845
1013
  "format": {
846
1014
  "name": "format",
847
1015
  "type": "string",
@@ -852,23 +1020,87 @@
852
1020
  "type": "string",
853
1021
  "required": false
854
1022
  },
1023
+ "variant": {
1024
+ "name": "variant",
1025
+ "type": "string",
1026
+ "required": false
1027
+ },
855
1028
  "key": {
856
1029
  "name": "key",
857
1030
  "type": "string",
858
1031
  "required": false
859
- },
1032
+ }
1033
+ }
1034
+ }
1035
+ },
1036
+ "trackOpens": {
1037
+ "type": "boolean",
1038
+ "default": true,
1039
+ "label": "Track opens",
1040
+ "description": "Embed a tracking pixel on each step message.",
1041
+ "tier": "advanced"
1042
+ },
1043
+ "frequencyCapPerWeek": {
1044
+ "type": "number",
1045
+ "default": 5.0,
1046
+ "label": "Frequency cap (per week)",
1047
+ "description": "Max drip + broadcast messages a recipient sees per 7-day window.",
1048
+ "tier": "customization"
1049
+ },
1050
+ "title": {
1051
+ "type": "string",
1052
+ "default": "Drip Sequences",
1053
+ "label": "Section title",
1054
+ "description": "Heading shown above the drip campaign list",
1055
+ "tier": "customization"
1056
+ },
1057
+ "sendsPerHour": {
1058
+ "type": "number",
1059
+ "default": 500.0,
1060
+ "label": "Sends per hour",
1061
+ "description": "Cap on outbound drip messages per hour for throttling. v1.2 declarative.",
1062
+ "tier": "customization"
1063
+ },
1064
+ "gdprConsentRequired": {
1065
+ "type": "boolean",
1066
+ "default": true,
1067
+ "label": "GDPR consent required",
1068
+ "description": "Require explicit marketing consent before enrolling EU/UK recipients.",
1069
+ "tier": "customization"
1070
+ },
1071
+ "itemActions": {
1072
+ "type": "[ItemAction]",
1073
+ "default": [
1074
+ {
1075
+ "icon": "arrow-right",
1076
+ "event": "OPEN_SEQUENCE",
1077
+ "label": "Open",
1078
+ "variant": "primary"
1079
+ },
1080
+ {
1081
+ "event": "PAUSE",
1082
+ "variant": "danger",
1083
+ "label": "Pause"
1084
+ }
1085
+ ],
1086
+ "label": "Row actions",
1087
+ "description": "Buttons users can click on each sequence row",
1088
+ "tier": "customization",
1089
+ "items": {
1090
+ "type": "object",
1091
+ "properties": {
860
1092
  "icon": {
861
1093
  "name": "icon",
862
1094
  "type": "string",
863
1095
  "required": false
864
1096
  },
865
- "header": {
866
- "name": "header",
1097
+ "label": {
1098
+ "name": "label",
867
1099
  "type": "string",
868
- "required": false
1100
+ "required": true
869
1101
  },
870
- "name": {
871
- "name": "name",
1102
+ "event": {
1103
+ "name": "event",
872
1104
  "type": "string",
873
1105
  "required": true
874
1106
  },
@@ -879,6 +1111,13 @@
879
1111
  }
880
1112
  }
881
1113
  }
1114
+ },
1115
+ "respectQuietHours": {
1116
+ "type": "boolean",
1117
+ "default": true,
1118
+ "label": "Respect quiet hours",
1119
+ "description": "Skip step delivery during recipient-local quiet hours.",
1120
+ "tier": "customization"
882
1121
  }
883
1122
  },
884
1123
  "scope": "collection"
@@ -897,4 +1136,4 @@
897
1136
  ]
898
1137
  }
899
1138
  ]
900
- }
1139
+ }