@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-ticket-tier",
3
- "version": "1.1.0",
4
- "description": "std-ticket-tier — event ticket pricing tiers (VIP, general, early-bird) with quantity tracking. Lists tiers in `browsing`; opens detail in `viewing_single` with Update / Sell / Close actions. Agents tune the list shape via `config.fields` + `config.itemActions`.",
3
+ "version": "1.2.0",
4
+ "description": "std-ticket-tier — event ticket pricing tiers (VIP, general, early-bird) with quantity tracking. Listens for SET_STATUS so std-lifecycle can drive transitions (sold-out / closed). Exposes Restaurant/POS + Financial knobs (currency, tipPresets, taxStrategy, …).",
5
5
  "orbitals": [
6
6
  {
7
7
  "name": "TicketTierOrbital",
@@ -330,6 +330,70 @@
330
330
  "type": "string"
331
331
  }
332
332
  ]
333
+ },
334
+ {
335
+ "event": "TicketTierUpdated",
336
+ "payloadSchema": [
337
+ {
338
+ "name": "row.id",
339
+ "type": "string",
340
+ "required": true
341
+ },
342
+ {
343
+ "name": "row.eventId",
344
+ "type": "string",
345
+ "required": true
346
+ },
347
+ {
348
+ "name": "row.name",
349
+ "type": "string",
350
+ "required": true
351
+ },
352
+ {
353
+ "name": "row.price",
354
+ "type": "number",
355
+ "required": true
356
+ },
357
+ {
358
+ "name": "row.currency",
359
+ "type": "string"
360
+ },
361
+ {
362
+ "name": "row.quantityTotal",
363
+ "type": "number",
364
+ "required": true
365
+ },
366
+ {
367
+ "name": "row.quantitySold",
368
+ "type": "number",
369
+ "required": true
370
+ },
371
+ {
372
+ "name": "row.availableFrom",
373
+ "type": "string"
374
+ },
375
+ {
376
+ "name": "row.availableUntil",
377
+ "type": "string"
378
+ },
379
+ {
380
+ "name": "row.status",
381
+ "type": "string"
382
+ }
383
+ ]
384
+ },
385
+ {
386
+ "event": "TicketTierUpdateFailed",
387
+ "payloadSchema": [
388
+ {
389
+ "name": "error",
390
+ "type": "string"
391
+ },
392
+ {
393
+ "name": "code",
394
+ "type": "string"
395
+ }
396
+ ]
333
397
  }
334
398
  ],
335
399
  "stateMachine": {
@@ -447,6 +511,46 @@
447
511
  }
448
512
  ]
449
513
  },
514
+ {
515
+ "key": "SET_STATUS",
516
+ "name": "Set Status",
517
+ "payloadSchema": [
518
+ {
519
+ "name": "entityId",
520
+ "type": "string",
521
+ "required": true
522
+ },
523
+ {
524
+ "name": "newStatus",
525
+ "type": "string",
526
+ "required": true
527
+ }
528
+ ]
529
+ },
530
+ {
531
+ "key": "TicketTierUpdated",
532
+ "name": "TicketTier updated",
533
+ "payloadSchema": [
534
+ {
535
+ "name": "row",
536
+ "type": "TicketTier"
537
+ }
538
+ ]
539
+ },
540
+ {
541
+ "key": "TicketTierUpdateFailed",
542
+ "name": "TicketTier update failed",
543
+ "payloadSchema": [
544
+ {
545
+ "name": "error",
546
+ "type": "string"
547
+ },
548
+ {
549
+ "name": "code",
550
+ "type": "string"
551
+ }
552
+ ]
553
+ },
450
554
  {
451
555
  "key": "CLOSE_VIEW",
452
556
  "name": "Close View"
@@ -463,8 +567,8 @@
463
567
  "TicketTier",
464
568
  {
465
569
  "emit": {
466
- "failure": "TicketTierLoadFailed",
467
- "success": "TicketTierLoaded"
570
+ "success": "TicketTierLoaded",
571
+ "failure": "TicketTierLoadFailed"
468
572
  }
469
573
  }
470
574
  ],
@@ -472,22 +576,22 @@
472
576
  "render-ui",
473
577
  "main",
474
578
  {
475
- "className": "py-12",
476
- "direction": "vertical",
579
+ "gap": "md",
477
580
  "align": "center",
581
+ "type": "stack",
582
+ "direction": "vertical",
478
583
  "children": [
479
584
  {
480
585
  "type": "spinner"
481
586
  },
482
587
  {
483
- "color": "muted",
484
588
  "type": "typography",
589
+ "color": "muted",
485
590
  "variant": "caption",
486
591
  "content": "Loading ticket tiers…"
487
592
  }
488
593
  ],
489
- "type": "stack",
490
- "gap": "md"
594
+ "className": "py-12"
491
595
  }
492
596
  ]
493
597
  ]
@@ -506,49 +610,49 @@
506
610
  "gap": "md",
507
611
  "children": [
508
612
  {
613
+ "gap": "sm",
509
614
  "type": "stack",
510
- "align": "center",
511
615
  "children": [
512
616
  {
513
617
  "name": "ticket",
514
618
  "type": "icon"
515
619
  },
516
620
  {
517
- "type": "typography",
518
621
  "content": "@config.title",
519
- "variant": "h3"
622
+ "variant": "h3",
623
+ "type": "typography"
520
624
  }
521
625
  ],
522
626
  "direction": "horizontal",
523
- "gap": "sm"
627
+ "align": "center"
524
628
  },
525
629
  {
526
- "type": "simple-grid",
527
630
  "cols": 4.0,
631
+ "type": "simple-grid",
528
632
  "children": [
529
633
  {
530
634
  "icon": "ticket",
531
- "value": "@payload.data.length",
532
635
  "type": "stat-display",
636
+ "value": "@payload.data.length",
533
637
  "label": "Total tiers"
534
638
  },
535
639
  {
536
- "type": "stat-display",
537
- "label": "Gross sales",
640
+ "icon": "dollar-sign",
538
641
  "value": "$184,200",
539
- "icon": "dollar-sign"
642
+ "type": "stat-display",
643
+ "label": "Gross sales"
540
644
  },
541
645
  {
542
646
  "type": "stat-display",
543
- "label": "Sold seats",
544
647
  "value": "2,840",
545
- "icon": "users"
648
+ "icon": "users",
649
+ "label": "Sold seats"
546
650
  },
547
651
  {
548
- "type": "stat-display",
549
- "label": "Sell-through",
550
652
  "value": "73%",
551
- "icon": "trending-up"
653
+ "icon": "trending-up",
654
+ "type": "stat-display",
655
+ "label": "Sell-through"
552
656
  }
553
657
  ]
554
658
  },
@@ -556,12 +660,12 @@
556
660
  "type": "divider"
557
661
  },
558
662
  {
559
- "itemActions": "@config.itemActions",
663
+ "gap": "sm",
664
+ "entity": "@payload.data",
665
+ "fields": "@config.fields",
560
666
  "type": "data-grid",
561
667
  "cols": 1.0,
562
- "entity": "@payload.data",
563
- "gap": "sm",
564
- "fields": "@config.fields"
668
+ "itemActions": "@config.itemActions"
565
669
  }
566
670
  ]
567
671
  }
@@ -577,8 +681,8 @@
577
681
  "render-ui",
578
682
  "main",
579
683
  {
580
- "type": "alert",
581
684
  "message": "@payload.error",
685
+ "type": "alert",
582
686
  "variant": "error"
583
687
  }
584
688
  ]
@@ -643,49 +747,50 @@
643
747
  "render-ui",
644
748
  "main",
645
749
  {
646
- "type": "stack",
647
750
  "gap": "md",
648
751
  "children": [
649
752
  {
650
753
  "type": "stack",
754
+ "gap": "sm",
755
+ "direction": "horizontal",
756
+ "align": "center",
651
757
  "children": [
652
758
  {
759
+ "action": "CLOSE_VIEW",
653
760
  "variant": "ghost",
654
761
  "label": "Back",
655
- "action": "CLOSE_VIEW",
656
762
  "type": "button"
657
763
  },
658
764
  {
659
- "name": "ticket",
660
- "type": "icon"
765
+ "type": "icon",
766
+ "name": "ticket"
661
767
  },
662
768
  {
769
+ "type": "typography",
663
770
  "content": "@entity.name",
664
- "variant": "h3",
665
- "type": "typography"
771
+ "variant": "h3"
666
772
  },
667
773
  {
668
- "variant": "primary",
669
774
  "type": "badge",
670
- "label": "@entity.status"
775
+ "label": "@entity.status",
776
+ "variant": "primary"
671
777
  }
672
- ],
673
- "align": "center",
674
- "direction": "horizontal",
675
- "gap": "sm"
778
+ ]
676
779
  },
677
780
  {
678
781
  "type": "divider"
679
782
  },
680
783
  {
784
+ "gap": "sm",
681
785
  "children": [
682
786
  {
787
+ "type": "stack",
683
788
  "children": [
684
789
  {
685
- "type": "typography",
686
- "color": "muted",
790
+ "variant": "caption",
687
791
  "content": "Event",
688
- "variant": "caption"
792
+ "type": "typography",
793
+ "color": "muted"
689
794
  },
690
795
  {
691
796
  "type": "typography",
@@ -693,126 +798,125 @@
693
798
  "content": "@entity.eventId"
694
799
  }
695
800
  ],
696
- "type": "stack",
697
801
  "direction": "horizontal",
698
802
  "gap": "md"
699
803
  },
700
804
  {
701
805
  "gap": "md",
702
- "type": "stack",
703
- "direction": "horizontal",
704
806
  "children": [
705
807
  {
706
- "type": "typography",
707
- "variant": "caption",
708
808
  "content": "Available from",
709
- "color": "muted"
809
+ "variant": "caption",
810
+ "color": "muted",
811
+ "type": "typography"
710
812
  },
711
813
  {
712
- "variant": "body",
713
814
  "content": "@entity.availableFrom",
714
- "type": "typography"
815
+ "type": "typography",
816
+ "variant": "body"
715
817
  }
716
- ]
818
+ ],
819
+ "direction": "horizontal",
820
+ "type": "stack"
717
821
  },
718
822
  {
719
- "gap": "md",
720
823
  "children": [
721
824
  {
722
825
  "type": "typography",
723
- "content": "Available until",
724
826
  "color": "muted",
827
+ "content": "Available until",
725
828
  "variant": "caption"
726
829
  },
727
830
  {
728
- "variant": "body",
729
831
  "type": "typography",
832
+ "variant": "body",
730
833
  "content": "@entity.availableUntil"
731
834
  }
732
835
  ],
836
+ "gap": "md",
733
837
  "type": "stack",
734
838
  "direction": "horizontal"
735
839
  }
736
840
  ],
737
841
  "direction": "vertical",
738
- "gap": "sm",
739
842
  "type": "stack"
740
843
  },
741
844
  {
742
845
  "type": "divider"
743
846
  },
744
847
  {
848
+ "cols": 4.0,
849
+ "type": "simple-grid",
745
850
  "children": [
746
851
  {
852
+ "icon": "dollar-sign",
747
853
  "label": "Price",
748
854
  "type": "stat-display",
749
- "icon": "dollar-sign",
750
855
  "value": "@entity.price"
751
856
  },
752
857
  {
753
- "type": "stat-display",
754
858
  "label": "Currency",
755
- "icon": "globe",
756
- "value": "@entity.currency"
859
+ "type": "stat-display",
860
+ "value": "@entity.currency",
861
+ "icon": "globe"
757
862
  },
758
863
  {
759
864
  "value": "@entity.quantityTotal",
760
- "type": "stat-display",
865
+ "label": "Total seats",
761
866
  "icon": "users",
762
- "label": "Total seats"
867
+ "type": "stat-display"
763
868
  },
764
869
  {
765
- "value": "@entity.quantitySold",
766
870
  "type": "stat-display",
767
- "icon": "check-circle",
768
- "label": "Sold"
871
+ "label": "Sold",
872
+ "value": "@entity.quantitySold",
873
+ "icon": "check-circle"
769
874
  }
770
- ],
771
- "type": "simple-grid",
772
- "cols": 4.0
875
+ ]
773
876
  },
774
877
  {
775
- "type": "stack",
776
- "direction": "horizontal",
777
878
  "align": "center",
778
- "gap": "sm",
779
879
  "children": [
780
880
  {
781
881
  "action": "UPDATE",
882
+ "variant": "primary",
782
883
  "actionPayload": {
783
884
  "row": "@entity",
784
- "tierId": "@entity.id",
785
- "data": {}
885
+ "data": {},
886
+ "tierId": "@entity.id"
786
887
  },
787
- "label": "Update",
788
888
  "type": "button",
789
- "variant": "primary"
889
+ "label": "Update"
790
890
  },
791
891
  {
792
- "action": "SELL",
793
892
  "label": "Sell",
893
+ "action": "SELL",
894
+ "type": "button",
794
895
  "actionPayload": {
795
896
  "qty": 1.0,
796
897
  "tierId": "@entity.id",
797
898
  "row": "@entity"
798
899
  },
799
- "type": "button",
800
900
  "variant": "secondary"
801
901
  },
802
902
  {
803
- "variant": "danger",
804
- "type": "button",
805
- "action": "CLOSE",
806
903
  "actionPayload": {
807
904
  "row": "@entity",
808
905
  "tierId": "@entity.id"
809
906
  },
810
- "label": "Close"
907
+ "variant": "danger",
908
+ "type": "button",
909
+ "label": "Close",
910
+ "action": "CLOSE"
811
911
  }
812
- ]
912
+ ],
913
+ "direction": "horizontal",
914
+ "gap": "sm",
915
+ "type": "stack"
813
916
  }
814
917
  ],
815
- "direction": "vertical"
918
+ "direction": "vertical",
919
+ "type": "stack"
816
920
  }
817
921
  ]
818
922
  ]
@@ -841,22 +945,22 @@
841
945
  "render-ui",
842
946
  "main",
843
947
  {
844
- "gap": "md",
845
948
  "children": [
846
949
  {
847
950
  "type": "spinner"
848
951
  },
849
952
  {
850
953
  "content": "Updating tier…",
851
- "color": "muted",
954
+ "variant": "caption",
852
955
  "type": "typography",
853
- "variant": "caption"
956
+ "color": "muted"
854
957
  }
855
958
  ],
959
+ "className": "py-12",
856
960
  "direction": "vertical",
857
- "type": "stack",
961
+ "gap": "md",
858
962
  "align": "center",
859
- "className": "py-12"
963
+ "type": "stack"
860
964
  }
861
965
  ]
862
966
  ]
@@ -876,8 +980,8 @@
876
980
  "TicketTier",
877
981
  {
878
982
  "emit": {
879
- "failure": "TicketTierLoadFailed",
880
- "success": "TicketTierLoaded"
983
+ "success": "TicketTierLoaded",
984
+ "failure": "TicketTierLoadFailed"
881
985
  }
882
986
  }
883
987
  ],
@@ -885,21 +989,21 @@
885
989
  "render-ui",
886
990
  "main",
887
991
  {
888
- "type": "stack",
992
+ "align": "center",
889
993
  "gap": "md",
994
+ "type": "stack",
995
+ "className": "py-12",
890
996
  "children": [
891
997
  {
892
998
  "type": "spinner"
893
999
  },
894
1000
  {
895
- "variant": "caption",
1001
+ "content": "Selling tickets…",
896
1002
  "type": "typography",
897
1003
  "color": "muted",
898
- "content": "Selling tickets…"
1004
+ "variant": "caption"
899
1005
  }
900
1006
  ],
901
- "align": "center",
902
- "className": "py-12",
903
1007
  "direction": "vertical"
904
1008
  }
905
1009
  ]
@@ -920,8 +1024,8 @@
920
1024
  "TicketTier",
921
1025
  {
922
1026
  "emit": {
923
- "success": "TicketTierLoaded",
924
- "failure": "TicketTierLoadFailed"
1027
+ "failure": "TicketTierLoadFailed",
1028
+ "success": "TicketTierLoaded"
925
1029
  }
926
1030
  }
927
1031
  ],
@@ -929,30 +1033,81 @@
929
1033
  "render-ui",
930
1034
  "main",
931
1035
  {
932
- "className": "py-12",
933
- "gap": "md",
934
1036
  "align": "center",
1037
+ "gap": "md",
1038
+ "direction": "vertical",
1039
+ "type": "stack",
1040
+ "className": "py-12",
935
1041
  "children": [
936
1042
  {
937
1043
  "type": "spinner"
938
1044
  },
939
1045
  {
940
- "color": "muted",
941
1046
  "type": "typography",
1047
+ "content": "Closing tier…",
1048
+ "color": "muted",
1049
+ "variant": "caption"
1050
+ }
1051
+ ]
1052
+ }
1053
+ ]
1054
+ ]
1055
+ },
1056
+ {
1057
+ "from": "browsing",
1058
+ "to": "loading",
1059
+ "event": "SET_STATUS",
1060
+ "effects": [
1061
+ [
1062
+ "set",
1063
+ "@entity.id",
1064
+ "@payload.entityId"
1065
+ ],
1066
+ [
1067
+ "set",
1068
+ "@entity.status",
1069
+ "@payload.newStatus"
1070
+ ],
1071
+ [
1072
+ "persist",
1073
+ "update",
1074
+ "TicketTier",
1075
+ "@entity",
1076
+ {
1077
+ "emit": {
1078
+ "success": "TicketTierUpdated",
1079
+ "failure": "TicketTierUpdateFailed"
1080
+ }
1081
+ }
1082
+ ],
1083
+ [
1084
+ "render-ui",
1085
+ "main",
1086
+ {
1087
+ "direction": "vertical",
1088
+ "children": [
1089
+ {
1090
+ "type": "spinner"
1091
+ },
1092
+ {
942
1093
  "variant": "caption",
943
- "content": "Closing tier…"
1094
+ "content": "Updating tier status…",
1095
+ "color": "muted",
1096
+ "type": "typography"
944
1097
  }
945
1098
  ],
1099
+ "className": "py-12",
1100
+ "align": "center",
946
1101
  "type": "stack",
947
- "direction": "vertical"
1102
+ "gap": "md"
948
1103
  }
949
1104
  ]
950
1105
  ]
951
1106
  },
952
1107
  {
953
- "from": "viewing_single",
1108
+ "from": "browsing",
954
1109
  "to": "loading",
955
- "event": "CLOSE_VIEW",
1110
+ "event": "TicketTierUpdated",
956
1111
  "effects": [
957
1112
  [
958
1113
  "fetch",
@@ -963,26 +1118,59 @@
963
1118
  "failure": "TicketTierLoadFailed"
964
1119
  }
965
1120
  }
1121
+ ]
1122
+ ]
1123
+ },
1124
+ {
1125
+ "from": "browsing",
1126
+ "to": "browsing",
1127
+ "event": "TicketTierUpdateFailed",
1128
+ "effects": [
1129
+ [
1130
+ "render-ui",
1131
+ "main",
1132
+ {
1133
+ "type": "alert",
1134
+ "variant": "error",
1135
+ "message": "@payload.error"
1136
+ }
1137
+ ]
1138
+ ]
1139
+ },
1140
+ {
1141
+ "from": "viewing_single",
1142
+ "to": "loading",
1143
+ "event": "CLOSE_VIEW",
1144
+ "effects": [
1145
+ [
1146
+ "fetch",
1147
+ "TicketTier",
1148
+ {
1149
+ "emit": {
1150
+ "failure": "TicketTierLoadFailed",
1151
+ "success": "TicketTierLoaded"
1152
+ }
1153
+ }
966
1154
  ],
967
1155
  [
968
1156
  "render-ui",
969
1157
  "main",
970
1158
  {
971
- "className": "py-12",
972
1159
  "gap": "md",
1160
+ "align": "center",
1161
+ "className": "py-12",
973
1162
  "children": [
974
1163
  {
975
1164
  "type": "spinner"
976
1165
  },
977
1166
  {
978
- "content": "Loading ticket tiers…",
979
1167
  "variant": "caption",
980
- "type": "typography",
981
- "color": "muted"
1168
+ "color": "muted",
1169
+ "content": "Loading ticket tiers…",
1170
+ "type": "typography"
982
1171
  }
983
1172
  ],
984
1173
  "type": "stack",
985
- "align": "center",
986
1174
  "direction": "vertical"
987
1175
  }
988
1176
  ]
@@ -1003,8 +1191,8 @@
1003
1191
  "TicketTier",
1004
1192
  {
1005
1193
  "emit": {
1006
- "failure": "TicketTierLoadFailed",
1007
- "success": "TicketTierLoaded"
1194
+ "success": "TicketTierLoaded",
1195
+ "failure": "TicketTierLoadFailed"
1008
1196
  }
1009
1197
  }
1010
1198
  ],
@@ -1012,22 +1200,22 @@
1012
1200
  "render-ui",
1013
1201
  "main",
1014
1202
  {
1015
- "align": "center",
1016
1203
  "type": "stack",
1017
1204
  "direction": "vertical",
1205
+ "gap": "md",
1206
+ "align": "center",
1207
+ "className": "py-12",
1018
1208
  "children": [
1019
1209
  {
1020
1210
  "type": "spinner"
1021
1211
  },
1022
1212
  {
1023
- "type": "typography",
1213
+ "color": "muted",
1024
1214
  "variant": "caption",
1025
1215
  "content": "Updating tier…",
1026
- "color": "muted"
1216
+ "type": "typography"
1027
1217
  }
1028
- ],
1029
- "gap": "md",
1030
- "className": "py-12"
1218
+ ]
1031
1219
  }
1032
1220
  ]
1033
1221
  ]
@@ -1047,8 +1235,8 @@
1047
1235
  "TicketTier",
1048
1236
  {
1049
1237
  "emit": {
1050
- "failure": "TicketTierLoadFailed",
1051
- "success": "TicketTierLoaded"
1238
+ "success": "TicketTierLoaded",
1239
+ "failure": "TicketTierLoadFailed"
1052
1240
  }
1053
1241
  }
1054
1242
  ],
@@ -1056,6 +1244,9 @@
1056
1244
  "render-ui",
1057
1245
  "main",
1058
1246
  {
1247
+ "type": "stack",
1248
+ "gap": "md",
1249
+ "direction": "vertical",
1059
1250
  "align": "center",
1060
1251
  "className": "py-12",
1061
1252
  "children": [
@@ -1063,15 +1254,12 @@
1063
1254
  "type": "spinner"
1064
1255
  },
1065
1256
  {
1066
- "variant": "caption",
1067
- "content": "Selling tickets…",
1068
1257
  "type": "typography",
1069
- "color": "muted"
1258
+ "variant": "caption",
1259
+ "color": "muted",
1260
+ "content": "Selling tickets…"
1070
1261
  }
1071
- ],
1072
- "direction": "vertical",
1073
- "type": "stack",
1074
- "gap": "md"
1262
+ ]
1075
1263
  }
1076
1264
  ]
1077
1265
  ]
@@ -1100,22 +1288,22 @@
1100
1288
  "render-ui",
1101
1289
  "main",
1102
1290
  {
1103
- "className": "py-12",
1104
- "direction": "vertical",
1105
1291
  "gap": "md",
1106
- "align": "center",
1107
1292
  "children": [
1108
1293
  {
1109
1294
  "type": "spinner"
1110
1295
  },
1111
1296
  {
1112
- "type": "typography",
1113
1297
  "color": "muted",
1298
+ "type": "typography",
1114
1299
  "variant": "caption",
1115
1300
  "content": "Closing tier…"
1116
1301
  }
1117
1302
  ],
1118
- "type": "stack"
1303
+ "direction": "vertical",
1304
+ "align": "center",
1305
+ "type": "stack",
1306
+ "className": "py-12"
1119
1307
  }
1120
1308
  ]
1121
1309
  ]
@@ -1130,8 +1318,8 @@
1130
1318
  "TicketTier",
1131
1319
  {
1132
1320
  "emit": {
1133
- "success": "TicketTierLoaded",
1134
- "failure": "TicketTierLoadFailed"
1321
+ "failure": "TicketTierLoadFailed",
1322
+ "success": "TicketTierLoaded"
1135
1323
  }
1136
1324
  }
1137
1325
  ],
@@ -1148,6 +1336,20 @@
1148
1336
  ]
1149
1337
  },
1150
1338
  "config": {
1339
+ "coursingEnabled": {
1340
+ "type": "boolean",
1341
+ "default": false,
1342
+ "label": "Coursing enabled",
1343
+ "description": "Track ordered courses when tier purchases include meals.",
1344
+ "tier": "customization"
1345
+ },
1346
+ "lateFeeAmount": {
1347
+ "type": "number",
1348
+ "default": 0.0,
1349
+ "label": "Late fee amount",
1350
+ "description": "Flat cash amount or percentage (per lateFeePolicy).",
1351
+ "tier": "customization"
1352
+ },
1151
1353
  "title": {
1152
1354
  "type": "string",
1153
1355
  "default": "Ticket Tiers",
@@ -1155,23 +1357,42 @@
1155
1357
  "description": "Heading shown above the ticket pricing tiers",
1156
1358
  "tier": "customization"
1157
1359
  },
1360
+ "complianceJurisdiction": {
1361
+ "type": "string",
1362
+ "default": "",
1363
+ "label": "Compliance jurisdiction",
1364
+ "description": "Drives ticket-tax + reporting rules per locale ('US-CA', 'EU-DE', …). v1.2 declarative.",
1365
+ "tier": "advanced"
1366
+ },
1367
+ "lateFeePolicy": {
1368
+ "type": "string",
1369
+ "default": "none",
1370
+ "label": "Late fee policy",
1371
+ "description": "Penalty applied to late ticket purchases. v1.2 declarative.",
1372
+ "tier": "customization",
1373
+ "values": [
1374
+ "none",
1375
+ "flat",
1376
+ "percent"
1377
+ ]
1378
+ },
1158
1379
  "fields": {
1159
1380
  "type": "[FieldSpec]",
1160
1381
  "default": [
1161
1382
  {
1162
- "name": "name",
1163
1383
  "label": "Tier",
1164
- "variant": "badge"
1384
+ "variant": "badge",
1385
+ "name": "name"
1165
1386
  },
1166
1387
  {
1167
- "name": "price",
1168
1388
  "variant": "caption",
1389
+ "name": "price",
1169
1390
  "label": "Price"
1170
1391
  },
1171
1392
  {
1172
- "name": "currency",
1393
+ "variant": "badge",
1173
1394
  "label": "Currency",
1174
- "variant": "badge"
1395
+ "name": "currency"
1175
1396
  },
1176
1397
  {
1177
1398
  "variant": "caption",
@@ -1179,8 +1400,8 @@
1179
1400
  "label": "Total"
1180
1401
  },
1181
1402
  {
1182
- "label": "Sold",
1183
1403
  "variant": "caption",
1404
+ "label": "Sold",
1184
1405
  "name": "quantitySold"
1185
1406
  },
1186
1407
  {
@@ -1210,13 +1431,13 @@
1210
1431
  "type": "string",
1211
1432
  "required": false
1212
1433
  },
1213
- "header": {
1214
- "name": "header",
1434
+ "key": {
1435
+ "name": "key",
1215
1436
  "type": "string",
1216
1437
  "required": false
1217
1438
  },
1218
- "key": {
1219
- "name": "key",
1439
+ "header": {
1440
+ "name": "header",
1220
1441
  "type": "string",
1221
1442
  "required": false
1222
1443
  },
@@ -1244,9 +1465,9 @@
1244
1465
  },
1245
1466
  {
1246
1467
  "variant": "danger",
1247
- "icon": "x",
1468
+ "label": "Close",
1248
1469
  "event": "CLOSE",
1249
- "label": "Close"
1470
+ "icon": "x"
1250
1471
  }
1251
1472
  ],
1252
1473
  "label": "Row actions",
@@ -1260,8 +1481,8 @@
1260
1481
  "type": "string",
1261
1482
  "required": true
1262
1483
  },
1263
- "variant": {
1264
- "name": "variant",
1484
+ "icon": {
1485
+ "name": "icon",
1265
1486
  "type": "string",
1266
1487
  "required": false
1267
1488
  },
@@ -1270,13 +1491,105 @@
1270
1491
  "type": "string",
1271
1492
  "required": true
1272
1493
  },
1273
- "icon": {
1274
- "name": "icon",
1494
+ "variant": {
1495
+ "name": "variant",
1275
1496
  "type": "string",
1276
1497
  "required": false
1277
1498
  }
1278
1499
  }
1279
1500
  }
1501
+ },
1502
+ "taxStrategy": {
1503
+ "type": "string",
1504
+ "default": "exclusive",
1505
+ "label": "Tax strategy",
1506
+ "description": "How tax is applied to tier prices: inclusive / exclusive / none.",
1507
+ "tier": "customization",
1508
+ "values": [
1509
+ "inclusive",
1510
+ "exclusive",
1511
+ "none"
1512
+ ]
1513
+ },
1514
+ "tipPresets": {
1515
+ "type": "[number]",
1516
+ "default": [
1517
+ 0.0
1518
+ ],
1519
+ "label": "Tip presets (%)",
1520
+ "description": "Tip percentages exposed at ticket checkout (often 0 for events).",
1521
+ "tier": "customization",
1522
+ "items": {
1523
+ "type": "number"
1524
+ }
1525
+ },
1526
+ "gracePeriodDays": {
1527
+ "type": "number",
1528
+ "default": 0.0,
1529
+ "label": "Grace period (days)",
1530
+ "description": "Days after availability ends before the tier flips to closed.",
1531
+ "tier": "customization"
1532
+ },
1533
+ "allowSplitChecks": {
1534
+ "type": "boolean",
1535
+ "default": false,
1536
+ "label": "Allow split checks",
1537
+ "description": "Permit splitting a multi-ticket order across multiple payments.",
1538
+ "tier": "customization"
1539
+ },
1540
+ "roundingMode": {
1541
+ "type": "string",
1542
+ "default": "half-up",
1543
+ "label": "Rounding mode",
1544
+ "description": "Sub-cent rounding behavior on totals.",
1545
+ "tier": "advanced",
1546
+ "values": [
1547
+ "bankers",
1548
+ "half-up",
1549
+ "down"
1550
+ ]
1551
+ },
1552
+ "serviceCharge": {
1553
+ "type": "number",
1554
+ "default": 0.0,
1555
+ "label": "Service charge (%)",
1556
+ "description": "Service-charge percentage applied to tier purchases.",
1557
+ "tier": "customization"
1558
+ },
1559
+ "currency": {
1560
+ "type": "string",
1561
+ "default": "USD",
1562
+ "label": "Default currency",
1563
+ "description": "ISO 4217 currency code (USD, EUR, GBP, …) for new tier rows.",
1564
+ "tier": "essential"
1565
+ },
1566
+ "retentionYears": {
1567
+ "type": "number",
1568
+ "default": 7.0,
1569
+ "label": "Retention (years)",
1570
+ "description": "Years to keep ticket-tier records for accounting compliance.",
1571
+ "tier": "advanced"
1572
+ },
1573
+ "kitchenAutoFire": {
1574
+ "type": "boolean",
1575
+ "default": false,
1576
+ "label": "Kitchen auto-fire",
1577
+ "description": "Auto-fire concession orders bound to ticket tiers.",
1578
+ "tier": "customization"
1579
+ },
1580
+ "tableTurnoverTargetMinutes": {
1581
+ "type": "number",
1582
+ "default": 60.0,
1583
+ "label": "Table turnover target (min)",
1584
+ "description": "Used for seated/VIP tier pacing. v1.2 declarative.",
1585
+ "tier": "advanced"
1586
+ },
1587
+ "allergenWarningsEnabled": {
1588
+ "type": "boolean",
1589
+ "default": true,
1590
+ "label": "Allergen warnings",
1591
+ "description": "Surface allergen warnings on bundled food/drink items.",
1592
+ "tier": "customization"
1280
1593
  }
1281
1594
  },
1282
1595
  "scope": "collection"
@@ -1295,4 +1608,4 @@
1295
1608
  ]
1296
1609
  }
1297
1610
  ]
1298
- }
1611
+ }