@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-lease",
3
- "version": "1.1.0",
4
- "description": "std-lease — owner-side lease records that tie tenants to property units with dates, monthly rent, and lifecycle status (pending/active/expired/terminated). Agents tune the list shape via `config.fields` + `config.itemActions`.",
3
+ "version": "1.2.0",
4
+ "description": "std-lease — owner-side lease records (tenant unit, dates, monthly rent, status). Listens for SET_STATUS so std-lifecycle can drive transitions (activeexpired). Exposes Real-estate knobs (leaseRenewalNoticeDays, securityDepositMonths, lateRentGraceDays, …).",
5
5
  "orbitals": [
6
6
  {
7
7
  "name": "LeaseOrbital",
@@ -171,6 +171,67 @@
171
171
  "type": "string"
172
172
  }
173
173
  ]
174
+ },
175
+ {
176
+ "event": "LeaseUpdated",
177
+ "payloadSchema": [
178
+ {
179
+ "name": "row.id",
180
+ "type": "string",
181
+ "required": true
182
+ },
183
+ {
184
+ "name": "row.tenantId",
185
+ "type": "string",
186
+ "required": true
187
+ },
188
+ {
189
+ "name": "row.tenantName",
190
+ "type": "string"
191
+ },
192
+ {
193
+ "name": "row.unitId",
194
+ "type": "string"
195
+ },
196
+ {
197
+ "name": "row.unitLabel",
198
+ "type": "string"
199
+ },
200
+ {
201
+ "name": "row.startDate",
202
+ "type": "string",
203
+ "required": true
204
+ },
205
+ {
206
+ "name": "row.endDate",
207
+ "type": "string"
208
+ },
209
+ {
210
+ "name": "row.monthlyRent",
211
+ "type": "number"
212
+ },
213
+ {
214
+ "name": "row.status",
215
+ "type": "string"
216
+ },
217
+ {
218
+ "name": "row.notes",
219
+ "type": "string"
220
+ }
221
+ ]
222
+ },
223
+ {
224
+ "event": "LeaseUpdateFailed",
225
+ "payloadSchema": [
226
+ {
227
+ "name": "error",
228
+ "type": "string"
229
+ },
230
+ {
231
+ "name": "code",
232
+ "type": "string"
233
+ }
234
+ ]
174
235
  }
175
236
  ],
176
237
  "stateMachine": {
@@ -244,6 +305,46 @@
244
305
  }
245
306
  ]
246
307
  },
308
+ {
309
+ "key": "SET_STATUS",
310
+ "name": "Set Status",
311
+ "payloadSchema": [
312
+ {
313
+ "name": "entityId",
314
+ "type": "string",
315
+ "required": true
316
+ },
317
+ {
318
+ "name": "newStatus",
319
+ "type": "string",
320
+ "required": true
321
+ }
322
+ ]
323
+ },
324
+ {
325
+ "key": "LeaseUpdated",
326
+ "name": "Lease updated",
327
+ "payloadSchema": [
328
+ {
329
+ "name": "row",
330
+ "type": "Lease"
331
+ }
332
+ ]
333
+ },
334
+ {
335
+ "key": "LeaseUpdateFailed",
336
+ "name": "Lease update failed",
337
+ "payloadSchema": [
338
+ {
339
+ "name": "error",
340
+ "type": "string"
341
+ },
342
+ {
343
+ "name": "code",
344
+ "type": "string"
345
+ }
346
+ ]
347
+ },
247
348
  {
248
349
  "key": "CLOSE_VIEW",
249
350
  "name": "Close View"
@@ -280,22 +381,22 @@
280
381
  "render-ui",
281
382
  "main",
282
383
  {
283
- "align": "center",
284
384
  "type": "stack",
285
- "direction": "vertical",
385
+ "className": "py-12",
286
386
  "gap": "md",
387
+ "direction": "vertical",
388
+ "align": "center",
287
389
  "children": [
288
390
  {
289
391
  "type": "spinner"
290
392
  },
291
393
  {
292
- "variant": "caption",
293
394
  "type": "typography",
294
- "content": "Loading leases…",
295
- "color": "muted"
395
+ "variant": "caption",
396
+ "color": "muted",
397
+ "content": "Loading leases…"
296
398
  }
297
- ],
298
- "className": "py-12"
399
+ ]
299
400
  }
300
401
  ]
301
402
  ]
@@ -309,69 +410,69 @@
309
410
  "render-ui",
310
411
  "main",
311
412
  {
312
- "direction": "vertical",
313
- "gap": "md",
314
- "type": "stack",
315
413
  "children": [
316
414
  {
415
+ "gap": "sm",
416
+ "direction": "horizontal",
317
417
  "children": [
318
418
  {
319
419
  "name": "file-text",
320
420
  "type": "icon"
321
421
  },
322
422
  {
323
- "type": "typography",
324
423
  "content": "@config.title",
424
+ "type": "typography",
325
425
  "variant": "h3"
326
426
  }
327
427
  ],
328
- "gap": "sm",
329
428
  "type": "stack",
330
- "direction": "horizontal",
331
429
  "align": "center"
332
430
  },
333
431
  {
334
- "type": "simple-grid",
335
- "cols": 4.0,
336
432
  "children": [
337
433
  {
338
- "label": "Total leases",
434
+ "icon": "file-text",
339
435
  "type": "stat-display",
340
436
  "value": "@payload.data.length",
341
- "icon": "file-text"
437
+ "label": "Total leases"
342
438
  },
343
439
  {
440
+ "type": "stat-display",
344
441
  "label": "Active",
345
442
  "icon": "check-circle",
346
- "value": "86",
347
- "type": "stat-display"
443
+ "value": "86"
348
444
  },
349
445
  {
350
- "type": "stat-display",
351
446
  "icon": "alert-triangle",
352
447
  "value": "11",
353
- "label": "Expiring 60d"
448
+ "label": "Expiring 60d",
449
+ "type": "stat-display"
354
450
  },
355
451
  {
356
- "label": "Monthly revenue",
357
452
  "type": "stat-display",
453
+ "value": "$184,200",
358
454
  "icon": "dollar-sign",
359
- "value": "$184,200"
455
+ "label": "Monthly revenue"
360
456
  }
361
- ]
457
+ ],
458
+ "cols": 4.0,
459
+ "type": "simple-grid"
362
460
  },
363
461
  {
364
462
  "type": "divider"
365
463
  },
366
464
  {
367
465
  "gap": "sm",
368
- "type": "data-grid",
369
- "cols": 1.0,
370
466
  "itemActions": "@config.itemActions",
467
+ "cols": 1.0,
371
468
  "entity": "@payload.data",
372
- "fields": "@config.fields"
469
+ "fields": "@config.fields",
470
+ "type": "data-grid"
373
471
  }
374
- ]
472
+ ],
473
+ "type": "stack",
474
+ "direction": "vertical",
475
+ "gap": "md"
375
476
  }
376
477
  ]
377
478
  ]
@@ -386,8 +487,8 @@
386
487
  "main",
387
488
  {
388
489
  "variant": "error",
389
- "message": "@payload.error",
390
- "type": "alert"
490
+ "type": "alert",
491
+ "message": "@payload.error"
391
492
  }
392
493
  ]
393
494
  ]
@@ -452,19 +553,21 @@
452
553
  "main",
453
554
  {
454
555
  "gap": "md",
556
+ "direction": "vertical",
455
557
  "children": [
456
558
  {
457
- "gap": "sm",
559
+ "type": "stack",
560
+ "direction": "horizontal",
458
561
  "children": [
459
562
  {
460
- "label": "Back",
461
- "variant": "ghost",
462
563
  "type": "button",
463
- "action": "CLOSE_VIEW"
564
+ "action": "CLOSE_VIEW",
565
+ "label": "Back",
566
+ "variant": "ghost"
464
567
  },
465
568
  {
466
- "name": "file-text",
467
- "type": "icon"
569
+ "type": "icon",
570
+ "name": "file-text"
468
571
  },
469
572
  {
470
573
  "variant": "h3",
@@ -473,65 +576,65 @@
473
576
  },
474
577
  {
475
578
  "type": "badge",
476
- "label": "@entity.status",
477
- "variant": "default"
579
+ "variant": "default",
580
+ "label": "@entity.status"
478
581
  }
479
582
  ],
480
- "type": "stack",
481
- "direction": "horizontal",
482
- "align": "center"
583
+ "align": "center",
584
+ "gap": "sm"
483
585
  },
484
586
  {
485
587
  "type": "divider"
486
588
  },
487
589
  {
488
- "type": "stack",
590
+ "direction": "vertical",
591
+ "gap": "sm",
489
592
  "children": [
490
593
  {
491
594
  "type": "stack",
595
+ "direction": "horizontal",
492
596
  "gap": "md",
493
597
  "children": [
494
598
  {
495
- "type": "typography",
496
599
  "content": "Unit",
497
- "variant": "caption",
498
- "color": "muted"
600
+ "type": "typography",
601
+ "color": "muted",
602
+ "variant": "caption"
499
603
  },
500
604
  {
605
+ "variant": "body",
501
606
  "content": "@entity.unitLabel",
502
- "type": "typography",
503
- "variant": "body"
607
+ "type": "typography"
504
608
  }
505
- ],
506
- "direction": "horizontal"
609
+ ]
507
610
  },
508
611
  {
509
- "type": "stack",
612
+ "gap": "md",
510
613
  "children": [
511
614
  {
512
- "type": "typography",
513
- "content": "Tenant ID",
514
615
  "color": "muted",
515
- "variant": "caption"
616
+ "variant": "caption",
617
+ "content": "Tenant ID",
618
+ "type": "typography"
516
619
  },
517
620
  {
518
621
  "type": "typography",
519
- "variant": "body",
520
- "content": "@entity.tenantId"
622
+ "content": "@entity.tenantId",
623
+ "variant": "body"
521
624
  }
522
625
  ],
523
- "direction": "horizontal",
524
- "gap": "md"
626
+ "type": "stack",
627
+ "direction": "horizontal"
525
628
  },
526
629
  {
527
- "gap": "md",
528
630
  "type": "stack",
631
+ "gap": "md",
529
632
  "children": [
530
633
  {
531
- "variant": "caption",
532
634
  "type": "typography",
533
- "color": "muted",
534
- "content": "Notes"
635
+ "variant": "caption",
636
+ "content": "Notes",
637
+ "color": "muted"
535
638
  },
536
639
  {
537
640
  "variant": "body",
@@ -542,64 +645,62 @@
542
645
  "direction": "horizontal"
543
646
  }
544
647
  ],
545
- "gap": "sm",
546
- "direction": "vertical"
648
+ "type": "stack"
547
649
  },
548
650
  {
549
651
  "type": "divider"
550
652
  },
551
653
  {
654
+ "cols": 3.0,
552
655
  "children": [
553
656
  {
554
657
  "icon": "dollar-sign",
555
- "value": "@entity.monthlyRent",
658
+ "label": "Monthly rent",
556
659
  "type": "stat-display",
557
- "label": "Monthly rent"
660
+ "value": "@entity.monthlyRent"
558
661
  },
559
662
  {
560
- "icon": "calendar",
561
- "type": "stat-display",
562
663
  "value": "@entity.startDate",
563
- "label": "Start"
664
+ "icon": "calendar",
665
+ "label": "Start",
666
+ "type": "stat-display"
564
667
  },
565
668
  {
566
- "value": "@entity.endDate",
567
669
  "icon": "calendar-x",
670
+ "type": "stat-display",
568
671
  "label": "End",
569
- "type": "stat-display"
672
+ "value": "@entity.endDate"
570
673
  }
571
674
  ],
572
- "type": "simple-grid",
573
- "cols": 3.0
675
+ "type": "simple-grid"
574
676
  },
575
677
  {
576
- "type": "stack",
577
678
  "children": [
578
679
  {
579
- "label": "Renew Lease",
580
- "variant": "primary",
581
- "type": "button",
582
- "action": "RENEW_LEASE",
583
680
  "actionPayload": {
584
681
  "id": "@entity.id"
585
- }
682
+ },
683
+ "type": "button",
684
+ "variant": "primary",
685
+ "label": "Renew Lease",
686
+ "action": "RENEW_LEASE"
586
687
  },
587
688
  {
588
689
  "action": "TERMINATE_LEASE",
589
- "label": "Terminate",
590
690
  "actionPayload": {
591
691
  "id": "@entity.id"
592
692
  },
593
693
  "type": "button",
694
+ "label": "Terminate",
594
695
  "variant": "danger"
595
696
  }
596
697
  ],
597
698
  "direction": "horizontal",
598
- "align": "center",
599
- "gap": "sm"
699
+ "type": "stack",
700
+ "gap": "sm",
701
+ "align": "center"
600
702
  }
601
703
  ],
602
- "direction": "vertical",
603
704
  "type": "stack"
604
705
  }
605
706
  ]
@@ -629,22 +730,106 @@
629
730
  "render-ui",
630
731
  "main",
631
732
  {
632
- "className": "py-12",
633
- "direction": "vertical",
634
733
  "type": "stack",
635
734
  "gap": "md",
636
- "align": "center",
735
+ "className": "py-12",
736
+ "direction": "vertical",
637
737
  "children": [
638
738
  {
639
739
  "type": "spinner"
640
740
  },
641
741
  {
742
+ "color": "muted",
743
+ "type": "typography",
642
744
  "content": "Terminating lease…",
745
+ "variant": "caption"
746
+ }
747
+ ],
748
+ "align": "center"
749
+ }
750
+ ]
751
+ ]
752
+ },
753
+ {
754
+ "from": "browsing",
755
+ "to": "loading",
756
+ "event": "SET_STATUS",
757
+ "effects": [
758
+ [
759
+ "set",
760
+ "@entity.id",
761
+ "@payload.entityId"
762
+ ],
763
+ [
764
+ "set",
765
+ "@entity.status",
766
+ "@payload.newStatus"
767
+ ],
768
+ [
769
+ "persist",
770
+ "update",
771
+ "Lease",
772
+ "@entity",
773
+ {
774
+ "emit": {
775
+ "failure": "LeaseUpdateFailed",
776
+ "success": "LeaseUpdated"
777
+ }
778
+ }
779
+ ],
780
+ [
781
+ "render-ui",
782
+ "main",
783
+ {
784
+ "className": "py-12",
785
+ "children": [
786
+ {
787
+ "type": "spinner"
788
+ },
789
+ {
643
790
  "type": "typography",
791
+ "color": "muted",
644
792
  "variant": "caption",
645
- "color": "muted"
793
+ "content": "Updating lease status…"
646
794
  }
647
- ]
795
+ ],
796
+ "align": "center",
797
+ "type": "stack",
798
+ "direction": "vertical",
799
+ "gap": "md"
800
+ }
801
+ ]
802
+ ]
803
+ },
804
+ {
805
+ "from": "browsing",
806
+ "to": "loading",
807
+ "event": "LeaseUpdated",
808
+ "effects": [
809
+ [
810
+ "fetch",
811
+ "Lease",
812
+ {
813
+ "emit": {
814
+ "success": "LeaseLoaded",
815
+ "failure": "LeaseLoadFailed"
816
+ }
817
+ }
818
+ ]
819
+ ]
820
+ },
821
+ {
822
+ "from": "browsing",
823
+ "to": "browsing",
824
+ "event": "LeaseUpdateFailed",
825
+ "effects": [
826
+ [
827
+ "render-ui",
828
+ "main",
829
+ {
830
+ "message": "@payload.error",
831
+ "type": "alert",
832
+ "variant": "error"
648
833
  }
649
834
  ]
650
835
  ]
@@ -668,9 +853,9 @@
668
853
  "render-ui",
669
854
  "main",
670
855
  {
671
- "type": "stack",
856
+ "className": "py-12",
672
857
  "direction": "vertical",
673
- "gap": "md",
858
+ "type": "stack",
674
859
  "children": [
675
860
  {
676
861
  "type": "spinner"
@@ -682,8 +867,8 @@
682
867
  "type": "typography"
683
868
  }
684
869
  ],
685
- "align": "center",
686
- "className": "py-12"
870
+ "gap": "md",
871
+ "align": "center"
687
872
  }
688
873
  ]
689
874
  ]
@@ -712,22 +897,22 @@
712
897
  "render-ui",
713
898
  "main",
714
899
  {
715
- "direction": "vertical",
716
900
  "className": "py-12",
717
- "gap": "md",
901
+ "direction": "vertical",
718
902
  "type": "stack",
719
- "align": "center",
720
903
  "children": [
721
904
  {
722
905
  "type": "spinner"
723
906
  },
724
907
  {
725
- "content": "Renewing lease…",
726
908
  "type": "typography",
727
- "color": "muted",
728
- "variant": "caption"
909
+ "variant": "caption",
910
+ "content": "Renewing lease…",
911
+ "color": "muted"
729
912
  }
730
- ]
913
+ ],
914
+ "align": "center",
915
+ "gap": "md"
731
916
  }
732
917
  ]
733
918
  ]
@@ -756,22 +941,22 @@
756
941
  "render-ui",
757
942
  "main",
758
943
  {
759
- "gap": "md",
760
- "direction": "vertical",
761
- "align": "center",
762
- "className": "py-12",
763
944
  "children": [
764
945
  {
765
946
  "type": "spinner"
766
947
  },
767
948
  {
768
- "color": "muted",
769
949
  "variant": "caption",
950
+ "color": "muted",
770
951
  "type": "typography",
771
952
  "content": "Terminating lease…"
772
953
  }
773
954
  ],
774
- "type": "stack"
955
+ "direction": "vertical",
956
+ "className": "py-12",
957
+ "gap": "md",
958
+ "type": "stack",
959
+ "align": "center"
775
960
  }
776
961
  ]
777
962
  ]
@@ -795,8 +980,8 @@
795
980
  "render-ui",
796
981
  "main",
797
982
  {
798
- "type": "spinner",
799
- "size": "sm"
983
+ "size": "sm",
984
+ "type": "spinner"
800
985
  }
801
986
  ]
802
987
  ]
@@ -804,73 +989,22 @@
804
989
  ]
805
990
  },
806
991
  "config": {
807
- "title": {
808
- "type": "string",
809
- "default": "Leases",
810
- "label": "Section title",
811
- "description": "Heading shown above the lease list",
812
- "tier": "customization"
813
- },
814
- "itemActions": {
815
- "type": "[ItemAction]",
816
- "default": [
817
- {
818
- "variant": "primary",
819
- "event": "OPEN_LEASE",
820
- "label": "Open",
821
- "icon": "arrow-right"
822
- },
823
- {
824
- "label": "Terminate",
825
- "variant": "danger",
826
- "event": "TERMINATE_LEASE"
827
- }
828
- ],
829
- "label": "Row actions",
830
- "description": "Buttons users can click on each lease row",
831
- "tier": "customization",
832
- "items": {
833
- "type": "object",
834
- "properties": {
835
- "icon": {
836
- "name": "icon",
837
- "type": "string",
838
- "required": false
839
- },
840
- "event": {
841
- "name": "event",
842
- "type": "string",
843
- "required": true
844
- },
845
- "variant": {
846
- "name": "variant",
847
- "type": "string",
848
- "required": false
849
- },
850
- "label": {
851
- "name": "label",
852
- "type": "string",
853
- "required": true
854
- }
855
- }
856
- }
857
- },
858
992
  "fields": {
859
993
  "type": "[FieldSpec]",
860
994
  "default": [
861
995
  {
862
- "name": "tenantName",
863
996
  "label": "Tenant",
864
- "variant": "caption"
997
+ "variant": "caption",
998
+ "name": "tenantName"
865
999
  },
866
1000
  {
867
1001
  "variant": "caption",
868
- "name": "unitLabel",
869
- "label": "Unit"
1002
+ "label": "Unit",
1003
+ "name": "unitLabel"
870
1004
  },
871
1005
  {
872
- "label": "Start",
873
1006
  "variant": "caption",
1007
+ "label": "Start",
874
1008
  "name": "startDate"
875
1009
  },
876
1010
  {
@@ -879,14 +1013,14 @@
879
1013
  "name": "endDate"
880
1014
  },
881
1015
  {
882
- "label": "Monthly Rent",
1016
+ "name": "monthlyRent",
883
1017
  "variant": "caption",
884
- "name": "monthlyRent"
1018
+ "label": "Monthly Rent"
885
1019
  },
886
1020
  {
1021
+ "label": "Status",
887
1022
  "variant": "badge",
888
- "name": "status",
889
- "label": "Status"
1023
+ "name": "status"
890
1024
  }
891
1025
  ],
892
1026
  "label": "Columns to show",
@@ -895,8 +1029,18 @@
895
1029
  "items": {
896
1030
  "type": "object",
897
1031
  "properties": {
898
- "header": {
899
- "name": "header",
1032
+ "icon": {
1033
+ "name": "icon",
1034
+ "type": "string",
1035
+ "required": false
1036
+ },
1037
+ "variant": {
1038
+ "name": "variant",
1039
+ "type": "string",
1040
+ "required": false
1041
+ },
1042
+ "label": {
1043
+ "name": "label",
900
1044
  "type": "string",
901
1045
  "required": false
902
1046
  },
@@ -905,33 +1049,122 @@
905
1049
  "type": "string",
906
1050
  "required": false
907
1051
  },
1052
+ "header": {
1053
+ "name": "header",
1054
+ "type": "string",
1055
+ "required": false
1056
+ },
908
1057
  "name": {
909
1058
  "name": "name",
910
1059
  "type": "string",
911
1060
  "required": true
912
1061
  },
913
- "label": {
914
- "name": "label",
1062
+ "key": {
1063
+ "name": "key",
915
1064
  "type": "string",
916
1065
  "required": false
1066
+ }
1067
+ }
1068
+ }
1069
+ },
1070
+ "itemActions": {
1071
+ "type": "[ItemAction]",
1072
+ "default": [
1073
+ {
1074
+ "variant": "primary",
1075
+ "icon": "arrow-right",
1076
+ "event": "OPEN_LEASE",
1077
+ "label": "Open"
1078
+ },
1079
+ {
1080
+ "label": "Terminate",
1081
+ "event": "TERMINATE_LEASE",
1082
+ "variant": "danger"
1083
+ }
1084
+ ],
1085
+ "label": "Row actions",
1086
+ "description": "Buttons users can click on each lease row",
1087
+ "tier": "customization",
1088
+ "items": {
1089
+ "type": "object",
1090
+ "properties": {
1091
+ "event": {
1092
+ "name": "event",
1093
+ "type": "string",
1094
+ "required": true
917
1095
  },
918
- "variant": {
919
- "name": "variant",
1096
+ "label": {
1097
+ "name": "label",
920
1098
  "type": "string",
921
- "required": false
1099
+ "required": true
922
1100
  },
923
1101
  "icon": {
924
1102
  "name": "icon",
925
1103
  "type": "string",
926
1104
  "required": false
927
1105
  },
928
- "key": {
929
- "name": "key",
1106
+ "variant": {
1107
+ "name": "variant",
930
1108
  "type": "string",
931
1109
  "required": false
932
1110
  }
933
1111
  }
934
1112
  }
1113
+ },
1114
+ "autoRenewEnabled": {
1115
+ "type": "boolean",
1116
+ "default": false,
1117
+ "label": "Auto-renew",
1118
+ "description": "Roll over leases that reach term without an explicit non-renew notice.",
1119
+ "tier": "customization"
1120
+ },
1121
+ "inspectionFrequencyMonths": {
1122
+ "type": "number",
1123
+ "default": 12.0,
1124
+ "label": "Inspection cadence (months)",
1125
+ "description": "Months between scheduled unit inspections during the lease.",
1126
+ "tier": "advanced"
1127
+ },
1128
+ "title": {
1129
+ "type": "string",
1130
+ "default": "Leases",
1131
+ "label": "Section title",
1132
+ "description": "Heading shown above the lease list",
1133
+ "tier": "customization"
1134
+ },
1135
+ "leaseRenewalNoticeDays": {
1136
+ "type": "number",
1137
+ "default": 60.0,
1138
+ "label": "Renewal notice (days)",
1139
+ "description": "Days before lease end when a renewal notice should fire. Wire via std-reminder-scheduler composed at the organism.",
1140
+ "tier": "customization"
1141
+ },
1142
+ "securityDepositMonths": {
1143
+ "type": "number",
1144
+ "default": 1.0,
1145
+ "label": "Security deposit (months)",
1146
+ "description": "Months of rent required as security deposit on signing.",
1147
+ "tier": "customization"
1148
+ },
1149
+ "petPolicy": {
1150
+ "type": "string",
1151
+ "default": "no-pets",
1152
+ "label": "Pet policy",
1153
+ "description": "Default pet policy applied to new leases.",
1154
+ "tier": "customization",
1155
+ "values": [
1156
+ "no-pets",
1157
+ "cats-only",
1158
+ "dogs-only",
1159
+ "all"
1160
+ ]
1161
+ },
1162
+ "lateRentGraceDays": {
1163
+ "type": "number",
1164
+ "default": 5.0,
1165
+ "label": "Late rent grace (days)",
1166
+ "description": "Days after due date before a rent charge is treated as late.",
1167
+ "tier": "customization"
935
1168
  }
936
1169
  },
937
1170
  "scope": "collection"
@@ -950,4 +1183,4 @@
950
1183
  ]
951
1184
  }
952
1185
  ]
953
- }
1186
+ }