@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-ap-bill",
3
- "version": "1.1.0",
4
- "description": "std-ap-bill — accounts-payable bill (vendor bills we owe). Lists bills in `browsing`; opens bill detail in `viewing_single` with Pay / Void actions. Counterpart to std-invoice on the payables side. Agents tune the list shape via `config.fields` + `config.itemActions`.",
3
+ "version": "1.2.0",
4
+ "description": "std-ap-bill — accounts-payable bill (vendor bills we owe). Lists bills with Pay / Void actions. Listens for SET_STATUS so sibling std-lifecycle can drive automated transitions. Exposes Financial-pattern knobs (currency, taxStrategy, gracePeriodDays, lateFeePolicy, …).",
5
5
  "orbitals": [
6
6
  {
7
7
  "name": "ApBillOrbital",
@@ -163,6 +163,63 @@
163
163
  "type": "string"
164
164
  }
165
165
  ]
166
+ },
167
+ {
168
+ "event": "ApBillUpdated",
169
+ "payloadSchema": [
170
+ {
171
+ "name": "row.id",
172
+ "type": "string",
173
+ "required": true
174
+ },
175
+ {
176
+ "name": "row.vendor",
177
+ "type": "string",
178
+ "required": true
179
+ },
180
+ {
181
+ "name": "row.billNumber",
182
+ "type": "string"
183
+ },
184
+ {
185
+ "name": "row.billDate",
186
+ "type": "string",
187
+ "required": true
188
+ },
189
+ {
190
+ "name": "row.dueDate",
191
+ "type": "string"
192
+ },
193
+ {
194
+ "name": "row.amountTotal",
195
+ "type": "number"
196
+ },
197
+ {
198
+ "name": "row.amountPaid",
199
+ "type": "number"
200
+ },
201
+ {
202
+ "name": "row.status",
203
+ "type": "string"
204
+ },
205
+ {
206
+ "name": "row.notes",
207
+ "type": "string"
208
+ }
209
+ ]
210
+ },
211
+ {
212
+ "event": "ApBillUpdateFailed",
213
+ "payloadSchema": [
214
+ {
215
+ "name": "error",
216
+ "type": "string"
217
+ },
218
+ {
219
+ "name": "code",
220
+ "type": "string"
221
+ }
222
+ ]
166
223
  }
167
224
  ],
168
225
  "stateMachine": {
@@ -236,6 +293,46 @@
236
293
  }
237
294
  ]
238
295
  },
296
+ {
297
+ "key": "SET_STATUS",
298
+ "name": "Set Status",
299
+ "payloadSchema": [
300
+ {
301
+ "name": "entityId",
302
+ "type": "string",
303
+ "required": true
304
+ },
305
+ {
306
+ "name": "newStatus",
307
+ "type": "string",
308
+ "required": true
309
+ }
310
+ ]
311
+ },
312
+ {
313
+ "key": "ApBillUpdated",
314
+ "name": "ApBill updated",
315
+ "payloadSchema": [
316
+ {
317
+ "name": "row",
318
+ "type": "ApBill"
319
+ }
320
+ ]
321
+ },
322
+ {
323
+ "key": "ApBillUpdateFailed",
324
+ "name": "ApBill update failed",
325
+ "payloadSchema": [
326
+ {
327
+ "name": "error",
328
+ "type": "string"
329
+ },
330
+ {
331
+ "name": "code",
332
+ "type": "string"
333
+ }
334
+ ]
335
+ },
239
336
  {
240
337
  "key": "CLOSE_VIEW",
241
338
  "name": "Close View"
@@ -263,8 +360,8 @@
263
360
  "ApBill",
264
361
  {
265
362
  "emit": {
266
- "success": "ApBillLoaded",
267
- "failure": "ApBillLoadFailed"
363
+ "failure": "ApBillLoadFailed",
364
+ "success": "ApBillLoaded"
268
365
  }
269
366
  }
270
367
  ],
@@ -272,20 +369,20 @@
272
369
  "render-ui",
273
370
  "main",
274
371
  {
275
- "gap": "md",
276
- "direction": "vertical",
277
- "type": "stack",
278
372
  "align": "center",
373
+ "type": "stack",
374
+ "gap": "md",
279
375
  "className": "py-12",
376
+ "direction": "vertical",
280
377
  "children": [
281
378
  {
282
379
  "type": "spinner"
283
380
  },
284
381
  {
285
- "color": "muted",
286
- "content": "Loading bills…",
287
382
  "type": "typography",
288
- "variant": "caption"
383
+ "color": "muted",
384
+ "variant": "caption",
385
+ "content": "Loading bills…"
289
386
  }
290
387
  ]
291
388
  }
@@ -301,52 +398,54 @@
301
398
  "render-ui",
302
399
  "main",
303
400
  {
401
+ "direction": "vertical",
304
402
  "type": "stack",
403
+ "gap": "md",
305
404
  "children": [
306
405
  {
307
- "direction": "horizontal",
308
- "type": "stack",
309
- "gap": "sm",
310
- "align": "center",
311
406
  "children": [
312
407
  {
313
408
  "type": "icon",
314
409
  "name": "file-text"
315
410
  },
316
411
  {
317
- "variant": "h3",
318
412
  "type": "typography",
319
- "content": "@config.title"
413
+ "content": "@config.title",
414
+ "variant": "h3"
320
415
  }
321
- ]
416
+ ],
417
+ "type": "stack",
418
+ "direction": "horizontal",
419
+ "gap": "sm",
420
+ "align": "center"
322
421
  },
323
422
  {
324
423
  "type": "simple-grid",
325
424
  "cols": 4.0,
326
425
  "children": [
327
426
  {
427
+ "label": "Open bills",
328
428
  "icon": "file-text",
329
429
  "type": "stat-display",
330
- "label": "Open bills",
331
430
  "value": "@payload.data.length"
332
431
  },
333
432
  {
433
+ "label": "Total payable",
334
434
  "value": "$48,200",
335
435
  "type": "stat-display",
336
- "label": "Total payable",
337
436
  "icon": "dollar-sign"
338
437
  },
339
438
  {
340
- "type": "stat-display",
341
- "value": "6",
342
439
  "label": "Overdue",
343
- "icon": "alert-triangle"
440
+ "icon": "alert-triangle",
441
+ "type": "stat-display",
442
+ "value": "6"
344
443
  },
345
444
  {
346
- "type": "stat-display",
347
- "icon": "check-circle",
348
445
  "label": "Paid this month",
349
- "value": "32"
446
+ "value": "32",
447
+ "type": "stat-display",
448
+ "icon": "check-circle"
350
449
  }
351
450
  ]
352
451
  },
@@ -354,16 +453,14 @@
354
453
  "type": "divider"
355
454
  },
356
455
  {
357
- "entity": "@payload.data",
358
- "type": "data-grid",
359
456
  "fields": "@config.fields",
457
+ "entity": "@payload.data",
360
458
  "cols": 1.0,
361
- "gap": "sm",
362
- "itemActions": "@config.itemActions"
459
+ "itemActions": "@config.itemActions",
460
+ "type": "data-grid",
461
+ "gap": "sm"
363
462
  }
364
- ],
365
- "gap": "md",
366
- "direction": "vertical"
463
+ ]
367
464
  }
368
465
  ]
369
466
  ]
@@ -378,8 +475,8 @@
378
475
  "main",
379
476
  {
380
477
  "type": "alert",
381
- "variant": "error",
382
- "message": "@payload.error"
478
+ "message": "@payload.error",
479
+ "variant": "error"
383
480
  }
384
481
  ]
385
482
  ]
@@ -438,144 +535,144 @@
438
535
  "render-ui",
439
536
  "main",
440
537
  {
538
+ "type": "stack",
539
+ "direction": "vertical",
441
540
  "gap": "md",
442
541
  "children": [
443
542
  {
543
+ "type": "stack",
544
+ "direction": "horizontal",
444
545
  "align": "center",
445
546
  "children": [
446
547
  {
447
- "variant": "ghost",
448
- "label": "Back",
449
548
  "action": "CLOSE_VIEW",
450
- "type": "button"
549
+ "label": "Back",
550
+ "type": "button",
551
+ "variant": "ghost"
451
552
  },
452
553
  {
453
- "type": "icon",
454
- "name": "file-text"
554
+ "name": "file-text",
555
+ "type": "icon"
455
556
  },
456
557
  {
558
+ "variant": "h3",
457
559
  "content": "@entity.vendor",
458
- "type": "typography",
459
- "variant": "h3"
560
+ "type": "typography"
460
561
  },
461
562
  {
563
+ "label": "@entity.status",
462
564
  "variant": "default",
463
- "type": "badge",
464
- "label": "@entity.status"
565
+ "type": "badge"
465
566
  }
466
567
  ],
467
- "gap": "sm",
468
- "type": "stack",
469
- "direction": "horizontal"
568
+ "gap": "sm"
470
569
  },
471
570
  {
472
571
  "type": "divider"
473
572
  },
474
573
  {
475
- "direction": "vertical",
574
+ "gap": "sm",
476
575
  "type": "stack",
576
+ "direction": "vertical",
477
577
  "children": [
478
578
  {
479
- "gap": "md",
480
- "type": "stack",
481
- "direction": "horizontal",
482
579
  "children": [
483
580
  {
484
- "type": "typography",
485
581
  "variant": "caption",
486
582
  "color": "muted",
583
+ "type": "typography",
487
584
  "content": "Bill #"
488
585
  },
489
586
  {
490
- "type": "typography",
491
587
  "variant": "body",
588
+ "type": "typography",
492
589
  "content": "@entity.billNumber"
493
590
  }
494
- ]
591
+ ],
592
+ "gap": "md",
593
+ "type": "stack",
594
+ "direction": "horizontal"
495
595
  },
496
596
  {
497
597
  "type": "stack",
598
+ "gap": "md",
498
599
  "children": [
499
600
  {
500
- "variant": "caption",
601
+ "content": "Notes",
501
602
  "color": "muted",
502
- "type": "typography",
503
- "content": "Notes"
603
+ "variant": "caption",
604
+ "type": "typography"
504
605
  },
505
606
  {
506
- "variant": "body",
607
+ "content": "@entity.notes",
507
608
  "type": "typography",
508
- "content": "@entity.notes"
609
+ "variant": "body"
509
610
  }
510
611
  ],
511
- "gap": "md",
512
612
  "direction": "horizontal"
513
613
  }
514
- ],
515
- "gap": "sm"
614
+ ]
516
615
  },
517
616
  {
518
617
  "type": "divider"
519
618
  },
520
619
  {
521
- "cols": 4.0,
522
620
  "children": [
523
621
  {
524
- "type": "stat-display",
525
- "value": "@entity.amountTotal",
526
622
  "label": "Total",
527
- "icon": "dollar-sign"
623
+ "value": "@entity.amountTotal",
624
+ "icon": "dollar-sign",
625
+ "type": "stat-display"
528
626
  },
529
627
  {
530
628
  "value": "@entity.amountPaid",
531
- "label": "Paid",
629
+ "icon": "check-circle",
532
630
  "type": "stat-display",
533
- "icon": "check-circle"
631
+ "label": "Paid"
534
632
  },
535
633
  {
536
- "icon": "calendar",
537
634
  "type": "stat-display",
538
635
  "label": "Bill date",
539
- "value": "@entity.billDate"
636
+ "value": "@entity.billDate",
637
+ "icon": "calendar"
540
638
  },
541
639
  {
542
- "value": "@entity.dueDate",
543
640
  "icon": "calendar-clock",
544
641
  "type": "stat-display",
545
- "label": "Due"
642
+ "label": "Due",
643
+ "value": "@entity.dueDate"
546
644
  }
547
645
  ],
646
+ "cols": 4.0,
548
647
  "type": "simple-grid"
549
648
  },
550
649
  {
551
650
  "gap": "sm",
651
+ "type": "stack",
652
+ "align": "center",
552
653
  "children": [
553
654
  {
554
- "action": "PAY_BILL",
555
655
  "type": "button",
656
+ "action": "PAY_BILL",
556
657
  "label": "Pay Bill",
658
+ "variant": "primary",
557
659
  "actionPayload": {
558
660
  "id": "@entity.id"
559
- },
560
- "variant": "primary"
661
+ }
561
662
  },
562
663
  {
563
- "variant": "danger",
564
- "action": "VOID_BILL",
664
+ "label": "Void",
665
+ "type": "button",
565
666
  "actionPayload": {
566
667
  "id": "@entity.id"
567
668
  },
568
- "label": "Void",
569
- "type": "button"
669
+ "action": "VOID_BILL",
670
+ "variant": "danger"
570
671
  }
571
672
  ],
572
- "direction": "horizontal",
573
- "align": "center",
574
- "type": "stack"
673
+ "direction": "horizontal"
575
674
  }
576
- ],
577
- "direction": "vertical",
578
- "type": "stack"
675
+ ]
579
676
  }
580
677
  ]
581
678
  ]
@@ -604,22 +701,106 @@
604
701
  "render-ui",
605
702
  "main",
606
703
  {
607
- "className": "py-12",
704
+ "type": "stack",
608
705
  "gap": "md",
706
+ "className": "py-12",
707
+ "direction": "vertical",
609
708
  "align": "center",
610
- "type": "stack",
611
709
  "children": [
612
710
  {
613
711
  "type": "spinner"
614
712
  },
615
713
  {
616
714
  "type": "typography",
617
- "color": "muted",
618
715
  "content": "Voiding bill…",
716
+ "color": "muted",
619
717
  "variant": "caption"
620
718
  }
621
- ],
622
- "direction": "vertical"
719
+ ]
720
+ }
721
+ ]
722
+ ]
723
+ },
724
+ {
725
+ "from": "browsing",
726
+ "to": "loading",
727
+ "event": "SET_STATUS",
728
+ "effects": [
729
+ [
730
+ "set",
731
+ "@entity.id",
732
+ "@payload.entityId"
733
+ ],
734
+ [
735
+ "set",
736
+ "@entity.status",
737
+ "@payload.newStatus"
738
+ ],
739
+ [
740
+ "persist",
741
+ "update",
742
+ "ApBill",
743
+ "@entity",
744
+ {
745
+ "emit": {
746
+ "failure": "ApBillUpdateFailed",
747
+ "success": "ApBillUpdated"
748
+ }
749
+ }
750
+ ],
751
+ [
752
+ "render-ui",
753
+ "main",
754
+ {
755
+ "gap": "md",
756
+ "direction": "vertical",
757
+ "align": "center",
758
+ "type": "stack",
759
+ "className": "py-12",
760
+ "children": [
761
+ {
762
+ "type": "spinner"
763
+ },
764
+ {
765
+ "content": "Updating bill status…",
766
+ "variant": "caption",
767
+ "color": "muted",
768
+ "type": "typography"
769
+ }
770
+ ]
771
+ }
772
+ ]
773
+ ]
774
+ },
775
+ {
776
+ "from": "browsing",
777
+ "to": "loading",
778
+ "event": "ApBillUpdated",
779
+ "effects": [
780
+ [
781
+ "fetch",
782
+ "ApBill",
783
+ {
784
+ "emit": {
785
+ "success": "ApBillLoaded",
786
+ "failure": "ApBillLoadFailed"
787
+ }
788
+ }
789
+ ]
790
+ ]
791
+ },
792
+ {
793
+ "from": "browsing",
794
+ "to": "browsing",
795
+ "event": "ApBillUpdateFailed",
796
+ "effects": [
797
+ [
798
+ "render-ui",
799
+ "main",
800
+ {
801
+ "message": "@payload.error",
802
+ "type": "alert",
803
+ "variant": "error"
623
804
  }
624
805
  ]
625
806
  ]
@@ -649,16 +830,16 @@
649
830
  },
650
831
  {
651
832
  "content": "Loading bills…",
833
+ "type": "typography",
652
834
  "variant": "caption",
653
- "color": "muted",
654
- "type": "typography"
835
+ "color": "muted"
655
836
  }
656
837
  ],
657
- "gap": "md",
838
+ "align": "center",
658
839
  "type": "stack",
659
- "className": "py-12",
660
840
  "direction": "vertical",
661
- "align": "center"
841
+ "className": "py-12",
842
+ "gap": "md"
662
843
  }
663
844
  ]
664
845
  ]
@@ -688,21 +869,21 @@
688
869
  "main",
689
870
  {
690
871
  "type": "stack",
691
- "gap": "md",
692
- "className": "py-12",
693
- "align": "center",
694
- "direction": "vertical",
695
872
  "children": [
696
873
  {
697
874
  "type": "spinner"
698
875
  },
699
876
  {
700
- "type": "typography",
701
- "content": "Paying bill…",
877
+ "color": "muted",
702
878
  "variant": "caption",
703
- "color": "muted"
879
+ "type": "typography",
880
+ "content": "Paying bill…"
704
881
  }
705
- ]
882
+ ],
883
+ "align": "center",
884
+ "className": "py-12",
885
+ "gap": "md",
886
+ "direction": "vertical"
706
887
  }
707
888
  ]
708
889
  ]
@@ -722,8 +903,8 @@
722
903
  "ApBill",
723
904
  {
724
905
  "emit": {
725
- "success": "ApBillLoaded",
726
- "failure": "ApBillLoadFailed"
906
+ "failure": "ApBillLoadFailed",
907
+ "success": "ApBillLoaded"
727
908
  }
728
909
  }
729
910
  ],
@@ -731,6 +912,7 @@
731
912
  "render-ui",
732
913
  "main",
733
914
  {
915
+ "gap": "md",
734
916
  "align": "center",
735
917
  "className": "py-12",
736
918
  "children": [
@@ -739,14 +921,13 @@
739
921
  },
740
922
  {
741
923
  "variant": "caption",
924
+ "color": "muted",
742
925
  "content": "Voiding bill…",
743
- "type": "typography",
744
- "color": "muted"
926
+ "type": "typography"
745
927
  }
746
928
  ],
747
929
  "type": "stack",
748
- "direction": "vertical",
749
- "gap": "md"
930
+ "direction": "vertical"
750
931
  }
751
932
  ]
752
933
  ]
@@ -761,8 +942,8 @@
761
942
  "ApBill",
762
943
  {
763
944
  "emit": {
764
- "success": "ApBillLoaded",
765
- "failure": "ApBillLoadFailed"
945
+ "failure": "ApBillLoadFailed",
946
+ "success": "ApBillLoaded"
766
947
  }
767
948
  }
768
949
  ],
@@ -779,6 +960,50 @@
779
960
  ]
780
961
  },
781
962
  "config": {
963
+ "itemActions": {
964
+ "type": "[ItemAction]",
965
+ "default": [
966
+ {
967
+ "icon": "arrow-right",
968
+ "label": "Open",
969
+ "event": "OPEN_BILL",
970
+ "variant": "primary"
971
+ },
972
+ {
973
+ "label": "Void",
974
+ "event": "VOID_BILL",
975
+ "variant": "danger"
976
+ }
977
+ ],
978
+ "label": "Row actions",
979
+ "description": "Buttons users can click on each bill row",
980
+ "tier": "customization",
981
+ "items": {
982
+ "type": "object",
983
+ "properties": {
984
+ "icon": {
985
+ "name": "icon",
986
+ "type": "string",
987
+ "required": false
988
+ },
989
+ "variant": {
990
+ "name": "variant",
991
+ "type": "string",
992
+ "required": false
993
+ },
994
+ "label": {
995
+ "name": "label",
996
+ "type": "string",
997
+ "required": true
998
+ },
999
+ "event": {
1000
+ "name": "event",
1001
+ "type": "string",
1002
+ "required": true
1003
+ }
1004
+ }
1005
+ }
1006
+ },
782
1007
  "title": {
783
1008
  "type": "string",
784
1009
  "default": "Bills Payable",
@@ -786,12 +1011,83 @@
786
1011
  "description": "Heading shown above the vendor bills list",
787
1012
  "tier": "customization"
788
1013
  },
1014
+ "currency": {
1015
+ "type": "string",
1016
+ "default": "USD",
1017
+ "label": "Default currency",
1018
+ "description": "ISO 4217 currency code (USD, EUR, GBP, …) for bill amounts.",
1019
+ "tier": "essential"
1020
+ },
1021
+ "taxStrategy": {
1022
+ "type": "string",
1023
+ "default": "exclusive",
1024
+ "label": "Tax strategy",
1025
+ "description": "inclusive = tax baked into the line item totals; exclusive = tax added on top; none = no tax.",
1026
+ "tier": "customization",
1027
+ "values": [
1028
+ "inclusive",
1029
+ "exclusive",
1030
+ "none"
1031
+ ]
1032
+ },
1033
+ "lateFeeAmount": {
1034
+ "type": "number",
1035
+ "default": 0.0,
1036
+ "label": "Late fee amount",
1037
+ "description": "Flat cash amount or percentage (per lateFeePolicy).",
1038
+ "tier": "customization"
1039
+ },
1040
+ "complianceJurisdiction": {
1041
+ "type": "string",
1042
+ "default": "",
1043
+ "label": "Compliance jurisdiction",
1044
+ "description": "Drives tax + retention rules per locale: 'US-CA', 'EU-DE', 'UK', etc. Declarative.",
1045
+ "tier": "advanced"
1046
+ },
1047
+ "gracePeriodDays": {
1048
+ "type": "number",
1049
+ "default": 30.0,
1050
+ "label": "Grace period (days)",
1051
+ "description": "Days after dueDate before a bill is treated as overdue. Wire via sibling std-lifecycle rule.",
1052
+ "tier": "customization"
1053
+ },
1054
+ "retentionYears": {
1055
+ "type": "number",
1056
+ "default": 7.0,
1057
+ "label": "Retention (years)",
1058
+ "description": "Years to keep bill records for compliance. Default 7 matches common regimes.",
1059
+ "tier": "advanced"
1060
+ },
1061
+ "lateFeePolicy": {
1062
+ "type": "string",
1063
+ "default": "none",
1064
+ "label": "Late fee policy",
1065
+ "description": "How late fees compute when overdue: none, flat (lateFeeAmount cash), or percent (% of total). Declarative; wiring deferred.",
1066
+ "tier": "customization",
1067
+ "values": [
1068
+ "none",
1069
+ "flat",
1070
+ "percent"
1071
+ ]
1072
+ },
1073
+ "roundingMode": {
1074
+ "type": "string",
1075
+ "default": "half-up",
1076
+ "label": "Rounding mode",
1077
+ "description": "Sub-cent rounding behavior for line items and totals.",
1078
+ "tier": "advanced",
1079
+ "values": [
1080
+ "bankers",
1081
+ "half-up",
1082
+ "down"
1083
+ ]
1084
+ },
789
1085
  "fields": {
790
1086
  "type": "[FieldSpec]",
791
1087
  "default": [
792
1088
  {
793
- "name": "vendor",
794
1089
  "label": "Vendor",
1090
+ "name": "vendor",
795
1091
  "variant": "caption"
796
1092
  },
797
1093
  {
@@ -801,13 +1097,13 @@
801
1097
  },
802
1098
  {
803
1099
  "name": "billDate",
804
- "label": "Bill Date",
805
- "variant": "caption"
1100
+ "variant": "caption",
1101
+ "label": "Bill Date"
806
1102
  },
807
1103
  {
1104
+ "name": "dueDate",
808
1105
  "label": "Due",
809
- "variant": "caption",
810
- "name": "dueDate"
1106
+ "variant": "caption"
811
1107
  },
812
1108
  {
813
1109
  "variant": "caption",
@@ -815,8 +1111,8 @@
815
1111
  "label": "Total"
816
1112
  },
817
1113
  {
818
- "label": "Status",
819
1114
  "variant": "badge",
1115
+ "label": "Status",
820
1116
  "name": "status"
821
1117
  }
822
1118
  ],
@@ -826,13 +1122,18 @@
826
1122
  "items": {
827
1123
  "type": "object",
828
1124
  "properties": {
1125
+ "name": {
1126
+ "name": "name",
1127
+ "type": "string",
1128
+ "required": true
1129
+ },
829
1130
  "label": {
830
1131
  "name": "label",
831
1132
  "type": "string",
832
1133
  "required": false
833
1134
  },
834
- "format": {
835
- "name": "format",
1135
+ "icon": {
1136
+ "name": "icon",
836
1137
  "type": "string",
837
1138
  "required": false
838
1139
  },
@@ -841,21 +1142,16 @@
841
1142
  "type": "string",
842
1143
  "required": false
843
1144
  },
844
- "name": {
845
- "name": "name",
1145
+ "format": {
1146
+ "name": "format",
846
1147
  "type": "string",
847
- "required": true
1148
+ "required": false
848
1149
  },
849
1150
  "variant": {
850
1151
  "name": "variant",
851
1152
  "type": "string",
852
1153
  "required": false
853
1154
  },
854
- "icon": {
855
- "name": "icon",
856
- "type": "string",
857
- "required": false
858
- },
859
1155
  "key": {
860
1156
  "name": "key",
861
1157
  "type": "string",
@@ -863,50 +1159,6 @@
863
1159
  }
864
1160
  }
865
1161
  }
866
- },
867
- "itemActions": {
868
- "type": "[ItemAction]",
869
- "default": [
870
- {
871
- "label": "Open",
872
- "event": "OPEN_BILL",
873
- "icon": "arrow-right",
874
- "variant": "primary"
875
- },
876
- {
877
- "variant": "danger",
878
- "label": "Void",
879
- "event": "VOID_BILL"
880
- }
881
- ],
882
- "label": "Row actions",
883
- "description": "Buttons users can click on each bill row",
884
- "tier": "customization",
885
- "items": {
886
- "type": "object",
887
- "properties": {
888
- "variant": {
889
- "name": "variant",
890
- "type": "string",
891
- "required": false
892
- },
893
- "event": {
894
- "name": "event",
895
- "type": "string",
896
- "required": true
897
- },
898
- "label": {
899
- "name": "label",
900
- "type": "string",
901
- "required": true
902
- },
903
- "icon": {
904
- "name": "icon",
905
- "type": "string",
906
- "required": false
907
- }
908
- }
909
- }
910
1162
  }
911
1163
  },
912
1164
  "scope": "collection"
@@ -925,4 +1177,4 @@
925
1177
  ]
926
1178
  }
927
1179
  ]
928
- }
1180
+ }