@almadar/std 14.24.0 → 14.25.0

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 (411) hide show
  1. package/behaviors/registry/agent/atoms/std-agent-activity-log.orb +75 -75
  2. package/behaviors/registry/agent/atoms/std-agent-chat-thread.orb +109 -109
  3. package/behaviors/registry/agent/atoms/std-agent-classifier.orb +107 -107
  4. package/behaviors/registry/agent/atoms/std-agent-completion.orb +103 -103
  5. package/behaviors/registry/agent/atoms/std-agent-context-window.orb +392 -392
  6. package/behaviors/registry/agent/atoms/std-agent-conversation.orb +99 -99
  7. package/behaviors/registry/agent/atoms/std-agent-memory.orb +79 -79
  8. package/behaviors/registry/agent/atoms/std-agent-provider.orb +126 -126
  9. package/behaviors/registry/agent/atoms/std-agent-search.orb +75 -75
  10. package/behaviors/registry/agent/atoms/std-agent-session.orb +123 -123
  11. package/behaviors/registry/agent/atoms/std-agent-step-progress.orb +200 -200
  12. package/behaviors/registry/agent/atoms/std-agent-token-gauge.orb +368 -368
  13. package/behaviors/registry/agent/atoms/std-agent-tool-call.orb +66 -66
  14. package/behaviors/registry/agent/molecules/std-agent-fix-loop.orb +197 -197
  15. package/behaviors/registry/agent/molecules/std-agent-learner.orb +193 -193
  16. package/behaviors/registry/agent/molecules/std-agent-planner.orb +131 -131
  17. package/behaviors/registry/agent/molecules/std-agent-rag.orb +116 -116
  18. package/behaviors/registry/agent/molecules/std-agent-tool-loop.orb +198 -198
  19. package/behaviors/registry/agent/organisms/std-agent-assistant.orb +1151 -1151
  20. package/behaviors/registry/agent/organisms/std-agent-builder.orb +3084 -3084
  21. package/behaviors/registry/agent/organisms/std-agent-pipeline.orb +2150 -2150
  22. package/behaviors/registry/agent/organisms/std-agent-reviewer.orb +1035 -1035
  23. package/behaviors/registry/agent/organisms/std-agent-tutor.orb +785 -785
  24. package/behaviors/registry/app/atoms/std-ap-bill.orb +84 -34
  25. package/behaviors/registry/app/atoms/std-applicant.orb +43 -43
  26. package/behaviors/registry/app/atoms/std-approval-request.orb +198 -81
  27. package/behaviors/registry/app/atoms/std-campaign-goal.orb +241 -34
  28. package/behaviors/registry/app/atoms/std-change-order.orb +106 -84
  29. package/behaviors/registry/app/atoms/std-chart-of-accounts.orb +104 -47
  30. package/behaviors/registry/app/atoms/std-checkin.orb +57 -57
  31. package/behaviors/registry/app/atoms/std-checkout-terminal.orb +276 -36
  32. package/behaviors/registry/app/atoms/std-class-roster.orb +60 -35
  33. package/behaviors/registry/app/atoms/std-class-session.orb +104 -47
  34. package/behaviors/registry/app/atoms/std-court-deadline.orb +126 -50
  35. package/behaviors/registry/app/atoms/std-customer-account.orb +122 -45
  36. package/behaviors/registry/app/atoms/std-donation-receipt.orb +70 -48
  37. package/behaviors/registry/app/atoms/std-donor.orb +107 -34
  38. package/behaviors/registry/app/atoms/std-drip-sequence.orb +66 -40
  39. package/behaviors/registry/app/atoms/std-driver.orb +98 -86
  40. package/behaviors/registry/app/atoms/std-dunning.orb +181 -45
  41. package/behaviors/registry/app/atoms/std-email-broadcast.orb +46 -46
  42. package/behaviors/registry/app/atoms/std-event.orb +60 -60
  43. package/behaviors/registry/app/atoms/std-health-score.orb +285 -75
  44. package/behaviors/registry/app/atoms/std-help-article.orb +217 -75
  45. package/behaviors/registry/app/atoms/std-help-category.orb +129 -88
  46. package/behaviors/registry/app/atoms/std-interview-slot.orb +44 -44
  47. package/behaviors/registry/app/atoms/std-invoice.orb +130 -112
  48. package/behaviors/registry/app/atoms/std-kitchen-display.orb +40 -40
  49. package/behaviors/registry/app/atoms/std-lease.orb +172 -44
  50. package/behaviors/registry/app/atoms/std-ledger-entry.orb +163 -32
  51. package/behaviors/registry/app/atoms/std-maintenance-request.orb +120 -40
  52. package/behaviors/registry/app/atoms/std-matter.orb +265 -46
  53. package/behaviors/registry/app/atoms/std-membership.orb +116 -58
  54. package/behaviors/registry/app/atoms/std-menu.orb +55 -55
  55. package/behaviors/registry/app/atoms/std-modifier-group.orb +61 -61
  56. package/behaviors/registry/app/atoms/std-nps-survey.orb +121 -97
  57. package/behaviors/registry/app/atoms/std-offer-letter.orb +45 -45
  58. package/behaviors/registry/app/atoms/std-payout-ledger.orb +71 -71
  59. package/behaviors/registry/app/atoms/std-question-bank.orb +53 -53
  60. package/behaviors/registry/app/atoms/std-receipt.orb +42 -42
  61. package/behaviors/registry/app/atoms/std-recurring-charge.orb +165 -63
  62. package/behaviors/registry/app/atoms/std-renewal-risk.orb +157 -78
  63. package/behaviors/registry/app/atoms/std-rent-charge.orb +13 -13
  64. package/behaviors/registry/app/atoms/std-reorder-rule.orb +46 -40
  65. package/behaviors/registry/app/atoms/std-response-collector.orb +41 -41
  66. package/behaviors/registry/app/atoms/std-rfi.orb +175 -120
  67. package/behaviors/registry/app/atoms/std-route-optimize.orb +41 -41
  68. package/behaviors/registry/app/atoms/std-segment.orb +90 -39
  69. package/behaviors/registry/app/atoms/std-stock-level.orb +116 -42
  70. package/behaviors/registry/app/atoms/std-submittal.orb +245 -106
  71. package/behaviors/registry/app/atoms/std-table-map.orb +41 -41
  72. package/behaviors/registry/app/atoms/std-technician-dispatch.orb +50 -50
  73. package/behaviors/registry/app/atoms/std-telematics-event.orb +115 -41
  74. package/behaviors/registry/app/atoms/std-template-editor.orb +86 -42
  75. package/behaviors/registry/app/atoms/std-tenant.orb +88 -38
  76. package/behaviors/registry/app/atoms/std-ticket-tier.orb +56 -56
  77. package/behaviors/registry/app/atoms/std-time-entry.orb +131 -78
  78. package/behaviors/registry/app/atoms/std-timesheet.orb +140 -97
  79. package/behaviors/registry/app/atoms/std-trial.orb +137 -61
  80. package/behaviors/registry/app/atoms/std-vehicle.orb +209 -84
  81. package/behaviors/registry/app/atoms/std-waitlist.orb +55 -55
  82. package/behaviors/registry/app/atoms/std-warehouse.orb +227 -38
  83. package/behaviors/registry/app/atoms/std-work-order.orb +50 -50
  84. package/behaviors/registry/app/molecules/std-applicant-form.orb +63 -63
  85. package/behaviors/registry/app/molecules/std-application.orb +137 -137
  86. package/behaviors/registry/app/molecules/std-broadcast-builder.orb +190 -58
  87. package/behaviors/registry/app/molecules/std-cart.orb +51 -51
  88. package/behaviors/registry/app/molecules/std-form-builder.orb +81 -81
  89. package/behaviors/registry/app/molecules/std-ledger-entry-form.orb +125 -52
  90. package/behaviors/registry/app/molecules/std-stock-adjustment.orb +97 -64
  91. package/behaviors/registry/app/molecules/std-vendor-onboarding.orb +282 -282
  92. package/behaviors/registry/app/organisms/std-accounting.orb +103 -103
  93. package/behaviors/registry/app/organisms/std-api-gateway.orb +202 -202
  94. package/behaviors/registry/app/organisms/std-ats-recruiting.orb +152 -152
  95. package/behaviors/registry/app/organisms/std-booking-system.orb +694 -694
  96. package/behaviors/registry/app/organisms/std-cicd-pipeline.orb +305 -305
  97. package/behaviors/registry/app/organisms/std-cms.orb +252 -252
  98. package/behaviors/registry/app/organisms/std-coding-academy.orb +223 -223
  99. package/behaviors/registry/app/organisms/std-construction-pm.orb +729 -96
  100. package/behaviors/registry/app/organisms/std-crm.orb +274 -274
  101. package/behaviors/registry/app/organisms/std-customer-success.orb +103 -103
  102. package/behaviors/registry/app/organisms/std-devops-dashboard.orb +423 -423
  103. package/behaviors/registry/app/organisms/std-document-mgmt.orb +100 -100
  104. package/behaviors/registry/app/organisms/std-ecommerce.orb +700 -700
  105. package/behaviors/registry/app/organisms/std-event-ticketing.orb +192 -192
  106. package/behaviors/registry/app/organisms/std-field-service.orb +171 -171
  107. package/behaviors/registry/app/organisms/std-finance-tracker.orb +211 -211
  108. package/behaviors/registry/app/organisms/std-fitness-studio.orb +144 -144
  109. package/behaviors/registry/app/organisms/std-fleet-mgmt.orb +739 -90
  110. package/behaviors/registry/app/organisms/std-forum.orb +142 -142
  111. package/behaviors/registry/app/organisms/std-healthcare.orb +595 -595
  112. package/behaviors/registry/app/organisms/std-helpdesk.orb +199 -199
  113. package/behaviors/registry/app/organisms/std-hr-portal.orb +446 -446
  114. package/behaviors/registry/app/organisms/std-inventory.orb +899 -97
  115. package/behaviors/registry/app/organisms/std-iot-dashboard.orb +392 -392
  116. package/behaviors/registry/app/organisms/std-legal-case.orb +344 -118
  117. package/behaviors/registry/app/organisms/std-listings.orb +151 -151
  118. package/behaviors/registry/app/organisms/std-lms.orb +409 -409
  119. package/behaviors/registry/app/organisms/std-marketing-campaign.orb +144 -144
  120. package/behaviors/registry/app/organisms/std-marketplace.orb +228 -228
  121. package/behaviors/registry/app/organisms/std-nonprofit-donations.orb +93 -93
  122. package/behaviors/registry/app/organisms/std-notes.orb +289 -78
  123. package/behaviors/registry/app/organisms/std-project-manager.orb +205 -205
  124. package/behaviors/registry/app/organisms/std-property-mgmt.orb +929 -103
  125. package/behaviors/registry/app/organisms/std-public-help-center.orb +501 -87
  126. package/behaviors/registry/app/organisms/std-realtime-chat.orb +255 -255
  127. package/behaviors/registry/app/organisms/std-restaurant-pos.orb +137 -137
  128. package/behaviors/registry/app/organisms/std-retail-pos.orb +129 -129
  129. package/behaviors/registry/app/organisms/std-social-feed.orb +142 -142
  130. package/behaviors/registry/app/organisms/std-subscription-billing.orb +214 -214
  131. package/behaviors/registry/app/organisms/std-survey.orb +138 -138
  132. package/behaviors/registry/app/organisms/std-time-tracking.orb +966 -90
  133. package/behaviors/registry/app/organisms/std-trading-dashboard.orb +264 -264
  134. package/behaviors/registry/app/organisms/std-wiki.orb +130 -130
  135. package/behaviors/registry/core/atoms/std-billable-hour.orb +89 -32
  136. package/behaviors/registry/core/atoms/std-branching-logic.orb +84 -84
  137. package/behaviors/registry/core/atoms/std-browse.orb +60 -60
  138. package/behaviors/registry/core/atoms/std-cache-aside.orb +99 -99
  139. package/behaviors/registry/core/atoms/std-calendar.orb +53 -53
  140. package/behaviors/registry/core/atoms/std-circuit-breaker.orb +181 -181
  141. package/behaviors/registry/core/atoms/std-confirmation.orb +33 -33
  142. package/behaviors/registry/core/atoms/std-display.orb +3 -3
  143. package/behaviors/registry/core/atoms/std-drawer.orb +13 -13
  144. package/behaviors/registry/core/atoms/std-esign-request.orb +62 -43
  145. package/behaviors/registry/core/atoms/std-file-store.orb +171 -36
  146. package/behaviors/registry/core/atoms/std-filter.orb +9 -9
  147. package/behaviors/registry/core/atoms/std-flag.orb +87 -87
  148. package/behaviors/registry/core/atoms/std-gallery.orb +44 -44
  149. package/behaviors/registry/core/atoms/std-geosearch.orb +25 -25
  150. package/behaviors/registry/core/atoms/std-graphs.orb +34 -34
  151. package/behaviors/registry/core/atoms/std-image-upload-multi.orb +59 -59
  152. package/behaviors/registry/core/atoms/std-mod-queue.orb +42 -42
  153. package/behaviors/registry/core/atoms/std-modal.orb +17 -17
  154. package/behaviors/registry/core/atoms/std-page-tree.orb +121 -49
  155. package/behaviors/registry/core/atoms/std-pagination.orb +12 -12
  156. package/behaviors/registry/core/atoms/std-push.orb +43 -43
  157. package/behaviors/registry/core/atoms/std-rate-limiter.orb +185 -185
  158. package/behaviors/registry/core/atoms/std-rating-review.orb +63 -63
  159. package/behaviors/registry/core/atoms/std-related.orb +36 -36
  160. package/behaviors/registry/core/atoms/std-rich-editor.orb +204 -59
  161. package/behaviors/registry/core/atoms/std-saved-search.orb +65 -65
  162. package/behaviors/registry/core/atoms/std-search.orb +5 -5
  163. package/behaviors/registry/core/atoms/std-selection.orb +106 -106
  164. package/behaviors/registry/core/atoms/std-signature-capture.orb +84 -84
  165. package/behaviors/registry/core/atoms/std-stats.orb +140 -140
  166. package/behaviors/registry/core/atoms/std-tabs.orb +34 -34
  167. package/behaviors/registry/core/atoms/std-tag-taxonomy.orb +73 -73
  168. package/behaviors/registry/core/atoms/std-thread.orb +50 -50
  169. package/behaviors/registry/core/atoms/std-version-history.orb +70 -70
  170. package/behaviors/registry/core/atoms/std-vote.orb +39 -39
  171. package/behaviors/registry/core/molecules/std-app-layout.orb +20 -20
  172. package/behaviors/registry/core/molecules/std-dashboard-grid-layout.orb +12 -12
  173. package/behaviors/registry/core/molecules/std-dashboard.orb +43 -43
  174. package/behaviors/registry/core/molecules/std-esign-flow.orb +152 -51
  175. package/behaviors/registry/core/molecules/std-filtered-list.orb +25 -25
  176. package/behaviors/registry/core/molecules/std-form-advanced.orb +143 -143
  177. package/behaviors/registry/core/molecules/std-list.orb +55 -55
  178. package/behaviors/registry/core/molecules/std-master-detail-layout.orb +15 -15
  179. package/behaviors/registry/core/molecules/std-stack-layout.orb +14 -14
  180. package/behaviors/registry/core/molecules/std-tabs-layout.orb +10 -10
  181. package/behaviors/registry/core/molecules/std-wizard-form.orb +129 -129
  182. package/behaviors/registry/core/organisms/std-generic-app.orb +541 -541
  183. package/behaviors/registry/game/atoms/std-dialogue-box.orb +21 -21
  184. package/behaviors/registry/game/atoms/std-game-canvas2d.orb +50 -50
  185. package/behaviors/registry/game/atoms/std-overworld.orb +62 -62
  186. package/behaviors/registry/game/atoms/std-physics2d.orb +73 -73
  187. package/behaviors/registry/game/atoms/std-quest.orb +122 -122
  188. package/behaviors/registry/game/atoms/std-timer.orb +292 -292
  189. package/behaviors/registry/probes/molecules/std-source-scope-probe.orb +37 -37
  190. package/behaviors/registry/service/atoms/std-service-calendar-ical.orb +55 -55
  191. package/behaviors/registry/service/atoms/std-service-custom-bearer.orb +61 -61
  192. package/behaviors/registry/service/atoms/std-service-email.orb +60 -60
  193. package/behaviors/registry/service/atoms/std-service-github.orb +61 -61
  194. package/behaviors/registry/service/atoms/std-service-llm.orb +63 -63
  195. package/behaviors/registry/service/atoms/std-service-maps.orb +68 -68
  196. package/behaviors/registry/service/atoms/std-service-oauth.orb +59 -59
  197. package/behaviors/registry/service/atoms/std-service-print.orb +113 -113
  198. package/behaviors/registry/service/atoms/std-service-redis.orb +50 -50
  199. package/behaviors/registry/service/atoms/std-service-storage.orb +49 -49
  200. package/behaviors/registry/service/atoms/std-service-stripe.orb +108 -108
  201. package/behaviors/registry/service/atoms/std-service-twilio.orb +61 -61
  202. package/behaviors/registry/service/atoms/std-service-youtube.orb +41 -41
  203. package/behaviors/registry/service/organisms/std-service-marketplace.orb +985 -985
  204. package/behaviors/registry/service/organisms/std-service-research-assistant.orb +921 -921
  205. package/dist/behaviors/behaviors-registry.json +4 -684
  206. package/dist/behaviors/registry/agent/atoms/std-agent-activity-log.orb +75 -75
  207. package/dist/behaviors/registry/agent/atoms/std-agent-chat-thread.orb +109 -109
  208. package/dist/behaviors/registry/agent/atoms/std-agent-classifier.orb +107 -107
  209. package/dist/behaviors/registry/agent/atoms/std-agent-completion.orb +103 -103
  210. package/dist/behaviors/registry/agent/atoms/std-agent-context-window.orb +392 -392
  211. package/dist/behaviors/registry/agent/atoms/std-agent-conversation.orb +99 -99
  212. package/dist/behaviors/registry/agent/atoms/std-agent-memory.orb +79 -79
  213. package/dist/behaviors/registry/agent/atoms/std-agent-provider.orb +126 -126
  214. package/dist/behaviors/registry/agent/atoms/std-agent-search.orb +75 -75
  215. package/dist/behaviors/registry/agent/atoms/std-agent-session.orb +123 -123
  216. package/dist/behaviors/registry/agent/atoms/std-agent-step-progress.orb +200 -200
  217. package/dist/behaviors/registry/agent/atoms/std-agent-token-gauge.orb +368 -368
  218. package/dist/behaviors/registry/agent/atoms/std-agent-tool-call.orb +66 -66
  219. package/dist/behaviors/registry/agent/molecules/std-agent-fix-loop.orb +197 -197
  220. package/dist/behaviors/registry/agent/molecules/std-agent-learner.orb +193 -193
  221. package/dist/behaviors/registry/agent/molecules/std-agent-planner.orb +131 -131
  222. package/dist/behaviors/registry/agent/molecules/std-agent-rag.orb +116 -116
  223. package/dist/behaviors/registry/agent/molecules/std-agent-tool-loop.orb +198 -198
  224. package/dist/behaviors/registry/agent/organisms/std-agent-assistant.orb +1151 -1151
  225. package/dist/behaviors/registry/agent/organisms/std-agent-builder.orb +3084 -3084
  226. package/dist/behaviors/registry/agent/organisms/std-agent-pipeline.orb +2150 -2150
  227. package/dist/behaviors/registry/agent/organisms/std-agent-reviewer.orb +1035 -1035
  228. package/dist/behaviors/registry/agent/organisms/std-agent-tutor.orb +785 -785
  229. package/dist/behaviors/registry/app/atoms/std-ap-bill.orb +84 -34
  230. package/dist/behaviors/registry/app/atoms/std-applicant.orb +43 -43
  231. package/dist/behaviors/registry/app/atoms/std-approval-request.orb +198 -81
  232. package/dist/behaviors/registry/app/atoms/std-campaign-goal.orb +241 -34
  233. package/dist/behaviors/registry/app/atoms/std-change-order.orb +106 -84
  234. package/dist/behaviors/registry/app/atoms/std-chart-of-accounts.orb +104 -47
  235. package/dist/behaviors/registry/app/atoms/std-checkin.orb +57 -57
  236. package/dist/behaviors/registry/app/atoms/std-checkout-terminal.orb +276 -36
  237. package/dist/behaviors/registry/app/atoms/std-class-roster.orb +60 -35
  238. package/dist/behaviors/registry/app/atoms/std-class-session.orb +104 -47
  239. package/dist/behaviors/registry/app/atoms/std-court-deadline.orb +126 -50
  240. package/dist/behaviors/registry/app/atoms/std-customer-account.orb +122 -45
  241. package/dist/behaviors/registry/app/atoms/std-donation-receipt.orb +70 -48
  242. package/dist/behaviors/registry/app/atoms/std-donor.orb +107 -34
  243. package/dist/behaviors/registry/app/atoms/std-drip-sequence.orb +66 -40
  244. package/dist/behaviors/registry/app/atoms/std-driver.orb +98 -86
  245. package/dist/behaviors/registry/app/atoms/std-dunning.orb +181 -45
  246. package/dist/behaviors/registry/app/atoms/std-email-broadcast.orb +46 -46
  247. package/dist/behaviors/registry/app/atoms/std-event.orb +60 -60
  248. package/dist/behaviors/registry/app/atoms/std-health-score.orb +285 -75
  249. package/dist/behaviors/registry/app/atoms/std-help-article.orb +217 -75
  250. package/dist/behaviors/registry/app/atoms/std-help-category.orb +129 -88
  251. package/dist/behaviors/registry/app/atoms/std-interview-slot.orb +44 -44
  252. package/dist/behaviors/registry/app/atoms/std-invoice.orb +130 -112
  253. package/dist/behaviors/registry/app/atoms/std-kitchen-display.orb +40 -40
  254. package/dist/behaviors/registry/app/atoms/std-lease.orb +172 -44
  255. package/dist/behaviors/registry/app/atoms/std-ledger-entry.orb +163 -32
  256. package/dist/behaviors/registry/app/atoms/std-maintenance-request.orb +120 -40
  257. package/dist/behaviors/registry/app/atoms/std-matter.orb +265 -46
  258. package/dist/behaviors/registry/app/atoms/std-membership.orb +116 -58
  259. package/dist/behaviors/registry/app/atoms/std-menu.orb +55 -55
  260. package/dist/behaviors/registry/app/atoms/std-modifier-group.orb +61 -61
  261. package/dist/behaviors/registry/app/atoms/std-nps-survey.orb +121 -97
  262. package/dist/behaviors/registry/app/atoms/std-offer-letter.orb +45 -45
  263. package/dist/behaviors/registry/app/atoms/std-payout-ledger.orb +71 -71
  264. package/dist/behaviors/registry/app/atoms/std-question-bank.orb +53 -53
  265. package/dist/behaviors/registry/app/atoms/std-receipt.orb +42 -42
  266. package/dist/behaviors/registry/app/atoms/std-recurring-charge.orb +165 -63
  267. package/dist/behaviors/registry/app/atoms/std-renewal-risk.orb +157 -78
  268. package/dist/behaviors/registry/app/atoms/std-rent-charge.orb +13 -13
  269. package/dist/behaviors/registry/app/atoms/std-reorder-rule.orb +46 -40
  270. package/dist/behaviors/registry/app/atoms/std-response-collector.orb +41 -41
  271. package/dist/behaviors/registry/app/atoms/std-rfi.orb +175 -120
  272. package/dist/behaviors/registry/app/atoms/std-route-optimize.orb +41 -41
  273. package/dist/behaviors/registry/app/atoms/std-segment.orb +90 -39
  274. package/dist/behaviors/registry/app/atoms/std-stock-level.orb +116 -42
  275. package/dist/behaviors/registry/app/atoms/std-submittal.orb +245 -106
  276. package/dist/behaviors/registry/app/atoms/std-table-map.orb +41 -41
  277. package/dist/behaviors/registry/app/atoms/std-technician-dispatch.orb +50 -50
  278. package/dist/behaviors/registry/app/atoms/std-telematics-event.orb +115 -41
  279. package/dist/behaviors/registry/app/atoms/std-template-editor.orb +86 -42
  280. package/dist/behaviors/registry/app/atoms/std-tenant.orb +88 -38
  281. package/dist/behaviors/registry/app/atoms/std-ticket-tier.orb +56 -56
  282. package/dist/behaviors/registry/app/atoms/std-time-entry.orb +131 -78
  283. package/dist/behaviors/registry/app/atoms/std-timesheet.orb +140 -97
  284. package/dist/behaviors/registry/app/atoms/std-trial.orb +137 -61
  285. package/dist/behaviors/registry/app/atoms/std-vehicle.orb +209 -84
  286. package/dist/behaviors/registry/app/atoms/std-waitlist.orb +55 -55
  287. package/dist/behaviors/registry/app/atoms/std-warehouse.orb +227 -38
  288. package/dist/behaviors/registry/app/atoms/std-work-order.orb +50 -50
  289. package/dist/behaviors/registry/app/molecules/std-applicant-form.orb +63 -63
  290. package/dist/behaviors/registry/app/molecules/std-application.orb +137 -137
  291. package/dist/behaviors/registry/app/molecules/std-broadcast-builder.orb +190 -58
  292. package/dist/behaviors/registry/app/molecules/std-cart.orb +51 -51
  293. package/dist/behaviors/registry/app/molecules/std-form-builder.orb +81 -81
  294. package/dist/behaviors/registry/app/molecules/std-ledger-entry-form.orb +125 -52
  295. package/dist/behaviors/registry/app/molecules/std-stock-adjustment.orb +97 -64
  296. package/dist/behaviors/registry/app/molecules/std-vendor-onboarding.orb +282 -282
  297. package/dist/behaviors/registry/app/organisms/std-accounting.orb +103 -103
  298. package/dist/behaviors/registry/app/organisms/std-api-gateway.orb +202 -202
  299. package/dist/behaviors/registry/app/organisms/std-ats-recruiting.orb +152 -152
  300. package/dist/behaviors/registry/app/organisms/std-booking-system.orb +694 -694
  301. package/dist/behaviors/registry/app/organisms/std-cicd-pipeline.orb +305 -305
  302. package/dist/behaviors/registry/app/organisms/std-cms.orb +252 -252
  303. package/dist/behaviors/registry/app/organisms/std-coding-academy.orb +223 -223
  304. package/dist/behaviors/registry/app/organisms/std-construction-pm.orb +729 -96
  305. package/dist/behaviors/registry/app/organisms/std-crm.orb +274 -274
  306. package/dist/behaviors/registry/app/organisms/std-customer-success.orb +103 -103
  307. package/dist/behaviors/registry/app/organisms/std-devops-dashboard.orb +423 -423
  308. package/dist/behaviors/registry/app/organisms/std-document-mgmt.orb +100 -100
  309. package/dist/behaviors/registry/app/organisms/std-ecommerce.orb +700 -700
  310. package/dist/behaviors/registry/app/organisms/std-event-ticketing.orb +192 -192
  311. package/dist/behaviors/registry/app/organisms/std-field-service.orb +171 -171
  312. package/dist/behaviors/registry/app/organisms/std-finance-tracker.orb +211 -211
  313. package/dist/behaviors/registry/app/organisms/std-fitness-studio.orb +144 -144
  314. package/dist/behaviors/registry/app/organisms/std-fleet-mgmt.orb +739 -90
  315. package/dist/behaviors/registry/app/organisms/std-forum.orb +142 -142
  316. package/dist/behaviors/registry/app/organisms/std-healthcare.orb +595 -595
  317. package/dist/behaviors/registry/app/organisms/std-helpdesk.orb +199 -199
  318. package/dist/behaviors/registry/app/organisms/std-hr-portal.orb +446 -446
  319. package/dist/behaviors/registry/app/organisms/std-inventory.orb +899 -97
  320. package/dist/behaviors/registry/app/organisms/std-iot-dashboard.orb +392 -392
  321. package/dist/behaviors/registry/app/organisms/std-legal-case.orb +344 -118
  322. package/dist/behaviors/registry/app/organisms/std-listings.orb +151 -151
  323. package/dist/behaviors/registry/app/organisms/std-lms.orb +409 -409
  324. package/dist/behaviors/registry/app/organisms/std-marketing-campaign.orb +144 -144
  325. package/dist/behaviors/registry/app/organisms/std-marketplace.orb +228 -228
  326. package/dist/behaviors/registry/app/organisms/std-nonprofit-donations.orb +93 -93
  327. package/dist/behaviors/registry/app/organisms/std-notes.orb +289 -78
  328. package/dist/behaviors/registry/app/organisms/std-project-manager.orb +205 -205
  329. package/dist/behaviors/registry/app/organisms/std-property-mgmt.orb +929 -103
  330. package/dist/behaviors/registry/app/organisms/std-public-help-center.orb +501 -87
  331. package/dist/behaviors/registry/app/organisms/std-realtime-chat.orb +255 -255
  332. package/dist/behaviors/registry/app/organisms/std-restaurant-pos.orb +137 -137
  333. package/dist/behaviors/registry/app/organisms/std-retail-pos.orb +129 -129
  334. package/dist/behaviors/registry/app/organisms/std-social-feed.orb +142 -142
  335. package/dist/behaviors/registry/app/organisms/std-subscription-billing.orb +214 -214
  336. package/dist/behaviors/registry/app/organisms/std-survey.orb +138 -138
  337. package/dist/behaviors/registry/app/organisms/std-time-tracking.orb +966 -90
  338. package/dist/behaviors/registry/app/organisms/std-trading-dashboard.orb +264 -264
  339. package/dist/behaviors/registry/app/organisms/std-wiki.orb +130 -130
  340. package/dist/behaviors/registry/core/atoms/std-billable-hour.orb +89 -32
  341. package/dist/behaviors/registry/core/atoms/std-branching-logic.orb +84 -84
  342. package/dist/behaviors/registry/core/atoms/std-browse.orb +60 -60
  343. package/dist/behaviors/registry/core/atoms/std-cache-aside.orb +99 -99
  344. package/dist/behaviors/registry/core/atoms/std-calendar.orb +53 -53
  345. package/dist/behaviors/registry/core/atoms/std-circuit-breaker.orb +181 -181
  346. package/dist/behaviors/registry/core/atoms/std-confirmation.orb +33 -33
  347. package/dist/behaviors/registry/core/atoms/std-display.orb +3 -3
  348. package/dist/behaviors/registry/core/atoms/std-drawer.orb +13 -13
  349. package/dist/behaviors/registry/core/atoms/std-esign-request.orb +62 -43
  350. package/dist/behaviors/registry/core/atoms/std-file-store.orb +171 -36
  351. package/dist/behaviors/registry/core/atoms/std-filter.orb +9 -9
  352. package/dist/behaviors/registry/core/atoms/std-flag.orb +87 -87
  353. package/dist/behaviors/registry/core/atoms/std-gallery.orb +44 -44
  354. package/dist/behaviors/registry/core/atoms/std-geosearch.orb +25 -25
  355. package/dist/behaviors/registry/core/atoms/std-graphs.orb +34 -34
  356. package/dist/behaviors/registry/core/atoms/std-image-upload-multi.orb +59 -59
  357. package/dist/behaviors/registry/core/atoms/std-mod-queue.orb +42 -42
  358. package/dist/behaviors/registry/core/atoms/std-modal.orb +17 -17
  359. package/dist/behaviors/registry/core/atoms/std-page-tree.orb +121 -49
  360. package/dist/behaviors/registry/core/atoms/std-pagination.orb +12 -12
  361. package/dist/behaviors/registry/core/atoms/std-push.orb +43 -43
  362. package/dist/behaviors/registry/core/atoms/std-rate-limiter.orb +185 -185
  363. package/dist/behaviors/registry/core/atoms/std-rating-review.orb +63 -63
  364. package/dist/behaviors/registry/core/atoms/std-related.orb +36 -36
  365. package/dist/behaviors/registry/core/atoms/std-rich-editor.orb +204 -59
  366. package/dist/behaviors/registry/core/atoms/std-saved-search.orb +65 -65
  367. package/dist/behaviors/registry/core/atoms/std-search.orb +5 -5
  368. package/dist/behaviors/registry/core/atoms/std-selection.orb +106 -106
  369. package/dist/behaviors/registry/core/atoms/std-signature-capture.orb +84 -84
  370. package/dist/behaviors/registry/core/atoms/std-stats.orb +140 -140
  371. package/dist/behaviors/registry/core/atoms/std-tabs.orb +34 -34
  372. package/dist/behaviors/registry/core/atoms/std-tag-taxonomy.orb +73 -73
  373. package/dist/behaviors/registry/core/atoms/std-thread.orb +50 -50
  374. package/dist/behaviors/registry/core/atoms/std-version-history.orb +70 -70
  375. package/dist/behaviors/registry/core/atoms/std-vote.orb +39 -39
  376. package/dist/behaviors/registry/core/molecules/std-app-layout.orb +20 -20
  377. package/dist/behaviors/registry/core/molecules/std-dashboard-grid-layout.orb +12 -12
  378. package/dist/behaviors/registry/core/molecules/std-dashboard.orb +43 -43
  379. package/dist/behaviors/registry/core/molecules/std-esign-flow.orb +152 -51
  380. package/dist/behaviors/registry/core/molecules/std-filtered-list.orb +25 -25
  381. package/dist/behaviors/registry/core/molecules/std-form-advanced.orb +143 -143
  382. package/dist/behaviors/registry/core/molecules/std-list.orb +55 -55
  383. package/dist/behaviors/registry/core/molecules/std-master-detail-layout.orb +15 -15
  384. package/dist/behaviors/registry/core/molecules/std-stack-layout.orb +14 -14
  385. package/dist/behaviors/registry/core/molecules/std-tabs-layout.orb +10 -10
  386. package/dist/behaviors/registry/core/molecules/std-wizard-form.orb +129 -129
  387. package/dist/behaviors/registry/core/organisms/std-generic-app.orb +541 -541
  388. package/dist/behaviors/registry/game/atoms/std-dialogue-box.orb +21 -21
  389. package/dist/behaviors/registry/game/atoms/std-game-canvas2d.orb +50 -50
  390. package/dist/behaviors/registry/game/atoms/std-overworld.orb +62 -62
  391. package/dist/behaviors/registry/game/atoms/std-physics2d.orb +73 -73
  392. package/dist/behaviors/registry/game/atoms/std-quest.orb +122 -122
  393. package/dist/behaviors/registry/game/atoms/std-timer.orb +292 -292
  394. package/dist/behaviors/registry/probes/molecules/std-source-scope-probe.orb +37 -37
  395. package/dist/behaviors/registry/service/atoms/std-service-calendar-ical.orb +55 -55
  396. package/dist/behaviors/registry/service/atoms/std-service-custom-bearer.orb +61 -61
  397. package/dist/behaviors/registry/service/atoms/std-service-email.orb +60 -60
  398. package/dist/behaviors/registry/service/atoms/std-service-github.orb +61 -61
  399. package/dist/behaviors/registry/service/atoms/std-service-llm.orb +63 -63
  400. package/dist/behaviors/registry/service/atoms/std-service-maps.orb +68 -68
  401. package/dist/behaviors/registry/service/atoms/std-service-oauth.orb +59 -59
  402. package/dist/behaviors/registry/service/atoms/std-service-print.orb +113 -113
  403. package/dist/behaviors/registry/service/atoms/std-service-redis.orb +50 -50
  404. package/dist/behaviors/registry/service/atoms/std-service-storage.orb +49 -49
  405. package/dist/behaviors/registry/service/atoms/std-service-stripe.orb +108 -108
  406. package/dist/behaviors/registry/service/atoms/std-service-twilio.orb +61 -61
  407. package/dist/behaviors/registry/service/atoms/std-service-youtube.orb +41 -41
  408. package/dist/behaviors/registry/service/organisms/std-service-marketplace.orb +985 -985
  409. package/dist/behaviors/registry/service/organisms/std-service-research-assistant.orb +921 -921
  410. package/dist/behaviors-registry.json +4 -684
  411. package/package.json +1 -1
@@ -86,6 +86,11 @@
86
86
  "ref": "AppShell.traits.AppLayout",
87
87
  "name": "BookingProviderAppLayout",
88
88
  "config": {
89
+ "contentTrait": "@trait.ProviderCatalog",
90
+ "notificationClickEvent": "BOOKING_NOTIFICATIONS_OPEN",
91
+ "notifications": [],
92
+ "searchEvent": "BOOKING_SEARCH",
93
+ "appName": "BookingSystemApp",
89
94
  "navItems": [
90
95
  {
91
96
  "label": "Providers",
@@ -94,8 +99,8 @@
94
99
  },
95
100
  {
96
101
  "href": "/book",
97
- "icon": "calendar-plus",
98
- "label": "Book"
102
+ "label": "Book",
103
+ "icon": "calendar-plus"
99
104
  },
100
105
  {
101
106
  "label": "Appointments",
@@ -103,16 +108,11 @@
103
108
  "icon": "calendar"
104
109
  },
105
110
  {
106
- "label": "Schedule",
107
111
  "href": "/schedule",
108
- "icon": "clock"
112
+ "icon": "clock",
113
+ "label": "Schedule"
109
114
  }
110
- ],
111
- "searchEvent": "BOOKING_SEARCH",
112
- "contentTrait": "@trait.ProviderCatalog",
113
- "notifications": [],
114
- "appName": "BookingSystemApp",
115
- "notificationClickEvent": "BOOKING_NOTIFICATIONS_OPEN"
115
+ ]
116
116
  },
117
117
  "events": {
118
118
  "SEARCH": "BOOKING_SEARCH",
@@ -199,57 +199,55 @@
199
199
  "render-ui",
200
200
  "main",
201
201
  {
202
- "direction": "vertical",
203
- "gap": "lg",
204
202
  "children": [
205
203
  {
204
+ "justify": "between",
206
205
  "align": "center",
206
+ "direction": "horizontal",
207
207
  "children": [
208
208
  {
209
209
  "align": "center",
210
- "type": "stack",
211
210
  "children": [
212
211
  {
213
212
  "name": "user",
214
213
  "type": "icon"
215
214
  },
216
215
  {
216
+ "type": "typography",
217
217
  "content": "Providers",
218
- "variant": "h2",
219
- "type": "typography"
218
+ "variant": "h2"
220
219
  }
221
220
  ],
221
+ "direction": "horizontal",
222
222
  "gap": "sm",
223
- "direction": "horizontal"
223
+ "type": "stack"
224
224
  },
225
225
  {
226
+ "type": "stack",
227
+ "gap": "sm",
226
228
  "direction": "horizontal",
227
229
  "children": [
228
230
  {
229
231
  "type": "button",
230
- "label": "Add Provider",
231
232
  "variant": "primary",
233
+ "icon": "plus",
232
234
  "action": "CREATE",
233
- "icon": "plus"
235
+ "label": "Add Provider"
234
236
  }
235
- ],
236
- "type": "stack",
237
- "gap": "sm"
237
+ ]
238
238
  }
239
239
  ],
240
- "direction": "horizontal",
241
- "type": "stack",
242
240
  "gap": "md",
243
- "justify": "between"
241
+ "type": "stack"
244
242
  },
245
243
  {
246
- "direction": "horizontal",
247
- "type": "stack",
248
- "gap": "md",
249
244
  "children": [
250
245
  "@trait.ProviderSearch",
251
246
  "@trait.ProviderFilter"
252
247
  ],
248
+ "gap": "md",
249
+ "direction": "horizontal",
250
+ "type": "stack",
253
251
  "align": "center"
254
252
  },
255
253
  {
@@ -262,6 +260,8 @@
262
260
  },
263
261
  "@trait.ProviderBrowseList"
264
262
  ],
263
+ "gap": "lg",
264
+ "direction": "vertical",
265
265
  "type": "stack"
266
266
  }
267
267
  ]
@@ -281,7 +281,6 @@
281
281
  "render-ui",
282
282
  "main",
283
283
  {
284
- "gap": "md",
285
284
  "className": "py-8",
286
285
  "children": [
287
286
  {
@@ -289,26 +288,27 @@
289
288
  "type": "icon"
290
289
  },
291
290
  {
291
+ "variant": "h3",
292
292
  "content": "No notifications",
293
- "type": "typography",
294
- "variant": "h3"
293
+ "type": "typography"
295
294
  },
296
295
  {
297
- "color": "muted",
298
296
  "variant": "caption",
297
+ "type": "typography",
299
298
  "content": "You're all caught up.",
300
- "type": "typography"
299
+ "color": "muted"
301
300
  },
302
301
  {
303
- "label": "Back to providers",
304
- "variant": "ghost",
302
+ "action": "INIT",
305
303
  "type": "button",
306
- "action": "INIT"
304
+ "label": "Back to providers",
305
+ "variant": "ghost"
307
306
  }
308
307
  ],
308
+ "gap": "md",
309
+ "align": "center",
309
310
  "type": "stack",
310
- "direction": "vertical",
311
- "align": "center"
311
+ "direction": "vertical"
312
312
  }
313
313
  ]
314
314
  ]
@@ -321,78 +321,78 @@
321
321
  "ref": "Search.traits.SearchResultSearch",
322
322
  "name": "ProviderSearch",
323
323
  "config": {
324
- "event": "SEARCH",
325
- "placeholder": "Search providers…"
324
+ "placeholder": "Search providers…",
325
+ "event": "SEARCH"
326
326
  }
327
327
  },
328
328
  {
329
329
  "ref": "Filter.traits.FilterTargetFilter",
330
330
  "name": "ProviderFilter",
331
331
  "config": {
332
+ "event": "FILTER",
332
333
  "filters": [
333
334
  {
334
335
  "field": "specialty",
335
336
  "label": "Specialty",
337
+ "filterType": "select",
336
338
  "options": [
337
339
  "general",
338
340
  "dental",
339
341
  "dermatology",
340
342
  "cardiology",
341
343
  "psychiatry"
342
- ],
343
- "filterType": "select"
344
+ ]
344
345
  },
345
346
  {
346
- "filterType": "range",
347
- "max": 5.0,
348
347
  "min": 0.0,
349
348
  "label": "Rating",
350
- "field": "rating"
349
+ "field": "rating",
350
+ "max": 5.0,
351
+ "filterType": "range"
351
352
  }
352
- ],
353
- "event": "FILTER"
353
+ ]
354
354
  }
355
355
  },
356
356
  {
357
357
  "ref": "Stats.traits.StatsItemStats",
358
358
  "name": "ProviderStats",
359
359
  "config": {
360
- "title": "Provider Overview",
361
360
  "metrics": [
362
361
  {
363
- "variant": "primary",
364
362
  "aggregation": "count",
365
- "label": "Total Providers",
366
363
  "icon": "users",
367
- "format": "number"
364
+ "format": "number",
365
+ "label": "Total Providers",
366
+ "variant": "primary"
368
367
  },
369
368
  {
370
- "aggregation": "count",
371
- "icon": "check-circle",
372
- "variant": "success",
373
369
  "filter": {
374
370
  "available": true
375
371
  },
372
+ "label": "Active",
376
373
  "format": "number",
377
- "label": "Active"
374
+ "aggregation": "count",
375
+ "icon": "check-circle",
376
+ "variant": "success"
378
377
  },
379
378
  {
380
- "aggregation": "avg",
381
- "icon": "star",
382
379
  "field": "rating",
383
380
  "label": "Avg Rating",
384
- "format": "number",
385
- "variant": "info"
381
+ "aggregation": "avg",
382
+ "variant": "info",
383
+ "icon": "star",
384
+ "format": "number"
386
385
  },
387
386
  {
388
- "format": "currency",
389
- "field": "hourlyRate",
390
- "aggregation": "avg",
391
387
  "label": "Avg Hourly Rate",
392
388
  "icon": "dollar-sign",
393
- "variant": "info"
389
+ "field": "hourlyRate",
390
+ "variant": "info",
391
+ "aggregation": "avg",
392
+ "format": "currency"
394
393
  }
395
- ]
394
+ ],
395
+ "title": "Provider Overview"
396
396
  },
397
397
  "listens": [
398
398
  {
@@ -412,8 +412,8 @@
412
412
  "chartType": "pie",
413
413
  "categoryField": "specialty",
414
414
  "subtitle": "Distribution across specialties",
415
- "title": "Providers by Specialty",
416
- "aggregation": "count"
415
+ "aggregation": "count",
416
+ "title": "Providers by Specialty"
417
417
  },
418
418
  "listens": [
419
419
  {
@@ -433,8 +433,8 @@
433
433
  "config": {
434
434
  "fields": [
435
435
  {
436
- "name": "name",
437
436
  "icon": "user",
437
+ "name": "name",
438
438
  "variant": "h3"
439
439
  },
440
440
  {
@@ -442,21 +442,21 @@
442
442
  "variant": "badge"
443
443
  },
444
444
  {
445
- "name": "rating",
446
445
  "variant": "body",
447
- "format": "number"
446
+ "format": "number",
447
+ "name": "rating"
448
448
  },
449
449
  {
450
- "format": "currency",
451
- "label": "Hourly Rate",
452
450
  "name": "hourlyRate",
453
- "variant": "h4"
451
+ "label": "Hourly Rate",
452
+ "variant": "h4",
453
+ "format": "currency"
454
454
  },
455
455
  {
456
- "format": "boolean",
457
- "name": "available",
456
+ "label": "Availability",
458
457
  "variant": "body",
459
- "label": "Availability"
458
+ "name": "available",
459
+ "format": "boolean"
460
460
  }
461
461
  ],
462
462
  "itemActions": [
@@ -466,8 +466,8 @@
466
466
  "variant": "ghost"
467
467
  },
468
468
  {
469
- "label": "Edit",
470
469
  "event": "EDIT",
470
+ "label": "Edit",
471
471
  "variant": "ghost"
472
472
  },
473
473
  {
@@ -476,8 +476,8 @@
476
476
  "event": "DELETE"
477
477
  }
478
478
  ],
479
- "cols": 2.0,
480
- "gap": "md"
479
+ "gap": "md",
480
+ "cols": 2.0
481
481
  },
482
482
  "listens": [
483
483
  {
@@ -696,8 +696,8 @@
696
696
  "Provider",
697
697
  {
698
698
  "emit": {
699
- "success": "ProviderLoaded",
700
- "failure": "ProviderLoadFailed"
699
+ "failure": "ProviderLoadFailed",
700
+ "success": "ProviderLoaded"
701
701
  }
702
702
  }
703
703
  ]
@@ -722,14 +722,10 @@
722
722
  "render-ui",
723
723
  "modal",
724
724
  {
725
- "gap": "md",
726
- "direction": "vertical",
727
725
  "type": "stack",
728
726
  "children": [
729
727
  {
730
- "gap": "sm",
731
728
  "type": "stack",
732
- "direction": "horizontal",
733
729
  "children": [
734
730
  {
735
731
  "name": "plus-circle",
@@ -737,17 +733,17 @@
737
733
  },
738
734
  {
739
735
  "content": "Add Provider",
740
- "variant": "h3",
741
- "type": "typography"
736
+ "type": "typography",
737
+ "variant": "h3"
742
738
  }
743
- ]
739
+ ],
740
+ "gap": "sm",
741
+ "direction": "horizontal"
744
742
  },
745
743
  {
746
744
  "type": "divider"
747
745
  },
748
746
  {
749
- "type": "form-section",
750
- "mode": "create",
751
747
  "fields": [
752
748
  "name",
753
749
  "specialty",
@@ -758,9 +754,13 @@
758
754
  "available"
759
755
  ],
760
756
  "submitEvent": "SAVE",
761
- "cancelEvent": "CLOSE"
757
+ "type": "form-section",
758
+ "cancelEvent": "CLOSE",
759
+ "mode": "create"
762
760
  }
763
- ]
761
+ ],
762
+ "direction": "vertical",
763
+ "gap": "md"
764
764
  }
765
765
  ]
766
766
  ]
@@ -1037,11 +1037,11 @@
1037
1037
  "fetch",
1038
1038
  "Provider",
1039
1039
  {
1040
- "id": "@payload.id",
1041
1040
  "emit": {
1042
1041
  "success": "ProviderLoaded",
1043
1042
  "failure": "ProviderLoadFailed"
1044
- }
1043
+ },
1044
+ "id": "@payload.id"
1045
1045
  }
1046
1046
  ],
1047
1047
  [
@@ -1050,12 +1050,12 @@
1050
1050
  {
1051
1051
  "children": [
1052
1052
  {
1053
- "type": "stack",
1054
1053
  "gap": "sm",
1054
+ "type": "stack",
1055
1055
  "children": [
1056
1056
  {
1057
- "type": "icon",
1058
- "name": "edit"
1057
+ "name": "edit",
1058
+ "type": "icon"
1059
1059
  },
1060
1060
  {
1061
1061
  "type": "typography",
@@ -1069,10 +1069,9 @@
1069
1069
  "type": "divider"
1070
1070
  },
1071
1071
  {
1072
- "submitEvent": "SAVE",
1073
- "entity": "@payload.row",
1074
- "type": "form-section",
1075
1072
  "mode": "edit",
1073
+ "type": "form-section",
1074
+ "entity": "@payload.row",
1076
1075
  "cancelEvent": "CLOSE",
1077
1076
  "fields": [
1078
1077
  "name",
@@ -1082,11 +1081,12 @@
1082
1081
  "rating",
1083
1082
  "hourlyRate",
1084
1083
  "available"
1085
- ]
1084
+ ],
1085
+ "submitEvent": "SAVE"
1086
1086
  }
1087
1087
  ],
1088
- "gap": "md",
1089
1088
  "type": "stack",
1089
+ "gap": "md",
1090
1090
  "direction": "vertical"
1091
1091
  }
1092
1092
  ]
@@ -1322,8 +1322,8 @@
1322
1322
  "Provider",
1323
1323
  {
1324
1324
  "emit": {
1325
- "failure": "ProviderLoadFailed",
1326
- "success": "ProviderLoaded"
1325
+ "success": "ProviderLoaded",
1326
+ "failure": "ProviderLoadFailed"
1327
1327
  }
1328
1328
  }
1329
1329
  ]
@@ -1340,8 +1340,8 @@
1340
1340
  {
1341
1341
  "id": "@payload.id",
1342
1342
  "emit": {
1343
- "failure": "ProviderLoadFailed",
1344
- "success": "ProviderLoaded"
1343
+ "success": "ProviderLoaded",
1344
+ "failure": "ProviderLoadFailed"
1345
1345
  }
1346
1346
  }
1347
1347
  ],
@@ -1349,31 +1349,31 @@
1349
1349
  "render-ui",
1350
1350
  "modal",
1351
1351
  {
1352
- "direction": "vertical",
1353
1352
  "gap": "md",
1354
1353
  "type": "stack",
1355
1354
  "children": [
1356
1355
  {
1357
- "gap": "sm",
1358
- "direction": "horizontal",
1359
1356
  "align": "center",
1360
1357
  "children": [
1361
1358
  {
1362
- "name": "eye",
1363
- "type": "icon"
1359
+ "type": "icon",
1360
+ "name": "eye"
1364
1361
  },
1365
1362
  {
1363
+ "variant": "h3",
1366
1364
  "type": "typography",
1367
- "content": "@entity.name",
1368
- "variant": "h3"
1365
+ "content": "@entity.name"
1369
1366
  }
1370
1367
  ],
1371
- "type": "stack"
1368
+ "type": "stack",
1369
+ "direction": "horizontal",
1370
+ "gap": "sm"
1372
1371
  },
1373
1372
  {
1374
1373
  "type": "divider"
1375
1374
  },
1376
1375
  {
1376
+ "type": "stack",
1377
1377
  "children": [
1378
1378
  {
1379
1379
  "type": "typography",
@@ -1381,19 +1381,15 @@
1381
1381
  "content": "Name"
1382
1382
  },
1383
1383
  {
1384
- "content": "@entity.name",
1385
1384
  "variant": "body",
1385
+ "content": "@entity.name",
1386
1386
  "type": "typography"
1387
1387
  }
1388
1388
  ],
1389
- "gap": "md",
1390
1389
  "direction": "horizontal",
1391
- "type": "stack"
1390
+ "gap": "md"
1392
1391
  },
1393
1392
  {
1394
- "direction": "horizontal",
1395
- "type": "stack",
1396
- "gap": "md",
1397
1393
  "children": [
1398
1394
  {
1399
1395
  "type": "typography",
@@ -1401,43 +1397,46 @@
1401
1397
  "variant": "caption"
1402
1398
  },
1403
1399
  {
1404
- "variant": "body",
1405
1400
  "content": "@entity.specialty",
1406
- "type": "typography"
1401
+ "type": "typography",
1402
+ "variant": "body"
1407
1403
  }
1408
- ]
1404
+ ],
1405
+ "gap": "md",
1406
+ "direction": "horizontal",
1407
+ "type": "stack"
1409
1408
  },
1410
1409
  {
1411
1410
  "gap": "md",
1411
+ "type": "stack",
1412
1412
  "children": [
1413
1413
  {
1414
+ "content": "Location",
1414
1415
  "variant": "caption",
1415
- "type": "typography",
1416
- "content": "Location"
1416
+ "type": "typography"
1417
1417
  },
1418
1418
  {
1419
- "content": "@entity.location",
1419
+ "type": "typography",
1420
1420
  "variant": "body",
1421
- "type": "typography"
1421
+ "content": "@entity.location"
1422
1422
  }
1423
1423
  ],
1424
- "type": "stack",
1425
1424
  "direction": "horizontal"
1426
1425
  },
1427
1426
  {
1428
- "gap": "md",
1429
- "direction": "horizontal",
1430
1427
  "type": "stack",
1428
+ "direction": "horizontal",
1429
+ "gap": "md",
1431
1430
  "children": [
1432
1431
  {
1433
- "variant": "caption",
1434
1432
  "content": "Phone",
1435
- "type": "typography"
1433
+ "type": "typography",
1434
+ "variant": "caption"
1436
1435
  },
1437
1436
  {
1438
1437
  "content": "@entity.phone",
1439
- "variant": "body",
1440
- "type": "typography"
1438
+ "type": "typography",
1439
+ "variant": "body"
1441
1440
  }
1442
1441
  ]
1443
1442
  },
@@ -1446,77 +1445,78 @@
1446
1445
  "type": "stack",
1447
1446
  "children": [
1448
1447
  {
1448
+ "content": "Rating",
1449
1449
  "type": "typography",
1450
- "variant": "caption",
1451
- "content": "Rating"
1450
+ "variant": "caption"
1452
1451
  },
1453
1452
  {
1454
1453
  "type": "typography",
1455
- "variant": "body",
1456
- "content": "@entity.rating"
1454
+ "content": "@entity.rating",
1455
+ "variant": "body"
1457
1456
  }
1458
1457
  ],
1459
1458
  "direction": "horizontal"
1460
1459
  },
1461
1460
  {
1462
1461
  "gap": "md",
1462
+ "direction": "horizontal",
1463
1463
  "children": [
1464
1464
  {
1465
- "type": "typography",
1465
+ "content": "Hourly Rate",
1466
1466
  "variant": "caption",
1467
- "content": "Hourly Rate"
1467
+ "type": "typography"
1468
1468
  },
1469
1469
  {
1470
+ "variant": "body",
1470
1471
  "content": "@entity.hourlyRate",
1471
- "type": "typography",
1472
- "variant": "body"
1472
+ "type": "typography"
1473
1473
  }
1474
1474
  ],
1475
- "direction": "horizontal",
1476
1475
  "type": "stack"
1477
1476
  },
1478
1477
  {
1479
- "gap": "md",
1480
- "direction": "horizontal",
1481
1478
  "children": [
1482
1479
  {
1483
- "variant": "caption",
1480
+ "type": "typography",
1484
1481
  "content": "Available",
1485
- "type": "typography"
1482
+ "variant": "caption"
1486
1483
  },
1487
1484
  {
1488
- "type": "typography",
1489
1485
  "variant": "body",
1486
+ "type": "typography",
1490
1487
  "content": "@entity.available"
1491
1488
  }
1492
1489
  ],
1493
- "type": "stack"
1490
+ "type": "stack",
1491
+ "gap": "md",
1492
+ "direction": "horizontal"
1494
1493
  },
1495
1494
  {
1496
1495
  "type": "divider"
1497
1496
  },
1498
1497
  {
1499
- "justify": "end",
1500
- "direction": "horizontal",
1501
- "type": "stack",
1502
1498
  "gap": "sm",
1499
+ "type": "stack",
1503
1500
  "children": [
1504
1501
  {
1505
- "icon": "edit",
1502
+ "variant": "primary",
1503
+ "label": "Edit",
1506
1504
  "action": "EDIT",
1507
1505
  "type": "button",
1508
- "label": "Edit",
1509
- "variant": "primary"
1506
+ "icon": "edit"
1510
1507
  },
1511
1508
  {
1509
+ "label": "Close",
1512
1510
  "type": "button",
1513
1511
  "variant": "ghost",
1514
- "label": "Close",
1515
1512
  "action": "CLOSE"
1516
1513
  }
1517
- ]
1514
+ ],
1515
+ "justify": "end",
1516
+ "direction": "horizontal"
1518
1517
  }
1519
- ]
1518
+ ],
1519
+ "direction": "vertical"
1520
1520
  }
1521
1521
  ]
1522
1522
  ]
@@ -1778,16 +1778,14 @@
1778
1778
  "render-ui",
1779
1779
  "modal",
1780
1780
  {
1781
- "type": "stack",
1781
+ "direction": "vertical",
1782
1782
  "gap": "md",
1783
1783
  "children": [
1784
1784
  {
1785
- "type": "stack",
1786
- "direction": "horizontal",
1787
1785
  "children": [
1788
1786
  {
1789
- "name": "alert-triangle",
1790
- "type": "icon"
1787
+ "type": "icon",
1788
+ "name": "alert-triangle"
1791
1789
  },
1792
1790
  {
1793
1791
  "content": "Delete Provider",
@@ -1795,40 +1793,42 @@
1795
1793
  "variant": "h3"
1796
1794
  }
1797
1795
  ],
1798
- "gap": "sm",
1799
- "align": "center"
1800
- },
1801
- {
1802
- "type": "divider"
1796
+ "direction": "horizontal",
1797
+ "type": "stack",
1798
+ "align": "center",
1799
+ "gap": "sm"
1803
1800
  },
1804
1801
  {
1802
+ "type": "divider"
1803
+ },
1804
+ {
1805
+ "message": "This action cannot be undone.",
1805
1806
  "type": "alert",
1806
- "variant": "error",
1807
- "message": "This action cannot be undone."
1807
+ "variant": "error"
1808
1808
  },
1809
1809
  {
1810
- "type": "stack",
1811
- "justify": "end",
1812
- "gap": "sm",
1813
1810
  "children": [
1814
1811
  {
1815
- "label": "Cancel",
1816
- "type": "button",
1817
1812
  "action": "CANCEL",
1818
- "variant": "ghost"
1813
+ "label": "Cancel",
1814
+ "variant": "ghost",
1815
+ "type": "button"
1819
1816
  },
1820
1817
  {
1821
- "action": "CONFIRM_DELETE",
1822
- "variant": "danger",
1823
1818
  "icon": "check",
1824
- "label": "Delete",
1825
- "type": "button"
1819
+ "variant": "danger",
1820
+ "type": "button",
1821
+ "action": "CONFIRM_DELETE",
1822
+ "label": "Delete"
1826
1823
  }
1827
1824
  ],
1828
- "direction": "horizontal"
1825
+ "direction": "horizontal",
1826
+ "justify": "end",
1827
+ "gap": "sm",
1828
+ "type": "stack"
1829
1829
  }
1830
1830
  ],
1831
- "direction": "vertical"
1831
+ "type": "stack"
1832
1832
  }
1833
1833
  ]
1834
1834
  ]
@@ -1867,8 +1867,8 @@
1867
1867
  "Provider",
1868
1868
  {
1869
1869
  "emit": {
1870
- "success": "ProviderLoaded",
1871
- "failure": "ProviderLoadFailed"
1870
+ "failure": "ProviderLoadFailed",
1871
+ "success": "ProviderLoaded"
1872
1872
  }
1873
1873
  }
1874
1874
  ],
@@ -1900,8 +1900,8 @@
1900
1900
  "Provider",
1901
1901
  {
1902
1902
  "emit": {
1903
- "success": "ProviderLoaded",
1904
- "failure": "ProviderLoadFailed"
1903
+ "failure": "ProviderLoadFailed",
1904
+ "success": "ProviderLoaded"
1905
1905
  }
1906
1906
  }
1907
1907
  ]
@@ -2051,48 +2051,48 @@
2051
2051
  "name": "BookingAppLayout",
2052
2052
  "linkedEntity": "Booking",
2053
2053
  "config": {
2054
+ "contentTrait": "@trait.BookingWizard",
2055
+ "appName": "BookingSystemApp",
2054
2056
  "searchEvent": "BOOKING_SEARCH",
2055
2057
  "topBarActions": [],
2058
+ "notifications": [],
2059
+ "notificationClickEvent": "BOOKING_NOTIFICATIONS_OPEN",
2056
2060
  "navItems": [
2057
2061
  {
2058
- "label": "Providers",
2059
2062
  "href": "/providers",
2060
- "icon": "user-check"
2063
+ "icon": "user-check",
2064
+ "label": "Providers"
2061
2065
  },
2062
2066
  {
2063
- "label": "Book",
2067
+ "icon": "calendar-plus",
2064
2068
  "href": "/book",
2065
- "icon": "calendar-plus"
2069
+ "label": "Book"
2066
2070
  },
2067
2071
  {
2068
- "label": "Appointments",
2069
2072
  "href": "/appointments",
2070
- "icon": "calendar"
2073
+ "icon": "calendar",
2074
+ "label": "Appointments"
2071
2075
  },
2072
2076
  {
2073
2077
  "href": "/schedule",
2074
- "icon": "clock",
2075
- "label": "Schedule"
2078
+ "label": "Schedule",
2079
+ "icon": "clock"
2076
2080
  }
2077
- ],
2078
- "notifications": [],
2079
- "notificationClickEvent": "BOOKING_NOTIFICATIONS_OPEN",
2080
- "appName": "BookingSystemApp",
2081
- "contentTrait": "@trait.BookingWizard"
2081
+ ]
2082
2082
  },
2083
2083
  "events": {
2084
- "NOTIFY_CLICK": "BOOKING_NOTIFICATIONS_OPEN",
2085
- "SEARCH": "BOOKING_SEARCH"
2084
+ "SEARCH": "BOOKING_SEARCH",
2085
+ "NOTIFY_CLICK": "BOOKING_NOTIFICATIONS_OPEN"
2086
2086
  }
2087
2087
  },
2088
2088
  {
2089
2089
  "ref": "Stripe.traits.ServiceStripeStripe",
2090
2090
  "name": "BookingPayment",
2091
2091
  "config": {
2092
+ "currency": "usd",
2092
2093
  "amount": 0.0,
2093
- "metadata": {},
2094
2094
  "uiTrait": "@trait.BookingPaymentForm",
2095
- "currency": "usd"
2095
+ "metadata": {}
2096
2096
  },
2097
2097
  "listens": [
2098
2098
  {
@@ -2147,19 +2147,23 @@
2147
2147
  "render-ui",
2148
2148
  "main",
2149
2149
  {
2150
+ "gap": "md",
2151
+ "direction": "vertical",
2152
+ "type": "stack",
2150
2153
  "children": [
2151
2154
  {
2152
2155
  "type": "alert",
2153
- "variant": "info",
2154
- "message": "Enter card details to pay your booking deposit."
2156
+ "message": "Enter card details to pay your booking deposit.",
2157
+ "variant": "info"
2155
2158
  },
2156
2159
  {
2157
- "placeholder": "Card number",
2158
2160
  "inputType": "text",
2159
- "type": "input"
2161
+ "type": "input",
2162
+ "placeholder": "Card number"
2160
2163
  },
2161
2164
  {
2162
- "type": "stack",
2165
+ "gap": "sm",
2166
+ "direction": "horizontal",
2163
2167
  "children": [
2164
2168
  {
2165
2169
  "type": "input",
@@ -2167,25 +2171,21 @@
2167
2171
  "placeholder": "MM/YY"
2168
2172
  },
2169
2173
  {
2170
- "placeholder": "CVC",
2174
+ "inputType": "text",
2171
2175
  "type": "input",
2172
- "inputType": "text"
2176
+ "placeholder": "CVC"
2173
2177
  }
2174
2178
  ],
2175
- "direction": "horizontal",
2176
- "gap": "sm"
2179
+ "type": "stack"
2177
2180
  },
2178
2181
  {
2179
- "icon": "credit-card",
2180
- "action": "CREATE_PAYMENT",
2181
- "variant": "primary",
2182
+ "type": "button",
2182
2183
  "label": "Pay deposit",
2183
- "type": "button"
2184
+ "variant": "primary",
2185
+ "action": "CREATE_PAYMENT",
2186
+ "icon": "credit-card"
2184
2187
  }
2185
- ],
2186
- "direction": "vertical",
2187
- "gap": "md",
2188
- "type": "stack"
2188
+ ]
2189
2189
  }
2190
2190
  ]
2191
2191
  ]
@@ -2540,49 +2540,49 @@
2540
2540
  "render-ui",
2541
2541
  "main",
2542
2542
  {
2543
+ "gap": "lg",
2543
2544
  "className": "max-w-xl mx-auto w-full",
2545
+ "type": "stack",
2544
2546
  "children": [
2545
2547
  {
2546
- "variant": "h2",
2548
+ "type": "typography",
2547
2549
  "content": "Book Appointment",
2548
- "type": "typography"
2550
+ "variant": "h2"
2549
2551
  },
2550
2552
  {
2553
+ "type": "wizard-progress",
2554
+ "currentStep": 0.0,
2551
2555
  "steps": [
2552
2556
  "Select Provider",
2553
2557
  "Select Time",
2554
2558
  "Your Details",
2555
2559
  "Payment",
2556
2560
  "Confirmation"
2557
- ],
2558
- "currentStep": 0.0,
2559
- "type": "wizard-progress"
2561
+ ]
2560
2562
  },
2561
2563
  {
2562
2564
  "type": "divider"
2563
2565
  },
2564
2566
  {
2565
- "type": "typography",
2566
2567
  "variant": "h3",
2568
+ "type": "typography",
2567
2569
  "content": "Select Provider"
2568
2570
  },
2569
2571
  {
2572
+ "mode": "create",
2573
+ "showCancel": false,
2574
+ "submitEvent": "NEXT",
2575
+ "type": "form-section",
2576
+ "submitLabel": "Continue",
2570
2577
  "fields": [
2571
2578
  {
2572
2579
  "required": true,
2573
- "name": "providerName",
2574
- "min": 2.0
2580
+ "min": 2.0,
2581
+ "name": "providerName"
2575
2582
  }
2576
- ],
2577
- "submitLabel": "Continue",
2578
- "submitEvent": "NEXT",
2579
- "showCancel": false,
2580
- "type": "form-section",
2581
- "mode": "create"
2583
+ ]
2582
2584
  }
2583
2585
  ],
2584
- "gap": "lg",
2585
- "type": "stack",
2586
2586
  "direction": "vertical"
2587
2587
  }
2588
2588
  ]
@@ -2603,10 +2603,13 @@
2603
2603
  "render-ui",
2604
2604
  "main",
2605
2605
  {
2606
+ "gap": "lg",
2607
+ "type": "stack",
2608
+ "className": "max-w-xl mx-auto w-full",
2606
2609
  "children": [
2607
2610
  {
2608
- "variant": "h2",
2609
2611
  "type": "typography",
2612
+ "variant": "h2",
2610
2613
  "content": "Book Appointment"
2611
2614
  },
2612
2615
  {
@@ -2624,30 +2627,27 @@
2624
2627
  "type": "divider"
2625
2628
  },
2626
2629
  {
2627
- "type": "typography",
2628
2630
  "content": "Select Time",
2629
- "variant": "h3"
2631
+ "variant": "h3",
2632
+ "type": "typography"
2630
2633
  },
2631
2634
  {
2632
2635
  "submitLabel": "Continue",
2633
- "cancelLabel": "Back",
2634
- "type": "form-section",
2635
- "cancelEvent": "PREV",
2636
+ "submitEvent": "NEXT",
2636
2637
  "mode": "edit",
2638
+ "entity": "@entity",
2637
2639
  "fields": [
2638
2640
  {
2639
- "required": true,
2640
- "name": "scheduledAt"
2641
+ "name": "scheduledAt",
2642
+ "required": true
2641
2643
  }
2642
2644
  ],
2643
- "entity": "@entity",
2644
- "submitEvent": "NEXT"
2645
+ "cancelEvent": "PREV",
2646
+ "cancelLabel": "Back",
2647
+ "type": "form-section"
2645
2648
  }
2646
2649
  ],
2647
- "direction": "vertical",
2648
- "type": "stack",
2649
- "gap": "lg",
2650
- "className": "max-w-xl mx-auto w-full"
2650
+ "direction": "vertical"
2651
2651
  }
2652
2652
  ]
2653
2653
  ]
@@ -2671,14 +2671,17 @@
2671
2671
  "render-ui",
2672
2672
  "main",
2673
2673
  {
2674
+ "gap": "lg",
2675
+ "direction": "vertical",
2676
+ "type": "stack",
2674
2677
  "children": [
2675
2678
  {
2676
- "variant": "h2",
2679
+ "type": "typography",
2677
2680
  "content": "Book Appointment",
2678
- "type": "typography"
2681
+ "variant": "h2"
2679
2682
  },
2680
2683
  {
2681
- "type": "wizard-progress",
2684
+ "currentStep": 2.0,
2682
2685
  "steps": [
2683
2686
  "Select Provider",
2684
2687
  "Select Time",
@@ -2686,49 +2689,46 @@
2686
2689
  "Payment",
2687
2690
  "Confirmation"
2688
2691
  ],
2689
- "currentStep": 2.0
2692
+ "type": "wizard-progress"
2690
2693
  },
2691
2694
  {
2692
2695
  "type": "divider"
2693
2696
  },
2694
2697
  {
2695
- "variant": "h3",
2698
+ "content": "Your Details",
2696
2699
  "type": "typography",
2697
- "content": "Your Details"
2700
+ "variant": "h3"
2698
2701
  },
2699
2702
  {
2700
- "entity": "@entity",
2701
- "mode": "edit",
2702
- "cancelLabel": "Back",
2703
- "cancelEvent": "PREV",
2704
2703
  "type": "form-section",
2704
+ "submitEvent": "NEXT",
2705
+ "cancelEvent": "PREV",
2705
2706
  "fields": [
2706
2707
  {
2707
- "min": 2.0,
2708
2708
  "name": "customerName",
2709
- "required": true
2709
+ "required": true,
2710
+ "min": 2.0
2710
2711
  },
2711
2712
  {
2712
- "required": true,
2713
2713
  "name": "email",
2714
- "type": "email"
2714
+ "type": "email",
2715
+ "required": true
2715
2716
  },
2716
2717
  {
2717
- "required": true,
2718
- "name": "phone"
2718
+ "name": "phone",
2719
+ "required": true
2719
2720
  },
2720
2721
  {
2721
2722
  "name": "notes"
2722
2723
  }
2723
2724
  ],
2724
- "submitEvent": "NEXT",
2725
- "submitLabel": "Continue"
2725
+ "submitLabel": "Continue",
2726
+ "cancelLabel": "Back",
2727
+ "entity": "@entity",
2728
+ "mode": "edit"
2726
2729
  }
2727
2730
  ],
2728
- "className": "max-w-xl mx-auto w-full",
2729
- "gap": "lg",
2730
- "type": "stack",
2731
- "direction": "vertical"
2731
+ "className": "max-w-xl mx-auto w-full"
2732
2732
  }
2733
2733
  ]
2734
2734
  ]
@@ -2744,15 +2744,14 @@
2744
2744
  {
2745
2745
  "gap": "lg",
2746
2746
  "className": "max-w-xl mx-auto w-full",
2747
- "type": "stack",
2748
- "direction": "vertical",
2749
2747
  "children": [
2750
2748
  {
2749
+ "type": "typography",
2751
2750
  "variant": "h2",
2752
- "content": "Book Appointment",
2753
- "type": "typography"
2751
+ "content": "Book Appointment"
2754
2752
  },
2755
2753
  {
2754
+ "currentStep": 0.0,
2756
2755
  "type": "wizard-progress",
2757
2756
  "steps": [
2758
2757
  "Select Provider",
@@ -2760,8 +2759,7 @@
2760
2759
  "Your Details",
2761
2760
  "Payment",
2762
2761
  "Confirmation"
2763
- ],
2764
- "currentStep": 0.0
2762
+ ]
2765
2763
  },
2766
2764
  {
2767
2765
  "type": "divider"
@@ -2772,21 +2770,23 @@
2772
2770
  "type": "typography"
2773
2771
  },
2774
2772
  {
2775
- "type": "form-section",
2776
- "entity": "@entity",
2777
- "mode": "edit",
2778
2773
  "submitLabel": "Continue",
2779
- "showCancel": false,
2774
+ "type": "form-section",
2780
2775
  "fields": [
2781
2776
  {
2782
- "min": 2.0,
2777
+ "name": "providerName",
2783
2778
  "required": true,
2784
- "name": "providerName"
2779
+ "min": 2.0
2785
2780
  }
2786
2781
  ],
2787
- "submitEvent": "NEXT"
2782
+ "submitEvent": "NEXT",
2783
+ "entity": "@entity",
2784
+ "showCancel": false,
2785
+ "mode": "edit"
2788
2786
  }
2789
- ]
2787
+ ],
2788
+ "direction": "vertical",
2789
+ "type": "stack"
2790
2790
  }
2791
2791
  ]
2792
2792
  ]
@@ -2826,15 +2826,15 @@
2826
2826
  "render-ui",
2827
2827
  "main",
2828
2828
  {
2829
- "gap": "lg",
2830
- "className": "max-w-xl mx-auto w-full",
2831
2829
  "direction": "vertical",
2830
+ "className": "max-w-xl mx-auto w-full",
2831
+ "gap": "lg",
2832
2832
  "type": "stack",
2833
2833
  "children": [
2834
2834
  {
2835
+ "variant": "h2",
2835
2836
  "content": "Book Appointment",
2836
- "type": "typography",
2837
- "variant": "h2"
2837
+ "type": "typography"
2838
2838
  },
2839
2839
  {
2840
2840
  "steps": [
@@ -2851,25 +2851,25 @@
2851
2851
  "type": "divider"
2852
2852
  },
2853
2853
  {
2854
- "content": "Pay Deposit",
2855
2854
  "type": "typography",
2855
+ "content": "Pay Deposit",
2856
2856
  "variant": "h3"
2857
2857
  },
2858
2858
  "@trait.BookingPayment",
2859
2859
  {
2860
- "gap": "sm",
2861
2860
  "type": "stack",
2862
- "justify": "start",
2863
2861
  "direction": "horizontal",
2864
2862
  "children": [
2865
2863
  {
2866
2864
  "label": "Back",
2865
+ "type": "button",
2867
2866
  "variant": "ghost",
2868
2867
  "icon": "arrow-left",
2869
- "type": "button",
2870
2868
  "action": "PREV"
2871
2869
  }
2872
- ]
2870
+ ],
2871
+ "justify": "start",
2872
+ "gap": "sm"
2873
2873
  }
2874
2874
  ]
2875
2875
  }
@@ -2885,51 +2885,51 @@
2885
2885
  "render-ui",
2886
2886
  "main",
2887
2887
  {
2888
+ "type": "stack",
2889
+ "className": "max-w-xl mx-auto w-full",
2890
+ "gap": "lg",
2888
2891
  "direction": "vertical",
2889
2892
  "children": [
2890
2893
  {
2891
- "variant": "h2",
2894
+ "type": "typography",
2892
2895
  "content": "Book Appointment",
2893
- "type": "typography"
2896
+ "variant": "h2"
2894
2897
  },
2895
2898
  {
2896
- "currentStep": 1.0,
2897
- "type": "wizard-progress",
2898
2899
  "steps": [
2899
2900
  "Select Provider",
2900
2901
  "Select Time",
2901
2902
  "Your Details",
2902
2903
  "Payment",
2903
2904
  "Confirmation"
2904
- ]
2905
+ ],
2906
+ "currentStep": 1.0,
2907
+ "type": "wizard-progress"
2905
2908
  },
2906
2909
  {
2907
2910
  "type": "divider"
2908
2911
  },
2909
2912
  {
2910
- "type": "typography",
2911
2913
  "content": "Select Time",
2914
+ "type": "typography",
2912
2915
  "variant": "h3"
2913
2916
  },
2914
2917
  {
2915
- "entity": "@entity",
2918
+ "type": "form-section",
2919
+ "submitLabel": "Continue",
2916
2920
  "mode": "edit",
2921
+ "cancelLabel": "Back",
2922
+ "submitEvent": "NEXT",
2923
+ "cancelEvent": "PREV",
2917
2924
  "fields": [
2918
2925
  {
2919
- "required": true,
2920
- "name": "scheduledAt"
2926
+ "name": "scheduledAt",
2927
+ "required": true
2921
2928
  }
2922
2929
  ],
2923
- "cancelEvent": "PREV",
2924
- "submitLabel": "Continue",
2925
- "cancelLabel": "Back",
2926
- "type": "form-section",
2927
- "submitEvent": "NEXT"
2930
+ "entity": "@entity"
2928
2931
  }
2929
- ],
2930
- "className": "max-w-xl mx-auto w-full",
2931
- "type": "stack",
2932
- "gap": "lg"
2932
+ ]
2933
2933
  }
2934
2934
  ]
2935
2935
  ]
@@ -2951,105 +2951,103 @@
2951
2951
  "render-ui",
2952
2952
  "main",
2953
2953
  {
2954
- "type": "stack",
2955
2954
  "className": "max-w-xl mx-auto w-full",
2956
- "gap": "lg",
2957
- "direction": "vertical",
2958
2955
  "children": [
2959
2956
  {
2960
2957
  "variant": "h2",
2961
- "type": "typography",
2962
- "content": "Review your booking"
2958
+ "content": "Review your booking",
2959
+ "type": "typography"
2963
2960
  },
2964
2961
  {
2965
2962
  "type": "wizard-progress",
2963
+ "currentStep": 4.0,
2966
2964
  "steps": [
2967
2965
  "Select Provider",
2968
2966
  "Select Time",
2969
2967
  "Your Details",
2970
2968
  "Payment",
2971
2969
  "Confirmation"
2972
- ],
2973
- "currentStep": 4.0
2970
+ ]
2974
2971
  },
2975
2972
  {
2976
2973
  "type": "divider"
2977
2974
  },
2978
2975
  {
2976
+ "direction": "vertical",
2979
2977
  "type": "stack",
2980
2978
  "gap": "sm",
2981
2979
  "children": [
2982
2980
  {
2983
2981
  "children": [
2984
2982
  {
2983
+ "type": "typography",
2985
2984
  "variant": "caption",
2986
- "content": "Provider",
2987
- "type": "typography"
2985
+ "content": "Provider"
2988
2986
  },
2989
2987
  {
2990
2988
  "type": "typography",
2991
- "content": "@entity.providerName",
2992
- "variant": "body"
2989
+ "variant": "body",
2990
+ "content": "@entity.providerName"
2993
2991
  }
2994
2992
  ],
2995
- "type": "stack",
2996
2993
  "direction": "horizontal",
2997
- "gap": "md",
2998
- "justify": "between"
2994
+ "type": "stack",
2995
+ "justify": "between",
2996
+ "gap": "md"
2999
2997
  },
3000
2998
  {
2999
+ "justify": "between",
3001
3000
  "type": "stack",
3001
+ "direction": "horizontal",
3002
3002
  "children": [
3003
3003
  {
3004
- "variant": "caption",
3005
3004
  "type": "typography",
3006
- "content": "When"
3005
+ "content": "When",
3006
+ "variant": "caption"
3007
3007
  },
3008
3008
  {
3009
3009
  "type": "typography",
3010
- "content": "@entity.scheduledAt",
3011
- "variant": "body"
3010
+ "variant": "body",
3011
+ "content": "@entity.scheduledAt"
3012
3012
  }
3013
3013
  ],
3014
- "gap": "md",
3015
- "justify": "between",
3016
- "direction": "horizontal"
3014
+ "gap": "md"
3017
3015
  },
3018
3016
  {
3019
3017
  "type": "stack",
3018
+ "direction": "horizontal",
3020
3019
  "gap": "md",
3021
- "justify": "between",
3022
3020
  "children": [
3023
3021
  {
3024
- "content": "Customer",
3025
3022
  "variant": "caption",
3023
+ "content": "Customer",
3026
3024
  "type": "typography"
3027
3025
  },
3028
3026
  {
3029
3027
  "variant": "body",
3030
- "content": "@entity.customerName",
3031
- "type": "typography"
3028
+ "type": "typography",
3029
+ "content": "@entity.customerName"
3032
3030
  }
3033
3031
  ],
3034
- "direction": "horizontal"
3032
+ "justify": "between"
3035
3033
  },
3036
3034
  {
3037
- "type": "stack",
3038
3035
  "justify": "between",
3036
+ "direction": "horizontal",
3037
+ "gap": "md",
3038
+ "type": "stack",
3039
3039
  "children": [
3040
3040
  {
3041
3041
  "type": "typography",
3042
- "variant": "caption",
3043
- "content": "Email"
3042
+ "content": "Email",
3043
+ "variant": "caption"
3044
3044
  },
3045
3045
  {
3046
+ "type": "typography",
3046
3047
  "content": "@entity.email",
3047
- "variant": "body",
3048
- "type": "typography"
3048
+ "variant": "body"
3049
3049
  }
3050
- ],
3051
- "gap": "md",
3052
- "direction": "horizontal"
3050
+ ]
3053
3051
  },
3054
3052
  {
3055
3053
  "direction": "horizontal",
@@ -3061,61 +3059,63 @@
3061
3059
  },
3062
3060
  {
3063
3061
  "content": "@entity.phone",
3064
- "variant": "body",
3065
- "type": "typography"
3062
+ "type": "typography",
3063
+ "variant": "body"
3066
3064
  }
3067
3065
  ],
3066
+ "justify": "between",
3068
3067
  "type": "stack",
3069
- "gap": "md",
3070
- "justify": "between"
3068
+ "gap": "md"
3071
3069
  },
3072
3070
  {
3073
- "type": "stack",
3071
+ "justify": "between",
3074
3072
  "children": [
3075
3073
  {
3076
- "type": "typography",
3077
3074
  "variant": "caption",
3075
+ "type": "typography",
3078
3076
  "content": "Deposit Paid"
3079
3077
  },
3080
3078
  {
3081
- "variant": "body",
3082
3079
  "type": "typography",
3080
+ "variant": "body",
3083
3081
  "content": "@entity.depositAmount"
3084
3082
  }
3085
3083
  ],
3086
- "justify": "between",
3084
+ "type": "stack",
3087
3085
  "direction": "horizontal",
3088
3086
  "gap": "md"
3089
3087
  }
3090
- ],
3091
- "direction": "vertical"
3088
+ ]
3092
3089
  },
3093
3090
  {
3094
3091
  "type": "divider"
3095
3092
  },
3096
3093
  {
3097
- "direction": "horizontal",
3098
- "type": "stack",
3094
+ "justify": "between",
3099
3095
  "children": [
3100
3096
  {
3101
- "icon": "arrow-left",
3097
+ "action": "PREV",
3102
3098
  "label": "Back",
3103
3099
  "type": "button",
3104
- "action": "PREV",
3105
- "variant": "ghost"
3100
+ "variant": "ghost",
3101
+ "icon": "arrow-left"
3106
3102
  },
3107
3103
  {
3108
- "label": "Confirm booking",
3109
3104
  "action": "COMPLETE",
3105
+ "label": "Confirm booking",
3110
3106
  "variant": "primary",
3111
- "type": "button",
3112
- "icon": "check"
3107
+ "icon": "check",
3108
+ "type": "button"
3113
3109
  }
3114
3110
  ],
3115
- "gap": "sm",
3116
- "justify": "between"
3111
+ "direction": "horizontal",
3112
+ "type": "stack",
3113
+ "gap": "sm"
3117
3114
  }
3118
- ]
3115
+ ],
3116
+ "type": "stack",
3117
+ "gap": "lg",
3118
+ "direction": "vertical"
3119
3119
  }
3120
3120
  ]
3121
3121
  ]
@@ -3129,9 +3129,8 @@
3129
3129
  "render-ui",
3130
3130
  "main",
3131
3131
  {
3132
- "gap": "lg",
3132
+ "className": "max-w-xl mx-auto w-full",
3133
3133
  "type": "stack",
3134
- "direction": "vertical",
3135
3134
  "children": [
3136
3135
  {
3137
3136
  "type": "typography",
@@ -3154,39 +3153,40 @@
3154
3153
  },
3155
3154
  {
3156
3155
  "content": "Your Details",
3157
- "type": "typography",
3158
- "variant": "h3"
3156
+ "variant": "h3",
3157
+ "type": "typography"
3159
3158
  },
3160
3159
  {
3161
3160
  "cancelEvent": "PREV",
3162
- "cancelLabel": "Back",
3161
+ "type": "form-section",
3163
3162
  "entity": "@entity",
3164
- "mode": "edit",
3165
- "submitEvent": "NEXT",
3166
- "submitLabel": "Continue",
3167
3163
  "fields": [
3168
3164
  {
3165
+ "min": 2.0,
3169
3166
  "name": "customerName",
3170
- "required": true,
3171
- "min": 2.0
3167
+ "required": true
3172
3168
  },
3173
3169
  {
3174
- "required": true,
3175
3170
  "name": "email",
3176
- "type": "email"
3171
+ "type": "email",
3172
+ "required": true
3177
3173
  },
3178
3174
  {
3179
- "required": true,
3180
- "name": "phone"
3175
+ "name": "phone",
3176
+ "required": true
3181
3177
  },
3182
3178
  {
3183
3179
  "name": "notes"
3184
3180
  }
3185
3181
  ],
3186
- "type": "form-section"
3182
+ "cancelLabel": "Back",
3183
+ "mode": "edit",
3184
+ "submitEvent": "NEXT",
3185
+ "submitLabel": "Continue"
3187
3186
  }
3188
3187
  ],
3189
- "className": "max-w-xl mx-auto w-full"
3188
+ "gap": "lg",
3189
+ "direction": "vertical"
3190
3190
  }
3191
3191
  ]
3192
3192
  ]
@@ -3216,8 +3216,8 @@
3216
3216
  "@entity",
3217
3217
  {
3218
3218
  "emit": {
3219
- "failure": "BookingSaveFailed",
3220
- "success": "BookingSaved"
3219
+ "success": "BookingSaved",
3220
+ "failure": "BookingSaveFailed"
3221
3221
  }
3222
3222
  }
3223
3223
  ],
@@ -3226,10 +3226,10 @@
3226
3226
  "email",
3227
3227
  "send",
3228
3228
  {
3229
- "body": "Your booking is confirmed.",
3230
- "recipient": "@entity.email",
3229
+ "sender": "noreply@bookings.example",
3231
3230
  "subject": "Booking Confirmed",
3232
- "sender": "noreply@bookings.example"
3231
+ "body": "Your booking is confirmed.",
3232
+ "recipient": "@entity.email"
3233
3233
  },
3234
3234
  {
3235
3235
  "emit": {
@@ -3244,13 +3244,13 @@
3244
3244
  "sendSMS",
3245
3245
  {
3246
3246
  "recipient": "@entity.phone",
3247
- "body": "Booking confirmed for @entity.scheduledAt",
3248
- "sender": "+15551234567"
3247
+ "sender": "+15551234567",
3248
+ "body": "Booking confirmed for @entity.scheduledAt"
3249
3249
  },
3250
3250
  {
3251
3251
  "emit": {
3252
- "success": "BookingSmsSent",
3253
- "failure": "BookingSmsFailed"
3252
+ "failure": "BookingSmsFailed",
3253
+ "success": "BookingSmsSent"
3254
3254
  }
3255
3255
  }
3256
3256
  ],
@@ -3270,35 +3270,35 @@
3270
3270
  "render-ui",
3271
3271
  "main",
3272
3272
  {
3273
- "className": "max-w-xl mx-auto w-full py-12",
3274
3273
  "children": [
3275
3274
  {
3276
3275
  "type": "icon",
3277
3276
  "name": "check-circle"
3278
3277
  },
3279
3278
  {
3279
+ "content": "Booking confirmed",
3280
3280
  "type": "typography",
3281
- "variant": "h2",
3282
- "content": "Booking confirmed"
3281
+ "variant": "h2"
3283
3282
  },
3284
3283
  {
3285
- "type": "typography",
3286
- "variant": "body",
3284
+ "content": "We have emailed and SMS-confirmed your appointment.",
3287
3285
  "color": "muted",
3288
- "content": "We have emailed and SMS-confirmed your appointment."
3286
+ "type": "typography",
3287
+ "variant": "body"
3289
3288
  },
3290
3289
  {
3291
- "label": "Book another",
3292
- "type": "button",
3293
3290
  "variant": "ghost",
3291
+ "label": "Book another",
3294
3292
  "icon": "rotate-ccw",
3295
- "action": "RESTART"
3293
+ "action": "RESTART",
3294
+ "type": "button"
3296
3295
  }
3297
3296
  ],
3298
3297
  "type": "stack",
3299
- "gap": "lg",
3298
+ "direction": "vertical",
3300
3299
  "align": "center",
3301
- "direction": "vertical"
3300
+ "className": "max-w-xl mx-auto w-full py-12",
3301
+ "gap": "lg"
3302
3302
  }
3303
3303
  ]
3304
3304
  ]
@@ -3312,15 +3312,14 @@
3312
3312
  "render-ui",
3313
3313
  "main",
3314
3314
  {
3315
- "className": "max-w-xl mx-auto w-full",
3316
3315
  "direction": "vertical",
3317
- "type": "stack",
3318
3316
  "gap": "lg",
3317
+ "className": "max-w-xl mx-auto w-full",
3319
3318
  "children": [
3320
3319
  {
3321
- "variant": "h2",
3322
3320
  "content": "Book Appointment",
3323
- "type": "typography"
3321
+ "type": "typography",
3322
+ "variant": "h2"
3324
3323
  },
3325
3324
  {
3326
3325
  "steps": [
@@ -3338,26 +3337,27 @@
3338
3337
  },
3339
3338
  {
3340
3339
  "content": "Pay Deposit",
3341
- "type": "typography",
3342
- "variant": "h3"
3340
+ "variant": "h3",
3341
+ "type": "typography"
3343
3342
  },
3344
3343
  "@trait.BookingPayment",
3345
3344
  {
3346
- "type": "stack",
3347
- "direction": "horizontal",
3348
3345
  "children": [
3349
3346
  {
3350
- "action": "PREV",
3351
- "variant": "ghost",
3352
- "icon": "arrow-left",
3353
3347
  "type": "button",
3354
- "label": "Back"
3348
+ "icon": "arrow-left",
3349
+ "action": "PREV",
3350
+ "label": "Back",
3351
+ "variant": "ghost"
3355
3352
  }
3356
3353
  ],
3357
- "gap": "sm",
3358
- "justify": "start"
3354
+ "type": "stack",
3355
+ "justify": "start",
3356
+ "direction": "horizontal",
3357
+ "gap": "sm"
3359
3358
  }
3360
- ]
3359
+ ],
3360
+ "type": "stack"
3361
3361
  }
3362
3362
  ]
3363
3363
  ]
@@ -3411,14 +3411,14 @@
3411
3411
  "render-ui",
3412
3412
  "main",
3413
3413
  {
3414
- "className": "max-w-xl mx-auto w-full",
3415
3414
  "direction": "vertical",
3415
+ "className": "max-w-xl mx-auto w-full",
3416
3416
  "gap": "lg",
3417
3417
  "children": [
3418
3418
  {
3419
+ "type": "typography",
3419
3420
  "variant": "h2",
3420
- "content": "Book Appointment",
3421
- "type": "typography"
3421
+ "content": "Book Appointment"
3422
3422
  },
3423
3423
  {
3424
3424
  "steps": [
@@ -3436,20 +3436,20 @@
3436
3436
  },
3437
3437
  {
3438
3438
  "variant": "h3",
3439
- "type": "typography",
3440
- "content": "Select Provider"
3439
+ "content": "Select Provider",
3440
+ "type": "typography"
3441
3441
  },
3442
3442
  {
3443
- "mode": "create",
3444
3443
  "type": "form-section",
3445
- "submitEvent": "NEXT",
3446
3444
  "showCancel": false,
3447
3445
  "submitLabel": "Continue",
3446
+ "submitEvent": "NEXT",
3447
+ "mode": "create",
3448
3448
  "fields": [
3449
3449
  {
3450
3450
  "name": "providerName",
3451
- "min": 2.0,
3452
- "required": true
3451
+ "required": true,
3452
+ "min": 2.0
3453
3453
  }
3454
3454
  ]
3455
3455
  }
@@ -3558,8 +3558,10 @@
3558
3558
  "name": "AppointmentAppLayout",
3559
3559
  "linkedEntity": "Appointment",
3560
3560
  "config": {
3561
- "topBarActions": [],
3562
- "contentTrait": "@trait.AppointmentDashboard",
3561
+ "appName": "BookingSystemApp",
3562
+ "notifications": [],
3563
+ "notificationClickEvent": "APPOINTMENT_NOTIFICATIONS_OPEN",
3564
+ "searchEvent": "APPOINTMENT_SEARCH",
3563
3565
  "navItems": [
3564
3566
  {
3565
3567
  "href": "/providers",
@@ -3572,24 +3574,22 @@
3572
3574
  "icon": "calendar-plus"
3573
3575
  },
3574
3576
  {
3575
- "icon": "calendar",
3577
+ "href": "/appointments",
3576
3578
  "label": "Appointments",
3577
- "href": "/appointments"
3579
+ "icon": "calendar"
3578
3580
  },
3579
3581
  {
3580
- "href": "/schedule",
3582
+ "label": "Schedule",
3581
3583
  "icon": "clock",
3582
- "label": "Schedule"
3584
+ "href": "/schedule"
3583
3585
  }
3584
3586
  ],
3585
- "appName": "BookingSystemApp",
3586
- "notifications": [],
3587
- "searchEvent": "APPOINTMENT_SEARCH",
3588
- "notificationClickEvent": "APPOINTMENT_NOTIFICATIONS_OPEN"
3587
+ "topBarActions": [],
3588
+ "contentTrait": "@trait.AppointmentDashboard"
3589
3589
  },
3590
3590
  "events": {
3591
- "NOTIFY_CLICK": "APPOINTMENT_NOTIFICATIONS_OPEN",
3592
- "SEARCH": "APPOINTMENT_SEARCH"
3591
+ "SEARCH": "APPOINTMENT_SEARCH",
3592
+ "NOTIFY_CLICK": "APPOINTMENT_NOTIFICATIONS_OPEN"
3593
3593
  }
3594
3594
  },
3595
3595
  {
@@ -3634,15 +3634,17 @@
3634
3634
  "render-ui",
3635
3635
  "main",
3636
3636
  {
3637
+ "type": "stack",
3637
3638
  "gap": "lg",
3639
+ "direction": "vertical",
3638
3640
  "children": [
3639
3641
  {
3640
- "gap": "md",
3642
+ "align": "center",
3641
3643
  "children": [
3642
3644
  {
3643
3645
  "direction": "horizontal",
3644
3646
  "align": "center",
3645
- "gap": "sm",
3647
+ "type": "stack",
3646
3648
  "children": [
3647
3649
  {
3648
3650
  "type": "icon",
@@ -3654,27 +3656,27 @@
3654
3656
  "variant": "h2"
3655
3657
  }
3656
3658
  ],
3657
- "type": "stack"
3659
+ "gap": "sm"
3658
3660
  },
3659
3661
  {
3662
+ "direction": "horizontal",
3663
+ "type": "stack",
3660
3664
  "children": [
3661
3665
  {
3662
- "icon": "plus",
3663
- "action": "CREATE",
3664
- "label": "Create Appointment",
3666
+ "variant": "primary",
3665
3667
  "type": "button",
3666
- "variant": "primary"
3668
+ "action": "CREATE",
3669
+ "icon": "plus",
3670
+ "label": "Create Appointment"
3667
3671
  }
3668
3672
  ],
3669
- "direction": "horizontal",
3670
- "gap": "sm",
3671
- "type": "stack"
3673
+ "gap": "sm"
3672
3674
  }
3673
3675
  ],
3674
- "justify": "between",
3675
- "type": "stack",
3676
3676
  "direction": "horizontal",
3677
- "align": "center"
3677
+ "gap": "md",
3678
+ "type": "stack",
3679
+ "justify": "between"
3678
3680
  },
3679
3681
  {
3680
3682
  "type": "divider"
@@ -3684,9 +3686,7 @@
3684
3686
  "type": "divider"
3685
3687
  },
3686
3688
  "@trait.AppointmentBrowseList"
3687
- ],
3688
- "direction": "vertical",
3689
- "type": "stack"
3689
+ ]
3690
3690
  }
3691
3691
  ]
3692
3692
  ]
@@ -3701,8 +3701,8 @@
3701
3701
  "linkedEntity": "Appointment",
3702
3702
  "config": {
3703
3703
  "dateField": "scheduledAt",
3704
- "titleField": "summary",
3705
- "colorField": "status"
3704
+ "colorField": "status",
3705
+ "titleField": "summary"
3706
3706
  },
3707
3707
  "listens": [
3708
3708
  {
@@ -3746,56 +3746,56 @@
3746
3746
  "linkedEntity": "Appointment",
3747
3747
  "config": {
3748
3748
  "gap": "sm",
3749
+ "itemActions": [
3750
+ {
3751
+ "label": "View",
3752
+ "variant": "ghost",
3753
+ "event": "VIEW"
3754
+ },
3755
+ {
3756
+ "label": "Edit",
3757
+ "variant": "ghost",
3758
+ "event": "EDIT"
3759
+ },
3760
+ {
3761
+ "variant": "danger",
3762
+ "label": "Delete",
3763
+ "event": "DELETE"
3764
+ }
3765
+ ],
3766
+ "cols": 1.0,
3749
3767
  "fields": [
3750
3768
  {
3751
- "variant": "h3",
3752
3769
  "name": "summary",
3753
- "icon": "calendar",
3754
- "label": "Summary"
3770
+ "label": "Summary",
3771
+ "variant": "h3",
3772
+ "icon": "calendar"
3755
3773
  },
3756
3774
  {
3757
- "label": "Provider",
3758
3775
  "name": "providerName",
3759
- "variant": "body"
3776
+ "variant": "body",
3777
+ "label": "Provider"
3760
3778
  },
3761
3779
  {
3762
- "variant": "body",
3763
3780
  "label": "Customer",
3781
+ "variant": "body",
3764
3782
  "name": "customerName"
3765
3783
  },
3766
3784
  {
3767
- "name": "scheduledAt",
3768
3785
  "label": "When",
3769
- "format": "date",
3770
- "variant": "body"
3771
- },
3772
- {
3773
- "name": "time",
3774
- "variant": "caption"
3775
- },
3776
- {
3777
- "variant": "badge",
3778
- "name": "status"
3779
- }
3780
- ],
3781
- "itemActions": [
3782
- {
3783
- "label": "View",
3784
- "event": "VIEW",
3785
- "variant": "ghost"
3786
+ "variant": "body",
3787
+ "name": "scheduledAt",
3788
+ "format": "date"
3786
3789
  },
3787
3790
  {
3788
- "label": "Edit",
3789
- "variant": "ghost",
3790
- "event": "EDIT"
3791
+ "variant": "caption",
3792
+ "name": "time"
3791
3793
  },
3792
3794
  {
3793
- "event": "DELETE",
3794
- "label": "Delete",
3795
- "variant": "danger"
3795
+ "name": "status",
3796
+ "variant": "badge"
3796
3797
  }
3797
- ],
3798
- "cols": 1.0
3798
+ ]
3799
3799
  },
3800
3800
  "listens": [
3801
3801
  {
@@ -4026,10 +4026,10 @@
4026
4026
  "modal",
4027
4027
  {
4028
4028
  "type": "stack",
4029
+ "gap": "md",
4030
+ "direction": "vertical",
4029
4031
  "children": [
4030
4032
  {
4031
- "gap": "sm",
4032
- "type": "stack",
4033
4033
  "children": [
4034
4034
  {
4035
4035
  "type": "icon",
@@ -4041,14 +4041,15 @@
4041
4041
  "variant": "h3"
4042
4042
  }
4043
4043
  ],
4044
+ "gap": "sm",
4045
+ "type": "stack",
4044
4046
  "direction": "horizontal"
4045
4047
  },
4046
4048
  {
4047
4049
  "type": "divider"
4048
4050
  },
4049
4051
  {
4050
- "cancelEvent": "CLOSE",
4051
- "type": "form-section",
4052
+ "mode": "create",
4052
4053
  "fields": [
4053
4054
  "providerName",
4054
4055
  "customerName",
@@ -4058,12 +4059,11 @@
4058
4059
  "status",
4059
4060
  "notes"
4060
4061
  ],
4061
- "mode": "create",
4062
- "submitEvent": "SAVE"
4062
+ "submitEvent": "SAVE",
4063
+ "type": "form-section",
4064
+ "cancelEvent": "CLOSE"
4063
4065
  }
4064
- ],
4065
- "direction": "vertical",
4066
- "gap": "md"
4066
+ ]
4067
4067
  }
4068
4068
  ]
4069
4069
  ]
@@ -4104,8 +4104,8 @@
4104
4104
  "@payload.data",
4105
4105
  {
4106
4106
  "emit": {
4107
- "success": "AppointmentSaved",
4108
- "failure": "AppointmentSaveFailed"
4107
+ "failure": "AppointmentSaveFailed",
4108
+ "success": "AppointmentSaved"
4109
4109
  }
4110
4110
  }
4111
4111
  ],
@@ -4315,8 +4315,8 @@
4315
4315
  "Appointment",
4316
4316
  {
4317
4317
  "emit": {
4318
- "failure": "AppointmentLoadFailed",
4319
- "success": "AppointmentLoaded"
4318
+ "success": "AppointmentLoaded",
4319
+ "failure": "AppointmentLoadFailed"
4320
4320
  }
4321
4321
  }
4322
4322
  ]
@@ -4331,23 +4331,25 @@
4331
4331
  "fetch",
4332
4332
  "Appointment",
4333
4333
  {
4334
+ "id": "@payload.id",
4334
4335
  "emit": {
4335
- "success": "AppointmentLoaded",
4336
- "failure": "AppointmentLoadFailed"
4337
- },
4338
- "id": "@payload.id"
4336
+ "failure": "AppointmentLoadFailed",
4337
+ "success": "AppointmentLoaded"
4338
+ }
4339
4339
  }
4340
4340
  ],
4341
4341
  [
4342
4342
  "render-ui",
4343
4343
  "modal",
4344
4344
  {
4345
+ "direction": "vertical",
4346
+ "type": "stack",
4345
4347
  "children": [
4346
4348
  {
4347
4349
  "children": [
4348
4350
  {
4349
- "name": "edit",
4350
- "type": "icon"
4351
+ "type": "icon",
4352
+ "name": "edit"
4351
4353
  },
4352
4354
  {
4353
4355
  "content": "Edit Appointment",
@@ -4355,16 +4357,18 @@
4355
4357
  "variant": "h3"
4356
4358
  }
4357
4359
  ],
4360
+ "type": "stack",
4358
4361
  "direction": "horizontal",
4359
- "gap": "sm",
4360
- "type": "stack"
4362
+ "gap": "sm"
4361
4363
  },
4362
4364
  {
4363
4365
  "type": "divider"
4364
4366
  },
4365
4367
  {
4366
- "submitEvent": "SAVE",
4367
4368
  "type": "form-section",
4369
+ "entity": "@payload.row",
4370
+ "mode": "edit",
4371
+ "submitEvent": "SAVE",
4368
4372
  "cancelEvent": "CLOSE",
4369
4373
  "fields": [
4370
4374
  "providerName",
@@ -4374,13 +4378,9 @@
4374
4378
  "time",
4375
4379
  "status",
4376
4380
  "notes"
4377
- ],
4378
- "entity": "@payload.row",
4379
- "mode": "edit"
4381
+ ]
4380
4382
  }
4381
4383
  ],
4382
- "direction": "vertical",
4383
- "type": "stack",
4384
4384
  "gap": "md"
4385
4385
  }
4386
4386
  ]
@@ -4422,8 +4422,8 @@
4422
4422
  "@payload.data",
4423
4423
  {
4424
4424
  "emit": {
4425
- "failure": "AppointmentUpdateFailed",
4426
- "success": "AppointmentUpdated"
4425
+ "success": "AppointmentUpdated",
4426
+ "failure": "AppointmentUpdateFailed"
4427
4427
  }
4428
4428
  }
4429
4429
  ],
@@ -4624,11 +4624,11 @@
4624
4624
  "fetch",
4625
4625
  "Appointment",
4626
4626
  {
4627
+ "id": "@payload.id",
4627
4628
  "emit": {
4628
- "success": "AppointmentLoaded",
4629
- "failure": "AppointmentLoadFailed"
4630
- },
4631
- "id": "@payload.id"
4629
+ "failure": "AppointmentLoadFailed",
4630
+ "success": "AppointmentLoaded"
4631
+ }
4632
4632
  }
4633
4633
  ],
4634
4634
  [
@@ -4637,85 +4637,85 @@
4637
4637
  {
4638
4638
  "children": [
4639
4639
  {
4640
- "align": "center",
4641
4640
  "children": [
4642
4641
  {
4643
- "name": "eye",
4644
- "type": "icon"
4642
+ "type": "icon",
4643
+ "name": "eye"
4645
4644
  },
4646
4645
  {
4647
- "content": "@entity.summary",
4648
4646
  "type": "typography",
4649
- "variant": "h3"
4647
+ "variant": "h3",
4648
+ "content": "@entity.summary"
4650
4649
  }
4651
4650
  ],
4651
+ "type": "stack",
4652
4652
  "direction": "horizontal",
4653
4653
  "gap": "sm",
4654
- "type": "stack"
4654
+ "align": "center"
4655
4655
  },
4656
4656
  {
4657
4657
  "type": "divider"
4658
4658
  },
4659
4659
  {
4660
- "type": "stack",
4661
4660
  "direction": "horizontal",
4662
- "gap": "md",
4661
+ "type": "stack",
4663
4662
  "children": [
4664
4663
  {
4665
- "type": "typography",
4666
4664
  "content": "Provider",
4665
+ "type": "typography",
4667
4666
  "variant": "caption"
4668
4667
  },
4669
4668
  {
4670
- "variant": "body",
4671
4669
  "content": "@entity.providerName",
4672
- "type": "typography"
4670
+ "type": "typography",
4671
+ "variant": "body"
4673
4672
  }
4674
- ]
4673
+ ],
4674
+ "gap": "md"
4675
4675
  },
4676
4676
  {
4677
4677
  "children": [
4678
4678
  {
4679
+ "content": "Customer",
4679
4680
  "variant": "caption",
4680
- "type": "typography",
4681
- "content": "Customer"
4681
+ "type": "typography"
4682
4682
  },
4683
4683
  {
4684
4684
  "type": "typography",
4685
- "content": "@entity.customerName",
4686
- "variant": "body"
4685
+ "variant": "body",
4686
+ "content": "@entity.customerName"
4687
4687
  }
4688
4688
  ],
4689
+ "type": "stack",
4689
4690
  "gap": "md",
4690
- "direction": "horizontal",
4691
- "type": "stack"
4691
+ "direction": "horizontal"
4692
4692
  },
4693
4693
  {
4694
+ "direction": "horizontal",
4694
4695
  "children": [
4695
4696
  {
4697
+ "type": "typography",
4696
4698
  "variant": "caption",
4697
- "content": "When",
4698
- "type": "typography"
4699
+ "content": "When"
4699
4700
  },
4700
4701
  {
4701
4702
  "variant": "body",
4702
- "type": "typography",
4703
- "content": "@entity.scheduledAt"
4703
+ "content": "@entity.scheduledAt",
4704
+ "type": "typography"
4704
4705
  }
4705
4706
  ],
4706
- "type": "stack",
4707
4707
  "gap": "md",
4708
- "direction": "horizontal"
4708
+ "type": "stack"
4709
4709
  },
4710
4710
  {
4711
+ "direction": "horizontal",
4711
4712
  "type": "stack",
4712
4713
  "gap": "md",
4713
- "direction": "horizontal",
4714
4714
  "children": [
4715
4715
  {
4716
- "type": "typography",
4717
4716
  "variant": "caption",
4718
- "content": "Time"
4717
+ "content": "Time",
4718
+ "type": "typography"
4719
4719
  },
4720
4720
  {
4721
4721
  "type": "typography",
@@ -4725,25 +4725,23 @@
4725
4725
  ]
4726
4726
  },
4727
4727
  {
4728
+ "direction": "horizontal",
4728
4729
  "type": "stack",
4729
4730
  "gap": "md",
4730
- "direction": "horizontal",
4731
4731
  "children": [
4732
4732
  {
4733
- "type": "typography",
4734
4733
  "variant": "caption",
4734
+ "type": "typography",
4735
4735
  "content": "Status"
4736
4736
  },
4737
4737
  {
4738
- "type": "typography",
4739
4738
  "variant": "body",
4739
+ "type": "typography",
4740
4740
  "content": "@entity.status"
4741
4741
  }
4742
4742
  ]
4743
4743
  },
4744
4744
  {
4745
- "gap": "md",
4746
- "direction": "horizontal",
4747
4745
  "type": "stack",
4748
4746
  "children": [
4749
4747
  {
@@ -4752,40 +4750,42 @@
4752
4750
  "content": "Notes"
4753
4751
  },
4754
4752
  {
4755
- "type": "typography",
4756
4753
  "variant": "body",
4754
+ "type": "typography",
4757
4755
  "content": "@entity.notes"
4758
4756
  }
4759
- ]
4757
+ ],
4758
+ "gap": "md",
4759
+ "direction": "horizontal"
4760
4760
  },
4761
4761
  {
4762
4762
  "type": "divider"
4763
4763
  },
4764
4764
  {
4765
+ "justify": "end",
4766
+ "type": "stack",
4765
4767
  "children": [
4766
4768
  {
4767
- "icon": "edit",
4768
- "label": "Edit",
4769
- "variant": "primary",
4769
+ "action": "EDIT",
4770
4770
  "type": "button",
4771
- "action": "EDIT"
4771
+ "variant": "primary",
4772
+ "icon": "edit",
4773
+ "label": "Edit"
4772
4774
  },
4773
4775
  {
4774
- "action": "CLOSE",
4775
4776
  "variant": "ghost",
4777
+ "action": "CLOSE",
4776
4778
  "type": "button",
4777
4779
  "label": "Close"
4778
4780
  }
4779
4781
  ],
4780
- "type": "stack",
4781
4782
  "direction": "horizontal",
4782
- "justify": "end",
4783
4783
  "gap": "sm"
4784
4784
  }
4785
4785
  ],
4786
+ "type": "stack",
4786
4787
  "direction": "vertical",
4787
- "gap": "md",
4788
- "type": "stack"
4788
+ "gap": "md"
4789
4789
  }
4790
4790
  ]
4791
4791
  ]
@@ -5028,17 +5028,20 @@
5028
5028
  "fetch",
5029
5029
  "Appointment",
5030
5030
  {
5031
- "id": "@payload.id",
5032
5031
  "emit": {
5033
5032
  "success": "AppointmentLoaded",
5034
5033
  "failure": "AppointmentLoadFailed"
5035
- }
5034
+ },
5035
+ "id": "@payload.id"
5036
5036
  }
5037
5037
  ],
5038
5038
  [
5039
5039
  "render-ui",
5040
5040
  "modal",
5041
5041
  {
5042
+ "type": "stack",
5043
+ "direction": "vertical",
5044
+ "gap": "md",
5042
5045
  "children": [
5043
5046
  {
5044
5047
  "children": [
@@ -5047,49 +5050,46 @@
5047
5050
  "name": "alert-triangle"
5048
5051
  },
5049
5052
  {
5053
+ "variant": "h3",
5050
5054
  "type": "typography",
5051
- "content": "Delete Appointment",
5052
- "variant": "h3"
5055
+ "content": "Delete Appointment"
5053
5056
  }
5054
5057
  ],
5055
- "gap": "sm",
5056
5058
  "align": "center",
5057
- "type": "stack",
5058
- "direction": "horizontal"
5059
+ "gap": "sm",
5060
+ "direction": "horizontal",
5061
+ "type": "stack"
5059
5062
  },
5060
5063
  {
5061
5064
  "type": "divider"
5062
5065
  },
5063
5066
  {
5064
- "message": "This action cannot be undone.",
5065
5067
  "type": "alert",
5068
+ "message": "This action cannot be undone.",
5066
5069
  "variant": "error"
5067
5070
  },
5068
5071
  {
5072
+ "justify": "end",
5073
+ "type": "stack",
5074
+ "direction": "horizontal",
5075
+ "gap": "sm",
5069
5076
  "children": [
5070
5077
  {
5071
5078
  "action": "CANCEL",
5072
- "variant": "ghost",
5079
+ "label": "Cancel",
5073
5080
  "type": "button",
5074
- "label": "Cancel"
5081
+ "variant": "ghost"
5075
5082
  },
5076
5083
  {
5077
- "variant": "danger",
5078
5084
  "action": "CONFIRM_DELETE",
5085
+ "label": "Delete",
5086
+ "variant": "danger",
5079
5087
  "type": "button",
5080
- "icon": "check",
5081
- "label": "Delete"
5088
+ "icon": "check"
5082
5089
  }
5083
- ],
5084
- "gap": "sm",
5085
- "type": "stack",
5086
- "direction": "horizontal",
5087
- "justify": "end"
5090
+ ]
5088
5091
  }
5089
- ],
5090
- "type": "stack",
5091
- "gap": "md",
5092
- "direction": "vertical"
5092
+ ]
5093
5093
  }
5094
5094
  ]
5095
5095
  ]
@@ -5280,32 +5280,32 @@
5280
5280
  "name": "ScheduleAppLayout",
5281
5281
  "linkedEntity": "Schedule",
5282
5282
  "config": {
5283
- "searchEvent": "SCHEDULE_SEARCH",
5283
+ "notificationClickEvent": "SCHEDULE_NOTIFICATIONS_OPEN",
5284
+ "notifications": [],
5284
5285
  "appName": "BookingSystemApp",
5286
+ "searchEvent": "SCHEDULE_SEARCH",
5285
5287
  "contentTrait": "@trait.ScheduleDisplay",
5286
5288
  "topBarActions": [],
5287
- "notifications": [],
5288
- "notificationClickEvent": "SCHEDULE_NOTIFICATIONS_OPEN",
5289
5289
  "navItems": [
5290
5290
  {
5291
5291
  "href": "/providers",
5292
- "icon": "user-check",
5293
- "label": "Providers"
5292
+ "label": "Providers",
5293
+ "icon": "user-check"
5294
5294
  },
5295
5295
  {
5296
- "label": "Book",
5296
+ "href": "/book",
5297
5297
  "icon": "calendar-plus",
5298
- "href": "/book"
5298
+ "label": "Book"
5299
5299
  },
5300
5300
  {
5301
- "icon": "calendar",
5302
5301
  "href": "/appointments",
5302
+ "icon": "calendar",
5303
5303
  "label": "Appointments"
5304
5304
  },
5305
5305
  {
5306
5306
  "label": "Schedule",
5307
- "href": "/schedule",
5308
- "icon": "clock"
5307
+ "icon": "clock",
5308
+ "href": "/schedule"
5309
5309
  }
5310
5310
  ]
5311
5311
  },
@@ -5435,8 +5435,8 @@
5435
5435
  "Schedule",
5436
5436
  {
5437
5437
  "emit": {
5438
- "success": "ScheduleLoaded",
5439
- "failure": "ScheduleLoadFailed"
5438
+ "failure": "ScheduleLoadFailed",
5439
+ "success": "ScheduleLoaded"
5440
5440
  }
5441
5441
  }
5442
5442
  ],
@@ -5445,72 +5445,74 @@
5445
5445
  "main",
5446
5446
  {
5447
5447
  "type": "stack",
5448
+ "gap": "lg",
5449
+ "direction": "vertical",
5448
5450
  "children": [
5449
5451
  {
5450
- "align": "center",
5451
- "direction": "horizontal",
5452
+ "justify": "between",
5453
+ "type": "stack",
5452
5454
  "gap": "md",
5455
+ "direction": "horizontal",
5456
+ "align": "center",
5453
5457
  "children": [
5454
5458
  {
5459
+ "type": "stack",
5455
5460
  "align": "center",
5456
5461
  "direction": "horizontal",
5462
+ "gap": "sm",
5457
5463
  "children": [
5458
5464
  {
5459
- "name": "clock",
5460
- "type": "icon"
5465
+ "type": "icon",
5466
+ "name": "clock"
5461
5467
  },
5462
5468
  {
5463
5469
  "variant": "h2",
5464
5470
  "type": "typography",
5465
5471
  "content": "Schedule Overview"
5466
5472
  }
5467
- ],
5468
- "gap": "sm",
5469
- "type": "stack"
5473
+ ]
5470
5474
  },
5471
5475
  {
5472
- "action": "REFRESH",
5473
- "type": "button",
5474
5476
  "label": "Refresh",
5477
+ "variant": "secondary",
5475
5478
  "icon": "refresh-cw",
5476
- "variant": "secondary"
5479
+ "type": "button",
5480
+ "action": "REFRESH"
5477
5481
  }
5478
- ],
5479
- "type": "stack",
5480
- "justify": "between"
5482
+ ]
5481
5483
  },
5482
5484
  {
5483
5485
  "type": "divider"
5484
5486
  },
5485
5487
  {
5486
5488
  "cols": 4.0,
5489
+ "type": "simple-grid",
5487
5490
  "children": [
5488
5491
  {
5489
- "icon": "calendar",
5492
+ "type": "stat-display",
5490
5493
  "label": "Total Bookings",
5491
- "value": "@entity.totalBookings",
5492
- "type": "stat-display"
5494
+ "icon": "calendar",
5495
+ "value": "@entity.totalBookings"
5493
5496
  },
5494
5497
  {
5495
5498
  "value": "@entity.confirmedToday",
5496
- "icon": "check-circle",
5499
+ "type": "stat-display",
5497
5500
  "label": "Confirmed Today",
5498
- "type": "stat-display"
5501
+ "icon": "check-circle"
5499
5502
  },
5500
5503
  {
5504
+ "icon": "clock",
5501
5505
  "label": "Pending",
5502
5506
  "value": "@entity.pendingBookings",
5503
- "icon": "clock",
5504
5507
  "type": "stat-display"
5505
5508
  },
5506
5509
  {
5507
- "value": "@entity.availableSlots",
5510
+ "type": "stat-display",
5508
5511
  "label": "Available Slots",
5509
- "icon": "calendar-plus",
5510
- "type": "stat-display"
5512
+ "value": "@entity.availableSlots",
5513
+ "icon": "calendar-plus"
5511
5514
  }
5512
- ],
5513
- "type": "simple-grid"
5515
+ ]
5514
5516
  },
5515
5517
  {
5516
5518
  "type": "divider"
@@ -5518,9 +5520,7 @@
5518
5520
  {
5519
5521
  "type": "calendar-grid"
5520
5522
  }
5521
- ],
5522
- "direction": "vertical",
5523
- "gap": "lg"
5523
+ ]
5524
5524
  }
5525
5525
  ]
5526
5526
  ]
@@ -5535,8 +5535,8 @@
5535
5535
  "Schedule",
5536
5536
  {
5537
5537
  "emit": {
5538
- "failure": "ScheduleLoadFailed",
5539
- "success": "ScheduleLoaded"
5538
+ "success": "ScheduleLoaded",
5539
+ "failure": "ScheduleLoadFailed"
5540
5540
  }
5541
5541
  }
5542
5542
  ],
@@ -5544,20 +5544,20 @@
5544
5544
  "render-ui",
5545
5545
  "main",
5546
5546
  {
5547
- "type": "stack",
5548
5547
  "direction": "vertical",
5549
- "gap": "md",
5550
5548
  "align": "center",
5549
+ "type": "stack",
5551
5550
  "className": "py-12",
5551
+ "gap": "md",
5552
5552
  "children": [
5553
5553
  {
5554
5554
  "type": "spinner"
5555
5555
  },
5556
5556
  {
5557
- "color": "muted",
5558
- "content": "Refreshing…",
5559
5557
  "variant": "caption",
5560
- "type": "typography"
5558
+ "type": "typography",
5559
+ "content": "Refreshing…",
5560
+ "color": "muted"
5561
5561
  }
5562
5562
  ]
5563
5563
  }
@@ -5575,13 +5575,16 @@
5575
5575
  {
5576
5576
  "children": [
5577
5577
  {
5578
- "align": "center",
5578
+ "type": "stack",
5579
5579
  "justify": "between",
5580
+ "align": "center",
5581
+ "direction": "horizontal",
5582
+ "gap": "md",
5580
5583
  "children": [
5581
5584
  {
5582
5585
  "gap": "sm",
5583
- "direction": "horizontal",
5584
5586
  "type": "stack",
5587
+ "direction": "horizontal",
5585
5588
  "align": "center",
5586
5589
  "children": [
5587
5590
  {
@@ -5589,56 +5592,53 @@
5589
5592
  "name": "clock"
5590
5593
  },
5591
5594
  {
5595
+ "type": "typography",
5592
5596
  "variant": "h2",
5593
- "content": "Schedule Overview",
5594
- "type": "typography"
5597
+ "content": "Schedule Overview"
5595
5598
  }
5596
5599
  ]
5597
5600
  },
5598
5601
  {
5599
- "icon": "refresh-cw",
5600
- "type": "button",
5601
5602
  "label": "Refresh",
5603
+ "variant": "secondary",
5604
+ "icon": "refresh-cw",
5602
5605
  "action": "REFRESH",
5603
- "variant": "secondary"
5606
+ "type": "button"
5604
5607
  }
5605
- ],
5606
- "type": "stack",
5607
- "direction": "horizontal",
5608
- "gap": "md"
5608
+ ]
5609
5609
  },
5610
5610
  {
5611
5611
  "type": "divider"
5612
5612
  },
5613
5613
  {
5614
+ "type": "simple-grid",
5615
+ "cols": 4.0,
5614
5616
  "children": [
5615
5617
  {
5616
5618
  "value": "@entity.totalBookings",
5617
- "icon": "calendar",
5618
5619
  "label": "Total Bookings",
5619
- "type": "stat-display"
5620
+ "type": "stat-display",
5621
+ "icon": "calendar"
5620
5622
  },
5621
5623
  {
5622
- "value": "@entity.confirmedToday",
5623
5624
  "icon": "check-circle",
5624
5625
  "label": "Confirmed Today",
5625
- "type": "stat-display"
5626
+ "type": "stat-display",
5627
+ "value": "@entity.confirmedToday"
5626
5628
  },
5627
5629
  {
5628
- "label": "Pending",
5630
+ "value": "@entity.pendingBookings",
5629
5631
  "icon": "clock",
5630
5632
  "type": "stat-display",
5631
- "value": "@entity.pendingBookings"
5633
+ "label": "Pending"
5632
5634
  },
5633
5635
  {
5634
- "icon": "calendar-plus",
5635
- "type": "stat-display",
5636
5636
  "value": "@entity.availableSlots",
5637
+ "type": "stat-display",
5638
+ "icon": "calendar-plus",
5637
5639
  "label": "Available Slots"
5638
5640
  }
5639
- ],
5640
- "cols": 4.0,
5641
- "type": "simple-grid"
5641
+ ]
5642
5642
  },
5643
5643
  {
5644
5644
  "type": "divider"
@@ -5647,9 +5647,9 @@
5647
5647
  "type": "calendar-grid"
5648
5648
  }
5649
5649
  ],
5650
- "type": "stack",
5651
5650
  "direction": "vertical",
5652
- "gap": "lg"
5651
+ "gap": "lg",
5652
+ "type": "stack"
5653
5653
  }
5654
5654
  ]
5655
5655
  ]
@@ -5663,73 +5663,72 @@
5663
5663
  "render-ui",
5664
5664
  "main",
5665
5665
  {
5666
- "type": "stack",
5667
5666
  "gap": "lg",
5668
5667
  "children": [
5669
5668
  {
5670
- "gap": "md",
5671
- "justify": "between",
5672
5669
  "direction": "horizontal",
5670
+ "align": "center",
5671
+ "justify": "between",
5673
5672
  "children": [
5674
5673
  {
5675
5674
  "align": "center",
5675
+ "direction": "horizontal",
5676
5676
  "gap": "sm",
5677
5677
  "type": "stack",
5678
- "direction": "horizontal",
5679
5678
  "children": [
5680
5679
  {
5681
- "name": "clock",
5682
- "type": "icon"
5680
+ "type": "icon",
5681
+ "name": "clock"
5683
5682
  },
5684
5683
  {
5685
- "content": "Schedule Overview",
5686
5684
  "variant": "h2",
5687
- "type": "typography"
5685
+ "type": "typography",
5686
+ "content": "Schedule Overview"
5688
5687
  }
5689
5688
  ]
5690
5689
  },
5691
5690
  {
5692
- "label": "Refresh",
5693
- "type": "button",
5694
- "action": "REFRESH",
5691
+ "variant": "secondary",
5695
5692
  "icon": "refresh-cw",
5696
- "variant": "secondary"
5693
+ "action": "REFRESH",
5694
+ "type": "button",
5695
+ "label": "Refresh"
5697
5696
  }
5698
5697
  ],
5699
- "align": "center",
5700
- "type": "stack"
5698
+ "type": "stack",
5699
+ "gap": "md"
5701
5700
  },
5702
5701
  {
5703
5702
  "type": "divider"
5704
5703
  },
5705
5704
  {
5705
+ "type": "simple-grid",
5706
5706
  "children": [
5707
5707
  {
5708
5708
  "value": "@entity.totalBookings",
5709
- "type": "stat-display",
5710
5709
  "label": "Total Bookings",
5711
- "icon": "calendar"
5710
+ "icon": "calendar",
5711
+ "type": "stat-display"
5712
5712
  },
5713
5713
  {
5714
5714
  "type": "stat-display",
5715
- "label": "Confirmed Today",
5715
+ "icon": "check-circle",
5716
5716
  "value": "@entity.confirmedToday",
5717
- "icon": "check-circle"
5717
+ "label": "Confirmed Today"
5718
5718
  },
5719
5719
  {
5720
5720
  "icon": "clock",
5721
- "label": "Pending",
5722
5721
  "type": "stat-display",
5723
- "value": "@entity.pendingBookings"
5722
+ "value": "@entity.pendingBookings",
5723
+ "label": "Pending"
5724
5724
  },
5725
5725
  {
5726
- "icon": "calendar-plus",
5727
- "value": "@entity.availableSlots",
5726
+ "type": "stat-display",
5728
5727
  "label": "Available Slots",
5729
- "type": "stat-display"
5728
+ "icon": "calendar-plus",
5729
+ "value": "@entity.availableSlots"
5730
5730
  }
5731
5731
  ],
5732
- "type": "simple-grid",
5733
5732
  "cols": 4.0
5734
5733
  },
5735
5734
  {
@@ -5739,6 +5738,7 @@
5739
5738
  "type": "calendar-grid"
5740
5739
  }
5741
5740
  ],
5741
+ "type": "stack",
5742
5742
  "direction": "vertical"
5743
5743
  }
5744
5744
  ]
@@ -5753,36 +5753,36 @@
5753
5753
  "render-ui",
5754
5754
  "main",
5755
5755
  {
5756
- "className": "py-12",
5757
- "align": "center",
5758
5756
  "type": "stack",
5757
+ "align": "center",
5758
+ "className": "py-12",
5759
+ "gap": "md",
5760
+ "direction": "vertical",
5759
5761
  "children": [
5760
5762
  {
5763
+ "type": "icon",
5761
5764
  "name": "alert-triangle",
5762
- "color": "destructive",
5763
- "type": "icon"
5765
+ "color": "destructive"
5764
5766
  },
5765
5767
  {
5766
- "type": "typography",
5767
5768
  "variant": "h3",
5769
+ "type": "typography",
5768
5770
  "content": "Failed to refresh schedule"
5769
5771
  },
5770
5772
  {
5771
- "color": "muted",
5772
- "variant": "body",
5773
5773
  "type": "typography",
5774
- "content": "@payload.error"
5774
+ "color": "muted",
5775
+ "content": "@payload.error",
5776
+ "variant": "body"
5775
5777
  },
5776
5778
  {
5779
+ "icon": "rotate-ccw",
5777
5780
  "label": "Retry",
5778
5781
  "variant": "primary",
5779
5782
  "action": "REFRESH",
5780
- "type": "button",
5781
- "icon": "rotate-ccw"
5783
+ "type": "button"
5782
5784
  }
5783
- ],
5784
- "direction": "vertical",
5785
- "gap": "md"
5785
+ ]
5786
5786
  }
5787
5787
  ]
5788
5788
  ]
@@ -5808,4 +5808,4 @@
5808
5808
  ]
5809
5809
  }
5810
5810
  ]
5811
- }
5811
+ }